From b3dfd3409f661ef27d5916d80a5ffc9c87fbe87a Mon Sep 17 00:00:00 2001 From: Thomas Steur <thomas.steur@gmail.com> Date: Thu, 31 Oct 2013 19:55:31 +0000 Subject: [PATCH] refs #4126 added possibility to define radio boxes --- core/Plugin/Settings.php | 2 ++ .../templates/pluginSettings.twig | 18 +++++++++++++++++ plugins/ExampleSettingsPlugin/Settings.php | 20 +++++++++++++++++-- 3 files changed, 38 insertions(+), 2 deletions(-) diff --git a/core/Plugin/Settings.php b/core/Plugin/Settings.php index 233b969207..8b1ad09365 100644 --- a/core/Plugin/Settings.php +++ b/core/Plugin/Settings.php @@ -29,6 +29,7 @@ abstract class Settings implements StorageInterface const TYPE_BOOL = 'boolean'; const TYPE_ARRAY = 'array'; + const FIELD_RADIO = 'radio'; const FIELD_TEXT = 'text'; const FIELD_TEXTAREA = 'textarea'; const FIELD_CHECKBOX = 'checkbox'; @@ -281,6 +282,7 @@ abstract class Settings implements StorageInterface static::FIELD_PASSWORD => static::TYPE_STRING, static::FIELD_CHECKBOX => static::TYPE_BOOL, static::FIELD_MULTI_SELECT => static::TYPE_ARRAY, + static::FIELD_RADIO => static::TYPE_STRING, static::FIELD_SINGLE_SELECT => static::TYPE_STRING, ); diff --git a/plugins/CoreAdminHome/templates/pluginSettings.twig b/plugins/CoreAdminHome/templates/pluginSettings.twig index 15de08bce7..ac87faa2fa 100644 --- a/plugins/CoreAdminHome/templates/pluginSettings.twig +++ b/plugins/CoreAdminHome/templates/pluginSettings.twig @@ -89,6 +89,24 @@ > {{- settingValue -}} </textarea> + {% elseif setting.field == 'radio' %} + + {% for key, value in setting.fieldOptions %} + + {{ value }} + + <input + {% for attr, val in setting.fieldAttributes %} + {{ attr|e('html_attr') }}="{{ val|e('html_attr') }}" + {% endfor %} + {% if settingValue==key %} + checked="checked" + {% endif %} + type="radio" + value="{{ key|e('html_attr') }}" + name="{{ setting.getKey|e('html_attr') }}" /> + {% endfor %} + {% else %} <input diff --git a/plugins/ExampleSettingsPlugin/Settings.php b/plugins/ExampleSettingsPlugin/Settings.php index 44282ddc52..140dc477cd 100644 --- a/plugins/ExampleSettingsPlugin/Settings.php +++ b/plugins/ExampleSettingsPlugin/Settings.php @@ -31,6 +31,9 @@ class Settings extends \Piwik\Plugin\Settings /** @var UserSetting */ public $refreshInterval; + /** @var UserSetting */ + public $color; + /** @var SystemSetting */ public $metric; @@ -53,6 +56,9 @@ class Settings extends \Piwik\Plugin\Settings // User setting --> textbox converted to int defining a validator and filter $this->createRefreshIntervalSetting(); + // User setting --> readio + $this->createColorSetting(); + // System setting --> allows selection of a single value $this->createMetricSetting(); @@ -60,10 +66,10 @@ class Settings extends \Piwik\Plugin\Settings $this->createBrowsersSetting(); // System setting --> textarea - $this->createDescriptionSetting(); + $this->createDescriptionSetting(); // System setting --> textarea - $this->createPasswordSetting(); + $this->createPasswordSetting(); } private function createAutoRefreshSetting() @@ -95,6 +101,16 @@ class Settings extends \Piwik\Plugin\Settings $this->addSetting($this->refreshInterval); } + private function createColorSetting() + { + $this->color = new UserSetting('color', 'Color'); + $this->color->field = static::FIELD_RADIO; + $this->color->description = 'Pick your favourite color'; + $this->color->fieldOptions = array('red' => 'Red', 'blue' => 'Blue', 'green' => 'Green'); + + $this->addSetting($this->color); + } + private function createMetricSetting() { $this->metric = new SystemSetting('metric', 'Metric to display'); -- GitLab