Aangepaste velden¶
MRBS 1.12.2 herkent extra databasekolommen en gebruikt die als velden voor boekingen, ruimtes en gebruikers. Aangepaste velden zijn dus uitbreidingen van het schema; de configuratie maakt de kolommen niet automatisch aan.
Eerst een back-up maken
Maak een back-up van de database en test de wijziging op een niet-productie-exemplaar. Met MRBS-upgrades worden geen sitespecifieke kolommen gemaakt, gemigreerd of verwijderd.
Waar aangepaste velden worden ondersteund¶
| Databasetabel | Doel | Belangrijke regel |
|---|---|---|
entry |
Extra gegevens voor een individuele boeking | Voeg de identieke kolom toe aan repeat |
repeat |
Sjabloongegevens voor een terugkerende boeking | Houd naam, type, lengte, nullability en standaard identiek aan entry |
room |
Extra ruimte- of resource-eigenschappen | Weergegeven en bewerkt met ruimtegegevens |
users |
Extra gebruikersprofielgegevens | Alleen gebruikt met databaseverificatie |
Een kolom entry zonder een identieke kolom repeat zorgt ervoor dat terugkerende boekingsbewerkingen mislukken. Behandel het paar als één schemawijziging.
Gebruik alleen letters, cijfers en onderstrepingstekens in een kolomnaam. Voor compatibiliteit met PostgreSQL begint u het met een letter of onderstrepingsteken. Geef de voorkeur aan stabiele namen in kleine letters, zoals participant_count of catering.
Ondersteunde databasetypen¶
| SQL-type | MRBS controle |
|---|---|
TEXT |
Tekst met meerdere regels |
VARCHAR |
Tekstinvoer of tekst met meerdere regels, afhankelijk van de maximale lengte |
DATE |
Datuminvoer |
DECIMAL / NUMERIC |
Nummerinvoer |
INT |
Invoer van gehele getallen |
SMALLINT / TINYINT |
Selectievakje, geïnterpreteerd als een Booleaanse waarde |
Gebruik SMALLINT voor aangepaste Booleaanse velden op PostgreSQL en TINYINT op MySQL. Andere kolomtypen worden niet ondersteund door de automatische verwerking van aangepaste velden.
Voeg een veld toe aan het schema¶
In de voorbeelden wordt uitgegaan van het standaardtabelvoorvoegsel mrbs_. Vervang deze als $db_tbl_prefix een andere waarde heeft.
Boekingsveld¶
Dit voorbeeld voegt een optionele cateringkeuze toe:
ALTER TABLE mrbs_entry
ADD COLUMN catering VARCHAR(32) DEFAULT NULL;
ALTER TABLE mrbs_repeat
ADD COLUMN catering VARCHAR(32) DEFAULT NULL;
Beide uitspraken werken met MySQL en PostgreSQL. Controleer de resulterende definities in beide tabellen voordat u het boekingsformulier opent.
Ruimte selectievakje¶
In MRBS 1.12.2 wordt de databasestandaard gebruikt wanneer een nieuwe rij wordt gemaakt. Kies bewust voor standaardwaarden, vooral voor verplichte velden en selectievakjes.
Geef het veld een vertaald label¶
Zonder overschrijving leidt MRBS het label af van de kolomnaam. Definieer één label per actieve taal in config.inc.php:
$vocab_override['en']['entry.catering'] = 'Catering';
$vocab_override['de']['entry.catering'] = 'Verpflegung';
$vocab_override['fr']['entry.catering'] = 'Restauration';
$vocab_override['es']['entry.catering'] = 'Catering';
Voor een entry/repeat paar definieert u alleen entry.catering; er is geen repeat.catering-token nodig. Ruimte- en gebruikersvelden gebruiken tokens zoals room.coffee_machine en users.phone.
Zie Tekst en vertalingen voor woordenschatoverschrijvingen, taalbestanden en vertaalde Help-pagina's.
Kies het invoergedrag¶
Vaste keuzes¶
$select_options vervangt vrije invoer door een selectielijst:
$select_options['entry.catering'] = array(
'' => 'Please select',
'c' => 'Coffee',
's' => 'Sandwiches',
'h' => 'Hot lunch',
);
Voor een associatieve array slaat MRBS de sleutel op (c) en wordt de waarde weergegeven, doorzocht en gerapporteerd (Coffee). Hierdoor kan de formulering veranderen zonder de opgeslagen gegevens te herschrijven.
Vermijd sleutels die alleen uit cijfers bestaan: PHP converteert op gehele getallen lijkende tekenreekssleutels naar gehele getallen, dus MRBS kan de array als geïndexeerd interpreteren. Voeg een lege keuze toe als een verplichte selectie ongeselecteerd moet beginnen.
$select_options wordt ondersteund voor entry.name, entry.description, aangepaste entry velden en aangepaste users velden. De geconfigureerde optiebijschriften zijn tekenreeksen voor de hele site; het veldlabel zelf kan worden vertaald met $vocab_override.
Suggesties met gratis input¶
Gebruik $datalist_options voor suggesties terwijl je nog steeds een andere waarde accepteert:
Het ondersteunt dezelfde velden als $select_options. Bij associatieve datalijsten kan de opgeslagen sleutel verrassend zijn voor gebruikers, dus test het gedrag vóór gebruik.
Verplichte, privé- en gevalideerde velden¶
Maak een veld overal verplicht:
Of alleen in gebouwen met database-ID's 1 en 3:
Gebouwspecifieke verplichte regels zijn alleen van toepassing op velden entry. Voordat u de aanvraag indient, moet er een verplicht selectievakje zijn aangevinkt.
Aangepaste privévelden worden ondersteund voor entry en users:
Hierdoor wordt de waarde alleen beschermd als privéboekingen zijn ingeschakeld en geconfigureerd. Test elke relevante rol; gebruik UI-privacy niet als vervanging voor het minimaliseren van gevoelige gegevens.
Patroonvalidatie is momenteel beperkt tot aangepaste users tekstvelden:
$pattern['users.zip_code'] = '^[0-9]{5}(?:-[0-9]{4})?$';
$vocab_override['en']['users.zip_code.oninvalid'] =
'Enter a ZIP code such as 12345 or 12345-6789';
Invoertekstvelden kunnen vertaalde tijdelijke aanduidingen bevatten:
Patronen aan de clientzijde verbeteren de feedback, maar veranderen een veld niet in een veilige plek voor geheimen of niet-vertrouwde markeringen.
Controleer de veldvolgorde¶
Plaats boekingsvelden expliciet op maak- en bekijkpagina's:
Velden die niet in de lijst voorkomen, worden in hun normale volgorde toegevoegd. Aangepaste velden kunnen ook in het rapportzoekformulier worden geplaatst:
Compleet voorbeeld¶
Na het toevoegen van catering aan beide boekingstabellen:
$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' => 'Coffee',
's' => 'Sandwiches',
'h' => 'Hot lunch',
);
$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',
);
De optiebijschriften in dit voorbeeld blijven in elke UI-taal hetzelfde. Als vertaalde optiebijschriften een vereiste zijn, ontwerp en test dan een sitespecifieke extensie in plaats van aan te nemen dat $select_options deze automatisch vertaalt.
Wijzigen, verwijderen en upgraden¶
Voordat u een kolom inkort of het type ervan wijzigt, inspecteert u de bestaande waarden en test u de conversie. Voordat u een veld verwijdert, moet u de configuratiereferenties ervan verwijderen, die wijziging implementeren, bevestigen dat de toepassing werkt en pas daarna de kolom door het normale databasewijzigingsproces laten gaan. Voor boekingsvelden wijzigt u zowel entry als repeat.
Registreer elke aangepaste kolom in de operationele documentatie van de site en controleer deze opnieuw na elke MRBS-upgrade. Standaard MRBS schemascripts zijn geen eigenaar van deze kolommen.
Controlelijst voor verificatie¶
- De definities
entryenrepeatzijn identiek voor elk boekingsveld. - Een boeking aanmaken, bewerken, bekijken, kopiëren en verwijderen werkt.
- Een terugkerende reeks en één gebeurtenis kunnen correct worden bewerkt.
- Databasestandaardwaarden worden toegepast op nieuwe records.
- Vereist, privé-, select-, datalist- en validatiegedrag werkt per rol en gebouw.
- Labels verschijnen in elke geconfigureerde taal.
- Zoeken, rapporten, e-mail, agenda-export en import/export tonen veilige waarden.
- Ruimte- en gebruikersbeheer tonen alleen de daarvoor bestemde velden.
- Back-up- en herstelprocedures omvatten het uitgebreide schema.