Zintegrowany edytor tekstu Markdown WYSIWYG

101

Szukając prostego edytora WYSIWYG dla kodu Markdown, nie znajduję interfejsu użytkownika porównywalnego z CkEditor, TinyMCE, itd.

Konkretnie, Markdown „WYSIWYG” redaktorzy, które często są zalecane (takie jak wiadomości, takich jak ten ) nie są czystymi edytory WYSIWYG w tym sensie, że użytkownicy albo jeszcze napisać surowego Markdown ( MarkItUp ) lub przejść do drugiej skrajności posiadania w linii edycji bez standardowe sterowanie ( Hallo ).

Potrzebuję czegoś pomiędzy.

Szukam edytora Markdown, który wygląda i działa jak uproszczone pole tekstowe CkEditor i który akceptuje i wyświetla Markdown. Powinien istnieć pasek narzędzi z minimalnym zestawem opcji formatowania (B, I, U, listy, itd.), A obszar wprowadzania tekstu powinien pokazywać przekonwertowany kod Markdown, a nie surowy kod. Powinien istnieć przycisk Źródło, który pozwoli użytkownikom edytować nieprzetworzony Markdown, ale nawet to jest opcjonalne. Dawny:

wprowadź opis obrazu tutaj

Mam powód dla Markdown / wiki, itd. - bezpieczeństwo, które oferuje. Nie mam nic przeciwko wprowadzaniu surowego kodu, jak tutaj w SE, ale moi użytkownicy nie są maniakami i nie uważają tego za przyjemne. Nie chcą widzieć * * * ___ i spacji w tekście. Są używane do edycji w stylu „Word” i są najbardziej produktywne w tym środowisku.

A więc - czy istnieje naprawdę zintegrowany edytor WYSIWYG dla Markdown? Piszę w PHP, więc coś, co mogę wywołać z klasą, byłoby idealne.


Aktualizacja z 23 września 2015 r

CKEditor ma teraz dodatek Markdown, który robi dokładnie to samo. Projekt dodatku jest hostowany na github .

Zrzuty ekranu:

markdown WYSIWYG

źródło markdown


Aktualizacja z 13 kwietnia 2015 r.
Ktoś, kto twierdzi, że opracuje CKEditor, mówi, że pojawienie się CommonMark zmienia zasady gry i prawdopodobnie moglibyśmy zobaczyć odpowiedni interfejs znaczników dla CKEditor (przeczytaj komentarze do pełnej historii).


Aktualizacja z 6 lutego 2015 r

CKEditor jest teraz dostarczany z wtyczką, która wysyła (i akceptuje jako dane wejściowe) BBCode.

Demo: http://ckeditor.com/demo#bbcode

koder
źródło
Ahola Editor, zgodnie z sugestią zawartą w odpowiedzi na pytanie SO, do którego odsyłasz, jest edytorem HTML5 WYSIWYG, który wydaje się robić dokładnie to, czego szukasz. Ma nawet wskazówkę dotyczącą wstążki Office. Czy istnieje powód, dla którego odrzuciłeś to?
Chris
1
Obawiam się, że nie mogę zrozumieć twojego ostatniego komentarza. Ahola jest „edytuj na miejscu”, podobnie jak wszyscy redaktorzy WYSIWYG. Pole edycyjne Aholda to tylko jeden, diva pasek narzędzi jest inny div, mogą to być jedyne rzeczy na stronie. Rozwiązanie Ahola spełnia Twoje wymagania dotyczące „minimalnego zestawu opcji formatowania (B, I, U, listy itp.), A obszar wprowadzania tekstu powinien pokazywać przekonwertowany kod Markdown, a nie surowy kod”. Czy możesz dokładniej wyjaśnić, dlaczego nie jest to rozwiązanie, które weźmiesz pod uwagę.
Chris
1
Markdown sam zastępuje wszystkie te edytory WYSIWYG. Dlaczego miałbyś potrzebować wyceny?
Pol
4
@Pol: Ponieważ przechowywanie i wyświetlanie później jest bezpieczne, w przeciwieństwie do HTML?
Dan Abramov
1
Ja też nie rozumiem tego pytania. Albo używasz Markdown do generowania HTML, albo używasz edytora WYSIWYG do generowania HTML. Dlaczego miałbyś chcieć używać edytora WYSIWYG do generowania Markdown? Jeśli naprawdę tego chcesz, zawsze możesz użyć CKeditor i przekształcić HTML do Markdown.
mb21

