~ubuntu-branches/ubuntu/jaunty/moodle/jaunty

« back to all changes in this revision

Viewing changes to group/lib/clientlib.js

  • Committer: Bazaar Package Importer
  • Author(s): Jordan Mantha, Matt Oquist
  • Date: 2009-02-25 15:16:22 UTC
  • mfrom: (1.1.11 upstream)
  • Revision ID: james.westby@ubuntu.com-20090225151622-0ekt1liwhv2obfza
Tags: 1.9.4.dfsg-0ubuntu1
* Merge with Debian git (Closes LP: #322961, #239481, #334611):
  - use Ubuntu's smarty lib directory for linking
  - use internal yui library 
  - add update-notifier support back in

[Matt Oquist]
  * renamed prerm script
  * significantly rewrote postinst and other maintainer scripts to improve
    user experience and package maintainability
    (Closes LP: #225662, #325450, #327843, #303078, #234609)

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
/**
2
 
 * Client-side JavaScript for group management interface.
3
 
 * @author vy-shane AT moodle.com 
4
 
 * @license http://www.gnu.org/copyleft/gpl.html GNU Public License
5
 
 * @package groups
6
 
 */
7
 
 
8
 
 
9
 
/**
10
 
 * Class UpdatableGroupsCombo
11
 
 */
12
 
function UpdatableGroupsCombo(wwwRoot, courseId) {
13
 
    this.wwwRoot = wwwRoot;
14
 
    this.courseId = courseId;
15
 
 
16
 
    this.connectCallback = {
17
 
 
18
 
        success: function(o) {
19
 
                if (o.responseText !== undefined) {
20
 
                var groupsComboEl = document.getElementById("groups");
21
 
                var membersComboEl = document.getElementById("members");
22
 
 
23
 
                if (membersComboEl) {
24
 
                    // Clear the members combo box.
25
 
                    while (membersComboEl.firstChild) {
26
 
                        membersComboEl.removeChild(membersComboEl.firstChild);
27
 
                    }
28
 
                }
29
 
 
30
 
                    if (groupsComboEl && o.responseText) {
31
 
                        var groups = eval("("+o.responseText+")");
32
 
 
33
 
                        // Populate the groups combo box.
34
 
                    for (var i=0; i<groups.length; i++) {
35
 
                        var optionEl = document.createElement("option");
36
 
                        optionEl.setAttribute("value", groups[i].id);
37
 
                        optionEl.title = groups[i].name;
38
 
                        optionEl.innerHTML = groups[i].name;
39
 
                        groupsComboEl.appendChild(optionEl);
40
 
                    }
41
 
                }
42
 
                }
43
 
                // Remove the loader gif image.
44
 
                removeLoaderImgs("groupsloader", "groupslabel");
45
 
        },
46
 
 
47
 
        failure: function(o) {
48
 
            removeLoaderImgs("membersloader", "memberslabel");
49
 
            this.currentTransId = null;
50
 
        }
51
 
 
52
 
    };
53
 
 
54
 
    // Add onchange event to groups combo box.
55
 
    // Okay, this is not working in IE. The onchange is never fired...
56
 
    // I'm hard coding the onchange in ../index.php. Not ideal, but it works
57
 
    // then. vyshane AT moodle DOT com.
58
 
    /*
59
 
    groupsComboEl = document.getElementById("groups");
60
 
    if (groupsComboEl) {
61
 
        groupsComboEl.setAttribute("onchange", "membersCombo.refreshMembers(this.options[this.selectedIndex].value);");
62
 
    }
63
 
    */
64
 
 
65
 
    // Hide the updategroups input since AJAX will take care of this.
66
 
    YAHOO.util.Dom.setStyle("updategroups", "display", "none");
67
 
}
68
 
 
69
 
/**
70
 
 * When a grouping is selected, we need to update the groups.
71
 
 */
72
 
UpdatableGroupsCombo.prototype.refreshGroups = function (groupingId) {
73
 
    // Add the loader gif image.
74
 
    createLoaderImg("groupsloader", "groupslabel", this.wwwRoot);
75
 
 
76
 
    // Update the label.
77
 
    var selectEl = document.getElementById("groupings");
78
 
    var spanEl = document.getElementById("thegrouping");
79
 
    if (selectEl && selectEl.selectedIndex >= 0) {
80
 
        spanEl.innerHTML = selectEl.options[selectEl.selectedIndex].title;
81
 
    }
82
 
 
83
 
    // Clear the groups combo box.
84
 
    selectEl = document.getElementById("groups");
85
 
    if (selectEl) {
86
 
        while (selectEl.firstChild) {
87
 
            selectEl.removeChild(selectEl.firstChild);
88
 
        }
89
 
    }
90
 
    
91
 
    if (groupingId > -1) {
92
 
        document.getElementById("showaddmembersform").disabled = true;
93
 
        document.getElementById("showeditgroupingsettingsform").disabled = false;
94
 
        document.getElementById("deletegrouping").disabled = false;
95
 
        document.getElementById("printerfriendly").disabled = false;
96
 
        document.getElementById("showeditgroupsettingsform").disabled = true;
97
 
        document.getElementById("deletegroup").disabled = true;
98
 
        document.getElementById("showcreategroupform").disabled = false;
99
 
    } else {
100
 
        document.getElementById("showeditgroupingsettingsform").disabled = true;
101
 
        document.getElementById("deletegrouping").disabled = true;
102
 
        document.getElementById("showcreategroupform").disabled = true;
103
 
        document.getElementById("showeditgroupsettingsform").disabled = true;
104
 
        document.getElementById("deletegroup").disabled = true;
105
 
        document.getElementById("showaddmembersform").disabled = true;
106
 
 
107
 
    }
108
 
 
109
 
    var sUrl = this.wwwRoot+"/group/index.php?id="+this.courseId+"&grouping="+groupingId+"&act_ajax_getgroupsingrouping";
110
 
    YAHOO.util.Connect.asyncRequest('GET', sUrl, this.connectCallback, null);
111
 
};
112
 
 
113
 
 
114
 
 
115
 
/**
116
 
 * Class UpdatableMembersCombo
117
 
 */
118
 
function UpdatableMembersCombo(wwwRoot, courseId) {
119
 
    this.wwwRoot = wwwRoot;
120
 
    this.courseId = courseId;
121
 
 
122
 
    this.connectCallback = {
123
 
        success: function(o) {
124
 
 
125
 
                if (o.responseText !== undefined) {
126
 
                var selectEl = document.getElementById("members");
127
 
                    if (selectEl && o.responseText) {
128
 
                        var members = eval("("+o.responseText+")");
129
 
 
130
 
                    // Clear the members combo box.
131
 
                    if (selectEl) {
132
 
                        while (selectEl.firstChild) {
133
 
                            selectEl.removeChild(selectEl.firstChild);
134
 
                        }
135
 
                    }
136
 
                        // Populate the members combo box.
137
 
                    for (var i=0; i<members.length; i++) {
138
 
                        var optionEl = document.createElement("option");
139
 
                        optionEl.setAttribute("value", members[i].id);
140
 
                        optionEl.title = members[i].name;
141
 
                        optionEl.innerHTML = members[i].name;
142
 
                        selectEl.appendChild(optionEl);
143
 
                    }
144
 
                }
145
 
                }
146
 
                // Remove the loader gif image.
147
 
                removeLoaderImgs("membersloader", "memberslabel");
148
 
        },
149
 
 
150
 
        failure: function(o) {
151
 
            removeLoaderImgs("membersloader", "memberslabel");
152
 
        }
153
 
 
154
 
    };
155
 
 
156
 
    // Hide the updatemembers input since AJAX will take care of this.
157
 
    YAHOO.util.Dom.setStyle("updatemembers", "display", "none");
158
 
}
159
 
 
160
 
/**
161
 
 * When a group is selected, we need to update the members.
162
 
 * The Add/Remove Users button also needs to be disabled/enabled
163
 
 * depending on whether or not a group is selected
164
 
 */
165
 
UpdatableMembersCombo.prototype.refreshMembers = function (groupId) {
166
 
    // Add the loader gif image.
167
 
    createLoaderImg("membersloader", "memberslabel", this.wwwRoot);
168
 
 
169
 
    // Update the label.
170
 
    var selectEl = document.getElementById("groups");
171
 
    var spanEl = document.getElementById("thegroup");
172
 
    if (selectEl && selectEl.selectedIndex >= 0) {
173
 
        spanEl.innerHTML = selectEl.options[selectEl.selectedIndex].title;
174
 
    }
175
 
 
176
 
    // Clear the members combo box.
177
 
    selectEl = document.getElementById("members");
178
 
    if (selectEl) {
179
 
        while (selectEl.firstChild) {
180
 
            selectEl.removeChild(selectEl.firstChild);
181
 
        }
182
 
    }
183
 
    
184
 
    document.getElementById("showaddmembersform").disabled = false;
185
 
    document.getElementById("showeditgroupsettingsform").disabled = false;
186
 
    document.getElementById("deletegroup").disabled = false;
187
 
    var sUrl = this.wwwRoot+"/group/index.php?id="+this.courseId+"&group="+groupId+"&act_ajax_getmembersingroup";
188
 
    YAHOO.util.Connect.asyncRequest("GET", sUrl, this.connectCallback, null); 
189
 
};
190
 
 
191
 
 
192
 
 
193
 
var createLoaderImg = function (elClass, parentId, wwwRoot) {
194
 
    var parentEl = document.getElementById(parentId);
195
 
    if (!parentEl) {
196
 
        return false;
197
 
    }
198
 
    if (document.getElementById("loaderImg")) {
199
 
        // A loader image already exists.
200
 
        return false;
201
 
    }
202
 
    var loadingImg = document.createElement("img");
203
 
 
204
 
    loadingImg.setAttribute("src", wwwRoot+"/pix/i/ajaxloader.gif");
205
 
    loadingImg.setAttribute("class", elClass);
206
 
    loadingImg.setAttribute("alt", "Loading");
207
 
    loadingImg.setAttribute("id", "loaderImg");
208
 
    parentEl.appendChild(loadingImg);
209
 
 
210
 
    return true;
211
 
};
212
 
 
213
 
 
214
 
var removeLoaderImgs = function (elClass, parentId) {
215
 
    var parentEl = document.getElementById(parentId);
216
 
    if (parentEl) {
217
 
        var loader = document.getElementById("loaderImg");
218
 
        parentEl.removeChild(loader);
219
 
    }
220
 
};