mirror of
https://github.com/unraid/webgui.git
synced 2026-01-19 16:10:17 -06:00
@@ -1,6 +1,7 @@
|
||||
Menu="Tasks:60"
|
||||
Type="xmenu"
|
||||
Code="e90b"
|
||||
Lock="true"
|
||||
Cond="exec(\"grep -o '^DOCKER_ENABLED=.yes' /boot/config/docker.cfg 2>/dev/null\")"
|
||||
---
|
||||
<?PHP
|
||||
|
||||
@@ -40,6 +40,7 @@ th.nine{width:9%}
|
||||
th.load{width:140px}
|
||||
input.wait{width:24px;margin:0 4px;padding:0 5px;border:none;box-shadow:none;background-color:transparent}
|
||||
table tbody td{line-height:normal}
|
||||
i.mover{margin-right:8px;display:none}
|
||||
</style>
|
||||
<table id="docker_containers" class="tablesorter shift">
|
||||
<thead><tr><th><a href="#" style="cursor:hand;margin-left:12px;display:inline-block;width:32px" onclick="resetSorting()" title="_(Reset sorting)_"><i class="fa fa-th-list"></i></a>_(Application)_</th><th>_(Version)_</th><th>_(Network)_</th><th>_(Port Mappings)_ <small>(_(App to Host)_)</small></th><th>_(Volume Mappings)_ <small>(_(App to Host)_)</small></th><th class="load advanced">_(CPU & Memory load)_</th><th class="nine">_(Autostart)_</th><th class="five">_(Uptime)_</th></tr></thead>
|
||||
@@ -66,13 +67,10 @@ $('.tabs').append("<span id='busy' class='red-text strong' style='display:none;p
|
||||
<?endif;?>
|
||||
<?if ($display['resize']):?>
|
||||
function resize() {
|
||||
var width = [];
|
||||
$('#docker_list').height(Math.max(window.innerHeight-340,330));
|
||||
$('#docker_containers thead,#docker_containers tbody').removeClass('fixed');
|
||||
$('#docker_containers tbody tr:first-child td').each(function(){width.push($(this).width());});
|
||||
$('#docker_containers thead tr th').each(function(i){$(this).width(width[i]);});
|
||||
$('#docker_containers tbody tr td').each(function(i){$(this).width(width[i]);});
|
||||
$('#docker_containers thead,#docker_containers tbody').addClass('fixed');
|
||||
$('#docker_containers thead tr th').each(function(){$(this).width($(this).width());});
|
||||
$('#docker_containers tbody tr td').each(function(){$(this).width($(this).width());});
|
||||
$('#docker_containers thead,#docker_containers tbody').removeClass('fixed').addClass('fixed');
|
||||
}
|
||||
<?endif;?>
|
||||
function resetSorting() {
|
||||
@@ -90,19 +88,17 @@ function listview() {
|
||||
if (auto && more) wait.show(); else wait.hide();
|
||||
});
|
||||
}
|
||||
var sortableHelper = function(e,ui){
|
||||
ui.children().each(function(){$(this).width($(this).width());});
|
||||
return ui;
|
||||
};
|
||||
function LockButton() {
|
||||
if ($.cookie('lockbutton') == null) {
|
||||
$.cookie('lockbutton','lockbutton');
|
||||
$('i.mover').show();
|
||||
$('#docker_list .sortable').css({'cursor':'move'});
|
||||
<?if ($themes1):?>
|
||||
$('div.nav-item.LockButton').find('a').prop('title',"_(Lock sortable items)_");
|
||||
$('div.nav-item.LockButton').find('b').removeClass('icon-u-lock red-text').addClass('icon-u-lock-open green-text');
|
||||
<?endif;?>
|
||||
$('div.nav-item.LockButton').find('span').text("_(Lock sortable items)_");
|
||||
$('#docker_list').sortable({helper:sortableHelper,items:'.sortable',cursor:'grab',axis:'y',containment:'parent',cancel:'span.docker_readmore,input',delay:100,opacity:0.5,zIndex:9999,forcePlaceholderSize:true,
|
||||
$('#docker_list').sortable({helper:'clone',items:'.sortable',cursor:'grab',axis:'y',containment:'parent',cancel:'span.docker_readmore,input',delay:100,opacity:0.5,zIndex:9999,forcePlaceholderSize:true,
|
||||
update:function(e,ui){
|
||||
var row = $('#docker_list').find('tr:first');
|
||||
var names = ''; var index = '';
|
||||
@@ -111,6 +107,8 @@ function LockButton() {
|
||||
}});
|
||||
} else {
|
||||
$.removeCookie('lockbutton');
|
||||
$('i.mover').hide();
|
||||
$('#docker_list .sortable').css({'cursor':'default'});
|
||||
<?if ($themes1):?>
|
||||
$('div.nav-item.LockButton').find('a').prop('title',"_(Unlock sortable items)_");
|
||||
$('div.nav-item.LockButton').find('b').removeClass('icon-u-lock-open green-text').addClass('icon-u-lock red-text');
|
||||
|
||||
@@ -39,7 +39,7 @@ $cpus = DockerUtil::cpus();
|
||||
|
||||
function cpu_pinning() {
|
||||
global $xml,$cpus;
|
||||
$vcpu = explode(',',$xml['CPUset'] ?? '');
|
||||
$vcpu = explode(',',_var($xml,'CPUset'));
|
||||
$total = count($cpus);
|
||||
$loop = floor(($total-1)/16)+1;
|
||||
for ($c = 0; $c < $loop; $c++) {
|
||||
@@ -73,7 +73,7 @@ function cpu_pinning() {
|
||||
if (isset($_POST['contName'])) {
|
||||
$postXML = postToXML($_POST, true);
|
||||
$dry_run = isset($_POST['dryRun']) && $_POST['dryRun']=='true';
|
||||
$existing = $_POST['existingContainer'] ?? false;
|
||||
$existing = _var($_POST,'existingContainer',false);
|
||||
$create_paths = $dry_run ? false : true;
|
||||
// Get the command line
|
||||
[$cmd, $Name, $Repository] = xmlToCommand($postXML, $create_paths);
|
||||
@@ -228,9 +228,9 @@ if (isset($_GET['xmlTemplate'])) {
|
||||
$arrConfig['Name'] = 'AppData Config Path';
|
||||
}
|
||||
}
|
||||
$arrConfig['Name'] = strip_tags($arrConfig['Name']??"");
|
||||
$arrConfig['Description'] = strip_tags($arrConfig['Description']??"");
|
||||
$arrConfig['Requires'] = strip_tags($arrConfig['Requires']??"");
|
||||
$arrConfig['Name'] = strip_tags(_var($arrConfig,'Name'));
|
||||
$arrConfig['Description'] = strip_tags(_var($arrConfig,'Description'));
|
||||
$arrConfig['Requires'] = strip_tags(_var($arrConfig,'Requires'));
|
||||
}
|
||||
}
|
||||
if (!empty($dockercfg['DOCKER_APP_UNRAID_PATH']) && file_exists($dockercfg['DOCKER_APP_UNRAID_PATH'])) {
|
||||
@@ -943,16 +943,6 @@ _(Privileged)_:
|
||||
# ╚════╝ ╚══════╝ ╚═╝ ╚══════╝╚═╝ ╚═╝╚═╝ ╚══════╝╚═╝ ╚═╝ ╚═╝ ╚══════╝╚══════╝
|
||||
?>
|
||||
<div markdown="1" id="templatePopupConfig" style="display:none">
|
||||
<html <?=$display['rtl']?>lang="<?=strtok($locale,'_')?:'en'?>">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="format-detection" content="telephone=no">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<meta name="robots" content="noindex, nofollow">
|
||||
<meta name="referrer" content="same-origin">
|
||||
</head>
|
||||
<body>
|
||||
_(Config Type)_:
|
||||
: <select name="Type" onchange="toggleMode(this,false)">
|
||||
<option value="Path">_(Path)_</option>
|
||||
@@ -1006,8 +996,6 @@ _(Password Mask)_:
|
||||
<option value="true">_(Yes)_</option>
|
||||
</select>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
</div>
|
||||
|
||||
<div markdown="1" id="templateDisplayConfig" style="display:none">
|
||||
|
||||
@@ -34,8 +34,9 @@ if (!$containers && !$images) {
|
||||
}
|
||||
|
||||
if (file_exists($user_prefs)) {
|
||||
$prefs = parse_ini_file($user_prefs); $sort = [];
|
||||
foreach ($containers as $ct) $sort[] = array_search($ct['Name'],$prefs) ?? 999;
|
||||
$prefs = @parse_ini_file($user_prefs) ?: [];
|
||||
$sort = [];
|
||||
foreach ($containers as $ct) $sort[] = array_search($ct['Name'],$prefs);
|
||||
array_multisort($sort,SORT_NUMERIC,$containers);
|
||||
unset($sort);
|
||||
}
|
||||
@@ -99,7 +100,7 @@ foreach ($containers as $ct) {
|
||||
[$host_path,$container_path,$access_mode] = my_explode(':',$mount,3);
|
||||
$paths[] = sprintf('%s<i class="fa fa-%s" style="margin:0 6px"></i>%s', htmlspecialchars($container_path), $access_mode=='ro'?'long-arrow-left':'arrows-h', htmlspecialchars($host_path));
|
||||
}
|
||||
echo "<tr class='sortable'><td class='ct-name' style='width:220px;padding:8px'>";
|
||||
echo "<tr class='sortable'><td class='ct-name' style='width:220px;padding:8px'><i class='fa fa-arrows-v mover orange-text'></i>";
|
||||
if ($template) {
|
||||
$appname = "<a class='exec' onclick=\"editContainer('".addslashes(htmlspecialchars($name))."','".addslashes(htmlspecialchars($template))."')\">".htmlspecialchars($name)."</a>";
|
||||
} else {
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta http-equiv="Content-Security-Policy" content="block-all-mixed-content">
|
||||
<meta name="format-detection" content="telephone=no">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<meta name="viewport" content="width=1300">
|
||||
<meta name="robots" content="noindex, nofollow">
|
||||
<meta name="referrer" content="same-origin">
|
||||
<style>
|
||||
|
||||
@@ -23,19 +23,6 @@ require_once "$docroot/webGui/include/Translations.php";
|
||||
$valid = ['/var/tmp/','/tmp/plugins/'];
|
||||
$good = false;
|
||||
?>
|
||||
<!DOCTYPE HTML>
|
||||
<html <?=_var($display,'rtl')?>lang="<?=strtok($locale,'_')?:'en'?>">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta http-equiv="Content-Security-Policy" content="block-all-mixed-content">
|
||||
<meta name="format-detection" content="telephone=no">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<meta name="robots" content="noindex, nofollow">
|
||||
<meta name="referrer" content="same-origin">
|
||||
<link type="text/css" rel="stylesheet" href="<?autov("/webGui/styles/default-fonts.css")?>">
|
||||
<link type="text/css" rel="stylesheet" href="<?autov("/webGui/styles/default-popup.css")?>">
|
||||
</head>
|
||||
<body style="margin:14px 10px">
|
||||
<?
|
||||
if ($file = realpath(unscript(_var($_GET,'file')))) {
|
||||
@@ -47,4 +34,3 @@ if ($file = realpath(unscript(_var($_GET,'file')))) {
|
||||
?>
|
||||
<br><div style="text-align:center"><input type="button" value="<?=_('Done')?>" onclick="top.Shadowbox.close()"></div>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -120,19 +120,17 @@ div.four label{float:left;display:table-cell;width:25%}
|
||||
div.four label:nth-child(4n+4){float:none;clear:both}
|
||||
div.four label.cpu1{width:32%}
|
||||
div.four label.cpu2{width:26%}
|
||||
table.domdisk thead th:nth-child(1){width:76%;}
|
||||
table.domdisk thead th:nth-child(2){width:8%;}
|
||||
table.domdisk thead th:nth-child(3){width:8%;}
|
||||
table.domdisk thead th:nth-child(3){width:8%;}
|
||||
div.template,div#dialogWindow,input#upload{display:none}
|
||||
table.domdisk thead tr th:nth-child(1){width:56%!important}
|
||||
table.domdisk thead tr th:nth-child(n+2){width:8%!important}
|
||||
table.domdisk thead tr th:nth-child(1){padding-left:72px}
|
||||
table.domdisk tbody tr td:nth-child(1){padding-left:72px}
|
||||
table.domdisk tbody tr:nth-child(even){background-color:transparent!important}
|
||||
table.domdisk tbody tr:nth-child(4n-1){background-color:transparent!important}
|
||||
.fileTree{background:<?=$bgcolor?>;width:500px;max-height:320px;overflow-y:scroll;overflow-x:hidden;position:absolute;z-index:100;display:none}
|
||||
div.template,div#dialogWindow,input#upload{display:none}
|
||||
i.mover{margin-right:8px;display:none}
|
||||
.fileTree{background:<?=$bgcolor?>;width:500px;max-height:320px;overflow-y:scroll;overflow-x:hidden;position:absolute;z-index:100;display:none}
|
||||
.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset button[disabled]{cursor:default;color:#808080;background:-webkit-gradient(linear,left top,right top,from(#404040),to(#808080)) 0 0 no-repeat,-webkit-gradient(linear,left top,right top,from(#404040),to(#808080)) 0 100% no-repeat,-webkit-gradient(linear,left bottom,left top,from(#404040),to(#404040)) 0 100% no-repeat,-webkit-gradient(linear,left bottom,left top,from(#808080),to(#808080)) 100% 100% no-repeat;background:linear-gradient(90deg,#404040 0,#808080) 0 0 no-repeat,linear-gradient(90deg,#404040 0,#808080) 0 100% no-repeat,linear-gradient(0deg,#404040 0,#404040) 0 100% no-repeat,linear-gradient(0deg,#808080 0,#808080) 100% 100% no-repeat;background-size:100% 2px,100% 2px,2px 100%,2px 100%}
|
||||
.dropdown-menu{z-index:10001;
|
||||
.dropdown-menu{z-index:10001}
|
||||
</style>
|
||||
<table id="kvm_table" class="tablesorter four shift">
|
||||
<thead><tr><th class="th1"><a href="#" style="cursor:hand;margin-left:12px;display:inline-block;width:32px" onclick="resetSorting()" title="Reset sorting"><i class="fa fa-th-list"></i></a>_(Name)_</th><th class="th2">_(Description)_</th><th>_(CPUs)_</th><th>_(Memory)_</th><th>_(vDisks)_</th><th>_(Graphics)_</th><th class="th3">_(Autostart)_</th></tr></thead>
|
||||
@@ -154,8 +152,7 @@ function resize(bind) {
|
||||
var s = Math.max(window.innerHeight-340,330);
|
||||
if (h>s || bind) {
|
||||
$('#kvm_list').height(s);
|
||||
$('#kvm_table tbody tr:first-child td').each(function(){width.push($(this).width());});
|
||||
$('#kvm_table thead tr th').each(function(i){$(this).width(width[i]);});
|
||||
$('#kvm_table thead tr th').each(function(){$(this).width($(this).width());});
|
||||
if (!bind) $('#kvm_table thead,#kvm_table tbody').addClass('fixed');
|
||||
}
|
||||
}
|
||||
@@ -214,31 +211,41 @@ function dialogStyle() {
|
||||
$('.ui-button-text').css({'padding':'0px 5px'});
|
||||
}
|
||||
var sortableHelper = function(e,ui){
|
||||
ui.next().hide();
|
||||
ui.children().each(function(){$(this).width($(this).width());});
|
||||
return ui;
|
||||
};
|
||||
function LockButton() {
|
||||
if ($.cookie('lockbutton') == null) {
|
||||
$.cookie('lockbutton','lockbutton');
|
||||
$('i.mover').show();
|
||||
$('#kvm_list .sortable').css({'cursor':'move'});
|
||||
<?if ($themes1):?>
|
||||
$('div.nav-item.LockButton').find('a').prop('title',"_(Lock sortable items)_");
|
||||
$('div.nav-item.LockButton').find('b').removeClass('icon-u-lock red-text').addClass('icon-u-lock-open green-text');
|
||||
$('div.nav-item.LockButton a').prop('title',"_(Lock sortable items)_");
|
||||
$('div.nav-item.LockButton b').removeClass('icon-u-lock red-text').addClass('icon-u-lock-open green-text');
|
||||
<?endif;?>
|
||||
$('div.nav-item.LockButton').find('span').text("_(Lock sortable items)_");
|
||||
$('#kvm_list').sortable({helper:sortableHelper,items:'tr.sortable',cursor:'move',axis:'y',containment:'parent',delay:100,opacity:0.5,zIndex:9999,forcePlaceholderSize:true,
|
||||
$('div.nav-item.LockButton span').text("_(Lock sortable items)_");
|
||||
$('#kvm_list').sortable({helper:sortableHelper,items:'.sortable',cursor:'grab',axis:'y',containment:'parent',delay:100,opacity:0.5,zIndex:9999,forcePlaceholderSize:true,
|
||||
update:function(e,ui){
|
||||
var row = $('#kvm_list').find('tr:first');
|
||||
var names = ''; var index = '';
|
||||
$('#kvm_list .sortable').each(function(){
|
||||
var parent = $(this).attr('parent-id');
|
||||
var child = $('tr[child-id="'+parent+'"]');
|
||||
child.detach().insertAfter($(this));
|
||||
});
|
||||
var row = $('#kvm_list tr:first');
|
||||
var names = '', index = '';
|
||||
row.parent().children().find('td.vm-name').each(function(){names+=$(this).find('a').text()+';';index+=$(this).parent().parent().children().index($(this).parent())+';';});
|
||||
$.post('/plugins/dynamix.vm.manager/include/UserPrefs.php',{names:names,index:index});
|
||||
}});
|
||||
} else {
|
||||
$.removeCookie('lockbutton');
|
||||
$('i.mover').hide();
|
||||
$('#kvm_list .sortable').css({'cursor':'default'});
|
||||
<?if ($themes1):?>
|
||||
$('div.nav-item.LockButton').find('a').prop('title',"_(Unlock sortable items)_");
|
||||
$('div.nav-item.LockButton').find('b').removeClass('icon-u-lock-open green-text').addClass('icon-u-lock red-text');
|
||||
$('div.nav-item.LockButton a').prop('title',"_(Unlock sortable items)_");
|
||||
$('div.nav-item.LockButton b').removeClass('icon-u-lock-open green-text').addClass('icon-u-lock red-text');
|
||||
<?endif;?>
|
||||
$('div.nav-item.LockButton').find('span').text("_(Unlock sortable items)_");
|
||||
$('div.nav-item.LockButton span').text("_(Unlock sortable items)_");
|
||||
$('#kvm_list').sortable('destroy');
|
||||
}
|
||||
}
|
||||
@@ -292,20 +299,7 @@ $(function() {
|
||||
|
||||
<div id="dialogWindow"></div>
|
||||
<div markdown="1" id="templateISO" class="template">
|
||||
<html <?=_var($display,'rtl')?>lang="<?=strtok($locale,'_')?:'en'?>">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="format-detection" content="telephone=no">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<meta name="robots" content="noindex, nofollow">
|
||||
<meta name="referrer" content="same-origin">
|
||||
<link type="text/css" rel="stylesheet" href="<?autov("/webGui/styles/default-fonts.css")?>">
|
||||
</head>
|
||||
<body>
|
||||
_(ISO Image)_:
|
||||
: <input type="text" id="target" autocomplete="off" spellcheck="false" value="" data-pickcloseonfile="true" data-pickfolders="true" data-pickfilter="" data-pickmatch="" data-pickroot="" data-picktop="">
|
||||
|
||||
</body>
|
||||
</html>
|
||||
</div>
|
||||
@@ -1,6 +1,7 @@
|
||||
Menu="Tasks:70"
|
||||
Type="xmenu"
|
||||
Code="e918"
|
||||
Lock="true"
|
||||
Cond="exec(\"grep -o '^SERVICE=.enable' /boot/config/domain.cfg 2>/dev/null\")"
|
||||
---
|
||||
<?PHP
|
||||
|
||||
@@ -29,8 +29,9 @@ if (empty($vms)) {
|
||||
if (file_exists($user_prefs)) {
|
||||
$prefs = @parse_ini_file($user_prefs) ?: [];
|
||||
$sort = [];
|
||||
foreach ($vms as $vm) $sort[] = array_search($vm,$prefs) ?: 999;
|
||||
foreach ($vms as $vm) $sort[] = array_search($vm,$prefs);
|
||||
array_multisort($sort,SORT_NUMERIC,$vms);
|
||||
unset($sort);
|
||||
} else {
|
||||
natcasesort($vms);
|
||||
}
|
||||
@@ -122,7 +123,7 @@ foreach ($vms as $vm) {
|
||||
}
|
||||
|
||||
/* VM information */
|
||||
echo "<tr parent-id='$i' class='sortable'><td class='vm-name' style='width:220px;padding:8px'>";
|
||||
echo "<tr parent-id='$i' class='sortable'><td class='vm-name' style='width:220px;padding:8px'><i class='fa fa-arrows-v mover orange-text'></i>";
|
||||
echo "<span class='outer'><span id='vm-$uuid' $menu class='hand'>$image</span><span class='inner'><a href='#' onclick='return toggle_id(\"name-$i\")' title='click for more VM info'>$vm</a><br><i class='fa fa-$shape $status $color'></i><span class='state'>"._($status)."</span></span></span></td>";
|
||||
echo "<td>$desc</td>";
|
||||
echo "<td><a class='vcpu-$uuid' style='cursor:pointer'>$vcpu</a></td>";
|
||||
@@ -134,9 +135,9 @@ foreach ($vms as $vm) {
|
||||
/* Disk device information */
|
||||
echo "<tr child-id='$i' id='name-$i".(in_array('name-'.$i++,$show) ? "'>" : "' style='display:none'>");
|
||||
echo "<td colspan='8' style='margin:0;padding:0'>";
|
||||
echo "<table class='tablesorter domdisk' id='domdisk_table'>";
|
||||
echo "<table class='tablesorter domdisk'>";
|
||||
echo "<thead><tr><th><i class='fa fa-hdd-o'></i> <b>"._('Disk devices')."</b></th><th>"._('Serial')."</b></th><th>"._('Bus')."</th><th>"._('Capacity')."</th><th>"._('Allocation')."</th><th>Boot Order</th</tr></thead>";
|
||||
echo "<tbody id='domdisk_list'>";
|
||||
echo "<tbody>";
|
||||
|
||||
/* Display VM disks */
|
||||
foreach ($lv->get_disk_stats($res) as $arrDisk) {
|
||||
|
||||
@@ -173,7 +173,7 @@ switch ($display['theme']) {
|
||||
<style>
|
||||
div.frame{padding-top:14px;padding-bottom:160px}
|
||||
div.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(<?=$themes1?'610px':'570px'?>,1fr));column-gap:30px}
|
||||
div.tile{display:none}
|
||||
div.tile,i.tile{display:none}
|
||||
div#iframe-popup{display:none;-webkit-overflow-scrolling:touch}
|
||||
div.last{padding-bottom:12px}
|
||||
div.leftside{float:left;width:66%}
|
||||
@@ -235,7 +235,7 @@ input[value=Edit]{margin:12px 0 0 0;padding:5px 10px}
|
||||
<table id='db-box1' class='share_status dashboard'>
|
||||
<tbody class='system'>
|
||||
<tr><td><?=_var($var,'NAME')?>
|
||||
<i class='fa fa-fw fa-wrench control' onclick='contentMgmt()' title="_(Content Management)_"></i><a href='/Dashboard/Settings/Identification'><i class='fa fa-fw fa-cog control' title="_(Go to identification settings)_"></i></a>
|
||||
<i class='fa fa-fw fa-wrench control tile' onclick='contentMgmt()' title="_(Content Management)_"></i><a href='/Dashboard/Settings/Identification'><i class='fa fa-fw fa-cog control' title="_(Go to identification settings)_"></i></a>
|
||||
<span class='ctrl'>
|
||||
<?if ($parity||$mover||$btrfs):?>
|
||||
<span class='fa fa-fw fa-<?=$started?'stop':'play'?>-circle busy' title="<?=$started?_("Stop the array"):_("Start the array")?>"></span>
|
||||
@@ -626,16 +626,6 @@ if (!$group) {
|
||||
|
||||
<div id="templateContentMgmt" class="template">
|
||||
<!--!
|
||||
<html <?=$display['rtl']?>lang="<?=strtok($locale,'_')?:'en'?>">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="format-detection" content="telephone=no">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<meta name="robots" content="noindex, nofollow">
|
||||
<meta name="referrer" content="same-origin">
|
||||
<link type="text/css" rel="stylesheet" href="<?autov("/webGui/styles/default-fonts.css")?>">
|
||||
</head>
|
||||
<style>
|
||||
.item{display:inline-block;width:210px;float:left;height:4rem}
|
||||
</style>
|
||||
@@ -676,10 +666,7 @@ function hideShow() {
|
||||
}
|
||||
}
|
||||
</script>
|
||||
<body>
|
||||
<div id="list"></div>
|
||||
</body>
|
||||
</html>
|
||||
!-->
|
||||
</div>
|
||||
|
||||
@@ -1065,7 +1052,7 @@ function addProperties() {
|
||||
$('tbody.system').addClass('sortable').attr('sort',n++);
|
||||
$('tbody').not('.system').each(function(){
|
||||
$(this).addClass('sortable').attr('sort',n++);
|
||||
$(this).find('td:first').prepend("<i class='fa fa-fw fa-close control' onclick='dismiss($(this))' title=\"_(Close Tile)_\"></i>");
|
||||
$(this).find('td:first').prepend("<i class='fa fa-fw fa-close control tile' onclick='dismiss($(this))' title=\"_(Close Tile)_\"></i>");
|
||||
});
|
||||
}
|
||||
function showContent() {
|
||||
@@ -1154,6 +1141,7 @@ function LockButton() {
|
||||
$('div.nav-item.LockButton a').prop('title',"_(Lock sortable items)_");
|
||||
$('div.nav-item.LockButton b').removeClass('icon-u-lock red-text').addClass('icon-u-lock-open green-text');
|
||||
<?endif;?>
|
||||
$('i.tile').show();
|
||||
$('div.nav-item.LockButton span').text("_(Lock sortable items)_");
|
||||
$('#db-box1,#db-box2,#db-box3').sortable({connectWith:'#db-box1,#db-box2,#db-box3'});
|
||||
$('table.dashboard').sortable({helper:sortableHelper,items:'.sortable',cursor:'grab',delay:100,opacity:0.5,zIndex:9999,forcePlaceholderSize:true,
|
||||
@@ -1175,6 +1163,7 @@ function LockButton() {
|
||||
$('div.nav-item.LockButton a').prop('title',"_(Unlock sortable items)_");
|
||||
$('div.nav-item.LockButton b').removeClass('icon-u-lock-open green-text').addClass('icon-u-lock red-text');
|
||||
<?endif;?>
|
||||
$('i.tile').hide();
|
||||
$('div.nav-item.LockButton span').text("_(Unlock sortable items)_");
|
||||
$('table.dashboard').sortable('destroy');
|
||||
}
|
||||
|
||||
@@ -2,4 +2,5 @@ Menu="Tasks:1"
|
||||
Type="xmenu"
|
||||
Tabs="false"
|
||||
Code="e943"
|
||||
Lock="true"
|
||||
Load="30"
|
||||
@@ -32,6 +32,7 @@ select.fixed{max-width:166px}
|
||||
<script>
|
||||
var path = '/boot/config/plugins/dynamix';
|
||||
var filename = '';
|
||||
var dashapps = "<?=$display['dashapps']?>";
|
||||
|
||||
function restore() {
|
||||
// restore original image and activate APPLY button
|
||||
@@ -46,6 +47,8 @@ function upload() {
|
||||
} else if (filename) {
|
||||
$.post("/webGui/include/FileUpload.php",{cmd:'save',path:path,filename:filename,output:'banner.png'});
|
||||
}
|
||||
// reset dashboard tiles list when Docker/VM selection is changed
|
||||
if (dashapps != document.display_settings.dashapps.value) $.removeCookie('inactive_content');
|
||||
}
|
||||
function presetTime(form) {
|
||||
var system = form.date.selectedIndex==0;
|
||||
@@ -67,7 +70,6 @@ function updateDirection(lang) {
|
||||
var rtl = "";
|
||||
$('input[name="rtl"]').val(rtl);
|
||||
}
|
||||
|
||||
$(function() {
|
||||
var dropbox = $('#dropbox');
|
||||
// attach the drag-n-drop feature to the 'dropbox' element
|
||||
|
||||
@@ -72,15 +72,6 @@ _(Error reporting level)_:
|
||||
<div markdown="1" id="templateWindow">
|
||||
<!--!
|
||||
<html <?=$display['rtl']?>lang="<?=strtok($locale,'_')?:'en'?>">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="format-detection" content="telephone=no">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<meta name="robots" content="noindex, nofollow">
|
||||
<meta name="referrer" content="same-origin">
|
||||
</head>
|
||||
|
||||
<style>
|
||||
table{box-shadow:1px 2px 3px rgba(0,0,0,0.2);width:90%}
|
||||
.center{text-align:center;color:#f2f2f2!important;background-color:#1c1b1b}
|
||||
@@ -100,7 +91,6 @@ h2 a{color:#f2f2f2!important}
|
||||
.v i{color:#999}
|
||||
.h td,td.e,th{border-color:#606A90}
|
||||
</style>
|
||||
|
||||
<body>
|
||||
<?
|
||||
ob_start();
|
||||
|
||||
@@ -248,7 +248,7 @@ $theme_dark = in_array($display['theme'], ['black', 'gray']);
|
||||
<meta http-equiv="Pragma" content="no-cache">
|
||||
<meta http-equiv="Expires" content="0">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<meta name="viewport" content="width=1300">
|
||||
<meta name="robots" content="noindex, nofollow">
|
||||
<meta http-equiv="Content-Security-Policy" content="block-all-mixed-content">
|
||||
<meta name="referrer" content="same-origin">
|
||||
|
||||
@@ -50,7 +50,7 @@ $THEME_DARK = in_array($display['theme'],['black','gray']);
|
||||
<meta http-equiv="Pragma" content="no-cache">
|
||||
<meta http-equiv="Expires" content="0">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<meta name="viewport" content="width=1300">
|
||||
<meta name="robots" content="noindex, nofollow">
|
||||
<meta http-equiv="Content-Security-Policy" content="block-all-mixed-content">
|
||||
<meta name="referrer" content="same-origin">
|
||||
|
||||
@@ -29,7 +29,7 @@ $var = parse_ini_file("/var/local/emhttp/var.ini");
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta http-equiv="Content-Security-Policy" content="block-all-mixed-content">
|
||||
<meta name="format-detection" content="telephone=no">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<meta name="viewport" content="width=1300">
|
||||
<meta name="robots" content="noindex, nofollow">
|
||||
<meta name="referrer" content="same-origin">
|
||||
<link type="text/css" rel="stylesheet" href="<?autov('/webGui/styles/default-fonts.css')?>">
|
||||
|
||||
@@ -32,7 +32,7 @@ $hash = trim(explode(':',$hash)[1]);
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta http-equiv="Content-Security-Policy" content="block-all-mixed-content">
|
||||
<meta name="format-detection" content="telephone=no">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<meta name="viewport" content="width=1300">
|
||||
<meta name="robots" content="noindex, nofollow">
|
||||
<meta name="referrer" content="same-origin">
|
||||
<link type="text/css" rel="stylesheet" href="<?autov("/webGui/styles/default-fonts.css")?>">
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
*/
|
||||
?>
|
||||
<?
|
||||
$display['font'] = filter_var($_COOKIE['fontSize']??$display['font']??'', FILTER_SANITIZE_NUMBER_FLOAT,FILTER_FLAG_ALLOW_FRACTION);
|
||||
$display['font'] = filter_var($_COOKIE['fontSize']??$display['font']??'',FILTER_SANITIZE_NUMBER_FLOAT,FILTER_FLAG_ALLOW_FRACTION);
|
||||
$theme = strtok($display['theme'],'-');
|
||||
$header = $display['header'];
|
||||
$backgnd = $display['background'];
|
||||
@@ -35,7 +35,7 @@ function annotate($text) {echo "\n<!--\n",str_repeat("#",strlen($text)),"\n$text
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta http-equiv="Content-Security-Policy" content="block-all-mixed-content">
|
||||
<meta name="format-detection" content="telephone=no">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<meta name="viewport" content="width=1300">
|
||||
<meta name="robots" content="noindex, nofollow">
|
||||
<meta name="referrer" content="same-origin">
|
||||
<link type="image/png" rel="shortcut icon" href="/webGui/images/<?=_var($var,'mdColor','red-on')?>.png">
|
||||
@@ -605,14 +605,14 @@ foreach ($tasks as $button) {
|
||||
$page = $button['name'];
|
||||
$play = $task==$page ? " active" : "";
|
||||
echo "<div class='nav-item{$play}'>";
|
||||
echo "<a href=\"/$page\" onclick=\"initab('/$page')\">"._($button['Name'] ?? $page)."</a></div>";
|
||||
echo "<a href=\"/$page\" onclick=\"initab('/$page')\">"._(_var($button,'Name',$page))."</a></div>";
|
||||
// create list of nchan scripts to be started
|
||||
if (isset($button['Nchan'])) nchan_merge($button['root'], $button['Nchan']);
|
||||
}
|
||||
unset($tasks);
|
||||
echo "</div>";
|
||||
echo "<div class='nav-tile right'>";
|
||||
if (in_array($task,['Dashboard','Docker','VMs'])) {
|
||||
if (isset($myPage['Lock'])) {
|
||||
$title = $themes2 ? "" : _('Unlock sortable items');
|
||||
echo "<div class='nav-item LockButton util'><a 'href='#' class='hand' onclick='LockButton();return false;' title=\"$title\"><b class='icon-u-lock system red-text'></b><span>"._('Unlock sortable items')."</span></a></div>";
|
||||
}
|
||||
@@ -630,7 +630,7 @@ foreach ($buttons as $button) {
|
||||
$icon = "<b class='fa $icon system'></b>";
|
||||
}
|
||||
$title = $themes2 ? "" : " title=\""._($button['Title'])."\"";
|
||||
echo "<div class='nav-item {$button['name']} util'><a href='".($button['Href'] ?? '#')."' onclick='{$button['name']}();return false;'{$title}>$icon<span>"._($button['Title'])."</span></a></div>";
|
||||
echo "<div class='nav-item {$button['name']} util'><a href='"._var($button,'Href','#')."' onclick='{$button['name']}();return false;'{$title}>$icon<span>"._($button['Title'])."</span></a></div>";
|
||||
} else {
|
||||
echo "<div class='{$button['Link']}'></div>";
|
||||
}
|
||||
@@ -655,7 +655,7 @@ echo "<div class='tabs'>";
|
||||
$tab = 1;
|
||||
$pages = [];
|
||||
if (!empty($myPage['text'])) $pages[$myPage['name']] = $myPage;
|
||||
if (($myPage['Type'] ?? '')=='xmenu') $pages = array_merge($pages, find_pages($myPage['name']));
|
||||
if (_var($myPage,'Type')=='xmenu') $pages = array_merge($pages, find_pages($myPage['name']));
|
||||
if (isset($myPage['Tabs'])) $display['tabs'] = strtolower($myPage['Tabs'])=='true' ? 0 : 1;
|
||||
$tabbed = $display['tabs']==0 && count($pages)>1;
|
||||
|
||||
@@ -665,13 +665,13 @@ foreach ($pages as $page) {
|
||||
eval("\$title=\"".htmlspecialchars($page['Title'])."\";");
|
||||
if ($tabbed) {
|
||||
echo "<div class='tab'><input type='radio' id='tab{$tab}' name='tabs' onclick='settab(this.id)'><label for='tab{$tab}'>";
|
||||
echo tab_title($title,$page['root'],$page['Tag']??false);
|
||||
echo tab_title($title,$page['root'],_var($page,'Tag',false));
|
||||
echo "</label><div class='content'>";
|
||||
$close = true;
|
||||
} else {
|
||||
if ($tab==1) echo "<div class='tab'><input type='radio' id='tab{$tab}' name='tabs'><div class='content shift'>";
|
||||
echo "<div class='title'><span class='left'>";
|
||||
echo tab_title($title,$page['root'],$page['Tag']??false);
|
||||
echo tab_title($title,$page['root'],_var($page,'Tag',false));
|
||||
echo "</span></div>";
|
||||
}
|
||||
$tab++;
|
||||
@@ -680,7 +680,7 @@ foreach ($pages as $page) {
|
||||
$pgs = find_pages($page['name']);
|
||||
foreach ($pgs as $pg) {
|
||||
@eval("\$title=\"".htmlspecialchars($pg['Title'])."\";");
|
||||
$icon = $pg['Icon'] ?? "<i class='icon-app PanelIcon'></i>";
|
||||
$icon = _var($pg,'Icon',"<i class='icon-app PanelIcon'></i>");
|
||||
if (substr($icon,-4)=='.png') {
|
||||
$root = $pg['root'];
|
||||
if (file_exists("$docroot/$root/images/$icon")) {
|
||||
|
||||
@@ -28,7 +28,7 @@ $keyfile = base64_encode(file_get_contents($var['regFILE']));
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta http-equiv="Content-Security-Policy" content="block-all-mixed-content">
|
||||
<meta name="format-detection" content="telephone=no">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<meta name="viewport" content="width=1300">
|
||||
<meta name="robots" content="noindex, nofollow">
|
||||
<meta name="referrer" content="same-origin">
|
||||
<link type="text/css" rel="stylesheet" href="<?autov("/webGui/styles/default-fonts.css")?>">
|
||||
|
||||
@@ -32,7 +32,7 @@ if (!empty($_POST['trial'])) {
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta http-equiv="Content-Security-Policy" content="block-all-mixed-content">
|
||||
<meta name="format-detection" content="telephone=no">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<meta name="viewport" content="width=1300">
|
||||
<meta name="robots" content="noindex, nofollow">
|
||||
<meta name="referrer" content="same-origin">
|
||||
<link type="text/css" rel="stylesheet" href="<?autov("/webGui/styles/default-fonts.css")?>">
|
||||
|
||||
@@ -61,7 +61,7 @@ div.title span.left{font-size:1.4rem}
|
||||
div.title span.right{font-size:1.4rem;padding-top:2px;padding-right:10px;float:right}
|
||||
div.title span img{padding-right:4px}
|
||||
div.title.shift{margin-top:-30px}
|
||||
#menu{position:absolute;top:90px;left:0;right:0;display:grid;grid-template-columns:auto minmax(400px,auto);z-index:101}
|
||||
#menu{position:absolute;top:90px;left:0;right:0;display:grid;grid-template-columns:auto max-content;z-index:101}
|
||||
.nav-tile{height:4rem;line-height:4rem;padding:0;margin:0;font-size:1.2rem;letter-spacing:1.8px;background-color:#f2f2f2;white-space:nowrap;overflow-x:scroll;overflow-y:hidden;}
|
||||
.nav-tile::-webkit-scrollbar{height:8px}
|
||||
.nav-tile.right{text-align:right}
|
||||
|
||||
@@ -61,7 +61,7 @@ div.title span.left{font-size:1.4rem}
|
||||
div.title span.right{font-size:1.4rem;padding-top:2px;padding-right:10px;float:right}
|
||||
div.title span img{padding-right:4px}
|
||||
div.title.shift{margin-top:-30px}
|
||||
#menu{position:absolute;top:90px;left:0;right:0;display:grid;grid-template-columns:auto minmax(400px,auto);z-index:101}
|
||||
#menu{position:absolute;top:90px;left:0;right:0;display:grid;grid-template-columns:auto max-content;z-index:101}
|
||||
.nav-tile{height:4rem;line-height:4rem;padding:0;margin:0;font-size:1.2rem;letter-spacing:1.8px;background-color:#1c1b1b;white-space:nowrap;overflow-x:scroll;overflow-y:hidden;}
|
||||
.nav-tile::-webkit-scrollbar{height:8px}
|
||||
.nav-tile.right{text-align:right}
|
||||
|
||||
Reference in New Issue
Block a user