From f869b8cc94f8de0984c07cac17604d87147d8ea5 Mon Sep 17 00:00:00 2001 From: Samuel Georges Date: Tue, 3 Mar 2015 20:24:14 +1100 Subject: [PATCH] Gives FormWidgets the ability to say: "No labels, please" ping @keiosweb --- modules/backend/classes/FormWidgetBase.php | 5 ++++ modules/backend/widgets/Form.php | 30 ++++++++++++++++--- .../backend/widgets/form/partials/_field.htm | 4 +-- 3 files changed, 33 insertions(+), 6 deletions(-) diff --git a/modules/backend/classes/FormWidgetBase.php b/modules/backend/classes/FormWidgetBase.php index 1f37b6862..1a9a9b078 100644 --- a/modules/backend/classes/FormWidgetBase.php +++ b/modules/backend/classes/FormWidgetBase.php @@ -41,6 +41,11 @@ abstract class FormWidgetBase extends WidgetBase */ public $previewMode = false; + /** + * @var bool Determines if this form field should display comments and labels. + */ + public $showLabels = true; + /** * Constructor * @param $controller Controller Active controller object. diff --git a/modules/backend/widgets/Form.php b/modules/backend/widgets/Form.php index f9e2d0412..5fe67f221 100644 --- a/modules/backend/widgets/Form.php +++ b/modules/backend/widgets/Form.php @@ -738,7 +738,7 @@ class Form extends WidgetBase * @param string $field Field name * @return array [columnName, context] */ - public function getFieldName($field) + protected function getFieldName($field) { if (strpos($field, '@') === false) { return [$field, null]; @@ -748,9 +748,11 @@ class Form extends WidgetBase } /** - * Looks up the column + * Looks up the field value. + * @param use Backend\Classes\FormField $field + * @return string */ - public function getFieldValue($field) + protected function getFieldValue($field) { if (is_string($field)) { if (!isset($this->allFields[$field])) { @@ -776,7 +778,7 @@ class Form extends WidgetBase * @param use Backend\Classes\FormField $field * @return string */ - public function getFieldDepends($field) + protected function getFieldDepends($field) { if (!$field->dependsOn) { return; @@ -787,6 +789,26 @@ class Form extends WidgetBase return $dependsOn; } + /** + * Helper method to determine if field should be rendered + * with label and comments. + * @param use Backend\Classes\FormField $field + * @return boolean + */ + protected function showFieldLabels($field) + { + if (in_array($field->type, ['checkbox', 'switch', 'section'])) { + return false; + } + + if ($field->type == 'widget') { + $widget = $this->makeFormWidget($field); + return $widget->showLabels; + } + + return true; + } + /** * Returns postback data from a submitted form. */ diff --git a/modules/backend/widgets/form/partials/_field.htm b/modules/backend/widgets/form/partials/_field.htm index 7b126c847..de08dd3b1 100644 --- a/modules/backend/widgets/form/partials/_field.htm +++ b/modules/backend/widgets/form/partials/_field.htm @@ -1,8 +1,8 @@ hidden): ?> - type, ['checkbox', 'switch', 'section'])): ?> + showFieldLabels($field)): ?> - makePartial('field_'.$field->type, ['field' => $field]) ?> + renderFieldElement($field) ?>