public function getHtml() { $id = DisplayManager::getUniqueHTMLId('collapsible'); $html = '<div class="collapsible" id="' . $id . '"' . "\n"; $html .= '<div class="collapsibleheader togglevisibility" onclick=\'toggleVisibility("' . $id . '");\' >'; $html .= $this->title->getHtml() . '</div>' . "\n"; $html .= '<div class="collapsiblecontent">'; $html .= $this->content->getHtml(); $html .= '</div>'; $html .= "</div>\n\n\n"; if ($this->collapsed) { $html .= '<script type="text/javascript"> toggleVisibility("'; $html .= $id . "\") </script>\n"; } return $html; }
public function getHtml() { $activeTab = $this->getActiveTab(); $code = '<div class=\'tab_header\'>'; foreach ($this->tabs as $key => $value) { $link = FajrUtils::linkUrl(array_merge($this->urlParams, array($this->name => $key))); if ($key == $activeTab['name']) { $class = 'tab_selected'; } else { $class = 'tab'; } $code .= '<span class=\'' . $class . '\'><a href="' . $link . '">' . $value['title'] . '</a></span>'; } $code .= '</div>'; try { $code .= $activeTab['content']->getHtml(); } catch (Exception $e) { DisplayManager::addException($e); } return $code; }
public function runLogic(Trace $trace, HttpConnection $connection) { $serverConnection = new AIS2ServerConnection($connection, new AIS2ServerUrlMap(FajrConfig::get('AIS2.ServerName'))); $timer = new SystemTimer(); if (Input::get('logout') !== null) { FajrUtils::logout($serverConnection); // TODO(anty): fix this in a better way if (FajrConfig::get('Login.Type') == 'cosign') { // location header set in CosignProxyLogin // but we can't exit there because // the session wouldn't get dropped exit; } FajrUtils::redirect(array(), 'index.php'); } $loggedIn = FajrUtils::isLoggedIn($serverConnection); $cosignLogin = $this->provideLogin(); if (!$loggedIn && $cosignLogin != null) { FajrUtils::login($trace->addChild("logging in"), $cosignLogin, $serverConnection); $loggedIn = true; } if ($loggedIn) { DisplayManager::addContent('<div class=\'logout\'><a class="button negative" href="' . FajrUtils::linkUrl(array('logout' => true)) . '"> <img src="images/door_in.png" alt=""/>Odhlásiť</a></div>'); $screenFactory = new VSES017\VSES017_factory($serverConnection); $adminStudia = $screenFactory->newAdministraciaStudiaScreen($trace); if (Input::get('studium') === null) { Input::set('studium', 0); } $zoznamStudii = $adminStudia->getZoznamStudii($trace->addChild("Get Zoznam Studii:")); $zoznamStudiiTable = new Table(TableDefinitions::zoznamStudii(), 'studium', array('tab' => Input::get('tab'))); $zoznamStudiiTable->addRows($zoznamStudii->getData()); $zoznamStudiiTable->setOption('selected_key', Input::get('studium')); $zoznamStudiiTable->setOption('collapsed', true); $zoznamStudiiCollapsible = new Collapsible(new HtmlHeader('Zoznam štúdií'), $zoznamStudiiTable, true); DisplayManager::addContent($zoznamStudiiCollapsible->getHtml()); $zapisneListy = $adminStudia->getZapisneListy($trace->addChild('getZapisneListy'), Input::get('studium')); $zapisneListyTable = new Table(TableDefinitions::zoznamZapisnychListov(), 'list', array('studium' => Input::get('studium'), 'tab' => Input::get('tab'))); if (Input::get('list') === null) { $tmp = $zapisneListy->getData(); $lastList = end($tmp); Input::set('list', $lastList['index']); } $zapisneListyTable->addRows($zapisneListy->getData()); $zapisneListyTable->setOption('selected_key', Input::get('list')); $zapisneListyTable->setOption('collapsed', true); $zapisneListyCollapsible = new Collapsible(new HtmlHeader('Zoznam zápisných listov'), $zapisneListyTable, true); DisplayManager::addContent($zapisneListyCollapsible->getHtml()); $terminyHodnotenia = $screenFactory->newTerminyHodnoteniaScreen($trace, $adminStudia->getZapisnyListIdFromZapisnyListIndex($trace, Input::get('list')), $adminStudia->getStudiumIdFromZapisnyListIndex($trace, Input::get('list'))); if (Input::get('tab') === null) { Input::set('tab', 'TerminyHodnotenia'); } $tabs = new TabManager('tab', array('studium' => Input::get('studium'), 'list' => Input::get('list'))); // FIXME: chceme to nejak refaktorovat, aby sme nevytvarali zbytocne // objekty, ktore v konstruktore robia requesty $hodnoteniaScreen = $screenFactory->newHodnoteniaPriemeryScreen($trace, $adminStudia->getZapisnyListIdFromZapisnyListIndex($trace, Input::get('list'))); $tabs->addTab('TerminyHodnotenia', 'Moje skúšky', new MojeTerminyHodnoteniaCallback($trace, $terminyHodnotenia, $hodnoteniaScreen)); $tabs->addTab('ZapisSkusok', 'Prihlásenie na skúšky', new ZoznamTerminovCallback($trace, $terminyHodnotenia, $hodnoteniaScreen)); $tabs->addTab('ZapisnyList', 'Zápisný list', new ZapisanePredmetyCallback($trace, $terminyHodnotenia)); $tabs->addTab('Hodnotenia', 'Hodnotenia/Priemery', new HodnoteniaCallback($trace, $hodnoteniaScreen)); $tabs->setActive(Input::get('tab')); DisplayManager::addContent($tabs->getHtml()); $version = '<div>Fajr verzia ' . hescape(Version::getVersionString()) . '</div>'; DisplayManager::addContent($version); $statistics = "<div> Fajr made " . $this->statsConnection->getTotalCount() . " requests and downloaded " . $this->rawStatsConnection->getTotalSize() . " bytes (" . $this->statsConnection->getTotalSize() . " bytes uncompressed) of data from AIS2 in " . sprintf("%.3f", $this->statsConnection->getTotalTime()) . " seconds. It took " . sprintf("%.3f", $timer->getElapsedTime()) . " seconds to generate this page.</div>"; DisplayManager::addContent($statistics); } else { if (FajrConfig::get('Login.Type') == 'password') { DisplayManager::addContent('loginBox', true); } else { if (FajrConfig::get('Login.Type') == 'cosign') { DisplayManager::addContent('cosignLoginBox', true); } else { throw new Exception('Nespravna hodnota konfiguracnej volby Login.Type'); } } DisplayManager::addContent('warnings', true); DisplayManager::addContent('terms', true); DisplayManager::addContent('credits', true); $version = "<div class='version prepend-1 span-21 last increase-line-height'>\n<strong>Verzia fajru:</strong> \n"; $version .= hescape(Version::getVersionString()); $version .= '</div>'; DisplayManager::addContent($version); DisplayManager::addContent(Version::getChangelog(), false); } }
/** * Pomocou nastavených atribútov vygeneruje tabuľku v HTML formáte aj s linkami. * @return string Vygenerovaná tabuľka v HTML formáte. */ public function getHtml() { $id = DisplayManager::getUniqueHTMLId('table'); $table = "\n<!-- ******* Table ****** -->\n"; if (!is_array($this->data) || empty($this->data[0])) { $table .= '<font color="red"> Dáta pre túto tabuľku neboli nájdené.</font><hr class="space" />'; return $table; } $table .= "<table id=\"" . $id . "\"class='colstyle-sorting'>\n<thead>\n<tr>\n"; $columns = $this->getColumns(); foreach ($columns as $key => $value) { $table .= ' <th class="sortable">' . $value['title'] . "</th>\n"; } $table .= "</tr>\n"; $table .= "\n</thead>\n"; // Tu by mal byt TFOOT, vid nizsie $table .= "<tbody>\n"; foreach ($this->data as $row) { $table .= $row->getHtml(); } $table .= "</tbody>"; // FIXME: Tento TFOOT by mal byt podla specifikacie pred TBODY, // ale ked je tu, je mozne css-kom vypnut opakovanie // footer riadkov pri tlaci (inak by boli na vrchu tabulky). // Ak chceme mat vystup 100% validny, treba upravit sorter skript, // aby bral do uvahy nejaky class a zmenit tento TFOOT na TBODY. if ($this->footer !== null) { $table .= '<tfoot>'; foreach ($this->footer as $row) { $table .= $row->getHtml(); } $table .= "</tfoot>\n"; } $table .= "</table>\n"; return $table; }
* Wrong www root detection. */ if (!defined('_FAJR')) { die('<html><head>' . '<title>Varovanie</title>' . '<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />' . '</head><body>' . '<h1>Varovanie</h1>' . '<p>Máte zle nastavený server, tento súbor by nemal byť ' . 'priamo prístupný. Prosím nastavte server tak, aby sa dalo ' . 'dostať len k podadresáru <code>web</code> a použite ' . '<code>index.php</code> v ňom</p>' . '</body></html>'); } // TODO(ppershing): create helper objects and configuration modules for these constants error_reporting(E_ALL | E_STRICT); date_default_timezone_set('Europe/Bratislava'); mb_internal_encoding("UTF-8"); // register Symfony autoloader first, because ours will eat the loading instead. require_once '../third_party/symfony_di/lib/sfServiceContainerAutoloader.php'; sfServiceContainerAutoloader::register(); // register our autoloader require_once 'libfajr/libfajr.php'; Loader::register(); Loader::searchForClasses(dirname(__FILE__), true); // TODO(ppershing): move this to libfajr/Loader.php as that is the right place for it require_once 'libfajr/Assert.php'; // is there configuration.php file present? if (!FajrConfig::isConfigured()) { DisplayManager::addContent('notConfigured', true); echo DisplayManager::display(); session_write_close(); die; } // bootstrapping whole application $modules = array(new SessionInitializerModule(), new TraceModule()); $injector = new Injector($modules); $fajr = new Fajr($injector); $fajr->run(); session_write_close();