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

Varname:

Dies ist der Variablenname, der im Backend verwendet wird.

name

Der Name, der in der Weboberfläche angezeigt wird.

description

Beschreibung der Option.

group

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.

type

Der Type der Option. Dieser Wert bestimmt auch das Eingabefeld. Weitere Informationen finden Sie weiter unten in diesem Artikel.

default

(optional) Hier kann ein Standardwert definiert werden. Dieser wird beim Anlegen der Variable verwendet. Diese Information ist auch in der Weboberfläche einsehbar.

readonly

(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

bool

Wahrheitswert (true/false)

Auswahlfeld mit Ja / Nein

string

Zeichenkette

Einzeiliges Textfeld

array

Liste von mehreren Werten

Mehrere einzeilige Textfelder; jede Zeile (Feld) entspricht einem Wert

int

Zahlenwert

Einzeiliges Textfeld

int:Einheit

Zahlenwert mit angegebener Einheit (Beispiel: int:MB). Einheiten sind Freitext, die Werte days und hours werden automatisch übersetzt.

Einzeiliges Textfeld mit angegebener Einheit

select[]

Auswahlfeld mit vorgegebenen Werten

Auswahlfeld

group

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