mirror of
https://github.com/silverstripe/silverstripe-framework
synced 2024-10-22 14:05:37 +02:00
59efd280ad
Standardise template locations Move CMSSettingsController class to SiteConfig module Fix CMSMenu behaviour for namespaced admin sections Split classes into one per file Manual fixes and cleanup
166 lines
3.3 KiB
PHP
166 lines
3.3 KiB
PHP
<?php
|
|
/**
|
|
* Created by PhpStorm.
|
|
* User: dmooyman
|
|
* Date: 12/08/16
|
|
* Time: 12:15 PM
|
|
*/
|
|
namespace SilverStripe\Admin;
|
|
|
|
use ViewableData;
|
|
|
|
/**
|
|
* Wrapper around objects being displayed in a tree.
|
|
* Caution: Volatile API.
|
|
*
|
|
* @todo Implement recursive tree node rendering.
|
|
*
|
|
* @package framework
|
|
* @subpackage admin
|
|
*/
|
|
class LeftAndMain_TreeNode extends ViewableData
|
|
{
|
|
|
|
/**
|
|
* Object represented by this node
|
|
*
|
|
* @var Object
|
|
*/
|
|
protected $obj;
|
|
|
|
/**
|
|
* Edit link to the current record in the CMS
|
|
*
|
|
* @var string
|
|
*/
|
|
protected $link;
|
|
|
|
/**
|
|
* True if this is the currently selected node in the tree
|
|
*
|
|
* @var bool
|
|
*/
|
|
protected $isCurrent;
|
|
|
|
/**
|
|
* Name of method to count the number of children
|
|
*
|
|
* @var string
|
|
*/
|
|
protected $numChildrenMethod;
|
|
|
|
|
|
/**
|
|
*
|
|
* @var LeftAndMain_SearchFilter
|
|
*/
|
|
protected $filter;
|
|
|
|
/**
|
|
* @param Object $obj
|
|
* @param string $link
|
|
* @param bool $isCurrent
|
|
* @param string $numChildrenMethod
|
|
* @param LeftAndMain_SearchFilter $filter
|
|
*/
|
|
public function __construct(
|
|
$obj,
|
|
$link = null,
|
|
$isCurrent = false,
|
|
$numChildrenMethod = 'numChildren',
|
|
$filter = null
|
|
) {
|
|
parent::__construct();
|
|
$this->obj = $obj;
|
|
$this->link = $link;
|
|
$this->isCurrent = $isCurrent;
|
|
$this->numChildrenMethod = $numChildrenMethod;
|
|
$this->filter = $filter;
|
|
}
|
|
|
|
/**
|
|
* Returns template, for further processing by {@link Hierarchy->getChildrenAsUL()}.
|
|
* Does not include closing tag to allow this method to inject its own children.
|
|
*
|
|
* @todo Remove hardcoded assumptions around returning an <li>, by implementing recursive tree node rendering
|
|
*
|
|
* @return String
|
|
*/
|
|
public function forTemplate()
|
|
{
|
|
$obj = $this->obj;
|
|
return "<li id=\"record-$obj->ID\" data-id=\"$obj->ID\" data-pagetype=\"$obj->ClassName\" class=\""
|
|
. $this->getClasses() . "\">" . "<ins class=\"jstree-icon\"> </ins>"
|
|
. "<a href=\"" . $this->getLink() . "\" title=\"("
|
|
. trim(_t('LeftAndMain.PAGETYPE', 'Page type'), " :") // account for inconsistencies in translations
|
|
. ": " . $obj->i18n_singular_name() . ") $obj->Title\" ><ins class=\"jstree-icon\"> </ins><span class=\"text\">" . ($obj->TreeTitle)
|
|
. "</span></a>";
|
|
}
|
|
|
|
/**
|
|
* Determine the CSS classes to apply to this node
|
|
*
|
|
* @return string
|
|
*/
|
|
public function getClasses()
|
|
{
|
|
// Get classes from object
|
|
$classes = $this->obj->CMSTreeClasses($this->numChildrenMethod);
|
|
if ($this->isCurrent) {
|
|
$classes .= ' current';
|
|
}
|
|
// Get status flag classes
|
|
$flags = $this->obj->hasMethod('getStatusFlags')
|
|
? $this->obj->getStatusFlags()
|
|
: false;
|
|
if ($flags) {
|
|
$statuses = array_keys($flags);
|
|
foreach ($statuses as $s) {
|
|
$classes .= ' status-' . $s;
|
|
}
|
|
}
|
|
// Get additional filter classes
|
|
if ($this->filter && ($filterClasses = $this->filter->getPageClasses($this->obj))) {
|
|
if (is_array($filterClasses)) {
|
|
$filterClasses = implode(' ' . $filterClasses);
|
|
}
|
|
$classes .= ' ' . $filterClasses;
|
|
}
|
|
return $classes;
|
|
}
|
|
|
|
public function getObj()
|
|
{
|
|
return $this->obj;
|
|
}
|
|
|
|
public function setObj($obj)
|
|
{
|
|
$this->obj = $obj;
|
|
return $this;
|
|
}
|
|
|
|
public function getLink()
|
|
{
|
|
return $this->link;
|
|
}
|
|
|
|
public function setLink($link)
|
|
{
|
|
$this->link = $link;
|
|
return $this;
|
|
}
|
|
|
|
public function getIsCurrent()
|
|
{
|
|
return $this->isCurrent;
|
|
}
|
|
|
|
public function setIsCurrent($bool)
|
|
{
|
|
$this->isCurrent = $bool;
|
|
return $this;
|
|
}
|
|
|
|
}
|