<?php 
/**
 * Система управления сайтом HostCMS v. 5.xx
 * Copyright © 2005-2010 ООО "Хостмэйк" (Hostmake LLC), http://www.hostcms.ru
 *
 * Форма добаления/редактирования свойства динамической страницы.
 * 
 * Файл: /admin/lib/action/form_edit_add_lib_property.php
 * 
 * @author Hostmake LLC
 * @version 5.x
 */
if (!isset($lib_property_id))
{
	$lib_property_id = 0;
}

if (!isset($lib_id))
{
	$lib_id = 0;
}

if (!isset($lib_dir_id))
{
	$lib_dir_id = 0;
}

$form_params = array();
$form_params['title'] = $lib_property_id == 0 ? $GLOBALS['MSG_lib']['lib_property_form_title_add'] : $GLOBALS['MSG_lib']['lib_property_form_title_edit'];
$form_params['form_attribs']['method'] = 'post';
$form_params['form_attribs']['action'] = '/admin/lib/lib.php';
$form_params['form_attribs']['ENCTYPE'] = 'multipart/form-data';
$form_params['form_attribs']['name'] = 'EditAddLibProperty';

$admin_forms_fields = new admin_forms_fields();

// Строим хлебные крошки.
$lib = new lib();

$path_array = $lib->GetLibPathArray($lib_dir_id);
$path = $lib->path_array;

// Преобразуем идентификаторы групп в ссылки на группы.
$form_params['path_array'] = array();

if ($path_array)
{
	foreach ($path_array as $key => $value)
	{
		$form_params['path_array'][] = array (	
		'link' => $admin_forms_fields->GetHtmlCallDoLoadAjax('/admin/lib/lib.php', "&lib_dir_id=$key", 32, 'load_data'),
		'onclick' => $admin_forms_fields->GetOnClickCallDoLoadAjax('/admin/lib/lib.php', "&lib_dir_id=$key", 32, 'load_data'),
		'name' => $value);
	}
}

// Данные о типовой динамической странице
$res = $lib->GetLib($lib_id);

$form_params['path_array'][] = array (
'link' => $admin_forms_fields->GetHtmlCallDoLoadAjax('/admin/lib/lib.php', "&lib_id=$lib_id&lib_dir_id=$lib_dir_id", 33, 'load_data'),
'onclick' => $admin_forms_fields->GetOnClickCallDoLoadAjax('/admin/lib/lib.php', "&lib_id=$lib_id&lib_dir_id=$lib_dir_id", 33, 'load_data'),
'name' => $res['lib_name']);

$form_params['path_array'][0]['name'] = $GLOBALS['MSG_lib']['menu'];

$admin_forms_fields->admin_forms_fields($form_params);

$DataBase = & singleton('DataBase');

// Редактирование свойства динамической страницы
if ($lib_property_id)
{
	$type = 1;

	$row = $lib->GetLibProperty($lib_property_id);
	$lib_id = to_int($row['lib_id']);
	$lib_property_name = to_str($row['lib_property_name']);
	$lib_property_description = to_str($row['lib_property_description']);
	$lib_property_varible_name = to_str($row['lib_property_varible_name']);
	$lib_property_type = to_int($row['lib_property_type']);
	$lib_property_default_value = to_str($row['lib_property_default_value']);
	$lib_property_order = to_int($row['lib_property_order']);
	$lib_property_sql_request = to_str($row['lib_property_sql_request']);
	$lib_property_sql_caption_field = to_str($row['lib_property_sql_caption_field']);
	$lib_property_sql_value_field = to_str($row['lib_property_sql_value_field']);
}
// Добавление свойства типовой динамической страницы
else
{
	$lib_property_name = '';
	$lib_property_description = '';
	$lib_property_varible_name = '';
	$lib_property_type = 0;
	$lib_property_default_value = '';
	$lib_property_order = 0;
	$lib_property_sql_request = '';
	$lib_property_sql_caption_field = '';
	$lib_property_sql_value_field = '';
}

$tab_id = $admin_forms_fields->AddTab($GLOBALS['MSG_lib']['lib_parameters']);

// Название свойства динамической страницы
$param = array();
$param['tab_id'] = $tab_id;
$param['name'] = 'lib_property_name';
$param['caption'] = $GLOBALS['MSG_lib']['lib_parameter_name'];
$param['type'] = 0; // textbox
$param['value'] = $lib_property_name;
$param['attributes']['class'] = 'large';
$param['format']['minlen']['value'] = 1;
$param['format']['maxlen']['value'] = 255;
$admin_forms_fields->AddField($param);

