public function reloadCurrentPage()
 {
     PsUtil::redirectTo($this->pageUrl($this->getCurrentPage()));
 }
示例#2
0
 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);
 }
示例#3
0
 /**
  * Метод выполняет редирек на данную страницу. 
  * При этом будет проверено, имеет ли пользователь доступ к ней и, если не имеет,
  * редирект будет произведён на страницу, к которой у пользователя есть доступ.
  */
 public function redirectHere()
 {
     //Имеем доступ? Редиректимся сюда.
     if ($this->hasAccess()) {
         PsUtil::redirectTo($this->path);
     }
     //Указана страница на случай отсутствия доступа? Редиректимся на неё.
     if (is_numeric($this->pageCodeNoAccess)) {
         WebPages::getPage($this->pageCodeNoAccess)->redirectHere();
     }
     //Редирект на index.php
     WebPages::getPage(BASE_PAGE_INDEX)->redirectHere();
 }
示例#4
0
 /**
  * Обработка действия формы создания/изменения/удаления записи
  */
 private function processForm(RecEditFormData $data)
 {
     $table = $data->getTable();
     $action = $data->getAction();
     $rec = $data->getRec();
     /*
      * Сначала выполним действия с фолдингом, так как они более багоёмки
      */
     if ($data->isProcessFolding()) {
         $foldingEntity = $table->getFoldingEntity4DbRecAnyway($rec);
         check_condition($foldingEntity, 'Не удалось определить фолдинг для редактируемой сущности.');
         $folding = $foldingEntity->getFolding();
         $fident = $foldingEntity->getIdent();
         /**
          * Если мы создавали или модифицировали запись, то фолдинг нужно создать.
          * Если удаляли - то фолдинг нужно удалить.
          */
         switch ($action) {
             case PS_ACTION_CREATE:
             case PS_ACTION_EDIT:
                 $folding->createEntity($fident);
                 break;
             case PS_ACTION_DELETE:
                 $folding->deleteEntity($fident);
                 break;
         }
     }
     /*
      * Сохраним изменения в БД
      */
     $table->saveRec($rec, $action);
     if ($action == PS_ACTION_EDIT) {
         PsUtil::redirectToSelf();
     } else {
         PsUtil::redirectTo(self::urlTableRows($table));
     }
 }