Anpassade fält¶
MRBS 1.12.2 kan identifiera extra databaskolumner och använda dem som fält för bokningar, rum och användare. Anpassade fält är därför utökningar av databasschemat, inte inställningar som automatiskt skapar kolumner.
Säkerhetskopiera först
Säkerhetskopiera databasen och testa ändringen på en icke-produktionsinstans. MRBS uppgraderingar skapar, migrerar eller tar inte bort platsspecifika kolumner.
Där anpassade fält stöds¶
| Databastabell | Ändamål | Viktig regel |
|---|---|---|
entry |
Extra data för en individuell bokning | Lägg till samma kolumn i repeat |
repeat |
Malldata för en återkommande bokning | Behåll namn, typ, längd, nullbarhet och standard identiska med entry |
room |
Extra rum eller resursegenskaper | Visas och redigeras med rumsdata |
users |
Extra användarprofildata | Används endast med databasautentisering |
En entry kolumn utan en identisk repeat kolumn gör att återkommande bokningsoperationer misslyckas. Behandla paret som en schemaändring.
Använd endast bokstäver, siffror och understreck i ett kolumnnamn. För kompatibilitet med PostgreSQL, börja den med en bokstav eller understreck. Föredrar stabila, gemener namn som participant_count eller catering.
Databastyper som stöds¶
| SQL-typ | MRBS kontroll |
|---|---|
TEXT |
Flerradig text |
VARCHAR |
Textinmatning eller flerradstext, beroende på dess maximala längd |
DATE |
Datuminmatning |
DECIMAL / NUMERIC |
Nummerinmatning |
INT |
Heltalsinmatning |
SMALLINT / TINYINT |
Kryssruta, tolkad som ett booleskt värde |
Använd SMALLINT för booleska anpassade fält på PostgreSQL och TINYINT på MySQL. Andra kolumntyper stöds inte av den automatiska anpassade fälthanteringen.
Lägg till ett fält i schemat¶
Exemplen antar standardtabellprefixet mrbs_. Byt ut det om $db_tbl_prefix har ett annat värde.
Bokningsfält¶
Det här exemplet lägger till ett valfritt cateringalternativ:
ALTER TABLE mrbs_entry
ADD COLUMN catering VARCHAR(32) DEFAULT NULL;
ALTER TABLE mrbs_repeat
ADD COLUMN catering VARCHAR(32) DEFAULT NULL;
Båda påståendena fungerar med MySQL och PostgreSQL. Verifiera de resulterande definitionerna i båda tabellerna innan du öppnar bokningsformuläret.
Kryssrutan Rum¶
I MRBS 1.12.2 används databasens standard när en ny rad skapas. Välj standardinställningar medvetet, särskilt för obligatoriska fält och kryssrutor.
Ge fältet en översatt etikett¶
Utan en åsidosättning härleder MRBS etiketten från kolumnnamnet. Definiera en etikett per aktivt språk i 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';
För ett entry/repeat-par, definiera endast entry.catering; ingen repeat.catering-token behövs. Rum och användarfält använder tokens som room.coffee_machine och users.phone.
Se Text och översättningar för åsidosättande av ordförråd, språkfiler och översatta hjälpsidor.
Välj inmatningsbeteende¶
Fasta val¶
$select_options ersätter gratis inmatning med en vallista:
$select_options['entry.catering'] = array(
'' => 'Please select',
'c' => 'Coffee',
's' => 'Sandwiches',
'h' => 'Hot lunch',
);
För en associativ array lagrar MRBS nyckeln (c) och visar, söker och rapporterar värdet (Coffee). Detta gör att ordalydelsen kan ändras utan att omskriva lagrad data.
Undvik nycklar som bara består av siffror: PHP konverterar heltalsliknande strängnycklar till heltal, så MRBS kan tolka arrayen som indexerad. Inkludera ett tomt val när ett obligatoriskt urval måste börja avmarkeras.
$select_options stöds för entry.name, entry.description, anpassade entry-fält och anpassade users-fält. De konfigurerade alternativtexterna är strängar för hela webbplatsen; själva fältetiketten kan översättas med $vocab_override.
Förslag med gratis input¶
Använd $datalist_options för förslag medan du fortfarande accepterar ett annat värde:
Den stöder samma fält som $select_options. Med associativa datalistor kan den lagrade nyckeln vara överraskande för användare, så testa beteendet före användning.
Obligatoriska, privata och validerade fält¶
Gör ett fält obligatoriskt överallt:
Eller bara i områden med databas-ID 1 och 3:
Områdesspecifika obligatoriska regler gäller endast för entry-fält. En obligatorisk kryssruta måste vara markerad innan inlämning.
Privata anpassade fält stöds för entry och users:
Detta skyddar endast värdet när privata bokningar är aktiverade och konfigurerade. Testa alla relevanta roller; använd inte användargränssnittets sekretess som ett substitut för att minimera känslig data.
Mönstervalidering är för närvarande begränsad till anpassade users textfält:
$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';
Inmatningstextfält kan ha översatta platshållare:
Mönster på klientsidan förbättrar feedback men gör inte ett fält till en säker plats för hemligheter eller opålitlig markering.
Kontrollfältsordning¶
Placera bokningsfält uttryckligen i skapa och visa sidor:
Fält som inte är listade läggs till i normal ordning. Anpassade fält kan också placeras i rapportsökningsformuläret:
Komplett exempel¶
Efter att ha lagt till catering till båda bokningsborden:
$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',
);
Alternativtexterna i det här exemplet förblir desamma i alla UI-språk. Om översatta alternativtexter är ett krav, designa och testa ett platsspecifikt tillägg istället för att anta att $select_options översätter dem automatiskt.
Ändra, ta bort och uppgradera¶
Innan du förkortar en kolumn eller ändrar dess typ, inspektera befintliga värden och testa konverteringen. Innan du tar bort ett fält, ta bort dess konfigurationsreferenser, distribuera den ändringen, bekräfta att applikationen fungerar och först därefter släpper du kolumnen genom den normala databasändringsprocessen. För bokningsfält, ändra både entry och repeat.
Anteckna varje anpassad kolumn i webbplatsens driftdokumentation och kontrollera den igen efter varje MRBS uppgradering. Standard MRBS schemaskript äger inte dessa kolumner.
Verifieringschecklista¶
- Definitionerna
entryochrepeatär identiska för varje bokningsfält. - Att skapa, redigera, visa, kopiera och ta bort en bokning fungerar.
- En återkommande serie och en förekomst kan redigeras korrekt.
- Databasstandarder tillämpas på nya poster.
- Obligatoriskt, privat, välj, datalist och valideringsbeteende fungerar efter roll och område.
- Etiketter visas på alla konfigurerade språk.
- Sökning, rapporter, e-post, kalenderexport och import/export visar säkra värden.
- Rums- och användaradministration visar endast de avsedda fälten.
- Rutiner för säkerhetskopiering och återställning inkluderar det utökade schemat.