Разработка первой версии тиражного решения типового сайта танцевальных школ
Требования посетителей к содержимому сайта. Анализ визуальной структуры страницы на "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> </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"))." <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"))." <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.'"> '.$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%"> <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="" /> <input type="button" id="error_skip_button" value="'.GetMessage("INST_SKIP_BUTTON").'" onclick="" /> </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%" 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