1
0
mirror of synced 2024-11-26 23:36:08 +03:00

Сделал сохранение свойств для всех каталогов. Убрал вывод свойств, для которых не заданы коды

This commit is contained in:
a.belikin 2024-11-12 19:27:48 +03:00
parent 7c762dff2f
commit 7b9c2e4f96
2 changed files with 33 additions and 31 deletions

View File

@ -190,8 +190,7 @@ if ($STEP === 1) {
<tbody>
<?php
foreach ($settingsService->defaultPropList as $propertyKey => $property) {
$productSelected = false; ?>
foreach ($settingsService->defaultPropList as $propertyKey => $property) { ?>
<tr class="adm-list-table-row">
<td class="adm-list-table-cell">
@ -215,14 +214,14 @@ if ($STEP === 1) {
if ($keyField === $propertyKey) { ?>
<option value="<?=$field['CODE']?>"
<?php
$productSelected = $settingsService->isOptionSelected(
$isSelected = $settingsService->isOptionSelected(
$field,
$arIBlock['OLD_PROPERTY_PRODUCT_SELECT'],
$propertyKey
);
?>
<?= $productSelected ? ' selected' : ''?>
<?= $isSelected ? ' selected' : ''?>
>
<?=$field['name']?>
</option>
@ -241,7 +240,7 @@ if ($STEP === 1) {
<?php
echo $settingsService->getOptionClass($prop, true);
$productSelected = $settingsService->isOptionSelected(
$isSelected = $settingsService->isOptionSelected(
$prop,
$arIBlock['OLD_PROPERTY_PRODUCT_SELECT'],
$propertyKey
@ -251,7 +250,7 @@ if ($STEP === 1) {
= $settingsService->getHlTableName($prop)
?? $productHlTableName;
echo $productSelected ? ' selected' : '';
echo $isSelected ? ' selected' : '';
?>
>
<?=$prop['NAME']?>
@ -376,7 +375,7 @@ if ($STEP === 1) {
<option value="<?=$prop['CODE']?>"
<?php
echo $settingsService->getOptionClass($prop, false);
if (!$productSelected) {
$isSelected = $settingsService->isOptionSelected(
$prop,
$arIBlock['OLD_PROPERTY_SKU_SELECT'],
@ -388,7 +387,6 @@ if ($STEP === 1) {
?? $skuHlTableName;
echo $isSelected ? ' selected' : '';
}
?>
>
<?=$prop['NAME']?>
@ -475,7 +473,6 @@ if ($STEP === 1) {
} ?>
<?php
$productSelected = false;
$catalogId = $arIBlock['ID'];
$catalogCustomProps = $settingsService->customPropList[$catalogId];
@ -500,7 +497,7 @@ if ($STEP === 1) {
<?php
echo $settingsService->getOptionClass($prop, true);
$productSelected = $settingsService->isOptionSelected(
$isSelected = $settingsService->isOptionSelected(
$prop,
$arIBlock['OLD_PROPERTY_PRODUCT_SELECT'],
$catalogCustomPropCode
@ -510,7 +507,7 @@ if ($STEP === 1) {
= $settingsService->getHlTableName($prop)
?? $productHlTableName;
echo $productSelected ? ' selected' : '';
echo $isSelected ? ' selected' : '';
?>
>
<?=$prop['NAME']?>
@ -519,12 +516,11 @@ if ($STEP === 1) {
</select>
</td>
<?php if ($arIBlock['PROPERTIES_SKU'] !== null) {
$productSelected = false; ?>
<?php if ($arIBlock['PROPERTIES_SKU'] !== null) { ?>
<td class="adm-list-table-cell">
<select
name="iblockPropertyProduct_<?=$catalogCustomPropCode?>[<?= $catalogId ?>]"
id="iblockPropertyProduct_<?=$catalogCustomPropCode . $catalogId ?>"
name="iblockPropertySku_<?=$catalogCustomPropCode?>[<?= $catalogId ?>]"
id="iblockPropertySku_<?=$catalogCustomPropCode . $catalogId ?>"
class="property-export"
data-type="<?= $catalogCustomPropCode ?>"
onchange="propertyChange(this)"
@ -537,7 +533,6 @@ if ($STEP === 1) {
<?php
echo $settingsService->getOptionClass($prop, false);
if (!$productSelected) {
$isSelected = $settingsService->isOptionSelected(
$prop,
$arIBlock['OLD_PROPERTY_SKU_SELECT'],
@ -549,7 +544,6 @@ if ($STEP === 1) {
?? $skuHlTableName;
echo $isSelected ? ' selected' : '';
}
?>
>
<?=$prop['NAME']?>
@ -766,6 +760,7 @@ if ($STEP === 1) {
function propertyChange(obj) {
let selectedOption = $(obj).find('option')[obj.selectedIndex];
console.log(selectedOption);
if (selectedOption.className === 'not-highloadblock') {
let objId = '#' + obj.id;
@ -932,7 +927,7 @@ if ($STEP === 1) {
properties: customProps,
profileId: profileId
},
}).then(addParamsToSetupFieldsList);
}).then(addParamsToSetupFieldsList());
}
if (Object.keys(customPropsToDelete).length > 0) {
@ -941,7 +936,7 @@ if ($STEP === 1) {
properties: customPropsToDelete,
profileId: profileId
},
}).then(deleteParamsFromSetupFieldsList);
}).then(deleteParamsFromSetupFieldsList());
}
const promises = [savePromise, deletePromise].filter(Boolean);

View File

@ -541,6 +541,9 @@ class SettingsService
*/
public function isOptionSelected(array $prop, array $oldSelect, string $key): bool
{
if ($key === 'manufacturer') {
$a = 'yes';
}
if (count($oldSelect) > 0) {
if ($prop['CODE'] === $oldSelect[$key]) {
return true;
@ -635,9 +638,11 @@ class SettingsService
$dbSkuProperties = CIBlock::GetProperties($iblockOffer['IBLOCK_ID'], [], ['MULTIPLE' => 'N']);
while ($prop = $dbSkuProperties->Fetch()) {
if ($prop['CODE'] !== '') {
$propertiesSKU[] = $prop;
}
}
}
return $propertiesSKU;
}
@ -689,8 +694,10 @@ class SettingsService
$iblockResult = CIBlock::GetProperties($iblockId, [], ['MULTIPLE' => 'N']);
while ($prop = $iblockResult->Fetch()) {
if ($prop['CODE'] !== '') {
$propertiesProduct[] = $prop;
}
}
return $propertiesProduct;
}