<?phperror_reporting(E_ALL); // nastavení varování při laděnírequire_once('Common.php'); // Společné funkcerequire_once('TemplateEngine.php'); // Stroj pro práci s templejtyrequire_once('DirMetadata.php'); // Modul pro načítání informace o adresáříchdefine('DIRINFO', 'DirInfo.txt', true); // Jméno souboru s informacemi o adresářidefine('PRJINFO', 'PrjInfo.txt', true); // Jméno souboru s informacemi o projektudefine('WRAP', 70, true); // Lámání řetězcových hodnotdefine('TEMPLATEPATH', 'Templates', true); // relativní cesta k templejtům$TemplateFile = 'Modules.ihtml'; // přípona jazyka se doplní sama// Stavová informace// -----------------//// Tento skript používá pro přenesení stavu ke kliemtovi a zpět dvě stavové// proměnné prostřednictvím odkazu. Jsou to://// lang - zde je kód jazyka, neplatný či chybějící kód se mapuje na angličtinu//// path - zde se uvádí cesta vůči DOCUMENT_ROOT webu, neplatná cesta se mapuje// na cestu k root adresáři webu//// Vyzvedni si parametry z URL// ---------------------------// Parametr cesty z položky path// Načteme, ověříme a pokud je něco špatně vracíme root$Path = '';if (isset($_GET['path']))$Path = CheckWebPath($_GET['path']);if ($Path == '')$Path = '/';$Params['path'] = $Path;// Parametr jazyka z položky lang// Pozor, tento parametr se nekontroluje a musí se ošetřit až při použití// Předpokládá se, že neplatný jazyk se bude chovat jako angličtina$Lang = 'en';if (isset($_GET['lang']))$Lang = substr($_GET['lang'], 0, 2);$Params['lang'] = $Lang;// Proveď zpracování templejtu nahrazovacím strojem// ------------------------------------------------// Založ objekt templejtu$Template = new TemplateEngine();// Načti templejt do objektu$error = $Template->LoadTemplate(TEMPLATEPATH.'/'.$TemplateFile, $Params['lang']);if ($error!='')Error($error);// Generuj dynamický obsah do proměnnýchPowerFunction($Template, $Params);// Odešli výsledek klientoviecho $Template->GetPage();function PowerFunction($Template, $Params)// Tato funkce vykonává maso (generuje dynamický obsah stránky do podoby pole// proměnných. Toto pole se následně použije na modifikaci templejtu .{// Lokálně používané prametry pěkně při ruce$Path = $Params['path'];$Lang = $Params['lang'];// Zjisti informace o sekci (z prvního adresáře cesty)$SectionDirInfo = new DirMetadata();$SectionDirInfo->LoadDirInfo('/'.GetSection($Path).'/'.DIRINFO, $Lang);// Pokud cesta sahá do sekce, která nemá popis spadneme do rootuif(!$SectionDirInfo->GetValid()){$Params['path'] = '/';$Path = $Params['path'];}// Zjisti informace o aktuálním adresáři$ThisDirInfo = new DirMetadata();$ThisDirInfo->LoadDirInfo($Path.'/'.DIRINFO, $Lang);// HTML hlavička - doplň sekci$Template->SetVariable('InfoSection', GetSection($Path));// Zkopíruj informace z DIRINFO (z adresáře sekce a pak z aktuálního adresáře)// do proměnných templejtuforeach($SectionDirInfo->DirData as $Key => $Value){$Template->SetVariable($Key, $Value, WRAP);}foreach($ThisDirInfo->DirData as $Key => $Value){$Template->SetVariable($Key, $Value, WRAP);}// Klikací řádka s cestou$Template->SetVariable('InfoPath',CreateScriptLinkPath($Params, $Template->GetString('InfoPathTitle')));// Procházej adresář// -----------------// Odstraň lomítko u prázdné cesty aby se nezdvojovaloif ($Params['path']=='/')$Params['path'] = '';// Objekt pro načítání informací o adresářích a projektech$DirInfo = new DirMetadata();// Abych nešahal pořád do objektu, použiju proměnnou$Glue = $Template->GetVariable('InfoGlue');// Sem se střádá mezivýsledek// Zvlášť adresáře a projekty aby byly oddělené ve výsledku$LinesDir = ''; // Adresáře$LinesPrj = ''; // Projekty// Procházení adresářem$Dir = glob($_SERVER['DOCUMENT_ROOT'].$Path.'/*', GLOB_ONLYDIR);// Vezmi jen jméno adresáře a vytvoř asociativní pole s klíčiforeach ($Dir as $Key => $DirName){$DirName = basename($DirName);$NewDir[$DirName] = $DirName;}$Dir = $NewDir;unset($NewDir);// Setřídění adresářů podle preferovaného třídění ze [SortPreferences]$NewDir = array();$Sort = $ThisDirInfo->GetVariable('SortPreferences'); // vzorové tříděníif ($Sort!=''){$Sort = explode("\n", $Sort);// Najdi a přendej nalezené položkyforeach ($Sort as $Value){$Value = trim($Value);if (isset($Dir[$Value])){// Zařaď do nového pole$NewDir[] = $Value;// Vyhoď ze staréhounset($Dir[$Value]);}}// Přendej zbylé položkyforeach ($Dir as $Value){$NewDir[] = $Value;}$Dir = $NewDir;unset($NewDir);}// Zpracování položekforeach ($Dir as $DirName){// Načti informace o (každém) adresáři$DirInfoValid = $DirInfo->LoadDirInfo($Path.'/'.$DirName.'/'.DIRINFO, $Lang);// Pokud to není adresář, tak načti informace o projektuif (!$DirInfoValid){$ProjectInfoValid = $DirInfo->LoadDirInfo($Path.'/'.$DirName.'/'.PRJINFO, $Lang)or// Heuristika pro projekty, které ještě nemají popis$ProjectInfoValid = is_dir($_SERVER['DOCUMENT_ROOT'].$Path.'/'.$DirName.'/DOC')or$ProjectInfoValid = is_dir($_SERVER['DOCUMENT_ROOT'].$Path.'/'.$DirName.'/SCH');}// Zkontroluj, zda jsme v platné sekci// if ($Path!='' || $Valid)if ($DirInfoValid || $ProjectInfoValid){// Připrav si proměnnéunset($Variables);foreach($DirInfo->DirData as $Key => $Value){$Variables[$Key] = $DirInfo->GetString($Key, WRAP);}$Variables['InfoName'] =$DirInfoValid ? CreateScriptLink($Params, $DirName, $DirInfo->GetString('InfoLongDescription')): $DirName;$Variables['InfoPicture'] = CreatePicturesLink($Params['path'].'/'.$DirName, $Glue, 'Ilustrative Picture', TEMPLATEPATH.'/'.$Template->GetVariable('InfoNoPicture'));$Variables['InfoDescripion'] = $DirInfo->GetString('InfoShortDescription', WRAP);$Variables['InfoWebSVN'] = CreateSVNLink($Params['path'].'/'.$DirName, $Params['lang'], $Template->GetString('InfoSVNTitle'));if (!$DirInfoValid){$Variables['InfoWIKI'] = CreateWikiLink($DirName, $Params['lang'], $Template->GetString('InfoWikiTitle'));}$Variables['InfoHTML'] = CreateFilesLink($Params['path'].'/'.$DirName.'/DOC/HTML/*.[hH][tT][mM][lL]', $Glue);$Variables['InfoPDF'] = CreateFilesLink($Params['path'].'/'.$DirName.'/DOC/*.[pP][dD][fF]', $Glue);$Variables['InfoSCH'] = CreateFilesLink($Params['path'].'/'.$DirName.'/SCH/*.[pP][dD][fF]', $Glue);if($DirInfo->GetString('InfoBuyUST')!= ''){$Variables['InfoBuy'] = CreateLink($DirInfo->GetString('InfoBuyUST'),'UST');}// Poukni proměnné do vzoru a střádej si výsledekif ($DirInfoValid)$LinesDir .= $Template->Substitute($Variables, $Template->GetVariable('InfoLine'));else$LinesPrj .= $Template->Substitute($Variables, $Template->GetVariable('InfoLine'));}}// Slož k sobě obě části (adresář / separátor / projekt)if ($LinesDir!='' and $LinesPrj!='')$Lines = $LinesDir.$Template->GetString('InfoSeparator').$LinesPrj;else$Lines = $LinesDir.$LinesPrj;// Teď sestavené položky ulož do proměnné "InfoLine" objektu$Template->SetVariable('InfoLine', $Lines);}/*//Načtení adresářeif ((Is_Dir($path.$folder."/".$HTTP_GET_VARS["file"]."/".$soubor1)) && (substr($soubor1,0,1) <> ".") && (substr($soubor1,0,1) <> "!")) {//Nastavení suffixu u obrázků$img = $soubor1."_Small.jpg";//Pokud existuje náhled obrázku, zobraz hoif (file_exists($path.$folder.'/'.$HTTP_GET_VARS["file"]."/".$soubor1."/".$img)) {echo "<td><A HREF=\"image.php?pth=".$HTTP_GET_VARS["file"]."/".$soubor1."&fname=".$soubor1."\" TARGET=\"_blank\"><img src=\"thumb.php?pth=".$HTTP_GET_VARS["file"]."/".$soubor1."&fname=".$soubor1."\" border=\"0\"></a></td>\n";} else { echo "<td><img src=\"thumb.php?pth=".$HTTP_GET_VARS["file"]."/".$soubor1."&fname=".$soubor1."\"></td>\n"; }//Pokud existuje HTML dokumentace k modulu vytvoř na ni odkazif (file_exists($path.$folder."/".$HTTP_GET_VARS["file"]."/".$soubor1."/DOC/HTML/".$soubor1.".".$lang.".html")) {echo "<td><a href=\"".$www.$folder."/".$HTTP_GET_VARS["file"]."/".$soubor1."/DOC/HTML/".$soubor1.".".$lang.".html\">".$soubor1."</a></td>\n";} else { echo "<td>".$soubor."<b>".$soubor1."</b></td>\n"; }//Pokud existuje PDF dokumentace k modulu zobraz odkazif (file_exists($path.$folder."/".$HTTP_GET_VARS["file"]."/".$soubor1."/DOC/".$soubor1.".".$lang.".pdf")) {echo "<td><a href=\"".$www.$folder."/".$HTTP_GET_VARS["file"]."/".$soubor1."/DOC/".$soubor1.".".$lang.".pdf\">PDF</a></td>\n";} else { echo "\n<td>-</td>\n"; }//WebSVN odkazecho "<td><a href=\"http://www.mlab.cz/WebSVN/listing.php?repname=MLAB&path=/Modules/".$HTTP_GET_VARS["file"]."/".$soubor1."/\">WebSVN</a></td>\n";//Pokud existuje stručné info, zobraz hoif (file_exists($path.$folder.'/'.$HTTP_GET_VARS["file"]."/".$soubor1."/".$info1)) {$fp = FOpen ($path.$folder.'/'.$HTTP_GET_VARS["file"]."/".$soubor1."/".$info1, "r");$data = FRead ($fp, FileSize ($path.$folder.'/'.$HTTP_GET_VARS["file"]."/".$soubor1."/".$info1));FClose ($fp);echo "<td>".wordwrap($data, 50, "<br>")."</td>\n";} else { echo "\n<td><i>No description available</i></td>\n"; }echo "</tr>\n\n";}$PathEncoded = URLEncode($Path.'/'.$FileName);$htmllink = "<a href='".$_SERVER['SCRIPT_NAME']."?lang=$Lang&path=$PathEncoded'>$FileName</a>";*/?>