Subversion Repositories Applications.projet

Rev

Rev 263 | Blame | Compare with Previous | Last modification | View Log | RSS feed

<?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&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("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>";
                }
        }
}
?>