1C-Bitrix 25.700.0
Загрузка...
Поиск...
Не найдено
iblock_catalog_edit.php
См. документацию.
1<?php
4
10 Bitrix\Catalog\Helpers\Admin\CatalogEdit,
13
14require_once($_SERVER['DOCUMENT_ROOT'].'/bitrix/modules/main/include/prolog_admin_before.php');
15
16Loc::loadMessages(__FILE__);
17
18Loader::includeModule('catalog');
19$readOnly = !AccessController::getCurrent()->check(ActionDictionary::ACTION_CATALOG_SETTINGS_ACCESS);
20if ($readOnly && !AccessController::getCurrent()->check(ActionDictionary::ACTION_CATALOG_READ))
21{
22 ShowError(Loc::getMessage('BX_CATALOG_SETTINGS_ACCESS_DENIED'));
23 die();
24}
25
26require_once($_SERVER['DOCUMENT_ROOT'].'/bitrix/modules/iblock/classes/general/subelement.php');
27
28$request = Main\Context::getCurrent()->getRequest();
29
30$iblockId = (isset($request['IBLOCK_ID']) ? (int)$request['IBLOCK_ID'] : 0);
31$catalogEdit = new CatalogEdit($iblockId);
32if (!$catalogEdit->isSuccess())
33{
34 ShowError(implode(' ', $catalogEdit->getErrors()));
35 die();
36}
37
38$iblock = $catalogEdit->getIblock();
39$enableSaleRecurring = $catalogEdit->isEnableRecurring();
40
42 array(
43 'ICON' => 'catalog',
44 'DIV' => 'iblockCatalogEdit01',
45 'TAB' => Loc::getMessage('BX_CAT_IBLOCK_CATALOG_EDIT_TAB_NAME_COMMON'),
46 'TITLE' => Loc::getMessage('BX_CAT_IBLOCK_CATALOG_EDIT_TAB_TITLE_COMMON')
47 )
48);
49
51 'bxpublic' => 'Y',
52 'sessid' => bitrix_sessid()
53);
55 'LINK' => $APPLICATION->GetCurPageParam(),
56 'POST_PARAMS' => $postParams,
57);
58unset($postParams);
59
60$iblockCatalogFormID = 'iblockCatalogControl';
62$iblockCatalogFormID .= '_form';
63unset($tabList);
64
65$vatList = array(0 => Loc::getMessage('BX_CAT_IBLOCK_CATALOG_MESS_NOT_SELECT'));
66$vatIterator = Catalog\VatTable::getList(array(
67 'select' => array('ID', 'NAME', 'SORT'),
68 'order' => array('SORT' => 'ASC', 'ID' => 'ASC')
69));
70while ($vat = $vatIterator->fetch())
71 $vatList[$vat['ID']] = $vat['NAME'];
72unset($vat, $vatIterator);
73
76
77if ($request->isPost() && $request['save'] != '')
78{
80 {
81 $errors[] = Loc::getMessage('BX_CAT_IBLOCK_CATALOG_IBLOCK_BAD_SESSION');
82 }
83 if (empty($errors))
84 {
85 $post = $request->getPostList()->toArray();
86 $catalogEdit->saveCatalog($post);
87 if (!$catalogEdit->isSuccess())
88 {
89 $errors = $catalogEdit->getErrors();
90 }
91 }
92 if (empty($errors))
93 {
94
95 }
96 if (!empty($errors))
97 {
99 array(
100 'DETAILS' => implode('<br>', $errors),
101 'TYPE' => 'ERROR',
102 'MESSAGE' => Loc::getMessage('BX_CAT_IBLOCK_CATALOG_ERR_SAVE'),
103 'HTML' => true
104 )
105 );
106 echo $errorMessage->Show();
107 }
108 else
109 {
111 }
112}
113elseif ($request['dontsave'] != '')
114{
116}
117
118$APPLICATION->SetTitle(Loc::getMessage('BX_CAT_IBLOCK_CATALOG_EDIT_TITLE_EDIT'));
119
120Main\Page\Asset::getInstance()->addJs('/bitrix/js/catalog/iblock_catalog.js');
121
122require($_SERVER['DOCUMENT_ROOT'].'/bitrix/modules/main/include/prolog_admin_after.php');
123
125 'IBLOCK_ID' => $iblockId,
126 'PRODUCT_IBLOCK_ID' => 0,
127 'SKU_PROPERTY_ID' => 0,
128 'YANDEX_EXPORT' => 'N',
129 'SUBSCRIPTION' => 'N',
130 'VAT_ID' => 0,
131 'CATALOG' => 'N',
132 'CATALOG_TYPE' => ''
133);
134
135$catalog = $catalogEdit->getCatalog();
136if (empty($catalog))
138
139if (!empty($errors))
140 $catalog = array_merge($catalog, $fields);
141
144if ($catalog['CATALOG_TYPE'] != CCatalogSKU::TYPE_OFFERS)
145{
146 $iblockList = array();
147 $productList = array();
148 $iblockIterator = Catalog\CatalogIblockTable::getList(array(
149 'select' => array('PRODUCT_IBLOCK_ID'),
150 'filter' => array('!=PRODUCT_IBLOCK_ID' => 0),
151 ));
152 while ($product = $iblockIterator->fetch())
153 {
154 $product['PRODUCT_IBLOCK_ID'] = (int)$product['PRODUCT_IBLOCK_ID'];
155 $productList[$product['PRODUCT_IBLOCK_ID']] = $product['PRODUCT_IBLOCK_ID'];
156 }
157 unset($product, $iblockIterator);
158 $iblockIterator = Catalog\CatalogIblockTable::getList(array(
159 'select' => array('IBLOCK_ID'),
160 'filter' => array('!=IBLOCK_ID' => $iblockId, '=PRODUCT_IBLOCK_ID' => 0),
161 'order' => array('IBLOCK_ID' => 'ASC')
162 ));
163 while ($offer = $iblockIterator->fetch())
164 {
165 $offer['IBLOCK_ID'] = (int)$offer['IBLOCK_ID'];
166 if (!isset($productList[$offer['IBLOCK_ID']]) && $offer['IBLOCK_ID'] != $iblockId)
167 $iblockList[$offer['IBLOCK_ID']] = $offer['IBLOCK_ID'];
168 }
169 unset($offer, $iblockIterator);
170 unset($productList);
171 if ($catalog['CATALOG_TYPE'] == CCatalogSKU::TYPE_PRODUCT || $catalog['CATALOG_TYPE'] == CCatalogSKU::TYPE_FULL)
172 $iblockList[$catalog['IBLOCK_ID']] = $catalog['IBLOCK_ID'];
173 if (!empty($iblockList))
174 {
175 $siteList = array_fill_keys($iblockList, array());
176 $sitesIterator = Iblock\IblockSiteTable::getList(array(
177 'select' => array('IBLOCK_ID', 'SITE_ID'),
178 'filter' => array('@IBLOCK_ID' => $iblockList),
179 'order' => array('IBLOCK_ID' => 'ASC', 'SITE_ID' => 'ASC')
180 ));
181 while ($site = $sitesIterator->fetch())
182 $siteList[$site['IBLOCK_ID']][] = $site['SITE_ID'];
183 unset($site, $sitesIterator);
184 foreach ($siteList as $siteIblock => $sites)
185 {
186 if ($iblock['SITES'] == implode('|', $sites))
187 $offerList[] = $siteIblock;
188 }
189 unset($siteIblock, $sites);
190 unset($siteList);
191 }
192 unset($iblockList);
193}
194else
195{
196 $productIblock = Iblock\IblockTable::getList(array(
197 'select' => array('ID', 'NAME', 'IBLOCK_TYPE_ID', 'ACTIVE', 'PROPERTY_INDEX'),
198 'filter' => array('=ID' => $catalog['PRODUCT_IBLOCK_ID'])
199 ))->fetch();
200}
201$showSubscription = ($enableSaleRecurring || $catalog['SUBSCRIPTION'] == 'Y');
202$rowDisplay = ($catalog['CATALOG'] == 'Y' ? 'table-row' : 'none');
203
204$control->BeginPrologContent();
205$control->EndPrologContent();
206$control->BeginEpilogContent();
207?>
208 <input type="hidden" name="lang" value="<?= LANGUAGE_ID ?>">
209 <input type="hidden" name="IBLOCK_ID" value="<?= $iblockId ?>">
210<?php
211echo bitrix_sessid_post();
212$control->EndEpilogContent();
213$control->Begin(array(
214 'FORM_ACTION' => 'cat_iblock_catalog_edit.php?lang='.LANGUAGE_ID
215));
216$control->BeginNextFormTab();
217$control->AddViewField('IBLOCK_ID', Loc::getMessage('BX_CAT_IBLOCK_CATALOG_FIELD_IBLOCK_ID'), $iblockId);
218$control->AddViewField('IBLOCK_NAME', Loc::getMessage('BX_CAT_IBLOCK_CATALOG_FIELD_IBLOCK_NAME'), $iblock['NAME']);
219$control->AddViewField('IBLOCK_TYPE', Loc::getMessage('BX_CAT_IBLOCK_CATALOG_FIELD_IBLOCK_TYPE'), $iblock['TYPE']);
220$control->AddViewField('IBLOCK_SITE', Loc::getMessage('BX_CAT_IBLOCK_CATALOG_FIELD_IBLOCK_SITES'), $iblock['SITES']);
221$control->AddViewField(
222 'IBLOCK_ACTIVE',
223 Loc::getMessage('BX_CAT_IBLOCK_CATALOG_FIELD_IBLOCK_ACTIVE'),
224 ($iblock['ACTIVE'] == 'Y' ? Loc::getMessage('BX_CAT_IBLOCK_CATALOG_MESS_YES') : Loc::getMessage('BX_CAT_IBLOCK_CATALOG_MESS_NO'))
225);
226$control->BeginCustomField('CATALOG', Loc::getMessage('BX_CAT_IBLOCK_CATALOG_FIELD_CATALOG'), true);
227?><tr id="tr_CATALOG">
228 <td style="width: 40%;"><?= $control->GetCustomLabelHTML() ?></td>
229 <td style="width: 60%;">
230 <input type="hidden" name="CATALOG" value="N" id="CATALOG_N">
231 <input data-checkbox="Y" type="checkbox" name="CATALOG" value="Y" id="CATALOG_Y"<?php
232 echo ($catalog['CATALOG'] == 'Y' ? ' checked' : '').($catalog['CATALOG_TYPE'] == CCatalogSKU::TYPE_OFFERS ? ' disabled' : '');
233 ?>>
234 </td>
235</tr><?php
236$control->EndCustomField('CATALOG', '<input type="hidden" name="CATALOG" value="'.$catalog['CATALOG'].'">');
238$control->BeginCustomField('SKU', Loc::getMessage('BX_CAT_IBLOCK_CATALOG_FIELD_SKU'));
239?><tr id="tr_SKU">
240 <td style="width: 40%; vertical-align: top;"><?= $control->GetCustomLabelHTML(); ?></td>
241 <td style="width: 60%;"><?php
243 if ($catalog['CATALOG_TYPE'] == CCatalogSKU::TYPE_OFFERS)
244 {
245 ?><input type="hidden" name="USE_SKU" value="N" id="USE_SKU_N"><?php
246 $hiddenValue = '<input type="hidden" name="USE_SKU" value="N">';
247 if (empty($productIblock))
248 {
249 echo Loc::getMessage('BX_CAT_IBLOCK_CATALOG_ERR_BAD_PRODUCT_IBLOCK', array('#ID#' => $catalog['PRODUCT_IBLOCK_ID']));
250 }
251 else
252 {
253 echo Loc::getMessage(
254 'BX_CAT_IBLOCK_CATALOG_MESS_PRODUCT_IBLOCK',
255 array(
256 '#LINK#' => '',
257 '#TITLE#' => '['.$productIblock['ID'].'] '.htmlspecialcharsEx($productIblock['NAME'])
258 )
259 );
260 }
261 $productIblockId = $catalog['PRODUCT_IBLOCK_ID'];
262 ?><input type="hidden" name="SKU" value="<?= $productIblockId ?>"><?php
263 }
264 else
265 {
266 if ($catalog['CATALOG_TYPE'] == CCatalogSKU::TYPE_PRODUCT || $catalog['CATALOG_TYPE'] == CCatalogSKU::TYPE_FULL)
267 $productIblockId = $catalog['IBLOCK_ID'];
269 $hiddenValue = '<input type="hidden" name="USE_SKU" value="'.($showSku ? 'Y' : 'N').'">';
270 ?><input type="hidden" name="USE_SKU" value="N" id="USE_SKU_N">
271 <input data-checkbox="Y" type="checkbox" name="USE_SKU" value="Y" id="USE_SKU_Y"<?= ($showSku ? ' checked' : '') ?>>
272 <div id="sku_data" style="display: <?= ($showSku ? 'block' : 'none') ?>;">
273 <?php
274 if (!empty($offerList))
275 {
278 'SKU_TYPE',
279 'SKU',
280 array(
281 'ID' => $offerList,
282 'MIN_PERMISSION' => 'R'
283 )
284 );
285 }
286 else
287 {
288 echo Loc::getMessage('BX_CAT_IBLOCK_CATALOG_MESS_EMPTY_OFFERS_LIST');
289 }
290 ?></div><?php
291 }
292 ?></td>
293</tr><?php
294$hiddenValue .= '<input type="hidden" name="SKU" value="'.$productIblockId.'">';
295$control->EndCustomField('SKU', $hiddenValue);
296unset($hiddenValue);
298{
299 $hiddenValue = $catalog['SUBSCRIPTION'];
300 $control->BeginCustomField('SUBSCRIPTION', Loc::getMessage('BX_CAT_IBLOCK_CATALOG_FIELD_SUBSCRIPTION'));
301 ?>
302 <tr id="tr_SUBSCRIPTION" style="display: <?= $rowDisplay ?>;">
303 <td style="width: 40%;"><?= $control->GetCustomLabelHTML(); ?></td>
304 <td style="width: 60%;"><?php
306 {
307 $subscriptionWithSku = ($catalog['CATALOG_TYPE'] == CCatalogSKU::TYPE_PRODUCT || $catalog['CATALOG_TYPE'] == CCatalogSKU::TYPE_FULL);
308 ?><input type="hidden" name="SUBSCRIPTION" value="N" id="SUBSCRIPTION_N">
309 <input data-checkbox="Y" type="checkbox" name="SUBSCRIPTION" value="Y" id="SUBSCRIPTION_Y"<?php
310 echo ($catalog['SUBSCRIPTION'] == 'Y' ? ' checked' : '').(
311 $subscriptionWithSku ? ' disabled' : ''
312 );
313 ?>><?php
314 if ($subscriptionWithSku && $catalog['SUBSCRIPTION'] == 'Y')
315 {
316 $hiddenValue = 'N';
317 ?><br><?php
318 echo Loc::getMessage('BX_CAT_IBLOCK_CATALOG_MESS_SUBSCRIPTION_WITH_SKU');
319 }
320 unset($subscriptionWithSku);
321 }
322 else
323 {
324 ?><input data-checkbox="Y" type="checkbox" name="SUBSCRIPTION" value="Y" id="SUBSCRIPTION_Y" checked disabled>
325 <input type="hidden" name="SUBSCRIPTION" value="N" id="SUBSCRIPTION_N"><br><?php
326 echo Loc::getMessage('BX_CAT_IBLOCK_CATALOG_MESS_SUBSCRIPTION_RESET');
327 $hiddenValue = 'N';
328 }
329 ?></td>
330 </tr><?php
331 $control->EndCustomField('SUBSCRIPTION', '<input type="hidden" name="SUBSCRIPTION" value="'.$hiddenValue.'">');
332 unset($hiddenValue);
333}
334$control->BeginCustomField('YANDEX_EXPORT', Loc::getMessage('BX_CAT_IBLOCK_CATALOG_FIELD_YANDEX_EXPORT'));
335$hiddenValue = $catalog['YANDEX_EXPORT'];
336?>
337<tr id="tr_YANDEX_EXPORT" style="display: <?= $rowDisplay ?>;">
338 <td style="width: 40%;"><?= $control->GetCustomLabelHTML() ?></td>
339 <td style="width: 60%;">
340 <input type="hidden" id="YANDEX_EXPORT_N" name="YANDEX_EXPORT" value="N">
341 <input type="checkbox" id="YANDEX_EXPORT_Y" name="YANDEX_EXPORT" value="Y"<?= ($catalog['YANDEX_EXPORT'] == 'Y' ? ' checked' : '') ?>>
342 </td>
343</tr><?php
344$control->EndCustomField('YANDEX_EXPORT', $hiddenValue);
345unset($hiddenValue);
346
347$control->BeginCustomField('VAT_ID', Loc::getMessage('BX_CAT_IBLOCK_CATALOG_FIELD_VAT_ID'));
348$hiddenValue = $catalog['VAT_ID'];
349?><tr id="tr_VAT_ID" style="display: <?= $rowDisplay ?>;">
350 <td style="width: 40%;"><?= $control->GetCustomLabelHTML(); ?></td>
351 <td style="width: 60%;">
352 <select name="VAT_ID">
353 <?php
354 foreach ($vatList as $vatId => $vatName)
355 {
356 ?><option value="<?= $vatId; ?>"<?= ($catalog['VAT_ID'] == $vatId ? ' selected' : ''); ?>><?= htmlspecialcharsEx($vatName); ?></option><?php
357 }
358 unset($vatId, $vatName);
359 ?>
360 </select>
361 </td>
362</tr><?php
363$control->EndCustomField('VAT_ID', $hiddenValue);
364
366 title: '".CUtil::JSEscape(Loc::getMessage('BX_CAT_IBLOCK_CATALOG_BTN_SAVE'))."',
367 id: 'saveCatalogBtn',
368 name: 'saveCatalogBtn',
369 className: 'adm-btn-save',
370}";
372 title: '".CUtil::JSEscape(Loc::getMessage('BX_CAT_IBLOCK_CATALOG_BTN_CANCEL'))."',
373 name: 'cancelCatalogBtn',
374 id: 'cancelCatalogBtn',
375 action: function() {
376 top.BX.WindowManager.Get().AllowClose(); top.BX.WindowManager.Get().Close();
377 if (!!top.ReloadSubList)
378 top.ReloadSubList();
379 }
380}";
381$control->ButtonsPublic(array(
382 $save,
383 $cancel
384));
385unset($cancel, $save);
386
387$control->Show();
388
389unset($rowDisplay);
390
391echo BeginNote('id="'.$iblockCatalogFormID.'_process" style="display: none"');
392
394{
395
396}
397echo EndNote();
400{
401
402}
404 'containerId' => $iblockCatalogFormID,
405 'enableSaleRecurring' => $enableSaleRecurring,
406 'isSku' => ($catalog['CATALOG_TYPE'] == CCatalogSKU::TYPE_OFFERS),
407 'processBlockId' => $iblockCatalogFormID.'_process',
408 'buttons' => array(
409 'save' => 'saveCatalogBtn',
410 'cancel' => 'cancelCatalogBtn'
411 ),
412 'ajaxSteps' => $ajaxSteps
413);
414?><script>
415var iblockCatalogControl = new BX.Catalog.Admin.IblockCatalog(<?= CUtil::PhpToJSObject($jsParams, false, false, true) ?>);
416BX.ready(function()
417{
418 top.BX.WindowManager.Get().adjustSizeEx();
419});
420</script><?php
421unset($jsParams);
422
423require($_SERVER['DOCUMENT_ROOT'].'/bitrix/modules/main/include/epilog_admin.php');
return select
Определения access_edit.php:440
global $APPLICATION
Определения include.php:80
$jsParams
Определения catalog_reindex.php:168
if(!Loader::includeModule('catalog')) if(!AccessController::getCurrent() ->check(ActionDictionary::ACTION_PRICE_EDIT)) if(!check_bitrix_sessid()) $request
Определения catalog_reindex.php:36
$tabList
Определения catalog_reindex.php:107
Определения loader.php:13
Определения admin_lib.php:2166
Определения subelement.php:1462
static closeSubForm($reload=true, $closeWait=true)
Определения subelement.php:1837
$sites
Определения clear_component_cache.php:15
</td ></tr ></table ></td ></tr >< tr >< td class="bx-popup-label bx-width30"><?=GetMessage("PAGE_NEW_TAGS")?> array( $site)
Определения file_new.php:804
bx_acc_lim_group_list limitGroupList[] multiple<?=$group[ 'ID']?> ID selected margin top
Определения file_new.php:657
EndNote()
Определения filter_tools.php:601
BeginNote($sParams='', $sMessParams='')
Определения filter_tools.php:589
Form FILTER_ACTION disabled
Определения options.php:358
GetIBlockDropDownListEx($IBLOCK_ID, $strTypeName, $strIBlockName, $arFilter=false, $onChangeType='', $onChangeIBlock='', $strAddType='', $strAddIBlock='')
Определения iblock.php:632
$save
Определения iblock_catalog_edit.php:365
$readOnly
Определения iblock_catalog_edit.php:19
$hiddenValue
Определения iblock_catalog_edit.php:237
$showSubscription
Определения iblock_catalog_edit.php:201
$iblockId
Определения iblock_catalog_edit.php:30
$catalogEdit
Определения iblock_catalog_edit.php:31
$postParams
Определения iblock_catalog_edit.php:50
$showSku
Определения iblock_catalog_edit.php:268
$ajaxSteps
Определения iblock_catalog_edit.php:398
$control
Определения iblock_catalog_edit.php:61
$iblockCatalogFormID
Определения iblock_catalog_edit.php:60
$defaultValues
Определения iblock_catalog_edit.php:124
$enableSaleRecurring
Определения iblock_catalog_edit.php:39
$productIblock
Определения iblock_catalog_edit.php:143
$offerList
Определения iblock_catalog_edit.php:142
$listUrl
Определения iblock_catalog_edit.php:54
$vatIterator
Определения iblock_catalog_edit.php:66
$errors
Определения iblock_catalog_edit.php:74
$catalog
Определения iblock_catalog_edit.php:135
$productIblockId
Определения iblock_catalog_edit.php:242
$rowDisplay
Определения iblock_catalog_edit.php:202
$cancel
Определения iblock_catalog_edit.php:371
if(! $catalogEdit->isSuccess()) $iblock
Определения iblock_catalog_edit.php:38
$iblockList
Определения iblock_catalog_list.php:271
while($arParentIBlockProperty=$dbParentIBlockProperty->Fetch()) $errorMessage
$_SERVER["DOCUMENT_ROOT"]
Определения cron_frame.php:9
bitrix_sessid_post($varname='sessid', $returnInvocations=false)
Определения tools.php:4700
check_bitrix_sessid($varname='sessid')
Определения tools.php:4686
bitrix_sessid()
Определения tools.php:4656
ShowError($strError, $cls="errortext")
Определения tools.php:4499
htmlspecialcharsEx($str)
Определения tools.php:2685
if( $daysToExpire >=0 &&$daysToExpire< 60 elseif)( $daysToExpire< 0)
Определения prolog_main_admin.php:393
die
Определения quickway.php:367
font style
Определения invoice.php:442
$vat
Определения template.php:273
$post
Определения template.php:8
$siteList
Определения options.php:47
$site
Определения yandex_run.php:614
$fields
Определения yandex_run.php:501
$vatList
Определения yandex_run.php:916