/** * Copyright (c) 2011, Robin Appelman * This file is licensed under the Affero General Public License version 3 or later. * See the COPYING-README file. */ 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 ) { UserList.deleteUid = uid; // Set undo flag UserList.deleteCanceled = false; // Hide user in table to reflect deletion $(this).parent().parent().hide(); $('tr').filterAttr( 'data-uid', UserList.deleteUid ).hide(); // Provide user with option to undo $('#notification').text(t('files','undo delete user')); $('#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; UserList.deleteFiles = null; if (ready) { ready(); } } } }); } } } $(document).ready(function(){ function setQuota(uid,quota,ready){ $.post( OC.filePath('settings','ajax','setquota.php'), {username:uid,quota:quota}, function(result){ if(ready){ ready(result.data.quota); } } ); } function applyMultiplySelect(element){ var checked=[]; var user=element.data('username'); if(element.data('userGroups')){ checked=element.data('userGroups').split(', '); } if(user){ var checkHandeler=function(group){ if(user==OC.currentUser && group=='admin'){ return false; } $.post( OC.filePath('settings','ajax','togglegroups.php'), { username:user, group:group }, function(){} ); }; }else{ checkHandeler=false; } var addGroup = function(group) { $('select[multiple]').each(function(index, element) { if ($(element).find('option[value="'+group +'"]').length == 0) { $(element).append(''); } }) }; element.multiSelect({ createCallback:addGroup, createText:'add group', checked:checked, oncheck:checkHandeler, onuncheck:checkHandeler, minWidth: 100, }); } $('select[multiple]').each(function(index,element){ applyMultiplySelect($(element)); }); $('td.remove>img').live('click',function(event){ var uid = $(this).parent().parent().data('uid'); // Call function for handling delete/undo UserList.do_delete( uid ); }); $('td.password>img').live('click',function(event){ event.stopPropagation(); var img=$(this); var uid=img.parent().parent().data('uid'); 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','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().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().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=$('