Konfigurationsvorlagen#
Mit den Konfigurationsvorlagen lassen sich die Einstellungmöglichkeiten, die in der Weboberfläche unter Verwaltung > System > Konfiguration erreichbar sind, erweitern. Sie sind explizit dazu gedacht, globale Einstellungen für ein Modul festzulegen. Zum Beispiel verwendet der IServ Klausurplan eine Konfigurationsvorlage, mit der der Administrator festlegen kann, ab wie vielen Klausuren pro Woche eine Warnung für den Schüler angezeigt wird.
Aufbau der Konfigurationsvorlagen#
${Varname}:
name ${value}
description ${value}
group ${value}
type ${type}
default ${value}
readonly true
${value}
muss durch einen für das Feld passenden Variablen-Wert ersetzt werden, siehe die entsprechenden Beispiele im Folgenden. ${type}
muss durch array
, bool
, string
, select
oder integer
ersetzt werden, je nachdem welchen Typ die Eigenschaft haben soll. ${Varname}
muss durch einen eindeutigen Variablennamen ersetzt werden.
Wichtig: Für den Raum zwischen Feldnamen und Wert werden Tabulatoren verwendet!
Sämtliche Informationen werden in der Regel in Englisch verfasst und über die IServ-interne Übersetzungsfunktion ins Deutsche übersetzt.
Die Vorlagen liegen in /usr/share/iserv/iservcfg/config
.
Die Parameter im Überblick#
Parameter |
Beschreibung |
---|---|
|
Dies ist der Variablenname, der im Backend verwendet wird. |
|
Der Name, der in der Weboberfläche angezeigt wird. |
|
Beschreibung der Option. |
|
Die Optionen lassen sich über diesen Parameter gruppieren. Dies dient der Übersicht. Jedes Modul sollte hierfür seine eigene Gruppe im Format Module: xxx anlegen. |
|
Der Type der Option. Dieser Wert bestimmt auch das Eingabefeld. Weitere Informationen finden Sie weiter unten in diesem Artikel. |
|
(optional) Hier kann ein Standardwert definiert werden. Dieser wird beim Anlegen der Variable verwendet. Diese Information ist auch in der Weboberfläche einsehbar. |
|
(optional) Verhindert, dass die Option über die Weboberfläche geändert wird. Der aktuelle Wert ist zwar einsehbar, kann aber nicht geändert werden. Der Wert kann dann nur über das Programm iservcfg als root verändert werden. |
Besonderheiten#
Varname:
Der Name darf später nicht verändert werden, da keine Übernahme des Wertes möglich ist.
Die Groß- und Kleinschreibung erfolgt im CamelCase-Format, beispielsweise
MyConfigVariable
.Die Zeile muss mit einem Doppelpunkt (
:
) enden.
readonly
kann nur den Wert true annehmen. Andernfalls wird der Parameter einfach weggelassen.
default
Für den Typ array muss das Format wie folgt aussehen:
default: ("wert1" "wert2" "wert2")
Unterstützte Typen#
Typ |
Funktion |
Eingabefeld |
---|---|---|
|
Wahrheitswert ( |
Auswahlfeld mit Ja / Nein |
|
Zeichenkette |
Einzeiliges Textfeld |
|
Liste von mehreren Werten |
Mehrere einzeilige Textfelder; jede Zeile (Feld) entspricht einem Wert |
|
Zahlenwert |
Einzeiliges Textfeld |
|
Zahlenwert mit angegebener Einheit (Beispiel: int:MB). Einheiten sind Freitext, die Werte days und hours werden automatisch übersetzt. |
Einzeiliges Textfeld mit angegebener Einheit |
|
Auswahlfeld mit vorgegebenen Werten |
Auswahlfeld |
|
Auswahl einer Gruppe |
Auswahlfeld mit einer Liste aller nicht-gelöschten IServ-Gruppen |
Besonderheiten#
select[]#
Der Typ select hat zwei Einsatzmöglichkeiten.
Die Hauptfunktion ist die Vorgabe einer Liste vordefinierter Werte:
select[daily|weekly|monthly]
Getrennt werden die Werte durch ein sogenanntes Pipe-Zeichen (|).
Zusätzlich kann mit einem Gleichheitszeichen (=) hinter jedem Wert noch ein alternativer Anzeigentext definiert werden. Die Administratoren sehen diesen Anzeigentext, während im Hintergrund der eigentliche Wert in die Konfiguration geschrieben wird:
select[de_DE=German (Germany)|en_US=English (USA)]
Auch diese Werte werden durch die interne Übersetzungsfunktion übersetzt.
Abrufen der Werte im Code#
Zum Abrufen der Werte im eigenen Code stellt IServ für die Programmiersprachen PHP, Perl und Shell/Bash globale Funktonen bereit.
PHP/Symfony#
Abrufen eines Wertes innerhalb eines Controllers:
namespace Schulname\FooBundle\Controller;
use IServ\Library\Config\Config;
class MyController
{
public function myAction(Config $config)
{
$var = $config->get('Varname'); // returns value of configuration variable or false if variable does not exists
}
}
Sollte man eine Konfigurationsvariable innerhalb einer eigenen Service-Klasse benötigen, kann der Service IServLibraryConfigConfig per Dependency Injection in den eigenen Service eingebunden werden. Gearbeitet wird damit dann wie im Controller:
namespace Schulname\FooBundle\Service;
use IServ\Library\Config\Config;
class MyService
{
/**
* @var Config
*/
private $config;
/**
* The constructor.
*
* @param Config $config
*/
public function __construct(Config $config)
{
$this->config = $config;
}
public function doSomethingWithConfig()
{
$var = $this->config->get('Varname'); // returns value of configuration variable or false if variable does not exists
[...]
}
}
Perl#
Um die Werte in Perl abzurufen, muss lediglich das Perl-Modul IServ::Conf eingebunden werden:
use IServ::Conf;
my $var = $conf->{Varname};
Shell/Bash#
Um auf Variablen zuzugreifen, muss nur ein globales Include-Skript eingebunden werden:
#!/bin/bash
. /usr/lib/iserv/cfg
echo $Varname