Вбудований текстовий редактор WySIWYG Markdown


101

Шукаючи прямого редактора WYSIWYG для коду Markdown, я не знаходжу порівнюваний інтерфейс користувача з CkEditor, TinyMCE, ect.

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

Мені потрібно щось середнє.

Я шукаю редактор Markdown, який виглядає і функціонує як збитий текстове поле CkEditor, який приймає і видає Markdown. Повинна бути панель інструментів з мінімальним набором параметрів форматування (B, I, U, списки, ect), а область введення тексту повинна показувати перетворений відмітка, а не необроблений код. Повинна бути кнопка "Джерело", яка дозволить користувачам редагувати необмежену оцінку, але навіть це необов'язково. Наприклад:

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

Я отримую причину для Markdown / wiki, ect - безпеку, яку він пропонує. Я не проти вводити необроблений код, як тут, в 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, як пропонується у цій відповіді на питання ТА, на яке ви посилаєтесь, - це редактор HTML5 WYSIWYG, який, здається, робить саме те, що вам потрібно. У ньому навіть є натяк на стрічку Office. Чи є причина, чому ви знизили це?
Кріс

1
Я боюся, я не можу реально зрозуміти ваш останній коментар. Ahola - це "редагування на місці", як і всі редактори WYSIWYG. Поле редагування Aholda - це просто a, divа панель інструментів - ще одна div, це можуть бути єдині речі на сторінці. Рішення Ahola відповідає вашим вимогам щодо "мінімального набору параметрів форматування (B, I, U, списки, ect), і область введення тексту повинна показувати перетворений відмітка, а не необроблений код". Скажіть, будь ласка, більш чітко, чому це не рішення, яке ви будете розглядати.
Кріс

1
Відмітка замінює всі ці редактори WYSIWYG самостійно. Навіщо вам потрібно виводити розмітку?
Пол

4
@Pol: Тому що це безпечно для зберігання та відображення пізніше, на відміну від HTML?
Дан Абрамов

1
Я також не отримую цього питання. Або ви використовуєте Markdown для створення HTML, або використовуєте редактор WYSIWYG для створення HTML. Чому ви хочете використовувати редактор WYSIWYG для створення Markdown? Якщо це дійсно те, що ви хочете, ви завжди можете використовувати CKeditor і перетворювати HTML в Markdown.
mb21

Відповіді:


13

Днями я займався цією темою, і не знайшов пристойного редактора WYSIWYG з висновком Markdown. Насправді, спочатку вам потрібно створити редактор WYSIWG Markdown - це редактор HTML WYSIWG, і є лише деякі з них, які можна використовувати на ринку.

Є ймовірність, що ви зможете створити 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 , новачок, може бути відповіддю. Я вже місяць шукаю щось подібне. Я здивований, що це не відображається вище в результатах пошуку. Щоб знайти це, мені довелося пройти повідомлення про лекцію / редактора .

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


1
Вау, дякую, що поділилися цим - це ТОЧНО те, що я шукав. Дивовижно!
Джаред Білий

1
Спасибі HNL, тут же.
Мельвін

4
Однак це неправда WYSIWYG. Він змішує розмітку у вікні редактора. У цьому питанні шукається редактор, який показує готовий вигляд та джерело в окремих видах (за допомогою кнопки "джерело" на панелі інструментів).
кодер

9

EDIT 23 вересня 2015 року

Тепер у CKEditor є додаток Markdown, який робить це точно. Проект аддона розміщується на github .

Скріншоти:

розмітка WYSIWYG

джерело розмітки


Як було розміщено в моєму оновленні 6 лютого 2015 року, CKEditor тепер включає плагіни, які дозволяють вводити та виводити BBCode.

Демонстраційна версія доступна тут: http://ckeditor.com/demo#bbcode

EDIT 13 квітня 2015:
Хтось, хто займається розробкою CKEditor, каже, що поява CommonMark - це зміна ігор, і ми, можливо, зможемо побачити належний інтерфейс розмітки для CKEditor (читайте коментарі для повної історії).


"Це точно річ?" За словами спільника надбудови ckeditor все ще виводить HTML, а не Markdown за допомогою цього додатка.
user764754

8

Пен - це новий (активний з 2014 року) редактор WYSIWYG, який видає Markdown .
Це не ідеально - у мене виникли проблеми із вставкою HTML - але він працює.

Редагувати: Вибачте! Він не виводить Markdown. У коментарях Уелі Штрауч зазначив, що ознаки форматування Markdown, які я бачив, - це фактично правила псевдоелемента CSS:

Але я залишлю це як варіант, оскільки деякі люди підтримали цю відповідь, і це, можливо, комусь було корисно.


Демонстраційна ручка - це редагування на місці, а не те, чим зацікавив мене ОП (мене). Немає часу встановити цю секунду. Чи є традиційний варіант текстового поля?
кодер

@Acoder: Моє погано! Я не розумів, що ти хочеш фіксовану панель інструментів. Що з Хало хоч? Зараз у нього є панель інструментів ..
Дан Абрамов

2
Це все ще макет css на цьому скріншоті. Я хотів би захопити дані про розмітку (подивіться на мій знімок i.imgur.com/fM4jFl2.png )
Walery

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>. Вміст запускається через розмітку для перетворення з HTML у Markdown.

Якщо поле <textarea>є в а<form >, відредагована Markdown буде відправлена ​​на сервер, коли ця форма буде подана.

Натхнення для цього надходить із прикладу Hallo Markdown , зокрема з файла editor.js . Я використовував це як основу для власного сценарію разом з hallo.js , showdown.js та to-markdown.js .

Мій сценарій, wysiwyg.js - це похідне editor.js з прикладу Hallo Markdown . Деякі моменти, які слід зазначити:

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

Вам потрібно лише додати CSS class='wysiwyg'до будь-якого, <textarea>щоб увімкнути WYSIWYG. Текст у <textarea>форматі Markdown повинен містити текст.

Я би сподівався, що wysiwyg.js може бути легко адаптований до використання іншого редактора, якщо вам не подобається Hallo , якщо він працює на HTML в <div>. Можна вибрати декілька, але не всі такі легкі, як Hallo .

Усміхнена робота, яку я знайшов, - це markdown-html-форма . Він використовує те саме Showdown і to-markdown .


Привіт @starfry, я намагався відтворити те, що ви описали вище, використовуючи свої wysiwyg.js, але не досяг великих успіхів. Цікаво, чи є у вас супровідний HTML-код, який також зберігається десь у суті? Стабільний список версій залежностей тощо? Дякую!
Джеймсон

1
@Jameson Я додав кілька записок до своєї суті . Сподіваюся, вони допоможуть! Якщо у вас виникли питання, сміливо додайте коментар до суті.
starfry

3

Я також шукаю редактор розмітки, який описаний у верхній частині цього потоку

Ви бачили "інструменти розмітки": http://md-wysiwyg.sourceforge.net/

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

Це здається досить близьким до того, що ми шукаємо, але це розумна робота - взяти ваш багатий текст WYSIWYG та вивести розмітку. Однак це не вдалося за винятком кодування, коли я вставив якийсь багатий текст від google doc.


Вихідний код для цього показує, що HTML не розмічається.
кодер
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.