Preskočiť na obsah

Vlastné polia

MRBS 1.12.2 dokáže rozpoznať ďalšie databázové stĺpce a použiť ich ako polia rezervácií, miestností a používateľov. Vlastné polia sú preto rozšírením schémy, nie nastavením, ktoré automaticky vytvorí stĺpce.

Najprv zálohujte

Zálohujte databázu a otestujte zmenu na neprodukčnej inštancii. Inovácie MRBS nevytvárajú, nemigrujú ani neodstraňujú stĺpce špecifické pre lokalitu.

Kde sú podporované vlastné polia

Databázová tabuľka Účel Dôležité pravidlo
entry Extra údaje pre individuálnu rezerváciu Pridajte rovnaký stĺpec do repeat
repeat Údaje šablóny pre opakovanú rezerváciu Ponechajte názov, typ, dĺžku, možnosť nulovania a predvolené hodnoty identické s entry
room Ďalšie vlastnosti miestnosti alebo zdrojov Zobrazuje sa a upravuje s údajmi o miestnosti
users Extra údaje o používateľskom profile Používa sa iba s autentifikáciou databázy

Stĺpec entry bez identického stĺpca repeat spôsobuje zlyhanie opakujúcich sa operácií rezervácie. Považujte pár za jednu zmenu schémy.

V názve stĺpca používajte iba písmená, čísla a podčiarkovníky. Pre kompatibilitu s PostgreSQL ho začnite písmenom alebo podčiarkovníkom. Uprednostňujte stabilné názvy s malými písmenami, ako napríklad participant_count alebo catering.

Podporované typy databáz

Typ SQL MRBS ovládanie
TEXT Viacriadkový text
VARCHAR Zadávanie textu alebo viacriadkový text v závislosti od jeho maximálnej dĺžky
DATE Zadanie dátumu
DECIMAL / NUMERIC Zadanie čísla
INT Vstup celého čísla
SMALLINT / TINYINT Začiarkavacie políčko interpretované ako boolovská hodnota

Použite SMALLINT pre vlastné boolovské polia na PostgreSQL a TINYINT na MySQL. Iné typy stĺpcov nie sú podporované automatickým spracovaním vlastných polí.

Pridajte pole do schémy

Príklady predpokladajú predvolenú predponu tabuľky mrbs_. Nahraďte ho, ak má $db_tbl_prefix inú hodnotu.

Rezervačné pole

Tento príklad pridáva voliteľný výber stravovania:

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

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

Oba príkazy fungujú s MySQL a PostgreSQL. Pred otvorením rezervačného formulára overte výsledné definície v oboch tabuľkách.

Začiarkavacie políčko miestnosti

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;

V MRBS 1.12.2 sa pri vytváraní nového riadku použije predvolená hodnota databázy. Zámerne vyberte predvolené hodnoty, najmä pre povinné polia a začiarkavacie políčka.

Dajte poliu preložený štítok

Bez prepísania odvodí MRBS označenie z názvu stĺpca. Definujte jeden štítok na aktívny jazyk v 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';

Pre pár entry/repeat definujte iba entry.catering; nie je potrebný žiadny token repeat.catering. Miestnosť a používateľské polia používajú tokeny ako room.coffee_machine a users.phone.

Prepisy slovnej zásoby, jazykové súbory a preložené stránky pomocníka nájdete na Text a preklady.

Vyberte správanie vstupu

Pevné voľby

$select_options nahradí voľný vstup výberovým zoznamom:

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

Pre asociatívne pole MRBS ukladá kľúč (c) a zobrazuje, vyhľadáva a oznamuje hodnotu (Coffee). To umožňuje zmenu znenia bez prepisovania uložených údajov.

Vyhnite sa kľúčom, ktoré pozostávajú iba z číslic: PHP konvertuje reťazcové kľúče podobné celému číslu na celé čísla, takže MRBS môže interpretovať pole ako indexované. Zahrňte prázdnu voľbu, keď povinný výber musí začať nevybraný.

$select_options je podporované pre entry.name, entry.description, vlastné polia entry a vlastné polia users. Konfigurované titulky možností sú reťazce pre celú lokalitu; samotný štítok poľa možno preložiť pomocou $vocab_override.

Použite $datalist_options na návrhy a zároveň akceptujte inú hodnotu:

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

Podporuje rovnaké polia ako $select_options. S asociatívnymi zoznamami údajov môže byť uložený kľúč pre používateľov prekvapivý, preto pred použitím otestujte správanie.

Povinné, súkromné a overené polia

Všade nastavte povinné pole:

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

Alebo len v oblastiach s ID databázy 1 a 3:

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

Povinné pravidlá špecifické pre danú oblasť sa vzťahujú iba na polia entry. Pred odoslaním musí byť začiarknuté povinné políčko.

Súkromné vlastné polia sú podporované pre entry a users:

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

Toto chráni hodnotu iba vtedy, keď sú povolené a nakonfigurované súkromné rezervácie. Otestujte každú relevantnú rolu; nepoužívajte súkromie používateľského rozhrania ako náhradu za minimalizáciu citlivých údajov.

Overenie vzoru je v súčasnosti obmedzené na vlastné textové polia users:

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

Vstupné textové polia môžu mať preložené zástupné symboly:

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

Vzory na strane klienta zlepšujú spätnú väzbu, ale nemenia pole na bezpečné miesto pre tajomstvá alebo nedôveryhodné značky.

Riadenie poradia polí

Umiestnite rezervačné polia explicitne na stránky vytvorenia a zobrazenia:

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

Polia, ktoré nie sú uvedené, sú pripojené v normálnom poradí. Vlastné polia možno umiestniť aj do vyhľadávacieho formulára zostavy:

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

Úplný príklad

Po pridaní catering do oboch rezervačných tabuliek:

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

Popisy možností v tomto príklade zostávajú rovnaké v každom jazyku používateľského rozhrania. Ak sú preložené titulky možností požiadavkou, navrhnite a otestujte rozšírenie špecifické pre lokalitu namiesto toho, aby ste predpokladali, že $select_options ich preloží automaticky.

Zmeňte, odstráňte a inovujte

Pred skrátením stĺpca alebo zmenou jeho typu skontrolujte existujúce hodnoty a otestujte prevod. Pred odstránením poľa odstráňte jeho konfiguračné odkazy, nasaďte túto zmenu, potvrďte, že aplikácia funguje, a až potom stĺpec vypustite cez normálny proces zmeny databázy. Pre rezervačné polia zmeňte entry aj repeat.

Zaznamenajte si každý vlastný stĺpec v prevádzkovej dokumentácii lokality a po každej aktualizácii MRBS ho znova skontrolujte. Štandardné skripty schémy MRBS tieto stĺpce nevlastnia.

Kontrolný zoznam overenia

  • Definície entry a repeat sú rovnaké pre každé rezervačné pole.
  • Vytváranie, úprava, prezeranie, kopírovanie a odstraňovanie rezervácie funguje.
  • Opakujúci sa rad a jeden výskyt je možné správne upraviť.
  • Na nové záznamy sa použijú predvolené hodnoty databázy.
  • Povinné, súkromné, výberové, dátové a overovacie správanie funguje podľa roly a oblasti.
  • Štítky sa zobrazujú v každom nakonfigurovanom jazyku.
  • Vyhľadávanie, prehľady, e-mail, export kalendára a import/export zobrazujú bezpečné hodnoty.
  • Správa miestností a používateľov zobrazuje iba zamýšľané polia.
  • Procedúry zálohovania a obnovy zahŕňajú rozšírenú schému.