Completed
Push — develop ( 77df65...d7d193 )
by Patrick
10s
created

_admin/js/group_new.js (1 issue)

Upgrade to new PHP Analysis Engine

These results are based on our legacy PHP analysis, consider migrating to our new PHP analysis engine instead. Learn more

1
function check_members_empty()
2
{
3
    if($('#group_members .snap-to :not(:empty)').length == 0)
4
    {
5
        alert('Groups require one or more members!');
6
        $('#submit').attr("disabled", "disabled");
7
    }
8
    else
9
    {
10
        $('#submit').removeAttr("disabled");
11
    }
12
}
13
14
function draw_done()
15
{
16
    $('td.removeControl').html('<span class="fa fa-minus"></span>');
17
    $('td.addControl').html('<span class="fa fa-plus"></span>');
18
}
19
20
function add_clicked()
21
{
22
    var tr = $(this).closest('tr');
23
    var non_members = $('#non-members').DataTable();
24
    var members = $('#members').DataTable();
25
    var row = non_members.row(tr);
26
    var data = row.data();
27
    row.remove().draw(false);
28
    try
29
    {
30
        members.row.add(data).draw(false);
31
    }
32
    catch(TypeError)
33
    {
34
        /*Ignore Type errors when adding aata*/
35
    }
36
}
37
38
function remove_clicked()
39
{
40
    var tr = $(this).closest('tr');
41
    var non_members = $('#non-members').DataTable();
42
    var members = $('#members').DataTable();
43
    var row = members.row(tr);
44
    var data = row.data();
45
    row.remove().draw(false);
46
    try
47
    {
48
        non_members.row.add(data).draw(false);
49
    }
50
    catch(TypeError)
51
    {
52
        /*Ignore Type errors when adding aata*/
53
    }
54
}
55
56
function non_member_groups_done(data)
57
{
58
    var tbody = $('#non_members tbody');
59
    var groups = {'count':0};
60
    for(var i = 0; i < data.data.length; i++)
61
    {
62
        groups[groups.count] = "cn="+data.data[i][0];
63
        groups.count++;
64
    }
65
    add_users_to_table(tbody, groups, true, false);
66
    $.ajax({
67
            url: 'ajax/users.php',
68
            type: 'get',
69
            dataType: 'json',
70
            success: non_member_users_done});
71
}
72
73
function groupSubmitDone(jqXHR)
74
{
75
    if(jqXHR.status !== 200)
76
    {
77
        alert('Unable to update group!');
78
        return;
79
    }
80
    alert('Success!');
81
    location = 'group_edit.php?gid='+getGID();
82
}
83
84
function groupDataSubmitted(e)
85
{
86
    e.preventDefault();
87
    var group = $('#form :input:not(select)').serializeObject();
88
    var members = $('#members').DataTable().data();
89
    group.member = [];
90
    for(var i = 0; i < members.length; i++)
91
    {
92
       var child = {};
93
       child.type = members[i].type;
94
       if(members[i].type === 'Group')
95
       {
96
           child.cn = members[i].cn;
97
       }
98
       else
99
       {
100
           child.uid = members[i].uid;
101
       }
102
       group.member.push(child);
103
    }
104
    $.ajax({
105
        url: '../api/v1/groups',
106
        contentType: 'application/json',
107
        data: JSON.stringify(group),
108
        type: 'POST',
109
        dataType: 'json',
110
        processData: false,
111
        complete: groupSubmitDone});
112
    return false;
113
}
114
115
function renderID(data, type, row)
116
{
117
    if(row.uid !== undefined)
118
    {
119
        return row.uid;
120
    }
121
    else
122
    {
123
        return row.cn;
124
    }
125
}
126
127
function renderName(data, type, row)
128
{
129
    if(row.sn !== undefined)
130
    {
131
        return row.givenName+' '+row.sn;
132
    }
133
    else
134
    {
135
        return row.description;
136
    }
137
}
138
139
function do_group_edit_init()
0 ignored issues
show
This code seems to be duplicated in your project.
Loading history...
140
{
141
    $('#members').on('draw.dt', draw_done);
142
    $('#non-members').on('draw.dt', draw_done);
143
    $('#members').dataTable({
144
        'columns': [
145
            {'className':'removeControl','data':null,'defaultContent':'','orderable':false},
146
            {'data': 'uid', 'defaultContent':'', 'render': renderID},
147
            {'data': 'mail', 'defaultContent':'N/A'},
148
            {'data': 'name', 'defaultContent':'', 'render': renderName}],
149
        'order': [[1, 'asc']]
150
    });
151
    $('#non-members').dataTable({
152
        'columns':[
153
            {'className':'addControl','data':null,'defaultContent':'','orderable':false},
154
            {'data': 'uid', 'defaultContent':'', 'render': renderID},
155
            {'data': 'mail', 'defaultContent':'N/A'},
156
            {'data': 'name', 'defaultContent':'', 'render': renderName}],
157
        'order': [[1, 'asc']],
158
        'ajax': '../api/v1/groups/none/non-members?$select=cn,mail,description,givenName,sn,uid,type&fmt=data-table'
159
    });
160
    $("#form").submit(groupDataSubmitted);
161
    $('#members tbody').on('click', 'td.removeControl', remove_clicked);
162
    $('#non-members tbody').on('click', 'td.addControl', add_clicked);
163
    $('#submit').removeAttr("disabled");
164
}
165
166
$(do_group_edit_init);
167