Разработка первой версии тиражного решения типового сайта танцевальных школ

Требования посетителей к содержимому сайта. Анализ визуальной структуры страницы на "1С-Битрикс". Особенность реализации пользовательского компонента. Характеристика построения функциональной модели. Исследование стоимостной диагностики функций.

Рубрика Программирование, компьютеры и кибернетика
Вид дипломная работа
Язык русский
Дата добавления 10.03.2018
Размер файла 3,7 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

{

$value = intval($propertyID) > 0 ? $arResult["ELEMENT_PROPERTIES"][$propertyID][$i]["~VALUE"] : $arResult["ELEMENT"][$propertyID];

$description = intval($propertyID) > 0 ? $arResult["ELEMENT_PROPERTIES"][$propertyID][$i]["DESCRIPTION"] : "";

}

elseif ($i == 0)

{

$value = intval($propertyID) <= 0 ? "" : $arResult["PROPERTY_LIST_FULL"][$propertyID]["DEFAULT_VALUE"];

$description = "";

}

else

{

$value = "";

$description = "";

}

echo call_user_func_array($arResult["PROPERTY_LIST_FULL"][$propertyID]["GetPublicEditHTML"],

array(

$arResult["PROPERTY_LIST_FULL"][$propertyID],

array(

"VALUE" => $value,

"DESCRIPTION" => $description,

),

array(

"VALUE" => "PROPERTY[".$propertyID."][".$i."][VALUE]",

"DESCRIPTION" => "PROPERTY[".$propertyID."][".$i."][DESCRIPTION]",

"FORM_NAME"=>"iblock_add",

),

));

?><br /><?

}

break;

case "TAGS":

$APPLICATION->IncludeComponent(

"bitrix:search.tags.input",

"",

array(

"VALUE" => $arResult["ELEMENT"][$propertyID],

"NAME" => "PROPERTY[".$propertyID."][0]",

"TEXT" => 'size="'.$arResult["PROPERTY_LIST_FULL"][$propertyID]["COL_COUNT"].'"',

), null, array("HIDE_ICONS"=>"Y")

);

break;

case "HTML":

$LHE = new CLightHTMLEditor;

$LHE->Show(array(

'id' => preg_replace("/[^a-z0-9]/i", '', "PROPERTY[".$propertyID."][0]"),

'width' => '100%',

'height' => '200px',

'inputName' => "PROPERTY[".$propertyID."][0]",

'content' => $arResult["ELEMENT"][$propertyID],

'bUseFileDialogs' => false,

'bFloatingToolbar' => true,

'bArisingToolbar' => true,

'toolbarConfig' => array(

'Bold', 'Italic', 'Underline', 'RemoveFormat',

'CreateLink', 'DeleteLink', 'Image', 'Video',

'BackColor', 'ForeColor',

'JustifyLeft', 'JustifyCenter', 'JustifyRight', 'JustifyFull',

'InsertOrderedList', 'InsertUnorderedList', 'Outdent', 'Indent',

'StyleList', 'HeaderList',

'FontList', 'FontSizeList',

),

));

break;

case "T":

for ($i = 0; $i<$inputNum; $i++)

{

if ($arParams["ID"] > 0 || count($arResult["ERRORS"]) > 0)

{

$value = intval($propertyID) > 0 ? $arResult["ELEMENT_PROPERTIES"][$propertyID][$i]["VALUE"] : $arResult["ELEMENT"][$propertyID];

}

elseif ($i == 0)

{

$value = intval($propertyID) > 0 ? "" : $arResult["PROPERTY_LIST_FULL"][$propertyID]["DEFAULT_VALUE"];

}

else

{

$value = "";

}

?>

<textarea cols="<?=$arResult["PROPERTY_LIST_FULL"][$propertyID]["COL_COUNT"]?>" rows="<?=$arResult["PROPERTY_LIST_FULL"][$propertyID]["ROW_COUNT"]?>" name="PROPERTY[<?=$propertyID?>][<?=$i?>]"><?=$value?></textarea>

<?

}

break;

case "S":

case "N":

for ($i = 0; $i<$inputNum; $i++)

{

if ($arParams["ID"] > 0 || count($arResult["ERRORS"]) > 0)

{

$value = intval($propertyID) > 0 ? $arResult["ELEMENT_PROPERTIES"][$propertyID][$i]["VALUE"] : $arResult["ELEMENT"][$propertyID];

}

elseif ($i == 0)

{

$value = intval($propertyID) <= 0 ? "" : $arResult["PROPERTY_LIST_FULL"][$propertyID]["DEFAULT_VALUE"];

}

else

{

$value = "";

}

?>

<input type="text" name="PROPERTY[<?=$propertyID?>][<?=$i?>]" size="25" value="<?=$value?>" /><br /><?

if($arResult["PROPERTY_LIST_FULL"][$propertyID]["USER_TYPE"] == "DateTime"):?><?

$APPLICATION->IncludeComponent(

'bitrix:main.calendar',

'',

array(

'FORM_NAME' => 'iblock_add',

'INPUT_NAME' => "PROPERTY[".$propertyID."][".$i."]",

'INPUT_VALUE' => $value,

),

null,

array('HIDE_ICONS' => 'Y')

);

?><br /><small><?=GetMessage("IBLOCK_FORM_DATE_FORMAT")?><?=FORMAT_DATETIME?></small><?

endif

?><br /><?

}

break;

case "F":

for ($i = 0; $i<$inputNum; $i++)

{

$value = intval($propertyID) > 0 ? $arResult["ELEMENT_PROPERTIES"][$propertyID][$i]["VALUE"] : $arResult["ELEMENT"][$propertyID];

?>

<input type="hidden" name="PROPERTY[<?=$propertyID?>][<?=$arResult["ELEMENT_PROPERTIES"][$propertyID][$i]["VALUE_ID"] ? $arResult["ELEMENT_PROPERTIES"][$propertyID][$i]["VALUE_ID"] : $i?>]" value="<?=$value?>" />

<input type="file" size="<?=$arResult["PROPERTY_LIST_FULL"][$propertyID]["COL_COUNT"]?>" name="PROPERTY_FILE_<?=$propertyID?>_<?=$arResult["ELEMENT_PROPERTIES"][$propertyID][$i]["VALUE_ID"] ? $arResult["ELEMENT_PROPERTIES"][$propertyID][$i]["VALUE_ID"] : $i?>" /><br />

<?

if (!empty($value) && is_array($arResult["ELEMENT_FILES"][$value]))

{

?>

<input type="checkbox" name="DELETE_FILE[<?=$propertyID?>][<?=$arResult["ELEMENT_PROPERTIES"][$propertyID][$i]["VALUE_ID"] ? $arResult["ELEMENT_PROPERTIES"][$propertyID][$i]["VALUE_ID"] : $i?>]" id="file_delete_<?=$propertyID?>_<?=$i?>" value="Y" /><label for="file_delete_<?=$propertyID?>_<?=$i?>"><?=GetMessage("IBLOCK_FORM_FILE_DELETE")?></label><br />

<?

if ($arResult["ELEMENT_FILES"][$value]["IS_IMAGE"])

{

?>

<img src="<?=$arResult["ELEMENT_FILES"][$value]["SRC"]?>" height="<?=$arResult["ELEMENT_FILES"][$value]["HEIGHT"]?>" width="<?=$arResult["ELEMENT_FILES"][$value]["WIDTH"]?>" border="0" /><br />

<?

}

else

{

?>

<?=GetMessage("IBLOCK_FORM_FILE_NAME")?>: <?=$arResult["ELEMENT_FILES"][$value]["ORIGINAL_NAME"]?><br />

<?=GetMessage("IBLOCK_FORM_FILE_SIZE")?>: <?=$arResult["ELEMENT_FILES"][$value]["FILE_SIZE"]?> b<br />

[<a href="<?=$arResult["ELEMENT_FILES"][$value]["SRC"]?>"><?=GetMessage("IBLOCK_FORM_FILE_DOWNLOAD")?></a>]<br />

<?

}

}

}

break;

case "L":

if ($arResult["PROPERTY_LIST_FULL"][$propertyID]["LIST_TYPE"] == "C")

$type = $arResult["PROPERTY_LIST_FULL"][$propertyID]["MULTIPLE"] == "Y" ? "checkbox" : "radio";

else

$type = $arResult["PROPERTY_LIST_FULL"][$propertyID]["MULTIPLE"] == "Y" ? "multiselect" : "dropdown";

switch ($type):

case "checkbox":

case "radio":

//echo "<pre>"; print_r($arResult["PROPERTY_LIST_FULL"][$propertyID]); echo "</pre>";

