[ Index ]

PHP Cross Reference of moodle-2.8

title

Body

[close]

/course/yui/build/moodle-course-modchooser/ -> moodle-course-modchooser-debug.js (source)

   1  YUI.add('moodle-course-modchooser', function (Y, NAME) {
   2  
   3  /**
   4   * The activity chooser dialogue for courses.
   5   *
   6   * @module moodle-course-modchooser
   7   */
   8  
   9  var CSS = {
  10      PAGECONTENT : 'body',
  11      SECTION: null,
  12      SECTIONMODCHOOSER : 'span.section-modchooser-link',
  13      SITEMENU : 'div.block_site_main_menu',
  14      SITETOPIC : 'div.sitetopic'
  15  };
  16  
  17  var MODCHOOSERNAME = 'course-modchooser';
  18  
  19  /**
  20   * The activity chooser dialogue for courses.
  21   *
  22   * @constructor
  23   * @class M.course.modchooser
  24   * @extends M.core.chooserdialogue
  25   */
  26  var MODCHOOSER = function() {
  27      MODCHOOSER.superclass.constructor.apply(this, arguments);
  28  };
  29  
  30  Y.extend(MODCHOOSER, M.core.chooserdialogue, {
  31      /**
  32       * The current section ID.
  33       *
  34       * @property sectionid
  35       * @private
  36       * @type Number
  37       * @default null
  38       */
  39      sectionid : null,
  40  
  41      /**
  42       * Set up the activity chooser.
  43       *
  44       * @method initializer
  45       */
  46      initializer : function() {
  47          var sectionclass = M.course.format.get_sectionwrapperclass();
  48          if (sectionclass) {
  49              CSS.SECTION = '.' + sectionclass;
  50          }
  51          var dialogue = Y.one('.chooserdialoguebody');
  52          var header = Y.one('.choosertitle');
  53          var params = {};
  54          this.setup_chooser_dialogue(dialogue, header, params);
  55  
  56          // Initialize existing sections and register for dynamically created sections
  57          this.setup_for_section();
  58          M.course.coursebase.register_module(this);
  59  
  60          // Catch the page toggle
  61          Y.all('.block_settings #settingsnav .type_course .modchoosertoggle a').on('click', this.toggle_mod_chooser, this);
  62      },
  63  
  64      /**
  65       * Update any section areas within the scope of the specified
  66       * selector with AJAX equivalents
  67       *
  68       * @method setup_for_section
  69       * @param baseselector The selector to limit scope to
  70       */
  71      setup_for_section : function(baseselector) {
  72          if (!baseselector) {
  73              baseselector = CSS.PAGECONTENT;
  74          }
  75  
  76          // Setup for site topics
  77          Y.one(baseselector).all(CSS.SITETOPIC).each(function(section) {
  78              this._setup_for_section(section);
  79          }, this);
  80  
  81          // Setup for standard course topics
  82          if (CSS.SECTION) {
  83              Y.one(baseselector).all(CSS.SECTION).each(function(section) {
  84                  this._setup_for_section(section);
  85              }, this);
  86          }
  87  
  88          // Setup for the block site menu
  89          Y.one(baseselector).all(CSS.SITEMENU).each(function(section) {
  90              this._setup_for_section(section);
  91          }, this);
  92      },
  93  
  94      /**
  95       * Update any section areas within the scope of the specified
  96       * selector with AJAX equivalents
  97       *
  98       * @method _setup_for_section
  99       * @private
 100       * @param baseselector The selector to limit scope to
 101       */
 102      _setup_for_section : function(section) {
 103          var chooserspan = section.one(CSS.SECTIONMODCHOOSER);
 104          if (!chooserspan) {
 105              return;
 106          }
 107          var chooserlink = Y.Node.create("<a href='#' />");
 108          chooserspan.get('children').each(function(node) {
 109              chooserlink.appendChild(node);
 110          });
 111          chooserspan.insertBefore(chooserlink);
 112          chooserlink.on('click', this.display_mod_chooser, this);
 113      },
 114      /**
 115       * Display the module chooser
 116       *
 117       * @method display_mod_chooser
 118       * @param {EventFacade} e Triggering Event
 119       */
 120      display_mod_chooser : function (e) {
 121          // Set the section for this version of the dialogue
 122          if (e.target.ancestor(CSS.SITETOPIC)) {
 123              // The site topic has a sectionid of 1
 124              this.sectionid = 1;
 125          } else if (e.target.ancestor(CSS.SECTION)) {
 126              var section = e.target.ancestor(CSS.SECTION);
 127              this.sectionid = section.get('id').replace('section-', '');
 128          } else if (e.target.ancestor(CSS.SITEMENU)) {
 129              // The block site menu has a sectionid of 0
 130              this.sectionid = 0;
 131          }
 132          this.display_chooser(e);
 133      },
 134  
 135      /**
 136       * Toggle availability of the activity chooser.
 137       *
 138       * @method toggle_mod_chooser
 139       * @param {EventFacade} e
 140       */
 141      toggle_mod_chooser : function(e) {
 142          // Get the add section link
 143          var modchooserlinks = Y.all('div.addresourcemodchooser');
 144  
 145          // Get the dropdowns
 146          var dropdowns = Y.all('div.addresourcedropdown');
 147  
 148          if (modchooserlinks.size() === 0) {
 149              // Continue with non-js action if there are no modchoosers to add
 150              return;
 151          }
 152  
 153          // We need to update the text and link
 154          var togglelink = Y.one('.block_settings #settingsnav .type_course .modchoosertoggle a');
 155  
 156          // The actual text is in the last child
 157          var toggletext = togglelink.get('lastChild');
 158  
 159          var usemodchooser;
 160          // Determine whether they're currently hidden
 161          if (modchooserlinks.item(0).hasClass('visibleifjs')) {
 162              // The modchooser is currently visible, hide it
 163              usemodchooser = 0;
 164              modchooserlinks
 165                  .removeClass('visibleifjs')
 166                  .addClass('hiddenifjs');
 167              dropdowns
 168                  .addClass('visibleifjs')
 169                  .removeClass('hiddenifjs');
 170              toggletext.set('data', M.util.get_string('modchooserenable', 'moodle'));
 171              togglelink.set('href', togglelink.get('href').replace('off', 'on'));
 172          } else {
 173              // The modchooser is currently not visible, show it
 174              usemodchooser = 1;
 175              modchooserlinks
 176                  .addClass('visibleifjs')
 177                  .removeClass('hiddenifjs');
 178              dropdowns
 179                  .removeClass('visibleifjs')
 180                  .addClass('hiddenifjs');
 181              toggletext.set('data', M.util.get_string('modchooserdisable', 'moodle'));
 182              togglelink.set('href', togglelink.get('href').replace('on', 'off'));
 183          }
 184  
 185          M.util.set_user_preference('usemodchooser', usemodchooser);
 186  
 187          // Prevent the page from reloading
 188          e.preventDefault();
 189      },
 190  
 191      /**
 192       * Helper function to set the value of a hidden radio button when a
 193       * selection is made.
 194       *
 195       * @method option_selected
 196       * @param {String} thisoption The selected option value
 197       * @private
 198       */
 199      option_selected : function(thisoption) {
 200          // Add the sectionid to the URL.
 201          this.hiddenRadioValue.setAttrs({
 202              name: 'jump',
 203              value: thisoption.get('value') + '&section=' + this.sectionid
 204          });
 205      }
 206  },
 207  {
 208      NAME : MODCHOOSERNAME,
 209      ATTRS : {
 210          /**
 211           * The maximum height (in pixels) of the activity chooser.
 212           *
 213           * @attribute maxheight
 214           * @type Number
 215           * @default 800
 216           */
 217          maxheight : {
 218              value : 800
 219          }
 220      }
 221  });
 222  M.course = M.course || {};
 223  M.course.init_chooser = function(config) {
 224      return new MODCHOOSER(config);
 225  };
 226  
 227  
 228  }, '@VERSION@', {"requires": ["moodle-core-chooserdialogue", "moodle-course-coursebase"]});


Generated: Fri Nov 28 20:29:05 2014 Cross-referenced by PHPXref 0.7.1