mirror of
https://github.com/php/web-doc-editor.git
synced 2026-03-25 09:42:09 +01:00
99 lines
444 KiB
JavaScript
99 lines
444 KiB
JavaScript
var CodeMirror=(function(){function u(aH,aE){var bR={},bd=u.defaults;for(var au in bd){if(bd.hasOwnProperty(au)){bR[au]=(aE&&aE.hasOwnProperty(au)?aE:bd)[au]}}var cC=bR.document;var ay=cC.createElement("div");ay.className="CodeMirror"+(bR.lineWrapping?" CodeMirror-wrap":"");ay.innerHTML='<div style="overflow: hidden; position: relative; width: 3px; height: 0px;"><textarea style="position: absolute; padding: 0; width: 1px; height: 1em" wrap="off" autocorrect="off" autocapitalize="off"></textarea></div><div class="CodeMirror-scroll" tabindex="-1"><div style="position: relative"><div style="position: relative"><div class="CodeMirror-gutter"><div class="CodeMirror-gutter-text"></div></div><div class="CodeMirror-lines"><div style="position: relative; z-index: 0"><div style="position: absolute; width: 100%; height: 0; overflow: hidden; visibility: hidden; outline: 5px auto none"></div><pre class="CodeMirror-cursor"> </pre><div style="position: relative; z-index: -1"></div><div></div></div></div></div></div></div>';if(aH.appendChild){aH.appendChild(ay)}else{aH(ay)}var bO=ay.firstChild,bg=bO.firstChild,be=ay.lastChild,bE=be.firstChild,b6=bE.firstChild,aC=b6.firstChild,aU=aC.firstChild,bo=aC.nextSibling.firstChild,ap=bo.firstChild,a7=ap.nextSibling,bb=a7.nextSibling,al=bb.nextSibling;ct();if(s){bg.style.width="0px"}if(!g){bo.draggable=true}bo.style.outline="none";if(bR.tabindex!=null){bg.tabIndex=bR.tabindex}if(!bR.gutter&&!bR.lineNumbers){aC.style.display="none"}try{cj("x")}catch(bY){if(bY.message.match(/runtime/i)){bY=new Error("A CodeMirror inside a P-style element does not work in Internet Explorer. (innerHTML bug)")}throw bY}var bX=new z(),aq=new z(),cG;var b1,co=new j([new ad([new f("")])]),b7,b9;bK();var cO={from:{line:0,ch:0},to:{line:0,ch:0},inverted:false};var b8,bj,aV,bx=0,a6,cd=false,ch=false;var cf,bW,aw,cE,aK,ba,aN,cq;var a8=0,cH=0,bD=0,bF=0;var bU;var bv="",aA,bn=aR();am(function(){aS(bR.value||"");cf=false})();var a4=new l();r(be,"mousedown",am(ca));r(be,"dblclick",am(bN));r(bo,"dragstart",aD);r(bo,"selectstart",R);if(!L){r(be,"contextmenu",aX)}r(be,"scroll",function(){bx=be.scrollTop;b3([]);if(bR.fixedGutter){aC.style.left=be.scrollLeft+"px"}if(bR.onScroll){bR.onScroll(bZ)}});r(window,"resize",function(){b3(true)});r(bg,"keyup",am(cb));r(bg,"input",aL);r(bg,"keydown",am(b2));r(bg,"keypress",am(bh));r(bg,"focus",cL);r(bg,"blur",az);r(be,"dragenter",w);r(be,"dragover",w);r(be,"drop",am(aj));r(be,"paste",function(){bt();aL()});r(bg,"paste",aL);r(bg,"cut",am(function(){if(!bR.readOnly){bl("")}}));var cm;try{cm=(cC.activeElement==bg)}catch(bY){}if(cm){setTimeout(cL,20)}else{az()}function bk(cR){return cR>=0&&cR<co.size}var bZ=ay.CodeMirror={getValue:bS,setValue:am(aS),getSelection:bT,replaceSelection:am(bl),focus:function(){bt();cL();aL()},setOption:function(cS,cT){var cR=bR[cS];bR[cS]=cT;if(cS=="mode"||cS=="indentUnit"){bK()}else{if(cS=="readOnly"&&cT=="nocursor"){az();bg.blur()}else{if(cS=="readOnly"&&!cT){cs(true)}else{if(cS=="theme"){ct()}else{if(cS=="lineWrapping"&&cR!=cT){am(cw)()}else{if(cS=="tabSize"){am(cM)()}}}}}}if(cS=="lineNumbers"||cS=="gutter"||cS=="firstLineNumber"||cS=="theme"){b3(true)}},getOption:function(cR){return bR[cR]},undo:am(cK),redo:am(cz),indentLine:am(function(cS,cR){if(typeof cR!="string"){if(cR==null){cR=bR.smartIndent?"smart":"prev"}else{cR=cR?"add":"subtract"}}if(bk(cS)){bs(cS,cR)}}),indentSelection:am(cr),historySize:function(){return{undo:a4.done.length,redo:a4.undone.length}},clearHistory:function(){a4=new l()},matchBrackets:am(function(){b4(true)}),getTokenAt:am(function(cR){cR=aO(cR);return cv(cR.line).getTokenAt(b1,ck(cR.line),cR.ch)}),getStateAfter:function(cR){cR=bP(cR==null?co.size-1:cR);return ck(cR+1)},cursorCoords:function(cR){if(cR==null){cR=cO.inverted}return ak(cR?cO.from:cO.to)},charCoords:function(cR){return ak(aO(cR))},coordsChar:function(cR){var cS=ag(bo);return bz(cR.x-cS.left,cR.y-cS.top)},markText:am(bw),setBookmark:aP,setMarker:am(bM),clearMarker:am(ao),setLineClass:am(bf),hideLine:am(function(cR){return cA(cR,true)}),showLine:am(function(cR){return cA(cR,false)}),onDeleteLine:function(cR,cS){if(typeof cR=="number"){if(!bk(cR)){return null}cR=cv(cR)}(cR.handlers||(cR.handlers=[])).push(cS);return cR},lineInfo:aQ,addWidget:function(cV,cT,cX,cU,cZ){cV=cI(aO(cV));var cW=cV.yBot,cS=cV.x;cT.style.position="absolute";bE.appendChild(cT);if(cU=="over"){cW=cV.y}else{if(cU=="near"){var cR=Math.max(be.offsetHeight,co.height*bG()),cY=Math.max(bE.clientWidth,bo.clientWidth)-a1();if(cV.yBot+cT.offsetHeight>cR&&cV.y>cT.offsetHeight){cW=cV.y-cT.offsetHeight}if(cS+cT.offsetWidth>cY){cS=cY-cT.offsetWidth}}}cT.style.top=(cW+ci())+"px";cT.style.left=cT.style.right="";if(cZ=="right"){cS=bE.clientWidth-cT.offsetWidth;cT.style.right="0px"}else{if(cZ=="left"){cS=0}else{if(cZ=="middle"){cS=(bE.clientWidth-cT.offsetWidth)/2}}cT.style.left=(cS+a1())+"px"}if(cX){av(cS,cW,cS+cT.offsetWidth,cW+cT.offsetHeight)}},lineCount:function(){return co.size},clipPos:aO,getCursor:function(cR){if(cR==null){cR=cO.inverted}return Y(cR?cO.from:cO.to)},somethingSelected:function(){return !aa(cO.from,cO.to)},setCursor:am(function(cR,cT,cS){if(cT==null&&typeof cR.line=="number"){a2(cR.line,cR.ch,cS)}else{a2(cR,cT,cS)}}),setSelection:am(function(cT,cS,cR){(cR?br:bq)(aO(cT),aO(cS||cT))}),getLine:function(cR){if(bk(cR)){return cv(cR).text}},getLineHandle:function(cR){if(bk(cR)){return cv(cR)}},setLine:am(function(cR,cS){if(bk(cR)){bH(cS,{line:cR,ch:0},{line:cR,ch:cv(cR).text.length})}}),removeLine:am(function(cR){if(bk(cR)){bH("",{line:cR,ch:0},aO({line:cR+1,ch:0}))}}),replaceRange:am(bH),getRange:function(cS,cR){return cF(aO(cS),aO(cR))},execCommand:function(cR){return J[cR](bZ)},moveH:am(cu),deleteH:am(cc),moveV:am(cn),toggleOverwrite:function(){cd=!cd},posFromIndex:function(cS){var cT=0,cR;co.iter(0,co.size,function(cU){var cV=cU.text.length+1;if(cV>cS){cR=cS;return true}cS-=cV;++cT});return aO({line:cT,ch:cR})},indexFromPos:function(cS){if(cS.line<0||cS.ch<0){return 0}var cR=cS.ch;co.iter(0,cS.line,function(cT){cR+=cT.text.length+1});return cR},scrollTo:function(cR,cS){if(cR!=null){be.scrollTop=cR}if(cS!=null){be.scrollLeft=cS}b3([])},operation:function(cR){return am(cR)()},refresh:function(){b3(true);if(be.scrollHeight>bx){be.scrollTop=bx}},getInputField:function(){return bg},getWrapperElement:function(){return ay},getScrollerElement:function(){return be},getGutterElement:function(){return aC}};function cv(cR){return B(co,cR)}function aZ(cS,cR){aN=true;var cT=cR-cS.height;for(var cU=cS;cU;cU=cU.parent){cU.height+=cT}}function aS(cR){var cS={line:0,ch:0};aJ(cS,{line:co.size-1,ch:cv(co.size-1).text.length},A(cR),cS,cS);cf=true}function bS(cR){var cS=[];co.iter(0,co.size,function(cT){cS.push(cT.text)});return cS.join("\n")}function ca(cX){a0(y(cX,"shiftKey"));for(var cU=k(cX);cU!=ay;cU=cU.parentNode){if(cU.parentNode==bE&&cU!=b6){return}}for(var cU=k(cX);cU!=ay;cU=cU.parentNode){if(cU.parentNode==aU){if(bR.onGutterClick){bR.onGutterClick(bZ,q(aU.childNodes,cU)+cH,cX)}return R(cX)}}var cR=aY(cX);switch(x(cX)){case 3:if(L&&!K){aX(cX)}return;case 2:if(cR){a2(cR.line,cR.ch,true)}return}if(!cR){if(k(cX)==be){R(cX)}return}if(!b9){cL()}var cS=+new Date;if(aV&&aV.time>cS-400&&aa(aV.pos,cR)){R(cX);setTimeout(bt,20);return aF(cR.line)}else{if(bj&&bj.time>cS-400&&aa(bj.pos,cR)){aV={time:cS,pos:cR};R(cX);return bA(cR)}else{bj={time:cS,pos:cR}}}var cZ=cR,cT;if(D&&!bR.readOnly&&!aa(cO.from,cO.to)&&!X(cR,cO.from)&&!X(cO.to,cR)){if(g){bo.draggable=true}var cW=r(cC,"mouseup",am(function(c0){if(g){bo.draggable=false}a6=false;cW();if(Math.abs(cX.clientX-c0.clientX)+Math.abs(cX.clientY-c0.clientY)<10){R(c0);a2(cR.line,cR.ch,true);bt()}}),true);a6=true;return}R(cX);a2(cR.line,cR.ch,true);function cY(c0){var c2=aY(c0,true);if(c2&&!aa(c2,cZ)){if(!b9){cL()}cZ=c2;br(cR,c2);cf=false;var c1=bu();if(c2.line>=c1.to||c2.line<c1.from){cT=setTimeout(am(function(){cY(c0)}),150)}}}var cV=r(cC,"mousemove",am(function(c0){clearTimeout(cT);R(c0);cY(c0)}),true);var cW=r(cC,"mouseup",am(function(c0){clearTimeout(cT);var c1=aY(c0);if(c1){br(cR,c1)}R(c0);bt();cf=true;cV();cW()}),true)}function bN(cR){for(var cT=k(cR);cT!=ay;cT=cT.parentNode){if(cT.parentNode==aU){return R(cR)}}var cS=aY(cR);if(!cS){return}aV={time:+new Date,pos:cS};R(cR);bA(cS)}function aj(cX){cX.preventDefault();var cY=aY(cX,true),cR=cX.dataTransfer.files;if(!cY||bR.readOnly){return}if(cR&&cR.length&&window.FileReader&&window.File){function cU(c3,c2){var c1=new FileReader;c1.onload=function(){c0[c2]=c1.result;if(++cS==cT){cY=aO(cY);am(function(){var c4=bH(c0.join(""),cY,cY);br(cY,c4)})()}};c1.readAsText(c3)}var cT=cR.length,c0=Array(cT),cS=0;for(var cV=0;cV<cT;++cV){cU(cR[cV],cV)}}else{try{var c0=cX.dataTransfer.getData("Text");if(c0){var cZ=cO.from,cW=cO.to;br(cY,cY);if(a6){bH("",cZ,cW)}bl(c0);bt()}}catch(cX){}}}function aD(cS){var cR=bT();N(cR);cS.dataTransfer.setDragImage(ae,0,0);cS.dataTransfer.setData("Text",cR)}function cB(cX){var cU=P[y(cX,"keyCode")],cW=v[bR.keyMap].auto,cV,cR;function cT(){return cW.call?cW.call(null,bZ):cW}if(cU==null||cX.altGraphKey){if(cW){bR.keyMap=cT()}return null}if(y(cX,"altKey")){cU="Alt-"+cU}if(y(cX,"ctrlKey")){cU="Ctrl-"+cU}if(y(cX,"metaKey")){cU="Cmd-"+cU}if(y(cX,"shiftKey")&&(cV=m("Shift-"+cU,bR.extraKeys,bR.keyMap))){cR=true}else{cV=m(cU,bR.extraKeys,bR.keyMap)}if(typeof cV=="string"){if(J.propertyIsEnumerable(cV)){cV=J[cV]}else{cV=null}}if(cW&&(cV||!O(cX))){bR.keyMap=cT()}if(!cV){return false}var cS=b8;try{if(bR.readOnly){ch=true}if(cR){b8=null}cV(bZ)}finally{b8=cS;ch=false}R(cX);return true}var cy=null;function b2(cT){if(!b9){cL()}if(G&&cT.keyCode==27){cT.returnValue=false}if(bR.onKeyEvent&&bR.onKeyEvent(bZ,M(cT))){return}var cR=y(cT,"keyCode");a0(cR==16||y(cT,"shiftKey"));var cS=cB(cT);if(window.opera){cy=cS?cR:null;if(!cS&&cR==88&&y(cT,K?"metaKey":"ctrlKey")){bl("")}}}function bh(cU){var cT=y(cU,"keyCode"),cR=y(cU,"charCode");if(window.opera&&cT==cy){cy=null;R(cU);return}if(bR.onKeyEvent&&bR.onKeyEvent(bZ,M(cU))){return}if(window.opera&&!cU.which&&cB(cU)){return}if(bR.electricChars&&b1.electricChars&&bR.smartIndent&&!bR.readOnly){var cS=String.fromCharCode(cR==null?cT:cR);if(b1.electricChars.indexOf(cS)>-1){setTimeout(am(function(){bs(cO.to.line,"smart")}),75)}}aL()}function cb(cR){if(bR.onKeyEvent&&bR.onKeyEvent(bZ,M(cR))){return}if(y(cR,"keyCode")==16){b8=null}}function cL(){if(bR.readOnly=="nocursor"){return}if(!b9){if(bR.onFocus){bR.onFocus(bZ)}b9=true;if(ay.className.search(/\bCodeMirror-focused\b/)==-1){ay.className+=" CodeMirror-focused"}if(!ba){cs(true)}}ai();cD()}function az(){if(b9){if(bR.onBlur){bR.onBlur(bZ)}b9=false;if(bU){am(function(){if(bU){bU();bU=null}})()}ay.className=ay.className.replace(" CodeMirror-focused","")}clearInterval(cG);setTimeout(function(){if(!b9){b8=null}},150)}function aJ(cW,cV,cU,cS,cR){if(ch){return}if(a4){var cT=[];co.iter(cW.line,cV.line+1,function(cX){cT.push(cX.text)});a4.addChange(cW.line,cU.length,cT);while(a4.done.length>bR.undoDepth){a4.done.shift()}}an(cW,cV,cU,cS,cR)}function b0(cZ,c0,cR){var c1=cZ.pop(),cV=c1?c1.length:0,cT=[];for(var cU=cR>0?0:cV-1,cW=cR>0?cV:-1;cU!=cW;cU+=cR){var cY=c1[cU];var c2=[],cS=cY.start+cY.added;co.iter(cY.start,cS,function(c3){c2.push(c3.text)});cT.push({start:cY.start,added:cY.old.length,old:c2});var cX=aO({line:cY.start+cY.old.length-1,ch:U(c2[c2.length-1],cY.old[cY.old.length-1])});an({line:cY.start,ch:0},{line:cS-1,ch:cv(cS-1).text.length},cY.old,cX,cX)}cf=true;c0.push(cT)}function cK(){b0(a4.done,a4.undone,-1)}function cz(){b0(a4.undone,a4.done,1)}function an(c6,cV,dc,cR,dd){if(ch){return}var db=false,cU=bv.length;if(!bR.lineWrapping){co.iter(c6.line,cV.line,function(de){if(de.text.length==cU){db=true;return true}})}if(c6.line!=cV.line||dc.length>1){aN=true}var c3=cV.line-c6.line,c2=cv(c6.line),cS=cv(cV.line);if(c6.ch==0&&cV.ch==0&&dc[dc.length-1]==""){var c0=[],c1=null;if(c6.line){c1=cv(c6.line-1);c1.fixMarkEnds(cS)}else{cS.fixMarkStarts()}for(var c8=0,da=dc.length-1;c8<da;++c8){c0.push(f.inheritMarks(dc[c8],c1))}if(c3){co.remove(c6.line,c3,cq)}if(c0.length){co.insert(c6.line,c0)}}else{if(c2==cS){if(dc.length==1){c2.replace(c6.ch,cV.ch,dc[0])}else{cS=c2.split(cV.ch,dc[dc.length-1]);c2.replace(c6.ch,null,dc[0]);c2.fixMarkEnds(cS);var c0=[];for(var c8=1,da=dc.length-1;c8<da;++c8){c0.push(f.inheritMarks(dc[c8],c2))}c0.push(cS);co.insert(c6.line+1,c0)}}else{if(dc.length==1){c2.replace(c6.ch,null,dc[0]);cS.replace(null,cV.ch,"");c2.append(cS);co.remove(c6.line+1,c3,cq)}else{var c0=[];c2.replace(c6.ch,null,dc[0]);cS.replace(null,cV.ch,dc[dc.length-1]);c2.fixMarkEnds(cS);for(var c8=1,da=dc.length-1;c8<da;++c8){c0.push(f.inheritMarks(dc[c8],c2))}if(c3>1){co.remove(c6.line+1,c3-1,cq)}co.insert(c6.line+1,c0)}}}if(bR.lineWrapping){var cX=be.clientWidth/bc()-3;co.iter(c6.line,c6.line+dc.length,function(de){if(de.hidden){return}var df=Math.ceil(de.text.length/cX)||1;if(df!=de.height){aZ(de,df)}})}else{co.iter(c6.line,c8+dc.length,function(df){var de=df.text;if(de.length>cU){bv=de;cU=de.length;aA=null;db=false}});if(db){cU=0;bv="";aA=null;co.iter(0,co.size,function(df){var de=df.text;if(de.length>cU){cU=de.length;bv=de}})}}var cT=[],cZ=dc.length-c3-1;for(var c8=0,c5=b7.length;c8<c5;++c8){var c9=b7[c8];if(c9<c6.line){cT.push(c9)}else{if(c9>cV.line){cT.push(c9+cZ)}}}var c7=c6.line+Math.min(dc.length,500);cx(c6.line,c7);cT.push(c7);b7=cT;by(100);aw.push({from:c6.line,to:cV.line+1,diff:cZ});var cY={from:c6,to:cV,text:dc};if(cE){for(var cW=cE;cW.next;cW=cW.next){}cW.next=cY}else{cE=cY}function c4(de){return de<=Math.min(cV.line,cV.line+cZ)?de:de+cZ}bq(cR,dd,c4(cO.from.line),c4(cO.to.line));if(be.clientHeight){bE.style.height=(co.height*bG()+2*ci())+"px"}}function bH(cS,cV,cU){cV=aO(cV);if(!cU){cU=cV}else{cU=aO(cU)}cS=A(cS);function cT(cY){if(X(cY,cV)){return cY}if(!X(cU,cY)){return cR}var cW=cY.line+cS.length-(cU.line-cV.line)-1;var cX=cY.ch;if(cY.line==cU.line){cX+=cS[cS.length-1].length-(cU.ch-(cU.line==cV.line?cV.ch:0))}return{line:cW,ch:cX}}var cR;ax(cS,cV,cU,function(cW){cR=cW;return{from:cT(cO.from),to:cT(cO.to)}});return cR}function bl(cR,cS){ax(A(cR),cO.from,cO.to,function(cT){if(cS=="end"){return{from:cT,to:cT}}else{if(cS=="start"){return{from:cO.from,to:cO.from}}else{return{from:cO.from,to:cT}}}})}function ax(cU,cW,cV,cR){var cT=cU.length==1?cU[0].length+cW.ch:cU[cU.length-1].length;var cS=cR({line:cW.line+cU.length-1,ch:cT});aJ(cW,cV,cU,cS.from,cS.to)}function cF(cV,cU){var cS=cV.line,cR=cU.line;if(cS==cR){return cv(cS).text.slice(cV.ch,cU.ch)}var cT=[cv(cS).text.slice(cV.ch)];co.iter(cS+1,cR,function(cW){cT.push(cW.text)});cT.push(cv(cR).text.slice(0,cU.ch));return cT.join("\n")}function bT(){return cF(cO.from,cO.to)}var bm=false;function ai(){if(bm){return}bX.set(bR.pollInterval,function(){aI();bC();if(b9){ai()}at()})}function aL(){var cR=false;bm=true;function cS(){aI();var cT=bC();if(!cT&&!cR){cR=true;bX.set(60,cS)}else{bm=false;ai()}at()}bX.set(20,cS)}var a5="";function bC(){if(ba||!b9||ab(bg)||bR.readOnly){return false}var cS=bg.value;if(cS==a5){return false}b8=null;var cT=0,cR=Math.min(a5.length,cS.length);while(cT<cR&&a5[cT]==cS[cT]){++cT}if(cT<a5.length){cO.from={line:cO.from.line,ch:cO.from.ch-(a5.length-cT)}}else{if(cd&&aa(cO.from,cO.to)){cO.to={line:cO.to.line,ch:Math.min(cv(cO.to.line).text.length,cO.to.ch+(cS.length-cT))}}}bl(cS.slice(cT),"end");a5=cS;return true}function cs(cR){if(!aa(cO.from,cO.to)){a5="";bg.value=bT();bg.select()}else{if(cR){a5=bg.value=""}}}function bt(){if(bR.readOnly!="nocursor"){bg.focus()}}function cQ(){if(!a7.getBoundingClientRect){return}var cR=a7.getBoundingClientRect();if(G&&cR.top==cR.bottom){return}var cS=window.innerHeight||Math.max(document.body.offsetHeight,document.documentElement.offsetHeight);if(cR.top<0||cR.bottom>cS){a7.scrollIntoView()}}function b5(){var cS=cI(cO.inverted?cO.from:cO.to);var cR=bR.lineWrapping?Math.min(cS.x,bo.offsetWidth):cS.x;return av(cR,cS.y,cR,cS.yBot)}function av(cT,cY,cR,cX){var cV=a1(),c4=ci(),c0=bG();cY+=c4;cX+=c4;cT+=cV;cR+=cV;var c1=be.clientHeight,cU=be.scrollTop,cS=false,c3=true;if(cY<cU){be.scrollTop=Math.max(0,cY-2*c0);cS=true}else{if(cX>cU+c1){be.scrollTop=cX+c0-c1;cS=true}}var cZ=be.clientWidth,c2=be.scrollLeft;var cW=bR.fixedGutter?aC.clientWidth:0;if(cT<c2+cW){if(cT<50){cT=0}be.scrollLeft=Math.max(0,cT-10-cW);cS=true}else{if(cR>cZ+c2-3){be.scrollLeft=cR+10-cZ;cS=true;if(cR>bE.clientWidth){c3=false}}}if(cS&&bR.onScroll){bR.onScroll(bZ)}return c3}function bu(){var cS=bG(),cU=be.scrollTop-ci();var cR=Math.max(0,Math.floor(cU/cS));var cT=Math.ceil((cU+be.clientHeight)/cS);return{from:V(co,cR),to:V(co,cT)}}function b3(c1,cW){if(!be.clientWidth){cH=bD=a8=0;return}var cU=bu();if(c1!==true&&c1.length==0&&cU.from>cH&&cU.to<bD){return}var c2=Math.max(cU.from-100,0),c3=Math.min(co.size,cU.to+100);if(cH<c2&&c2-cH<20){c2=cH}if(bD>c3&&bD-c3<20){c3=Math.min(co.size,bD)}var c4=c1===true?[]:bQ([{from:cH,to:bD,domStart:0}],c1);var c0=0;for(var cX=0;cX<c4.length;++cX){var cY=c4[cX];if(cY.from<c2){cY.domStart+=(c2-cY.from);cY.from=c2}if(cY.to>c3){cY.to=c3}if(cY.from>=cY.to){c4.splice(cX--,1)}else{c0+=cY.to-cY.from}}if(c0==c3-c2){return}c4.sort(function(c6,c5){return c6.domStart-c5.domStart});var cT=bG(),cR=aC.style.display;al.style.display="none";aM(c2,c3,c4);al.style.display=aC.style.display="";var cS=c2!=cH||c3!=bD||bF!=be.clientHeight+cT;if(cS){bF=be.clientHeight+cT}cH=c2;bD=c3;a8=h(co,c2);b6.style.top=(a8*cT)+"px";if(be.clientHeight){bE.style.height=(co.height*cT+2*ci())+"px"}if(al.childNodes.length!=bD-cH){throw new Error("BAD PATCH! "+JSON.stringify(c4)+" size="+(bD-cH)+" nodes="+al.childNodes.length)}if(bR.lineWrapping){aA=be.clientWidth;var cV=al.firstChild,cZ=false;co.iter(cH,bD,function(c6){if(!c6.hidden){var c5=Math.round(cV.offsetHeight/cT)||1;if(c6.height!=c5){aZ(c6,c5);aN=cZ=true}}cV=cV.nextSibling});if(cZ){bE.style.height=(co.height*cT+2*ci())+"px"}}else{if(aA==null){aA=cj(bv)}if(aA>be.clientWidth){bo.style.width=aA+"px";bE.style.width="";bE.style.width=be.scrollWidth+"px"}else{bo.style.width=bE.style.width=""}}aC.style.display=cR;if(cS||aN){aG()}cN();if(!cW&&bR.onUpdate){bR.onUpdate(bZ)}return true}function bQ(c0,cY){for(var cV=0,cT=cY.length||0;cV<cT;++cV){var cX=cY[cV],cR=[],cZ=cX.diff||0;for(var cU=0,cS=c0.length;cU<cS;++cU){var cW=c0[cU];if(cX.to<=cW.from&&cX.diff){cR.push({from:cW.from+cZ,to:cW.to+cZ,domStart:cW.domStart})}else{if(cX.to<=cW.from||cX.from>=cW.to){cR.push(cW)}else{if(cX.from>cW.from){cR.push({from:cW.from,to:cX.from,domStart:cW.domStart})}if(cX.to<cW.to){cR.push({from:cX.to+cZ,to:cW.to+cZ,domStart:cW.domStart+(cX.to-cW.from)})}}}}c0=cR}return c0}function aM(c1,c2,c4){if(!c4.length){al.innerHTML=""}else{function cR(c6){var c5=c6.nextSibling;c6.parentNode.removeChild(c6);return c5}var cW=0,cU=al.firstChild,cS;for(var cX=0;cX<c4.length;++cX){var c3=c4[cX];while(c3.domStart>cW){cU=cR(cU);cW++}for(var cV=0,cZ=c3.to-c3.from;cV<cZ;++cV){cU=cU.nextSibling;cW++}}while(cU){cU=cR(cU)}}var cY=c4.shift(),cU=al.firstChild,cV=c1;var c0=cC.createElement("div"),cT;co.iter(c1,c2,function(c5){if(cY&&cY.to==cV){cY=c4.shift()}if(!cY||cY.from>cV){if(c5.hidden){var c6=c0.innerHTML="<pre></pre>"}else{var c6="<pre>"+c5.getHTML(bn)+"</pre>";if(c5.className){c6='<div style="position: relative"><pre class="'+c5.className+'" style="position: absolute; left: 0; right: 0; top: 0; bottom: 0; z-index: -2"> </pre>'+c6+"</div>"}}c0.innerHTML=c6;al.insertBefore(c0.firstChild,cU)}else{cU=cU.nextSibling}++cV})}function aG(){if(!bR.gutter&&!bR.lineNumbers){return}var cR=b6.offsetHeight,cY=be.clientHeight;aC.style.height=(cR-cY<2?cY:cR)+"px";var cT=[],cS=cH;co.iter(cH,Math.max(bD,cH+1),function(c0){if(c0.hidden){cT.push("<pre></pre>")}else{var cZ=c0.gutterMarker;var c2=bR.lineNumbers?cS+bR.firstLineNumber:null;if(cZ&&cZ.text){c2=cZ.text.replace("%N%",c2!=null?c2:"")}else{if(c2==null){c2="\u00a0"}}cT.push((cZ&&cZ.style?'<pre class="'+cZ.style+'">':"<pre>"),c2);for(var c1=1;c1<c0.height;++c1){cT.push("<br/> ")}cT.push("</pre>")}++cS});aC.style.display="none";aU.innerHTML=cT.join("");var cX=String(co.size).length,cV=aU.firstChild,cW=F(cV),cU="";while(cW.length+cU.length<cX){cU+="\u00a0"}if(cU){cV.insertBefore(cC.createTextNode(cU),cV.firstChild)}aC.style.display="";bo.style.marginLeft=aC.offsetWidth+"px";aN=false}function cN(){var cU=aa(cO.from,cO.to);var c3=cI(cO.from,true);var cZ=cU?c3:cI(cO.to,true);var cX=cO.inverted?c3:cZ,cS=bG();var cR=ag(ay),cT=ag(al);bO.style.top=Math.max(0,Math.min(be.offsetHeight,cX.y+cT.top-cR.top))+"px";bO.style.left=Math.max(0,Math.min(be.offsetWidth,cX.x+cT.left-cR.left))+"px";if(cU){a7.style.top=cX.y+"px";a7.style.left=(bR.lineWrapping?Math.min(cX.x,bo.offsetWidth):cX.x)+"px";a7.style.display="";bb.style.display="none"}else{var c1=c3.y==cZ.y,cW="";function c2(c7,c6,c5,c4){cW+='<div class="CodeMirror-selected" style="position: absolute; left: '+c7+"px; top: "+c6+"px; right: "+c5+"px; height: "+c4+'px"></div>'}if(cO.from.ch&&c3.y>=0){var c0=c1?bo.clientWidth-cZ.x:0;c2(c3.x,c3.y,c0,cS)}var cV=Math.max(0,c3.y+(cO.from.ch?cS:0));var cY=Math.min(cZ.y,bo.clientHeight)-cV;if(cY>0.2*cS){c2(0,cV,0,cY)}if((!c1||!cO.from.ch)&&cZ.y<bo.clientHeight-0.5*cS){c2(0,cZ.y,bo.clientWidth-cZ.x,cS)}bb.innerHTML=cW;a7.style.display="none";bb.style.display=""}}function a0(cR){if(cR){b8=b8||(cO.inverted?cO.to:cO.from)}else{b8=null}}function br(cT,cS){var cR=b8&&aO(b8);if(cR){if(X(cR,cT)){cT=cR}else{if(X(cS,cR)){cS=cR}}}bq(cT,cS);bW=true}function bq(cV,cU,cR,cT){cl=null;if(cR==null){cR=cO.from.line;cT=cO.to.line}if(aa(cO.from,cV)&&aa(cO.to,cU)){return}if(X(cU,cV)){var cS=cU;cU=cV;cV=cS}if(cV.line!=cR){cV=bI(cV,cR,cO.from.ch)}if(cU.line!=cT){cU=bI(cU,cT,cO.to.ch)}if(aa(cV,cU)){cO.inverted=false}else{if(aa(cV,cO.to)){cO.inverted=false}else{if(aa(cU,cO.from)){cO.inverted=true}}}cO.from=cV;cO.to=cU;aK=true}function bI(cV,cS,cT){function cU(cY){var c0=cV.line+cY,cX=cY==1?co.size:-1;while(c0!=cX){var cW=cv(c0);if(!cW.hidden){var cZ=cV.ch;if(cZ>cT||cZ>cW.text.length){cZ=cW.text.length}return{line:c0,ch:cZ}}c0+=cY}}var cR=cv(cV.line);if(!cR.hidden){return cV}if(cV.line>=cS){return cU(1)||cU(-1)}else{return cU(-1)||cU(1)}}function a2(cR,cT,cS){var cU=aO({line:cR,ch:cT||0});(cS?br:bq)(cU,cU)}function bP(cR){return Math.max(0,Math.min(cR,co.size-1))}function aO(cT){if(cT.line<0){return{line:0,ch:0}}if(cT.line>=co.size){return{line:co.size-1,ch:cv(co.size-1).text.length}}var cR=cT.ch,cS=cv(cT.line).text.length;if(cR==null||cR>cS){return{line:cT.line,ch:cS}}else{if(cR<0){return{line:cT.line,ch:0}}else{return cT}}}function ce(cU,cY){var cV=cO.inverted?cO.from:cO.to,cZ=cV.line,cR=cV.ch;var cX=cv(cZ);function cS(){for(var c0=cZ+cU,c2=cU<0?-1:co.size;c0!=c2;c0+=cU){var c1=cv(c0);if(!c1.hidden){cZ=c0;cX=c1;return true}}}function cW(c0){if(cR==(cU<0?0:cX.text.length)){if(!c0&&cS()){cR=cU<0?cX.text.length:0}else{return false}}else{cR+=cU}return true}if(cY=="char"){cW()}else{if(cY=="column"){cW(true)}else{if(cY=="word"){var cT=false;for(;;){if(cU<0){if(!cW()){break}}if(ac(cX.text.charAt(cR))){cT=true}else{if(cT){if(cU<0){cU=1;cW()}break}}if(cU>0){if(!cW()){break}}}}}}return{line:cZ,ch:cR}}function cu(cR,cS){var cT=cR<0?cO.from:cO.to;if(b8||aa(cO.from,cO.to)){cT=ce(cR,cS)}a2(cT.line,cT.ch,true)}function cc(cR,cS){if(!aa(cO.from,cO.to)){bH("",cO.from,cO.to)}else{if(cR<0){bH("",ce(cR,cS),cO.to)}else{bH("",cO.from,ce(cR,cS))}}bW=true}var cl=null;function cn(cR,cS){var cU=0,cV=cI(cO.inverted?cO.from:cO.to,true);if(cl!=null){cV.x=cl}if(cS=="page"){cU=Math.min(be.clientHeight,window.innerHeight||document.documentElement.clientHeight)}else{if(cS=="line"){cU=bG()}}var cT=bz(cV.x,cV.y+cU*cR+2);a2(cT.line,cT.ch,true);cl=cV.x}function bA(cU){var cS=cv(cU.line).text;var cT=cU.ch,cR=cU.ch;while(cT>0&&ac(cS.charAt(cT-1))){--cT}while(cR<cS.length&&ac(cS.charAt(cR))){++cR}br({line:cU.line,ch:cT},{line:cU.line,ch:cR})}function aF(cR){br({line:cR,ch:0},{line:cR,ch:cv(cR).text.length})}function cr(cT){if(aa(cO.from,cO.to)){return bs(cO.from.line,cT)}var cS=cO.to.line-(cO.to.ch?0:1);for(var cR=cO.from.line;cR<=cS;++cR){bs(cR,cT)}}function bs(cT,c0){if(!c0){c0="add"}if(c0=="smart"){if(!b1.indent){c0="prev"}else{var cR=ck(cT)}}var c1=cv(cT),cV=c1.indentation(bR.tabSize),cS=c1.text.match(/^\s*/)[0],cX;if(c0=="prev"){if(cT){cX=cv(cT-1).indentation(bR.tabSize)}else{cX=0}}else{if(c0=="smart"){cX=b1.indent(cR,c1.text.slice(cS.length),c1.text)}else{if(c0=="add"){cX=cV+bR.indentUnit}else{if(c0=="subtract"){cX=cV-bR.indentUnit}}}}cX=Math.max(0,cX);var cZ=cX-cV;if(!cZ){if(cO.from.line!=cT&&cO.to.line!=cT){return}var cY=cS}else{var cY="",cW=0;if(bR.indentWithTabs){for(var cU=Math.floor(cX/bR.tabSize);cU;--cU){cW+=bR.tabSize;cY+="\t"}}while(cW<cX){++cW;cY+=" "}}bH(cY,{line:cT,ch:0},{line:cT,ch:cS.length})}function bK(){b1=u.getMode(bR,bR.mode);co.iter(0,co.size,function(cR){cR.stateAfter=null});b7=[0];by()}function a9(){var cR=bR.gutter||bR.lineNumbers;aC.style.display=cR?"":"none";if(cR){aN=true}else{al.parentNode.style.marginLeft=0}}function cw(cT,cS){if(bR.lineWrapping){ay.className+=" CodeMirror-wrap";var cR=be.clientWidth/bc()-3;co.iter(0,co.size,function(cU){if(cU.hidden){return}var cV=Math.ceil(cU.text.length/cR)||1;if(cV!=1){aZ(cU,cV)}});bo.style.width=bE.style.width=""}else{ay.className=ay.className.replace(" CodeMirror-wrap","");aA=null;bv="";co.iter(0,co.size,function(cU){if(cU.height!=1&&!cU.hidden){aZ(cU,1)}if(cU.text.length>bv.length){bv=cU.text}})}aw.push({from:0,to:co.size})}function aR(){for(var cS='<span class="cm-tab">',cR=0;cR<bR.tabSize;++cR){cS+=" "}return cS+"</span>"}function cM(){bn=aR();b3(true)}function ct(){be.className=be.className.replace(/\s*cm-s-\w+/g,"")+bR.theme.replace(/(^|\s)\s*/g," cm-s-")}function cP(){this.set=[]}cP.prototype.clear=am(function(){var cW=Infinity,cS=-Infinity;for(var cV=0,cY=this.set.length;cV<cY;++cV){var cT=this.set[cV],cR=cT.marked;if(!cR||!cT.parent){continue}var cX=W(cT);cW=Math.min(cW,cX);cS=Math.max(cS,cX);for(var cU=0;cU<cR.length;++cU){if(cR[cU].set==this.set){cR.splice(cU--,1)}}}if(cW!=Infinity){aw.push({from:cW,to:cS+1})}});cP.prototype.find=function(){var cW,cX;for(var cT=0,cV=this.set.length;cT<cV;++cT){var cZ=this.set[cT],cU=cZ.marked;for(var cS=0;cS<cU.length;++cS){var cR=cU[cS];if(cR.set==this.set){if(cR.from!=null||cR.to!=null){var cY=W(cZ);if(cY!=null){if(cR.from!=null){cW={line:cY,ch:cR.from}}if(cR.to!=null){cX={line:cY,ch:cR.to}}}}}}}return{from:cW,to:cX}};function bw(cX,cW,cT){cX=aO(cX);cW=aO(cW);var cR=new cP();function cV(cY,c1,c0,cZ){cv(cY).addMark(new I(c1,c0,cZ,cR.set))}if(cX.line==cW.line){cV(cX.line,cX.ch,cW.ch,cT)}else{cV(cX.line,cX.ch,null,cT);for(var cS=cX.line+1,cU=cW.line;cS<cU;++cS){cV(cS,null,null,cT)}cV(cW.line,null,cW.ch,cT)}aw.push({from:cX.line,to:cW.line+1});return cR}function aP(cS){cS=aO(cS);var cR=new E(cS.ch);cv(cS.line).addMark(cR);return cR}function bM(cR,cT,cS){if(typeof cR=="number"){cR=cv(bP(cR))}cR.gutterMarker={text:cT,style:cS};aN=true;return cR}function ao(cR){if(typeof cR=="number"){cR=cv(bP(cR))}cR.gutterMarker=null;aN=true}function aT(cS,cU){var cT=cS,cR=cS;if(typeof cS=="number"){cR=cv(bP(cS))}else{cT=W(cS)}if(cT==null){return null}if(cU(cR,cT)){aw.push({from:cT,to:cT+1})}else{return null}return cR}function bf(cS,cR){return aT(cS,function(cT){if(cT.className!=cR){cT.className=cR;return true}})}function cA(cS,cR){return aT(cS,function(cT,cW){if(cT.hidden!=cR){cT.hidden=cR;aZ(cT,cR?0:1);var cV=cO.from.line,cU=cO.to.line;if(cR&&(cV==cW||cU==cW)){var cY=cV==cW?bI({line:cV,ch:0},cV,0):cO.from;var cX=cU==cW?bI({line:cU,ch:0},cU,0):cO.to;bq(cY,cX)}return(aN=true)}})}function aQ(cS){if(typeof cS=="number"){if(!bk(cS)){return null}var cT=cS;cS=cv(cS);if(!cS){return null}}else{var cT=W(cS);if(cT==null){return null}}var cR=cS.gutterMarker;return{line:cT,handle:cS,text:cS.text,markerText:cR&&cR.text,markerClass:cR&&cR.style,lineClass:cS.className}}function cj(cR){ap.innerHTML="<pre><span>x</span></pre>";ap.firstChild.firstChild.firstChild.nodeValue=cR;return ap.firstChild.firstChild.offsetWidth||10}function aB(c3,cX){if(cX<=0){return 0}var cU=cv(c3),c0=cU.text;function c1(c4){ap.innerHTML="<pre><span>"+cU.getHTML(bn,c4)+"</span></pre>";return ap.firstChild.firstChild.offsetWidth}var cY=0,cW=0,cZ=c0.length,cV;var cS=Math.min(cZ,Math.ceil(cX/bc()));for(;;){var cT=c1(cS);if(cT<=cX&&cS<cZ){cS=Math.min(cZ,Math.ceil(cS*1.2))}else{cV=cT;cZ=cS;break}}if(cX>cV){return cZ}cS=Math.floor(cZ*0.8);cT=c1(cS);if(cT<cX){cY=cS;cW=cT}for(;;){if(cZ-cY<=1){return(cV-cX>cX-cW)?cY:cZ}var c2=Math.ceil((cY+cZ)/2),cR=c1(c2);if(cR>cX){cZ=c2;cV=cR}else{cY=c2;cW=cR}}}var cp=Math.floor(Math.random()*16777215).toString(16);function bV(cT,cW){if(cW==0){return{top:0,left:0}}var cR="";if(bR.lineWrapping){var cS=cT.text.indexOf(" ",cW+2);cR=N(cT.text.slice(cW+1,cS<0?cT.text.length:cS+(G?5:0)))}ap.innerHTML="<pre>"+cT.getHTML(bn,cW)+'<span id="CodeMirror-temp-'+cp+'">'+N(cT.text.charAt(cW)||" ")+"</span>"+cR+"</pre>";var cV=document.getElementById("CodeMirror-temp-"+cp);var cY=cV.offsetTop,cX=cV.offsetLeft;if(G&&cY==0&&cX==0){var cU=document.createElement("span");cU.innerHTML="x";cV.parentNode.insertBefore(cU,cV.nextSibling);cY=cU.offsetTop}return{top:cY,left:cX}}function cI(cW,cU){var cR,cS=bG(),cV=cS*(h(co,cW.line)-(cU?a8:0));if(cW.ch==0){cR=0}else{var cT=bV(cv(cW.line),cW.ch);cR=cT.left;if(bR.lineWrapping){cV+=Math.max(0,cT.top)}}return{x:cR,y:cV,yBot:cV+cS}}function bz(c0,cZ){if(cZ<0){cZ=0}var cX=bG(),cV=bc(),c6=a8+Math.floor(cZ/cX);var c1=V(co,c6);if(c1>=co.size){return{line:co.size-1,ch:cv(co.size-1).text.length}}var cS=cv(c1),c3=cS.text;var c8=bR.lineWrapping,cY=c8?c6-h(co,c1):0;if(c0<=0&&cY==0){return{line:c1,ch:0}}function c7(da){var db=bV(cS,da);if(c8){var dc=Math.round(db.top/cX);return Math.max(0,db.left+(dc-cY)*be.clientWidth)}return db.left}var c5=0,c4=0,cT=c3.length,cR;var c2=Math.min(cT,Math.ceil((c0+cY*be.clientWidth*0.9)/cV));for(;;){var cW=c7(c2);if(cW<=c0&&c2<cT){c2=Math.min(cT,Math.ceil(c2*1.2))}else{cR=cW;cT=c2;break}}if(c0>cR){return{line:c1,ch:cT}}c2=Math.floor(cT*0.8);cW=c7(c2);if(cW<c0){c5=c2;c4=cW}for(;;){if(cT-c5<=1){return{line:c1,ch:(cR-c0>c0-c4)?c5:cT}}var c9=Math.ceil((c5+cT)/2),cU=c7(c9);if(cU>c0){cT=c9;cR=cU}else{c5=c9;c4=cU}}}function ak(cT){var cR=cI(cT,true),cS=ag(bo);return{x:cS.left+cR.x,y:cS.top+cR.y,yBot:cS.top+cR.yBot}}var aW,ar,bL;function bG(){if(bL==null){bL="<pre>";for(var cS=0;cS<49;++cS){bL+="x<br/>"}bL+="x</pre>"}var cR=al.clientHeight;if(cR==ar){return aW}ar=cR;ap.innerHTML=bL;aW=ap.firstChild.offsetHeight/50||1;ap.innerHTML="";return aW}var cJ,bp=0;function bc(){if(be.clientWidth==bp){return cJ}bp=be.clientWidth;return(cJ=cj("x"))}function ci(){return bo.offsetTop}function a1(){return bo.offsetLeft}function aY(cV,cU){var cT=ag(be,true),cR,cW;try{cR=cV.clientX;cW=cV.clientY}catch(cV){return null}if(!cU&&(cR-cT.left>be.clientWidth||cW-cT.top>be.clientHeight)){return null}var cS=ag(bo,true);return bz(cR-cS.left,cW-cS.top)}function aX(cS){var cW=aY(cS);if(!cW||window.opera){return}if(aa(cO.from,cO.to)||X(cW,cO.from)||!X(cW,cO.to)){am(a2)(cW.line,cW.ch)}var cV=bg.style.cssText;bO.style.position="absolute";bg.style.cssText="position: fixed; width: 30px; height: 30px; top: "+(cS.clientY-5)+"px; left: "+(cS.clientX-5)+"px; z-index: 1000; background: white; border-width: 0; outline: none; overflow: hidden; opacity: .05; filter: alpha(opacity=5);";ba=true;var cU=bg.value=bT();bt();bg.select();function cR(){var cX=A(bg.value).join("\n");if(cX!=cU){am(bl)(cX,"end")}bO.style.position="relative";bg.style.cssText=cV;ba=false;cs(true);ai()}if(L){w(cS);var cT=r(window,"mouseup",function(){cT();setTimeout(cR,20)},true)}else{setTimeout(cR,50)}}function cD(){clearInterval(cG);var cR=true;a7.style.visibility="";cG=setInterval(function(){a7.style.visibility=(cR=!cR)?"":"hidden"},650)}var bi={"(":")>",")":"(<","[":"]>","]":"[<","{":"}>","}":"{<"};function b4(cX){var cR=cO.inverted?cO.from:cO.to,cZ=cv(cR.line),cS=cR.ch-1;var cW=(cS>=0&&bi[cZ.text.charAt(cS)])||bi[cZ.text.charAt(++cS)];if(!cW){return}var c0=cW.charAt(0),cY=cW.charAt(1)==">",da=cY?1:-1,c5=cZ.styles;for(var db=cS+1,c7=0,c9=c5.length;c7<c9;c7+=2){if((db-=c5[c7].length)<=0){var c8=c5[c7+1];break}}var cU=[cZ.text.charAt(cS)],c4=/[(){}[\]]/;function c2(dn,di,dj){if(!dn.text){return}var dm=dn.styles,dh=cY?0:dn.text.length-1,dk;for(var de=cY?0:dm.length-2,dg=cY?dm.length:-2;de!=dg;de+=2*da){var dl=dm[de];if(dm[de+1]!=null&&dm[de+1]!=c8){dh+=da*dl.length;continue}for(var dd=cY?0:dl.length-1,dc=cY?dl.length:-1;dd!=dc;dd+=da,dh+=da){if(dh>=di&&dh<dj&&c4.test(dk=dl.charAt(dd))){var df=bi[dk];if(df.charAt(1)==">"==cY){cU.push(dk)}else{if(cU.pop()!=df.charAt(0)){return{pos:dh,match:false}}else{if(!cU.length){return{pos:dh,match:true}}}}}}}}for(var c7=cR.line,c9=cY?Math.min(c7+100,co.size):Math.max(-1,c7-100);c7!=c9;c7+=da){var cZ=cv(c7),cV=c7==cR.line;var c1=c2(cZ,cV&&cY?cS+1:0,cV&&!cY?cS:cZ.text.length);if(c1){break}}if(!c1){c1={pos:null,match:false}}var c8=c1.match?"CodeMirror-matchingbracket":"CodeMirror-nonmatchingbracket";var c6=bw({line:cR.line,ch:cS},{line:cR.line,ch:cS+1},c8),cT=c1.pos!=null&&bw({line:c7,ch:c1.pos},{line:c7,ch:c1.pos+1},c8);var c3=am(function(){c6.clear();cT&&cT.clear()});if(cX){setTimeout(c3,800)}else{bU=c3}}function a3(cX){var cW,cT;for(var cS=cX,cU=cX-40;cS>cU;--cS){if(cS==0){return 0}var cR=cv(cS-1);if(cR.stateAfter){return cS}var cV=cR.indentation(bR.tabSize);if(cT==null||cW>cV){cT=cS-1;cW=cV}}return cT}function ck(cT){var cS=a3(cT),cR=cS&&cv(cS-1).stateAfter;if(!cR){cR=T(b1)}else{cR=p(b1,cR)}co.iter(cS,cT,function(cU){cU.highlight(b1,cR,bR.tabSize);cU.stateAfter=p(b1,cR)});if(cS<cT){aw.push({from:cS,to:cT})}if(cT<co.size&&!cv(cT).stateAfter){b7.push(cT)}return cR}function cx(cT,cR){var cS=ck(cT);co.iter(cT,cR,function(cU){cU.highlight(b1,cS,bR.tabSize);cU.stateAfter=p(b1,cS)})}function bJ(){var cX=+new Date+bR.workTime;var c0=b7.length;while(b7.length){if(!cv(cH).stateAfter){var cU=cH}else{var cU=b7.pop()}if(cU>=co.size){continue}var cS=a3(cU),cR=cS&&cv(cS-1).stateAfter;if(cR){cR=p(b1,cR)}else{cR=T(b1)}var cW=0,cT=b1.compareStates,cZ=false,cY=cS,cV=false;co.iter(cY,co.size,function(c1){var c2=c1.stateAfter;if(+new Date>cX){b7.push(cY);by(bR.workDelay);if(cZ){aw.push({from:cU,to:cY+1})}return(cV=true)}var c3=c1.highlight(b1,cR,bR.tabSize);if(c3){cZ=true}c1.stateAfter=p(b1,cR);if(cT){if(c2&&cT(c2,cR)){return true}}else{if(c3!==false||!c2){cW=0}else{if(++cW>3&&(!b1.indent||b1.indent(c2,"")==b1.indent(cR,""))){return true}}}++cY});if(cV){return}if(cZ){aw.push({from:cU,to:cY+1})}}if(c0&&bR.onHighlightComplete){bR.onHighlightComplete(bZ)}}function by(cR){if(!b7.length){return}aq.set(cR,am(bJ))}function aI(){cf=bW=cE=null;aw=[];aK=false;cq=[]}function at(){var cV=false,cS;if(aK){cV=!b5()}if(aw.length){cS=b3(aw,true)}else{if(aK){cN()}if(aN){aG()}}if(cV){b5()}if(aK){cQ();cD()}if(b9&&!ba&&(cf===true||(cf!==false&&aK))){cs(bW)}if(aK&&bR.matchBrackets){setTimeout(am(function(){if(bU){bU();bU=null}if(aa(cO.from,cO.to)){b4(false)}}),20)}var cR=cE,cT=cq;if(aK&&bR.onCursorActivity){bR.onCursorActivity(bZ)}if(cR&&bR.onChange&&bZ){bR.onChange(bZ,cR)}for(var cU=0;cU<cT.length;++cU){cT[cU](bZ)}if(cS&&bR.onUpdate){bR.onUpdate(bZ)}}var cg=0;function am(cR){return function(){if(!cg++){aI()}try{var cS=cR.apply(this,arguments)}finally{if(!--cg){at()}}return cS}}for(var bB in Z){if(Z.propertyIsEnumerable(bB)&&!bZ.propertyIsEnumerable(bB)){bZ[bB]=Z[bB]}}return bZ}u.defaults={value:"",mode:null,theme:"default",indentUnit:2,indentWithTabs:false,smartIndent:true,tabSize:4,keyMap:"default",extraKeys:null,electricChars:true,onKeyEvent:null,lineWrapping:false,lineNumbers:false,gutter:false,fixedGutter:false,firstLineNumber:1,readOnly:false,onChange:null,onCursorActivity:null,onGutterClick:null,onHighlightComplete:null,onUpdate:null,onFocus:null,onBlur:null,onScroll:null,matchBrackets:false,workTime:100,workDelay:200,pollInterval:100,undoDepth:40,tabindex:null,document:window.document};var s=/AppleWebKit/.test(navigator.userAgent)&&/Mobile\/\w+/.test(navigator.userAgent);var K=s||/Mac/.test(navigator.platform);var S=/Win/.test(navigator.platform);var af={},Q={};u.defineMode=function(ai,aj){if(!u.defaults.mode&&ai!="null"){u.defaults.mode=ai}af[ai]=aj};u.defineMIME=function(aj,ai){Q[aj]=ai};u.getMode=function(ak,ai){if(typeof ai=="string"&&Q.hasOwnProperty(ai)){ai=Q[ai]}if(typeof ai=="string"){var am=ai,aj={}}else{if(ai!=null){var am=ai.name,aj=ai}}var al=af[am];if(!al){if(window.console){console.warn("No mode "+am+" found, falling back to plain text.")}return u.getMode(ak,"text/plain")}return al(ak,aj||{})};u.listModes=function(){var aj=[];for(var ai in af){if(af.propertyIsEnumerable(ai)){aj.push(ai)}}return aj};u.listMIMEs=function(){var aj=[];for(var ai in Q){if(Q.propertyIsEnumerable(ai)){aj.push({mime:ai,mode:Q[ai]})}}return aj};var Z=u.extensions={};u.defineExtension=function(ai,aj){Z[ai]=aj};var J=u.commands={selectAll:function(ai){ai.setSelection({line:0,ch:0},{line:ai.lineCount()-1})},killLine:function(ai){var al=ai.getCursor(true),ak=ai.getCursor(false),aj=!aa(al,ak);if(!aj&&ai.getLine(al.line).length==al.ch){ai.replaceRange("",al,{line:al.line+1,ch:0})}else{ai.replaceRange("",al,aj?ak:{line:al.line})}},deleteLine:function(ai){var aj=ai.getCursor().line;ai.replaceRange("",{line:aj,ch:0},{line:aj})},undo:function(ai){ai.undo()},redo:function(ai){ai.redo()},goDocStart:function(ai){ai.setCursor(0,0,true)},goDocEnd:function(ai){ai.setSelection({line:ai.lineCount()-1},null,true)},goLineStart:function(ai){ai.setCursor(ai.getCursor().line,0,true)},goLineStartSmart:function(ai){var al=ai.getCursor();var ak=ai.getLine(al.line),aj=Math.max(0,ak.search(/\S/));ai.setCursor(al.line,al.ch<=aj&&al.ch?0:aj,true)},goLineEnd:function(ai){ai.setSelection({line:ai.getCursor().line},null,true)},goLineUp:function(ai){ai.moveV(-1,"line")},goLineDown:function(ai){ai.moveV(1,"line")},goPageUp:function(ai){ai.moveV(-1,"page")},goPageDown:function(ai){ai.moveV(1,"page")},goCharLeft:function(ai){ai.moveH(-1,"char")},goCharRight:function(ai){ai.moveH(1,"char")},goColumnLeft:function(ai){ai.moveH(-1,"column")},goColumnRight:function(ai){ai.moveH(1,"column")},goWordLeft:function(ai){ai.moveH(-1,"word")},goWordRight:function(ai){ai.moveH(1,"word")},delCharLeft:function(ai){ai.deleteH(-1,"char")},delCharRight:function(ai){ai.deleteH(1,"char")},delWordLeft:function(ai){ai.deleteH(-1,"word")},delWordRight:function(ai){ai.deleteH(1,"word")},indentAuto:function(ai){ai.indentSelection("smart")},indentMore:function(ai){ai.indentSelection("add")},indentLess:function(ai){ai.indentSelection("subtract")},insertTab:function(ai){ai.replaceSelection("\t","end")},transposeChars:function(ai){var ak=ai.getCursor(),aj=ai.getLine(ak.line);if(ak.ch>0&&ak.ch<aj.length-1){ai.replaceRange(aj.charAt(ak.ch)+aj.charAt(ak.ch-1),{line:ak.line,ch:ak.ch-1},{line:ak.line,ch:ak.ch+1})}},newlineAndIndent:function(ai){ai.replaceSelection("\n","end");ai.indentLine(ai.getCursor().line)},toggleOverwrite:function(ai){ai.toggleOverwrite()}};var v=u.keyMap={};v.basic={Left:"goCharLeft",Right:"goCharRight",Up:"goLineUp",Down:"goLineDown",End:"goLineEnd",Home:"goLineStartSmart",PageUp:"goPageUp",PageDown:"goPageDown",Delete:"delCharRight",Backspace:"delCharLeft",Tab:"indentMore","Shift-Tab":"indentLess",Enter:"newlineAndIndent",Insert:"toggleOverwrite"};v.pcDefault={"Ctrl-A":"selectAll","Ctrl-D":"deleteLine","Ctrl-Z":"undo","Shift-Ctrl-Z":"redo","Ctrl-Y":"redo","Ctrl-Home":"goDocStart","Alt-Up":"goDocStart","Ctrl-End":"goDocEnd","Ctrl-Down":"goDocEnd","Ctrl-Left":"goWordLeft","Ctrl-Right":"goWordRight","Alt-Left":"goLineStart","Alt-Right":"goLineEnd","Ctrl-Backspace":"delWordLeft","Ctrl-Delete":"delWordRight","Ctrl-S":"save","Ctrl-F":"find","Ctrl-G":"findNext","Shift-Ctrl-G":"findPrev","Shift-Ctrl-F":"replace","Shift-Ctrl-R":"replaceAll",fallthrough:"basic"};v.macDefault={"Cmd-A":"selectAll","Cmd-D":"deleteLine","Cmd-Z":"undo","Shift-Cmd-Z":"redo","Cmd-Y":"redo","Cmd-Up":"goDocStart","Cmd-End":"goDocEnd","Cmd-Down":"goDocEnd","Alt-Left":"goWordLeft","Alt-Right":"goWordRight","Cmd-Left":"goLineStart","Cmd-Right":"goLineEnd","Alt-Backspace":"delWordLeft","Ctrl-Alt-Backspace":"delWordRight","Alt-Delete":"delWordRight","Cmd-S":"save","Cmd-F":"find","Cmd-G":"findNext","Shift-Cmd-G":"findPrev","Cmd-Alt-F":"replace","Shift-Cmd-Alt-F":"replaceAll",fallthrough:["basic","emacsy"]};v["default"]=K?v.macDefault:v.pcDefault;v.emacsy={"Ctrl-F":"goCharRight","Ctrl-B":"goCharLeft","Ctrl-P":"goLineUp","Ctrl-N":"goLineDown","Alt-F":"goWordRight","Alt-B":"goWordLeft","Ctrl-A":"goLineStart","Ctrl-E":"goLineEnd","Ctrl-V":"goPageUp","Shift-Ctrl-V":"goPageDown","Ctrl-D":"delCharRight","Ctrl-H":"delCharLeft","Alt-D":"delWordRight","Alt-Backspace":"delWordLeft","Ctrl-K":"killLine","Ctrl-T":"transposeChars"};function m(aj,ai,al){function ak(am,aq,ar){var ao=aq[am];if(ao!=null){return ao}if(ar==null){ar=aq.fallthrough}if(ar==null){return aq.catchall}if(typeof ar=="string"){return ak(am,v[ar])}for(var an=0,ap=ar.length;an<ap;++an){ao=ak(am,v[ar[an]]);if(ao!=null){return ao}}return null}return ai?ak(aj,ai,al):ak(aj,v[al])}function O(aj){var ai=P[y(aj,"keyCode")];return ai=="Ctrl"||ai=="Alt"||ai=="Shift"||ai=="Mod"}u.fromTextArea=function(aj,al){if(!al){al={}}al.value=aj.value;if(!al.tabindex&&aj.tabindex){al.tabindex=aj.tabindex}function an(){aj.value=ai.getValue()}if(aj.form){var am=r(aj.form,"submit",an,true);if(typeof aj.form.submit=="function"){var ak=aj.form.submit;function ao(){an();aj.form.submit=ak;aj.form.submit();aj.form.submit=ao}aj.form.submit=ao}}aj.style.display="none";var ai=u(function(ap){aj.parentNode.insertBefore(ap,aj.nextSibling)},al);ai.save=an;ai.getTextArea=function(){return aj};ai.toTextArea=function(){an();aj.parentNode.removeChild(ai.getWrapperElement());aj.style.display="";if(aj.form){am();if(typeof aj.form.submit=="function"){aj.form.submit=ak}}};return ai};function p(al,ai){if(ai===true){return ai}if(al.copyState){return al.copyState(ai)}var ak={};for(var am in ai){var aj=ai[am];if(aj instanceof Array){aj=aj.concat([])}ak[am]=aj}return ak}u.copyState=p;function T(ak,aj,ai){return ak.startState?ak.startState(aj,ai):true}u.startState=T;function d(ai,aj){this.pos=this.start=0;this.string=ai;this.tabSize=aj||8}d.prototype={eol:function(){return this.pos>=this.string.length},sol:function(){return this.pos==0},peek:function(){return this.string.charAt(this.pos)},next:function(){if(this.pos<this.string.length){return this.string.charAt(this.pos++)}},eat:function(ai){var ak=this.string.charAt(this.pos);if(typeof ai=="string"){var aj=ak==ai}else{var aj=ak&&(ai.test?ai.test(ak):ai(ak))}if(aj){++this.pos;return ak}},eatWhile:function(ai){var aj=this.pos;while(this.eat(ai)){}return this.pos>aj},eatSpace:function(){var ai=this.pos;while(/[\s\u00a0]/.test(this.string.charAt(this.pos))){++this.pos}return this.pos>ai},skipToEnd:function(){this.pos=this.string.length},skipTo:function(ai){var aj=this.string.indexOf(ai,this.pos);if(aj>-1){this.pos=aj;return true}},backUp:function(ai){this.pos-=ai},column:function(){return o(this.string,this.start,this.tabSize)},indentation:function(){return o(this.string,null,this.tabSize)},match:function(al,aj,ai){if(typeof al=="string"){function am(an){return ai?an.toLowerCase():an}if(am(this.string).indexOf(am(al),this.pos)==this.pos){if(aj!==false){this.pos+=al.length}return true}}else{var ak=this.string.slice(this.pos).match(al);if(ak&&aj!==false){this.pos+=ak[0].length}return ak}},current:function(){return this.string.slice(this.start,this.pos)}};u.StringStream=d;function I(al,ak,ai,aj){this.from=al;this.to=ak;this.style=ai;this.set=aj}I.prototype={attach:function(ai){this.set.push(ai)},detach:function(aj){var ai=q(this.set,aj);if(ai>-1){this.set.splice(ai,1)}},split:function(al,ai){if(this.to<=al&&this.to!=null){return null}var ak=this.from<al||this.from==null?null:this.from-al+ai;var aj=this.to==null?null:this.to-al+ai;return new I(ak,aj,this.style,this.set)},dup:function(){return new I(null,null,this.style,this.set)},clipTo:function(aj,am,ai,al,ak){if(this.from!=null&&this.from>=am){this.from=Math.max(al,this.from)+ak}if(this.to!=null&&this.to>am){this.to=al<this.to?this.to+ak:am}if(aj&&al>this.from&&(al<this.to||this.to==null)){this.from=null}if(ai&&(am<this.to||this.to==null)&&(am>this.from||this.from==null)){this.to=null}},isDead:function(){return this.from!=null&&this.to!=null&&this.from>=this.to},sameSet:function(ai){return this.set==ai.set}};function E(ai){this.from=ai;this.to=ai;this.line=null}E.prototype={attach:function(ai){this.line=ai},detach:function(ai){if(this.line==ai){this.line=null}},split:function(aj,ai){if(aj<this.from){this.from=this.to=(this.from-aj)+ai;return this}},isDead:function(){return this.from>this.to},clipTo:function(aj,am,ai,al,ak){if((aj||am<this.from)&&(ai||al>this.to)){this.from=0;this.to=-1}else{if(this.from>am){this.from=this.to=Math.max(al,this.from)+ak}}},sameSet:function(ai){return false},find:function(){if(!this.line||!this.line.parent){return null}return{line:W(this.line),ch:this.from}},clear:function(){if(this.line){var ai=q(this.line.marked,this);if(ai!=-1){this.line.marked.splice(ai,1)}this.line=null}}};function f(aj,ai){this.styles=ai||[aj,null];this.text=aj;this.height=1;this.marked=this.gutterMarker=this.className=this.handlers=null;this.stateAfter=this.parent=this.hidden=null}f.inheritMarks=function(am,ap){var al=new f(am),ai=ap&&ap.marked;if(ai){for(var ak=0;ak<ai.length;++ak){if(ai[ak].to==null&&ai[ak].style){var aj=al.marked||(al.marked=[]),ao=ai[ak];var an=ao.dup();aj.push(an);an.attach(al)}}}return al};f.prototype={replace:function(am,al,ap){var aq=[],ak=this.marked,an=al==null?this.text.length:al;ah(0,am,this.styles,aq);if(ap){aq.push(ap,null)}ah(an,this.text.length,this.styles,aq);this.styles=aq;this.text=this.text.slice(0,am)+ap+this.text.slice(an);this.stateAfter=null;if(ak){var ao=ap.length-(an-am);for(var aj=0;aj<ak.length;++aj){var ai=ak[aj];ai.clipTo(am==null,am||0,al==null,an,ao);if(ai.isDead()){ai.detach(this);ak.splice(aj--,1)}}}},split:function(ap,an){var al=[an,null],aj=this.marked;ah(ap,this.text.length,this.styles,al);var ak=new f(an+this.text.slice(ap),al);if(aj){for(var am=0;am<aj.length;++am){var ao=aj[am];var ai=ao.split(ap,an.length);if(ai){if(!ak.marked){ak.marked=[]}ak.marked.push(ai);ai.attach(ak)}}}return ak},append:function(aj){var ao=this.text.length,ai=aj.marked,am=this.marked;this.text+=aj.text;ah(0,aj.text.length,aj.styles,this.styles);if(am){for(var an=0;an<am.length;++an){if(am[an].to==null){am[an].to=ao}}}if(ai&&ai.length){if(!am){this.marked=am=[]}outer:for(var an=0;an<ai.length;++an){var ap=ai[an];if(!ap.from){for(var al=0;al<am.length;++al){var ak=am[al];if(ak.to==ao&&ak.sameSet(ap)){ak.to=ap.to==null?null:ap.to+ao;if(ak.isDead()){ak.detach(this);ai.splice(an--,1)}continue outer}}}am.push(ap);ap.attach(this);ap.from+=ao;if(ap.to!=null){ap.to+=ao}}}},fixMarkEnds:function(aj){var ai=this.marked,am=aj.marked;if(!ai){return}for(var al=0;al<ai.length;++al){var ao=ai[al],an=ao.to==null;if(an&&am){for(var ak=0;ak<am.length;++ak){if(am[ak].sameSet(ao)){an=false;break}}}if(an){ao.to=this.text.length}}},fixMarkStarts:function(){var ai=this.marked;if(!ai){return}for(var aj=0;aj<ai.length;++aj){if(ai[aj].from==null){ai[aj].from=0}}},addMark:function(ai){ai.attach(this);if(this.marked==null){this.marked=[]}this.marked.push(ai);this.marked.sort(function(ak,aj){return(ak.from||0)-(aj.from||0)})},highlight:function(an,aj,ao){var ar=new d(this.text,ao),at=this.styles,ap=0;var am=false,ak=at[0],aq;if(this.text==""&&an.blankLine){an.blankLine(aj)}while(!ar.eol()){var ai=an.token(ar,aj);var al=this.text.slice(ar.start,ar.pos);ar.start=ar.pos;if(ap&&at[ap-1]==ai){at[ap-2]+=al}else{if(al){if(!am&&(at[ap+1]!=ai||(ap&&at[ap-2]!=aq))){am=true}at[ap++]=al;at[ap++]=ai;aq=ak;ak=at[ap]}}if(ar.pos>5000){at[ap++]=this.text.slice(ar.pos);at[ap++]=null;break}}if(at.length!=ap){at.length=ap;am=true}if(ap&&at[ap-2]!=aq){am=true}return am||(at.length<5&&this.text.length<10?null:false)},getTokenAt:function(an,al,ak){var ai=this.text,am=new d(ai);while(am.pos<ak&&!am.eol()){am.start=am.pos;var aj=an.token(am,al)}return{start:am.start,end:am.pos,string:am.current(),className:aj||null,state:al}},indentation:function(ai){return o(this.text,null,ai)},getHTML:function(at,ay){var ao=[],am=true;function aC(aL,aK){if(!aL){return}if(am&&G&&aL.charAt(0)==" "){aL="\u00a0"+aL.slice(1)}am=false;if(aK){ao.push('<span class="',aK,'">',N(aL).replace(/\t/g,at),"</span>")}else{ao.push(N(aL).replace(/\t/g,at))}}var aw=this.styles,an=this.text,au=this.marked;var aF=an.length;if(ay!=null){aF=Math.min(ay,aF)}function ak(aK){if(!aK){return null}return"cm-"+aK.replace(/ +/g," cm-")}if(!an&&ay==null){aC(" ")}else{if(!au||!au.length){for(var aD=0,ap=0;ap<aF;aD+=2){var ax=aw[aD],aG=aw[aD+1],az=ax.length;if(ap+az>aF){ax=ax.slice(0,aF-ap)}ap+=az;aC(ax,ak(aG))}}else{var al=0,aD=0,ar="",aG,aJ=0;var aI=au[0].from||0,aB=[],aH=0;function aE(){var aK;while(aH<au.length&&((aK=au[aH]).from==al||aK.from==null)){if(aK.style!=null){aB.push(aK)}++aH}aI=aH<au.length?au[aH].from:Infinity;for(var aL=0;aL<aB.length;++aL){var aM=aB[aL].to||Infinity;if(aM==al){aB.splice(aL--,1)}else{aI=Math.min(aM,aI)}}}var av=0;while(al<aF){if(aI==al){aE()}var aq=Math.min(aF,aI);while(true){if(ar){var aj=al+ar.length;var ai=aG;for(var aA=0;aA<aB.length;++aA){ai=(ai?ai+" ":"")+aB[aA].style}aC(aj>aq?ar.slice(0,aq-al):ar,ai);if(aj>=aq){ar=ar.slice(aq-al);al=aq;break}al=aj}ar=aw[aD++];aG=ak(aw[aD++])}}}}return ao.join("")},cleanUp:function(){this.parent=null;if(this.marked){for(var ai=0,aj=this.marked.length;ai<aj;++ai){this.marked[ai].detach(this)}}}};function ah(ao,ap,ai,aq){for(var am=0,an=0,aj=0;an<ap;am+=2){var ak=ai[am],al=an+ak.length;if(aj==0){if(al>ao){aq.push(ak.slice(ao-an,Math.min(ak.length,ap-an)),ai[am+1])}if(al>=ao){aj=1}}else{if(aj==1){if(al>ap){aq.push(ak.slice(0,ap-an),ai[am+1])}else{aq.push(ak,ai[am+1])}}}an=al}}function ad(aj){this.lines=aj;this.parent=null;for(var ak=0,al=aj.length,ai=0;ak<al;++ak){aj[ak].parent=this;ai+=aj[ak].height}this.height=ai}ad.prototype={chunkSize:function(){return this.lines.length},remove:function(ai,ao,am){for(var al=ai,an=ai+ao;al<an;++al){var aj=this.lines[al];this.height-=aj.height;aj.cleanUp();if(aj.handlers){for(var ak=0;ak<aj.handlers.length;++ak){am.push(aj.handlers[ak])}}}this.lines.splice(ai,ao)},collapse:function(ai){ai.splice.apply(ai,[ai.length,0].concat(this.lines))},insertHeight:function(aj,ak,ai){this.height+=ai;this.lines.splice.apply(this.lines,[aj,0].concat(ak));for(var al=0,am=ak.length;al<am;++al){ak[al].parent=this}},iterN:function(ai,al,ak){for(var aj=ai+al;ai<aj;++ai){if(ak(this.lines[ai])){return true}}}};function j(al){this.children=al;var ak=0,ai=0;for(var aj=0,an=al.length;aj<an;++aj){var am=al[aj];ak+=am.chunkSize();ai+=am.height;am.parent=this}this.size=ak;this.height=ai;this.parent=null}j.prototype={chunkSize:function(){return this.size},remove:function(ak,aj,an){this.size-=aj;for(var al=0;al<this.children.length;++al){var ai=this.children[al],ao=ai.chunkSize();if(ak<ao){var am=Math.min(aj,ao-ak),ap=ai.height;ai.remove(ak,am,an);this.height-=ap-ai.height;if(ao==am){this.children.splice(al--,1);ai.parent=null}if((aj-=am)==0){break}ak=0}else{ak-=ao}}if(this.size-aj<25){var aq=[];this.collapse(aq);this.children=[new ad(aq)];this.children[0].parent=this}},collapse:function(ai){for(var aj=0,ak=this.children.length;aj<ak;++aj){this.children[aj].collapse(ai)}},insert:function(aj,ak){var ai=0;for(var al=0,am=ak.length;al<am;++al){ai+=ak[al].height}this.insertHeight(aj,ak,ai)},insertHeight:function(aj,aq,ap){this.size+=aq.length;this.height+=ap;for(var ak=0,am=this.children.length;ak<am;++ak){var ai=this.children[ak],an=ai.chunkSize();if(aj<=an){ai.insertHeight(aj,aq,ap);if(ai.lines&&ai.lines.length>50){while(ai.lines.length>50){var al=ai.lines.splice(ai.lines.length-25,25);var ao=new ad(al);ai.height-=ao.height;this.children.splice(ak+1,0,ao);ao.parent=this}this.maybeSpill()}break}aj-=an}},maybeSpill:function(){if(this.children.length<=10){return}var al=this;do{var aj=al.children.splice(al.children.length-5,5);var ak=new j(aj);if(!al.parent){var am=new j(al.children);am.parent=al;al.children=[am,ak];al=am}else{al.size-=ak.size;al.height-=ak.height;var ai=q(al.parent.children,al);al.parent.children.splice(ai+1,0,ak)}ak.parent=al.parent}while(al.children.length>10);al.parent.maybeSpill()},iter:function(ak,aj,ai){this.iterN(ak,aj-ak,ai)},iterN:function(ai,ap,ao){for(var aj=0,am=this.children.length;aj<am;++aj){var an=this.children[aj],al=an.chunkSize();if(ai<al){var ak=Math.min(ap,al-ai);if(an.iterN(ai,ak,ao)){return true}if((ap-=ak)==0){break}ai=0}else{ai-=al}}}};function B(ai,am){while(!ai.lines){for(var aj=0;;++aj){var al=ai.children[aj],ak=al.chunkSize();if(am<ak){ai=al;break}am-=ak}}return ai.lines[am]}function W(ai){if(ai.parent==null){return null}var an=ai.parent,am=q(an.lines,ai);for(var aj=an.parent;aj;an=aj,aj=aj.parent){for(var ak=0,al=aj.children.length;;++ak){if(aj.children[ak]==an){break}am+=aj.children[ak].chunkSize()}}return am}function V(ao,am){var ak=0;outer:do{for(var al=0,an=ao.children.length;al<an;++al){var aj=ao.children[al],ai=aj.height;if(am<ai){ao=aj;continue outer}am-=ai;ak+=aj.chunkSize()}return ak}while(!ao.lines);for(var al=0,an=ao.lines.length;al<an;++al){var aq=ao.lines[al],ap=aq.height;if(am<ap){break}am-=ap}return ak+al}function h(ai,ao){var ak=0;outer:do{for(var aj=0,am=ai.children.length;aj<am;++aj){var an=ai.children[aj],al=an.chunkSize();if(ao<al){ai=an;continue outer}ao-=al;ak+=an.height}return ak}while(!ai.lines);for(var aj=0;aj<ao;++aj){ak+=ai.lines[aj].height}return ak}function l(){this.time=0;this.done=[];this.undone=[]}l.prototype={addChange:function(ai,ao,aj){this.undone.length=0;var ak=+new Date,aq=this.done[this.done.length-1],ar=aq&&aq[aq.length-1];var am=ak-this.time;if(am>400||!ar){this.done.push([{start:ai,added:ao,old:aj}])}else{if(ar.start>ai+ao||ar.start+ar.added<ai-ar.added+ar.old.length){aq.push({start:ai,added:ao,old:aj})}else{var ap=0;if(ai<ar.start){for(var al=ar.start-ai-1;al>=0;--al){ar.old.unshift(aj[al])}ar.added+=ar.start-ai;ar.start=ai}else{if(ar.start<ai){ap=ai-ar.start;ao+=ap}}for(var al=ar.added-ap,an=aj.length;al<an;++al){ar.old.push(aj[al])}if(ar.added<ao){ar.added=ao}}}this.time=ak}};function H(){w(this)}function M(ai){if(!ai.stop){ai.stop=H}return ai}function R(ai){if(ai.preventDefault){ai.preventDefault()}else{ai.returnValue=false}}function C(ai){if(ai.stopPropagation){ai.stopPropagation()}else{ai.cancelBubble=true}}function w(ai){R(ai);C(ai)}u.e_stop=w;u.e_preventDefault=R;u.e_stopPropagation=C;function k(ai){return ai.target||ai.srcElement}function x(ai){if(ai.which){return ai.which}else{if(ai.button&1){return 1}else{if(ai.button&2){return 3}else{if(ai.button&4){return 2}}}}}function y(aj,ak){var ai=aj.override&&aj.override.hasOwnProperty(ak);return ai?aj.override[ak]:aj[ak]}function r(al,ak,aj,ai){if(typeof al.addEventListener=="function"){al.addEventListener(ak,aj,false);if(ai){return function(){al.removeEventListener(ak,aj,false)}}}else{var am=function(an){aj(an||window.event)};al.attachEvent("on"+ak,am);if(ai){return function(){al.detachEvent("on"+ak,am)}}}}u.connect=r;function z(){this.id=null}z.prototype={set:function(ai,aj){clearTimeout(this.id);this.id=setTimeout(aj,ai)}};var D=function(){if(/MSIE [1-8]\b/.test(navigator.userAgent)){return false}var ai=document.createElement("div");return"draggable" in ai}();var L=/gecko\/\d{7}/i.test(navigator.userAgent);var G=/MSIE \d/.test(navigator.userAgent);var g=/WebKit\//.test(navigator.userAgent);var e="\n";(function(){var ai=document.createElement("textarea");ai.value="foo\nbar";if(ai.value.indexOf("\r")>-1){e="\r\n"}}());function o(aj,ai,al){if(ai==null){ai=aj.search(/[^\s\u00a0]/);if(ai==-1){ai=aj.length}}for(var ak=0,am=0;ak<ai;++ak){if(aj.charAt(ak)=="\t"){am+=al-(am%al)}else{++am}}return am}function t(ai){if(ai.currentStyle){return ai.currentStyle}return window.getComputedStyle(ai,null)}function ag(aj,ar){var al=aj.ownerDocument.body;var aq=0,ap=0,an=false;for(var ai=aj;ai;ai=ai.offsetParent){var ao=ai.offsetLeft,ak=ai.offsetTop;if(ai==al){aq+=Math.abs(ao);ap+=Math.abs(ak)}else{aq+=ao,ap+=ak}if(ar&&t(ai).position=="fixed"){an=true}}var am=ar&&!an?null:al;for(var ai=aj.parentNode;ai!=am;ai=ai.parentNode){if(ai.scrollLeft!=null){aq-=ai.scrollLeft;ap-=ai.scrollTop}}return{left:aq,top:ap}}if(document.documentElement.getBoundingClientRect!=null){ag=function(al,ai){try{var ak=al.getBoundingClientRect();ak={top:ak.top,left:ak.left}}catch(am){ak={top:0,left:0}}if(!ai){if(window.pageYOffset==null){var aj=document.documentElement||document.body.parentNode;if(aj.scrollTop==null){aj=document.body}ak.top+=aj.scrollTop;ak.left+=aj.scrollLeft}else{ak.top+=window.pageYOffset;ak.left+=window.pageXOffset}}return ak}}function F(ai){return ai.textContent||ai.innerText||ai.nodeValue||""}function c(ai){if(s){ai.selectionStart=0;ai.selectionEnd=ai.value.length}else{ai.select()}}function aa(aj,ai){return aj.line==ai.line&&aj.ch==ai.ch}function X(aj,ai){return aj.line<ai.line||(aj.line==ai.line&&aj.ch<ai.ch)}function Y(ai){return{line:ai.line,ch:ai.ch}}var ae=document.createElement("pre");function N(ai){ae.textContent=ai;return ae.innerHTML}if(N("a")=="\na"){N=function(ai){ae.textContent=ai;return ae.innerHTML.slice(1)}}else{if(N("\t")!="\t"){N=function(ai){ae.innerHTML="";ae.appendChild(document.createTextNode(ai));return ae.innerHTML}}}u.htmlEscape=N;function U(al,ak){if(!ak){return 0}if(!al){return ak.length}for(var aj=al.length,ai=ak.length;aj>=0&&ai>=0;--aj,--ai){if(al.charAt(aj)!=ak.charAt(ai)){break}}return ai+1}function q(al,ai){if(al.indexOf){return al.indexOf(ai)}for(var aj=0,ak=al.length;aj<ak;++aj){if(al[aj]==ai){return aj}}return -1}function ac(ai){return/\w/.test(ai)||ai.toUpperCase()!=ai.toLowerCase()}var A="\n\nb".split(/\n/).length!=3?function(ak){var al=0,aj,ai=[];while((aj=ak.indexOf("\n",al))>-1){ai.push(ak.slice(al,ak.charAt(aj-1)=="\r"?aj-1:aj));al=aj+1}ai.push(ak.slice(al));return ai}:function(ai){return ai.split(/\r?\n/)};u.splitLines=A;var ab=window.getSelection?function(aj){try{return aj.selectionStart!=aj.selectionEnd}catch(ai){return false}}:function(ak){try{var ai=ak.ownerDocument.selection.createRange()}catch(aj){}if(!ai||ai.parentElement()!=ak){return false}return ai.compareEndPoints("StartToEnd",ai)!=0};u.defineMode("null",function(){return{token:function(ai){ai.skipToEnd()}}});u.defineMIME("text/plain","null");var P={3:"Enter",8:"Backspace",9:"Tab",13:"Enter",16:"Shift",17:"Ctrl",18:"Alt",19:"Pause",20:"CapsLock",27:"Esc",32:"Space",33:"PageUp",34:"PageDown",35:"End",36:"Home",37:"Left",38:"Up",39:"Right",40:"Down",44:"PrintScrn",45:"Insert",46:"Delete",59:";",91:"Mod",92:"Mod",93:"Mod",186:";",187:"=",188:",",189:"-",190:".",191:"/",192:"`",219:"[",220:"\\",221:"]",222:"'",63276:"PageUp",63277:"PageDown",63275:"End",63273:"Home",63234:"Left",63232:"Up",63235:"Right",63233:"Down",63302:"Insert",63272:"Delete"};u.keyNames=P;(function(){for(var ai=0;ai<10;ai++){P[ai+48]=String(ai)}for(var ai=65;ai<=90;ai++){P[ai]=String.fromCharCode(ai)}for(var ai=1;ai<=12;ai++){P[ai+111]=P[ai+63235]="F"+ai}})();return u})();CodeMirror.defineMode("clojure",function(y,o){var s="builtin",v="comment",m="string",c="tag",g="atom",r="number",k="bracket",l="keyword";var t=2,j=1;function x(C){var A={},B=C.split(" ");for(var z=0;z<B.length;++z){A[B[z]]=true}return A}var d=x("true false nil");var h=x("defn defn- def def- defonce defmulti defmethod defmacro defstruct deftype defprotocol defrecord deftest slice defalias defhinted defmacro- defn-memo defnk defnk defonce- defunbound defunbound- defvar defvar- let letfn do case cond condp for loop recur when when-not when-let when-first if if-let if-not . .. -> ->> doto and or dosync doseq dotimes dorun doall load import unimport ns in-ns refer try catch finally throw with-open with-local-vars binding gen-class gen-and-load-class gen-and-save-class handler-case handle* *1 *2 *3 *agent* *allow-unresolved-vars* *assert *clojure-version* *command-line-args* *compile-files* *compile-path* *e *err* *file* *flush-on-newline* *in* *macro-meta* *math-context* *ns* *out* *print-dup* *print-length* *print-level* *print-meta* *print-readably* *read-eval* *source-path* *use-context-classloader* *warn-on-reflection* + - / < <= = == > >= accessor aclone agent agent-errors aget alength alias all-ns alter alter-meta! alter-var-root amap ancestors and apply areduce array-map aset aset-boolean aset-byte aset-char aset-double aset-float aset-int aset-long aset-short assert assoc assoc! assoc-in associative? atom await await-for await1 bases bean bigdec bigint binding bit-and bit-and-not bit-clear bit-flip bit-not bit-or bit-set bit-shift-left bit-shift-right bit-test bit-xor boolean boolean-array booleans bound-fn bound-fn* butlast byte byte-array bytes case cast char char-array char-escape-string char-name-string char? chars chunk chunk-append chunk-buffer chunk-cons chunk-first chunk-next chunk-rest chunked-seq? class class? clear-agent-errors clojure-version coll? comment commute comp comparator compare compare-and-set! compile complement concat cond condp conj conj! cons constantly construct-proxy contains? count counted? create-ns create-struct cycle dec decimal? declare definline defmacro defmethod defmulti defn defn- defonce defstruct delay delay? deliver deref derive descendants destructure disj disj! dissoc dissoc! distinct distinct? doall doc dorun doseq dosync dotimes doto double double-array doubles drop drop-last drop-while empty empty? ensure enumeration-seq eval even? every? extend extend-protocol extend-type extends? extenders false? ffirst file-seq filter find find-doc find-ns find-var first float float-array float? floats flush fn fn? fnext for force format future future-call future-cancel future-cancelled? future-done? future? gen-class gen-interface gensym get get-in get-method get-proxy-class get-thread-bindings get-validator hash hash-map hash-set identical? identity if-let if-not ifn? import in-ns inc init-proxy instance? int int-array integer? interleave intern interpose into into-array ints io! isa? iterate iterator-seq juxt key keys keyword keyword? last lazy-cat lazy-seq let letfn line-seq list list* list? load load-file load-reader load-string loaded-libs locking long long-array longs loop macroexpand macroexpand-1 make-array make-hierarchy map map? mapcat max max-key memfn memoize merge merge-with meta method-sig methods min min-key mod name namespace neg? newline next nfirst nil? nnext not not-any? not-empty not-every? not= ns ns-aliases ns-imports ns-interns ns-map ns-name ns-publics ns-refers ns-resolve ns-unalias ns-unmap nth nthnext num number? odd? or parents partial partition pcalls peek persistent! pmap pop pop! pop-thread-bindings pos? pr pr-str prefer-method prefers primitives-classnames print print-ctor print-doc print-dup print-method print-namespace-doc print-simple print-special-doc print-str printf println println-str prn prn-str promise proxy proxy-call-with-super proxy-mappings proxy-name proxy-super push-thread-bindings pvalues quot rand rand-int range ratio? rational? rationalize re-find re-groups re-matcher re-matches re-pattern re-seq read read-line read-string reify reduce ref ref-history-count ref-max-history ref-min-history ref-set refer refer-clojure release-pending-sends rem remove remove-method remove-ns repeat repeatedly replace replicate require reset! reset-meta! resolve rest resultset-seq reverse reversible? rseq rsubseq satisfies? second select-keys send send-off seq seq? seque sequence sequential? set set-validator! set? short short-array shorts shutdown-agents slurp some sort sort-by sorted-map sorted-map-by sorted-set sorted-set-by sorted? special-form-anchor special-symbol? split-at split-with str stream? string? struct struct-map subs subseq subvec supers swap! symbol symbol? sync syntax-symbol-anchor take take-last take-nth take-while test the-ns time to-array to-array-2d trampoline transient tree-seq true? type unchecked-add unchecked-dec unchecked-divide unchecked-inc unchecked-multiply unchecked-negate unchecked-remainder unchecked-subtract underive unquote unquote-splicing update-in update-proxy use val vals var-get var-set var? vary-meta vec vector vector? when when-first when-let when-not while with-bindings with-bindings* with-in-str with-loading-context with-local-vars with-meta with-open with-out-str with-precision xml-seq");var u=x("ns fn def defn defmethod bound-fn if if-not case condp when while when-not when-first do future comment doto locking proxy with-open with-precision reify deftype defrecord defprotocol extend extend-protocol extend-type try catchlet letfn binding loop for doseq dotimes when-let if-letdefstruct struct-map assoctesting deftesthandler-case handle dotrace deftrace");var f={digit:/\d/,digit_or_colon:/[\d:]/,hex:/[0-9a-fA-F]/,sign:/[+-]/,exponent:/[eE]/,keyword_char:/[^\s\(\[\;\)\]]/,basic:/[\w\$_\-]/,lang_keyword:/[\w*+!\-_?:\/]/};function e(z,A,B){this.indent=z;this.type=A;this.prev=B}function w(B,z,A){B.indentStack=new e(z,A,B.indentStack)}function q(z){z.indentStack=z.indentStack.prev}function p(z,A){if(z==="0"&&"x"==A.peek().toLowerCase()){A.eat("x");A.eatWhile(f.hex);return true}if(z=="+"||z=="-"){A.eat(f.sign);z=A.next()}if(f.digit.test(z)){A.eat(z);A.eatWhile(f.digit);if("."==A.peek()){A.eat(".");A.eatWhile(f.digit)}if("e"==A.peek().toLowerCase()){A.eat(f.exponent);A.eat(f.sign);A.eatWhile(f.digit)}return true}return false}return{startState:function(){return{indentStack:null,indentation:0,mode:false,}},token:function(E,C){if(C.indentStack==null&&E.sol()){C.indentation=E.indentation()}if(E.eatSpace()){return null}var z=null;switch(C.mode){case"string":var B,D=false;while((B=E.next())!=null){if(B=='"'&&!D){C.mode=false;break}D=!D&&B=="\\"}z=m;break;default:var A=E.next();if(A=='"'){C.mode="string";z=m}else{if(A=="'"&&!(f.digit_or_colon.test(E.peek()))){z=g}else{if(A==";"){E.skipToEnd();z=v}else{if(p(A,E)){z=r}else{if(A=="("||A=="["){var G="";var F=E.column();while((letter=E.eat(f.keyword_char))!=null){G+=letter}if(G.length>0&&u.propertyIsEnumerable(G)){w(C,F+t,A)}else{E.eatSpace();if(E.eol()||E.peek()==";"){w(C,F+1,A)}else{w(C,F+E.current().length,A)}}E.backUp(E.current().length-1);z=k}else{if(A==")"||A=="]"){z=k;if(C.indentStack!=null&&C.indentStack.type==(A==")"?"(":"[")){q(C)}}else{if(A==":"){E.eatWhile(f.lang_keyword);return c}else{E.eatWhile(f.basic);if(h&&h.propertyIsEnumerable(E.current())){z=s}else{if(d&&d.propertyIsEnumerable(E.current())){z=g}else{z=null}}}}}}}}}}return z},indent:function(A,z){if(A.indentStack==null){return A.indentation}return A.indentStack.indent}}});CodeMirror.defineMIME("text/x-clojure","clojure");CodeMirror.defineMode("xml",function(A,o){var t=A.indentUnit;var z=o.htmlMode?{autoSelfClosers:{br:true,img:true,hr:true,link:true,input:true,meta:true,col:true,frame:true,base:true,area:true},doNotIndent:{pre:true},allowUnquoted:true}:{autoSelfClosers:{},doNotIndent:{},allowUnquoted:false};var c=o.alignCDATA;var h,j;function s(G,F){function D(I){F.tokenize=I;return I(G,F)}var E=G.next();if(E=="<"){if(G.eat("!")){if(G.eat("[")){if(G.match("CDATA[")){return D(y("atom","]]>"))}else{return null}}else{if(G.match("--")){return D(y("comment","-->"))}else{if(G.match("DOCTYPE",true,true)){G.eatWhile(/[\w\._\-]/);return D(B(1))}else{return null}}}}else{if(G.eat("?")){G.eatWhile(/[\w\._\-]/);F.tokenize=y("meta","?>");return"meta"}else{j=G.eat("/")?"closeTag":"openTag";G.eatSpace();h="";var H;while((H=G.eat(/[^\s\u00a0=<>\"\'\/?]/))){h+=H}F.tokenize=r;return"tag"}}}else{if(E=="&"){var C;if(G.eat("#")){if(G.eat("x")){C=G.eatWhile(/[a-fA-F\d]/)&&G.eat(";")}else{C=G.eatWhile(/[\d]/)&&G.eat(";")}}else{C=G.eatWhile(/[\w\.\-:]/)&&G.eat(";")}return C?"atom":"error"}else{G.eatWhile(/[^&<]/);return null}}}function r(E,D){var C=E.next();if(C==">"||(C=="/"&&E.eat(">"))){D.tokenize=s;j=C==">"?"endTag":"selfcloseTag";return"tag"}else{if(C=="="){j="equals";return null}else{if(/[\'\"]/.test(C)){D.tokenize=m(C);return D.tokenize(E,D)}else{E.eatWhile(/[^\s\u00a0=<>\"\'\/?]/);return"word"}}}}function m(C){return function(E,D){while(!E.eol()){if(E.next()==C){D.tokenize=r;break}}return"string"}}function y(D,C){return function(F,E){while(!F.eol()){if(F.match(C)){E.tokenize=s;break}F.next()}return D}}function B(C){return function(F,E){var D;while((D=F.next())!=null){if(D=="<"){E.tokenize=B(C+1);return E.tokenize(F,E)}else{if(D==">"){if(C==1){E.tokenize=s;break}else{E.tokenize=B(C-1);return E.tokenize(F,E)}}}}return"meta"}}var p,k;function d(){for(var C=arguments.length-1;C>=0;C--){p.cc.push(arguments[C])}}function g(){d.apply(null,arguments);return true}function l(C,E){var D=z.doNotIndent.hasOwnProperty(C)||(p.context&&p.context.noIndent);p.context={prev:p.context,tagName:C,indent:p.indented,startOfLine:E,noIndent:D}}function w(){if(p.context){p.context=p.context.prev}}function f(C){if(C=="openTag"){p.tagName=h;return g(q,e(p.startOfLine))}else{if(C=="closeTag"){var D=false;if(p.context){D=p.context.tagName!=h}else{D=true}if(D){k="error"}return g(u(D))}}return g()}function e(C){return function(D){if(D=="selfcloseTag"||(D=="endTag"&&z.autoSelfClosers.hasOwnProperty(p.tagName.toLowerCase()))){return g()}if(D=="endTag"){l(p.tagName,C);return g()}return g()}}function u(C){return function(D){if(C){k="error"}if(D=="endTag"){w();return g()}k="error";return g(arguments.callee)}}function q(C){if(C=="word"){k="attribute";return g(q)}if(C=="equals"){return g(x,q)}if(C=="string"){k="error";return g(q)}return d()}function x(C){if(C=="word"&&z.allowUnquoted){k="string";return g()}if(C=="string"){return g(v)}return d()}function v(C){if(C=="string"){return g(v)}else{return d()}}return{startState:function(){return{tokenize:s,cc:[],indented:0,startOfLine:true,tagName:null,context:null}},token:function(F,E){if(F.sol()){E.startOfLine=true;E.indented=F.indentation()}if(F.eatSpace()){return null}k=j=h=null;var D=E.tokenize(F,E);E.type=j;if((D||j)&&D!="comment"){p=E;while(true){var C=E.cc.pop()||f;if(C(j||D)){break}}}E.startOfLine=false;return k||D},indent:function(F,C,E){var D=F.context;if((F.tokenize!=r&&F.tokenize!=s)||D&&D.noIndent){return E?E.match(/^(\s*)/)[0].length:0}if(c&&/<!\[CDATA\[/.test(C)){return 0}if(D&&/^<\//.test(C)){D=D.prev}while(D&&!D.startOfLine){D=D.prev}if(D){return D.indent+t}else{return 0}},compareStates:function(F,D){if(F.indented!=D.indented||F.tokenize!=D.tokenize){return false}for(var E=F.context,C=D.context;;E=E.prev,C=C.prev){if(!E||!C){return E==C}if(E.tagName!=C.tagName){return false}}},electricChars:"/"}});CodeMirror.defineMIME("application/xml","xml");CodeMirror.defineMIME("text/html",{name:"xml",htmlMode:true});CodeMirror.defineMode("javascript",function(M,Q){var z=M.indentUnit;var U=Q.json;var d=function(){function aa(ad){return{type:ad,style:"keyword"}}var X=aa("keyword a"),ac=aa("keyword b"),ab=aa("keyword c");var Y=aa("operator"),Z={type:"atom",style:"atom"};return{"if":X,"while":X,"with":X,"else":ac,"do":ac,"try":ac,"finally":ac,"return":ab,"break":ab,"continue":ab,"new":ab,"delete":ab,"throw":ab,"var":aa("var"),"const":aa("var"),let:aa("var"),"function":aa("function"),"catch":aa("catch"),"for":aa("for"),"switch":aa("switch"),"case":aa("case"),"default":aa("default"),"in":Y,"typeof":Y,"instanceof":Y,"true":Z,"false":Z,"null":Z,"undefined":Z,"NaN":Z,"Infinity":Z}}();var R=/[+\-*&%=<>!?|]/;function V(Z,Y,X){Y.tokenize=X;return X(Z,Y)}function k(aa,X){var Z=false,Y;while((Y=aa.next())!=null){if(Y==X&&!Z){return false}Z=!Z&&Y=="\\"}return Z}var W,t;function F(Z,Y,X){W=Z;t=X;return Y}function p(ab,Z){var X=ab.next();if(X=='"'||X=="'"){return V(ab,Z,D(X))}else{if(/[\[\]{}\(\),;\:\.]/.test(X)){return F(X)}else{if(X=="0"&&ab.eat(/x/i)){ab.eatWhile(/[\da-f]/i);return F("number","number")}else{if(/\d/.test(X)){ab.match(/^\d*(?:\.\d*)?(?:[eE][+\-]?\d+)?/);return F("number","number")}else{if(X=="/"){if(ab.eat("*")){return V(ab,Z,h)}else{if(ab.eat("/")){ab.skipToEnd();return F("comment","comment")}else{if(Z.reAllowed){k(ab,"/");ab.eatWhile(/[gimy]/);return F("regexp","string-2")}else{ab.eatWhile(R);return F("operator",null,ab.current())}}}}else{if(X=="#"){ab.skipToEnd();return F("error","error")}else{if(R.test(X)){ab.eatWhile(R);return F("operator",null,ab.current())}else{ab.eatWhile(/[\w\$_]/);var aa=ab.current(),Y=d.propertyIsEnumerable(aa)&&d[aa];return(Y&&Z.kwAllowed)?F(Y.type,Y.style,aa):F("variable","variable",aa)}}}}}}}}function D(X){return function(Z,Y){if(!k(Z,X)){Y.tokenize=p}return F("string","string")}}function h(aa,Z){var X=false,Y;while(Y=aa.next()){if(Y=="/"&&X){Z.tokenize=p;break}X=(Y=="*")}return F("comment","comment")}var o={atom:true,number:true,variable:true,string:true,regexp:true};function x(ac,Y,X,ab,Z,aa){this.indented=ac;this.column=Y;this.type=X;this.prev=Z;this.info=aa;if(ab!=null){this.align=ab}}function A(Z,Y){for(var X=Z.localVars;X;X=X.next){if(X.name==Y){return true}}}function I(ab,Y,X,aa,ac){var ad=ab.cc;y.state=ab;y.stream=ac;y.marked=null,y.cc=ad;if(!ab.lexical.hasOwnProperty("align")){ab.lexical.align=true}while(true){var Z=ad.length?ad.pop():U?B:C;if(Z(X,aa)){while(ad.length&&ad[ad.length-1].lex){ad.pop()()}if(y.marked){return y.marked}if(X=="variable"&&A(ab,aa)){return"variable-2"}return Y}}}var y={state:null,column:null,marked:null,cc:null};function c(){for(var X=arguments.length-1;X>=0;X--){y.cc.push(arguments[X])}}function K(){c.apply(null,arguments);return true}function q(Y){var Z=y.state;if(Z.context){y.marked="def";for(var X=Z.localVars;X;X=X.next){if(X.name==Y){return}}Z.localVars={name:Y,next:Z.localVars}}}var H={name:"this",next:{name:"arguments"}};function w(){if(!y.state.context){y.state.localVars=H}y.state.context={prev:y.state.context,vars:y.state.localVars}}function v(){y.state.localVars=y.state.context.vars;y.state.context=y.state.context.prev}function m(Y,Z){var X=function(){var aa=y.state;aa.lexical=new x(aa.indented,y.stream.column(),Y,null,aa.lexical,Z)};X.lex=true;return X}function J(){var X=y.state;if(X.lexical.prev){if(X.lexical.type==")"){X.indented=X.lexical.indented}X.lexical=X.lexical.prev}}J.lex=true;function e(Y){return function X(Z){if(Z==Y){return K()}else{if(Y==";"){return c()}else{return K(arguments.callee)}}}}function C(X){if(X=="var"){return K(m("vardef"),N,e(";"),J)}if(X=="keyword a"){return K(m("form"),B,C,J)}if(X=="keyword b"){return K(m("form"),C,J)}if(X=="{"){return K(m("}"),r,J)}if(X==";"){return K()}if(X=="function"){return K(l)}if(X=="for"){return K(m("form"),e("("),m(")"),j,e(")"),J,C,J)}if(X=="variable"){return K(m("stat"),G)}if(X=="switch"){return K(m("form"),B,m("}","switch"),e("{"),r,J,J)}if(X=="case"){return K(B,e(":"))}if(X=="default"){return K(e(":"))}if(X=="catch"){return K(m("form"),w,e("("),u,e(")"),C,J,v)}return c(m("stat"),B,e(";"),J)}function B(X){if(o.hasOwnProperty(X)){return K(P)}if(X=="function"){return K(l)}if(X=="keyword c"){return K(E)}if(X=="("){return K(m(")"),E,e(")"),J,P)}if(X=="operator"){return K(B)}if(X=="["){return K(m("]"),S(B,"]"),J,P)}if(X=="{"){return K(m("}"),S(s,"}"),J,P)}return K()}function E(X){if(X.match(/[;\}\)\],]/)){return c()}return c(B)}function P(X,Y){if(X=="operator"&&/\+\+|--/.test(Y)){return K(P)}if(X=="operator"){return K(B)}if(X==";"){return}if(X=="("){return K(m(")"),S(B,")"),J,P)}if(X=="."){return K(T,P)}if(X=="["){return K(m("]"),B,e("]"),J,P)}}function G(X){if(X==":"){return K(J,C)}return c(P,e(";"),J)}function T(X){if(X=="variable"){y.marked="property";return K()}}function s(X){if(X=="variable"){y.marked="property"}if(o.hasOwnProperty(X)){return K(e(":"),B)}}function S(Z,X){function Y(ab){if(ab==","){return K(Z,Y)}if(ab==X){return K()}return K(e(X))}return function aa(ab){if(ab==X){return K()}else{return c(Z,Y)}}}function r(X){if(X=="}"){return K()}return c(C,r)}function N(X,Y){if(X=="variable"){q(Y);return K(L)}return K()}function L(X,Y){if(Y=="="){return K(B,L)}if(X==","){return K(N)}}function j(X){if(X=="var"){return K(N,g)}if(X==";"){return c(g)}if(X=="variable"){return K(O)}return c(g)}function O(X,Y){if(Y=="in"){return K(B)}return K(P,g)}function g(X,Y){if(X==";"){return K(f)}if(Y=="in"){return K(B)}return K(B,e(";"),f)}function f(X){if(X!=")"){K(B)}}function l(X,Y){if(X=="variable"){q(Y);return K(l)}if(X=="("){return K(m(")"),w,S(u,")"),J,C,v)}}function u(X,Y){if(X=="variable"){q(Y);return K()}}return{startState:function(X){return{tokenize:p,reAllowed:true,kwAllowed:true,cc:[],lexical:new x((X||0)-z,0,"block",false),localVars:null,context:null,indented:0}},token:function(Z,Y){if(Z.sol()){if(!Y.lexical.hasOwnProperty("align")){Y.lexical.align=false}Y.indented=Z.indentation()}if(Z.eatSpace()){return null}var X=Y.tokenize(Z,Y);if(W=="comment"){return X}Y.reAllowed=W=="operator"||W=="keyword c"||W.match(/^[\[{}\(,;:]$/);Y.kwAllowed=W!=".";return I(Y,X,W,t,Z)},indent:function(ac,X){if(ac.tokenize!=p){return 0}var ab=X&&X.charAt(0),Z=ac.lexical,aa=Z.type,Y=ab==aa;if(aa=="vardef"){return Z.indented+4}else{if(aa=="form"&&ab=="{"){return Z.indented}else{if(aa=="stat"||aa=="form"){return Z.indented+z}else{if(Z.info=="switch"&&!Y){return Z.indented+(/^(?:case|default)\b/.test(X)?z:2*z)}else{if(Z.align){return Z.column+(Y?0:1)}else{return Z.indented+(Y?0:z)}}}}}},electricChars:":{}"}});CodeMirror.defineMIME("text/javascript","javascript");CodeMirror.defineMIME("application/json",{name:"javascript",json:true});CodeMirror.defineMode("clike",function(e,g){var j=e.indentUnit,h=g.keywords||{},c=g.blockKeywords||{},k=g.atoms||{},t=g.hooks||{},l=g.multiLineStrings;var d=/[+\-*&%=<>!?|\/]/;var q;function f(y,w){var v=y.next();if(t[v]){var u=t[v](y,w);if(u!==false){return u}}if(v=='"'||v=="'"){w.tokenize=s(v);return w.tokenize(y,w)}if(/[\[\]{}\(\),;\:\.]/.test(v)){q=v;return null}if(/\d/.test(v)){y.eatWhile(/[\w\.]/);return"number"}if(v=="/"){if(y.eat("*")){w.tokenize=o;return o(y,w)}if(y.eat("/")){y.skipToEnd();return"comment"}}if(d.test(v)){y.eatWhile(d);return"operator"}y.eatWhile(/[\w\$_]/);var x=y.current();if(h.propertyIsEnumerable(x)){if(c.propertyIsEnumerable(x)){q="newstatement"}return"keyword"}if(k.propertyIsEnumerable(x)){return"atom"}return"word"}function s(u){return function(z,x){var y=false,w,v=false;while((w=z.next())!=null){if(w==u&&!y){v=true;break}y=!y&&w=="\\"}if(v||!(y||l)){x.tokenize=f}return"string"}}function o(x,w){var u=false,v;while(v=x.next()){if(v=="/"&&u){w.tokenize=f;break}u=(v=="*")}return"comment"}function r(y,v,u,x,w){this.indented=y;this.column=v;this.type=u;this.align=x;this.prev=w}function m(w,u,v){return w.context=new r(w.indented,u,v,null,w.context)}function p(v){var u=v.context.type;if(u==")"||u=="]"||u=="}"){v.indented=v.context.indented}return v.context=v.context.prev}return{startState:function(u){return{tokenize:null,context:new r((u||0)-j,0,"top",false),indented:0,startOfLine:true}},token:function(x,w){var u=w.context;if(x.sol()){if(u.align==null){u.align=false}w.indented=x.indentation();w.startOfLine=true}if(x.eatSpace()){return null}q=null;var v=(w.tokenize||f)(x,w);if(v=="comment"||v=="meta"){return v}if(u.align==null){u.align=true}if((q==";"||q==":")&&u.type=="statement"){p(w)}else{if(q=="{"){m(w,x.column(),"}")}else{if(q=="["){m(w,x.column(),"]")}else{if(q=="("){m(w,x.column(),")")}else{if(q=="}"){while(u.type=="statement"){u=p(w)}if(u.type=="}"){u=p(w)}while(u.type=="statement"){u=p(w)}}else{if(q==u.type){p(w)}else{if(u.type=="}"||u.type=="top"||(u.type=="statement"&&q=="newstatement")){m(w,x.column(),"statement")}}}}}}}w.startOfLine=false;return v},indent:function(y,v){if(y.tokenize!=f&&y.tokenize!=null){return 0}var u=y.context,x=v&&v.charAt(0);if(u.type=="statement"&&x=="}"){u=u.prev}var w=x==u.type;if(u.type=="statement"){return u.indented+(x=="{"?0:j)}else{if(u.align){return u.column+(w?0:1)}else{return u.indented+(w?0:j)}}},electricChars:"{}"}});(function(){function e(k){var h={},j=k.split(" ");for(var g=0;g<j.length;++g){h[j[g]]=true}return h}var c="auto if break int case long char register continue return default short do sizeof double static else struct entry switch extern typedef float union for unsigned goto while enum void const signed volatile";function f(h,g){if(!g.startOfLine){return false}h.skipToEnd();return"meta"}function d(j,h){var g;while((g=j.next())!=null){if(g=='"'&&!j.eat('"')){h.tokenize=null;break}}return"string"}CodeMirror.defineMIME("text/x-csrc",{name:"clike",keywords:e(c),blockKeywords:e("case do else for if switch while struct"),atoms:e("null"),hooks:{"#":f}});CodeMirror.defineMIME("text/x-c++src",{name:"clike",keywords:e(c+" asm dynamic_cast namespace reinterpret_cast try bool explicit new static_cast typeid catch operator template typename class friend private this using const_cast inline public throw virtual delete mutable protected wchar_t"),blockKeywords:e("catch class do else finally for if struct switch try while"),atoms:e("true false null"),hooks:{"#":f}});CodeMirror.defineMIME("text/x-java",{name:"clike",keywords:e("abstract assert boolean break byte case catch char class const continue default do double else enum extends final finally float for goto if implements import instanceof int interface long native new package private protected public return short static strictfp super switch synchronized this throw throws transient try void volatile while"),blockKeywords:e("catch class do else finally for if switch try while"),atoms:e("true false null"),hooks:{"@":function(h,g){h.eatWhile(/[\w\$_]/);return"meta"}}});CodeMirror.defineMIME("text/x-csharp",{name:"clike",keywords:e("abstract as base bool break byte case catch char checked class const continue decimal default delegate do double else enum event explicit extern finally fixed float for foreach goto if implicit in int interface internal is lock long namespace new object operator out override params private protected public readonly ref return sbyte sealed short sizeof stackalloc static string struct switch this throw try typeof uint ulong unchecked unsafe ushort using virtual void volatile while add alias ascending descending dynamic from get global group into join let orderby partial remove select set value var yield"),blockKeywords:e("catch class do else finally for foreach if struct switch try while"),atoms:e("true false null"),hooks:{"@":function(h,g){if(h.eat('"')){g.tokenize=d;return d(h,g)}h.eatWhile(/[\w\$_]/);return"meta"}}})}());CodeMirror.defineMode("xmlpure",function(K,p){var F="error";var d="comment";var I="comment";var D="tag";var k="attribute";var J="string";var y="atom";var u="string";var e="!instruction";var t="!cdata";var E="!comment";var j="!text";var c={"!cdata":true,"!comment":true,"!text":true,"!instruction":true};var w=K.indentUnit;function z(N,M,O){M.tokenize=O;return O(N,M)}function H(O,M,N){return function(Q,P){while(!Q.eol()){if(Q.match(M)){G(P);P.tokenize=N;break}Q.next()}return O}}function o(O,M){var N=c.hasOwnProperty(M)||(O.context&&O.context.doIndent);var P={tagName:M,prev:O.context,indent:O.context?O.context.indent+w:0,lineNumber:O.lineNumber,indented:O.indented,noIndent:N};O.context=P}function G(N){if(N.context){var M=N.context;N.context=M.prev;return M}return null}function g(M){return M.sol()||M.string.charAt(M.start-1)==" "||M.string.charAt(M.start-1)=="\t"}function B(N,M){if(N.eat("<")){if(N.eat("?")){o(M,e);M.tokenize=A;return d}else{if(N.match("!--")){o(M,E);return z(N,M,H(I,"-->",B))}else{if(N.eatSpace()||N.eol()){N.skipToEnd();return F}else{M.tokenize=r;return D}}}}N.skipToEnd();return F}function r(R,Q){var N=R.pos;if(R.match(/^[a-zA-Z_:][-a-zA-Z0-9_:.]*/)){var P=R.string.substring(N,R.pos);o(Q,P);Q.tokenize=L;return D}else{if(R.match(/^\/[a-zA-Z_:][-a-zA-Z0-9_:.]*( )*>/)){var O=R.string.substring(N+1,R.pos-1).trim();var M=G(Q);Q.tokenize=Q.context==null?B:m;if(M==null||O!=M.tagName){return F}return D}else{Q.tokenize=Q.context==null?B:m;R.eatWhile(/[^>]/);R.eat(">");return F}}R.skipToEnd();return null}function L(N,M){if(N.match(/^\/>/)){G(M);M.tokenize=M.context==null?B:m;return D}else{if(N.eat(/^>/)){M.tokenize=m;return D}else{if(g(N)&&N.match(/^[a-zA-Z_:][-a-zA-Z0-9_:.]*( )*=/)){M.tokenize=s;return k}}}M.tokenize=M.context==null?B:B;N.eatWhile(/[^>]/);N.eat(">");return F}function s(O,N){var M=O.next();if(M!='"'&&M!="'"){O.skipToEnd();N.tokenize=L;return F}N.tokParams.quote=M;N.tokenize=h;return J}function h(O,N){var M="";while(!O.eol()){M=O.next();if(M==N.tokParams.quote){N.tokenize=L;return J}else{if(M=="<"){O.skipToEnd();N.tokenize=L;return F}else{if(M=="&"){M=O.next();if(M==";"){O.skipToEnd();N.tokenize=L;return F}while(!O.eol()&&M!=";"){if(M=="<"){O.skipToEnd();N.tokenize=L;return F}M=O.next()}if(O.eol()&&M!=";"){O.skipToEnd();N.tokenize=L;return F}}}}}return J}function m(N,M){if(N.eat("<")){if(N.match("?")){o(M,e);M.tokenize=A;return d}else{if(N.match("!--")){o(M,E);return z(N,M,H(I,"-->",M.context==null?B:m))}else{if(N.match("![CDATA[")){o(M,t);return z(N,M,H(y,"]]>",M.context==null?B:m))}else{if(N.eatSpace()||N.eol()){N.skipToEnd();return F}else{M.tokenize=r;return D}}}}}else{if(N.eat("&")){N.eatWhile(/[^;]/);N.eat(";");return u}else{o(M,j);M.tokenize=x;return null}}M.tokenize=M.context==null?B:m;N.skipToEnd();return null}function x(N,M){N.eatWhile(/[^<]/);if(!N.eol()){G(M);M.tokenize=m}return y}function A(N,M){if(N.match("xml",true,true)){if(M.lineNumber>1||N.pos>5){M.tokenize=B;N.skipToEnd();return F}else{M.tokenize=v;return d}}if(g(N)||N.match("?>")){M.tokenize=B;N.skipToEnd();return F}M.tokenize=l;return d}function l(N,M){N.eatWhile(/[^?]/);if(N.eat("?")){if(N.eat(">")){G(M);M.tokenize=M.context==null?B:m}}return d}function v(N,M){M.tokenize=q;if(g(N)&&N.match(/^version( )*=( )*"([a-zA-Z0-9_.:]|\-)+"/)){return d}N.skipToEnd();return F}function q(N,M){M.tokenize=C;if(g(N)&&N.match(/^encoding( )*=( )*"[A-Za-z]([A-Za-z0-9._]|\-)*"/)){return d}return null}function C(N,M){M.tokenize=f;if(g(N)&&N.match(/^standalone( )*=( )*"(yes|no)"/)){return d}return null}function f(N,M){M.tokenize=B;if(N.match("?>")&&N.eol()){G(M);return d}N.skipToEnd();return F}return{electricChars:"/[",startState:function(){return{tokenize:B,tokParams:{},lineNumber:0,lineError:false,context:null,indented:0}},token:function(O,N){if(O.sol()){N.lineNumber++;N.lineError=false;N.indented=O.indentation()}if(O.eatSpace()){return null}var M=N.tokenize(O,N);N.lineError=(N.lineError||M=="error");return M},blankLine:function(M){M.lineNumber++;M.lineError=false},indent:function(N,M){if(N.context){if(N.context.noIndent==true){return}if(M.match(/^<\/.*/)){return N.context.indent}if(M.match(/^<!\[CDATA\[/)){return 0}return N.context.indent+w}return 0},compareStates:function(P,N){if(P.indented!=N.indented){return false}for(var O=P.context,M=N.context;;O=O.prev,M=M.prev){if(!O||!M){return O==M}if(O.tagName!=M.tagName){return false}}}}});CodeMirror.defineMIME("application/xml","purexml");CodeMirror.defineMIME("text/xml","purexml");CodeMirror.defineMode("css",function(g){var f=g.indentUnit,h;function e(l,m){h=m;return l}function k(o,m){var l=o.next();if(l=="@"){o.eatWhile(/[\w\\\-]/);return e("meta",o.current())}else{if(l=="/"&&o.eat("*")){m.tokenize=c;return c(o,m)}else{if(l=="<"&&o.eat("!")){m.tokenize=d;return d(o,m)}else{if(l=="="){e(null,"compare")}else{if((l=="~"||l=="|")&&o.eat("=")){return e(null,"compare")}else{if(l=='"'||l=="'"){m.tokenize=j(l);return m.tokenize(o,m)}else{if(l=="#"){o.eatWhile(/[\w\\\-]/);return e("atom","hash")}else{if(l=="!"){o.match(/^\s*\w*/);return e("keyword","important")}else{if(/\d/.test(l)){o.eatWhile(/[\w.%]/);return e("number","unit")}else{if(/[,.+>*\/]/.test(l)){return e(null,"select-op")}else{if(/[;{}:\[\]]/.test(l)){return e(null,l)}else{o.eatWhile(/[\w\\\-]/);return e("variable","variable")}}}}}}}}}}}}function c(p,o){var l=false,m;while((m=p.next())!=null){if(l&&m=="/"){o.tokenize=k;break}l=(m=="*")}return e("comment","comment")}function d(p,o){var m=0,l;while((l=p.next())!=null){if(m>=2&&l==">"){o.tokenize=k;break}m=(l=="-")?m+1:0}return e("comment","comment")}function j(l){return function(q,o){var p=false,m;while((m=q.next())!=null){if(m==l&&!p){break}p=!p&&m=="\\"}if(!p){o.tokenize=k}return e("string","string")}}return{startState:function(l){return{tokenize:k,baseIndent:l||0,stack:[]}},token:function(p,o){if(p.eatSpace()){return null}var m=o.tokenize(p,o);var l=o.stack[o.stack.length-1];if(h=="hash"&&l=="rule"){m="atom"}else{if(m=="variable"){if(l=="rule"){m="number"}else{if(!l||l=="@media{"){m="tag"}}}}if(l=="rule"&&/^[\{\};]$/.test(h)){o.stack.pop()}if(h=="{"){if(l=="@media"){o.stack[o.stack.length-1]="@media{"}else{o.stack.push("{")}}else{if(h=="}"){o.stack.pop()}else{if(h=="@media"){o.stack.push("@media")}else{if(l=="{"&&h!="comment"){o.stack.push("rule")}}}}return m},indent:function(m,l){var o=m.stack.length;if(/^\}/.test(l)){o-=m.stack[m.stack.length-1]=="rule"?2:1}return m.baseIndent+o*f},electricChars:"}"}});CodeMirror.defineMIME("text/css","css");(function(){function e(j){var g={},h=j.split(" ");for(var f=0;f<h.length;++f){g[h[f]]=true}return g}function c(f){return function(h,g){if(h.match(f)){g.tokenize=null}else{h.skipToEnd()}return"string"}}var d={name:"clike",keywords:e("abstract and array as break case catch cfunction class clone const continue declare default do else elseif enddeclare endfor endforeach endif endswitch endwhile extends final for foreach function global goto if implements interface instanceof namespace new or private protected public static switch throw try use var while xor returndie echo empty exit eval include include_once isset list require require_once print unset"),blockKeywords:e("catch do else elseif for foreach if switch try while"),atoms:e("true false null TRUE FALSE NULL"),multiLineStrings:true,hooks:{"$":function(g,f){g.eatWhile(/[\w\$_]/);return"variable-2"},"<":function(g,f){if(g.match(/<</)){g.eatWhile(/[\w\.]/);f.tokenize=c(g.current().slice(3));return f.tokenize(g,f)}return false},"#":function(g,f){g.skipToEnd();return"comment"}}};CodeMirror.defineMode("php",function(h,k){var m=CodeMirror.getMode(h,{name:"xml",htmlMode:true});var l=CodeMirror.getMode(h,"javascript");var j=CodeMirror.getMode(h,"css");var f=CodeMirror.getMode(h,d);function g(q,p){if(p.curMode==m){var o=m.token(q,p.curState);if(o=="meta"&&/^<\?/.test(q.current())){p.curMode=f;p.curState=p.php;p.curClose=/^\?>/;p.mode="php"}else{if(o=="tag"&&q.current()==">"&&p.curState.context){if(/^script$/i.test(p.curState.context.tagName)){p.curMode=l;p.curState=l.startState(m.indent(p.curState,""));p.curClose=/^<\/\s*script\s*>/i;p.mode="javascript"}else{if(/^style$/i.test(p.curState.context.tagName)){p.curMode=j;p.curState=j.startState(m.indent(p.curState,""));p.curClose=/^<\/\s*style\s*>/i;p.mode="css"}}}}return o}else{if(q.match(p.curClose,false)){p.curMode=m;p.curState=p.html;p.curClose=null;p.mode="html";return g(q,p)}else{return p.curMode.token(q,p.curState)}}}return{startState:function(){var o=m.startState();return{html:o,php:f.startState(),curMode:k.startOpen?f:m,curState:k.startOpen?f.startState():o,curClose:k.startOpen?/^\?>/:null,mode:k.startOpen?"php":"html"}},copyState:function(r){var p=r.html,q=CodeMirror.copyState(m,p),t=r.php,o=CodeMirror.copyState(f,t),s;if(r.curState==p){s=q}else{if(r.curState==t){s=o}else{s=CodeMirror.copyState(r.curMode,r.curState)}}return{html:q,php:o,curMode:r.curMode,curState:s,curClose:r.curClose,mode:r.mode}},token:g,indent:function(p,o){if((p.curMode!=f&&/^\s*<\//.test(o))||(p.curMode==f&&/^\?>/.test(o))){return m.indent(p.html,o)}return p.curMode.indent(p.curState,o)},electricChars:"/{}:"}});CodeMirror.defineMIME("application/x-httpd-php","php");CodeMirror.defineMIME("application/x-httpd-php-open",{name:"php",startOpen:true});CodeMirror.defineMIME("text/x-php",d)})();CodeMirror.defineMode("htmlmixed",function(d,f){var c=CodeMirror.getMode(d,{name:"xml",htmlMode:true});var e=CodeMirror.getMode(d,"javascript");var l=CodeMirror.getMode(d,"css");function g(p,o){var m=c.token(p,o.htmlState);if(m=="tag"&&p.current()==">"&&o.htmlState.context){if(/^script$/i.test(o.htmlState.context.tagName)){o.token=k;o.localState=e.startState(c.indent(o.htmlState,""));o.mode="javascript"}else{if(/^style$/i.test(o.htmlState.context.tagName)){o.token=h;o.localState=l.startState(c.indent(o.htmlState,""));o.mode="css"}}}return m}function j(r,m,o){var q=r.current();var p=q.search(m);if(p>-1){r.backUp(q.length-p)}return o}function k(o,m){if(o.match(/^<\/\s*script\s*>/i,false)){m.token=g;m.curState=null;m.mode="html";return g(o,m)}return j(o,/<\/\s*script\s*>/,e.token(o,m.localState))}function h(o,m){if(o.match(/^<\/\s*style\s*>/i,false)){m.token=g;m.localState=null;m.mode="html";return g(o,m)}return j(o,/<\/\s*style\s*>/,l.token(o,m.localState))}return{startState:function(){var m=c.startState();return{token:g,localState:null,mode:"html",htmlState:m}},copyState:function(o){if(o.localState){var m=CodeMirror.copyState(o.token==h?l:e,o.localState)}return{token:o.token,localState:m,mode:o.mode,htmlState:CodeMirror.copyState(c,o.htmlState)}},token:function(o,m){return m.token(o,m)},indent:function(o,m){if(o.token==g||/^\s*<\//.test(m)){return c.indent(o.htmlState,m)}else{if(o.token==k){return e.indent(o.localState,m)}else{return l.indent(o.localState,m)}}},compareStates:function(o,m){return c.compareStates(o.htmlState,m.htmlState)},electricChars:"/{}:"}});CodeMirror.defineMIME("text/html","htmlmixed");CodeMirror.defineMode("rst",function(G,h){function x(K,J,I){K.fn=J;z(K,I)}function z(J,I){J.ctx=I||{}}function y(J,I){if(I&&(typeof I!=="string")){var K=I.current();I=K[K.length-1]}x(J,H,{back:I})}function o(K){if(K){var J=CodeMirror.listModes();for(var I in J){if(J[I]==K){return true}}}return false}function e(I){if(o(I)){return CodeMirror.getMode(G,I)}else{return null}}var C=e(h.verbatim);var u=e("python");var w=/^[!"#$%&'()*+,-./:;<=>?@[\\\]^_`{|}~]/;var k=/^\s*\w([-:.\w]*\w)?::(\s|$)/;var c=/^\s*_[\w-]+:(\s|$)/;var l=/^\s*\[(\d+|#)\](\s|$)/;var E=/^\s*\[[A-Za-z][\w-]*\](\s|$)/;var D=/^\[(\d+|#)\]_/;var m=/^\[[A-Za-z][\w-]*\]_/;var A=/^\.\.(\s|$)/;var t=/^::\s*$/;var f=/^[-\s"([{</:]/;var j=/^[-\s`'")\]}>/:.,;!?\\_]/;var v=/^\s*((\d+|[A-Za-z#])[.)]|\((\d+|[A-Z-a-z#])\))\s/;var B=/^\s*[-\+\*]\s/;var q=/^\s+(>>>|In \[\d+\]:)\s/;function H(T,J){var I,R,N;if(T.eat(/\\/)){I=T.next();y(J,I);return null}R=T.sol();if(R&&(I=T.eat(w))){for(N=0;T.eat(I);N++){}if(N>=3&&T.match(/^\s*$/)){y(J,null);return"header"}else{T.backUp(N+1)}}if(R&&T.match(A)){if(!T.eol()){x(J,s)}return"meta"}if(T.match(t)){if(!C){x(J,F)}else{var O=C;x(J,F,{mode:O,local:O.startState()})}return"meta"}if(R&&T.match(q,false)){if(!u){x(J,F);return"meta"}else{var O=u;x(J,F,{mode:O,local:O.startState()});return null}}function Q(U){return R||!J.ctx.back||U.test(J.ctx.back)}function K(U){return T.eol()||T.match(U,false)}function M(U){return T.match(U)&&Q(/\W/)&&K(/\W/)}if(M(D)){y(J,T);return"footnote"}if(M(m)){y(J,T);return"citation"}I=T.next();if(Q(f)){if((I===":"||I==="|")&&T.eat(/\S/)){var L;if(I===":"){L="builtin"}else{L="atom"}x(J,g,{ch:I,wide:false,prev:null,token:L});return L}if(I==="*"||I==="`"){var S=I,P=false;I=T.next();if(I==S){P=true;I=T.next()}if(I&&!/\s/.test(I)){var L;if(S==="*"){L=P?"strong":"em"}else{L=P?"string":"string-2"}x(J,g,{ch:S,wide:P,prev:null,token:L});return L}}}y(J,I);return null}function g(M,L){var K=M.next(),J=L.ctx.token;function I(N){L.ctx.prev=N;return J}if(K!=L.ctx.ch){return I(K)}if(/\s/.test(L.ctx.prev)){return I(K)}if(L.ctx.wide){K=M.next();if(K!=L.ctx.ch){return I(K)}}if(!M.eol()&&!j.test(M.peek())){if(L.ctx.wide){M.backUp(1)}return I(K)}x(L,H);y(L,K);return J}function s(K,J){var I=null;if(K.match(k)){I="attribute"}else{if(K.match(c)){I="link"}else{if(K.match(l)){I="quote"}else{if(K.match(E)){I="quote"}else{K.eatSpace();if(K.eol()){y(J,K);return null}else{K.skipToEnd();x(J,d);return"comment"}}}}}x(J,r,{start:true});return I}function r(K,J){var I="body";if(!J.ctx.start||K.sol()){return p(K,J,I)}K.skipToEnd();z(J);return I}function d(J,I){return p(J,I,"comment")}function F(J,I){if(!C){return p(J,I,"meta")}else{if(J.sol()){if(!J.eatSpace()){y(I,J)}return null}return C.token(J,I.ctx.local)}}function p(K,J,I){if(K.eol()||K.eatSpace()){K.skipToEnd();return I}else{y(J,K);return null}}return{startState:function(){return{fn:H,ctx:{}}},copyState:function(I){return{fn:I.fn,ctx:I.ctx}},token:function(K,J){var I=J.fn(K,J);return I}}});CodeMirror.defineMIME("text/x-rst","rst");(function(){function o(){this.posFrom=this.posTo=this.query=null;this.marked=[]}function h(r){return r._searchState||(r._searchState=new o())}function m(r,u,s,t){if(r.openDialog){r.openDialog(u,t)}else{t(prompt(s,""))}}function q(s,u,t,r){if(s.openConfirm){s.openConfirm(u,r)}else{if(confirm(t)){r[0]()}}}function e(s){var r=s.match(/^\/(.*)\/$/);return r?new RegExp(r[1]):s}var d=_("Search")+': <input type="text" style="width: 10em"> <span style="color: #888">('+_("Use /re/ syntax for regexp search")+")</span>";function l(r,s){var t=h(r);if(t.query){return j(r,s)}m(r,d,"Search for:",function(u){r.operation(function(){if(!u||t.query){return}t.query=e(u);if(r.lineCount()<2000){for(var v=r.getSearchCursor(u);v.findNext();){t.marked.push(r.markText(v.from(),v.to(),"CodeMirror-searching"))}}t.posFrom=t.posTo=r.getCursor();j(r,s)})})}function j(r,s){r.operation(function(){var t=h(r);var u=r.getSearchCursor(t.query,s?t.posFrom:t.posTo);if(!u.find(s)){u=r.getSearchCursor(t.query,s?{line:r.lineCount()-1}:{line:0,ch:0});if(!u.find(s)){return}}r.setSelection(u.from(),u.to());t.posFrom=u.from();t.posTo=u.to()})}function p(r){r.operation(function(){var t=h(r);if(!t.query){return}t.query=null;for(var s=0;s<t.marked.length;++s){t.marked[s].clear()}t.marked.length=0})}var g='Replace: <input type="text" style="width: 10em"> <span style="color: #888">(Use /re/ syntax for regexp search)</span>';var k='With: <input type="text" style="width: 10em">';var f="Replace? <button>Yes</button> <button>No</button> <button>Stop</button>";function c(r,s){m(r,g,"Replace:",function(t){if(!t){return}t=e(t);m(r,k,"Replace with:",function(x){if(s){r.operation(function(){for(var z=r.getSearchCursor(t);z.findNext();){if(typeof t!="string"){var y=r.getRange(z.from(),z.to()).match(t);z.replace(x.replace(/\$(\d)/,function(A,B){return y[B]}))}else{z.replace(x)}}})}else{p(r);var w=r.getSearchCursor(t,r.getCursor());function v(){var z=w.from(),y;if(!(y=w.findNext())){w=r.getSearchCursor(t);if(!(y=w.findNext())||(w.from().line==z.line&&w.from().ch==z.ch)){return}}r.setSelection(w.from(),w.to());q(r,f,"Replace?",[function(){u(y)},v])}function u(y){w.replace(typeof t=="string"?x:x.replace(/\$(\d)/,function(z,A){return y[A]}));v()}v()}})})}CodeMirror.commands.find=function(r){p(r);l(r)};CodeMirror.commands.findNext=l;CodeMirror.commands.findPrev=function(r){l(r,true)};CodeMirror.commands.clearSearch=p;CodeMirror.commands.replace=c;CodeMirror.commands.replaceAll=function(r){c(r,true)}})();(function(){function c(d,g,j,f){this.atOccurrence=false;this.cm=d;if(f==null){f=typeof g=="string"&&g==g.toLowerCase()}j=j?d.clipPos(j):{line:0,ch:0};this.pos={from:j,to:j};if(typeof g!="string"){this.matches=function(m,r){if(m){var k=d.getLine(r.line).slice(0,r.ch),l=k.match(g),q=0;while(l){var o=k.indexOf(l[0]);q+=o;k=k.slice(o+1);var p=k.match(g);if(p){l=p}else{break}q++}}else{var k=d.getLine(r.line).slice(r.ch),l=k.match(g),q=l&&r.ch+k.indexOf(l[0])}if(l){return{from:{line:r.line,ch:q},to:{line:r.line,ch:q+l[0].length},match:l}}}}else{if(f){g=g.toLowerCase()}var e=f?function(k){return k.toLowerCase()}:function(k){return k};var h=g.split("\n");if(h.length==1){this.matches=function(o,p){var l=e(d.getLine(p.line)),k=g.length,m;if(o?(p.ch>=k&&(m=l.lastIndexOf(g,p.ch-k))!=-1):(m=l.indexOf(g,p.ch))!=-1){return{from:{line:p.line,ch:m},to:{line:p.line,ch:m+k}}}}}else{this.matches=function(q,s){var r=s.line,t=(q?h.length-1:0),o=h[t],u=e(d.getLine(r));var p=(q?u.indexOf(o)+o.length:u.lastIndexOf(o));if(q?p>=s.ch||p!=o.length:p<=s.ch||p!=u.length-o.length){return}for(;;){if(q?!r:r==d.lineCount()-1){return}u=e(d.getLine(r+=q?-1:1));o=h[q?--t:++t];if(t>0&&t<h.length-1){if(u!=o){return}else{continue}}var m=(q?u.lastIndexOf(o):u.indexOf(o)+o.length);if(q?m!=u.length-o.length:m!=o.length){return}var k={line:s.line,ch:p},l={line:r,ch:m};return{from:q?l:k,to:q?k:l}}}}}}c.prototype={findNext:function(){return this.find(false)},findPrevious:function(){return this.find(true)},find:function(e){var d=this,h=this.cm.clipPos(e?this.pos.from:this.pos.to);function f(j){var k={line:j,ch:0};d.pos={from:k,to:k};d.atOccurrence=false;return false}for(;;){if(this.pos=this.matches(e,h)){this.atOccurrence=true;return this.pos.match||true}if(e){if(!h.line){return f(0)}h={line:h.line-1,ch:this.cm.getLine(h.line-1).length}}else{var g=this.cm.lineCount();if(h.line==g-1){return f(g)}h={line:h.line+1,ch:0}}}},from:function(){if(this.atOccurrence){return this.pos.from}},to:function(){if(this.atOccurrence){return this.pos.to}},replace:function(e){var d=this;if(this.atOccurrence){d.pos.to=this.cm.replaceRange(e,d.pos.from,d.pos.to)}}};CodeMirror.defineExtension("getSearchCursor",function(e,f,d){return new c(this,e,f,d)})})();(function(){function c(d,g){var f=d.getWrapperElement();var e=f.insertBefore(document.createElement("div"),f.firstChild);e.className="CodeMirror-dialog";e.innerHTML="<div>"+g+"</div>";return e}CodeMirror.defineExtension("openDialog",function(f,k){var e=c(this,f);var d=false,h=this;function j(){if(d){return}d=true;e.parentNode.removeChild(e)}var g=e.getElementsByTagName("input")[0];if(g){CodeMirror.connect(g,"keydown",function(l){if(l.keyCode==13||l.keyCode==27){CodeMirror.e_stop(l);j();h.focus();if(l.keyCode==13){k(g.value)}}});g.focus();CodeMirror.connect(g,"blur",j)}return j});CodeMirror.defineExtension("openConfirm",function(m,g){var h=c(this,m);var j=h.getElementsByTagName("button");var f=false,k=this,d=1;function o(){if(f){return}f=true;h.parentNode.removeChild(h);k.focus()}j[0].focus();for(var e=0;e<j.length;++e){var l=j[e];(function(p){CodeMirror.connect(l,"click",function(q){CodeMirror.e_preventDefault(q);o();if(p){p(k)}})})(g[e]);CodeMirror.connect(l,"blur",function(){--d;setTimeout(function(){if(d<=0){o()}},200)});CodeMirror.connect(l,"focus",function(){++d})}})})();Ext.BLANK_IMAGE_URL="js/ExtJs/resources/images/default/s.gif";String.prototype.ucFirst=function(){return this.substr(0,1).toUpperCase()+this.substr(1,this.length)};Ext.override(Ext.grid.CheckboxSelectionModel,{handleMouseDown:function(h,k,j){if(j.button!==0||this.isLocked()){return}var c=this.grid.getView();if(j.shiftKey&&this.last!==false){var f=this.last;this.selectRange(f,k,j.ctrlKey);this.last=f;c.focusRow(k)}else{var d=this.isSelected(k);if(d){this.deselectRow(k)}else{if(!d){this.selectRow(k,!this.singleSelect);c.focusRow(k)}}}}});function log(){if(console){console.log.apply(this,arguments)}}function _(c){try{var f=i18n[c];if(f===undefined){f=c;log("FIX ME : i18n not found for the string: "+c)}return f}catch(d){return c}}function XHR(e){var d=e.success,f=e.failure,c=e.callback;e.url="./do/"+e.params.task;delete e.params.task;e.params=Ext.applyIf({csrfToken:csrfToken},e.params);e.failure=e.success=Ext.emptyFn;e.callback=function(h,l,g){var k=null;try{k=Ext.decode(g.responseText)}catch(j){log("Invalid XHR JSON Response:"+g.responseText)}if(l&&k&&k.success){if(d!==undefined){Ext.callback(d,e.scope,[g,h])}}else{if(f!==undefined){Ext.callback(f,e.scope,[g,h])}}if(c!==undefined){Ext.callback(c,e.scope,[h,l,g])}};Ext.Ajax.request(e)}Ext.override(Ext.form.Field,{afterRender:function(){var d=function(g){var f=null;var e=null;f=g.getEl().up("div.x-form-item");if(f){e=f.child("label")}if(e){return e}};if(this.tooltipText){var c=d(this);if(c){c.addClass(this.tooltipClass||"x-textfield-tooltip");new Ext.ToolTip({target:c,html:this.tooltipText,trackMouse:true})}}Ext.form.Field.superclass.afterRender.call(this);this.initEvents();this.initValue()}});
|
|
/*!
|
|
* Ext JS Library 3.2.0
|
|
* Copyright(c) 2006-2010 Ext JS, Inc.
|
|
* licensing@extjs.com
|
|
* http://www.extjs.com/license
|
|
*/
|
|
Ext.ux.PortalColumn=Ext.extend(Ext.Container,{layout:"anchor",defaultType:"portlet",cls:"x-portal-column"});Ext.reg("portalcolumn",Ext.ux.PortalColumn);
|
|
/*!
|
|
* Ext JS Library 3.2.0
|
|
* Copyright(c) 2006-2010 Ext JS, Inc.
|
|
* licensing@extjs.com
|
|
* http://www.extjs.com/license
|
|
*/
|
|
Ext.ux.Portal=Ext.extend(Ext.Panel,{layout:"column",autoScroll:true,cls:"x-portal",defaultType:"portalcolumn",initComponent:function(){Ext.ux.Portal.superclass.initComponent.call(this);this.addEvents({validatedrop:true,beforedragover:true,dragover:true,beforedrop:true,drop:true})},initEvents:function(){Ext.ux.Portal.superclass.initEvents.call(this);this.dd=new Ext.ux.Portal.DropZone(this,this.dropConfig)},beforeDestroy:function(){if(this.dd){this.dd.unreg()}Ext.ux.Portal.superclass.beforeDestroy.call(this)}});Ext.reg("portal",Ext.ux.Portal);Ext.ux.Portal.DropZone=function(c,d){this.portal=c;Ext.dd.ScrollManager.register(c.body);Ext.ux.Portal.DropZone.superclass.constructor.call(this,c.bwrap.dom,d);c.body.ddScrollConfig=this.ddScrollConfig};Ext.extend(Ext.ux.Portal.DropZone,Ext.dd.DropTarget,{ddScrollConfig:{vthresh:50,hthresh:-1,animate:true,increment:200},createEvent:function(d,h,g,f,k,j){return{portal:this.portal,panel:g.panel,columnIndex:f,column:k,position:j,data:g,source:d,rawEvent:h,status:this.dropAllowed}},notifyOver:function(z,x,A){var j=x.getXY(),d=this.portal,s=z.proxy;if(!this.grid){this.grid=this.getGrid()}var f=d.body.dom.clientWidth;if(!this.lastCW){this.lastCW=f}else{if(this.lastCW!=f){this.lastCW=f;d.doLayout();this.grid=this.getGrid()}}var g=0,q=this.grid.columnX,r=false;for(var w=q.length;g<w;g++){if(j[0]<(q[g].x+q[g].w)){r=true;break}}if(!r){g--}var u,o=false,l=0,y=d.items.itemAt(g),t=y.items.items,m=false;for(var w=t.length;l<w;l++){u=t[l];var v=u.el.getHeight();if(v===0){m=true}else{if((u.el.getY()+(v/2))>j[1]){o=true;break}}}l=(o&&u?l:y.items.getCount())+(m?-1:0);var k=this.createEvent(z,x,A,g,y,l);if(d.fireEvent("validatedrop",k)!==false&&d.fireEvent("beforedragover",k)!==false){s.getProxy().setWidth("auto");if(u){s.moveProxy(u.el.dom.parentNode,o?u.el.dom:null)}else{s.moveProxy(y.el.dom,null)}this.lastPos={c:y,col:g,p:m||(o&&u)?l:false};this.scrollPos=d.body.getScroll();d.fireEvent("dragover",k);return k.status}else{return k.status}},notifyOut:function(){delete this.grid},notifyDrop:function(o,j,h){delete this.grid;if(!this.lastPos){return}var l=this.lastPos.c,g=this.lastPos.col,m=this.lastPos.p;var f=this.createEvent(o,j,h,g,l,m!==false?m:l.items.getCount());if(this.portal.fireEvent("validatedrop",f)!==false&&this.portal.fireEvent("beforedrop",f)!==false){o.proxy.getProxy().remove();o.panel.el.dom.parentNode.removeChild(o.panel.el.dom);if(m!==false){if(l==o.panel.ownerCt&&(l.items.items.indexOf(o.panel)<=m)){m++}l.insert(m,o.panel)}else{l.add(o.panel)}l.doLayout();this.portal.fireEvent("drop",f);var p=this.scrollPos.top;if(p){var k=this.portal.body.dom;setTimeout(function(){k.scrollTop=p},10)}}delete this.lastPos},getGrid:function(){var c=this.portal.bwrap.getBox();c.columnX=[];this.portal.items.each(function(d){c.columnX.push({x:d.el.getX(),w:d.el.getWidth()})});return c},unreg:function(){Ext.ux.Portal.DropZone.superclass.unreg.call(this)}});
|
|
/*!
|
|
* Ext JS Library 3.2.0
|
|
* Copyright(c) 2006-2010 Ext JS, Inc.
|
|
* licensing@extjs.com
|
|
* http://www.extjs.com/license
|
|
*/
|
|
Ext.ux.Portlet=Ext.extend(Ext.Panel,{anchor:"100%",frame:true,collapsible:true,draggable:true,cls:"x-portlet"});Ext.reg("portlet",Ext.ux.Portlet);
|
|
/*!
|
|
* Ext JS Library 3.3.1
|
|
* Copyright(c) 2006-2010 Sencha Inc.
|
|
* licensing@sencha.com
|
|
* http://www.sencha.com/license
|
|
*/
|
|
Ext.ns("Ext.ux.grid");Ext.ux.grid.RowEditor=Ext.extend(Ext.Panel,{floating:true,shadow:false,layout:"hbox",cls:"x-small-editor",buttonAlign:"center",baseCls:"x-row-editor",elements:"header,footer,body",frameWidth:5,buttonPad:3,clicksToEdit:"auto",monitorValid:true,focusDelay:250,errorSummary:true,saveText:"Save",cancelText:"Cancel",commitChangesText:"You need to commit or cancel your changes",errorText:"Errors",defaults:{normalWidth:true},initComponent:function(){Ext.ux.grid.RowEditor.superclass.initComponent.call(this);this.addEvents("beforeedit","canceledit","validateedit","afteredit")},init:function(c){this.grid=c;this.ownerCt=c;if(this.clicksToEdit===2){c.on("rowdblclick",this.onRowDblClick,this)}else{c.on("rowclick",this.onRowClick,this);if(Ext.isIE){c.on("rowdblclick",this.onRowDblClick,this)}}c.getStore().on("remove",function(){this.stopEditing(false)},this);c.on({scope:this,keydown:this.onGridKey,columnresize:this.verifyLayout,columnmove:this.refreshFields,reconfigure:this.refreshFields,beforedestroy:this.beforedestroy,destroy:this.destroy,bodyscroll:{buffer:250,fn:this.positionButtons}});c.getColumnModel().on("hiddenchange",this.verifyLayout,this,{delay:1});c.getView().on("refresh",this.stopEditing.createDelegate(this,[]))},beforedestroy:function(){this.stopMonitoring();this.grid.getStore().un("remove",this.onStoreRemove,this);this.stopEditing(false);Ext.destroy(this.btns,this.tooltip)},refreshFields:function(){this.initFields();this.verifyLayout()},isDirty:function(){var c;this.items.each(function(d){if(String(this.values[d.id])!==String(d.getValue())){c=true;return false}},this);return c},startEditing:function(m,s){if(this.editing&&this.isDirty()){this.showTooltip(this.commitChangesText);return}if(Ext.isObject(m)){m=this.grid.getStore().indexOf(m)}if(this.fireEvent("beforeedit",this,m)!==false){this.editing=true;var j=this.grid,o=j.getView(),r=o.getRow(m),e=j.store.getAt(m);this.record=e;this.rowIndex=m;this.values={};if(!this.rendered){this.render(o.getEditorParent())}var p=Ext.fly(r).getWidth();this.setSize(p);if(!this.initialized){this.initFields()}var q=j.getColumnModel(),h=this.items.items,l,c;for(var d=0,k=q.getColumnCount();d<k;d++){c=this.preEditValue(e,q.getDataIndex(d));l=h[d];l.setValue(c);this.values[l.id]=Ext.isEmpty(c)?"":c}this.verifyLayout(true);if(!this.isVisible()){this.setPagePosition(Ext.fly(r).getXY())}else{this.el.setXY(Ext.fly(r).getXY(),{duration:0.15})}if(!this.isVisible()){this.show().doLayout()}if(s!==false){this.doFocus.defer(this.focusDelay,this)}}},stopEditing:function(o){this.editing=false;if(!this.isVisible()){return}if(o===false||!this.isValid()){this.hide();this.fireEvent("canceledit",this,o===false);return}var j={},d=this.record,k=false,m=this.grid.colModel,g=this.items.items;for(var f=0,h=m.getColumnCount();f<h;f++){if(!m.isHidden(f)){var e=m.getDataIndex(f);if(!Ext.isEmpty(e)){var c=d.data[e],l=this.postEditValue(g[f].getValue(),c,d,e);if(String(c)!==String(l)){j[e]=l;k=true}}}}if(k&&this.fireEvent("validateedit",this,j,d,this.rowIndex)!==false){d.beginEdit();Ext.iterate(j,function(p,q){d.set(p,q)});d.endEdit();this.fireEvent("afteredit",this,j,d,this.rowIndex)}this.hide()},verifyLayout:function(g){if(this.el&&(this.isVisible()||g===true)){var j=this.grid.getView().getRow(this.rowIndex);this.setSize(Ext.fly(j).getWidth(),Ext.isIE?Ext.fly(j).getHeight()+9:undefined);var e=this.grid.colModel,d=this.items.items;for(var f=0,c=e.getColumnCount();f<c;f++){if(!e.isHidden(f)){var h=0;if(f===(c-1)){h+=3}else{h+=1}d[f].show();d[f].setWidth(e.getColumnWidth(f)-h)}else{d[f].hide()}}this.doLayout();this.positionButtons()}},slideHide:function(){this.hide()},initFields:function(){var e=this.grid.getColumnModel(),h=Ext.layout.ContainerLayout.prototype.parseMargins;this.removeAll(false);for(var g=0,d=e.getColumnCount();g<d;g++){var j=e.getColumnAt(g),f=j.getEditor();if(!f){f=j.displayEditor||new Ext.form.DisplayField()}if(g==0){f.margins=h("0 1 2 1")}else{if(g==d-1){f.margins=h("0 0 2 1")}else{if(Ext.isIE){f.margins=h("0 0 2 0")}else{f.margins=h("0 1 2 0")}}}f.setWidth(e.getColumnWidth(g));f.column=j;if(f.ownerCt!==this){f.on("focus",this.ensureVisible,this);f.on("specialkey",this.onKey,this)}this.insert(g,f)}this.initialized=true},onKey:function(c,d){if(d.getKey()===d.ENTER){this.stopEditing(true);d.stopPropagation()}},onGridKey:function(f){if(f.getKey()===f.ENTER&&!this.isVisible()){var d=this.grid.getSelectionModel().getSelected();if(d){var c=this.grid.store.indexOf(d);this.startEditing(c);f.stopPropagation()}}},ensureVisible:function(c){if(this.isVisible()){this.grid.getView().ensureVisible(this.rowIndex,this.grid.colModel.getIndexById(c.column.id),true)}},onRowClick:function(d,h,f){if(this.clicksToEdit=="auto"){var c=this.lastClickIndex;this.lastClickIndex=h;if(c!=h&&!this.isVisible()){return}}this.startEditing(h,false);this.doFocus.defer(this.focusDelay,this,[f.getPoint()])},onRowDblClick:function(c,f,d){this.startEditing(f,false);this.doFocus.defer(this.focusDelay,this,[d.getPoint()])},onRender:function(){Ext.ux.grid.RowEditor.superclass.onRender.apply(this,arguments);this.el.swallowEvent(["keydown","keyup","keypress"]);this.btns=new Ext.Panel({baseCls:"x-plain",cls:"x-btns",elements:"body",layout:"table",width:(this.minButtonWidth*2)+(this.frameWidth*2)+(this.buttonPad*4),items:[{ref:"saveBtn",itemId:"saveBtn",xtype:"button",text:this.saveText,width:this.minButtonWidth,handler:this.stopEditing.createDelegate(this,[true])},{xtype:"button",text:this.cancelText,width:this.minButtonWidth,handler:this.stopEditing.createDelegate(this,[false])}]});this.btns.render(this.bwrap)},afterRender:function(){Ext.ux.grid.RowEditor.superclass.afterRender.apply(this,arguments);this.positionButtons();if(this.monitorValid){this.startMonitoring()}},onShow:function(){if(this.monitorValid){this.startMonitoring()}Ext.ux.grid.RowEditor.superclass.onShow.apply(this,arguments)},onHide:function(){Ext.ux.grid.RowEditor.superclass.onHide.apply(this,arguments);this.stopMonitoring();this.grid.getView().focusRow(this.rowIndex)},positionButtons:function(){if(this.btns){var j=this.grid,f=this.el.dom.clientHeight,d=j.getView(),c=d.scroller.dom.scrollLeft,k=this.btns.getWidth(),e=Math.min(j.getWidth(),j.getColumnModel().getTotalWidth());this.btns.el.shift({left:(e/2)-(k/2)+c,top:f-2,stopFx:true,duration:0.2})}},preEditValue:function(c,e){var d=c.data[e];return this.autoEncode&&typeof d==="string"?Ext.util.Format.htmlDecode(d):d},postEditValue:function(e,c,d,f){return this.autoEncode&&typeof e=="string"?Ext.util.Format.htmlEncode(e):e},doFocus:function(h){if(this.isVisible()){var f=0,e=this.grid.getColumnModel(),j;if(h){f=this.getTargetColumnIndex(h)}for(var g=f||0,d=e.getColumnCount();g<d;g++){j=e.getColumnAt(g);if(!j.hidden&&j.getEditor()){j.getEditor().focus();break}}}},getTargetColumnIndex:function(m){var d=this.grid,l=d.view,k=m.left,h=d.colModel.config,e=0,f=false;for(var g=h.length,j;j=h[e];e++){if(!j.hidden){if(Ext.fly(l.getHeaderCell(e)).getRegion().right>=k){f=e;break}}}return f},startMonitoring:function(){if(!this.bound&&this.monitorValid){this.bound=true;Ext.TaskMgr.start({run:this.bindHandler,interval:this.monitorPoll||200,scope:this})}},stopMonitoring:function(){this.bound=false;if(this.tooltip){this.tooltip.hide()}},isValid:function(){var c=true;this.items.each(function(d){if(!d.isValid(true)){c=false;return false}});return c},bindHandler:function(){if(!this.bound){return false}var c=this.isValid();if(!c&&this.errorSummary){this.showTooltip(this.getErrorText().join(""))}this.btns.saveBtn.setDisabled(!c);this.fireEvent("validation",this,c)},lastVisibleColumn:function(){var d=this.items.getCount()-1,e;for(;d>=0;d--){e=this.items.items[d];if(!e.hidden){return e}}},showTooltip:function(j){var e=this.tooltip;if(!e){e=this.tooltip=new Ext.ToolTip({maxWidth:600,cls:"errorTip",width:300,title:this.errorText,autoHide:false,anchor:"left",anchorToTarget:true,mouseOffset:[40,0]})}var d=this.grid.getView(),g=parseInt(this.el.dom.style.top,10),c=d.scroller.dom.scrollTop,f=this.el.getHeight();if(g+f>=c){e.initTarget(this.lastVisibleColumn().getEl());if(!e.rendered){e.show();e.hide()}e.body.update(j);e.doAutoWidth(20);e.show()}else{if(e.rendered){e.hide()}}},getErrorText:function(){var c=["<ul>"];this.items.each(function(d){if(!d.isValid(true)){c.push("<li>",d.getActiveError(),"</li>")}});c.push("</ul>");return c}});Ext.preg("roweditor",Ext.ux.grid.RowEditor);
|
|
/*!
|
|
* Ext JS Library 3.2.0
|
|
* Copyright(c) 2006-2010 Ext JS, Inc.
|
|
* licensing@extjs.com
|
|
* http://www.extjs.com/license
|
|
*/
|
|
Ext.ns("Ext.ux.form");Ext.ux.form.SpinnerField=Ext.extend(Ext.form.NumberField,{actionMode:"wrap",deferHeight:true,autoSize:Ext.emptyFn,onBlur:Ext.emptyFn,adjustSize:Ext.BoxComponent.prototype.adjustSize,constructor:function(e){var d=Ext.copyTo({},e,"incrementValue,alternateIncrementValue,accelerate,defaultValue,triggerClass,splitterClass");var f=this.spinner=new Ext.ux.Spinner(d);var c=e.plugins?(Ext.isArray(e.plugins)?e.plugins.push(f):[e.plugins,f]):f;Ext.ux.form.SpinnerField.superclass.constructor.call(this,Ext.apply(e,{plugins:c}))},getResizeEl:function(){return this.wrap},getPositionEl:function(){return this.wrap},alignErrorIcon:function(){if(this.wrap){this.errorIcon.alignTo(this.wrap,"tl-tr",[2,0])}},validateBlur:function(){return true}});Ext.reg("spinnerfield",Ext.ux.form.SpinnerField);Ext.form.SpinnerField=Ext.ux.form.SpinnerField;
|
|
/*!
|
|
* Ext JS Library 3.2.0
|
|
* Copyright(c) 2006-2010 Ext JS, Inc.
|
|
* licensing@extjs.com
|
|
* http://www.extjs.com/license
|
|
*/
|
|
Ext.ux.Spinner=Ext.extend(Ext.util.Observable,{incrementValue:1,alternateIncrementValue:5,triggerClass:"x-form-spinner-trigger",splitterClass:"x-form-spinner-splitter",alternateKey:Ext.EventObject.shiftKey,defaultValue:0,accelerate:false,constructor:function(c){Ext.ux.Spinner.superclass.constructor.call(this,c);Ext.apply(this,c);this.mimicing=false},init:function(c){this.field=c;c.afterMethod("onRender",this.doRender,this);c.afterMethod("onEnable",this.doEnable,this);c.afterMethod("onDisable",this.doDisable,this);c.afterMethod("afterRender",this.doAfterRender,this);c.afterMethod("onResize",this.doResize,this);c.afterMethod("onFocus",this.doFocus,this);c.beforeMethod("onDestroy",this.doDestroy,this)},doRender:function(d,c){var e=this.el=this.field.getEl();var g=this.field;if(!g.wrap){g.wrap=this.wrap=e.wrap({cls:"x-form-field-wrap"})}else{this.wrap=g.wrap.addClass("x-form-field-wrap")}this.trigger=this.wrap.createChild({tag:"img",src:Ext.BLANK_IMAGE_URL,cls:"x-form-trigger "+this.triggerClass});if(!g.width){this.wrap.setWidth(e.getWidth()+this.trigger.getWidth())}this.splitter=this.wrap.createChild({tag:"div",cls:this.splitterClass,style:"width:13px; height:2px;"});this.splitter.setRight((Ext.isIE)?1:2).setTop(10).show();this.proxy=this.trigger.createProxy("",this.splitter,true);this.proxy.addClass("x-form-spinner-proxy");this.proxy.setStyle("left","0px");this.proxy.setSize(14,1);this.proxy.hide();this.dd=new Ext.dd.DDProxy(this.splitter.dom.id,"SpinnerDrag",{dragElId:this.proxy.id});this.initTrigger();this.initSpinner()},doAfterRender:function(){var c;if(Ext.isIE&&this.el.getY()!=(c=this.trigger.getY())){this.el.position();this.el.setY(c)}},doEnable:function(){if(this.wrap){this.wrap.removeClass(this.field.disabledClass)}},doDisable:function(){if(this.wrap){this.wrap.addClass(this.field.disabledClass);this.el.removeClass(this.field.disabledClass)}},doResize:function(c,d){if(typeof c=="number"){this.el.setWidth(c-this.trigger.getWidth())}this.wrap.setWidth(this.el.getWidth()+this.trigger.getWidth())},doFocus:function(){if(!this.mimicing){this.wrap.addClass("x-trigger-wrap-focus");this.mimicing=true;Ext.get(Ext.isIE?document.body:document).on("mousedown",this.mimicBlur,this,{delay:10});this.el.on("keydown",this.checkTab,this)}},checkTab:function(c){if(c.getKey()==c.TAB){this.triggerBlur()}},mimicBlur:function(c){if(!this.wrap.contains(c.target)&&this.field.validateBlur(c)){this.triggerBlur()}},triggerBlur:function(){this.mimicing=false;Ext.get(Ext.isIE?document.body:document).un("mousedown",this.mimicBlur,this);this.el.un("keydown",this.checkTab,this);this.field.beforeBlur();this.wrap.removeClass("x-trigger-wrap-focus");this.field.onBlur.call(this.field)},initTrigger:function(){this.trigger.addClassOnOver("x-form-trigger-over");this.trigger.addClassOnClick("x-form-trigger-click")},initSpinner:function(){this.field.addEvents({spin:true,spinup:true,spindown:true});this.keyNav=new Ext.KeyNav(this.el,{up:function(c){c.preventDefault();this.onSpinUp()},down:function(c){c.preventDefault();this.onSpinDown()},pageUp:function(c){c.preventDefault();this.onSpinUpAlternate()},pageDown:function(c){c.preventDefault();this.onSpinDownAlternate()},scope:this});this.repeater=new Ext.util.ClickRepeater(this.trigger,{accelerate:this.accelerate});this.field.mon(this.repeater,"click",this.onTriggerClick,this,{preventDefault:true});this.field.mon(this.trigger,{mouseover:this.onMouseOver,mouseout:this.onMouseOut,mousemove:this.onMouseMove,mousedown:this.onMouseDown,mouseup:this.onMouseUp,scope:this,preventDefault:true});this.field.mon(this.wrap,"mousewheel",this.handleMouseWheel,this);this.dd.setXConstraint(0,0,10);this.dd.setYConstraint(1500,1500,10);this.dd.endDrag=this.endDrag.createDelegate(this);this.dd.startDrag=this.startDrag.createDelegate(this);this.dd.onDrag=this.onDrag.createDelegate(this)},onMouseOver:function(){if(this.disabled){return}var c=this.getMiddle();this.tmpHoverClass=(Ext.EventObject.getPageY()<c)?"x-form-spinner-overup":"x-form-spinner-overdown";this.trigger.addClass(this.tmpHoverClass)},onMouseOut:function(){this.trigger.removeClass(this.tmpHoverClass)},onMouseMove:function(){if(this.disabled){return}var c=this.getMiddle();if(((Ext.EventObject.getPageY()>c)&&this.tmpHoverClass=="x-form-spinner-overup")||((Ext.EventObject.getPageY()<c)&&this.tmpHoverClass=="x-form-spinner-overdown")){}},onMouseDown:function(){if(this.disabled){return}var c=this.getMiddle();this.tmpClickClass=(Ext.EventObject.getPageY()<c)?"x-form-spinner-clickup":"x-form-spinner-clickdown";this.trigger.addClass(this.tmpClickClass)},onMouseUp:function(){this.trigger.removeClass(this.tmpClickClass)},onTriggerClick:function(){if(this.disabled||this.el.dom.readOnly){return}var d=this.getMiddle();var c=(Ext.EventObject.getPageY()<d)?"Up":"Down";this["onSpin"+c]()},getMiddle:function(){var d=this.trigger.getTop();var e=this.trigger.getHeight();var c=d+(e/2);return c},isSpinnable:function(){if(this.disabled||this.el.dom.readOnly){Ext.EventObject.preventDefault();return false}return true},handleMouseWheel:function(c){if(this.wrap.hasClass("x-trigger-wrap-focus")==false){return}var d=c.getWheelDelta();if(d>0){this.onSpinUp();c.stopEvent()}else{if(d<0){this.onSpinDown();c.stopEvent()}}},startDrag:function(){this.proxy.show();this._previousY=Ext.fly(this.dd.getDragEl()).getTop()},endDrag:function(){this.proxy.hide()},onDrag:function(){if(this.disabled){return}var d=Ext.fly(this.dd.getDragEl()).getTop();var c="";if(this._previousY>d){c="Up"}if(this._previousY<d){c="Down"}if(c!=""){this["onSpin"+c]()}this._previousY=d},onSpinUp:function(){if(this.isSpinnable()==false){return}if(Ext.EventObject.shiftKey==true){this.onSpinUpAlternate();return}else{this.spin(false,false)}this.field.fireEvent("spin",this);this.field.fireEvent("spinup",this)},onSpinDown:function(){if(this.isSpinnable()==false){return}if(Ext.EventObject.shiftKey==true){this.onSpinDownAlternate();return}else{this.spin(true,false)}this.field.fireEvent("spin",this);this.field.fireEvent("spindown",this)},onSpinUpAlternate:function(){if(this.isSpinnable()==false){return}this.spin(false,true);this.field.fireEvent("spin",this);this.field.fireEvent("spinup",this)},onSpinDownAlternate:function(){if(this.isSpinnable()==false){return}this.spin(true,true);this.field.fireEvent("spin",this);this.field.fireEvent("spindown",this)},spin:function(f,d){var c=parseFloat(this.field.getValue());var e=(d==true)?this.alternateIncrementValue:this.incrementValue;(f==true)?c-=e:c+=e;c=(isNaN(c))?this.defaultValue:c;c=this.fixBoundries(c);this.field.setRawValue(c)},fixBoundries:function(d){var c=d;if(this.field.minValue!=undefined&&c<this.field.minValue){c=this.field.minValue}if(this.field.maxValue!=undefined&&c>this.field.maxValue){c=this.field.maxValue}return this.fixPrecision(c)},fixPrecision:function(d){var c=isNaN(d);if(!this.field.allowDecimals||this.field.decimalPrecision==-1||c||!d){return c?"":d}return parseFloat(parseFloat(d).toFixed(this.field.decimalPrecision))},doDestroy:function(){if(this.trigger){this.trigger.remove()}if(this.wrap){this.wrap.remove();delete this.field.wrap}if(this.splitter){this.splitter.remove()}if(this.dd){this.dd.unreg();this.dd=null}if(this.proxy){this.proxy.remove()}if(this.repeater){this.repeater.purgeListeners()}}});Ext.form.Spinner=Ext.ux.Spinner;
|
|
/*!
|
|
* Ext JS Library 3.2.0
|
|
* Copyright(c) 2006-2010 Ext JS, Inc.
|
|
* licensing@extjs.com
|
|
* http://www.extjs.com/license
|
|
*/
|
|
Ext.ux.StatusBar=Ext.extend(Ext.Toolbar,{cls:"x-statusbar",busyIconCls:"x-status-busy",busyText:"Loading...",autoClear:5000,emptyText:" ",activeThreadId:0,initComponent:function(){if(this.statusAlign=="right"){this.cls+=" x-status-right"}Ext.ux.StatusBar.superclass.initComponent.call(this)},afterRender:function(){Ext.ux.StatusBar.superclass.afterRender.call(this);var c=this.statusAlign=="right";this.currIconCls=this.iconCls||this.defaultIconCls;this.statusEl=new Ext.Toolbar.TextItem({cls:"x-status-text "+(this.currIconCls||""),text:this.text||this.defaultText||""});if(c){this.add("->");this.add(this.statusEl)}else{this.insert(0,this.statusEl);this.insert(1,"->")}this.doLayout()},setStatus:function(f){f=f||{};if(typeof f=="string"){f={text:f}}if(f.text!==undefined){this.setText(f.text)}if(f.iconCls!==undefined){this.setIcon(f.iconCls)}if(f.clear){var g=f.clear,e=this.autoClear,d={useDefaults:true,anim:true};if(typeof g=="object"){g=Ext.applyIf(g,d);if(g.wait){e=g.wait}}else{if(typeof g=="number"){e=g;g=d}else{if(typeof g=="boolean"){g=d}}}g.threadId=this.activeThreadId;this.clearStatus.defer(e,this,[g])}return this},clearStatus:function(e){e=e||{};if(e.threadId&&e.threadId!==this.activeThreadId){return this}var d=e.useDefaults?this.defaultText:this.emptyText,c=e.useDefaults?(this.defaultIconCls?this.defaultIconCls:""):"";if(e.anim){this.statusEl.el.fadeOut({remove:false,useDisplay:true,scope:this,callback:function(){this.setStatus({text:d,iconCls:c});this.statusEl.el.show()}})}else{this.statusEl.hide();this.setStatus({text:d,iconCls:c});this.statusEl.show()}return this},setText:function(c){this.activeThreadId++;this.text=c||"";if(this.rendered){this.statusEl.setText(this.text)}return this},getText:function(){return this.text},setIcon:function(c){this.activeThreadId++;c=c||"";if(this.rendered){if(this.currIconCls){this.statusEl.removeClass(this.currIconCls);this.currIconCls=null}if(c.length>0){this.statusEl.addClass(c);this.currIconCls=c}}else{this.currIconCls=c}return this},showBusy:function(c){if(typeof c=="string"){c={text:c}}c=Ext.applyIf(c||{},{text:this.busyText,iconCls:this.busyIconCls});return this.setStatus(c)}});Ext.reg("statusbar",Ext.ux.StatusBar);
|
|
/*!
|
|
* Ext JS Library 3.2.0
|
|
* Copyright(c) 2006-2010 Ext JS, Inc.
|
|
* licensing@extjs.com
|
|
* http://www.extjs.com/license
|
|
*/
|
|
Ext.ux.TabCloseMenu=Ext.extend(Object,{closeTabText:_("Close Tab"),closeOtherTabsText:_("Close Other Tabs"),showCloseAll:true,closeAllTabsText:_("Close All Tabs"),constructor:function(c){Ext.apply(this,c||{})},init:function(c){this.tabs=c;c.on({scope:this,contextmenu:this.onContextMenu,destroy:this.destroy})},destroy:function(){Ext.destroy(this.menu);delete this.menu;delete this.tabs;delete this.active},onContextMenu:function(d,f,j){this.active=f;var c=this.createMenu(),g=true,k=true,h=c.getComponent("closeall");c.getComponent("close").setDisabled(!f.closable);d.items.each(function(){if(this.closable){g=false;if(this!=f){k=false;return false}}});c.getComponent("closeothers").setDisabled(k);if(h){h.setDisabled(g)}j.stopEvent();c.showAt(j.getPoint())},createMenu:function(){if(!this.menu){var c=[{itemId:"close",text:this.closeTabText,scope:this,handler:this.onClose}];if(this.showCloseAll){c.push("-")}c.push({itemId:"closeothers",iconCls:"iconCloseOthersTabs",text:this.closeOtherTabsText,scope:this,handler:this.onCloseOthers});if(this.showCloseAll){c.push({itemId:"closeall",text:this.closeAllTabsText,scope:this,handler:this.onCloseAll})}this.menu=new Ext.menu.Menu({items:c})}return this.menu},onClose:function(){this.tabs.remove(this.active)},onCloseOthers:function(){this.doClose(true)},onCloseAll:function(){this.doClose(false)},doClose:function(d){var c=[];this.tabs.items.each(function(e){if(e.closable){if(!d||e!=this.active){c.push(e)}}},this);Ext.each(c,function(e){this.tabs.remove(e)},this)}});Ext.preg("tabclosemenu",Ext.ux.TabCloseMenu);
|
|
/*!
|
|
* Ext JS Library 3.2.0
|
|
* Copyright(c) 2006-2010 Ext JS, Inc.
|
|
* licensing@extjs.com
|
|
* http://www.extjs.com/license
|
|
*/
|
|
Ext.ns("Ext.ux.tree");Ext.ux.tree.TreeGridSorter=Ext.extend(Ext.tree.TreeSorter,{sortClasses:["sort-asc","sort-desc"],sortAscText:"Sort Ascending",sortDescText:"Sort Descending",constructor:function(c,d){if(!Ext.isObject(d)){d={property:c.columns[0].dataIndex||"text",folderSort:true}}Ext.ux.tree.TreeGridSorter.superclass.constructor.apply(this,arguments);this.tree=c;c.on("headerclick",this.onHeaderClick,this);c.ddAppendOnly=true;me=this;this.defaultSortFn=function(m,l){var h=me.dir&&me.dir.toLowerCase()=="desc";var e=me.property||"text";var g=me.sortType;var j=me.folderSort;var k=me.caseSensitive===true;var f=me.leafAttr||"leaf";if(j){if(m.attributes[f]&&!l.attributes[f]){return 1}if(!m.attributes[f]&&l.attributes[f]){return -1}}var q=g?g(m):(k?m.attributes[e]:m.attributes[e].toUpperCase());var o=g?g(l):(k?l.attributes[e]:l.attributes[e].toUpperCase());if(q<o){return h?+1:-1}else{if(q>o){return h?-1:+1}else{return 0}}};c.on("afterrender",this.onAfterTreeRender,this,{single:true});c.on("headermenuclick",this.onHeaderMenuClick,this)},onAfterTreeRender:function(){if(this.tree.hmenu){this.tree.hmenu.insert(0,{itemId:"asc",text:this.sortAscText,cls:"xg-hmenu-sort-asc"},{itemId:"desc",text:this.sortDescText,cls:"xg-hmenu-sort-desc"})}this.updateSortIcon(0,"asc")},onHeaderMenuClick:function(f,e,d){if(e==="asc"||e==="desc"){this.onHeaderClick(f,null,d);return false}},onHeaderClick:function(g,e,d){if(g&&!this.tree.headersDisabled){var f=this;f.property=g.dataIndex;f.dir=g.dir=(g.dir==="desc"?"asc":"desc");f.sortType=g.sortType;f.caseSensitive===Ext.isBoolean(g.caseSensitive)?g.caseSensitive:this.caseSensitive;f.sortFn=g.sortFn||this.defaultSortFn;this.tree.root.cascade(function(c){if(!c.isLeaf()){f.updateSort(f.tree,c)}});this.updateSortIcon(d,g.dir)}},updateSortIcon:function(d,c){var f=this.sortClasses;var e=this.tree.innerHd.select("td").removeClass(f);e.item(d).addClass(f[c=="desc"?1:0])}});
|
|
/*!
|
|
* Ext JS Library 3.2.0
|
|
* Copyright(c) 2006-2010 Ext JS, Inc.
|
|
* licensing@extjs.com
|
|
* http://www.extjs.com/license
|
|
*/
|
|
Ext.tree.ColumnResizer=Ext.extend(Ext.util.Observable,{minWidth:14,constructor:function(c){Ext.apply(this,c);Ext.tree.ColumnResizer.superclass.constructor.call(this)},init:function(c){this.tree=c;c.on("render",this.initEvents,this)},initEvents:function(c){c.mon(c.innerHd,"mousemove",this.handleHdMove,this);this.tracker=new Ext.dd.DragTracker({onBeforeStart:this.onBeforeStart.createDelegate(this),onStart:this.onStart.createDelegate(this),onDrag:this.onDrag.createDelegate(this),onEnd:this.onEnd.createDelegate(this),tolerance:3,autoStart:300});this.tracker.initEl(c.innerHd);c.on("beforedestroy",this.tracker.destroy,this.tracker)},handleHdMove:function(h,m){var j=5,l=h.getPageX(),g=h.getTarget(".x-treegrid-hd",3,true);if(g){var d=g.getRegion(),o=g.dom.style,f=g.dom.parentNode;if(l-d.left<=j&&g.dom!==f.firstChild){var c=g.dom.previousSibling;while(c&&Ext.fly(c).hasClass("x-treegrid-hd-hidden")){c=c.previousSibling}if(c){this.activeHd=Ext.get(c);o.cursor=Ext.isWebKit?"e-resize":"col-resize"}}else{if(d.right-l<=j){var k=g.dom;while(k&&Ext.fly(k).hasClass("x-treegrid-hd-hidden")){k=k.previousSibling}if(k){this.activeHd=Ext.get(k);o.cursor=Ext.isWebKit?"w-resize":"col-resize"}}else{delete this.activeHd;o.cursor=""}}}},onBeforeStart:function(c){this.dragHd=this.activeHd;return !!this.dragHd},onStart:function(d){this.tree.headersDisabled=true;this.proxy=this.tree.body.createChild({cls:"x-treegrid-resizer"});this.proxy.setHeight(this.tree.body.getHeight());var c=this.tracker.getXY()[0];this.hdX=this.dragHd.getX();this.hdIndex=this.tree.findHeaderIndex(this.dragHd);this.proxy.setX(this.hdX);this.proxy.setWidth(c-this.hdX);this.maxWidth=this.tree.outerCt.getWidth()-this.tree.innerBody.translatePoints(this.hdX).left},onDrag:function(d){var c=this.tracker.getXY()[0];this.proxy.setWidth((c-this.hdX).constrain(this.minWidth,this.maxWidth))},onEnd:function(f){var d=this.proxy.getWidth(),c=this.tree;this.proxy.remove();delete this.dragHd;c.columns[this.hdIndex].width=d;c.updateColumnWidths();setTimeout(function(){c.headersDisabled=false},100)}});
|
|
/*!
|
|
* Ext JS Library 3.2.0
|
|
* Copyright(c) 2006-2010 Ext JS, Inc.
|
|
* licensing@extjs.com
|
|
* http://www.extjs.com/license
|
|
*/
|
|
Ext.ux.tree.TreeGridNodeUI=Ext.extend(Ext.tree.TreeNodeUI,{isTreeGridNodeUI:true,renderElements:function(e,m,j,o){var p=e.getOwnerTree(),l=p.columns,k=l[0],f,d,h;this.indentMarkup=e.parentNode?e.parentNode.ui.getChildIndent():"";d=['<tbody class="x-tree-node">','<tr ext:tree-node-id="',e.id,'" class="x-tree-node-el x-tree-node-leaf ',m.cls,'">','<td class="x-treegrid-col">','<span class="x-tree-node-indent">',this.indentMarkup,"</span>",'<img src="',this.emptyIcon,'" class="x-tree-ec-icon x-tree-elbow">','<img src="',m.icon||this.emptyIcon,'" class="x-tree-node-icon',(m.icon?" x-tree-node-inline-icon":""),(m.iconCls?" "+m.iconCls:""),'" unselectable="on">','<a hidefocus="on" class="x-tree-node-anchor" href="',m.href?m.href:"#",'" tabIndex="1" ',m.hrefTarget?' target="'+m.hrefTarget+'"':"",">",'<span unselectable="on">',(k.tpl?k.tpl.apply(m):m[k.dataIndex]||k.text),"</span></a>","</td>"];for(f=1,h=l.length;f<h;f++){k=l[f];d.push('<td class="x-treegrid-col ',(k.cls?k.cls:""),'">','<div unselectable="on" class="x-treegrid-text"',(k.align?' style="text-align: '+k.align+';"':""),">",(k.tpl?k.tpl.apply(m):m[k.dataIndex]),"</div>","</td>")}d.push('</tr><tr class="x-tree-node-ct"><td colspan="',l.length,'">','<table class="x-treegrid-node-ct-table" cellpadding="0" cellspacing="0" style="table-layout: fixed; display: none; width: ',p.innerCt.getWidth(),'px;"><colgroup>');for(f=0,h=l.length;f<h;f++){d.push('<col style="width: ',(l[f].hidden?0:l[f].width),'px;" />')}d.push("</colgroup></table></td></tr></tbody>");if(o!==true&&e.nextSibling&&e.nextSibling.ui.getEl()){this.wrap=Ext.DomHelper.insertHtml("beforeBegin",e.nextSibling.ui.getEl(),d.join(""))}else{this.wrap=Ext.DomHelper.insertHtml("beforeEnd",j,d.join(""))}this.elNode=this.wrap.childNodes[0];this.ctNode=this.wrap.childNodes[1].firstChild.firstChild;var g=this.elNode.firstChild.childNodes;this.indentNode=g[0];this.ecNode=g[1];this.iconNode=g[2];this.anchor=g[3];this.textNode=g[3].firstChild},animExpand:function(c){this.ctNode.style.display="";Ext.ux.tree.TreeGridNodeUI.superclass.animExpand.call(this,c)}});Ext.ux.tree.TreeGridRootNodeUI=Ext.extend(Ext.tree.TreeNodeUI,{isTreeGridNodeUI:true,render:function(){if(!this.rendered){this.wrap=this.ctNode=this.node.ownerTree.innerCt.dom;this.node.expanded=true}if(Ext.isWebKit){var c=this.ctNode;c.style.tableLayout=null;(function(){c.style.tableLayout="fixed"}).defer(1)}},destroy:function(){if(this.elNode){Ext.dd.Registry.unregister(this.elNode.id)}delete this.node},collapse:Ext.emptyFn,expand:Ext.emptyFn});
|
|
/*!
|
|
* Ext JS Library 3.2.0
|
|
* Copyright(c) 2006-2010 Ext JS, Inc.
|
|
* licensing@extjs.com
|
|
* http://www.extjs.com/license
|
|
*/
|
|
Ext.ux.tree.TreeGridLoader=Ext.extend(Ext.tree.TreeLoader,{createNode:function(c){if(!c.uiProvider){c.uiProvider=Ext.ux.tree.TreeGridNodeUI}return Ext.tree.TreeLoader.prototype.createNode.call(this,c)}});
|
|
/*!
|
|
* Ext JS Library 3.2.0
|
|
* Copyright(c) 2006-2010 Ext JS, Inc.
|
|
* licensing@extjs.com
|
|
* http://www.extjs.com/license
|
|
*/
|
|
(function(){Ext.override(Ext.list.Column,{init:function(){var d=Ext.data.Types,c=this.sortType;if(this.type){if(Ext.isString(this.type)){this.type=Ext.data.Types[this.type.toUpperCase()]||d.AUTO}}else{this.type=d.AUTO}if(Ext.isString(c)){this.sortType=Ext.data.SortTypes[c]}else{if(Ext.isEmpty(c)){this.sortType=this.type.sortType}}}});Ext.tree.Column=Ext.extend(Ext.list.Column,{});Ext.tree.NumberColumn=Ext.extend(Ext.list.NumberColumn,{});Ext.tree.DateColumn=Ext.extend(Ext.list.DateColumn,{});Ext.tree.BooleanColumn=Ext.extend(Ext.list.BooleanColumn,{});Ext.reg("tgcolumn",Ext.tree.Column);Ext.reg("tgnumbercolumn",Ext.tree.NumberColumn);Ext.reg("tgdatecolumn",Ext.tree.DateColumn);Ext.reg("tgbooleancolumn",Ext.tree.BooleanColumn)})();
|
|
/*!
|
|
* Ext JS Library 3.2.0
|
|
* Copyright(c) 2006-2010 Ext JS, Inc.
|
|
* licensing@extjs.com
|
|
* http://www.extjs.com/license
|
|
*/
|
|
Ext.ux.tree.TreeGrid=Ext.extend(Ext.tree.TreePanel,{rootVisible:false,useArrows:true,lines:false,borderWidth:Ext.isBorderBox?0:2,cls:"x-treegrid",columnResize:true,enableSort:true,reserveScrollOffset:true,enableHdMenu:true,columnsText:"Columns",initComponent:function(){if(!this.root){this.root=new Ext.tree.AsyncTreeNode({text:"Root"})}var d=this.loader;if(!d){d=new Ext.ux.tree.TreeGridLoader({dataUrl:this.dataUrl,requestMethod:this.requestMethod,store:this.store})}else{if(Ext.isObject(d)&&!d.load){d=new Ext.ux.tree.TreeGridLoader(d)}else{if(d){d.createNode=function(c){if(!c.uiProvider){c.uiProvider=Ext.ux.tree.TreeGridNodeUI}return Ext.tree.TreeLoader.prototype.createNode.call(this,c)}}}}this.loader=d;Ext.ux.tree.TreeGrid.superclass.initComponent.call(this);this.initColumns();if(this.enableSort){this.treeGridSorter=new Ext.ux.tree.TreeGridSorter(this,this.enableSort)}if(this.columnResize){this.colResizer=new Ext.tree.ColumnResizer(this.columnResize);this.colResizer.init(this)}var e=this.columns;if(!this.internalTpl){this.internalTpl=new Ext.XTemplate('<div class="x-grid3-header">','<div class="x-treegrid-header-inner">','<div class="x-grid3-header-offset">','<table cellspacing="0" cellpadding="0" border="0"><colgroup><tpl for="columns"><col /></tpl></colgroup>','<thead><tr class="x-grid3-hd-row">','<tpl for="columns">','<td class="x-grid3-hd x-grid3-cell x-treegrid-hd" style="text-align: {align};" id="',this.id,'-xlhd-{#}">','<div class="x-grid3-hd-inner x-treegrid-hd-inner" unselectable="on">',this.enableHdMenu?'<a class="x-grid3-hd-btn" href="#"></a>':"",'{header}<img class="x-grid3-sort-icon" src="',Ext.BLANK_IMAGE_URL,'" />',"</div>","</td></tpl>","</tr></thead>","</div></table>","</div></div>","</div>",'<div class="x-treegrid-root-node">','<table class="x-treegrid-root-table" cellpadding="0" cellspacing="0" style="table-layout: fixed;"></table>',"</div>")}if(!this.colgroupTpl){this.colgroupTpl=new Ext.XTemplate('<colgroup><tpl for="columns"><col style="width: {width}px"/></tpl></colgroup>')}},initColumns:function(){var g=this.columns,d=g.length,f=[],e,h;for(e=0;e<d;e++){h=g[e];if(!h.isColumn){h.xtype=h.xtype?(/^tg/.test(h.xtype)?h.xtype:"tg"+h.xtype):"tgcolumn";h=Ext.create(h)}h.init(this);f.push(h);if(this.enableSort!==false&&h.sortable!==false){h.sortable=true;this.enableSort=true}}this.columns=f},onRender:function(){Ext.tree.TreePanel.superclass.onRender.apply(this,arguments);this.el.addClass("x-treegrid");this.outerCt=this.body.createChild({cls:"x-tree-root-ct x-treegrid-ct "+(this.useArrows?"x-tree-arrows":this.lines?"x-tree-lines":"x-tree-no-lines")});this.internalTpl.overwrite(this.outerCt,{columns:this.columns});this.mainHd=Ext.get(this.outerCt.dom.firstChild);this.innerHd=Ext.get(this.mainHd.dom.firstChild);this.innerBody=Ext.get(this.outerCt.dom.lastChild);this.innerCt=Ext.get(this.innerBody.dom.firstChild);this.colgroupTpl.insertFirst(this.innerCt,{columns:this.columns});if(this.hideHeaders){this.header.dom.style.display="none"}else{if(this.enableHdMenu!==false){this.hmenu=new Ext.menu.Menu({id:this.id+"-hctx"});if(this.enableColumnHide!==false){this.colMenu=new Ext.menu.Menu({id:this.id+"-hcols-menu"});this.colMenu.on({scope:this,beforeshow:this.beforeColMenuShow,itemclick:this.handleHdMenuClick});this.hmenu.add({itemId:"columns",hideOnClick:false,text:this.columnsText,menu:this.colMenu,iconCls:"x-cols-icon"})}this.hmenu.on("itemclick",this.handleHdMenuClick,this)}}},setRootNode:function(c){c.attributes.uiProvider=Ext.ux.tree.TreeGridRootNodeUI;c=Ext.ux.tree.TreeGrid.superclass.setRootNode.call(this,c);if(this.innerCt){this.colgroupTpl.insertFirst(this.innerCt,{columns:this.columns})}return c},clearInnerCt:function(){if(Ext.isIE){var c=this.innerCt.dom;while(c.firstChild){c.removeChild(c.firstChild)}}else{Ext.ux.tree.TreeGrid.superclass.clearInnerCt.call(this)}},initEvents:function(){Ext.ux.tree.TreeGrid.superclass.initEvents.apply(this,arguments);this.mon(this.innerBody,"scroll",this.syncScroll,this);this.mon(this.innerHd,"click",this.handleHdDown,this);this.mon(this.mainHd,{scope:this,mouseover:this.handleHdOver,mouseout:this.handleHdOut})},onResize:function(d,e){Ext.ux.tree.TreeGrid.superclass.onResize.apply(this,arguments);var g=this.innerBody.dom;var j=this.innerHd.dom;if(!g){return}if(Ext.isNumber(e)){g.style.height=this.body.getHeight(true)-j.offsetHeight+"px"}if(Ext.isNumber(d)){var c=Ext.num(this.scrollOffset,Ext.getScrollBarWidth());if(this.reserveScrollOffset||((g.offsetWidth-g.clientWidth)>10)){this.setScrollOffset(c)}else{var f=this;setTimeout(function(){f.setScrollOffset(g.offsetWidth-g.clientWidth>10?c:0)},10)}}},updateColumnWidths:function(){var m=this.columns,p=m.length,d=this.outerCt.query("colgroup"),o=d.length,l,h,f,e;for(f=0;f<p;f++){l=m[f];for(e=0;e<o;e++){h=d[e];h.childNodes[f].style.width=(l.hidden?0:l.width)+"px"}}for(f=0,d=this.innerHd.query("td"),len=d.length;f<len;f++){l=Ext.fly(d[f]);if(m[f]&&m[f].hidden){l.addClass("x-treegrid-hd-hidden")}else{l.removeClass("x-treegrid-hd-hidden")}}var k=this.getTotalColumnWidth();Ext.fly(this.innerHd.dom.firstChild).setWidth(k+(this.scrollOffset||0));this.outerCt.select("table").setWidth(k);this.syncHeaderScroll()},getVisibleColumns:function(){var e=[],f=this.columns,c=f.length,d;for(d=0;d<c;d++){if(!f[d].hidden){e.push(f[d])}}return e},getTotalColumnWidth:function(){var f=0;for(var d=0,e=this.getVisibleColumns(),c=e.length;d<c;d++){f+=e[d].width}return f},setScrollOffset:function(c){this.scrollOffset=c;this.updateColumnWidths()},handleHdDown:function(l,h){var k=l.getTarget(".x-treegrid-hd");if(k&&Ext.fly(h).hasClass("x-grid3-hd-btn")){var f=this.hmenu.items,j=this.columns,d=this.findHeaderIndex(k),m=j[d],g=m.sortable;l.stopEvent();Ext.fly(k).addClass("x-grid3-hd-menu-open");this.hdCtxIndex=d;this.fireEvent("headerbuttonclick",f,m,k,d);this.hmenu.on("hide",function(){Ext.fly(k).removeClass("x-grid3-hd-menu-open")},this,{single:true});this.hmenu.show(h,"tl-bl?")}else{if(k){var d=this.findHeaderIndex(k);this.fireEvent("headerclick",this.columns[d],k,d)}}},handleHdOver:function(g,c){var f=g.getTarget(".x-treegrid-hd");if(f&&!this.headersDisabled){index=this.findHeaderIndex(f);this.activeHdRef=c;this.activeHdIndex=index;var d=Ext.get(f);this.activeHdRegion=d.getRegion();d.addClass("x-grid3-hd-over");this.activeHdBtn=d.child(".x-grid3-hd-btn");if(this.activeHdBtn){this.activeHdBtn.dom.style.height=(f.firstChild.offsetHeight-1)+"px"}}},handleHdOut:function(f,c){var d=f.getTarget(".x-treegrid-hd");if(d&&(!Ext.isIE||!f.within(d,true))){this.activeHdRef=null;Ext.fly(d).removeClass("x-grid3-hd-over");d.style.cursor=""}},findHeaderIndex:function(f){f=f.dom||f;var e=f.parentNode.childNodes;for(var d=0,g;g=e[d];d++){if(g==f){return d}}return -1},beforeColMenuShow:function(){var f=this.columns,e=f.length,d,g;this.colMenu.removeAll();for(d=1;d<e;d++){g=f[d];if(g.hideable!==false){this.colMenu.add(new Ext.menu.CheckItem({itemId:"col-"+d,text:g.header,checked:!g.hidden,hideOnClick:false,disabled:g.hideable===false}))}}},handleHdMenuClick:function(d){var c=this.hdCtxIndex,e=d.getItemId();if(this.fireEvent("headermenuclick",this.columns[c],e,c)!==false){c=e.substr(4);if(c>0&&this.columns[c]){this.setColumnVisible(c,!d.checked)}}return true},setColumnVisible:function(c,d){this.columns[c].hidden=!d;this.updateColumnWidths()},scrollToTop:function(){this.innerBody.dom.scrollTop=0;this.innerBody.dom.scrollLeft=0},syncScroll:function(){this.syncHeaderScroll();var c=this.innerBody.dom;this.fireEvent("bodyscroll",c.scrollLeft,c.scrollTop)},syncHeaderScroll:function(){var c=this.innerBody.dom;this.innerHd.dom.scrollLeft=c.scrollLeft;this.innerHd.dom.scrollLeft=c.scrollLeft},registerNode:function(c){Ext.ux.tree.TreeGrid.superclass.registerNode.call(this,c);if(!c.uiProvider&&!c.isRoot&&!c.ui.isTreeGridNodeUI){c.ui=new Ext.ux.tree.TreeGridNodeUI(c)}}});Ext.reg("treegrid",Ext.ux.tree.TreeGrid);Ext.override(Ext.ux.tree.TreeGrid,{onResize:function(d,f){Ext.ux.tree.TreeGrid.superclass.onResize.apply(this,arguments);var j=this.innerBody.dom;var k=this.innerHd.dom;if(!j){return}if(Ext.isNumber(f)){j.style.height=this.body.getHeight(true)-24+"px"}if(Ext.isNumber(d)){if(Ext.isIE&&!(Ext.isStrict&&Ext.isIE8)){var e=this.body.getWidth(true)+"px";j.style.width=e;k.style.width=e}var c=Ext.num(this.scrollOffset,Ext.getScrollBarWidth());if(this.reserveScrollOffset||((j.offsetWidth-j.clientWidth)>10)){this.setScrollOffset(c)}else{var g=this;setTimeout(function(){g.setScrollOffset(j.offsetWidth-j.clientWidth>10?c:0)},10)}}}});Ext.ux.DblClickCloseTabs=Ext.extend(Object,{init:function(c){this.panel=c;c.initEvents=c.initEvents.createSequence(this.initEvents,this)},initEvents:function(){this.panel.mon(this.panel.strip,{dblclick:this.onDblClick.createDelegate(this,[this.panel],0)});delete this.panel},onDblClick:function(c,d){if(c.getActiveTab().closable){c.remove(c.getActiveTab())}}});Ext.preg("dblclickclosetabs",Ext.ux.DblClickCloseTabs);Ext.util.md5=function(u,c,q,m){c=(typeof c==="undefined"?false:c);q=(typeof q==="undefined"?false:q);m=(typeof m==="undefined"?8:m);function k(r,w){var v=((r&65535)+(w&65535)),s=((r>>16)+(w>>16)+(v>>16));return(s<<16)|(v&65535)}function p(r,s){return(r<<s)|(r>>>(32-s))}function f(A,w,v,r,z,y){return k(p(k(k(w,A),k(r,y)),z),v)}function l(w,v,B,A,r,z,y){return f((v&B)|((~v)&A),w,v,r,z,y)}function e(w,v,B,A,r,z,y){return f((v&A)|(B&(~A)),w,v,r,z,y)}function o(w,v,B,A,r,z,y){return f(v^B^A,w,v,r,z,y)}function j(w,v,B,A,r,z,y){return f(B^(v|(~A)),w,v,r,z,y)}function h(E,z){var D=1732584193,C=-271733879,B=-1732584194,A=271733878,v,y,w,s,r;E[z>>5]|=128<<((z)%32);E[(((z+64)>>>9)<<4)+14]=z;for(v=0;v<E.length;v+=16){y=D;w=C;s=B;r=A;D=l(D,C,B,A,E[v+0],7,-680876936);A=l(A,D,C,B,E[v+1],12,-389564586);B=l(B,A,D,C,E[v+2],17,606105819);C=l(C,B,A,D,E[v+3],22,-1044525330);D=l(D,C,B,A,E[v+4],7,-176418897);A=l(A,D,C,B,E[v+5],12,1200080426);B=l(B,A,D,C,E[v+6],17,-1473231341);C=l(C,B,A,D,E[v+7],22,-45705983);D=l(D,C,B,A,E[v+8],7,1770035416);A=l(A,D,C,B,E[v+9],12,-1958414417);B=l(B,A,D,C,E[v+10],17,-42063);C=l(C,B,A,D,E[v+11],22,-1990404162);D=l(D,C,B,A,E[v+12],7,1804603682);A=l(A,D,C,B,E[v+13],12,-40341101);B=l(B,A,D,C,E[v+14],17,-1502002290);C=l(C,B,A,D,E[v+15],22,1236535329);D=e(D,C,B,A,E[v+1],5,-165796510);A=e(A,D,C,B,E[v+6],9,-1069501632);B=e(B,A,D,C,E[v+11],14,643717713);C=e(C,B,A,D,E[v+0],20,-373897302);D=e(D,C,B,A,E[v+5],5,-701558691);A=e(A,D,C,B,E[v+10],9,38016083);B=e(B,A,D,C,E[v+15],14,-660478335);C=e(C,B,A,D,E[v+4],20,-405537848);D=e(D,C,B,A,E[v+9],5,568446438);A=e(A,D,C,B,E[v+14],9,-1019803690);B=e(B,A,D,C,E[v+3],14,-187363961);C=e(C,B,A,D,E[v+8],20,1163531501);D=e(D,C,B,A,E[v+13],5,-1444681467);A=e(A,D,C,B,E[v+2],9,-51403784);B=e(B,A,D,C,E[v+7],14,1735328473);C=e(C,B,A,D,E[v+12],20,-1926607734);D=o(D,C,B,A,E[v+5],4,-378558);A=o(A,D,C,B,E[v+8],11,-2022574463);B=o(B,A,D,C,E[v+11],16,1839030562);C=o(C,B,A,D,E[v+14],23,-35309556);D=o(D,C,B,A,E[v+1],4,-1530992060);A=o(A,D,C,B,E[v+4],11,1272893353);B=o(B,A,D,C,E[v+7],16,-155497632);C=o(C,B,A,D,E[v+10],23,-1094730640);D=o(D,C,B,A,E[v+13],4,681279174);A=o(A,D,C,B,E[v+0],11,-358537222);B=o(B,A,D,C,E[v+3],16,-722521979);C=o(C,B,A,D,E[v+6],23,76029189);D=o(D,C,B,A,E[v+9],4,-640364487);A=o(A,D,C,B,E[v+12],11,-421815835);B=o(B,A,D,C,E[v+15],16,530742520);C=o(C,B,A,D,E[v+2],23,-995338651);D=j(D,C,B,A,E[v+0],6,-198630844);A=j(A,D,C,B,E[v+7],10,1126891415);B=j(B,A,D,C,E[v+14],15,-1416354905);C=j(C,B,A,D,E[v+5],21,-57434055);D=j(D,C,B,A,E[v+12],6,1700485571);A=j(A,D,C,B,E[v+3],10,-1894986606);B=j(B,A,D,C,E[v+10],15,-1051523);C=j(C,B,A,D,E[v+1],21,-2054922799);D=j(D,C,B,A,E[v+8],6,1873313359);A=j(A,D,C,B,E[v+15],10,-30611744);B=j(B,A,D,C,E[v+6],15,-1560198380);C=j(C,B,A,D,E[v+13],21,1309151649);D=j(D,C,B,A,E[v+4],6,-145523070);A=j(A,D,C,B,E[v+11],10,-1120210379);B=j(B,A,D,C,E[v+2],15,718787259);C=j(C,B,A,D,E[v+9],21,-343485551);D=k(D,y);C=k(C,w);B=k(B,s);A=k(A,r)}return[D,C,B,A]}function d(w){var v=[],r=((1<<m)-1),s;for(s=0;s<w.length*m;s+=m){v[s>>5]|=(w.charCodeAt(s/m)&r)<<(s%32)}return v}function g(v){var w="",r=((1<<m)-1),s;for(s=0;s<v.length*32;s+=m){w+=String.fromCharCode((v[s>>5]>>>(s%32))&r)}return w}function t(v){var s=((q)?"0123456789ABCDEF":"0123456789abcdef"),w="",r;for(r=0;r<v.length*4;r++){w+=s.charAt((v[r>>2]>>((r%4)*8+4))&15)+s.charAt((v[r>>2]>>((r%4)*8))&15)}return w}return(c?g(h(d(u),u.length*m)):t(h(d(u),u.length*m)))};Ext.ux.CodeMirror=Ext.extend(Ext.BoxComponent,{lineWrapping:false,previousLine:false,readOnly:false,originalContent:false,documentDurty:false,mode:(this.parser||"xml"),theme:(this.theme==="undefined")?"default":this.theme,initComponent:function(){this.initialized=false;Ext.ux.CodeMirror.superclass.initComponent.apply(this,arguments);this.theme=(Ext.isDefined(this.theme))?this.theme:"default";switch(this.mode){case"html":case"htm":this.mode="text/html";break;case"css":this.mode="text/css";break;case"php":this.mode="application/x-httpd-php";break;case"xml":case"ent":this.mode={name:"xml",alignCDATA:true};break;case"bat":this.mode="text/x-clojure";break;case"README":this.mode="text/x-rst";break;default:this.mode={name:"xmlpure"};break}this.addEvents("initialize");this.addEvents("codemodified");this.addEvents("coderestored");this.addEvents("cursormove");this.addEvents("scroll");this.ownerCt.on("resize",function(f,e,d){this.fireEvent("resize",this,e,d)},this);this.on({resize:function(e,d,c){this.resize(d,c)},afterrender:function(){var c=this;c.codeEditor=new CodeMirror(Ext.get(c.id),{theme:c.theme,readOnly:c.readOnly,mode:c.mode,lineNumbers:true,matchBrackets:true,lineWrapping:c.lineWrapping,indentUnit:1,tabMode:"indent",value:"",onScroll:function(){c.fireEvent("scroll",c.el.child(".CodeMirror-scroll").dom.scrollTop)},onKeyEvent:function(g,d){if(d.ctrlKey&&d.keyCode==83){d.preventDefault();c.onSave()}var f=g.getCursor();c.fireEvent("cursormove",f.line,f.ch)},onCursorActivity:function(e){var d=e.getCursor();if(c.previousLine!==false){e.setLineClass(c.previousLine,null)}c.previousLine=e.setLineClass(d.line,"cm2-activeline");c.fireEvent("cursormove",d.line,d.ch)},onChange:function(d){c.manageCodeChange()}});c.initialized=true;c.fireEvent("initialize",true)}})},focus:function(){if(this.initialized){return this.codeEditor.focus()}return this.initialConfig.value},getCursor:function(){return this.codeEditor.getCursor()},getLine:function(c){return this.codeEditor.getLine(c)},getValue:function(){if(this.initialized){return this.codeEditor.getValue()}return this.initialConfig.value},insertLine:function(d,e){var c=this.codeEditor.getLine(d);this.codeEditor.setLine(d,c+"\n"+e)},manageCodeChange:function(){var c=this.originalContent,d=this.getValue();btnUndo=Ext.getCmp(this.id+"-btn-undo");if(c){if(c===d){if(this.documentDurty===true){this.fireEvent("coderestored");this.documentDurty=false}}else{if(btnUndo){btnUndo.enable()}if(this.documentDurty===false){this.fireEvent("codemodified");this.documentDurty=true}}}},onSave:function(){var c=Ext.getCmp(this.id+"-btn-save");if(!c.disabled){c.handler.call(c.scope||c,c)}},redo:function(c,d){this.codeEditor.redo();Ext.getCmp(this.id+"-btn-undo").enable();if(this.codeEditor.historySize().redo==0){Ext.getCmp(this.id+"-btn-redo").disable()}},resize:function(f,c){var e=this.el,d=e.child(".CodeMirror-scroll");d.setHeight(c-89)},removeLine:function(c){return this.codeEditor.removeLine(c)},reIndentAll:function(){var d=this.codeEditor.lineCount(),c;for(c=0;c<d;c++){this.codeEditor.indentLine(c)}this.codeEditor.focus()},scrollTo:function(c){var d=this.el.child(".CodeMirror-scroll");d.dom.scrollTop=c},setOriginalContent:function(c){this.originalContent=c;this.documentDurty=false},setLine:function(c,d){this.codeEditor.setLine(c,d)},setOption:function(c,d){if(this.initialized){this.codeEditor.setOption(c,d)}},setValue:function(c){if(this.initialized){this.codeEditor.setValue(c);this.originalContent=c;this.codeEditor.clearHistory()}},switchTheme:function(c){this.codeEditor.setOption("theme",c)},undo:function(){this.codeEditor.undo();Ext.getCmp(this.id+"-btn-redo").enable();if(this.codeEditor.historySize().undo==0){Ext.getCmp(this.id+"-btn-undo").disable()}}});Ext.reg("codemirror",Ext.ux.CodeMirror);Ext.ns("Ext.ux.grid");Ext.ux.grid.GridSummary=function(c){Ext.apply(this,c)};Ext.extend(Ext.ux.grid.GridSummary,Ext.util.Observable,{init:function(d){this.grid=d;this.cm=d.getColumnModel();this.view=d.getView();var c=this.view;c.onLayout=this.onLayout;c.afterMethod("render",this.refreshSummary,this);c.afterMethod("refresh",this.refreshSummary,this);c.afterMethod("syncScroll",this.syncSummaryScroll,this);c.afterMethod("onColumnWidthUpdated",this.doWidth,this);c.afterMethod("onAllColumnWidthsUpdated",this.doAllWidths,this);c.afterMethod("onColumnHiddenUpdated",this.doHidden,this);d.store.on({add:this.refreshSummary,remove:this.refreshSummary,clear:this.refreshSummary,update:this.refreshSummary,scope:this});if(!this.rowTpl){this.rowTpl=new Ext.Template('<div class="x-grid3-summary-row x-grid3-gridsummary-row-offset">','<table class="x-grid3-summary-table" border="0" cellspacing="0" cellpadding="0" style="{tstyle}">',"<tbody><tr>{cells}</tr></tbody>","</table>","</div>");this.rowTpl.disableFormats=true}this.rowTpl.compile();if(!this.cellTpl){this.cellTpl=new Ext.Template('<td class="x-grid3-col x-grid3-cell x-grid3-td-{id} {css}" style="{style}">','<div class="x-grid3-cell-inner x-grid3-col-{id}" unselectable="on" {attr}>{value}</div>',"</td>");this.cellTpl.disableFormats=true}this.cellTpl.compile()},calculate:function(e,o){var g={},m=o.config,h,d,k,f,c,l,p;for(h=0,l=m.length;h<l;h++){d=m[h];k=d.dataIndex;g[k]=0;if(d.summaryType){for(f=0,p=e.length;f<p;f++){c=e[f];g[k]=Ext.ux.grid.GridSummary.Calculations[d.summaryType](c.get(k),c,k,g,f)}}}return g},onLayout:function(c,d){if(Ext.type(d)!=="number"){return}if(!this.grid.getGridEl().hasClass("x-grid-hide-gridsummary")){this.scroller.setHeight(d-this.summary.getHeight())}},syncSummaryScroll:function(){var c=this.view.scroller.dom;this.view.summaryWrap.dom.scrollLeft=c.scrollLeft;this.view.summaryWrap.dom.scrollLeft=c.scrollLeft},doWidth:function(e,c,d){var f=this.view.summary.dom;f.firstChild.style.width=d;f.firstChild.rows[0].childNodes[e].style.width=c},doAllWidths:function(c,d){var g=this.view.summary.dom,h=c.length,f,e;g.firstChild.style.width=d;f=g.firstChild.rows[0].childNodes;for(e=0;e<h;e++){f[e].style.width=c[e]}},doHidden:function(d,f,c){var e=this.view.summary.dom,g=f?"none":"";e.firstChild.style.width=c;e.firstChild.rows[0].childNodes[d].style.display=g},renderSummary:function(f,k,q){k=k||this.view.getColumnData();var l=q.config,g=[],r=k.length-1,m,e,d,h,j;for(h=0,j=k.length;h<j;h++){m=k[h];e=l[h];d={};d.id=m.id;d.style=m.style;d.css=h===0?"x-grid3-cell-first ":(h===r?"x-grid3-cell-last ":"");if(e.summaryType||e.summaryRenderer){d.value=(e.summaryRenderer||m.renderer)(f.data[m.name],d,f)}else{d.value=""}if(d.value===undefined||d.value===""){d.value=" "}g[g.length]=this.cellTpl.apply(d)}return this.rowTpl.apply({tstyle:"width:"+this.view.getTotalWidth()+";",cells:g.join("")})},refreshSummary:function(){var h=this.grid,k=h.store,f=this.view.getColumnData(),c=this.cm,d=k.getRange(),j=this.calculate(d,c),e=this.renderSummary({data:j},f,c);if(!this.view.summaryWrap){this.view.summaryWrap=Ext.DomHelper.insertAfter(this.view.scroller,{tag:"div",cls:"x-grid3-gridsummary-row-inner"},true)}this.view.summary=this.view.summaryWrap.update(e).first()},toggleSummary:function(d){var c=this.grid.getGridEl();if(c){if(d===undefined){d=c.hasClass("x-grid-hide-gridsummary")}c[d?"removeClass":"addClass"]("x-grid-hide-gridsummary");this.view.layout()}},getSummaryNode:function(){return this.view.summary}});Ext.reg("gridsummary",Ext.ux.grid.GridSummary);Ext.ux.grid.GridSummary.Calculations={sum:function(d,c,e,g,f){return g[e]+Ext.num(d,0)},count:function(d,c,e,g,f){return f+1},max:function(d,c,e,g,f){return Math.max(Ext.num(d,0),g[e])},min:function(d,c,e,g,f){return Math.min(Ext.num(d,0),g[e])},average:function(d,c,f,j,h){var e=j[f]+Ext.num(d,0),g=c.store.getCount();return h===g-1?(e/g):e}};Ext.ux.IFrameComponent=Ext.extend(Ext.BoxComponent,{onRender:function(d,c){d.mask('<img src="themes/img/loading.gif" style="vertical-align: middle;" /> '+_("Loading..."));var e=document.createElement("iframe"),f=function(g){d.unmask()};e.id=this.id;e.name=this.id;e.src=this.url;e.frameBorder=0;this.el=d.appendChild(e);if(Ext.isIE){document.frames[this.url].name=this.id}e[Ext.isIE?"onreadystatechange":"onload"]=f.createDelegate(e)}});Ext.ux.FixedMultiSelectionModel=Ext.extend(Ext.tree.MultiSelectionModel,{normalClick:false,init:function(c){this.tree=c;c.getTreeEl().on("keydown",this.onKeyDown,this);c.on("dblclick",this.onDoubleClick,this);c.on("click",this.onNodeClick,this)},onDrag:function(){this.normalClick=false},onNodeClick:function(c,d){if(d.shiftKey){d.preventDefault()}if(!this.tree.dragZone||!this.tree.dragZone.isMultiSelect){this.onMouseDown(c,d);this.onMouseUp(c,d)}},onMouseDown:function(c,d){if(c.isSelected()){if(d.ctrlKey){this.unselect(c);this.normalClick=false;return}this.normalClick=!d.shiftKey}else{this.select(c,d,d.ctrlKey);this.normalClick=false}},onMouseUp:function(c,d){if(this.normalClick){this.select(c,d,d.ctrlKey);this.normalClick=false}},onDoubleClick:function(){this.normalClick=false},compareNodeOrder:document.compareDocumentPosition?function(d,c){return 3-(d.ui.elNode.compareDocumentPosition(c.ui.elNode)&6)}:(typeof document.documentElement.sourceIndex!=="undefined"?function(d,c){return d.ui.elNode.sourceIndex-c.ui.elNode.sourceIndex}:function(f,e){if(f==e){return 0}var d=document.createRange();d.selectNode(a.ui.elNode);d.collapse(true);var c=document.createRange();c.selectNode(b.ui.elNode);c.collapse(true);return d.compareBoundaryPoints(Range.START_TO_END,c)}),sortSelNodes:function(){if(this.selNodes.length>1){if(!this.selNodes[0].ui.elNode){return}this.selNodes.sort(this.compareNodeOrder)}},selectNode:function(d,c){if(!this.isSelected(d)){this.selNodes.push(d);this.selMap[d.id]=d;d.ui.onSelectedChange(true)}},select:function(d,h,m){if(d instanceof Array){for(var j=0;j<d.length;j++){this.selectNode(d[j])}this.sortSelNodes();this.fireEvent("selectionchange",this,this.selNodes,this.lastSelNode);return d}if(h&&h.shiftKey&&this.selNodes.length>0){this.lastSelNode=this.lastSelNode||this.selNodes[0];var k=this.compareNodeOrder(this.lastSelNode,d)>0;this.clearSelections(true);var o=true;var f=false;var l=this.lastSelNode;do{for(var g=l;g!=null;g=(k?g.previousSibling:g.nextSibling)){f=f||(k&&(g==d||g.contains(d)));if(g.isExpanded()){g.cascade(function(c){if(o!=f){this.selectNode(c)}o=(o&&c!=d);return true},this)}else{this.selectNode(g);o=(g!=d)}if(!o){break}}if(!o){break}while((l=l.parentNode)!=null){if(k){this.selectNode(l)}o=(o&&l!=d);if(k&&l.previousSibling){l=l.previousSibling;break}if(!k&&l.nextSibling){l=l.nextSibling;break}}if(!o){break}}while(l!=null);this.selectNode(d);this.sortSelNodes();this.fireEvent("selectionchange",this,this.selNodes,d);h.preventDefault();return d}else{if(m!==true){this.clearSelections(true)}}if(this.isSelected(d)){if(m===true){this.unselect(d);if(this.lastSelNode===d){this.lastSelNode=this.selNodes[0]}return d}this.lastSelNode=d;return d}this.selectNode(d);this.sortSelNodes();this.lastSelNode=d;this.fireEvent("selectionchange",this,this.selNodes,this.lastSelNode);return d},getUniqueSelectedNodes:function(){var d=[];for(var f=0;f<this.selNodes.length;f++){var e=this.selNodes[f];d.push(e);while((f+1)<this.selNodes.length&&e.contains(this.selNodes[f+1])){f++}}return d},unselect:function(d,e){if(e){for(var f=this.selNodes.length-1;f>=0;f--){if(this.selNodes[f].isAncestor(d)){Ext.ux.FixedMultiSelectionModel.superclass.unselect.call(this,this.selNodes[f])}}}return Ext.ux.FixedMultiSelectionModel.superclass.unselect.call(this,d)},selectPrevious:function(e){var c=this.selNodes[0];if(!c){return null}var f=c.previousSibling;if(f){if(!f.isExpanded()||f.childNodes.length<1){return this.select(f,null,e)}else{var d=f.lastChild;while(d&&d.isExpanded()&&d.childNodes.length>0){d=d.lastChild}return this.select(d,null,e)}}else{if(c.parentNode&&(this.tree.rootVisible||!c.parentNode.isRoot)){return this.select(c.parentNode,null,e)}}return null},selectNext:function(e){var d=this.selNodes[this.selNodes.length-1];if(!d){return null}if(d.firstChild&&d.isExpanded()){return this.select(d.firstChild,null,e)}else{if(d.nextSibling){return this.select(d.nextSibling,null,e)}else{if(d.parentNode){var c=null;d.parentNode.bubble(function(){if(this.nextSibling){c=this.getOwnerTree().selModel.select(this.nextSibling,null,e);return false}});return c}}}return null},onKeyDown:function(f){var d=this.selNode||this.lastSelNode;var g=this;if(!d){return}var c=f.getKey();switch(c){case f.DOWN:f.stopEvent();this.selectNext(f.shiftKey||f.ctrlKey);break;case f.UP:f.stopEvent();this.selectPrevious(f.shiftKey||f.ctrlKey);break;case f.RIGHT:f.preventDefault();if(d.hasChildNodes()){if(!d.isExpanded()){d.expand()}else{if(d.firstChild){this.select(d.firstChild,f,f.shiftKey||f.ctrlKey)}}}break;case f.LEFT:f.preventDefault();if(d.hasChildNodes()&&d.isExpanded()){d.collapse()}else{if(d.parentNode&&(this.tree.rootVisible||d.parentNode!=this.tree.getRootNode())){this.select(d.parentNode,f,f.shiftKey||f.ctrlKey)}}break}}});Ext.ux.MultiSelectTreeDragZone=Ext.extend(Ext.tree.TreeDragZone,{isMultiSelect:true,onBeforeDrag:function(d,f){if(d.nodes&&d.nodes.length>0){for(var g=0;g<d.nodes.length;g++){n=d.nodes[g];if(n.draggable===false||n.disabled){return false}}return true}else{if(d.node){if(d.node.draggable===false||d.node.disabled){return false}}}return false},alignElWithMouse:function(d,f,e){Ext.ux.MultiSelectTreeDragZone.superclass.alignElWithMouse.apply(this,arguments);if(Ext.fly(d).isVisible()){var c=this.tree.getSelectionModel();if(c&&c.onDrag){c.onDrag.call(c)}}},onMouseUp:function(f){var c=this.tree.getSelectionModel();if(c&&c.onMouseUp){var d=Ext.dd.Registry.getHandleFromEvent(f);if(d!=null){c.onMouseUp.call(c,d.node,f)}}Ext.ux.MultiSelectTreeDragZone.superclass.onMouseUp.apply(this,arguments)},getDragData:function(p){var q=Ext.dd.Registry.getHandleFromEvent(p);if(q==null){return}var h=[];var l=this.tree.getSelectionModel();if(l.onMouseDown){l.onMouseDown.call(l,q.node,p);h=l.getUniqueSelectedNodes()}else{h=[q.node]}if(!h||h.length<1){return}var j={nodes:h};var f=document.createElement("ul");f.className="x-tree-node-ct x-tree-lines";var x=0;for(var k=0,m=h.length;k<m;k++){var v=h[k].ui.wrap.cloneNode(true);var u=h[k].ui.indentNode.childNodes.length+1;if(u>0){var w=Ext.query(h[k].ui.indentNode.nodeName+".x-tree-node-indent",v);for(var s=0,t=w.length;s<t;s++){var g=w[s];var o=g.childNodes.length;if(o<=u){g.innerHTML="";if(o<u){g.parentNode.removeChild(w[s].nextSibling)}}else{for(var d=0;d<u;d++){w[s].removeChild(w[s].firstChild)}}}}f.appendChild(v);Ext.fly(v).removeClass(["x-tree-selected","x-tree-node-over"])}j.ddel=f;return j},onInitDrag:function(d){var c=this.dragData;this.tree.eventModel.disable();this.proxy.update("");this.proxy.ghost.dom.appendChild(c.ddel);this.tree.fireEvent("startdrag",this.tree,c.nodes,d)},getTreeNode:function(){return this.dragData.nodes},getRepairXY:function(d,c){return c.nodes[0].ui.getDDRepairXY()},onEndDrag:function(c,d){this.tree.eventModel.enable.defer(100,this.tree.eventModel);this.tree.fireEvent("enddrag",this.tree,c.nodes||[c.node],d)},onValidDrop:function(c,d,f){this.tree.fireEvent("dragdrop",this.tree,this.dragData.nodes,c,d);this.hideProxy()},beforeInvalidDrop:function(c,f){var d=this.tree.getSelectionModel()}});Ext.ux.MultiSelectTreeDropZone=Ext.extend(Ext.tree.TreeDropZone,{isValidDropPoint:function(f,p,m,j,h){if(!f||!h){return false}var k=f.node;var d=h.nodes?h.nodes:[h.node];if(!(k&&k.isTarget&&p)){return false}if(p=="append"&&k.allowChildren===false){return false}if((p=="above"||p=="below")&&(k.parentNode&&k.parentNode.allowChildren===false)){return false}for(var l=0;l<d.length;l++){if(d[l]&&(k==d[l]||d[l].contains(k))){return false}}var g=this.dragOverData;g.tree=this.tree;g.target=k;g.data=h;g.point=p;g.source=m;g.rawEvent=j;g.dropNode=d;g.cancel=false;var o=this.tree.fireEvent("nodedragover",g);return g.cancel===false&&o!==false},getDropPoint:function(j,g,o,h){var p=g.node;if(p.isRoot){return this.isValidDropPoint(g,"append",o,j,h)?"append":false}var d=g.ddel;var r=Ext.lib.Dom.getY(d),l=r+d.offsetHeight;var k=Ext.lib.Event.getPageY(j);var m=p.allowChildren===false||p.isLeaf()||!this.isValidDropPoint(g,"append",o,j,h);if(!this.appendOnly&&p.parentNode.allowChildren!==false){var f=false;if(!this.allowParentInsert){f=p.hasChildNodes()&&p.isExpanded()}var c=(l-r)/(m?2:3);if(k>=r&&k<(r+c)&&this.isValidDropPoint(g,"above",o,j,h)){return"above"}else{if(!f&&(m||k>=l-c&&k<=l)&&this.isValidDropPoint(g,"below",o,j,h)){return"below"}}}return m?false:"append"},onNodeOver:function(d,k,j,h){var m=this.getDropPoint(j,d,k,h);var f=d.node;if(!this.expandProcId&&m=="append"&&f.hasChildNodes()&&!d.node.isExpanded()){this.queueExpand(f)}else{if(m!="append"){this.cancelExpand()}}var g=this.dropNotAllowed;if(m){var c=d.ddel;var l;if(m=="above"){g=d.node.isFirst()?"x-tree-drop-ok-above":"x-tree-drop-ok-between";l="x-tree-drag-insert-above"}else{if(m=="below"){g=d.node.isLast()?"x-tree-drop-ok-below":"x-tree-drop-ok-between";l="x-tree-drag-insert-below"}else{g="x-tree-drop-ok-append";l="x-tree-drag-append"}}if(this.lastInsertClass!=l){Ext.fly(c).replaceClass(this.lastInsertClass,l);this.lastInsertClass=l}}return g},onNodeDrop:function(f,m,h,g){var l=this.getDropPoint(h,f,m,g);var j=f.node;j.ui.startDrop();if(l===false){j.ui.endDrop();return false}var k=g.node||(m.getTreeNode?m.getTreeNode(g,j,l,h):null);var d={tree:this.tree,target:j,data:g,point:l,source:m,rawEvent:h,dropNode:k,cancel:!k,dropStatus:false};var c=this.tree.fireEvent("beforenodedrop",d);if(c===false||d.cancel===true||!d.dropNode){j.ui.endDrop();return d.dropStatus}j=d.target;if(l=="append"&&!j.isExpanded()){j.expand(false,null,function(){this.completeDrop(d)}.createDelegate(this))}else{this.completeDrop(d)}return true},afterRepair:function(f){if(f&&Ext.enableFx){var e=f.nodes?f.nodes:[f.node];for(var g=0,d=e.length;g<d;g++){e[g].ui.highlight()}}this.hideProxy()},onContainerDrop:function(c,k,h){if(this.allowContainerDrop&&this.isValidDropPoint({ddel:this.tree.getRootNode().ui.elNode,node:this.tree.getRootNode()},"append",c,k,h)){var j=this.tree.getRootNode();j.ui.startDrop();var f=h.node||(c.getTreeNode?c.getTreeNode(h,j,"append",k):null);var g={tree:this.tree,target:j,data:h,point:"append",source:c,rawEvent:k,dropNode:f,cancel:!f,dropStatus:false};var d=this.tree.fireEvent("beforenodedrop",g);if(d===false||g.cancel===true||!g.dropNode){j.ui.endDrop();return g.dropStatus}j=g.target;if(!j.isExpanded()){j.expand(false,null,function(){this.completeDrop(g)}.createDelegate(this))}else{this.completeDrop(g)}return true}return false},onContainerOver:function(c,f,d){if(this.allowContainerDrop&&this.isValidDropPoint({ddel:this.tree.getRootNode().ui.elNode,node:this.tree.getRootNode()},"append",c,f,d)){return this.dropAllowed}return this.dropNotAllowed}});Ext.ux.MultiSelectTreePanel=Ext.extend(Ext.tree.TreePanel,{getSelectionModel:function(){if(!this.selModel){this.selModel=new Ext.ux.FixedMultiSelectionModel()}return this.selModel},initEvents:function(){if((this.enableDD||this.enableDrop)&&!this.dropZone){this.dropZone=new Ext.ux.MultiSelectTreeDropZone(this,this.dropConfig||{ddGroup:this.ddGroup||"TreeDD",appendOnly:this.ddAppendOnly===true})}if((this.enableDD||this.enableDrag)&&!this.dragZone){this.dragZone=new Ext.ux.MultiSelectTreeDragZone(this,{ddGroup:this.ddGroup||"TreeDD",scroll:this.ddScroll})}Ext.ux.MultiSelectTreePanel.superclass.initEvents.apply(this,arguments);this.on("remove",function(c,d,e){c.getSelectionModel().unselect(e,true)})}});Ext.reg("multiselecttreepanel",Ext.ux.MultiSelectTreePanel);Ext.namespace("Ext.ux");Ext.ux.NotificationMgr={positions:[]};Ext.ux.Notification=Ext.extend(Ext.Window,{initComponent:function(){Ext.apply(this,{iconCls:this.iconCls||"x-icon-information",cls:"x-notification",width:250,autoHeight:true,draggable:false,bodyStyle:"text-align:center; padding: 10px;"});if(this.autoDestroy){this.task=new Ext.util.DelayedTask(this.close,this)}else{this.closable=true}Ext.ux.Notification.superclass.initComponent.call(this)},setMessage:function(c){this.body.update(c)},setTitle:function(d,c){Ext.ux.Notification.superclass.setTitle.call(this,d,c||this.iconCls)},onRender:function(d,c){Ext.ux.Notification.superclass.onRender.call(this,d,c)},onDestroy:function(){Ext.ux.NotificationMgr.positions.remove(this.pos);Ext.ux.Notification.superclass.onDestroy.call(this)},cancelHiding:function(){this.addClass("fixed");if(this.autoDestroy){this.task.cancel()}},afterShow:function(){Ext.ux.Notification.superclass.afterShow.call(this);Ext.fly(this.body.dom).on("click",this.cancelHiding,this);if(this.autoDestroy){this.task.delay(this.hideDelay||5000)}},animShow:function(){this.pos=0;while(Ext.ux.NotificationMgr.positions.indexOf(this.pos)>-1){this.pos++}Ext.ux.NotificationMgr.positions.push(this.pos);this.setSize(200,100);this.el.alignTo(document,"br-br",[-20,-20-((this.getSize().height+10)*this.pos)]);this.el.slideIn("b",{duration:1,callback:this.afterShow,scope:this})},animHide:function(){Ext.ux.NotificationMgr.positions.remove(this.pos);this.el.shadow.hide();this.el.ghost("b",{duration:1,remove:false,callback:function(){Ext.ux.NotificationMgr.positions.remove(this.pos);this.destroy()}.createDelegate(this)})},focus:Ext.emptyFn});Ext.ns("Ext.ux");Ext.ux.PanelCollapsedTitle=(function(){var c="x-panel-header-rotated";var e=!!document.implementation.hasFeature("http://www.w3.org/TR/SVG11/feature#BasicStructure","1.1");var d=function(){var k=((this.region=="east")||(this.region=="west"));var l="overflow: visible; padding: 0; border: none; background: none;";if(k&&e){this.collapsedHeader=this.ownerCt.layout[this.region].getCollapsedEl().createChild({tag:"div",style:"height: 100%; overflow: hidden;"});var j="http://www.w3.org/2000/svg";var h=document.createElementNS(j,"svg");this.collapsedHeader.dom.appendChild(h);h.setAttribute("width","100%");h.setAttribute("height","100%");var m=document.createElementNS(j,"text");m.setAttribute("x",6);m.setAttribute("y",1);m.setAttribute("transform","rotate(90 6 1)");m.setAttribute("class","x-panel-header "+c);h.appendChild(m);this.collapsedHeaderText=document.createTextNode(this.title);m.appendChild(this.collapsedHeaderText);var g=Ext.fly(m).getStyle("color");m.setAttribute("style",l+";fill: "+g+";")}else{var f="position: relative;";if(k){f+="white-space: nowrap; writing-mode: tb-rl; top: 1px; left: 3px;"}else{f+="top: 2px;";l+="padding-left: 4px; margin-right: 18px;"}this.collapsedHeader=this.ownerCt.layout[this.region].getCollapsedEl().createChild({tag:"div",style:l,cls:"x-panel-header "+c,html:'<span style="'+f+'">'+this.title+"</span>"});this.collapsedHeaderText=this.collapsedHeader.first()}if(this.collapsedIconCls){this.setCollapsedIconClass(this.collapsedIconCls)}};this.init=function(g){if(g.collapsible){var f=((g.region=="east")||(g.region=="west"));g.setTitle=Ext.Panel.prototype.setTitle.createSequence(function(h){if(this.rendered&&this.collapsedHeaderText){if(this.collapsedHeaderText.dom){this.collapsedHeaderText.dom.innerHTML=h}else{if(this.collapsedHeaderText.replaceData){this.collapsedHeaderText.nodeValue=h}}}});g.setCollapsedIconClass=function(j){var h=this.collapsedIconCls;this.collapsedIconCls=j;if(this.rendered&&this.collapsedHeader){var l=this.collapsedHeader,k=l.child("img.x-panel-inline-icon");if(k){if(this.collapsedIconCls){Ext.fly(k).replaceClass(h,this.collapsedIconCls)}else{Ext.fly(k).remove()}}else{if(this.collapsedIconCls){Ext.DomHelper.insertBefore(l.dom.firstChild,{tag:"img",src:Ext.BLANK_IMAGE_URL,cls:"x-panel-inline-icon "+this.collapsedIconCls,style:f?"display: block; margin: 1px 2px;":"margin-top: 2px; margin-right: 4px"})}}}};g.on("render",function(){if(this.ownerCt.rendered&&this.ownerCt.layout.hasLayout){d.call(g)}else{this.ownerCt.on("afterlayout",d,g,{single:true})}},g)}};return this})();Ext.ux.SlidingTabPanel=Ext.extend(Ext.TabPanel,{initTab:function(d,c){Ext.ux.SlidingTabPanel.superclass.initTab.call(this,d,c);this.addEvents({startDrag:true,endDrag:true});var e=this.getTemplateArgs(d);if(!this.slidingTabsID){this.slidingTabsID=Ext.id()}new Ext.ux.DDSlidingTab(e,this.slidingTabsID,{tabpanel:this})}});Ext.ux.DDSlidingTab=Ext.extend(Ext.dd.DDProxy,{constructor:function(){Ext.ux.DDSlidingTab.superclass.constructor.apply(this,arguments);this.setYConstraint(0,0,0);this.tabpanel=this.config.tabpanel;this.slideDuration=this.tabpanel.slideDuration;if(!this.slideDuration){this.slideDuration=0.1}},handleMouseDown:function(f,d){if(this.primaryButtonOnly&&f.button!=0){return}if(this.isLocked()){return}this.DDM.refreshCache(this.groups);var c=new Ext.lib.Point(Ext.lib.Event.getPageX(f),Ext.lib.Event.getPageY(f));if(!this.hasOuterHandles&&!this.DDM.isOverTarget(c,this)){}else{if(this.clickValidator(f)){this.setStartPosition();this.b4MouseDown(f);this.onMouseDown(f);this.DDM.handleMouseDown(f,this)}}},startDrag:function(c,k){this.tabpanel.fireEvent("startDrag",this.tabpanel,this.tabpanel.getActiveTab());Ext.dd.DDM.useCache=false;Ext.dd.DDM.mode=1;this.proxyWrapper=Ext.get(this.getDragEl());this.proxyWrapper.update();this.proxyWrapper.applyStyles("z-index:1001;border:0 none;");this.proxyWrapper.addClass("tab-proxy");this.stripWrap=this.proxyWrapper.insertHtml("afterBegin",'<div class="x-tab-strip x-tab-strip-top"></div>',true);this.dragEl=this.stripWrap.insertHtml("afterBegin","<div></div>",true);this.tab=Ext.get(this.getEl());this.tab.applyStyles("visibility:hidden;");this.dragEl.insertHtml("afterBegin",this.tab.dom.innerHTML,false);this.dragEl.dom.className=this.tab.dom.className;var j=this.tabpanel.el.getWidth();var g=this.tabpanel.el.getX();var h=this.tab.getX();var d=this.tab.getWidth();var f=h-g;var e=g+j-h-d;this.resetConstraints();this.setXConstraint(f,e)},onDragOver:function(f,j){f.stopEvent();var g=Ext.get(j[0].id);var l=g.getWidth();var k=g.getX();var h=k+(l/2);var d=this.tab.getX();var m=this.proxyWrapper.getX();var c=this.proxyWrapper.getWidth();if(m<k&&((m+c)>h)){if(g.next()!=this.tab){g.applyStyles("visibility:hidden;");this.tab.insertAfter(g);this.targetProxy=this.createSliderProxy(k,g);if(!this.targetProxy.hasActiveFx()){this.animateSliderProxy(g,this.targetProxy,d)}}}if(m>k&&(m<h)){if(this.tab.next()!=g){g.applyStyles("visibility:hidden;");this.tab.insertBefore(g);this.targetProxy=this.createSliderProxy(k,g);if(!this.targetProxy.hasActiveFx()){this.animateSliderProxy(g,this.targetProxy,d)}}}},animateSliderProxy:function(d,c,e){c.shift({x:e,easing:"easeOut",duration:this.slideDuration,callback:function(){c.remove();d.applyStyles("visibility:visible;")},scope:this})},createSliderProxy:function(d,f){var e=Ext.getBody().insertHtml("afterBegin",'<div class="tab-proxy" style="position:absolute;visibility:visible;z-index:999;left:'+d+'px;"></div>',true);e.stripWrapper=e.insertHtml("afterBegin",'<div class="x-tab-strip x-tab-strip-top"></div>',true);e.dragEl=e.stripWrapper.insertHtml("afterBegin","<div></div>",true);e.dragEl.update(f.dom.innerHTML);e.dragEl.dom.className=f.dom.className;var c=parseInt(f.getTop(false));e.setTop(c);return e},onDragDrop:function(d,c){d.stopEvent()},endDrag:function(c){var d=this.tab.getX();this.proxyWrapper.applyStyles("visibility:visible;");this.proxyWrapper.shift({x:d,easing:"easeOut",duration:this.slideDuration,callback:function(){this.proxyWrapper.applyStyles("visibility:hidden;");this.tab.applyStyles("visibility:visible;");this.stripWrap.remove();this.dragEl.remove();if(!this.targetProxy){return}this.targetProxy.stripWrapper.remove();this.targetProxy.dragEl.remove()},scope:this});Ext.dd.DDM.useCache=true;this.reorderTab();this.tabpanel.fireEvent("endDrag",this.tabpanel,this.tabpanel.getActiveTab())},reorderTab:function(){var e=this.tabpanel.header.child("ul").dom.children,c=[],f=[];for(var d=0;d<e.length;d++){if(e[d].id.substr(0,this.tabpanel.id.length)==this.tabpanel.id){c.push(e[d].id.substr((this.tabpanel.id.length+2),e[d].id.length))}}for(var d=0;d<this.tabpanel.items.items.length;d++){f[this.tabpanel.items.items[d].id]=this.tabpanel.items.items[d]}for(var d=0;d<c.length;d++){this.tabpanel.items.keys[d]=c[d];this.tabpanel.items.items[d]=f[c[d]]}}});Ext.ux.UserNotes=Ext.extend(Ext.Button,{originalTitle:_("Notes (<b>{0}</b>)"),text:String.format(_("Notes (<b>{0}</b>)"),"-"),initComponent:function(){Ext.ux.UserNotes.superclass.initComponent.apply(this);Ext.apply(this,{iconCls:"iconUserNotes",id:this.fid+"-userNotes",menu:new Ext.menu.Menu({showSeparator:false,allowOtherMenus:true,plain:true,autoHeight:true,forceLayout:true,enableScrolling:false,items:[{xtype:"grid",loadMask:true,width:500,height:200,contextMenuFrom:false,contextMenuRowIndex:false,sm:new Ext.grid.RowSelectionModel({singleSelect:true}),winNotes:new Ext.Window({scope:this,title:_("Add a new note"),iconCls:"iconUserNotes",closeAction:"hide",width:600,height:300,layout:"form",hideLabel:true,modal:true,items:[{xtype:"htmleditor",hideLabel:true,enableLinks:false,anchor:"100%"}],listeners:{show:function(c){c.items.items[0].setValue("")}},buttons:[{text:_("Add"),handler:function(){var e=this.ownerCt.ownerCt.scope,f=this.ownerCt.ownerCt;e.menu.show(e.el);var d=this.ownerCt.ownerCt.items.items[0].getValue();var c=e.file;XHR({scope:this,params:{task:"addUserNote",file:c,note:d},success:function(){f.hide();e.menu.items.items[0].store.reload();PhDOE.notify("info",_("Note added"),_("The note was added successfully !"))},failure:function(){PhDOE.winForbidden()}})}},{text:_("Cancel"),handler:function(){var c=this.ownerCt.ownerCt.scope;c.menu.show(c.el);this.ownerCt.ownerCt.hide()}}]}),contextMenu:new Ext.menu.Menu({scope:this,listeners:{show:function(c){if(this.scope.menu.items.items[0].contextMenuFrom==="containercontextmenu"){this.items.items[2].disable()}else{var d=this.scope.menu.items.items[0];var e=d.store.getAt(d.contextMenuRowIndex).data.user;if(PhDOE.userLogin==e){this.items.items[2].enable()}else{this.items.items[2].disable()}}if(PhDOE.userLogin=="anonymous"){this.items.items[0].disable();this.items.items[2].disable()}}},items:[{text:_("Add a new note"),iconCls:"iconUserNotes",handler:function(){var c=this.ownerCt.scope.menu.items.items[0];c.winNotes.show()}},"-",{text:_("Delete this note"),iconCls:"iconDelete",handler:function(){var d=this.ownerCt.scope.menu.items.items[0],c=d.store.getAt(d.contextMenuRowIndex).data.id;XHR({scope:this,params:{task:"delUserNote",noteID:c},success:function(e){var f=Ext.util.JSON.decode(e.responseText);d.store.reload();if(f.result){PhDOE.notify("info",_("Note deleted"),_("The note was deleted successfully !"))}},failure:function(){PhDOE.winForbidden()}})}},"-",{text:_("Reload data"),iconCls:"iconRefresh",handler:function(){var c=this.ownerCt.scope.menu.items.items[0];c.store.reload()}}]}),store:new Ext.data.Store({autoLoad:true,proxy:new Ext.data.HttpProxy({url:"./do/getUserNotes"}),baseParams:{file:this.file},reader:new Ext.data.JsonReader({root:"Items",totalProperty:"nbItems",idProperty:"id",fields:[{name:"id"},{name:"user"},{name:"note"},{name:"date",type:"date",dateFormat:"Y-m-d H:i:s"}]}),sortInfo:{field:"date",direction:"DESC"},listeners:{scope:this,datachanged:function(d){var c=d.getCount();this.setText(String.format(this.originalTitle,c))}}}),listeners:{scope:this,rowclick:function(c){if(!c.contextMenu.hidden){c.contextMenu.hide()}},containercontextmenu:function(d,f){f.stopEvent();d.getSelectionModel().clearSelections();d.contextMenuFrom="containercontextmenu";d.contextMenu.showAt(f.getXY());this.menu.show(this.el);var c=this.menu.el.zindex+2000;d.contextMenu.el.setStyle("z-index",c)},rowcontextmenu:function(d,g,f){f.stopEvent();d.getSelectionModel().selectRow(g);d.contextMenuFrom="rowcontextmenu";d.contextMenuRowIndex=g;d.contextMenu.showAt(f.getXY());this.menu.show(this.el);var c=this.menu.el.zindex+2000;d.contextMenu.el.setStyle("z-index",c)}},colModel:new Ext.grid.ColumnModel({defaults:{sortable:true},columns:[{id:"user",header:_("By"),sortable:true,dataIndex:"user"},{header:_("Date"),dataIndex:"date",renderer:Ext.util.Format.dateRenderer(_("Y-m-d, H:i"))}]}),autoExpandColumn:"user",viewConfig:{forceFit:true,deferEmptyText:false,emptyText:'<div style="text-align: center;">'+_("No user notes")+"<br><br>"+_("Right click to add a new note")+"</div>",enableRowBody:true,getRowClass:function(c,e,d){d.body='<p class="x-usernotes-content">'+c.data.note+"</p>";return"x-grid3-row-expanded"}}}]})})}});Ext.reg("usernotes",Ext.ux.UserNotes);Ext.namespace("ui","ui.task");ui.task.ChangeFileOwner=function(c){Ext.apply(this,c);var d=Ext.MessageBox.wait(_("Saving data..."));XHR({scope:this,params:{task:"setFileOwner",fileIdDB:this.fileIdDB,newOwnerID:this.newOwnerID},success:function(e){var f=Ext.util.JSON.decode(e.responseText);ui.cmp.WorkTreeGrid.getInstance().getRootNode().reload(function(){ui.cmp.PatchesTreeGrid.getInstance().getRootNode().reload()});ui.cmp.PortletInfo.getInstance().store.reload();d.hide();if(Ext.isDefined(this.fromType)&&this.fromType==="tab"){Ext.getCmp("main-panel").remove(this.from.curTab)}this.from.close();PhDOE.notify("info",_("Owner changed"),_("The owner for this file have been changed successfully !"))},failure:function(e){var f=Ext.util.JSON.decode(e.responseText);d.hide();PhDOE.winForbidden(f.type);if(Ext.isDefined(this.fromType)&&this.fromType==="tab"){Ext.getCmp("main-panel").remove(this.from.curTab)}this.from.close()}})};Ext.namespace("ui","ui.task","ui.task._CheckBuildTask");ui.task._CheckBuildTask.display=function(){XHR({params:{task:"getLogFile",file:"project_"+PhDOE.project+"_log_check_build_"+PhDOE.user.lang},success:function(c){var d=Ext.util.JSON.decode(c.responseText);Ext.getBody().unmask();ui.task.PingTask.getInstance().delay(30000);if(Ext.getCmp("main-panel").findById("check_build_panel_"+PhDOE.user.lang)){Ext.getCmp("main-panel").remove("check_build_panel_"+PhDOE.user.lang)}Ext.getCmp("main-panel").add({xtype:"panel",id:"check_build_panel_"+PhDOE.user.lang,title:String.format(_("Check build result for {0}"),Ext.util.Format.uppercase(PhDOE.user.lang)),tabTip:String.format(_("Check build result for the documentation {0}"),Ext.util.Format.uppercase(PhDOE.user.lang)),closable:true,autoScroll:true,iconCls:"iconCheckBuild",html:'<div class="check-build-content">'+d.mess+"</div>"});Ext.getCmp("main-panel").setActiveTab("check_build_panel_"+PhDOE.user.lang)}})};ui.task._CheckBuildTask.poll=new Ext.util.DelayedTask(function(){XHR({params:{task:"checkLockFile",lockFile:"project_"+PhDOE.project+"_lock_check_build_"+PhDOE.user.lang},success:function(){ui.task._CheckBuildTask.poll.delay(5000)},failure:function(c){var d=Ext.util.JSON.decode(c.responseText);if(d&&d.success===false){new ui.task._CheckBuildTask.display()}else{ui.task._CheckBuildTask.poll.delay(5000)}}})});ui.task.CheckBuildTask=function(){Ext.getBody().mask('<img src="themes/img/loading.gif" style="vertical-align: middle;" /> '+_("Please, wait until the build is checked..."));ui.task.PingTask.getInstance().cancel();XHR({params:{task:"checkBuild",xmlDetails:Ext.getCmp("option-xml-details").checked},success:function(){new ui.task._CheckBuildTask.display()},failure:function(c){var d=Ext.util.JSON.decode(c.responseText);if(d&&d.success===false){ui.task.PingTask.getInstance().delay(30000);Ext.getBody().unmask();PhDOE.winForbidden(d.type)}else{ui.task._CheckBuildTask.poll.delay(5000)}}})};Ext.namespace("ui","ui.task","ui.task._CheckEntitiesTask");ui.task._CheckEntitiesTask.display=function(){BtnViewResult=Ext.getCmp("btn-check-entities-view-last-result");Ext.getBody().unmask();ui.task.PingTask.getInstance().delay(30000);if(Ext.getCmp("main-panel").findById("tab-check-entities")){Ext.getCmp("main-panel").remove("tab-check-entities")}BtnViewResult.handler.call(BtnViewResult.scope||BtnViewResult,BtnViewResult)};ui.task._CheckEntitiesTask.poll=new Ext.util.DelayedTask(function(){XHR({params:{task:"checkLockFile",lockFile:"project_"+PhDOE.project+"_lock_check_entities"},success:function(){ui.task._CheckEntitiesTask.poll.delay(5000)},failure:function(c){var d=Ext.util.JSON.decode(c.responseText);if(d&&d.success===false){new ui.task._CheckEntitiesTask.display()}else{ui.task._CheckEntitiesTask.poll.delay(5000)}}})});ui.task.CheckEntitiesTask=function(){Ext.getBody().mask('<img src="themes/img/loading.gif" style="vertical-align: middle;" /> '+_("Please, wait until entities are checked..."));ui.task.PingTask.getInstance().cancel();XHR({params:{task:"checkEntities"},success:function(){new ui.task._CheckEntitiesTask.display()},failure:function(c){var d=Ext.util.JSON.decode(c.responseText);if(d&&d.success===false){ui.task.PingTask.getInstance().delay(30000);Ext.getBody().unmask();PhDOE.winForbidden()}else{ui.task._CheckEntitiesTask.poll.delay(5000)}}})};Ext.namespace("ui","ui.task");ui.task.CheckFileTask=function(c){Ext.apply(this,c);ui.task.PingTask.getInstance().cancel();Ext.getBody().mask('<img src="themes/img/loading.gif" style="vertical-align: middle;" /> '+_("Checking for error. Please, wait..."));XHR({scope:this,params:{task:"checkFileError",FilePath:this.fpath,FileName:this.fname,FileLang:this.lang,FileContent:Ext.getCmp(this.prefix+"-"+this.ftype+"-FILE-"+this.fid).getValue()},failure:function(){ui.task.PingTask.getInstance().delay(30000);Ext.getBody().unmask();Ext.MessageBox.alert(_("Error"),_("An error occured while checking this file for errors. Please, try again."))},success:function(d){ui.task.PingTask.getInstance().delay(30000);Ext.getBody().unmask();var e=Ext.util.JSON.decode(d.responseText);if(e.error&&e.error_first!=="-No error-"){Ext.getCmp("main-panel").add({id:"FE-help-"+this.fid,title:"Error in "+this.fname,iconCls:"iconFilesError",closable:true,autoScroll:true,autoLoad:"./error?dir="+this.fpath+"&file="+this.fname});Ext.getCmp("main-panel").setActiveTab("FE-help-"+this.fid)}else{Ext.MessageBox.show({title:_("Check for errors"),msg:_("There is no error."),buttons:Ext.MessageBox.OK,icon:Ext.MessageBox.INFO})}new ui.task.SaveFileTask({prefix:this.prefix,ftype:this.ftype,fid:this.fid,fpath:this.fpath,fname:this.fname,lang:this.lang,storeRecord:this.storeRecord});if(this.prefix==="FE"){Ext.getCmp("FE-error-desc-"+this.fid).body.updateManager.refresh()}ui.cmp.ErrorFileGrid.getInstance().store.reload()}})};Ext.namespace("ui","ui.task");ui.task.CheckXml=function(d){Ext.apply(this,d);var c=this.prefix+"-"+this.ftype,e=Ext.MessageBox.wait(_("XML check. Please, wait..."));XHR({scope:this,params:{task:"checkXml",fileContent:Ext.getCmp(this.idPrefix+"-FILE-"+this.fid).getValue()},success:function(f){var g=Ext.util.JSON.decode(f.responseText);e.hide();if(g.errors!=="no_error"){new ui.cmp.CheckXmlWin({errors:g.errors})}else{PhDOE.notify("info",_("XML check"),_("There is no error."))}},failure:function(f){var g=Ext.util.JSON.decode(f.responseText);e.hide()}})};Ext.namespace("ui","ui.task");ui.task.ClearLocalChangeTask=function(d){Ext.apply(this,d);var c=this.ftype,e=this.fpath,f=this.fname;goClear=function(){Ext.getBody().mask('<img src="themes/img/loading.gif" style="vertical-align: middle;" /> '+_("Please, wait..."));var g=["FNT","FNU","FE","FNR","FNIEN","AF"];for(var h=0;h<g.length;h++){if(Ext.getCmp("main-panel").findById(g[h]+"-"+Ext.util.md5(g[h]+"-"+e+f))){Ext.getCmp("main-panel").remove(g[h]+"-"+Ext.util.md5(g[h]+"-"+e+f))}}XHR({params:{task:"clearLocalChange",FileType:c,FilePath:e,FileName:f},success:function(k){var l=Ext.util.JSON.decode(k.responseText),j;ui.cmp.WorkTreeGrid.getInstance().delRecord(l.oldIdDB);ui.cmp.PatchesTreeGrid.getInstance().delRecord(l.oldIdDB);j=false;j=ui.cmp.RepositoryTree.getInstance().getNodeById("/"+e+f);if(j){j.getUI().removeClass(["fileModifiedByMe","fileModifiedByAnother"])}if(l.lang==="en"&&c==="update"){ui.cmp.StaleFileGrid.getInstance().store.each(function(m){if((m.data.path)==="/"+l.path&&m.data.name===l.name){m.set("fileModifiedEN",false);m.set("en_revision",l.revision);m.commit()}},this);ui.cmp.ErrorFileGrid.getInstance().store.each(function(m){if((PhDOE.user.lang+m.data.path)===e&&m.data.name===f){m.set("fileModifiedEN",false)}},this);Ext.getBody().unmask();return}ui.cmp.PendingTranslateGrid.getInstance().store.each(function(m){if((PhDOE.user.lang+m.data.path)===e&&m.data.name===f){m.set("fileModified",false);m.commit()}},this);ui.cmp.StaleFileGrid.getInstance().store.each(function(m){if((PhDOE.user.lang+m.data.path)===e&&m.data.name===f){m.set("fileModifiedLang",false);m.set("revision",l.revision);m.set("maintainer",l.maintainer);m.commit()}},this);ui.cmp.ErrorFileGrid.getInstance().store.each(function(m){if((PhDOE.user.lang+m.data.path)===e&&m.data.name===f){m.set("fileModifiedLang",false);m.commit()}},this);ui.cmp.PendingReviewGrid.getInstance().store.each(function(m){if((PhDOE.user.lang+m.data.path)===e&&m.data.name===f){m.set("fileModifiedLang",false);m.commit()}},this);ui.cmp.NotInENGrid.getInstance().store.each(function(m){if((PhDOE.user.lang+m.data.path)===e&&m.data.name===f){m.set("fileModified",false)}},this);Ext.getBody().unmask()},failure:function(j){Ext.getBody().unmask();var k=Ext.util.JSON.decode(j.responseText);if(k.err){PhDOE.winForbidden(k.err)}}})};if(Ext.isDefined(this.noConfirm)){goClear()}else{Ext.MessageBox.confirm(_("Confirm"),_("This action will clear your local modification and take back this file from his original stats.<br/>You need confirm."),function(g){if(g==="yes"){goClear()}},this)}};Ext.namespace("ui","ui.task");ui.task.DeletePatchTask=function(c){Ext.apply(this,c);Ext.getBody().mask('<img src="themes/img/loading.gif" style="vertical-align: middle;" /> '+_("Please, wait..."));XHR({scope:this,params:{task:"deletePatch",patchID:this.patchID},success:function(){Ext.getBody().unmask();ui.cmp.PatchesTreeGrid.getInstance().deletePatch(this.patchID);PhDOE.notify("info",_("Patch deleted"),_("The patch have been deleted !"))},failure:function(d){var e=Ext.util.JSON.decode(d.responseText);Ext.getBody().unmask();if(e.err){PhDOE.winForbidden(e.err)}else{PhDOE.winForbidden()}}})};Ext.namespace("ui","ui.task");ui.task.GetFileInfoByXmlID=function(c){Ext.apply(this,c);XHR({scope:this,params:{task:"getFileInfoByXmlID",xmlID:this.xmlID},success:function(d){var e=Ext.util.JSON.decode(d.responseText);ui.cmp.RepositoryTree.getInstance().openFile("byPath",e.lang+e.path,e.name)}})};Ext.namespace("ui","ui.task");ui.task.GetFileTask=function(d){Ext.apply(this,d);var c=this.prefix+"-"+this.ftype,f=(this.original)?true:false,e=(this.ftype==="GGTRANS")?true:false,g=(this.ftype==="NEW")?this.skeleton:false;Ext.get(c+"-PANEL-"+this.fid).mask('<img src="themes/img/loading.gif" style="vertical-align: middle;" /> '+_("Loading..."));XHR({scope:this,params:{task:"getFile",FilePath:this.fpath,FileName:this.fname,readOriginal:f,ggTranslate:e,skeleton:g},success:function(h){var k=Ext.util.JSON.decode(h.responseText),y="http://"+window.location.host+":"+window.location.port+window.location.pathname+"?perm=/"+this.fpath.split("/")[0]+"/"+k.xmlid.split("|")[0]+".php&project="+PhDOE.project,s='<a href="'+y+'" target="_blank"><img src="themes/img/anchor.png" alt="permlink" style="vertical-align: middle;" ext:qtip="'+_("Permanent link to this page")+'" /></a> ',j=Ext.getCmp(c+"-PANEL-"+this.fid),w=Ext.get(c+"-PANEL-"+this.fid),v=Ext.getCmp(c+"-FILE-"+this.fid),q=(k.fileModified)?Ext.util.JSON.decode(k.fileModified):false,t,u;w.unmask();if(this.prefix==="PP"||this.ftype==="TRANS"||this.prefix==="FNIEN"){j.permlink=""}else{if(this.ftype==="GGTRANS"){j.setTitle(j.originTitle);j.setIconClass("iconGoogle")}else{j.permlink=(k.xmlid!=="NULL")?s:"";j.setTitle(j.permlink+j.originTitle)}}v.setValue(k.content);if(this.ftype==="GGTRANS"){v.reIndentAll()}if(k.warn_tab&&!this.freadOnly){Ext.MessageBox.show({title:_("Warning"),msg:String.format(_("The file <b> {0}</b> contains some tab characters.<br>The editor have replace it with space characters."),this.fpath+this.fname),buttons:Ext.MessageBox.OK,icon:Ext.MessageBox.WARNING});v.manageCodeChange()}if(k.warn_encoding&&!this.freadOnly){Ext.MessageBox.show({title:_("Warning"),msg:String.format(_("The editor have modified automatically the file {0} into UTF-8 encoding."),this.fpath+this.fname),buttons:Ext.MessageBox.OK,icon:Ext.MessageBox.WARNING});v.setLine(1,'<?xml version="1.0" encoding="utf-8"?>');Ext.getCmp(c+"-FILE-"+this.fid+"-btn-save").enable()}if(this.prefix==="FNT"||this.prefix==="FNIEN"){t="fileModified"}if(this.prefix==="FNU"){t=(this.ftype==="LANG")?"fileModifiedLang":"fileModifiedEN"}if(this.prefix==="FE"){t=(this.ftype==="LANG")?"fileModifiedLang":"fileModifiedEN"}if(this.prefix==="FNR"){t=(this.ftype==="LANG")?"fileModifiedLang":"fileModifiedEN"}if(k.fileModified&&this.prefix!=="AF"&&!f){this.storeRecord.set(t,k.fileModified);this.storeRecord.commit()}if(this.prefix==="AF"){this.storeRecord.data={};this.storeRecord.data.fileModified=false;if(k.fileModified){this.storeRecord.data.fileModified=k.fileModified}}if(k.fileModified&&!f&&(PhDOE.user.userID!==q.userID)){if(!q.haveKarma&&PhDOE.user.haveKarma&&q.fromModule==="workInProgress"){Ext.MessageBox.show({title:_("Information"),msg:String.format(_("File modified by {0} (anonymous user) but you are an authenticated user, so you can modify it."),q.user),buttons:Ext.MessageBox.OK,icon:Ext.MessageBox.INFO})}else{if(!q.haveKarma&&PhDOE.user.haveKarma&&q.fromModule==="PatchesForReview"){new ui.cmp.AnonymousPatchWin({fidDB:q.fidDB,fid:this.fid,prefix:this.prefix,ftype:q.ftype,fpath:this.fpath,fname:this.fname,curTab:Ext.getCmp(this.prefix+"-"+this.fid)})}else{if(!this.freadOnly){Ext.getCmp(c+"-FILE-"+this.fid+"-grp-save").disable();Ext.getCmp(c+"-FILE-"+this.fid+"-grp-undoRedo").disable();Ext.getCmp(c+"-FILE-"+this.fid+"-grp-tools").disable()}u=Ext.MessageBox.show({title:_("Information"),msg:String.format(_("File modified by {0}."),q.user),buttons:Ext.MessageBox.OK,icon:Ext.MessageBox.INFO});u.getDialog().mask.resize(w.getSize().width,w.getSize().height);u.getDialog().mask.alignTo(w.dom,"tl")}}}else{if(c=="FNT-TRANS"){var x=new RegExp("<!-- EN-Revision:"),l=x.exec(k.content);if(l==null){if(Ext.isEmpty(v.getLine(1))){v.removeLine(1)}v.setLine(1,"<!-- $Revision: $ -->");v.insertLine(1,"<!-- EN-Revision: "+k.originalRev+" Maintainer: "+PhDOE.user.login+" Status: ready -->");v.insertLine(2,"<!-- Reviewed: no -->");if(!Ext.isEmpty(v.getLine(4))){v.insertLine(3,"")}v.manageCodeChange()}}}},callback:function(){var h=Ext.getCmp(this.prefix+"-"+this.fid);if(this.prefix==="FNT"){if(this.ftype==="TRANS"){h.panTRANSLoaded=true}if(this.ftype==="GGTRANS"||this.ftype==="EN"){h.panTRANSSecondLoaded=true}}if(this.prefix==="FNU"){if(this.ftype==="LANG"){h.panLANGLoaded=true}if(this.ftype==="EN"){h.panENLoaded=true}}if(this.prefix==="FE"){if(this.ftype==="LANG"){h.panLANGLoaded=true}if(this.ftype==="EN"){h.panENLoaded=true}}if(this.prefix==="FNR"){if(this.ftype==="LANG"){h.panLANGLoaded=true}if(this.ftype==="EN"){h.panENLoaded=true}}if(this.prefix==="FNIEN"){h.panLANGLoaded=true}if(this.prefix==="AF"){h.panLoaded=true}Ext.getCmp("main-panel").fireEvent("tabLoaded",this.prefix,this.fid)}})};Ext.namespace("ui","ui.task");ui.task.GetGGTranslation=function(c){Ext.apply(this,c);Ext.get("GGTranslate-result").dom.innerHTML="";Ext.getCmp("GGTranslate-btn").disable();Ext.getCmp("GGTranslate-btn").setText(_("Please, wait..."));XHR({scope:this,params:{task:"getGGTranslation",str:this.str},success:function(d){var e=Ext.util.JSON.decode(d.responseText);Ext.get("GGTranslate-result").dom.innerHTML=Ext.util.Format.htmlEncode(e.translation);Ext.getCmp("GGTranslate-btn").setText(_("Translate !"));Ext.getCmp("GGTranslate-btn").enable()}})};Ext.namespace("ui","ui.task");ui.task.LoadConfigTask=function(c){Ext.apply(this,c);XHR({params:{task:"getConf"},success:function(d){var e=Ext.decode(d.responseText);PhDOE.user.login=e.mess.userLogin;PhDOE.user.userID=e.mess.userID;PhDOE.user.lang=e.mess.userLang;PhDOE.user.authService=e.mess.authService;PhDOE.user.authServiceID=e.mess.authServiceID;PhDOE.user.isAnonymous=e.mess.userIsAnonymous;PhDOE.user.haveKarma=e.mess.userHaveKarma;PhDOE.user.isGlobalAdmin=e.mess.userIsGlobalAdmin;PhDOE.user.isLangAdmin=e.mess.userIsLangAdmin;PhDOE.user.conf=e.mess.userConf;PhDOE.user.anonymousIdent=e.mess.userAnonymousIdent;PhDOE.project=e.mess.project;PhDOE.app.conf=e.mess.appConf;if(e.mess.topicInfo&&e.mess.topicInfo.lang){PhDOE.topic.lang.author=e.mess.topicInfo.lang.author;PhDOE.topic.lang.content=e.mess.topicInfo.lang.content;PhDOE.topic.lang.topicDate=Date.parseDate(e.mess.topicInfo.lang.topicDate,"Y-m-d H:i:s");PhDOE.topic.lang.topicDate=PhDOE.topic.lang.topicDate.format(_("Y-m-d, H:i"))}if(e.mess.topicInfo&&e.mess.topicInfo.global){PhDOE.topic.global.author=e.mess.topicInfo.global.author;PhDOE.topic.global.content=e.mess.topicInfo.global.content;PhDOE.topic.global.topicDate=Date.parseDate(e.mess.topicInfo.global.topicDate,"Y-m-d H:i:s");PhDOE.topic.global.topicDate=PhDOE.topic.global.topicDate.format(_("Y-m-d, H:i"))}Ext.get("appTheme").dom.href=PhDOE.user.conf.main.theme;PhDOE.drawInterface()}})};Ext.namespace("ui","ui.task");ui.task.MarkDeleteTask=function(c){Ext.apply(this,c);Ext.MessageBox.confirm(_("Confirm"),_("This action will mark this file as need deleted.<br/><br/>You need commit this change to take it effect.<br/><br/>Please, confirm this action."),function(d){if(d==="yes"){Ext.getBody().mask('<img src="themes/img/loading.gif" style="vertical-align: middle;" /> '+_("Please, wait..."));XHR({scope:this,params:{task:"markAsNeedDelete",FilePath:PhDOE.user.lang+this.fpath,FileName:this.fname},success:function(e){var f=Ext.util.JSON.decode(e.responseText);Ext.getBody().unmask();ui.cmp.WorkTreeGrid.getInstance().addRecord(f.id,PhDOE.user.lang+this.fpath,this.fname,"delete");this.storeRecord.set("fileModified",'{"user":"'+PhDOE.user.login+'", "anonymousIdent":"'+PhDOE.user.anonymousIdent+'"}')}})}},this)};Ext.namespace("ui","ui.task");ui.task.MoveToPatch=function(c){Ext.apply(this,c);var d=[];Ext.each(this.nodesToAdd,function(e){d.push(e.attributes.idDB)});Ext.getBody().mask('<img src="themes/img/loading.gif" style="vertical-align: middle;" /> '+_("Please, wait..."));XHR({scope:this,params:{task:"moveToPatch",patchID:this.patchID,filesID:d.join(",")},success:function(){Ext.getBody().unmask();ui.cmp.PatchesTreeGrid.getInstance().addToPatch(this.patchID,this.patchName,this.nodesToAdd,this.patchDescription,this.patchEmail);if(this.nodesToAdd){Ext.each(this.nodesToAdd,function(e){ui.cmp.WorkTreeGrid.getInstance().delRecord(e.attributes.idDB)})}},failure:function(e){var f=Ext.util.JSON.decode(e.responseText);Ext.getBody().unmask();Ext.MessageBox.alert("Error",f.err)}})};Ext.namespace("ui","ui.task");ui.task.MoveToWork=function(c){Ext.apply(this,c);var d=[];Ext.each(this.nodesToAdd,function(e){d.push(e.attributes.idDB)});Ext.getBody().mask('<img src="themes/img/loading.gif" style="vertical-align: middle;" /> '+_("Please, wait..."));XHR({scope:this,params:{task:"moveToWork",filesID:d.join(",")},success:function(){Ext.getBody().unmask();ui.cmp.WorkTreeGrid.getInstance().addToWork(this.nodesToAdd);if(this.nodesToAdd){Ext.each(this.nodesToAdd,function(e){ui.cmp.PatchesTreeGrid.getInstance().delRecord(e.attributes.idDB)})}},failure:function(e){var f=Ext.util.JSON.decode(e.responseText);Ext.getBody().unmask();Ext.MessageBox.alert("Error",f.err)}})};Ext.namespace("ui","ui.task","ui.task._PingTask");ui.task.PingTask=function(){this.task=new Ext.util.DelayedTask(function(){XHR({scope:this,params:{task:"ping"},success:function(d){var e=Ext.util.JSON.decode(d.responseText),c;if(e.ping!=="pong"){this.onPingFailed()}else{if(PhDOE.user.lang!=="en"){c=false;if(ui.cmp.PendingTranslateGrid.getInstance().store.getTotalCount()!==e.totalData.NbPendingTranslate){ui.cmp.PendingTranslateGrid.getInstance().store.reload();c=true}if(ui.cmp.StaleFileGrid.getInstance().store.getTotalCount()!==e.totalData.NbPendingUpdate){ui.cmp.StaleFileGrid.getInstance().store.reload();c=true}if(ui.cmp.ErrorFileGrid.getInstance().store.getTotalCount()!==e.totalData.NbFilesError){ui.cmp.ErrorFileGrid.getInstance().store.reload();c=true}if(ui.cmp.PendingReviewGrid.getInstance().store.getTotalCount()!==e.totalData.NbPendingReview){ui.cmp.PendingReviewGrid.getInstance().store.reload();c=true}if(ui.cmp.NotInENGrid.getInstance().store.getTotalCount()!==e.totalData.NbNotInEn){ui.cmp.NotInENGrid.getInstance().store.reload();c=true}if(c){ui.cmp.PortletSummary.getInstance().store.reload()}}if(e.totalData.lastInfoDate!==PhDOE.lastInfoDate){ui.cmp.PortletInfo.getInstance().store.reload()}if(e.totalData.topicInfo){e.totalData.topicInfo.topicDate=Date.parseDate(e.totalData.topicInfo.topicDate,"Y-m-d H:i:s");e.totalData.topicInfo.topicDate=e.totalData.topicInfo.topicDate.format(_("Y-m-d, H:i"));if(e.totalData.topicInfo.topicDate!=PhDOE.topic.topicDate){PhDOE.topic.author=e.totalData.topicInfo.author;PhDOE.topic.content=e.totalData.topicInfo.content;PhDOE.topic.topicDate=e.totalData.topicInfo.topicDate;PhDOE.setTopic()}}}},failure:function(){this.onPingFailed()}});this.task.delay(30000)},this)};ui.task.PingTask.prototype.delay=function(d,f,e,c){this.task.delay(d,f,e,c)};ui.task.PingTask.prototype.cancel=function(){this.task.cancel()};ui.task.PingTask.prototype.onPingFailed=function(){this.cancel();var d=new Ext.ux.Notification({iconCls:"iconError",title:_("Connection lost"),html:String.format(_("Retrying in {0} second(s)."),"30"),autoDestroy:false});d.show(document);this.delay(30000);var e=29;var c=new Ext.util.DelayedTask(function(){if(e>0){d.setMessage(String.format(_("Retrying in {0} second(s)."),e));e-=1;c.delay(1000)}else{if(e==0){d.animHide()}}});c.delay(1000)};ui.task._PingTask.instance=null;ui.task.PingTask.getInstance=function(){if(!ui.task._PingTask.instance){ui.task._PingTask.instance=new ui.task.PingTask()}return ui.task._PingTask.instance};Ext.namespace("ui","ui.task");ui.task.SaveFileTask=function(d){Ext.apply(this,d);var c=this.prefix+"-"+this.ftype,e=Ext.MessageBox.wait(_("Saving data...")),f=Ext.getCmp(this.prefix+"-"+this.ftype+"-FILE-"+this.fid).getValue();XHR({scope:this,params:{task:"saveFile",filePath:this.fpath,fileName:this.fname,fileLang:this.lang,fileContent:f},success:function(h){var j=Ext.util.JSON.decode(h.responseText);if(this.prefix==="FNU"){if(this.ftype==="EN"){this.storeRecord.set("en_revision",j.revision);this.storeRecord.set("fileModifiedEN",'{"user":"'+PhDOE.user.login+'", "anonymousIdent":"'+PhDOE.user.anonymousIdent+'"}')}else{this.storeRecord.set("revision",j.en_revision);this.storeRecord.set("fileModifiedLang",'{"user":"'+PhDOE.user.login+'", "anonymousIdent":"'+PhDOE.user.anonymousIdent+'"}');this.storeRecord.set("maintainer",j.maintainer)}this.storeRecord.commit()}if(this.prefix==="FE"){if(this.ftype==="EN"){this.storeRecord.set("fileModifiedEN",'{"user":"'+PhDOE.user.login+'", "anonymousIdent":"'+PhDOE.user.anonymousIdent+'"}');this.storeRecord.commit()}else{this.storeRecord.set("maintainer",j.maintainer);this.storeRecord.set("fileModifiedLang",'{"user":"'+PhDOE.user.login+'", "anonymousIdent":"'+PhDOE.user.anonymousIdent+'"}');this.storeRecord.commit()}}if(this.prefix==="FNR"){if(this.ftype==="EN"){this.storeRecord.set("reviewed",j.reviewed);this.storeRecord.set("fileModifiedEN",'{"user":"'+PhDOE.user.login+'", "anonymousIdent":"'+PhDOE.user.anonymousIdent+'"}');this.storeRecord.commit()}else{this.storeRecord.set("reviewed",j.reviewed);this.storeRecord.set("maintainer",j.reviewed_maintainer);this.storeRecord.set("fileModifiedLang",'{"user":"'+PhDOE.user.login+'", "anonymousIdent":"'+PhDOE.user.anonymousIdent+'"}');this.storeRecord.commit()}}if(this.prefix==="AF"){this.storeRecord.getUI().addClass("fileModifiedByMe")}Ext.getCmp(this.prefix+"-"+this.ftype+"-FILE-"+this.fid).setOriginalContent(f);ui.cmp.WorkTreeGrid.getInstance().delRecord(j.id);ui.cmp.PatchesTreeGrid.getInstance().delRecord(j.id);ui.cmp.WorkTreeGrid.getInstance().addRecord(j.id,this.lang+this.fpath,this.fname,"update");Ext.getCmp(c+"-FILE-"+this.fid+"-btn-save").disable();Ext.getCmp(c+"-FILE-"+this.fid).isModified=false;Ext.getCmp(c+"-PANEL-"+this.fid).setTitle(Ext.getCmp(c+"-PANEL-"+this.fid).permlink+Ext.getCmp(c+"-PANEL-"+this.fid).originTitle);var g;if(this.lang==="en"){g=Ext.getCmp(this.prefix+"-LANG-FILE-"+this.fid)}else{g=Ext.getCmp(this.prefix+"-EN-FILE-"+this.fid)}if(this.ftype==="ALL"||!g.isModified){Ext.getCmp(this.prefix+"-"+this.fid).setTitle(Ext.getCmp(this.prefix+"-"+this.fid).originTitle)}e.hide();PhDOE.notify("info",_("Document saved"),String.format(_("Document <br><br><b>{0}</b><br><br> was saved successfully !"),this.lang+this.fpath+this.fname))},failure:function(g){var h=Ext.util.JSON.decode(g.responseText);e.hide();if(h.XmlError&&h.XmlError!="no_error"){Ext.MessageBox.alert(_("XML Errors"),_("There is somes XML's errors.<br /><br />You must fix it before saving this file.<br /><br />Valid this window to show this errors."),function(){new ui.cmp.CheckXmlWin({errors:h.XmlError})})}if(h.type){PhDOE.winForbidden(h.type)}}})};Ext.namespace("ui","ui.task");ui.task.SaveTransFileTask=function(d){Ext.apply(this,d);var c=this.prefix+"-"+this.ftype,e=Ext.MessageBox.wait(_("Saving data...")),f=Ext.getCmp(this.prefix+"-"+this.ftype+"-FILE-"+this.fid).getValue();XHR({scope:this,params:{task:"saveFile",type:"trans",filePath:this.fpath,fileName:this.fname,fileLang:this.lang,fileContent:f},success:function(g){var h=Ext.util.JSON.decode(g.responseText);if(this.ftype!="NEW"){this.storeRecord.set("fileModified",'{"user":"'+PhDOE.user.login+'", "anonymousIdent":"'+PhDOE.user.anonymousIdent+'"}');this.storeRecord.commit()}else{this.storeRecord.data.node.reload()}Ext.getCmp(this.prefix+"-"+this.ftype+"-FILE-"+this.fid).setOriginalContent(f);ui.cmp.WorkTreeGrid.getInstance().addRecord(h.id,this.lang+this.fpath,this.fname,"new");Ext.getCmp(c+"-FILE-"+this.fid+"-btn-save").disable();Ext.getCmp(c+"-FILE-"+this.fid).isModified=false;Ext.getCmp(c+"-PANEL-"+this.fid).setTitle(Ext.getCmp(c+"-PANEL-"+this.fid).originTitle);Ext.getCmp(this.prefix+"-"+this.fid).setTitle(Ext.getCmp(this.prefix+"-"+this.fid).originTitle);e.hide();PhDOE.notify("info",_("Document saved"),String.format(_("Document <br><br><b>{0}</b><br><br> was saved successfully !"),this.lang+this.fpath+this.fname))},failure:function(g){var h=Ext.util.JSON.decode(g.responseText);e.hide();if(h.XmlError&&h.XmlError!="no_error"){Ext.MessageBox.alert(_("XML Errors"),_("There is somes XML's errors.<br /><br />You must fix it before saving this file.<br /><br />Valid this window to show this errors."),function(){new ui.cmp.CheckXmlWin({errors:h.XmlError})})}if(h.type){PhDOE.winForbidden(h.type)}}})};Ext.namespace("ui","ui.task");ui.task.SetFileProgressTask=function(c){Ext.apply(this,c);XHR({scope:this,params:{task:"SetFileProgress",idDB:this.idDB,progress:this.progress},failure:function(d){var e=Ext.util.JSON.decode(d.responseText),f;if(e.err){if(e.err=="file_dont_exist_in_workInProgress"){f=_("The file you want to change the estimated progress don't exist into the database.")}if(e.err=="file_isnt_owned_by_current_user"){f=_("The file you want to change the estimated progress isn't own by you.<br>You only can modify this information for yours files.")}}if(f){PhDOE.notify("error",_("Error"),f)}}})};Ext.namespace("ui","ui.task");ui.task.setTopicTask=function(c){Ext.apply(this,c);var d=this.isLang;XHR({scope:this,params:{task:"setTopic",content:this.content,lang:d?"lang":"global"},success:function(f){var g=Ext.util.JSON.decode(f.responseText),e=PhDOE.topic[d?"lang":"global"];e.author=g.author;e.content=g.content;e.topicDate=Date.parseDate(g.topicDate,"Y-m-d H:i:s");e.topicDate=e.topicDate.format(_("Y-m-d, H:i"));PhDOE.setTopic(d)}})};Ext.namespace("ui","ui.task","ui.task._SystemUpdateTask");ui.task._SystemUpdateTask.refresh_ui=function(){Ext.get("wizard-step-3").replaceClass("wizard-step-before","wizard-step-working");PhDOE.reloadAllStore();Ext.get("wizard-step-3").replaceClass("wizard-step-working","wizard-step-done");Ext.getCmp("btn-start-refresh").setIconClass("iconFinishRefresh");Ext.getCmp("btn-start-refresh").setText(_("Finish !"));Ext.getCmp("btn-start-refresh").setHandler(function(){Ext.getCmp("sys-update-win").close()});Ext.getCmp("btn-start-refresh").enable();ui.task.PingTask.getInstance().delay(30000);Ext.getCmp("sys-update-win").tools.close.setVisible(true)};ui.task._SystemUpdateTask.poll_apply_tool=new Ext.util.DelayedTask(function(){XHR({params:{task:"checkLockFile",lockFile:"project_"+PhDOE.project+"_lock_apply_tools"},success:function(){ui.task._SystemUpdateTask.poll_apply_tool.delay(5000)},failure:function(c){var d=Ext.util.JSON.decode(c.responseText);if(d&&d.success===false){Ext.get("wizard-step-2").replaceClass("wizard-step-working","wizard-step-done");new ui.task._SystemUpdateTask.refresh_ui()}else{ui.task._SystemUpdateTask.poll_apply_tool.delay(5000)}}})});ui.task._SystemUpdateTask.apply_tool=function(){Ext.get("wizard-step-2").replaceClass("wizard-step-before","wizard-step-working");XHR({params:{task:"applyTools"},success:function(){Ext.get("wizard-step-2").replaceClass("wizard-step-working","wizard-step-done");new ui.task._SystemUpdateTask.refresh_ui()},failure:function(){ui.task._SystemUpdateTask.poll_apply_tool.delay(5000)}})};ui.task._SystemUpdateTask.vcs_poll=new Ext.util.DelayedTask(function(){XHR({params:{task:"checkLockFile",lockFile:"project_"+PhDOE.project+"_lock_update_repository"},success:function(){ui.task._SystemUpdateTask.vcs_poll.delay(5000)},failure:function(c){var d=Ext.util.JSON.decode(c.responseText);if(d&&d.success===false){Ext.get("wizard-step-1").replaceClass("wizard-step-working","wizard-step-done");Ext.get("wizard-step-1.1").replaceClass("wizard-show","wizard-wait");new ui.task._SystemUpdateTask.apply_tool()}else{ui.task._SystemUpdateTask.vcs_poll.delay(5000)}}})});ui.task.SystemUpdateTask=function(){ui.task.PingTask.getInstance().cancel();Ext.get("wizard-step-1").replaceClass("wizard-step-before","wizard-step-working");Ext.get("wizard-step-1.1").replaceClass("wizard-wait","wizard-show");XHR({params:{task:"updateRepository"},success:function(){Ext.get("wizard-step-1").replaceClass("wizard-step-working","wizard-step-done");Ext.get("wizard-step-1.1").replaceClass("wizard-show","wizard-wait");new ui.task._SystemUpdateTask.apply_tool()},failure:function(c){var d=Ext.util.JSON.decode(c.responseText);if(d&&d.success===false){Ext.getCmp("sys-update-win").close();PhDOE.winForbidden(d.type)}else{ui.task._SystemUpdateTask.vcs_poll.delay(5000)}}})};Ext.namespace("ui","ui.task");ui.task.UpdateConfTask=function(c){Ext.apply(this,c);XHR({scope:this,params:{task:"confUpdate",module:this.module,itemName:this.itemName,value:this.value},success:function(){PhDOE.user.conf[this.module][this.itemName]=this.value;if(this.module=="newFile"&&this.itemName=="nbDisplay"){ui.cmp.PendingTranslateGrid.getInstance().store.reload()}if(this.module=="needUpdate"&&this.itemName=="nbDisplay"){ui.cmp.StaleFileGrid.getInstance().store.reload()}if(this.module=="error"&&(this.itemName=="skipNbLiteralTag"||this.itemName=="nbDisplay")){ui.cmp.ErrorFileGrid.getInstance().store.reload()}if(this.module=="reviewed"&&this.itemName=="nbDisplay"){ui.cmp.PendingReviewGrid.getInstance().store.reload()}if(this.module=="main"&&this.itemName=="displayENWork"){ui.cmp.WorkTreeGrid.getInstance().getRootNode().reload(function(){ui.cmp.PatchesTreeGrid.getInstance().getRootNode().reload()})}if(this.notify!==false){PhDOE.notify("info",_("Option saved"),_("Option has been saved successfully !"))}}})};Ext.namespace("ui","ui.task","ui.task._UpdateSingleFolderTask");ui.task._UpdateSingleFolderTask.getUpdateFolderResponse=function(c){XHR({params:{task:"getUpdateFolderResponse"},success:function(d){var e=Ext.util.JSON.decode(d.responseText);ui.task._UpdateSingleFolderTask.afterUpdate(e,c)}})};ui.task._UpdateSingleFolderTask.poll=new Ext.util.DelayedTask(function(){var f=arguments[0],d=f.attributes.id.split("/"),c,e=new Array();d.shift();c=d[0];e.push(f);XHR({params:{task:"checkLockFile",lockFile:"project_"+PhDOE.project+"_"+c+"_lock_update_folder"},success:function(){ui.task._UpdateSingleFolderTask.poll.delay(5000,null,this,e)},failure:function(g){var h=Ext.util.JSON.decode(g.responseText);if(h&&h.success===false){new ui.task._UpdateSingleFolderTask.getUpdateFolderResponse(f)}else{ui.task._UpdateSingleFolderTask.poll.delay(5000,null,this,e)}}})});ui.task._UpdateSingleFolderTask.afterUpdate=function(e,d){Ext.getBody().unmask();ui.task.PingTask.getInstance().delay(30000);var c=Ext.util.JSON.decode(e.result);d.reload(function(){Ext.iterate(c.newFiles,function(g,f){d.findChild("text",g).getUI().addClass("treeFileUpdated")})},this);PhDOE.reloadAllStore()};ui.task._UpdateSingleFolderTask.update=function(d){var c=new Array();c.push(d);Ext.getBody().mask('<img src="themes/img/loading.gif" style="vertical-align: middle;" /> '+_("Please, wait until update this folder..."));ui.task.PingTask.getInstance().cancel();XHR({params:{task:"updateFolder",path:d.id},success:function(e){var f=Ext.util.JSON.decode(e.responseText);ui.task._UpdateSingleFolderTask.afterUpdate(f,d)},failure:function(e){var f=Ext.util.JSON.decode(e.responseText);if(f&&f.success===false){ui.task.PingTask.getInstance().delay(30000);Ext.getBody().unmask();PhDOE.winForbidden()}else{ui.task._UpdateSingleFolderTask.poll.delay(5000,null,this,c)}}})};ui.task.UpdateSingleFolderTask=function(c){if(!PhDOE.user.haveKarma){Ext.getCmp("winVCSCommit").close();PhDOE.winForbidden();return}ui.task._UpdateSingleFolderTask.update(c)};Ext.namespace("ui","ui.task","ui.task._VCSCommitTask");ui.task._VCSCommitTask.getCommitResponse=function(){XHR({params:{task:"getCommitResponse"},success:function(c){var d=Ext.util.JSON.decode(c.responseText);ui.task._VCSCommitTask.afterCommit(d.mess)}})};ui.task._VCSCommitTask.poll=new Ext.util.DelayedTask(function(){XHR({params:{task:"checkLockFile",lockFile:"project_"+PhDOE.project+"_lock_"+PhDOE.user.login+"_commit"},success:function(){ui.task._VCSCommitTask.poll.delay(5000)},failure:function(c){var d=Ext.util.JSON.decode(c.responseText);if(d&&d.success===false){new ui.task._VCSCommitTask.getCommitResponse()}else{ui.task._VCSCommitTask.poll.delay(5000)}}})});ui.task._VCSCommitTask.afterCommit=function(c){Ext.getBody().unmask();ui.task.PingTask.getInstance().delay(30000);new Ext.Window({title:_("Status"),width:450,height:350,resizable:false,modal:true,autoScroll:true,bodyStyle:"background-color: white; padding: 5px;",html:c.join("<br/>"),buttons:[{text:_("Close"),handler:function(){this.ownerCt.ownerCt.close()}}]}).show();PhDOE.reloadAllStore()};ui.task._VCSCommitTask.commit=function(h,g){Ext.getBody().mask('<img src="themes/img/loading.gif" style="vertical-align: middle;" /> '+_("Please, wait until commit..."));var c=[],f,e,d;for(d=0;d<h.length;d=d+1){f=Ext.getCmp("commit-grid-panel").store.getById(h[d].id);c.push(parseInt(f.data.FileDBID,10))}if(c.length==0){Ext.getBody().unmask();Ext.MessageBox.show({title:_("Error"),msg:_("You must choose at least one file."),buttons:Ext.MessageBox.OK,icon:Ext.MessageBox.ERROR});return}e=Ext.getCmp("form-commit-message-log").getValue();e=Ext.util.Format.trim(e);if(Ext.isEmpty(e)){Ext.getBody().unmask();Ext.getCmp("form-commit-message-log").markInvalid(_("The log message is required."));Ext.MessageBox.show({title:_("Error"),msg:_("The log message is required."),buttons:Ext.MessageBox.OK,icon:Ext.MessageBox.ERROR});return}Ext.getCmp("winVCSCommit").close();ui.task.PingTask.getInstance().cancel();XHR({params:{task:"vcsCommit",nodes:Ext.util.JSON.encode(c),logMessage:e,patchID:g},success:function(j){var k=Ext.util.JSON.decode(j.responseText);ui.task._VCSCommitTask.afterCommit(k.mess)},failure:function(j){var k=Ext.util.JSON.decode(j.responseText);if(k&&k.success===false){ui.task.PingTask.getInstance().delay(30000);Ext.getBody().unmask();PhDOE.winForbidden()}else{ui.task._VCSCommitTask.poll.delay(5000)}}})};ui.task.VCSCommitTask=function(f){if(!PhDOE.user.haveKarma){Ext.getCmp("winVCSCommit").close();PhDOE.winForbidden();return}var c=Ext.getCmp("commit-grid-panel").selModel.getSelections(),l=[],q,o,s,d,p,g,e,r,m="",k,h;for(k=0;k<c.length;++k){q=c[k].data;o="AF-"+Ext.util.md5("AF-"+q.path+q.name);s="FE-"+Ext.util.md5("FE-"+q.path+q.name);d="FNU-"+Ext.util.md5("FNU-"+q.path+q.name);p="FNIEN-"+Ext.util.md5("FNIEN-"+q.path+q.name);g="FNR-"+Ext.util.md5("FNR-"+q.path+q.name);e="FNT-"+Ext.util.md5("FNT-"+q.path+q.name);if(Ext.getCmp("main-panel").findById(o)||Ext.getCmp("main-panel").findById(s)||Ext.getCmp("main-panel").findById(p)||Ext.getCmp("main-panel").findById(d)||Ext.getCmp("main-panel").findById(g)||Ext.getCmp("main-panel").findById(e)){if(Ext.getCmp("main-panel").findById(o)){r=o}if(Ext.getCmp("main-panel").findById(s)){r=s}if(Ext.getCmp("main-panel").findById(d)){r=d}if(Ext.getCmp("main-panel").findById(p)){r=p}if(Ext.getCmp("main-panel").findById(g)){r=g}if(Ext.getCmp("main-panel").findById(e)){r=e}l.push([r,q.name])}}if(l.length>0){for(h=0;h<l.length;++h){m+=l[h][1]+"<br/>"}Ext.MessageBox.show({title:"Warning",icon:Ext.MessageBox.INFO,buttons:Ext.MessageBox.YESNOCANCEL,msg:(l.length>1)?String.format(_("There are {0} files to close before commit.<br><br>{1}<br/><br/>Would you like me to close them for you ?"),l.length,m):String.format(_("There is {0} file to close before commit.<br><br>{1}<br/><br/>Would you like me to close it for you ?"),l.length,m),fn:function(u){if(u==="yes"){for(var t=0;t<l.length;++t){Ext.getCmp("main-panel").remove(l[t][0])}ui.task._VCSCommitTask.commit(c)}}})}else{ui.task._VCSCommitTask.commit(c,f.patchID)}};Ext.namespace("ui","ui.cmp");ui.cmp.About=Ext.extend(Ext.Window,{id:"win-about",iconCls:"iconHelp",layout:"fit",width:515,height:320,modal:true,plain:true,bodyStyle:"color:#000",buttons:[{text:_("Close"),handler:function(){Ext.getCmp("win-about").close()}}],initComponent:function(){Ext.apply(this,{title:String.format(_("About {0}"),PhDOE.app.name),items:{xtype:"tabpanel",activeTab:0,autoTabs:true,border:false,defaults:{autoScroll:true},items:[{title:_("About"),html:'<div id="phd-oe-about"><img src="themes/img/php.png" class="loading-php-logo" alt="PHP" />'+PhDOE.app.name+'</div><div id="phd-oe-about-info">'+PhDOE.app.name+" Copyright © 2008-2012 The PHP Group<br/>"+_("Author:")+' <a href="mailto:yannick@php.net">Yannick Torrès</a> '+_('and <a href="http://git.php.net/?p=web/doc-editor.git;a=summary" target="_blank">others</a>')+"</div>"},{title:_("Help and support"),bodyStyle:"padding:15px",html:'<div id="phd-oe-support"><ul><li>'+_("Mailing list:")+'<a href="mailto:phpdoc@lists.php.net">phpdoc@lists.php.net</a></li><li>'+_("IRC:")+'<a href="irc://irc.efnet.org/#php.doc">EFnet: #php.doc</a></li></ul></div>'},{title:_("Credits"),bodyStyle:"padding:15px",html:'<div id="phd-oe-credit"><ul><li><a href="http://extjs.com" target="_blank">ExtJs Team</a><div class="phd-oe-credit-info">'+_("Javascript FrameWork")+" - ExtJs v"+PhDOE.app.extJsVersion+'</div></li><li><a href="http://marijn.haverbeke.nl/codemirror/" target="_blank">CodeMirror</a><div class="phd-oe-credit-info">'+_("Code editor")+" - CodeMirror v"+PhDOE.app.codeMirror+" - "+_("Mode Xmlpure by Dror Ben-Gai")+' </div></li><li><a href="http://www.oxygen-icons.org/" target="_blank">Oxygen project from KDE</a><div class="phd-oe-credit-info">'+_("Icon pack")+'</div></li><li><a href="http://www.mibbit.com/" target="_blank">'+_("Mibbit for donating their Premium IRC widget")+'</a><div class="phd-oe-credit-info">'+_("Web IRC Chat")+"</div></li></ul></div>"},{title:_("License"),autoLoad:{url:"./LICENSE"}}]}});ui.cmp.About.superclass.initComponent.call(this)}});Ext.namespace("ui","ui.cmp","ui.cmp._AnonymousPatchWin");ui.cmp._AnonymousPatchWin.form=Ext.extend(Ext.FormPanel,{frame:true,labelWidth:5,bodyStyle:"padding:5px 5px 0",defaultType:"radio",initComponent:function(c){Ext.apply(this,{items:[{xtype:"displayfield",value:_("File: ")+this.fpath+this.fname+"<br><br>"+_('You have opened a modified file from the "Patch for review" module.<br>This file has been modified by an anonymous user.<br><br>Please choose one of the following actions:')},{boxLabel:_("Continue to modify this file"),name:"choice",inputValue:"continue",checked:true,listeners:{afterrender:function(){new Ext.ToolTip({title:_("Continue to modify this file"),target:"x-form-el-"+this.id,anchor:"right",html:"<br>"+_("This action will open this file for modification. Once your modification finish, just save it and this file will be own by you."),width:250,autoHide:true})}}},{boxLabel:_("Reject this patch"),name:"choice",inputValue:"reject",listeners:{afterrender:function(){new Ext.ToolTip({title:_("Reject this patch"),target:"x-form-el-"+this.id,anchor:"right",html:"<br>"+_("This action will close this file, and clear the local change. This file will return into his original version, as it is on VCS server."),width:250,autoHide:true})}}},{boxLabel:_("Validate this patch"),name:"choice",inputValue:"validate",listeners:{afterrender:function(){new Ext.ToolTip({title:_("Validate this patch"),target:"x-form-el-"+this.id,anchor:"right",html:"<br>"+_("This action changes the owner of the modification and register it under your name. The file will appear under your name and you can then commit it."),width:250,autoHide:true})}}}]});ui.cmp._AnonymousPatchWin.form.superclass.initComponent.call(this)}});ui.cmp.AnonymousPatchWin=Ext.extend(Ext.Window,{id:"anonymous-patch-win",title:_("Anonymous patch manager"),iconCls:"iconPatch",width:450,height:250,layout:"fit",resizable:false,modal:true,autoScroll:true,closable:false,closeAction:"close",buttons:[{text:_("Next"),iconCls:"iconArrowRight",handler:function(){var d=this.ownerCt.ownerCt,c=d.items.items[0].getForm().getValues().choice;switch(c){case"continue":d.close();break;case"reject":ui.task.ClearLocalChangeTask({ftype:d.ftype,fpath:d.fpath,fname:d.fname,noConfirm:true});break;case"validate":ui.task.ChangeFileOwner({fileIdDB:d.fidDB,newOwnerID:PhDOE.user.userID,from:d,fromType:"tab"});break}}}],initComponent:function(){Ext.apply(this,{items:[new ui.cmp._AnonymousPatchWin.form({fpath:this.fpath,fname:this.fname})]});ui.cmp.AnonymousPatchWin.superclass.initComponent.call(this);this.show()}});Ext.namespace("ui","ui.cmp","ui.cmp._BuildStatus");ui.cmp._BuildStatus.display=function(c){Ext.apply(this,c);if(Ext.getCmp("main-panel").findById("last_failed_build_"+this.lang)){Ext.getCmp("main-panel").remove("last_failed_build_"+this.lang)}Ext.getCmp("main-panel").add({xtype:"panel",id:"last_failed_build_"+this.lang,title:String.format(_("Last failed build for {0}"),Ext.util.Format.uppercase(this.lang)),tabTip:String.format(_("Last failed build for the documentation {0}"),Ext.util.Format.uppercase(this.lang)),closable:true,autoScroll:true,iconCls:"iconCheckBuild",html:'<div class="check-build-content" id="check-build-content"></div>'});Ext.getCmp("main-panel").setActiveTab("last_failed_build_"+this.lang);Ext.getCmp("main-panel").el.mask(_("Please, wait..."));XHR({scope:this,params:{task:"getFailedBuildData",idFailedBuild:this.idFailedBuild},success:function(d){var e=Ext.decode(d.responseText),f=e.mess.join("<br/>");if(e.state==="truncate"){Ext.get("check-build-content").dom.innerHTML=f+'<div style="text-align: center; margin: 20px 0 20px 0" class="x-toolbar">'+_("This log is too large and have been truncated. Use the following button to download the full content of it.")+'<div id="check-build-content-download-btn"></div></div>';new Ext.Button({scope:this,text:_("Download the full content of this log"),renderTo:"check-build-content-download-btn",style:{margin:"auto"},handler:function(){window.location.href="./do/downloadFailedBuildLog?idFailedBuild="+this.idFailedBuild+"&csrfToken="+csrfToken}})}else{Ext.get("check-build-content").dom.innerHTML=f}Ext.getCmp("main-panel").el.unmask()}})};ui.cmp._BuildStatus.ds=new Ext.data.Store({proxy:new Ext.data.HttpProxy({url:"./do/getFailedBuild"}),reader:new Ext.data.JsonReader({root:"Items",totalProperty:"nbItems",idProperty:"id",fields:[{name:"id"},{name:"lang"},{name:"date",type:"date",dateFormat:"Y-m-d H:i:s"}]})});ui.cmp._BuildStatus.ds.setDefaultSort("date","desc");ui.cmp._BuildStatus.rendererLanguage=function(d){var c={cs:"cz",sr:"rs",sv:"se"};return'<div><div class="flags flag-'+(c[d]||d)+'" style="float: left;"></div><div style="padding-left: 24px">'+d+"</div></div>"};ui.cmp._BuildStatus.columns=[{id:"date",header:_("Date"),sortable:true,dataIndex:"date",renderer:Ext.util.Format.dateRenderer(_("Y-m-d, H:i"))},{header:_("Language"),width:45,sortable:true,dataIndex:"lang",renderer:ui.cmp._BuildStatus.rendererLanguage}];ui.cmp._BuildStatus.menu=Ext.extend(Ext.menu.Menu,{setRowIndex:function(c){this.rowIndex=c},initComponent:function(){Ext.apply(this,{items:[{scope:this,text:"<b>"+_("View in a new Tab")+"</b>",iconCls:"iconOpenInTab",handler:function(){this.grid.fireEvent("rowdblclick",this.grid,this.rowIndex,this.event)}}]});ui.cmp._BuildStatus.menu.superclass.initComponent.call(this)}});ui.cmp.BuildStatus=Ext.extend(Ext.grid.GridPanel,{loadMask:true,bodyBorder:false,autoExpandColumn:"date",store:ui.cmp._BuildStatus.ds,columns:ui.cmp._BuildStatus.columns,view:new Ext.grid.GridView({forceFit:true}),listeners:{render:function(){this.store.load.defer(20,this.store)}},onRowdblclick:function(c,g,f){var d=this.store.getAt(g);new ui.cmp._BuildStatus.display({idFailedBuild:d.id,lang:d.data.lang})},onRowContextMenu:function(c,f,d){if(!this.menu){this.menu=new ui.cmp._BuildStatus.menu({grid:c,rowIdx:"",event:d})}d.stopEvent();this.getSelectionModel().selectRow(f);this.menu.setRowIndex(f);this.menu.showAt(d.getXY())},initComponent:function(c){ui.cmp.BuildStatus.superclass.initComponent.call(this);Ext.apply(this,c);this.on("rowdblclick",this.onRowdblclick,this);this.on("rowcontextmenu",this.onRowContextMenu,this)}});Ext.namespace("ui","ui.cmp","ui.cmp._ChangeFileOwner");ui.cmp._ChangeFileOwner.store=new Ext.data.Store({proxy:new Ext.data.HttpProxy({url:"./do/getVCSUsers"}),reader:new Ext.data.JsonReader({root:"Items",totalProperty:"nbItems",fields:[{name:"userID"},{name:"authService"},{name:"userName"}]}),sortInfo:{field:"authService",direction:"ASC"}});ui.cmp.ChangeFileOwner=Ext.extend(Ext.Window,{title:_("Change file's owner"),iconCls:"iconSwitchLang",width:550,height:255,layout:"form",resizable:false,modal:true,autoScroll:true,closeAction:"close",padding:10,buttons:[{text:_("Save"),handler:function(){var d=this.ownerCt.ownerCt,c=d.items.items[1].items.items[0].getValue();new ui.task.ChangeFileOwner({fileIdDB:d.fileIdDB,newOwnerID:c,from:d})}},{text:_("Close"),handler:function(){var c=this.ownerCt.ownerCt;c.close()}}],initComponent:function(){var c=this;Ext.apply(this,{defaults:{labelWidth:120},items:[{xtype:"fieldset",title:_("Information"),iconCls:"iconInfo",width:515,items:[{xtype:"displayfield",fieldLabel:_("File"),value:this.fileFolder+this.fileName},{xtype:"displayfield",fieldLabel:_("Current owner"),value:this.currentOwner}]},{xtype:"fieldset",title:_("Action"),iconCls:"iconSwitchLang",width:515,items:[{xtype:"combo",name:"newOwner",fieldLabel:_("New owner"),editable:false,store:ui.cmp._ChangeFileOwner.store,triggerAction:"all",valueField:"userID",tpl:new Ext.XTemplate('<tpl for="."><div class="x-combo-list-item">',"{authService} - {userName}","</div></tpl>"),displayField:"userName",listeners:{afterrender:function(d){d.store.load({callback:function(){d.setValue(PhDOE.user.userID)}})}}}]}]});ui.cmp.ChangeFileOwner.superclass.initComponent.call(this);this.show()}});Ext.namespace("ui","ui.cmp");ui.cmp.Chat=Ext.extend(Ext.Window,{id:"win-chat",iconCls:"iconChat",layout:"fit",width:800,height:600,modal:true,plain:true,bodyStyle:"color:#000",closeAction:"hide",initComponent:function(){var c=PhDOE.user.login;if(PhDOE.user.isAnonymous){c="an%3F%3F%3F"}Ext.apply(this,{title:_("Chat with us on IRC !"),items:[new Ext.ux.IFrameComponent({id:"frame-win-chat",url:"https://widget.mibbit.com/?settings=8eec4034df2eb666b0600bdfe151529a&server=irc.umich.edu&channel=%23php.doc&nick=poe_"+c})]});ui.cmp.Chat.superclass.initComponent.call(this)}});Ext.namespace("ui","ui.cmp");ui.cmp.CheckBuildPrompt=Ext.extend(Ext.Window,{title:_("Check build"),iconCls:"iconCheckBuild",layout:"form",width:350,height:200,resizable:false,modal:true,bodyStyle:"padding:5px 5px 0",labelAlign:"top",buttons:[{id:"win-check-build-btn-submit",text:_("Go !"),handler:function(){new ui.task.CheckBuildTask();this.ownerCt.ownerCt.close()}}],initComponent:function(){Ext.apply(this,{items:[{xtype:"panel",modal:false,baseCls:"x-plain",bodyStyle:"padding:5px 5px 0",html:_("You're about to check the build via this command:")+"<br/><br/>/usr/bin/php configure.php --with-lang="+PhDOE.user.lang+'<span id="option-xml-details-span" style="color: red; visibility: hidden;"> --enable-xml-details</span><br/><div id="option-xml-details-div" style="text-align: center; color: red; visibility: hidden;">'+_("<b>WARNING !</b><br/> This option use a lot of server ressource. If you don't know what are the consequence, please, don't use it.")+"</div>"},{xtype:"checkbox",id:"option-xml-details",name:"option-xml-details",checked:false,hideLabel:true,boxLabel:_("Enable detailed XML error messages"),listeners:{check:function(e,d){Ext.get("option-xml-details-span").dom.style.visibility=(d)?"visible":"hidden";Ext.get("option-xml-details-div").dom.style.visibility=(d)?"visible":"hidden"}}}]});ui.cmp.CheckBuildPrompt.superclass.initComponent.call(this)}});Ext.namespace("ui","ui.cmp","ui.cmp._CheckDoc");ui.cmp._CheckDoc.ds=new Ext.data.Store({proxy:new Ext.data.HttpProxy({url:"./do/getCheckDocData"}),reader:new Ext.data.JsonReader({root:"Items",totalProperty:"nbItems",idProperty:"id",fields:[{name:"id"},{name:"path"},{name:"extension"},{name:"check_oldstyle",type:"int"},{name:"check_undoc",type:"int"},{name:"check_roleerror",type:"int"},{name:"check_badorder",type:"int"},{name:"check_noseealso",type:"int"},{name:"check_noreturnvalues",type:"int"},{name:"check_noparameters",type:"int"},{name:"check_noexamples",type:"int"},{name:"check_noerrors",type:"int"}]})});ui.cmp._CheckDoc.ds.setDefaultSort("extension","asc");ui.cmp._CheckDoc.renderer=function(d,c){if(d>0){c.css="check_doc_cell";c.attr="ext:qtip=\"<img src='themes/img/help.png' style='vertical-align: middle;' /> "+_("Double-click the cell to open the file selection")+'"';return d}else{return}};ui.cmp._CheckDoc.columns=[new Ext.grid.RowNumberer(),{id:"extension",header:_("Extension"),sortable:true,dataIndex:"extension"},{header:_("Not documented"),width:45,sortable:true,dataIndex:"check_undoc",renderer:ui.cmp._CheckDoc.renderer},{header:_("Old style"),width:45,sortable:true,dataIndex:"check_oldstyle",renderer:ui.cmp._CheckDoc.renderer},{header:_("Bad refsect1 order"),width:45,sortable:true,dataIndex:"check_badorder",renderer:ui.cmp._CheckDoc.renderer},{header:_("No parameters"),width:45,sortable:true,dataIndex:"check_noparameters",renderer:ui.cmp._CheckDoc.renderer},{header:_("No return values"),width:45,sortable:true,dataIndex:"check_noreturnvalues",renderer:ui.cmp._CheckDoc.renderer},{header:_("No examples"),width:45,sortable:true,dataIndex:"check_noexamples",renderer:ui.cmp._CheckDoc.renderer},{header:_("No errors section"),width:45,sortable:true,dataIndex:"check_noerrors",renderer:ui.cmp._CheckDoc.renderer},{header:_("No see also"),width:45,sortable:true,dataIndex:"check_noseealso",renderer:ui.cmp._CheckDoc.renderer},{header:_("Refsect1 role error"),width:45,sortable:true,dataIndex:"check_roleerror",renderer:ui.cmp._CheckDoc.renderer}];ui.cmp._CheckDoc.fs=new Ext.data.SimpleStore({fields:[{name:"id"},{name:"file"}]});ui.cmp._CheckDoc.FileGrid=Ext.extend(Ext.grid.GridPanel,{id:"check-doc-file-grid",store:ui.cmp._CheckDoc.fs,loadMask:true,bodyBorder:false,autoExpandColumn:"file",sm:new Ext.grid.RowSelectionModel({}),columns:[new Ext.grid.RowNumberer(),{id:"file",header:_("Files"),sortable:true,dataIndex:"file"}],onRowClick:function(){Ext.getCmp("check-doc-btn-open-selected-files").enable()},onRowContextMenu:function(c,f,d){d.stopEvent();c.getSelectionModel().selectRow(f)},onRowDblClick:function(c,d){ui.cmp.RepositoryTree.getInstance().openFile("byPath","en"+c.fpath,c.store.getAt(d).data.file);Ext.getCmp("check-doc-file-win").close()},initComponent:function(c){ui.cmp._CheckDoc.FileGrid.superclass.initComponent.call(this);Ext.apply(this,c);this.on("rowcontextmenu",this.onRowContextMenu,this);this.on("rowdblclick",this.onRowDblClick,this);this.on("rowclick",this.onRowClick,this)}});ui.cmp._CheckDoc.FileWin=Ext.extend(Ext.Window,{id:"check-doc-file-win",title:_("Files"),width:450,height:350,labelWidth:50,resizable:false,modal:true,autoScroll:true,layout:"fit",iconCls:"iconFiles",buttons:[{text:_("Open all files"),handler:function(){var e=Ext.getCmp("check-doc-file-win"),c=ui.cmp._CheckDoc.fs,d;PhDOE.AFfilePendingOpen=[];for(d=0;d<c.getCount();++d){PhDOE.AFfilePendingOpen[d]={fpath:"en"+e.fpath,fname:c.getAt(d).data.file}}ui.cmp.RepositoryTree.getInstance().openFile("byPath",PhDOE.AFfilePendingOpen[0].fpath,PhDOE.AFfilePendingOpen[0].fname);PhDOE.AFfilePendingOpen.shift();e.close()}},{text:_("Open selected files"),id:"check-doc-btn-open-selected-files",disabled:true,handler:function(){var e=Ext.getCmp("check-doc-file-win"),d=Ext.getCmp("check-doc-file-grid").getSelectionModel().getSelections(),c;PhDOE.AFfilePendingOpen=[];for(c=0;c<d.length;++c){PhDOE.AFfilePendingOpen[c]={fpath:"en"+e.fpath,fname:d[c].data.file}}ui.cmp.RepositoryTree.getInstance().openFile("byPath",PhDOE.AFfilePendingOpen[0].fpath,PhDOE.AFfilePendingOpen[0].fname);PhDOE.AFfilePendingOpen.shift();e.close()}}]});ui.cmp.CheckDoc=Ext.extend(Ext.grid.GridPanel,{loadMask:true,bodyBorder:false,store:ui.cmp._CheckDoc.ds,columns:ui.cmp._CheckDoc.columns,autoExpandColumn:"extension",sm:new Ext.grid.CellSelectionModel({singleSelect:true}),view:new Ext.grid.GridView({forceFit:true}),listeners:{render:function(c){this.store.load.defer(20,c.store)}},onCellContextMenu:function(d,g,c,f){f.stopEvent();this.sm.select(g,c)},onCellDblClick:function(f,l,g,k){var c=this.store.getAt(l),j=this.getColumnModel().getDataIndex(g),h=c.get(j),d=c.data.path;if(Ext.num(h,false)&&h!==0){this.el.mask(_("Please, wait..."));XHR({params:{task:"getCheckDocFiles",path:d,errorType:j},success:function(e){var p=Ext.decode(e.responseText),m;ui.cmp._CheckDoc.fs.removeAll();for(m=0;m<p.files.length;++m){ui.cmp._CheckDoc.fs.insert(0,new ui.cmp._CheckDoc.fs.recordType({id:m,file:p.files[m].name}))}ui.cmp._CheckDoc.fs.sort("file","asc");f.el.unmask();new ui.cmp._CheckDoc.FileWin({fpath:d,items:[new ui.cmp._CheckDoc.FileGrid({fpath:d})]}).show()}})}},initComponent:function(c){ui.cmp.CheckDoc.superclass.initComponent.call(this);Ext.apply(this,c);this.on("celldblclick",this.onCellDblClick,this);this.on("cellcontextmenu",this.onCellContextMenu,this)}});Ext.namespace("ui","ui.cmp","ui.cmp._CheckEntities");ui.cmp._CheckEntities.ds=new Ext.data.Store({proxy:new Ext.data.HttpProxy({url:"./do/getCheckEntitiesData"}),reader:new Ext.data.JsonReader({root:"Items",totalProperty:"nbItems",idProperty:"id",fields:[{name:"id"},{name:"entities"},{name:"url"},{name:"result"},{name:"date",type:"date",dateFormat:"Y-m-d H:i:s"}]})});ui.cmp._CheckEntities.ds.setDefaultSort("entities","asc");ui.cmp._CheckEntities.rendererEntities=function(d,c){return"&"+d+";"};ui.cmp._CheckEntities.columns=[new Ext.grid.RowNumberer(),{id:"entities",header:_("Entities"),sortable:true,dataIndex:"entities",width:30,renderer:ui.cmp._CheckEntities.rendererEntities},{header:_("Url"),sortable:true,dataIndex:"url"},{header:_("Result"),width:30,sortable:true,dataIndex:"result"},{header:_("Date"),width:30,sortable:true,dataIndex:"date",renderer:Ext.util.Format.dateRenderer(_("Y-m-d, H:i"))}];ui.cmp.CheckEntities=Ext.extend(Ext.grid.GridPanel,{id:"check-entities-grid",loadMask:true,bodyBorder:false,store:ui.cmp._CheckEntities.ds,columns:ui.cmp._CheckEntities.columns,autoExpandColumn:"url",sm:new Ext.grid.RowSelectionModel({singleSelect:true}),view:new Ext.grid.GridView({forceFit:true}),onRender:function(d,c){ui.cmp.CheckEntities.superclass.onRender.call(this,d,c);this.store.load.defer(20,this.store)},openTab:function(h){var g=this.store.getAt(h),d=g.data.url,f=Ext.util.md5(d),c="tab-check-entities-"+f,e=Ext.getCmp(c);if(!e){Ext.getCmp("main-panel").add({id:c,xtype:"panel",title:Ext.util.Format.ellipsis(d,20),tabTip:d,iconCls:"iconCheckEntities",closable:true,layout:"fit",items:[new Ext.ux.IFrameComponent({id:"frame-"+c,url:d})]})}Ext.getCmp("main-panel").setActiveTab(c)},onRowdblclick:function(c,d){this.openTab(d)},onContextClick:function(c,f,d){if(!this.menu){this.menu=new Ext.menu.Menu({id:"submenu-checkentities",items:[{scope:this,text:"<b>"+_("Open in a new Tab")+"</b>",iconCls:"iconOpenInTab",handler:function(){this.openTab(this.ctxRowIndex);this.menu.hide()}}]})}this.getSelectionModel().selectRow(f);d.stopEvent();if(this.ctxRowIndex){this.ctxRowIndex=null}this.ctxRowIndex=f;this.menu.showAt(d.getXY())},initComponent:function(c){this.tbar=[{xtype:"label",text:_("Status: ")},{xtype:"combo",typeAhead:true,triggerAction:"all",lazyRender:true,mode:"local",store:new Ext.data.ArrayStore({id:0,fields:["myId","displayText"],data:[["all",_("All status")],["FTP_CONNECT","FTP_CONNECT"],["FTP_LOGIN","FTP_LOGIN"],["FTP_NO_FILE","FTP_NO_FILE"],["HTTP_CONNECT","HTTP_CONNECT"],["HTTP_INTERNAL_ERROR","HTTP_INTERNAL_ERROR"],["HTTP_NOT_FOUND","HTTP_NOT_FOUND"],["HTTP_MOVED","HTTP_MOVED"],["HTTP_WRONG_HEADER","HTTP_WRONG_HEADER"],["SUCCESS","SUCCESS"],["UNKNOWN_HOST","UNKNOWN_HOST"]]}),value:"all",valueField:"myId",displayField:"displayText",editable:false,listeners:{select:function(f,d){var e=d.id;if(e==="all"){Ext.getCmp("check-entities-grid").store.clearFilter()}else{Ext.getCmp("check-entities-grid").store.filter("result",d.id)}}}}];ui.cmp.CheckEntities.superclass.initComponent.call(this);Ext.apply(this,c);this.on("rowcontextmenu",this.onContextClick,this);this.on("rowdblclick",this.onRowdblclick,this)}});Ext.namespace("ui","ui.cmp");ui.cmp.CheckEntitiesPrompt=Ext.extend(Ext.Window,{title:_("Check entities"),iconCls:"iconRun",id:"win-check-entities",layout:"fit",width:250,height:140,resizable:false,modal:true,bodyStyle:"padding:5px 5px 0; text-align: center;",labelAlign:"top",closeAction:"hide",buttons:[{id:"win-check-entities-btn",text:_("Go !"),handler:function(){new ui.task.CheckEntitiesTask();Ext.getCmp("win-check-entities").hide()}}],initComponent:function(){Ext.apply(this,{items:[{xtype:"panel",modal:false,baseCls:"x-plain",bodyStyle:"padding:5px 5px 0",html:_("You're about to check all entities.<br><br>This action takes time.")}]});ui.cmp.CheckEntitiesPrompt.superclass.initComponent.call(this)}});Ext.namespace("ui","ui.cmp");ui.cmp.CheckXmlWin=Ext.extend(Ext.Window,{title:_("XML Errors"),iconCls:"iconXml",width:650,height:350,layout:"fit",resizable:false,modal:true,autoScroll:true,closeAction:"close",buttons:[{text:_("Close"),handler:function(){this.ownerCt.ownerCt.close()}}],store:new Ext.data.JsonStore({root:"Items",totalProperty:"nbItems",fields:[{name:"line"},{name:"libel"}]}),addErrorsInStore:function(){var c=Ext.data.Record.create({name:"line"},{name:"libel"});this.store.removeAll();for(i=0;i<this.errors.length;i++){this.store.add(new c({line:this.errors[i].line,libel:this.errors[i].libel+"<br>"+Ext.util.Format.htmlEncode(this.errors[i].ctx1)}))}this.store.sort("line","desc")},initComponent:function(){Ext.apply(this,{items:[{xtype:"grid",store:this.store,loadMask:true,autoExpandColumn:"libel_id",colModel:new Ext.grid.ColumnModel([{header:_("Line"),dataIndex:"line",sortable:true},{id:"libel_id",header:_("Libel"),dataIndex:"libel"}]),sm:new Ext.grid.RowSelectionModel({singleSelect:true})}]});ui.cmp.CheckXmlWin.superclass.initComponent.call(this);this.addErrorsInStore();this.show()}});Ext.namespace("ui","ui.cmp","ui.cmp._CommitLogManager");ui.cmp._CommitLogManager.store=new Ext.data.Store({proxy:new Ext.data.HttpProxy({url:"./do/getCommitLogMessage"}),reader:new Ext.data.JsonReader({root:"Items",totalProperty:"nbItems",idProperty:"id",fields:[{name:"id"},{name:"text"}]})});ui.cmp._CommitLogManager.editor=new Ext.ux.grid.RowEditor({saveText:_("Update"),cancelText:_("Cancel"),listeners:{afteredit:function(e,d,c){XHR({params:{task:"saveLogMessage",messID:c.data.id,mess:c.data.text},success:function(){c.commit();PhDOE.notify("info",_("Message updated"),_("Log Message was updated successfully !"))},failure:function(){PhDOE.winForbidden()}})}}});ui.cmp._CommitLogManager.cm=new Ext.grid.ColumnModel([new Ext.grid.RowNumberer(),{id:"log_msg",header:_("Log message"),dataIndex:"text",editor:{xtype:"textarea"},renderer:function(c){return c.split("\n").join("<br/>")}}]);ui.cmp._CommitLogManager.sm=new Ext.grid.RowSelectionModel({singleSelect:true});ui.cmp._CommitLogManager.menu=Ext.extend(Ext.menu.Menu,{setRowIdx:function(c){this.rowIdx=c},initComponent:function(){Ext.apply(this,{items:[{scope:this,text:_("Delete this Log Message"),iconCls:"iconTrash",handler:function(){XHR({scope:this,params:{task:"deleteLogMessage",messID:ui.cmp._CommitLogManager.store.getAt(this.rowIdx).data.id},success:function(){ui.cmp._CommitLogManager.store.remove(ui.cmp._CommitLogManager.store.getAt(this.rowIdx));PhDOE.notify("info",_("Message deleted"),_("Log Message was deleted successfully !"))},failure:function(){PhDOE.winForbidden()}})}}]});ui.cmp._CommitLogManager.menu.superclass.initComponent.call(this)}});ui.cmp._CommitLogManager.grid=Ext.extend(Ext.grid.GridPanel,{loadMask:true,autoExpandColumn:"log_msg",cm:ui.cmp._CommitLogManager.cm,sm:ui.cmp._CommitLogManager.sm,store:ui.cmp._CommitLogManager.store,plugins:[ui.cmp._CommitLogManager.editor],viewConfig:{emptyText:'<div class="x-grid-empty" style="text-align:center;">'+_("No log message currently")+"</div>"},listeners:{render:function(c){c.store.load()}},onRowContextMenu:function(c,f,d){d.stopEvent();this.getSelectionModel().selectRow(f);if(!this.menu){this.menu=new ui.cmp._CommitLogManager.menu()}this.menu.setRowIdx(f);this.menu.showAt(d.getXY())},initComponent:function(c){ui.cmp._CommitLogManager.grid.superclass.initComponent.call(this);Ext.apply(this,c);this.on("rowcontextmenu",this.onRowContextMenu,this)}});ui.cmp.CommitLogManager=Ext.extend(Ext.Window,{id:"commit-log-win",title:_("Manage Log Message"),iconCls:"iconWinManageLog",width:650,height:350,layout:"fit",resizable:false,modal:true,autoScroll:true,closeAction:"hide",store:ui.cmp._CommitLogManager.store,buttons:[{text:_("Close"),handler:function(){Ext.getCmp("commit-log-win").hide()}}],initComponent:function(){Ext.apply(this,{items:[new ui.cmp._CommitLogManager.grid()]});ui.cmp.CommitLogManager.superclass.initComponent.call(this)}});Ext.namespace("ui","ui.cmp","ui.cmp._CommitPrompt");ui.cmp._CommitPrompt.store=new Ext.data.GroupingStore({reader:new Ext.data.JsonReader({root:"Items",totalProperty:"nbItems",idProperty:"id",fields:[{name:"id"},{name:"path"},{name:"name"},{name:"by"},{name:"date",type:"date",dateFormat:"Y-m-d H:i:s"},{name:"type"}]}),sortInfo:{field:"name",direction:"ASC"},groupField:"path"});ui.cmp._CommitPrompt.columns=[new Ext.grid.CheckboxSelectionModel(),{id:"name",header:_("Files"),sortable:true,dataIndex:"name"},{header:_("Modified by"),width:45,sortable:true,dataIndex:"by"},{header:_("Date"),width:45,sortable:true,dataIndex:"date",renderer:Ext.util.Format.dateRenderer(_("Y-m-d, H:i"))},{header:_("Path"),dataIndex:"path",hidden:true}];ui.cmp._CommitPrompt.view=new Ext.grid.GroupingView({forceFit:true,groupTextTpl:'{[values.rs[0].data["path"]]} ({[values.rs.length]} {[values.rs.length > 1 ? "'+_("Files")+'" : "'+_("File")+'"]})'});ui.cmp._CommitPrompt.grid=Ext.extend(Ext.grid.GridPanel,{id:"commit-grid-panel",loadMask:true,autoExpandColumn:"name",height:180,columns:ui.cmp._CommitPrompt.columns,view:ui.cmp._CommitPrompt.view,enableDragDrop:true,sm:new Ext.grid.CheckboxSelectionModel(),listeners:{viewready:function(){this.selModel.selectAll()}},initComponent:function(){Ext.apply(this,{store:ui.cmp._CommitPrompt.store});ui.cmp._CommitPrompt.grid.superclass.initComponent.call(this)}});ui.cmp.CommitPrompt=Ext.extend(Ext.Window,{id:"winVCSCommit",layout:"form",title:_("VCS commit"),iconCls:"iconPendingCommit",closable:false,width:600,height:480,resizable:false,modal:true,bodyStyle:"padding:5px 5px 0",labelAlign:"top",patchID:false,defaultMessage:false,tools:[{id:"gear",qtip:_("Configure this tools"),handler:function(){if(!Ext.getCmp("commit-log-win")){new ui.cmp.CommitLogManager()}Ext.getCmp("commit-log-win").show(this.id)}}],listeners:{show:function(){var c=new Ext.util.DelayedTask(function(){Ext.getCmp("form-commit-message-log").focus()});c.delay(200)}},initComponent:function(){var c;ui.cmp._CommitPrompt.store.removeAll();for(c=0;c<this.files.length;++c){ui.cmp._CommitPrompt.store.insert(0,new ui.cmp._CommitPrompt.store.recordType({id:"need-commit-"+this.files[c].fid,path:this.files[c].fpath,name:this.files[c].fname,by:this.files[c].fby,date:this.files[c].fdate,type:this.files[c].ftype,FileDBID:this.files[c].fdbid}))}ui.cmp._CommitPrompt.store.groupBy("path",true);Ext.apply(this,{buttons:[{scope:this,id:"win-commit-btn-submit",text:_("Submit"),handler:function(){new ui.task.VCSCommitTask({patchID:this.patchID})}},{id:"win-commit-btn-close",text:_("Close"),handler:function(){Ext.getCmp("winVCSCommit").close()}}],items:[new ui.cmp._CommitPrompt.grid(),{xtype:"combo",name:"first2",fieldLabel:_("Older messages"),editable:false,anchor:"100%",store:ui.cmp._CommitLogManager.store,triggerAction:"all",tpl:'<tpl for="."><div class="x-combo-list-item">{[values.text.split("\n").join("<br/>")]}</div></tpl>',valueField:"id",displayField:"text",listEmptyText:'<div class="x-grid-empty" style="text-align:center;">'+_("No log message currently")+"</div>",listeners:{select:function(e,d){Ext.getCmp("form-commit-message-log").setValue(d.data.text)}}},{xtype:"textarea",id:"form-commit-message-log",name:"first3",fieldLabel:_("Log message"),anchor:"100%",height:150,value:(this.defaultMessage)?this.defaultMessage:""}]});ui.cmp.CommitPrompt.superclass.initComponent.call(this)}});Ext.namespace("ui","ui.cmp","ui.cmp._DictionaryGrid");ui.cmp._DictionaryGrid.store=Ext.extend(Ext.data.Store,{proxy:new Ext.data.HttpProxy({url:"./do/getDictionaryWords"}),reader:new Ext.data.JsonReader({root:"Items",totalProperty:"nbItems",idProperty:"id",fields:[{name:"id"},{name:"valueEn"},{name:"valueLang"},{name:"lastUser",hideField:true},{name:"lastDate",type:"date",dateFormat:"Y-m-d H:i:s",hideField:true}]}),sortInfo:{field:"valueEn",direction:"ASC"},listeners:{load:function(){if(!PhDOE.user.isAnonymous){Ext.getCmp(this.fid+"-btn-new-word").enable()}}},initComponent:function(c){Ext.apply(this,c);ui.cmp._DictionaryGrid.store.superclass.initComponent.call(this)}});ui.cmp._DictionaryGrid.editor=Ext.extend(Ext.ux.grid.RowEditor,{saveText:_("Update"),cancelText:_("Cancel"),listeners:{afteredit:function(e,d,c,f){XHR({params:{task:"manageDictionaryWord",wordId:c.data.id,valueEn:c.data.valueEn,valueLang:c.data.valueLang},success:function(g){var h=Ext.util.JSON.decode(g.responseText);c.set("lastUser",PhDOE.user.login);c.set("lastDate",Date.parseDate(h.dateUpdate,"Y-m-d H:i:s"));c.commit();PhDOE.notify("info",_("Word in dictionary added/updated"),_("The word have been added/updated successfully !"))},failure:function(){PhDOE.winForbidden()}})},canceledit:function(c){if(c.record.data.id==="new"){c.record.store.remove(c.record)}}}});ui.cmp._DictionaryGrid.sm=Ext.extend(Ext.grid.RowSelectionModel,{singleSelect:true});ui.cmp._DictionaryGrid.viewConfig={forceFit:true,emptyText:'<div style="text-align: center">'+_("You must manually load this data.<br>Use the refresh button !")+"</div>",deferEmptyText:false};ui.cmp._DictionaryGrid.menu=Ext.extend(Ext.menu.Menu,{setRowIdx:function(c){this.rowIdx=c},initComponent:function(){Ext.apply(this,{items:[{scope:this,text:_("Delete this word"),iconCls:"iconTrash",disabled:(PhDOE.user.isAnonymous),handler:function(){XHR({scope:this,params:{task:"delDictionaryWord",wordId:this.grid.store.getAt(this.rowIdx).data.id},success:function(){this.grid.store.remove(this.grid.store.getAt(this.rowIdx));PhDOE.notify("info",_("Word deleted"),_("The word was deleted successfully !"))},failure:function(){PhDOE.winForbidden()}})}}]});ui.cmp._DictionaryGrid.menu.superclass.initComponent.call(this)}});ui.cmp._DictionaryGrid.grid=Ext.extend(Ext.grid.GridPanel,{onRowContextMenu:function(c,f,d){d.stopEvent();this.getSelectionModel().selectRow(f);if(!this.menu){this.menu=new ui.cmp._DictionaryGrid.menu({grid:c})}this.menu.setRowIdx(f);this.menu.showAt(d.getXY())},initComponent:function(){Ext.apply(this,{region:"center",split:true,loadMask:true,autoScroll:true,bodyBorder:false,border:false,autoExpandColumn:this.dataType,columns:[{id:"id",header:_("En word"),sortable:true,dataIndex:"valueEn",editor:{xtype:"textfield"}},{header:String.format(_("{0} word"),PhDOE.user.lang.ucFirst()),sortable:true,dataIndex:"valueLang",editor:{xtype:"textfield"}},{header:_("Last User Update"),sortable:true,dataIndex:"lastUser",editor:{xtype:"displayfield",hideField:true}},{header:_("Last Date Update"),sortable:true,dataIndex:"lastDate",editor:{xtype:"displayfield",hideField:true},renderer:Ext.util.Format.dateRenderer(_("Y-m-d, H:i"))}],viewConfig:ui.cmp._DictionaryGrid.viewConfig,sm:new ui.cmp._DictionaryGrid.sm(),store:new ui.cmp._DictionaryGrid.store({fid:this.fid}),plugins:[new ui.cmp._DictionaryGrid.editor()],tbar:[{scope:this,tooltip:_("<b>Load/Refresh</b>"),iconCls:"iconRefresh",handler:function(){this.store.reload()}},"->",{scope:this,id:this.fid+"-btn-new-word",disabled:true,text:_("Add a new word"),iconCls:"iconNewWord",handler:function(){var c=Ext.data.Record.create([{name:"id"},{name:"valueEn"},{name:"valueLang"},{name:"lastUser"},{name:"lastDate"}]),d=new Date(),f=new c({id:"new",valueEn:"",valueLang:"",lastUser:PhDOE.user.login,lastDate:d});this.plugins[0].stopEditing();this.store.insert(0,f);this.getView().refresh();this.getSelectionModel().selectRow(0);this.plugins[0].startEditing(0)}}]});ui.cmp._DictionaryGrid.grid.superclass.initComponent.call(this);this.on("rowcontextmenu",this.onRowContextMenu,this)}});ui.cmp.DictionaryGrid=Ext.extend(Ext.Panel,{initComponent:function(){Ext.apply(this,{layout:"border",border:false,items:[new ui.cmp._DictionaryGrid.grid({dataType:this.dataType,prefix:this.prefix,fid:this.fid,ftype:this.ftype,loadStore:this.loadStore})]});ui.cmp.DictionaryGrid.superclass.initComponent.call(this)}});Ext.namespace("ui","ui.cmp","ui.cmp._EditorConf","ui.cmp._EditorCmd2Conf");ui.cmp._EditorConf.tplMenu=new Ext.XTemplate('<tpl for=".">','<div class="menu-wrap" id="tplMenu-{id}">','<div class="menu {card}"></div>',"<span>{label}</span>","</div>","</tpl>");ui.cmp._EditorConf.tplMenu.compile();ui.cmp._EditorConf.menuDefEn=[["1","card1",_("Main")],["4","card4",_('Module "Files with error"')],["6","card6",_('Module "All files"')]];ui.cmp._EditorConf.menuDefNonEn=[["1","card1",_("Main")],["2","card2",_('Module "Files need translate"')],["3","card3",_('Module "Files need update"')],["4","card4",_('Module "Files with error"')],["5","card5",_('Module "Files need reviewed"')],["6","card6",_('Module "All files"')]];ui.cmp._EditorConf.menuStore=new Ext.data.SimpleStore({id:0,fields:[{name:"id"},{name:"card"},{name:"label"}]});ui.cmp._EditorConf.viewMenu=Ext.extend(Ext.DataView,{id:"conf-menu-view",tpl:ui.cmp._EditorConf.tplMenu,singleSelect:true,overClass:"x-view-over",itemSelector:"div.menu-wrap",store:ui.cmp._EditorConf.menuStore,listeners:{selectionchange:function(c){var d=c.getSelectedRecords();Ext.getCmp("confCard").layout.setActiveItem("conf-card-"+d[0].data.id)}}});ui.cmp._EditorCmd2Conf.themeStore=new Ext.data.SimpleStore({fields:["themeFile",{name:"themeName",type:"string"}],data:[[false,_("No theme")],["default",_("Default theme")],["cobalt",_("Cobalt")],["eclipse",_("Eclipse")],["elegant",_("Elegant")],["monokai",_("Monokai")],["neat",_("Neat")],["night",_("Night")],["rubyblue",_("RubyBlue")]]});ui.cmp._EditorConf.themeStore=new Ext.data.SimpleStore({fields:["themeFile",{name:"themeName",type:"string"}],data:[["themes/ExtJsThemes/black/css/xtheme-black.css",_("Black")],["themes/empty.css",_("Default")],["themes/ExtJsThemes/darkgray/css/xtheme-darkgray.css",_("DarkGray")],["js/ExtJs/resources/css/xtheme-gray.css",_("Gray")],["themes/ExtJsThemes/gray-extend/css/xtheme-gray-extend.css",_("Gray Extend")],["themes/ExtJsThemes/indigo/css/xtheme-indigo.css",_("Indigo")],["themes/ExtJsThemes/midnight/css/xtheme-midnight.css",_("Midnight")],["themes/ExtJsThemes/olive/css/xtheme-olive.css",_("Olive")],["themes/ExtJsThemes/purple/css/xtheme-purple.css",_("Purple")],["themes/ExtJsThemes/silverCherry/css/xtheme-silverCherry.css",_("SilverCherry")],["themes/ExtJsThemes/ubuntu_human/css/xtheme-human.css",_("Ubuntu Human")]]});ui.cmp._EditorConf.uiLangStore=new Ext.data.SimpleStore({fields:["uiLang",{name:"uiLangName",type:"string"}],data:[["default",_("Default language, if available")],["en",_("English")],["fr",_("French")],["ru",_("Russian")],["es",_("Spanish")],["ar",_("Arabic")]]});ui.cmp._EditorConf.CommitChange=new Ext.util.DelayedTask(function(){new ui.task.UpdateConfTask({module:this.module,itemName:this.itemName,value:this.getValue()})});ui.cmp._EditorConf.card1=Ext.extend(Ext.TabPanel,{id:"conf-card-1",autoScroll:true,activeTab:0,defaults:{bodyStyle:"padding: 5px;",autoHeight:true,autoScroll:true},initComponent:function(){Ext.apply(this,{items:[{title:_("User Interface"),iconCls:"iconUI",labelAlign:"top",layout:"form",items:[{xtype:"fieldset",title:_("Main menu"),iconCls:"iconMenu",items:[{xtype:"spinnerfield",width:60,name:"PhDOE.user.conf.main.mainMenuWidth",module:"main",itemName:"mainMenuWidth",value:PhDOE.user.conf.main.mainMenuWidth||300,fieldLabel:_("Main menu width"),minValue:0,maxValue:10000,accelerate:true,enableKeyEvents:true,listeners:{keyup:function(){var c=Ext.getCmp("main-menu-panel"),d=this.getValue();PhDOE.user.conf.main.mainMenuWidth=d;c.setWidth(d);c.ownerCt.doLayout();ui.cmp._EditorConf.CommitChange.delay(1000,null,this)},spin:function(){var c=Ext.getCmp("main-menu-panel"),d=this.getValue();PhDOE.user.conf.main.mainMenuWidth=d;c.setWidth(d);c.ownerCt.doLayout();ui.cmp._EditorConf.CommitChange.delay(1000,null,this)}}}]},{xtype:"fieldset",iconCls:"iconThemes",title:_("Appearance"),items:[{xtype:"combo",fieldLabel:_("Choose a theme"),id:"conf-combo-theme",valueField:"themeFile",displayField:"themeName",triggerAction:"all",mode:"local",forceSelection:true,editable:false,value:PhDOE.user.conf.main.theme,store:ui.cmp._EditorConf.themeStore,listeners:{render:function(){Ext.getCmp("conf-combo-theme").store.sort("themeName")},select:function(e){var d=e.getValue();Ext.get("appTheme").dom.href=d;new ui.task.UpdateConfTask({module:"main",itemName:"theme",value:d})}}},{xtype:"combo",fieldLabel:_("Force an UI language"),id:"conf-combo-ui-lang",valueField:"uiLang",displayField:"uiLangName",triggerAction:"all",mode:"local",forceSelection:true,editable:false,value:PhDOE.user.conf.main.uiLang||"default",store:ui.cmp._EditorConf.uiLangStore,listeners:{select:function(e){var d=e.getValue();new ui.task.UpdateConfTask({module:"main",itemName:"uiLang",value:d})}}}]},{xtype:"fieldset",title:_("On save file"),iconCls:"iconSaveFile",autoHeight:true,defaults:{hideLabel:true},defaultType:"radio",items:[{autoHeight:true,name:"PhDOE.user.conf.main.onSaveFile",module:"main",itemName:"onSaveFile",checked:(PhDOE.user.conf.main.onSaveFile==="ask-me")?true:false,boxLabel:_("Ask me if I want to check for error before saving the file"),inputValue:"ask-me",listeners:{check:function(c){if(c.checked){new ui.task.UpdateConfTask({module:"main",itemName:"onSaveFile",value:c.getRawValue()})}}}},{autoHeight:true,name:"PhDOE.user.conf.main.onSaveFile",module:"main",itemName:"onSaveFile",checked:(PhDOE.user.conf.main.onSaveFile==="always")?true:false,boxLabel:_("Always check for error before saving the file"),inputValue:"always",listeners:{check:function(c){if(c.checked){new ui.task.UpdateConfTask({module:"main",itemName:"onSaveFile",value:c.getRawValue()})}}}},{autoHeight:true,name:"PhDOE.user.conf.main.onSaveFile",module:"main",itemName:"onSaveFile",checked:(PhDOE.user.conf.main.onSaveFile==="never")?true:false,boxLabel:_("Never check for error before saving the file"),inputValue:"never",listeners:{check:function(c){if(c.checked){new ui.task.UpdateConfTask({module:"main",itemName:"onSaveFile",value:c.getRawValue()})}}}}]},{xtype:"checkbox",name:"PhDOE.user.conf.main.displayENWork",checked:PhDOE.user.conf.main.displayENWork,boxLabel:_('Display EN work in "Work in progress" & "Patches for review" modules'),listeners:{check:function(c){new ui.task.UpdateConfTask({module:"main",itemName:"displayENWork",value:c.getValue()})}}}]},{title:_("External Data"),iconCls:"iconExternalData",items:[{xtype:"fieldset",title:_("About mails"),iconCls:"iconMailing",defaults:{hideLabel:true},defaultType:"checkbox",items:[{autoHeight:true,name:"PhDOE.user.conf.main.loadMailsAtStartUp",checked:PhDOE.user.conf.main.loadMailsAtStartUp,boxLabel:_("Load mail at startUp"),listeners:{check:function(c){new ui.task.UpdateConfTask({module:"main",itemName:"loadMailsAtStartUp",value:c.getValue()})}}}]},{xtype:"fieldset",title:_("About bugs"),iconCls:"iconBugs",defaults:{hideLabel:true},defaultType:"checkbox",items:[{autoHeight:true,name:"PhDOE.user.conf.main.loadBugsAtStartUp",checked:PhDOE.user.conf.main.loadBugsAtStartUp,boxLabel:_("Load bugs at startUp"),listeners:{check:function(c){new ui.task.UpdateConfTask({module:"main",itemName:"loadBugsAtStartUp",value:c.getValue()})}}}]}]},{title:_("Editor"),iconCls:"iconEditor",items:[{xtype:"fieldset",title:_("Editor theme"),iconCls:"iconThemes",items:[{xtype:"combo",fieldLabel:_("Choose a theme"),id:"conf-combo-cm2-theme",valueField:"themeFile",displayField:"themeName",triggerAction:"all",mode:"local",forceSelection:true,editable:false,value:(PhDOE.user.conf.main.editorTheme||"default"),store:ui.cmp._EditorCmd2Conf.themeStore,listeners:{select:function(e){var d=e.getValue();new ui.task.UpdateConfTask({module:"main",itemName:"editorTheme",value:d})}}}]}]}]});ui.cmp._EditorConf.card1.superclass.initComponent.call(this)}});ui.cmp._EditorConf.card2=Ext.extend(Ext.TabPanel,{id:"conf-card-2",autoScroll:true,activeTab:0,defaults:{bodyStyle:"padding: 5px;",autoHeight:true,autoScroll:true},initComponent:function(){Ext.apply(this,{items:[{title:_("Menu"),iconCls:"iconMenu",items:[{xtype:"fieldset",title:_("Nb files to display"),iconCls:"iconFilesToDisplay",defaults:{hideLabel:true},items:[{xtype:"spinnerfield",width:60,name:"PhDOE.user.conf.newFile.nbDisplay",module:"newFile",itemName:"nbDisplay",value:PhDOE.user.conf.newFile.nbDisplay||0,boxLabel:_("files to display"),minValue:0,maxValue:10000,accelerate:true,enableKeyEvents:true,listeners:{keyup:function(){ui.cmp._EditorConf.CommitChange.delay(1000,null,this)},spin:function(){ui.cmp._EditorConf.CommitChange.delay(1000,null,this)}}},{xtype:"displayfield",value:_("0 means no limit"),style:{fontStyle:"italic"}}]}]},{title:_("User Interface"),iconCls:"iconUI",items:[{xtype:"fieldset",title:_("ScrollBars"),iconCls:"iconScrollBar",defaults:{hideLabel:true},defaultType:"checkbox",items:[{name:"PhDOE.user.conf.newFile.syncScrollbars",checked:PhDOE.user.conf.newFile.syncScrollbars,boxLabel:_("Synchronize scroll bars"),listeners:{check:function(c){new ui.task.UpdateConfTask({module:"newFile",itemName:"syncScrollbars",value:c.getValue()})}}}]},{xtype:"fieldset",title:_("Tools"),iconCls:"iconConf",defaults:{hideLabel:true},defaultType:"checkbox",items:[{xtype:"fieldset",checkboxToggle:true,collapsed:!PhDOE.user.conf.newFile.toolsPanelDisplay,title:_("Start with the panel open"),listeners:{collapse:function(){new ui.task.UpdateConfTask({module:"newFile",itemName:"toolsPanelDisplay",value:false})},expand:function(){new ui.task.UpdateConfTask({module:"newFile",itemName:"toolsPanelDisplay",value:true})}},items:[{xtype:"spinnerfield",width:60,name:"newFile.toolsPanelWidth",module:"newFile",itemName:"toolsPanelWidth",value:PhDOE.user.conf.newFile.toolsPanelWidth||375,fieldLabel:_("Panel width"),minValue:0,maxValue:10000,accelerate:true,enableKeyEvents:true,listeners:{keyup:function(){ui.cmp._EditorConf.CommitChange.delay(1000,null,this)},spin:function(){ui.cmp._EditorConf.CommitChange.delay(1000,null,this)}}}]}]},{xtype:"fieldset",title:_("Right panel"),iconCls:"iconUI",defaults:{hideLabel:true},defaultType:"radio",items:[{name:"PhDOE.user.conf.newFile.secondPanel",boxLabel:_("Display the original file"),inputValue:"originalFile",checked:(PhDOE.user.conf.newFile.secondPanel==="originalFile")?true:false,listeners:{check:function(c){if(c.checked){new ui.task.UpdateConfTask({module:"newFile",itemName:"secondPanel",value:c.getRawValue()})}}}},{name:"PhDOE.user.conf.newFile.secondPanel",boxLabel:_("Do not display a right panel"),inputValue:"none",checked:(!Ext.isDefined(PhDOE.user.conf.newFile.secondPanel)||PhDOE.user.conf.newFile.secondPanel==="none")?true:false,listeners:{check:function(c){if(c.checked){new ui.task.UpdateConfTask({module:"newFile",itemName:"secondPanel",value:c.getRawValue()})}}}}]}]}]});ui.cmp._EditorConf.card2.superclass.initComponent.call(this)}});ui.cmp._EditorConf.card3=Ext.extend(Ext.TabPanel,{id:"conf-card-3",autoScroll:true,activeTab:0,defaults:{bodyStyle:"padding: 5px;",autoHeight:true,autoScroll:true},initComponent:function(){Ext.apply(this,{items:[{title:_("Menu"),iconCls:"iconMenu",items:[{xtype:"fieldset",title:_("Nb files to display"),iconCls:"iconFilesToDisplay",defaults:{hideLabel:true},defaultType:"spinnerfield",items:[{width:60,name:"PhDOE.user.conf.needUpdate.nbDisplay",module:"needUpdate",itemName:"nbDisplay",value:PhDOE.user.conf.needUpdate.nbDisplay||0,boxLabel:_("files to display"),minValue:0,maxValue:10000,accelerate:true,enableKeyEvents:true,listeners:{keyup:function(){ui.cmp._EditorConf.CommitChange.delay(1000,null,this)},spin:function(){ui.cmp._EditorConf.CommitChange.delay(1000,null,this)}}},{xtype:"displayfield",value:_("0 means no limit"),style:{fontStyle:"italic"}}]}]},{title:_("User Interface"),iconCls:"iconUI",items:[{xtype:"fieldset",title:_("ScrollBars"),iconCls:"iconScrollBar",defaults:{hideLabel:true},defaultType:"checkbox",items:[{name:"needUpdate.syncScrollbars",checked:PhDOE.user.conf.needUpdate.syncScrollbars,boxLabel:_("Synchronize scroll bars"),listeners:{check:function(c){new ui.task.UpdateConfTask({module:"needUpdate",itemName:"syncScrollbars",value:c.getValue()})}}}]},{xtype:"fieldset",title:_("Tools"),iconCls:"iconConf",defaults:{hideLabel:true},defaultType:"checkbox",items:[{name:"needUpdate.toolsPanelLogLoad",checked:PhDOE.user.conf.needUpdate.toolsPanelLogLoad,boxLabel:_("Automatically load the log when displaying the file"),listeners:{check:function(c){new ui.task.UpdateConfTask({module:"needUpdate",itemName:"toolsPanelLogLoad",value:c.getValue()})}}},{xtype:"fieldset",checkboxToggle:true,collapsed:!PhDOE.user.conf.needUpdate.toolsPanelDisplay,title:_("Start with the panel open"),listeners:{collapse:function(){new ui.task.UpdateConfTask({module:"needUpdate",itemName:"toolsPanelDisplay",value:false})},expand:function(){new ui.task.UpdateConfTask({module:"needUpdate",itemName:"toolsPanelDisplay",value:true})}},items:[{xtype:"spinnerfield",width:60,name:"needUpdate.toolsPanelWidth",module:"needUpdate",itemName:"toolsPanelWidth",value:PhDOE.user.conf.needUpdate.toolsPanelWidth||375,fieldLabel:_("Panel width"),minValue:0,maxValue:10000,accelerate:true,enableKeyEvents:true,listeners:{keyup:function(){ui.cmp._EditorConf.CommitChange.delay(1000,null,this)},spin:function(){ui.cmp._EditorConf.CommitChange.delay(1000,null,this)}}}]}]},{xtype:"fieldset",title:_("Diff view"),iconCls:"iconDiffView",defaults:{hideLabel:true},defaultType:"radio",items:[{xtype:"fieldset",checkboxToggle:true,collapsed:!PhDOE.user.conf.needUpdate.diffPanelDisplay,title:_("Start with the panel open"),listeners:{collapse:function(){new ui.task.UpdateConfTask({module:"needUpdate",itemName:"diffPanelDisplay",value:false})},expand:function(){new ui.task.UpdateConfTask({module:"needUpdate",itemName:"diffPanelDisplay",value:true})}},items:[{xtype:"spinnerfield",width:60,name:"needUpdate.diffPanelHeight",module:"needUpdate",itemName:"diffPanelHeight",value:PhDOE.user.conf.needUpdate.diffPanelHeight||150,fieldLabel:_("Panel height"),minValue:0,maxValue:10000,accelerate:true,enableKeyEvents:true,listeners:{keyup:function(){ui.cmp._EditorConf.CommitChange.delay(1000,null,this)},spin:function(){ui.cmp._EditorConf.CommitChange.delay(1000,null,this)}}}]},{name:"needUpdate.diffMethod",checked:(PhDOE.user.conf.needUpdate.diffMethod==="using-viewvc")?true:false,boxLabel:_("Using ViewVc from php web site"),inputValue:"using-viewvc",listeners:{check:function(c){if(c.checked){new ui.task.UpdateConfTask({module:"needUpdate",itemName:"diffMethod",value:c.getRawValue()})}}}},{name:"needUpdate.diffMethod",checked:(PhDOE.user.conf.needUpdate.diffMethod==="using-exec")?true:false,boxLabel:_("Using diff -u command line"),inputValue:"using-exec",listeners:{check:function(c){if(c.checked){new ui.task.UpdateConfTask({module:"needUpdate",itemName:"diffMethod",value:c.getRawValue()})}}}}]}]}]});ui.cmp._EditorConf.card3.superclass.initComponent.call(this)}});ui.cmp._EditorConf.card4=Ext.extend(Ext.TabPanel,{id:"conf-card-4",autoScroll:true,activeTab:0,defaults:{bodyStyle:"padding: 5px;",autoHeight:true,autoScroll:true},initComponent:function(){Ext.apply(this,{items:[{title:_("Menu"),iconCls:"iconMenu",items:[{xtype:"fieldset",title:_("Nb files to display"),iconCls:"iconFilesToDisplay",defaults:{hideLabel:true},defaultType:"spinnerfield",items:[{width:60,name:"PhDOE.user.conf.error.nbDisplay",module:"error",itemName:"nbDisplay",value:PhDOE.user.conf.error.nbDisplay||0,boxLabel:_("files to display"),minValue:0,maxValue:10000,accelerate:true,enableKeyEvents:true,listeners:{keyup:function(){ui.cmp._EditorConf.CommitChange.delay(1000,null,this)},spin:function(){ui.cmp._EditorConf.CommitChange.delay(1000,null,this)}}},{xtype:"displayfield",value:_("0 means no limit"),style:{fontStyle:"italic"}}]},{hidden:(PhDOE.user.lang==="en"),xtype:"fieldset",title:_("Error type"),iconCls:"iconFilesError",defaults:{hideLabel:true},defaultType:"checkbox",items:[{name:"error.skipNbLiteralTag",checked:PhDOE.user.conf.error.skipNbLiteralTag,boxLabel:_("Skip nbLiteralTag error"),listeners:{check:function(c){new ui.task.UpdateConfTask({module:"error",itemName:"skipNbLiteralTag",value:c.getValue()})}}}]}]},{title:_("User Interface"),iconCls:"iconUI",items:[{xtype:"fieldset",title:_("ScrollBars"),iconCls:"iconScrollBar",defaults:{hideLabel:true},defaultType:"checkbox",items:[{name:"error.syncScrollbars",checked:PhDOE.user.conf.error.syncScrollbars,boxLabel:_("Synchronize scroll bars"),listeners:{check:function(c){new ui.task.UpdateConfTask({module:"error",itemName:"syncScrollbars",value:c.getValue()})}}}]},{xtype:"fieldset",title:_("Tools"),iconCls:"iconConf",defaults:{hideLabel:true},defaultType:"checkbox",items:[{name:"error.toolsPanelLogLoad",checked:PhDOE.user.conf.error.toolsPanelLogLoad,boxLabel:_("Automatically load the log when displaying the file"),listeners:{check:function(c){new ui.task.UpdateConfTask({module:"error",itemName:"toolsPanelLogLoad",value:c.getValue()})}}},{name:"error.toolsPanelEntitiesLoad",checked:PhDOE.user.conf.error.toolsPanelEntitiesLoad,boxLabel:_("Automatically load entities data when displaying the file"),listeners:{check:function(c){new ui.task.UpdateConfTask({module:"error",itemName:"toolsPanelEntitiesLoad",value:c.getValue()})}}},{name:"error.toolsPanelAcronymsLoad",checked:PhDOE.user.conf.error.toolsPanelAcronymsLoad,boxLabel:_("Automatically load acronyms data when displaying the file"),listeners:{check:function(c){new ui.task.UpdateConfTask({module:"error",itemName:"toolsPanelAcronymsLoad",value:c.getValue()})}}},{xtype:"fieldset",checkboxToggle:true,collapsed:!PhDOE.user.conf.error.toolsPanelDisplay,title:_("Start with the panel open"),listeners:{collapse:function(){new ui.task.UpdateConfTask({module:"error",itemName:"toolsPanelDisplay",value:false})},expand:function(){new ui.task.UpdateConfTask({module:"error",itemName:"toolsPanelDisplay",value:true})}},items:[{xtype:"spinnerfield",width:60,name:"error.toolsPanelWidth",module:"error",itemName:"toolsPanelWidth",value:PhDOE.user.conf.error.toolsPanelWidth||375,fieldLabel:_("Panel width"),minValue:0,maxValue:10000,accelerate:true,enableKeyEvents:true,listeners:{keyup:function(){ui.cmp._EditorConf.CommitChange.delay(1000,null,this)},spin:function(){ui.cmp._EditorConf.CommitChange.delay(1000,null,this)}}}]}]},{xtype:"fieldset",title:_("Error description"),iconCls:"iconFilesError",defaults:{hideLabel:true},defaultType:"radio",items:[{xtype:"fieldset",checkboxToggle:true,collapsed:!PhDOE.user.conf.error.descPanelDisplay,title:_("Start with the panel open"),listeners:{collapse:function(){new ui.task.UpdateConfTask({module:"error",itemName:"descPanelDisplay",value:false})},expand:function(){new ui.task.UpdateConfTask({module:"error",itemName:"descPanelDisplay",value:true})}},items:[{xtype:"spinnerfield",width:60,name:"error.descPanelHeight",module:"error",itemName:"descPanelHeight",value:PhDOE.user.conf.error.descPanelHeight||150,fieldLabel:_("Panel height"),minValue:0,maxValue:10000,accelerate:true,enableKeyEvents:true,listeners:{keyup:function(){ui.cmp._EditorConf.CommitChange.delay(1000,null,this)},spin:function(){ui.cmp._EditorConf.CommitChange.delay(1000,null,this)}}}]}]}]}]});ui.cmp._EditorConf.card4.superclass.initComponent.call(this)}});ui.cmp._EditorConf.card5=Ext.extend(Ext.TabPanel,{id:"conf-card-5",autoScroll:true,activeTab:0,defaults:{bodyStyle:"padding: 5px;",autoHeight:true,autoScroll:true},initComponent:function(){Ext.apply(this,{items:[{title:_("Menu"),iconCls:"iconMenu",items:[{xtype:"fieldset",title:_("Nb files to display"),iconCls:"iconFilesToDisplay",defaults:{hideLabel:true},defaultType:"spinnerfield",items:[{width:60,name:"reviewed.nbDisplay",module:"reviewed",itemName:"nbDisplay",value:PhDOE.user.conf.reviewed.nbDisplay||0,boxLabel:_("files to display"),minValue:0,maxValue:10000,accelerate:true,enableKeyEvents:true,listeners:{keyup:function(){ui.cmp._EditorConf.CommitChange.delay(1000,null,this)},spin:function(){ui.cmp._EditorConf.CommitChange.delay(1000,null,this)}}},{xtype:"displayfield",value:_("0 means no limit"),style:{fontStyle:"italic"}}]}]},{title:_("User Interface"),iconCls:"iconUI",items:[{xtype:"fieldset",title:_("ScrollBars"),iconCls:"iconScrollBar",defaults:{hideLabel:true},defaultType:"checkbox",items:[{name:"reviewed.syncScrollbars",checked:PhDOE.user.conf.reviewed.syncScrollbars,boxLabel:_("Synchronize scroll bars"),listeners:{check:function(c){new ui.task.UpdateConfTask({module:"reviewed",itemName:"syncScrollbars",value:c.getValue()})}}}]},{xtype:"fieldset",title:_("Tools"),iconCls:"iconConf",defaults:{hideLabel:true},defaultType:"checkbox",items:[{name:"reviewed.toolsPanelLogLoad",checked:PhDOE.user.conf.reviewed.toolsPanelLogLoad,boxLabel:_("Automatically load the log when displaying the file"),listeners:{check:function(c){new ui.task.UpdateConfTask({module:"reviewed",itemName:"toolsPanelLogLoad",value:c.getValue()})}}},{xtype:"fieldset",checkboxToggle:true,collapsed:!PhDOE.user.conf.reviewed.toolsPanelDisplay,title:_("Start with the panel open"),listeners:{collapse:function(){new ui.task.UpdateConfTask({module:"reviewed",itemName:"toolsPanelDisplay",value:false})},expand:function(){new ui.task.UpdateConfTask({module:"reviewed",itemName:"toolsPanelDisplay",value:true})}},items:[{xtype:"spinnerfield",width:60,name:"reviewed.toolsPanelWidth",module:"reviewed",itemName:"toolsPanelWidth",value:PhDOE.user.conf.reviewed.toolsPanelWidth||375,fieldLabel:_("Panel width"),minValue:0,maxValue:10000,accelerate:true,enableKeyEvents:true,listeners:{keyup:function(){ui.cmp._EditorConf.CommitChange.delay(1000,null,this)},spin:function(){ui.cmp._EditorConf.CommitChange.delay(1000,null,this)}}}]}]}]}]});ui.cmp._EditorConf.card5.superclass.initComponent.call(this)}});ui.cmp._EditorConf.card6=Ext.extend(Ext.TabPanel,{id:"conf-card-6",autoScroll:true,activeTab:0,defaults:{bodyStyle:"padding: 5px;",autoHeight:true,autoScroll:true},initComponent:function(){Ext.apply(this,{items:[{title:_("User Interface"),iconCls:"iconUI",items:[{xtype:"fieldset",title:_("Tools"),iconCls:"iconConf",defaults:{hideLabel:true},defaultType:"checkbox",items:[{name:"allFiles.toolsPanelLogLoad",checked:PhDOE.user.conf.allFiles.toolsPanelLogLoad,boxLabel:_("Automatically load the log when displaying the file"),listeners:{check:function(c){new ui.task.UpdateConfTask({module:"allFiles",itemName:"toolsPanelLogLoad",value:c.getValue()})}}},{name:"allFiles.toolsPanelEntitiesLoad",checked:PhDOE.user.conf.allFiles.toolsPanelEntitiesLoad,boxLabel:_("Automatically load entities data when displaying the file"),listeners:{check:function(c){new ui.task.UpdateConfTask({module:"allFiles",itemName:"toolsPanelEntitiesLoad",value:c.getValue()})}}},{name:"allFiles.toolsPanelAcronymsLoad",checked:PhDOE.user.conf.allFiles.toolsPanelAcronymsLoad,boxLabel:_("Automatically load acronyms data when displaying the file"),listeners:{check:function(c){new ui.task.UpdateConfTask({module:"allFiles",itemName:"toolsPanelAcronymsLoad",value:c.getValue()})}}},{xtype:"fieldset",checkboxToggle:true,collapsed:!PhDOE.user.conf.allFiles.toolsPanelDisplay,title:_("Start with the panel open"),listeners:{collapse:function(){new ui.task.UpdateConfTask({module:"allFiles",itemName:"toolsPanelDisplay",value:false})},expand:function(){new ui.task.UpdateConfTask({module:"allFiles",itemName:"toolsPanelDisplay",value:true})}},items:[{xtype:"spinnerfield",width:60,name:"allFiles.toolsPanelWidth",module:"allFiles",itemName:"toolsPanelWidth",value:PhDOE.user.conf.allFiles.toolsPanelWidth||375,fieldLabel:_("Panel width"),minValue:0,maxValue:10000,accelerate:true,enableKeyEvents:true,listeners:{keyup:function(){ui.cmp._EditorConf.CommitChange.delay(1000,null,this)},spin:function(){ui.cmp._EditorConf.CommitChange.delay(1000,null,this)}}}]}]}]}]});ui.cmp._EditorConf.card6.superclass.initComponent.call(this)}});ui.cmp.EditorConf=Ext.extend(Ext.Window,{id:"win-conf",layout:"border",width:700,height:470,iconCls:"iconConf",title:_("Configuration"),modal:true,plain:true,bodyBorder:false,closeAction:"hide",buttons:[{text:_("Close"),handler:function(){Ext.getCmp("win-conf").hide()}}],listeners:{show:function(){var c=Ext.getCmp("conf-menu-view");c.select(c.getNode(0))}},initComponent:function(){if(PhDOE.user.lang==="en"){ui.cmp._EditorConf.menuStore.loadData(ui.cmp._EditorConf.menuDefEn)}else{ui.cmp._EditorConf.menuStore.loadData(ui.cmp._EditorConf.menuDefNonEn)}Ext.apply(this,{items:[{id:"confMenu",region:"west",border:false,width:190,autoScroll:true,items:[new ui.cmp._EditorConf.viewMenu()]},{id:"confCard",region:"center",border:false,layout:"card",width:375,frame:true,activeItem:0,bbar:new Ext.ux.StatusBar({defaultText:_("All changes take effect immediately"),defaultIconCls:"confStatusBar"}),items:[new ui.cmp._EditorConf.card1(),new ui.cmp._EditorConf.card2(),new ui.cmp._EditorConf.card3(),new ui.cmp._EditorConf.card4(),new ui.cmp._EditorConf.card5(),new ui.cmp._EditorConf.card6()]}]});ui.cmp.EditorConf.superclass.initComponent.call(this)}});Ext.namespace("ui","ui.cmp","ui.cmp._EmailPrompt");ui.cmp.EmailPrompt=Ext.extend(Ext.Window,{title:_("Send an email"),width:500,height:300,minWidth:300,minHeight:200,layout:"fit",plain:true,bodyStyle:"padding:5px;",buttonAlign:"center",iconCls:"iconSendEmail",closeAction:"hide",buttons:[{text:_("Send"),handler:function(){var d=this.ownerCt.ownerCt,c=d.findByType("form").shift().getForm().getValues();XHR({params:{task:"sendEmail",to:c.to,subject:c.subject,msg:c.msg},success:function(){d.hide();Ext.Msg.alert(_("Status"),String.format(_("Email sent to {0} with success!"),d.name.ucFirst()),Ext.emptyFn)},failure:function(){PhDOE.winForbidden()}})}},{text:_("Cancel"),handler:function(){this.ownerCt.ownerCt.hide()}}],setData:function(d,c){this.name=d;this.email=c;this.items.items[0].items.items[0].setValue('"'+this.name.ucFirst()+'" <'+this.email+">");this.items.items[0].items.items[1].setValue("");this.items.items[0].items.items[2].setValue("")},initComponent:function(){Ext.apply(this,{items:new Ext.form.FormPanel({baseCls:"x-plain",labelWidth:55,defaultType:"textfield",items:[{name:"to",fieldLabel:_("Send To"),readOnly:true,anchor:"100%",value:""},{name:"subject",fieldLabel:_("Subject"),anchor:"100%"},{name:"msg",xtype:"textarea",hideLabel:true,anchor:"100% -53"}]})});ui.cmp.EmailPrompt.superclass.initComponent.call(this)}});Ext.namespace("ui","ui.cmp","ui.cmp._EntitiesAcronymsPanel");ui.cmp._EntitiesAcronymsPanel.grid=Ext.extend(Ext.grid.GridPanel,{onRowClick:function(c){var d=c.getSelectionModel().getSelected().data;Ext.getCmp(this.dataType+"-details-"+this.fid).update(d.value)},onRowDblClick:function(d){var f=d.getSelectionModel().getSelected().data,e=Ext.getCmp(this.prefix+"-"+this.ftype+"-FILE-"+this.fid),c=Ext.util.JSON.decode(e.getCursorPosition()),g=(this.dataType==="entities")?"&"+f.items+";":"<acronym>"+f.items+"</acronym>";e.insertIntoLine(c.line,c.caracter,g)},initComponent:function(){var c;if(this.dataType==="entities"){c="./do/getEntities"}else{if(this.dataType==="acronyms"){c="./do/getAcronyms"}}Ext.apply(this,{region:"center",split:true,loadMask:true,autoScroll:true,bodyBorder:false,border:false,autoExpandColumn:this.dataType,columns:[{id:"items",header:_("Items"),sortable:true,dataIndex:"items"},{header:_("From"),sortable:true,dataIndex:"from",width:50}],viewConfig:{forceFit:true,emptyText:'<div style="text-align: center">'+_("You must manually load this data.<br>Use the refresh button !")+"<br><br>"+_("(You can change this behavior by setting an option in the configuration window)")+"</div>",deferEmptyText:false},sm:new Ext.grid.RowSelectionModel({singleSelect:true}),store:new Ext.data.Store({autoLoad:this.loadStore,proxy:new Ext.data.HttpProxy({url:c}),listeners:{scope:this,load:function(){if(this.dataType==="entities"){Ext.getCmp(this.prefix+"-"+this.fid).panEntities=true}else{if(this.dataType==="acronyms"){Ext.getCmp(this.prefix+"-"+this.fid).panAcronyms=true}}Ext.getCmp("main-panel").fireEvent("tabLoaded",this.prefix,this.fid)}},reader:new Ext.data.JsonReader({root:"Items",totalProperty:"nbItems",idProperty:"id",fields:[{name:"id"},{name:"from"},{name:"items"},{name:"value"}]})}),tbar:[{scope:this,tooltip:_("<b>Load/Refresh</b>"),iconCls:"iconRefresh",handler:function(){this.store.reload()}},_("Filter: ")," ",new Ext.form.TwinTriggerField({width:180,hideTrigger1:true,enableKeyEvents:true,validateOnBlur:false,validationEvent:false,trigger1Class:"x-form-clear-trigger",trigger2Class:"x-form-search-trigger",listeners:{specialkey:function(d,g){if(g.getKey()===g.ENTER){this.onTrigger2Click()}}},onTrigger1Click:function(){this.setValue("");this.triggers[0].hide();this.setSize(180,10);this.ownerCt.ownerCt.store.clearFilter()},onTrigger2Click:function(){var d=this.getValue(),e;if(d===""||d.length<3){this.markInvalid(_("Your filter must contain at least 3 characters"));return}this.clearInvalid();this.triggers[0].show();this.setSize(180,10);e=new RegExp(d,"i");this.ownerCt.ownerCt.store.filterBy(function(f){if(e.test(f.data.from)||e.test(f.data.items)||e.test(f.data.value)){return true}else{return false}},this)}})]});ui.cmp._EntitiesAcronymsPanel.grid.superclass.initComponent.call(this);this.on("rowclick",this.onRowClick,this);this.on("rowdblclick",this.onRowDblClick,this)}});ui.cmp.EntitiesAcronymsPanel=Ext.extend(Ext.Panel,{initComponent:function(){var c;if(this.dataType==="entities"){c=_("Click on a row to display the content of the entitie.<br>Double-click on it to insert it at the cursor position.")}else{if(this.dataType==="acronyms"){c=_("Click on a row to display the content of the acronym.<br>Double-click on it to insert it at the cursor position.")}}Ext.apply(this,{layout:"border",border:false,items:[new ui.cmp._EntitiesAcronymsPanel.grid({dataType:this.dataType,prefix:this.prefix,fid:this.fid,ftype:this.ftype,loadStore:this.loadStore}),{xtype:"panel",id:this.dataType+"-details-"+this.fid,region:"south",split:true,height:100,autoScroll:true,bodyBorder:false,bodyCssClass:this.dataType+"-details",html:c}]});ui.cmp.EntitiesAcronymsPanel.superclass.initComponent.call(this)}});Ext.namespace("ui","ui.cmp","ui.cmp._ErrorFileGrid");ui.cmp._ErrorFileGrid.store=new Ext.data.GroupingStore({proxy:new Ext.data.HttpProxy({url:"./do/getFilesError"}),reader:new Ext.data.JsonReader({root:"Items",totalProperty:"nbItems",idProperty:"id",fields:[{name:"id"},{name:"path"},{name:"name"},{name:"maintainer"},{name:"type"},{name:"value_en"},{name:"value_lang"},{name:"fileModifiedEN"},{name:"fileModifiedLang"}]}),sortInfo:{field:"path",direction:"ASC"},groupField:"path",listeners:{datachanged:function(e){var c=e.getCount(),d=false;if(PhDOE.user.haveKarma){e.each(function(f){if(f.data.maintainer==PhDOE.user.login){d++}},this)}Ext.getDom("acc-error-nb").innerHTML=c+(d?(" - "+String.format(_("{0} mine"),d)):"")}}});ui.cmp._ErrorFileGrid.columns=[{id:"name",header:_("Files"),sortable:true,dataIndex:"name",renderer:function(d,g,e){var j="",h,f,c;c=(PhDOE.user.isAnonymous)?"anonymous":PhDOE.user.login;if(e.data.fileModifiedEN){h=Ext.util.JSON.decode(e.data.fileModifiedEN);if(h.user===c&&h.anonymousIdent===PhDOE.user.anonymousIdent){j=_("File EN modified by me")+"<br>"}else{j=String.format(_("File EN modified by {0}"),h.user)+"<br>"}}if(e.data.fileModifiedLang){f=Ext.util.JSON.decode(e.data.fileModifiedLang);if(f.user===c&&f.anonymousIdent===PhDOE.user.anonymousIdent){j+=String.format(_("File {0} modified by me"),PhDOE.user.lang.ucFirst())}else{j+=String.format(_("File {0} modified by {1}"),PhDOE.user.lang.ucFirst(),f.user)}}if(j!==""){return"<span ext:qtip='"+j+"'>"+d+"</span>"}else{return d}}},{header:_("Type"),width:45,sortable:true,dataIndex:"type"},{header:_("Maintainer"),width:45,sortable:true,dataIndex:"maintainer"},{header:_("Path"),dataIndex:"path",hidden:true}];ui.cmp._ErrorFileGrid.view=new Ext.grid.GroupingView({emptyText:'<div style="text-align: center;">'+_("No Files")+"</div>",deferEmptyText:false,forceFit:true,startCollapsed:true,groupTextTpl:'{[values.rs[0].data.path]} ({[values.rs.length]} {[values.rs.length > 1 ? "'+_("Files")+'" : "'+_("File")+'"]})',getRowClass:function(d){if(d.data.fileModifiedEN||d.data.fileModifiedLang){var f=Ext.util.JSON.decode(d.data.fileModifiedEN),e=Ext.util.JSON.decode(d.data.fileModifiedLang),c;c=(PhDOE.user.isAnonymous)?"anonymous":PhDOE.user.login;return((f.user===c&&f.anonymousIdent===PhDOE.user.anonymousIdent)||(e.user===c&&e.anonymousIdent===PhDOE.user.anonymousIdent))?"fileModifiedByMe":"fileModifiedByAnother"}return false}});ui.cmp._ErrorFileGrid.menu=function(c){Ext.apply(this,c);this.init();ui.cmp._ErrorFileGrid.menu.superclass.constructor.call(this)};Ext.extend(ui.cmp._ErrorFileGrid.menu,Ext.menu.Menu,{init:function(){Ext.apply(this,{items:[{scope:this,text:"<b>"+_("Edit in a new tab")+"</b>",iconCls:"iconFilesError",handler:function(){this.grid.fireEvent("rowdblclick",this.grid,this.rowIdx,this.event)}},{scope:this,hidden:this.hideDiffMenu,text:_("View diff..."),iconCls:"iconViewDiff",menu:new Ext.menu.Menu({items:[{scope:this,hidden:(this.grid.store.getAt(this.rowIdx).data.fileModifiedEN===false),text:String.format(_("... of the {0} file"),"EN"),handler:function(){Ext.getCmp("main-panel").openDiffTab({DiffType:"file",FileName:this.fname,FilePath:"en"+this.fpath})}},{scope:this,hidden:(this.grid.store.getAt(this.rowIdx).data.fileModifiedLang===false),text:String.format(_("... of the {0} file"),PhDOE.user.lang.ucFirst()),handler:function(){Ext.getCmp("main-panel").openDiffTab({DiffType:"file",FileName:this.fname,FilePath:PhDOE.user.lang+this.fpath})}}]})},"-",{text:_("About error type"),iconCls:"iconHelp",handler:function(){if(!Ext.getCmp("main-panel").findById("FE-help")){Ext.getCmp("main-panel").add({id:"FE-help",title:_("About error type"),iconCls:"iconHelp",closable:true,autoScroll:true,autoLoad:"./error"})}Ext.getCmp("main-panel").setActiveTab("FE-help")}}]})}});ui.cmp.ErrorFileGrid=Ext.extend(Ext.grid.GridPanel,{loadMask:true,border:false,autoExpandColumn:"name",enableDragDrop:true,ddGroup:"mainPanelDDGroup",view:ui.cmp._ErrorFileGrid.view,columns:ui.cmp._ErrorFileGrid.columns,listeners:{render:function(c){c.view.refresh()}},onRowContextMenu:function(d,j,h){h.stopEvent();var g=d.store.getAt(j).data,f=g.path,c=g.name;d.getSelectionModel().selectRow(j);new ui.cmp._ErrorFileGrid.menu({hideDiffMenu:(g.fileModifiedEN===false&&g.fileModifiedLang===false),grid:d,event:h,rowIdx:j,lang:PhDOE.user.lang,fpath:f,fname:c}).showAt(h.getXY())},onRowDblClick:function(c,f,d){this.openFile(c.store.getAt(f).data.id)},openFile:function(j){var g=this.store.getById(j),f=g.data.path,c=g.data.name,h=Ext.util.md5("FE-"+PhDOE.user.lang+f+c),d=[],k,e;if(!Ext.getCmp("main-panel").findById("FE-"+h)){d=[];this.store.each(function(l){if(l.data.path===f&&l.data.name===c&&!d[l.data.type]){d.push(l.data.type)}});k=(PhDOE.user.lang==="en")?[new ui.cmp.VCSLogGrid({layout:"fit",title:String.format(_("{0} Log"),PhDOE.user.lang.ucFirst()),prefix:"FE-LANG",fid:h,fpath:PhDOE.user.lang+f,fname:c,loadStore:PhDOE.user.conf.error.toolsPanelLogLoad})]:[new ui.cmp.VCSLogGrid({layout:"fit",title:String.format(_("{0} Log"),PhDOE.user.lang.ucFirst()),prefix:"FE-LANG",fid:h,fpath:PhDOE.user.lang+f,fname:c,loadStore:PhDOE.user.conf.error.toolsPanelLogLoad}),new ui.cmp.VCSLogGrid({layout:"fit",title:String.format(_("{0} Log"),"En"),prefix:"FE-EN",fid:h,fpath:"en"+f,fname:c,loadStore:PhDOE.user.conf.error.toolsPanelLogLoad})];e=(PhDOE.user.lang==="en")?[new ui.cmp.FilePanel({id:"FE-LANG-PANEL-"+h,region:"center",title:String.format(_("{0} File: "),PhDOE.user.lang)+f+c,prefix:"FE",ftype:"LANG",spellCheck:PhDOE.user.conf.error.enableSpellCheckLang,spellCheckConf:{module:"error",itemName:"enableSpellCheckLang"},fid:h,fpath:f,fname:c,lang:PhDOE.user.lang,parser:"xml",storeRecord:g,syncScrollCB:false,syncScroll:false})]:[new ui.cmp.FilePanel({id:"FE-LANG-PANEL-"+h,region:"center",title:String.format(_("{0} File: "),PhDOE.user.lang.ucFirst())+f+c,prefix:"FE",ftype:"LANG",spellCheck:PhDOE.user.conf.error.enableSpellCheckLang,spellCheckConf:{module:"error",itemName:"enableSpellCheckLang"},fid:h,fpath:f,fname:c,lang:PhDOE.user.lang,parser:"xml",storeRecord:g,syncScrollCB:true,syncScroll:true,syncScrollConf:{module:"error",itemName:"syncScrollbars"}}),new ui.cmp.FilePanel({id:"FE-EN-PANEL-"+h,region:"east",title:_("en File: ")+f+c,prefix:"FE",ftype:"EN",original:true,readOnly:true,openInNewTabBtn:true,fid:h,fpath:f,fname:c,lang:"en",parser:"xml",storeRecord:g,syncScroll:true,syncScrollConf:{module:"error",itemName:"syncScrollbars"}})];Ext.getCmp("main-panel").add({id:"FE-"+h,title:c,layout:"border",iconCls:"iconTabError",closable:true,tabLoaded:false,panVCSLang:!PhDOE.user.conf.errorDisplayLog,panVCSEn:(PhDOE.user.lang==="en")?true:!PhDOE.user.conf.errorDisplayLog,panLANGLoaded:false,panENLoaded:(PhDOE.user.lang==="en")?true:false,originTitle:c,defaults:{split:true},tabTip:String.format(_("File with error : in {0}"),f),listeners:{resize:function(l){(PhDOE.user.lang!=="en")?Ext.getCmp("FE-EN-PANEL-"+h).setWidth(l.getWidth()/2):""}},items:[{xtype:"panel",id:"FE-error-desc-"+h,region:"north",layout:"fit",title:_("Error description"),iconCls:"iconFilesError",collapsedIconCls:"iconFilesError",plugins:[Ext.ux.PanelCollapsedTitle],height:PhDOE.user.conf.error.descPanelHeight||150,collapsible:true,collapsed:!PhDOE.user.conf.error.descPanelDisplay,autoScroll:true,autoLoad:"./error?dir="+f+"&file="+c,listeners:{collapse:function(){if(this.ownerCt.tabLoaded){new ui.task.UpdateConfTask({module:"error",itemName:"descPanelDisplay",value:false})}},expand:function(){if(this.ownerCt.tabLoaded){new ui.task.UpdateConfTask({module:"error",itemName:"descPanelDisplay",value:true})}},resize:function(o,l,m){if(this.ownerCt.tabLoaded&&m&&m>50&&m!=PhDOE.user.conf.error.descPanelHeight){new ui.task.UpdateConfTask({module:"error",itemName:"descPanelHeight",value:m})}}}},{region:"west",xtype:"panel",title:_("Tools"),iconCls:"iconConf",collapsedIconCls:"iconConf",plugins:[Ext.ux.PanelCollapsedTitle],collapsible:true,collapsed:!PhDOE.user.conf.error.toolsPanelDisplay,layout:"fit",bodyBorder:false,width:PhDOE.user.conf.error.toolsPanelWidth||375,listeners:{collapse:function(){if(this.ownerCt.tabLoaded){new ui.task.UpdateConfTask({module:"error",itemName:"toolsPanelDisplay",value:false})}},expand:function(){if(this.ownerCt.tabLoaded){new ui.task.UpdateConfTask({module:"error",itemName:"toolsPanelDisplay",value:true})}},resize:function(l,m){if(this.ownerCt.tabLoaded&&m&&m!=PhDOE.user.conf.error.toolsPanelWidth){new ui.task.UpdateConfTask({module:"error",itemName:"toolsPanelWidth",value:m})}}},items:{xtype:"tabpanel",activeTab:0,tabPosition:"bottom",enableTabScroll:true,defaults:{autoScroll:true},items:[k,new ui.cmp.DictionaryGrid({layout:"fit",title:_("Dictionary"),prefix:"FE",fid:h}),{title:_("Entities"),layout:"fit",items:[new ui.cmp.EntitiesAcronymsPanel({dataType:"entities",prefix:"FE",ftype:"LANG",fid:h,loadStore:PhDOE.user.conf.error.toolsPanelEntitiesLoad})]},{title:_("Acronyms"),layout:"fit",items:[new ui.cmp.EntitiesAcronymsPanel({dataType:"acronyms",prefix:"FE",ftype:"LANG",fid:h,loadStore:PhDOE.user.conf.error.toolsPanelAcronymsLoad})]}]}},e]})}Ext.getCmp("main-panel").setActiveTab("FE-"+h)},initComponent:function(){Ext.apply(this,{store:ui.cmp._ErrorFileGrid.store,tbar:[_("Filter: ")," ",new Ext.form.TwinTriggerField({id:"FE-filter",width:180,hideTrigger1:true,enableKeyEvents:true,validateOnBlur:false,validationEvent:false,trigger1Class:"x-form-clear-trigger",trigger2Class:"x-form-search-trigger",listeners:{keypress:function(c,d){if(d.getKey()===d.ENTER){this.onTrigger2Click()}}},onTrigger1Click:function(){this.setValue("");this.triggers[0].hide();this.setSize(180,10);ui.cmp._ErrorFileGrid.instance.store.clearFilter()},onTrigger2Click:function(){var c=this.getValue(),d;if(c===""||c.length<3){this.markInvalid(_("Your filter must contain at least 3 characters"));return}this.clearInvalid();this.triggers[0].show();this.setSize(180,10);d=new RegExp(c,"i");ui.cmp._ErrorFileGrid.instance.store.filterBy(function(e){if(d.test(e.data.path)||d.test(e.data.name)||d.test(e.data.maintainer)||d.test(e.data.type)){return true}else{return false}},this)}})]});ui.cmp.ErrorFileGrid.superclass.initComponent.call(this);this.on("rowcontextmenu",this.onRowContextMenu,this);this.on("rowdblclick",this.onRowDblClick,this);if(PhDOE.user.lang==="en"){this.getColumnModel().setHidden(2,true)}}});ui.cmp._ErrorFileGrid.instance=null;ui.cmp.ErrorFileGrid.getInstance=function(c){if(!ui.cmp._ErrorFileGrid.instance){if(!c){c={}}ui.cmp._ErrorFileGrid.instance=new ui.cmp.ErrorFileGrid(c)}return ui.cmp._ErrorFileGrid.instance};Ext.namespace("ui","ui.cmp");ui.cmp.ExecDiff=Ext.extend(Ext.Panel,{layout:"fit",title:_("Diff From VCS"),iconCls:"iconDiffView",collapsedIconCls:"iconDiffView",autoScroll:true,plugins:[Ext.ux.PanelCollapsedTitle],onRender:function(d,c){ui.cmp.ExecDiff.superclass.onRender.call(this,d,c);this.el.mask('<img src="themes/img/loading.gif" style="vertical-align: middle;" /> '+_("Loading..."));XHR({scope:this,params:{task:"getDiff",DiffType:"vcs",FilePath:"en"+this.fpath,FileName:this.fname,Rev1:this.rev1,Rev2:this.rev2},success:function(e){var f=Ext.util.JSON.decode(e.responseText);Ext.get(this.prefix+"-diff-"+this.fid).dom.innerHTML=f.content;this.el.unmask()},callback:function(){Ext.getCmp(this.prefix+"-"+this.fid).panDiffLoaded=true;Ext.getCmp("main-panel").fireEvent("tabLoaded",this.prefix,this.fid)}})},initComponent:function(){Ext.apply(this,{html:'<div id="'+this.prefix+"-diff-"+this.fid+'" class="diff-content"></div>'});ui.cmp.ExecDiff.superclass.initComponent.call(this)}});Ext.namespace("ui","ui.cmp","ui.cmp._FilePanel");Ext.namespace("ui.cmp._FilePanel.tbar.menu");Ext.namespace("ui.cmp._FilePanel.tbar.items");ui.cmp._FilePanel.tbar.items.undoRedo=function(c){Ext.apply(this,c);this.init();ui.cmp._FilePanel.tbar.items.undoRedo.superclass.constructor.call(this)};Ext.extend(ui.cmp._FilePanel.tbar.items.undoRedo,Ext.ButtonGroup,{init:function(){Ext.apply(this,{id:this.id_prefix+"-FILE-"+this.fid+"-grp-undoRedo",items:[{id:this.id_prefix+"-FILE-"+this.fid+"-btn-undo",scope:this,tooltip:_("<b>Undo</b>"),disabled:true,iconCls:"iconUndo",handler:function(){Ext.getCmp(this.id_prefix+"-FILE-"+this.fid).undo()}},{id:this.id_prefix+"-FILE-"+this.fid+"-btn-redo",scope:this,tooltip:_("<b>Redo</b>"),disabled:true,iconCls:"iconRedo",handler:function(){Ext.getCmp(this.id_prefix+"-FILE-"+this.fid).redo()}}]})}});ui.cmp._FilePanel.tbar.items.usernotes=function(c){Ext.apply(this,c);this.init();ui.cmp._FilePanel.tbar.items.usernotes.superclass.constructor.call(this)};Ext.extend(ui.cmp._FilePanel.tbar.items.usernotes,Ext.ButtonGroup,{init:function(){Ext.apply(this,{items:[{xtype:"usernotes",file:this.file,fid:Ext.id()}]})}});ui.cmp._FilePanel.tbar.items.common=function(c){Ext.apply(this,c);this.init();ui.cmp._FilePanel.tbar.items.common.superclass.constructor.call(this)};Ext.extend(ui.cmp._FilePanel.tbar.items.common,Ext.ButtonGroup,{init:function(){Ext.apply(this,{items:[{scope:this,tooltip:_("Close Tab"),iconCls:"iconClose",handler:function(){Ext.getCmp("main-panel").remove(this.prefix+"-"+this.fid)}},{id:this.prefix+"-"+this.fid+"-btn-tabLeft-"+this.ftype,scope:this,tooltip:_("Go to previous tab"),iconCls:"iconArrowLeft",handler:this.goToPreviousTab},{id:this.prefix+"-"+this.fid+"-btn-tabRight-"+this.ftype,scope:this,tooltip:_("Go to next tab"),disabled:true,iconCls:"iconArrowRight",handler:this.goToNextTab}]})}});ui.cmp._FilePanel.tbar.menu.lang=function(c){Ext.apply(this,c);this.init();ui.cmp._FilePanel.tbar.menu.lang.superclass.constructor.call(this)};Ext.extend(ui.cmp._FilePanel.tbar.menu.lang,Ext.Toolbar.Button,{text:_("MarkUp"),iconCls:"iconInsertCode",init:function(){Ext.apply(this,{menu:new Ext.menu.Menu({items:[{scope:this,text:_("Reviewed tag"),handler:function(){Ext.getCmp(this.comp_id).insertLine(2,"<!-- Reviewed: no Maintainer: "+PhDOE.user.login+" -->");Ext.getCmp(this.comp_id).focus()}},{scope:this,text:_("Revcheck tag"),handler:function(){Ext.getCmp(this.comp_id).insertLine(1,"<!-- EN-Revision: XX Maintainer: "+PhDOE.user.login+" Status: ready -->");Ext.getCmp(this.comp_id).focus()}}]})})}});ui.cmp._FilePanel.tbar.menu.en=function(c){Ext.apply(this,c);this.init();ui.cmp._FilePanel.tbar.menu.en.superclass.constructor.call(this)};Ext.extend(ui.cmp._FilePanel.tbar.menu.en,Ext.Toolbar.Button,{text:_("MarkUp"),iconCls:"iconInsertCode",init:function(){Ext.apply(this,{menu:new Ext.menu.Menu({items:[{scope:this,text:_("Description section"),handler:function(){var c=Ext.getCmp(this.comp_id).getCursor();Ext.getCmp(this.comp_id).insertLine(c.line,[' <refsect1 role="description"><!-- {{{ -->\r\n ',"&reftitle.description;\r\n ","<methodsynopsis>\r\n ","<!-- Example: All functions have this -->\r\n ","<type>thereturned type</type><methodname>func_name</methodname>\r\n ","<!-- Example: Required parameter -->\r\n ","<methodparam><type>param1type</type><parameter>firstparameter</parameter></methodparam>\r\n ","<!-- Example: Optional parameter, also by reference -->\r\n ",'<methodparam choice="opt"><type>int</type><parameter role="reference">secondparameter</parameter></methodparam>\r\n ',"<!-- Example: If no methodparams exist (void), use this -->\r\n ","<void />\r\n ","</methodsynopsis>\r\n ","<para>\r\n ","The function description goes here.\r\n ","</para>\r\n ","</refsect1><!-- }}} -->"].join(""));Ext.getCmp(this.comp_id).focus()}},{scope:this,text:_("Parameters section"),handler:function(){var c=Ext.getCmp(this.comp_id).getCursor();Ext.getCmp(this.comp_id).insertLine(c.line,['\r\n<refsect1 role="parameters"><!-- {{{ -->\r\n',"&reftitle.parameters;\r\n","<para>\r\n","<variablelist>\r\n","<varlistentry>\r\n","<term><parameter>firstparameter</parameter></term>\r\n","<listitem>\r\n","<para>\r\n","Its description\r\n","</para>\r\n","</listitem>\r\n","</varlistentry>\r\n","<varlistentry>\r\n","<term>\r\n","<parameter>secondparameter</parameter>\r\n","</term>\r\n","<listitem>\r\n","<para>\r\n","Its description\r\n","</para>\r\n","</listitem>\r\n","</varlistentry>\r\n","</variablelist>\r\n","</para>\r\n","</refsect1><!-- }}} -->"].join(""));Ext.getCmp(this.comp_id).focus()}},{scope:this,text:_("Return section"),handler:function(){var c=Ext.getCmp(this.comp_id).getCursor();Ext.getCmp(this.comp_id).insertLine(c.line,['\r\n<refsect1 role="returnvalues"><!-- {{{ -->\r\n',"&reftitle.returnvalues;\r\n","<para>\r\n","What this function returns, first on success, then failure.\r\n","If simply true on success and false on failure, just use &return.success; here.\r\n","</para>\r\n","</refsect1><!-- }}} -->"].join(""));Ext.getCmp(this.comp_id).focus()}},{scope:this,text:_("Error section"),handler:function(){var c=Ext.getCmp(this.comp_id).getCursor();Ext.getCmp(this.comp_id).insertLine(c.line,['\r\n<refsect1 role="errors"><!-- {{{ -->\r\n',"&reftitle.errors;\r\n","<para>\r\n","When does this function issue E_* level errors, and/or throw exceptions.\r\n","</para>\r\n","</refsect1><!-- }}} -->\r\n"].join(""));Ext.getCmp(this.comp_id).focus()}},{scope:this,text:_("Unicode section"),handler:function(){var c=Ext.getCmp(this.comp_id).getCursor();Ext.getCmp(this.comp_id).insertLine(c.line,['\r\n<refsect1 role="unicode"><!-- {{{ -->\r\n',"&reftitle.unicode;\r\n","<para>\r\n","Information specific to unicode, from the PHP 6 changes.\r\n","</para>\r\n","</refsect1><!-- }}} -->"].join(""));Ext.getCmp(this.comp_id).focus()}},{scope:this,text:_("Changelog section"),handler:function(){var c=Ext.getCmp(this.comp_id).getCursor();Ext.getCmp(this.comp_id).insertLine(c.line,['\r\n<refsect1 role="changelog"><!-- {{{ -->\r\n',"&reftitle.changelog;\r\n","<para>\r\n","<informaltable>\r\n",'<tgroup cols="2">\r\n',"<thead>\r\n","<row>\r\n","<entry>&Version;</entry>\r\n","<entry>&Description;</entry>\r\n","</row>\r\n","</thead>\r\n","<tbody>\r\n","<row>\r\n","<entry>Enter the version of change here</entry>\r\n","<entry>\r\n","Describe the change\r\n","</entry>\r\n","</row>\r\n","</tbody>\r\n","</tgroup>\r\n","</informaltable>\r\n","</para>\r\n","</refsect1><!-- }}} -->"].join(""));Ext.getCmp(this.comp_id).focus()}},{scope:this,text:_("Examples section"),handler:function(){var c=Ext.getCmp(this.comp_id).getCursor();Ext.getCmp(this.comp_id).insertLine(c.line,['\r\n<refsect1 role="examples"><!-- {{{ -->\r\n',"&reftitle.examples;\r\n","<para>\r\n",'<example xml:id="function-name.example.basic"><!-- {{{ -->\r\n',"<title><function>function-name</function> example</title>\r\n","<para>\r\n","Any text that describes the purpose of the example, or what\r\n","goes on in the example should be here. (Inside the <example> tag, not out).\r\n","</para>\r\n",'<programlisting role="php">\r\n',"<![CDATA[\r\n","<?php\r\n","if ($anexample === true) {\r\n","echo 'Use the PEAR Coding standards';\r\n","}\r\n","if ($thereisoutput === 'and it is multiple lines') {\r\n","echo 'Use a screen like we did below';\r\n","}\r\n","?>\r\n","]]>\r\n","</programlisting>\r\n","&example.outputs.similar;\r\n","<screen>\r\n","<![CDATA[\r\n","Use the PEAR Coding standards\r\n","Use a screen like we did below\r\n","]]>\r\n","</screen>\r\n","</example><!-- }}} -->\r\n","</para>\r\n","</refsect1><!-- }}} -->"].join(""));Ext.getCmp(this.comp_id).focus()}},{scope:this,text:_("Notes section"),handler:function(){var c=Ext.getCmp(this.comp_id).getCursor();Ext.getCmp(this.comp_id).insertLine(c.line,['\r\n<refsect1 role="notes"><!-- {{{ -->\r\n',"&reftitle.notes;\r\n","<caution>\r\n","<para>\r\n","Any notes that don't fit anywhere else should go here.\r\n","90% of the time, notes, warnings or cautions are better placed in the\r\n","parameters section. Consider that before using this section!\r\n","</para>\r\n","</caution>\r\n","¬e.language-construct;\r\n","¬e.not-bin-safe;\r\n","¬e.registerglobals;\r\n","</refsect1><!-- }}} -->"].join(""));Ext.getCmp(this.comp_id).focus()}},{scope:this,text:_("SeeAlso section"),handler:function(){var c=Ext.getCmp(this.comp_id).getCursor();Ext.getCmp(this.comp_id).insertLine(c.line,['\r\n<refsect1 role="seealso"><!-- {{{ -->\r\n',"&reftitle.seealso;\r\n","<para>\r\n","<simplelist>\r\n","<member><function>somefunc</function></member>\r\n","<member><function>another_func</function></member>\r\n",'<member>The <link linkend="something">something appendix</link></member>\r\n',"</simplelist>\r\n","</para>\r\n","</refsect1><!-- }}} -->"].join(""));Ext.getCmp(this.comp_id).focus()}}]})})}});ui.cmp._FilePanel.tbar.items.reindentTags=function(c){Ext.apply(this,c);this.init();ui.cmp._FilePanel.tbar.items.reindentTags.superclass.constructor.call(this)};Ext.extend(ui.cmp._FilePanel.tbar.items.reindentTags,Ext.ButtonGroup,{init:function(){Ext.apply(this,{id:this.id_prefix+"-FILE-"+this.fid+"-grp-tools",items:[{scope:this,tooltip:_("<b>Check</b> XML with XmlLint"),iconCls:"iconXml",handler:function(c){new ui.task.CheckXml({idPrefix:this.id_prefix,fid:this.fid})}},(this.lang==="en")?new ui.cmp._FilePanel.tbar.menu.en({comp_id:this.id_prefix+"-FILE-"+this.fid}):new ui.cmp._FilePanel.tbar.menu.lang({comp_id:this.id_prefix+"-FILE-"+this.fid}),{scope:this,text:_("Editor option"),iconCls:"iconConf",menu:[{scope:this,text:_("Re-indent all this file"),iconCls:"iconIndent",handler:function(){Ext.getCmp(this.id_prefix+"-FILE-"+this.fid).reIndentAll()}},{scope:this,text:_("Enable line wrapping"),checked:((PhDOE.user.conf.main.lineWrapping===true)?true:false),checkHandler:function(d,c){var e=(c)?true:false;Ext.getCmp(this.id_prefix+"-FILE-"+this.fid).setOption("lineWrapping",e);new ui.task.UpdateConfTask({module:"main",itemName:"lineWrapping",value:c,notify:false})}},{scope:this,text:_("Choose a Theme"),iconCls:"iconThemes",onThemeChange:function(){var c=Ext.getCmp(this.ownerCt.ownerCt.ownerCt.id_prefix+"-FILE-"+this.ownerCt.ownerCt.ownerCt.fid);Ext.each(this.menu.items.items,function(d){if(d.checked===true){c.switchTheme(d.themeName);new ui.task.UpdateConfTask({module:"main",itemName:"editorTheme",value:d.themeName,notify:false})}})},menu:{items:[{text:_("No theme"),themeName:false,checked:(PhDOE.user.conf.main.editorTheme===false),group:"cmd2-theme",checkHandler:function(){this.ownerCt.ownerCt.onThemeChange()}},{text:_("Default theme"),themeName:"default",checked:(PhDOE.user.conf.main.editorTheme==="default"||PhDOE.user.conf.main.editorTheme==="undefined"),group:"cmd2-theme",checkHandler:function(){this.ownerCt.ownerCt.onThemeChange()}},{text:_("Cobalt"),themeName:"cobalt",checked:(PhDOE.user.conf.main.editorTheme==="cobalt"),group:"cmd2-theme",checkHandler:function(){this.ownerCt.ownerCt.onThemeChange()}},{text:_("Eclipse"),themeName:"eclipse",checked:(PhDOE.user.conf.main.editorTheme==="eclipse"),group:"cmd2-theme",checkHandler:function(){this.ownerCt.ownerCt.onThemeChange()}},{text:_("Elegant"),themeName:"elegant",checked:(PhDOE.user.conf.main.editorTheme==="elegant"),group:"cmd2-theme",checkHandler:function(){this.ownerCt.ownerCt.onThemeChange()}},{text:_("Monokai"),themeName:"monokai",checked:(PhDOE.user.conf.main.editorTheme==="monokai"),group:"cmd2-theme",checkHandler:function(){this.ownerCt.ownerCt.onThemeChange()}},{text:_("Neat"),themeName:"neat",checked:(PhDOE.user.conf.main.editorTheme==="neat"),group:"cmd2-theme",checkHandler:function(){this.ownerCt.ownerCt.onThemeChange()}},{text:_("Night"),themeName:"night",checked:(PhDOE.user.conf.main.editorTheme==="night"),group:"cmd2-theme",checkHandler:function(){this.ownerCt.ownerCt.onThemeChange()}},{text:_("RubyBlue"),themeName:"rubyblue",checked:(PhDOE.user.conf.main.editorTheme==="rubyblue"),group:"cmd2-theme",checkHandler:function(){this.ownerCt.ownerCt.onThemeChange()}}]}}]}]})}});ui.cmp.FilePanel=Ext.extend(Ext.form.FormPanel,{activeScroll:false,goToPreviousTab:function(){var c=this.prefix+"-"+this.fid,e=Ext.getCmp("main-panel").layout.container.items.items,g,f,d;for(d=0;d<e.length;d++){if(e[d].id===c){f=d}}if(f===1){g="MainInfoTabPanel"}else{g=e[f-1].id}Ext.getCmp("main-panel").setActiveTab(g)},goToNextTab:function(){var d=this.prefix+"-"+this.fid,f=Ext.getCmp("main-panel").layout.container.items.items,c=false,g,e;for(e=0;e<f.length;e++){if(f[e].id===d){g=e}}if(f[g+1]){c=f[g+1].id;Ext.getCmp("main-panel").setActiveTab(c)}},initComponent:function(){var c=this.prefix+"-"+this.ftype;this.bbar=(this.syncScrollCB)?[{height:22,xtype:"checkbox",name:"syncScrollConf.module",hideLabel:true,checked:PhDOE.user.conf[this.syncScrollConf.module][this.syncScrollConf.itemName],boxLabel:_("Synchronize scroll bars"),listeners:{scope:this,check:function(d){new ui.task.UpdateConfTask({module:this.syncScrollConf.module,itemName:this.syncScrollConf.itemName,value:d.getValue(),notify:false})},render:function(d){Ext.DomHelper.insertHtml("beforeBegin",d.el.dom,['<div style="display: inline;" class="x-statusbar">','<span class="x-status-text-panel">',_("Line: "),'<span id="',c,"-status-line-",this.fid,'">-</span></span>',' <span class="x-status-text-panel">',_("Col: "),'<span id="',c,"-status-col-",this.fid,'">-</span></span>',"</div> "].join(""))}}}]:[{xtype:"panel",height:22,baseCls:"",bodyStyle:"padding-top:5px;",html:['<div style="display: inline;" class="x-statusbar">','<span class="x-status-text-panel">',_("Line: "),'<span id="',c,"-status-line-",this.fid,'">-</span></span>',' <span class="x-status-text-panel">',_("Col: "),'<span id="',c,"-status-col-",this.fid,'">-</span></span>',"</div> "].join("")}];if(!this.readOnly){this.tbar=[new ui.cmp._FilePanel.tbar.items.common({prefix:this.prefix,fid:this.fid,ftype:this.ftype,goToPreviousTab:this.goToPreviousTab,goToNextTab:this.goToNextTab}),{xtype:"buttongroup",id:c+"-FILE-"+this.fid+"-grp-save",items:[{id:c+"-FILE-"+this.fid+"-btn-save",scope:this,tooltip:_("<b>Save</b> this file (CTRL+s)"),iconCls:"iconSaveFile",disabled:true,handler:function(){if(this.prefix==="AF"){new ui.task.SaveFileTask({prefix:this.prefix,ftype:this.ftype,fid:this.fid,fpath:this.fpath,fname:this.fname,lang:this.lang,storeRecord:this.storeRecord});return}if(this.prefix==="FNT"){new ui.task.SaveTransFileTask({prefix:this.prefix,ftype:this.ftype,fid:this.fid,fpath:this.fpath,fname:this.fname,lang:this.lang,storeRecord:this.storeRecord});return}if(!PhDOE.user.conf.main.onSaveFile){PhDOE.user.conf.main.onSaveFile="ask-me"}switch(PhDOE.user.conf.main.onSaveFile){case"always":new ui.task.CheckFileTask({prefix:this.prefix,ftype:this.ftype,fid:this.fid,fpath:this.fpath,fname:this.fname,lang:this.lang,storeRecord:this.storeRecord});break;case"never":new ui.task.SaveFileTask({prefix:this.prefix,ftype:this.ftype,fid:this.fid,fpath:this.fpath,fname:this.fname,lang:this.lang,storeRecord:this.storeRecord});break;case"ask-me":Ext.MessageBox.show({title:_("Confirm"),msg:_("Do you want to check for errors before saving?"),icon:Ext.MessageBox.INFO,buttons:Ext.MessageBox.YESNOCANCEL,scope:this,fn:function(d){if(d==="no"){new ui.task.SaveFileTask({prefix:this.prefix,ftype:this.ftype,fid:this.fid,fpath:this.fpath,fname:this.fname,lang:this.lang,storeRecord:this.storeRecord})}else{if(d==="yes"){new ui.task.CheckFileTask({prefix:this.prefix,ftype:this.ftype,fid:this.fid,fpath:this.fpath,fname:this.fname,lang:this.lang,storeRecord:this.storeRecord})}}}});break}}}]},new ui.cmp._FilePanel.tbar.items.undoRedo({id_prefix:c,fid:this.fid}),new ui.cmp._FilePanel.tbar.items.reindentTags({id_prefix:c,fid:this.fid,lang:this.lang}),{scope:this,iconCls:"iconZoom",tooltip:_("<b>Expand</b> in a popup"),handler:function(d){var e=new Ext.Window({title:this.originTitle,bodyStyle:"background-color:white",maximized:true,animateTarget:d.el,items:[{xtype:"codemirror",id:c+"-FILE-"+this.fid+"maximized",readOnly:false,lineWrapping:PhDOE.user.conf.main.lineWrapping,theme:PhDOE.user.conf.main.editorTheme,parser:this.parser,isModified:false,listeners:{scope:this,initialize:function(){var h=Ext.getCmp(c+"-FILE-"+this.fid+"maximized"),f=Ext.getCmp(c+"-FILE-"+this.fid).getValue();h.setValue(f);var g=new Ext.util.DelayedTask(function(){if(e.rendered){h.resize(false,e.getInnerHeight()+89)}else{g.delay(500)}});g.delay(500)}}}],listeners:{scope:this,beforeclose:function(g){var f=g.items.items[0].getValue();Ext.getCmp(c+"-FILE-"+this.fid).setValue(f)}}});e.show()}},{scope:this,iconCls:"iconView",hidden:!(this.lang==="en"&&this.fname.substr(-3)==="xml"),tooltip:_("<b>Preview</b> in a popup"),handler:function(){var d=Ext.getCmp(c+"-FILE-"+this.fid).isModified;if(d){Ext.Msg.alert(_("Information"),_("You must save your file in order to preview the result."),function(e){if(e=="ok"){new ui.cmp.PreviewFile({path:this.lang+this.fpath+this.fname})}},this)}else{new ui.cmp.PreviewFile({path:this.lang+this.fpath+this.fname})}}},"->",new ui.cmp._FilePanel.tbar.items.usernotes({fid:this.fid,file:this.lang+this.fpath+this.fname})]}else{this.tbar=[new ui.cmp._FilePanel.tbar.items.common({prefix:this.prefix,fid:this.fid,ftype:this.ftype,goToPreviousTab:this.goToPreviousTab,goToNextTab:this.goToNextTab}),{xtype:"buttongroup",hidden:(this.openInNewTabBtn!==true),scope:this,items:[{tooltip:_("Open for editing in a new Tab"),iconCls:"iconEditInNewTab",scope:this,handler:function(){ui.cmp.RepositoryTree.getInstance().openFile("byPath",this.lang+this.fpath,this.fname)}}]},"->",((this.ftype!=="GGTRANS")?new ui.cmp._FilePanel.tbar.items.usernotes({fid:this.fid,file:this.lang+this.fpath+this.fname}):"")]}Ext.apply(this,{title:this.title,cls:"code-mirror-panel",originTitle:this.title,items:[{xtype:"codemirror",id:c+"-FILE-"+this.fid,readOnly:this.readOnly,lineWrapping:PhDOE.user.conf.main.lineWrapping,theme:PhDOE.user.conf.main.editorTheme,parser:this.parser,isModified:false,listeners:{scope:this,initialize:function(){var e,d;if(this.isTrans){if(this.storeRecord.data.fileModified){e=this.lang+this.fpath;d=this.fname}else{e="en"+this.fpath;d=this.fname}}else{e=this.lang+this.fpath;d=this.fname}new ui.task.GetFileTask({prefix:this.prefix,ftype:this.ftype,original:this.original,fid:this.fid,fpath:e,freadOnly:this.readOnly,fname:d,skeleton:this.skeleton,storeRecord:this.storeRecord})},coderestored:function(){if(this.readOnly){return}if(Ext.getCmp(c+"-FILE-"+this.fid).isModified){Ext.getCmp(c+"-PANEL-"+this.fid).setTitle(Ext.getCmp(c+"-PANEL-"+this.fid).permlink+Ext.getCmp(c+"-PANEL-"+this.fid).originTitle);if((this.ftype==="LANG"&&PhDOE.user.lang!=="en")||this.ftype==="EN"){if((this.ftype==="EN"&&!Ext.getCmp(this.prefix+"-LANG-FILE-"+this.fid).isModified)||(this.ftype==="LANG"&&!Ext.getCmp(this.prefix+"-EN-FILE-"+this.fid).isModified)){Ext.getCmp(this.prefix+"-"+this.fid).setTitle(Ext.getCmp(this.prefix+"-"+this.fid).originTitle)}}else{Ext.getCmp(this.prefix+"-"+this.fid).setTitle(Ext.getCmp(this.prefix+"-"+this.fid).originTitle)}Ext.getCmp(c+"-FILE-"+this.fid+"-btn-save").disable();Ext.getCmp(c+"-FILE-"+this.fid).isModified=false}},codemodified:function(){if(this.readOnly){return}if(Ext.getCmp(c+"-FILE-"+this.fid+"-grp-save").disabled){return}var e=Ext.getCmp(c+"-FILE-"+this.fid),d=Ext.getCmp(c+"-PANEL-"+this.fid);if(!e.isModified){d.setTitle(d.permlink+d.originTitle+' <span style="color:#ff0000; font-weight: bold;">['+_("modified")+"]</span>");Ext.getCmp(this.prefix+"-"+this.fid).setTitle(Ext.getCmp(this.prefix+"-"+this.fid).originTitle+' <t style="color:#ff0000; font-weight: bold;">*</t>');Ext.getCmp(c+"-FILE-"+this.fid+"-btn-save").enable();Ext.getCmp(c+"-FILE-"+this.fid+"-btn-undo").enable();e.isModified=true}},cursormove:function(d,e){Ext.get(c+"-status-line-"+this.fid).dom.innerHTML=d;Ext.get(c+"-status-col-"+this.fid).dom.innerHTML=e},scroll:function(g){var e,f,d;if(this.syncScroll&&PhDOE.user.conf[this.syncScrollConf.module][this.syncScrollConf.itemName]){switch(this.ftype){case"EN":if(this.prefix=="FNT"){e=this.prefix+"-TRANS"}else{e=this.prefix+"-LANG"}break;case"LANG":e=this.prefix+"-EN";break;case"TRANS":if(PhDOE.user.conf.newFile.secondPanel=="google"){e=this.prefix+"-GGTRANS"}if(PhDOE.user.conf.newFile.secondPanel=="originalFile"){e=this.prefix+"-EN"}break;case"GGTRANS":e=this.prefix+"-TRANS";break}f=Ext.getCmp(e+"-PANEL-"+this.fid);d=Ext.getCmp(e+"-FILE-"+this.fid);if(f.activeScroll===false){this.activeScroll=true;d.scrollTo(g)}else{f.activeScroll=false}}}}}]});ui.cmp.FilePanel.superclass.initComponent.call(this)}});Ext.namespace("ui","ui.cmp");ui.cmp.GoogleTranslationPanel=Ext.extend(Ext.FormPanel,{border:false,labelAlign:"top",bodyStyle:"padding:5px",autoScroll:true,getTranslation:function(c){new ui.task.GetGGTranslation({str:c})},initComponent:function(){Ext.apply(this,{items:[{xtype:"textarea",anchor:"90%",fieldLabel:String.format(_("String to translate (en => {0})"),PhDOE.user.lang),name:"GGTranslate-string",id:"GGTranslate-string",allowBlank:false},{scope:this,xtype:"button",text:_("Translate !"),id:"GGTranslate-btn",handler:function(){this.getTranslation(Ext.getCmp("GGTranslate-string").getValue())}},{xtype:"panel",anchor:"100%",border:false,bodyStyle:"padding:5px",html:'<div id="GGTranslate-result" style="width: 90%; font: 12px tahoma,arial,sans-serif"></div>'}]});ui.cmp.GoogleTranslationPanel.superclass.initComponent.call(this)}});Ext.namespace("ui","ui.cmp","ui.cmp._MainMenu");ui.cmp.MainMenu=function(c){Ext.apply(this,c);this.init();ui.cmp.MainMenu.superclass.constructor.call(this)};ui.cmp._MainMenu.store=new Ext.data.Store({proxy:new Ext.data.HttpProxy({url:"./do/getAvailableLanguage"}),reader:new Ext.data.JsonReader({root:"Items",totalProperty:"nbItems",idProperty:"code",fields:[{name:"code"},{name:"iconCls"},{name:"name"}]})});ui.cmp._MainMenu.store.on("load",function(c){Ext.getDom("Info-Language").innerHTML=Ext.getDom("Topic-Language").innerHTML=c.getById(PhDOE.user.lang).data.name;c.each(function(d){var e=new Ext.menu.Item({text:d.data.name+" ("+d.data.code+")",iconCls:"mainMenuLang flags "+d.data.iconCls,disabled:(d.data.code===PhDOE.user.lang),handler:function(){XHR({params:{task:"switchLang",lang:d.data.code},success:function(){window.location.reload()}})}});Ext.getCmp("MenuLang-ct").add(e)})},this);Ext.extend(ui.cmp.MainMenu,Ext.menu.Menu,{id:"mainMenu",init:function(){var c=new Ext.menu.Menu({id:"MenuLang-ct"});Ext.apply(this,{items:[{text:_("Refresh all data"),disabled:(!PhDOE.user.isGlobalAdmin),iconCls:"iconRefresh",handler:function(){Ext.getBody().mask('<img src="themes/img/loading.gif" style="vertical-align: middle;" /> '+_("Verify if there is an update in progress. Please, wait..."));XHR({params:{task:"checkLockFile",lockFiles:"project_"+PhDOE.project+"_lock_update_repository|project_"+PhDOE.project+"_lock_apply_tools"},success:function(){Ext.getBody().unmask();Ext.MessageBox.show({title:_("Status"),msg:_("There is currently an update in progress.<br/>You can't perform an update now."),buttons:Ext.MessageBox.OK,icon:Ext.MessageBox.INFO})},failure:function(){Ext.getBody().unmask();new ui.cmp.SystemUpdatePrompt().show(Ext.get("acc-need-update"))}})}},{text:_("Build tools"),handler:function(){return false},menu:new Ext.menu.Menu({items:[{text:_("Check build"),disabled:(!PhDOE.user.isGlobalAdmin&&!PhDOE.user.isLangAdmin),iconCls:"iconCheckBuild",handler:function(){Ext.getBody().mask('<img src="themes/img/loading.gif" style="vertical-align: middle;" /> '+_("Verify if there is a check in progress. Please, wait..."));XHR({params:{task:"checkLockFile",lockFile:"project_"+PhDOE.project+"_lock_check_build_"+PhDOE.user.lang},success:function(){Ext.getBody().unmask();Ext.MessageBox.show({title:_("Status"),msg:_("There is currently a check in progress for this language.<br/>You can't perform a new check now."),buttons:Ext.MessageBox.OK,icon:Ext.MessageBox.INFO})},failure:function(){Ext.getBody().unmask();new ui.cmp.CheckBuildPrompt().show(Ext.get("acc-need-update"))}})}},{text:_("Show last failed build"),iconCls:"iconBuildStatus",handler:function(){var d=Ext.getCmp("tab-build-status");if(!d){Ext.getCmp("main-panel").add({id:"tab-build-status",title:_("Last failed build"),iconCls:"iconBuildStatus",layout:"fit",closable:true,items:[new ui.cmp.BuildStatus()]})}Ext.getCmp("main-panel").setActiveTab("tab-build-status")}}]})},{text:_("EN tools"),handler:function(){return false},menu:new Ext.menu.Menu({items:[{text:_("Script check entities"),iconCls:"iconCheckEntities",handler:function(){return false},menu:new Ext.menu.Menu({items:[{text:_("View the last result"),id:"btn-check-entities-view-last-result",iconCls:"iconTabView",handler:function(){var d=Ext.getCmp("tab-check-entities");if(!d){Ext.getCmp("main-panel").add({id:"tab-check-entities",title:_("Check entities"),iconCls:"iconCheckEntities",layout:"fit",closable:true,items:[new ui.cmp.CheckEntities()]})}Ext.getCmp("main-panel").setActiveTab("tab-check-entities")}},{text:_("Run this script"),iconCls:"iconRun",disabled:!PhDOE.user.haveKarma,handler:function(){Ext.getBody().mask('<img src="themes/img/loading.gif" style="vertical-align: middle;" /> '+_("Verify if there is an entities check in progress. Please, wait..."));XHR({params:{task:"checkLockFile",lockFile:"project_"+PhDOE.project+"_lock_check_entities"},success:function(){Ext.getBody().unmask();Ext.MessageBox.show({title:_("Status"),msg:_("There is currently a check in progress for the entities.<br/>You can't perform a new check now."),buttons:Ext.MessageBox.OK,icon:Ext.MessageBox.INFO})},failure:function(){Ext.getBody().unmask();if(!Ext.getCmp("win-check-entities")){new ui.cmp.CheckEntitiesPrompt()}Ext.getCmp("win-check-entities").show(Ext.get("mainMenu"))}})}}]})},{text:_("Script check document"),iconCls:"iconCheckDoc",handler:function(){var d=Ext.getCmp("tab-check-doc");if(!d){Ext.getCmp("main-panel").add({id:"tab-check-doc",title:"Check Doc",iconCls:"iconCheckDoc",layout:"fit",closable:true,items:[new ui.cmp.CheckDoc()]})}Ext.getCmp("main-panel").setActiveTab("tab-check-doc")}}]})},"-",{text:_("Configure"),iconCls:"iconConf",tooltip:"<b>Configure</b> this tool",id:"winconf-btn",handler:function(){if(!Ext.getCmp("win-conf")){new ui.cmp.EditorConf()}Ext.getCmp("win-conf").show(Ext.get("mainMenu"))}},"-",{id:"menuLang",iconCls:"iconSwitchLang",text:_("Switch to language..."),handler:function(){return false},menu:c},{text:_("Erase my personal data"),iconCls:"iconErasePersonalData",disabled:!PhDOE.user.haveKarma,handler:function(){Ext.MessageBox.confirm(_("Confirm"),_("This action will erase your personal data. All content about this account will be deleted definitively. Are you sure you want to do that ?"),function(d){if(d==="yes"){Ext.getBody().mask('<img src="themes/img/loading.gif" style="vertical-align: middle;" /> '+_("Please, wait..."));XHR({params:{task:"erasePersonalData"},success:function(){Ext.getBody().unmask();Ext.MessageBox.show({title:_("Thanks !"),msg:_("Thank you for using this application !"),icon:Ext.MessageBox.INFO,buttons:Ext.MessageBox.OK,fn:function(){window.location.href="./do/logout?csrfToken="+csrfToken}})},failure:function(){Ext.getBody().unmask();PhDOE.winForbidden()}})}})}},{text:_("Log out"),iconCls:"iconLogOut",handler:function(){Ext.MessageBox.confirm(_("Confirm"),_("Are you sure you want to logout?"),function(d){if(d==="yes"){window.location.href="./do/logout?csrfToken="+csrfToken}})}},"-",{id:"tab-report-bug-btn",text:_("Report bugs"),iconCls:"iconBugs",handler:function(){if(!Ext.getCmp("main-panel").findById("tab-report-bug")){Ext.getCmp("main-panel").add({id:"tab-report-bug",xtype:"panel",title:_("Report bugs"),iconCls:"iconBugs",closable:true,layout:"fit",items:[new Ext.ux.IFrameComponent({id:"frame-tab-report-bug",url:"http://bugs.php.net/"})]});Ext.getCmp("main-panel").setActiveTab("tab-report-bug")}else{Ext.getCmp("main-panel").setActiveTab("tab-report-bug")}}},{id:"tab-documentation-btn",text:_("Documentation"),iconCls:"iconBook",handler:function(){if(!Ext.getCmp("main-panel").findById("tab-documentation")){Ext.getCmp("main-panel").add({id:"tab-documentation",xtype:"panel",title:_("Documentation"),iconCls:"iconBook",closable:true,layout:"fit",items:[new Ext.ux.IFrameComponent({id:"frame-tab-documentation",url:"https://wiki.php.net/doc/editor/"})]});Ext.getCmp("main-panel").setActiveTab("tab-documentation")}else{Ext.getCmp("main-panel").setActiveTab("tab-documentation")}}},{id:"tab-chat-btn",text:_("Chat with us on IRC !"),iconCls:"iconChat",handler:function(){if(!Ext.getCmp("main-panel").findById("tab-chat")){var d=PhDOE.user.login;if(PhDOE.user.isAnonymous){d="an%3F%3F%3F"}Ext.getCmp("main-panel").add({id:"tab-chat",xtype:"panel",title:_("Chat"),iconCls:"iconChat",closable:true,layout:"fit",items:[new Ext.ux.IFrameComponent({id:"frame-tab-chat",url:"https://widget.mibbit.com/?settings=8eec4034df2eb666b0600bdfe151529a&server=irc.umich.edu&channel=%23php.doc&nick=poe_"+d})]})}Ext.getCmp("main-panel").setActiveTab("tab-chat")}},"-",{id:"winabout-btn",text:_("About"),iconCls:"iconHelp",handler:function(){new ui.cmp.About().show(Ext.get("winabout-btn"))}}]})}});Ext.namespace("ui","ui.cmp","ui.cmp.MainPanel");ui.cmp.MainPanel=Ext.extend(Ext.ux.SlidingTabPanel,{activeTab:0,enableTabScroll:true,plugins:["tabclosemenu","dblclickclosetabs"],initComponent:function(c){Ext.apply(this,c);ui.cmp.MainPanel.superclass.initComponent.call(this);this.addEvents({tabLoaded:true});this.on("beforeremove",this.onBeforeRemove,this);this.on("tabchange",this.onTabChange,this);this.on("endDrag",this.onTabChange,this);this.on("tabLoaded",this.onTabLoaded,this)},onTabLoaded:function(d,e){var c=Ext.getCmp(d+"-"+e);if(d==="FNT"){if(c.panTRANSLoaded&&c.panTRANSSecondLoaded){c.tabLoaded=true;c.panTRANSLoaded=c.panTRANSSecondLoaded=false;if(PhDOE.FNTfilePendingOpen[0]){ui.cmp.PendingTranslateGrid.getInstance().openFile(PhDOE.FNTfilePendingOpen[0].id);PhDOE.FNTfilePendingOpen.shift()}}}if(d==="FNU"){if(c.panLANGLoaded&&c.panENLoaded&&c.panDiffLoaded&&c.panVCSLang&&c.panVCSEn){c.tabLoaded=true;c.panLANGLoaded=c.panENLoaded=c.panDiffLoaded=c.panVCSLang=c.panVCSEn=false;if(PhDOE.FNUfilePendingOpen[0]){ui.cmp.StaleFileGrid.getInstance().openFile(PhDOE.FNUfilePendingOpen[0].id);PhDOE.FNUfilePendingOpen.shift()}}}if(d==="FE"){if(c.panLANGLoaded&&c.panENLoaded&&c.panVCSLang&&c.panVCSEn){c.tabLoaded=true;c.panLANGLoaded=c.panENLoaded=c.panVCSLang=c.panVCSEn=false;if(PhDOE.FEfilePendingOpen[0]){ui.cmp.ErrorFileGrid.getInstance().openFile(PhDOE.FEfilePendingOpen[0].id);PhDOE.FEfilePendingOpen.shift()}}}if(d==="FNR"){if(c.panLANGLoaded&&c.panENLoaded&&c.panVCSLang&&c.panVCSEn){c.tabLoaded=true;c.panLANGLoaded=c.panENLoaded=c.panVCSLang=c.panVCSEn=false;if(PhDOE.FNRfilePendingOpen[0]){ui.cmp.PendingReviewGrid.getInstance().openFile(PhDOE.FNRfilePendingOpen[0].id);PhDOE.FNRfilePendingOpen.shift()}}}if(d==="FNIEN"){if(c.panLANGLoaded){c.tabLoaded=true;c.panLANGLoaded=false;if(PhDOE.FNIENfilePendingOpen[0]){ui.cmp.NotInENGrid.getInstance().openFile(PhDOE.FNIENfilePendingOpen[0].id);PhDOE.FNIENfilePendingOpen.shift()}}}if(d==="AF"){if(c.panLoaded&&c.panVCS&&c.panEntities&&c.panAcronyms){c.tabLoaded=true;c.panLoaded=c.panVCS=false;if(PhDOE.AFfilePendingOpen[0]){ui.cmp.RepositoryTree.getInstance().openFile((PhDOE.AFfilePendingOpen[0].nodeID)?"byId":"byPath",(PhDOE.AFfilePendingOpen[0].nodeID)?PhDOE.AFfilePendingOpen[0].nodeID:PhDOE.AFfilePendingOpen[0].fpath,(PhDOE.AFfilePendingOpen[0].nodeID)?false:PhDOE.AFfilePendingOpen[0].fname);PhDOE.AFfilePendingOpen.shift()}}}if(d==="PP"){if(c.panPatchLoaded&&c.panOriginLoaded&&c.panVCS&&c.panPatchContent){c.tabLoaded=true;c.panPatchLoaded=c.panOriginLoaded=c.panVCS=c.panPatchContent=false;if(PhDOE.PPfilePendingOpen[0]){ui.cmp.PendingPatchGrid.getInstance().openFile(PhDOE.PPfilePendingOpen[0].id);PhDOE.PPfilePendingOpen.shift()}}}},onTabChange:function(d,g){if(Ext.getCmp(g.id+"-btn-tabRight-LANG")||Ext.getCmp(g.id+"-btn-tabRight-EN")||Ext.getCmp(g.id+"-btn-tabRight-ALL")||Ext.getCmp(g.id+"-btn-tabRight-NotInEN")||Ext.getCmp(g.id+"-btn-tabRight-PATCH")||Ext.getCmp(g.id+"-btn-tabRight-TRANS")||Ext.getCmp(g.id+"-btn-tabRight-NEW")){var c=g.id,f=Ext.getCmp("main-panel").layout.container.items.items,h,e;for(e=0;e<f.length;e++){if(f[e].id===c){h=e}}if(f[h+1]){if(Ext.getCmp(g.id+"-btn-tabRight-LANG")){Ext.getCmp(g.id+"-btn-tabRight-LANG").enable()}if(Ext.getCmp(g.id+"-btn-tabRight-EN")){Ext.getCmp(g.id+"-btn-tabRight-EN").enable()}if(Ext.getCmp(g.id+"-btn-tabRight-ALL")){Ext.getCmp(g.id+"-btn-tabRight-ALL").enable()}if(Ext.getCmp(g.id+"-btn-tabRight-NotInEN")){Ext.getCmp(g.id+"-btn-tabRight-NotInEN").enable()}if(Ext.getCmp(g.id+"-btn-tabRight-PATCH")){Ext.getCmp(g.id+"-btn-tabRight-PATCH").enable()}if(Ext.getCmp(g.id+"-btn-tabRight-TRANS")){Ext.getCmp(g.id+"-btn-tabRight-TRANS").enable()}if(Ext.getCmp(g.id+"-btn-tabRight-NEW")){Ext.getCmp(g.id+"-btn-tabRight-NEW").enable()}}}},onBeforeRemove:function(f,g){var d,e,h,c=g.id.split("-");if((c[0]==="FE"||c[0]==="FNU"||c[0]==="FNR"||c[0]==="PP"||c[0]==="AF"||c[0]==="FNT")&&c[1]!=="help"){if(c[0]==="FE"){d=Ext.getCmp("FE-LANG-FILE-"+c[1]).isModified;e=(PhDOE.user.lang==="en")?false:Ext.getCmp("FE-EN-FILE-"+c[1]).isModified}if(c[0]==="FNU"){d=Ext.getCmp("FNU-LANG-FILE-"+c[1]).isModified;e=Ext.getCmp("FNU-EN-FILE-"+c[1]).isModified}if(c[0]==="FNR"){d=Ext.getCmp("FNR-LANG-FILE-"+c[1]).isModified;e=Ext.getCmp("FNR-EN-FILE-"+c[1]).isModified}if(c[0]==="PP"){h=Ext.getCmp("PP-PATCH-FILE-"+c[1]).isModified}if(c[0]==="AF"){h=Ext.getCmp("AF-ALL-FILE-"+c[1]).isModified}if(c[0]==="FNT"){h=(Ext.getCmp("FNT-TRANS-FILE-"+c[1]))?Ext.getCmp("FNT-TRANS-FILE-"+c[1]).isModified:Ext.getCmp("FNT-NEW-FILE-"+c[1]).isModified}if(e||d||h){Ext.Msg.show({scope:this,title:_("Confirm"),msg:_("This file has been modified without being saved.<br/>Do you really want to close?"),buttons:Ext.Msg.YESNO,icon:Ext.Msg.QUESTION,fn:function(j,k){if(j==="yes"){f.un("beforeremove",this.onBeforeRemove,this);f.remove(g);f.addListener("beforeremove",this.onBeforeRemove,this)}}});return false}else{return true}}else{return true}},openDiffTab:function(d){var f=d.DiffType,k=d.currentOwner||"",h=d.fileIdDB||"",j=d.FileName||"",e=d.FilePath||"",p=d.patchID||"",o=d.patchName||"",g,l=Ext.util.md5(o+p+e+j),q,c,m;if(p!=""){q=String.format(_("Diff for patch: {0}"),o);g="./do/downloadPatch?patchID="+p+"&csrfToken="+csrfToken;c=_("Download the unified diff as a patch")}else{q=String.format(_("Diff for file: {0}"),e+j);g="./do/downloadPatch?FilePath="+e+"&FileName="+j+"&csrfToken="+csrfToken;c=_("Download the diff as a patch")}if(!Ext.getCmp("main-panel").findById("diff_panel_"+l)){m=[{xtype:"buttongroup",items:[{xtype:"button",iconCls:"iconEdit",tooltip:_("Edit in a new tab"),handler:function(){ui.cmp.RepositoryTree.getInstance().openFile("byPath",e,j)}},{xtype:"button",iconCls:"iconDownloadDiff",tooltip:c,handler:function(){window.location.href=g}}]},((PhDOE.user.isGlobalAdmin||PhDOE.user.isLangAdmin)?{xtype:"buttongroup",items:[{xtype:"button",iconCls:"iconPageDelete",tooltip:_("Clear this change"),handler:function(){new ui.task.ClearLocalChangeTask({ftype:"update",fpath:e,fname:j});Ext.getCmp("main-panel").remove("diff_panel_"+l)}},{xtype:"button",iconCls:"iconSwitchLang",tooltip:_("Change file's owner"),handler:function(){new ui.cmp.ChangeFileOwner({fileIdDB:h,fileFolder:e,fileName:j,currentOwner:k})}}]}:"")];Ext.getCmp("main-panel").add({xtype:"panel",id:"diff_panel_"+l,title:_("Diff"),tabTip:q,closable:true,autoScroll:true,iconCls:"iconTabLink",html:'<div id="diff_content_'+l+'" class="diff-content"></div>',tbar:m});Ext.getCmp("main-panel").setActiveTab("diff_panel_"+l);Ext.get("diff_panel_"+l).mask('<img src="themes/img/loading.gif" style="vertical-align: middle;" />'+_("Please, wait..."));XHR({params:{task:"getDiff",DiffType:f,FilePath:e,FileName:j,patchID:p},success:function(s){var u=Ext.util.JSON.decode(s.responseText),t="";if(p==""){t='<a href="http://'+window.location.host+":"+window.location.port+window.location.pathname+"?patch="+e+j+"&project="+PhDOE.project+'"><h2>'+_("Direct link to this patch")+" ; "+_("File: ")+e+j+"</h2></a>"}else{t='<a href="http://'+window.location.host+":"+window.location.port+window.location.pathname+"?patchID="+p+"&project="+PhDOE.project+'"><h2>'+_("Direct link to this patch")+" ; "+_("Patch Name: ")+o+"</h2></a>"}u.content=t+u.content;Ext.get("diff_content_"+l).dom.innerHTML=u.content;Ext.get("diff_panel_"+l).unmask()}})}else{Ext.getCmp("main-panel").setActiveTab("diff_panel_"+l)}}});Ext.reg("mainpanel",ui.cmp.MainPanel);Ext.namespace("ui","ui.cmp");ui.cmp.ManagePatchPrompt=Ext.extend(Ext.Window,{title:"",width:450,height:260,minWidth:450,minHeight:300,layout:"fit",plain:true,bodyStyle:"padding:5px;",buttonAlign:"center",iconCls:"iconPatch",closeAction:"hide",nodesToAdd:false,patchName:"",patchDescription:"",patchEmail:"",patchID:false,initComponent:function(){Ext.apply(this,{buttons:[{text:(this.patchID)?_("Save"):_("Create"),handler:function(){var d=this.ownerCt.ownerCt,c=d.findByType("form").shift().getForm().getValues();XHR({params:{task:"managePatch",name:c.name,description:c.description,email:c.email,patchID:d.patchID},success:function(e){var f=Ext.util.JSON.decode(e.responseText);d.hide();if(d.patchID){ui.cmp.PatchesTreeGrid.getInstance().modPatchName({newPatchName:c.name,newPatchDescription:c.description,newPatchEmail:c.email,patchID:d.patchID})}if(d.nodesToAdd){ui.task.MoveToPatch({patchID:f.patchID,patchName:c.name,patchDescription:c.description,patchEmail:c.email,nodesToAdd:d.nodesToAdd})}}})}},{text:_("Cancel"),handler:function(){this.ownerCt.ownerCt.hide()}}],items:[{xtype:"form",baseCls:"x-plain",labelWidth:110,defaultType:"textfield",labelAlign:"top",items:[{name:"name",fieldLabel:_("Patch name"),anchor:"100%",value:this.patchName},{name:"description",xtype:"textarea",fieldLabel:_("Patch description"),tooltipText:_("This description will be the default during the validation of the patch by a valid user."),anchor:"100%",value:this.patchDescription},{name:"email",fieldLabel:_("Email"),tooltipText:_("If provided, an email will be send to you to inform that the patch is commited."),anchor:"100%",value:this.patchEmail}]}]});ui.cmp.ManagePatchPrompt.superclass.initComponent.call(this)}});Ext.namespace("ui","ui.cmp","ui.cmp._NotInENGrid");ui.cmp._NotInENGrid.store=new Ext.data.GroupingStore({proxy:new Ext.data.HttpProxy({url:"./do/getFilesNotInEn"}),reader:new Ext.data.JsonReader({root:"Items",totalProperty:"nbItems",idProperty:"id",fields:[{name:"id"},{name:"path"},{name:"name"},{name:"fileModified"}]}),sortInfo:{field:"path",direction:"ASC"},groupField:"path",listeners:{datachanged:function(c){Ext.getDom("acc-notInEn-nb").innerHTML=c.getCount()}}});ui.cmp._NotInENGrid.columns=[{id:"name",header:_("Files"),sortable:true,dataIndex:"name",renderer:function(d,c,e){if(e.data.fileModified){var f=Ext.util.JSON.decode(e.data.fileModified);if(f.user===PhDOE.user.login&&f.anonymousIdent===PhDOE.user.anonymousIdent){return"<span ext:qtip='"+_("File removed by me")+"'>"+d+"</span>"}else{return"<span ext:qtip='"+String.format(_("File removed by {0}"),f.user)+"'>"+d+"</span>"}}else{return d}}},{header:_("Path"),dataIndex:"path",hidden:true}];ui.cmp._NotInENGrid.view=new Ext.grid.GroupingView({forceFit:true,startCollapsed:true,groupTextTpl:'{[values.rs[0].data["path"]]} ({[values.rs.length]} {[values.rs.length > 1 ? "'+_("Files")+'" : "'+_("File")+'"]})',deferEmptyText:false,emptyText:'<div style="text-align: center;">'+_("No Files")+"</div>",getRowClass:function(c){if(c.data.fileModified){var d=Ext.util.JSON.decode(c.data.fileModified);return(d.user===PhDOE.user.login&&d.anonymousIdent===PhDOE.user.anonymousIdent)?"fileModifiedByMe":"fileModifiedByAnother"}return false}});ui.cmp._NotInENGrid.menu=function(c){Ext.apply(this,c);this.init();ui.cmp._NotInENGrid.menu.superclass.constructor.call(this)};Ext.extend(ui.cmp._NotInENGrid.menu,Ext.menu.Menu,{init:function(){Ext.apply(this,{items:[{scope:this,text:"<b>"+_("View in a new tab")+"</b>",iconCls:"iconView",handler:function(){this.grid.fireEvent("rowdblclick",this.grid,this.rowIdx,this.event)}},{scope:this,text:_("Remove this file"),hidden:(this.grid.store.getAt(this.rowIdx).data.fileModified),iconCls:"iconTrash",handler:function(){var e=this.grid.store.getAt(this.rowIdx),d=e.data.path,c=e.data.name;new ui.task.MarkDeleteTask({fpath:d,fname:c,storeRecord:e})}}]})}});ui.cmp.NotInENGrid=Ext.extend(Ext.grid.GridPanel,{loadMask:true,border:false,autoExpandColumn:"name",enableDragDrop:true,ddGroup:"mainPanelDDGroup",view:ui.cmp._NotInENGrid.view,columns:ui.cmp._NotInENGrid.columns,onRowContextMenu:function(c,f,d){d.stopEvent();c.getSelectionModel().selectRow(f);new ui.cmp._NotInENGrid.menu({grid:c,rowIdx:f,event:d}).showAt(d.getXY())},onRowDblClick:function(c,f,d){this.openFile(c.store.getAt(f).data.id)},openFile:function(g){var e=this.store.getById(g),d=e.data.path,c=e.data.name,f=Ext.util.md5("FNIEN-"+PhDOE.user.lang+d+c);if(!Ext.getCmp("main-panel").findById("FNIEN-"+f)){Ext.getCmp("main-panel").add({id:"FNIEN-"+f,layout:"border",title:c,originTitle:c,iconCls:"iconTabView",closable:true,tabLoaded:false,panLANGLoaded:false,defaults:{split:true},tabTip:String.format(_("Not In EN: in {0}"),d),items:[new ui.cmp.FilePanel({id:"FNIEN-NotInEN-PANEL-"+f,region:"center",title:_("File: ")+d+c,prefix:"FNIEN",ftype:"NotInEN",fid:f,fpath:d,fname:c,original:true,readOnly:true,lang:PhDOE.user.lang,parser:"xml",storeRecord:e,syncScroll:false})]})}Ext.getCmp("main-panel").setActiveTab("FNIEN-"+f)},initComponent:function(){Ext.apply(this,{store:ui.cmp._NotInENGrid.store});ui.cmp.NotInENGrid.superclass.initComponent.call(this);this.on("rowcontextmenu",this.onRowContextMenu,this);this.on("rowdblclick",this.onRowDblClick,this)}});ui.cmp._NotInENGrid.instance=null;ui.cmp.NotInENGrid.getInstance=function(c){if(!ui.cmp._NotInENGrid.instance){if(!c){c={}}ui.cmp._NotInENGrid.instance=new ui.cmp.NotInENGrid(c)}return ui.cmp._NotInENGrid.instance};Ext.namespace("ui","ui.cmp","ui.cmp._PatchesTreeGrid","ui.cmp._PatchesTreeGrid.menu");ui.cmp._PatchesTreeGrid.menu.users=function(c){Ext.apply(this,c);this.init();ui.cmp._PatchesTreeGrid.menu.users.superclass.constructor.call(this)};Ext.extend(ui.cmp._PatchesTreeGrid.menu.users,Ext.menu.Menu,{init:function(){var c=[];this.node.cascade(function(d){if(d.attributes.type!=="folder"&&d.attributes.type!=="patch"&&d.attributes.type!=="user"){c.push(d)}},this);Ext.apply(this,{items:[{scope:this,text:String.format(_("Send an email to {0}"),"<b>"+this.node.attributes.task+"</b>"),iconCls:"iconSendEmail",hidden:(this.node.attributes.task===PhDOE.user.login||!this.node.attributes.email),handler:function(){var d=new ui.cmp.EmailPrompt();d.setData(this.node.attributes.task,this.node.attributes.email);d.show(this.node.el)}},{text:_("Back all files to work in progress module"),hidden:(this.node.attributes.task!==PhDOE.user.login),disabled:Ext.isEmpty(c),iconCls:"iconWorkInProgress",handler:function(){ui.task.MoveToWork({nodesToAdd:c})}},{xtype:"menuseparator",hidden:!(PhDOE.user.haveKarma&&this.node.attributes.task==PhDOE.user.login)},new ui.cmp._WorkTreeGrid.menu.commit({hidden:!(PhDOE.user.haveKarma&&this.node.attributes.task==PhDOE.user.login),module:"patches",from:"user",node:false,folderNode:false,patchNode:false,userNode:this.node})]})}});ui.cmp._PatchesTreeGrid.menu.patches=function(c){Ext.apply(this,c);this.init();ui.cmp._PatchesTreeGrid.menu.patches.superclass.constructor.call(this)};Ext.extend(ui.cmp._PatchesTreeGrid.menu.patches,Ext.menu.Menu,{init:function(){var e=this.node,f=[],d=e.parentNode.attributes.task,c=e.parentNode.attributes.isAnonymous,g=e.parentNode.attributes.haveKarma;this.node.cascade(function(h){if(h.attributes.type!=="folder"&&h.attributes.type!=="patch"&&h.attributes.type!=="user"){f.push(h)}},this);Ext.apply(this,{items:[{text:_("Edit the description of this patch"),iconCls:"iconPendingPatch",hidden:(d!==PhDOE.user.login),handler:function(){var h=new ui.cmp.ManagePatchPrompt({title:_("Modify this patch description"),patchName:e.attributes.task,patchDescription:e.attributes.patchDescription,patchEmail:e.attributes.patchEmail,patchID:e.attributes.idDB});h.show(this.el)}},{text:_("Delete this patch"),iconCls:"iconTrash",hidden:(d!==PhDOE.user.login),handler:function(){ui.task.DeletePatchTask({patchID:e.attributes.idDB})}},{xtype:"menuseparator",hidden:!(d==PhDOE.user.login)},{text:_("Back all this patch to work in progress module"),iconCls:"iconWorkInProgress",hidden:!(d==PhDOE.user.login),disabled:Ext.isEmpty(f),handler:function(){ui.task.MoveToWork({nodesToAdd:f})}},{xtype:"menuseparator"},{text:_("View unified diff"),iconCls:"iconViewDiff",handler:function(){Ext.getCmp("main-panel").openDiffTab({DiffType:"file",patchID:e.attributes.idDB,patchName:e.attributes.task})}},{text:_("Download the unified diff as a patch"),iconCls:"iconDownloadDiff",handler:function(){window.location.href="./do/downloadPatch?patchID="+e.attributes.idDB+"&csrfToken="+csrfToken}},{xtype:"menuseparator",hidden:!(PhDOE.user.haveKarma&&(d===PhDOE.user.login||!g))},new ui.cmp._WorkTreeGrid.menu.commit({hidden:!(PhDOE.user.haveKarma&&(d===PhDOE.user.login||!g)),module:"patches",from:c?"anonymousPatch":"patch",node:false,folderNode:false,patchNode:this.node,userNode:this.node.parentNode}),{xtype:"menuseparator",hidden:!(PhDOE.user.isGlobalAdmin||PhDOE.user.isLangAdmin)},new ui.cmp._WorkTreeGrid.menu.admin({hidden:!(PhDOE.user.isGlobalAdmin||PhDOE.user.isLangAdmin),from:"patch",node:this.node})]})}});ui.cmp._PatchesTreeGrid.menu.folders=function(c){Ext.apply(this,c);this.init();ui.cmp._PatchesTreeGrid.menu.folders.superclass.constructor.call(this)};Ext.extend(ui.cmp._PatchesTreeGrid.menu.folders,Ext.menu.Menu,{init:function(){var c=[];if(this.node.parentNode.parentNode.attributes.task!==PhDOE.user.login){return false}this.node.cascade(function(d){if(d.attributes.type!=="folder"&&d.attributes.type!=="patch"&&d.attributes.type!=="user"){c.push(d)}},this);Ext.apply(this,{items:[{text:_("Back all this folder to work in progress module"),iconCls:"iconWorkInProgress",handler:function(){ui.task.MoveToWork({nodesToAdd:c})}},{xtype:"menuseparator",hidden:!PhDOE.user.haveKarma},new ui.cmp._WorkTreeGrid.menu.commit({hidden:!PhDOE.user.haveKarma,module:"patches",from:"folder",node:false,folderNode:this.node,patchNode:this.node.parentNode,userNode:this.node.parentNode.parentNode})]})}});ui.cmp._PatchesTreeGrid.menu.files=function(c){Ext.apply(this,c);this.init();ui.cmp._PatchesTreeGrid.menu.files.superclass.constructor.call(this)};Ext.extend(ui.cmp._PatchesTreeGrid.menu.files,Ext.menu.Menu,{init:function(){var j=this.node,o=j.attributes.type,h,d=j.parentNode.attributes.task,g=j.attributes.task,l=j.ownerTree,m=j.attributes.idDB,e=[],f=this.node.parentNode.parentNode.parentNode.attributes.task,c=this.node.parentNode.parentNode.parentNode.attributes.haveKarma,k;k=j.parentNode.attributes.task.split("/");h=k[0];this.node.cascade(function(p){if(p.attributes.type!=="folder"&&p.attributes.type!=="patch"&&p.attributes.type!=="user"){e.push(p)}},this);Ext.apply(this,{items:[{text:"<b>"+((o==="delete")?_("View in a new tab"):_("Edit in a new tab"))+"</b>",iconCls:"iconEdit",handler:function(){ui.cmp.WorkTreeGrid.getInstance().openFile(j)}},{text:_("Back this file to work in progress module"),hidden:(f!==PhDOE.user.login),iconCls:"iconWorkInProgress",handler:function(){ui.task.MoveToWork({nodesToAdd:e})}},"-",{text:_("View diff"),iconCls:"iconViewDiff",handler:function(){Ext.getCmp("main-panel").openDiffTab({DiffType:"file",FileName:g,FilePath:d,currentOwner:f,fileIdDB:j.attributes.idDB})}},{text:_("Download the diff as a patch"),iconCls:"iconDownloadDiff",handler:function(){window.location.href="./do/downloadPatch?FilePath="+d+"&FileName="+g+"&csrfToken="+csrfToken}},{xtype:"menuseparator",hidden:!(f==PhDOE.user.login)},{text:((o==="delete")?_("Cancel this deletion"):_("Clear this change")),hidden:!(f==PhDOE.user.login),iconCls:"iconPageDelete",handler:function(){new ui.task.ClearLocalChangeTask({ftype:o,fpath:d,fname:g})}},{xtype:"menuseparator",hidden:!(PhDOE.user.haveKarma&&(f===PhDOE.user.login||!c))},new ui.cmp._WorkTreeGrid.menu.commit({module:"patches",hidden:!(PhDOE.user.haveKarma&&(f===PhDOE.user.login||!c)),from:"file",node:this.node,folderNode:this.node.parentNode,patchNode:this.node.parentNode.parentNode,userNode:this.node.parentNode.parentNode.parentNode}),{xtype:"menuseparator",hidden:!(PhDOE.user.isGlobalAdmin||PhDOE.user.isLangAdmin)},new ui.cmp._WorkTreeGrid.menu.admin({hidden:!(PhDOE.user.isGlobalAdmin||PhDOE.user.isLangAdmin),fileLang:h,from:"file",node:this.node,folderNode:this.node.parentNode,userNode:this.node.parentNode.parentNode.parentNode})]})}});ui.cmp.PatchesTreeGrid=Ext.extend(Ext.ux.tree.TreeGrid,{onContextMenu:function(f,g){g.stopEvent();var d=f.attributes.type,c;switch(d){case"user":f.select();c=new ui.cmp._PatchesTreeGrid.menu.users({node:f});break;case"folder":f.select();c=new ui.cmp._PatchesTreeGrid.menu.folders({node:f});break;case"patch":f.select();c=new ui.cmp._PatchesTreeGrid.menu.patches({node:f});break;default:f.select();c=new ui.cmp._PatchesTreeGrid.menu.files({node:f});break}c.showAt(g.getXY())},modPatchName:function(c){var d=this.getRootNode(),e=d.findChild("idDB",c.patchID,true);e.setText(c.newPatchName);e.attributes.patchDescription=c.newPatchDescription;e.attributes.patchEmail=c.newPatchEmail;e.attributes.task=c.newPatchName},initComponent:function(){Ext.apply(this,{animate:true,useArrows:true,autoScroll:true,border:false,containerScroll:true,selModel:new Ext.tree.MultiSelectionModel(),columns:[{header:_("Users"),dataIndex:"task",uiProvider:{editable:true,qtip:"help"},tpl:new Ext.XTemplate("{task:this.formatUserName}",{formatUserName:function(c,d){if(d.type==="user"){if(d.userID){d.qtip=_("userID: ")+d.userID}return c}if(d.type==="patch"){if(d.creationDate){d.qtip=_("Creation date: ")+Date.parseDate(d.creationDate,"Y-m-d H:i:s").format(_("Y-m-d, H:i"))}return c}return c}})},{header:_("Last modified"),width:120,dataIndex:"last_modified",align:"center",tpl:new Ext.XTemplate("{last_modified:this.formatDate}",{formatDate:function(c,d){if(d.type!=="user"&&d.type!=="folder"&&d.type!=="patch"){return Date.parseDate(c,"Y-m-d H:i:s").format(_("Y-m-d, H:i"))}else{return""}}})}],loader:{dataUrl:"./do/getWork",baseParams:{module:"PatchesForReview"}}});ui.cmp.PatchesTreeGrid.superclass.initComponent.call(this);this.on("contextmenu",this.onContextMenu,this);this.on("resize",this.resizeCmp,this);this.on("dblclick",ui.cmp.WorkTreeGrid.getInstance().openFile,this);this.getRootNode().on("beforechildrenrendered",function(){this.updateFilesCounter.defer(200,this)},this)},resizeCmp:function(g,f,d,e){this.columns[0].width=e-(this.columns[1].width+5);this.updateColumnWidths()},deletePatch:function(q){var e=this.getRootNode(),o,c,d,f,r=[],p,m,h,g;for(p=0;p<e.childNodes.length;p++){o=e.childNodes[p];for(m=0;m<o.childNodes.length;m++){c=o.childNodes[m];if(c.attributes.idDB===q){if(!Ext.isEmpty(c.childNodes)){for(h=0;h<c.childNodes.length;h++){d=c.childNodes[h];for(g=0;g<d.childNodes.length;g++){f=d.childNodes[h];r.push(f)}}ui.cmp.WorkTreeGrid.getInstance().addToWork(r)}c.remove(true);if(Ext.isEmpty(o.childNodes)){o.remove(true)}this.updateFilesCounter();return}}}},delRecord:function(k){var e=this.getRootNode(),m,c,d,f,o,l,q,p;for(o=0;o<e.childNodes.length;o++){m=e.childNodes[o];for(l=0;l<m.childNodes.length;l++){c=m.childNodes[l];for(q=0;q<c.childNodes.length;q++){d=c.childNodes[q];for(p=0;p<d.childNodes.length;p++){f=d.childNodes[p];if(f.attributes.idDB==k){f.remove(true);if(Ext.isEmpty(d.childNodes)){d.remove(true);if(Ext.isEmpty(m.childNodes)){m.remove(true);this.updateFilesCounter();return}this.updateFilesCounter();return}this.updateFilesCounter();return}}}}}this.updateFilesCounter()},getUserPatchesList:function(){var c=this.getRootNode(),e=c.findChild("task",PhDOE.user.login),d=[];if(!e){return false}else{if(!e.hasChildNodes()){return false}else{e.eachChild(function(f){d.push(f)},this);return d}}},addToPatch:function(g,l,q,k,c){var d,p,r,f,j,o,h,m,e;d=this.getRootNode();p=d.findChild("task",PhDOE.user.login);if(!p){p=new Ext.tree.TreeNode({task:PhDOE.user.login,type:"user",email:PhDOE.user.email,iconCls:"iconUser",expanded:true});d.appendChild(p);d.expand()}r=p.findChild("task",l);if(!r){r=new Ext.tree.TreeNode({task:l,patchDescription:k,patchEmail:c,type:"patch",iconCls:"iconPatch",expanded:true,idDB:g});p.appendChild(r);p.expand()}if(q){for(e=0;e<q.length;e++){f=r.findChild("task",q[e].parentNode.attributes.task);if(!f){f=new Ext.tree.TreeNode({task:q[e].parentNode.attributes.task,type:"folder",iconCls:"iconFolderOpen",expanded:true});r.appendChild(f);r.expand()}j=q[e].attributes.type;if(j==="update"){o="iconRefresh"}if(j==="new"){o="iconNewFiles"}if(j==="delete"){o="iconTrash"}m=new Date();h=new Ext.tree.TreeNode({task:q[e].attributes.task,type:j,iconCls:o,expanded:true,last_modified:m.format("Y-m-d H:i:s"),progress:q[e].attributes.progress,idDB:q[e].attributes.idDB});f.appendChild(h);f.expand()}}this.updateFilesCounter()},addRecord:function(f,c,d,j){var e,m,g,h,k,l;e=this.getRootNode();m=e.findChild("task",PhDOE.user.login);if(!m){m=new Ext.tree.TreeNode({task:PhDOE.user.login,type:"user",email:PhDOE.user.email,iconCls:"iconUser",expanded:true,nbFiles:1});e.appendChild(m);e.expand()}g=m.findChild("task",c);if(!g){g=new Ext.tree.TreeNode({task:c,type:"folder",iconCls:"iconFolderOpen",expanded:true});m.appendChild(g);m.expand()}h=g.findChild("task",d);if(!h){if(j==="update"){l="iconRefresh"}if(j==="new"){l="iconNewFiles"}if(j==="delete"){l="iconTrash"}k=new Date();h=new Ext.tree.TreeNode({task:d,type:j,iconCls:l,expanded:true,last_modified:k.format("Y-m-d H:i:s"),progress:100,idDB:f});g.appendChild(h);g.expand()}this.updateFilesCounter()},countFiles:function(){var e=this.getRootNode(),p=0,k,d,c,l,f,m,o;e.cascade(function(g){if(!g.isRoot&&g.attributes.type!=="user"&&g.attributes.type!=="folder"&&g.attributes.type!=="patch"){if(g.parentNode.parentNode.parentNode.attributes.task===PhDOE.user.login){p++}}},this);return p},updateFilesCounter:function(){var c=this.countFiles();Ext.getDom("acc-patches-nb").innerHTML=c}});ui.cmp._PatchesTreeGrid.instance=null;ui.cmp.PatchesTreeGrid.getInstance=function(c){if(!ui.cmp._PatchesTreeGrid.instance){if(!c){c={}}ui.cmp._PatchesTreeGrid.instance=new ui.cmp.PatchesTreeGrid(c)}return ui.cmp._PatchesTreeGrid.instance};Ext.namespace("ui","ui.cmp","ui.cmp._PendingReviewGrid");ui.cmp._PendingReviewGrid.store=new Ext.data.GroupingStore({proxy:new Ext.data.HttpProxy({url:"./do/getFilesNeedReviewed"}),reader:new Ext.data.JsonReader({root:"Items",totalProperty:"nbItems",idProperty:"id",fields:[{name:"id"},{name:"path"},{name:"name"},{name:"reviewed"},{name:"maintainer"},{name:"fileModifiedEN"},{name:"fileModifiedLang"}]}),sortInfo:{field:"name",direction:"ASC"},groupField:"path",listeners:{datachanged:function(c){Ext.getDom("acc-need-reviewed-nb").innerHTML=c.getCount()}}});ui.cmp._PendingReviewGrid.columns=[{id:"name",header:_("Files"),sortable:true,dataIndex:"name",renderer:function(e,d,f){var j="",h,g,c;c=(PhDOE.user.isAnonymous)?"anonymous":PhDOE.user.login;if(f.data.fileModifiedEN){h=Ext.util.JSON.decode(f.data.fileModifiedEN);if(h.user===c&&h.anonymousIdent===PhDOE.user.anonymousIdent){j=_("File EN modified by me")+"<br>"}else{j=String.format(_("File EN modified by {0}"),h.user)+"<br>"}}if(f.data.fileModifiedLang){g=Ext.util.JSON.decode(f.data.fileModifiedLang);if(g.user===c&&g.anonymousIdent===PhDOE.user.anonymousIdent){j+=String.format(_("File {0} modified by me"),PhDOE.user.lang.ucFirst())}else{j+=String.format(_("File {0} modified by {1}"),PhDOE.user.lang.ucFirst(),g.user)}}if(j!==""){return"<span ext:qtip='"+j+"'>"+e+"</span>"}else{return e}}},{header:_("Reviewed"),width:45,sortable:true,dataIndex:"reviewed"},{header:_("Reviewer"),width:45,sortable:true,dataIndex:"maintainer"},{header:_("Path"),dataIndex:"path",hidden:true}];ui.cmp._PendingReviewGrid.view=new Ext.grid.GroupingView({forceFit:true,startCollapsed:true,groupTextTpl:'{[values.rs[0].data["path"]]} ({[values.rs.length]} {[values.rs.length > 1 ? "'+_("Files")+'" : "'+_("File")+'"]})',getRowClass:function(d){if(d.data.fileModifiedEN||d.data.fileModifiedLang){var f=Ext.util.JSON.decode(d.data.fileModifiedEN),e=Ext.util.JSON.decode(d.data.fileModifiedLang),c;c=(PhDOE.user.isAnonymous)?"anonymous":PhDOE.user.login;return((f.user===c&&f.anonymousIdent===PhDOE.user.anonymousIdent)||(e.user===c&&e.anonymousIdent===PhDOE.user.anonymousIdent))?"fileModifiedByMe":"fileModifiedByAnother"}return false},deferEmptyText:false,emptyText:'<div style="text-align: center;">'+_("No Files")+"</div>"});Ext.namespace("ui.cmp._PendingReviewGrid.menu");ui.cmp._PendingReviewGrid.menu.group=function(c){Ext.apply(this,c);this.init();ui.cmp._PendingReviewGrid.menu.group.superclass.constructor.call(this)};Ext.extend(ui.cmp._PendingReviewGrid.menu.group,Ext.menu.Item,{iconCls:"iconViewDiff",init:function(){Ext.apply(this,{text:String.format(_("Open all files about {0} extension"),this.gname.ucFirst()),handler:function(){Ext.getBody().mask('<img src="themes/img/loading.gif" style="vertical-align: middle;" /> '+String.format(_("Open all files about {0} extension"),this.gname.ucFirst())+". "+_("Please, wait..."));XHR({params:{task:"getAllFilesAboutExtension",ExtName:this.gname},success:function(d){var e=Ext.util.JSON.decode(d.responseText),c;PhDOE.AFfilePendingOpen=[];for(c=0;c<e.files.length;c=c+1){PhDOE.AFfilePendingOpen[c]={fpath:PhDOE.user.lang+e.files[c].path,fname:e.files[c].name}}ui.cmp.RepositoryTree.getInstance().openFile("byPath",PhDOE.AFfilePendingOpen[0].fpath,PhDOE.AFfilePendingOpen[0].fname);PhDOE.AFfilePendingOpen.shift();Ext.getBody().unmask()}})}})}});ui.cmp._PendingReviewGrid.menu.main=function(c){Ext.apply(this,c);this.init();ui.cmp._PendingReviewGrid.menu.main.superclass.constructor.call(this)};Ext.extend(ui.cmp._PendingReviewGrid.menu.main,Ext.menu.Menu,{init:function(){Ext.apply(this,{items:[{text:"<b>"+_("Edit in a new tab")+"</b>",iconCls:"iconFilesNeedReviewed",scope:this,handler:function(){this.grid.fireEvent("rowdblclick",this.grid,this.rowIdx,this.event)}},{scope:this,hidden:this.hideDiffMenu,text:_("View diff..."),iconCls:"iconViewDiff",menu:new Ext.menu.Menu({items:[{scope:this,hidden:(this.grid.store.getAt(this.rowIdx).data.fileModifiedEN===false),text:String.format(_("... of the {0} file"),"EN"),handler:function(){Ext.getCmp("main-panel").openDiffTab({DiffType:"file",FileName:this.fname,FilePath:"en"+this.fpath})}},{scope:this,hidden:(this.grid.store.getAt(this.rowIdx).data.fileModifiedLang===false),text:String.format(_("... of the {0} file"),PhDOE.user.lang.ucFirst()),handler:function(){Ext.getCmp("main-panel").openDiffTab({DiffType:"file",FileName:this.fname,FilePath:PhDOE.user.lang+this.fpath})}}]})},new Ext.menu.Separator({hidden:this.hideGroup}),new ui.cmp._PendingReviewGrid.menu.group({gname:this.gname,hidden:this.hideGroup})]})}});ui.cmp.PendingReviewGrid=Ext.extend(Ext.grid.GridPanel,{loadMask:true,border:false,autoExpandColumn:"name",enableDragDrop:true,ddGroup:"mainPanelDDGroup",columns:ui.cmp._PendingReviewGrid.columns,view:ui.cmp._PendingReviewGrid.view,onRowContextMenu:function(d,k,h){h.stopEvent();var g=d.store.getAt(k),f=g.data.path,c=g.data.name,j=f.split("/");d.getSelectionModel().selectRow(k);new ui.cmp._PendingReviewGrid.menu.main({grid:d,rowIdx:k,event:h,fpath:f,fname:c,hideDiffMenu:(g.data.fileModifiedEN===false&&g.data.fileModifiedLang===false),hideGroup:(j[1]!=="reference"),gname:(j[2])?j[2]:""}).showAt(h.getXY())},onRowDblClick:function(c,f,d){this.openFile(c.store.getAt(f).data.id)},openFile:function(g){var e=this.store.getById(g),d=e.data.path,c=e.data.name,f=Ext.util.md5("FNR-"+PhDOE.user.lang+d+c);if(!Ext.getCmp("main-panel").findById("FNR-"+f)){Ext.getCmp("main-panel").add({id:"FNR-"+f,title:c,layout:"border",iconCls:"iconTabNeedReviewed",closable:true,tabLoaded:false,panVCSLang:!PhDOE.user.conf.reviewed.toolsPanelLogLoad,panVCSEn:!PhDOE.user.conf.reviewed.toolsPanelLogLoad,panLANGLoaded:false,panENLoaded:false,originTitle:c,defaults:{split:true},tabTip:String.format(_("Need Reviewed in: {0}"),d),listeners:{resize:function(h){Ext.getCmp("FNR-EN-PANEL-"+f).setWidth(h.getWidth()/2)}},items:[{region:"west",xtype:"panel",title:_("Tools"),iconCls:"iconConf",collapsedIconCls:"iconConf",plugins:[Ext.ux.PanelCollapsedTitle],collapsible:true,collapsed:!PhDOE.user.conf.reviewed.toolsPanelDisplay,layout:"fit",bodyBorder:false,width:PhDOE.user.conf.reviewed.toolsPanelWidth||375,listeners:{collapse:function(){if(this.ownerCt.tabLoaded){new ui.task.UpdateConfTask({module:"reviewed",itemName:"toolsPanelDisplay",value:false,notify:false})}},expand:function(){if(this.ownerCt.tabLoaded){new ui.task.UpdateConfTask({module:"reviewed",itemName:"toolsPanelDisplay",value:true,notify:false})}},resize:function(h,j){if(this.ownerCt.tabLoaded&&j&&j!=PhDOE.user.conf.reviewed.toolsPanelWidth){new ui.task.UpdateConfTask({module:"reviewed",itemName:"toolsPanelWidth",value:j,notify:false})}}},items:{xtype:"tabpanel",activeTab:0,tabPosition:"bottom",enableTabScroll:true,defaults:{autoScroll:true},items:[new ui.cmp.VCSLogGrid({layout:"fit",title:String.format(_("{0} Log"),PhDOE.user.lang.ucFirst()),prefix:"FNR-LANG",fid:f,fpath:PhDOE.user.lang+d,fname:c,loadStore:PhDOE.user.conf.reviewed.toolsPanelLogLoad}),new ui.cmp.VCSLogGrid({layout:"fit",title:String.format(_("{0} Log"),"En"),prefix:"FNR-EN",fid:f,fpath:"en"+d,fname:c,loadStore:PhDOE.user.conf.reviewed.toolsPanelLogLoad}),new ui.cmp.DictionaryGrid({layout:"fit",title:_("Dictionary"),prefix:"FNR",fid:f})]}},new ui.cmp.FilePanel({id:"FNR-LANG-PANEL-"+f,region:"center",title:String.format(_("{0} File: "),PhDOE.user.lang.ucFirst())+d+c,prefix:"FNR",ftype:"LANG",spellCheck:PhDOE.user.conf.reviewed.enableSpellCheckLang,spellCheckConf:{module:"reviewed",itemName:"enableSpellCheckLang"},fid:f,fpath:d,fname:c,lang:PhDOE.user.lang,parser:"xml",storeRecord:e,syncScrollCB:true,syncScroll:true,syncScrollConf:{module:"reviewed",itemName:"syncScrollbars"}}),new ui.cmp.FilePanel({id:"FNR-EN-PANEL-"+f,region:"east",title:_("en File: ")+d+c,prefix:"FNR",ftype:"EN",original:true,readOnly:true,openInNewTabBtn:true,fid:f,fpath:d,fname:c,lang:"en",parser:"xml",storeRecord:e,syncScroll:true,syncScrollConf:{module:"reviewed",itemName:"syncScrollbars"}})]})}Ext.getCmp("main-panel").setActiveTab("FNR-"+f)},initComponent:function(){Ext.apply(this,{store:ui.cmp._PendingReviewGrid.store,tbar:[_("Filter: ")," ",new Ext.form.TwinTriggerField({id:"FNR-filter",width:180,hideTrigger1:true,enableKeyEvents:true,validateOnBlur:false,validationEvent:false,trigger1Class:"x-form-clear-trigger",trigger2Class:"x-form-search-trigger",listeners:{keypress:function(d,c){if(c.getKey()===c.ENTER){this.onTrigger2Click()}}},onTrigger1Click:function(){this.setValue("");this.triggers[0].hide();this.setSize(180,10);ui.cmp._PendingReviewGrid.instance.store.clearFilter()},onTrigger2Click:function(){var c=this.getValue(),d;if(c===""||c.length<3){this.markInvalid(_("Your filter must contain at least 3 characters"));return}this.clearInvalid();this.triggers[0].show();this.setSize(180,10);d=new RegExp(c,"i");ui.cmp._PendingReviewGrid.instance.store.filterBy(function(e){if(d.test(e.data.path)||d.test(e.data.name)||d.test(e.data.reviewed)||d.test(e.data.maintainer)){return true}else{return false}},this)}})]});ui.cmp.PendingReviewGrid.superclass.initComponent.call(this);this.on("rowcontextmenu",this.onRowContextMenu,this);this.on("rowdblclick",this.onRowDblClick,this)}});ui.cmp._PendingReviewGrid.instance=null;ui.cmp.PendingReviewGrid.getInstance=function(c){if(!ui.cmp._PendingReviewGrid.instance){if(!c){c={}}ui.cmp._PendingReviewGrid.instance=new ui.cmp.PendingReviewGrid(c)}return ui.cmp._PendingReviewGrid.instance};Ext.namespace("ui","ui.cmp","ui.cmp._PendingTranslateGrid");ui.cmp._PendingTranslateGrid.store=new Ext.data.GroupingStore({proxy:new Ext.data.HttpProxy({url:"./do/getFilesNeedTranslate"}),reader:new Ext.data.JsonReader({root:"Items",totalProperty:"nbItems",idProperty:"id",fields:[{name:"id"},{name:"path"},{name:"name"},{name:"fileModified"}]}),sortInfo:{field:"name",direction:"ASC"},groupField:"path",listeners:{datachanged:function(c){Ext.getDom("acc-need-translate-nb").innerHTML=c.getCount()}}});ui.cmp._PendingTranslateGrid.view=new Ext.grid.GroupingView({forceFit:true,startCollapsed:true,groupTextTpl:'{[values.rs[0].data["path"]]} ({[values.rs.length]} {[values.rs.length > 1 ? "'+_("Files")+'" : "'+_("File")+'"]})',deferEmptyText:false,getRowClass:function(d){if(d.data.fileModified){var e=Ext.util.JSON.decode(d.data.fileModified),c;c=(PhDOE.user.isAnonymous)?"anonymous":PhDOE.user.login;return(e.user===c&&e.anonymousIdent===PhDOE.user.anonymousIdent)?"fileModifiedByMe":"fileModifiedByAnother"}return false},emptyText:'<div style="text-align: center;">'+_("No Files")+"</div>"});ui.cmp._PendingTranslateGrid.columns=[{id:"name",header:_("Files"),sortable:true,dataIndex:"name",renderer:function(d,g,e){if(e.data.fileModified){var f=Ext.util.JSON.decode(e.data.fileModified),c;c=(PhDOE.user.isAnonymous)?"anonymous":PhDOE.user.login;if(f.user===c&&f.anonymousIdent===PhDOE.user.anonymousIdent){return"<span ext:qtip='"+_("File modified by me")+"'>"+d+"</span>"}else{return"<span ext:qtip='"+String.format(_("File modified by {0}"),f.user)+"'>"+d+"</span>"}}else{return d}}},{header:_("Path"),dataIndex:"path",hidden:true}];ui.cmp._PendingTranslateGrid.menu=function(c){Ext.apply(this,c);this.init();ui.cmp._StaleFileGrid.menu.superclass.constructor.call(this)};Ext.extend(ui.cmp._PendingTranslateGrid.menu,Ext.menu.Menu,{init:function(){Ext.apply(this,{items:[{scope:this,text:"<b>"+_("Edit in a new tab")+"</b>",iconCls:"iconTabNeedTranslate",handler:function(){this.grid.fireEvent("rowdblclick",this.grid,this.rowIdx,this.event)}}]})}});ui.cmp.PendingTranslateGrid=Ext.extend(Ext.grid.GridPanel,{view:ui.cmp._PendingTranslateGrid.view,loadMask:true,autoExpandColumn:"name",enableDragDrop:true,ddGroup:"mainPanelDDGroup",border:false,onRowContextMenu:function(c,f,d){d.stopEvent();c.getSelectionModel().selectRow(f);new ui.cmp._PendingTranslateGrid.menu({grid:c,event:d,rowIdx:f}).showAt(d.getXY())},onRowDblClick:function(c,d){this.openFile(c.store.getAt(d).data.id)},openFile:function(g){var e=this.store.getById(g),d=e.data.path,c=e.data.name,f=Ext.util.md5("FNT-"+PhDOE.user.lang+d+c),h;if(!Ext.getCmp("main-panel").findById("FNT-"+f)){if(PhDOE.user.conf.newFile.secondPanel=="google"||PhDOE.user.conf.newFile.secondPanel=="originalFile"){h=true}else{h=false}Ext.getCmp("main-panel").add({id:"FNT-"+f,layout:"border",title:c,originTitle:c,iconCls:"iconTabNeedTranslate",closable:true,tabLoaded:false,panTRANSLoaded:false,panTRANSSecondLoaded:!h,defaults:{split:true},tabTip:String.format(_("Need translate: in {0}"),d),listeners:{resize:function(j){if(PhDOE.user.conf.newFile.secondPanel=="google"){Ext.getCmp("FNT-GGTRANS-PANEL-"+f).setWidth(j.getWidth()/2)}if(PhDOE.user.conf.newFile.secondPanel=="originalFile"){Ext.getCmp("FNT-EN-PANEL-"+f).setWidth(j.getWidth()/2)}}},items:[{region:"west",xtype:"panel",title:_("Tools"),iconCls:"iconConf",collapsedIconCls:"iconConf",plugins:[Ext.ux.PanelCollapsedTitle],collapsible:true,collapsed:!PhDOE.user.conf.newFile.toolsPanelDisplay,layout:"fit",bodyBorder:false,width:PhDOE.user.conf.newFile.toolsPanelWidth||375,listeners:{collapse:function(){if(this.ownerCt.tabLoaded){new ui.task.UpdateConfTask({module:"newFile",itemName:"toolsPanelDisplay",value:false,notify:false})}},expand:function(){if(this.ownerCt.tabLoaded){new ui.task.UpdateConfTask({module:"newFile",itemName:"toolsPanelDisplay",value:true,notify:false})}},resize:function(j,k){if(this.ownerCt.tabLoaded&&k&&k!=PhDOE.user.conf.newFile.toolsPanelWidth){new ui.task.UpdateConfTask({module:"newFile",itemName:"toolsPanelWidth",value:k,notify:false})}}},items:{xtype:"tabpanel",activeTab:0,tabPosition:"bottom",defaults:{autoScroll:true},items:[new ui.cmp.DictionaryGrid({layout:"fit",title:_("Dictionary"),prefix:"FNT",fid:f})]}},new ui.cmp.FilePanel({id:"FNT-TRANS-PANEL-"+f,region:"center",title:_("New file: ")+PhDOE.user.lang+d+c,isTrans:true,prefix:"FNT",ftype:"TRANS",spellCheck:PhDOE.user.conf.newFile.enableSpellCheck,spellCheckConf:{module:"newFile",itemName:"enableSpellCheck"},fid:f,fpath:d,fname:c,lang:PhDOE.user.lang,parser:"xml",storeRecord:e,syncScrollCB:h,syncScroll:h,syncScrollConf:{module:"newFile",itemName:"syncScrollbars"}}),((PhDOE.user.conf.newFile.secondPanel=="google")?new ui.cmp.FilePanel({id:"FNT-GGTRANS-PANEL-"+f,region:"east",title:_("Automatic translation: ")+PhDOE.user.lang+d+c,isTrans:true,prefix:"FNT",ftype:"GGTRANS",fid:f,fpath:d,fname:c,readOnly:true,lang:PhDOE.user.lang,parser:"xml",storeRecord:e,syncScroll:true,syncScrollConf:{module:"newFile",itemName:"syncScrollbars"}}):false),((PhDOE.user.conf.newFile.secondPanel=="originalFile")?new ui.cmp.FilePanel({id:"FNT-EN-PANEL-"+f,region:"east",title:_("File: ")+"en"+d+c,prefix:"FNT",ftype:"EN",fid:f,fpath:d,fname:c,original:true,readOnly:true,lang:"en",parser:"xml",storeRecord:e,syncScroll:true,syncScrollConf:{module:"newFile",itemName:"syncScrollbars"}}):false)]})}Ext.getCmp("main-panel").setActiveTab("FNT-"+f)},initComponent:function(){Ext.apply(this,{columns:ui.cmp._PendingTranslateGrid.columns,store:ui.cmp._PendingTranslateGrid.store,tbar:[_("Filter: ")," ",new Ext.form.TwinTriggerField({id:"FNT-filter",width:180,hideTrigger1:true,enableKeyEvents:true,validateOnBlur:false,validationEvent:false,trigger1Class:"x-form-clear-trigger",trigger2Class:"x-form-search-trigger",listeners:{keypress:function(d,c){if(c.getKey()===c.ENTER){this.onTrigger2Click()}}},onTrigger1Click:function(){this.setValue("");this.triggers[0].hide();this.setSize(180,10);ui.cmp._PendingTranslateGrid.instance.store.clearFilter()},onTrigger2Click:function(){var c=this.getValue(),d;if(c===""||c.length<3){this.markInvalid(_("Your filter must contain at least 3 characters"));return}this.clearInvalid();this.triggers[0].show();this.setSize(180,10);d=new RegExp(c,"i");ui.cmp._PendingTranslateGrid.instance.store.filterBy(function(e){if(d.test(e.data.path)||d.test(e.data.name)){return true}else{return false}},this)}})]});ui.cmp.PendingTranslateGrid.superclass.initComponent.call(this);this.on("rowcontextmenu",this.onRowContextMenu,this);this.on("rowdblclick",this.onRowDblClick,this)}});ui.cmp._PendingTranslateGrid.instance=null;ui.cmp.PendingTranslateGrid.getInstance=function(c){if(!ui.cmp._PendingTranslateGrid.instance){if(!c){c={}}ui.cmp._PendingTranslateGrid.instance=new ui.cmp.PendingTranslateGrid(c)}return ui.cmp._PendingTranslateGrid.instance};Ext.namespace("ui","ui.cmp","ui.cmp._PortletBugs");ui.cmp._PortletBugs.store=new Ext.data.Store({proxy:new Ext.data.HttpProxy({url:"./do/getOpenBugs"}),reader:new Ext.data.JsonReader({root:"Items",totalProperty:"nbItems",idProperty:"id",fields:[{name:"id"},{name:"title"},{name:"link"},{name:"description"},{name:"xmlID"}]})});ui.cmp._PortletBugs.gridFormatTitle=function(c){return String.format('<div class="topic"><b>{0}</b></div>',c)};ui.cmp._PortletBugs.gridColumns=[{id:"GridBugTitle",header:_("Title"),sortable:true,dataIndex:"title",renderer:ui.cmp._PortletBugs.gridFormatTitle}];ui.cmp._PortletBugs.gridView=new Ext.grid.GridView({forceFit:true,emptyText:'<div style="text-align: center">'+_("You must manually load this data.<br>Use the refresh button !")+"</div>",deferEmptyText:false,enableRowBody:true,showPreview:false,getRowClass:function(c,e,d){if(this.showPreview){d.body="<p>"+c.data.description+"</p>";return"x-grid3-row-expanded"}return"x-grid3-row-collapsed"}});ui.cmp._PortletBugs.grid=Ext.extend(Ext.grid.GridPanel,{loadMask:true,autoScroll:true,height:250,autoExpandColumn:"GridBugTitle",id:"PortletBugs-grid-id",store:ui.cmp._PortletBugs.store,columns:ui.cmp._PortletBugs.gridColumns,view:ui.cmp._PortletBugs.gridView,sm:new Ext.grid.RowSelectionModel({singleSelect:true}),onRowDblClick:function(e,g){var c=e.store.getAt(g).data.id,d=e.store.getAt(g).data.link,f=e.store.getAt(g).data.title;if(!Ext.getCmp("main-panel").findById("bugs-"+c)){Ext.getCmp("main-panel").add({id:"bugs-"+c,xtype:"panel",title:Ext.util.Format.substr(f,0,20)+"...",tabTip:f,iconCls:"iconBugs",closable:true,layout:"fit",items:[new Ext.ux.IFrameComponent({id:"frame-bugs-"+c,url:d})]})}Ext.getCmp("main-panel").setActiveTab("bugs-"+c)},openRelatedFile:function(c){new ui.task.GetFileInfoByXmlID({xmlID:c})},onContextClick:function(c,f,d){if(!this.menu){this.menu=new Ext.menu.Menu({id:"submenu-bugs",items:[{scope:this,text:"<b>"+_("Open in a new Tab")+"</b>",iconCls:"iconOpenInTab",handler:function(){this.fireEvent("rowdblclick",c,this.ctxIndex,d);this.menu.hide()}},"-",{scope:this,text:_("Refresh this grid"),iconCls:"iconRefresh",handler:function(){this.ctxIndex=null;ui.cmp._PortletBugs.reloadData()}},{scope:this,text:_("Open the related file"),iconCls:"iconAllFiles",id:"bugs-open-related-file",handler:function(){this.openRelatedFile(this.ctxXmlID)}}]})}this.getSelectionModel().selectRow(f);d.stopEvent();if(this.ctxIndex){this.ctxIndex=null}if(this.ctxXmlID){this.ctxXmlID=null}this.ctxIndex=f;this.ctxXmlID=c.store.getAt(this.ctxIndex).data.xmlID;this.menu.showAt(d.getXY());if(!this.ctxXmlID){Ext.getCmp("bugs-open-related-file").disable()}else{Ext.getCmp("bugs-open-related-file").enable()}},togglePreview:function(c){this.view.showPreview=c;this.view.refresh()},initComponent:function(c){this.tbar=[{text:_("Summary"),pressed:false,enableToggle:true,iconCls:"iconSummary",scope:this,toggleHandler:function(d,e){this.togglePreview(e)}}];ui.cmp._PortletBugs.grid.superclass.initComponent.call(this);Ext.apply(this,c);this.on("rowcontextmenu",this.onContextClick,this);this.on("rowdblclick",this.onRowDblClick,this)}});ui.cmp._PortletBugs.reloadData=function(){ui.cmp._PortletBugs.store.reload({callback:function(c,e,d){if(!d){Ext.getCmp("PortletBugs-grid-id").getView().mainBody.update('<div id="PortletBugs-grid-defaultMess-id" style="text-align: center" class="x-grid-empty">'+_("Error when loading open bugs from Php.net !")+"</div>");Ext.get("PortletBugs-grid-defaultMess-id").highlight()}else{if(ui.cmp._PortletBugs.store.getTotalCount()===0){Ext.getCmp("PortletBugs-grid-id").getView().mainBody.update('<div id="PortletBugs-grid-defaultMess-id" style="text-align: center" class="x-grid-empty">'+_("No open bugs")+"</div>");Ext.get("PortletBugs-grid-defaultMess-id").highlight()}}}})};ui.cmp.PortletBugs=Ext.extend(Ext.ux.Portlet,{title:"",iconCls:"iconBugs",layout:"fit",store:ui.cmp._PortletBugs.store,reloadData:ui.cmp._PortletBugs.reloadData,tools:[{id:"refresh",qtip:_("Refresh this grid"),handler:function(){ui.cmp._PortletBugs.reloadData()}}],listeners:{expand:function(){if(PhDOE.app.loaded){new ui.task.UpdateConfTask({item:"portletBugsCollapsed",value:false,notify:false})}},collapse:function(){if(PhDOE.app.loaded){new ui.task.UpdateConfTask({item:"portletBugsCollapsed",value:true,notify:false})}},afterrender:function(c){if(PhDOE.user.conf.portletBugsCollapsed){c.collapse()}else{c.expand()}}},initComponent:function(c){this.id="portletBugs";this.title=String.format(_("Open bugs for {0}"),"doc-"+this.lang);Ext.apply(this,c);ui.cmp.PortletBugs.superclass.initComponent.apply(this);this.add(new ui.cmp._PortletBugs.grid())}});ui.cmp._PortletBugs.instance=null;ui.cmp.PortletBugs.getInstance=function(c){if(!ui.cmp._PortletBugs.instance){if(!c){c={}}ui.cmp._PortletBugs.instance=new ui.cmp.PortletBugs(c)}return ui.cmp._PortletBugs.instance};Ext.namespace("ui","ui.cmp","ui.cmp._PortletInfo");ui.cmp._PortletInfo.store=new Ext.data.Store({proxy:new Ext.data.HttpProxy({url:"./do/getInfos"}),baseParams:{start:0,limit:10},reader:new Ext.data.JsonReader({root:"Items",totalProperty:"nbItems",idProperty:"id",fields:[{name:"id"},{name:"field"},{name:"value"},{name:"date",type:"date",dateFormat:"Y-m-d H:i:s"},{name:"elapsedTime"}]}),listeners:{load:function(c){var e=c.data.items[0].data.date;PhDOE.lastInfoDate=e.format("Y-m-d H:i:s")}}});ui.cmp._PortletInfo.store.setDefaultSort("date","desc");ui.cmp._PortletInfo.typeRenderer=function(l,j,g){var d,c,m,o,e,k,h,f;switch(l){case"updateData":d=g.data.value.user;return String.format(_("{0} updated app's data"),d);break;case"changeFilesOwner":d=g.data.value.user;return String.format(_("{0} changed file's owner"),d);break;case"checkEntities":d=g.data.value.user;return String.format(_("{0} check all entitites"),d);break;case"logout":d=g.data.value.user;return String.format(_("{0} logged out"),d);break;case"login":d=g.data.value.user;c=g.data.value.lang;authService=g.data.value.authService;f="";if(authService=="google"){f='<img src="themes/img/google.png" style="vertical-align: middle;"> '}else{if(authService=="facebook"){f='<img src="themes/img/icon_facebook.png" style="vertical-align: middle;"> '}}return f+String.format(_("{0} is logged in using the {1} language"),d,c.ucFirst());break;case"commitFolders":d=g.data.value.user;c=g.data.value.lang;m=g.data.value.nbFolders;return String.format(_("{0} committed {1} new folder(s) in the {2} language"),d,m,c.ucFirst());break;case"commitFiles":d=g.data.value.user;c=g.data.value.lang;o=g.data.value.nbFilesCreate;e=g.data.value.nbFilesDelete;k=g.data.value.nbFilesUpdate;h=o+e+k;return String.format(_("{0} committed {1} file(s) ({2} new, {3} update, {4} delete) in the language {5}"),d,h,o,k,e,c.ucFirst());break}};ui.cmp._PortletInfo.gridColumns=[new Ext.grid.RowNumberer(),{id:"Type",header:_("Type"),width:180,sortable:true,dataIndex:"field",renderer:ui.cmp._PortletInfo.typeRenderer},{header:_("Since"),width:110,sortable:false,dataIndex:"elapsedTime",renderer:function(d,c,e){if(!d){d=_("Less than one second")}else{d=String.format(_("{0} "+d.units),d.value)}return"<span ext:qtip='"+e.data.date.format(_("Y-m-d, H:i"))+"'>"+d+"</span>"}},{header:_("Date"),width:110,sortable:true,dataIndex:"date",hidden:true,renderer:Ext.util.Format.dateRenderer(_("Y-m-d, H:i"))}];ui.cmp._PortletInfo.grid=Ext.extend(Ext.grid.GridPanel,{autoExpandColumn:"Type",loadMask:true,autoScroll:true,autoHeight:true,store:ui.cmp._PortletInfo.store,columns:ui.cmp._PortletInfo.gridColumns,view:ui.cmp._PortletInfo.gridView,initComponent:function(){Ext.apply(this,{bbar:new Ext.PagingToolbar({pageSize:10,store:this.store,displayInfo:true})});ui.cmp._PortletInfo.grid.superclass.initComponent.call(this);this.on("rowdblclick",this.onRowdblclick,this)}});ui.cmp.PortletInfo=Ext.extend(Ext.ux.Portlet,{title:_("Information"),iconCls:"iconInfo",layout:"fit",store:ui.cmp._PortletInfo.store,tools:[{id:"refresh",qtip:_("Refresh this grid"),handler:function(){ui.cmp._PortletInfo.store.reload()}}],listeners:{expand:function(){if(PhDOE.app.loaded){new ui.task.UpdateConfTask({item:"portletInfoCollapsed",value:false,notify:false})}},collapse:function(){if(PhDOE.app.loaded){new ui.task.UpdateConfTask({item:"portletInfoCollapsed",value:true,notify:false})}},afterrender:function(c){if(PhDOE.user.conf.portletInfoCollapsed){c.collapse()}else{c.expand()}}},initComponent:function(c){this.id="portletInfo";Ext.apply(this,c);ui.cmp.PortletInfo.superclass.initComponent.apply(this);this.add(new ui.cmp._PortletInfo.grid())}});ui.cmp._PortletInfo.instance=null;ui.cmp.PortletInfo.getInstance=function(c){if(!ui.cmp._PortletInfo.instance){if(!c){c={}}ui.cmp._PortletInfo.instance=new ui.cmp.PortletInfo(c)}return ui.cmp._PortletInfo.instance};Ext.namespace("ui","ui.cmp","ui.cmp._PortletLocalMail");ui.cmp._PortletLocalMail.store=new Ext.data.Store({proxy:new Ext.data.HttpProxy({url:"./do/getLastNews"}),reader:new Ext.data.JsonReader({root:"Items",totalProperty:"nbItems",idProperty:"id",fields:[{name:"id"},{name:"title"},{name:"link"},{name:"description"},{name:"pubDate",type:"date",dateFormat:"Y/m/d H:i:s"}]})});ui.cmp._PortletLocalMail.store.setDefaultSort("pubDate","desc");ui.cmp._PortletLocalMail.columns=[new Ext.grid.RowNumberer(),{id:"GridMailingTitle",header:_("Title"),sortable:true,dataIndex:"title"},{header:_("By"),width:100,sortable:true,dataIndex:"description"},{header:_("Date"),width:100,sortable:true,dataIndex:"pubDate",renderer:Ext.util.Format.dateRenderer(_("Y-m-d, H:i"))}];ui.cmp._PortletLocalMail.grid=Ext.extend(Ext.grid.GridPanel,{loadMask:true,autoScroll:true,height:250,autoExpandColumn:"GridMailingTitle",id:"PortletLocalMail-grid-id",store:ui.cmp._PortletLocalMail.store,columns:ui.cmp._PortletLocalMail.columns,sm:new Ext.grid.RowSelectionModel({singleSelect:true}),view:new Ext.grid.GridView({forceFit:true,enableRowBody:true,ignoreAdd:true,emptyText:'<div style="text-align: center">'+_("You must manually load this data.<br>Use the refresh button !")+"</div>",deferEmptyText:false}),onRowDblClick:function(d,g){var c=d.store.getAt(g).data.pubDate,f=d.store.getAt(g).data.link,e=d.store.getAt(g).data.title;if(!Ext.getCmp("main-panel").findById("mail-"+c)){Ext.getCmp("main-panel").add({xtype:"panel",id:"mail-"+c,title:Ext.util.Format.substr(e,0,20)+"...",tabTip:e,iconCls:"iconMailing",closable:true,layout:"fit",items:[new Ext.ux.IFrameComponent({id:"frame-mail-"+c,url:f})]})}Ext.getCmp("main-panel").setActiveTab("mail-"+c)},onContextClick:function(c,f,d){if(!this.menu){this.menu=new Ext.menu.Menu({id:"submenu-mail",items:[{scope:this,text:"<b>"+_("Open in a new Tab")+"</b>",iconCls:"iconOpenInTab",handler:function(){this.fireEvent("rowdblclick",c,this.ctxIndex,d);this.menu.hide()}},"-",{scope:this,text:_("Refresh this grid"),iconCls:"iconRefresh",handler:function(){this.ctxIndex=null;ui.cmp._PortletLocalMail.reloadData()}}]})}this.getSelectionModel().selectRow(f);d.stopEvent();if(this.ctxIndex){this.ctxIndex=null}this.ctxIndex=f;this.menu.showAt(d.getXY())},initComponent:function(c){ui.cmp._PortletLocalMail.grid.superclass.initComponent.call(this);Ext.apply(this,c);this.on("rowcontextmenu",this.onContextClick,this);this.on("rowdblclick",this.onRowDblClick,this)}});ui.cmp._PortletLocalMail.reloadData=function(){ui.cmp._PortletLocalMail.store.reload({callback:function(d,e,c){if(!c){Ext.getCmp("PortletLocalMail-grid-id").getView().mainBody.update('<div id="PortletLocalMail-grid-defaultMess-id" style="text-align: center" class="x-grid-empty">'+_("Error when loading mails from this mailing list !")+"</div>");Ext.get("PortletLocalMail-grid-defaultMess-id").highlight()}}})};ui.cmp.PortletLocalMail=Ext.extend(Ext.ux.Portlet,{title:"",iconCls:"iconMailing",layout:"fit",store:ui.cmp._PortletLocalMail.store,reloadData:ui.cmp._PortletLocalMail.reloadData,tools:[{id:"refresh",qtip:_("Refresh this grid"),handler:function(){ui.cmp._PortletLocalMail.reloadData()}}],listeners:{expand:function(){if(PhDOE.app.loaded){new ui.task.UpdateConfTask({item:"portletLocalMailCollapsed",value:false,notify:false})}},collapse:function(){if(PhDOE.app.loaded){new ui.task.UpdateConfTask({item:"portletLocalMailCollapsed",value:true,notify:false})}},afterrender:function(c){if(PhDOE.user.conf.portletLocalMailCollapsed){c.collapse()}else{c.expand()}}},initComponent:function(c){this.id="portletLocalMail";Ext.apply(this,c);ui.cmp.PortletLocalMail.superclass.initComponent.apply(this);this.title=String.format(_("Mail from {0}"),"doc-"+this.lang);this.add(new ui.cmp._PortletLocalMail.grid())}});ui.cmp._PortletLocalMail.instance=null;ui.cmp.PortletLocalMail.getInstance=function(c){if(!ui.cmp._PortletLocalMail.instance){if(!c){c={}}ui.cmp._PortletLocalMail.instance=new ui.cmp.PortletLocalMail(c)}return ui.cmp._PortletLocalMail.instance};Ext.namespace("ui","ui.cmp","ui.cmp._PortletSummary");ui.cmp._PortletSummary.store=new Ext.data.Store({proxy:new Ext.data.HttpProxy({url:"./do/getSummaryInfo"}),reader:new Ext.data.JsonReader({root:"Items",totalProperty:"nbItems",idProperty:"id",fields:[{name:"id"},{name:"libel"},{name:"nbFiles"},{name:"percentFiles"},{name:"sizeFiles"},{name:"percentSize"}]}),listeners:{load:function(){this.each(function(c){switch(c.id){case 1:c.set("libel",_("Up to date files"));break;case 2:c.set("libel",_("Stale files"));break;case 3:c.set("libel",_("Files available for translation"));break;case 4:c.set("libel",_("Total"));break;default:c.set("libel","");break}c.commit()})}}});ui.cmp._PortletSummary.gridColumns=[new Ext.grid.RowNumberer(),{id:"StatusType",header:_("File status type"),width:180,sortable:true,dataIndex:"libel"},{header:_("Number of files"),width:110,sortable:true,dataIndex:"nbFiles"},{header:_("Percent of files"),width:110,sortable:true,dataIndex:"percentFiles"},{header:_("Size of files (kB)"),width:110,sortable:true,dataIndex:"sizeFiles"},{header:_("Percent of size"),width:110,sortable:true,dataIndex:"percentSize"}];ui.cmp._PortletSummary.gridView=new Ext.grid.GridView({getRowClass:function(c){switch(c.data.id){case 1:return"summary_1";case 2:return"summary_2";case 3:return"summary_3";case 4:return"summary_4";default:return""}}});ui.cmp._PortletSummary.grid=Ext.extend(Ext.grid.GridPanel,{loadMask:true,autoScroll:true,autoHeight:true,store:ui.cmp._PortletSummary.store,columns:ui.cmp._PortletSummary.gridColumns,view:ui.cmp._PortletSummary.gridView,onRowdblclick:function(c,e){var d=c.store.getAt(e).data.id;if(d===2){Ext.getCmp("acc-need-update").expand()}if(d===3){Ext.getCmp("acc-need-translate").expand()}},initComponent:function(c){ui.cmp._PortletSummary.grid.superclass.initComponent.call(this);Ext.apply(this,c);this.on("rowdblclick",this.onRowdblclick,this)}});ui.cmp.PortletSummary=Ext.extend(Ext.ux.Portlet,{title:_("Summary"),iconCls:"",layout:"fit",store:ui.cmp._PortletSummary.store,tools:[{id:"refresh",qtip:_("Refresh this grid"),handler:function(){ui.cmp._PortletSummary.store.reload()}}],listeners:{expand:function(){if(PhDOE.app.loaded){new ui.task.UpdateConfTask({item:"portletSummaryCollapsed",value:false,notify:false})}},collapse:function(){if(PhDOE.app.loaded){new ui.task.UpdateConfTask({item:"portletSummaryCollapsed",value:true,notify:false})}}},initComponent:function(c){this.id="portletSummary";Ext.apply(this,c);ui.cmp.PortletSummary.superclass.initComponent.apply(this);this.add(new ui.cmp._PortletSummary.grid())},afterRender:function(){ui.cmp.PortletSummary.superclass.afterRender.call(this);var c={cs:"cz",sr:"rs",sv:"se"};this.header.insertFirst({tag:"div",id:Ext.id(),style:"float: left; margin-right: 2px;",cls:"flags flag-"+(c[this.lang]||this.lang)},"first");if(PhDOE.user.conf.portletSummaryCollapsed){this.collapse()}else{this.expand()}}});ui.cmp._PortletSummary.instance=null;ui.cmp.PortletSummary.getInstance=function(c){if(!ui.cmp._PortletSummary.instance){if(!c){c={}}ui.cmp._PortletSummary.instance=new ui.cmp.PortletSummary(c)}return ui.cmp._PortletSummary.instance};Ext.namespace("ui","ui.cmp","ui.cmp._PortletTranslationGraph");function renderLibel(c){return _(c)}ui.cmp._PortletTranslationGraph.store=new Ext.data.Store({proxy:new Ext.data.HttpProxy({url:"./do/getGraphLang"}),reader:new Ext.data.JsonReader({root:"Items",totalProperty:"nbItems",idProperty:"id",fields:[{name:"id"},{name:"libel",convert:renderLibel},{name:"total"}]})});ui.cmp._PortletTranslationGraph.chart=Ext.extend(Ext.chart.PieChart,{height:400,url:"js/ExtJs/resources/charts.swf",dataField:"total",categoryField:"libel",store:ui.cmp._PortletTranslationGraph.store,series:[{style:{colors:["#68D888","#FF6347","#EEE8AA"]}}],extraStyle:{legend:{display:"bottom",padding:5,font:{family:"Tahoma",size:13}}},initComponent:function(c){ui.cmp._PortletTranslationGraph.chart.superclass.initComponent.call(this);Ext.apply(this,c)}});ui.cmp.PortletTranslationGraph=Ext.extend(Ext.ux.Portlet,{title:_("Graphics"),iconCls:"iconGraphic",layout:"fit",store:ui.cmp._PortletTranslationGraph.store,tools:[{id:"refresh",qtip:_("Refresh this graph"),handler:function(){ui.cmp._PortletTranslationGraph.store.reload()}}],initComponent:function(c){this.id="portletTranslationGraph";Ext.apply(this,c);ui.cmp.PortletTranslationGraph.superclass.initComponent.apply(this);this.add(new ui.cmp._PortletTranslationGraph.chart())}});ui.cmp._PortletTranslationGraph.instance=null;ui.cmp.PortletTranslationGraph.getInstance=function(c){if(!ui.cmp._PortletTranslationGraph.instance){if(!c){c={}}ui.cmp._PortletTranslationGraph.instance=new ui.cmp.PortletTranslationGraph(c)}return ui.cmp._PortletTranslationGraph.instance};Ext.namespace("ui","ui.cmp","ui.cmp._PortletTranslationsGraph");ui.cmp._PortletTranslationsGraph.store=new Ext.data.Store({proxy:new Ext.data.HttpProxy({url:"./do/getGraphLangs"}),reader:new Ext.data.JsonReader({root:"Items",totalProperty:"nbItems",idProperty:"id",fields:[{name:"id"},{name:"libel",type:"string"},{name:"fullLibel",type:"string"},{name:"total",type:"int"},{name:"percent",type:"float"}]})});ui.cmp._PortletTranslationsGraph.chart=Ext.extend(Ext.chart.ColumnChart,{height:400,url:"js/ExtJs/resources/charts.swf",xField:"libel",tipRenderer:function(d,c){return _("Lang:")+" "+c.data.fullLibel+"\r"+_("Total:")+" "+c.data.total+" "+_("files")+" ("+c.data.percent+"%)"},series:[{type:"column",displayName:"Total",yField:"total",style:{image:"themes/img/bar.gif",mode:"stretch",color:10075112}}],store:ui.cmp._PortletTranslationsGraph.store,initComponent:function(c){ui.cmp._PortletTranslationsGraph.chart.superclass.initComponent.call(this);Ext.apply(this,c)}});ui.cmp.PortletTranslationsGraph=Ext.extend(Ext.ux.Portlet,{title:_("Graphics for all languages"),iconCls:"iconGraphic",layout:"fit",store:ui.cmp._PortletTranslationsGraph.store,tools:[{id:"refresh",qtip:_("Refresh this graph"),handler:function(){ui.cmp._PortletTranslationsGraph.store.reload()}}],initComponent:function(c){this.id="portletTranslationsGraph";Ext.apply(this,c);ui.cmp.PortletTranslationsGraph.superclass.initComponent.apply(this);this.add(new ui.cmp._PortletTranslationsGraph.chart())}});ui.cmp._PortletTranslationsGraph.instance=null;ui.cmp.PortletTranslationsGraph.getInstance=function(c){if(!ui.cmp._PortletTranslationsGraph.instance){if(!c){c={}}ui.cmp._PortletTranslationsGraph.instance=new ui.cmp.PortletTranslationsGraph(c)}return ui.cmp._PortletTranslationsGraph.instance};Ext.namespace("ui","ui.cmp","ui.cmp._PortletTranslator","ui.cmp._PortletReviewer");ui.cmp._PortletTranslator.store=new Ext.data.Store({proxy:new Ext.data.HttpProxy({url:"./do/getTranslatorInfo"}),reader:new Ext.data.JsonReader({root:"Items",totalProperty:"nbItems",idProperty:"id",fields:[{name:"id"},{name:"name"},{name:"email",mapping:"mail"},{name:"nick"},{name:"vcs"},{name:"uptodate",type:"int"},{name:"stale",type:"int"},{name:"sum",type:"int"}]}),listeners:{load:function(){var d=this.getCount(),c=d*20;ui.cmp.PortletTranslator.getInstance().setHeight(c+124);ui.cmp.PortletTranslator.getInstance().doLayout()}}});ui.cmp._PortletTranslator.store.setDefaultSort("nick","asc");ui.cmp._PortletReviewer.store=new Ext.data.Store({proxy:new Ext.data.HttpProxy({url:"./do/getReviewerInfo"}),reader:new Ext.data.JsonReader({root:"Items",totalProperty:"nbItems",idProperty:"id",fields:[{name:"id"},{name:"name"},{name:"email",mapping:"mail"},{name:"nick"},{name:"vcs"},{name:"reviewedUptodate",type:"int"},{name:"reviewedStale",type:"int"},{name:"reviewedSum",type:"int"}]})});ui.cmp._PortletReviewer.store.setDefaultSort("nick","asc");ui.cmp._PortletTranslator.translatorSumRenderer=function(c){if(c){c=(c===0||c>1)?c:1;return String.format("("+_("{0} Translators")+")",c)}else{return false}};ui.cmp._PortletReviewer.translatorSumRenderer=function(c){if(c){c=(c===0||c>1)?c:1;return String.format("("+_("{0} Reviewers")+")",c)}else{return _("No reviewer")}};ui.cmp._PortletTranslator.uptodateRenderer=function(c){if(c==="0"){return false}else{return'<span style="color:green; font-weight: bold;">'+c+"</span>"}};ui.cmp._PortletReviewer.uptodateRenderer=function(c){if(c==="0"){return false}else{return'<span style="color:green; font-weight: bold;">'+c+"</span>"}};ui.cmp._PortletTranslator.staleRenderer=function(c){if(c==="0"){return false}else{return'<span style="color:red; font-weight: bold;">'+c+"</span>"}};ui.cmp._PortletReviewer.staleRenderer=function(c){if(c==="0"){return false}else{return'<span style="color:red; font-weight: bold;">'+c+"</span>"}};ui.cmp._PortletTranslator.sumRenderer=function(c){return(c==="0")?"":c};ui.cmp._PortletReviewer.sumRenderer=function(c){return(c==="0")?"":c};ui.cmp._PortletTranslator.gridColumns=[new Ext.grid.RowNumberer(),{id:"GridTransName",header:_("Name"),sortable:true,dataIndex:"name",summaryType:"count",summaryRenderer:ui.cmp._PortletTranslator.translatorSumRenderer},{header:_("Email"),width:110,sortable:true,dataIndex:"email"},{header:_("Nick"),width:70,sortable:true,dataIndex:"nick"},{header:_("VCS"),width:45,sortable:true,dataIndex:"vcs"},{header:_("UptoDate"),width:60,sortable:true,renderer:ui.cmp._PortletTranslator.uptodateRenderer,dataIndex:"uptodate",summaryType:"sum"},{header:_("Stale"),width:90,sortable:true,renderer:ui.cmp._PortletTranslator.staleRenderer,dataIndex:"stale",summaryType:"sum"},{header:_("Sum"),width:50,sortable:true,renderer:ui.cmp._PortletTranslator.sumRenderer,dataIndex:"sum",summaryType:"sum"}];ui.cmp._PortletReviewer.gridColumns=[new Ext.grid.RowNumberer(),{id:"GridTransName",header:_("Name"),sortable:true,dataIndex:"name",summaryType:"count",summaryRenderer:ui.cmp._PortletReviewer.translatorSumRenderer},{header:_("Email"),width:110,sortable:true,dataIndex:"email"},{header:_("Nick"),width:70,sortable:true,dataIndex:"nick"},{header:_("VCS"),width:45,sortable:true,dataIndex:"vcs"},{header:_("Reviewed"),width:60,sortable:true,renderer:ui.cmp._PortletReviewer.uptodateRenderer,dataIndex:"reviewedUptodate",summaryType:"sum"},{header:_("Must be reviewed"),width:90,sortable:true,renderer:ui.cmp._PortletReviewer.staleRenderer,dataIndex:"reviewedStale",summaryType:"sum"},{header:_("Sum"),width:50,sortable:true,renderer:ui.cmp._PortletReviewer.sumRenderer,dataIndex:"reviewedSum",summaryType:"sum"}];ui.cmp._PortletTranslator.grid=Ext.extend(Ext.grid.GridPanel,{title:_("Translators"),loadMask:true,autoScroll:true,autoHeight:true,plugins:[new Ext.ux.grid.GridSummary()],store:ui.cmp._PortletTranslator.store,columns:ui.cmp._PortletTranslator.gridColumns,autoExpandColumn:"GridTransName",sm:new Ext.grid.RowSelectionModel({singleSelect:true}),lang:this.lang,EmailPrompt:new ui.cmp.EmailPrompt(),onRowDblClick:function(d,e){this.getSelectionModel().selectRow(e);if(this.ctxTranslatorName){this.ctxTranslatorEmail=null;this.ctxTranslatorName=null}this.ctxTranslatorEmail=this.store.getAt(e).data.email;this.ctxTranslatorName=this.store.getAt(e).data.name;var c=this.store.getAt(e).data.nick;if(c==="nobody"){return}this.EmailPrompt.setData(this.ctxTranslatorName,this.ctxTranslatorEmail);this.EmailPrompt.show("lastUpdateTime")},onContextClick:function(d,g,f){if(!this.menu){this.menu=new Ext.menu.Menu({id:"submenu-translators",items:[{scope:this,text:"",iconCls:"iconSendEmail",handler:function(){this.EmailPrompt.setData(this.ctxTranslatorName,this.ctxTranslatorEmail);this.EmailPrompt.show("lastUpdateTime")}},"-",{scope:this,text:String.format(_("Send an email to the {0}"),String.format(PhDOE.app.conf.projectMailList,this.lang)),iconCls:"iconSendEmail",handler:function(){this.EmailPrompt.setData("Php Doc Team "+this.lang,String.format(PhDOE.app.conf.projectMailList,this.lang));this.EmailPrompt.show("lastUpdateTime")}}]})}this.getSelectionModel().selectRow(g);f.stopEvent();if(this.ctxTranslatorName){this.ctxTranslatorName=null;this.ctxTranslatorEmail=null}this.ctxTranslatorName=this.store.getAt(g).data.name;this.ctxTranslatorEmail=this.store.getAt(g).data.email;var c=this.store.getAt(g).data.nick;if(c==="nobody"){return}this.menu.items.items[0].setText("<b>"+String.format(_("Send an email to {0}"),this.ctxTranslatorName)+"</b>");this.menu.showAt(f.getXY())},initComponent:function(c){ui.cmp._PortletTranslator.grid.superclass.initComponent.call(this);Ext.apply(this,c);this.on("rowcontextmenu",this.onContextClick,this);this.on("rowdblclick",this.onRowDblClick,this)}});ui.cmp._PortletReviewer.grid=Ext.extend(Ext.grid.GridPanel,{title:_("Reviewers"),loadMask:true,autoScroll:true,autoHeight:true,plugins:[new Ext.ux.grid.GridSummary()],store:ui.cmp._PortletReviewer.store,columns:ui.cmp._PortletReviewer.gridColumns,autoExpandColumn:"GridTransName",sm:new Ext.grid.RowSelectionModel({singleSelect:true}),lang:this.lang,EmailPrompt:new ui.cmp.EmailPrompt(),onRowDblClick:function(d,e){this.getSelectionModel().selectRow(e);if(this.ctxTranslatorName){this.ctxTranslatorEmail=null;this.ctxTranslatorName=null}this.ctxTranslatorEmail=this.store.getAt(e).data.email;this.ctxTranslatorName=this.store.getAt(e).data.name;var c=this.store.getAt(e).data.nick;if(c==="nobody"){return}this.EmailPrompt.setData(this.ctxTranslatorName,this.ctxTranslatorEmail);this.EmailPrompt.show("lastUpdateTime")},onContextClick:function(d,g,f){if(!this.menu){this.menu=new Ext.menu.Menu({id:"submenu-translators",items:[{scope:this,text:"",iconCls:"iconSendEmail",handler:function(){this.EmailPrompt.setData(this.ctxTranslatorName,this.ctxTranslatorEmail);this.EmailPrompt.show("lastUpdateTime")}},"-",{scope:this,text:String.format(_("Send an email to the {0}"),String.format(PhDOE.app.conf.projectMailList,this.lang)),iconCls:"iconSendEmail",handler:function(){this.EmailPrompt.setData("Php Doc Team "+this.lang,String.format(PhDOE.app.conf.projectMailList,this.lang));this.EmailPrompt.show("lastUpdateTime")}}]})}this.getSelectionModel().selectRow(g);f.stopEvent();if(this.ctxTranslatorName){this.ctxTranslatorName=null;this.ctxTranslatorEmail=null}this.ctxTranslatorName=this.store.getAt(g).data.name;this.ctxTranslatorEmail=this.store.getAt(g).data.email;var c=this.store.getAt(g).data.nick;if(c==="nobody"){return}this.menu.items.items[0].setText("<b>"+String.format(_("Send an email to {0}"),this.ctxTranslatorName)+"</b>");this.menu.showAt(f.getXY())},initComponent:function(c){ui.cmp._PortletReviewer.grid.superclass.initComponent.call(this);Ext.apply(this,c);this.on("rowcontextmenu",this.onContextClick,this);this.on("rowdblclick",this.onRowDblClick,this)}});ui.cmp.PortletTranslator=Ext.extend(Ext.ux.Portlet,{title:_("Translators & Reviewer"),iconCls:"iconTranslator",layout:"fit",storeTranslator:ui.cmp._PortletTranslator.store,storeReviewer:ui.cmp._PortletReviewer.store,tools:[{id:"refresh",qtip:_("Refresh this grid"),handler:function(){ui.cmp._PortletTranslator.store.reload({callback:function(){ui.cmp._PortletReviewer.store.reload()}})}}],listeners:{expand:function(){if(PhDOE.app.loaded){new ui.task.UpdateConfTask({item:"portletTranslatorCollapsed",value:false,notify:false})}},collapse:function(){if(PhDOE.app.loaded){new ui.task.UpdateConfTask({item:"portletTranslatorCollapsed",value:true,notify:false})}},afterrender:function(c){if(PhDOE.user.conf.portletTranslatorCollapsed){c.collapse()}else{c.expand()}}},initComponent:function(c){this.id="portletTranslator";Ext.apply(this,c);ui.cmp.PortletTranslator.superclass.initComponent.apply(this);this.add({xtype:"tabpanel",activeTab:0,border:false,height:200,tabPosition:"bottom",autoScroll:true,items:[new ui.cmp._PortletTranslator.grid({lang:this.lang}),new ui.cmp._PortletReviewer.grid({lang:this.lang})]})}});ui.cmp._PortletTranslator.instance=null;ui.cmp.PortletTranslator.getInstance=function(c){if(!ui.cmp._PortletTranslator.instance){if(!c){c={}}ui.cmp._PortletTranslator.instance=new ui.cmp.PortletTranslator(c)}return ui.cmp._PortletTranslator.instance};Ext.namespace("ui","ui.cmp");ui.cmp.PreviewFile=Ext.extend(Ext.Window,{id:"winPreviewFile",layout:"fit",title:_("Preview"),iconCls:"iconView",closable:true,closeAction:"close",maximized:true,modal:true,buttons:[{text:_("Close"),handler:function(){this.ownerCt.ownerCt.close()}}],initComponent:function(){var c=this;ui.cmp.PreviewFile.superclass.initComponent.call(this);XHR({params:{task:"previewFile",path:this.path},success:function(d){var f=Ext.util.JSON.decode(d.responseText),e;f.url=f.url+"?"+Math.random();e=new Ext.ux.IFrameComponent({id:"frame-previewFile",url:f.url});c.add(e);c.show()},failure:function(){}})}});Ext.namespace("ui","ui.cmp","ui.cmp._RepositoryTree");ui.cmp._RepositoryTree.root={nodeType:"async",id:"/",text:_("Repository"),draggable:false};ui.cmp._RepositoryTree.loader=new Ext.tree.TreeLoader({dataUrl:"./do/getAllFiles"});ui.cmp._RepositoryTree.winAddNewFile=Ext.extend(Ext.Window,{title:_("Add a new file"),iconCls:"iconFilesNeedTranslate",id:"win-add-new-file",layout:"form",width:350,height:170,resizable:false,modal:true,bodyStyle:"padding:5px 5px 0",labelWidth:150,buttons:[{id:"win-add-new-file-btn",text:_("Open the editor"),disabled:true,handler:function(){var d=Ext.getCmp("win-add-new-file"),f=d.node.id,c=d.items.items[1].getValue(),e=d.items.items[2].getValue();if(d.node.findChild("id",f+"/"+c)){PhDOE.winForbidden("file_already_exist");return true}d.openFile(f+"/",c,e);d.close();return true}}],openFile:function(e,c,j){var h=Ext.util.md5("FNT-"+e+c),g={data:{fileModified:false,node:this.node}},d=e.split("/"),f;d.shift();f=d[0];d.shift();d.pop();e="/"+d.join("/")+"/";if(e==="//"){e="/"}h=Ext.util.md5("FNT-"+e+c);if(!Ext.getCmp("main-panel").findById("FNT-"+h)){Ext.getCmp("main-panel").add({id:"FNT-"+h,layout:"border",title:c,originTitle:c,iconCls:"iconTabNeedTranslate",closable:true,tabLoaded:false,panTRANSLoaded:false,panGGTRANSLoaded:true,defaults:{split:true},tabTip:String.format(_("New file: in {0}"),f+e),items:[new ui.cmp.FilePanel({id:"FNT-NEW-PANEL-"+h,region:"center",title:_("New file: ")+f+e+c,isTrans:true,prefix:"FNT",ftype:"NEW",fid:h,fpath:e,fname:c,lang:f,parser:"xml",storeRecord:g,syncScrollCB:false,syncScroll:false,skeleton:j})]})}Ext.getCmp("main-panel").setActiveTab("FNT-"+h)},initComponent:function(){Ext.apply(this,{items:[{xtype:"displayfield",fieldLabel:_("Parent Folder"),value:this.node.id},{xtype:"textfield",fieldLabel:_("Name for the new file"),name:"newFolderName",listeners:{valid:function(){Ext.getCmp("win-add-new-file-btn").enable()},invalid:function(){Ext.getCmp("win-add-new-file-btn").disable()}}},{xtype:"combo",triggerAction:"all",width:160,editable:false,store:new Ext.data.Store({proxy:new Ext.data.HttpProxy({url:"./do/getSkeletonsNames"}),reader:new Ext.data.JsonReader({root:"Items",idProperty:"name",fields:[{name:"name"},{name:"path"}]})}),listeners:{select:function(f,d,e){if(f.ownerCt.items.items[1].getValue()===""){f.ownerCt.items.items[1].setValue(d.data.name)}}},valueField:"path",displayField:"name",fieldLabel:_("Chose a skeleton")}]});ui.cmp._RepositoryTree.winAddNewFile.superclass.initComponent.call(this)}});ui.cmp._RepositoryTree.winAddNewFolder=Ext.extend(Ext.Window,{title:_("Add a new folder"),iconCls:"iconFolderNew",id:"win-add-new-folder",layout:"form",width:350,height:200,resizable:false,modal:true,bodyStyle:"padding:5px 5px 0",labelWidth:150,buttons:[{id:"win-add-new-folder-btn",text:"Add",disabled:true,handler:function(){var c=Ext.getCmp("win-add-new-folder"),e=c.node.id,d=c.items.items[1].getValue();XHR({params:{task:"addNewFolder",parentFolder:e,newFolderName:d},success:function(){Ext.getCmp("win-add-new-folder").close();c.node.reload();PhDOE.notify("info",_("Folder created"),String.format(_("Folder <br><br><b>{0}</b><br><br> was created sucessfully under {1} !"),d,e))},failure:function(f){var g=Ext.util.JSON.decode(f.responseText);if(g.type){PhDOE.winForbidden(g.type)}else{PhDOE.winForbidden()}}})}}],initComponent:function(){Ext.apply(this,{items:[{xtype:"displayfield",fieldLabel:_("Parent Folder"),value:this.node.id},{xtype:"textfield",fieldLabel:_("Name for the new folder"),name:"newFolderName",vtype:"alphanum",listeners:{valid:function(){Ext.getCmp("win-add-new-folder-btn").enable()},invalid:function(){Ext.getCmp("win-add-new-folder-btn").disable()}}},{xtype:"box",html:_("Info: This new folder won't be commited until a new file will be commited into it. If you don't commit any new file into it until 8 days, it will be automatically deleted.")}]});ui.cmp._RepositoryTree.winAddNewFolder.superclass.initComponent.call(this)}});Ext.namespace("ui.cmp._RepositoryTree.menu");ui.cmp._RepositoryTree.menu.folder=function(c){Ext.apply(this,c);this.init();ui.cmp._RepositoryTree.menu.folder.superclass.constructor.call(this)};Ext.extend(ui.cmp._RepositoryTree.menu.folder,Ext.menu.Menu,{init:function(){Ext.apply(this,{items:[{text:(this.node.isExpanded())?"<b>"+_("Collapse")+"</b>":"<b>"+_("Expand")+"</b>",iconCls:"iconFolderClose",scope:this,handler:function(){if(this.node.isExpanded()){this.node.collapse()}else{this.node.expand()}}},"-",{text:_("Update this folder"),iconCls:"iconFilesNeedUpdate",scope:this,handler:function(){this.node.expand();new ui.task.UpdateSingleFolderTask(this.node)}},{text:_("Add a new folder"),iconCls:"iconFolderNew",hidden:(this.node.id==="/"||(Ext.util.Format.substr(this.node.id,0,3)!=="/en"&&Ext.util.Format.substr(this.node.id,0,9)!=="/doc-base")),scope:this,handler:function(){this.node.expand();var c=new ui.cmp._RepositoryTree.winAddNewFolder({node:this.node});c.show(this.node.ui.getEl())}},{text:_("Add a new file"),iconCls:"iconFilesNeedTranslate",hidden:(this.node.id==="/"||(Ext.util.Format.substr(this.node.id,0,3)!=="/en"&&Ext.util.Format.substr(this.node.id,0,9)!=="/doc-base")),scope:this,handler:function(){this.node.expand();var c=new ui.cmp._RepositoryTree.winAddNewFile({node:this.node});c.show(this.node.ui.getEl())}}]})}});ui.cmp._RepositoryTree.menu.file=function(c){Ext.apply(this,c);this.init();ui.cmp._RepositoryTree.menu.file.superclass.constructor.call(this)};Ext.extend(ui.cmp._RepositoryTree.menu.file,Ext.menu.Menu,{init:function(){var c=this.node.attributes.text,d=this.node.attributes.id.split("/"),f,e;d.shift();f=d[0];d.shift();d.pop();e=d.join("/")+"/";Ext.apply(this,{items:[{text:"<b>"+_("Edit in a new tab")+"</b>",iconCls:"iconTabNeedReviewed",scope:this,handler:function(){ui.cmp._RepositoryTree.instance.fireEvent("dblclick",this.node)}},{hidden:(this.node.attributes.from==="search"||PhDOE.user.lang==="en"),text:(f==="en")?String.format(_("Open the same file in <b>{0}</b>"),Ext.util.Format.uppercase(PhDOE.user.lang)):String.format(_("Open the same file in <b>{0}</b>"),"EN"),iconCls:"iconTabNeedReviewed",scope:this,handler:function(){if(f==="en"){ui.cmp._RepositoryTree.instance.openFile("byPath",PhDOE.user.lang+"/"+e,c)}else{ui.cmp._RepositoryTree.instance.openFile("byPath","en/"+e,c)}}}]})}});ui.cmp.RepositoryTree=Ext.extend(Ext.ux.MultiSelectTreePanel,{animate:true,enableDD:true,ddGroup:"mainPanelDDGroup",useArrows:true,autoScroll:true,border:false,containerScroll:true,root:ui.cmp._RepositoryTree.root,loader:ui.cmp._RepositoryTree.loader,onContextMenu:function(c,d){d.stopEvent();c.select();if(c.attributes.type==="folder"||c.isRoot){new ui.cmp._RepositoryTree.menu.folder({node:c}).showAt(d.getXY())}else{if(c.attributes.type==="file"){new ui.cmp._RepositoryTree.menu.file({node:c}).showAt(d.getXY())}}},onDblClick:function(c){if(c.attributes.type==="file"){this.openFile("byId",c.attributes.id,false)}},openFile:function(r,m,g){if(r==="byPath"){Ext.getCmp("acc-all-files").expand();var f=m,j=g,u=f.split("/"),l=function(w){w.ensureVisible();if(u[0]&&u[0]!==""){for(var t=0;t<w.childNodes.length;++t){if(w.childNodes[t].text===u[0]){u.shift();w.childNodes[t].expand(false,true,l.createDelegate(this))}}}else{for(var v=0;v<w.childNodes.length;++v){if(w.childNodes[v].text===j){w.childNodes[v].ensureVisible();w.childNodes[v].ui.highlight();this.openFile("byId",w.childNodes[v].id,false)}}}};this.root.expand(false,true,l.createDelegate(this))}if(r==="byId"){var k=this.getNodeById(m),c=k.attributes.id,s=k.attributes.extension,u,p,h,e,d,o,q;u=c.split("/");u.shift();e=u.pop();h=u.shift();c=(u.length>0)?"/"+u.join("/")+"/":"/";p=Ext.util.md5("AF-"+h+c+e);if(!Ext.getCmp("main-panel").findById("AF-"+p)){if(s!=="html"){d=s}else{d="xml"}if(s==="gif"||s==="png"||s==="jpg"){o={};q={id:"AF-ALL-FILE-"+p,xtype:"panel",region:"center",layout:"fit",bodyStyle:"padding:5px 5px 0",html:'<img src="./do/getImageContent?FileLang='+h+"&FilePath="+c+"&FileName="+e+"&csrfToken="+csrfToken+'" />'}}else{o={xtype:"panel",region:"west",title:_("Tools"),iconCls:"iconConf",collapsedIconCls:"iconConf",plugins:[Ext.ux.PanelCollapsedTitle],layout:"fit",bodyBorder:false,split:true,collapsible:true,collapsed:!PhDOE.user.conf.allFiles.toolsPanelDisplay,width:PhDOE.user.conf.allFiles.toolsPanelWidth||375,listeners:{collapse:function(){if(this.ownerCt.tabLoaded){new ui.task.UpdateConfTask({module:"allFiles",itemName:"toolsPanelDisplay",value:false,notify:false})}},expand:function(){if(this.ownerCt.tabLoaded){new ui.task.UpdateConfTask({module:"allFiles",itemName:"toolsPanelDisplay",value:true,notify:false})}},resize:function(t,v){if(this.ownerCt.tabLoaded&&v&&v!=PhDOE.user.conf.allFiles.toolsPanelWidth){new ui.task.UpdateConfTask({module:"allFiles",itemName:"toolsPanelWidth",value:v,notify:false})}}},items:{xtype:"tabpanel",activeTab:0,defaults:{autoScroll:true},items:[{title:_("Log"),layout:"fit",items:[new ui.cmp.VCSLogGrid({prefix:"AF",fid:p,fpath:h+c,fname:e,loadStore:PhDOE.user.conf.allFiles.toolsPanelLogLoad})]},{title:_("Entities"),layout:"fit",items:[new ui.cmp.EntitiesAcronymsPanel({dataType:"entities",prefix:"AF",ftype:"ALL",fid:p,loadStore:PhDOE.user.conf.allFiles.toolsPanelEntitiesLoad})]},{title:_("Acronyms"),layout:"fit",items:[new ui.cmp.EntitiesAcronymsPanel({dataType:"acronyms",prefix:"AF",ftype:"ALL",fid:p,loadStore:PhDOE.user.conf.allFiles.toolsPanelAcronymsLoad})]}]}};q=new ui.cmp.FilePanel({id:"AF-ALL-PANEL-"+p,region:"center",title:_("File: ")+h+c+e,prefix:"AF",ftype:"ALL",spellCheck:PhDOE.user.conf.allFiles.enableSpellCheck,spellCheckConf:{module:"allFiles",itemName:"enableSpellCheck"},fid:p,fpath:c,fname:e,lang:h,parser:d,storeRecord:k,syncScrollCB:false,syncScroll:false})}Ext.getCmp("main-panel").add({id:"AF-"+p,layout:"border",title:e,originTitle:e,closable:true,tabLoaded:false,panEntities:!PhDOE.user.conf.allFiles.toolsPanelEntitiesLoad,panAcronyms:!PhDOE.user.conf.allFiles.toolsPanelAcronymsLoad,panVCS:!PhDOE.user.conf.allFiles.toolsPanelLogLoad,panLoaded:false,tabTip:String.format(_("in {0}"),c),iconCls:"iconAllFiles",items:[q,o]})}Ext.getCmp("main-panel").setActiveTab("AF-"+p)}},initComponent:function(){Ext.apply(this,{tbar:[_("Search: ")," ",new Ext.form.TwinTriggerField({id:"AF-search",validationEvent:false,validateOnBlur:false,trigger1Class:"x-form-clear-trigger",trigger2Class:"x-form-search-trigger",hideTrigger1:true,width:180,enableKeyEvents:true,listeners:{keypress:function(d,c){if(c.getKey()===c.ENTER){this.onTrigger2Click()}}},onTrigger1Click:function(){var c=ui.cmp._RepositoryTree.instance;this.setValue("");this.triggers[0].hide();this.setSize(180,10);c.root.setText(_("Repository"));delete c.loader.baseParams.search;c.root.reload()},onTrigger2Click:function(){var c=ui.cmp._RepositoryTree.instance,d=this.getValue();if(d===""||d.length<3){this.markInvalid(_("Your search must contain at least 3 characters"));return}this.clearInvalid();this.triggers[0].show();this.setSize(180,10);c.loader.baseParams.search=d;c.root.reload(function(){c.root.setText(String.format(_("Search result: {0}"),c.root.childNodes.length))})}})]});ui.cmp.RepositoryTree.superclass.initComponent.call(this);this.on("contextmenu",this.onContextMenu,this);this.on("dblclick",this.onDblClick,this);new Ext.tree.TreeSorter(this,{folderSort:true})}});ui.cmp._RepositoryTree.instance=null;ui.cmp.RepositoryTree.getInstance=function(c){if(!ui.cmp._RepositoryTree.instance){if(!c){c={}}ui.cmp._RepositoryTree.instance=new ui.cmp.RepositoryTree(c)}return ui.cmp._RepositoryTree.instance};Ext.namespace("ui","ui.cmp","ui.cmp._StaleFileGrid");ui.cmp._StaleFileGrid.store=new Ext.data.GroupingStore({proxy:new Ext.data.HttpProxy({url:"./do/getFilesNeedUpdate"}),reader:new Ext.data.JsonReader({root:"Items",totalProperty:"nbItems",idProperty:"id",fields:[{name:"id"},{name:"path"},{name:"name"},{name:"revision"},{name:"original_revision"},{name:"en_revision"},{name:"maintainer"},{name:"fileModifiedEN"},{name:"fileModifiedLang"}]}),sortInfo:{field:"name",direction:"ASC"},groupField:"path",listeners:{datachanged:function(e){var c=e.getCount(),d=false;if(PhDOE.user.haveKarma){e.each(function(f){if(f.data.maintainer==PhDOE.user.login){d++}},this)}if(d){Ext.getDom("acc-need-update-nb").innerHTML=c+" - "+String.format(_("{0} mine"),d)}else{Ext.getDom("acc-need-update-nb").innerHTML=c}}}});ui.cmp._StaleFileGrid.view=new Ext.grid.GroupingView({forceFit:true,startCollapsed:true,groupTextTpl:'{[values.rs[0].data["path"]]} ({[values.rs.length]} {[values.rs.length > 1 ? "'+_("Files")+'" : "'+_("File")+'"]})',deferEmptyText:false,getRowClass:function(d){if(d.data.fileModifiedEN||d.data.fileModifiedLang){var f=Ext.util.JSON.decode(d.data.fileModifiedEN),e=Ext.util.JSON.decode(d.data.fileModifiedLang),c;c=(PhDOE.user.isAnonymous)?"anonymous":PhDOE.user.login;return((f.user===c&&f.anonymousIdent===PhDOE.user.anonymousIdent)||(e.user===c&&e.anonymousIdent===PhDOE.user.anonymousIdent))?"fileModifiedByMe":"fileModifiedByAnother"}return false},emptyText:'<div style="text-align: center;">'+_("No Files")+"</div>"});ui.cmp._StaleFileGrid.columns=[{id:"name",header:_("Files"),sortable:true,dataIndex:"name",renderer:function(d,g,e){var j="",h,f,c;c=(PhDOE.user.isAnonymous)?"anonymous":PhDOE.user.login;if(e.data.fileModifiedEN){h=Ext.util.JSON.decode(e.data.fileModifiedEN);if(h.user===c&&h.anonymousIdent===PhDOE.user.anonymousIdent){j=_("File EN modified by me")+"<br>"}else{j=String.format(_("File EN modified by {0}"),h.user)+"<br>"}}if(e.data.fileModifiedLang){f=Ext.util.JSON.decode(e.data.fileModifiedLang);if(f.user===c&&f.anonymousIdent===PhDOE.user.anonymousIdent){j+=String.format(_("File {0} modified by me"),PhDOE.user.lang.ucFirst())}else{j+=String.format(_("File {0} modified by {1}"),PhDOE.user.lang.ucFirst(),f.user)}}if(j!==""){return"<span ext:qtip='"+j+"'>"+d+"</span>"}else{return d}}},{header:_("EN revision"),width:45,sortable:true,dataIndex:"en_revision"},{header:"",width:45,sortable:true,dataIndex:"revision"},{header:_("Maintainer"),width:45,sortable:true,dataIndex:"maintainer"},{header:_("Path"),dataIndex:"path",hidden:true}];ui.cmp._StaleFileGrid.menu=function(c){Ext.apply(this,c);this.init();ui.cmp._StaleFileGrid.menu.superclass.constructor.call(this)};Ext.extend(ui.cmp._StaleFileGrid.menu,Ext.menu.Menu,{init:function(){Ext.apply(this,{items:[{scope:this,text:"<b>"+_("Edit in a new tab")+"</b>",iconCls:"iconTabNeedUpdate",handler:function(){this.grid.fireEvent("rowdblclick",this.grid,this.rowIdx,this.event)}},{scope:this,hidden:this.hideDiffMenu,text:_("View diff..."),iconCls:"iconViewDiff",menu:new Ext.menu.Menu({items:[{scope:this,hidden:(this.grid.store.getAt(this.rowIdx).data.fileModifiedEN===false),text:String.format(_("... of the {0} file"),"EN"),handler:function(){Ext.getCmp("main-panel").openDiffTab({DiffType:"file",FileName:this.fname,FilePath:"en"+this.fpath})}},{scope:this,hidden:(this.grid.store.getAt(this.rowIdx).data.fileModifiedLang===false),text:String.format(_("... of the {0} file"),PhDOE.user.lang.ucFirst()),handler:function(){Ext.getCmp("main-panel").openDiffTab({DiffType:"file",FileName:this.fname,FilePath:PhDOE.user.lang+this.fpath})}}]})}]})}});ui.cmp.StaleFileGrid=Ext.extend(Ext.grid.GridPanel,{view:ui.cmp._StaleFileGrid.view,loadMask:true,autoExpandColumn:"name",border:false,enableDragDrop:true,ddGroup:"mainPanelDDGroup",onRowContextMenu:function(d,j,h){h.stopEvent();var g=this.store.getAt(j).data,f=g.path,c=g.name;this.getSelectionModel().selectRow(j);new ui.cmp._StaleFileGrid.menu({hideDiffMenu:(g.fileModifiedEN===false&&g.fileModifiedLang===false),grid:this,event:h,rowIdx:j,lang:PhDOE.user.lang,fpath:f,fname:c}).showAt(h.getXY())},onRowDblClick:function(c,d){this.openFile(this.store.getAt(d).data.id)},openFile:function(e){var g=this.store.getById(e),c=g.data.path,d=g.data.name,j=g.data.en_revision,h=g.data.revision,l=g.data.original_revision,f=Ext.util.md5("FNU-"+PhDOE.user.lang+c+d),k="";if(!Ext.getCmp("main-panel").findById("FNU-"+f)){if(PhDOE.user.conf.needUpdate.diffMethod==="using-viewvc"){k=ui.cmp.ViewVCDiff}else{if(PhDOE.user.conf.needUpdate.diffMethod==="using-exec"){k=ui.cmp.ExecDiff}}Ext.getCmp("main-panel").add({id:"FNU-"+f,layout:"border",title:d,originTitle:d,iconCls:"iconTabNeedUpdate",closable:true,tabLoaded:false,panVCSLang:!PhDOE.user.conf.needUpdate.toolsPanelLogLoad,panVCSEn:!PhDOE.user.conf.needUpdate.toolsPanelLogLoad,panDiffLoaded:(PhDOE.user.conf.needUpdate.diffMethod==="using-viewvc"),panLANGLoaded:false,panENLoaded:false,defaults:{split:true},tabTip:String.format(_("Need Update: in {0}"),c),listeners:{resize:function(m){Ext.getCmp("FNU-EN-PANEL-"+f).setWidth(m.getWidth()/2)}},items:[new k({region:"north",collapsible:true,height:PhDOE.user.conf.needUpdate.diffPanelHeight||150,prefix:"FNU",collapsed:!PhDOE.user.conf.needUpdate.diffPanelDisplay,fid:f,fpath:c,fname:d,rev1:(l)?l:h,rev2:j,listeners:{collapse:function(){if(this.ownerCt.tabLoaded){new ui.task.UpdateConfTask({module:"needUpdate",itemName:"diffPanelDisplay",value:false,notify:false})}},expand:function(){if(this.ownerCt.tabLoaded){new ui.task.UpdateConfTask({module:"needUpdate",itemName:"diffPanelDisplay",value:true,notify:false})}},resize:function(p,m,o){if(this.ownerCt.tabLoaded&&o&&o>50&&o!=PhDOE.user.conf.needUpdate.diffPanelHeight){new ui.task.UpdateConfTask({module:"needUpdate",itemName:"diffPanelHeight",value:o,notify:false})}}}}),{region:"west",xtype:"panel",title:_("Tools"),iconCls:"iconConf",collapsedIconCls:"iconConf",collapsible:true,collapsed:!PhDOE.user.conf.needUpdate.toolsPanelDisplay,layout:"fit",bodyBorder:false,plugins:[Ext.ux.PanelCollapsedTitle],width:PhDOE.user.conf.needUpdate.toolsPanelWidth||375,listeners:{collapse:function(){if(this.ownerCt.tabLoaded){new ui.task.UpdateConfTask({module:"needUpdate",itemName:"toolsPanelDisplay",value:false,notify:false})}},expand:function(){if(this.ownerCt.tabLoaded){new ui.task.UpdateConfTask({module:"needUpdate",itemName:"toolsPanelDisplay",value:true,notify:false})}},resize:function(m,o){if(this.ownerCt.tabLoaded&&o&&o!=PhDOE.user.conf.needUpdate.toolsPanelWidth){new ui.task.UpdateConfTask({module:"needUpdate",itemName:"toolsPanelWidth",value:o,notify:false})}}},items:{xtype:"tabpanel",activeTab:0,tabPosition:"bottom",enableTabScroll:true,defaults:{autoScroll:true},items:[new ui.cmp.VCSLogGrid({layout:"fit",title:String.format(_("{0} Log"),PhDOE.user.lang.ucFirst()),prefix:"FNU-LANG",fid:f,fpath:PhDOE.user.lang+c,fname:d,loadStore:PhDOE.user.conf.needUpdate.toolsPanelLogLoad}),new ui.cmp.VCSLogGrid({layout:"fit",title:String.format(_("{0} Log"),"En"),prefix:"FNU-EN",fid:f,fpath:"en"+c,fname:d,loadStore:PhDOE.user.conf.needUpdate.toolsPanelLogLoad}),new ui.cmp.DictionaryGrid({layout:"fit",title:_("Dictionary"),prefix:"FNU",fid:f})]}},new ui.cmp.FilePanel({id:"FNU-LANG-PANEL-"+f,region:"center",title:String.format(_("{0} File: "),PhDOE.user.lang)+c+d,prefix:"FNU",ftype:"LANG",spellCheck:PhDOE.user.conf.needUpdate.enableSpellCheckLang,spellCheckConf:{module:"needUpdate",itemName:"enableSpellCheckLang"},fid:f,fpath:c,fname:d,lang:PhDOE.user.lang,parser:"xml",storeRecord:g,syncScrollCB:true,syncScroll:true,syncScrollConf:{module:"needUpdate",itemName:"syncScrollbars"}}),new ui.cmp.FilePanel({id:"FNU-EN-PANEL-"+f,region:"east",title:_("en File: ")+c+d,prefix:"FNU",ftype:"EN",original:true,readOnly:true,openInNewTabBtn:true,fid:f,fpath:c,fname:d,lang:"en",parser:"xml",storeRecord:g,syncScroll:true,syncScrollConf:{module:"needUpdate",itemName:"syncScrollbars"}})]})}Ext.getCmp("main-panel").setActiveTab("FNU-"+f)},initComponent:function(){ui.cmp._StaleFileGrid.columns[2].header=String.format(_("{0} revision"),Ext.util.Format.uppercase(PhDOE.user.lang));Ext.apply(this,{columns:ui.cmp._StaleFileGrid.columns,store:ui.cmp._StaleFileGrid.store,tbar:[_("Filter: ")," ",new Ext.form.TwinTriggerField({id:"FNU-filter",width:180,hideTrigger1:true,enableKeyEvents:true,validateOnBlur:false,validationEvent:false,trigger1Class:"x-form-clear-trigger",trigger2Class:"x-form-search-trigger",listeners:{specialkey:function(d,c){if(c.getKey()===c.ENTER){this.onTrigger2Click()}}},onTrigger1Click:function(){this.setValue("");this.triggers[0].hide();this.setSize(180,10);ui.cmp._StaleFileGrid.instance.store.clearFilter()},onTrigger2Click:function(){var c=this.getValue(),d;if(c===""||c.length<3){this.markInvalid(_("Your filter must contain at least 3 characters"));return}this.clearInvalid();this.triggers[0].show();this.setSize(180,10);d=new RegExp(c,"i");ui.cmp._StaleFileGrid.instance.store.filterBy(function(e){if(d.test(e.data.path)||d.test(e.data.name)||d.test(e.data.revision)||d.test(e.data.en_revision)||d.test(e.data.maintainer)){return true}else{return false}},this)}})]});ui.cmp.StaleFileGrid.superclass.initComponent.call(this);this.on("rowcontextmenu",this.onRowContextMenu,this);this.on("rowdblclick",this.onRowDblClick,this)}});ui.cmp._StaleFileGrid.instance=null;ui.cmp.StaleFileGrid.getInstance=function(c){if(!ui.cmp._StaleFileGrid.instance){if(!c){c={}}ui.cmp._StaleFileGrid.instance=new ui.cmp.StaleFileGrid(c)}return ui.cmp._StaleFileGrid.instance};Ext.namespace("ui","ui.cmp");ui.cmp.SystemUpdatePrompt=Ext.extend(Ext.Window,{id:"sys-update-win",title:_("Refresh all data"),layout:"form",width:300,height:200,resizable:false,modal:true,bodyStyle:"padding:15px 15px 0",iconCls:"iconRefresh",html:['<div id="wizard-step-1" class="wizard-step-before">',_("Update all files from VCS"),"</div>",'<div id="wizard-step-1.1" class="wizard-wait">',_("This may take time. Thank you for your patience..."),"</div>",'<div id="wizard-step-2" class="wizard-step-before">',_("Apply all tools"),"</div>",'<div id="wizard-step-3" class="wizard-step-before">',_("Reload data"),"</div>"].join(""),buttons:[{id:"btn-start-refresh",text:_("Start"),iconCls:"iconStartRefresh",handler:function(){Ext.getCmp("btn-start-refresh").disable();this.ownerCt.ownerCt.tools.close.setVisible(false);new ui.task.SystemUpdateTask()}}]});Ext.namespace("ui","ui.cmp","ui.cmp._VCSLogGrid");ui.cmp._VCSLogGrid.store=Ext.extend(Ext.data.Store,{reader:new Ext.data.JsonReader({root:"Items",totalProperty:"nbItems",idProperty:"id",fields:[{name:"id"},{name:"revision"},{name:"date",type:"date",dateFormat:"Y/m/d H:i:s"},{name:"author"},{name:"content"}]})});ui.cmp._VCSLogGrid.sm=Ext.extend(Ext.grid.CheckboxSelectionModel,{singleSelect:false,header:"",width:22,listeners:{beforerowselect:function(d){var c=d.getCount();if(c===2){return false}return true},rowselect:function(d){var c=d.getCount();if(c===2){Ext.getCmp(d.prefix+"-PANEL-btn-log-"+d.fid).enable();Ext.get(d.prefix+"-PANEL-btn-log-"+d.fid).frame("3F8538")}else{Ext.getCmp(d.prefix+"-PANEL-btn-log-"+d.fid).disable()}},rowdeselect:function(d){var c=d.getCount();if(c===2){Ext.getCmp(d.prefix+"-PANEL-btn-log-"+d.fid).enable();Ext.get(d.prefix+"-PANEL-btn-log-"+d.fid).frame("3F8538")}else{Ext.getCmp(d.prefix+"-PANEL-btn-log-"+d.fid).disable()}}}});ui.cmp._VCSLogGrid.columns=[{id:"id",header:_("Rev."),width:40,sortable:false,dataIndex:"revision"},{header:_("Content"),width:130,sortable:true,dataIndex:"content"},{header:_("By"),width:50,sortable:true,dataIndex:"author"},{header:_("Date"),width:85,sortable:true,dataIndex:"date",renderer:Ext.util.Format.dateRenderer(_("Y-m-d, H:i"))}];ui.cmp.VCSLogGrid=Ext.extend(Ext.grid.GridPanel,{loadMask:true,autoScroll:true,bodyBorder:false,border:false,autoExpandColumn:"content",initComponent:function(){var f=new ui.cmp._VCSLogGrid.sm({fid:this.fid,prefix:this.prefix}),c=new ui.cmp._VCSLogGrid.store({autoLoad:this.loadStore,proxy:new Ext.data.HttpProxy({url:"./do/getLog"}),baseParams:{Path:this.fpath,File:this.fname},listeners:{scope:this,load:function(h,g){if(this.prefix==="FNU-EN"){Ext.getCmp("FNU-"+this.fid).panVCSEn=true;Ext.getCmp("main-panel").fireEvent("tabLoaded","FNU",this.fid)}if(this.prefix==="FNU-LANG"){Ext.getCmp("FNU-"+this.fid).panVCSLang=true;Ext.getCmp("main-panel").fireEvent("tabLoaded","FNU",this.fid)}if(this.prefix==="FE-EN"){Ext.getCmp("FE-"+this.fid).panVCSEn=true;Ext.getCmp("main-panel").fireEvent("tabLoaded","FE",this.fid)}if(this.prefix==="FE-LANG"){Ext.getCmp("FE-"+this.fid).panVCSLang=true;Ext.getCmp("main-panel").fireEvent("tabLoaded","FE",this.fid)}if(this.prefix==="FNR-EN"){Ext.getCmp("FNR-"+this.fid).panVCSEn=true;Ext.getCmp("main-panel").fireEvent("tabLoaded","FNR",this.fid)}if(this.prefix==="FNR-LANG"){Ext.getCmp("FNR-"+this.fid).panVCSLang=true;Ext.getCmp("main-panel").fireEvent("tabLoaded","FNR",this.fid)}if(this.prefix==="AF"){Ext.getCmp("AF-"+this.fid).panVCS=true;Ext.getCmp("main-panel").fireEvent("tabLoaded","AF",this.fid)}if(this.prefix==="PP"){Ext.getCmp("PP-"+this.fid).panVCS=true;Ext.getCmp("main-panel").fireEvent("tabLoaded","PP",this.fid)}}}}),e=[],d;e.push(f);for(d=0;d<ui.cmp._VCSLogGrid.columns.length;++d){e.push(ui.cmp._VCSLogGrid.columns[d])}c.setDefaultSort("date","desc");Ext.apply(this,{sm:f,store:c,columns:e,view:new Ext.grid.GridView({forceFit:true,emptyText:'<div style="text-align: center">'+_("You must manually load this data.<br>Use the refresh button !")+"<br><br>"+_("(You can change this behavior by setting an option in the configuration window)")+"</div>",deferEmptyText:false}),tbar:[{scope:this,id:this.prefix+"-PANEL-btn-refreshlog-"+this.fid,tooltip:_("<b>Load/Refresh</b> revisions"),iconCls:"iconRefresh",handler:function(){this.store.reload()}},{scope:this,id:this.prefix+"-PANEL-btn-log-"+this.fid,tooltip:_("<b>View</b> the diff"),iconCls:"iconViewDiff",disabled:true,handler:function(){var j=this.getSelectionModel().getSelections(),h=j[0].data.revision,g=j[1].data.revision;Ext.getBody().mask('<img src="themes/img/loading.gif" style="vertical-align: middle;" /> '+_("Finding the diff. Please, wait..."));XHR({params:{task:"getDiff",DiffType:"vcs",FilePath:this.fpath,FileName:this.fname,Rev1:h,Rev2:g},success:function(l){var m=Ext.util.JSON.decode(l.responseText),k;Ext.getBody().unmask();k=new Ext.Window({title:String.format(_("Diff between {0} & {1}"),h,g),width:650,height:350,resizable:false,modal:true,autoScroll:true,bodyStyle:"background-color: white; padding: 5px;",html:'<div class="diff-content">'+m.content+"</div>",buttons:[{text:_("Close"),handler:function(){k.close()}}]});k.show()}})}}]});ui.cmp.VCSLogGrid.superclass.initComponent.call(this)}});Ext.namespace("ui","ui.cmp");ui.cmp.ViewVCDiff=Ext.extend(Ext.Panel,{layout:"fit",title:_("Diff From VCS"),iconCls:"iconDiffView",collapsedIconCls:"iconDiffView",plugins:[Ext.ux.PanelCollapsedTitle],initComponent:function(){Ext.apply(this,{items:{id:this.prefix+"-diff-"+this.fid,xtype:"panel",layout:"fit",items:[new Ext.ux.IFrameComponent({id:"frame-"+this.prefix+"-diff-"+this.fid,url:String.format(PhDOE.app.conf.viewVcUrl,this.fpath+this.fname,this.rev1,this.rev2)})]}});ui.cmp.ViewVCDiff.superclass.initComponent.call(this)}});Ext.namespace("ui","ui.cmp","ui.cmp._WorkTreeGrid","ui.cmp._WorkTreeGrid.menu");ui.cmp._WorkTreeGrid.SetProgress=new Ext.util.DelayedTask(function(){new ui.task.SetFileProgressTask({idDB:this.node.attributes.idDB,progress:this.node.attributes.progress})});ui.cmp._WorkTreeGrid.menu.admin=function(c){Ext.apply(this,c);this.init();ui.cmp._WorkTreeGrid.menu.admin.superclass.constructor.call(this)};Ext.extend(ui.cmp._WorkTreeGrid.menu.admin,Ext.menu.Item,{init:function(){var c;switch(this.from){case"file":c=[{scope:this,iconCls:"iconSwitchLang",text:_("Change file's owner"),handler:function(){new ui.cmp.ChangeFileOwner({fileIdDB:this.node.attributes.idDB,fileFolder:this.folderNode.attributes.task,fileName:this.node.attributes.task,currentOwner:this.userNode.attributes.task})}},{scope:this,iconCls:"iconPageDelete",text:((this.node.attributes.type==="delete")?_("Cancel this deletion"):_("Clear this change")),handler:function(){new ui.task.ClearLocalChangeTask({ftype:this.node.attributes.type,fpath:this.folderNode.attributes.task,fname:this.node.attributes.task})}}];break;case"patch":c=[{scope:this,iconCls:"iconTrash",text:_("Delete this patch"),handler:function(){ui.task.DeletePatchTask({patchID:this.node.attributes.idDB})}}];break}Ext.apply(this,{text:_("Administrator menu"),iconCls:"iconAdmin",handler:function(){return false},menu:new Ext.menu.Menu({items:c})})}});ui.cmp._WorkTreeGrid.menu.commit=function(c){Ext.apply(this,c);this.init();ui.cmp._WorkTreeGrid.menu.commit.superclass.constructor.call(this)};Ext.extend(ui.cmp._WorkTreeGrid.menu.commit,Ext.menu.Item,{init:function(){Ext.apply(this,{text:_("Commit..."),iconCls:"iconCommitFileVcs",disabled:(!PhDOE.user.haveKarma),handler:function(){return false},menu:new Ext.menu.Menu({items:[{scope:this,text:_("...this file"),hidden:(this.from==="user"||this.from==="folder"||this.from==="patch"||this.from==="anonymousPatch"),iconCls:"iconCommitFileVcs",handler:function(){var c=[{fid:Ext.util.md5(this.folderNode.attributes.task+this.node.attributes.task),fpath:this.folderNode.attributes.task,fname:this.node.attributes.task,fdbid:this.node.attributes.idDB,ftype:this.node.attributes.type,fdate:Date.parseDate(this.node.attributes.last_modified,"Y-m-d H:i:s"),fby:this.userNode.attributes.task}];new ui.cmp.CommitPrompt({files:c}).show()}},{scope:this,text:_("...all files from this folder"),hidden:(this.from==="user"||this.from==="patch"||this.from==="anonymousPatch"),iconCls:"iconCommitFileVcs",handler:function(){var c=[];this.folderNode.cascade(function(d){if(d.attributes.type!=="folder"&&d.attributes.type!=="user"){c.push({fid:Ext.util.md5(this.folderNode.attributes.task+d.attributes.task),fpath:this.folderNode.attributes.task,fname:d.attributes.task,fdbid:d.attributes.idDB,ftype:d.attributes.type,fdate:Date.parseDate(d.attributes.last_modified,"Y-m-d H:i:s"),fby:this.userNode.attributes.task})}},this);new ui.cmp.CommitPrompt({files:c}).show()}},{scope:this,text:_("...all files from this patch"),hidden:(this.module!=="patches"||this.from==="user"),iconCls:"iconCommitFileVcs",handler:function(){var e=[],c="",d=false;if(this.from==="anonymousPatch"){c=this.patchNode.attributes.patchDescription+"\n\n-- \nProvided by "+this.patchNode.parentNode.attributes.task+" ("+this.patchNode.attributes.patchEmail+")";d=this.patchNode.attributes.idDB}this.patchNode.cascade(function(f){if(f.attributes.type!=="folder"&&f.attributes.type!=="user"&&f.attributes.type!=="patch"){e.push({fid:Ext.util.md5(f.parentNode.attributes.task+f.attributes.task),fpath:f.parentNode.attributes.task,fname:f.attributes.task,fdbid:f.attributes.idDB,ftype:f.attributes.type,fdate:Date.parseDate(f.attributes.last_modified,"Y-m-d H:i:s"),fby:this.userNode.attributes.task})}},this);new ui.cmp.CommitPrompt({files:e,defaultMessage:c,patchID:d}).show()}},{scope:this,text:_("...all files modified by me"),hidden:(this.from==="anonymousPatch"),iconCls:"iconCommitFileVcs",handler:function(){var c=[];this.userNode.cascade(function(d){if(d.attributes.type!=="folder"&&d.attributes.type!=="user"&&d.attributes.type!=="patch"){c.push({fid:Ext.util.md5(d.parentNode.attributes.task+d.attributes.task),fpath:d.parentNode.attributes.task,fname:d.attributes.task,fdbid:d.attributes.idDB,ftype:d.attributes.type,fdate:Date.parseDate(d.attributes.last_modified,"Y-m-d H:i:s"),fby:this.userNode.attributes.task})}},this);new ui.cmp.CommitPrompt({files:c}).show()}}]})})}});ui.cmp._WorkTreeGrid.menu.usersPatch=function(d){Ext.apply(this,d);var f=Ext.getCmp(this.menuID),e,c;if(!f.itemRendered){f.removeAll();f.doLayout();c=ui.cmp.PatchesTreeGrid.getInstance().getUserPatchesList();if(c){Ext.each(c,function(g){e=new Ext.menu.Item({id:Ext.id(),text:g.attributes.task,handler:function(){ui.task.MoveToPatch({patchID:g.attributes.idDB,patchName:g.attributes.task,nodesToAdd:f.nodesToAdd})}});f.add(e)},this)}else{e=new Ext.menu.Item({disabled:true,text:_("You have no patch currently. You must create one.")});f.add(e)}e=new Ext.menu.Item({text:_("Create a new patch"),iconCls:"iconAdd",handler:function(){var g=new ui.cmp.ManagePatchPrompt({title:_("Create a new patch"),nodesToAdd:f.nodesToAdd});g.show(this.el)}});f.add("-",e);f.doLayout();f.itemRendered=true}};ui.cmp._WorkTreeGrid.menu.users=function(c){Ext.apply(this,c);this.init();ui.cmp._WorkTreeGrid.menu.users.superclass.constructor.call(this)};Ext.extend(ui.cmp._WorkTreeGrid.menu.users,Ext.menu.Menu,{listeners:{show:function(){if(this.node.attributes.task===PhDOE.user.login){ui.cmp._WorkTreeGrid.menu.usersPatch({menuID:"usersPatchesMenu"})}}},init:function(){var d=[],c;this.node.cascade(function(e){if(e.attributes.type!=="user"&&e.attributes.type!=="folder"){d.push(e)}},this);c=(this.node.attributes.task===PhDOE.user.login)?[{text:_("Submit all files for review in patch:"),iconCls:"iconPendingPatch",handler:function(){return false},menu:new Ext.menu.Menu({id:"usersPatchesMenu",itemRendered:false,nodesToAdd:d})},{xtype:"menuseparator",hidden:!PhDOE.user.haveKarma},new ui.cmp._WorkTreeGrid.menu.commit({hidden:!PhDOE.user.haveKarma,from:"user",node:false,folderNode:false,userNode:this.node})]:[{scope:this,text:String.format(_("Send an email to {0}"),"<b>"+this.node.attributes.task+"</b>"),iconCls:"iconSendEmail",hidden:!this.node.attributes.email,handler:function(){var e=new ui.cmp.EmailPrompt();e.setData(this.node.attributes.task,this.node.attributes.email);e.show(this.node.el)}}];Ext.apply(this,{items:c})}});ui.cmp._WorkTreeGrid.menu.folders=function(c){Ext.apply(this,c);this.init();ui.cmp._WorkTreeGrid.menu.folders.superclass.constructor.call(this)};Ext.extend(ui.cmp._WorkTreeGrid.menu.folders,Ext.menu.Menu,{listeners:{show:function(){if(this.node.parentNode.attributes.task===PhDOE.user.login){ui.cmp._WorkTreeGrid.menu.usersPatch({menuID:"foldersPatchesMenu"})}}},init:function(){var c=[];if(this.node.parentNode.attributes.task!==PhDOE.user.login){return false}this.node.cascade(function(d){if(d.attributes.type!=="folder"){c.push(d)}},this);Ext.apply(this,{items:[{text:_("Submit all files in this directory in patch:"),iconCls:"iconPendingPatch",handler:function(){return false},menu:new Ext.menu.Menu({id:"foldersPatchesMenu",itemRendered:false,nodesToAdd:c})},{xtype:"menuseparator",hidden:!PhDOE.user.haveKarma},new ui.cmp._WorkTreeGrid.menu.commit({hidden:!PhDOE.user.haveKarma,from:"folder",node:false,folderNode:this.node,userNode:this.node.parentNode})]})}});ui.cmp._WorkTreeGrid.menu.files=function(c){Ext.apply(this,c);this.init();ui.cmp._WorkTreeGrid.menu.files.superclass.constructor.call(this)};Ext.extend(ui.cmp._WorkTreeGrid.menu.files,Ext.menu.Menu,{listeners:{show:function(){if(this.node.parentNode.parentNode.attributes.task===PhDOE.user.login){ui.cmp._WorkTreeGrid.menu.usersPatch({menuID:"filePatchesMenu"})}}},init:function(){var h=this.node,l=h.attributes.type,g,c=h.parentNode.attributes.task,e=h.attributes.task,k=h.ownerTree,f=h.parentNode.parentNode.attributes.task,d=[],j;j=h.parentNode.attributes.task.split("/");g=j[0];d.push(this.node);Ext.apply(this,{items:[{text:"<b>"+((l==="delete")?_("View in a new tab"):_("Edit in a new tab"))+"</b>",iconCls:"iconEdit",handler:function(){k.openFile(h)}},{text:_("Submit as patch for review in:"),iconCls:"iconPendingPatch",hidden:(f!==PhDOE.user.login),handler:function(){return false},menu:new Ext.menu.Menu({id:"filePatchesMenu",itemRendered:false,nodesToAdd:d})},{text:_("Set the progress..."),iconCls:"iconProgress",hidden:(l==="delete"||f!==PhDOE.user.login),menu:{xtype:"menu",showSeparator:false,items:[{xtype:"slider",width:200,value:this.node.attributes.progress,increment:10,minValue:0,maxValue:100,plugins:new Ext.slider.Tip({getText:function(m){return String.format("<b>"+_("{0}% complete")+"</b>",m.value)}}),refreshNodeColumns:function(o){var x=o.getOwnerTree(),u=o.attributes,s=x.columns,m=o.ui.getEl().firstChild,y=m.childNodes,p,r,w,q;for(p=1,q=s.length;p<q;p++){r=s[p].dataIndex;w=(u[r]!==null)?u[r]:"";if(s[p].tpl&&s[p].tpl.html==="{progress:this.formatProgress}"){y[p].firstChild.innerHTML=s[p].tpl.apply("out:"+w)}}},listeners:{scope:this,change:function(m,o){this.node.attributes.progress=o;m.refreshNodeColumns(this.node);ui.cmp._WorkTreeGrid.SetProgress.delay(1000,null,this)}}}]}},"-",{scope:this,text:_("View diff"),iconCls:"iconViewDiff",handler:function(){Ext.getCmp("main-panel").openDiffTab({DiffType:"file",FileName:e,FilePath:c,currentOwner:f,fileIdDB:h.attributes.idDB})}},{text:_("Download the diff as a patch"),iconCls:"iconDownloadDiff",handler:function(){window.location.href="./do/downloadPatch?FilePath="+c+"&FileName="+e+"&csrfToken="+csrfToken}},{xtype:"menuseparator",hidden:f!==PhDOE.user.login},{text:((l==="delete")?_("Cancel this deletion"):_("Clear this change")),iconCls:"iconPageDelete",hidden:f!==PhDOE.user.login,handler:function(){new ui.task.ClearLocalChangeTask({ftype:l,fpath:c,fname:e})}},{xtype:"menuseparator",hidden:!(PhDOE.user.haveKarma&&f===PhDOE.user.login)},new ui.cmp._WorkTreeGrid.menu.commit({from:"file",hidden:!(PhDOE.user.haveKarma&&f===PhDOE.user.login),node:this.node,folderNode:this.node.parentNode,userNode:this.node.parentNode.parentNode}),{xtype:"menuseparator",hidden:!(PhDOE.user.isGlobalAdmin||PhDOE.user.isLangAdmin)},new ui.cmp._WorkTreeGrid.menu.admin({fileLang:g,from:"file",hidden:!(PhDOE.user.isGlobalAdmin||PhDOE.user.isLangAdmin),node:this.node,folderNode:this.node.parentNode,userNode:this.node.parentNode.parentNode})]})}});ui.cmp.WorkTreeGrid=Ext.extend(Ext.ux.tree.TreeGrid,{onContextMenu:function(j,k){k.stopEvent();var l,h,g,f;l=this.getSelectionModel().getSelectedNodes();h=l.length;if(h>1){for(var d=0;d<h;d++){if(l[d].attributes.type=="folder"||l[d].attributes.type=="user"){l[d].unselect(true)}if(l[d].attributes.type!="folder"&&l[d].attributes.type!="user"){var c=l[d].parentNode.parentNode.attributes.task;if(c!=PhDOE.user.login){l[d].unselect(true)}}}l=this.getSelectionModel().getSelectedNodes();h=l.length}if(h>1){f=new Ext.menu.Menu({listeners:{show:function(){ui.cmp._WorkTreeGrid.menu.usersPatch({menuID:"globalPatchesMenu"})}},items:[{text:_("Submit all this files for review in patch:"),iconCls:"iconPendingPatch",handler:function(){return false},menu:new Ext.menu.Menu({id:"globalPatchesMenu",itemRendered:false,nodesToAdd:l})}]});f.showAt(k.getXY());return}g=j.attributes.type;switch(g){case"user":j.select();f=new ui.cmp._WorkTreeGrid.menu.users({node:j});break;case"folder":j.select();f=new ui.cmp._WorkTreeGrid.menu.folders({node:j});break;default:j.select();f=new ui.cmp._WorkTreeGrid.menu.files({node:j});break}f.showAt(k.getXY())},initComponent:function(){function c(d,e){e.css+=" x-grid3-progresscol";return String.format('<div class="x-progress-wrap"><div class="x-progress-inner"><div class="x-progress-bar{0}" style="width:{1}%;">{2}</div></div>',this.getStyle(d),(d/this.ceiling)*100,this.getText(d))}Ext.apply(this,{animate:true,useArrows:true,autoScroll:true,border:false,containerScroll:true,defaults:{autoScroll:true},selModel:new Ext.tree.MultiSelectionModel(),columns:[{header:_("Users"),dataIndex:"task",tpl:new Ext.XTemplate("{task:this.formatUserName}",{formatUserName:function(d,e){if(e.userID){e.qtip=_("userID: ")+e.userID}return d}})},{header:_("Last modified"),width:120,dataIndex:"last_modified",align:"center",tpl:new Ext.XTemplate("{last_modified:this.formatDate}",{formatDate:function(d,e){if(e.type!=="user"&&e.type!=="folder"){return Date.parseDate(d,"Y-m-d H:i:s").format(_("Y-m-d, H:i"))}else{return""}}})},{header:_("Estimated progress"),dataIndex:"progress",width:100,align:"center",tpl:new Ext.XTemplate("{progress:this.formatProgress}",{formatProgress:function(f,h){if(Ext.util.Format.substr(h,0,4)==="out:"){var g=h.split(":");f=g[1]}if(!f&&f!==0){return""}function e(k){var j=(k<(100/2))?"x-progress-text-back":"x-progress-text-front"+(Ext.isIE6?"-ie6":""),l;l=String.format('</div><div class="x-progress-text {0}" style="width:100%;" id="{1}">{2}</div></div>',j,Ext.id(),k+"%");return(k<(100/1.05))?l.substring(0,l.length-6):l.substr(6)}function d(j){if(j<=100&&j>(100*0.67)){return"-green"}if(j<(100*0.67)&&j>(100*0.33)){return"-orange"}if(j<(100*0.33)){return"-red"}return""}return String.format('<div class="x-progress-wrap"><div class="x-progress-inner"><div class="x-progress-bar{0}" style="width:{1}%;">{2}</div></div>',d(f),(f/100)*100,e(f))}})}],loader:{dataUrl:"./do/getWork",baseParams:{module:"workInProgress"}}});ui.cmp.WorkTreeGrid.superclass.initComponent.call(this);this.on("contextmenu",this.onContextMenu,this);this.on("resize",this.resizeCmp,this);this.on("dblclick",this.openFile,this);this.getRootNode().on("beforechildrenrendered",function(){this.updateFilesCounter.defer(200,this)},this)},resizeCmp:function(g,f,d,e){this.columns[0].width=e-(this.columns[1].width+this.columns[2].width+5);this.updateColumnWidths()},delRecord:function(m){var d=this.getRootNode(),g,e,k,c,l,f;for(g=0;g<d.childNodes.length;g++){c=d.childNodes[g];for(e=0;e<c.childNodes.length;e++){l=c.childNodes[e];for(k=0;k<l.childNodes.length;k++){f=l.childNodes[k];if(f.attributes.idDB==m){f.remove(true);if(Ext.isEmpty(l.childNodes)){l.remove(true);if(Ext.isEmpty(c.childNodes)){c.remove(true);this.updateFilesCounter();return}this.updateFilesCounter();return}this.updateFilesCounter();return}}}}this.updateFilesCounter()},addToWork:function(l){var c,k,e,g,j,f,h,d;c=this.getRootNode();k=c.findChild("task",PhDOE.user.login);if(!k){k=new Ext.tree.TreeNode({task:PhDOE.user.login,type:"user",email:PhDOE.user.email,iconCls:"iconUser",expanded:true});c.appendChild(k);c.expand()}if(l){for(d=0;d<l.length;d++){e=k.findChild("task",l[d].parentNode.attributes.task);if(!e){e=new Ext.tree.TreeNode({task:l[d].parentNode.attributes.task,type:"folder",iconCls:"iconFolderOpen",expanded:true});k.appendChild(e);k.expand()}g=l[d].attributes.type;if(g==="update"){j="iconRefresh"}if(g==="new"){j="iconNewFiles"}if(g==="delete"){j="iconTrash"}h=new Date();f=new Ext.tree.TreeNode({task:l[d].attributes.task,type:g,iconCls:j,expanded:true,last_modified:h.format("Y-m-d H:i:s"),progress:l[d].attributes.progress,idDB:l[d].attributes.idDB});e.appendChild(f);e.expand()}}this.updateFilesCounter()},addRecord:function(f,c,d,j){var e=this.getRootNode(),m,g,h,k,l;m=e.findChild("task",PhDOE.user.login);if(!m){m=new Ext.tree.TreeNode({task:PhDOE.user.login,type:"user",email:PhDOE.user.email,iconCls:"iconUser",expanded:true,nbFiles:1});e.appendChild(m);e.expand()}g=m.findChild("task",c);if(!g){g=new Ext.tree.TreeNode({task:c,type:"folder",iconCls:"iconFolderOpen",expanded:true});m.appendChild(g);m.expand()}h=g.findChild("task",d);if(!h){if(j==="update"){l="iconRefresh"}if(j==="new"){l="iconNewFiles"}if(j==="delete"){l="iconTrash"}k=new Date();h=new Ext.tree.TreeNode({task:d,type:j,iconCls:l,expanded:true,last_modified:k.format("Y-m-d H:i:s"),progress:100,idDB:f});g.appendChild(h);g.expand()}this.updateFilesCounter()},countFiles:function(){var c=this.getRootNode(),d=0;c.cascade(function(e){if(!e.isRoot&&e.attributes.type!=="user"&&e.attributes.type!=="folder"){if(e.parentNode.parentNode.attributes.task===PhDOE.user.login){d++}}},this);return d},updateFilesCounter:function(){var c=this.countFiles();Ext.getDom("acc-work-in-progress-nb").innerHTML=c},openFile:function(g){var d=g.attributes.type,f=g.parentNode.attributes.task,c=g.attributes.task,e;if(d==="user"||d==="folder"){return false}e=f.split("/");FileLang=e[0];e.shift();f="/"+e.join("/");switch(d){case"new":ui.cmp.PendingTranslateGrid.getInstance().store.each(function(h){if((h.data.path)===f&&h.data.name===c){ui.cmp.PendingTranslateGrid.getInstance().openFile(h.data.id);return}});break;case"delete":ui.cmp.NotInENGrid.getInstance().store.each(function(h){if((h.data.path)===f&&h.data.name===c){ui.cmp.NotInENGrid.getInstance().openFile(h.data.id);return}});break;case"update":if(FileLang==="en"){ui.cmp.RepositoryTree.getInstance().openFile("byPath",FileLang+f,c)}else{found=false;ui.cmp.StaleFileGrid.getInstance().store.each(function(h){if((h.data.path)===f&&h.data.name===c){ui.cmp.StaleFileGrid.getInstance().openFile(h.data.id);found=true;return}});if(!found){ui.cmp.ErrorFileGrid.getInstance().store.each(function(h){if((h.data.path)===f&&h.data.name===c){ui.cmp.ErrorFileGrid.getInstance().openFile(h.data.id);found=true;return}})}if(!found){ui.cmp.PendingReviewGrid.getInstance().store.each(function(h){if((h.data.path)===f&&h.data.name===c){ui.cmp.PendingReviewGrid.getInstance().openFile(h.data.id);found=true;return}})}if(!found){ui.cmp.RepositoryTree.getInstance().openFile("byPath",FileLang+f,c)}}break}}});ui.cmp._WorkTreeGrid.instance=null;ui.cmp.WorkTreeGrid.getInstance=function(c){if(!ui.cmp._WorkTreeGrid.instance){if(!c){c={}}ui.cmp._WorkTreeGrid.instance=new ui.cmp.WorkTreeGrid(c)}return ui.cmp._WorkTreeGrid.instance};var PhDOE=function(){Ext.QuickTips.init();return{user:{userID:null,login:null,anonymousIdent:null,isAnonymous:null,haveKarma:false,authService:null,authServiceID:null,isGlobalAdmin:false,isLangAdmin:false,lang:null,conf:"",email:""},topic:{global:{author:"",content:"",topicDate:""},lang:{author:"",content:"",topicDate:""}},app:{name:"Php Docbook Online Editor",ver:"X.XX",loaded:false,uiRevision:"$Revision$",conf:"",extJsVersion:"3.3.1",codeMirror:"2.21"},lastInfoDate:null,project:"",FNTfilePendingOpen:[],FNUfilePendingOpen:[],FEfilePendingOpen:[],FNRfilePendingOpen:[],FNIENfilePendingOpen:[],AFfilePendingOpen:[],PPfilePendingOpen:[],init:function(){new ui.task.LoadConfigTask();Ext.Ajax.extraParams={csrfToken:csrfToken};Ext.data.Connection.prototype.extraParams={csrfToken:csrfToken};Ext.data.ScriptTagProxy.prototype.extraParams={csrfToken:csrfToken}},notify:function(d,g,e){var f,c;if(d=="info"){c="iconInfo"}if(d=="error"){c="iconError"}f=new Ext.ux.Notification({iconCls:c,title:g,html:e,autoDestroy:true,hideDelay:5000});f.show(document)},winForbidden:function(c){var d=_("Forbidden"),e="";switch(c){case"fs_error":d=_("Error");e=_("File system error. Check read/write permissions under data folder.");break;case"encoding_error":d=_("Error");e=_('You have used characters that require the use of UTF-8 despite the XML header.<br>Please delete these characters or change the header of the XML file to UTF-8 ; i.e.:<br><br><center><i><?xml version="1.0" encoding="utf-8"?></i></center>');break;case"tabs_found":d=_("Error");e=_('It seems that you have inserted tab caracters into this file. Please, replace each one by a single space.<br>Tip: You can use the "Re-indent this entire file" button to replace all tabs by spaces.');break;case"folder_already_exist":d=_("Error");e=_("This folder already exists in the current folder.");break;case"file_already_exist":d=_("Error");e=_("This file already exists in the current folder.");break;case"save_you_cant_modify_it":d=_("Error");e=_("You aren't allowed to modify this file as it has already been modified by different user. Contact an administrator if you want to be able to modify it.");break;case"file_isnt_owned_by_current_user":d=_("Error");e=_("The file for which you want to clear local changes isn't owned by you.<br>You can only perform this action on your own files.");break;case"file_localchange_didnt_exist":d=_("Error");e=_("The file you want to clear local changes in doesn't exist as a work in progress.");break;case"changeFilesOwnerNotAdmin":d=_("Error");e=_("You aren't allowed to change this file's owner. You must be a global administrator or an administrator for this language to be able to do that.");break;case"patch_delete_dont_exist":d=_("Error");e=_("The patch you want to delete doesn't exist.");break;case"patch_delete_isnt_own_by_current_user":d=_("Error");e=_("The patch you want to delete isn't owned by you. Only the author of the patch or a global administrator can delete it.");break;case"action_only_global_admin":d=_("Error");e=_("This action is available to global administrators only.");break;case"action_only_admin":d=_("Error");e=_("This action is available to global administrators or to administrators for this language only.");break}Ext.MessageBox.alert(d,e)},runDirectAccess:function(){if(directAccess){if(directAccess.link=="perm"){ui.cmp.RepositoryTree.getInstance().openFile("byPath",directAccess.lang+directAccess.path,directAccess.name)}if(directAccess.link=="patch"){Ext.getCmp("main-panel").openDiffTab({DiffType:"file",FilePath:directAccess.path,FileName:directAccess.name})}if(directAccess.link=="patchID"){Ext.getCmp("main-panel").openDiffTab({DiffType:"file",patchID:directAccess.patchID,patchName:directAccess.patchName})}}},afterLoadAllStore:function(){this.app.loaded=true;this.runDirectAccess();if(this.user.conf.main.loadMailsAtStartUp){ui.cmp.PortletLocalMail.getInstance().reloadData()}if(this.user.conf.main.loadBugsAtStartUp){ui.cmp.PortletBugs.getInstance().reloadData()}PhDOE.setTopic();PhDOE.setTopic(true)},loadAllStore:function(){var e=new Ext.ProgressBar({width:300,renderTo:"loading-progressBar"}),c=[],d;if(PhDOE.user.lang!=="en"){c=[ui.cmp._MainMenu.store,ui.cmp.StaleFileGrid.getInstance().store,ui.cmp.ErrorFileGrid.getInstance().store,ui.cmp.PendingReviewGrid.getInstance().store,ui.cmp.NotInENGrid.getInstance().store,ui.cmp.PortletSummary.getInstance().store,ui.cmp.PortletTranslationGraph.getInstance().store,ui.cmp.PortletTranslationsGraph.getInstance().store,ui.cmp.PortletTranslator.getInstance().storeTranslator,ui.cmp.PortletTranslator.getInstance().storeReviewer,ui.cmp.PendingTranslateGrid.getInstance().store,ui.cmp.PortletInfo.getInstance().store]}else{c=[ui.cmp._MainMenu.store,ui.cmp.PortletTranslationsGraph.getInstance().store,ui.cmp.ErrorFileGrid.getInstance().store,ui.cmp.PortletInfo.getInstance().store]}d=function(f){e.updateProgress((f+1)/c.length,(f+1)+" of "+c.length+"...");c[f].load({callback:function(){f++;if(f<c.length){d(f)}else{Ext.get("loading").remove();Ext.fly("loading-mask").fadeOut({remove:true});e.destroy();PhDOE.afterLoadAllStore()}}})};e.show();document.getElementById("loading-msg").innerHTML="Loading data...";d(0)},reloadAllStore:function(){var c=[],d;if(PhDOE.user.lang!=="en"){c=[ui.cmp.PendingTranslateGrid.getInstance().store,ui.cmp.StaleFileGrid.getInstance().store,ui.cmp.ErrorFileGrid.getInstance().store,ui.cmp.PendingReviewGrid.getInstance().store,ui.cmp.NotInENGrid.getInstance().store,ui.cmp.WorkTreeGrid.getInstance().getRootNode(),ui.cmp.PatchesTreeGrid.getInstance().getRootNode(),ui.cmp.PortletSummary.getInstance().store,ui.cmp.PortletTranslator.getInstance().storeTranslator,ui.cmp.PortletTranslator.getInstance().storeReviewer,ui.cmp.PortletTranslationGraph.getInstance().store,ui.cmp.PortletTranslationsGraph.getInstance().store,ui.cmp.PortletInfo.getInstance().store]}else{c=[ui.cmp.WorkTreeGrid.getInstance().getRootNode(),ui.cmp.PatchesTreeGrid.getInstance().getRootNode(),ui.cmp.PortletInfo.getInstance().store]}d=function(f){var e=function(){f++;if(f<c.length){d(f)}};c[f].reload(c[f] instanceof Ext.tree.AsyncTreeNode?e:{callback:e})};d(0)},saveTopic:function(c,d){ui.task.setTopicTask({content:c,isLang:d})},setTopic:function(d){var c=PhDOE.topic[d?"lang":"global"];Ext.get("topic-info-content"+(d?"-lang":"")).dom.innerHTML=c.content;Ext.get("topic-info-user"+(d?"-lang":"")).dom.innerHTML=String.format(_("Defined by {0}, {1}"),c.author,c.topicDate)},drawInterface:function(){var c,k,l,d=[],g=[],h=[];k={col1:["portletLocalMail","portletBugs"],col2:["portletInfo","portletTranslationsGraph"]};l={col1:["portletSummary","portletTranslator","portletLocalMail","portletBugs"],col2:["portletInfo","portletTranslationGraph","portletTranslationsGraph"]};if(PhDOE.user.lang==="en"){c=(PhDOE.user.conf.main.portalSortEN)?Ext.util.JSON.decode(PhDOE.user.conf.main.portalSortEN):k;h.portletLocalMail=ui.cmp.PortletLocalMail.getInstance({lang:PhDOE.user.lang});h.portletBugs=ui.cmp.PortletBugs.getInstance({lang:PhDOE.user.lang});h.portletInfo=ui.cmp.PortletInfo.getInstance();h.portletTranslationsGraph=ui.cmp.PortletTranslationsGraph.getInstance()}else{c=(PhDOE.user.conf.main.portalSortLANG)?Ext.util.JSON.decode(PhDOE.user.conf.main.portalSortLANG):l;h.portletSummary=ui.cmp.PortletSummary.getInstance({lang:PhDOE.user.lang});h.portletTranslator=ui.cmp.PortletTranslator.getInstance({lang:PhDOE.user.lang});h.portletLocalMail=ui.cmp.PortletLocalMail.getInstance({lang:PhDOE.user.lang});h.portletBugs=ui.cmp.PortletBugs.getInstance({lang:PhDOE.user.lang});h.portletInfo=ui.cmp.PortletInfo.getInstance();h.portletTranslationGraph=ui.cmp.PortletTranslationGraph.getInstance();h.portletTranslationsGraph=ui.cmp.PortletTranslationsGraph.getInstance()}for(var f=0;f<c.col1.length;f++){d.push(h[c.col1[f]])}for(var e=0;e<c.col2.length;e++){g.push(h[c.col2[e]])}ui.task.PingTask.getInstance().delay(30000);new Ext.Viewport({layout:"border",id:"main-app",items:[{region:"north",html:'<h1 class="x-panel-header"><img src="themes/img/mini_php.png" style="vertical-align: middle;" /> '+this.app.name+"</h1>",autoHeight:true,border:false,margins:"0 0 5 0"},{region:"west",id:"main-menu-panel",layout:"accordion",collapsible:true,collapseMode:"mini",animate:true,split:true,width:PhDOE.user.conf.main.mainMenuWidth||300,header:false,listeners:{resize:function(j,o){if(o&&o!=PhDOE.user.conf.main.mainMenuWidth){var m=new ui.task.UpdateConfTask({module:"main",itemName:"mainMenuWidth",value:o,notify:false})}}},tbar:[{text:_("Main menu"),iconCls:"MainMenu",menu:new ui.cmp.MainMenu()}],items:[{id:"acc-need-translate",title:_("Files need translate")+' (<em id="acc-need-translate-nb">0</em>)',layout:"fit",border:false,iconCls:"iconFilesNeedTranslate",hidden:(PhDOE.user.lang==="en"),items:[ui.cmp.PendingTranslateGrid.getInstance()],collapsed:true,listeners:{expand:function(j){Ext.getCmp("FNT-filter").wrap.setWidth(180);Ext.getCmp("FNT-filter").syncSize()}}},{id:"acc-need-update",title:_("Files need update")+' (<em id="acc-need-update-nb">0</em>)',layout:"fit",border:false,iconCls:"iconFilesNeedUpdate",hidden:(PhDOE.user.lang==="en"),items:[ui.cmp.StaleFileGrid.getInstance()],collapsed:true,listeners:{expand:function(j){Ext.getCmp("FNU-filter").wrap.setWidth(180);Ext.getCmp("FNU-filter").syncSize()}}},{id:"acc-error",title:(PhDOE.user.lang==="en")?"Number of failures to meet 'strict standards' (<em id=\"acc-error-nb\">0</em>)":_("Error in current translation")+' (<em id="acc-error-nb">0</em>)',layout:"fit",border:false,iconCls:"iconFilesError",items:[ui.cmp.ErrorFileGrid.getInstance()],collapsed:true,listeners:{expand:function(j){Ext.getCmp("FE-filter").wrap.setWidth(180);Ext.getCmp("FE-filter").syncSize()}}},{id:"acc-need-reviewed",title:_("Files need reviewed")+' (<em id="acc-need-reviewed-nb">0</em>)',layout:"fit",border:false,iconCls:"iconFilesNeedReviewed",hidden:(PhDOE.user.lang==="en"),items:[ui.cmp.PendingReviewGrid.getInstance()],collapsed:true,listeners:{expand:function(j){Ext.getCmp("FNR-filter").wrap.setWidth(180);Ext.getCmp("FNR-filter").syncSize()}}},{id:"acc-notInEn",title:_("Not in EN tree")+' (<em id="acc-notInEn-nb">0</em>)',layout:"fit",border:false,iconCls:"iconNotInEn",hidden:(PhDOE.user.lang==="en"),items:[ui.cmp.NotInENGrid.getInstance()],collapsed:true},{id:"acc-all-files",title:_("All files"),layout:"fit",border:false,iconCls:"iconAllFiles",items:[ui.cmp.RepositoryTree.getInstance()],collapsed:true,listeners:{expand:function(j){Ext.getCmp("AF-search").wrap.setWidth(180);Ext.getCmp("AF-search").syncSize()}}},{id:"acc-work-in-progress",title:_("Work in progress")+' (<em id="acc-work-in-progress-nb" qtip="'+_("Total number of your files")+'">0</em>)',layout:"fit",border:false,iconCls:"iconWorkInProgress",items:[ui.cmp.WorkTreeGrid.getInstance()],collapsed:true,tools:[{id:"refresh",qtip:_("Refresh"),handler:function(){ui.cmp.WorkTreeGrid.getInstance().getRootNode().reload()}}]},{id:"acc-patches",tools:[{id:"refresh",qtip:_("Refresh"),handler:function(){ui.cmp.PatchesTreeGrid.getInstance().getRootNode().reload()}},{id:"gear",hidden:PhDOE.user.haveKarma,qtip:_("Open the Log Message Manager"),handler:function(){if(!Ext.getCmp("commit-log-win")){var j=new ui.cmp.CommitLogManager()}Ext.getCmp("commit-log-win").show("acc-patches")}}],title:_("Patches for review")+' (<em id="acc-patches-nb" qtip="'+_("Total number of your files")+'">0</em>)',layout:"fit",border:false,iconCls:"iconPatch",items:[ui.cmp.PatchesTreeGrid.getInstance()],collapsed:true}]},{xtype:"mainpanel",id:"main-panel",region:"center",items:[{xtype:"panel",id:"MainInfoTabPanel",title:_("Home"),baseCls:"MainInfoTabPanel",autoScroll:true,plain:true,items:[{xtype:"container",layout:"column",border:false,items:[{xtype:"container",columnWidth:0.5,html:'<div class="topic-connected"><div class="x-box-tl"><div class="x-box-tr"><div class="x-box-tc"></div></div></div><div class="x-box-ml"><div class="x-box-mr"><div class="x-box-mc"><h3>'+_("Connected as")+' <em id="loginLibel"></em>, '+_("Project: ")+'<em id="Info-Project">'+PhDOE.project+"</em>, "+_("Language: ")+' <em id="Info-Language">-</em></h3></div></div></div><div class="x-box-bl"><div class="x-box-br"><div class="x-box-bc"></div></div></div></div><div class="x-box-like"><g:plusone size="medium" width="20"></g:plusone><br/><div class="fb-like" data-send="false" data-layout="button_count" data-width="40" data-show-faces="false"></div></div>',listeners:{afterrender:function(m){var j="",p="",o;o=Ext.get("loginLibel");if(PhDOE.user.isGlobalAdmin||PhDOE.user.isLangAdmin){o.addClass("userAdmin");p='<img src="themes/img/icon_php.png" style="vertical-align:middle"> '+PhDOE.user.login}else{if(PhDOE.user.authService=="VCS"){p='<img src="themes/img/icon_php.png" style="vertical-align:middle"> '+PhDOE.user.login}else{if(PhDOE.user.authService=="google"){p='<img src="themes/img/google.png" style="vertical-align:middle"> '+PhDOE.user.login}else{if(PhDOE.user.authService=="facebook"){p='<img src="themes/img/icon_facebook.png" style="vertical-align:middle"> '+PhDOE.user.login}}}}o.dom.innerHTML=p;content=_("Connected using")+" "+PhDOE.user.authService+"<br>";content+=(PhDOE.user.isGlobalAdmin)?_("You are a global Administrator")+"<br>":"";content+=(PhDOE.user.isLangAdmin)?_("You are an administrator for this language")+"<br>":"";new Ext.ToolTip({target:"loginLibel",anchor:"top",html:content})}}},{xtype:"container",columnWidth:0.5,html:'<div class="topic-info"><div class="x-box-tl"><div class="x-box-tr"><div class="x-box-tc"></div></div></div><div class="x-box-ml"><div class="x-box-mr"><div class="x-box-mc"><div id="topic-info-container"><h3>'+_("Topic:")+'</h3><p id="topic-info-content">-</p><div id="topic-info-user">-</div></div><div id="topic-info-container-lang"><h3><em id="Topic-Language">-</em>'+_("Topic:")+'</h3><p id="topic-info-content-lang">-</p><div id="topic-info-user-lang">-</div></div></div></div></div><div class="x-box-bl"><div class="x-box-br"><div class="x-box-bc"></div></div></div></div>',listeners:{afterrender:function(m){if(!PhDOE.user.haveKarma){return}var j=function(q){var o="topic-info-content"+(q?"-lang":""),p=Ext.get(o).dom.innerHTML;Ext.get(o).dom.innerHTML="";new Ext.FormPanel({renderTo:o,layout:"anchor",border:false,items:[{xtype:"htmleditor",value:p,anchor:"100%"}],buttonAlign:"center",buttons:[{text:_("Save"),handler:function(){PhDOE.saveTopic(this.ownerCt.ownerCt.items.items[0].getValue(),q)}},{text:_("Cancel"),handler:function(){PhDOE.setTopic(q)}}]})};Ext.get("topic-info-container").on("dblclick",function(){j()});Ext.get("topic-info-container-lang").on("dblclick",function(){j(true)})}}}]},{xtype:"portal",border:false,items:[{columnWidth:0.5,style:"padding:10px 5px 10px 5px",items:d},{columnWidth:0.5,style:"padding:10px 5px 10px 5px",items:g}],listeners:{drop:function(o){var m,q=[],s=[],t;for(var r=0;r<o.portal.items.items[0].items.items.length;r++){t=o.portal.items.items[0].items.items[r].id;q.push(t)}for(var p=0;p<o.portal.items.items[1].items.items.length;p++){t=o.portal.items.items[1].items.items[p].id;s.push(t)}m={col1:q,col2:s};new ui.task.UpdateConfTask({module:"main",itemName:(PhDOE.user.lang==="en")?"portalSortEN":"portalSortLANG",value:Ext.util.JSON.encode(m),notify:false})}}}]}]}]});new Ext.dd.DropTarget(Ext.get("main-panel"),{ddGroup:"mainPanelDDGroup",notifyDrop:function(q,p,o){var m,j;if(o.nodes){for(m=0;m<o.nodes.length;m++){PhDOE.AFfilePendingOpen[m]={nodeID:o.nodes[m].attributes.id}}ui.cmp.RepositoryTree.getInstance().openFile("byId",PhDOE.AFfilePendingOpen[0].nodeID,false);PhDOE.AFfilePendingOpen.shift();return true}if(o.grid.ownerCt.id==="acc-need-pendingCommit"){o.grid.openFile(o.selections[0].data.id);return true}for(m=0;m<o.selections.length;m++){if(o.grid.ownerCt.id==="acc-need-translate"){PhDOE.FNTfilePendingOpen[m]={id:o.selections[m].data.id}}if(o.grid.ownerCt.id==="acc-need-update"){PhDOE.FNUfilePendingOpen[m]={id:o.selections[m].data.id}}if(o.grid.ownerCt.id==="acc-error"){PhDOE.FEfilePendingOpen[m]={id:o.selections[m].data.id}}if(o.grid.ownerCt.id==="acc-need-reviewed"){PhDOE.FNRfilePendingOpen[m]={id:o.selections[m].data.id}}if(o.grid.ownerCt.id==="acc-notInEn"){PhDOE.FNIENfilePendingOpen[m]={id:o.selections[m].data.id}}if(o.grid.ownerCt.id==="acc-need-pendingPatch"){PhDOE.PPfilePendingOpen[m]={id:o.selections[m].data.id}}if(o.grid.ownerCt.id==="acc-need-pendingPatch"){PhDOE.PPfilePendingOpen[m]={id:o.selections[m].data.id}}}if(o.grid.ownerCt.id==="acc-need-translate"){j=PhDOE.FNTfilePendingOpen[0];PhDOE.FNTfilePendingOpen.shift()}if(o.grid.ownerCt.id==="acc-need-update"){j=PhDOE.FNUfilePendingOpen[0];PhDOE.FNUfilePendingOpen.shift()}if(o.grid.ownerCt.id==="acc-error"){j=PhDOE.FEfilePendingOpen[0];PhDOE.FEfilePendingOpen.shift()}if(o.grid.ownerCt.id==="acc-need-reviewed"){j=PhDOE.FNRfilePendingOpen[0];PhDOE.FNRfilePendingOpen.shift()}if(o.grid.ownerCt.id==="acc-notInEn"){j=PhDOE.FNIENfilePendingOpen[0];PhDOE.FNIENfilePendingOpen.shift()}if(o.grid.ownerCt.id==="acc-need-pendingPatch"){j=PhDOE.PPfilePendingOpen[0];PhDOE.PPfilePendingOpen.shift()}o.grid.openFile(j.id);return true}});(function(p,j,q){var o,m=p.getElementsByTagName(j)[0];if(p.getElementById(q)){return}o=p.createElement(j);o.id=q;o.src="https://connect.facebook.net/en_US/all.js#xfbml=1&appId=128417830579090";m.parentNode.insertBefore(o,m)}(document,"script","facebook-jssdk"));window.___gcfg={lang:"en-US",size:"medium",annotation:"bubble"};(function(){var j=document.createElement("script");j.type="text/javascript";j.async=true;j.src="https://apis.google.com/js/plusone.js";var m=document.getElementsByTagName("script")[0];m.parentNode.insertBefore(j,m)})();this.loadAllStore()}}}();Ext.EventManager.onDocumentReady(PhDOE.init,PhDOE,true); |