Subversion Repositories Applications.papyrus

Rev

Go to most recent revision | Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
448 ddelon 1
<?php
2
 
3
/*
4
Handler "slide_show" pour WikiNi version WikiNi 0.4.1rc et supérieurs.
5
Développé par Charles Népote.
6
Version 0.08 du 26/04/2004.
7
Licence GPL.
8
 
9
Par défaut il utilise les classes de style suivantes :
10
.slide { font-size: 160%; margin: 5%; background-color: #FFFFFF; padding: 30px; border: 1px inset; line-height: 1.5; }
11
.slide UL, LI { font-size: 100%; }
12
.slide LI LI { font-size: 90% }
13
.sl_nav p { text-decoration: none; text-align: right; font-size: 80%; line-height: 0.4; }
14
.sl_nav A { text-decoration: none; }
15
.sl_nav a:hover { color: #CF8888 }
16
.sum { font-size: 8px; }
17
 
18
Pour modifier ces styles il faut créer un fichier "slideshow.css" contenant les styles modifiés.
19
Le fichier "slideshow.css" sera reconnu automatiquement.
20
 
21
*/
22
 
23
// On teste si le script n'est pas appelé en direct
24
if (!eregi("wakka.php", $_SERVER['PHP_SELF']))
25
{
26
	die ("acc&egrave;s direct interdit");
27
}
28
 
