wpisy komentarze

TinyMCE – wprowadzenie

27-03-2009

Jako programista i koder jestem zwolennikiem ręcznego pisania kodu. Co innego uzupełnianie składni czy podpowiadanie metod znane z profesjonalnych środowisk programistycznych, np. MS Visual Studio. Tak samo nie mam nic przeciwko wstawianiu gotowych bloków kodu, np. przez plugin QuickText dla edytora Notepad++.

Jednak korzystanie z edytorów WYSIWYG podczas tworzenia aplikacji internetowych to jedna z najgorszych praktyk. Edytory te prowadzą często do tworzenia nadmiarowego kodu. Bynajmniej nie chodzi tu tylko o przestarzałe znaczniki i inne wynalazki, które nie przechodzą poprawnie walidacji. Edytory WYSIWYG najzwyczajniej w świecie nie potrafią tworzyć w pełni semantycznego kodu XHTML. Jednak w pewnym stopniu mogą być przydatne.

Wprowadzenie

TinyMCE to niezależny internetowy edytor WYSIWYG napisany w Javascript. TinyMCE jest wydawany przez Moxiecode Systems AB jako Open Source na licencji LGPL. Główną zaletą tego produktu jest łatwa integracja z dowolnym systemem zarządzania treścią.

W jednym z projektów klient chciał formatować treść swoich wpisów. Oczywiście rozsądne było założenie, że klient nie zna znaczników HTML, składni BBCode czy Textile. Po krótkim namyśle, postanowiłem skorzystać z gotowego rozwiązania jakim jest TinyMCE.

Instalacja

Na początek musimy ściągnąć potrzebny TinyMCE, najlepiej w najnowszej wersji. Pozostaje nam wypakowanie archiwum w wybranej lokalizacji i podlinkowanie w kodzie naszej strony.

<script language="javascript" type="text/javascript" src="js/tiny_mce/tiny_mce.js"></script>

W moim przypadku był to katalog js/tiny_mce, w którym znajdował się właściwy plik tiny_mce.js. Uruchomienie edytora jest równie proste. Należy jedynie pamiętać o objęciu całości przez {literal} i {/literal}, jeżeli korzystamy z szablonów Smarty, ponieważ przy tworzeniu obiektu tinyMCE stosowane są klamry.

<script language="javascript" type="text/javascript">
  tinyMCE.init({
    mode : "textareas"
  });
</script>

Instalacja to dopiero początek. Cała magia skryptu kryje się w mnogości opcji konfiguracyjnych.

Konfiguracja

Kilkanaście kluczowych opcji pozwala na praktycznie dowolne ustawienie wyglądu i zachowania naszego edytora. Dokumentacja TinyMCE zawiera spis wszystkich parametrów konfiguracyjnych.

Opcja mode pozwala na ustawienie, jakie elementy naszej aplikacji będą edytorami. Wartość textareas powoduje przekształcenie wszystkich znaczników w edytory WYSIWYG.

tinyMCE.init({
  mode : "textareas"
});

Możliwe jest również przekształcenie w edytor dowolnego elementu na naszej stronie. W tym wypadku ustawiamy wartość exact oraz podajemy dodatkowy parametr elements, w celu powiadomienia, które elementy chcemy zmienić w edytor.

tinyMCE.init({
  mode : "exact",
  elements : "post-text"
});

Jeżeli potrzebujemy polskich podpowiedzi (hints) lub innych elementów to możliwy jest wybór języka. Jednak konieczne jest ściągnięcie odpowiednich plików z serwera TinyMCE i umieszczenie ich w naszych katalogach. Resztę załatwia opcja language z wartością danego języka. W naszym przypadku będzie to pl dla języka polskiego.

tinyMCE.init({
  ...
  language : "pl"
});

Następnie powinniśmy ustawić theme, który odpowiada za ilość funkcji, dostępnych w edytorze. Wartość advanced pozwala na dużą elastyczność, zarówno w doborze funkcji jak i innych ustawieniach. Druga możliwość to simple, która udostępnia edytor z podstawowymi funkcjami.

tinyMCE.init({
  ...
  theme : "advanced"
});

Wartość advanced jest domyślna, a nasz edytor może zawierać ponad 50 różnych funkcji! Zapewne większości użytkowników niepotrzebne są niektóre funkcje, dlatego możemy skorzystać z kolejnej opcji konfiguracyjnej.

Jeżeli potrzebujemy tylko wybrane funkcje i potrafimy zmieścić je w dwóch lub jednym pasku to wystarczy dodać kolejny fragment kodu.

tinyMCE.init({
  ...
  theme_advanced_buttons1 : "bold,italic,underline,separator,strikethrough",
  theme_advanced_buttons2 : "undo,redo,|,link,unlink",
  theme_advanced_buttons3 : ""
});

W pierwszym pasku mamy Pogrubienie, Pochylenie, Podkreślenie oraz Przekreślenie rozdzielone separatorem pionowym. W kolejnym pasku znajdują się Cofnij i Ponów oraz Dodaj link i Usuń link, także rozdzielone separatorem. Trzeci pasek jest zdefiniowany jako pusty. Dla krótszej notacji można stosować | zamiast separator.

Możemy również wybrać pozycję pasków oraz wyrównanie przycisków. Dopuszczalne wartości dla ustawienia pasków to top, bottom oraz external, przy czym druga jest domyślna, a trzecia wymaga dodatkowych opcji w celu ustawienia pasków w zewnętrznej warstwie. Jeśli chcemy wyrównać przyciski to możemy skorzystać z wartości left, right lub center, przy czym domyślnie przyciski umieszczone są na środku paska.

tinyMCE.init({
  ...
  theme_advanced_toolbar_location : "top",
  theme_advanced_toolbar_align : "left"
});

Podsumowanie

Artykuł przedstawia ogólne informacje na temat TinyMCE. Zdaję sobie sprawę, że omówiłem jedynie podstawowe opcje konfiguracyjne, ale w większości użytkowników jest to wystarczające. Więcej informacji możemy znaleźć w dokumentacji.

TinyMCE jest bardzo elastyczne i pozwala na praktycznie dowolną konfigurację. Nie należy jednak przesadzać, ponieważ czasem coś może nie działać tak jak tego oczekujemy.

Dodaj komentarz