コード例 #1
0
 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;
 }
コード例 #2
0
    public function getHtml()
    {
        $predmetyZapisnehoListu = $this->skusky->getPredmetyZapisnehoListu();
        $hodnoteniaData = array();
        foreach ($this->hodnotenia->getHodnotenia()->getData() as $row) {
            $hodnoteniaData[$row['nazov']] = $row;
        }
        $this->hodnoteniaData = $hodnoteniaData;
        if (Input::get('action') !== null) {
            assert(Input::get("action") == "prihlasNaSkusku");
            if ($this->prihlasNaSkusku(Input::get("prihlasPredmetIndex"), Input::get("prihlasTerminIndex"))) {
                FajrUtils::redirect(array('tab' => 'TerminyHodnotenia'));
            } else {
                throw new Exception('Na skúšku sa nepodarilo prihlásiť.');
            }
        }
        $baseUrlParams = array("studium" => Input::get("studium"), "list" => Input::get("list"), "tab" => Input::get("tab"));
        $terminyTable = new Table(TableDefinitions::vyberTerminuHodnoteniaJoined(), array('termin' => 'index', 'predmet' => 'predmetIndex'), $baseUrlParams);
        $terminyCollapsible = new Collapsible('Termíny, na ktoré sa môžem prihlásiť', $terminyTable);
        $actionUrl = FajrUtils::linkUrl($baseUrlParams);
        foreach ($predmetyZapisnehoListu->getData() as $predmetRow) {
            $terminy = $this->skusky->getZoznamTerminovDialog($predmetRow['index'])->getZoznamTerminov();
            foreach ($terminy->getData() as $row) {
                $row['predmet'] = $predmetRow['nazov'];
                $row['predmetIndex'] = $predmetRow['index'];
                $hash = $this->hashNaPrihlasenie($predmetRow['nazov'], $row);
                $mozeSaPrihlasit = $this->mozeSaPrihlasit($row);
                if ($mozeSaPrihlasit == self::PRIHLASIT_MOZE || $mozeSaPrihlasit == self::PRIHLASIT_MOZE_ZNAMKA) {
                    $row['prihlas'] = "<form method='post' action='{$actionUrl}'><div>\n\t\t\t\t\t\t\t<input type='hidden' name='action' value='prihlasNaSkusku'/>\n\t\t\t\t\t\t\t<input type='hidden' name='prihlasPredmetIndex'\n\t\t\t\t\t\t\tvalue='" . $row['predmetIndex'] . "'/>\n\t\t\t\t\t\t\t<input type='hidden' name='prihlasTerminIndex'\n\t\t\t\t\t\t\tvalue='" . $row['index'] . "'/>\n\t\t\t\t\t\t\t<input type='hidden' name='hash' value='{$hash}'/>\n\t\t\t\t\t\t\t<button name='submit' type='submit' class='tableButton positive'>\n\t\t\t\t\t\t\t\t<img src='images/add.png' alt=''>Prihlás ma!\n\t\t\t\t\t\t\t</button></div></form>";
                    if ($mozeSaPrihlasit == self::PRIHLASIT_MOZE_ZNAMKA) {
                        $row['prihlas'] = 'Už máš zápísané"' . $hodnoteniaData[$row['predmet']]['znamka'] . '"' . $row['prihlas'];
                    }
                } else {
                    if ($mozeSaPrihlasit == self::PRIHLASIT_NEMOZE_CAS) {
                        $row['prihlas'] = 'Nedá sa (neskoro)';
                    } else {
                        if ($mozeSaPrihlasit == self::PRIHLASIT_NEMOZE_POCET) {
                            $row['prihlas'] = 'Termín je plný!';
                        } else {
                            if ($mozeSaPrihlasit == self::PRIHLASIT_NEMOZE_ZNAMKA) {
                                $row['prihlas'] = 'Už máš zápísané"' . $hodnoteniaData[$row['predmet']]['znamka'] . '"';
                            } else {
                                if ($mozeSaPrihlasit == self::PRIHLASIT_NEMOZE_INE) {
                                    $row['prihlas'] = 'Nedá sa, dôvod neznámy';
                                }
                            }
                        }
                    }
                }
                $terminyTable->addRow($row, null);
            }
        }
        if (Input::get('termin') != null && Input::get('predmet') != null) {
            $terminyTable->setOption('selected_key', array('index' => Input::get('termin'), 'predmetIndex' => Input::get('predmet')));
        }
        $html = $terminyCollapsible->getHtml();
        if (Input::get('termin') != null && Input::get('predmet') != null) {
            $prihlaseni = $this->skusky->getZoznamTerminovDialog(Input::get('predmet'))->getZoznamPrihlasenychDialog(Input::get('termin'))->getZoznamPrihlasenych();
            $zoznamPrihlasenychTable = new Table(TableDefinitions::zoznamPrihlasenych(), null, array('studium', 'list'));
            $zoznamPrihlasenychCollapsible = new Collapsible('Zoznam prihlásených
					na vybratý termín', $zoznamPrihlasenychTable);
            $zoznamPrihlasenychTable->addRows($prihlaseni->getData());
            $html .= $zoznamPrihlasenychCollapsible->getHtml();
        }
        return $html;
    }
コード例 #3
0
ファイル: Table.php プロジェクト: BGCX067/fajr-svn-to-git
 public function getHtml()
 {
     $table = $this->table;
     $columns = $table->getColumns();
     $class = '';
     if (isset($this->options['class'])) {
         $class = $this->options['class'];
     }
     if (!$this->isFooter) {
         if ($table->GetOption('selected_key') !== null) {
             $sKey = $table->getOption('selected_key');
             if (is_array($sKey)) {
                 $selected = true;
                 foreach ($sKey as $key => $value) {
                     if ($value != $this->data[$key]) {
                         $selected = false;
                     }
                 }
             } else {
                 $selected = $sKey == $this->data['index'];
             }
             if ($selected) {
                 $class = 'selected';
             }
         }
     }
     $row = "<tr class='{$class}'>\n";
     if ($table->newKey) {
         if (is_array($table->newKey)) {
             $params = $table->urlParams;
             foreach ($table->newKey as $key => $tableCol) {
                 $params[$key] = $this->data[$tableCol];
             }
             $link = FajrUtils::linkUrl($params);
         } else {
             $link = FajrUtils::linkUrl(array_merge($table->urlParams, array($table->newKey => $this->data['index'])));
         }
     }
     $colno = 0;
     foreach ($columns as $key => $column) {
         $real_key = substr($key, 0, 32);
         if (isset($this->data[$real_key])) {
             $cell_value = $this->data[$real_key];
         } else {
             $cell_value = '';
         }
         if ($cell_value == "") {
             $cell_value = "&nbsp;";
         }
         $cell = '    <td>';
         if ($table->newKey && $colno == 0) {
             $cell .= '<a href="' . $link . '">' . $cell_value . "</a>";
         } else {
             $cell .= $cell_value;
         }
         $cell .= "</td>\n";
         $row .= $cell;
         $colno++;
     }
     $row .= "</tr>\n";
     return $row;
 }
コード例 #4
0
ファイル: fajr.php プロジェクト: BGCX067/fajr-svn-to-git
 public function run()
 {
     $timer = new SystemTimer();
     $connection = null;
     $statsConnection = null;
     $rawStatsConnection = null;
     $trace = new NullTrace();
     if (FajrConfig::get('Debug.Trace') === true) {
         $trace = new HtmlTrace($timer, "--Trace--");
     }
     try {
         Input::prepare();
         $login = Input::get('login');
         Input::set('login', null);
         $krbpwd = Input::get('krbpwd');
         Input::set('krbpwd', null);
         $cosignCookie = Input::get('cosignCookie');
         Input::set('cosignCookie', null);
         // FIXME this should be refactored
         if ($login !== null && $krbpwd !== null || $cosignCookie !== null) {
             // we are going to log in, so we get a clean session
             // this needs to be done before a connection
             // is created, because we pass cookie file name
             // that contains session_id into AIS2CurlConnection
             // If we regenerated the session id afterwards,
             // we could not find the cookie file after a redirect
             FajrUtils::dropSession();
         }
         $connection = new connection\CurlConnection(FajrUtils::getCookieFile());
         $rawStatsConnection = new connection\StatsConnection($connection, new SystemTimer());
         $connection = $rawStatsConnection;
         $connection = new connection\GzipDecompressingConnection($connection, FajrConfig::getDirectory('Path.Temporary'));
         $connection = new connection\AIS2ErrorCheckingConnection($connection);
         $statsConnection = new connection\StatsConnection($connection, new SystemTimer());
         $connection = $statsConnection;
         $simpleConnection = new connection\HttpToSimpleConnectionAdapter($connection);
         AIS2Utils::connection($simpleConnection);
         // toto tu je docasne
         if (Input::get('logout') !== null) {
             FajrUtils::logout($connection);
             FajrUtils::redirect();
         }
         if ($login !== null && $krbpwd !== null) {
             $loggedIn = FajrUtils::login(new CosignLogin($login, $krbpwd), $connection);
             $login = null;
             $krbpwd = null;
         } else {
             if ($cosignCookie !== null) {
                 $loggedIn = FajrUtils::login(new AIS2CookieLogin($cosignCookie), $connection);
                 $cosignCookie = null;
             } else {
                 $loggedIn = FajrUtils::isLoggedIn();
             }
         }
         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>');
             $adminStudia = new VSES017\AdministraciaStudiaScreen($trace, $simpleConnection);
             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 = new VSES017\TerminyHodnoteniaScreen($trace, $simpleConnection, $adminStudia->getIdZapisnyList($trace, Input::get('list')), $adminStudia->getIdStudium($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 = new VSES017\HodnoteniaPriemeryScreen($trace, $simpleConnection, $adminStudia->getIdZapisnyList($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 " . $statsConnection->getTotalCount() . " requests and downloaded " . $rawStatsConnection->getTotalSize() . " bytes (" . $statsConnection->getTotalSize() . " bytes uncompressed) of data from AIS2 in " . sprintf("%.3f", $statsConnection->getTotalTime()) . " seconds. It took " . sprintf("%.3f", $timer->getElapsedTime()) . " seconds to generate this page.</div>";
             DisplayManager::addContent($statistics);
         } else {
             DisplayManager::addContent('loginBox', true);
             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);
         }
     } catch (AIS2LoginException $e) {
         if ($connection) {
             FajrUtils::logout($connection);
         }
         DisplayManager::addException($e);
     } catch (Exception $e) {
         DisplayManager::addException($e);
     }
     DisplayManager::setBase(hescape(FajrUtils::basePath()));
     $trace->tlog("everything done, generating html");
     if (FajrConfig::get('Debug.Trace') === true) {
         $traceHtml = $trace->getHtml();
         DisplayManager::addContent('<div class="span-24">' . $traceHtml . '<div> Trace size:' . sprintf("%.2f", strlen($traceHtml) / 1024.0 / 1024.0) . ' MB</div></div>');
     }
     echo DisplayManager::display();
 }
コード例 #5
0
 public function getHtml()
 {
     $trace = $this->trace->addChild("MojeTerminyHodnoteniaCallback");
     $trace->tlog("Executing callback");
     $terminyHodnotenia = $this->terminyHodnoteniaApp->getTerminyHodnotenia($trace->addChild("get terminy hodnotenia"));
     $hodnotenia = $this->hodnoteniaApp->getHodnotenia($trace->addChild("get hodnotenia"));
     if (Input::get('action') !== null) {
         $trace->tlog("odhlasujem zo skusky");
         assert(Input::get("action") == "odhlasZoSkusky");
         if ($this->odhlasZoSkusky(Input::get("odhlasIndex"))) {
             FajrUtils::redirect();
         } else {
             throw new Exception('Z termínu sa nepodarilo odhlásiť.');
         }
     }
     $baseUrlParams = array("studium" => Input::get("studium"), "list" => Input::get("list"), "tab" => Input::get("tab"));
     $terminyHodnoteniaTableActive = new Table(TableDefinitions::mojeTerminyHodnotenia(), 'termin', $baseUrlParams);
     $terminyHodnoteniaCollapsibleActive = new Collapsible(new HtmlHeader('Aktuálne termíny hodnotenia'), $terminyHodnoteniaTableActive);
     $terminyHodnoteniaTableOld = new Table(TableDefinitions::mojeTerminyHodnotenia(), 'termin', $baseUrlParams);
     $terminyHodnoteniaCollapsibleOld = new Collapsible(new HtmlHeader('Staré termíny hodnotenia'), $terminyHodnoteniaTableOld);
     if (Input::get('termin') != null) {
         $terminyHodnoteniaTableActive->setOption('selected_key', Input::get('termin'));
         $terminyHodnoteniaTableOld->setOption('selected_key', Input::get('termin'));
     }
     $actionUrl = FajrUtils::linkUrl($baseUrlParams);
     $hodnoteniePredmetu = array();
     foreach ($hodnotenia->getData() as $row) {
         $hodnoteniePredmetu[$row['nazov']] = $row['znamka'];
     }
     foreach ($terminyHodnotenia->getData() as $row) {
         $datum = AIS2Utils::parseAISDateTime($row['dat'] . " " . $row['cas']);
         if ($row['znamka'] == "") {
             // skusme najst znamku v hodnoteniach
             if (isset($hodnoteniePredmetu[$row['predmet']]) && $hodnoteniePredmetu[$row['predmet']] != "") {
                 $row['znamka'] = $hodnoteniePredmetu[$row['predmet']] . " (z&nbsp;predmetu)";
             }
         }
         if ($datum < time()) {
             $row['odhlas'] = "Skúška už bola.";
             if ($row['jePrihlaseny'] == 'A') {
                 $terminyHodnoteniaTableOld->addRow($row, null);
             }
         } else {
             if ($row['mozeOdhlasit'] == 1) {
                 $class = 'terminmozeodhlasit';
                 $hash = $this->hashNaOdhlasenie($row);
                 $row['odhlas'] = "<form method='post' action='{$actionUrl}'>\n            <div>\n            <input type='hidden' name='action' value='odhlasZoSkusky'/>\n            <input type='hidden' name='odhlasIndex'\n            value='" . $row['index'] . "'/>\n            <input type='hidden' name='hash' value='{$hash}'/>\n            <button name='submit' type='submit' class='tableButton negative'>\n              <img src='images/cross.png' alt=''>Odhlás\n            </button></div></form>";
             } else {
                 $row['odhlas'] = "nedá sa";
                 $class = 'terminnemozeodhlasit';
             }
             if ($row['prihlaseny'] != 'A') {
                 $row['odhlas'] = 'Si odhlásený. Ak chceš, opäť sa prihlás.';
                 $class = 'terminodhlaseny';
             }
             $terminyHodnoteniaTableActive->addRow($row, array('class' => $class));
         }
     }
     $html = $terminyHodnoteniaCollapsibleActive->getHtml();
     $html .= $terminyHodnoteniaCollapsibleOld->getHtml();
     if (Input::get('termin') != null) {
         $prihlaseni = $this->terminyHodnoteniaApp->getZoznamPrihlasenychDialog($trace, Input::get('termin'))->getZoznamPrihlasenych($trace);
         $zoznamPrihlasenychTable = new Table(TableDefinitions::zoznamPrihlasenych(), null, array('studium', 'list'));
         $zoznamPrihlasenychTable->addRows($prihlaseni->getData());
         $zoznamPrihlasenychCollapsible = new Collapsible(new HtmlHeader('Zoznam prihlásených
       na vybratý termín'), $zoznamPrihlasenychTable);
         $html .= $zoznamPrihlasenychCollapsible->getHtml();
     }
     return $html;
 }
コード例 #6
0
ファイル: fajr.php プロジェクト: BGCX067/fajr-svn-to-git
        FajrUtils::redirect();
    }
    if ($login !== null && $krbpwd !== null) {
        $loggedIn = FajrUtils::login(new AIS2CosignLogin($login, $krbpwd), $connection);
        $login = null;
        $krbpwd = null;
    } else {
        if ($cosignCookie !== null) {
            $loggedIn = FajrUtils::login(new AIS2CookieLogin($cosignCookie), $connection);
            $cosignCookie = null;
        } else {
            $loggedIn = FajrUtils::isLoggedIn();
        }
    }
    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>');
        $adminStudia = new AIS2AdministraciaStudiaScreen();
        if (Input::get('studium') === null) {
            Input::set('studium', 0);
        }
        $zoznamStudii = $adminStudia->getZoznamStudii();
        $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('Zoznam štúdií', $zoznamStudiiTable, true);
        DisplayManager::addContent($zoznamStudiiCollapsible->getHtml());
        $zapisneListy = $adminStudia->getZapisneListy(Input::get('studium'));
        $zapisneListyTable = new Table(TableDefinitions::zoznamZapisnychListov(), 'list', array('studium' => Input::get('studium'), 'tab' => Input::get('tab')));
        if (Input::get('list') === null) {