Subversion Repositories Applications.papyrus

Rev

Rev 437 | Go to most recent revision | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 437 Rev 439
1
<?php
1
<?php
2
/*vim: set expandtab tabstop=4 shiftwidth=4: */ 
2
/*vim: set expandtab tabstop=4 shiftwidth=4: */ 
3
// +------------------------------------------------------------------------------------------------------+
3
// +------------------------------------------------------------------------------------------------------+
4
// | PHP version 4.1                                                                                      |
4
// | PHP version 4.1                                                                                      |
5
// +------------------------------------------------------------------------------------------------------+
5
// +------------------------------------------------------------------------------------------------------+
6
// | Copyright (C) 2005 Tela Botanica (accueil@tela-botanica.org)                                         |
6
// | Copyright (C) 2005 Tela Botanica (accueil@tela-botanica.org)                                         |
7
// +------------------------------------------------------------------------------------------------------+
7
// +------------------------------------------------------------------------------------------------------+
8
// | This file is part of Integrateur Wikini.                                                             |
8
// | This file is part of Integrateur Wikini.                                                             |
9
// |                                                                                                      |
9
// |                                                                                                      |
10
// | Foobar is free software; you can redistribute it and/or modify                                       |
10
// | Foobar is free software; you can redistribute it and/or modify                                       |
11
// | it under the terms of the GNU General Public License as published by                                 |
11
// | it under the terms of the GNU General Public License as published by                                 |
12
// | the Free Software Foundation; either version 2 of the License, or                                    |
12
// | the Free Software Foundation; either version 2 of the License, or                                    |
13
// | (at your option) any later version.                                                                  |
13
// | (at your option) any later version.                                                                  |
14
// |                                                                                                      |
14
// |                                                                                                      |
15
// | Foobar is distributed in the hope that it will be useful,                                            |
15
// | Foobar is distributed in the hope that it will be useful,                                            |
16
// | but WITHOUT ANY WARRANTY; without even the implied warranty of                                       |
16
// | but WITHOUT ANY WARRANTY; without even the implied warranty of                                       |
17
// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the                                        |
17
// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the                                        |
18
// | GNU General Public License for more details.                                                         |
18
// | GNU General Public License for more details.                                                         |
19
// |                                                                                                      |
19
// |                                                                                                      |
20
// | You should have received a copy of the GNU General Public License                                    |
20
// | You should have received a copy of the GNU General Public License                                    |
21
// | along with Foobar; if not, write to the Free Software                                                |
21
// | along with Foobar; if not, write to the Free Software                                                |
22
// | Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA                            |
22
// | Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA                            |
23
// +------------------------------------------------------------------------------------------------------+
23
// +------------------------------------------------------------------------------------------------------+
24
// CVS : $Id: integrateur_wikini.php,v 1.4 2005-09-02 11:29:25 ddelon Exp $
24
// CVS : $Id: integrateur_wikini.php,v 1.5 2005-09-09 09:37:17 ddelon Exp $
25
/**
25
/**
26
* Integrateur de page Wikini
26
* Integrateur de page Wikini
27
*
27
*
28
* Application permettant d'intégrer des pages wikini dans Papyrus.
28
* Application permettant d'intégrer des pages wikini dans Papyrus.
29
*
29
*
30
*@package IntegrateurWikini
30
*@package IntegrateurWikini
31
//Auteur original :
31
//Auteur original :
32
*@author        Jean-Pascal MILCENT <jpm@tela-botanica.org>
32
*@author        Jean-Pascal MILCENT <jpm@tela-botanica.org>
33
//Autres auteurs :
33
//Autres auteurs :
34
*@author        Aucun
34
*@author        Aucun
35
*@copyright     Tela-Botanica 2000-2004
35
*@copyright     Tela-Botanica 2000-2004
36
*@version       $Revision: 1.4 $ $Date: 2005-09-02 11:29:25 $
36
*@version       $Revision: 1.5 $ $Date: 2005-09-09 09:37:17 $
37
*
37
*
38
// +------------------------------------------------------------------------------------------------------+
38
// +------------------------------------------------------------------------------------------------------+
39
// |                                            ENTETE du PROGRAMME                                       |
39
// |                                            ENTETE du PROGRAMME                                       |
40
// +------------------------------------------------------------------------------------------------------+
40
// +------------------------------------------------------------------------------------------------------+
41
 
41
 
42
 
42
 
43
/** Inclusion de la classe PEAR de gestion des URL. */
43
/** Inclusion de la classe PEAR de gestion des URL. */
44
require_once 'Net/URL.php';
44
require_once 'Net/URL.php';
45
 
