spacevillain (spacevillain) wrote in changelog,
spacevillain
spacevillain
changelog

[livejournal] r22954: LJSUP-13756: Doesn't work synchronizatio...

Committer: atyurin
LJSUP-13756: Doesn't work synchronization between HTML editor and RTE for large texts
U   trunk/htdocs/js/ck/ckeditor.js
U   trunk/htdocs/js/ck/plugins/livejournal/plugin.js
Modified: trunk/htdocs/js/ck/ckeditor.js
===================================================================
--- trunk/htdocs/js/ck/ckeditor.js	2012-09-21 13:44:15 UTC (rev 22953)
+++ trunk/htdocs/js/ck/ckeditor.js	2012-09-21 14:11:46 UTC (rev 22954)
@@ -144,8 +144,8 @@
 M.addClass(O[2]);}else if(M.hasClass(O[2])){M.removeClass(O[2]);M.addClass(O[0]);}switch(M.getStyle(N)){case 'left':M.setStyle(N,'right');break;case 'right':M.setStyle(N,'left');break;}}}};D.prototype={exec:function(I){var W=this;var J=I.getSelection(),K=I.config.enterMode;if(!J)return;var L=J.createBookmarks();if(p.LJLike.node)p.LJLike.node.setAttribute('lj-style','text-align: '+W.value);else{var M=J.getRanges(true),N=W.cssClassName,O,P,Q=I.config.useComputedState;Q=Q===undefined||Q;for(var R=M.length-1;R>=0;R--){var S=M[R],T=S.getEnclosedNode();if(T&&T.type===1&&T.is('iframe'))return;O=S.createIterator();O.enlargeBr=K!=2;while(P=O.getNextParagraph(K==1?'p':'div')){P.removeAttribute('align');P.removeStyle('text-align');var U=N&&(P.$.className=e.ltrim(P.$.className.replace(W.cssClassRegex,''))),V=W.state==2&&(!Q||B(P,true)!=W.value);if(N){if(V)P.addClass(N);else if(!U)P.removeAttribute('class');}else if(V)P.setStyle('text-align',W.value);}}}I.focus();I.forceNextSelectionCheck();J.selectBookmarks(L);}};var F=new D(t,'LJJustifyLeft','left'),G=new D(t,'LJJustifyCenter','center'),H=new D(t,'LJJustifyRight','right');t.addCommand('LJJustifyLeft',F);t.addCommand('LJJustifyCenter',G);t.addCommand('LJJustifyRight',H);t.ui.addButton('LJJustifyLeft',{label:t.lang.justify.left,command:'LJJustifyLeft'});t.ui.addButton('LJJustifyCenter',{label:t.lang.justify.center,command:'LJJustifyCenter'});t.ui.addButton('LJJustifyRight',{label:t.lang.justify.right,command:'LJJustifyRight'});t.on('selectionChange',e.bind(C,F));t.on('selectionChange',e.bind(C,H));t.on('selectionChange',e.bind(C,G));t.on('dirChanged',E);})();(function(){var B='LJPollLink';if(!LJ.pageVar('remoteUser',true))return;LiveJournal.register_hook('poll_response',function(C){var D=new Poll(C),E="<div class='lj-poll-inner lj-rtebox-inner'>"+D.outputHTML()+'</div>',F=D.outputLJtags(),G=p[B].node;if(G){G.setAttribute('lj-content',E);G.setAttribute('lj-data',F);G.removeAttribute('style');}else{G=new h('iframe',t.document);G.setAttribute('lj-content',E);G.setAttribute('lj-cmd','LJPollLink');G.setAttribute('lj-data',F);G.setAttribute('lj-class','lj-poll lj-rtebox');G.setAttribute('class','lj-poll-wrap');G.setAttribute('frameBorder',0);G.setAttribute('allowTransparency','true');t.insertElement(G);}y();});t.addCommand(B,{exec:function(C){var D=p.LJPollLink.node;if(D)n(B,'poll',{ljData:decodeURIComponent(D.getAttribute('lj-data')),editMode:true,disabled:D&&(D.getAttribute('data-disabledPoll')?true:false)});else n(B,'poll');
 },editorFocus:false});t.ui.addButton(B,{label:m.LJPoll_Title,command:B});})();(function(){var B='LJLike',C='like';o.defaultButtons=[];for(var D=0;D<o.length;D++){btn=o[D];o[btn.id]=o[btn.abbr]=btn;o.defaultButtons.push(btn.id);}LiveJournal.register_hook('like_response',function(E){var F=[],G=[],H=typeof E==='string';for(var I=0,J;I<o.length;I++){J=o[I];if(H&&J.checked||E.indexOf(J.id)!=-1){F.push(J.id);G.push(J.html);}}var K=p[B].node,L=encodeURIComponent('<div class="lj-rtebox-inner lj-like-inner"><span class="lj-like-wrapper">'+G.join('')+'</span></div>');if(K){K.setAttribute('buttons',F.join(','));K.setAttribute('lj-content',L);K.removeAttribute('defaults');}else{K=new h('iframe',t.document);K.setAttribute('lj-class','lj-like');K.setAttribute('class','lj-like-wrap lj-rtebox');K.setAttribute('buttons',F.join(','));K.setAttribute('lj-content',L);K.setAttribute('lj-cmd','LJLike');K.setAttribute('frameBorder',0);K.setAttribute('allowTransparency','true');K.setAttribute('defaults',H);t.insertElement(K);}y();});t.addCommand(B,{exec:function(E){var F=p[B].node;if(F)n(B,C,{buttons:F.getAttribute('buttons'),editMode:true});else n(B,C);},editorFocus:false});t.ui.addButton(B,{label:m.LJLike_Title,command:B});})();},afterInit:function(t){var u=t.dataProcessor;function v(w,x,y,z){z=z||'text';var A=new a.htmlParser.element('iframe');A.attributes['lj-class']=x+' '+x+'-open';A.attributes['class']=x+'-wrap';A.attributes['lj-cmd']=y;A.attributes.frameBorder=0;A.attributes.allowTransparency='true';if(w.attributes.hasOwnProperty(z))A.attributes.text=w.attributes[z];w.children.unshift(A);var B=new a.htmlParser.element('iframe');B.attributes['lj-class']=x+' '+x+'-close';B.attributes['class']=x+'-wrap';B.attributes.frameBorder=0;B.attributes.allowTransparency='true';w.children.push(B);delete w.name;};u.dataFilter.addRules({elements:{'lj-like':function(w){var x=[],y=new a.htmlParser.element('iframe');y.attributes['lj-class']='lj-like';y.attributes['class']='lj-like-wrap lj-rtebox';if(w.attributes.hasOwnProperty('style'))y.attributes['lj-style']=w.attributes.style;y.attributes['lj-cmd']='LJLike';y.attributes['lj-content']='<div class="lj-rtebox-inner lj-like-inner"><span class="lj-like-wrapper">';y.attributes.frameBorder=0;y.attributes.allowTransparency='true';var z=w.attributes.buttons&&w.attributes.buttons.split(',')||o.defaultButtons,A=w.attributes.buttons?true:false,B=z.length;for(var C=0;C<B;C++){var D=z[C].replace(/^\s*([a-z]{2,})\s*$/i,'$1'),E=o[D];if(E&&(A||E.checked)){y.attributes['lj-content']+=encodeURIComponent(E.html);
 x.push(D);}}if(!w.attributes.buttons)y.attributes.defaults=true;y.attributes['lj-content']+='</span></div>';y.attributes.buttons=x.join(',');return y;},'lj-map':function(w){var x=new a.htmlParser.element('iframe'),y='',z='',A=Number(w.attributes.width),B=Number(w.attributes.height);if(!isNaN(A)){y+='width:'+A+'px;';z+='width:'+(A-2)+'px;';}if(!isNaN(B)){y+='height:'+B+'px;';z+='height:'+(B-2)+'px;';}if(y.length){x.attributes.style=y;x.attributes['lj-style']=z;}x.attributes['lj-url']=w.attributes.url?encodeURIComponent(w.attributes.url):'';x.attributes['lj-class']='lj-map';x.attributes['class']='lj-map-wrap lj-rtebox';x.attributes['lj-content']='<div class="lj-map-inner lj-rtebox-inner"><p class="lj-map">map</p></div>';x.attributes.frameBorder=0;x.attributes.allowTransparency='true';return x;},'lj-raw':function(w){w.name='lj:raw';},'lj-wishlist':function(w){w.name='lj:wishlist';},'lj-template':function(w){var x=new a.htmlParser.element('iframe');x.attributes['lj-class']='lj-template';x.attributes['class']='lj-template-wrap';x.attributes.frameBorder=0;x.attributes.allowTransparency='true';x.attributes['lj-attributes']=encodeURIComponent(LiveJournal.JSON.stringify(w.attributes));return x;},'lj-cut':function(w){v(w,'lj-cut','LJCut');},'lj-spoiler':function(w){v(w,'lj-spoiler','LJSpoiler','title');},iframe:function(w){if(w.attributes['data-update']==='false')return w;var x='';if(w.attributes['data-link']){var y=LiveJournal.parseMediaLink(w.attributes['data-link']);if(y.preview)x='style="background-image: url('+y.preview+');"';}var z=w.attributes.src;if(w.attributes['lj-class']&&w.attributes['lj-class'].indexOf('lj-')+1==1)return w;var A=new a.htmlParser.element('iframe'),B='',C='',D=Number(w.attributes.width),E=Number(w.attributes.height);if(!isNaN(D)){B+='width:'+D+'px;';C+='width:'+(D-10)+'px;';}if(!isNaN(E)){B+='height:'+E+'px;';C+='height:'+(E-10)+'px;';}if(B.length){A.attributes.style=B;A.attributes['lj-style']=C;}A.attributes['lj-url']=w.attributes.src?encodeURIComponent(w.attributes.src):'';A.attributes['lj-class']='lj-iframe';A.attributes['class']='lj-iframe-wrap lj-rtebox';A.attributes['lj-content']='<div '+x+' class="lj-rtebox-inner">'+(x?'':'iframe')+'</div>';A.attributes.frameBorder=0;A.attributes.allowTransparency='true';if(z!=LiveJournal.getEmbed(decodeURIComponent(w.attributes.src))){A.attributes['lj-cmd']='LJEmbedLink';A.attributes['data-link']=w.attributes['data-link'];}return A;},a:function(w){if(w.parent.attributes&&!w.parent.attributes['lj:user'])w.attributes['lj-cmd']='LJLink2';
-},img:function(w){var x=w.parent&&w.parent.parent;if(!x||!x.attributes||!x.attributes['lj:user'])w.attributes['lj-cmd']='LJImage';},div:function(w){if(w.attributes['class']=='lj-cut')v(w,'lj-cut','LJCut');}}},5);u.htmlFilter.addRules({elements:{iframe:function(w){var x=w,y=false,z='text',A=/lj-[a-z]+/i.exec(w.attributes['lj-class']);if(A)A=A[0];else return w;switch(A){case 'lj-like':x=new a.htmlParser.element('lj-like');if(w.attributes.defaults!='true')x.attributes.buttons=w.attributes.buttons;if(w.attributes.hasOwnProperty('lj-style'))x.attributes.style=w.attributes['lj-style'];x.isEmpty=true;x.isOptionalClose=true;break;case 'lj-embed':var B=decodeURIComponent(w.attributes['lj-data']);x=new a.htmlParser.element('lj-embed');x.attributes.id=w.attributes.id;if(w.attributes.id)x.isEmpty=true;if(w.attributes.hasOwnProperty('source_user'))x.attributes.source_user=w.attributes.source_user;x.children=new a.htmlParser.fragment.fromHtml(decodeURIComponent(w.attributes['lj-data'])).children;x.isOptionalClose=true;break;case 'lj-map':x=new a.htmlParser.element('lj-map');x.attributes.url=decodeURIComponent(w.attributes['lj-url']);w.attributes.style&&(w.attributes.style+';').replace(/([a-z-]+):(.*?);/gi,function(G,H,I){x.attributes[H.toLowerCase()]=parseInt(I);});x.isOptionalClose=x.isEmpty=true;break;case 'lj-iframe':x=new a.htmlParser.element('iframe');x.attributes.src=decodeURIComponent(w.attributes['lj-url']);w.attributes.style&&(w.attributes.style+';').replace(/([a-z-]+):(.*?);/gi,function(G,H,I){x.attributes[H.toLowerCase()]=parseInt(I);});x.attributes.frameBorder=0;if(w.attributes['data-link'])x.attributes['data-link']=w.attributes['data-link'];break;case 'lj-poll':var B=decodeURIComponent(w.attributes['lj-data']);x=new a.htmlParser.fragment.fromHtml(B).children[0];break;case 'lj-repost':x=new a.htmlParser.element('lj-repost');x.attributes.button=w.attributes['lj-button'];x.children=new a.htmlParser.fragment.fromHtml(w.attributes['lj-text']).children;break;case 'lj-template':x=new a.htmlParser.element('lj-template');x.attributes=LiveJournal.JSON.parse(encodeURIComponent(w.attributes['lj-attributes']));x.isOptionalClose=x.isEmpty=true;break;case 'lj-spoiler':y=true;z='title';case 'lj-cut':if(w.attributes['lj-class'].indexOf(A+'-open')+1){var C=w.next,D=0;x=new a.htmlParser.element(A);if(w.attributes.hasOwnProperty('text'))x.attributes[z]=w.attributes.text;while(C){if(C.name=='iframe'){var E=C.attributes['lj-class'];if(E.indexOf(A+'-close')+1){if(y&&D)D--;else{x.next=C;
-break;}}else if(E.indexOf(A+'-open')+1)if(y)D++;else{x.next=C;break;}}C.parent.children.remove(C);x.add(C);var F=C.next;C.next=null;C=F;}}else x=false;break;default:if(!w.children.length)x=false;}return x;},span:function(w){var x=w.attributes['lj:user'];if(x){var y=new a.htmlParser.element('lj');y.attributes.user=x;try{var z=w.children[1].children[0].children[0].value;}catch(A){return false;}if(z&&z!=x)y.attributes.title=z;y.isOptionalClose=y.isEmpty=true;return y;}else if(w.attributes.style=='display: none;'||!w.children.length)return false;},div:function(w){if(!w.children.length)return false;},'lj:raw':function(w){w.name='lj-raw';},'lj:wishlist':function(w){w.name='lj-wishlist';}},attributes:{'lj-cmd':function(){return false;},contenteditable:function(){return false;}}});},requires:['fakeobjects','domiterator']});})();(function(m,n){var o;function p(v){return v.type==3&&v.getLength()>0&&(!o||!v.isReadOnly());};function q(v){return!(v.type==1&&v.isBlockBoundary(e.extend({},f.$empty,f.$nonEditable)));};var r=function(){var v=this;return{textNode:v.textNode,offset:v.offset,character:v.textNode?v.textNode.getText().charAt(v.offset):null,hitMatchBoundary:v._.matchBoundary};},s,t=function(v,w){s=new a.style(e.extend({attributes:{'data-cke-highlight':1,'data-incorrect':1,'data-id':0},fullMatch:1,ignoreReadonly:1,childRule:function(){return 1;}},{element:'span',styles:{'border-bottom':'1px solid red',cursor:'pointer'}},true));var x=function(J,K){var L=this,M=new d.walker(J);M.guard=K?q:function(N){!q(N)&&(L._.matchBoundary=true);};M.evaluator=p;M.breakOnFalse=1;if(J.startContainer.type==3){this.textNode=J.startContainer;this.offset=J.startOffset-1;}this._={matchWord:K,walker:M,matchBoundary:false};};x.prototype={next:function(){return this.move();},back:function(){return this.move(true);},move:function(J){var L=this;var K=L.textNode;if(K===null)return r.call(L);L._.matchBoundary=false;if(K&&J&&L.offset>0){L.offset--;return r.call(L);}else if(K&&L.offset<K.getLength()-1){L.offset++;return r.call(L);}else{K=null;while(!K){K=L._.walker[J?'previous':'next'].call(L._.walker);if(L._.matchWord&&!K||L._.walker._.end)break;}L.textNode=K;if(K)L.offset=J?K.getLength()-1:0;else L.offset=0;}return r.call(L);}};var y=function(J,K){this._={walker:J,cursors:[],rangeLength:K,highlightRange:null,isMatched:0};};y.prototype={toDomRange:function(){var J=new d.range(v.document),K=this._.cursors;if(K.length<1){var L=this._.walker.textNode;if(L)J.setStartAfter(L);else return null;}else{var M=K[0],N=K[K.length-1];
+},img:function(w){var x=w.parent&&w.parent.parent;if(!x||!x.attributes||!x.attributes['lj:user'])w.attributes['lj-cmd']='LJImage';},div:function(w){if(w.attributes['class']=='lj-cut')v(w,'lj-cut','LJCut');}}},5);u.htmlFilter.addRules({elements:{iframe:function(w){var x=w,y=false,z='text',A=/lj-[a-z]+/i.exec(w.attributes['lj-class']);if(A)A=A[0];else return w;switch(A){case 'lj-like':x=new a.htmlParser.element('lj-like');if(w.attributes.defaults!='true')x.attributes.buttons=w.attributes.buttons;if(w.attributes.hasOwnProperty('lj-style'))x.attributes.style=w.attributes['lj-style'];x.isEmpty=true;x.isOptionalClose=true;break;case 'lj-embed':var B=decodeURIComponent(w.attributes['lj-data']);x=new a.htmlParser.element('lj-embed');x.attributes.id=w.attributes.id;if(w.attributes.id)x.isEmpty=true;if(w.attributes.hasOwnProperty('source_user'))x.attributes.source_user=w.attributes.source_user;x.children=new a.htmlParser.fragment.fromHtml(decodeURIComponent(w.attributes['lj-data'])).children;x.isOptionalClose=true;break;case 'lj-map':x=new a.htmlParser.element('lj-map');x.attributes.url=decodeURIComponent(w.attributes['lj-url']);w.attributes.style&&(w.attributes.style+';').replace(/([a-z-]+):(.*?);/gi,function(G,H,I){x.attributes[H.toLowerCase()]=parseInt(I);});x.isOptionalClose=x.isEmpty=true;break;case 'lj-iframe':x=new a.htmlParser.element('iframe');x.attributes.src=decodeURIComponent(w.attributes['lj-url']);w.attributes.style&&(w.attributes.style+';').replace(/([a-z-]+):(.*?);/gi,function(G,H,I){x.attributes[H.toLowerCase()]=parseInt(I);});x.attributes.frameBorder=0;if(w.attributes['data-link'])x.attributes['data-link']=w.attributes['data-link'];break;case 'lj-poll':var B=decodeURIComponent(w.attributes['lj-data']);x=new a.htmlParser.fragment.fromHtml(B).children[0];break;case 'lj-repost':x=new a.htmlParser.element('lj-repost');x.attributes.button=w.attributes['lj-button'];x.children=new a.htmlParser.fragment.fromHtml(w.attributes['lj-text']).children;break;case 'lj-template':x=new a.htmlParser.element('lj-template');x.attributes=LiveJournal.JSON.parse(encodeURIComponent(w.attributes['lj-attributes']));x.isOptionalClose=x.isEmpty=true;break;case 'lj-spoiler':y=true;z='title';case 'lj-cut':if(w.attributes['lj-class'].indexOf(A+'-open')+1){var C=w.next,D=0;x=new a.htmlParser.element(A);if(w.attributes.hasOwnProperty('text'))x.attributes[z]=w.attributes.text;while(C){if(C.name=='iframe'){var E=C.attributes['lj-class'];if(E&&E.indexOf(A+'-close')+1){if(y&&D)D--;else{x.next=C;
+break;}}else if(E&&E.indexOf(A+'-open')+1)if(y)D++;else{x.next=C;break;}}C.parent.children.remove(C);x.add(C);var F=C.next;C.next=null;C=F;}}else x=false;break;default:if(!w.children.length)x=false;}return x;},span:function(w){var x=w.attributes['lj:user'];if(x){var y=new a.htmlParser.element('lj');y.attributes.user=x;try{var z=w.children[1].children[0].children[0].value;}catch(A){return false;}if(z&&z!=x)y.attributes.title=z;y.isOptionalClose=y.isEmpty=true;return y;}else if(w.attributes.style=='display: none;'||!w.children.length)return false;},div:function(w){if(!w.children.length)return false;},'lj:raw':function(w){w.name='lj-raw';},'lj:wishlist':function(w){w.name='lj-wishlist';}},attributes:{'lj-cmd':function(){return false;},contenteditable:function(){return false;}}});},requires:['fakeobjects','domiterator']});})();(function(m,n){var o;function p(v){return v.type==3&&v.getLength()>0&&(!o||!v.isReadOnly());};function q(v){return!(v.type==1&&v.isBlockBoundary(e.extend({},f.$empty,f.$nonEditable)));};var r=function(){var v=this;return{textNode:v.textNode,offset:v.offset,character:v.textNode?v.textNode.getText().charAt(v.offset):null,hitMatchBoundary:v._.matchBoundary};},s,t=function(v,w){s=new a.style(e.extend({attributes:{'data-cke-highlight':1,'data-incorrect':1,'data-id':0},fullMatch:1,ignoreReadonly:1,childRule:function(){return 1;}},{element:'span',styles:{'border-bottom':'1px solid red',cursor:'pointer'}},true));var x=function(J,K){var L=this,M=new d.walker(J);M.guard=K?q:function(N){!q(N)&&(L._.matchBoundary=true);};M.evaluator=p;M.breakOnFalse=1;if(J.startContainer.type==3){this.textNode=J.startContainer;this.offset=J.startOffset-1;}this._={matchWord:K,walker:M,matchBoundary:false};};x.prototype={next:function(){return this.move();},back:function(){return this.move(true);},move:function(J){var L=this;var K=L.textNode;if(K===null)return r.call(L);L._.matchBoundary=false;if(K&&J&&L.offset>0){L.offset--;return r.call(L);}else if(K&&L.offset<K.getLength()-1){L.offset++;return r.call(L);}else{K=null;while(!K){K=L._.walker[J?'previous':'next'].call(L._.walker);if(L._.matchWord&&!K||L._.walker._.end)break;}L.textNode=K;if(K)L.offset=J?K.getLength()-1:0;else L.offset=0;}return r.call(L);}};var y=function(J,K){this._={walker:J,cursors:[],rangeLength:K,highlightRange:null,isMatched:0};};y.prototype={toDomRange:function(){var J=new d.range(v.document),K=this._.cursors;if(K.length<1){var L=this._.walker.textNode;if(L)J.setStartAfter(L);else return null;}else{var M=K[0],N=K[K.length-1];
 J.setStart(M.textNode,M.offset);J.setEnd(N.textNode,N.offset+1);}return J;},updateFromDomRange:function(J){var M=this;var K,L=new x(J);M._.cursors=[];do{K=L.next();if(K.character)M._.cursors.push(K);}while(K.character);M._.rangeLength=M._.cursors.length;},setMatched:function(){this._.isMatched=true;},clearMatched:function(){this._.isMatched=false;},isMatched:function(){return this._.isMatched;},highlight:function(){var M=this;if(M._.cursors.length<1)return;if(M._.highlightRange)M.removeHighlight();var J=M.toDomRange(),K=J.createBookmark();s.applyToRange(J);J.moveToBookmark(K);M._.highlightRange=J;var L=J.startContainer;if(L.type!=1)L=L.getParent();M.updateFromDomRange(J);},highlightx:function(){var L=this;if(L._.cursors.length<1)return;if(L._.highlightRange)L.removeHighlight();var J=L.toDomRange(),K=J.createBookmark();J.moveToBookmark(K);L.updateFromDomRange(J);},removeHighlight:function(J){var L=this;if(!L._.highlightRange)return;var K=L._.highlightRange.createBookmark();s.removeFromRange(J||L._.highlightRange);L._.highlightRange.moveToBookmark(K);L.updateFromDomRange(L._.highlightRange);L._.highlightRange=null;},isReadOnly:function(){if(!this._.highlightRange)return 0;return this._.highlightRange.startContainer.isReadOnly();},moveBack:function(){var L=this;var J=L._.walker.back(),K=L._.cursors;if(J.hitMatchBoundary)L._.cursors=K=[];K.unshift(J);if(K.length>L._.rangeLength)K.pop();return J;},moveNext:function(){var L=this;var J=L._.walker.next(),K=L._.cursors;if(J.hitMatchBoundary)L._.cursors=K=[];K.push(J);if(K.length>L._.rangeLength)K.shift();return J;},getEndCharacter:function(){var J=this._.cursors;if(J.length<1)return null;return J[J.length-1].character;},getNextCharacterRange:function(J){var K,L,M=this._.cursors;if((K=M[M.length-1])&&K.textNode)L=new x(z(K));else L=this._.walker;return new y(L,J);},getCursors:function(){return this._.cursors;}};function z(J,K){var L=new d.range();L.setStart(J.textNode,K?J.offset:J.offset+1);L.setEndAt(v.document.getBody(),2);return L;};function A(J){var K=new d.range();K.setStartAt(v.document.getBody(),1);K.setEnd(J.textNode,J.offset);return K;};var B=0,C=1,D=2,E=function(J,K){var L=[-1];if(K)J=J.toLowerCase();for(var M=0;M<J.length;M++){L.push(L[M]+1);while(L[M+1]>0&&J.charAt(M)!=J.charAt(L[M+1]-1))L[M+1]=L[L[M+1]-1]+1;}this._={overlap:L,state:0,ignoreCase:!!K,pattern:J};};E.prototype={feedCharacter:function(J){var K=this;if(K._.ignoreCase)J=J.toLowerCase();for(;;){if(J==K._.pattern.charAt(K._.state)){K._.state++;if(K._.state==K._.pattern.length){K._.state=0;
 return D;}return C;}else if(!K._.state)return B;else K._.state=K._.overlap[K._.state];}return null;},reset:function(){this._.state=0;}};var F=/[.,"'?!;: \u0085\u00a0\u1680\u280e\u2028\u2029\u202f\u205f\u3000]/,G=function(J){if(!J)return true;var K=J.charCodeAt(0);return K>=9&&K<=13||K>=8192&&K<=8202||F.test(J);},H={searchRange:null,matchRange:null,find:function(J,K,L,M,N,O){var X=this;if(!X.matchRange)X.matchRange=new y(new x(X.searchRange),J.length);else X.matchRange=X.matchRange.getNextCharacterRange(J.length);var P=new E(J,!K),Q=B,R='%';while(R!==null){X.matchRange.moveNext();while(R=X.matchRange.getEndCharacter()){Q=P.feedCharacter(R);if(Q==D)break;if(X.matchRange.moveNext().hitMatchBoundary)P.reset();}if(Q==D){var S=X.matchRange.getCursors(),T=S[S.length-1],U=S[0],V=new x(A(U),true),W=new x(z(T),true);if(!(G(V.back().character)&&G(W.next().character)))continue;X.matchRange.setMatched();if(N!==false)X.matchRange.highlightx();return X.matchRange;}}if(M&&!O){X.searchRange=u(1);X.matchRange=null;return arguments.callee.apply(X,Array.prototype.slice.call(arguments).concat([true]));}return false;}},I=v.lang.findAndReplace;return H;};function u(v,w){var x,y=w.getSelection(),z=w.document.getBody();if(y&&!v){x=y.getRanges()[0].clone();x.collapse(true);}else{x=new d.range();x.setStartAt(z,1);}x.setEndAt(z,2);return x;};j.add('ljspell',{options:{classNames:{wordActive:'active',area:'b-spelling-textarea',skipError:'b-spelling-item-skip',bubbleContainer:'b-spelling-bubble',bubbleNoSuggestions:'b-spelling-item-no'},selectors:{bubbleItem:'.b-spelling-item',fake:'.b-spelling-faketextarea',error:'.b-spelling-error'},tmpl:{spellError:'<span class="b-spelling-word b-spelling-error" data-id="{id}"><span class="b-spelling-inner">{word}</span></span>',wrapper:'<div class="b-spelling"><div class="b-spelling-faketextarea"></div></div>',bubble:'<div class="b-spelling-bubble-container"></div>',bubbleList:'<ul class="b-spelling-items">{items}</ul>',bubbleItem:'<li class="b-spelling-item"><span class="b-spelling-item-word">{word}</span></li>',bubbleItemNoSuggestions:'<li class="b-spelling-item b-spelling-item-no"><span class="b-spelling-item-word">'+LJ.ml('widget.form.no_suggestions')+'</span></li>',bubbleItemSkip:'<li class="b-spelling-item b-spelling-item-skip"><span class="b-spelling-item-word">'+LJ.ml('widget.form.skip_word')+'</span></li>'},enabled:false},init:function(v){var w=this,x='LJSpell',y;y=(function(z){var A,B,C;return{save:function(){A=z.getSelection();B=A.getRanges()[0];
 C=B.createBookmark(true);z.focusManager.blur();z.focusManager.forceBlur();},restore:function(){A.unlock();B.moveToBookmark(C);z.getSelection().selectRanges([B]);}};})(v);v.on('contentDom',function(){var z=m(this.document.getBody().$),A=m('#cke_ck'),B=w.options,C=m(B.tmpl.bubble);C.bubble({showOn:'click',alwaysShowUnderTarget:true,classNames:{containerAddClass:B.classNames.bubbleContainer}});z.on('click','span[data-incorrect]',function(D){var E=m(this),F=E.data('word'),G=a.ljspell.getSuggestions(F).map(function(J){return B.tmpl.bubbleItem.supplant({word:J});}),H=null,I;if(G.length===0)G.push(B.tmpl.bubbleItemNoSuggestions);G.push(B.tmpl.bubbleItemSkip);Function.defer(function(){C.html(B.tmpl.bubbleList.supplant({items:G.join('')})).off('click').on('click',B.selectors.bubbleItem,function(){var J=m(this).text(),K=m(this).hasClass(B.classNames.skipError);C.bubble('hide');if(m(this).hasClass(B.classNames.bubbleNoSuggestions))return;if(K)J=F;H=z.find('span[data-id="'+E.data('id')+'"]');(function(){var L=h.get(H.first().get(0)),M=new d.range(v.document),N=v.getSelection(),O;N.selectElement(L);N.getRanges()[0].collapse();O=N.getRanges()[0].createBookmark(true);M.moveToBookmark(O);H.first().replaceWith(J);if(H.length)H.slice(1).detach();setTimeout(function(){if(!v.focusManager.hasFocus)v.focus();N.selectRanges([M]);if(K){LiveJournal.run_hook('skipWord',J);a.ljspell.removeHighlightFromWord(J);}},0);})();}).bubble('hide').bubble('show',A).bubble('absolute',D.clientX,D.clientY+A.offset().top+60);});D.preventDefault();});a.ljspell.init();});a.ljspell=(function(z,A){var B=false,C=0,D=false,E=t(z),F=LiveJournal.getAjaxUrl('spellcheck'),G={},H=[],I={},J=null,K=null,L=1000,M=null;function N(ab){var ac=z.document.getBody();return ab?m(ac.$):ac;};function O(ab){var ac=[];E.searchRange=u(1,z);E.matchRange=null;while((range=E.find(ab,false,false,false))!==false)ac.push(range);return ac;};function P(ab){D=ab;if(!J)J=m('.cke_button_'+x);J.toggleClass('active',D);};function Q(ab){var ac=[],ad=null;ab=ab.trim().toLowerCase();if(ab.trim().length===0)return[];ad=ab.replace(/\&nbsp;/ig,' ').match(/[a-zа-яё]+/gi);if(ad)return ad.reduce(function(ae,af){if(ae.indexOf(af)===-1)ae.push(af);return ae;},[]);else return[];};function R(){var ab=m('<div />',{html:z.getData()}).text(),ac=Q(ab);T(ac);return ac;};function S(ab){ab.forEach(function(ac){G[ac]=true;});};function T(ab){H=H.filter(function(ac){return ab.indexOf(ac)!==-1;});ab.forEach(function(ac){if(I.hasOwnProperty(ac)&&H.indexOf(ac)===-1)H.push(ac);

Modified: trunk/htdocs/js/ck/plugins/livejournal/plugin.js
===================================================================
--- trunk/htdocs/js/ck/plugins/livejournal/plugin.js	2012-09-21 13:44:15 UTC (rev 22953)
+++ trunk/htdocs/js/ck/plugins/livejournal/plugin.js	2012-09-21 14:11:46 UTC (rev 22954)
@@ -1962,14 +1962,14 @@
 									while (node) {
 										if (node.name == 'iframe') {
 											var DFclassName = node.attributes['lj-class'];
-											if (DFclassName.indexOf(className + '-close') + 1) {
+											if (DFclassName && DFclassName.indexOf(className + '-close') + 1) {
 												if (isCanBeNested && index) {
 													index--;
 												} else {
 													newElement.next = node;
 													break;
 												}
-											} else if (DFclassName.indexOf(className + '-open') + 1) {
+											} else if (DFclassName && DFclassName.indexOf(className + '-open') + 1) {
 												if (isCanBeNested) {
 													index++;
 												} else {

Tags: atyurin, js, livejournal, spacevillain
Subscribe
  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

  • 0 comments