Prilagođena polja¶
MRBS 1.12.2 može da prepozna dodatne kolone baze podataka i koristi ih kao polja rezervacija, soba i korisnika. Prilagođena polja su zato proširenje šeme, a ne podešavanja koja automatski prave kolone.
!!! warning „Prvo napravite rezervnu kopiju“
Napravite rezervnu kopiju baze podataka i testirajte promenu na neproizvodnoj instanci. MRBS nadogradnje ne kreiraju, migriraju ili uklanjaju kolone specifične za sajt.
Gde su prilagođena polja podržana¶
| Tabela baze podataka | Svrha | Važno pravilo |
|---|---|---|
entry |
Dodatni podaci za individualnu rezervaciju | Dodajte identičnu kolonu u repeat |
repeat |
Podaci šablona za ponavljajuću rezervaciju | Neka naziv, tip, dužina, mogućnost nuliranja i podrazumevana vrednost budu identični sa entry |
room |
Dodatna prostorija ili svojstva resursa | Prikazano i uređeno sa podacima o prostoriji |
users |
Dodatni podaci o korisničkom profilu | Koristi se samo sa autentifikacijom baze podataka |
Kolona entry bez identične kolone repeat dovodi do neuspeha ponavljajućih operacija rezervacije. Tretirajte par kao jednu promenu šeme.
Koristite samo slova, brojeve i donje crte u nazivu kolone. Za kompatibilnost sa PostgreSQL, započnite ga slovom ili donjom crtom. Preferirajte stabilna imena malim slovima kao što su participant_count ili catering.
Podržani tipovi baza podataka¶
| SKL tip | MRBS kontrola |
|---|---|
TEXT |
Tekst u više redova |
VARCHAR |
Unos teksta ili tekst u više redova, u zavisnosti od njegove maksimalne dužine |
DATE |
Unos datuma |
DECIMAL / NUMERIC |
Unos broja |
INT |
Integer input |
SMALLINT / TINYINT |
Polje za potvrdu, tumačeno kao logička vrednost |
Koristite SMALLINT za Boolean prilagođena polja na PostgreSQL i TINYINT na MySQL. Drugi tipovi kolona nisu podržani automatskim rukovanjem prilagođenim poljem.
Dodajte polje u šemu¶
Primeri pretpostavljaju podrazumevani prefiks tabele mrbs_. Zamenite ga ako $db_tbl_prefix ima drugu vrednost.
Polje za rezervaciju¶
Ovaj primer dodaje opcioni izbor keteringa:
ALTER TABLE mrbs_entry
ADD COLUMN catering VARCHAR(32) DEFAULT NULL;
ALTER TABLE mrbs_repeat
ADD COLUMN catering VARCHAR(32) DEFAULT NULL;
Obe izjave rade sa MySQL i PostgreSQL. Proverite dobijene definicije u obe tabele pre otvaranja obrasca za rezervaciju.
Polje za potvrdu sobe¶
U MRBS 1.12.2, podrazumevana baza podataka se koristi kada se kreira novi red. Namerno birajte podrazumevane vrednosti, posebno za obavezna polja i polja za potvrdu.
Dajte polju prevedenu oznaku¶
Bez zamene, MRBS izvodi oznaku iz naziva kolone. Definišite jednu oznaku po aktivnom jeziku u 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';
Za par entry/repeat definišite samo entry.catering; nije potreban token repeat.catering. Soba i korisnička polja koriste tokene kao što su room.coffee_machine i users.phone.
Pogledajte Tekst i prevodi za zamene rečnika, jezičke datoteke i prevedene stranice pomoći.
Izaberite ponašanje unosa¶
Fiksni izbori¶
$select_options zamenjuje slobodan unos sa izabranom listom:
$select_options['entry.catering'] = array(
'' => 'Please select',
'c' => 'Coffee',
's' => 'Sandwiches',
'h' => 'Hot lunch',
);
Za asocijativni niz, MRBS čuva ključ (c) i prikazuje, pretražuje i prijavljuje vrednost (Coffee). Ovo omogućava promenu teksta bez ponovnog pisanja sačuvanih podataka.
Izbegavajte ključeve koji se sastoje samo od cifara: PHP pretvara ključeve stringova nalik celobrojnim u cele brojeve, tako da MRBS može tumačiti niz kao indeksiran. Uključite prazan izbor kada obavezna selekcija mora da počne bez izbora.
$select_options je podržan za entry.name, entry.description, prilagođena entry polja i prilagođena polja users. Naslovi konfigurisanih opcija su stringovi na nivou celog sajta; sama oznaka polja može se prevesti sa $vocab_override.
Predlozi sa besplatnim unosom¶
Koristite $datalist_options za predloge dok i dalje prihvatate drugu vrednost:
Podržava ista polja kao $select_options. Sa asocijativnim datalistima, sačuvani ključ može biti iznenađujući za korisnike, pa testirajte ponašanje pre upotrebe.
Obavezna, privatna i potvrđena polja¶
Neka polje bude obavezno svuda:
Ili samo u oblastima sa ID-ovima baze podataka 1 i 3:
Obavezna pravila specifična za oblast primenjuju se samo na polja entry. Obavezno polje za potvrdu mora biti označeno pre podnošenja.
Privatna prilagođena polja su podržana za entry i users:
Ovo štiti vrednost samo kada su privatne rezervacije omogućene i konfigurisane. Testirajte svaku relevantnu ulogu; ne koristite privatnost korisničkog interfejsa kao zamenu za minimiziranje osetljivih podataka.
Validacija uzorka je trenutno ograničena na prilagođena users tekstualna polja:
$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';
Tekstualna polja za unos mogu imati prevedene čuvare mesta:
Obrasci na strani klijenta poboljšavaju povratne informacije, ali ne pretvaraju polje u bezbedno mesto za tajne ili nepouzdane oznake.
Kontrolni redosled polja¶
Eksplicitno postavite polja za rezervacije u stranice za pravljenje i pregled:
Polja koja nisu navedena se dodaju svojim normalnim redosledom. Prilagođena polja se takođe mogu postaviti u obrazac za pretragu izveštaja:
Kompletan primer¶
Nakon dodavanja catering u obe tabele za rezervacije:
$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',
);
Naslovi opcija u ovom primeru ostaju isti u svakom korisničkom interfejsu. Ako su prevedeni opisi opcija uslov, dizajnirajte i testirajte proširenje specifično za lokaciju umesto da pretpostavljate da ih $select_options automatski prevodi.
Promenite, uklonite i nadogradite¶
Pre nego što skratite kolonu ili promenite njen tip, proverite postojeće vrednosti i testirajte konverziju. Pre nego što uklonite polje, uklonite njegove reference za konfiguraciju, primenite tu promenu, potvrdite da aplikacija radi i tek onda ispustite kolonu kroz normalan proces promene baze podataka. Za polja za rezervaciju promenite i entry i repeat.
Zabeležite svaku prilagođenu kolonu u operativnoj dokumentaciji sajta i ponovo je proverite nakon svake MRBS nadogradnje. Standardne MRBS skripte šeme ne poseduju ove kolone.
Kontrolna lista za verifikaciju¶
entryirepeatdefinicije su identične za svako polje za rezervaciju.- Kreiranje, uređivanje, pregled, kopiranje i brisanje rezervacije funkcioniše.
- Ponavljajuća serija i jedno pojavljivanje se mogu pravilno urediti.
- Podrazumevane vrednosti baze podataka se primenjuju na nove zapise.
- Obavezno, privatno, biranje, lista podataka i ponašanje validacije funkcioniše prema ulozi i oblasti.
- Oznake se pojavljuju na svakom konfigurisanom jeziku.
- Pretraga, izveštaji, e-pošta, izvoz kalendara i uvoz/izvoz prikazuju sigurne vrednosti.
- Administracija soba i korisnika prikazuje samo predviđena polja.
- Procedure pravljenja rezervnih kopija i vraćanja uključuju proširenu šemu.