added code to include hidden labels in groups in forms

This commit is contained in:
jamiesensei 2006-12-09 14:06:15 +00:00
parent c1be9b31a2
commit 44875d7898
7 changed files with 88 additions and 3 deletions

View File

@ -83,6 +83,11 @@ class MoodleQuickForm_date_selector extends MoodleQuickForm_group
if($this->_options['optional']) {
$this->_elements[] =& MoodleQuickForm::createElement('checkbox', 'off', null, get_string('disable'), $this->getAttributes(), true);
}
foreach ($this->_elements as $element){
if (method_exists($element, 'setHiddenLabel')){
$element->setHiddenLabel(true);
}
}
}

View File

@ -90,6 +90,11 @@ class MoodleQuickForm_date_time_selector extends MoodleQuickForm_group{
if($this->_options['optional']) {
$this->_elements[] =& MoodleQuickForm::createElement('checkbox', 'off', null, get_string('disable'), $this->getAttributes(), true);
}
foreach ($this->_elements as $element){
if (method_exists($element, 'setHiddenLabel')){
$element->setHiddenLabel(true);
}
}
}

View File

@ -52,5 +52,13 @@ class MoodleQuickForm_group extends HTML_QuickForm_group{
function getElementTemplateType(){
return $this->_elementTemplateType;
}
function setElements($elements){
parent::setElements($elements);
foreach ($this->_elements as $element){
if (method_exists($element, 'setHiddenLabel')){
$element->setHiddenLabel(true);
}
}
}
}
?>

View File

@ -14,6 +14,37 @@ class MoodleQuickForm_select extends HTML_QuickForm_select{
* @var string
*/
var $_helpbutton='';
var $_hiddenLabel=false;
function setHiddenLabel($hiddenLabel){
$this->_hiddenLabel = $hiddenLabel;
}
function toHtml(){
$this->_generateId();
if ($this->_hiddenLabel){
return '<label class="accesshide" for="'.$this->getAttribute('id').'" >'.
$this->getLabel().'</label>'.parent::toHtml();
} else {
return parent::toHtml();
}
}
/**
* Automatically generates and assigns an 'id' attribute for the element.
*
* Currently used to ensure that labels work on radio buttons and
* checkboxes. Per idea of Alexander Radivanovich.
* Overriden in moodleforms to remove qf_ prefix.
*
* @access private
* @return void
*/
function _generateId()
{
static $idx = 1;
if (!$this->getAttribute('id')) {
$this->updateAttributes(array('id' => 'id_'. substr(md5(microtime() . $idx++), 0, 6)));
}
} // end func _generateId
/**
* set html for help button
*
@ -63,5 +94,6 @@ class MoodleQuickForm_select extends HTML_QuickForm_select{
}
}
} // end func removeOption
}
?>

View File

@ -14,6 +14,37 @@ class MoodleQuickForm_text extends HTML_QuickForm_text{
* @var string
*/
var $_helpbutton='';
var $_hiddenLabel=false;
function setHiddenLabel($hiddenLabel){
$this->_hiddenLabel = $hiddenLabel;
}
function toHtml(){
$this->_generateId();
if ($this->_hiddenLabel){
return '<label class="accesshide" for="'.$this->getAttribute('id').'" >'.
$this->getLabel().'</label>'.parent::toHtml();
} else {
return parent::toHtml();
}
}
/**
* Automatically generates and assigns an 'id' attribute for the element.
*
* Currently used to ensure that labels work on radio buttons and
* checkboxes. Per idea of Alexander Radivanovich.
* Overriden in moodleforms to remove qf_ prefix.
*
* @access private
* @return void
*/
function _generateId()
{
static $idx = 1;
if (!$this->getAttribute('id')) {
$this->updateAttributes(array('id' => 'id_'. substr(md5(microtime() . $idx++), 0, 6)));
}
} // end func _generateId
/**
* set html for help button
*

View File

@ -89,7 +89,8 @@ class moodleform {
* @return moodleform
*/
function moodleform($action, $customdata=null, $method='post', $target='', $attributes=null) {
$this->_formname = rtrim(get_class($this), '_form');
//strip '_form' from the end of class name to make form 'id' attribute.
$this->_formname = preg_replace('/_form$/', '', get_class($this), 1);
$this->_customdata = $customdata;
$this->_form =& new MoodleQuickForm($this->_formname, $method, $action, $target, $attributes);
@ -1038,7 +1039,10 @@ class MoodleQuickForm_Renderer extends HTML_QuickForm_Renderer_Tableless{
} else {
$id = $element->getName();
}
$element->updateAttributes(array('id'=>'id_'.$id));
$id = preg_replace('/^qf_/', '', $id, 1);
if (strpos($id, 'id_') !== 0){
$element->updateAttributes(array('id'=>'id_'.$id));
}
parent::renderElement($element, $required, $error);
}
function finishForm(&$form){

View File

@ -18,7 +18,7 @@ class data_mod_form extends moodleform_mod {
$mform->addElement('htmleditor', 'intro', get_string('intro', 'data'));
$mform->setType('intro', PARAM_RAW);
$mform->addRule('intro', get_string('required'), 'required', null, 'client');
$mform->addRule('intro', null, 'required', null, 'client');
$mform->addElement('date_selector', 'timeavailablefrom', get_string('availablefromdate', 'data'), array('optional'=>true));