/** * Funkce pro vykreslení obsahu stránky */ public function display($content) { $currentUser = CurrentUser::getInstance(); $title = $this->controller->getTitle(); echo '<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>' . (!empty($title) ? htmlspecialchars($title) . ' | ' : '') . 'Ukázkový jednoduchý blog</title> <link rel="stylesheet" href="' . BASE_URL . '/resources/css/main.css" type="text/css" /> <link rel="stylesheet" href="' . BASE_URL . '/resources/css/nette.css" type="text/css" /> </head> <body> <header> <h1><a href="' . BASE_URL . '">Jednoduchý blog</a></h1> <div id="currentUser">'; if ($currentUser->isLoggedIn()) { echo 'Přihlášený uživatel: <strong>' . $currentUser->name . '</strong> (' . $currentUser->email . ') <a href="' . BASE_URL . '/user/logout">Odhlásit se...</a>'; } else { echo '<a href="' . BASE_URL . '/user/login">Přihlásit se...</a>'; } echo ' </div> </header>'; #region nav if (!empty($this->controller->categories)) { echo '<nav><ul>'; foreach ($this->controller->categories as $categoryItem) { echo '<li><a href="' . BASE_URL . '/article/list?category=' . $categoryItem->id . '" ' . (!empty($this->controller->currentCategory) && $this->controller->currentCategory == $categoryItem->id ? 'class="active"' : '') . '>' . htmlspecialchars($categoryItem->name) . '</a></li>'; } echo '</ul></nav>'; } #endregion nav echo ' <section id="main">'; #region info zprávy $infoMessages = $this->controller->getInfoMessages(); if (!empty($infoMessages['info'])) { echo '<div class="flash"><ul>'; foreach ($infoMessages['info'] as $infoMessage) { echo ' <li>' . $infoMessage . '</li>'; } echo ' </ul></div>'; } if (!empty($infoMessages['error'])) { echo '<div class="flash error"><ul>'; foreach ($infoMessages['error'] as $infoMessage) { echo ' <li>' . $infoMessage . '</li>'; } echo ' </ul></div>'; } #endregion info zprávy echo $content; echo ' </section>'; echo '<script type="text/javascript" src="https://code.jquery.com/jquery-1.12.0.min.js"></script> <script type="text/javascript" src="' . BASE_URL . '/resources/js/tinymce/tinymce.min.js"></script> <script type="text/javascript" src="' . BASE_URL . '/resources/js/tinymce/jquery.tinymce.min.js"></script> <script type="text/javascript" src="' . BASE_URL . '/resources/js/main.js"></script>'; echo '</body></html>'; }
/** * Akce pro přihlášení uživatele */ public function loginAction() { $this->setTitle('Přihlásit se...'); $currentUser = CurrentUser::getInstance(); if ($currentUser->isLoggedIn()) { $this->setRedirect(BASE_URL); return; } $prihlaseno = false; $email = @$_POST['email']; //exit(var_dump($_POST)); if ($email != '') { //máme zaslané přihlašovací uživatele /** @var UsersModel $usersModel */ $usersModel = UsersModel::getInstance(); $user = $usersModel->findByEmail($email); if ($user) { //kontrola, jestli bylo spravne zadano heslo if ($user->isValidPassword(@$_POST['password'])) { //uzivatel je přihlášen $redirectUrl = self::getLoginReferer(); CurrentUser::login($user); if (!$redirectUrl) { $redirectUrl = BASE_URL; } $this->setRedirect($redirectUrl); } else { $this->formErrors = '<p>Chybně zadané uživatelské jméno či heslo</p>'; } } else { $this->formErrors = '<p>Chybně zadané uživatelské jméno či heslo</p>'; } } if (!$prihlaseno) { //máme zobrazit přihlašovací formulář ///pokud máme nastavený referer stránky, ze které bylo vyvoláno přihlášení, tak ho nastavíme pro zpětné přesměrování if (isset($_SERVER['HTTP_REFERER'])) { if (!self::getLoginReferer()) { self::setLoginReferer($_SERVER['HTTP_REFERER']); } } /** @var User_LoginView $view */ $view = $this->getView('login'); $view->email = $email; $view->formError = @$this->formErrors; $view->display(); } }
/** * Funkce pro zobrazení view */ function display() { /** @var CurrentUser $currentUser */ $currentUser = CurrentUser::getInstance(); echo '<article>'; echo '<h1>' . htmlspecialchars($this->article->title) . '</h1>'; if ($currentUser->hasAccess('article', 'edit')) { echo '<a href="' . BASE_URL . '/article/edit?id=' . $this->article->id . '">upravit článek</a>'; } echo '<dl class="articleInfo"> <dt>Kategorie:</dt> <dd><a href="' . BASE_URL . '/article/list?category=' . $this->article->category . '">' . htmlspecialchars($this->article->categoryName) . '</a></dd> <dt>Autor:</dt> <dd>' . htmlspecialchars($this->article->authorName) . '</dd> </dl>'; echo $this->article->getFullContent(); echo '</article>'; }
/** * Funkce pro zobrazení view */ function display() { /** @var CurrentUser $currentUser */ $currentUser = CurrentUser::getInstance(); echo '<h1>' . htmlspecialchars($this->category->name) . '</h1>'; if ($currentUser->hasAccess('article', 'add')) { echo '<a href="' . BASE_URL . '/article/add?category=' . $this->category->id . '">přidat článek...</a>'; } if (!empty($this->articles)) { foreach ($this->articles as $article) { echo '<article> <h2><a href="' . BASE_URL . '/article/show?id=' . $article->id . '">' . htmlspecialchars($article->title) . '</a></h2> ' . $article->perex . ' </article>'; } } else { echo '<p>Nebyly nalezeny žádné články</p>'; } }
session_start(); require_once './application/config.php'; require_once './application/library/Autoloader.php'; \Blog\Library\Autoloader::registerSplAutoload(); if (@$_REQUEST['controller'] != '') { $controllerName = ucfirst(trim($_REQUEST['controller'])) . 'Controller'; } else { $controllerName = 'HomepageController'; $_REQUEST['controller'] = 'default'; } if (isset($_REQUEST['action'])) { $action = trim($_REQUEST['action']) . 'Action'; } else { $action = 'defaultAction'; } $currentUser = \Blog\Library\CurrentUser::getInstance(); //overeni existence controlleru a jeho spusteni //vytvoření controlleru a kontrola, jestli existuje požadovaná metoda if (\Blog\Library\Autoloader::controllerExists($controllerName)) { $controllerName = '\\Blog\\Controllers\\' . $controllerName; /** @var \Blog\Library\Controller $controller */ $controller = new $controllerName(); if (method_exists($controller, $action)) { //kontrola přístupu if ($currentUser->hasAccess($_REQUEST['controller'], @$_REQUEST['action'])) { $controller->{$action}(); } elseif (!$currentUser->isLoggedIn()) { //zobrazime vyzvu pro prihlaseni $controller->addInfoMessage('Pro zobrazení požadovaného modulu se musíte přihlásit.'); $controller->setRedirect(BASE_URL . '/user/login'); } else {
/** * Akce pro úpravu článku */ public function editAction() { /** @var ArticlesModel $articlesModel */ $articlesModel = ArticlesModel::getInstance(); if (!($article = $articlesModel->find(@$_REQUEST['id'], true))) { $this->generateError(404, 'Požadovaný obsah nebyl nalezen.'); return; } if (!empty($_POST['id']) && $this->checkEditForm($article)) { /** @var CurrentUser $currentUser */ $currentUser = CurrentUser::getInstance(); $article->author = $currentUser->id; if ($articlesModel->save($article)) { $this->addInfoMessage('Článek byl úspěšně uložen.'); } else { $this->addInfoMessage('Článek nebyl uložen.', 'error'); } $this->setRedirect('/article/show?id=' . $article->id); } $this->currentCategory = $article->category; $this->setTitle('Úprava článku'); /** @var Article_EditView $view */ $view = $this->getView('edit'); $view->formError = $this->formErrors; $view->article = $article; $view->categories = $this->categories; $view->display(); }