index.php 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404
  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. 'catalano'=>array('liadd'=>'onclick="golang(\'ca\')" onmouseover="this.style.cursor=\'pointer\'"', 'href'=>null, 'title'=>'Català', 'selected'=>false, 'submenu'=>null),
  15. 'inglese'=>array('liadd'=>'onclick="golang(\'en\')" onmouseover="this.style.cursor=\'pointer\'"', 'href'=>null, 'title'=>'English', 'selected'=>false, 'submenu'=>null),
  16. 'spagnolo'=>array('liadd'=>'onclick="golang(\'es\')" onmouseover="this.style.cursor=\'pointer\'"', 'href'=>null, 'title'=>'Español', 'selected'=>false, 'submenu'=>null),
  17. 'francese'=>array('liadd'=>'onclick="golang(\'fr\')" onmouseover="this.style.cursor=\'pointer\'"', 'href'=>null, 'title'=>'Français', 'selected'=>false, 'submenu'=>null),
  18. 'italiano'=>array('liadd'=>'onclick="golang(\'it\')" onmouseover="this.style.cursor=\'pointer\'"', 'href'=>null, 'title'=>'Italiano', 'selected'=>false, 'submenu'=>null)
  19. )
  20. )
  21. );
  22. function tradmenu($lang) {
  23. global $menu;
  24. switch ($lang) {
  25. case 'ca':
  26. $menu['guide']['title']='Guia';
  27. $menu['guide']['href'].='ca';
  28. $menu['instances']['title']='Instàncies';
  29. $menu['instances']['href'].='/ca';
  30. $menu['about']['title']='Info';
  31. $menu['about']['href'].='/ca';
  32. $menu['language']['title']='Idioma';
  33. break;
  34. case 'es':
  35. $menu['guide']['title']='Guía';
  36. $menu['guide']['href'].='es';
  37. $menu['instances']['title']='Instancias';
  38. $menu['instances']['href'].='/es';
  39. $menu['about']['title']='Info';
  40. $menu['about']['href'].='/es';
  41. $menu['language']['title']='Idioma';
  42. break;
  43. case 'fr':
  44. $menu['guide']['title']='Guide';
  45. $menu['guide']['href'].='fr';
  46. $menu['instances']['title']='Instances';
  47. $menu['instances']['href'].='/fr';
  48. $menu['about']['title']='Infos';
  49. $menu['about']['href'].='/fr';
  50. $menu['language']['title']='Langue';
  51. break;
  52. case 'it':
  53. $menu['guide']['title']='Guida';
  54. $menu['guide']['href'].='it';
  55. $menu['instances']['title']='Istanze';
  56. $menu['instances']['href'].='/it';
  57. $menu['about']['title']='Info';
  58. $menu['about']['href'].='/it';
  59. $menu['language']['title']='Lingua';
  60. break;
  61. }
  62. }
  63. switch($path) {
  64. case '/':
  65. $cont=array(
  66. 'fp'=>'home_en.php',
  67. 'lang'=>'en',
  68. 'atit'=>' - Guide',
  69. 'desc'=>'A thorough introduction to Mastodon',
  70. 'js'=>array('shsum','guideanchors','scrolltrack')
  71. );
  72. $menu['guide']['liadd']='onclick="shsum()" onmouseover="this.style.cursor=\'pointer\'; this.style.textDecoration=\'underline\'" onmouseout="this.style.textDecoration=\'none\'"';
  73. $menu['guide']['href']=null;
  74. $menu['guide']['selected']=true;
  75. $menu['language']['submenu']['inglese']['liadd']=null;
  76. $menu['language']['submenu']['inglese']['selected']=true;
  77. break;
  78. case '/it':
  79. $cont=array(
  80. 'fp'=>'home_it.php',
  81. 'lang'=>'it',
  82. 'atit'=>' - Guida',
  83. 'desc'=>'Una approfondita introduzione a Mastodon',
  84. 'js'=>array('shsum','guideanchors','scrolltrack')
  85. );
  86. tradmenu('it');
  87. $menu['guide']['liadd']='onclick="shsum()" onmouseover="this.style.cursor=\'pointer\'"';
  88. $menu['guide']['href']=null;
  89. $menu['guide']['selected']=true;
  90. $menu['language']['submenu']['italiano']['liadd']=null;
  91. $menu['language']['submenu']['italiano']['selected']=true;
  92. break;
  93. case '/fr':
  94. $cont=array(
  95. 'fp'=>'home_fr.php',
  96. 'lang'=>'fr',
  97. 'atit'=>' - Guide',
  98. 'desc'=>'A thorough introduction to Mastodon', //needs translation
  99. 'js'=>array('shsum','guideanchors','scrolltrack')
  100. );
  101. tradmenu('fr');
  102. $menu['guide']['liadd']='onclick="shsum()" onmouseover="this.style.cursor=\'pointer\'"';
  103. $menu['guide']['href']=null;
  104. $menu['guide']['selected']=true;
  105. $menu['language']['submenu']['francese']['liadd']=null;
  106. $menu['language']['submenu']['francese']['selected']=true;
  107. break;
  108. case '/es':
  109. $cont=array(
  110. 'fp'=>'home_es.php',
  111. 'lang'=>'es',
  112. 'atit'=>' - Guía',
  113. 'desc'=>'A thorough introduction to Mastodon', //needs translation
  114. 'js'=>array('shsum','guideanchors','scrolltrack')
  115. );
  116. tradmenu('es');
  117. $menu['guide']['liadd']='onclick="shsum()" onmouseover="this.style.cursor=\'pointer\'"';
  118. $menu['guide']['href']=null;
  119. $menu['guide']['selected']=true;
  120. $menu['language']['submenu']['spagnolo']['liadd']=null;
  121. $menu['language']['submenu']['spagnolo']['selected']=true;
  122. break;
  123. case '/ca':
  124. $cont=array(
  125. 'fp'=>'home_ca.php',
  126. 'lang'=>'ca',
  127. 'atit'=>' - Guia',
  128. 'desc'=>'A thorough introduction to Mastodon', //needs translation
  129. 'js'=>array('shsum','guideanchors','scrolltrack')
  130. );
  131. tradmenu('ca');
  132. $menu['guide']['liadd']='onclick="shsum()" onmouseover="this.style.cursor=\'pointer\'"';
  133. $menu['guide']['href']=null;
  134. $menu['guide']['selected']=true;
  135. $menu['language']['submenu']['catalano']['liadd']=null;
  136. $menu['language']['submenu']['catalano']['selected']=true;
  137. break;
  138. case '/instances':
  139. $cont=array(
  140. 'fp'=>'instances_en.php',
  141. 'lang'=>'en',
  142. 'atit'=>' - Instances',
  143. 'desc'=>'Recommended Mastodon Instances',
  144. 'js'=>array()
  145. );
  146. $menu['instances']['href']=null;
  147. $menu['instances']['selected']=true;
  148. $menu['language']['submenu']['inglese']['liadd']=null;
  149. $menu['language']['submenu']['inglese']['selected']=true;
  150. break;
  151. case '/instances/it':
  152. $cont=array(
  153. 'fp'=>'instances_it.php',
  154. 'lang'=>'it',
  155. 'atit'=>' - Istanze',
  156. 'desc'=>'Istanze Mastodon consigliate',
  157. 'js'=>array()
  158. );
  159. tradmenu('it');
  160. $menu['instances']['href']=null;
  161. $menu['instances']['selected']=true;
  162. $menu['language']['submenu']['italiano']['liadd']=null;
  163. $menu['language']['submenu']['italiano']['selected']=true;
  164. break;
  165. case '/instances/fr':
  166. $cont=array(
  167. 'fp'=>'instances_fr.php',
  168. 'lang'=>'fr',
  169. 'atit'=>' - Instances',
  170. 'desc'=>'Recommended Mastodon Instances', // needs translation
  171. 'js'=>array()
  172. );
  173. tradmenu('fr');
  174. $menu['instances']['href']=null;
  175. $menu['instances']['selected']=true;
  176. $menu['language']['submenu']['francese']['liadd']=null;
  177. $menu['language']['submenu']['francese']['selected']=true;
  178. break;
  179. case '/instances/es':
  180. $cont=array(
  181. 'fp'=>'instances_es.php',
  182. 'lang'=>'es',
  183. 'atit'=>' - Instancias',
  184. 'desc'=>'Recommended Mastodon Instances', // needs translation
  185. 'js'=>array()
  186. );
  187. tradmenu('es');
  188. $menu['instances']['href']=null;
  189. $menu['instances']['selected']=true;
  190. $menu['language']['submenu']['spagnolo']['liadd']=null;
  191. $menu['language']['submenu']['spagnolo']['selected']=true;
  192. break;
  193. case '/instances/ca':
  194. $cont=array(
  195. 'fp'=>'instances_ca.php',
  196. 'lang'=>'ca',
  197. 'atit'=>' - Instàncies',
  198. 'desc'=>'Recommended Mastodon Instances', // needs translation
  199. 'js'=>array()
  200. );
  201. tradmenu('ca');
  202. $menu['instances']['href']=null;
  203. $menu['instances']['selected']=true;
  204. $menu['language']['submenu']['catalano']['liadd']=null;
  205. $menu['language']['submenu']['catalano']['selected']=true;
  206. break;
  207. case '/about':
  208. $cont=array(
  209. 'fp'=>'about_en.php',
  210. 'lang'=>'en',
  211. 'atit'=>' - About us',
  212. 'desc'=>'Infos about Mastodon Startpage’s authors, contributors, license',
  213. 'js'=>array()
  214. );
  215. $menu['about']['href']=null;
  216. $menu['about']['selected']=true;
  217. $menu['language']['submenu']['inglese']['liadd']=null;
  218. $menu['language']['submenu']['inglese']['selected']=true;
  219. break;
  220. case '/about/it':
  221. $cont=array(
  222. 'fp'=>'about_it.php',
  223. 'lang'=>'it',
  224. 'atit'=>' - Info',
  225. 'desc'=>'Informazioni sugli autori, i collaboratori e la licenza di Mastodon Startpage',
  226. 'js'=>array()
  227. );
  228. tradmenu('it');
  229. $menu['about']['href']=null;
  230. $menu['about']['selected']=true;
  231. $menu['language']['submenu']['italiano']['liadd']=null;
  232. $menu['language']['submenu']['italiano']['selected']=true;
  233. break;
  234. case '/about/fr':
  235. $cont=array(
  236. 'fp'=>'about_fr.php',
  237. 'lang'=>'fr',
  238. 'atit'=>' - Infos',
  239. 'desc'=>'Infos about Mastodon Startpage’s authors, contributors, license', // needs translation
  240. 'js'=>array()
  241. );
  242. tradmenu('fr');
  243. $menu['about']['href']=null;
  244. $menu['about']['selected']=true;
  245. $menu['language']['submenu']['francese']['liadd']=null;
  246. $menu['language']['submenu']['francese']['selected']=true;
  247. break;
  248. case '/about/es':
  249. $cont=array(
  250. 'fp'=>'about_es.php',
  251. 'lang'=>'es',
  252. 'atit'=>' - Infos',
  253. 'desc'=>'Infos about Mastodon Startpage’s authors, contributors, license', // needs translation
  254. 'js'=>array()
  255. );
  256. tradmenu('es');
  257. $menu['about']['href']=null;
  258. $menu['about']['selected']=true;
  259. $menu['language']['submenu']['spagnolo']['liadd']=null;
  260. $menu['language']['submenu']['spagnolo']['selected']=true;
  261. break;
  262. case '/about/ca':
  263. $cont=array(
  264. 'fp'=>'about_ca.php',
  265. 'lang'=>'ca',
  266. 'atit'=>' - Info',
  267. 'desc'=>'Infos about Mastodon Startpage’s authors, contributors, license', // needs translation
  268. 'js'=>array()
  269. );
  270. tradmenu('ca');
  271. $menu['about']['href']=null;
  272. $menu['about']['selected']=true;
  273. $menu['language']['submenu']['catalano']['liadd']=null;
  274. $menu['language']['submenu']['catalano']['selected']=true;
  275. break;
  276. default:
  277. $cont=array(
  278. 'fp'=>'404.php',
  279. 'lang'=>'en',
  280. 'atit'=>' - 404',
  281. 'desc'=>'Page not found',
  282. 'js'=>array()
  283. );
  284. break;
  285. }
  286. /*
  287. <li><a href="<?php echo($instpath); ?>">Guide</a></li>
  288. <li><a href="instances">Instances</a></li>
  289. <li><a href="about">About us</a></li>
  290. <li onmouseover="chulsh(this,true)" onmouseout="chulsh(this,false)">Language
  291. <ul class="ula" onmouseover="ulsh(this,true)" onmouseout="ulsh(this,false)">
  292. <li><a href="#">English</a></li>
  293. <li><a href="#">Italiano</a></li>
  294. </ul>
  295. </li>
  296. */
  297. $menuout='';
  298. function buildmenu($menu) {
  299. global $menuout;
  300. foreach ($menu as $key=>$arr) {
  301. $menuout.='<li';
  302. if (!is_null($arr['liadd'])) $menuout.=' '.$arr['liadd'];
  303. if (!is_null($arr['submenu'])) $menuout.=' onmouseover="chulsh(this,true)" onmouseout="chulsh(this,false)"';
  304. if ($arr['selected']) $menuout.=' class="hil"';
  305. $menuout.='>';
  306. if (!is_null($arr['href']))
  307. $menuout.='<a href="'.$arr['href'].'">'.$arr['title'].'</a>';
  308. else
  309. $menuout.=$arr['title'];
  310. if (!is_null($arr['submenu'])) {
  311. // qui bisognerebbe aggiungere che a seconda del "livello" imposta class giusta: ula, oppure ulb per livello > 1
  312. $menuout.=N.'<ul class="ula" onmouseover="ulsh(this,true)" onmouseout="ulsh(this,false)">'.N;
  313. buildmenu($arr['submenu']);
  314. $menuout.='</ul>'.N;
  315. }
  316. $menuout.='</li>'.N;
  317. }
  318. }
  319. buildmenu($menu);
  320. //echo(htmlentities($menuout));
  321. $cjrand=rand(0,999999);
  322. ?>
  323. <!DOCTYPE HTML>
  324. <html lang="<?php echo($cont['lang']); ?>">
  325. <head>
  326. <title>Mastodon Startpage<?php echo($cont['atit']); ?></title>
  327. <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  328. <meta name="description" content="<?php echo($cont['desc']); ?>">
  329. <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
  330. <link rel="icon" type="image/png" href="<?php echo($prepath); ?>imgs/icona-32.png" sizes="32x32">
  331. <link rel="icon" type="image/png" href="<?php echo($prepath); ?>imgs/icona-192.png" sizes="192x192">
  332. <link rel="icon" type="image/png" href="<?php echo($prepath); ?>imgs/icona-512.png" sizes="512x512">
  333. <link rel="apple-touch-icon-precomposed" href="<?php echo($prepath); ?>imgs/icona-180.png">
  334. <link rel="stylesheet" type="text/css" href="<?php echo($prepath); ?>theme.css?v=<?php echo($cjrand); ?>">
  335. <?php
  336. foreach ($cont['js'] as $val)
  337. echo('<script language="JavaScript" src="js/'.$val.'.js?v='.$cjrand.'"></script>'.N);
  338. ?>
  339. <script language="JavaScript">
  340. <!--
  341. function chulsh(el,sh) {
  342. if (sh)
  343. el.querySelector('ul').style='display:block';
  344. else
  345. el.querySelector('ul').style='display:none';
  346. }
  347. function ulsh(el,sh) {
  348. if (sh)
  349. el.style='display:block';
  350. else
  351. el.style='display:none';
  352. }
  353. function golang(lang) {
  354. var loc=document.location.href;
  355. loc=loc.replace(/#.*$/,'');
  356. loc=loc.replace(/\/$/,'');
  357. if (document.documentElement.lang=='en') {
  358. if (lang!='en')
  359. document.location.href=loc+'/'+lang;
  360. } else {
  361. if (lang!='en')
  362. document.location.href=loc.substr(0,loc.length-3)+'/'+lang;
  363. else
  364. document.location.href=loc.substr(0,loc.length-3);
  365. }
  366. }
  367. //-->
  368. </script>
  369. </head>
  370. <?php
  371. require($cont['fp']);
  372. ?>
  373. </html>