45
 
46
// TODO : un seul fichier de configuration ?
46
// TODO : un seul fichier de configuration ?
47
/** Inclusion du fichier de configuration de cette application.*/
47
/** Inclusion du fichier de configuration de cette application.*/
48
require_once 'client/integrateur_wikini/configuration/adwi_configuration.inc.php';
48
require_once 'client/integrateur_wikini/configuration/adwi_configuration.inc.php';
49
 
49
 
50
require_once ADWI_CHEMIN_BIBLIOTHEQUE.'adwi_wikini.fonct.php';
50
require_once ADWI_CHEMIN_BIBLIOTHEQUE.'adwi_wikini.fonct.php';
51
 
51
 
52
/** Inclusion du fichier de configuration général de IntegrateurWikini.*/
52
/** Inclusion du fichier de configuration général de IntegrateurWikini.*/
53
require_once 'client'.GEN_SEP.'integrateur_wikini'.GEN_SEP.'configuration'.GEN_SEP.'iw_config.inc.php';
53
require_once 'client'.GEN_SEP.'integrateur_wikini'.GEN_SEP.'configuration'.GEN_SEP.'iw_config.inc.php';
54
 
54
 
55
/** Inclusion du fichier permettant d'encoder du texte mais pas les balises XHTML.*/
55
/** Inclusion du fichier permettant d'encoder du texte mais pas les balises XHTML.*/
56
require_once IW_CHEMIN_BIBLIO.'iw_encodage.fonct.php';
56
require_once IW_CHEMIN_BIBLIO.'iw_encodage.fonct.php';
57
/** Inclusion du fichier permettant d'inclure les données dans du XHTML.*/
57
/** Inclusion du fichier permettant d'inclure les données dans du XHTML.*/
58
require_once IW_CHEMIN_BIBLIO.'iw_affichage_xhtml.fonct.php';
58
require_once IW_CHEMIN_BIBLIO.'iw_affichage_xhtml.fonct.php';
59
 
59
 
60
global $wikini_config_defaut;
60
global $wikini_config_defaut;
61
global $wiki;
61
global $wiki;
62
global $wiki_p;
62
global $wiki_p;
63
 
63
 
64
 
64
 
65
// $_REQUEST['wiki'] est obligatoire, car wakka.php envoie un redirect si non detecté, avec perte de tout l'environnement !
65
// $_REQUEST['wiki'] est obligatoire, car wakka.php envoie un redirect si non detecté, avec perte de tout l'environnement !
66
 
66
 
67
if ( ! isset( $_REQUEST['wiki'] ) ) {
67
if ( ! isset( $_REQUEST['wiki'] ) ) {
68
	    $_REQUEST['wiki'] = $wikini_config_defaut['root_page'];
68
	    $_REQUEST['wiki'] = $wikini_config_defaut['root_page'];
69
}
69
}
70
 
70
 
71
$server=$_SERVER['PHP_SELF'];
71
$server=$_SERVER['PHP_SELF'];
72
$_SERVER['PHP_SELF']="wakka.php";
72
$_SERVER['PHP_SELF']="wakka.php";
73
 
73
 
74
// Utilise le wakkaconfig de la racine ...
74
// Utilise le wakkaconfig de la racine ...
75
// TODO : Prevoir de revoir la contrib menu ... qui doit être switchable, ou plutot,
75
// TODO : Prevoir de revoir la contrib menu ... qui doit être switchable, ou plutot,
76
// TODO : Customiser son menu avec papyrus ...
76
// TODO : Customiser son menu avec papyrus ...
77
// TODO : un wiki par défaut pour chaque papyrus à l'installation de Papyrus
77
// TODO : un wiki par défaut pour chaque papyrus à l'installation de Papyrus
78
// TODO : message erreur session 
78
// TODO : message erreur session 
79
// TODO : message erreur interwiki
79
// TODO : message erreur interwiki
80
// TODO : verifier bon dimensionnement des champs et clef de la table papyrus_wiki
80
// TODO : verifier bon dimensionnement des champs et clef de la table papyrus_wiki
81
// TODO : creation des tables par defaut à l'installation d'un wikini
81
// TODO : creation des tables par defaut à l'installation d'un wikini
82
// TODO : Fusion des fichiers de configuration ?
82
// TODO : Fusion des fichiers de configuration ?
83
// TODO : creation automatique des Wikis ...
83
// TODO : creation automatique des Wikis ...
84
 
84
 
