<?php 
/**
 * Система управления сайтом HostCMS v. 5.xx
 * Copyright © 2005-2010 ООО "Хостмэйк" (Hostmake LLC), http://www.hostcms.ru
 *
 * Ajax загрузчик параметров типовой динамической страницы для узла структуры.
 * 
 * Файл: /admin/structure/action/ajax_loader_structure.php
 * 
 * @author Hostmake LLC
 * @version 5.x
 */
$JsHttpRequest = new JsHttpRequest('UTF-8');

// Отображения списка типовых динамических страниц
if (isset($_REQUEST['get_libs']))
{
	$lib_dir_id = to_int($_REQUEST['lib_dir_id']);
	$lib_id = to_int($_REQUEST['lib_id']);

	ob_start();
	?>
	<select name="lib_id" onchange="DoLoadLibProperties(this.options[this.selectedIndex].value)" style="width: 500px">
	<option value="0">&hellip;</option>
	<?php 
	$lib = new lib();
	$lib_resource = $lib->GetAllLibs($lib_dir_id);

	if (mysql_num_rows($lib_resource) > 0)
	{
		while ($row = mysql_fetch_assoc($lib_resource))
		{
			if ($row['lib_id'] == $lib_id)
			{
				$selected = ' selected';
			}
			else
			{
				$selected = '';
			}
			?>
			<option value="<?php echo $row['lib_id']?>"<?php echo $selected?>>
				<?php echo htmlspecialchars($row['lib_name'])?>
			</option>
			<?php 
		}
	}
	?>
	</select>
	<?php 
	$html = ob_get_clean();

	// Отсылаем результат
	$_RESULT = array(
	"lib_html" => $html
	);
	echo $JsHttpRequest->LOADER;
	die();
}

$xsl = new xsl();

if (isset($_REQUEST['get_xsl']))
{
	/* Идентификатор директории */
	$xsl_dir_id = to_int($_REQUEST['xsl_dir_id']);

	/* Идентификатор свойства */
	$lib_property_id = to_int($_REQUEST['property_id']);

	/* Имя xsl шаблона */
	$xsl_name = trim(to_str($_REQUEST['get_xsl']));

	/* Извлекаем информацию о xsl шаблоне по его имени */
	$xsl_row = $xsl->GetXsl($xsl_name);

	if ($xsl_row)
	{
		/* Идентификатор XSL шаблона */
		$xsl_id = to_int($xsl_row['xsl_id']);
	}
	else
	{
		$xsl_id = 0;
	}

	/* Извлекаем список всех xsl шаблонов данной директории */
	$xsl_resource = $xsl->select_xsl(-1, $xsl_dir_id);

	$html = "";
	
	if ($xsl_resource)
	{
		ob_start();
		?>
		<select name="lib_property_id_<?php echo $lib_property_id?>" style="width: 300px"
		onchange="ChangeXslImageLink(<?php echo $lib_property_id?>, XslLib[this.options[this.selectedIndex].value], <?php echo $xsl_dir_id?>)">
		<option value="0">&hellip;</option>
		<?php 
		while ($row = mysql_fetch_assoc($xsl_resource))
		{
			if ($row['xsl_name'] == $xsl_name)
			{
				$selected = ' selected=""';
			}
			else
			{
				$selected = '';
			}
			?>
			<option value="<?php echo $row['xsl_name']?>"<?php echo $selected?>><?php echo $row['xsl_name']?></option>
			<?php
			$html .= "XslLib['" . addslashes($row['xsl_name']) . "'] = '{$row['xsl_id']}';\n";
		}
		?>
		</select>
		<?php 
		// Сам XslLib объявляется в виде массива в конце add_edit_form.php
		?>
		<script language="JavaScript"><?php echo $html?></script>
		<?php
		
		// Ссылка на редактирование
		if ($xsl_id > 0 )
		{
			$style = 'display: block;';
			$link_path = "/admin/xsl/xsl.php?admin_forms_id=22&operation=edit_xsl_dir&check_1_{$xsl_id}=1&xsl_dir_parent_id={$xsl_dir_id}"; 
		}
		else
		{
			$style = 'display: none;';	
			$link_path = "javascript:void(0)";
		}
		
		echo '<a class="' . $style . '" id="xsl_link_image_id_' . $lib_property_id . '" href="' . $link_path . '" target="_blank"><img src="/admin/images/edit.gif" /></a>';

		$html = ob_get_clean();
	}
	else
	{
		$html = '';
	}

	/* Отсылаем результат */
	$_RESULT = array(
	"property_xsl_html" => $html
	);

	echo $JsHttpRequest->LOADER;

	die();
}