foreach ($arResult["PROPERTY_LIST_FULL"][$propertyID]["ENUM"] as $key => $arEnum)

{

$checked = false;

if ($arParams["ID"] > 0 || count($arResult["ERRORS"]) > 0)

{

if (is_array($arResult["ELEMENT_PROPERTIES"][$propertyID]))

{

foreach ($arResult["ELEMENT_PROPERTIES"][$propertyID] as $arElEnum)

{

if ($arElEnum["VALUE"] == $key) {$checked = true; break;}

}

}

}

else

{

if ($arEnum["DEF"] == "Y") $checked = true;

}

?>

<input type="<?=$type?>" name="PROPERTY[<?=$propertyID?>]<?=$type == "checkbox" ? "[".$key."]" : ""?>" value="<?=$key?>" id="property_<?=$key?>"<?=$checked ? " checked=\"checked\"" : ""?> /><label for="property_<?=$key?>"><?=$arEnum["VALUE"]?></label><br />

<?

}

break;

case "dropdown":

case "multiselect":

?>

<select name="PROPERTY[<?=$propertyID?>]<?=$type=="multiselect" ? "[]\" size=\"".$arResult["PROPERTY_LIST_FULL"][$propertyID]["ROW_COUNT"]."\" multiple=\"multiple" : ""?>">

<?

if (intval($propertyID) > 0) $sKey = "ELEMENT_PROPERTIES";

else $sKey = "ELEMENT";

foreach ($arResult["PROPERTY_LIST_FULL"][$propertyID]["ENUM"] as $key => $arEnum)

{

$checked = false;

if ($arParams["ID"] > 0 || count($arResult["ERRORS"]) > 0)

{

foreach ($arResult[$sKey][$propertyID] as $elKey => $arElEnum)

{

if ($key == $arElEnum["VALUE"]) {$checked = true; break;}

}

}

else

{

if ($arEnum["DEF"] == "Y") $checked = true;

}

?>

<option value="<?=$key?>" <?=$checked ? " selected=\"selected\"" : ""?>><?=$arEnum["VALUE"]?></option>

<?

}

?>

</select>

<?

break;

endswitch;

break;

endswitch;?>

</td>

</tr>

<?endforeach;?>

<?if($arParams["USE_CAPTCHA"] == "Y" && $arParams["ID"] <= 0):?>

<tr>

<td><?=GetMessage("IBLOCK_FORM_CAPTCHA_TITLE")?></td>

<td>

<input type="hidden" name="captcha_sid" value="<?=$arResult["CAPTCHA_CODE"]?>" />

<img src="/bitrix/tools/captcha.php?captcha_sid=<?=$arResult["CAPTCHA_CODE"]?>" width="180" height="40" alt="CAPTCHA" />

</td>

</tr>

<tr>

<td><?=GetMessage("IBLOCK_FORM_CAPTCHA_PROMPT")?><span class="starrequired">*</span>:</td>

<td><input type="text" name="captcha_word" maxlength="50" value=""></td>

</tr>

<?endif?>

</tbody>

<?endif?>

<tfoot>

<tr>

<td colspan="2">

<input type="submit" name="iblock_submit" value="<?=GetMessage("IBLOCK_FORM_SUBMIT")?>" />

<?if (strlen($arParams["LIST_URL"]) > 0):?><a href="<?=$arParams["LIST_URL"]?>"><?=GetMessage("IBLOCK_FORM_BACK")?></a><?endif?>

<?/*<input type="reset" value="<?=GetMessage("IBLOCK_FORM_RESET")?>" />*/?>

</td>

</tr>

</tfoot>

</table>

<br />

<?if (strlen($arParams["LIST_URL"]) > 0):?><a href="<?=$arParams["LIST_URL"]?>"><?=GetMessage("IBLOCK_FORM_BACK")?></a><?endif?>

</form>

Приложение Е

Компонент «Отзывы»

news.php

<?if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die();?>

<?if($arParams["USE_RSS"]=="Y"):?>

<?

if(method_exists($APPLICATION, 'addheadstring'))

$APPLICATION->AddHeadString('<link rel="alternate" type="application/rss+xml" title="'.$arResult["FOLDER"].$arResult["URL_TEMPLATES"]["rss"].'" href="'.$arResult["FOLDER"].$arResult["URL_TEMPLATES"]["rss"].'" />');

?>

<a href="<?=$arResult["FOLDER"].$arResult["URL_TEMPLATES"]["rss"]?>" title="rss" target="_self"><img alt="RSS" src="<?=$templateFolder?>/images/gif-light/feed-icon-16x16.gif" border="0" align="right" /></a>

<?endif?>

<?if($arParams["USE_SEARCH"]=="Y"):?>

<?=GetMessage("SEARCH_LABEL")?><?$APPLICATION->IncludeComponent(

"bitrix:search.form",

"flat",

Array(

"PAGE" => $arResult["FOLDER"].$arResult["URL_TEMPLATES"]["search"]

),

$component

);?>

<br />

<?endif?>

<?if($arParams["USE_FILTER"]=="Y"):?>

<?$APPLICATION->IncludeComponent(

"bitrix:catalog.filter",

"",

Array(

"IBLOCK_TYPE" => $arParams["IBLOCK_TYPE"],

"IBLOCK_ID" => $arParams["IBLOCK_ID"],

"FILTER_NAME" => $arParams["FILTER_NAME"],

"FIELD_CODE" => $arParams["FILTER_FIELD_CODE"],

"PROPERTY_CODE" => $arParams["FILTER_PROPERTY_CODE"],

"CACHE_TYPE" => $arParams["CACHE_TYPE"],

"CACHE_TIME" => $arParams["CACHE_TIME"],

),

$component

);

?>

<br />

<?endif?>

