- ^ Références
- ^ Les classes utilitaires
- jApp : chemins de l'application
- jDateTime : manipulation de dates et heures
- jFile : lire ou créer des fichiers
- jFilter : vérification et filtrage de données
- jHttp : faire des requête HTTP
- jImageModifier: Modifier une image
- jIniFileModifier: lire ou modifier des fichiers de configuration (ini)
- jMailer : envoi de mails
- jMessage : informations entre actions
- jPref : gérer vos préferences d'applications
- jSession : stockage de sessions
- jWiki : transformation de texte wiki
Section: jPref : gérer vos préferences d'applications
« jMessage : informations entre actions | ^ Les classes utilitaires | jSession : stockage de sessions » |
− Table des matières
jPref ¶
jPref est une classe très simple qui va vous permettre de récuperer et
d'enregistrer des préférences pour votre application (on parle ici de
préférences qui peuvent évoluer dans la vie de l'application et non de
préférences de configuration fixes qui elles se trouvent dans le
defaultconfig.ini.php
).
Configuration ¶
jPref
est fourni par le module "jpref". Activez-le dans votre
configuration :
[modules]
jpref.access = 1
Et lancez l'installateur de votre application.
jPref
est en fait une classe qui encapsule jKVDb
. Par conséquent,
pour utiliser jPref il vous suffit de définir un profil pour jkvdb
ayant comme
nom jpref
.
Dans votre profiles.ini.php:
[jkvdb:jpref]
...
Pour plus de détails sur la configuration de ce driver, voir la documentation de jKVDb.
Utilisation ¶
jPref::get($key)
: pour récupérer une préference.jPref::set($key, $value)
: pour enregistrer ou modifier une préférence.
Exemple :
jPref::set('nb.items.per.page', 20);
$val = jPref::get('nb.items.per.page');
// $val contient 20
Interface d'admin pour jPref ¶
Un module jpref_admin est fournit afin gérer les préférences depuis votre interface d'administration. Les pages de ce module sont directement accessible depuis le menu de master_amin (menu "Système", lien "Préferences").
Il faudra d'abord renseigner le fichier var/config/preferences.ini.php
afin
d'organiser et configurer vos préferences (type, locale, valeur par défaut,
groupe de préférences, droits de lecture/écriture).
Configuration d'une préférence ¶
Dans votre fichier preferences.ini.php
, vous avez une section pour chaque
preference, dont le nom commence par "pref:" :
[pref:nom.systeme.de.la.pref]
; "string" | "integer" | "boolean" | "decimal" (défaut string)
type =
; clé de la locale pour le libellé
locale =
; identifiant du groupe auquelle appartient la préférence
group =
; sujet jAcl2 correspondant au droit de lecture de la préférence
read_acl_subject =
; sujet jAcl2 correspondant au droit d'écriture de la préférence
write_acl_subject =
; valeur par défaut
default_value =
Note : chaque parametre est optionel.
read_acl_subject
et write_acl_subject
permette de limiter l'accés
aux préférences en fonction des utilisateurs. Certaines preferences peuvent
par exemple n'être accessible et modifiable que par des administrateurs
par exemple. Il vous faudra donc définir des droits dans jAcl2, et indiquer
ici les "sujets" correspondant.
Si read_acl_subject
et write_acl_subject
ne sont pas rempli,
tout utilisateur qui a le droit "jprefs.prefs.list" peut lire et modifier
la préférence.
Configuration d'un groupe de préférences ¶
Les préferences peuvent être regroupées, afin d'en faciliter la gestion. Vous pouvez avoir un groupe par module ou domaine fonctionnel par exemple.
Dans votre fichier preferences.ini.php
, déclarez une section
avec un prefix "group:". Une section contient le label du groupe
et son ordre d'affichage.
[group:nom.syteme.de.la.pref]
; clé de la locale définissant le label du groupe
locale =
; ordre d'affichage dans la liste des préférences
order =
Note : chaque paramètre est optionel et peut ne pas être remplie.
Exemple ¶
[group:contact]
locale = "contact~admin.pref.group.contact"
order = 1
[pref:telephone]
type = string
locale = "contact~admin.pref.telephone"
group = "contact"
read_acl_subject =
write_acl_subject = "contact.edit.infos"
default_value =
[group:shop]
locale = "contact~admin.pref.group.contact"
order = 2
[pref:nb.items.per.page]
type = integer
locale = "shop_admin~admin.pref.nb.items.per.page"
group = shop
read_acl_subject =
write_acl_subject =
default_value = 15
[pref:shop.is.open]
type = boolean
locale = "shop_admin~admin.pref.shop.is.open"
group = shop
read_acl_subject =
write_acl_subject = "shop.edit.shop.status"
default_value = "false"