Skip to content
This repository
Browse code

Small text changes, added api links, cont. updating images for tutori…

…als, fixed tutorials from member feedback
  • Loading branch information...
commit f3ac57394d3e1f7e6003d5b32d409ddba68900b8 1 parent e9f20cf
authored chillu committed

Showing 79 changed files with 718 additions and 643 deletions. Show diff stats Hide diff stats

  1. 2  docs/en/reference/advanced-templates.md
  2. 2  docs/en/reference/bbcode.md
  3. 2  docs/en/reference/built-in-page-controls.md
  4. 20  docs/en/reference/complextablefield.md
  5. 24  docs/en/reference/database-structure.md
  6. 12  docs/en/reference/dataobject.md
  7. 26  docs/en/reference/dataobjectdecorator.md
  8. 6  docs/en/reference/dataobjectset.md
  9. 10  docs/en/reference/director.md
  10. 4  docs/en/reference/execution-pipeline.md
  11. 2  docs/en/reference/form-field-types.md
  12. 4  docs/en/reference/image.md
  13. 2  docs/en/reference/index.md
  14. 23  docs/en/reference/member.md
  15. 2  docs/en/reference/modeladmin.md
  16. 6  docs/en/reference/partial-caching.md
  17. 6  docs/en/reference/permission.md
  18. 3  docs/en/reference/requirements.md
  19. 15  docs/en/reference/restfulservice.md
  20. 8  docs/en/reference/rssfeed.md
  21. 18  docs/en/reference/searchcontext.md
  22. 12  docs/en/reference/site-reports.md
  23. 15  docs/en/reference/siteconfig.md
  24. 18  docs/en/reference/sqlquery.md
  25. 8  docs/en/reference/staticpublisher.md
  26. 17  docs/en/reference/tablefield.md
  27. 24  docs/en/reference/tablelistfield.md
  28. 14  docs/en/reference/typography.md
  29. 18  docs/en/reference/urlvariabletools.md
  30. 4  docs/en/reference/versioned.md
  31. 28  docs/en/topics/access-control.md
  32. 13  docs/en/topics/configuration.md
  33. 28  docs/en/topics/controller.md
  34. 5  docs/en/topics/css.md
  35. 6  docs/en/topics/data-types.md
  36. 68  docs/en/topics/datamodel.md
  37. 8  docs/en/topics/debugging.md
  38. 6  docs/en/topics/directory-structure.md
  39. 16  docs/en/topics/email.md
  40. 28  docs/en/topics/environment-management.md
  41. 11  docs/en/topics/error-handling.md
  42. 12  docs/en/topics/extending-the-cms.md
  43. 4  docs/en/topics/form-validation.md
  44. 11  docs/en/topics/forms.md
  45. 16  docs/en/topics/i18n.md
  46. 6  docs/en/topics/index.md
  47. 14  docs/en/topics/javascript.md
  48. 9  docs/en/topics/module-development.md
  49. 5  docs/en/topics/modules.md
  50. 13  docs/en/topics/page-types.md
  51. 9  docs/en/topics/search.md
  52. 23  docs/en/topics/security.md
  53. 4  docs/en/topics/templates.md
  54. 8  docs/en/topics/testing/create-functional-test.md
  55. 10  docs/en/topics/testing/create-sapphire-test.md
  56. 6  docs/en/topics/testing/email-sending.md
  57. 23  docs/en/topics/theme-development.md
  58. 2  docs/en/topics/themes.md
  59. 84  docs/en/topics/translation.md
  60. 74  docs/en/topics/widgets.md
  61. 4  docs/en/tutorials/2-extending-a-basic-site.md
  62. 65  docs/en/tutorials/4-site-search.md
  63. 415  docs/en/tutorials/5-dataobject-relationship-management.md
  64. BIN  docs/en/tutorials/_images/gsoc-mentor-creation.jpg
  65. BIN  docs/en/tutorials/_images/gsoc-mentor-student-selection.jpg
  66. BIN  docs/en/tutorials/_images/gsoc-mentor.jpg
  67. BIN  docs/en/tutorials/_images/gsoc-module-creation.jpg
  68. BIN  docs/en/tutorials/_images/gsoc-project-creation.jpg
  69. BIN  docs/en/tutorials/_images/gsoc-project-module-selection.jpg
  70. BIN  docs/en/tutorials/_images/gsoc-project-student-selection.jpg
  71. BIN  docs/en/tutorials/_images/gsoc-project.jpg
  72. BIN  docs/en/tutorials/_images/gsoc-projects-table.jpg
  73. BIN  docs/en/tutorials/_images/gsoc-student-creation.jpg
  74. BIN  docs/en/tutorials/_images/searchform-small.jpg
  75. BIN  docs/en/tutorials/_images/searchform.jpg
  76. BIN  docs/en/tutorials/_images/searchresults-small.jpg
  77. BIN  docs/en/tutorials/_images/searchresults.jpg
  78. BIN  docs/en/tutorials/_images/tutorial5-completecode-blackcandy.zip
  79. BIN  docs/en/tutorials/_images/tutorial5-completecode.zip
2  docs/en/reference/advanced-templates.md
Source Rendered
@@ -406,7 +406,7 @@ to debug.
406 406
 ## Related
407 407
 * [Templates](/topics/templates)
408 408
 * [Themes](/topics/themes)
409  
-* [Developing Themes](theme-development)
  409
+* [Developing Themes](/topics/theme-development)
410 410
 * [Widgets](/topics/widgets)
411 411
 * [Images](/reference/image)
412 412
 * [Built in page controls](/reference/built-in-page-controls)
