protected function postProcessImpl(PageParams $pageParams, \RequestArrayAdapter $requestParams) { $SMARTY_PARAMS['JS_DEFS'] = PageBuilder::inst()->buildJsDefs($pageParams); $SMARTY_PARAMS_PAGE = $pageParams->getSmartyParams4Resources(); $SMARTY_PARAMS = array_merge($SMARTY_PARAMS, $SMARTY_PARAMS_PAGE); $resources = PSSmarty::template('page/environment/wordpress/wp_page_resources_footer.tpl', $SMARTY_PARAMS)->fetch(); $resources = trim($resources); $this->LOGGER->infoBox('PAGE_RESOURCES_FOOTER', $resources); echo PsHtml::div(array(), $resources); }
/** * Список фолдингов */ public static function listFoldings() { $managers = array(MagManager::inst(), BlogManager::inst(), TrainManager::inst()); $foldings = array(); foreach ($managers as $manager) { if ($manager instanceof RubricsProcessor) { $foldings[] = $manager->getRubricsFolding(); } if ($manager instanceof PostsProcessor) { $foldings[] = $manager->getFolding(); } } //Фолдинги $foldings[] = PopupPagesManager::inst(); $foldings[] = PluginsManager::inst(); $foldings[] = IdentPagesManager::inst(); $foldings[] = TimeLineManager::inst(); $foldings[] = TemplateMessages::inst(); $foldings[] = UserPointsManager::inst(); $foldings[] = StockManager::inst(); $foldings[] = HelpManager::inst(); $foldings[] = EmailManager::inst(); $foldings[] = PSForm::inst(); $foldings[] = DialogManager::inst(); //Библиотеки $foldings[] = PoetsManager::inst(); $foldings[] = ScientistsManager::inst(); //Админские страницы $foldings[] = APagesResources::inst(); //Базовые страницы $foldings[] = BasicPagesManager::inst(); //Построитель страниц $foldings[] = PageBuilder::inst(); //Управление списком предпросмотра постов $foldings[] = ShowcasesCtrlManager::inst(); //Элементы в правой панели навигации $foldings[] = ClientBoxManager::inst(); //Все фолдинги системы return $foldings; }
private function __construct() { PsProfiler::inst(__CLASS__)->start(__FUNCTION__); $managers = array(MagManager::inst(), BlogManager::inst(), TrainManager::inst()); foreach ($managers as $manager) { //Соберём типы постов $this->postTypes[] = $manager->getPostType(); if ($manager instanceof RubricsProcessor) { $this->rubricsProcessors[$manager->getPostType()] = $manager; $this->foldings[] = $manager->getRubricsFolding(); } if ($manager instanceof PostsProcessor) { $this->postsProcessors[$manager->getPostType()] = $manager; $this->foldings[] = $manager->getFolding(); } if ($manager instanceof CommentsProcessor) { $this->commentProcessors[$manager->getPostType()] = $manager; $this->discussionControllers[$manager->getDiscussionController()->getDiscussionUnique()] = $manager->getDiscussionController(); } if ($manager instanceof PagePreloadListener) { $this->pagePreloadListeners[] = $manager; } if ($manager instanceof NewsProvider) { $this->newsProviders[$manager->getNewsEventType()] = $manager; } } //Контроллеры дискуссий $this->discussionControllers[FeedbackManager::inst()->getDiscussionUnique()] = FeedbackManager::inst(); //Фолдинги $this->foldings[] = PopupPagesManager::inst(); $this->foldings[] = PluginsManager::inst(); $this->foldings[] = IdentPagesManager::inst(); $this->foldings[] = TimeLineManager::inst(); $this->foldings[] = TemplateMessages::inst(); $this->foldings[] = UserPointsManager::inst(); $this->foldings[] = StockManager::inst(); $this->foldings[] = HelpManager::inst(); $this->foldings[] = EmailManager::inst(); $this->foldings[] = PSForm::inst(); $this->foldings[] = DialogManager::inst(); //Библиотеки $this->foldings[] = PoetsManager::inst(); $this->foldings[] = ScientistsManager::inst(); //Админские страницы $this->foldings[] = APagesResources::inst(); //Базовые страницы $this->foldings[] = BasicPagesManager::inst(); //Построитель страниц $this->foldings[] = PageBuilder::inst(); //Управление списком предпросмотра постов $this->foldings[] = ShowcasesCtrlManager::inst(); //Элементы в правой панели навигации $this->foldings[] = ClientBoxManager::inst(); /* * Выделим различные подклассы фолдингов */ foreach ($this->foldings as $folding) { //Фолдинги библиотек if ($folding instanceof LibResources) { $this->libs[] = $folding; } //Фолдинги обработчиков постов if ($folding instanceof PostFoldedResources) { $this->postProcessorFoldings[] = $folding; } //Фолдинги для баблов if ($folding instanceof BubbledFolding) { $this->bubbles[] = $folding; } //Фолдинги, предоставляющие панели if ($folding instanceof PanelFolding) { $this->panels[] = $folding; } //Фолдинги, финализирующие контент страницы if ($folding instanceof PageFinalizerFolding) { $this->pageFinaliseFoldings[] = $folding; } //Индексированный список фолдингов $this->folding2unique[$folding->getUnique()] = $folding; //Префиксы smarty к фолдингам $this->folding2smartyPrefix[$folding->getSmartyPrefix()] = $folding; //Префиксы классов к фолдингам if ($folding->getClassPrefix()) { $this->folding2classPrefix[$folding->getClassPrefix()] = $folding; } } PsProfiler::inst(__CLASS__)->stop(); }
/** * Регистрация страниц SDK */ private function registerSdkFoldings() { $this->register(PopupPagesManager::inst()); $this->register(PluginsManager::inst()); $this->register(TimeLineManager::inst()); $this->register(UserPointsManager::inst()); $this->register(StockManager::inst()); $this->register(HelpManager::inst()); $this->register(EmailManager::inst()); $this->register(PSForm::inst()); $this->register(DialogManager::inst()); $this->register(PageBuilder::inst()); //Библиотеки $this->register(PoetsManager::inst()); $this->register(ScientistsManager::inst()); //Админские страницы $this->register(APagesResources::inst()); }
/** * Основной метод, выполняющий построение страницы */ public final function buildPage() { //Может ли данная страница вообще быть построена check_condition($this->builderIdent, "{$this} не может быть построена"); //Проверим, установлена ли эта страница, как текущая check_condition(WebPages::isCurPage($this), "{$this} не установлена, как текущая, и не может быть построена"); //Если у пользователя нет доступа к данной странице - выполним редирект if (!$this->hasAccess()) { $this->redirectHere(); } //Теперь провалидируем установленный контекст $ctxt = PageContext::inst(); check_condition($this->isIt($ctxt->getPage()), PsUtil::getClassName($ctxt) . ' проинициализирован некорректно'); //Строим страницу PageBuilder::inst()->buildPage(); }
/** * Основной метод, выполняющий построение страницы */ public final function buildPage() { //Проверим, установлена ли эта страница, как текущая check_condition(WebPages::isCurPage($this), "{$this} не установлена, как текущая, и не может быть построена"); //Если у пользователя нет доступа к данной странице - выполним редирект if (!$this->hasAccess()) { $this->redirectHere(); } //Теперь провалидируем установленный контекст $ctxt = PageContext::inst(); check_condition($this->isIt($ctxt->getPage()), PsUtil::getClassName($ctxt) . ' проинициализирован некорректно'); $redirectPage = self::inst(is_numeric($this->pageCodeBase) ? $this->pageCodeBase : BASE_PAGE_INDEX); if ($ctxt->isRubricPage() && !$ctxt->getRubric()) { $redirectPage->redirectHere(); } if ($ctxt->isPostPage() && !$ctxt->getPost()) { $redirectPage->redirectHere(); } if ($ctxt->isPopupPage() && !PopupPagesManager::inst()->isValidPageRequested()) { $redirectPage->redirectHere(); } PageBuilder::inst()->buildPage(); }
<?php header('Content-Type: text/html; charset=utf-8'); require_once 'ps-includes/MainImport.php'; header('Content-Type: text/html; charset=utf-8'); ExceptionHandler::registerPretty(); $suffix = RequestArrayAdapter::inst()->str('page', 'img'); $tplPath = "crop/crop-page-{$suffix}.tpl"; if (!PSSmarty::smarty()->templateExists($tplPath)) { $suffix = 'img'; $tplPath = "crop/crop-page-{$suffix}.tpl"; } $SMARTY_PARAMS['JS_DEFS'] = PageBuilder::inst()->buildJsDefs(); $SMARTY_PARAMS['CROP_SUFFIX'] = $suffix; $PARAMS['RESOURCES'] = PSSmarty::template('crop/page_resources.tpl', $SMARTY_PARAMS)->fetch(); $PARAMS['CONTENT'] = PSSmarty::template($tplPath)->fetch(); $PARAMS['TITLE'] = 'Мои мысли'; PSSmarty::template('crop/page_pattern.tpl', $PARAMS)->display();
/** * Метод получения зарегистрированной страницы * * @return WebPage */ public static final function getPage($page, $ensure = true) { if (self::$storeState === 0) { self::$storeState = 1; PageBuilder::inst()->registerAllHtmlPages(); self::$storeState = 2; //Проверим, чтобыла зарегистрирована страница index и пользователь имеет доступ к ней. check_condition(self::getPage(BASE_PAGE_INDEX)->hasAccess(), 'Пользователь не имеет доступа к индексной странице'); } check_condition(self::$storeState === 2, 'Хранилище страниц ещё не наполнено'); if ($page instanceof WebPage) { return $page; } if (is_numeric($page)) { if (array_key_exists($page, self::$page2code)) { return self::$page2code[$page]; } check_condition(!$ensure, "Страница с кодом [{$page}] не зарегистрирована"); return null; } if (is_string($page)) { $pathBase = get_file_name($page); if (array_key_exists($pathBase, self::$page2pathBase)) { return self::$page2pathBase[$pathBase]; } check_condition(!$ensure, "Страница с адресом [{$page}] не зарегистрирована"); return null; } check_condition(!$ensure, "Страница не зарегистрирована"); return null; }