Skip to content

Commit 0088164

Browse files
committed
Remove wysiwyg editor buttons depending on configuration
1 parent 2b22d62 commit 0088164

File tree

7 files changed

+246
-10
lines changed

7 files changed

+246
-10
lines changed

src/ExampleClass.php

Lines changed: 0 additions & 9 deletions
This file was deleted.

src/Model/Config/Source/Toolbar.php

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
/**
6+
* integer_net Magento Module
7+
*
8+
* @category IntegerNet\ConfigurableWysiwyg\Model\Config\Source
9+
* @package Toolbar
10+
* @copyright Copyright (c) 2020 integer_net GmbH (http://www.integer-net.de/)
11+
* @author Andreas von Studnitz <avs@integer-net.de>
12+
*/
13+
14+
namespace IntegerNet\ConfigurableWysiwyg\Model\Config\Source;
15+
16+
class Toolbar implements \Magento\Framework\Option\ArrayInterface
17+
{
18+
public function toOptionArray()
19+
{
20+
return [
21+
['value' => 'undo', 'label' => __('Undo')],
22+
['value' => 'redo', 'label' => __('Redo')],
23+
['value' => 'formatselect', 'label' => __('Format Select')],
24+
['value' => 'bold', 'label' => __('Bold')],
25+
['value' => 'italic', 'label' => __('Italic')],
26+
['value' => 'underline', 'label' => __('Underline')],
27+
['value' => 'alignleft', 'label' => __('Align Left')],
28+
['value' => 'aligncenter', 'label' => __('Align Center')],
29+
['value' => 'alignright', 'label' => __('Align Right')],
30+
['value' => 'bullist', 'label' => __('Bullet List')],
31+
['value' => 'numlist', 'label' => __('Numbered List')],
32+
['value' => 'link', 'label' => __('Link')],
33+
['value' => 'table', 'label' => __('Table')],
34+
['value' => 'charmap', 'label' => __('Character Map')],
35+
];
36+
}
37+
}
Lines changed: 85 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,85 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
/**
6+
* integer_net Magento Module
7+
*
8+
* @category IntegerNet\ConfigurableWysiwyg\Plugin
9+
* @package WysiwygConfigProviderPlugin
10+
* @copyright Copyright (c) 2020 integer_net GmbH (http://www.integer-net.de/)
11+
* @author Andreas von Studnitz <avs@integer-net.de>
12+
*/
13+
14+
namespace IntegerNet\ConfigurableWysiwyg\Plugin;
15+
16+
use Magento\Cms\Model\Wysiwyg\CompositeConfigProvider;
17+
use Magento\Framework\App\Config\ScopeConfigInterface;
18+
use Magento\Framework\Data\Wysiwyg\ConfigProviderInterface;
19+
20+
class WysiwygConfigProviderPlugin
21+
{
22+
/**
23+
* @var array
24+
*/
25+
private $additionalSettings;
26+
/**
27+
* @var ScopeConfigInterface
28+
*/
29+
private $scopeConfig;
30+
/**
31+
* @var CompositeConfigProvider
32+
*/
33+
private $compositeConfigProvider;
34+
35+
public function __construct(
36+
array $additionalSettings,
37+
ScopeConfigInterface $scopeConfig,
38+
CompositeConfigProvider $compositeConfigProvider
39+
) {
40+
$this->additionalSettings = $additionalSettings;
41+
$this->scopeConfig = $scopeConfig;
42+
$this->compositeConfigProvider = $compositeConfigProvider;
43+
}
44+
45+
public function afterGetConfig(
46+
ConfigProviderInterface $subject,
47+
\Magento\Framework\DataObject $result
48+
) {
49+
$toolbar = implode(' ', explode(',', $this->scopeConfig->getValue('admin/wysiwyg/toolbar')));
50+
51+
$result->setData(
52+
'tinymce4',
53+
[
54+
'toolbar' => $toolbar,
55+
'plugins' => $result->getData('tinymce4')['plugins'],
56+
'content_css' => $result->getData('tinymce4')['content_css'],
57+
]
58+
);
59+
60+
//$result->setData('settings', $this->additionalSettings);
61+
$result->setData('add_variables', $this->scopeConfig->isSetFlag('cms/wysiwyg/add_variable'));
62+
$result->setData('add_widgets', $this->scopeConfig->isSetFlag('cms/wysiwyg/add_widget'));
63+
$result->setData('add_images', $this->scopeConfig->isSetFlag('cms/wysiwyg/add_image'));
64+
65+
$plugins = $result->getData('plugins');
66+
foreach ($plugins as $key => $plugin) {
67+
if ($plugin['name'] == 'magentovariable' && !$this->scopeConfig->isSetFlag('cms/wysiwyg/add_variable')) {
68+
unset($plugins[$key]);
69+
}
70+
if ($plugin['name'] == 'magentowidget' && !$this->scopeConfig->isSetFlag('cms/wysiwyg/add_widget')) {
71+
unset($plugins[$key]);
72+
}
73+
if ($plugin['name'] == 'image' && !$this->scopeConfig->isSetFlag('cms/wysiwyg/add_image')) {
74+
unset($plugins[$key]);
75+
$result->unsetData('files_browser_window_width');
76+
$result->unsetData('files_browser_window_height');
77+
$result->unsetData('files_browser_window_url');
78+
}
79+
}
80+
81+
$result->setData('plugins', array_values($plugins));
82+
83+
return $result;
84+
}
85+
}

