~azzar1/unity/add-show-desktop-key

« back to all changes in this revision

Viewing changes to www/media/groups/groups.js

Move the remaining images to the new framework, in the new ivle.webapp.core
plugin.

Show diffs side-by-side

added added

removed removed

Lines of Context:
22
22
 
23
23
serviceapp = 'userservice';
24
24
 
 
25
function create(offeringid)
 
26
{
 
27
    /* TODO: Write this function */
 
28
}
 
29
 
 
30
/* Displays the selected group in the group adminsitration area
 
31
 */
 
32
function manage_subject()
 
33
{
 
34
    /* Get the subject id from the select box */
 
35
    var subject_select = document.getElementById("subject_select");
 
36
    var subject_div = document.getElementById("subject_div");
 
37
    var subjectid = parseInt(subject_select.value);
 
38
 
 
39
    /* List active offerings */
 
40
    dom_removechildren(subject_div);
 
41
    var p = dom_make_text_elem("h2", "Active Offerings");
 
42
    subject_div.appendChild(p);
 
43
    var callback = function(xhr) 
 
44
    {
 
45
        var offerings = JSON.parse(xhr.responseText);
 
46
        for (var i=0; i<offerings.length; i++)
 
47
        {
 
48
            var offering = offerings[i];
 
49
            var text = offering.subj_name + ", Semester " + offering.semester + " " + offering.year;
 
50
            var h3 = dom_make_text_elem("h3", text);
 
51
            subject_div.appendChild(h3);
 
52
            var div = document.createElement("div");
 
53
            subject_div.appendChild(div);
 
54
            manage_subject_offering(offering['offeringid'], div);
 
55
        }
 
56
    }
 
57
    ajax_call(callback, serviceapp, 'get_active_offerings', {'subjectid': subjectid}, 'GET');
 
58
}
 
59
 
 
60
/* Manages the display of a single offerings groups
 
61
 * Takes a offeringid and element to attach the results to
 
62
 */
 
63
function manage_subject_offering(offeringid, elem)
 
64
{
 
65
    var callback = function(xhr)
 
66
    {
 
67
        var projectsets = JSON.parse(xhr.responseText);
 
68
        var dl = document.createElement("dl");
 
69
        elem.appendChild(dl);
 
70
        /* Add details for each project set */
 
71
        for (var i=0; i<projectsets.length; i++)
 
72
        {
 
73
            var projectset = projectsets[i];
 
74
            var groups = projectset.groups;
 
75
            
 
76
            var dt = dom_make_text_elem("dt", "Project Set "+(i+1)+" ");
 
77
            dl.appendChild(dt);
 
78
            var dd = document.createElement("dd");
 
79
            var ul = document.createElement("ul");
 
80
            dd.appendChild(ul);
 
81
            /* Add each group in the project set */
 
82
            for (var j=0; j<groups.length; j++)
 
83
            {
 
84
                var group = groups[j];
 
85
                var namespace = "project_group_" + group.groupid;
 
86
                var li = dom_make_text_elem("li", group['groupnm']+" ");
 
87
                li.id = namespace;
 
88
                var button = document.createElement("a");
 
89
                button.id = namespace+"_button";
 
90
                button.setAttribute("class", "choice");
 
91
                button.textContent = '(manage)';
 
92
                button.setAttribute("onclick",
 
93
                    "manage_group("+offeringid+","+group.groupid+",'"+namespace+"')");
 
94
                li.appendChild(button);
 
95
                ul.appendChild(li);
 
96
            }
 
97
            var li = dom_make_text_elem("li", "");
 
98
            var input = document.createElement("input");
 
99
            input.value = "New";
 
100
            input.type = 'button';
 
101
            input.setAttribute("onclick", "create_new_group("+projectset['projectsetid']+")");
 
102
            li.appendChild(input);
 
103
            ul.appendChild(li);
 
104
            dl.appendChild(dd);
 
105
        }
 
106
    }
 
107
    ajax_call(callback, serviceapp, 'get_project_groups', {'offeringid': offeringid}, 'GET');
 
108
}
 
109
 
25
110
/* Creates a group */
26
111
function create_new_group(projectsetid)
27
112
{
37
122
        alert("Error: Could not add group. Does it already exist?");
38
123
    }
39
124
    /* Reload the display */
40
 
    window.location.href = window.location.href;
 
125
    manage_subject();
41
126
}
42
127
 
43
128
function manage_group(offeringid, groupid, namespace)
73
158
        var ul = document.createElement("ul");
74
159
        for (var i=0; i<groupmembers.length; i++)
75
160
        {
76
 
            var member = groupmembers[i];
77
 
 
78
 
            var li = dom_make_text_elem("li", member.fullname + " (" +
79
 
                                              member.login + ")");
80
 
            var rmbutton = document.createElement("input");
81
 
            rmbutton.value = "Remove";
82
 
            rmbutton.type = "image";
83
 
            /* XXX: There must be a better way to do this! */
84
 
            rmbutton.src = "/+media/ivle.webapp.groups/cross.png";
85
 
 
86
 
            $(rmbutton).click(function(offeringid, login, groupid, elemnm)
87
 
            {
88
 
                return function() {
89
 
                    if (!confirm("Are you sure want to revoke this user's membership?"))
90
 
                        return;
91
 
                    this.disabled = true;
92
 
                    var args = {'login': login, 'groupid': groupid};
93
 
                    ajax_call(null, serviceapp, 'unassign_group', args, 'POST');
94
 
                    list_projectgroup_contents(offeringid, groupid, elemnm);
95
 
                };
96
 
            }(offeringid, member.login, groupid, elemnm));
97
 
 
98
 
            li.appendChild(rmbutton);
 
161
            var li = dom_make_text_elem("li", groupmembers[i].fullname + " (" +
 
162
                                              groupmembers[i].login + ")");
99
163
            ul.appendChild(li);
100
164
        }
101
165
 
111
175
        var button = document.createElement("input");
112
176
        button.value = "Add";
113
177
        button.type = 'button';
114
 
        $(button).click(function()
 
178
        button.addEventListener("click", function()
115
179
        {
116
 
            this.disabled = true;
117
180
            args = {'login': select.value, 'groupid': groupid};
118
181
            ajax_call(null, serviceapp, 'assign_group', args, 'POST');
119
182
            list_projectgroup_contents(offeringid, groupid, elemnm);
120
 
        });
 
183
        }, false);
121
184
        add_li.appendChild(select);
122
185
        add_li.appendChild(button);
123
186
        ul.appendChild(add_li);