fix not removed protection in attributes

This commit is contained in:
O3-Shop 2023-04-11 01:05:06 +02:00
parent 7f8caa565a
commit 32c92bdc60
4 changed files with 72 additions and 5 deletions

View File

@ -32,6 +32,7 @@ use O3\TinyMCE\Application\Core\TinyMCE\Options\EntityEncoding;
use O3\TinyMCE\Application\Core\TinyMCE\Options\ExternalPlugins; use O3\TinyMCE\Application\Core\TinyMCE\Options\ExternalPlugins;
use O3\TinyMCE\Application\Core\TinyMCE\Options\FilemanagerUrl; use O3\TinyMCE\Application\Core\TinyMCE\Options\FilemanagerUrl;
use O3\TinyMCE\Application\Core\TinyMCE\Options\ImageAdvtab; use O3\TinyMCE\Application\Core\TinyMCE\Options\ImageAdvtab;
use O3\TinyMCE\Application\Core\TinyMCE\Options\InitInstanceCallback;
use O3\TinyMCE\Application\Core\TinyMCE\Options\Language; use O3\TinyMCE\Application\Core\TinyMCE\Options\Language;
use O3\TinyMCE\Application\Core\TinyMCE\Options\MaxHeight; use O3\TinyMCE\Application\Core\TinyMCE\Options\MaxHeight;
use O3\TinyMCE\Application\Core\TinyMCE\Options\MaxWidth; use O3\TinyMCE\Application\Core\TinyMCE\Options\MaxWidth;
@ -112,6 +113,7 @@ class Configuration
$this->addOption(oxNew(BaseUrl::class, $this->loader)); $this->addOption(oxNew(BaseUrl::class, $this->loader));
$this->addOption(oxNew(CacheSuffix::class, $this->loader)); $this->addOption(oxNew(CacheSuffix::class, $this->loader));
$this->addOption(oxNew(Selector::class, $this->loader)); $this->addOption(oxNew(Selector::class, $this->loader));
$this->addOption(oxNew(InitInstanceCallback::class, $this->loader));
} }
protected function addGuiOptions(): void protected function addGuiOptions(): void

View File

@ -0,0 +1,57 @@
<?php
/**
* This file is part of O3-Shop TinyMCE editor module.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, version 3.
*
* This program is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
* You should have received a copy of the GNU General Public License
* along with O3-Shop. If not, see <http://www.gnu.org/licenses/>
*
* @copyright Copyright (c) 2022 Marat Bedoev, bestlife AG
* @copyright Copyright (c) 2023 O3-Shop (https://www.o3-shop.com)
* @license https://www.gnu.org/licenses/gpl-3.0 GNU General Public License 3 (GPLv3)
*/
declare(strict_types=1);
namespace O3\TinyMCE\Application\Core\TinyMCE\Options;
use O3\TinyMCE\Application\Core\TinyMCE\PluginList;
use O3\TinyMCE\Application\Core\TinyMCE\Plugins\PluginInterface;
use O3\TinyMCE\Application\Core\TinyMCE\Utils;
class InitInstanceCallback extends AbstractOption
{
protected string $key = 'init_instance_callback';
public function get(): string
{
// https://github.com/tinymce/tinymce/issues/2271
$js = <<<JS
function (editor) {
editor.on('PostProcess', function (e) {
e.content = e.content.replace(
/(&lt;!--mce:protected\s)(.*?)(--&gt;)/gm,
function(text, p1, p2, p3){
if (unescape) {
return unescape(p2);
} else {
return decodeURIComponent(p2);
}
}
);
});
}
JS;
return (oxNew(Utils::class))->minifyJS($js);
}
}

View File

@ -23,6 +23,8 @@ declare(strict_types=1);
namespace O3\TinyMCE\Application\Core\TinyMCE\Options; namespace O3\TinyMCE\Application\Core\TinyMCE\Options;
use O3\TinyMCE\Application\Core\TinyMCE\Utils;
class Setup extends AbstractOption class Setup extends AbstractOption
{ {
protected string $key = 'setup'; protected string $key = 'setup';
@ -34,7 +36,8 @@ class Setup extends AbstractOption
editor.options.register("filemanager_url", { processor: "string" }); editor.options.register("filemanager_url", { processor: "string" });
} }
JS; JS;
return trim((string) preg_replace('!\s+!', ' ', $js));
return (oxNew(Utils::class))->minifyJS($js);
} }
/** /**

View File

@ -29,4 +29,9 @@ class Utils
{ {
return '"'.addslashes($string).'"'; return '"'.addslashes($string).'"';
} }
public function minifyJS(string $js): string
{
return trim((string) preg_replace('!\s+!', ' ', $js));
}
} }