<? $iblockProperties = Array( "article" => "article", "manufacturer" => "manufacturer", "color" =>"color", "weight" => "weight", "size" => "size", ); 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']; $IBLOCK_PROPERTY_SKU = array(); foreach ($iblockProperties as $prop) { foreach ($arOldSetupVars['IBLOCK_PROPERTY_SKU'. '_' . $prop] as $iblock => $val) { $IBLOCK_PROPERTY_SKU[$iblock][$prop] = $val; } } $IBLOCK_PROPERTY_PRODUCT = array(); foreach ($iblockProperties as $prop) { foreach ($arOldSetupVars['IBLOCK_PROPERTY_PRODUCT'. '_' . $prop] as $iblock => $val) { $IBLOCK_PROPERTY_PRODUCT[$iblock][$prop] = $val; } } } 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><?=GetMessage("SETTINGS_INFOBLOCK");?></h3> <font class="text"><?=GetMessage("EXPORT_CATALOGS");?><br><br></font> <? if (!isset($IBLOCK_EXPORT) || !is_array($IBLOCK_EXPORT)) { $IBLOCK_EXPORT = array(); } $iblockPropertiesName = Array( "article" => GetMessage("PROPERTY_ARTICLE_HEADER_NAME"), "manufacturer" => GetMessage("PROPERTY_MANUFACTURER_HEADER_NAME"), "color" => GetMessage("PROPERTY_COLOR_HEADER_NAME"), "weight" => GetMessage("PROPERTY_WEIGHT_HEADER_NAME"), "size" => GetMessage("PROPERTY_SIZE_HEADER_NAME"), ); $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;"><?=GetMessage("CHECK_ALL_INFOBLOCKS");?></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"><?=GetMessage("LOADED_PROPERTY");?></div> </td> <td class="adm-list-table-cell"> <div class="adm-list-table-cell-inner"><?=GetMessage("PROPERTY_PRODUCT_HEADER_NAME");?></div> </td> <? if ($arIBlock['PROPERTIES_SKU'] != null): ?> <td class="adm-list-table-cell"> <div class="adm-list-table-cell-inner"><?=GetMessage("PROPERTY_OFFER_HEADER_NAME");?></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_<?=$key?>[<?=$arIBlock["ID"]?>]" 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_<?=$key?>[<?=$arIBlock["ID"]?>]" 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><?=GetMessage("SETTINGS_EXPORT");?></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();?> <? $vals = "SETUP_FILE_NAME,IBLOCK_EXPORT"; foreach ($iblockProperties as $val) { $vals .= ",IBLOCK_PROPERTY_SKU_" . $val; $vals .= ",IBLOCK_PROPERTY_PRODUCT_" . $val; } ?> <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="<? echo $vals ?>"> <input type="submit" value="<?echo ($ACTION=="EXPORT")?GetMessage("CET_EXPORT"):GetMessage("CET_SAVE")?>"> </form> <? } elseif ($STEP==2) { $FINITE = true; } ?>