<?php 
/**
 * Система управления сайтом HostCMS v. 5.xx
 * Copyright © 2005-2010 ООО "Хостмэйк" (Hostmake LLC), http://www.hostcms.ru
 *
 * Обработчик добавления сайта с макетом, шаг 2
 * 
 * Файл: /admin/site/action/add_site_with_template_step2.php
 * 
 * @author Hostmake LLC
 * @version 5.x
 */

$site = & singleton ('site');

$SiteTemplate = & singleton ('SiteTemplate');
$aXmlTemplatesTmp = $SiteTemplate->GetTemplateXml();

if (!$aXmlTemplatesTmp)
{
	show_error_message(sprintf($GLOBALS['MSG_site']['write_error'], $SiteTemplate->GetTemplateFilePath()));
}

$sTemplatesUrlServer = $SiteTemplate->GetTemplatesUrlServer();

$form_params = array();

$form_params['title'] = "Параметры макета";

$form_params['form_attribs']['method'] = 'post';
$form_params['form_attribs']['action'] = '/admin/site/site.php';
$form_params['form_attribs']['ENCTYPE'] = 'multipart/form-data';
$form_params['form_attribs']['name'] = 'AddSiteWithTemplate';

$admin_forms_fields = new admin_forms_fields();

$form_params['path_array'][] = array(
'link' => $admin_forms_fields->GetHtmlCallDoLoadAjax('/admin/site/site.php', '', 42, 'load_data'),
'onclick' => $admin_forms_fields->GetOnClickCallDoLoadAjax('/admin/site/site.php', '', 42, 'load_data'),
'name' => $GLOBALS['MSG_site']['site_link_sites']);

$admin_forms_fields->admin_forms_fields($form_params);

$kernel = & singleton('kernel');

// Параметры.
$tab_id = $admin_forms_fields->AddTab($GLOBALS['MSG_site']['site_parameters']);

$iTemplateId = to_int($_REQUEST['template_id']);

$File = new File();

