Exemplo n.º 1
0
 /**
  * Invoke an action given its name
  *
  * This function requests information necessary to operate on
  * VSES017 AIS application
  *
  * @param Trace $trace trace object
  * @param string $action action name
  * @param Context $context fajr context
  */
 public function invokeAction(Trace $trace, $action, Context $context)
 {
     Preconditions::checkIsString($action);
     $request = $context->getRequest();
     $response = $context->getResponse();
     $screenFactory = new VSES017\VSES017_factory($context->getAisConnection());
     $adminStudia = $screenFactory->newAdministraciaStudiaScreen($trace);
     $this->studium = $request->getParameter('studium', '0');
     $this->zoznamStudii = $adminStudia->getZoznamStudii($trace->addChild("Get Zoznam Studii:"));
     $this->zapisneListy = $adminStudia->getZapisneListy($trace->addChild('getZapisneListy'), $this->studium);
     $this->zapisnyList = $request->getParameter('list');
     if ($this->zapisnyList === '') {
         $tmp = $this->zapisneListy->getData();
         $lastList = end($tmp);
         $this->zapisnyList = $lastList['index'];
     }
     $this->terminyHodnoteniaScreen = $screenFactory->newTerminyHodnoteniaScreen($trace, $adminStudia->getZapisnyListIdFromZapisnyListIndex($trace, $this->zapisnyList), $adminStudia->getStudiumIdFromZapisnyListIndex($trace, $this->zapisnyList));
     // FIXME: chceme to nejak refaktorovat, aby sme nevytvarali zbytocne
     // objekty, ktore v konstruktore robia requesty
     $this->hodnoteniaScreen = $screenFactory->newHodnoteniaPriemeryScreen($trace, $adminStudia->getZapisnyListIdFromZapisnyListIndex($trace, $this->zapisnyList));
     $response->set('zoznamStudii', $this->zoznamStudii);
     $response->set('studium', $this->studium);
     $response->set('zapisneListy', $this->zapisneListy);
     $response->set('zapisnyList', $this->zapisnyList);
     parent::invokeAction($trace, $action, $context);
 }
Exemplo n.º 2
0
 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);
     }
 }