vm manager: consolidate logic to determine vm icon url + fix vm icon display for custom icons

This commit is contained in:
Eric Schultz
2018-01-25 10:28:28 -06:00
parent b88260c7df
commit 1a812dfe45
4 changed files with 24 additions and 37 deletions

View File

@@ -214,17 +214,7 @@ if ($action) {
$contextMenus[] = sprintf("addVMContext('%s', '%s', '%s', '%s', '%s', '%s');", addslashes($name), addslashes($uuid), addslashes($template), $state, addslashes($vnc), addslashes($log));
// fallback icon for users that created VMs before metadata support was added
$vmicon = '/plugins/dynamix.vm.manager/templates/images/' . ($lv->domain_get_clock_offset($res) == 'localtime' ? 'windows.png' : 'linux.png');
$vmtemplateicon = $lv->_get_single_xpath_result($res, '//domain/metadata/*[local-name()=\'vmtemplate\']/@icon');
if (!empty($vmtemplateicon)) {
if (file_exists($vmtemplateicon)) {
$vmicon = $vmtemplateicon;
} elseif (file_exists("$docroot/plugins/dynamix.vm.manager/templates/images/".$vmtemplateicon)) {
$vmicon = "/plugins/dynamix.vm.manager/templates/images/".$vmtemplateicon;
}
}
$vmicon = $lv->domain_get_icon_url($res);
//Domain information
echo "<tr style='background-color:".bcolor($i)."'>
@@ -246,8 +236,7 @@ if ($action) {
// Log file
if (!empty($log)) {
echo "<td><a class='log' href='#'
onclick=\"openWindow('/webGui/scripts/tail_log&arg1=".addslashes(htmlspecialchars($log))."', '".addslashes(htmlspecialchars($name))." QEMU Log', 600, 900); return false;\"><img class='basic' src='/webGui/icons/log.png'/></a></td>";
echo "<td><a class='log' href='#' onclick=\"openWindow('/webGui/scripts/tail_log&arg1=".addslashes(htmlspecialchars($log))."', '".addslashes(htmlspecialchars($name))." QEMU Log', 600, 900); return false;\"><img class='basic' src='/webGui/icons/log.png'/></a></td>";
} else {
echo "<td><img class='basic' src='/webGui/icons/log.png' style='opacity: 0.3' title='Log not available'/></a></td>";
}

View File

@@ -38,22 +38,11 @@ if (!empty($_GET['uuid'])) {
return;
}
$strIcon = $lv->_get_single_xpath_result($res, '//domain/metadata/*[local-name()=\'vmtemplate\']/@icon');
if (!empty($strIcon)) {
if (is_file($strIcon)) {
$strIconURL = $strIcon;
} elseif (is_file("$docroot/plugins/dynamix.vm.manager/templates/images/" . $strIcon)) {
$strIconURL = '/plugins/dynamix.vm.manager/templates/images/' . $strIcon;
}
} else {
$strIcon = ($lv->domain_get_clock_offset($res) == 'localtime' ? 'windows.png' : 'linux.png');
$strIconURL = '/plugins/dynamix.vm.manager/templates/images/' . $strIcon;
}
$strIconURL = $lv->domain_get_icon_url($res);
$arrLoad = [
'name' => $lv->domain_get_name($res),
'icon' => $strIcon,
'icon' => basename($strIconURL),
'autostart' => $lv->domain_get_autostart($res),
'form' => $arrAllTemplates[$strSelectedTemplate]['form']
];

View File

@@ -1244,6 +1244,25 @@
return ($tmp) ? $tmp : $this->_set_last_error();
}
function domain_get_icon_url($domain) {
global $docroot;
$strIcon = $this->_get_single_xpath_result($domain, '//domain/metadata/*[local-name()=\'vmtemplate\']/@icon');
if (empty($strIcon)) {
$strIcon = ($this->domain_get_clock_offset($domain) == 'localtime' ? 'windows.png' : 'linux.png');
}
if (is_file($strIcon)) {
return $strIcon;
} elseif (is_file("$docroot/plugins/dynamix.vm.manager/templates/images/" . $strIcon)) {
return '/plugins/dynamix.vm.manager/templates/images/' . $strIcon;
} elseif (is_file("$docroot/boot/config/plugins/dynamix.vm.manager/templates/images/" . $strIcon)) {
return '/boot/config/plugins/dynamix.vm.manager/templates/images/' . $strIcon;
}
return '/plugins/dynamix.vm.manager/templates/images/default.png';
}
function domain_change_xml($domain, $xml) {
$dom = $this->get_domain_object($domain);

View File

@@ -142,17 +142,7 @@ foreach ($allVMs as $name) {
$contextMenus[] = sprintf("addVMContext('%s', '%s', '%s', '%s', '%s', '%s');", addslashes($name), addslashes($uuid), addslashes($template), $state, addslashes($vnc), addslashes($log));
// fallback icon for users that created VMs before metadata support was added
$vmicon = '/plugins/dynamix.vm.manager/templates/images/' . ($lv->domain_get_clock_offset($res) == 'localtime' ? 'windows.png' : 'linux.png');
$vmtemplateicon = $lv->_get_single_xpath_result($res, '//domain/metadata/*[local-name()=\'vmtemplate\']/@icon');
if (!empty($vmtemplateicon)) {
if (file_exists($vmtemplateicon)) {
$vmicon = $vmtemplateicon;
} elseif (file_exists("$docroot/plugins/dynamix.vm.manager/templates/images/" . $vmtemplateicon)) {
$vmicon = '/plugins/dynamix.vm.manager/templates/images/' . $vmtemplateicon;
}
}
$vmicon = $lv->domain_get_icon_url($res);
print "
<div class=\"Panel $status\">