[web-pres2] master: push

[email protected] (Aaron Junker) Fri, 30 Sep 2022 15:34:19 +0000
Newsgroups php.pres
Message-ID <[email protected]>
Author: Aaron Junker (Aaron-Junker)
Pusher: derickr
Date: 2022-06-11T09:48:15+02:00

Commit: https://github.com/php/web-pres2/commit/e3224c30b884a8c126b0006bb49fce0287351331
Raw diff: https://github.com/php/web-pres2/commit/e3224c30b884a8c126b0006bb49fce0287351331.diff

push

Changed paths:
  A  css.css
  A  presentations/foo3.xml
  A  presentations/foo4.xml
  A  presentations/foo5.xml
  A  presentations/foo6.xml
  A  presentations/foo7.xml
  A  shared
  D  css.php
  D  favicon.ico
  M  .gitignore
  M  .gitmodules
  M  display.php
  M  index.php
  M  objects.php
  M  presentations/foo.xml
  M  show.php
  M  slidelist.php


Diff:

diff --git a/.gitignore b/.gitignore
index fc96a7e..17c05e0 100644
--- a/.gitignore
+++ b/.gitignore
@@ -2,3 +2,4 @@ config.php
 .htaccess
 show
 img
+/presentations/
diff --git a/.gitmodules b/.gitmodules
index 0c858fe..4c115c8 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -1,6 +1,6 @@
 [submodule "reveal.js"]
 	path = reveal.js
 	url = https://github.com/hakimel/reveal.js.git
-[submodule "web-shared"]
+[submodule "shared"]
 	path = shared
-	url = https://github.com/php/web-shared.git
+	url = https://github.com/php/web-shared
diff --git a/css.php b/css.css
similarity index 59%
rename from css.php
rename to css.css
index 047c127..eb57d69 100644
--- a/css.php
+++ b/css.css
@@ -1,20 +1,9 @@
-<?php
-if (empty($pres)) $pres = $presentation;
-?>
-<style title="Default" type="text/css">
 body {
-	font-size: <?php echo $pres->basefontsize; ?>;
 	margin-top:0em;
 	margin-left:0em;
 	margin-right:0em;
 	margin-bottom:0em;
-	<?php
-	if ($pres->backgroundcol) { echo "background: {$pres->backgroundcol};\n"; }
-	if ($pres->backgroundimage) echo "background-image: url({$pres->backgroundimage});\n";
-	if ($pres->backgroundfixed) echo "background-attachment : fixed;\n";
-	if ($pres->backgroundrepeat) echo "background-repeat : repeat\n";
-	else echo "background-repeat : no-repeat\n";
-	?>
+    background-color: #C4C9DF;
 }
 div.sticky {
 	margin: 0;
@@ -35,56 +24,37 @@
 	width: 100%;
 }
 div.shadow {
-	background: <?php echo $pres->shadowbackground; ?>;
 	padding: 0.5em;
 }
 div.navbar {
-	background: <?php echo $pres->navbarbackground; ?>;
 	padding: 4;
 	margin: 0;
-        height: <?php echo $pres->navbarheight; ?>;
 	color: #ffffff;
 	font-family: verdana, tahoma, arial, helvetica, sans-serif;
 	z-index: 99;
 }
 div.emcode {
-	background: <?php echo $pres->examplebackground; ?>;
 	border: thin solid #000000;
 	padding: 0.5em;
 	font-family: monospace;
+	overflow: auto;
 }
 
 div.output {
-	font-family: monospace;
-	background: <?php echo $pres->outputbackground; ?>;
 	border: thin solid #000000;
 	padding: 0.5em;
 }
 
-div.noshadow {
-	font-family: monospace;
-	background: <?php echo $pres->outputbackground; ?>;
-}
 
 table.index {
- background: <?php echo $pres->examplebackground; ?>;
  border: thin dotted #000000;                                                                                                 
  padding: 0.5em;
- font-family: monospace;
 }
 
 td.index {
- background: <?php echo $pres->examplebackground; ?>;
  padding: 1em;
- font-family: monospace;
 }
 
-h1 {
-	font-size: 2em;
-}
-p,li {
-	font-size: 2.6em;
-}
 a {
 	text-decoration: none;
 }
@@ -141,19 +111,18 @@
    	border-style : solid; 
 	border-top-width : 1px; 
 	border-right-width : 1px; 
