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
Since we can't influence the setting of configuration values,
we also can't set/unset the 'custom_theme' value based on which
theme is set. This means the 'custom_theme' value goes stale,
and we can't rely on it e.g. in FilesystemPublisher.
The 'theme_enabled' toggle is a cleaner solution to the same problem,
since the 'custom_theme' was really just a way to remember the original
theme, while still disabling it. The toggle makes this more explicit,
but also requires users of the 'theme' setting to check for it.
- Renamed $minNodeCount to more accurate $nodeCountThreshold
- The $minNodeCount attribute wasn't properly respected
during actual querying, so SilverStripe would always traverse
the entire tree (and load all objects into memory),
before then marking nodes as "unexpanded", which prevents
them from actually being rendered.
- Fixes nodes on search results to be expanded by default
- Fixes nodes on search results to correctly ajax-expand
Necessary to switch from tree view to list view programmatically,
which reloads the whole tabset and needs to enable the "list" tab.
Used for the new "Show list as children" functionality in the cms.
Fixed what I believe to be a few very minor CSS regressions, that appeared after the CSS restructure for the side-by-side preview.
- Reverted background of the right panel (and tab active state) to the slightly darker shade (as per 3.0) to keep each of the 3 panels visually separate.
- Slightly increased padding on ui-tabs-panel as felt a but too close for comfort. Had decreased since 3.0.
- Decreased padding for logged in user name in menu, felt too excessive. (3.0 was neater)
- Evened out padding above buttons in site tree sidebar
Screenshots showing changes:
3.0: http://spdr.me/xauh
3.1 before commit: http://spdr.me/jkIe
3.1 after commit: http://spdr.me/IxtB
This removes the need for a lot of boilerplate code
around DataObject->write() logic, and avoids generic 500 errors
on user-level failures. This should really be a per-project choice,
but at the moment request handling doesn't allow to configure
custom exception handling.
changed $ to jQuery, because without it the system would generate the following error:
Uncaught TypeError: Property '$' of object [object Window] is not a function
changed $ to jQuery, because without it the system would generate the following error:
Uncaught TypeError: Property '$' of object [object Window] is not a function
RequestHandler#handleAction now exists. It takes the request, and
the action to call on itself. All calls from handleRequest to call an action
will go through this method
Controller#handleAction has had it's signature changed to
match new RequestHandler#handleAction
RequestHandler#findAction has been added, which extracts the
"match URL to rules to find action" portion of RequestHandler#handleRequest
into a separate, overrideable function
GridField#handleAction has beeen renamed to handleAlterAction and
CMSBatchActionHandler#handleAction has been renamed to handleBatchAction to
avoid name clash with new RequestHandler#handleAction
Reason for change: The exact behaviour of request handling depended heavily
on whether you inherited from RequestHandler or Controller, and whether the
rule extracted it's action directly (like "foo/$ID" => 'foo') or dynamically
(like "$Action/$ID" => "handleAction"). This cleans up behaviour so
all calls follow the same path through handleRequest and handleAction, and
the additional behaviour that Controller adds is clear.
Bug was most prominent after page publication,
which triggers a node reload. It iterated through
all node attributes to assign them to the existing node,
which apparently includes some non-scalar attributes
that can't simply be copied in IE.
On some browsers Batchactions block looked OK, but on others (e.t. Opera on Linux) every element in Batchactions block had different height.
The height of these elements was related to font size which is a little bit different on every OS'es and browsers.
See https://github.com/silverstripe/sapphire/pull/1132
Changed "Clear Database before import" - which is incorrect (not the whole database gets wiped, only the data in the model at hand) with the simpler: "replace data".
Moved "edit tree" button into same DOM structure so
we can layout them more easily through inline-block.
Conflicts:
admin/css/screen.css
admin/scss/_style.scss
This was a regression made visible by the recent change to
enforce dimensions on this overlay, which in turn visualizes
the blocked/unblocked states of the preview (see fc6d6ffad)
Partially reverts "fixes" from 411673ed. This re-introduces the arrow on the main tree node in the CMS ("Your site name"), but that's less important than being able to navigate tree hierarchies in the first place in TreeDropdownField.
In certain cases, the button may not yet be initialized or may no longer have button properties at the time of removal from the DOM. Without this check, an uncaught exception is thrown.
The onclick event for LeftAndMain menu links didn't check if the click
was left or right, meaning that right click events could trigger the
function for loading split view mode in some browser/os combinations.
Also removing the 'changed' class from the form once
no further fields are marked as changed. That's important
now that we're surfacing the state much more visibly
through the alternative "save" button styles in the CMS.
Title in CMS is set using header X-Title. But UTF-8 characters can't be used in HTTP headers. So the title should be encoded just before sending X-Title header and decoded before setting HTML document title (fixes#7942).
Specifically, the change removed the "add page" panel padding,
because it moved padding from .cms-panel-padded into
commonly contained elements, like .ui-tabs-panel.
Apart from breaking layouts, it makes the class meaningless,
since its only padded depending on which elements it contains.
In order to rectify some introduced inconsistencies,
much too complex were required, e.g.
.ui-tabs .cms-edit-form, .ui-tabs .cms-content-fields {...}.
Was originally added for CMS grouped actions,
but can't see any effect. Probably related to the unreleased
changes around the new "batch actions" and "add page" panel styling.
It breaks button height in the top toolbar, by shifting from jQuery
UI's (well tested) mode of applying padding to the container,
to applying padding to the contained text instead. This
conflicts with the line-height set on many buttons.
The new 'liszt:ready' handler is called late enough to trigger the
update, whereas the redraw is called to early for IE8 to pick up the
class change. The class property is changed correcly though, it looks
like an IE8 rendering issue.
http://open.silverstripe.org/ticket/8095
Move onresize handler from entwine to regular event for IE8. The
fromWindow::onresize does not trigger otherwise.
Refer to http://open.silverstripe.org/ticket/8095
Introduces the concept of action tabsets - usage of TabSet and Tabs
in between the action buttons to allow richer set of capabilities that
can be offered to the user.
Goes along with c8d0cdec99c95dbed3b58ebcc098cc9d22c58206 that implements
a change to the CMS actions.
Backport from master. Fixes display issues with expanded,
unselected submenus ... by removing them.
They're strictly not necessary since both "list" and "add"
modes can be reached through the default AssetAdmin UI.
Add extra preview-mode selector to the CMS actions so we can show
something when the preview is closed (and with it all options are not
visible).
Thanks @mateusz, @clarkepaul and @robert-h-curry for contributing.
It is now possible to change the threeColumnLayout width options for the
columns via entwine property LayoutOptions and accessor methods.
Thanks @robert-h-curry, @clarkepaul for contributing!
Remove .layout() calls on redraw. It's unnessecary and means layout
actually gets triggered multiple times, making resizing very slow.
This was a hack to fix the positioning of ajax-replaced elements.
The problem is jLayout does not track replaced elements. We have
to trigger layout algorithm manually on the parents of the replaced DOM
so it can update internal structures and do the re-layout.
Relayouting only needed 3 levels down.
Introduces a preview window that appears when the screen is wide enough,
removes old preview button, adds a draft-public switch, adds variety of
preview options which are not hooked up yet.
Goes along with cms commit fa3738a9f4c5181eabf18a77ca89792d31592250
Broken by jQuery UI ajax behaviour in tabs, which compares
URLs to determine if the tab needs to be loaded via ajax.
This was always a brittle solution, and now broke alongside
our upgrade to jQuery UI 1.9 (specifically, with 2657a275).
The ajax behaviour is now globally disabled in favour of
having '.cms-panel-link' behaviour on the tabs, which
was already in place.
Check for presence of href in _a_ tags before trying to .match them to
prevent null pointer errors.
Some external JS libs (eg tag-it) use <ul><a> structures which get matched
and break
(fixes regression introduced by ff39f9ad38)
Reusable feature for making CMS buttons that respond to the current
contextual state with an appearance change.
Provides capability to specify initial state, alternate icon and
alternate text via data attributes or options (PHP or JS), and to hook
up into events triggered when the state is alternating.
This is used by the follow-up cms action buttons cleanup work.