85
ob_start();
85
ob_start();
86
include_once IW_CHEMIN_WIKINI_COURANT.'wakka.php';
86
include_once IW_CHEMIN_WIKINI_COURANT.'wakka.php';
87
ob_end_clean();
87
ob_end_clean();
88
$_SERVER['PHP_SELF']=$server;
88
$_SERVER['PHP_SELF']=$server;
89
 
89
 
90
 
90
 
91
// On surcharge la classe Wiki pour en faire ce qu'on en veut
91
// On surcharge la classe Wiki pour en faire ce qu'on en veut
92
Class Wiki_Papyrus extends Wiki {
92
Class Wiki_Papyrus extends Wiki {
93
    function Format($text, $formatter = "wakka") {
93
    function Format($text, $formatter = "wakka") {
94
		return $this->IncludeBuffered(IW_CHEMIN_WIKINI_COURANT_FORMATTER.$formatter.".php", "<i>Impossible de trouver le formateur \"$formatter\"</i>", compact("text")); 
94
		return $this->IncludeBuffered(IW_CHEMIN_WIKINI_COURANT_FORMATTER.$formatter.".php", "<i>Impossible de trouver le formateur \"$formatter\"</i>", compact("text")); 
95
	}
95
	}
-
 
96
	
-
 
97
	//TODO : a gauche !
-
 
98
	
96
	function Header() {
99
	function Header() {
97
		
-
 
98
		$sortie='';
-
 
99
		$sortie.='<h1 class="wiki_name">';
-
 
100
		// Todo : Initialiser : wakka_nom
-
 
101
		$sortie.= $this->config["wakka_name"];
-
 
102
		$sortie.='</h1>';
-
 
103
		$sortie.='<h1 class="page_name">';
-
 
104
		$sortie.='<a href="';
-
 
105
		$sortie.=$this->config["base_url"];
-
 
106
		$sortie.='RechercheTexte&amp;phrase=';
-
 
107
		$sortie.=htmlentities($this->GetPageTag());
-
 
108
		$sortie.='">';
-
 
109
		$sortie.=htmlentities($this->GetPageTag()); 
-
 
110
		$sortie.='</a>';
-
 
111
		$sortie.='</h1>';
-
 
112
 
-
 
113
		$sortie.='<div class="header">';
-
 
114
		$sortie.= $this->ComposeLinkToPage($this->config["root_page"]).'::';
-
 
115
		$sortie.= $this->config["navigation_links"] ? $this->Format($this->config["navigation_links"])." :: \n" : "";
-
 
116
		$sortie.='Vous &ecirc;tes ';
-
 
117
		$sortie.= $this->Format($this->GetUserName());
-
 
118
		if ($user = $this->GetUser()) { 
-
 
119
			$sortie.="(<a href=\"".$this->config["base_url"]."ParametresUtilisateur&amp;action=logout\">D&eacute;connexion</a>)\n";
-
 
120
		}
-
 
121
		$sortie.='</div>';
-
 
122
		return $sortie;
100
		return;
123
	}
101
	}
124
	
102
	
125
	function Footer() {
103
	function Footer() {
126
		return;
104
		return;
127
	}	
105
	}	
-
 
106
	
-
 
107
	// Le diff ne fonctionne pas avec la methode get dans papyrus. On surcharge avec du post. 
-
 
108
	
-
 
109
	function FormOpen($method = "", $tag = "", $formMethod = "post") {
-
 
110
		
-
 
111
		if (($method=="diff") && $formMethod=="get") {
-
 
112
			$formMethod="post";	
-
 
113
		}
-
 
114
		
-
 
115
		// Appel methode parent
-
 
116
		return parent::FormOpen($method, $tag, $formMethod);
-
 
117
	}
128
}
118
}
129
 
119
 
130
 
120
 
131
// Appel du fichier de traduction des textes de l'application Integrateur Wikini
121
// Appel du fichier de traduction des textes de l'application Integrateur Wikini
132
if (file_exists(IW_CHEMIN_LANGUES.'iw_langue_'.IW_I18N.'.inc.php')) {
122
if (file_exists(IW_CHEMIN_LANGUES.'iw_langue_'.IW_I18N.'.inc.php')) {
133
    /** Inclusion du fichier de traduction de l'application Integrateur Wikini. */
123
    /** Inclusion du fichier de traduction de l'application Integrateur Wikini. */
134
    include_once IW_CHEMIN_LANGUES.'iw_langue_'.IW_I18N.'.inc.php';
124
    include_once IW_CHEMIN_LANGUES.'iw_langue_'.IW_I18N.'.inc.php';
135
} else {
125
} else {
136
    /** Inclusion du fichier de traduction fr par défaut. */
126
    /** Inclusion du fichier de traduction fr par défaut. */
137
    include_once IW_CHEMIN_LANGUES.'iw_langue_fr.inc.php';
127
    include_once IW_CHEMIN_LANGUES.'iw_langue_fr.inc.php';
138
}
128
}
139
 
