A&R FileManager

Jeżeli korzystasz w swoich aplikacjach z edytora TinyMCE to wiesz że ten edytor o ile jest naprawdę świetny, to jest dostarczany bez menadżera plików (albo inaczej - menadżer jest, ale płatny). Nasz menadżer nie jest może tak rozbudowany (a może kiedyś będzie?) ale swoją rolę spełnia.
Pokrótce, co potrafi:

  • no, przeglądać pliki można. W dwóch trybach: lista oraz miniatury
  • wgrywać pliki (do 4 naraz)
  • jeżeli wgrywane są obrazy to można stworzyć sobie automatyczną miniaturę, ewentualnie z opcją przycięcia
  • usuwać pliki i katalogi hurtem i rekurencyjnie (nawet zapełnione)
  • ma wbudowany filtr typów plików, co oznacza że potrafi pokazać tylko te pliki którymi TinyMCE będzie zainteresowany, lub wszystkie
  • pobieranie plików. Tutaj uwaga - jest zaimplementowany mechanizm który nie pozwoli pobrać dowolnego pliku z serwera, a tylko te na których operuje menadżer. Niby oczywiste, a jednak większość tego typu menadżerów posiada tę straszną dziurę w bezpieczeństwie. Testowałem na localhoście (Windows, Apache). Na 5 testowanych, 4 bez problemu pozwoliły pobrać dowolny plik z mojego dysku C:. Straszne :(
  • posiada wbudowany mechanizm cache'owania wyświetlanych miniatur i samo-oczyszczania tego cache'u. Dzięki temu nie zajedzie Ci serwera.
A czego nie, a 'by się przydało':
  • edytować wcześniej wgranych zdjęć
  • kopiować / przenosić pliki pomiędzy katalogami
  • a może masz jakiś pomysł..?

Instalacja

Jest banalna do bólu. Interesuje Cię jeden plik - config.php. Wiem jak irytująca potrafi być konfiguracja tego typu menadżerów, bo sam przez to nie raz nie dwa musiałem przebrnąć. W przypadku naszego menadżera (co jest jego niewątpliwą, niezaprzeczalną i oczywistą zaletą) można się ograniczyć do jednego wpisu w pliku config.php. Tym wpisem będzie relatywna ścieżka do katalogu w którym menadżer ma czytać i zapisywać pliki.

Instalacja szczegółowa

Krok po kroku, z omówieniem wszystkich opcji konfiguracyjnych oraz samej konfiguracji edytora TinyMCE:

  1. Wymagania

    Potrzebujesz: serwer z jakimś HTTPd ze wsparciem dla PHP w wersji 5.0.2 lub nowszej.
    Skrypt korzysta z modułów mb_string oraz biblioteki GD2.

  2. Rozpakuj plik ZIP do katalogu plug-inów

    Najczęściej będzie to wyglądać tak: tiny_mce/plugins/airfilemanager/
    Plik ZIP możesz pobrać tutaj.

  3. Skonfiguruj A&R FileManagera

    Dostępne opcje w pliku 'config.php'. Obowiązkowa jest tylko jedna - FILES_PATH.

    Opcja Opis tejże
    LANG Język w którym ma być wyświetlany menadżer. Na dzień dzisiejszy dostępne są 'en'-Angielski, 'pl'-Polski, 'ru'-Rosyjski
    FILES_PATH Relatywna ścieżka do katalogu w którym menadżer ma czytać i zapisywać pliki. W tym katalogu może też zostać utworzony podkatalog _afm.cache jeżeli opcja cache`owania miniatur zostanie włączona. Ścieżka ma być relatywna do katalogu w którym znajduje się plik 'config.php'.

    Zobacz na przykładzie jak może to wyglądać

    VERIFY_BY_COOKIE
    lub
    VERIFY_BY_SESSION
    false - domyślnie - brak autoryzacji.
    VIEW_ALL true - pokazuj wszystkie znane pliki (media, obrazy, teksty, etc.) lub false - pokazuj tylko pliki które mogą być wstawione do TinyMCE.
    Opcja ustawiona na false spowoduje że gdy użytkownik wybierze w TinyMCE 'wstaw media' to zobaczy tylko pliki mediów (swf, qt, mov, etc.), ale już nie obrazy czy pliki tekstowe.
    Mimo włączenia tej opcji menadżer nie pokaże plików wykonywalnych lub potencjalnie niebezpiecznych.
    USE_CACHE W momencie gdy użytkownik korzysta z widoku miniatur, na bieżąco są one tworzone przez skrypt. W przypadku zdjęć o dużej rozdzielczości potrzeba na to sporej mocy obliczeniowej.
    A co w momencie gdy w jednym katalogu takich zdjęć będzie 20? 50? 100? A tysiąc? A biorąc pod uwagę że użytkownik może sobie 'skakać' po katalogach robi się z tego poważny problem wydajnościowy.
    Dlatego warto włączyć tę opcję (true). Menadżer stworzy sobie katalog w którym będzie przetrzymywał raz stworzone miniatury i czyścił go w miarę potrzeby (menadżer ukrywa ten katalog przed użytkownikiem).
    Domyślnie cache jest wyłączony (false) gdyż skrypt jest na etapie testów.
  4. Skonfiguruj TinyMCE

    Do konfiguracji należy dodać 2 rzeczy:

    • Do tinyMCE.init({...}) wpis: file_browser_callback : "airfilemanager",
    • Funkcję JavaScript: function airfilemanager(field_name, url, type, win) { switch(type) { case 'media': case 'image': case 'flash': case 'file': break; default: return !1; } tinyMCE.activeEditor.windowManager.open({ url: "tiny_mce/plugins/airfilemanager/afm.php"+"?type="+type, width: 780, height: 500, inline: "yes", close_previous: "no" },{ window: win, input: field_name }); }

    Powyższa funkcja może być w sumie dodana gdziekolwiek, np. w sekcji pliku w którym korzystasz z TinyMCE, jednak polecam ją umieścić pod wpisem tinyMCE.init({...}) żeby była pod ręką, tym bardziej że sama w sobie jest częścią konfiguracji, np. można w niej określić wielkość okienka z menadżerem.

Licencja, gwarancja, wsparcie

Wszystkie te kwestie wyjaśnia strona o skryptach.