../input/arraydata.txt:For an example of ArrayData in use, see [[tutorial:3-forms#showing_the_poll_results|tutorial:3-forms: Showing the poll results]]
../input/arraydata.txt:[[http://api.silverstripe.org/trunk/sapphire/ArrayData.html|Click here for the API documentation]].
../input/autocompletefield.txt:AutoCompleteField is part of the [[http://api.silverstripe.org/trunk/sapphire/model/DataObject.html|DataObject]] package that renders a live autocomplete textfield for returning results as the user types. It is useful for search forms that provide suggestions before a search is executed.
../input/autocompletetextfield.txt:[[http://api.silverstripe.org/trunk/forms/fields-formattedinput/AutocompleteTextField.html|Click here for the API documentation]].
../input/bbcode.txt:  * It has been encorporated as a modified version of PEAR's [[http://pear.php.net/package/HTML_BBCodeParser|HTML_BBCodeParser]]
../input/building-for-modularity.txt:More information on actually building a module can be found [[creating-modules|here]].
../input/building-for-modularity.txt:  * Build them as a theme - [[themes|go here]] for more information.
../input/built-in-page-controls.txt:**Note for advanced users:** These built-in page controls are defined in the [[http://api.silverstripe.org/trunk/cms/SiteTree.html|SiteTree]] and [[http://api.silverstripe.org/trunk/sapphire/control/ContentController.html|ContentController]] classes, which are the 'root' data-object and controller classes for all the sites.  So if you're dealing with something that isn't a sub-class of one of these, our handy reference to 'built-in page controls' won't be so relevant.
../input/built-in-page-controls.txt:Since 2.4.0, SilverStripe provides a generic interface for accessing global properties such as //Site name// or //Site tag line//. This interface is implemented by the [[siteconfig|SiteConfig]] class.
../input/built-in-page-controls.txt:$Now returns the current date.  You can call any of the [[http://doc.silverstripe.com/doku.php?id=date|date methods]] on it. 
../input/built-in-page-controls.txt:$Created returns the time the page was created, $Created.Ago returns how long ago the page was created. You can also call any of the [[http://doc.silverstripe.com/doku.php?id=date|date methods]] on it
../input/built-in-page-controls.txt:$LastEdited returns the time the page was modified, $LastEdited.Ago returns how long ago the page was modified.You can also call any of the [[http://doc.silverstripe.com/doku.php?id=date|date methods]] on it
../input/casting.txt:See [[objectmodel]] and [[datamodel]]  
../input/changelog.txt:Moved to [[http://open.silverstripe.org/wiki/ChangeLog]]
../input/checkboxfield.txt:[[http://api.silverstripe.org/trunk/forms/fields-basic/CheckboxField.html|Click here for the API documentation]].
../input/checkboxsetfield.txt:If you want to implement a [[CheckboxSetField]] into a form element, you need to pass it an array of source data.
../input/checkboxsetfield.txt:[[http://api.silverstripe.org/trunk/forms/fields-basic/CheckboxSetField.html|Click here for the API documentation]].
../input/checkoutpagetest.txt:[[http://doc.silverstripe.com/assets/classes/sapphire/testing/CheckoutPageTest.html|Click here for the API documentation]].
../input/cmsmenu.txt:The menu will be automatically populated with menu items for subclasses of [[http://api.silverstripe.org/trunk/cms/core/LeftAndMain.html|LeftAndMain]]. That is, for each class in the CMS that creates an administration panel, a CMS menu item will be created. The default configuration will also include a 'help' link to the SilverStripe user documentation.
../input/cmsmenu.txt:Usually, a valid administration page is a subclass of [[http://api.silverstripe.org/trunk/cms/core/LeftAndMain.html|LeftAndMain]] or [[ModelAdmin]] (itself a subclass of [[http://api.silverstripe.org/trunk/cms/core/LeftAndMain.html|LeftAndMain]]), so it is added automatically.
../input/coding-conventions.txt:  * Use the same [[escape-formats]]listed above.
../input/coding-conventions.txt:See [[secure-development]] for conventions related to handing security permissions.
../input/coding-conventions.txt:  * See [[html]]
../input/coding-conventions.txt:  * See [[css]]
../input/coding-conventions.txt:  * See [[javascript]]
../input/common-problems.txt:Please make sure all code inside '*.php' files is wrapped in classes. Due to the way [[ManifestBuilder]] includes all files with this extension, any **procedural code will be executed on every call**. Most common error here is putting a test.php/phpinfo.php file in the document root. See [[datamodel]] and [[controllers]] for ways how to structure your code.
../input/community_run_third_party_websites.txt:[[http://www.ssbits.com]] SSBits is a site providing Tips, Tutorials and Code snippets to SilverStripe developers. You can also submit your own Snippets and tutorials for publication.
../input/community_run_third_party_websites.txt:[[http://sscode.nl/]] SSCode is a Dutch language site providing Tips and Tutorials to SilverStripe Developers. They also have a handy SilverStripe Cheatsheet available for download.
../input/community_run_third_party_websites.txt:[[http://silverstriped.com/]] SilverStriped provides themes and tips to silverstripe developers and users.
../input/community_run_third_party_websites.txt:[[http://www.silverstripeclub.com/]] SilverStripeClub is a site which provides large complex modules as well as SilverStripe hosting packages, widgets and themes. There are 3 levels of membership ranging from free with limited access to $599/year for full access. They also have their own forum for product support.
../input/complextablefield.txt:Shows a group of DataObjects as a (readonly) tabular list (similiar to [[http://api.silverstripe.org/trunk/forms/fields-relational/TableListField.html|TableListField]]). Its most useful when you want to display a relationship (e.g. one-to-many), subset, or collection of DataObjects via a simple interface with the ability to edit context specific information in a javascript-popup ("Lightbox").  
../input/complextablefield.txt:See [[complextablefieldExamples]]
../input/complextablefield.txt:See [[http://api.silverstripe.org/trunk/forms/fields-relational/TableListField.html|TableListField]] for more documentation on the base-class
../input/complextablefield.txt:See [[http://api.silverstripe.org/trunk/forms/fields-relational/TableListField.html|TableListField]].
../input/complextablefield.txt:  * [[AssetTableField]]
../input/complextablefield.txt:  * [[MemberTableField]]
../input/complextablefield.txt:[[http://api.silverstripe.org/trunk/forms/fields-relational/ComplexTableField.html|Click here for the API documentation]].
../input/compositefield.txt:[[http://api.silverstripe.org/trunk/forms/fields-structural/CompositeField.html|Click here for the API documentation]].
../input/configuration.txt:This lack of a configuration-GUI is on purpose, as we'd like to keep developer-level options where they belong (into code), without cluttering up the interface. See this core forum discussion [[http://www.silverstripe.com/core-team-discussion/flat/2723|"The role of the CMS"]] for further reasoning.
../input/configuration.txt:See [[environment-management]].
../input/configuration.txt:This file is detected in each folder by [[ManifestBuilder]]. This way, every toplevel-folder (=module) can have independent configuration-rules.
../input/configuration.txt://Please note that this is the only place where you can put in procedural code - all other functionality is wrapped in classes (see [[common-problems]]).//
../input/configuration.txt:|Authenticator::register_authenticator($authenticator);|Enable an authentication method (for more details see [[security]]).|
../input/configuration.txt:| ContentNegotiator::set_encoding(string $encoding) | The encoding charset to use - UTF-8 by default (see [[template-encoding]] for more) |
../input/configuration.txt:| Director::set_dev_servers(array('localhost', 'dev.mysite.com)) | Set servers that should be run in dev mode (see [[debugging]]) |
../input/configuration.txt:|Security::encrypt_passwords($encrypt_passwords);|Specify if you want store your passwords in clear text or encrypted (for more details see [[security]])|
../input/configuration.txt:|Security::set_password_encryption_algorithm($algorithm, $use_salt);|If you choose to encrypt your passwords, you can choose which algorithm is used to and if a salt should be used to increase the security level even more (for more details see [[security]]).|
../input/configuration.txt:|Security::setDefaultAdmin('admin','password'); |Set default admin email and password, helpful for [[recovering_password]]|
../input/configuration.txt:All user-related preferences are stored as a property of the [[Member]]-class (and as a database-column in the //Member//-table). You can "mix in" your custom preferences by using [[http://api.silverstripe.org/trunk/sapphire/model/DataObject.html|DataObject]] for details.
../input/configuration.txt:See [[security]] and [[permission]]
../input/confirmedpasswordfield.txt:[[http://api.silverstripe.org/trunk/forms/fields-formattedinput/ConfirmedPasswordField.html|Click here for the API documentation]].
../input/contentdeliverynetworkissues.txt:When adding a SilverStripe installation to a content delivery network, or a grid server (such as MediaTemple's [[http://mediatemple.net/webhosting/gs/|(gs) Grid Service]]), some additional problems present themselves. These are listed below.
../input/contributing.txt:  * [[http://silverstripe.org/forums|silverstripe.org/forums]]: Forums on silverstripe.org
../input/contributing.txt:  * [[http://groups.google.com/group/silverstripe-dev|silverstripe-dev]]: Core development mailinglist
../input/contributing.txt:  * [[http://groups.google.com/group/silverstripe-documentation|silverstripe-documentation]]: Documentation team mailinglist
../input/contributing.txt:If you have created a patch to fix a bug in one the modules - thank you so much! :D To submit the patch, [[http://open.silverstripe.com/register|register]] and attach the patch to the appropriate ticket. Please include in the comment the revision number that the patch is applicable for and a brief outline of what you fixed and how. 
../input/contributing.txt:[[http://open.silverstripe.com/newticket?field_type=patch&field_owner=ischommer&attachment=1|Submit a patch (requires account on open.silverstripe.org)]]
../input/contributing.txt:The [[contributors|core team]] is responsible for reviewing the patches and deciding if they will make it into core.  If there are any problems they will assign the ticket back to you, so make sure you have an email address loaded into Trac so that it will notify you! The Trac report [[http://open.silverstripe.com/report/10|Active Patches]] will let you see where all the patches are at.
../input/contributing.txt:  * Submit your patch in //diff -u// or //diff -c format//. See [[subversion]] for more information on creating patches.
../input/contributing.txt:  * **Check your patches against a svn checkout of the [[http://open.silverstripe.com/browser/modules|current trunk]]**.  Please not that the latest stable release will often not be sufficient! (of all modules)
../input/contributing.txt:  * If your patch is extensive, discuss it first on the [[[[http://www.silverstripe.com/silverstripe-forum/|silverstripe forum]] (optimally before doing any serious coding)
../input/contributing.txt:  * Adhere to our [[http://doc.silverstripe.com/doku.php?id=coding-conventions|coding conventions]]
../input/contributing.txt:  * Provide complete [[testing-guide|unit test coverage]] - depending on the complexity of your work, this is a required step.
../input/contributing.txt:  * Document your code inline through [[http://en.wikipedia.org/wiki/PHPDoc|PHPDoc]] syntax. See our [[http://api.silverstripe.org/trunk|API documentation]] for good examples.
../input/contributing.txt:  * Also check and refer to wiki documentation on [[http://doc.silverstripe.com |doc.silverstripe.com]] which needs changes. Check for any references to functionality deprecated or extended through your patch. Please don't alter the documentation before your patch is integrated.
../input/contributing.txt:  * Remember the [[http://subversion.tigris.org/project_tasks.html#svn-augmented-diff|shortcomings]] of //svn diff//: Please document moved files and created/deleted directories separately
../input/contributing.txt:Report security issues to [[mailto:security@silverstripe.com|security@silverstripe.com]]. Please don't file security issues in our [[http://open.silverstripe.org|bugtracker]]. In the event of a confirmed vulnerability in SilverStripe core, we will take the following actions:
../input/contributing.txt:  * We will inform you about resolution and [[http://groups.google.com/group/silverstripe-announce|announce]] a [[http://silverstripe.org/security-releases/|new release]] publically.
../input/contributing.txt:  * End-user: [[http://userhelp.silverstripe.com|userhelp.silverstripe.com]]: 
../input/contributing.txt:  * Developer Guides: [[http://doc.silverstripe.com|doc.silverstripe.com]]
../input/contributing.txt:  * Developer API Docuumentation: [[http://api.silverstripe.com|api.silverstripe.com]]
../input/contributing.txt:  * Leave lowlevel technical documentation to class-level [[http://en.wikipedia.org/wiki/PHPDoc|PHPDoc]]. Remember: Both forms of documenting sourcecode (PHPDoc/wiki) are valueable ressources, **one should complement the other**.
../input/contributing.txt:  * Use the **wiki-syntax** correctly ([[wiki:syntax|syntax]])
../input/contributing.txt:  * Linking other pages: Make sure to **refer to related topics** (e.g. [[templates]] could refer to [[css]]).
../input/contributing.txt:  * Further info: [[http://www.slash7.com/articles/2006/11/15/tech-writing-the-five-sins|How tech writing sucks: Five Sins]] and [[http://www.techscribe.co.uk/techw/whatis.htm|What is good documentation?]]
../input/contributors.txt:They coordinate the opensource effort, community communication and keep an eye on the bigger picture. Of course there are many other contributors, as employees of [[http://silverstripe.com/company|Silverstripe Ltd]] or as coders from all around the world. You can meet most of these fellows on our [[http://silverstripe.org/irc-channel/|IRC channel]].
../input/contributors.txt:The opensource contributor platform [[http://www.ohloh.net/projects/silverstripe|Ohloh]] provides a good overview of current core contributions.
../input/contributors.txt:[[module-maintainers|Module maintainers]] are usually noted in the README file of a specific module. You can [[http://open.silverstripe.com/browser/modules|browse the source of all modules]] to find those files. Frequent contributors to a module are best identified by looking at the subversion changelog.
../input/contributors.txt:Anyone can submit a patch, but some people are recognised as regularly contributing patches to a particular part of the core or module.  We endeavour to review all patches that are submitted as quickly as possible, and if they meet our requirements, merge them into trunk. See [[subversion]] for information on how to create patches.
../input/contributors.txt:Sometimes, the volume of working being contributed will mean that merging patches is too much of an administrative burden.  In these cases, we can set up a **temporary feature branch** for that conributor. See [[subversion]] for details on how to use feature branches.
../input/contributors.txt:The highest level of access are the maintainers, as described on [[module-maintainers]].  They have commit rights to trunk, as well as the ability to create branches and tags.  Generally only the key people working on a module will have trunk committer access. See [[subversion]] for infos how to commit to the repository and tag new releases.
../input/contributors.txt:  * [[http://www.silverstripe.com/how-to-contribute/|"How to contribute" on silverstripe.com]]
../input/contributors.txt:  * [[submitting-patches]]
../input/contributors.txt:  * [[module-maintainers]]
../input/contributors.txt:  * [[module-releases]]
../input/contributors.txt:  * [[subversion]]
../input/controllers.txt:  * [[recipes:controllers]]
../input/controller.txt:In the above example the URLs were configured using the [[director]] rules in the **_config.php** file.  Alternatively you can specify these in your Controller class via the **$url_handlers** static array (which gets processed by the RequestHandler).  
../input/controller.txt:You can use the **debug_request=1** switch from the [[urlvariabletools]] to see these in action.
../input/controller.txt:[[http://api.silverstripe.org/trunk/sapphire/Controller.html|Click here for the API documentation]].
../input/controller.txt:  * [[director]]
../input/controller.txt:  * [[execution-pipeline]]
../input/controller.txt:  * [[http://maetl.net/silverstripe-url-handling|URL Handling in Controllers]] by maetl
../input/creating-modules.txt:  - Inside your module directory, follow our [[directory-structure#module_structure|directory structure guidelines]]
../input/creating-modules.txt:If you wish to submit your module to our public directory, you take responsibility for a certain level of code quality, adherence to conventions, writing documentation, and releasing updates. See [[module-maintainers]].
../input/creating-modules.txt:  * [[leftandmain|Add a link to your module in the main SilverStripe Admin Menu]]
../input/creating-modules.txt:  * [[debugging|Debugging methods]]
../input/creating-modules.txt:  * [[urlvariabletools|URL Variable Tools]] - Lists a number of “page options” , “rendering tools” or “special URL variables” that you can use to debug your sapphire applications
../input/css.txt:But in SilverStripe you can include your CSS Files through PHP via the [[Requirements]] Class. This means you can load / choose not to load files based on your code. If you want to include CSS files you need to know when your going to use it. Most of the time you want it on everypage of the site at all times so you can add it to the init() function on the Page Controller.
../input/css.txt:[[http://www.456bereastreet.com/archive/200612/internet_explorer_and_the_css_box_model/]]
../input/css.txt:[[http://www.satzansatz.de/cssd/onhavinglayout.html]]
../input/css.txt:[[http://www.brunildo.org/test/IEABlock1.html]]
../input/css.txt:[[http://jehiah.cz/archive/button-width-in-ie-revised]]
../input/css.txt:[[http://www.mezzoblue.com/archives/2003/11/17/css_best_pra/]]
../input/css.txt:[[http://msdn2.microsoft.com/en-us/library/ms537512.aspx]]
../input/css.txt:[[http://meyerweb.com/eric/thoughts/2006/02/08/unitless-line-heights/]]
../input/css.txt:For reference: [[http://www.w3.org/TR/html4/struct/text.html#edef-BLOCKQUOTE]]
../input/css.txt:Here's a possible solution to getting alpha transparent PNGs to work in IE6: [[http://bjorkoy.com/past/2007/4/8/the_easiest_way_to_png/]].
../input/css.txt:The original source of this guide is found here: [[http://www.twinhelix.com/css/iepngfix/]].
../input/css.txt:[[http://robertdot.org/files/2007/04/24/floats.html]]
../input/csvbulkloader.txt:Integration into a new [[ModelAdmin]] instance to get an upload form out of the box (accessible through ///admin/players//):
../input/csvbulkloader.txt:[[http://doc.silverstripe.com/assets/classes/cms/bulkloading/CsvBulkLoader.html|Click here for the API documentation]].
../input/csvbulkloader.txt:  * [[CsvParser]]
../input/csvbulkloader.txt:  * [[ModelAdmin]]
../input/currencyfield.txt:[[http://api.silverstripe.org/trunk/forms/fields-formattedinput/CurrencyField.html|Click here for the API documentation]].
../input/customrequiredfields.txt:[[http://api.silverstripe.org/trunk/sapphire/CustomRequiredFields.html|Click here for the API documentation]].
../input/customrequiredfields.txt:CustomRequiredFields allow you to create your own validation on forms, while still having the ability to have required fields (as used in [[http://api.silverstripe.org/current/sapphire/form/RequiredFields.html|RequiredFields]]).
../input/daily-builds.txt:See [[http://silverstripe.org/daily-builds/]]
../input/database-abstraction.txt:[[http://drupal.org/node/555514|This document from Drupal's wiki is also helpful]]
../input/database-abstraction.txt:For more in-depth information on database compatability, see [[sql-syntax-compatibility]]
../input/database-structure.txt:  * [[http://api.silverstripe.org/trunk/sapphire/model/DataObject.html|DataObject]]
../input/database-structure.txt:  * [[http://api.silverstripe.org/trunk/sapphire/model/Versioned.html|Versioned]]
../input/database-structure.txt:  * [[MySQLDatabase]]: getNextID() is used when creating new objects; it also handles the mechanics of updating the database to have the required schema.
../input/database-structure.txt:See [[database-troubleshooting]] for common issues that happen with our database structure.
../input/datamodel.txt:Silverstripe uses an [[http://en.wikipedia.org/wiki/Object-relational_model|object-relational model]] that assumes the following connections:
../input/datamodel.txt:All data tables in Silverstripe are defined as subclasses of [[http://api.silverstripe.org/trunk/sapphire/model/DataObject.html|DataObject]]. Inheritance is supported in the data model: seperate tables will be linked together, the data spread across these tables. The mapping and saving/loading logic is handled by sapphire, you don't need to worry about writing SQL most of the time. 
../input/datamodel.txt:The advanced object-relational layer in Silverstripe is one of the main reasons for requiring PHP5. Most of its customizations are possible through [[http://www.onlamp.com/pub/a/php/2005/06/16/overloading.html|PHP5 Object Overloading]] handled in the [[Object]]-class.
../input/datamodel.txt:See [[database-structure]] for in-depth information on the database-schema.
../input/datamodel.txt:See [[objectmodel]] for further details about casting values and the underlying property-transformations.
../input/datamodel.txt:There are static methods available for querying data. They automatically compile the necessary SQL to query the database so they are very helpful. In case you need to fall back to plain-jane SQL, have a look at [[sqlquery]].
../input/datamodel.txt:CAUTION: Please make sure to properly escape your SQL-snippets (see [[security]] and [[escape-types]]).
../input/datamodel.txt:Passing a //$join// statement to DataObject::get will filter results further by the JOINs performed against the foreign table. **It will NOT return the additionally joined data.**  The returned //$records// will always be a [[http://api.silverstripe.org/trunk/sapphire/model/DataObject.html|DataObject]].
../input/datamodel.txt:When using //$join// statements be sure the string is in the proper format for the respective database engine.  In  MySQL the use of backticks may be necessary when referring Table Names and potentially Columns. (see [[http://dev.mysql.com/doc/refman/5.0/en/identifiers.html|MySQL Identifiers]]):
../input/datamodel.txt:See [[data-types]] for all available types.
../input/datamodel.txt:Note: Alternatively you can set defaults directly in the database-schema (rather than the object-model). See [[data-types]] for details.
../input/datamodel.txt:Properties defined in //static $db// are automatically casted to their [[data-types]] when used in templates. 
../input/datamodel.txt:Silverstripe's [[http://api.silverstripe.org/trunk/cms/SiteTree.html|SiteTree]] base-class for content-pages uses a 1-to-1 relationship to link to its
../input/datamodel.txt:See [[recipes:many_many-example]] for a more in-depth example
../input/datamodel.txt:Inside sapphire it doesn't matter if you're editing a //has_many//- or a //many_many//-relationship. You need to get a [[http://api.silverstripe.org/trunk/sapphire/model/ComponentSet.html|ComponentSet]] on one side of the relationship (even if it is empty its still a valid ComponentSet) and use the //add()//-function on this (it automatically sets the correct keys in either the many_many-join-table or the has_many-foreign-key).
../input/datamodel.txt:You can use the flexible datamodel to get a filtered result-list without writing any SQL. For example, this snippet gets you the "Players"-relation on a team, but only containing active players. (See [[#has_many]] for more info on the described relations).
../input/datamodel.txt:Alternatively you can use //castedUpdate()// to respect the [[data-types]]. This is preferred to manually casting data before saving.
../input/datamodel.txt:Example: Checking for a specific [[permission]] to delete this type of object.
../input/datamodel.txt:See [[form]] and [[recipes:forms]]
../input/datamodel.txt:See [[sqlquery]] for custom //INSERT//, //UPDATE//, //DELETE// queries.
../input/datamodel.txt:You can add properties and methods to existing DataObjects like [[Member]] (a core class) without hacking core code or subclassing.
../input/datamodel.txt:Please see [[dataobjectdecorator]] for a general description, and [[http://api.silverstripe.org/trunk/sapphire/model/Hierarchy.html|Hierarchy]]/[[http://api.silverstripe.org/trunk/sapphire/model/Versioned.html|Versioned]] for our most popular examples.
../input/datamodel.txt:A [[http://api.silverstripe.org/trunk/sapphire/model/ComponentSet.html|ComponentSet]] which extends [[http://api.silverstripe.org/trunk/sapphire/model/DataObject.html|DataObject]] with relation-specific functionality.
../input/datamodel.txt:  * [[objectmodel]]
../input/datamodel.txt:  * [[many_many-example]]
../input/datamodel.txt:  * [[database-troubleshooting]]
../input/datamodel.txt:  * [[database-structure]]
../input/dataobjectdecorator.txt: Extensions (also referred to as decorators) allow for adding additional functionality to a [[http://api.silverstripe.org/trunk/sapphire/model/DataObject.html|DataObject]] class without subclassing (similiar to //mixins// in Ruby). Note that this is **NOT** an implementation of the classic [[http://devzone.zend.com/article/4-PHP-Patterns-Introduction-continued|Decorator Design Pattern]]. Rather it allows you to add methods and properties to an existing class, using [[http://www.onlamp.com/pub/a/php/2005/06/16/overloading.html|PHP5 Magic Methods]].
../input/dataobjectdecorator.txt:In some cases, it can be easier to completely replace the used class throughout the core with your custom implementation. Have a look at [[Object]]->useCustomClass().
../input/dataobjectdecorator.txt:To do this, define the **augmentWrite(&$manipulation)** method.  This method is passed a manipulation array representing the write about to happen, and is able to amend this as desired, since it is passed by reference.  For more information about manipulation arrays, see [[manipulation-arrays]].
../input/dataobjectdecorator.txt:To do this, define the **augmentSQL(SQLQuery &$query)** method.  Again, the $query object is passed by reference and can be modified as needed by your method.  Instead of a manipulation array, we have a [[SQLQuery]] object.
../input/dataobjectdecorator.txt:[[http://api.silverstripe.org/trunk/sapphire/DataObjectDecorator.html|Click here for the API documentation]]. 
../input/dataobjectset.txt:This class represents a set of [[dataobject|database objects]], such as the results of a query. It is the base for all [[datamodel]]-related querying. It implements the [[http://php.net/manual/en/language.oop5.iterations.php|Iterator interface]] introduced in PHP5.
../input/dataobjectset.txt:Relations (has_many/many_many) are described in [[http://api.silverstripe.org/trunk/sapphire/model/ComponentSet.html|ComponentSet]], a subclass of DataObjectSet.
../input/dataobjectset.txt:You can group a set by a specific column. Consider using [[SQLQuery]] with a //GROUP BY// statement for enhanced performance.
../input/dataobjectset.txt:When using [[DropdownField]] and its numerous subclasses to select a value from a set, you can easily map the records to a compatible array:
../input/dataobjectset.txt:Use [[http://doc.silverstripe.com/assets/classes/default/DataObjectSet.html#buildNestedUL|buildNestedUL]] to return a nested unordered list out of a "chain" of DataObject-relations.
../input/dataobjectset.txt:[[http://api.silverstripe.org/trunk/sapphire/DataObjectSet.html|Click here for the API documentation]].
../input/dataobject.txt:  * [[datamodel]]: The basic pricinples
../input/dataobject.txt:  * [[objectmodel]]: Casting and special property-parsing
../input/dataobject.txt:  * [[http://api.silverstripe.org/trunk/sapphire/model/DataObject.html|DataObject]]: A "container" for DataObjects
../input/dataobject.txt:The call to ''DataObject->getCMSFields()'' is the centerpiece of every data administration interface in Silverstripe, which returns a [[http://api.silverstripe.org/trunk/forms/core/FieldSet.html|FieldSet]] suitable for a [[http://api.silverstripe.org/trunk/forms/core/Form.html|Form]] object. If not overloaded, we're using ''@link scaffoldFormFields()'' to automatically generate this set. To customize, overload this method in a subclass or decorate onto it by using ''DataObjectDecorator->updateCMSFields()''.
../input/dataobject.txt:These calls retrieve a [[http://api.silverstripe.org/trunk/forms/core/FieldSet.html|FieldSet]] that can be used to add or edit entries from the DataObject.  Use the following examples to get an appropriate [[http://api.silverstripe.org/trunk/forms/core/FieldSet.html|FieldSet]] for the area where you intend to work with the scaffolded form.
../input/dataobject.txt:Used for simple frontend forms without relation editing or [[TabSet]] behaviour. Uses ''scaffoldFormFields()'' by default. To customize, either overload this method in your subclass, or decorate it by ''DataObjectDecorator->updateFormFields()''.
../input/dataobject.txt:This section covers how to enhance the default scaffolded form fields from above.  It is particularly useful when used in conjunction with the [[ModelAdmin]] in the CMS to make relevant data administration interfaces.
../input/dataobject.txt:Summary fields can be used to show a quick overview of the data for a specific DataObject record. Most common use is their display as table columns, e.g. in the search results of a [[ModelAdmin]] CMS interface.
../input/dataobject.txt:[[http://api.silverstripe.org/trunk/sapphire/core/DataObject.html|Click here for the API documentation]].
../input/data-types.txt:These are the data-types that you can use when defining your data objects.  They are all subclasses of [[http://api.silverstripe.org/current/sapphire/model/DBField.html|DBField]]. See also [[form-field-types]], which lists all fields you can use to put these data types in forms. See [[tutorial:2-extending-a-basic-site]] for introducing their usage.
../input/data-types.txt:  * [[http://api.silverstripe.org/current/sapphire/model/Varchar.html|Varchar]]: A variable-length string of up to 255 characters, designed to store raw text
../input/data-types.txt:  * [[http://api.silverstripe.org/current/sapphire/model/Text.html|Text]]: A variable-length string of up to 2 megabytes, designed to store raw text
../input/data-types.txt:  * [[http://api.silverstripe.org/current/sapphire/model/HTMLVarchar.html|HTMLVarchar]]: A variable-length string of up to 255 characters, designed to store HTML
../input/data-types.txt:  * [[http://api.silverstripe.org/current/sapphire/model/HTMLText.html|HTMLText]]: A variable-length string of up to 2 megabytes, designed to store HTML
../input/data-types.txt:  * [[http://api.silverstripe.org/current/sapphire/model/Enum.html|Enum]]: An enumeration of a set of strings.
../input/data-types.txt:  * [[http://api.silverstripe.org/current/sapphire/model/Boolean.html|Boolean]]: An boolean (true/false) field.
../input/data-types.txt:  * [[http://api.silverstripe.org/current/sapphire/model/Int.html|Int]]: An integer field.
../input/data-types.txt:  * [[http://api.silverstripe.org/current/sapphire/model/Decimal.html|Decimal]]/[[http://api.silverstripe.org/current/sapphire/model/Float.html|Float]]/[[http://api.silverstripe.org/current/sapphire/model/Double.html|Double]]: A decimal number.
../input/data-types.txt:  * [[http://api.silverstripe.org/current/sapphire/model/Currency.html|Currency]]: A number with 2 decimal points of precision, designed to store currency values.
../input/data-types.txt:  * [[http://api.silverstripe.org/current/sapphire/model/Percentage.html|Percentage]]: A decimal number between 0 and 1 that represents a percentage.
../input/data-types.txt:  * [[http://api.silverstripe.org/current/sapphire/model/Date.html|Date]]: A date field
../input/data-types.txt:  * [[http://api.silverstripe.org/current/sapphire/model/SS_Datetime.html|SS_Datetime]]: A date / time field
../input/data-types.txt:  * [[http://api.silverstripe.org/current/sapphire/model/Time.html|Time]]: A time field
../input/data-types.txt:  * See [[datamodel]] for information about **database schemas** implementing these types
../input/data-types.txt:  * See [[objectmodel]] for information about **casting** values to these types
../input/datefield.txt:[[http://api.silverstripe.org/trunk/forms/fields-datetime/DateField.html|Click here for the API documentation]].
../input/datepickerfield.txt:The DatePickerField comes bundled with the [[http://api.silverstripe.org/trunk/sapphire/model/DataObject.html|DataObject]] package to allow a jQuery-compliant calendar date picker in the popup window.
../input/debugging.txt:Silverstripe knows three different environment-types (or "debug-levels"). Each of the levels gives you different tools and functionality. "//dev//", "//test//" and "//live//". You can either configure the environment of the site in the mysite/_config.php file or in your [[environment-management|environment configuration file]].
../input/debugging.txt:You can get lots of information on the current rendering context without writing any code or launching a debugger: Just attach some [[urlvariabletools|Debug Parameters]] to your current URL to see the compiled template, or all performed SQL-queries.
../input/debugging.txt:  * Putting //Debug::show()// and //Debug::message()// at key places in the code can help you know what's going on.  Sometimes, it helps to put this debugging information into the core modules, although, if possible, try and get what you need by using [[urlvariabletools|url querystring variables]].
../input/debugging.txt:  * There are some special [[urlvariabletools|url querystring variables]] that can be helpful in seeing what's going on with core modules, such as the templates.
../input/debugging.txt:A good way to avoid writing the same test stubs and var_dump() commands over and over again is to codify them as [[testing-guide|unit tests]]. This way you integrate the debugging process right into your quality control, and eventually in the development effort itself as "test-driven development".
../input/deprecation.txt:  * Mark in which release the function was deprecated (find out next release in the [[http://open.silverstripe.com/roadmap|roadmap]]), so we can determine when to finally remove it.
../input/director.txt:[[http://api.silverstripe.org/2.4/sapphire/control/Director.html|Full method documentation available here]]
../input/director.txt:  * Forcing a site to run in SSL mode: see [[ssl]]
../input/director.txt:See [[controller]] for examples and explanations on how the rules get processed for both 1 and 2 above. 
../input/director.txt:  * [[http://open.silverstripe.org/browser/modules/sapphire/trunk/_config.php|sapphire/_config.php]]
../input/director.txt:  * [[http://open.silverstripe.org/browser/modules/cms/trunk/_config.php|cms/_config.php]]
../input/director.txt:  * See [[execution-pipeline]] for custom routing
../input/directory-structure.txt:|<mysite>/templates | HTML [[templates]] with *.ss-extension|
../input/directory-structure.txt:See themes:[[:themes:developing]]
../input/directory-structure.txt:Due to the way [[ManifestBuilder]] recursively detects php-files and includes them through PHP5's //__autoload()//-feature, you don't need to worry about include paths. Feel free to structure your php-code into subdirectories inside the //code//-directory.
../input/directory-structure.txt:See [[secure-development#filesystem|secure-development#filesystem]]
../input/documentation-guidelines.txt:Moved to [[contributing]]
../input/dropdownfield.txt:You can automatically create a map of possible values from an [[http://api.silverstripe.org/current/sapphire/model/Enum.html|Enum]] database column.
../input/dropdownfield.txt:[[http://api.silverstripe.org/trunk/forms/fields-basic/DropdownField.html|Click here for the API documentation]].
../input/ecommercerole.txt:[[http://doc.silverstripe.com/assets/classes/ecommerce/EcommerceRole.html|Click here for the API documentation]].
../input/emailfield.txt:[[http://api.silverstripe.org/trunk/forms/fields-formattedinput/EmailField.html|Click here for the API documentation]].
../input/email.txt:If you are not running an SMTP server together with your webserver, you might need to setup PHP with the credentials for an external SMTP server (see [[http://php.net/mail|PHP documentation for mail()]]).
../input/email.txt:  * Fill this out with the body text for your email. You can use any [[templates|SS-template syntax]] (e.g. <% control %>, <% if %>, $FirstName etc)
../input/email.txt:[[email_bouncehandler]]
../input/email.txt:The [[modules:newsletter|newsletter module]] provides a UI and logic to send batch emails.
../input/email.txt:[[http://api.silverstripe.org/trunk/sapphire/Email.html| Click here for API documentation]]
../input/error-handling.txt:You should use [[http://www.php.net/user_error|user_error]] to throw errors where appropriate.  The more information we have about what's not right in the system, the better we can make the application.
../input/error-handling.txt:  * Create a page of type [[ErrorPage]].
../input/escape-types.txt:The [[Convert]] class has a number of methods of the form Convert::(prefix)2(prefix), that will be able to convert from one form to another.  They can take either strings or arrays and perform appropriate conversions.  When converting an array, only the values are converted, not the keys.
../input/escape-types.txt:The [[ViewableData]] class, parent to most objects you'll deal with in SilverStripe, has a number of methods of the form (prefix)_val.  These functions will convert the value of a field or result of a method call to the correct value for you.
../input/execution-pipeline.txt:Silverstripe uses **[[http://httpd.apache.org/docs/2.0/mod/mod_rewrite.html|mod_rewrite]]** to deal with page requests. So instead of having your normal everyday ''index.php'' file which tells all, you need to look elsewhere. 
../input/execution-pipeline.txt:See the [[http://httpd.apache.org/docs/2.0/mod/mod_rewrite.html|mod_rewrite documentation]] for more information on how mod_rewrite works.
../input/execution-pipeline.txt:**See:** [[http://api.silverstripe.org/trunk/sapphire/core/_sapphire---main.php.html|The API documentation of main.php]] for information about how main.php processes requests.
../input/execution-pipeline.txt:main.php relies on Director to work out which controller should handle this request.  Director will instantiate that controller object and then call [[http://api.silverstripe.org/trunk/sapphire/control/Controller.html#run|Controller::run()]].
../input/execution-pipeline.txt:**See:** [[http://api.silverstripe.org/trunk/sapphire/control/Director.html|The API documentation of Director]] for information about how Director parses URLs and hands control over to a controller object.
../input/execution-pipeline.txt:**See:** [[http://api.silverstripe.org/trunk/sapphire/control/Controller.html|The API documentation for Controller]]
../input/execution-pipeline.txt:See [[templates]] for information on the SSViewer template system.
../input/execution-pipeline.txt:**See:** [[http://api.silverstripe.org/trunk/sapphire/view/SSViewer.html|The API documentation for SSViewer]]
../input/fieldgroup.txt:[[http://api.silverstripe.org/trunk/forms/fields-structural/FieldGroup.html|Click here for the API documentation]].
../input/filefield.txt:If you want to implement a [[FileField]] into a form element, you need to pass it an array of source data.
../input/filefield.txt:[[http://api.silverstripe.org/trunk/forms/fields-files/FileField.html|Click here for the API documentation]]. 
../input/flickrservice.txt:Refer [[http://www.flickr.com/services/api|Flickr API]] for more methods.
../input/formaction.txt:If you want to implement a [[http://api.silverstripe.org/trunk/forms/core/Form.html|Form]] into a form element, you need to pass it an array of source data.
../input/formaction.txt:[[http://api.silverstripe.org/trunk/forms/actions/FormAction.html|Click here for the API documentation]]. 
../input/form-field-types.txt:This is a highlevel overview of available FormFields. An automatically generated list is available through our [[http://api.silverstripe.org/2.4/forms/core/FormField.html|API Documentation]]. 
../input/form-field-types.txt:  * [[AjaxUniqueTextField]]: Text field that automatically checks that the value entered is unique for the given set of fields in a given set of tables
../input/form-field-types.txt:  * [[AutocompleteTextField]]
../input/form-field-types.txt:  * [[ConfirmedPasswordField]]: Shows two password-fields, and checks for matching passwords.
../input/form-field-types.txt:  * [[CreditCardField]]
../input/form-field-types.txt:  * [[CurrencyField]]
../input/form-field-types.txt:  * [[EmailField]]
../input/form-field-types.txt:  * [[HTMLEditorField]]: A WYSIWYG editor field, powered by tinymce.
../input/form-field-types.txt:  * [[NumericField]]: A Single Numeric field extending a typical TextField but with validation.
../input/form-field-types.txt:  * [[PasswordField]]
../input/form-field-types.txt:  * [[UniqueRestrictedTextField]]: Text field that automatically checks that the value entered is unique for the given set of fields in a given set of tables
../input/form-field-types.txt:  * [[UniqueTextField]]: Text field that automatically checks that the value entered is unique for the given set of fields in a given set of tables
../input/form-field-types.txt:  * [[DateField]]: Represents a date in a textfield (New Zealand)
../input/form-field-types.txt:  * [[DatetimeField]]: Combined date- and time field
../input/form-field-types.txt:  * [[TimeField]]: Represents time in a textfield (New Zealand)
../input/form-field-types.txt:  * [[CompositeField]]: Base class for all fields that contain other fields. Uses <div> in template, but doesn't necessarily have any visible styling.
../input/form-field-types.txt:  * [[FieldGroup]]: Same as CompositeField, but has default styling (indentation) attached in CMS-context.
../input/form-field-types.txt:  * [[http://api.silverstripe.org/trunk/forms/core/FieldSet.html|FieldSet]]: Basic container for sequential fields, or nested fields through CompositeField. Does NOT render a <fieldgroup>.
../input/form-field-types.txt:  * [[TabSet]]
../input/form-field-types.txt:  * [[Tab]]
../input/form-field-types.txt:  * [[http://api.silverstripe.org/trunk/forms/core/Form.html|Form]] for more info
../input/form-field-types.txt:  * [[InlineFormAction]]:  Render a button that will act as If you want to add custom behaviour, please set {inlcudeDefaultJS} to false and work with behaviour.js.
../input/form-field-types.txt:  * [[http://api.silverstripe.org/trunk/sapphire/model/Image.html|Image]]: Action that uses an image instead of a button
../input/form-field-types.txt:  * [[InlineFormAction]]: Prevents placement of a button in the CMS-button-bar.
../input/form-field-types.txt:  * [[FileField]]: Simple file upload dialog.
../input/form-field-types.txt:  * [[FileIFrameField]]: File uploads through an iframe
../input/form-field-types.txt:  * [[http://api.silverstripe.org/trunk/sapphire/model/Image.html|Image]]: Image upload through an iframe, with thumbnails and file-selection from existing assets
../input/form-field-types.txt:  * [[SimpleImageField]]:  SimpleImageField provides an easy way of uploading images to Image has_one relationships. Unlike ImageField, it doesn't use an iframe.
../input/form-field-types.txt:  * [[ComplexTableField]]: Provides a tabuar list in your form with view/edit/add/delete links to modify records with a "has-one"-relationship (in a lightbox-popup).
../input/form-field-types.txt:  * [[HasManyComplexTableField]]
../input/form-field-types.txt:  * [[HasOneComplexTableField]]
../input/form-field-types.txt:  * [[LanguageDropdownField]]:  An extension to dropdown field, pre-configured to list languages. Tied into i18n.
../input/form-field-types.txt:  * [[ManyManyComplexTableField]]
../input/form-field-types.txt:  * [[TableField]]
../input/form-field-types.txt:  * [[http://api.silverstripe.org/trunk/forms/fields-relational/TableListField.html|TableListField]]
../input/form-field-types.txt:  * [[TreeDropdownField]]
../input/form-field-types.txt:  * [[TreeMultiselectField]]: represents many-many joins using a tree selector shown in a dropdown-like element
../input/form-field-types.txt:  * [[http://api.silverstripe.org/trunk/sapphire/widgets/WidgetArea.html|WidgetArea]]
../input/form-field-types.txt:  * [[DatalessField]] - Base class for fields which add some HTML to the form but don't submit any data or save it to the database
../input/form-field-types.txt:  * [[HeaderField]]: Renders a simple <h1>-<h6> header
../input/form-field-types.txt:  * [[HiddenField]]
../input/form-field-types.txt:  * [[LabelField]]
../input/form-field-types.txt:  * [[LiteralField]]: Renders arbitrary HTML into a form.
../input/form-field-types.txt:Please see [[fieldeditor]] for in-depth documentation about custom forms created through a GUI in the CMS.
../input/formresponse.txt:Example: A [[TableField]] is in an incorrect state after being saved, as it still has rows marked as "new" which are already saved (and have an ID) in the database. By using AjaxSynchroniser we make sure that every instance is refreshed by Ajax and reflects the correct state.
../input/formresponse.txt:[[http://api.silverstripe.org/2.4/forms/core/FormResponse.html|Click here for the API documentation]]
../input/form.txt:Form is the base class of all forms in a sapphire application. Forms in your application can be created either by instantiating the Form class itself, or by subclassing it. See [[recipes:forms|our form recipes]] for more specific information.
../input/form.txt:  * ''$fields'': A [[http://api.silverstripe.org/trunk/forms/core/FieldSet.html|FieldSet]] containing all the [[http://api.silverstripe.org/trunk/forms/core/Form.html|Form]]s that make up the editable portion of the form.
../input/form.txt:  * ''$actions'': A [[http://api.silverstripe.org/trunk/forms/core/FieldSet.html|FieldSet]] containing all the [[http://api.silverstripe.org/trunk/forms/core/Form.html|Form]]s that make up the control portion of the form - the butons at the bottom.
../input/form.txt:  * ''$validator'': An optional [[http://api.silverstripe.org/trunk/forms/validators/Validator.html|Validator]] object to define form validation.  Form validation is done on a per-form basis, rather than per-field basis.  See [[http://api.silverstripe.org/trunk/forms/validators/Validator.html|Validator]] for more information.
../input/form.txt:There are many classes extending [[http://api.silverstripe.org/current/forms/core/FormField.html|FormField]]. Some examples:
../input/form.txt:  * [[http://api.silverstripe.org/current/forms/fields-basic/TextField.html|TextField]]
../input/form.txt:  * [[http://api.silverstripe.org/current/forms/fields-basic/EmailField.html|EmailField]]
../input/form.txt:  * [[http://api.silverstripe.org/current/forms/fields-basic/NumericField.html|NumericField]]
../input/form.txt:  * [[http://api.silverstripe.org/current/forms/fields-basic/DateField.html|DateField]]
../input/form.txt:  * [[http://api.silverstripe.org/current/forms/fields-basic/CheckboxField.html|CheckboxField]]
../input/form.txt:  * [[http://api.silverstripe.org/current/forms/fields-basic/DropdownField.html|DropdownField]]
../input/form.txt:  * [[http://api.silverstripe.org/current/forms/fields-basic/OptionsetField.html|OptionsetField]]
../input/form.txt:  * [[http://api.silverstripe.org/current/forms/fields-basic/CheckboxSetField.html|CheckboxSetField]]
../input/form.txt:Full overview at [[form-field-types]]
../input/form.txt:SilverStripe tries to protect users against //Cross-Site Request Forgery (CSRF)// by adding a hidden //SecurityID// parameter to each form. See [[secure-development]] for details.
../input/form.txt:  * [[form-field-types]]
../input/form.txt:  * [[formfield]]
../input/form.txt:  * [[recipes:forms]]
../input/form.txt:  * [[modules:multiform]]
../input/form.txt:[[http://api.silverstripe.org/trunk/sapphire/forms/Form.html|Click here for the API documentation]]
../input/functionaltest.txt:[[http://doc.silverstripe.com/assets/classes/sapphire/testing/FunctionalTest.html|Click here for the API documentation]].
../input/getcmsfields.txt:This is the method you need to call to add / remove / edit fields in the CMS. For a tutorial on how to add your own fields to the CMS see [[http://doc.silverstripe.com/doku.php?id=tutorial:2-extending-a-basic-site|tutorial 2]] which covers how to add fields to your page types
../input/groupeddropdownfield.txt:If you want to implement a [[GroupedDropdownField]] into a form element, you need to pass it an array of source data.
../input/groupeddropdownfield.txt:[[http://api.silverstripe.org/trunk/forms/fields-basic/GroupedDropdownField.html|Click here for the API documentation]].
../input/gsoc.txt:  * [[GSoc:2008| Google Summer of Code 2008]] (draft ideas)
../input/gsoc.txt:  * See [[gsoc-subversion]] on how to access the code and make contributions
../input/gsoc.txt:  * [[GSoc:2007:i18n]] (Bernat Foj Capell, Ingo Schommer)
../input/gsoc.txt:  * [[GSoc:2007:ImageManipulation]] (Mateusz Ujma, Sam Minnee)
../input/gsoc.txt:  * [[GSoc:2007:GoogleMaps]] (Ofir Picazo Navarro, Hayden Smith)
../input/gsoc.txt:  * [[GSoc:2007:MashUps]] Lakshan Perera, Matt Peel
../input/gsoc.txt:  * [[GSoc:2007:MultipleDatabases]] (Philipp Krenn, Brian Calhoun)
../input/gsoc.txt:  * [[GSoc:2007:Reporting]] (Quin Hoxie, Sam Minnee)
../input/gsoc.txt:  * [[GSoc:2007:Security]] Markus Lanthaler, Hayden Smith
../input/gsoc.txt:  * [[Gsoc:2007:SEO]] (Will Scott, Brian Calhoun)
../input/gsoc.txt:  * [[Gsoc:2007:UsabilityElijah]] (Elijah Lofgren, Sean Harvey)
../input/gsoc.txt:  * [[GSoc:2007:UsabilityMeg]] (Meg Risen, Sean Harvey)
../input/hasmanycomplextablefield.txt:This [[RelationTable]] allows you to show a **1-to-many** relation with a group of DataObjects as a (readonly) tabular list (similiar to [[ComplexTableField]]). Its most useful when you want to manage the relationship itself thanks the **check boxes** present on each line of the table.
../input/hasmanycomplextablefield.txt:See [[ComplexTableField]] for more documentation on the base-class.
../input/hasmanycomplextablefield.txt:It works exactly in the same way than [[ComplexTableField]] :
../input/hasmanycomplextablefield.txt:**Notice** : You still have different ways to customize the popup window as in the parent-class [[ComplexTableField]].
../input/hasmanycomplextablefield.txt:To see an example of the //HasManyComplexTableField// table, follow this [[tutorial:5-dataobject-relationship-management|tutorial]].
../input/hasmanycomplextablefield.txt:[[http://api.silverstripe.org/trunk/forms/fields-relational/HasManyComplexTableField.html|Click here for the API documentation]].
../input/hasonecomplextablefield.txt:This [[RelationTable]] allows you to show a **1-to-1** or **1-to-many** relation with a group of DataObjects as a (readonly) tabular list (similiar to [[ComplexTableField]]). Its most useful when you want to manage the relationship itself thanks the **radio buttons** present on each line of the table.
../input/hasonecomplextablefield.txt:See [[ComplexTableField]] for more documentation on the base-class.
../input/hasonecomplextablefield.txt:See [[HasManyComplexTableField]] for more documentation on the relation table base-class.
../input/hasonecomplextablefield.txt:It works exactly in the same way than [[ComplexTableField]] :
../input/hasonecomplextablefield.txt:**Notice** : You still have different ways to customize the popup window as in the parent-class [[ComplexTableField]].
../input/hasonecomplextablefield.txt:This [[RelationTable]] is made to manage a **has_one** relation. In the SilverStripe [[datamodel|relation system]] between DataObjects, you can use this relation for **1-to-1** and **1-to-many** relations.
../input/hasonecomplextablefield.txt:To see an example of the //HasOneComplexTableField// table, follow this [[tutorial:5-dataobject-relationship-management|tutorial]].
../input/hasonecomplextablefield.txt:[[http://api.silverstripe.org/trunk/forms/fields-relational/HasOneComplexTableField.html|Click here for the API documentation]].
../input/headerfield.txt:If you want to implement a [[HeaderField]] into a form element, you need to pass it an array of source data.
../input/headerfield.txt:[[http://api.silverstripe.org/trunk/forms/fields-dataless/HeaderField.html|Click here for the API documentation]].
../input/hiddenfield.txt:If you want to implement a [[HiddenField]] into a form element, you need to pass it an array of source data.
../input/hiddenfield.txt:[[http://api.silverstripe.org/trunk/forms/fields-dataless/HiddenField.html|Click here for the API documentation]].
../input/hierarchy.txt:The ''Hierarchy'' class is a [[http://api.silverstripe.org/trunk/sapphire/model/DataObject.html|DataObject]] objects. It controls how pages related to each other in a nested tree structure, as well as determining order within tree leafs.
../input/hierarchy.txt:See [[http://api.silverstripe.org/trunk/cms/SiteTree.html|SiteTree]] for the most common usage patterns.
../input/how-page-security-works.txt: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 here: [[http://doc.silverstripe.com/doku.php?id=permissions:codes]]. 
../input/how-page-security-works.txt://Director.php// maps the 'admin' URL request through a //Director// rule to the CMSMain controller (see [[cmsmain]], with no arguments. 
../input/how-page-security-works.txt://Security::[[http://api.silverstripe.org/trunk/sapphire/Security.html#permissionFailure|permissionFailure]]// is the next utility function you can use to redirect to the login form. 
../input/how-page-security-works.txt:see [[http://api.silverstripe.org/trunk/cms/core/LeftAndMain.html|LeftAndMain]]
../input/htmleditorconfig.txt:You can customize any of the [[http://wiki.moxiecode.com/index.php/TinyMCE:Configuration|TinyMCE]] options by calling setOption('optionname', 'value').
../input/htmleditorfield.txt:[[http://api.silverstripe.org/trunk/forms/fields-formattedinput/HtmlEditorField.html|Click here for the API documentation]]. 
../input/html.txt:These guidelines are designed to provide designers and developers of SilverStripe [[Widgets|widgets]], [[Themes|themes]] and [[modules|modules]] with generic HTML that is easily adaptable in different modules and projects.
../input/html.txt:See [[http://api.silverstripe.org/2.3/sapphire/control/ContentNegotiator.html|ContentNegotiator]] class for automatically converting between HTML and XHTML in SilverStripe responses (deprecated as of SilverStripe 2.4).
../input/html.txt:Using **[[css|CSS]]** and tags (including ''DIV''s) reduces markup code, speeds up page downloads, separates content from it's visual presentation, and brings your code closer to web standards compliance--all while making your website more appealing to search engine spiders.
../input/html.txt:   * [[http://webkit.org/blog/?p=68|Understanding HTML, XML and XHTML]]
../input/html.txt:   * [[http://www.alistapart.com/articles/doctype/|A List Apart - Fix your site with the right DOCTYPE]]
../input/html.txt:   * [[tutorial:1-building-a-basic-site|Tutorial 1: Building a basic site]]
../input/html.txt:   * [[tutorial:2-extending-a-basic-site|Tutorial 2: Extending a basic site]]
../input/html.txt:   * [[css|CSS guidelines]]
../input/html.txt:   * [[Themes]]
../input/html.txt:   * [[Widgets]]
../input/html.txt:   * [[modules|Modules]]
../input/i18n.txt:For translating any content managed through the CMS or stored in the database, please refer to the [[multilingualcontent]] documentation (which explains the [[Translatable]] extension).
../input/i18n.txt:Please note that this project scope currently **doesn't include full support for format conversion in dates or currencies**. Check our [[http://open.silverstripe.com/roadmap|roadmap]].
../input/i18n.txt:  * [[MultilingualContent|Multilingual Website Content]]
../input/i18n.txt:Once we set a locale, all the calls to the translator function will return strings according to the set locale value, if these translations are available. See [[http://unicode.org/cldr/data/diff/supplemental/languages_and_territories.html|unicode.org]] for a complete listing of available locales.
../input/i18n.txt:**Note**: You'll need to install PHPUnit to run the text collector (see [[testing-guide]]).
../input/i18n.txt: * [[http://www.i18nguy.com/]]
../input/i18n.txt: * [[recipes:pretty_i18n_urls]]
../input/imagefield.txt:[[http://api.silverstripe.org/trunk/forms/fields-files/ImageField.html|Click here for the API documentation]].
../input/image.txt:Represents an image object, inheriting all base functionality from the [[file]] class with extra functionality including resizing.
../input/image.txt:  * [[http://api.silverstripe.org/trunk/sapphire/model/Image.html|Image]]. Designed to provide a complex image uploader for the CMS.
../input/image.txt:  * [[SimpleImageField]]. A Simple Image Upload Form
../input/image.txt:  * See [[recipes:imageupload]] for a example
../input/image.txt:For usage on a website form, see [[recipes:imageupload]] and [[simpleimagefield]].
../input/image.txt:If you want to upload images within the CMS, see [[imagefield]].
../input/image.txt:  * [[recipes:imageupload|Insert an ImageField into the CMS]]
../input/image.txt:  * [[http://api.silverstripe.org/trunk/sapphire/Image.html|Click here for the Image API documentation]].
../input/image.txt:  * [[http://api.silverstripe.org/trunk/sapphire/GD.html|Click here for the GD API documentation]]
../input/inlineformaction.txt:If you want to implement a [[InlineFormAction]] into a form element, you need to pass it an array of source data.
../input/inlineformaction.txt:[[http://api.silverstripe.org/trunk/forms/actions/InlineFormAction.html|Click here for the API documentation]].
../input/installation-into-subversion.txt:Moved to [[recipes:installation-into-subversion]]
../input/installation-on-lighttpd.txt:Rewrite rules do not check for file existence as they do on Apache. There is a ticket about it for Lighttpd: [[http://redmine.lighttpd.net/issues/985]].
../input/installation-on-mac-osx.txt:  * While OSX Comes bundled with PHP and Apache (Thanks Apple!) Its not quite ideal for SilverStripe so for setting up a webserver on OSX we suggest using MAMP - http://www.mamp.info/en/index.php. If you want to use the default OSX PHP version then you will need to recompile your own versions of PHP with GD so you can probably work out how to Install SilverStripe! but for those normal folk you want to go download the latest and greatest [[http://www.mamp.info/en/download.html|MAMP Version]] and run the installer.
../input/installation-on-mac-osx.txt:  * Okay! Hard part done. Now for the fun!. [[http://silverstripe.org/download|Download]] the latest SilverStripe installer package.
../input/installation-on-mac-osx.txt:  * To get GD working, you will need to download and install a new version of PHP.  [[http://docs.moodle.org/en/Step_by_Step_Installation_on_a_Mac_OS_X_10.5_Server#Install_the_GD_Library_on_the_Mac_OS_X_10.5_Server|This link on the moodle documentation]] explains how.
../input/installation-on-webserver.txt:  * [[http://doc.silverstripe.com/doku.php?id=installation-on-windows|Installation on a Windows Server]]
../input/installation-on-webserver.txt:  * [[http://doc.silverstripe.com/doku.php?id=installation-on-mac-osx|Installation on OSX]]
../input/installation-on-webserver.txt:  * [[http://silverstripe.org/download|Download]] the installer package
../input/installation-on-webserver.txt:  * Make sure the webserver has MySQL and PHP support.  See [[server-requirements|Server Requirements]] for more information. 
../input/installation-on-windows-manual-iis.txt:This page explains installing SilverStripe manually, without the use of (the easy to use) Web Platform Installer, and instead of Apache on Windows. See [[installation-on-windows]] to learn about those ways to install SilverStripe on Windows.
../input/installation-on-windows-manual-iis.txt:  * If you haven't already, [[http://learn.iis.net/page.aspx/246/using-fastcgi-to-host-php-applications-on-iis-70/|install  PHP using these instructions]] 
../input/installation-on-windows-manual-iis.txt:  * [[http://www.iis.net/expand/URLRewrite|Install the Microsoft URL Rewrite Module]]
../input/installation-on-windows-manual-iis.txt:  * [[http://www.iis.net/downloads/default.aspx?tabid=34&g=6&i=1682 |Install the Fast-CGI admin panel]] (not required on IIS 7.5+)
../input/installation-on-windows-manual-iis.txt:  * If you're running on MySQL, you will need to [[http://mysql.com|download and install that too]].
../input/installation-on-windows-manual-iis.txt:  * Install the [[http://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=ccdf728b-1ea0-48a8-a84a-5052214caad9|SQL Server Driver for PHP 1.1]], "sqlsrv".
../input/installation-on-windows-manual-iis.txt:    * IMPORTANT: You should install a non-thread safe version of [[http://windows.php.net/|PHP]] AND a non-thread safe version of the [[http://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=ccdf728b-1ea0-48a8-a84a-5052214caad9|SQL Server Driver for PHP 1.1]] "sqlsrv". VC9 of both is also preferred.
../input/installation-on-windows-manual-iis.txt:To fix this, [[http://learn.iis.net/page.aspx/246/using-fastcgi-to-host-php-applications-on-iis-70/#PHP_Recycling_Behavior|follow this guide on best practise setup]] for FastCGI applications on IIS.
../input/installation-on-windows-manual-iis.txt:You can also [[http://learn.iis.net/page.aspx/678/use-the-windows-cache-extension-for-php/|install wincache for IIS]], to improve performance on live sites.
../input/installation-on-windows-manual-iis.txt:  * On XP, you need to disable 'Check that file exists' (See [[installation-on-windows-pi]])
../input/installation-on-windows-pi.txt:[[http://www.microsoft.com/web/gallery/install.aspx?appsxml=www.microsoft.com%2fweb%2fwebpi%2f2.0%2fWebApplicationList.xml&amp;appid=105|{{http://www.silverstripe.org/assets/downloads/webpi/wpiBadgeGreen.png}}]]
../input/installation-on-windows.txt:  * Easy install using Web Platform Installer (uses IIS): [[installation-on-windows-pi]]
../input/installation-on-windows.txt:  * Manual install on IIS: [[installation-on-windows-manual-iis]]
../input/installation-on-windows.txt:  * Manual install on Apache: [[installation-on-windows-wamp]]
../input/installation-on-windows-wamp.txt:An easy and reliable approach to getting SilverStripe running on Windows is to use Apache, which can be convieniently done through [[http://www.wampserver.com/en/|WampServer]]. This can be useful if you are deploying on Linux Apache and want a Microsoft Windows machine with a very similar environment.
../input/installation-on-windows-wamp.txt:  * Note: Installing on Microsoft's IIS webserver is likely to be easier - See [[installation-on-windows-pi]]
../input/installation-on-windows-wamp.txt:  * [[http://www.silverstripe.com/assets/screencasts/silverstripe-installation-wamp/index.html|Watch as video.]]
../input/installation-on-windows-wamp.txt:  - [[http://silverstripe.org/download|Download]] the latest SilverStripe installer package
../input/installation-on-windows-wamp.txt:I use [[http://tortoisesvn.tigris.org/|TortiseSVN]] to mnage my SVN repos - gives me nice icons inside Windows Explorer and let's you commit/update etc easily. I like it better than Eclipse because it's a little more graphical but your mileage may vary.
../input/installation.txt:SilverStripe is a web application.  This means that you will need to have a web server meeting SilverStripe's  [[server-requirements|requirements]] running.
../input/installation.txt:The installation instructions below will take you through setting up an appropriate web server on your system.  The installation instructions will set you up with a SilverStripe website very similar to our [[http://demo.silverstripe.com/|our demo site]] uses. 
../input/installation.txt:If you run Windows, we recommend that you use [[installation-on-windows-pi|Microsoft's free Web Platform installer]]. If you are more technically inclined you can install using [[installation-on-windows-wamp|Apache on Windows]] or [[installation-on-windows-manual-iis|Manually install on IIS]].
../input/installation.txt:**[[installation-on-mac-osx|Instructions for installing on Mac OS X]]** or 
../input/installation.txt:[[http://www.silverstripe.org/assets/screencasts/Tutorial-InstallingMAMP-SW08.swf | Watch installation video contributed by an open source member]]
../input/installation.txt:**[[installation-on-webserver|Instructions for installing on an existing webserver]]**
../input/installation.txt:  * [[installation-on-webserver|Apache]]
../input/installation.txt:  * [[installation-on-lighttpd|Lighttpd (lighty)]]
../input/installation.txt:  * [[installation-on-windows|Microsoft IIS]]
../input/installation.txt:  * [[installation-on-nginx|Nginx]]
../input/installation.txt:  * [[installation-on-webserver|Other]]
../input/installation.txt:If you run into trouble, see [[common-problems]] or post to [[http://www.silverstripe.com/silverstripe-forum/|the SilverStripe forum]].
../input/installation.txt:If your installation does not allow PHP short tags i.e. you must have <%php, there is a bug in the current install package (2.3.1, 20 March 2009) that prevents Silverstripe installing. See this [[http://silverstripe.org/installing-silverstripe/show/256795?start=0|forum thread]] for details and how to fix it.
../input/installation.txt:  * [[installation-into-subversion]]
../input/installation.txt:  * [[environment-management]]
../input/installation.txt:  * [[http://silverstripe.org/download]]
../input/installation.txt:  * [[upgrading]]
../input/installation.txt:  * [[installing-modules]]
../input/installation.txt:  * [[server-requirements]]
../input/installation.txt:  * [[daily-builds]]
../input/installation.txt:  * [[common-problems]]
../input/installing-modules.txt:Moved to [[modules]]
../input/javascript.txt:See [[:Requirements]] documentation.
../input/javascript.txt:We predominantly use [[http://jquery.com|jQuery]] as our abstraction library for DOM related programming, within the SilverStripe CMS and certain framework aspects. 
../input/javascript.txt:For richer interactions such as drag'n'drop, and more complicated interface elements like tabs or accordions, SilverStripe CMS uses [[http://ui.jquery.com|jQuery UI]] on top of jQuery.
../input/javascript.txt:**Important**: Historically we have been using [[http://prototypejs.com|PrototypeJS]], which is now discouraged (see [[:javascript/prototypejs|legacy documentation]]). SilverStripe as a framework doesn't impose a choice of library. It tries to generate meaningful markup which you can alter with other JavaScript libraries as well. Only the CMS itself and certain form widgets require jQuery to function correctly. You can also use jQuery in parallel with other libraries, see [[http://docs.jquery.com/Using_jQuery_with_Other_Libraries|here]].
../input/javascript.txt:jQuery allows you to write complex behaviour in a couple of lines of JavaScript. Smaller features which aren't likely to be reused can be custom code without further encapsulation. For example, a button rollover effect doesn't require a full plugin. See "[[http://docs.jquery.com/How_jQuery_Works|How jQuery Works]]" for a good introduction.
../input/javascript.txt:A jQuery Plugin is essentially a method call which can act on a collection of DOM elements. It is contained within the ''jQuery.fn'' namespace, and attaches itself automatically to all jQuery collections. The basics for are outlined in the official [[http://docs.jquery.com/Plugins/Authoring|jQuery Plugin Authoring]] documentation.
../input/javascript.txt:There a certain [[http://www.learningjquery.com/2007/10/a-plugin-development-pattern|documented patterns]] for plugin development, most importantly:
../input/javascript.txt:  * Support the [[http://docs.jquery.com/Plugins/Metadata/metadata|Metadata Plugin]]
../input/javascript.txt:Example: A plugin to highlight a collection of elements with a configurable foreground and background colour (abbreviated example from [[http://www.learningjquery.com/2007/10/a-plugin-development-pattern|learningjquery.com]]).
../input/javascript.txt:See the [[http://jqueryui.com/docs/Developer_Guide|official developer guide]] and other [[http://bililite.com/blog/understanding-jquery-ui-widgets-a-tutorial/|tutorials]] to get started.
../input/javascript.txt:This is a deliberately simple example, the strength of jQuery.entwine over simple jQuery plugins lies in its public properties, namespacing, as well as its inheritance based on CSS selectors. Please see the [[http://github.com/hafriedlander/jquery.entwine/tree/master|project documentation]] for more complete examples.
../input/javascript.txt:You can run ''[[http://docs.jquery.com/Core/jQuery.noConflict|jQuery.noConflict()]]'' to avoid namespace clashes. NoConflict mode is enabled by default in the SilverStripe CMS javascript.
../input/javascript.txt:See [[http://docs.jquery.com/How_jQuery_Works#Launching_Code_on_Document_Ready|jQuery FAQ: Launching Code on Document Ready]].
../input/javascript.txt:Caution: Only applies to certain events, see the [[http://docs.jquery.com/Events/live|jQuery.live() documentation]].
../input/javascript.txt:$('input[[type=submit]]').bind('click', function() {
../input/javascript.txt:$('input[[type=submit]]').live(function() {
../input/javascript.txt:See [[http://docs.jquery.com/Frequently_Asked_Questions#Why_do_my_events_stop_working_after_an_AJAX_request.3F|jQuery FAQ: Why do my events stop working after an AJAX request]].
../input/javascript.txt:See [[http://jsbin.com/opuva|interactive example on jsbin.com]]
../input/javascript.txt:You can also use the [[http://docs.jquery.com/Plugins/Metadata/metadata|jQuery.metadata Plugin]] to serialize data into properties of DOM elements. This is useful if you want to encode element-specific data in markup, for example when rendering a form element through the SilverStripe templating engine.
../input/javascript.txt:See [[http://jsbin.com/axafa|interactive example on jsbin.com]]
../input/javascript.txt:Only return evaluated JavaScript snippets if unavoidable. Most of the time you can just pass data around, and let the clientside react to changes appropriately without telling it directly through JavaScript in AJAX responses. Don't use the [[http://api.silverstripe.org/trunk/forms/core/Form.html|:Form]] SilverStripe class, which is built solely around this inflexible concept.
../input/javascript.txt:Although they are the minority of cases, there are times when a simple HTML fragment isn't enough.  For example, if you have server side code that needs to trigger the update of a couple of elements in the CMS left-hand tree, it would be inefficient to send back the HTML of entire tree. SilverStripe can serialize to and from JSON (see the [[:Convert|Convert class]]), and jQuery deals very well with it through [[http://docs.jquery.com/Ajax/jQuery.getJSON#urldatacallback|jQuery.getJSON()]], as long as the HTTP content-type is properly set.
../input/javascript.txt:jQuery can bind to DOM events and trigger them through custom code (see [[documentation]]). It can also [[http://docs.jquery.com/Events/trigger|trigger custom events]], and supports [[http://docs.jquery.com/Namespaced_Events|namespaced events]].
../input/javascript.txt:See [[http://jsbin.com/ipeca|interactive example on jsbin.com]].
../input/javascript.txt:To generate documentation for SilverStripe code, use [[http://code.google.com/p/jsdoc-toolkit/|JSDoc toolkit]] (see [[http://code.google.com/p/jsdoc-toolkit/wiki/TagReference|reference of supported tags]]). For more class-oriented JavaScript, take a look at the [[http://code.google.com/p/jsdoc-toolkit/wiki/CookBook|jsdoc cookbook]]. The ''@lends'' and ''@borrows'' properties are particularly useful for documenting jQuery-style code.
../input/javascript.txt:JSDoc-toolkit is a commandline utility, see [[http://code.google.com/p/jsdoc-toolkit/wiki/CommandlineOptions|usage]].
../input/javascript.txt:It is important to verify that your code actually does what it says, and the best way to ensure this are **automated tests**. For jQuery, we use two different tools with different uses: **unit testing** with [[http://docs.jquery.com/QUnit|QUnit]] (also used by the jQuery team for the core libraries), and **behaviour driven testing** with [[http://visionmedia.github.com/jspec/|JSpec]]. There are overlaps between the two solutions, if in doubt start with JSpec, as it provides a much more powerful testing framework.
../input/javascript.txt:Example: QUnit test (from [[http://docs.jquery.com/QUnit#Using_QUnit|jquery.com]]):
../input/javascript.txt:Example: JSpec Shopping cart test (from [[http://visionmedia.github.com/jspec/|visionmedia.github.com]])
../input/javascript.txt:  * [[http://www.onlinetools.org/articles/unobtrusivejavascript/chapter1.html|Unobtrusive Javascript]]
../input/javascript.txt:  * [[http://www.quirksmode.org/resources.html|Quirksmode: In-depth Javascript Resources]]
../input/javascript.txt:  * [[http://open.silverstripe.org/browser/modules/sapphire/branches/2.4/thirdparty/behaviour/README.md|behaviour.js documentation]]
../input/labelfield.txt:If you want to implement a [[LabelField]] into a form element, you need to pass it an array of source data.
../input/labelfield.txt:[[http://api.silverstripe.org/trunk/forms/fields-dataless/LabelField.html|Click here for the API documentation]].
../input/languagedropdownfield.txt:[[http://api.silverstripe.org/trunk/sapphire/core/LanguageDropdownField.html|Click here for the API documentation]].
../input/leftandmain.txt:Please use LeftAndMain::ForceReload to reload the whole form-area after an Ajax-Request. If you just need to refresh parts of the form, please use javascript-replacement in the response of the original Ajax-Request. Consider using [[http://api.silverstripe.org/trunk/forms/core/Form.html|Form]] for  compiling Ajax-Responses and automatic detection of Ajax/Non-Ajax-Calls.
../input/leftandmain.txt:You can customize access control in [[http://api.silverstripe.org/trunk/cms/core/LeftAndMain.html|LeftAndMain]] (and all subclasses) by using a [[http://api.silverstripe.org/trunk/sapphire/model/DataObject.html|DataObject]].
../input/leftandmain.txt:See also [[CMSMenu]]
../input/leftandmain.txt:  * [[CMSMain]]
../input/leftandmain.txt:  * [[AssetAdmin]]
../input/leftandmain.txt:  * [[SecurityAdmin]]
../input/leftandmain.txt:  * [[ModelAdmin]] 
../input/listboxfield.txt:If you want to implement a [[ListboxField]] into a form element, you need to pass it an array of source data.
../input/listboxfield.txt:[[http://api.silverstripe.org/trunk/forms/fields-basic/ListboxField.html|Click here for the API documentation]].
../input/literalfield.txt:If you want to implement a [[LiteralField]] into a form element, you need to pass it an array of source data.
../input/literalfield.txt:[[http://api.silverstripe.org/trunk/forms/fields-dataless/LiteralField.html|Click here for the API documentation]].
../input/manifestbuilder.txt:  * [[controller]]
../input/manifestbuilder.txt:  * [[execution-pipeline]]
../input/manifestbuilder.txt:  * [[directory-structure]]
../input/manifestbuilder.txt:  * [[ClassInfo]]
../input/manifestbuilder.txt:[[http://api.silverstripe.org/trunk/sapphire/core/ManifestBuilder.html|Here is the method documentation]].
../input/manymanycomplextablefield.txt:This [[RelationTable]] allows you to show a **many-to-many** relation with a group of DataObjects as a (readonly) tabular list (similiar to [[ComplexTableField]]). Its most useful when you want to manage the relationship itself thanks to the **check boxes** present on each line of the table.
../input/manymanycomplextablefield.txt:See [[ComplexTableField]] for more documentation on the base-class.
../input/manymanycomplextablefield.txt:See [[HasManyComplexTableField]] for more documentation on the relation table base-class.
../input/manymanycomplextablefield.txt:It works exactly in the same way than [[ComplexTableField]] :
../input/manymanycomplextablefield.txt:**Notice** : You still have different ways to customize the popup window as in the parent-class [[ComplexTableField]].
../input/manymanycomplextablefield.txt:To see an example of the //ManyManyComplexTableField// table, follow this [[tutorial:5-dataobject-relationship-management|tutorial]].
../input/manymanycomplextablefield.txt:[[http://api.silverstripe.org/trunk/forms/fields-relational/ManyManyComplexTableField.html|Click here for the API documentation]].
../input/mathspamprotection.txt:[[http://api.silverstripe.org/trunk/sapphire/MathSpamProtection.html|Click here for the API documentation]].
../input/member_groupset.txt:This is a special kind of [[#ComponentSet]] which has special functions for managing subscription based information and other membership -> newsletter based subscriptions.
../input/member_groupset.txt:You can automatically create and generate a way to save all membership types by using DataObject::get("NewsletterTypes"); to generate the source for a [[#CheckboxSetField]]
../input/member_groupset.txt:[[http://api.silverstripe.org/trunk/sapphire/Member_GroupSet.html|Click here for the API documentation]].
../input/membertablefield.txt:Shows a group of [[Member]] as a editable tabular list (similiar to [[ComplexTableField]]). It's more useful when you want to display additional fields from a [[http://api.silverstripe.org/trunk/sapphire/model/DataObject.html|DataObject]]. Moreover, you can add permissions to the table such as show and export
../input/membertablefield.txt:See [[ForumRole]] for an example of a [[http://api.silverstripe.org/trunk/sapphire/model/DataObject.html|DataObject]].
../input/membertablefield.txt:See [[ComplexTableField]] for more documentation on the base-class
../input/membertablefield.txt:See [[Member]] for the defaults fields viewable in the table.
../input/member.txt:**This is partially deprecated - see the [[http://api.silverstripe.org/trunk/sapphire/model/DataObject.html|DataObject]] page for more information**
../input/member.txt:[[http://api.silverstripe.org/trunk/sapphire/security/Member.html|Click here for the API documentation]].
../input/migrationtask.txt:To run any tasks you can find them under the dev/ namespace. To run the above script you would need to run the following and note - Either the site has to be in [[debugging|devmode]] or you need to add ?isDev=1 to the URL
../input/migrationtask.txt:[[http://doc.silverstripe.com/assets/classes/sapphire/dev/MigrationTask.html|Click here for the API documentation]].
../input/modeladmin.txt:The ModelAdmin provides a simple way to utilize the SilverStripe CMS UI with your own custom data models.  The ModelAdmin uses the [[http://api.silverstripe.org/trunk/sapphire/model/DataObject.html|DataObject]]'s Scaffolding to create the search fields, forms, and displayed data within the CMS. 
../input/modeladmin.txt:In order to customize the ModelAdmin CMS interface you will need to understand how  [[http://api.silverstripe.org/trunk/sapphire/model/DataObject.html|DataObject]] works.
../input/modeladmin.txt:To add the ModelAdmin to your CMS menu, you simply need to define a couple of statics on your ModelAdmin subclass. See [[http://api.silverstripe.org/trunk/cms/core/LeftAndMain.html|LeftAndMain]] on how to make your menu title translatable.
../input/modeladmin.txt:2. Add a ''$searchable_fields'' (See [[ModelAdmin#searchable_fields]]) property to your data models, to define the fields and filters for the search interface:
../input/modeladmin.txt:   * See [[http://api.silverstripe.org/trunk/sapphire/model/DataObject.html|DataObject]]
../input/modeladmin.txt:Summary Fields are the columns which are shown in the [[http://api.silverstripe.org/trunk/forms/fields-relational/TableListField.html|TableListField]] when viewing DataObjects.  These can be customized for each DataObject's search results using ''$summary_fields''.
../input/modeladmin.txt:   * See [[http://api.silverstripe.org/trunk/sapphire/model/DataObject.html|DataObject]]
../input/modeladmin.txt:  * [[SearchContext]]
../input/modeladmin.txt:  * [[modules:genericviews|genericviews Module]]
../input/modeladmin.txt:  * [[http://www.slideshare.net/chillu/modeladmin-in-silverstripe-23|Presentation about ModelAdmin at SupperHappyDevHouse Wellington]]
../input/module-maintainers.txt:One of the best ways that you can contribute to SilverStripe is by developing a module for SilverStripe.  If you do, we would love to host your module and have you become an official module maintainer on our site. Please read our [[http://silverstripe.org/contributing-to-silverstripe/|"Contributing to SilverStripe"]] overview.
../input/module-maintainers.txt:  * Put your code in version control (you can get a [[http://subversion.trigris.org|subversion]] or [[http://git-scm.com/|git]] repository for free at [[http://code.google.com|code.google.com]], [[http://github.com|github.com]] etc.)
../input/module-maintainers.txt:  * Follow our [[coding-conventions]]
../input/module-maintainers.txt:  * Write unit tests and functional tests covering code bundled with the module - see [[testing-guide]]
../input/module-maintainers.txt:  * Ensure your code is [[i18n|localizable]] and [[translation|translatable]]
../input/module-maintainers.txt:  * Follow our [[documentation-guidelines]]
../input/module-maintainers.txt:  * Add your module to [[http://silverstripe.org/modules|silverstripe.org/modules]] (and keep the version compatibility information current)
../input/module-maintainers.txt:  * Optional: Add a wiki page on [[http://doc.silverstripe.org|doc.silverstripe.org]] with user- and developer documentation (see [[modules:forum]] for a good example)
../input/module-maintainers.txt:  * Prepare releases as detailed in [[module-releases]] ([[http://producingoss.com/en/development-cycle.html|more info]])
../input/module-maintainers.txt:    * Attend [[irc:our weekly core discussions on IRC]] as regularly as you can.
../input/module-maintainers.txt:  * Create an ''issue tracker'' so your users can file bugs and feature requests, and keep track of their status (we can provide you with a new category on [[http://open.silverstripe.org]])
../input/module-maintainers.txt:  * Use of [[http://open.silverstripe.org|trac]] to keep your bugs and feature requests organised
../input/module-maintainers.txt:  * [[module-releases]]
../input/module-maintainers.txt:  * [[contributors]]
../input/module-releases.txt:If you are a [[module-maintainers|module maintainer]], you will be responsible for creating new releases of the module.
../input/module-releases.txt:Each line of code you write should be version controlled. We provide free subversion hosting for SilverStripe-specific projects on [[http://open.silverstripe.com]], but you're free to host on other subversion infrastructure as well. You can contact the [[contributors|core team]] to get you started  (read more about [[http://producingoss.com/en/vc.html|version control]]).
../input/module-releases.txt:Creating a release branch is a simple "svn cp" command.  In the example below, (modulename) would be something like "ecommerce" or "flickrservice", and (releasenumber) would be something like "0.2.1" (see [[http://producingoss.com/en/development-cycle.html#release-numbering|Producing OSS: Release Numbering]])
../input/module-releases.txt:See [[http://svnbook.red-bean.com/en/1.5/svn.branchmerge.commonpatterns.html#svn.branchmerge.commonpatterns.release|SVN Book: "Release Branches"]], [[http://producingoss.com/en/release-branches.html|Producing OSS: "Release Branches"]] and [[http://producingoss.com/en/stabilizing-a-release.html|Producing OSS: "Stabilizing a release"]] for more details.
../input/module-releases.txt:See [[[[http://svnbook.red-bean.com/en/1.5/svn.branchmerge.commonpatterns.html#svn.branchmerge.commonpatterns.release|"ReleaseBranches" chapter]] and [[http://svnbook.red-bean.com/en/1.5/svn.branchmerge.tags.html|"Tags" chapter]].
../input/module-releases.txt:  * See [[http://producingoss.com/en/testing-and-releasing.html#release-announcement|Producing OSS: "Announcing Releases"]]
../input/module-releases.txt:  * Update your [[#documentation|documentation]] in the sourcecode, wiki and README
../input/module-releases.txt:  * Notify the [[contributors|core team]] about the release
../input/module-releases.txt:  * Send this archive to the [[module-maintainers|core team]] and we will upload it to silverstripe.com
../input/module-releases.txt:  * Announce the release on [[http://groups.google.com/group/silverstripe-announce|silverstripe-announce]].  Include a [[#changelogs|changelog]], the download link and instructions for filing bug reports.
../input/module-releases.txt:  * If this release is a major release, our [[http://silverstripe.com/contact/|marketing guys]] will strive to announce it on the main [[http://silverstripe.com/blog|silverstripe.com blog]] as well
../input/module-releases.txt:You should have both ''developer documentation'' and ''user documentation'', and keep them updated with your releases. Feel free to use the "modules" namespace on our [[http://doc.silverstripe.com/doku.php?id=modules|documetation wiki]] for your module documentation. See [[http://producingoss.com/en/getting-started.html#documentation|Producing OSS: "Documentation"]].
../input/module-releases.txt:Each module should have a README.md file in the project root in [[http://daringfireball.net/projects/markdown/|markdown format]], roughly following this template:
../input/module-releases.txt:Each release you make should contain CHANGELOG file in the project root with a highlevel overview of additions and bugfixes in this release. The ''svn log'' command gives you all commit messages for a specific project, and is a good start to build a changelog (see [[http://svnbook.red-bean.com/en/1.5/svn.tour.history.html|"Examining historical changes" chapter]]). Depending on the volume of changes, it is preferred that you summarize these messages in a more "digestible" form (see [[http://producingoss.com/en/packaging.html#changelog|Producing OSS: "Changes vs. Changelog").
../input/modules.txt:Sapphire's [[manifestbuilder|Manifest Builder]] will find any class, css or template files anywhere under the site's main directory.  The _config.php file in the module directory can be used to define director rules, calls to Object::useCustomClass(), and the like.  So, by unpacking a module into site's main directory and viewing the site with ?flush=1 on the end of the URL, all the module's new behaviour will be incorporated to your site:
../input/modules.txt:  * You can use [[dataobjectdecorator|a decorator]] to extend or alter the behaviour of a built-in class without replacing it.
../input/modules.txt:For more information on creating modules, see [[creating-modules]].
../input/modules.txt:  * **Blog Widgets:** A module can provide 1 or more blog-widget classes.  See [[widgets]] for more information.
../input/modules.txt:  * [[http://silverstripe.org/modules|Official module list on silverstripe.org]]
../input/modules.txt:  * [[http://open.silverstripe.org/browser/modules|Subversion repository on open.silverstripe.org]]
../input/modules.txt:The following article explains the generic installation of a module. Individual modules have their own requirements such as creating folders or configuring API keys. For information about installing or configuring a specific module see the modules //INSTALL// (or //README//) file. Modules should adhere to the [[directory-structure]] guidelines.
../input/modules.txt:To install a module you need to download the tar.gz file from the [[http://www.silverstripe.org/modules|modules page]] or a generated [[http://dailybuilds.silverstripe.org|dailybuild]] and extract this tar.gz to the root folder mentioned above.
../input/multilingualcontent.txt:Please see [[i18n]] for a internationalization, globalization and localization support of built-in datatypes as well as translating templates and PHP code.
../input/multilingualcontent.txt:Translations can be enabled for all subclasses of [[http://api.silverstripe.org/trunk/sapphire/model/DataObject.html|DataObject]] by default, but are mostly used for [[http://api.silverstripe.org/trunk/cms/SiteTree.html|SiteTree]] subclasses (so all "pages"). Translatable is a [[http://api.silverstripe.org/trunk/sapphire/model/DataObject.html|DataObject]], so it can easily be implemented into existing code with minimal interference.
../input/multilingualcontent.txt:Warning: If you're upgrading from a SilverStripe version prior to 2.3.2, please migrate your datamodel before using the extension. See [[multilingualcontent#migrating_from_2.1_datamodel]]
../input/multilingualcontent.txt:A widget now exists to switch between languages, and is [[http://www.silverstripe.org/Language-Chooser-Widget/|available here]]. You can easily make your own switchers with the following basic tools. To stay friendly to  caches and search engines, each translation of a page must have a unique URL
../input/multilingualcontent.txt:You can use a widget on your website to provide a list of links for switching languages: [[http://silverstripe.org/Language-Chooser-Widget-2/|download]]
../input/multilingualcontent.txt:If you're looking to use [[http://doc.silverstripe.com/doku.php?id=i18n#the_t_function|the _t() function]] in template files, you'll need to [[multilingualcontent#setting_the_i18n_locale|set the i18n locale]] first. 
../input/multilingualcontent.txt:The datamodel of Translatable changed significantly between its original release in SilverStripe 2.1 and SilverStripe 2.3.2. See our [[http://groups.google.com/group/silverstripe-dev/browse_thread/thread/91e26e1f78d3c1b4/bd276dd5bbc56283?lnk=gst&q=translatable#bd276dd5bbc56283|discussion on the mailinglist]].
../input/multilingualcontent.txt:  * Upgrade your SilverStripe installation to at least 2.3.2 (see [[upgrading]])
../input/multilingualcontent.txt:Please see the [[http://api.silverstripe.org/trunk/sapphire/dev/MigrateTranslatableTask.html|class documentation]] for limitations of this migration task - not all your data will be preserved.
../input/multilingualcontent.txt:  * [[translation]]: Starting point for community-driven translation of the Silverstripe UI
../input/multilingualcontent.txt:  * [[i18n]]: Developer-level documentation of Silverstripe's i18n capabilities
../input/multilingualcontent.txt:  * [[modules:translation|modules:translation]]: The module powering our translation server
../input/multilingualcontent.txt:  * [[translatable]]: DataObject-interface powering the website-content translations
../input/multilingualcontent.txt:  * [[translation-offers]]
../input/multilingualcontent.txt:  * [[http://silverstripe.org/translatablemodeladmin-module/|"Translatable ModelAdmin" module]]: An extension which allows translations of DataObjects inside [[ModelAdmin]]
../input/numericfield.txt:[[http://api.silverstripe.org/trunk/forms/fields-formattedinput/NumericField.html|Click here for the API documentation]].
../input/objectmodel.txt:  * $OrderDate.[[NZDate]] will call Date::NZDate(), returning 12/06/2005
../input/objectmodel.txt:  * If you want to cast a single value without a specific object-relation use the following code. Consider using [[http://api.silverstripe.org/trunk/sapphire/model/DataObject.html|DataObject]]->castedUpdate() instead when saving back casted values to a DataObject.
../input/object.txt:Most of the functionality visible to developers sits in subclasses such as [[http://api.silverstripe.org/trunk/sapphire/model/DataObject.html|DataObject]] or [[ViewableData]].
../input/object.txt:See [[Member]]
../input/object.txt:Help deciding where its feasible to use [[http://api.silverstripe.org/trunk/sapphire/model/DataObject.html|DataObject]] or subclassing instead.
../input/object.txt:  * [[objectmodel]]
../input/object.txt:  * [[datamodel]]
../input/object.txt:[[http://api.silverstripe.org/trunk/sapphire/Object.html|Click here for the API documentation]]. 
../input/optionsetfield.txt:This field allows you to ensure that a form element is submitted is not optional and is part of a fixed set of data. This field uses the input type of radio. It's a direct subclass of [[DropdownField]], so the constructor and arguments are in the same format.
../input/optionsetfield.txt:If you want to implement a [[OptionsetField]] into a form element, you need to pass it an array of source data.
../input/optionsetfield.txt:[[http://api.silverstripe.org/trunk/forms/fields-basic/OptionsetField.html|Click here for the API documentation]].
../input/pagecomment.txt:The SSAkismet class provides spam detection for comments using [[http://akismet.com/]]. In order to use it, you must get an API key, which you can get free for non-commercial use by signing up for a [[http://www.wordpress.com|WordPress]] account. Commercial keys can be bought [[http://akismet.com/commercial/|here]].
../input/pagecomment.txt:  * [[http://demo.silverstripe.com/blog|Demo of SSAkismet in action]]
../input/pagecomment.txt:  * Forum discussion: [[http://www.silverstripe.com/feature-requests/flat/534|Comments - additions and spam protection]]
../input/pagecomment.txt:See [[modules:mollom]] for instructions on how to add Mollom to your page comments form.
../input/pagecomment.txt:[[http://api.silverstripe.org/trunk/sapphire/PageComment.html|Click here for the API documentation]]. 
../input/pageless-controller.txt:Here is a simple example taken from the [[modules:sitetreeimporter]] module.
../input/page.txt:The class //Page// should always be a direct subclass of [[http://api.silverstripe.org/trunk/cms/SiteTree.html|SiteTree]], and is the starting point for any customizations for your site.
../input/page.txt:  * [[getting-started#the_page_type_concept]]: Understanding pagetype-inheritance
../input/page.txt:  * [[datamodel]]: Adding fields/properties to your page-type
../input/page.txt:  * [[templates]]: Creating and customizing your Page.ss base template 
../input/page-types.txt:All the pages on the base installation are of the page type "Page". See [[tutorial:2-extending-a-basic-site|tutorial:2-extending-a-basic-site]] for a good introduction to page-types.
../input/page-types.txt:Page types are created using PHP classes. If you’re not sure about how these work, [[http://www-128.ibm.com/developerworks/opensource/library/os-phpobj/|click here for a gentler introduction to PHP classes]]. 
../input/page-types.txt:For example, you may want an additional field on a StaffPage class which extends Page, called Author. Author is a standard text field, and can be [[objectmodel|casted]] as a variable character object in php (VARCHAR in SQL). In the following example, our Author field is casted as a variable character object with maximum characters of 50. This is especially useful if you know how long your source data needs to be.
../input/page-types.txt:See [[datamodel]] for a more detailed explanation on adding database fields, and how the SilverStripe data model works.
../input/page-types.txt:See [[form]] and [[tutorial:2-extending-a-basic-site]]
../input/page-types.txt:For more information on forms, see [[form]], [[tutorial:2-extending-a-basic-site]] and [[tutorial:3-forms]].
../input/passwordfield.txt:[[http://api.silverstripe.org/trunk/forms/fields-formattedinput/PasswordField.html|Click here for the API documentation]].
../input/permission.txt:You can use whatever codes you like, but for the sanity of developers and users, it would be worth listing the codes in [[permissions:codes]]
../input/permission.txt:PermissionProvider is an interface which lets you define a method //providePermissions()//. This method should return a map of permission code names with a human readable explanation of its purpose (see [[:permission:codes]]).
../input/permission.txt:  * On a request, $request->hasPermission("View", $member = null) can be called.  See [[DataModel]] for information on request objects.
../input/permission.txt:[[http://api.silverstripe.org/trunk/database/Permission.html|Click here for the API documentation]].
../input/postgres.txt:  - Download a copy of the "postgresql" module from here: [[http://silverstripe.org/postgresql-module]]
../input/postgres.txt:  - Download a copy of the "postgresql" module from here: [[http://silverstripe.org/postgresql-module]]
../input/postgres.txt:  - Download a copy of the "postgresql" module from here: [[http://silverstripe.org/postgresql-module]]
../input/postgres.txt:Please see [[tutorial:4-site-search|tutorial 4]] for information how to enable fulltext search and the necessary controller hooks.
../input/postgres.txt:Nearly all data types in SilverStripe can now be expressed as an [[http://www.postgresql.org/docs/current/interactive/arrays.html|array]].  For example, you can specify an int as this: 
../input/postgres.txt:Please consult the official [[http://www.postgresql.org/docs/current/interactive/arrays.html|Postgres documentation]] for more information.
../input/postgres.txt:[[http://www.postgresql.org/docs/current/interactive/transaction-iso.html|Transactions]] are supported at the database connection level.  The relevant functions are:
../input/postgres.txt:$transaction_mode and $session_characteristic take the full range of [[http://developer.postgresql.org/pgdocs/postgres/transaction-iso.html|isolation levels]] supported by Postgres.
../input/postgres.txt:Please consult the official [[http://www.postgresql.org/docs/current/interactive/transaction-iso.html|Postgres documentation]] for more information.
../input/postgres.txt:Please consult the official [[http://www.postgresql.org/docs/current/interactive/ddl-partitioning.html|Postgres documentation]] for more information.
../input/postgres.txt:[[http://www.postgresql.org/docs/current/static/manage-ag-tablespaces.html|Tablespaces]] are good for moving the physical files to a faster device (or slower and less used if that's a better option).  You can set up a tablespace like this:
../input/postgres.txt:Please consult the official [[http://www.postgresql.org/docs/current/static/manage-ag-tablespaces.html|Postgres documentation]] for more information.
../input/postgres.txt:[[http://www.postgresql.org/docs/current/interactive/sql-cluster.html|Index clustering]] allows you to reorganise the way rows are ordered inside a table according to an index specification. This can be a very intensive disk operation.  You specify an index cluster like this:
../input/postgres.txt:Please consult the official [[http://www.postgresql.org/docs/current/interactive/sql-cluster.html|Postgres documentation]] for more information.
../input/profiler.txt:You can enable the profiler by adding **?debug_profile=1** to your URL (See [[urlvariabletools]] for more)
../input/profiler.txt:[[http://api.silverstripe.org/trunk/sapphire/Profiler.html|Click here for the API documentation]].
../input/publishing-to-web-server.txt:Moved to [[recipes:publishing-to-web-server]]
../input/readonlyfield.txt:[[http://api.silverstripe.org/trunk/forms/fields-basic/ReadonlyField.html|Click here for the API documentation]].
../input/redirectorpagetest.txt:[[http://doc.silverstripe.com/assets/classes/sapphire/testing/RedirectorPageTest.html|Click here for the API documentation]].
../input/releases.txt:See our [[http://open.silverstripe.com/roadmap|roadmap on open.silverstripe.com]] for the most up-to-date release plans, and our [[http://open.silverstripe.com/wiki/development|development plans]] for ideas and further development directions.
../input/releases.txt:If you want to know how to go about releasing a module, see [[module-releases]].
../input/releases.txt:  * [[http://open.silverstripe.com/roadmap|Roadmap on Trac]]
../input/releases.txt:  * [[http://open.silverstripe.com/wiki/development|Development Plans]]
../input/requirements.txt:It is common practice to include most Requirements either in the //init()//-method of your [[controller]], or as close to rendering as possible (e.g. in //[[http://api.silverstripe.org/current/forms/core/FormField.html|FormField]]->renderWith()//)
../input/requirements.txt:The Silverstripe core includes a lot of Requirements by itself. Most of these are collated in [[http://api.silverstripe.org/trunk/cms/core/LeftAndMain.html|LeftAndMain]]->init(). If you want to add/remove Requirements in your LeftAndMain-subclass, make sure to call //parent::init()// first.
../input/requirements.txt:[[http://api.silverstripe.org/trunk/sapphire/Requirements.html|Full method documentation available here]]
../input/restfulserver.txt:See [[soapmodelaccess]] for a SOAP wrapper about RESTfulServer.
../input/restfulserver.txt:  * [[soapmodelaccess|SOAP wrapper around RESTfulServer]]
../input/restfulserver.txt:[[http://doc.silverstripe.com/assets/classes/sapphire/api/RestfulServer.html|Click here for the API documentation]].
../input/restfulservice.txt:To gain the functionality you can either create a new RestfulService object or create a class extending the RestfulService (refer [[flickrservice]] or [[youtubeservice]]).
../input/restfulservice.txt:[[RestfulService]] can be used to easily embed an RSS feed (since it's also an xml response) from a site such as del.icio.us
../input/restfulservice.txt:[[http://api.silverstripe.org/trunk/sapphire/core/RestfulService.html|Click here for the API documentation]].
../input/rssfeed.txt:Generating RSS/Atom-feeds is just a matter of rendering a [[http://api.silverstripe.org/trunk/sapphire/model/DataObject.html|DataObject]] and the Page Comment Interface.
../input/rssfeed.txt:RSSFeed doesn't limit you to generating "article-based" feeds, it is just as easy to create a feed of your current staff-members. The only logical limitation here is that every item in the RSS-feed should be accessible through a URL on your website, so its advisable to just create feeds from subclasses of [[http://api.silverstripe.org/trunk/cms/SiteTree.html|SiteTree]].
../input/rssfeed.txt:RSSFeed only creates feeds from your own data. We've included the [[http://simplepie.org|SimplePie]] RSS-parser for accessing feeds from external sources.
../input/rssfeed.txt:  * [[modules:blog|modules:blog]]
../input/rssfeed.txt:[[http://api.silverstripe.org/trunk/sapphire/RSSFeed.html|Click here for the API documentation]].
../input/rsyncmultihostpublisher.txt:[[http://doc.silverstripe.com/assets/classes/sapphire/model/RsyncMultiHostPublisher.html|Click here for the API documentation]].
../input/sake.txt:To work this out, you should add lines of this form to your [[environment-management|_ss_environment.php]] file.
../input/scheduledtask.txt:See [[http://api.silverstripe.org/trunk/sapphire/ScheduledTask.html|API Documentation]]
../input/searchcontext.txt:Manages searching of properties on one or more [[http://api.silverstripe.org/trunk/sapphire/model/DataObject.html|DataObject]] types, based on a given set of input parameters. SearchContext is intentionally decoupled from any controller-logic,
../input/searchcontext.txt:The default output of a SearchContext is either a [[SQLQuery]] object for further refinement, or a [[http://api.silverstripe.org/trunk/sapphire/model/DataObject.html|DataObject]] instance.
../input/searchcontext.txt:SearchContext is mainly used by [[ModelAdmin]], our generic data administration interface. Another implementation can be found in generic frontend search forms through [[modules:genericviews]].
../input/searchcontext.txt:See [[dataobject#searchable_fields]]
../input/searchcontext.txt:For more information on how to paginate your results within the template, see [[tutorial:4-site-search|Tutorial: Site Search]].
../input/searchcontext.txt:See [[http://api.silverstripe.org/current/sapphire/search/SearchFilter.html|SearchFilter API Documentation]]  
../input/searchcontext.txt:[[http://api.silverstripe.org/current/sapphire/search/SearchContext.html|API documentation]].
../input/searchcontext.txt:  * [[ModelAdmin]]
../input/searchcontext.txt:  * [[RestfulServer]]
../input/searchcontext.txt:  * [[tutorial:4-site-search|Tutorial: Site Search]]
../input/searchcontext.txt:  * [[modules:genericviews|genericviews Module]]
../input/searchform.txt:See [[tutorial:4-site-search]].
../input/searchform.txt:[[http://api.silverstripe.org/trunk/sapphire/SearchForm.html|API documentation]].
../input/searchform.txt:  * [[tutorial:4-site-search|Tutorial: Site Search]]
../input/searchform.txt:  * [[searchcontext|SearchContext]] - A class to easily generate search-queries in object-notation from the existing datamodel metadata
../input/secure-development.txt:This page details notes on how to ensure that we develop secure SilverStripe applications. See [[security]] for the Silverstripe-class as a starting-point for most security-related functionality.
../input/secure-development.txt:See our [[http://doc.silverstripe.org/doku.php?id=contributing#reporting_security_issues|contributing guidelines]] on how to report security issues.
../input/secure-development.txt:The [[coding-conventions]] help guard against SQL injection attacks but still require developer dilligence: ensure that any variable you insert into a filter / sort / join clause has been escaped.
../input/secure-development.txt:See [[http://shiflett.org/articles/sql-injection]].
../input/secure-development.txt:Silverstripe automatically runs [[http://php.net/addslashes|addslashes()]] in DataObject::write() wherever possible. Data is escaped when saving back to the database, not when writing to object-properties.
../input/secure-development.txt: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]] and [[escape-types]] for ways to cast and convert your data.
../input/secure-development.txt:Note: SilverStripe templates do not remove tags, please use [[http://php.net/strip_tags|strip_tags()]] for this purpose or [[http://htmlpurifier.org/|sanitize]] it correctly.
../input/secure-development.txt:See [[http://shiflett.org/articles/foiling-cross-site-attacks]] for in-depth information about "Cross-Site-Scripting".
../input/secure-development.txt:[[SSViewer]] (the SilverStripe template engine) automatically takes care of escaping HTML tags from specific object-properties by [[casting]] its string value into a [[http://api.silverstripe.org/current/sapphire/model/DBField.html|DBField]] object.
../input/secure-development.txt:You can force escaping on a casted value/object by using an [[escape-types|escape type]] method in your template, e.g. "XML" or "ATT". 
../input/secure-development.txt:The [[Convert]] class has utilities for this, mainly //Convert::raw2xml()// and //Convert::raw2att()// (which is also used by //XML// and //ATT// in template code).
../input/secure-development.txt:You can also use the built-in casting in PHP by using the //obj()// wrapper, see [[objectmodel]]  .
../input/secure-development.txt:See [[http://shiflett.org/articles/cross-site-request-forgeries]]
../input/secure-development.txt: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 | casting]].
../input/secure-development.txt: * [[http://silverstripe.org/security-releases/]]
../input/secure-development.txt: * [[http://www.securityfocus.com/infocus/1726|Best-practices for securing MySQL (securityfocus.com)]]
../input/security.txt:The Security class implements a basic security model. See [[secure-development]] for general instructions on how to securely develop with Silverstripe.
../input/security.txt:To report a security issue with SilverStripe, please see [[http://silverstripe.org/security-releases/|http://silverstripe.org/security-releases/]]
../input/security.txt:Codes assigned to specific groups through the "Security" administration interface give you flexible control over permissions. See permissions:[[permissions:codes]].
../input/security.txt:You can overload the following methods for your custom [[page-types]]:
../input/security.txt:  * Form editing: Get edit form should be made readonly in your [[controller]] if this record can't be edited by the current user.
../input/security.txt:SilverStripe provides a 'reset password' (to email) function. If if you have lost all admin accounts, see instructions at [[recovering_password]].
../input/security.txt:In combination with Permission::check, this provides a simple way of setting up security.  See [[permission]] for more information.
../input/security.txt:You can set the return destination URL of the Security actions when directing to them with an [[urlvariabletools|URL variable]] of **BackURL**.  This are very useful when working with Login ( ///Security/login// ) and Change Password ( //Security/changepassword// ).
../input/security.txt:  * See [[secure-development]]
../input/security.txt:[[http://api.silverstripe.org/trunk/sapphire/Security.html|Click here for the API documentation]].
../input/selectiongroup.txt:[[http://api.silverstripe.org/trunk/sapphire/SelectionGroup.html|Click here for the API documentation]].
../input/server-requirements.txt:Please check our [[suggested-web-hosts]] (and add your host if the installation was successful).
../input/server-requirements.txt:If you're running Windows, we recommend using the [[installation-on-windows-pi|Windows Platform Installer]] or [[installation-on-windows-wamp|WAMP]].
../input/server-requirements.txt:If you're using Mac OS X, we recommend the [[http://www.mamp.info/en/mamp.html|MAMP package]], see [[silverstripe-on-mamp]] for instructions on installation. If you are using any other packages or setups, or you are on linux, please pay careful attention to the requirements below.
../input/server-requirements.txt:Installing SilverStripe on grid servers and content delivery networks have their own problems, see [[ContentDeliveryNetworkIssues]] for more info.
../input/server-requirements.txt:  * Required modules. Most of the time these modules can just be enabled in the php.ini, however support for these need to be compiled into PHP, which may not be the case if you are not using [[http://www.wampserver.com/en/|WAMP]] or [[http://www.mamp.info/en/mamp.html|MAMP]].
../input/server-requirements.txt:  * Using a PHP accelerator or opcode cache //(e.g. [[http://trac.lighttpd.net/xcache/|xcache]])// is **strongly** recommended to for performance reasons - SilverStripe creates large cache files as PHP code that are quite slow to open without an opcode cache.
../input/server-requirements.txt:  * Gentoo Linux distribution USE-Flags ([[http://silverstripe.org/installing-silverstripe/show/281700|related forum topic]]): <code>berkdb bzip2 cgi cli crypt ctype curl exif flatfile ftp gd gdbm hash iconv imap ipv6 mysql mysqli ncurses nls pcre readline reflection session simplexml snmp spell spl ssl threads tokenizer truetype unicode xml xmlreader xmlwriter xpm zip zlib</code>
../input/server-requirements.txt:  * **PostgreSQL 8.3+** ([[postgres|download]])
../input/server-requirements.txt:  * **SQLite 3+** ([[modules:sqlite|download]])
../input/server-requirements.txt:  * **SQL Server 2008** ([[modules:mssql|download]])
../input/server-requirements.txt:  * IIS 7.x with [[http://www.iis.net/expand/URLRewrite|URL Rewrite Module]] (installer supported in SilverStripe 2.4+)
../input/server-requirements.txt:  * Apache 1.3+/2.0+/2.2+ with [[http://www.workingwith.me.uk/articles/scripting/mod_rewrite|mod_rewrite]], and the ability to set rewriting rules in .htaccess files via "Allow Override".
../input/server-requirements.txt:  * lighttpd 1.4+ with access to the server configuration. (See [[installation-on-lighttpd]]
../input/sessions.txt:See [[cookies|Cookies]]
../input/shortcodes.txt:The Shortcode API (new in 2.4) is a simple regex based parser that allows you to replace simple bbcode-like tags within a HTMLText or HTMLVarchar field when rendered into a template. It is inspired by and very similar to the [[http://codex.wordpress.org/Shortcode_API|Wordpress implementation]] of shortcodes. Examples of shortcode tags are:
../input/silverstripe-book-errata.txt:This page collects technical errors and misspellings ("errata") from the [[http://www.silverstripe.org/silverstripe-book|SilverStripe book]] published with Wiley in 2009.
../input/simpleimagefield.txt:SimpleImageField provides an easy way of uploading images to Image has_one relationships. Unlike [[http://api.silverstripe.org/trunk/sapphire/model/Image.html|Image]], it doesn't use an iframe.
../input/simpleimagefield.txt:You can't use SimpleImageField inside a CMS popup window, which is submitted via AJAX. Instead, use an iframe [[http://api.silverstripe.org/trunk/sapphire/model/Image.html|Image]].
../input/simpleimagefield.txt:If you want to implement a [[SimpleImageField]] into a form element, you need to pass it an array of source data.
../input/simpleimagefield.txt:[[http://api.silverstripe.org/trunk/forms/fields-files/SimpleImageField.html|Click here for the API documentation]].
../input/site-reports.txt:You can create reports for you own data quickly and easily. A general knowledge of Silverstripes [[http://doc.silverstripe.com/doku.php?id=datamodel|Datamodel]] would help before you attempt this. 
../input/sitetree.txt:By default, [[http://api.silverstripe.org/trunk/cms/SiteTree.html|SiteTree]] uses the [[http://api.silverstripe.org/trunk/sapphire/model/Hierarchy.html|Hierarchy]] class to build a tree using the ParentID field.  However, sometimes, you want to change this default behaviour.
../input/sitetree.txt:  * **Define stageChildren method:** This method should return the children of the current page, for the current version.  If you use DataObject::get, the [[http://api.silverstripe.org/trunk/sapphire/model/Versioned.html|Versioned]] class will rewrite your query to access the live site when appropriate.
../input/sitetree.txt:The [[http://api.silverstripe.org/trunk/cms/core/LeftAndMain.html|LeftAndMain]] tree supports multiple parents.  We overload CMSTreeClasses and make it include "manyparents" in the class list.
../input/sitetree.txt:Something that has been talked about [[http://www.silverstripe.com/site-builders-forum/flat/15416#post15940|here]] is the concept of "dynamic grouping".  In essence, it means adding navigational tree nodes to the tree that don't correspond to a database record.
../input/sitetree.txt:[[http://api.silverstripe.org/trunk/sapphire/core/SiteTree.html|Click here for the API documentation]]
../input/soapmodelaccess.txt:  * [[restfulserver|RESTful API]]
../input/soapmodelaccess.txt:[[http://doc.silverstripe.com/assets/classes/sapphire/api/SOAPModelAccess.html|Click here for the API documentation]].
../input/sqlquery.txt:An object representing a SQL query. It is easier to deal with object-wrappers than string-parsing a raw SQL-query. This object is used by [[http://api.silverstripe.org/trunk/sapphire/model/DataObject.html|DataObject]]::get()/get_one(). Using SQL directly can also be faster than tunneling everything through the [[datamodel]]. Please be wary of [[http://en.wikipedia.org/wiki/Optimization_(computer_science)|premature optimization]], though...
../input/sqlquery.txt:A word of caution: Dealing with low-level SQL is not encouraged in the Silverstripe [[datamodel]] for various reasons. You'll break the behaviour of:
../input/sqlquery.txt:  * [[http://api.silverstripe.org/trunk/sapphire/model/DataObject.html|DataObject]]
../input/sqlquery.txt:We'll explain some ways to use //SELECT// with the full power of SQL, but still maintain a connection to the Silverstripe [[datamodel]].
../input/sqlquery.txt:The result is an array lightly wrapped in a database-specific subclass of [[http://api.silverstripe.org/trunk/sapphire/model/SS_Query.html|Query]]. This class implements the //Iterator//-interface defined in PHP5, and provides convenience-methods for accessing the data.
../input/sqlquery.txt:Way faster than dealing with [[http://api.silverstripe.org/trunk/sapphire/model/DataObject.html|DataObject]]s:
../input/sqlquery.txt:  * Automatically LEFT JOIN on all base-tables (see [[database-structure]])
../input/sqlquery.txt:Some subclasses of [[http://api.silverstripe.org/current/forms/core/FormField.html|FormField]] are constructed to deal with the SQLQuery-object for maximum flexibility. Have a look at [[http://api.silverstripe.org/trunk/forms/fields-relational/TableListField.html|TableListField]] and [[ComplexTableField]] for ways to create sophisticated report-tables based on SQL.
../input/sqlquery.txt:  * [[datamodel]]
../input/sqlquery.txt:  * [[http://api.silverstripe.org/trunk/sapphire/model/DataObject.html|DataObject]]
../input/sqlquery.txt:  * [[database-troubleshooting]]
../input/sqlquery.txt:  * [[database-structure]]
../input/sqlquery.txt:[[http://api.silverstripe.org/trunk/sapphire/SQLQuery.html|Click here for API documentation]].
../input/ssl.txt:Switching between SSL and Non-SSL is handled by the [[director|Director]] class.
../input/ssl.txt:**Note:** Director::forceSSL() does not work if your site is in Dev mode, see ticket [[http://open.silverstripe.org/ticket/4509|#4509]] if you need to test in Dev.
../input/start.txt:This wiki documents high-level features of the [[http://www.silverstripe.org|SilverStripe open source platform]], aimed at developers. 
../input/start.txt:If you would like to contribute, you can [[http://doc.silverstripe.com/doku.php?id=start&do=register|register]] and then [[http://doc.silverstripe.com/doku.php?do=login&id=start|login]].
../input/start.txt:  * Use our [[http://www.silverstripe.com/silverstripe-forum/|support forum]] and [[IRC|irc-channel]]
../input/start.txt:  * See [[http://userhelp.silverstripe.com|userhelp]] for end-user documentation
../input/start.txt:  * Visit some of the [[community run third party websites]]
../input/start.txt:  * [[http://silverstripe.com/overview/|Why SilverStripe?]]: Find out about our unique features as a new entrant in a crowded market
../input/start.txt:  * [[http://silverstripe.com/overview/|Feature Overview]]: Find out how many capabilities hide behind the simple interface
../input/start.txt:  * [[http://www.silverstripe.com/how-to-contribute/|Contributing]] and [[Contributors]]
../input/start.txt:  * [[Changelog]]
../input/start.txt:  * [[http://open.silverstripe.com/roadmap|Roadmap]]
../input/start.txt:  * **[[http://api.silverstripe.org/current|API documentation]]**
../input/start.txt:[[http://www.silverstripe.org/silverstripe-book|{{ :silverstripe-cms-book-front-cover-design-june2009preview.png?100}}]]
../input/start.txt:  * [[http://www.silverstripe.org/silverstripe-book|Official book on SilverStripe in English]] ([[silverstripe-book-errata|Errata]]).
../input/start.txt:  * [[http://www.silverstripe.org/das-silverstripe-buch|Official book on SilverStripe in German]].
../input/start.txt:  * **[[installation|Installing]]** and [[Upgrading]] 
../input/start.txt:  * [[Server-requirements]]
../input/start.txt:  * [[Suggested-web-hosts]]
../input/start.txt:  * **[[tutorials|Tutorials]]:**
../input/start.txt:    - [[tutorial:1-building-a-basic-site|Building a basic site]]
../input/start.txt:    - [[tutorial:2-extending-a-basic-site|Extending a basic site]]
../input/start.txt:    - [[tutorial:3-forms|Forms]]
../input/start.txt:    - [[tutorial:4-site-search|Site Search]]
../input/start.txt:    - [[tutorial:5-dataobject-relationship-management|Relationships]]
../input/start.txt:    - [[tutorial:site-map|Site Map]]
../input/start.txt:  * [[http://devzone.zend.com/node/view/id/627|Introduction to PHP5]]
../input/start.txt:  * [[common-problems|Common Problems]]
../input/start.txt:  * [[templates|Templates]]: SilverStripe has its own templating engine
../input/start.txt:  * [[themes|Themes]]: How to customize your site with themes
../input/start.txt:  * [[controllers|Controllers]]: Coordination from a URL-request to finding the controller-class
../input/start.txt:  * [[page-types|Pagetypes]]: Clarifying the relationship between a page-object and a silverstripe-class
../input/start.txt:  * **[[datamodel|Datamodel]]**: Object-relational database model with MVC
../input/start.txt:  * [[database-structure|Database Structure]]: Breakdown of a typical SilverStripe database
../input/start.txt:  * [[data-types|Datatypes]]: Casting database-columns
../input/start.txt:  * [[form|Forms]]: Sophisticated form generation and processing
../input/start.txt:  * [[form-field-types|Formfield Types]]: Simple and complex form-elements with built-in validation
../input/start.txt:  * [[html|HTML]]: Best practice for HTML
../input/start.txt:  * [[css|CSS]]: Best practice ideas, template/CSS techniques and [[typography|typography]]
../input/start.txt:  * [[javascript|Javascript]]
../input/start.txt:  * [[widgets|Widgets]]
../input/start.txt:  * [[configuration|Configuration]]
../input/start.txt:  * [[execution-pipeline|Execution Pipeline]]: Tracking a request from director to template-rendering
../input/start.txt:  * [[building-for-modularity|Building for Modularity]]
../input/start.txt:  * [[email|Email]]
../input/start.txt:  * [[rssfeed|RSS Feeds]]
../input/start.txt:  * [[scheduledtask|Scheduled Tasks]]
../input/start.txt:  * [[debugging|Debugging]]
../input/start.txt:  * [[error-handling|Errorhandling]]
../input/start.txt:  * [[testing-guide|Testing Guide]]: Framework for automated testing like Unittests
../input/start.txt:  * [[database-support|Database Support]]
../input/start.txt:  * [[security|Security]]
../input/start.txt:  * [[built-in-page-controls|Built-in Page Controls]]
../input/start.txt:  * Share your [[recipes:start|Recipes]]
../input/start.txt:  * [[coding-conventions|Coding Conventions]]
../input/start.txt:  * [[css|CSS]] and [[html|HTML]] Guidelines
../input/start.txt:  * [[documentation-guidelines|Documentation Guidelines]]
../input/start.txt:  * [[secure-development|Secure development]]
../input/start.txt:  * [[modules|Overview]]
../input/start.txt:  * [[module-maintainers|Maintainers]]
../input/start.txt:  * [[creating-modules|Creating Modules]]
../input/start.txt:If you're interested in how work is being done on the SilverStripe documentation, you can see a [[http://doc.silverstripe.com/changegraph.php|high-level view of the number of changes here]]. If you are a customer of SilverStripe and are looking for our company website, please visit [[http://www.silverstripe.com|www.silverstripe.com]]. [[http://www.silverstripe.com/contact|Contact us]].
../input/staticexporter.txt:See [[StaticPublisher]] for a more versatile solution for deploying static content (incl. publishing to multiple content servers).
../input/staticexporter.txt:Usage on commandline (through [[sake]]) is not possible at the moment, as we're sending a file to the browser for download.
../input/staticexporter.txt:[[http://api.silverstripe.org/trunk/sapphire/StaticExporter.html|Click here for the API documentation]].
../input/staticexporter.txt:  *[[StaticPublisher]]
../input/staticpublisher.txt:See [[StaticExporter]] for a less flexible, but easier way of building a local static cache from all of your pages.
../input/staticpublisher.txt:[[http://open.silverstripe.com/browser/modules/cms/trunk/code/staticpublisher/htaccess_example_rsyncsingleserver|View .htaccess example]]
../input/staticpublisher.txt:  * No password can be specified for the SSH connection . The class assumes a key-based authentication without requiring a password for the username specified in <rsyncuser> (see [[http://www.csua.berkeley.edu/~ranga/notes/ssh_nopass.html tutorial]]).
../input/staticpublisher.txt:[[http://open.silverstripe.com/browser/modules/cms/trunk/code/staticpublisher/htaccess_example_rsyncmultiservers|View .htaccess example]]
../input/staticpublisher.txt:[[http://open.silverstripe.com/browser/modules/cms/trunk/code/staticpublisher/htaccess_example_rsyncwithphp|View .htaccess example]]
../input/staticpublisher.txt:Once you've set up your rewrite rules and defined which pages need caching, you can build the static HTML files. This is done by the [[RebuildStaticCacheTask]].
../input/staticpublisher.txt:Execution on CLI (via [[sake]])
../input/staticpublisher.txt:  * [[StaticExporter]]
../input/submitting-patches.txt:See [[contributing]]
../input/subversion.txt:Subversion ([[http://subversion.tigris.org|website]]) is our preferred **version control system** which is used for all code produced by SilverStripe and its community. You can browse our current "code repository" on [[http://open.silverstripe.com/browser]].
../input/subversion.txt:This page only describes SilverStripe-specific information on how to handle subversion. For a general introduction, please read the [[http://svnbook.red-bean.com/|Official Subversion Book]] (available free online). Start with the [[http://svnbook.red-bean.com/en/1.5/svn.tour.html|"Basic Usage" chapter]].
../input/subversion.txt:Make sure you have an updated [[http://subversion.tigris.org/links.html#clients|subversion client]] installed.  Subversion 1.5 or higher is required for features such as relative externals and merge tracking.
../input/subversion.txt:See [[http://silverstripe.org/download]] and the [[http://svnbook.red-bean.com/en/1.5/svn.tour.cycle.html#svn.tour.cycle.update|"Update your working copy" chapter]].
../input/subversion.txt:The SilverStripe core and modules require permission to commit code. Please have a look at our [[contributors|contributors guidelines]] to find out how you can gain access.
../input/subversion.txt:For technical information how to use the ''svn commit'' command, read the [[http://svnbook.red-bean.com/en/1.5/svn.tour.cycle.html#svn.tour.cycle.commit|"How to commit" chapter]] online.
../input/subversion.txt:  * If you are fixing a ticket from our [[http://open.silverstripe.com|bugtracker]], please reference it with ''#<ticketnumber>''
../input/subversion.txt:If you have fixed a bug in the SilverStripe core or a module on your local installation, you can submit this bugfix as a "patch"-file. The core team will then review your patch and most likely include it in further releases. See [[submitting-patches]] for more information about this process.
../input/subversion.txt:You can create a patch file through the //svn diff//-command on the command-line. More info in the [[http://svnbook.red-bean.com/en/1.1/ch03s05.html#svn-ch-3-sect-5.3.2|svn redbook]]. Note: Your code-editor might have a GUI for creating patches, (e.g. [[http://subclipse.tigris.org/|Subclipse]] provides "Team->Create Patch")
../input/subversion.txt:More information about [[http://svnbook.red-bean.com/en/1.5/svn.branchmerge.commonpatterns.html#svn.branchmerge.commonpatterns.feature|"Feature Branches"]], [[http://svnbook.red-bean.com/en/1.5/svn.branchmerge.html|merging changes]] and [[http://svnbook.red-bean.com/en/1.5/svn.tour.cycle.html#svn.tour.cycle.resolve|resolving conflicts]].
../input/subversion.txt:You can contact the [[contributors|core team]] if you need us to set up a feature branch.
../input/subversion.txt:Creating the branch is a simple matter of running the ''svn cp'' command (this will most likely be done by the [[contributors|core team]] (see [[http://svnbook.red-bean.com/en/1.5/svn.branchmerge.using.html#svn.branchmerge.using.create|SVN Book: "Creating a Branch"]]).
../input/subversion.txt:After creating a feature branch, you commit your changes as usual, but also merge in any new changes from trunk (see [[http://svnbook.red-bean.com/en/1.5/svn.branchmerge.basicmerging.html#svn.branchemerge.basicmerging.stayinsync|SVN Book: "Keeping your Branch in Sync"]]).
../input/subversion.txt:You can get information about the merge process (see [[http://svnbook.red-bean.com/en/1.5/svn.branchmerge.basicmerging.html#svn.branchmerge.basicmerging.mergeinfo|SVN Book: "Mergeinfo and Previews"]]).
../input/subversion.txt:  * [[download]]
../input/subversion.txt:  * [[contributing]]
../input/subversion.txt:  * [[module-maintainers]]
../input/subversion.txt:  * [[module-releases]]
../input/suggested-web-hosts.txt:  * Only include hosts that meet SilverStripe [[server-requirements|server requirements]]
../input/suggested-web-hosts.txt: * [[<URL to hosting package>|<provider name>: <package name>]]
../input/suggested-web-hosts.txt:[[http://rimuhosting.com/ | Rimu Hosting]] offers VPS, and dedicated servers in Auckland, Sydney, Texas, and London. When signing up, let them know you'll be using the SilverStripe CMS, and they will install it for you.
../input/suggested-web-hosts.txt:  * [[http://www.silverstripeclub.com/silverstripe-services/|SilverStripe Club Hosting]] The SilverStripe Club hosting service has been specifically engineered for SilverStripe CMS. Host 25 SilverStripe sites on a single account for less than $1 (USD) per site per month. Also includes free $9.95 Enom domain name reseller account valued at $1495 (USD).
../input/suggested-web-hosts.txt:  * [[http://www.easyserve.co.nz/|Easy Serve Web Hosting]] SilverStripe specialists, we host lots of silverstripe sites, free installation and advice.
../input/suggested-web-hosts.txt:  * [[http://godaddy.com|godaddy.com]], requires use of their automated installer.
../input/suggested-web-hosts.txt:  * [[http://myircshells.com|MyIRCShells.com]], Standard Plan - 500MB Disk Space, 5GB Bandwidth, PHP 5.2.x ($10 per month plan). Works great! Talk to Koneko (the owner) via IRC for questions or to signup. Server: saber.myircshells.com  Room: #myircshells
../input/suggested-web-hosts.txt:  * [[http://littlemonkeyhosting.com|LittleMonkey Hosting]], Business plan (medium sized) - 15gb space, 300gb traffic, PHP 5.2.x, 128MB memory limit so no php.ini changes required.  SilverStripe installs with no problems at all.  Other size plans also available with the same script and database support.
../input/suggested-web-hosts.txt:  * [[http://www.opensourcehost.com|OpenSourceHost.com]] , Basic plan - 2gb space, 20gb traffic, PHP 5.2.x. Not only does silverstripe install no problem, the host will actually install it for you. I tried asmallorange and 2mhost and could not get either to work, but these guys got it going for me. 
../input/suggested-web-hosts.txt:  * [[http://www.2mhost.com|2mhost.com]] , PHP 5 Developer plan - 500mb space, 25gb traffic, PHP 5.24. Silverstripe installs no problem. 
../input/suggested-web-hosts.txt:  * [[http://a2hosting.com|a2hosting.com]], 10GB space, 100 GB transfer, PHP 5.2.1, MySQL5, SVN, Ruby etc, USD7 month.
../input/suggested-web-hosts.txt:  * [[http://www.westhost.com/|Westhost.com]], Virtual Private Servers from USD4 a month, for 250MB disk/10GB traffic. ''(Requires activating PHP,MySQL in control panel)''
../input/suggested-web-hosts.txt:  * [[http://www.asmallorange.com|asmallorange.com]], various plans - starting from $25 a year to $30 per month. Linux 2.6, Apache 1.3, PHP 4.4 with Zend Optimizer, PHP 5.2, MySQL 5.0, Ruby on Rails 1.2, Perl 5.8, Python 2.4. Read here if you want to use SilverStripe on this host, before installing: http://wiki.asmallorange.com/HOWTOPhpFastCGI (you need to increase the PHP memory limit using your own php.ini file and FastCGI). Confirmed to have SilverStripe (rc5) working //(7/4/07 - Sean/SS)//
../input/suggested-web-hosts.txt:  * [[http://www.dreamhost.com|dreamhost.com]], Highly recommended. Really easy to setup, supports PHP5 and unlimited MySQL. Has PHP memory of 90mb and SSH support, as well as RoR and Subversion! :-). Monthly price is USD 7.95 (or USD 190 for 2 years pre-paid, no setup fee). Use promo code SILVERSTRIPEROCK to waive setup fee on monthly billing plan. //Before// installing, ensure you have set PHP 5 in the 'Manage Domains' portion of the DreamHost control panel, otherwise you'll get a bucketload of errors during the install.
../input/suggested-web-hosts.txt:  * [[http://navigatoris.net/|navigatoris.net]], has a unlimited domains, 500mb space, 10gb bandwidth plan for $5/month.        
../input/suggested-web-hosts.txt:    * Example website running on navigatoris.net: [[http://www.elijahlofgren.com/silverstripe/|elijahlofgren.com/silverstripe/]]
../input/suggested-web-hosts.txt:  * [[http://www.bluehost.com/]], 1500 Gigabyte Hosting Space,500 POP/Imap Email Accounts,15000 GIGS of Transfer (NEW!),SSH (Secure Shell), SSL, FTP, Stats,CGI, Ruby (RoR), Perl, PHP, MySQL,2000/2002/2003 Front Page Extensions,24/7 Superb/Responsive Sales/Support, for $6.95 per month.
../input/suggested-web-hosts.txt:  * [[http://www.servage.net/|Servage.net]], 360GB space, 3600 GB transfer, PHP 5.2.1, MySQL5, Ruby, free domain, unlimited domains, unlimited email accounts, Python, Cron, etc, GBP $6.45 month. Use this link for an extra 25gb.
../input/suggested-web-hosts.txt:  * [[http://www.joyent.com/|Joyent]], very professional hosting provider, no problems installing, it just works, they have shared hosting as well, recommended -SilverRay, using v2.2.0 at the moment.
../input/suggested-web-hosts.txt:  * [[http://www.000webhost.com|000webhost.com ($0.00 webhost)]], 1500MB space, 100GB traffic, Free Web Hosting, memory_limit set at 32M, unlimited DB size.
../input/suggested-web-hosts.txt:  * [[http://www.site5.com/]], very comprehensive hosting, with excellent customersuppport, I've gone of the hostPro + Turbo package, installed version 2.3.3 straight off with no problems what so ever
../input/suggested-web-hosts.txt:  * [[http://www.quadrahosting.com.au/hosting/unix.html|Quadra Hosting]], Gold Coast based organisation that manages FreeBSD based servers in Sydney and the United States. Quadra will provide shell access on request. Support for PHP5 5.2.4 and MySQL5 on all new accounts. All php.ini variables can be overwritten with .htaccess. You'll need to [[https://support.quadrahosting.com/index.php?_m=knowledgebase&_a=viewarticle&kbarticleid=125|disable mod_security]] for SilverStripe function correctly. //(Confirmed compatibility with SS 2.2.1 by Tatey)//
../input/suggested-web-hosts.txt:  * [[http://www.higherorbit.com.au/Services/Web/Hosting/|Higher Orbit]], Perth based IT company with very flexible and reasonably priced plans. Shell access, PHP 5.2.4, MySQL 5.0.45. Full details of the server hardware and prices by following the link. Good customer service. //(Confirmed SS 2.1 working - DesignCity)//
../input/suggested-web-hosts.txt:  * [[http://www.adam.com.au/product_work_hosting_gen_host.php|Adam Internet]], Adelaide based ISP, Good Support. .//(webhost-18.adam.com.au, webhost-19.adam.com.au - comfirmed SS 2.2.2 working - CodeGuerrilla)//
../input/suggested-web-hosts.txt:  * [[http://www.jumba.com.au/hosting/business|Jumba]], Canberra based ISP, // Set memory_limit @see [[http://wiki.jumba.com.au/wiki/Php.ini]] // .//(Comfirmed SS 2.3.4 working - CodeGuerrilla)//
../input/suggested-web-hosts.txt:  * [[http://www.internode.on.net/business/hosting_and_content/business_web_hosting/|Internode: Business Web Hosting - Database]]//
../input/suggested-web-hosts.txt:  //* Comment by CodeGuerrilla:// PHP HTTP Extension conflicts had to rename sapphire/core/control/HTTPRequest.php and HTTPResponse.php and all references to SSHTTPRequest and SSHTTPResponse, use find and replace on your SS directory I suggest doing them one at a time @see [[http://silverstripe.org/installing-silverstripe/show/255177?start=0#post255921|Forum Post]], Can get _SESSION is undefined errors or a Server 500 errors if any of your custom code has blank lines beneath the closing PHP tag (you can leave these off or remove spaces to fix)//
../input/suggested-web-hosts.txt:  * [[http://online.net/|Online.net: package M]], works out of the box (you only have to activate PHP5, as explained in their support pages).
../input/suggested-web-hosts.txt:  * [[http://www.allinkl.com/|Allinkl.com]], No problem running current Silver Stripe Version 2.2.1. Successfully running on shared hosting package. Older packages require transition to php 5 but it's done really quick by allinkl.com support.
../input/suggested-web-hosts.txt:  * [[http://www.einsundeins.de//|1&1 Internet AG]], big German provider with no problems at all
../input/suggested-web-hosts.txt:  * [[http://www.strato.de//|Strato AG]], big German provider, mod_rewrite works meanwhile, be sure to turn the option "SiteGuard" off and to activate PHP5 for the SilverStripe directory.[[http://open.silverstripe.com/ticket/2660|Bug 2660]] was helpful as well. //(Confirmed compatibility with SS 2.2.3 by samuelle)// //(adiwidjaja: Works, but is not recommended. Strato seems to set severe limits on processor time so rendering is *very* slow)//
../input/suggested-web-hosts.txt:  * [[http://www.hetzner.de//|Hetzner]], did not cause any problems at all. You can use their [[http://konsole-h.de/ |webtool]] to configure webserver, mysql, and php. Make sure to add a user with write permissions to your root dir. Otherwise, .htaccess is reported not writeable during installation.
../input/suggested-web-hosts.txt:  * [[http://www.w3w.de//|w3w]], no problems here.   
../input/suggested-web-hosts.txt:  * [[http://www.keenondots.com/]], Silverstripe works out of the box, Good knowledge about Silverstripe.
../input/suggested-web-hosts.txt:  * [[http://www.internettoday.nl|Internet Today ISP: all packages]], from SS 2.2.3 works perfectly, server mods can be requested, great support!
../input/suggested-web-hosts.txt:  * [[http://www.easyserve.co.nz/|Easy Serve Web Hosting]] SilverStripe specialists, we host lots of silverstripe sites. Quick Auckland based servers, free installation and advice.
../input/suggested-web-hosts.txt:  * [[http://www.openhost.co.nz/|Open Host]] Quick Simple and reasonably priced! Do NOT support it.  Cant guarantee performance....Only run it on VPS! - Works on Linux packages - Ronan 04/05/09
../input/suggested-web-hosts.txt:  * [[http://www.247hosting.co.nz/|24/7 Hosting]] Managed hosting solution, CHCH Based Servers.
../input/suggested-web-hosts.txt:  * [[http://www.nucleus.co.nz/linuxhosting.html|Nucleus]] (colocation, whole boxes, single domain 
../input/suggested-web-hosts.txt:  * [[http://hostec.pl|Hostec]], dedicated servers, colocation, single accounts. No problems with SilverStripe installation, the servers quality is alright. If you experiance any problems with the installation you can increase the php memory limit by adding
../input/suggested-web-hosts.txt:  * [[http://nazwa.pl|Nazwa]], dedicated servers, colocation, single accounts. You must change the PHP  files support by adding the following to .htaccess:
../input/suggested-web-hosts.txt:  * [[http://prohost.pl|Prohost]], dedicated servers, colocation, single accounts. Everything works fine! Despite the installator missing the mod_rewrite, it works!
../input/suggested-web-hosts.txt:  * [[http://www.cyon.ch|cyon]], shared hosting with lots of features at a good price. You can configure your php.ini from the control panel and increase the php memory limit up to 99mb. Works very well with SilverStripe. Good tech support.
../input/suggested-web-hosts.txt:  * [[http://www.gpmd.co.uk/]], Secure Managed SilverStripe Hosting. Shared hosting from £50pm. Dedicated hosting from £300pm. 
../input/suggested-web-hosts.txt:  * [[http://www.zen.co.uk/]],Installed OK on their Linux CPanel shared hosting. Use a local php.ini to up the memory limit to 64M. Note that their older servers run PHP 4, so check that you are on a new one.
../input/suggested-web-hosts.txt:  * [[http://www.webfusion.co.uk/]] Fusion Professional Linux - Installed fine, but 32MB php limit. Very slow response times with frequent script time-outs. I found it unusable, especially when uploading and embedding images. I also found their support extremely unhelpful for basic questions. (kinkykoder)
../input/suggested-web-hosts.txt:  * [[http://www.internode.on.net|Internode]] - Silverstripe does not work on Internode at all as they have disabled fopen due to 'security holes'. //(Confirmed after painful troubleshooting - DesignCity)//
../input/suggested-web-hosts.txt:  * [[http://netregistry.com.au/|Net Registry]] - Zeus HTTP server is incompatible with Apache's mod_rewrite. Thus, it's not possible to utilise Silverstripe in such a configuration. In addition, no shell access is provided. 
../input/suggested-web-hosts.txt:  * [[http://netlog.com.au|Net Logistics]] - PHP script memory limit restricted to 15MB on all shared servers (VPS and Dedicated is exempted).
../input/tablefield.txt:TableField behaves in the same manner as [[http://api.silverstripe.org/trunk/forms/fields-relational/TableListField.html|TableListField]], however allows the editing of existing and adding of new rows.
../input/tablefield.txt:See [[http://api.silverstripe.org/trunk/forms/fields-relational/TableListField.html|TableListField]] for more documentation on the base-class
../input/tablefield.txt:See [[http://api.silverstripe.org/trunk/forms/fields-relational/TableListField.html|TableListField]].
../input/tablefield.txt:You can apply a [[http://api.silverstripe.org/current/forms/transformations/FormTransformation.html|FormTransformation]] (e.g. readonly or disabled) to any given field,
../input/tablefield.txt:Due to the nested nature of this fields dataset, you can't set any required columns as usual with the [[http://api.silverstripe.org/current/sapphire/form/RequiredFields.html|RequiredFields]]-class. Please use **setRequiredFields()** on the TableField-instance for this.
../input/tablefield.txt:Note: You still have to attach some form of [[http://api.silverstripe.org/trunk/forms/validators/Validator.html|Validator]] to the form to trigger any validation on this field.
../input/tablefield.txt:When you have TableField inside a [[ComplexTableField]], the parent ID may not be known in your getCMSFields() method.  In these cases, you can set a value to '$RecordID' in your TableField extra data, and this will be populated with the newly created record id upon save.
../input/tablefield.txt:[[http://api.silverstripe.org/trunk/forms/fields-relational/TableField.html|Click here for the API documentation]].
../input/tablelistfield.txt:Form field that embeds a list of [[http://api.silverstripe.org/trunk/sapphire/model/DataObject.html|DataObject]]s into a form, such as a member list or a file list.
../input/tablelistfield.txt:Provides customizeable columns, record-deletion by ajax, paging, sorting, CSV-export, printing, input by [[http://api.silverstripe.org/trunk/sapphire/model/DataObject.html|DataObject]] or raw SQL.
../input/tablelistfield.txt:[[http://api.silverstripe.org/trunk/forms/fields-relational/TableListField.html|Click here for the API documentation]].
../input/tabset.txt:[[http://api.silverstripe.org/trunk/forms/fields-structural/TabSet.html|Click here for the API documentation]].
../input/tab.txt:[[http://api.silverstripe.org/trunk/forms/fields-structural/Tab.html|Click here for the API documentation]].
../input/templates.txt:The following control codes are available. For a more details list see [[built-in-page-controls]]:
../input/templates.txt:You can perform includes using the Requirements Class via the template controls.  See the section on [[requirements#including_inside_template_files|Includes in Templates]] for more details and examples.
../input/templates.txt:If the method/field returned is an iterator such as a [[http://api.silverstripe.org/trunk/sapphire/model/DataObject.html|DataObject]], then the control block will be repeated for each element of that iterator.  This is the cornerstone of all menu and list generation in SilverStripe.  
../input/templates.txt:In this example, Menu(1) returns a DataObjectSet listing each top level main menu item (for more info on Menu(1): [[http://doc.silverstripe.com/doku.php?id=tutorial:1-building-a-basic-site#making_a_navigation_system|Making a Navigation System]]).  The <a> tag is repeated once for each main menu item, and the $Link and $Title values for each menu item is substituted in.
../input/templates.txt:The following example takes the Title field of our object, casts it to a [[data-types|Varchar]] object, and then calls the $XML object on that Varchar object.
../input/templates.txt:See [[data-types]] for more information.
../input/templates.txt:See [[partial-caching]] for more information.
../input/templates.txt:Out of the box, the template engine gives you lots of neat little variables and controls which you will find useful. For a list of all the controls see [[built-in-page-controls]].
../input/templates.txt:Your function could return a single value as above or it could be a subclass of [[ArrayData]] for example a [[http://api.silverstripe.org/trunk/sapphire/model/DataObject.html|DataObject]] with many values then each of these could be accessible via a control loop
../input/templates.txt:[[http://doc.silverstripe.com/doku.php?id=html|HTML Guidelines]]
../input/templates.txt:[[http://doc.silverstripe.com/doku.php?id=themes|Themes]]
../input/testdocuwiki.txt:	This is block code, with language, and **docuwiki** //formatting// [[link]]
../input/testdocuwiki.txt:This is another text block with [[a-link]] to test we come out of block code mode.
../input/testdocuwiki.txt:[[wikilink]]
../input/testdocuwiki.txt:[[http://slashdot.org]]
../input/testdocuwiki.txt:[[wikilink|title]]
../input/testing-guide-glossary.txt://Part of the [[testing-guide|SilverStripe Testing Guide]].//
../input/testing-guide-intro.txt://Part of the [[testing-guide|SilverStripe Testing Guide]].//
../input/testing-guide-intro.txt:Testing the Sapphire framework should focus on [[http://en.wikipedia.org/wiki/Characterization_Test|characterization]]. We should be writing tests that illustrate the way that the API works, feeding commonly used methods with a range of inputs and states and verifying that these methods respond with clear and predictable results.
../input/testing-guide-intro.txt:Modules usually encapsulate a smaller, and well defined subset of behavior or special features added on top of the core platform. A well constructed module will contain a reference suite of unit tests that documents and verifies all the basic aspects of the module design. See also: [[module-maintainers]].
../input/testing-guide-intro.txt:  * [[testing-guide-glossary|Testing Guide - Glossary]]
../input/testing-guide-intro.txt:  * [[testing-guide-howto|Testing Guide - How To]]
../input/testing-guide-intro.txt:  * [[http://www.slideshare.net/maetl/getting-to-grips-with-silverstripe-testing|Getting to Grips with SilverStripe Testing]]
../input/testing-guide-troubleshooting.txt://Part of the [[testing-guide|SilverStripe Testing Guide]].//
../input/testing-guide.txt:If you are familiar with PHP coding but new to unit testing, you should read the [[testing-guide-intro|Introduction]] and check out Mark's presentation [[http://www.slideshare.net/maetl/getting-to-grips-with-silverstripe-testing|Getting to Grips with SilverStripe Testing]].
../input/testing-guide.txt:You should also read over [[http://www.phpunit.de/pocket_guide/3.2/|the PHPUnit manual]]. It provides a lot of fundamental concepts that we build on in this documentation.
../input/testing-guide.txt:If you're more familiar with unit testing, but want a refresher of some of the concepts and terminology, you can browse the [[testing-guide-glossary|Testing Glossary]].
../input/testing-guide.txt:To get started now, follow the installation instructions below, and check [[testing-guide-troubleshooting|Troubleshooting]] in case you run into any problems.
../input/testing-guide.txt:The framework has a required dependency on [[http://www.phpunit.de/|PHPUnit]] and an optional dependency on [[http://simpletest.org/|SimpleTest]], the two premiere PHP testing frameworks.
../input/testing-guide.txt:To run Sapphire tests, you'll need to be able to access PHPUnit on your include path. First, you'll need to make sure that you have the PEAR command line client installed. To test this out, type ''pear help'' at your prompt. You should see a bunch of generic PEAR info. If it's not installed, you'll need to set it up first (see: [[http://www.sitepoint.com/article/getting-started-with-pear/|Getting Started with PEAR]]) or else manually install PHPUnit (see: [[http://www.phpunit.de/pocket_guide/3.3/en/installation.html|Installation instructions]]).
../input/testing-guide.txt:We need a specific version of PHPUnit (3.3.x), as 3.4 or higher breaks our test runner (see [[http://open.silverstripe.com/ticket/4573|#4573]])
../input/testing-guide.txt:''cd'' to the root level of your project and run [[sake]] (Sapphire Make) to execute the tests:
../input/testing-guide.txt:  * **[[testing-howto:create-sapphire-test|Create a Sapphire Test]]**
../input/testing-guide.txt:  * **[[testing-howto:create-functional-test|Create a Functional Test]]**
../input/testing-guide.txt:  * **[[testing-howto:test-email-sending|Test Outgoing Email Sending]]**
../input/textareafield.txt:If you want to implement a [[http://api.silverstripe.org/current/sapphire/model/Text.html|Text]] into a form element, you need to pass it an array of source data.
../input/textareafield.txt:[[http://api.silverstripe.org/trunk/forms/fields-basic/TextareaField.html|Click here for the API documentation]].
../input/textfield.txt:[[http://api.silverstripe.org/trunk/forms/fields-basic/TextField.html|Click here for the API documentation]].
../input/themes.txt:Head to the [[http://www.silverstripe.org/themes | Themes ]] area of the website to check out the wide range of themes the community has built. Each theme has a page with links you can use to preview and download it. The theme is provided as a .tar.gz file.
../input/themes.txt:See themes:[[themes:developing
../input/themes.txt:Your theme file must be in a .tar.gz format. A useful tool for this is - [[http://www.7-zip.org/|7 Zip]]. Using 7Zip you must select the your_theme folder and Add to archive, select TAR and create. Then after you have the TAR file right click it -> Add to Archive (again) -> Then use the archive format GZIP.
../input/themes.txt:Head over to the [[http://www.silverstripe.com/showcase-forum/ | Themes Forum ]]
../input/third-party-packages.txt:    * [[http://tinymce.moxiecode.com/|TinyMCE]] (LGPL license)
../input/third-party-packages.txt:    * [[SWFUploadField|SWFUpload]] (MIT License)
../input/third-party-packages.txt:    * [[http://simplepie.org|SimplePie]] (BSD License)
../input/third-party-packages.txt:    * [[http://www.bennolan.com/behaviour/|Behaviour]] (BSD license)
../input/third-party-packages.txt:    * [[http://prototype.conio.net/|Prototype]] (MIT license)
../input/third-party-packages.txt:    * [[http://script.aculo.us/|Scriptaculous]] (MIT license)
../input/third-party-packages.txt:    * [[http://www.dynarch.com/projects/calendar/|Dynarch Calendar]] (LGPL license)
../input/third-party-packages.txt:    * [[http://orangoo.com/labs/GreyBox/|GreyBox]] (LGPL license)
../input/third-party-packages.txt:    * [[http://www.jquery.com|JQuery]] (MIT license)
../input/third-party-packages.txt:    * [[http://pear.php.net/pepr/pepr-proposal-show.php?id=198|JSON]] (BSD license)
../input/third-party-packages.txt:    * [[http://simpletest.sourceforge.net/|SimpleTest]] (Open Group Test Suite license)
../input/third-party-packages.txt:    * [[ttp://www.phpunit.de/|PHPUnit]] (BSD license)
../input/tools.txt:  * [[tools:netbeans|NetBeans]] PHP Flavor (open-source)
../input/tools.txt:  * [[tools:eclipse|Eclipse]] (open-source)
../input/tools.txt:  * [[tools:textmate|TextMate]] (€39)
../input/tools.txt:  * [[tools:dreamweaver|Dreamweaver]] (commercial)
../input/tools.txt:  * [[http://www.ultraedit.com/|UltraEdit]] ($49.95 US)
../input/tools.txt:  * [[http://notepad-plus.sourceforge.net/uk/site.htm|Notepad++]] (open-source)
../input/tools.txt:  * [[http://www.e-texteditor.com/]] ($34.95)
../input/tools.txt:  * [[http://www.intype.info]] (Free Alpha Release)
../input/tools.txt:  * [[tools:dreamweaver|Dreamweaver]] (commercial)
../input/tools.txt:  * [[tools:netbeans|NetBeans]] PHP Flavor (open-source)
../input/tools.txt:  * [[tools:eclipse|Eclipse]] (open-source)
../input/tools.txt:  * [[tools:gedit|gedit]] (open-source)
../input/translatable.txt:  * [[translation]]: Starting point for community-driven translation of the Silverstripe UI
../input/translatable.txt:  * [[i18n]]: Developer-level documentation of Silverstripe's i18n capabilities
../input/translatable.txt:  * [[modules:translation]]: The module powering our translation server
../input/translatable.txt:  * [[multilingualcontent]]: Developer-level documentation for translating website content
../input/translatable.txt:  * [[translation-offers]]
../input/translatable.txt:[[http://api.silverstripe.org/trunk/sapphire/core/Translatable.html|Click here for the API documentation]].
../input/translation-offers.txt:**[[http://translate.silverstripe.com/apply|Offer a translation at translate.silverstripe.com]]**
../input/translation-offers.txt:[[translation|Introduction to community-driven translations of the Silverstripe interface]]
../input/translation-offers.txt:  * [[i18n]]: Developer-level documentation of Silverstripe's i18n capabilities
../input/translation-offers.txt:  * [[modules:translation]]: The module powering our translation server
../input/translation-offers.txt:  * [[translatable]]: DataObject-interface powering the website-content translations
../input/translation-offers.txt:  * [[multilingualcontent]]: Developer-level documentation for translating website content
../input/translation-offers.txt:  * [[translation-offers]]
../input/translation.txt:  * You can apply [[http://translate.silverstripe.com/apply/|here]]
../input/translation.txt:  * Announce and discuss translations on the forum ([[http://silverstripe.com/extending-hacking-silverstripe-forum/flat/292|here]])
../input/translation.txt:  * Make your modules translatable (see [[i18n]])
../input/translation.txt:  * Make your themes translatable (see [[i18n]])
../input/translation.txt:Once you have your account details, you can go [[http://translate.silverstripe.com/|here]] and choose a language you want to translate. You'll then need to login with the details provided.
../input/translation.txt:Please [[http://translate.silverstripe.com/contact/|contact us]] if you have any specific questions about translate.silverstripe.com.
../input/translation.txt:Currently translated entities are not directly factored into code (for security reasons and release/review-control), so you can't see them straight away. You can download automatically generated php-files for your language on the translation-server for each module (e.g. cms, sapphire, forum, ...) - and place those files in the appropriate directories on a local silverstripe installation. Please use our [[daily-builds]] for your local installation.
../input/translation.txt:It is entirely possible that we missed certain strings in preparing Silverstripe for translation-support. If you're technically minded, please read [[i18n]] on how to make it translatable. Otherwise just post your findings to the [[http://silverstripe.com/silverstripe-forum/|forum]].
../input/translation.txt:Once you've built a translation-enabled module, you can run the "[[i18n#collecting_text|textcollector]]" on your local installation for this specific module (see [[i18n]]). This should find all calls to _t() in php/ss-files, and generate a new lang-file with the default locale (path: <mymodule>/lang/en_US.php). Upload this file to the translation-server, wait for approval by Silverstripe, and wait for the translators to do their magic!
../input/translation.txt:Silverstripe doesn't have built-in support for attribute-based RTL-modifications (<html dir="rtl"). We are currently investigating the available options, and are eager to get [[http://silverstripe.com/contact/|feedback]] on your experiences with translating silverstripe RTL.
../input/translation.txt:**No**, as it causes us a lot of work in merging these files back to the database, and doesn't denote you as the author of a particular translation. Please use [[http://translate.silverstripe.com]] for all new and existing translations.
../input/translation.txt:Currently this is a manual process of a core team member downloading approved translations from [[http://translate.silverstripe.com]] and committing them into our source tree.
../input/translation.txt:For now, please translate all duplications - sometimes they might be intentional, but mostly the developer just didn't know his phrase was already translated. Please [[http://translate.silverstripe.com/contact/|contact us]] about any duplicates that might be worth merging.
../input/translation.txt:  * [[i18n]]: Developer-level documentation of Silverstripe's i18n capabilities
../input/translation.txt:  * [[modules:translation]]: The module powering our translation server
../input/translation.txt:  * [[translatable]]: DataObject-interface powering the website-content translations
../input/translation.txt:  * [[multilingualcontent]]: Developer-level documentation for translating website content
../input/translation.txt:  * [[translation-offers]]
../input/treedropdownfield.txt:treedropdownfield is used on [[virutalpage]] a class which creates another instance of a page, with exactly the same fields that can be represented on another part of the site. The code below is taken from an example of this.
../input/treedropdownfield.txt:[[http://api.silverstripe.org/trunk/forms/fields-relational/TreeDropdownField.html|Click here for the API documentation]].
../input/treemultiselectfield.txt:This form class allows you to represent Many-Many Joins in a handy single field. The field has javascript which generates a AJAX tree of the site structure allowing you to save selected options to a component set on a given [[http://api.silverstripe.org/trunk/sapphire/model/DataObject.html|DataObject]]. 
../input/treemultiselectfield.txt:This field saves a [[http://api.silverstripe.org/trunk/sapphire/model/ComponentSet.html|ComponentSet]] object which is present on the [[http://api.silverstripe.org/trunk/sapphire/model/DataObject.html|DataObject]] passed by the form, returned by calling a function with the same name as the field. The Join is updated by running setByIDList on the [[http://api.silverstripe.org/trunk/sapphire/model/ComponentSet.html|ComponentSet]]
../input/treemultiselectfield.txt:Before the data is saved, you can modify the ID list sent to the [[http://api.silverstripe.org/trunk/sapphire/model/ComponentSet.html|ComponentSet]] by specifying a function on the [[http://api.silverstripe.org/trunk/sapphire/model/DataObject.html|DataObject]] called "onChange[fieldname](&items)". This will be passed by reference the IDlist (an array of ID's) from the Treefield to be saved to the component set. 
../input/treemultiselectfield.txt:Returning false on this method will prevent treemultiselect from saving to the [[http://api.silverstripe.org/trunk/sapphire/model/ComponentSet.html|ComponentSet]] of the given [[http://api.silverstripe.org/trunk/sapphire/model/DataObject.html|DataObject]].
../input/treemultiselectfield.txt:[[http://api.silverstripe.org/trunk/forms/fields-relational/TreeMultiselectField.html|Click here for the API documentation]].
../input/tutorials.txt:  * [[tutorial:1-building-a-basic-site|Tutorial 1: Building a basic site]]: An introduction to building a site with SilverStripe
../input/tutorials.txt:  * [[tutorial:2-extending-a-basic-site|Tutorial 2: Extending a basic site]]: A tutorial that builds on "Building a basic site"
../input/tutorials.txt:  * [[tutorial:3-forms|Tutorial 3: Forms]]: An introduction to forms in SilverStripe.
../input/tutorials.txt:  * [[tutorial:4-site-search|Tutorial 4: Site Search]]: Learn how to add search to your site.
../input/tutorials.txt:  * [[tutorial:5-dataobject-relationship-management|Tutorial 5: Dataobject Relationship Management]]: Learn how to create a simple data relationships
../input/tutorials.txt:  * [[tutorial:site-map|Tutorial 6: creating a site map]]: Learn how to add a site map to your site.
../input/tutorials.txt:Please suggest improvements or further tutorials by [[http://open.silverstripe.com/register|registering to our issue tracker]] and [[http://open.silverstripe.com/newticket|adding a concise and clear request, with "Documentation" listed as the category]].
../input/tutorials.txt:  * [[http://silverstripe.org/assets/screencasts/Tutorial-InstallingLinux-DM08.swf|Installing on linux]]
../input/tutorials.txt:  * [[http://silverstripe.org/assets/screencasts/Tutorial-InstallingMAMP-SW08.swf|Installing on Apple Macintosh (using MAMP)]]
../input/tutorials.txt:  * [[http://silverstripe.org/assets/screencasts/Tutorial-InstallingBlogModule-DM08.swf|Installing a module (e.g. a blog)]]
../input/tutorials.txt:  * [[http://silverstripe.org/assets/screencasts/Tutorial-ChangingFields-DM08.swf|Customising the CMS (Adding new fields)]]
../input/tutorials.txt:  * [[common-problems|Common Problems]]: Review some existing solutions to common problems.
../input/tutorials.txt:  * [[http://www.silverstripe.com/silverstripe-forum/|SilverStripe Forums]]: Head over to the forums and ask the community for help
../input/uniquerestrictedtextfield.txt:[[http://api.silverstripe.org/trunk/forms/fields-formattedinput/UniqueRestrictedTextField.html|Click here for the API documentation]].
../input/upgrading.txt:  * [[http://open.silverstripe.org/wiki/ChangeLog|Detailed changelogs]]
../input/upgrading.txt:  * [[http://silverstripe.org/blog/tag/release|Blog posts about releases on silverstripe.org]]
../input/upgrading.txt:  * [[upgrading:trunk|trunk]]
../input/upgrading.txt:  * [[upgrading:2.4.0|2.4.0]]
../input/upgrading.txt:  * [[upgrading:2.3.3|2.3.3]]
../input/upgrading.txt:  * [[upgrading:2.3.2|2.3.2]]
../input/upgrading.txt:  * [[upgrading:2.3.1|2.3.1]]
../input/upgrading.txt:  * [[upgrading:2.3.0|2.3.0]]
../input/upgrading.txt:  * [[upgrading:2.2.0|2.2.0]]
../input/upgrading.txt:  * [[upgrading:2.1.0|2.1.0]]
../input/upgrading.txt:  * Check if any [[modules]] (e.g. blog or forum) in your installation are compatible and need to be upgraded as well
../input/upgrading.txt:  * See [[common-problems]] for a list of likely mistakes that could happen during an upgrade.
../input/urlvariabletools.txt:Append the option and corresponding value to your URL in your browser's address bar.  You may find the [[https://addons.mozilla.org/en-US/firefox/addon/1290|Firefox UrlParams extension]] useful in order to debug a POST requests (Like Forms).
../input/urlvariabletools.txt:| isDev 	| 1 | Put the site into [[debugging|development mode]], enabling debugging messages to the browser on a live server.  For security, you'll be asked to log in with an administrator log-in |
../input/urlvariabletools.txt:| isTest 	| 1 | Put the site into [[debugging|test mode]], enabling debugging messages to the admin email and generic errors to the browser on a live server |
../input/urlvariabletools.txt:| debug_profile | 1 | Enable the [[profiler]] for the duration of the request |
../input/urlvariabletools.txt:| debug_behaviour | 1 | Get profiling of [[http://bennolan.com/behaviour|Behaviour.js]] performance (Firebug recommended) |
../input/urlvariabletools.txt:| forceFormat	| xhtml,html | Force the content negotiator to deliver [[HTML]] even if [[XHTML]] is allowed |
../input/urlvariabletools.txt:You can set an URL to redirect back to after a [[security|Security]] action.  See the section on [[security#redirect_back_to_another_page_after_login|URL Redirections]] for more information and examples.
../input/validator.txt:Validators are implemented as an argument to the [[http://api.silverstripe.org/trunk/forms/core/Form.html|Form]] constructor.  You create a required fields validator like so.  In this case, we're creating a [[http://api.silverstripe.org/current/sapphire/form/RequiredFields.html|RequiredFields]] validator - Validator itself is an abstract class.
../input/validator.txt:By default, SilverStripe forms with an attached Validator instance use the custom Validator.js clientside logic. It is quite hard to customize, and might not be appropriate for all use-cases. You can disable integrated clientside validation, and use your own (e.g. [[http://docs.jquery.com/Plugins/Validation|jquery.validate]]).
../input/validator.txt:  * [[http://api.silverstripe.org/current/forms/validators/RequiredFields.html|RequiredFields]]
../input/validator.txt:  * [[http://api.silverstripe.org/current/forms/validators/CustomRequiredFields.html|CustomRequiredFields]]
../input/validator.txt:[[http://api.silverstripe.org/2.4/forms/validators/Validator.html|Click here for the API documentation]].
../input/versioned.txt:The Versioned class is a [[http://api.silverstripe.org/trunk/sapphire/model/DataObject.html|DataObject]] that adds versioning and staging capabilities to the objects.
../input/virtualpage.txt:Virtual Page creates an instance of a page in another part of the site, which has the same fields that the original page had. In SilverStripe the fields are represented as [[#readonly]] fields, but on templates, all the fields are available just like the original class.
../input/virtualpage.txt:[[http://api.silverstripe.org/trunk/sapphire/VirtualPage.html|Click here for the API documentation]]. 
../input/widgets.txt:  * To download widgets visit [[http://silverstripe.org/widgets|Widgets section]]
../input/widgets.txt:  * Visit [[widget-ideas]] for some ideas on what kind of widget to build (just check the [[http://silverstripe.org/widgets|Widgets section]] first to make sure it hasn't already been built!)
../input/widgets.txt:  * Upload widgets you want to share to [[http://silverstripe.org/widgets/manage/add]]. Make sure you read the packaging instructions at the bottom of the page about how to make your widget package.
../input/widgets.txt:To implement a form inside a widget, you need to implement a custom controller for your widget to return this form. Make sure that your controller follows the usual naming conventions, and it will be automatically picked up by the [[http://api.silverstripe.org/trunk/sapphire/widgets/WidgetArea.html|:WidgetArea]] rendering in your //Page.ss// template.
../input/widgets.txt:Note: The necessary controller actions are only present in subclasses of [[Page_Controller]]. To use widget forms in other controller subclasses, have a look at //ContentController->handleWidget()// and //ContentController::$url_handlers//.
../input/widgets.txt:See an [[:recipes:widget-forms-2.3|alternative recipe for SilverStripe 2.3 or earlier]].
../input/widgets.txt:You should have a folder called widget_YourName in the top level (the one with sapphire, cms..) with all your files. See the example below. Your widget **MUST** have at least 1 Template file, 1 PHP file, the README File [[http://open.silverstripe.com/browser/modules/widgets/twitter/trunk/README|(Example)]]and an _config.php file for configuration. If you dont need any config options for the widget to work then you still need an _config.php by you can make it blank
../input/windmill-testing.txt:Install Windmill as detailed on [[http://windmill.osafoundation.org/trac/wiki/BookChapter-1-Install#InstallingWindmill|the windmill site]]. 
