index.php 8.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293
  1. <?php
  2. define('N',"\n");
  3. $instpath='/mastostart';
  4. $path=preg_replace('/^'.preg_quote($instpath,'/').'/','',$_SERVER['REQUEST_URI']);
  5. $ndir=preg_match_all('/\//',$path)-1;
  6. $prepath='';
  7. for ($i=0; $i<$ndir; $i++)
  8. $prepath.='../';
  9. $menu=array(
  10. 'guide'=>array('liadd'=>null, 'href'=>$instpath.'/', 'title'=>'Guide', 'selected'=>false, 'submenu'=>null),
  11. 'instances'=>array('liadd'=>null, 'href'=>$instpath.'/instances', 'title'=>'Instances', 'selected'=>false, 'submenu'=>null),
  12. 'about'=>array('liadd'=>null, 'href'=>$instpath.'/about', 'title'=>'About', 'selected'=>false, 'submenu'=>null),
  13. 'language'=>array('liadd'=>null, 'href'=>null, 'title'=>'Language', 'selected'=>false, 'submenu'=>array(
  14. 'inglese'=>array('liadd'=>'onclick="golang(\'en\')" onmouseover="this.style.cursor=\'pointer\'"', 'href'=>null, 'title'=>'English', 'selected'=>false, 'submenu'=>null),
  15. 'italiano'=>array('liadd'=>'onclick="golang(\'it\')" onmouseover="this.style.cursor=\'pointer\'"', 'href'=>null, 'title'=>'Italiano', 'selected'=>false, 'submenu'=>null),
  16. 'francese'=>array('liadd'=>'onclick="golang(\'fr\')" onmouseover="this.style.cursor=\'pointer\'"', 'href'=>null, 'title'=>'Français', 'selected'=>false, 'submenu'=>null)
  17. )
  18. )
  19. );
  20. function tradmenu($lang) {
  21. global $menu;
  22. switch ($lang) {
  23. case 'it':
  24. $menu['guide']['title']='Guida';
  25. $menu['guide']['href'].='it';
  26. $menu['instances']['title']='Istanze';
  27. $menu['instances']['href'].='/it';
  28. $menu['about']['title']='Info';
  29. $menu['about']['href'].='/it';
  30. $menu['language']['title']='Lingua';
  31. break;
  32. case 'fr':
  33. $menu['guide']['title']='Guide';
  34. $menu['guide']['href'].='it';
  35. $menu['instances']['title']='Instances';
  36. $menu['instances']['href'].='/fr';
  37. $menu['about']['title']='Infos';
  38. $menu['about']['href'].='/fr';
  39. $menu['language']['title']='Langue';
  40. break;
  41. }
  42. }
  43. switch($path) {
  44. case '/':
  45. $cont=array(
  46. 'fp'=>'home_en.php',
  47. 'lang'=>'en',
  48. 'atit'=>' - Guide',
  49. 'desc'=>'A thorough introduction to Mastodon',
  50. 'js'=>array('shsum','guideanchors','scrolltrack')
  51. );
  52. $menu['guide']['liadd']='onclick="shsum()" onmouseover="this.style.cursor=\'pointer\'; this.style.textDecoration=\'underline\'" onmouseout="this.style.textDecoration=\'none\'"';
  53. $menu['guide']['href']=null;
  54. $menu['guide']['selected']=true;
  55. $menu['language']['submenu']['inglese']['liadd']=null;
  56. $menu['language']['submenu']['inglese']['selected']=true;
  57. break;
  58. case '/it':
  59. $cont=array(
  60. 'fp'=>'home_it.php',
  61. 'lang'=>'it',
  62. 'atit'=>' - Guida',
  63. 'desc'=>'Una approfondita introduzione a Mastodon',
  64. 'js'=>array('shsum','guideanchors','scrolltrack')
  65. );
  66. tradmenu('it');
  67. $menu['guide']['liadd']='onclick="shsum()" onmouseover="this.style.cursor=\'pointer\'"';
  68. $menu['guide']['href']=null;
  69. $menu['guide']['selected']=true;
  70. $menu['language']['submenu']['italiano']['liadd']=null;
  71. $menu['language']['submenu']['italiano']['selected']=true;
  72. break;
  73. case '/fr':
  74. $cont=array(
  75. 'fp'=>'home_fr.php',
  76. 'lang'=>'fr',
  77. 'atit'=>' - Guide',
  78. 'desc'=>'Una approfondita introduzione a Mastodon', //needs translation
  79. 'js'=>array('shsum','guideanchors','scrolltrack')
  80. );
  81. tradmenu('fr');
  82. $menu['guide']['liadd']='onclick="shsum()" onmouseover="this.style.cursor=\'pointer\'"';
  83. $menu['guide']['href']=null;
  84. $menu['guide']['selected']=true;
  85. $menu['language']['submenu']['francese']['liadd']=null;
  86. $menu['language']['submenu']['francese']['selected']=true;
  87. break;
  88. case '/instances':
  89. $cont=array(
  90. 'fp'=>'instances_en.php',
  91. 'lang'=>'en',
  92. 'atit'=>' - Instances',
  93. 'desc'=>'Recommended Mastodon Instances',
  94. 'js'=>array()
  95. );
  96. $menu['instances']['href']=null;
  97. $menu['instances']['selected']=true;
  98. $menu['language']['submenu']['inglese']['liadd']=null;
  99. $menu['language']['submenu']['inglese']['selected']=true;
  100. break;
  101. case '/instances/it':
  102. $cont=array(
  103. 'fp'=>'instances_it.php',
  104. 'lang'=>'it',
  105. 'atit'=>' - Istanze',
  106. 'desc'=>'Istanze Mastodon consigliate',
  107. 'js'=>array()
  108. );
  109. tradmenu('it');
  110. $menu['instances']['href']=null;
  111. $menu['instances']['selected']=true;
  112. $menu['language']['submenu']['italiano']['liadd']=null;
  113. $menu['language']['submenu']['italiano']['selected']=true;
  114. break;
  115. case '/instances/fr':
  116. $cont=array(
  117. 'fp'=>'instances_fr.php',
  118. 'lang'=>'fr',
  119. 'atit'=>' - Instances',
  120. 'desc'=>'Istanze Mastodon consigliate', // needs translation
  121. 'js'=>array()
  122. );
  123. tradmenu('fr');
  124. $menu['instances']['href']=null;
  125. $menu['instances']['selected']=true;
  126. $menu['language']['submenu']['francese']['liadd']=null;
  127. $menu['language']['submenu']['francese']['selected']=true;
  128. break;
  129. case '/about':
  130. $cont=array(
  131. 'fp'=>'about_en.php',
  132. 'lang'=>'en',
  133. 'atit'=>' - About us',
  134. 'desc'=>'Infos about Mastodon Startpage’s authors, contributors, license',
  135. 'js'=>array()
  136. );
  137. $menu['about']['href']=null;
  138. $menu['about']['selected']=true;
  139. $menu['language']['submenu']['inglese']['liadd']=null;
  140. $menu['language']['submenu']['inglese']['selected']=true;
  141. break;
  142. case '/about/it':
  143. $cont=array(
  144. 'fp'=>'about_it.php',
  145. 'lang'=>'it',
  146. 'atit'=>' - Info',
  147. 'desc'=>'Informazioni sugli autori, i collaboratori e la licenza di Mastodon Startpage',
  148. 'js'=>array()
  149. );
  150. tradmenu('it');
  151. $menu['about']['href']=null;
  152. $menu['about']['selected']=true;
  153. $menu['language']['submenu']['italiano']['liadd']=null;
  154. $menu['language']['submenu']['italiano']['selected']=true;
  155. break;
  156. case '/about/fr':
  157. $cont=array(
  158. 'fp'=>'about_fr.php',
  159. 'lang'=>'fr',
  160. 'atit'=>' - Infos',
  161. 'desc'=>'Informazioni sugli autori, i collaboratori e la licenza di Mastodon Startpage', // needs translation
  162. 'js'=>array()
  163. );
  164. tradmenu('fr');
  165. $menu['about']['href']=null;
  166. $menu['about']['selected']=true;
  167. $menu['language']['submenu']['francese']['liadd']=null;
  168. $menu['language']['submenu']['francese']['selected']=true;
  169. break;
  170. default:
  171. $cont=array(
  172. 'fp'=>'404.php',
  173. 'lang'=>'en',
  174. 'atit'=>' - 404',
  175. 'desc'=>'Page not found',
  176. 'js'=>array()
  177. );
  178. break;
  179. }
  180. /*
  181. <li><a href="<?php echo($instpath); ?>">Guide</a></li>
  182. <li><a href="instances">Instances</a></li>
  183. <li><a href="about">About us</a></li>
  184. <li onmouseover="chulsh(this,true)" onmouseout="chulsh(this,false)">Language
  185. <ul class="ula" onmouseover="ulsh(this,true)" onmouseout="ulsh(this,false)">
  186. <li><a href="#">English</a></li>
  187. <li><a href="#">Italiano</a></li>
  188. </ul>
  189. </li>
  190. */
  191. $menuout='';
  192. function buildmenu($menu) {
  193. global $menuout;
  194. foreach ($menu as $key=>$arr) {
  195. $menuout.='<li';
  196. if (!is_null($arr['liadd'])) $menuout.=' '.$arr['liadd'];
  197. if (!is_null($arr['submenu'])) $menuout.=' onmouseover="chulsh(this,true)" onmouseout="chulsh(this,false)"';
  198. if ($arr['selected']) $menuout.=' class="hil"';
  199. $menuout.='>';
  200. if (!is_null($arr['href']))
  201. $menuout.='<a href="'.$arr['href'].'">'.$arr['title'].'</a>';
  202. else
  203. $menuout.=$arr['title'];
  204. if (!is_null($arr['submenu'])) {
  205. // qui bisognerebbe aggiungere che a seconda del "livello" imposta class giusta: ula, oppure ulb per livello > 1
  206. $menuout.=N.'<ul class="ula" onmouseover="ulsh(this,true)" onmouseout="ulsh(this,false)">'.N;
  207. buildmenu($arr['submenu']);
  208. $menuout.='</ul>'.N;
  209. }
  210. $menuout.='</li>'.N;
  211. }
  212. }
  213. buildmenu($menu);
  214. //echo(htmlentities($menuout));
  215. $cjrand=rand(0,999999);
  216. ?>
  217. <!DOCTYPE HTML>
  218. <html lang="<?php echo($cont['lang']); ?>">
  219. <head>
  220. <title>Mastodon Startpage<?php echo($cont['atit']); ?></title>
  221. <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  222. <meta name="description" content="<?php echo($cont['desc']); ?>">
  223. <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
  224. <link rel="icon" type="image/png" href="<?php echo($prepath); ?>imgs/icona-32.png" sizes="32x32">
  225. <link rel="icon" type="image/png" href="<?php echo($prepath); ?>imgs/icona-192.png" sizes="192x192">
  226. <link rel="icon" type="image/png" href="<?php echo($prepath); ?>imgs/icona-512.png" sizes="512x512">
  227. <link rel="apple-touch-icon-precomposed" href="<?php echo($prepath); ?>imgs/icona-180.png">
  228. <link rel="stylesheet" type="text/css" href="<?php echo($prepath); ?>theme.css?v=<?php echo($cjrand); ?>">
  229. <?php
  230. foreach ($cont['js'] as $val)
  231. echo('<script language="JavaScript" src="js/'.$val.'.js?v='.$cjrand.'"></script>'.N);
  232. ?>
  233. <script language="JavaScript">
  234. <!--
  235. function chulsh(el,sh) {
  236. if (sh)
  237. el.querySelector('ul').style='display:block';
  238. else
  239. el.querySelector('ul').style='display:none';
  240. }
  241. function ulsh(el,sh) {
  242. if (sh)
  243. el.style='display:block';
  244. else
  245. el.style='display:none';
  246. }
  247. function golang(lang) {
  248. var loc=document.location.href;
  249. loc=loc.replace(/#.*$/,'');
  250. loc=loc.replace(/\/$/,'');
  251. if (document.documentElement.lang=='en') {
  252. if (lang!='en')
  253. document.location.href=loc+'/'+lang;
  254. } else {
  255. if (lang!='en')
  256. document.location.href=loc.substr(0,loc.length-3)+'/'+lang;
  257. else
  258. document.location.href=loc.substr(0,loc.length-3);
  259. }
  260. }
  261. //-->
  262. </script>
  263. </head>
  264. <?php
  265. require($cont['fp']);
  266. ?>
  267. </html>