// Описание параметра динамической страницы
$param = array();
$param['tab_id'] = $tab_id;
$param['name'] = 'lib_property_description';
$param['caption'] = $GLOBALS['MSG_lib']['lib_property_form_description'];
$param['type'] = 5; // textarea
$param['value'] = $lib_property_description;
$param['attributes'] = array();
$param['attributes']['rows'] = 7;
$param['attributes']['style'] = 'width: 100%;';
$admin_forms_fields->AddField($param);

// Название переменной параметра динамической страницы
$param = array();
$param['tab_id'] = $tab_id;
$param['name'] = 'lib_property_varible_name';
$param['caption'] = $GLOBALS['MSG_lib']['lib_property_form_varible_name'];
$param['type'] = 0; // textbox
$param['value'] = $lib_property_varible_name;
$param['format']['lib']['value'] = 'path';
$admin_forms_fields->AddField($param);

// Список типов параметров динамической страницы
$param = array();
$param['tab_id'] = $tab_id;
$param['name'] = 'lib_property_type';
$param['caption'] = $GLOBALS['MSG_lib']['lib_property_list_type'];
$param['type'] = 2; // Выпадающий список.

$param['attributes']['onchange'] = 'SetView(this.options[this.selectedIndex].value)';
$param['value'] = $lib_property_type;

$items = array();

$mas = array(0 => $GLOBALS['MSG_lib']['lib_property_type_0'],
1 => $GLOBALS['MSG_lib']['lib_property_type_1'],
2 => $GLOBALS['MSG_lib']['lib_property_type_2'],
3 => $GLOBALS['MSG_lib']['lib_property_type_3'],
4 => $GLOBALS['MSG_lib']['lib_property_type_4'],
5 => $GLOBALS['MSG_lib']['lib_property_type_5']
);

foreach ($mas as $key => $value)
{
	$items[$key] = $value;
}

$param['items'] = $items;

$admin_forms_fields->AddField($param);

// Сообщение для списка параметра динамической страницы
$param = array();
$param['tab_id'] = $tab_id;
$param['div_id'] = 'id_list';
$param['name'] = '';
$param['caption'] = $GLOBALS['MSG_lib']['lib_property_list_caption'];
$param['type'] = 8; // textbox

$param['value'] ='<table style="border-style: none; color: black;" border=0px cellspacing=5px cellpadding=0>
					<tr>
						<td style="width: 139px; border-style: none; background: #DADADA; padding-left: 6px;" align="center">
					'.$GLOBALS['MSG_lib']['lib_property_list_name'].'
				</td>
				<td style="border-style: none; width: 144px; background: #DADADA;" align="center">
					'.$GLOBALS['MSG_lib']['lib_property_list_value'].'
				</td>
				<td style="border-style: none; width: 36px; background: #DADADA;" align="center">
					'.$GLOBALS['MSG_lib']['lib_property_list_order'].'
				</td>
			</tr>
		</table>
		<div id="id_list_content" style="padding-left: 5px;"></div>
		<div id="id_new_list_item" style="border: 1px dashed #DADADA; padding: 5px; margin-top: 5px;">'.$GLOBALS['MSG_lib']['lib_property_list_new_caption'].'<br>
			<input type="text" style="width: 12em;" id="id_new_list_item_name" value="" />
			<input type="text" style="width: 12em;" id="id_new_list_item_value" value="" />
			<input type="text" style="width: 3em;" id="id_new_list_item_order" value="" /><br>
			<input type="button" value="'.$GLOBALS['MSG_lib']['lib_property_list_add_new'].'" onclick="DoAddNewListItem()">
		</div>';
$admin_forms_fields->AddField($param);

// Список значений параметра динамической страницы

$param = array();
$param['tab_id'] = $tab_id;
$param['name'] = 'lib_property_list';
$param['div_id'] = 'id_list_error';
$param['caption'] =$GLOBALS['MSG_lib']['lib_property_list_caption'];
$param['type'] = 8; // textbox

ob_start();
show_message($GLOBALS['MSG_lib']['lib_property_list_error']);
$message = ob_get_clean();

$param['value'] = $message;
$param['attributes']['size'] = 10;
$admin_forms_fields->AddField($param);

// Порядок сортировки параметра динамической страницы
$param = array();
$param['tab_id'] = $tab_id;
$param['name'] = 'lib_property_order';
$param['caption'] = $GLOBALS['MSG_lib']['lib_property_form_order'];
$param['type'] = 0; // textbox
$param['value'] = $lib_property_order;
//$param['attributes']['size'] = 10;
$param['format']['lib']['value'] = 'integer';
$admin_forms_fields->AddField($param);

// Значение по умолчанию параметра динамической страницы
$param = array();
$param['tab_id'] = $tab_id;
$param['div_id'] = 'default_value_id';
$param['name'] = 'lib_property_default_value';
$param['caption'] = $GLOBALS['MSG_lib']['lib_property_form_default_value'];
$param['type'] = 0; // textbox
$param['value'] = $lib_property_default_value;
//$param['attributes']['size'] = 50;
$param['format']['maxlen']['value'] = 255;
$admin_forms_fields->AddField($param);

