From 6210a5bff6504303afefd10728d71c2fdf047812 Mon Sep 17 00:00:00 2001 From: Simon Rettberg Date: Thu, 8 Sep 2016 18:45:16 +0200 Subject: [roomplanner] Add option to enable/disable pvsmgr dedicated mode In dedicated mode, the pvsmgr will skip login/vmchooser and directly open the pvsmgr --- .../roomplanner/baseconfig/getconfig.inc.php | 8 ++++++++ modules-available/roomplanner/install.inc.php | 15 ++++++++++++--- modules-available/roomplanner/js/init.js | 3 ++- modules-available/roomplanner/page.inc.php | 14 +++++++++----- modules-available/roomplanner/templates/page.html | 5 +++-- 5 files changed, 34 insertions(+), 11 deletions(-) create mode 100644 modules-available/roomplanner/baseconfig/getconfig.inc.php diff --git a/modules-available/roomplanner/baseconfig/getconfig.inc.php b/modules-available/roomplanner/baseconfig/getconfig.inc.php new file mode 100644 index 00000000..76cd399d --- /dev/null +++ b/modules-available/roomplanner/baseconfig/getconfig.inc.php @@ -0,0 +1,8 @@ + $ip]); +if ($res !== false && (int)$res['dedicatedmgr'] !== 0) { + $configVars["SLX_PVS_DEDICATED"] = 'yes'; +} \ No newline at end of file diff --git a/modules-available/roomplanner/install.inc.php b/modules-available/roomplanner/install.inc.php index 0a6c3729..a6d98384 100644 --- a/modules-available/roomplanner/install.inc.php +++ b/modules-available/roomplanner/install.inc.php @@ -6,19 +6,21 @@ $res = array(); $res[] = tableCreate('location_roomplan', " `locationid` INT(11) NOT NULL, `managerip` varchar(45) CHARACTER SET ascii DEFAULT '', + `dedicatedmgr` tinyint(1) NOT NULL DEFAULT 0, `tutoruuid` char(36) CHARACTER SET ascii DEFAULT NULL, `roomplan` BLOB DEFAULT NULL, PRIMARY KEY (`locationid`), - KEY `tutoruuid` (`tutoruuid`)"); + KEY `tutoruuid` (`tutoruuid`), + KEY `managerip` (`managerip`)"); if (!tableHasColumn('location_roomplan', 'managerip')) { - $ret = Database::exec("ALTER TABLE `location_roomplan` ADD COLUMN `managerip` varchar(45) CHARACTER SET ascii DEFAULT '' AFTER locationid") !== false; + $ret = Database::exec("ALTER TABLE `location_roomplan` ADD COLUMN `managerip` varchar(45) CHARACTER SET ascii DEFAULT '' AFTER locationid," + . " ADD KEY `managerip` (`managerip`)") !== false; if ($ret === false) { finalResponse(UPDATE_FAILED, 'Adding managerip to location_roomplan failed: ' . Database::lastError()); } $res[] = UPDATE_DONE; } - if (!tableHasColumn('location_roomplan', 'tutoruuid')) { $ret = Database::exec("ALTER TABLE `location_roomplan` ADD COLUMN `tutoruuid` char(36) CHARACTER SET ascii DEFAULT NULL AFTER managerip," . " ADD KEY `tutoruuid` (`tutoruuid`)") !== false; @@ -27,6 +29,13 @@ if (!tableHasColumn('location_roomplan', 'tutoruuid')) { } $res[] = UPDATE_DONE; } +if (!tableHasColumn('location_roomplan', 'dedicatedmgr')) { + $ret = Database::exec("ALTER TABLE `location_roomplan` ADD `dedicatedmgr` tinyint(1) NOT NULL DEFAULT 0 AFTER `managerip`") !== false; + if ($ret === false) { + finalResponse(UPDATE_FAILED, 'Adding dedicatedmgr to location_roomplan failed: ' . Database::lastError()); + } + $res[] = UPDATE_DONE; +} if (in_array(UPDATE_DONE, $res)) { Database::exec("ALTER TABLE `location_roomplan` diff --git a/modules-available/roomplanner/js/init.js b/modules-available/roomplanner/js/init.js index 39bfefce..454146d3 100644 --- a/modules-available/roomplanner/js/init.js +++ b/modules-available/roomplanner/js/init.js @@ -26,13 +26,14 @@ function initRoomplanner() { alert('Invalid IP address format'); return; } + var dediMgr = $('#dedi-mgr').prop('checked') ? 'on' : ''; $('#saveBtn').prop('disabled', true); $('#error-msg').hide(); $('#success-msg').hide(); $('#saving-msg').show(); var serializedCurrent = roomplanner.serialize(); $.post('?do=roomplanner&locationid=' + locationId, - { token: TOKEN, action: 'save', serializedRoom: serializedCurrent, managerip: managerip } + { token: TOKEN, action: 'save', serializedRoom: serializedCurrent, managerip: managerip, dedimgr: dediMgr } ).done(function ( data ) { if (data.indexOf('SUCCESS') !== -1) { window.close(); diff --git a/modules-available/roomplanner/page.inc.php b/modules-available/roomplanner/page.inc.php index ecbf9d1f..f2f4d963 100644 --- a/modules-available/roomplanner/page.inc.php +++ b/modules-available/roomplanner/page.inc.php @@ -58,11 +58,12 @@ class Page_Roomplanner extends Page if ($this->action === 'show') { /* do nothing */ Dashboard::disable(); - $config = Database::queryFirst('SELECT roomplan, managerip FROM location_roomplan WHERE locationid = :locationid', ['locationid' => $this->locationid]); + $config = Database::queryFirst('SELECT roomplan, managerip, dedicatedmgr FROM location_roomplan WHERE locationid = :locationid', ['locationid' => $this->locationid]); if ($config !== false) { $managerIp = $config['managerip']; + $dediMgr = $config['dedicatedmgr'] ? 'checked' : ''; } else { - $managerIp = ''; + $dediMgr = $managerIp = ''; } $furniture = $this->getFurniture($config); $subnetMachines = $this->getPotentialMachines(); @@ -71,6 +72,7 @@ class Page_Roomplanner extends Page Render::addTemplate('page', [ 'location' => $this->location, 'managerip' => $managerIp, + 'dediMgrChecked' => $dediMgr, 'subnetMachines' => json_encode($subnetMachines), 'locationid' => $this->locationid, 'roomConfiguration' => json_encode($roomConfig)]); @@ -189,12 +191,14 @@ class Page_Roomplanner extends Page protected function saveRoomConfig($furniture) { $obj = json_encode(['furniture' => $furniture]); - Database::exec('INSERT INTO location_roomplan (locationid, roomplan, managerip, tutoruuid)' - . ' VALUES (:locationid, :roomplan, :managerip, :tutoruuid)' - . ' ON DUPLICATE KEY UPDATE roomplan=VALUES(roomplan), managerip=VALUES(managerip), tutoruuid=VALUES(tutoruuid)', [ + Database::exec('INSERT INTO location_roomplan (locationid, roomplan, managerip, tutoruuid, dedicatedmgr)' + . ' VALUES (:locationid, :roomplan, :managerip, :tutoruuid, :dedicatedmgr)' + . ' ON DUPLICATE KEY UPDATE ' + . ' roomplan=VALUES(roomplan), managerip=VALUES(managerip), tutoruuid=VALUES(tutoruuid), dedicatedmgr=VALUES(dedicatedmgr)', [ 'locationid' => $this->locationid, 'roomplan' => $obj, 'managerip' => Request::post('managerip', '', 'string'), + 'dedicatedmgr' => (Request::post('dedimgr') === 'on' ? 1 : 0), 'tutoruuid' => null // TODO ]); } diff --git a/modules-available/roomplanner/templates/page.html b/modules-available/roomplanner/templates/page.html index ba720ada..52916aa9 100644 --- a/modules-available/roomplanner/templates/page.html +++ b/modules-available/roomplanner/templates/page.html @@ -311,9 +311,10 @@
-
+
{{lang_managerIp}}
- + +
-- cgit v1.2.3-55-g7522