Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions CHANGELOG.txt
Original file line number Diff line number Diff line change
@@ -1,3 +1,11 @@
-------------------------------------
7.2-3 2026-04-05
-------------------------------------
Update jQuery to 4.0.0 and jQuery-UI to 1.14.2
Update jQuery plugins to the latest versions
Fix deprecated jQuery usage
Fix dialogs buttons not updating

-------------------------------------
7.2-2 2025-11-01
-------------------------------------
Expand Down
7 changes: 3 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,9 @@ Web interface for Oracle VirtualBox (https://www.virtualbox.org/)

## Roadmap

- [ ] Ensure feature parity with VirtualBox 7.2 minus Oracle Cloud features
- [x] PHP 8.4 compatibility
- [x] jQuery and jQuery UI updates
- [ ] Create a release process where javascript and CSS are minified and releses do not contain unnecessary build artifacts
- Ensure feature parity with VirtualBox 7.2 minus Oracle Cloud features
- PHP 8.4 compatibility
- jQuery and jQuery UI updates

## Project history and credits

Expand Down
2 changes: 1 addition & 1 deletion endpoints/lib/config.php
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
/*
* This version of phpVirtualBox
*/
define('PHPVBOX_VER', '7.2-1');
define('PHPVBOX_VER', '7.2-3');

class phpVBoxConfigClass {

Expand Down
2 changes: 1 addition & 1 deletion endpoints/lib/vboxServiceWrappers.php
Original file line number Diff line number Diff line change
Expand Up @@ -235,7 +235,7 @@ public function __construct($connection, $handle)

public function __toString()
{
return (string)$this->NameMap[$this->_handle];
return (string)$this->NameMap[$this->_handle ?? ''];
}
}

Expand Down
22 changes: 9 additions & 13 deletions index.html
Original file line number Diff line number Diff line change
Expand Up @@ -26,15 +26,11 @@
<link rel="stylesheet" type="text/css" href="css/layout.css"/>

<!-- External or jQuery related scripts -->
<script type="text/javascript" src="js/jquery-3.7.1.min.js"></script>
<script type="text/javascript" src="js/jquery-ui-1.14.1.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>
<script type="text/javascript" src="js/jquery-4.0.0.min.js"></script>
<script type="text/javascript" src="js/jquery-ui-1.14.2.min.js"></script>
<script type="text/javascript" src="js/jquery.tipped-2.2b.js"></script>
<script type="text/javascript" src="js/jquery.scrollTo-2.1.3.js"></script>
<script type="text/javascript" src="js/jquery.jec-1.4.0.js"></script>

<!-- Internal / project related scripts -->
<script type="text/javascript" src="endpoints/config.js"></script>
Expand Down Expand Up @@ -259,7 +255,7 @@
/*
* Resize panes when the window changes sizes
*/
$(window).resize(function(){
$(window).on('resize', function(){

// Hide
$('#vboxChooserResizePane').children().children().css({'display':'none'});
Expand Down Expand Up @@ -376,8 +372,8 @@
$('#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();
if(!$('#vboxLogin').find('input[name=username]').val()) $('#vboxLogin').find('input[name=username]').trigger('focus');
else $('#vboxLogin').find('input[name=password]').trigger('focus');

// Display error if we tried to log in
if(tried) {
Expand Down Expand Up @@ -412,7 +408,7 @@
if($.browser.webkit) heightadd = 5;
else heightadd = 0;
$('#vboxLogin').dialog({'closeOnEscape':false,'width':300,'height':'auto','buttons':buttons,'modal':true,'autoOpen':false,'classes':{'ui-dialog':'vboxDialogContent'},'title':'<img src="images/vbox/OSE/about_16px.png" class="vboxDialogTitleIcon" /> phpVirtualBox :: ' + trans('Log in','UIUsers')});
$('#vboxLogin').find('input[name=username]').first().focus();
$('#vboxLogin').find('input[name=username]').first().trigger('focus');

// Trick loader into not showing root pane again
loader.hideRoot = false;
Expand Down
16 changes: 8 additions & 8 deletions js/chooser.js
Original file line number Diff line number Diff line change
Expand Up @@ -90,7 +90,7 @@ var vboxChooser = {
$(this).removeClass('vboxChooserDropTargetHoverRoot');
});

$(window).resize(function(){
$(window).trigger('resize', function(){

// Get anchor id and add / remove class
var w = parseInt($(vboxChooser._anchor).innerWidth());
Expand Down Expand Up @@ -753,7 +753,7 @@ var vboxChooser = {
});

// Open settings on dblclick
$(tbl).dblclick(function(){
$(tbl).on('dblclick', function(){
if(vboxChooser._vmContextMenuObj.menuItems['settings'].enabled())
vboxChooser._vmContextMenuObj.menuItems['settings'].click();
});
Expand Down Expand Up @@ -1593,7 +1593,7 @@ var vboxChooser = {
)

);
$(el).children('div.vboxChooserGroupHeader').children('form').children('input').focus().select().blur(renameGroup);
$(el).children('div.vboxChooserGroupHeader').children('form').children('input').trigger('focus').trigger('select').on('blur', renameGroup);

},

Expand Down Expand Up @@ -1885,7 +1885,7 @@ var vboxChooser = {
).append(
$('<div />').addClass('vboxChooserGroupHeader').css({'display':(first ? 'none' : '')})
.attr({'title':gname})
.dblclick(function() {
.on('dblclick', function() {

// Already collapsed?
var collapsed = $(this).closest('div.vboxChooserGroup').hasClass('vboxVMGroupCollapsed');
Expand Down Expand Up @@ -1950,18 +1950,18 @@ var vboxChooser = {
)
.append(
$('<span />').addClass('vboxChooserGroupNameArrowLeft vboxChooserGroupNameArrowCollapse vboxArrowImage')
.mousedown(function(e){
.on('mousedown', function(e){
e.stopPropagation();
e.preventDefault();
return false;
}).mouseup(function(){
}).on('mouseup', function(){
$(this).closest('div.vboxChooserGroupHeader').trigger('dblclick');
})

).append(

$('<span />').addClass('vboxChooserGroupNameArrowLeft vboxChooserGroupShowOnlyBack vboxArrowImage')
.click(function(e) {
.on('click', function(e) {
e.stopPropagation();
e.preventDefault();
vboxChooser.showOnlyGroupElm();
Expand All @@ -1974,7 +1974,7 @@ var vboxChooser = {
"<span class='vboxChooserGroupCounts' />"
).append(
$('<span />').addClass('vboxChooserGroupShowOnly vboxArrowImage')
.click(function(e){
.on('click', function(e){
e.stopPropagation();
e.preventDefault();
vboxChooser.showOnlyGroupElm($(this).closest('div.vboxChooserGroup'));
Expand Down
18 changes: 9 additions & 9 deletions js/dialogs.js
Original file line number Diff line number Diff line change
Expand Up @@ -418,7 +418,7 @@ function vboxWizardNewVMDialog(vmgroup) {
disk = $(self.form)[0].newVMDiskSelect.options[$(self.form)[0].newVMDiskSelect.selectedIndex].value;
disk = vboxMedia.getMediumById(disk).location;
}
var name = jQuery.trim($(self.form).find('[name=newVMName]').val());
var name = String($(self.form).find('[name=newVMName]').val()).trim();
var ostype = $(self.form).find('[name=newVMOSType]').val();
var mem = parseInt($(self.form).find('[name=wizardNewVMSizeValue]').val());

Expand Down Expand Up @@ -451,7 +451,7 @@ function vboxWizardNewVMDialog(vmgroup) {
};

// Name must exist
if(!jQuery.trim($(self.form).find('[name=newVMName]').val())) {
if(!String($(self.form).find('[name=newVMName]').val()).trim()) {
$(self.form).find('[name=newVMName]').addClass('vboxRequired');
return;
}
Expand Down Expand Up @@ -485,7 +485,7 @@ function vboxWizardNewVMDialog(vmgroup) {
// Recommended size
var size = newVMOSTypesObj[$(self.form).find('[name=newVMOSType]').val()].recommendedHDD;

$.when(new vboxWizardNewHDDialog({'name':jQuery.trim($(self.form).find('[name=newVMName]').val()),'size':size,'group':vmgroup}).run())
$.when(new vboxWizardNewHDDialog({'name':String($(self.form).find('[name=newVMName]').val()).trim(),'size':size,'group':vmgroup}).run())
.done(function(med){

$(self.form).find('[name=newVMDisk]').eq(2).trigger('click').prop('checked',true);
Expand Down Expand Up @@ -571,7 +571,7 @@ function vboxWizardCloneVMDialog(args) {
this.onFinish = function() {

// Get parameters
var name = jQuery.trim($(self.form).find('[name=machineCloneName]').val());
var name = String($(self.form).find('[name=machineCloneName]').val()).trim();
var src = self.args.vm.id;
var snapshot = self.args.snapshot;
var allNetcards = $(self.form).find('[name=vboxCloneReinitNetwork]').prop('checked');
Expand Down Expand Up @@ -968,7 +968,7 @@ function vboxWizardCopyHDDialog(suggested) {

var fsplit = $(self.form).find('[name=newHardDiskSplit]').prop('checked') && vboxMedia.formatSupportsSplit(format);

var loc = jQuery.trim($(self.form).find('[name=wizardCopyHDLocation]').val());
var loc = String($(self.form).find('[name=wizardCopyHDLocation]').val()).trim();
if(!loc) {
$(self.form).find('[name=wizardCopyHDLocation]').addClass('vboxRequired');
return;
Expand Down Expand Up @@ -1309,7 +1309,7 @@ function vboxVMsettingsDialog(vm,pane) {

// Validate
if(!vboxSettingsGeneralValidate()) {
$('#vboxSettingsMenuList').children('li:eq(0)').first().click();
$('#vboxSettingsMenuList').children('li:eq(0)').first().trigger('click');
$('#vboxSettingsPane-General').tabs('option','active', 3);
encMediaSettings.reject();
return encMediaSettings;
Expand Down Expand Up @@ -1435,7 +1435,7 @@ function vboxVMsettingsDialog(vm,pane) {
// Always run this
.always(function(){
// No longer watch for changed VM settings
$('#vboxPane').unbind('vboxEvents',machineSettingsChanged);
$('#vboxPane').off('vboxEvents',machineSettingsChanged);

})

Expand Down Expand Up @@ -1610,7 +1610,7 @@ function vboxSettingsDialog(title,panes,data,pane,icon,langContext,presave) {
if(panes[i].disabled) continue;

// Menu item
$('<li />').html('<div><img src="images/vbox/'+panes[i].icon+'_16px.png" /></div> <div>'+trans(panes[i].label,langContext)+'</div>').data(panes[i]).click(function(){
$('<li />').html('<div><img src="images/vbox/'+panes[i].icon+'_16px.png" /></div> <div>'+trans(panes[i].label,langContext)+'</div>').data(panes[i]).on('click', function(){

$('#vboxSettingsTitle').html(trans($(this).data('label'),langContext));

Expand Down Expand Up @@ -1709,7 +1709,7 @@ function vboxSettingsDialog(title,panes,data,pane,icon,langContext,presave) {
}
i-=offset;
if(i >= panes.length) i = 0;
$('#vboxSettingsMenuList').children('li:eq('+i+')').first().click().each(function(){
$('#vboxSettingsMenuList').children('li:eq('+i+')').first().trigger('click').each(function(){
if(tab !== undefined) {
// Check for out of scope tab
tab = Math.min(($('#vboxSettingsPane-'+$(this).data('name')).children('ul').first().children().length-1), parseInt(tab));
Expand Down
2 changes: 0 additions & 2 deletions js/jquery-3.7.1.min.js

This file was deleted.

2 changes: 2 additions & 0 deletions js/jquery-4.0.0.min.js

Large diffs are not rendered by default.

6 changes: 0 additions & 6 deletions js/jquery-ui-1.14.1.min.js

This file was deleted.

6 changes: 6 additions & 0 deletions js/jquery-ui-1.14.2.min.js

Large diffs are not rendered by default.

Loading
Loading