Удалить элемент, созданный плагином tinymce - PullRequest
0 голосов
/ 17 апреля 2020

Я создал плагин в tinymce, который добавляет изображение перед текстом, чтобы предупредить читателей. ( Пример )

Вставьте этот div и измените содержимое внутри, все работает нормально, но если мои пользователи хотят удалить этот div (вся красная граница), это сложнее.

Я хочу, чтобы мой пользователь нажал на «знак опасности» и нажал DEL, чтобы удалить элемент. (на самом деле это невозможно) Как мне добавить это в мой плагин?

вот мой плагин:

tinymce.PluginManager.add('picto', function (editor, url) {
    editor.contentCSS.push(url + '/css/picto.css');


    if (tinymce.majorVersion == 5) {

        editor.ui.registry.addIcon('addwarning', '<img src="' + url + '/img/attention.png" style="width:24px ; height:24px;">');
    }

    function addWarning() {
        var selection = editor.selection;
        var node = selection.getNode();
        if (node) {
            editor.undoManager.transact(function () {
                var content = selection.getContent();
                if (!content) {
                    content = 'Contenu';
                }

                selection.setContent('<br><div class="alert-modop">' + content + '</div><br>');
            });
        }
    }

вот мой js вызов редактора:

<script> 
            tinymce.init({
                selector: 'textarea#contenuEtask',
                relative_urls: false,
                language: 'fr_FR',
                contextmenu: false,
                browser_spellcheck: true,
                plugins: "noneditable wordcount autolink anchor fullscreen lists advlist link image hr tabfocus table searchreplace spoiler picto",
                toolbar1: 'fullscreen | undo redo | styleselect | bold italic underline| link image table | bullist numlist outdent indent ',
                toolbar2: 'alignleft aligncenter alignright alignjustify | fontselect fontsizeselect forecolor backcolor | spoiler-add spoiler-hide spoiler-close | warning-add new-add note-add |hr searchreplace',
                noneditable_noneditable_class: "mceNonEditable",
                menubar: "",
                height: 500,
                setup: function (editor) {
                    editor.on('init', function () {
                        var tinyHtml = $('.TinyHiddenValue input[type=hidden]').val();
                        this.setContent(tinyHtml);
                    });
                    editor.on('keyup', function () {
                        var tinyHtml = this.getContent();
                        $('.TinyHiddenValue input[type=hidden]').val(tinyHtml);
                    });
                    editor.on('click', function () {
                        var tinyHtml = this.getContent();
                        $('.TinyHiddenValue input[type=hidden]').val(tinyHtml);
                    });
                }
            });
            tinymce.execCommand('mceRemoveControl', true, 'contenuEtask');
        </script>

и мои css для создания этого элемента:

.alert-modop {
  background: url("../Sources/Images/attention.svg") no-repeat;
} 

Спасибо за помощь. о /

1 Ответ

0 голосов
/ 20 апреля 2020

Для тех, у кого такие же трудности, как и у меня, у меня есть интересное решение.

Я окружил свой контент div с контентом, редактируемым до true. Это не повлияет на ваш плагин, но мой контент теперь может быть выбран.

selection.setContent('<br><div contenteditable="true" style="display: inline-block"><div class="alert-modop">' + content + '</div></div><br>');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...