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/>.
/**
* Customised file types editing form.
*
* @package tool_filetypes
* @copyright 2014 The Open University
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
require_once($CFG->dirroot . '/lib/formslib.php');
/**
* Form for adding a new custom file type or updating an existing custom file type.
*
* @package tool_filetypes
* @copyright 2014 The Open University
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
class tool_filetypes_form extends moodleform {
public function definition() {
global $CFG;
$mform = $this->_form;
$oldextension = $this->_customdata['oldextension'];
$mform->addElement('text', 'extension', get_string('extension', 'tool_filetypes'));
$mform->setType('extension', PARAM_ALPHANUMEXT);
$mform->addRule('extension', null, 'required', null, 'client');
$mform->addHelpButton('extension', 'extension', 'tool_filetypes');
$mform->addElement('text', 'mimetype', get_string('mimetype', 'tool_filetypes'));
$mform->setType('mimetype', PARAM_RAW);
$mform->addRule('mimetype', null, 'required', null, 'client');
$mform->addHelpButton('mimetype', 'mimetype', 'tool_filetypes');
$fileicons = \tool_filetypes\utils::get_file_icons();
$mform->addElement('select', 'icon',
get_string('icon', 'tool_filetypes'), $fileicons);
$mform->addHelpButton('icon', 'icon', 'tool_filetypes');
$mform->addElement('text', 'groups', get_string('groups', 'tool_filetypes'));
$mform->setType('groups', PARAM_RAW);
$mform->addHelpButton('groups', 'groups', 'tool_filetypes');
$mform->addElement('select', 'descriptiontype', get_string('descriptiontype', 'tool_filetypes'),
array('' => get_string('descriptiontype_default', 'tool_filetypes'),
'custom' => get_string('descriptiontype_custom', 'tool_filetypes'),
'lang' => get_string('descriptiontype_lang', 'tool_filetypes')));
$mform->addElement('text', 'description', get_string('description', 'tool_filetypes'));
$mform->setType('description', PARAM_TEXT);
$mform->addHelpButton('description', 'description', 'tool_filetypes');
$mform->hideIf('description', 'descriptiontype', 'ne', 'custom');
$mform->addElement('text', 'corestring', get_string('corestring', 'tool_filetypes'));
$mform->setType('corestring', PARAM_ALPHANUMEXT);
$mform->addHelpButton('corestring', 'corestring', 'tool_filetypes');
$mform->hideIf('corestring', 'descriptiontype', 'ne', 'lang');
$mform->addElement('checkbox', 'defaulticon', get_string('defaulticon', 'tool_filetypes'));
$mform->addHelpButton('defaulticon', 'defaulticon', 'tool_filetypes');
$mform->addElement('hidden', 'oldextension', $oldextension);
$mform->setType('oldextension', PARAM_RAW);
$this->add_action_buttons(true, get_string('savechanges'));
}
public function set_data($data) {
// Set up the description type.
if (!empty($data['corestring'])) {
$data['descriptiontype'] = 'lang';
} else if (!empty($data['description'])) {
$data['descriptiontype'] = 'custom';
} else {
$data['descriptiontype'] = '';
}
// Call parent.
parent::set_data($data);
}
public function get_data() {
$data = parent::get_data();
// Update the data to handle the descriptiontype dropdown. (The type
// is not explicitly stored, we just set or unset relevant fields.)
if ($data) {
switch ($data->descriptiontype) {
case 'lang' :
unset($data->description);
break;
case 'custom' :
unset($data->corestring);
break;
default:
unset($data->description);
unset($data->corestring);
break;
}
unset($data->descriptiontype);
}
return $data;
}
public function validation($data, $files) {
$errors = parent::validation($data, $files);
// Check the extension isn't already in use.
$oldextension = $data['oldextension'];
$extension = trim($data['extension']);
if (\tool_filetypes\utils::is_extension_invalid($extension, $oldextension)) {
$errors['extension'] = get_string('error_extension', 'tool_filetypes', $extension);
}
// Check the 'default icon' setting doesn't conflict with an existing one.
if (!empty($data['defaulticon']) && !\tool_filetypes\utils::is_defaulticon_allowed(
$data['mimetype'], $oldextension)) {
$errors['defaulticon'] = get_string('error_defaulticon', 'tool_filetypes', $extension);
}
// If you choose 'lang' or 'custom' descriptiontype, you must fill something in the field.
switch ($data['descriptiontype']) {
case 'lang' :
if (!trim($data['corestring'])) {
$errors['corestring'] = get_string('required');
}
break;
case 'custom' :
if (!trim($data['description'])) {
$errors['description'] = get_string('required');
}
break;
}
return $errors;
}
}