From 4230e217af16b400cf6eba26c2333ee4ea1f884c Mon Sep 17 00:00:00 2001 From: Robin Appelman Date: Fri, 24 Feb 2012 14:38:40 +0100 Subject: [PATCH] new config widget for user quota --- settings/ajax/setquota.php | 9 +-- settings/css/settings.css | 3 + settings/js/users.js | 105 +++++++++++++++++++++++------------ settings/templates/users.php | 14 ++++- settings/users.php | 8 ++- 5 files changed, 94 insertions(+), 45 deletions(-) diff --git a/settings/ajax/setquota.php b/settings/ajax/setquota.php index 7bfc65102c..e66513e54c 100644 --- a/settings/ajax/setquota.php +++ b/settings/ajax/setquota.php @@ -11,10 +11,11 @@ $username = $_POST["username"]; $quota=$_POST["quota"]; if($quota!='none' and $quota!='default'){ $quota= OC_Helper::computerFileSize($quota); - $quota=OC_Helper::humanFileSize($quota); -} -if($quota==0){ - $quota='default'; + if($quota==0){ + $quota='default'; + }else{ + $quota=OC_Helper::humanFileSize($quota); + } } // Return Success story diff --git a/settings/css/settings.css b/settings/css/settings.css index a8af839a1e..b80d7da82c 100644 --- a/settings/css/settings.css +++ b/settings/css/settings.css @@ -29,6 +29,9 @@ li.selected { background-color:#ddd; } #content>table:not(.nostyle) { margin-top:3em; } table:not(.nostyle) { width:100%; } #rightcontent { padding-left: 1em; } +td.quota { position:relative } +select.quota { position:absolute; left:0px; top:0px; width:10em; } +input.quota-other { display:none; position:absolute; left:0.1em; top:0.1em; width:7em; border:none; -webkit-box-shadow: none -mox-box-shadow:none ; box-shadow:none; } /* APPS */ li { color:#888; } diff --git a/settings/js/users.js b/settings/js/users.js index c9b1d855db..bfc00138e0 100644 --- a/settings/js/users.js +++ b/settings/js/users.js @@ -5,6 +5,18 @@ */ $(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'); @@ -82,48 +94,63 @@ $(document).ready(function(){ $('td.password').live('click',function(event){ $(this).children('img').click(); }); - - $('td.quota>img').live('click',function(event){ - event.stopPropagation(); - var img=$(this); - var uid=img.parent().parent().data('uid'); - var input=$(''); - var quota=img.parent().children('span').text(); - if(quota=='None'){ - quota=''; + + $('select.quota').live('change',function(){ + var select=$(this); + var uid=$(this).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(); + other.focus(); } - input.val(quota); - img.css('display','none'); - img.parent().children('span').replaceWith(input); - input.focus(); - input.keypress(function(event) { - if(event.keyCode == 13) { - $(this).parent().attr('data-quota',$(this).val()); - if($(this).val().length>0){ - $.post( - OC.filePath('settings','ajax','setquota.php'), - {username:uid,quota:$(this).val()}, - function(result){ - img.parent().children('span').text(result.data.quota) - $(this).parent().attr('data-quota',result.data.quota); - } - ); - input.blur(); + }); + $('select.quota').each(function(i,select){ + $(select).data('previous',$(select).val()); + }) + + $('input.quota-other').live('change',function(){ + var uid=$(this).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{ - input.blur(); + var option=$('