Autoría | Ultima modificación | Ver Log |
// This file is part of Moodle - http://moodle.org///// Moodle is free software: you can redistribute it and/or modify// it under the terms of the GNU General Public License as published by// the Free Software Foundation, either version 3 of the License, or// (at your option) any later version.//// Moodle is distributed in the hope that it will be useful,// but WITHOUT ANY WARRANTY; without even the implied warranty of// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the// GNU General Public License for more details.//// You should have received a copy of the GNU General Public License// along with Moodle. If not, see <http://www.gnu.org/licenses/>./*** format_buttons_renderer** @package format_buttons* @author Rodrigo Brandão <https://www.linkedin.com/in/brandaorodrigo>* @copyright 2020 Rodrigo Brandão <rodrigo.brandao.contato@gmail.com>* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later*/M.course = M.course || {};M.course.format = M.course.format || {};/*** Get sections config for this format** The section structure is:* <ul class="buttons">* <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: 'buttons',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'},SELECTORS = {SECTIONLEFTSIDE: '.left .section-handle .icon'};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.var content = Y.Node.create('<span>' + response.sectiontitles[i] + '</span>');sectionlist.item(i).all('.' + CSS.SECTIONNAME).setHTML(content);// 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.}}};