29
// On teste si l'utilisateur peut lire la page
30
if (!$this->HasAccess("read"))
31
{
32
	return;
33
}
34
else
35
{
36
	// On teste si la page existe
37
	if (!$this->page)
38
	{
39
		return;
40
	}
41
	else
42
	{
43
		/*
44
		Exemple de page :
45
 
46
		(1) Présentation xxxxxxxxxxxxxx
47
 
48
		===== (2) Titre =====
49
		Diapo 2.
50
 
51
		===== (3) Titre =====
52
		Diapo 3.
53
 
54
		===== (4) Titre =====
55
		Diapo 4.
56
 
57
		===== (5) Titre =====
58
		Diapo 5.
59
 
60
		===== (6) Titre =====
61
		Diapo 6.
62
 
63
		===== (7) Titre =====
64
		Diapo 7.
65
 
66
		Autre exemple :
67
 
68
		===== (1) Titre =====
69
		Diapo 1.
70
 
71
		===== (2) Titre =====
72
		Diapo 2.
73
 
74
		===== (3) Titre =====
75
		Diapo 3.
76
 
77
		===== (4) Titre =====
78
		Diapo 4.
79
 
80
		===== (5) Titre =====
81
		Diapo 5.
82
 
83
		===== (6) Titre =====
84
		Diapo 6.
85
 
86
		===== (7) Titre =====
87
		Diapo 7.
88
 
89
		*/
90
 
91
		//
92
		// découpe la page
93
		$body_f = $this->format($this->page["body"]);
94
		$body = preg_split('/(.*<h2>.*<\/h2>)/',$body_f,-1,PREG_SPLIT_DELIM_CAPTURE);
95
		if ($_REQUEST["debug"] == "1") print_r("<div style=\"display: none\">".$body."</div>");
96
 
97
		// Si la première diapositive commence par un titre de niveau 1
98
		if (preg_match('/^<h2>.*<\/h2>/', $body_f)) $major = "0";
99
		else $major = "1";
100
 
101
		$user = $this->GetUser(); // echo $this->GetUser();
102
 
103
		// 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
104
 
105
		/*
106
		switch ($_REQUEST["method"])
107
		{
108
			case "export":
109
				export();
110
				break;
111
			case "show":
112
				showSlide();
113
				break;
114
			default:
115
				showSlide();
116
				break;
117
		}
118
		*/
119
 
120
		//if ($_REQUEST["export"]) { return; }
121
 
122
 
123
		if (!$body)
124
		{
125
			return;
126
		}
127
		else
128
		{
129
			// Si on ne précise pas de paramètre, on affiche par défaut la première diapo
130
			if (!$_REQUEST["slide"] or $_REQUEST["slide"] == "1") $slide = "1";
131
			else $slide = $_REQUEST["slide"];
132
 
133
			// Affiche l'en-tête
134
			echo
135
			"<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n";
136
			echo
137
			"<html>\n\n\n",
138
			"<head>\n",
139
			"<title>", $this->GetWakkaName(), ":", $this->GetPageTag(), "</title>\n",
140
			"<meta name=\"robots\" content=\"noindex, nofollow\" />\n",
141
			"<meta http-equiv=\"Content-Type\" content=\"text/html; charset=iso-8859-1\" />\n";
142
			echo
143
			"<style type=\"text/css\" media=\"all\"> @import \"wakka.css\";</style>\n";
144
			// Teste s'il existe une feuille de style externe, sinon utilise des styles par défaut
145
			if (!file_exists("slideshow.css"))
146
			{
147
				echo "<style type=\"text/css\">\n",
148
				".slide { font-size: 160%; margin: 5%; background-color: #FFFFFF; padding: 30px; border: 1px inset; line-height: 1.5; }\n",
149
				".slide UL, LI { font-size: 100%; }\n",
150
				".slide LI LI { font-size: 90% }\n",
151
				".sl_nav p { text-decoration: none; text-align: right; font-size: 80%; line-height: 0.4; }\n",
152
				".sl_nav A { text-decoration: none; }\n",
153
				".sl_nav a:hover { color: #CF8888 }\n",
154
				".sum { font-size: 8px; }\n",
155
				"</style>\n";
156
			}
157
			else
158
			{
159
				echo "<style type=\"text/css\" media=\"all\"> @import \"slideshow.css\";</style>\n";
160
			}
161
 
162
			echo
163
			"</head>\n\n\n";
164
 
165
			// Affiche le corps de la page
166
			echo
167
			"<body ";
168
			echo (!$user || ($user["doubleclickedit"] == 'Y')) ? "ondblclick=\"document.location='".$this->href("edit")."';\" " : "", ">\n";
169
 
170
			// Affichage du sommaire [à compléter]
171
			/*
172
			if ($_REQUEST["sum"] == "on")
173
			{
174
				echo "<ul class=\"sum\">\n";
175
				if ($major = "1") echo "<li>", $this->format($body[0]), "</li>\n";
176
				foreach ($body as $title_sum)
177
				{
178
					$i = $i + 1;
179
					$type = gettype($i/2);
180
					// Ne retourne que les 50 premiers caractères du titre
181
					$title_sum = substr($title_sum, 0, 50);
182
					if ($type == "integer")
183
					{
184
						echo "<li>",$this->format($title_sum),"</li>\n";
185
					}
186
				}
187
				echo "</ul>\n\n";
188
			}
189
			*/
190
 
191
			// Affichage du menu de navigation
192
			echo
193
			"<div class=\"sl_nav\">\n",
194
			"<p>";
195
			if ($slide !== "1")
196
			echo
197
			"<a href=\"",$this->href(),"/slide_show&slide=",$_REQUEST['slide']-1,"\"><< précédent</a>",
198
			" :: <a href=\"",$this->href(),"/slide_show&slide=1\">[début]</a>\n";
199
			echo " :: ";
200
			if ($body[($slide)*2-($nb*2)+2] or $slide == "1")
201
			echo "<a href=\"",$this->href(),"/slide_show&slide=",$slide+1,"\">suivant >></a>\n";
202
			echo
203
			"</p>\n";
204
			echo "<p><a href=\"",$this->href(),"/edit\">Éditer </a> :: <a href=\"",$this->href(),"\">[]-></a></p>\n";
205
			echo
206
			"</div>\n\n";
207
 
208
			echo
209
			"<div class=\"slide\">\n";
210
 
211
			// Si c'est la première diapositive
212
			if ($slide == "1" and $major == "1")
213
			{
214
				echo $body[0], "<br /><br />";
215
			}
216
 
217
			// A partir de la deuxième diapositive
218
			else
219
			{
220
				echo
221
				$body[($slide*2)-($major*2)-1].$body[($slide*2)-($major*2)],"\n";
222
				echo "\n";
223
			}
224
			echo
225
			"</div>\n\n";
226
 
227
			echo
228
			"</body>\n",
229
			"</html>";
230
		}
231
	}
232
}
233
?>