You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
88 lines
3.1 KiB
88 lines
3.1 KiB
/**
|
|
* This was largely copied from the "Topics" format in an early version of "Tiles" and is not changed for summer 2018 release
|
|
* @type {*|{}}
|
|
*/
|
|
M.course = M.course || {};
|
|
|
|
M.course.format = M.course.format || {};
|
|
|
|
/* jshint camelcase:false */
|
|
// We ignore camel case as this is copied from an old core file.
|
|
|
|
/**
|
|
* Get sections config for this format
|
|
*
|
|
* The section structure is:
|
|
* <ul class="tiles">
|
|
* <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: "tiles",
|
|
section_node: "li",
|
|
section_class: "section"
|
|
};
|
|
};
|
|
|
|
// M.course.format.swap_sections from topics format has been deliberately omitted as it is not necessary for tiles.
|
|
|
|
/**
|
|
* Process sections after ajax response
|
|
* The actual move is carried out by course/yui/build/moodle-course-dragdrop
|
|
*
|
|
* @param {YUI} Y YUI3 instance
|
|
* @param {array} sectionlist
|
|
* @param {array} response ajax response
|
|
* @param {string} sectionfrom first affected section
|
|
* @param {string} sectionto last affected section
|
|
*/
|
|
M.course.format.process_sections = function(Y, sectionlist, response, sectionfrom, sectionto) {
|
|
var CSS = {
|
|
SECTIONNAME: "sectionname"
|
|
},
|
|
SELECTORS = {
|
|
SECTIONLEFTSIDE: ".left .section-handle .icon",
|
|
EDITACTVITIESMENU: ".right .section_action_menu a.editing_activities",
|
|
EDITACTIVITIESLINK: ".tile_bar_text a.editactivities"
|
|
};
|
|
|
|
if (response.action === "move") {
|
|
// If moving up swap around "sectionfrom" and "sectionto" so the that loop operates.
|
|
if (sectionfrom > sectionto) {
|
|
var temp = sectionto;
|
|
sectionto = sectionfrom;
|
|
sectionfrom = temp;
|
|
}
|
|
|
|
// Update titles and move icons in all affected sections.
|
|
var ele, str, stridx, newstr;
|
|
|
|
for (var i = sectionfrom; i <= sectionto; i++) {
|
|
// Update section title.
|
|
sectionlist.item(i).one("." + CSS.SECTIONNAME).setContent(response.sectiontitles[i]);
|
|
// Update move icon.
|
|
ele = sectionlist.item(i).one(SELECTORS.SECTIONLEFTSIDE);
|
|
str = ele.getAttribute("alt");
|
|
stridx = str.lastIndexOf(" ");
|
|
newstr = str.substr(0, stridx + 1) + i;
|
|
ele.setAttribute("alt", newstr);
|
|
ele.setAttribute("title", newstr); // For FireFox as "alt" is not refreshed.
|
|
|
|
// Added for "Tiles" - swap edit activities links (x2) so they point to right place.
|
|
ele = sectionlist.item(i).one(SELECTORS.EDITACTVITIESMENU); // Right hand link.
|
|
var ele2 = sectionlist.item(i).one(SELECTORS.EDITACTIVITIESLINK); // Left hand link.
|
|
var url = ele.getAttribute("href");
|
|
stridx = url.lastIndexOf("section=");
|
|
var newurl = url.substr(0, stridx + 8) + i; // Number 8 is length of section.
|
|
ele.setAttribute("href", newurl);
|
|
ele2.setAttribute("href", newurl);
|
|
}
|
|
}
|
|
};
|
|
/* jshint camelcase:true */
|