Rename methods in CollapsableWidget
The methods were far too generic. When a trait or behavior is used, it's usually a good include to include the name of the trait in the methods and properties it provides. This reduces the chance of a conflict with the implementing class.
This commit is contained in:
parent
f020479b91
commit
a2a7eec4f5
|
|
@ -1,7 +1,5 @@
|
|||
<?php namespace Backend\Traits;
|
||||
|
||||
use Input;
|
||||
|
||||
/**
|
||||
* Collapsable Widget Trait
|
||||
* Adds collapse/expand item features to back-end widgets
|
||||
|
|
@ -12,42 +10,120 @@ use Input;
|
|||
|
||||
trait CollapsableWidget
|
||||
{
|
||||
protected $groupStatusCache = false;
|
||||
/**
|
||||
* @var string The key name to use when storing collapsed states in the session.
|
||||
*/
|
||||
public $collapseSessionKey = 'groups';
|
||||
|
||||
public function onGroupStatusUpdate()
|
||||
/**
|
||||
* @var array|false Memory cache of collapsed states.
|
||||
*/
|
||||
protected $collapseGroupStatusCache = false;
|
||||
|
||||
/**
|
||||
* AJAX handler to toggle a collapsed state. This should take two post variables:
|
||||
* - group: The collapsible group name
|
||||
* - status: The state of the group. Usually a 1 or a 0.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function onSetCollapseStatus()
|
||||
{
|
||||
$this->setGroupStatus(Input::get('group'), Input::get('status'));
|
||||
$this->setCollapseStatus(post('group'), post('status'));
|
||||
}
|
||||
|
||||
protected function getGroupStatuses()
|
||||
/**
|
||||
* Returns the array of all collapsed states belonging to this widget.
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
protected function getCollapseStatuses()
|
||||
{
|
||||
if ($this->groupStatusCache !== false) {
|
||||
return $this->groupStatusCache;
|
||||
if ($this->collapseGroupStatusCache !== false) {
|
||||
return $this->collapseGroupStatusCache;
|
||||
}
|
||||
|
||||
$groups = $this->getSession('groups', []);
|
||||
$groups = $this->getSession($this->collapseSessionKey, []);
|
||||
|
||||
if (!is_array($groups)) {
|
||||
return $this->groupStatusCache = [];
|
||||
return $this->collapseGroupStatusCache = [];
|
||||
}
|
||||
|
||||
return $this->groupStatusCache = $groups;
|
||||
return $this->collapseGroupStatusCache = $groups;
|
||||
}
|
||||
|
||||
protected function setGroupStatus($group, $status)
|
||||
/**
|
||||
* Sets a collapsed state.
|
||||
*
|
||||
* @param string $group
|
||||
* @param string $status
|
||||
*/
|
||||
protected function setCollapseStatus($group, $status)
|
||||
{
|
||||
$statuses = $this->getGroupStatuses();
|
||||
$statuses = $this->getCollapseStatuses();
|
||||
|
||||
$statuses[$group] = $status;
|
||||
$this->groupStatusCache = $statuses;
|
||||
$this->putSession('groups', $statuses);
|
||||
|
||||
$this->collapseGroupStatusCache = $statuses;
|
||||
|
||||
$this->putSession($this->collapseSessionKey, $statuses);
|
||||
}
|
||||
|
||||
protected function getGroupStatus($group, $default = true)
|
||||
/**
|
||||
* Gets a collapsed state.
|
||||
*
|
||||
* @param string $group
|
||||
* @param bool $default
|
||||
* @return bool|string
|
||||
*/
|
||||
protected function getCollapseStatus($group, $default = true)
|
||||
{
|
||||
$statuses = $this->getGroupStatuses();
|
||||
$statuses = $this->getCollapseStatuses();
|
||||
|
||||
if (array_key_exists($group, $statuses)) {
|
||||
return $statuses[$group];
|
||||
}
|
||||
|
||||
return $default;
|
||||
}
|
||||
|
||||
//
|
||||
// Deprecations, remove if year >= 2019
|
||||
//
|
||||
|
||||
/**
|
||||
* @deprecated onGroupStatusUpdate is deprecated. Please update onSetCollapseStatus instead.
|
||||
*/
|
||||
public function onGroupStatusUpdate()
|
||||
{
|
||||
traceLog('onGroupStatusUpdate is deprecated. Please update onSetCollapseStatus instead. Class: '.get_class($this));
|
||||
$this->onSetCollapseStatus();
|
||||
}
|
||||
|
||||
/**
|
||||
* @deprecated - getGroupStatuses is deprecated. Please update getCollapseStatuses instead.
|
||||
*/
|
||||
protected function getGroupStatuses()
|
||||
{
|
||||
traceLog('getGroupStatuses is deprecated. Please update getCollapseStatuses instead. Class: '.get_class($this));
|
||||
return $this->getCollapseStatuses();
|
||||
}
|
||||
|
||||
/**
|
||||
* @deprecated - setGroupStatus is deprecated. Please update setCollapseStatus instead.
|
||||
*/
|
||||
protected function setGroupStatus($group, $status)
|
||||
{
|
||||
traceLog('setGroupStatus is deprecated. Please update setCollapseStatus instead. Class: '.get_class($this));
|
||||
return $this->setCollapseStatus($group, $status);
|
||||
}
|
||||
|
||||
/**
|
||||
* @deprecated - getGroupStatus is deprecated. Please update getCollapseStatus instead.
|
||||
*/
|
||||
protected function getGroupStatus($group, $default = true)
|
||||
{
|
||||
traceLog('getGroupStatus is deprecated. Please update getCollapseStatus instead. Class: '.get_class($this));
|
||||
return $this->getCollapseStatus($group, $default);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -37,8 +37,6 @@ class AssetList extends WidgetBase
|
|||
|
||||
protected $theme;
|
||||
|
||||
protected $groupStatusCache = false;
|
||||
|
||||
/**
|
||||
* @var string Message to display when there are no records in the list.
|
||||
*/
|
||||
|
|
@ -87,14 +85,9 @@ class AssetList extends WidgetBase
|
|||
]);
|
||||
}
|
||||
|
||||
/*
|
||||
* Event handlers
|
||||
*/
|
||||
|
||||
public function onGroupStatusUpdate()
|
||||
{
|
||||
$this->setGroupStatus(Input::get('group'), Input::get('status'));
|
||||
}
|
||||
//
|
||||
// Event handlers
|
||||
//
|
||||
|
||||
public function onOpenDirectory()
|
||||
{
|
||||
|
|
|
|||
|
|
@ -20,6 +20,7 @@ class TemplateList extends WidgetBase
|
|||
const SORTING_FILENAME = 'fileName';
|
||||
|
||||
use \Backend\Traits\SelectableWidget;
|
||||
use \Backend\Traits\CollapsableWidget;
|
||||
|
||||
protected $searchTerm = false;
|
||||
|
||||
|
|
@ -27,8 +28,6 @@ class TemplateList extends WidgetBase
|
|||
|
||||
protected $theme;
|
||||
|
||||
protected $groupStatusCache = false;
|
||||
|
||||
/**
|
||||
* @var string object property to use as a title.
|
||||
*/
|
||||
|
|
@ -87,6 +86,7 @@ class TemplateList extends WidgetBase
|
|||
$this->dataSource = $dataSource;
|
||||
$this->theme = Theme::getEditTheme();
|
||||
$this->selectionInputName = 'template';
|
||||
$this->collapseSessionKey = $this->getThemeSessionKey('groups');
|
||||
|
||||
parent::__construct($controller, []);
|
||||
|
||||
|
|
@ -133,11 +133,6 @@ class TemplateList extends WidgetBase
|
|||
return $this->updateList();
|
||||
}
|
||||
|
||||
public function onGroupStatusUpdate()
|
||||
{
|
||||
$this->setGroupStatus(Input::get('group'), Input::get('status'));
|
||||
}
|
||||
|
||||
public function onUpdate()
|
||||
{
|
||||
$this->extendSelection();
|
||||
|
|
@ -400,43 +395,11 @@ class TemplateList extends WidgetBase
|
|||
return false;
|
||||
}
|
||||
|
||||
protected function getGroupStatus($group)
|
||||
{
|
||||
$statuses = $this->getGroupStatuses();
|
||||
if (array_key_exists($group, $statuses)) {
|
||||
return $statuses[$group];
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
protected function getThemeSessionKey($prefix)
|
||||
{
|
||||
return $prefix.$this->theme->getDirName();
|
||||
}
|
||||
|
||||
protected function getGroupStatuses()
|
||||
{
|
||||
if ($this->groupStatusCache !== false) {
|
||||
return $this->groupStatusCache;
|
||||
}
|
||||
|
||||
$groups = $this->getSession($this->getThemeSessionKey('groups'), []);
|
||||
if (!is_array($groups)) {
|
||||
return $this->groupStatusCache = [];
|
||||
}
|
||||
|
||||
return $this->groupStatusCache = $groups;
|
||||
}
|
||||
|
||||
protected function setGroupStatus($group, $status)
|
||||
{
|
||||
$statuses = $this->getGroupStatuses();
|
||||
$statuses[$group] = $status;
|
||||
$this->groupStatusCache = $statuses;
|
||||
$this->putSession($this->getThemeSessionKey('groups'), $statuses);
|
||||
}
|
||||
|
||||
protected function getSortingProperty()
|
||||
{
|
||||
$property = $this->getSession($this->getThemeSessionKey('sorting_property'), self::SORTING_FILENAME);
|
||||
|
|
|
|||
|
|
@ -1,6 +1,10 @@
|
|||
<div class="layout-absolute">
|
||||
<div class="control-scrollbar" data-control="scrollbar">
|
||||
<div class="control-filelist component-list" data-control="filelist" data-group-status-handler="<?= $this->getEventHandler('onGroupStatusUpdate') ?>" id="<?= $this->getId('component-list') ?>">
|
||||
<div
|
||||
class="control-filelist component-list"
|
||||
data-control="filelist"
|
||||
data-group-status-handler="<?= $this->getEventHandler('onSetCollapseStatus') ?>"
|
||||
id="<?= $this->getId('component-list') ?>">
|
||||
<?= $this->makePartial('items', ['items'=>$data]) ?>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
<?php if ($items): ?>
|
||||
<ul>
|
||||
<?php foreach ($items as $item): ?>
|
||||
<li class="group" data-status="<?= $this->getGroupStatus($item->pluginClass, false) ? 'expanded' : 'collapsed' ?>" data-group-id="<?= e($item->pluginClass) ?>">
|
||||
<li class="group" data-status="<?= $this->getCollapseStatus($item->pluginClass, false) ? 'expanded' : 'collapsed' ?>" data-group-id="<?= e($item->pluginClass) ?>">
|
||||
<div class="group">
|
||||
<h4><a href="#"><?= e(trans($item->title)) ?></a></h4>
|
||||
<i class="<?= $item->icon ?>"></i>
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@
|
|||
<?php foreach ($items as $item): ?>
|
||||
<?php if (property_exists($item, 'items')): ?>
|
||||
<?php if ($item->items): ?>
|
||||
<li class="group" data-status="<?= $this->getGroupStatus($item->title) ? 'expanded' : 'collapsed' ?>">
|
||||
<li class="group" data-status="<?= $this->getCollapseStatus($item->title) ? 'expanded' : 'collapsed' ?>">
|
||||
<h4><a href="javascript:;"><?= e($item->title) ?></a></h4>
|
||||
<?= $this->makePartial('items', ['items'=>$item->items, 'nested'=>true]) ?>
|
||||
</li>
|
||||
|
|
|
|||
|
|
@ -1,6 +1,10 @@
|
|||
<div class="layout-absolute">
|
||||
<div class="control-scrollbar" data-control="scrollbar">
|
||||
<div class="control-filelist <?= $this->controlClass ?>" data-control="filelist" data-group-status-handler="<?= $this->getEventHandler('onGroupStatusUpdate') ?>" id="<?= $this->getId('template-list') ?>">
|
||||
<div
|
||||
class="control-filelist <?= $this->controlClass ?>"
|
||||
data-control="filelist"
|
||||
data-group-status-handler="<?= $this->getEventHandler('onSetCollapseStatus') ?>"
|
||||
id="<?= $this->getId('template-list') ?>">
|
||||
<?= $this->makePartial('items', ['items' => $data]) ?>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
|||
Loading…
Reference in New Issue