Vlastní pole¶
MRBS 1.12.2 dokáže rozpoznat další databázové sloupce a použít je jako pole rezervací, místností a uživatelů. Vlastní pole jsou rozšířením databázového schématu; pouhé nastavení v konfiguraci sloupec nevytvoří.
Nejdříve zálohujte
Zálohujte databázi a otestujte změnu na neprodukční instanci. Upgrady MRBS nevytvářejí, nemigrují ani neodstraňují sloupce specifické pro daný web.
Kde jsou podporována vlastní pole¶
| Databázová tabulka | Účel | Důležité pravidlo |
|---|---|---|
entry |
Další údaje jednotlivé rezervace | Přidejte stejný sloupec do repeat |
repeat |
Údaje šablony opakované rezervace | Název, typ, délka, možnost hodnoty NULL a výchozí hodnota musejí být shodné s entry |
room |
Další vlastnosti místnosti nebo zdroje | Zobrazuje se a upravuje s daty místnosti |
users |
Další údaje uživatelského profilu | Používá se pouze při ověřování pomocí databáze |
Pokud ke sloupci v tabulce entry neexistuje shodný sloupec v tabulce repeat, operace s opakovanými rezervacemi selžou. Oba sloupce proto považujte za jedinou změnu schématu.
V názvu sloupce používejte pouze písmena, čísla a podtržítka. Pro kompatibilitu s PostgreSQL jej začněte písmenem nebo podtržítkem. Preferujte stabilní jména s malými písmeny, jako je participant_count nebo catering.
Podporované typy databází¶
| Typ SQL | Ovládací prvek v MRBS |
|---|---|
TEXT |
Víceřádkový text |
VARCHAR |
Zadávání textu nebo víceřádkový text v závislosti na jeho maximální délce |
DATE |
Zadání data |
DECIMAL / NUMERIC |
Zadání čísla |
INT |
Zadání celého čísla |
SMALLINT / TINYINT |
Zaškrtávací políčko, interpretováno jako logická hodnota |
Použijte SMALLINT pro booleovská vlastní pole na PostgreSQL a TINYINT na MySQL. Jiné typy sloupců nejsou podporovány automatickým zpracováním vlastních polí.
Přidejte pole do schématu¶
Příklady předpokládají výchozí předponu tabulek mrbs_. Pokud má $db_tbl_prefix jinou hodnotu, předponu odpovídajícím způsobem změňte.
Rezervační pole¶
Tento příklad přidává volitelnou volbu stravování:
ALTER TABLE mrbs_entry
ADD COLUMN catering VARCHAR(32) DEFAULT NULL;
ALTER TABLE mrbs_repeat
ADD COLUMN catering VARCHAR(32) DEFAULT NULL;
Oba příkazy pracují s MySQL a PostgreSQL. Před otevřením rezervačního formuláře ověřte výsledné definice v obou tabulkách.
Zaškrtávací pole místnosti¶
Při vytvoření nového řádku použije MRBS 1.12.2 výchozí hodnotu databáze. Volte ji uvážlivě, zejména u povinných a zaškrtávacích polí.
Přeložený popisek pole¶
Pokud popisek nenastavíte, MRBS jej odvodí z názvu sloupce. V souboru config.inc.php definujte popisek pro každý aktivní jazyk:
$vocab_override['en']['entry.catering'] = 'Catering';
$vocab_override['de']['entry.catering'] = 'Verpflegung';
$vocab_override['fr']['entry.catering'] = 'Restauration';
$vocab_override['es']['entry.catering'] = 'Catering';
Pro dvojici entry/repeat stačí definovat entry.catering; token repeat.catering není potřeba. Pole místností a uživatelů používají tokeny jako room.coffee_machine a users.phone.
Změny terminologie, jazykové soubory a přeložené stránky nápovědy popisuje kapitola Texty a překlady.
Volba způsobu zadávání¶
Pevné volby¶
$select_options nahradí volné textové pole výběrovým seznamem:
$select_options['entry.catering'] = array(
'' => 'Please select',
'c' => 'Coffee',
's' => 'Sandwiches',
'h' => 'Hot lunch',
);
U asociativního pole MRBS ukládá klíč (c), ale zobrazuje a vyhledává hodnotu (Coffee) a používá ji v sestavách. Text tak lze změnit bez přepsání uložených dat.
Nepoužívejte klíče složené pouze z číslic. PHP převádí řetězcové klíče, které vypadají jako celá čísla, na čísla, takže MRBS může pole vyhodnotit jako indexované. Má-li povinné pole začínat bez zvolené hodnoty, přidejte prázdnou možnost.
$select_options je podporováno pro entry.name, entry.description, vlastní pole entry a vlastní pole users. Konfigurované titulky možností jsou řetězce pro celý web; samotný štítek pole lze přeložit pomocí $vocab_override.
Návrhy s možností volného zadání¶
Pomocí $datalist_options nabídnete návrhy, ale současně povolíte zadání jiné hodnoty:
Podporuje stejná pole jako $select_options. U asociativních seznamů dat může být uložený klíč pro uživatele překvapivý, takže před použitím otestujte chování.
Povinná, soukromá a ověřená pole¶
Všude nastavte povinné pole:
Nebo pouze v oblastech s ID databáze 1 a 3:
Povinnost omezená na konkrétní oblasti se vztahuje pouze na pole entry. Povinné zaškrtávací pole musí být před odesláním zaškrtnuto.
Soukromá vlastní pole jsou podporována pro entry a users:
Hodnota je tak chráněna pouze tehdy, jsou-li povoleny a správně nastaveny soukromé rezervace. Otestujte všechny relevantní role; skrytí v uživatelském rozhraní nenahrazuje omezení množství ukládaných citlivých údajů.
Ověření vzoru je v současnosti omezeno na vlastní textová pole 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';
Textová vstupní pole mohou mít přeložené zástupné texty:
Kontrola vzoru v prohlížeči zlepšuje zpětnou vazbu, ale nečiní z pole bezpečné místo pro citlivé údaje ani nedůvěryhodný značkovací kód.
Určení pořadí polí¶
Pořadí polí rezervace na stránkách pro vytvoření a zobrazení určete výslovně:
Pole, která nejsou uvedena, jsou připojena v normálním pořadí. Vlastní pole lze také umístit do formuláře pro vyhledávání sestavy:
Kompletní příklad¶
Po přidání catering do obou rezervačních tabulek:
$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',
);
Texty možností v tomto příkladu zůstávají ve všech jazycích uživatelského rozhraní stejné. Pokud potřebujete překládat i je, navrhněte a otestujte rozšíření pro konkrétní instalaci; $select_options je automaticky nepřekládá.
Změny, odstraňování a aktualizace¶
Před zkrácením sloupce nebo změnou jeho typu zkontrolujte existující hodnoty a otestujte převod. Chcete-li pole odstranit, nejprve odstraňte odkazy v konfiguraci, změnu nasaďte a ověřte funkčnost aplikace. Teprve potom sloupec odstraňte standardním postupem pro změny databáze. U polí rezervací měňte tabulky entry i repeat.
Zaznamenejte každý vlastní sloupec do provozní dokumentace webu a znovu jej zkontrolujte po každém upgradu MRBS. Standardní skripty schémat MRBS tyto sloupce nevlastní.
Kontrolní seznam pro ověření¶
- Definice
entryarepeatjsou identické pro každé rezervační pole. - Vytváření, úpravy, prohlížení, kopírování a mazání rezervace funguje.
- Opakovanou sérii i jednotlivý výskyt lze správně upravit.
- Na nové záznamy se použijí výchozí hodnoty databáze.
- Povinná a soukromá pole, výběrové seznamy, seznamy návrhů a validace fungují podle role a oblasti.
- Štítky se zobrazují ve všech nakonfigurovaných jazycích.
- Vyhledávání, sestavy, e-mail, export kalendáře a import/export zobrazují bezpečné hodnoty.
- Správa místností a uživatelů zobrazuje pouze zamýšlená pole.
- Postupy zálohování a obnovy zahrnují rozšířené schéma.