/** * */ protected function createControls() { $this->page = $this->controller->page; $this->setPostback('site', 'endEditPage', array('id' => $this->page->id, 'pa_site' => $this->page->pa_site, 'pa_module' => 'site', 'pa_action' => $this->page->pa_action, 'initPanel' => $this->request->initPanel)); $panel = new CaptionedTabPanelControl($this, 'panel'); $panel->setCaption('Seite » bearbeiten'); $tabStammdaten = $panel->tabs->addTab('Stammdaten'); $tabLayout = $panel->tabs->addTab('Layout'); $lookup = new LookupBoxControl(null, 'pa_parent'); $lookup->setLookupEntity(new Page())->setTextfield('pa_bezeichnung')->setValuefield('pa_id')->setGroupfield('parent')->setFilter(array('site' => $this->page->pa_site))->showNull(0, '-- Kein Parent --')->preSelect($this->page->pa_parent); $edit = new EditControl($tabStammdaten, 'edit'); $edit->setEntity($this->page)->addRow('pa_ausblenden')->addRow('pa_bezeichnung')->addRow('Parent-Page', $lookup)->addRow('pa_css')->addRow('-')->addRow('pa_link')->addRow('pa_description')->addRow('pa_keywords')->addRow('pa_icon'); $button = new SaveButtonControl($tabStammdaten, 'button'); // region Texte $texte = new TranslatedTextControl($tabStammdaten, 'texte'); $texte->setCaption('Angezeiger Text im Menü'); $texte->setElement($this->page->getElementId()); if ($this->request->action === 'newPage' && isset($this->request->text)) { $texte->setText($this->request->text); } // endregion // region Rechte $panelRechte = new CaptionedPanelControl($tabStammdaten, 'panelRechte'); $panelRechte->setCaption('Seiten » Berechtigungen'); $security = new SecurityCheckboxControl($panelRechte, 'berechtigung'); $security->setElement($this->page->getElementId()); // endregion // region Layout (Neu) if ($this->page->pa_action == 'composePage') { $rootRegions = Region::loadByPageAndParent($this->page->id, 0); foreach ($rootRegions as $region) { $block = $region->getBlock(); if ($block !== null) { $control = $block->toDesignModeHtml(); $tabLayout->add($control); } } $addRegion = new Controls\ChooseLayoutBlockControl($tabLayout, 'choose'); $addRegion->setPage($this->page); } // endregion // region Layout (alt) if ($this->page->pa_action == 'useInnerTemplate') { $choose = new Controls\ChooseTemplateControl($tabLayout, 'pa_innertemplate'); $choose->setChosenTemplate($this->page->pa_innertemplate); $choose->setOuterTemplate(Template::load($this->controller->site->si_template)); $edit = new Controls\EditRegionsControl($tabLayout, 'editInPlace'); $edit->setPageId($this->page->id); $edit->setRegions($this->page->getRegions()); $edit->setTemplate($this->page->pa_innertemplate); $button = new ButtonControl($tabLayout, 'button2'); $button->setCaption('Speichern')->setOnClick("\$('#initPanel').val(1); \$('#postback').submit();"); } // endregion }
public function pageDown() { $this->page = new Page($this->request->id); $this->page->down(); $this->request->clear(); $this->request->site = $this->page->pa_site; $this->flushCache(); }
/** * Gibt den HTML String für die unterliegenden Menüpunkte aus * * @return string */ public function getSubHtml() { if (!$this->renderChildren or !$this->page->hasChildren()) { return ''; } $ul = Html::create('ul')->css('dropdown-menu')->attr('role', 'menu'); foreach ($this->children as $child) { $ul->text($child->toHtml()); } return $ul->render(); }
/** * Füllt das Request-Objekt auf Basis des Pathinfo. * @param $request * @param string $pathinfo */ public function fillRequestByPathinfo(&$request, $pathinfo) { Profiler::startSection('SiteRouting.fillRequestByPathInfo'); $page = null; if ($pathinfo !== '') { $page = Page::loadByLink(Application::currentSiteId(), $pathinfo); } if ($page !== null) { $this->setCurrentPage($request, $page); } else { parent::fillRequestByPathinfo($request, $pathinfo); } Profiler::endSection('SiteRouting.fillRequestByPathInfo'); }
/** * Erstellt die Unterobjekte für die einzelnen Menüs */ protected function loadMenuItems() { Profiler::startSection('SiteMenuControl.loadMenuItems'); $this->loadRootPage(); try { $pages = $this->rootPage->loadChildrenForCurrentUser(); } catch (\Exception $e) { Logging::error('Fehler beim Laden der Children für die Root-Page des SiteMenuControls ' . $e->getMessage()); $pages = []; } foreach ($pages as $page) { $itemControl = new MenuItemControl($this, 'page' . $page->id); $itemControl->setPage($page); $itemControl->setRenderChildren($this->renderChildren); } Profiler::endSection('SiteMenuControl.loadMenuItems'); }
public function install() { parent::install(); // Datensätze anlegen $site = new Site(); $site->si_bezeichnung = 'Administration'; $site->si_name = 'admin'; $site->si_urlpattern = 'admin.php'; $site->si_template = 'bootadmin'; $site->save(); // Struktur-Eintrag im Menü $page = new Page(); $page->pa_site = $site->id; $page->pa_parent = 0; $page->pa_bezeichnung = 'Struktur'; $page->pa_link = 'struktur'; $page->pa_pos = 0; $page->pa_title = 'Struktur'; $page->pa_module = 'site'; $page->pa_action = 'useInnerTemplate'; $page->pa_haschildren = false; $page->pa_innertemplate = 'normal'; $page->save(); $region = new Region(); $region->re_page = $page->id; $region->re_name = 'main'; $region->re_module = 'site'; $region->re_action = 'showSite'; $region->re_position = 1; $region->save(); Security::berechtigungSchreiben($page->getElementId(), 1, 1); Text::saveArray($page->getElementId(), array(1 => 'Struktur')); // Benutzer-Eintrag im Menü $page = new Page(); $page->pa_site = $site->id; $page->pa_parent = 0; $page->pa_bezeichnung = 'Benutzer'; $page->pa_link = 'benutzer'; $page->pa_pos = 0; $page->pa_title = 'Benutzer'; $page->pa_module = 'site'; $page->pa_action = 'useInnerTemplate'; $page->pa_haschildren = false; $page->pa_innertemplate = 'normal'; $page->save(); $region = new Region(); $region->re_page = $page->id; $region->re_name = 'main'; $region->re_module = 'user'; $region->re_action = 'indexUser'; $region->re_position = 1; $region->save(); Security::berechtigungSchreiben($page->getElementId(), 1, 1); Text::saveArray($page->getElementId(), array(1 => 'Benutzer')); // Modul-Eintrag im Menü $page = new Page(); $page->pa_site = $site->id; $page->pa_parent = 0; $page->pa_bezeichnung = 'Module'; $page->pa_link = 'module'; $page->pa_pos = 0; $page->pa_title = 'Module'; $page->pa_module = 'site'; $page->pa_action = 'useInnerTemplate'; $page->pa_haschildren = false; $page->pa_innertemplate = 'normal'; $page->save(); $region = new Region(); $region->re_page = $page->id; $region->re_name = 'main'; $region->re_module = 'modView'; $region->re_action = 'showModules'; $region->re_position = 1; $region->save(); Security::berechtigungSchreiben($page->getElementId(), 1, 1); Text::saveArray($page->getElementId(), array(1 => 'Module')); // Site-Definition Frontend $site = new Site(); $site->si_bezeichnung = 'Webseite'; $site->si_name = 'web'; $site->si_urlpattern = ''; $site->si_template = 'unify'; $site->save(); }
/** * Gibt die Wurzel-Page für diese Site zurück. * @return Page */ public function loadRoot() { return Page::findFirst(array('site' => $this->id, 'parent' => 0)); }
/** * Diese Methode lädt die Seiten dieses Menüs, basierend * auf einer Root-Seite und dem angemeldeten Benutzer. Die * geladenen Seiten werden im $pages Property abgelegt. * * @return Page[] * @throws Exception */ public function loadChildrenForCurrentUser() { if (!$this->hasChildren()) { return []; } // Versuch es aus dem Cache zu lesen $this->pages = Cache::get($this->getCacheId(), null); if ($this->pages === null) { $this->pages = []; $sql = "\n select seiten.*, text.*\n from\n\n (select distinct pa_id, pa_site, pa_parent, pa_bezeichnung, pa_link, pa_pos, pa_title, pa_module,\n pa_action, pa_css, pa_innertemplate, pa_parameter, pa_haschildren, pa_icon from pages\n join rechte on re_element = CONCAT('pages.', pa_id) and re_recht = 1 and re_rolle in {$_SESSION['rollen']}\n where pa_site = :site and pa_parent = :parent and (pa_ausblenden != 1) ) seiten\n\n left outer join texte text on text.te_element = CONCAT('pages.', pa_id) and text.te_sprache = :sprache\n\n order by pa_pos\n\n\t\t "; $sql = "\nselect distinct \n\tpa_id, pa_site, pa_parent, pa_bezeichnung, pa_link, pa_pos, pa_title, pa_module, pa_action, pa_css, pa_innertemplate, pa_parameter, \n\tpa_haschildren, pa_icon, text.* \n\nfrom pages \n\tjoin rechte on re_element = CONCAT('pages.', pa_id) and re_recht = 1 and re_rolle in {$_SESSION['rollen']}\n join texte text on text.te_element = CONCAT('pages.', pa_id) and text.te_sprache = :sprache \n\nwhere pa_site = :site and pa_parent = :parent and (pa_ausblenden != 1) order by pa_pos \n "; $this->db->query($sql, ['site' => $this->pa_site, 'parent' => $this->id, 'sprache' => $_SESSION['sp_id']]); $results = $this->db->fetchAll(); foreach ($results as $row) { $item = new Page(); $item->loadFromRow($row); $item->loadTextFromRow($row); $this->pages[] = $item; } Cache::set($this->getCacheId(), $this->pages); } return $this->pages; }