Пример #1
0
 function actionIndex($params = '')
 {
     $objPage = new PagesModel();
     $objLayout = new LayoutModel();
     $page_id = !empty($params['page_id']) ? intval($params['page_id']) : 0;
     $previewPage = !empty($params['preview']) ? true : false;
     if (empty($params['page_id'])) {
         $page_id = $objPage->getPageId('home');
     }
     $pageInfo = $objPage->loadPage($page_id);
     if (!empty($pageInfo) && $pageInfo['status'] == 'published' && $pageInfo['type'] == 'page' || $previewPage == true) {
         // load additional page info
         $sideBars = $objPage->getPageSidebars($page_id);
         $layoutInfo = $objLayout->loadLayout($pageInfo['layout_id']);
         // used to set active state in menu
         $this->view->current_page = $pageInfo['keyName'];
         //assign template vars
         $this->view->assign('pageTitle', $pageInfo['title']);
         $this->view->assign('content', $this->view->fetch('fromstring:' . $pageInfo['content']));
         if (!empty($sideBars)) {
             $this->view->assign('sidebar_left', $this->view->fetch('fromstring:' . $sideBars['left']['content']));
             $this->view->assign('sidebar_right', $this->view->fetch('fromstring:' . $sideBars['right']['content']));
         }
         $this->view->assign('layout', $this->view->fetch('fromstring:' . $layoutInfo['code']));
     } else {
         // page not found
         $this->view->assign('layout', '404 - ' . print_r($params, true));
     }
     $this->finish();
 }
Пример #2
0
 public function admin_motd()
 {
     if ($this->presenter->user->isInRole('user')) {
         $pairs = PagesModel::getPagesFlat()->getPairs();
         $row = $this->presenter->user->identity;
         echo "<p>Jsi přihlášen jako <b><code>{$row->id}</code></b> - uživatel osm.org";
         echo "<p>Máš oprávnění editovat tyto stránky a jejich podstránky:<ul>";
         $nic = true;
         foreach (explode(',', $row->webpages) as $id) {
             if (isset($pairs[$id])) {
                 echo "<li style='line-height:2'><a href='" . $this->presenter->link(':Admin:Pages:edit', $id) . "' class='btn btn-warning'>{$pairs[$id]}</a>";
                 $nic = false;
             }
         }
         if ($row->webpages == 'all') {
             echo '<li>Všechny!</li>';
         } else {
             if ($nic) {
                 echo "<li>Žádné :-)";
             }
         }
         echo "</ul>";
         echo "<p>Pokud chceš editovat ještě něco, napiš prosím na dev@openstreetmap.cz.";
         echo "<p>Pro znovunačtení práv, prosím, klikni sem: <a href='/oauth/login?backUrl=/admin' class='btn btn-default btn-xs'>Znovu načíst</a>.";
     } else {
         echo '<p style="font-size:150%;text-align:center;">Jsi přihlášen jako <b><code>SuperAdmin</code></a>.';
     }
 }
