AutorÃa | Ultima modificación | Ver Log |
<?php// This file is part of Moodle - http://moodle.org///// Moodle is free software: you can redistribute it and/or modify// it under the terms of the GNU General Public License as published by// the Free Software Foundation, either version 3 of the License, or// (at your option) any later version.//// Moodle is distributed in the hope that it will be useful,// but WITHOUT ANY WARRANTY; without even the implied warranty of// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the// GNU General Public License for more details.//// You should have received a copy of the GNU General Public License// along with Moodle. If not, see <http://www.gnu.org/licenses/>./*** checkbox form element** Contains HTML class for a checkbox type element** @package core_form* @copyright 2007 Jamie Pratt <me@jamiep.org>* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later*/require_once('HTML/QuickForm/checkbox.php');require_once('templatable_form_element.php');/*** HTML class for a checkbox type element** Overloaded {@link HTML_QuickForm_checkbox} to add help button. Also, fixes bug in quickforms* checkbox, which lets previous set value override submitted value if checkbox is not checked* and no value is submitted** @package core_form* @category form* @copyright 2007 Jamie Pratt <me@jamiep.org>* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later*/class MoodleQuickForm_checkbox extends HTML_QuickForm_checkbox implements templatable {use templatable_form_element {export_for_template as export_for_template_base;}/** @var string html for help button, if empty then no help */var $_helpbutton='';/*** Constructor** @param string $elementName (optional) name of the checkbox* @param string $elementLabel (optional) checkbox label* @param string $text (optional) Text to put after the checkbox* @param mixed $attributes (optional) Either a typical HTML attribute string* or an associative array*/public function __construct($elementName=null, $elementLabel=null, $text='', $attributes=null) {parent::__construct($elementName, $elementLabel, $text, $attributes);}/*** Old syntax of class constructor. Deprecated in PHP7.** @deprecated since Moodle 3.1*/public function MoodleQuickForm_checkbox($elementName=null, $elementLabel=null, $text='', $attributes=null) {debugging('Use of class name as constructor is deprecated', DEBUG_DEVELOPER);self::__construct($elementName, $elementLabel, $text, $attributes);}/*** get html for help button** @return string html for help button*/function getHelpButton(){return $this->_helpbutton;}/*** Called by HTML_QuickForm whenever form event is made on this element** @param string $event Name of event* @param mixed $arg event arguments* @param object $caller calling object* @return bool*/function onQuickFormEvent($event, $arg, &$caller){//fixes bug in quickforms which lets previous set value override submitted value if checkbox is not checked// and no value is submittedswitch ($event) {case 'updateValue':// constant values override both default and submitted ones// default values are overriden by submitted$value = $this->_findValue($caller->_constantValues);if (null === $value) {// if no boxes were checked, then there is no value in the array// yet we don't want to display default value in this caseif ($caller->isSubmitted() && !$caller->is_new_repeat($this->getName())) {$value = $this->_findValue($caller->_submitValues);} else {$value = $this->_findValue($caller->_defaultValues);}}//fix here. setChecked should not be conditional$this->setChecked($value);break;default:parent::onQuickFormEvent($event, $arg, $caller);}return true;}/*** Returns HTML for checbox form element.** @return string*/function toHtml(){return '<span>' . parent::toHtml() . '</span>';}/*** Returns the disabled field. Accessibility: the return "[ ]" from parent* class is not acceptable for screenreader users, and we DO want a label.** @return string*/function getFrozenHtml(){//$this->_generateId();$output = '<input type="checkbox" disabled="disabled" id="'.$this->getAttribute('id').'" ';if ($this->getChecked()) {$output .= 'checked="checked" />'.$this->_getPersistantData();} else {$output .= '/>';}return $output;}public function export_for_template(renderer_base $output) {$context = $this->export_for_template_base($output);$context['frozenvalue'] = $this->getValue();return $context;}}