*/
// must be run within Dokuwiki
if(!defined('DOKU_INC')) die();
if(!defined('DOKU_PLUGIN')) define('DOKU_PLUGIN',DOKU_INC.'lib/plugins/');
require_once(DOKU_PLUGIN.'action.php');
class action_plugin_lytebox extends DokuWiki_Action_Plugin {
/**
* return some info
*/
function getInfo() {
return array(
'author' => 'Etienne M.',
'email' => 'emauvaisfr@yahoo.fr',
'date' => @file_get_contents(DOKU_PLUGIN.'lytebox/VERSION'),
'name' => 'lytebox Plugin',
'desc' => 'Affiche les images dans lytebox / Displays the pictures using lytebox',
'url' => 'http://www.dokuwiki.org/fr:plugin:lytebox',
);
}
/**
* Constructor
*/
function action_plugin_lytebox() {
$this->setupLocale();
}
/**
* register the eventhandlers
*/
function register(&$contr) {
//$contr->register_hook('ACTION_ACT_PREPROCESS', 'BEFORE', $this, '_handle_act', array());
$contr->register_hook('TPL_METAHEADER_OUTPUT', 'BEFORE', $this, '_handle_tpl_metaheader', array());
$contr->register_hook('TPL_CONTENT_DISPLAY', 'BEFORE', $this, '_handle_tpl_content_display', array());
}
function _handle_tpl_metaheader(&$event, $param) {
// Adding lytebox stylesheet
$event->data["link"][] = array (
"type" => "text/css",
"rel" => "stylesheet",
"href" => DOKU_BASE."lib/plugins/lytebox/lytebox.css",
);
// Adding lytebox JavaScript File
$event->data["script"][] = array (
"type" => "text/javascript",
"src" => DOKU_BASE."lib/plugins/lytebox/lytebox.js",
"_data" => "",
);
}
function _handle_tpl_content_display(&$event, $param) {
$event->data = preg_replace_callback(
'/<\/a>/',
array('action_plugin_lytebox','_callback'),
$event->data
);
}
function _callback($matches) {
//1 : a_href
//2 : a_title
//3 : img_src
//4 : img_media
//5 : img_alt_title_tag
//6 : img_alt_title
//7 : img_reste
//S'il n'y a pas "_detail" dans le lien ni de /lib/exe/fetch.php (image link), on ne fait rien
if (strpos(strtolower($matches[1]),"/_detail/")) $type="int";
else if (strpos(strtolower($matches[1]),"/lib/exe/fetch.php")) $type="ext";
else return $matches[0];
//print "".print_r($matches,true)."
";
$rel="lytebox[0]";
$rev="";
//Pour les images internes
if ($type=="int") {
preg_match("/(.*?)\?/",$matches[3],$img_src);
}
//Pour les images externes
else {
preg_match("/(.*)/",$matches[3],$img_src);
}
if ($img_src) $img_src = $img_src[1];
else $img_src=$matches[3];
$a_title=$matches[2];
//Pour les images internes
if ($type=="int") {
$a_title = "$a_title";
}
//Pour les images externes
else {
$a_title = "$a_title";
}
if ($matches[6]) $a_title = $matches[6]."
".$a_title;
else $matches[6]=" ";
return "";
}
}
// vim:ts=4:sw=4:et:enc=utf-8: