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/>./*** mod_unilabel** @package mod_unilabel* @author Andreas Grabs <info@grabs-edv.de>* @copyright 2018 onwards Grabs EDV {@link https://www.grabs-edv.de}* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later*/namespace mod_unilabel\output;/*** Content type definition.* @package mod_unilabel* @author Andreas Grabs <info@grabs-edv.de>* @copyright 2018 onwards Grabs EDV {@link https://www.grabs-edv.de}* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later*/abstract class edit_element_base implements \templatable, \renderable {/** @var \stdClass */protected $data;/** @var \stdClass */protected $course;/** @var string */protected $formid;/** @var string */protected $context;/** @var string */protected $type;/** @var string */protected $prefix;/** @var string */protected $component;/** @var int */protected $repeatindex;/** @var \core_renderer */protected $output;/*** Constructor** @param string $formid The id the edit_content form (mform) is using* @param \context $context The context of the cm* @param \stdClass $course* @param string $type The unilabel type like "grid" or "carousel"* @param int $repeatindex*/public function __construct(string $formid, \context $context, \stdClass $course, string $type, int $repeatindex) {global $CFG, $OUTPUT;require_once($CFG->libdir . '/formslib.php');require_once($CFG->libdir . '/form/filemanager.php');require_once($CFG->libdir . '/form/editor.php');require_once($CFG->libdir . '/form/text.php');require_once($CFG->libdir . '/form/hidden.php');require_once($CFG->libdir . '/form/header.php');require_once($CFG->libdir . '/form/static.php');require_once($CFG->libdir . '/form/group.php');require_once($CFG->libdir . '/form/select.php');require_once($CFG->libdir . '/form/checkbox.php');// Set the global properties.$this->output = $OUTPUT;$this->formid = $formid;$this->context = $context;$this->course = $course;$this->type = $type;$this->component = 'unilabeltype_' . $type;$this->prefix = $this->component . '_';$this->repeatindex = $repeatindex;// Set the common values for the output array.$this->data = new \stdClass();$this->data->formid = $this->formid;$this->data->type = $this->type;$this->data->repeatindex = $this->repeatindex;$this->data->prefix = $this->prefix;$this->data->repeatnr = $this->repeatindex + 1;}/*** Get the name of the elements group.** @return string*/abstract public function get_elements_name();/*** Get the form elements as array in the order they should be printed out.** @return \HTML_QuickForm_element[]*/abstract public function get_elements();/*** Add a sortorder element to the form fragment.** @return void*/protected function add_sortorder() {$this->data->sortorderelement = $this->render_element($this->get_hidden('sortorder'));}/*** Export for template.** @param renderer_base $output The renderer.* @return stdClass*/public function export_for_template(\renderer_base $output) {$elements = $this->get_elements();$this->data->elements = [];foreach ($elements as $element) {$this->data->elements[] = $this->render_element($element);}$this->data->elementsname = $this->get_elements_name();return $this->data;}/*** Get the rendered html from the given QuickForm element.** @param \HTML_QuickForm_element $element* @return void*/protected function render_element(\HTML_QuickForm_element $element) {if ($element->getType() == 'hidden') {return $element->toHtml();}return $this->output->mform_element($element,false,false,'',false);}/*** Get an mform filemanager element.** @param string $name The element name without the prefix.* @param array $attributes* @param array $options The options for file handling* @param string $helpbutton* @param string $extralabel In from the name independent label.* @return \MoodleQuickForm_filemanager The element*/protected function get_filemanager(string $name, array $attributes = [],array $options = [], $helpbutton = '', string $extralabel = '') {$elementname = $this->prefix . $name . '[' . $this->repeatindex . ']';$attributes['id'] = 'id_' . $this->prefix . $name . '_' . $this->repeatindex;$attributes['name'] = $elementname;if (empty($extralabel)) {$label = get_string($name, $this->component) . '-' . ($this->repeatindex + 1);} else {$label = $extralabel;}$element = new \MoodleQuickForm_filemanager($elementname, $label, $attributes, $options);if ($helpbutton) {$element->_helpbutton = $this->output->help_icon($helpbutton, $this->component);}return $element;}/*** Get an mform editor element.** @param string $name The element name without the prefix.* @param array $attributes* @param array $options The options for file handling* @param boolean $helpbutton* @param string $extralabel In from the name independent label.* @return \MoodleQuickForm_editor The element*/protected function get_editor(string $name, array $attributes = [],array $options = [], $helpbutton = '', string $extralabel = '') {$elementname = $this->prefix . $name . '[' . $this->repeatindex . ']';$attributes['id'] = 'id_' . $this->prefix . $name . '_' . $this->repeatindex;$attributes['name'] = $elementname;if (empty($extralabel)) {$label = get_string($name, $this->component) . '-' . ($this->repeatindex + 1);} else {$label = $extralabel;}$element = new \MoodleQuickForm_editor($elementname, $label, $attributes, $options);if ($helpbutton) {$element->_helpbutton = $this->output->help_icon($helpbutton, $this->component);}return $element;}/*** Get an mform text element.** @param string $name The element name without the prefix.* @param array $attributes* @param boolean $helpbutton* @param string $extralabel In from the name independent label.* @return \MoodleQuickForm_text The element*/protected function get_textfield(string $name, array $attributes = [], $helpbutton = '', string $extralabel = '') {$elementname = $this->prefix . $name . '[' . $this->repeatindex . ']';$attributes['id'] = 'id_' . $this->prefix . $name . '_' . $this->repeatindex;$attributes['name'] = $elementname;if (empty($extralabel)) {$label = get_string($name, $this->component) . '-' . ($this->repeatindex + 1);} else {$label = $extralabel;}$element = new \MoodleQuickForm_text($elementname, $label, $attributes);if ($helpbutton) {$element->_helpbutton = $this->output->help_icon($helpbutton, $this->component);}return $element;}/*** Get an mform checkbox element.** @param string $name The element name without the prefix.* @param array $attributes* @param boolean $helpbutton* @param string $extralabel In from the name independent label.* @return \MoodleQuickForm_text The element*/protected function get_checkbox(string $name, array $attributes = [], $helpbutton = '', string $extralabel = '') {$elementname = $this->prefix . $name . '[' . $this->repeatindex . ']';$attributes['id'] = 'id_' . $this->prefix . $name . '_' . $this->repeatindex;$attributes['name'] = $elementname;if (empty($extralabel)) {$label = get_string($name, $this->component) . '-' . ($this->repeatindex + 1);} else {$label = $extralabel;}$element = new \MoodleQuickForm_checkbox($elementname, $label, '', $attributes);if ($helpbutton) {$element->_helpbutton = $this->output->help_icon($helpbutton, $this->component);}return $element;}/*** Get an mform select element.** @param string $name The element name without the prefix.* @param array $options* @param array $attributes* @param boolean $helpbutton* @param string $extralabel In from the name independent label.* @return \MoodleQuickForm_text The element*/protected function get_select(string $name, array $options, array $attributes = [], $helpbutton = '', string $extralabel = '') {$elementname = $this->prefix . $name . '[' . $this->repeatindex . ']';$attributes['id'] = 'id_' . $this->prefix . $name . '_' . $this->repeatindex;$attributes['name'] = $elementname;if (empty($extralabel)) {$label = get_string($name, $this->component) . '-' . ($this->repeatindex + 1);} else {$label = $extralabel;}$element = new \MoodleQuickForm_select($elementname, $label, $options, $attributes);if ($helpbutton) {$element->_helpbutton = $this->output->help_icon($helpbutton, $this->component);}return $element;}/*** Get an mform hidden element.** @param string $name The element name without the prefix.* @return \MoodleQuickForm_hidden The element*/protected function get_hidden(string $name) {$elementname = $this->prefix . $name . '[' . $this->repeatindex . ']';$attributes = [];$attributes['name'] = $elementname;$element = new \MoodleQuickForm_hidden($elementname, $this->repeatindex, $attributes);return $element;}/*** Get an mform static element.** @param string $name The element name without the prefix.* @param string $html* @return \MoodleQuickForm_static The element*/protected function get_static(string $name, string $html) {$elementname = $this->prefix . $name . '_' . $this->repeatindex;$attributes = [];$attributes['id'] = 'id_' . $this->prefix . $name . '_' . $this->repeatindex;$attributes['name'] = $elementname;$element = new \MoodleQuickForm_static($elementname, '', $html);$element->setAttributes($attributes);return $element;}/*** Get an mform group element.** @param string $name The element name without the prefix.* @param \HTML_QuickForm_element[] $elements* @param string $separator String to seperate elements* @param bool $appendname* @param string $helpbutton* @param string $extralabel In from the name independent label.* @return \MoodleQuickForm_group The group element*/protected function get_group(string $name, array $elements, string $separator = null,bool $appendname = false, $helpbutton = '', string $extralabel = '') {$elementname = $this->prefix . $name . '_' . $this->repeatindex;$attributes = [];$attributes['id'] = 'id_' . $this->prefix . $name . '_' . $this->repeatindex;$attributes['name'] = $elementname;if (empty($extralabel)) {$label = get_string($name, $this->component) . '-' . ($this->repeatindex + 1);} else {$label = $extralabel;}$element = new \MoodleQuickForm_group($elementname, $label, $elements, $separator, $appendname);if ($helpbutton) {$element->_helpbutton = $this->output->help_icon($helpbutton, $this->component);}$element->setAttributes($attributes); // The group element needs at least this attributes!!!return $element;}}