summaryrefslogtreecommitdiff
path: root/http/src/js/pages.editUser.js
diff options
context:
space:
mode:
Diffstat (limited to 'http/src/js/pages.editUser.js')
-rw-r--r--http/src/js/pages.editUser.js96
1 files changed, 96 insertions, 0 deletions
diff --git a/http/src/js/pages.editUser.js b/http/src/js/pages.editUser.js
new file mode 100644
index 0000000..e41b67c
--- /dev/null
+++ b/http/src/js/pages.editUser.js
@@ -0,0 +1,96 @@
+epgd.pages.editUser = {
+ cur: null,
+ render: function () {
+ if (!(epgd.login.rights & epgd.rights.umConfigUsers) == epgd.rights.umConfigUsers) return epgd.utils.popup(epgd.tr.error.forbidden, { title: epgd.tr.error.error });
+ var tr = epgd.tr.pages.editUser,
+ $form= $('<form></form>'),
+ $sel = $('<select size="10"></select>').change(function () {
+ epgd.pages.editUser.showUser(this[this.selectedIndex].data, $form, epgd.pages.editUser.render);
+ });
+ $('<option>' + tr.add + '</option>').appendTo($sel)[0];
+ epgd.$con.html('<div id="page_editUser"><div><h2>' + tr.user + '</h2></div></div>');
+ epgd.ajax({ url: epgd.login.url + "data/users", cache: false }, function (data) {
+ for (var uName in data.users) {
+ $('<option>' + uName + '</option>').appendTo($sel)[0].data = data.users[uName];
+ }
+ });
+ epgd.$con.find('#page_editUser').append($form).children().first().append($sel);
+ },
+ showUser: function (userData, $form, callback) {
+ epgd.pages.editUser.cur = userData || {"user": "", "active": 1, "rights": epgd.login.rights};
+ var tr = epgd.tr.pages.editUser,
+ u = epgd.pages.editUser.cur,
+ rightForm = '',
+ um;
+ //epgd.rights = {}; for (var i = 1; i < 1025; i = i * 2) epgd.rights['um' + i] = i;// zum Test
+ for (um in epgd.rights)
+ rightForm += '<div><input type="checkbox"' + ((u.rights & epgd.rights[um]) == epgd.rights[um] ? ' checked="checked"' : '') + ' name="uRights" id="uR' + um + '" value="' + epgd.rights[um] + '"/><label for="uR' + um + '">' + (tr.rights[um] || um) + '</label></div>';
+ $form.html((!u.user ? '<h2>' + epgd.tr.pages.login.userName + '</h2><div><input type="text" id="uName" value="" /></div><br />' : '')
+ + '<div><input type="radio"' + (u.active == "1" ? ' checked="checked"' : '') + ' name="uActive" value="1" id="uActive"/><label for="uActive">' + tr.active + '</label>'
+ + ' <input type="radio"' + (u.active == "0" ? ' checked="checked"' : '') + ' name="uActive" value="0" id="uInactive" /><label for="uInActive">' + tr.inActive + '</label>'
+ + (u.user && ' <input type="radio" name="uActive" value="-1" id="uDel"/><label for="uDel">' + epgd.tr.del + '</label>')
+ + '</div>'
+ + '<h2>' + epgd.tr.pages.login.password + '</h2><div><input type="password" id="uPass" /></div>'
+ + '<h2>' + tr.rights.label + '</h2><div>' + rightForm + '</div>'
+ + '<div><br /><button class="iAsButton i-save">' + epgd.tr.save + '</button></div>');
+ $form.find('button').click(function () {
+ return epgd.pages.editUser.save(this.form, callback);
+ });
+ $uRights = $($form[0].uRights).each(function () {
+ this.r = parseInt(this.value, 10);
+ });
+ function check() {
+ var flag = this.r;
+ if (this.checked)
+ $uRights.each(function () { // Alle unterrechte automatisch setzen und fixieren
+ if (this.r < flag && (flag & this.r) == this.r) this.checked = this.disabled = true;
+ });
+ else
+ $uRights.each(function () {
+ if (this.r < flag && (flag & this.r) == this.r) {
+ this.disabled = false; // Es ist ein Unterrecht, also erst mal wieder erlauben
+ var sub = this; // Suchen, ob dieses recht noch ein von einem weiteren Recht ein Unterrecht ist und dann ggf. wieder setzen und fixieren
+ $uRights.each(function () {
+ if (this.checked && this.r > sub.r && (this.r & sub.r) == sub.r) sub.checked = sub.disabled = true;
+ });
+ }
+ });
+ }
+ $uRights.each(check).click(check);
+ },
+ save: function (form, callback) {
+ var u = {rights:1},
+ cur = epgd.pages.editUser.cur;
+ $(form.uRights).each(function () { if (this.checked) u.rights |= this.r; });
+ u.active = parseInt(form.uActive.value,10);
+ if (cur.user) {
+ u.user = cur.user;
+ if (u.active == -1) {
+ delete u.active;
+ u.state = 'D';
+ } else {
+ u.state = 'M';
+ if (u.active == cur.active)
+ delete u.active;
+ if (u.rights == cur.rights)
+ delete u.rights;
+ if (form.uPass.value)
+ u.passwd = YaMD5.hashStr(u.user + form.uPass.value);
+ }
+ } else{
+ u.state = 'C';
+ u.user = form.uName.value;
+ if (!u.user)
+ return !epgd.utils.topInfo(epgd.tr.error.emptyField.replace('$field$', epgd.tr.pages.login.userName), { isError: 1 });
+ u.passwd = YaMD5.hashStr(u.user + form.uPass.value);
+ }
+ epgd.ajax({url: epgd.login.url + "data/save-users",type: 'post',data: JSON.stringify({ users: [u] })},function (data) {
+ if (data.Error || data.result.state != 200)
+ return epgd.utils.topInfo(data.Error || data.result.message, { isError: 1 });
+ (u.user == epgd.login.user) && $(window).trigger("login_changed",u);
+ if ( $.isFunction(callback))
+ callback(data);
+ });
+ return false;
+ }
+};