Eigene Felder¶
MRBS 1.12.2 erkennt zusätzliche Datenbankspalten und verwendet sie als Felder für Buchungen, Räume und Benutzer. Eigene Felder sind deshalb Schemaerweiterungen; Konfigurationswerte legen die Spalten nicht automatisch an.
Zuerst sichern
Die Datenbank sichern und die Änderung in einer Testinstanz prüfen. MRBS-Upgrades erstellen, migrieren oder entfernen keine standortspezifischen Spalten.
Unterstützte Tabellen¶
| Datenbanktabelle | Zweck | Wichtige Regel |
|---|---|---|
entry |
Zusatzdaten einer Buchung | Dieselbe Spalte auch in repeat anlegen |
repeat |
Vorlagendaten einer Buchungsserie | Name, Typ, Länge, NULL-Regel und Vorgabe müssen mit entry übereinstimmen |
room |
Zusätzliche Raum- oder Ressourceneigenschaften | Wird mit den Raumdaten angezeigt und bearbeitet |
users |
Zusätzliche Profildaten | Nur bei Datenbank-Authentifizierung verwendet |
Fehlt zu einer Spalte in entry die identische Spalte in repeat, schlagen
Vorgänge mit Buchungsserien fehl. Beide Spalten gehören zu einer gemeinsamen
Schemaänderung.
Spaltennamen dürfen nur Buchstaben, Ziffern und Unterstriche enthalten. Für
PostgreSQL müssen sie mit einem Buchstaben oder Unterstrich beginnen.
Empfehlenswert sind stabile Namen wie participant_count oder catering.
Unterstützte Datenbanktypen¶
| SQL-Typ | Darstellung in MRBS |
|---|---|
TEXT |
Mehrzeiliges Textfeld |
VARCHAR |
Ein- oder mehrzeiliges Textfeld, abhängig von der Maximallänge |
DATE |
Datumsfeld |
DECIMAL / NUMERIC |
Zahlenfeld |
INT |
Ganzzahlfeld |
SMALLINT / TINYINT |
Kontrollkästchen, als boolescher Wert behandelt |
Für boolesche Felder wird unter PostgreSQL SMALLINT, unter MySQL TINYINT
verwendet. Andere Typen unterstützt die automatische Verarbeitung eigener
Felder nicht.
Feld im Schema anlegen¶
Die Beispiele verwenden das Standardpräfix mrbs_. Bei einem anderen
$db_tbl_prefix muss es ersetzt werden.
Buchungsfeld¶
ALTER TABLE mrbs_entry
ADD COLUMN catering VARCHAR(32) DEFAULT NULL;
ALTER TABLE mrbs_repeat
ADD COLUMN catering VARCHAR(32) DEFAULT NULL;
Beide Anweisungen funktionieren mit MySQL und PostgreSQL. Vor dem Öffnen des Buchungsformulars prüfen, ob beide Spalten wirklich identisch definiert sind.
Kontrollkästchen für Räume¶
MRBS 1.12.2 verwendet beim Erstellen neuer Datensätze die Datenbankvorgabe. Vorgabewerte sind daher besonders bei Pflicht- und Kontrollfeldern bewusst zu wählen.
Übersetzte Beschriftungen¶
Ohne Überschreibung leitet MRBS die Beschriftung aus dem Spaltennamen ab. In
config.inc.php wird pro aktiver Sprache eine Bezeichnung hinterlegt:
$vocab_override['en']['entry.catering'] = 'Catering';
$vocab_override['de']['entry.catering'] = 'Verpflegung';
$vocab_override['fr']['entry.catering'] = 'Restauration';
$vocab_override['es']['entry.catering'] = 'Catering';
Für ein entry/repeat-Paar genügt entry.catering;
repeat.catering ist nicht erforderlich. Raum- und Benutzerfelder verwenden
Schlüssel wie room.coffee_machine und users.phone.
Das Kapitel Texte und Übersetzungen beschreibt Sprachüberschreibungen, Sprachdateien und übersetzte Hilfeseiten.
Eingabeverhalten festlegen¶
Feste Auswahl¶
$select_options ersetzt freie Eingabe durch eine Auswahlliste:
$select_options['entry.catering'] = array(
'' => 'Bitte auswählen',
'c' => 'Kaffee',
's' => 'Sandwiches',
'h' => 'Warmes Essen',
);
Bei einem assoziativen Array speichert MRBS den Schlüssel (c), zeigt und
durchsucht aber den Wert (Kaffee). Dadurch kann die Anzeige später geändert
werden, ohne gespeicherte Datensätze umzuschreiben.
Nur aus Ziffern bestehende Schlüssel vermeiden: PHP wandelt ganzzahlig aussehende Zeichenketten in Zahlen um, sodass MRBS das Array möglicherweise als indiziert erkennt. Für ein zunächst leeres Pflichtfeld eine leere Auswahl aufnehmen.
$select_options wird für entry.name, entry.description, eigene
entry-Felder und eigene users-Felder unterstützt. Die konfigurierten
Optionstexte gelten standortweit; die Feldbeschriftung selbst kann über
$vocab_override übersetzt werden.
Vorschläge mit freier Eingabe¶
$datalist_options bietet Vorschläge, erlaubt aber andere Werte:
Es unterstützt dieselben Felder wie $select_options. Bei assoziativen Listen
kann der gespeicherte Schlüssel Benutzer überraschen; das Verhalten vorher
testen.
Pflicht, Datenschutz und Validierung¶
Ein Feld überall verpflichtend machen:
Oder nur in den Bereichen mit den Datenbank-IDs 1 und 3:
Bereichsabhängige Pflichtregeln gelten nur für entry. Ein verpflichtendes
Kontrollkästchen muss vor dem Absenden markiert sein.
Eigene Felder in entry und users können privat sein:
Der Schutz greift nur, wenn private Buchungen aktiviert und passend konfiguriert sind. Alle relevanten Rollen testen und sensible Daten möglichst gar nicht erfassen.
Mustervalidierung ist derzeit auf eigene Textfelder in users beschränkt:
$pattern['users.zip_code'] = '^[0-9]{5}$';
$vocab_override['de']['users.zip_code.oninvalid'] =
'Bitte eine fünfstellige Postleitzahl eingeben';
Textfelder einer Buchung können übersetzte Platzhalter erhalten:
$vocab_override['de']['entry.catering.placeholder'] =
'Allergien oder besondere Anforderungen angeben';
Reihenfolge steuern¶
Die Reihenfolge auf den Seiten zum Erstellen und Anzeigen:
Nicht aufgeführte Felder werden in normaler Reihenfolge angehängt. Auch die Suchfelder eines Berichts lassen sich anordnen:
Vollständiges Beispiel¶
Nach dem Anlegen von catering in beiden Buchungstabellen:
$vocab_override['en']['entry.catering'] = 'Catering';
$vocab_override['de']['entry.catering'] = 'Verpflegung';
$vocab_override['fr']['entry.catering'] = 'Restauration';
$vocab_override['es']['entry.catering'] = 'Catering';
$select_options['entry.catering'] = array(
'' => '—',
'c' => 'Kaffee',
's' => 'Sandwiches',
'h' => 'Warmes Essen',
);
$is_mandatory_field['entry.catering'] = array(1, 3);
$edit_entry_field_order = array('name', 'catering', 'description');
$report_search_field_order = array(
'report_start',
'report_end',
'catering',
);
Die Optionstexte dieses Beispiels bleiben in allen Oberflächensprachen gleich.
Sind mehrsprachige Optionen erforderlich, ist dafür eine standortspezifische
Erweiterung zu entwerfen und zu testen; $select_options übersetzt die Werte
nicht automatisch.
Ändern, entfernen und aktualisieren¶
Vor dem Kürzen oder Ändern eines Spaltentyps vorhandene Werte und Konvertierung
prüfen. Zum Entfernen zuerst Konfigurationsverweise löschen und ausrollen, die
Anwendung testen und erst danach die Spalte im geregelten Datenbankprozess
löschen. Buchungsfelder immer in entry und repeat ändern.
Alle eigenen Spalten in der Betriebsdokumentation festhalten und nach jedem MRBS-Upgrade prüfen. Die Standard-Schemascripte von MRBS verwalten sie nicht.
Prüfliste¶
entryundrepeatsind für jedes Buchungsfeld identisch.- Erstellen, Bearbeiten, Anzeigen, Kopieren und Löschen funktionieren.
- Serien und einzelne Serientermine lassen sich korrekt ändern.
- Datenbankvorgaben werden bei neuen Datensätzen übernommen.
- Pflicht-, Privat-, Auswahl-, Vorschlags- und Validierungsregeln funktionieren je Rolle und Bereich.
- Beschriftungen erscheinen in allen konfigurierten Sprachen.
- Suche, Berichte, E-Mail, Kalenderexport sowie Import/Export liefern sichere Werte.
- Raum- und Benutzerverwaltung zeigen nur die vorgesehenen Felder.
- Sicherung und Wiederherstellung enthalten das erweiterte Schema.