FormatHTML = false; $this->ShowRuntimeInfo = false; $this->Encoding = 'utf-8'; $this->Style = 'default'; // TODO: Move to external code if (isset($this->System->Config['Web']['FormatHTML'])) $this->FormatHTML = $this->System->Config['Web']['FormatHTML']; if (isset($this->System->Config['Web']['ShowRuntimeInfo'])) $this->ShowRuntimeInfo = $this->System->Config['Web']['ShowRuntimeInfo']; if (isset($this->System->Config['Web']['Charset'])) $this->Encoding = $this->System->Config['Web']['Charset']; if (isset($this->System->Config['Web']['Style'])) $this->Style = $this->System->Config['Web']['Style']; } function SystemMessage(string $Title, string $Text): string { return '

'.$Title.'

'.$Text.'
'; //ShowFooter(); //die(); } function ShowNavigation(Page $Page): string { if (array_key_exists('REQUEST_URI', $_SERVER)) $ScriptName = $_SERVER['REQUEST_URI']; else $ScriptName = ''; while (strpos($ScriptName, '//') !== false) $ScriptName = str_replace('//', '/', $ScriptName); if (strpos($ScriptName, '?') !== false) $ScriptName = substr($ScriptName, 0, strrpos($ScriptName, '?')); $ScriptName = substr($ScriptName, strlen($this->System->Link(''))); if (substr($ScriptName, -1, 1) == '/') $ScriptName = substr($ScriptName, 0, -1); $Output = ''; while ($Page) { $Output = ' > '.$Page->Title.''.$Output; if (class_exists($Page->ParentClass)) { $PageClass = $Page->ParentClass; $Page = new $PageClass($this->System); $ScriptName = substr($ScriptName, 0, strrpos($ScriptName, '/')); } else $Page = null; } $Output = substr($Output, 6); return $Output; } function ShowHeader(Page $Page): string { $Path = $Page->Title; $Navigation = $this->ShowNavigation($Page); $BodyParam = ''; if (isset($Page->Load)) $BodyParam .= ' onload="'.$Page->Load.'"'; if (isset($Page->Unload)) $BodyParam .= ' onunload="'.$Page->Unload.'"'; $Output = 'Encoding.'"?>'."\n". ''. ''. ''. ''; $Output .= ''; $Output .= ''. ''. ''. ''.$Path.' - '.$this->System->Config['Web']['Title'].''; // Show page headers $Bar = ''; foreach ($this->System->PageHeaders as $Item) $Output .= call_user_func($Item); $Output .= ''; $Output .= Core::Cast($this->System)->ShowMenu(); if ($this->BasicHTML == false) { //$Output .= '
'.$Title.'
'; if ($this->ShowNavigation) $Output .= '
Navigace :: '.$Navigation.'
'; } return $Output; } function ShowFooter(): string { global $ScriptTimeStart, $Revision, $ReleaseTime; $Time = round(GetMicrotime() - $ScriptTimeStart, 2); $Output = ''; if ($this->BasicHTML == false) { $Output .= ''; } $Output .= ''; return $Output; } function GetOutput(Page $Page): string { $Page->OnSystemMessage = array($this->System->BaseView, 'SystemMessage'); $Output = $Page->Show(); if ($Page->RawPage == false) { $Output = $this->ShowHeader($Page).$Output.$this->ShowFooter(); if ($this->FormatHTML == true) $Output = $this->FormatOutput($Output); } return $Output; } function NewPage(string $ClassName): Page { $Page = new $ClassName(); $Page->System = $this->System; $Page->Database = $this->Database; $Page->FormatHTML = $this->FormatHTML; return $Page; } // XML formating function function FormatOutput(string $s): string { $out = ''; $nn = 0; $n = 0; while ($s != '') { $start = strpos($s, '<'); $end = strpos($s, '>'); if ($start != 0) { $end = $start - 1; $start = 0; } $line = trim(substr($s, $start, $end + 1)); if (strlen($line) > 0) if ($line[0] == '<') { if ($s[$start + 1] == '/') { $n = $n - 2; $nn = $n; } else { if (strpos($line, ' ')) $cmd = substr($line, 1, strpos($line, ' ') - 1); else $cmd = substr($line, 1, strlen($line) - 2); //echo('['.$cmd.']'); if (strpos($s, '')) $n = $n + 2; } }// else $line = '['.$line.']'; //if ($line != '') echo(htmlspecialchars(str_repeat(' ',$nn).$line."\n")); if ($line != '') $out .= (str_repeat(' ', $nn).$line."\n"); $s = substr($s, $end + 1, strlen($s)); $nn = $n; } return $out; } }