Пример #3
0
 public function __construct()
 {
     parent::__construct();
     $this->tags = array();
     $tags = PagesModel::getPageById(27)->getMeta('tag_options');
     foreach (explode("\n", $tags) as $t) {
         $t = trim($t);
         $this->tags[$t] = $t;
     }
     $this->projects = PagesModel::getPagesByMeta("project_tag")->getPairs('');
     $this->addText('username', 'OSM.org username')->setDisabled();
     $this->addText('fullname', 'Celé jméno')->setOption('description', 'Ať se poznáme!')->addRule(Form::FILLED, '%label není vyplněn.')->addRule(Form::MIN_LENGTH, '%label musí mít alespoň 5 znaků.', 5);
     $this->addText('email', 'Talk-cz')->setOption('description', 'Email použivaný pro spočítání příspěvků v talk-cz (neveřejný)')->addRule(Form::FILLED, '%label není vyplněn.')->addRule(Form::EMAIL, '%label není validní.');
     $this->addText('contact', 'Veřejný e-mail')->setOption('description', '(nepovinné)')->addCondition(Form::FILLED)->addRule(Form::EMAIL, '%label není validní.');
     $this->addText('twitter', 'Twitter')->setOption('description', '(nepovinné) Uživatelské jméno bez zavináče');
     $this->addText('github', 'Github')->setOption('description', '(nepovinné) Uživatelské jméno');
     $this->addText('places', 'Výskyt')->setOption('description', '(nepovinné) Kde se vyskystuju - typicky jaká města.');
     $this['places']->getControlPrototype()->placeholder = 'oddělené čárkou';
     $this['places']->getControlPrototype()->style = 'width: 40%';
     $this->addText('tags', 'Oblasti zájmu')->setOption('description', '(nepovinné)');
     $this['tags']->getControlPrototype()->placeholder = 'oddělené čárkou';
     $this['tags']->getControlPrototype()->style = 'width: 60%';
     $this['tags']->getControlPrototype()->{'data-options'} = Json::encode(array_values($this->tags));
     $this->addMultiSelect('projects', 'Projekty', $this->projects)->setOption('description', '(nepovinné) Projektovou stránku možno přidat v administraci. Případně napiš na dev@openstreetmap.cz')->getControlPrototype()->style = 'height:150px;width:40%';
     $this->addCheckbox('public', 'Zveřejnit údaje na openstreetmap.cz');
     $this->addSubmit('submit', 'Uložit údaje');
     $this->onSuccess[] = callback($this, 'submitted');
     $renderer = $this->getRenderer();
     $renderer->wrappers['controls']['container'] = 'table class="table form-inline"';
     $renderer->wrappers['error']['container'] = 'ul class="bg-danger"';
     $renderer->wrappers['control']['.text'] = 'form-control';
     $renderer->wrappers['control']['.email'] = 'form-control';
     $renderer->wrappers['control']['.submit'] = 'btn btn-primary';
 }
Пример #4
0
 public function actionPagesort()
 {
     if ($this->isAjax()) {
         PagesModel::nestedsort($this->getHttpRequest()->post['menuid'], $this->lang);
         $this->flashMessage("Menu upraveno");
     }
     $this->setView('default');
 }
Пример #5
0
function smarty_function_menu($params, &$smarty)
{
    $output = '';
    $objPages = new PagesModel();
    $pageList = $objPages->getPages('published');
    global $__pageListTemp;
    if (!empty($pageList)) {
        // limit to a parent
        if (!empty($params['parent'])) {
            // find parent
            $parent_id = $objPages->getPageId($params['parent']);
            if ($parent_id) {
                smarty_function_menu_parent($pageList, $parent_id);
                $pageList = $__pageListTemp;
            }
        }
        reset($pageList);
        // limit depth
        if (!empty($params['depth'])) {
            $depth = intval($params['depth']);
            $pageList = smarty_function_menu_setdepth($pageList, $depth);
        }
        reset($pageList);
        // remove specific pages
        if (!empty($params['remove'])) {
            $params['remove'] .= ',404';
        } else {
            $params['remove'] = '404';
        }
        $pageList = smarty_function_menu_removepages($pageList, $params['remove']);
        reset($pageList);
        // set active classes
        if (!empty($smarty->current_page)) {
            $pageList = smarty_function_menu_makeactive($pageList, $smarty->current_page);
        }
        reset($pageList);
        // draw menu
        $output = smarty_function_menu_makemenu($pageList, $output, $smarty);
    }
    return $output;
}
Пример #6
0
 public static function getAll()
 {
     $res = dibi::query('SELECT * FROM redirect')->fetchAssoc('id');
     foreach ($res as &$r) {
         if ($p = RedirectModel::parseHashIdLang($r['newurl'])) {
             $r['page'] = PagesModel::getPageById($p[0], $p[1]);
         } else {
             $r['page'] = false;
         }
     }
     return $res;
 }
Пример #7
0
 public function actionDefault($id_page)
 {
     $this->page = PagesModel::getPageById($id_page);
     if ($this->page === false) {
         throw new BadRequestException("Stránka nenalezena. (id={$id_page} lang={$this->lang})");
     }
     if ($this->page['deleted']) {
         throw new BadRequestException("Stránka smazána. (id={$id_page} lang={$this->lang})");
     }
     //page should display different URL?
     $this->doPageRedirects();
     $this->invalidateControl('content');
     // bread crumbs
     $this->template->crumbs = $this->page->getParents();
     $this->template->page = $this->page;
 }
Пример #8
0
 /** Gets this page as an PagesModelNode
  * @return PagesModelNode
  */
 public function getPage()
 {
     return PagesModel::getPageById($this->id_page);
 }
Пример #9
0
 public function lang($lang)
 {
     return PagesModel::getPageById($this->id, $lang);
 }
