Damian Mooyman
1db08bac88
BUG Fix FormAction title encoding
...
BUG Fix TreeMultiSelectField using the wrong label
BUG Fix encoding of selected title on TreeDropdownField
BUG Fix DataDifferencer trying to compare non-comparable fields (non-dbfield objects)
BUG: Fix issue with TreeMultiSelectField not saving
BUG: Fix issue with GridFieldPrintButton
ENHANCEMENT Instead of using multiple api calls to encode dbfield values, delegate this operation to the individual fields via forTemplate
Instead of using a new API to communicate html encoding to treeselect, just ensure all content is HTML encoded, and enable html_titles in jstree.
2015-02-13 15:50:45 +13:00
Daniel Hensby
89c14d079d
Making TreeMultiSelectField consistent with parent class
...
NEW TreeDropdownField sanatiser helper added
Use config for default_cast of objects
FIX Determine if Diffed value should be escaped
Forcing casting for core DB fields
Fixing permissions labels
2015-02-13 11:12:30 +13:00
Daniel Hensby
6103d66116
Fix issue where TreeDropdownField loses value on show/hide
...
Fixes https://github.com/silverstripe/silverstripe-cms/issues/1157
2015-01-27 11:53:53 +00:00
Russell Michell
9e2c7b6572
BUG Ensure TreeMultiSelectField doesn't populate menus with "unchanged".
...
TreeMultiSelectField's default for its value property is 'unchanged'
which causes menus to not load and generates console errors. Fixes #2795
2014-01-28 08:45:15 +13:00
Loz Calver
9b0564b7d6
FIX: Undefined variable in TreeDropdownField.php
...
I'm guessing this was just a simple typo. Checked this by searching on SiteTree, behaves as expected after this change.
2013-10-02 15:41:39 +01:00
Loz Calver
6b3b61873a
FEATURE: Disable specific tree nodes in TreeDropdownField
...
DO NOT MERGE: to be reviewed.
This feature request was born out of wanting the ability to disable (for example) a top level page from being selected, while still being able to select a child page. Using setFilterFunction() simply removes the node and its children.
Extra styling for disabled nodes
Disable ability to select a disabled node for TreeDropdownField
Disable hover CSS changes
Fixing merge conflict during rebase
Return a boolean for nodeIsDisabled()
2013-10-02 12:53:23 +01:00
Ingo Schommer
2e3511bc5f
Merge remote-tracking branch 'origin/3.0' into 3.1
...
Conflicts:
docs/en/changelogs/3.0.6.md
forms/Form.php
forms/FormField.php
forms/TreeDropdownField.php
2013-09-27 18:50:47 +02:00
Ingo Schommer
debd81d380
Merge pull request #2453 from chillu/pulls/escape-3.1.0
...
Escaping 3.1
2013-09-25 16:02:45 -07:00
Ingo Schommer
f3ef04a432
FIX Auto-escape titles in TreeDropdownField
...
Related to SS-2013-009. While the default "TreeTitle" was escaped
within the SiteTree->TreeTitle() getter, other properties like SiteTree->Title
weren't escaped. The new logic uses the underlying casting helpers
on the processed objects.
2013-09-24 21:41:21 +02:00
Ingo Schommer
114fb59107
FIX Auto-escape titles in TreeDropdownField
...
Related to SS-2013-009. While the default "TreeTitle" was escaped
within the SiteTree->TreeTitle() getter, other properties like SiteTree->Title
weren't escaped. The new logic uses the underlying casting helpers
on the processed objects.
2013-09-24 21:40:17 +02:00
Ingo Schommer
79cab42a91
Default TreeDropdown to "Title" search if $labelField isn't in DB
...
This is a workaround in order to ensure the field stays operational
for SiteTree and File records with the new $showSearch=true default.
Previously it was necessary to use setSearchCallback(), otherwise
the SQL query would fail. One limitation to keep this change generic
is that "MenuTitle" won't be used to search, since its SiteTree specific,
while the "Title" and "Name" fields are generally regarded as
model conventions (e.g. they're used in DataObject->getTitle() as well).
See https://github.com/silverstripe/silverstripe-framework/pull/2364
2013-08-29 17:12:01 +02:00
Naomi Guyer
8b5f89f3b9
API: Treedropdownfield showsearch default true, provide better ui
...
Set search option true on treedropdown fields by default, to provide a
fallback solution when trees fail to render (too many children errors)
Provide better indication/more meaningful styling to search (match
chosen styles for consistency)
2013-08-29 16:21:04 +12:00
Ingo Schommer
01f46d039f
NEW Enforce max node counts to avoid excessive resource usage
...
Rendering potentially 1000s of nodes can exceed the CPU and memory constraints
of a normal PHP process, as well as the rendering capabilities of browsers.
Set a hard maximum for the renderable nodes, deferring to a "show as list" action
in the main CMS tree. For TreeDropdownField, we don't have the list fallback option,
so ask the user to search for the node title instead.
Also makes both the "node_threshold_total" and "node_threshold_leaf" values configurable
2013-04-09 10:24:18 +12:00
Ingo Schommer
3334eafcb1
API Marked statics private, use Config API instead ( #8317 )
...
See "Static configuration properties are now immutable, you must use Config API." in the 3.1 change log for details.
2013-03-24 17:20:53 +01:00
Ingo Schommer
14a56c18e9
Merge remote-tracking branch 'origin/3.0' into 3.1
...
Conflicts:
control/Director.php
2013-02-07 21:45:16 +01:00
Ingo Schommer
857d8bb8df
FIX Don't escape values on TreeDropdownField readonly views
...
They typically output TreeTitle() which is assumed to be HTML.
2013-02-04 17:15:32 +01:00
Ingo Schommer
9e82d8e857
Fixed line lengths
2013-01-11 09:59:33 +01:00
Ingo Schommer
abfb3c7095
Default TreeDropdownField to TreeTitle
...
Same behaviour as in 2.x. All common elements displayed
in this field (SiteTree, Group, File) have a TreeTitle accessor.
2013-01-08 18:39:31 +01:00
Ingo Schommer
61cc033304
Fluent interface for TreeDropdownField
2013-01-08 18:32:40 +01:00
Ingo Schommer
79997477b3
Merge remote-tracking branch 'origin/3.0' into 3.1
...
Conflicts:
model/DataList.php
2013-01-08 17:16:09 +01:00
Sean Harvey
68eb367d27
Remove unncessary variable from TreeDropdownField
2013-01-07 14:14:54 +13:00
Ingo Schommer
559abecd56
API Copying instance props on FormField readonly/disabled transformations
...
Introduced new FormField->castedCopy() method
which tries to replicate the existing form field instance
as closely as possible.
Primarily, the fix was targeted at consistently passing
through FormField->description to all of its variations.
2012-12-14 01:58:04 +01:00
Sam Minnee
1f7fc1f76a
FIX Remove instances of lines longer than 120c
...
The entire framework repo (with the exception of system-generated files) has been amended to respect the 120c line-length limit. This is in preparation for the enforcement of this rule with PHP_CodeSniffer.
2012-09-30 17:18:13 +13:00
Ingo Schommer
e2f073f38a
Method visibility according to coding conventions
2012-09-20 10:46:59 +02:00
Ingo Schommer
3a7128d00c
MINOR Fixed phpdocs
2012-06-20 23:59:16 +02:00
Ingo Schommer
6c1f7997a4
ENHANCEMENT HTML titles in TreeDropdownField
...
HTML in tree nodes is already used to render page icons via SiteTree->TreeTitle.
In order to select the initial value correctly via HTML5 data attributes,
we need to encode any HTML values.
2012-06-13 16:04:14 +02:00
Ingo Schommer
d44f6b3e1f
MINOR Removed deprecated usage of $priority argument in _t() calls
2012-04-15 17:17:17 +02:00
Simon Welsh
3a6341a251
API-CHANGE sapphire folder can now be renamed.
2012-04-15 10:50:19 +12:00
Sean Harvey
e097f6e1a8
MINOR Fixes to method arguments in core classes for E_STRICT support.
...
API CHANGE Remove abstract static function and just use static functions
in Authenticator (PHP 5.3+ doesn't support abstract static functions)
2012-03-28 22:41:42 +13:00
Julian Seidenberg
a59637c77c
MINOR: SSF-30 tweaking comment
2012-03-08 10:08:43 +13:00
Julian Seidenberg
5967a1c135
API-CHANGE: SSF-30 adding a method to control a parameter passed to Hierarchy->getChildrenAsUL() from TreeDropdownField. The parameter is useful for controlling whether the returned UL contains child nodes, or just folders.
2012-03-07 16:43:12 +13:00
Ingo Schommer
7602d081a2
ENHANCEMENT Fluent interface in Form API by returning instance from all setters
2012-02-17 13:35:26 +01:00
Ingo Schommer
5911abc0f6
API CHANGE Removed prototype.js style $() alias usage for document.getElementById() to avoid confusion with the more common jQuery() alias.
...
API CHANGE Removed several unsed JavaScript globals: sprintf(), Number.prototype.CURRENCIES, Number.prototype.toCurrency(), String.prototype.ucfirst(), jQuery.fn.clearFields(), jQuery.fn.clearInputs()
MINOR Removed prototype_improvements.js and jquery_improvements.js files, now contained in individual component code (or removed altogether)
2012-02-16 12:27:47 +01:00
Normann Lou
18e5dec680
MINOR Add forceFullTree param for getting a complete tree (SSF-110)
2012-02-13 09:53:00 +01:00
Ingo Schommer
095602b958
MINOR TreeDropdownField->setShowInSearch()
2012-01-05 23:17:55 +01:00
Ingo Schommer
b5421d9598
ENHANCEMENT Allowing custom attributes in (most) FormField implementations, which allows for HTML5 data attributes
2012-01-02 16:48:14 +01:00
Sean Harvey
9e548f501e
API CHANGE FormField::Field() and FormField::FieldHolder() now render into templates on each FormField instead of creating HTML from PHP
2012-01-02 16:48:13 +01:00
Ingo Schommer
7e01c40770
MINOR Avoid nesting metadata properties in TreeDropdownField, setting classname in metadata even if no record is pre-selected
2011-10-29 21:56:00 +02:00
Ingo Schommer
96d18efa58
MINOR Replaced calls to deprecated FormField->Name() with getName()
2011-10-29 13:27:11 +02:00
Ingo Schommer
ce8e72cf0e
MINOR Removing executable flag from all files (thanks miiihi)
2011-09-18 22:04:02 +02:00
Will Rossiter
e484a230fe
ENHANCEMENT: updated TreeDropdown display. Use jQuery UI provided icon rather than custom
2011-08-01 14:27:52 +12:00
Ingo Schommer
7a70b29b9d
ENHANCEMENT Support for record/selection-specific metadata in TreeDropdownField (e.g. useful for limiting available page type option based on a parent node selection)
2011-05-08 23:36:13 +12:00
Ingo Schommer
43491c2641
MINOR Reducing number of asset downloads by combining files in LeftAndMain->init() and including full jquery.ui.css instead of multiple @import statements
2011-04-25 21:36:51 +12:00
Ingo Schommer
0b40bda1cc
MINOR Changed TreeDropdownField markup from <div href="..."> to <div data-url-tree="..."> in order to support other URLs (e.g. reordering) - important for the main CMS tree
2011-03-22 18:15:03 +13:00
Ingo Schommer
f06480da55
ENHANCEMENT Making TreeDropdownField and TreeMultiSelectField serverside markup more unobtrusive, adding DOM elements required by javascript through TreeDropdownField.js
2011-03-22 18:05:22 +13:00
Ingo Schommer
4b9ab5c8aa
FEATURE Switched TreeDropdownField to use jquery.jstree instead of custom tree.js library. Rewrote TreeDropdownField.js from behaviour.js to jquery.entwine.js
2011-03-22 18:05:18 +13:00
Sam Minnee
1e0c4ae8d1
Merge branch '2.4'
...
Conflicts:
cache/Cache.php
cli/CliController.php
core/Convert.php
core/Core.php
core/ManifestBuilder.php
core/Object.php
core/SSViewer.php
core/control/ContentController.php
core/control/ContentNegotiator.php
core/control/FormResponse.php
core/control/RequestHandler.php
core/control/SilverStripeNavigatorItem.php
core/i18n.php
core/i18nTextCollector.php
core/model/DataObjectSet.php
core/model/Hierarchy.php
core/model/Image.php
core/model/MySQLDatabase.php
core/model/SiteConfig.php
core/model/SiteTree.php
core/model/Translatable.php
core/model/VirtualPage.php
dev/Debug.php
dev/SapphireTest.php
dev/TestRunner.php
dev/YamlFixture.php
dev/install/MySQLDatabaseConfigurationHelper.php
docs/en/installation/from-source.md
docs/en/topics/themes.md
docs/en/tutorials/4-site-search.md
email/Mailer.php
filesystem/File.php
filesystem/Folder.php
forms/ComplexTableField.php
forms/CurrencyField.php
forms/DateField.php
forms/FieldSet.php
forms/FileField.php
forms/FileIFrameField.php
forms/HtmlEditorConfig.php
forms/HtmlEditorField.php
forms/SelectionGroup.php
forms/SimpleImageField.php
forms/TabSet.php
forms/TableField.php
forms/TableListField.php
forms/TreeDropdownField.php
forms/TreeMultiselectField.php
integration/Geoip.php
javascript/SelectionGroup.js
javascript/TreeSelectorField.js
javascript/UpdateURL.js
javascript/core/jquery.ondemand.js
javascript/tiny_mce_improvements.js
javascript/tree/tree.js
lang/en_US.php
search/ContentControllerSearchExtension.php
security/Group.php
security/Member.php
security/PermissionCheckboxSetField.php
security/PermissionRole.php
security/Security.php
static-main.php
templates/RelationComplexTableField.ss
templates/TableListField.ss
tests/ConvertTest.php
tests/DataObjectSetTest.php
tests/DataObjectTest.php
tests/DataObjectTest.yml
tests/RequestHandlingTest.php
tests/SSViewerTest.php
tests/SiteTreePermissionsTest.php
tests/SiteTreeTest.php
tests/TransactionTest.php
tests/api/RestfulServiceTest.php
tests/control/DirectorTest.php
tests/control/ModelAsControllerTest.php
tests/fieldtypes/WidgetAreaEditorTest.php
tests/forms/CurrencyFieldTest.php
tests/forms/FormTest.php
tests/model/DatabaseTest.php
tests/model/ImageTest.php
tests/search/ContentControllerSearchExtensionTest.php
tests/security/MemberAuthenticatorTest.php
thirdparty/.gitignore
thirdparty/behaviour/behaviour.js
thirdparty/firebug-lite/firebug.js
thirdparty/firebug-lite/firebugx.js
thirdparty/jquery-form/jquery.form.js
thirdparty/jquery-livequery/jquery.livequery.js
thirdparty/jquery-livequery/test/jquery.js
thirdparty/jquery-livequery/test/test.html
thirdparty/jquery-livequery/test/test2.html
thirdparty/jquery-metadata/META.json
thirdparty/jquery-metadata/README
thirdparty/jquery-metadata/jquery.metadata.js
thirdparty/jquery-metadata/test/index.html
thirdparty/jquery-metadata/test/jquery.js
thirdparty/jquery-metadata/test/test.js
thirdparty/jquery-metadata/test/testrunner.js
thirdparty/jquery-metadata/test/testsuite.css
thirdparty/jquery-ui-themes/smoothness/images/ui-bg_flat_0_aaaaaa_40x100.png
thirdparty/jquery-ui-themes/smoothness/images/ui-bg_flat_75_ffffff_40x100.png
thirdparty/jquery-ui-themes/smoothness/images/ui-bg_glass_55_fbf9ee_1x400.png
thirdparty/jquery-ui-themes/smoothness/images/ui-bg_glass_65_ffffff_1x400.png
thirdparty/jquery-ui-themes/smoothness/images/ui-bg_glass_75_dadada_1x400.png
thirdparty/jquery-ui-themes/smoothness/images/ui-bg_glass_75_e6e6e6_1x400.png
thirdparty/jquery-ui-themes/smoothness/images/ui-bg_glass_95_fef1ec_1x400.png
thirdparty/jquery-ui-themes/smoothness/images/ui-bg_highlight-soft_75_cccccc_1x100.png
thirdparty/jquery-ui-themes/smoothness/images/ui-icons_222222_256x240.png
thirdparty/jquery-ui-themes/smoothness/images/ui-icons_2e83ff_256x240.png
thirdparty/jquery-ui-themes/smoothness/images/ui-icons_454545_256x240.png
thirdparty/jquery-ui-themes/smoothness/images/ui-icons_888888_256x240.png
thirdparty/jquery-ui-themes/smoothness/images/ui-icons_cd0a0a_256x240.png
thirdparty/jquery-ui/i18n/jquery-ui-i18n.js
thirdparty/jquery-ui/i18n/ui.datepicker-ar.js
thirdparty/jquery-ui/i18n/ui.datepicker-bg.js
thirdparty/jquery-ui/i18n/ui.datepicker-ca.js
thirdparty/jquery-ui/i18n/ui.datepicker-cs.js
thirdparty/jquery-ui/i18n/ui.datepicker-da.js
thirdparty/jquery-ui/i18n/ui.datepicker-de.js
thirdparty/jquery-ui/i18n/ui.datepicker-el.js
thirdparty/jquery-ui/i18n/ui.datepicker-eo.js
thirdparty/jquery-ui/i18n/ui.datepicker-es.js
thirdparty/jquery-ui/i18n/ui.datepicker-fa.js
thirdparty/jquery-ui/i18n/ui.datepicker-fi.js
thirdparty/jquery-ui/i18n/ui.datepicker-fr.js
thirdparty/jquery-ui/i18n/ui.datepicker-he.js
thirdparty/jquery-ui/i18n/ui.datepicker-hr.js
thirdparty/jquery-ui/i18n/ui.datepicker-hu.js
thirdparty/jquery-ui/i18n/ui.datepicker-hy.js
thirdparty/jquery-ui/i18n/ui.datepicker-id.js
thirdparty/jquery-ui/i18n/ui.datepicker-is.js
thirdparty/jquery-ui/i18n/ui.datepicker-it.js
thirdparty/jquery-ui/i18n/ui.datepicker-ja.js
thirdparty/jquery-ui/i18n/ui.datepicker-ko.js
thirdparty/jquery-ui/i18n/ui.datepicker-lt.js
thirdparty/jquery-ui/i18n/ui.datepicker-lv.js
thirdparty/jquery-ui/i18n/ui.datepicker-ms.js
thirdparty/jquery-ui/i18n/ui.datepicker-nl.js
thirdparty/jquery-ui/i18n/ui.datepicker-no.js
thirdparty/jquery-ui/i18n/ui.datepicker-pl.js
thirdparty/jquery-ui/i18n/ui.datepicker-pt-BR.js
thirdparty/jquery-ui/i18n/ui.datepicker-ro.js
thirdparty/jquery-ui/i18n/ui.datepicker-ru.js
thirdparty/jquery-ui/i18n/ui.datepicker-sk.js
thirdparty/jquery-ui/i18n/ui.datepicker-sl.js
thirdparty/jquery-ui/i18n/ui.datepicker-sq.js
thirdparty/jquery-ui/i18n/ui.datepicker-sr-SR.js
thirdparty/jquery-ui/i18n/ui.datepicker-sr.js
thirdparty/jquery-ui/i18n/ui.datepicker-sv.js
thirdparty/jquery-ui/i18n/ui.datepicker-th.js
thirdparty/jquery-ui/i18n/ui.datepicker-tr.js
thirdparty/jquery-ui/i18n/ui.datepicker-uk.js
thirdparty/jquery-ui/i18n/ui.datepicker-zh-CN.js
thirdparty/jquery-ui/i18n/ui.datepicker-zh-TW.js
thirdparty/jquery/jquery.js
thirdparty/jsmin/.piston.yml
thirdparty/jsmin/jsmin.php
thirdparty/prototype/prototype.js
thirdparty/scriptaculous/dragdrop.js
thirdparty/simplepie/.piston.yml
thirdparty/spyc/.piston.yml
thirdparty/spyc/README
thirdparty/spyc/php4/spyc.php4
thirdparty/spyc/php4/test.php4
thirdparty/spyc/spyc.php
thirdparty/spyc/spyc.yaml
thirdparty/tinymce-advcode/dialog.html
thirdparty/tinymce-advcode/editor_plugin_src.js
thirdparty/tinymce-advcode/js/dialog.js
thirdparty/tinymce/langs/en.js
thirdparty/tinymce/plugins/advhr/langs/en_dlg.js
thirdparty/tinymce/plugins/advhr/rule.htm
thirdparty/tinymce/plugins/advimage/image.htm
thirdparty/tinymce/plugins/advimage/langs/en_dlg.js
thirdparty/tinymce/plugins/advlink/langs/en_dlg.js
thirdparty/tinymce/plugins/advlink/link.htm
thirdparty/tinymce/plugins/emotions/emotions.htm
thirdparty/tinymce/plugins/emotions/langs/en_dlg.js
thirdparty/tinymce/plugins/example/dialog.htm
thirdparty/tinymce/plugins/fullpage/fullpage.htm
thirdparty/tinymce/plugins/fullpage/langs/en_dlg.js
thirdparty/tinymce/plugins/fullscreen/fullscreen.htm
thirdparty/tinymce/plugins/inlinepopups/template.htm
thirdparty/tinymce/plugins/media/langs/en_dlg.js
thirdparty/tinymce/plugins/media/media.htm
thirdparty/tinymce/plugins/paste/js/pasteword.js
thirdparty/tinymce/plugins/paste/langs/en_dlg.js
thirdparty/tinymce/plugins/paste/pastetext.htm
thirdparty/tinymce/plugins/paste/pasteword.htm
thirdparty/tinymce/plugins/searchreplace/langs/en_dlg.js
thirdparty/tinymce/plugins/searchreplace/searchreplace.htm
thirdparty/tinymce/plugins/spellchecker/editor_plugin.js
thirdparty/tinymce/plugins/spellchecker/editor_plugin_src.js
thirdparty/tinymce/plugins/style/langs/en_dlg.js
thirdparty/tinymce/plugins/style/props.htm
thirdparty/tinymce/plugins/table/cell.htm
thirdparty/tinymce/plugins/table/langs/en_dlg.js
thirdparty/tinymce/plugins/table/merge_cells.htm
thirdparty/tinymce/plugins/table/row.htm
thirdparty/tinymce/plugins/table/table.htm
thirdparty/tinymce/plugins/template/langs/en_dlg.js
thirdparty/tinymce/plugins/template/template.htm
thirdparty/tinymce/plugins/xhtmlxtras/abbr.htm
thirdparty/tinymce/plugins/xhtmlxtras/acronym.htm
thirdparty/tinymce/plugins/xhtmlxtras/attributes.htm
thirdparty/tinymce/plugins/xhtmlxtras/cite.htm
thirdparty/tinymce/plugins/xhtmlxtras/del.htm
thirdparty/tinymce/plugins/xhtmlxtras/ins.htm
thirdparty/tinymce/plugins/xhtmlxtras/langs/en_dlg.js
thirdparty/tinymce/themes/advanced/about.htm
thirdparty/tinymce/themes/advanced/anchor.htm
thirdparty/tinymce/themes/advanced/charmap.htm
thirdparty/tinymce/themes/advanced/color_picker.htm
thirdparty/tinymce/themes/advanced/image.htm
thirdparty/tinymce/themes/advanced/langs/en.js
thirdparty/tinymce/themes/advanced/langs/en_dlg.js
thirdparty/tinymce/themes/advanced/link.htm
thirdparty/tinymce/themes/advanced/source_editor.htm
thirdparty/tinymce/themes/simple/langs/en.js
thirdparty/tinymce/tiny_mce.js
thirdparty/tinymce/tiny_mce_src.js
widgets/Widget.php
2011-02-14 18:47:53 +13:00
Ingo Schommer
4a5f5b9525
MINOR Cross-referencing some documentation
...
git-svn-id: svn://svn.silverstripe.com/silverstripe/open/modules/sapphire/branches/2.4@108375 467b73ca-7a2a-4603-9d3b-597d59a354a9
2011-02-02 14:19:40 +13:00
Mateusz Uzdowski
49cd1e2720
BUGFIX: the autoselection on linking sidebar for downloads did not work properly: the item would not be selected when the user clicked a link in the editor. Only numeric IDs were permitted, but the TreeDropdownField now supports other columns as IDs too, so enabled that for autoselection.
...
BUGFIX: asset search would fail - typo in request var and the sql query had unnecessarily escaped quotes
git-svn-id: svn://svn.silverstripe.com/silverstripe/open/modules/sapphire/branches/2.4@108351 467b73ca-7a2a-4603-9d3b-597d59a354a9
2011-02-02 14:19:40 +13:00
Ingo Schommer
71a9ff089d
MINOR Moved class-specific documentation from doc.silverstripe.org back into class-level PHPDoc
...
git-svn-id: svn://svn.silverstripe.com/silverstripe/open/modules/sapphire/branches/2.4@107725 467b73ca-7a2a-4603-9d3b-597d59a354a9
2011-02-02 14:19:38 +13:00