From 9092d7f5eac2cbdf24dad1d60c4bb98ca380c485 Mon Sep 17 00:00:00 2001 From: Vincent Petry Date: Thu, 23 Jun 2016 18:42:11 +0200 Subject: [PATCH 1/2] Fix "Other" value handling in quota dropdown in users page Prevents "other" value to be deleted. When appending custom value, put it above the "other" entry. --- settings/js/users/users.js | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/settings/js/users/users.js b/settings/js/users/users.js index e0fccbd953..a4d8820486 100644 --- a/settings/js/users/users.js +++ b/settings/js/users/users.js @@ -138,10 +138,13 @@ var UserList = { .find('option').attr('selected', null) .first().attr('selected', 'selected'); } else { - if ($quotaSelect.find('option').filterAttr('value', user.quota).length > 0) { - $quotaSelect.find('option').filterAttr('value', user.quota).attr('selected', 'selected'); + var $options = $quotaSelect.find('option'); + var $foundOption = $options.filterAttr('value', user.quota); + if ($foundOption.length > 0) { + $foundOption.attr('selected', 'selected'); } else { - $quotaSelect.append(''); + // append before "Other" entry + $options.last().before(''); } } @@ -576,6 +579,9 @@ var UserList = { var $select = $(ev.target); var uid = UserList.getUID($select); var quota = $select.val(); + if (quota === 'other') { + return; + } UserList._updateQuota(uid, quota, function(returnedQuota){ if (quota !== returnedQuota) { $select.find(':selected').text(returnedQuota); From 0501d8daacde4a67610210f2543d24c462d9098c Mon Sep 17 00:00:00 2001 From: Vincent Petry Date: Fri, 24 Jun 2016 09:20:13 +0200 Subject: [PATCH 2/2] Prevent negative or non-number values in quota input --- settings/js/users/users.js | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/settings/js/users/users.js b/settings/js/users/users.js index a4d8820486..2524a1da0b 100644 --- a/settings/js/users/users.js +++ b/settings/js/users/users.js @@ -582,6 +582,12 @@ var UserList = { if (quota === 'other') { return; } + if (isNaN(parseInt(quota, 10)) || parseInt(quota, 10) < 0) { + // the select component has added the bogus value, delete it again + $select.find('option[selected]').remove(); + OC.Notification.showTemporary(t('core', 'Invalid quota value "{val}"', {val: quota})); + return; + } UserList._updateQuota(uid, quota, function(returnedQuota){ if (quota !== returnedQuota) { $select.find(':selected').text(returnedQuota);