-
Notifications
You must be signed in to change notification settings - Fork 16
/
japp.gtw
176 lines (122 loc) · 5.17 KB
/
japp.gtw
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
~~LANG:EN@enman:class-utilities/jApp~~
jApp est une classe comportant des informations sur l'environnement Jelix.
Elle permet ainsi de spécifier (dans le application.init.php) et de
récupérer les différents chemins de l'application.
Elle propose également des méthodes permettant de récupérer les objets les plus
courant de l'environnment Jelix, et aussi de manipuler l'environnement (mais à
usage plutôt interne à Jelix)
===== Accéder aux objets principaux =====
<code>
// La configuration :
$config = jApp::config();
// le routeur (coordinateur)
$coord = jApp::coord();
</code>
Il y a aussi @@jApp::version()@@ qui permet de connaître la version de
l'application, si un fichier @@F@VERSION@@ est présent dans le répertoire de
l'application.
Si vous voulez connaître la version de Jelix, vous utiliserez
@@jFramework::version()@@.
===== Récupérer des chemins URL de l'application =====
Pour former des URLs, vous aurez souvent besoin de la valeur "basePath"
situé dans la configuration, et généré automatiquement quand elle n'est pas
configuré à la main. Cette méthode permet de récupérer ce chemin facilement :
<code>
$path = jApp::urlBasePath();
</code>
Vous pouvez aussi récupérer le chemin URL vers les assets fournies par Jelix,
celles qui sont initialement dans le répertoire lib/jelix-www :
<code>
$path = jApp::urlJelixWWWPath();
</code>
===== Les chemins des différents répertoires de l'application =====
En général, jApp est configuré dés le démarrage de l'application, dans le
fichier application.init.php. En particulier, les divers chemins des composants
de l'application y sont indiqués, comme vous pourrez le voir plus bas.
Divers méthodes permettent alors de les récupérer.
La méthode @@M@appPath()@@ permet de retourner le chemin absolu de votre application.
<code>
$chemin = jApp::appPath();
</code>
La méthode @@M@tempPath()@@ permet de retourner le chemin absolu du temporaire.
<code>
$chemin = jApp::tempPath();
</code>
D'autres chemins sont aussi disponibles :
<code>
// chemin du répertoire var/ de l'application
$path = jApp::varPath();
// chemin du répertoire var/log de l'application
$path = jApp::logPath();
// chemin du répertoire app/system/ de l'application
$path = jApp::appSystemPath();
// chemin du répertoire var/config/ de l'application
$path = jApp::varConfigPath();
//l'ancienne méthode jApp::configPath() est encore disponible mais est dépréciée.
// chemin du répertoire www/ de l'application
$path = jApp::wwwPath();
// chemin du répertoire scripts/ de l'application
$path = jApp::scriptsPath();
</code>
Vous pouvez donner un nom de fichier (ou sous-chemin) en paramètre à ces
méthodes, il sera ajouté au chemin demandé.
Vous pouvez également récupérer le chemin du fichier de configuration principal :
<code>
// chemin de mainconfig.ini.php
$path = jApp::mainConfigFile();
</code>
Vous pouvez aussi récupérer le chemin d'un module particulier :
<code>
$path = jApp::getModulePath('nom_module');
</code>
==== Configurer jApp =====
Dans le fichier application.init.php, vous déclarer les différents chemin des
composants de l'application, que ce soit les chemins des répertoires de configuration,
ou les chemins des répertoires de modules.
Avec @@initPaths()@@ et @@setTempBasePath()@@ vous définissez les chemins principaux :
<code>
jApp::initPaths(
__DIR__.'/'
//__DIR__.'/www/',
//__DIR__.'/var/',
//__DIR__.'/var/log/',
//__DIR__.'/var/config/',
//__DIR__.'/scripts/'
);
jApp::setTempBasePath(realpath(__DIR__.'/temp').'/');
</code>
Cette classe contient également les méthodes pour indiquer les répertoires
de modules, de plugins etc :
Exemple :
<code>
// déclarer une liste de répertoires contenant des modules
jApp::declareModulesDir(array(
__DIR__.'/../lib/jelix-modules/',
__DIR__.'/../lib/jelix-admin-modules/',
__DIR__.'/modules/'
));
// déclarer une liste de répertoires contenant des plugins
jApp::declarePluginsDir(array(
__DIR__.'/../lib/jelix-plugins/',
__DIR__.'/plugins'
));
// déclarer un répertoire correspondant à un module
jApp::declareModule(__DIR__.'/mon-module/');
</code>
Notez que si vous installez Jelix et des modules via Composer, ces méthodes
sont appelées automatiquement avec les bons chemins. Ainsi, dans l'exemple
ci-dessus, il déclare les répertoires jelix-modules et jelix-admin-modules
qui sont fournis avec Jelix, mais cela n'est valable que si on a installé
Jelix à la main, à partir d'un archive.
Cependant ces méthodes restent utiles quand vous avez des répertoires de modules
propres à votre application.
Dans le point d'entrée, vous définissez également le fichier de configuration
et le coordinateur à utiliser :
<code>
jApp::loadConfig('index/config.ini.php');
jApp::setCoord(new jCoordinator());
</code>
Dans le cas très particulier où @@application.init.php@@ n'est pas dans le répertoire
principal de l'application (donc n'est pas dans celui contenant @@project.xml@@),
vous devez appeler @@jApp::setApplicationInitFile(__FILE__)@@ dans le fichier
@@application.init.php@@.