mirror of
https://github.com/silverstripe/silverstripe-framework
synced 2024-09-18 15:36:30 +02:00
91f6039eed
Conflicts: control/Director.php
42 lines
1.8 KiB
Markdown
42 lines
1.8 KiB
Markdown
# 3.1.2 (unreleased)
|
|
|
|
## Upgrading
|
|
|
|
### 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...
|
|
}
|
|
}
|
|
|
|
### Treedropdownfield showsearch defaults to true
|
|
The showSearch option of TreedropdownField is now set to true by default. This is to provide a fallback ui for when children of a tree node fail to render (due to too many children). You may set search as false when initializing a TreedropdownField, or afterwards:
|
|
|
|
:::php
|
|
$treedropdownfield->setShowSearch(false);
|
|
|
|
If your data requires a specialized search function, you may specify it within:
|
|
|
|
:::php
|
|
$treedropdownfield->setSearchFunction(); |