Sokan megjegyzik, hogy a Drupal egyik legnagyobb gyengesége, hogy nincs beleintegrált WYSIWYG szövegszerkesztő. Ez várhatóan a Drupal hetes verziójával meg fog változni, de addig is nézzük meg mit tehetünk. A sablon válasz részemről az szokott lenni, hogy használj BUEditort, de van amikor az általam oly nagyon kedvelt és használt szerkesztő kevés. Valami más kellene, valami olyasmi amit egy egyszerű felhasználó is könnyedén használ. Ebben a kis írásban megpróbálom összefoglalni mivel kellet megküzdenem a TinyMCE integrálása során.
Miért pont TinyMCE
Valamikor a múlt egy homályos bizonytalan pontján, megjelent az iframe DOM elem designMode tulajdonsága, melyet ON állapotba kapcsolva lehetővé vált, hogy a felhasználó kedve szerint szerkessze az iframe tartalmát. Megnyílt az út tehát a WYSIWYG editorok előtt. Egy ilyen editor a következőképpen működik: Fogja a textarea tartalmát és beletolja egy éppen létrehozott iframe elembe, majd ráül ennek az elemnek a különböző eseményeire, lehetővé téve a szerkesztést. Mivel mindegyik böngésző és azok verziói különböző eseményeket és manipulációs függvényeket implementálnak a DOM modellben, nagy fába vágja a fejszéjét aki egy ilyennek nekilát. Nem beszélve arról, hogy nem lehet úgy elkészíteni, hogy minden böngészőben mindig működjön. Következésképpen nem lehet olyan WYSIWYG editort készíteni ami webes környezetben használható lenne. Azonban egy szűk csoport számára, ahol megkövetelhetem bizonyos böngészők meglétét kivitelezhető a feladat még ha nem is egy leányálom. Ebben a bizonytalan korban több, még fejlesztői állapotú szerkesztőt kipróbáltam. Volt olyan amitől a gép is lehalt, volt amelyiktől csak a böngésző omlott magára de volt egy amit viszonylag jól lehetett használni ez volt a TinyMCE. Ezért van az, hogy én általában azt használom. Nemrég Tolmi és Boobaa a figyelmemet az FCKEditor felé irányította és meggyőztek. Valamikor mindenképpen ki fogom próbálni, mivel nagyon ígéretesnek tűnik a programozói felülete.
Hogyan készült?
Magához a TinyMCE-hez létezik egy modul ami nagyszerű, de olyan sok mindent lehet benne beállítani, hogy egy kisebb pilótavizsga kell a használatához. Ráadásul a legtöbb beállítás nem is érthető anélkül, hogy a TinyMCE szerkesztőt igazán ismernénk. Vannak olyan beállítások amik nem elérhetőek és vannak olyanok, amiket a modul segítségképpen mindig hozzáad a rendszerünkhöz. Ezért aztán nekiálltam és írtam egy kis modult, amellyel minden beállítást a kezemben tartok. A modul viszonylag egyszerű. Semmi mást nem csinál, mint mindig betölti a tinymce.js fájt, ha egy űrlapban van többsoros szövegmező, és hozzáadja az általunk beállított paramétereket. Van benne tehát egy beállító felület, ahol ezeket a paramétereket állíthatjuk be. Itt elő is jött az első nehézség, ugyanis a beállító mezőre is rárakja magát a TinyMCE így lehetetlenné téve a beállítást. Ezért aztán mindig kell tartalmaznia a következő sort a beállításoknak:
editor_deselector : "mceNoEditor", //please not remove this line
A második nehézség nem váratott magára sokat. A hatos Drupalban ugyanis a összefoglalót/bevezetőt könnyedén el tudjuk választani a szöveg többi részétől egy kis ügyes JavaScriptes programocska segítséggel. Igen ám, de nekünk már nem szöveges beviteli mezőnk van, hanem egy iframe-ünk. Tehát az elválasztó gomb megnyomásakor nekünk szimulálni kéne az egész folyamatot.
body.mceContentBody { background: #FFF; }
Bár maga a modul rengeteg gyermekbetegséggel rendelkezik, nem gondolom úgy, hogy kevésbé lenne használható, mint az eredeti modul. Fejleszteni van még mit rajta. Többek között nincsenek jogosultságok, tehát bárki hozzáfér a szerkesztőhöz ami esetünkben nem probléma, hisz egy olyan brossúra honlap részére készült, melyben nem várnak semmilyen felhasználói reakciót.