Vítám Vás u dnešního článku, ve kterém si ukážeme instalaci WYSIWYG editoru do admin sekce v phpRS.
PROČ WYSIWYG
Máte v redakčním týmu někoho, kdo neumí HTML a když chtěl vydat článek, napsal čistý text a musel čekat, než ho někdo zpracuje do HTML? Tyto problémy budou minulostí, ve WYSIWYG editoru se pracuje jako ve WORDu a každý zvládne jeho obsluhu na jedničku.
CO JE WYSIWYG?
WYSIWYG je zkratka z anglickeho What You See Is What You Get, preloženo do češtiny - Co vidíš to dostaneš.
PROČ FCKEDITOR?
Kdysi jsem se seznámil s HTMLAREOU a upravil jí pro phpRS 250. Ovšem to mi ještě nic neříkalo slovo validita. Když jsem se tímto "problémem" začal zabývat, zhrozil jsem se šíleného kódu, který HTMLAREA produkovala, začal jsem tedy hledat nějaký jiný WYSIWYG editor a našel jsem. FCKeditor se dá donutit ke generovaní čistého XHTML kódu, což je jistě výhoda.
PROČ VERZE 1.6 a ne 2.0 BETA 1?
Důvod je jednoduchý, BETA je plná děr a různé formuláře nefungují. Sice je zaručena funkčnost v Mozille, ovšem "funkčnost" musí být v uvozovkách, protože se jedná spíše o nefunkčnost :-) Editor ve verzi 2.0 BETA 1 je osekán o všechny vymoženosti, které z něj dělají právě tak dobrý a užitečný editor. Jmenujme jednu funkci za všechny: Vložit z WORDu - tato funkce vloží z WORDu jakýkoliv text, ovšem nevloží text s WORDovskými tagy, ale upraví ho pro XHTML.


Odstranění HTML AREY
Možná již používáte zmíněný editor HTMLAREA a chcete se ho zbavit. Rád Vám pomůžu.
admin.php a writer.php - odstraníme:
 <!-- // load htmlarea
_editor_url = "htmlarea/";                     // URL to htmlarea files
var win_ie_ver = parseFloat(navigator.appVersion.split("MSIE")[1]);
if (navigator.userAgent.indexOf('Mac')        >= 0) { win_ie_ver = 0; }
if (navigator.userAgent.indexOf('Windows CE') >= 0) { win_ie_ver = 0; }
if (navigator.userAgent.indexOf('Opera')      >= 0) { win_ie_ver = 0; }
if (win_ie_ver >= 5.5) {
  document.write('<scr' + 'ipt src="' +_editor_url+ 'editor.js"');
  document.write(' language="Javascript1.2"></scr' + 'ipt>');
} else { document.write('<scr'+'ipt>function editor_generate() { return false; }</scr'+'ipt>'); }
// -->
aarticles.php a wengine.php - odstraníme (v každém souboru 2x):
<br>Konec řádku ShiftEnter, Konec odstavce Enter
<script language=\"javascript1.2\">
editor_generate('aetext');
</script>

Instalace FCKeditoru
Nejprve musíme nějak FCKeditor získat. To můžete třeba na mém webu (http://www.nemrum.cz/bg).
Archív rozzipujeme tak, aby nám v kořenovém adresáři webu (u index.php) vznikl adresář FCKeditor - pozor na velká/malá písmena.

Nyní již přistoupíme k samotné integraci.
admin.php a writer.php
Najdeme si v souborech řádky (103 a 80)
<script type="text/javascript" language="javascript">
a vložíme před něj řádek
<script type="text/javascript" src="FCKeditor/fckeditor.js"></script>

Možná si říkáte, že v souborech jsme udělali změn více než dost ( :-) ), ale ještě to není všechno. Půjdeme tak daleko, že budeme chtít nastavit, komu se má editor zobrazovat a komu ne.
Nejprve si musíme zjistit uživatelovu přezdívku. Přidáme řádek ZA funkci Logo()
$GLOBALS["uzivid"]=$Uzivatel->Ukaz("username");
aarticles.php
Ve funkci Clanek() si najdeme radky (93 a 94)
// formular
echo "<form action=\"admin.php\" method=\"post\">
a upravíme je na
// formular
if (in_array ($GLOBALS["uzivid"], $GLOBALS["fckeditor"])):
    print "<script type=\"text/javascript\" language=\"javascript\">
           window.onload = function()
           {
            var oFCKeditor = new FCKeditor( 'aetext' ) ;
            oFCKeditor.ReplaceTextarea() ;
           }
           </script>";
