diff options
Diffstat (limited to 'index.html')
-rw-r--r-- | index.html | 1024 |
1 files changed, 512 insertions, 512 deletions
@@ -1,513 +1,513 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd" >
-<html xmlns="http://www.w3.org/1999/xhtml">
-<!-- $Id: index.html 595 2015-04-17 09:50:36Z imoore76 $ -->
-<!-- Copyright (C) 2010-2015 Ian Moore (imoore76 at yahoo dot com) -->
-<head>
-
- <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"/>
- <meta http-equiv="content-type" content="application/xhtml+xml; charset=UTF-8" />
- <meta http-equiv="Expires" content="0"/>
- <meta http-equiv="Cache-Control" content ="no-cache"/>
- <meta http-equiv="Cache-Control" content ="no-store, must-revalidate, max-age=0"/>
- <meta http-equiv="Cache-Control" content ="post-check=0, pre-check=0"/>
- <meta http-equiv="Pragma" content="no-cache"/>
-
-
- <!-- Icon && title -->
- <link rel="shortcut icon" href="images/vbox/OSE/VirtualBox_win.ico"/>
- <link rel="icon" href="images/vbox/OSE/VirtualBox_win.ico"/>
- <title>phpVirtualBox - VirtualBox Web Console</title>
-
-
- <!-- Style sheets -->
- <link rel="stylesheet" type="text/css" href="css/jquery-ui.css"/>
- <link rel="stylesheet" type="text/css" href="css/jquery.projectPlugins.css"/>
- <link rel="stylesheet" type="text/css" href="css/tipped.css" />
- <link rel="stylesheet" type="text/css" href="css/layout.css"/>
-
- <!-- External or jQuery related scripts -->
- <script type="text/javascript" src="js/jquery-1.11.2.min.js"></script>
- <script type="text/javascript" src="js/jquery-ui-1.11.4.min.js"></script>
- <script type="text/javascript" src="js/jquery.tipped-2.1b.min.js"></script>
- <script type="text/javascript" src="js/jquery.scrollTo-min.js"></script>
- <script type="text/javascript" src="js/jquery.jec-1.3.1.js"></script>
-
- <!-- Oracle RDP Control -->
- <script type="text/javascript" src="rdpweb/webclient.js"></script>
- <script type="text/javascript" src="rdpweb/swfobject.js"></script>
-
- <!-- Internal / project related scripts -->
- <script type="text/javascript" src="endpoints/config.js"></script>
- <script type="text/javascript" src="js/jquery.projectPlugins.js"></script>
- <script type="text/javascript" src="js/phpvirtualbox.js"></script>
- <script type="text/javascript" src="js/utils.js"></script>
- <script type="text/javascript" src="js/eventlistener.js"></script>
- <script type="text/javascript" src="js/chooser.js"></script>
- <script type="text/javascript" src="js/datamediator.js"></script>
- <script type="text/javascript" src="js/dialogs.js"></script>
- <script type="text/javascript" src="js/canvasimages.js"></script>
-
-
- <!-- Main Setup -->
- <script type='text/javascript'>
-
- $(document).ready(function(){
-
- /* Synchronously load requirements */
- for(var i = 0; i < vboxEndpointConfig.require.length; i++) {
- $.ajax({
- type: "GET",
- url: vboxEndpointConfig.require[i],
- async: false,
- dataType: "script"
- });
- }
-
- /*
- * Parse cookies
- */
- vboxParseCookies();
-
- /*
- *
- * Begin sanity checks
- *
- */
-
-
- /**
- * Check that someone isn't accessing this from their local filesystem
- */
- try {
- if(window.location.toString().search('file:') == 0) {
- vboxAlert("You are accessing phpVirtualBox from your local filesystem.\
- phpVirtualBox must be accessed through your web browser. E.g. \
- http://localhost/phpVirtualBox (its actual URL may vary).");
- return;
- }
- } catch(err) {
- // noop
- }
-
-
- /*
- * If everything loaded correctly, trans() should be defined in
- * js/language.php and language data should be present.
- * If not, there is a PHP error somewhere.
- */
- if(typeof trans != "function" || typeof __vboxLangData == "undefined") {
- trans = function(s){return s;};
- vboxAlert("An unknown PHP error occurred. This is most likely a syntax error in\
- config.php in phpVirtualBox's folder. The most common errors are an unclosed\
- quote or a missing\
- semicolon in a configuration item that has been entered (e.g.\
- location, username, or password).<p>Depending on your PHP configuration,\
- navigating directly to <a href='config.php'>config.php</a> in your web\
- browser may display the PHP error message.</p>\
- <p>If find that this is not the case,\
- or have no idea what this error message means, please raise the issue\
- at <a href='http://sourceforge.net/p/phpvirtualbox/discussion/help/'\
- >http://sourceforge.net/p/phpvirtualbox/discussion/help/",{'width':'50%'});
- return;
- }
-
- // Sanity checks passed. Begin processing
-
- // Check for server setting (?server=xxxx in URL)
- if(location.search) {
- var query = location.search.substr(1).split('&');
- for(var kv in query) {
- kv = query[kv].split('=');
- if(kv[0] == 'server') {
- vboxSetCookie('vboxServer',unescape(kv[1]));
- location = location.href.substr(0,location.href.length-location.search.length);
- return;
- }
- }
- }
-
-
-
- /*
- * Resizable panes functionality
- */
- $('#vboxResizeBar').draggable({cursor:(jQuery.browser.opera ? 'e-resize' : 'col-resize'),axis:'x',zIndex:99,helper:function(){
-
- $('#vboxResizeBarTmp').remove();
- var h = $('#vboxResizeBar').parent().height();
- return $('#vboxResizeBar').clone(false)
- .attr({'id':'vboxResizeBarTmp'}).unbind('mouseleave')
- .css({'background':'#ccc','height':h+'px'});
-
- },scroll:false,'start':function(e,ui){
-
- $('#vboxResizeOverlay').remove();
- $('body').disableSelection().css({'cursor':(jQuery.browser.opera ? 'e-resize' : 'col-resize')});
- $('#vboxPane').append($('<div />').attr({'id':'vboxResizeOverlay','style':'width:100%;height:100%;border:0px;margin:0px;padding:0px;position:absolute;top:0px;left:0px;z-index:10;cursor:'+(jQuery.browser.opera ? 'e-resize' : 'col-resize')}));
- $('#vboxResizeBar').data('vboxX',e.pageX);
-
- },'stop':function(e){
-
- $('#vboxResizeBarTmp').remove();
- $('#vboxResizeOverlay').remove();
- $('body').enableSelection().css({'cursor':'default'});
-
-
- var nx = $('#vboxChooserDiv').width() + (e.pageX - $('#vboxResizeBar').data('vboxX'));
- $('#vboxChooserDiv').css('width',(nx)+'px');
-
- vboxSetLocalDataItem("vboxPaneX",($('#vboxChooserDiv').width()));
-
- $('#vboxChooserPane').css('width',$('#vboxChooserDiv').css('width'));
-
- $(window).trigger('resize');
-
- }}).css('cursor',(jQuery.browser.opera ? 'e-resize' : 'col-resize')).parent().disableSelection();
-
-
-
- /*
- progress resize n / s
- */
- $('#vboxResizeBarProgress').draggable({cursor:(jQuery.browser.opera ? 'n-resize' : 'row-resize'),axis:'y',zIndex:99,helper:function(){
-
- $('#vboxResizeBarTmp').remove();
- return $('#vboxResizeBarProgress').clone(false)
- .attr({'id':'vboxResizeBarTmp'})
- .css({'background':'#ccc','position':'absolute','left':'0','right':'0','margin-left':'auto','margin-right':'auto'});
-
- },scroll:false,'start':function(e,ui){
-
- $('#vboxResizeOverlay').remove();
- $('body').disableSelection().css({'cursor':(jQuery.browser.opera ? 'n-resize' : 'row-resize')});
- $('#vboxPane').append($('<div />').attr({'id':'vboxResizeOverlay','style':'width:100%;height:100%;border:0px;margin:0px;padding:0px;position:absolute;top:0px;left:0px;z-index:10;cursor:'+(jQuery.browser.opera ? 'n-resize' : 'row-resize')}));
- $('#vboxResizeBarProgress').data('vboxY',e.pageY);
-
- },'stop':function(e){
-
- $('#vboxResizeBarTmp').remove();
- $('#vboxResizeOverlay').remove();
- $('body').enableSelection().css({'cursor':'default'});
-
-
- var nx = $('#vboxProgressOps').height() + ($('#vboxResizeBarProgress').data('vboxY') - e.pageY);
- $('#vboxProgressOps').css({'height':(nx)+'px','overflow':'auto'}).parent().css({'height':(nx)+'px'});
-
- vboxSetLocalDataItem("vboxPaneY",($('#vboxProgressOps').height()));
-
- $('#vboxResizeBarProgressEW').css({'height':(vboxGetLocalDataItem("vboxPaneY")-4)+'px'});
-
- $(window).trigger('resize');
-
- }}).css('cursor',(jQuery.browser.opera ? 'n-resize' : 'row-resize')).parent().disableSelection();
-
- /*
- Progress resize E / W
- */
- var vboxOpsPaneEW = 400;
- if(vboxGetLocalDataItem('vboxOpsPaneEW')) {
- vboxOpsPaneEW = vboxGetLocalDataItem('vboxOpsPaneEW');
- } else {
- vboxSetLocalDataItem('vboxOpsPaneEW', vboxOpsPaneEW);
- }
- $('#vboxResizeBarProgressEW').css({'left':vboxOpsPaneEW+'px','top':'0'});
- // inject CSS
- $('head').append('<style type="text/css" id="vboxProgressOpsStyle">div.vboxProgressOpTitle { width: '+vboxOpsPaneEW+'px; }</style>');
-
- // Show draggablebar onmouseenter
- $('#vboxProgressOps').hover(function(){
- if($(this).children().length == 1) return;
- $('#vboxResizeBarProgressEW').css({'display':'inline-block','height':($(this)[0].scrollHeight-2)+'px'});
- },function(){
- $('#vboxResizeBarProgressEW').css({'display':'none'});
- });
-
- // Draggable bar
- $('#vboxResizeBarProgressEW').draggable({cursor:(jQuery.browser.opera ? 'e-resize' : 'col-resize'),axis:'x',zIndex:99,helper:function(){
-
- $('#vboxResizeBarTmp').remove();
-
- return $('#vboxResizeBarProgressEW').clone(false)
- .attr({'id':'vboxResizeBarProgressEWTmp'}).css({'background':'#ccc'});
-
- },scroll:false,'start':function(e,ui){
-
- $('#vboxResizeOverlay').remove();
- $('body').disableSelection().css({'cursor':(jQuery.browser.opera ? 'e-resize' : 'col-resize')});
- $('#vboxPane').append($('<div />').attr({'id':'vboxResizeOverlay','style':'width:100%;height:100%;border:0px;margin:0px;padding:0px;position:absolute;top:0px;left:0px;z-index:10;cursor:'+(jQuery.browser.opera ? 'e-resize' : 'col-resize')}));
- $('#vboxResizeBarProgressEW').data('vboxX',e.pageX);
-
- },'stop':function(e){
-
- $('#vboxResizeBarTmp').remove();
- $('#vboxResizeOverlay').remove();
- $('body').enableSelection().css({'cursor':'default'});
-
- var nx = parseInt(vboxGetLocalDataItem('vboxOpsPaneEW')) + (e.pageX - $('#vboxResizeBarProgressEW').data('vboxX'));
- $('#vboxResizeBarProgressEW').css({'left':nx+'px'});
- vboxSetLocalDataItem('vboxOpsPaneEW',nx);
-
- // re-inject CSS
- $('#vboxProgressOpsStyle').empty().remove();
- $('head').append('<style type="text/css" id="vboxProgressOpsStyle">div.vboxProgressOpTitle { width: '+nx+'px; }</style>');
-
-
- }}).css('cursor',(jQuery.browser.opera ? 'e-resize' : 'col-resize'));
-
- /*
- * Resize panes when the window changes sizes
- */
- $(window).resize(function(){
-
- // Hide
- $('#vboxChooserResizePane').children().children().css({'display':'none'});
-
- var h = $('#vboxResize').innerHeight();
- $('#vboxChooserResizePane').children().children().css({'height':h+'px','overflow-y':'auto','overflow-x':'hidden','display':''});
-
- // special for resize bar
- $('#vboxResizeBar').css({'height':(h-10)+'px'});
-
-
- });
-
-
- /*
- * Refresh data when host changes
- */
- $('#vboxPane').on('hostChange',function(){
-
- var l = new vboxLoader();
- l.add('getConfig',function(d){$('#vboxPane').data('vboxConfig',d.responseData);$('#vboxPane').trigger('configLoaded');});
- l.add('vboxGetGuestOSTypes',function(d){$('#vboxPane').data('vboxOSTypes',d.responseData);});
- l.add('vboxSystemPropertiesGet',function(d){$('#vboxPane').data('vboxSystemProperties',d.responseData);});
- l.add('vboxGetMedia',function(d){$('#vboxPane').data('vboxMedia',d.responseData);});
- l.add('hostGetDetails',function(d){$('#vboxPane').data('vboxHostDetails',d.responseData);});
- l.add('vboxRecentMediaGet',function(d){$('#vboxPane').data('vboxRecentMedia',d.responseData);});
- l.add('vboxRecentMediaPathsGet',function(d){$('#vboxPane').data('vboxRecentMediaPaths',d.responseData);});
- l.add('vboxGetEnumerationMap',function(d){$('#vboxPane').data('vboxMediumVariants',d.responseData);},{'class':'MediumVariant','ValueMap':1});
-
- l.onLoad = function(){
- $('#vboxPane').trigger('hostChanged');
- };
-
- l.run();
-
- });
-
-
- /*
- * Load panes all and data after valid login
- */
- $('#vboxPane').on('login', function() {
-
- var l = new vboxLoader();
-
- // Get data and store it using data()
- l.add('getConfig',function(d){$('#vboxPane').data('vboxConfig',d.responseData);$('#vboxPane').trigger('configLoaded');});
- l.add('vboxGetGuestOSTypes',function(d){$('#vboxPane').data('vboxOSTypes',d.responseData);});
- l.add('vboxSystemPropertiesGet',function(d){$('#vboxPane').data('vboxSystemProperties',d.responseData);});
- l.add('vboxGetMedia',function(d){$('#vboxPane').data('vboxMedia',d.responseData);});
- l.add('hostGetDetails',function(d){$('#vboxPane').data('vboxHostDetails',d.responseData);});
- l.add('vboxRecentMediaGet',function(d){$('#vboxPane').data('vboxRecentMedia',d.responseData);});
- l.add('vboxRecentMediaPathsGet',function(d){$('#vboxPane').data('vboxRecentMediaPaths',d.responseData);});
- l.add('vboxGetEnumerationMap',function(d){$('#vboxPane').data('vboxMediumVariants',d.responseData);},{'class':'MediumVariant','ValueMap':1});
-
- // Load HTML panes and append them to their respective locations
- l.addFileToDOM('panes/chooser.html',$('#vboxChooserPane'));
- l.addFileToDOM('panes/topmenu.html');
- l.addFileToDOM('panes/toolbar.html');
- l.addFileToDOM('panes/tabs.html',$('#vboxPaneTabContent'));
-
- l.onLoad = function() {
-
-
- // Resize to last setting
- if(vboxGetLocalDataItem('vboxPaneX')) {
- $('#vboxChooserDiv').css('width',(vboxGetLocalDataItem('vboxPaneX'))+'px');
- } else {
- vboxSetLocalDataItem('vboxPaneX', $('#vboxChooserDiv').innerWidth());
- }
-
- if(vboxGetLocalDataItem('vboxPaneY')) {
- var nx = vboxGetLocalDataItem('vboxPaneY');
- $('#vboxProgressOps').css({'height':(nx)+'px'}).parent().css({'height':(nx)+'px'});
- } else {
- vboxSetLocalDataItem('vboxPaneY', $('#vboxProgressOps').height());
- }
- $('#vboxResizeBarProgressEW').css({'height':(vboxGetLocalDataItem("vboxPaneY")-4)+'px'});
-
- // Let everyone know that no vms are selected
- $('#vboxPane').trigger('vmSelectionListChanged',[vboxChooser]);
-
- };
-
- // Trigger resize event to size panes
- l.onShow = function() { $(window).trigger('resize'); };
-
- l.hideRoot = true;
- l.run();
-
- });
-
- /**
- * Check for valid session and display login box if one does not exist
- * @params {Boolean} tried - true if login was attempted before this call
- */
- var vboxCheckSession = function(tried) {
-
- // check session info
- if($('#vboxPane').data('vboxSession') && $('#vboxPane').data('vboxSession').valid) {
-
- // Session is valid, trigger login
- $('#vboxPane').trigger('login');
- return;
- }
-
- // Was there an error? Assume it was displayed and just return from function
- if($('#vboxPane').data('vboxSession') && !$('#vboxPane').data('vboxSession').success) {
- return;
- }
-
-
- // No valid session. Show login pane
- $('#vboxLogin').find('input[name=password]').val('');
- $('#vboxLogin').dialog('open');
-
- if(!$('#vboxLogin').find('input[name=username]').val()) $('#vboxLogin').find('input[name=username]').focus();
- else $('#vboxLogin').find('input[name=password]').focus();
-
- // Display error if we tried to log in
- if(tried) {
- vboxAlert(trans('Invalid username or password.','UIUsers'),{'width':'400px'});
- }
-
- };
-
- /** Load login form */
- var login = new vboxLoader();
- login.add('getSession',function(d){$('#vboxPane').data('vboxSession',$.extend({'success':d.success},d.responseData));});
- login.addFileToDOM('panes/login.html');
- login.onLoad = function(loader) {
-
- var buttons = {};
- buttons[trans('Log in','UIUsers')] = function() {
-
- // Login button triggers login attempt
- var u = $('#vboxLogin').find('input[name=username]').val();
- var p = $('#vboxLogin').find('input[name=password]').val();
- if(!(u&&p)) return;
- $('#vboxLogin').dialog('close');
-
- // A valid login should create a valid session
- var trylogin = new vboxLoader();
- trylogin.add('login',function(d){$('#vboxPane').data('vboxSession',$.extend({'success':d.success},d.responseData));},{'u':u,'p':p});
- trylogin.onLoad = function() { vboxCheckSession(true);};
- trylogin.run();
- };
-
- // Create but do not open dialog
- if($.browser.webkit) heightadd = 5;
- else heightadd = 0;
- $('#vboxLogin').dialog({'closeOnEscape':false,'width':300,'height':'auto','buttons':buttons,'modal':true,'autoOpen':false,'dialogClass':'vboxDialogContent','title':'<img src="images/vbox/OSE/about_16px.png" class="vboxDialogTitleIcon" /> phpVirtualBox :: ' + trans('Log in','UIUsers')});
- $('#vboxLogin').find('input[name=username]').first().focus();
-
- // Trick loader into not showing root pane again
- loader.hideRoot = false;
-
- // Login form is loaded, run check for valid session
- vboxCheckSession();
-
- };
- login.hideRoot = true;
- login.run();
-
- }); // </ document.ready event >
-
- </script>
-
-</head>
-<body>
-<div id='vboxPane' style='height: 100%; margin: 0px; padding: 0px;'>
-<table id='vboxTableMain' cellpadding=0 cellspacing=0 style="height: 100%; width: 100%; padding: 0px; margin: 0px; border: 0px; border-spacing: 0px;">
- <tr style='vertical-align: middle;'>
- <td style='height:20px;border:0px;padding:0px;margin:0px;border-spacing:0px;'>
- <div id='vboxMenu'>
- <!--
-
- Top menu bar
-
- -->
- </div>
- </td>
- </tr>
- <tr style='vertical-align: middle;'>
- <td id='vboxToolbarMain' style='height: 1%' class='vboxToolbarGrad'>
- <!--
-
- VM list toolbar
-
- -->
- <div id='vboxPaneToolbar'></div>
- <!--
-
- Tabs / buttons
-
- -->
- <div id='vboxTabsList'></div>
- </td>
- </tr>
- <tr style='vertical-align: top;'>
- <td style='border:0px;padding:0px;margin:0px;border-spacing:0px;' id='vboxResize'>
- <table style='width:100%;border:0px;padding:0px;border-spacing:0px;'>
- <tr id='vboxChooserResizePane' style='vertical-align: top;'>
- <td id="vboxChooserPane" style='padding:0px;border-spacing:0px;margin:0px;'>
- <!--
-
- VM List
-
- -->
- </td>
- <td id='vboxResizeTD' style='border: 0px; margin: 0px; padding: 0px; text-align: center;'>
- <div style='margin:0px;padding:0px;width:4px;height:100%;'>
- <div style='position: absolute; margin: 0px; padding:2px; width: 0px; height: 100%;' id='vboxResizeBar' ></div>
- </div>
- </td>
- <td id="vboxPaneTabContent" style='width:100%;border:0px;padding:0px;border-spacing:0px;margin:0px'>
- <!--
-
- Tab content
-
- -->
- </td>
- </tr>
- </table>
- </td>
- </tr>
- <!--
- Progress operation list resize bar
- -->
- <tr style='padding: 0px; margin: 0px; vertical-align: middle;'>
- <td id='vboxResizeTDProgress' style='border: 0px; margin: 0px; padding: 0px; text-align: center; height: 5px; vertical-align: middle'>
- <div style='width:99%; margin:0 auto; padding:2px;' id='vboxResizeBarProgress' ></div>
- </td>
- </tr>
- <tr style='vertical-align: top; padding: 0px;'>
- <td style='border:0px;padding:0px;margin:0px;border-spacing:0px;height:1%'>
- <div id='vboxProgressOps' style='height:80px;overflow:auto;position:relative'>
- <!--
- Resize bar for E/ W
- -->
- <div style="position:absolute;z-index:1;margin:0px;border:0px;padding:1px;width: 0px;background:#aaa;display:none;" id='vboxResizeBarProgressEW' ></div>
- <!--
-
- Progress operation list
-
- -->
- </div>
- </td>
- </tr>
-</table>
-</div>
-</body>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd" > +<html xmlns="http://www.w3.org/1999/xhtml"> +<!-- $Id: index.html 595 2015-04-17 09:50:36Z imoore76 $ --> +<!-- Copyright (C) 2010-2015 Ian Moore (imoore76 at yahoo dot com) --> +<head> + + <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"/> + <meta http-equiv="content-type" content="application/xhtml+xml; charset=UTF-8" /> + <meta http-equiv="Expires" content="0"/> + <meta http-equiv="Cache-Control" content ="no-cache"/> + <meta http-equiv="Cache-Control" content ="no-store, must-revalidate, max-age=0"/> + <meta http-equiv="Cache-Control" content ="post-check=0, pre-check=0"/> + <meta http-equiv="Pragma" content="no-cache"/> + + + <!-- Icon && title --> + <link rel="shortcut icon" href="images/vbox/OSE/VirtualBox_win.ico"/> + <link rel="icon" href="images/vbox/OSE/VirtualBox_win.ico"/> + <title>phpVirtualBox - VirtualBox Web Console</title> + + + <!-- Style sheets --> + <link rel="stylesheet" type="text/css" href="css/jquery-ui.css"/> + <link rel="stylesheet" type="text/css" href="css/jquery.projectPlugins.css"/> + <link rel="stylesheet" type="text/css" href="css/tipped.css" /> + <link rel="stylesheet" type="text/css" href="css/layout.css"/> + + <!-- External or jQuery related scripts --> + <script type="text/javascript" src="js/jquery-1.11.2.min.js"></script> + <script type="text/javascript" src="js/jquery-ui-1.11.4.min.js"></script> + <script type="text/javascript" src="js/jquery.tipped-2.1b.min.js"></script> + <script type="text/javascript" src="js/jquery.scrollTo-min.js"></script> + <script type="text/javascript" src="js/jquery.jec-1.3.1.js"></script> + + <!-- Oracle RDP Control --> + <script type="text/javascript" src="rdpweb/webclient.js"></script> + <script type="text/javascript" src="rdpweb/swfobject.js"></script> + + <!-- Internal / project related scripts --> + <script type="text/javascript" src="endpoints/config.js"></script> + <script type="text/javascript" src="js/jquery.projectPlugins.js"></script> + <script type="text/javascript" src="js/phpvirtualbox.js"></script> + <script type="text/javascript" src="js/utils.js"></script> + <script type="text/javascript" src="js/eventlistener.js"></script> + <script type="text/javascript" src="js/chooser.js"></script> + <script type="text/javascript" src="js/datamediator.js"></script> + <script type="text/javascript" src="js/dialogs.js"></script> + <script type="text/javascript" src="js/canvasimages.js"></script> + + + <!-- Main Setup --> + <script type='text/javascript'> + + $(document).ready(function(){ + + /* Synchronously load requirements */ + for(var i = 0; i < vboxEndpointConfig.require.length; i++) { + $.ajax({ + type: "GET", + url: vboxEndpointConfig.require[i], + async: false, + dataType: "script" + }); + } + + /* + * Parse cookies + */ + vboxParseCookies(); + + /* + * + * Begin sanity checks + * + */ + + + /** + * Check that someone isn't accessing this from their local filesystem + */ + try { + if(window.location.toString().search('file:') == 0) { + vboxAlert("You are accessing phpVirtualBox from your local filesystem.\ + phpVirtualBox must be accessed through your web browser. E.g. \ + http://localhost/phpVirtualBox (its actual URL may vary)."); + return; + } + } catch(err) { + // noop + } + + + /* + * If everything loaded correctly, trans() should be defined in + * js/language.php and language data should be present. + * If not, there is a PHP error somewhere. + */ + if(typeof trans != "function" || typeof __vboxLangData == "undefined") { + trans = function(s){return s;}; + vboxAlert("An unknown PHP error occurred. This is most likely a syntax error in\ + config.php in phpVirtualBox's folder. The most common errors are an unclosed\ + quote or a missing\ + semicolon in a configuration item that has been entered (e.g.\ + location, username, or password).<p>Depending on your PHP configuration,\ + navigating directly to <a href='config.php'>config.php</a> in your web\ + browser may display the PHP error message.</p>\ + <p>If find that this is not the case,\ + or have no idea what this error message means, please raise the issue\ + at <a href='http://sourceforge.net/p/phpvirtualbox/discussion/help/'\ + >http://sourceforge.net/p/phpvirtualbox/discussion/help/",{'width':'50%'}); + return; + } + + // Sanity checks passed. Begin processing + + // Check for server setting (?server=xxxx in URL) + if(location.search) { + var query = location.search.substr(1).split('&'); + for(var kv in query) { + kv = query[kv].split('='); + if(kv[0] == 'server') { + vboxSetCookie('vboxServer',unescape(kv[1])); + location = location.href.substr(0,location.href.length-location.search.length); + return; + } + } + } + + + + /* + * Resizable panes functionality + */ + $('#vboxResizeBar').draggable({cursor:(jQuery.browser.opera ? 'e-resize' : 'col-resize'),axis:'x',zIndex:99,helper:function(){ + + $('#vboxResizeBarTmp').remove(); + var h = $('#vboxResizeBar').parent().height(); + return $('#vboxResizeBar').clone(false) + .attr({'id':'vboxResizeBarTmp'}).unbind('mouseleave') + .css({'background':'#ccc','height':h+'px'}); + + },scroll:false,'start':function(e,ui){ + + $('#vboxResizeOverlay').remove(); + $('body').disableSelection().css({'cursor':(jQuery.browser.opera ? 'e-resize' : 'col-resize')}); + $('#vboxPane').append($('<div />').attr({'id':'vboxResizeOverlay','style':'width:100%;height:100%;border:0px;margin:0px;padding:0px;position:absolute;top:0px;left:0px;z-index:10;cursor:'+(jQuery.browser.opera ? 'e-resize' : 'col-resize')})); + $('#vboxResizeBar').data('vboxX',e.pageX); + + },'stop':function(e){ + + $('#vboxResizeBarTmp').remove(); + $('#vboxResizeOverlay').remove(); + $('body').enableSelection().css({'cursor':'default'}); + + + var nx = $('#vboxChooserDiv').width() + (e.pageX - $('#vboxResizeBar').data('vboxX')); + $('#vboxChooserDiv').css('width',(nx)+'px'); + + vboxSetLocalDataItem("vboxPaneX",($('#vboxChooserDiv').width())); + + $('#vboxChooserPane').css('width',$('#vboxChooserDiv').css('width')); + + $(window).trigger('resize'); + + }}).css('cursor',(jQuery.browser.opera ? 'e-resize' : 'col-resize')).parent().disableSelection(); + + + + /* + progress resize n / s + */ + $('#vboxResizeBarProgress').draggable({cursor:(jQuery.browser.opera ? 'n-resize' : 'row-resize'),axis:'y',zIndex:99,helper:function(){ + + $('#vboxResizeBarTmp').remove(); + return $('#vboxResizeBarProgress').clone(false) + .attr({'id':'vboxResizeBarTmp'}) + .css({'background':'#ccc','position':'absolute','left':'0','right':'0','margin-left':'auto','margin-right':'auto'}); + + },scroll:false,'start':function(e,ui){ + + $('#vboxResizeOverlay').remove(); + $('body').disableSelection().css({'cursor':(jQuery.browser.opera ? 'n-resize' : 'row-resize')}); + $('#vboxPane').append($('<div />').attr({'id':'vboxResizeOverlay','style':'width:100%;height:100%;border:0px;margin:0px;padding:0px;position:absolute;top:0px;left:0px;z-index:10;cursor:'+(jQuery.browser.opera ? 'n-resize' : 'row-resize')})); + $('#vboxResizeBarProgress').data('vboxY',e.pageY); + + },'stop':function(e){ + + $('#vboxResizeBarTmp').remove(); + $('#vboxResizeOverlay').remove(); + $('body').enableSelection().css({'cursor':'default'}); + + + var nx = $('#vboxProgressOps').height() + ($('#vboxResizeBarProgress').data('vboxY') - e.pageY); + $('#vboxProgressOps').css({'height':(nx)+'px','overflow':'auto'}).parent().css({'height':(nx)+'px'}); + + vboxSetLocalDataItem("vboxPaneY",($('#vboxProgressOps').height())); + + $('#vboxResizeBarProgressEW').css({'height':(vboxGetLocalDataItem("vboxPaneY")-4)+'px'}); + + $(window).trigger('resize'); + + }}).css('cursor',(jQuery.browser.opera ? 'n-resize' : 'row-resize')).parent().disableSelection(); + + /* + Progress resize E / W + */ + var vboxOpsPaneEW = 400; + if(vboxGetLocalDataItem('vboxOpsPaneEW')) { + vboxOpsPaneEW = vboxGetLocalDataItem('vboxOpsPaneEW'); + } else { + vboxSetLocalDataItem('vboxOpsPaneEW', vboxOpsPaneEW); + } + $('#vboxResizeBarProgressEW').css({'left':vboxOpsPaneEW+'px','top':'0'}); + // inject CSS + $('head').append('<style type="text/css" id="vboxProgressOpsStyle">div.vboxProgressOpTitle { width: '+vboxOpsPaneEW+'px; }</style>'); + + // Show draggablebar onmouseenter + $('#vboxProgressOps').hover(function(){ + if($(this).children().length == 1) return; + $('#vboxResizeBarProgressEW').css({'display':'inline-block','height':($(this)[0].scrollHeight-2)+'px'}); + },function(){ + $('#vboxResizeBarProgressEW').css({'display':'none'}); + }); + + // Draggable bar + $('#vboxResizeBarProgressEW').draggable({cursor:(jQuery.browser.opera ? 'e-resize' : 'col-resize'),axis:'x',zIndex:99,helper:function(){ + + $('#vboxResizeBarTmp').remove(); + + return $('#vboxResizeBarProgressEW').clone(false) + .attr({'id':'vboxResizeBarProgressEWTmp'}).css({'background':'#ccc'}); + + },scroll:false,'start':function(e,ui){ + + $('#vboxResizeOverlay').remove(); + $('body').disableSelection().css({'cursor':(jQuery.browser.opera ? 'e-resize' : 'col-resize')}); + $('#vboxPane').append($('<div />').attr({'id':'vboxResizeOverlay','style':'width:100%;height:100%;border:0px;margin:0px;padding:0px;position:absolute;top:0px;left:0px;z-index:10;cursor:'+(jQuery.browser.opera ? 'e-resize' : 'col-resize')})); + $('#vboxResizeBarProgressEW').data('vboxX',e.pageX); + + },'stop':function(e){ + + $('#vboxResizeBarTmp').remove(); + $('#vboxResizeOverlay').remove(); + $('body').enableSelection().css({'cursor':'default'}); + + var nx = parseInt(vboxGetLocalDataItem('vboxOpsPaneEW')) + (e.pageX - $('#vboxResizeBarProgressEW').data('vboxX')); + $('#vboxResizeBarProgressEW').css({'left':nx+'px'}); + vboxSetLocalDataItem('vboxOpsPaneEW',nx); + + // re-inject CSS + $('#vboxProgressOpsStyle').empty().remove(); + $('head').append('<style type="text/css" id="vboxProgressOpsStyle">div.vboxProgressOpTitle { width: '+nx+'px; }</style>'); + + + }}).css('cursor',(jQuery.browser.opera ? 'e-resize' : 'col-resize')); + + /* + * Resize panes when the window changes sizes + */ + $(window).resize(function(){ + + // Hide + $('#vboxChooserResizePane').children().children().css({'display':'none'}); + + var h = $('#vboxResize').innerHeight(); + $('#vboxChooserResizePane').children().children().css({'height':h+'px','overflow-y':'auto','overflow-x':'hidden','display':''}); + + // special for resize bar + $('#vboxResizeBar').css({'height':(h-10)+'px'}); + + + }); + + + /* + * Refresh data when host changes + */ + $('#vboxPane').on('hostChange',function(){ + + var l = new vboxLoader(); + l.add('getConfig',function(d){$('#vboxPane').data('vboxConfig',d.responseData);$('#vboxPane').trigger('configLoaded');}); + l.add('vboxGetGuestOSTypes',function(d){$('#vboxPane').data('vboxOSTypes',d.responseData);}); + l.add('vboxSystemPropertiesGet',function(d){$('#vboxPane').data('vboxSystemProperties',d.responseData);}); + l.add('vboxGetMedia',function(d){$('#vboxPane').data('vboxMedia',d.responseData);}); + l.add('hostGetDetails',function(d){$('#vboxPane').data('vboxHostDetails',d.responseData);}); + l.add('vboxRecentMediaGet',function(d){$('#vboxPane').data('vboxRecentMedia',d.responseData);}); + l.add('vboxRecentMediaPathsGet',function(d){$('#vboxPane').data('vboxRecentMediaPaths',d.responseData);}); + l.add('vboxGetEnumerationMap',function(d){$('#vboxPane').data('vboxMediumVariants',d.responseData);},{'class':'MediumVariant','ValueMap':1}); + + l.onLoad = function(){ + $('#vboxPane').trigger('hostChanged'); + }; + + l.run(); + + }); + + + /* + * Load panes all and data after valid login + */ + $('#vboxPane').on('login', function() { + + var l = new vboxLoader(); + + // Get data and store it using data() + l.add('getConfig',function(d){$('#vboxPane').data('vboxConfig',d.responseData);$('#vboxPane').trigger('configLoaded');}); + l.add('vboxGetGuestOSTypes',function(d){$('#vboxPane').data('vboxOSTypes',d.responseData);}); + l.add('vboxSystemPropertiesGet',function(d){$('#vboxPane').data('vboxSystemProperties',d.responseData);}); + l.add('vboxGetMedia',function(d){$('#vboxPane').data('vboxMedia',d.responseData);}); + l.add('hostGetDetails',function(d){$('#vboxPane').data('vboxHostDetails',d.responseData);}); + l.add('vboxRecentMediaGet',function(d){$('#vboxPane').data('vboxRecentMedia',d.responseData);}); + l.add('vboxRecentMediaPathsGet',function(d){$('#vboxPane').data('vboxRecentMediaPaths',d.responseData);}); + l.add('vboxGetEnumerationMap',function(d){$('#vboxPane').data('vboxMediumVariants',d.responseData);},{'class':'MediumVariant','ValueMap':1}); + + // Load HTML panes and append them to their respective locations + l.addFileToDOM('panes/chooser.html',$('#vboxChooserPane')); + l.addFileToDOM('panes/topmenu.html'); + l.addFileToDOM('panes/toolbar.html'); + l.addFileToDOM('panes/tabs.html',$('#vboxPaneTabContent')); + + l.onLoad = function() { + + + // Resize to last setting + if(vboxGetLocalDataItem('vboxPaneX')) { + $('#vboxChooserDiv').css('width',(vboxGetLocalDataItem('vboxPaneX'))+'px'); + } else { + vboxSetLocalDataItem('vboxPaneX', $('#vboxChooserDiv').innerWidth()); + } + + if(vboxGetLocalDataItem('vboxPaneY')) { + var nx = vboxGetLocalDataItem('vboxPaneY'); + $('#vboxProgressOps').css({'height':(nx)+'px'}).parent().css({'height':(nx)+'px'}); + } else { + vboxSetLocalDataItem('vboxPaneY', $('#vboxProgressOps').height()); + } + $('#vboxResizeBarProgressEW').css({'height':(vboxGetLocalDataItem("vboxPaneY")-4)+'px'}); + + // Let everyone know that no vms are selected + $('#vboxPane').trigger('vmSelectionListChanged',[vboxChooser]); + + }; + + // Trigger resize event to size panes + l.onShow = function() { $(window).trigger('resize'); }; + + l.hideRoot = true; + l.run(); + + }); + + /** + * Check for valid session and display login box if one does not exist + * @params {Boolean} tried - true if login was attempted before this call + */ + var vboxCheckSession = function(tried) { + + // check session info + if($('#vboxPane').data('vboxSession') && $('#vboxPane').data('vboxSession').valid) { + + // Session is valid, trigger login + $('#vboxPane').trigger('login'); + return; + } + + // Was there an error? Assume it was displayed and just return from function + if($('#vboxPane').data('vboxSession') && !$('#vboxPane').data('vboxSession').success) { + return; + } + + + // No valid session. Show login pane + $('#vboxLogin').find('input[name=password]').val(''); + $('#vboxLogin').dialog('open'); + + if(!$('#vboxLogin').find('input[name=username]').val()) $('#vboxLogin').find('input[name=username]').focus(); + else $('#vboxLogin').find('input[name=password]').focus(); + + // Display error if we tried to log in + if(tried) { + vboxAlert(trans('Invalid username or password.','UIUsers'),{'width':'400px'}); + } + + }; + + /** Load login form */ + var login = new vboxLoader(); + login.add('getSession',function(d){$('#vboxPane').data('vboxSession',$.extend({'success':d.success},d.responseData));}); + login.addFileToDOM('panes/login.html'); + login.onLoad = function(loader) { + + var buttons = {}; + buttons[trans('Log in','UIUsers')] = function() { + + // Login button triggers login attempt + var u = $('#vboxLogin').find('input[name=username]').val(); + var p = $('#vboxLogin').find('input[name=password]').val(); + if(!(u&&p)) return; + $('#vboxLogin').dialog('close'); + + // A valid login should create a valid session + var trylogin = new vboxLoader(); + trylogin.add('login',function(d){$('#vboxPane').data('vboxSession',$.extend({'success':d.success},d.responseData));},{'u':u,'p':p}); + trylogin.onLoad = function() { vboxCheckSession(true);}; + trylogin.run(); + }; + + // Create but do not open dialog + if($.browser.webkit) heightadd = 5; + else heightadd = 0; + $('#vboxLogin').dialog({'closeOnEscape':false,'width':300,'height':'auto','buttons':buttons,'modal':true,'autoOpen':false,'dialogClass':'vboxDialogContent','title':'<img src="images/vbox/OSE/about_16px.png" class="vboxDialogTitleIcon" /> phpVirtualBox :: ' + trans('Log in','UIUsers')}); + $('#vboxLogin').find('input[name=username]').first().focus(); + + // Trick loader into not showing root pane again + loader.hideRoot = false; + + // Login form is loaded, run check for valid session + vboxCheckSession(); + + }; + login.hideRoot = true; + login.run(); + + }); // </ document.ready event > + + </script> + +</head> +<body> +<div id='vboxPane' style='height: 100%; margin: 0px; padding: 0px;'> +<table id='vboxTableMain' cellpadding=0 cellspacing=0 style="height: 100%; width: 100%; padding: 0px; margin: 0px; border: 0px; border-spacing: 0px;"> + <tr style='vertical-align: middle;'> + <td style='height:20px;border:0px;padding:0px;margin:0px;border-spacing:0px;'> + <div id='vboxMenu'> + <!-- + + Top menu bar + + --> + </div> + </td> + </tr> + <tr style='vertical-align: middle;'> + <td id='vboxToolbarMain' style='height: 1%' class='vboxToolbarGrad'> + <!-- + + VM list toolbar + + --> + <div id='vboxPaneToolbar'></div> + <!-- + + Tabs / buttons + + --> + <div id='vboxTabsList'></div> + </td> + </tr> + <tr style='vertical-align: top;'> + <td style='border:0px;padding:0px;margin:0px;border-spacing:0px;' id='vboxResize'> + <table style='width:100%;border:0px;padding:0px;border-spacing:0px;'> + <tr id='vboxChooserResizePane' style='vertical-align: top;'> + <td id="vboxChooserPane" style='padding:0px;border-spacing:0px;margin:0px;'> + <!-- + + VM List + + --> + </td> + <td id='vboxResizeTD' style='border: 0px; margin: 0px; padding: 0px; text-align: center;'> + <div style='margin:0px;padding:0px;width:4px;height:100%;'> + <div style='position: absolute; margin: 0px; padding:2px; width: 0px; height: 100%;' id='vboxResizeBar' ></div> + </div> + </td> + <td id="vboxPaneTabContent" style='width:100%;border:0px;padding:0px;border-spacing:0px;margin:0px'> + <!-- + + Tab content + + --> + </td> + </tr> + </table> + </td> + </tr> + <!-- + Progress operation list resize bar + --> + <tr style='padding: 0px; margin: 0px; vertical-align: middle;'> + <td id='vboxResizeTDProgress' style='border: 0px; margin: 0px; padding: 0px; text-align: center; height: 5px; vertical-align: middle'> + <div style='width:99%; margin:0 auto; padding:2px;' id='vboxResizeBarProgress' ></div> + </td> + </tr> + <tr style='vertical-align: top; padding: 0px;'> + <td style='border:0px;padding:0px;margin:0px;border-spacing:0px;height:1%'> + <div id='vboxProgressOps' style='height:80px;overflow:auto;position:relative'> + <!-- + Resize bar for E/ W + --> + <div style="position:absolute;z-index:1;margin:0px;border:0px;padding:1px;width: 0px;background:#aaa;display:none;" id='vboxResizeBarProgressEW' ></div> + <!-- + + Progress operation list + + --> + </div> + </td> + </tr> +</table> +</div> +</body> </html>
\ No newline at end of file |