Campi personalizzati¶
MRBS 1.12.2 può scoprire colonne aggiuntive del database e utilizzarle come campi per prenotazioni, sale e utenti. I campi personalizzati sono quindi estensioni dello schema, non impostazioni che creano colonne automaticamente.
Prima fai il backup
Eseguire il backup del database e testare la modifica su un'istanza non di produzione. Gli aggiornamenti MRBS non creano, migrano o rimuovono colonne specifiche del sito.
Dove sono supportati i campi personalizzati¶
| Tabella della banca dati | Scopo | Regola importante |
|---|---|---|
entry |
Dati aggiuntivi per una prenotazione individuale | Aggiungi la colonna identica a repeat |
repeat |
Dati del modello per una prenotazione ricorrente | Mantieni nome, tipo, lunghezza, annullabilità e impostazione predefinita identici a entry |
room |
Proprietà di sale o risorse aggiuntive | Visualizzato e modificato con i dati della sala |
users |
Dati aggiuntivi del profilo utente | Utilizzato solo con l'autenticazione del database |
Una colonna entry senza una colonna repeat identica causa il fallimento delle operazioni di prenotazione ricorrenti. Tratta la coppia come un cambiamento di schema.
Utilizza solo lettere, numeri e trattini bassi nel nome di una colonna. Per compatibilità con PostgreSQL, inizialo con una lettera o un carattere di sottolineatura. Preferisci nomi stabili e minuscoli come participant_count o catering.
Tipi di database supportati¶
| Tipo SQL | Controllo MRBS |
|---|---|
TEXT |
Testo su più righe |
VARCHAR |
Inserimento di testo o testo su più righe, a seconda della sua lunghezza massima |
DATE |
Inserimento della data |
DECIMAL / NUMERIC |
Inserimento del numero |
INT |
Inserimento di un numero intero |
SMALLINT / TINYINT |
Casella di controllo, interpretata come valore booleano |
Utilizza SMALLINT per i campi personalizzati booleani su PostgreSQL e TINYINT su MySQL. Altri tipi di colonne non sono supportati dalla gestione automatica dei campi personalizzati.
Aggiungi un campo allo schema¶
Gli esempi presuppongono il prefisso della tabella predefinito mrbs_. Sostituiscilo se $db_tbl_prefix ha un altro valore.
Campo prenotazione¶
Questo esempio aggiunge una scelta di catering opzionale:
ALTER TABLE mrbs_entry
ADD COLUMN catering VARCHAR(32) DEFAULT NULL;
ALTER TABLE mrbs_repeat
ADD COLUMN catering VARCHAR(32) DEFAULT NULL;
Entrambe le istruzioni funzionano con MySQL e PostgreSQL. Verificare le definizioni risultanti in entrambe le tabelle prima di aprire il modulo di prenotazione.
Casella di controllo della sala¶
In MRBS 1.12.2, quando viene creata una nuova riga viene utilizzato il valore predefinito del database. Scegli questi valori con attenzione, in particolare per i campi obbligatori e le caselle di controllo.
Assegna al campo un'etichetta tradotta¶
Senza una sostituzione, MRBS deriva l'etichetta dal nome della colonna. Definire un'etichetta per lingua attiva in 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';
Per una coppia entry/repeat, definire solo entry.catering; non è necessario alcun token repeat.catering. I campi sala e utente utilizzano token come room.coffee_machine e users.phone.
Vedi Testi e traduzioni per le sostituzioni del vocabolario, i file della lingua e le pagine della Guida tradotte.
Scegli il comportamento di input¶
Scelte fisse¶
$select_options sostituisce l'input libero con un elenco di selezione:
$select_options['entry.catering'] = array(
'' => 'Please select',
'c' => 'Coffee',
's' => 'Sandwiches',
'h' => 'Hot lunch',
);
Per un array associativo, MRBS memorizza la chiave (c) e visualizza, cerca e segnala il valore (Coffee). Ciò consente di modificare la formulazione senza riscrivere i dati memorizzati.
Evita chiavi costituite solo da cifre: PHP converte le chiavi stringa simili a numeri interi in numeri interi, quindi MRBS potrebbe interpretare l'array come indicizzato. Include una scelta vuota quando una selezione obbligatoria deve iniziare senza essere selezionata.
$select_options è supportato per i campi entry.name, entry.description, campi personalizzati entry e campi personalizzati users. Le didascalie delle opzioni configurate sono stringhe a livello di sito; l'etichetta del campo stesso può essere tradotta con $vocab_override.
Suggerimenti con input libero¶
Utilizza $datalist_options per suggerimenti accettando comunque un altro valore:
Supporta gli stessi campi di $select_options. Con i datalist associativi, la chiave memorizzata può sorprendere gli utenti, quindi testane il comportamento prima dell'uso.
Campi obbligatori, privati e convalidati¶
Rendi obbligatorio un campo ovunque:
Oppure solo nelle aree con ID database 1 e 3:
Le norme obbligatorie specifiche per area si applicano solo ai campi entry. Prima dell'invio è necessario selezionare una casella di controllo obbligatoria.
I campi personalizzati privati sono supportati per entry e users:
Ciò protegge il valore solo quando le prenotazioni private sono abilitate e configurate. Testare ogni ruolo rilevante; non utilizzare la privacy dell'interfaccia utente come sostituto della riduzione al minimo dei dati sensibili.
La convalida del modello è attualmente limitata ai campi di testo personalizzati 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';
I campi di testo di immissione possono avere segnaposto tradotti:
I modelli lato client migliorano il feedback ma non trasformano un campo in un luogo sicuro per segreti o markup non attendibili.
Controlla l'ordine dei campi¶
Posiziona esplicitamente i campi di prenotazione nelle pagine di creazione e visualizzazione:
I campi non elencati vengono aggiunti nel loro ordine normale. È inoltre possibile inserire campi personalizzati nel modulo di ricerca del report:
Esempio completo¶
Dopo aver aggiunto catering a entrambe le tabelle di prenotazione:
$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',
);
Le didascalie delle opzioni in questo esempio rimangono le stesse in ogni lingua dell'interfaccia utente. Se le didascalie delle opzioni tradotte sono un requisito, progetta e testa un'estensione specifica del sito anziché dare per scontato che $select_options le traduca automaticamente.
Cambia, rimuovi e aggiorna¶
Prima di ridurre la lunghezza di una colonna o modificarne il tipo, controlla i valori esistenti e prova la conversione. Prima di rimuovere un campo, elimina i riferimenti nella configurazione, distribuisci la modifica, verifica il funzionamento dell'applicazione e solo allora elimina la colonna con la normale procedura di modifica del database. Per i campi di prenotazione, modifica sia entry sia repeat.
Registra ogni colonna personalizzata nella documentazione operativa del sito e ricontrollala dopo ogni aggiornamento MRBS. Gli script dello schema standard MRBS non possiedono queste colonne.
Lista di controllo per la verifica¶
- Le definizioni
entryerepeatsono identiche per ogni campo di prenotazione. - Creare, modificare, visualizzare, copiare ed eliminare una prenotazione funziona.
- Una serie ricorrente e un'occorrenza possono essere modificate correttamente.
- Le impostazioni predefinite del database vengono applicate ai nuovi record.
- Il comportamento richiesto, privato, selezione, elenco dati e convalida funziona in base al ruolo e all'area.
- Le etichette vengono visualizzate in ogni lingua configurata.
- Ricerca, rapporti, email, esportazione del calendario e importazione/esportazione mostrano valori sicuri.
- L'amministrazione della sala e degli utenti visualizza solo i campi previsti.
- Le procedure di backup e ripristino includono lo schema esteso.