129
 
-
 
130
 
-
 
131
/**
-
 
132
 * Renvoie le menu général de l'integrateur Wikini : derniers  changement etc.
-
 
133
 *
-
 
134
 * @return string
-
 
135
 * @access public
-
 
136
 */
-
 
137
   
-
 
138
function afficherContenuMenu()
-
 
139
{
-
 
140
	
-
 
141
  // TODO
-
 
142
  // Changement du niveau d'erreur pour éviter les Notices PHP dues à Wikini
-
 
143
  //  error_reporting(E_PARSE);
-
 
144
  
-
 
145
  // Autre possibilite : la page speciale MENU 
-
 
146
	
-
 
147
	
-
 
148
	global $wiki;
-
 
149
	global $wikini_config_defaut;
-
 
150
	$sortie='';
-
 
151
    $wakkaConfig = $GLOBALS['wikini_config_defaut'];
-
 
152
    $wiki  = new Wiki_Papyrus($wakkaConfig);
-
 
153
 
-
 
154
    // Suppression des slash.
-
 
155
    $_REQUEST['wiki'] = preg_replace("/^\//", '',  $_REQUEST['wiki']);
-
 
156
 
-
 
157
    // split into page/method
-
 
158
    if ( preg_match( "#^(.+?)/(.*)$#",  $_REQUEST['wiki'], $matches ) ) {
-
 
159
        list(, $page, $method) = $matches;
-
 
160
    } else if ( preg_match( "#^(.*)$#",  $_REQUEST['wiki'], $matches ) ) {
-
 
161
        list(, $page) = $matches;
-
 
162
    }
-
 
163
 
-
 
164
    $server=$_SERVER['PHP_SELF'];
-
 
165
	$_SERVER['PHP_SELF']="wakka.php";
-
 
166
    
-
 
167
    // Affichage par defaut : 
-
 
168
    
-
 
169
	$sortie=$wiki->Format("\n----PagePrincipale\nDerniersChangements\nDerniersCommentaires----");
-
 
170
    $sortie.="<a href=\"".$wiki->href("edit",$page)."\" title=\"Cliquez pour &eacute;diter cette page.\">&Eacute;diter cette page</a>";
-
 
171
    
-
 
172
    // Sinon Affichage Page Menu (configurable TODO ?) 
-
 
173
    
-
 
174
    $contenu=$wiki->LoadPage("PageMenu");
-
 
175
    
-
 
176
    $sortie.=$wiki->Format("----");
-
 
177
	$sortie.=$wiki->Format($contenu['body']);   
-
 
178
 
-
 
179
	$_SERVER['PHP_SELF']=$server;
-
 
180
	
-
 
181
	// TODO
-
 
182
	// Retour au niveau d'erreur définit dans le fichier de config de Papyrus
-
 
183
    // error_reporting(GEN_DEBOGAGE_NIVEAU);
-
 
184
    
-
 
185
	return $sortie;
-
 
186
	
-
 
187
} 
-
 
188
			
140
 
189
	
