Brugerdefinerede felter¶
MRBS 1.12.2 kan registrere yderligere databasekolonner og bruge dem som felter til bookinger, lokaler og brugere. Brugerdefinerede felter er derfor udvidelser af databaseskemaet; indstillinger i konfigurationen opretter ikke automatisk kolonner.
Sikkerhedskopi først
Sikkerhedskopier databasen og test ændringen på en ikke-produktionsforekomst. MRBS opgraderinger opretter, migrerer eller fjerner ikke webstedsspecifikke kolonner.
Hvor brugerdefinerede felter understøttes¶
| Databasetabel | Formål | Vigtig regel |
|---|---|---|
entry |
Ekstra data til en enkelt booking | Tilføj den identiske kolonne til repeat |
repeat |
Skabelondata til en tilbagevendende booking | Navn, type, længde, NULL-egenskab og standardværdi skal være identiske med entry |
room |
Ekstra egenskaber for et lokale eller en ressource | Vises og redigeres sammen med lokaleoplysningerne |
users |
Ekstra brugerprofildata | Bruges kun med databaseautentificering |
En kolonne i entry uden en identisk kolonne i repeat får handlinger med tilbagevendende bookinger til at mislykkes. Behandl de to kolonner som én skemaændring.
Brug kun bogstaver, tal og understregning i kolonnenavne. Af hensyn til PostgreSQL skal navnet begynde med et bogstav eller en understregning. Foretræk stabile navne med små bogstaver, for eksempel participant_count eller catering.
Understøttede databasetyper¶
| SQL-type | Kontrolelement i MRBS |
|---|---|
TEXT |
Tekst med flere linjer |
VARCHAR |
Tekstinput eller tekst med flere linjer, afhængigt af dens maksimale længde |
DATE |
Indtastning af dato |
DECIMAL / NUMERIC |
Indtastning af tal |
INT |
Indtastning af heltal |
SMALLINT / TINYINT |
Afkrydsningsfelt, fortolket som en boolsk værdi |
Brug SMALLINT til booleske brugerdefinerede felter på PostgreSQL og TINYINT på MySQL. Andre kolonnetyper understøttes ikke af den automatiske brugerdefinerede felthåndtering.
Tilføj et felt til skemaet¶
Eksemplerne forudsætter standardtabelpræfikset mrbs_. Erstat det, hvis $db_tbl_prefix har en anden værdi.
Bookingfelt¶
Dette eksempel tilføjer et valgfrit cateringvalg:
ALTER TABLE mrbs_entry
ADD COLUMN catering VARCHAR(32) DEFAULT NULL;
ALTER TABLE mrbs_repeat
ADD COLUMN catering VARCHAR(32) DEFAULT NULL;
Begge udsagn fungerer med MySQL og PostgreSQL. Bekræft de resulterende definitioner i begge tabeller, før du åbner reservationsformularen.
Afkrydsningsfelt for et lokale¶
I MRBS 1.12.2 bruges databasens standardværdi, når en ny række oprettes. Vælg standardværdierne bevidst, især for obligatoriske felter og afkrydsningsfelter.
Giv feltet en oversat etiket¶
Hvis du ikke angiver en betegnelse, udleder MRBS den af kolonnenavnet. Definer én betegnelse for hvert aktivt sprog 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';
For et entry/repeat-par skal du kun definere entry.catering; tokenet repeat.catering er ikke nødvendigt. Lokale- og brugerfelter bruger tokens som room.coffee_machine og users.phone.
Se Tekst og oversættelser for ordforrådstilsidesættelser, sprogfiler og oversatte hjælpesider.
Vælg inputadfærd¶
Faste valg¶
$select_options erstatter fri tekst med en valgliste:
$select_options['entry.catering'] = array(
'' => 'Please select',
'c' => 'Coffee',
's' => 'Sandwiches',
'h' => 'Hot lunch',
);
I et associativt array gemmer MRBS nøglen (c), men viser og søger efter værdien (Coffee) og bruger den i rapporter. Teksten kan dermed ændres uden at omskrive de gemte data.
Undgå nøgler, der kun består af cifre: PHP konverterer heltallignende strengnøgler til heltal, så MRBS kan fortolke arrayet som indekseret. Medtag et tomt valg, når et obligatorisk valg skal starte fravalgt.
$select_options er understøttet for entry.name, entry.description, brugerdefinerede entry felter og brugerdefinerede users felter. De konfigurerede valgmulighedstekster er strenge for hele webstedet; selve feltetiketten kan oversættes med $vocab_override.
Forslag med mulighed for fri indtastning¶
Brug $datalist_options til forslag, mens du stadig accepterer en anden værdi:
Det understøtter de samme felter som $select_options. Med associative datalister kan den lagrede nøgle være overraskende for brugerne, så test adfærden før brug.
Obligatoriske, private og validerede felter¶
Gør et felt obligatorisk overalt:
Eller kun i områder med database-id'er 1 og 3:
Områdespecifikke obligatoriske regler gælder kun for entry felter. Et obligatorisk afkrydsningsfelt skal være markeret før indsendelse.
Private brugerdefinerede felter understøttes for entry og users:
Værdien beskyttes kun, når private bookinger er aktiveret og korrekt konfigureret. Test alle relevante roller; skjulning i brugerfladen erstatter ikke begrænsning af mængden af følsomme data.
Mønstervalidering er i øjeblikket begrænset til brugerdefinerede users tekstfelter:
$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';
Indtastningstekstfelter kan have oversatte pladsholdere:
Mønstre i browseren forbedrer tilbagemeldingen, men gør ikke feltet sikkert til følsomme oplysninger eller utroværdig markup.
Angiv feltrækkefølgen¶
Angiv udtrykkeligt rækkefølgen af bookingfelterne på siderne til oprettelse og visning:
Felter, der ikke er angivet, tilføjes i deres normale rækkefølge. Tilpassede felter kan også placeres i rapportsøgningsformularen:
Komplet eksempel¶
Efter at catering er føjet til begge bookingtabeller:
$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',
);
Teksterne til valgmulighederne i eksemplet er ens på alle brugerfladens sprog. Hvis valgmulighederne også skal oversættes, må du udvikle og teste en udvidelse til installationen; $select_options oversætter dem ikke automatisk.
Skift, fjern og opgrader¶
Før du forkorter en kolonne eller ændrer dens type, skal du gennemgå de eksisterende værdier og teste konverteringen. Hvis et felt skal fjernes, skal du først fjerne referencerne i konfigurationen, implementere ændringen og kontrollere, at applikationen virker. Fjern derefter kolonnen med den normale proces for databaseændringer. Bookingfelter skal ændres i både entry og repeat.
Optag hver brugerdefineret kolonne i webstedets driftsdokumentation, og tjek den igen efter hver MRBS-opgradering. Standard MRBS skemascripts ejer ikke disse kolonner.
Verifikationstjekliste¶
entryogrepeatdefinitioner er identiske for hvert reservationsfelt.- Oprettelse, redigering, visning, kopiering og sletning af en reservation fungerer.
- En tilbagevendende serie og en forekomst kan redigeres korrekt.
- Databasestandarder anvendes på nye poster.
- Påkrævet, privat, udvalgt, dataliste og valideringsadfærd fungerer efter rolle og område.
- Etiketter vises på alle konfigurerede sprog.
- Søgning, rapporter, e-mail, kalendereksport og import/eksport viser sikre værdier.
- Rum- og brugeradministration viser kun de tilsigtede felter.
- Sikkerhedskopiering og gendannelsesprocedurer inkluderer det udvidede skema.