summaryrefslogtreecommitdiffstats
path: root/install/ui/controllers/user.js
blob: 0a9ddcc34e92669402cf2bfd9c4f7d02e3d66a5a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
$.Controller.extend('IPA.Controllers.UserSearchTable',
{
},
{
    init: function(el) {
        this.tbody = $('tbody', this.element);
        this.row = $('tr', this.tbody).first();

        IPA.Models.User.find([], { all: true }, this.callback('list'));
    },
    list: function(users) {
        this.tbody.empty();

        for (var i=0; i<users.length; i++) {
            var user = users[i];

            var tr = this.row.clone();
            tr.appendTo(this.tbody);

            var input = $('input[name="select"]', tr);
            input.val(user.uid[0]);

            var span = $('span[name="uid"]', tr);
            span.text(user.uid[0]);

            span = $('span[name="cn"]', tr);
            span.text(user.cn[0]);
        }
    },
    'input[name="add"] click': function(el, ev) {

        var dialog = $('<div/>');

        dialog.append('Login name: ');

        var uid = $('<input/>', {
            name: 'uid'
        }).appendTo(dialog);

        dialog.append('<br/>');
        dialog.append('First name: ');

        var givenname = $('<input/>', {
            name: 'givenname'
        }).appendTo(dialog);

        dialog.append('<br/>');
        dialog.append('Last name: ');

        var sn = $('<input/>', {
            name: 'sn'
        }).appendTo(dialog);

        var list = this.callback('list');
        dialog.dialog({
            title: 'Add',
            modal: true,
            buttons: {
                'Add': function() {
                    IPA.Models.User.add(
                        [uid.val()],
                        {
                            givenname: givenname.val(),
                            sn: sn.val()
                        },
                        function(data, text_status, xhr) {
                            IPA.Models.User.find([], { all: true }, list);

                            dialog.dialog('destroy');
                            dialog.remove();
                        }
                    );
                },
                'Cancel': function() {
                    dialog.dialog('destroy');
                    dialog.remove();
                }
            }
        });

        ev.preventDefault();
    },
    'input[name="delete"] click': function(el, ev) {
        var args = [];
        $('input[name="select"]:checked', this.tbody).each(function() {
            args.push($(this).val());
        });

        var list = this.callback('list');
        IPA.Models.User.del(args, {},function(data, text_status, xhr) {
            IPA.Models.User.find([], { all: true }, list);
        });

        ev.preventDefault();
    }
});