From e68e5cc849b625dccc38b903fd19e418d62d1c22 Mon Sep 17 00:00:00 2001 From: Robin Appelman Date: Mon, 11 Feb 2013 15:18:14 +0100 Subject: Split editable select code used for quota selection into a jquery plugin --- settings/js/users.js | 792 ++++++++++++++++++++++++--------------------------- 1 file changed, 369 insertions(+), 423 deletions(-) (limited to 'settings/js/users.js') diff --git a/settings/js/users.js b/settings/js/users.js index 094cddda294..8b1e32163df 100644 --- a/settings/js/users.js +++ b/settings/js/users.js @@ -5,449 +5,395 @@ */ var UserList = { - useUndo:true, + 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; + /** + * @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; + // Set undo flag + UserList.deleteCanceled = false; - // Provide user with option to undo - $('#notification').data('deleteuser', true); - OC.Notification.showHtml(t('users', 'deleted') + ' ' + uid + '' + t('users', 'undo') + ''); - }, + // Provide user with option to undo + $('#notification').data('deleteuser', true); + OC.Notification.showHtml(t('users', 'deleted') + ' ' + uid + '' + t('users', 'undo') + ''); + }, - /** - * @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) { + /** + * @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) { + // 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 - OC.Notification.hide(); - $('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')); - } - } - }); - } - }, + // 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 + OC.Notification.hide(); + $('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 = $('').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', ''); - }); - }); - $('table').on('click', 'td.password', function (event) { - $(this).children('img').click(); - }); - - $('table').on('click', 'td.displayName>img', 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', ''); - }); - }); - $('table').on('click', 'td.displayName', function (event) { - $(this).children('img').click(); - }); - - - $('select.quota, select.quota-user').on('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()); - }) + $('table').on('click', 'td.password>img', function (event) { + event.stopPropagation(); + var img = $(this); + var uid = img.parent().parent().attr('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', ''); + }); + }); + $('table').on('click', 'td.password', function (event) { + $(this).children('img').click(); + }); - $('input.quota-other').on('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 = $('