diff --git a/xCAT-UI/css/style.css b/xCAT-UI/css/style.css
index ab1c5c6b1..ecc2fcd9f 100644
--- a/xCAT-UI/css/style.css
+++ b/xCAT-UI/css/style.css
@@ -277,7 +277,7 @@ fieldset {
margin-bottom: 5px;
border-width: 1px 0 0 0;
border-style: solid none none none;
- border-color: #D8D8D8;
+ border-color: gray;
}
.tab label {
diff --git a/xCAT-UI/js/custom/esx.js b/xCAT-UI/js/custom/esx.js
index 9a73a90be..903a2941d 100644
--- a/xCAT-UI/js/custom/esx.js
+++ b/xCAT-UI/js/custom/esx.js
@@ -376,9 +376,30 @@ esxPlugin.prototype.loadProvisionPage = function(tabId) {
$(this).parents('.ui-tabs-panel').find('.ui-state-error').remove();
var ready = true;
var errorMessage = '';
-
- // Get provision tab ID
- var thisTabId = 'esxProvisionTab' + inst;
+
+ // Get tab ID
+ var thisTabId = $(this).parents('.ui-tabs-panel').attr('id');
+
+ // Check if fields are properly filled in
+ var inputs = $('#' + thisTabId + ' input:visible');
+ for ( var i = 0; i < inputs.length; i++) {
+ if (!inputs.eq(i).val()) {
+ inputs.eq(i).css('border', 'solid #FF0000 1px');
+ ready = false;
+ } else {
+ inputs.eq(i).css('border', 'solid #BDBDBD 1px');
+ }
+ }
+
+ var selects = $('#' + thisTabId + ' select:visible');
+ for ( var i = 0; i < selects.length; i++) {
+ if (!selects.eq(i).val()) {
+ selects.eq(i).css('border', 'solid #FF0000 1px');
+ ready = false;
+ } else {
+ selects.eq(i).css('border', 'solid #BDBDBD 1px');
+ }
+ }
});
provForm.append(provisionBtn);
};
diff --git a/xCAT-UI/js/custom/kvm.js b/xCAT-UI/js/custom/kvm.js
index 39c7ca8f2..62f330c6d 100644
--- a/xCAT-UI/js/custom/kvm.js
+++ b/xCAT-UI/js/custom/kvm.js
@@ -376,9 +376,30 @@ kvmPlugin.prototype.loadProvisionPage = function(tabId) {
$(this).parents('.ui-tabs-panel').find('.ui-state-error').remove();
var ready = true;
var errorMessage = '';
-
- // Get provision tab ID
- var thisTabId = 'kvmProvisionTab' + inst;
+
+ // Get tab ID
+ var thisTabId = $(this).parents('.ui-tabs-panel').attr('id');
+
+ // Check if fields are properly filled in
+ var inputs = $('#' + thisTabId + ' input:visible');
+ for ( var i = 0; i < inputs.length; i++) {
+ if (!inputs.eq(i).val()) {
+ inputs.eq(i).css('border', 'solid #FF0000 1px');
+ ready = false;
+ } else {
+ inputs.eq(i).css('border', 'solid #BDBDBD 1px');
+ }
+ }
+
+ var selects = $('#' + thisTabId + ' select:visible');
+ for ( var i = 0; i < selects.length; i++) {
+ if (!selects.eq(i).val()) {
+ selects.eq(i).css('border', 'solid #FF0000 1px');
+ ready = false;
+ } else {
+ selects.eq(i).css('border', 'solid #BDBDBD 1px');
+ }
+ }
});
provForm.append(provisionBtn);
};
diff --git a/xCAT-UI/js/custom/zvm.js b/xCAT-UI/js/custom/zvm.js
index 3aa6ae261..207100c36 100644
--- a/xCAT-UI/js/custom/zvm.js
+++ b/xCAT-UI/js/custom/zvm.js
@@ -1294,9 +1294,14 @@ zvmPlugin.prototype.loadProvisionPage = function(tabId) {
// Append to provision tab
$('#' + tabId).append(provForm);
+ var typeFS = $('
');
+ var typeLegend = $('');
+ typeFS.append(typeLegend);
+ provForm.append(typeFS);
+
// Create provision type drop down
var provType = $('');
- var typeLabel = $('');
+ var typeLabel = $('');
var typeSelect = $('');
var provNewNode = $('');
var provExistNode = $('');
@@ -1304,7 +1309,7 @@ zvmPlugin.prototype.loadProvisionPage = function(tabId) {
typeSelect.append(provExistNode);
provType.append(typeLabel);
provType.append(typeSelect);
- provForm.append(provType);
+ typeFS.append(provType);
/**
* Create provision new node division
diff --git a/xCAT-UI/js/custom/zvmUtils.js b/xCAT-UI/js/custom/zvmUtils.js
index 57c619d9c..b5d2ce23a 100644
--- a/xCAT-UI/js/custom/zvmUtils.js
+++ b/xCAT-UI/js/custom/zvmUtils.js
@@ -1817,7 +1817,7 @@ function loadDiskPoolTable(data) {
var tableID = 'zDiskDataTable';
var table = new DataTable(tableID);
// Resource headers: volume ID, device type, start address, and size
- table.init( [ 'Hardware control point', 'Pool', 'Status', 'Volume ID', 'Device type', 'Start address', 'Size' ]);
+ table.init( [ 'HCP', 'Pool', 'Status', 'Volume ID', 'Device type', 'Start address', 'Size' ]);
// Append datatable to tab
fieldSet.append(table.object());
@@ -1877,7 +1877,7 @@ function loadNetworkTable(data) {
// Create table
var tableId = 'zNetworkDataTable';
var table = new DataTable(tableId);
- table.init( [ 'Hardware control point', 'Type', 'Name', 'Details' ]);
+ table.init( [ 'HCP', 'Type', 'Name', 'Details' ]);
// Append datatable to tab
fieldSet.append(table.object());
@@ -1892,14 +1892,16 @@ function loadNetworkTable(data) {
cols.eq(0).css('width', '20px'); // HCP column
cols.eq(1).css('width', '20px'); // Type column
cols.eq(2).css('width', '20px'); // Name column
- cols.eq(3).css('width', '600px'); // Details column
+ cols.eq(3).css({'width': '600px'}); // Details column
}
// Skip index 0 because it contains nothing
- var details = '';
+ var details = '';
for ( var i = 1; i < tmp.length; i++) {
- details += tmp[i] + '
';
+ details += tmp[i];
}
+ details += '
';
+
dTable.fnAddData( [ hcp, type, name, details ]);
}
@@ -1981,6 +1983,16 @@ function connect2VSwitch(data) {
function createZProvisionExisting(inst) {
// Create provision existing and hide it
var provExisting = $('').hide();
+
+ var vmFS = $('');
+ var vmLegend = $('');
+ vmFS.append(vmLegend);
+ provExisting.append(vmFS);
+
+ var osFS = $('');
+ var osLegend = $('');
+ osFS.append(osLegend);
+ provExisting.append(osFS);
// Create group input
var group = $('');
@@ -2017,7 +2029,7 @@ function createZProvisionExisting(inst) {
var groupInput = $('');
group.append(groupInput);
}
- provExisting.append(group);
+ vmFS.append(group);
// Create node input
var node = $('');
@@ -2025,7 +2037,7 @@ function createZProvisionExisting(inst) {
var nodeDatatable = $('Select a group to view its nodes
');
node.append(nodeLabel);
node.append(nodeDatatable);
- provExisting.append(node);
+ vmFS.append(node);
// Create operating system image input
var os = $('');
@@ -2043,7 +2055,7 @@ function createZProvisionExisting(inst) {
});
os.append(osLabel);
os.append(osInput);
- provExisting.append(os);
+ osFS.append(os);
// Create boot method drop down
var bootMethod = $('');
@@ -2057,7 +2069,7 @@ function createZProvisionExisting(inst) {
);
bootMethod.append(methoddLabel);
bootMethod.append(methodSelect);
- provExisting.append(bootMethod);
+ osFS.append(bootMethod);
// Generate tooltips
provExisting.find('div input[title]').tooltip({
@@ -2168,6 +2180,21 @@ function createZProvisionExisting(inst) {
function createZProvisionNew(inst) {
// Create provision new node division
var provNew = $('');
+
+ var vmFS = $('');
+ var vmLegend = $('');
+ vmFS.append(vmLegend);
+ provNew.append(vmFS);
+
+ var hwFS = $('');
+ var hwLegend = $('');
+ hwFS.append(hwLegend);
+ provNew.append(hwFS);
+
+ var osFS = $('');
+ var osLegend = $('');
+ osFS.append(osLegend);
+ provNew.append(osFS);
// Create group input
var group = $('');
@@ -2185,7 +2212,7 @@ function createZProvisionNew(inst) {
});
group.append(groupLabel);
group.append(groupInput);
- provNew.append(group);
+ vmFS.append(group);
// Create node input
var nodeName = $('');
@@ -2193,11 +2220,11 @@ function createZProvisionNew(inst) {
var nodeInput = $('');
nodeName.append(nodeLabel);
nodeName.append(nodeInput);
- provNew.append(nodeName);
+ vmFS.append(nodeName);
// Create user ID input
var userId = $('');
- provNew.append(userId);
+ vmFS.append(userId);
// Create hardware control point input
var hcpDiv = $('');
@@ -2225,7 +2252,7 @@ function createZProvisionNew(inst) {
});
hcpDiv.append(hcpLabel);
hcpDiv.append(hcpInput);
- provNew.append(hcpDiv);
+ vmFS.append(hcpDiv);
// Create operating system image input
var os = $('');
@@ -2243,7 +2270,7 @@ function createZProvisionNew(inst) {
});
os.append(osLabel);
os.append(osInput);
- provNew.append(os);
+ osFS.append(os);
// Create user entry input
var defaultChkbox = $('').click(function() {
@@ -2308,7 +2335,7 @@ function createZProvisionNew(inst) {
});
var userEntry = $('');
userEntry.append($('').append(defaultChkbox, 'Use default'));
- provNew.append(userEntry);
+ hwFS.append(userEntry);
// Create disk table
var diskDiv = $('');
@@ -2373,7 +2400,7 @@ function createZProvisionNew(inst) {
diskRow.append(diskMode);
// Get list of disk pools
- var thisTabId = $(this).parent().parent().parent().parent().parent().parent().attr('id');
+ var thisTabId = $(this).parents('.tab').attr('id');
var thisHcp = $('#' + thisTabId + ' input[name=hcp]').val();
var definedPools;
if (thisHcp) {
@@ -2420,7 +2447,7 @@ function createZProvisionNew(inst) {
diskDiv.append(diskLabel);
diskDiv.append(diskTable);
- provNew.append(diskDiv);
+ hwFS.append(diskDiv);
// Generate tooltips
provNew.find('div input[title]').tooltip({
diff --git a/xCAT-UI/js/nodes/nodes.js b/xCAT-UI/js/nodes/nodes.js
index de63b0e18..c6292164b 100644
--- a/xCAT-UI/js/nodes/nodes.js
+++ b/xCAT-UI/js/nodes/nodes.js
@@ -647,7 +647,7 @@ function loadNodes(data) {
$('#nodesTab').children().remove();
// Create info bar for nodes tab
- var info = createInfoBar('Double-click on a cell to edit. Click outside the table to save changes. Hit the Escape key to ignore changes.');
+ var info = createInfoBar('Double-click on a cell to edit a node\'s properties. Click outside the table to save changes. Hit the Escape key to ignore changes.');
$('#nodesTab').append(info);
// Create action bar
diff --git a/xCAT-UI/js/ui.js b/xCAT-UI/js/ui.js
index 6c2267016..7e5b7c8d6 100644
--- a/xCAT-UI/js/ui.js
+++ b/xCAT-UI/js/ui.js
@@ -613,10 +613,10 @@ function initPage() {
includeJs("js/monitor/gangliamon.js");
headers.eq(3).css(style);
loadMonitorPage();
- } else if (page == 'guide.php') {
- includeJs("js/guide/guide.js");
+ } else if (page == 'help.php') {
+ includeJs("js/help/help.js");
headers.eq(4).css(style);
- loadGuidePage();
+ loadHelpPage();
} else {
// Load nodes page by default
includeJs("js/jquery/jquery.topzindex.min.js");
@@ -822,6 +822,8 @@ function openSettings() {
if ($.cookie('xcat_theme')) {
// Select theme
oList.find('input[value="' + $.cookie('xcat_theme') + '"]').attr('checked', true);
+ } else {
+ oList.find('input[value="start"]').attr('checked', true);
}
// Open form as a dialog
diff --git a/xCAT-UI/js/xcatauth.js b/xCAT-UI/js/xcatauth.js
index 9c2bf54a6..d481f2c25 100644
--- a/xCAT-UI/js/xcatauth.js
+++ b/xCAT-UI/js/xcatauth.js
@@ -71,7 +71,7 @@ function onlogin(data, txtStatus) {
// Remembered what page they were trying to go to
window.location = window.location.pathname;
} else {
- window.location = 'guide.php';
+ window.location = 'help.php';
}
// Set the logonflag
diff --git a/xCAT-UI/lib/ui.php b/xCAT-UI/lib/ui.php
index 80588725d..163785eb8 100644
--- a/xCAT-UI/lib/ui.php
+++ b/xCAT-UI/lib/ui.php
@@ -29,7 +29,7 @@ function loadPage() {
Configure
Provision
Monitor
- Guide
+ Help
';
// User name and log out section
diff --git a/xCAT-UI/xcat/plugins/web.pm b/xCAT-UI/xcat/plugins/web.pm
index 27e41c0dc..7466db59f 100644
--- a/xCAT-UI/xcat/plugins/web.pm
+++ b/xCAT-UI/xcat/plugins/web.pm
@@ -2181,7 +2181,13 @@ sub web_getdefaultuserentry {
$group = 'default';
}
- my $entry = `ssh $hcp "cat /opt/zhcp/conf/$group.direct"`;
+ my $entry;
+ if (!(`ssh $hcp "test -e /opt/zhcp/conf/$group.direct && echo 'File exists'"`)) {
+ $entry = `ssh $hcp "cat /opt/zhcp/conf/default.direct"`;
+ } else {
+ $entry = `ssh $hcp "cat /opt/zhcp/conf/$group.direct"`;
+ }
+
$callback->( { data => $entry } );
}
1;