Встроенный текстовый редактор Markdown WYSIWYG

101

В поисках простого редактора WYSIWYG для кода Markdown я не нахожу пользовательского интерфейса, сопоставимого с интерфейсом CkEditor, TinyMCE и т. Д.

В частности, Markdown «WYSIWYG» редактора, которые часто рекомендуется (например, посты , как это ) не являются чисто WYSIWYG редакторов в том смысле , что пользователи либо еще пишут сырые Markdown ( MarkItUp ) или перейти к другой крайности иметь в линии редактирования без стандартные элементы управления ( Hallo ).

Мне нужно что-то среднее.

Я ищу редактор Markdown, который выглядит и работает как урезанное текстовое поле CkEditor, и который принимает и выводит Markdown. Должна быть панель инструментов с минимальным набором параметров форматирования (B, I, U, списки и т. Д.), А в области ввода текста должен отображаться преобразованный Markdown, а не исходный код. Должна быть кнопка Source, которая позволит пользователям редактировать необработанный Markdown, но даже это необязательно. Пример:

введите описание изображения здесь

Я понимаю причину использования Markdown / wiki и т. Д. - безопасность, которую он предлагает. Я не против ввода необработанного кода, как здесь, в SE, но мои пользователи не вундеркинды и не находят это приятным. Они не хотят видеть * * * ___ и пробелы, смешанные с их текстом. Они используются для редактирования в стиле «Word» и наиболее продуктивны в этой среде.

Итак - есть ли действительно интегрированный редактор WYSIWYG для Markdown? Я пишу на PHP, поэтому то, что я могу вызвать с помощью класса, было бы идеально.


Обновление от 23 сентября 2015 г.

CKEditor теперь имеет Markdown аддон , который делает эту точную вещь. Проект аддона размещен на github .

Скриншоты:

уценка WYSIWYG

источник уценки


Обновление от 13 апреля 2015 г.
Кто-то, претендующий на разработку CKEditor, говорит, что появление CommonMark меняет правила игры, и, возможно, мы увидим правильный интерфейс разметки для CKEditor (см. Комментарии к полной истории).


6 февраля 2015 г. Обновление

CKEditor теперь поставляется с плагином, который выводит (и принимает в качестве ввода) BBCode.

Демо: http://ckeditor.com/demo#bbcode

кодировщик
источник
Редактор Ahola, как предлагается в этом ответе на вопрос SO, на который вы ссылаетесь, - это редактор HTML5 WYSIWYG, который, кажется, делает именно то, что вам нужно. На нем даже есть намек на ленту Office. Есть ли причина, по которой вы обесценили это?
Крис
1
Боюсь, я не могу понять ваш последний комментарий. Ahola является «редактором на месте», как и все редакторы WYSIWYG. Поле редактирования Aholda - это просто, divа панель инструментов - это еще одна div, это могут быть единственные элементы на странице. Решение Ahola отвечает вашим требованиям к «минимальному набору параметров форматирования (B, I, U, списки и т. Д.), А в области ввода текста должен отображаться преобразованный Markdown, а не исходный код». Не могли бы вы объяснить более четко, почему это решение не подходит для вас.
Крис
1
Markdown заменяет собой все эти редакторы WYSIWYG. Зачем вам нужно выводить уценку?
Pol
4
@Pol: Потому что безопасно хранить и отображать позже, в отличие от HTML?
Дэн Абрамов
1
Я тоже не понимаю этого вопроса. Либо вы используете Markdown для генерации HTML, либо вы используете редактор WYSIWYG для генерации HTML. Зачем вам использовать редактор WYSIWYG для создания Markdown? Если это действительно то, что вы хотите, вы всегда можете использовать CKeditor и преобразовать HTML в Markdown.
mb21

Ответы:

13

На днях я исследовал эту тему и не нашел ни одного достойного редактора WYSIWYG с выводом Markdown. Фактически, сначала вам нужно создать редактор WYSIWG Markdown - это редактор WYSIWG HTML, и на рынке их очень мало.

