Skip to content

Commit 7f0f260

Browse files
committed
magento2/issues/12087: Changes for Widget class.
1 parent f3a160c commit 7f0f260

File tree

1 file changed

+39
-0
lines changed

1 file changed

+39
-0
lines changed

app/code/Magento/Widget/Model/Widget.php

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -304,6 +304,8 @@ public function getWidgetDeclaration($type, $params = [], $asIs = true)
304304
if ($name == 'conditions') {
305305
$name = 'conditions_encoded';
306306
$value = $this->conditionsHelper->encode($value);
307+
} elseif ($this->isTextType($widget, $name)) {
308+
$value = $this->encodeReservedChars($value);
307309
} elseif (is_array($value)) {
308310
$value = implode(',', $value);
309311
} elseif (trim($value) == '') {
@@ -456,4 +458,41 @@ protected function sortParameters($firstElement, $secondElement)
456458
$bOrder = (int)$secondElement->getData('sort_order');
457459
return $aOrder < $bOrder ? -1 : ($aOrder > $bOrder ? 1 : 0);
458460
}
461+
462+
/**
463+
* @param $string
464+
* @return string|string[]
465+
*/
466+
private function encodeReservedChars($string)
467+
{
468+
$map = [
469+
'{' => urlencode('{'),
470+
'}' => urlencode('}')
471+
];
472+
473+
return str_replace(
474+
array_keys($map),
475+
array_values($map),
476+
$string
477+
);
478+
}
479+
480+
/**
481+
* @param $widget
482+
* @param $name
483+
* @return bool
484+
*/
485+
private function isTextType($widget, $name)
486+
{
487+
$parameters = $widget->getParameters();
488+
489+
if (isset($parameters[$name]) && is_object($parameters[$name])) {
490+
$type = $parameters[$name]->getType();
491+
if ($type == 'text') {
492+
return true;
493+
}
494+
}
495+
496+
return false;
497+
}
459498
}

0 commit comments

Comments
 (0)