12785faf82fd69e0ca7b5b03d7927a84af3b3884
[moodle.git] / admin / tool / lp / classes / form / template.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/>.
17 /**
18  * This file contains the form add/update a competency framework.
19  *
20  * @package   tool_lp
21  * @copyright 2015 Damyon Wiese
22  * @license   http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
23  */
25 namespace tool_lp\form;
27 defined('MOODLE_INTERNAL') || die('Direct access to this script is forbidden.');
29 use moodleform;
30 use tool_lp\api;
32 require_once($CFG->libdir.'/formslib.php');
34 /**
35  * Learning plan template form.
36  *
37  * @package   tool_lp
38  * @copyright 2015 Damyon Wiese
39  * @license   http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
40  */
41 class template extends moodleform {
43     /**
44      * Define the form - called by parent constructor
45      */
46     public function definition() {
47         $mform = $this->_form;
48         $id = $this->_customdata['id'];
49         $context = $this->_customdata['context'];
51         $mform->addElement('hidden', 'id');
52         $mform->setType('id', PARAM_INT);
53         $mform->setDefault('id', 0);
55         $mform->addElement('text', 'shortname',
56                            get_string('shortname', 'tool_lp'));
57         $mform->setType('shortname', PARAM_TEXT);
58         $mform->addRule('shortname', null, 'required', null, 'client');
59         $mform->addElement('editor', 'description',
60                            get_string('description', 'tool_lp'), array('rows' => 4));
61         $mform->setType('description', PARAM_TEXT);
62         $mform->addElement('selectyesno', 'visible',
63                            get_string('visible', 'tool_lp'));
64         $mform->addElement('date_time_selector',
65                            'duedate',
66                            get_string('duedate', 'tool_lp'),
67                            array('optional' => true));
68         $mform->addHelpButton('duedate', 'duedate', 'tool_lp');
70         $mform->setDefault('visible', true);
71         $mform->addHelpButton('visible', 'visible', 'tool_lp');
73         $mform->addElement('static', 'context', get_string('context', 'core_role'));
74         $mform->setDefault('context', $context->get_context_name());
76         $this->add_action_buttons(true, get_string('savechanges', 'tool_lp'));
78         if (!empty($id)) {
79             if (!$this->is_submitted()) {
80                 $template = api::read_template($id);
81                 $record = $template->to_record();
82                 // Massage for editor API.
83                 $record->description = array('text' => $record->description, 'format' => $record->descriptionformat);
84                 $this->set_data($record);
85             }
86         }
88     }
90     /**
91      * Get form data.
92      * Conveniently removes non-desired properties.
93      * @return object
94      */
95     public function get_data() {
96         $data = parent::get_data();
97         if (is_object($data)) {
98             unset($data->submitbutton);
99         }
100         return $data;
101     }
103     /**
104      * Extra the form.
105      *
106      * @param  array $data
107      * @param  array $files
108      * @return array
109      */
110     public function validation($data, $files) {
111         $data = $this->get_submitted_data();        // To remove extra fields (sesskey, __qf_, ...).
112         unset($data->submitbutton);
114         $data->descriptionformat = $data->description['format'];
115         $data->description = $data->description['text'];
117         $template = new \tool_lp\template(0, $data);
118         $errors = $template->get_errors();
120         // The context ID is not submitted via this form.
121         if (isset($errors['contextid'])) {
122             unset($errors['contextid']);
123         }
125         return $errors;
126     }