Revision [11501]

This is an old revision of SlideshowHandler made by GmBowen on 2005-10-20 19:10:47.

 

I've adapted the slideshow handler from wikini to work in wikka. It needs two files....

Otherwise, the hander is called (as per normal) with pagename/slide_show. If you want to see an example page setup, go and look at http://www.wikini.net/wakka.php?wiki=DocumentationSlideShow .

Insert file below as slide_show.php in the handlers/page directory....
php

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
	<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
	<meta name="keywords" content="" />
	<meta name="description" content="" />
	<link rel="stylesheet" type="text/css" href="css/wikka.css" />
	<link rel="stylesheet" type="text/css" href="css/print.css" media="print" /> 
</head>
<body style="background-color: #fff;">
<div class="page" style="border: 0;">
<?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.
modified by GmBowen 2005 to work in Wikka. 
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("wikka.php", $_SERVER['PHP_SELF']))
{
	die ("acc&egrave;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("css/slideshow.css"))
			{
				echo "<style type=\"text/css\">\n",
				".slide { font-size: 160%; margin: 5%; background-color: #CCCCCC; 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 \"css/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,"\"><< previous</a>",
			" :: <a href=\"",$this->href(),"/slide_show&slide=1\">[start]</a>\n";
			echo " :: ";
			if ($body[($slide)*2-($nb*2)+2] or $slide == "1")
			echo "<a href=\"",$this->href(),"/slide_show&slide=",$slide+1,"\">next >></a>\n";
			echo
			"</p>\n";
			echo "<p>";
//			echo "<a href=\"",$this->href(),"/edit\">Editor </a> :: ";
			echo "<a href=\"",$this->href(),"\">[end]</a></p>\n";
			echo
			"</div>\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>";
		}
	}
}
die (0);
?>
</div>
</body>
</html>


and this one as slideshow.css in the directory css....
.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; }
There are no comments on this page.
Valid XHTML :: Valid CSS: :: Powered by WikkaWiki