17Loc::loadMessages(__FILE__);
32 $error = new \Bitrix\Landing\Error;
34 $landing = Landing::createInstance($lid, [
38 if ($landing->exist())
40 $block = intval($block);
41 $blocks = $landing->getBlocks();
42 if (isset($blocks[$block]))
45 if (mb_strpos($selector,
'@') !==
false)
47 [$selector, $position] = explode(
'@', $selector);
54 mb_strtolower(
$action) ==
'clonecard' &&
58 $res = $blocks[$block]->$action(
68 $res = $blocks[$block]->$action($selector, $position);
72 $result->setResult($blocks[$block]->save());
74 if ($blocks[$block]->getError()->isEmpty())
78 $result->setError($blocks[$block]->getError());
84 Loc::getMessage(
'LANDING_BLOCK_NOT_FOUND')
88 $result->setError($landing->getError());
101 public static function cloneCard($lid, $block, $selector,
bool $preventHistory =
false)
103 Landing::setEditMode();
104 $preventHistory ? History::deactivate() : History::activate();
106 return self::cardAction(
'cloneCard', $lid, $block, $selector);
118 public static function addCard($lid, $block, $selector,
$content,
bool $preventHistory =
false)
120 Landing::setEditMode();
121 $preventHistory ? History::deactivate() : History::activate();
123 return self::cardAction(
142 public static function removeCard($lid, $block, $selector,
bool $preventHistory =
false)
144 Landing::setEditMode();
145 $preventHistory ? History::deactivate() : History::activate();
147 return self::cardAction(
'removeCard', $lid, $block, $selector);
159 $error = new \Bitrix\Landing\Error;
162 Landing::setEditMode();
164 $landing = Landing::createInstance($lid, [
165 'blocks_id' => $block
167 if ($landing->exist())
169 $block = intval($block);
170 $blocks = $landing->getBlocks();
171 if (isset($blocks[$block]))
173 $currBlock = $blocks[$block];
175 $result->setResult($currBlock->save());
176 $result->setError($currBlock->getError());
177 if ($currBlock->getError()->isEmpty())
186 Loc::getMessage(
'LANDING_BLOCK_NOT_FOUND')
190 $result->setError($landing->getError());
206 $error = new \Bitrix\Landing\Error;
210 Landing::setEditMode();
212 $preventHistory ? History::deactivate() : History::activate();
215 foreach (
$data as $selector => $value)
217 if (mb_strpos($selector,
'@') !==
false)
219 [$selector, $position] = explode(
'@', $selector);
229 $content[$selector][$position] = $value;
234 $landing = Landing::createInstance($lid, [
235 'blocks_id' => $block
238 if ($landing->exist())
240 $block = intval($block);
241 $blocks = $landing->getBlocks();
242 if (isset($blocks[$block]))
244 $blocks[$block]->changeNodeName(
$content);
245 $result->setResult($blocks[$block]->save());
246 $result->setError($blocks[$block]->getError());
247 if ($blocks[$block]->getError()->isEmpty())
256 Loc::getMessage(
'LANDING_BLOCK_NOT_FOUND')
260 $result->setError($landing->getError());
266 Loc::getMessage(
'LANDING_BLOCK_NODES_NOT_FOUND')
283 $error = new \Bitrix\Landing\Error;
286 Landing::setEditMode();
288 $preventHistory ? History::deactivate() : History::activate();
290 $landing = Landing::createInstance($lid, [
291 'blocks_id' => $block
294 if ($landing->exist())
296 $block = intval($block);
297 $blocks = $landing->getBlocks();
298 if (isset($blocks[$block]))
300 $blocks[$block]->setAnchor(
$data);
301 $result->setResult($blocks[$block]->save());
302 $result->setError($blocks[$block]->getError());
303 if ($blocks[$block]->getError()->isEmpty())
312 Loc::getMessage(
'LANDING_BLOCK_NOT_FOUND')
316 $result->setError($landing->getError());
332 $error = new \Bitrix\Landing\Error;
335 $attributes =
array();
336 $components =
array();
339 $dynamicParamsExists =
false;
340 $block = intval($block);
342 Landing::setEditMode();
343 $preventHistory ? History::deactivate() : History::activate();
346 if (isset(
$data[
'dynamicState']) || isset(
$data[
'dynamicBlock']))
348 $dynamicParamsExists =
true;
349 $landing = Landing::createInstance($lid, [
350 'blocks_id' => $block
352 if ($landing->exist())
354 if ($blockCurrent = $landing->getBlockById($block))
356 $manifest = $blockCurrent->getManifest();
358 !isset($manifest[
'block'][
'dynamic']) ||
359 $manifest[
'block'][
'dynamic'] !==
false
363 if (isset(
$data[
'dynamicParams']))
365 $dynamicParams =
$data[
'dynamicParams'];
366 unset(
$data[
'dynamicParams']);
370 $dynamicParams = $blockCurrent->getDynamicParams();
373 if (isset(
$data[
'dynamicState']))
375 foreach ((
array)
$data[
'dynamicState'] as $selector => $flag)
377 if (!
Utils::isTrue($flag) && isset($dynamicParams[$selector]))
379 unset($dynamicParams[$selector]);
383 $blockCurrent->saveDynamicParams(
393 Loc::getMessage(
'LANDING_BLOCK_NOT_FOUND')
398 $result->setError($landing->getError());
402 if (!
$result->getError()->isEmpty())
408 foreach (
$data as $selector => $value)
410 if (mb_strpos($selector,
'@') !==
false)
412 [$selector, $position] = explode(
'@', $selector);
418 if (!isset(
$data[$selector]))
422 if (isset($value[
'attrs']) &&
count($value) == 1)
424 if (mb_strpos($selector,
':') !==
false)
426 $components[$selector] = $value[
'attrs'];
430 $attributes[$selector][$position] = $value[
'attrs'];
439 $content[$selector][max(0, $position)] = $value;
444 if (!empty(
$content) || !empty($attributes) || !empty($components))
446 if (!isset($landing))
448 $landing = Landing::createInstance($lid, [
449 'blocks_id' => $block
453 if ($landing->exist())
455 $blocks = $landing->getBlocks();
456 if (isset($blocks[$block]))
460 $blocks[$block]->updateNodes(
$content, $additional);
462 if (!empty($attributes))
464 $blocks[$block]->setAttributes($attributes);
466 if (!empty($components))
469 if (!$blocks[$block]->getRepoId())
471 $manifest = $blocks[$block]->getManifest();
472 foreach ($components as $selector => &$attrs)
475 isset($manifest[
'nodes'][$selector][
'waf_ignore']) &&
476 $manifest[
'nodes'][$selector][
'waf_ignore']
479 $rawData = \Bitrix\Landing\PublicAction::getRawData();
480 if (isset($rawData[
'data'][$selector][
'attrs']))
482 $rawAttrs = $rawData[
'data'][$selector][
'attrs'];
483 foreach ($attrs as $attCode => &$attValue)
485 $attValue = $rawAttrs[$attCode];
492 $blocks[$block]->updateNodes($components, $additional);
495 $blocks[$block]->saveContent(
497 'contenteditable="true"',
502 $result->setResult($blocks[$block]->save());
503 $result->setError($blocks[$block]->getError());
504 if ($blocks[$block]->getError()->isEmpty())
513 Loc::getMessage(
'LANDING_BLOCK_NOT_FOUND')
517 $result->setError($landing->getError());
519 else if (!$dynamicParamsExists)
523 Loc::getMessage(
'LANDING_BLOCK_NODES_NOT_FOUND')
542 $error = new \Bitrix\Landing\Error;
545 Landing::setEditMode();
548 $landing = Landing::createInstance($lid, [
549 'blocks_id' => $block
551 if ($landing->exist())
553 $block = intval($block);
554 $blocks = $landing->getBlocks();
555 if (isset($blocks[$block]))
559 $blocks[$block]->$method(
$data);
561 $result->setResult($blocks[$block]->save());
562 $result->setError($blocks[$block]->getError());
563 if ($blocks[$block]->getError()->isEmpty())
572 Loc::getMessage(
'LANDING_BLOCK_NOT_FOUND')
576 $result->setError($landing->getError());
592 $preventHistory ? History::deactivate() : History::activate();
595 foreach (
$data as $selector => $value)
597 $lastResult = self::updateAttributes($lid, $block, [$selector => $value],
'setClasses');
611 foreach (
$data as $selector => $value)
613 if (mb_strpos($selector,
'@') !==
false)
615 unset(
$data[$selector]);
616 [$selector, $pos] = explode(
'@', $selector);
618 !isset(
$data[$selector]) ||
619 !is_array(
$data[$selector])
622 $data[$selector] = [];
624 $data[$selector][$pos] = $value;
627 return self::updateAttributes($lid, $block,
$data,
'setAttributes');
641 $error = new \Bitrix\Landing\Error;
645 Landing::setEditMode();
649 $landing = Landing::createInstance($lid, [
650 'blocks_id' => $block
653 if ($landing->exist())
655 $block = intval($block);
656 $blocks = $landing->getBlocks();
657 if (isset($blocks[$block]))
665 BlockCore::getBlockContent(
666 $blocks[$block]->getId(),
676 Loc::getMessage(
'LANDING_BLOCK_NOT_FOUND')
680 $result->setError($landing->getError());
697 $error = new \Bitrix\Landing\Error;
699 Landing::setEditMode();
703 if (!
Restriction\Manager::isAllowed(
'limit_crm_superblock'))
709 if (strpos(
$content,
'block-wrapper'))
711 $content = preg_replace(
'/^<div.*?class="[^"]*block-wrapper[\s"][^>]+>(.*?)<\/div>$/is',
'$1',
$content);
714 $landing = Landing::createInstance($lid, [
715 'blocks_id' => $block
718 if ($landing->exist())
720 $block = intval($block);
721 $blocks = $landing->getBlocks();
722 if (isset($blocks[$block]))
734 $filesRest = array_intersect($filesBeforeSave, $filesAfterSave);
736 foreach ($filesBeforeSave as $fileId)
738 if (!in_array($fileId, $filesRest))
740 $filesDelete[] = $fileId;
748 if (!$preventHistory)
751 $history =
new History($lid, History::ENTITY_TYPE_LANDING);
752 $history->push(
'UPDATE_CONTENT', [
753 'block' => $blocks[$block]->getId(),
754 'contentBefore' => $blocks[$block]->
getContent(),
755 'contentAfter' => $newContent,
756 'designed' => $designed,
761 History::deactivate();
765 $blocks[$block]->saveContent(
769 Assets\PreProcessing::blockUpdateNodeProcessing(
773 $blocks[$block]->save()
775 $result->setError($blocks[$block]->getError());
781 Loc::getMessage(
'LANDING_BLOCK_NOT_FOUND')
785 $result->setError($landing->getError());
798 $block = intval($block);
800 $lid = BlockCore::getLandingIdByBlockId($block);
803 $landing = Landing::createInstance($lid);
804 if ($landing->exist())
808 subSection:
'from_editor',
811 $result->setResult($landing->publication($block, $metrikaParams));
813 $result->setError($landing->getError());
827 static $mixedParams = [
'lid'];
830 $lids = is_array($lid) ? $lid : [$lid];
838 Landing::setEditMode();
843 foreach ($lids as $lid)
846 $landing = Landing::createInstance($lid,
array(
849 if ($landing->exist())
851 foreach ($landing->getBlocks() as
$i => $block)
853 if ($manifest = $block->getManifest())
856 'id' => $block->getId(),
858 'code' => $block->getCode(),
859 'name' => $manifest[
'block'][
'name'],
860 'active' => $block->isActive(),
861 'meta' => $block->getMeta()
865 foreach (
$data[
$i][
'meta'] as &$meta)
867 $meta = (string)$meta;
873 isset(
$params[
'get_content']) &&
878 $block->view(
false, $landing);
879 $data[
$i][
'content'] = ob_get_contents();
880 $data[
$i][
'css'] = $block->getCSS();
881 $data[
$i][
'js'] = $block->getJS();
887 $result->setError($landing->getError());
903 $error = new \Bitrix\Landing\Error;
905 $block = (int)$block;
908 $lid = BlockCore::getLandingIdByBlockId($block);
912 $blocks = self::getList($lid,
$params)->getResult();
913 foreach ($blocks as $item)
915 if ($item[
'id'] == $block)
925 Loc::getMessage(
'LANDING_BLOCK_NOT_FOUND')
941 $error = new \Bitrix\Landing\Error;
949 Landing::setEditMode();
952 $landing = Landing::createInstance($lid, [
953 'blocks_id' => $block
956 if ($landing->exist())
958 $block = intval($block);
959 $blocks = $landing->getBlocks();
960 if (isset($blocks[$block]))
962 $manifest = $blocks[$block]->getManifest();
963 $manifest[
'preview'] = $blocks[$block]->getPreview();
964 $manifest[
'assets'] = $blocks[$block]->getAsset();
971 Loc::getMessage(
'LANDING_BLOCK_NOT_FOUND')
976 $result->setError($landing->getError());
991 if (mb_strpos(
$code,
':') ===
false)
1027 if ($section ===
null)
1034 (is_string($section) && isset($repo[$section])) ? $repo[$section] :
false
1052 static $mixedParams = [
'picture'];
1055 $error = new \Bitrix\Landing\Error;
1056 $block = intval($block);
1058 $landing = Landing::createInstance(
1059 BlockCore::getLandingIdByBlockId($block),
1060 [
'skip_blocks' =>
true]
1063 if ($landing->exist())
1070 'id' => $file[
'ID'],
1071 'src' => $file[
'SRC']
1078 Loc::getMessage(
'LANDING_FILE_ERROR')
1087 Loc::getMessage(
'LANDING_BLOCK_NOT_FOUND')
1102 static $internal =
true;
1110 'ID' => $file[
'OBJECT_ID'],
1111 'NAME' => $file[
'NAME']
1131 ->addAsset($extCodes)
1134 foreach ($tplCodes as $tpl)
1137 (defined(
'SITE_TEMPLATE_PATH') ? SITE_TEMPLATE_PATH :
'/bitrix/templates/.default');
1138 $style = $siteTemplatePath .
"/template_styles.css";
1139 $assetsManager->addAsset($style);
1142 $result->setResult($assetsManager->getOutput());
static getFileInfo(int $objectId, bool $checkRights=true, bool $copyInLocalStorage=false)
static addToBlock(int $blockId, $fileId, bool $temp=false)
static deleteFromBlock($blockId, $fileId=array())
static getFilesFromBlockContent($blockId, $content)
static sanitize($value, &$bad=false, $splitter=' ')
static savePicture($file, $ext=false, $params=array())
static getById($block, array $params=array())
static cloneCard($lid, $block, $selector, bool $preventHistory=false)
static getRepository($section=null)
static publication($block)
static getManifestFile($code)
static addCard($lid, $block, $selector, $content, bool $preventHistory=false)
static removeCard($lid, $block, $selector, bool $preventHistory=false)
static getContentFromRepository($code)
static uploadFile($block, $picture, $ext=false, array $params=[], $temp=false)
static updateCards($lid, $block, array $data)
static updateStyles($lid, $block, array $data, bool $preventHistory=false)
static getFileDisk(int $fileId)
static getContent($lid, $block, $editMode=false, array $params=array())
static getAssetsConfig(array $extCodes, array $tplCodes=[])
static getManifest($lid, $block, array $params=array())
static updateAttrs($lid, $block, array $data)
static changeNodeName($lid, $block, array $data, bool $preventHistory=false)
static updateContent($lid, $block, $content, $designed=false, bool $preventHistory=false)
static getList($lid, array $params=array())
static updateNodes($lid, $block, array $data, array $additional=array(), bool $preventHistory=false)
static changeAnchor($lid, $block, $data, bool $preventHistory=false)
</td ></tr ></table ></td ></tr >< tr >< td class="bx-popup-label bx-width30"><?=GetMessage("PAGE_NEW_TAGS")?> array( $site)
if(!is_null($config))($config as $configItem)(! $configItem->isVisible()) $code
</p ></td >< td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;padding:0cm 2.0pt 0cm 2.0pt;height:9.0pt'>< p class=Normal align=center style='margin:0cm;margin-bottom:.0001pt;text-align:center;line-height:normal'>< a name=ТекстовоеПоле54 ></a ><?=($taxRate > count( $arTaxList) > 0) ? $taxRate."%"
if($inWords) echo htmlspecialcharsbx(Number2Word_Rus(roundEx($totalVatSum $params['CURRENCY']