Projekt

Obecné

Profil

Stáhnout (6.03 KB) Statistiky
| Větev: | Revize:
1 15493e3d Anděl Ondřej
<div id="edit-modal" class="modal fade" role="dialog">
2
    <div class="modal-dialog modal-dialog-centered modal-lg" role="document">
3
        <div class="modal-content">
4
            <div class="modal-header">
5
                <h4 class="modal-title"></h4>
6
                <button type="button" class="close" data-dismiss="modal">&times;</button>
7
            </div>
8
            <div class="modal-body">
9
                <div class="container">
10
                    <div class="row my-1" id="username-wrapper">
11
                        <div class="col-xs-12 col-sm-4">
12 d99d8a5b Anděl Ondřej
                            <label for="username">Uživatelské jméno: <b class="required">*</b></label>
13 15493e3d Anděl Ondřej
                        </div>
14
                        <div class="col-xs-12 col-sm-8">
15
                            <input class="min-wdth" id="username"/>
16
                        </div>
17
                    </div>
18
                    <div class="row my-1" id="password-wrapper">
19
                        <div class="col-xs-12 col-sm-4">
20
                            <label for="password">Heslo:</label>
21
                        </div>
22
                        <div class="col-xs-12 col-sm-8">
23
                            <input type="password" class="min-wdth" id="password"/>
24
                        </div>
25
                    </div>
26
                    <div class="row my-1">
27
                        <div class="col-xs-12 col-sm-4">
28 d99d8a5b Anděl Ondřej
                            <label for="email">Email:  <b class="required">*</b></label>
29 15493e3d Anděl Ondřej
                        </div>
30
                        <div class="col-xs-12 col-sm-8">
31
                            <input class="min-wdth" id="email"/>
32
                        </div>
33
                    </div>
34
                    <div class="row my-1">
35
                        <div class="col-xs-12 col-sm-4">
36 d99d8a5b Anděl Ondřej
                            <label for="rights">Práva:  <b class="required">*</b></label>
37 15493e3d Anděl Ondřej
                        </div>
38
                        <div class="col-xs-12 col-sm-8">
39
                            <select class="min-wdth" id="rights">
40
                                <option value = "editor">Editor</option>
41
                                <option value = "admin">Admin</option>
42
                            </select>
43
                        </div>
44
                    </div>
45
46
                </div>
47
            </div>
48
            <div class="modal-footer">
49
                <button type="button" id="submit-but" class="btn btn-default" data-dismiss="modal"></button>
50
                <button type="button" class="btn btn-default" data-dismiss="modal">Zavřít</button>
51
            </div>
52
        </div>
53
    </div>
54
</div>
55
56
<script>
57
    $('#edit-modal').on('show.bs.modal', function (event) {
58
        const button = $(event.relatedTarget);
59
        const pseudo_id = button.data('pseudo-id');// Extract info from data-* attributes
60
        const title = button.data('title');// Extract info from data-* attributes
61
62
        let modal = $(this);
63
        modal.find('.modal-title').text(title);
64
65
        if(title === "Nový uživatel"){
66
            prefill(modal);
67
            modal.find('#submit-but').text("Založit");
68
            modal.find("#username-wrapper").show();
69
            modal.find("#password-wrapper").show();
70
            modal.find('#submit-but').click(() => createData(modal));
71 d99d8a5b Anděl Ondřej
72
            enableSubmit(modal, true);
73
            modal.find("#email").change(() => enableSubmit(modal, true));
74
            modal.find("#rights").change(() => enableSubmit(modal, true));
75
            modal.find("#username").change(() => enableSubmit(modal, true));
76 15493e3d Anděl Ondřej
        } else {
77
            const data_obj = users[pseudo_id];
78
            modal.find('#submit-but').text("Upravit");
79
            modal.find("#username-wrapper").hide();
80
            modal.find("#password-wrapper").hide();
81
            modal.find('#submit-but').click(() => editData(data_obj, modal));
82
            prefill(modal, data_obj);
83 d99d8a5b Anděl Ondřej
84
            enableSubmit(modal, false);
85
            modal.find("#email").change(() => enableSubmit(modal, true));
86
            modal.find("#rights").change(() => enableSubmit(modal, true));
87
            modal.find("#username").change(() => enableSubmit(modal, true));
88 15493e3d Anděl Ondřej
        }
89
    });
90
91 d99d8a5b Anděl Ondřej
    function enableSubmit(modal, createNew){
92
        if(
93
            modal.find("#email")[0].value === "" ||
94
            modal.find("#rights")[0].value === "" ||
95
            (modal.find("#username")[0].value === "" && !createNew)
96
        ){
97
            modal.find("#submit-but").prop( "disabled", true );
98
        } else {
99
            modal.find("#submit-but").prop( "disabled", false );
100
        }
101
    }
102 15493e3d Anděl Ondřej
103
    function prefill(modal, data = null){
104
        modal.find("#username").val("");
105
        modal.find("#password").val("");
106
        modal.find("#email").val("");
107
        modal.find("#rights").val("");
108
109
        if(data !== null){
110
            modal.find("#email").val(data.email);
111
            modal.find("#rights").val(data.role);
112
        }
113
    }
114
115
    function editData(data, modal){
116
        const formData = prepareFormData(modal);
117
        formData.append("userId", data.id);
118
119
        var xhr = new XMLHttpRequest();
120
        xhr.open("POST", "./controller/UpdateUserRoleController.php");
121
        xhr.send(formData);
122
        setTimeout(function(){
123
         fetchUsers(); //reload data after item delete
124
        }, 500);
125
    }
126
127
    function prepareFormData(modal) {
128
        const formData = new FormData();
129
        formData.append("role", modal.find("#rights")[0].value);
130
        formData.append("email", modal.find("#email")[0].value);
131
132
        return formData;
133
    }
134
135
    function createData(modal){
136
        const formData = prepareFormData(modal);
137
        const username = modal.find("#username")[0].value;
138
        if(username !== undefined && username !== null){
139
            formData.append("username", username);
140
            formData.append("password", modal.find("#password")[0].value);
141
142
            var xhr = new XMLHttpRequest();
143
            xhr.open("POST", "./controller/RegistrationController.php");
144
            xhr.send(formData);
145
            setTimeout(function(){
146
                fetchUsers(); //reload data after item delete
147
            }, 500);
148
        }
149
    }
150
</script>