diff --git a/docs/en/00_Getting_Started/01_Installation/02_Mac_OSX.md b/docs/en/00_Getting_Started/01_Installation/02_Mac_OSX.md
index 92ee440db..c2e4fc0fb 100644
--- a/docs/en/00_Getting_Started/01_Installation/02_Mac_OSX.md
+++ b/docs/en/00_Getting_Started/01_Installation/02_Mac_OSX.md
@@ -7,7 +7,7 @@ It is also a bit harder to install additional PHP modules required by SilverStri
[MAMP](http://www.mamp.info/en/) is a simple way to get a complete webserver
environment going on your OSX machine, without removing or altering any system-level configuration.
-Check out the [MAC OSX with Homebrew](other_installation_options/Mac_OSX_Homebrew)
+Check out the [MAC OSX with Homebrew](/getting_started/installation/other_installation_options/Mac_OSX_Homebrew)
for an alternative, more configurable installation process.
## Requirements
@@ -46,4 +46,4 @@ Finally, we're ready to install SilverStripe through composer:
After finishing, the installation wizard should be available at `http://localhost:8888/silverstripe`.
The MAMP default database credentials are user `root` and password `root`.
-We have a separate in-depth tutorial for [Composer Installation and Usage](composer).
\ No newline at end of file
+We have a separate in-depth tutorial for [Composer Installation and Usage](/getting_started/composer).
diff --git a/docs/en/00_Getting_Started/01_Installation/04_Other_installation_Options/Mac_OSX_Homebrew.md b/docs/en/00_Getting_Started/01_Installation/04_Other_installation_Options/Mac_OSX_Homebrew.md
index 2806c804b..8021cd537 100644
--- a/docs/en/00_Getting_Started/01_Installation/04_Other_installation_Options/Mac_OSX_Homebrew.md
+++ b/docs/en/00_Getting_Started/01_Installation/04_Other_installation_Options/Mac_OSX_Homebrew.md
@@ -6,7 +6,7 @@ OSX comes bundled with PHP, but you're stuck with the version and modules it shi
If you run projects on different PHP versions, or care about additional PHP module support
and other dependencies such as MariaDB, we recommend an installation through [Homebrew](http://brew.sh/).
-Check out the [MAC OSX with MAMP](../Mac_OSX) for an alternative installation process
+Check out the [MAC OSX with MAMP](/getting_started/installation/mac_osx) for an alternative installation process
which packages up the whole environment into a convenient application.
## Requirements
@@ -115,4 +115,4 @@ Finally, we're ready to install SilverStripe through composer:
After finishing, the installation wizard should be available at `http://localhost/silverstripe`.
The Homebrew MariaDB default database credentials are user `root` and password `root`.
-We have a separate in-depth tutorial for [Composer Installation and Usage](composer).
\ No newline at end of file
+We have a separate in-depth tutorial for [Composer Installation and Usage](getting_started/composer).
diff --git a/docs/en/00_Getting_Started/01_Installation/04_Other_installation_Options/Windows_IIS7.md b/docs/en/00_Getting_Started/01_Installation/04_Other_installation_Options/Windows_IIS7.md
index 33dda0de6..6e7d8900f 100644
--- a/docs/en/00_Getting_Started/01_Installation/04_Other_installation_Options/Windows_IIS7.md
+++ b/docs/en/00_Getting_Started/01_Installation/04_Other_installation_Options/Windows_IIS7.md
@@ -51,7 +51,7 @@ IIS 7.x comes with Windows. However, it needs to be installed. Follow these step
**NOTE**: These instructions are slightly different for Windows Vista and Windows 7. Instead of a Server Manager popup, you'll just get a list of features to enable. Do the same as above except click the **Internet Information Services** checkbox when the Windows Features popup appears and then expand this node and select **CGI** under World Wide Web Services > Application Development Features.
-Once the installation is finished, browse to http://localhost in your browser. If an image pops up, then IIS has been installed correctly.
+Once the installation is finished, browse to `http://localhost` in your browser. If an image pops up, then IIS has been installed correctly.
## IIS URL Rewrite Module
@@ -191,7 +191,7 @@ After gettng the code installed, make sure you set the folder permissions proper
## Start SilverStripe installer
-Open a browser and point it to http://localhost/ss
+Open a browser and point it to `http://localhost/ss`
If an installation screen shows up, congratulations! We're very close now.
@@ -260,7 +260,7 @@ To find out who the current user is, try echoing the result of get_current_user(
**Q: When I try to access my SilverStripe site for the first time, I get a 404 error**
-**A:** Try accessing dev/build?username=admin&password=password at the end of the URL you requested. For example, http://localhost/ss/dev/build?username=admin&password=password. This will ensure the database is built properly
+**A:** Try accessing dev/build?username=admin&password=password at the end of the URL you requested. For example, `http://localhost/ss/dev/build?username=admin&password=password`. This will ensure the database is built properly
**Q: How do I make IIS expose errors instead of giving a generic 500 or 404 page?**
@@ -268,7 +268,7 @@ To find out who the current user is, try echoing the result of get_current_user(
Also, make sure that display_errors, display_startup_errors and html_errors in are set to On in php.ini.
-**Q: I get a 500 server error when trying to access the SilverStripe site. e.g. http://localhost/ss**
+**Q: I get a 500 server error when trying to access the SilverStripe site. e.g. `http://localhost/ss`**
**A:** One of the reasons why this could be happening is the web.config file inside the ss directory has XML that is not well formed. Make sure there are NO spaces before the starting tag, and make sure that everything is tabbed out correctly.
diff --git a/docs/en/00_Getting_Started/01_Installation/05_Common_Problems.md b/docs/en/00_Getting_Started/01_Installation/05_Common_Problems.md
index 4a1735640..d40229792 100644
--- a/docs/en/00_Getting_Started/01_Installation/05_Common_Problems.md
+++ b/docs/en/00_Getting_Started/01_Installation/05_Common_Problems.md
@@ -73,7 +73,7 @@ every page on the site, if that's easier.
Please make sure all code inside `*.php` files is wrapped in classes. Due to the way `[api:ManifestBuilder]`
includes all files with this extension, any **procedural code will be executed on every call**. The most common error here
-is putting a test.php/phpinfo.php file in the document root. See [datamodel](/developer_guides/data_model_and_orm) and [controllers](/developer_guides/controllers)
+is putting a test.php/phpinfo.php file in the document root. See [datamodel](/developer_guides/model/data_model_and_orm) and [controllers](/developer_guides/controllers)
for ways how to structure your code.
Also, please check that you have PHP enabled on the webserver, and you're running PHP 5.1 or later.
diff --git a/docs/en/00_Getting_Started/01_Installation/index.md b/docs/en/00_Getting_Started/01_Installation/index.md
index d8daddbbd..c083b7377 100644
--- a/docs/en/00_Getting_Started/01_Installation/index.md
+++ b/docs/en/00_Getting_Started/01_Installation/index.md
@@ -20,5 +20,5 @@ If the above steps don't work for any reason have a read of the [Common Problems
SilverStripe ships with default rewriting rules specific to your web server. Apart from
routing requests to the framework, they also prevent access to sensitive files in the webroot,
-for example YAML configuration files. Please refer to the [security](/topics/security) documentation for details.
+for example YAML configuration files. Please refer to the [secure coding](/developer_guides/security/secure_coding/#filesystem) documentation for details.
diff --git a/docs/en/00_Getting_Started/05_Coding_Conventions.md b/docs/en/00_Getting_Started/05_Coding_Conventions.md
index 22dc4899b..0ac492691 100644
--- a/docs/en/00_Getting_Started/05_Coding_Conventions.md
+++ b/docs/en/00_Getting_Started/05_Coding_Conventions.md
@@ -441,7 +441,7 @@ Use [ANSI SQL](http://en.wikipedia.org/wiki/SQL#Standardization) format where po
### Secure Development
-See [security](/topics/security) for conventions related to handing security permissions.
+See [security](/developer_guides/security) for conventions related to handing security permissions.
## License
diff --git a/docs/en/01_Tutorials/01_Building_A_Basic_Site.md b/docs/en/01_Tutorials/01_Building_A_Basic_Site.md
index 4c8b84819..71629f70e 100644
--- a/docs/en/01_Tutorials/01_Building_A_Basic_Site.md
+++ b/docs/en/01_Tutorials/01_Building_A_Basic_Site.md
@@ -51,7 +51,7 @@ When designing your site you should only need to modify the *mysite*, *themes* a
![](../_images/tutorial1_cms-basic.jpg)
-The CMS is the area in which you can manage your site content. You can access the cms at http://localhost/your_site_name/admin (or http://yourdomain.com/admin if you are using your own domain name). You
+The CMS is the area in which you can manage your site content. You can access the cms at `http://localhost/your_site_name/admin` (or `http://yourdomain.com/admin` if you are using your own domain name). You
will be presented with a login screen. Login using the details you provided at installation. After logging in you
should see the CMS interface with a list of the pages currently on your website (the site tree). Here you can add, delete and reorganize pages. If you need to delete, publish, or unpublish a page, first check "multi-selection" at the top. You will then be able to perform actions on any checked files using the "Actions" dropdown. Clicking on a page will open it in the page editing interface pictured below (we've entered some test content).
@@ -85,7 +85,7 @@ The page type specifies the templates used to render the page, the fields that a
**SilverStripe's friendly URLs**
While you are on the draft or live SilverStripe site, you may notice the URLs point to files that don't exist, e.g.
-http://localhost/contact or http://yourdomainname.com/about-us etc. SilverStripe uses the URL field on the Meta-Data tab of the Edit Page -> Content section to look up the appropriate
+`http://localhost/contact` or `http://yourdomainname.com/about-us` etc. SilverStripe uses the URL field on the Meta-Data tab of the Edit Page -> Content section to look up the appropriate
page in the database.
Note that if you have sub-pages, changing the Top level URL field for a page will affect the URL for all sub-pages. For example, if we changed the URL field "/about-us/" to "/about-silverstripe/" then the sub-pages URLs would now be "/about-silverstripe/URL-of-subpage/" rather than "/about-us/URL-of-subpage/".
@@ -151,7 +151,7 @@ or placed between SilverStripe template tags:
**Flushing the cache**
Whenever we edit a template file, we need to append *?flush=1* onto the end of the URL, e.g.
-http://localhost/your_site_name/?flush=1. SilverStripe stores template files in a cache for quicker load times. Whenever there are
+`http://localhost/your_site_name/?flush=1`. SilverStripe stores template files in a cache for quicker load times. Whenever there are
changes to the template, we must flush the cache in order for the changes to take effect.
## The Navigation System
@@ -348,7 +348,7 @@ Create a new file *HomePage.php* in *mysite/code*. Copy the following code into
Every page type also has a database table corresponding to it. Every time we modify the database, we need to rebuild it.
-We can do this by going to [http://localhost/your_site_name/dev/build](http://localhost/your_site_name/dev/build) (replace *localhost/your_site_name* with your own domain name if applicable).
+We can do this by going to `http://localhost/your_site_name/dev/build`.
It may take a moment, so be patient. This adds tables and fields needed by your site, and modifies any structures that have changed. It
does this non-destructively - it will never delete your data.
diff --git a/docs/en/02_Developer_Guides/00_Model/01_Data_Model_and_ORM.md b/docs/en/02_Developer_Guides/00_Model/01_Data_Model_and_ORM.md
index d7670f262..9b06821ce 100644
--- a/docs/en/02_Developer_Guides/00_Model/01_Data_Model_and_ORM.md
+++ b/docs/en/02_Developer_Guides/00_Model/01_Data_Model_and_ORM.md
@@ -12,7 +12,7 @@ information.
All data tables in SilverStripe are defined as subclasses of [api:DataObject]. The [api:DataObject] class represents a
single row in a database table, following the ["Active Record"](http://en.wikipedia.org/wiki/Active_record_pattern)
-design pattern. Database Columns are defined as [Data Types](data_types_and_casting) in the static `$db` variable
+design pattern. Database Columns are defined as [Data Types](/developer_guides/model/data_types_and_casting) in the static `$db` variable
along with any [relationships](relations) defined as `$has_one`, `$has_many`, `$many_many` properties on the class.
Let's look at a simple example:
@@ -512,7 +512,7 @@ whenever a new object is created.
Note: Alternatively you can set defaults directly in the database-schema (rather than the object-model). See
-[Data Types and Casting](data_types_and_casting) for details.
+[Data Types and Casting](/developer_guides/model/data_types_and_casting) for details.
## Subclasses
@@ -579,7 +579,7 @@ To retrieve a news article, SilverStripe joins the [api:SiteTree], [api:Page] an
## Related Documentation
-* [Data Types and Casting](../data_types_and_casting)
+* [Data Types and Casting](/developer_guides/model/data_types_and_casting)
## API Documentation
diff --git a/docs/en/02_Developer_Guides/00_Model/How_Tos/Grouping_DataObject_Sets.md b/docs/en/02_Developer_Guides/00_Model/How_Tos/Grouping_DataObject_Sets.md
index 246282fd2..5effa4379 100644
--- a/docs/en/02_Developer_Guides/00_Model/How_Tos/Grouping_DataObject_Sets.md
+++ b/docs/en/02_Developer_Guides/00_Model/How_Tos/Grouping_DataObject_Sets.md
@@ -2,7 +2,7 @@
The [api:SS_List] class is designed to return a flat list of records.
These lists can get quite long, and hard to present on a single list.
-[Pagination](/templates/how_tos/pagination) is one way to solve this problem,
+[Pagination](/developer_guides/templates/how_tos/pagination) is one way to solve this problem,
by splitting up the list into multiple pages.
In this howto, we present an alternative to pagination:
@@ -144,5 +144,5 @@ The final step is the render this into the template using the [api:GroupedList->
## Related
- * [Howto: "Pagination"](/templates/how_tos/pagination)
-
\ No newline at end of file
+ * [Howto: "Pagination"](/developer_guides/templates/how_tos/pagination)
+
diff --git a/docs/en/02_Developer_Guides/03_Forms/Field_types/03_HTMLEditorField.md b/docs/en/02_Developer_Guides/03_Forms/Field_types/03_HTMLEditorField.md
index 3ef4c9421..35c10cb11 100644
--- a/docs/en/02_Developer_Guides/03_Forms/Field_types/03_HTMLEditorField.md
+++ b/docs/en/02_Developer_Guides/03_Forms/Field_types/03_HTMLEditorField.md
@@ -7,7 +7,7 @@ Editing and formatting content is the bread and butter of every content manageme
has a tight integration with our preferred editor library, [TinyMCE](http://tinymce.com).
On top of the base functionality, we use our own insertion dialogs to ensure you can effectively select and upload
-files. In addition to the markup managed by TinyMCE, we use [shortcodes](../../extending/shortcodes) to store
+files. In addition to the markup managed by TinyMCE, we use [shortcodes](/developer_guides/extending/shortcodes) to store
information about inserted images or media elements.
The framework comes with a `[api:HTMLEditorField]` form field class which encapsulates most of the required
@@ -170,7 +170,7 @@ The `[api:HtmlEditorField]` API also handles inserting images and media files in
used both for referencing files on the webserver filesystem (through the `[api:File]` and `[api:Image]` APIs), as well
as hotlinking files from the web.
-We use [shortcodes](../../configuration/shortcodes) to store information about inserted images or media elements. The
+We use [shortcodes](/developer_guides/extending/shortcodes) to store information about inserted images or media elements. The
[api:ShortcodeParser] API post-processes the HTML content on rendering, and replaces the shortcodes accordingly. It also
takes care of care of placing the shortcode replacements relative to its surrounding markup (e.g. left/right alignment).
diff --git a/docs/en/02_Developer_Guides/03_Forms/Field_types/04_GridField.md b/docs/en/02_Developer_Guides/03_Forms/Field_types/04_GridField.md
index c16718fb1..df541e294 100644
--- a/docs/en/02_Developer_Guides/03_Forms/Field_types/04_GridField.md
+++ b/docs/en/02_Developer_Guides/03_Forms/Field_types/04_GridField.md
@@ -17,7 +17,7 @@ GridField can only be used with `$list` data sets that are of the type `SS_List`
[api:GridField] powers the automated data UI of [api:ModelAdmin]. For more information about `ModelAdmin` see the
-[Customizing the CMS](../../customizing_the_cms) guide.
+[Customizing the CMS](/developer_guides/customising_the_admin_interface) guide.
Each `GridField` is built from a number of components grouped into the [api:GridFieldConfig]. Without any components,
diff --git a/docs/en/02_Developer_Guides/03_Forms/How_Tos/04_Create_a_GridField_ActionProvider.md b/docs/en/02_Developer_Guides/03_Forms/How_Tos/04_Create_a_GridField_ActionProvider.md
index c79a1d9b8..e1745c23c 100644
--- a/docs/en/02_Developer_Guides/03_Forms/How_Tos/04_Create_a_GridField_ActionProvider.md
+++ b/docs/en/02_Developer_Guides/03_Forms/How_Tos/04_Create_a_GridField_ActionProvider.md
@@ -1,6 +1,6 @@
# How to add a custom action to a GridField row
-In a [GridField](../field_types/gridfield) instance each table row can have a
+In a [GridField](/developer_guides/forms/field_types/gridfield) instance each table row can have a
number of actions located the end of the row such as edit or delete actions.
Each action is represented as a instance of a specific class
(e.g [api:GridFieldEditButton]) which has been added to the `GridFieldConfig`
@@ -79,7 +79,7 @@ below:
While we're working on the code, to add this new action to the `GridField`, add
a new instance of the class to the [api:GridFieldConfig] object. The `GridField`
-[Reference](../field_types/gridfield) documentation has more information about
+[Reference](/developer_guides/forms/field_types/gridfield) documentation has more information about
manipulating the `GridFieldConfig` instance if required.
:::php
@@ -93,7 +93,7 @@ manipulating the `GridFieldConfig` instance if required.
$gridField->getConfig()->addComponent(new GridFieldCustomAction());
For documentation on adding a Component to a `GridField` created by `ModelAdmin`
-please view the [ModelAdmin Reference](/reference/modeladmin#gridfield-customization) section `GridField Customization`
+please view the [GridField Customization](/developer_guides/forms/how_tos/create_a_gridfield_actionprovider) section.
Now let's go back and dive through the `GridFieldCustomAction` class in more
detail.
diff --git a/docs/en/02_Developer_Guides/07_Debugging/02_URL_Variable_Tools.md b/docs/en/02_Developer_Guides/07_Debugging/02_URL_Variable_Tools.md
index ecfbecc56..3e9bb0386 100644
--- a/docs/en/02_Developer_Guides/07_Debugging/02_URL_Variable_Tools.md
+++ b/docs/en/02_Developer_Guides/07_Debugging/02_URL_Variable_Tools.md
@@ -45,8 +45,8 @@ Append the option and corresponding value to your URL in your browser's address
## Security Redirects
-You can set an URL to redirect back to after a [Security](/topics/security) action. See the section on [URL
-Redirections](security#redirect_back_to_another_page_after_login) for more information and examples.
+You can set an URL to redirect back to after a [Security](/developer_guides/security) action. See the section on [URL
+Redirections](/developer_guides/controllers/redirection) for more information and examples.
| URL Variable | | Values | | Description |
| ------------ | | ------ | | ----------- |
diff --git a/docs/en/02_Developer_Guides/08_Performance/01_Caching.md b/docs/en/02_Developer_Guides/08_Performance/01_Caching.md
index 9974ed7d0..35b8fb181 100644
--- a/docs/en/02_Developer_Guides/08_Performance/01_Caching.md
+++ b/docs/en/02_Developer_Guides/08_Performance/01_Caching.md
@@ -17,7 +17,7 @@ Flushing the various manifests is performed through a GET
parameter (`flush=1`). Since this action requires more server resources than normal requests,
executing the action is limited to the following cases when performed via a web request:
- * The [environment](../getting_started/environment_management) is in "dev mode"
+ * The [environment](/getting_started/environment_management) is in "dev mode"
* A user is logged in with ADMIN permissions
* An error occurs during startup
diff --git a/docs/en/02_Developer_Guides/09_Security/01_Access_Control.md b/docs/en/02_Developer_Guides/09_Security/01_Access_Control.md
index e6c5a2918..66ce01eb4 100644
--- a/docs/en/02_Developer_Guides/09_Security/01_Access_Control.md
+++ b/docs/en/02_Developer_Guides/09_Security/01_Access_Control.md
@@ -6,7 +6,7 @@ site you have to figure this stuff out, and it's not entirely obvious.
## Ways to restrict access
There are a number of ways to restrict access in SilverStripe. In the security tab in the CMS you can create groups
-that have access to certain parts. The options can be found on the [permissions](/reference/permission) documentation.
+that have access to certain parts. The options can be found on the [permissions](/developer_guides/security/permissions) documentation.
Once you have groups, you can set access for each page for a particular group. This can be:
* anyone;
diff --git a/docs/en/02_Developer_Guides/09_Security/02_Permissions.md b/docs/en/02_Developer_Guides/09_Security/02_Permissions.md
index 4e40af440..79ef1f6e6 100644
--- a/docs/en/02_Developer_Guides/09_Security/02_Permissions.md
+++ b/docs/en/02_Developer_Guides/09_Security/02_Permissions.md
@@ -63,7 +63,7 @@ Making this work well is a subtle business and should be discussed with a few de
* On an individual data record, $page->can("View", $member = null) and be called. If a member isn't passed, the
currently logged in member is assumed.
-* On a request, $request->hasPermission("View", $member = null) can be called. See [datamodel](/topics/datamodel) for
+* On a request, $request->hasPermission("View", $member = null) can be called. See [datamodel](/developer_guides/model/permissions) for
information on request objects.
## Special cases
diff --git a/docs/en/02_Developer_Guides/09_Security/04_Secure_Coding.md b/docs/en/02_Developer_Guides/09_Security/04_Secure_Coding.md
index 420360fcd..5d558fac0 100644
--- a/docs/en/02_Developer_Guides/09_Security/04_Secure_Coding.md
+++ b/docs/en/02_Developer_Guides/09_Security/04_Secure_Coding.md
@@ -3,7 +3,7 @@
## Introduction
This page details notes on how to ensure that we develop secure SilverStripe applications.
-See our "[Release Process](/misc/release-process#security-releases) on how to report security issues.
+See our "[Release Process](/contributing/release_process#security-releases) on how to report security issues.
## SQL Injection
@@ -49,7 +49,7 @@ result in *double escaping* and alters the actually saved data (e.g. by adding s
### Manual escaping
As a rule of thumb, whenever you're creating raw queries (or just chunks of SQL), you need to take care of escaping
-yourself. See [coding-conventions](/getting_started/coding_conventions) and [datamodel](/topics/datamodel) for ways to cast and convert
+yourself. See [coding-conventions](/getting_started/coding_conventions) and [datamodel](/developer_guides/model/data_types_and_casting) for ways to cast and convert
your data.
* `SQLQuery`
@@ -137,7 +137,7 @@ XSS attack against an admin to perform any administrative action.
If you can't trust your editors, SilverStripe must be configured to filter the content so that any javascript is
stripped out
-To enable filtering, set the HtmlEditorField::$sanitise_server_side [configuration](/topics/configuration) property to
+To enable filtering, set the HtmlEditorField::$sanitise_server_side [configuration](/developer_guides/configuration/configuration) property to
true, e.g.
HtmlEditorField::config()->sanitise_server_side = true
@@ -160,12 +160,12 @@ The `SiteTree.ExtraMeta` property uses this to limit allowed input.
It is not currently possible to allow editors to provide javascript content and yet still protect other users
from any malicious code within that javascript.
-We recommend configuring [shortcodes](/reference/shortcodes) that can be used by editors in place of using javascript directly.
+We recommend configuring [shortcodes](/developer_guides/extending/shortcodes) that can be used by editors in place of using javascript directly.
### Escaping model properties
`[api:SSViewer]` (the SilverStripe template engine) automatically takes care of escaping HTML tags from specific
-object-properties by [casting](/topics/datamodel#casting) its string value into a `[api:DBField]` object.
+object-properties by [casting](/developer_guides/model/data_types_and_casting) its string value into a `[api:DBField]` object.
PHP:
@@ -192,7 +192,7 @@ outputting through SSViewer.
### Overriding default escaping in templates
-You can force escaping on a casted value/object by using an [escape type](/topics/datamodel) method in your template, e.g.
+You can force escaping on a casted value/object by using an [escape type](/developer_guides/model/data_types_and_casting) method in your template, e.g.
"XML" or "ATT".
Template (see above):
@@ -274,7 +274,7 @@ Template:
Whenever you insert a variable into an HTML attribute within a template, use $VarName.ATT, no not $VarName.
-You can also use the built-in casting in PHP by using the *obj()* wrapper, see [datamodel](/topics/datamodel) .
+You can also use the built-in casting in PHP by using the *obj()* wrapper, see [datamodel](/developer_guides/model/data_types_and_casting).
### Escaping URLs
@@ -374,7 +374,7 @@ cast types can be found here:
* `(object)` - cast to object
Note that there is also a 'SilverStripe' way of casting fields on a class, this is a different type of casting to the
-standard PHP way. See [casting](/topics/datamodel#casting).
+standard PHP way. See [casting](/developer_guides/model/data_types_and_casting).
diff --git a/docs/en/02_Developer_Guides/12_Search/01_Searchcontext.md b/docs/en/02_Developer_Guides/12_Search/01_Searchcontext.md
index d6d951f8a..e8340971c 100644
--- a/docs/en/02_Developer_Guides/12_Search/01_Searchcontext.md
+++ b/docs/en/02_Developer_Guides/12_Search/01_Searchcontext.md
@@ -11,7 +11,7 @@ The default output of a [api:SearchContext] is either a [api:SQLQuery] object fo
[api:DataObject] instance.
-[api:SearchContext] is mainly used by [ModelAdmin](../customising_the_admin_interface/modeladmin).
+[api:SearchContext] is mainly used by [ModelAdmin](/developer_guides/customising_the_admin_interface/modeladmin).
## Usage
@@ -110,8 +110,8 @@ the `$fields` constructor parameter.
## Related Documentation
-* [ModelAdmin](../customising_the_cms/modeladmin)
-* [Tutorial: Site Search](/tutorials/site_search)
+* [ModelAdmin](/developer_guides/customising_the_admin_interface/modeladmin)
+* [Site Search](/tutorials/site_search)
## API Documentation
diff --git a/docs/en/02_Developer_Guides/13_i18n/index.md b/docs/en/02_Developer_Guides/13_i18n/index.md
index a81c8e5e2..634988c0a 100644
--- a/docs/en/02_Developer_Guides/13_i18n/index.md
+++ b/docs/en/02_Developer_Guides/13_i18n/index.md
@@ -232,7 +232,7 @@ If you want to run the text collector for just one module you can use the 'modul
`http://localhost/dev/tasks/i18nTextCollectorTask/?module=cms`
-You'll need to install PHPUnit to run the text collector (see [testing-guide](/topics/testing)).
+You'll need to install PHPUnit to run the text collector (see [testing-guide](/developer_guides/testing)).
## Module Priority
diff --git a/docs/en/02_Developer_Guides/14_Files/01_Image.md b/docs/en/02_Developer_Guides/14_Files/01_Image.md
index bd3b4537a..10e65507e 100644
--- a/docs/en/02_Developer_Guides/14_Files/01_Image.md
+++ b/docs/en/02_Developer_Guides/14_Files/01_Image.md
@@ -16,7 +16,7 @@ Allows upload of images through limiting file extensions with `setAllowedExtensi
### Inserting images into the WYSIWYG editor
-See [Topics: Rich Text Editing](/topics/rich-text-editing).
+See [Rich Text Editing](/developer_guides/forms/field_types/htmleditorfield).
### Resizing Images in PHP
diff --git a/docs/en/02_Developer_Guides/15_Customising_the_Admin_Interface/05_CMS_Architecture.md b/docs/en/02_Developer_Guides/15_Customising_the_Admin_Interface/05_CMS_Architecture.md
index 640836c15..f1c4e7f01 100644
--- a/docs/en/02_Developer_Guides/15_Customising_the_Admin_Interface/05_CMS_Architecture.md
+++ b/docs/en/02_Developer_Guides/15_Customising_the_Admin_Interface/05_CMS_Architecture.md
@@ -13,7 +13,7 @@ feel familiar to you. This is just a quick run down to get you started
with some special conventions.
For a more practical-oriented approach to CMS customizations, refer to the
-[Howto: Extend the CMS Interface](how_tos/extend_cms_interface) which builds
+[Howto: Extend the CMS Interface](/developer_guides/customising_the_admin_interface/how_tos/extend_cms_interface) which builds
## Markup and Style Conventions
@@ -89,7 +89,7 @@ The various panels and UI components within them are loosely coupled to the layo
attribute. The layout is triggered on the top element and cascades into children, with a `redraw` method defined on
each panel and UI component that needs to update itself as a result of layouting.
-Refer to [Layout reference](cms_layout) for further information.
+Refer to [Layout reference](/developer_guides/customising_the_admin_interface/cms_layout) for further information.
## Forms
@@ -148,7 +148,7 @@ correctly configured form.
[jQuery.entwine](https://github.com/hafriedlander/jquery.entwine) is a thirdparty library
which allows us to attach behaviour to DOM elements in a flexible and structured mannger.
It replaces the `behaviour.js` library used in previous versions of the CMS interface.
-See [JavaScript Development](javascript_development) for more information on how to use it.
+See [JavaScript Development](/developer_guides/customising_the_admin_interface/javascript_development) for more information on how to use it.
In the CMS interface, all entwine rules should be placed in the "ss" entwine namespace.
If you want to call methods defined within these rules outside of entwine logic,
you have to use this namespace, e.g. `$('.cms-menu').entwine('ss').collapse()`.
@@ -380,7 +380,7 @@ To avoid repetition, we've written some helpers for various use cases:
* Load into a PJAX panel: ``
* Load URL as an iframe into a popup/dialog: ``
- * GridField click to redirect to external link: `
+ * GridField click to redirect to external link: ``
## Buttons
@@ -433,7 +433,7 @@ The CMS tree for viewing hierarchical structures (mostly pages) is powered
by the [jstree](http://jstree.com) library. It is configured through
`framework/admin/javascript/LeftAndMain.Tree.js`, as well as some
HTML5 metadata generated on its container (see the `data-hints` attribute).
-For more information, see the [Howto: Customize the CMS tree](../how_tos/customize_cms_tree).
+For more information, see the [Howto: Customise the CMS tree](/developer_guides/customising_the_admin_interface/how_tos/customise_cms_tree).
Note that a similar tree logic is also used for the
form fields to select one or more entries from those hierarchies
@@ -441,7 +441,7 @@ form fields to select one or more entries from those hierarchies
## Tabs
-We're using [jQuery UI tabs](http://jqueryui.com/), but in a customized fashion.
+We're using [jQuery UI tabs](http://jqueryui.com/), but in a customised fashion.
HTML with tabs can be created either directly through HTML templates in the CMS,
or indirectly through a `[api:TabSet]` form field. Since tabsets are useable
outside of the CMS as well, the baseline application of tabs happens via
@@ -538,8 +538,8 @@ through the `PjaxResponseNegotiator` class (see above).
## Related
- * [Howto: Extend the CMS Interface](how_tos/extend_cms_interface)
- * [Howto: Customize the CMS tree](how_tos/customize_cms_tree)
+ * [Howto: Extend the CMS Interface](/developer_guides/customising_the_admin_interface/how_tos/extend_cms_interface)
+ * [Howto: Customise the CMS tree](/developer_guides/customising_the_admin_interface/how_tos/customise_cms_tree)
* [ModelAdmin API](api:ModelAdmin)
- * [Reference: Layout](cms_layout)
+ * [Reference: Layout](/developer_guides/customising_the_admin_interface/cms_layout)
* [Rich Text Editing](/developer_guides/forms/field_types/htmleditorfield)
diff --git a/docs/en/02_Developer_Guides/15_Customising_the_Admin_Interface/How_Tos/CMS_Formfield_Help_Text.md b/docs/en/02_Developer_Guides/15_Customising_the_Admin_Interface/How_Tos/CMS_Formfield_Help_Text.md
index f73d4dc5b..1de5ee3f5 100644
--- a/docs/en/02_Developer_Guides/15_Customising_the_Admin_Interface/How_Tos/CMS_Formfield_Help_Text.md
+++ b/docs/en/02_Developer_Guides/15_Customising_the_Admin_Interface/How_Tos/CMS_Formfield_Help_Text.md
@@ -27,4 +27,4 @@ more complex fields like `GridField`, `UploadField`
or `DropdownField` with the chosen.js behaviour applied.
Note: For more advanced help text we recommend using
-[Custom form field templates](../form_templates);
+[Custom form field templates](/developer_guides/forms/form_templates);
diff --git a/docs/en/02_Developer_Guides/15_Customising_the_Admin_Interface/How_Tos/Customise_CMS_Menu.md b/docs/en/02_Developer_Guides/15_Customising_the_Admin_Interface/How_Tos/Customise_CMS_Menu.md
index 5efe5f92a..597993fdf 100644
--- a/docs/en/02_Developer_Guides/15_Customising_the_Admin_Interface/How_Tos/Customise_CMS_Menu.md
+++ b/docs/en/02_Developer_Guides/15_Customising_the_Admin_Interface/How_Tos/Customise_CMS_Menu.md
@@ -43,7 +43,7 @@ In order to localize the menu title in different languages, use the
the i18n text collection.
For more information on language and translations, please refer to the
-[i18n](../../ii8n) docs.
+[i18n](/developer_guides/i18n) docs.
## Adding an external link to the menu
@@ -85,7 +85,7 @@ button configuration.
To have the link appear, make sure you add the extension to the `LeftAndMain`
class. For more information about configuring extensions see the
-[extensions reference](../extending/extensions).
+[extensions reference](/developer_guides/extending/extensions).
:::php
LeftAndMain::add_extension('CustomLeftAndMain')
diff --git a/docs/en/02_Developer_Guides/15_Customising_the_Admin_Interface/How_Tos/Extend_CMS_Interface.md b/docs/en/02_Developer_Guides/15_Customising_the_Admin_Interface/How_Tos/Extend_CMS_Interface.md
index c26fd24ef..4aa89c14e 100644
--- a/docs/en/02_Developer_Guides/15_Customising_the_Admin_Interface/How_Tos/Extend_CMS_Interface.md
+++ b/docs/en/02_Developer_Guides/15_Customising_the_Admin_Interface/How_Tos/Extend_CMS_Interface.md
@@ -11,7 +11,7 @@ into the main CMS menu. A page can be bookmarked by a CMS author through a
simple checkbox.
For a deeper introduction to the inner workings of the CMS, please refer to our
-guide on [CMS Architecture](../reference/cms-architecture).
+guide on [CMS Architecture](/developer_guides/customising_the_admin_interface/cms_architecture).
## Overload a CMS template ##
diff --git a/docs/en/03_Upgrading/index.md b/docs/en/03_Upgrading/index.md
index e051ff8ae..7075e4050 100644
--- a/docs/en/03_Upgrading/index.md
+++ b/docs/en/03_Upgrading/index.md
@@ -40,7 +40,7 @@ Never update a website on the live server without trying it on a development cop
How easy will it be to update my project? It's a fair question, and sometimes a difficult one to answer.
-* "Micro" releases (x.y.z) are explicitly backwards compatible, "minor" and "major" releases can deprecate features and change APIs (see our [/misc/release-process](release process) for details)
+* "Micro" releases (x.y.z) are explicitly backwards compatible, "minor" and "major" releases can deprecate features and change APIs (see our [release process](/contributing/release_process) for details)
* If you've made custom branches of SilverStripe core, or any thirdparty module, it's going to be harder to upgrade.
* The more custom features you have, the harder it will be to upgrade. You will have to re-test all of those features, and adapt to API changes in core.
* Customizations of a well defined type - such as custom page types or custom blog widgets - are going to be easier to upgrade than customisations that modify deep system internals like rewriting SQL queries.
diff --git a/docs/en/04_Changelogs/2.3.0.md b/docs/en/04_Changelogs/2.3.0.md
index 3d4a2bf43..60aa498e1 100644
--- a/docs/en/04_Changelogs/2.3.0.md
+++ b/docs/en/04_Changelogs/2.3.0.md
@@ -7,7 +7,7 @@
**Don't use Translatable for multilingual database content. Don't upgrade to 2.3.0 if you're already using
Translatable.**
-The [Translatable extension](/topics/translation) is currently marked as
+The [Translatable extension](/developer_guides/i18n) is currently marked as
unstable for the initial 2.3 release. **If your site uses more than one language for page content, don't upgrade to this
release.** We're working on bugfixes which will be contained in a minor 2.3.x release soon. Check our [releaseannouncements](http://groups.google.com/group/silverstripe-announce) for updates on Translatable bugfixes.
@@ -33,7 +33,7 @@ calling `dev/build`. See [#2847](http://open.silverstripe.com/ticket/2847)
### Newsletter moved into new module
-Newsletter functionality has been moved into its own module called **[newsletter](modules/newsletter)**. If you were
+Newsletter functionality has been moved into its own module called **[newsletter](http://addons.silverstripe.org/add-ons/silverstripe/newsletter)**. If you were
previously using this as a feature out of the box with SilverStripe, then you will need to download the userforms module
to continue using it.
@@ -51,9 +51,7 @@ The auth_openid module has been removed from default installation. Please insta
### GenericDataAdmin and RelatedDataEditor moved into new module
-GenericDataAdmin functionality has been moved into its own module called
-
-**[genericdataadmin](modules/genericdataadmin)**. If you were previously using this as a feature out of the box with
+GenericDataAdmin functionality has been moved into its own module. If you were previously using this as a feature out of the box with
SilverStripe, then you will need to download this module to continue using it.
### User Defined Form moved into new module
@@ -196,8 +194,8 @@ also that the DOCTYPE altering, which was a frequent cause of pain, only execute
* Removed deprecated File::loadallcontent(), use Upload class
* Image->URL returns relative instead of absolute URL. Use Image->AbsoluteURL instead.
-* Moved DataReport and SQLReport into the ecommerce module. If you're using these classes, please download the
-[ecommerce module](modules/ecommerce).
+* Moved DataReport and SQLReport into the ecommerce module. If you're using these classes, please see the
+[ecommerce modules](http://addons.silverstripe.org/add-ons?search=ecommerce&type=&compatibility%5B%5D=3.1).
### Default mysite/_config.php
@@ -2131,4 +2129,4 @@ See http://open.silverstripe.com/changeset/69688
* ![rev:59897] r52080, r52101, r52102 (merged from branches/roa)
* ![rev:59890] r52079 (merged from branches/roa)
* ![rev:59876] Merged [rev:46959]: ComplexTableField.ss now includes server-generated values in summary row cells.
- * ![rev:59875] Merged [rev:46289]: Spaces in SCRIPT_FILENAME are now replaced with underscores.
\ No newline at end of file
+ * ![rev:59875] Merged [rev:46289]: Spaces in SCRIPT_FILENAME are now replaced with underscores.
diff --git a/docs/en/04_Changelogs/2.3.2.md b/docs/en/04_Changelogs/2.3.2.md
index 58d8c1beb..e5f6df6d9 100644
--- a/docs/en/04_Changelogs/2.3.2.md
+++ b/docs/en/04_Changelogs/2.3.2.md
@@ -31,9 +31,9 @@ Here's an example of how the default Blackcandy theme was changed:
The datamodel for the Translatable extension was changed from multiple language tables to multiple rows for each
translated record in the original table. We've also introduced the concept of "Translation groups", which means not
-every translated record has to exist in a "master language". Please review our updated documentation on how to [enable Translatable](/topics/translation).
+every translated record has to exist in a "master language". Please review our updated documentation on how to [enable Translatable](/developer_guides/i18n).
-If you are upgrading an existing database with existing translations, you'll need to run our [Migration Script](/topics/translation#migrating_from_2.1_datamodel) before using the
+If you are upgrading an existing database with existing translations, you'll need migrate these before using the
database.
For in-depth discussion of the schema changes and translation groups, please refer to our developer mailinglist:
diff --git a/docs/en/04_Changelogs/2.4.0.md b/docs/en/04_Changelogs/2.4.0.md
index 8d3215fa9..76e8b9b50 100644
--- a/docs/en/04_Changelogs/2.4.0.md
+++ b/docs/en/04_Changelogs/2.4.0.md
@@ -243,7 +243,7 @@ No conversion of existing database schemas or content should be necessary.
### MySQL 5.0+ or newer required
-See [server-requirements](/installation/server-requirements).
+See [server-requirements](/getting_started/server_requirements).
### BASE_PATH constant
@@ -858,4 +858,4 @@ from the EditableFormField table.
* [rev:98944] testing framework needs to be reset to a clean state after each test: now also nested urls and redirection state will be reverted
* [rev:98897] Fixed strpos() check in BASE_URL check
* [rev:98895] Installer now opens if mod_rewrite is disabled. Using index.php instead of rewriting the URL didn't quite work with the new BASE_URL, so we need to take this case into account as well
- * [rev:98869]
\ No newline at end of file
+ * [rev:98869]
diff --git a/docs/en/04_Changelogs/2.4.1.md b/docs/en/04_Changelogs/2.4.1.md
index 8745e9c56..4c359466f 100644
--- a/docs/en/04_Changelogs/2.4.1.md
+++ b/docs/en/04_Changelogs/2.4.1.md
@@ -28,7 +28,7 @@ TRUE.
### Security: Installation in "live mode" by default
-SilverStripe used to allow setting the [environment type](/topics/environment-management) ("dev mode", "test mode" or "live
+SilverStripe used to allow setting the [environment type](/getting_started/environment_management) ("dev mode", "test mode" or "live
mode") from within the installer, through *Director::set_dev_servers()*, *Director::set_test_servers()* and
*Director::set_live_servers()*.
@@ -37,7 +37,7 @@ domain information in HTTP requests. This can lead to "live" environments being
administrative actions like *dev/build* without access control.
Note: The CMS is still secured through login in "dev mode".
-We recommend setting environment types through a [_ss_environment.php](/topics/environment-management) file instead:
+We recommend setting environment types through a [_ss_environment.php](/getting_started/environment_management) file instead:
:::php
./sscreatechangelog --version 2.4.1 --branch branches/2.4 --stopbranch tags/2.4.0
\ No newline at end of file
+./sscreatechangelog --version 2.4.1 --branch branches/2.4 --stopbranch tags/2.4.0
diff --git a/docs/en/04_Changelogs/2.4.4.md b/docs/en/04_Changelogs/2.4.4.md
index cfba072cb..1fb91d727 100644
--- a/docs/en/04_Changelogs/2.4.4.md
+++ b/docs/en/04_Changelogs/2.4.4.md
@@ -253,7 +253,7 @@ actions accessible through URL routing. Methods that need automatic CSRF
protection (most form actions) should NOT be included in $allowed_actions,
their protection is handled through request handling in the form class itself.
-See [security](/topics/security#limiting_url-access_to_controller_methods) documentation for more details.
+See [security](/developer_guides/controllers/access_control/#allowed-actions) documentation for more details.
#### Impact
@@ -361,4 +361,4 @@ Ingo Schommer
### Other
* [rev:114464] FIX: Revert last commit
- * [rev:114463] FIX: Revert last commit
\ No newline at end of file
+ * [rev:114463] FIX: Revert last commit
diff --git a/docs/en/04_Changelogs/2.4.7.md b/docs/en/04_Changelogs/2.4.7.md
index 795afe50d..158efc6e3 100644
--- a/docs/en/04_Changelogs/2.4.7.md
+++ b/docs/en/04_Changelogs/2.4.7.md
@@ -34,7 +34,7 @@ on those fields, this wasn't correctly applied. The following methods are affect
If you have used any of these transformations with untrusted values
(e.g. from a user-submitted form), please consider updating.
- More info about SilverStripe's casting logic is available in the "[security](../topics/security)" documentation.
+ More info about SilverStripe's casting logic is available in the "[security](/developer_guides/security)" documentation.
### Security: Cross-site scripting (XSS) related to page titles in the CMS
@@ -52,4 +52,4 @@ as well as the updated page title in the CMS tree after saving.
* 2012-01-31 [252e187](https://github.com/silverstripe/sapphire/commit/252e187) SECURITY Escape links for SilverStripeNavigatorItem (Ingo Schommer)
* 2012-01-31 [5fe7091](https://github.com/silverstripe/sapphire/commit/5fe7091) SECURITY Sanitize messages passed to generated JS calls in FormResponse::status_message(), e.g. to avoid XSS on 'Successfully published <page title>' messages (Ingo Schommer)
* 2011-09-24 [d0af084](https://github.com/silverstripe/sapphire/commit/d0af084) Fixes tag syntax (should end with %>, not >%) (simonwelsh)
- * 2011-06-09 [aa74811](https://github.com/silverstripe/silverstripe-cms/commit/aa74811) CZ translation for tinymce_ssbuttons plugin (Ladislav Kubes)
\ No newline at end of file
+ * 2011-06-09 [aa74811](https://github.com/silverstripe/silverstripe-cms/commit/aa74811) CZ translation for tinymce_ssbuttons plugin (Ladislav Kubes)
diff --git a/docs/en/04_Changelogs/3.0.0.md b/docs/en/04_Changelogs/3.0.0.md
index e310842ff..ecfa147f3 100644
--- a/docs/en/04_Changelogs/3.0.0.md
+++ b/docs/en/04_Changelogs/3.0.0.md
@@ -41,7 +41,7 @@ The detailed change logs are broken down by pre-release:
### Common Upgrade Tasks
* Rename foder from `sapphire/`to `framework/`, replace own paths with `FRAMEWORK_DIR` (in PHP) or `$ModulePath(framework)` (in templates). Update paths in `.htaccess` or `web.config` ([more](/changelogs/3.0.0#sapphire-rename))
- * Replace `<% control %>` in your templates with `<% loop %>` and `<% with %>` ([more](/reference/templates-upgrading-guide#control))
+ * Replace `<% control %>` in your templates with `<% loop %>` and `<% with %>` ([more](/developer_guides/templates))
* Replace `DataObjectSet` with `DataList` or `ArrayList` ([more](/changelogs/3.0.0#deprecated-classes))
* Rewrite `ComplexTableField` and `DataObjectManager` instances to `GridField` ([more](/changelogs/3.0.0#gridfield-replacement-for-tablelistfield-and-complextablefield-gridfield))
* Rewrite `Director::redirect()` and `Director::redirectBack()` calls ([more](/changelogs/3.0.0#director-static-functions-deprecated-e-g-redirect-and-redirectback)
@@ -61,7 +61,7 @@ which points to the framework directory, and in the templates you can use `$Modu
### GridField: Replacement for TableListField and ComplexTableField [gridfield]###
-We have a new component for managing lists of objects: The `[GridField](/reference/grid-field)`.
+We have a new component for managing lists of objects: The `[GridField](/developer_guides/forms/field_types/gridfield)`.
It's a substantial rewrite of the features previously captured by `TableListField`,
`ComplexTableField`, `HasManyComplexTableField` and `ManyManyComplexTableField`.
@@ -97,7 +97,7 @@ Upgrade example: Relationship editing
// after
$field = new GridField('MyRelation', null, $myRecord->MyRelation(), GridFieldConfig_RelationEditor::create());
-More information is available in the [GridField documentation](/reference/grid-field).
+More information is available in the [GridField documentation](/developer_guides/forms/field_types/gridfield).
### Object static functions replaced with new Config class {#new-config}
Static functions for getting a static variable on the `Object` class have been deprecated,
@@ -215,7 +215,7 @@ for the presence of records, please call the count() method on the `DataList`:
if(!DataObject::get('SiteTree', '"ParentID" = 5')->count()) echo "Page 5 has no children";
Beware that `DataList->remove()` will delete an entry from the database.
-See the ["datamodel" documentation](../topics/datamodel) for more details.
+See the ["datamodel" documentation](/developer_guides/model/data_model_and_orm) for more details.
### New ORM: Changes to manipulation of SQL queries {#new-orm-sql-queries}
@@ -334,8 +334,7 @@ Now in SilverStripe 3.x, nested structures are arrays:
### New template engine [templates]###
The template engine has been completely rewritten, and although it is generally backward compatible, there are new features
-and some features have been deprecated. See the [template upgrading guide](/reference/templates-upgrading-guide) and the
-[template reference](/reference/templates) for more information.
+and some features have been deprecated. See the [template reference](/developer_guides/templates) for more information.
### Removed view-specific accessors from ViewableData ####
@@ -343,7 +342,7 @@ Several methods in ViewableData that were originally added to expose values to t
in order to stop polluting the namespace. These were sometimes called by project-specific PHP code too, and that code
will need re-working.
-See the [template upgrading guide](/reference/templates-upgrading-guide) for a list of methods and their replacements.
+See the [template reference](/developers_guides/templates) for a list of method replacements.
### New user interface for CMS [ui]###
@@ -354,9 +353,9 @@ the detailed changelog for this release. Many interface components have changed
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`
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/extend-cms-interface),
-["CSS" guide](../topics/css), ["JavaScript" guide](../topics/javascript) and
-["CMS Architecture" guide](/reference/cms-architecture) to get you started.
+based JavaScript logic. Have a look at the new ["Extending the CMS" guide](/developer_guides/customising_the_admin_interface/how_tos/extend_cms_interface),
+["CSS" guide](/developer_guides/customising_the_admin_interface/typography), ["JavaScript" guide](/developer_guides/customising_the_admin_interface/javascript_development) and
+["CMS Architecture" guide](/developer_guides/customising_the_admin_interface/cms_architecture) to get you started.
### New tree library [tree]###
@@ -436,9 +435,9 @@ ModelAdmin has been substanially rewritten to natively support the `[api:GridFie
for more flexible data presentation (replacing `[api:ComplexTableField]`),
and the `[api:DataList]` API for more expressive querying.
-If you have overwritten any methods in the class, customized templates,
+If you have overwritten any methods in the class, customised templates,
or implemented your own `$collection_controller_class`/`$record_controller_class` controllers,
-please refer to the new [ModelAdmin documentation](/reference/modeladmin)
+please refer to the new [ModelAdmin documentation](/developer_guides/customising_the_admin_interface/modeladmin)
on details for how to achieve the same goals in the new class.
### Stylesheet preprocessing via SCSS and the "compass" module [scss]###
diff --git a/docs/en/04_Changelogs/3.0.4.md b/docs/en/04_Changelogs/3.0.4.md
index ced2806cc..7febcbf6f 100644
--- a/docs/en/04_Changelogs/3.0.4.md
+++ b/docs/en/04_Changelogs/3.0.4.md
@@ -30,7 +30,7 @@ state of a database record.
Fix: Apply 3.0.4 update. In addition, we strongly recommend to define `$allowed_actions`
on all controller classes to ensure the intentions are clearly communicated.
-Read more about `$allowed_actions` in our "[controller](/topics/controller/#access-control)"
+Read more about `$allowed_actions` in our "[controller](/developer_guides/controllers/access_control)"
docs.
Reporter: Zann St Pierre
@@ -48,7 +48,7 @@ configuration values added in your own project, or a third party module.
Resolution: Update your `.htaccess` file (for Apache), or your `web.config` file (for IIS)
with the new files from the project root, and reapply any customizations you've made.
Follow the [general upgrade instructions](/installation/upgrading).
-The [nginx installation instructions](/installation/nginx)
+The [nginx installation instructions](/getting_started/installation/how_to/configure_nginx)
have also been updated to reflect those changes.
### Security: Information exposure through web access on composer files
@@ -64,8 +64,8 @@ versions of SilverStripe.
Resolution: Update your `.htaccess` file (for Apache), or your `web.config` file (for IIS)
with the new files from the project root, and reapply any customizations you've made.
-Follow the [general upgrade instructions](/installation/upgrading).
-The [nginx installation instructions](/installation/nginx)
+Follow the [general upgrade instructions](/upgrading).
+The [nginx installation instructions](/getting_started/installation/how_to/configure_nginx)
have also been updated to reflect those changes.
@@ -239,4 +239,4 @@ now deny access to methods defined on the controller, unless this class also has
* 2011-04-20 [33a1fc7](https://github.com/silverstripe/sapphire/commit/33a1fc7) Fixed operation of inlined images in Mailer, when no inlined images actually attached. (Carlos Barberis)
* 2011-04-18 [f8206d1](https://github.com/silverstripe/sapphire/commit/f8206d1) Prevent notice-level error in Session code when non-array is turned into an array. (Sam Minnee)
* 2011-03-15 [6fcbad1](https://github.com/silverstripe/sapphire/commit/6fcbad1) Updated SilverStripe error handler so that log_errors still works. (Sam Minnee)
- * 2011-03-11 [82988d4](https://github.com/silverstripe/sapphire/commit/82988d4) Better error message when 401 response is corrupted. (Sam Minnee)
\ No newline at end of file
+ * 2011-03-11 [82988d4](https://github.com/silverstripe/sapphire/commit/82988d4) Better error message when 401 response is corrupted. (Sam Minnee)
diff --git a/docs/en/04_Changelogs/3.1.0.md b/docs/en/04_Changelogs/3.1.0.md
index c5fd8ab15..d0225f488 100644
--- a/docs/en/04_Changelogs/3.1.0.md
+++ b/docs/en/04_Changelogs/3.1.0.md
@@ -34,7 +34,7 @@
* Optional integration with ImageMagick as a new image manipulation backend
* Support for PHP 5.4's built-in webserver
* Support for [Composer](http://getcomposer.org) dependency manager (also works with 3.0)
- * Added support for filtering incoming HTML from TinyMCE (disabled by default, see [security](/topics/security))
+ * Added support for filtering incoming HTML from TinyMCE (disabled by default, see [security](/developer_guides/security))
* Behaviour testing support through [Behat](http://behat.org), with CMS test coverage
(see the [SilverStripe Behat Extension]() for details)
@@ -48,7 +48,7 @@ it can facilitate [denial-of-service attacks](https://en.wikipedia.org/wiki/Deni
To prevent this, main.php now checks and only allows the flush parameter in the following cases:
- * The [environment](/topics/environment-management) is in "dev mode"
+ * The [environment](/getting_started/environment_management) is in "dev mode"
* A user is logged in with ADMIN permissions
* An error occurs during startup
@@ -233,7 +233,7 @@ needs to be explicitly denied through these configuration files (see the [3.0.5
for details.
-For more information about how to use the config system, see the ["Configuration" topic](/topic/configuration).
+For more information about how to use the config system, see the ["Configuration" topic](/developer_guides/configuration).
### Deny URL access if `Controller::$allowed_actions` is undefined or empty array
@@ -253,7 +253,7 @@ by setting the `RequestHandler.require_allowed_actions` config value to `false`
This applies to anything extending `RequestHandler`, so please check your `Form` and `FormField`
subclasses as well. Keep in mind, action methods as denoted through `FormAction` names should NOT
be mentioned in `$allowed_actions` to avoid CSRF issues.
-Please review all rules governing allowed actions in the ["controller" topic](/topics/controller).
+Please review all rules governing allowed actions in the ["controller" topic](/developer_guides/controllers/access_control/#allowed-actions).
### Removed support for "*" rules in `Controller::$allowed_actions`
@@ -272,7 +272,7 @@ you'll need to specificy each accessible action individually.
}
Please review all rules governing allowed actions in the
-["controller" topic](/topics/controller).
+["controller" topic](/developer_guides/controllers/access_control/#allowed-actions).
### Removed support for overriding rules on parent classes through `Controller::$allowed_actions`
@@ -295,7 +295,7 @@ which now have to be listed in the `$allowed_actions` specifically.
It also restricts `Extension` classes applied to controllers, which now
can only grant or deny access or methods they define themselves.
-New approach with the [Config API](/topics/configuration)
+New approach with the [Config API](/developer_guides/configuration/configuration)
:::php
class MySubController extends MyController {
@@ -309,7 +309,7 @@ New approach with the [Config API](/topics/configuration)
}
Please review all rules governing allowed actions in the
-["controller" topic](/topics/controller).
+["controller" topic](/developer_guides/controllers/access_control/#allowed-actions).
### Grouped CMS Buttons
@@ -377,7 +377,7 @@ Since `GridField` is used in `ModelAdmin`, this change will affect both classes.
return Permission::check('CMS_ACCESS_CMSMain', 'any', $member);
}
-You can also implement [custom permission codes](/topics/permissions).
+You can also implement [custom permission codes](/developer_guides/security/permissions).
For 3.1.0 stable, we aim to further simplify the permission definitions,
in order to reduce the boilerplate code required to get a model editable in the CMS.
@@ -493,7 +493,7 @@ you can enable those warnings and future-proof your code already.
Hierarchy.node_threshold_leaf`. Set to `0` to show tree unrestricted.
* `Object` now has `beforeExtending` and `afterExtending` to inject behaviour around method extension.
`DataObject` also has `beforeUpdateCMSFields` to insert fields between automatic scaffolding and extension
- by `updateCMSFields`. See the [DataExtension Reference](/reference/dataextension) for more information.
+ by `updateCMSFields`. See the [DataExtension Reference](/developer_guides/model/extending_dataobjects) for more information.
* Magic quotes is now deprecated. Will trigger user_error on live sites, as well as an error on new installs
* Support for Apache 1.x is removed.
* Forms created in the CMS should now be instances of a new `CMSForm` class,
diff --git a/docs/en/04_Changelogs/3.1.13.md b/docs/en/04_Changelogs/3.1.13.md
index 741344d98..5625474f3 100644
--- a/docs/en/04_Changelogs/3.1.13.md
+++ b/docs/en/04_Changelogs/3.1.13.md
@@ -6,7 +6,7 @@ This release includes several security fixes to prevent HTTP Hostname injection,
as well as a fix for flush or isDev querystring parameters
to be set via unauthenticated requests.
-Users upgrading from 3.1.12 or below should read the [security documentation](/security/secure_coding)
+Users upgrading from 3.1.12 or below should read the [security documentation](/developer_guides/security/secure_coding)
on securing their site.
### Security
diff --git a/docs/en/04_Changelogs/3.1.7.md b/docs/en/04_Changelogs/3.1.7.md
index df2c17287..2148e40be 100644
--- a/docs/en/04_Changelogs/3.1.7.md
+++ b/docs/en/04_Changelogs/3.1.7.md
@@ -14,7 +14,7 @@ will be disabled. If multiple authenticators are used, only supported ones will
In order to create a CMS supported version the `Authenticator::supports_cms` and `Authenticator::get_cms_login_form`
methods should be overridden. See `[api:MemberAuthenticator]` for an example implementation.
-Check the documentation at the [Authentication](/topics/authentication) topic.
+Check the documentation at the [Authentication](/developer_guides/security/authentication) topic.
### Default Admin
diff --git a/docs/en/04_Changelogs/alpha/3.0.0-alpha2.md b/docs/en/04_Changelogs/alpha/3.0.0-alpha2.md
index 45776ac4b..7b4fb4770 100644
--- a/docs/en/04_Changelogs/alpha/3.0.0-alpha2.md
+++ b/docs/en/04_Changelogs/alpha/3.0.0-alpha2.md
@@ -27,14 +27,14 @@ DataList handles filtering in a more fluent way than using raw where calls. The
When this query is executed it will contain all members with firstname of Sam but not with lastname Magnusson sorted by age ascending
-For more information see documentation at [/topics/datamodel](../../topics/datamodel).
+For more information see documentation at [datamodel](/developer_guides/model/searchfilters).
### Grid Field
GridField has changed since 3.0.0-alpha1 to be more flexible. Any previous implementation are broken
and need to be changed according to the new API.
-For implementation details see documentation at [/reference/grid-field](../../reference/grid-field).
+For implementation details see documentation at [grid-field](/developer_guides/forms/field_types/gridfield).
## Upgrading ##
@@ -327,4 +327,4 @@ See [3.0.0 upgrading guide](../3.0.0) for further details.
* 2011-12-18 [05d19d9](https://github.com/silverstripe/sapphire/commit/05d19d9) Revert "MINOR Use json_decode() instead of the Services_JSON class if the function exists." - it breaks assumptions around Convert::json2array() only converting the *first* level of an object structure into an array, which in turn fails CMSMainTest and LeftAndMainTest (as well as some UI functionality relying on it). In order to introduce this change we have to fix these issues in a backwards compatible manner. (Ingo Schommer)
* 2011-12-15 [40f0fde](https://github.com/silverstripe/sapphire/commit/40f0fde) Adding in the 'RS' => "Republic of Serbia", into this list of Counties. Will continue to add more as I come across countries not added. (Colin Burns)
* 2011-12-09 [a642a29](https://github.com/silverstripe/sapphire/commit/a642a29) DOC Update the documentation for the datamodel to describe the SS_List sort, filter and exclude methods (Stig Lindqvist)
- * 2011-11-14 [77f5ea7](https://github.com/silverstripe/sapphire/commit/77f5ea7) Fix for bug when destroying a session with a domain cookie. See http://www.silverstripe.org/general-questions/show/18539 for more details (joaosantos81)
\ No newline at end of file
+ * 2011-11-14 [77f5ea7](https://github.com/silverstripe/sapphire/commit/77f5ea7) Fix for bug when destroying a session with a domain cookie. See http://www.silverstripe.org/general-questions/show/18539 for more details (joaosantos81)
diff --git a/docs/en/04_Changelogs/rc/3.0.6-rc1.md b/docs/en/04_Changelogs/rc/3.0.6-rc1.md
index e1dc17dc8..78cd15223 100644
--- a/docs/en/04_Changelogs/rc/3.0.6-rc1.md
+++ b/docs/en/04_Changelogs/rc/3.0.6-rc1.md
@@ -15,7 +15,7 @@ it can facilitate [denial-of-service attacks](https://en.wikipedia.org/wiki/Deni
To prevent this, main.php now checks and only allows the flush parameter in the following cases:
- * The [environment](/topics/environment-management) is in "dev mode"
+ * The [environment](/getting_started/environment_management) is in "dev mode"
* A user is logged in with ADMIN permissions
* An error occurs during startup
diff --git a/docs/en/04_Changelogs/rc/3.1.7-rc1.md b/docs/en/04_Changelogs/rc/3.1.7-rc1.md
index 3e8219d0c..036b3842d 100644
--- a/docs/en/04_Changelogs/rc/3.1.7-rc1.md
+++ b/docs/en/04_Changelogs/rc/3.1.7-rc1.md
@@ -14,7 +14,7 @@ will be disabled. If multiple authenticators are used, only supported ones will
In order to create a CMS supported version the `Authenticator::supports_cms` and `Authenticator::get_cms_login_form`
methods should be overridden. See `[api:MemberAuthenticator]` for an example implementation.
-Check the documentation at the [Authentication](/topics/authentication) topic.
+Check the documentation at the [Authentication](/developer_guides/security/authentication) topic.
### Default Admin
diff --git a/docs/en/05_Contributing/01_Code.md b/docs/en/05_Contributing/01_Code.md
index ee85ab1a6..0123b9e03 100644
--- a/docs/en/05_Contributing/01_Code.md
+++ b/docs/en/05_Contributing/01_Code.md
@@ -149,7 +149,7 @@ After you have edited the file, GitHub will offer to create a pull request for y
[API documentation](http://api.silverstripe.org/3.1/) for good examples.
* Check and update documentation on [doc.silverstripe.org](http://doc.silverstripe.org). Check for any references to functionality deprecated or extended through your patch. Documentation changes should be included in the patch.
* If you get stuck, please post to the [forum](http://silverstripe.org/forum) or for deeper core problems, to the [core mailinglist](https://groups.google.com/forum/#!forum/silverstripe-dev)
-* When working with the CMS, please read the ["CMS Architecture Guide"](cms_architecture) first
+* When working with the CMS, please read the ["CMS Architecture Guide"](/developer_guides/customising_the_admin_interface/cms_architecture) first
## Commit Messages