Idi na tekst

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

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;

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:

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

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:

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

Ili samo u oblastima sa ID-ovima baze podataka 1 i 3:

$is_mandatory_field['entry.catering'] = array(1, 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:

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

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:

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

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:

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

Polja koja nisu navedena se dodaju svojim normalnim redosledom. Prilagođena polja se takođe mogu postaviti u obrazac za pretragu izveštaja:

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

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

  • entry i repeat definicije 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.