API-CHANGE Update docs to match renaming of sapphire to framework

This commit is contained in:
Simon Welsh 2012-03-25 10:16:59 +13:00 committed by Sean Harvey
parent 3a6341a251
commit 656369008c
36 changed files with 142 additions and 141 deletions

View File

@ -7,7 +7,8 @@
* "Page Content" and "Page Settings" are split into two interfaces * "Page Content" and "Page Settings" are split into two interfaces
* Image/Link insertion moved into a modal dialog instead of a sidebar * Image/Link insertion moved into a modal dialog instead of a sidebar
* "Add pages" dropdown moved to a more descriptive modal dialog * "Add pages" dropdown moved to a more descriptive modal dialog
* Allow usage of "sapphire" framework without the "cms" module * Renaming of sapphire to SilverStripe framework
* Allow usage of SilverStripe framework without the "cms" module
* CMS JavaScript moved to [jQuery.entwine](https://github.com/hafriedlander/jquery.entwine) * CMS JavaScript moved to [jQuery.entwine](https://github.com/hafriedlander/jquery.entwine)
* CMS stylesheets are generated by SCSS to provide more flexible and robust styling * CMS stylesheets are generated by SCSS to provide more flexible and robust styling
@ -207,7 +208,7 @@ If you have customized the admin interface in any way, please review
the detailed changelog for this release. Many interface components have changed completely, the detailed changelog for this release. Many interface components have changed completely,
unfortunately there is no clear upgrade path for every interface detail. unfortunately there is no clear upgrade path for every interface detail.
As a starting point, have a look at the new templates in `cms/templates` As a starting point, have a look at the new templates in `cms/templates`
and `sapphire/admin/templates`, as well as the new [jQuery.entwine](https://github.com/hafriedlander/jquery.entwine) and `framework/admin/templates`, as well as the new [jQuery.entwine](https://github.com/hafriedlander/jquery.entwine)
based JavaScript logic. Have a look at the new ["Extending the CMS" guide](../howto/extending-the-cms), based JavaScript logic. Have a look at the new ["Extending the CMS" guide](../howto/extending-the-cms),
["CSS" guide](../topics/css), ["JavaScript" guide](../topics/javascript) and ["CSS" guide](../topics/css), ["JavaScript" guide](../topics/javascript) and
["CMS Architecture" guide](/reference/cms-architecture) to get you started. ["CMS Architecture" guide](/reference/cms-architecture) to get you started.
@ -250,7 +251,7 @@ on details for how to achieve the same goals in the new class.
### Stylesheet preprocessing via SCSS and the "compass" module ### ### Stylesheet preprocessing via SCSS and the "compass" module ###
CSS files in the `cms` and `sapphire/admin` modules are now generated through CSS files in the `cms` and `framework/admin` modules are now generated through
the ["compass" SilverStripe module](http://silverstripe.org/compass-module), which uses the ["compass" SilverStripe module](http://silverstripe.org/compass-module), which uses
the ["Compass" framework](http://compass-style.org/) and the ["SCSS" language](http://sass-lang.com/). the ["Compass" framework](http://compass-style.org/) and the ["SCSS" language](http://sass-lang.com/).
This allows us to build more flexible and expressive stylesheets as a foundation for any This allows us to build more flexible and expressive stylesheets as a foundation for any
@ -300,14 +301,14 @@ Please use the appropriate setters on the form field instance instead.
### Restructured files and folders ### ### Restructured files and folders ###
In order to make the `sapphire` framework useable without the `cms` module, In order to make the SilverStripe framework useable without the `cms` module,
we've moved some files around. we've moved some files around.
CMS base functionality which is not directly related to content pages (`SiteTree`) CMS base functionality which is not directly related to content pages (`SiteTree`)
has been moved from the `cms` module into a new "sub-module" located in `sapphire/admin`. has been moved from the `cms` module into a new "sub-module" located in `framework/admin`.
This includes generic management interfaces like "Files & Images" (`AssetAdmin`), This includes generic management interfaces like "Files & Images" (`AssetAdmin`),
"Security" (`SecurityAdmin`) and the `ModelAdmin` class. "Security" (`SecurityAdmin`) and the `ModelAdmin` class.
On the other hand, `SiteTree` related features were moved from `sapphire` to the `cms` module. On the other hand, `SiteTree` related features were moved from `framework` to the `cms` module.
Due to the built-in PHP class autoloader, Due to the built-in PHP class autoloader,
this usually won't have any effect on your own code (unless you're including direct file paths). this usually won't have any effect on your own code (unless you're including direct file paths).
@ -382,7 +383,7 @@ There is a new deprecation API that generates deprecation notices. Calls to Dep
will only produce errors if the API was deprecated in the release equal to or earlier than the will only produce errors if the API was deprecated in the release equal to or earlier than the
"notification version". "notification version".
`sapphire/_config.php` currently contains a call to throw notices calls to all methods deprecated `framework/_config.php` currently contains a call to throw notices calls to all methods deprecated
in 3.0. in 3.0.
Deprecation::notification_version('3.0.0'); Deprecation::notification_version('3.0.0');

View File

@ -17,7 +17,7 @@ First of all, create a new folder structure in your SilverStripe webroot, which
form our module for this example. form our module for this example.
cms/ cms/
sapphire/ framework/
zzz_admin/ zzz_admin/
_config.php _config.php
code/ code/
@ -34,7 +34,7 @@ the common `Page` object (a new PHP class `MyPage` will look for a `MyPage.ss` t
We can use this to create a different base template with `LeftAndMain.ss` We can use this to create a different base template with `LeftAndMain.ss`
(which corresponds to the `LeftAndMain` PHP controller class). (which corresponds to the `LeftAndMain` PHP controller class).
Copy the template markup of the base implementation at `sapphire/admin/templates/LeftAndMain.ss` into `zzz_admin/admin/templates/LeftAndMain.ss`. It will automatically be picked up by the CMS logic. Add a new section after the `$Content` tag: Copy the template markup of the base implementation at `framework/admin/templates/LeftAndMain.ss` into `zzz_admin/admin/templates/LeftAndMain.ss`. It will automatically be picked up by the CMS logic. Add a new section after the `$Content` tag:
:::ss :::ss
... ...
@ -144,4 +144,4 @@ blocks and concepts for more complex extensions as well.
## Related ## Related
* [CMS Architecture](../reference/cms-architecture) * [CMS Architecture](../reference/cms-architecture)
* [Topics: Rich Text Editing](../topics/rich-text-editing) * [Topics: Rich Text Editing](../topics/rich-text-editing)

View File

@ -25,10 +25,10 @@ All command-line arguments are documented on [phpunit.de](http://www.phpunit.de/
## Usage of "phpunit" executable ## Usage of "phpunit" executable
* `phpunit`: Runs all tests in all folders * `phpunit`: Runs all tests in all folders
* `phpunit sapphire/tests/`: Run all tests of the sapphire module * `phpunit framework/tests/`: Run all tests of the framework module
* `phpunit sapphire/tests/filesystem`: Run all filesystem tests within the sapphire module * `phpunit framework/tests/filesystem`: Run all filesystem tests within the framework module
* `phpunit sapphire/tests/filesystem/FolderTest.php`: Run a single test * `phpunit framework/tests/filesystem/FolderTest.php`: Run a single test
* `phpunit sapphire/tests '' flush=all`: Run tests with optional `$_GET` parameters (you need an empty second argument) * `phpunit framework/tests '' flush=all`: Run tests with optional `$_GET` parameters (you need an empty second argument)
## Coverage reports ## Coverage reports
@ -61,7 +61,7 @@ for unit and functional tests.
Example `phpunit-unittests-only.xml`: Example `phpunit-unittests-only.xml`:
<phpunit bootstrap="/sapphire/tests/bootstrap.php" colors="true"> <phpunit bootstrap="framework/tests/bootstrap.php" colors="true">
<testsuites> <testsuites>
<testsuite> <testsuite>
<directory>mysite/tests/unit</directory> <directory>mysite/tests/unit</directory>
@ -83,8 +83,8 @@ This applies for all thirdparty code
<filter> <filter>
<blacklist> <blacklist>
<directory suffix=".php">sapphire/dev/</directory> <directory suffix=".php">framework/dev/</directory>
<directory suffix=".php">sapphire/thirdparty/</directory> <directory suffix=".php">framework/thirdparty/</directory>
<directory suffix=".php">cms/thirdparty/</directory> <directory suffix=".php">cms/thirdparty/</directory>
<!-- Add your custom rules here --> <!-- Add your custom rules here -->
@ -101,7 +101,7 @@ particularly if you have a lot of database write operations.
This is a problem when you're trying to to "[Test Driven Development](http://en.wikipedia.org/wiki/Test-driven_development)". This is a problem when you're trying to to "[Test Driven Development](http://en.wikipedia.org/wiki/Test-driven_development)".
To speed things up a bit, you can simply use a faster database just for executing tests. To speed things up a bit, you can simply use a faster database just for executing tests.
The sapphire database layer makes this relatively easy, most likely The SilverStripe database layer makes this relatively easy, most likely
you won't need to adjust any project code or alter SQL statements. you won't need to adjust any project code or alter SQL statements.
The [SQLite3 module](http://www.silverstripe.org/sqlite-database/) provides an interface The [SQLite3 module](http://www.silverstripe.org/sqlite-database/) provides an interface
@ -122,7 +122,7 @@ Example `mysite/_config.php`:
You can either use the database on a single invocation: You can either use the database on a single invocation:
phpunit sapphire/tests "" db=sqlite3 phpunit framework/tests "" db=sqlite3
or through a `<php>` flag in your `phpunit.xml` (see [Appenix C: "Setting PHP INI settings"](http://www.phpunit.de/manual/current/en/appendixes.configuration.html)): or through a `<php>` flag in your `phpunit.xml` (see [Appenix C: "Setting PHP INI settings"](http://www.phpunit.de/manual/current/en/appendixes.configuration.html)):
@ -136,4 +136,4 @@ or through a `<php>` flag in your `phpunit.xml` (see [Appenix C: "Setting PHP IN
<div class="hint" markdown="1"> <div class="hint" markdown="1">
It is recommended that you still run your tests with the original database driver (at least on continuous integration) It is recommended that you still run your tests with the original database driver (at least on continuous integration)
to ensure a realistic test scenario. to ensure a realistic test scenario.
</div> </div>

View File

@ -24,7 +24,7 @@ See [frequently asked questions](/installation/from-source#frequently-asked-ques
SilverStripe core is currently hosted on [github.com/silverstripe](http://github.com/silverstripe). The core consists of four parts: SilverStripe core is currently hosted on [github.com/silverstripe](http://github.com/silverstripe). The core consists of four parts:
* The `installer` project ([github.com/silverstripe/silverstripe-installer](http://github.com/silverstripe/silverstripe-installer)) * The `installer` project ([github.com/silverstripe/silverstripe-installer](http://github.com/silverstripe/silverstripe-installer))
* The `sapphire` module ([github.com/silverstripe/sapphire](http://github.com/silverstripe/sapphire)) * The `framework` module ([github.com/silverstripe/sapphire](http://github.com/silverstripe/sapphire))
* The `cms` module ([github.com/silverstripe/silverstripe-cms](http://github.com/silverstripe/silverstripe-cms)) * The `cms` module ([github.com/silverstripe/silverstripe-cms](http://github.com/silverstripe/silverstripe-cms))
* A sample theme called `simple` ([github.com/silverstripe-themes/silverstripe-simple](http://github.com/silverstripe-themes/silverstripe-simple)) * A sample theme called `simple` ([github.com/silverstripe-themes/silverstripe-simple](http://github.com/silverstripe-themes/silverstripe-simple))
@ -72,7 +72,7 @@ Run the following command to download all core dependencies via [Piston](http://
cd my-silverstripe-project/ cd my-silverstripe-project/
tools/new-project tools/new-project
This will add `sapphire`, `cms` and the `simple` theme to your project. This will add `framework`, `cms` and the `simple` theme to your project.
As a fallback solution, you can simply download all necessary files without any dependency management through piston. As a fallback solution, you can simply download all necessary files without any dependency management through piston.
This is handy if you have an existing project in version control, and want a one-off snapshot This is handy if you have an existing project in version control, and want a one-off snapshot
@ -144,7 +144,7 @@ Please replace `<username>` below with your github username.
git clone git@github.com:<username>/silverstripe-installer.git my-silverstripe-project git clone git@github.com:<username>/silverstripe-installer.git my-silverstripe-project
cd my-silverstripe-project cd my-silverstripe-project
git clone git@github.com:<username>/sapphire.git sapphire git clone git@github.com:<username>/sapphire.git framework
git clone git@github.com:<username>/silverstripe-cms.git cms git clone git@github.com:<username>/silverstripe-cms.git cms
git clone git@github.com:<username>/silverstripe-simple.git themes/simple git clone git@github.com:<username>/silverstripe-simple.git themes/simple
@ -152,7 +152,7 @@ Now you need to add the original repository as `upstream`, so you can keep your
cd my-silverstripe-project cd my-silverstripe-project
(git remote add upstream git://github.com/silverstripe/silverstripe-installer.git && git fetch upstream) (git remote add upstream git://github.com/silverstripe/silverstripe-installer.git && git fetch upstream)
(cd sapphire && git remote add upstream git://github.com/silverstripe/sapphire.git && git fetch upstream) (cd framework && git remote add upstream git://github.com/silverstripe/sapphire.git && git fetch upstream)
(cd cms && git remote add upstream git://github.com/silverstripe/silverstripe-cms.git && git fetch upstream) (cd cms && git remote add upstream git://github.com/silverstripe/silverstripe-cms.git && git fetch upstream)
(cd themes/simple && git remote add upstream git://github.com/silverstripe-themes/silverstripe-simple.git) (cd themes/simple && git remote add upstream git://github.com/silverstripe-themes/silverstripe-simple.git)
@ -172,7 +172,7 @@ You can optionally select a ["release branch"](https://github.com/silverstripe/s
cd my-silverstripe-project cd my-silverstripe-project
git checkout -b 2.4 origin/2.4 git checkout -b 2.4 origin/2.4
(cd sapphire && git checkout -b 2.4 origin/2.4) (cd framework && git checkout -b 2.4 origin/2.4)
(cd cms && git checkout -b 2.4 origin/2.4) (cd cms && git checkout -b 2.4 origin/2.4)
(cd themes/simple && git checkout -b 2.4 origin/2.4) (cd themes/simple && git checkout -b 2.4 origin/2.4)
# repeat for all modules in your project... # repeat for all modules in your project...
@ -181,7 +181,7 @@ After creating the local branch, you can simply switch between branches:
cd my-silverstripe-project cd my-silverstripe-project
git checkout 2.4 git checkout 2.4
(cd sapphire && git checkout 2.4) (cd framework && git checkout 2.4)
(cd cms && git checkout 2.4) (cd cms && git checkout 2.4)
(cd themes/simple && git checkout 2.4) (cd themes/simple && git checkout 2.4)
# repeat for all modules in your project... # repeat for all modules in your project...
@ -190,7 +190,7 @@ To switch back to master:
cd my-silverstripe-project cd my-silverstripe-project
git checkout master git checkout master
(cd sapphire && git checkout master) (cd framework && git checkout master)
(cd cms && git checkout master) (cd cms && git checkout master)
(cd themes/simple && git checkout master) (cd themes/simple && git checkout master)
# repeat for all modules in your project... # repeat for all modules in your project...
@ -223,19 +223,19 @@ If you have copied the installer files into a new project, we recommend to repea
In case you chose the "Installation for contributions" option, all modules in your project In case you chose the "Installation for contributions" option, all modules in your project
will be standard git repositories, and you can update them as usual. will be standard git repositories, and you can update them as usual.
cd my-silverstripe-project/sapphire cd my-silverstripe-project/framework
git pull git pull
### Updating modules via piston or download ### ### Updating modules via piston or download ###
For the "Installation for a new project" option, modules like `sapphire` or `cms` For the "Installation for a new project" option, modules like `framework` or `cms`
are added as plain files without a direct link to their originating repository. are added as plain files without a direct link to their originating repository.
If these plain files are managed by piston, the update process is simple: If these plain files are managed by piston, the update process is simple:
cd my-silverstripe-project cd my-silverstripe-project
piston update sapphire piston update framework
# Use "svn" instead of "git" for subversion repositories # Use "svn" instead of "git" for subversion repositories
git add sapphire/* git add framework/*
git commit -m "udpated dependencies" git commit -m "udpated dependencies"
For file downloads without piston, you can simply download the source code again and replace it. For file downloads without piston, you can simply download the source code again and replace it.
@ -283,4 +283,4 @@ See [piston.rubyforge.org](http://piston.rubyforge.org/import.html).
* [Collaboration on Git](/misc/collaboration-on-git) * [Collaboration on Git](/misc/collaboration-on-git)
* [Pro git - free online book](http://progit.org/book/) * [Pro git - free online book](http://progit.org/book/)
* [Git cheat sheet - github.com](https://github.com/guides/git-cheat-sheet) * [Git cheat sheet - github.com](https://github.com/guides/git-cheat-sheet)
* [Git - SVN Crash Course - git.or.cz](http://git.or.cz/course/svn.html) * [Git - SVN Crash Course - git.or.cz](http://git.or.cz/course/svn.html)

View File

@ -14,8 +14,8 @@ Silverstripe. Replace "yoursite.com" and "/home/yoursite/public_html/" below.
url.access-deny += ( ".ss" ) url.access-deny += ( ".ss" )
static-file.exclude-extensions += ( ".ss" ) static-file.exclude-extensions += ( ".ss" )
# Deny access to Sapphire command-line interface # Deny access to SilverStripe command-line interface
$HTTP["url"] =~ "^/sapphire/cli-script.php" { $HTTP["url"] =~ "^/framework/cli-script.php" {
url.access-deny = ( "" ) url.access-deny = ( "" )
} }
@ -27,11 +27,11 @@ Silverstripe. Replace "yoursite.com" and "/home/yoursite/public_html/" below.
# Rewrite URLs so they are nicer # Rewrite URLs so they are nicer
url.rewrite-once = ( url.rewrite-once = (
"^/.*\.[A-Za-z0-9]+.*?$" => "$0", "^/.*\.[A-Za-z0-9]+.*?$" => "$0",
"^/(.*?)(\?|$)(.*)" => "/sapphire/main.php?url=$1&$3" "^/(.*?)(\?|$)(.*)" => "/framework/main.php?url=$1&$3"
) )
# Show SilverStripe error page # Show SilverStripe error page
server.error-handler-404 = "/sapphire/main.php" server.error-handler-404 = "/framework/main.php"
} }
@ -53,14 +53,14 @@ of Silverstripe on the same host, you can use something like this (be warned, it
url.rewrite-once = ( url.rewrite-once = (
"(?i)(/copy1/.*\.([A-Za-z0-9]+))(.*?)$" => "$0", "(?i)(/copy1/.*\.([A-Za-z0-9]+))(.*?)$" => "$0",
"(?i)(/copy2/.*\.([A-Za-z0-9]+))(.*?)$" => "$0", "(?i)(/copy2/.*\.([A-Za-z0-9]+))(.*?)$" => "$0",
"^/copy1/(.*?)(\?|$)(.*)" => "/copy1/sapphire/main.php?url=$1&$3", "^/copy1/(.*?)(\?|$)(.*)" => "/copy1/framework/main.php?url=$1&$3",
"^/copy2/(.*?)(\?|$)(.*)" => "/copy2/sapphire/main.php?url=$1&$3" "^/copy2/(.*?)(\?|$)(.*)" => "/copy2/framework/main.php?url=$1&$3"
) )
$HTTP["url"] =~ "^/copy1/" { $HTTP["url"] =~ "^/copy1/" {
server.error-handler-404 = "/copy1/sapphire/main.php" server.error-handler-404 = "/copy1/framework/main.php"
} }
$HTTP["url"] =~ "^/copy2/" { $HTTP["url"] =~ "^/copy2/" {
server.error-handler-404 = "/copy2/sapphire/main.php" server.error-handler-404 = "/copy2/framework/main.php"
} }
} }

View File

@ -15,10 +15,10 @@ Now you need to setup a virtual host in Nginx with the following configuration s
index index.html index.php; index index.html index.php;
if (!-f $request_filename) { if (!-f $request_filename) {
rewrite ^/(.*?)(\?|$)(.*)$ /sapphire/main.php?url=$1&$3 last; rewrite ^/(.*?)(\?|$)(.*)$ /framework/main.php?url=$1&$3 last;
} }
error_page 404 /sapphire/main.php; error_page 404 /framework/main.php;
location ~ \.php$ { location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000; fastcgi_pass 127.0.0.1:9000;

View File

@ -12,7 +12,7 @@ Never update a website on the live server without trying it on a development cop
* Backup your website * Backup your website
* Download the new release and uncompress it to a temporary folder * Download the new release and uncompress it to a temporary folder
* Leave custom folders like *mysite* or *themes* in place. * Leave custom folders like *mysite* or *themes* in place.
* Identify system folders in your webroot (`cms`, `sapphire` and any additional modules). * Identify system folders in your webroot (`cms`, `framework` and any additional modules).
* Delete existing system folders (or move them outside of your webroot) * Delete existing system folders (or move them outside of your webroot)
* Extract and replace system folders from your download (Deleting instead of "copying over" existing folders * Extract and replace system folders from your download (Deleting instead of "copying over" existing folders
ensures that files removed from the new SilverStripe release are not persisting in your installation) ensures that files removed from the new SilverStripe release are not persisting in your installation)
@ -37,4 +37,4 @@ upgrade than customisations that use sneaky tricks, such as the subsites module.
## Related ## Related
* [Release Announcements](http://groups.google.com/group/silverstripe-announce/) * [Release Announcements](http://groups.google.com/group/silverstripe-announce/)
* [Blog posts about releases on silverstripe.org](http://silverstripe.org/blog/tag/release) * [Blog posts about releases on silverstripe.org](http://silverstripe.org/blog/tag/release)

View File

@ -138,13 +138,13 @@ At the moment, all URLs will have index.php in them. This is because IIS does no
# URLs with query strings # URLs with query strings
# Don't catch successful file references # Don't catch successful file references
RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)\?(.+)$ /sapphire/main.php?url=$1&$2 RewriteRule ^(.*)\?(.+)$ /framework/main.php?url=$1&$2
# URLs without query strings # URLs without query strings
RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ /sapphire/main.php?url=$1 RewriteRule ^(.*)$ /framework/main.php?url=$1
Friendly URLs should now be working when you browse to your site. Friendly URLs should now be working when you browse to your site.
Remember that IIRF works on a per-virtual host basis. This means for each site you want IIRF to work for, you need to add a new entry to **Web Sites** in **inetmgr.exe**. Remember that IIRF works on a per-virtual host basis. This means for each site you want IIRF to work for, you need to add a new entry to **Web Sites** in **inetmgr.exe**.
Thanks to **kcd** for the rules: [http://www.silverstripe.org/installing-silverstripe/show/10488#post294415](http://www.silverstripe.org/installing-silverstripe/show/10488#post294415) Thanks to **kcd** for the rules: [http://www.silverstripe.org/installing-silverstripe/show/10488#post294415](http://www.silverstripe.org/installing-silverstripe/show/10488#post294415)

View File

@ -2,7 +2,7 @@
This document provides guidelines for code formatting and documentation This document provides guidelines for code formatting and documentation
to developers contributing to SilverStripe. It applies to all PHP files to developers contributing to SilverStripe. It applies to all PHP files
in the sapphire/ and cms/ modules, as well as any supported additional modules. in the framework/ and cms/ modules, as well as any supported additional modules.
Coding standards are an important aspect for every software project, Coding standards are an important aspect for every software project,
and facilitate collaboration by making code more consistent and readable. and facilitate collaboration by making code more consistent and readable.
@ -440,4 +440,4 @@ See [security](/topics/security) for conventions related to handing security per
## License ## License
Parts of these coding conventions were adapted from [Zend Framework](http://framework.zend.com/manual/en/coding-standard.overview.html), Parts of these coding conventions were adapted from [Zend Framework](http://framework.zend.com/manual/en/coding-standard.overview.html),
which are licensed under BSD (see [license](http://framework.zend.com/license)). which are licensed under BSD (see [license](http://framework.zend.com/license)).

View File

@ -52,7 +52,7 @@ there are any problems they will follow up with you, so please ensure they have
### Sending git pull requests ### Sending git pull requests
The SilverStripe core modules (`sapphire` and `cms`), as well as some of the more popular modules are in The SilverStripe core modules (`framework` and `cms`), as well as some of the more popular modules are in
git version control. SilverStripe hosts its modules on [github.com/silverstripe](http://github.com/silverstripe) and [github.com/silverstripe-labs](http://github.com/silverstripe-labs). git version control. SilverStripe hosts its modules on [github.com/silverstripe](http://github.com/silverstripe) and [github.com/silverstripe-labs](http://github.com/silverstripe-labs).
After [installing git](http://help.github.com/git-installation-redirect) and creating a [free github.com account](https://github.com/signup/free), you can "fork" a module, After [installing git](http://help.github.com/git-installation-redirect) and creating a [free github.com account](https://github.com/signup/free), you can "fork" a module,
which creates a copy that you can commit to (see github's [guide to "forking"](http://help.github.com/forking/)). which creates a copy that you can commit to (see github's [guide to "forking"](http://help.github.com/forking/)).
@ -137,7 +137,7 @@ Its contents are fetched from different releases automatically every couple of m
### Source Control ### Source Control
In order to balance editorial control with effective collaboration, we keep In order to balance editorial control with effective collaboration, we keep
documentation alongside the module source code, e.g. in `sapphire/docs/`, documentation alongside the module source code, e.g. in `framework/docs/`,
or as code comments within PHP code. or as code comments within PHP code.
Contributing documentation is the same process as providing any other patch Contributing documentation is the same process as providing any other patch
(see [Patches and Bugfixes](contributing#submitting-patches-bugfixes-and-enhancements)). (see [Patches and Bugfixes](contributing#submitting-patches-bugfixes-and-enhancements)).
@ -230,9 +230,9 @@ on placing HTML blocks inside Markdown.
### Translating Documentation ### Translating Documentation
Documentation is kept alongside the source code, typically in a module subdirectory like `sapphire/docs/en/`. Documentation is kept alongside the source code, typically in a module subdirectory like `framework/docs/en/`.
Each language has its own subfolder, which can duplicate parts or the whole body of documentation. Each language has its own subfolder, which can duplicate parts or the whole body of documentation.
German documentation would for example live in `sapphire/docs/de/`. German documentation would for example live in `framework/docs/de/`.
The [sapphiredocs](https://github.com/silverstripe/silverstripe-sapphiredocs) module that drives The [sapphiredocs](https://github.com/silverstripe/silverstripe-sapphiredocs) module that drives
[doc.silverstripe.org](http://doc.silverstripe.org) automatically resolves these subfolders into a language dropdown. [doc.silverstripe.org](http://doc.silverstripe.org) automatically resolves these subfolders into a language dropdown.
@ -257,4 +257,4 @@ a free translator account to get started, even if you just feel like fixing up a
## Related ## Related
* [Installation: From Source](/installation/from-source) * [Installation: From Source](/installation/from-source)
* [Collaboration on Git](/misc/collaboration-on-git) * [Collaboration on Git](/misc/collaboration-on-git)

View File

@ -6,7 +6,7 @@ sections.
* [Coding conventions](coding-conventions): Guidelines and standards for code formatting and documentation * [Coding conventions](coding-conventions): Guidelines and standards for code formatting and documentation
* [Contributing](contributing): How you can be a part of the SilverStripe Open Source community * [Contributing](contributing): How you can be a part of the SilverStripe Open Source community
* [Module release process](module-release-process): Creating and looking after a module * [Module release process](module-release-process): Creating and looking after a module
* [Release process](release-process): Describes the Sapphire and CMS release process * [Release process](release-process): Describes the Framework and CMS release process
* [SS markdown](ss-markdown): Markdown syntax for our technical documentation * [SS markdown](ss-markdown): Markdown syntax for our technical documentation
* [Subversion](subversion): Describes SilverStripe-specific information on how to handle subversion * [Subversion](subversion): Describes SilverStripe-specific information on how to handle subversion

View File

@ -1,6 +1,6 @@
# Release Process # Release Process
Describes the process followed for "core" releases (mainly the `sapphire` and `cms` modules). Describes the process followed for "core" releases (mainly the `framework` and `cms` modules).
For other modules, we've compiled a helpful guide for a good [module release process](module-release-process). For other modules, we've compiled a helpful guide for a good [module release process](module-release-process).
## Release Maintainer ## Release Maintainer
@ -18,7 +18,7 @@ Release dates are usually not published prior to the release, but you can get a
reviewing the [release milestone](http://open.silverstripe.com/roadmap) on open.silverstripe.org. Releases will be reviewing the [release milestone](http://open.silverstripe.com/roadmap) on open.silverstripe.org. Releases will be
announced on the [release announcements mailing list](http://groups.google.com/group/silverstripe-announce). announced on the [release announcements mailing list](http://groups.google.com/group/silverstripe-announce).
Releases of the *cms* and *sapphire* modules are coupled at the moment, they follow the same numbering scheme. Module Releases of the *cms* and *framework* modules are coupled at the moment, they follow the same numbering scheme. Module
releases are documented separately in [module-release-process](module-release-process). releases are documented separately in [module-release-process](module-release-process).
## Release Numbering ## Release Numbering
@ -146,4 +146,4 @@ Each [security release](http://www.silverstripe.org/security-releases/) includes
| **Critical** | Critical releases require immediate actions. Such vulnerabilities allow attackers to take control of your site and you should upgrade on the day of release. *Example: Directory traversal, privilege escalation* | | **Critical** | Critical releases require immediate actions. Such vulnerabilities allow attackers to take control of your site and you should upgrade on the day of release. *Example: Directory traversal, privilege escalation* |
| **Important** | Important releases should be evaluated immediately. These issues allow an attacker to compromise a site's data and should be fixed within days. *Example: SQL injection.* | | **Important** | Important releases should be evaluated immediately. These issues allow an attacker to compromise a site's data and should be fixed within days. *Example: SQL injection.* |
| **Moderate** | Releases of moderate severity should be applied as soon as possible. They allow the unauthorized editing or creation of content. *Examples: Cross Site Scripting (XSS) in template helpers.* | | **Moderate** | Releases of moderate severity should be applied as soon as possible. They allow the unauthorized editing or creation of content. *Examples: Cross Site Scripting (XSS) in template helpers.* |
| **Low** | Low risk releases fix information disclosure and read-only privilege escalation vulnerabilities. These updates should also be applied as soon as possible, but with an impact-dependent priority. *Example: Exposure of the core version number, Cross Site Scripting (XSS) limited to the admin interface.* | | **Low** | Low risk releases fix information disclosure and read-only privilege escalation vulnerabilities. These updates should also be applied as soon as possible, but with an impact-dependent priority. *Example: Exposure of the core version number, Cross Site Scripting (XSS) limited to the admin interface.* |

View File

@ -27,7 +27,7 @@ on our [blog](http://www.silverstripe.org/the-3-0-ui-a-better-framework-for-your
All CSS in the CMS UI is written in the [SCSS language extensions](http://sass-lang.com/) All CSS in the CMS UI is written in the [SCSS language extensions](http://sass-lang.com/)
and the [Compass framework](http://compass-style.org/), which helps and the [Compass framework](http://compass-style.org/), which helps
us maintain expressive and concise style declarations. The files are located in `sapphire/admin/scss` us maintain expressive and concise style declarations. The files are located in `framework/admin/scss`
(and if you have the `cms` module installed, in `cms/scss`), and are compiled to a `css` folder on the (and if you have the `cms` module installed, in `cms/scss`), and are compiled to a `css` folder on the
same directory path. Changes to the SCSS files can be automatically converted by installing same directory path. Changes to the SCSS files can be automatically converted by installing
the ["compass" module](http://www.silverstripe.org/compass-module/) for SilverStripe, the ["compass" module](http://www.silverstripe.org/compass-module/) for SilverStripe,
@ -138,8 +138,8 @@ Due to the procedural and selector-driven style of UI programming in jQuery.entw
it can be difficult to find the piece of code responsible for a certain behaviour. it can be difficult to find the piece of code responsible for a certain behaviour.
Therefore it is important to adhere to file naming conventions. Therefore it is important to adhere to file naming conventions.
E.g. a feature only applicable to `ModelAdmin` should be placed in E.g. a feature only applicable to `ModelAdmin` should be placed in
`sapphire/admin/javascript/ModelAdmin.js`, while something modifying all forms (including ModelAdmin forms) `framework/admin/javascript/ModelAdmin.js`, while something modifying all forms (including ModelAdmin forms)
would be better suited in `sapphire/admin/javascript/LeftAndMain.EditForm.js`. would be better suited in `framework/admin/javascript/LeftAndMain.EditForm.js`.
Selectors used in these files should mirrow the "scope" set by its filename, Selectors used in these files should mirrow the "scope" set by its filename,
so don't place a rule applying to all form buttons inside `ModelAdmin.js`. so don't place a rule applying to all form buttons inside `ModelAdmin.js`.
@ -151,7 +151,7 @@ and [jQuery.delegate](http://api.jquery.com/delegate/), so takes care of dynamic
Most interfaces will require their own JavaScript and CSS files, so the Ajax loading has Most interfaces will require their own JavaScript and CSS files, so the Ajax loading has
to ensure they're loaded unless already present. A custom-built library called to ensure they're loaded unless already present. A custom-built library called
`jQuery.ondemand` (located in `sapphire/thirdparty`) takes care of this transparently - `jQuery.ondemand` (located in `framework/thirdparty`) takes care of this transparently -
so as a developer just declare your dependencies through the `[api:Requirements]` API. so as a developer just declare your dependencies through the `[api:Requirements]` API.
## Ajax Loading and Browser History ## Ajax Loading and Browser History
@ -231,11 +231,11 @@ To avoid repetition, we've written some helpers for various use cases:
SilverStripe automatically applies a [jQuery UI button style](http://jqueryui.com/demos/button/) SilverStripe automatically applies a [jQuery UI button style](http://jqueryui.com/demos/button/)
to all elements with the class `.ss-ui-button`. We've extended the jQuery UI widget a bit to all elements with the class `.ss-ui-button`. We've extended the jQuery UI widget a bit
to support defining icons via HTML5 data attributes (see `ssui.core.js`). to support defining icons via HTML5 data attributes (see `ssui.core.js`).
These icon identifiers relate to icon files in `sapphire/admin/images/btn-icons`, These icon identifiers relate to icon files in `framework/admin/images/btn-icons`,
and are sprited into a single file through SCSS and the Compass framework and are sprited into a single file through SCSS and the Compass framework
(see [tutorial](http://compass-style.org/help/tutorials/spriting/)). (see [tutorial](http://compass-style.org/help/tutorials/spriting/)).
Compass also creates the correct CSS classes to show those sprites via background images Compass also creates the correct CSS classes to show those sprites via background images
(see `sapphire/admin/scss/_sprites.scss`). (see `framework/admin/scss/_sprites.scss`).
Input: `<a href="..." class="ss-ui-button" data-icon="add" />Button text</a>` Input: `<a href="..." class="ss-ui-button" data-icon="add" />Button text</a>`
@ -276,4 +276,4 @@ Note: You can see any additional HTTP headers through the web developer tools in
* [Howto: Extend the CMS Interface](../howto/extend-cms-interface) * [Howto: Extend the CMS Interface](../howto/extend-cms-interface)
* [Howto: Customize the CMS tree](../howto/customize-cms-tree) * [Howto: Customize the CMS tree](../howto/customize-cms-tree)
* [Reference: ModelAdmin](../reference/modeladmin) * [Reference: ModelAdmin](../reference/modeladmin)
* [Topics: Rich Text Editing](../topics/rich-text-editing) * [Topics: Rich Text Editing](../topics/rich-text-editing)

View File

@ -50,8 +50,8 @@ See [controller](/topics/controller) for examples and explanations on how the ru
SilverStripe comes with certain rewrite rules (e.g. for *admin/assets*). SilverStripe comes with certain rewrite rules (e.g. for *admin/assets*).
* [sapphire/_config.php](http://open.silverstripe.org/browser/modules/sapphire/trunk/_config.php) * [framework/_config.php](https://github.com/silverstripe/sapphire/blob/master/_config.php)
* [cms/_config.php](http://open.silverstripe.org/browser/modules/cms/trunk/_config.php) * [cms/_config.php](https://github.com/silverstripe/silverstripe-cms/blob/master/_config.php)
## Links ## Links

View File

@ -27,7 +27,7 @@ The basic .htaccess file after installing SilverStripe look like this:
RewriteCond %{REQUEST_URI} ^(.*)$ RewriteCond %{REQUEST_URI} ^(.*)$
RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule .* sapphire/main.php?url=%1&%{QUERY_STRING} [L] RewriteRule .* framework/main.php?url=%1&%{QUERY_STRING} [L]
</IfModule> </IfModule>
### SILVERSTRIPE END ### ### SILVERSTRIPE END ###
@ -35,11 +35,11 @@ The basic .htaccess file after installing SilverStripe look like this:
The `<Files>` section denies direct access to the template files from anywhere but the server itself. The `<Files>` section denies direct access to the template files from anywhere but the server itself.
The next section enables the rewriting engine and rewrites requests to `sapphire/main.php` if they meet the following The next section enables the rewriting engine and rewrites requests to `framework/main.php` if they meet the following
criteria: criteria:
* URI doesn't end in .gif, .jpg, .png, .css, or .js * URI doesn't end in .gif, .jpg, .png, .css, or .js
* The requested file doesn't exist on the filesystem `sapphire/main.php` is called with the REQUEST_FILENAME (%1) as the `url` parameter and also appends the original * The requested file doesn't exist on the filesystem `framework/main.php` is called with the REQUEST_FILENAME (%1) as the `url` parameter and also appends the original
QUERY_STRING. QUERY_STRING.
See the [mod_rewrite documentation](http://httpd.apache.org/docs/2.0/mod/mod_rewrite.html) for more information on how See the [mod_rewrite documentation](http://httpd.apache.org/docs/2.0/mod/mod_rewrite.html) for more information on how
@ -90,4 +90,4 @@ You can access the following controller-method with /team/signup
## SSViewer template rendering ## SSViewer template rendering
See [templates](/topics/templates) for information on the SSViewer template system. See [templates](/topics/templates) for information on the SSViewer template system.

View File

@ -123,12 +123,12 @@ example](http://open.silverstripe.com/browser/modules/cms/trunk/code/staticpubli
Just look for this line: Just look for this line:
RewriteRule .* sapphire/main.php?url=%1&%{QUERY_STRING} [L] RewriteRule .* framework/main.php?url=%1&%{QUERY_STRING} [L]
And change the PHP script from main.php to static-main.php: And change the PHP script from main.php to static-main.php:
RewriteRule .* sapphire/static-main.php?url=%1&%{QUERY_STRING} [L] RewriteRule .* framework/static-main.php?url=%1&%{QUERY_STRING} [L]
## Using Static Publisher With Subsites Module ## Using Static Publisher With Subsites Module

View File

@ -144,7 +144,7 @@ restriction is needed to avoid performance-hits by caching and sorting potential
### Casting ### Casting
Column-values can be casted, based on the casting-types available through DBObject (sapphire/core/model/fieldtypes). Column-values can be casted, based on the casting-types available through DBObject (framework/core/model/fieldtypes).
:::php :::php
$myTableListField->setFieldCasting(array( $myTableListField->setFieldCasting(array(

View File

@ -86,7 +86,7 @@ If a variable returns a string, that string will be inserted into the template.
the system will attempt to render the object through its forTemplate() method. If the `forTemplate()` method has not been the system will attempt to render the object through its forTemplate() method. If the `forTemplate()` method has not been
defined, the system will return an error. defined, the system will return an error.
SilverStripe provides lots of properties and methods. For more details on built-in page controls and variables, see http://doc.silverstripe.org/sapphire/en/reference/built-in-page-controls SilverStripe provides lots of properties and methods. For more details on built-in page controls and variables, see http://doc.silverstripe.org/framework/en/reference/built-in-page-controls
### Escaping ### Escaping

View File

@ -3,7 +3,7 @@
## Introduction ## Introduction
This page lists a number of "page options" , "rendering tools" or "special URL variables" that you can use to debug your This page lists a number of "page options" , "rendering tools" or "special URL variables" that you can use to debug your
sapphire applications. These are consumed in PHP using the $_REQUEST or $_GET super globals throughout the Sapphire SilverStruoe applications. These are consumed in PHP using the $_REQUEST or $_GET super globals throughout the SilverStripe
core. core.
**General Usage** **General Usage**

View File

@ -10,7 +10,7 @@ The main entry point for any commandline execution is `cli-script.php`. For exam
from the commandline, use this command: from the commandline, use this command:
cd your-webroot/ cd your-webroot/
php sapphire/cli-script.php dev/build php framework/cli-script.php dev/build
Make sure that your commandline php version uses the same configuration as your webserver (run `php -i` to find out more). Make sure that your commandline php version uses the same configuration as your webserver (run `php -i` to find out more).
@ -20,9 +20,9 @@ You can add parameters to the command by using normal form encoding.
All parameters will be available in `$_GET` within SilverStripe. All parameters will be available in `$_GET` within SilverStripe.
cd your-webroot/ cd your-webroot/
php sapphire/cli-script.php myurl myparam=1 myotherparam=2 php framework/cli-script.php myurl myparam=1 myotherparam=2
## SAKE: Sapphire make ## SAKE: SilverStripe make
Sake is a simple wrapper around `cli-script.php`. It also tries to detect which `php` executable to use Sake is a simple wrapper around `cli-script.php`. It also tries to detect which `php` executable to use
if more than one are available. if more than one are available.
@ -35,7 +35,7 @@ If you get an error when running the command php -v, then you may not have php-c
You can copy the `sake` file into `/usr/bin/sake` for easier access (this is optional): You can copy the `sake` file into `/usr/bin/sake` for easier access (this is optional):
cd your-webroot/ cd your-webroot/
sudo ./sapphire/sake installsake sudo ./framework/sake installsake
Note: This currently only works on unix-like systems, not on Windows. Note: This currently only works on unix-like systems, not on Windows.
@ -68,7 +68,7 @@ Using this example, /Users/sminnee/Sites/mysite/ would be accessed at http://mys
## Usage ## Usage
Sake will either run `./sapphire/cli-script.php` or `./cli-script.php`, depending on what's available. Sake will either run `./framework/cli-script.php` or `./cli-script.php`, depending on what's available.
It's particularly useful for running build tasks... It's particularly useful for running build tasks...
@ -87,7 +87,7 @@ It can also be handy if you have a long running script.
You can use sake to make daemon processes for your application. You can use sake to make daemon processes for your application.
Step 1: Make a task or controller class that runs a loop. Because Sapphire has memory leaks, you should make the PHP Step 1: Make a task or controller class that runs a loop. Because SilverStripe has memory leaks, you should make the PHP
process exit when it hits some reasonable memory limit. Sake will automatically restart your process whenever it exits. process exit when it hits some reasonable memory limit. Sake will automatically restart your process whenever it exits.
The other thing you should do is include some appropriate sleep()s so that your process doesn't hog the system. The The other thing you should do is include some appropriate sleep()s so that your process doesn't hog the system. The
@ -122,4 +122,4 @@ Step 3: Use sake to start and stop your process
Note that sake processes are currently a little brittle, in that the pid and log files are placed in the site root Note that sake processes are currently a little brittle, in that the pid and log files are placed in the site root
directory, rather than somewhere sensible like /var/log or /var/run. directory, rather than somewhere sensible like /var/log or /var/run.

View File

@ -62,7 +62,7 @@ Some constants are user-defineable within *_ss_environment.php*.
| Name | | Description | | Name | | Description |
| ---- | | ----------- | | ---- | | ----------- |
| *TEMP_FOLDER* | | Absolute file path to store temporary files such as cached templates or the class manifest. Needs to be writeable by the webserver user. Defaults to *sys_get_temp_dir()*, and falls back to *silverstripe-cache* in the webroot. See *getTempFolder()* in *sapphire/core/Core.php* | | *TEMP_FOLDER* | | Absolute file path to store temporary files such as cached templates or the class manifest. Needs to be writeable by the webserver user. Defaults to *sys_get_temp_dir()*, and falls back to *silverstripe-cache* in the webroot. See *getTempFolder()* in *framework/core/Core.php* |
## User-level: Member-object ## User-level: Member-object
@ -94,4 +94,4 @@ and `ini_set('max_execution_time', <value>)` in your own `_config.php`.
## See Also ## See Also
[Config Cheat sheet](http://www.ssbits.com/a-config-php-cheatsheet/) [Config Cheat sheet](http://www.ssbits.com/a-config-php-cheatsheet/)

View File

@ -11,7 +11,7 @@ You are free to add `<style>` and `<link>` tags to your template (typically `the
SilverStripe provides a management layer for javascript and CSS files on top of that with the [Requirements](/reference/requirements) class, SilverStripe provides a management layer for javascript and CSS files on top of that with the [Requirements](/reference/requirements) class,
by adding some simple PHP calls to your controller or template. Some files are automatically included, by adding some simple PHP calls to your controller or template. Some files are automatically included,
depending on what functionality you are using (e.g. SilverStripe forms automatically include `sapphire/css/Form.css`). depending on what functionality you are using (e.g. SilverStripe forms automatically include `framework/css/Form.css`).
In your controller (e.g. `mysite/code/Page.php`): In your controller (e.g. `mysite/code/Page.php`):
@ -91,4 +91,4 @@ See [typography](/reference/typography) for more information.
* [javascript](javascript) * [javascript](javascript)
* ["Compass" module](http://silverstripe.org/compass-module/): Allows writing CSS in SASS/LESS syntax, with better code management through mixins, includes and variables * ["Compass" module](http://silverstripe.org/compass-module/): Allows writing CSS in SASS/LESS syntax, with better code management through mixins, includes and variables
* [Reference: CMS Architecture](../reference/cms-architecture) * [Reference: CMS Architecture](../reference/cms-architecture)
* [Howto: Extend the CMS Interface](../howto/extend-cms-interface) * [Howto: Extend the CMS Interface](../howto/extend-cms-interface)

View File

@ -9,7 +9,7 @@ following connections:
All data tables in SilverStripe are defined as subclasses of `[api:DataObject]`. Inheritance is supported in the data All data tables in SilverStripe are defined as subclasses of `[api:DataObject]`. Inheritance is supported in the data
model: seperate tables will be linked together, the data spread across these tables. The mapping and saving/loading model: seperate tables will be linked together, the data spread across these tables. The mapping and saving/loading
logic is handled by sapphire, you don't need to worry about writing SQL most of the time. logic is handled by SilverStripe, you don't need to worry about writing SQL most of the time.
The advanced object-relational layer in SilverStripe is one of the main reasons for requiring PHP5. Most of its The advanced object-relational layer in SilverStripe is one of the main reasons for requiring PHP5. Most of its
customizations are possible through [PHP5 Object customizations are possible through [PHP5 Object
@ -242,7 +242,7 @@ So far we have only filtered a data list by fields on the object that you're req
be okay, but often, a data model is made up of a number of related objects. For example, in SilverStripe each member be okay, but often, a data model is made up of a number of related objects. For example, in SilverStripe each member
can be placed in a number of groups, and each group has a number of permissions. can be placed in a number of groups, and each group has a number of permissions.
For this, Sapphire ORM supports **Relation Filters**. Any ORM request can be filtered by fields on a related object by For this, the SilverStripe ORM supports **Relation Filters**. Any ORM request can be filtered by fields on a related object by
specifying the filter key as `<relation-name>.<field-in-related-object>`. You can chain relations together as many specifying the filter key as `<relation-name>.<field-in-related-object>`. You can chain relations together as many
times as is necessary. times as is necessary.
@ -528,7 +528,7 @@ accessors available on both ends.
### Adding relations ### Adding relations
Inside sapphire it doesn't matter if you're editing a *has_many*- or a *many_many*-relationship. You need to get a Inside SilverStripe it doesn't matter if you're editing a *has_many*- or a *many_many*-relationship. You need to get a
`[api:ComponentSet]`. `[api:ComponentSet]`.
:::php :::php
@ -671,7 +671,7 @@ Example: Disallow creation of new players if the currently logged-in player is n
exit(); exit();
} }
// CAUTION: You are required to call the parent-function, otherwise sapphire will not execute the request. // CAUTION: You are required to call the parent-function, otherwise SilverStripe will not execute the request.
parent::onBeforeWrite(); parent::onBeforeWrite();
} }
} }

View File

@ -11,7 +11,7 @@ Directory | Description
--------- | ----------- --------- | -----------
`assets/` | Contains images and other files uploaded via the SilverStripe CMS. You can also place your own content inside it, and link to it from within the content area of the CMS. `assets/` | Contains images and other files uploaded via the SilverStripe CMS. You can also place your own content inside it, and link to it from within the content area of the CMS.
`cms/` | Contains all the files that form the CMS area of your site. Its structure is similiar to the mysite/ directory, so if you find something interesting, it should be easy enough to look inside and see how it was built. `cms/` | Contains all the files that form the CMS area of your site. Its structure is similiar to the mysite/ directory, so if you find something interesting, it should be easy enough to look inside and see how it was built.
`sapphire/` | The framework that builds both your own site and as the CMS that powers it. Youll be utilizing files in this directory often, both directly and indirectly. `framework/` | The framework that builds both your own site and as the CMS that powers it. Youll be utilizing files in this directory often, both directly and indirectly.
## Custom Code Structure ## Custom Code Structure

View File

@ -23,7 +23,7 @@ by stripping HTML markup, or transforming it where possible
$email->send(); $email->send();
The default HTML template is located in `sapphire/templates/email/GenericEmail.ss`. The default HTML template is located in `framework/templates/email/GenericEmail.ss`.
### Sending Plaintext only ### Sending Plaintext only
@ -118,4 +118,4 @@ The [newsletter module](http://silverstripe.org/newsletter-module) provides a UI
## API Documentation ## API Documentation
`[api:Email]` `[api:Email]`

View File

@ -57,13 +57,13 @@ The mechanism by which the `_ss_environment.php` files work is quite simple. He
* At the beginning of SilverStripe's execution, the `_ss_environment.php` file is searched for, and if it is found, it's * At the beginning of SilverStripe's execution, the `_ss_environment.php` file is searched for, and if it is found, it's
included. SilverStripe looks in 3 places for the file: included. SilverStripe looks in 3 places for the file:
* The site's base folder (ie, a sibling of sapphire, jsparty, and cms) * The site's base folder (ie, a sibling of framework, jsparty, and cms)
* The parent of the base folder * The parent of the base folder
* The grandparent of the base folder * The grandparent of the base folder
* The `_ss_environment.php` file sets a number of "define()". * The `_ss_environment.php` file sets a number of "define()".
* "conf/ConfigureFromEnv.php" is included from within your `mysite/_config.php`. This file has a number of regular * "conf/ConfigureFromEnv.php" is included from within your `mysite/_config.php`. This file has a number of regular
configuration commands that use those defines as their arguments. If you are curious, open up configuration commands that use those defines as their arguments. If you are curious, open up
`sapphire/conf/ConfigureFromEnv.php` and see for yourself! `framework/conf/ConfigureFromEnv.php` and see for yourself!
### An Example ### An Example

View File

@ -2,7 +2,7 @@
## Introduction ## Introduction
Form is the base class of all forms in a sapphire application. Forms in your application can be created either by Form is the base class of all forms in a SilverStripe application. Forms in your application can be created either by
instantiating the Form class itself, or by subclassing it. instantiating the Form class itself, or by subclassing it.
## Instantiating a form ## Instantiating a form
@ -254,7 +254,7 @@ which includes a container `<div>` as well as a `<label>` element (if applicable
You can also render each field without these structural elements through the `[Field()](api:FormField->Field())` method. You can also render each field without these structural elements through the `[Field()](api:FormField->Field())` method.
In order to influence the form rendering, overloading these two methods is a good start. In order to influence the form rendering, overloading these two methods is a good start.
In addition, most form fields are rendered through SilverStripe templates, e.g. `TextareaField` is rendered via `sapphire/templates/forms/TextareaField.ss`. In addition, most form fields are rendered through SilverStripe templates, e.g. `TextareaField` is rendered via `framework/templates/forms/TextareaField.ss`.
These templates can be overwritten globally by placing a template with the same name in your `mysite` directory, These templates can be overwritten globally by placing a template with the same name in your `mysite` directory,
or set on a form field instance via `[setTemplate()](api:FormField->setTemplate())` and `[setFieldHolderTemplate()](api:FormField->setFieldHolderTemplate())`. or set on a form field instance via `[setTemplate()](api:FormField->setTemplate())` and `[setFieldHolderTemplate()](api:FormField->setFieldHolderTemplate())`.
@ -300,4 +300,4 @@ Adds a new text field called FavouriteColour next to the Content field in the CM
* `[api:Form]` * `[api:Form]`
* `[api:FormField]` * `[api:FormField]`
* `[api:FieldList]` * `[api:FieldList]`
* `[api:FormAction]` * `[api:FormAction]`

View File

@ -260,7 +260,7 @@ If you want to run the text collector for just one module you can use the 'modul
Each module can have one language table per locale. These tables are just PHP files with array notations. By convention, Each module can have one language table per locale. These tables are just PHP files with array notations. By convention,
the files are stored in the /lang subfolder, and are named after their locale value, e.g. "en_US.php". the files are stored in the /lang subfolder, and are named after their locale value, e.g. "en_US.php".
Example: sapphire/lang/en_US.php (extract) Example: framework/lang/en_US.php (extract)
:::php :::php
// ... // ...
@ -273,7 +273,7 @@ Example: sapphire/lang/en_US.php (extract)
// ... // ...
Translation table: sapphire/lang/de_DE.php (extract) Translation table: framework/lang/de_DE.php (extract)
:::php :::php
$lang['de_DE']['ImageUploader']['ATTACH'] = '%s anhängen'; $lang['de_DE']['ImageUploader']['ATTACH'] = '%s anhängen';
@ -290,7 +290,7 @@ i18n in javascript works with mostly the same assumption as its PHP-equivalent.
Add the i18n library requirement to your code. Add the i18n library requirement to your code.
:::php :::php
Requirements::javascript(SAPPHIRE_DIR . "/javascript/i18n.js"); Requirements::javascript(FRAMEWORK_DIR . "/javascript/i18n.js");
Each language has its own language table in a separate file. To save bandwidth, only two tables are actually loaded by Each language has its own language table in a separate file. To save bandwidth, only two tables are actually loaded by

View File

@ -3,11 +3,11 @@
## Introduction ## Introduction
Creating a module is a good way to re-use abstract code and templates across multiple projects. SilverStripe already has Creating a module is a good way to re-use abstract code and templates across multiple projects. SilverStripe already has
certain modules included, for example "sapphire" and "cms". These three modules are the core functionality and certain modules included, for example "framework" and "cms". These three modules are the core functionality and
templating for any initial installation. If you're wanting to add generic functionality that isn't specific to your templating for any initial installation. If you're wanting to add generic functionality that isn't specific to your
project, like a forum, an ecommerce package or a blog you can do it like this; project, like a forum, an ecommerce package or a blog you can do it like this;
1. Create another directory at the root level (same level as "sapphire" and "cms") 1. Create another directory at the root level (same level as "framework" and "cms")
2. You must create an _config.php inside your module directory, else SilverStripe will not include it 2. You must create an _config.php inside your module directory, else SilverStripe will not include it
3. Inside your module directory, follow our [directory structure guidelines](/topics/directory-structure#module_structure) 3. Inside your module directory, follow our [directory structure guidelines](/topics/directory-structure#module_structure)
@ -55,4 +55,4 @@ adherence to conventions, writing documentation, and releasing updates. See [con
* [Module Release Process](module-release-process) * [Module Release Process](module-release-process)
* [Debugging methods](/topics/debugging) * [Debugging methods](/topics/debugging)
* [URL Variable Tools](/reference/urlvariabletools) - Lists a number of <20><><EFBFBD>page options<6E><73><EFBFBD> , <20><><EFBFBD>rendering tools<6C><73><EFBFBD> or <20><><EFBFBD>special * [URL Variable Tools](/reference/urlvariabletools) - Lists a number of <20><><EFBFBD>page options<6E><73><EFBFBD> , <20><><EFBFBD>rendering tools<6C><73><EFBFBD> or <20><><EFBFBD>special
URL variables<65><73><EFBFBD> that you can use to debug your sapphire applications URL variables<65><73><EFBFBD> that you can use to debug your SilverStripe applications

View File

@ -1,12 +1,12 @@
# Modules # Modules
Sapphire is designed to be a modular application system - even the CMS is simply a module that plugs into it. SilverStripe is designed to be a modular application system - even the CMS is simply a module that plugs into it.
A module is, quite simply, a collection of classes, templates, and other resources that is loaded into a top-level A module is, quite simply, a collection of classes, templates, and other resources that is loaded into a top-level
directory. In a default SilverStripe download, even resources in 'sapphire' and 'mysite' are treated in exactly the directory. In a default SilverStripe download, even resources in 'framework' and 'mysite' are treated in exactly the
same as every other module. same as every other module.
Sapphire's `[api:ManifestBuilder]` will find any class, css or template files anywhere under the site's main SilverStripe's `[api:ManifestBuilder]` will find any class, css or template files anywhere under the site's main
directory. The _config.php file in the module directory can be used to define director rules, calls to directory. The _config.php file in the module directory can be used to define director rules, calls to
Object::useCustomClass(), and the like. So, by unpacking a module into site's main directory and viewing the site with Object::useCustomClass(), and the like. So, by unpacking a module into site's main directory and viewing the site with
?flush=1 on the end of the URL, all the module's new behaviour will be incorporated to your site: ?flush=1 on the end of the URL, all the module's new behaviour will be incorporated to your site:
@ -40,7 +40,7 @@ instead make it easier for developers to build other applications.
## Installation ## Installation
Modules should exist in the root folder of your SilverStripe. The root folder being the one that contains the Modules should exist in the root folder of your SilverStripe. The root folder being the one that contains the
*sapphire*, *cms* and other folders. *framework*, *cms* and other folders.
The following article explains the generic installation of a module. Individual modules have their own requirements such The following article explains the generic installation of a module. Individual modules have their own requirements such
as creating folders or configuring API keys. For information about installing or configuring a specific module see the as creating folders or configuring API keys. For information about installing or configuring a specific module see the
@ -90,4 +90,4 @@ Exit the editor and then run
**Useful Links:** **Useful Links:**
* [Modules](module-developement) * [Modules](module-developement)
* [Module Release Process](module-release-process) * [Module Release Process](module-release-process)

View File

@ -1,4 +1,4 @@
# How To Create a Sapphire Test # How To Create a SilverStripe Test
A unit test class will test the behaviour of one of your `[api:DataObjects]`. This simple fragment of `[api:SiteTreeTest]` A unit test class will test the behaviour of one of your `[api:DataObjects]`. This simple fragment of `[api:SiteTreeTest]`
provides us the basics of creating unit tests. provides us the basics of creating unit tests.
@ -15,7 +15,7 @@ provides us the basics of creating unit tests.
* Define the fixture file to use for this test class * Define the fixture file to use for this test class
*/ */
static $fixture_file = 'sapphire/tests/SiteTreeTest.yml'; static $fixture_file = 'SiteTreeTest.yml';
/** /**

View File

@ -1,8 +1,8 @@
# Unit and Integration Testing # Unit and Integration Testing
The Sapphire core contains various features designed to simplify the process of creating and managing automated tests. The SilverStripe core contains various features designed to simplify the process of creating and managing automated tests.
* [Create a unit test](create-sapphire-test): Writing tests to check core data objects * [Create a unit test](create-silverstripe-test): Writing tests to check core data objects
* [Creating a functional test](create-functional-test): An overview of functional tests and how to write a functional test * [Creating a functional test](create-functional-test): An overview of functional tests and how to write a functional test
* [Email Sending](email-sending): An overview of the built-in email testing code * [Email Sending](email-sending): An overview of the built-in email testing code
* [Troubleshooting](testing-guide-troubleshooting): Frequently asked questions list for testing issues * [Troubleshooting](testing-guide-troubleshooting): Frequently asked questions list for testing issues
@ -27,7 +27,7 @@ To get started now, follow the installation instructions below, and check
The framework has a required dependency on [PHPUnit](http://www.phpunit.de/) and an optional dependency on The framework has a required dependency on [PHPUnit](http://www.phpunit.de/) and an optional dependency on
[SimpleTest](http://simpletest.org/), the two premiere PHP testing frameworks. [SimpleTest](http://simpletest.org/), the two premiere PHP testing frameworks.
To run Sapphire tests, you'll need to be able to access PHPUnit on your include path. First, you'll need to make sure To run SilverStripe tests, you'll need to be able to access PHPUnit on your include path. First, you'll need to make sure
that you have the PEAR command line client installed. To test this out, type `pear help` at your prompt. You should that you have the PEAR command line client installed. To test this out, type `pear help` at your prompt. You should
see a bunch of generic PEAR info. If it's not installed, you'll need to set it up first (see: [Getting Started with see a bunch of generic PEAR info. If it's not installed, you'll need to set it up first (see: [Getting Started with
PEAR](http://www.sitepoint.com/article/getting-started-with-pear/)) or else manually install PHPUnit (see: [Installation PEAR](http://www.sitepoint.com/article/getting-started-with-pear/)) or else manually install PHPUnit (see: [Installation
@ -55,7 +55,7 @@ their own:
### Via Command Line ### Via Command Line
`cd` to the root level of your project and run [sake](/topics/commandline) (Sapphire Make) to execute the tests: `cd` to the root level of your project and run [sake](/topics/commandline) (SilverStripe Make) to execute the tests:
/path/to/project$ sake dev/tests/all /path/to/project$ sake dev/tests/all
@ -68,7 +68,7 @@ Run specific tests:
dev/tests/MyTest,MyOtherTest dev/tests/MyTest,MyOtherTest
Run all tests in a module folder, e.g. "sapphire" Run all tests in a module folder, e.g. "framework"
dev/tests/module/<modulename> dev/tests/module/<modulename>
@ -85,7 +85,7 @@ Tests are written by creating subclasses of `[api:SapphireTest]`. You should pu
Generally speaking, there should be one test class for each application class. The name of the test class should be the Generally speaking, there should be one test class for each application class. The name of the test class should be the
application class, with "Test" as a suffix. For instance, we have all the tests for `SiteTree` in application class, with "Test" as a suffix. For instance, we have all the tests for `SiteTree` in
`sapphire/tests/SiteTreeTest.php` `framework/tests/SiteTreeTest.php`
You will generally write two different kinds of test classes. You will generally write two different kinds of test classes.
@ -96,9 +96,9 @@ Some people may note that we have used the same naming convention as Ruby on Rai
## How To ## How To
Tutorials and recipes for creating tests using the Sapphire framework: Tutorials and recipes for creating tests using the SilverStripe framework:
* **[Create a Sapphire Test](/topics/testing/create-sapphire-test)** * **[Create a SilverStripe Test](/topics/testing/create-silverstripe-test)**
* **Load Test Fixtures** * **Load Test Fixtures**
* **[Create a Functional Test](/topics/testing/create-functional-test)** * **[Create a Functional Test](/topics/testing/create-functional-test)**
* **[Test Outgoing Email Sending](/topics/testing/email-sending)** * **[Test Outgoing Email Sending](/topics/testing/email-sending)**
@ -150,4 +150,4 @@ is used in place of *Test Case*, and *should* is used in place of *expect* and *
## Feedback ## Feedback
If you have a topic you would like covered in these section please ask for it on our [Bug Tracker](http://open.silverstripe.org) If you have a topic you would like covered in these section please ask for it on our [Bug Tracker](http://open.silverstripe.org)

View File

@ -50,13 +50,13 @@ To turn the key in the lock and answer this question, we need to look at how aut
aspects of the SilverStripe platform. There are some significant differences in goals and focus between different layers aspects of the SilverStripe platform. There are some significant differences in goals and focus between different layers
of the system and interactions between the core, and various supporting modules. of the system and interactions between the core, and various supporting modules.
### Sapphire Core ### SilverStripe Core
In open source core development, we are focussing on a large and (for the most part) stable system with existing well In open source core development, we are focussing on a large and (for the most part) stable system with existing well
defined behavior. Our overarching goal is that we do not want to break or change this existing behavior, but at the same defined behavior. Our overarching goal is that we do not want to break or change this existing behavior, but at the same
time we want to extend and improve it. time we want to extend and improve it.
Testing the Sapphire framework should focus on [characterization](http://en.wikipedia.org/wiki/Characterization_Test). Testing the SilverStripe framework should focus on [characterization](http://en.wikipedia.org/wiki/Characterization_Test).
We should be writing tests that illustrate the way that the API works, feeding commonly used methods with a range of We should be writing tests that illustrate the way that the API works, feeding commonly used methods with a range of
inputs and states and verifying that these methods respond with clear and predictable results. inputs and states and verifying that these methods respond with clear and predictable results.

View File

@ -114,8 +114,8 @@ An example widget is below:
static $description = "Shows flickr photos."; static $description = "Shows flickr photos.";
public function Photos() { public function Photos() {
Requirements::javascript("sapphire/thirdparty/prototype/prototype.js"); Requirements::javascript(THIRDPARTY_DIR . "/prototype/prototype.js");
Requirements::javascript("sapphire/thirdparty/scriptaculous/effects.js"); Requirements::javascript(THIRDPARTY_DIR . "/scriptaculous/effects.js");
Requirements::javascript("mashups/javascript/lightbox.js"); Requirements::javascript("mashups/javascript/lightbox.js");
Requirements::css("mashups/css/lightbox.css"); Requirements::css("mashups/css/lightbox.css");
@ -185,7 +185,7 @@ To render the widget, simply include $SilverStripeFeed in your template:
As directed in the definition of SilverStripeFeed(), the Widget will be rendered through the WidgetHolder template. This As directed in the definition of SilverStripeFeed(), the Widget will be rendered through the WidgetHolder template. This
is pre-defined at `/sapphire/templates/WidgetHolder.ss` and simply consists of: is pre-defined at `framework/templates/WidgetHolder.ss` and simply consists of:
:::ss :::ss
<div class="WidgetHolder"> <div class="WidgetHolder">
@ -312,7 +312,7 @@ For a widget to be put in our official widget database they must follow this con
#### File Structure for your widget #### File Structure for your widget
You should have a folder called widget_YourName in the top level (the one with sapphire, cms..) with all your files. See You should have a folder called widget_YourName in the top level (the one with framework, cms..) with all your files. See
the example below. Your widget **MUST** have at least 1 Template file, 1 PHP file, the README File the example below. Your widget **MUST** have at least 1 Template file, 1 PHP file, the README File
[(Example)](http://open.silverstripe.com/browser/modules/widgets/twitter/trunk/README)and an _config.php file for [(Example)](http://open.silverstripe.com/browser/modules/widgets/twitter/trunk/README)and an _config.php file for
configuration. If you dont need any config options for the widget to work then you still need an _config.php by you can configuration. If you dont need any config options for the widget to work then you still need an _config.php by you can

View File

@ -38,7 +38,7 @@ Let's have a look at the folder structure.
| --------- | | ----------- | | --------- | | ----------- |
| assets/ | | Contains images and other files uploaded via the SilverStripe CMS. You can also place your own content inside it, and link to it from within the content area of the CMS. | | assets/ | | Contains images and other files uploaded via the SilverStripe CMS. You can also place your own content inside it, and link to it from within the content area of the CMS. |
| cms/ | | Contains all the files that form the CMS area of your site. Its structure is similiar to the mysite/ directory, so if you find something interesting, it should be easy enough to look inside and see how it was built. | | cms/ | | Contains all the files that form the CMS area of your site. Its structure is similiar to the mysite/ directory, so if you find something interesting, it should be easy enough to look inside and see how it was built. |
| sapphire/ | | The framework that builds both your own site and as the CMS that powers it. Youll be utilizing files in this directory often, both directly and indirectly. | | framework/ | | The framework that builds both your own site and as the CMS that powers it. Youll be utilizing files in this directory often, both directly and indirectly. |
| mysite/ | | Contains all your sites code (mainly PHP and JavaScript) | | mysite/ | | Contains all your sites code (mainly PHP and JavaScript) |
| themes/ | | Combines all images, stylesheets and templates powering your website into a reusable "theme" | | themes/ | | Combines all images, stylesheets and templates powering your website into a reusable "theme" |
@ -477,4 +477,4 @@ things.
* [Official book on SilverStripe in English](http://www.silverstripe.org/silverstripe-book). * [Official book on SilverStripe in English](http://www.silverstripe.org/silverstripe-book).
* [Official book on SilverStripe in German](http://www.silverstripe.org/das-silverstripe-buch). * [Official book on SilverStripe in German](http://www.silverstripe.org/das-silverstripe-buch).
![](_images/silverstripe-cms-book-front-cover-design-june2009preview.jpg) ![](_images/silverstripe-cms-book-front-cover-design-june2009preview.jpg)

View File

@ -28,16 +28,16 @@ To do this, we are gonna use the following objects :
This is a table which sums up the relations between them : This is a table which sums up the relations between them :
| Project | Student | Mentor | Modules | | Project | Student | Mentor | Modules |
| ------- | ------- | ------ | ------------------ | ------- | ------- | ------ | ------------------
| i18n Multi-Language | Bernat Foj Capell | Ingo Schommer | Cms, Sapphire, i18n, Translation | | i18n Multi-Language | Bernat Foj Capell | Ingo Schommer | Cms, Framework, i18n, Translation |
| Image Manipulation | Mateusz Ujma | Sam Minnee | Cms, Sapphire, ImageManipulation | | Image Manipulation | Mateusz Ujma | Sam Minnee | Cms, Framework, ImageManipulation |
| Google Maps | Ofir Picazo Navarro | Hayden Smith | Cms, Sapphire, Maps | | Google Maps | Ofir Picazo Navarro | Hayden Smith | Cms, Framework, Maps |
| Mashups | Lakshan Perera | Matt Peel | Cms, Sapphire, MashUps | | Mashups | Lakshan Perera | Matt Peel | Cms, Framework, MashUps |
| Multiple Databases | Philipp Krenn | Brian Calhoun | Cms, Sapphire, MultipleDatabases | | Multiple Databases | Philipp Krenn | Brian Calhoun | Cms, Framework, MultipleDatabases |
| Reporting | Quin Hoxie | Sam Minnee | Cms, Sapphire, Reporting | | Reporting | Quin Hoxie | Sam Minnee | Cms, Framework, Reporting |
| Security & OpenID | Markus Lanthaler | Hayden Smith | Cms, Sapphire, auth_openid | | Security & OpenID | Markus Lanthaler | Hayden Smith | Cms, Framework, auth_openid |
| SEO | Will Scott | Brian Calhoun | Cms, Sapphire, googleadwords, googleanalytics | | SEO | Will Scott | Brian Calhoun | Cms, Framework, googleadwords, googleanalytics |
| Usability | Elijah Lofgren | Sean Harvey | Cms, Sapphire, UsabilityElijah | | Usability | Elijah Lofgren | Sean Harvey | Cms, Framework, UsabilityElijah |
| Safari 3 Support | Meg Risen | Sean Harvey | Cms, Sapphire, UsabilityMeg | | Safari 3 Support | Meg Risen | Sean Harvey | Cms, Framework, UsabilityMeg |
## GSOC Projects ## GSOC Projects
@ -770,6 +770,6 @@ CMS and how to display them on the website.
## Download the code ## Download the code
Download all the [code](http://doc.silverstripe.org/sapphire/docs/en/tutorials/_images/tutorial5-completecode.zip) for this tutorial. Download all the [code](http://doc.silverstripe.org/framework/docs/en/tutorials/_images/tutorial5-completecode.zip) for this tutorial.
You can also download the [code](http://doc.silverstripe.org/sapphire/docs/en/tutorials/_images/tutorial5-completecode-blackcandy.zip) for use in the blackcandy template. You can also download the [code](http://doc.silverstripe.org/framework/docs/en/tutorials/_images/tutorial5-completecode-blackcandy.zip) for use in the blackcandy template.