31 private $collectionFactory;
36 private $storesVariables;
52 \
Magento\Framework\View\Asset\Repository $assetRepo,
58 $this->collectionFactory = $collectionFactory ?: ObjectManager::getInstance()
60 $this->storesVariables = $storesVariables ?: ObjectManager::getInstance()
62 $this->encoder = $encoder ?: ObjectManager::getInstance()
65 $this->_assetRepo = $assetRepo;
78 'search' => [
'html_id'],
79 'subject' =>
'MagentovariablePlugin.loadChooser(\'' .
81 '\', \
'{{html_id}}\');',
85 'name' =>
'magentovariable',
88 'title' =>
__(
'Insert Variable...'),
90 'onclick' => $onclickParts,
91 'class' =>
'add-variable plugin',
92 'placeholders' => $this->getVariablesWysiwygData()
96 $configPlugins = (array)
$config->getData(
'plugins');
97 $variableConfig[
'plugins'] = array_merge($configPlugins, $variableWysiwyg);
98 return $variableConfig;
109 $editorPluginJs =
'mage/adminhtml/wysiwyg/tiny_mce/plugins/magentovariable/editor_plugin.js';
110 return $this->_assetRepo->getUrl($editorPluginJs);
121 return $this->_url->getUrl(
'mui/index/render', [
'namespace' =>
'variables_modal']);
129 private function getDefaultVariables()
132 foreach ($this->storesVariables->getData() as
$variable) {
148 private function getCustomVariables()
150 $customVariables = $this->collectionFactory->create();
153 foreach ($customVariables->getData() as
$variable) {
157 'variable_type' =>
'custom' 169 private function getVariablesWysiwygData()
171 $variablesData = array_merge(
172 $this->getCustomVariables(),
173 $this->getDefaultVariables()
175 return $this->encoder->serialize($variablesData);
__construct(\Magento\Framework\View\Asset\Repository $assetRepo, \Magento\Backend\Model\UrlInterface $url, \Magento\Variable\Model\ResourceModel\Variable\CollectionFactory $collectionFactory=null, \Magento\Variable\Model\Source\Variables $storesVariables=null, \Magento\Framework\Serialize\Serializer\Json $encoder=null)
const DEFAULT_VARIABLE_TYPE
getVariablesWysiwygActionUrl()
getWysiwygPluginSettings($config)