From 57b10704ce72c1917416765763c272f850166418 Mon Sep 17 00:00:00 2001 From: Samuel Georges Date: Sat, 29 Oct 2016 14:10:21 +1100 Subject: [PATCH] Support for overriding list views For consistency, entry partial for controller behaviors should be called "container" Added addViewPath() method to ViewMaker Remove "fa" from icon docs (not necessary) Fixes #2439 --- .../behaviors/ImportExportController.php | 4 +-- modules/backend/behaviors/ListController.php | 29 ++++++++++++------- .../{_export.htm => _container_export.htm} | 2 +- .../{_import.htm => _container_import.htm} | 2 +- .../listcontroller/partials/_container.htm | 9 ++++++ .../listcontroller/partials/_list.htm | 24 --------------- modules/backend/widgets/Lists.php | 10 +++++++ modules/system/assets/ui/docs/icon.md | 10 +++---- modules/system/traits/ViewMaker.php | 11 +++++++ 9 files changed, 57 insertions(+), 44 deletions(-) rename modules/backend/behaviors/importexportcontroller/partials/{_export.htm => _container_export.htm} (96%) rename modules/backend/behaviors/importexportcontroller/partials/{_import.htm => _container_import.htm} (96%) create mode 100644 modules/backend/behaviors/listcontroller/partials/_container.htm delete mode 100644 modules/backend/behaviors/listcontroller/partials/_list.htm diff --git a/modules/backend/behaviors/ImportExportController.php b/modules/backend/behaviors/ImportExportController.php index deca4f24e..4cf14c3a1 100644 --- a/modules/backend/behaviors/ImportExportController.php +++ b/modules/backend/behaviors/ImportExportController.php @@ -273,7 +273,7 @@ class ImportExportController extends ControllerBehavior public function importRender() { - return $this->importExportMakePartial('import'); + return $this->importExportMakePartial('container_import'); } public function importGetModel() @@ -456,7 +456,7 @@ class ImportExportController extends ControllerBehavior public function exportRender() { - return $this->importExportMakePartial('export'); + return $this->importExportMakePartial('container_export'); } public function exportGetModel() diff --git a/modules/backend/behaviors/ListController.php b/modules/backend/behaviors/ListController.php index 400cd6039..8f84b76fb 100644 --- a/modules/backend/behaviors/ListController.php +++ b/modules/backend/behaviors/ListController.php @@ -137,6 +137,7 @@ class ListController extends ControllerBehavior 'showCheckboxes', 'showTree', 'treeExpanded', + 'customViewPath', ]; foreach ($configFieldsToTransfer as $field) { @@ -342,18 +343,8 @@ class ListController extends ControllerBehavior 'toolbar' => null, 'filter' => null, 'list' => null, - 'topPartial' => null, - 'sidePartial' => null ]; - if (isset($listConfig->topPartial)) { - $vars['topPartial'] = $listConfig->topPartial; - } - - if (isset($listConfig->sidePartial)) { - $vars['sidePartial'] = $listConfig->sidePartial; - } - if (isset($this->toolbarWidgets[$definition])) { $vars['toolbar'] = $this->toolbarWidgets[$definition]; } @@ -364,7 +355,23 @@ class ListController extends ControllerBehavior $vars['list'] = $this->listWidgets[$definition]; - return $this->makePartial('list', $vars); + return $this->listMakePartial('container', $vars); + } + + /** + * Controller accessor for making partials within this behavior. + * @param string $partial + * @param array $params + * @return string Partial contents + */ + public function listMakePartial($partial, $params = []) + { + $contents = $this->controller->makePartial('list_'.$partial, $params + $this->vars, false); + if (!$contents) { + $contents = $this->makePartial($partial, $params); + } + + return $contents; } /** diff --git a/modules/backend/behaviors/importexportcontroller/partials/_export.htm b/modules/backend/behaviors/importexportcontroller/partials/_container_export.htm similarity index 96% rename from modules/backend/behaviors/importexportcontroller/partials/_export.htm rename to modules/backend/behaviors/importexportcontroller/partials/_container_export.htm index 298e690e0..f7042e059 100644 --- a/modules/backend/behaviors/importexportcontroller/partials/_export.htm +++ b/modules/backend/behaviors/importexportcontroller/partials/_container_export.htm @@ -6,4 +6,4 @@ render() ?> - \ No newline at end of file + diff --git a/modules/backend/behaviors/importexportcontroller/partials/_import.htm b/modules/backend/behaviors/importexportcontroller/partials/_container_import.htm similarity index 96% rename from modules/backend/behaviors/importexportcontroller/partials/_import.htm rename to modules/backend/behaviors/importexportcontroller/partials/_container_import.htm index 864c7097b..508cb41c5 100644 --- a/modules/backend/behaviors/importexportcontroller/partials/_import.htm +++ b/modules/backend/behaviors/importexportcontroller/partials/_container_import.htm @@ -6,4 +6,4 @@ render() ?> - \ No newline at end of file + diff --git a/modules/backend/behaviors/listcontroller/partials/_container.htm b/modules/backend/behaviors/listcontroller/partials/_container.htm new file mode 100644 index 000000000..037ba0629 --- /dev/null +++ b/modules/backend/behaviors/listcontroller/partials/_container.htm @@ -0,0 +1,9 @@ + + render() ?> + + + + render() ?> + + +render() ?> diff --git a/modules/backend/behaviors/listcontroller/partials/_list.htm b/modules/backend/behaviors/listcontroller/partials/_list.htm deleted file mode 100644 index 0c910b69f..000000000 --- a/modules/backend/behaviors/listcontroller/partials/_list.htm +++ /dev/null @@ -1,24 +0,0 @@ - - render() ?> - - - - render() ?> - - - - makePartial($topPartial) ?> - - - -
-
- makePartial($sidePartial) ?> -
-
- render() ?> -
-
- - render() ?> - diff --git a/modules/backend/widgets/Lists.php b/modules/backend/widgets/Lists.php index cddbb5949..9fc3fc9d2 100644 --- a/modules/backend/widgets/Lists.php +++ b/modules/backend/widgets/Lists.php @@ -97,6 +97,11 @@ class Lists extends WidgetBase */ public $showPagination = 'auto'; + /** + * @var string Specify a custom view path to override partials used by the list. + */ + public $customViewPath; + // // Object properties // @@ -194,6 +199,7 @@ class Lists extends WidgetBase 'showTree', 'treeExpanded', 'showPagination', + 'customViewPath', ]); /* @@ -205,6 +211,10 @@ class Lists extends WidgetBase $this->showPagination = $this->recordsPerPage && $this->recordsPerPage > 0; } + if ($this->customViewPath) { + $this->addViewPath($this->customViewPath); + } + $this->validateModel(); $this->validateTree(); } diff --git a/modules/system/assets/ui/docs/icon.md b/modules/system/assets/ui/docs/icon.md index 2a54eb790..b1a5dbc98 100644 --- a/modules/system/assets/ui/docs/icon.md +++ b/modules/system/assets/ui/docs/icon.md @@ -22,11 +22,11 @@ Place icons just about anywhere with the `` tag or to an existing element usi To increase icon sizes relative to their container, use the `icon-lg` (33% increase), `icon-2x`, `icon-3x`, `icon-4x`, or `icon-5x` classes. - icon-5x - icon-4x - icon-3x - icon-2x - icon-lg + icon-5x + icon-4x + icon-3x + icon-2x + icon-lg ### Icon buttons diff --git a/modules/system/traits/ViewMaker.php b/modules/system/traits/ViewMaker.php index 6b6143c86..0dcecaa7c 100644 --- a/modules/system/traits/ViewMaker.php +++ b/modules/system/traits/ViewMaker.php @@ -44,6 +44,17 @@ trait ViewMaker */ public $suppressLayout = false; + /** + * Prepends a path on the available view locations. + * @param string $path + * @return void + */ + public function addViewPath($path) + { + $this->viewPath = (array) $this->viewPath; + array_unshift($this->viewPath, $path); + } + /** * Render a partial file contents located in the views folder. * @param string $partial The view to load.