From de47b6c6a447ec2102a99e37b2bd3dfe9fde34d1 Mon Sep 17 00:00:00 2001 From: Sam Georges Date: Sun, 8 Jun 2014 10:52:46 +1000 Subject: [PATCH] Adds new event backend.list.extendColumns --- modules/backend/widgets/Lists.php | 25 +++++++++++++++++++------ 1 file changed, 19 insertions(+), 6 deletions(-) diff --git a/modules/backend/widgets/Lists.php b/modules/backend/widgets/Lists.php index 9af56e812..16dac4ddc 100644 --- a/modules/backend/widgets/Lists.php +++ b/modules/backend/widgets/Lists.php @@ -448,7 +448,13 @@ class Lists extends WidgetBase if (!isset($this->config->columns) || !is_array($this->config->columns) || !count($this->config->columns)) throw new ApplicationException(Lang::get('backend::lang.list.missing_columns', ['class'=>get_class($this->controller)])); - $definitions = $this->config->columns; + $this->addColumns($this->config->columns); + + /* + * Extensibility + */ + Event::fire('backend.list.extendColumns', [$this]); + $this->fireEvent('list.extendColumns', $this); /* * Use a supplied column order @@ -456,20 +462,27 @@ class Lists extends WidgetBase if ($columnOrder = $this->getSession('order', null)) { $orderedDefinitions = []; foreach ($columnOrder as $column) { - $orderedDefinitions[$column] = $definitions[$column]; + $orderedDefinitions[$column] = $this->columns[$column]; } - $definitions = array_merge($orderedDefinitions, $definitions); + $this->columns = array_merge($orderedDefinitions, $this->columns); } + + return $this->columns; + } + + /** + * Programatically add columns, used internally and for extensibility. + */ + public function addColumns(array $columns) + { /* * Build a final collection of list column objects */ - foreach ($definitions as $columnName => $config) { + foreach ($columns as $columnName => $config) { $this->columns[$columnName] = $this->makeListColumn($columnName, $config); } - - return $this->columns; } /**