ugrás a tartalomhoz

Több FCKEditor az oldalon

fERI · 2008. Nov. 21. (P), 14.58
Sziasztok!

Az alábbi dologban kérnék segítséget:

Van egy adminisztrációs felület, melyen 2 db FCKEditor-t szeretnék megjeleníteni. A megjelenítést a két helyen az alábbi PHP kóddal valósítom meg:
$oFCKeditor = new FCKeditor($FCKEditorID);
$oFCKeditor->BasePath = $BaseRUL;
$oFCKeditor->ToolbarSet = $ToolBarSet;
$oFCKeditor->Height  = $Magassag;
$oFCKeditor->Width = $Szelesseg;
$oFCKeditor->Value = $Value;
$oFCKeditor->Create();
A fenti példának megfelelően a két azonosító legyen Editor1 és Editor2, és fontos megemlíteni, hogy az Editor1 töltődik be előbb. Az szerkesztők megjelennek rendesen.

Amikor a tartalom szerkesztéssel végeztem, szeretném a tartalmakat a szerverre feltölteni prototype.js használatával.

Készítettem egy JavaScript osztályt, mely összegyűjti a szükséges információkat a tartalmak beküldéséhet, beleértve az editorok tartalmát is.

Az editorok tartalmát az alábbi JavaScript kóddal szereném kiszedni a szerkesztőből:
var FCKEditorTartalomEditor1 = FCKeditorAPI.GetInstance('Editor1');
var TartalomEditor1 = FCKEditorTartalomEditor1.EditorDocument.body.innerHTML;
var FCKEditorTartalomEditor2 = FCKeditorAPI.GetInstance('Editor2');
var TartalomEditor2 = FCKEditorTartalomEditor2.EditorDocument.body.innerHTML;
Az Editor1 azonosítóval rendelkező szerkesztővel nincs gond (azaz a FCKEditorTartalomEditor1 értéke object). Viszont a második szerkesztő esetén annak ellenére, hogy az editor az oldalon gond nélkül megjelent, JavaScript-ből nem lát semmit a böngésző, azaz a FCKEditorTartalomEditor2 változó értéke undefined. Így persze a tartalmakat nem tudom elérni.

Teszteltem Firefox3 és Internet Explorer 7 alatt a dolgot, de mind a két böngésző ugyan úgy reagál, a kérdéses változó értéke undefined.

Találkozott már valaki ilyen problémával?

Tud valaki segíteni?

Előre is köszi a segítséget.

Üdv.
fERI
 
1

Hmm

cSuwwi · 2008. Nov. 21. (P), 16.40
Az első kódrészlet ugye kétszer van beszúrva?
Esetleg valami mintaoldal, könnyebben tudnánk segíteni...
2

Nem kétszer

fERI · 2008. Nov. 21. (P), 17.05
Szia cSuwwi!

Az első kódrészle az egy PHP osztálynak a része, melyet a megfelelő DIV-ekben meghívók (azaz kétszer egymás után) Editor1 és Editor2 azonosítókkal.

Közben szenvedtem még vele, és az alábbi próbálkozásoknál ugyan az az eredmény:
1. Nem megy a PHP-s integráció (ezt láttad fent), egy osztályból metódus meghívásával;
2. JavaScript intergációs módszer szintén nem megy a ... oFCKeditor.Create();
alkalmazásával;
3. Javascript ... oFCKeditor.ReplaceTextarea(); alkalmazásával szintén nem megy;
4. JavaScript ... div.innerHTML = fck.CreateHtml(); szintén nem megy.

Mindegyik esetben a szerkesztők megjelennek, de a második szerkesztőt, mint objektumot nem érem el.

Sajnos jobb ötletem nincs, a két szerkesztőt beleteszen egy-egy IFRAME-ba. Ennek nem nagyon örülök, mert nekem gányolásnak tűnik, és a tárhely szempontjából erre nem vagyok rákényszerítve.

Sajnos az oldal nincs kirakva, még fejlesztés alatt áll.
Az érdekesség az, hogy amikor a szerkesztők integrálásra kerülnek az oldalba, akkor a </body> felett létrehoz 2 db teljesen egyforma rejtett IFRAME, és gyanúm szerint ez lehet az, ami összeakad. De ez csak tipp.

Esetleg így látatlanban van valakinek a fentiek alapján valami ötlete?

Előre is köszönöm.

Üdv.
fERI
3

Átmeneti megoldás

fERI · 2008. Nov. 21. (P), 17.45
Sziasztok!

A fenti problémával kapcsolatban az alábbi megoldást találtam ki. Miután a szerkesztők inicializálásra kerültek (teljesen mindegy, hogy PHP vagy JavaScript segítségével), a szerkesztők objektumait kiteszem egy-egy GLOBÁLIS JavaScript változóba. Íme a JavaScript forrás, mely megvalósítja a feladatot (a fentebb említett példáimat figyelembe véve):

var Editor1Object = null;
var Editor2Object = null;

function FCKeditor_OnComplete(editorInstance){
		if(editorInstance.Name == 'Editor1') Editor1Object = editorInstance;
		if(editorInstance.Name == 'Editor2') Editor2Object = editorInstance;
}
A fenti kód az FCKEditor szolgáltatása, és akkor fut le, amikor a szerkesztő inicializálása sikeresen megtörtént.

Így az objektumok megvannak, és az XHTML és Plain Text tartalmak lekérdezhetők az alábbi JavaScript kódokkal:

var Editor1XHTML = Editor1Object.EditorDocument.body.innerHTML;
var Editor1PalinText = Editor1Object.EditorDocument.body.textContent || Editor1Object.EditorDocument.body.innerText;
var Editor2XHTML = Editor2Object.EditorDocument.body.innerHTML;
var Editor2PlainText = Editor2Object.EditorDocument.body.textContent || Editor2Object.EditorDocument.body.innerText;
Így elérhető minden adat, és a megfelelő tartalmakat is adja vissza.

Mondjuk az eredti probléma még továbbra is rejtély.

Ha valaki esetleg rájön, akkor kérem, jelezze.

Amennyiben valakinek van jobb megoldása, akkor nyitott vagyok mindenre.

Köszönöm a fáradozásakot.

Üdv.
fERI