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 =my_time($var['sbSynced2']).day_count($var['sbSynced2'])?> , finding =$var['sbSyncErrs']?> error=$var['sbSyncErrs']==1?'':'s'?>.
+ Last check incomplete on =my_time($var['sbSynced2']).day_count($var['sbSynced2'])?> , finding =$var['sbSyncErrs']?> error=$var['sbSyncErrs']==1?'':'s'?>.
Error code: =my_error($var['sbSyncExit'])?>
elseif ($var['sbSynced']==0):?>
-
-
+
+ Last checked on =my_time(0).day_count(0)?>
+ Duration: =my_check(0,0)?>
elseif ($var['sbSynced2']==0):?>
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:
=mk_option($disk['smType'], "-1", "Use default")?>
=mk_option($disk['smType'], "", "Automatic")?>
=mk_option($disk['smType'], "-d ata", "ATA")?>
+ =mk_option($disk['smType'], "-d sat", "SATA")?>
=mk_option($disk['smType'], "-d scsi", "SCSI")?>
=mk_option($disk['smType'], "-d 3ware", "3Ware")?>
=mk_option($disk['smType'], "-d areca", "Areca")?>
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:
:
=mk_option($var['smType'], "", "Automatic")?>
=mk_option($var['smType'], "-d ata", "ATA")?>
+ =mk_option($var['smType'], "-d sat", "SATA")?>
=mk_option($var['smType'], "-d scsi", "SCSI")?>
=mk_option($var['smType'], "-d 3ware", "3Ware")?>
=mk_option($var['smType'], "-d areca", "Areca")?>
diff --git a/plugins/dynamix/Eth0.page b/plugins/dynamix/Eth0.page
index 8f5c4b7c2..ec7f56c60 100644
--- a/plugins/dynamix/Eth0.page
+++ b/plugins/dynamix/Eth0.page
@@ -143,7 +143,7 @@ function checkNetworkSettings(form,index) {
var none = netmask.find('option[value="none"]');
if (none.length) {netmask.val('255.255.255.0'); none.remove();}
}
- if (form.GATEWAY !== undefined) {form.GATEWAY.disabled = disabled; form.GATEWAY.required = !disabled;}
+ if (index==0 && form.GATEWAY !== undefined) {form.GATEWAY.disabled = disabled; form.GATEWAY.required = !disabled;}
if (dns) {
form.DHCP_KEEPRESOLV.value = 'yes';
form.DHCP_KEEPRESOLV.disabled = !disabled;
diff --git a/plugins/dynamix/NewConfig.page b/plugins/dynamix/NewConfig.page
index 4348e67b0..9bef74e1b 100644
--- a/plugins/dynamix/NewConfig.page
+++ b/plugins/dynamix/NewConfig.page
@@ -33,7 +33,7 @@ function prepareNewConfig(form) {
}
}
// set preset filter to populate slots
- $.post('/webGui/include/PrepareDisks.php',{preset:preset});
+ $.post('/webGui/include/PrepareDisks.php',{preset:preset},function(){form.submit();});
}
function assign(id,disk) {
@@ -67,7 +67,8 @@ Use the *'Retain current configuration'* selection to populate the desired disk
effect of making it ***impossible*** to rebuild an existing failed drive - you have been warned!
-
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.
+
-
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.
+
-
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.
+
-
@@ -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'] = '=$sec[$name]['export']?>';
- data['shareSecurity'] = '=$sec[$name]['security']?>';
- data['changeShareSecurity'] = 'Apply';
+ data.shareExport = '=$sec[$name]['export']?>';
+ data.shareSecurity = '=$sec[$name]['security']?>';
+ 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
+All
-
+
+
+Clone source
+
+please select...
+
+
+
+
-
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=$version?> 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 .= "";
$empty = ($disk['idSb']!='' ? 'no device' : 'unassigned');
if ($disk['id']!='') {
- $out .= "".device_desc($disk)." ";
+ $out .= "".device_desc($disk)." ";
$out .= "$empty ";
} else
$out .= "$empty ";
- foreach ($devs as $dev) {$out .= "".device_desc($dev)." ";}
+ foreach ($devs as $dev) {$out .= "".device_desc($dev)." ";}
return "$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 @@
+
+
+$shares = parse_ini_file('state/shares.ini',true);
+echo json_encode($shares[$_GET['name']]);
+?>
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;
+ }
}
?>