From 41068d989ba7143f233544a0e3d42f00bf6d7da0 Mon Sep 17 00:00:00 2001 From: Frederic Massart Date: Tue, 12 Mar 2013 12:20:33 +0800 Subject: [PATCH] MDL-38340 form: Last fieldset is collapsed by default --- lib/formslib.php | 47 +++++++++++++++++------------------------------ 1 file changed, 17 insertions(+), 30 deletions(-) diff --git a/lib/formslib.php b/lib/formslib.php index fe3c24802ed..4a4e5cfe2cc 100644 --- a/lib/formslib.php +++ b/lib/formslib.php @@ -1536,48 +1536,35 @@ class MoodleQuickForm extends HTML_QuickForm_DHTMLRulesTableless { $headercounter = 0; foreach (array_keys($this->_elements) as $elementIndex){ $element =& $this->_elements[$elementIndex]; - if ($element->getType()=='header') { + if ($element->getType() == 'header') { $headercounter++; } } if ($headercounter > $this->_non_collapsible_headers) { // So, we have more than $_non_collapsible_headers headers // add all headers to collapsible elements array (if they have not been added yet). - unset($lastHeader); - $lastHeader = null; - $anyRequiredOrError = false; + $anyrequiredorerror = false; $headercounter = 0; + $headername = null; foreach (array_keys($this->_elements) as $elementIndex){ $element =& $this->_elements[$elementIndex]; - if ($element->getType()=='header') { - if (!is_null($lastHeader)) { - $lastHeader->_generateId(); - // Check if we had any required elements or - // we are at the top header that should be expanded by default. - if ($anyRequiredOrError || $headercounter === 1) { - $this->setExpanded($lastHeader->getName()); - } else if (!isset($this->_collapsibleElements[$lastHeader->getName()])) { - // Define element as collapsed by default. - $this->setExpanded($lastHeader->getName(), false); - } - } + + if ($element->getType() == 'header') { $headercounter++; - $lastHeader =& $element; - $anyRequiredOrError = false; - } elseif (in_array($element->getName(), $this->_required) || isset($this->_errors[$element->getName()])) { - $anyRequiredOrError = true; + $element->_generateId(); + $headername = $element->getName(); + $anyrequiredorerror = false; + } else if (in_array($element->getName(), $this->_required) || isset($this->_errors[$element->getName()])) { + $anyrequiredorerror = true; } - } - // Process very last header. - if (!is_null($lastHeader)){ - $lastHeader->_generateId(); - // Check if we had any required elements or - // we are at the top header that should be expanded by default. - if ($anyRequiredOrError || $headercounter === 1) { - $this->setExpanded($lastHeader->getName()); - } elseif (!isset($this->_collapsibleElements[$lastHeader->getName()])) { + + if ($headercounter === 1 || $anyrequiredorerror) { + // If we're working on the first header, or if any error or required field + // is present in this header, we need to expand it. + $this->setExpanded($headername, true); + } else if (!isset($this->_collapsibleElements[$headername])) { // Define element as collapsed by default. - $this->setExpanded($lastHeader->getName(), false); + $this->setExpanded($headername, false); } } }