/* Получаем идентификатор типового шаблона */
$lib_id = to_int($_REQUEST['get_lib_properties_id']);

if (!$lib_id)
{
	ob_start();
	show_message($GLOBALS['MSG_structure']['structure_add_form_lib_select_message']);
	$html_properties = ob_get_clean();
	//ob_end_flush();

	$_RESULT = array(
	"lib_properties_html" => $html_properties);

	echo $JsHttpRequest->LOADER;
	die();
}

/* Получаем сиписок всех параметров типовой динамической страницы */
$lib = new lib();
$lib_properties_resource = $lib->GetAllLibProperties($lib_id);

if (mysql_num_rows($lib_properties_resource) == 0)
{
	ob_start();
	show_message($GLOBALS['MSG_structure']['structure_add_form_lib_no_params_error_message']);
	$html_properties = ob_get_clean();


	$_RESULT = array(
	"lib_properties_html" => $html_properties,
	);

	echo $JsHttpRequest->LOADER;
	die();
}

$java_script = " ";

/* Получаем идентификатор структуры */
$structure_id = to_int($_REQUEST['structure_id']);

if ($structure_id)
{
	/* Загружаем значения параметров */
	$LA = $lib->LoadLibPropertiesValue($lib_id, $structure_id);

	if (is_array($LA) && count($LA) > 0)
	{
		/* Проходимся по массиву, булевые значения приводим к текстовым */
		foreach ($LA as $key => $current_value)
		{
			if ($current_value === false)
			{
				$LA[$key] = "false";
			}
			elseif ($current_value === true)
			{
				$LA[$key] = "true";
			}
		}
	}
}
else
{
	$LA = array();
}

$html_properties = "<table>";

