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(); }
/** * Инициализация */ 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); }
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); }
/** * ------------------------------------------------------------------------------------------- * Вызывается если передан параметр 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/'); } }
/** * Отображает форму редактирования элемента * * @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(); }