Intégrer Dokuwiki à Pluxml

IronIron Member
Bonjour,

J'essaye désespérément d'intégrer à Pluxml un wiki et notamment Dokuwiki.
Je n'arrive pas à "l'interfacer" comme sur pluxml.org avec Lionwiki.

Auriez vous une piste, une idée d'intégration ? Car là je sèche.

Merci à vous

Réponses

  • J'ai adapté lionwiki à un pluxml. Le dossier qui contient le wiki doit être au même niveau que le dossier data, plugins, thèmes et le reste de pluxml.
    Dans ce dossier, tu places un fichier config.php qui ressemblera à ça (attention de bien lire chaque ligne afin de l'adapter à ton propre projet en remplaçant nom-de-ton-wiki-sur-ton-site et autres phrases/mots du même type) :
    <?php 
    
    	/**
    	 * Méthode qui retourne l'url de base du site
    	 *
    	 * @return	string		url de base du site
    	 **/
    	function getRacine() {
    
    		$protocol = (!empty($_SERVER['HTTPS']) AND $_SERVER['HTTPS'] == 'on')?	'https://' : "http://";
    		$servername = $_SERVER['HTTP_HOST'];
    		$serverport = (preg_match('/:[0-9]+/', $servername) OR $_SERVER['SERVER_PORT'])=='80' ? '' : ':'.$_SERVER['SERVER_PORT'];
    		$dirname = preg_replace('/\/(core|plugins)\/(.*)/', '', dirname($_SERVER['SCRIPT_NAME']));
    
    		$dirname = str_replace('url-de-ton-wiki-sur-ton-site', '', $dirname);
    
    		$racine = rtrim($protocol.$servername.$serverport.$dirname, '/').'/';
    		if(!checkSite($racine, false))
    			exit('Error: wrong or invalid url');
    		return $racine;
    	}	
    
    	/**
    	 * Méthode qui vérifie si l'url passée en paramètre correspond à un format valide
    	 *
    	 * @param	site		url d'un site
    	 * @return	boolean		vrai si l'url est bien formatée
    	 **/
    	function checkSite(&$site, $reset=true) {
    
    		$site = preg_replace('#([\'"].*)#', '', $site);
    		# On vérifie le site via une expression régulière
    		# Méthode Jeffrey Friedl - http://mathiasbynens.be/demo/url-regex
    		# modifiée par Amaury Graillat pour prendre en compte la valeur localhost dans l'url
    		if(preg_match('@\b((ftp|https?)://([-\w]+(\.\w[-\w]*)+|localhost)|(?:[a-z0-9](?:[-a-z0-9]*[a-z0-9])?\.)+(?: com\b|edu\b|biz\b|gov\b|in(?:t|fo)\b|mil\b|net\b|org\b|[a-z][a-z]\b))(\:\d+)?(/[^.!,?;"\'<>()\[\]{}\s\x7F-\xFF]*(?:[.!,?]+[^.!,?;"\'<>()\[\]{}\s\x7F-\xFF]+)*)?@iS', $site))
    				return true;
    		else {
    			if($reset) $site='';
    			return false;
    		}
    	}
    
    	/**
    	 * Méthode qui encode une chaine de caractère en hexadecimal
    	 *
    	 * @parm	s		chaine de caractères à encoder
    	 * @return	string	chane de caractères encodée en hexadecimal
    	 * @author	Stephane F
    	 **/
    	function encodeBin2Hex($s) {
    
    		$encode = '';
    		for ($i = 0; $i < strlen($s); $i++) {
    			$encode .= '%' . bin2hex($s[$i]);
    		}
    		return $encode;
    	}
    
    /* Configuration file for LionWiki. */
    $WIKI_TITLE = 'Nom de ton site'; // name of the site
    
    // SHA1 hash of password. If empty (or commented out), no password is required
    $Admin["PASSWORD"]  = sha1("le-mot-de-passe-que-tu-veux-pour-ton-wiki-sur-ton-site-oui-je-sais-c-est-en-clair-mais-c-est-pas-ma-faute"); // :-)
    $NOACCESSTOADMIN = true;
    $Captcha['permanent'] = false;
    
    $TEMPLATE = 'templates/nom-du-template-que-tu-souhaites-utiliser-pour-le-wiki-sur-ton-site.html'; // presentation template. 
    //C'est un fichier html que tu devras créer dans le dossier templates de lionwiki
    
    // if true, you need to fill password for reading pages too
    // before setting to true, read http://lionwiki.0o.cz/index.php?page=UserGuide%3A+How+to+use+PROTECTED_READ
    $PROTECTED_READ = false;
    
    $NO_HTML = true; // XSS protection
    
    $START_PAGE = 'Introduction'; // Which page should be default (start page)? 
    //Cette page devra être créée dans le dossier var/pages et porter le nom "Introduction.txt" si tu choisis de l'appeler 'Introduction' sur la ligne précédente
    
    $NEWPAGE = 'Nouvelle page'; //Nom que prendra par défaut une nouvelle page. Tu peux le changer
    
    $REPLACE_NAME_PAGE = 'Page du '.date('d m Y (H:i)'); // Which page should be default (start page)? Si on ne nomme pas une page, elle prendra ce nom là
    $SYNTAX_PAGE = $ACTION_PAGE.'Aide+(syntaxe+générale)';
    
    $LANG = 'fr';
    $DATE_FORMAT = 'd/m/Y';
    $LOCAL_HOUR = 0;
    
    # Définition des constantes d'adressage
    define('DS', DIRECTORY_SEPARATOR);
    define('LW_WEBROOT', dirname(__FILE__).DS);
    define('LW_ROOT', dirname(LW_WEBROOT).DS);
    define('PLX_URL',getRacine());
    
    define('LW_BASE_URL', getRacine().'url-de-ton-wiki-sur-ton-site/');//
    
    define('PLX_DIR_DATA', LW_ROOT.'data'.DS);
    define('PLX_URL_THEMES', PLX_URL.'themes/'.file_get_contents('style').'/');
    
    if ($self == '') $self = LW_BASE_URL;
    
    $IncludeFiles["PATH"]["WEBROOT"] = LW_WEBROOT;
    $IncludeFiles["PATH"]["ROOT"] = LW_ROOT;
    $IncludeFiles["PATH"]["BASE_URL"] = LW_BASE_URL;
    $IncludeFiles["PATH"]["PLX_URL"] = PLX_URL;
    $IncludeFiles["PATH"]["PLX_URL_THEMES"] = PLX_URL_THEMES;
    
    $IncludeFiles["LINK"]["ROOT"] = '<a href="'.LW_BASE_URL.'">'.$START_PAGE.'</a>';
    $IncludeFiles["LINK"]["NEW_PAGE"] = '<a href="'.LW_BASE_URL.$ACTION_PAGE.u($NEWPAGE).'">'.$NEWPAGE.'</a>';
    $IncludeFiles["LINK"]["SYNTAX"] = '<a href="'.LW_BASE_URL.$SYNTAX_PAGE.'">Syntaxe générale</a>';
    $IncludeFiles["LINK"]["TABLE_SYNTAX"] = '<a href="'.LW_BASE_URL.$ACTION_PAGE.'Aide+(syntaxe+tableaux)">Syntaxe tableaux</a>';
    
    $IncludeFiles["URL"]["SIDETAGS"] = PLX_URL.'?static4/sidetags';//Page statique de pluxml que tu utiliseras (ou pas) pour les tags sur le wiki.
    //Cela te permet d'éditer la page depuis pluxml
    $IncludeFiles["URL"]["MAIN_MENU"] = PLX_URL.'?static5/menu';//Idem pour le menu
    
    

    Exemple de template pour le wiki (l'inconvénient est que tu dois écrire à la main les lignes ajoutées par les différents plugins de pluxml si tu veux qu'ils fonctionnent sur le wiki) :
    <!DOCTYPE html>
    <html lang="fr">
        <head>
    		<meta charset="utf-8" />
            <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> 
            <title>{WIKI_TITLE} - {PAGE_TITLE_HEAD}</title>
            <meta name="viewport" content="width=device-width, initial-scale=1.0"> 
           	<meta name="description" content="" />
    
    		<meta name="google-site-verification" content="" />
    		<meta name="msvalidate.01" content="" />
    
    		<link rel="stylesheet" type="text/css" href="{plugin:PATH_PLX_URL_THEMES}medias/css/style.css" media="screen" />
    		<link rel="stylesheet" type="text/css" href="{plugin:PATH_PLX_URL}plugins/plxMyAllArchive/style.css" media="screen" />
    		<link rel="stylesheet" type="text/css" href="{plugin:PATH_PLX_URL}plugins/plxMyContact/style.css" media="screen" />
    
    		
    		<link rel="alternate" type="application/rss+xml" title="Fil Rss des articles" href="{plugin:PATH_PLX_URL}feed/rss" />
    		<link rel="alternate" type="application/rss+xml" title="Fil Rss des commentaires du blog" href="{plugin:PATH_PLX_URL}feed/rss/commentaires" />
    
    		<!-- FAVICONS -->
    		<link rel="icon" href="{plugin:PATH_PLX_URL_THEMES}img/favicon.png" />
    		<link href="{plugin:PATH_PLX_URL}plugins/favicon/img/favicon.ico" type="image/x-icon" rel="icon" />
    		<link href="{plugin:PATH_PLX_URL}plugins/favicon/img/favicon.ico" type="image/x-icon" rel="shortcut icon" />
    		<link href="{plugin:PATH_PLX_URL}plugins/favicon/img/apple-touch-icon.png" type="image/apple-touch-icon" rel="apple-touch-icon" />
    		<link rel="stylesheet" type="text/css" href="{plugin:PATH_PLX_URL}plugins/plxMySearch/style.css" media="screen" />
    
    		<script type="text/javascript" src="{plugin:PATH_PLX_URL}plugins/ajaxrating/js/behavior.js"></script>
    		<script type="text/javascript" src="{plugin:PATH_PLX_URL}plugins/ajaxrating/js/rating.js"></script>
    		<link rel="stylesheet" type="text/css" href="{plugin:PATH_PLX_URL}plugins/ajaxrating/css/rating.css" />
    		
    		{HEAD}
    	</head>
        <body id="top">
            <div class="container wiki">
    			<header role="banner">
    				<h1>
    					<a class="maintitle" href="{plugin:PATH_PLX_URL}" title="{WIKI_TITLE}">{WIKI_TITLE}</a>
    				</h1>
    				<div role="search">
    					<div class="searchform">
    						{SEARCH_FORM}
    							{SEARCH_INPUT}{SEARCH_SUBMIT}
    						{/SEARCH_FORM}
    					</div>
    				</div>
    				<nav role="navigation">
    					<ul class="menu">
    						{plugin:INCLUDE_FILE_MAIN_MENU}
    						<li class="static active"><a href="{plugin:PATH_BASE_URL}">Le nom du wiki dans ton menu</a></li>
    					</ul>
    				</nav>
    			</header>
    				<section class="column">
    					<div class="content">
    						<div class="directory wiki">
    							<ul id="subnav">
    								<li>{plugin:LINK_ROOT}</li>
    								<li>{plugin:LINK_NEW_PAGE}</li>
    							</ul>
    							<ul id="help">
    								<li>{plugin:LINK_SYNTAX}</li>
    								<li>{plugin:LINK_TABLE_SYNTAX}</li>
    							</ul>
    							<div class="clear">&nbsp;</div>
    						</div>
    							<article class="cat-first">
    								<div>
    									<div class="cloud"><div id="first-cloud">&nbsp;</div><div id="last-cloud">&nbsp;</div>{plugin:TAG_CLOUD}</div>
    									<div id="soumenuduwiki">{plugin:INDEX_LIST}</div>
    					   			</div>
    							</article>
    							<article role="article">
    								<header>
    									<h1>{PAGE_TITLE} {<span class="pageVersionsList">( plugin:VERSIONS_LIST )</span>} <span class="par-edit">{EDIT}</span></h1>
    									{<div class="error"> ERROR </div>}
    								</header>
    								<section>
    									{CONTENT}
    									{plugin:TAG_LIST}
    								{CONTENT_ID_FORM}
    									{CONTENT_FORM}
    									<label for="moveto">{RENAME_TEXT }</label>{RENAME_INPUT }
    									<p id="editor-toolbar">
    										<label>&nbsp;</label>
    										{plugin:TOOLBAR_TEXTAREA}
    									</p>
    									<p>
    										<label>&nbsp;</label>
    										<span id="editor-pages">{SHOW_PAGE}&nbsp;{SYNTAX}</span>
    									</p>
    									<p>
    										<label>{MSG}</label>
    										{CONTENT_TEXTAREA}
    									</p>
    										<p><label>{FORM_PASSWORD}</label>{FORM_PASSWORD_INPUT}</p>
    										<p><label>{ANTISPAM_WARNING}</label>{plugin:CAPTCHA_QUESTION}&nbsp;{plugin:CAPTCHA_INPUT}</p>
    										<p><label>&nbsp;</label>{CONTENT_PREVIEW}</p>
    										<p><label>&nbsp;</label>{CONTENT_SUBMIT}</p>
    									{/CONTENT_FORM}
    								{/CONTENT_ID_FORM}
    
    								</section>
    								<footer class="separators">	
    									<p class="com"><span class="nbcom"><a href="javascript:" onclick="toggleComments();" style="font-variant: small-caps;"><span id="plusminus"></span>{plugin:NUMBER_OF_COMMENTS} {plugin:L_COMMENTS}</a></span>&nbsp;{plugin:BUBBLES}</p>
    								</footer>
    							</article>
    							{plugin:COMMENTS}
    			
    						<aside role="complementary">
    							
    						</aside>
    					</div>
    				</section>
    			</div> <!-- //SLIDER-LIKE-->
    
    			<footer role="contentinfo">
    				{plugin:INCLUDE_FILE_SIDETAGS}
    			</footer>
    		</div>
    		<script type="text/javascript" src="{plugin:PATH_PLX_URL_THEMES}/medias/js/jquery-1.7.1.min.js"></script>
    	</body>
    </html>
    
    

    J'utilise plusieurs plugins de lionwiki qu'il serait trop long de placer ici mais je peux te les envoyer si tu les veux (notamment les plugins Menu, IncludeFiles, Comments, Tags).
  • Ok merci pour ce retour.
    J'essaie de mettre ça en place des que je peux et je te fais un retour pour lionwiki.
    Je suppose donc qu'il est trop difficile de faire cela avec dokuwiki ?
  • Je ne sais pas. C'est juste que je n'ai jamais utilisé docuwiki.
  • Après plusieurs heures de paramétrages/bidouillages, je ne suis pas arrivé à intégrer Lionwiki.
    Pas grave, du coup je l'ai skinné pour qu'il ressemble au blog pour une meilleure intégration.
  • Jerry WhamJerry Wham Member
    janvier 2014 modifié
    J'aurais dû te mettre le plugin wkp_IncludeFiles.php dont le code est le suivant :
    <?php
    /**
     * IncludeFiles plugin for LionWiki, (c) 2013 Cyril MAGUIRE, GPL'd
     *
     * Plugin use array $IncludeFiles defined in config.php
     * {plugin:INCLUDE_FILE_NAME_OF_YOUR_FILE} will be substituted with static page "NAME_OF_YOUR_FILE" of pluxml.
     * {plugin:PATH_YOUR_PATH} will be substituted with path of "YOUR_PATH".
     * {plugin:LINK_YOUR_LINK} will be substituted with formatted "YOUR_LINK". Simple, stupid :)
     */
    
    class IncludeFiles 
    {
    	var $desc = array(
    		array("IncludeFiles", "allows include files")
    	);
    
    	function IncludeFiles() {
    
    	}
    
    	function template()
    	{
    		global $html;
    
    		$INCLUDE_FILE = array();
    		if ($this->URL !== null && !is_array($this->URL)){
    			$INCLUDE_FILE[] = file_get_contents($this->URL);
    		}
    		if ($this->URL !== null && is_array($this->URL)){
    			foreach ($this->URL as $k => $url) {			
    				$INCLUDE_FILE[$k] = file_get_contents($url);
    			}
    		}
    
    		$tpl_subs = array();
    		foreach ($INCLUDE_FILE as $k => $includeFile) {
    			$tpl_subs[] = array("plugin:INCLUDE_FILE_".$k, $includeFile);
    		}	
    
    		if ($this->LINK !== null && is_array($this->LINK)) {
    			foreach ($this->LINK as $k => $path) {
    				$tpl_subs[] = array("plugin:LINK_".$k, $path);
    			}
    		}
    
    		if ($this->PATH !== null && is_array($this->PATH)) {
    			foreach ($this->PATH as $k => $path) {
    				$tpl_subs[] = array("plugin:PATH_".$k, $path);
    			}
    		}
    
    		foreach($tpl_subs as $subs) // substituting values
    			$html = preg_replace("/\{([^}]* )?$subs[0]( [^}]*)?\}/U", "$1$subs[1]$2", $html);
    	}
    }
    

    Il te permettra d'utiliser des pages depuis pluxml (voir mon premier post).

    Pour appeler le menu, tu utiliseras pas exemple dans le templace de Lionwiki :
    {plugin:INCLUDE_FILE_MAIN_MENU}
    
    à l'endroit désiré.
    Cela correspond à l'index $IncludeFiles["URL"]["MAIN_MENU"] = PLX_URL.'?static5/menu'; définit dans le fichier config.

    Je te laisse le soin de déduire le reste.
Connectez-vous ou Inscrivez-vous pour répondre.