Есть шанс, что вы сможете создать dataProcessorдля CKEditor, который изменит редактор HTML на редактор Markdown. У нас есть плагин для BBCode, который работает следующим образом (см. Http://nightly-v4.ckeditor.com/3737/samples/bbcode.html ).

Все, что вам нужно сделать, это реализовать этот интерфейс http://nightly-v4.ckeditor.com/ckeditor_api/#!/api/CKEDITOR.dataProcessor . Если вы проверите код плагина BBCode, вы увидите некоторые уловки и уловки, потому что, к сожалению, текущая архитектура CKEditor не готова (пока) для создания такого процессора данных. Однако я считаю, что если вы хотите предоставить только несколько вариантов стилей, вы сможете довольно быстро реализовать поддержку Markdown.

Рейнмар
источник
30

SimpleMDE , новичок, может быть ответом. Вот уже месяц ищу что-то подобное. Я удивлен, что это не отображается выше в результатах поиска. Чтобы найти это, мне пришлось просмотреть заметку в lepture / editor .

введите описание изображения здесь

HNL
источник
1
Вау, спасибо, что поделился этим - это ТОЧНО то, что я искал. Потрясающие!
Джаред Уайт
1
Спасибо HNL, здесь тоже самое.
Мелвин
4
Однако это не настоящий WYSIWYG. Он смешивает уценку в окне редактора. В этом вопросе ищется редактор, который показывает как готовый вид, так и исходный код в отдельных представлениях (с кнопкой «источник» на панели инструментов для беспокойства).
кодер
9

ИЗМЕНИТЬ 23 сентября 2015 г.

CKEditor теперь имеет Markdown аддон , который делает эту точную вещь. Проект аддона размещен на github .

Скриншоты:

уценка WYSIWYG

источник уценки


Как было опубликовано в моем обновлении от 6 февраля 2015 года, CKEditor теперь включает плагины, которые позволяют ввод и вывод BBCode.

Демо-версия доступна здесь: http://ckeditor.com/demo#bbcode

РЕДАКТИРОВАТЬ 13 апреля 2015:
Кто-то, заявляющий о разработке CKEditor, говорит, что появление CommonMark меняет правила игры, и мы, возможно, сможем увидеть правильный интерфейс разметки для CKEditor (см. Комментарии к полной истории).

кодировщик
источник
"Это точно?" Согласно общему мнению надстройки, ckeditor по-прежнему выводит HTML, а не Markdown с этим надстройкой.
user764754 03
8

Pen - это новый (активный с 2014 года) редактор WYSIWYG, который выводит Markdown .
Это не идеально - у меня были проблемы с вставкой туда HTML, но это работает.

Изменить: извините! Он не выводит Markdown. Валери Штраух указал в комментариях, что знаки форматирования Markdown, которые я видел, на самом деле были правилами псевдоэлементов CSS:

Тем не менее, я оставлю его здесь как вариант, поскольку некоторые люди проголосовали за этот ответ, и он, возможно, был кому-то полезен.

Дан Абрамов
источник
Демонстрация пера - это редактирование на месте, а не то, чем был / заинтересован OP (я). Нет времени устанавливать прямо сейчас. Есть ли вариант традиционного текстового поля?
кодер
@Acoder: Моя плохая! Я не знал, что вам нужна фиксированная панель инструментов. Что не так с Halo ? Теперь у него есть панель инструментов ..
Дэн Абрамов
2
Это все еще макет css на этом снимке экрана. Я хотел бы получить данные по уценке (посмотрите на мой скриншот i.imgur.com/fM4jFl2.png )
Валери Штраух
1
@WaleryStrauch Вау, я был действительно глуп. Я не понимал, что это не результат. Извините за потраченное время! Обновлю ответ.
Дэн Абрамов
3
... теперь, похоже, есть хотя бы бета-версия для вывода Markdown.
pjz
4

Я реализовал очень простой редактор, который позволяет <textarea>редактировать содержимое файла, содержащего Markdown, в стиле WYSIWYG.

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

Hallo позволяет редактировать WYSIWYG HTML внутри файла <div>. Я использовал javascript, чтобы скрыть любые <textarea>блоки с определенным wysiwygклассом CSS, заменив его на a <div>и скопировав содержимое <textarea>в <div>. Копирование проходит через Showdown, который производит HTML из Markdown.

Другая процедура Javascript реагирует каждый раз, когда <div>содержимое изменяется. Он копирует содержимое обратно в (теперь скрытый) <textarea>. Контент проходит через markdown для преобразования из HTML в Markdown.

Если <textarea>это поле в <form>, то отредактированный Markdown будет отправлен на сервер при отправке этой формы.

Источником вдохновения для этого послужил пример Hallo Markdown , а именно файл editor.js . Я использовал это в качестве основы для моего собственного сценария вместе с hallo.js , showdown.js и к markdown.js .

Мой сценарий wysiwyg.js является производным от editor.js из примера Hallo Markdown . Некоторые моменты, на которые следует обратить внимание:

  • Я использую это в приложении Rails (это не имеет значения)
  • Он работает readyи работает page:load, последний, потому что Rails использует Turbolinks
  • Он работает, ajaxCompleteпотому что я использую Ajax для отчетов об ошибках формы
  • Есть и другие зависимости: JQueryUI и Rangy (пользователи Rails могут использовать драгоценные камни jquery-ui-rails и rangy-rails ).
  • Также Font Awesome используется для значков панели инструментов. Версия, hallo.jsиспользуемая в демонстрации , устарела (в ней используется старая версия Font Awesome ) - используйте вместо нее hallo.js из GitHub .

Вам нужно только добавить CSS class='wysiwyg'к любому, <textarea>чтобы включить на нем WYSIWYG. Он <textarea>должен содержать текст в формате Markdown.

Я ожидал, что wysiwyg.js можно легко адаптировать для использования другого редактора, если вам не нравится Hallo, если он работает с HTML в файле<div> . Есть довольно много вариантов на выбор, но не все такие легкие, как Hallo .

Похожая работа, которую я нашел, - это markdown-html-form . Он использует те же методы Showdown и to-markdown .

Starfry
источник
Привет, @starfry, я пытался воспроизвести то, что вы описываете выше, используя ваш wysiwyg.js, но не добился больших успехов. Хотите знать, есть ли у вас сопутствующий HTML-код, спрятанный где-нибудь? Стабильный список версий, зависимостей и т. Д.? Спасибо!
Jameson
1
@Jameson Я добавил несколько примечаний к своей сути . Надеюсь, они помогут! Не стесняйтесь добавлять комментарии к сути, если у вас есть какие-либо вопросы.
starfry
3

Я также ищу редактор разметки, описанный в верхней части этой ветки.

Вы видели "инструменты разметки": http://md-wysiwyg.sourceforge.net/

Демо: http://md-wysiwyg.sourceforge.net/cgi-bin/cgi_wysiwyg_test.py/

Это кажется довольно близким к тому, что мы ищем, он выполняет разумную работу, беря ваш WYSIWYG-форматированный текст и выводя уценку. Однако это не удалось из-за исключения кодировки, когда я вставил некоторый форматированный текст из документа Google.

Робертжд
источник
Исходный код для этого показывает HTML, а не уценку.
кодер