<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>adamczuk.net.pl &#187; tinymce</title>
	<atom:link href="http://adamczuk.net.pl/tag/tinymce/feed/" rel="self" type="application/rss+xml" />
	<link>http://adamczuk.net.pl</link>
	<description>Just another WordPress weblog</description>
	<lastBuildDate>Fri, 03 Feb 2012 21:59:27 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>TinyMCE &#8211; wprowadzenie</title>
		<link>http://adamczuk.net.pl/2009/03/27/tinymce-wprowadzenie/</link>
		<comments>http://adamczuk.net.pl/2009/03/27/tinymce-wprowadzenie/#comments</comments>
		<pubDate>Fri, 27 Mar 2009 09:23:30 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Java Script]]></category>
		<category><![CDATA[js]]></category>
		<category><![CDATA[tinymce]]></category>
		<category><![CDATA[wysiwyg]]></category>

		<guid isPermaLink="false">http://adamczuk.net.pl/?p=173</guid>
		<description><![CDATA[Podstawowe informacje na temat edytora WYSIWYG - TinyMCE.]]></description>
			<content:encoded><![CDATA[<p>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 <a href="http://notepad-plus.sourceforge.net/">Notepad++</a>.</p>
<p>Jednak korzystanie z edytorów <acronym title="what you see is what you get">WYSIWYG</acronym> 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.<span id="more-173"></span></p>
<h3>Wprowadzenie</h3>
<p><strong>TinyMCE</strong> to niezależny internetowy edytor WYSIWYG n<acronym title="what you see is what you get"></acronym>apisany w Javascript. TinyMCE jest wydawany przez <a href="http://www.moxiecode.com/">Moxiecode Systems AB</a> jako Open Source na licencji LGPL. Główną zaletą tego produktu jest łatwa integracja z dowolnym systemem zarządzania treścią.</p>
<p>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.</p>
<h3>Instalacja</h3>
<p>Na początek musimy ściągnąć potrzebny <a href="http://tinymce.moxiecode.com/download.php">TinyMCE</a>, najlepiej w najnowszej wersji. Pozostaje nam wypakowanie archiwum w wybranej lokalizacji i podlinkowanie w kodzie naszej strony.</p>
<pre><code>&lt;script language="javascript" type="text/javascript" src="js/tiny_mce/tiny_mce.js"&gt;&lt;/script&gt;</code></pre>
<p>W moim przypadku był to katalog <code>js/tiny_mce</code>, w którym znajdował się właściwy plik <code>tiny_mce.js</code>. Uruchomienie edytora jest równie proste. Należy jedynie pamiętać o objęciu całości przez <code>{literal}</code> i <code>{/literal}</code>, jeżeli korzystamy z szablonów Smarty, ponieważ przy tworzeniu obiektu tinyMCE stosowane są klamry.</p>
<pre><code>&lt;script language="javascript" type="text/javascript"&gt;
  tinyMCE.init({
    mode : "textareas"
  });
&lt;/script&gt;</code></pre>
<p>Instalacja to dopiero początek. Cała magia skryptu kryje się w mnogości opcji konfiguracyjnych.</p>
<h3>Konfiguracja</h3>
<p>Kilkanaście kluczowych opcji pozwala na praktycznie dowolne ustawienie wyglądu i zachowania naszego edytora. Dokumentacja TinyMCE zawiera <a href="http://wiki.moxiecode.com/index.php/TinyMCE:Configuration">spis</a> wszystkich parametrów konfiguracyjnych.</p>
<p>Opcja <strong>mode</strong> pozwala na ustawienie, jakie elementy naszej aplikacji będą edytorami. Wartość <strong>textareas</strong> powoduje przekształcenie wszystkich znaczników w edytory WYSIWYG.</p>
<pre><code>tinyMCE.init({
  mode : "textareas"
});</code></pre>
<p>Możliwe jest również przekształcenie w edytor dowolnego elementu na naszej stronie. W tym wypadku ustawiamy wartość <strong>exact</strong> oraz podajemy dodatkowy parametr <strong>elements</strong>, w celu powiadomienia, które elementy chcemy zmienić w edytor.</p>
<pre><code>tinyMCE.init({
  mode : "exact",
  elements : "post-text"
});</code></pre>
<p>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 <strong>language</strong> z wartością danego języka. W naszym przypadku będzie to <strong>pl</strong> dla języka polskiego.</p>
<pre><code>tinyMCE.init({
  ...
  language : "pl"
});</code></pre>
<p>Następnie powinniśmy ustawić <strong>theme</strong>, który odpowiada za ilość funkcji, dostępnych w edytorze. Wartość  <strong>advanced</strong> pozwala na dużą elastyczność, zarówno w doborze funkcji jak i innych ustawieniach. Druga możliwość to <strong>simple</strong>, która udostępnia edytor z podstawowymi funkcjami.</p>
<pre><code>tinyMCE.init({
  ...
  theme : "advanced"
});</code></pre>
<p>Wartość <strong>advanced</strong> 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.</p>
<p>Jeżeli potrzebujemy tylko wybrane funkcje i potrafimy zmieścić je w dwóch lub jednym pasku to wystarczy dodać kolejny fragment kodu.</p>
<pre><code>tinyMCE.init({
  ...
  theme_advanced_buttons1 : "bold,italic,underline,separator,strikethrough",
  theme_advanced_buttons2 : "undo,redo,|,link,unlink",
  theme_advanced_buttons3 : ""
});</code></pre>
<p>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ć <code>|</code> zamiast <code>separator</code>.</p>
<p>Możemy również wybrać pozycję pasków oraz wyrównanie przycisków. Dopuszczalne wartości dla ustawienia pasków to <strong>top</strong>, <strong>bottom</strong> oraz <strong>external</strong>, 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 <strong>left</strong>, <strong>right</strong> lub <strong>center</strong>, przy czym domyślnie przyciski umieszczone są na środku paska.</p>
<pre><code>tinyMCE.init({
  ...
  theme_advanced_toolbar_location : "top",
  theme_advanced_toolbar_align : "left"
});</code></pre>
<h3>Podsumowanie</h3>
<p>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 <a href="http://wiki.moxiecode.com/index.php/TinyMCE:Index">dokumentacji</a>.</p>
<p>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.</p>
]]></content:encoded>
			<wfw:commentRss>http://adamczuk.net.pl/2009/03/27/tinymce-wprowadzenie/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
	</channel>
</rss>

