TinyMCE – podgląd na żywo

Przy wprowadzaniu tekstu w panelu administracyjnym czasami potrzebne jest dokładniejsze rozeznanie jak będzie on wyglądać w części przeznaczonej dla odwiedzających (szczególnie, gdy obszar dla tekstu jest ograniczony). TinyMCE posiada podgląd, ale nie jest on zbyt użyteczny. Z dostępnych metod onchange_callback reaguje jedynie na kliknięcia myszki (to się przyda, o ile tekst będzie formatowany), natomiast handle_event_callback poprawnie działa przy jednym polu edycyjnym (przy edycji w drugim edytorze pokazuje się komunikat, że obiekt wywołujący zdarzenie jest niezdefiniowany).

Jest jeszcze jedna metoda, która sprawdzi się najlepiej – setup. Używamy jej przy inicjalizacji tinymce:

<script type="text/javascript">
tinyMCE.init({
// ... //
setup : function(ed) {
      ed.onKeyUp.add(function(ed, e) {
			 if(ed.getElement().getAttribute( 'id' ) == ID_POLA ) {
			   $("#ID_PODGLADU").html(ed.getContent()) ;
			 }
			 else {
			   $("#ID_PODGLADU2").html(ed.getContent()) ;
			 }
      });
   },
// ... //
});
</script>

Do tego formularz z polami tekstowymi:

<textarea id="ID_POLA" name="tekst1"></textarea><br />
<div id="ID_PODGLADU"></div>
<textarea id="ID_POLA2" name="tekst2"></textarea><br />
<div id="ID_PODGLADU2"></div>

oraz powiązanie tinymce z powyższymi polami:

<script type="text/javascript">
if( document.getElementById( 'ID_POLA' ))
  tinyMCE.execCommand('mceAddControl', false, 'ID_POLA');
  if( document.getElementById( 'ID_POLA2' ))
  tinyMCE.execCommand('mceAddControl', false, 'ID_POLA2');
</script>

Po odpowiednim przygotowaniu styli dla pól podglądu uzyskamy oczekiwany rezultat: po każdym naciśnięciu klawisza zawartość odpowiedniego pola ulegnie zmianie. Treść z edytora (ed.getContent()) zostanie wstawiona do pola, które powiązane jest z danym edytorem (ed.getElement().getAttribute( 'id’ )). Jako atrybut można zastosować także 'name’ zamiast 'id’.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

*