update build infrastucture to be able to develop with Ext6

This commit is contained in:
Emmanuel Kasper 2015-11-10 14:36:09 +01:00 committed by Dietmar Maurer
parent 660db97fbd
commit 316e523568
7 changed files with 327 additions and 25 deletions

263
PVE/ExtJSIndex6.pm Normal file
View File

@ -0,0 +1,263 @@
package PVE::ExtJSIndex6;
use strict;
use warnings;
sub get_index {
my ($lang, $username, $csrftoken, $console) = @_;
my $page = <<_EOD;
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Proxmox Virtual Environment</title>
<link rel="stylesheet" type="text/css" href="/pve2/ext6/theme-neptune/resources/theme-neptune-all.css" />
<link rel="stylesheet" type="text/css" href="/pve2/css/ext-pve.css" />
_EOD
my $langfile = "/usr/share/pve-manager/locale/pve-lang-${lang}.js";
if (-f $langfile) {
$page .= "<script type='text/javascript' src='/pve2/locale/pve-lang-${lang}.js'></script>";
} else {
$page .= '<script type="text/javascript">function gettext(buf) { return buf; }</script>';
}
$page .= <<_EOD;
<script type="text/javascript" src="/pve2/ext6/ext-all-debug.js"></script>
<script type="text/javascript" src="/pve2/manager6/Utils.js"></script>
<script type="text/javascript" src="/pve2/manager6/Toolkit.js"></script>
<script type="text/javascript" src="/pve2/manager6/Parser.js"></script>
<script type="text/javascript" src="/pve2/manager6/StateProvider.js"></script>
<script type="text/javascript" src="/pve2/manager6/button/Button.js"></script>
<script type="text/javascript" src="/pve2/manager6/button/ConsoleButton.js"></script>
<!--
<script type="text/javascript" src="/pve2/manager6/qemu/SendKeyMenu.js"></script>
<script type="text/javascript" src="/pve2/manager6/qemu/CmdMenu.js"></script>
<script type="text/javascript" src="/pve2/manager6/qemu/TemplateMenu.js"></script>
<script type="text/javascript" src="/pve2/manager6/lxc/CmdMenu.js"></script>
-->
<script type="text/javascript" src="/pve2/manager6/VNCConsole.js"></script>
<script type="text/javascript" src="/pve2/manager6/data/TimezoneStore.js"></script>
<script type="text/javascript" src="/pve2/manager6/data/reader/JsonObject.js"></script>
<script type="text/javascript" src="/pve2/manager6/data/PVEProxy.js"></script>
<script type="text/javascript" src="/pve2/manager6/data/UpdateQueue.js"></script>
<script type="text/javascript" src="/pve2/manager6/data/UpdateStore.js"></script>
<script type="text/javascript" src="/pve2/manager6/data/DiffStore.js"></script>
<script type="text/javascript" src="/pve2/manager6/data/ObjectStore.js"></script>
<script type="text/javascript" src="/pve2/manager6/data/ResourceStore.js"></script>
<script type="text/javascript" src="/pve2/manager6/form/VLanField.js"></script>
<script type="text/javascript" src="/pve2/manager6/form/Checkbox.js"></script>
<script type="text/javascript" src="/pve2/manager6/form/TextField.js"></script>
<script type="text/javascript" src="/pve2/manager6/form/RRDTypeSelector.js"></script>
<script type="text/javascript" src="/pve2/manager6/form/ComboGrid.js"></script>
<script type="text/javascript" src="/pve2/manager6/form/KVComboBox.js"></script>
<script type="text/javascript" src="/pve2/manager6/form/Boolean.js"></script>
<script type="text/javascript" src="/pve2/manager6/form/CompressionSelector.js"></script>
<script type="text/javascript" src="/pve2/manager6/form/PoolSelector.js"></script>
<script type="text/javascript" src="/pve2/manager6/form/GroupSelector.js"></script>
<script type="text/javascript" src="/pve2/manager6/form/UserSelector.js"></script>
<script type="text/javascript" src="/pve2/manager6/form/RoleSelector.js"></script>
<script type="text/javascript" src="/pve2/manager6/form/VMIDSelector.js"></script>
<script type="text/javascript" src="/pve2/manager6/form/MemoryField.js"></script>
<script type="text/javascript" src="/pve2/manager6/form/NetworkCardSelector.js"></script>
<script type="text/javascript" src="/pve2/manager6/form/DiskFormatSelector.js"></script>
<script type="text/javascript" src="/pve2/manager6/form/BusTypeSelector.js"></script>
<script type="text/javascript" src="/pve2/manager6/form/ControllerSelector.js"></script>
<script type="text/javascript" src="/pve2/manager6/form/EmailNotificationSelector.js"></script>
<script type="text/javascript" src="/pve2/manager6/form/RealmComboBox.js"></script>
<script type="text/javascript" src="/pve2/manager6/form/BondModeSelector.js"></script>
<script type="text/javascript" src="/pve2/manager6/form/ViewSelector.js"></script>
<script type="text/javascript" src="/pve2/manager6/form/NodeSelector.js"></script>
<script type="text/javascript" src="/pve2/manager6/form/FileSelector.js"></script>
<script type="text/javascript" src="/pve2/manager6/form/StorageSelector.js"></script>
<script type="text/javascript" src="/pve2/manager6/form/BridgeSelector.js"></script>
<script type="text/javascript" src="/pve2/manager6/form/SecurityGroupSelector.js"></script>
<script type="text/javascript" src="/pve2/manager6/form/IPRefSelector.js"></script>
<script type="text/javascript" src="/pve2/manager6/form/IPProtocolSelector.js"></script>
<script type="text/javascript" src="/pve2/manager6/form/CPUModelSelector.js"></script>
<script type="text/javascript" src="/pve2/manager6/form/VNCKeyboardSelector.js"></script>
<script type="text/javascript" src="/pve2/manager6/form/LanguageSelector.js"></script>
<script type="text/javascript" src="/pve2/manager6/form/DisplaySelector.js"></script>
<script type="text/javascript" src="/pve2/manager6/form/CacheTypeSelector.js"></script>
<script type="text/javascript" src="/pve2/manager6/form/SnapshotSelector.js"></script>
<script type="text/javascript" src="/pve2/manager6/form/ContentTypeSelector.js"></script>
<script type="text/javascript" src="/pve2/manager6/form/HotplugFeatureSelector.js"></script>
<script type="text/javascript" src="/pve2/manager6/form/iScsiProviderSelector.js"></script>
<script type="text/javascript" src="/pve2/manager6/form/DayOfWeekSelector.js"></script>
<script type="text/javascript" src="/pve2/manager6/form/BackupModeSelector.js"></script>
<script type="text/javascript" src="/pve2/manager6/form/ScsiHwSelector.js"></script>
<script type="text/javascript" src="/pve2/manager6/form/FirewallPolicySelector.js"></script>
<script type="text/javascript" src="/pve2/manager6/dc/Tasks.js"></script>
<script type="text/javascript" src="/pve2/manager6/dc/Log.js"></script>
<script type="text/javascript" src="/pve2/manager6/panel/StatusPanel.js"></script>
<script type="text/javascript" src="/pve2/manager6/panel/RRDView.js"></script>
<script type="text/javascript" src="/pve2/manager6/panel/InputPanel.js"></script>
<script type="text/javascript" src="/pve2/manager6/window/Edit.js"></script>
<script type="text/javascript" src="/pve2/manager6/window/LoginWindow.js"></script>
<script type="text/javascript" src="/pve2/manager6/window/TaskViewer.js"></script>
<script type="text/javascript" src="/pve2/manager6/window/Wizard.js"></script>
<script type="text/javascript" src="/pve2/manager6/window/NotesEdit.js"></script>
<script type="text/javascript" src="/pve2/manager6/window/Backup.js"></script>
<script type="text/javascript" src="/pve2/manager6/window/Restore.js"></script>
<script type="text/javascript" src="/pve2/manager6/panel/NotesView.js"></script>
<script type="text/javascript" src="/pve2/manager6/grid/CheckColumn.js"></script>
<script type="text/javascript" src="/pve2/manager6/grid/SelectFeature.js"></script>
<script type="text/javascript" src="/pve2/manager6/grid/ObjectGrid.js"></script>
<script type="text/javascript" src="/pve2/manager6/grid/PendingObjectGrid.js"></script>
<script type="text/javascript" src="/pve2/manager6/grid/ResourceGrid.js"></script>
<script type="text/javascript" src="/pve2/manager6/grid/PoolMembers.js"></script>
<script type="text/javascript" src="/pve2/manager6/grid/FirewallRules.js"></script>
<script type="text/javascript" src="/pve2/manager6/grid/FirewallAliases.js"></script>
<script type="text/javascript" src="/pve2/manager6/grid/FirewallOptions.js"></script>
<script type="text/javascript" src="/pve2/manager6/tree/ResourceTree.js"></script>
<script type="text/javascript" src="/pve2/manager6/panel/IPSet.js"></script>
<script type="text/javascript" src="/pve2/manager6/panel/ConfigPanel.js"></script>
<script type="text/javascript" src="/pve2/manager6/panel/SubConfigPanel.js"></script>
<script type="text/javascript" src="/pve2/manager6/grid/BackupView.js"></script>
<script type="text/javascript" src="/pve2/manager6/panel/LogView.js"></script>
<script type="text/javascript" src="/pve2/manager6/panel/Firewall.js"></script>
<!--
<script type="text/javascript" src="/pve2/manager6/ceph/Pool.js"></script>
<script type="text/javascript" src="/pve2/manager6/ceph/OSD.js"></script>
<script type="text/javascript" src="/pve2/manager6/ceph/Disks.js"></script>
<script type="text/javascript" src="/pve2/manager6/ceph/Monitor.js"></script>
<script type="text/javascript" src="/pve2/manager6/ceph/Crush.js"></script>
<script type="text/javascript" src="/pve2/manager6/ceph/Status.js"></script>
<script type="text/javascript" src="/pve2/manager6/ceph/Config.js"></script>
<script type="text/javascript" src="/pve2/manager6/node/DNSEdit.js"></script>
<script type="text/javascript" src="/pve2/manager6/node/DNSView.js"></script>
<script type="text/javascript" src="/pve2/manager6/node/TimeView.js"></script>
<script type="text/javascript" src="/pve2/manager6/node/TimeEdit.js"></script>
<script type="text/javascript" src="/pve2/manager6/node/StatusView.js"></script>
<script type="text/javascript" src="/pve2/manager6/node/Summary.js"></script>
<script type="text/javascript" src="/pve2/manager6/node/ServiceView.js"></script>
<script type="text/javascript" src="/pve2/manager6/node/NetworkEdit.js"></script>
<script type="text/javascript" src="/pve2/manager6/node/NetworkView.js"></script>
<script type="text/javascript" src="/pve2/manager6/node/Tasks.js"></script>
<script type="text/javascript" src="/pve2/manager6/node/Subscription.js"></script>
<script type="text/javascript" src="/pve2/manager6/node/APT.js"></script>
<script type="text/javascript" src="/pve2/manager6/node/Config.js"></script>
<script type="text/javascript" src="/pve2/manager6/qemu/StatusView.js"></script>
-->
<script type="text/javascript" src="/pve2/manager6/window/Migrate.js"></script>
<script type="text/javascript" src="/pve2/manager6/window/MigrateAll.js"></script>
<!--
<script type="text/javascript" src="/pve2/manager6/qemu/Monitor.js"></script>
<script type="text/javascript" src="/pve2/manager6/qemu/Summary.js"></script>
<script type="text/javascript" src="/pve2/manager6/qemu/OSTypeEdit.js"></script>
<script type="text/javascript" src="/pve2/manager6/qemu/ProcessorEdit.js"></script>
<script type="text/javascript" src="/pve2/manager6/qemu/BootOrderEdit.js"></script>
<script type="text/javascript" src="/pve2/manager6/qemu/MemoryEdit.js"></script>
<script type="text/javascript" src="/pve2/manager6/qemu/NetworkEdit.js"></script>
<script type="text/javascript" src="/pve2/manager6/qemu/Smbios1Edit.js"></script>
<script type="text/javascript" src="/pve2/manager6/qemu/CDEdit.js"></script>
<script type="text/javascript" src="/pve2/manager6/qemu/HDEdit.js"></script>
<script type="text/javascript" src="/pve2/manager6/qemu/HDResize.js"></script>
<script type="text/javascript" src="/pve2/manager6/qemu/HDMove.js"></script>
<script type="text/javascript" src="/pve2/manager6/qemu/HDThrottle.js"></script>
<script type="text/javascript" src="/pve2/manager6/qemu/CPUOptions.js"></script>
<script type="text/javascript" src="/pve2/manager6/qemu/DisplayEdit.js"></script>
<script type="text/javascript" src="/pve2/manager6/qemu/KeyboardEdit.js"></script>
<script type="text/javascript" src="/pve2/manager6/qemu/HardwareView.js"></script>
<script type="text/javascript" src="/pve2/manager6/qemu/StartupEdit.js"></script>
<script type="text/javascript" src="/pve2/manager6/qemu/ScsiHwEdit.js"></script>
<script type="text/javascript" src="/pve2/manager6/qemu/Options.js"></script>
<script type="text/javascript" src="/pve2/manager6/qemu/Snapshot.js"></script>
<script type="text/javascript" src="/pve2/manager6/qemu/Clone.js"></script>
<script type="text/javascript" src="/pve2/manager6/qemu/SnapshotTree.js"></script>
<script type="text/javascript" src="/pve2/manager6/qemu/Config.js"></script>
<script type="text/javascript" src="/pve2/manager6/qemu/CreateWizard.js"></script>
<script type="text/javascript" src="/pve2/manager6/lxc/StatusView.js"></script>
<script type="text/javascript" src="/pve2/manager6/lxc/Summary.js"></script>
<script type="text/javascript" src="/pve2/manager6/lxc/Network.js"></script>
<script type="text/javascript" src="/pve2/manager6/lxc/Resources.js"></script>
<script type="text/javascript" src="/pve2/manager6/lxc/Options.js"></script>
<script type="text/javascript" src="/pve2/manager6/lxc/DNS.js"></script>
<script type="text/javascript" src="/pve2/manager6/lxc/Config.js"></script>
<script type="text/javascript" src="/pve2/manager6/lxc/CreateWizard.js"></script>
-->
<script type="text/javascript" src="/pve2/manager6/pool/StatusView.js"></script>
<script type="text/javascript" src="/pve2/manager6/pool/Summary.js"></script>
<script type="text/javascript" src="/pve2/manager6/pool/Config.js"></script>
<!--
<script type="text/javascript" src="/pve2/manager6/storage/ContentView.js"></script>
<script type="text/javascript" src="/pve2/manager6/storage/StatusView.js"></script>
<script type="text/javascript" src="/pve2/manager6/storage/Summary.js"></script>
<script type="text/javascript" src="/pve2/manager6/storage/Browser.js"></script>
<script type="text/javascript" src="/pve2/manager6/storage/DirEdit.js"></script>
<script type="text/javascript" src="/pve2/manager6/storage/NFSEdit.js"></script>
<script type="text/javascript" src="/pve2/manager6/storage/GlusterFsEdit.js"></script>
<script type="text/javascript" src="/pve2/manager6/storage/IScsiEdit.js"></script>
<script type="text/javascript" src="/pve2/manager6/storage/LVMEdit.js"></script>
<script type="text/javascript" src="/pve2/manager6/storage/RBDEdit.js"></script>
<script type="text/javascript" src="/pve2/manager6/storage/SheepdogEdit.js"></script>
<script type="text/javascript" src="/pve2/manager6/storage/ZFSEdit.js"></script>
<script type="text/javascript" src="/pve2/manager6/storage/ZFSPoolEdit.js"></script>
<script type="text/javascript" src="/pve2/manager6/ha/StatusView.js"></script>
<script type="text/javascript" src="/pve2/manager6/ha/GroupSelector.js"></script>
<script type="text/javascript" src="/pve2/manager6/ha/ResourceEdit.js"></script>
<script type="text/javascript" src="/pve2/manager6/ha/Resources.js"></script>
<script type="text/javascript" src="/pve2/manager6/ha/GroupEdit.js"></script>
<script type="text/javascript" src="/pve2/manager6/ha/Groups.js"></script>
<script type="text/javascript" src="/pve2/manager6/ha/Fencing.js"></script>
<script type="text/javascript" src="/pve2/manager6/ha/Config.js"></script>
-->
<script type="text/javascript" src="/pve2/manager6/dc/Summary.js"></script>
<script type="text/javascript" src="/pve2/manager6/dc/OptionView.js"></script>
<script type="text/javascript" src="/pve2/manager6/dc/StorageView.js"></script>
<script type="text/javascript" src="/pve2/manager6/dc/UserEdit.js"></script>
<script type="text/javascript" src="/pve2/manager6/dc/UserView.js"></script>
<script type="text/javascript" src="/pve2/manager6/dc/PoolView.js"></script>
<script type="text/javascript" src="/pve2/manager6/dc/PoolEdit.js"></script>
<script type="text/javascript" src="/pve2/manager6/dc/GroupView.js"></script>
<script type="text/javascript" src="/pve2/manager6/dc/GroupEdit.js"></script>
<script type="text/javascript" src="/pve2/manager6/dc/RoleView.js"></script>
<script type="text/javascript" src="/pve2/manager6/dc/ACLView.js"></script>
<script type="text/javascript" src="/pve2/manager6/dc/AuthView.js"></script>
<script type="text/javascript" src="/pve2/manager6/dc/AuthEdit.js"></script>
<script type="text/javascript" src="/pve2/manager6/dc/Backup.js"></script>
<script type="text/javascript" src="/pve2/manager6/dc/Support.js"></script>
<script type="text/javascript" src="/pve2/manager6/dc/SecurityGroups.js"></script>
<script type="text/javascript" src="/pve2/manager6/dc/Config.js"></script>
<script type="text/javascript" src="/pve2/manager6/Workspace.js"></script>
_EOD
my $jssrc = <<_EOJS;
if (typeof(PVE) === 'undefined') PVE = {};
PVE.UserName = '$username'
PVE.CSRFPreventionToken = '$csrftoken';
_EOJS
my $workspace = defined($console) ?
"PVE.ConsoleWorkspace" : "PVE.StdWorkspace";
$jssrc .= <<_EOJS;
// we need this (the java applet ignores the zindex)
Ext.useShims = true;
Ext.History.fieldid = 'x-history-field';
Ext.onReady(function() {
console.log(Ext.getVersion().version);
Ext.create('$workspace');
});
_EOJS
$page .= <<_EOD;
<script type="text/javascript">$jssrc</script>
</head>
<body>
<!-- Fields required for history management -->
<form id="history-form" class="x-hidden">
<input type="hidden" id="x-history-field"/>
</form>
</body>
</html>
_EOD
return $page;
}
1;

