- Content filters included in SiteTree view
- View (tree/list) buttons included in SiteTree view
- Update view button styles for new layout
- Updated breadcrumbs for new layout
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.
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
Both IE 9 & 10 generate a "SCRIPT70: Permission denied" when looping through the parents in the CMS. This happens after data has been edited in a UploadField iframe (eg: submitted Title change), followed by a click on any SiteTree link.
If applying custom Upload_Validator rules, uploads will fail POST with
a 403 to UploadField/upload as the upload was rejected, but UploadField
still shows that the upload was successful.
jqXHRorError returns either an error string, e.g. "Forbidden" or an
object. If it's a string, ensure that the upload summary shows an
error message. If it's an object and has a status of 200, show the
success message.
1. Add missing _super calls.
2. Make UI widget destroys more consistent to avoid exceptions.
Selectable would throw an exception in the GridField.js if destroy
called from onunmatch - at that stage jQuery UI would have had called
the destroy already. Add a guard, and change to onremove, which triggers
before the element is removed from DOM.
3. DOM traversal fails after the element is removed from DOM.
Onunmatch triggers after the removal of the element from the DOM, which
makes DOM traversal fail. Use onremove instead, which triggers while the
element is still in DOM.
To reproduce:
1. Using IE9, go to demo.silverstripe.com
2. login
3. go to Pages
4. switch to listview
5. expand pages to get to one with pagination (e.g. Pages > Features > Listview)
6. go to next page
Expected: you go to the next page
Actual: it jumps you back to the home page
Fix: this fix passes parameters stored in the hash part of the url, which IE9 and below rely on for PJAX.
To reproduce:
1. Using IE9, go to demo.silverstripe.com
2. login
3. go to Pages
4. switch to listview
5. expand pages to get to one with pagination (e.g. Pages > Features > Listview)
6. go to next page
Expected: you go to the next page
Actual: it jumps you back to the home page
Fix: this fix passes parameters stored in the hash part of the url, which IE9 and below rely on for PJAX.
This is legacy behaviour which does not often reflect the expected behaviour of the current editor. indent and outdent can (in some situations) prefer to use margin instead of padding. sapphiremce_cleanup faultily assumes that such indented text should be block quoted, and replaces this with a block quote element. This is not necessary, since the blockquote element can be placed explicitly by the user when necessary.
To replicate the incorrect indentation behaviour, configure tinymce to use the 'lists' plugin (via admin/_config.php) and attempt to indent some text. Indented text will be unexpectedly replaced with blockquotes.
Also addresses issue #1439.
I don’t like the binding iframe.on('load') events in the onclick handler, but apparently Entwine doesn't support binding on iframes.
AssetAdmin and HtmlEditorField support added
When looking for a translation, the fallback solution (CurrentLocale -> defaultLocale -> fallbackString) does not work for cms/javascript/CMSMain.Tree.js as localization for this part was changed to short locale names (e.g. de_DE -> de). (Don't know why...)
The original fallback solution will not find a translation for e.g. "Tree.ShowAsList" in the de-language file. For this entry there is also no fallbackString defined, so the menu in the CMS (right click on a page) is broken for each language that does not have the translation included.
I added another fallback level where the short version of the default language (en_US -> us) is searched before falling back to the fallbackstring and then finally giving up...
The "ID" form field is not always defined,
for example in the "Replace" tab of the "versionedfiles" module
(which uses GridFieldDetailForm). Since the path to that
detail form relies on the "ID" in AssetAdmin->currentPageID(),
and does an is_numeric() check to support the "root" folder,
we need to leave the "ID" param out completely.
Checked this without versionedfiles module in admin/assets
as well as a custom UploadField in CMSMain.
The detection is triggered on first load, and in IE8 the
inserted value doesn't equal the value already in the textarea field.
That's possibly due to whitespace or encoding differences,
but they have the same character length.
Tried fixing this by whitespace removal, didn't work:
if((original || '').replace(/[\s\t\n\r]/g, '') != (value || '').replace(/[\s\t\n\r]/g, '')) {
In the end, we're already detecting changes through a 5s interval
triggering the save() method on the editor if the field is focused.
The impact of this removal is that after inserting an image,
it'll take a few seconds for the change detection to kick in
(and thus highlight the "save" button and ask for confirmation
when navigating away without saving).
See d12ae82f70 for context.
Added trim() to decodePath function. Headers X-Include-* comes with a
space so some files are loaded twice. Looks like that depends on a
webserver. nginx has the space.
The files are uploaded to transifex.com now, which means we needed
to consolidate the file names (= locales). Since Transifex doesn't allow
arbitrary JavaScript structures, we're using an intermediary JSON
format which gets transformed into the JS used by the framework.
See b59f3858af for generator logic.
Fixes https://github.com/silverstripe/silverstripe-framework/issues/2499
Also fixed UploadField operation with canUpload=false,
which broke the JS because no config could be found,
since the <input> field wasn't present. We can't put the data-config
attribute on the field holder, since fields can be rendered
without their field holder through FormField->SmalLFieldHolder().
Fixes https://github.com/silverstripe/silverstripe-cms/issues/874