diff --git a/modules/backend/traits/CollapsableWidget.php b/modules/backend/traits/CollapsableWidget.php index f163e5827..3fd907869 100644 --- a/modules/backend/traits/CollapsableWidget.php +++ b/modules/backend/traits/CollapsableWidget.php @@ -1,7 +1,5 @@ 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); + } } diff --git a/modules/cms/widgets/AssetList.php b/modules/cms/widgets/AssetList.php index 3eb048dab..201968324 100644 --- a/modules/cms/widgets/AssetList.php +++ b/modules/cms/widgets/AssetList.php @@ -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() { diff --git a/modules/cms/widgets/TemplateList.php b/modules/cms/widgets/TemplateList.php index 035194190..a18df610e 100644 --- a/modules/cms/widgets/TemplateList.php +++ b/modules/cms/widgets/TemplateList.php @@ -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); diff --git a/modules/cms/widgets/componentlist/partials/_components.htm b/modules/cms/widgets/componentlist/partials/_components.htm index bcdbcc068..cf7a601c2 100644 --- a/modules/cms/widgets/componentlist/partials/_components.htm +++ b/modules/cms/widgets/componentlist/partials/_components.htm @@ -1,6 +1,10 @@