summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSimon Rettberg2016-09-08 18:45:16 +0200
committerSimon Rettberg2016-09-08 18:45:16 +0200
commit6210a5bff6504303afefd10728d71c2fdf047812 (patch)
tree8572693a2b67b67105f716425f5615a3d96d596b
parent[session] Add simple "change password" GUI (diff)
downloadslx-admin-6210a5bff6504303afefd10728d71c2fdf047812.tar.gz
slx-admin-6210a5bff6504303afefd10728d71c2fdf047812.tar.xz
slx-admin-6210a5bff6504303afefd10728d71c2fdf047812.zip
[roomplanner] Add option to enable/disable pvsmgr dedicated mode
In dedicated mode, the pvsmgr will skip login/vmchooser and directly open the pvsmgr
-rw-r--r--modules-available/roomplanner/baseconfig/getconfig.inc.php8
-rw-r--r--modules-available/roomplanner/install.inc.php15
-rw-r--r--modules-available/roomplanner/js/init.js3
-rw-r--r--modules-available/roomplanner/page.inc.php14
-rw-r--r--modules-available/roomplanner/templates/page.html5
5 files changed, 34 insertions, 11 deletions
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 @@
+<?php
+
+$configVars["SLX_PVS_CONFIG_URL"] = 'http://' . $_SERVER['SERVER_ADDR'] . $_SERVER['SCRIPT_NAME'] . '?do=roomplanner';
+
+$res = Database::queryFirst('SELECT dedicatedmgr FROM location_roomplan WHERE managerip = :ip LIMIT 1', ['ip' => $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 @@
</div>
<div class="pull-left">
- <div class="input-group" style="width:300px">
+ <div class="input-group" style="width:400px">
<div class="input-group-addon">{{lang_managerIp}}</div>
- <input class="form-control" type="text" id="manager-ip" value="{{managerip}}" placeholder="1.2.3.4">
+ <input class="form-control" type="text" id="manager-ip" value="{{managerip}}" placeholder="1.2.3.4" style="width:120px">
+ <div class="input-group-addon checkbox"><input id="dedi-mgr" type="checkbox" {{dediMgrChecked}}> <label for="dedi-mgr">{{lang_dedicatedManager}}</label></div>
</div>
</div>
<div class="pull-right">