MDL-31830 course: improvements to JS coding style
authorSam Hemelryk <sam@moodle.com>
Wed, 2 Oct 2013 23:15:34 +0000 (12:15 +1300)
committerSam Hemelryk <sam@moodle.com>
Sun, 6 Oct 2013 21:22:51 +0000 (10:22 +1300)
course/yui/build/moodle-course-management/moodle-course-management-debug.js
course/yui/build/moodle-course-management/moodle-course-management-min.js
course/yui/build/moodle-course-management/moodle-course-management.js
course/yui/src/management/js/category.js
course/yui/src/management/js/console.js
course/yui/src/management/js/course.js
course/yui/src/management/js/dd.js
course/yui/src/management/js/item.js

index 5cd228a..2530173 100644 (file)
Binary files a/course/yui/build/moodle-course-management/moodle-course-management-debug.js and b/course/yui/build/moodle-course-management/moodle-course-management-debug.js differ
index a610f24..a5405d8 100644 (file)
Binary files a/course/yui/build/moodle-course-management/moodle-course-management-min.js and b/course/yui/build/moodle-course-management/moodle-course-management-min.js differ
index 56773b9..e79293d 100644 (file)
Binary files a/course/yui/build/moodle-course-management/moodle-course-management.js and b/course/yui/build/moodle-course-management/moodle-course-management.js differ
index 59b662a..39585c2 100644 (file)
@@ -1,7 +1,7 @@
 /**
  * A managed category.
  *
- * @namespace M.core_course.management
+ * @namespace M.course.management
  * @class Category
  * @constructor
  * @extends Item
@@ -15,9 +15,21 @@ Category.ATTRS = {
     /**
      * The category ID relating to this category.
      * @attribute categoryid
-     * @type Int
+     * @type Number
+     * @writeOnce
+     * @default null
      */
