Camps personalitzats¶
MRBS 1.12.2 pot detectar columnes addicionals de la base de dades i utilitzar-les com a camps de les reserves, les aules o els usuaris. Per tant, els camps personalitzats són ampliacions de l'esquema, no pas paràmetres que creïn columnes automàticament.
Fer una còpia de seguretat primer
Feu una còpia de seguretat de la base de dades i proveu el canvi en una instància que no sigui de producció. Les actualitzacions de MRBS no creen, migren ni eliminen columnes específiques del lloc.
On s'admeten camps personalitzats¶
| Taula de base de dades | Propòsit | Norma important |
|---|---|---|
entry |
Dades addicionals per a una reserva individual | Afegiu la columna idèntica a repeat |
repeat |
Dades de la plantilla d'una reserva recurrent | Mantingueu el nom, el tipus, la longitud, l'admissió de valors nuls i el valor predeterminat idèntics als de entry |
room |
Propietats addicionals de l'aula o del recurs | Es mostra i s'edita juntament amb les dades de l'aula |
users |
Dades addicionals del perfil d'usuari | S'utilitza només amb l'autenticació de la base de dades |
Una columna de entry sense una columna idèntica a repeat fa fallar les operacions de reserves recurrents. Tracteu totes dues columnes com un únic canvi de l'esquema.
Utilitzeu només lletres, números i guions baixos en el nom d'una columna. Per a la compatibilitat amb PostgreSQL, comenceu-lo amb una lletra o un guió baix. Preferiu noms estables en minúscules, com ara participant_count o catering.
Tipus de bases de dades compatibles¶
| Tipus SQL | Control d'MRBS |
|---|---|
TEXT |
Text de diverses línies |
VARCHAR |
Entrada de text o text de diverses línies, segons la seva longitud màxima |
DATE |
Entrada de data |
DECIMAL / NUMERIC |
Introducció de números |
INT |
Entrada de nombre enter |
SMALLINT / TINYINT |
Casella de selecció, interpretada com un valor booleà |
Utilitzeu SMALLINT per als camps personalitzats booleans de PostgreSQL i TINYINT per als de MySQL. La gestió automàtica dels camps personalitzats no admet altres tipus de columna.
Afegiu un camp a l'esquema¶
Els exemples pressuposen el prefix de taula predeterminat mrbs_. Substituïu-lo si $db_tbl_prefix té un altre valor.
Camp de reserva¶
Aquest exemple afegeix una opció de càtering opcional:
ALTER TABLE mrbs_entry
ADD COLUMN catering VARCHAR(32) DEFAULT NULL;
ALTER TABLE mrbs_repeat
ADD COLUMN catering VARCHAR(32) DEFAULT NULL;
Ambdues declaracions funcionen amb MySQL i PostgreSQL. Verifiqueu les definicions resultants a les dues taules abans d'obrir el formulari de reserva.
Casella de selecció de l'aula¶
A MRBS 1.12.2, el valor predeterminat de la base de dades s'utilitza quan es crea una fila nova. Trieu els valors predeterminats deliberadament, especialment per als camps obligatoris i les caselles de selecció.
Doneu al camp una etiqueta traduïda¶
Sense una substitució, MRBS deriva l'etiqueta del nom de la columna. Definiu una etiqueta per idioma actiu en 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 a una parella entry/repeat, definiu només entry.catering; no cal cap clau repeat.catering. Els camps d'aula i d'usuari utilitzen claus com room.coffee_machine i users.phone.
Vegeu Text i traduccions per a substitucions de vocabulari, fitxers d'idioma i pàgines d'ajuda traduïdes.
Trieu el comportament d'entrada¶
Opcions fixes¶
$select_options substitueix l'entrada lliure per una llista de selecció:
$select_options['entry.catering'] = array(
'' => 'Please select',
'c' => 'Coffee',
's' => 'Sandwiches',
'h' => 'Hot lunch',
);
En una matriu associativa, MRBS emmagatzema la clau (c) i utilitza el valor (Coffee) per mostrar, cercar i generar informes. Això permet canviar el text sense reescriure les dades emmagatzemades.
Eviteu les claus que només consten de dígits: PHP converteix les claus de cadena semblants a nombres enters en nombres enters, de manera que MRBS pot interpretar la matriu com a indexada. Incloeu una opció buida quan una selecció obligatòria ha de començar sense seleccionar.
$select_options admet entry.name, entry.description, els camps personalitzats de entry i els de users. Els textos de les opcions configurades són comuns per a tot el lloc; l'etiqueta del camp es pot traduir amb $vocab_override.
Suggeriments amb entrada lliure¶
Utilitzeu $datalist_options per oferir suggeriments sense impedir que s'introdueixi un altre valor:
Admet els mateixos camps que $select_options. Amb les llistes de dades associatives, la clau emmagatzemada pot sorprendre als usuaris, així que proveu el comportament abans d'utilitzar-la.
Camps obligatoris, privats i validats¶
Feu que un camp sigui obligatori a tot arreu:
O només a les àrees amb els ID de la base de dades 1 i 3:
Les regles d'obligatorietat específiques d'una àrea només s'apliquen als camps de entry. Les caselles obligatòries han d'estar marcades abans d'enviar el formulari.
S'admeten camps personalitzats privats a entry i users:
Això només protegeix el valor si les reserves privades estan habilitades i configurades. Proveu tots els rols pertinents; la privadesa de la interfície no substitueix la minimització de les dades sensibles.
Actualment, la validació mitjançant patrons es limita als camps de text personalitzats de 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';
Els camps de text d'entrada poden tenir marcadors de posició traduïts:
Els patrons del navegador milloren els missatges de validació, però no converteixen el camp en un lloc segur per desar secrets ni contingut no fiable.
Control de l'ordre del camp¶
Col·loqueu els camps de reserva de manera explícita a les pàgines de creació i visualització:
Els camps no llistats s'afegeixen en el seu ordre normal. Els camps personalitzats també es poden col·locar al formulari de cerca d'informes:
Exemple complet¶
Després d'afegir catering a les dues taules de reserva:
$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',
);
Els textos de les opcions d'aquest exemple són els mateixos en totes les llengües de la interfície. Si necessiteu traduir-los, dissenyeu i proveu una ampliació específica del lloc; $select_options no els tradueix automàticament.
Canviar, eliminar i actualitzar¶
Abans d'escurçar una columna o canviar-ne el tipus, inspeccioneu els valors existents i proveu la conversió. Abans d'eliminar un camp, suprimiu-ne les referències de la configuració, desplegueu aquest canvi, confirmeu que l'aplicació funciona i només llavors elimineu la columna mitjançant el procés habitual de modificació de la base de dades. En els camps de reserva, modifiqueu tant entry com repeat.
Documenteu cada columna personalitzada a la documentació operativa del lloc i torneu-la a comprovar després de cada actualització d'MRBS. Els scripts d'esquema estàndard d'MRBS no gestionen aquestes columnes.
Llista de verificació¶
- Les definicions de
entryirepeatsón idèntiques per a cada camp de reserva. - Crear, editar, visualitzar, copiar i suprimir una reserva funciona.
- Es poden editar correctament una sèrie recurrent i una ocurrència.
- Els valors predeterminats de la base de dades s'apliquen als registres nous.
- El comportament obligatori, privat, de selecció, llista de dades i validació funciona per rol i àrea.
- Les etiquetes apareixen en tots els idiomes configurats.
- La cerca, els informes, el correu electrònic, l'exportació del calendari i la importació/exportació mostren valors segurs.
- L'administració d'aules i d'usuaris només mostra els camps previstos.
- Els procediments de còpia de seguretat i restauració inclouen l'esquema ampliat.