src/etc/adminhtml/di.xml

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
<?xml version="1.0"?>
2+
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
3+
xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd">
4+
<type name="Magento\PageBuilder\Model\Wysiwyg\DefaultConfigProvider">
5+
<plugin name="integernet-configurable-wysiwyg"
6+
type="IntegerNet\ConfigurableWysiwyg\Plugin\WysiwygConfigProviderPlugin" sortOrder="10"/>
7+
</type>
8+
<type name="Magento\Cms\Model\Wysiwyg\DefaultConfigProvider">
9+
<plugin name="integernet-configurable-wysiwyg"
10+
type="IntegerNet\ConfigurableWysiwyg\Plugin\WysiwygConfigProviderPlugin" sortOrder="10"/>
11+
</type>
12+
13+
<type name="IntegerNet\ConfigurableWysiwyg\Plugin\WysiwygConfigProviderPlugin">
14+
<arguments>
15+
<argument name="widgetPluginConfigProvider" xsi:type="array">
16+
<item name="default" xsi:type="string">Magento\Widget\Model\Widget\Config</item>
17+
</argument>
18+
<argument name="additionalSettings" xsi:type="array">
19+
<item name="fixed_toolbar_container" xsi:type="string">.pagebuilder-content-type</item>
20+
<item name="style_formats" xsi:type="array">
21+
<item name="paragraph" xsi:type="array">
22+
<item name="title" xsi:type="string">Paragraph</item>
23+
<item name="block" xsi:type="string">p</item>
24+
</item>
25+
<item name="heading1" xsi:type="array">
26+
<item name="title" xsi:type="string">Heading 1</item>
27+
<item name="block" xsi:type="string">h1</item>
28+
</item>
29+
<item name="heading2" xsi:type="array">
30+
<item name="title" xsi:type="string">Heading 2</item>
31+
<item name="block" xsi:type="string">h2</item>
32+
</item>
33+
<item name="heading3" xsi:type="array">
34+
<item name="title" xsi:type="string">Heading 3</item>
35+
<item name="block" xsi:type="string">h3</item>
36+
</item>
37+
<item name="heading4" xsi:type="array">
38+
<item name="title" xsi:type="string">Heading 4</item>
39+
<item name="block" xsi:type="string">h4</item>
40+
</item>
41+
<item name="heading5" xsi:type="array">
42+
<item name="title" xsi:type="string">Heading 5</item>
43+
<item name="block" xsi:type="string">h5</item>
44+
</item>
45+
<item name="heading6" xsi:type="array">
46+
<item name="title" xsi:type="string">Heading 6</item>
47+
<item name="block" xsi:type="string">h6</item>
48+
</item>
49+
</item>
50+
</argument>
51+
</arguments>
52+
</type>
53+
</config>

src/etc/adminhtml/system.xml

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
<?xml version="1.0"?>
2+
3+
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Config:etc/system_file.xsd">
4+
<system>
5+
<section id="cms">
6+
<group id="wysiwyg">
7+
<field id="toolbar"
8+
translate="label"
9+
type="multiselect"
10+
sortOrder="10"
11+
showInDefault="1"
12+
showInWebsite="0"
13+
showInStore="0"
14+
canRestore="1">
15+
<label>Toolbar Elements</label>
16+
<source_model>IntegerNet\ConfigurableWysiwyg\Model\Config\Source\Toolbar</source_model>
17+
</field>
18+
<field id="add_variable"
19+
translate="label"
20+
type="select"
21+
sortOrder="20"
22+
showInDefault="1"
23+
showInWebsite="0"
24+
showInStore="0"
25+
canRestore="1">
26+
<label>Show "Insert Variable" button</label>
27+
<source_model>Magento\Config\Model\Config\Source\Yesno</source_model>
28+
</field>
29+
<field id="add_widget"
30+
translate="label"
31+
type="select"
32+
sortOrder="30"
33+
showInDefault="1"
34+
showInWebsite="0"
35+
showInStore="0"
36+
canRestore="1">
37+
<label>Show "Insert Widget" button</label>
38+
<source_model>Magento\Config\Model\Config\Source\Yesno</source_model>
39+
</field>
40+
<field id="add_image"
41+
translate="label"
42+
type="select"
43+
sortOrder="40"
44+
showInDefault="1"
45+
showInWebsite="0"
46+
showInStore="0"
47+
canRestore="1">
48+
<label>Show "Insert Image" button</label>
49+
<source_model>Magento\Config\Model\Config\Source\Yesno</source_model>
50+
</field>
51+
</group>
52+
</section>
53+
</system>
54+
</config>

src/etc/config.xml

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
<?xml version="1.0"?>
2+
3+
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Store:etc/config.xsd">
4+
<default>
5+
<cms>
6+
<wysiwyg>
7+
<toolbar>undo,redo,formatselect,bold,italic,underline,alignleft,aligncenter,alignright,bullist,numlist,link,table,charmap</toolbar>
8+
<add_variable>1</add_variable>
9+
<add_widget>1</add_widget>
10+
<add_image>1</add_image>
11+
</wysiwyg>
12+
</cms>
13+
</default>
14+
</config>

src/etc/module.xml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@
33
xsi:noNamespaceSchemaLocation="urn:magento:framework:Module/etc/module.xsd">
44
<module name="IntegerNet_ConfigurableWysiwyg">
55
<sequence>
6+
<module name="Magento_Cms"/>
7+
<module name="Magento_PageBuilder"/>
68
</sequence>
79
</module>
8-
</config>
10+
</config>

0 commit comments

Comments
 (0)