Skip to content

Commit

Permalink
MDL-32657: Add format.js for topics format and remove default
Browse files Browse the repository at this point in the history
Using topics format as default is not a great idea, as we can end up
half-working dragdrop for some formats. With the current soiution, drag-drop
will not work for format, unless required js functions have been created in
format.js
  • Loading branch information
Ruslan Kabalin committed May 2, 2012
1 parent c77582f commit d95b77b
Show file tree
Hide file tree
Showing 3 changed files with 51 additions and 24 deletions.
40 changes: 40 additions & 0 deletions course/format/topics/format.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
// Javascript functions for course format

M.course = M.course || {};

M.course.format = M.course.format || {};

/**
* Get section list for this format
*
* @param {YUI} Y YUI3 instance
* @return {string} section list selector
*/
M.course.format.get_section_selector = function(Y) {
return 'li.section';
}

/**
* Swap section
*
* @param {YUI} Y YUI3 instance
* @param {string} node1 node to swap to
* @param {string} node2 node to swap with
* @return {NodeList} section list
*/
M.course.format.swap_sections = function(Y, node1, node2) {
var CSS = {
COURSECONTENT : 'course-content',
LEFT : 'left',
RIGHT : 'right',
SECTIONADDMENUS : 'section_add_menus',
};

var sectionlist = Y.Node.all('.'+CSS.COURSECONTENT+' '+M.course.format.get_section_selector(Y));
// Swap left block
sectionlist.item(node1).one('.'+CSS.LEFT).swap(sectionlist.item(node2).one('.'+CSS.LEFT));
// Swap right block
sectionlist.item(node1).one('.'+CSS.RIGHT).swap(sectionlist.item(node2).one('.'+CSS.RIGHT));
// Swap menus
sectionlist.item(node1).one('.'+CSS.SECTIONADDMENUS).swap(sectionlist.item(node2).one('.'+CSS.SECTIONADDMENUS));
}
3 changes: 3 additions & 0 deletions course/format/topics/format.php
Original file line number Diff line number Diff line change
Expand Up @@ -286,3 +286,6 @@
$select->formid = 'sectionmenu';
echo $OUTPUT->render($select);
}

// Include course format js module
$PAGE->requires->js('/course/format/topics/format.js');
32 changes: 8 additions & 24 deletions course/yui/dragdrop/dragdrop.js
Original file line number Diff line number Diff line change
Expand Up @@ -38,12 +38,10 @@ YUI.add('moodle-course-dragdrop', function(Y) {
return false;
}
// Initialise sections dragging
try {
if (M.course.format && M.course.format.get_section_selector && typeof(M.course.format.get_section_selector) == 'function') {
this.sectionlistselector = '.'+CSS.COURSECONTENT+' '+M.course.format.get_section_selector(Y);
} catch (e) {
this.sectionlistselector = '.'+CSS.COURSECONTENT+' li.'+CSS.SECTION;
this.setup_for_section(this.sectionlistselector);
}
this.setup_for_section(this.sectionlistselector);
},

/**
Expand Down Expand Up @@ -183,15 +181,8 @@ YUI.add('moodle-course-dragdrop', function(Y) {
sectionlist.item(i-1).set('id', sectionlist.item(i).get('id'));
sectionlist.item(i).set('id', sectionid);
// See what format needs to be swapped
try {
if (M.course.format && M.course.format.swap_sections && typeof(M.course.format.swap_sections) == 'function') {
M.course.format.swap_sections(Y, i-1, i);
} catch (e) {
// Swap left block
sectionlist.item(i-1).one('.'+CSS.LEFT).swap(sectionlist.item(i).one('.'+CSS.LEFT));
// Swap right block
sectionlist.item(i-1).one('.'+CSS.RIGHT).swap(sectionlist.item(i).one('.'+CSS.RIGHT));
// Swap menus
sectionlist.item(i-1).one('.'+CSS.SECTIONADDMENUS).swap(sectionlist.item(i).one('.'+CSS.SECTIONADDMENUS));
}
// Update flag
swapped = true;
Expand Down Expand Up @@ -235,15 +226,12 @@ YUI.add('moodle-course-dragdrop', function(Y) {
this.parentnodeclass = CSS.SECTION;

// Go through all sections
try {
if (M.course.format && M.course.format.get_section_selector && typeof(M.course.format.get_section_selector) == 'function') {
var sectionlistselector = '.'+CSS.COURSECONTENT+' '+M.course.format.get_section_selector(Y);
} catch (e) {
var sectionlistselector = '.'+CSS.COURSECONTENT+' li.'+CSS.SECTION;
this.setup_for_section(sectionlistselector);
M.course.coursebase.register_module(this);
M.course.dragres = this;
}

this.setup_for_section(sectionlistselector);
M.course.coursebase.register_module(this);
M.course.dragres = this;
},

/**
Expand Down Expand Up @@ -323,11 +311,7 @@ YUI.add('moodle-course-dragdrop', function(Y) {
var dragnode = drag.get('node');
var dropnode = e.drop.get('node');

try {
var sectionselector = M.course.format.get_section_selector(Y);
} catch (e) {
var sectionselector = 'li.'+CSS.SECTION;
}
var sectionselector = M.course.format.get_section_selector(Y);

var params = {};

Expand Down

0 comments on commit d95b77b

Please sign in to comment.