New file |
0,0 → 1,233 |
<?php |
|
/* |
Handler "slide_show" pour WikiNi version WikiNi 0.4.1rc et supérieurs. |
Développé par Charles Népote. |
Version 0.08 du 26/04/2004. |
Licence GPL. |
|
Par défaut il utilise les classes de style suivantes : |
.slide { font-size: 160%; margin: 5%; background-color: #FFFFFF; padding: 30px; border: 1px inset; line-height: 1.5; } |
.slide UL, LI { font-size: 100%; } |
.slide LI LI { font-size: 90% } |
.sl_nav p { text-decoration: none; text-align: right; font-size: 80%; line-height: 0.4; } |
.sl_nav A { text-decoration: none; } |
.sl_nav a:hover { color: #CF8888 } |
.sum { font-size: 8px; } |
|
Pour modifier ces styles il faut créer un fichier "slideshow.css" contenant les styles modifiés. |
Le fichier "slideshow.css" sera reconnu automatiquement. |
|
*/ |
|
// On teste si le script n'est pas appelé en direct |
if (!eregi("wakka.php", $_SERVER['PHP_SELF'])) |
{ |
die ("accès direct interdit"); |
} |
|
// On teste si l'utilisateur peut lire la page |
if (!$this->HasAccess("read")) |
{ |
return; |
} |
else |
{ |
// On teste si la page existe |
if (!$this->page) |
{ |
return; |
} |
else |
{ |
/* |
Exemple de page : |
|
(1) Présentation xxxxxxxxxxxxxx |
|
===== (2) Titre ===== |
Diapo 2. |
|
===== (3) Titre ===== |
Diapo 3. |
|
===== (4) Titre ===== |
Diapo 4. |
|
===== (5) Titre ===== |
Diapo 5. |
|
===== (6) Titre ===== |
Diapo 6. |
|
===== (7) Titre ===== |
Diapo 7. |
|
Autre exemple : |
|
===== (1) Titre ===== |
Diapo 1. |
|
===== (2) Titre ===== |
Diapo 2. |
|
===== (3) Titre ===== |
Diapo 3. |
|
===== (4) Titre ===== |
Diapo 4. |
|
===== (5) Titre ===== |
Diapo 5. |
|
===== (6) Titre ===== |
Diapo 6. |
|
===== (7) Titre ===== |
Diapo 7. |
|
*/ |
|
// |
// découpe la page |
$body_f = $this->format($this->page["body"]); |
$body = preg_split('/(.*<h2>.*<\/h2>)/',$body_f,-1,PREG_SPLIT_DELIM_CAPTURE); |
if ($_REQUEST["debug"] == "1") print_r("<div style=\"display: none\">".$body."</div>"); |
|
// Si la première diapositive commence par un titre de niveau 1 |
if (preg_match('/^<h2>.*<\/h2>/', $body_f)) $major = "0"; |
else $major = "1"; |
|
$user = $this->GetUser(); // echo $this->GetUser(); |
|
// On teste toutes les paramètres du handler "slide_show" ; s'il n'y en a pas, c'est le paramètre "slide=1" qui est invoqué par défaut |
|
/* |
switch ($_REQUEST["method"]) |
{ |
case "export": |
export(); |
break; |
case "show": |
showSlide(); |
break; |
default: |
showSlide(); |
break; |
} |
*/ |
|
//if ($_REQUEST["export"]) { return; } |
|
|
if (!$body) |
{ |
return; |
} |
else |
{ |
// Si on ne précise pas de paramètre, on affiche par défaut la première diapo |
if (!$_REQUEST["slide"] or $_REQUEST["slide"] == "1") $slide = "1"; |
else $slide = $_REQUEST["slide"]; |
|
// Affiche l'en-tête |
echo |
"<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n"; |
echo |
"<html>\n\n\n", |
"<head>\n", |
"<title>", $this->GetWakkaName(), ":", $this->GetPageTag(), "</title>\n", |
"<meta name=\"robots\" content=\"noindex, nofollow\" />\n", |
"<meta http-equiv=\"Content-Type\" content=\"text/html; charset=iso-8859-1\" />\n"; |
echo |
"<style type=\"text/css\" media=\"all\"> @import \"wakka.css\";</style>\n"; |
// Teste s'il existe une feuille de style externe, sinon utilise des styles par défaut |
if (!file_exists("slideshow.css")) |
{ |
echo "<style type=\"text/css\">\n", |
".slide { font-size: 160%; margin: 5%; background-color: #FFFFFF; padding: 30px; border: 1px inset; line-height: 1.5; }\n", |
".slide UL, LI { font-size: 100%; }\n", |
".slide LI LI { font-size: 90% }\n", |
".sl_nav p { text-decoration: none; text-align: right; font-size: 80%; line-height: 0.4; }\n", |
".sl_nav A { text-decoration: none; }\n", |
".sl_nav a:hover { color: #CF8888 }\n", |
".sum { font-size: 8px; }\n", |
"</style>\n"; |
} |
else |
{ |
echo "<style type=\"text/css\" media=\"all\"> @import \"slideshow.css\";</style>\n"; |
} |
|
echo |
"</head>\n\n\n"; |
|
// Affiche le corps de la page |
echo |
"<body "; |
echo (!$user || ($user["doubleclickedit"] == 'Y')) ? "ondblclick=\"document.location='".$this->href("edit")."';\" " : "", ">\n"; |
|
// Affichage du sommaire [à compléter] |
/* |
if ($_REQUEST["sum"] == "on") |
{ |
echo "<ul class=\"sum\">\n"; |
if ($major = "1") echo "<li>", $this->format($body[0]), "</li>\n"; |
foreach ($body as $title_sum) |
{ |
$i = $i + 1; |
$type = gettype($i/2); |
// Ne retourne que les 50 premiers caractères du titre |
$title_sum = substr($title_sum, 0, 50); |
if ($type == "integer") |
{ |
echo "<li>",$this->format($title_sum),"</li>\n"; |
} |
} |
echo "</ul>\n\n"; |
} |
*/ |
|
// Affichage du menu de navigation |
echo |
"<div class=\"sl_nav\">\n", |
"<p>"; |
if ($slide !== "1") |
echo |
"<a href=\"",$this->href(),"/slide_show&slide=",$_REQUEST['slide']-1,"\"><< précédent</a>", |
" :: <a href=\"",$this->href(),"/slide_show&slide=1\">[début]</a>\n"; |
echo " :: "; |
if ($body[($slide)*2-($nb*2)+2] or $slide == "1") |
echo "<a href=\"",$this->href(),"/slide_show&slide=",$slide+1,"\">suivant >></a>\n"; |
echo |
"</p>\n"; |
echo "<p><a href=\"",$this->href(),"/edit\">Éditer </a> :: <a href=\"",$this->href(),"\">[]-></a></p>\n"; |
echo |
"</div>\n\n"; |
|
echo |
"<div class=\"slide\">\n"; |
|
// Si c'est la première diapositive |
if ($slide == "1" and $major == "1") |
{ |
echo $body[0], "<br /><br />"; |
} |
|
// A partir de la deuxième diapositive |
else |
{ |
echo |
$body[($slide*2)-($major*2)-1].$body[($slide*2)-($major*2)],"\n"; |
echo "\n"; |
} |
echo |
"</div>\n\n"; |
|
echo |
"</body>\n", |
"</html>"; |
} |
} |
} |
?> |