Gå til innhold

Egendefinerte felt

MRBS 1.12.2 kan oppdage flere databasekolonner og bruke dem som felt for bestillinger, rom og brukere. Egendefinerte felt er derfor skjemautvidelser, ikke innstillinger som oppretter kolonner automatisk.

Sikkerhetskopier først

Sikkerhetskopier databasen og test endringen på en ikke-produksjonsforekomst. MRBS oppgraderinger oppretter, migrerer eller fjerner ikke stedsspesifikke kolonner.

Der egendefinerte felt støttes

Databasetabell Hensikt Viktig regel
entry Ekstra data for en individuell bestilling Legg til den samme kolonnen til repeat
repeat Maldata for en gjentakende bestilling Hold navn, type, lengde, nullbarhet og standard identisk med entry
room Ekstra rom eller ressursegenskaper Vises og redigeres med romdata
users Ekstra brukerprofildata Brukes kun med databaseautentisering

En entry-kolonne uten en identisk repeat-kolonne fører til at tilbakevendende bestillingsoperasjoner mislykkes. Behandle paret som én skjemaendring.

Bruk bare bokstaver, tall og understreker i et kolonnenavn. For kompatibilitet med PostgreSQL, start den med en bokstav eller understrek. Foretrekk stabile små bokstaver som participant_count eller catering.

Støttede databasetyper

SQL-type MRBS kontroll
TEXT Tekst med flere linjer
VARCHAR Tekstinntasting eller flerlinjers tekst, avhengig av maksimal lengde
DATE Datoinntasting
DECIMAL / NUMERIC Tallinntasting
INT Heltallsinngang
SMALLINT / TINYINT Avmerkingsboks, tolket som en boolsk verdi

Bruk SMALLINT for boolske egendefinerte felt på PostgreSQL og TINYINT på MySQL. Andre kolonnetyper støttes ikke av den automatiske egendefinerte felthåndteringen.

Legg til et felt i skjemaet

Eksemplene antar standard mrbs_ tabellprefiks. Erstatt den hvis $db_tbl_prefix har en annen verdi.

Bestillingsfelt

Dette eksemplet legger til et valgfritt cateringvalg:

ALTER TABLE mrbs_entry
  ADD COLUMN catering VARCHAR(32) DEFAULT NULL;

ALTER TABLE mrbs_repeat
  ADD COLUMN catering VARCHAR(32) DEFAULT NULL;

Begge utsagnene fungerer med MySQL og PostgreSQL. Bekreft de resulterende definisjonene i begge tabellene før du åpner bestillingsskjemaet.

Avmerkingsboks for rom

ALTER TABLE mrbs_room
  ADD COLUMN coffee_machine TINYINT NOT NULL DEFAULT 0;
ALTER TABLE mrbs_room
  ADD COLUMN coffee_machine SMALLINT NOT NULL DEFAULT 0;

I MRBS 1.12.2 brukes databasestandarden når en ny rad opprettes. Velg standardverdier med vilje, spesielt for obligatoriske felt og avmerkingsbokser.

Gi feltet en oversatt etikett

Uten en overstyring, utleder MRBS etiketten fra kolonnenavnet. Definer én 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';

For et entry/repeat-par, definer bare entry.catering; ingen repeat.catering-token er nødvendig. Rom- og brukerfelt bruker tokens som room.coffee_machine og users.phone.

Se Tekst og oversettelser for overstyringer av ordforråd, språkfiler og oversatte hjelpesider.

Velg inndataatferd

Faste valg

$select_options erstatter gratis inndata med en utvalgsliste:

$select_options['entry.catering'] = array(
    ''  => 'Please select',
    'c' => 'Coffee',
    's' => 'Sandwiches',
    'h' => 'Hot lunch',
);

For en assosiativ matrise lagrer MRBS nøkkelen (c) og viser, søker og rapporterer verdien (Coffee). Dette lar ordlyden endres uten å omskrive lagrede data.

Unngå nøkler som bare består av sifre: PHP konverterer heltallslignende strengnøkler til heltall, så MRBS kan tolke matrisen som indeksert. Inkluder et tomt valg når et obligatorisk valg må starte opphevet.

$select_options støttes for entry.name, entry.description, tilpassede entry-felt og tilpassede users-felt. De konfigurerte alternativtekstene er strenger for hele nettstedet; selve feltetiketten kan oversettes med $vocab_override.

Forslag med gratis innspill

Bruk $datalist_options for forslag mens du fortsatt godtar en annen verdi:

$datalist_options['entry.catering'] = array(
    'Coffee',
    'Sandwiches',
    'Hot lunch',
);

Den støtter de samme feltene som $select_options. Med assosiative datalister kan den lagrede nøkkelen være overraskende for brukere, så test virkemåten før bruk.

Obligatoriske, private og validerte felt

Gjør et felt obligatorisk overalt:

$is_mandatory_field['entry.catering'] = true;

Eller bare i områder med database-ID 1 og 3:

$is_mandatory_field['entry.catering'] = array(1, 3);

Områdespesifikke obligatoriske regler gjelder bare for entry-felt. En obligatorisk avmerkingsboks må merkes av før innsending.

Private egendefinerte felt støttes for entry og users:

$is_private_field['entry.internal_notes'] = true;
$is_private_field['users.phone'] = true;

Dette beskytter verdien kun når private bestillinger er aktivert og konfigurert. Test alle relevante roller; ikke bruk UI-personvern som en erstatning for å minimere sensitive data.

Mønstervalidering er for øyeblikket begrenset til egendefinerte users tekstfelt:

$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';

Inntastingstekstfelt kan ha oversatte plassholdere:

$vocab_override['en']['entry.catering.placeholder'] =
    'State allergies or special requirements';

Mønstre på klientsiden forbedrer tilbakemeldinger, men gjør ikke et felt til et trygt sted for hemmeligheter eller uklarert markering.

Kontrollfeltrekkefølge

Plasser bestillingsfelt eksplisitt på opprette og se sider:

$edit_entry_field_order = array(
    'name',
    'catering',
    'description',
);

Felt som ikke er oppført, legges til i normal rekkefølge. Egendefinerte felt kan også plasseres i rapportsøkeskjemaet:

$report_search_field_order = array(
    'report_start',
    'report_end',
    'catering',
    'roommatch',
);

Komplett eksempel

Etter å ha lagt til catering til begge bookingbordene:

$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',
);

Alternativtekstene i dette eksemplet forblir de samme på alle brukergrensesnittspråk. Hvis oversatte alternativtekster er et krav, design og test en stedsspesifikk utvidelse i stedet for å anta at $select_options oversetter dem automatisk.

Endre, fjern og oppgrader

Før du forkorter en kolonne eller endrer dens type, inspiser eksisterende verdier og test konverteringen. Før du fjerner et felt, fjern dets konfigurasjonsreferanser, distribuer endringen, bekreft at applikasjonen fungerer, og slipp deretter kolonnen gjennom den vanlige databaseendringsprosessen. For bestillingsfelt, endre både entry og repeat.

Registrer hver egendefinerte kolonne i nettstedets driftsdokumentasjon og sjekk den på nytt etter hver MRBS oppgradering. Standard MRBS skjemaskript eier ikke disse kolonnene.

Sjekkliste for verifisering

  • entry og repeat definisjoner er identiske for hvert bestillingsfelt.
  • Oppretting, redigering, visning, kopiering og sletting av en bestilling fungerer.
  • En gjentakende serie og én forekomst kan redigeres riktig.
  • Databasestandarder brukes på nye poster.
  • Nødvendig, privat, utvalgt, dataliste- og valideringsatferd fungerer etter rolle og område.
  • Etiketter vises på alle konfigurerte språk.
  • Søk, rapporter, e-post, kalendereksport og import/eksport viser sikre verdier.
  • Rom- og brukeradministrasjon viser kun de tiltenkte feltene.
  • Prosedyrer for sikkerhetskopiering og gjenoppretting inkluderer det utvidede skjemaet.