Hyppää sisältöön

Mukautetut kentät

MRBS 1.12.2 tunnistaa tietokantatauluihin lisätyt sarakkeet ja voi käyttää niitä varausten, huoneiden ja käyttäjien kenttinä. Mukautetut kentät ovat siis tietokantaskeeman laajennuksia, eivät asetuksia, jotka loisivat sarakkeet automaattisesti.

Varmuuskopioi ensin

Varmuuskopioi tietokanta ja testaa muutos muussa kuin tuotantoympäristössä. MRBS-päivitykset eivät luo, siirrä tai poista sivustokohtaisia sarakkeita.

Missä mukautettuja kenttiä tuetaan

Tietokantataulukko Tarkoitus Tärkeä sääntö
entry Yksittäisen varauksen lisätiedot Lisää samanlainen sarake myös repeat-tauluun
repeat Toistuvan varauksen mallin tiedot Pidä nimi, tyyppi, pituus, NULL-arvon salliminen ja oletusarvo samoina kuin entry-taulussa
room Ylimääräiset huone- tai resurssiominaisuudet Näytetään ja muokataan huonetietojen kanssa
users Ylimääräiset käyttäjäprofiilitiedot Käytetään vain tietokannan todennuksen kanssa

Jos entry-taulun sarakkeelle ei ole samanlaista saraketta repeat-taulussa, toistuvien varausten käsittely epäonnistuu. Käsittele sarakeparia yhtenä skeemamuutoksena.

Käytä sarakkeen nimessä vain kirjaimia, numeroita ja alaviivoja. PostgreSQL-yhteensopivuuden vuoksi nimen tulee alkaa kirjaimella tai alaviivalla. Valitse pysyvä, pienillä kirjaimilla kirjoitettu nimi, kuten participant_count tai catering.

Tuetut tietokantatyypit

SQL-tyyppi MRBS:n syöttöelementti
TEXT Monirivinen teksti
VARCHAR Tekstinsyöttö tai monirivinen teksti sen enimmäispituudesta riippuen
DATE Päivämäärän syöttö
DECIMAL / NUMERIC Numeron syöttö
INT Kokonaisluvun syöttö
SMALLINT / TINYINT Valintaruutu, jonka arvo tulkitaan totuusarvoksi

Käytä mukautetuille totuusarvokentille PostgreSQL:ssä SMALLINT-tyyppiä ja MySQL:ssä TINYINT-tyyppiä. Mukautettujen kenttien automaattinen käsittely ei tue muita saraketyyppejä.

Lisää kenttä skeemaan

Esimerkeissä oletuksena on taulukon oletusetuliite mrbs_. Vaihda se, jos $db_tbl_prefix on muu arvo.

Varauskenttä

Tämä esimerkki lisää valinnaisen ateriavaihtoehdon:

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

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

Molemmat lauseet toimivat MySQL:ssä ja PostgreSQL:ssä. Tarkista kummankin taulun uusi rakenne ennen varauslomakkeen avaamista.

Huoneen valintaruutu

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;

MRBS 1.12.2:ssa tietokannan oletusarvoa käytetään, kun uusi rivi luodaan. Valitse oletusarvot tarkoituksella, erityisesti pakollisille kentille ja valintaruuduille.

Anna kentälle käännetty otsikko

Ilman ohitusta MRBS johtaa tunnisteen sarakkeen nimestä. Määritä yksi tunniste kutakin aktiivista kieltä kohden 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';

Määritä entry/repeat-parille vain entry.catering; tunnusta repeat.catering ei tarvita. Huone- ja käyttäjäkenttien tunnuksia ovat esimerkiksi room.coffee_machine ja users.phone.

Katso kohdasta Teksti ja käännökset sanaston ohituksia, kielitiedostoja ja käännettyjä ohjesivuja.

Valitse syöttötapa

Kiinteät valinnat

$select_options korvaa vapaamuotoisen syötteen valintaluettelolla:

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

Assosiatiivista taulukkoa käytettäessä MRBS tallentaa avaimen (c) mutta näyttää, hakee ja raportoi tekstin (Coffee). Näyttötekstiä voi siten muuttaa kirjoittamatta tallennettuja tietoja uudelleen.

