Oficjalna dokumentacja jest mniej niż jasna - jaki jest prawidłowy sposób integracji niestandardowej przeglądarki plików / programu do przesyłania plików z CKEditor? (v3 - nie FCKEditor)
Zacznij od zarejestrowania swojej niestandardowej przeglądarki / programu do przesyłania podczas tworzenia wystąpienia CKEditor. Możesz wyznaczyć inne adresy URL dla przeglądarki obrazów niż dla ogólnej przeglądarki plików.
<script type="text/javascript">
CKEDITOR.replace('content', {
filebrowserBrowseUrl : '/browser/browse/type/all',
filebrowserUploadUrl : '/browser/upload/type/all',
filebrowserImageBrowseUrl : '/browser/browse/type/image',
filebrowserImageUploadUrl : '/browser/upload/type/image',
filebrowserWindowWidth : 800,
filebrowserWindowHeight : 500
});
</script>
Twój kod niestandardowy otrzyma parametr GET o nazwie CKEditorFuncNum. Zapisz to - to twoja funkcja zwrotna. Powiedzmy, że to włożyłeś $callback
.
Kiedy ktoś wybierze plik, uruchom ten JavaScript, aby poinformować CKEditor, który plik został wybrany:
window.opener.CKEDITOR.tools.callFunction(<?php echo $callback; ?>,url)
Gdzie „url” to adres URL pliku, który wybrali. Opcjonalnym trzecim parametrem może być tekst, który ma być wyświetlany w standardowym oknie dialogowym ostrzeżenia, na przykład „nielegalny plik” lub coś podobnego. Ustaw adres URL na pusty ciąg, jeśli trzeci parametr jest komunikatem o błędzie.
Zakładka „upload” CKEditora prześle plik w polu „upload” - w PHP, który trafi do $ _FILES ['upload']. To, co CKEditor chce, aby Twój serwer wyświetlał, to pełny blok JavaScript:
$output = '<html><body><script type="text/javascript">window.parent.CKEDITOR.tools.callFunction('.$callback.', "'.$url.'","'.$msg.'");</script></body></html>';
echo $output;
Ponownie, musisz podać mu parametr wywołania zwrotnego, adres URL pliku i opcjonalnie wiadomość. Jeśli wiadomość jest pustym ciągiem, nic nie zostanie wyświetlone; jeśli komunikat jest błędem, adres URL powinien być pustym ciągiem.
Oficjalna dokumentacja CKEditor jest niekompletna w tym wszystkim, ale jeśli zastosujesz się do powyższego, będzie działać jak mistrz.
Opublikowałem jeden mały poradnik dotyczący integracji FileBrowser dostępnego w starym FCKEditor z CKEditor.
http://www.mixedwaves.com/2010/02/integrating-fckeditor-filemanager-in-ckeditor/
Zawiera instrukcje krok po kroku, jak to zrobić i jest całkiem proste. Mam nadzieję, że każdy, kto tego szuka, uzna ten poradnik za pomocny.
źródło
Po prostu sam przeszedłem przez proces uczenia się. Rozgryzłem to, ale zgadzam się, że dokumentacja jest napisana w sposób, który mnie onieśmielał. Wielkim momentem „aha” było dla mnie zrozumienie, że podczas przeglądania CKeditor tylko otwiera nowe okno i podaje kilka parametrów w adresie URL. Pozwala na dodanie dodatkowych parametrów, ale pamiętaj, że będziesz musiał użyć metody encodeURIComponent () na swoich wartościach.
Dzwonię do przeglądarki i przesyłającego
W przypadku przeglądarki , w otwartym oknie (Browse.php) używasz php & js, aby dostarczyć listę opcji, a następnie po dostarczonym programie obsługi onclick, wywołujesz funkcję CKeditor z dwoma argumentami, adresem url / ścieżką do wybranego obrazu i CKEditorFuncNum dostarczone przez CKeditor w adresie URL:
Podobnie, program do przesyłania po prostu wywołuje podany adres URL, np. Upload.php i ponownie dostarcza $ _GET ['CKEditorFuncNum']. Celem jest iframe, więc po zapisaniu pliku z $ _FILES przekazujesz swoją opinię do CKeditor w następujący sposób:
Poniżej znajduje się prosty do zrozumienia niestandardowy skrypt przeglądarki. Chociaż nie pozwala użytkownikom poruszać się po serwerze, umożliwia wskazanie katalogu, z którego mają pobierać pliki obrazów podczas wywoływania przeglądarki.
To dość podstawowe kodowanie, więc powinno działać we wszystkich stosunkowo nowoczesnych przeglądarkach.
CKeditor po prostu otwiera nowe okno z podanym adresem URL
// ========= uzupełnij poniższy kod dla Browse.php
źródło
Spędziłem chwilę próbując to rozgryźć i oto co zrobiłem. Złożyłem to bardzo prosto, bo właśnie tego potrzebowałem.
Bezpośrednio pod obszarem tekstowym ckeditor wprowadź plik do przesłania w ten sposób >>>>
'a następnie dodaj plik do przesłania, oto mój, który jest napisany w ASP. Jeśli używasz PHP itp., Po prostu zastąp ASP swoim skryptem wysyłania, ale upewnij się, że strona wyświetla to samo.
źródło
To jest podejście, którego użyłem. Jest to dość proste i działa dobrze.
W katalogu głównym edytora CK znajduje się plik o nazwie config.js
Dodałem to (nie potrzebujesz kwerend, to jest tylko dla naszego menedżera plików). Dołączyłem również trochę skórowania i zmiany pokazanych domyślnych przycisków:
Następnie nasz menedżer plików nazywa to:
źródło
Artykuł na zerokspocie zatytułowany Niestandardowe wywołania zwrotne przeglądarki plików w CKEditor 3.0 rozwiązuje ten problem. Najbardziej odpowiednią sekcję zacytowano poniżej:
źródło
Zacznij od zarejestrowania swojej niestandardowej przeglądarki / programu do przesyłania podczas tworzenia wystąpienia CKEditor.
Kod pliku do przesłania (ckFileUpload.php) i umieść plik do przesłania w katalogu głównym projektu.
Dokumentacja edytora Ck nie jest jasna po wykonaniu wielu prac badawczo-rozwojowych w celu przesłania niestandardowych plików w końcu znalazłem to rozwiązanie. To działa dla mnie i mam nadzieję, że będzie pomocne również dla innych.
źródło
Dla osób, które zastanawiają się nad implementacją Servlet / JSP, oto jak to zrobić ... Poniżej również wyjaśnię przesyłanie obrazu.
1) Najpierw upewnij się, że dodałeś przeglądarkę plików i zmienną uploadimage do pliku config.js. Upewnij się, że masz również folder uploadimage i filebrowser w folderze wtyczek.
2) Ta część mnie potknęła:
Dokumentacja witryny Ckeditor mówi, że musisz użyć tych dwóch metod:
Więc jeśli masz ckeditor zainicjowany w page editor.jsp , musisz stworzyć przeglądarkę plików (z podstawowym html / css / javascript) na stronie filebrowser.jsp .
editor.jsp (wszystko czego potrzebujesz to to w swoim tagu skryptu) Ta strona otworzy filebrowser.jsp w mini oknie po kliknięciu przycisku przeglądania serwera.
filebrowser.jsp (to niestandardowa przeglądarka plików, którą zbudowałeś, która będzie zawierać metody wymienione powyżej)
3) Serwlet FileBrowser
4) Serwlet UploadImage
Wróć do pliku config.js dla ckeditor i dodaj następujący wiersz:
Następnie możesz również przeciągać i upuszczać pliki:
I to wszystko ludzie. Mam nadzieję, że to komuś pomoże.
źródło