Пример #1
0
 /**
  * Добавляет документ
  * @param string $document имя документа
  */
 public function showPlaces($document)
 {
     $documentTitle = call_user_func(array($document, 'getLabel'), \Extasy\Model\Model::labelName);
     $title = 'Добавление "%s". Выберите куда публиковать документ';
     $title = sprintf($title, $documentTitle);
     $begin = array('Выбор документа' => './standart-add.php', $title => '#');
     //
     $aMove = Sitemap_CMS::whereToMove($document);
     $this->outputHeader($begin, $title, CMS::getResourcesUrl() . 'extasy/Dashboard/sitemap/standart-add.js');
     $tableHeader = array(array(' ', 5), array('Cтраница', 25), array('URL', 55));
     $design = CMSDesign::getInstance();
     $design->formBegin();
     $design->TableBegin();
     $design->tableHeader($tableHeader);
     //
     foreach ($aMove as $row) {
         $radio = sprintf('<input type="radio" name="place" value="%d" >', $row['id']);
         $design->rowBegin();
         $design->listCell($radio);
         $design->listCell(htmlspecialchars($row['name']));
         $design->listCell(htmlspecialchars($row['full_url']));
         $design->rowEnd();
     }
     if (empty($aMove)) {
         $design->fullrow('<p class="important big">Вы пока не можете создать данный документ, т.к. пока не созданы разделы, куда его можно было бы добавить</p>');
     }
     $design->tableEnd();
     $design->hidden('document', $document);
     $design->submit('submit', 'Создать');
     $design->formEnd();
     //
     $this->outputFooter();
     $this->output();
 }
Пример #2
0
 /** 
  * Выводит форму переноса документа
  */
 public function showMove($id)
 {
     $aDocument = Sitemap_Sample::get($id);
     if (empty($aDocument['document_name'])) {
         throw new Exception('Requested id isn`t document');
     }
     $szTitle = 'Перемещение документа - ' . $aDocument['name'];
     $szTitle2 = 'Текущий URL - ' . $aDocument['full_url'];
     $aButton = array('Закрыть' => array('id' => 'close_window', 'value' => '#'));
     // Получаем список возможных скриптов, куда можем перенести
     require_once LIB_PATH . 'sitemap/additional/cms.php';
     $aMove = Sitemap_CMS::whereToMove($aDocument['document_name']);
     $this->outputForm($aDocument, $aMove, $szTitle, $szTitle2, $aButton);
 }
Пример #3
0
 protected function output()
 {
     // Вывод начала
     $controls = $this->schema->selectTabbedControls();
     // Сортируем вкладки по алфавиту
     ksort($controls);
     $title = sprintf('Редактирование "%s"', $this->schema->getTitle());
     $sheets = $this->getTabSheets($controls);
     if ($this->schema->getSitemapLink() == 0) {
         $begin = array($title => '#');
     } else {
         $parents = Sitemap_CMS::getParents($this->schema->getSitemapLink());
         $begin = Sitemap_CMS::selectBegin($parents, $title);
     }
     $this->outputHeader($begin, $title, array(), array(), $this->embed);
     $this->outputEditingForm($sheets, $controls);
     parent::output();
 }
Пример #4
0
 /**
  * Инициализация
  */
 public function __construct($nId, $szConfigPath, $aButton = array())
 {
     $nId = intval($nId);
     $aBegin = array();
     $szTitle = '';
     // Получаем запись в карте сайта
     $aSitemap = Sitemap_Sample::get($nId);
     $this->aSitemap = $aSitemap;
     // Проверяем что это вообще скрипт :)
     if (empty($aSitemap['document_name']) && !empty($aSitemap['script'])) {
         $szTitle = 'Редактирование страницы "' . $aSitemap['name'] . '"';
         $aParent = Sitemap_CMS::getParents($aSitemap['id']);
         $aBegin = $this->selectBegin($aParent, $szTitle);
     } else {
         throw new Exception('Sitemap item with id=' . $nId . ' && config="' . htmlspecialchars($szConfigPath) . '" not found');
     }
     if (!file_exists($szConfigPath)) {
         if (file_exists(SETTINGS_PATH . $szConfigPath)) {
             $szConfigPath = SETTINGS_PATH . $szConfigPath;
         }
     }
     $this->addPost('sitemap_name,sitemap_url_key,sitemap_move_id', 'postConfig');
     parent::__construct($aBegin, $szTitle, $szConfigPath, $aButton);
 }
Пример #5
0
 protected function formatDesign($aRow = array())
 {
     if (!empty($aRow)) {
         $this->szTitle = 'Сортировка подстраниц раздела "' . $aRow['name'] . '"';
     } else {
         $this->szTitle = 'Сортировка разделов первого уровня';
     }
     $this->aBegin = Sitemap_CMS::selectBegin(Sitemap_CMS::getParents($this->nId), $this->szTitle);
 }
