Open awaluk opened 3 years ago
Próbowałem to naprawić, ale napotkałem na problemy:
Ctrl + B
, Ctrl + U
itp.) i dlatego, że CKEditor śledzi stan zaznaczenia i focusu w edytorze i (nawet przy bezpośrednim zablokowaniu komend) one są za każdym razem automatycznie odblokowywane<textarea>
, którego zawartość jest brana przez front Q2A do wysłania na serwer przy docelowym zapisie posta i wycięcie czasem zadziała a czasem nie (możliwe, że jest to wynikiem race-conditiona pomiędzy wycinaniem zbędnych tagów a pobieraniem zawartości edytora do formularza celem wysłania posta użytkownika na serwer)@Comandeer podrzucił parę sposobów na fix:
refresh
dla każdej z komend formatujących, aby CKEditor nie odświeżał ich stanu. Jest to dla mnie technicznie skomplikowane (zwłaszcza, żeby zrobić to prawidłowo), ponieważ te komendy są konfigurowane w core-owym kodzie CKEditora i już dla pierwszego plugina basicstyles
(obsługuje komendy pogrubiania, kursywy i podkreślania) okazuje się, że konfiguracja jest tworzona w "locie" przy użyciu metody addCommand
(screen), bez bezpośredniego podania metody refresh
- ta jest brana z obiektu zwracanego przez globalną metodę CKEDITOR.command
(screen z Q2A, kod źródłowy). Więc rozwiązanie samo w sobie, oprócz poziomu skomplikowania, wydaje się być zbyt ingerencyjne.CKEditor ma natomiast wbudowaną obsługę biblioteki highlight.js (wspomniana była w tym issue), która jest zintegrowana jako widget, więc można by po prostu zastąpić nią SyntaxHighlighter'a (jest nowsza i oferuje kolorowanie składni automatycznie dobierając język programowania).
Podczas pisania posta, po wstawieniu kodu w bloczek, w samym bloczku można zaznaczyć tekst i włączyć jego formatowanie (podkreślenie, pogrubienie, cokolwiek). Po pierwsze formatowanie w bloczku wydaje się niezbyt potrzebne, a po drugie jak się je włączy, to na wyjściu generuje to kod HTML zamiast pożądanego efektu, np.:
Wypadałoby coś z tym zrobić. Może dałoby radę po prostu zablokować formatowanie w bloczku - tak aby gdy zaznaczony jest bloczek, nie dało się wstawiać innego formatowania. To wydaje mi się najsensowniejsze.