104 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			PHP
		
	
	
	
			
		
		
	
	
			104 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			PHP
		
	
	
	
| <?php
 | |
| 
 | |
| // List here the supported languages :
 | |
| $otherlang=array( 
 | |
| 		 "fr" => "Français",
 | |
| 		 "en" => "English",
 | |
| 		  );
 | |
| $locales=array("fr" => "fr_FR.UTF-8",
 | |
| 	       "en" => "en_GB.UTF-8",
 | |
| 	       );
 | |
| 
 | |
| $uri=trim($_SERVER["REQUEST_URI"],"/");
 | |
| 
 | |
| // auto lang redirect:
 | |
| if (!$uri) {
 | |
|   $lang="en";
 | |
|   if (isset($_SERVER["HTTP_ACCEPT_LANGUAGE"])) {
 | |
|     $l=substr($_SERVER["HTTP_ACCEPT_LANGUAGE"],0,2);
 | |
|     if (isset($otherlang[$l])) {
 | |
|       $lang=$l;
 | |
|     }
 | |
|   }
 | |
|   header("Location: /Home-".$lang."");
 | |
|   exit();
 | |
| }
 | |
| 
 | |
| if (preg_match('#^(.*)-([^-]*)$#',$uri,$mat)) {
 | |
|   $lang=$mat[2]; 
 | |
|   $uri=$mat[1];
 | |
| }
 | |
| 
 | |
| if (!isset($otherlang[$lang])) {
 | |
|   header("HTTP/1.0 404 Not Found");
 | |
|   echo "<h1>Lang not supported</h1>";
 | |
|   exit();
 | |
| }
 | |
| 
 | |
| // set locales:
 | |
| putenv("LC_MESSAGES=".$locales[$lang]);
 | |
| putenv("LANG=".$locales[$lang]);
 | |
| putenv("LANGUAGE=".$locales[$lang]);
 | |
| // this locale MUST be selected in "dpkg-reconfigure locales"
 | |
| setlocale(LC_ALL,$locales[$lang]); 
 | |
| 
 | |
| unset($otherlang[$lang]);
 | |
| 
 | |
| header("Content-Type: text/html; charset=UTF-8");
 | |
| 
 | |
| if (!file_exists("../pages/".$uri."-".$lang.".md")) {
 | |
|   header("HTTP/1.0 404 Not Found");
 | |
|   echo "<h1>File not found</h1>";
 | |
|   exit();
 | |
| }
 | |
| 
 | |
| // automatic compilation / caching of HTML pages
 | |
| if (!file_exists("../pages/".$uri."-".$lang.".html") ||
 | |
|     filemtime("../pages/".$uri."-".$lang.".html") < filemtime("../pages/".$uri."-".$lang.".md") ) {
 | |
|   passthru("github-markup ".escapeshellarg("../pages/".$uri."-".$lang.".md")." >".escapeshellarg("../pages/".$uri."-".$lang.".html")." 2>&1");
 | |
| }
 | |
| 
 | |
| $f=fopen("../pages/".$uri."-".$lang.".html","rb");
 | |
| 
 | |
| $headings=array();
 | |
| $cur=array(); $id=""; $name="";
 | |
| $first=true;
 | |
| while ($s=fgets($f,1024)) {
 | |
|   if (preg_match('#<h1 id="([^"]*)">([^<]*)</h1>#',$s,$mat)) {
 | |
|     if ($first) { $title=$mat[2]; $first=false; }
 | |
|     if ($id) $headings[]=array("id"=>$id, "name"=>$name, "cur"=>$cur);
 | |
|     $id=$mat[1]; $name=$mat[2];
 | |
|     $cur=array();
 | |
|   }
 | |
|   if (preg_match('#<h2 id="([^"]*)">([^<]*)</h2>#',$s,$mat)) {
 | |
|     $cur[]=array("id"=>$mat[1], "name"=>$mat[2]);
 | |
|   }
 | |
| }
 | |
| if ($id) $headings[]=array("id"=>$id, "name"=>$name, "cur"=>$cur);
 | |
| 
 | |
| ob_start();
 | |
| foreach($headings as $v) {
 | |
| ?>                
 | |
|   <li>
 | |
|     <a href="#<?php echo $v["id"]; ?>"><?php echo $v["name"]; ?></a>
 | |
| <?php if (count($v["cur"])) { ?>
 | |
|   <ul class="nav">
 | |
|     <?php foreach($v["cur"] as $vv) { ?>
 | |
|     <li><a href="#<?php echo $vv["id"]; ?>"><?php echo $vv["name"]; ?></a></li>
 | |
|     <?php } ?>
 | |
|   </ul>
 | |
|   <?php } ?>
 | |
| </li>
 | |
| <?php
 | |
| }
 | |
|     $index=ob_get_clean();
 | |
| 
 | |
| // SPIT OUT THE PAGE:
 | |
| 
 | |
| require_once("head.php");
 | |
| 
 | |
| readfile("../pages/".$uri."-".$lang.".html");
 | |
| 
 | |
| require_once("foot.php");
 | |
| 
 |