diff --git a/libraries/config/Form.class.php b/libraries/config/Form.class.php index b53d86f85..7aa8468b0 100755 --- a/libraries/config/Form.class.php +++ b/libraries/config/Form.class.php @@ -124,6 +124,8 @@ class Form */ private function _readFormPathsCallback($value, $key, $prefix) { + static $group_counter = 0; + if (is_array($value)) { $prefix .= $key . '/'; array_walk($value, array($this, '_readFormPathsCallback'), $prefix); @@ -132,6 +134,10 @@ class Form $this->default[$prefix . $key] = $value; $value = $key; } + // add unique id to group ends + if ($value == ':group:end') { + $value .= ':' . $group_counter++; + } $this->fields[] = $prefix . $value; } } diff --git a/libraries/config/FormDisplay.class.php b/libraries/config/FormDisplay.class.php index fb0705227..e3b10dc1c 100755 --- a/libraries/config/FormDisplay.class.php +++ b/libraries/config/FormDisplay.class.php @@ -354,9 +354,8 @@ class FormDisplay $value_default = (array) $value_default; break; case 'group': - $text = substr($field, 7); - if ($text != 'end') { - display_group_header($text); + if (substr($field, 7, 4) != 'end:') { // :group:end is changed to :group:end:{unique id} in Form class + display_group_header(substr($field, 7)); } else { display_group_footer(); } diff --git a/libraries/config/FormDisplay.tpl.php b/libraries/config/FormDisplay.tpl.php index 866720815..84c4ee269 100644 --- a/libraries/config/FormDisplay.tpl.php +++ b/libraries/config/FormDisplay.tpl.php @@ -72,7 +72,7 @@ function display_fieldset_top($title = '', $description = '', $errors = null, $a { global $_FormDisplayGroup; - $_FormDisplayGroup = false; + $_FormDisplayGroup = 0; $attributes = array_merge(array('class' => 'optbox'), $attributes); foreach ($attributes as $k => &$attr) { @@ -147,14 +147,13 @@ function display_input($path, $name, $description = '', $type, $value, $value_is $field_class .= ($field_class == '' ? '' : ' ') . ($has_errors ? 'custom field-error' : 'custom'); } $field_class = $field_class ? ' class="' . $field_class . '"' : ''; - $tr_class = $_FormDisplayGroup ? 'group-field' : ''; + $tr_class = $_FormDisplayGroup > 0 + ? 'group-field group-field-' . $_FormDisplayGroup + : ''; if (isset($opts['setvalue']) && $opts['setvalue'] == ':group') { unset($opts['setvalue']); - $tr_class = 'group-header-field'; - if ($_FormDisplayGroup) { - display_group_footer(); - } - $_FormDisplayGroup = true; + $_FormDisplayGroup++; + $tr_class = 'group-header-field group-header-' . $_FormDisplayGroup; } if ($option_is_disabled) { $tr_class .= ($tr_class ? ' ' : '') . 'disabled-field'; @@ -290,19 +289,15 @@ function display_group_header($header_text) { global $_FormDisplayGroup; - if ($_FormDisplayGroup) { - display_group_footer(); - } - $_FormDisplayGroup = true; + $_FormDisplayGroup++; if (!$header_text) { return; } - $colspan = 2; - if (defined('PMA_SETUP')) { - $colspan++; - } + $colspan = defined('PMA_SETUP') + ? 3 + : 2; ?> -