442 lines
20 KiB
PHP
442 lines
20 KiB
PHP
<?
|
||
|
||
|
||
|
||
if(!check_bitrix_sessid()) return;
|
||
|
||
__IncludeLang(GetLangFileName($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/intaro.intarocrm/lang/", "/icml_export_setup.php"));
|
||
|
||
if (($ACTION == 'EXPORT' || $ACTION == 'EXPORT_EDIT' || $ACTION == 'EXPORT_COPY') && $STEP == 1)
|
||
{
|
||
if (isset($arOldSetupVars['SETUP_FILE_NAME']))
|
||
$SETUP_FILE_NAME = $arOldSetupVars['SETUP_FILE_NAME'];
|
||
if (isset($arOldSetupVars['SETUP_PROFILE_NAME']))
|
||
$SETUP_PROFILE_NAME = $arOldSetupVars['SETUP_PROFILE_NAME'];
|
||
if (isset($arOldSetupVars['IBLOCK_EXPORT']))
|
||
$IBLOCK_EXPORT = $arOldSetupVars['IBLOCK_EXPORT'];
|
||
if (isset($arOldSetupVars['IBLOCK_PROPERTY_SKU']))
|
||
$IBLOCK_PROPERTY_SKU = $arOldSetupVars['IBLOCK_PROPERTY_SKU'];
|
||
if (isset($arOldSetupVars['IBLOCK_PROPERTY_PRODUCT']))
|
||
$IBLOCK_PROPERTY_PRODUCT = $arOldSetupVars['IBLOCK_PROPERTY_PRODUCT'];
|
||
}
|
||
|
||
|
||
if ($STEP>1)
|
||
{
|
||
|
||
if (strlen($SETUP_FILE_NAME)<=0)
|
||
{
|
||
$arSetupErrors[] = GetMessage("CET_ERROR_NO_FILENAME");
|
||
}
|
||
elseif ($APPLICATION->GetFileAccessPermission($SETUP_FILE_NAME) < "W")
|
||
{
|
||
$arSetupErrors[] = str_replace("#FILE#", $SETUP_FILE_NAME, GetMessage('CET_YAND_RUN_ERR_SETUP_FILE_ACCESS_DENIED'));
|
||
}
|
||
|
||
if (($ACTION=="EXPORT_SETUP" || $ACTION == 'EXPORT_EDIT' || $ACTION == 'EXPORT_COPY') && strlen($SETUP_PROFILE_NAME)<=0)
|
||
{
|
||
$arSetupErrors[] = GetMessage("CET_ERROR_NO_PROFILE_NAME");
|
||
}
|
||
|
||
if (!empty($arSetupErrors))
|
||
{
|
||
$STEP = 1;
|
||
}
|
||
}
|
||
|
||
if (!empty($arSetupErrors))
|
||
echo ShowError(implode('<br />', $arSetupErrors));
|
||
|
||
|
||
if ($STEP==1)
|
||
{
|
||
|
||
|
||
?>
|
||
|
||
<style type="text/css">
|
||
.iblock-export-table-display-none {
|
||
display: none;
|
||
}
|
||
</style>
|
||
|
||
<form method="post" action="<?php echo $APPLICATION->GetCurPage(); ?>" >
|
||
<?if ($ACTION == 'EXPORT_EDIT' || $ACTION == 'EXPORT_COPY')
|
||
{
|
||
?><input type="hidden" name="PROFILE_ID" value="<? echo intval($PROFILE_ID); ?>"><?
|
||
}
|
||
?>
|
||
|
||
<h3>Настройки инфоблоков</h3>
|
||
<font class="text"><?=GetMessage("EXPORT_CATALOGS");?><br><br></font>
|
||
<?
|
||
if (!isset($IBLOCK_EXPORT) || !is_array($IBLOCK_EXPORT))
|
||
{
|
||
$IBLOCK_EXPORT = array();
|
||
}
|
||
|
||
$iblockPropertiesName = Array(
|
||
"article" => "Артикул",
|
||
"manufacturer" => "Производитель",
|
||
"color" => "Цвет",
|
||
"weight" => "Вес",
|
||
"size" => "Размер",
|
||
);
|
||
|
||
$iblockPropertiesHint = Array(
|
||
"article" => Array("ARTICLE", "ART", "ARTNUMBER", "ARTICUL", "ARTIKUL"),
|
||
"manufacturer" => Array("MANUFACTURER", "PROISVODITEL", "PROISVOD", "PROISV"),
|
||
"color" => Array("COLOR", "CVET"),
|
||
"weight" => Array("WEIGHT", "VES", "VEC"),
|
||
"size" => Array("SIZE", "RAZMER"),
|
||
);
|
||
|
||
|
||
$boolAll = false;
|
||
$intCountChecked = 0;
|
||
$intCountAvailIBlock = 0;
|
||
$arIBlockList = array();
|
||
$db_res = CIBlock::GetList(Array("IBLOCK_TYPE"=>"ASC", "NAME"=>"ASC"),array('CHECK_PERMISSIONS' => 'Y','MIN_PERMISSION' => 'W'));
|
||
while ($iblock = $db_res->Fetch())
|
||
{
|
||
if ($arCatalog = CCatalog::GetByIDExt($iblock["ID"]))
|
||
{
|
||
if($arCatalog['CATALOG_TYPE'] == "D" || $arCatalog['CATALOG_TYPE'] == "X" || $arCatalog['CATALOG_TYPE'] == "P")
|
||
{
|
||
$propertiesSKU = null;
|
||
if ($arCatalog['CATALOG_TYPE'] == "X" || $arCatalog['CATALOG_TYPE'] == "P")
|
||
{
|
||
$iblockOffer = CCatalogSKU::GetInfoByProductIBlock($iblock["ID"]);
|
||
|
||
$db_properties = CIBlock::GetProperties($iblockOffer['IBLOCK_ID'], Array());
|
||
while($prop = $db_properties->Fetch())
|
||
$propertiesSKU[] = $prop;
|
||
|
||
$oldPropertySKU = null;
|
||
if (isset($IBLOCK_PROPERTY_SKU[$iblock['ID']])) {
|
||
foreach ($iblockPropertiesName as $key => $prop) {
|
||
$oldPropertySKU[$key] = $IBLOCK_PROPERTY_SKU[$iblock['ID']][$key];
|
||
}
|
||
}
|
||
}
|
||
|
||
|
||
$propertiesProduct = null;
|
||
$db_properties = CIBlock::GetProperties($iblock['ID'], Array());
|
||
while($prop = $db_properties->Fetch())
|
||
$propertiesProduct[] = $prop;
|
||
|
||
$oldPropertyProduct = null;
|
||
if (isset($IBLOCK_PROPERTY_PRODUCT[$iblock['ID']])) {
|
||
foreach ($iblockPropertiesName as $key => $prop) {
|
||
$oldPropertyProduct[$key] = $IBLOCK_PROPERTY_PRODUCT[$iblock['ID']][$key];
|
||
}
|
||
}
|
||
|
||
$arSiteList = array();
|
||
$rsSites = CIBlock::GetSite($iblock["ID"]);
|
||
while ($arSite = $rsSites->Fetch())
|
||
{
|
||
$arSiteList[] = $arSite["SITE_ID"];
|
||
}
|
||
|
||
if (count($IBLOCK_EXPORT) != 0)
|
||
$boolExport = (in_array($iblock['ID'], $IBLOCK_EXPORT));
|
||
else
|
||
$boolExport = true;
|
||
|
||
|
||
$arIBlockList[] = array(
|
||
'ID' => $iblock['ID'],
|
||
'NAME' => $iblock['NAME'],
|
||
'IBLOCK_TYPE_ID' => $iblock['IBLOCK_TYPE_ID'],
|
||
'IBLOCK_EXPORT' => $boolExport,
|
||
'PROPERTIES_SKU' => $propertiesSKU,
|
||
'PROPERTIES_PRODUCT' => $propertiesProduct,
|
||
'OLD_PROPERTY_SKU_SELECT' => $oldPropertySKU,
|
||
'OLD_PROPERTY_PRODUCT_SELECT' => $oldPropertyProduct,
|
||
'SITE_LIST' => '('.implode(' ',$arSiteList).')',
|
||
);
|
||
|
||
if ($boolExport)
|
||
$intCountChecked++;
|
||
$intCountAvailIBlock++;
|
||
}
|
||
}
|
||
}
|
||
if (count($IBLOCK_EXPORT) != 0) {
|
||
if ($intCountChecked == $intCountAvailIBlock)
|
||
$boolAll = true;
|
||
} else {
|
||
$intCountChecked = $intCountAvailIBlock;
|
||
$boolAll = true;
|
||
}
|
||
|
||
|
||
|
||
|
||
?>
|
||
|
||
<font class="text" style="font-weight: bold;">Выбрать все инфоблоки </font>
|
||
<input
|
||
style="vertical-align: middle;"
|
||
type="checkbox"
|
||
name="icml_export_all"
|
||
id="icml_export_all"
|
||
value="Y"
|
||
onclick="checkAll(this,<? echo $intCountAvailIBlock; ?>);"
|
||
<? echo ($boolAll ? ' checked' : ''); ?>>
|
||
</br>
|
||
</br>
|
||
<div>
|
||
<? $checkBoxCounter = 0;?>
|
||
<? foreach ($arIBlockList as $key => $arIBlock):?>
|
||
<div>
|
||
<div>
|
||
<font class="text" style="font-weight: bold;"><? echo htmlspecialcharsex("[".$arIBlock["IBLOCK_TYPE_ID"]."] ".$arIBlock["NAME"]." ".$arIBlock['SITE_LIST']); ?></font>
|
||
<input
|
||
type="checkbox"
|
||
name="IBLOCK_EXPORT[<?=$arIBlock["ID"]?>]"
|
||
id="IBLOCK_EXPORT<?=++$checkBoxCounter?>"
|
||
value="<?=$arIBlock["ID"]?>"
|
||
<? if ($arIBlock['IBLOCK_EXPORT']) echo " checked"; ?>
|
||
onclick="checkOne(this,<? echo $intCountAvailIBlock; ?>);"
|
||
>
|
||
</div>
|
||
<br>
|
||
<div id="IBLOCK_EXPORT_TABLE<?=$checkBoxCounter?>">
|
||
<table class="adm-list-table" id="export_setup" <?=($arIBlock['PROPERTIES_SKU'] == null ? 'style="width: 66%;"': "" )?> >
|
||
<thead>
|
||
<tr class="adm-list-table-header">
|
||
<td class="adm-list-table-cell">
|
||
<div class="adm-list-table-cell-inner">Выгружаемое свойство</div>
|
||
</td>
|
||
<td class="adm-list-table-cell">
|
||
<div class="adm-list-table-cell-inner">Свойство товара</div>
|
||
</td>
|
||
<? if ($arIBlock['PROPERTIES_SKU'] != null): ?>
|
||
<td class="adm-list-table-cell">
|
||
<div class="adm-list-table-cell-inner">Свойство торгового предложения</div>
|
||
</td>
|
||
<? endif;?>
|
||
</tr>
|
||
</thead>
|
||
<tbody>
|
||
|
||
<? foreach ($iblockPropertiesName as $key => $property): ?>
|
||
<? $productSelected = false;?>
|
||
<tr class="adm-list-table-row">
|
||
<td class="adm-list-table-cell">
|
||
<? echo htmlspecialcharsex($property); ?>
|
||
</td>
|
||
<td class="adm-list-table-cell">
|
||
<select
|
||
style="width: 200px;"
|
||
id="IBLOCK_PROPERTY_PRODUCT_<?=$key?><?=$arIBlock["ID"]?>"
|
||
name="IBLOCK_PROPERTY_PRODUCT[<?=$arIBlock["ID"]?>][<?=$key?>]"
|
||
class="property-export"
|
||
onchange="propertyChange(this);">
|
||
<option value=""></option>
|
||
<? foreach ($arIBlock['PROPERTIES_PRODUCT'] as $prop): ?>
|
||
<option value="<?=$prop['CODE'] ?>"
|
||
<?
|
||
if ($arIBlock['OLD_PROPERTY_PRODUCT_SELECT'] != null) {
|
||
if ($prop["CODE"] == $arIBlock['OLD_PROPERTY_PRODUCT_SELECT'][$key] ) {
|
||
echo " selected";
|
||
$productSelected = true;
|
||
}
|
||
} else {
|
||
foreach ($iblockPropertiesHint[$key] as $hint) {
|
||
if ($prop["CODE"] == $hint ) {
|
||
echo " selected";
|
||
$productSelected = true;
|
||
break;
|
||
}
|
||
}
|
||
}
|
||
?>
|
||
>
|
||
<?=$prop["NAME"];?>
|
||
</option>
|
||
<? endforeach;?>
|
||
</select>
|
||
</td>
|
||
<? if ($arIBlock['PROPERTIES_SKU'] != null): ?>
|
||
<td class="adm-list-table-cell">
|
||
<select
|
||
style="width: 200px;"
|
||
id="IBLOCK_PROPERTY_SKU_<?=$key?><?=$arIBlock["ID"]?>"
|
||
name="IBLOCK_PROPERTY_SKU[<?=$arIBlock["ID"]?>][<?=$key?>]"
|
||
class="property-export"
|
||
onchange="propertyChange(this);">
|
||
|
||
<option value=""></option>
|
||
<? foreach ($arIBlock['PROPERTIES_SKU'] as $prop): ?>
|
||
<option value="<?=$prop['CODE'] ?>"
|
||
<?
|
||
if (!$productSelected) {
|
||
if ($arIBlock['OLD_PROPERTY_SKU_SELECT'] != null) {
|
||
if ($prop["CODE"] == $arIBlock['OLD_PROPERTY_SKU_SELECT'][$key] ) {
|
||
echo " selected";
|
||
}
|
||
} else {
|
||
foreach ($iblockPropertiesHint[$key] as $hint) {
|
||
if ($prop["CODE"] == $hint ) {
|
||
echo " selected";
|
||
break;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
?>
|
||
>
|
||
<?=$prop["NAME"];?>
|
||
</option>
|
||
<? endforeach;?>
|
||
</select>
|
||
</td>
|
||
<? endif;?>
|
||
</tr>
|
||
<? endforeach;?>
|
||
</tbody>
|
||
</table>
|
||
<br>
|
||
<br>
|
||
</div>
|
||
</div>
|
||
|
||
|
||
<? endforeach;?>
|
||
</div>
|
||
|
||
<input type="hidden" name="count_checked" id="count_checked" value="<? echo $intCountChecked; ?>">
|
||
<br>
|
||
|
||
<h3>Настройки экспорта</h3>
|
||
|
||
<font class="text"><?=GetMessage("FILENAME");?><br><br></font>
|
||
<input type="text" name="SETUP_FILE_NAME"
|
||
value="<?=htmlspecialcharsbx(strlen($SETUP_FILE_NAME) > 0 ?
|
||
$SETUP_FILE_NAME :
|
||
(COption::GetOptionString(
|
||
'catalog',
|
||
'export_default_path',
|
||
'/bitrix/catalog_export/'))
|
||
.'intarocrm'/* .mt_rand(0, 999999) */.'.xml'
|
||
); ?>" size="50">
|
||
|
||
<br>
|
||
<br>
|
||
<br>
|
||
|
||
|
||
<?if ($ACTION=="EXPORT_SETUP" || $ACTION == 'EXPORT_EDIT' || $ACTION == 'EXPORT_COPY'):?>
|
||
<font class="text"><?=GetMessage("PROFILE_NAME");?><br><br></font>
|
||
<input
|
||
type="text"
|
||
name="SETUP_PROFILE_NAME"
|
||
value="<?echo htmlspecialchars($SETUP_PROFILE_NAME)?>"
|
||
size="50">
|
||
<br>
|
||
<br>
|
||
<br>
|
||
<?endif;?>
|
||
|
||
|
||
<script type="text/javascript" src="/bitrix/js/main/jquery/jquery-1.7.min.js"></script>
|
||
<script type="text/javascript">
|
||
function checkAll(obj,cnt)
|
||
{
|
||
for (i = 0; i < cnt; i++)
|
||
{
|
||
if (obj.checked)
|
||
BX.removeClass('IBLOCK_EXPORT_TABLE'+(i+1),"iblock-export-table-display-none");
|
||
}
|
||
var table = BX(obj.id.replace('IBLOCK_EXPORT','IBLOCK_EXPORT_TABLE'));
|
||
if (obj.checked)
|
||
BX.removeClass(table,"iblock-export-table-display-none");
|
||
var easing = new BX.easing({
|
||
duration : 150,
|
||
start : {opacity : obj.checked ? 0 : 100 },
|
||
finish : {opacity: obj.checked ? 100 : 0 },
|
||
transition : BX.easing.transitions.linear,
|
||
step : function(state){
|
||
for (i = 0; i < cnt; i++)
|
||
{
|
||
BX('IBLOCK_EXPORT_TABLE'+(i+1)).style.opacity = state.opacity/100;
|
||
}
|
||
},
|
||
complete : function() {
|
||
for (i = 0; i < cnt; i++)
|
||
{
|
||
if (!obj.checked)
|
||
BX.addClass('IBLOCK_EXPORT_TABLE'+(i+1),"iblock-export-table-display-none");
|
||
}
|
||
}
|
||
});
|
||
easing.animate();
|
||
var boolCheck = obj.checked;
|
||
for (i = 0; i < cnt; i++)
|
||
{
|
||
BX('IBLOCK_EXPORT'+(i+1)).checked = boolCheck;
|
||
}
|
||
BX('count_checked').value = (boolCheck ? cnt : 0);
|
||
};
|
||
function checkOne(obj,cnt)
|
||
{
|
||
var table = BX(obj.id.replace('IBLOCK_EXPORT','IBLOCK_EXPORT_TABLE'));
|
||
if (obj.checked)
|
||
BX.removeClass(table,"iblock-export-table-display-none");
|
||
var easing = new BX.easing({
|
||
duration : 150,
|
||
start : {opacity : obj.checked ? 0 : 100 },
|
||
finish : {opacity: obj.checked ? 100 : 0 },
|
||
transition : BX.easing.transitions.linear,
|
||
step : function(state){
|
||
table.style.opacity = state.opacity/100;
|
||
},
|
||
complete : function() {
|
||
if (!obj.checked)
|
||
BX.addClass(table,"iblock-export-table-display-none");
|
||
}
|
||
});
|
||
easing.animate();
|
||
var boolCheck = obj.checked;
|
||
var intCurrent = parseInt(BX('count_checked').value);
|
||
intCurrent += (boolCheck ? 1 : -1);
|
||
BX('icml_export_all').checked = (intCurrent < cnt ? false : true);
|
||
BX('count_checked').value = intCurrent;
|
||
};
|
||
function propertyChange(obj)
|
||
{
|
||
if (BX(obj.id).value !== 'none') {
|
||
if (obj.id.indexOf("SKU") !== -1)
|
||
BX(obj.id.replace('SKU','PRODUCT')).value = 'none';
|
||
else
|
||
BX(obj.id.replace('PRODUCT','SKU')).value = 'none';
|
||
}
|
||
};
|
||
</script>
|
||
|
||
|
||
<?//Следующие переменные должны быть обязательно установлены?>
|
||
<?=bitrix_sessid_post();?>
|
||
|
||
<input type="hidden" name="lang" value="<?echo LANGUAGE_ID ?>">
|
||
<input type="hidden" name="ACT_FILE" value="<?echo htmlspecialcharsbx($_REQUEST["ACT_FILE"]) ?>">
|
||
<input type="hidden" name="ACTION" value="<?echo htmlspecialcharsbx($ACTION) ?>">
|
||
<input type="hidden" name="STEP" value="<?echo intval($STEP) + 1 ?>">
|
||
<input type="hidden" name="SETUP_FIELDS_LIST" value="SETUP_FILE_NAME,IBLOCK_EXPORT,IBLOCK_PROPERTY_SKU,IBLOCK_PROPERTY_PRODUCT">
|
||
<input type="submit" value="<?echo ($ACTION=="EXPORT")?GetMessage("CET_EXPORT"):GetMessage("CET_SAVE")?>">
|
||
|
||
|
||
</form>
|
||
|
||
<?
|
||
}
|
||
elseif ($STEP==2)
|
||
{
|
||
$FINITE = true;
|
||
}
|
||
|
||
?>
|