-    categoryid : {},
+    categoryid : {
+        getter : function (value, name) {
+            if (value === null) {
+                value = this.get('node').getData('id');
+                this.set(name, value);
+            }
+            return value;
+        },
+        value : null,
+        writeOnce : true
+    },
 
     /**
      * True if this category is the currently selected category.
@@ -40,19 +52,14 @@ Category.ATTRS = {
     },
 
     /**
-     * An array fo courses belonging to this category
+     * An array of courses belonging to this category.
      * @attribute courses
      * @type Course[]
-     * @default []
+     * @default Array
      */
     courses : {
-        setter : function(item, name) {
-            if (Y.Lang.isArray(item)) {
-                return item;
-            }
-            var items = this.get(name);
-            items.push(item);
-            return items;
+        validator : function(val) {
+            return Y.Lang.isArray(val);
         },
         value : []
     }
@@ -63,8 +70,6 @@ Category.prototype = {
      * @method initializer
      */
     initializer : function() {
-        var node = this.get('node');
-        this.set('categoryid', node.getData('id'));
         this.set('itemname', 'category');
     },
 
@@ -79,11 +84,13 @@ Category.prototype = {
 
     /**
      * Registers a course as belonging to this category.
-     * @method register_course
+     * @method registerCourse
      * @param {Course} course
      */
-    register_course : function(course) {
-        this.set('courses', course);
+    registerCourse : function(course) {
+        var courses = this.get('courses');
+        courses.push(course);
+        this.set('courses', courses);
     },
 
     /**
@@ -98,35 +105,35 @@ Category.prototype = {
         var catarg = {categoryid : this.get('categoryid')};
         switch (action) {
             case 'moveup':
-                e.halt();
-                this.get('console').perform_ajax_action('movecategoryup', catarg, this.moveup, this);
+                e.preventDefault();
+                this.get('console').performAjaxAction('movecategoryup', catarg, this.moveup, this);
                 break;
             case 'movedown':
-                e.halt();
-                this.get('console').perform_ajax_action('movecategorydown', catarg, this.movedown, this);
+                e.preventDefault();
+                this.get('console').performAjaxAction('movecategorydown', catarg, this.movedown, this);
                 break;
             case 'show':
-                e.halt();
-                this.get('console').perform_ajax_action('showcategory', catarg, this.show, this);
+                e.preventDefault();
+                this.get('console').performAjaxAction('showcategory', catarg, this.show, this);
                 break;
             case 'hide':
-                e.halt();
-                this.get('console').perform_ajax_action('hidecategory', catarg, this.hide, this);
+                e.preventDefault();
+                this.get('console').performAjaxAction('hidecategory', catarg, this.hide, this);
                 break;
             case 'expand':
-                e.halt();
+                e.preventDefault();
                 if (this.get('node').getData('expanded') === '0') {
-                    this.get('node').setData('expanded', true);
-                    this.get('console').perform_ajax_action('getsubcategorieshtml', catarg, this.loadSubcategories, this);
+                    this.get('node').setAttribute('data-expanded', '1').setData('expanded', 'true');
+                    this.get('console').performAjaxAction('getsubcategorieshtml', catarg, this.loadSubcategories, this);
                 }
                 this.expand();
                 break;
             case 'collapse':
-                e.halt();
+                e.preventDefault();
                 this.collapse();
                 break;
             default:
-                Y.log('Invalid AJAX action requested of managed category.', 'warn', 'core_course');
+                Y.log('Invalid AJAX action requested of managed category.', 'warn', 'moodle-course-management');
                 return false;
         }
     },
@@ -139,8 +146,7 @@ Category.prototype = {
         var node = this.get('node'),
             action = node.one('a[data-action=expand]');
         node.removeClass('collapsed');
-        action.setAttribute('data-action', 'collapse');
-        action.one('img').setAttrs({
+        action.setAttribute('data-action', 'collapse').one('img').setAttrs({
             src : M.util.image_url('t/switch_minus', 'moodle'),
             title : M.util.get_string('collapse', 'moodle'),
             alt : M.util.get_string('collapse', 'moodle')
@@ -155,8 +161,7 @@ Category.prototype = {
         var node = this.get('node'),
             action = node.one('a[data-action=collapse]');
         node.addClass('collapsed');
-        action.setAttribute('data-action', 'expand');
-        action.one('img').setAttrs({
+        action.setAttribute('data-action', 'expand').one('img').setAttrs({
             src : M.util.image_url('t/switch_plus', 'moodle'),
             title : M.util.get_string('expand', 'moodle'),
             alt : M.util.get_string('expand', 'moodle')
@@ -168,25 +173,26 @@ Category.prototype = {
      *
      * @method loadSubcategories
      * @protected
-     * @param {Int} transactionid The transaction ID of the AJAX request (unique)
+     * @param {Number} transactionid The transaction ID of the AJAX request (unique)
      * @param {Object} response The response from the AJAX request.
      * @param {Object} args The arguments given to the request.
-     * @returns {Boolean}
+     * @return {Boolean} Returns true on success - false otherwise.
      */
     loadSubcategories : function(transactionid, response, args) {
-        var outcome = this.check_ajax_response(transactionid, response, args),
+        var outcome = this.checkAjaxResponse(transactionid, response, args),
             node = this.get('node'),
             console = this.get('console');
         if (outcome === false) {
-            Y.log('AJAX failed to load sub categories for '+this.get('itemname'), 'warn', 'core_course');
+            Y.log('AJAX failed to load sub categories for '+this.get('itemname'), 'warn', 'moodle-course-management');
             return false;
         }
-        Y.log('AJAX loaded subcategories for '+this.get('itemname'), 'info', 'core_course');
+        Y.log('AJAX loaded subcategories for '+this.get('itemname'), 'info', 'moodle-course-management');
         node.append(outcome.html);
-        console.initialise_categories(node);
+        console.initialiseCategories(node);
         if (M.core && M.core.actionmenu && M.core.actionmenu.newDOMNode) {
             M.core.actionmenu.newDOMNode(node);
         }
+        return true;
     },
 
     /**
@@ -210,7 +216,7 @@ Category.prototype = {
             confirm.on('complete-yes', function() {
                 confirm.hide();
                 confirm.destroy();
-                this.get('console').perform_ajax_action('movecourseintocategory', {
+                this.get('console').performAjaxAction('movecourseintocategory', {
                     categoryid : this.get('categoryid'),
                     courseid : course.get('courseid')
                 }, this.completeMoveCourse, this);
@@ -223,20 +229,24 @@ Category.prototype = {
      * Completes moving a course to this category.
      * @method completeMoveCourse
      * @protected
-     * @param {Int} transactionid The transaction ID of the AJAX request (unique)
+     * @param {Number} transactionid The transaction ID of the AJAX request (unique)
      * @param {Object} response The response from the AJAX request.
      * @param {Object} args The arguments given to the request.
      * @returns {Boolean}
      */
     completeMoveCourse : function(transactionid, response, args) {
-        var outcome = this.check_ajax_response(transactionid, response, args),
+        var outcome = this.checkAjaxResponse(transactionid, response, args),
             course;
         if (outcome === false) {
-            Y.log('AJAX failed to move courses into this category: '+this.get('itemname'), 'warn', 'core_course');
+            Y.log('AJAX failed to move courses into this category: '+this.get('itemname'), 'warn', 'moodle-course-management');
+            return false;
+        }
+        course = this.get('console').getCourseById(args.courseid);
+        if (!course) {
+            Y.log('Course was moved but the course listing could not be found to reflect this', 'warn', 'moodle-course-management');
             return false;
         }
-        course = this.get('console').get_course_by_id(args.courseid);
-        Y.log('Moved the course ('+course.getName()+') into this category ('+this.getName()+')', 'info', 'core_course');
+        Y.log('Moved the course ('+course.getName()+') into this category ('+this.getName()+')', 'info', 'moodle-course-management');
         this.highlight();
         if (course) {
             course.remove();
@@ -248,15 +258,15 @@ Category.prototype = {
      * Makes an item visible.
      *
      * @method show
-     * @param {Int} transactionid The transaction ID of the AJAX request (unique)
+     * @param {Number} transactionid The transaction ID of the AJAX request (unique)
      * @param {Object} response The response from the AJAX request.
      * @param {Object} args The arguments given to the request.
      * @returns {Boolean}
      */
     show : function(transactionid, response, args) {
-        var outcome = this.check_ajax_response(transactionid, response, args);
+        var outcome = this.checkAjaxResponse(transactionid, response, args);
         if (outcome === false) {
-            Y.log('AJAX request to show '+this.get('itemname')+' by outcome.', 'warn', 'core_course');
+            Y.log('AJAX request to show '+this.get('itemname')+' by outcome.', 'warn', 'moodle-course-management');
             return false;
         }
 
@@ -268,22 +278,22 @@ Category.prototype = {
             this.updateCourseVisiblity(outcome.coursevisibility);
         }
         this.updated();
-        Y.log('Success: category made visible by AJAX.', 'info', 'core_course');
+        Y.log('Success: category made visible by AJAX.', 'info', 'moodle-course-management');
     },
 
     /**
      * Hides an item.
      *
      * @method hide
-     * @param {Int} transactionid The transaction ID of the AJAX request (unique)
+     * @param {Number} transactionid The transaction ID of the AJAX request (unique)
      * @param {Object} response The response from the AJAX request.
      * @param {Object} args The arguments given to the request.
      * @returns {Boolean}
      */
     hide : function(transactionid, response, args) {
-        var outcome = this.check_ajax_response(transactionid, response, args);
+        var outcome = this.checkAjaxResponse(transactionid, response, args);
         if (outcome === false) {
-            Y.log('AJAX request to hide '+this.get('itemname')+' by outcome.', 'warn', 'core_course');
+            Y.log('AJAX request to hide '+this.get('itemname')+' by outcome.', 'warn', 'moodle-course-management');
             return false;
         }
         this.markHidden();
@@ -294,12 +304,13 @@ Category.prototype = {
             this.updateCourseVisiblity(outcome.coursevisibility);
         }
         this.updated();
-        Y.log('Success: '+this.get('itemname')+' made hidden by AJAX.', 'info', 'core_course');
+        Y.log('Success: '+this.get('itemname')+' made hidden by AJAX.', 'info', 'moodle-course-management');
     },
 
     /**
      * Updates the visibility of child courses if required.
      * @method updateCourseVisiblity
+     * @chainable
      * @param courses
      */
     updateCourseVisiblity : function(courses) {
@@ -308,23 +319,27 @@ Category.prototype = {
             course;
         try {
             for (key in courses) {
-                course = console.get_course_by_id(courses[key].id);
-                if (course.get) {
-                    if (courses[key].show === "1") {
-                        course.markVisible();
-                    } else {
-                        course.markHidden();
+                if (courses.hasOwnProperty[key]) {
+                    course = console.getCourseById(courses[key].id);
+                    if (course) {
+                        if (courses[key].show === "1") {
+                            course.markVisible();
+                        } else {
+                            course.markHidden();
+                        }
                     }
                 }
             }
         } catch (err) {
-            Y.log('Error trying to update course visibility: ' + err.message, 'warn', 'core_course');
+            Y.log('Error trying to update course visibility: ' + err.message, 'warn', 'moodle-course-management');
         }
+        return this;
     },
 
     /**
      * Updates the visibility of subcategories if required.
      * @method updateChildVisibility
+     * @chainable
      * @param categories
      */
     updateChildVisibility : function(categories) {
@@ -333,18 +348,21 @@ Category.prototype = {
             category;
         try {
             for (key in categories) {
-                category = console.get_category_by_id(categories[key].id);
-                if (category.get) {
-                    if (categories[key].show === "1") {
-                        category.markVisible();
-                    } else {
-                        category.markHidden();
+                if (categories.hasOwnProperty[key]) {
+                    category = console.getCategoryById(categories[key].id);
+                    if (category) {
+                        if (categories[key].show === "1") {
+                            category.markVisible();
+                        } else {
+                            category.markHidden();
+                        }
                     }
                 }
             }
         } catch (err) {
-            Y.log('Error trying to update category visibility: ' + err.message, 'warn', 'core_course');
+            Y.log('Error trying to update category visibility: ' + err.message, 'warn', 'moodle-course-management');
         }
+        return this;
     }
 };
 Y.extend(Category, Item, Category.prototype);
\ No newline at end of file
index b8f07db..e968d3b 100644 (file)
@@ -1,7 +1,7 @@
 /**
  * Provides drop down menus for list of action links.
  *
- * @module moodle-core_course-management
+ * @module moodle-course-management
  */
 
 /**
@@ -9,7 +9,7 @@
  *
  * Provides the organisation for course and category management JS.
  *
- * @namespace M.core_course.management
+ * @namespace M.course.management
  * @class Console
  * @constructor
  * @extends Y.Base
@@ -27,7 +27,7 @@ Console.ATTRS = {
      */
     element : {
         setter : function(node) {
-            if (typeof(node) === 'string') {
+            if (typeof node === 'string') {
                 node = Y.one('#'+node);
             }
             return node;
@@ -38,15 +38,21 @@ Console.ATTRS = {
      * The category listing container node.
      * @attribute categorylisting
      * @type Node
+     * @default null
      */
-    categorylisting : {},
+    categorylisting : {
+        value : null
+    },
 
     /**
      * The course listing container node.
      * @attribute courselisting
      * @type Node
+     * @default null
      */
-    courselisting : {},
+    courselisting : {
+        value : null
+    },
 
     /**
      * The course details container node.
@@ -55,22 +61,28 @@ Console.ATTRS = {
      * @default null
      */
     coursedetails : {
-        value: null
+        value : null
     },
 
     /**
      * The id of the currently active category.
      * @attribute activecategoryid
-     * @type Int
+     * @type Number
+     * @default null
      */
-    activecategoryid : {},
+    activecategoryid : {
+        value : null
+    },
 
     /**
      * The id of the currently active course.
      * @attribute activecourseid
-     * @type Int
+     * @type Number
+     * @default Null
      */
-    activecourseid : {},
+    activecourseid : {
+        value : null
+    },
 
     /**
      * The categories that are currently available through the management interface.
@@ -93,17 +105,12 @@ Console.ATTRS = {
     /**
      * The courses that are currently available through the management interface.
      * @attribute courses
-     * @type Array
-     * @default []
+     * @type Course[]
+     * @default Array
      */
     courses : {
-        setter : function(item, name) {
-            if (Y.Lang.isArray(item)) {
-                return item;
-            }
-            var items = this.get(name);
-            items.push(item);
-            return items;
+        validator : function(val) {
+            return Y.Lang.isArray(val);
         },
         value : []
     },
@@ -111,7 +118,7 @@ Console.ATTRS = {
     /**
      * The currently displayed page of courses.
      * @attribute page
-     * @type Int
+     * @type Number
      * @default null
      */
     page : {
@@ -128,7 +135,7 @@ Console.ATTRS = {
     /**
      * The total pages of courses that can be shown for this category.
      * @attribute totalpages
-     * @type Int
+     * @type Number
      * @default null
      */
     totalpages : {
@@ -145,7 +152,7 @@ Console.ATTRS = {
     /**
      * The total number of courses belonging to this category.
      * @attribute totalcourses
-     * @type Int
+     * @type Number
      * @default null
      */
     totalcourses : {
@@ -200,7 +207,7 @@ Console.prototype = {
      * @method initializer
      */
     initializer : function() {
-        Y.log('Initialising course category management console', 'note', 'core_course');
+        Y.log('Initialising course category management console', 'info', 'moodle-course-management');
         this.set('element', 'coursecat-management');
         var element = this.get('element'),
             categorylisting = element.one('#category-listing'),
@@ -223,8 +230,8 @@ Console.prototype = {
         if (selectedcourse) {
             this.set('activecourseid', selectedcourse.getData('id'));
         }
-        this.initialise_categories(categorylisting);
-        this.initialise_courses();
+        this.initialiseCategories(categorylisting);
+        this.initialiseCourses();
 
         if (courselisting) {
             // No need for dragdrop if we don't have a course listing.
@@ -234,11 +241,11 @@ Console.prototype = {
 
     /**
      * Initialises all the categories being shown.
-     * @method initialise_categories
+     * @method initialiseCategories
      * @private
      * @returns {boolean}
      */
-    initialise_categories : function(listing) {
+    initialiseCategories : function(listing) {
         var count = 0;
         if (!listing) {
             return false;
@@ -251,110 +258,143 @@ Console.prototype = {
             count++;
         }, this);
         if (!this.categoriesinit) {
-            this.get('categorylisting').delegate('click', this.handle_category_delegation, 'a[data-action]', this);
+            this.get('categorylisting').delegate('click', this.handleCategoryDelegation, 'a[data-action]', this);
             this.categoriesinit = true;
-            Y.log(count+' categories being managed', 'note', 'core_course');
+            Y.log(count+' categories being managed', 'info', 'moodle-course-management');
         } else {
-            Y.log(count+' new categories being managed', 'note', 'core_course');
+            Y.log(count+' new categories being managed', 'info', 'moodle-course-management');
         }
     },
 
     /**
      * Initialises all the categories being shown.
-     * @method initialise_courses
+     * @method initialiseCourses
      * @private
      * @returns {boolean}
      */
-    initialise_courses : function() {
-        var category = this.get_category_by_id(this.get('activecategoryid')),
+    initialiseCourses : function() {
+        var category = this.getCategoryById(this.get('activecategoryid')),
             listing = this.get('courselisting'),
             count = 0;
         if (!listing) {
             return false;
         }
+        if (!category) {
+            Y.log('Couldn\'t find the current category object.', 'warn', 'moodle-course-management');
+            return false;
+        }
         listing.all('.listitem[data-id]').each(function(node){
-            this.set('courses', new Course({
+            this.registerCourse(new Course({
                 node : node,
                 console : this,
                 category : category
             }));
             count++;
         }, this);
-        listing.delegate('click', this.handle_course_delegation, 'a[data-action]', this);
-        Y.log(count+' courses being managed', 'note', 'core_course');
+        listing.delegate('click', this.handleCourseDelegation, 'a[data-action]', this);
+        Y.log(count+' courses being managed', 'info', 'moodle-course-management');
+    },
+
+    /**
+     * Registers a course within the management display.
+     * @method registerCourse
+     * @param {Course} course
+     */
+    registerCourse : function(course) {
+        var courses = this.get('courses');
+        courses.push(course);
+        this.set('courses', courses);
     },
 
     /**
      * Handles the event fired by a delegated course listener.
      *
-     * @method handle_course_delegation
+     * @method handleCourseDelegation
      * @protected
      * @param {EventFacade} e
      */
-    handle_course_delegation : function(e) {
+    handleCourseDelegation : function(e) {
         var target = e.currentTarget,
             action = target.getData('action'),
             courseid = target.ancestor('.listitem').getData('id'),
-            course = this.get_course_by_id(courseid);
-        course.handle(action, e);
+            course = this.getCourseById(courseid);
+        if (course) {
+            course.handle(action, e);
+        } else {
+            Y.log('Course with ID '+courseid+' could not be found for delegation', 'error', 'moodle-course-management');
+        }
     },
 
     /**
      * Handles the event fired by a delegated course listener.
      *
-     * @method handle_category_delegation
+     * @method handleCategoryDelegation
      * @protected
      * @param {EventFacade} e
      */
-    handle_category_delegation : function(e) {
+    handleCategoryDelegation : function(e) {
         var target = e.currentTarget,
             action = target.getData('action'),
             categoryid = target.ancestor('.listitem').getData('id'),
-            category = this.get_category_by_id(categoryid);
-        category.handle(action, e);
+            category = this.getCategoryById(categoryid);
+        if (category) {
+            category.handle(action, e);
+        } else {
+            Y.log('Could not find category to delegate to.', 'error', 'moodle-course-management');
+        }
     },
 
     /**
      * Returns the category with the given ID.
-     * @method get_category_by_id
-     * @param {Int} id
-     * @returns {Category|Int} The category or the categoryid given if there is no matching category.
+     * @method getCategoryById
+     * @param {Number} id
+     * @returns {Category|Boolean} The category or false if it can't be found.
      */
-    get_category_by_id : function(id) {
-        var i, category, categories = this.get('categories'), length = categories.length;
+    getCategoryById : function(id) {
+        var i,
+            category,
+            categories = this.get('categories'),
+            length = categories.length;
         for (i = 0; i < length; i++) {
             category = categories[i];
             if (category.get('categoryid') === id) {
                 return category;
             }
         }
-        return id;
+        return false;
     },
 
     /**
      * Returns the course with the given id.
-     * @method get_course_by_id
-     * @param {Int} id
-     * @returns {Category|Int} The course or the courseid given if there is no matching category.
+     * @method getCourseById
+     * @param {Number} id
+     * @returns {Course|Boolean} The course or false if not found/
      */
-    get_course_by_id : function(id) {
-        var i, course, courses = this.get('courses'), length = courses.length;
+    getCourseById : function(id) {
+        var i,
+            course,
+            courses = this.get('courses'),
+            length = courses.length;
         for (i = 0; i < length; i++) {
-            course = courses[i];
-            if (course.get('courseid') === id) {
-                return course;
+            if (!courses.hadOwnPropery(i)) {
+                course = courses[i];
+                if (course.get('courseid') === id) {
+                    return course;
+                }
             }
         }
-        return false;
+        return id;
     },
 
     /**
      * Removes the course with the given ID.
-     * @method remove_course_by_id
-     * @param {Int} id
+     * @method removeCourseById
+     * @param {Number} id
      */
-    remove_course_by_id : function() {
+    removeCourseById : function() {
         var courses = this.get('courses'),
+            length = courses.length,
+            course,
             i;
         for (i = 0; i < length; i++) {
             course = courses[i];
@@ -368,13 +408,13 @@ Console.prototype = {
     /**
      * Performs an AJAX action.
      *
-     * @method perform_ajax_action
+     * @method performAjaxAction
      * @param {String} action The action to perform.
      * @param {Object} args The arguments to pass through with teh request.
      * @param {Function} callback The function to call when all is done.
      * @param {Object} context The object to use as the context for the callback.
      */
-    perform_ajax_action : function(action, args, callback, context) {
+    performAjaxAction : function(action, args, callback, context) {
         var io = new Y.IO();
         args.action = action;
         args.ajax = '1';
@@ -392,19 +432,15 @@ Console.prototype = {
 };
 Y.extend(Console, Y.Base, Console.prototype);
 
-/**
- * Course namespace.
- * @static
- * @namespace M
- * @class course
- */
 M.course = M.course || {};
+M.course.management = M.course.management || {};
+M.course.management.console = null;
 
 /**
  * Initalises the course management console.
  * @static
  * @param {Object} config
  */
-M.course.init_management = function(config) {
-    M.course.console = new Console(config);
+M.course.management.init = function(config) {
+    M.course.management.console = new Console(config);
 };
\ No newline at end of file
index fc0c252..aea78a3 100644 (file)
@@ -1,7 +1,7 @@
 /**
  * A managed course.
  *
- * @namespace M.core_course.management
+ * @namespace M.course.management
  * @class Course
  * @constructor
  * @extends Item
@@ -16,7 +16,7 @@ Course.ATTRS = {
     /**
      * The course ID of this course.
      * @attribute courseid
-     * @type Int
+     * @type Number
      */
     courseid : {},
 
@@ -68,8 +68,8 @@ Course.prototype = {
         var node = this.get('node'),
             category = this.get('category');
         this.set('courseid', node.getData('id'));
-        if (category && category.register_course) {
-            category.register_course(this);
+        if (category && category.registerCourse) {
+            category.registerCourse(this);
         }
         this.set('itemname', 'course');
     },
@@ -96,22 +96,22 @@ Course.prototype = {
         switch (action) {
             case 'moveup':
                 e.halt();
-                console.perform_ajax_action('movecourseup', args, this.moveup, this);
+                console.performAjaxAction('movecourseup', args, this.moveup, this);
                 break;
             case 'movedown':
                 e.halt();
-                console.perform_ajax_action('movecoursedown', args, this.movedown, this);
+                console.performAjaxAction('movecoursedown', args, this.movedown, this);
                 break;
             case 'show':
                 e.halt();
-                console.perform_ajax_action('showcourse', args, this.show, this);
+                console.performAjaxAction('showcourse', args, this.show, this);
                 break;
             case 'hide':
                 e.halt();
-                console.perform_ajax_action('hidecourse', args, this.hide, this);
+                console.performAjaxAction('hidecourse', args, this.hide, this);
                 break;
             default:
-                Y.log('Invalid AJAX action requested of managed course.', 'warn', 'core_course');
+                Y.log('Invalid AJAX action requested of managed course.', 'warn', 'moodle-course-management');
                 return false;
         }
     },
@@ -121,7 +121,7 @@ Course.prototype = {
      * @method remove
      */
     remove : function() {
-        this.get('console').remove_course_by_id(this.get('courseid'));
+        this.get('console').removeCourseById(this.get('courseid'));
         this.get('node').remove();
     },
 
@@ -129,8 +129,8 @@ Course.prototype = {
      * Moves this course after another course.
      *
      * @method moveAfter
-     * @param {Int} moveaftercourse The course to move after or 0 to put it at the top.
-     * @param {Int} previousid the course it was previously after in case we need to revert.
+     * @param {Number} moveaftercourse The course to move after or 0 to put it at the top.
+     * @param {Number} previousid the course it was previously after in case we need to revert.
      */
     moveAfter : function(moveaftercourse, previousid) {
         var console = this.get('console'),
@@ -139,7 +139,7 @@ Course.prototype = {
                 moveafter : moveaftercourse,
                 previous : previousid
             };
-        console.perform_ajax_action('movecourseafter', args, this.moveAfterResponse, this);
+        console.performAjaxAction('movecourseafter', args, this.moveAfterResponse, this);
     },
 
     /**
@@ -147,18 +147,18 @@ Course.prototype = {
      *
      * @method moveAfterResponse
      * @protected
-     * @param {Int} transactionid The transaction ID for the request.
+     * @param {Number} transactionid The transaction ID for the request.
      * @param {Object} response The response to the request.
      * @param {Objects} args The arguments that were given with the request.
      * @returns {Boolean}
      */
     moveAfterResponse : function(transactionid, response, args) {
-        var outcome = this.check_ajax_response(transactionid, response, args),
+        var outcome = this.checkAjaxResponse(transactionid, response, args),
             node = this.get('node'),
             previous;
         if (outcome === false) {
             previous = node.ancestor('ul').one('li[data-id='+args.previous+']');
-            Y.log('AJAX failed to move this course after the requested course', 'warn', 'core_course');
+            Y.log('AJAX failed to move this course after the requested course', 'warn', 'moodle-course-management');
             if (previous) {
                 // After the last previous.
                 previous.insertAfter(node, 'after');
@@ -168,7 +168,7 @@ Course.prototype = {
             }
             return false;
         }
-        Y.log('AJAX successfully moved course ('+this.getName()+')', 'info', 'core_course');
+        Y.log('AJAX successfully moved course ('+this.getName()+')', 'info', 'moodle-course-management');
         this.highlight();
     }
 };
index 37dd2b0..8e24c14 100644 (file)
@@ -1,7 +1,7 @@
 /**
  * Drag and Drop handler
  *
- * @namespace M.core_course.management
+ * @namespace M.course.management
  * @class DragDrop
  * @constructor
  * @extends Y.Base
@@ -239,19 +239,20 @@ DragDrop.prototype = {
             previousid;
 
         if (!drag.test('.listitem-course')) {
-            Y.log('Wasn\'t what I expected', 'warn', 'core_course');
+            Y.log('Wasn\'t what I expected', 'warn', 'moodle-course-management');
             alert(drag);
             return false;
         }
         courseid = drag.getData('id');
-        course = console.get_course_by_id(courseid);
-
         if (iscategory) {
             categoryid = drop.ancestor('.listitem-category').getData('id');
             Y.log('Course ' + courseid + ' dragged into category ' + categoryid);
-            category = console.get_category_by_id(categoryid);
+            category = console.getCategoryById(categoryid);
             if (category) {
-                category.moveCourseTo(course);
+                course = console.getCourseById(courseid);
+                if (course) {
+                    category.moveCourseTo(course);
+                }
             }
         } else if (iscourse || drop.ancestor('#course-listing')) {
             previoussibling = drag.get('previousSibling');
@@ -261,7 +262,7 @@ DragDrop.prototype = {
                 course.moveAfter(aftercourseid, previousid);
             }
         } else {
-            Y.log('Course dropped over unhandled target.', 'info', 'core_course');
+            Y.log('Course dropped over unhandled target.', 'info', 'moodle-course-management');
         }
     }
 };
index 1cc4518..c492880 100644 (file)
@@ -1,7 +1,7 @@
 /**
  * A managed course.
  *
- * @namespace M.core_course.management
+ * @namespace M.course.management
  * @class Item
  * @constructor
  * @extends Y.Base
@@ -50,20 +50,20 @@ Item.prototype = {
     /**
      * Checks and parses an AJAX response for an item.
      *
-     * @method check_ajax_response
+     * @method checkAjaxResponse
      * @protected
-     * @param {Int} transactionid The transaction ID of the AJAX request (unique)
+     * @param {Number} transactionid The transaction ID of the AJAX request (unique)
      * @param {Object} response The response from the AJAX request.
      * @param {Object} args The arguments given to the request.
      * @returns {Object|Boolean}
      */
-    check_ajax_response : function(transactionid, response, args) {
+    checkAjaxResponse : function(transactionid, response, args) {
         if (response.status !== 200) {
-            Y.log('Error: AJAX response resulted in non 200 status.', 'error', 'Item.check_ajax_response');
+            Y.log('Error: AJAX response resulted in non 200 status.', 'error', 'Item.checkAjaxResponse');
             return false;
         }
         if (transactionid === null || args === null) {
-            Y.log('Error: Invalid AJAX response details provided.', 'error', 'Item.check_ajax_response');
+            Y.log('Error: Invalid AJAX response details provided.', 'error', 'Item.checkAjaxResponse');
             return false;
         }
         var outcome = Y.JSON.parse(response.responseText);
@@ -80,7 +80,7 @@ Item.prototype = {
      * Moves an item up by one.
      *
      * @method moveup
-     * @param {Int} transactionid The transaction ID of the AJAX request (unique)
+     * @param {Number} transactionid The transaction ID of the AJAX request (unique)
      * @param {Object} response The response from the AJAX request.
      * @param {Object} args The arguments given to the request.
      * @returns {Boolean}
@@ -93,9 +93,9 @@ Item.prototype = {
             previousup,
             previousdown,
             tmpnode,
-            outcome = this.check_ajax_response(transactionid, response, args);
+            outcome = this.checkAjaxResponse(transactionid, response, args);
         if (outcome === false) {
-            Y.log('AJAX request to move '+this.get('itemname')+' up failed by outcome.', 'warn', 'core_course');
+            Y.log('AJAX request to move '+this.get('itemname')+' up failed by outcome.', 'warn', 'moodle-course-management');
             return false;
         }
         node = this.get('node');
@@ -124,9 +124,9 @@ Item.prototype = {
                 }
             }
             this.updated(true);
-            Y.log('Success: '+this.get('itemname')+' moved up by AJAX.', 'info', 'core_course');
+            Y.log('Success: '+this.get('itemname')+' moved up by AJAX.', 'info', 'moodle-course-management');
         } else {
-            Y.log(this.get('itemname')+' cannot be moved up as its the top item', 'warn', 'core_course');
+            Y.log(this.get('itemname')+' cannot be moved up as its the top item', 'warn', 'moodle-course-management');
         }
     },
 
@@ -134,7 +134,7 @@ Item.prototype = {
      * Moves an item down by one.
      *
      * @method movedown
-     * @param {Int} transactionid The transaction ID of the AJAX request (unique)
+     * @param {Number} transactionid The transaction ID of the AJAX request (unique)
      * @param {Object} response The response from the AJAX request.
      * @param {Object} args The arguments given to the request.
      * @returns {Boolean}
@@ -147,9 +147,9 @@ Item.prototype = {
             nextup,
             nextdown,
             tmpnode,
-            outcome = this.check_ajax_response(transactionid, response, args);
+            outcome = this.checkAjaxResponse(transactionid, response, args);
         if (outcome === false) {
-            Y.log('AJAX request to move '+this.get('itemname')+' down failed by outcome.', 'warn', 'core_course');
+            Y.log('AJAX request to move '+this.get('itemname')+' down failed by outcome.', 'warn', 'moodle-course-management');
             return false;
         }
         node = this.get('node');
@@ -178,9 +178,9 @@ Item.prototype = {
                 }
             }
             this.updated(true);
-            Y.log('Success: '+this.get('itemname')+' moved down by AJAX.', 'info', 'core_course');
+            Y.log('Success: '+this.get('itemname')+' moved down by AJAX.', 'info', 'moodle-course-management');
         } else {
-            Y.log(this.get('itemname')+' cannot be moved down as its the last item', 'warn', 'core_course');
+            Y.log(this.get('itemname')+' cannot be moved down as its the last item', 'warn', 'moodle-course-management');
         }
     },
 
@@ -188,21 +188,21 @@ Item.prototype = {
      * Makes an item visible.
      *
      * @method show
-     * @param {Int} transactionid The transaction ID of the AJAX request (unique)
+     * @param {Number} transactionid The transaction ID of the AJAX request (unique)
      * @param {Object} response The response from the AJAX request.
      * @param {Object} args The arguments given to the request.
      * @returns {Boolean}
      */
     show : function(transactionid, response, args) {
-        var outcome = this.check_ajax_response(transactionid, response, args);
+        var outcome = this.checkAjaxResponse(transactionid, response, args);
         if (outcome === false) {
-            Y.log('AJAX request to show '+this.get('itemname')+' by outcome.', 'warn', 'core_course');
+            Y.log('AJAX request to show '+this.get('itemname')+' by outcome.', 'warn', 'moodle-course-management');
             return false;
         }
 
         this.markVisible();
         this.updated();
-        Y.log('Success: '+this.get('itemname')+' made visible by AJAX.', 'info', 'core_course');
+        Y.log('Success: '+this.get('itemname')+' made visible by AJAX.', 'info', 'moodle-course-management');
     },
 
     /**
@@ -211,7 +211,7 @@ Item.prototype = {
      */
     markVisible : function() {
         this.get('node').setAttribute('data-visible', '1');
-        Y.log('Marked '+this.get('itemname')+' as visible', 'note', 'core_course');
+        Y.log('Marked '+this.get('itemname')+' as visible', 'info', 'moodle-course-management');
         return true;
     },
 
@@ -219,20 +219,20 @@ Item.prototype = {
      * Hides an item.
      *
      * @method hide
-     * @param {Int} transactionid The transaction ID of the AJAX request (unique)
+     * @param {Number} transactionid The transaction ID of the AJAX request (unique)
      * @param {Object} response The response from the AJAX request.
      * @param {Object} args The arguments given to the request.
      * @returns {Boolean}
      */
     hide : function(transactionid, response, args) {
-        var outcome = this.check_ajax_response(transactionid, response, args);
+        var outcome = this.checkAjaxResponse(transactionid, response, args);
         if (outcome === false) {
-            Y.log('AJAX request to hide '+this.get('itemname')+' by outcome.', 'warn', 'core_course');
+            Y.log('AJAX request to hide '+this.get('itemname')+' by outcome.', 'warn', 'moodle-course-management');
             return false;
         }
         this.markHidden();
         this.updated();
-        Y.log('Success: '+this.get('itemname')+' made hidden by AJAX.', 'info', 'core_course');
+        Y.log('Success: '+this.get('itemname')+' made hidden by AJAX.', 'info', 'moodle-course-management');
     },
 
     /**
@@ -241,7 +241,7 @@ Item.prototype = {
      */
     markHidden : function() {
         this.get('node').setAttribute('data-visible', '0');
-        Y.log('Marked '+this.get('itemname')+' as hidden', 'note', 'core_course');
+        Y.log('Marked '+this.get('itemname')+' as hidden', 'info', 'moodle-course-management');
         return true;
     },