AutorÃa | Ultima modificación | Ver Log |
// 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/>./*** A module that enables the setting of form field values on the client side.** @module mod_lti/form-field* @copyright 2016 Jun Pataleta <jun@moodle.com>* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later* @since 3.2*/define(['jquery'],function($) {/*** Form field class.** @param {string} name Field name.* @param {number} type The field type.* @param {boolean} resetIfUndefined Flag to reset the field to the default value if undefined in the return data.* @param {string|number|boolean} defaultValue The default value to use for the field.* @constructor*/var FormField = function(name, type, resetIfUndefined, defaultValue) {this.name = name;this.id = 'id_' + this.name;this.selector = '#' + this.id;this.type = type;this.resetIfUndefined = resetIfUndefined;this.defaultValue = defaultValue;};/*** Form field types.** @type {{TEXT: number, SELECT: number, CHECKBOX: number, EDITOR: number}}*/FormField.TYPES = {TEXT: 1,SELECT: 2,CHECKBOX: 3,EDITOR: 4};/*** Sets the values for a form field.** @param {string|boolean|number} value The value to be set into the field.*/FormField.prototype.setFieldValue = function(value) {if (value === null) {if (this.resetIfUndefined) {value = this.defaultValue;} else {// No need set the field value if value is null and there's no need to reset the field.return;}}switch (this.type) {case FormField.TYPES.CHECKBOX:if (value) {$(this.selector).prop('checked', true);} else {$(this.selector).prop('checked', false);}break;case FormField.TYPES.EDITOR:if (typeof value.text !== 'undefined') {/* global tinyMCE:false */// Set text in editor's editable content, if applicable.// Check if it is an Atto editor.var attoEditor = $(this.selector + 'editable');if (attoEditor.length) {attoEditor.html(value.text);} else if (typeof tinyMCE !== 'undefined') {// If the editor is not Atto, try to fallback to TinyMCE.if (tinyMCE.majorVersion == "3") {// Tiny 3.tinyMCE.execInstanceCommand(this.id, 'mceInsertContent', false, value.text);} else {// Tiny 4+.tinyMCE.get(this.id).setContent(value.text);}}// Set text to actual editor text area.$(this.selector).val(value.text);}break;default:$(this.selector).val(value);break;}};return FormField;});