Пример #10
0
 /**
  * Geting all published pages for build URL
  */
 private function getPages()
 {
     self::$pages = $this->getAllTree(array('id', 'url', 'path', 'publish'));
 }
Пример #11
0
 function actionDeletePage($params = '')
 {
     if (!empty($params['page_id'])) {
         $objPages = new PagesModel();
         $objSidebars = new SidebarsModel();
         if ($objPages->safeToDelete($params['page_id'])) {
             $objPages->deletePage($params['page_id']);
             $objSidebars->deletePageSidebars($params['page_id']);
             $this->messages[] = array('type' => 'success', 'message' => 'Page has been deleted.');
         } else {
             $this->messages[] = array('type' => 'error', 'message' => 'Cannot delete a page with children.');
         }
     } else {
         $this->messages[] = array('type' => 'error', 'message' => 'Unknown page to delete.');
     }
     $this->actionPages();
 }
Пример #12
0
 public function handleSubpagessort()
 {
     if (!$this->editAllowed()) {
         return;
     }
     PagesModel::sort($this->getHttpRequest()->post['pageid'], $this->lang);
     $this->flashMessage("Pořadí článků upraveno");
     //$this->payload->hack = 'ok';
 }
Пример #13
0
 public function handleGetPagesFlatJson()
 {
     $array = PagesModel::getPagesFlat()->getPairs();
     $this->sendResponse(new JsonResponse($array));
 }
Пример #14
0
 public function renderAkce()
 {
     $this->template->products = PagesModel::getPagesByMeta('akce', '1');
     $this->template->setFile(dirname(__FILE__) . '/list.latte');
     $this->template->render();
 }
Пример #15
0
 public function createComponentEditFileForm()
 {
     $form = new AppForm();
     $form->getElementPrototype()->class('ajax');
     //todo:zlobí
     $form->addHidden("id");
     $form->addSelect("id_page_change", "Přesun", PagesModel::getPagesFlat()->getPairs());
     $form->addText("filename", "Název");
     $form->addTextarea("description", "Popis")->getControlPrototype()->setRows(3);
     $form->addText("keywords", "Keywords");
     $form->addText("timestamp", "Timestamp");
     $form->addText("gallerynum", "Číslo galerie")->getControlPrototype()->style('width:50px');
     //TODO ->addRule(Form::INTEGER,'%label musí být číslo')  .. nefunguje js(ajax) validace
     $form->addSubmit("submit1", "Uložit");
     $form->onSuccess[] = callback($this, 'editFileFormSubmitted');
     return $form;
 }
Пример #16
0
 function constructUrl(PresenterRequest $appRequest, Url $ref)
 {
     if ($appRequest->getPresenterName() !== self::PRESENTER) {
         return NULL;
     }
     $params = $appRequest->getParameters();
     //find the friendly-url in the database
     $lang = $params['lang'];
     if ($lang == NULL) {
         $lang = $this->getDefaultLang();
     }
     //lang base url (domain or just relative prefix?)
     $langDomains = Environment::getVariable("langDomains");
     if ($langDomains) {
         $baseUrl = $ref->scheme . ':' . $langDomains[$lang];
     } else {
         $baseUrl = $ref->getBaseUrl() . ($lang == $this->getDefaultLang() ? '' : "{$lang}/");
     }
     //NULL page = /
     if (!isset($params['id_page'])) {
         return $baseUrl;
     }
     //nonexisting page - do not route
     $page = PagesModel::getPageById($params['id_page'], $lang);
     if (!$page) {
         return NULL;
     }
     unset($params['lang']);
     unset($params['id_page']);
     unset($params['action']);
     // appended parameters
     $params = http_build_query($params, '', '&');
     if ($params) {
         $params = "?{$params}";
     }
     // no pagelink -> do /p123-friendly-name
     if (!$page['seoname']) {
         return $baseUrl . "p{$page->id}" . (Strings::webalize($page->name) ? '-' : '') . Strings::webalize($page->name) . $params;
     }
     // /sth  -> normal friendly url for that page
     if ($page['seoname'][0] == '/') {
         return $baseUrl . substr($page['seoname'], 1) . $params;
     }
     return NULL;
 }
Пример #17
0
 public function startup()
 {
     parent::startup();
     PagesModel::$lang = $this->lang;
     $this->pages = PagesModel::getRoot();
 }