// Текст SQL-запроса
$param = array();
$param['tab_id'] = $tab_id;
$param['div_id'] = 'sql_text_id';
$param['name'] = 'lib_property_sql_request';
$param['caption'] = $GLOBALS['MSG_lib']['lib_property_form_sql_request'];
$param['type'] = 5; // textarea
$param['value'] = $lib_property_sql_request;
$param['attributes'] = array();
$param['attributes']['rows'] = 7;
$param['attributes']['style'] = 'width: 100%;';
$admin_forms_fields->AddField($param);

// Поле заголовка
$param = array();
$param['tab_id'] = $tab_id;
$param['div_id'] = 'header_field_id';
$param['name'] = 'lib_property_sql_caption_field';
$param['caption'] = $GLOBALS['MSG_lib']['lib_property_form_sql_caption'];
$param['type'] = 0; // textbox
$param['value'] = $lib_property_sql_caption_field;
$admin_forms_fields->AddField($param);

// Поле значения
$param = array();
$param['tab_id'] = $tab_id;
$param['div_id'] = 'value_field_id';
$param['name'] = 'lib_property_sql_value_field';
$param['caption'] = $GLOBALS['MSG_lib']['lib_property_form_sql_value'];
$param['type'] = 0; // textbox
$param['value'] = $lib_property_sql_value_field;
$admin_forms_fields->AddField($param);

if ($lib_property_id)
{
	$param = array();
	$param['tab_id'] = $tab_id;
	$param['name'] = 'lib_property_id';
	$param['type'] = 4; // Скрытое поле.
	$param['value'] = $lib_property_id;
	$admin_forms_fields->AddField($param);
}

$param = array();
$param['tab_id'] = $tab_id;
$param['name'] = 'lib_id';
$param['type'] = 4; // Скрытое поле.
$param['value'] = $lib_id;
$admin_forms_fields->AddField($param);

$param = array();
$param['tab_id'] = $tab_id;
$param['name'] = 'lib_dir_id';
$param['type'] = 4; // Скрытое поле.
$param['value'] = $lib_dir_id;
$admin_forms_fields->AddField($param);

// Кнопка "Сохранить".
$param = array();
$param['name'] = 'save_lib_property';
$param['caption'] = $GLOBALS['MSG_lib']['lib_save'];
$param['attributes']['onclick'] = "return SendForm('{$admin_forms_fields->GetWindowId()}', '{$admin_forms_fields->AAction}', '{$admin_forms_fields->AAdditionalParams}', this, ".to_int($_REQUEST['admin_forms_id']).", 'load_data', " . to_int($admin_forms_fields->form_params['current_page']) . ", " . to_int($admin_forms_fields->form_params['on_page']) . " )";
$param['attributes']['type'] = 'button';
$admin_forms_fields->AddButton($param);

// Кнопка "Применить".
$param = array();
$param['name'] = 'add_lib_property';
$param['caption'] = $GLOBALS['MSG_lib']['lib_apply'];
$param['image'] = '/admin/images/add.gif';
$param['attributes']['onclick'] = "return SendForm('{$admin_forms_fields->GetWindowId()}', '{$admin_forms_fields->AAction}', '{$admin_forms_fields->AAdditionalParams}', this, ".to_int($_REQUEST['admin_forms_id']).", 'load_data', " . to_int($admin_forms_fields->form_params['current_page']) . ", " . to_int($admin_forms_fields->form_params['on_page']) . " )";
$param['attributes']['type'] = 'submit';
$admin_forms_fields->AddButton($param);

$external_html ='<script language="JavaScript">

/* Скрытие/отображение блоков таблицы */
function SetView(ASelectedItem)
{
	document.getElementById("default_value_id").style.display ="" ;
	document.getElementById("sql_text_id").style.display = "" ;
	document.getElementById("header_field_id").style.display = "" ;
	document.getElementById("value_field_id").style.display = "" ;
	document.getElementById("id_list_error").style.display = "";
	
	ASelectedItem = parseInt(ASelectedItem);
		
	switch (ASelectedItem)
	{
		case 0:
		case 1:
		case 2:
		case 5:
			document.getElementById("sql_text_id").style.display = "none" ;
			document.getElementById("header_field_id").style.display = "none" ;
			document.getElementById("value_field_id").style.display = "none" ;
			document.getElementById("id_list").style.display = "none";
			document.getElementById("id_list_error").style.display = "none";
		break;
		
		case 3:
			document.getElementById("sql_text_id").style.display = "none" ;
			document.getElementById("header_field_id").style.display = "none" ;
			document.getElementById("value_field_id").style.display = "none" ;
			
			$error = '.$lib_property_id.' == 0;
			
			// Если $lib_property_id = 0, то отображаем предупреждение.
			if ($error)
			{
				document.getElementById("default_value_id").style.display = "";
				document.getElementById("id_list").style.display = "none";
				document.getElementById("id_list_error").style.display = "";					
			}
			else
			{
				document.getElementById("default_value_id").style.display = "none";
				document.getElementById("id_list").style.display = "";
				document.getElementById("id_list_error").style.display = "none";
				// Загружаем элементы списка.
				DoLoadPropertyListItems('.$lib_property_id.');
			}
		break;
		
		case 4:
			document.getElementById("default_value_id").style.display = "none";
			document.getElementById("id_list").style.display = "none";
			document.getElementById("id_list_error").style.display = "none";
		break;
	}
}