<?$APPLICATION->IncludeComponent(

"itconstruct:dance.otzyv.list",

"",

Array(

"IBLOCK_TYPE"=>$arParams["IBLOCK_TYPE"],

"IBLOCK_ID"=>$arParams["IBLOCK_ID"],

//=============================форма===================================

"SEF_MODE" => $arParams["SEF_MODE"],

"PROPERTY_CODES" => $arParams["PROPERTY_CODES"],

"PROPERTY_CODES_REQUIRED" => $arParams["PROPERTY_CODES_REQUIRED"],

"GROUPS" => $arParams["GROUPS"],

"STATUS_NEW" => $arParams["STATUS_NEW"],

"STATUS" => $arParams["STATUS"],

"LIST_URL" => $arParams["LIST_URL"],

"ELEMENT_ASSOC" => $arParams["ELEMENT_ASSOC"],

"MAX_USER_ENTRIES" => $arParams["MAX_USER_ENTRIES"],

"MAX_LEVELS" => $arParams["MAX_LEVELS"],

"LEVEL_LAST" => $arParams["LEVEL_LAST"],

"USE_CAPTCHA" => "Y",

"USER_MESSAGE_EDIT" => $arParams["USER_MESSAGE_EDIT"],

"USER_MESSAGE_ADD" => $arParams["USER_MESSAGE_ADD"],

"DEFAULT_INPUT_SIZE" => $arParams["DEFAULT_INPUT_SIZE"],

"RESIZE_IMAGES" => $arParams["RESIZE_IMAGES"],

"MAX_FILE_SIZE" => $arParams["MAX_FILE_SIZE"],

"PREVIEW_TEXT_USE_HTML_EDITOR" => $arParams["PREVIEW_TEXT_USE_HTML_EDITOR"],

"DETAIL_TEXT_USE_HTML_EDITOR" => $arParams["DETAIL_TEXT_USE_HTML_EDITOR"],

"CUSTOM_TITLE_NAME" => $arParams["CUSTOM_TITLE_NAME"],

"CUSTOM_TITLE_TAGS" => $arParams["CUSTOM_TITLE_TAGS"],

"CUSTOM_TITLE_DATE_ACTIVE_FROM" => $arParams["CUSTOM_TITLE_DATE_ACTIVE_FROM"],

"CUSTOM_TITLE_DATE_ACTIVE_TO" => $arParams["CUSTOM_TITLE_DATE_ACTIVE_TO"],

"CUSTOM_TITLE_IBLOCK_SECTION" => $arParams["CUSTOM_TITLE_IBLOCK_SECTION"],

"CUSTOM_TITLE_PREVIEW_TEXT" => $arParams["CUSTOM_TITLE_PREVIEW_TEXT"],

"CUSTOM_TITLE_PREVIEW_PICTURE" => $arParams["CUSTOM_TITLE_PREVIEW_PICTURE"],

"CUSTOM_TITLE_DETAIL_TEXT" => $arParams["CUSTOM_TITLE_DETAIL_TEXT"],

"CUSTOM_TITLE_DETAIL_PICTURE" => $arParams["CUSTOM_TITLE_DETAIL_PICTURE"],

//=============================список==================================

"NEWS_COUNT"=>$arParams["NEWS_COUNT"],

"SORT_BY1"=>$arParams["SORT_BY1"],

"SORT_ORDER1"=>$arParams["SORT_ORDER1"],

"SORT_BY2"=>$arParams["SORT_BY2"],

"SORT_ORDER2"=>$arParams["SORT_ORDER2"],

"FIELD_CODE"=>$arParams["LIST_FIELD_CODE"],

"PROPERTY_CODE"=>$arParams["LIST_PROPERTY_CODE"],

"DETAIL_URL"=>$arResult["FOLDER"].$arResult["URL_TEMPLATES"]["detail"],

"DISPLAY_PANEL"=>$arParams["DISPLAY_PANEL"],

"SET_TITLE"=>$arParams["SET_TITLE"],

"SET_STATUS_404" => $arParams["SET_STATUS_404"],

"INCLUDE_IBLOCK_INTO_CHAIN"=>$arParams["INCLUDE_IBLOCK_INTO_CHAIN"],

"CACHE_TYPE"=>$arParams["CACHE_TYPE"],

"CACHE_TIME"=>$arParams["CACHE_TIME"],

"CACHE_FILTER"=>$arParams["CACHE_FILTER"],

"DISPLAY_TOP_PAGER"=>$arParams["DISPLAY_TOP_PAGER"],

"DISPLAY_BOTTOM_PAGER"=>$arParams["DISPLAY_BOTTOM_PAGER"],

"PAGER_TITLE"=>$arParams["PAGER_TITLE"],

"PAGER_TEMPLATE"=>$arParams["PAGER_TEMPLATE"],

"PAGER_SHOW_ALWAYS"=>$arParams["PAGER_SHOW_ALWAYS"],

"PAGER_DESC_NUMBERING"=>$arParams["PAGER_DESC_NUMBERING"],

"PAGER_DESC_NUMBERING_CACHE_TIME"=>$arParams["PAGER_DESC_NUMBERING_CACHE_TIME"],

"PAGER_SHOW_ALL" => $arParams["PAGER_SHOW_ALL"],

"DISPLAY_DATE"=>$arParams["DISPLAY_DATE"],

"DISPLAY_NAME"=>"Y",

"DISPLAY_PICTURE"=>$arParams["DISPLAY_PICTURE"],

"DISPLAY_PREVIEW_TEXT"=>$arParams["DISPLAY_PREVIEW_TEXT"],

"PREVIEW_TRUNCATE_LEN"=>$arParams["PREVIEW_TRUNCATE_LEN"],

"ACTIVE_DATE_FORMAT"=>$arParams["LIST_ACTIVE_DATE_FORMAT"],

"USE_PERMISSIONS"=>$arParams["USE_PERMISSIONS"],

"GROUP_PERMISSIONS"=>$arParams["GROUP_PERMISSIONS"],

"FILTER_NAME"=>$arParams["FILTER_NAME"],

"HIDE_LINK_WHEN_NO_DETAIL"=>$arParams["HIDE_LINK_WHEN_NO_DETAIL"],

"CHECK_DATES"=>$arParams["CHECK_DATES"],

),

$component

);?>

detail.php

<?if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die();?>

<?$ElementID = $APPLICATION->IncludeComponent(

"bitrix:news.detail",

"",

Array(

"DISPLAY_DATE" => $arParams["DISPLAY_DATE"],

"DISPLAY_NAME" => $arParams["DISPLAY_NAME"],

"DISPLAY_PICTURE" => $arParams["DISPLAY_PICTURE"],

"DISPLAY_PREVIEW_TEXT" => $arParams["DISPLAY_PREVIEW_TEXT"],

"IBLOCK_TYPE" => $arParams["IBLOCK_TYPE"],

"IBLOCK_ID" => $arParams["IBLOCK_ID"],

"FIELD_CODE" => $arParams["DETAIL_FIELD_CODE"],

"PROPERTY_CODE" => $arParams["DETAIL_PROPERTY_CODE"],

"META_KEYWORDS" => $arParams["META_KEYWORDS"],

"META_DESCRIPTION" => $arParams["META_DESCRIPTION"],

"BROWSER_TITLE" => $arParams["BROWSER_TITLE"],

"DISPLAY_PANEL" => $arParams["DISPLAY_PANEL"],

"SET_TITLE" => $arParams["SET_TITLE"],

"SET_STATUS_404" => $arParams["SET_STATUS_404"],

"INCLUDE_IBLOCK_INTO_CHAIN" => $arParams["INCLUDE_IBLOCK_INTO_CHAIN"],

"ADD_SECTIONS_CHAIN" => $arParams["ADD_SECTIONS_CHAIN"],

"ACTIVE_DATE_FORMAT" => $arParams["DETAIL_ACTIVE_DATE_FORMAT"],

"CACHE_TYPE" => $arParams["CACHE_TYPE"],

"CACHE_TIME" => $arParams["CACHE_TIME"],

"USE_PERMISSIONS" => $arParams["USE_PERMISSIONS"],

"GROUP_PERMISSIONS" => $arParams["GROUP_PERMISSIONS"],

"DISPLAY_TOP_PAGER" => $arParams["DETAIL_DISPLAY_TOP_PAGER"],

"DISPLAY_BOTTOM_PAGER" => $arParams["DETAIL_DISPLAY_BOTTOM_PAGER"],

"PAGER_TITLE" => $arParams["DETAIL_PAGER_TITLE"],

"PAGER_SHOW_ALWAYS" => "N",

"PAGER_TEMPLATE" => $arParams["DETAIL_PAGER_TEMPLATE"],

"PAGER_SHOW_ALL" => $arParams["DETAIL_PAGER_SHOW_ALL"],

"CHECK_DATES" => $arParams["CHECK_DATES"],

"ELEMENT_ID" => $arResult["VARIABLES"]["ELEMENT_ID"],

"ELEMENT_CODE" => $arResult["VARIABLES"]["ELEMENT_CODE"],

"IBLOCK_URL" => $arResult["FOLDER"].$arResult["URL_TEMPLATES"]["news"],

),

$component

);?>

<p><a href="<?=$arResult["FOLDER"].$arResult["URL_TEMPLATES"]["news"]?>"><?=GetMessage("T_NEWS_DETAIL_BACK")?></a></p>

<?if($arParams["USE_RATING"]=="Y" && $ElementID):?>

<?$APPLICATION->IncludeComponent(

"bitrix:iblock.vote",

"",

Array(

"IBLOCK_TYPE" => $arParams["IBLOCK_TYPE"],

"IBLOCK_ID" => $arParams["IBLOCK_ID"],

"ELEMENT_ID" => $ElementID,

"MAX_VOTE" => $arParams["MAX_VOTE"],

"VOTE_NAMES" => $arParams["VOTE_NAMES"],

"CACHE_TYPE" => $arParams["CACHE_TYPE"],

"CACHE_TIME" => $arParams["CACHE_TIME"],

),

$component

);?>

<?endif?>

<?if($arParams["USE_CATEGORIES"]=="Y" && $ElementID):

global $arCategoryFilter;

$obCache = new CPHPCache;

$strCacheID = $componentPath.LANG.$arParams["IBLOCK_ID"].$ElementID.$arParams["CATEGORY_CODE"];

if($arParams["CACHE_TYPE"] == "N" || $arParams["CACHE_TYPE"] == "A" && COption::GetOptionString("main", "component_cache_on", "Y") == "N")

$CACHE_TIME = 0;

else

$CACHE_TIME = $arParams["CACHE_TIME"];

if($obCache->StartDataCache($CACHE_TIME, $strCacheID, $componentPath))

{

$rsProperties = CIBlockElement::GetProperty($arParams["IBLOCK_ID"], $ElementID, "sort", "asc", array("ACTIVE"=>"Y","CODE"=>$arParams["CATEGORY_CODE"]));

$arCategoryFilter = array();

while($arProperty = $rsProperties->Fetch())

{

if(is_array($arProperty["VALUE"]) && count($arProperty["VALUE"])>0)

{

foreach($arProperty["VALUE"] as $value)

$arCategoryFilter[$value]=true;

}

elseif(!is_array($arProperty["VALUE"]) && strlen($arProperty["VALUE"])>0)

$arCategoryFilter[$arProperty["VALUE"]]=true;

}

$obCache->EndDataCache($arCategoryFilter);

}

else

{

$arCategoryFilter = $obCache->GetVars();

}

if(count($arCategoryFilter)>0):

