31 $doc = $block->getDom();
32 $resultList = $doc->querySelectorAll($selector);
33 $valueBefore = static::getNode($block, $selector);
36 foreach (
$data as $pos => $value)
39 $src = (isset($value[
'src']) && is_string($value[
'src'])) ? trim($value[
'src']) :
'';
40 $src2x = (isset($value[
'src2x']) && is_string($value[
'src2x'])) ? trim($value[
'src2x']) :
'';
41 $alt = (isset($value[
'alt']) && is_string($value[
'alt'])) ? trim($value[
'alt']) :
'';
42 $id = isset($value[
'id']) ? intval($value[
'id']) : 0;
43 $id2x = isset($value[
'id2x']) ? intval($value[
'id2x']) : 0;
44 $isLazy = isset($value[
'isLazy']) && $value[
'isLazy'] ===
'Y';
48 $src = str_replace(
'http://',
'https://', $src);
52 $src2x = str_replace(
'http://',
'https://', $src2x);
55 if (isset($value[
'url']))
57 $url = is_array($value[
'url'])
58 ? json_encode($value[
'url'])
66 if (isset($resultList[$pos]))
75 if (!in_array($id,
$files))
79 if (!in_array($id2x,
$files))
85 if ($resultList[$pos]->getTagName() !==
'IMG')
87 $styles = StyleInliner::getStyle($resultList[$pos]);
91 foreach ($styles as
$key => $styleValue)
93 if (
$key !==
'background' &&
$key !==
'background-image')
95 $oldStyles[] =
"{$key}: {$styleValue};";
103 "background-image: url('{$src}');",
107 $newStyles = array_merge(
110 "background-image: -webkit-image-set(url('{$src}') 1x, url('{$src2x}') 2x);",
111 "background-image: image-set(url('{$src}') 1x, url('{$src2x}') 2x);",
119 foreach ([
'fileid',
'fileid2x'] as $dataCode)
121 $oldId = $resultList[$pos]->getAttribute(
134 $style = array_merge($oldStyles, $newStyles);
135 $style = implode(
' ', $style);
136 $resultList[$pos]->setAttribute(
'style', $style);
141 $resultList[$pos]->setAttribute(
'data-lazy-bg',
'Y');
142 $lazyOrigSrc = ($value[
'lazyOrigSrc'] ??
null);
145 $resultList[$pos]->setAttribute(
'data-src', $lazyOrigSrc);
147 $lazyOrigSrc2x = ($value[
'lazyOrigSrc2x'] ??
null);
150 $resultList[$pos]->setAttribute(
'data-src2x', $lazyOrigSrc2x);
152 $lazyOrigStyle = ($value[
'lazyOrigStyle'] ??
null);
155 $resultList[$pos]->setAttribute(
'data-style', $lazyOrigStyle);
161 $resultList[$pos]->setAttribute(
'alt', $alt);
162 $resultList[$pos]->setAttribute(
'src', $src);
165 $resultList[$pos]->setAttribute(
'srcset',
"{$src2x} 2x");
169 $resultList[$pos]->setAttribute(
'srcset',
'');
175 $resultList[$pos]->setAttribute(
'data-lazy-img',
'Y');
176 $resultList[$pos]->setAttribute(
'loading',
'lazy');
177 if ($lazyOrigSrc = $value[
'lazyOrigSrc'])
179 $resultList[$pos]->setAttribute(
'data-src', $lazyOrigSrc);
181 if ($lazyOrigSrcset = $value[
'lazyOrigSrcset'])
183 $resultList[$pos]->setAttribute(
'data-srcset', $lazyOrigSrcset);
188 ? $resultList[$pos]->setAttribute(
'data-fileid', $id)
189 : $resultList[$pos]->removeAttribute(
'data-fileid')
192 ? $resultList[$pos]->setAttribute(
'data-fileid2x', $id2x)
193 : $resultList[$pos]->removeAttribute(
'data-fileid2x')
196 ? $resultList[$pos]->setAttribute(
'data-pseudo-url',
$url)
197 : $resultList[$pos]->removeAttribute(
'data-pseudo-url')
200 if (History::isActive())
202 $history =
new History($block->getLandingId(), History::ENTITY_TYPE_LANDING);
203 $history->push(
'EDIT_IMG', [
205 'selector' => $selector,
206 'position' => (
int)$pos,
207 'valueBefore' => $valueBefore[$pos],
208 'valueAfter' => $value,