Champs personnalisés¶
MRBS 1.12.2 détecte les colonnes supplémentaires de la base de données et les utilise comme champs de réservations, de salles ou d’utilisateurs. Il s’agit donc d’extensions du schéma : la configuration ne crée pas les colonnes.
Sauvegarder d’abord
Sauvegarder la base et tester la modification hors production. Les mises à niveau de MRBS ne créent, ne migrent et ne suppriment pas les colonnes propres au site.
Tables prises en charge¶
| Table | Usage | Règle importante |
|---|---|---|
entry |
Données supplémentaires d’une réservation | Ajouter la même colonne à repeat |
repeat |
Modèle d’une série récurrente | Nom, type, longueur, valeur NULL et valeur par défaut identiques à entry |
room |
Propriétés d’une salle ou ressource | Affichées et modifiées avec la salle |
users |
Données de profil supplémentaires | Utilisées uniquement avec l’authentification par base |
Une colonne entry sans colonne repeat identique provoque l’échec des
opérations sur les séries. Les deux colonnes forment une seule modification de
schéma.
Un nom de colonne ne doit contenir que lettres, chiffres et traits de
soulignement. Avec PostgreSQL, il doit commencer par une lettre ou un trait de
soulignement. Préférer un nom stable comme participant_count ou catering.
Types de données pris en charge¶
| Type SQL | Contrôle MRBS |
|---|---|
TEXT |
Texte multiligne |
VARCHAR |
Texte simple ou multiligne selon la longueur maximale |
DATE |
Date |
DECIMAL / NUMERIC |
Nombre |
INT |
Entier |
SMALLINT / TINYINT |
Case à cocher, interprétée comme booléen |
Employer SMALLINT pour un booléen sous PostgreSQL et TINYINT sous MySQL.
Les autres types ne sont pas gérés par le mécanisme automatique.
Ajouter le champ au schéma¶
Les exemples supposent le préfixe par défaut mrbs_. Le remplacer si
$db_tbl_prefix a une autre valeur.
Champ de réservation¶
ALTER TABLE mrbs_entry
ADD COLUMN catering VARCHAR(32) DEFAULT NULL;
ALTER TABLE mrbs_repeat
ADD COLUMN catering VARCHAR(32) DEFAULT NULL;
Ces instructions conviennent à MySQL et PostgreSQL. Vérifier que les deux définitions obtenues sont identiques avant d’ouvrir le formulaire.
Case à cocher d’une salle¶
MRBS 1.12.2 applique la valeur par défaut de la base aux nouveaux enregistrements. La choisir avec soin, surtout pour les champs obligatoires et les cases à cocher.
Libellé traduit¶
Sans substitution, MRBS déduit le libellé du nom de colonne. Définir un libellé
par langue active dans 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';
Pour une paire entry/repeat, seul entry.catering est nécessaire.
Les champs de salle et d’utilisateur utilisent par exemple
room.coffee_machine et users.phone.
Voir Textes et traductions pour les substitutions, les fichiers de langue et les pages d’aide traduites.
Comportement de saisie¶
Choix fermé¶
$select_options remplace la saisie libre par une liste :
$select_options['entry.catering'] = array(
'' => 'Veuillez choisir',
'c' => 'Café',
's' => 'Sandwichs',
'h' => 'Repas chaud',
);
Avec un tableau associatif, MRBS stocke la clé (c) mais affiche, recherche et
rapporte la valeur (Café). Le texte visible peut ainsi changer sans modifier
les données existantes.
Éviter les clés composées uniquement de chiffres : PHP convertit les chaînes ressemblant à des entiers et MRBS peut alors traiter le tableau comme indexé. Inclure un choix vide si un champ obligatoire doit commencer sans sélection.
$select_options est pris en charge pour entry.name, entry.description,
les champs entry personnalisés et les champs users personnalisés. Les
textes des options sont globaux au site ; le libellé du champ est traduisible
avec $vocab_override.
Suggestions avec saisie libre¶
$datalist_options propose des valeurs sans interdire une autre saisie :
Il accepte les mêmes champs que $select_options. Dans une liste associative,
la clé enregistrée peut surprendre l’utilisateur : tester ce comportement.
Champs obligatoires, privés et validés¶
Rendre un champ obligatoire partout :
Ou seulement dans les zones d’identifiants 1 et 3 :
La règle par zone ne s’applique qu’aux champs entry. Une case obligatoire
doit être cochée.
Les champs personnalisés entry et users peuvent être privés :
Cette protection ne fonctionne que si les réservations privées sont activées et correctement configurées. Tester chaque rôle et limiter les données sensibles collectées.
La validation par motif est actuellement limitée aux champs texte
personnalisés de users :
$pattern['users.zip_code'] = '^[0-9]{5}$';
$vocab_override['fr']['users.zip_code.oninvalid'] =
'Saisissez un code postal à cinq chiffres';
Un champ texte de réservation peut avoir un indicateur traduit :
$vocab_override['fr']['entry.catering.placeholder'] =
'Indiquez les allergies ou besoins particuliers';
Ordre des champs¶
Définir l’ordre des pages de création et d’affichage :
Les champs absents sont ajoutés dans leur ordre habituel. L’ordre des critères de rapport peut également inclure les champs personnalisés :
Exemple complet¶
Après avoir ajouté catering aux deux tables de réservation :
$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' => 'Sandwichs',
'h' => 'Repas chaud',
);
$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',
);
Les options de cet exemple restent identiques dans toutes les langues de
l’interface. Si leur traduction est nécessaire, concevoir et tester une
extension locale : $select_options ne les traduit pas automatiquement.
Modifier, supprimer et mettre à niveau¶
Avant de réduire une colonne ou de changer son type, examiner les valeurs
existantes et tester la conversion. Pour supprimer un champ, retirer d’abord
ses références de configuration, déployer et tester, puis supprimer la colonne
dans le processus normal de base de données. Modifier toujours entry et
repeat ensemble.
Documenter chaque colonne locale et la contrôler après toute mise à niveau. Les scripts de schéma MRBS standard ne la gèrent pas.
Liste de vérification¶
- Les définitions
entryetrepeatsont identiques. - Création, modification, affichage, copie et suppression fonctionnent.
- Une série et une occurrence isolée peuvent être modifiées.
- Les valeurs par défaut de la base sont appliquées.
- Obligations, confidentialité, listes, suggestions et validation fonctionnent par rôle et zone.
- Les libellés apparaissent dans toutes les langues configurées.
- Recherche, rapports, e-mail, calendrier et import/export présentent des valeurs sûres.
- L’administration des salles et utilisateurs n’affiche que les champs voulus.
- Sauvegarde et restauration comprennent le schéma étendu.