芝麻web文件管理V1.00
编辑当前文件:/home2/sdektunc/.trash/cepali/course/yui/src/modchooser/js/modchooser.js
/** * The activity chooser dialogue for courses. * * @module moodle-course-modchooser */ var CSS = { PAGECONTENT: 'body', SECTION: null, SECTIONMODCHOOSER: 'span.section-modchooser-link', SITEMENU: '.block_site_main_menu', SITETOPIC: 'div.sitetopic' }; var MODCHOOSERNAME = 'course-modchooser'; /** * The activity chooser dialogue for courses. * * @constructor * @class M.course.modchooser * @extends M.core.chooserdialogue */ var MODCHOOSER = function() { MODCHOOSER.superclass.constructor.apply(this, arguments); }; Y.extend(MODCHOOSER, M.core.chooserdialogue, { /** * The current section ID. * * @property sectionid * @private * @type Number * @default null */ sectionid: null, /** * Set up the activity chooser. * * @method initializer */ initializer: function() { var sectionclass = M.course.format.get_sectionwrapperclass(); if (sectionclass) { CSS.SECTION = '.' + sectionclass; } var dialogue = Y.one('.chooserdialoguebody'); var header = Y.one('.choosertitle'); var params = {}; this.setup_chooser_dialogue(dialogue, header, params); // Initialize existing sections and register for dynamically created sections this.setup_for_section(); M.course.coursebase.register_module(this); }, /** * Update any section areas within the scope of the specified * selector with AJAX equivalents * * @method setup_for_section * @param baseselector The selector to limit scope to */ setup_for_section: function(baseselector) { if (!baseselector) { baseselector = CSS.PAGECONTENT; } // Setup for site topics Y.one(baseselector).all(CSS.SITETOPIC).each(function(section) { this._setup_for_section(section); }, this); // Setup for standard course topics if (CSS.SECTION) { Y.one(baseselector).all(CSS.SECTION).each(function(section) { this._setup_for_section(section); }, this); } // Setup for the block site menu Y.one(baseselector).all(CSS.SITEMENU).each(function(section) { this._setup_for_section(section); }, this); }, /** * Update any section areas within the scope of the specified * selector with AJAX equivalents * * @method _setup_for_section * @private * @param baseselector The selector to limit scope to */ _setup_for_section: function(section) { var chooserspan = section.one(CSS.SECTIONMODCHOOSER); if (!chooserspan) { return; } var chooserlink = Y.Node.create("
"); chooserspan.get('children').each(function(node) { chooserlink.appendChild(node); }); chooserspan.insertBefore(chooserlink); chooserlink.on('click', this.display_mod_chooser, this); }, /** * Display the module chooser * * @method display_mod_chooser * @param {EventFacade} e Triggering Event */ display_mod_chooser: function(e) { // Set the section for this version of the dialogue if (e.target.ancestor(CSS.SITETOPIC)) { // The site topic has a sectionid of 1 this.sectionid = 1; } else if (e.target.ancestor(CSS.SECTION)) { var section = e.target.ancestor(CSS.SECTION); this.sectionid = section.get('id').replace('section-', ''); } else if (e.target.ancestor(CSS.SITEMENU)) { // The block site menu has a sectionid of 0 this.sectionid = 0; } this.display_chooser(e); }, /** * Helper function to set the value of a hidden radio button when a * selection is made. * * @method option_selected * @param {String} thisoption The selected option value * @private */ option_selected: function(thisoption) { // Add the sectionid to the URL. this.hiddenRadioValue.setAttrs({ name: 'jump', value: thisoption.get('value') + '§ion=' + this.sectionid }); } }, { NAME: MODCHOOSERNAME, ATTRS: { /** * The maximum height (in pixels) of the activity chooser. * * @attribute maxheight * @type Number * @default 800 */ maxheight: { value: 800 } } }); M.course = M.course || {}; M.course.init_chooser = function(config) { return new MODCHOOSER(config); };