";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:'
'+d.mess+"
"});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(' '+_("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(' '+_("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(' '+_("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(' '+_("Please, wait..."));var g=["FNT","FNU","FE","FNR","FNIEN","AF"];for(var h=0;hYou 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(' '+_("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(' '+_("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=' ',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 {0} contains some tab characters. 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,'');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.isAnonymous&&q.user!==PhDOE.user.login)||(PhDOE.user.isAnonymous&&q.anonymousIdent!==PhDOE.user.anonymousIdent))){if(q.isAnonymous&&!PhDOE.user.isAnonymous&&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.isAnonymous&&!PhDOE.user.isAnonymous&&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("");v.insertLine(1,"");v.insertLine(2,"");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.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.
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.
You must fix it before saving this file.
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
{0}
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.
You must fix it before saving this file.
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. 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(' '+_("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.isAnonymous){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(" "),buttons:[{text:_("Close"),handler:function(){this.ownerCt.ownerCt.close()}}]}).show();PhDOE.reloadAllStore()};ui.task._VCSCommitTask.commit=function(h,g){Ext.getBody().mask(' '+_("Please, wait until commit..."));var c=[],f,e,d;for(d=0;d0){for(h=0;h"}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.
{1}
Would you like me to close them for you ?"),l.length,m):String.format(_("There is {0} file to close before commit.
{1}
Would you like me to close it for you ?"),l.length,m),fn:function(u){if(u==="yes"){for(var t=0;t'+PhDOE.app.name+'
"+_('You have opened a modified file from the "Patch for review" module. This file has been modified by an anonymous user.
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:" "+_("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:" "+_("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:" "+_("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:''});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(" ");if(e.state==="truncate"){Ext.get("check-build-content").dom.innerHTML=f+'
'+_("This log is too large and have been truncated. Use the following button to download the full content of it.")+'
';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'
'+d+"
"};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:""+_("View in a new Tab")+"",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('
',"{authService} - {userName}","
"),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:")+"
'+_("WARNING ! This option use a lot of server ressource. If you don't know what are the consequence, please, don't use it.")+"
"},{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=\" "+_("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"+_("Open in a new Tab")+"",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.
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"+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(" ")}}]);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:'
",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:'
'+_("You must manually load this data. Use the refresh button !")+"
",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:_("Load/Refresh"),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('','
','',"{label}","
","");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+";":""+f.items+"";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:'
'+_("You must manually load this data. Use the refresh button !")+"
"+_("(You can change this behavior by setting an option in the configuration window)")+"
",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:_("Load/Refresh"),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. 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. 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.isAnonymous){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(c,f,d){var h="",g,e;if(d.data.fileModifiedEN){g=Ext.util.JSON.decode(d.data.fileModifiedEN);if(g.user===PhDOE.user.login&&g.anonymousIdent===PhDOE.user.anonymousIdent){h=_("File EN modified by me")+" "}else{h=String.format(_("File EN modified by {0}"),g.user)+" "}}if(d.data.fileModifiedLang){e=Ext.util.JSON.decode(d.data.fileModifiedLang);if(e.user===PhDOE.user.login&&e.anonymousIdent===PhDOE.user.anonymousIdent){h+=String.format(_("File {0} modified by me"),PhDOE.user.lang.ucFirst())}else{h+=String.format(_("File {0} modified by {1}"),PhDOE.user.lang.ucFirst(),e.user)}}if(h!==""){return""+c+""}else{return c}}},{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:'
'+_("No Files")+"
",deferEmptyText:false,forceFit:true,startCollapsed:true,groupTextTpl:'{[values.rs[0].data.path]} ({[values.rs.length]} {[values.rs.length > 1 ? "'+_("Files")+'" : "'+_("File")+'"]})',getRowClass:function(c){if(c.data.fileModifiedEN||c.data.fileModifiedLang){var e=Ext.util.JSON.decode(c.data.fileModifiedEN),d=Ext.util.JSON.decode(c.data.fileModifiedLang);return((e.user===PhDOE.user.login&&e.anonymousIdent===PhDOE.user.anonymousIdent)||(d.user===PhDOE.user.login&&d.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:""+_("Edit in a new tab")+"",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(' '+_("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:''});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:_("Undo"),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:_("Redo"),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,"");Ext.getCmp(this.comp_id).focus()}},{scope:this,text:_("Revcheck tag"),handler:function(){Ext.getCmp(this.comp_id).insertLine(1,"");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,[' \r\n ',"&reftitle.description;\r\n ","\r\n ","\r\n ","thereturned typefunc_name\r\n ","\r\n ","param1typefirstparameter\r\n ","\r\n ",'intsecondparameter\r\n ',"\r\n ","\r\n ","\r\n ","\r\n ","The function description goes here.\r\n ","\r\n ",""].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\r\n',"&reftitle.parameters;\r\n","\r\n","\r\n","\r\n","firstparameter\r\n","\r\n","\r\n","Its description\r\n","\r\n","\r\n","\r\n","\r\n","\r\n","secondparameter\r\n","\r\n","\r\n","\r\n","Its description\r\n","\r\n","\r\n","\r\n","\r\n","\r\n",""].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\r\n',"&reftitle.returnvalues;\r\n","\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","\r\n",""].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\r\n',"&reftitle.errors;\r\n","\r\n","When does this function issue E_* level errors, and/or throw exceptions.\r\n","\r\n","\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\r\n',"&reftitle.unicode;\r\n","\r\n","Information specific to unicode, from the PHP 6 changes.\r\n","\r\n",""].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\r\n',"&reftitle.changelog;\r\n","\r\n","\r\n",'\r\n',"\r\n","\r\n","&Version;\r\n","&Description;\r\n","\r\n","\r\n","\r\n","\r\n","Enter the version of change here\r\n","\r\n","Describe the change\r\n","\r\n","\r\n","\r\n","\r\n","\r\n","\r\n",""].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\r\n',"&reftitle.examples;\r\n","\r\n",'\r\n',"function-name example\r\n","\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 tag, not out).\r\n","\r\n",'\r\n',"\r\n","]]>\r\n","\r\n","&example.outputs.similar;\r\n","\r\n","\r\n","\r\n","\r\n","\r\n",""].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\r\n',"&reftitle.notes;\r\n","\r\n","\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","\r\n","\r\n","¬e.language-construct;\r\n","¬e.not-bin-safe;\r\n","¬e.registerglobals;\r\n",""].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\r\n',"&reftitle.seealso;\r\n","\r\n","\r\n","somefunc\r\n","another_func\r\n",'The something appendix\r\n',"\r\n","\r\n",""].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:_("Check 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','',_("Line: "),'-',' ',_("Col: "),'-'," "].join(""))}}}]:[{xtype:"panel",height:22,baseCls:"",bodyStyle:"padding-top:5px;",html:['
','',_("Line: "),'-',' ',_("Col: "),'-',"
"].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:_("Save 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:_("Expand 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:_("Preview 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+' ['+_("modified")+"]");Ext.getCmp(this.prefix+"-"+this.fid).setTitle(Ext.getCmp(this.prefix+"-"+this.fid).originTitle+' *');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:''}]});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(' '+_("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. 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(' '+_("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. 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.isAnonymous),handler:function(){Ext.getBody().mask(' '+_("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. 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:"Configure 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.isAnonymous),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(' '+_("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;eDo 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:'',tbar:m});Ext.getCmp("main-panel").setActiveTab("diff_panel_"+l);Ext.get("diff_panel_"+l).mask(''+_("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='
"}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""+d+""}else{return""+d+""}}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:'
'+_("No Files")+"
",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:""+_("View in a new tab")+"",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}"),""+this.node.attributes.task+""),iconCls:"iconSendEmail",hidden:(this.node.attributes.task===PhDOE.user.login||this.node.attributes.email==="false"),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:(this.node.attributes.task!==PhDOE.user.login||PhDOE.user.isAnonymous)},((this.node.attributes.task===PhDOE.user.login&&!PhDOE.user.isAnonymous)?new ui.cmp._WorkTreeGrid.menu.commit({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 d=this.node,f=[],c=d.parentNode.attributes.task,e=d.parentNode.attributes.isAnonymous;this.node.cascade(function(g){if(g.attributes.type!=="folder"&&g.attributes.type!=="patch"&&g.attributes.type!=="user"){f.push(g)}},this);Ext.apply(this,{items:[{text:_("Edit the description of this patch"),iconCls:"iconPendingPatch",hidden:(c!==PhDOE.user.login),handler:function(){var g=new ui.cmp.ManagePatchPrompt({title:_("Modify this patch description"),patchName:d.attributes.task,patchDescription:d.attributes.patchDescription,patchEmail:d.attributes.patchEmail,patchID:d.attributes.idDB});g.show(this.el)}},{text:_("Delete this patch"),iconCls:"iconTrash",hidden:(c!==PhDOE.user.login),handler:function(){ui.task.DeletePatchTask({patchID:d.attributes.idDB})}},{xtype:"menuseparator",hidden:!((!PhDOE.user.isAnonymous&&c===PhDOE.user.login)||!PhDOE.user.isGlobalAdmin)},{text:_("Back all this patch to work in progress module"),iconCls:"iconWorkInProgress",hidden:(c!==PhDOE.user.login),disabled:Ext.isEmpty(f),handler:function(){ui.task.MoveToWork({nodesToAdd:f})}},{xtype:"menuseparator",hidden:(c!==PhDOE.user.login)},{text:_("View unified diff"),iconCls:"iconViewDiff",handler:function(){Ext.getCmp("main-panel").openDiffTab({DiffType:"file",patchID:d.attributes.idDB,patchName:d.attributes.task})}},{text:_("Download the unified diff as a patch"),iconCls:"iconDownloadDiff",handler:function(){window.location.href="./do/downloadPatch?patchID="+d.attributes.idDB+"&csrfToken="+csrfToken}},{xtype:"menuseparator"},((e&&!PhDOE.user.isAnonymous)?new ui.cmp._WorkTreeGrid.menu.commit({module:"patches",from:"anonymousPatch",node:false,folderNode:false,patchNode:this.node,userNode:this.node.parentNode}):""),((!PhDOE.user.isAnonymous&&c===PhDOE.user.login)?new ui.cmp._WorkTreeGrid.menu.commit({module:"patches",from:"patch",node:false,folderNode:false,patchNode:this.node,userNode:this.node.parentNode}):""),((PhDOE.user.isGlobalAdmin&&c!==PhDOE.user.login)?new ui.cmp._WorkTreeGrid.menu.admin({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.isAnonymous)},((!PhDOE.user.isAnonymous)?new ui.cmp._WorkTreeGrid.menu.commit({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 h=this.node,m=h.attributes.type,g,c=h.parentNode.attributes.task,f=h.attributes.task,k=h.ownerTree,l=h.attributes.idDB,d=[],e=this.node.parentNode.parentNode.parentNode.attributes.task,j;j=h.parentNode.attributes.task.split("/");g=j[0];this.node.cascade(function(o){if(o.attributes.type!=="folder"&&o.attributes.type!=="patch"&&o.attributes.type!=="user"){d.push(o)}},this);Ext.apply(this,{items:[{text:""+((m==="delete")?_("View in a new tab"):_("Edit in a new tab"))+"",iconCls:"iconEdit",handler:function(){ui.cmp.WorkTreeGrid.getInstance().openFile(h)}},{text:_("Back this file to work in progress module"),hidden:(e!==PhDOE.user.login),iconCls:"iconWorkInProgress",handler:function(){ui.task.MoveToWork({nodesToAdd:d})}},"-",{text:_("View diff"),iconCls:"iconViewDiff",handler:function(){Ext.getCmp("main-panel").openDiffTab({DiffType:"file",FileName:f,FilePath:c,currentOwner:e,fileIdDB:h.attributes.idDB})}},{text:_("Download the diff as a patch"),iconCls:"iconDownloadDiff",handler:function(){window.location.href="./do/downloadPatch?FilePath="+c+"&FileName="+f+"&csrfToken="+csrfToken}},{xtype:"menuseparator",hidden:(m==="delete"||m==="new"||e!==PhDOE.user.login)},{text:((m==="delete")?_("Cancel this deletion"):_("Clear this change")),hidden:(e!==PhDOE.user.login),iconCls:"iconPageDelete",handler:function(){new ui.task.ClearLocalChangeTask({ftype:m,fpath:c,fname:f})}},{xtype:"menuseparator",hidden:(PhDOE.user.isAnonymous||e!==PhDOE.user.login)},((e===PhDOE.user.login&&!PhDOE.user.isAnonymous)?new ui.cmp._WorkTreeGrid.menu.commit({module:"patches",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.lang===g&&PhDOE.user.isLangAdmin))},((PhDOE.user.isGlobalAdmin||(PhDOE.user.lang===g&&PhDOE.user.isLangAdmin))?new ui.cmp._WorkTreeGrid.menu.admin({fileLang:g,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"}else{h=String.format(_("File EN modified by {0}"),g.user)+" "}}if(e.data.fileModifiedLang){f=Ext.util.JSON.decode(e.data.fileModifiedLang);if(f.user===PhDOE.user.login&&f.anonymousIdent===PhDOE.user.anonymousIdent){h+=String.format(_("File {0} modified by me"),PhDOE.user.lang.ucFirst())}else{h+=String.format(_("File {0} modified by {1}"),PhDOE.user.lang.ucFirst(),f.user)}}if(h!==""){return""+d+""}else{return d}}},{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(c){if(c.data.fileModifiedEN||c.data.fileModifiedLang){var e=Ext.util.JSON.decode(c.data.fileModifiedEN),d=Ext.util.JSON.decode(c.data.fileModifiedLang);return((e.user===PhDOE.user.login&&e.anonymousIdent===PhDOE.user.anonymousIdent)||(d.user===PhDOE.user.login&&d.anonymousIdent===PhDOE.user.anonymousIdent))?"fileModifiedByMe":"fileModifiedByAnother"}return false},deferEmptyText:false,emptyText:'
'+_("No Files")+"
"});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(' '+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"+_("Edit in a new tab")+"",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(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},emptyText:'
'+_("No Files")+"
"});ui.cmp._PendingTranslateGrid.columns=[{id:"name",header:_("Files"),sortable:true,dataIndex:"name",renderer:function(c,f,d){if(d.data.fileModified){var e=Ext.util.JSON.decode(d.data.fileModified);if(e.user===PhDOE.user.login&&e.anonymousIdent===PhDOE.user.anonymousIdent){return""+c+""}else{return""+c+""}}else{return c}}},{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:""+_("Edit in a new tab")+"",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('
";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:""+_("Open in a new Tab")+"",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('
'+_("Error when loading open bugs from Php.net !")+"
");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=' '}else{if(authService=="facebook"){f=' '}}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""+d+""}},{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:'
'+_("You must manually load this data. Use the refresh button !")+"
",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:""+_("Open in a new Tab")+"",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('
'+_("Error when loading mails from this mailing list !")+"
");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''+c+""}};ui.cmp._PortletReviewer.uptodateRenderer=function(c){if(c==="0"){return false}else{return''+c+""}};ui.cmp._PortletTranslator.staleRenderer=function(c){if(c==="0"){return false}else{return''+c+""}};ui.cmp._PortletReviewer.staleRenderer=function(c){if(c==="0"){return false}else{return''+c+""}};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(""+String.format(_("Send an email to {0}"),this.ctxTranslatorName)+"");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(""+String.format(_("Send an email to {0}"),this.ctxTranslatorName)+"");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
{0}
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())?""+_("Collapse")+"":""+_("Expand")+"",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:""+_("Edit in a new tab")+"",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 {0}"),Ext.util.Format.uppercase(PhDOE.user.lang)):String.format(_("Open the same file in {0}"),"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;t0)?"/"+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:''}}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.isAnonymous){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(c){if(c.data.fileModifiedEN||c.data.fileModifiedLang){var e=Ext.util.JSON.decode(c.data.fileModifiedEN),d=Ext.util.JSON.decode(c.data.fileModifiedLang);return((e.user===PhDOE.user.login&&e.anonymousIdent===PhDOE.user.anonymousIdent)||(d.user===PhDOE.user.login&&d.anonymousIdent===PhDOE.user.anonymousIdent))?"fileModifiedByMe":"fileModifiedByAnother"}return false},emptyText:'
'+_("No Files")+"
"});ui.cmp._StaleFileGrid.columns=[{id:"name",header:_("Files"),sortable:true,dataIndex:"name",renderer:function(c,f,d){var h="",g,e;if(d.data.fileModifiedEN){g=Ext.util.JSON.decode(d.data.fileModifiedEN);if(g.user===PhDOE.user.login&&g.anonymousIdent===PhDOE.user.anonymousIdent){h=_("File EN modified by me")+" "}else{h=String.format(_("File EN modified by {0}"),g.user)+" "}}if(d.data.fileModifiedLang){e=Ext.util.JSON.decode(d.data.fileModifiedLang);if(e.user===PhDOE.user.login&&e.anonymousIdent===PhDOE.user.anonymousIdent){h+=String.format(_("File {0} modified by me"),PhDOE.user.lang.ucFirst())}else{h+=String.format(_("File {0} modified by {1}"),PhDOE.user.lang.ucFirst(),e.user)}}if(h!==""){return""+c+""}else{return c}}},{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:""+_("Edit in a new tab")+"",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:['
',_("Update all files from VCS"),"
",'
',_("This may take time. Thank you for your patience..."),"
",'
',_("Apply all tools"),"
",'
',_("Reload data"),"
"].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'+_("You must manually load this data. Use the refresh button !")+"
"+_("(You can change this behavior by setting an option in the configuration window)")+"",deferEmptyText:false}),tbar:[{scope:this,id:this.prefix+"-PANEL-btn-refreshlog-"+this.fid,tooltip:_("Load/Refresh revisions"),iconCls:"iconRefresh",handler:function(){this.store.reload()}},{scope:this,id:this.prefix+"-PANEL-btn-log-"+this.fid,tooltip:_("View 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(' '+_("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:'
'+m.content+"
",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.isAnonymous),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.isAnonymous)},((!PhDOE.user.isAnonymous)?new ui.cmp._WorkTreeGrid.menu.commit({from:"user",node:false,folderNode:false,userNode:this.node}):"")]:[{scope:this,text:String.format(_("Send an email to {0}"),""+this.node.attributes.task+""),iconCls:"iconSendEmail",hidden:(this.node.attributes.email==="false"),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.isAnonymous)},((!PhDOE.user.isAnonymous)?new ui.cmp._WorkTreeGrid.menu.commit({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:""+((l==="delete")?_("View in a new tab"):_("Edit in a new tab"))+"",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(""+_("{0}% complete")+"",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;p1){for(var d=0;d1){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('
',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;gPlease delete these characters or change the header of the XML file in UTF-8 ; i.e.:
<?xml version="1.0" encoding="utf-8"?>
');break;case"tabs_found":d=_("Error");e=_('It seems that you have inserted some tabs caracters into this files. Please, replace each one by one space. Tip: You can use the "Re-indent all this file" button to replace all tabs by spaces.');break;case"folder_already_exist":d=_("Error");e=_("This folder already exist in the current folder.");break;case"file_already_exist":d=_("Error");e=_("This file already exist in the current folder.");break;case"save_you_cant_modify_it":d=_("Error");e=_("You can't modify this file as it was modify by another 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 you want to clear local change isn't own by you. You can only do this action for yours files.");break;case"file_localchange_didnt_exist":d=_("Error");e=_("The file you want to clear local change isn't exist as work in progress.");break;case"changeFilesOwnerNotAdmin":d=_("Error");e=_("You can't change file's owner. You must be a global administrator or an administrator for this lang.");break;case"patch_delete_dont_exist":d=_("Error");e=_("The patch you want to delete didn't exist.");break;case"patch_delete_isnt_own_by_current_user":d=_("Error");e=_("The patch you want to delete isn't own by you. Only the user how create it or a global administrator can delete it.");break;case"action_only_global_admin":d=_("Error");e=_("This action is available only to global administrator.");break;case"action_only_admin":d=_("Error");e=_("This action is available only to global administrator or to administrator for this lang.");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 '+this.app.name+"",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")+' (0)',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")+' (0)',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' (0)":_("Error in current translation")+' (0)',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")+' (0)',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")+' (0)',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")+' (0)',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:(this.user.isAnonymous),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")+' (0)',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:'
',listeners:{afterrender:function(m){var j="",p="",o;o=Ext.get("loginLibel");if(PhDOE.user.isGlobalAdmin||PhDOE.user.isLangAdmin){o.addClass("userAdmin");p=' '+PhDOE.user.login}else{if(PhDOE.user.authService=="VCS"){p=' '+PhDOE.user.login}else{if(PhDOE.user.authService=="google"){p=' '+PhDOE.user.login}else{if(PhDOE.user.authService=="facebook"){p=' '+PhDOE.user.login}}}}o.dom.innerHTML=p;content=_("Connected using")+" "+PhDOE.user.authService+" ";content+=(PhDOE.user.isGlobalAdmin)?_("You are a global Administrator")+" ":"";content+=(PhDOE.user.isLangAdmin)?_("You are an administrator for this language")+" ":"";new Ext.ToolTip({target:"loginLibel",anchor:"top",html:content})}}},{xtype:"container",columnWidth:0.5,html:'
";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:'
'+d.mess+"
"});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(' '+_("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(' '+_("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(' '+_("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(' '+_("Please, wait..."));var g=["FNT","FNU","FE","FNR","FNIEN","AF"];for(var h=0;hYou 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(' '+_("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(' '+_("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=' ',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 {0} contains some tab characters. 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,'');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.isAnonymous&&q.user!==PhDOE.user.login)||(PhDOE.user.isAnonymous&&q.anonymousIdent!==PhDOE.user.anonymousIdent))){if(q.isAnonymous&&!PhDOE.user.isAnonymous&&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.isAnonymous&&!PhDOE.user.isAnonymous&&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("");v.insertLine(1,"");v.insertLine(2,"");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.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.
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.
You must fix it before saving this file.
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
{0}
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.
You must fix it before saving this file.
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. 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._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(" "),buttons:[{text:_("Close"),handler:function(){this.ownerCt.ownerCt.close()}}]}).show();PhDOE.reloadAllStore()};ui.task._VCSCommitTask.commit=function(h,g){Ext.getBody().mask(' '+_("Please, wait until commit..."));var c=[],f,e,d;for(d=0;d0){for(h=0;h"}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.
{1}
Would you like me to close them for you ?"),l.length,m):String.format(_("There is {0} file to close before commit.
{1}
Would you like me to close it for you ?"),l.length,m),fn:function(u){if(u==="yes"){for(var t=0;t'+PhDOE.app.name+'
"+_('You have opened a modified file from the "Patch for review" module. This file has been modified by an anonymous user.
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:" "+_("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:" "+_("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:" "+_("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:''});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(" ");if(e.state==="truncate"){Ext.get("check-build-content").dom.innerHTML=f+'
'+_("This log is too large and have been truncated. Use the following button to download the full content of it.")+'
';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'
'+d+"
"};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:""+_("View in a new Tab")+"",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('
',"{authService} - {userName}","
"),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:")+"
'+_("WARNING ! This option use a lot of server ressource. If you don't know what are the consequence, please, don't use it.")+"
"},{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=\" "+_("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"+_("Open in a new Tab")+"",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.
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"+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(" ")}}]);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:'
",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:'
'+_("You must manually load this data. Use the refresh button !")+"
",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:_("Load/Refresh"),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('','
','',"{label}","
","");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+";":""+f.items+"";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:'
'+_("You must manually load this data. Use the refresh button !")+"
"+_("(You can change this behavior by setting an option in the configuration window)")+"
",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:_("Load/Refresh"),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. 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. 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.isAnonymous){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(c,f,d){var h="",g,e;if(d.data.fileModifiedEN){g=Ext.util.JSON.decode(d.data.fileModifiedEN);if(g.user===PhDOE.user.login&&g.anonymousIdent===PhDOE.user.anonymousIdent){h=_("File EN modified by me")+" "}else{h=String.format(_("File EN modified by {0}"),g.user)+" "}}if(d.data.fileModifiedLang){e=Ext.util.JSON.decode(d.data.fileModifiedLang);if(e.user===PhDOE.user.login&&e.anonymousIdent===PhDOE.user.anonymousIdent){h+=String.format(_("File {0} modified by me"),PhDOE.user.lang.ucFirst())}else{h+=String.format(_("File {0} modified by {1}"),PhDOE.user.lang.ucFirst(),e.user)}}if(h!==""){return""+c+""}else{return c}}},{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:'
'+_("No Files")+"
",deferEmptyText:false,forceFit:true,startCollapsed:true,groupTextTpl:'{[values.rs[0].data.path]} ({[values.rs.length]} {[values.rs.length > 1 ? "'+_("Files")+'" : "'+_("File")+'"]})',getRowClass:function(c){if(c.data.fileModifiedEN||c.data.fileModifiedLang){var e=Ext.util.JSON.decode(c.data.fileModifiedEN),d=Ext.util.JSON.decode(c.data.fileModifiedLang);return((e.user===PhDOE.user.login&&e.anonymousIdent===PhDOE.user.anonymousIdent)||(d.user===PhDOE.user.login&&d.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:""+_("Edit in a new tab")+"",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(' '+_("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:''});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:_("Undo"),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:_("Redo"),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,"");Ext.getCmp(this.comp_id).focus()}},{scope:this,text:_("Revcheck tag"),handler:function(){Ext.getCmp(this.comp_id).insertLine(1,"");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,[' \r\n ',"&reftitle.description;\r\n ","\r\n ","\r\n ","thereturned typefunc_name\r\n ","\r\n ","param1typefirstparameter\r\n ","\r\n ",'intsecondparameter\r\n ',"\r\n ","\r\n ","\r\n ","\r\n ","The function description goes here.\r\n ","\r\n ",""].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\r\n',"&reftitle.parameters;\r\n","\r\n","\r\n","\r\n","firstparameter\r\n","\r\n","\r\n","Its description\r\n","\r\n","\r\n","\r\n","\r\n","\r\n","secondparameter\r\n","\r\n","\r\n","\r\n","Its description\r\n","\r\n","\r\n","\r\n","\r\n","\r\n",""].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\r\n',"&reftitle.returnvalues;\r\n","\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","\r\n",""].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\r\n',"&reftitle.errors;\r\n","\r\n","When does this function issue E_* level errors, and/or throw exceptions.\r\n","\r\n","\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\r\n',"&reftitle.unicode;\r\n","\r\n","Information specific to unicode, from the PHP 6 changes.\r\n","\r\n",""].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\r\n',"&reftitle.changelog;\r\n","\r\n","\r\n",'\r\n',"\r\n","\r\n","&Version;\r\n","&Description;\r\n","\r\n","\r\n","\r\n","\r\n","Enter the version of change here\r\n","\r\n","Describe the change\r\n","\r\n","\r\n","\r\n","\r\n","\r\n","\r\n",""].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\r\n',"&reftitle.examples;\r\n","\r\n",'\r\n',"function-name example\r\n","\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 tag, not out).\r\n","\r\n",'\r\n',"\r\n","]]>\r\n","\r\n","&example.outputs.similar;\r\n","\r\n","\r\n","\r\n","\r\n","\r\n",""].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\r\n',"&reftitle.notes;\r\n","\r\n","\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","\r\n","\r\n","¬e.language-construct;\r\n","¬e.not-bin-safe;\r\n","¬e.registerglobals;\r\n",""].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\r\n',"&reftitle.seealso;\r\n","\r\n","\r\n","somefunc\r\n","another_func\r\n",'The something appendix\r\n',"\r\n","\r\n",""].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:_("Check 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','',_("Line: "),'-',' ',_("Col: "),'-'," "].join(""))}}}]:[{xtype:"panel",height:22,baseCls:"",bodyStyle:"padding-top:5px;",html:['
','',_("Line: "),'-',' ',_("Col: "),'-',"
"].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:_("Save 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:_("Expand 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:_("Preview 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+' ['+_("modified")+"]");Ext.getCmp(this.prefix+"-"+this.fid).setTitle(Ext.getCmp(this.prefix+"-"+this.fid).originTitle+' *');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:''}]});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(' '+_("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. 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(' '+_("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. 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.isAnonymous),handler:function(){Ext.getBody().mask(' '+_("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. 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:"Configure 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.isAnonymous),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(' '+_("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;eDo 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:'',tbar:m});Ext.getCmp("main-panel").setActiveTab("diff_panel_"+l);Ext.get("diff_panel_"+l).mask(''+_("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='
"}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""+d+""}else{return""+d+""}}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:'
'+_("No Files")+"
",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:""+_("View in a new tab")+"",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}"),""+this.node.attributes.task+""),iconCls:"iconSendEmail",hidden:(this.node.attributes.task===PhDOE.user.login||this.node.attributes.email==="false"),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:(this.node.attributes.task!==PhDOE.user.login||PhDOE.user.isAnonymous)},((this.node.attributes.task===PhDOE.user.login&&!PhDOE.user.isAnonymous)?new ui.cmp._WorkTreeGrid.menu.commit({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 d=this.node,f=[],c=d.parentNode.attributes.task,e=d.parentNode.attributes.isAnonymous;this.node.cascade(function(g){if(g.attributes.type!=="folder"&&g.attributes.type!=="patch"&&g.attributes.type!=="user"){f.push(g)}},this);Ext.apply(this,{items:[{text:_("Edit the description of this patch"),iconCls:"iconPendingPatch",hidden:(c!==PhDOE.user.login),handler:function(){var g=new ui.cmp.ManagePatchPrompt({title:_("Modify this patch description"),patchName:d.attributes.task,patchDescription:d.attributes.patchDescription,patchEmail:d.attributes.patchEmail,patchID:d.attributes.idDB});g.show(this.el)}},{text:_("Delete this patch"),iconCls:"iconTrash",hidden:(c!==PhDOE.user.login),handler:function(){ui.task.DeletePatchTask({patchID:d.attributes.idDB})}},{xtype:"menuseparator",hidden:!((!PhDOE.user.isAnonymous&&c===PhDOE.user.login)||!PhDOE.user.isGlobalAdmin)},{text:_("Back all this patch to work in progress module"),iconCls:"iconWorkInProgress",hidden:(c!==PhDOE.user.login),disabled:Ext.isEmpty(f),handler:function(){ui.task.MoveToWork({nodesToAdd:f})}},{xtype:"menuseparator",hidden:(c!==PhDOE.user.login)},{text:_("View unified diff"),iconCls:"iconViewDiff",handler:function(){Ext.getCmp("main-panel").openDiffTab({DiffType:"file",patchID:d.attributes.idDB,patchName:d.attributes.task})}},{text:_("Download the unified diff as a patch"),iconCls:"iconDownloadDiff",handler:function(){window.location.href="./do/downloadPatch?patchID="+d.attributes.idDB+"&csrfToken="+csrfToken}},{xtype:"menuseparator"},((e&&!PhDOE.user.isAnonymous)?new ui.cmp._WorkTreeGrid.menu.commit({module:"patches",from:"anonymousPatch",node:false,folderNode:false,patchNode:this.node,userNode:this.node.parentNode}):""),((!PhDOE.user.isAnonymous&&c===PhDOE.user.login)?new ui.cmp._WorkTreeGrid.menu.commit({module:"patches",from:"patch",node:false,folderNode:false,patchNode:this.node,userNode:this.node.parentNode}):""),((PhDOE.user.isGlobalAdmin&&c!==PhDOE.user.login)?new ui.cmp._WorkTreeGrid.menu.admin({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.isAnonymous)},((!PhDOE.user.isAnonymous)?new ui.cmp._WorkTreeGrid.menu.commit({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 h=this.node,m=h.attributes.type,g,c=h.parentNode.attributes.task,f=h.attributes.task,k=h.ownerTree,l=h.attributes.idDB,d=[],e=this.node.parentNode.parentNode.parentNode.attributes.task,j;j=h.parentNode.attributes.task.split("/");g=j[0];this.node.cascade(function(o){if(o.attributes.type!=="folder"&&o.attributes.type!=="patch"&&o.attributes.type!=="user"){d.push(o)}},this);Ext.apply(this,{items:[{text:""+((m==="delete")?_("View in a new tab"):_("Edit in a new tab"))+"",iconCls:"iconEdit",handler:function(){ui.cmp.WorkTreeGrid.getInstance().openFile(h)}},{text:_("Back this file to work in progress module"),hidden:(e!==PhDOE.user.login),iconCls:"iconWorkInProgress",handler:function(){ui.task.MoveToWork({nodesToAdd:d})}},"-",{text:_("View diff"),iconCls:"iconViewDiff",handler:function(){Ext.getCmp("main-panel").openDiffTab({DiffType:"file",FileName:f,FilePath:c,currentOwner:e,fileIdDB:h.attributes.idDB})}},{text:_("Download the diff as a patch"),iconCls:"iconDownloadDiff",handler:function(){window.location.href="./do/downloadPatch?FilePath="+c+"&FileName="+f+"&csrfToken="+csrfToken}},{xtype:"menuseparator",hidden:(m==="delete"||m==="new"||e!==PhDOE.user.login)},{text:((m==="delete")?_("Cancel this deletion"):_("Clear this change")),hidden:(e!==PhDOE.user.login),iconCls:"iconPageDelete",handler:function(){new ui.task.ClearLocalChangeTask({ftype:m,fpath:c,fname:f})}},{xtype:"menuseparator",hidden:(PhDOE.user.isAnonymous||e!==PhDOE.user.login)},((e===PhDOE.user.login&&!PhDOE.user.isAnonymous)?new ui.cmp._WorkTreeGrid.menu.commit({module:"patches",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.lang===g&&PhDOE.user.isLangAdmin))},((PhDOE.user.isGlobalAdmin||(PhDOE.user.lang===g&&PhDOE.user.isLangAdmin))?new ui.cmp._WorkTreeGrid.menu.admin({fileLang:g,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"}else{h=String.format(_("File EN modified by {0}"),g.user)+" "}}if(e.data.fileModifiedLang){f=Ext.util.JSON.decode(e.data.fileModifiedLang);if(f.user===PhDOE.user.login&&f.anonymousIdent===PhDOE.user.anonymousIdent){h+=String.format(_("File {0} modified by me"),PhDOE.user.lang.ucFirst())}else{h+=String.format(_("File {0} modified by {1}"),PhDOE.user.lang.ucFirst(),f.user)}}if(h!==""){return""+d+""}else{return d}}},{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(c){if(c.data.fileModifiedEN||c.data.fileModifiedLang){var e=Ext.util.JSON.decode(c.data.fileModifiedEN),d=Ext.util.JSON.decode(c.data.fileModifiedLang);return((e.user===PhDOE.user.login&&e.anonymousIdent===PhDOE.user.anonymousIdent)||(d.user===PhDOE.user.login&&d.anonymousIdent===PhDOE.user.anonymousIdent))?"fileModifiedByMe":"fileModifiedByAnother"}return false},deferEmptyText:false,emptyText:'
'+_("No Files")+"
"});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(' '+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"+_("Edit in a new tab")+"",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(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},emptyText:'
'+_("No Files")+"
"});ui.cmp._PendingTranslateGrid.columns=[{id:"name",header:_("Files"),sortable:true,dataIndex:"name",renderer:function(c,f,d){if(d.data.fileModified){var e=Ext.util.JSON.decode(d.data.fileModified);if(e.user===PhDOE.user.login&&e.anonymousIdent===PhDOE.user.anonymousIdent){return""+c+""}else{return""+c+""}}else{return c}}},{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:""+_("Edit in a new tab")+"",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('
";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:""+_("Open in a new Tab")+"",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('
'+_("Error when loading open bugs from Php.net !")+"
");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=' '}else{if(authService=="facebook"){f=' '}}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""+d+""}},{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:'
'+_("You must manually load this data. Use the refresh button !")+"
",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:""+_("Open in a new Tab")+"",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('
'+_("Error when loading mails from this mailing list !")+"
");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''+c+""}};ui.cmp._PortletReviewer.uptodateRenderer=function(c){if(c==="0"){return false}else{return''+c+""}};ui.cmp._PortletTranslator.staleRenderer=function(c){if(c==="0"){return false}else{return''+c+""}};ui.cmp._PortletReviewer.staleRenderer=function(c){if(c==="0"){return false}else{return''+c+""}};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(""+String.format(_("Send an email to {0}"),this.ctxTranslatorName)+"");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(""+String.format(_("Send an email to {0}"),this.ctxTranslatorName)+"");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
{0}
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())?""+_("Collapse")+"":""+_("Expand")+"",iconCls:"iconFolderClose",scope:this,handler:function(){if(this.node.isExpanded()){this.node.collapse()}else{this.node.expand()}}},"-",{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:""+_("Edit in a new tab")+"",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 {0}"),Ext.util.Format.uppercase(PhDOE.user.lang)):String.format(_("Open the same file in {0}"),"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;t0)?"/"+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:''}}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.isAnonymous){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(c){if(c.data.fileModifiedEN||c.data.fileModifiedLang){var e=Ext.util.JSON.decode(c.data.fileModifiedEN),d=Ext.util.JSON.decode(c.data.fileModifiedLang);return((e.user===PhDOE.user.login&&e.anonymousIdent===PhDOE.user.anonymousIdent)||(d.user===PhDOE.user.login&&d.anonymousIdent===PhDOE.user.anonymousIdent))?"fileModifiedByMe":"fileModifiedByAnother"}return false},emptyText:'
'+_("No Files")+"
"});ui.cmp._StaleFileGrid.columns=[{id:"name",header:_("Files"),sortable:true,dataIndex:"name",renderer:function(c,f,d){var h="",g,e;if(d.data.fileModifiedEN){g=Ext.util.JSON.decode(d.data.fileModifiedEN);if(g.user===PhDOE.user.login&&g.anonymousIdent===PhDOE.user.anonymousIdent){h=_("File EN modified by me")+" "}else{h=String.format(_("File EN modified by {0}"),g.user)+" "}}if(d.data.fileModifiedLang){e=Ext.util.JSON.decode(d.data.fileModifiedLang);if(e.user===PhDOE.user.login&&e.anonymousIdent===PhDOE.user.anonymousIdent){h+=String.format(_("File {0} modified by me"),PhDOE.user.lang.ucFirst())}else{h+=String.format(_("File {0} modified by {1}"),PhDOE.user.lang.ucFirst(),e.user)}}if(h!==""){return""+c+""}else{return c}}},{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:""+_("Edit in a new tab")+"",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:['
',_("Update all files from VCS"),"
",'
',_("This may take time. Thank you for your patience..."),"
",'
',_("Apply all tools"),"
",'
',_("Reload data"),"
"].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'+_("You must manually load this data. Use the refresh button !")+"
"+_("(You can change this behavior by setting an option in the configuration window)")+"",deferEmptyText:false}),tbar:[{scope:this,id:this.prefix+"-PANEL-btn-refreshlog-"+this.fid,tooltip:_("Load/Refresh revisions"),iconCls:"iconRefresh",handler:function(){this.store.reload()}},{scope:this,id:this.prefix+"-PANEL-btn-log-"+this.fid,tooltip:_("View 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(' '+_("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:'
'+m.content+"
",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.isAnonymous),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.isAnonymous)},((!PhDOE.user.isAnonymous)?new ui.cmp._WorkTreeGrid.menu.commit({from:"user",node:false,folderNode:false,userNode:this.node}):"")]:[{scope:this,text:String.format(_("Send an email to {0}"),""+this.node.attributes.task+""),iconCls:"iconSendEmail",hidden:(this.node.attributes.email==="false"),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.isAnonymous)},((!PhDOE.user.isAnonymous)?new ui.cmp._WorkTreeGrid.menu.commit({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:""+((l==="delete")?_("View in a new tab"):_("Edit in a new tab"))+"",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(""+_("{0}% complete")+"",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;p1){for(var d=0;d1){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('
',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;gPlease delete these characters or change the header of the XML file in UTF-8 ; i.e.:
<?xml version="1.0" encoding="utf-8"?>
');break;case"tabs_found":d=_("Error");e=_('It seems that you have inserted some tabs caracters into this files. Please, replace each one by one space. Tip: You can use the "Re-indent all this file" button to replace all tabs by spaces.');break;case"folder_already_exist":d=_("Error");e=_("This folder already exist in the current folder.");break;case"file_already_exist":d=_("Error");e=_("This file already exist in the current folder.");break;case"save_you_cant_modify_it":d=_("Error");e=_("You can't modify this file as it was modify by another 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 you want to clear local change isn't own by you. You can only do this action for yours files.");break;case"file_localchange_didnt_exist":d=_("Error");e=_("The file you want to clear local change isn't exist as work in progress.");break;case"changeFilesOwnerNotAdmin":d=_("Error");e=_("You can't change file's owner. You must be a global administrator or an administrator for this lang.");break;case"patch_delete_dont_exist":d=_("Error");e=_("The patch you want to delete didn't exist.");break;case"patch_delete_isnt_own_by_current_user":d=_("Error");e=_("The patch you want to delete isn't own by you. Only the user how create it or a global administrator can delete it.");break;case"action_only_global_admin":d=_("Error");e=_("This action is available only to global administrator.");break;case"action_only_admin":d=_("Error");e=_("This action is available only to global administrator or to administrator for this lang.");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 '+this.app.name+"",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")+' (0)',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")+' (0)',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' (0)":_("Error in current translation")+' (0)',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")+' (0)',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")+' (0)',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")+' (0)',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:(this.user.isAnonymous),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")+' (0)',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:'
',listeners:{afterrender:function(m){var j="",p="",o;o=Ext.get("loginLibel");if(PhDOE.user.isGlobalAdmin||PhDOE.user.isLangAdmin){o.addClass("userAdmin");p=' '+PhDOE.user.login}else{if(PhDOE.user.authService=="VCS"){p=' '+PhDOE.user.login}else{if(PhDOE.user.authService=="google"){p=' '+PhDOE.user.login}else{if(PhDOE.user.authService=="facebook"){p=' '+PhDOE.user.login}}}}o.dom.innerHTML=p;content=_("Connected using")+" "+PhDOE.user.authService+" ";content+=(PhDOE.user.isGlobalAdmin)?_("You are a global Administrator")+" ":"";content+=(PhDOE.user.isLangAdmin)?_("You are an administrator for this language")+" ":"";new Ext.ToolTip({target:"loginLibel",anchor:"top",html:content})}}},{xtype:"container",columnWidth:0.5,html:'
'+_("Topic:")+'
-
-
-'+_("Topic:")+'
-
-
',listeners:{afterrender:function(m){if(PhDOE.user.isAnonymous){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 ' +
- _('Please, wait until update this folder...')
- );
-
- // We need to stop ping test during this process
- ui.task.PingTask.getInstance().cancel();
-
- XHR({
- params : {
- task : 'updateFolder',
- path : node.id
- },
- success : function(r)
- {
- var o = Ext.util.JSON.decode(r.responseText);
- ui.task._UpdateSingleFolderTask.afterUpdate(o, node);
- },
- failure : function(r)
- {
- var o = Ext.util.JSON.decode(r.responseText);
-
- if (o && o.success === false) {
- // Re-enable TaskPing
- ui.task.PingTask.getInstance().delay(30000);
- Ext.getBody().unmask();
- PhDOE.winForbidden();
- } else {
- // take over 30sec (max Keep-Alive time)
- // poll every XX secondes if the update is finish
- ui.task._UpdateSingleFolderTask.poll.delay(5000, null, this, t);
- }
- }
- });
-};
-
-ui.task.UpdateSingleFolderTask = function(node)
-{
- // If the user is anonymous, we don't update anything
- if (PhDOE.user.isAnonymous) {
- Ext.getCmp('winVCSCommit').close();
- PhDOE.winForbidden();
- return;
- }
- ui.task._UpdateSingleFolderTask.update(node);
-};
\ No newline at end of file
diff --git a/php/AccountManager.php b/php/AccountManager.php
index b74c063b..ebae9537 100644
--- a/php/AccountManager.php
+++ b/php/AccountManager.php
@@ -4,10 +4,6 @@
*
*/
-require_once dirname(__FILE__) . '/VCSFactory.php';
-require_once dirname(__FILE__) . '/DBConnection.php';
-require_once dirname(__FILE__) . '/ProjectManager.php';
-
class AccountManager
{
private static $instance;
@@ -178,14 +174,11 @@ public function isLogged()
* @param $lang The language we want to access.
* @return An associated array.
*/
- public function login($project, $vcsLogin, $vcsPasswd, $email, $lang='en', $authService='VCS', $authServiceID)
+ public function login($project, $vcsLogin, $vcsPasswd, $email, $lang='en', $authService='VCS', $authServiceID = null)
{
// Var to return into ExtJs
$return = array();
- // Var return from VCS auth system
- $AuthReturn = false;
-
// We manage the project
if( ProjectManager::getInstance()->setProject($project) ) {
$this->project = strtoupper($project);
@@ -310,10 +303,6 @@ public function login($project, $vcsLogin, $vcsPasswd, $email, $lang='en', $auth
// We try to authenticate this user to master php server.
$AuthReturn = VCSFactory::getInstance()->masterPhpAuthenticate($vcsLogin, $vcsPasswd);
$return['authMethod'] = 'masterPhp';
- } else {
- // We try to authenticate this user to VCS server.
- $AuthReturn = VCSFactory::getInstance()->svnAuthenticate($vcsLogin, $vcsPasswd);
- $return['authMethod'] = 'svnServer';
}
diff --git a/php/Conf.php b/php/Config.php
old mode 100644
new mode 100755
similarity index 79%
rename from php/Conf.php
rename to php/Config.php
index e598f74c..2970136a
--- a/php/Conf.php
+++ b/php/Config.php
@@ -40,9 +40,9 @@ public function buildConf()
$this->conf['GLOBAL_CONFIGURATION']['data.path'] = realpath(dirname(__FILE__).'/../'.$this->conf['GLOBAL_CONFIGURATION']['data.path']).'/';
// Second, we load all config project file
- $d = dir($p);
- while (false !== ($entry = $d->read())) {
- if( is_file($p.$entry) && ( $entry != 'conf.ini' && $entry != 'localConf.ini' ) ) {
+ foreach (glob($p."project.*.ini") as $entry) {
+ $entry = basename($entry);
+ if( is_file($p.$entry)) {
// Get the name of the project directly into the filename
$t = explode(".", $entry);
@@ -50,7 +50,19 @@ public function buildConf()
$this->conf[strtoupper($t[1])] = parse_ini_file($p.$entry);
}
}
- $d->close();
+
+ // End, we load all local config project file
+ foreach (glob($p."local.*.ini") as $entry) {
+ $entry = basename($entry);
+ if( is_file($p.$entry)) {
+
+ // Get the name of the project directly into the filename
+ $t = explode(".", $entry);
+
+ $this->conf[strtoupper($t[1])] = array_merge( $this->conf[strtoupper($t[1])], parse_ini_file($p.$entry) );
+ }
+ }
+
// Third, we find all marks to be replace by a var from global_configuration array or current project
while( list($project, $value) = each($this->conf) ) {
diff --git a/php/CvsClient.php b/php/CvsClient.php
index 45bc69a7..10557095 100644
--- a/php/CvsClient.php
+++ b/php/CvsClient.php
@@ -1,6 +1,5 @@
command = $command;
+
+ // We validate and escape certain types of input.
+ $this->args = array();
+ foreach ($args as $key => $val)
+ {
+ if (is_bool($val) || is_float($val) || is_int($val) || is_null($val))
+ $this->args[$key] = $val;
+ else if (is_string($val))
+ $this->args[$key] = escapeshellarg($val);
+ else if (is_object($val))
+ $this->args[$key] = escapeshellarg($val->__toString());
+ else
+ trigger_error('Argument with unexpected type used to construct ExecStatement. It has been omitted from the command string.', E_USER_WARNING);
+ }
+ }
+
+ public function getCommand()
+ {
+ return $this->command;
+ }
+
+ public function getArgs()
+ {
+ return $this->args;
+ }
+
+ public function __toString()
+ {
+ return vsprintf($this->getCommand(), $this->getArgs());
+ }
+}
+?>
\ No newline at end of file
diff --git a/php/ExtJsController.php b/php/ExtJsController.php
index d7d1c4ff..0fe558cb 100644
--- a/php/ExtJsController.php
+++ b/php/ExtJsController.php
@@ -5,25 +5,6 @@
* @todo Add inline documentation for each controller task
*/
-require_once dirname(__FILE__) . '/AccountManager.php';
-require_once dirname(__FILE__) . '/BugReader.php';
-require_once dirname(__FILE__) . '/DictionaryManager.php';
-require_once dirname(__FILE__) . '/EntitiesAcronymsFetcher.php';
-require_once dirname(__FILE__) . '/File.php';
-require_once dirname(__FILE__) . '/GTranslate.php';
-require_once dirname(__FILE__) . '/JsonResponseBuilder.php';
-require_once dirname(__FILE__) . '/LogManager.php';
-require_once dirname(__FILE__) . '/LockFile.php';
-require_once dirname(__FILE__) . '/NewsReader.php';
-require_once dirname(__FILE__) . '/PreviewFile.php';
-require_once dirname(__FILE__) . '/ProjectManager.php';
-require_once dirname(__FILE__) . '/RepositoryFetcher.php';
-require_once dirname(__FILE__) . '/RepositoryManager.php';
-require_once dirname(__FILE__) . '/ToolsXmllint.php';
-require_once dirname(__FILE__) . '/TranslationStatistic.php';
-require_once dirname(__FILE__) . '/TranslatorStatistic.php';
-require_once dirname(__FILE__) . '/UserNotes.php';
-require_once dirname(__FILE__) . '/VCSFactory.php';
/**
* Ext JS controller class
@@ -1170,43 +1151,6 @@ public function getAcronyms()
);
}
- /**
- * Update a single folder recursively
- */
- public function updateFolder()
- {
- $am = AccountManager::getInstance();
- if (!$am->isLogged()) {
- return JsonResponseBuilder::failure();
- }
-
- $rm = RepositoryManager::getInstance();
- $path = $this->getRequestVariable('path');
-
- $r = $rm->updateFolder($path);
-
- return JsonResponseBuilder::success(
- array(
- 'result' => $r
- )
- );
- }
-
- /**
- * Get the response after an update single folder
- */
- function getUpdateFolderResponse()
- {
- if (!AccountManager::getInstance()->isLogged()) {
- return JsonResponseBuilder::failure();
- }
-
- return JsonResponseBuilder::success(
- array(
- 'result' => json_encode($_SESSION['updateFolder'])
- )
- );
- }
/**
* Get Entities to be display into a grid into the "All files modules"
@@ -1252,19 +1196,19 @@ public function getDiff()
$Rev1 = $this->getRequestVariable('Rev1');
$Rev2 = $this->getRequestVariable('Rev2');
- // Ensure Rev2 is always a value greater than Rev1
- if( $Rev2 < $Rev1 )
- {
- $tmp = $Rev2;
- $Rev2 = $Rev1;
- $Rev1 = $tmp;
- }
+// // Ensure Rev2 is always a value greater than Rev1
+// if( $Rev2 < $Rev1 )
+// {
+// $tmp = $Rev2;
+// $Rev2 = $Rev1;
+// $Rev1 = $tmp;
+// }
$r = VCSFactory::getInstance()->diff(
$FileFullPath,
$FileName,
$Rev1,
$Rev2
- );
+ );
} elseif( $DiffType == 'file') {
diff --git a/php/File.php b/php/File.php
index a46c0bc0..4e65a8f1 100644
--- a/php/File.php
+++ b/php/File.php
@@ -1,10 +1,5 @@
/', $content, $match);
+ preg_match('//', $content, $match);
if (!empty($match)) {
$info['rev'] = $match[1];
}
// Rev tag
$match = array();
- preg_match('//U', $content, $match);
+ preg_match('//U', $content, $match);
if (!empty($match)) {
$info['en-rev'] = ($match[1] == 'n/a') ? 0 : $match[1];
$info['maintainer'] = $match[4];
diff --git a/php/GTranslate.php b/php/GTranslate.php
index 65e09db2..94b30e63 100644
--- a/php/GTranslate.php
+++ b/php/GTranslate.php
@@ -1,6 +1,5 @@
update_time + (24*60*60)) > time() ) {
+ $this->updateKarmaList();
+ $data = RepositoryFetcher::getStaticValue('karma_list', '');
+ }
+
+ return $data->data;
+ }
+
+ private function updateKarmaList()
+ {
+ $am = AccountManager::getInstance();
+ $appConf = $am->appConf;
+ $project = $am->project;
+
+ $file = @file($appConf[$project]['vcs.karma.file']);
+
+ $line_avail = array();
+ $user = array();
+
+ // We cleanUp the content of this file
+ for( $i=0; $i < count($file); $i++) {
+ if( substr($file[$i], 0, 6) == 'avail|') {
+ $line_avail[] = $file[$i];
+
+ $t = explode("|", $file[$i]);
+ $users = trim($t[1]);
+ $karmas = ( isset($t[2]) ) ? trim($t[2]) : 'ALL';
+
+ $users = explode(",", $users);
+ $karmas = explode(",", $karmas);
+
+ for( $j=0; $j < count($users); $j++ ) {
+ if( isset($user[$users[$j]]) ) {
+
+ $user[$users[$j]]['karma'] = array_merge( $karmas, $user[$users[$j]]['karma'] );
+
+ } else {
+
+ $user[$users[$j]]['karma'] = $karmas;
+ }
+ }
+
+ }
+ }
+
+ // We store this value into DB as json string to retrieve it later
+ $to_store = array(
+ "update_time" => time(),
+ "data" => $user
+ );
+ RepositoryManager::setStaticValue('karma_list', '', json_encode($to_store));
+
+ }
+
+ // Return true if the $user have the right karma for $module
+ public function checkKarma($user, $lang)
+ {
+ $userList = $this->getKarmaList();
+
+ $userList = (array) $userList;
+
+ if( isset($userList[$user]) ) {
+
+ $userList[$user] = (array) $userList[$user];
+
+ $karma = $userList[$user]['karma'];
+
+ // Must have ALL, phpdoc or phpdoc/$lang
+ if( in_array("ALL", $karma) || in_array("phpdoc", $karma) || in_array("phpdoc/$lang", $karma) ) {
+ return true;
+ } else {
+ return 'You haven\'t good Karma for the chosen language. Your Current karma is : '.implode(", ", $karma);
+ }
+
+ }
+ return 'You haven\'t any karma !';
+
+ }
+
+ public function masterPhpAuthenticate($username, $password)
+ {
+
+ $post = http_build_query(
+ array(
+ "token" => getenv("TOKEN"),
+ "username" => $username,
+ "password" => $password
+ )
+ );
+
+ $opts = array(
+ "method" => "POST",
+ "header" => "Content-type: application/x-www-form-urlencoded",
+ "content" => $post,
+ );
+
+ $ctx = stream_context_create(array("http" => $opts));
+
+ $s = file_get_contents("https://master.php.net/fetch/cvsauth.php", false, $ctx);
+
+ $a = @unserialize($s);
+ if (!is_array($a)) {
+ return 'master.php.net seems to be down !';
+ }
+ if (isset($a["errno"])) {
+ if( $a["errno"] == 0 ) { return 'git login failed'; }
+ if( $a["errno"] == 1 ) { return 'Bad login'; }
+ if( $a["errno"] == 2 ) { return 'Bad password'; }
+ }
+
+ return true;
+ }
+
+ /**
+
+ *
+ * @return An associative array{ 'err': git clone return code, 'output': git clone output contained in an array }
+ *
+ */
+ public function checkout()
+ {
+ $am = AccountManager::getInstance();
+ $appConf = $am->appConf;
+ $project = $am->project;
+
+ $server = $appConf[$project]['vcs.server'];
+ $module = $appConf[$project]['vcs.module'];
+
+
+ $commands = array(
+ new ExecStatement('mkdir %s', array($appConf['GLOBAL_CONFIGURATION']['data.path'].$module)),
+ new ExecStatement('cd %s', array($appConf['GLOBAL_CONFIGURATION']['data.path'].$module)),
+ new ExecStatement('git init'),
+ new ExecStatement('git remote add origin %s', array($server)),
+ new ExecStatement('git config branch.master.remote origin'),
+ new ExecStatement('git config branch.master.merge refs/heads/master'),
+ new ExecStatement('git config user.name %s', array('Online Doc')),
+ new ExecStatement('git config user.email %s', array('phd@php.net')),
+ new ExecStatement('git config filter.rcs-keywords.clean %s', array('.git_filters/rcs-keywords.php.clean')),
+ new ExecStatement('git config filter.rcs-keywords.smudge %s', array('.git_filters/rcs-keywords.php.smudge %f')),
+ new ExecStatement('git pull 2>&1')
+ );
+
+ $err = 1;
+ $trial_threshold = 3;
+ $output = array();
+ for ($trial = 0; $err != 0 && $trial < $trial_threshold; ++$trial) {
+ array_push($output, "git clone trial #$trial\n");
+ SaferExec::execMulti($commands, $output, $err); // if no err, err = 0
+ if ($err == 0) array_push($output, "Success.\n");
+ }
+
+ return array('err' => $err, 'output' => $output);
+ }
+
+ public function fastUpdate()
+ {
+ $am = AccountManager::getInstance();
+ $appConf = $am->appConf;
+ $project = $am->project;
+
+ $commands = array(
+ new ExecStatement('cd %s', array($appConf[$project]['vcs.path'])),
+ // we separate pull on fetch and merge, because rcs-keywords work wrong with pull
+ new ExecStatement('git fetch'),
+ new ExecStatement('git merge origin/master 2>&1')
+ );
+
+ $err = 1;
+ $trial_threshold = 3;
+ $output = array();
+ for ($trial = 0; $err != 0 && $trial < $trial_threshold; ++$trial) {
+ SaferExec::execMulti($commands, $output, $err); // if no err, err = 0
+ }
+
+ if ($err == 0) {
+ $revisions = '';
+ foreach ($output as $string) {
+ //Updating eccb880..aafe899
+ if (preg_match('/^Updating\s([a-f0-9]+\.\.[a-f0-9]+)$/', $string, $matches)) {
+ $revisions = $matches[1];
+ break;
+ }
+ }
+ if (!$revisions) return false;
+
+ $commands = array(
+ new ExecStatement('cd %s', array($appConf[$project]['vcs.path'])),
+ new ExecStatement('git whatchanged %s 2>&1', array($revisions))
+ );
+ $err = 1;
+ $trial_threshold = 3;
+ $output = array();
+ for ($trial = 0; $err != 0 && $trial < $trial_threshold; ++$trial) {
+ SaferExec::execMulti($commands, $output, $err); // if no err, err = 0
+ }
+ if ($err == 0) {
+
+ $delete_stack = $update_stack = $create_stack = array();
+ // :100755 000000 e64f1c9... 0000000... D PHPDoE_git_test/en/test.xml
+ foreach ($output as $string) {
+ if (preg_match('/^:\d+\s+\d+\s+[a-f0-9]+\.\.\.\s+[a-f0-9]+\.\.\.\s+([DMA])\s+(.*)$/', $string, $matches)) {
+ if ($matches[1] == 'A') {
+ $create_stack[] = $matches[2];
+ } else if ($matches[1] == 'M') {
+ $update_stack[] = $matches[2];
+ } else {
+ $delete_stack[] = $matches[2];
+ }
+ }
+ }
+
+ return array(
+ 'create' => $create_stack,
+ 'update' => $update_stack,
+ 'delete' => $delete_stack
+ );
+ } else {
+ errlog(json_encode($output));
+ return false;
+ }
+ } else {
+ errlog(json_encode($output));
+ return false;
+ }
+
+
+ }
+
+ /**
+ * pull . under DOC_EDITOR_VCS_PATH
+ * @return True if it does not report any error, false otherwise.
+ */
+ public function update()
+ {
+ $am = AccountManager::getInstance();
+ $appConf = $am->appConf;
+ $project = $am->project;
+
+ $commands = array(
+ new ExecStatement('cd %s', array($appConf[$project]['vcs.path'])),
+ // we separate pull on fetch and merge, because rcs-keywords work wrong with pull
+ new ExecStatement('git fetch'),
+ new ExecStatement('git merge origin/master 2>&1')
+ );
+
+ $err = 1;
+ $trial_threshold = 3;
+ $output = array();
+ for ($trial = 0; $err != 0 && $trial < $trial_threshold; ++$trial) {
+ array_push($output, "git pull trial #$trial\n");
+ SaferExec::execMulti($commands, $output, $err); // if no err, err = 0
+ if ($err == 0) array_push($output, "Success.\n");
+ }
+
+ if ($err == 0) {
+ return true;
+ } else {
+ errlog(json_encode($output));
+ return false;
+ }
+ }
+
+ /**
+ * Get git log of a specified file.
+ *
+ * @param $path The path of the file.
+ * @param $file The name of the file.
+ * @return An array containing all git log information.
+ */
+ public function log($path, $file)
+ {
+ $am = AccountManager::getInstance();
+ $appConf = $am->appConf;
+ $project = $am->project;
+
+ $commands = array(
+ new ExecStatement('cd %s', array($appConf[$project]['vcs.path'].$path)),
+ new ExecStatement('git log --format="%%H | %%at | %%an | %%s" -- %s', array($file))
+ );
+
+ $trial_threshold = 3;
+ while ($trial_threshold-- > 0) {
+ $output = array();
+ SaferExec::execMulti($commands, $output);
+ if (strlen(trim(implode('', $output))) != 0) break;
+ }
+
+ $part = $output;
+
+ $final = array();
+ for ($i=1; $i < count($part)-1; $i++ ) {
+
+ $o = array();
+
+ $o['id'] = $i;
+ $o['raw'] = $part[$i];
+
+ $contents = trim($part[$i]);
+ $info = explode(' | ', $contents, 4);
+
+ $o['revision'] = $info[0];
+ $o['author'] = $info[2];
+ $o['date'] = date('Y/m/d',$info[1]);
+
+ $o['content'] = $info[3];
+
+ $final[] = $o;
+ }
+
+ return $final;
+ }
+
+ /**
+ * Execute git diff on specific file
+ *
+ * @param $path Path to file
+ * @param $file Filename
+ * @param $rev1 Diff revision 1
+ * @param $rev2 Diff revision 2
+ * @return Array of stdout of git diff
+ */
+ public function diff($path, $file, $rev1, $rev2)
+ {
+ if ($rev1 == 0) return '';
+ $am = AccountManager::getInstance();
+ $appConf = $am->appConf;
+ $project = $am->project;
+
+ $commands = array(
+ new ExecStatement('cd %s', array($appConf[$project]['vcs.path'].$path)),
+ new ExecStatement('git diff %s %s -- %s', array($rev1, $rev2, $file))
+ );
+
+ $trial_threshold = 3;
+ while ($trial_threshold-- > 0) {
+ $output = array();
+ SaferExec::execMulti($commands, $output);
+ if (strlen(trim(implode('', $output))) != 0) break;
+ }
+
+ return $output;
+ }
+
+ public function createCommitLogFile($log)
+ {
+ $path = tempnam(sys_get_temp_dir(), 'Doc_Editor_Commit_Log_Message');
+
+ $handle = fopen($path, "w");
+ fwrite($handle, $log);
+ fclose($handle);
+
+ return $path;
+ }
+
+ public function deleteCommitLogFile($path)
+ {
+ @unlink($path);
+ }
+
+ public function commitFolders($foldersPath)
+ {
+
+ return Array();
+ }
+
+ /**
+ * Executes git commit
+ *
+ * @param $log Commit log
+ * @param $create Array of files to be created
+ * @param $update Array of files to be updated
+ * @param $delete Array of files to be deleted
+ * @return Associative array{ 'err': git ci return code, 'output': git ci output contained in an array }
+ */
+ public function commit($log, $create=false, $update=false, $delete=false)
+ {
+ $am = AccountManager::getInstance();
+
+ $appConf = $am->appConf;
+ $project = $am->project;
+ $vcsLang = $am->vcsLang;
+ $vcsLogin = $am->vcsLogin;
+ $vcsEmail = $am->email;
+ // Info we must store into DB
+ $info = array();
+
+ $pathLogFile = $this->createCommitLogFile($log);
+
+ $create_stack = array();
+ for ($i = 0; $create && $i < count($create); $i++) {
+ $p_to = $create[$i]->full_path;
+ $p_from = $create[$i]->full_new_path;
+ $create_stack[] = $p_to;
+
+ // Pre-commit : rename *-new/foo.xml to actual file
+ @copy($p_from, $p_to);
+ }
+
+ $update_stack = array();
+ for ($i = 0; $update && $i < count($update); $i++) {
+ $p_to = $update[$i]->full_path;
+ $p_from = $update[$i]->full_new_path;
+ $update_stack[] = $p_to;
+
+ // Pre-commit : rename *-new/foo.xml to actual file
+ @copy($p_from, $p_to);
+ }
+
+ $delete_stack = array();
+ for ($i = 0; $delete && $i < count($delete); $i++) {
+ $delete_stack[] = $delete[$i]->full_path;
+ }
+
+ $info['nbFilesCreate'] = count($create_stack);
+ $info['nbFilesDelete'] = count($delete_stack);
+ $info['nbFilesUpdate'] = count($update_stack);
+
+ $commands = array(
+ new ExecStatement('cd %s', array($appConf[$project]['vcs.path']))
+ );
+
+ if ($info['nbFilesDelete'])
+ {
+ $commands[] = new ExecStatement('git rm' . str_repeat(' %s', $info['nbFilesDelete']), $delete_stack);
+ }
+ if ( $info['nbFilesCreate'])
+ {
+ $commands[] = new ExecStatement('git add' . str_repeat(' %s', $info['nbFilesCreate']), $create_stack);
+ }
+ if ($info['nbFilesUpdate'])
+ {
+ $commands[] = new ExecStatement('git add' . str_repeat(' %s', $info['nbFilesUpdate']), $update_stack);
+ }
+
+ $args = array_merge(
+ array($pathLogFile, $vcsLogin.( $vcsEmail ? ' <'.$vcsEmail.'>' : '')),
+ $update_stack,
+ $delete_stack,
+ $create_stack
+ );
+
+ $commands[] = new ExecStatement('git commit -F %s --author=%s --' . str_repeat(' %s', $info['nbFilesCreate'] + $info['nbFilesUpdate'] + $info['nbFilesDelete']).' 2>&1', $args);
+
+ $err = 1;
+ $trial_threshold = 3;
+ $output = array();
+ for ($trial = 0; $err != 0 && $trial < $trial_threshold; ++$trial) {
+ array_push($output, "git commit trial #$trial\n");
+ SaferExec::execMulti($commands, $output, $err); // if no err, err = 0
+ if ($err == 0) array_push($output, "Success.\n");
+ }
+
+
+ // Delete tmp logMessage file
+ $this->deleteCommitLogFile($pathLogFile);
+
+
+
+ if ($err == 0) {
+
+ // push changes to server
+ $err = 1;
+ $trial_threshold = 3;
+ $temp_output = array();
+ $commands = array(
+ new ExecStatement('cd %s', array($appConf[$project]['vcs.path'])),
+ new ExecStatement('git push 2>&1')
+ );
+ for ($trial = 0; $err != 0 && $trial < $trial_threshold; ++$trial) {
+ array_push($output, "git push trial #$trial\n");
+ SaferExec::execMulti($commands, $temp_output, $err); // if no err, err = 0
+ if ($err == 0) array_push($output, "Success.\n");
+ }
+
+
+
+ // adding revision
+ $err = 1;
+ $trial_threshold = 3;
+ $temp_output = array();
+ $commands = array(
+ new ExecStatement('cd %s', array($appConf[$project]['vcs.path']))
+ );
+ if ( $info['nbFilesCreate'])
+ {
+ $commands[] = new ExecStatement('rm' . str_repeat(' %s', $info['nbFilesCreate']), $create_stack);
+ $commands[] = new ExecStatement('git checkout --' . str_repeat(' %s', $info['nbFilesCreate']), $create_stack);
+ }
+ if ($info['nbFilesUpdate'])
+ {
+ $commands[] = new ExecStatement('rm' . str_repeat(' %s', $info['nbFilesUpdate']), $update_stack);
+ $commands[] = new ExecStatement('git checkout --' . str_repeat(' %s', $info['nbFilesUpdate']), $update_stack);
+ }
+ for ($trial = 0; $err != 0 && $trial < $trial_threshold; ++$trial) {
+ SaferExec::execMulti($commands, $temp_output, $err); // if no err, err = 0
+ }
+
+ // We stock this info into DB
+ $info['user'] = $vcsLogin;
+ $info['lang'] = $vcsLang;
+ RepositoryManager::getInstance()->setStaticValue('info', 'commitFiles', json_encode($info), true);
+ } else {
+ $this->revert($create, $update, $delete);
+ errlog(json_encode($output));
+ }
+
+ return array('err' => $err, 'output' => $output);
+ }
+
+ public function revert($create=false, $update=false, $delete=false)
+ {
+ $am = AccountManager::getInstance();
+
+ $appConf = $am->appConf;
+ $project = $am->project;
+
+ $create_stack = array();
+ for ($i = 0; $create && $i < count($create); $i++) {
+ $create_stack[] = $create[$i]->full_path;
+ }
+
+ $update_stack = array();
+ for ($i = 0; $update && $i < count($update); $i++) {
+ $update_stack[] = $update[$i]->full_path;
+ }
+
+ $delete_stack = array();
+ for ($i = 0; $delete && $i < count($delete); $i++) {
+ $delete_stack[] = $delete[$i]->full_path;
+ }
+
+ $commands = array(
+ new ExecStatement('cd %s', array($appConf[$project]['vcs.path'])),
+ new ExecStatement('git checkout --' . str_repeat(' %s', count($create_stack) + count($update_stack) + count($delete_stack)) . ' 2>&1', array_merge($create_stack, $update_stack, $delete_stack))
+ );
+
+ $err = 1;
+ $trial_threshold = 3;
+ $output = array();
+ for ($trial = 0; $err != 0 && $trial < $trial_threshold; ++$trial) {
+ array_push($output, "git revert trial #$trial\n");
+ SaferExec::execMulti($commands, $output, $err); // if no err, err = 0
+ if ($err == 0) array_push($output, "Success.\n");
+ }
+
+ return array('err' => $err, 'output' => $output);
+ }
+}
+
+?>
diff --git a/php/LogManager.php b/php/LogManager.php
index d3ce00e9..10d3bd10 100644
--- a/php/LogManager.php
+++ b/php/LogManager.php
@@ -1,6 +1,5 @@
$original_revision,
"en_revision" => $new_en_revision,
"maintainer" => $new_maintainer,
- "fileModifiedEN" => ( $isModifiedEN ) ? '{"user":"'.$isModifiedEN["user"].'", "anonymousIdent":"'.$isModifiedEN["anonymousIdent"].'"}' : false,
+ "fileModifiedEN" => false,
"fileModifiedLang" => ( $isModifiedLang ) ? '{"user":"'.$isModifiedLang["user"].'", "anonymousIdent":"'.$isModifiedLang["anonymousIdent"].'"}' : false
);
} else {
@@ -387,7 +384,7 @@ public function getPendingReview()
$temp['reviewed'] = $new_reviewed;
$temp['maintainer'] = $new_maintainer;
- $temp['fileModifiedEN'] = ( $isModifiedEN ) ? '{"user":"'.$isModifiedEN["user"].'", "anonymousIdent":"'.$isModifiedEN["anonymousIdent"].'"}' : false;
+ $temp['fileModifiedEN'] = false;
$temp['fileModifiedLang'] = ( $isModifiedLang ) ? '{"user":"'.$isModifiedLang["user"].'", "anonymousIdent":"'.$isModifiedLang["anonymousIdent"].'"}' : false;
} else {
$temp['reviewed'] = $a->reviewed;
diff --git a/php/RepositoryManager.php b/php/RepositoryManager.php
index 2df1a1ca..443e56b3 100644
--- a/php/RepositoryManager.php
+++ b/php/RepositoryManager.php
@@ -1,14 +1,5 @@
lock()) {
// exec the checkout
$rtn = VCSFactory::getInstance()->checkout();
@@ -173,126 +165,7 @@ public function cleanUpBeforeCheckBuild()
}
- /**
- * Update a single folder of the repository to sync our local copy.
- */
- public function updateFolder($path)
- {
- $rf = RepositoryFetcher::getInstance();
- $am = AccountManager::getInstance();
- $project = $am->project;
-
- // We reset the session var
- unset($_SESSION['updateFolder']['newFolders']);
- unset($_SESSION['updateFolder']['newFiles']);
-
- // We search for the first folder ; can be en/ LANG/ or doc-base/ for example
- $t = explode("/", $path);
- $firstFolder = $t[1];
-
- array_shift($t);
- array_shift($t);
-
- $pathWithoutLang = '/' . implode("/", $t).'/';
-
- // If we are in the root folder, we have //. We must consider this case.
- if( $pathWithoutLang == '//' ) { $pathWithoutLang = '/'; }
-
- if( $firstFolder == "" ) {
- $firstFolder = 'root';
- }
-
- $lock = new LockFile('project_' . $project . '_' . $firstFolder . '_lock_update_folder');
-
- if ($lock->lock()) {
-
- if( $this->isValidLanguage($firstFolder) ) {
-
- // This is only for EN and LANG. For others, we don't make any version's comparaison.
- // We start be get files & folders in this folder to compare it after the update
- $actual = $rf->getFilesByDirectory($path);
- $actualFiles = $actualFolders = array();
- for( $i=0; $i < count($actual); $i++ ) {
- // We get files and folders
- if( $actual[$i]['type'] === 'folder' ) {
- $actualFolders[$actual[$i]['text']] = array( "name"=> $actual[$i]['text'] );
- } else {
- $actualFiles[$actual[$i]['text']] = array( "name"=> $actual[$i]['text'], "version"=> "" );
- }
- }
-
- // We get versions for this files
- while( list($k, $v) = each($actualFiles) ) {
-
- $file = new File($firstFolder, $pathWithoutLang.$k);
- $info = $file->getInfo();
- $actualFiles[$k]['version'] = $info['rev'];
-
- }
-
- }
-
- // We update the repository recursively
- VCSFactory::getInstance()->updateSingleFolder($path);
-
- if( $this->isValidLanguage($firstFolder) ) {
- // We throw the revCheck on this folder only if the langue is valide
- $this->applyRevCheck($pathWithoutLang, 'update', $firstFolder);
-
- // We get files under this folder to make comparaison after the update
- $now = $rf->getFilesByDirectory($path);
- $nowFiles = $nowFolders = array();
-
- for( $i=0; $i < count($now); $i++ ) {
- // We get all folders & files
- if( $now[$i]['type'] === 'folder' ) {
- $nowFolders[$now[$i]['text']] = array( "name"=> $now[$i]['text'] );
- } else {
- $nowFiles[$now[$i]['text']] = array( "name"=> $now[$i]['text'], "version"=> "" );
- }
- }
-
- // We get versions of this files
- while( list($k, $v) = each($nowFiles) )
- {
- $file = new File($firstFolder, $pathWithoutLang.$k);
- $info = $file->getInfo();
- $nowFiles[$k]['version'] = $info['rev'];
- }
-
- //~ debug(json_encode($nowFiles));
- //~ debug(json_encode($actualFiles));
-
- // We search for differences
- reset($nowFiles); reset($nowFolders);
- while( list($k, $v) = each($nowFiles) ) {
- // If the file exist before, and at the same version, we delete it from $nowFiles
- if( isset($actualFiles[$k] ) && $actualFiles[$k]['version'] == $v['version'] ) {
- unset($nowFiles[$k]);
- }
- }
- while( list($k, $v) = each($nowFolders) ) {
- // If the folder exist before, we delete it from $nowFolders
- if( isset($actualFolders[$k] ) ) {
- unset($nowFolders[$k]);
- }
- }
-
- // $nowFolders contains only new folders who don't exist before the update
- // and $nowFiles, new files who don't exist before the update or who the version have changed
-
- // We store this result in session to allow get it if this processus take more than 30 seconds (max execution time)
- $_SESSION['updateFolder']['newFolders'] = $nowFolders;
- $_SESSION['updateFolder']['newFiles'] = $nowFiles;
- }
-
- }
-
- $lock->release();
-
- return json_encode($_SESSION['updateFolder']);
- }
/**
@@ -823,6 +696,46 @@ public function addPendingDelete($file)
);
}
+ // not tested
+ public function fastUpdate()
+ {
+ if ($changed_files = VCSFactory::getInstance()->fastUpdate()) {
+
+ foreach (array_merge($changed_files['create'], $changed_files['update']) as $path) {
+ $path = explode('/', $path, 2);
+ $file = new File($path[0], $path[1]);
+
+
+ $tmp = Array($file);
+ $this->delWork($tmp);
+
+ // We must now insert information into the app for this file
+ $this->addFileInfo($tmp);
+ }
+ foreach ($changed_files['update'] as $path) {
+ $path = explode('/', $path, 2);
+ $file = new File($path[0], $path[1]);
+
+ // Delete from work table
+ $tmp = Array($file);
+ $this->delWork($tmp);
+
+ // We must now update information into the app for this file
+ $this->updateFileInfo($tmp);
+ }
+ foreach ($changed_files['delete'] as $path) {
+ $path = explode('/', $path, 2);
+ $file = new File($path[0], $path[1]);
+
+ // Delete this new file from the fileSystem
+ @unlink($file->full_new_path);
+
+ // Delete from work table
+ $this->delWork(array($file));
+ }
+ }
+ }
+
/**
* Update the VCS for each file we try to commit before start the commit processus.
* As it, we ensure all VCS conflict.
@@ -833,135 +746,59 @@ public function addPendingDelete($file)
*/
public function beforeCommitChanges($files, $type)
{
- $am = AccountManager::getInstance();
- $appConf = $am->appConf;
- $project = $am->project;
-
$stack = Array();
- switch($type) {
-
- case 'new' :
-
- // For new files, we must ensure that this file is steel non exist into the repository before commit it.
- for( $i=0; $i < count($files); $i++ ) {
-
- VCSFactory::getInstance()->updateSingleFile($files[$i]);
-
- if( $files[$i]->exist() ) {
-
- // This file exist in the repository ! We can't commit it as a new file now.
- // We must update this file into the app, and suppress it from this commit process
-
- // Delete this new file from the fileSystem
-//~ @unlink($files[$i]->full_path.'.new');
-
- // Delete from work table
- $tmp = Array($files[$i]);
-
- // exclude from commit
- $this->delWork($tmp);
-
- // We must now update information into the app for this new file
- $this->updateFileInfo($tmp);
-
- } else {
- // This file still not exist in current respository, we can commit it
- $stack[] = $files[$i];
- }
-
- }
-
- break;
-
- case 'update' :
-
- // For update files, we must ensure that this file haven't been modified since last big update
- for( $i=0; $i < count($files); $i++ ) {
-
- // We get the filemtime for this file to compare with the filemtime after the update.
- $oldTime = filemtime($files[$i]->full_path);
-
- VCSFactory::getInstance()->updateSingleFile($files[$i]);
-
- if( $files[$i]->exist() ) {
-
- // If this file haven't been deleted since last update
- $newTime = filemtime($files[$i]->full_path);
-
+ if ($files) {
+ switch($type) {
- if( $newTime != $oldTime ) {
+ case 'new' :
- // This file have been modified since last update.
- // We can't commit our change, otherwise this file will be marked as conflict
- // We just update the info for this file and skip it from this commit
-
- $tmp = array($files[$i]);
-
- // exclude from commit
- $this->delWork($tmp);
-
- // We must now update information into the app for this file
- $this->updateFileInfo($tmp);
-
- } else {
-
- // This file haven't been modified since last update.
- // We can continue the commit processus for it
+ // For new files, we must ensure that this file is steel non exist into the repository before commit it.
+ for( $i=0; $i < count($files); $i++ ) {
+ if( !$files[$i]->exist() ) {
+ // This file still not exist in current respository, we can commit it
$stack[] = $files[$i];
-
}
-
- } else {
-
- // Here, we try to update a file which have been deleted since last update
- // We delete our .new, and remove all reference for it from the DB
-
- // Delete this new file from the fileSystem
- @unlink($files[$i]->full_new_path);
-
- // Delete from work table
- $this->delWork(array($files[$i]));
-
}
- }
-
- break;
-
- case 'delete' :
+ break;
- // For deleted files, we must ensure that this file is steel exist into the repository before commit it.
- for( $i=0; $i < count($files); $i++ ) {
+ case 'update' :
- VCSFactory::getInstance()->updateSingleFile($files[$i]);
+ // For update files, we must ensure that this file haven't been modified since last big update
+ for( $i=0; $i < count($files); $i++ ) {
- if( $files[$i]->exist() ) {
-
- // This file still exists in current respository, we can commit it for delete
- $stack[] = $files[$i];
+ // We get the filemtime for this file to compare with the filemtime after the update.
+ $oldTime = filemtime($files[$i]->full_path);
+ if( $files[$i]->exist() ) {
+ // If this file haven't been deleted since last update
+ $newTime = filemtime($files[$i]->full_path);
+ if( $newTime == $oldTime ) {
+ // This file haven't been modified since last update.
+ // We can continue the commit processus for it
+ $stack[] = $files[$i];
+ }
+ }
- } else {
+ }
- // This file don't exist in the repository ! We can't commit it as a deleted file now.
- // We must update this file into the app, and suppress it from this commit process
+ break;
- // Delete from work table
- $tmp = array($files[$i]);
+ case 'delete' :
- // exclude from commit
- $this->delWork($tmp);
+ // For deleted files, we must ensure that this file is steel exist into the repository before commit it.
+ for( $i=0; $i < count($files); $i++ ) {
- // Remove this files from db
- $this->delFiles($tmp);
+ if( $files[$i]->exist() ) {
+ // This file still exists in current respository, we can commit it for delete
+ $stack[] = $files[$i];
+ }
}
- }
-
- break;
-
+ break;
+ }
}
return $stack;
@@ -1140,7 +977,8 @@ public function commitChanges($ids, $log)
}
}
- // Before commit, we need to update this file to find if there haven't been modified since last update process
+ // Before commit, we need to update all files and find if there haven't been modified since last update process
+ $this->fastUpdate();
$create_stack = $this->beforeCommitChanges($create_stack, 'new');
$update_stack = $this->beforeCommitChanges($update_stack, 'update');
$delete_stack = $this->beforeCommitChanges($delete_stack, 'delete');
@@ -1277,8 +1115,6 @@ public function clearLocalChange($type, $file)
$am = AccountManager::getInstance();
$appConf = $am->appConf;
$project = $am->project;
- $vcsLogin = $am->vcsLogin;
- $anonymousIdent = $am->anonymousIdent;
$lang = $file->lang;
$path = $file->path;
@@ -1588,7 +1424,169 @@ public function updateFileInfo($files)
}
}
}
+ public function addFileInfo($files)
+ {
+
+ $am = AccountManager::getInstance();
+ foreach ($files as $file) {
+
+ $info = $file->getInfo();
+ $size = intval(filesize($file->full_path) / 1024);
+ $date = filemtime($file->full_path);
+
+ if ($file->lang == 'en') { // en file
+ // update EN file info
+ $s = 'INSERT INTO `files`
+ SET
+ `xmlid` = "%s",
+ `revision` = "%s",
+ `size` = "%s",
+ `mdate` = "%s",
+ `project` = "%s",
+ `lang` = "%s",
+ `path` = "%s",
+ `name` = "%s"';
+ $params = array(
+ $info['xmlid'], $info['rev'], $size, $date, $am->project, $file->lang, $file->path, $file->name
+ );
+ $this->conn->query($s, $params);
+
+ // update LANG file info
+ $s = 'UPDATE `files`
+ SET
+ `en_revision` = "%s"
+ WHERE
+ `project` = "%s" AND
+ `lang` != "%s" AND
+ `path` = "%s" AND
+ `name` = "%s"';
+ $params = array(
+ $info['rev'], $am->project, $file->lang, $file->path, $file->name
+ );
+ $this->conn->query($s, $params);
+
+ } else { // lang file
+
+ // If this file don't exist in EN, we should skip all this proces
+ $en = new File('en', $file->path.$file->name);
+
+ if( $en->exist() ) {
+
+ $enInfo = $en->getInfo();
+
+ $sizeEN = intval(filesize($en->full_path) / 1024);
+ $dateEN = filemtime($en->full_path);
+
+ $size_diff = $sizeEN - $size;
+ $date_diff = (intval((time() - $dateEN) / 86400))
+ - (intval((time() - $date) / 86400));
+
+ // update LANG file info
+ $s = 'INSERT INTO `files`
+ SET
+ `xmlid` = "%s",
+ `revision` = "%s",
+ `en_revision`= "%s",
+ `reviewed` = "%s",
+ `reviewed_maintainer` = "%s",
+ `size` = "%s",
+ `mdate` = "%s",
+ `maintainer` = "%s",
+ `status` = "%s",
+ `size_diff` = "%s",
+ `mdate_diff` = "%s",
+ `project` = "%s",
+ `lang` = "%s",
+ `path` = "%s",
+ `name` = "%s"';
+ $params = array(
+ $info['xmlid'],
+ $info['en-rev'],
+ $enInfo['rev'],
+ trim($info['reviewed']),
+ trim($info['reviewed_maintainer']),
+ $size,
+ $date,
+ trim($info['maintainer']),
+ trim($info['status']),
+ $size_diff,
+ $date_diff,
+ $am->project,
+ $file->lang,
+ $file->path,
+ $file->name
+ );
+ $this->conn->query($s, $params);
+
+ // Run the errorTools under this file
+ $tmpFile[0]['en_content'] = $en->read(true);
+ $tmpFile[0]['lang_content'] = $file->read(true);
+ $tmpFile[0]['lang'] = $file->lang;
+ $tmpFile[0]['path'] = $file->path;
+ $tmpFile[0]['name'] = $file->name;
+ $tmpFile[0]['maintainer'] = $info['maintainer'];
+
+ $errorTools = new ToolsError();
+ $errorTools->updateFilesError($tmpFile);
+
+ } else // This file exist only in LANG version, like translation.xml, for example
+ {
+
+ // update LANG file info
+ $s = 'INSERT INTO `files`
+ SET
+ `xmlid` = "%s",
+ `revision` = "%s",
+ `en_revision`= "%s",
+ `reviewed` = "%s",
+ `reviewed_maintainer` = "%s",
+ `size` = "%s",
+ `mdate` = "%s",
+ `maintainer` = "%s",
+ `status` = "%s",
+ `size_diff` = "%s",
+ `mdate_diff` = "%s",
+ `project` = "%s",
+ `lang` = "%s",
+ `path` = "%s",
+ `name` = "%s"';
+ $params = array(
+ $info['xmlid'],
+ $info['en-rev'],
+ 0,
+ trim($info['reviewed']),
+ trim($info['reviewed_maintainer']),
+ $size,
+ $date,
+ trim($info['maintainer']),
+ trim($info['status']),
+ 0,
+ 0,
+ $am->project,
+ $file->lang,
+ $file->path,
+ $file->name
+ );
+ $this->conn->query($s, $params);
+
+ // Run the errorTools under this file
+ // If the EN file don't exist, it's because we have a file witch only exist into LANG, for example, translator.xml
+ // We fake the EN with the LANG content to fake the errorTools ;)
+ $tmpFile[0]['en_content'] = $file->read(true);
+ $tmpFile[0]['lang_content'] = $file->read(true);
+ $tmpFile[0]['lang'] = $file->lang;
+ $tmpFile[0]['path'] = $file->path;
+ $tmpFile[0]['name'] = $file->name;
+ $tmpFile[0]['maintainer'] = $info['maintainer'];
+
+ $errorTools = new ToolsError();
+ $errorTools->updateFilesError($tmpFile);
+
+ }
+ }
+ }
+ }
/**
* Read the translation's file which hold informations about all translators
* and put it into database.
diff --git a/php/SaferExec.php b/php/SaferExec.php
index efd7bb5f..2329f981 100644
--- a/php/SaferExec.php
+++ b/php/SaferExec.php
@@ -35,51 +35,4 @@ public static function execMulti(array $command_array, &$output = array(), &$ret
}
}
-class ExecStatement
-{
- private $command;
- private $args;
-
- /**
- * Represents a shell command to be executed.
- *
- * The first parameter, $command, should be a format string (eg: the kind of string you pass to printf).
- * The directives in that string should correspond to the arguments passed as part of the second parameter, the $args array.
- *
- * The assumptions about security made here only holds when $command is a static string. If $command is
- * even partly derived from user input, any assumptions made about safety and security no longer hold.
- */
- public function __construct($command, array $args = array())
- {
- $this->command = $command;
-
- // We validate and escape certain types of input.
- $this->args = array();
- foreach ($args as $key => $val)
- {
- if (is_bool($val) || is_float($val) || is_int($val) || is_null($val))
- $this->args[$key] = $val;
- else if (is_string($val))
- $this->args[$key] = escapeshellarg($val);
- else if (is_object($val))
- $this->args[$key] = escapeshellarg($val->__toString());
- else
- trigger_error('Argument with unexpected type used to construct ExecStatement. It has been omitted from the command string.', E_USER_WARNING);
- }
- }
- public function getCommand()
- {
- return $this->command;
- }
-
- public function getArgs()
- {
- return $this->args;
- }
-
- public function __toString()
- {
- return vsprintf($this->getCommand(), $this->getArgs());
- }
-}
diff --git a/php/SvnClient.php b/php/SvnClient.php
index 2ca71692..2dd6cc9d 100644
--- a/php/SvnClient.php
+++ b/php/SvnClient.php
@@ -1,6 +1,5 @@
conn->query($s, $params);
-
+ $result = array();
while( $r = $res->fetch_array() ) {
$result[$r['lang']]['total'] = $r['total'];
$result[$r['lang']]['total_size'] = $r['total_size'];
@@ -93,7 +89,7 @@ public function getTransFileCount($lang='all')
`files`
WHERE
`revision` = `en_revision` AND
- `revision` != 0 AND
+ `revision` != "0" AND
`project` = "%s"
GROUP BY `lang`';
$params = array($project);
@@ -107,7 +103,7 @@ public function getTransFileCount($lang='all')
WHERE
`lang` = "%s" AND
`revision` = `en_revision` AND
- `revision` != 0 AND
+ `revision` != "0" AND
`project` = "%s"';
$params = array($lang, $project);
}
@@ -273,7 +269,7 @@ public function computeSummary($lang='all')
$summary[0]['nbFiles'] = ( isset($uptodate[$lang]['total']) ) ? $uptodate[$lang]['total'] : 0;
$summary[0]['percentFiles'] = ( isset($uptodate[$lang]['total']) ) ? round(($uptodate[$lang]['total']*100)/$nbFiles[$lang]['total'], 2) : 0;
$summary[0]['sizeFiles'] = ( !isset($uptodate[$lang]['total_size']) ) ? 0 : $uptodate[$lang]['total_size'];
- $summary[0]['percentSize'] = (!isset($uptodate[$lang]['total_size'])) ? 0 : round(($uptodate[$lang]['total_size']*100)/$nbFiles[$lang]['total_size'], 2);
+ $summary[0]['percentSize'] = (!isset($uptodate[$lang]['total_size']) || $uptodate[$lang]['total_size'] == 0 ) ? 0 : round(($uptodate[$lang]['total_size']*100)/$nbFiles[$lang]['total_size'], 2);
$summary[1]['id'] = 2;
$summary[1]['libel'] = 'Stale files';
diff --git a/php/TranslatorStatistic.php b/php/TranslatorStatistic.php
index 6a155925..cf3de00d 100644
--- a/php/TranslatorStatistic.php
+++ b/php/TranslatorStatistic.php
@@ -1,8 +1,5 @@
appConf;
if (!isset(self::$instance)) {
+ $appConf = AccountManager::getInstance()->appConf;
switch ($appConf['GLOBAL_CONFIGURATION']['vcs.type']) {
+ case 'git':
+ self::$instance = GitClient::getInstance();
+ break;
case 'cvs':
- require_once dirname(__FILE__) . '/CvsClient.php';
self::$instance = CvsClient::getInstance();
break;
case 'svn':
- require_once dirname(__FILE__) . '/SvnClient.php';
self::$instance = SvnClient::getInstance();
break;
}
diff --git a/php/conf/project.php.ini b/php/conf/project.php.ini
index f661983a..e7b019c9 100644
--- a/php/conf/project.php.ini
+++ b/php/conf/project.php.ini
@@ -17,15 +17,13 @@ project.langadmin.de = "nikic"
project.langadmin.ar = "visualmind"
project.langadmin.pt_BR = "klaussilveira"
-vcs.server.host = "svn.php.net"
-vcs.server.repos = "repository/"
-vcs.server.path = "repository/phpdoc/modules/doc-all/"
-vcs.server.port = 443
+; need to change this in local.php.ini
+vcs.server = "https://specialLogin:specialPass@git.php.net/push/playground.git/"
vcs.anon.login =
vcs.anon.passwd =
-vcs.module = "phpdoc-all"
+vcs.module = "phpdoc"
vcs.karma.file = "https://svn.php.net/viewvc/SVNROOT/global_avail?view=co"
vcs.path = "{GLOBAL_CONFIGURATION['data.path']}{PHP['vcs.module']}/"
diff --git a/php/controller.php b/php/controller.php
index e9190c6c..003bc6d2 100755
--- a/php/controller.php
+++ b/php/controller.php
@@ -7,8 +7,7 @@
error_reporting(E_ALL);
set_time_limit(0);
-require_once "./ExtJsController.php";
-require_once "./JsonResponseBuilder.php";
+require_once __DIR__.'/loader.php';
$controller = new ExtJsController(array_merge($_GET, $_POST));
diff --git a/php/loader.php b/php/loader.php
new file mode 100755
index 00000000..439c71f0
--- /dev/null
+++ b/php/loader.php
@@ -0,0 +1,12 @@
+
\ No newline at end of file
diff --git a/php/utility.php b/php/utility.php
index 76e7eabe..35208f86 100644
--- a/php/utility.php
+++ b/php/utility.php
@@ -1,6 +1,5 @@