/* Удаление элемента списка */
function DoDeleteListItem(AListItemID)
{
	if (!confirm(\''.$GLOBALS['MSG_lib']['lib_property_list_confirm_delete'].'\'))
	{
		return false;
	}
	
	var req = new JsHttpRequest();
	
	// Этот код вызовется автоматически, когда загрузка данных завершится
	req.onreadystatechange = function()
	{
		if (req.readyState == 4)
		{
			document.body.style.cursor = \'\';
			if (req.responseJS != undefined)
			{
				// Удаляем html.
				document.getElementById(req.responseJS.delete_item_id).innerHTML = \'\';
				// Скрываем.
				document.getElementById(req.responseJS.delete_item_id).style.display = "none";
			}
		}
	}
	
	link_url = "/admin/lib/lib.php?ajax_lib=3&lib_property_list_id=" + AListItemID;
	
	// Подготовка запроса с автоматическим методом выбора типа запроса
	req.open(null, link_url, true);
	
	// Отсылаем данные в обработчик
	req.send(null);
	
	// Курсов ставим на часики
	document.body.style.cursor = "wait";
}

/* Добавление нового элемента списка */
function DoAddNewListItem()
{

	if (document.getElementById("id_new_list_item_name").value == \'\')
	{
		alert(\''.$GLOBALS['MSG_lib']['lib_property_list_empty_name_error'].'\');
		return false;
	}
	link_url = "/admin/lib/lib.php?ajax_lib=2&lib_property_id='.$lib_property_id.'" + 
		"&new_list_item_name=" + HostcmsEscape(document.getElementById("id_new_list_item_name").value) + 
		"&new_list_item_value=" + HostcmsEscape(document.getElementById("id_new_list_item_value").value) +
		"&new_list_item_order=" + document.getElementById("id_new_list_item_order").value;
		
	// Очищаем поля ввода.
	document.getElementById("id_new_list_item_name").value = \'\';
	document.getElementById("id_new_list_item_value").value = \'\';
	document.getElementById("id_new_list_item_order").value = \'\';

	var req = new JsHttpRequest();
	
	// Этот код вызовется автоматически, когда загрузка данных завершится
	req.onreadystatechange = function()
	{
		if (req.readyState == 4)
		{
			document.body.style.cursor = \'\';
			if (req.responseJS != undefined)
			{
				// Выводим результат в переменную
				html = req.responseJS.list_html;
			}
			else
			{
				html = \'\';
			}
			
			document.getElementById(\'id_list_content\').innerHTML = document.getElementById(\'id_list_content\').innerHTML + 
				html;
		}
	}
	
	// Подготовка запроса с автоматическим методом выбора типа запроса
	req.open(null, link_url, true);
	
	// Отсылаем данные в обработчик
	req.send(null);
	
	// Курсов ставим на часики
	document.body.style.cursor = "wait";
}

/* Загрузка элементов списка */
function DoLoadPropertyListItems(ALibPropertyId)
{
	var req = new JsHttpRequest();
	
	// Этот код вызовется автоматически, когда загрузка данных завершится
	req.onreadystatechange = function()
	{
		if (req.readyState == 4)
		{
			document.body.style.cursor = \'\';
			if (req.responseJS != undefined)
			{
				// Выводим результат в переменную
				html = req.responseJS.list_html;
			}
			else
			{
				html = \'\';
			}
			
			document.getElementById(\'id_list_content\').innerHTML = html;
		}
	}
	
	// Подготовка запроса с автоматическим методом выбора типа запроса
	req.open(null, \'/admin/lib/lib.php?ajax_lib=1&lib_property_id=\' + ALibPropertyId, true);
	
	// Отсылаем данные в обработчик
	req.send(null);
	
	// Курсов ставим на часики
	document.body.style.cursor = "wait";
}

/* Скрываем/показываем блоки таблицы */
SetView('.$lib_property_type.');

</script>';

$admin_forms_fields->SetExternalHtml($external_html);
// Отображение формы.
$admin_forms_fields->ShowForm();

?>