Vältä avaimia, jotka koostuvat vain numeroista: PHP muuntaa kokonaislukumaiset merkkijonoavaimet kokonaisluvuiksi, joten MRBS saattaa tulkita taulukon indeksoiduksi. Sisällytä tyhjä valinta, kun pakollinen valinta on aloitettava valitsemattomana.

$select_options tukee kenttiä entry.name ja entry.description sekä mukautettuja entry- ja users-kenttiä. Vaihtoehtojen tekstit ovat samat koko sivustossa; itse kentän nimen voi kääntää $vocab_override-asetuksella.

Ehdotuksia vapaalla syötteellä

Käytä $datalist_options-asetusta, kun haluat ehdottaa arvoja mutta hyväksyä myös muita arvoja:

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

Se tukee samoja kenttiä kuin $select_options. Assosiatiivisessa datalistassa tallennettava avain voi yllättää käyttäjän, joten testaa toiminta ennen käyttöönottoa.

Pakolliset, yksityiset ja vahvistetut kentät

Tee kentästä pakollinen kaikkialla:

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

Tai vain alueilla, joilla on tietokantatunnukset 1 ja 3:

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

Aluekohtaiset pakolliset säännöt koskevat vain entry-kenttiä. Pakollinen valintaruutu on valittava ennen lähettämistä.

Yksityisiä mukautettuja kenttiä tuetaan entry- ja users-tauluissa:

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

Arvo suojataan vain, kun yksityiset varaukset ovat käytössä ja asianmukaisesti määritetty. Testaa kaikki asiaankuuluvat käyttäjäroolit. Käyttöliittymän yksityisyysasetukset eivät korvaa arkaluontoisten tietojen määrän rajoittamista.

Säännölliseen lausekkeeseen perustuva tarkistus on tällä hetkellä rajattu mukautettuihin users-tekstikenttiin:

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

Tekstikentissä voi olla käännettyjä esimerkkitekstejä:

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

Selaimessa tehtävä muodon tarkistus parantaa käyttäjäpalautetta, mutta ei tee kentästä turvallista paikkaa salaisuuksille tai epäluotettavalle sisällölle.

Hallitse kenttäjärjestystä

Sijoita varauskentät nimenomaisesti luonti- ja katselusivuille:

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

Luettelosta puuttuvat kentät lisätään tavallisessa järjestyksessä. Mukautetut kentät voi sijoittaa myös raportin hakulomakkeeseen:

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

Täydellinen esimerkki

Kun olet lisännyt catering-sarakkeen kumpaankin varaustauluun:

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

Tämän esimerkin vaihtoehtotekstit pysyvät samoina kaikilla käyttöliittymän kielillä. Jos vaihtoehdot on käännettävä, suunnittele ja testaa sivustokohtainen laajennus; $select_options ei käännä niitä automaattisesti.

Muuta, poista ja päivitä

Ennen kuin lyhennät saraketta tai muutat sen tyyppiä, tarkista olemassa olevat arvot ja testaa muunnos. Kun poistat kentän, poista ensin sen asetusviittaukset, ota muutos käyttöön ja varmista sovelluksen toiminta. Poista sarake vasta sen jälkeen tavanomaisella tietokannan muutosmenettelyllä. Muuta varauskenttien osalta sekä entry- että repeat-taulua.

Dokumentoi jokainen mukautettu sarake sivuston ylläpito-ohjeissa ja tarkista se jokaisen MRBS-päivityksen jälkeen. MRBS:n vakioskeeman komentosarjat eivät hallitse näitä sarakkeita.

Vahvistuksen tarkistuslista

  • entry- ja repeat-määritelmät ovat samat jokaiselle mukautetulle varauskentälle.
  • Varauksen luominen, muokkaaminen, katseleminen, kopioiminen ja poistaminen toimii.
  • Toistuva sarja ja yksi esiintymä voidaan muokata oikein.
  • Tietokannan oletusasetuksia sovelletaan uusiin tietueisiin.
  • Pakollisuus, yksityisyys, valintaluettelo, datalista ja tarkistus toimivat oikein käyttäjäroolin ja alueen mukaan.
  • Kenttien nimet näkyvät kaikilla määritetyillä kielillä.
  • Haku, raportit, sähköposti, kalenterin vienti ja tuonti/vienti näyttävät turvalliset arvot.
  • Huone- ja käyttäjähallinta näyttää vain aiotut kentät.
  • Varmuuskopiointi- ja palautusmenettelyt sisältävät laajennetun skeeman.