mirror of
				https://github.com/xcat2/xcat-core.git
				synced 2025-10-26 08:55:24 +00:00 
			
		
		
		
	- rvitals done - frame view fixed git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@2511 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
		
			
				
	
	
		
			155 lines
		
	
	
		
			5.1 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			155 lines
		
	
	
		
			5.1 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| 
 | |
| // Utility functions to help display a wizard.  Also use wizard.css.
 | |
| 
 | |
| /* Create an array that lists the page function names and the page titles...
 | |
| $pages = array('one' => 'Page One',
 | |
| 				'two' => 'Page Two',
 | |
| 				'three' => 'Page Three',
 | |
| 				);
 | |
| */
 | |
| require_once "$TOPDIR/jq/jsonwrapper.php";
 | |
| 
 | |
| function displayWizard($pages) {
 | |
| $keys = array_keys($pages);
 | |
| 
 | |
| if (isset($_REQUEST['page'])) {		// navigate to another page in the wizard
 | |
| 	$page = $_REQUEST['page'];
 | |
| 	$action = $_REQUEST['action'];
 | |
| 	$step = (isset($_REQUEST['step']) ? $_REQUEST['step'] : 0);
 | |
| 
 | |
| 	// Figure out the function for this page.  Search the keys.
 | |
| 	if ($action == 'cancel') {
 | |
| 		$k = 0;
 | |
| 		$step = 0;
 | |
| 		// should we unset all the _SESSION variables?
 | |
| 		}
 | |
| 	else {		// some action other than cancel
 | |
| 		$k = array_search($page, $keys);
 | |
| 		if ($k === FALSE) { msg('E',"Page $page not found in the wizard."); exit; }
 | |
| 		if ($action == 'back') {
 | |
| 			$k--;
 | |
| 			$step = 0;
 | |
| 			if ($k < 0) { msg('E',"Can't go backward past the 1st page ($page)."); exit; }
 | |
| 			}
 | |
| 		elseif ($action == 'next') {
 | |
| 			$k++;
 | |
| 			if ($k >= count($pages)) { $k = 0; }	// this was the Finish button - go back to the beginning
 | |
| 			}
 | |
| 		elseif ($action == 'step') {
 | |
| 			// do the next step on this page.  Both k and step are already set correctly.
 | |
| 			}
 | |
| 		}
 | |
| 
 | |
| 	// Run the function for this page
 | |
| 	//dumpGlobals();
 | |
| 	if (isset($_REQUEST['output'])) { insertWizardOutputHeader(); }
 | |
| 	if ($action != 'step') configureButtons($k, $pages);
 | |
| 	$keys[$k]($action, $step);
 | |
| }
 | |
| 
 | |
| else {		// initial display of the wizard - show the 1st page
 | |
| 
 | |
| echo "<div id=outerWizardPane>\n";
 | |
| echo "<p id=wizardSummary>";
 | |
| $text = array();
 | |
| foreach ($keys as $k => $key) { $text[] = "<span id=$key class=NonCurrentSummaryItem>$pages[$key]</span>"; }
 | |
| echo implode(' -> ', $text);
 | |
| echo "</p>\n";
 | |
| echo "<h2 id=wizardHeading>", $pages[$keys[0]], "</h2>\n";
 | |
| 
 | |
| echo "<div id=wizardPane>\n";
 | |
| // The contents of the specific page goes in here
 | |
| $keys[0]('next', 0);
 | |
| echo "</div>\n";		// end the inner wizard pane
 | |
| 
 | |
| // Add the wizard decorations
 | |
| insertButtons(
 | |
| 		array('label' => 'Back', 'id' => 'backButton', 'onclick' => 'wizardBack();'),
 | |
| 		array('label' => 'Next', 'id' => 'nextButton', 'onclick' => 'wizardNext();'),
 | |
| 		array('label' => 'Cancel', 'onclick' => 'wizardCancel();')
 | |
| 	);
 | |
| configureButtons(0, $pages);
 | |
| echo "</div>\n";		// end the outer wizard pane
 | |
| }
 | |
| }	// end of displayWizard()
 | |
