b|)1U~v;FF/٪nJZ.\ r?1T  8|vKV>ۦ )\Ӛ;%֝rsgN {UB'V[=,sAJ0]A eSsA!?\& $z*)M N]$ؑuqpHh 2far͍tRW_ = z`mݤŏ[HZK_!DuDfWU.5Лz}U/_wttIoLj~0<.Ѝв 8de*>BPMc"ܔ~aÆ̬Ii\ozlēu*RO@L8:Mۈwuq/_Xw2^-݀rB xZm- H|ҡ?^>$5lbdT ANALm_5Q2 j,VZm&clՃ/zzHdg؝#M]}a@mDmeЧ^/dԒ{usuaVvW䭫ň5$It~i/d=铆/SQK<‚J^X6m.6u{X⥡o]>k4Xw;T6|l!uVIƓ.gy!N yqJC~%B߅a&(2t2rOC˘ B?@Xb BKNt'K(7*fV.|Qk[\ZQ/mT,v#d0³qɁK_u\Dt +d7>;wuXmcUyˠM 2߰@ɓHl'݆^;56LQg*<1e2Y3>.4k9$uDBOBڸ"݀RiُA99q~8NKGoP_+öN:oJk^P^epxJ]J~^L d^sMXkH#L>f"UnM>H/0z) -R@r 1m2fHŚeHNڕqrLHopS d1>t <}@ SI:D+;)2՘5W= o8@oKLLA<{'r:8" Gk i$*aix+54{d:heBmܫ4ʊkq/2Aਜ+h(<>~R`a^Z;qJ ŭ1sͼ"A#V7*4gm ?uS}MJR $pFbȖ :܌e,"X2H[R υq5PQ$be(v|QPJ` _W Bñ껟f@{x<"t ;s@e(3#=B] ˡ;NJr#M%I:Esew^hv?)͸x-G*pԈ_N=oU5\ =ˇC`8A{=avy?T9x9ݨ-hKvv„l~TE륌Nĵc\fb] pVmQeuװ$>A?$!e4T2^.pzDS;R7E2Ez`u tAE ~ء#6h.E'ȧK:@bzYh/иĜӇ膠PA?E].֜96qMn :j nhiE(\a'%T[&r3D "EAT"@X b'c:hۼQ YW[n}+&9K<Er}~AR7UP<6OԲh#M\ ÎF"^c!@MrdJ@}@*^H=,TTx2'5]|TO n^P3ڣD ~ܮ;QMJ>q)!2ǧ$O=fJHV'0pNp0cF [2c^M9TM\@]CJ)_{ 8x fEVځPlJlC#uԔ`aW0ƎAf݇|)2,T%Weώ,OZ{*nԜzy*f_٦c)NʻrMsRk0f㰱caz /EG|.5^ (1dRaҒ,lKvLƐ^˴15 ;Hh^Ϻ <_UxånY,Y|zńpcE[ l/M_;y`8@K4g<.HRzeP>>lRcR[+lGLI eѿ %" gpx?-걻9Q~BDLH*1B(< ! -ؑQ>rp˩439dfont', attributes: { 'face': '#(family)' } }, /* * Font sizes. */ fontSize_sizes: 'xx-small/1;x-small/2;small/3;medium/4;large/5;x-large/6;xx-large/7', fontSize_style: { element: 'font', attributes: { 'size': '#(size)' } }, /* * Font colors. */ colorButton_foreStyle: { element: 'font', attributes: { 'color': '#(color)' } }, colorButton_backStyle: { element: 'font', styles: { 'background-color': '#(color)' } }, /* * Styles combo. */ stylesSet: [ { name: 'Computer Code', element: 'code' }, { name: 'Keyboard Phrase', element: 'kbd' }, { name: 'Sample Text', element: 'samp' }, { name: 'Variable', element: 'var' }, { name: 'Deleted Text', element: 'del' }, { name: 'Inserted Text', element: 'ins' }, { name: 'Cited Work', element: 'cite' }, { name: 'Inline Quotation', element: 'q' } ], on: { pluginsLoaded: configureTransformations, loaded: configureHtmlWriter } }); /* * Add missing content transformations. */ function configureTransformations( evt ) { var editor = evt.editor; editor.dataProcessor.htmlFilter.addRules( { attributes: { style: function( value, element ) { // Return #RGB for background and border colors return CKEDITOR.tools.convertRgbToHex( value ); } } } ); // Default automatic content transformations do not yet take care of // align attributes on blocks, so we need to add our own transformation rules. function alignToAttribute( element ) { if ( element.styles[ 'text-align' ] ) { element.attributes.align = element.styles[ 'text-align' ]; delete element.styles[ 'text-align' ]; } } editor.filter.addTransformations( [ [ { element: 'p', right: alignToAttribute } ], [ { element: 'h1', right: alignToAttribute } ], [ { element: 'h2', right: alignToAttribute } ], [ { element: 'h3', right: alignToAttribute } ], [ { element: 'pre', right: alignToAttribute } ] ] ); } /* * Adjust the behavior of htmlWriter to make it output HTML like FCKeditor. */ function configureHtmlWriter( evt ) { var editor = evt.editor, dataProcessor = editor.dataProcessor; // Out self closing tags the HTML4 way, like
. dataProcessor.writer.selfClosingEnd = '>'; // Make output formatting behave similar to FCKeditor. var dtd = CKEDITOR.dtd; for ( var e in CKEDITOR.tools.extend( {}, dtd.$nonBodyContent, dtd.$block, dtd.$listItem, dtd.$tableContent ) ) { dataProcessor.writer.setRules( e, { indent: true, breakBeforeOpen: true, breakAfterOpen: false, breakBeforeClose: !dtd[ e ][ '#' ], breakAfterClose: true }); } }