$arCategoryFilter = array(

"PROPERTY_".$arParams["CATEGORY_CODE"] => array_keys($arCategoryFilter),

"!"."ID" => $ElementID,

);

?>

<hr /><h3><?=GetMessage("CATEGORIES")?></h3>

<?foreach($arParams["CATEGORY_IBLOCK"] as $iblock_id):?>

<?$APPLICATION->IncludeComponent(

"bitrix:news.list",

$arParams["CATEGORY_THEME_".$iblock_id],

Array(

"IBLOCK_ID" => $iblock_id,

"NEWS_COUNT" => $arParams["CATEGORY_ITEMS_COUNT"],

"SET_TITLE" => "N",

"INCLUDE_IBLOCK_INTO_CHAIN" => "N",

"CACHE_TYPE" => $arParams["CACHE_TYPE"],

"CACHE_TIME" => $arParams["CACHE_TIME"],

"FILTER_NAME" => "arCategoryFilter",

"CACHE_FILTER" => "Y",

"DISPLAY_TOP_PAGER" => "N",

"DISPLAY_BOTTOM_PAGER" => "N",

),

$component

);?>

<?endforeach?>

<?endif?>

<?endif?>

<?if($arParams["USE_REVIEW"]=="Y" && IsModuleInstalled("forum") && $ElementID):?>

<hr />

<?$APPLICATION->IncludeComponent(

"bitrix:forum.topic.reviews",

"",

Array(

"CACHE_TYPE" => $arParams["CACHE_TYPE"],

"CACHE_TIME" => $arParams["CACHE_TIME"],

"MESSAGES_PER_PAGE" => $arParams["MESSAGES_PER_PAGE"],

"USE_CAPTCHA" => $arParams["USE_CAPTCHA"],

"PATH_TO_SMILE" => $arParams["PATH_TO_SMILE"],

"FORUM_ID" => $arParams["FORUM_ID"],

"URL_TEMPLATES_READ" => $arParams["URL_TEMPLATES_READ"],

"SHOW_LINK_TO_FORUM" => $arParams["SHOW_LINK_TO_FORUM"],

"ELEMENT_ID" => $ElementID,

"IBLOCK_ID" => $arParams["IBLOCK_ID"],

"POST_FIRST_MESSAGE" => $arParams["POST_FIRST_MESSAGE"],

"URL_TEMPLATES_DETAIL" => $arParams["POST_FIRST_MESSAGE"]==="Y"? $arResult["FOLDER"].$arResult["URL_TEMPLATES"]["detail"] :"",

),

$component

);?>

<?endif?>

Приложение 5

Модуль

index.php

<?

global $MESS;

$PathInstall = str_replace("\\", "/", __FILE__);

$PathInstall = substr($PathInstall, 0, strlen($PathInstall)-strlen("/index.php"));

IncludeModuleLangFile($PathInstall."/install.php");

if(class_exists("dance")) return;

Class dance extends CModule

