Raccourcis : Contenu - rubriques - sous rubriques
EN FR

Le fichier project.xml

Le fichier project.xml contient des informations sur l'application, dont certaines sont importantes puisqu'elles servent à l'installateur, entre autre.

C'est un fichier XML avec une balise racine <project>, qui contient 4 autres balises.


<project xmlns="http://jelix.org/ns/project/1.0">
    <info id="testapp@jelix.org" name="testapp" createdate="2017-01-01">
     ...
    </info>
    <dependencies>
     ...
    </dependencies>
    <directories>
     ...
    </directories>
    <entrypoints>
     ...
    </entrypoints>
</project>

info

Dans la balise info, il y a des informations purement indicatives sur l'application, comme le nom, une description, le copyright, le créateur etc. Notez que cet élément peut être aussi utilisé dans un fichier module.xml pour identifier un module. Voici un exemple:


<info id="testapp@jelix.org" name="testapp" createdate="2017-01-01">
    <version>1.0</version>
    <label lang="en-EN">Testapp</label>
    <description lang="en-EN">Application to test Jelix</description>
    <licence URL="http://www.gnu.org/licenses/gpl.html">GPL</licence>
    <copyright>2017 Laurent Jouanneau</copyright>
    <creator name="Laurent Jouanneau" email="laurent@jelix.org"/>
    <contributor name="Superman" email="superman@superville.com"/>
    <homepageURL>http://jelix.org</homepageURL>
</info>

Seuls la balise <version> et les attributs id et name sur <info> sont obligatoires. Les autres éléments sont optionnels.

L'attribut id doit être un identifiant unique. Il est donc recommandé d'avoir un identifiant qui ressemble à un email (ou alors un UUID mais c'est moins lisible).

L'attribut name doit être un nom "informatique" (en général, le nom du répertoire de l'application, ou celui du module). L'élément label contient un nom affichable.

dependencies

Cet élément <directories> doit contenir des informations sur les dépendances de l'application. Pour le moment, seules des informations sur la version de jelix requises sont nécessaires.


<dependencies>
     <jelix minversion="1.6.0" maxversion="1.6.*" />
</dependencies>

Cet élément peut être utilisé aussi dans un fichier module.xml, et peut contenir alors une ou plusieurs balises <module>, indiquant alors que ce ou ces modules doivent être installés pour que le module puisse fonctionner correctement.


  <module name="testurls" minversion="2.2" maxversion="2.3" />
  <module name="jauthdb" />
  <module name="jacl2db" />

directories

Cet élément indique le chemin de certains répertoires, relatifs au répertoire de l'application. Toutes les balises de l'exemple suivant sont obligatoires :


    <directories>
        <config>var/config</config>
        <log>var/log</log>
        <var>var</var>
        <www>www</www>
        <temp>../temp/testapp</temp>
    </directories>

entrypoints

