Restructure of the docs markdown source files into more logical taxonomy
24
docs/en/00_Getting_Started/01_Installation/01_Linux_Unix.md
Normal file
@ -0,0 +1,24 @@
|
||||
# Installation on Linux, Unix and *nix like Operating Systems
|
||||
|
||||
SilverStripe should be able to be installed on any Linux, Unix or *nix like OS as long as the correct server software is installed and configured (referred to a *nix in this document from herein). It is common that web hosting that you may use for your production SilverStripe application will be *nix based, here you may also want to use *nix locally to ensure how you develop locally mimics closely your production environment.
|
||||
|
||||
Is important to ensure you check the [Server Requirements](/Getting_Started/Installation/Server_Requirements) list before acquiring and installing SilverStripe on your *nix server (locally or otherwise).
|
||||
|
||||
At a high level you will need a:
|
||||
* Web server e.g. Apache, Nginx
|
||||
* Database e.g. MariaDB, Postgres, MySQL
|
||||
* PHP
|
||||
|
||||
##*nix installation guides on the web
|
||||
There are a number of good step by step guides covering server setups and installing of SilverStripe on the various flavours of *nix systems.
|
||||
|
||||
Note: Many of the following guides simply download SilverStripe as a zipped file. We recommend the use of [Composer](/Getting_Started/Composer/) once you get to the point of installing SilverStripe (though the choice is up to you). Always ensure you get the latest version if you are starting a new project.
|
||||
|
||||
###Known (but not exhaustive) list
|
||||
* [How To Install Silverstripe on Your VPS](https://www.digitalocean.com/community/tutorials/how-to-install-silverstripe-on-your-vps)
|
||||
* [Running SilverStripe On Nginx (LEMP) On Debian Wheezy/Ubuntu 13.04](http://www.howtoforge.com/running-silverstripe-on-nginx-lemp-on-debian-wheezy-ubuntu-13.04)
|
||||
* [Setting up nginx, PHP-FPM, and SilverStripe on Fedora 19](http://halkyon.net/blog/setting-up-nginx-php-fpm-and-silverstripe-installation-on-fedora-19/)
|
||||
* [How to install SilverStripe CMS on a Linux Virtual Server](http://www.rosehosting.com/blog/how-to-install-silverstripe-cms-on-a-linux-virtual-server/)
|
||||
|
||||
|
||||
_If you find further good *nix related installation articles please email these to community+docs@silverstripe.org._
|
@ -1,7 +1,9 @@
|
||||
# Generic Webserver Installation
|
||||
# Installation
|
||||
|
||||
These instructions show you how to install SilverStripe on any web server.
|
||||
|
||||
The best way to install from the source code is to use [Composer](composer).
|
||||
|
||||
For additional information about installing SilverStripe on specific operation systems, refer to:
|
||||
|
||||
* [Installation on a Windows Server](windows-pi)
|
@ -1,9 +1,5 @@
|
||||
# Installing and Upgrading with Composer
|
||||
|
||||
<div markdown='1' style="float: right; margin-left: 20px">
|
||||
![](../_images/composer.png)
|
||||
</div>
|
||||
|
||||
Composer is a package management tool for PHP that lets you install and upgrade SilverStripe and its modules. Although installing Composer is one extra step, it will give you much more flexibility than just downloading the file from silverstripe.org. This is our recommended way of downloading SilverStripe and managing your code.
|
||||
|
||||
For more information about Composer, visit [its website](http://getcomposer.org/).
|
@ -72,9 +72,10 @@ Example Forum Documentation:
|
||||
| `forum/docs/_manifest_exclude` | Empty file to signify that SilverStripe does not need to load classes from this folder |
|
||||
| `forum/docs/en/` | English documentation |
|
||||
| `forum/docs/en/index.md` | Documentation homepage. Should provide an introduction and links to remaining docs |
|
||||
| `forum/docs/en/installing.md` | |
|
||||
| `forum/docs/en/Getting_Started.md` | Documentation page. Naming convention is Uppercase and underscores. |
|
||||
| `forum/docs/en/_images/` | Folder to store any images or media |
|
||||
| `forum/docs/en/sometopic/` | You can organize documentation into nested folders |
|
||||
| `forum/docs/en/Some_Topic/` | You can organise documentation into nested folders. Naming convention is Uppercase and underscores. |
|
||||
|`forum/docs/en/04_Some_Topic/00_Getting_Started.md`|Structure is created by use of numbered prefixes. This applies to nested folders and documentations pages, index.md should not have a prefix.|
|
||||
|
||||
|
||||
## PHP Include Paths
|
@ -227,7 +227,7 @@ Adding a second level menu is very similar to adding the first level menu. Open
|
||||
<% loop $Menu(2) %>
|
||||
<li class="$LinkingMode">
|
||||
<a href="$Link" title="Go to the $Title.XML page">
|
||||
<span class="arrow">→</span>
|
||||
<span class="arrow">→</span>
|
||||
<span class="text">$MenuTitle.XML</span>
|
||||
</a>
|
||||
</li>
|
||||
@ -250,7 +250,7 @@ like this:
|
||||
<% loop $Menu(2) %>
|
||||
<li class="$LinkingMode">
|
||||
<a href="$Link" title="Go to the $Title.XML page">
|
||||
<span class="arrow">→</span>
|
||||
<span class="arrow">→</span>
|
||||
<span class="text">$MenuTitle.XML</span>
|
||||
</a>
|
||||
</li>
|
||||
@ -302,7 +302,7 @@ The following example runs an if statement and a loop on *Children*, checking to
|
||||
<% loop $Children %>
|
||||
<li class="$LinkingMode">
|
||||
<a href="$Link" title="Go to the $Title.XML page">
|
||||
<span class="arrow">→</span>
|
||||
<span class="arrow">→</span>
|
||||
<span class="text">$MenuTitle.XML</span>
|
||||
</a>
|
||||
</li>
|
2
docs/en/02_Developer_Guides/02_Controllers/02_Routing.md
Normal file
@ -0,0 +1,2 @@
|
||||
#Routing
|
||||
This is a stub to be fleshed out about routing given it is a popular topic and currently hard to find.
|
@ -0,0 +1,52 @@
|
||||
# Howto: Track Member Logins
|
||||
|
||||
Sometimes its good to know how active your users are,
|
||||
and when they last visited the site (and logged on).
|
||||
A simple `LastVisited` property on the `Member` record
|
||||
with some hooks into the login process can achieve this.
|
||||
In addition, a `NumVisit` property will tell us how
|
||||
often the member has visited. Or more specifically,
|
||||
how often he has started a browser session, either through
|
||||
explicitly logging in or by invoking the "remember me" functionality.
|
||||
|
||||
:::php
|
||||
<?php
|
||||
class MyMemberExtension extends DataExtension {
|
||||
private static $db = array(
|
||||
'LastVisited' => 'Datetime',
|
||||
'NumVisit' => 'Int',
|
||||
);
|
||||
|
||||
public function memberLoggedIn() {
|
||||
$this->logVisit();
|
||||
}
|
||||
|
||||
public function memberAutoLoggedIn() {
|
||||
$this->logVisit();
|
||||
}
|
||||
|
||||
public function updateCMSFields(FieldList $fields) {
|
||||
$fields->addFieldsToTab('Root.Main', array(
|
||||
ReadonlyField::create('LastVisited', 'Last visited'),
|
||||
ReadonlyField::create('NumVisits', 'Number of visits')
|
||||
));
|
||||
}
|
||||
|
||||
protected function logVisit() {
|
||||
if(!Security::database_is_ready()) return;
|
||||
|
||||
DB::query(sprintf(
|
||||
'UPDATE "Member" SET "LastVisited" = %s, "NumVisit" = "NumVisit" + 1 WHERE "ID" = %d',
|
||||
DB::getConn()->now(),
|
||||
$this->owner->ID
|
||||
));
|
||||
}
|
||||
}
|
||||
|
||||
Now you just need to apply this extension through your config:
|
||||
|
||||
:::yml
|
||||
Member:
|
||||
extensions:
|
||||
- MyMemberExtension
|
||||
|
8
docs/en/02_Developer_Guides/index.md
Normal file
@ -0,0 +1,8 @@
|
||||
#Developer Guides
|
||||
A collection of more advanced functionality and features contained within the SilverStripe Framework. This covers common use cases, provides code examples and explanations of how you might use parts of the Framework and CMS to suit your projects.
|
||||
|
||||
This is by no means a completely exhaustive list of Classes and Methods but rather more of a descriptive book style format with examples.
|
||||
|
||||
Each key section will also contain a "How To" section into which we accept community contributed code examples and more specific use cases.
|
||||
|
||||
TODO - A table of contents including any missing stub pages.
|
35
docs/en/04_Changelogs/3.0.9.md
Normal file
@ -0,0 +1,35 @@
|
||||
# 3.0.9
|
||||
|
||||
## Overview
|
||||
|
||||
### Default current Versioned "stage" to "Live" rather than "Stage"
|
||||
|
||||
Previously only the controllers responsible for page and CMS display
|
||||
(`LeftAndMain` and `ContentController`) explicitly set a stage through
|
||||
`Versioned::choose_site_stage()`. Unless this method is called,
|
||||
the default stage will be "Stage", showing draft content.
|
||||
Any direct subclasses of `Controller` interacting with "versioned" objects
|
||||
are vulnerable to exposing unpublished content, unless `choose_site_stage()`
|
||||
is called explicitly in their own logic.
|
||||
|
||||
In order to provide more secure default behaviour, we have changed
|
||||
`choose_site_stage()` to be called on all requests, defaulting to the "Live" stage.
|
||||
If your logic relies on querying draft content, use `Versioned::reading_stage('Stage')`.
|
||||
|
||||
Important: The `choose_site_stage()` call only deals with setting the default stage,
|
||||
and doesn't check if the user is authenticated to view it. As with any other controller logic,
|
||||
please use `DataObject->canView()` to determine permissions.
|
||||
|
||||
:::php
|
||||
class MyController extends Controller {
|
||||
private static $allowed_actions = array('showpage');
|
||||
public function showpage($request) {
|
||||
$page = Page::get()->byID($request->param('ID'));
|
||||
if(!$page->canView()) return $this->httpError(401);
|
||||
// continue with authenticated logic...
|
||||
}
|
||||
}
|
||||
|
||||
### API Changes
|
||||
|
||||
* 2013-08-03 [0e7231f](https://github.com/silverstripe/sapphire/commit/0e7231f) Disable discontinued Google Spellcheck in TinyMCE (Ingo Schommer)
|
Before Width: | Height: | Size: 50 KiB After Width: | Height: | Size: 50 KiB |
Before Width: | Height: | Size: 17 KiB After Width: | Height: | Size: 17 KiB |
Before Width: | Height: | Size: 10 KiB After Width: | Height: | Size: 10 KiB |
Before Width: | Height: | Size: 18 KiB After Width: | Height: | Size: 18 KiB |
Before Width: | Height: | Size: 88 KiB After Width: | Height: | Size: 88 KiB |
Before Width: | Height: | Size: 140 KiB After Width: | Height: | Size: 140 KiB |
Before Width: | Height: | Size: 33 KiB After Width: | Height: | Size: 33 KiB |
Before Width: | Height: | Size: 109 KiB After Width: | Height: | Size: 109 KiB |
Before Width: | Height: | Size: 5.8 KiB After Width: | Height: | Size: 5.8 KiB |
Before Width: | Height: | Size: 5.0 KiB After Width: | Height: | Size: 5.0 KiB |
Before Width: | Height: | Size: 4.4 KiB After Width: | Height: | Size: 4.4 KiB |
Before Width: | Height: | Size: 3.5 KiB After Width: | Height: | Size: 3.5 KiB |
Before Width: | Height: | Size: 76 KiB After Width: | Height: | Size: 76 KiB |
Before Width: | Height: | Size: 36 KiB After Width: | Height: | Size: 36 KiB |
Before Width: | Height: | Size: 35 KiB After Width: | Height: | Size: 35 KiB |
Before Width: | Height: | Size: 87 KiB After Width: | Height: | Size: 87 KiB |
Before Width: | Height: | Size: 37 KiB After Width: | Height: | Size: 37 KiB |
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 13 KiB |
Before Width: | Height: | Size: 18 KiB After Width: | Height: | Size: 18 KiB |
Before Width: | Height: | Size: 28 KiB After Width: | Height: | Size: 28 KiB |
Before Width: | Height: | Size: 6.3 KiB After Width: | Height: | Size: 6.3 KiB |
Before Width: | Height: | Size: 32 KiB After Width: | Height: | Size: 32 KiB |
Before Width: | Height: | Size: 65 KiB After Width: | Height: | Size: 65 KiB |
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 15 KiB |
Before Width: | Height: | Size: 170 B After Width: | Height: | Size: 170 B |
Before Width: | Height: | Size: 782 B After Width: | Height: | Size: 782 B |
Before Width: | Height: | Size: 50 KiB After Width: | Height: | Size: 50 KiB |
Before Width: | Height: | Size: 5.4 KiB After Width: | Height: | Size: 5.4 KiB |
Before Width: | Height: | Size: 10 KiB After Width: | Height: | Size: 10 KiB |
Before Width: | Height: | Size: 173 B After Width: | Height: | Size: 173 B |
Before Width: | Height: | Size: 176 B After Width: | Height: | Size: 176 B |
Before Width: | Height: | Size: 170 B After Width: | Height: | Size: 170 B |
Before Width: | Height: | Size: 34 KiB After Width: | Height: | Size: 34 KiB |
Before Width: | Height: | Size: 52 KiB After Width: | Height: | Size: 52 KiB |
Before Width: | Height: | Size: 33 KiB After Width: | Height: | Size: 33 KiB |
Before Width: | Height: | Size: 21 KiB After Width: | Height: | Size: 21 KiB |
Before Width: | Height: | Size: 32 KiB After Width: | Height: | Size: 32 KiB |
Before Width: | Height: | Size: 43 KiB After Width: | Height: | Size: 43 KiB |
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 15 KiB |
Before Width: | Height: | Size: 21 KiB After Width: | Height: | Size: 21 KiB |
Before Width: | Height: | Size: 26 KiB After Width: | Height: | Size: 26 KiB |
Before Width: | Height: | Size: 8.7 KiB After Width: | Height: | Size: 8.7 KiB |
Before Width: | Height: | Size: 17 KiB After Width: | Height: | Size: 17 KiB |
Before Width: | Height: | Size: 4.7 KiB After Width: | Height: | Size: 4.7 KiB |
Before Width: | Height: | Size: 18 KiB After Width: | Height: | Size: 18 KiB |
Before Width: | Height: | Size: 9.8 KiB After Width: | Height: | Size: 9.8 KiB |
Before Width: | Height: | Size: 62 KiB After Width: | Height: | Size: 62 KiB |
Before Width: | Height: | Size: 104 KiB After Width: | Height: | Size: 104 KiB |
Before Width: | Height: | Size: 36 KiB After Width: | Height: | Size: 36 KiB |
Before Width: | Height: | Size: 60 KiB After Width: | Height: | Size: 60 KiB |
Before Width: | Height: | Size: 44 KiB After Width: | Height: | Size: 44 KiB |
Before Width: | Height: | Size: 30 KiB After Width: | Height: | Size: 30 KiB |
Before Width: | Height: | Size: 82 KiB After Width: | Height: | Size: 82 KiB |
Before Width: | Height: | Size: 83 KiB After Width: | Height: | Size: 83 KiB |
Before Width: | Height: | Size: 75 KiB After Width: | Height: | Size: 75 KiB |
Before Width: | Height: | Size: 32 KiB After Width: | Height: | Size: 32 KiB |
Before Width: | Height: | Size: 16 KiB After Width: | Height: | Size: 16 KiB |
Before Width: | Height: | Size: 120 KiB After Width: | Height: | Size: 120 KiB |
Before Width: | Height: | Size: 40 KiB After Width: | Height: | Size: 40 KiB |
Before Width: | Height: | Size: 46 KiB After Width: | Height: | Size: 46 KiB |
Before Width: | Height: | Size: 47 KiB After Width: | Height: | Size: 47 KiB |
Before Width: | Height: | Size: 26 KiB After Width: | Height: | Size: 26 KiB |
Before Width: | Height: | Size: 44 KiB After Width: | Height: | Size: 44 KiB |
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 15 KiB |
Before Width: | Height: | Size: 70 KiB After Width: | Height: | Size: 70 KiB |
Before Width: | Height: | Size: 37 KiB After Width: | Height: | Size: 37 KiB |
Before Width: | Height: | Size: 41 KiB After Width: | Height: | Size: 41 KiB |
Before Width: | Height: | Size: 34 KiB After Width: | Height: | Size: 34 KiB |
Before Width: | Height: | Size: 78 KiB After Width: | Height: | Size: 78 KiB |
Before Width: | Height: | Size: 32 KiB After Width: | Height: | Size: 32 KiB |
Before Width: | Height: | Size: 48 KiB After Width: | Height: | Size: 48 KiB |
Before Width: | Height: | Size: 86 KiB After Width: | Height: | Size: 86 KiB |
Before Width: | Height: | Size: 65 KiB After Width: | Height: | Size: 65 KiB |
Before Width: | Height: | Size: 47 KiB After Width: | Height: | Size: 47 KiB |
Before Width: | Height: | Size: 86 KiB After Width: | Height: | Size: 86 KiB |
Before Width: | Height: | Size: 108 KiB After Width: | Height: | Size: 108 KiB |
Before Width: | Height: | Size: 142 KiB After Width: | Height: | Size: 142 KiB |
Before Width: | Height: | Size: 106 KiB After Width: | Height: | Size: 106 KiB |
Before Width: | Height: | Size: 101 KiB After Width: | Height: | Size: 101 KiB |
Before Width: | Height: | Size: 109 KiB After Width: | Height: | Size: 109 KiB |
Before Width: | Height: | Size: 102 KiB After Width: | Height: | Size: 102 KiB |
Before Width: | Height: | Size: 116 KiB After Width: | Height: | Size: 116 KiB |
Before Width: | Height: | Size: 154 KiB After Width: | Height: | Size: 154 KiB |
Before Width: | Height: | Size: 5.3 KiB After Width: | Height: | Size: 5.3 KiB |
Before Width: | Height: | Size: 4.3 KiB After Width: | Height: | Size: 4.3 KiB |
@ -1,26 +0,0 @@
|
||||
# 3.0.10
|
||||
|
||||
## Upgrading
|
||||
|
||||
* If relying on partial caching of content between logged in users, be aware that the cache is now automatically
|
||||
segmented based on both the current member ID, and the versioned reading mode. If this is not an appropriate
|
||||
method (such as if the same content is served to logged in users within partial caching) then it is necessary
|
||||
to adjust the config value of `SSViewer.global_key` to something more or less sensitive.
|
||||
|
||||
## Security
|
||||
|
||||
* [BUG Fix issue with versioned dataobjects being cached between stages](https://github.com/silverstripe/silverstripe-framework/commit/4415a75d9304a3930b9c28763fc092299640c685) - See [announcement SS-2014-007](http://www.silverstripe.org/ss-2014-007-confidentiality-breach-can-occur-between-draft-and-live-modes/)
|
||||
* [BUG Fix encoding of JS redirection script](https://github.com/silverstripe/silverstripe-framework/commit/f8e3bbe3ae3f29f22d85abb73cea033659511168) - See [announcement SS-2014-006](http://www.silverstripe.org/ss-2014-006-xss-in-returnurl-redirection/)
|
||||
* [Amends solution to SS-2014-006](https://github.com/silverstripe/silverstripe-framework/commit/5b0a96979484fad12e11ce69aef98feda57b321f)
|
||||
* [FIX Prevent SQLi when no URL filters are applied](https://github.com/silverstripe/silverstripe-cms/commit/114df8a3a5e4800ef7586c5d9c8d79798fd2a11d) - See [announcement SS-2014-004](http://www.silverstripe.org/ss-2014-004-sql-injection-in-sitetree-with-custom-urlsegmentfilter-rules/)
|
||||
* [FIX Do now allow arbitary class creation in CMS](https://github.com/silverstripe/silverstripe-cms/commit/bf9b22fd4331a6f78cec12a75262f570b025ec2d) - See [announcement SS-2014-005](http://www.silverstripe.org/ss-2014-005-arbitrary-class-creation-in-cms-backend/)
|
||||
|
||||
## General
|
||||
|
||||
* [Rewrote usages of error suppression operator](https://github.com/silverstripe/silverstripe-framework/commit/6d5d3d8cb7e69e0b37471b1e34077211b0f631fe)
|
||||
|
||||
## Changelog
|
||||
|
||||
* [framework](https://github.com/silverstripe/silverstripe-framework/releases/tag/3.0.10)
|
||||
* [cms](https://github.com/silverstripe/silverstripe-cms/releases/tag/3.0.10)
|
||||
* [installer](https://github.com/silverstripe/silverstripe-installer/releases/tag/3.0.10)
|
@ -1,19 +0,0 @@
|
||||
# 3.0.11
|
||||
|
||||
Minor security release
|
||||
|
||||
## Security
|
||||
|
||||
* 2014-04-16 [9d74bc4](https://github.com/silverstripe/sapphire/commit/9d74bc4) Potential DoS exploit in TinyMCE - See [announcement SS-2014-009](http://www.silverstripe.org/ss-2014-009-potential-dos-exploit-in-tinymce/)
|
||||
* 2014-05-05 [9bfeffd](https://github.com/silverstripe/silverstripe-framework/commit/9bfeffd) Injection / Filesystem vulnerability in generatesecuretoken - See [announcement SS-2014-010](http://www.silverstripe.org/ss-2014-010-injection-filesystem-vulnerability-in-generatesecuretoken/)
|
||||
* 2014-05-07 [0099a18](https://github.com/silverstripe/silverstripe-framework/commit/0099a18) Folder filename injection - See [announcement SS-2014-011](http://www.silverstripe.org/ss-2014-011-folder-filename-injection/)
|
||||
|
||||
### Bugfixes
|
||||
|
||||
* 2013-06-20 [f2c4a62](https://github.com/silverstripe/sapphire/commit/f2c4a62) ConfirmedPasswordField used to expose existing hash (Hamish Friedlander)
|
||||
|
||||
## Changelog
|
||||
|
||||
* [framework](https://github.com/silverstripe/silverstripe-framework/releases/tag/3.0.11)
|
||||
* [cms](https://github.com/silverstripe/silverstripe-cms/releases/tag/3.0.11)
|
||||
* [installer](https://github.com/silverstripe/silverstripe-installer/releases/tag/3.0.11)
|
@ -1,12 +0,0 @@
|
||||
# 3.0.9
|
||||
|
||||
## Overview
|
||||
|
||||
* Security: Require ADMIN for ?flush=1&isDev=1 ([SS-2014-001](http://www.silverstripe.org/ss-2014-001-require-admin-for-flush1-and-isdev1))
|
||||
* Security: XSS in third party library (SWFUpload) ([SS-2014-002](http://www.silverstripe.org/ss-2014-002-xss-in-third-party-library-swfupload/))
|
||||
|
||||
## Changelog
|
||||
|
||||
* [framework](https://github.com/silverstripe/silverstripe-framework/releases/tag/3.0.9)
|
||||
* [cms](https://github.com/silverstripe/silverstripe-framework/releases/tag/3.0.9)
|
||||
* [installer](https://github.com/silverstripe/silverstripe-framework/releases/tag/3.0.9)
|
@ -1,29 +0,0 @@
|
||||
# 3.1.3
|
||||
|
||||
## Overview
|
||||
|
||||
* Security: Require ADMIN for ?flush=1&isDev=1 ([SS-2014-001](http://www.silverstripe.org/ss-2014-001-require-admin-for-flush1-and-isdev1))
|
||||
* Security: XSS in third party library (SWFUpload) ([SS-2014-002](http://www.silverstripe.org/ss-2014-002-xss-in-third-party-library-swfupload/))
|
||||
* Security: SiteTree.ExtraMeta allows JavaScript for malicious CMS authors ([SS-2014-003](http://www.silverstripe.org/ss-2014-003-extrameta-allows-javascript-for-malicious-cms-authors-/))
|
||||
* Better loading performance when using multiple `UploadField` instances
|
||||
* Option for `force_js_to_bottom` on `Requirements` class (ignoring inline `<script>` tags)
|
||||
* Added `ListDecorator->filterByCallback()` for more sophisticated filtering
|
||||
* New `DataList` filters: `LessThanOrEqualFilter` and `GreaterThanOrEqualFilter`
|
||||
* "Cancel" button on "Add Page" form
|
||||
* Better code hinting on magic properties (for IDE autocompletion)
|
||||
* Increased Behat test coverage (editing HTML content, managing page permissions)
|
||||
* Support for PHPUnit 3.8
|
||||
|
||||
## Upgrading
|
||||
|
||||
### SiteTree.ExtraMeta allows JavaScript for malicious CMS authors
|
||||
|
||||
If you have previously used the `SiteTree.ExtraMeta` field for `<head>` markup
|
||||
other than its intended use case (`<meta>` and `<link>`), please consult
|
||||
[SS-2014-003](http://www.silverstripe.org/ss-2014-003-extrameta-allows-javascript-for-malicious-cms-authors-/).
|
||||
|
||||
## Changelog
|
||||
|
||||
* [framework](https://github.com/silverstripe/silverstripe-framework/releases/tag/3.1.3)
|
||||
* [cms](https://github.com/silverstripe/silverstripe-framework/releases/tag/3.1.3)
|
||||
* [installer](https://github.com/silverstripe/silverstripe-framework/releases/tag/3.1.3)
|
@ -1,46 +0,0 @@
|
||||
# 3.1.4
|
||||
|
||||
## Upgrading
|
||||
|
||||
* If relying on partial caching of content between logged in users, be aware that the cache is now automatically
|
||||
segmented based on both the current member ID, and the versioned reading mode. If this is not an appropriate
|
||||
method (such as if the same content is served to logged in users within partial caching) then it is necessary
|
||||
to adjust the config value of `SSViewer.global_key` to something more or less sensitive.
|
||||
|
||||
## Security
|
||||
|
||||
* [BUG Fix issue with versioned dataobjects being cached between stages](https://github.com/silverstripe/silverstripe-framework/commit/4415a75d9304a3930b9c28763fc092299640c685) - See [announcement SS-2014-007](http://www.silverstripe.org/ss-2014-007-confidentiality-breach-can-occur-between-draft-and-live-modes/)
|
||||
* [BUG Fix encoding of JS redirection script](https://github.com/silverstripe/silverstripe-framework/commit/f8e3bbe3ae3f29f22d85abb73cea033659511168) - See [announcement SS-2014-006](http://www.silverstripe.org/ss-2014-006-xss-in-returnurl-redirection/)
|
||||
* [Amends solution to SS-2014-006](https://github.com/silverstripe/silverstripe-framework/commit/5b0a96979484fad12e11ce69aef98feda57b321f)
|
||||
* [FIX Prevent SQLi when no URL filters are applied](https://github.com/silverstripe/silverstripe-cms/commit/114df8a3a5e4800ef7586c5d9c8d79798fd2a11d) - See [announcement SS-2014-004](http://www.silverstripe.org/ss-2014-004-sql-injection-in-sitetree-with-custom-urlsegmentfilter-rules/)
|
||||
* [FIX Do now allow arbitary class creation in CMS](https://github.com/silverstripe/silverstripe-cms/commit/bf9b22fd4331a6f78cec12a75262f570b025ec2d) - See [announcement SS-2014-005](http://www.silverstripe.org/ss-2014-005-arbitrary-class-creation-in-cms-backend/)
|
||||
|
||||
## Bugfixes
|
||||
|
||||
* [Fix Versioned::augmentSQL() when the data query was null.](https://github.com/silverstripe/silverstripe-framework/commit/deb1bfbcbaaa62acb2263ba797b5068e142a6353)
|
||||
* [FIX UploadField validation error and styles](https://github.com/silverstripe/silverstripe-framework/commit/02bceca9b478358bdd569c16818d3be2467beb64)
|
||||
* [FIX Overriding of theme templates in project folder](https://github.com/silverstripe/silverstripe-framework/commit/5f87d344f11c382dbee3fae8edfc00bb9a5a0265)
|
||||
* [BUG Ensure TreeMultiSelectField doesn't populate menus with "unchanged".](https://github.com/silverstripe/silverstripe-framework/commit/9e2c7b657221c336137e07985bd5994682216d65)
|
||||
* [BUG: #2503 Fixes performReadonlyTransformation for OptionSetField](https://github.com/silverstripe/silverstripe-framework/commit/44a8537f68872f0587cdf4cceadd433817dfdf60)
|
||||
* [FIX: Rewrite Member getCMSFields to ensure updateCMSFields is only run once](https://github.com/silverstripe/silverstripe-framework/commit/d91c7d14b84d8b3caed948b0bbab94d254ea2b96)
|
||||
* [FIX: Ensure valid CSS classes for GridField header](https://github.com/silverstripe/silverstripe-framework/commit/90952e7bd4bf7a278959ff320b3a71d30596f5d8)
|
||||
* [BUG Fix case where setFolder('/') would break UploadField::fileexists](https://github.com/silverstripe/silverstripe-framework/commit/c1e0f98f87fa58edf7967d818732c7467cf47d80)
|
||||
* [BUG Prevent unnecessary reconstruction of ClassName field after default records are generated](https://github.com/silverstripe/silverstripe-framework/commit/53b5adbcd98ff4d0e3947f4472b7b7b62a2b064a)
|
||||
* [BUG Fix DataObject::loadLazyFields discarding original query parameters](https://github.com/silverstripe/silverstripe-framework/commit/23f5f08eda4201e0d3d4c28b81805da10b55bdb1)
|
||||
* [Upload: retrieve existing File if an object without an ID is given and replaceFile=true](https://github.com/silverstripe/silverstripe-framework/commit/3c1e82b42c282ab64dfe7f5a68a50f59d8ebcc69)
|
||||
* [BUG Fix Date and SS_DateTime::FormatFromSettings](https://github.com/silverstripe/silverstripe-framework/commit/84d8022b326e3938753430678cfc3dfa50770d83)
|
||||
|
||||
## API
|
||||
|
||||
* [Add support for many_many_extraField in YAML](https://github.com/silverstripe/silverstripe-framework/commit/8b923006227b0177983c96b949edaa6df18fbbf8)
|
||||
* [Allow vetoing forgot password requests](https://github.com/silverstripe/silverstripe-framework/commit/9afcf8f01ac6b5c3c054b9a49f1731d35aa868ed)
|
||||
|
||||
## General
|
||||
|
||||
* [Rewrote usages of error suppression operator](https://github.com/silverstripe/silverstripe-framework/commit/6d5d3d8cb7e69e0b37471b1e34077211b0f631fe)
|
||||
|
||||
## Changelog
|
||||
|
||||
* [framework](https://github.com/silverstripe/silverstripe-framework/releases/tag/3.1.4)
|
||||
* [cms](https://github.com/silverstripe/silverstripe-cms/releases/tag/3.1.4)
|
||||
* [installer](https://github.com/silverstripe/silverstripe-installer/releases/tag/3.1.4)
|
@ -1,67 +0,0 @@
|
||||
# 3.1.5
|
||||
|
||||
## Upgrading
|
||||
|
||||
* If running an application in an environment where user security is critical, it may be necessary to
|
||||
assign the config value `Security.remember_username` to false. This will disable persistence of
|
||||
user login name between sessions, and disable browser auto-completion on the username field.
|
||||
Note that users of certain browsers who have previously autofilled and saved login credentials
|
||||
will need to clear their password autofill history before this setting is properly respected.
|
||||
* Test cases that rely on updating and restoring `[api:Injector]` services may now take advantage
|
||||
of the new `Injector::nest()` and `Injector::unnest()` methods to sandbox their alterations.
|
||||
* If errors could potentially be raised by any `[api:RequestHandler]` class such as a `[api:Form]` or
|
||||
`[api:Controller]`, you may now add the new `[api:ErrorPageControllerExtension]` to this class to
|
||||
transform plain text error messages into `ErrorPage` rendered HTML errors. In the past this
|
||||
behaviour was limited to subclasses of `[api:ContentController]`. By default this extension is now
|
||||
added to the `Security` controller, and if this is not desirable then it should be removed
|
||||
explicitly via the Config system.
|
||||
|
||||
## Security
|
||||
|
||||
* 2014-04-16 [bde16f0](https://github.com/silverstripe/sapphire/commit/bde16f0) Potential DoS exploit in TinyMCE - See [announcement SS-2014-009](http://www.silverstripe.org/ss-2014-009-potential-dos-exploit-in-tinymce/)
|
||||
* 2014-05-05 [d9bc352](https://github.com/silverstripe/silverstripe-framework/commit/d9bc352) Injection / Filesystem vulnerability in generatesecuretoken - See [announcement SS-2014-010](http://www.silverstripe.org/ss-2014-010-injection-filesystem-vulnerability-in-generatesecuretoken/)
|
||||
* 2014-05-02 [8e841cc](https://github.com/silverstripe/sapphire/commit/8e841cc) Folder filename injection - See [announcement SS-2014-011](http://www.silverstripe.org/ss-2014-011-folder-filename-injection/)
|
||||
* 2014-05-05 [df28ccb](https://github.com/silverstripe/sapphire/commit/df28ccb) Upload fileexists vulnerability - See [announcement SS-2014-013](http://www.silverstripe.org/ss-2014-013-upload-fileexists-vulnerability/)
|
||||
|
||||
### API Changes
|
||||
|
||||
* 2014-05-02 [f9cb880](https://github.com/silverstripe/silverstripe-cms/commit/f9cb880) Error page support for Security controller errors (Damian Mooyman)
|
||||
* 2014-05-01 [3162d0e](https://github.com/silverstripe/silverstripe-cms/commit/3162d0e) Update ErrorPage to respect new HTTP Error codes (Damian Mooyman)
|
||||
* 2014-04-28 [0285322](https://github.com/silverstripe/silverstripe-cms/commit/0285322) Ability to configure paging for assets / pages (Damian Mooyman)
|
||||
* 2014-04-22 [d06d5c1](https://github.com/silverstripe/sapphire/commit/d06d5c1) Injector supports nesting BUG Resolve issue with DirectorTest breaking RequestProcessor Injector::nest and Injector::unnest are introduced to better support sandboxing of testings. Injector and Config ::nest and ::unnest support chaining Test cases for both Injector::nest and Config::nest (Damian Mooyman)
|
||||
* 2014-04-17 [a6017a0](https://github.com/silverstripe/sapphire/commit/a6017a0) HTTP 429 Allowed for use with rate limiting methods (Damian Mooyman)
|
||||
* 2014-04-11 [892b440](https://github.com/silverstripe/sapphire/commit/892b440) Make default gridfield paging configurable Documentation improved (Damian Mooyman)
|
||||
* 2014-04-09 [997077a](https://github.com/silverstripe/sapphire/commit/997077a) Security.remember_username to disable login form autocompletion (Damian Mooyman)
|
||||
|
||||
### Features and Enhancements
|
||||
|
||||
* 2014-03-28 [a502c9d](https://github.com/silverstripe/silverstripe-cms/commit/a502c9d) Fixes #966. Ability to filter pages on page status. - New filters for statuses normally found through SiteTree::getStatusFlags(). - Refactored menu sorting. Now alphabetical, as it wasn't previously. (Russell Michell)
|
||||
* 2014-04-11 [3765030](https://github.com/silverstripe/silverstripe-cms/commit/3765030) Filter by date created for files Added test cases Do not merge before https://github.com/silverstripe-labs/silverstripe-behat-extension/pull/32 (Damian Mooyman)
|
||||
|
||||
### Bugfixes
|
||||
|
||||
* 2014-05-05 [c5d5d10](https://github.com/silverstripe/silverstripe-cms/commit/c5d5d10) Behat now uses explicit radio button behaviour (Damian Mooyman)
|
||||
* 2014-05-01 [bd5abb6](https://github.com/silverstripe/sapphire/commit/bd5abb6) parent::init is not called first (Michael Parkhill)
|
||||
* 2014-05-01 [4fd3015](https://github.com/silverstripe/sapphire/commit/4fd3015) corrected link to CMS Alternating Button Page (James Pluck)
|
||||
* 2014-04-29 [8673b11](https://github.com/silverstripe/sapphire/commit/8673b11) Fix ImageTest Image test would erroneously reset the Image::$backend to null if the test was skipped, breaking subsequent test cases (Damian Mooyman)
|
||||
* 2014-04-29 [89fbae2](https://github.com/silverstripe/silverstripe-cms/commit/89fbae2) Fix encoding of SiteTree.MetaTags (Damian Mooyman)
|
||||
* 2014-04-25 [ff5f607](https://github.com/silverstripe/sapphire/commit/ff5f607) Docs for DataList::filter() (Daniel Hensby)
|
||||
* 2014-04-24 [5e9ae57](https://github.com/silverstripe/sapphire/commit/5e9ae57) Fix edge case IE8 / dev / ssl / download file crash Prevents issue at http://support.microsoft.com/kb/323308 appearing on dev (Damian Mooyman)
|
||||
* 2014-04-17 [bec8927](https://github.com/silverstripe/sapphire/commit/bec8927) Allow PHPUnit installation with composer / Fix travis (Will Morgan)
|
||||
* 2014-04-16 [396fd9a](https://github.com/silverstripe/silverstripe-cms/commit/396fd9a) Broken file link tracking (fixes #996) (Loz Calver)
|
||||
* 2014-04-14 [0b4f62d](https://github.com/silverstripe/sapphire/commit/0b4f62d) Fix jstree when duplicating subtrees (Damian Mooyman)
|
||||
* 2014-04-11 [a261f22](https://github.com/silverstripe/sapphire/commit/a261f22) Delete Character \x01 (Stevie Mayhew)
|
||||
* 2014-04-09 [91034d1](https://github.com/silverstripe/sapphire/commit/91034d1) HTMLText whitelist considers text nodes Minor improvement to #2853. If a list of whitelisted elements are specified, text nodes no longer evade the whitelist (Damian Mooyman)
|
||||
* 2014-04-09 [a3c8a59](https://github.com/silverstripe/sapphire/commit/a3c8a59) Fix data query not always joining necessary tables Fixes #2846 (Damian Mooyman)
|
||||
* 2014-04-08 [a060784](https://github.com/silverstripe/sapphire/commit/a060784) - missing link url for composer (camfindlay)
|
||||
* 2014-04-07 [3204ab5](https://github.com/silverstripe/silverstripe-cms/commit/3204ab5) Fix orphaned pages reporting they can be viewed (Damian Mooyman)
|
||||
* 2014-04-01 [84d8022](https://github.com/silverstripe/sapphire/commit/84d8022) Fix Date and SS_DateTime::FormatFromSettings This issue is caused by the odd default behaviour of Zend_Date, which attempts to parse yyyy-mm-dd format date and times as though they were yyyy-dd-mm. (Damian Mooyman)
|
||||
* 2014-03-12 [b4a1aa4](https://github.com/silverstripe/silverstripe-cms/commit/b4a1aa4) Fixes #965. Allow user date-settings to show on GridField Page admin (Russell Michell)
|
||||
* 2014-03-04 [ae573f8](https://github.com/silverstripe/sapphire/commit/ae573f8) Fix Versioned stage not persisting in Session. Fixes #962 BUG Disabled disruptive test case in DirectorTest API RequestProcessor and VersionedRequestFilter now both correctly implement RequestFilter Better PHPDoc on RequestFilter and implementations (Damian Mooyman)
|
||||
* 2013-06-20 [f2c4a62](https://github.com/silverstripe/sapphire/commit/f2c4a62) ConfirmedPasswordField used to expose existing hash (Hamish Friedlander)
|
||||
|
||||
## Changelog
|
||||
|
||||
* [framework](https://github.com/silverstripe/silverstripe-framework/releases/tag/3.1.5)
|
||||
* [cms](https://github.com/silverstripe/silverstripe-cms/releases/tag/3.1.5)
|
||||
* [installer](https://github.com/silverstripe/silverstripe-installer/releases/tag/3.1.5)
|
@ -1,25 +0,0 @@
|
||||
# 3.0.10-rc1
|
||||
|
||||
## Upgrading
|
||||
|
||||
* If relying on partial caching of content between logged in users, be aware that the cache is now automatically
|
||||
segmented based on both the current member ID, and the versioned reading mode. If this is not an appropriate
|
||||
method (such as if the same content is served to logged in users within partial caching) then it is necessary
|
||||
to adjust the config value of `SSViewer.global_key` to something more or less sensitive.
|
||||
|
||||
## Security
|
||||
|
||||
* [BUG Fix issue with versioned dataobjects being cached between stages](https://github.com/silverstripe/silverstripe-framework/commit/4415a75d9304a3930b9c28763fc092299640c685) - See [announcement SS-2014-007](http://www.silverstripe.org/ss-2014-007-confidentiality-breach-can-occur-between-draft-and-live-modes/)
|
||||
* [BUG Fix encoding of JS redirection script](https://github.com/silverstripe/silverstripe-framework/commit/f8e3bbe3ae3f29f22d85abb73cea033659511168) - See [announcement SS-2014-006](http://www.silverstripe.org/ss-2014-006-xss-in-returnurl-redirection/)
|
||||
* [FIX Prevent SQLi when no URL filters are applied](https://github.com/silverstripe/silverstripe-cms/commit/114df8a3a5e4800ef7586c5d9c8d79798fd2a11d) - See [announcement SS-2014-004](http://www.silverstripe.org/ss-2014-004-sql-injection-in-sitetree-with-custom-urlsegmentfilter-rules/)
|
||||
* [FIX Do now allow arbitary class creation in CMS](https://github.com/silverstripe/silverstripe-cms/commit/bf9b22fd4331a6f78cec12a75262f570b025ec2d) - See [announcement SS-2014-005](http://www.silverstripe.org/ss-2014-005-arbitrary-class-creation-in-cms-backend/)
|
||||
|
||||
## General
|
||||
|
||||
* [Rewrote usages of error suppression operator](https://github.com/silverstripe/silverstripe-framework/commit/6d5d3d8cb7e69e0b37471b1e34077211b0f631fe)
|
||||
|
||||
## Changelog
|
||||
|
||||
* [framework](https://github.com/silverstripe/silverstripe-framework/releases/tag/3.0.10-rc1)
|
||||
* [cms](https://github.com/silverstripe/silverstripe-cms/releases/tag/3.0.10-rc1)
|
||||
* [installer](https://github.com/silverstripe/silverstripe-installer/releases/tag/3.0.10-rc1)
|
@ -1,19 +0,0 @@
|
||||
# 3.0.11-rc1
|
||||
|
||||
Minor security release
|
||||
|
||||
## Security
|
||||
|
||||
* 2014-04-16 [9d74bc4](https://github.com/silverstripe/sapphire/commit/9d74bc4) Potential DoS exploit in TinyMCE - See [announcement SS-2014-009](http://www.silverstripe.org/ss-2014-009-potential-dos-exploit-in-tinymce/)
|
||||
* 2014-05-05 [9bfeffd](https://github.com/silverstripe/silverstripe-framework/commit/9bfeffd) Injection / Filesystem vulnerability in generatesecuretoken - See [announcement SS-2014-010](http://www.silverstripe.org/ss-2014-010-injection-filesystem-vulnerability-in-generatesecuretoken/)
|
||||
* 2014-05-07 [0099a18](https://github.com/silverstripe/silverstripe-framework/commit/0099a18) Folder filename injection - See [announcement SS-2014-011](http://www.silverstripe.org/ss-2014-011-folder-filename-injection/)
|
||||
|
||||
### Bugfixes
|
||||
|
||||
* 2013-06-20 [f2c4a62](https://github.com/silverstripe/sapphire/commit/f2c4a62) ConfirmedPasswordField used to expose existing hash (Hamish Friedlander)
|
||||
|
||||
## Changelog
|
||||
|
||||
* [framework](https://github.com/silverstripe/silverstripe-framework/releases/tag/3.0.11-rc1)
|
||||
* [cms](https://github.com/silverstripe/silverstripe-cms/releases/tag/3.0.11-rc1)
|
||||
* [installer](https://github.com/silverstripe/silverstripe-installer/releases/tag/3.0.11-rc1)
|
@ -1,12 +0,0 @@
|
||||
# 3.0.9-rc1 (2014-02-19)
|
||||
|
||||
## Overview
|
||||
|
||||
* Security: Require ADMIN for ?flush=1&isDev=1 ([SS-2014-001](http://www.silverstripe.org/ss-2014-001-require-admin-for-flush1-and-isdev1))
|
||||
* Security: XSS in third party library (SWFUpload) ([SS-2014-002](http://www.silverstripe.org/ss-2014-002-xss-in-third-party-library-swfupload/))
|
||||
|
||||
## Changelog
|
||||
|
||||
* [framework](https://github.com/silverstripe/silverstripe-framework/releases/tag/3.0.9-rc1)
|
||||
* [cms](https://github.com/silverstripe/silverstripe-framework/releases/tag/3.0.9-rc1)
|
||||
* [installer](https://github.com/silverstripe/silverstripe-framework/releases/tag/3.0.9-rc1)
|
@ -1,29 +0,0 @@
|
||||
# 3.1.3-rc1
|
||||
|
||||
## Overview
|
||||
|
||||
* Security: Require ADMIN for ?flush=1&isDev=1 ([SS-2014-001](http://www.silverstripe.org/ss-2014-001-require-admin-for-flush1-and-isdev1))
|
||||
* Security: XSS in third party library (SWFUpload) ([SS-2014-002](http://www.silverstripe.org/ss-2014-002-xss-in-third-party-library-swfupload/))
|
||||
* Security: SiteTree.ExtraMeta allows JavaScript for malicious CMS authors ([SS-2014-003](http://www.silverstripe.org/ss-2014-003-extrameta-allows-javascript-for-malicious-cms-authors-/))
|
||||
* Better loading performance when using multiple `UploadField` instances
|
||||
* Option for `force_js_to_bottom` on `Requirements` class (ignoring inline `<script>` tags)
|
||||
* Added `ListDecorator->filterByCallback()` for more sophisticated filtering
|
||||
* New `DataList` filters: `LessThanOrEqualFilter` and `GreaterThanOrEqualFilter`
|
||||
* "Cancel" button on "Add Page" form
|
||||
* Better code hinting on magic properties (for IDE autocompletion)
|
||||
* Increased Behat test coverage (editing HTML content, managing page permissions)
|
||||
* Support for PHPUnit 3.8
|
||||
|
||||
## Upgrading
|
||||
|
||||
### SiteTree.ExtraMeta allows JavaScript for malicious CMS authors
|
||||
|
||||
If you have previously used the `SiteTree.ExtraMeta` field for `<head>` markup
|
||||
other than its intended use case (`<meta>` and `<link>`), please consult
|
||||
[SS-2014-003](http://www.silverstripe.org/ss-2014-003-extrameta-allows-javascript-for-malicious-cms-authors-/).
|
||||
|
||||
## Changelog
|
||||
|
||||
* [framework](https://github.com/silverstripe/silverstripe-framework/releases/tag/3.1.3-rc1)
|
||||
* [cms](https://github.com/silverstripe/silverstripe-framework/releases/tag/3.1.3-rc1)
|
||||
* [installer](https://github.com/silverstripe/silverstripe-framework/releases/tag/3.1.3-rc1)
|
@ -1,12 +0,0 @@
|
||||
# 3.1.3-rc2
|
||||
|
||||
# Overview
|
||||
|
||||
* Fixed regression around CMS loading in IE8
|
||||
* Fixed regression in folder creation on upload
|
||||
|
||||
|
||||
### Bugfixes
|
||||
|
||||
* 2014-02-20 [ebeb663](https://github.com/silverstripe/sapphire/commit/ebeb663) Fixed critical issue with Folder::find_or_make failing to handle invalid filename characters BUG Fix UploadField duplicate checking with invalid folderName (Damian Mooyman)
|
||||
* 2014-02-19 [a681bd7](https://github.com/silverstripe/sapphire/commit/a681bd7) IE8 support in jquery.ondemand.js (fixes #2872) (Loz Calver)
|
@ -1,44 +0,0 @@
|
||||
# 3.1.4-rc1
|
||||
|
||||
## Upgrading
|
||||
|
||||
* If relying on partial caching of content between logged in users, be aware that the cache is now automatically
|
||||
segmented based on both the current member ID, and the versioned reading mode. If this is not an appropriate
|
||||
method (such as if the same content is served to logged in users within partial caching) then it is necessary
|
||||
to adjust the config value of `SSViewer.global_key` to something more or less sensitive.
|
||||
|
||||
## Security
|
||||
|
||||
* [BUG Fix issue with versioned dataobjects being cached between stages](https://github.com/silverstripe/silverstripe-framework/commit/4415a75d9304a3930b9c28763fc092299640c685) - See [announcement SS-2014-007](http://www.silverstripe.org/ss-2014-007-confidentiality-breach-can-occur-between-draft-and-live-modes/)
|
||||
* [BUG Fix encoding of JS redirection script](https://github.com/silverstripe/silverstripe-framework/commit/f8e3bbe3ae3f29f22d85abb73cea033659511168) - See [announcement SS-2014-006](http://www.silverstripe.org/ss-2014-006-xss-in-returnurl-redirection/)
|
||||
* [FIX Prevent SQLi when no URL filters are applied](https://github.com/silverstripe/silverstripe-cms/commit/114df8a3a5e4800ef7586c5d9c8d79798fd2a11d) - See [announcement SS-2014-004](http://www.silverstripe.org/ss-2014-004-sql-injection-in-sitetree-with-custom-urlsegmentfilter-rules/)
|
||||
* [FIX Do now allow arbitary class creation in CMS](https://github.com/silverstripe/silverstripe-cms/commit/bf9b22fd4331a6f78cec12a75262f570b025ec2d) - See [announcement SS-2014-005](http://www.silverstripe.org/ss-2014-005-arbitrary-class-creation-in-cms-backend/)
|
||||
|
||||
## Bugfixes
|
||||
|
||||
* [Fix Versioned::augmentSQL() when the data query was null.](https://github.com/silverstripe/silverstripe-framework/commit/deb1bfbcbaaa62acb2263ba797b5068e142a6353)
|
||||
* [FIX UploadField validation error and styles](https://github.com/silverstripe/silverstripe-framework/commit/02bceca9b478358bdd569c16818d3be2467beb64)
|
||||
* [FIX Overriding of theme templates in project folder](https://github.com/silverstripe/silverstripe-framework/commit/5f87d344f11c382dbee3fae8edfc00bb9a5a0265)
|
||||
* [BUG Ensure TreeMultiSelectField doesn't populate menus with "unchanged".](https://github.com/silverstripe/silverstripe-framework/commit/9e2c7b657221c336137e07985bd5994682216d65)
|
||||
* [BUG: #2503 Fixes performReadonlyTransformation for OptionSetField](https://github.com/silverstripe/silverstripe-framework/commit/44a8537f68872f0587cdf4cceadd433817dfdf60)
|
||||
* [FIX: Rewrite Member getCMSFields to ensure updateCMSFields is only run once](https://github.com/silverstripe/silverstripe-framework/commit/d91c7d14b84d8b3caed948b0bbab94d254ea2b96)
|
||||
* [FIX: Ensure valid CSS classes for GridField header](https://github.com/silverstripe/silverstripe-framework/commit/90952e7bd4bf7a278959ff320b3a71d30596f5d8)
|
||||
* [BUG Fix case where setFolder('/') would break UploadField::fileexists](https://github.com/silverstripe/silverstripe-framework/commit/c1e0f98f87fa58edf7967d818732c7467cf47d80)
|
||||
* [BUG Prevent unnecessary reconstruction of ClassName field after default records are generated](https://github.com/silverstripe/silverstripe-framework/commit/53b5adbcd98ff4d0e3947f4472b7b7b62a2b064a)
|
||||
* [BUG Fix DataObject::loadLazyFields discarding original query parameters](https://github.com/silverstripe/silverstripe-framework/commit/23f5f08eda4201e0d3d4c28b81805da10b55bdb1)
|
||||
* [Upload: retrieve existing File if an object without an ID is given and replaceFile=true](https://github.com/silverstripe/silverstripe-framework/commit/3c1e82b42c282ab64dfe7f5a68a50f59d8ebcc69)
|
||||
|
||||
## API
|
||||
|
||||
* [Add support for many_many_extraField in YAML](https://github.com/silverstripe/silverstripe-framework/commit/8b923006227b0177983c96b949edaa6df18fbbf8)
|
||||
* [Allow vetoing forgot password requests](https://github.com/silverstripe/silverstripe-framework/commit/9afcf8f01ac6b5c3c054b9a49f1731d35aa868ed)
|
||||
|
||||
## General
|
||||
|
||||
* [Rewrote usages of error suppression operator](https://github.com/silverstripe/silverstripe-framework/commit/6d5d3d8cb7e69e0b37471b1e34077211b0f631fe)
|
||||
|
||||
## Changelog
|
||||
|
||||
* [framework](https://github.com/silverstripe/silverstripe-framework/releases/tag/3.1.4-rc1)
|
||||
* [cms](https://github.com/silverstripe/silverstripe-cms/releases/tag/3.1.4-rc1)
|
||||
* [installer](https://github.com/silverstripe/silverstripe-installer/releases/tag/3.1.4-rc1)
|
@ -1,67 +0,0 @@
|
||||
# 3.1.5-rc1
|
||||
|
||||
## Upgrading
|
||||
|
||||
* If running an application in an environment where user security is critical, it may be necessary to
|
||||
assign the config value `Security.remember_username` to false. This will disable persistence of
|
||||
user login name between sessions, and disable browser auto-completion on the username field.
|
||||
Note that users of certain browsers who have previously autofilled and saved login credentials
|
||||
will need to clear their password autofill history before this setting is properly respected.
|
||||
* Test cases that rely on updating and restoring `[api:Injector]` services may now take advantage
|
||||
of the new `Injector::nest()` and `Injector::unnest()` methods to sandbox their alterations.
|
||||
* If errors could potentially be raised by any `[api:RequestHandler]` class such as a `[api:Form]` or
|
||||
`[api:Controller]`, you may now add the new `[api:ErrorPageControllerExtension]` to this class to
|
||||
transform plain text error messages into `ErrorPage` rendered HTML errors. In the past this
|
||||
behaviour was limited to subclasses of `[api:ContentController]`. By default this extension is now
|
||||
added to the `Security` controller, and if this is not desirable then it should be removed
|
||||
explicitly via the Config system.
|
||||
|
||||
## Security
|
||||
|
||||
* 2014-04-16 [bde16f0](https://github.com/silverstripe/sapphire/commit/bde16f0) Potential DoS exploit in TinyMCE - See [announcement SS-2014-009](http://www.silverstripe.org/ss-2014-009-potential-dos-exploit-in-tinymce/)
|
||||
* 2014-05-05 [d9bc352](https://github.com/silverstripe/silverstripe-framework/commit/d9bc352) Injection / Filesystem vulnerability in generatesecuretoken - See [announcement SS-2014-010](http://www.silverstripe.org/ss-2014-010-injection-filesystem-vulnerability-in-generatesecuretoken/)
|
||||
* 2014-05-02 [8e841cc](https://github.com/silverstripe/sapphire/commit/8e841cc) Folder filename injection - See [announcement SS-2014-011](http://www.silverstripe.org/ss-2014-011-folder-filename-injection/)
|
||||
* 2014-05-05 [df28ccb](https://github.com/silverstripe/sapphire/commit/df28ccb) Upload fileexists vulnerability - See [announcement SS-2014-013](http://www.silverstripe.org/ss-2014-013-upload-fileexists-vulnerability/)
|
||||
|
||||
### API Changes
|
||||
|
||||
* 2014-05-02 [f9cb880](https://github.com/silverstripe/silverstripe-cms/commit/f9cb880) Error page support for Security controller errors (Damian Mooyman)
|
||||
* 2014-05-01 [3162d0e](https://github.com/silverstripe/silverstripe-cms/commit/3162d0e) Update ErrorPage to respect new HTTP Error codes (Damian Mooyman)
|
||||
* 2014-04-28 [0285322](https://github.com/silverstripe/silverstripe-cms/commit/0285322) Ability to configure paging for assets / pages (Damian Mooyman)
|
||||
* 2014-04-22 [d06d5c1](https://github.com/silverstripe/sapphire/commit/d06d5c1) Injector supports nesting BUG Resolve issue with DirectorTest breaking RequestProcessor Injector::nest and Injector::unnest are introduced to better support sandboxing of testings. Injector and Config ::nest and ::unnest support chaining Test cases for both Injector::nest and Config::nest (Damian Mooyman)
|
||||
* 2014-04-17 [a6017a0](https://github.com/silverstripe/sapphire/commit/a6017a0) HTTP 429 Allowed for use with rate limiting methods (Damian Mooyman)
|
||||
* 2014-04-11 [892b440](https://github.com/silverstripe/sapphire/commit/892b440) Make default gridfield paging configurable Documentation improved (Damian Mooyman)
|
||||
* 2014-04-09 [997077a](https://github.com/silverstripe/sapphire/commit/997077a) Security.remember_username to disable login form autocompletion (Damian Mooyman)
|
||||
|
||||
### Features and Enhancements
|
||||
|
||||
* 2014-03-28 [a502c9d](https://github.com/silverstripe/silverstripe-cms/commit/a502c9d) Fixes #966. Ability to filter pages on page status. - New filters for statuses normally found through SiteTree::getStatusFlags(). - Refactored menu sorting. Now alphabetical, as it wasn't previously. (Russell Michell)
|
||||
* 2014-04-11 [3765030](https://github.com/silverstripe/silverstripe-cms/commit/3765030) Filter by date created for files Added test cases Do not merge before https://github.com/silverstripe-labs/silverstripe-behat-extension/pull/32 (Damian Mooyman)
|
||||
|
||||
### Bugfixes
|
||||
|
||||
* 2014-05-05 [c5d5d10](https://github.com/silverstripe/silverstripe-cms/commit/c5d5d10) Behat now uses explicit radio button behaviour (Damian Mooyman)
|
||||
* 2014-05-01 [bd5abb6](https://github.com/silverstripe/sapphire/commit/bd5abb6) parent::init is not called first (Michael Parkhill)
|
||||
* 2014-05-01 [4fd3015](https://github.com/silverstripe/sapphire/commit/4fd3015) corrected link to CMS Alternating Button Page (James Pluck)
|
||||
* 2014-04-29 [8673b11](https://github.com/silverstripe/sapphire/commit/8673b11) Fix ImageTest Image test would erroneously reset the Image::$backend to null if the test was skipped, breaking subsequent test cases (Damian Mooyman)
|
||||
* 2014-04-29 [89fbae2](https://github.com/silverstripe/silverstripe-cms/commit/89fbae2) Fix encoding of SiteTree.MetaTags (Damian Mooyman)
|
||||
* 2014-04-25 [ff5f607](https://github.com/silverstripe/sapphire/commit/ff5f607) Docs for DataList::filter() (Daniel Hensby)
|
||||
* 2014-04-24 [5e9ae57](https://github.com/silverstripe/sapphire/commit/5e9ae57) Fix edge case IE8 / dev / ssl / download file crash Prevents issue at http://support.microsoft.com/kb/323308 appearing on dev (Damian Mooyman)
|
||||
* 2014-04-17 [bec8927](https://github.com/silverstripe/sapphire/commit/bec8927) Allow PHPUnit installation with composer / Fix travis (Will Morgan)
|
||||
* 2014-04-16 [396fd9a](https://github.com/silverstripe/silverstripe-cms/commit/396fd9a) Broken file link tracking (fixes #996) (Loz Calver)
|
||||
* 2014-04-14 [0b4f62d](https://github.com/silverstripe/sapphire/commit/0b4f62d) Fix jstree when duplicating subtrees (Damian Mooyman)
|
||||
* 2014-04-11 [a261f22](https://github.com/silverstripe/sapphire/commit/a261f22) Delete Character \x01 (Stevie Mayhew)
|
||||
* 2014-04-09 [91034d1](https://github.com/silverstripe/sapphire/commit/91034d1) HTMLText whitelist considers text nodes Minor improvement to #2853. If a list of whitelisted elements are specified, text nodes no longer evade the whitelist (Damian Mooyman)
|
||||
* 2014-04-09 [a3c8a59](https://github.com/silverstripe/sapphire/commit/a3c8a59) Fix data query not always joining necessary tables Fixes #2846 (Damian Mooyman)
|
||||
* 2014-04-08 [a060784](https://github.com/silverstripe/sapphire/commit/a060784) - missing link url for composer (camfindlay)
|
||||
* 2014-04-07 [3204ab5](https://github.com/silverstripe/silverstripe-cms/commit/3204ab5) Fix orphaned pages reporting they can be viewed (Damian Mooyman)
|
||||
* 2014-04-01 [84d8022](https://github.com/silverstripe/sapphire/commit/84d8022) Fix Date and SS_DateTime::FormatFromSettings This issue is caused by the odd default behaviour of Zend_Date, which attempts to parse yyyy-mm-dd format date and times as though they were yyyy-dd-mm. (Damian Mooyman)
|
||||
* 2014-03-12 [b4a1aa4](https://github.com/silverstripe/silverstripe-cms/commit/b4a1aa4) Fixes #965. Allow user date-settings to show on GridField Page admin (Russell Michell)
|
||||
* 2014-03-04 [ae573f8](https://github.com/silverstripe/sapphire/commit/ae573f8) Fix Versioned stage not persisting in Session. Fixes #962 BUG Disabled disruptive test case in DirectorTest API RequestProcessor and VersionedRequestFilter now both correctly implement RequestFilter Better PHPDoc on RequestFilter and implementations (Damian Mooyman)
|
||||
* 2013-06-20 [f2c4a62](https://github.com/silverstripe/sapphire/commit/f2c4a62) ConfirmedPasswordField used to expose existing hash (Hamish Friedlander)
|
||||
|
||||
## Changelog
|
||||
|
||||
* [framework](https://github.com/silverstripe/silverstripe-framework/releases/tag/3.1.5-rc1)
|
||||
* [cms](https://github.com/silverstripe/silverstripe-cms/releases/tag/3.1.5-rc1)
|
||||
* [installer](https://github.com/silverstripe/silverstripe-installer/releases/tag/3.1.5-rc1)
|
@ -1,22 +0,0 @@
|
||||
# How To Guides
|
||||
|
||||
In this section you will find a collection of guides to answer your "How do I?" questions. These are designed to be informal and focused
|
||||
on tasks and goals rather than going into deep details.
|
||||
|
||||
You will find it useful to read the introduction [tutorials](/tutorials) before tackling these How-Tos so you can understand some of
|
||||
the language and functions which are used in the guides.
|
||||
|
||||
* [Howto: Customize the Pages List in the CMS](customize-cms-pages-list)
|
||||
* [Import CSV Data](csv-import). Build a simple CSV importer using either [api:ModelAdmin] or a custom controller
|
||||
* [Dynamic Default Fields](dynamic-default-fields). Pre populate a [api:DataObject] with data.
|
||||
* [Grouping Lists](grouping-dataobjectsets). Group results in a [api:SS_List] to create sub sections.
|
||||
* [PHPUnit Configuration](phpunit-configuration). How to setup your testing environment with PHPUnit
|
||||
* [Extend the CMS Interface](extend-cms-interface).
|
||||
* [How to customize CMS Tree](customize-cms-tree).
|
||||
* [How to Show Help Text on CMS Form Fields](cms-formfield-help-text).
|
||||
* [Cache control](cache-control). Override the default PHP cache-control settings.
|
||||
* [Howto customize the CMS menu](customize-cms-menu).
|
||||
* [How to create a navigation menu](navigation-menu). Create primary navigation for your website.
|
||||
* [Paginating A List](pagination). Add pagination for an SS_List object.
|
||||
* [How to make a simple contact form](simple-contact-form).
|
||||
* [How to add a custom action to a GridField row](gridfield-rowaction)
|
@ -1,6 +0,0 @@
|
||||
# Installation from Source Control
|
||||
|
||||
The best way to install from source is to use [Composer](composer).
|
||||
|
||||
The original instructions on this page have been removed, as they were obsolete and misleading. Please use Composer
|
||||
instead.
|
@ -1,31 +0,0 @@
|
||||
# Manual installation on Windows using IIS
|
||||
|
||||
Install SilverStripe manually on Windows using IIS as the web server.
|
||||
|
||||
If you are not confident in installing web server software manually on Windows, it is recommended you use the
|
||||
[Web Platform Installer](windows-pi) method instead, which will do the installation for you.
|
||||
|
||||
## [Install using IIS 7.x](windows-manual-iis-7)
|
||||
|
||||
This applies to Windows Server 2008, Windows Server 2008 R2, Windows Vista, and Windows 7.
|
||||
|
||||
## [Install using IIS 6.x](windows-manual-iis-6)
|
||||
|
||||
This applies to Windows Server 2003 and Windows Server 2003 R2.
|
||||
|
||||
<div class="warning" markdown="1">Note: These instructions may not work, as they're no longer maintained.</div>
|
||||
|
||||
## Additional notes
|
||||
|
||||
Microsoft has no URL rewriting module for any version below IIS 7.x. This will mean your URLs are like yoursite.com/index.php/about-us rather than yoursite.com/about-us.
|
||||
However, if you do want friendly URLs you must you must buy or use other URL rewriting software:
|
||||
|
||||
* [IIRF](http://iirf.codeplex.com/) (should work for most cases - see [IIS 6 guide](windows-manual-iis-6) for rewrite rules)
|
||||
* [ISAPI_Rewrite](http://www.helicontech.com/download-isapi_rewrite3.htm) (The freeware, lite version should be fine for simple installations)
|
||||
* If you have 64-bit Windows, you can try [this](http://www.micronovae.com/ModRewrite/ModRewrite.html)
|
||||
|
||||
Instructions are available for [installing PHP on IIS 6](http://learn.iis.net/page.aspx/248/configuring-fastcgi-extension-for-iis60/) by the IIS team.
|
||||
|
||||
On Windows XP, you need to disable **Check that file exists**. See [installation-on-windows-pi](windows-pi) for more information.
|
||||
|
||||
Matthew Poole has expanded on these instructions [with a tutorial](http://cubiksoundz.blogspot.com/2008/12/tech-note-installing-silverstripe-cms.html).
|
@ -1,9 +0,0 @@
|
||||
# Misc
|
||||
|
||||
This section is dedicated to going to detail about an assortment of topics which
|
||||
don't necessary fit into other documentation sections.
|
||||
|
||||
* [Coding conventions](coding-conventions): Guidelines and standards for code formatting and documentation
|
||||
* [Contributing](contributing): How you can be a part of the SilverStripe Open Source community
|
||||
* [Release process](release-process): Describes the Framework and CMS release process
|
||||
* [SS markdown](ss-markdown): Markdown syntax for our technical documentation
|
@ -1,115 +0,0 @@
|
||||
# SilverStripe Markdown Syntax
|
||||
|
||||
As Markdown by default is quite limited and not well suited for technical documentation,
|
||||
the SilverStripe project relies on certain syntax additions. As a base syntax, we use
|
||||
the [Markdown Extra](http://michelf.com/projects/php-markdown/extra/) format, which provides us
|
||||
with support for tables, definition lists, code blocks and inline HTML.
|
||||
|
||||
**Please read the [Markdown](http://daringfireball.net/projects/markdown/syntax) and
|
||||
[Markdown Extra](http://michelf.com/projects/php-markdown/extra/) documentation for a syntax overview**
|
||||
|
||||
On top of that, we have added syntax that is only resolved by our custom parser.
|
||||
The goal is to keep the customization to a necessary minimum,
|
||||
and HTML output should still be readable with our custom markup unparsed.
|
||||
|
||||
## Rendering
|
||||
|
||||
While most of the Markdown syntax is parseable by all common implementations,
|
||||
the special syntax is relying on a custom SilverStripe project that powers `http://doc.silverstripe.org`.
|
||||
|
||||
The website a standard SilverStripe installation with the [docsviewer](https://github.com/silverstripe/silverstripe-docsviewer/)
|
||||
module installed (see module [README](https://github.com/silverstripe/silverstripe-docsviewer/blob/master/README.md) and
|
||||
[documentation](https://github.com/silverstripe/silverstripe-docsviewer/tree/master/docs/en)).
|
||||
|
||||
## Syntax
|
||||
|
||||
### Relative Links
|
||||
|
||||
Relative links can point to other markdown pages in the same module.
|
||||
They are always referred to **without** the `.md` file extension.
|
||||
"Absolute" links relate to the root of a certain module,
|
||||
not the webroot of the renderer project or the filesystem root.
|
||||
|
||||
* link to folder on same level: `[title](sibling/)`
|
||||
* link to page on same level: `[title](sibling)`
|
||||
* link to parent folder: `[title](../parent/)`
|
||||
* link to page in parent folder: `[title](../parent/page)`
|
||||
* link to root folder: `[title](/)`
|
||||
* link to root page: `[title](/rootpage)`
|
||||
|
||||
Don't forget the trailing slash for directory links,
|
||||
it is important to distinguish files from directories.
|
||||
|
||||
<div class="notice" markdown='1'>
|
||||
It is recommended to use absolute links over relative links
|
||||
to make files easier to move around without changing all links.
|
||||
</div>
|
||||
|
||||
### API Links
|
||||
|
||||
You can link to API documentation from within the markup by pseudo-links.
|
||||
These are automatically resolved to the right URL on `http://api.silverstripe.org`.
|
||||
API links are automatically wrapped in `<code>` blocks by the formatter.
|
||||
|
||||
* Link to class: `[api:DataObject]`
|
||||
* Link to static method: `[api:DataObject::has_one()]`
|
||||
* Link to instance method: `[api:DataObject->write()]`
|
||||
* Link to static property: `[api:DataObject::$searchable_fields]`
|
||||
* Link to instance property: `[api:DataObject->changedFields]`
|
||||
* Custom titles: `[my title](api:DataObject)`
|
||||
|
||||
There's some gotchas:
|
||||
|
||||
* This notation can't be used in code blocks.
|
||||
* If you want to use API links to other modules or versions of the same module, you'll have to use the full `http://` URL.
|
||||
* You can't mark API links in backticks to trigger `<pre>` formatting, as it will stop the link parsing.
|
||||
The backticks are automatically added by the parser.
|
||||
|
||||
### Code Blocks with Highlighting
|
||||
|
||||
Code blocks can optionally contain language hints that a syntax highlighter can
|
||||
pick up. Use the first line in the block to add a language identifier, prefixed by three colons (`:::`), for example `:::php`.
|
||||
We're currently using the [syntaxhighlighter](http://code.google.com/p/syntaxhighlighter/) JavaScript implementation.
|
||||
See a [list of supported languages](http://code.google.com/p/syntaxhighlighter/wiki/Languages).
|
||||
|
||||
Example for PHP:
|
||||
|
||||
:::php
|
||||
class Page extends SiteTree {
|
||||
public function myFunction() {
|
||||
// ...
|
||||
}
|
||||
}
|
||||
|
||||
For SilverStripe templates, please use `:::ss` as a brush.
|
||||
|
||||
### Images
|
||||
|
||||
As a convention, referenced images in a Markdown formatted page should always be stored
|
||||
in an `_images/` folder on the same level as the page itself. Try to keep the image size
|
||||
small, as we typically package the documentation with the source code download, and
|
||||
need to keep the file size small.
|
||||
|
||||
You can link to absolute image URLs as well, of course.
|
||||
|
||||
## FAQs
|
||||
|
||||
### How do I preview my own SS Markdown?
|
||||
|
||||
Thats only possible with the `docsviewer` module - we don't have a standalone parser.
|
||||
|
||||
### Can I run my own documentation server?
|
||||
|
||||
Yes, the `docsviewer` module just requires a default SilverStripe installation (2.4+).
|
||||
|
||||
### Can I generate SS Markdown other formats?
|
||||
|
||||
Currently this is not supported, as all HTML is generated on the fly.
|
||||
|
||||
### Can I contribute to the parser and rendering project?
|
||||
|
||||
Of course, the `docsviewer` code is BSD licensed - we're looking forward to your contributions!
|
||||
|
||||
## Related ##
|
||||
|
||||
* [contributing/documentation](contributing/documentation): The doc.silverstripe.org website has certain styling and writing conventions
|
@ -1,36 +0,0 @@
|
||||
# BBcode support
|
||||
|
||||
A bbcode tags help box shows when the "BBCode help" link is clicked. Javascript is required for this to work.
|
||||
It has been encorporated as a modified version of PEAR's [HTML_BBCodeParser](http://pear.php.net/package/HTML_BBCodeParser)
|
||||
BBCode is used by default in the [blog](http://silverstripe.org/blog-module) and
|
||||
[forum](http://silverstripe.org/forum-module) modules.
|
||||
|
||||
## Usage
|
||||
|
||||
To add bbcode parsing to a template, instead of $Content use:
|
||||
|
||||
:::ss
|
||||
$Content.Parse(BBCodeParser)
|
||||
|
||||
|
||||
BBCode can be enabled in comments by adding the following to _config.php
|
||||
|
||||
:::php
|
||||
PageComment::enableBBCode();
|
||||
|
||||
|
||||
## Supported Tags
|
||||
|
||||
- [b]Bold[/b]
|
||||
- [i]Italics[/i]
|
||||
- [u]Underlined[/u]
|
||||
- [s]Struck-out[/s]
|
||||
- [color=blue]blue text[/color]
|
||||
- [align=right]right aligned[/align]
|
||||
- [code]Code block[/code]
|
||||
- [email]you@yoursite.com[/email]
|
||||
- [email=you@yoursite.com]Email[/email]
|
||||
- [ulist][*]unordered item 1[/ulist]
|
||||
- [img]http://www.website.com/image.jpg[/img]
|
||||
- [url]http://www.website.com/[/url]
|
||||
- [url=http://www.website.com/]Website[/url]
|
@ -1,36 +0,0 @@
|
||||
# Reference #
|
||||
|
||||
Reference articles complement our auto-generated [API docs](http://api.silverstripe.org) in providing deeper introduction into a specific API.
|
||||
|
||||
* [BBCode](bbcode): Extensible shortcode syntax
|
||||
* [CMS Architecture](cms-architecture): A quick run down to get you started with creating your own data management interface.
|
||||
* [GridField](grid-field): The GridField is a flexible form field for creating tables of data.
|
||||
* [Database Structure](database-structure): Conventions and best practices for database tables and fields
|
||||
* [DataExtension](dataextension): A "mixin" system allowing to extend core classes
|
||||
* [DataObject](dataobject): Base class for database records
|
||||
* [Director](director): Routes URLs and handles HTTP requests
|
||||
* [Execution Pipeline](execution-pipeline): Detailed look on the way an HTTP request takes through the system
|
||||
* [Form Field Types](form-field-types): Highlevel overview of field classes
|
||||
* [GridField](grid-field): The GridField is a flexible form field for creating tables of data.
|
||||
* [Image](image): Represents an image object in templates and PHP code
|
||||
* [Injector](injector): The [api:Injector] class is the central manager of inter-class dependencies in the SilverStripe Framework
|
||||
* [Member](member): The "user" object forms the base for our security/permission moel
|
||||
* [ModelAdmin](modeladmin): Manage arbitrary data in a simple CRUD (create/read/update/delete) interface
|
||||
* [Partial Caching](partial-caching): Cache complex parts of templates for better performance
|
||||
* [Permission](permission): Database-backed permission model
|
||||
* [Requirements](requirements): Include CSS and JavaScript files in templates and controllers
|
||||
* [RestfulService](restfulservice): Consume Restful APIs with this client
|
||||
* [RSSFeed](rssfeed): Expose any database records as an RSS feed
|
||||
* [SearchContext](searchcontext): Wraps search queries and forms into an object
|
||||
* [Site Reports](site-reports): Tabular reports in a specialized CMS interface
|
||||
* [SiteConfig](siteconfig): Global configuration stored in the database
|
||||
* [SiteTree](sitetree): Base class for a "page" in the CMS
|
||||
* [SQLSelect](sqlquery): Wrapper around a SQL query allowing modification before execution
|
||||
* [StaticPublisher](staticpublisher): Export a page tree as static HTML for better performance and portability
|
||||
* [TableField](tablefield): Add and edit records with inline edits in this form field
|
||||
* [TableListField](tablelistfield): View and delete records in the CMS
|
||||
* [Templates Formal Syntax](templates-formal-syntax): Maximum level of detail of how the template engine works
|
||||
* [Templates Upgrading Guide](templates-upgrading-guide): Differences between SilverStripe 2 and SilverStripe 3 template language
|
||||
* [Templates](templates): Introduction to SilverStripe templates
|
||||
* [Typography](typography): CSS file to enable WYSIWYG previews in the CMS
|
||||
* [urlvariabletools](urlvariabletools): Debug and maintenance switches
|
@ -1,75 +0,0 @@
|
||||
# TableField
|
||||
|
||||
## Introduction
|
||||
|
||||
`[api:TableField]` behaves in the same manner as `[api:TableListField]`, however allows the editing of existing and adding of
|
||||
new rows. The data is saved back by the surrounding form-saving (mostly EditForm->save).
|
||||
|
||||
See `[api:TableListField]` for more documentation on the base-class
|
||||
|
||||
## Usage
|
||||
|
||||
### Add hidden default data
|
||||
|
||||
Please use **TableField->setExtraData()** to specify additional (non-editable) data. You might use the following code
|
||||
that shows the Player of Team with a particular Team ID and automatically saves new Players into this Team.
|
||||
|
||||
In this example, you'll note that we're setting TeamID to $this->ID. This works well if you're including a TableField
|
||||
as an editable field on a getCMSFields() call.
|
||||
|
||||
:::php
|
||||
$myTableField = new TableField(
|
||||
'MyTableField', // fieldName
|
||||
'Player', // sourceType
|
||||
array(
|
||||
'FirstName'=>'First Name',
|
||||
'Surname'=>'Surname'
|
||||
), // fieldList
|
||||
array(
|
||||
'FirstName'=>'TextField',
|
||||
'Surname'=>'TextField'
|
||||
), // fieldTypes
|
||||
null, // filterField (legacy)
|
||||
"Player.TeamID",
|
||||
$this->ID
|
||||
);
|
||||
// add some HiddenFields thats saved with each new row
|
||||
$myTableField->setExtraData(array(
|
||||
'TeamID' => $this->ID ? $this->ID : '$RecordID'
|
||||
));
|
||||
|
||||
|
||||
The '$RecordID' value is used when building forms that create new records. It will be populated with whatever record id
|
||||
is created.
|
||||
|
||||
### Row Transformation
|
||||
|
||||
You can apply a `[api:FormTransformation]` to any given field,
|
||||
based on a eval()ed php-rule. You can access all columns on the generated DataObjects here.
|
||||
|
||||
:::php
|
||||
$myTF->setTransformationConditions(array(
|
||||
"PlayerName" => array(
|
||||
"rule" => '$PlayerStatus == "Retired" || $PlayerStatus == "Injured"',
|
||||
"transformation" => "performReadonlyTransformation"
|
||||
)
|
||||
));
|
||||
|
||||
|
||||
### Required Fields
|
||||
|
||||
Due to the nested nature of this fields dataset, you can't set any required columns as usual with the
|
||||
`[api:RequiredFields]`** on the TableField-instance for this.
|
||||
Note: You still have to attach some form of `[api:Validator]` to the form to trigger any validation on this field.
|
||||
|
||||
|
||||
## Known Issues
|
||||
|
||||
* A `[api:TableField]` doesn't reload any submitted form-data if the saving is interrupted by a failed validation. After
|
||||
refreshing the form with the validation-errors, the `[api:TableField]` will be blank again.
|
||||
* You can't add **visible default data** to columns in a `[api:TableField]`, please use *setExtraData*
|
||||
|
||||
|
||||
## API Documentation
|
||||
|
||||
`[api:TableField]`
|
@ -1,292 +0,0 @@
|
||||
# TableListField
|
||||
|
||||
## Introduction
|
||||
|
||||
<div class="warning" markdown="1">
|
||||
This field is deprecated in favour of the new [GridField](/reference/grid-field) API.
|
||||
</div>
|
||||
|
||||
Form field that embeds a list of `[api:DataObject]`s into a form, such as a member list or a file list.
|
||||
Provides customizeable columns, record-deletion by ajax, paging, sorting, CSV-export, printing, input by
|
||||
`[api:DataObject]` or raw SQL.
|
||||
|
||||
## Example
|
||||
|
||||
Here's an example of a full featured `[api:TableListField]` implementation. It features editing members in the database
|
||||
directly as a button on each record, as well as filtering, and sorting. It also makes use of the 'export' permission,
|
||||
allowing export of data as a CSV.
|
||||
|
||||
:::php
|
||||
public function getReportField() {
|
||||
$resultSet = new DataObjectSet();
|
||||
$filter = `;
|
||||
$sort = "Member.ID ASC";
|
||||
$join = `;
|
||||
$instance = singleton('Member');
|
||||
$query = $instance->buildSQL($filter, $sort, null, $join);
|
||||
$query->groupby[] = 'Member.ID';
|
||||
|
||||
$report = new TableListField(
|
||||
'CorporateReport',
|
||||
'Member',
|
||||
array(
|
||||
'ID' => 'ID',
|
||||
'FirstName' => 'First Name',
|
||||
'Surname' => 'Surname',
|
||||
'Email' => 'Email',
|
||||
'MembershipType' => 'Membership Type',
|
||||
'MembershipStatus' => 'Membership Status',
|
||||
'DateJoined' => 'Date Joined',
|
||||
'PaidUntil' => 'Paid Until',
|
||||
'Edit' => ''
|
||||
)
|
||||
);
|
||||
|
||||
$report->setCustomQuery($query);
|
||||
|
||||
$report->setFieldFormatting(array(
|
||||
'Email' => '<a href=\"mailto: $Email\" title=\"Email $FirstName\">$Email</a>',
|
||||
'Edit' => '<a href=\"admin/security/index/1?executeForm=EditForm&ID=1&ajax=1&action_callfieldmethod&fieldName=Members&ctf[childID]=$ID&ctf[ID]=1&ctf[start]=0&methodName=edit\"><img src=\"cms/images/edit.gif\" alt=\"Edit this member\" /></a>'
|
||||
));
|
||||
|
||||
$report->setFieldCasting(array(
|
||||
'DateJoined' => 'Date->Nice',
|
||||
'PaidUntil' => 'Date->Nice'
|
||||
));
|
||||
|
||||
$report->setShowPagination(true);
|
||||
if(isset($_REQUEST['printable'])) {
|
||||
$report->setPageSize(false);
|
||||
} else {
|
||||
$report->setPageSize(20);
|
||||
}
|
||||
|
||||
$report->setPermissions(array(
|
||||
'export',
|
||||
'delete',
|
||||
'print'
|
||||
));
|
||||
|
||||
return $report;
|
||||
}
|
||||
|
||||
|
||||
For more information on each of the features used in the example, you can read below.
|
||||
|
||||
## Usage
|
||||
|
||||
### Source Input
|
||||
|
||||
:::php
|
||||
// default: DataObject selection (e.g. all 'Product's)
|
||||
$myTableListField = new TableListField(
|
||||
'MyName',
|
||||
'Product',
|
||||
array('Price', 'Code')
|
||||
);
|
||||
|
||||
// custom DataObjectSet
|
||||
$myProducts = Product::get()->filter('Code', "MyCode");
|
||||
$myTableListField->setCustomSourceItems($myProducts);
|
||||
|
||||
// custom SQL
|
||||
$customCsvQuery = singleton('Product')->buildSQL();
|
||||
$customCsvQuery->select[] = "CONCAT(col1,col2) AS MyCustomSQLColumn";
|
||||
$myTableListField->setCustomCsvQuery($customQuery);
|
||||
|
||||
`[api:TableListField]` also tries to resolve Component-relations(has_one, has_many) and custom getters automatically:
|
||||
|
||||
:::php
|
||||
$myTableListField = new TableListField(
|
||||
'MyName',
|
||||
'Product',
|
||||
array(
|
||||
'Buyer.LastName',
|
||||
'PriceWithShipping'
|
||||
)
|
||||
);
|
||||
// Product.php Example
|
||||
class Product extends DataObject {
|
||||
$has_one = array('Buyer'=>'Member');
|
||||
public function getPriceWithShipping() {
|
||||
return $this->Price + $this->Shipping;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
### Pagination
|
||||
|
||||
Paging works by AJAX, but also works without javascript on link-basis.
|
||||
|
||||
:::php
|
||||
$myTableListField->setPageSize(100); // defaults to 20
|
||||
|
||||
|
||||
### Sorting
|
||||
|
||||
The easiest method is to add the sorting criteria as a constructor parameter. Sorting should be applied manually, where
|
||||
appropriate. Only direct columns from the produced SQL-query are supported.
|
||||
|
||||
Example (sorting by "FirstName" column):
|
||||
|
||||
:::php
|
||||
$report = new TableListField(
|
||||
'CorporateReport', // name
|
||||
'Member', // sourceClass
|
||||
array(
|
||||
'ID' => 'ID',
|
||||
'FirstName' => 'First Name',
|
||||
'LastName' => 'Last Name',
|
||||
), // fieldList
|
||||
null, // sourceFilter
|
||||
'FirstName' // sourceSort
|
||||
);
|
||||
|
||||
|
||||
If you want to sort by custom getters in your `[api:DataObject]`, please reformulate them to a custom SQL column. This
|
||||
restriction is needed to avoid performance-hits by caching and sorting potentially large datasets on PHP-level.
|
||||
|
||||
### Casting
|
||||
|
||||
Column-values can be casted, based on the casting-types available through DBObject (framework/core/model/fieldtypes).
|
||||
|
||||
:::php
|
||||
$myTableListField->setFieldCasting(array(
|
||||
"MyCustomDate"=>"Date",
|
||||
"MyShortText"=>"Text->FirstSentence"
|
||||
));
|
||||
|
||||
|
||||
### Permissions
|
||||
|
||||
Permissions vary in different `[api:TableListField]`-implementations, and are evaluated in the template.
|
||||
By default, all listed permissions are enabled.
|
||||
|
||||
:::php
|
||||
$myTableListField->setPermissions(array(
|
||||
'delete',
|
||||
'export',
|
||||
'print'
|
||||
));
|
||||
|
||||
|
||||
### Formatting
|
||||
|
||||
Specify custom formatting for fields, e.g. to render a link instead of pure text.
|
||||
Caution: Make sure to escape special php-characters like in a normal php-statement.
|
||||
|
||||
:::php
|
||||
$myTableListField->setFieldFormatting(array(
|
||||
"myFieldName" => '<a href=\"custom-admin/$ID\">$ID</a>'
|
||||
));
|
||||
|
||||
|
||||
### Highlighting
|
||||
|
||||
"Highlighting" is similiar to "Formatting", but applies to the whole row rather than a column.
|
||||
Definitions for highlighting table-rows with a specific CSS-class. You can use all column-names
|
||||
in the result of a query. Use in combination with {@setCustomQuery} to select custom properties and joined objects.
|
||||
|
||||
:::php
|
||||
$myTableListField->setHighlightConditions(array(
|
||||
array(
|
||||
"rule" => '$Flag == "red"',
|
||||
"class" => "red"
|
||||
),
|
||||
array(
|
||||
"rule" => '$Flag == "orange"',
|
||||
"class" => "orange"
|
||||
)
|
||||
));
|
||||
|
||||
|
||||
### Export
|
||||
|
||||
Export works only to CSV currently, with following specs:
|
||||
|
||||
* Line delimiter: "\n"
|
||||
* Separator: ";"
|
||||
* Column-quotes: none
|
||||
|
||||
:::php
|
||||
$myTableListField->setPermissions(array('export'));
|
||||
$myTableListField->setFieldListCsv(array(
|
||||
'Price' => 'Price',
|
||||
'ItemCount' => 'Item Count',
|
||||
'ModelNumber' => 'Model Number'
|
||||
));
|
||||
|
||||
You can influence the exported values by adjusting the generated SQL.
|
||||
|
||||
:::php
|
||||
$customCsvQuery = singleton('Product')->buildSQL();
|
||||
$customCsvQuery->select[] = "CONCAT(col1,col2) AS MyCustomSQLColumn";
|
||||
$myTableListField->setCustomCsvQuery($customQuery);
|
||||
$myTableListField->setFieldListCsv(array(
|
||||
'MyCustomSQLColumn'
|
||||
));
|
||||
|
||||
|
||||
### Row-Summaries
|
||||
|
||||
You can summarize specific columns in your result-set. The term "summary" is used in a broad sense, you can also
|
||||
implement averages etc.
|
||||
|
||||
:::php
|
||||
$myTableListField->addSummary(
|
||||
'Total Revenue and Sales Count',
|
||||
array(
|
||||
"Price" => array("sum","Currency->Nice"),
|
||||
"ItemCount" => "sum"
|
||||
)
|
||||
);
|
||||
|
||||
In `[api:TableListField]`-implementation, these summaries also react to changes in input-fields by javascript.
|
||||
Available methods:
|
||||
|
||||
* sum
|
||||
* avg
|
||||
|
||||
### Grouping
|
||||
|
||||
Used to group by a specific column in the `[api:DataObject]` and create partial summaries.
|
||||
Please use only together with addSummary().
|
||||
(Automatically disables sorting).
|
||||
|
||||
:::php
|
||||
$myTableListField->groupByField = 'MyColumnName';
|
||||
|
||||
|
||||
## Best Practices
|
||||
|
||||
### Custom Sorting
|
||||
|
||||
Please subclass `[api:TableListField]` to implement custom sorting, following the naming-convention
|
||||
"`colFunction_<yourFunctionName>`".
|
||||
|
||||
:::php
|
||||
class CustomTableListField extends TableListField {
|
||||
// referenced through "dateAverage"
|
||||
public function colFunction_dateAverage($values) {
|
||||
// custom date summaries
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
### Adding Utility-functions
|
||||
|
||||
In case you want to perform utility-functions like "export" or "print" through action-buttons,
|
||||
make sure to subclass Utility() which collates all possible actions.
|
||||
|
||||
### Customizing Look & Feel
|
||||
|
||||
You can exchange the used template, e.g. to change applied CSS-classes or the HTML-markup:
|
||||
|
||||
:::php
|
||||
$myTableListField->setTemplate("MyPrettyTableListField");
|
||||
|
||||
|
||||
|
||||
## API Documentation
|
||||
|
||||
`[api:TableListField]`
|
@ -1,34 +0,0 @@
|
||||
# Topics
|
||||
|
||||
This section provides an overview on how things fit together, the "conceptual glue" between APIs and features.
|
||||
It is where most documentation should live, and is the natural "second step" after finishing the tutorials.
|
||||
|
||||
* [Access Control and Page Security](access-control): Restricting access and setting up permissions on your website.
|
||||
* [Authentication](authentication): Overview of the default member authentication system.
|
||||
* [Caching](caching): Explains built-in caches for classes, config and templates. How to use your own caches.
|
||||
* [Command line Usage](commandline): Calling controllers via the command line interface using `sake`
|
||||
* [Configuration](configuration): Influence behaviour through PHP and YAML configuration
|
||||
* [Controller](controller): The intermediate layer between your templates and the data model
|
||||
* [Data Types](data-types): Types that properties on `DataObject` can have (e.g. `Text` or `Date`)
|
||||
* [Datamodel](datamodel): How we use an "Object-relational model" to expose database information in a useful way
|
||||
* [Debugging](debugging): Tracking down errors via logs, URL parameters and profiling
|
||||
* [Directory Structure](directory-structure): What are core files, where do modules and my own project files go?
|
||||
* [Emails](email): Configuring and sending emails
|
||||
* [Environment management](environment-management): Sharing configuration details (e.g. database login, passwords) with multiple websites via a `_ss_environment.php` file
|
||||
* [Error Handling](error-handling): Error messages and filesystem logs
|
||||
* [Files and Images](files): File and Image management in the database and how to manipulate images
|
||||
* [Forms & form validation](forms): Create your own form, add fields and create your own form template using the existing `Form` class
|
||||
* [Internationalization (i18n)](i18n): Displaying templates and PHP code in different languages using i18n
|
||||
* [Javascript](javascript): Best practices for developing with JavaScript in SilverStripe
|
||||
* [Module Development](module-development): Creating a module (also known as "extension" or "plugin") to contain reusable functionality
|
||||
* [Modules](modules): Introduction, how to download and install a module (e.g. with blog or forum functionality)
|
||||
* [Page Type Templates](page-type-templates): How to build templates for all your different page types
|
||||
* [Page Types](page-types): What is a "page type" and how do you create one?
|
||||
* [Rich Text Editing](rich-text-editing): How to use and configure SilverStripes built in HTML Editor
|
||||
* [Search](search): Searching for properties in the database as well as other documents
|
||||
* [Security](security): How to develop secure SilverStripe applications with good code examples
|
||||
* [Testing](testing): Functional and Unit Testing with PHPUnit and SilverStripe's testing framework
|
||||
* [Theme Development](theme-development): Package templates, images and CSS to a reusable theme
|
||||
* [Using Themes](themes): How to download and install themes
|
||||
* [Versioning](versioning): Extension for SiteTree and other classes to store old versions and provide "staging"
|
||||
* [Widgets](widgets): Small feature blocks which can be placed on a page by the CMS editor, also outlines how to create and add widgets
|
@ -1,3 +0,0 @@
|
||||
# Widgets
|
||||
|
||||
[Widgets](http://silverstripe.org/widgets) are small pieces of functionality such as showing the latest Comments or Flickr Photos. Since SilverStripe 3.0, they have been moved into a standalone module at [github.com/silverstripe/silverstripe-widgets](https://github.com/silverstripe/silverstripe-widgets).
|