[ Index ]

PHP Cross Reference of Unnamed Project

title

Body

[close]

/availability/condition/completion/yui/src/form/js/ -> form.js (source)

   1  /**
   2   * JavaScript for form editing completion conditions.
   3   *
   4   * @module moodle-availability_completion-form
   5   */
   6  M.availability_completion = M.availability_completion || {};
   7  
   8  /**
   9   * @class M.availability_completion.form
  10   * @extends M.core_availability.plugin
  11   */
  12  M.availability_completion.form = Y.Object(M.core_availability.plugin);
  13  
  14  /**
  15   * Initialises this plugin.
  16   *
  17   * @method initInner
  18   * @param {Array} cms Array of objects containing cmid => name
  19   */
  20  M.availability_completion.form.initInner = function(cms) {
  21      this.cms = cms;
  22  };
  23  
  24  M.availability_completion.form.getNode = function(json) {
  25      // Create HTML structure.
  26      var html = M.util.get_string('title', 'availability_completion') + ' <span class="availability-group"><label>' +
  27              '<span class="accesshide">' + M.util.get_string('label_cm', 'availability_completion') + ' </span>' +
  28              '<select name="cm" title="' + M.util.get_string('label_cm', 'availability_completion') + '">' +
  29              '<option value="0">' + M.util.get_string('choosedots', 'moodle') + '</option>';
  30      for (var i = 0; i < this.cms.length; i++) {
  31          var cm = this.cms[i];
  32          // String has already been escaped using format_string.
  33          html += '<option value="' + cm.id + '">' + cm.name + '</option>';
  34      }
  35      html += '</select></label> <label><span class="accesshide">' +
  36                  M.util.get_string('label_completion', 'availability_completion') +
  37              ' </span><select name="e" title="' + M.util.get_string('label_completion', 'availability_completion') + '">' +
  38              '<option value="1">' + M.util.get_string('option_complete', 'availability_completion') + '</option>' +
  39              '<option value="0">' + M.util.get_string('option_incomplete', 'availability_completion') + '</option>' +
  40              '<option value="2">' + M.util.get_string('option_pass', 'availability_completion') + '</option>' +
  41              '<option value="3">' + M.util.get_string('option_fail', 'availability_completion') + '</option>' +
  42              '</select></label></span>';
  43      var node = Y.Node.create('<span>' + html + '</span>');
  44  
  45      // Set initial values.
  46      if (json.cm !== undefined &&
  47              node.one('select[name=cm] > option[value=' + json.cm + ']')) {
  48          node.one('select[name=cm]').set('value', '' + json.cm);
  49      }
  50      if (json.e !== undefined) {
  51          node.one('select[name=e]').set('value', '' + json.e);
  52      }
  53  
  54      // Add event handlers (first time only).
  55      if (!M.availability_completion.form.addedEvents) {
  56          M.availability_completion.form.addedEvents = true;
  57          var root = Y.one('#fitem_id_availabilityconditionsjson');
  58          root.delegate('change', function() {
  59              // Whichever dropdown changed, just update the form.
  60              M.core_availability.form.update();
  61          }, '.availability_completion select');
  62      }
  63  
  64      return node;
  65  };
  66  
  67  M.availability_completion.form.fillValue = function(value, node) {
  68      value.cm = parseInt(node.one('select[name=cm]').get('value'), 10);
  69      value.e = parseInt(node.one('select[name=e]').get('value'), 10);
  70  };
  71  
  72  M.availability_completion.form.fillErrors = function(errors, node) {
  73      var cmid = parseInt(node.one('select[name=cm]').get('value'), 10);
  74      if (cmid === 0) {
  75          errors.push('availability_completion:error_selectcmid');
  76      }
  77  };


Generated: Thu Aug 11 10:00:09 2016 Cross-referenced by PHPXref 0.7.1