mirror of
https://github.com/unraid/webgui.git
synced 2026-02-20 08:09:23 -06:00
Update WIP
This commit is contained in:
@@ -102,7 +102,7 @@ if ($newmodel && $arrLoad['form'] == "Custom.form.php") $arrLoad['form'] = "Cust
|
||||
<link type="text/css" rel="stylesheet" href="<?autov('/webGui/styles/jquery.filetree.css')?>">
|
||||
<link type="text/css" rel="stylesheet" href="<?autov('/webGui/styles/jquery.switchbutton.css')?>">
|
||||
|
||||
<span class="status advancedview_panel" style="margin-top:<?=$top?>px"><input type="checkbox" class="advancedview"></span>
|
||||
<span class="status advancedview_panel" style="margin-top:<?=$top?>px;"><input type="checkbox" class="inlineview"><input type="checkbox" class="advancedview"></span>
|
||||
<div class="domain">
|
||||
<form id="vmform" method="POST">
|
||||
<input type="hidden" name="domain[type]" value="kvm" />
|
||||
@@ -161,6 +161,21 @@ function isVMXMLMode() {
|
||||
return ($.cookie('vmmanager_listview_mode') == 'xml');
|
||||
}
|
||||
|
||||
function isinlineXMLMode() {
|
||||
return ($.cookie('vmmanager_inline_mode') == 'hide');
|
||||
}
|
||||
|
||||
function hidexml(checked)
|
||||
{
|
||||
var form = document.getElementById("vmform"); // Replace "yourFormId" with the actual ID of your form
|
||||
var xmlElements = form.getElementsByClassName("xml");
|
||||
if (checked == 1) xmldisplay = "none"; else xmldisplay = "";
|
||||
// Unhide each element
|
||||
for (var i = 0; i < xmlElements.length; i++) {
|
||||
xmlElements[i].style.display = xmldisplay; // Setting to empty string will revert to default style
|
||||
}
|
||||
}
|
||||
|
||||
$(function() {
|
||||
$('.autostart').switchButton({
|
||||
on_label: "_(Yes)_",
|
||||
@@ -177,10 +192,20 @@ $(function() {
|
||||
off_label: "_(Form View)_",
|
||||
checked: isVMXMLMode()
|
||||
});
|
||||
$('.inlineview').switchButton({
|
||||
labels_placement: "left",
|
||||
on_label: "_(Hide inline xml)_",
|
||||
off_label: "_(Show Inline XML)_",
|
||||
checked: isinlineXMLMode()
|
||||
});
|
||||
$('.advancedview').change(function () {
|
||||
toggleRows('xmlview', $(this).is(':checked'), 'formview');
|
||||
$.cookie('vmmanager_listview_mode', $(this).is(':checked') ? 'xml' : 'form', { expires: 3650 });
|
||||
});
|
||||
$('.inlineview').change(function () {
|
||||
hidexml($(this).is(':checked'));
|
||||
$.cookie('vmmanager_inline_mode', $(this).is(':checked') ? 'hide' : 'show', { expires: 3650 });
|
||||
});
|
||||
|
||||
$('#template_img').click(function (){
|
||||
var p = $(this).position();
|
||||
@@ -227,6 +252,7 @@ $(function() {
|
||||
} else {
|
||||
$('.advancedview_panel').fadeOut('fast');
|
||||
}
|
||||
hidexml(isinlineXMLMode());
|
||||
|
||||
$("#vmform #btnCancel").click(function (){
|
||||
done();
|
||||
|
||||
@@ -1801,7 +1801,7 @@
|
||||
}
|
||||
|
||||
function domain_define($xml, $autostart=false) {
|
||||
if (strpos($xml,'<qemu:commandline>')) {
|
||||
if (strpos($xml,'<qemu:commandline>') || strpos($xml,'<qemu:override>')) {
|
||||
$tmp = explode("\n", $xml);
|
||||
for ($i = 0; $i < sizeof($tmp); $i++)
|
||||
if (strpos('.'.$tmp[$i], "<domain type='kvm'") || strpos('.'.$tmp[$i], '<domain type="kvm"'))
|
||||
|
||||
@@ -1370,7 +1370,7 @@ private static $encoding = 'UTF-8';
|
||||
'nic' => $arrNICs,
|
||||
'usb' => $arrUSBDevs,
|
||||
'shares' => $lv->domain_get_mount_filesystems($res),
|
||||
'qemucmdline' => getQEMUCmdLine($strDOMXML),
|
||||
'qemucmdline' => getQEMUCmdLine($strDOMXML)."\n".getQEMUOverride($strDOMXML),
|
||||
'clocks' => getClocks($strDOMXML),
|
||||
'xml' => [
|
||||
'machine' => $lv->domain_get_xml($vmname, "//domain/os/*"),
|
||||
@@ -1565,7 +1565,19 @@ private static $encoding = 'UTF-8';
|
||||
$y = strpos($xml,"<qemu:commandline>", $z +19) ;
|
||||
if ($y != false) $z =$y ;
|
||||
}
|
||||
return substr($xml,$x, ($z + 19) -$x) ;
|
||||
return substr($xml,$x, ($z + 19) -$x);
|
||||
}
|
||||
|
||||
function getQEMUOverride($xml) {
|
||||
$x = strpos($xml,"<qemu:override>", 0) ;
|
||||
if ($x === false) return null ;
|
||||
$y = strpos($xml,"</qemu:override>", 0) ;
|
||||
$z=$y ;
|
||||
while ($y!=false) {
|
||||
$y = strpos($xml,"<qemu:override>", $z +16) ;
|
||||
if ($y != false) $z =$y ;
|
||||
}
|
||||
return substr($xml,$x, ($z + 16) -$x) ;
|
||||
}
|
||||
|
||||
function getchannels($res) {
|
||||
@@ -2648,6 +2660,7 @@ function build_xml_templates($strXML) {
|
||||
"console"=> "yes",
|
||||
"input"=> "yes",
|
||||
"audio"=> "yes",
|
||||
"video"=> "yes",
|
||||
"watchdog"=> "yes",
|
||||
"memballoon"=> "yes",
|
||||
"graphics"=> "yes",
|
||||
@@ -2672,7 +2685,14 @@ function build_xml_templates($strXML) {
|
||||
$endpos = strpos($xml,$endcheck,$strpos);
|
||||
}
|
||||
# echo substr($xml,$strpos,$endpos-$strpos+strlen($endcheck)) ;
|
||||
$devxml[$xmlsection][$count] = substr($xml,$strpos,$endpos-$strpos+strlen($endcheck)) ;
|
||||
if ($xmlsection == "disk") {
|
||||
$disk = substr($xml,$strpos,$endpos-$strpos+strlen($endcheck));
|
||||
$xmldiskdoc = new SimpleXMLElement($disk);
|
||||
$devxml[$xmlsection][$xmldiskdoc->target->attributes()->dev->__toString()] = $disk;
|
||||
|
||||
} else {
|
||||
$devxml[$xmlsection][$count] = substr($xml,$strpos,$endpos-$strpos+strlen($endcheck)) ;
|
||||
}
|
||||
$count++;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1913,6 +1913,9 @@ $(function() {
|
||||
$('.advancedview').change(function () {
|
||||
if ($(this).is(':checked')) {
|
||||
setTimeout(function() {
|
||||
var xmlPanelHeight = window.outerHeight - 550;
|
||||
if (xmlPanelHeight < 0) xmlPanelHeight = null;
|
||||
editor.setSize(null,xmlPanelHeight);
|
||||
editor.refresh();
|
||||
}, 100);
|
||||
}
|
||||
|
||||
@@ -328,7 +328,7 @@
|
||||
<tr>
|
||||
<td>_(Name)_:</td>
|
||||
<td><input type="text" name="domain[name]" id="domain_name" class="textTemplate" title="_(Name of virtual machine)_" placeholder="_(e.g.)_ _(My Workstation)_" value="<?=htmlspecialchars($arrConfig['domain']['name'])?>" required /></td>
|
||||
<td><textarea class="xml" id="xmlname" rows=1 disabled ><?=htmlspecialchars($xml2['name'])?></textarea></td>
|
||||
<td><textarea class="xml" id="xmlname" rows=1 disabled ><?=htmlspecialchars($xml2['name'])."\n".htmlspecialchars($xml2['uuid'])."\n".htmlspecialchars($xml2['metadata'])?></textarea></td>
|
||||
</tr>
|
||||
</table>
|
||||
<blockquote class="inline_help">
|
||||
@@ -537,7 +537,7 @@
|
||||
<?mk_dropdown_options($arrValidMachineTypes, $arrConfig['domain']['machine']);?>
|
||||
</select>
|
||||
</td>
|
||||
<td><textarea class="xml" id="xmlos" rows=5 cols=200 disabled ><?=htmlspecialchars($xml2['os'])?></textarea></td>
|
||||
<td><textarea class="xml" id="xmlos" rows=5 cols=200 disabled ><?=htmlspecialchars($xml2['os'])."\n".htmlspecialchars($xml2['features'])?></textarea></td>
|
||||
</tr>
|
||||
</table>
|
||||
<div class="advanced">
|
||||
@@ -656,6 +656,7 @@
|
||||
<td>
|
||||
<input type="text" name="media[cdrom]" autocomplete="off" spellcheck="false" data-pickcloseonfile="true" data-pickfilter="iso" data-pickmatch="^[^.].*" data-pickroot="<?=htmlspecialchars($domain_cfg['MEDIADIR'])?>" class="cdrom" value="<?=htmlspecialchars($arrConfig['media']['cdrom'])?>" placeholder="_(Click and Select cdrom image to install operating system)_">
|
||||
</td>
|
||||
<td><textarea class="xml" id="xmlvdiskhda" rows=1 disabled wrap="soft"><?=htmlspecialchars($xml2['devices']['disk']['hda'])?></textarea></td>
|
||||
</tr>
|
||||
<tr class="advanced">
|
||||
<td>_(OS Install CDRom Bus)_:</td>
|
||||
@@ -691,6 +692,7 @@
|
||||
<?mk_dropdown_options($arrValidCdromBuses, $arrConfig['media']['driversbus']);?>
|
||||
</select>
|
||||
</td>
|
||||
<td><textarea class="xml" id="xmlvdiskhdb" rows=1 disabled wrap="soft"><?=htmlspecialchars($xml2['devices']['disk']['hdb'])?></textarea></td>
|
||||
</tr>
|
||||
</table>
|
||||
<div class="domain_os windows">
|
||||
@@ -790,7 +792,7 @@
|
||||
?>
|
||||
</select><input type="text" name="disk[<?=$i?>][new]" autocomplete="off" spellcheck="false" data-pickcloseonfile="true" data-pickfolders="true" data-pickfilter="img,qcow,qcow2" data-pickmatch="^[^.].*" data-pickroot="/mnt/" class="disk" id="disk_<?=$i?>" value="<?=htmlspecialchars($arrDisk['new'])?>" placeholder="_(Separate sub-folder and image will be created based on Name)_"><div class="disk_preview"></div>
|
||||
</td>
|
||||
<td><textarea class="xml" id="xmlvdisk<?=$i?>" rows=4 disabled wrap="soft"><?=htmlspecialchars($xml2['devices']['disk'][$i])?></textarea></td>
|
||||
<td><textarea class="xml" id="xmlvdisk<?=$i?>" rows=4 disabled wrap="soft"><?=htmlspecialchars($xml2['devices']['disk'][$arrDisk['dev']])?></textarea></td>
|
||||
</tr>
|
||||
|
||||
<input type="hidden" name="disk[<?=$i?>][storage]" id="disk[<?=$i?>][storage]" value="<?=htmlspecialchars($arrConfig['template']['storage'])?>">
|
||||
@@ -1135,7 +1137,7 @@
|
||||
<?
|
||||
if ($arrGPU['id'] == 'virtual') {
|
||||
?>
|
||||
<td><textarea class="xml" id="xmlgraphics<?=$i?>" rows=5 disabled ><?=htmlspecialchars($xml2['devices']['graphics'][0])."\n".htmlspecialchars($xml2['devices']['audio'][0])?></textarea></td>
|
||||
<td><textarea class="xml" id="xmlgraphics<?=$i?>" rows=5 disabled ><?=htmlspecialchars($xml2['devices']['graphics'][0])."\n".htmlspecialchars($xml2['devices']['video'][0])."\n".htmlspecialchars($xml2['devices']['audio'][0])?></textarea></td>
|
||||
<?} else {?>
|
||||
<td><textarea class="xml" id="xmlgraphics<?=$i?>" rows=5 disabled ><?=htmlspecialchars($xml2['devices']['vga'][$arrGPU['id']])?></textarea></td>
|
||||
<?}?>
|
||||
@@ -1474,7 +1476,7 @@
|
||||
<tr>
|
||||
<td>_(USB Devices)_:</td>
|
||||
<td>
|
||||
<div class="textarea" style="width: 850px">
|
||||
<div class="textarea" style="width: 780px">
|
||||
<?
|
||||
if (!empty($arrVMUSBs)) {
|
||||
foreach($arrVMUSBs as $i => $arrDev) {
|
||||
@@ -1482,7 +1484,7 @@
|
||||
<label for="usb<?=$i?>">    <input type="checkbox" name="usb[]" id="usb<?=$i?>" value="<?=htmlspecialchars($arrDev['id'])?>" <?if (count(array_filter($arrConfig['usb'], function($arr) use ($arrDev) { return ($arr['id'] == $arrDev['id']); }))) echo 'checked="checked"';?>
|
||||
/>         <input type="checkbox" name="usbopt[<?=htmlspecialchars($arrDev['id'])?>]" id="usbopt<?=$i?>" value="<?=htmlspecialchars($arrDev['id'])?>" <?if ($arrDev["startupPolicy"] =="optional") echo 'checked="checked"';?>/>     
|
||||
<input type="number" size="5" maxlength="5" id="usbboot<?=$i?>" class="narrow bootorder" <?=$bootdisable?> style="width: 50px;" name="usbboot[<?=htmlspecialchars($arrDev['id'])?>]" title="_(Boot order)_" value="<?=$arrDev['usbboot']?>" >
|
||||
<?=htmlspecialchars(substr($arrDev['name'],0,100))?> (<?=htmlspecialchars($arrDev['id'])?>)</label><br/>
|
||||
<?=htmlspecialchars(substr($arrDev['name'],0,90))?> (<?=htmlspecialchars($arrDev['id'])?>)</label><br/>
|
||||
|
||||
<?
|
||||
}
|
||||
@@ -1507,7 +1509,7 @@
|
||||
<tr>
|
||||
<td>_(Other PCI Devices)_:</td>
|
||||
<td>
|
||||
<div class="textarea" style="width: 850px">
|
||||
<div class="textarea" style="width: 780px">
|
||||
<?
|
||||
$intAvailableOtherPCIDevices = 0;
|
||||
|
||||
@@ -1581,7 +1583,7 @@
|
||||
if ($arrConfig['qemucmdline'] == "") $qemurows = 2 ; else $qemurows = 15 ;
|
||||
?>
|
||||
<td>
|
||||
<textarea id="qemucmdline" name="qemucmdline" class="xml" rows=<?=$qemurows?> style="width: 850px" onchange="QEMUChgCmd(this)"><?=htmlspecialchars($arrConfig['qemucmdline'])?> </textarea></td></tr>
|
||||
<textarea id="qemucmdline" name="qemucmdline" class="xmlqemu" rows=<?=$qemurows?> style="width: 780px" onchange="QEMUChgCmd(this)"><?=htmlspecialchars($arrConfig['qemucmdline'])."\n".htmlspecialchars($arrConfig['qemuoverride'])?> </textarea></td></tr>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
@@ -1603,7 +1605,7 @@
|
||||
?>
|
||||
</select>
|
||||
</td>
|
||||
<td></td><td></td><td><textarea class="xml" id="xmlclock" rows=5 disabled ><?=htmlspecialchars($xml2['clock'])?></textarea></td>
|
||||
<td></td><td></td><td><textarea class="xml" id="xmlclock" rows=5 disabled ><?=htmlspecialchars($xml2['clock'])."\n".htmlspecialchars($xml2['on_poweroff'])."\n".htmlspecialchars($xml2['on_reboot'])."\n".htmlspecialchars($xml2['on_crash'])?></textarea></td>
|
||||
</tr>
|
||||
<?$clockcount = 0 ;
|
||||
if (!empty($arrClocks)) {
|
||||
@@ -1673,6 +1675,19 @@
|
||||
<p>Click Create to generate the vDisks and return to the Virtual Machines page where your new VM will be created.</p>
|
||||
</blockquote>
|
||||
<?}?>
|
||||
|
||||
<table>
|
||||
<tr>
|
||||
<tr>
|
||||
<td>_(Other XML)_:</td>
|
||||
<?
|
||||
if ($arrConfig['qemucmdline'] == "") $qemurows = 2 ; else $qemurows = 15 ;
|
||||
?>
|
||||
<td>
|
||||
<textarea id="xmlother" name="xmlother" class="xml" rows=10 style="width: 780px"> <?=htmlspecialchars($xml2['devices']['emulator'][0])."\n".htmlspecialchars($xml2['devices']['console'][0])."\n".htmlspecialchars($xml2['devices']['serial'][0])."\n".htmlspecialchars($xml2['devices']['channel'][0])."\n".htmlspecialchars($xml2['devices']['input'][0])?> </textarea></td></tr>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<div class="xmlview">
|
||||
@@ -1937,8 +1952,9 @@ $(function() {
|
||||
$('.advancedview').change(function () {
|
||||
if ($(this).is(':checked')) {
|
||||
setTimeout(function() {
|
||||
var h = window.outerHeight - 550;
|
||||
editor.setSize(null,h );
|
||||
var xmlPanelHeight = window.outerHeight - 550;
|
||||
if (xmlPanelHeight < 0) xmlPanelHeight = null;
|
||||
editor.setSize(null,xmlPanelHeight);
|
||||
editor.refresh();
|
||||
}, 100);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user