Beispiel #1
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();
 }