141
// +------------------------------------------------------------------------------------------------------+
190
// +------------------------------------------------------------------------------------------------------+
142
// |                                            CORPS du PROGRAMME                                        |
191
// |                                            CORPS du PROGRAMME                                        |
143
// +------------------------------------------------------------------------------------------------------+
192
// +------------------------------------------------------------------------------------------------------+
144
/** Fonction afficherContenuCorps() - Fonction appelé par le gestionnaire Papyrus.
193
/** Fonction afficherContenuCorps() - Fonction appelé par le gestionnaire Papyrus.
145
*
194
*
146
* Elle retourne le contenu de l'application.
195
* Elle retourne le contenu de l'application.
147
*
196
*
148
* @return  string  du code XHTML correspondant au contenu renvoyé par l'application.
197
* @return  string  du code XHTML correspondant au contenu renvoyé par l'application.
149
*/
198
*/
150
function afficherContenuCorps()
199
function afficherContenuCorps()
151
{
200
{
-
 
201
 
-
 
202
print "la";
-
 
203
  // TODO
-
 
204
  // Changement du niveau d'erreur pour éviter les Notices PHP dues à Wikini
-
 
205
  //  error_reporting(E_PARSE);
152
	
206
	
153
	global $wiki;
207
	global $wiki;
154
	global $wikini_config_defaut;
208
	global $wikini_config_defaut;
155
	$sortie='';
209
	$sortie='';
156
    $wakkaConfig = $GLOBALS['wikini_config_defaut'];
210
    $wakkaConfig = $GLOBALS['wikini_config_defaut'];
157
    $wiki  = new Wiki_Papyrus($wakkaConfig);
211
    $wiki  = new Wiki_Papyrus($wakkaConfig);
-
 
212
 
158
 
213
 
159
	// Gestion de la variable de session "linktracking"
214
	// Gestion de la variable de session "linktracking"
160
    if ( ! isset( $_SESSION['linktracking'] ) ) {
215
    if ( ! isset( $_SESSION['linktracking'] ) ) {
161
        $_SESSION['linktracking'] = 1;
216
        $_SESSION['linktracking'] = 1;
162
    }
217
    }
163
 
218
 
164
    // Suppression des slash.
219
    // Suppression des slash.
165
    $_REQUEST['wiki'] = preg_replace("/^\//", '',  $_REQUEST['wiki']);
220
    $_REQUEST['wiki'] = preg_replace("/^\//", '',  $_REQUEST['wiki']);
166
 
221
 
167
    // split into page/method
222
    // split into page/method
168
    if ( preg_match( "#^(.+?)/(.*)$#",  $_REQUEST['wiki'], $matches ) ) {
223
    if ( preg_match( "#^(.+?)/(.*)$#",  $_REQUEST['wiki'], $matches ) ) {
169
        list(, $page, $method) = $matches;
224
        list(, $page, $method) = $matches;
170
    } else if ( preg_match( "#^(.*)$#",  $_REQUEST['wiki'], $matches ) ) {
225
    } else if ( preg_match( "#^(.*)$#",  $_REQUEST['wiki'], $matches ) ) {
171
        list(, $page) = $matches;
226
        list(, $page) = $matches;
172
    }
227
    }
173
    
228
    
174
    // Vérification de la méthode d'affichage employée!
229
    // Vérification de la méthode d'affichage employée!
175
    if ( ! isset( $method ) ) {
230
    if ( ! isset( $method ) ) {
176
        $method = '';
231
        $method = '';
177
    }
232
    }
178
		
233
		
179
    //Récupération du contenu de la page Wikini
234
    //Récupération du contenu de la page Wikini
180
    
235
    
181
    ob_start();
236
    ob_start();
182
    
237
    
183
    $server=$_SERVER['PHP_SELF'];
238
    $server=$_SERVER['PHP_SELF'];
184
	$_SERVER['PHP_SELF']="wakka.php";
239
	$_SERVER['PHP_SELF']="wakka.php";
185
    
240
    
186
	$wiki->Run($page, $method);
241
	$wiki->Run($page, $method);
187
    
242
    
188
    $_SERVER['PHP_SELF']=$server;
243
    $_SERVER['PHP_SELF']=$server;
189
    
244
    
190
    $sortie.= ob_get_contents();
245
    $sortie.= ob_get_contents();
191
    ob_end_clean();
246
    ob_end_clean();
-
 
247
 
-
 
248
	// TODO
-
 
249
	// Retour au niveau d'erreur définit dans le fichier de config de Papyrus
192
 
250
    // error_reporting(GEN_DEBOGAGE_NIVEAU);
193
 
251
    
194
	return remplacerEntiteHTLM("<div id=\"wikini_page\" ondblclick=\"document.location='".$wiki->href("edit")."';"."\">"."\n".$sortie.'</div>'."\n"); 
252
	return remplacerEntiteHTLM("<div id=\"wikini_page\" ondblclick=\"document.location='".$wiki->href("edit")."';"."\">"."\n".$sortie.'</div>'."\n"); 
195
			
253
			
196
		
254
		
197
}
255
}
198
 
256
 
199
 
257
 
200
// TODO : qu'affiche-t-on en pied ?
258
// TODO : qu'affiche-t-on en pied ?
201
/** Fonction afficherContenuPied() - Fonction appelé par le gestionnaire Papyrus.
259
/** Fonction afficherContenuPied() - Fonction appelé par le gestionnaire Papyrus.
202
*
260
*
203
* Elle retourne le pied de l'application.
261
* Elle retourne le pied de l'application.
204
*
262
*
205
* @return  string  du code XHTML correspondant au pied renvoyé par l'application.
263
* @return  string  du code XHTML correspondant au pied renvoyé par l'application.
206
*/
264
*/
207
function afficherContenuPied()
265
function afficherContenuPied()
208
{
266
{
209
    return inclusion_html('pied_page');
267
    return inclusion_html('pied_page');
210
}
268
}
211
?>
269
?>