public function actionEdit($id_page) { if ($id_page == 0) { $this->redirect("Admin:"); } $this->page = PagesModel::getPageById($id_page); //creating or deriving page from another $fromLang = $this->getParam('from'); if ($fromLang) { $fromPage = PagesModel::getPageById($id_page, $fromLang); if (!$fromPage) { return $this->displayMissingPage($id_page, $fromLang); } else { $this->template->fromPage = $fromPage; } if (!$this->page) { $this->page = $fromPage->createLang($this->lang); } //TODO PagesMode::$cache[0][$this->fromLang] = root ve fromLang jazyce neexistuje!!! tzn instancovat a vytvořit v konstuktoru } //page still doesnt exist? error if (!$this->page) { return $this->displayMissingPage($id_page, $this->lang); } else { $this->template->page = $this->page; } // bread crumbs $this->template->crumbs = $this->page->getParents(); //default values for editform $form = $this['pageEditForm']; if (!$form->isSubmitted()) { $form->setValues($this->page->data); $this->triggerEvent_filter('filterPageEditForm_defaults', $form); } }
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'; }
public static function allow_page_edit($presenter, $id) { if (!$presenter->user->isInRole('user')) { //probably admin -> allow return true; } //log all changes by users if (count($presenter->request->post)) { $v = PagesModel::getPageById($id); } else { $v = $presenter->request; } $key = Strings::webalize($presenter->user->id); $data = date("Y-m-d H:i:s ") . $_SERVER["REQUEST_URI"] . " " . base64_encode(print_r($v, 1)); file_put_contents(WWW_DIR . "/data/activitylog/{$key}.log", $data, FILE_APPEND); if ($presenter->user->identity->webpages == 'all') { return true; } $allowed = explode(',', $presenter->user->identity->webpages); foreach (PagesModel::getPageById($id)->getParents() as $page) { if (in_array($page->id, $allowed)) { //allowed to edit page? return true; } } return false; }
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; }
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; }
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; }
/** Gets this page as an PagesModelNode * @return PagesModelNode */ public function getPage() { return PagesModel::getPageById($this->id_page); }
public function lang($lang) { return PagesModel::getPageById($this->id, $lang); }