/** * Функция производит финализацию страницы, показываемой пользователю, добавляя к ней элемент с содержащимися в нём ссылками. */ public function appendLibItemsToPageContent($CONTENT) { $matches = array(); $data = PsConstJs::BUBBLE_LOADER_FOLDING_DATA; $pattern = "/data-{$data}=\"(.+?)\"/si"; preg_match_all($pattern, $CONTENT, $matches); $matches = array_unique(array_get_value(1, $matches, array())); $items = array(); foreach ($matches as $unique) { $entity = FoldedStorageInsts::getFoldedEntityByUnique($unique, false); if ($entity && $entity->getFolding()->isItByType(LibResources::LIB_FOLDING_TYPE)) { $items[$entity->getUnique()] = $entity->getFolding()->getBubble($entity->getIdent()); } } $has = count($items) > 0; if ($this->LOGGER->isEnabled()) { $this->LOGGER->info(); $this->LOGGER->info('Библиотечные элементы, добавленные на страницу:'); if ($has) { foreach ($items as $unique => $lib) { $this->LOGGER->info("\t{$unique}"); } } else { $this->LOGGER->info("\t-- Нет --"); } } return $CONTENT . ($has ? PsHtml::div(array('id' => PsConstJs::BUBBLE_LOADER_FOLDING_STORE_ID), implode('', $items)) : ''); }
protected function processImpl(PostArrayAdapter $adapter, $button) { $entity = FoldedStorageInsts::getFoldedEntityByUnique($adapter->str('fentity')); $tpl = $entity->getFolding()->getInfoTpl($entity->getIdent(), $adapter->str('ftpl')); $content = $adapter->str('tpl'); $tpl->getDirItem()->writeLineToFile($content, true); return new AjaxSuccess(); }
/** * Метод пытается выдать очки пользователю на основе запроса к ajax {@link GivePointsCommon} */ public function givePointsByRequest(PsUser $user, ArrayAdapter $request) { $fentity = FoldedStorageInsts::getFoldedEntityByUnique($request->str('fentity')); $class = $fentity->getClassInst(); PsUtil::assertInstanceOf($class, 'PointsGiverRequest'); $request->remove('fentity'); $ctxt = new GivePointsContext($user->getId(), $fentity->getDbCode()); $class->givePointsByRequest($ctxt, $request); return $this->checkGivePointsContext($user, $ctxt); }
/** * Див-обёртка для хранения содержимого bubble. * <div class="lib-s-BP_FM2_einstein lib-bubble">...</div> * И баблы, показываемые на странице, и баблы, загружаемые через ajax - все отображаются в этой обёртке. */ public static function extractFoldedEntityBubbleDiv($unique) { $entity = FoldedStorageInsts::getFoldedEntityByUnique($unique, false); if (!$entity || !$entity->getFolding() instanceof BubbledFolding) { return null; } //Добавим классы для контейнера bubble, чтобы мы могли его найти на странице $params['class'][] = $entity->getUnique(); $params['class'][] = $entity->getFolding()->getFoldingType() . '-bubble'; $bubble = $entity->getFolding()->getBubble($entity->getIdent()); $clear = PsHtml::div(array('class' => 'clearall')); return PsHtml::div($params, $bubble . $clear); }
/** * Метод возвращает сущность фолдинга по заданному коду * * @return FoldedEntity Сущность, соответствующая заданному коду */ public function getFoldedEntityByDbCode($code) { return $this->CACHE->has($code) ? $this->CACHE->get($code) : $this->CACHE->set($code, FoldedStorageInsts::getFoldedEntityByUnique(FoldingBean::inst()->getUniqueByCode($code))); }
public function buildContent() { $navigation = AdminPageNavigation::inst(); $RQ = RequestArrayAdapter::inst(); /** @var FoldedEntity */ $entity = FoldedStorageInsts::getFoldedEntityByUnique($RQ->str('entity'), false); /** @var FoldedResources */ $folding = $entity ? $entity->getFolding() : FoldedStorageInsts::byUnique($RQ->str('folding'), false); $mode = $RQ->str('mode', self::MODE_FOLDINGS_LIST); $PARAMS['mode'] = $mode; $PARAMS['error'] = null; $PARAMS['entity'] = $entity; $PARAMS['folding'] = $folding; $PARAMS['foldings'] = FoldedStorageInsts::listFoldings(); $ftype = $folding ? $folding->getFoldingType() : ''; $fsubtype = $folding ? $folding->getFoldingSubType() : ''; $fident = $entity ? $entity->getIdent() : ''; $flist = $RQ->str('list'); $ftplpath = $RQ->str('tplpath'); //РЕДИРЕКТ if ($mode != self::MODE_FOLDINGS_LIST && !$folding) { PsUtil::redirectTo(self::urlFoldingsList()); } //ВЫПОЛНЕНИЕ switch ($mode) { //СПИСОК ВСЕХ ФОЛДИНГОВ case self::MODE_FOLDINGS_LIST: $navigation->setCurrent('Список фолдингов'); break; //СПИСОК СУЩНОСТЕЙ ДАННОГО ФОЛДИНГА //СПИСОК СУЩНОСТЕЙ ДАННОГО ФОЛДИНГА case self::MODE_FOLDING_CONTENT: $newIdent = $folding->getNextEntityIdent(); //Форма создания $FORM = FORM_AdminFoldingCreateForm::getInstance(); $FORM->setHidden('folding', $folding->getUnique()); $FORM->setParam(FORM_AdminFoldingCreateForm::PARAM_NEW_FOLDING_IDENT, $newIdent); $FORM->setSmartyParam('folding', $folding); /* @var $TABLE PsTable */ $FORM->setSmartyParam('rec', $folding->getDbRec4Entity($newIdent)); //Форма загрузки $FORM = FORM_AdminFoldingUploadForm::getInstance(); $FORM->setHidden('folding', $folding->getUnique()); $navigation->addPath(self::urlFoldingsList(), 'Список фолдингов'); $navigation->setCurrent($folding->getEntityName()); break; case self::MODE_FOLDING_LIST_EDIT: $PARAMS['list'] = $flist; //TODO - выкинуто //$PARAMS['listIdents'] = $folding->getPossibleListIdents($flist); $navigation->addPath(self::urlFoldingsList(), 'Список фолдингов'); $navigation->addPath(self::urlFoldingEntitys($folding), $folding->getEntityName()); $navigation->setCurrent('Редактирование списка ' . $flist); break; case self::MODE_FOLDING_TPLS_LIST: $PARAMS['tplsList'] = $folding->getAllInfoTpls($fident); $navigation->addPath(self::urlFoldingsList(), 'Список фолдингов'); $navigation->addPath(self::urlFoldingEntitys($folding), $folding->getEntityName()); $navigation->addPath(self::urlFoldingEdit($entity), $fident); $navigation->setCurrent('Информационные шаблоны'); break; case self::MODE_FOLDING_TPL_EDIT: $PARAMS['tplsList'] = $folding->getAllInfoTpls($fident); $tpl = $folding->getInfoTpl($entity->getIdent(), $ftplpath); $PARAMS['tpl'] = $tpl; //Отфетчим содержимое, извлеча из запроса те параметры, которые начинаются на sm_ $PARAMS['content'] = $tpl->fetchNoCache($RQ->getByKeyPrefix('sm_', true)); $FORM = FORM_AdminFoldingInfoTplEditForm::getInstance(); $FORM->setHidden('fentity', $entity->getUnique()); $FORM->setHidden('ftpl', $tpl->getInfoRelPath()); $FORM->setSmartyParam('tpl', $tpl->getDirItem()->getFileContents()); $navigation->addPath(self::urlFoldingsList(), 'Список фолдингов'); $navigation->addPath(self::urlFoldingEntitys($folding), $folding->getEntityName()); $navigation->addPath(self::urlFoldingEdit($entity), $fident); $navigation->addPath(self::urlFoldingInfoTplsList($entity), 'Информационные шаблоны'); $navigation->setCurrent($tpl->getInfoRelPath()); break; case self::MODE_FOLDING_EDIT: //Ссылка для скачивания спрайтов $download['class'] = 'download'; $download['data'] = array('ftype' => $ftype, 'fsubtype' => $fsubtype, 'fident' => $fident); $PARAMS['download'] = PsHtml::a($download, '[Скачать]'); $spriteImg = $folding->getSprite($fident); $spriteImg = $spriteImg && $spriteImg->getImgDi()->isImg() ? $spriteImg->getImgDi() : null; $PARAMS['sprite'] = $spriteImg ? PsHtml::a(array('href' => $spriteImg->getRelPath()), '[Спрайт]', true) : null; //Информационные шаблоны $PARAMS['patterns'] = ''; if (count($folding->getInfoDiList($fident))) { $patterns['href'] = self::urlFoldingInfoTplsList($entity); $PARAMS['patterns'] = PsHtml::a($patterns, '[Инфо шаблоны]'); } $PARAMS['info'] = ''; try { $prew = $folding->getFoldedEntityPreview($fident); if (is_array($prew)) { $PARAMS['info'] = array_get_value('info', $prew); $PARAMS['content'] = array_get_value('content', $prew); } else { $PARAMS['content'] = $prew; } } catch (Exception $e) { $PARAMS['content'] = ExceptionHandler::getHtml($e); } /* * Подготовим форму редактирования фолдинга */ $FORM = FORM_AdminFoldingEditForm::getInstance(); /* hiddens */ $FORM->setHidden('ftype', $ftype); $FORM->setHidden('fsubtype', $fsubtype); $FORM->setHidden('fident', $fident); $rtypes = $folding->getAllowedResourceTypes(); /* fields */ foreach ($rtypes as $rtype) { $FORM->setParam($rtype, $folding->getResourceDi($fident, $rtype)->getFileContents(false)); } /* smarty */ $FORM->setSmartyParam('types', $rtypes); $FORM->setSmartyParam('covers', $folding->isImagesFactoryEnabled()); /* table */ $TABLE = null; $DBROW = null; if ($folding->getTableName()) { $TABLE = TableExporter::inst()->getTable($folding->getTableName()); //TODO - выкинуто //$DBROW = $TABLE->getFoldingDbRec($folding, $fident); } $FORM->setSmartyParam('table', $TABLE); $FORM->setSmartyParam('row', $DBROW); if (!$DBROW) { $FORM->removeButton(FORM_AdminFoldingEditForm::BUTTON_DELETE_ALL); } /* * Навигация */ $navigation->addPath(self::urlFoldingsList(), 'Список фолдингов'); $navigation->addPath(self::urlFoldingEntitys($folding), $folding->getEntityName()); $navigation->setCurrent($fident); break; } PsDefines::setReplaceFormulesWithImages(false); echo $this->getFoldedEntity()->fetchTpl($PARAMS); }