2014-09-10 2 views
1

Я пытаюсь использовать TinyMCE (версия 4.1.2) в качестве редактора WYSIWYG. Записанные пользователи могут писать свои собственные страницы и напрямую видеть, что будет показано на странице при посещении посетителя.TinyMCE Sanitizing input

Теперь я хотел бы, чтобы html хранился непосредственно. Например:

Зарегистрированный пользователь видит This is my text!, но на самом деле TinyMCE отображает его как <p>This is my text!</p>. Существуют также определенные стили, такие как <h1> и ссылки, которые можно добавить.

Теперь пользователь может вставить гиперссылку, указав ссылку и текст, которые должны отображаться. Проблема, однако, если пользователь вручную пишет <a href='example.com'>Example</a>, он отображается в редакторе так же, но также сохраняется в чистом html, поэтому при отображении его будет просто гиперссылкой с текстом Example.

Это как мой код рода выглядит (слева из конфигурации):

tinymce.init({ 
    setup: function(editor){ 
     editor.on('change', function(e){ 
      $('[name="'+editor.id+'"]').next("textarea").html(editor.getContent({format: 'html'})); 
     }); 
    } 
}); 

Таким образом, текст из поля TinyMCE, копируется в <textarea>, который находится внутри <form>, который получает представленные при сохранении.

Что-то вроде этого:

TinyMCE input of user

получает хранится как:

<h1>Title</h1> 
<p><a href="example.com">example</a></p> 
<p><a href="example.com">test</a></p> 

Который не оставляет мне никакой возможности отличить подлинные ссылки и чистый текст, так что я не могу обработать его после того, как хранение данных.

Я уже играл с форматами editor.getContent({format: 'html'}), например format: 'raw', но безрезультатно. Что я делаю не так?

ответ

1

Надеюсь, я правильно понимаю ваш вопрос.

Похоже, что вы хотите отображать все свои входы пользователя ТОЧНО, поскольку они вводят его, фактически не обрабатывая любой HTML-код, который пользователь написал в HTML. Я прав? Я считаю, что это решает проблему у вас возникли:

https://kokoblog.net/php/fix-tinymce-auto-convert-html-code-to-element-tag

Однако, если вы беспокоитесь только о том, как он выглядит, где она хранится, а не то, как это выглядит, когда это процессы, то вы будете хотеть для добавления блоков кода в tinyMCE и убедитесь, что ваши пользователи понимают, что им нужно выбрать параметр кода, когда они собираются писать необработанный HTML.

style_formats : [{title : 'Code', inline : 'code'}] 

ЦСИ: Add "code" button to wordpress tinyMCE

Я надеюсь, что это помогает! :)

+0

Спасибо, но это не совсем то, что я ищу. Код, оформленный в редакторе, на самом деле, например, '

Заголовок

', что хорошо. Однако, когда пользователь вручную пишет '

Заголовок

', я хочу отобразить его таким же. Поэтому только то, что пишет пользователь, должно обрабатываться с помощью sometihng, например 'htmlspecialchars()', чтобы предотвратить случайное закрытие дополнительных тегов и разрешить только теги, которые поддерживает редактор. – jdepypere

+0

Хорошо, да, это была моя мысль ... В этом случае вам нужно включить формат тега кода и использовать его пользователей. Так как единственное, что делает TinyMCE, это обернуть текст в HTML, он не имеет никакого способа определить, будет ли он переформатировать предварительно отформатированный HTML. Это то же самое, что и большинство других аналогичных редакторов, на самом деле на самом деле мало того, что код html силы должен отображаться, а не анализироваться. – Ethan

+0

Я полагаю, что другой вариант заключается в том, чтобы написать расширение javascript, которое будет искать html-теги, когда вы пишете, и если тег найден автоматически, оберните его в сегмент [code] ... [/ code]. – Ethan