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&amp;path=';
$Link .= $Path;
$Link .= '/';
if ($Lang=='cs')
$Link .= '&amp;langchoice=Česky';
else
$Link .= '&amp;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 = '&amp;';
}
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&amp;path=';
$Link .= $Path;
$Link .= '/';
if ($Lang=='cs')
$Link .= '&amp;langchoice=Česky';
else
$Link .= '&amp;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 = '&amp;';
}
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 = "&nbsp;"
<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 = "&nbsp;"
$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 = "&nbsp;"
<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 = "&nbsp;"
$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";
}
 
?>