function handleerror(xmldata) { if ($('error', xmldata).size()) { var msg = 'Es ist ein Fehler aufgetreten:\n'; $('error', xmldata).find('errormsg').each(function(i) { msg += $(this).text(); }); alert(msg); $('#content').show(); return true; } return false; } function updateusers(xmldata) { var uid = $(xmldata).find('uid').text(); var username = $(xmldata).find('username').text(); var firstname = $(xmldata).find('firstname').text(); var lastname = $(xmldata).find('lastname').text(); var loggedin = $(xmldata).find('loggedin').text(); var htmltext = '' + username + '' + lastname + ', ' + firstname + 'bearbeiten'; if (loggedin == '0') { htmltext = htmltext + 'löschen'; } htmltext = htmltext + ''; $('#usertable').find('tr#uid' + uid).empty().append(htmltext); if (!($('#usertable').find('tr#uid' + uid).size())) { var rows = $('#usertable').find('tr'); var inserted = false; for (var i = 0; !inserted && i < rows.length; i++) { if ($(rows[i]).find('td:first').text() > username) { $(rows[i]).before( '' + htmltext + ''); inserted = true; } } if (!inserted) { $(rows[rows.length-1]).before( '' + htmltext + ''); } } $('#usertable').find('tr#uid' + uid).find('a.editlink').click(function() { edituser(this.id.substr(4)); }); $('#usertable').find('tr#uid' + uid).find('a.deletelink').click(function() { deleteuser(this.id.substr(6)); }); $('#content').show(); } function getEditUserForm(title, username, firstname, lastname, groups, userid) { var retval; retval = '
Schließen ' + title + '
'; return retval; } function displayusereditor(title, userid, username, firstname, lastname, groups) { $('#content').hide(); $('#usereditor').hide().empty().append(getEditUserForm(title, username, firstname, lastname, groups, userid)).show(); DAV.autocompleteAutoAttach(); $('#closer').click(function() { $('#usereditor').hide().empty(); $('#content').show(); }); $('#userform').find('#input-username').focus(); $('#userform').submit(function() { var params; if (userid == null) { if (!this.username.value.match(/^[a-zA-Z0-9]{2,}$/)) { alert('Der Nutzername muss aus mindestens 2 Buchstaben oder Ziffern bestehen und darf keine sonstigen Zeichen enthalten.'); this.username.focus(); return false; } } if (userid == null || this.pwd1.value.length > 0) { if (this.pwd1.value.length < 8) { alert('Das Passwort muss mindestens 8 Zeichen lang sein!'); this.pwd1.focus(); return false; } if (this.pwd1.value != this.pwd2.value) { alert('Passwort und Wiederholung müssen übereinstimmen!'); this.pwd2.focus(); return false; } } if (!this.groups.value.match(/^([0-9a-zA-z]+[,\s]*)+$/)) { alert('Die Gruppenangabe muss eine durch Kommata getrennte Liste von Gruppennamen, die aus Buchstaben und Ziffern zusammengesetzt sein können, sein.'); this.groups.focus(); return false; } if (userid == null) { params = {method : 'submituser', username : this.username.value, firstname : this.firstname.value, lastname : this.lastname.value, password : this.pwd1.value, groups : this.groups.value}; } else { params = {method : 'submituser', uid : userid, username : this.username.value, firstname : this.firstname.value, lastname : this.lastname.value, password : this.pwd1.value, groups : this.groups.value}; } $.post( "users.php", params, function(retval) { $('div#usereditor').hide().empty(); if (!handleerror(retval)) { updateusers(retval); } }); return false; }); } function deleteuserdialog(userid, username, firstname, lastname) { $("#usereditor").hide().empty(); var msg = 'Soll der Nutzer ' + firstname + ' ' + lastname + ' mit dem Login ' + username + ' wirklich gelöscht werden?'; if (confirm(msg) == true) { $.post( "users.php", {method : 'deleteuser', uid : userid}, function(retval) { if (!handleerror(retval)) { var deluid = $('uid:first', retval).text(); $('#usertable').find('tr#uid' + deluid).remove(); } }); } } function deleteuser(userid) { $.get( "users.php", {uid : userid, method : 'getuserdata'}, function(retval) { if (!handleerror(retval)) { var username, lastname, firstname; username = $("username:first", retval).text(); lastname = $("lastname:first", retval).text(); firstname = $("firstname:first", retval).text(); deleteuserdialog(userid, username, firstname, lastname); } }); } function edituser(userid) { $.get( "users.php", {uid : userid, method : 'getuserdata'}, function(retval) { if (!handleerror(retval)) { var username, lastname, firstname, groups; username = $("username:first", retval).text(); lastname = $("lastname:first", retval).text(); firstname = $("firstname:first", retval).text(); groups = $("groups:first", retval).text(); displayusereditor('Nutzerdaten bearbeiten', userid, username, firstname, lastname, groups); } }); } function newuser() { displayusereditor('Neuen Nutzer anlegen', null, '', '', '', ''); } $(function() { $("a.editlink").each(function(i) { $(this).click(function() { edituser(this.id.substr(4)); }); }); $("a.newlink").each(function(i) { $(this).click(function() { newuser(); }); }); $("a.deletelink").each(function(i) { $(this).click(function() { deleteuser(this.id.substr(6)); }); }); });