ob_start();
while ($row = mysql_fetch_assoc($lib_properties_resource))
{
	/* Получаем значение параметра */
	if (isset($LA[to_str($row['lib_property_varible_name'])]))
	{
		$value = $LA[to_str($row['lib_property_varible_name'])];
	}
	else
	{
		$value = $row['lib_property_default_value'];
	}
	?>
	<tr>
	<?php 
	if (empty($row['lib_property_description']))
	{
		$acronym = htmlspecialchars($row['lib_property_name']);
	}
	else
	{
		$acronym = '<acronym title="' . htmlspecialchars($row['lib_property_description']) . '">' . htmlspecialchars($row['lib_property_name']) . '</acronym>';
	}

	/* Формируем HTML с параметрами динамической страницы */
	$lib_property_type = to_int($row['lib_property_type']);
	
	switch ($lib_property_type)
	{
		case 0: /* Текстовое поле */
		{
			?>
			<td><?php echo $acronym?></td>
			<td>
				<input type="text" size = "50" name="lib_property_id_<?php echo $row['lib_property_id']?>" value="<?php echo $value?>" />
			</td>
			<?php 
			break;
		}
		case 1: /* Флажок */
		{
			if (mb_strtolower($value) == 'true')
			{
				$checked = ' checked ';
			}
			else
			{
				$checked = '';
			}
			?>
			<td><?php echo $acronym?></td>
			<td>
				<input name="lib_property_id_<?php echo $row['lib_property_id']?>" size="30" type="checkbox" id="id_lib_property_id_<?php echo $row['lib_property_id']?>" <?php echo $checked?>>
				<label for="id_lib_property_id_<?php echo $row['lib_property_id']?>">&nbsp;<?php echo $GLOBALS['MSG_structure']["structure_add_form_activity_yes"]?></label>
			</td>
			<?php 
			break;
		}
		case 2: /* XSL шаблон */
		{
			?>
			<td><?php echo $acronym?></td>
			<td>
				<select id="xsl_dir_id_<?php echo $row['lib_property_id']?>" onchange="DoLoadXSL('<?php echo str_replace("'", "\'", $value)?>', this.options[this.selectedIndex].value, <?php echo $row['lib_property_id']?>)">
				<option value="0">&hellip;</option>
				<?php 
				$xsl = new xsl();

				/* Извлекаем информацию о xsl шаблоне по его имени */
				$xsl_row = $xsl->GetXsl($value);

				if ($xsl_row)
				{
					// Идентификатор XSL шаблона
					$xsl_dir_id = to_int($xsl_row['xsl_dir_id']);
				}
				else
				{
					$xsl_dir_id = 0;
				}

				/* Извлекаем список XSL дирректорий */
				$mas = array();
				$mas = $xsl->fill_xsl_dir(0, "&nbsp;&nbsp;");

				$mas_count = count($mas);
				$selected = '';

				for ($i = 0; $i < $mas_count; $i++)
				{
					if ($mas[$i][0] == $xsl_dir_id)
					{
						$selected = " selected";
					}
					else
					{
						$selected = '';
					}
					?>
					<option value = "<?php echo $mas[$i][0]?>" <?php echo $selected?>><?php echo $mas[$i][1]?></option>
					<?php 
				}
				?>
				</select>
				<br>
				<!-- Отображаем DIV для вывода списка xsl-шаблонов -->
				<div id="id_xls_tamplate_<?php echo $row['lib_property_id']?>"></div>
				<?php 
				/* Записываем Java Script в строку для дальнейшего выполнения через eval*/
				ob_start();
				?>
					DoLoadXSL('<?php echo str_replace("'", "\'", $value)?>', <?php echo $xsl_dir_id?>, <?php echo $row['lib_property_id']?>);	
				<?php 
				$java_script .= ob_get_clean();
				?>
			</td>
			<?php 
			break;
		}
		case 3: /* Список */
		{
			?>
			<td><?php echo $acronym?></td>
			<td>
				<select name="lib_property_id_<?php echo $row['lib_property_id']?>">
				<?php 
				/* Получаем список элементов данного параметра */
				$list_resource = $lib->GetAllLibPropertyListItems($row['lib_property_id']);
				if (mysql_num_rows($list_resource) > 0)
				{
					while ($list_row = mysql_fetch_assoc($list_resource))
					{
						if (to_str($value) == $list_row['lib_property_list_value'])
						{
							$selected = " selected";
						}
						else
						{
							$selected = '';
						}
						?>
						<option value="<?php echo $list_row['lib_property_list_value']?>"<?php echo $selected?>><?php echo $list_row['lib_property_list_name']?></option>
						<?php 
					}
				}
				?>
				</select>
			</td>
			<?php 
			break;
		}
		case 4: /* SQL-запрос */
		{
			?>
			<td><?php echo $acronym?></td>
			<td>
				<?php 
				/* Выполняем запрос */
				$query = to_str($row['lib_property_sql_request']);

				$query = $lib->ConvertSqlProperty($query);

				/* Если запрос пустой - не выполняем */
				if (trim($query) != '')
				{
					$DataBase = & singleton('DataBase');
					$DataBase->select($query);
					if ($DataBase->result)
					{
						$resource = $DataBase->result;
						?>
						<select name="lib_property_id_<?php echo $row['lib_property_id']?>">
						<?php 
						while ($sql_row = mysql_fetch_assoc($resource))
						{
							$x = $row['lib_property_sql_value_field'];
							if ($value == $sql_row[$x])
							{
								$selected = " selected";
							}
							else
							{
								$selected = '';
							}
							?>
							<option value="<?php echo to_str($sql_row[$row['lib_property_sql_value_field']])?>"<?php echo $selected?>>
								<?php echo htmlspecialchars(to_str($sql_row[$row['lib_property_sql_caption_field']]))?>
								&nbsp;[<?php echo htmlspecialchars(to_str($sql_row[$row['lib_property_sql_value_field']]))?>]
							</option>
							<?php 
						}
						?>
						</select>
						<?php 
					}
					else
					{
						show_error_message($GLOBALS['MSG_structure']['structure_add_form_lib_query_error_message'] . ' ' . htmlspecialchars($query));
					}
				}
				?>	
			</td>			
			<?php 
			break;
		}
		case 5: /* Текстовое поле */
		{
			?>
			<td><?php echo $acronym?></td>
			<td>
				<textarea rows="5" cols="48" name="lib_property_id_<?php echo $row['lib_property_id']?>"><?php echo $value?></textarea>
			</td>
			<?php 
			break;
		}
		default:
		{
			break;
		}
	}
	?>
	</tr>
	<?php 
}
$html_properties .= ob_get_clean();

$html_properties .= "</table>";

$_RESULT = array(
"lib_properties_html" => $html_properties,
"java_script" => $java_script
);

echo $JsHttpRequest->LOADER;
die();
?>