Campos personalizados¶
MRBS 1.12.2 detecta columnas adicionales de la base de datos y las utiliza como campos de reservas, salas o usuarios. Por tanto, son extensiones del esquema: la configuración no crea las columnas automáticamente.
Crear una copia primero
Hacer una copia de la base de datos y probar el cambio fuera de producción. Las actualizaciones de MRBS no crean, migran ni eliminan columnas propias del sitio.
Tablas compatibles¶
| Tabla | Finalidad | Regla importante |
|---|---|---|
entry |
Datos adicionales de una reserva | Añadir la misma columna a repeat |
repeat |
Plantilla de una serie periódica | Nombre, tipo, longitud, nulabilidad y valor predeterminado idénticos a entry |
room |
Propiedades adicionales de una sala o recurso | Se muestran y editan con la sala |
users |
Datos adicionales del perfil | Solo con autenticación por base de datos |
Una columna en entry sin otra idéntica en repeat provoca errores en las
operaciones con series. Ambas forman un único cambio de esquema.
Los nombres solo pueden contener letras, números y guiones bajos. En PostgreSQL
deben comenzar por una letra o guion bajo. Conviene usar nombres estables como
participant_count o catering.
Tipos de datos compatibles¶
| Tipo SQL | Control de MRBS |
|---|---|
TEXT |
Texto de varias líneas |
VARCHAR |
Texto de una o varias líneas, según la longitud máxima |
DATE |
Fecha |
DECIMAL / NUMERIC |
Número |
INT |
Entero |
SMALLINT / TINYINT |
Casilla, interpretada como valor booleano |
Usar SMALLINT para booleanos en PostgreSQL y TINYINT en MySQL. El manejo
automático no admite otros tipos.
Añadir el campo al esquema¶
Los ejemplos presuponen el prefijo mrbs_. Debe sustituirse si
$db_tbl_prefix tiene otro valor.
Campo de reserva¶
ALTER TABLE mrbs_entry
ADD COLUMN catering VARCHAR(32) DEFAULT NULL;
ALTER TABLE mrbs_repeat
ADD COLUMN catering VARCHAR(32) DEFAULT NULL;
Las dos sentencias funcionan con MySQL y PostgreSQL. Antes de abrir el formulario, comprobar que las definiciones resultantes sean idénticas.
Casilla para una sala¶
MRBS 1.12.2 aplica el valor predeterminado de la base de datos a los registros nuevos. Hay que elegirlo con cuidado, sobre todo en campos obligatorios y casillas.
Etiqueta traducida¶
Sin una sustitución, MRBS deriva la etiqueta del nombre de columna. Se define
una etiqueta por idioma activo 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';
Para el par entry/repeat solo hace falta entry.catering. Los campos de
salas y usuarios usan claves como room.coffee_machine y users.phone.
Véase Textos y traducciones para sustituciones, archivos de idioma y páginas de ayuda traducidas.
Comportamiento de entrada¶
Opciones cerradas¶
$select_options sustituye la entrada libre por una lista:
$select_options['entry.catering'] = array(
'' => 'Seleccione una opción',
'c' => 'Café',
's' => 'Bocadillos',
'h' => 'Comida caliente',
);
Con un array asociativo, MRBS guarda la clave (c) pero muestra, busca e
incluye en informes el valor (Café). Así se puede cambiar el texto visible
sin reescribir los datos.
Evitar claves formadas solo por dígitos: PHP convierte cadenas con aspecto de entero y MRBS puede interpretar el array como indexado. Incluir una opción vacía si un campo obligatorio debe empezar sin selección.
$select_options admite entry.name, entry.description, campos entry
personalizados y campos users personalizados. Los textos de opciones son
globales para el sitio; la etiqueta del campo sí puede traducirse con
$vocab_override.
Sugerencias con entrada libre¶
$datalist_options propone valores, pero permite introducir otros:
Admite los mismos campos que $select_options. En listas asociativas, la clave
guardada puede sorprender; conviene probar el comportamiento.
Campos obligatorios, privados y validados¶
Hacer obligatorio un campo en todas partes:
O solo en las áreas con identificadores 1 y 3:
La regla por área solo se aplica a entry. Una casilla obligatoria debe estar
marcada.
Los campos personalizados de entry y users pueden ser privados:
La protección solo funciona si las reservas privadas están activadas y configuradas. Probar todos los roles y reducir al mínimo los datos sensibles.
La validación mediante patrón se limita actualmente a campos de texto
personalizados de users:
$pattern['users.zip_code'] = '^[0-9]{5}$';
$vocab_override['es']['users.zip_code.oninvalid'] =
'Introduzca un código postal de cinco dígitos';
Un campo de texto de la reserva puede tener un texto indicativo traducido:
Orden de los campos¶
Definir el orden de las páginas de creación y visualización:
Los campos no incluidos se añaden en su orden habitual. Los campos personalizados también pueden formar parte del orden de búsqueda de informes:
Ejemplo completo¶
Después de añadir catering a las dos tablas de reservas:
$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' => 'Café',
's' => 'Bocadillos',
'h' => 'Comida caliente',
);
$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',
);
Los textos de opciones de este ejemplo son iguales en todos los idiomas de la
interfaz. Si deben traducirse, hay que diseñar y probar una extensión local;
$select_options no los traduce automáticamente.
Modificar, eliminar y actualizar¶
Antes de acortar una columna o cambiar su tipo, revisar los valores y probar la
conversión. Para eliminar un campo, quitar primero sus referencias de
configuración, desplegar y probar, y solo después borrar la columna mediante el
proceso normal de base de datos. Cambiar siempre entry y repeat juntos.
Documentar todas las columnas locales y revisarlas tras cada actualización. Los scripts de esquema estándar de MRBS no las administran.
Lista de comprobación¶
- Las definiciones de
entryyrepeatson idénticas. - Crear, editar, ver, copiar y eliminar reservas funciona.
- Se pueden modificar una serie y una única aparición.
- Se aplican los valores predeterminados de la base.
- Obligación, privacidad, listas, sugerencias y validación funcionan por rol y área.
- Las etiquetas aparecen en todos los idiomas configurados.
- Búsqueda, informes, correo, calendario e importación/exportación muestran valores seguros.
- La administración de salas y usuarios muestra solo los campos previstos.
- Copias y restauraciones incluyen el esquema ampliado.