Proyectos de Subversion Moodle

Rev

| Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
1 efrain 1
// This file is part of Moodle - http://moodle.org/
2
//
3
// Moodle is free software: you can redistribute it and/or modify
4
// it under the terms of the GNU General Public License as published by
5
// the Free Software Foundation, either version 3 of the License, or
6
// (at your option) any later version.
7
//
8
// Moodle is distributed in the hope that it will be useful,
9
// but WITHOUT ANY WARRANTY; without even the implied warranty of
10
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
11
// GNU General Public License for more details.
12
//
13
// You should have received a copy of the GNU General Public License
14
// along with Moodle.  If not, see <http://www.gnu.org/licenses/>.
15
 
16
/**
17
 * Load the nav tree items via ajax and render the response.
18
 *
19
 * @module     block_navigation/nav_loader
20
 * @copyright  2015 John Okely <john@moodle.com>
21
 * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
22
 */
23
define(['jquery', 'core/ajax', 'core/config', 'block_navigation/ajax_response_renderer'],
24
    function($, ajax, config, renderer) {
25
        var URL = config.wwwroot + '/lib/ajax/getnavbranch.php';
26
 
27
        /**
28
         * Get the block instance id.
29
         *
30
         * @function getBlockInstanceId
31
         * @param {Element} element
32
         * @returns {String} the instance id
33
         */
34
        function getBlockInstanceId(element) {
35
            return element.closest('[data-block]').attr('data-instanceid');
36
        }
37
 
38
    return {
39
        load: function(element) {
40
            element = $(element);
41
            var promise = $.Deferred();
42
            var data = {
43
                elementid: element.attr('data-node-id'),
44
                id: element.attr('data-node-key'),
45
                type: element.attr('data-node-type'),
46
                sesskey: config.sesskey,
47
                instance: getBlockInstanceId(element)
48
            };
49
            var settings = {
50
                type: 'POST',
51
                dataType: 'json',
52
                data: data
53
            };
54
 
55
            $.ajax(URL, settings).done(function(nodes) {
56
                renderer.render(element, nodes);
57
                promise.resolve();
58
            });
59
 
60
            return promise;
61
        }
62
    };
63
});