Пример #6
0
 /**
  *   -------------------------------------------------------------------------------------------
  *   Вызывается если передан параметр parent, тогда изменяем внутреннее значение parent и
  *   изменяем заголовок страниц, дополняем хлебные крошки страницы
  * @return
  *   -------------------------------------------------------------------------------------------
  */
 public function processParent($id, $page = 0)
 {
     try {
         $id = IntegerHelper::toNatural($id);
         $aInfo = Sitemap_Sample::get($id);
         $aParent = Sitemap_CMS::getParents($aInfo['id']);
         $this->szTitle = $aInfo['name'];
         $this->aBegin = Sitemap_CMS::selectBegin($aParent, $aInfo['name']);
         $this->nParent = intval($id);
         $this->main($page);
     } catch (Exception $e) {
         CMSLog::addMessage('sitemap-data-list', $e);
         $this->addError('Указанная страница не найдена');
         $this->jump(\Extasy\CMS::getDashboardWWWRoot() . 'sitemap/');
     }
 }
Пример #7
0
 /**
  * Отображает форму редактирования элемента
  *
  * @param $aTabSheet array, хеш-массив имен вкладок и полей внутри их
  * @param $aButtons  array, хеш-массив кнопок необходимых к выводу
  */
 public function getAdminUpdateForm($aTabSheet = array(), $aButtons = array(), $begin = array(), $title = '')
 {
     if ($this->withSitemap) {
         $this->needSitemapData();
     }
     // Получаем информацию о типе данных, его полях
     $aType = static::getFieldsInfo();
     // Если пусты вкладки редактировании, то ищем информацию о них в самом типе
     if (empty($aTabSheet)) {
         if (!empty($aType['cms_tabsheets'])) {
             $aTabSheet = $aType['cms_tabsheets'];
             // Применяем автоматическую сортировку
             ksort($aTabSheet);
             // А теперь вырезаем лидирующие цифры
             $tmp = $aTabSheet;
             $aTabSheet = array();
             foreach ($tmp as $key => $row) {
                 $key = preg_replace('#^[0-9]+#', '', $key);
                 $aTabSheet[$key] = $row;
             }
         } else {
             throw new Exception('Form layout empty. It must be defined in child class!');
         }
     }
     //
     $nCounter = 0;
     foreach ($aTabSheet as $key => $row) {
         $aResultTabSheet[] = array('id' => 'tab_' . $nCounter, 'title' => $key);
         $nCounter++;
     }
     // Добавляем вкладку о свойствах документа в карте сайта1
     if ($this->withSitemap) {
         $this->needSitemapData();
         $aResultTabSheet[] = array('id' => 'tab_sitemap', 'title' => 'Свойства');
     }
     // Выводим заголовок документа
     $design = CMSDesign::getInstance();
     if (isset($this->columns['name'])) {
         $titleTemplate = 'Редактирование "%s"';
         $szTitle = sprintf($titleTemplate, cuttext($this->name->getValue(), 48));
         // 48!!!
     } else {
         $szTitle = self::getLabel(self::labelEditItem);
     }
     if (!empty($begin)) {
         $aBegin = $begin;
     } else {
         $aParent = Sitemap_CMS::getParents($this->sitemapInfo['id']);
         // Вырезаем самих себя из массива
         array_pop($aParent);
         $aBegin = Sitemap_CMS::selectBegin($aParent, $szTitle);
         $submenu = Sitemap_CMS::generateDocumentSubmenu($this->getModelName(), $this->sitemapInfo, $aBegin);
         $aButtons = array_merge($aButtons, $submenu);
     }
     $page = new AdminPage();
     $page->outputHeader($aBegin, $szTitle);
     // выводим кнопки, если они есть
     if (!empty($aButtons)) {
         $design->buttons($aButtons);
     }
     // Вывод всех вкладок
     $design->formBegin();
     $design->submit('submit', _msg('APPLY'));
     $design->tabSheetBegin($aResultTabSheet);
     foreach ($aResultTabSheet as $key => $row) {
         if ($key == sizeof($aResultTabSheet) - 1) {
             if ($this->withSitemap) {
                 // Вывод вкладки свойств-документа
                 $this->outputSitemapTabSheet($row);
                 continue;
             } else {
             }
         }
         // Вывод вкладки на редактиование
         $this->outputFormTabSheet($design, $row, $aTabSheet[$row['title']], $aType['fields'], $this->columns);
     }
     $design->tabSheetEnd();
     // Завершаем вывод формы
     if ($this->withSitemap) {
         $design->hidden('sitemapId', $this->sitemapInfo['id']);
     } else {
         $design->hidden('typeName', Static::ModelName);
         $design->hidden('id', $this->id->getValue());
     }
     $design->submit('submit', _msg('APPLY'));
     $design->formEnd();
     $page->outputFooter();
 }