Page break az FCKEditorba

júl 29

Az FCKEditor-2.6.3 alapértelmezett oldaltörésének átalakítása blog.hu kompatibilisre.

Először is kidobjuk a nyomtatási oldaltörést az editor/_source/commandclasses/fck_othercommands.js fájlban (nyomtatásban ugyanis nem szeretnénk oldalt törni):

e.style.pageBreakAfter = 'always'; // <-- törölni

Következő lépésként módosítjuk a break tag tartalmát a saját jelölésünkre:

e.innerHTML = '<span style="DISPLAY:none">&amp;nbsp;</span>';

helyett ez legyen:

e.innerHTML = '<!--more-->';

Ahhoz, hogy az editor a HTML kódban később felismerje az oldaltörést, és vizuálisan jelezni tudja, meg kell jelölnünk valahogy a page break DIV-et. Erre tökéletesen alkalmas egy CSS osztály:

e.className='page-break';

A page break behelyezése után a kurzornak az oldaltörés mögé kell ugrania. Ezt úgy érhetjük el, hogy az InsertNode után - ami elhelyezi a törést a dokumentumban -  beszúrjuk az alábbi kódot:

oRange.MoveToPosition(oFakeImage, 4); // 4 --> az oFakeImage után
oRange.Select();
oRange.Release();

Módosítanunk kell a dokumentum feldolgozót is, hogy ez editor felismerje a HTML-ben az oldaltörést. Ehhez a következő módosításokat kell végezni az editor/_source/internals/fckdocumentprocessor.js fájlban. Az FCKPageBreaksProcessor.ProcessDocument-ben cseréljük ki ezt a feltételt:

if (eDIV.style.pageBreakAfter == 'always' && eDIV.childNodes.length == 1 && eDIV.childNodes[0].style && eDIV.childNodes[0].style.display == 'none')

erre:

if (eDIV.className == 'page-break') // <-- ezzel jelöltük fentebb a DIV-ünket

Ennyi.

Az éles rendszeren a fenti kódok tömörített formában találhatók az editor/js/fckeditorcode_gecko.js fájlban.

javascript