summaryrefslogtreecommitdiffstats
path: root/modules-available/baseconfig
diff options
context:
space:
mode:
Diffstat (limited to 'modules-available/baseconfig')
-rw-r--r--modules-available/baseconfig/hooks/locations-column.inc.php76
-rw-r--r--modules-available/baseconfig/lang/de/module.json3
-rw-r--r--modules-available/baseconfig/lang/en/module.json3
3 files changed, 82 insertions, 0 deletions
diff --git a/modules-available/baseconfig/hooks/locations-column.inc.php b/modules-available/baseconfig/hooks/locations-column.inc.php
new file mode 100644
index 00000000..ca30d56e
--- /dev/null
+++ b/modules-available/baseconfig/hooks/locations-column.inc.php
@@ -0,0 +1,76 @@
+<?php
+
+if (!User::hasPermission('.baseconfig.view'))
+ return null;
+
+class BaseconfigLocationColumn extends AbstractLocationColumn
+{
+
+ private $byLoc;
+ private $byMachine;
+
+ public function __construct(array $allowedLocationIds)
+ {
+ if (in_array(0, $allowedLocationIds)) {
+ $extra = 'OR m.locationid IS NULL';
+ } else {
+ $extra = '';
+ }
+ // Count overridden config vars
+ $this->byLoc = Database::queryKeyValueList("SELECT locationid, Count(*) AS cnt
+ FROM `setting_location`
+ WHERE locationid IN (:allowedLocationIds)
+ GROUP BY locationid", compact('allowedLocationIds'));
+ // Confusing because the count might be inaccurate within a branch
+ //$this->propagateFields($locationList, '', 'overriddenVars', 'overriddenClass');
+ // Count machines with overriden var(s)
+ $this->byMachine = Database::queryKeyValueList("SELECT IFNULL(m.locationid, 0), Count(DISTINCT sm.machineuuid) AS cnt
+ FROM setting_machine sm
+ INNER JOIN machine m USING (machineuuid)
+ WHERE (m.locationid IN (:allowedLocationIds) $extra)
+ GROUP BY m.locationid", compact('allowedLocationIds'));
+ // There WHERE statement drops clients without location - but this cannot be displayed by the locations
+ // table anyways as of now - maybe implement some day? Or just encourage everyone to have a root location
+ }
+
+ public function getColumnHtml(int $locationId): string
+ {
+ $ret = '';
+ if ($this->byLoc[$locationId] ?? 0) {
+ $title = htmlspecialchars(Dictionary::translateFileModule('baseconfig', 'module', 'overriden-vars-for-location'));
+ $ret .= <<<EOF
+ <span class="badge" title="{$title}">
+ <span class="glyphicon glyphicon-home"></span> {$this->byLoc[$locationId]}
+ </span>
+EOF;
+ }
+ if ($this->byMachine[$locationId] ?? 0) {
+ $title = htmlspecialchars(Dictionary::translateFileModule('baseconfig', 'module', 'overriden-vars-machines'));
+ $ret .= <<<EOF
+ <span class="badge" title="{$title}">
+ <span class="glyphicon glyphicon-tasks"></span> {$this->byMachine[$locationId]}
+ </span>
+EOF;
+ }
+ return $ret;
+ }
+
+ public function getEditUrl(int $locationId): string
+ {
+ if (!User::hasPermission('.baseconfig.edit', $locationId))
+ return '';
+ return '?do=baseconfig&module=locations&locationid=' . $locationId;
+ }
+
+ public function header(): string
+ {
+ return Dictionary::translateFileModule('baseconfig', 'module', 'location-column-header');
+ }
+
+ public function priority(): int
+ {
+ return 1000;
+ }
+}
+
+return new BaseconfigLocationColumn($allowedLocationIds); \ No newline at end of file
diff --git a/modules-available/baseconfig/lang/de/module.json b/modules-available/baseconfig/lang/de/module.json
index f7dbf53a..a9c2c6bf 100644
--- a/modules-available/baseconfig/lang/de/module.json
+++ b/modules-available/baseconfig/lang/de/module.json
@@ -1,5 +1,8 @@
{
+ "location-column-header": "Konfig.-Variablen",
"module_name": "Konfigurationsvariablen",
+ "overriden-vars-for-location": "F\u00fcr diesen Ort \u00fcberschriebene Variablen",
+ "overriden-vars-machines": "Rechner an diesem Ort, die \u00fcberschriebene Variablen haben",
"source-default": "Auslieferungszustand",
"source-global": "Global"
} \ No newline at end of file
diff --git a/modules-available/baseconfig/lang/en/module.json b/modules-available/baseconfig/lang/en/module.json
index 97e19f92..5a25bcff 100644
--- a/modules-available/baseconfig/lang/en/module.json
+++ b/modules-available/baseconfig/lang/en/module.json
@@ -1,5 +1,8 @@
{
+ "location-column-header": "Config. Vars",
"module_name": "Config Variables",
+ "overriden-vars-for-location": "Number of variables overridden at this location",
+ "overriden-vars-machines": "Machines at this location that have overridden variables",
"source-default": "Factory default",
"source-global": "Global"
} \ No newline at end of file