2  docs/en/reference/bbcode.md
Source Rendered
@@ -9,7 +9,7 @@ BBCode is used by default in the [blog](http://silverstripe.org/blog-module) and
9 9
 
10 10
 To add bbcode parsing to a template, instead of $Content use:
11 11
 
12  
-	:::php
  12
+	:::ss
13 13
 	$Content.Parse(BBCodeParser)
14 14
 
15 15
 
2  docs/en/reference/built-in-page-controls.md
Source Rendered
@@ -60,7 +60,7 @@ SilverStripe supports a simple set of conditional logic
60 60
 	<% end_if %>
61 61
 
62 62
 
63  
-See more information on conditional logic on [templates](templates).
  63
+See more information on conditional logic on [templates](/topics/templates).
64 64
 
65 65
 ### Site wide settings
66 66
 
20  docs/en/reference/complextablefield.md
Source Rendered
@@ -15,7 +15,7 @@ See `[api:TableListField]`.
15 15
 
16 16
 ## Setting Parent/Child-Relations
17 17
 
18  
-ComplexTableField tries to determine the parent-relation automatically by looking at the $has_one property on the listed
  18
+`[api:ComplexTableField]` tries to determine the parent-relation automatically by looking at the $has_one property on the listed
19 19
 child, or the record loaded into the surrounding form (see getParentClass() and getParentIdName()). You can force a
20 20
 specific parent relation:
21 21
 
@@ -62,18 +62,18 @@ You can override this behaviour in various ways:
62 62
 
63 63
 If you don't want several functions to appear (e.g. no add-link), there's several ways:
64 64
 
65  
-*  Use ComplexTableField->setPermissions(array("show","edit")) to limit the functionality without touching the template
  65
+*  Use `ComplexTableField->setPermissions(array("show","edit"))` to limit the functionality without touching the template
66 66
 (more secure). Possible values are "show","edit", "delete" and "add".  
67 67
 
68  
-*  Subclass ComplexTableField and override the rendering-mechanism
69  
-*  Use ComplexTableField->setTemplate() and ComplexTableField->setTemplatePopup() to provide custom templates
  68
+*  Subclass `[api:ComplexTableField]` and override the rendering-mechanism
  69
+*  Use `ComplexTableField->setTemplate()` and `ComplexTableField->setTemplatePopup()` to provide custom templates
70 70
 
71 71
 ### Customising fields and Requirements in the popup
72 72
 
73 73
 There are several ways to customise the fields in the popup. Often you would want to display more information in the
74 74
 popup as there is more real-estate for you to play with. 
75 75
 
76  
-ComplexTableField gives you several options to do this. You can either
  76
+`[api:ComplexTableField]` gives you several options to do this. You can either
77 77
 
78 78
 *  Pass a FieldSet in the constructor.
79 79
 *  Pass a String in the constructor. 
@@ -83,7 +83,7 @@ The second will call the String as a method on the source class (Which should re
83 83
 Popup. 
84 84
 
85 85
 You can also customise Javascript which is loaded for the Lightbox. As Requirements::clear() is called when the popup is
86  
-instantiated, ComplexTableField will look for a function to gather any specific requirements that you might need on your
  86
+instantiated, `[api:ComplexTableField]` will look for a function to gather any specific requirements that you might need on your
87 87
 source class. (e.g. Inline Javascript or styling).
88 88
 
89 89
 For this, create a function called "getRequirementsForPopup". 
@@ -116,11 +116,11 @@ You'll have to do something like this in your form:
116 116
 
117 117
 You have to hack in an ID on the form, as the CMS forms have this, and front end forms usually do not.
118 118
 
119  
-It's not a perfect solution, but it works relatively well to get a simple ComplexTableField up and running on the front
  119
+It's not a perfect solution, but it works relatively well to get a simple `[api:ComplexTableField]` up and running on the front
120 120
 end.
121 121
 
122 122
 To come: Make it a lot more flexible so tables can be easily used on the front end. It also needs to be flexible enough
123  
-to use a popup as well, out of the box.
  123
+to use a popup as well, out of the box.
124 124
 
125 125
 ## Subclassing
126 126
 
@@ -144,7 +144,7 @@ Most of the time, you need to override the following methods:
144 144
 *  Find a less fragile solution for accessing this field through the main controller and ReferencedField, e.g. build a
145 145
 seperate CTF-instance (doesn't necessarly have to be connected to the original by ReferencedField)
146 146
 *  Control width/height of popup by constructor (hardcoded at the moment)
147  
-*  Integrate search from MemberTableField.php directly on ComplexTableField
  147
+*  Integrate search from MemberTableField.php directly on `[api:ComplexTableField]`
148 148
 *  Less performance-hungry implementation of detail-view paging (don't return all items on a single view)
149 149
 *  Use automatic has-many and many-many functions to return a ComponentSet rather than building the join manually
150  
-*  Javascript/Ajax-Sorting (see http://www.activewidgets.com/grid/ and http://openrico.org/rico/livegrid.page)
  150
+*  Javascript/Ajax-Sorting (see [http://www.activewidgets.com/grid/](http://www.activewidgets.com/grid/) and [http://openrico.org/rico/livegrid.page](http://openrico.org/rico/livegrid.page))
24  docs/en/reference/database-structure.md
Source Rendered
@@ -5,7 +5,7 @@ opting for "convention over configuration".  This page details what that databas
5 5
 
6 6
 ## Base tables
7 7
 
8  
-Each direct sub-class of DataObject will have its own table.
  8
+Each direct sub-class of `[api:DataObject]` will have its own table.
9 9
 
10 10
 The following fields are always created.
11 11
 
@@ -36,21 +36,21 @@ data sub-classed objects across **multiple tables**.
36 36
 
37 37
 For example, suppose we have the following set of classes:
38 38
 
39  
-*  Class SiteTree extends DataObject: Title, Content fields
40  
-*  Class Page extends SiteTree: Abstract field
41  
-*  Class NewsSection extends SiteTree: *No special fields*
42  
-*  Class NewsArticle extend Page: ArticleDate field
  39
+*  Class `[api:SiteTree]` extends `[api:DataObject]`: Title, Content fields
  40
+*  Class `[api:Page]` extends `[api:SiteTree]`: Abstract field
  41
+*  Class NewsSection extends `[api:SiteTree]`: *No special fields*
  42
+*  Class NewsArticle extend `[api:Page]`: ArticleDate field
43 43
 
44 44
 The data for the following classes would be stored across the following tables:
45 45
 
46  
-*  SiteTree
  46
+*  `[api:SiteTree]`
47 47
     * ID: Int
48 48
     * ClassName: Enum('SiteTree', 'Page', 'NewsArticle')
49 49
     * Created: Datetime
50 50
     * LastEdited: Datetime
51 51
     * Title: Varchar
52 52
     * Content: Text
53  
-*  Page
  53
+*  `[api:Page]`
54 54
     * ID: Int
55 55
     * Abstract: Text
56 56
 *  NewsArticle
@@ -59,16 +59,16 @@ The data for the following classes would be stored across the following tables:
59 59
 
60 60
 The way it works is this:
61 61
 
62  
-*  "Base classes" are direct sub-classes of DataObject.  They are always given a table, whether or not they have special
63  
-fields.  This is called the "base table"
  62
+*  "Base classes" are direct sub-classes of `[api:DataObject]`.  They are always given a table, whether or not they have
  63
+special fields.  This is called the "base table"
64 64
 *  The base table's ClassName field is set to class of the given record.  It's an enumeration of all possible
65 65
 sub-classes of the base class (including the base class itself)
66 66
 *  Each sub-class of the base object will also be given its own table, *as long as it has custom fields*.  In the
67 67
 example above, NewsSection didn't have its own data and so an extra table would be redundant.
68 68
 *  In all the tables, ID is the primary key.  A matching ID number is used for all parts of a particular record: 
69  
-record #2 in Page refers to the same object as record #2 in SiteTree.
  69
+record #2 in Page refers to the same object as record #2 in `[api:SiteTree]`.
70 70
 
71  
-To retrieve a news article, SilverStripe joins the SiteTree, Page and NewsArticle tables by their ID fields.  We use a
  71
+To retrieve a news article, SilverStripe joins the `[api:SiteTree]`, `[api:Page]` and NewsArticle tables by their ID fields.  We use a
72 72
 left-join for robustness; if there is no matching record in Page, we can return a record with a blank Article field.
73 73
 
74 74
 ## Staging and versioning
@@ -126,4 +126,4 @@ other database platforms if we chose to support them.
126 126
 *  We'd like to support more than just MySQL, however, there needs to be a pretty good reason for doing so since it will
127 127
 become something that needs to be supported for the rest of SilverStripe's life and could easily become an albatross. 
128 128
 On the cards are MS SQL, PostgreSQL and SQLite.
129  
-*  It could be desireable to implement a non-repeating auto-numbering system.
  129
+*  It could be desirable to implement a non-repeating auto-numbering system.
12  docs/en/reference/dataobject.md
Source Rendered
@@ -12,7 +12,7 @@ A single database record & abstract class for the data-access-model.
12 12
 
13 13
 ## Basics
14 14
 
15  
-The call to `DataObject->getCMSFields()` is the centerpiece of every data administration interface in Silverstripe,
  15
+The call to `DataObject->getCMSFields()` is the centerpiece of every data administration interface in SilverStripe,
16 16
 which returns a `[api:FieldSet]`''.
17 17
 
18 18
 	:::php
@@ -33,8 +33,6 @@ These calls retrieve a `[api:FieldSet]` for the area where you intend to work wi
33 33
 
34 34
  * Requirements: SilverStripe 2.3.*
35 35
 
36  
-// bla
37  
-
38 36
 	:::php
39 37
 	$fields = singleton('MyDataObject')->getCMSFields();
40 38
 
@@ -82,8 +80,8 @@ Example: Simple Definition
82 80
 	}
83 81
 
84 82
 
85  
-Searchable fields will be appear in the search interface with a default form field (usually a TextField) and a default
86  
-search filter assigned (usually an ExactMatchFilter). To override these defaults, you can specify additional information
  83
+Searchable fields will be appear in the search interface with a default form field (usually a `[api:TextField]`) and a default
  84
+search filter assigned (usually an `[api:ExactMatchFilter]`). To override these defaults, you can specify additional information
87 85
 on `$searchable_fields`:
88 86
 
89 87
 	:::php
@@ -95,7 +93,7 @@ on `$searchable_fields`:
95 93
 	}
96 94
 
97 95
 
98  
-If you assign a single string value, you can set it to be either a FormField or SearchFilter. To specify both, you can
  96
+If you assign a single string value, you can set it to be either a `[api:FormField]` or `[api:SearchFilter]`. To specify both, you can
99 97
 assign an array:
100 98
 
101 99
 	:::php
@@ -144,7 +142,7 @@ To include relations (''$has_one'', `$has_many` and `$many_many`) in your search
144 142
 
145 143
 * Requirements: SilverStripe 2.3.*
146 144
 
147  
-Summary fields can be used to show a quick overview of the data for a specific DataObject record. Most common use is
  145
+Summary fields can be used to show a quick overview of the data for a specific `[api:DataObject]` record. Most common use is
148 146
 their display as table columns, e.g. in the search results of a `[api:ModelAdmin]` CMS interface.
149 147
 
150 148
 Example: Getting predefined summary fields
26  docs/en/reference/dataobjectdecorator.md
Source Rendered
@@ -9,7 +9,7 @@ implementation. Have a look at `[api:Object->useCustomClass()]`.
9 9
 
10 10
 ## Usage
11 11
 
12  
-Your Decorator will nee to be a subclass of DataObjectDecorator or the Extension class.
  12
+Your Decorator will nee to be a subclass of `[api:DataObjectDecorator]` or the `[api:Extension]` class.
13 13
 
14 14
 	:::php
15 15
 	<?php
@@ -27,7 +27,7 @@ class you want to extend.
27 27
 ### Adding a decorator to a built-in class
28 28
 
29 29
 Sometimes you will want to add decorators to classes that you didn't make.  For example, you might want to add the
30  
-ForumRole decorator to the Member object.
  30
+`[api:ForumRole]` decorator to the `[api:Member]` object.
31 31
 
32 32
 
33 33
 	:::php
@@ -97,20 +97,20 @@ The $fields parameter is passed by reference, as it is an object.
97 97
 
98 98
 ### Custom database generation
99 99
 
100  
-Some decorators are designed to transparently add more sophisticated data-collection capabilities to your data object. 
101  
-For example, Versioned adds version tracking and staging to any data object that it is applied to.  To do this, you need
102  
-to be able to create additional database tables and fields to keep your state stored in.
  100
+Some decorators are designed to transparently add more sophisticated data-collection capabilities to your data object.
  101
+For example, `[api:Versioned]` adds version tracking and staging to any data object that it is applied to.  To do this,
  102
+you need to be able to create additional database tables and fields to keep your state stored in.
103 103
 
104 104
 To do this, define an **augmentDatabase()** method on your decorator.  This will be called when db/build is visited.
105 105
 
106  
-*  You can query $this->owner for information about the data object, such as the fields it has
  106
+*  You can query ``$this->owner`` for information about the data object, such as the fields it has
107 107
 *  You can use **DB::requireTable($tableName, $fieldList, $indexList)** to set up your new tables.  This function takes
108 108
 care of creating, modifying, or leaving tables as required, based on your desired schema.
109 109
 
110 110
 ### Custom write queries
111 111
 
112 112
 If you have customised the generated database, then you probably want to change the way that writes happen.  This is
113  
-used by Versioned to get an entry written in ClassName_versions whenever an insert/update happens.
  113
+used by `[api:Versioned]` to get an entry written in ClassName_versions whenever an insert/update happens.
114 114
 
115 115
 To do this, define the **augmentWrite(&$manipulation)** method.  This method is passed a manipulation array representing
116 116
 the write about to happen, and is able to amend this as desired, since it is passed by reference. 
@@ -125,17 +125,17 @@ be modified as needed by your method.  Instead of a manipulation array, we have
125 125
 
126 126
 ### Additional methods
127 127
 
128  
-The other thing you may want to do with a decorator is provide a method that can be called on the DataObject that is
129  
-being decorated.  For instance, you may add a publish() method to every DataObject that is decorated with Versioned.
  128
+The other thing you may want to do with a decorator is provide a method that can be called on the `[api:DataObject]` that is
  129
+being decorated.  For instance, you may add a publish() method to every `[api:DataObject]` that is decorated with `[api:Versioned]`.
130 130
 
131 131
 This is as simple as defining a method called publish() on your decorator.  Bear in mind, however, that instead of
132 132
 $this, you should be referring to $this->owner.
133 133
 
134  
-*  $this = The DataObjectDecorator object.
135  
-*  $this->owner = The related DataObject object.
  134
+*  $this = The `[api:DataObjectDecorator]` object.
  135
+*  $this->owner = The related `[api:DataObject]` object.
136 136
 
137  
-If you want to add your own internal properties, you can add this to the DataObjectDecorator, and these will be referred
138  
-to as $this->propertyName.  Every DataObject has an associated DataObjectDecorator instance for each class that it is
  137
+If you want to add your own internal properties, you can add this to the `[api:DataObjectDecorator]`, and these will be referred
  138
+to as `$this->propertyName`.  Every `[api:DataObject]` has an associated `[api:DataObjectDecorator]` instance for each class that it is
139 139
 decorated by.
140 140
 
141 141
 	:::php
6  docs/en/reference/dataobjectset.md
Source Rendered
@@ -6,7 +6,7 @@ This class represents a set of `[api:DataObject]`s, such as the results of a que
6 6
 [datamodel](/topics/datamodel)-related querying. It implements the [Iterator
7 7
 interface](http://php.net/manual/en/language.oop5.iterations.php) introduced in PHP5.
8 8
 
9  
-Relations (`has_many`/`many_many`) are described in `[api:ComponentSet]`, a subclass of DataObjectSet.
  9
+Relations (`has_many`/`many_many`) are described in `[api:ComponentSet]`, a subclass of `[api:DataObjectSet]`.
10 10
 
11 11
 ## Usage
12 12
 
@@ -56,7 +56,7 @@ This works on the object itself, so do NOT do something like this:
56 56
 	:::php
57 57
 	$sortedSet = $mySet->sort('Lastname'); //ascending
58 58
 
59  
-## Merge with other DataObjectSets
  59
+## Merge with other `[api:DataObjectSet]`s
60 60
 
61 61
 	:::php
62 62
 	$myFirstSet->merge($mySecondSet);
@@ -88,7 +88,7 @@ It is good practice to check for empty sets before doing any iteration.
88 88
 
89 89
 ### Paging
90 90
 
91  
-DataObjects have native support for dealing with **pagination**.
  91
+`[api:DataObject]`s have native support for dealing with **pagination**.
92 92
 See *setPageLimits*, *setPageLength*, etc.
93 93
 
94 94
 FIXME Complete pagination documentation
10  docs/en/reference/director.md
Source Rendered
@@ -2,7 +2,7 @@
2 2
 
3 3
 ## Introduction
4 4
 
5  
-Director is the first step in the "execution pipeline". It parses the URL, matching it to one of a number of patterns,
  5
+`[api:Director]` is the first step in the "execution pipeline". It parses the URL, matching it to one of a number of patterns,
6 6
 and determines the controller, action and any argument to be used. It then runs the controller, which will finally run
7 7
 the viewer and/or perform processing steps.
8 8
 
@@ -12,7 +12,7 @@ the viewer and/or perform processing steps.
12 12
 
13 13
 ## Redirection
14 14
 
15  
-The Director class has a number of methods to facilitate 301 and 302 HTTP redirection.
  15
+The `[api:Director]` class has a number of methods to facilitate 301 and 302 HTTP redirection.
16 16
 
17 17
 *  **Director::redirect("action-name")**: If there's no slash in the URL passed to redirect, then it is assumed that you
18 18
 want to go to a different action on the current controller.
@@ -33,8 +33,8 @@ redirectBack().
33 33
 
34 34
 You can influence the way URLs are resolved one of 2 ways
35 35
 
36  
-1.  Adding rules to Director in `<yourproject>/_config.php` (See Default Rewrite Rules below for examples)
37  
-2.  Adding rules in your extended Controller class via the *$url_handlers* static variable 
  36
+1.  Adding rules to `[api:Director]` in `<yourproject>/_config.php` (See Default Rewrite Rules below for examples)
  37
+2.  Adding rules in your extended `[api:Controller]` class via the *$url_handlers* static variable 
38 38
 
39 39
 See [controller](/topics/controller) for examples and explanations on how the rules get processed for both 1 and 2 above. 
40 40
 
@@ -56,7 +56,7 @@ SilverStripe comes with certain rewrite rules (e.g. for *admin/assets*).
56 56
 
57 57
 ## Links
58 58
 
59  
-*  See ModelAsController class for details on controller/model-coupling
  59
+*  See `[api:ModelAsController]` class for details on controller/model-coupling
60 60
 *  See [execution-pipeline](/reference/execution-pipeline) for custom routing
61 61
 
62 62
 ## API Documentation
4  docs/en/reference/execution-pipeline.md
Source Rendered
@@ -53,7 +53,7 @@ All requests go through main.php, which sets up the environment and then hands c
53 53
 **See:** The API documentation of `[api:Main]` for information about how main.php processes requests.
54 54
 ## Director and URL patterns
55 55
 
56  
-main.php relies on Director to work out which controller should handle this request.  Director will instantiate that
  56
+main.php relies on `[api:Director]` to work out which controller should handle this request.  `[api:Director]` will instantiate that
57 57
 controller object and then call `[api:Controller::run()]`.
58 58
 
59 59
 **See:** The API documentation of `[api:Director]` for information about how Director parses URLs and hands control over to a controller object.
@@ -73,7 +73,7 @@ When you create a function, you can access the ID like this:
73 73
 
74 74
 ## Controllers and actions
75 75
 
76  
-Controllers are the building blocks of your application.
  76
+`[api:Controller]`s are the building blocks of your application.
77 77
 
78 78
 **See:** The API documentation for `[api:Controller]`
79 79
 
2  docs/en/reference/form-field-types.md
Source Rendered
@@ -48,7 +48,7 @@ set {inlcudeDefaultJS} to false and work with behaviour.js.
48 48
 
49 49
 *  `[FileField](api:FileField)`: Simple file upload dialog.
50 50
 *  `[FileIFrameField](api:FileIFrameField)`: File uploads through an iframe
51  
-*  `[api:Image]`: Image upload through an iframe, with thumbnails and file-selection from existing assets
  51
+*  `[api:ImageField]`: Image upload through an iframe, with thumbnails and file-selection from existing assets
52 52
 *  `[SimpleImageField](api:SimpleImageField)`:  SimpleImageField provides an easy way of uploading images to Image has_one
53 53
 relationships. Unlike ImageField, it doesn't use an iframe.
54 54
 
4  docs/en/reference/image.md
Source Rendered
@@ -111,8 +111,8 @@ and whenever you upload or modify an Image through SilverStripe.
111 111
 
112 112
 If you encounter problems with images not appearing, or have mysteriously disappeared, you can try manually flushing the
113 113
 image cache.
114  
-	
  114
+
115 115
 	http://www.mysite.com/images/flush
116  
-	
  116
+
117 117
 ## API Documentation
118 118
 `[api:Image]`
2  docs/en/reference/index.md
Source Rendered
@@ -2,6 +2,7 @@
2 2
 
3 3
 Reference articles complement our auto-generated [API docs](http://api.silverstripe.org) in providing deeper introduction into a specific API. 
4 4
 
  5
+* [Advanced templates](advanced-templates): Advanced SilverStripe template syntax
5 6
 * [BBCode](bbcode): Extensible shortcode syntax
6 7
 * [Built-in page controls](built-in-page-controls): Explains the template syntax and available variables/placeholders
7 8
 * [ComplexTableField](complextablefield): Manage records and their relations inside the CMS
@@ -29,7 +30,6 @@ Reference articles complement our auto-generated [API docs](http://api.silverstr
29 30
 * [StaticPublisher](staticpublisher): Export a page tree as static HTML for better performance and portability
30 31
 * [TableField](tablefield): Add and edit records with inline edits in this form field
31 32
 * [TableListField](tablelistfield): View and delete records in the CMS
32  
-* [Templates](templates): Process our data for output in HTML and other formats
33 33
 * [Typography](typography): CSS file to enable WYSIWYG previews in the CMS
34 34
 * [urlvariabletools](urlvariabletools): Debug and maintenance switches
35 35
 * [Versioned](versioned): Extension for SiteTree and other classes to store old versions and provide "staging"
23  docs/en/reference/member.md
Source Rendered
@@ -2,11 +2,11 @@
2 2
 
3 3
 ## Introduction
4 4
 
5  
-The Member class is used to represent user accounts on a SilverStripe site (including newsletter recipients).
  5
+The `[api:Member]` class is used to represent user accounts on a SilverStripe site (including newsletter recipients).
6 6
  
7 7
 ## Testing For Logged In Users
8 8
 
9  
-The Member class comes with 2 static methods for getting information about the current logged in user.
  9
+The `[api:Member]` class comes with 2 static methods for getting information about the current logged in user.
10 10
 
11 11
 **Member::currentUserID()**
12 12
 
@@ -38,10 +38,11 @@ Returns the full *Member* Object for the current user, returns *null* if user is
38 38
 ## Subclassing
39 39
 
40 40
 <div class="warning" markdown="1">
41  
-This is the least desirable way of extending the Member class. It's better to use DataObjectDecorator (see below).
  41
+This is the least desirable way of extending the `[api:Member]` class. It's better to use `[api:DataObjectDecorator]`
  42
+(see below).
42 43
 </div>
43 44
 
44  
-You can defined subclasses of member to add extra fields or functionality to the built-in membership system.
  45
+You can defined subclasses of `[api:Member]` to add extra fields or functionality to the built-in membership system.
45 46
 
46 47
 	:::php
47 48
 	class MyMember extends Member {
@@ -63,8 +64,8 @@ Note that if you want to look this class-name up, you can call Object::getCustom
63 64
 ## Overloading getCMSFields()
64 65
 
65 66
 If you overload the built-in function getCMSFields(), then you can change the form that is used to view & edit member
66  
-details in the newsletter system.  This function returns a FieldSet object.  You should generally start by calling
67  
-parent::getCMSFields() and manipulate the FieldSet from there.
  67
+details in the newsletter system.  This function returns a `[api:FieldSet]` object.  You should generally start by calling
  68
+parent::getCMSFields() and manipulate the `[api:FieldSet]` from there.
68 69
 
69 70
 	:::php
70 71
 	function getCMSFields() {
@@ -78,11 +79,11 @@ parent::getCMSFields() and manipulate the FieldSet from there.
78 79
 
79 80
 ## Extending Member or DataObject?
80 81
 
81  
-Basic rule: Class "Member" should just be extended for entities who have some kind of login.
82  
-If you have different types of Members in the system, you have to make sure that those with login-capabilities have
  82
+Basic rule: Class `[api:Member]` should just be extended for entities who have some kind of login.
  83
+If you have different types of `[api:Member]`s in the system, you have to make sure that those with login-capabilities have
83 84
 unique email-addresses (as this is used for login-credentials). 
84  
-For persons without login-capabilities (e.g. for an address-database), you shouldn't extend member to avoid conflicts
85  
-with the Member-database. This enables us to have a different subclass of Member for an email-address with login-data,
  85
+For persons without login-capabilities (e.g. for an address-database), you shouldn't extend `[api:Member]` to avoid conflicts
  86
+with the Member-database. This enables us to have a different subclass of `[api:Member]` for an email-address with login-data,
86 87
 and another subclass for the same email-address in the address-database.
87 88
 
88 89
 ## Member Role Decorator
@@ -95,7 +96,7 @@ class.  A better way is to use role decorators to add this behaviour.
95 96
 	// OR
96 97
 	Member::add_role('ForumRole');
97 98
 
98  
-A role decorator is simply a subclass of `[api:DataObjectDecorator]` that is designed to be used to add behaviour to Member. 
  99
+A role decorator is simply a subclass of `[api:DataObjectDecorator]` that is designed to be used to add behaviour to `[api:Member]`. 
99 100
 The roles affect the entire class - all members will get the additional behaviour.  However, if you want to restrict
100 101
 things, you should add appropriate `[api:Permission::checkMember()]` calls to the role's methods.
101 102
 
2  docs/en/reference/modeladmin.md
Source Rendered
@@ -104,7 +104,7 @@ fields are searched (e.g. "partial match", "fulltext", etc.) using `$searchable_
104 104
 ## Summary Fields
105 105
 
106 106
 Summary Fields are the columns which are shown in the `[api:TableListField]` when viewing DataObjects.  These can be
107  
-customized for each DataObject's search results using `$summary_fields`.
  107
+customized for each `[api:DataObject]`'s search results using `$summary_fields`.
108 108
 
109 109
    * See `[api:DataObject]`
110 110
 
6  docs/en/reference/partial-caching.md
Source Rendered
@@ -55,7 +55,7 @@ From a block that shows a summary of the page edits if administrator, nothing if
55 55
 
56 56
 Often you want to invalidate a cache when any in a set of objects change, or when the objects in a relationship change.
57 57
 To help do this, SilverStripe 2.4 also introduces the concept of Aggregates. These calculate and return SQL aggregates
58  
-on sets of DataObjects - the most useful for us being the Max aggregate.
  58
+on sets of `[api:DataObject]`s - the most useful for us being the Max aggregate.
59 59
 
60 60
 For example, if we have a menu, we want that menu to update whenever _any_ page is edited, but would like to cache it
61 61
 otherwise. By using aggregates, that's easy
@@ -236,6 +236,4 @@ Can be re-written as:
236 236
 	    <% end_control %>
237 237
 	  <% end_cached %>
238 238
 	
239  
-	<% end_cached %>
240  
-
241  
-
  239
+	<% end_cached %>
6  docs/en/reference/permission.md
Source Rendered
@@ -12,7 +12,7 @@ and then select the permissions tab, and add that permission to the list.
12 12
 The simple usage, Permission::check("PERM_CODE") will detect if the currently logged in member has the given permission.
13 13
  See the API docs for more options.
14 14
 
15  
-** Group ACLs **
  15
+**Group ACLs**
16 16
 
17 17
 *  Call **Permission::check("MY_PERMISSION_CODE")** to see if the current user has MY_PERMISSION_CODE.
18 18
 *  MY_PERMISSION_CODE can be loaded into the Security admin on the appropriate group, using the "Permissions" tab. 
@@ -22,9 +22,9 @@ You can use whatever codes you like, but for the sanity of developers and users,
22 22
 
23 23
 ## PermissionProvider
24 24
 
25  
-PermissionProvider is an interface which lets you define a method *providePermissions()*. This method should return a
  25
+`[api:PermissionProvider]` is an interface which lets you define a method *providePermissions()*. This method should return a
26 26
 map of permission code names with a human readable explanation of its purpose (see
27  
-[:permission:codes](/reference/permission)).
  27
+[permissions:codes](/reference/permission)).
28 28
 
29 29
 	:::php
30 30
 	class Page_Controller implements PermissionProvider {
3  docs/en/reference/requirements.md
Source Rendered
@@ -133,8 +133,7 @@ In your controller's init() function, add:
133 133
 
134 134
 ## CMS Requirements
135 135
 
136  
-The Silverstripe core includes a lot of Requirements by itself. Most of these are collated in `[api:LeftAndMain]`//
137  
-first.
  136
+The SilverStripe core includes a lot of Requirements by itself. Most of these are collated in `[api:LeftAndMain]` first.
138 137
 
139 138
 ## Motivation
140 139
 
15  docs/en/reference/restfulservice.md
Source Rendered
@@ -2,12 +2,13 @@
2 2
 
3 3
 ## Introduction
4 4
 
5  
-RestfulService enables connecting to remote web services which supports REST interface and consume those web services
6  
-(for example Flickr, Youtube, Amazon and etc). RestfulService can parse the XML response (sorry no JSON support)
  5
+`[api:RestfulService]` enables connecting to remote web services which supports REST interface and consume those web services
  6
+(for example [Flickr](http://www.flickr.com/services/api/), [Youtube](http://code.google.com/apis/youtube/overview.html), Amazon and etc). `[api:RestfulService]` can parse the XML response (sorry no JSON support)
7 7
 returned from the web service. Further it supports caching of the response, and you can customize the cache interval. 
8 8
 
9  
-To gain the functionality you can either create a new RestfulService object or create a class extending the
10  
-RestfulService (see `flickrservice` and `youtubeservice` modules).
  9
+To gain the functionality you can either create a new `[api:RestfulService]` object or create a class extending the
  10
+RestfulService (see [flickrservice](http://silverstripe.org/flickr-module/) and
  11
+[youtubeservice](http://silverstripe.org/youtube-gallery-module/) modules).
11 12
 
12 13
 
13 14
 ## Examples
@@ -112,8 +113,8 @@ to get the value of entry node with the namespace media, use:
112 113
 
113 114
 ### Handling Errors
114 115
 
115  
-If the web service returned an error (for example, API key not available or inadequate parameters) RestfulService could
116  
-delgate the error handling to it's descendant class. To handle the errors define a function called errorCatch
  116
+If the web service returned an error (for example, API key not available or inadequate parameters) `[api:RestfulService]`
  117
+could delgate the error handling to it's descendant class. To handle the errors define a function called errorCatch
117 118
 
118 119
 	:::php
119 120
 	        /*
@@ -142,7 +143,7 @@ If you want to bypass error handling on your sub-classes you could define that i
142 143
 
143 144
 ## Other Uses
144 145
 
145  
-### How to use RestfulService to easily embed an RSS feed
  146
+### How to use `[api:RestfulService]` to easily embed an RSS feed
146 147
 
147 148
 `[api:RestfulService]` can be used to easily embed an RSS feed (since it's also an xml response) from a site
148 149
 such as del.icio.us
8  docs/en/reference/rssfeed.md
Source Rendered
@@ -5,7 +5,7 @@
5 5
 Generating RSS/Atom-feeds is just a matter of rendering a `[api:DataObject]` and the Page Comment Interface. 
6 6
 Handled through the `[api:RSSFeed]` class.
7 7
 
8  
-RSSFeed doesn't limit you to generating "article-based" feeds, it is just as easy to create a feed of your current
  8
+`[api:RSSFeed]` doesn't limit you to generating "article-based" feeds, it is just as easy to create a feed of your current
9 9
 staff-members. The only logical limitation here is that every item in the RSS-feed should be accessible through a URL on
10 10
 your website, so its advisable to just create feeds from subclasses of `[api:SiteTree]`.
11 11
 
@@ -31,7 +31,7 @@ your website, so its advisable to just create feeds from subclasses of `[api:Sit
31 31
 ### Example of showing the 10 most recently updated pages
32 32
 
33 33
 
34  
-You can use RSSFeed to easily create a feed showing your latest Page updates. Just change mysite/code/Page.php to
  34
+You can use `[api:RSSFeed]` to easily create a feed showing your latest Page updates. Just change mysite/code/Page.php to
35 35
 something like this:
36 36
 
37 37
 	:::php
@@ -44,7 +44,7 @@ something like this:
44 44
 	}
45 45
 	
46 46
 	class Page_Controller extends ContentController {
47  
-
  47
+		
48 48
 		function init() {
49 49
 			RSSFeed::linkToFeed($this->Link() . "rss", "10 Most Recently Updated Pages");
50 50
 			parent::init();
@@ -72,7 +72,7 @@ can also do http://www.yoursite.com/PageComment/rss?pageid=46 where pageid is th
72 72
 
73 73
 ## External Sources
74 74
 
75  
-RSSFeed only creates feeds from your own data. We've included the [SimplePie](http://simplepie.org) RSS-parser for
  75
+`[api:RSSFeed]` only creates feeds from your own data. We've included the [SimplePie](http://simplepie.org) RSS-parser for
76 76
 accessing feeds from external sources.
77 77
 
78 78
 
18  docs/en/reference/searchcontext.md
Source Rendered
@@ -3,16 +3,16 @@
3 3
 ## Introduction
4 4
 
5 5
 Manages searching of properties on one or more `[api:DataObject]` types, based on a given set of input parameters.
6  
-SearchContext is intentionally decoupled from any controller-logic,
  6
+`[api:SearchContext]` is intentionally decoupled from any controller-logic,
7 7
 it just receives a set of search parameters and an object class it acts on.
8 8
 
9  
-The default output of a SearchContext is either a `[api:SQLQuery]` object for further refinement, or a
  9
+The default output of a `[api:SearchContext]` is either a `[api:SQLQuery]` object for further refinement, or a
10 10
 `[api:DataObject]` instance.
11 11
 
12 12
 In case you need multiple contexts, consider namespacing your request parameters by using `FieldSet->namespace()` on
13 13
 the $fields constructor parameter.
14 14
 
15  
-SearchContext is mainly used by `[api:ModelAdmin]`, our generic data administration interface. Another
  15
+`[api:SearchContext]` is mainly used by `[api:ModelAdmin]`, our generic data administration interface. Another
16 16
 implementation can be found in generic frontend search forms through the [genericviews](http://silverstripe.org/generic-views-module) module.
17 17
 
18 18
 ## Requirements
@@ -33,9 +33,10 @@ See `[api:DataObject::$searchable_fields]`.
33 33
 
34 34
 ### Customizing fields and filters
35 35
 
36  
-In this example we're defining three attributes on our MyDataObject subclasss: `PublicProperty`, `HiddenProperty`
  36
+In this example we're defining three attributes on our MyDataObject subclass: `PublicProperty`, `HiddenProperty`
37 37
 and `MyDate`. The attribute `HiddenProperty` should not be searchable, and `MyDate` should only search for dates
38  
-*after* the search entry (with a `GreaterThanFilter`). Similiar to the built-in `DataObject->getDefaultSearchContext()` method, we're building our own `getCustomSearchContext()` variant.
  38
+*after* the search entry (with a `GreaterThanFilter`). Similiar to the built-in `DataObject->getDefaultSearchContext()`
  39
+method, we're building our own `getCustomSearchContext()` variant.
39 40
 
40 41
 	:::php
41 42
 	class MyDataObject extends DataObject {
@@ -86,11 +87,6 @@ and `MyDate`. The attribute `HiddenProperty` should not be searchable, and `MyDa
86 87
 	}
87 88
 
88 89
 
89  
-
90  
-
91  
-
92  
-
93  
-
94 90
 ### Pagination
95 91
 
96 92
 For paginating records on multiple pages, you need to get the generated `SQLQuery` before firing off the actual
@@ -184,7 +180,7 @@ Results.PaginationSummary(4) defines how many pages the search will show in the
184 180
 
185 181
 ## Available SearchFilters
186 182
 
187  
-See SearchFilter API Documentation `[api:SearchFilter]` 
  183
+See `[api:SearchFilter]` API Documentation
188 184
 
189 185
 ## API Documentation
190 186
 `[api:SearchContext]`
12  docs/en/reference/site-reports.md
Source Rendered
@@ -6,23 +6,23 @@ the site reports by clicking "Site Reports" in the left hand side bar and select
6 6
 
7 7
 ![](_images/sitereport.png) 
8 8
 
9  
-By default the CMS ships with a couple basic reports - 
  9
+By default the CMS ships with a couple of basic reports -
10 10
 
11 11
 ## Default Reports
12 12
 
13 13
 *  "Empty Pages" which will generate a list of pages without content 
14 14
 *  "Pages edited in the last 2 weeks" which will list all the pages edited in the last 2 weeks in order of most recently
15 15
 edited.
16  
-*  "To Do" which displays all the ToDo notes you have added to each page and a link to the page. This is in 2.2.2 and
  16
+*  "To Do" which displays all the ToDo notes you have added to each page and a link to the page. Note: This is in 2.2.2 and
17 17
 later
18 18
 *  Also the Ecommerce module provides 2 or 3 reports out of box. Such as All Products, Orders...
19 19
 
20 20
 ## Creating Custom Reports
21 21
 
22  
-You can create reports for you own data quickly and easily. A general knowledge of Silverstripe's
  22
+You can create reports for you own data quickly and easily. A general knowledge of SilverStripe's
23 23
 [Datamodel](/topics/datamodel) would help before you attempt this. 
24 24
 
25  
-Inside the Mysite/Code folder - your projects code, create a file called CustomSideReport or MyProjectSiteReport and
  25
+Inside the Mysite/Code folder - your projects code, create a file called `CustomSideReport` or `MyProjectSiteReport` and
26 26
 inside this file we can add our site reports.
27 27
 
28 28
 CustomSideReport.php 
@@ -91,6 +91,4 @@ file and add class's as you need them inside that for each report.
91 91
 *  More examples.
92 92
 
93 93
 ## API Documentation
94  
-`[api:ReportAdmin]`
95  
-
96  
-
  94
+`[api:ReportAdmin]`
15  docs/en/reference/siteconfig.md
Source Rendered
@@ -2,12 +2,12 @@
2 2
 
3 3
 ## Introduction
4 4
 
5  
-The SiteConfig panel was introduced in 2.4 for providing a generic interface for managing site wide settings or
  5
+The `[api:SiteConfig]` panel was introduced in 2.4 for providing a generic interface for managing site wide settings or
6 6
 functionality which is used throughout the site. Out of the box it provides 2 fields 'Site Name' and 'Site Tagline'.
7 7
 
8  
-## Accessing SiteConfig Options
  8
+## Accessing `[api:SiteConfig]` Options
9 9
 
10  
-You can access SiteConfig options from any SS template by using the function $SiteConfig.FieldName
  10
+You can access `[api:SiteConfig]` options from any SS template by using the function $SiteConfig.FieldName
11 11
 
12 12
 	:::ss
13 13
 	$SiteConfig.Title 
@@ -28,8 +28,7 @@ Or if you want to access variables in the PHP you can do
28 28
 	$config->Title
29 29
 
30 30
 
31  
-
32  
-## Extending SiteConfig
  31
+## Extending `[api:SiteConfig]`
33 32
 
34 33
 To extend the options available in the panel you can define your own fields via an Extension.
35 34
 
@@ -59,13 +58,13 @@ Then add a link to your extension in the _config.php file like below.
59 58
 	Object::add_extension('SiteConfig', 'CustomSiteConfig');
60 59
 
61 60
 
62  
-This tells SilverStripe to add the CustomSiteConfig extension to the SiteConfig class. 
  61
+This tells SilverStripe to add the CustomSiteConfig extension to the `[api:SiteConfig]` class. 
63 62
 
64 63
 After adding those two pieces of code, rebuild your database by visiting http://yoursite.com/dev/build and then reload
65 64
 the admin interface. You may need to reload it with a ?flush=1 on the end.
66 65
 
67  
-You can define as many extensions for SiteConfig as you need. For example if you are developing a module you can define
  66
+You can define as many extensions for `[api:SiteConfig]` as you need. For example if you are developing a module you can define
68 67
 your own global settings for the dashboard.
69 68
 
70 69
 ## API Documentation
71  
-`[api:SiteConfig]`
  70
+`[api:SiteConfig]`
18  docs/en/reference/sqlquery.md
Source Rendered
@@ -5,7 +5,7 @@
5 5
 An object representing a SQL query. It is easier to deal with object-wrappers than string-parsing a raw SQL-query. This
6 6
 object is used by `[api:DataObject]`, though...
7 7
 
8  
-A word of caution: Dealing with low-level SQL is not encouraged in the Silverstripe [datamodel](/topics/datamodel) for various
  8
+A word of caution: Dealing with low-level SQL is not encouraged in the SilverStripe [datamodel](/topics/datamodel) for various
9 9
 reasons. You'll break the behaviour of:
10 10
 
11 11
 *  Custom getters/setters
@@ -15,7 +15,7 @@ reasons. You'll break the behaviour of:
15 15
 *  `[api:DataObject]`
16 16
 *  Database abstraction
17 17
 
18  
-We'll explain some ways to use *SELECT* with the full power of SQL, but still maintain a connection to the Silverstripe
  18
+We'll explain some ways to use *SELECT* with the full power of SQL, but still maintain a connection to the SilverStripe
19 19
 [datamodel](/topics/datamodel).
20 20
 
21 21
 ## Usage
@@ -109,7 +109,7 @@ Useful for creating dropdowns.
109 109
 
110 110
 ### "Raw" SQL with DB::query()
111 111
 
112  
-This is not recommended for most cases, but you can also use the Silverstripe database-layer to fire off a raw query:
  112
+This is not recommended for most cases, but you can also use the SilverStripe database-layer to fire off a raw query:
113 113
 
114 114
 	:::php
115 115
 	DB::query("UPDATE Player SET Status='Active'");
@@ -142,10 +142,10 @@ This form of building a query has the following advantages:
142 142
 *  Selection of *ID*, *ClassName*, *RecordClassName*, which are necessary to use *buildDataObjectSet* later on
143 143
 *  Filtering records for correct *ClassName*
144 144
 
145  
-### Transforming a result to DataObjectSet
  145
+### Transforming a result to `[api:DataObjectSet]`
146 146
 
147  
-This is a commonly used technique inside Silverstripe: Use raw SQL, but transfer the resulting rows back into
148  
-DataObjects.
  147
+This is a commonly used technique inside SilverStripe: Use raw SQL, but transfer the resulting rows back into
  148
+`[api:DataObject]`s.
149 149
 
150 150
 	:::php
151 151
 	$sqlQuery = new SQLQuery();
@@ -183,16 +183,16 @@ DataObjects.
183 183
 	var_dump($myFirstPlayer->Status); // undefined, as we didn't LEFT JOIN the BasePlayer-table
184 184
 
185 185
 
186  
-CAUTION: Depending on the selected columns in your query, you might get into one of the following scenarios:
  186
+**CAUTION:** Depending on the selected columns in your query, you might get into one of the following scenarios:
187 187
 
188 188
 *  Not all object-properties accessible: You need to take care of selecting the right stuff yourself
189 189
 *  Overlayed object-properties: If you *LEFT JOIN* a table which also has a column 'Birthdate' and do a global select on
190 190
 this table, you might not be able to access original object-properties.
191  
-*  You can't create DataObjects where no scalar record-data is available, e.g. when using *GROUP BY*
  191
+*  You can't create `[api:DataObject]`s where no scalar record-data is available, e.g. when using *GROUP BY*
192 192
 *  Naming conflicts with custom getters: A getter like Player->getName() will overlay the column-data selected in the
193 193
 above example
194 194
 
195  
-Be careful when saving back DataObjects created through *buildDataObjectSet*, you might get strange side-effects due to
  195
+Be careful when saving back `[api:DataObject]`s created through *buildDataObjectSet*, you might get strange side-effects due to
196 196
 the issues noted above.
197 197
 ## Using FormFields with custom SQL
198 198
 
8  docs/en/reference/staticpublisher.md
Source Rendered
@@ -83,17 +83,17 @@ you can also add an exclusion
83 83
 	function allPagesToCache() {
84 84
 		$urls = array();
85 85
 		$pages = DataObject::get("SiteTree");
86  
-
  86
+		
87 87
 		// ignored page types
88 88
 		$ignored = array('UserDefinedForm');
89  
-
  89
+		
90 90
 		foreach($pages as $page) {
91 91
 			// check to make sure this page is not in the classname
92 92
 			if(!in_array($page->ClassName, $ignored)) {
93 93
 				$urls = array_merge($urls, (array)$page->subPagesToCache());
94 94
 			}
95 95
 		}
96  
-
  96
+		
97 97
 		return $urls;
98 98
 	}
99 99
 
@@ -127,7 +127,7 @@ example](http://open.silverstripe.com/browser/modules/cms/trunk/code/staticpubli
127 127
 .htaccess update simpler.
128 128
 
129 129
 Just look for this line:
130  
-	
  130
+
131 131
 	RewriteRule .* sapphire/main.php?url=%1&%{QUERY_STRING} [L]
132 132
 
133 133
 
17  docs/en/reference/tablefield.md
Source Rendered
@@ -2,9 +2,8 @@
2 2
 
3 3
 ## Introduction
4 4
 
5  
-TableField behaves in the same manner as `[api:TableListField]`, however allows the editing of existing and adding of
6  
-new rows.
7  
-The data is saved back by the surrounding form-saving (mostly EditForm->save).
  5
+`[api:TableField]` behaves in the same manner as `[api:TableListField]`, however allows the editing of existing and adding of
  6
+new rows. The data is saved back by the surrounding form-saving (mostly EditForm->save).
8 7
 
9 8
 See `[api:TableListField]` for more documentation on the base-class
10 9
 
@@ -66,15 +65,15 @@ Note: You still have to attach some form of `[api:Validator]` to the form to tri
66 65
 
67 66
 ### Nested Table Fields
68 67
 
69  
-When you have TableField inside a `[api:ComplexTableField]`, the parent ID may not be known in your
70  
-getCMSFields() method.  In these cases, you can set a value to '$RecordID' in your TableField extra data, and this will
71  
-be populated with the newly created record id upon save.
  68
+When you have `[api:TableField]` inside a `[api:ComplexTableField]`, the parent ID may not be known in your
  69
+getCMSFields() method.  In these cases, you can set a value to '$RecordID' in your `[api:TableField]` extra data, and this
  70
+will be populated with the newly created record id upon save.
72 71
 
73 72
 ## Known Issues
74 73
 
75  
-*  A TableField doesn't reload any submitted form-data if the saving is interrupted by a failed validation. After
76  
-refreshing the form with the validation-errors, the TableField will be blank again.
77  
-*  You can't add **visible default data** to columns in a TableField, please use *setExtraData*
  74
+*  A `[api:TableField]` doesn't reload any submitted form-data if the saving is interrupted by a failed validation. After
  75
+refreshing the form with the validation-errors, the `[api:TableField]` will be blank again.
  76
+*  You can't add **visible default data** to columns in a `[api:TableField]`, please use *setExtraData*
78 77
 
79 78
 
80 79
 ## API Documentation
24  docs/en/reference/tablelistfield.md
Source Rendered
@@ -8,9 +8,9 @@ Provides customizeable columns, record-deletion by ajax, paging, sorting, CSV-ex
8 8
 
9 9
 ## Example
10 10
 
11  
-Here's an example of a full featured TableListField implementation. It features editing members in the database directly
12  
-as a button on each record, as well as filtering, and sorting. It also makes use of the 'export' permission, allowing
13  
-export of data as a CSV.
  11
+Here's an example of a full featured `[api:TableListField]` implementation. It features editing members in the database
  12
+directly as a button on each record, as well as filtering, and sorting. It also makes use of the 'export' permission,
  13
+allowing export of data as a CSV.
14 14
 
15 15
 	:::php
16 16
 	function getReportField() {		
@@ -90,7 +90,7 @@ For more information on each of the features used in the example, you can read b
90 90
 	$customCsvQuery->select[] = "CONCAT(col1,col2) AS MyCustomSQLColumn";
91 91
 	$myTableListField->setCustomCsvQuery($customQuery);
92 92
 
93  
-TableListField also tries to resolve Component-relations(has_one, has_many) and custom getters automatically:
  93
+`[api:TableListField]` also tries to resolve Component-relations(has_one, has_many) and custom getters automatically:
94 94
 
95 95
 	:::php
96 96
 	$myTableListField = new TableListField(
@@ -139,12 +139,12 @@ Example (sorting by "FirstName" column):
139 139
 	);
140 140
 
141 141
 
142  
-If you want to sort by custom getters in your DataObject, please reformulate them to a custom SQL column. This
  142
+If you want to sort by custom getters in your `[api:DataObject]`, please reformulate them to a custom SQL column. This
143 143
 restriction is needed to avoid performance-hits by caching and sorting potentially large datasets on PHP-level.
144 144
 
145 145
 ### Casting
146 146
 
147  
-Column-values can be casted, based on the casting-types available through DBObject  (sapphire/core/model/fieldtypes).
  147
+Column-values can be casted, based on the casting-types available through DBObject (sapphire/core/model/fieldtypes).
148 148
 
149 149
 	:::php
150 150
 	$myTableListField->setFieldCasting(array(
@@ -155,7 +155,7 @@ Column-values can be casted, based on the casting-types available through DBObje
155 155
 
156 156
 ### Permissions
157 157
 
158  
-Permissions vary in different TableListField-implementations, and are evaluated in the template.
  158
+Permissions vary in different `[api:TableListField]`-implementations, and are evaluated in the template.
159 159
 By default, all listed permissions are enabled.
160 160
 
161 161
 	:::php
@@ -237,7 +237,7 @@ implement averages etc.
237 237
 	  )
238 238
 	);
239 239
 
240  
-In TableField-implementation, these summaries also react to changes in input-fields by javascript.
  240
+In `[api:TableListField]`-implementation, these summaries also react to changes in input-fields by javascript.
241 241
 Available methods:
242 242
 
243 243
 *  sum
@@ -245,7 +245,7 @@ Available methods:
245 245
 
246 246
 ### Grouping
247 247
 
248  
-Used to group by a specific column in the DataObject and create partial summaries.
  248
+Used to group by a specific column in the `[api:DataObject]` and create partial summaries.
249 249
 Please use only together with addSummary().
250 250
 (Automatically disables sorting).
251 251
 
@@ -257,7 +257,7 @@ Please use only together with addSummary().
257 257
 
258 258
 ### Custom Sorting
259 259
 
260  
-Please subclass TableListField to implement custom sorting, following the naming-convention
  260
+Please subclass `[api:TableListField]` to implement custom sorting, following the naming-convention
261 261
 "`colFunction_<yourFunctionName>`".
262 262
 
263 263
 	:::php
@@ -274,7 +274,7 @@ Please subclass TableListField to implement custom sorting, following the naming
274 274
 In case you want to perform utility-functions like "export" or "print" through action-buttons,
275 275
 make sure to subclass Utility() which collates all possible actions.
276 276
 
277  
-### Customizing Look&Feel
  277
+### Customizing Look & Feel
278 278
 
279 279
 You can exchange the used template, e.g. to change applied CSS-classes or the HTML-markup:
280 280
 
@@ -285,4 +285,4 @@ You can exchange the used template, e.g. to change applied CSS-classes or the HT
285 285
 
286 286
 ## API Documentation
287 287
 
288  
-[api:TableListField]
  288
+`[api:TableListField]`
14  docs/en/reference/typography.md
Source Rendered
@@ -4,8 +4,7 @@
4 4
 SilverStripe lets you customise the style of content in the CMS.  
5 5
 
6 6
 ## Usage
7  
-This is done by setting up a CSS file called
8  
-(projectname)/css/typography.css
  7
+This is done by setting up a CSS file called (projectname)/css/typography.css.
9 8
 
10 9
 You also need to create a file called (projectname)/css/editor.css with the following content:
11 10
 
@@ -40,8 +39,8 @@ It's important to realise that this CSS file is included directly into the CMS s
40 39
 can alter the styling of other parts of the interface.  While this is novel, it can be dangerous and is probably not
41 40
 what you're after.
42 41
 
43  
-The way around this is to limit all your styling selectors to elements inside something with class="typography".  The
44  
-other half of this is to put class="typography" onto any area in your template where you would like the styling to be
  42
+The way around this is to limit all your styling selectors to elements inside something with `class="typography"`.  The
  43
+other half of this is to put `class="typography"` onto any area in your template where you would like the styling to be
45 44
 applied.
46 45
 
47 46
 **WRONG**
@@ -73,7 +72,7 @@ applied.
73 72
 
74 73
 
75 74
 If you would to include different styles for different sections of your site, you can use class names the same as the
76  
-name of the data fields. This example sets up different paragraph styles for 2 HTML editor fieldsc alled Content and
  75
+name of the data fields. This example sets up different paragraph styles for 2 HTML editor fields called Content and
77 76
 OtherContent:
78 77
 
79 78
 	:::css
@@ -89,7 +88,7 @@ OtherContent:
89 88
 ### Removing the typography class
90 89
 
91 90
 Sometimes, it's not enough to add a class, you also want to remove the typography class.  You can use the
92  
-HTMLEditorField method setCSSClass.
  91
+`[api:HTMLEditorField]` method setCSSClass.
93 92
 
94 93
 This example sets another CSS class typographybis:
95 94
 
@@ -104,5 +103,4 @@ This example sets another CSS class typographybis:
104 103
 	}