Odpowiedzi:

13

Badałem ten temat niedawno i nie znalazłem żadnego przyzwoitego edytora WYSIWYG z wyjściem Markdown. W rzeczywistości, najpierw musisz stworzyć edytor WYSIWG Markdown to edytor HTML WYSIWG, a na rynku jest ich tylko kilka.

Jest szansa, że ​​będziesz mógł stworzyć dataProcessordla CKEditor, który zmieni edytor HTML w edytor Markdown. Mamy wtyczkę do BBCode, która działa w ten sposób (sprawdź http://nightly-v4.ckeditor.com/3737/samples/bbcode.html ).

Wszystko, co musisz zrobić, to zaimplementować ten interfejs http://nightly-v4.ckeditor.com/ckeditor_api/#!/api/CKEDITOR.dataProcessor . Jeśli sprawdzisz kod wtyczki BBCode, zobaczysz kilka trików i trików, ponieważ niestety obecna architektura CKEditor nie jest (jeszcze) gotowa do stworzenia takiego procesora danych. Uważam jednak, że jeśli chcesz zapewnić tylko kilka opcji stylizacji, powinieneś być w stanie wdrożyć obsługę Markdown dość szybko.

Reinmar
źródło
30

Odpowiedzią może być SimpleMDE , nowicjusz. Od miesiąca szukam czegoś takiego. Dziwię się, że nie pojawia się to wyżej w wynikach wyszukiwania. Musiałem przejrzeć ogłoszenie na lepture / redaktorze, żeby to znaleźć.

wprowadź opis obrazu tutaj

HNL
źródło
1
Wow, dzięki za udostępnienie tego - to DOKŁADNIE to, czego szukałem. Niesamowite!
Jared White
1
Dzięki HNL, to samo tutaj.
Melvin
4
Jednak to nie jest prawda WYSIWYG. Łączy przecenę z oknem edytora. W tym pytaniu poszukiwany jest edytor, który pokazuje zarówno gotowy widok, jak i źródło w oddzielnych widokach (z przyciskiem „źródło” na pasku narzędzi, do wiercenia się).
koder
9

EDYCJA 23 września 2015 r

CKEditor ma teraz dodatek Markdown, który robi dokładnie to samo. Projekt dodatku jest hostowany na github .

Zrzuty ekranu:

markdown WYSIWYG

źródło markdown


Jak napisałem w mojej aktualizacji z 6 lutego 2015 r., CKEditor zawiera teraz wtyczki, które pozwalają na wejście i wyjście BBCode.

Demo jest dostępne tutaj: http://ckeditor.com/demo#bbcode

EDYCJA 13 kwietnia 2015 r .:
Ktoś, kto twierdzi, że opracuje CKEditor, mówi, że pojawienie się CommonMark zmienia zasady gry i prawdopodobnie moglibyśmy zobaczyć odpowiedni interfejs znaczników dla CKEditor (przeczytaj komentarze do pełnej historii).

koder
źródło
"Czy to dokładnie rzecz?" Zgodnie z typowymi cechami dodatku ckeditor nadal generuje HTML, a nie Markdown z tym dodatkiem.
user764754
8

Pióro to nowy (aktywny od 2014 r.) Edytor WYSIWYG, który generuje Markdown .
Nie jest doskonały - miałem problemy z wklejaniem tam kodu HTML - ale działa.

Edycja: Przepraszamy! Nie wyświetla Markdown. Walery Strauch zwrócił uwagę w komentarzach, że znaki formatowania Markdown, które widziałem, były w rzeczywistości regułami pseudoelementów CSS:

Mimo to zostawię to tutaj jako opcję, ponieważ niektórzy ludzie głosowali za tą odpowiedzią i może się to komuś przydać.

Dan Abramov
źródło
Demo pióra jest edycją na miejscu, a nie tym, czym OP (ja) był / jest zainteresowany. Nie ma czasu na instalację w tej sekundzie. Czy istnieje opcja tradycyjnego pola tekstowego?
programista
@Acoder: Mój błąd! Nie zdawałem sobie sprawy, że chcesz mieć stały pasek narzędzi. Co jest nie tak z Halo ? Ma teraz pasek narzędzi ...
Dan Abramov
2
To wciąż jest układ css na tym zrzucie ekranu. Chciałbym pobrać dane dotyczące przecen (spójrz na mój zrzut ekranu i.imgur.com/fM4jFl2.png )
Walery Strauch
1
@WaleryStrauch Wow, byłem naprawdę głupi. Nie zdawałem sobie sprawy, że to tak naprawdę nie jest wyjście. Przepraszam że marnuje twój czas! Zaktualizuję odpowiedź.
Dan Abramov
3
.. teraz wydaje się, że ma przynajmniej wsparcie beta dla wyjścia Markdown.
pjz
4

Zaimplementowałem bardzo prosty edytor, który pozwala <textarea>edytować zawartość pliku zawierającego Markdown w sposób WYSIWYG.

Użyłem Hallo . Nie sądzę, by jego strona internetowa jasno wskazywała, że ​​sama nie jest edytorem Markdown WYSIWYG, ale wersja demonstracyjna wytycza do niego ścieżkę.

Hallo umożliwia edycję WYSIWYG HTML wewnątrz pliku <div>. Użyłem javascript, aby ukryć wszystkie <textarea>bloki, które mają określoną wysiwygklasę CSS, zastępując ją a <div>i kopiując zawartość <textarea>do <div>. Kopiowanie przebiega przez Showdown który tworzy HTML z Markdown.

Kolejna procedura Javascript reaguje za każdym razem, gdy <div>zmienia się zawartość. Kopiuje zawartość z powrotem do (teraz ukrytego) <textarea>. Treść jest przesyłana do przeceny do celu konwersji z HTML do Markdown.

Jeśli <textarea>jest polem w<form >, edytowana Markdown zostanie wysłana na serwer po przesłaniu tego formularza.

Inspiracją do tego jest przykład Hallo Markdown , a konkretnie plik editor.js . Użyłem tego jako podstawy dla mojego własnego skryptu wraz z hallo.js , showdown.js i to-markdown.js .

Mój skrypt wysiwyg.js jest pochodną pliku editor.js z przykładu Hallo Markdown . Kilka punktów, na które należy zwrócić uwagę:

  • Używam tego w aplikacji Railsowej (nie to ma znaczenia)
  • Działa dalej readyi dalej page:load, ponieważ Railsy używają Turbolinków
  • Działa dalej, ajaxCompleteponieważ używam Ajax do raportów o błędach formularzy
  • Istnieją inne zależności: JQueryUI i Rangy (użytkownicy Railsów mogą skorzystać z gems jquery-ui-rails i rangy-rails ).
  • Również Font Awesome jest używany w ikonach paska narzędzi. Wersja hallo.jsużywanej przez demo jest nieaktualna (używa starej wersji Font Awesome ) - zamiast tego użyj hallo.js z GitHub .

Musisz tylko dodać CSS class='wysiwyg'do dowolnego, <textarea>aby włączyć na nim WYSIWYG. <textarea>Powinny conain Markdown sformatowanego tekstu.

Spodziewałbym się, że wysiwyg.js można łatwo zaadaptować do używania innego edytora, jeśli nie lubisz Hallo, o ile działa na HTML w a <div>. Jest kilka do wyboru, ale nie wszystkie są tak lekkie jak Hallo .

Podobna praca, którą znalazłem, to format markdown-html . Używa tego samego Showdown i to-markdown .

starfry
źródło
Hej @starfry, próbowałem odtworzyć to, co opisałeś powyżej, używając twojego wysiwyg.js, ale nie odniosłem żadnego wielkiego sukcesu. Zastanawiasz się, czy masz również gdzieś ukryty w tekście towarzyszący kod HTML? Lista stabilnych wersji zależności itp.? Dzięki!
Jameson,
1
@Jameson Dodałem kilka uwag do mojego sedna . Mam nadzieję, że pomogą! Jeśli masz jakiekolwiek pytania, możesz dodać komentarz do sedna.
starfry
3

Szukam także edytora promocji, który jest opisany na początku tego wątku

Czy widziałeś „narzędzia przeceny”: http://md-wysiwyg.sourceforge.net/

Próbny: http://md-wysiwyg.sourceforge.net/cgi-bin/cgi_wysiwyg_test.py/

Wydaje się, że jest to bardzo zbliżone do tego, czego szukamy, wykonuje rozsądną robotę polegającą na pobieraniu tekstu sformatowanego w trybie WYSIWYG i wyświetlaniu przecen. Jednak nie powiodło się w przypadku wyjątku kodowania, gdy wkleiłem tekst sformatowany z dokumentu Google.

robertjd
źródło
Kod źródłowy tego pokazuje HTML, a nie przecenę.
koder