La balise entrypoints liste tout les points d'entrée de l'application (qu'ils soient dans www/ ou scripts/), leur fichier de configuration et leur type.


    <entrypoints>
        <entry file="index.php" config="index/config.ini.php" />
        <entry file="soap.php" config="soap/config.ini.php" type="soap"/>
        <entry file="jsonrpc.php" config="jsonrpc/config.ini.php" type="jsonrpc"/>
        <entry file="cmdline.php" config="cmdline/config.ini.php" type="cmdline"/>
    </entrypoints>

Le fichier module.xml

Un fichier module.xml doit se trouver dans chacun des répertoires de module. Il contient une balise racine module qui doit contenir une balise <info> et <dependencies>. Voir plus haut pour savoir comment écrire ces balises. voici un exemple:


<module xmlns="http://jelix.org/ns/module/1.0">
    <info id="jelix_tests@testapp.jelix.org" name="jelix_tests">
        <version>1.0</version>
        <label>Jelix tests</label>
        <description>unit tests for jelix</description>
    </info>
    <dependencies>
        <jelix minversion="1.6" maxversion="1.6.*" />
        <module name="testurls" minversion="1.0.2" maxversion="1.1b1" />
        <module name="jauthdb" />
        <module name="jacl2db" />
        <module name="jacldb" />
    </dependencies>
</module>

Les fichiers mainconfig.ini et config.ini

Pour avoir la liste complète des options, voir le fichier commenté lib/jelix/core/defaultconfig.ini.php, qui est "l'original" du fichier var/config/mainconfig.ini.php.

Voici cependant quelques explications sur les différentes sections.

section générale

Ce sont les paramètres situés en début de fichier. Ils définissent des valeurs par défaut ou génériques à l'application.


startModule = "jelix"
startAction = "default:index"
locale = "fr_FR"
charset = "UTF-8"
timeZone = "Europe/Paris"

pluginsPath = lib:jelix-plugins/,app:plugins/
modulesPath = lib:jelix-modules/,app:modules/

theme = default
use_error_handler = on

Détails des paramètres :

  • startModule, startAction : module et action par défaut (redéfinis en général pour chaque type de réponse. Voir la section précédente)
  • locale, charset : langue et encodage par défaut des réponses
  • timeZone : définit le décalage horaire pour toutes les fonctions de dates et heures
  • pluginsPath : liste des chemins d'accès aux plugins
  • theme : nom du thème sélectionné par défaut. Voir la description du système des thèmes de Jelix
  • use_error_handler : cette option devrait rester à on pour que Jelix retourne des informations pertinentes sur les erreurs et exceptions des scripts.

section modules

Elle indique, pour chaque module, leur niveau d'accés.

  • 0: le module ne doit pas être installé, et n'est pas utilisé
  • 1: le module est utilisé, mais ne doit pas être accessible directement par le web, et ne peut donc être appelé que par des modules (il n'a donc en général pas de contrôleur, juste des ressources daos, forms etc)
  • 2: module utilisable normalement

section coordplugins

Doit contenir les noms des plugins à activer. Ils seront chargés à partir des chemins définis dans le paramètre général pluginsPath.

Par exemple, ci-dessous la configuration active le plugin de coordinateur gérant l'authentification et dont les paramètres se trouve dans le fichier auth.coord.ini.php. Pour plus de détails, voir la documentation sur l'authentification


[coordplugins]
auth = "auth.coord.ini.php"

section responses

Cette section permet de personnaliser les types réponses et leurs alias. Chaque ligne est un couple <alias de réponse>=<class de la réponse>.

Par exemple, Il est assez courant de vouloir surcharger la réponse html par défaut (jResponseHtml) en introduisant une ligne html=myhtmlresponse. Voir plus en détails dans personnalisation de réponse commune

Ci-dessous les valeurs par défaut des différents type de réponses:


[responses]
html = jResponseHtml
redirect = jResponseRedirect
redirectUrl = jResponseRedirectUrl
binary = jResponseBinary
text = jResponseText
jsonrpc = jResponseJsonrpc
json = jResponseJson
xmlrpc = jResponseXmlrpc
xml = jResponseXml
zip = jResponseZip
rss2.0 = jResponseRss20
atom1.0 = jResponseAtom10
css= jResponseCss
tcpdf = jResponseTcpdf

section error_handling

Les paramètres de cette section permettent de configurer les notifications survenant lors de l'exécution d'un script de l'application. Pour plus de détails, voir la documentation sur la gestion d'erreurs.

Les notifications ont différents niveaux d'importance. Jelix définit les niveaux suivants correspondant à ceux de PHP :

  • default = niveau sélectionné si aucun autre niveau ne correspond
  • error = signale une erreur nécessitant l'interruption du script
  • warning = signale un mauvais traitement sans toutefois nécessiter l'interruption du script
  • notice = signale une erreur potentielle
  • deprecated = signale une fonction dépréciée (php 5.3)
  • strict = signale des messages de moteur PHP pour améliorer l'interopérabilité et la compatibilité du script

Ci-dessous, l'ensemble des paramètres de la section :


[error_handling]
messageLogFormat = "%date%\t%ip\t[%code%]\t%msg%\t%file%\t%line%\n"
logFile = error.log
email = root@localhost
emailHeaders = "Content-Type: text/plain; charset=UTF-8\nFrom: webmaster@yoursite.com\nX-Mailer: Jelix\nX-Priority: 1 (Highest)\n"
quietMessage="A technical error has occured. Sorry for this trouble."

showInFirebug = off

; mots-clés que vous pouvez utiliser : ECHO, ECHOQUIET, EXIT, LOGFILE, SYSLOG, MAIL, TRACE
default      = ECHO EXIT
error        = ECHO EXIT
warning      = ECHO
notice       = ECHO
deprecated   = ECHO
strict       = ECHO
; pour les exceptions, il y a implicitement un EXIT
exception    = ECHO
  • messageLogFormat et logFile configurent la sortie en fichier de log (LOGFILE ou SYSLOG)
  • email et emailHeaders configurent la sortie sous forme de mail (MAIL)
  • quietMessage définit un message neutre pour l'utilisateur (ECHOQUIET)
  • showInFirebug : si affectée à on, toutes les notifications seront renvoyées vers la console de l'extension Firebug du navigateur Firefox via son api console.

les dernières options permettent d'associer un format de sortie à chaque niveau de notification.

section compilation

Définit le comportement du moteur de template de Jelix. Et notamment de la phase de compilation. Voir la documentation sur les templates pour plus de détails.


[compilation]
checkCacheFiletime  = on
force  = off
  • checkCacheFiletime : si on alors un template est recompilé si sa date de modification est plus récente que le fichier PHP résultant de la compilation.
  • force : si on, le template est recompilé systématiquement.

section zones

Parfois, il peut arriver que l'on veuille désactiver le cache des zones, pour voir le résultat quand on modifie leur contenus. Pour cela, vous pouvez modifier un paramètre dans la configuration, au niveau de la section "zones"


[zones]
disableCache = on  // off par defaut

section urlengine

définition du moteur d'url utilisé.


[urlengine] 	
engine        = significant

enableParser = on
multiview = off 	

scriptNameServerVariable = 		
pathInfoInQueryParameter = 	

basePath = "" 	
jelixWWWPath = "jelix/" 	

defaultEntrypoint= index 	

simple_urlengine_https = 	

Détails des paramètres :

  • engine : les moteurs existants sont : simple, basic_significant ou significant
  • enableParser : active la lecture de l'URL. Désactivez le paramètre si l'URL est déjà gérée par un autre programme ( comme le mod_rewrite d'apache), si la réécriture de l'URL correspond à une URL simple et que vous utilisez le moteur "significant". Si vous utilisez le moteur d'URL "simple" désactivez ce paramètre.
  • multiView : si le paramètre est activé dans Apache, vous ne devez pas indiquez le suffix ".php", alors activez ce paramètre
  • scriptNameServerVariable : le nom de la variable $_SERVER qui contient le nom du script exemple : si vous appelez http://mysite.com/foo/index.php, c'est la variable qui contient "/foo/index.php". Ce nom peut être SCRIPT_NAME, ORIG_SCRIPT_NAME, PHP_SELF ou REDIRECT_SCRIPT_URL. Il est automatiquement détecté par jelix mais peut parfois échouer, donc vous pourriez le définir ici.
  • pathInQueryParameter : si vous utilisez des règles de réécriture qui déplacent le pathinfo dans le queryparameter comme RewriteRule ^(.*)$ index.php/?jpathinfo=$1 [L,QSA] alors vous devriez indiquer dans pathInfoInQueryParameter le nom du paramètre qui contient la valeur de pathinfo (exemple "jpathinfo"), laissez vide si vous n'utilisez pas de telles règles de réécriture
  • basePath : ce paramètre correspond au répertoire "de base" de votre application, indiquez /aaa/bbb/www si vous accédez à votre application par http://foo.com/aaa/bbb/www/index.php, ou indiquez juste / si l'accès se fait via http://foo.com/index.php
  • jelixWWWPath : contient le chemin web vers les CSS et JS de Jelix (contenu de lib/jelix-www/. Si vous le modifiez voyez également les chemins du htmleditors
  • jqueryPath : contient le chemin web vers les fichiers jQuery de Jelix. vous pouvez le modifier si vous fournissez d'autres fichiers jQuery/jQueryUI, mais le nouveau répertoire doit avoir la même structure et les mêmes noms de fichiers que le celui de jelix/jquery. Toutefois, ce paramètre est obsolète depuis Jelix 1.6.20, car il y a depuis, un autre moyen de spécifier vos propres fichiers jQuery. Voir la section jquery plus bas.
  • defaultEntrypoint : contient le nom du pont d'entrée de l'application
  • simple_urlengine_https : contient la liste des actions requérant le protocole HTTPS

notfound

Gestion des redirections vers une page 404 quand l'url n'est pas trouvée


notfoundAct = 	
  • notfoundAct : contient le nom de l'action qui affichera l'erreur 404. Si le

paramètre est laissé vide alors c'est l'action jelix~error:notfound qui sera utilisée.

Utiliser la syntaxe des sélecteurs (Cf.L'utilité des sélecteurs) et placer le sélecteur de votre action entre guillemet :


notfoundAct = "monModule~monControleur:monAction"	

section logfiles

Cette section définit comment seront écrits les logs à l'aide de jLog.

Les fichiers logs sont stockés dans le dossier /var/log/ de votre application. Vous pouvez définir un fichier de log par module en associant le nom du module à un nom de fichier log et faisant un appel à jLog en passant en dernier argument le nom du module.


; log par défaut
  default = messages.log

; log "news"
  news = news.log

Autre exemple utilisant l'extension Firebug du navigateur Firefox (ce qui permet une vision très rapide des messages de débogage).


[logfiles]
default="!firebug"
file = "messages.log"

Et pour un dump de contenu de taille importante, il suffit d'indiquer le type 'file' au dernier paramètres des méthodes de jLog pour l'obtenir à nouveau dans un fichier de log classique.

Pour plus de détails sur l'utilisation des fichiers log dans Jelix se reporter au manuel concernant jLog.

section mailer

Définit les paramètres d'envoi de mail à travers l'application, comme par exemple pour une authentification ou encore au plus bas niveau pour les notifications.


[mailer]
webmasterEmail = root@localhost
webmasterName =

; How to send mail : "mail" (mail()), "sendmail" (call sendmail), or "smtp" (send directly to a smtp)
mailerType = mail
; Sets the hostname to use in Message-Id and Received headers
; and as default HELO string. If empty, the value returned
; by SERVER_NAME is used or 'localhost.localdomain'.
hostname =
sendmailPath = "/usr/sbin/sendmail"

; if mailer = smtp , fill the following parameters

; SMTP hosts.  All hosts must be separated by a semicolon : "smtp1.example.com:25;smtp2.example.com"
smtpHost = "localhost"
; default SMTP server port
smtpPort = 25
; SMTP HELO of the message (Default is hostname)
smtpHelo =
; SMTP authentication
smtpAuth = off
smtpUsername =
smtpPassword =
; SMTP server timeout in seconds
smtpTimeout = 10

section acl et acl2

Définit les paramètres de la gestion des droits d'accès dans l'application. Voir la documentation sur la gestion des droits. Vous choisirez d'utiliser soit jAcl, soit jAcl2 mais il n'est pas recommandé d'utiliser les deux en même temps.


[acl]
; exemple de driver: "db"
driver = 

[acl2]
; exemple de driver: "db"
driver = 

section sessions

Définit le mode de gestion des sessions PHP (fichier ou bases de données). Pour plus de détails, voir la documentation sur les sessions


[sessions]
shared_session = off
; Use alternative storage engines for sessions
;
; usage :
;
; storage = "files"

; files_path = "app:var/sessions/"
;
; or
;
; storage = "dao"
; dao_selector = "jelix~jsession"
; dao_db_profile = ""

section forms

Contient des paramètres de configuration pour les widgets html de jForms.

Tout d'abord pour le widget du datepicker

                                                                                                    
[forms]
; define input type for datetime widgets : "textboxes" or "menulists"
controls.datetime.input = "menulists"

; define the way month labels are displayed widgets: "numbers", "names" or "shortnames"
controls.datetime.months.labels = "names"

; define the default config for datepickers in jforms
datepicker = default
datetimepicker = default

Ensuite pour le captcha, où on définit différent type de captcha (ici simple et recaptcha), avec pour chacun le nom de la classe qui valide le captcha, le nom du widget qui affiche le captcha. Et on indique le type de captcha utilisé par défaut.


; default captcha type
captcha = simple

captcha.simple.validator=\jelix\forms\Captcha\SimpleCaptchaValidator
captcha.simple.widgettype=captcha

captcha.recaptcha.validator=\jelix\forms\Captcha\ReCaptchaValidator
captcha.recaptcha.widgettype=recaptcha

section jquery

Disponible depuis Jelix 1.6.20. Il est possible d'indiquer le chemin web du fichier jquery et ceux des fichiers de jQueryUI, permettant ainsi d'utiliser des versions plus récentes de ces bibliothèques, si besoin.


[jquery]
jquery = $jqueryPath/jquery.js
jqueryui.js[] = $jqueryPath/ui/jquery-ui-core-widg-mous-posi.custom.min.js
jqueryui.css[] = $jqueryPath/themes/base/jquery.ui.all.css

Pour jQueryUI, il s'agit d'indiquer un ou plusieurs fichiers si besoin, que ce soit pour JS ou pour CSS.

Notez l'usage de la notation ressemblant à un nom de variable $jqueryPath. Cela sera remplacé par la valeur de jqueryPath de la section urlengine. Vous pouvez aussi utiliser $jelix, qui sera remplacé par la valeur de jelixWWWPath de la section urlengine. Vous pouvez tout aussi mettre directement un chemin relatif au basePath, ou un chemin absolu.

section datepickers et datetimepickers

Pour chaque type de datepicker, on indique le fichier d'initialisation de jforms, (le nom du paramètre est celui du type, <type>=...). et la liste des fichiers JS et CSS pour faire fonctionner le datepicker, dans des paramètres ayant comme nom <type>.js[]=... et <type>.css[]=.... Ces deux paramètres sont supportés depuis Jelix 1.6.20.


[datepickers]
default = jelix/js/jforms/datepickers/default/init.js
default.js[]=$jqueryPath/ui/jquery-ui-core-widg-mous-posi.custom.min.js
default.js[]=$jqueryPath/ui/jquery.ui.datepicker.min.js
default.js[]=$jelix/js/jforms/datepickers/default/ui.$lang.js
default.js[]=$jqueryPath/ui/i18n/jquery.ui.datepicker-$lang.js
default.css[]=$jqueryPath/themes/base/jquery.ui.all.css

section htmleditors

définition du chemin de l'editeur html


[htmleditors]
default.engine.name = wymeditor
default.engine.file[] = $jelix/jquery/jquery.js
default.engine.file[] = $jelix/wymeditor/jquery.wymeditor.js
default.config = $jelix/wymeditor/config/default.js
default.skin.default  = $jelix/wymeditor/skins/default/screen.css

section wikieditors

définition de la barre d'outils de l'éditeur wiki


[wikieditors]
default.engine.name = wr3
default.wiki.rules = wr3_to_xhtml
; path to the engine file
default.engine.file = jelix/markitup/jquery.markitup.js
; define the path to the "internationalized" file to translate the label of each button
default.config.path = jelix/markitup/sets/wr3/
; define the path to the image of buttons of the toolbar
default.image.path = jelix/markitup/sets/wr3/images/
default.skin = jelix/markitup/skins/simple/style.css