No changes between revisions
//Server/PrjInfo/Common.php |
---|
0,0 → 1,513 |
<?php |
// ********************************* |
// Konfigurace |
// ********************************* |
define('DIRINFO', 'DirInfo.txt', true); // Jméno souboru s informacemi o adresáři |
define('PRJINFO', 'PrjInfo.txt', true); // Jméno souboru s informacemi o projektu |
define('PERMALINK', '/PermaLink', true); // Začátek cesty s permalinkem (zpracovává mod_rewrite) |
define('LISTSCRIPT', 'List', true); // Jméno skriptu v rootu pro výpis |
define('WEBSVNSCRIPT', '/WebSVN/listing.php', true); // Cesta k WebSVN skriptu |
define('WIKISERVER', 'wiki', true); // Jméno Wiki serveru (co se strčí místo jména stávajícího serveru) |
// Cesta k templejtům |
define('TEMPLATE_PATH', 'Server/PrjInfo/Templates', true); // Cesta do adresáře s templejty |
define('TEMPLATE_PERMALINK', TEMPLATE_PATH . '/PermaLink.ihtml', true); // Zobrazení PermaLinku (přípona jazyka se doplní sama) |
define('TEMPLATE_PERMALINK_PATH', TEMPLATE_PATH . '/PermaLinkPath.ihtml', true); // Zobrazení PermaLinku s cestou (přípona jazyka se doplní sama) |
define('TEMPLATE_LISTDIR', TEMPLATE_PATH . '/ListDir.ihtml', true); // Zobrazení sekce (přípona jazyka se doplní sama) |
define('TEMPLATE_LISTPRJ', TEMPLATE_PATH . '/ListPrj.ihtml', true); // Zobrazení projektu (přípona jazyka se doplní sama) |
// ********************************* |
// Obecné funkce |
// ********************************* |
// Ukončení běhu při chybě |
function Error($str) |
{ |
echo '<b>Ups...<b><br>'.PHP_EOL.$str.PHP_EOL; |
exit; |
} |
// Vytiskni strukturu s názvem |
function print_rx($Nadpis, $Struktura) |
{ |
print $Nadpis.PHP_EOL; |
print str_pad('', strpos($Nadpis.PHP_EOL, PHP_EOL), '-').PHP_EOL; |
$str=print_r($Struktura, true); |
$str = ' '.str_replace(PHP_EOL, PHP_EOL.' ', $str); |
print $str.PHP_EOL; |
} |
// ********************************* |
// Výroba odkazů |
// ********************************* |
// Ze zadané cesty a pole s názvy souborů slepí HTML odkazy |
// na jednotlivé soubory |
function CreateFilesLink2($Path, $FileNames, $Glue) |
{ |
$Path = htmlspecialchars($Path); |
$Glue = " $Glue\n"; |
$Result = ''; |
foreach($FileNames as $Name) |
{ |
$Name = htmlspecialchars($Name); |
$Result .= "<a href=\"$Path/$Name \">$Name</a>" . $Glue; |
} |
$Result=substr($Result, 0, -strlen($Glue)); |
return $Result; |
} |
/* |
// Vyrobí HTML odkaz na soubor/adresář/skript |
function CreateLinkHTML($Path, $Text, $Title='') |
{ |
$Path = htmlspecialchars($Path); |
$Title = htmlspecialchars($Title); |
$Link = '<a href="http://'.$_SERVER['SERVER_NAME'].$FileName.'"'; |
if ($Title != '') |
$Link .= "\n".' title="'.$Title.'"'; |
$Link .= '>'; |
if (basename($FileName)=='') |
$Link .= '(root)'; |
else |
$Link .= basename($FileName); |
$Link .= '</a>'; |
return $Link; |
} |
*/ |
function CreateSVNLink($Path, $Lang, $Title) |
// Vytvoří odkaz do WebSVN podle cesty a jazyka |
{ |
$Path = htmlspecialchars($Path); |
$Link = '<a href="http://'; |
$Link .= $_SERVER['SERVER_NAME']; |
$Link .= WEBSVNSCRIPT; |
$Link .= '?repname=MLAB&path='; |
$Link .= $Path; |
$Link .= '/'; |
if ($Lang=='cs') |
$Link .= '&langchoice=Česky'; |
else |
$Link .= '&langchoice=English'; |
$Link .= '"'; |
if ($Title!='') |
$Link .= "\n".' title="'.htmlspecialchars($Title).'"'; |
$Link .= '>WebSVN</a>'; |
return $Link; |
} |
function CreateWikiLink($Name, $Lang, $Title) |
// Vytvoří odkaz do Wiki podle jména modulu a jazyka |
{ |
// Ukousni verzi a revizi modulu (například 01A) |
$Name = preg_replace('/[0-9][0-9][a-z]$/i', '', $Name); |
$Name = htmlspecialchars($Name); |
// Sestav odkaz |
$Link = '<a href="http://'; |
$Link .= preg_replace('/^.+?\./', WIKISERVER.'.', $_SERVER['SERVER_NAME']); |
$Link .= '/doku.php?id='.$Lang.':'.$Name; |
$Link .= '"'; |
if ($Title!='') |
$Link .= "\n".' title="'.htmlspecialchars($Title).'"'; |
$Link .= '>Wiki</a>'; |
return $Link; |
} |
function CreatePicturesLink($Path, $Glue, $Alt='', $NoPicture, $Width='') |
// Najde na uvedené cestě obrázky, které mají v názvu Small |
// a sestaví na ně odkaz. Pokud není žádný obrázek, vytvoří odkaz na obrázek |
// v parametru $NoPicture. |
{ |
// Najdi všechny soubory |
$Files = array(); |
foreach (glob($_SERVER['DOCUMENT_ROOT'].$Path.'/*') as $File) |
{ |
if (is_file($File)) |
{ |
// Jen jméno souboru |
$File = substr($File, 1+strlen($_SERVER['DOCUMENT_ROOT'].$Path)); |
// TOHLE ASI RADĚJI PŘEZ REGEX |
// Odděl příponu |
$DotPos = strrpos($File, '.'); |
$Extension = substr($File, $DotPos+1); |
$BaseName = substr($File, 0, $DotPos); |
// Vezmi obrázky, které mají ve jméně Small |
if( (strtolower($Extension)=='jpg' or strtolower($Extension)=='png') |
and strpos($BaseName, 'Small')>0 ) |
{ |
$Files[] = $Path.'/'.$File; |
} |
} |
} |
// V adresáři nejsou žádné vhodné obrázky |
if (count($Files) == 0) |
{ |
// Není na co udělat odkaz |
if ($NoPicture=='') |
return ''; |
// Přidej odkaz nikam |
$Files[] = $NoPicture; |
} |
// Udělej odkazy na pole souborů |
$Alt = htmlspecialchars($Alt); |
$Line = ''; |
$FirstGlue = TRUE; |
foreach($Files as $File) |
{ |
$File = htmlspecialchars($File); |
if(!$FirstGlue) |
$Line .= ' '.$Glue."\n"; |
$FirstGlue = FALSE; |
$Line .= '<a href="'.$File.'">'."\n"; |
$Line .= '<img src="'.$File.'"'."\n"; |
if($Width!='') |
$Line .= ' width="' . $Width . '"'."\n"; |
$Line .= ' alt="'.$Alt.'">'."\n"; |
$Line .= '</a>'."\n"; |
} |
return $Line; |
} |
// Vstupem je cesta k souboru v rámci webu (od DOCUMENT_ROOT) |
// a volitelně title (zobrazí se při najetí myši na odkaz). |
// Vrací řetězec s odkazem |
function CreateFileLink($FileName, $Title='') |
{ |
$FileName = htmlspecialchars($FileName); |
$Link = '<a href="http://'.$_SERVER['SERVER_NAME'].$FileName.'"'; |
if ($Title != '') |
$Link .= "\n".' title="'.$Title.'"'; |
$Link .= '>'; |
if (basename($FileName)=='') |
$Link .= '(root)'; |
else |
$Link .= basename($FileName); |
$Link .= '</a>'; |
return $Link; |
} |
// Vyrobí odkaz na projekt |
// vstupem je cesta k projektu (začíná lomítkem) a volitelně jazyk |
function CreateProjectLink($Path, $Lang='') |
{ |
if($Lang!='') |
$Lang .= '.'; |
return 'http://' . $_SERVER["HTTP_HOST"] . $Path . '/' . LISTSCRIPT . '.' .$Lang . 'html'; |
} |
// Provede přesměrování na projekt na zadané cestě (volitelně i s jazykem) |
function Redirect($Path, $Lang='') |
{ |
$NewUrl = CreateProjectLink($Path, $Lang); |
// print "Redirect: $NewUrl<br>"; |
header("HTTP/1.1 301 Moved Permanently"); |
header("Location: $NewUrl"); |
header("Connection: close"); |
die(); |
} |
// Provede přesměrování na projekt na zadané cestě (volitelně i s jazykem) |
function RedirectToFile($Path) |
{ |
// print "Redirect: $NewUrl<br>"; |
header("HTTP/1.1 301 Moved Permanently"); |
header("Location: $Path"); |
header("Connection: close"); |
die(); |
} |
// Dostává cestu k souboru a jazyk. Zkusí ověřit existenci souboru s doplněným |
// zadaným jazykem, dále zkusí angličtinu a nakonec zkusí nemodifikovaný název. |
// Vrací jméno souboru s tou variantou, kterou našel. |
function LangFile($FileName, $Lang) |
{ |
// Najdi příponu (poslední tečka) |
$Pos = strrpos($FileName, '.'); |
if ($Pos === false) |
return ''; |
if ($Pos < strrchr($FileName, '/')) |
return ''; |
// Zkus doplnit zadaný jazyk |
$File = substr($FileName, 0, $Pos+1).$Lang.substr($FileName, $Pos); |
if (is_file($File)) |
return $File; |
// Zkus doplnit en |
$File = substr($FileName, 0, $Pos+1).'en'.substr($FileName, $Pos); |
if (is_file($File)) |
return $File; |
// Zkus soubor tak jak je |
if (is_file($FileName)) |
return $FileName; |
// Nic nevyšlo |
return ''; |
} |
// Sestaví odkazy na všechny soubory zadaného jména slepené lepidlem |
// Volitelně lze zadat title (zobrazí se při najetí myši na odkaz). |
// Cesta se chápe v rámci webu (od DOCUMENT_ROOT). |
// Vrací řetězec s odkazy |
function CreateFilesLink($Path, $Glue, $Title='') |
{ |
// Při lepení odřádkujeme aby byl generovaný kód strukturovaný |
$Glue = ' '.$Glue."\n"; |
// Pro každou položku |
$Line = ''; |
$Ofset = strlen($_SERVER['DOCUMENT_ROOT']); |
foreach (glob($_SERVER['DOCUMENT_ROOT'].$Path, 0) as $DirName) // GLOB_BRACE??????????? |
{ |
// Sestav odkaz |
if (is_file($DirName)) |
$Line .= $Glue.CreateFileLink(substr($DirName, $Ofset), $Title); |
} |
// Vrať výsledek ale bez lepidla na začátku |
return substr($Line, strlen($Glue)); |
} |
// ********************************* |
// Zpracování stromu sekcí a projektů |
// ********************************* |
// Vrací true/false na základě validní struktury sekce (adresáře) |
// (testuje přítomnost DIRINFO souboru) |
function IsDir($Path) |
{ |
return is_file($_SERVER['DOCUMENT_ROOT'].$Path.'/'.DIRINFO); |
} |
// Vrací true/false na základě validní struktury projektu |
// (testuje přítomnost PRJINFO a pokud není tak heuristiku) |
function IsPrj($Path) |
{ |
// Existuje popisný soubor projektu |
if(is_file($_SERVER['DOCUMENT_ROOT'].$Path.'/'.PRJINFO)) |
return true; |
// Není popis projektu, nastupuje heuristika |
if(is_dir($_SERVER['DOCUMENT_ROOT'].$Path.'/DOC')) |
return true; |
if(is_dir($_SERVER['DOCUMENT_ROOT'].$Path.'/SCH')) |
return true; |
// Nic nezabralo, není platný projekt |
return false; |
} |
// Funkce vrací pole obsahující pole Projects a pole Sections |
function RecurseDirs($Path) |
{ |
$Dirs = array(); |
$Path = rtrim($Path, '/'); |
$Items = glob($_SERVER['DOCUMENT_ROOT'].$Path.'/*', GLOB_ONLYDIR); |
// If not valid directory (vracím prázdný výsledek) |
if(!is_array($Items)) |
return $Dirs; |
// Recourse the directory tree (přidávám nalezené adresáře ke konci pole) |
for($i=0; $i<count($Items); $i++) |
{ |
if (is_file($Items[$i].'/'.DIRINFO)) |
{ |
$SubDirs = glob($Items[$i] . '/*', GLOB_ONLYDIR); |
$Items = array_merge($Items, $SubDirs); |
} |
} |
// Remove invalid items (with no DIRINFO/PRJINFO) and Local Path |
$Sections=array(); |
$Projects=array(); |
$EatLeftChars = strlen($_SERVER['DOCUMENT_ROOT']); |
foreach($Items as $Key => $Data) |
{ |
// Remove web path |
$Data = substr($Data, $EatLeftChars); |
if(IsDir($Data)) |
$Sections[]=$Data; |
elseif (IsPrj($Data)) |
$Projects[]=$Data; |
} |
// Sort Sections |
sort($Sections, SORT_STRING); |
// Sort Projects |
sort($Projects, SORT_STRING); |
// Return combined result |
$All["Projects"] = $Projects; |
$All["Sections"] = $Sections; |
return $All; |
} |
// ********************************* |
// Permalinky |
// ********************************* |
// Filtr pro náhradu nepohodlných znaků v permalinku |
// Nahrazuje všechny znaky kromě písmen a čísel, odstraní diakritiku |
// u českých znaků |
function PermaLinkFilter($String) |
{ |
// Odstraň diakritiku |
$SubstTable = array ( |
"ě" => "e", "š" => "s", "č" => "c", "ř" => "r", "ž" => "z", "ý" => "y", "á" => "a", |
"í" => "i", "é" => "e", "ď" => "d", "ť" => "t", "ň" => "n", "ů" => "u", "ú" => "u", |
"Ě" => "E", "Š" => "S", "Č" => "C", "Ř" => "R", "Ž" => "Z", "Ý" => "Y", "Á" => "A", |
"Í" => "I", "É" => "E", "Ď" => "D", "Ť" => "T", "Ň" => "N", "Ů" => "U", "Ú" => "U" |
); |
$String = strtr($String, $SubstTable); |
// Nahraď nepohodlné znaky mínusem |
$String = preg_replace("~[^A-Z0-9]+~ui", "-", $String); |
// Odtsraň duplicity mínusů |
$String = preg_replace("~-+~u", "-", $String); |
// Odstraň počáteční a koncové mínusy |
$String = ltrim(rtrim($String,'-'),'-'); |
return $String; |
} |
// Vrací z cesty platný permalink |
// Vstupem je cesta k projektu nebo k sekci, z ní se vrací jen název (poslední část cesty) |
function PermaLinkCreateKey($ProjectPath) |
{ |
// Odstraň cestu |
$PermaLinkKey = basename($ProjectPath); |
// Odstraň nepohodlné znaky |
$PermaLinkKey = PermaLinkFilter($PermaLinkKey); |
// Hotovo |
return $PermaLinkKey; |
} |
// Zvýrazní jméno projektu (poslední část zadané cesty dá do značky span) |
function MarkPath($Path) |
{ |
$Pos = strrpos($Path, '/'); |
if($Pos===false) |
return "<span class='Marked'>".$Path."</span>"; |
else |
return substr($Path, 0, $Pos+1)."<span class='Marked'>".substr($Path, $Pos+1)."</span>"; |
} |
// Vytvoří z klíče (upravený název projektu či sekce) celý klikací permalinkový odkaz |
// Je-li zadána přídavná cesta tak ji přidá na konec |
// ??????????????????????????? k čemu se použije $AditionalPath ?????????????? možná zrušit |
function PermaLinkCreateLink($PermaLinkKey, $AditionalPath='') |
{ |
$AditionalPath = ltrim($AditionalPath, '/'); |
$AditionalPath = rtrim($AditionalPath, '/'); |
if($AditionalPath!=='') |
$AditionalPath = '/'.$AditionalPath; |
$PermaLinkKey = PermaLinkCreateKey($PermaLinkKey); |
return 'http://'.$_SERVER['HTTP_HOST'].PERMALINK.'/'.$PermaLinkKey.$AditionalPath; |
} |
// Na základě pole se všemi projekty a sekcemi vytvoří pole permalinků se všemi projekty a sekcemi |
function PermaLinkCreateArray($ProjectsArray) |
{ |
$PermaLinkArray = array(); |
foreach($ProjectsArray['Projects'] as $Data) |
{ |
$PermaLink = PermaLinkCreateKey($Data); |
$PermaLinkArray[] = array('SortKey' => mb_strtolower($PermaLink), 'PermaLink' => $PermaLink, 'Path' => $Data, 'Type' => 'Project'); |
} |
foreach($ProjectsArray['Sections'] as $Data) |
{ |
$PermaLink = PermaLinkCreateKey($Data); |
$PermaLinkArray[] = array('SortKey' => mb_strtolower($PermaLink), 'PermaLink' => $PermaLink, 'Path' => $Data, 'Type' => 'Section'); |
} |
return $PermaLinkArray; |
} |
// V zadaném poli odkazů najde klíč a vrátí pole s nalezenými shodami |
// (v případě neshody vrací prázdné pole, ignoruje velikost písmen) |
function PermaLinkFind($AllPermas, $Key) |
{ |
$Key = mb_strtolower($Key); |
$Key = PermaLinkFilter($Key); |
$KeyLen = strlen($Key); |
$Result = array(); |
if($KeyLen!==0) |
{ |
foreach($AllPermas as $Data) |
{ |
/* |
// Hledej permalinky, které začínají jako zadaný klíč |
if(mb_strtolower(substr($Data['PermaLink'], 0, $KeyLen))===$Key) |
$Result[] = $Data; |
*/ |
// Hledej permalinky, které obsahují zadaný klíč |
if(strpos(mb_strtolower($Data['PermaLink']), $Key)!==false) |
$Result[] = $Data; |
} |
return $Result; |
} |
} |
?> |
//Server/PrjInfo/CommonOld.php |
---|
0,0 → 1,312 |
<?php |
define('WEBSVNSCRIPT', '/WebSVN/listing.php', true); // Cesta k WebSVN skriptu |
define('WIKISERVER', 'wiki', true); // Jméno Wiki serveru (co se strčí místo jména stávajícího serveru) |
function Error($str) |
// Ukončení běhu při chybě |
{ |
echo '<b>Ups...<b>'.$str; |
exit; |
} |
function WrapString($String, $Wrap=0) |
// Provede odstranění nadbytečných bílých znaků |
// a volitleně (pokud je $Wrap nenulové) provede zálámání na zadaný počet znaků |
{ |
// Odstaň bílé znaky |
$String = preg_replace('/\s+/su', ' ', $String); |
// Volitelné nalámání |
if ($Wrap!=0) |
$String = wordwrap($String, $Wrap); |
return $String; |
} |
function CheckEnvironment() |
{ |
// POZOR DOPSAT |
} |
function CheckWebPath($Path) |
// Zadaná cesta se chápe jako cesta uvnitř webu (vzhledem k document root). |
// Případné relativní části (/../..) převede na absolutní a zkontroluje |
// výsledek, zda nevybočuje mimo web. |
// Na začátku nechá lomítko, na konci ho odstraní. |
// Pokud je výsledná cesta neplatná, vrátí prázdný řetězec. Kontroluje, zda |
// zadaný adresář existuje. |
{ |
// Převeď cestu na opravdovou, odstraň relativní odkazy |
$Path = realpath($_SERVER['DOCUMENT_ROOT'].$Path); |
// Zkontroluj, zda jsme nevybočili z webu |
if ( 0 == strncmp($Path, $_SERVER['DOCUMENT_ROOT'], strlen($_SERVER['DOCUMENT_ROOT']) ) ) |
{ |
// Shoda - odstraň DOCUMENT_ROOT část cesty |
return substr( $Path, strlen($_SERVER['DOCUMENT_ROOT']) ); |
} |
else |
{ |
// Vybočili jsme z webu |
return ''; |
} |
} |
function GetSection($Path) |
// Vrátí první část cesty (to je to, co nazýváme sekce) |
{ |
// Ignoruj lomítko na začátku |
$Path = ltrim($Path, '/'); |
// Vykousni první slovo až po lomítko |
$Section = substr($Path, 0, strpos($Path.'/', '/')); |
// Ošetři root |
if ($Section=='') |
$Section = "(root)"; |
// Vrať výsledek |
return $Section; |
} |
function LangFile($FileName, $Lang) |
// Dostává cestu k souboru a jazyk. Zkusí ověřit existenci souboru s doplněným |
// zadaným jazykem, dále zkusí angličtinu a nakonec zkusí nemodifikovaný název. |
// Vrací jméno souboru s tou variantou, kterou našel. |
{ |
// Najdi příponu (poslední tečka) |
$Pos = strrpos($FileName, '.'); |
if ($Pos === false) |
return ''; |
if ($Pos < strrchr($FileName, '/')) |
return ''; |
// Zkus doplnit zadaný jazyk |
$File = substr($FileName, 0, $Pos+1).$Lang.substr($FileName, $Pos); |
if (is_file($File)) |
return $File; |
// Zkus doplnit en |
$File = substr($FileName, 0, $Pos+1).'en'.substr($FileName, $Pos); |
if (is_file($File)) |
return $File; |
// Zkus soubor tak jak je |
if (is_file($FileName)) |
return $FileName; |
// Nic nevyšlo |
return ''; |
} |
function CreateLink($InternetWebPath, $Title='') |
// Vstupem je cesta do jiného webu. |
// a volitelně title (zobrazí se při najetí myši na odkaz). |
// Vrací řetězec s odkazem |
{ |
$Link = '<a href="'.$InternetWebPath.'"'; |
if ($Title != '') |
$Link .= "\n".' title="'.$Title.'"'; |
$Link .= '>'; |
$Link .= $Title; |
$Link .= '</a>'; |
return $Link; |
} |
function CreateScriptLink($Params, $DirName='', $Title='') |
// Vytvoř odkaz na skript s parametry skriptu. Parametry jsou předány jako |
// pole s jmény položek a hodnotami. Volitelná položka $DirName se přidá k cestě |
// v položce $Params. Pokud je zadaná cesta prázdná nebo / zobrazí se slovo root |
{ |
// Připoj volitelné jméno adresáře |
if ($DirName!='') |
$Params['path'] = $Params['path'].'/'.$DirName; |
// Odvoď jméno z názvu adresáře |
$DirName = basename($Params['path']); |
if ($DirName == '') |
{ |
$DirName = '(root)'; |
$Params['path'] = '/'; |
} |
// Zpracuj pole parametrů |
$ParamsLine = ''; |
$LocalGlue = ''; |
foreach($Params as $Key => $Value) |
{ |
$ParamsLine .= $LocalGlue.$Key.'='.urlencode($Value); |
$LocalGlue = '&'; |
} |
unset($LocalGlue); |
// Sestav odkaz |
$Link = '<a href="'.$_SERVER['SCRIPT_NAME'].'?'.$ParamsLine.'"'; |
if ($Title!='') |
$Link .= "\n".' title="'.htmlspecialchars($Title).'"'; |
$Link .= ">$DirName</a>"; |
return $Link; |
} |
function CreateScriptLinkPath($Params, $Title) |
// Vstupem je cesta (začínající /) od DOCUMENT_ROOT |
// Výsledkem je řádka odkazů na jednotlivé adresáře cesty |
// Odkazy jsou odkazy na skript s parametrem cesty a jazyka |
// Vstupem je pole parametrů ze kterých použijeme parametr 'path', |
// ostatní jen umístíme do odkazů. |
{ |
// Rozděl cestu na kousky |
$Parts = explode('/', $Params['path']); |
if ($Parts[0]=='') |
array_shift($Parts); // vyhoď případnou prázdnou položku |
// Začínáme od rootu |
$TempPath = ''; |
// Odkaz na root (je vždy) |
$Params['path'] = $TempPath; |
$Link = CreateScriptLink($Params, '', $Title); |
// Je něco víc než root? |
if (isset($Parts[0]) && $Parts[0]!='') |
{ |
// Odkaz na všechny další adresáře cesty |
foreach($Parts as $Key => $Value) |
{ |
// Přidej adresář |
$TempPath .= '/'.$Value; |
// Vyrob odkaz |
$Link .= " /\n"; |
$Params['path'] = $TempPath; |
$Link .= CreateScriptLink($Params, '', $Title); |
} |
} |
// Vrať výsledek |
return $Link; |
} |
function CreateSVNLink($Path, $Lang, $Title) |
// Vytvoří odkaz do WebSVN podle cesty a jazyka |
{ |
$Path = htmlspecialchars($Path); |
$Link = '<a href="http://'; |
$Link .= $_SERVER['SERVER_NAME']; |
$Link .= WEBSVNSCRIPT; |
$Link .= '?repname=MLAB&path='; |
$Link .= $Path; |
$Link .= '/'; |
if ($Lang=='cs') |
$Link .= '&langchoice=Česky'; |
else |
$Link .= '&langchoice=English'; |
$Link .= '"'; |
if ($Title!='') |
$Link .= "\n".' title="'.htmlspecialchars($Title).'"'; |
$Link .= '>WebSVN</a>'; |
return $Link; |
} |
function CreateWikiLink($Name, $Lang, $Title) |
// Vytvoří odkaz do Wiki podle jména modulu a jazyka |
{ |
// Ukousni verzi a revizi modulu (například 01A) |
$Name = preg_replace('/[0-9][0-9][a-z]$/i', '', $Name); |
$Name = htmlspecialchars($Name); |
// Sestav odkaz |
$Link = '<a href="http://'; |
$Link .= preg_replace('/^.+?\./', WIKISERVER.'.', $_SERVER['SERVER_NAME']); |
$Link .= '/doku.php?id='.$Lang.':'.$Name; |
$Link .= '"'; |
if ($Title!='') |
$Link .= "\n".' title="'.htmlspecialchars($Title).'"'; |
$Link .= '>Wiki</a>'; |
return $Link; |
} |
function CreatePicturesLink($Path, $Glue, $Alt='', $NoPicture) |
// Najde na uvedené cestě obrázky, které mají v názvu Small |
// a sestaví na ně odkaz. Pokud není žádný obrázek, vytvoří odkaz na obrázek |
// v parametru $NoPicture. |
{ |
// Najdi všechny soubory |
$Files = array(); |
foreach (glob($_SERVER['DOCUMENT_ROOT'].$Path.'/*') as $File) |
{ |
if (is_file($File)) |
{ |
// Jen jméno souboru |
$File = substr($File, 1+strlen($_SERVER['DOCUMENT_ROOT'].$Path)); |
// TOHLE ASI RADĚJI PŘEZ REGEX |
// Odděl příponu |
$DotPos = strrpos($File, '.'); |
$Extension = substr($File, $DotPos+1); |
$BaseName = substr($File, 0, $DotPos); |
// Vezmi obrázky, které mají ve jméně Small |
if( (strtolower($Extension)=='jpg' or strtolower($Extension)=='png') |
and strpos($BaseName, 'Small')>0 ) |
{ |
$Files[] = $Path.'/'.$File; |
} |
} |
} |
// V adresáři nejsou žádné vhodné obrázky |
if (count($Files) == 0) |
{ |
// Není na co udělat odkaz |
if ($NoPicture=='') |
return ''; |
// Přidej odkaz nikam |
$Files[] = $NoPicture; |
} |
// Udělej odkazy na pole souborů |
$Alt = htmlspecialchars($Alt); |
$Line = ''; |
$FirstGlue = TRUE; |
foreach($Files as $File) |
{ |
$File = htmlspecialchars($File); |
if(!$FirstGlue) |
$Line .= ' '.$Glue."\n"; |
$FirstGlue = FALSE; |
$Line .= '<a href="'.$File.'">'."\n"; |
$Line .= '<img src="'.$File.'"'."\n"; |
$Line .= ' width="150"'."\n"; |
$Line .= ' alt="'.$Alt.'">'."\n"; |
$Line .= '</a>'."\n"; |
} |
return $Line; |
} |
?> |
//Server/PrjInfo/DirMetadata.php |
---|
0,0 → 1,125 |
<?php |
// DirMetadata |
// ----------- |
// |
// Modul zpracování popisného souboru pro popis obsahu adresáře/projektu |
// |
// (c)miho www.mlab.cz 2007, free software |
// |
// Formát souboru DIRINFO viz komentáře v souboru DIRINFO |
// |
//require_once('Common.php'); // Společné funkce |
// Objekt pro zpracování informace o adresáři |
class DirMetadata |
{ |
public $DirData; // Sem se načtou data o adresáři v podobě klíč=>hodnota |
private $Valid; // Zde je příznak platnosti |
function LoadDirInfo($FileName, $Lang) |
// Funkce načte informace ze souboru $FileName do vlastní paměti |
// Cesta je od DOCUMENT_ROOT. |
// Funkce bere v potaz zadaný jazyk, pokud není pro daný jazyk |
// informace dostupná, použije se infromace bez udaného jazyka. |
// Pokud není k dispozici soubor, vrací false. |
// Soubor může být prázdný a není to chyba. |
{ |
// Zruš předchozí informaci |
$this->Valid = FALSE; |
$this->DirData = array(); |
// Jméno popisného souboru na cestě |
$FileName = $_SERVER['DOCUMENT_ROOT'].$FileName; |
// Ověř existenci popisného souboru |
if (!is_file($FileName)) |
return FALSE; |
// Načti popisný soubor |
$File = @file($FileName); |
if ($File===FALSE) |
return FALSE; |
// Vyhoď komentáře (po řádcích) |
foreach($File as $Key => $Line) |
if (substr(ltrim($Line), 0, 2) == '//') |
unset($File[$Key]); |
// Sestav z pole jeden retězec |
$File = implode($File); |
// Vyhledej v souboru informace |
$PatternKey = '\[(?P<Key>[a-z,A-Z,0-9,\-\_\.]+)\]'; |
$PatternKeyNext = '(?=\[(?:[a-z,A-Z,0-9,\-\_\.]+)\])'; |
$PatternValue = '(?P<Value>.*?)'; |
$Pattern = '/'.$PatternKey.'\s*'.$PatternValue.'\s*'.$PatternKeyNext.'/su'; |
preg_match_all($Pattern, $File, $Temp); |
// Sestav pole dat |
$Data = array(); |
foreach($Temp['Key'] as $Key => $KeyName) |
{ |
$Data[$KeyName] = trim(htmlspecialchars($Temp['Value'][$Key], ENT_NOQUOTES)); |
//echo '{'.$KeyName.'->'.$Data[$KeyName].'<-}'."\n"; |
} |
unset($Temp); |
// Aplikuj jazyk |
// Priorita je "uvedený jazyk"/"bez jazyka" |
foreach($Data as $Key => $Value) // projdi vše |
{ |
$Temp = explode('.', $Key, 2); // základní část klíče |
if (isset($Temp[1])) // existuje přípona |
{ |
if ($Temp[1] == $Lang) // přípona |
$Data[$Temp[0]] = $Value; // zkopíruj jazykovou hodnotu |
unset($Data[$Key]); // klíč s příponou vyhoď |
} |
} |
// Uschovej si získaná data |
$this->Valid = TRUE; |
$this->DirData = $Data; |
// Soubor byl nalezen a načten |
return TRUE; |
} |
function GetVariable($Key) |
// Vrací řetězec s informaci podle klíče |
// Když data nejsou, vrací prázdný řetězec |
// Klíčem je jméno informace ze souboru DIRINFO bez jazykové přípony |
{ |
// Test na přítomnost informace |
if (isset($this->DirData[$Key])) |
return $this->DirData[$Key]; |
else |
return ''; |
} |
function GetString($VarName, $Wrap=0) |
// Vrátí parametr jako jeden řetězec s redukovanými bílými znaky |
// Volitelně vloží odřádkování do delších řetězců |
{ |
$Temp = $this->GetVariable($VarName); |
$Temp = preg_replace('/\s+/su', ' ', $Temp); |
if ($Wrap!=0) |
wordwrap($Temp, $Wrap); |
return $Temp; |
} |
// function GetList |
function GetValid() |
// Vrátí TRUE pokud je načtená informace o adresáři |
{ |
return $this->Valid; |
} |
} |
?> |
//Server/PrjInfo/List.php |
---|
0,0 → 1,664 |
<?php |
error_reporting(E_ALL); // nastavení varování při ladění |
require_once('Common.php'); // Společné funkce |
require_once('TemplateEngine.php'); // Stroj pro práci s templejty |
require_once('DirMetadata.php'); // Modul pro načítání informace o adresářích |
define('WRAP', 70, true); // Lámání řetězcových hodnot |
// Stavová informace |
// ----------------- |
// |
// Tento skript používá pro přenesení stavu ke kliemtovi a zpět dvě stavové |
// proměnné prostřednictvím odkazu (zpracová ModRewrite, definováno v konfiguraci webu). |
// Jsou to: |
// |
// lang - zde je kód jazyka, chybějící kód se přesměruje na angličtinu |
// |
// path - zde se uvádí cesta vůči DOCUMENT_ROOT webu, neplatná cesta se přesměruje |
// na root |
// |
// Vyzvedni si parametry z URL |
// --------------------------- |
// Vyzvedni jazyk z předaného parametru |
$Lang = (is_string($_GET['lang'])) ? $_GET['lang'] : $Lang = 'en'; |
$Params['lang'] = $Lang; |
//print "Lang:{$Lang}<br>"; |
// Převezmi cestu, a odstraň lomítko na konci (na začátku lomítko je) |
$Path = (is_string($_GET['path'])) ? $_GET['path'] : $Path = ''; |
$Path = '/'.ltrim(rtrim($Path, '/'), '/'); |
// Decode entities ? |
// $LinkFull=htmlspecialchars_decode($LinkFull); |
// Ulož |
$Params['path'] = $Path; |
//print "Path:{$Path}<br>"; |
// Načti metadata pro sekci (první adresář) |
// Nikdy nevěř tomu, co přijde od klienta |
$SectionDirInfo = new DirMetadata(); |
$SectionDirInfo->LoadDirInfo('/'.GetSection($Path).'/'.DIRINFO, $Lang); |
if($Path!='/') |
{ |
if(!$SectionDirInfo->GetValid()) |
Redirect('', $Lang); // Neexistující sekci přesměruj na root |
} |
// Pokus se načíst informace jako by cesta vedla do adresáře |
$ThisDirInfo = new DirMetadata(); |
$ThisDirInfo->LoadDirInfo($Path.'/'.DIRINFO, $Lang); |
if($ThisDirInfo->GetValid()) |
{ |
// Založ objekt templejtu a načti jej |
$Template = new TemplateEngine(); |
$error = $Template->LoadTemplate($_SERVER['DOCUMENT_ROOT'].'/'.TEMPLATE_LISTDIR, $Lang); |
if ($error!='') |
Error($error); |
// Generuj dynamický obsah do proměnných objektu Template |
ListDir($SectionDirInfo, $ThisDirInfo, $Template, $Params); |
// Odešli výsledek klientovi |
echo $Template->GetPage(); |
return; |
} |
// Pokus se načíst informace jako by cesta vedla do projektu |
$ThisDirInfo->LoadDirInfo($Path.'/'.PRJINFO, $Lang); |
if($ThisDirInfo->GetValid()) |
{ |
// Založ objekt templejtu a načti jej |
$Template = new TemplateEngine(); |
$error = $Template->LoadTemplate($_SERVER['DOCUMENT_ROOT'].'/'.TEMPLATE_LISTPRJ, $Lang); |
if ($error!='') |
Error($error); |
// Generuj dynamický obsah do proměnných objektu Template |
ListPrj($SectionDirInfo, $ThisDirInfo, $Template, $Params); |
// Odešli výsledek klientovi |
echo $Template->GetPage(); |
return; |
} |
// Neplatná cesta (ani adresář, ani projekt) |
Redirect('/', $Lang); |
return; |
function CreateListLinkHTML($Params, $DirName='', $Title='') |
{ |
// Spoj cestu a (volitelné) jméno adresáře |
if ($DirName!='') |
$Params['path'] = $Params['path'].'/'.$DirName; |
// Odvoď jméno z názvu adresáře |
$DirName = basename($Params['path']); |
if ($DirName == '') |
{ |
$DirName = '(root)'; |
} |
// Jméno skriptu (statické jméno je pomocí mod_rewrite přesměrováno na tento skript) |
$ScriptName = '/' . LISTSCRIPT; |
$ScriptName .= ($Params['lang'] !== '') ? '.'.$Params['lang'] : ''; |
$ScriptName .= '.html'; |
// Sestav odkaz |
$Link = "<a href=\"{$Params['path']}{$ScriptName}\""; |
if ($Title!='') |
$Link .= "\n".' title="'.htmlspecialchars($Title).'"'; |
$Link .= ">$DirName</a>"; |
return $Link; |
} |
function CreateListLinkPathHTML($Params, $Title) |
// Vstupem je cesta (začínající /) od DOCUMENT_ROOT |
// Výsledkem je řádka odkazů na jednotlivé adresáře cesty |
// Odkazy jsou odkazy na skript (obsahuje cestu i jazyk) |
{ |
// Rozděl cestu na kousky |
$Parts = explode('/', $Params['path']); |
if ($Parts[0]=='') |
array_shift($Parts); // vyhoď případnou prázdnou položku |
// Začínáme od rootu |
$TempPath = ''; |
// Odkaz na root (je vždy) |
$Params['path'] = $TempPath; |
$Link = CreateListLinkHTML($Params, '', $Title); |
// Je něco víc než root? |
if (isset($Parts[0]) && $Parts[0]!='') |
{ |
// Odkaz na všechny další adresáře cesty |
foreach($Parts as $Key => $Value) |
{ |
// Přidej adresář |
$TempPath .= '/'.$Value; |
// Vyrob odkaz |
$Link .= " /\n"; |
$Params['path'] = $TempPath; |
$Link .= CreateListLinkHTML($Params, '', $Title); |
} |
} |
// Vrať výsledek |
return $Link; |
} |
function ListDir($SectionDirInfo, $ThisDirInfo, $Template, $Params) |
// Tato funkce vkládá informace do objektu Template pro výpis seznamu |
// položek v adresáři (seznam projektů a sekcí v zadaném adresáři) |
{ |
// Lokálně používané parametry pěkně při ruce |
$Path = $Params['path']; |
$Lang = $Params['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 templejtu |
foreach($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', |
CreateListLinkPathHTML($Params, $Template->GetString('InfoPathTitle'))); |
// Permalink |
$Template->SetVariable('InfoPermaLink', PermaLinkCreateLink($Path)); |
// Procházej adresář |
// ----------------- |
// Odstraň lomítko u prázdné cesty aby se nezdvojovalo |
if ($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íči |
foreach ($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žky |
foreach ($Sort as $Value) |
{ |
$Value = trim($Value); |
if (isset($Dir[$Value])) |
{ |
// Zařaď do nového pole |
$NewDir[] = $Value; |
// Vyhoď ze starého |
unset($Dir[$Value]); |
} |
} |
// Přendej zbylé položky |
foreach ($Dir as $Value) |
{ |
$NewDir[] = $Value; |
} |
$Dir = $NewDir; |
unset($NewDir); |
} |
// Zpracování položek |
foreach ($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 projektu |
if (!$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 ($DirInfoValid || $ProjectInfoValid) |
{ |
// Připrav si proměnné |
unset($Variables); |
foreach($DirInfo->DirData as $Key => $Value) |
{ |
$Variables[$Key] = $DirInfo->GetString($Key, WRAP); |
} |
$Variables['InfoName'] = ($DirInfoValid or $ProjectInfoValid) ? CreateListLinkHTML($Params, $DirName, $DirInfo->GetString('InfoLongDescription')) |
: $DirName; |
$Variables['InfoPicture'] = CreatePicturesLink($Params['path'].'/'.$DirName, $Glue, 'Ilustrative Picture', '/'.TEMPLATE_PATH.'/'.$Template->GetVariable('InfoNoPicture'), 150); |
$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); |
// Vlož info o dostupnosti na UST |
if($DirInfo->GetString('InfoBuyUST')!= '') |
{ |
$Variables['InfoBuy'] = CreateLink($DirInfo->GetString('InfoBuyUST'),'UST'); |
} |
// Poukni proměnné do vzoru a střádej si výsledek |
if ($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); |
} |
function ListPrj($SectionDirInfo, $ThisDirInfo, $Template, $Params) |
// Tato funkce vkládá informace do objektu Template pro výpis informací |
// o projektu (náhled, informace, odkazy na dokuemntaci etc.) |
{ |
// Lokálně používané parametry pěkně při ruce |
$Path = $Params['path']; |
$Lang = $Params['lang']; |
// Abych nešahal pořád do objektu, použiju proměnnou |
$Glue = $Template->GetVariable('InfoGlue'); |
// 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 templejtu |
foreach($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', |
CreateListLinkPathHTML($Params, $Template->GetString('InfoPathTitle'))); |
// Permalink |
$Template->SetVariable('InfoPermaLink', PermaLinkCreateLink($Path)); |
// Zpracuj informace o projektu |
// ---------------------------- |
unset($Variables); |
// Převezmi data z popisu projektu |
foreach($ThisDirInfo->DirData as $Key => $Value) |
{ |
$Variables[$Key] = $ThisDirInfo->GetString($Key, WRAP); |
} |
$Template->SetVariable('InfoVariables', $Variables); |
// Odkaz na obrázky k projektu |
$Template->SetVariable('InfoPictures', CreatePicturesLink($Path, $Template->GetString('InfoPicturesGlue'), 'Ilustrative Picture', '', 200)); |
// Data do tabulky |
$Template->SetVariable('InfoText', CreateFilesLink($Path.'/DOC/{HTML/*.[hH][tT][mM][lL],*.[pP][dD][fF]}', $Glue)); |
$Template->SetVariable('InfoWebSVN', CreateSVNLink($Path, $Lang, $Template->GetString('InfoSVNTitle'))); |
$Variables['InfoName'] = basename($Path); |
/* $Variables['InfoName'] = ($DirInfoValid or $ProjectInfoValid) ? CreateListLinkHTML($Params, $DirName, $DirInfo->GetString('InfoLongDescription')) |
: $DirName; |
$Variables['InfoPicture'] = CreatePicturesLink($Params['path'].'/'.$DirName, $Glue, 'Ilustrative Picture', '/'.TEMPLATE_PATH.'/'.$Template->GetVariable('InfoNoPicture'), 150); |
$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); |
// Vlož info o dostupnosti na UST |
if($DirInfo->GetString('InfoBuyUST')!= '') |
{ |
$Variables['InfoBuy'] = CreateLink($DirInfo->GetString('InfoBuyUST'),'UST'); |
} |
*/ |
// Poukni proměnné do vzoru a střádej si výsledek |
$LinesPrj = $Template->Substitute($Variables, $Template->GetVariable('InfoLine')); |
$Template->SetVariable('InfoLine', $LinesPrj); |
/* |
// 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íči |
foreach ($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žky |
foreach ($Sort as $Value) |
{ |
$Value = trim($Value); |
if (isset($Dir[$Value])) |
{ |
// Zařaď do nového pole |
$NewDir[] = $Value; |
// Vyhoď ze starého |
unset($Dir[$Value]); |
} |
} |
// Přendej zbylé položky |
foreach ($Dir as $Value) |
{ |
$NewDir[] = $Value; |
} |
$Dir = $NewDir; |
unset($NewDir); |
} |
// Zpracování položek |
foreach ($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 projektu |
if (!$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 ($DirInfoValid || $ProjectInfoValid) |
{ |
// Připrav si proměnné |
unset($Variables); |
foreach($DirInfo->DirData as $Key => $Value) |
{ |
$Variables[$Key] = $DirInfo->GetString($Key, WRAP); |
} |
$Variables['InfoName'] = ($DirInfoValid or $ProjectInfoValid) ? CreateListLinkHTML($Params, $DirName, $DirInfo->GetString('InfoLongDescription')) |
: $DirName; |
$Variables['InfoPicture'] = CreatePicturesLink($Params['path'].'/'.$DirName, $Glue, 'Ilustrative Picture', '/'.TEMPLATE_PATH.'/'.$Template->GetVariable('InfoNoPicture'), 150); |
$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); |
// Vlož info o dostupnosti na UST |
if($DirInfo->GetString('InfoBuyUST')!= '') |
{ |
$Variables['InfoBuy'] = CreateLink($DirInfo->GetString('InfoBuyUST'),'UST'); |
} |
// Poukni proměnné do vzoru a střádej si výsledek |
if ($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); |
*/ |
} |
// ************************************* |
function WrapString($String, $Wrap=0) |
// Provede odstranění nadbytečných bílých znaků |
// a volitleně (pokud je $Wrap nenulové) provede zálámání na zadaný počet znaků |
{ |
// Odstaň bílé znaky |
$String = preg_replace('/\s+/su', ' ', $String); |
// Volitelné nalámání |
if ($Wrap!=0) |
$String = wordwrap($String, $Wrap); |
return $String; |
} |
function xxxCheckWebPath($Path) |
// Zadaná cesta se chápe jako cesta uvnitř webu (vzhledem k document root). |
// Případné relativní části (/../..) převede na absolutní a zkontroluje |
// výsledek, zda nevybočuje mimo web. |
// Na začátku nechá lomítko, na konci ho odstraní. |
// Pokud je výsledná cesta neplatná, vrátí prázdný řetězec. Kontroluje, zda |
// zadaný adresář existuje. |
{ |
// Převeď cestu na opravdovou, odstraň relativní odkazy |
$Path = realpath($_SERVER['DOCUMENT_ROOT'].$Path); |
// Zkontroluj, zda jsme nevybočili z webu |
if ( 0 == strncmp($Path, $_SERVER['DOCUMENT_ROOT'], strlen($_SERVER['DOCUMENT_ROOT']) ) ) |
{ |
// Shoda - odstraň DOCUMENT_ROOT část cesty |
return substr( $Path, strlen($_SERVER['DOCUMENT_ROOT']) ); |
} |
else |
{ |
// Vybočili jsme z webu |
return ''; |
} |
} |
function GetSection($Path) |
// Vrátí první část cesty (to je to, co nazýváme sekce) |
{ |
// Ignoruj lomítko na začátku |
$Path = ltrim($Path, '/'); |
// Vykousni první slovo až po lomítko |
$Section = substr($Path, 0, strpos($Path.'/', '/')); |
// Ošetři root |
if ($Section=='') |
$Section = "(root)"; |
// Vrať výsledek |
return $Section; |
} |
function CreateLink($InternetWebPath, $Title='') |
// Vstupem je cesta do jiného webu. |
// a volitelně title (zobrazí se při najetí myši na odkaz). |
// Vrací řetězec s odkazem |
{ |
$Link = '<a href="'.$InternetWebPath.'"'; |
if ($Title != '') |
$Link .= "\n".' title="'.$Title.'"'; |
$Link .= '>'; |
$Link .= $Title; |
$Link .= '</a>'; |
return $Link; |
} |
function CreateScriptLink($Params, $DirName='', $Title='') |
// Vytvoř odkaz na skript s parametry skriptu. Parametry jsou předány jako |
// pole s jmény položek a hodnotami. Volitelná položka $DirName se přidá k cestě |
// v položce $Params. Pokud je zadaná cesta prázdná nebo / zobrazí se slovo root |
{ |
// Připoj volitelné jméno adresáře |
if ($DirName!='') |
$Params['path'] = $Params['path'].'/'.$DirName; |
// Odvoď jméno z názvu adresáře |
$DirName = basename($Params['path']); |
if ($DirName == '') |
{ |
$DirName = '(root)'; |
$Params['path'] = '/'; |
} |
// Zpracuj pole parametrů |
$ParamsLine = ''; |
$LocalGlue = ''; |
foreach($Params as $Key => $Value) |
{ |
$ParamsLine .= $LocalGlue.$Key.'='.urlencode($Value); |
$LocalGlue = '&'; |
} |
unset($LocalGlue); |
// Sestav odkaz |
$Link = '<a href="'.$_SERVER['SCRIPT_NAME'].'?'.$ParamsLine.'"'; |
if ($Title!='') |
$Link .= "\n".' title="'.htmlspecialchars($Title).'"'; |
$Link .= ">$DirName</a>"; |
return $Link; |
} |
function CreateScriptLinkPath($Params, $Title) |
// Vstupem je cesta (začínající /) od DOCUMENT_ROOT |
// Výsledkem je řádka odkazů na jednotlivé adresáře cesty |
// Odkazy jsou odkazy na skript s parametrem cesty a jazyka |
// Vstupem je pole parametrů ze kterých použijeme parametr 'path', |
// ostatní jen umístíme do odkazů. |
{ |
// Rozděl cestu na kousky |
$Parts = explode('/', $Params['path']); |
if ($Parts[0]=='') |
array_shift($Parts); // vyhoď případnou prázdnou položku |
// Začínáme od rootu |
$TempPath = ''; |
// Odkaz na root (je vždy) |
$Params['path'] = $TempPath; |
$Link = CreateScriptLink($Params, '', $Title); |
// Je něco víc než root? |
if (isset($Parts[0]) && $Parts[0]!='') |
{ |
// Odkaz na všechny další adresáře cesty |
foreach($Parts as $Key => $Value) |
{ |
// Přidej adresář |
$TempPath .= '/'.$Value; |
// Vyrob odkaz |
$Link .= " /\n"; |
$Params['path'] = $TempPath; |
$Link .= CreateScriptLink($Params, '', $Title); |
} |
} |
// Vrať výsledek |
return $Link; |
} |
?> |
//Server/PrjInfo/PermaLink.php |
---|
0,0 → 1,312 |
<?php |
// Zpracovává odkazy ve formátu http://www.mlab.cz/PermaLink/Projekt/DalšíCesta |
// Skript se volá ze souborů /PermaLink.cs.php a /PermaLink.en.php kde se nastavuje proměnná $Lang |
// První slovo (až po lomítko) za PermaLink se chápe jako jméno modulu/projektu nebo adresáře/sekce. |
// Pokud zadanému jménu odpovídá jediný odkaz, provede se hned přesměrování, jinak se vypíše seznam kandidátů. |
// Pro snadné odkázání lze permanentní odkaz doplnit cestou k adresáři či souboru v rámci projektu. |
define(DISPLAY_ALL_IF_EMPTY , true); // Povol zobrazení všech sekcí a projektů když je zadaný prázdný permalink |
define(MAX_DEPTH, 50); // Maximální hloubka prohledávání adresářů (pojistka proti zacyklené struktuře adresářů) |
require_once('Common.php'); // Modul společných funkcí |
require_once('DirMetadata.php'); // Modul pro načítání informace o adresářích |
require_once('TemplateEngine.php'); // Stroj pro práci s templejty |
// Převezmi odkaz |
if($_REQUEST['PermaLink']!='') |
// Odkaz z formuláře |
$LinkFull = $_REQUEST['PermaLink']; |
else |
// Odkaz z cesty |
$LinkFull = $_SERVER['PATH_INFO']; |
// Decode entities ? |
// $LinkFull=htmlspecialchars_decode($LinkFull); |
// Split PermaLink and aditional Path |
$LinkFull = ltrim($LinkFull, DIRECTORY_SEPARATOR); |
$LinkFull = rtrim($LinkFull, DIRECTORY_SEPARATOR); |
$SeparatorPosition = strpos($LinkFull, DIRECTORY_SEPARATOR); |
if ($SeparatorPosition===false) |
{ |
$LinkPath = ''; |
$Link = $LinkFull; |
} |
else |
{ |
$LinkPath = substr($LinkFull, $SeparatorPosition+1); |
$Link = substr($LinkFull, 0, $SeparatorPosition); |
} |
unset($SeparatorPosition); |
// Najdi cíle pro PermaLink |
$PermaLinkArray = array(); |
if(DISPLAY_ALL_IF_EMPTY or !($Link==='')) |
{ |
// Načti seznam všech projektů a sekcí (od začátku) |
$ProjectsAndSections = RecurseDirs('/'); |
// Převeď projekty a sekce na permalinky |
$AllPermas = PermaLinkCreateArray($ProjectsAndSections); |
unset($ProjectsAndSections); |
if($LinkFull==='') |
{ |
// Prázdný permalink - zkopíruj vše |
$PermaLinkArray = $AllPermas; |
} |
else |
{ |
// Najdi zadaný permalink |
$PermaLinkArray = PermaLinkFind($AllPermas, PermaLinkCreateKey($Link)); |
} |
unset($AllPermas); |
} |
$PermaLinkCount = count($PermaLinkArray); |
//print_rx('Found Permalinks', $PermaLinkArray); |
// Nalezen právě jeden odkaz bez přídavné cesty - rovnou přesměruj |
if($PermaLinkCount==1 and $LinkPath==='') |
Redirect($PermaLinkArray[0]['Path'], $Lang); // ------------------------------------->>> |
// Setřiď nalezené (třídí primárně podle první položky, což je lowercase verze permalinku) |
sort($PermaLinkArray); |
// *************************** |
// Zpracuj PermaLink bez cesty |
// *************************** |
if ($LinkPath==='') |
{ |
// Založ objekt templejtu a načti jej |
$Template = new TemplateEngine(); |
$error = $Template->LoadTemplate($_SERVER['DOCUMENT_ROOT'].'/'.TEMPLATE_PERMALINK, $Lang); |
if ($error!='') |
Error($error); |
// Generuj dynamický obsah do proměnných (společná část) |
$Template->SetVariable('InfoThisLink', $LinkFull ); |
$Template->SetVariable('InfoThisServer', $_SERVER['HTTP_HOST']); |
// Nalezeno více položek - zjisti více informací a vlož je do templejtu |
$Lines = ''; |
if($PermaLinkCount>1) |
{ |
// Nachystej společné hodnoty z templejtu |
$PictureGlue = $Template->GetVariable('InfoPictureGlue'); |
$PictureAlt = $Template->GetVariable('InfoPictureAlt'); |
$PictureNoPicture = '/'.TEMPLATE_PATH.'/'.$Template->GetVariable('InfoNoPicture'); |
// Načti informace o projektu |
$DirInfo = new DirMetadata(); |
foreach($PermaLinkArray as $Data) |
{ |
// Naplň proměnné pro definici položky |
// Type / Picture / PermaLink / Path |
$Variables['InfoType'] = $Data['Type']; |
$Variables['InfoPicture'] = CreatePicturesLink($Data['Path'], $PictureGlue, $PictureAlt, $PictureNoPicture, 150); |
$Variables['InfoPermaLink'] = "<a href=\"".PermaLinkCreateLink($Data['PermaLink'])."\">{$Data['PermaLink']}</a>"; |
$PathMarked = MarkPath($Data['Path']); |
$Variables['InfoPath'] = "<a href=\"".CreateProjectLink($Data['Path'], $Lang)."\">$PathMarked</a>"; |
unset($PathMarked); |
// Zjisti informace o projektu |
if($Data['Type']==="Section") |
$DirInfo->LoadDirInfo($Data['Path'].'/'.DIRINFO, $Lang); |
else |
$DirInfo->LoadDirInfo($Data['Path'].'/'.PRJINFO, $Lang); |
// Vlož všechny zjištěné informace |
foreach($DirInfo->DirData as $Key => $ItemInfo) |
$Variables[$Key] = $ItemInfo; |
// Ošetři chybějící popis |
if($Variables['InfoShortDescription']=='' and $Variables['InfoLongDescription']=='') |
$Variables['InfoShortDescription'] = $Template->GetVariable('InfoNoText'); |
// Proveď substituci a střádej výsledek (po položkách) |
$Lines .= $Template->Substitute($Variables, $Template->GetVariable('InfoLine')); |
// Zahoď nalezená data (aby se nepoužily v dalším cyklu) |
unset($Variables); |
} |
// Vlož řádky do templejtu |
$Template->SetVariable('InfoLine', $Lines); |
} |
else |
{ |
// Nenalezeno nic (nebo prázdné zadání) |
$Template->SetVariable('InfoLine', $Template->GetVariable('InfoNoData')); |
} |
// Odešli výsledek klientovi |
echo $Template->GetPage(); |
return; |
} |
else |
// ************************** |
// Zpracuj PermaLink s cestou |
// ************************** |
{ |
// Založ objekt templejtu a načti jej |
$Template = new TemplateEngine(); |
$error = $Template->LoadTemplate($_SERVER['DOCUMENT_ROOT'].'/'.TEMPLATE_PERMALINK_PATH, $Lang); |
if ($error!='') |
Error($error); |
// Generuj dynamický obsah do proměnných (společná část) |
$Template->SetVariable('InfoThisLink', $LinkFull ); |
$Template->SetVariable('InfoThisServer', $_SERVER['HTTP_HOST']); |
// Načti proměnné z templejtu |
$Glue = $Template->GetVariable('InfoNamesGlue'); |
// Prohledej adresáře (nestriktní verze) |
// ------------------------------------- |
$FilesPathArray = array(); |
$FilesPathCount = 0; |
// Rozděl cestu na dílky |
$LinkPathArray = explode('/', $LinkPath); |
$LinkPathDepth = count($LinkPathArray); |
//print_rx("Path to be found", $LinkPathArray); |
// Cyklus přes všechny nalezené permalinky |
foreach($PermaLinkArray as $Item) |
{ |
// Rekurentně procházej atrukturu adresáře |
// Podadresáře přidávej průběžně na konec pole |
// První položka je hloubka zanoření (indexuje $LinkPathArray) |
// Střádej nalezené položky do pole $LinkPathData |
$Dirs = array(); |
$Dirs[] = array('Depth'=>0, 'Path'=>$Item['Path']); |
// Omez hloubku procházení adresářů |
for ($i=0; $i<count($Dirs) and $i<MAX_DEPTH; $i++) |
{ |
//print "At Depth " . $Dirs[$i]['Depth'] . " Reading Directory " . $Dirs[$i]['Path'] . PHP_EOL; |
//print "Looking for " . $LinkPathArray[$Dirs[$i]['Depth']] . PHP_EOL; |
$GlobFlags = GLOB_NOSORT; |
if ($LinkPathDepth>$Dirs[$i]['Depth']+1) |
{ |
// Nejsme ještě u konce cesty - přidej jen adresáře |
$GlobFlags |= GLOB_ONLYDIR; |
} |
// Čti adresáře |
$SubDirs = glob($_SERVER['DOCUMENT_ROOT'].$Dirs[$i]['Path'].DIRECTORY_SEPARATOR.'*', $GlobFlags); |
foreach($SubDirs as $Item) |
{ |
// Převeď na cestu od rootu webu |
$CurentName = basename($Item); |
$CurentPath = $Dirs[$i]['Path' ]; |
$CurentDepth = $Dirs[$i]['Depth']; |
//print " $CurentName\n"; |
// ===> POROVNÁNÍ JE ZDE <=== |
if(mb_strtolower(PermaLinkFilter($CurentName))===mb_strtolower(PermaLinkFilter($LinkPathArray[$CurentDepth]))) |
{ |
//print" ^----> $CurentDepth : $CurentPath/$CurentName\n"; |
// Přidej další adresář do rekurze |
if(is_dir($Item)) |
{ |
$Dirs[] = array('Depth'=>$CurentDepth+1, 'Path'=>$CurentPath.'/'.$CurentName); |
} |
// Nalezený soubor v adresáři |
if(is_file($Item)) |
{ |
//print " ^----> File: $Item\n"; |
$FilesPathArray[$Dirs[$i]['Path']][]=$CurentName; |
$FilesPathCount++; |
} |
} |
// V posledním adresáři přidej všechny soubory |
if($CurentDepth>=$LinkPathDepth) |
{ |
//print " Test ".$_SERVER['DOCUMENT_ROOT'].$CurentPath.'/'.$CurentName.PHP_EOL; |
if (is_file($_SERVER['DOCUMENT_ROOT'].$CurentPath.'/'.$CurentName)) |
{ |
//print " ^----> File All: $Item\n"; |
$FilesPathArray[$CurentPath][]=$CurentName; |
$FilesPathCount++; |
} |
} |
} |
//print("\n"); |
} |
} |
//print_rx('Found Files', $FilesPathArray); |
//print "Files Found Count $FilesPathCount\n"; |
/* |
// Prohledej adresáře a soubory (striktní verze) |
// --------------------------------------------- |
$EatIt = strlen($_SERVER['DOCUMENT_ROOT']); |
foreach($PermaLinkArray as $Item) |
{ |
$Path = $_SERVER['DOCUMENT_ROOT'].$Item['Path'].DIRECTORY_SEPARATOR.$LinkPath; |
if (is_file($Path)) |
{ |
$FilesPathArray[substr(dirname($Path), $EatIt)] = array(basename($Path)); |
$FilesPathCount++; |
} |
if (is_dir($Path)) |
{ |
foreach (scandir($Path) as $DirItem) |
{ |
if (is_file($Path.DIRECTORY_SEPARATOR.$DirItem)) |
{ |
$FilesPathArray[substr($Path, $EatIt)][]=$DirItem; |
$FilesPathCount++; |
} |
} |
} |
} |
print_rx('Nalezene soubory', $FilesPathArray); |
print "$FilesPathCoutn\n"; |
*/ |
// Nalezen právě jeden odkaz na soubor - rovnou přesměruj |
if($FilesPathCount===1) |
{ |
reset($FilesPathArray); |
$tmp = current($FilesPathArray); |
$Path = key($FilesPathArray).'/'.$tmp[0]; |
RedirectToFile($Path); // ------------------------------------->>> |
} |
// Nalezeno více položek - zjisti více informací a vlož je do templejtu |
$Lines = ''; |
if($FilesPathCount>0) |
{ |
foreach($FilesPathArray as $Path=>$FileArray) |
{ |
$Variables['InfoName']=CreateFilesLink($Path, '<br>', ''); |
$FileNames = ''; |
foreach($FileArray as $FileItem) |
{ |
$FileNames .= '<br> '.$FileItem; |
} |
$Variables['InfoPath'] = $Path; |
$Variables['InfoNames'] = CreateFilesLink2($Path, $FileArray, $Glue); |
// Proveď substituci a střádej výsledek (po položkách) |
$Lines .= $Template->Substitute($Variables, $Template->GetVariable('InfoLine')); |
// Zahoď nalezená data (aby se nepoužily v dalším cyklu) |
unset($Variables); |
} |
// Vlož řádky do templejtu |
$Template->SetVariable('InfoLine', $Lines); |
} |
else |
{ |
// Nenalezeno nic |
$Template->SetVariable('InfoLine', $Template->GetVariable('InfoNoData')); |
} |
// Odešli výsledek klientovi |
echo $Template->GetPage(); |
return; |
} |
?> |
//Server/PrjInfo/TemplateEngine.php |
---|
0,0 → 1,277 |
<?php |
// Template Engine |
// --------------- |
// |
// Tento modul zpracovává tmplejty a strká do nich dynamicky generované |
// informace a vytváří tak dynamické HTML stránky s oddělenou logikou |
// programu a vzhledu. |
// |
// Více viz popis činnosti v konentáři na začátku templejtu |
// |
// (c)miho www.mlab.cz 2007, free software |
// |
// Typické použití objektu je toto: |
// |
// - Založ objekt templejtu (new) |
// - $Template = new TemplateEngine(); |
// |
// - Načti templejt ze souboru do objektu (ošetři chybu!) |
// - $error = $Template->LoadTemplate($TemplateFile); |
// |
// - Tady se provádí generování masa, je možné použít proměnné, |
// - modifikovat proměnné a nechat provéstsubstituce v proměnných |
// - do řetězců. |
// |
// $Template->SetVariable('InfoTitle','Generovaný seznam'); |
// - první parametr je jméno proměnné, druhý je jeho nový obsah |
// |
// $Line = $Template->GetVariable('InfoLine') |
// - vrací obsah proměnné nebo prázdný řetězec |
// |
// - Připrav si proměnné, které se budou strkat do vzorového řetězce |
// $Variables[InfoName] = 'nějaká informace pro proměnnou InfoName'; |
// $Variables[InfoPicture] = 'jiná informace pro proměnnou InfoPicture'; |
// - aplikuj (nahraď) proměnné na vzorový řetězec z propměnné 'InfoLine' |
// $Line = $Template->Substitute($Variables, $Template->GetVariable('InfoLine')); |
// |
// - Nakonec se aplikují proměnné do nataženého templejtu a výsledek |
// - se pošle klientovi |
// echo $Template->GetPage(); |
// |
// Objekt pro zpracování templejtu |
class TemplateEngine |
{ |
private $Page; // Sem se načte templejt a zde se provádí substituce |
private $Info; // Sem se načtou z templejtu proměnné |
function ListInfo() |
// Vypíše nalezené proměnné a jejich hodnoty |
// Pouze pro ladění |
{ |
echo "[ ListInfo:\n"; |
print_r($this->Info); |
echo ']'; |
} |
function LoadTemplate($TemplateFileName, $Lang) |
// Načte templejt ze souboru, při chybě vrací chybový řetězec |
// Snaží se rozumně využít informaci o jazyku k otevření správné verze |
// templejtu. Cesta se zadává bez jazykové části ale s příponou. |
{ |
// Vlož zadaný jazyk do názvu souboru |
$TemplateFileName = LangFile($TemplateFileName, $Lang); |
// Načti template ze souboru (po řádcích do pole) |
$this->Page = @file($TemplateFileName); |
if ($this->Page=='') |
return 'Unable Open Template File'; |
// Sestav z pole jeden retězec |
$this->Page = implode($this->Page); |
// Definice regulárních výrazů pro hledání |
// --------------------------------------- |
// Definice vzoru pro hledání komentáře ve tvaru <!-- --> |
// Komentář je nepojmenované pole |
// Před a za koentářem mohou být bílé znaky |
// Uvnitř komentáře nesmí být znak > |
$PatternComment = '(?:\s*<!--[^>]*--\s*>\s*)'; |
// (?: nepojemnované pole |
// \s* volitelné bílé znaky před |
// <!-- začátek komentáře |
// [^>]* vniřek komentáře (neobsahuje >) |
// --\s*> konec komentáře |
// \s* volitelné bílé znaky za komentářem |
// ) tady končí komentář |
// Definice vzoru pro hledání proměnných ve tvaru $InfoXXX |
$PatternVar ='\$(?P<VarName>Info[a-z,A-Z,0-9,\-\_]+)'; |
// \$ na začátku $ |
// (?P<VarName> pojmenované pole VarName je (jméno proměnné bez dolaru) |
// Info[a-z,A-Z,0-9,\-\_]+ proměnná začíná Info a pak jsou písmena, |
// ) číslice, mínus a podtržítko |
// Definice vzoru pro hledání hodnot proměnných ve tvaru = " Hodnota " |
// Definice hodnot je ve tvaru $InfoXXX="YYY" a mohou být víceřádkové |
// ( a mohou obsahovat uvnitř další substituce uvozené $, které program |
// zpracovává ale ne tady) |
$PatternValue = '\s*=\s*"(?P<VarValue>[^"]*)"'; |
// \s*=\s* rovná se volitelnými bílými znaky okolo |
// " hodnota v uvozovkách |
// (?P<VarValue> parametr s názvem VarValue |
// [^"]* hodnota nesmí obsahovat uvozovky |
// ) vracíme hodnotu bez uvozovek |
// " konec uvozovek |
// Zparacování vzoru |
// ----------------- |
// Najdi na začátku stránky komentář a vykousni ho |
$pattern = '/^' .$PatternComment. '+/su'; |
$this->Page = preg_replace($pattern, '', $this->Page); |
// / oddělovač |
// ^ od začátku řetězce (jen komentáře na začátku souboru) |
// $PatternComment komentář (<!-- -->) s bílými znaky okolo |
// + alespoň jeden komentář |
// /su modifikátor, . zastupuje i odřádkování, utf8 |
// Najdi v templejtu substutuční proměnné a vytvoř v poli $Info |
// prázdné položky pro každou použitou proměnnou. Dělá se to proto, |
// aby se na konci nepoužité proměnné nahradily prázdným řetězcem. |
$pattern = '/' .$PatternVar. '/su'; |
preg_match_all($pattern, $this->Page, $temp); |
// / oddělovač |
// .$PatternVar. proměnná ( $InfoXXX ) - parametr VarName |
// /su modifikátor zajistí, že . zastupuje i odřádkování, utf8 |
foreach($temp['VarName'] as $key => $value) |
$this->Info[$value] = ''; |
unset($temp); |
// Vytáhni proměnné a jejich hodnoty do pole $Info |
$pattern = '/' .$PatternVar.$PatternValue. '/su'; |
// / oddělovač |
// .$PatternVar. proměnná ( $InfoXXX ) - parametr VarName |
// .$PatternValue. přiřazení ( = " Hodnota " ) - parametr VarValue |
// /su modifikátor, . zastupuje i odřádkování, UTF8 |
preg_match_all($pattern, $this->Page, $temp); |
foreach($temp['VarName'] as $key => $value) |
$this->Info[$value] = $temp['VarValue'][$key]; |
unset($temp); |
// Vykousej zpracované definice proměnných (a komentáře před nimi) |
$pattern = '/' .$PatternComment.'?'.$PatternVar.$PatternValue. '/su'; |
// / oddělovač |
// .$PatternComment.'?' volitelný komentář před definicí |
// .$PatternVar. proměnná ( $InfoXXX ) |
// .$PatternValue. přiřazení ( = " Hodnota " ) |
// /su modifikátor, . zastupuje i odřádkování, UTF8 |
$this->Page = preg_replace($pattern, '', $this->Page); |
} |
function Indent($StringData, $Indent) |
// Všechna odřádkování v řetězci $StringData odsadí o hodnotu $Indent pokud je |
// $Indent číslo nebo o déllku řetězce $Indent pokud je to řetězec |
{ |
// Velikost odsazení (vyrob číslo) |
if (is_string($Indent)) |
$Num = mb_strlen($Indent,'utf-8'); |
else |
$Num = 0+$Indent; |
// Odsazení |
return $StringData = $Indent.str_replace("\n", "\n".str_repeat(' ', $Num), $StringData); |
} |
/* |
function Substitute($Variables, $String) |
// Nahradí proměnné v řetězci $String obsahem proměnných z pole $Variables |
// a vrátí výsledný řetězec |
{ |
if (is_array($Variables)) |
{ |
foreach($Variables as $Key => $Value) |
{ |
// Hledací vzor (hledáme proměnnou s názvem v $Key) |
$Pattern = '\$'.$Key.'(?=[^a-z,A-Z,0-9,\-\_])'; |
// \$$Key hledáme $JmenoProměnné |
// (?= následuje něco, co nemůže být jménem |
// [^a-z,A-Z,0-9,\-\_] a nezajímá nás |
// ) |
// Vkládáme více řádek? |
$IsMultiline = !(strpos($Value, "\n") === FALSE); |
if (!$IsMultiline) |
{ |
// Vkládáme jednoduchý řetězec |
$String = preg_replace('/'.$Pattern.'/su', $Value, $String); |
// /su víceřádkové v UTF8 |
} |
else |
{ |
// Vkládáme řetezec s odřádkováním - je třeba odsazovat |
$String = preg_replace('/(.*)'.$Pattern.'/ue', |
"\$this->Indent(\$Value, '\\1')", |
$String); |
// (.*) hledáme cokoli před vzorem -> první parametr |
// .$Pattern. proměnná |
// /ue UTF8, náhrada je php skriptem |
} |
} |
} |
return $String; |
} |
*/ |
function Substitute($Variables, $String) |
// Nahradí proměnné v řetězci $String obsahem proměnných z pole $Variables |
// a vrátí výsledný řetězec |
{ |
// Hledací vzor |
$Pattern = '/(.*?)\$(Info[a-z,A-Z,0-9,\-\_]+)(?=[^a-z,A-Z,0-9,\-\_])/ue'; |
// Náhrada s kusem php kódu (nezapomeň, že preg_replace s přepínačem /e vrací oescapované řetězce) |
$String = preg_replace($Pattern, |
'isset($Variables[\'\2\']) |
? $this->Indent($Variables[\'\2\'], stripslashes(\'\1\')) |
: stripslashes(\'\1\') |
', |
$String); |
return $String; |
} |
function SetVariable($VarName, $VarValue, $Wrap=0) |
// Nastaví hodnotu proměnné |
// Volitelně provede zálámání na zadaný počet znaků a odstranění nadbytečných mezer |
{ |
// Volitelné zalámání a odstranění bílých znaků |
if ($Wrap!=0) |
$VarValue = WrapString($VarValue, $Wrap); |
// Uložení do proměnných |
$this->Info[$VarName] = $VarValue; |
} |
function GetVariable($VarName) |
// Vrátí hodnotu proměnné tak, jak je, včetně mezer a odřádkování |
{ |
if (isset($this->Info[$VarName])) |
return $this->Info[$VarName]; |
else |
return ''; |
} |
function GetString($VarName) |
// Vrátí parametr jako jeden řetězec s redukovanými bílými znaky |
// Tedy bez odřádkování a nadbytečných mezer |
{ |
return WrapString($this->GetVariable($VarName), 0); |
} |
function GetPage() |
// Provede substituce ve stránce a vrátí ji jako řetězec |
// Substituce bere z proměnné $Info |
{ |
// Proveď ve stránce substituce proměnných a vrať výsledek |
return $this->Substitute($this->Info, $this->Page); |
} |
} |
?> |
//Server/PrjInfo/Templates/DirInfo.txt |
---|
0,0 → 1,59 |
// |
// Toto je popisný soubor pro popis obsahu adresáře (příklad) |
// |
// Syntaxe je tato: |
// |
// - Všechny řádky začínající znaky // jsou komentáře |
// |
// - Soubor je v kódování UTF8 |
// |
// - Informace je uvozena značkou [Key] |
// [Key] je klíč, který říká co je to za informaci |
// [Key.en] je klíč s informací pro jazyk en |
// Informace v jazyce má přednost před informací bez jazyka |
// |
// - Pokud klíč začíná Info (například [InfoShortDescription] ) tak se tato |
// informace vloží do místa v templejtu označeném jako $InfoShortDescription |
// |
// - Konec souboru je uvozen značkou [End] |
// |
// - Informace je prostý text (nepoužívejte HTML značky) |
// |
// - Na pořadí položek v souboru nezáleží |
// |
// Zavedené klíče, příklad: |
// |
// [InfoShortDescription.cs] |
// Krátký popis (nadpis) v češtině |
// |
// [InfoShortDescription.en] |
// Short description (title) in English |
// |
// [InfoShortDescription] |
// Short descriptpion for other languages |
// |
// [InfoLongDescription.en] |
// A longer description (one paragraph, 2-4 lines max). The whole sentences |
// with period et the end. |
// |
// [InfoLongDescription.cs] |
// Delší popis na jeden odstavec, tak do 2-4 řádek. V celých větách a tečkou |
// na konci |
// |
// [SortPreferences] |
// Seznam adresářů pro třídění |
// |
[InfoShortDescription.en] |
[InfoShortDescription.cs] |
[InfoLongDescription.en] |
[InfoLongDescription.cs] |
[InfoBuyUST] |
[SortPreferences] |
[End] |
//Server/PrjInfo/Templates/ListDir.cs.ihtml |
---|
0,0 → 1,186 |
<!-- Templejt pro tvorbu indexu --> |
<!-- |
Templejt |
======== |
Tento templejt je zpracováván substitučním strojem, který funguje tak, že |
provede tyto úkony: |
- načte templejt (do své paměti) |
- vyhodí tento komentář (všechny komentáře před první platnou řádkou) |
- najde v něm všechny proměnné ve tvaru $InfoXXX a zapamatuje si je |
- najde v něm všechna nastavení proměnných ve tvaru $InfoXXX = "YYY" a zapamatuje si je |
- vyhodí z templejtu definice proměnných a případný komentář bezprostředně před definicí |
Poté je možné programem upravit obsah proměnných (typicky se generují |
data na základě jiných proměnných a dat z disku na webu). Všechny proměnné |
jsou programu dostupné v podobě pole, kde klíčem je jméno proměnné (bez |
dolaru) a hodnotou je řetězec (i prázdý). Program může proměnné modifikovat |
a definovat další (které se nepoužijí nejsou-li v právě použitém templejtu |
použity). |
- provede substituci proměnných jejich obsahem |
- výsledný řetězec - html stránku - předá klientovi |
Proměnné |
======== |
Proměnné jsou definovány pouze v templejtu. Co není v templejtu |
označeno jako proměnná nenahradí se skutečným obsahem. Aby mohl být |
templejt přehledný je dovoleno používat víceřádkové obsahy proměnných. |
Definice hodnot je ve tvaru $InfoXXX = "YYY", kde |
$InfoXXX je jméno proměnné (XXX jsou písmena, číslice, - a _ ) |
YYY je hodnota proměnné (je v uvozovkách, uvnitř použijte apostrofy) |
Hodnota proměnné může být na více řádků a může obsahovat odakazy na proměnné, |
které se nahradí hodnotou těchto proměnných. |
Definice hodnot proměnných bez jejich použití v templejtu se používá například |
při definici jazykově závislých řetězců pro program (program je jazykově |
nezávislý). |
Substituce |
========== |
Úvodní komentáře na začátku templejtu budou odstraněny. |
Všechny výskyty proměnných v templejtu budou nahrazeny hodnotou proměnných. |
Hodnota proměnné může být prázdná, definovaná v templejtu nebo vypočítaná |
programem. Proměnné mouhou být v templejtu i vícekrát (nahradí se všude). |
Všechny definice hodnot proměnných se z templejtu odstraní. Nezáleží na místě |
definice v templejtu. Vícenásobné uvedení hodnoty si (asi) zapamatuje poslední |
uvedenou hodnotu. |
--> |
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> |
<html> |
<head> |
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> |
<title> $InfoHeadTitle $InfoSection </title> |
<meta name="keywords" content="$InfoKeyWords"> |
<meta name="description" content="$InfoDescription"> |
<!-- AUTOINCLUDE START "Page/Head.cs.ihtml" DO NOT REMOVE --> |
<link rel="StyleSheet" href="/Web/CSS/MLAB.css" type="text/css" title="MLAB základní styl"> |
<link rel="StyleSheet" href="/Web/CSS/MLAB_Print.css" type="text/css" media="print"> |
<link rel="shortcut icon" type="image/x-icon" href="/Web/PIC/MLAB.ico"> |
<script type="text/javascript" src="/Web/JS/MLAB_Menu.js"></script> |
<!-- AUTOINCLUDE END --> |
</head> |
<body lang="cs"> |
<!-- AUTOINCLUDE START "Page/Header.cs.ihtml" DO NOT REMOVE --> |
<!-- ============== HLAVICKA ============== --> |
<div class="Header"> |
<script type="text/javascript"> |
<!-- |
SetRelativePath("/"); |
DrawHeader(); |
// --> |
</script> |
<noscript> |
<p><b> Pro zobrazení (vložení) hlavičky je potřeba JavaScript </b></p> |
</noscript> |
</div> |
<!-- AUTOINCLUDE END --> |
<!-- AUTOINCLUDE START "Page/Menu.cs.ihtml" DO NOT REMOVE --> |
<!-- ============== MENU ============== --> |
<div class="Menu"> |
<script type="text/javascript"> |
<!-- |
SetRelativePath("../../"); |
DrawMenu(); |
// --> |
</script> |
<noscript> |
<p><b> Pro zobrazení (vložení) menu je potřeba JavaScript </b></p> |
</noscript> |
</div> |
<!-- AUTOINCLUDE END --> |
<!-- ============== TEXT ============== --> |
<div class="Text"> |
$InfoNoText = "Popis není k dispozici" |
<p class="Title"> |
$InfoShortDescription |
</p> |
<p class="Subtitle"> |
$InfoLongDescription |
</p> |
<!-- Klikací řádka s cestou --> |
<h1 class="Small"> $InfoPath </h1> |
$InfoPathTitle = "Klikací cesta zpět" |
<!-- PermaLink --> |
<p> |
Permanentní odkaz: |
<a href="$InfoPermaLink" |
title="Permanentní odkaz je zkrácený odkaz na projekt nebo sekci, který se nezmění ani při změně struktury webu.">$InfoPermaLink</a> |
</p> |
<table> |
<tr> |
<th>Název</th> |
<th>Náhled</th> |
<th>Popis</th> |
<th>Projektová data</th> |
<th>Možnost nákupu</th> |
<th>Dokumentace</th> |
</tr> |
<!-- Řádky indexu se vkládají sem --> |
$InfoLine |
<!-- Formát vkládané řádky --> |
$InfoLine = |
" |
<tr> |
<td> $InfoName</td> |
<td> $InfoPicture</td> |
<td> <p><i> $InfoDescripion</i></p> |
<p class='Small'> $InfoLongDescription</p></td> |
<td> $InfoWebSVN <br> $InfoWIKI</td> |
<td> $InfoBuy</td> |
<td> $InfoPDF <br> $InfoHTML</td> |
</tr> |
" |
<!-- Formát elementu pro oddělení adresářů a projektů --> |
$InfoSeparator = |
" |
<tr> |
<td colspan='6'> <hr> </td> |
</tr>" |
<!-- Lepidlo pro spojování více odkazů najednou v jedné položce --> |
$InfoGlue = "<br>" |
<!-- Co se dává do položek, které nemají obsah --> |
$InfoNoPicture = "NoPicture.jpg" |
$InfoNoInfo = "--" |
$InfoSVNTitle = "Přístup ke všem souborům" |
$InfoWikiTitle = "Wiki stránka pro modul" |
</table> |
</div> |
<!-- AUTOINCLUDE START "Page/Footer.cs.ihtml" DO NOT REMOVE --> |
<!-- ============== PATIČKA ============== --> |
<div class="Footer"> |
<script type="text/javascript"> |
<!-- |
SetRelativePath("/"); |
DrawFooter(); |
// --> |
</script> |
<noscript> |
<p><b> Pro zobrazení (vložení) hlavičky je potřeba JavaScript </b></p> |
</noscript> |
</div> |
<!-- AUTOINCLUDE END --> |
</body> |
</html> |
//Server/PrjInfo/Templates/ListDir.en.ihtml |
---|
0,0 → 1,129 |
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> |
<html> |
<head> |
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> |
<title> $InfoHeadTitle $InfoSection </title> |
<meta name="keywords" content="$InfoKeyWords"> |
<meta name="description" content="$InfoDescription"> |
<!-- AUTOINCLUDE START "Page/Head.en.ihtml" DO NOT REMOVE --> |
<link rel="StyleSheet" href="/Web/CSS/MLAB.css" type="text/css" title="MLAB Basic Style"> |
<link rel="StyleSheet" href="/Web/CSS/MLAB_Print.css" type="text/css" media="print"> |
<link rel="shortcut icon" type="image/x-icon" href="/Web/PIC/MLAB.ico"> |
<script type="text/javascript" src="/Web/JS/MLAB_Menu.js"></script> |
<!-- AUTOINCLUDE END --> |
</head> |
<body lang="en"> |
<!-- AUTOINCLUDE START "Page/Header.en.ihtml" DO NOT REMOVE --> |
<!-- ============== HEADER ============== --> |
<div class="Header"> |
<script type="text/javascript"> |
<!-- |
SetRelativePath("/"); |
DrawHeader(); |
// --> |
</script> |
<noscript> |
<p><b> JavaScript is required for including of the header </b></p> |
</noscript> |
</div> |
<!-- AUTOINCLUDE END --> |
<!-- AUTOINCLUDE START "Page/Menu.en.ihtml" DO NOT REMOVE --> |
<!-- ============== MENU ============== --> |
<div class="Menu"> |
<script type="text/javascript"> |
<!-- |
SetRelativePath("/"); |
DrawMenu(); |
// --> |
</script> |
<noscript> |
<p><b> JavaScript is required for including of the menu </b></p> |
</noscript> |
</div> |
<!-- AUTOINCLUDE END --> |
<!-- ============== TEXT ============== --> |
<div class="Text"> |
$InfoNoText = "No Description Available" |
<p class="Title"> |
$InfoShortDescription |
</p> |
<p class="Subtitle"> |
$InfoLongDescription |
</p> |
<!-- Klikací řádka s cestou --> |
<h1 class="Small"> $InfoPath </h1> |
$InfoPathTitle = "The Easy Way Back ..." |
<!-- PermaLink --> |
<p> |
Permanent Link: |
<a href="$InfoPermaLink" |
title="Permanent Link is abbreviated link to project or section which will not be changed when web structure is updated.">$InfoPermaLink</a> |
</p> |
<table> |
<tr> |
<th>Name</th> |
<th>View</th> |
<th>Description</th> |
<th>Project information</th> |
<th>Buy possibility</th> |
<th>Documentation</th> |
</tr> |
<!-- Řádky indexu se vkládají sem --> |
$InfoLine |
<!-- Formát vkládané řádky --> |
$InfoLine = |
" |
<tr> |
<td> $InfoName</td> |
<td> $InfoPicture</td> |
<td> <p><i> $InfoDescripion</i></p> |
<p class='Small'> $InfoLongDescription</p></td> |
<td> $InfoWebSVN <br> $InfoWIKI</td> |
<td> $InfoBuy</td> |
<td> $InfoPDF <br> $InfoHTML</td> |
</tr> |
" |
<!-- Formát elementu pro oddělení adresářů a projektů --> |
$InfoSeparator = |
" |
<tr> |
<td colspan='6'> <hr> </td> |
</tr>" |
<!-- Lepidlo pro spojování více odkazů najednou v jedné položce --> |
$InfoGlue = "<br>" |
<!-- Co se dává do položek, které nemají obsah --> |
$InfoNoPicture = "NoPicture.jpg" |
$InfoNoInfo = "--" |
$InfoSVNTitle = "Access to All Project Files" |
$InfoWikiTitle = "Wiki Page for Module" |
</table> |
</div> |
<!-- AUTOINCLUDE START "Page/Footer.en.ihtml" DO NOT REMOVE --> |
<!-- ============== FOOTER ============== --> |
<div class="Footer"> |
<script type="text/javascript"> |
<!-- |
SetRelativePath("/"); |
DrawFooter(); |
// --> |
</script> |
<noscript> |
<p><b> JavaScript is required for including of the footer </b></p> |
</noscript> |
</div> |
<!-- AUTOINCLUDE END --> |
</body> |
</html> |
//Server/PrjInfo/Templates/ListPrj.cs.ihtml |
---|
0,0 → 1,134 |
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> |
<html> |
<head> |
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> |
<title> $InfoHeadTitle $InfoSection </title> |
<meta name="keywords" content="$InfoKeyWords"> |
<meta name="description" content="$InfoDescription"> |
<!-- AUTOINCLUDE START "Page/Head.cs.ihtml" DO NOT REMOVE --> |
<link rel="StyleSheet" href="/Web/CSS/MLAB.css" type="text/css" title="MLAB základní styl"> |
<link rel="StyleSheet" href="/Web/CSS/MLAB_Print.css" type="text/css" media="print"> |
<link rel="shortcut icon" type="image/x-icon" href="/Web/PIC/MLAB.ico"> |
<script type="text/javascript" src="/Web/JS/MLAB_Menu.js"></script> |
<!-- AUTOINCLUDE END --> |
</head> |
<body lang="cs"> |
<!-- AUTOINCLUDE START "Page/Header.cs.ihtml" DO NOT REMOVE --> |
<!-- ============== HLAVICKA ============== --> |
<div class="Header"> |
<script type="text/javascript"> |
<!-- |
SetRelativePath("/"); |
DrawHeader(); |
// --> |
</script> |
<noscript> |
<p><b> Pro zobrazení (vložení) hlavičky je potřeba JavaScript </b></p> |
</noscript> |
</div> |
<!-- AUTOINCLUDE END --> |
<!-- AUTOINCLUDE START "Page/Menu.cs.ihtml" DO NOT REMOVE --> |
<!-- ============== MENU ============== --> |
<div class="Menu"> |
<script type="text/javascript"> |
<!-- |
SetRelativePath("../../"); |
DrawMenu(); |
// --> |
</script> |
<noscript> |
<p><b> Pro zobrazení (vložení) menu je potřeba JavaScript </b></p> |
</noscript> |
</div> |
<!-- AUTOINCLUDE END --> |
<!-- ============== TEXT ============== --> |
<div class="Text"> |
$InfoNoText = "Popis není k dispozici" |
<p class="Title"> |
$InfoShortDescription |
</p> |
<p class="Center"> |
$InfoPictures |
$InfoPicturesGlue = " " |
<p> |
<p class="Subtitle"> |
$InfoLongDescription |
</p> |
<!-- Klikací řádka s cestou --> |
<h1 class="Small"> $InfoPath </h1> |
$InfoPathTitle = "Klikací cesta zpět" |
<!-- PermaLink --> |
<p> |
Permanentní odkaz: |
<a href="$InfoPermaLink" |
title="Permanentní odkaz je zkrácený odkaz na projekt nebo sekci, který se nezmění ani při změně struktury webu.">$InfoPermaLink</a> |
</p> |
<table> |
<tr> |
<th> Textová Část </th> |
<td> $InfoText </td> |
</tr> |
$InfoSchema |
$InfoWebSVN |
$InfoWIKI |
$InfoBuy |
<!-- Definice jednotlivých položek --> |
$InfoSchema = |
" |
<tr> |
<th> Schéma a seznam součástek </th> |
<td> $InfoSchema </td> |
</tr> |
" |
$InfoWebSVN = |
" |
<tr> |
<th> Všechny soubory projektu</th> |
<td> $InfoWebSVN </td> |
</tr> |
" |
$InfoBuy = |
" |
<tr> |
<th> Možnost nákupu stavebnice </th> |
<td> $InfoBuy </td> |
</tr> |
" |
<!-- Lepidlo --> |
$InfoGlue = "<br>" |
<!-- Co se dává do položek, které nemají obsah --> |
$InfoNoPictureXXXX = "NoPicture.jpg" |
$InfoNoInfo = " " |
$InfoSVNTitleXXXX = "Přístup ke všem souborům" |
$InfoWikiTitleXXXX = "Wiki stránka pro modul" |
</table> |
</div> |
<!-- AUTOINCLUDE START "Page/Footer.cs.ihtml" DO NOT REMOVE --> |
<!-- ============== PATIČKA ============== --> |
<div class="Footer"> |
<script type="text/javascript"> |
<!-- |
SetRelativePath("/"); |
DrawFooter(); |
// --> |
</script> |
<noscript> |
<p><b> Pro zobrazení (vložení) hlavičky je potřeba JavaScript </b></p> |
</noscript> |
</div> |
<!-- AUTOINCLUDE END --> |
</body> |
</html> |
//Server/PrjInfo/Templates/ListPrj.en.ihtml |
---|
0,0 → 1,129 |
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> |
<html> |
<head> |
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> |
<title> $InfoHeadTitle $InfoSection </title> |
<meta name="keywords" content="$InfoKeyWords"> |
<meta name="description" content="$InfoDescription"> |
<!-- AUTOINCLUDE START "Page/Head.en.ihtml" DO NOT REMOVE --> |
<link rel="StyleSheet" href="/Web/CSS/MLAB.css" type="text/css" title="MLAB Basic Style"> |
<link rel="StyleSheet" href="/Web/CSS/MLAB_Print.css" type="text/css" media="print"> |
<link rel="shortcut icon" type="image/x-icon" href="/Web/PIC/MLAB.ico"> |
<script type="text/javascript" src="/Web/JS/MLAB_Menu.js"></script> |
<!-- AUTOINCLUDE END --> |
</head> |
<body lang="en"> |
<!-- AUTOINCLUDE START "Page/Header.en.ihtml" DO NOT REMOVE --> |
<!-- ============== HEADER ============== --> |
<div class="Header"> |
<script type="text/javascript"> |
<!-- |
SetRelativePath("/"); |
DrawHeader(); |
// --> |
</script> |
<noscript> |
<p><b> JavaScript is required for including of the header </b></p> |
</noscript> |
</div> |
<!-- AUTOINCLUDE END --> |
<!-- AUTOINCLUDE START "Page/Menu.en.ihtml" DO NOT REMOVE --> |
<!-- ============== MENU ============== --> |
<div class="Menu"> |
<script type="text/javascript"> |
<!-- |
SetRelativePath("/"); |
DrawMenu(); |
// --> |
</script> |
<noscript> |
<p><b> JavaScript is required for including of the menu </b></p> |
</noscript> |
</div> |
<!-- AUTOINCLUDE END --> |
<!-- ============== TEXT ============== --> |
<div class="Text"> |
$InfoNoText = "No Description Available" |
<p class="Title"> |
$InfoShortDescription |
</p> |
<p class="Subtitle"> |
$InfoLongDescription |
</p> |
<!-- Klikací řádka s cestou --> |
<h1 class="Small"> $InfoPath </h1> |
$InfoPathTitle = "The Easy Way Back ..." |
<!-- PermaLink --> |
<p> |
Permanent Link: |
<a href="$InfoPermaLink" |
title="Permanent Link is abbreviated link to project or section which will not be changed when web structure is updated.">$InfoPermaLink</a> |
</p> |
<table> |
<tr> |
<th>Name</th> |
<th>View</th> |
<th>Description</th> |
<th>Project information</th> |
<th>Buy possibility</th> |
<th>Documentation</th> |
</tr> |
<!-- Řádky indexu se vkládají sem --> |
$InfoLine |
<!-- Formát vkládané řádky --> |
$InfoLine = |
" |
<tr> |
<td> $InfoName</td> |
<td> $InfoPicture</td> |
<td> <p><i> $InfoDescripion</i></p> |
<p class='Small'> $InfoLongDescription</p></td> |
<td> $InfoWebSVN <br> $InfoWIKI</td> |
<td> $InfoBuy</td> |
<td> $InfoPDF <br> $InfoHTML</td> |
</tr> |
" |
<!-- Formát elementu pro oddělení adresářů a projektů --> |
$InfoSeparator = |
" |
<tr> |
<td colspan='6'> <hr> </td> |
</tr>" |
<!-- Lepidlo pro spojování více odkazů najednou v jedné položce --> |
$InfoGlue = "<br>" |
<!-- Co se dává do položek, které nemají obsah --> |
$InfoNoPicture = "NoPicture.jpg" |
$InfoNoInfo = "--" |
$InfoSVNTitle = "Access to All Project Files" |
$InfoWikiTitle = "Wiki Page for Module" |
</table> |
</div> |
<!-- AUTOINCLUDE START "Page/Footer.en.ihtml" DO NOT REMOVE --> |
<!-- ============== FOOTER ============== --> |
<div class="Footer"> |
<script type="text/javascript"> |
<!-- |
SetRelativePath("/"); |
DrawFooter(); |
// --> |
</script> |
<noscript> |
<p><b> JavaScript is required for including of the footer </b></p> |
</noscript> |
</div> |
<!-- AUTOINCLUDE END --> |
</body> |
</html> |
//Server/PrjInfo/Templates/NoPicture.jpg |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
//Server/PrjInfo/Templates/PermaLink.cs.ihtml |
---|
0,0 → 1,140 |
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> |
<html> |
<head> |
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> |
<title> PermaLink </title> |
<meta name="keywords" content="PermaLink permanentní odkaz neměnný odkaz"> |
<meta name="description" content="Stránka pro zpracování permanentních odkazů"> |
<!-- AUTOINCLUDE START "Page/Head.cs.ihtml" DO NOT REMOVE --> |
<link rel="StyleSheet" href="/Web/CSS/MLAB.css" type="text/css" title="MLAB základní styl"> |
<link rel="StyleSheet" href="/Web/CSS/MLAB_Print.css" type="text/css" media="print"> |
<link rel="shortcut icon" type="image/x-icon" href="/Web/PIC/MLAB.ico"> |
<script type="text/javascript" src="/Web/JS/MLAB_Menu.js"></script> |
<!-- AUTOINCLUDE END --> |
<style type="text/css"> |
tr.Section td { |
background-color: #EEFFEE; /* pozadí tabulky */ |
} |
tr.Project td { |
background-color: #FFFFCC; /* pozadí tabulky */ |
} |
.Marked { /* Zvýrazněná část cesty */ |
color: red; |
/*font-size: 130%; /**/ |
font-weight: bolder; |
} |
form { |
background-color: #EEFFEE; |
padding: 6px; |
} |
input { |
background-color: #FFFFCC; |
border: solid 1px red; |
} |
</style> |
</head> |
<body lang="cs" body onLoad="document.forms.FormPermaLink.PermaLink.focus()"> |
<!-- AUTOINCLUDE START "Page/Header.cs.ihtml" DO NOT REMOVE --> |
<!-- ============== HLAVICKA ============== --> |
<div class="Header"> |
<script type="text/javascript"> |
<!-- |
SetRelativePath("/"); |
DrawHeader(); |
// --> |
</script> |
<noscript> |
<p><b> Pro zobrazení (vložení) hlavičky je potřeba JavaScript </b></p> |
</noscript> |
</div> |
<!-- AUTOINCLUDE END --> |
<!-- AUTOINCLUDE START "Page/Menu.cs.ihtml" DO NOT REMOVE --> |
<!-- ============== MENU ============== --> |
<div class="Menu"> |
<script type="text/javascript"> |
<!-- |
SetRelativePath("../../"); |
DrawMenu(); |
// --> |
</script> |
<noscript> |
<p><b> Pro zobrazení (vložení) menu je potřeba JavaScript </b></p> |
</noscript> |
</div> |
<!-- AUTOINCLUDE END --> |
<!-- ============== TEXT ============== --> |
<div class="Text"> |
<h1> Neúplný permanentní odkaz </h1> |
<p> |
<i> Zadali jste nejednoznačný nebo neplatný permanentní odkaz. |
Můžete zadat odkaz přesněji, nebo si vybrat z nalezených kandidátů.</i> |
<br> |
Při hledání nezáleží na velikosti písmen, ani na češtině. Hledá se (i částečná) |
shoda zadaného textu s názvem sekce (adresáře) nebo projektu (modulu). |
Podrobnosti jak fungují permanentní odkazy naleznete v <a href='/PermaLink/PermaLink'>návodu</a>. |
</p> |
<form name="FormPermaLink" method="post" action="http://$InfoThisServer/PermaLink"> |
<label for="PermaLink">Permanentní odkaz</label> |
<input type="text" name="PermaLink" value="$InfoThisLink" size="50"> |
</form> |
<br> |
<table> |
<tr> |
<th> PermaLink </th> |
<th class='Center'> Náhled </th> |
<th> Celá cesta na webu a popis </th> |
</tr> |
<!-- Řádky indexu se vkládají sem --> |
$InfoLine |
<!-- Formát vkládané řádky --> |
$InfoLine = |
" |
<tr class='$InfoType'> |
<td> $InfoPermaLink </td> |
<td class='Center'> $InfoPicture </td> |
<td class='Top'> $InfoPath <br> |
<p> <i> $InfoShortDescription </i> </p> |
<p class='Small'> $InfoLongDescription </p> </td> |
</tr> |
" |
<!-- Co se dává do položek, které nemají obsah --> |
$InfoNoPicture = "NoPicture.jpg" |
$InfoPictureGlue = "<br>" |
$InfoPictureAlt = "Ilustrační obrázek" |
$InfoNoText = "Popis není k dispozici" |
$InfoNoData = "<tr><td class='Center' colspan='3'> Žádná data </td></tr>" |
</table> |
</div> |
<!-- AUTOINCLUDE START "Page/Footer.cs.ihtml" DO NOT REMOVE --> |
<!-- ============== PATIČKA ============== --> |
<div class="Footer"> |
<script type="text/javascript"> |
<!-- |
SetRelativePath("/"); |
DrawFooter(); |
// --> |
</script> |
<noscript> |
<p><b> Pro zobrazení (vložení) hlavičky je potřeba JavaScript </b></p> |
</noscript> |
</div> |
<!-- AUTOINCLUDE END --> |
</body> |
</html> |
//Server/PrjInfo/Templates/PermaLink.en.ihtml |
---|
0,0 → 1,139 |
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> |
<html> |
<head> |
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> |
<title> PermaLink </title> |
<meta name="keywords" content="PermaLink permanent link stable link"> |
<meta name="description" content="The page for permanent link processing"> |
<!-- AUTOINCLUDE START "Page/Head.cs.ihtml" DO NOT REMOVE --> |
<link rel="StyleSheet" href="/Web/CSS/MLAB.css" type="text/css" title="MLAB Basic Style"> |
<link rel="StyleSheet" href="/Web/CSS/MLAB_Print.css" type="text/css" media="print"> |
<link rel="shortcut icon" type="image/x-icon" href="/Web/PIC/MLAB.ico"> |
<script type="text/javascript" src="/Web/JS/MLAB_Menu.js"></script> |
<!-- AUTOINCLUDE END --> |
<style type="text/css"> |
tr.Section td { |
background-color: #EEFFEE; /* pozadí tabulky */ |
} |
tr.Project td { |
background-color: #FFFFCC; /* pozadí tabulky */ |
} |
.Marked { |
color: red; /**/ |
/*font-size: 130%; /**/ |
font-weight: bolder; /**/ |
} |
form { |
background-color: #EEFFEE; |
padding: 6px; |
} |
input { |
background-color: #FFFFCC; |
border: solid 1px red; |
} |
</style> |
</head> |
<body lang="en" onLoad="document.forms.FormPermaLink.PermaLink.focus()"> |
<!-- AUTOINCLUDE START "Page/Header.en.ihtml" DO NOT REMOVE --> |
<!-- ============== HEADER ============== --> |
<div class="Header"> |
<script type="text/javascript"> |
<!-- |
SetRelativePath("/"); |
DrawHeader(); |
// --> |
</script> |
<noscript> |
<p><b> JavaScript is required for including of the header </b></p> |
</noscript> |
</div> |
<!-- AUTOINCLUDE END --> |
<!-- AUTOINCLUDE START "Page/Menu.en.ihtml" DO NOT REMOVE --> |
<!-- ============== MENU ============== --> |
<div class="Menu"> |
<script type="text/javascript"> |
<!-- |
SetRelativePath("/"); |
DrawMenu(); |
// --> |
</script> |
<noscript> |
<p><b> JavaScript is required for including of the menu </b></p> |
</noscript> |
</div> |
<!-- AUTOINCLUDE END --> |
<!-- ============== TEXT ============== --> |
<div class="Text"> |
<h1> Incomplete permanent link </h1> |
<p> |
<i> You have entered unambiguous or invalid link. |
You may enter the link more precisely or you can choose from founded items.</i> |
<br> |
Search engine ignores letter case and accent. It looks for (partial) |
correspondence of given text and section (directory) name or project (module) name. |
How do permanent liks work is written in <a href='/PermaLink/PermaLink'>documentation</a>. |
</p> |
<form name="FormPermaLink" method="post" action="http://$InfoThisServer/PermaLink"> |
<label for="PermaLink">Permanent Link</label> |
<input type="text" name="PermaLink" value="$InfoThisLink" size="50"> |
</form> |
<br> |
<table> |
<tr> |
<th> PermaLink </th> |
<th class='Center'> View </th> |
<th> WEB Path and Description </th> |
</tr> |
<!-- Řádky indexu se vkládají sem --> |
$InfoLine |
<!-- Formát vkládané řádky --> |
$InfoLine = |
" |
<tr> |
<td> $InfoPermaLink </td> |
<td class='Center'> $InfoPicture </td> |
<td class='Top'> $InfoPath <br> |
<p> <i> $InfoShortDescription </i> </p> |
<p class='Small'> $InfoLongDescription </p> </td> |
</tr> |
" |
<!-- Co se dává do položek, které nemají obsah --> |
$InfoNoPicture = "NoPicture.jpg" |
$InfoPictureGlue = "<br>" |
$InfoPictureAlt = "Illustrational Picture" |
$InfoNoText = "No Description Available" |
$InfoNoData = "<tr><td class='Center' colspan='3'> Nothing Found </td></tr>" |
</table> |
</div> |
<!-- AUTOINCLUDE START "Page/Footer.en.ihtml" DO NOT REMOVE --> |
<!-- ============== FOOTER ============== --> |
<div class="Footer"> |
<script type="text/javascript"> |
<!-- |
SetRelativePath("/"); |
DrawFooter(); |
// --> |
</script> |
<noscript> |
<p><b> JavaScript is required for including of the footer </b></p> |
</noscript> |
</div> |
<!-- AUTOINCLUDE END --> |
</body> |
</html> |
//Server/PrjInfo/Templates/PermaLinkPath.cs.ihtml |
---|
0,0 → 1,117 |
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> |
<html> |
<head> |
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> |
<title> PermaLink </title> |
<meta name="keywords" content="PermaLink permanentní odkaz neměnný odkaz"> |
<meta name="description" content="Stránka pro zpracování permanentních odkazů"> |
<!-- AUTOINCLUDE START "Page/Head.cs.ihtml" DO NOT REMOVE --> |
<link rel="StyleSheet" href="/Web/CSS/MLAB.css" type="text/css" title="MLAB základní styl"> |
<link rel="StyleSheet" href="/Web/CSS/MLAB_Print.css" type="text/css" media="print"> |
<link rel="shortcut icon" type="image/x-icon" href="/Web/PIC/MLAB.ico"> |
<script type="text/javascript" src="/Web/JS/MLAB_Menu.js"></script> |
<!-- AUTOINCLUDE END --> |
<style type="text/css"> |
form { |
background-color: #EEFFEE; |
padding: 6px; |
} |
input { |
background-color: #FFFFCC; |
border: solid 1px red; |
} |
</style> |
</head> |
<body lang="cs" body onLoad="document.forms.FormPermaLink.PermaLink.focus()"> |
<!-- AUTOINCLUDE START "Page/Header.cs.ihtml" DO NOT REMOVE --> |
<!-- ============== HLAVICKA ============== --> |
<div class="Header"> |
<script type="text/javascript"> |
<!-- |
SetRelativePath("/"); |
DrawHeader(); |
// --> |
</script> |
<noscript> |
<p><b> Pro zobrazení (vložení) hlavičky je potřeba JavaScript </b></p> |
</noscript> |
</div> |
<!-- AUTOINCLUDE END --> |
<!-- AUTOINCLUDE START "Page/Menu.cs.ihtml" DO NOT REMOVE --> |
<!-- ============== MENU ============== --> |
<div class="Menu"> |
<script type="text/javascript"> |
<!-- |
SetRelativePath("../../"); |
DrawMenu(); |
// --> |
</script> |
<noscript> |
<p><b> Pro zobrazení (vložení) menu je potřeba JavaScript </b></p> |
</noscript> |
</div> |
<!-- AUTOINCLUDE END --> |
<!-- ============== TEXT ============== --> |
<div class="Text"> |
<h1> Permanentní odkaz s cestou k souborům </h1> |
<p> |
<i> Odkazu odpovídá více souborů nebo žádný soubor. |
Můžete odkaz zadat přesněji, nebo si vybrat z nalezených souborů.</i> |
<br> |
Při hledání nezáleží na velikosti písmen, ani na češtině. |
Podrobnosti jak fungují permanentní odkazy naleznete v <a href='/PermaLink/PermaLink'>návodu</a>. |
</p> |
<form name="FormPermaLink" method="post" action="http://$InfoThisServer/PermaLink"> |
<label for="PermaLink">Permanentní odkaz</label> |
<input type="text" name="PermaLink" value="$InfoThisLink" size="50"> |
</form> |
<br> |
<table> |
<tr> |
<th> Cesta </th> |
<th> Soubory </th> |
</tr> |
<!-- Řádky indexu se vkládají sem --> |
$InfoLine |
<!-- Formát vkládané řádky --> |
$InfoLine = |
" |
<tr> |
<td> $InfoPath </td> |
<td> $InfoNames </td> |
</tr> |
" |
<!-- Co se dává do položek, které nemají obsah --> |
$InfoNamesGlue = "<br>" |
$InfoNoData = "<tr><td class='Center' colspan='2'> Žádná data </td></tr>" |
</table> |
</div> |
<!-- AUTOINCLUDE START "Page/Footer.cs.ihtml" DO NOT REMOVE --> |
<!-- ============== PATIČKA ============== --> |
<div class="Footer"> |
<script type="text/javascript"> |
<!-- |
SetRelativePath("/"); |
DrawFooter(); |
// --> |
</script> |
<noscript> |
<p><b> Pro zobrazení (vložení) hlavičky je potřeba JavaScript </b></p> |
</noscript> |
</div> |
<!-- AUTOINCLUDE END --> |
</body> |
</html> |
//Server/PrjInfo/Templates/PermaLinkPath.en.ihtml |
---|
0,0 → 1,117 |
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> |
<html> |
<head> |
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> |
<title> PermaLink </title> |
<meta name="keywords" content="PermaLink permanent link stable link"> |
<meta name="description" content="The page for permanent link processing"> |
<!-- AUTOINCLUDE START "Page/Head.cs.ihtml" DO NOT REMOVE --> |
<link rel="StyleSheet" href="/Web/CSS/MLAB.css" type="text/css" title="MLAB Basic Style"> |
<link rel="StyleSheet" href="/Web/CSS/MLAB_Print.css" type="text/css" media="print"> |
<link rel="shortcut icon" type="image/x-icon" href="/Web/PIC/MLAB.ico"> |
<script type="text/javascript" src="/Web/JS/MLAB_Menu.js"></script> |
<!-- AUTOINCLUDE END --> |
<style type="text/css"> |
form { |
background-color: #EEFFEE; |
padding: 6px; |
} |
input { |
background-color: #FFFFCC; |
border: solid 1px red; |
} |
</style> |
</head> |
<body lang="en" onLoad="document.forms.FormPermaLink.PermaLink.focus()"> |
<!-- AUTOINCLUDE START "Page/Header.en.ihtml" DO NOT REMOVE --> |
<!-- ============== HEADER ============== --> |
<div class="Header"> |
<script type="text/javascript"> |
<!-- |
SetRelativePath("/"); |
DrawHeader(); |
// --> |
</script> |
<noscript> |
<p><b> JavaScript is required for including of the header </b></p> |
</noscript> |
</div> |
<!-- AUTOINCLUDE END --> |
<!-- AUTOINCLUDE START "Page/Menu.en.ihtml" DO NOT REMOVE --> |
<!-- ============== MENU ============== --> |
<div class="Menu"> |
<script type="text/javascript"> |
<!-- |
SetRelativePath("/"); |
DrawMenu(); |
// --> |
</script> |
<noscript> |
<p><b> JavaScript is required for including of the menu </b></p> |
</noscript> |
</div> |
<!-- AUTOINCLUDE END --> |
<!-- ============== TEXT ============== --> |
<div class="Text"> |
<h1> Permanent link with path to file </h1> |
<p> |
<i> More than one or none file was found. |
You may enter the link more precise or you can choose from founded files.</i> |
<br> |
It does not matter on letter case nor letter accent. |
How do permanent liks work is written in <a href='/PermaLink/PermaLink'>documentation</a>. |
</p> |
<form name="FormPermaLink" method="post" action="http://$InfoThisServer/PermaLink"> |
<label for="PermaLink">Permanent Link</label> |
<input type="text" name="PermaLink" value="$InfoThisLink" size="50"> |
</form> |
<br> |
<table> |
<tr> |
<th> Path </th> |
<th> Files </th> |
</tr> |
<!-- Řádky indexu se vkládají sem --> |
$InfoLine |
<!-- Formát vkládané řádky --> |
$InfoLine = |
" |
<tr> |
<td> $InfoPath </td> |
<td> $InfoNames </td> |
</tr> |
" |
<!-- Co se dává do položek, které nemají obsah --> |
$InfoNamesGlue = "<br>" |
$InfoNoData = "<tr><td class='Center' colspan='2'> Nothinh Found </td></tr>" |
</table> |
</div> |
<!-- AUTOINCLUDE START "Page/Footer.en.ihtml" DO NOT REMOVE --> |
<!-- ============== FOOTER ============== --> |
<div class="Footer"> |
<script type="text/javascript"> |
<!-- |
SetRelativePath("/"); |
DrawFooter(); |
// --> |
</script> |
<noscript> |
<p><b> JavaScript is required for including of the footer </b></p> |
</noscript> |
</div> |
<!-- AUTOINCLUDE END --> |
</body> |
</html> |
//Server/PrjInfo/Templates/PrjInfo.cs.ihtml |
---|
0,0 → 1,134 |
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> |
<html> |
<head> |
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> |
<title> $InfoHeadTitle $InfoSection </title> |
<meta name="keywords" content="$InfoKeyWords"> |
<meta name="description" content="$InfoDescription"> |
<!-- AUTOINCLUDE START "Page/Head.cs.ihtml" DO NOT REMOVE --> |
<link rel="StyleSheet" href="/Web/CSS/MLAB.css" type="text/css" title="MLAB základní styl"> |
<link rel="StyleSheet" href="/Web/CSS/MLAB_Print.css" type="text/css" media="print"> |
<link rel="shortcut icon" type="image/x-icon" href="/Web/PIC/MLAB.ico"> |
<script type="text/javascript" src="/Web/JS/MLAB_Menu.js"></script> |
<!-- AUTOINCLUDE END --> |
</head> |
<body lang="cs"> |
<!-- AUTOINCLUDE START "Page/Header.cs.ihtml" DO NOT REMOVE --> |
<!-- ============== HLAVICKA ============== --> |
<div class="Header"> |
<script type="text/javascript"> |
<!-- |
SetRelativePath("/"); |
DrawHeader(); |
// --> |
</script> |
<noscript> |
<p><b> Pro zobrazení (vložení) hlavičky je potřeba JavaScript </b></p> |
</noscript> |
</div> |
<!-- AUTOINCLUDE END --> |
<!-- AUTOINCLUDE START "Page/Menu.cs.ihtml" DO NOT REMOVE --> |
<!-- ============== MENU ============== --> |
<div class="Menu"> |
<script type="text/javascript"> |
<!-- |
SetRelativePath("../../"); |
DrawMenu(); |
// --> |
</script> |
<noscript> |
<p><b> Pro zobrazení (vložení) menu je potřeba JavaScript </b></p> |
</noscript> |
</div> |
<!-- AUTOINCLUDE END --> |
<!-- ============== TEXT ============== --> |
<div class="Text"> |
$InfoNoText = "Popis není k dispozici" |
<p class="Title"> |
$InfoShortDescription |
</p> |
<p class="Center"> |
$InfoPictures |
$InfoPicturesGlue = " " |
<p> |
<p class="Subtitle"> |
$InfoLongDescription |
</p> |
<!-- Klikací řádka s cestou --> |
<h1 class="Small"> $InfoPath </h1> |
$InfoPathTitle = "Klikací cesta zpět" |
<!-- PermaLink --> |
<p> |
Permanentní odkaz: |
<a href="$InfoPermaLink" |
title="Permanentní odkaz je zkrácený odkaz na projekt nebo sekci, který se nezmění ani při změně struktury webu.">$InfoPermaLink</a> |
</p> |
<table> |
<tr> |
<th> Textová Část </th> |
<td> $InfoText </td> |
</tr> |
$InfoSchema |
$InfoWebSVN |
$InfoWIKI |
$InfoBuy |
<!-- Definice jednotlivých položek --> |
$InfoSchema = |
" |
<tr> |
<th> Schéma a seznam součástek </th> |
<td> $InfoSchema </td> |
</tr> |
" |
$InfoWebSVN = |
" |
<tr> |
<th> Všechny soubory projektu</th> |
<td> $InfoWebSVN </td> |
</tr> |
" |
$InfoBuy = |
" |
<tr> |
<th> Možnost nákupu stavebnice </th> |
<td> $InfoBuy </td> |
</tr> |
" |
<!-- Lepidlo --> |
$InfoGlue = "<br>" |
<!-- Co se dává do položek, které nemají obsah --> |
$InfoNoPictureXXXX = "NoPicture.jpg" |
$InfoNoInfo = " " |
$InfoSVNTitleXXXX = "Přístup ke všem souborům" |
$InfoWikiTitleXXXX = "Wiki stránka pro modul" |
</table> |
</div> |
<!-- AUTOINCLUDE START "Page/Footer.cs.ihtml" DO NOT REMOVE --> |
<!-- ============== PATIČKA ============== --> |
<div class="Footer"> |
<script type="text/javascript"> |
<!-- |
SetRelativePath("/"); |
DrawFooter(); |
// --> |
</script> |
<noscript> |
<p><b> Pro zobrazení (vložení) hlavičky je potřeba JavaScript </b></p> |
</noscript> |
</div> |
<!-- AUTOINCLUDE END --> |
</body> |
</html> |
//Server/PrjInfo/Templates/PrjInfo.en.ihtml |
---|
0,0 → 1,129 |
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> |
<html> |
<head> |
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> |
<title> $InfoHeadTitle $InfoSection </title> |
<meta name="keywords" content="$InfoKeyWords"> |
<meta name="description" content="$InfoDescription"> |
<!-- AUTOINCLUDE START "Page/Head.en.ihtml" DO NOT REMOVE --> |
<link rel="StyleSheet" href="/Web/CSS/MLAB.css" type="text/css" title="MLAB Basic Style"> |
<link rel="StyleSheet" href="/Web/CSS/MLAB_Print.css" type="text/css" media="print"> |
<link rel="shortcut icon" type="image/x-icon" href="/Web/PIC/MLAB.ico"> |
<script type="text/javascript" src="/Web/JS/MLAB_Menu.js"></script> |
<!-- AUTOINCLUDE END --> |
</head> |
<body lang="en"> |
<!-- AUTOINCLUDE START "Page/Header.en.ihtml" DO NOT REMOVE --> |
<!-- ============== HEADER ============== --> |
<div class="Header"> |
<script type="text/javascript"> |
<!-- |
SetRelativePath("/"); |
DrawHeader(); |
// --> |
</script> |
<noscript> |
<p><b> JavaScript is required for including of the header </b></p> |
</noscript> |
</div> |
<!-- AUTOINCLUDE END --> |
<!-- AUTOINCLUDE START "Page/Menu.en.ihtml" DO NOT REMOVE --> |
<!-- ============== MENU ============== --> |
<div class="Menu"> |
<script type="text/javascript"> |
<!-- |
SetRelativePath("/"); |
DrawMenu(); |
// --> |
</script> |
<noscript> |
<p><b> JavaScript is required for including of the menu </b></p> |
</noscript> |
</div> |
<!-- AUTOINCLUDE END --> |
<!-- ============== TEXT ============== --> |
<div class="Text"> |
$InfoNoText = "No Description Available" |
<p class="Title"> |
$InfoShortDescription |
</p> |
<p class="Subtitle"> |
$InfoLongDescription |
</p> |
<!-- Klikací řádka s cestou --> |
<h1 class="Small"> $InfoPath </h1> |
$InfoPathTitle = "The Easy Way Back ..." |
<!-- PermaLink --> |
<p> |
Permanent Link: |
<a href="$InfoPermaLink" |
title="Permanent Link is abbreviated link to project or section which will not be changed when web structure is updated.">$InfoPermaLink</a> |
</p> |
<table> |
<tr> |
<th>Name</th> |
<th>View</th> |
<th>Description</th> |
<th>Project information</th> |
<th>Buy possibility</th> |
<th>Documentation</th> |
</tr> |
<!-- Řádky indexu se vkládají sem --> |
$InfoLine |
<!-- Formát vkládané řádky --> |
$InfoLine = |
" |
<tr> |
<td> $InfoName</td> |
<td> $InfoPicture</td> |
<td> <p><i> $InfoDescripion</i></p> |
<p class='Small'> $InfoLongDescription</p></td> |
<td> $InfoWebSVN <br> $InfoWIKI</td> |
<td> $InfoBuy</td> |
<td> $InfoPDF <br> $InfoHTML</td> |
</tr> |
" |
<!-- Formát elementu pro oddělení adresářů a projektů --> |
$InfoSeparator = |
" |
<tr> |
<td colspan='6'> <hr> </td> |
</tr>" |
<!-- Lepidlo pro spojování více odkazů najednou v jedné položce --> |
$InfoGlue = "<br>" |
<!-- Co se dává do položek, které nemají obsah --> |
$InfoNoPicture = "NoPicture.jpg" |
$InfoNoInfo = "--" |
$InfoSVNTitle = "Access to All Project Files" |
$InfoWikiTitle = "Wiki Page for Module" |
</table> |
</div> |
<!-- AUTOINCLUDE START "Page/Footer.en.ihtml" DO NOT REMOVE --> |
<!-- ============== FOOTER ============== --> |
<div class="Footer"> |
<script type="text/javascript"> |
<!-- |
SetRelativePath("/"); |
DrawFooter(); |
// --> |
</script> |
<noscript> |
<p><b> JavaScript is required for including of the footer </b></p> |
</noscript> |
</div> |
<!-- AUTOINCLUDE END --> |
</body> |
</html> |
//Server/PrjInfo/aaa.php |
---|
0,0 → 1,28 |
<?php phpinfo(); |
#levenstein - vzdálenost řetězců |
/* |
// Read the file, unserialize it to an array |
$urlArray = unserialize (file_get_contents($arrayFile)); |
// Write out the serialized array back to disk |
file_put_contents ($arrayFile, serialize($urlArray)); |
*/ |
function print_r_tree($data) |
{ |
// capture the output of print_r |
$out = print_r($data, true); |
// replace something like '[element] => <newline> (' with <a href="javascript:toggleDisplay('...');">...</a><div id="..." style="display: none;"> |
$out = preg_replace('/([ \t]*)(\[[^\]]+\][ \t]*\=\>[ \t]*[a-z0-9 \t_]+)\n[ \t]*\(/iUe',"'\\1<a href=\"javascript:toggleDisplay(\''.(\$id = substr(md5(rand().'\\0'), 0, 7)).'\');\">\\2</a><div id=\"'.\$id.'\" style=\"display: none;\">'", $out); |
// replace ')' on its own on a new line (surrounded by whitespace is ok) with '</div> |
$out = preg_replace('/^\s*\)\s*$/m', '</div>', $out); |
// print the javascript function toggleDisplay() and then the transformed output |
echo '<script language="Javascript">function toggleDisplay(id) { document.getElementById(id).style.display = (document.getElementById(id).style.display == "block") ? "none" : "block"; }</script>'."\n$out"; |
} |
?> |