diff --git a/behaviors/IndexModelFormOperations.php b/behaviors/IndexModelFormOperations.php index 296d7e6..42f2ce2 100644 --- a/behaviors/IndexModelFormOperations.php +++ b/behaviors/IndexModelFormOperations.php @@ -218,7 +218,10 @@ protected function getAddDatabaseFieldsDataTableConfig() { // Get all registered controls and build an array that uses the control types as key and value for each entry. $controls = ControlLibrary::instance()->listControls(); - $fieldTypes = array_merge(array_keys($controls['Standard']), array_keys($controls['Widgets'])); + $fieldTypes = array_merge( + array_keys($controls[ControlLibrary::GROUP_STANDARD]['controls']), + array_keys($controls[ControlLibrary::GROUP_WIDGETS]['controls']) + ); $options = array_combine($fieldTypes, $fieldTypes); return [ diff --git a/classes/ControlLibrary.php b/classes/ControlLibrary.php index 0a0001f..50f4bdc 100644 --- a/classes/ControlLibrary.php +++ b/classes/ControlLibrary.php @@ -2,6 +2,8 @@ use Event; use Lang; +use Winter\Builder\Behaviors\IndexModelFormOperations; +use Winter\Builder\FormWidgets\FormBuilder; /** * Manages Builder form control library. @@ -32,21 +34,23 @@ public function listControls($returnGrouped = true) return $returnGrouped ? $this->groupedControls : $this->controls; } - $this->groupedControls = [ - $this->resolveControlGroupName(self::GROUP_STANDARD) => [], - $this->resolveControlGroupName(self::GROUP_WIDGETS) => [] - ]; + /** + * @see FormBuilder::onModelFormLoadControlPalette + * @see IndexModelFormOperations::getAddDatabaseFieldsDataTableConfig + */ + $this->groupedControls = []; Event::fire('pages.builder.registerControls', [$this]); foreach ($this->controls as $controlType => $controlInfo) { - $controlGroup = $this->resolveControlGroupName($controlInfo['group']); - - if (!array_key_exists($controlGroup, $this->groupedControls)) { - $this->groupedControls[$controlGroup] = []; + if (!array_key_exists($controlInfo['group'], $this->groupedControls)) { + $this->groupedControls[$controlInfo['group']] = [ + 'label' => $this->resolveControlGroupName($controlInfo['group']), + 'controls' => [] + ]; } - $this->groupedControls[$controlGroup][$controlType] = $controlInfo; + $this->groupedControls[$controlInfo['group']]['controls'][$controlType] = $controlInfo; } return $returnGrouped ? $this->groupedControls : $this->controls; diff --git a/formwidgets/FormBuilder.php b/formwidgets/FormBuilder.php index f0845a4..333ebec 100644 --- a/formwidgets/FormBuilder.php +++ b/formwidgets/FormBuilder.php @@ -108,9 +108,8 @@ public function onModelFormLoadControlPalette() $controlId = Input::get('controlId'); $library = ControlLibrary::instance(); - $controls = $library->listControls(); - $this->vars['registeredControls'] = $controls; - $this->vars['controlGroups'] = array_keys($controls); + + $this->vars['controlsGroups'] = $library->listControls(); return [ 'markup' => $this->makePartial('controlpalette'), diff --git a/formwidgets/formbuilder/partials/_controlpalette.htm b/formwidgets/formbuilder/partials/_controlpalette.htm index 05559ab..3e9f589 100644 --- a/formwidgets/formbuilder/partials/_controlpalette.htm +++ b/formwidgets/formbuilder/partials/_controlpalette.htm @@ -3,12 +3,12 @@