CMSSiteTreeFilter
abstract class CMSSiteTreeFilter implements LeftAndMain_SearchFilter (View source)
Base class for filtering the subtree for certain node statuses.
The simplest way of building a CMSSiteTreeFilter is to create a pagesToBeShown() method that returns an Iterator of maps, each entry containing the 'ID' and 'ParentID' of the pages to be included in the tree. The result of a DB::query() can then be returned directly.
If you wish to make a more complex tree, you can overload includeInTree($page) to return true/ false depending on whether the given page should be included. Note that you will need to include parent helper pages yourself.
Traits
A class that can be instantiated or replaced via DI
Properties
protected | array | $params | Search parameters, mostly properties on SiteTree. |
|
protected | array | $_cache_ids | List of filtered items and all their parents |
|
protected | array | $_cache_highlight_ids | Subset of $_cache_ids which include only items that appear directly in search results. |
|
protected | array | $_cache_expanded | ||
protected | string | $childrenMethod | ||
protected | string | $numChildrenMethod |
Methods
An implementation of the factory method, allows you to create an instance of a class
Creates a class instance by the "singleton" design pattern.
Returns a sorted array of all implementators of CMSSiteTreeFilter, suitable for use in a dropdown.
Method on Hierarchy objects which is used to traverse into children relationships.
Method on Hierarchy objects which is used find the number of children for a parent page
Given a page, determine any additional CSS classes to apply to the tree node
Populate the IDs of the pages returned by pagesIncluded(), also including the necessary parent helper pages.
Details
static Injectable
create(mixed ...$args)
An implementation of the factory method, allows you to create an instance of a class
This method will defer class substitution to the Injector API, which can be customised via the Config API to declare substitution classes.
This can be called in one of two ways - either calling via the class directly, or calling on Object and passing the class name as the first parameter. The following are equivalent: $list = DataList::create(SiteTree::class); $list = SiteTree::get();
static Injectable
singleton(string $class = null)
Creates a class instance by the "singleton" design pattern.
It will always return the same instance for this class, which can be used for performance reasons and as a simple way to access instance methods which don't rely on instance data (e.g. the custom SilverStripe static handling).
static array
get_all_filters()
Returns a sorted array of all implementators of CMSSiteTreeFilter, suitable for use in a dropdown.
__construct($params = null)
No description
string
getChildrenMethod()
Method on Hierarchy objects which is used to traverse into children relationships.
string
getNumChildrenMethod()
Method on Hierarchy objects which is used find the number of children for a parent page
array|string
getPageClasses(DataObject $page)
Given a page, determine any additional CSS classes to apply to the tree node
abstract SS_List
getFilteredPages()
Gets the list of filtered pages
array
pagesIncluded()
No description
protected
populateIDs()
Populate the IDs of the pages returned by pagesIncluded(), also including the necessary parent helper pages.
bool
isPageIncluded(DataObject $page)
Returns TRUE if the given page should be included in the tree.
Caution: Does NOT check view permissions on the page.
protected DataList
applyDefaultFilters(DataList $query)
Applies the default filters to a specified DataList of pages
protected array
mapIDs(SS_List $pages)
Maps a list of pages to an array of associative arrays with ID and ParentID keys