Proyectos de Subversion Moodle

Rev

| Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
1 efrain 1
// Define a function that will run in the context of a
2
// Node instance:
3
var CSS = {
4
        LINK: 'mod-assign-history-link',
5
        OPEN: 'mod-assign-history-link-open',
6
        CLOSED: 'mod-assign-history-link-closed',
7
        PANEL: 'mod-assign-history-panel'
8
    },
9
    COUNT = 0,
10
    TOGGLE = function() {
11
        var id = this.get('for'),
12
            panel = Y.one('#' + id);
13
        if (this.hasClass(CSS.OPEN)) {
14
            this.removeClass(CSS.OPEN);
15
            this.addClass(CSS.CLOSED);
16
            this.setStyle('overflow', 'hidden');
17
            panel.hide();
18
        } else {
19
            this.removeClass(CSS.CLOSED);
20
            this.addClass(CSS.OPEN);
21
            panel.show();
22
        }
23
    },
24
    HISTORY = function() {
25
        var link = null,
26
            panel = null,
27
            wrapper = null,
28
            container = this;
29
 
30
        // Loop through all the children of this container and turn
31
        // every odd node to a link to open/close the following panel.
32
        this.get('children').each(function() {
33
            if (link) {
34
                COUNT++;
35
                // First convert the link to an anchor.
36
                wrapper = Y.Node.create('<a/>');
37
                panel = this;
38
                container.insertBefore(wrapper, link);
39
                link.remove(false);
40
                wrapper.appendChild(link);
41
 
42
                // Add a for attribute to the link to link to the id of the panel.
43
                if (!panel.get('id')) {
44
                    panel.set('id', CSS.PANEL + COUNT);
45
                }
46
                wrapper.set('for', panel.get('id'));
47
                // Add an aria attribute for the live region.
48
                panel.set('aria-live', 'polite');
49
 
50
                wrapper.addClass(CSS.LINK);
51
                if (COUNT == 1) {
52
                    wrapper.addClass(CSS.OPEN);
53
                } else {
54
                    wrapper.addClass(CSS.CLOSED);
55
                }
56
                panel.addClass(CSS.PANEL);
57
                if (COUNT == 1) {
58
                    panel.show();
59
                } else {
60
                    panel.hide();
61
                }
62
                link = null;
63
            } else {
64
                link = this;
65
            }
66
        });
67
 
68
        // Setup event listeners.
69
        this.delegate('click', TOGGLE, '.' + CSS.LINK);
70
    };
71
 
72
// Use addMethod to add history to the Node prototype:
73
Y.Node.addMethod("history", HISTORY);
74
 
75
// Extend this functionality to NodeLists.
76
Y.NodeList.importMethod(Y.Node.prototype, "history");