/** * 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.find('td.name').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(); }); $('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=$('