| 
 | |
| 
 | |
| //-----------------------------------------------------------------------------
 | |
| // Disable buttons as appropriate and set current page
 | |
| function configureButtons($k, $arr) {
 | |
| $keys = array_keys($arr);
 | |
| //echo "<p>currentPage=", $keys[$k], ".</p>\n";
 | |
| echo "<script type='text/javascript'>";
 | |
| 
 | |
| // Set the global variable so the buttons know which page this is
 | |
| echo "window.currentPage='$keys[$k]';";
 | |
| 
 | |
| // Move the summary indicator
 | |
| echo '$("#wizardSummary span").removeClass("CurrentSummaryItem");';
 | |
| echo '$("#wizardSummary #', $keys[$k], '").addClass("CurrentSummaryItem");';
 | |
| 
 | |
| // Change the title
 | |
| echo '$("#wizardHeading").text("', $arr[$keys[$k]], '");';
 | |
| 
 | |
| // Adjust the buttons appropriately for this page
 | |
| if ($k <= 0) { echo '$("#backButton").hide();'; }		// disable back button
 | |
| else { echo '$("#backButton").show();'; }
 | |
| if ($k >= (count($arr)-1)) { echo '$("#nextButton span").text("Finish");'; }		// disable next button
 | |
| else { echo '$("#nextButton span").text("Next");'; }
 | |
| 
 | |
| echo "</script>\n";
 | |
| }
 | |
| 
 | |
| 
 | |
| //-----------------------------------------------------------------------------
 | |
| // Display a list of tasks to be done.
 | |
| function insertProgressTable($tasks) {
 | |
| global $TOPDIR;
 | |
| echo "<table class=WizardProgressTable><ul>\n";
 | |
| foreach ($tasks as $k => $t) {
 | |
| 	if (is_array($t)) {
 | |
| 		$text = $t[0];
 | |
| 		$type = $t[1];
 | |
| 		}
 | |
| 	else {
 | |
| 		$text = $t;
 | |
| 		$type = 'onlyerrors';
 | |
| 		}
 | |
| 	if ($type == 'disabled') $cl = 'class=Disabled';
 | |
| 	else $cl = '';
 | |
| 	echo "<li id=step", $k+1, " $cl><p id=task><img id=chk src='$TOPDIR/images/unchecked-box.gif'>$text<img id=spinner src='$TOPDIR/images/invisible.gif' width=16 height=16></p>\n";
 | |
| 	if ($type == 'output') {
 | |
| 		echo "<iframe id=output></iframe></li>\n";
 | |
| 		}
 | |
| 	else { echo "<p id=output></p></li>\n"; }
 | |
| 	}
 | |
| echo "</ul></table>\n";
 | |
| }
 | |
| 
 | |
| 
 | |
| //-----------------------------------------------------------------------------
 | |
| // Instruct the client-side to move on to the next step in this page.
 | |
| function nextStep($step, $done) {
 | |
| // Was using JSON, but that is more difficult with all the utilities that can directly display errors they encounter.
 | |
| //echo json_encode(array('step' => (integer)++$step, 'done' => FALSE, 'error' => ''));
 | |
| 
 | |
| $func = (isset($_REQUEST['output']) ? 'parent.wizardStep' : 'wizardStep');
 | |
| echo "<script type='text/javascript'>", $func, "($step,", ($done?'true':'false'), ");</script>";
 | |
| }
 | |
| 
 | |
| 
 | |
| //-----------------------------------------------------------------------------
 | |
| // Used for the html that we send to the iframe
 | |
| function insertWizardOutputHeader() {
 | |
| echo <<<EOS1
 | |
| <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 Strict//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11-strict.dtd">
 | |
| <html xmlns="http://www.w3.org/1999/xhtml">
 | |
| <head>
 | |
| <LINK rel=stylesheet href='../lib/wizard.css' type='text/css'>
 | |
| </head><body>
 | |
| 
 | |
| EOS1;
 | |
| }
 | |
| 
 | |
| ?>
 |