Теги bbcode неправильно форматируются в tinymce 4

Я пытаюсь правильно отформатировать теги bbcode с помощью tinymce 4.1.5.

Когда я устанавливаю цвет текста и подчеркиваю его, закрывающие теги смешиваются или помещают атрибут text-decoration="underline" в тег цвета.

Например, я получаю

[color="ff0000" text-decoration="underline"]some text[/color]

Когда это должно быть

[color="ff0000"][u]some text[/u][/color]

Или я могу получить [color="ff0000"][u]текст[/color][u]

Вот моя текстовая область

  @using (Html.BeginForm("TestTinyMce", "Content", FormMethod.Post))
{
@Html.TextArea("TextArea", Model.TextArea, new { @id = "TextArea", @class = "tinymce"   })
<input type="submit" value="submit"/>
}

Вот инициализация:

    tinymce.init({
    selector: "textarea",
    theme: "modern",
    plugins: [
        "bbcode,paste,textcolor"
    ],
    toolbar1: "undo redo |  bold italic underline forecolor |  link unlink  "
});

Я проверяю значение, когда оно достигает контроллера после отправки. Я пытаюсь посмотреть, есть ли какие-либо конфигурации, плагины или приемы, которые я могу использовать для очистки этого bbcode.


person James    schedule 12.09.2014    source источник


Ответы (1)


В итоге я переопределил форматирование с помощью tinymce, поэтому он разбивает диапазоны. Таким образом, подчеркивание не смешивается с цветом.

Чтобы обработать несоответствие закрытия тегов, я использовал событие SaveContent и просто очистил теги.

tinymce.init({
    selector: "textarea.tinymce",
    theme: "modern",
    width: "100%",
    height: "250px",
    plugins: [
        "bbcode paste textcolor link"
    ],
    toolbar1: "undo redo  bold italic underline forecolor   link unlink  ",
    formats: {
        bold: { inline: 'strong', exact: true },
        italic: { inline: 'em', exact: true },
        underline: { inline: 'span', styles: { "text-decoration": "underline" }, exact: true },
        forecolor: { inline: 'span', styles: { color: '%value' }, exact: true }
    },
    // New event
    setup: function (editor) {
        editor.on('init', function (args) {
        });
        editor.on('SaveContent', function (e) {
            e.content = FixTags(e.content);
        });

    },
});
person James    schedule 14.09.2014