View File

@ -7,7 +7,7 @@ PERLSOURCE = \
API2Tools.pm \
API2Client.pm \
ExtJSIndex.pm \
ExtJSIndex5.pm \
ExtJSIndex6.pm \
TouchIndex.pm \
NoVncIndex.pm \
HTTPServer.pm \

View File

@ -18,7 +18,7 @@ use PVE::API2::Formatter::HTML;
use PVE::HTTPServer;
use PVE::ExtJSIndex;
use PVE::ExtJSIndex5;
use PVE::ExtJSIndex6;
use PVE::NoVncIndex;
use PVE::TouchIndex;
@ -40,7 +40,7 @@ my %daemon_options = (
my $daemon = __PACKAGE__->new('pveproxy', $cmdline, %daemon_options);
my $ext5_dir_exists;
my $ext6_dir_exists;
sub add_dirs {
my ($result_hash, $alias, $subdir) = @_;
@ -72,7 +72,7 @@ sub init {
my $family = PVE::Tools::get_host_address_family($self->{nodename});
my $socket = $self->create_reusable_socket(8006, undef, $family);
$ext5_dir_exists = (-d '/usr/share/pve-manager/ext5');
$ext6_dir_exists = (-d '/usr/share/pve-manager/ext6');
my $dirs = {};
@ -80,9 +80,9 @@ sub init {
add_dirs($dirs, '/pve2/touch/', '/usr/share/pve-manager/touch/');
add_dirs($dirs, '/pve2/ext4/', '/usr/share/pve-manager/ext4/');
if ($ext5_dir_exists) { # only add ext5 dirs if it was build
add_dirs($dirs, '/pve2/ext5/', '/usr/share/pve-manager/ext5/');
add_dirs($dirs, '/pve2/manager5/', '/usr/share/pve-manager/manager5/');
if ($ext6_dir_exists) { # only add ext6 dirs if they exist
add_dirs($dirs, '/pve2/ext6/', '/usr/share/pve-manager/ext6/');
add_dirs($dirs, '/pve2/manager6/', '/usr/share/pve-manager/manager6/');
}
add_dirs($dirs, '/pve2/images/' => '/usr/share/pve-manager/images/');
@ -191,9 +191,9 @@ sub get_index {
$mobile = $args->{mobile} ? 1 : 0;
}
my $ext5;
if (defined($args->{ext5})) {
$ext5 = $args->{ext5} ? 1 : 0;
my $ext6;
if (defined($args->{ext6})) {
$ext6 = $args->{ext6} ? 1 : 0;
}
my $page;
@ -202,8 +202,8 @@ sub get_index {
$page = PVE::NoVncIndex::get_index($lang, $username, $token, $args->{console});
} elsif ($mobile) {
$page = PVE::TouchIndex::get_index($lang, $username, $token, $args->{console});
} elsif ($ext5 && $ext5_dir_exists) {
$page = PVE::ExtJSIndex5::get_index($lang, $username, $token, $args->{console});
} elsif ($ext6 && $ext6_dir_exists) {
$page = PVE::ExtJSIndex6::get_index($lang, $username, $token, $args->{console});
} else {
$page = PVE::ExtJSIndex::get_index($lang, $username, $token, $args->{console});
}

View File

@ -20,7 +20,7 @@ WWWROOTDIR=${WWWBASEDIR}/root
WWWLOCALEDIR=${WWWBASEDIR}/locale
WWWIMAGEDIR=${WWWBASEDIR}/images
WWWEXT4DIR=${WWWBASEDIR}/ext4
WWWEXT5DIR=${WWWBASEDIR}/ext5
WWWEXT6DIR=${WWWBASEDIR}/ext6
WWWTOUCHDIR=${WWWBASEDIR}/touch
WWWCSSDIR=${WWWBASEDIR}/css
WWWJSDIR=${WWWBASEDIR}/js

View File

@ -1,4 +1,4 @@
# Note: please add ext5 for extJS 5 development
# Note: please add ext6 for extJS 6 development
SUBDIRS = images ext4 css manager bootstrap touch mobile
all: ${SUBDIRS}

40
www/ext6/Makefile Normal file
View File

@ -0,0 +1,40 @@
include ../../defines.mk
EXTJSDIR=ext-6.0.0
EXTJSSRC=${EXTJSDIR}-gpl.zip
EXTDATA= \
extjs/build/ext-all.js \
extjs/build/ext-all-debug.js
EXT_THEME= \
extjs/build/classic/theme-classic \
extjs/build/classic/theme-neptune \
${EXTDATA}: ${EXTJSSRC}
rm -rf ${EXTJSDIR} extjs
unzip -x ${EXTJSSRC}
mv ${EXTJSDIR} extjs
touch ${EXTDATA}
${EXTJSSRC}:
wget http://cdn.sencha.com/ext/gpl/ext-6.0.0-gpl.zip
all: ${EXTDATA}
.PHONY: install
install: ${EXTDATA}
install -d ${WWWEXT6DIR}
install -m 0644 ${EXTDATA} ${WWWEXT6DIR}
install -d ${WWWEXT6DIR}
cp -a extjs/build/classic/locale ${WWWEXT6DIR}
cp -a ${EXT_THEME} ${WWWEXT6DIR}
chown -R www-data:www-data ${WWWEXT6DIR}
.PHONY: distclean
distclean: clean
.PHONY: clean
clean:
rm -rf *~ ${EXTJSDIR} extjs

View File

@ -1,22 +1,21 @@
pveproxy with ExtJS 5 developpement mini howto
pveproxy with ExtJS 6 developpement mini howto
==============================================
unpack the ExtJS 5 sources, and copy them to /usr/share/pve-manager/ext5
unpack the ExtJS 6 sources, and copy them to /usr/share/pve-manager/ext6
cd www/ext5/
cd www/ext6/
make install
symlink the to our ext5 compatible javascript code
symlink the ext6 dir in pve-manager to the manager5 directory
cd /usr/share/pve-manager
ln -s PATH_TO_YOUR_GIT_REPO/www/manager5
ln -s PATH_TO_YOUR_GIT_REPO/www/manager5 #this is not a typo
access the PVE proxy with ExtJS 5
access the PVE proxy with ExtJS 6
https://localhost:8006/?ext5=1
https://localhost:8006/?ext6=1
With the extra parameter **ext5=1**, pve-proxy will call the function **PVE::ExtJSIndex5::get_index()**
which returns a HTML page, with all javascript files included.
Provided you included the javascript in **PVE/ExtJSIndex5.pm**, a simple browser refresh is then enough
to see your changes.
With the extra parameter **ext6=1**, pve-proxy will call the function **PVE::ExtJSIndex6::get_index()**
which returns a HTML page, with all javascript symlinked from your git repository.
Provided you included the javascript files in **PVE/ExtJSIndex5.pm**, after editing a file in the git repository, a simple refresh is enough to see your changes in the browser.