diff --git a/emhttp/languages/en_US/helptext.txt b/emhttp/languages/en_US/helptext.txt index 92ee679a46..fbe7d7bf23 100644 --- a/emhttp/languages/en_US/helptext.txt +++ b/emhttp/languages/en_US/helptext.txt @@ -1553,6 +1553,13 @@ Uncheck all disks in order to not exclude any disks disks which represent a subset of the Included/Excluded disks defined here. :end +:shares_emptying_disks_help: +This setting designates array disk(s) that are being *emptied* of User Share data, +typically as a prelude to removing the disk(s) from the array. + +Unlike the other Global Share Settings, this setting may be changed while the array is **Started**. +:end + :shares_exclusive_shares_help: If set to Yes, share directories under /mnt/user are actually symlinks to the share directory on a storage volume provided the following conditions are met: diff --git a/emhttp/plugins/dynamix/ShareSettings.page b/emhttp/plugins/dynamix/ShareSettings.page index a61a05f00c..171e6c9dff 100644 --- a/emhttp/plugins/dynamix/ShareSettings.page +++ b/emhttp/plugins/dynamix/ShareSettings.page @@ -18,6 +18,9 @@ Tag="share-alt" ?> $disabled = _var($var,'fsState')!='Stopped' ? 'disabled' : ''; +/* The "Emptying disk(s)" setting is accepted by emhttpd while the array is Started, + so it is not gated on array state - only on user shares being enabled. */ +$emptyingDisabled = _var($var,'shareUser')=='-' ? 'disabled' : ''; $disks = array_filter($disks,'my_disks'); $width = [166,300]; @@ -61,18 +64,6 @@ async function prepareShare(form) { item.value = exclude; item.selected = true; - var emptying = ''; - for (var i=0,item; item=form.shareUserEmptying.options[i]; i++) { - if (item.selected) { - if (emptying.length) emptying += ','; - emptying += item.value; - item.selected = false; - } - } - item = form.shareUserEmptying.options[0]; - item.value = emptying; - item.selected = true; - /* Validate file count input against fileMax */ try { const fileCountInput = form.querySelector('#file_count'); @@ -96,15 +87,34 @@ async function prepareShare(form) { return true; } +/* Collapse the Emptying disk(s) multi-select into a single value before submit. */ +function prepareEmptying(form) { + var emptying = ''; + for (var i=0,item; item=form.shareUserEmptying.options[i]; i++) { + if (item.selected) { + if (emptying.length) emptying += ','; + emptying += item.value; + item.selected = false; + } + } + item = form.shareUserEmptying.options[0]; + item.value = emptying; + item.selected = true; + return true; +} + function presetShare(form,shares) { var disabled = shares==null ? =$disabled ? 'true':'false'?> : shares=='-'; var onOff = disabled ? 'disable':'enable'; form.shareUserInclude.disabled = disabled; form.shareUserExclude.disabled = disabled; - form.shareUserEmptying.disabled = disabled; $('#s1').dropdownchecklist(onOff); $('#s2').dropdownchecklist(onOff); - $('#s3').dropdownchecklist(onOff); + /* Emptying disk(s) lives in its own form so it can be changed while the array is + Started - emhttpd accepts it. Only disable it when user shares are turned off. */ + var emptyingDisabled = shares==null ? =$emptyingDisabled ? 'true':'false'?> : shares=='-'; + document.share_emptying.shareUserEmptying.disabled = emptyingDisabled; + $('#s3').dropdownchecklist(emptyingDisabled ? 'disable':'enable'); }
+ +