Drupal: попытка использовать GeSHi с CKeditor

Я надеялся использовать CKeditor с GeSHi, но у меня возникли серьезные трудности. Что происходит, если я создаю новый фрагмент контента, а затем отключаю CKeditor, поэтому я просто пишу простой HTML, я могу заключить фрагмент кода в теги <pre> </pre>. Если я затем сохраню, GeSHi прекрасно справляется со своей задачей, и фрагмент выглядит хорошо.

Однако, если я затем попытаюсь отредактировать этот фрагмент контента, CKeditor возится с форматированием кода, в частности, заменяя множество символов специальными escape-последовательностями, а также пытаясь закрыть то, что он считает тегами HTML, но на самом деле включает C++. файлы, например #include <iostream> заставит CKeditor поместить </iostream> в конец текста. Тогда, в лучшем случае, мой код просто выглядит плохо.

В других случаях поведение действительно странное: страница не загружается и вместо этого выдает ошибку сервера. Я предполагаю, что это потому, что на стороне сервера некоторые изменения, внесенные CKeditor в фрагмент кода, приводят к сбою GeSHi или наоборот.

Вот пример кода, который выглядел правильно после того, как я ввел его дословно в текстовом редакторе и заключил в теги <pre>:

// All rights reserved
// Email: [email protected]
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include <iostream>
#include <fstream>

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

myClass::myClass()
{
    m_lthing = NULL;
    m_athing = NULL;
    m_bthing = NULL;

    m_lthingthing = NULL;
    m_athingthing = NULL;
    m_bthingthing = NULL;
}

Однако, если просто нажать «Изменить», а затем снова «Сохранить» без внесения каких-либо изменений, CKeditor возится с кодом, который теперь выглядит так:

// All rights reserved
// Email: [email protected]
//////////////////////////////////////////////////////////////////////

#include &quot;stdafx.h&quot;
#include <iostream>
#include <fstream>

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

myClass::myClass()
{
    m_lthing = NULL;
    m_athing = NULL;
    m_bthing = NULL;

    m_lthingthing = NULL;
    m_athingthing = NULL;
    m_bthingthing = NULL;
}</fstream></iostream>

Есть ли у кого-нибудь какие-либо мысли по этому поводу или кто-нибудь может порекомендовать хорошую альтернативу системе, которую я сейчас пытаюсь использовать? Я не слишком привязан к CKeditor или GeSHi, хотя до сих пор я был доволен CKeditor, и мне нравится тот факт, что GeSHi форматирует MATLAB. Кроме того, согласно ответу/комментарию ниже, я уже пробовал подход Питера Петрика, описанный здесь, и сбой все еще имел место.

Спасибо.


person SSilk    schedule 24.02.2011    source источник


Ответы (2)


Посмотрите на это — это может помочь ckeditor-and-geshi-filter

person dzogchen    schedule 24.02.2011
comment
Извините, забыл упомянуть, что уже пробовал метод Петрика. Это не сработало для меня. Я думаю, что попробую еще раз, так как я не уверен, что правильно сделал тему кнопки раздела панели инструментов. Он не указывает, в какой из трех CSS-файлов темы CKeditor должен входить код. Однако это не должно влиять на сбой CKeditor или GeSHi при синтаксическом анализе кода. Я думаю, что часть проблемы в том, что его список замен строк не полон; кажется, что CKeditor не обрабатывает «& nbsp», или закрытие операторов включения CPP, как если бы они были тегами HTML. Спасибо. - person SSilk; 24.02.2011
comment
Хорошо, я снова попробовал метод Петрика, и на этот раз он сработал. Было несколько мелких деталей, которые я перепрыгнул/не понял. Кажется, теперь это работает. Спасибо. - person SSilk; 06.03.2011

Какую версию Drupal/CKEditor/GeSHi вы используете? Я бы проверил входные форматы (admin/settings/filters) и убедился, что какой бы формат вы ни использовали, он не испортит ваш код дополнительными фильтрами. Также проверьте разрешенные теги HTML.

person Peter Petrik    schedule 03.03.2011
comment
Я использую Drupal 6.20, CKEditor 6.x-1.2, GeSHi 6.x-1.4. В разделе «Форматы ввода» -> «Полный HTML» включен GeSHi, а также корректор HTML, конвертер разрыва строки и фильтр URL. В разделе «Переупорядочить» их порядок сверху вниз: URL, корректор HTML, разрыв строки, GeSHi. Нужно ли что-то из вышеперечисленного менять? Спасибо. - person SSilk; 04.03.2011
comment
На всякий случай я бы отключил конвертер разрыва строки и корректор HTML. Убедитесь, что фильтр GeSHi является самым высоким в порядке. Какую версию самого CKEditor вы используете (не модуль Drupal, а версию библиотеки CKEditor). - person Peter Petrik; 06.03.2011