{

var $MODULE_ID = "dance";

var $MODULE_VERSION;

var $MODULE_VERSION_DATE;

var $MODULE_NAME;

var $MODULE_DESCRIPTION;

function dance()

{

$arModuleVersion = array();

$path = str_replace("\\", "/", __FILE__);

$path = substr($path, 0, strlen($path) - strlen("/index.php"));

include($path."/version.php");

if (is_array($arModuleVersion) && array_key_exists("VERSION", $arModuleVersion))

{

$this->MODULE_VERSION = $arModuleVersion["VERSION"];

$this->MODULE_VERSION_DATE = $arModuleVersion["VERSION_DATE"];

}

else

{

$this->MODULE_VERSION = DANCE_VERSION;

$this->MODULE_VERSION_DATE = DANCE_VERSION_DATE;

}

$this->MODULE_NAME = GetMessage("DANCE_MODULE_NAME");

$this->MODULE_DESCRIPTION = GetMessage("DANCE_MODULE_DESCRIPTION");

}

function DoInstall()

{

global $DB, $DOCUMENT_ROOT, $APPLICATION, $errors, $public_dir;

$errors = false;

$this->InstallFiles();

$this->InstallDB();

$APPLICATION->IncludeAdminFile(

GetMessage("DANCE_INSTALL_TITLE"),

$DOCUMENT_ROOT."/bitrix/modules/dance/install/step2.php"

);

}

function InstallDB()

{

global $APPLICATION, $DB, $errors;

RegisterModule("dance");

return true;

}

function InstallFiles()

{

CopyDirFiles($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/dance/install/components/", $_SERVER["DOCUMENT_ROOT"]."/bitrix/components", true, true);

return true;

}

function InstallEvents()

{

return true;

}

function DoUninstall()

{

global $DB, $APPLICATION, $step, $errors;

$step = IntVal($step);

if($step<2)

{

$APPLICATION->IncludeAdminFile(GetMessage("FORM_UNINSTALL_TITLE"), $_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/dance/install/unstep1.php");

}

elseif($step==2)

{

$errors = false;

$this->UnInstallDB(array(

"savedata" => $_REQUEST["savedata"],

));

$this->UnInstallFiles(array(

"savedata" => $_REQUEST["savedata"],

));

$APPLICATION->IncludeAdminFile(GetMessage("FORM_UNINSTALL_TITLE"), $_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/dance/install/unstep2.php");

}

}

function UnInstallDB($arParams = Array())

{

global $APPLICATION, $DB, $errors;

//COption::RemoveOption("dance");

UnRegisterModule("dance");

return true;

}

function UnInstallFiles($arParams = array())

{

global $DB;

// удаляем файлы

DeleteDirFilesEx("/bitrix/themes/.default/icons/dance/");//иконки

// удаляем файлы шаблона

DeleteDirFilesEx(BX_PERSONAL_ROOT."/tmp/dance/");

return true;

}

function UnInstallEvents()

{

return true;

}

}

?>

Приложение 6

Мастер

wizard.php

<?

require_once("scripts/utils.php");

class WelcomeStep extends CWizardStep

{

function InitStep()

{

$this->SetTitle(GetMessage("DANCE_SITE_WELCOME_TITLE"));

$this->SetStepID("welcome_step");

$this->SetCancelStep("cancel_step");

$this->SetCancelCaption(GetMessage("CANCEL_BUTTON"));

$this->SetNextStep("select_template");

$this->SetNextCaption(GetMessage("NEXT_BUTTON"));

$wizard =& $this->GetWizard();

$siteID = "s2";

if(!$siteID)

{

require_once($_SERVER['DOCUMENT_ROOT']."/bitrix/modules/main/include/mainpage.php");

$siteID = CMainPage::GetSiteByHost();

}

$wizard->SetVar("siteID", $siteID);

$rsSites = CSite::GetByID($siteID);

if($arSite = $rsSites->Fetch())

{

$siteDIR = $arSite["DIR"];

if(substr($siteDIR, -1) != "/")

$siteDIR .= "/";

}

else

$siteDIR = "/";

$wizard->SetVar("siteDIR", $siteDIR);

}

function ShowStep()

{

$this->content .= GetMessage("DANCE_SITE_WELCOME_CONTENT");

}

}

class SelectTemplateStep extends CWizardStep

{

function InitStep()

{

$this->SetStepID("select_template");

$this->SetTitle(GetMessage("DANCE_SITE_SELECT_TEMPLATE_TITLE"));

$this->SetSubTitle(GetMessage("DANCE_SITE_SELECT_TEMPLATE_SUBTITLE"));

$this->SetPrevStep("welcome_step");

$this->SetPrevCaption(GetMessage("PREVIOUS_BUTTON"));

$this->SetNextStep("customize_data");

$this->SetNextCaption(GetMessage("NEXT_BUTTON"));

$this->SetCancelStep("cancel_step");

$this->SetCancelCaption(GetMessage("CANCEL_BUTTON"));

}

function OnPostForm()

{

$wizard =& $this->GetWizard();

if ($wizard->IsNextButtonClick())

{

$templatesPath = DanceSiteUtil::GetTemplatesPath($wizard->GetPath());

$arTemplates = DanceSiteUtil::GetTemplates($templatesPath);

$templateID = $wizard->GetVar("templateID");

if (!array_key_exists($templateID, $arTemplates))

$this->SetError(GetMessage("wiz_template"));

else

{

$siteID = $wizard->GetVar("siteID");

$wizard->SetVar("templateIDnew", $templateID."_".$siteID);

}

}

}

function ShowStep()

{

$wizard =& $this->GetWizard();

$templatesPath = DanceSiteUtil::GetTemplatesPath($wizard->GetPath());

$arTemplates = DanceSiteUtil::GetTemplates($templatesPath);

if (empty($arTemplates))

return;

$defaultTemplateID = "";

$this->content .= GetMessage("DANCE_SITE_SELECT_TEMPLATE_CONTENT")."<br><br>";

$this->content .= '<table cellspacing="0" cellpadding="2" width="100%"><tr>';

$colsNumber = 3;

$counter = 1;

$cellSize = count($arTemplates);

foreach ($arTemplates as $templateID => $arTemplate)

{

if ($defaultTemplateID == "")

{

$defaultTemplateID = $templateID;

$wizard->SetDefaultVar("templateID", $defaultTemplateID);

}

$this->content .= '<td valign="top" style="padding-bottom:15px;" width="33%">';

if ($arTemplate["SCREENSHOT"] && $arTemplate["PREVIEW"])

$this->content .= CFile::Show2Images($arTemplate["PREVIEW"], $arTemplate["SCREENSHOT"], 150, 150, ' border="0"')."<br />";

else

$this->content .= CFile::ShowImage($arTemplate["SCREENSHOT"], 150, 150, ' border="0"', "", true)."<br />";

$this->content .= '<table><tr><td valign="top">';

$this->content .= $this->ShowRadioField("templateID", $templateID, Array("id" => $templateID));

$this->content .= '</td><td>';

$this->content .= '<label for="'.$templateID.'">'.$arTemplate["NAME"].'</label></td></tr>';

$this->content .= '</table>';

$this->content .= (strlen($arTemplate["DESCRIPTION"]) > 0 ? "<br />".$arTemplate["DESCRIPTION"] : "").'';

$this->content .= "</td>";

if (!($counter % $colsNumber) && $cellSize != $counter)

$this->content .= "</tr><tr>";

if ($cellSize == $counter && ($cellSize % $colsNumber)>0)

{

for ($a=1;$a<=($colsNumber - ($cellSize % $colsNumber) );$a++)

$this->content .= "<td>&nbsp;</td>";

}

$counter++;

}

$this->content .= "</tr></table>";

}

}

class CustomizeSiteData extends CWizardStep

{

function InitStep()

{

$this->SetTitle(GetMessage("DANCE_SITE_CUSTOMIZE_DATA_TITLE"));

$this->SetSubTitle(GetMessage("DANCE_SITE_CUSTOMIZE_DATA_SUBTITLE"));

$wizard =& $this->GetWizard();

$this->SetStepID("customize_data");

$this->SetPrevStep("select_template");

$this->SetPrevCaption(GetMessage("PREVIOUS_BUTTON"));

$this->SetNextStep("select_services");

$this->SetNextCaption(GetMessage("NEXT_BUTTON"));

$this->SetCancelStep("cancel_step");

$this->SetCancelCaption(GetMessage("CANCEL_BUTTON"));

$siteID = $wizard->GetVar("siteID");

$wizard->SetDefaultVar("dance_stage_name", COption::GetOptionString("main", "site_name", GetMessage("DANCE_DEFAULT_STAGE_NAME")." ".date("Y"), $siteID));

$wizard->SetDefaultVar("dance_stage_code", COption::GetOptionString("dance", "dance_stage_code", "dance", $siteID));

$wizard->SetDefaultVar("dance_stage_address", COption::GetOptionString("main", "server_name", $_SERVER["SERVER_NAME"], $siteID));

$wizard->SetDefaultVar("dance_stage_phones", COption::GetOptionString("dance", "stage_phones", "", $siteID));

$wizard->SetDefaultVar("dance_stage_email", COption::GetOptionString("main", "email_from", "my@email.com", $siteID));

$wizard->SetDefaultVar("dance_logo_file", 0);

$wizard->SetVar("error", "");

}

function OnPostForm()

{

$fileID = $this->SaveFile("dance_logo", Array("max_file_size" => 1.5*1024*1024, "extensions" => "gif,jpg,jpeg,png", "max_height" => 100, "max_width" => 195, "make_preview" => "Y"));

$wizard =& $this->GetWizard();

if($fileID)

{

$wizard->SetVar("dance_logo_file", $fileID);

}

if(substr($wizard->GetVar("dance_stage_address"), -1) == "/")

$wizard->SetVar("dance_stage_address", substr($wizard->GetVar("dance_stage_address"), 0, -1));

$dance_stage_name = $wizard->GetVar("dance_stage_name");

$dance_stage_address = $wizard->GetVar("dance_stage_address");

$dance_stage_email = $wizard->GetVar("dance_stage_email");

$error = "";

$server_name = explode("/", $dance_stage_address);

$wizard->SetVar("dance_stage_code", "dance");

//if($wizard->IsNextButtonClick() && (strlen($dance_stage_name) <= 0 || strlen($dance_stage_address) <= 0 || strlen($dance_stage_code) <= 0 || strlen($dance_stage_email) <= 0 || !preg_match("/^[a-zA-Z]+[a-zA-Z0-9_-]/", $dance_stage_code)))

if($wizard->IsNextButtonClick() && (strlen($dance_stage_name) <= 0 || strlen($dance_stage_address) <= 0 || strlen($dance_stage_email) <= 0 ))

{

if(strlen($dance_stage_name) <= 0)

$error .= GetMessage("DANCE_SITE_FIELD")." \"".GetMessage("DANCE_SITE_NAME")."\" ".GetMessage("DANCE_SITE_MUST_BE_FILLED")."<br>";

// if(strlen($dance_stage_code) <= 0)

// $error .= GetMessage("DANCE_SITE_FIELD")." \"".GetMessage("DANCE_SITE_CODE")."\" ".GetMessage("DANCE_SITE_MUST_BE_FILLED")."<br>";

// elseif(!preg_match("/^[a-zA-Z]+[a-zA-Z0-9_-]/", $dance_stage_code))

// $error .= GetMessage("DANCE_SITE_FIELD")." \"".GetMessage("DANCE_SITE_CODE")."\" ".GetMessage("DANCE_SITE_CHARACTER")."<br>";

if(strlen($dance_stage_address) <= 0)

$error .= GetMessage("DANCE_SITE_FIELD")." \"".GetMessage("DANCE_SITE_ADDRESS")."\" ".GetMessage("DANCE_SITE_MUST_BE_FILLED")."<br>";

if(strlen($dance_stage_email) <= 0)

$error .= GetMessage("DANCE_SITE_FIELD")." \"".GetMessage("DANCE_SITE_EMAIL")."\" ".GetMessage("DANCE_SITE_MUST_BE_FILLED")."<br>";

$wizard->SetCurrentStep('customize_data');

}

if($error)

$error = '<span style="color: red;">'.$error.'</span><br>';

$wizard->SetVar("error", $error);

}

function ShowStep()

{

$wizard =& $this->GetWizard();

$this->content .= GetMessage("DANCE_SITE_CUSTOMIZE_DATA_HINT")."<br /><br />";

$error = $wizard->GetVar("error");

if($error)

$this->content .= $error;

$this->content .= "<table><tr height='30'>";

$this->content .= "<td>".GetMessage("DANCE_SITE_NAME")."<span style='color: red'>*</span>:</td>";

$this->content .= "<td>".$this->ShowInputField("text", "dance_stage_name", Array("size" => "50"))."</td>";

$this->content .= "</tr><tr height='30'>";

$this->content .= "<td>".GetMessage("DANCE_SITE_ADDRESS")."<span style='color: red'>*</span>:</td>";

$this->content .= "<td>".$this->ShowInputField("text", "dance_stage_address", Array("size" => "50"))."</td>";

$this->content .= "</tr><tr height='30'>";

$this->content .= "<td>".GetMessage("DANCE_SITE_PHONES").":</td>";

$this->content .= "<td>".$this->ShowInputField("text", "dance_stage_phones", Array("size" => "47"))."&nbsp;<img src='".$wizard->GetPath()."/images/hint.gif' title='".GetMessage("DANCE_SITE_PHONES_HINT")."'></td>";

$this->content .= "</tr><tr height='30'>";

$this->content .= "<td>".GetMessage("DANCE_SITE_EMAIL")."<span style='color: red'>*</span>:</td>";

$this->content .= "<td>".$this->ShowInputField("text", "dance_stage_email", Array("size" => "47"))."&nbsp;<img src='".$wizard->GetPath()."/images/hint.gif' title='".GetMessage("DANCE_SITE_EMAIL_HINT")."'></td>";

$this->content .= "</tr><tr height='30'>";

$this->content .= '<td valign="top">'.GetMessage("DANCE_SITE_LOGO").': </td>';

$this->content .= "<td>".$this->ShowFileField("dance_logo", Array("max_file_size" => 1.5*1024*1024, "show_file_info" => "N"));

$fileID = $wizard->GetVar("dance_logo_file");

if($fileID)

$this->content .= "<br />".CFile::ShowImage($fileID, 200, 200, "border=0", "", true);

$this->content .= "</td></tr>";

$this->content .= "</table>";

}

}

class SelectServices extends CWizardStep

{

function InitStep()

{

$this->SetStepID("select_services");

$this->SetTitle(GetMessage("SELECT_SERVICES_TITLE"));

$this->SetSubTitle(GetMessage("SELECT_SERVICES_SUBTITLE"));

$this->SetPrevStep("customize_data");

$this->SetPrevCaption(GetMessage("PREVIOUS_BUTTON"));

$this->SetNextStep("install");

$this->SetNextCaption(GetMessage("SELECT_SERVICES_BUTTON_INSTALL"));

$this->SetCancelStep("cancel_step");

$this->SetCancelCaption(GetMessage("CANCEL_BUTTON"));

}

function ShowStep()

{

$wizard =& $this->GetWizard();

$package =& $wizard->GetPackage();

$servicePath = $_SERVER["DOCUMENT_ROOT"].$wizard->GetPath()."/modules/";

$arServices = DanceSiteUtil::GetServices($servicePath, $skipFilter = Array("SKIP_INSTALL_ONLY" => "Y"));

$this->content .= '<br><table width="100%" cellspacing="1" cellpadding="0">';

foreach ($arServices as $serviceID => $arService)

{

$this->content .= '<tr height="30">';

if (!isset($arService["DEFAULT"]) || $arService["DEFAULT"] != "N")

$wizard->SetDefaultVar("services[]",$serviceID);

$this->content .= '<td valign="top">'.$this->ShowCheckboxField("services[]", $serviceID, Array("id" => $serviceID)).'</td>';

$this->content .= '<td valign="top">';

if (isset($arService["ICON"]) && strlen($arService["ICON"]) > 0)

$this->content .= '<label for="'.$serviceID.'"><img src="'.$package->GetPath().'/'.$arService["ICON"].'" /></label>';

$this->content .= '</td>';

$this->content .= '<td valign="top" width="100%">';

$this->content .= '<label for="'.$serviceID.'">&nbsp;'.$arService["NAME"].'</label><br />';

if (isset($arService["DESCRIPTION"]) && strlen($arService["DESCRIPTION"]) > 0)

$this->content .= '<div style="margin-left:20px;"><label for="'.$serviceID.'"><i>'.$arService["DESCRIPTION"].'</i></label></div>';

$this->content .= '</td>';

$this->content .= '</tr>';

}

$this->content .= '</table>';

}

}

class InstallServices extends CWizardStep

{

function InitStep()

{

$this->SetTitle(GetMessage("INSTALL_SERVICE_TITLE"));

$this->SetStepID("install");

}

function OnPostForm()

{

$wizard =& $this->GetWizard();

$serviceID = $wizard->GetVar("nextStep");

$serviceStage = $wizard->GetVar("nextStepStage");

if ($serviceID == "finish")

{

$wizard->SetCurrentStep("finish");

return;

}

$servicePath = $_SERVER["DOCUMENT_ROOT"].$wizard->GetPath()."/modules/";

$arServiceSelected = $wizard->GetVar("services");

if (!$arServiceSelected)

$arServiceSelected = Array();

$arServices = DanceSiteUtil::GetServices($servicePath, $arFilter = Array("SERVICES" => $arServiceSelected));

if ($serviceStage == "skip")

$success = true;

else

$success = $this->InstallDanceService($serviceID, $serviceStage);

list($nextService, $nextServiceStage, $stepsComplete, $status) = $this->GetNextStep($arServices, $serviceID, $serviceStage);

if ($nextService == "finish")

{

$formName = $wizard->GetFormName();

$nextButtonID = $wizard->GetNextButtonID();

$response = "window.ajaxForm.StopAjax(); window.ajaxForm.SetStatus('100'); window.ajaxForm.Post('".$nextService."', '".$nextServiceStage."','".$status."');";

}

else

{

$arServiceID = array_keys($arServices);

$lastService = array_pop($arServiceID);

$stepsCount = $arServices[$lastService]["POSITION"];

if (array_key_exists("STAGES", $arServices[$lastService]) && is_array($arServices[$lastService]))

$stepsCount += count($arServices[$lastService]["STAGES"])-1;

$percent = round($stepsComplete/$stepsCount * 100);

$response = "window.ajaxForm.SetStatus('".$percent."'); window.ajaxForm.Post('".$nextService."', '".$nextServiceStage."','".$status."');";

}

die("[response]".$response."[/response]");

}

function InstallDanceService($serviceID, $serviceStage)

{

@set_time_limit(3600);

$wizard =& $this->GetWizard();

$_siteID = $wizard->GetVar("siteID");

$_siteDIR = $wizard->GetVar("siteDIR");

$_server_name = $wizard->GetVar("_server_name");

$templateID = $wizard->GetVar("templateID");

$templateIDnew = $wizard->GetVar("templateIDnew");

$servicePath = $_SERVER["DOCUMENT_ROOT"].$wizard->GetPath()."/modules/".$serviceID."/".$serviceStage;

$serviceRelativePath = $wizard->GetPath()."/modules/".$serviceID;

$wizardPath = $_SERVER["DOCUMENT_ROOT"].$wizard->GetPath();

$dance_stage_name = $wizard->GetVar("dance_stage_name");

$dance_stage_code="dance";

$dance_stage_phones = $wizard->GetVar("dance_stage_phones");

$dance_stage_email = $wizard->GetVar("dance_stage_email");

$dance_stage_address = $wizard->GetVar("dance_stage_address");

$dance_logo_file = $wizard->GetVar("dance_logo_file");

if (!file_exists($servicePath))

return false;

global $DB, $DBType, $APPLICATION, $USER;

include($servicePath);

}

function GetNextStep(&$arServices, &$currentService, &$currentStage)

{

$nextService = "finish";

$nextServiceStage = "finish";

$status = GetMessage("INSTALL_SERVICE_FINISH_STATUS");

if (!array_key_exists($currentService, $arServices))

return Array($nextService, $nextServiceStage, 0, $status); //Finish

if ($currentStage != "skip" && array_key_exists("STAGES", $arServices[$currentService]) && is_array($arServices[$currentService]["STAGES"]))

{

$stageIndex = array_search($currentStage, $arServices[$currentService]["STAGES"]);

if ($stageIndex !== false && isset($arServices[$currentService]["STAGES"][$stageIndex+1]))

return Array(

$currentService,

$arServices[$currentService]["STAGES"][$stageIndex+1],

$arServices[$currentService]["POSITION"]+ $stageIndex,

$arServices[$currentService]["NAME"]

); //текущий шаг, следующий шаг

}

$arServiceID = array_keys($arServices);

$serviceIndex = array_search($currentService, $arServiceID);

if (!isset($arServiceID[$serviceIndex+1]))

return Array($nextService, $nextServiceStage, 0, $status); //Finish

$nextServiceID = $arServiceID[$serviceIndex+1];

$nextServiceStage = "index.php";

if (array_key_exists("STAGES", $arServices[$nextServiceID]) && is_array($arServices[$nextServiceID]["STAGES"]) && isset($arServices[$nextServiceID]["STAGES"][0]))

$nextServiceStage = $arServices[$nextServiceID]["STAGES"][0];

return Array($nextServiceID, $nextServiceStage, $arServices[$nextServiceID]["POSITION"]-1, $arServices[$nextServiceID]["NAME"]); //следующий сервис

}

function GetFirstStep(&$arServices)

{

foreach ($arServices as $serviceID => $arService)

{

$stage = "index.php";

if (array_key_exists("STAGES", $arService) && is_array($arService["STAGES"]) && isset($arService["STAGES"][0]))

$stage = $arService["STAGES"][0];

return Array($serviceID, $stage, $arService["NAME"]);

}

return Array("service_not_found", "finish", GetMessage("INSTALL_SERVICE_FINISH_STATUS"));

}

function ShowStep()

{

$this->SetAutoSubmit(false);

$wizard =& $this->GetWizard();

$servicePath = $_SERVER["DOCUMENT_ROOT"].$wizard->GetPath()."/modules/";

$arServiceSelected = $wizard->GetVar("services");

if (!$arServiceSelected)

$arServiceSelected = Array();

$arServices = DanceSiteUtil::GetServices($servicePath, $arFilter = Array("SERVICES" => $arServiceSelected));

list($firstService, $stage, $status) = $this->GetFirstStep($arServices);

$this->content .= '

<table border="0" cellspacing="0" cellpadding="2" width="550">

<tr>

<td colspan="2"><div id="status"></div></td>

</tr>

<tr>

<td width="90%" height="10">

<div style="border:1px solid #B9CBDF; width:100%;"><div id="indicator" style="height:10px; width:0%; background-color:#B9CBDF"></div></div>

</td>

<td width="10%">&nbsp;<span id="percent">0%</span></td>

</tr>

</table>

<div id="wait" align=center>

<br />

<table width=200 cellspacing=0 cellpadding=0 border=0 style="border:1px solid #EFCB69" bgcolor="#FFF7D7">

<tr>

<td height=50 width="50" valign="middle" align=center><img src="/bitrix/wizards/itconstruct/dance/images/wait.gif"></td>

<td height=50 width=150>'.GetMessage("MAIN_WIZARD_WAIT_WINDOW_TEXT").'</td>

</tr>

</table>

</div><br />

<br />

<div id="error_container" style="display:none">

<div id="error_notice"><span style="color:red;">'.GetMessage("INST_ERROR_OCCURED").'<br />'.GetMessage("INST_TEXT_ERROR").':</span></div>

<div id="error_text"></div>

<div><span style="color:red;">'.GetMessage("INST_ERROR_NOTICE").'</span></div>

<div id="error_buttons" align="center">

<br /><input type="button" value="'.GetMessage("INST_RETRY_BUTTON").'" id="error_retry_button" onclick="" />&nbsp;<input type="button" id="error_skip_button" value="'.GetMessage("INST_SKIP_BUTTON").'" onclick="" />&nbsp;</div>

</div>

'.$this->ShowHiddenField("nextStep", $firstService).'

'.$this->ShowHiddenField("nextStepStage", $stage).'

<iframe style="display:none;" id="iframe-post-form" name="iframe-post-form" src="javascript:\'\'"></iframe>';

$wizard =& $this->GetWizard();

$formName = $wizard->GetFormName();

$nextButtonID = $wizard->GetNextButtonID();

$NextStepVarName = $wizard->GetRealName("nextStep");

$this->content .= '

<script type="text/javascript">

var ajaxForm = new CAjaxForm("'.$formName.'", "iframe-post-form", "'.$NextStepVarName.'");

ajaxForm.Post("'.$firstService.'", "'.$stage.'", "'.$status.'");

</script>';

$package =& $wizard->GetPackage();

}

}

class CancelStep extends CWizardStep

{

function InitStep()

{

$this->SetStepID("cancel_step");

$this->SetCancelStep("cancel_step");

$this->SetTitle(GetMessage("DEMO_CANCEL_STEP_TITLE"));

if ($_SERVER["PHP_SELF"] == "/index.php")

$this->SetCancelCaption(GetMessage("DEMO_CANCEL_STEP_BUTTON_INDEX"));

else

$this->SetCancelCaption(GetMessage("DEMO_CANCEL_STEP_BUTTON_ADMIN"));

}

function ShowStep()

{

$wizard =& $this->GetWizard();

if ($_SERVER["PHP_SELF"] == "/index.php")

$this->content .= GetMessage("DEMO_CANCEL_STEP_CONTENT_INDEX");

else

$this->content .= GetMessage("DEMO_CANCEL_STEP_CONTENT_ADMIN");

}

}

class FinishStep extends CWizardStep

{

function InitStep()

{

$this->SetStepID("finish");

$this->SetCancelStep("finish");

$this->SetTitle(GetMessage("FINISH_STEP_TITLE"));

$this->SetCancelCaption(GetMessage("FINISH_STEP_BUTTON_NAME"));

}

function ShowStep()

{

$wizard =& $this->GetWizard();

$siteDIR = $wizard->GetVar("siteDIR");

$wizard->SetFormActionScript($siteDIR);

$siteDIR = $wizard->GetVar("siteDIR");

//копируем индексную страницу

CopyDirFiles(

$_SERVER["DOCUMENT_ROOT"].$wizard->GetPath()."/indexes",

$_SERVER["DOCUMENT_ROOT"].$siteDIR,

$rewrite = true,

$recursive = true

);

$this->content .= GetMessage("FINISH_STEP_CONTENT");

}

}

?>

/templates/ru/dance/header.php

<?if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die();?>

<html>

<head>

<?$APPLICATION->ShowHead()?>

<title><?$APPLICATION->ShowTitle()?></title>

<script type="text/javascript" src="/iload/jquery.js"></script>

<script type="text/javascript" src="/iload/iload.js"></script>

</head>

<body> <?$APPLICATION->ShowPanel();?>

<div id="container">

<br />

<br />

<div id="header"> <?$APPLICATION->IncludeComponent(

"bitrix:main.include",

"include_area_kontakt",

Array(

"AREA_FILE_SHOW" => "sect",

"AREA_FILE_SUFFIX" => "ink",

"AREA_FILE_RECURSIVE" => "Y",

"EDIT_TEMPLATE" => "sect_inc.php"

)

);?>

<div id="company_logo"> <?$APPLICATION->IncludeComponent(

"bitrix:main.include",

"logotip",

Array(

"AREA_FILE_SHOW" => "sect",

"AREA_FILE_SUFFIX" => "log",

"AREA_FILE_RECURSIVE" => "Y",

"EDIT_TEMPLATE" => "sect_inc.php"

)

);?> </div>

<div class="punkt_about"> <?$APPLICATION->IncludeComponent(

"bitrix:main.include",

"name_kompany",

Array(

"AREA_FILE_SHOW" => "sect",

"AREA_FILE_SUFFIX" => "mm",

"AREA_FILE_RECURSIVE" => "Y",

"EDIT_TEMPLATE" => "sect_inc.php"

)

);?> </div>

<div id="login"> <?$APPLICATION->IncludeComponent(

"bitrix:system.auth.form",

"auth",

Array(

"REGISTER_URL" => "/auth/",

"PROFILE_URL" => "/personal/profile/",

"SHOW_ERRORS" => "N"

)

);?> </div>

<div id="menu"> <?$APPLICATION->IncludeComponent(

"bitrix:menu",

"horizontal_multilevel",

Array(

"ROOT_MENU_TYPE" => "top",

"MENU_CACHE_TYPE" => "Y",

"MENU_CACHE_TIME" => "3600",

"MENU_CACHE_USE_GROUPS" => "N",

"MENU_CACHE_GET_VARS" => array(0=>"ELEMENT_ID",),

"MAX_LEVEL" => "3",

"CHILD_MENU_TYPE" => "left",

"USE_EXT" => "Y",

"ALLOW_MULTI_SELECT" => "N"

),

false,

Array(

'ACTIVE_COMPONENT' => 'Y'

)

);?> </div>

</div>

<!-------------------------------------------------------------->

<!---------------------------УЗКАЯ ЛЕВАЯ КОЛОНКА---------------->

<!------------------------------ГЛАВНАЯ КОЛОНКА----------------->

<!-------------------------УЗКАЯ ПРАВАЯ КОЛОНКА----------------->

<!--------------------------ПРАВАЯ КОЛОНКА---------------------->

<!---------------------------нижнее меню------------------------>

<table cellspacing="0" cellpadding="0" id="content">

<tbody>

<tr> <td class="left-column">

<?$APPLICATION->IncludeFile(

$APPLICATION->GetTemplatePath("include_areas/napr_left.php"),

Array(),

Array("MODE"=>"html")

);?>

<?$APPLICATION->IncludeFile(

$APPLICATION->GetTemplatePath("include_areas/otzyv_left.php"),

Array(),

Array("MODE"=>"html")

);?>

</td> <td class="main-column">

<div style="margin: 0pt; padding: 0pt;"> <img width="300" height="1" src="images/spacer.gif" /> </div>

<table width="100&#37;" cellspacing="0" cellpadding="0" id="komponent">

<tbody>

<tr> <td class="body_area">

<table class="body2">

<tbody>

<tr> <td class="elements">

<h1 id="pagetitle"><?$APPLICATION->IncludeComponent(

"bitrix:menu",

"left",

Array(

"ROOT_MENU_TYPE" => "left",

"MAX_LEVEL" => "1",

"CHILD_MENU_TYPE" => "left",

"USE_EXT" => "Y",

"ALLOW_MULTI_SELECT" => "N",

"MENU_CACHE_TYPE" => "Y",

"MENU_CACHE_TIME" => "3600",

"MENU_CACHE_USE_GROUPS" => "Y",

"MENU_CACHE_GET_VARS" => array()

)

);?><?$APPLICATION->ShowTitle(false)?></h1>

/templates/ru/dance/footer.php

<?

if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die();

IncludeTemplateLangFile(__FILE__);

?>

<br />

<!--BANNER_BOTTOM-->

</td> </tr>

</tbody>

</table>

</td></tr>

</tbody>

</table>

</td> <td class="right-column">

<div style="margin: 0pt; padding: 0pt;"> <img width="145" height="1" src="images/spacer.gif" /> </div>

<!--==================================================================-->

<?$APPLICATION->IncludeFile(

$APPLICATION->GetTemplatePath("include_areas/rasp_right.php"),

Array(),

Array("MODE"=>"html")

);?>

<?$APPLICATION->IncludeFile(

$APPLICATION->GetTemplatePath("include_areas/news_right.php"),

Array(),

Array("MODE"=>"html")

);?>

<?$APPLICATION->IncludeFile(

$APPLICATION->GetTemplatePath("include_areas/events_right.php"),

Array(),

Array("MODE"=>"html")

);?>

<?$APPLICATION->IncludeFile(

$APPLICATION->GetTemplatePath("include_areas/photo_right.php"),

Array(),

Array("MODE"=>"html")

);?>

<?$APPLICATION->IncludeFile(

$APPLICATION->GetTemplatePath("include_areas/opros_right.php"),

Array(),

Array("MODE"=>"html")

);?>

</td> </tr>

<tr> <td colspan="3">

<br />

<br />

<br />

<?$APPLICATION->IncludeComponent(

"bitrix:main.include",

"footer",

Array(

"AREA_FILE_SHOW" => "sect",

"AREA_FILE_SUFFIX" => "foot",

"AREA_FILE_RECURSIVE" => "Y",

"EDIT_TEMPLATE" => "sect_inc.php"

)

);?> </td> </tr>

</tbody>

</table>

</div>

</body>

</html>

/templates/ru/dance/include_areas/news_right.php

<?if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die();?>

<!--#DANCE_TEMPLATE_NEWS_RIGHT#-->

/modules/.services.php

<?

if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die();

$arServices = Array(

"main" => Array(

"NAME" => GetMessage("SERVICE_MAIN_BASE"),

"STAGES" => Array("template.php", "files.php", "settings.php"),

"INSTALL_ONLY" => "Y",

),

"news" => Array(

"NAME" => GetMessage("SERVICE_NEWS"),

"MODULE_ID" => "iblock",

"ICON" => "images/services/content.gif",

),

"napr" => Array(

"NAME" => GetMessage("SERVICE_NAPR"),

"MODULE_ID" => "iblock",

"ICON" => "images/services/content.gif",

),

"events" => Array(

"NAME" => GetMessage("SERVICE_EVENTS"),

"MODULE_ID" => "iblock",

"ICON" => "images...


Подобные документы

  • Анализ состояния использования сайтов сайтостроения в профессиональном образовании. Особенности сайта училища. Обсуждение аудитории, схемы поведения пользователей. Требования к содержимому и внешнему виду сайта. Модульная сетка, навигация, каналы связи.

    дипломная работа [3,3 M], добавлен 07.02.2014

  • Требования к функциональности сайта, информационному и программному обеспечению. Концептуальная модель данных. Затраты на разработку программного изделия. Описание пользовательского интерфейса главной страницы и разделов. Создание контрольного примера.

    отчет по практике [1,2 M], добавлен 03.06.2015

  • Вопросы реализации шаблона типового сайта диссертационного совета СевКавГТУ. Разработка базы данных для шаблона сайта с помощью фреймворка Django и Aptana Studio 3. Обоснование требований к техническому обеспечению. Расчет цены программного продукта.

    дипломная работа [2,5 M], добавлен 26.09.2012

  • Разработка функциональной структуры, назначение и цели создания web-сайта. Требования к его работе и возможностям, принцип работы и содержание. Продвижение сайта и программа испытаний. Расчет затрат на разработку, обоснование экономической эффективности.

    дипломная работа [9,5 M], добавлен 02.08.2015

  • Разработка общей структуры проектируемого сайта. Выбор программных и аппаратных средств для реализации поставленной задачи. Описание дизайна будущего сайта. Рассмотрение основ регистрации, правил построения программной и эксплуатационной документации.

    курсовая работа [5,3 M], добавлен 31.07.2014

  • Обзор и анализ используемых технологий, содержания и дизайна сайтов ВУЗов, в том числе созданных на основе CMS. Исследование содержания сайта ПРИПИТ и информационных потребностей различных групп его потенциальных посетителей. Разработка дизайна сайта.

    дипломная работа [129,4 K], добавлен 11.03.2010

  • Технические характеристики компьютерных систем. Анализ интернет-сайта филиала предприятия и выявление основных проблем. Обновление структуры и подгонка сайта под современные стандарты с помощью программы WebSite X5. Создание дизайна веб-страницы.

    отчет по практике [410,2 K], добавлен 14.01.2015

  • Характеристика типового web-сайта, его роль в работе субъекта экономики, возможные типы и формы реализации, структура и элементы, программное обеспечение. Этапы разработки и создания сайта, его продвижение и поддержка. Требования к рабочему месту.

    курсовая работа [38,3 K], добавлен 17.09.2014

  • Анализ предметной области и функций сайта. Разработка структуры базы данных, структуры и дизайна web-сайта. Описание установки CMS "Joomla!" и программной оболочки Denwer, создание гостевой книги, галереи и карты Google, результаты их тестирования.

    дипломная работа [2,3 M], добавлен 19.01.2017

  • Правила создания Web-сайта по вопросам медицинского страхования: разработка главной страницы (фреймовая структура), разделов, посвященных вопросам обязательного и добровольного страхования, активной asp-страницы, содержащей опрос для посетителей.

    курсовая работа [2,3 M], добавлен 20.06.2010

  • Понятие веб-страницы, ее структура, содержание и назначение. Требования к оформлению страниц и обязательных элементов, особенности навигационной структуры. Разработка проекта веб-сайта для телеканала, публикация данного узла в Интернете и его поддержка.

    курсовая работа [2,4 M], добавлен 16.11.2012

  • Этапы создания веб-сайта "Синьор Пекарь": анализ сегмента потребителей и аналогов проекта. Разработка рабочего наброска и карты сайта, перечень требований по содержимому и функциям. Декомпозиция макета на структурные блоки, оптимизация контента и верстка.

    курсовая работа [10,0 M], добавлен 19.04.2011

  • Исследование принципов работы, технологии и стандартов IP–телефонии, оценка качества телефонной связи и сжатия речи. Анализ планирования структуры сайта, разработки дизайна, верстки макета. Характеристика регистрации доменного имени и хостинга сайта.

    курсовая работа [52,7 K], добавлен 23.12.2011

  • Характеристика деятельности, структуры и функций агентства. Анализ текущей структуры сайта заказа наружной рекламы. Описание функциональной архитектуры и архитектуры данных проектируемого автоматизированного модуля. Проектирование интерфейса пользователя.

    дипломная работа [2,0 M], добавлен 22.07.2015

  • Исследование технических возможностей Web Page Maker для проектирования и разработки сайта. Изучение современных Интернет-технологий. Анализ основных этапов создания сайта. Представление текста и графики на web-страницах. Управление объектами страницы.

    курсовая работа [804,3 K], добавлен 16.01.2014

  • Разработка структуры сайта: создание карты, макета страницы, обеспечение навигации, определение дополнительных сервисов, выбор технологии. Создание базы данных, написание скриптов и сценариев для реализации имеющихся на сайте функциональных возможностей.

    дипломная работа [3,2 M], добавлен 19.02.2013

  • Определение назначения и функций Web-сайта типографии. Характеристика целевой аудитории. Выбор средств разработки и элементов структуры сайта, описание его содержания и анимационных компонентов. Организация доступа к данным, порядок тестирования проекта.

    курсовая работа [2,2 M], добавлен 13.01.2013

  • Анализ существующих сайтов образовательный учреждений учебных сайтов Астраханской области. Обзор среды реализации разработки веб-сайта. Требования к официальным сайтам образовательных учреждений. Разработка логической структуры веб-сайта колледжа.

    дипломная работа [6,1 M], добавлен 10.06.2014

  • Выбор сред разработки для реализации сайта. Основная концепция и содержание веб-сайта. Роль дизайна сайта в его создании и определение основных требований к его содержанию и внешнему виду. Особенности разработки удобного и красивого интерфейса сайта.

    курсовая работа [686,4 K], добавлен 13.06.2022

  • Создание локальной версии Web-сайта компании, оказывающей услуги в сфере "Дизайн помещений". Логическая структура сайта – набор тематических рубрик с распределенными по разделам документами. HTML–коды Web-страниц. Теоретические аспекты создания сайта.

    курсовая работа [94,0 K], добавлен 10.05.2011

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.