9f3015ecf8
Initially, the default section title was swapped within the course format javascript functions. Though some section titles may be custom and does not require swapping, in addition they may have links to single section view. This introduces some callback functions for define what needs to be done in sections libs and js files.
68 lines
1.8 KiB
JavaScript
68 lines
1.8 KiB
JavaScript
// Javascript functions for Topics course format
|
|
|
|
M.course = M.course || {};
|
|
|
|
M.course.format = M.course.format || {};
|
|
|
|
/**
|
|
* Get sections config for this format
|
|
*
|
|
* The section structure is:
|
|
* <ul class="topics">
|
|
* <li class="section">...</li>
|
|
* <li class="section">...</li>
|
|
* ...
|
|
* </ul>
|
|
*
|
|
* @return {object} section list configuration
|
|
*/
|
|
M.course.format.get_config = function() {
|
|
return {
|
|
container_node : 'ul',
|
|
container_class : 'topics',
|
|
section_node : 'li',
|
|
section_class : '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',
|
|
SECTIONADDMENUS : 'section_add_menus'
|
|
};
|
|
|
|
var sectionlist = Y.Node.all('.'+CSS.COURSECONTENT+' '+M.course.format.get_section_selector(Y));
|
|
// Swap menus
|
|
sectionlist.item(node1).one('.'+CSS.SECTIONADDMENUS).swap(sectionlist.item(node2).one('.'+CSS.SECTIONADDMENUS));
|
|
}
|
|
|
|
/**
|
|
* Process sections after ajax response
|
|
*
|
|
* @param {YUI} Y YUI3 instance
|
|
* @param {array} response ajax response
|
|
* @param {string} sectionfrom first affected section
|
|
* @param {string} sectionto last affected section
|
|
* @return void
|
|
*/
|
|
M.course.format.process_sections = function(Y, sectionlist, response, sectionfrom, sectionto) {
|
|
var CSS = {
|
|
SECTIONNAME : 'sectionname'
|
|
};
|
|
|
|
if (response.action == 'move') {
|
|
// update titles in all affected sections
|
|
for (var i = sectionfrom; i <= sectionto; i++) {
|
|
sectionlist.item(i).one('.'+CSS.SECTIONNAME).setContent(response.sectiontitles[i]);
|
|
}
|
|
}
|
|
}
|