From 086d666e191264688c0c5a9e34fe1e2228b29820 Mon Sep 17 00:00:00 2001 From: Simon Rettberg Date: Mon, 29 Jun 2020 10:51:46 +0200 Subject: [locationinfo] Add option to show hostnames --- .../locationinfo/inc/infopanel.inc.php | 26 ++++++++++++++++++---- .../locationinfo/inc/locationinfo.inc.php | 1 + .../locationinfo/lang/de/template-tags.json | 23 ++++++++++--------- .../locationinfo/lang/en/template-tags.json | 6 +++-- modules-available/locationinfo/page.inc.php | 4 +++- .../locationinfo/templates/frontend-default.html | 12 +++++++++- .../templates/page-config-panel-default.html | 16 +++++++++++++ 7 files changed, 69 insertions(+), 19 deletions(-) diff --git a/modules-available/locationinfo/inc/infopanel.inc.php b/modules-available/locationinfo/inc/infopanel.inc.php index 1e2e7313..b0ee0d56 100644 --- a/modules-available/locationinfo/inc/infopanel.inc.php +++ b/modules-available/locationinfo/inc/infopanel.inc.php @@ -65,7 +65,7 @@ class InfoPanel $config['locations'][$lid]['config'] = $overrides[$lid]; } } - self::appendMachineData($config['locations'], $lids, true); + self::appendMachineData($config['locations'], $lids, true, $config['hostname']); } self::appendOpeningTimes($config['locations'], $lids); @@ -87,7 +87,7 @@ class InfoPanel * @param array $array location list to populate with machine data * @param bool $withPosition Defines if coords should be included or not. */ - public static function appendMachineData(&$array, $idList = false, $withPosition = false) + public static function appendMachineData(&$array, $idList = false, $withPosition = false, $withHostname = false) { if (empty($array) && $idList === false) return; @@ -101,8 +101,14 @@ class InfoPanel $ignoreList = RunMode::getAllClients(false, false); } - $positionCol = $withPosition ? 'm.position,' : ''; - $query = "SELECT m.locationid, m.machineuuid, $positionCol m.logintime, m.lastseen, m.lastboot, m.state FROM machine m + $extraCols = ''; + if ($withPosition) { + $extraCols .= 'm.position,'; + } + if ($withHostname) { + $extraCols .= 'm.hostname,'; + } + $query = "SELECT m.locationid, m.machineuuid, m.hostname, $extraCols m.logintime, m.lastseen, m.lastboot, m.state FROM machine m WHERE m.locationid IN (:idlist)"; $dbquery = Database::simpleQuery($query, array('idlist' => $idList)); @@ -129,6 +135,18 @@ class InfoPanel } } } + if ($withHostname) { + if (ip2long($row['hostname']) !== false) { + $pc['host'] = $row['hostname']; + } else { + $i = strpos($row['hostname'], '.'); + if ($i === false) { + $pc['host'] = $row['hostname']; + } else { + $pc['host'] = substr($row['hostname'], 0, $i); + } + } + } $pc['pcState'] = LocationInfo::getPcState($row); //$pc['pcState'] = ['BROKEN', 'OFFLINE', 'IDLE', 'OCCUPIED', 'STANDBY'][mt_rand(0,4)]; // XXX diff --git a/modules-available/locationinfo/inc/locationinfo.inc.php b/modules-available/locationinfo/inc/locationinfo.inc.php index 0a391a83..5a66f15a 100644 --- a/modules-available/locationinfo/inc/locationinfo.inc.php +++ b/modules-available/locationinfo/inc/locationinfo.inc.php @@ -105,6 +105,7 @@ class LocationInfo 'roomupdate' => 15, 'configupdate' => 180, 'overrides' => [], + 'hostname' => false, ); } if ($type === 'SUMMARY') { diff --git a/modules-available/locationinfo/lang/de/template-tags.json b/modules-available/locationinfo/lang/de/template-tags.json index c7875cc5..14bda6b4 100644 --- a/modules-available/locationinfo/lang/de/template-tags.json +++ b/modules-available/locationinfo/lang/de/template-tags.json @@ -5,19 +5,18 @@ "lang_backend": "Backend", "lang_backends": "Backends", "lang_bookmarks": "Lesezeichen", - "lang_bookmarksTooltip": "Füge Lesezeichen hinzu, die der Browser erhalten soll", + "lang_bookmarksTooltip": "F\u00fcge Lesezeichen hinzu, die der Browser erhalten soll", "lang_browser": "Browser", "lang_browserTooltip": "Welcher Browser soll genutzt werden", - "lang_calendar": "Kalender", "lang_calendarUpdate": "Kalender Update", "lang_calupdateTooltip": "Zeit nachdem der Kalender aktualisiert wird (in Minuten)", "lang_checkConnection": "Verbindung pr\u00fcfen", "lang_chromium": "Chromium", "lang_closed": "Geschlossen", "lang_closingTime": "Schlie\u00dfungszeit", - "lang_configOverride": "Konfiguration überschreiben", - "lang_countIp": "über IP-Adressbereich", - "lang_countRoomplan": "über Raumplaner", + "lang_configOverride": "Konfiguration \u00fcberschreiben", + "lang_countIp": "\u00fcber IP-Adressbereich", + "lang_countRoomplan": "\u00fcber Raumplaner", "lang_createPanel": "Panel anlegen", "lang_credentials": "Anmeldung", "lang_currentDay": "Aktueller Tag", @@ -44,10 +43,11 @@ "lang_friday": "Freitag", "lang_general": "Allgemein", "lang_generalSettings": "Allgemeine Einstellungen", + "lang_hostnameTooltip": "Zeige kurzen Hostnamen in Rechner-Piktogramm", "lang_ignoreSslTooltip": "Akzeptiere ung\u00fcltige, abgelaufene oder selbstsignierte SSL-Zertifikate", "lang_insecureSsl": "Unsicheres SSL", "lang_interactive": "Interaktiver Browser", - "lang_interactiveTooltip": "Aktivieren, um reguläres Surfen zuzulassen", + "lang_interactiveTooltip": "Aktivieren, um regul\u00e4res Surfen zuzulassen", "lang_language": "Sprache", "lang_languageTooltip": "Legt die Sprache der angezeigten Oberfl\u00e4che fest", "lang_lastCalendarUpdate": "Kalender Update", @@ -71,8 +71,8 @@ "lang_mode3": "Raum", "lang_mode4": "Wechselnd", "lang_modeTooltip": "Die Anzeigemodi, welche das Frontend unterst\u00fctzt", - "lang_monday": "Montag", "lang_monTilFr": "Montag - Freitag", + "lang_monday": "Montag", "lang_nameTooltip": "Legt den Namen des Servers fest", "lang_noLocationsWarning": "Bitte w\u00e4hlen Sie mindestens einen Ort aus, der vom Panel angezeigt werden soll.", "lang_noServer": "", @@ -94,9 +94,9 @@ "lang_room": "Raum", "lang_roomId": "Raum ID", "lang_roomIdTooltip": "Die Raum ID, die der Server ben\u00f6tigt, um Kalenderdaten abzurufen (bei Exchange die Postfachadresse)", - "lang_roomplannerTooltip": "Legt fest, ob Rechner anhand der Zuordnung über IP oder über den Raumplan gezählt werden", - "lang_roomupdateTooltip": "Zeit nach der die PCs aktualisiert werden (in Sekunden)", "lang_roomUpdate": "Raum Update", + "lang_roomplannerTooltip": "Legt fest, ob Rechner anhand der Zuordnung \u00fcber IP oder \u00fcber den Raumplan gez\u00e4hlt werden", + "lang_roomupdateTooltip": "Zeit nach der die PCs aktualisiert werden (in Sekunden)", "lang_rotation": "Rotation", "lang_rotation0": "0\u00b0", "lang_rotation1": "90\u00b0 \u27f2", @@ -127,12 +127,13 @@ "lang_shortTuesday": "Di", "lang_shortWed": "Mi", "lang_shortWednesday": "Mi", + "lang_showHostname": "Hostname anzeigen", "lang_showLog": "Log", "lang_slxbrowser": "SLX Browser", "lang_splitlogin": "Geteiltes Login", "lang_splitloginTooltip": "Erlaube nur Gast-Login oder Gast+Nutzer-Login wenn aktiviert", "lang_startDay": "Start Tag", - "lang_startDayTooltip": "Der Wochentag an dem der Kalender anfängt", + "lang_startDayTooltip": "Der Wochentag an dem der Kalender anf\u00e4ngt", "lang_summaryPanel": "\u00dcbersichts-Panel", "lang_summaryUpdateIntervalTooltip": "Aktualisierungsintervall (Sekunden)", "lang_sunday": "Sonntag", @@ -149,7 +150,7 @@ "lang_urlPanel": "URL-Panel", "lang_urlTooltip": "URL die aufgerufen wird", "lang_urlWhitelist": "Whitelist", - "lang_useRoomplanner": "Rechner zählen", + "lang_useRoomplanner": "Rechner z\u00e4hlen", "lang_vertical": "Vertikaler Modus", "lang_verticalTooltip": "Legt fest, ob Kalender und Raum \u00fcbereinander angezeigt werden sollen", "lang_wednesday": "Mittwoch", diff --git a/modules-available/locationinfo/lang/en/template-tags.json b/modules-available/locationinfo/lang/en/template-tags.json index 6411efc0..505930b8 100644 --- a/modules-available/locationinfo/lang/en/template-tags.json +++ b/modules-available/locationinfo/lang/en/template-tags.json @@ -44,6 +44,7 @@ "lang_friday": "Friday", "lang_general": "General", "lang_generalSettings": "General Settings", + "lang_hostnameTooltip": "Show simple hostname inside computer icon", "lang_ignoreSslTooltip": "Accept invalid, expired or self-signed ssl certificates", "lang_insecureSsl": "Insecure SSL", "lang_interactive": "Interactive Browser", @@ -71,8 +72,8 @@ "lang_mode3": "Room", "lang_mode4": "Switching", "lang_modeTooltip": "The display modes the frontend supports", - "lang_monday": "Monday", "lang_monTilFr": "Monday - Friday", + "lang_monday": "Monday", "lang_nameTooltip": "Defines the name of the server", "lang_noLocationsWarning": "Please select at least one location this panel should display.", "lang_noServer": "", @@ -94,9 +95,9 @@ "lang_room": "Room", "lang_roomId": "Room ID", "lang_roomIdTooltip": "The ID of the room the server needs, for querying the calendar data (when using exchange the room mailbox)", + "lang_roomUpdate": "Room Update", "lang_roomplannerTooltip": "Determine if PCs are counted on the basis of IP-range or by roomplanner", "lang_roomupdateTooltip": "Time the PCs in the room gets updated (in seconds)", - "lang_roomUpdate": "Room Update", "lang_rotation": "Rotation", "lang_rotation0": "0\u00b0", "lang_rotation1": "90\u00b0 \u27f2", @@ -127,6 +128,7 @@ "lang_shortTuesday": "Tue", "lang_shortWed": "Wed", "lang_shortWednesday": "Wed", + "lang_showHostname": "Show hostname", "lang_showLog": "Log", "lang_slxbrowser": "SLX Browser", "lang_splitlogin": "Split Login", diff --git a/modules-available/locationinfo/page.inc.php b/modules-available/locationinfo/page.inc.php index 13d7d459..0885f446 100644 --- a/modules-available/locationinfo/page.inc.php +++ b/modules-available/locationinfo/page.inc.php @@ -364,7 +364,7 @@ class Page_LocationInfo extends Page if (count($locationids) > 4) { $locationids = array_slice($locationids, 0, 4); } - // Build json struct + // Build struct from POST $conf = array( 'language' => Request::post('language', 'en', 'string'), 'mode' => Request::post('mode', 1, 'int'), @@ -380,6 +380,7 @@ class Page_LocationInfo extends Page 'switchtime' => Request::post('switchtime', 20, 'int'), 'calupdate' => Request::post('calupdate', 120, 'int'), 'roomupdate' => Request::post('roomupdate', 30, 'int'), + 'hostname' => Request::post('hostname', false, 'bool'), ); if ($conf['roomupdate'] < 15) { $conf['roomupdate'] = 15; @@ -1025,6 +1026,7 @@ class Page_LocationInfo extends Page 'locations' => Location::getLocations(), 'locationids' => $panel['locationids'], 'overrides' => json_encode($config['overrides']), + 'hostname_checked' => $config['hostname'] ? 'checked' : '', )); } elseif ($panel['paneltype'] === 'URL') { diff --git a/modules-available/locationinfo/templates/frontend-default.html b/modules-available/locationinfo/templates/frontend-default.html index 70f71bbc..2868c034 100755 --- a/modules-available/locationinfo/templates/frontend-default.html +++ b/modules-available/locationinfo/templates/frontend-default.html @@ -233,6 +233,16 @@ optional: color: #fff; } + .pcname { + display: block; + text-wrap: avoid; + white-space: nowrap; + position: relative; + overflow: visible; + height: 0; + font-size: 10pt; + } + .BROKEN .screen-inner { background: #000; } @@ -1427,7 +1437,7 @@ optional: //var $img = $('').prop('id', "pc-img_" + room.id + "_" + layout[i].id).addClass('pc-img'); var $overlays = $('
').addClass('pc-overlay-container'); layout[i].$div = $('
').prop('id', "pc_" + room.id + "_" + layout[i].id).addClass('pc-container'); - layout[i].$div.append($('
').addClass('screen-frame').append($('
').addClass('screen-inner'))); + layout[i].$div.append($('
').addClass('screen-frame').append($('
').addClass('screen-inner').append($('
').addClass('pcname').text(layout[i].host)))); layout[i].$div.append($('
').addClass('screen-foot1')); layout[i].$div.append($('
').addClass('screen-foot2')); //layout[i].$div.append($overlays).append($img); diff --git a/modules-available/locationinfo/templates/page-config-panel-default.html b/modules-available/locationinfo/templates/page-config-panel-default.html index 9a68eee8..86e2a520 100644 --- a/modules-available/locationinfo/templates/page-config-panel-default.html +++ b/modules-available/locationinfo/templates/page-config-panel-default.html @@ -276,6 +276,22 @@
+
+
+
+ +
+
+ +
+
+

+ +

+
+
+
+
-- cgit v1.2.3-55-g7522