Страница добавления элемента

После нажатия на ссылку "Добавить мою новую страницу" пользователь

перейдет на

 страницу с формой добавления страницы.

 Для того, чтобы она заработала, добавим метод "page_add" в файл

 __admin.php:

<?php
...
	public function page_add() {
		$this->load_forms();	//Подгружаем файл 
с формами (forms.php)
			$param = Array();		
//Объявляем массив для параметров, которые будут переданы в форму

	$parent_id = (int) getRequest("param0");	
<wbr>//Получаем id родительского элемента

	//Получаем id иерархического типа
	$hierarchy_type = umiHierarchyTypesCollection::
getInstance()->getTypeByName("mymod", "page");
$hierarchy_type_id = $hierarchy_type->getId();

			
//Получаем массив всех типов данных, принадлежащих нашему модулю
 (привязанных к иерархическому типу $hierarchy_type_id)
	$object_types = umiObjectTypesCollection::
getInstance()->getTypesByHierarchyTypeId($hierarchy_type_id);

	$params['object_types'] = <wbr>
putSelectBox_assoc($object_types, 0, false);	
//Генерируем выпадающий список, состоящий из возможных типов
 данных для редактируемой страницы

			reset($object_types);

			$data_module = cmsController::
getInstance()->getModule("data");	
//Получаем модуль "data" ("Шаблоны данных").
$params['data_field_groups'] = $data_module->renderEditableGroups
(key($object_types));	
//Вставляем динамические формы редактирования, сформированные
 по шаблону данных


$params['parent_id'] = $parent_id; 
//Передаем в форму id текущего раздела, чтобы можно было
 воспользоваться им из формы
return $this->parse_form("page_add", $params);
		}
...
?>
			

 

Осталось добавить в файл forms.php блок "page_add".

 

<?php
...
		public function page_add_do() {
			$this->checkPostIsEmpty();	
//Заставляем систему проверить, есть ли минимум данных,
 чтобы обработать запрос
			$parent_id = (int) 
getRequest("param0");

$hierarhcy_type_id = umiHierarchyTypesCollection::getInstance()->
getTypeByName("mymod", "page")->getId();

$cmsController = cmsController::getInstance();
$lang_id = $cmsController->getCurrentLang()->getId();	
//Получаем id текущего языка
$domain_id = $cmsController->getDomainId()->getId();	
//Получаем id текущего домена


if($parent_id) {
//Если у нас есть родительский элемент, то возьмем id домена 
у него
$parent_element = umiHierarchy::getInstance()->getElement
($parent_id);	
//Получаем родительский элемент

if(is_object($parent_element)) {	//Если все получилось...
$domain_id = $parent_element_id->getDomainId();	
//... то берем у него domain id.
		} else {
throw new privateException("I can't get element with id 
\"{$parent_id}\"");
				}
			}

//Получаем данные из запроса...
$name = (string) getRequest("name");
$alt_name = (string) getRequest("alt_name");
$tpl_id = (int) getRequest("tpl_id");
$object_type_id = (int) getRequest("object_type_id");
$is_active = (bool) getRequest("is_active");
$h1 = (string) getRequest("h1");
			...

$element_id = umiHierarchy::getInstance()->addElement(
$parent_id, $hierarchy_type_id, $name,
$alt_name, $object_type_id, $domain_id,
$lang_id, $tpl_id
);	//Создаем новый пустой элемент (новую страницу)

if($users_module = $cmsController->getModule("users")) {
		$users_module->setPerms($element_id);	
//Устанавливаем права на эту страницу,
														
//которые были выбранына предыдущей страницу
			}

$element = umiHierarchy::getInstance()->getElement($element_id);	
//Получаем только что созданный элемент

//Заполняем элемент всеми необходимыми значениями
$element->setIsActive();
$element->setValue("h1", $h1);
			...
			...

if($data_module = $cmsController->getModule("data")) {
$data->saveEditedGroups($element_id);	
//Сохраняем все данные, полученные из динамических форм,
 построенных по типу данных
			}

$element->commit();	//Подтверждаем внесенные изменения

			...
	$this->redirect($this->pre_lang . "/admin/mymod/tree");		
//Все хорошо, переадресовываем пользователя на следующий экран 
(список страниц в нашем случае).
		}
...
?>
			


Сайт с системой управления от 6000 рублей!