Skip to content
Snippets Groups Projects
Select Git revision
  • 0fbcdde994f97fbcafc7251cc4acfcda7cdcd7c7
  • main default
  • hsh-MOODLE_404+
  • hsh_3.10
  • master protected
  • v1.4.7
  • v1.4.6
  • v1.4.5
  • v1.4.3
  • v1.4.1
  • v1.4
  • v1.3r2
  • v1.3
  • v1.2
14 results

lib.php

Blame
  • collapse.js 5.23 KiB
    // JavaScript Code genommen und angepasst von local/boostnavigation/amd/src
    // User-Preferences erstmal entfernt
    define(['jquery'], function($) {
        "use strict";
        var nodesArray = [];
    
        function toggleClickHandler(node, nodename) {
            node.click(function(e) {
                // Prevent that the browser opens the node's default action link (if existing).
                e.preventDefault();
    
                if(nodename == "mycourses") {
                    // "MyCourses" angeklickt um diesen einzuklappen
                    if (node.attr('data-collapse') == 0) {
    
                        // Alle Semester verstecken
                        nodesArray.forEach(function(semster){
                            $('.list-group-item[data-key=' + semster + ']').attr("data-collapse", "1");
                            $('.list-group-item[data-key=' + semster + ']').attr("data-hidden", "0");
                        });
    
                        // TODO User-Preferences setzen
                        //M.util.set_user_preference('local_hsh_boostnavigation-collapse_' + nodename + '_node', 1);
    
                        // If the parent node is currently collapsed.
                    } else if (node.attr('data-collapse') == 1) {
                        // Alle Kurse verstecken
                        nodesArray.forEach(function(nodekey) {
                            // Set the hidden attribute to true for all elements which have the nodename as their data-parent-key attribute.
                            $('.list-group-item[data-parent-key=' + nodekey + ']').attr("data-hidden", "1");
                            $('.list-group-item[data-parent-key=' + nodekey + ']').attr("data-collapse", "1");
                        });
    
                        // Semester wieder sichtbar machen, Kurse weiterhin verstecken
                        nodesArray.forEach(function(semster){
                            $('.list-group-item[data-key=' + semster + ']').attr("data-collapse", "1");
                            $('.list-group-item[data-key=' + semster + ']').attr("data-hidden", "1");
                        });
    
                        //TODO: User-Preferences einbinden
                        //M.util.set_user_preference('local_hsh_boostnavigation-collapse_' + nodename + '_node', 0);
                    }
                } else {
                    // Ein Semester angeklickt um dieses auf oder zu zu klappen
                    // If the parent node is currently expanded.
                    if (node.attr('data-collapse') == 0) {
                        // Set the hidden attribute to true for all elements which have the nodename as their data-parent-key attribute.
                        $('.list-group-item[data-parent-key=' + nodename + ']').attr("data-hidden", "1");
                        // Change the collapse attribute of the node itself to true.
                        node.attr("data-collapse", "1");
                        // TODO User-Preferences setzen
                        //M.util.set_user_preference('local_hsh_boostnavigation-collapse_' + nodename + '_node', 1);
    
                        // If the parent node is currently collapsed.
                    } else if (node.attr('data-collapse') == 1) {
                        // Set the hidden attribute to false for all elements which have the nodename as their data-parent-key attribute.
                        $('.list-group-item[data-parent-key=' + nodename + ']').attr("data-hidden", "0");
    
                        // Change the collapse attribute of the node itself to false.
                        node.attr("data-collapse", "0");
    
                        // TODO User-Preferences setzen
                        //M.util.set_user_preference('local_hsh_boostnavigation-collapse_' + nodename + '_node', 0);
                    }
                }
            });
        }
    
        function initToggleNodes(nodename) {
            // Sonst wäre das Array mit "" initialisiert -> Fehler
            if(nodesArray[0] === "") {
                nodesArray = new Array();
            }
    
            // Search node to be collapsible.
            var node = $('.list-group-item[data-key="' + nodename + '"]');
    
            if(nodename === "mycourses") {
                node.attr("data-collapse", "0");
            } else {
                node.attr("data-collapse", "1");
            }
    
            if(nodename !== "" && nodename !== "mycourses") {
                node.addClass('list-group-item-action semesternode');
                node.attr("data-isexpandable", "1");
    
                var childNode = $('.list-group-item[data-parent-key=' + nodename + ']');
                childNode.attr("data-hidden", "1");
                childNode.attr("data-collapse", "1");
                if(!nodesArray.includes(nodename)) {
                    nodesArray.push(nodename);
                }
            }
    
            // Add a click handler to this node.
            toggleClickHandler(node, nodename);
        }
    
        function openNode(nodename) {
            var node = $('.list-group-item[data-key="' + nodename + '"]');
            node.attr("data-hidden", "0");
            node.attr("data-collapse", "0");
            $('.list-group-item[data-parent-key=' + nodename + ']').attr("data-hidden", "0");
            $('.list-group-item[data-parent-key=' + nodename + ']').attr("data-collapse", "0");
        }
    
    
        return {
            init: function(params) {
                for (var i = 0, len = params.length; i < len; i++) {
                    initToggleNodes(params[i]);
                }
            },
            openSemester: function (nodename) {
                openNode(nodename);
            }
        };
    });