-	border-bottom-width : 1px; 
+	border-bottom-width : 1px;
 	border-left-width : 1px; 
    	border-right-color : inherit; 
    	border-left-color : inherit; 
    	float : left; 
 }
 
-A.linka { text-decoration: none; color: 000000; }
-td.foo {color: ffffff; font-family: arial,verdana,helvetica; font-size: 70%}
-span.c4 {position: fixed; bottom: 0.5em; right: 4em; top: auto; left: auto; color: ffffff; font-family: arial,verdana,helvetica; font-size: 70%}
-td.c3 {color: CC6600; font-family: arial, helvetica, verdana}
-span.c2 {color: ffffff; font-family: arial,hevetica,verdana}
-span.c5 {position: fixed; bottom: 0.5em; right: 1em; top: auto; left: auto; color: 000000; font-family: arial,verdana,helvetica; font-size: 80%}
+A.linka { text-decoration: none; color: #000000; }
+td.foo {color: #ffffff; font-family: arial,verdana,helvetica; font-size: 70%}
+span.c4 {position: fixed; bottom: 0.5em; right: 4em; top: auto; left: auto; color: #ffffff; font-family: arial,verdana,helvetica; font-size: 70%}
+td.c3 {color: #CC6600; font-family: arial, helvetica, verdana}
+span.c2 {color: #ffffff; font-family: arial,hevetica,verdana}
+span.c5 {position: fixed; bottom: 0.5em; right: 1em; top: auto; left: auto; color: #000000; font-family: arial,verdana,helvetica; font-size: 80%}
 td.c1 {font-family: arial,helvetica,verdana; font-size: 80%}
 
-</style>
\ No newline at end of file
diff --git a/display.php b/display.php
index b01c9fe..24f07ff 100644
--- a/display.php
+++ b/display.php
@@ -54,31 +54,77 @@ function _presentation(&$presentation) {
 
         // allow caching
         if($cache_ok) header("Last-Modified: " . date("r", filemtime($this->presentationDir.'/'.$presentation->slides[$this->slideNum]->filename)));
-        echo <<<HEADER
+        $HEAD_RAND = <<<HEAD_RAND
+    
+<script>
+function change_mode() {
+	document.cookie="display_mode="+document.modes_form.modes.options[document.modes_form.modes.selectedIndex].value+"|"+document.modes_form.speaker.checked;
+	top.location=top.location.href;
+}
+</script>
+
+<base href="http://%1">
+
+<style>
+body{
+    padding-bottom: 12px;
+}
+footer {
+    position: fixed;
+    bottom: 0;
+}
+</style>
+
+HEAD_RAND;
+
+        $HEAD_RAND = str_replace("%1", htmlspecialchars($_SERVER['HTTP_HOST']).$baseDir, $HEAD_RAND);
+
+        $TITLE = "Presentation System";
+
+        $CSS = array("/../css.css");
+
+        $SUBDOMAIN = "talks";
+
+        $LINKS = array(
+            array("href" => "https://php.net/downloads.php", "text" => "Downloads"),
+            array("href" => "https://php.net/docs.php", "text" => "Documentation"),
+            array("href" => "https://php.net/get-involved.php", "text" => "Get Involved"),
+            array("href" => "https://php.net/support.php", "text" => "Help")
+        );
+
+            $showHeaderFooter = $presentation->stylesheet == "css.css";
+
+        if($showHeaderFooter) {
+            include_once "shared/templates/header.inc";
+        }else{
+            $HEADER = <<<HEADER
 <!doctype html>
 <html>
 <head>
 <base href="http://$_SERVER[HTTP_HOST]$this->baseDir">
 <meta charset="utf-8">
 <title>{$presentation->title}</title>
+
 HEADER;
+            echo $HEADER;
+        }
+        include 'getwidth.php';
+        if(!$showHeaderFooter) {
+            include $presentation->stylesheet;
+        }else{
+            echo "<style>";
+            include "css.css";
+            echo "</style>";
+        }
         switch($presentation->template) {
-        case 'simple':
-            $body_style = "margin-top: 1em;";
-            break;
-        case 'empty':
-            $body_style = "margin-top: 0em;";
-            break;
-        case 'php2':
-            $body_style = "margin-top: 5em;";
-            break;
-        default:
-            $body_style = "margin-top: 8em;";
-            break;
+            case 'css':
+                $body_style = "margin-top: 8em;";
+                break;
+            default:
+                $body_style = "margin-top: 0em;";
+                break;
         }
         $this->body_style = $body_style;
-        include 'getwidth.php';
-        include $presentation->stylesheet;
         /* the following includes scripts necessary for various animations */
         if($presentation->animate || $presentation->jskeyboard) include 'keyboard.js.php';
         // Link Navigation (and next slide pre-fetching)
@@ -91,9 +137,9 @@ function _presentation(&$presentation) {
         foreach($this->objs as $obj) {
             $obj->display();
         }
-        echo <<<FOOTER
-</html>
-FOOTER;
+        if($showHeaderFooter) {
+            include "/shared/templates/footer.inc";
+        }
 }
 
     function _slide(&$slide) {
@@ -137,46 +183,31 @@ function _slide(&$slide) {
             break;
 
         case 'php2':
-            echo "<div id=\"stickyBar\" class=\"sticky\" align=\"$slide->titleAlign\" style=\"align: {$slide->titleAlign}; width: 100%\"><div class=\"navbar\">";
+            echo "<div align=\"$slide->titleAlign\" style=\"align: {$slide->titleAlign}; width: 100%\"><div class=\"navbar\">";
             echo "<table style=\"float: left;\" width=\"60%\" border=\"0\" cellpadding=0 cellspacing=0><tr>\n";
-            if(!empty($slide->logo1)) $logo1 = $slide->logo1;
-            else $logo1 = $this->pres->logo1;
-            if(!empty($slide->logoimage1url)) $logo1url = $slide->logoimage1url;
-            else $logo1url = $this->pres->logoimage1url;
-            if(!empty($logo1)) {
-                $size = getimagesize($logo1);
-                echo "<td align=\"left\" $size[3]><a href=\"$logo1url\"><img src=\"$logo1\" border=\"0\" align=\"left\" style=\"float: left; margin-bottom: 0em; margin-left: 0em;\"></a></td>";
-                $offset+=2;
-            }
             ?>
             <td align="center">
-            <?php echo "<div align=\"center\" style=\"font-size: $titlesize; margin: 0 ".$offset."em 0 0;\"><a title=\"".$this->pres->slides[$this->slideNum]->filename."\" href=\"http://$_SERVER[HTTP_HOST]$this->baseDir$this->showScript/$currentPres/$this->slideNum\" style=\"text-decoration: none; color: $titlecolor;\">".markup_text($slide->title)."</a></div>";?>
+            <?php echo "<div align=\"center\" style=\"font-size: $titlesize; margin: 0 ".$offset."em 0 0; \"><a title=\"".$this->pres->slides[$this->slideNum]->filename."\" href=\"http://$_SERVER[HTTP_HOST]$this->baseDir$this->showScript/$currentPres/$this->slideNum\" style=\"text-decoration: none; color: $titlecolor;\">".markup_text($slide->title)."</a></div>";?>
             </td>
-            </tr></table>
-            <br />
-            <table style="float: right">
-              <tr>
-              <td class="c1"><b><?php echo $this->pres->title ?></b></td>
-              <td><img src="images/vline.gif" hspace="5" /></td>
-              <td class="c1"><?php echo date('Y-m-d') ?></td>
-              <td><img src="images/blank.gif" width="5" /></td>
-              <td><?php if( $this->slideNum > 0){
+            <td align="right" >
+
+            <?php if($this->slideNum > 0){
                          $prevSlide = $this->slideNum - 1;
                          echo "<a title=\"$this->prevTitle\" href=\"http://$_SERVER[HTTP_HOST]$this->baseDir$this->showScript/$currentPres/$prevSlide\">"
                          . '<img src="images/back.gif" border="0" hspace="2" /></a>';
                      } 
                      if($this->slideNum < $this->maxSlideNum) $this->nextSlideNum = $this->slideNum + 1;
-              ?></td>
-              <td bgcolor="999999"><img src="images/blank.gif" width="25" height="1" /><br />
+            ?>
               <span class="c2"><b><i>&nbsp;&nbsp;
-              <a title="<?php echo $this->slideNum.' of '.$this->maxSlideNum?>" href="<?php echo "http://$_SERVER[HTTP_HOST]{$this->baseDir}/slidelist.php" ?>" onClick="window.open('<?php echo "http://$_SERVER[HTTP_HOST]{$this->baseDir}/slidelist.php" ?>','slidelist','toolbar=no,directories=no,location=no,status=no,menubar=no,resizable=no,scrollbars=yes,width=300,height=500,left=<?php echo $this->winW-300 ?>,top=0'); return false" class="linka"><?php echo $this->slideNum ?></a> &nbsp; &nbsp; </i></b></span></td>
-                  <td><?php if( !empty($this->nextSlideNum) )
+                          <a title="<?php echo $this->slideNum.' of '.$this->maxSlideNum?>" href="<?php echo "http://$_SERVER[HTTP_HOST]{$this->baseDir}/slidelist.php" ?>" onClick="window.open('<?php echo "http://$_SERVER[HTTP_HOST]{$this->baseDir}/slidelist.php" ?>','slidelist','toolbar=no,directories=no,location=no,status=no,menubar=no,resizable=no,scrollbars=yes,width=300,height=500,left=<?php echo $this->winW-300 ?>,top=0'); return false" class="linka"><?php echo $this->slideNum ?></a>
+              &nbsp;&nbsp;</i></b></span>
+                  <?php if( !empty($this->nextSlideNum) )
                     echo "<a title=\"$this->nextTitle\" href=\"http://$_SERVER[HTTP_HOST]$this->baseDir$this->showScript/$currentPres/$this->nextSlideNum\">"
                         . '<img src="images/next.gif" border="0" hspace="2" /></a>';
-                ?></td>
-              <td><img src="images/blank.gif" height="10" width="15" /></td>
-              </tr>
-            </table>
+                ?></div>
+
+            </tr></table>
+            </div>
             <br clear="left" />
             <hr style="margin-left: 0; margin-right: 0; border: 0; color: <?php echo $titlecolor?>; background-color: <?php echo $titlecolor?>; height: 2px">
             </div></div>
@@ -184,17 +215,8 @@ function _slide(&$slide) {
             break;
 
         case 'mysql':
-            echo "<div id=\"stickyBar\" class=\"sticky\" align=\"$slide->titleAlign\" style=\"width: 100%\"><div class=\"navbar\">";
+            echo "<div align=\"$slide->titleAlign\" style=\"width: 100%\"><div class=\"navbar\">";
             echo "<table style=\"float: left;\" width=\"60%\" border=\"0\"><tr>\n";
-            if(!empty($slide->logo1)) $logo1 = $slide->logo1;
-            else $logo1 = $this->pres->logo1;
-            if(!empty($slide->logoimage1url)) $logo1url = $slide->logoimage1url;
-            else $logo1url = $this->pres->logoimage1url;
-            if(!empty($logo1)) {
-                $size = getimagesize($logo1);
-                echo "<td align=\"left\" $size[3]><a href=\"$logo1url\"><img src=\"$logo1\" border=\"0\" align=\"left\" style=\"float: left; margin-bottom: 0.5em; margin-left: 1em;\" alt=\"".$this->pres->slides[$this->slideNum]->filename."\"></a></td>";
-                $offset+=2;
-            }
             ?>
             <td align="center">
             <b style="color: CC6600; font-size: 1.5em; font-family: arial, helvetica, verdana"><?php echo markup_text($slide->title) ?></b>
@@ -255,23 +277,7 @@ function _slide(&$slide) {
 
         case 'php':
         default:
-            echo "<div id=\"stickyBar\" class=\"sticky\" align=\"$slide->titleAlign\" style=\"width: 100%;\"><div class=\"navbar\">";
-            if(!empty($slide->logo1)) $logo1 = $slide->logo1;
-            else $logo1 = $this->pres->logo1;
-            if(!empty($slide->logoimage1url)) $logo1url = $slide->logoimage1url;
-            else $logo1url = $this->pres->logoimage1url;                
-            if(!empty($logo1)) {
-                echo "<a href=\"$logo1url\"><img src=\"$logo1\" border=\"0\" align=\"left\" style=\"float: left;\" alt=\"".$this->pres->slides[$this->slideNum]->filename."\"></a>";
-                $offset+=2;
-            }
-            echo "<div align=\"center\" style=\"font-size: $titlesize; margin: 0 ".$offset."em 0 0;\"><a href=\"http://$_SERVER[HTTP_HOST]$this->baseDir$this->showScript/$currentPres/$this->slideNum\" style=\"text-decoration: none; color: $titlecolor;\">".markup_text($slide->title)."</a></div>";
-            echo "<div style=\"font-size: $navsize; float: right; margin: -2em 0 0 0;\">";
-            if(!empty($slide->logo2)) $logo2 = $slide->logo2;
-            else $logo2 = $this->pres->logo2;
-            if (!empty($logo2)) {
-                echo "<img src=\"$logo2\" border=\"0\"><br/>";
-                $offset-=2;
-            }
+            echo "<div    align=\"$slide->titleAlign\" style=\"width: 100%;\"><div class=\"navbar\">";
             echo "<a href=\"http://$_SERVER[HTTP_HOST]{$this->baseDir}/slidelist.php\" style=\"text-decoration: none; color: $slide->titleColor;\" onClick=\"window.open('http://$_SERVER[HTTP_HOST]{$this->baseDir}/slidelist.php','slidelist','toolbar=no,directories=no,location=no,status=no,menubar=no,resizable=no,scrollbars=yes,width=300,height=$slidelistH,left=".($this->winW-300).",top=0'); return false\">".($this->slideNum)."/".($this->maxSlideNum)."</a></div>";
             if ($this->pres->navbartopiclinks) {
                 echo "<div style=\"float: left; margin: -0.2em 2em 0 0; font-size: $navsize;\"><a href=\"http://$_SERVER[HTTP_HOST]$this->baseDir$this->showScript/$currentPres/$prev\" style=\"text-decoration: none; color: $slide->navcolor;\">".markup_text($this->prevTitle)."</a></div>";
@@ -918,27 +924,11 @@ function _slide(&$slide) {
         }
         switch($pres->template) {
             default:
-            echo "<table border=0 width=\"100%\"><tr rowspan=2><td width=1>";
-            if(!empty($slide->logo1)) $logo1 = $slide->logo1;
-            else $logo1 = $pres->logo1;
-            if(!empty($slide->logoimage1url)) $logo1url = $slide->logoimage1url;
-            else $logo1url = $pres->logoimage1url;                
-            if(!empty($logo1)) echo "<a href=\"$logo1url\"><img src=\"$logo1\" border=\"0\" align=\"left\"></a>\n";
-            echo "</td>\n";
             if ($pres->navbartopiclinks) {
                 echo "<td align=\"left\">";
                 if($this->prevTitle) echo "<a href=\"http://$_SERVER[HTTP_HOST]$this->baseDir$this->showScript/$currentPres/$prev\" style=\"text-decoration: none;\"><font size=+2>Previous: ".markup_text($this->prevTitle)."</font></a></td>\n";
                 if($this->nextTitle) echo "<td align=\"right\"><a href=\"http://$_SERVER[HTTP_HOST]$this->baseDir$this->showScript/$currentPres/$next\" style=\"text-decoration: none;\"><font size=+2>Next: ".markup_text($this->nextTitle)."</font></a></td>";
             }
-            echo "<td rowspan=2 width=1>";
-            if(!empty($slide->logo2)) $logo2 = $slide->logo2;
-            else $logo2 = $pres->logo2;
-            if (!empty($logo2)) {
-                echo "<img src=\"$logo2\" align=\"right\">\n";
-            }
-            echo "</td>\n";
-            echo "<tr><th colspan=3 align=\"center\"><font size=+4>".markup_text($slide->title)."</font></th></table>\n";
-
             break;
         }
 
@@ -1170,7 +1160,7 @@ function _slide(&$slide) {
         list($dx,$dy) = getFlashDimensions($slide->titleFont,$slide->title,flash_fixsize($slide->titleSize));
         $dx = $this->winW;  // full width
 ?>
-<div align="<?php echo $slide->titleAlign?>" class="sticky" id="stickyBar">
+<div align="<?php echo $slide->titleAlign?>">
 <embed src="<?php echo $this->baseDir?>flash.php/<?php echo time()?>?type=title&dy=<?php echo $dy?>&dx=<?php echo $dx?>&coid=<?php echo $this->coid?>" quality=high loop=false 
 pluginspage="http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash"
 type="application/x-shockwave-flash" width="<?php echo $dx?>" height="<?php echo $dy?>">
diff --git a/favicon.ico b/favicon.ico
deleted file mode 100644
index f095b7f..0000000
Binary files a/favicon.ico and /dev/null differ
diff --git a/index.php b/index.php
index cd92032..6ca79f3 100644
--- a/index.php
+++ b/index.php
@@ -83,7 +83,7 @@
 	}
 	unset($pres);
 
-	// default options for the file..
+	// default options for the file.
 	$p = new XML_Presentation(fopen("index.xml", "rb"));
 	$p->setErrorHandling(PEAR_ERROR_TRIGGER, E_USER_WARNING);
 	$check = $p->parse();
@@ -92,42 +92,45 @@
 	}
 	$pres = $p->getObjects();   
 	$pres = $pres[1];
-?>
-<!doctype html>
-<html>
-<head>
-<base href="<?php echo "http://".htmlspecialchars($_SERVER['HTTP_HOST']).$baseDir?>">
-<meta charset="utf-8">
-<title>PHP Presents</title>
-<?php include "css.php"; ?>
+
+    $HEAD_RAND = <<<HEAD_RAND
+    
 <script>
 function change_mode() {
 	document.cookie="display_mode="+document.modes_form.modes.options[document.modes_form.modes.selectedIndex].value+"|"+document.modes_form.speaker.checked;
 	top.location=top.location.href;
 }
 </script>
-</head>
-<body>
-<?php
 
-	echo '<div id="stickyBar" class="sticky" align="center" style="width: 100%;"><div class="navbar">';
+<base href="http://%1">
 
-	$logo1 = $pres->logo1;
-	echo "<img src=\"$logo1\" align=\"left\" style=\"float: left;\">";
- 
-	$logo2 = $pres->logo2;
+HEAD_RAND;
 
-	if ($logo2) {
-		echo "<img src=\"$logo2\" align=\"right\" style=\"float: right;\">";
-	}
- 
-	echo "<div style=\"font-size: 3em; margin: 0 2.5em 0 0;\">".message('PRES2_TITLE')."</div>";
+    $HEAD_RAND = str_replace("%1", htmlspecialchars($_SERVER['HTTP_HOST']).$baseDir, $HEAD_RAND);
+
+    $TITLE = "Presentation System";
+
+    $CSS = array("/../css.css");
+
+    $SUBDOMAIN = "talks";
+
+    $LINKS = array(
+            array("href" => "https://php.net/downloads.php", "text" => "Downloads"),
+            array("href" => "https://php.net/docs.php", "text" => "Documentation"),
+            array("href" => "https://php.net/get-involved.php", "text" => "Get Involved"),
+            array("href" => "https://php.net/support.php", "text" => "Help")
+    );
+
+    include_once "shared/templates/header.inc";
+?>
+<section class="mainscreen">
+<?php
+    if(!empty($_SERVER['PATH_INFO'])) {
+      $topic = trim(substr(urldecode($_SERVER['PATH_INFO']),1));
+    }
+	echo "<h1>".message('PRES2_TITLE')."</h1>";
 
-	echo '</div></div>';
 ?>
-<br /><br /><br /><br /><br /><br />
-<div class="shadow" style="margin: 1em 4em 0.8em 3em;">
-<div class="output" style="font-size: 1.8em; margin: -0.5em 0 0 -0.5em;">
 <?php if(empty($topic)){ ?>
 <p><?php echo message('WELCOME_MSG'); ?></p>
 <?php 
@@ -139,10 +142,11 @@ function change_mode() {
 	}
 	$percent = (int)(100 / $topic_cols);
 	foreach($topics as $i => $topic) {
-		printf('<td width="%.1f%%" class="output" style="font-size: 1.8em; padding-bottom: 15px"><a href="' . $baseDir . 'index.php/%s">' . $i . '</a> (' . $topic['count'] . ')</td>'."\n", $percent, urlencode($i));
+		printf('<td width="%.1f%%" class="output" style="padding-bottom: 15px"><a href="' . $baseDir . 'index.php/%s">' . $i . '</a> (' . $topic['count'] . ')</td>'."\n", $percent, urlencode($i));
 		if (++$col >= $topic_cols) { 
 			$col=0; 
-			print("</tr>\n<tr>"); 
+			print("</tr>\n<tr>");
+            
 		}
 	}
 	print('</tr></table>');
@@ -154,52 +158,16 @@ function change_mode() {
 	$_SESSION['show_speaker_notes'] = ($form_speaker=='true');
 	$_SESSION['selected_display_mode'] = $display_mode;
 
-	// flags for extensions
-	if (!extension_loaded('ming')) {
-		$flag_ext_ming = false;
-	} else {
-		$flag_ext_ming = true;
-	}
-	if (!extension_loaded('pdf')) {
-		$flag_ext_pdf = false;
-	} else {
-		$flag_ext_pdf = true;
-	}
 
 ?>
 <form name="modes_form" action="<?php echo htmlspecialchars($_SERVER['PHP_SELF'])?>" method="POST">
-<p><?php echo message('SELECT_MODE'); ?>
-<select name="modes" onChange="change_mode()">
-<option value="html" <?php echo ($display_mode=='html')?'SELECTED':''?>><?php echo message('OPT_FANCYHTML'); ?></option>
-<option value="plainhtml" <?php echo ($display_mode=='plainhtml')?'SELECTED':''?>><?php echo message('OPT_PLAINHTML'); ?></option>
-	<?php if ($flag_ext_ming) { ?>
-<option value="flash" <?php echo ($display_mode=='flash')?'SELECTED':''?>><?php echo message('OPT_FLASH'); ?></option>
-	<?php } ?>
-	<?php if ($flag_ext_pdf) { ?>
-<option value="pdfus" <?php echo ($display_mode=='pdfus')?'SELECTED':''?>><?php echo message('OPT_PDFLETTER'); ?></option>
-<option value="pdfusl" <?php echo ($display_mode=='pdfusl')?'SELECTED':''?>><?php echo message('OPT_PDFLEGAL'); ?></option>
-<option value="pdfa4" <?php echo ($display_mode=='pdfa4')?'SELECTED':''?>><?php echo message('OPT_PDFA4'); ?></option>
-	<?php } ?>
-</select>
-<br />
 <?php echo message('SHOW_NOTES'); ?> <input type="checkbox" name="speaker" <?php echo ($form_speaker=='true')?'checked':''?> onChange="change_mode()">
 </p>
 </form>
 <?php
-switch($display_mode) {
-	case 'html':
-		if($jsKeyboard) {
-			echo "<p>".nl2br(message('HTML_KEYBOARD_CONTROLS'))."</p>\n";
-		} else {
-			echo "<p>".message('HTML_NO_KEYBOARD_CONTROLS')."</p>\n";
-			break;
-		}
-		break;
 
-	case 'flash':
-		echo "<p>".nl2br(message('FLASH_KEYBOARD_CONTROLS'))."</p>\n";
-		break;
-}
+echo "<p>".nl2br(message('HTML_KEYBOARD_CONTROLS'))."</p>\n";
+
 ?>
 <p><?php echo message('FONT_SIZES'); ?></p>
 <p><?php echo message('AVAILABLE_PRESENTATIONS'); ?></p>
@@ -232,10 +200,12 @@ function cmp($a,$b) {
 echo '</table>';
 }
 ?>
-</div>
-</div>
-</body>
-</html>
+    <br />
+</section>
+
+<?php include('shared/templates/footer.inc'); ?>
+
+
 <?php
 /*
  * Local variables:
diff --git a/objects.php b/objects.php
index 12af78a..5df5870 100644
--- a/objects.php
+++ b/objects.php
@@ -152,7 +152,7 @@ function __construct() {
 			$this->examplebackground = '#dcdcdc';
 			$this->outputbackground = '#eeee33';
 			$this->shadowbackground = '#777777';
-			$this->stylesheet = 'css.php';
+			$this->stylesheet = 'css.css';
 			$this->logoimage1url = 'http://' . $_SERVER['HTTP_HOST'] . $baseDir;
 			$this->animate=false;
 		}
diff --git a/presentations/foo.xml b/presentations/foo.xml
index 8907cef..64d3917 100644
--- a/presentations/foo.xml
+++ b/presentations/foo.xml
@@ -1,5 +1,5 @@
 <presentation>
-    <topic>PHP</topic>
+    <topic>PHP is so cool it even is bigger then this site. Coolest category WEEEEEEE</topic>
     <title>Introduction to PHP</title>
     <event>Conference for SuperCool Presentations</event>
     <location>Copenhagen</location>
diff --git a/presentations/foo3.xml b/presentations/foo3.xml
new file mode 100644
index 0000000..061232f
--- /dev/null
+++ b/presentations/foo3.xml
@@ -0,0 +1,14 @@
+<presentation>
+    <topic>PHP8</topic>
+    <title>Introduction to PHP</title>
+    <event>Conference for SuperCool Presentations</event>
+    <location>Copenhagen</location>
+    <date>November 22, 2002</date>
+    <speaker>Joe Speaker</speaker>
+    <email>[email protected]</email>
+    <url>http://www.example.com/show.php/foo</url>
+
+    <slide>slides/foo/titlepage.xml</slide>
+    <slide>slides/foo/intro.xml</slide>
+    <slide>slides/foo/demo.xml</slide>
+</presentation>
\ No newline at end of file
diff --git a/presentations/foo4.xml b/presentations/foo4.xml
new file mode 100644
index 0000000..53f99d5
--- /dev/null
+++ b/presentations/foo4.xml
@@ -0,0 +1,14 @@
+<presentation>
+    <topic>PHP9 (WHEN?)</topic>
+    <title>Introduction to PHP</title>
+    <event>Conference for SuperCool Presentations</event>
+    <location>Copenhagen</location>
+    <date>November 22, 2002</date>
+    <speaker>Joe Speaker</speaker>
+    <email>[email protected]</email>
+    <url>http://www.example.com/show.php/foo</url>
+
+    <slide>slides/foo/titlepage.xml</slide>
+    <slide>slides/foo/intro.xml</slide>
+    <slide>slides/foo/demo.xml</slide>
+</presentation>
\ No newline at end of file
diff --git a/presentations/foo5.xml b/presentations/foo5.xml
new file mode 100644
index 0000000..1716b11
--- /dev/null
+++ b/presentations/foo5.xml
@@ -0,0 +1,14 @@
+<presentation>
+    <topic>PHP8.1</topic>
+    <title>Introduction to PHP</title>
+    <event>Conference for SuperCool Presentations</event>
+    <location>Copenhagen</location>
+    <date>November 22, 2002</date>
+    <speaker>Joe Speaker</speaker>
+    <email>[email protected]</email>
+    <url>http://www.example.com/show.php/foo</url>
+
+    <slide>slides/foo/titlepage.xml</slide>
+    <slide>slides/foo/intro.xml</slide>
+    <slide>slides/foo/demo.xml</slide>
+</presentation>
\ No newline at end of file
diff --git a/presentations/foo6.xml b/presentations/foo6.xml
new file mode 100644
index 0000000..8923c8a
--- /dev/null
+++ b/presentations/foo6.xml
@@ -0,0 +1,14 @@
+<presentation>
+    <topic>PHP8.2</topic>
+    <title>Introduction to PHP</title>
+    <event>Conference for SuperCool Presentations</event>
+    <location>Copenhagen</location>
+    <date>November 22, 2002</date>
+    <speaker>Joe Speaker</speaker>
+    <email>[email protected]</email>
+    <url>http://www.example.com/show.php/foo</url>
+
+    <slide>slides/foo/titlepage.xml</slide>
+    <slide>slides/foo/intro.xml</slide>
+    <slide>slides/foo/demo.xml</slide>
+</presentation>
\ No newline at end of file
diff --git a/presentations/foo7.xml b/presentations/foo7.xml
new file mode 100644
index 0000000..b08de3b
--- /dev/null
+++ b/presentations/foo7.xml
@@ -0,0 +1,14 @@
+<presentation>
+    <topic>PHP.net</topic>
+    <title>Introduction to PHP</title>
+    <event>Conference for SuperCool Presentations</event>
+    <location>Copenhagen</location>
+    <date>November 22, 2002</date>
+    <speaker>Joe Speaker</speaker>
+    <email>[email protected]</email>
+    <url>http://www.example.com/show.php/foo</url>
+
+    <slide>slides/foo/titlepage.xml</slide>
+    <slide>slides/foo/intro.xml</slide>
+    <slide>slides/foo/demo.xml</slide>
+</presentation>
\ No newline at end of file
diff --git a/shared b/shared
new file mode 160000
index 0000000..823d5fc
--- /dev/null
+++ b/shared
@@ -0,0 +1 @@
+Subproject commit 823d5fc73d01cd32ea85e20a48ce0f749d0700e1
diff --git a/show.php b/show.php
index 3a857f9..57c54e6 100644
--- a/show.php
+++ b/show.php
@@ -58,11 +58,9 @@
 	$pres = $p->getObjects();
 	$pres = $pres[1];
 
-	// Set display: html, plainhtml, pdfus, etc.
+	// Set display mode
 	if (!isset($navmode)) {
-		if (isset($_SESSION['selected_display_mode'])) { 
-			$navmode = $_SESSION['selected_display_mode'];
-		} elseif (isset($pres->navmode)) { 
+		if (isset($pres->navmode)) {
 			$navmode = $pres->navmode;
 		}	else { 
 			$navmode = 'html';
diff --git a/slidelist.php b/slidelist.php
index f4a055b..cbd784d 100644
--- a/slidelist.php
+++ b/slidelist.php
@@ -7,6 +7,7 @@
 ?>
 <html><title>Slide Listing</title>
 <head>
+<meta charset="utf-8">
 <script language="JavaScript1.2">
 <!--
 function slide(url){