示例#1
0
 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);
     }
 }
示例#2
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';
 }
示例#3
0
 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;
 }
示例#4
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;
 }
示例#5
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;
 }
示例#6
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;
 }
示例#7
0
文件: File.php 项目: osmcz/website
 /** Gets this page as an PagesModelNode
  * @return PagesModelNode
  */
 public function getPage()
 {
     return PagesModel::getPageById($this->id_page);
 }
示例#8
0
 public function lang($lang)
 {
     return PagesModel::getPageById($this->id, $lang);
 }