Введите код в TinyMCE - PullRequest
       14

Введите код в TinyMCE

1 голос
/ 14 февраля 2011

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

Я хочу добавить это:

<Files somefile.png>
    DefaultType application/x-httpd-php
</Files>

(этоДиректива .htaccess)

Это сохраняется нормально (как <и> в html), но когда я вновь открываю мою форму для редактирования, она преобразуется в:

DefaultType application/x-httpd-php

Редактировать: я использую TinyMCE в Symfony форме, используя sfFormExtraPlugin.

Редактировать 2: Я попробовал verify_html: false .... теперь мой код преобразуется как:

<p><files exec="" jpg=""><br /> DefaultType application/x-httpd-php<br /></files></p>

Редактировать 3: Моя конфигурация tinyMCE:

  tinyMCE.init({
    mode:                              "exact",
    elements:                          "content_contents",
    theme:                             "advanced",
    width:                             "500px",
    height:                            "400px",
    theme_advanced_toolbar_location:   "top",
    theme_advanced_toolbar_align:      "left",
    theme_advanced_statusbar_location: "bottom",
    theme_advanced_resizing:           true
    ,

    language : "fr",
        convert_urls : false,
        verify_html : false

  });

Ответы [ 6 ]

1 голос
/ 07 апреля 2011

Я ответил на это в теме TinyMCE MoxieCode , которая также была открыта @Manu, однако я также хотел обновить эту тему своими мыслями.правильно, проблема в том, что источник HTML при сохранении с <</strong> и > правильно интерпретируется как <</strong> и > при перезагрузкев TinyMCE.

Если это так, то я считаю, что проблема заключается в том, что плагин Symphony не кодирует содержимое HTML до заполнения TextArea, которое заменяет TinyMCE.Другими словами, он оставляет <</strong>, когда должен загружаться & lt; , поэтому tinyMCE получает <</strong>

1 голос
/ 14 февраля 2011

Что вы делаете со входом, когда возвращаете его в TinyMCE? Если вы конвертируете его в HTML или что-то еще, TinyMCE очистит его, так как это недействительный HTML.

В качестве обходного пути / эксперимента вы можете добавить File в custom_elements в вашей инициализации.

Обновление Поскольку вы принимаете все виды кода, вам, вероятно, придется вообще отключить очистку. Поместите cleanup: false в конфиг. На вашем месте я бы реализовал ваше собственное пользовательское форматирование (как в стеке / переполнении) и генерировал бы форматирование жирным шрифтом, подчеркиванием, ссылками и т. Д., Потому что это даст вам гораздо больший контроль над генерацией HTML, то есть вы могли бы просто распечатать все точно это (с выходом), а затем превратить предопределенные символы в теги <strong> или что-либо еще. Это, безусловно, самый простой способ создания безопасного и точного вывода HTML, а в вашем случае, вероятно, единственный.

Вы бы не хотели использовать TinyMCE в этом случае ...

0 голосов
/ 02 октября 2011

правильный ответ на вашу проблему, проверенный мною и работающий на 100%, заключается в том, чтобы обернуть вашу переменную в htmlspecialchars в php, как в этом примере:

htmlspecialchars($myText)
0 голосов
/ 05 апреля 2011

Попробуйте включить
extended_valid_elements : "Files[]",
В твоем конфиге. Он используется для разблокировки определенных HTML-тегов, таких как iframe. В скобках вы обычно ставите разрешенные опции для тега (например, [src|alt|id]), поэтому я не уверен, что поставить для вашего примера ...

0 голосов
/ 05 апреля 2011

замените свои <и>

< becomes: &lt;
> becomes: &gt;
0 голосов
/ 14 февраля 2011

Это происходит потому, что удаляется недопустимый HTML (функция очистки tinymce).

Обходным путем может быть инициализация tinymce с помощью параметра очистки :

cleanup: false,

Я предлагаю вам поближе взглянуть на параметры инициализации tinymce

и

...