[ Index ]

PHP Cross Reference of Unnamed Project

title

Body

[close]

/admin/tool/lp/amd/src/ -> parentcompetency_form.js (source)

   1  // This file is part of Moodle - http://moodle.org/
   2  //
   3  // Moodle is free software: you can redistribute it and/or modify
   4  // it under the terms of the GNU General Public License as published by
   5  // the Free Software Foundation, either version 3 of the License, or
   6  // (at your option) any later version.
   7  //
   8  // Moodle is distributed in the hope that it will be useful,
   9  // but WITHOUT ANY WARRANTY; without even the implied warranty of
  10  // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  11  // GNU General Public License for more details.
  12  //
  13  // You should have received a copy of the GNU General Public License
  14  // along with Moodle.  If not, see <http://www.gnu.org/licenses/>.
  15  
  16  /**
  17   * Handle selecting parent competency in competency form.
  18   *
  19   * @module     tool_lp/parentcompetency_form
  20   * @package    tool_lp
  21   * @copyright  2015 Issam Taboubi <issam.taboubi@umontreal.ca>
  22   * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
  23   */
  24  define(['jquery', 'core/ajax', 'core/str', 'tool_lp/competencypicker', 'core/templates', 'core/notification'],
  25      function($, ajax, Str, Picker, Templates, Notification) {
  26  
  27      /**
  28       * Parent Competency Form object.
  29       * @param {String} buttonSelector The parent competency button selector.
  30       * @param {String} inputHiddenSelector The hidden input field selector.
  31       * @param {String} staticElementSelector The static element displaying the parent competency.
  32       * @param {Number} frameworkId The competency framework ID.
  33       * @param {Number} pageContextId The page context ID.
  34       */
  35      var ParentCompetencyForm = function(buttonSelector,
  36                                          inputHiddenSelector,
  37                                          staticElementSelector,
  38                                          frameworkId,
  39                                          pageContextId) {
  40          this.buttonSelector = buttonSelector;
  41          this.inputHiddenSelector = inputHiddenSelector;
  42          this.staticElementSelector = staticElementSelector;
  43          this.frameworkId = frameworkId;
  44          this.pageContextId = pageContextId;
  45  
  46          // Register the events.
  47          this.registerEvents();
  48      };
  49  
  50      /** @var {String} The parent competency button selector. */
  51      ParentCompetencyForm.prototype.buttonSelector = null;
  52      /** @var {String} The hidden input field selector. */
  53      ParentCompetencyForm.prototype.inputHiddenSelector = null;
  54      /** @var {String} The static element displaying the parent competency. */
  55      ParentCompetencyForm.prototype.staticElementSelector = null;
  56      /** @var {Number} The competency framework ID. */
  57      ParentCompetencyForm.prototype.frameworkId = null;
  58      /** @var {Number} The page context ID. */
  59      ParentCompetencyForm.prototype.pageContextId = null;
  60  
  61      /**
  62       * Set the parent competency in the competency form.
  63       *
  64       * @param {Object} data Data containing selected competency.
  65       * @method setParent
  66       */
  67      ParentCompetencyForm.prototype.setParent = function(data) {
  68          var self = this;
  69  
  70          if (data.competencyId !== 0) {
  71              ajax.call([
  72                  {methodname: 'core_competency_read_competency', args: {
  73                      id: data.competencyId
  74                  }}
  75              ])[0].done(function(competency) {
  76                  $(self.staticElementSelector).html(competency.shortname);
  77                  $(self.inputHiddenSelector).val(competency.id);
  78              }).fail(Notification.exception);
  79          } else {
  80              // Root of competency framework selected.
  81              Str.get_string('competencyframeworkroot', 'tool_lp').then(function(rootframework) {
  82                  $(self.staticElementSelector).html(rootframework);
  83                  $(self.inputHiddenSelector).val(data.competencyId);
  84              }).fail(Notification.exception);
  85          }
  86      };
  87  
  88      /**
  89       * Register the events of parent competency button click.
  90       *
  91       * @method registerEvents
  92       */
  93      ParentCompetencyForm.prototype.registerEvents = function() {
  94          var self = this;
  95  
  96          // Event on edit parent button.
  97          $(self.buttonSelector).on('click', function(e) {
  98              e.preventDefault();
  99  
 100              var picker = new Picker(self.pageContextId, self.frameworkId, 'self', false);
 101  
 102              // Override the render method to make framework selectable.
 103              picker._render = function() {
 104                  var self = this;
 105                  return self._preRender().then(function() {
 106                      var context = {
 107                          competencies: self._competencies,
 108                          framework: self._getFramework(self._frameworkId),
 109                          frameworks: self._frameworks,
 110                          search: self._searchText,
 111                          singleFramework: self._singleFramework,
 112                      };
 113  
 114                      return Templates.render('tool_lp/competency_picker_competencyform', context);
 115                  });
 116              };
 117  
 118              // On selected competency.
 119              picker.on('save', function(e, data) {
 120                  self.setParent(data);
 121              });
 122  
 123              picker.display();
 124          });
 125      };
 126  
 127      return {
 128  
 129          /**
 130           * Main initialisation.
 131           * @param {String} buttonSelector The parent competency button selector.
 132           * @param {String} inputSelector The hidden input field selector.
 133           * @param {String} staticElementSelector The static element displaying the parent competency.
 134           * @param {Number} frameworkId The competency framework ID.
 135           * @param {Number} pageContextId The page context ID.
 136           * @method init
 137           */
 138          init: function(buttonSelector,
 139                          inputSelector,
 140                          staticElementSelector,
 141                          frameworkId,
 142                          pageContextId) {
 143              // Create instance.
 144              new ParentCompetencyForm(buttonSelector,
 145                                      inputSelector,
 146                                      staticElementSelector,
 147                                      frameworkId,
 148                                      pageContextId);
 149          }
 150      };
 151  });


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