mirror of
https://github.com/unraid/webgui.git
synced 2026-01-01 06:59:56 -06:00
Merge pull request #2203 from unraid/feat/responsive-improvements
feat: responsive improvements
This commit is contained in:
@@ -32,7 +32,20 @@ function getUPSstatus() {
|
||||
$(getUPSstatus);
|
||||
</script>
|
||||
|
||||
<table class="tablesorter shift">
|
||||
<thead><tr><th style="width:15%">_(Key)_</th><th style="width:35%">_(Value)_</th><th style="width:15%">_(Key)_</th><th style="width:35%">_(Value)_</th></tr></thead>
|
||||
<tbody id="ups_status"><tr><td colspan="4"><div class="spinner"></div></td></tr></tbody>
|
||||
</table>
|
||||
<div class="TableContainer">
|
||||
<table class="tablesorter shift">
|
||||
<thead>
|
||||
<tr>
|
||||
<th style="width:15%">_(Key)_</th>
|
||||
<th style="width:35%">_(Value)_</th>
|
||||
<th style="width:15%">_(Key)_</th>
|
||||
<th style="width:35%">_(Value)_</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody id="ups_status">
|
||||
<tr>
|
||||
<td colspan="4"><div class="spinner"></div></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
@@ -195,7 +195,12 @@ _(Docker vDisk size)_:
|
||||
|
||||
_(Docker vDisk location)_:
|
||||
: <input type="text" id="DOCKER_IMAGE_FILE1" name="DOCKER_IMAGE_FILE1" autocomplete="off" spellcheck="false" value="<?=htmlspecialchars(_var($dockercfg,'DOCKER_IMAGE_FILE'))?>" placeholder="_(e.g.)_ /mnt/user/system/docker.img" data-pickcloseonfile="true" data-pickfilter="img" data-pickroot="/mnt" data-pickfolders="true" disabled required pattern="^[^\\]*(docker-xfs\.img|docker\.img)$">
|
||||
<span class="deleteLabel"><label><input type="checkbox" class="deleteCheckbox"> _(Delete vDisk file)_</label></span>
|
||||
<span class="deleteLabel">
|
||||
<label>
|
||||
<input type="checkbox" class="deleteCheckbox">
|
||||
_(Delete vDisk file)_
|
||||
</label>
|
||||
</span>
|
||||
<?if ($var['fsState'] != "Started"):?>
|
||||
<span><i class="fa fa-warning icon warning"></i> _(Modify with caution: unable to validate path until Array is Started)_</span>
|
||||
<?endif;?>
|
||||
@@ -207,7 +212,12 @@ _(Docker vDisk location)_:
|
||||
<div markdown="1" id="vdisk_dir" style="display:none">
|
||||
_(Docker directory)_:
|
||||
: <input type="text" id="DOCKER_IMAGE_FILE2" name="DOCKER_IMAGE_FILE2" autocomplete="off" spellcheck="false" value="<?=htmlspecialchars(_var($dockercfg,'DOCKER_IMAGE_FILE'))?>" placeholder="_(e.g.)_ /mnt/user/system/docker" data-pickcloseonfile="true" data-pickfilter="HIDE_FILES_FILTER" data-pickroot="/mnt" data-pickfolders="true" disabled required pattern="^[^\\]*/$">
|
||||
<span class="deleteLabel"><label><input type="checkbox" class="deleteCheckbox"> _(Delete directory)_</label></span>
|
||||
<span class="deleteLabel">
|
||||
<label>
|
||||
<input type="checkbox" class="deleteCheckbox">
|
||||
_(Delete directory)_
|
||||
</label>
|
||||
</span>
|
||||
<?if ($var['fsState'] != "Started"):?>
|
||||
<span><i class="fa fa-warning icon warning"></i> _(Modify with caution: unable to validate path until Array is Started)_</span>
|
||||
<?endif;?>
|
||||
@@ -283,7 +293,10 @@ _(Docker custom network type)_:
|
||||
: <select name="DOCKER_NETWORK_TYPE">
|
||||
<?=mk_option(_var($dockercfg,'DOCKER_NETWORK_TYPE'), '1', _('ipvlan'), $bridge?'':'disabled')?>
|
||||
<?=mk_option(_var($dockercfg,'DOCKER_NETWORK_TYPE'), '', _('macvlan'), $bridge?'':'selected')?>
|
||||
</select> _(Please read the Help carefully)_. _(Misconfiguration can cause problems)_.
|
||||
</select>
|
||||
<span class="input-instructions">
|
||||
_(Please read the Help carefully)_. _(Misconfiguration can cause problems)_.
|
||||
</span>
|
||||
|
||||
:docker_custom_network_type_help:
|
||||
|
||||
@@ -291,7 +304,10 @@ _(Host access to custom networks)_:
|
||||
: <select name="DOCKER_ALLOW_ACCESS">
|
||||
<?=mk_option(_var($dockercfg,'DOCKER_ALLOW_ACCESS'), '', _('Disabled'))?>
|
||||
<?=mk_option(_var($dockercfg,'DOCKER_ALLOW_ACCESS'), 'yes', _('Enabled'))?>
|
||||
</select> _(Make sure you understand what you are doing before enabling)_.
|
||||
</select>
|
||||
<span class="input-instructions">
|
||||
_(Make sure you understand what you are doing before enabling)_.
|
||||
</span>
|
||||
|
||||
:docker_custom_network_access_help:
|
||||
|
||||
@@ -333,32 +349,82 @@ _(IPv4 custom network on interface)_ <?=$network?> (_(optional)_):
|
||||
case ($mask < 24): $prefix = $net[0].'.'.$net[1]; $box = 2; break;
|
||||
case ($mask < 32): $prefix = $net[0].'.'.$net[1].'.'.$net[2]; $box = 3 ;break;
|
||||
}
|
||||
?>
|
||||
: <input type="checkbox" id="<?=$docker_dhcp?>_edit" onchange="changeEdit(this.id, 4)"<?=$auto?'checked':''?>>
|
||||
<span id="<?=$docker_dhcp?>_line" class="<?=$autoDisabled?>">
|
||||
<span class="<?=$ip4class?>">**_(Subnet)_:** <?=$route?></span>
|
||||
<span class="<?=$gw4class?>">**_(Gateway)_:** <?=$gateway[$network]?></span>
|
||||
<input type="checkbox" id="<?=$docker_dhcp?>_dhcp" onchange="changeDHCP(this.id, 4)"<?=$dhcp?'checked':''?><?=$autoDisabled?>>
|
||||
**_(DHCP pool)_:**<span id="<?=$docker_dhcp?>_net" class="net <?=$dhcpDisabled?>"><?=$prefix?>.</span>
|
||||
</span>
|
||||
<?
|
||||
for ($b=$box; $b<=3; $b++) {
|
||||
|
||||
// Build network select options arrays
|
||||
$network_selects = [];
|
||||
for ($b = $box; $b <= 3; $b++) {
|
||||
switch ($b) {
|
||||
case 1: $step = floor($size/65536)%256; break;
|
||||
case 2: $step = floor($size/256)%256; break;
|
||||
case 3: $step = $size%256; break;
|
||||
case 1: $step = floor($size/65536) % 256; break;
|
||||
case 2: $step = floor($size/256) % 256; break;
|
||||
case 3: $step = $size % 256; break;
|
||||
}
|
||||
if ($step === 0) $step = 256;
|
||||
|
||||
$network_selects[$b] = [
|
||||
'id' => "{$docker_dhcp}_{$b}",
|
||||
'options' => []
|
||||
];
|
||||
|
||||
for ($n = $net[$b]; $n <= $max[$b]; $n++) {
|
||||
$network_selects[$b]['options'][] = mk_option($net_user[$b], $n, $n, $n % $step == 0 ? '' : 'class="hide"');
|
||||
}
|
||||
if ($step===0) $step = 256;
|
||||
echo "<select id=\"{$docker_dhcp}_{$b}\" class=\"net\" $dhcpDisabled>";
|
||||
for ($n=$net[$b]; $n<=$max[$b]; $n++) echo mk_option($net_user[$b],$n,$n,$n%$step==0?'':'class="hide"');
|
||||
echo "</select>";
|
||||
}
|
||||
echo "/ ";
|
||||
echo "<select id=\"{$docker_dhcp}_mask\" class=\"mask\" onchange=\"changeMask(this.id,this.value)\" $dhcpDisabled>";
|
||||
for ($m=$mask+1; $m<=30; $m++) echo mk_option($mask_user,$m,$m);
|
||||
echo "</select><span id=\"{$docker_dhcp}_size\" style=\"".($dhcp?'':'display:none')."\">($size "._('hosts').")</span>";
|
||||
echo "<input type=\"hidden\" name=\"$docker_dhcp\" value=\"\">";
|
||||
|
||||
// Build mask select options
|
||||
$mask_options = [];
|
||||
for ($m = $mask + 1; $m <= 30; $m++) {
|
||||
$mask_options[] = mk_option($mask_user, $m, $m);
|
||||
}
|
||||
?>
|
||||
: <div class="flex flex-col justify-start flex-wrap gap-4">
|
||||
<label class="flex flex-row items-center gap-2">
|
||||
<input type="checkbox" id="<?=$docker_dhcp?>_edit" onchange="changeEdit(this.id, 4)"<?=$auto?'checked':''?>>
|
||||
_(Edit)_
|
||||
</label>
|
||||
|
||||
<span id="<?=$docker_dhcp?>_line" class="flex flex-row items-center flex-wrap gap-4 <?=$autoDisabled?>">
|
||||
<span class="<?=$ip4class?>">
|
||||
<strong><?=_('Subnet')?>:</strong> <?=$route?>
|
||||
</span>
|
||||
<span class="<?=$gw4class?>">
|
||||
<strong><?=_('Gateway')?>:</strong> <?=$gateway[$network]?>
|
||||
</span>
|
||||
|
||||
<span class="flex flex-row items-center gap-2">
|
||||
<span class="flex flex-row items-center gap-2">
|
||||
<label class="flex flex-row items-center gap-2">
|
||||
<input type="checkbox" id="<?=$docker_dhcp?>_dhcp" onchange="changeDHCP(this.id, 4)"<?=$dhcp?'checked':''?><?=$autoDisabled?>>
|
||||
<strong><?=_('DHCP pool')?>:</strong>
|
||||
</label>
|
||||
<span id="<?=$docker_dhcp?>_net" class="net <?=$dhcpDisabled?>">
|
||||
<?=$prefix?>.
|
||||
</span>
|
||||
</span>
|
||||
|
||||
<span class="flex flex-row items-center gap-2">
|
||||
<? foreach ($network_selects as $select): ?>
|
||||
<select id="<?=$select['id']?>" class="net" <?=$dhcpDisabled?>>
|
||||
<? foreach ($select['options'] as $option): ?>
|
||||
<?=$option?>
|
||||
<? endforeach; ?>
|
||||
</select>
|
||||
<? endforeach; ?>
|
||||
|
||||
<span>/</span>
|
||||
|
||||
<select id="<?=$docker_dhcp?>_mask" class="mask" onchange="changeMask(this.id,this.value)" <?=$dhcpDisabled?>>
|
||||
<? foreach ($mask_options as $option): ?>
|
||||
<?=$option?>
|
||||
<? endforeach; ?>
|
||||
</select>
|
||||
|
||||
<span id="<?=$docker_dhcp?>_size" class="flex-shrink-0" style="<?=$dhcp ? '' : 'display:none'?>">(<?=$size?> <?=_('hosts')?>)</span>
|
||||
|
||||
<input type="hidden" name="<?=$docker_dhcp?>" value="">
|
||||
</span>
|
||||
</span>
|
||||
</span>
|
||||
</div>
|
||||
|
||||
<?if ($hide_wlan):?>
|
||||
</div>
|
||||
@@ -384,17 +450,46 @@ $hide_eth = hide_eth($network);
|
||||
<?endif;?>
|
||||
|
||||
_(IPv4 custom network on interface)_ <?=$network?> (_(optional)_):
|
||||
: <input type="checkbox" id="DOCKER_CUSTOM_<?=$port?>_edit" onchange="changeCustom(this.id,4)"<?=$subnet?'checked':''?>><span id="DOCKER_CUSTOM_<?=$port?>_line" class="<?=$subnet?'':'disabled'?>">
|
||||
<span class="<?=$ip4class?>">**_(Subnet)_:** <input type="text" id="DOCKER_CUSTOM_<?=$port?>_net" name="DOCKER_SUBNET_<?=$port?>" class="ip4" value="<?=$subnet?>" title="_(IPv4 address A.B.C.D)_"<?=$disabled?>>/
|
||||
<select id="DOCKER_CUSTOM_<?=$port?>_mask" name="DOCKER_MASK_<?=$port?>" class="mask"<?=$disabled?>>
|
||||
<?for ($m=16; $m<=30; $m++) echo mk_option($mask?:24,$m,$m)?></select>
|
||||
</span>
|
||||
<span class="<?=$gw4class?>">**_(Gateway)_:** <input type="text" id="DOCKER_CUSTOM_<?=$port?>_gw" name="DOCKER_GATEWAY_<?=$port?>" class="ip4" value="<?=htmlspecialchars(_var($dockercfg,"DOCKER_GATEWAY_$port"))?>" title="_(IPv4 address A.B.C.D)_"<?=$disabled?>></span>
|
||||
<input type="checkbox" id="DOCKER_CUSTOM_<?=$port?>_dhcp" onchange="customDHCP(this.id,4)"<?=$subnet?'checked':''?><?=$dhcpDisabled?>>
|
||||
**_(DHCP pool)_:** <input type="text" id="DOCKER_CUSTOM_<?=$port?>_pool" name="DOCKER_RANGE_<?=$port?>" class="ip4" value="<?=$range?>" title="_(IPv4 address A.B.C.D)_"<?=$disabled?>>/
|
||||
<select id="DOCKER_CUSTOM_<?=$port?>_size" name="DOCKER_SIZE_<?=$port?>" class="mask" onchange="changeHosts(this.id,this.value)"<?=$disabled?>>
|
||||
<?for ($m=16; $m<=30; $m++) echo mk_option($size?:25,$m,$m)?></select>
|
||||
<span id="DOCKER_CUSTOM_<?=$port?>_hosts" style="<?=$subnet?'':'display:none'?>">(<?=pow(2,32-($size?:25))?> _(hosts)_)</span></span>
|
||||
: <div class="flex flex-col justify-start flex-wrap gap-4">
|
||||
<label class="flex flex-row items-center gap-2">
|
||||
<input type="checkbox" id="DOCKER_CUSTOM_<?=$port?>_edit" onchange="changeCustom(this.id,4)"<?=$subnet?'checked':''?>>
|
||||
<?=_('Edit') ?>
|
||||
</label>
|
||||
|
||||
<span id="DOCKER_CUSTOM_<?=$port?>_line" class="flex flex-row items-center flex-wrap gap-4 <?=$subnet?'':'disabled'?>">
|
||||
<span class="flex flex-row items-center gap-2 <?=$ip4class?>">
|
||||
<label class="flex flex-row items-center gap-2">
|
||||
<strong><?=_('Subnet') ?>:</strong>
|
||||
<input type="text" id="DOCKER_CUSTOM_<?=$port?>_net" name="DOCKER_SUBNET_<?=$port?>" class="ip4" value="<?=$subnet?>" title="_(IPv4 address A.B.C.D)_"<?=$disabled?>>
|
||||
</label>
|
||||
<span>/</span>
|
||||
<select id="DOCKER_CUSTOM_<?=$port?>_mask" name="DOCKER_MASK_<?=$port?>" class="mask"<?=$disabled?>>
|
||||
<?for ($m=16; $m<=30; $m++) echo mk_option($mask?:24,$m,$m)?>
|
||||
</select>
|
||||
</span>
|
||||
|
||||
<span class="flex flex-row items-center gap-2">
|
||||
<label class="flex flex-row items-center gap-2 <?=$gw4class?>">
|
||||
<strong><?=_('Gateway') ?>:</strong>
|
||||
<input type="text" id="DOCKER_CUSTOM_<?=$port?>_gw" name="DOCKER_GATEWAY_<?=$port?>" class="ip4" value="<?=htmlspecialchars(_var($dockercfg,"DOCKER_GATEWAY_$port"))?>" title="_(IPv4 address A.B.C.D)_"<?=$disabled?>>
|
||||
</label>
|
||||
<span class="flex flex-row items-center gap-2">
|
||||
<label class="flex flex-row items-center gap-2">
|
||||
<input type="checkbox" id="DOCKER_CUSTOM_<?=$port?>_dhcp" onchange="customDHCP(this.id,4)"<?=$subnet?'checked':''?><?=$dhcpDisabled?>>
|
||||
<strong><?=_('DHCP pool') ?>:</strong>
|
||||
</label>
|
||||
<input type="text" id="DOCKER_CUSTOM_<?=$port?>_pool" name="DOCKER_RANGE_<?=$port?>" class="ip4" value="<?=$range?>" title="_(IPv4 address A.B.C.D)_"<?=$disabled?>>
|
||||
<span>/</span>
|
||||
<select id="DOCKER_CUSTOM_<?=$port?>_size" name="DOCKER_SIZE_<?=$port?>" class="mask" onchange="changeHosts(this.id,this.value)"<?=$disabled?>>
|
||||
<?for ($m=16; $m<=30; $m++) echo mk_option($size?:25,$m,$m)?>
|
||||
</select>
|
||||
<span id="DOCKER_CUSTOM_<?=$port?>_hosts" class="flex-shrink-0" style="<?=$subnet?'':'display:none'?>">
|
||||
(<?=pow(2,32-($size?:25))?> _(hosts)_)
|
||||
</span>
|
||||
</span>
|
||||
</span>
|
||||
</span>
|
||||
</div>
|
||||
|
||||
<?endif;?>
|
||||
<?if ($hide_eth):?>
|
||||
@@ -430,10 +525,16 @@ _(IPv6 custom network on interface)_ <?=$network?> (_(optional)_):
|
||||
$net_user = $dhcp6 ? str_replace("$net:","",base_net($dhcp6)) : '';
|
||||
$mask_user = $dhcp6 ? explode('/',$dhcp6)[1] : $mask;
|
||||
?>
|
||||
: <input type="checkbox" id="<?=$docker_dhcp6?>_edit" onchange="changeEdit(this.id, 6)"<?=$auto6?'checked':''?>>
|
||||
<span id="<?=$docker_dhcp6?>_line" class="<?=$auto6Disabled?>">
|
||||
<span class="ip6">**_(Subnet)_:** <?=$route?></span>
|
||||
<span class="gw6">**_(Gateway)_:** <?=$gateway6[$network]?></span>
|
||||
: <span class="flex flex-col justify-start flex-wrap gap-4">
|
||||
<label class="flex flex-row items-center gap-2">
|
||||
<input type="checkbox" id="<?=$docker_dhcp6?>_edit" onchange="changeEdit(this.id, 6)"<?=$auto6?'checked':''?>>
|
||||
_(Edit)_
|
||||
</label>
|
||||
<span id="<?=$docker_dhcp6?>_line" class="<?=$auto6Disabled?>">
|
||||
<span class="ip6">**_(Subnet)_:** <?=$route?></span>
|
||||
<span class="gw6">**_(Gateway)_:** <?=$gateway6[$network]?></span>
|
||||
</span>
|
||||
</span>
|
||||
|
||||
<?if ($hide_wlan):?>
|
||||
</div>
|
||||
@@ -458,11 +559,27 @@ $hide_eth = hide_eth($network);
|
||||
<?endif;?>
|
||||
|
||||
_(IPv6 custom network on interface)_ <?=$network?> (_(optional)_):
|
||||
: <input type="checkbox" id="DOCKER_CUSTOM6_<?=$port?>_edit" onchange="changeCustom(this.id,6)"<?=$subnet6?'checked':''?>><span id="DOCKER_CUSTOM6_<?=$port?>_line" class="<?=$subnet6?'':'disabled'?>">
|
||||
<span class="ip6">**_(Subnet)_:**<input type="text" id="DOCKER_CUSTOM6_<?=$port?>_net" name="DOCKER_SUBNET6_<?=$port?>" class="ip6" value="<?=$subnet6?>" title="_(IPv6 address nnnn:xxxx::yyyy)_"<?=$disabled?>>/
|
||||
<select id="DOCKER_CUSTOM6_<?=$port?>_mask" name="DOCKER_MASK6_<?=$port?>" class="mask"<?=$disabled?>>
|
||||
<?for ($m=64; $m<=120; $m+=8) echo mk_option($mask6?:64,$m,$m)?></select></span>
|
||||
<span class="gw6">**_(Gateway)_:**<input type="text" id="DOCKER_CUSTOM6_<?=$port?>_gw" name="DOCKER_GATEWAY6_<?=$port?>" class="gw6" value="<?=_var($dockercfg,"DOCKER_GATEWAY6_$port")?>" title="_(IPv6 address nnnn:xxxx::yyyy)_"<?=$disabled?>></span>
|
||||
: <div class="flex flex-col justify-start flex-wrap gap-4">
|
||||
<label class="flex flex-row items-center gap-2">
|
||||
<input type="checkbox" id="DOCKER_CUSTOM6_<?=$port?>_edit" onchange="changeCustom(this.id,6)"<?=$subnet6?'checked':''?>>
|
||||
<?=_('Edit') ?>
|
||||
</label>
|
||||
|
||||
<span id="DOCKER_CUSTOM6_<?=$port?>_line" class="flex flex-row items-center flex-wrap gap-2 <?=$subnet6?'':'disabled'?>">
|
||||
<span class="ip6 flex flex-row items-center gap-2">
|
||||
<strong><?=_('Subnet') ?>:</strong>
|
||||
<input type="text" id="DOCKER_CUSTOM6_<?=$port?>_net" name="DOCKER_SUBNET6_<?=$port?>" class="ip6" value="<?=$subnet6?>" title="_(IPv6 address nnnn:xxxx::yyyy)_"<?=$disabled?>>
|
||||
<span>/</span>
|
||||
<select id="DOCKER_CUSTOM6_<?=$port?>_mask" name="DOCKER_MASK6_<?=$port?>" class="mask"<?=$disabled?>>
|
||||
<?for ($m=64; $m<=120; $m+=8) echo mk_option($mask6?:64,$m,$m)?>
|
||||
</select>
|
||||
</span>
|
||||
<span class="gw6 flex flex-row items-center gap-2">
|
||||
<strong><?=_('Gateway') ?>:</strong>
|
||||
<input type="text" id="DOCKER_CUSTOM6_<?=$port?>_gw" name="DOCKER_GATEWAY6_<?=$port?>" class="gw6" value="<?=_var($dockercfg,"DOCKER_GATEWAY6_$port")?>" title="_(IPv6 address nnnn:xxxx::yyyy)_"<?=$disabled?>>
|
||||
</span>
|
||||
</span>
|
||||
</div>
|
||||
|
||||
<?if ($hide_eth):?>
|
||||
</div>
|
||||
@@ -534,9 +651,11 @@ $hide_wlan = hide_wlan($network);
|
||||
<?endif;?>
|
||||
|
||||
_(IPv4 custom network on interface)_ <?=$network?>:
|
||||
: <span class="<?=$gw4class?>">**_(Subnet)_:** <?=$route?></span>
|
||||
<span class="<?=$gw4class?>">**_(Gateway)_:** <?=$gateway[$network]?></span>
|
||||
<span>**_(DHCP pool)_:** <?=_var($dockercfg,$docker_dhcp) ?: "_(not set)_"?><?if (isset($dockercfg[$docker_dhcp])):?> (<?=pow(2,32-my_explode('/',$dockercfg[$docker_dhcp])[1])?> _(hosts)_)<?endif;?></span>
|
||||
: <span class="flex flex-row flex-wrap items-center gap-4">
|
||||
<span class="<?=$gw4class?>">**_(Subnet)_:** <?=$route?></span>
|
||||
<span class="<?=$gw4class?>">**_(Gateway)_:** <?=$gateway[$network]?></span>
|
||||
<span>**_(DHCP pool)_:** <?=_var($dockercfg,$docker_dhcp) ?: "_(not set)_"?><?if (isset($dockercfg[$docker_dhcp])):?> (<?=pow(2,32-my_explode('/',$dockercfg[$docker_dhcp])[1])?> _(hosts)_)<?endif;?></span>
|
||||
</span>
|
||||
|
||||
<?if ($hide_wlan):?>
|
||||
</div>
|
||||
@@ -571,9 +690,11 @@ if (substr($network,0,4) != 'wlan') {
|
||||
<?endif;?>
|
||||
|
||||
_(IPv4 custom network on interface)_ <?=$network?>:
|
||||
: <span class="<?=$gw4class?>">**_(Subnet)_:** <?=$subnet?>/<?=$mask?></span>
|
||||
<span class="<?=$gw4class?>">**_(Gateway)_:** <?=_var($dockercfg,"DOCKER_GATEWAY_$port")?></span>
|
||||
**_(DHCP pool)_:** <?=$range ? "$range/$size" : "_(not set)_"?><?if ($range):?> (<?=pow(2,32-($size?:25))?> _(hosts)_)<?endif;?>
|
||||
: <span class="flex flex-row flex-wrap items-center gap-4">
|
||||
<span class="<?=$gw4class?>">**_(Subnet)_:** <?=$subnet?>/<?=$mask?></span>
|
||||
<span class="<?=$gw4class?>">**_(Gateway)_:** <?=_var($dockercfg,"DOCKER_GATEWAY_$port")?></span>
|
||||
<span>**_(DHCP pool)_:** <?=$range ? "$range/$size" : "_(not set)_"?><?if ($range):?> (<?=pow(2,32-($size?:25))?> _(hosts)_)<?endif;?></span>
|
||||
</span>
|
||||
|
||||
<?if ($hide_eth):?>
|
||||
</div>
|
||||
@@ -593,8 +714,10 @@ if (isset($dockercfg[$docker_dhcp6]) || empty($dockercfg["DOCKER_AUTO_$net"])):?
|
||||
<?endif;?>
|
||||
|
||||
_(IPv6 custom network on interface)_ <?=$network?>:
|
||||
: <span class="gw6">**_(Subnet)_:** <?=$route?></span>
|
||||
<span class="gw6">**_(Gateway)_:** <?=$gateway6[$network]?></span>
|
||||
: <span class="flex flex-row flex-wrap items-center gap-4">
|
||||
<span class="gw6">**_(Subnet)_:** <?=$route?></span>
|
||||
<span class="gw6">**_(Gateway)_:** <?=$gateway6[$network]?></span>
|
||||
</span>
|
||||
|
||||
<?if ($hide_wlan):?>
|
||||
</div>
|
||||
@@ -629,8 +752,10 @@ if (substr($network,0,4) != 'wlan') {
|
||||
<?endif;?>
|
||||
|
||||
_(IPv6 custom network on interface)_ <?=$network?>:
|
||||
: <span class="gw6">**_(Subnet)_:** <?=$subnet6?>/<?=$mask6?></span>
|
||||
<span class="gw6">**_(Gateway)_:** <?=_var($dockercfg,"DOCKER_GATEWAY6_$port")?></span>
|
||||
: <span class="flex flex-row flex-wrap items-center gap-4">
|
||||
<span class="gw6">**_(Subnet)_:** <?=$subnet6?>/<?=$mask6?></span>
|
||||
<span class="gw6">**_(Gateway)_:** <?=_var($dockercfg,"DOCKER_GATEWAY6_$port")?></span>
|
||||
</span>
|
||||
|
||||
<?if ($hide_eth):?>
|
||||
</div>
|
||||
@@ -667,6 +792,7 @@ _(btrfs scrub status)_:
|
||||
<input type="hidden" name="#arg[1]" value="start">
|
||||
<input type="hidden" name="#arg[2]" value="/var/lib/docker">
|
||||
<input type="hidden" name="#arg[3]" value="-r">
|
||||
|
||||
|
||||
: <span class="inline-block">
|
||||
<input type="submit" value="_(Scrub)_">
|
||||
@@ -679,6 +805,7 @@ _(btrfs scrub status)_:
|
||||
<input type="hidden" name="#command" value="/webGui/scripts/btrfs_scrub">
|
||||
<input type="hidden" name="#arg[1]" value="cancel">
|
||||
<input type="hidden" name="#arg[2]" value="/var/lib/docker">
|
||||
|
||||
|
||||
: <span class="inline-block">
|
||||
<input type="submit" value="_(Cancel)_">
|
||||
|
||||
@@ -1154,7 +1154,9 @@ _(Container Network)_:
|
||||
|
||||
<div markdown="1" class='TSNetworkAllowed'>
|
||||
_(Use Tailscale)_:
|
||||
: <input type="checkbox" class="switch-on-off" name="contTailscale" id="contTailscale" <?php if (!empty($xml['TailscaleEnabled']) && $xml['TailscaleEnabled'] == 'true') echo 'checked'; ?> onchange="showTailscale(this)">
|
||||
: <span class="flex flex-row items-center">
|
||||
<input type="checkbox" class="switch-on-off" name="contTailscale" id="contTailscale" <?php if (!empty($xml['TailscaleEnabled']) && $xml['TailscaleEnabled'] == 'true') echo 'checked'; ?> onchange="showTailscale(this)">
|
||||
</span>
|
||||
|
||||
:docker_tailscale_help:
|
||||
|
||||
@@ -1411,7 +1413,9 @@ _(Console shell command)_:
|
||||
</select>
|
||||
|
||||
_(Privileged)_:
|
||||
: <input type="checkbox" class="switch-on-off" name="contPrivileged">
|
||||
: <span class="flex flex-row items-center">
|
||||
<input type="checkbox" class="switch-on-off" name="contPrivileged">
|
||||
</span>
|
||||
|
||||
:docker_privileged_help:
|
||||
|
||||
@@ -1485,7 +1489,7 @@ _(Default Value)_:
|
||||
<div id="Mode"></div>
|
||||
|
||||
_(Description)_:
|
||||
: <textarea name="Description" spellcheck="false" cols="80" rows="3" style="width:304px;"></textarea>
|
||||
: <textarea name="Description" spellcheck="false" cols="80" rows="3"></textarea>
|
||||
|
||||
<div markdown="1" class="advanced">
|
||||
_(Display)_:
|
||||
@@ -1520,8 +1524,20 @@ _(Password Mask)_:
|
||||
<input type="hidden" name="confDisplay[]" value="{6}">
|
||||
<input type="hidden" name="confRequired[]" value="{7}">
|
||||
<input type="hidden" name="confMask[]" value="{8}">
|
||||
|
||||
<span class="{11}"><i class="fa fa-fw fa-{13}"></i> {0}:</span>
|
||||
: <span class="boxed"><input type="text" class="setting_input" name="confValue[]" default="{2}" value="{9}" autocomplete="off" spellcheck="false" {11}>{10}<br><span class='orange-text'>{12}: {1}</span><br><span class="orange-text">{4}</span><br></span>
|
||||
: <span class="flex flex-col gap-4">
|
||||
<span class="flex flex-row flex-wrap items-center gap-4 buttons-no-margin">
|
||||
<input type="text" class="setting_input" name="confValue[]" default="{2}" value="{9}" autocomplete="off" spellcheck="false" {11}>
|
||||
{10}
|
||||
</span>
|
||||
<span class="boxed">
|
||||
<span class='orange-text'>{12}: {1}</span>
|
||||
<br>
|
||||
<span class="orange-text">{4}</span>
|
||||
<br>
|
||||
</span>
|
||||
</span>
|
||||
</div>
|
||||
|
||||
<div markdown="1" id="templateAllocations" style="display:none">
|
||||
@@ -1865,11 +1881,15 @@ $(function() {
|
||||
confNum += 1;
|
||||
Opts = Settings.Config[i];
|
||||
if (Opts.Display == "always-hide" || Opts.Display == "advanced-hide") {
|
||||
Opts.Buttons = "<span class='advanced'><button type='button' onclick='editConfigPopup("+confNum+",<?=$disableEdit?>)'>_(Edit)_</button>";
|
||||
Opts.Buttons = "<span class='flex flex-row items-center gap-4'>";
|
||||
Opts.Buttons += "<span class='advanced'><button type='button' onclick='editConfigPopup("+confNum+",<?=$disableEdit?>)'>_(Edit)_</button>";
|
||||
Opts.Buttons += "<button type='button' onclick='removeConfig("+confNum+")'>_(Remove)_</button></span>";
|
||||
Opts.Buttons += "</span>";
|
||||
} else {
|
||||
Opts.Buttons = "<button type='button' onclick='editConfigPopup("+confNum+",<?=$disableEdit?>)'>_(Edit)_</button>";
|
||||
Opts.Buttons = "<span class='flex flex-row items-center gap-4'>";
|
||||
Opts.Buttons += "<button type='button' onclick='editConfigPopup("+confNum+",<?=$disableEdit?>)'>_(Edit)_</button>";
|
||||
Opts.Buttons += "<button type='button' onclick='removeConfig("+confNum+")'>_(Remove)_</button>";
|
||||
Opts.Buttons += "</span>";
|
||||
}
|
||||
Opts.Number = confNum;
|
||||
if (Opts.Type == "Device") {
|
||||
|
||||
@@ -8,9 +8,7 @@
|
||||
}
|
||||
span.boxed {
|
||||
display: inline-block;
|
||||
line-height: normal;
|
||||
white-space: normal;
|
||||
width: 60%;
|
||||
max-width: 100ch;
|
||||
}
|
||||
span.cpu,
|
||||
label.checkbox {
|
||||
@@ -29,7 +27,7 @@ span.ip {
|
||||
display: inline-block;
|
||||
width: 160px;
|
||||
}
|
||||
dl,
|
||||
/* dl,
|
||||
dt,
|
||||
dd {
|
||||
line-height: normal !important;
|
||||
@@ -41,21 +39,21 @@ dl {
|
||||
dl > dt:nth-of-type(2),
|
||||
dl > dd:nth-of-type(2) {
|
||||
padding: 20px 0 0 0 !important;
|
||||
}
|
||||
input.setting_input {
|
||||
} */
|
||||
/* input.setting_input {
|
||||
margin-right: 4rem;
|
||||
}
|
||||
input,
|
||||
} */
|
||||
/* input,
|
||||
select {
|
||||
margin-top: -0.8rem !important;
|
||||
}
|
||||
div#configLocation,
|
||||
} */
|
||||
/* div#configLocation,
|
||||
div#configLocation dl {
|
||||
padding: 0 !important;
|
||||
}
|
||||
div#configLocation dt {
|
||||
margin-top: -0.18rem !important;
|
||||
}
|
||||
} */
|
||||
|
||||
:root {
|
||||
--add-container-file-tree-background: var(--black);
|
||||
|
||||
@@ -24,10 +24,10 @@ select.mask {
|
||||
min-width: 0;
|
||||
margin: 0 10px 0 4px;
|
||||
}
|
||||
select.net {
|
||||
/* select.net {
|
||||
min-width: 0;
|
||||
margin: 0 4px 0 2px;
|
||||
}
|
||||
} */
|
||||
select option.hide {
|
||||
display: none;
|
||||
}
|
||||
@@ -51,11 +51,11 @@ input.pool6 {
|
||||
width: 40px;
|
||||
margin: 0 4px 0 1px;
|
||||
}
|
||||
span.net {
|
||||
/* span.net {
|
||||
margin-left: 4px;
|
||||
margin-right: 2px;
|
||||
}
|
||||
span.ip4 {
|
||||
} */
|
||||
/* span.ip4 {
|
||||
display: inline-block;
|
||||
width: 260px;
|
||||
}
|
||||
@@ -66,11 +66,11 @@ span.ip6 {
|
||||
span.gw4 {
|
||||
display: inline-block;
|
||||
width: 200px;
|
||||
}
|
||||
span.gw6 {
|
||||
} */
|
||||
/* span.gw6 {
|
||||
display: inline-block;
|
||||
width: 270px;
|
||||
}
|
||||
} */
|
||||
span.nonexist {
|
||||
margin-left: 20px;
|
||||
}
|
||||
|
||||
@@ -315,6 +315,7 @@ _(btrfs scrub status)_:
|
||||
<input type="hidden" name="#arg[1]" value="start">
|
||||
<input type="hidden" name="#arg[2]" value="/etc/libvirt">
|
||||
<input type="hidden" name="#arg[3]" value="-r">
|
||||
|
||||
|
||||
: <span class="inline-block">
|
||||
<input type="submit" value="_(Scrub)_">
|
||||
@@ -327,6 +328,7 @@ _(btrfs scrub status)_:
|
||||
<input type="hidden" name="#command" value="/webGui/scripts/btrfs_scrub">
|
||||
<input type="hidden" name="#arg[1]" value="cancel">
|
||||
<input type="hidden" name="#arg[2]" value="/etc/libvirt">
|
||||
|
||||
|
||||
: <span class="inline-block">
|
||||
<input type="submit" value="_(Cancel)_">
|
||||
|
||||
@@ -7,9 +7,6 @@
|
||||
--vm-machines-file-tree-background: var(--gray-100);
|
||||
}
|
||||
|
||||
body {
|
||||
-webkit-overflow-scrolling: touch;
|
||||
}
|
||||
.errortext {
|
||||
color: var(--red-800); /* Condensed from: #ef3d47 */
|
||||
display: none;
|
||||
@@ -30,10 +27,8 @@ body {
|
||||
}
|
||||
#download_button {
|
||||
cursor: pointer;
|
||||
margin-left: -2px;
|
||||
color: var(--blue-700); /* Condensed from: #08c */
|
||||
display: none;
|
||||
transform: translate(0px, 2px);
|
||||
}
|
||||
#download_button.fa-spin {
|
||||
cursor: default;
|
||||
@@ -48,16 +43,9 @@ body {
|
||||
}
|
||||
#remove_button {
|
||||
cursor: pointer;
|
||||
margin-left: -2px;
|
||||
color: var(--red-800); /* Condensed from: #ef3d47 */
|
||||
display: none;
|
||||
transform: translate(0px, 2px);
|
||||
}
|
||||
#remove_button span {
|
||||
font-family: clear-sans;
|
||||
}
|
||||
|
||||
/* .fileTree {
|
||||
width: 300px;
|
||||
max-height: 150px;
|
||||
} */
|
||||
|
||||
@@ -15,20 +15,28 @@ Tag="icon-cpu"
|
||||
*/
|
||||
?>
|
||||
<form name="is">
|
||||
<input type="hidden" name="names" value="isolcpus">
|
||||
<input type="hidden" name="names" value="isolcpus">
|
||||
|
||||
<div class="TableContainer">
|
||||
<table class='tablesorter shift' style='width:auto'>
|
||||
<div class="TableContainer--no-min-width">
|
||||
<table class="tablesorter shift" style="width: auto">
|
||||
<thead>
|
||||
<tr>
|
||||
<th><i class="fa fa-list"></i> _(Isolation)_</th>
|
||||
<?create()?>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody id="table-is"><?=$spinner?></tbody>
|
||||
</table>
|
||||
</div>
|
||||
<input type="button" value="_(Apply)_" onclick="apply(this.form)" disabled><input type="button" value="_(Done)_" onclick="done()"><span id="wait-is" class="red-text" style="display:none"><i class="fa fa-spinner fa-spin"></i> _(Please wait)_...</span>
|
||||
<tbody id="table-is"><?=$spinner?></tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<div class="flex flex-row items-center gap-2">
|
||||
<input type="button" value="_(Apply)_" onclick="apply(this.form)" disabled>
|
||||
<input type="button" value="_(Done)_" onclick="done()">
|
||||
<span id="wait-is" class="red-text" style="display:none">
|
||||
<i class="fa fa-spinner fa-spin"></i>
|
||||
<span>_(Please wait)_...</span>
|
||||
</span>
|
||||
</div>
|
||||
</form>
|
||||
<?if (!$safemode):?>
|
||||
<?else:?>
|
||||
|
||||
@@ -16,21 +16,30 @@ Tag="icon-cpu"
|
||||
?>
|
||||
<?if ($dockerd):?>
|
||||
<form name="ct">
|
||||
<input type="hidden" name="names" id="names-ct" value="">
|
||||
<div class="TableContainer">
|
||||
<table class='tablesorter shift' style='width:auto'>
|
||||
<thead>
|
||||
<tr>
|
||||
<th><i class="fa fa-list"></i> _(Container)_</th>
|
||||
<?create()?>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody id="table-ct">
|
||||
<?=$spinner?>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<input type="button" value="_(Apply)_" onclick="apply(this.form)" disabled><input type="button" value="_(Done)_" onclick="done()"><span id="wait-ct" class="red-text" style="display:none"><i class="fa fa-spinner fa-spin"></i> _(Please wait)_...</span>
|
||||
<input type="hidden" name="names" id="names-ct" value="">
|
||||
|
||||
<div class="TableContainer--no-min-width">
|
||||
<table class="tablesorter shift" style="width: auto">
|
||||
<thead>
|
||||
<tr>
|
||||
<th><i class="fa fa-list"></i> _(Container)_</th>
|
||||
<?create()?>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody id="table-ct">
|
||||
<?=$spinner?>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<div class="flex flex-row items-center gap-2">
|
||||
<input type="button" value="_(Apply)_" onclick="apply(this.form)" disabled>
|
||||
<input type="button" value="_(Done)_" onclick="done()">
|
||||
<span id="wait-ct" class="red-text" style="display:none">
|
||||
<i class="fa fa-spinner fa-spin"></i>
|
||||
<span>_(Please wait)_...</span>
|
||||
</span>
|
||||
</div>
|
||||
</form>
|
||||
<?else:?>
|
||||
<div class="notice">_(No CPU pinning available. Docker service must be started)_</div>
|
||||
|
||||
@@ -310,19 +310,28 @@ $(function() {
|
||||
</script>
|
||||
<?if ($libvirtd):?>
|
||||
<form name="vm">
|
||||
<input type="hidden" name="names" id="names-vm" value="">
|
||||
<div class="TableContainer">
|
||||
<table class='tablesorter shift' style='width:auto'>
|
||||
<thead>
|
||||
<tr>
|
||||
<th><i class="fa fa-list"></i> _(VM)_</th>
|
||||
<?create("vm")?>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody id="table-vm"><?=$spinner?></tbody>
|
||||
</table>
|
||||
</div>
|
||||
<input type="button" value="_(Apply)_" onclick="apply(this.form)" disabled><input type="button" value="_(Done)_" onclick="done()"><span id="wait-vm" class="red-text" style="display:none"><i class="fa fa-spinner fa-spin"></i> _(Please wait)_...</span>
|
||||
<input type="hidden" name="names" id="names-vm" value="">
|
||||
|
||||
<div class="TableContainer--no-min-width">
|
||||
<table class="tablesorter shift" style="width: auto">
|
||||
<thead>
|
||||
<tr>
|
||||
<th><i class="fa fa-list"></i> _(VM)_</th>
|
||||
<?create("vm")?>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody id="table-vm"><?=$spinner?></tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<div class="flex flex-row items-center gap-2">
|
||||
<input type="button" value="_(Apply)_" onclick="apply(this.form)" disabled>
|
||||
<input type="button" value="_(Done)_" onclick="done()">
|
||||
<span id="wait-vm" class="red-text" style="display:none">
|
||||
<i class="fa fa-spinner fa-spin"></i>
|
||||
<span>_(Please wait)_...</span>
|
||||
</span>
|
||||
</div>
|
||||
</form>
|
||||
<?else:?>
|
||||
<div class="notice">_(No CPU pinning available. VM service must be started)_</div>
|
||||
|
||||
@@ -1380,6 +1380,7 @@ _(xfs_repair status)_:
|
||||
<input type="hidden" name="#cleanup" value="true">
|
||||
<input type="hidden" name="smEvents" value="">
|
||||
<input type="hidden" name="smGlue" value="<?=_var($var,'smGlue')?>">
|
||||
|
||||
<?if (_var($disk,'rotational',1)==1):?>
|
||||
_(Warning disk temperature threshold)_ (°<?=_var($display,'unit','C')?>):
|
||||
<?elseif (_var($disk,'transport')=='nvme'):?>
|
||||
|
||||
@@ -281,6 +281,7 @@ _(Default critical SSD temperature threshold)_ (°<?=_var($display,'unit','C'
|
||||
<input type="hidden" name="olddata" value="">
|
||||
<input type="hidden" name="oldluks" value="">
|
||||
<?endif;?>
|
||||
|
||||
_(Existing encryption key)_:
|
||||
: <select name="oldinput" class="lock" onchange='selectInput(this.value,true)' <?=$keyfile?'disabled':''?>>
|
||||
<?=mk_option(1,'text',_('Passphrase'))?>
|
||||
@@ -290,9 +291,14 @@ _(Existing encryption key)_:
|
||||
<?if (!$keyfile):?>
|
||||
<div markdown="1" id="oldtext">
|
||||
_(Enter existing passphrase)_:
|
||||
: <input type="password" name="oldtext" class="lock" maxlength="512" value="" autocomplete="off" spellcheck="false"><input name="showPass" type="checkbox" class="lock" onchange="showInput(this.checked,true)">_(show passphrase)_
|
||||
: <div class="flex flex-row items-center gap-2">
|
||||
<input type="password" name="oldtext" class="lock" maxlength="512" value="" autocomplete="off" spellcheck="false">
|
||||
<label for="showPass">
|
||||
<input name="showPass" type="checkbox" class="lock" onchange="showInput(this.checked,true)">
|
||||
_(show passphrase)_
|
||||
</label>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div markdown="1" id="oldfile" style="display:none">
|
||||
_(Select existing keyfile)_:
|
||||
: <input type="file" name="oldfile" class="lock" onchange="getFileContent(event,this.form,'olddata')">
|
||||
@@ -308,7 +314,13 @@ _(Change encryption key)_:
|
||||
|
||||
<div markdown="1" id="newtext">
|
||||
_(Type new passphrase)_:
|
||||
: <input type="password" name="newtext" class="lock" maxlength="512" value="" autocomplete="off" spellcheck="false" onkeyup="checkInput(this.form)" placeholder="_(use printable characters only)_"><input name="showPass" type="checkbox" class="lock" onchange="showInput(this.checked,false)">_(show passphrase)_
|
||||
: <div class="flex flex-row items-center gap-2">
|
||||
<input type="password" name="newtext" class="lock" maxlength="512" value="" autocomplete="off" spellcheck="false" onkeyup="checkInput(this.form)" placeholder="_(use printable characters only)_">
|
||||
<label for="showPass">
|
||||
<input name="showPass" type="checkbox" class="lock" onchange="showInput(this.checked,false)">
|
||||
_(show passphrase)_
|
||||
</label>
|
||||
</div>
|
||||
|
||||
_(Retype new passphrase)_:
|
||||
: <input type="password" name="newcopy" class="lock" maxlength="512" value="" autocomplete="off" spellcheck="false" onkeyup="checkInput(this.form)">
|
||||
@@ -335,6 +347,7 @@ _(Select new keyfile)_:
|
||||
<input type="hidden" name="#top" value="1">
|
||||
<input type="hidden" name="smEvents" value="">
|
||||
<input type="hidden" name="smIndex" value="0">
|
||||
|
||||
_(Default SMART notification value)_:
|
||||
: <select name="smSelect">
|
||||
<?=mk_option(_var($var,'smSelect'), "0", _('Raw'))?>
|
||||
|
||||
@@ -649,9 +649,7 @@ _(IPv6 DNS server)_ 3:
|
||||
|
||||
_(Interface description)_:
|
||||
: <input type="text" name="DESCRIPTION:0" maxlength="80" autocomplete="off" spellcheck="false" value="<?=htmlspecialchars(_var($eth0, "DESCRIPTION:0"))?>">
|
||||
|
||||
|
||||
: <span class="inline-block">
|
||||
<span class="inline-block">
|
||||
<input type="button" class="form" value="_(Info)_" onclick="networkInfo('eth0')">
|
||||
</span>
|
||||
|
||||
|
||||
@@ -73,7 +73,6 @@ $(function() {
|
||||
});
|
||||
</script>
|
||||
|
||||
<div class="title nocontrol shift"> </div>
|
||||
<form markdown="1" name="ethX_settings" method="POST" action="/update.php" target="progressFrame" onchange="signalRun(this,2)" onsubmit="return prepareSettings(this)">
|
||||
<input type="hidden" name="#file" value="<?=$ini?>">
|
||||
<input type="hidden" name="#include" value="/webGui/include/update.ethernet.php">
|
||||
@@ -85,13 +84,16 @@ $(function() {
|
||||
<input type="hidden" name="BRNAME" value="brX">
|
||||
<input type="hidden" name="BRSTP" value="no">
|
||||
<input type="hidden" name="BRFD" value="0">
|
||||
|
||||
_(Interface description)_:
|
||||
<?if (!$more):?>
|
||||
: <input type="text" name="DESCRIPTION:0" maxlength="80" autocomplete="off" spellcheck="false" value="<?=htmlspecialchars(_var($ethX,"DESCRIPTION:0"))?>">
|
||||
<input type="button" class="form" value="_(Info)_" onclick="networkInfo('ethX')">
|
||||
<?else:?>
|
||||
: <span class="<?=$class?>"><?=$reason?></span>
|
||||
<?endif;?>
|
||||
: <?if (!$more):?>
|
||||
<input type="text" name="DESCRIPTION:0" maxlength="80" autocomplete="off" spellcheck="false" value="<?=htmlspecialchars(_var($ethX,"DESCRIPTION:0"))?>">
|
||||
<span class="inline-block">
|
||||
<input type="button" class="form" value="_(Info)_" onclick="networkInfo('ethX')">
|
||||
</span>
|
||||
<?else:?>
|
||||
<span class="<?=$class?>"><?=$reason?></span>
|
||||
<?endif;?>
|
||||
|
||||
:eth_interface_description_help:
|
||||
|
||||
@@ -252,7 +254,9 @@ _(Enable VLANs)_:
|
||||
<div markdown="1" id="index-ethX-<?=$i?>" class="access-ethX shade hide">
|
||||
_(Interface description)_:
|
||||
: <input type="text" name="DESCRIPTION:<?=$i?>" maxlength="80" autocomplete="off" spellcheck="false" value="<?=htmlspecialchars(_var($ethX,"DESCRIPTION:$i"))?>">
|
||||
<input type="button" class="form" value="_(Info)_" onclick="networkInfo('eth0',<?=_var($ethX,"VLANID:$i")?>)">
|
||||
<span class="inline-block">
|
||||
<input type="button" class="form" value="_(Info)_" onclick="networkInfo('eth0',<?=_var($ethX,"VLANID:$i")?>)">
|
||||
</span>
|
||||
|
||||
:eth_interface_description_help:
|
||||
|
||||
@@ -346,10 +350,15 @@ _(IPv6 privacy extensions)_:
|
||||
<input type="submit" value="_(Apply)_" onclick="$('#wait_<?=$tabbed?'eth0':'ethX'?>').show()" disabled>
|
||||
<input type="button" value="_(Done)_" onclick="done()">
|
||||
</span>
|
||||
<input type="button" name="#shut_ethX" value="<?=_('Port '.$cmd)?>" onclick="portToggle('ethX','<?=$cmd?>')">
|
||||
<?if (!$service):?>
|
||||
<input type="button" id="button-add-ethX" class="hide" value="_(Add VLAN)_" onclick="addVLAN('ethX')">
|
||||
<?else:?><?=sprintf(_('Stop **%s** to make changes, see'),$service).' (<a href="/Settings">'._('Settings').'</a>)'?><?endif;?>
|
||||
<span class="flex flex-row flex-wrap items-center gap-4">
|
||||
<input type="button" name="#shut_ethX" value="<?=_('Port '.$cmd)?>" onclick="portToggle('ethX','<?=$cmd?>')">
|
||||
<?if (!$service):?>
|
||||
<input type="button" id="button-add-ethX" class="hide" value="_(Add VLAN)_" onclick="addVLAN('ethX')">
|
||||
<?endif;?>
|
||||
</span>
|
||||
<?if ($service):?>
|
||||
<span><?=sprintf(_('Stop **%s** to make changes, see'),$service).' (<a href="/Settings">'._('Settings').'</a>)'?></span>
|
||||
<?endif;?>
|
||||
</form>
|
||||
|
||||
<script markdown="1" type="text/html" id="network-template-ethX">
|
||||
|
||||
@@ -68,7 +68,6 @@ $(function(){
|
||||
|
||||
_(Current listening interfaces)_:
|
||||
: <span id="listen"><?=exec("$docroot/webGui/scripts/show_interfaces") ?: _('Any')?></span><span class="red-text" style="margin-left:30px"><?=exec("$docroot/webGui/scripts/error_interfaces")?></span>
|
||||
<hr>
|
||||
|
||||
_(Include listening interfaces)_:
|
||||
: <textarea name="include" spellcheck="false" cols="80" rows="<?=substr_count($include_interfaces, "\n") + 1?>" maxlength="2048" name="text" class="resize-none"><?=htmlspecialchars($include_interfaces)?></textarea>
|
||||
|
||||
@@ -54,7 +54,6 @@ function update_info(id,mac) {
|
||||
$('#info-'+id).html(info['_'+mac.replace(/:/g,'')]);
|
||||
}
|
||||
</script>
|
||||
<div class="title nocontrol shift"> </div>
|
||||
<form markdown="1" name="network_rules" method="POST" action="/update.php" target="progressFrame" onsubmit="return check_rules(this)">
|
||||
<input type="hidden" name="#file" value="not-used">
|
||||
<input type="hidden" name="#include" value="/webGui/include/update.rules.php">
|
||||
|
||||
@@ -36,6 +36,90 @@ if (file_exists($memory)) {
|
||||
}
|
||||
if ($parity['mode']<2) $parity['cumulative'] = '';
|
||||
if ($parity['mode']==2) $parity['frequency'] = '1';
|
||||
|
||||
// Build day options array based on mode
|
||||
$day_options = [];
|
||||
$day_select_attrs = 'name="day"';
|
||||
|
||||
if ($parity['mode'] == 2) {
|
||||
// Weekly mode - regular dropdown
|
||||
for ($d = 0; $d < count($days); $d++) {
|
||||
$day_options[] = mk_option($parity['day'], strval($d), ucfirst(_($days[$d],0)));
|
||||
}
|
||||
} elseif ($parity['mode'] == 5) {
|
||||
// Custom mode - multiple select
|
||||
$day_select_attrs = 'id="s1" name="day" multiple="multiple" style="display:none"';
|
||||
for ($d = 0; $d < count($days); $d++) {
|
||||
$day_options[] = mk_option_check($parity['day'], strval($d), ucfirst(_($days[$d],0)));
|
||||
}
|
||||
} else {
|
||||
// Other modes - disabled placeholder
|
||||
$day_options[] = mk_option($parity['day'], "*", "--------");
|
||||
}
|
||||
|
||||
// Build dotm (day of the month/week) options array based on mode
|
||||
$dotm_options = [];
|
||||
|
||||
if ($parity['mode'] >= 3) {
|
||||
if ($parity['mode'] == 5) {
|
||||
// Custom mode - week options
|
||||
$dotm_options[] = mk_option($parity['dotm'], "*", _("Every week"));
|
||||
$dotm_options[] = mk_option($parity['dotm'], "W1", _("First week"));
|
||||
$dotm_options[] = mk_option($parity['dotm'], "W2", _("Second week"));
|
||||
$dotm_options[] = mk_option($parity['dotm'], "W3", _("Third week"));
|
||||
$dotm_options[] = mk_option($parity['dotm'], "W4", _("Fourth week"));
|
||||
$dotm_options[] = mk_option($parity['dotm'], "WL", _("Last week"));
|
||||
} else {
|
||||
// Monthly/Yearly mode - day options
|
||||
$dotm_options[] = mk_option($parity['dotm'], "1", _("First day"));
|
||||
$dotm_options[] = mk_option($parity['dotm'], "28-31", _("Last day"));
|
||||
for ($d = 2; $d <= 31; $d++) {
|
||||
$dotm_options[] = mk_option($parity['dotm'], strval($d), sprintf("%02d", $d));
|
||||
}
|
||||
}
|
||||
} else {
|
||||
// Other modes - disabled placeholder
|
||||
$dotm_options[] = mk_option($parity['dotm'], "*", "--------");
|
||||
}
|
||||
|
||||
// Set the label for dotm field based on mode
|
||||
$dotm_label = ($parity['mode'] < 5) ? _('Day of the month') : _('Week of the month');
|
||||
|
||||
// Build month options array based on mode
|
||||
$month_options = [];
|
||||
$month_select_attrs = 'name="month"';
|
||||
|
||||
if ($parity['mode'] >= 4) {
|
||||
if ($parity['mode'] == 5) {
|
||||
// Custom mode - multiple select
|
||||
$month_select_attrs = 'id="s2" name="month" multiple="multiple" style="display:none"';
|
||||
for ($m = 0; $m < count($months); $m++) {
|
||||
$month_options[] = mk_option_check($parity['month'], strval($m+1), ucfirst(_($months[$m],0)));
|
||||
}
|
||||
} else {
|
||||
// Yearly mode - regular dropdown
|
||||
for ($m = 0; $m < count($months); $m++) {
|
||||
$month_options[] = mk_option($parity['month'], strval($m+1), ucfirst(_($months[$m],0)));
|
||||
}
|
||||
}
|
||||
} else {
|
||||
// Other modes - disabled placeholder
|
||||
$month_options[] = mk_option($parity['month'], "*", "--------");
|
||||
}
|
||||
|
||||
// Build hour options array based on mode
|
||||
$hour_options = [];
|
||||
|
||||
if ($parity['mode'] > 0) {
|
||||
// Active modes - generate 24-hour options with 30-minute intervals
|
||||
for ($h = 0; $h < 24; $h++) {
|
||||
$hour_options[] = mk_option($parity['hour'], sprintf("0 %d", $h), sprintf("%02d:00", $h));
|
||||
$hour_options[] = mk_option($parity['hour'], sprintf("30 %d", $h), sprintf("%02d:30", $h));
|
||||
}
|
||||
} else {
|
||||
// Disabled mode - placeholder
|
||||
$hour_options[] = mk_option($parity['hour'], "*", "--------");
|
||||
}
|
||||
?>
|
||||
<script>
|
||||
<?if ($parity['mode']==5):?>
|
||||
@@ -100,6 +184,7 @@ $(function(){
|
||||
<input type="hidden" name="#file" value="dynamix/dynamix.cfg"/>
|
||||
<input type="hidden" name="#section" value="parity"/>
|
||||
<input type="hidden" name="#include" value="/webGui/include/update.parity.php"/>
|
||||
|
||||
_(Scheduled parity check)_:
|
||||
: <select name="mode" onchange="submit()">
|
||||
<?for ($m=0; $m<count($mode); $m++):?>
|
||||
@@ -110,83 +195,37 @@ _(Scheduled parity check)_:
|
||||
:parity_check_scheduled_help:
|
||||
|
||||
_(Day of the week)_:
|
||||
<?if ($parity['mode']==2):?>
|
||||
: <select name="day">
|
||||
<?for ($d=0; $d<count($days); $d++):?>
|
||||
<?=mk_option($parity['day'], strval($d), ucfirst(_($days[$d],0)))?>
|
||||
<?endfor;?>
|
||||
<?elseif ($parity['mode']==5):?>
|
||||
: <select id="s1" name="day" multiple="multiple" style="display:none">
|
||||
<?for ($d=0; $d<count($days); $d++):?>
|
||||
<?=mk_option_check($parity['day'], strval($d), ucfirst(_($days[$d],0)))?>
|
||||
<?endfor;?>
|
||||
<?else:?>
|
||||
: <select name="day">
|
||||
<?=mk_option($parity['day'], "*", "--------")?>
|
||||
<?endif;?>
|
||||
: <select <?=$day_select_attrs?>>
|
||||
<?foreach ($day_options as $option):?>
|
||||
<?=$option?>
|
||||
<?endforeach;?>
|
||||
</select>
|
||||
|
||||
:parity_day_of_the_week_help:
|
||||
|
||||
<?if ($parity['mode']<5):?>
|
||||
_(Day of the month)_:
|
||||
<?else:?>
|
||||
_(Week of the month)_:
|
||||
<?endif;?>
|
||||
<?= $dotm_label ?>:
|
||||
: <select name="dotm">
|
||||
<?if ($parity['mode']>=3):?>
|
||||
<?if ($parity['mode']==5):?>
|
||||
<?=mk_option($parity['dotm'], "*", _("Every week"))?>
|
||||
<?=mk_option($parity['dotm'], "W1", _("First week"))?>
|
||||
<?=mk_option($parity['dotm'], "W2", _("Second week"))?>
|
||||
<?=mk_option($parity['dotm'], "W3", _("Third week"))?>
|
||||
<?=mk_option($parity['dotm'], "W4", _("Fourth week"))?>
|
||||
<?=mk_option($parity['dotm'], "WL", _("Last week"))?>
|
||||
<?else:?>
|
||||
<?=mk_option($parity['dotm'], "1", _("First day"))?>
|
||||
<?=mk_option($parity['dotm'], "28-31", _("Last day"))?>
|
||||
<?for ($d=2; $d<=31; $d++):?>
|
||||
<?=mk_option($parity['dotm'], strval($d), sprintf("%02d", $d))?>
|
||||
<?endfor;?>
|
||||
<?endif;?>
|
||||
<?else:?>
|
||||
<?=mk_option($parity['dotm'], "*", "--------")?>
|
||||
<?endif;?>
|
||||
<?foreach ($dotm_options as $option):?>
|
||||
<?=$option?>
|
||||
<?endforeach;?>
|
||||
</select>
|
||||
|
||||
:parity_week_of_the_month_help:
|
||||
|
||||
_(Time of the day)_:
|
||||
: <select name="hour">
|
||||
<?if ($parity['mode']>0):?>
|
||||
<?for ($h=0; $h<24; $h++):?>
|
||||
<?=mk_option($parity['hour'], sprintf("0 %d", $h), sprintf("%02d:00", $h))?>
|
||||
<?=mk_option($parity['hour'], sprintf("30 %d",$h), sprintf("%02d:30", $h))?>
|
||||
<?endfor;?>
|
||||
<?else:?>
|
||||
<?=mk_option($parity['hour'], "*", "--------")?>
|
||||
<?endif;?>
|
||||
<?foreach ($hour_options as $option):?>
|
||||
<?=$option?>
|
||||
<?endforeach;?>
|
||||
</select>
|
||||
|
||||
:parity_time_of_the_day_help:
|
||||
|
||||
_(Month of the year)_:
|
||||
<?if ($parity['mode']>=4):?>
|
||||
<?if ($parity['mode']==5):?>
|
||||
: <select id="s2" name="month" multiple="multiple" style="display:none">
|
||||
<?for ($m=0; $m<count($months); $m++):?>
|
||||
<?=mk_option_check($parity['month'], strval($m+1), ucfirst(_($months[$m],0)))?>
|
||||
<?endfor;?>
|
||||
<?else:?>
|
||||
: <select name="month">
|
||||
<?for ($m=0; $m<count($months); $m++):?>
|
||||
<?=mk_option($parity['month'], strval($m+1), ucfirst(_($months[$m],0)))?>
|
||||
<?endfor;?>
|
||||
<?endif;?>
|
||||
<?else:?>
|
||||
: <select name="month">
|
||||
<?=mk_option($parity['month'], "*", "--------")?>
|
||||
<?endif;?>
|
||||
: <select <?=$month_select_attrs?>>
|
||||
<?foreach ($month_options as $option):?>
|
||||
<?=$option?>
|
||||
<?endforeach;?>
|
||||
</select>
|
||||
|
||||
:parity_month_of_the_year_help:
|
||||
@@ -210,7 +249,7 @@ _(Cumulative parity check)_:
|
||||
<div markdown="1" id="cumulative" style="display:none">
|
||||
_(Accumulation frequency)_:
|
||||
: <select name="frequency">
|
||||
<?=mk_option(_var($parity,'frequency'), "1", _("Daily"))?>
|
||||
<?=mk_option(_var($parity,'frequency'), "1", _("Daily"),$parity['mode']==2 ? 'disabled' : '')?>
|
||||
<?=mk_option(_var($parity,'frequency'), "7", _("Weekly"),$parity['mode']==2 ? 'disabled' : '')?>
|
||||
</select>
|
||||
|
||||
@@ -226,6 +265,7 @@ _(Accumulation duration)_:
|
||||
:parity_accumulation_duration_help:
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
: <span class="inline-block">
|
||||
<input type="submit" name="#apply" value="_(Apply)_" disabled>
|
||||
|
||||
@@ -74,13 +74,20 @@ $(function(){
|
||||
<div class="shade" style="margin-top:12px;padding:12px 4px;">
|
||||
<form markdown="1" name="add_routes" method="POST" action="/webGui/include/RoutingTable.php" target="progressFrame" onsubmit="setTimeout(resetTable,500)">
|
||||
_(Enter route + gateway + metric)_:
|
||||
: <input type="text" name="route" maxlength="39" value="" class="fixed" placeholder="_(IPv4/nn or IPv6/nn route)_" required>
|
||||
<input type="text" name="gateway" class="fixed" value="" list="device" placeholder="_(gateway name or address)_" required>
|
||||
<datalist id="device"><?foreach ($list as $port):?><?echo "<option value='$port'>"?><?endforeach;?></datalist>
|
||||
<span class="inline-block">
|
||||
<input type="text" name="metric" min="1" max="9999" value="" class="trim" placeholder="1"><i class="fa fa-sort-numeric-asc"></i> *_(optional metric (lowest is preferred))_*
|
||||
: <span class="flex flex-row flex-wrap items-center gap-2">
|
||||
<input type="text" name="route" maxlength="39" value="" class="fixed" placeholder="_(IPv4/nn or IPv6/nn route)_" required>
|
||||
<input type="text" name="gateway" class="fixed" value="" list="device" placeholder="_(gateway name or address)_" required>
|
||||
<datalist id="device"><?foreach ($list as $port):?><?echo "<option value='$port'>"?><?endforeach;?></datalist>
|
||||
<span class="flex flex-row flex-wrap items-center gap-2">
|
||||
<input type="text" name="metric" min="1" max="9999" value="" class="trim" placeholder="1">
|
||||
<span class="flex flex-row flex-wrap items-center gap-1">
|
||||
<i class="fa fa-sort-numeric-asc"></i>
|
||||
<span>_(optional metric (lowest is preferred))_</span>
|
||||
</span>
|
||||
</span>
|
||||
<input type="hidden" name="task" value="Add Route">
|
||||
</span>
|
||||
<input type="hidden" name="task" value="Add Route">
|
||||
|
||||
:eth_routing_table_help:
|
||||
|
||||
|
||||
|
||||
@@ -48,8 +48,11 @@ function prepareMenu(form) {
|
||||
$('input[name="#arg[1]"]').val(form.boot.checked?1:0);
|
||||
if ($('div.basic').is(':visible')) {
|
||||
var label = [], area = [];
|
||||
$(form).find('span[id^=label]').each(function(){
|
||||
label.push($(this).text());
|
||||
$(form).find('label[id^=label]').each(function(){
|
||||
var $label = $(this).clone();
|
||||
$label.find('input').remove();
|
||||
var labelText = $label.text().replace(/\s+/g, ' ').trim();
|
||||
label.push(labelText);
|
||||
});
|
||||
$(form).find('textarea.menu').each(function(i){
|
||||
var start = $('#input-'+i).prop('checked') ? menu+'\n' : '';
|
||||
@@ -186,6 +189,7 @@ $(function(){
|
||||
<input type="hidden" name="#command" value="/webGui/scripts/bootmode">
|
||||
<input type="hidden" name="#arg[1]" value="">
|
||||
<input type="hidden" name="text" value="">
|
||||
|
||||
<div markdown="1" class="basic">
|
||||
_(Syslinux configuration)_:
|
||||
: <?$i=0;
|
||||
|
||||
@@ -147,7 +147,80 @@ $(function() {
|
||||
<?endif;?>
|
||||
showLog(logfile);
|
||||
});
|
||||
$('.tabs').append("<span class='status'><span class='lite label'>_(Log size)_: <input type='number' id='max' value='' placeholder='<?=$max?>'></span><?=$select?><span class='lite label'><label>_(Text)_<input type='checkbox' class='ctrl' onclick='highlight(!this.checked,\"N\")' checked></label></span><span class='error label'><label>_(Error)_<input type='checkbox' onclick='highlight(this.checked,\"E\")' checked></label></span><span class='warn label'><label>_(Warning)_<input type='checkbox' onclick='highlight(this.checked,\"W\")' checked></label></span><span class='system label'><label>_(System)_<input type='checkbox' onclick='highlight(this.checked,\"S\")' checked></label></span><span class='array label'><label>_(Array)_<input type='checkbox' onclick='highlight(this.checked,\"A\")' checked></label></span><span class='login label'><label>_(Login)_<input type='checkbox' onclick='highlight(this.checked,\"L\")' checked></label></span><span class='lite label'><input type='checkbox' class='ctrl' onclick='toggle(this.checked)' checked></span></span>");
|
||||
// $('.title .right').append("");
|
||||
</script>
|
||||
<pre class='up'></pre>
|
||||
<input type="button" id="download" value="_(Download)_" onclick="syslog(zipfile())"><input type="button" value="_(Refresh)_" onclick="showLog(logfile)"><input type="button" value="_(Done)_" onclick="done()">
|
||||
|
||||
<div class="syslog-controls">
|
||||
<div class="flex flex-row justify-between items-center gap-4 flex-wrap w-full">
|
||||
<div class="flex flex-row items-center gap-4">
|
||||
<div class="lite label">
|
||||
<label class="flex flex-row items-center gap-2">
|
||||
<span class="flex-shrink-0">_(Log size)_:</span>
|
||||
<input type="number" id="max" value="" placeholder="<?=$max?>" class="w-20">
|
||||
</label>
|
||||
</div>
|
||||
|
||||
<?if (!empty($select)):?>
|
||||
<div class="lite label">
|
||||
<label class="flex flex-row items-center gap-2">
|
||||
<span class="flex-shrink-0">_(Log file)_:</span>
|
||||
<?= $select ?>
|
||||
</label>
|
||||
</div>
|
||||
<?endif;?>
|
||||
</div>
|
||||
|
||||
<div class="flex flex-wrap flex-row items-center gap-3">
|
||||
<div class="lite label">
|
||||
<label class="flex flex-row items-center gap-2">
|
||||
<input type="checkbox" class="ctrl" onclick="highlight(!this.checked, 'N')" checked>
|
||||
_(Text)_
|
||||
</label>
|
||||
</div>
|
||||
<span class="error label">
|
||||
<label class="flex flex-row items-center gap-2">
|
||||
<input type="checkbox" onclick="highlight(this.checked, 'E')" checked>
|
||||
_(Error)_
|
||||
</label>
|
||||
</span>
|
||||
<span class="warn label">
|
||||
<label class="flex flex-row items-center gap-2">
|
||||
<input type="checkbox" onclick="highlight(this.checked, 'W')" checked>
|
||||
_(Warning)_
|
||||
</label>
|
||||
</span>
|
||||
<span class="system label">
|
||||
<label class="flex flex-row items-center gap-2">
|
||||
<input type="checkbox" onclick="highlight(this.checked, 'S')" checked>
|
||||
_(System)_
|
||||
</label>
|
||||
</span>
|
||||
<span class="array label">
|
||||
<label class="flex flex-row items-center gap-2">
|
||||
<input type="checkbox" onclick="highlight(this.checked, 'A')" checked>
|
||||
_(Array)_
|
||||
</label>
|
||||
</span>
|
||||
<span class="login label">
|
||||
<label class="flex flex-row items-center gap-2">
|
||||
<input type="checkbox" onclick="highlight(this.checked, 'L')" checked>
|
||||
_(Login)_
|
||||
</label>
|
||||
</span>
|
||||
<span class="lite label">
|
||||
<label class="flex items-center gap-2">
|
||||
<input type="checkbox" class="ctrl" onclick="toggle(this.checked)" checked>
|
||||
_(Toggle All)_
|
||||
</label>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<pre class="up"></pre>
|
||||
|
||||
<div class="flex flex-row items-center gap-2">
|
||||
<input type="button" id="download" value="_(Download)_" onclick="syslog(zipfile())">
|
||||
<input type="button" value="_(Refresh)_" onclick="showLog(logfile)">
|
||||
<input type="button" value="_(Done)_" onclick="done()">
|
||||
</div>
|
||||
@@ -165,9 +165,18 @@ _(Custom image)_:
|
||||
:user_add_custom_image_help:
|
||||
|
||||
_(Password)_:
|
||||
: <input type="hidden" name="userPassword" value="">
|
||||
<input type="password" name="userPasswordGUI" maxlength="129" autocomplete="new-password" onKeyUp="validatePassword(this.value);this.form.cmdUserEdit.disabled=(this.form.userName.value=='' || this.form.userPasswordGUI.value!=this.form.userPasswordConfGUI.value)">
|
||||
<i id="showPass" class="fa fa-eye" style="cursor:pointer" title="_(Show / Hide password)_" onclick="showPassword()"></i><span><span class="usage-disk sys none"><span id="strength-bar" style="width:0"></span><span></span></span><span id="strength-text"></span></span>
|
||||
: <span class="flex flex-row items-center gap-2">
|
||||
<input type="hidden" name="userPassword" value="">
|
||||
<input type="password" name="userPasswordGUI" maxlength="129" autocomplete="new-password" onKeyUp="validatePassword(this.value);this.form.cmdUserEdit.disabled=(this.form.userName.value=='' || this.form.userPasswordGUI.value!=this.form.userPasswordConfGUI.value)">
|
||||
<i id="showPass" class="fa fa-eye" style="cursor:pointer" title="_(Show / Hide password)_" onclick="showPassword()"></i>
|
||||
<span>
|
||||
<span class="usage-disk sys none">
|
||||
<span id="strength-bar" style="width:0"></span>
|
||||
<span></span>
|
||||
</span>
|
||||
<span id="strength-text"></span>
|
||||
</span>
|
||||
</span>
|
||||
|
||||
:user_password_help:
|
||||
|
||||
|
||||
@@ -202,14 +202,23 @@ _(Delete)_<input type="checkbox" name="confirmDelete" onChange="chkDelete(this.f
|
||||
<input type="button" value="_(Done)_" onclick="done('UserEdit')">
|
||||
</span>
|
||||
</form>
|
||||
<br><br>
|
||||
|
||||
<form markdown="1" method="POST" action="/update.htm" onsubmit="return checkPassword(this)" target="progressFrame">
|
||||
<input type="hidden" name="userName" value="<?=htmlspecialchars($name)?>">
|
||||
|
||||
_(Password)_:
|
||||
: <input type="hidden" name="userPassword" value="">
|
||||
<input type="password" name="userPasswordGUI" maxlength="129" autocomplete="new-password" onKeyUp="validatePassword(this.value);this.form.cmdUserEdit.disabled=(this.form.userPasswordGUI.value != this.form.userPasswordConfGUI.value);">
|
||||
<i id="showPass" class="fa fa-eye" style="cursor:pointer" title="_(Show / Hide password)_" onclick="showPassword()"></i><span><span class="usage-disk sys none"><span id="strength-bar" style="width:0"></span><span></span></span><span id="strength-text"></span></span>
|
||||
: <span class="flex flex-row items-center gap-2">
|
||||
<input type="hidden" name="userPassword" value="">
|
||||
<input type="password" name="userPasswordGUI" maxlength="129" autocomplete="new-password" onKeyUp="validatePassword(this.value);this.form.cmdUserEdit.disabled=(this.form.userPasswordGUI.value != this.form.userPasswordConfGUI.value);">
|
||||
<i id="showPass" class="fa fa-eye" style="cursor:pointer" title="_(Show / Hide password)_" onclick="showPassword()"></i>
|
||||
<span>
|
||||
<span class="usage-disk sys none">
|
||||
<span id="strength-bar" style="width:0"></span>
|
||||
<span></span>
|
||||
</span>
|
||||
<span id="strength-text"></span>
|
||||
</span>
|
||||
</span>
|
||||
|
||||
:user_password_help:
|
||||
|
||||
@@ -230,7 +239,7 @@ _(Retype password)_:
|
||||
<input type="hidden" name="#file" value="<?=$file;?>">
|
||||
|
||||
_(SSH authorized keys)_:
|
||||
: <textarea spellcheck="false" cols="80" rows="<?=max(substr_count($text,"\n")+1,10)?>" maxlength="16384" name="text" style="resize:none;white-space:normal;font-family:bitstream;width:65.5%"><?=htmlspecialchars($text)?></textarea>
|
||||
: <textarea class="font-mono" spellcheck="false" cols="80" rows="<?=max(substr_count($text,"\n")+1,10)?>" maxlength="16384" name="text"><?=htmlspecialchars($text)?></textarea>
|
||||
|
||||
|
||||
: <span class="inline-block">
|
||||
|
||||
@@ -21,31 +21,40 @@ $cfg = '/boot/config/wireless.cfg';
|
||||
$regions = file("$docroot/webGui/include/regions.key", FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
|
||||
if (file_exists($cfg)) $wlan0 = parse_ini_file($cfg,true)['wlan0'];
|
||||
?>
|
||||
<div class="title nocontrol shift"> </div>
|
||||
<form markdown="1" name="wifi_settings" method="POST" action="/update.php" target="progressFrame" onsubmit="enable_wifi(this.WIFI.value)">
|
||||
<input type="hidden" name="#file" value="<?=$cfg?>"/>
|
||||
<input type="hidden" name="#section" value="wlan0"/>
|
||||
<input type="hidden" name="#command" value="/webGui/scripts/wireless">
|
||||
<input type="hidden" name="#arg[1]" value=""/>
|
||||
|
||||
<div markdown="1">
|
||||
_(Wi-Fi)_:
|
||||
: <select name="WIFI" class="wifi">
|
||||
: <select name="WIFI">
|
||||
<?=mk_option(_var($wlan0,'WIFI'), "no", _("Disabled"))?>
|
||||
<?=mk_option(_var($wlan0,'WIFI'), "yes", _("Enabled"))?>
|
||||
</select>
|
||||
</div>
|
||||
|
||||
<div markdown="1">
|
||||
_(Regulatory region)_:
|
||||
: <select name="REGION" class="wifi" onchange="showManual(this.value)"><?
|
||||
echo mk_option(_var($wlan0,'REGION'), "", _("Automatic"));
|
||||
echo mk_option(_var($wlan0,'REGION'), "00", _("Manual"));
|
||||
echo mk_option(_var($wlan0,'REGION'), "--", "--------", 'disabled');
|
||||
foreach ($regions as $region) {
|
||||
[$code, $country] = my_explode('|', $region);
|
||||
echo mk_option(_var($wlan0,'REGION'), $code, _($country));
|
||||
}
|
||||
?></select><span id="manual" class="hide">_(Manual input)_ [XX]: <input type="text" name="REGION_XX" class="wifi" value="<?=_var($wlan0,'REGION_XX')?>" minlength="2" maxlength="2" title="_(Two letter country code)_ (ISO 3166)"></span>
|
||||
: <select name="REGION" onchange="showManual(this.value)">
|
||||
<?=mk_option(_var($wlan0,'REGION'), "", _("Automatic"))?>
|
||||
<?=mk_option(_var($wlan0,'REGION'), "00", _("Manual"))?>
|
||||
<?=mk_option(_var($wlan0,'REGION'), "--", "--------", 'disabled')?>
|
||||
<?foreach ($regions as $region):?>
|
||||
<?[$code, $country] = my_explode('|', $region);?>
|
||||
<?=mk_option(_var($wlan0,'REGION'), $code, _($country))?>
|
||||
<?endforeach;?>
|
||||
</select>
|
||||
</div>
|
||||
|
||||
<div markdown="1" id="manual" class="hide">
|
||||
_(Manual input)_ [XX]:
|
||||
: <input type="text" name="REGION_XX" value="<?=_var($wlan0,'REGION_XX')?>" minlength="2" maxlength="2" title="_(Two letter country code)_ (ISO 3166)">
|
||||
</div>
|
||||
|
||||
|
||||
: <span class="inline-block">
|
||||
: <span class="flex flex-row flex-wrap items-center gap-2">
|
||||
<input type="submit" value="_(Apply)_" disabled>
|
||||
<input type="button" value="_(Done)_" onclick="done()">
|
||||
</span>
|
||||
@@ -54,23 +63,32 @@ _(Regulatory region)_:
|
||||
<div id="wifi" class="hide">
|
||||
<div markdown="1" id="connected" class="shade">
|
||||
_(Connected)_:
|
||||
: <i class="fa fa-spin fa-circle-o-notch"></i>
|
||||
: <span class="inline-block">
|
||||
<i class="fa fa-spin fa-circle-o-notch"></i>
|
||||
</span>
|
||||
|
||||
</div>
|
||||
<div markdown="1" id="my_networks" class="shade">
|
||||
_(My networks)_:
|
||||
: <i class="fa fa-spin fa-circle-o-notch"></i>
|
||||
: <span class="inline-block">
|
||||
<i class="fa fa-spin fa-circle-o-notch"></i>
|
||||
</span>
|
||||
|
||||
</div>
|
||||
<div markdown="1" id="other_networks" class="shade">
|
||||
_(Other networks)_:
|
||||
: <i class="fa fa-spin fa-circle-o-notch"></i>
|
||||
: <span class="inline-block">
|
||||
<i class="fa fa-spin fa-circle-o-notch"></i>
|
||||
</span>
|
||||
|
||||
</div>
|
||||
|
||||
<div markdown="1" class="shade">
|
||||
_(Add network)_:
|
||||
: <span class="wifi"><input name="CUSTOM" type="text" class="narrow" maxlength="32" autocomplete="off" spellcheck="false" value=""></span><i class="fa fa-wifi hand grey-text" onclick="manage_wifi(encodeURIComponent($('input[name=CUSTOM]').val()),3)" title="<?=$title?>"></i>
|
||||
: <span>
|
||||
<input name="CUSTOM" type="text" class="narrow" maxlength="32" autocomplete="off" spellcheck="false" value="">
|
||||
<i class="fa fa-wifi hand grey-text" onclick="manage_wifi(encodeURIComponent($('input[name=CUSTOM]').val()),3)" title="<?=$title?>"></i>
|
||||
</span>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -342,8 +342,17 @@ function openError(data) {
|
||||
return false;
|
||||
}
|
||||
|
||||
function showStatus(name,plugin,job) {
|
||||
$.post('/webGui/include/ProcessStatus.php',{name:name,plugin:plugin,job:job},function(status){$(".tabs").append(status);});
|
||||
function showStatus(name, plugin, job) {
|
||||
$.post('/webGui/include/ProcessStatus.php',
|
||||
{
|
||||
name,
|
||||
plugin,
|
||||
job,
|
||||
},
|
||||
function(status) {
|
||||
$('.title .right').eq(0).append(status);
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
function showFooter(data, id) {
|
||||
|
||||
@@ -116,14 +116,14 @@ case 'list':
|
||||
if (isset($wifi[$network]['GROUP'])) {
|
||||
if ($network == $alive || $wifi[$network]['GROUP'] == 'active') {
|
||||
$echo['active'][] = "<dl><dt>$state:</dt>";
|
||||
$echo['active'][] = "<dd><span class=\"wifi\">$network</span><i class=\"fa fa-fw fa-wifi hand $color-text\" onclick=\"manage_wifi(encodeURIComponent('$network'),1)\" title=\"$title\"></i><input type=\"button\" class=\"form\" value=\""._('Info')."\" onclick=\"networkInfo('$port')\"></dd>";
|
||||
$echo['active'][] = "<dd><span class=\"inline-flex flex-row items-center gap-2\"><span>$network</span><i class=\"fa fa-fw fa-wifi hand $color-text\" onclick=\"manage_wifi(encodeURIComponent('$network'),1)\" title=\"$title\"></i><input type=\"button\" class=\"form\" value=\""._('Info')."\" onclick=\"networkInfo('$port')\"></span></dd>";
|
||||
} else {
|
||||
$echo['saved'][] = empty($echo['saved']) ? "<dl><dt>"._('My networks').":</dt>" : "<dt> </dt>";
|
||||
$echo['saved'][] = "<dd><span class=\"wifi\">$network</span><i class=\"fa fa-wifi hand blue-text\" onclick=\"manage_wifi(encodeURIComponent('$network'),1)\" title=\"$title\"></i></dd>";
|
||||
$echo['saved'][] = "<dd><span class=\"inline-flex flex-row items-center gap-2\"><span>$network</span><i class=\"fa fa-wifi hand blue-text\" onclick=\"manage_wifi(encodeURIComponent('$network'),1)\" title=\"$title\"></i></span></dd>";
|
||||
}
|
||||
} else {
|
||||
$echo['other'][] = empty($echo['other']) ? "<dl><dt>"._('Other networks').":</dt>" : "<dt> </dt>";
|
||||
$echo['other'][] = "<dd><span class=\"wifi\">$network</span><i class=\"fa fa-wifi hand grey-text\" onclick=\"manage_wifi(encodeURIComponent('$network'),0)\" title=\"$title\"></i></dd>";
|
||||
$echo['other'][] = "<dd><span class=\"inline-flex flex-row items-center gap-2\"><span>$network</span><i class=\"fa fa-wifi hand grey-text\" onclick=\"manage_wifi(encodeURIComponent('$network'),0)\" title=\"$title\"></i></span></dd>";
|
||||
}
|
||||
}
|
||||
if (empty($echo['active'])) $echo['active'][] = "<dl><dt>"._('Connected').":</dt><dd>"._('None')."</dd>";
|
||||
|
||||
@@ -1,22 +1,3 @@
|
||||
:root {
|
||||
/* Input styles - default values (for azure/gray themes) */
|
||||
--eth0-narrow-input-width: 188px;
|
||||
--eth0-narrow-input-padding: 5px 6px;
|
||||
--eth0-narrow-input-border-color: var(--border-color);
|
||||
--eth0-narrow-input-text-color: var(--text-color);
|
||||
--eth0-narrow-input-border-style: 1px solid;
|
||||
}
|
||||
|
||||
.Theme--black {
|
||||
--eth0-narrow-input-border-color: var(--gray-100);
|
||||
--eth0-narrow-input-text-color: var(--gray-100);
|
||||
}
|
||||
|
||||
.Theme--white {
|
||||
--eth0-narrow-input-border-color: var(--gray-800);
|
||||
--eth0-narrow-input-text-color: var(--gray-800);
|
||||
}
|
||||
|
||||
/* Status colors */
|
||||
span.red {
|
||||
color: var(--orange-300);
|
||||
@@ -56,35 +37,3 @@ input.slim {
|
||||
select.ctrl {
|
||||
margin-right: 20px;
|
||||
}
|
||||
|
||||
/* Base narrow input styles */
|
||||
input[type="text"].narrow {
|
||||
display: inline;
|
||||
width: var(--eth0-narrow-input-width);
|
||||
padding: var(--eth0-narrow-input-padding);
|
||||
border: var(--eth0-narrow-input-border-style) var(--eth0-narrow-input-border-color);
|
||||
color: var(--eth0-narrow-input-text-color);
|
||||
font-size: 1.3rem;
|
||||
background-color: transparent;
|
||||
text-indent: 0;
|
||||
height: auto;
|
||||
min-height: 2rem;
|
||||
line-height: 2rem;
|
||||
outline: none;
|
||||
margin: 0 20px 0 0;
|
||||
box-shadow: none;
|
||||
border-radius: 0;
|
||||
transition: none;
|
||||
}
|
||||
|
||||
/* Theme-specific styles - consolidated black/white theme styles */
|
||||
.Theme--black,
|
||||
.Theme--white {
|
||||
--eth0-narrow-input-width: 166px;
|
||||
--eth0-narrow-input-padding: 4px 0;
|
||||
--eth0-narrow-input-border-style: none;
|
||||
|
||||
input[type="text"].narrow {
|
||||
border-bottom: 1px solid var(--eth0-narrow-input-border-color);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,3 +0,0 @@
|
||||
span[id^="info-"] {
|
||||
margin-left: 20px;
|
||||
}
|
||||
@@ -1,10 +0,0 @@
|
||||
span[id^="info-"] {
|
||||
margin-left: 20px;
|
||||
}
|
||||
|
||||
.Theme--black,
|
||||
.Theme--white {
|
||||
span.status.vhshift {
|
||||
margin-right: -10px !important;
|
||||
}
|
||||
}
|
||||
@@ -1,6 +1,29 @@
|
||||
input#max {
|
||||
border: none;
|
||||
width: 60px;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.syslog-controls {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
gap: 10px;
|
||||
margin-bottom: 10px;
|
||||
box-sizing: border-box;
|
||||
|
||||
* {
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
.label {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
align-items: center;
|
||||
gap: 10px;
|
||||
margin: 0;
|
||||
padding: .2rem .6rem;
|
||||
}
|
||||
|
||||
input[type="checkbox"] {
|
||||
margin: 0;
|
||||
}
|
||||
}
|
||||
@@ -17,11 +17,6 @@
|
||||
}
|
||||
|
||||
/* Base styles */
|
||||
.wifi {
|
||||
display: inline-block;
|
||||
width: 300px;
|
||||
}
|
||||
|
||||
.hide {
|
||||
display: none;
|
||||
}
|
||||
@@ -31,16 +26,6 @@ i.hand {
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
input.form {
|
||||
font-size: 1rem;
|
||||
padding: 5px 10px;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
input[type=button].form {
|
||||
margin-left: 20px;
|
||||
}
|
||||
|
||||
table.swal {
|
||||
text-align: left;
|
||||
font-size: 1.2rem;
|
||||
@@ -57,16 +42,6 @@ table.swal td:nth-child(1) {
|
||||
margin-left: 10px;
|
||||
}
|
||||
|
||||
select.wifi {
|
||||
max-width: 100px;
|
||||
}
|
||||
|
||||
input.wifi {
|
||||
margin-left: 10px;
|
||||
width: 2.4rem;
|
||||
text-transform: uppercase;
|
||||
}
|
||||
|
||||
/* Theme-specific input focus styles */
|
||||
input.narrow:focus,
|
||||
input.slim:focus {
|
||||
|
||||
@@ -149,7 +149,6 @@ textarea,
|
||||
min-height: 2rem;
|
||||
line-height: 2rem;
|
||||
outline: none;
|
||||
/* width: 300px; */
|
||||
width: 100%;
|
||||
margin: 0;
|
||||
box-shadow: none;
|
||||
@@ -196,6 +195,24 @@ a.button,
|
||||
background: var(--button-background);
|
||||
background-size: var(--button-background-size);
|
||||
}
|
||||
|
||||
/* necessary evil until we re-write button styles */
|
||||
.buttons-no-margin {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
gap: 1rem;
|
||||
|
||||
input[type="button"],
|
||||
input[type="reset"],
|
||||
input[type="submit"],
|
||||
button,
|
||||
button[type="button"],
|
||||
a.button,
|
||||
.sweet-alert button {
|
||||
margin: 0;
|
||||
}
|
||||
}
|
||||
|
||||
input[type="checkbox"] {
|
||||
vertical-align: middle;
|
||||
margin-right: 6px;
|
||||
@@ -474,8 +491,7 @@ div.title {
|
||||
letter-spacing: 1.8px;
|
||||
font-size: 1.4rem;
|
||||
|
||||
/* target first title */
|
||||
&:first-child {
|
||||
&:first-of-type {
|
||||
margin-top: 0;
|
||||
}
|
||||
}
|
||||
@@ -866,6 +882,11 @@ div.title.shift {
|
||||
}
|
||||
}
|
||||
|
||||
.TableContainer--no-min-width {
|
||||
overflow-x: auto;
|
||||
-webkit-overflow-scrolling: touch;
|
||||
}
|
||||
|
||||
table {
|
||||
border-collapse: collapse;
|
||||
border-spacing: 0;
|
||||
@@ -1269,7 +1290,7 @@ a.list {
|
||||
* Force remove any small empty space elements.
|
||||
* Necessary evil to prevent needing to rewrite .page file parsing and allow for a more responsive page.
|
||||
*/
|
||||
dt, dd, p, div, span {
|
||||
dt, dd, p {
|
||||
&:empty {
|
||||
display: none !important;
|
||||
margin: 0 !important;
|
||||
@@ -1342,31 +1363,29 @@ a.list {
|
||||
.tab-content {
|
||||
display: none;
|
||||
|
||||
form {
|
||||
display: grid;
|
||||
grid-template-columns: 1fr;
|
||||
gap: 1rem;
|
||||
width: 100%;
|
||||
max-width: 80rem;
|
||||
margin: 0 auto;
|
||||
form:first-of-type {
|
||||
padding-top: 1rem;
|
||||
}
|
||||
|
||||
.shade form {
|
||||
padding-top: 0;
|
||||
}
|
||||
}
|
||||
|
||||
.Panels {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
flex-wrap: wrap;
|
||||
column-gap: 3rem;
|
||||
row-gap: 2rem;
|
||||
display: grid;
|
||||
grid-template-columns: repeat(auto-fill, minmax(120px, 120px));
|
||||
gap: 1rem;
|
||||
margin-top: 2rem;
|
||||
box-sizing: border-box;
|
||||
justify-content: start;
|
||||
}
|
||||
.Panel {
|
||||
position: relative;
|
||||
text-align: center;
|
||||
box-sizing: border-box;
|
||||
background-color: transparent;
|
||||
max-width: 120px;
|
||||
|
||||
a {
|
||||
position: relative;
|
||||
@@ -1477,6 +1496,8 @@ pre {
|
||||
line-height: 1.8rem;
|
||||
padding: 4px 6px;
|
||||
overflow: auto;
|
||||
width: 100%;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
iframe#progressFrame {
|
||||
position: fixed;
|
||||
@@ -1514,6 +1535,7 @@ dt {
|
||||
dd {
|
||||
margin: 0;
|
||||
white-space: normal;
|
||||
box-sizing: border-box;
|
||||
|
||||
p {
|
||||
margin: 0 0 4px 0;
|
||||
@@ -1730,6 +1752,12 @@ span#wlan0 {
|
||||
background-color: var(--shade-bg-color);
|
||||
}
|
||||
|
||||
/* TailwindCSS inspired utility classes */
|
||||
|
||||
.font-mono {
|
||||
font-family: bitstream, monospace;
|
||||
}
|
||||
|
||||
.hidden {
|
||||
display: none;
|
||||
}
|
||||
@@ -1746,6 +1774,18 @@ span#wlan0 {
|
||||
display: inline-flex;
|
||||
}
|
||||
|
||||
.flex-wrap {
|
||||
flex-wrap: wrap;
|
||||
}
|
||||
|
||||
.flex-wrap-reverse {
|
||||
flex-wrap: wrap-reverse;
|
||||
}
|
||||
|
||||
.flex-nowrap {
|
||||
flex-wrap: nowrap;
|
||||
}
|
||||
|
||||
.flex-col {
|
||||
flex-direction: column;
|
||||
}
|
||||
@@ -1762,6 +1802,10 @@ span#wlan0 {
|
||||
flex-direction: row-reverse;
|
||||
}
|
||||
|
||||
.flex-shrink-0 {
|
||||
flex-shrink: 0;
|
||||
}
|
||||
|
||||
.justify-start {
|
||||
justify-content: flex-start;
|
||||
}
|
||||
@@ -2304,7 +2348,7 @@ span#wlan0 {
|
||||
.title p {
|
||||
display: none;
|
||||
}
|
||||
div.title:first-child {
|
||||
div.title:first-of-type {
|
||||
margin-top: 0;
|
||||
}
|
||||
div.title.shift {
|
||||
@@ -2469,10 +2513,6 @@ span#wlan0 {
|
||||
border: 1px solid var(--table-alt-border-color);
|
||||
}
|
||||
|
||||
pre.up {
|
||||
margin-top: 0;
|
||||
}
|
||||
|
||||
pre {
|
||||
border: 1px solid var(--table-alt-border-color);
|
||||
margin-bottom: 10px;
|
||||
|
||||
@@ -358,7 +358,7 @@ table.t1.tablesorter tbody tr.normal-row {
|
||||
background-color: var(--dynamix-tablesorter-tbody-row-bg-color);
|
||||
}
|
||||
input.t1.search {
|
||||
color: var(--gray-100);
|
||||
color: var(--text-color);
|
||||
background-color: var(--dynamix-tablesorter-tbody-row-bg-color);
|
||||
}
|
||||
span.select ul {
|
||||
|
||||
Reference in New Issue
Block a user