endif;
echo "<form action=\"admin.php\" method=\"post\">

Další podobnou úpravu uděláme ve funkci FormUpClanek()
řádky 304 a 305
$data_clanek=mysql_fetch_assoc($dotazcla);
echo "<form action=\"admin.php\" method=\"post\">
upravíme na
$data_clanek=mysql_fetch_assoc($dotazcla);
 if (in_array ($GLOBALS["uzivid"], $GLOBALS["fckeditor"])):
   print "<script type=\"text/javascript\" language=\"javascript\">
         window.onload = function()
         {
          var oFCKeditor = new FCKeditor( 'aetext' ) ;
          oFCKeditor.ReplaceTextarea() ;
         }
         </script>";
 endif;
echo "<form action=\"admin.php\" method=\"post\">
wengine.php
Ve funkci Clanek() si najdeme radky (83 a 84)
// formular
echo "<form action=\"".RS_VYKONNYSOUBOR."\" method=\"post\">
a upravíme je na
// formular
if (in_array ($GLOBALS["uzivid"], $GLOBALS["fckeditor"])):
    print "<script type=\"text/javascript\" language=\"javascript\">
           window.onload = function()
           {
            var oFCKeditor = new FCKeditor( 'aetext' ) ;
            oFCKeditor.ReplaceTextarea() ;
           }
           </script>";
endif;
echo "<form action=\"".RS_VYKONNYSOUBOR."\" method=\"post\">

Další podobnou úpravu uděláme ve funkci FormUpClanek()
řádky 304 a 305
$data_clanek=mysql_fetch_assoc($dotazcla);
echo "<form action=\"".RS_VYKONNYSOUBOR."\" method=\"post\">
upravíme na
$data_clanek=mysql_fetch_assoc($dotazcla);
 if (in_array ($GLOBALS["uzivid"], $GLOBALS["fckeditor"])):
   print "<script type=\"text/javascript\" language=\"javascript\">
         window.onload = function()
         {
          var oFCKeditor = new FCKeditor( 'aetext' ) ;
          oFCKeditor.ReplaceTextarea() ;
         }
         </script>";
 endif;
echo "<form action=\"".RS_VYKONNYSOUBOR."\" method=\"post\">
config.php
V souboru config.php si nadefinujeme uživatele, kteří budou používat FCKeditor.
$GLOBALS["fckeditor"]=array("admin","prezdivka","dalsi_prezdivka","jeste_jedna_prezdivka");
Kde hodnoty polí jsou přezdívky uživatelů, kteří chtějí FCKeditor používat (přezdívky (user) jsou vidět v admin sekci v Editaci Autorů).


Nedokonalosti FCKeditoru verze 1.6
Zjistil jsem za dobu testování editoru pouze dvě věci, které mi činily potíže, proto Vás na ně upozorním.
Pokud jste zvyklí používat klávesu DELETE, asi Vás zklamu, FCKeditor ji nepodporuje. Musíte používat BACKSPACE
Pokud máte editor přepnutý na zobrazování zdroje, před odesláním (přidáním článku) musíte přepnout na WYSIWYG mód, jinak se článek neuloží.
Výhody FCKeditoru verze 1.6
Pokud používáte interní galerii obrázků v phpRS, mám pro Vás dobrou zprávu. FCKeditor ponechává tagy <obrazek...> v kódu, ovšem musíte je tam vkládat ručně při vypnutém WYSIWYG módu.

Autor článku: Michal Šafus (michal@nemrum.cz) - www.nemrum.cz/bg