/** * Copyright (c) 2011, Robin Appelman * This file is licensed under the Affero General Public License version 3 or later. * See the COPYING-README file. */ var UserList = { useUndo:true, /** * @brief Initiate user deletion process in UI * @param string uid the user ID to be deleted * * Does not actually delete the user; it sets them for * deletion when the current page is unloaded, at which point * finishDelete() completes the process. This allows for 'undo'. */ do_delete:function (uid) { if (typeof UserList.deleteUid !== 'undefined') { //Already a user in the undo queue UserList.finishDelete(null); } UserList.deleteUid = uid; // Set undo flag UserList.deleteCanceled = false; // Provide user with option to undo $('#notification').html(t('users', 'deleted') + ' ' + uid + '' + t('users', 'undo') + ''); $('#notification').data('deleteuser', true); $('#notification').fadeIn(); }, /** * @brief Delete a user via ajax * @param bool ready whether to use ready() upon completion * * Executes deletion via ajax of user identified by property deleteUid * if 'undo' has not been used. Completes the user deletion procedure * and reflects success in UI. */ finishDelete:function (ready) { // Check deletion has not been undone if (!UserList.deleteCanceled && UserList.deleteUid) { // Delete user via ajax $.ajax({ type:'POST', url:OC.filePath('settings', 'ajax', 'removeuser.php'), async:false, data:{ username:UserList.deleteUid }, success:function (result) { if (result.status == 'success') { // Remove undo option, & remove user from table $('#notification').fadeOut(); $('tr').filterAttr('data-uid', UserList.deleteUid).remove(); UserList.deleteCanceled = true; if (ready) { ready(); } } else { oc.dialogs.alert(result.data.message, t('settings', 'Unable to remove user')); } } }); } }, add:function (username, groups, subadmin, quota, sort) { var tr = $('tbody tr').first().clone(); tr.attr('data-uid', username); tr.attr('data-displayName', username); tr.find('td.name').text(username); tr.find('td.displayName').text(username); var groupsSelect = $('').attr('data-username', username).attr('data-user-groups', groups); tr.find('td.groups').empty(); if (tr.find('td.subadmins').length > 0) { var subadminSelect = $(''); img.css('display', 'none'); img.parent().children('span').replaceWith(input); input.focus(); input.keypress(function (event) { if (event.keyCode == 13) { if ($(this).val().length > 0) { $.post( OC.filePath('settings', 'ajax', 'changepassword.php'), {username:uid, password:$(this).val()}, function (result) { } ); input.blur(); } else { input.blur(); } } }); input.blur(function () { $(this).replaceWith($('●●●●●●●')); img.css('display', ''); }); }); $('td.password').live('click', function (event) { $(this).children('img').click(); }); $('td.displayName>img').live('click', function (event) { event.stopPropagation(); var img = $(this); var uid = img.parent().parent().attr('data-uid'); var displayName = img.parent().parent().attr('data-displayName'); var input = $(''); img.css('display', 'none'); img.parent().children('span').replaceWith(input); input.focus(); input.keypress(function (event) { if (event.keyCode == 13) { if ($(this).val().length > 0) { $.post( OC.filePath('settings', 'ajax', 'changedisplayname.php'), {username:uid, displayName:$(this).val()}, function (result) { } ); input.blur(); } else { input.blur(); } } }); input.blur(function () { $(this).replaceWith($(this).val()); img.css('display', ''); }); }); $('td.displayName').live('click', function (event) { $(this).children('img').click(); }); $('select.quota, select.quota-user').live('change', function () { var select = $(this); var uid = $(this).parent().parent().parent().attr('data-uid'); var quota = $(this).val(); var other = $(this).next(); if (quota != 'other') { other.hide(); select.data('previous', quota); setQuota(uid, quota); } else { other.show(); select.addClass('active'); other.focus(); } }); $('select.quota, select.quota-user').each(function (i, select) { $(select).data('previous', $(select).val()); }) $('input.quota-other').live('change', function () { var uid = $(this).parent().parent().parent().attr('data-uid'); var quota = $(this).val(); var select = $(this).prev(); var other = $(this); if (quota) { setQuota(uid, quota, function (quota) { select.children().attr('selected', null); var existingOption = select.children().filter(function (i, option) { return ($(option).val() == quota); }); if (existingOption.length) { existingOption.attr('selected', 'selected'); } else { var option = $('