diff --git a/plugins/dynamix/ArrayOperation.page b/plugins/dynamix/ArrayOperation.page index fd6b2cb50..69889d1c2 100644 --- a/plugins/dynamix/ArrayOperation.page +++ b/plugins/dynamix/ArrayOperation.page @@ -157,14 +157,15 @@ $('.tabs').append(" - Last check incomplete on , finding error. + Last check incomplete on , finding error.
Error code: - - + + Last checked on +
Duration: diff --git a/plugins/dynamix/DeviceInfo.page b/plugins/dynamix/DeviceInfo.page index 44c8d5357..336c81195 100644 --- a/plugins/dynamix/DeviceInfo.page +++ b/plugins/dynamix/DeviceInfo.page @@ -437,6 +437,7 @@ SMART controller type: + diff --git a/plugins/dynamix/DiskSettings.page b/plugins/dynamix/DiskSettings.page index 1bdffc4b4..72d17b58d 100644 --- a/plugins/dynamix/DiskSettings.page +++ b/plugins/dynamix/DiskSettings.page @@ -241,6 +241,7 @@ Default SMART controller type: : Retain current configuration:
- + RESET (please configure)' : 'Array must be STOPPED'?> -Yes I want to do this +Yes I want to do this diff --git a/plugins/dynamix/SecuritySMB.page b/plugins/dynamix/SecuritySMB.page index 983b8d0a4..ea54dfd73 100644 --- a/plugins/dynamix/SecuritySMB.page +++ b/plugins/dynamix/SecuritySMB.page @@ -23,9 +23,15 @@ function clone_list($disk) { table.settings{width:83.3%;} table.settings tr td:first-child{width:40%;} + +> *Clone destinations* is used to copy the SMB security settings of the current selected share to one or more other existing shares. +> +> Select the desired destinations and press **Clone** to copy the SMB security settings to those shares. +
Clone destinations +
-
+ Share name: @@ -70,14 +77,20 @@ Security: > read-only access.   -: +:
User Access
Guests have read-only access.
+ +> *Clone destinations* is used to copy the User access settings of the current share to one or more other existing shares. +> +> Select the desired destinations and press **Clone** to copy the User access settings to those shares. +
Clone destinations +
-
+ +   -: +:
User Access
Guests have no access.
+ +> *Clone destinations* is used to copy the User access settings of the current share to one or more other existing shares. +> +> Select the desired destinations and press **Clone** to copy the User access settings to those shares. +
Clone destinations +
-
+   -: +:
@@ -133,17 +155,17 @@ function initDropdown2(reset) { $('#s4').dropdownchecklist('destroy'); $('#s5').dropdownchecklist('destroy'); } - $("#s4").dropdownchecklist({emptyText:'None', width:150, explicitClose:'...close'}); - $("#s5").dropdownchecklist({emptyText:'None', width:150, explicitClose:'...close'}); + $("#s4").dropdownchecklist({firstItemChecksAll:true, emptyText:'please select...', width:150, explicitClose:'...close'}); + $("#s5").dropdownchecklist({firstItemChecksAll:true, emptyText:'please select...', width:150, explicitClose:'...close'}); } function cloneSMB() { var data = {}, copied = false; - data['shareExport'] = ''; - data['shareSecurity'] = ''; - data['changeShareSecurity'] = 'Apply'; + data.shareExport = ''; + data.shareSecurity = ''; + data.changeShareSecurity = 'Apply'; $('select#s4 option').map(function() { if ($(this).prop('selected')==true) { - data['shareName'] = $(this).val(); + data.shareName = $(this).val(); $.post('/update.htm', data); copied = true; } @@ -168,10 +190,10 @@ function cloneUser() { if ($userAccess) echo " data['userAccess.$idx'] = '$userAccess';\n"; } ?> - data['changeShareAccess'] = 'Apply'; + data.changeShareAccess = 'Apply'; $('select#s5 option').map(function() { if ($(this).prop('selected')==true) { - data['shareName'] = $(this).val(); + data.shareName = $(this).val(); $.post('/update.htm', data); copied = true; } diff --git a/plugins/dynamix/ShareEdit.page b/plugins/dynamix/ShareEdit.page index 5cc5d95b4..ba97b36f6 100644 --- a/plugins/dynamix/ShareEdit.page +++ b/plugins/dynamix/ShareEdit.page @@ -54,29 +54,39 @@ $myDisks = array_filter(array_diff(array_keys($disks), explode(',',$var['shareUs > A *Share*, also called a *User Share*, is simply the name of a top-level directory that exists on one or more of your > storage devices (array and cache). Each share can be exported for network access. When browsing a share, we return the > composite view of all files and subdirectories for which that top-level directory exists on each storage device. +> + +> *Clone source* is used to preset the settings of the new share with the settings of an existing share. +> Select the desired share name and press **Clone** to copy the settings from that source. + +> *Clone destinations* is used to copy the settings of the current share to one or more other existing shares. +> Select the desired destinations and press **Clone** to copy the settings to those shares. + -
+ Clone destinations -
+
+ +Clone source + +
+ -
+ Share name: @@ -321,7 +359,7 @@ Share status: > Share does *not* contain any data and may be deleted if not needed any longer. Delete -: +: Share status: : Share contains data @@ -329,6 +367,6 @@ Share status: > Share can *not* be deleted as long as it contains data. Be aware that some data can be hidden. See also [SMB Settings](/Settings/SMB) -> Hide "dot" files.   -: +:
diff --git a/plugins/dynamix/include/CheckPort.php b/plugins/dynamix/include/CheckPort.php index 7ef188642..08b1b5fc5 100644 --- a/plugins/dynamix/include/CheckPort.php +++ b/plugins/dynamix/include/CheckPort.php @@ -1,6 +1,6 @@ showNotice('System running in safe mode'); - + showNotice('unRAID OS v is available. Download Now','unRAIDServer'); showNotice('Reboot required to apply unRAID OS update'); diff --git a/plugins/dynamix/include/DeviceList.php b/plugins/dynamix/include/DeviceList.php index 3f3757a63..665419de2 100644 --- a/plugins/dynamix/include/DeviceList.php +++ b/plugins/dynamix/include/DeviceList.php @@ -77,11 +77,11 @@ function assignment(&$disk) { $out .= ""; } function fs_info(&$disk) { diff --git a/plugins/dynamix/include/Helpers.php b/plugins/dynamix/include/Helpers.php index 38b3e33dc..fa8a0972b 100644 --- a/plugins/dynamix/include/Helpers.php +++ b/plugins/dynamix/include/Helpers.php @@ -40,7 +40,7 @@ function my_number($value) { function my_time($time, $fmt = NULL) { global $display; if (!$fmt) $fmt = $display['date'].($display['date']!='%c' ? ", {$display['time']}" : ""); - return $time ? strftime($fmt, $time) : "unset"; + return $time ? strftime($fmt, $time) : "unknown"; } function my_temp($value) { global $display; @@ -128,6 +128,7 @@ function mk_option_check($name, $value, $text = "") { } function day_count($time) { global $var; + if (!$time) return; $datetz = new DateTimeZone($var['timeZone']); $date = new DateTime("now", $datetz); $offset = $datetz->getOffset($date); @@ -136,7 +137,7 @@ function day_count($time) { $days = date_diff($last,$now)->format('%a'); switch (true) { case ($days<0): - return ""; + return; case ($days==0): return " (today)"; case ($days==1): diff --git a/plugins/dynamix/include/NotificationsArchive.php b/plugins/dynamix/include/NotificationsArchive.php index 559eeefc1..45f5b9eb2 100644 --- a/plugins/dynamix/include/NotificationsArchive.php +++ b/plugins/dynamix/include/NotificationsArchive.php @@ -22,9 +22,9 @@ foreach ($files as $file) { $fields = explode(PHP_EOL, file_get_contents($file)); $archive = basename($file); if ($extra = count($fields)>6) { - $td_ = ""; $_td = ""; + $td_ = ""; $_td = ""; } else { - $td_ = ""; $_td = ""; + $td_ = ""; $_td = ""; } $c = 0; foreach ($fields as $field) { diff --git a/plugins/dynamix/include/ShareData.php b/plugins/dynamix/include/ShareData.php new file mode 100644 index 000000000..50dcf0004 --- /dev/null +++ b/plugins/dynamix/include/ShareData.php @@ -0,0 +1,16 @@ + + diff --git a/plugins/dynamix/include/Wrappers.php b/plugins/dynamix/include/Wrappers.php index 1fef9ae68..9680fb3d0 100644 --- a/plugins/dynamix/include/Wrappers.php +++ b/plugins/dynamix/include/Wrappers.php @@ -33,10 +33,19 @@ function agent_fullname($agent, $state) { } } -function plugin_update_available($plugin) { - $script = '/usr/local/emhttp/plugins/dynamix.plugin.manager/scripts/plugin'; - $local = file_exists("/var/log/plugins/$plugin.plg") ? exec("$script version /var/log/plugins/$plugin.plg") : ""; - $remote = file_exists("/tmp/plugins/$plugin.plg") ? exec("$script version /tmp/plugins/$plugin.plg") : ""; - return strcmp($remote,$local)>0 ? $remote : ""; +function get_plugin_attr($attr, $file) { + exec("/usr/local/emhttp/plugins/dynamix.plugin.manager/scripts/plugin $attr $file", $result, $error); + if ($error===0) return $result[0]; +} + +function plugin_update_available($plugin, $os=false) { + $local = get_plugin_attr('version', "/var/log/plugins/$plugin.plg"); + $remote = get_plugin_attr('version', "/tmp/plugins/$plugin.plg"); + if (strcmp($remote,$local)>0) { + if ($os) return $remote; + if (!$unraid = get_plugin_attr('unRAID', "/tmp/plugins/$plugin.plg")) return $remote; + $server = get_plugin_attr('version', "/var/log/plugins/unRAIDServer.plg"); + if (version_compare($server, $unraid, '>=')) return $remote; + } } ?>