MDL-30844 Accessibility: orphan label in form action buttons
[moodle.git] / lib / form / group.php
1 <?php
2 // This file is part of Moodle - http://moodle.org/
3 //
4 // Moodle is free software: you can redistribute it and/or modify
5 // it under the terms of the GNU General Public License as published by
6 // the Free Software Foundation, either version 3 of the License, or
7 // (at your option) any later version.
8 //
9 // Moodle is distributed in the hope that it will be useful,
10 // but WITHOUT ANY WARRANTY; without even the implied warranty of
11 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12 // GNU General Public License for more details.
13 //
14 // You should have received a copy of the GNU General Public License
15 // along with Moodle.  If not, see <http://www.gnu.org/licenses/>.
18 /**
19  * Form element group
20  *
21  * Contains HTML class for group form element
22  *
23  * @package   core_form
24  * @copyright 2007 Jamie Pratt <me@jamiep.org>
25  * @license   http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
26  */
28 require_once("HTML/QuickForm/group.php");
30 /**
31  * HTML class for a form element group
32  *
33  * Overloaded {@link HTML_QuickForm_group} with default behavior modified for Moodle.
34  *
35  * @package   core_form
36  * @category  form
37  * @copyright 2007 Jamie Pratt <me@jamiep.org>
38  * @license   http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
39  */
40 class MoodleQuickForm_group extends HTML_QuickForm_group{
41     /** @var string html for help button, if empty then no help */
42     var $_helpbutton='';
44     /**
45      * constructor
46      *
47      * @param string $elementName (optional) name of the group
48      * @param string $elementLabel (optional) group label
49      * @param array $elements (optional) array of HTML_QuickForm_element elements to group
50      * @param string $separator (optional) string to seperate elements.
51      * @param string $appendName (optional) string to appened to grouped elements.
52      */
53     function MoodleQuickForm_group($elementName=null, $elementLabel=null, $elements=null, $separator=null, $appendName = true) {
54         parent::HTML_QuickForm_group($elementName, $elementLabel, $elements, $separator, $appendName);
55     }
57     /** @var string template type, would cause problems with client side validation so will leave for now */
58     //var $_elementTemplateType='fieldset';
60     /**
61      * set html for help button
62      *
63      * @param array $helpbuttonargs array of arguments to make a help button
64      * @param string $function function name to call to get html
65      * @deprecated since Moodle 2.0. Please do not call this function any more.
66      * @todo MDL-31047 this api will be removed.
67      * @see MoodleQuickForm::setHelpButton()
68      */
69     function setHelpButton($helpbuttonargs, $function='helpbutton'){
70         debugging('component setHelpButton() is not used any more, please use $mform->setHelpButton() instead');
71     }
73     /**
74      * set html for help button
75      */
76     function getHelpButton(){
77         return $this->_helpbutton;
78     }
80     /**
81      * Returns element template, nodisplay/static/fieldset
82      *
83      * @return string
84      */
85     function getElementTemplateType(){
86         if ($this->_flagFrozen){
87             if ($this->getGroupType() == 'submit'){
88                 return 'nodisplay';
89             } else {
90                 return 'static';
91             }
92         } else {
93             if ($this->getGroupType() == 'submit') {
94                 return 'actionbuttons';
95             }
96             return 'fieldset';
97         }
98     }
100     /**
101      * Sets the grouped elements and hides label
102      *
103      * @param array $elements
104      */
105     function setElements($elements){
106         parent::setElements($elements);
107         foreach ($this->_elements as $element){
108             if (method_exists($element, 'setHiddenLabel')){
109                 $element->setHiddenLabel(true);
110             }
111         }
112     }