if (isset($aXmlTemplatesTmp))
{
	// цикл по дереву group
	foreach ($aXmlTemplatesTmp['groups'][0]['value']['group'] as $iKeyGroup => $aValueGroup)
	{
		// если в группе есть шаблоны
		if (isset($aValueGroup['value']['templates'][0]['value']['template']))
		{
			// цикл по дереву template
			foreach ($aValueGroup['value']['templates'][0]['value']['template'] as $iKeyTemplate => $aValueTemplate)
			{
				if ($iTemplateId == $aValueTemplate['arg']['id'])
				{
					// ссылка на макет файла
					$sTemplateFile = $aValueTemplate['value']['template_file'][0]['value'];

					$sFileContents = $kernel->GetUrl($sTemplatesUrlServer.$sTemplateFile);

					// название архива макета
					$aTemplateFileUrl = explode('/', $sTemplatesUrlServer.$sTemplateFile);
					$sTemplateFileName = end($aTemplateFileUrl);

					// путь к локальному архиву макета
					$sTemplateFileUrl = $SiteTemplate->GetTemplatePath() . $sTemplateFileName;

					// запись в файл данных макета
					if ($File->SaveToFile($sTemplateFileUrl, $sFileContents))
					{
						// распаковка архива макета
						$oArchiveTar = new Archive_Tar($sTemplateFileUrl);
						$oArchiveTar->extractModify($SiteTemplate->GetTemplatePath(), $SiteTemplate->GetTemplatePath());
					}
					else
					{
						show_error_message(sprintf($GLOBALS['MSG_site']['write_error'], $sTemplateFileUrl));
					}
				
					// Массив из файла template.xml
					$aTemplateContentXml = $SiteTemplate->GetTemplateContentXml();
					
					if($aTemplateContentXml)
					{
						if (isset($aTemplateContentXml['children'][0]['children'])
						&& count($aTemplateContentXml['children'][0]['children']) > 0)
						{
							// цикл по дереву 'template'
							foreach ($aTemplateContentXml['children'][0]['children'] as $aTemplateValue)
							{
								switch ($aTemplateValue['name'])
								{
									case 'fields':
										
										$aFields = $SiteTemplate->GetFields($aTemplateValue['children']);
													
										// цикл по дереву 'fields'
										foreach ($aFields as $aFieldsValue)
										{
											$sFieldName = htmlspecialchars($aFieldsValue['Name']);
											$sFieldValue = htmlspecialchars($aFieldsValue['Value']);
											$sFieldMacros = htmlspecialchars($aFieldsValue['Macros']);
											$sFieldExtension = htmlspecialchars($aFieldsValue['Extension']);
											$sFieldMaxWidth = intval($aFieldsValue['MaxWidth']);
											$sFieldMaxHeight = intval($aFieldsValue['MaxHeight']);
											$sFieldListValue = $aFieldsValue['ListValue'];
											
											$iFieldType = intval($aFieldsValue['Type']);
											
											$param = array();
											$param['tab_id'] = $tab_id;
											$param['caption'] = $sFieldName;
											$param['name'] = $sFieldMacros;
											$param['value'] = $sFieldValue;
											
											/*?>
											<tr class="row_table">
												<td><?php echo $sFieldName?></td>
												<td>
											<?php*/
											switch ($iFieldType)
											{
												case 0: // текст
													$param['type'] = 0; // textbox
													
													/*?>
													<input type="text" size="50" name="<?php echo $sFieldMacros?>" value="<?php echo $sFieldValue?>" />
													<?php*/
													break;
												case 1: // список
													
													$param['type'] = 2; // select
													$param['items'] = array();
													
													/*?>
													<select name="<?php echo $sFieldMacros?>">
													<?php*/
													if (count($sFieldListValue) > 0)
													{
														foreach ($sFieldListValue as $option_key => $option_value)
														{
															$param['items'][$option_key] = $option_value;
															/*?>
															<option value="<?php echo $option_key?>"><?php echo $option_value?></option>
															<?php*/
														} 
													}
													/*?>
													</select>
													<?php*/
													break;
												case 2: // файл
													
													$param['type'] = 9; // file
													// Параметры
													$param['options']['load_small_image_show'] = 0; //- отображать ли поле загрузки малого изображения (1 -  отображать (по умолчанию), 0 - не отображать);
													
													$param['options']['image_big_max_width'] = $sFieldMaxWidth; // значение максимальной ширины большого изображения;
													$param['options']['image_big_max_height'] = $sFieldMaxHeight; // значение максимальной высоты большого изображения;
													$param['options']['used_watermark_big_image_show'] = 0; // отображать ли checkbox с подписью "Наложить водяной знак на большое изображение" (1 -  отображать (по умолчанию), 0 - не отображать);
													$param['options']['used_watermark_big_image_checked'] = 0; // вид ображения checkbox'а с подписью "Наложить водяной знак на большое изображение" (1 -  отображать выбранным (по умолчанию), 0 - невыбранным);
													$param['options']['watermark_position_x'] = '50%'; //значение поля ввода с подписью "По оси X"
													$param['options']['watermark_position_y'] = '100%'; // значение поля ввода с подписью "По оси Y"
													
													break;
												case 3: // большое текстовое поле
													$param['type'] = 5; // textarea
													$param['attributes']['cols'] = 47;
													$param['attributes']['rows'] = 5;
													/*?>
													<textarea name="<?php echo $sFieldMacros?>" rows="5" cols="47"><?php echo $sFieldValue?></textarea>
													<?php*/
													break;
											}
											
											$admin_forms_fields->AddField($param);

											// Разделитель.
											$admin_forms_fields->AddSeparator($tab_id);
											
											if ($param['type'] == 9)
											{
												if (trim($sFieldExtension) != '')
												{
													$param = array();
													$param['tab_id'] = $tab_id;
													$param['name'] = "fileperm";
													$param['type'] = 15;
													$param['value'] = '<div style="color: gray; font-style: italic">' . 
														sprintf($GLOBALS['MSG_site']['allowed_extension'], $sFieldExtension) .
														"</div>";
													$admin_forms_fields->AddField($param);
													
													// Разделитель.
													$admin_forms_fields->AddSeparator($tab_id);
												}
											}

											/*?></td>
											</tr>
											<?php*/
										}
										break;
								}
							}
							/*?></table><?php*/
						}
						else
						{
							show_message($GLOBALS['MSG_site']['empty_settings']);
						}
					}
					else
					{
						show_error_message(sprintf($GLOBALS['MSG_site']['file_not_found'], 'template.xml'));
					}

					break;
				}
			}
		}

		if (isset($sTemplateFile))
		{
			break;
		}
	}
}

// Разделитель.
$admin_forms_fields->AddSeparator($tab_id);

// Кнопка "Сохранить".
/*$param = array();
$param['name'] = 'save_site';
$param['caption'] = $GLOBALS['MSG_site']['site_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_site_with_template_step2';
$param['caption'] = 'Далее';
$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);

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