MWF.xDesktop.requireApp("File","Actions.RestActions",null,false);MWF.xDesktop.requireApp("File","AttachmentController",null,false);MWF.require("MWF.widget.Tree",null,false);MWF.xApplication.File.Main=new Class({Extends:MWF.xApplication.Common.Main,Implements:[Options,Events],options:{style:"default",name:"File",icon:"icon.png",width:"1000",height:"600",title:MWF.xApplication.File.LP.title},onQueryLoad:function(){this.lp=MWF.xApplication.File.LP;this.restActions=MWF.Actions.get("x_file_assemble_control")},loadApplication:function(callback){this.history=[];this.currentHistory=1;this.currentFolder=null;MWF.getJSON("/x_component_File/$Main/icon.json",function(json){this.icons=json}.bind(this),false,false);this.createNode();this.loadApplicationContent();if(callback)callback()},createNode:function(){this.content.setStyle("overflow","hidden");this.node=new Element("div",{styles:{width:"100%",height:"100%",overflow:"hidden"}}).inject(this.content)},loadApplicationContent:function(){this.loadTop();this.fileContentNode=new Element("div",{styles:this.css.fileContentNode}).inject(this.node);this.folderContentNode=new Element("div",{styles:this.css.folderContentNode}).inject(this.fileContentNode);this.attachmentContentNode=new Element("div",{styles:this.css.attachmentContentNode}).inject(this.fileContentNode);this.resizeContentNode=new Element("div",{styles:this.css.resizeContentNode}).inject(this.folderContentNode);this.folderTreeAreaNode=new Element("div",{styles:this.css.folderTreeAreaNode}).inject(this.folderContentNode);this.folderTreeAreaScrollNode=new Element("div",{styles:this.css.folderTreeAreaScrollNode}).inject(this.folderContentNode);this.shareTreeAreaScrollNode=new Element("div",{styles:this.css.folderTreeAreaScrollNode}).inject(this.folderContentNode);this.editorTreeAreaScrollNode=new Element("div",{styles:this.css.folderTreeAreaScrollNode}).inject(this.folderContentNode);this.loadFileContentAreaNode();this.loadFolderTreeNode();this.loadShareTreeNode();this.loadEditorTreeNode();this.shareTree.loadCallback=function(){if(this.shareTab.isShow){if(this.status){if(this.status.node){var found=false;for(var i=0;ibodySize.x/2)width=bodySize.x/2;if(width<200)width=200;this.attachmentContentNode.setStyle("margin-left",width);this.folderContentNode.setStyle("width",width)}.bind(this)});MWF.require("MWF.widget.Tab",function(){this.treeTab=new MWF.widget.Tab(this.folderTreeAreaNode,{style:"processlayout"});this.treeTab.load();this.fileTabe=this.treeTab.addTab(this.folderTreeAreaScrollNode,this.lp.myFiles,false);this.shareTab=this.treeTab.addTab(this.shareTreeAreaScrollNode,this.lp.shareFiles,false);this.editorTab=this.treeTab.addTab(this.editorTreeAreaScrollNode,this.lp.editorFiles,false);this.fileTabe.addEvent("show",function(){if(this.folderTree.currentNode){this.folderTree.currentNode.clickNode()}else{if(this.folderTree.firstChild){this.folderTree.firstChild.clickNode()}else{if(this.controller)this.controller.clear()}}this.checkControllerActionsFile()}.bind(this));this.shareTab.addEvent("show",function(){if(this.shareTree.currentNode){this.shareTree.currentNode.clickNode()}else{if(this.shareTree.firstChild){this.shareTree.firstChild.clickNode()}else{if(this.controller)this.controller.clear()}}this.checkControllerActionsShare()}.bind(this));this.editorTab.addEvent("show",function(){if(this.editorTree.currentNode){this.editorTree.currentNode.clickNode()}else{if(this.editorTree.firstChild){this.editorTree.firstChild.clickNode()}else{if(this.controller)this.controller.clear()}}this.checkControllerActionsEditor()}.bind(this));var tabName="file";if(this.status){if(this.status.tab){tabName=this.status.tab}}if(tabName=="file")this.fileTabe.showIm();if(tabName=="share")this.shareTab.showIm();if(tabName=="editor")this.editorTab.showIm();this.setContentHeight();this.addEvent("resize",function(){this.setContentHeight()}.bind(this))}.bind(this));MWF.require("MWF.widget.ScrollBar",function(){new MWF.widget.ScrollBar(this.folderTreeAreaScrollNode,{style:"xApp_Organization_Explorer",where:"before",distance:100,friction:4,axis:{x:false,y:true}});new MWF.widget.ScrollBar(this.shareTreeAreaScrollNode,{style:"xApp_Organization_Explorer",where:"before",distance:100,friction:4,axis:{x:false,y:true}});new MWF.widget.ScrollBar(this.editorTreeAreaScrollNode,{style:"xApp_Organization_Explorer",where:"before",distance:100,friction:4,axis:{x:false,y:true}})}.bind(this))},checkControllerActionsFile:function(){this.controller.folderActionBoxNode.setStyle("display","block");this.controller.uploadAction.setStyle("display","block");this.controller.deleteAction.setStyle("display","block");this.controller.replaceAction.setStyle("display","block");this.controller.editActionSeparateNode.setStyle("display","block");this.controller.shareActionBoxNode.setStyle("display","block")},checkControllerActionsShare:function(){this.controller.folderActionBoxNode.setStyle("display","none");this.controller.uploadAction.setStyle("display","none");this.controller.deleteAction.setStyle("display","none");this.controller.replaceAction.setStyle("display","none");this.controller.editActionSeparateNode.setStyle("display","none");this.controller.shareActionBoxNode.setStyle("display","none")},checkControllerActionsEditor:function(){this.controller.folderActionBoxNode.setStyle("display","none");this.controller.uploadAction.setStyle("display","none");this.controller.deleteAction.setStyle("display","none");this.controller.replaceAction.setStyle("display","block");this.controller.editActionSeparateNode.setStyle("display","block");this.controller.shareActionBoxNode.setStyle("display","none")},loadTop:function(){this.topNode=new Element("div",{styles:this.css.topNode}).inject(this.node);this.leftNode=new Element("div",{styles:this.css.leftNode}).inject(this.topNode);this.leftNode.addEvent("click",function(){this.leftPath()}.bind(this));this.rightNode=new Element("div",{styles:this.css.rightNode}).inject(this.topNode);this.rightNode.addEvent("click",function(){this.rightPath()}.bind(this));this.refreshNode=new Element("div",{styles:this.css.refreshNode}).inject(this.topNode);this.searchNode=new Element("div",{styles:this.css.searchNode}).inject(this.topNode);this.pathNode=new Element("div",{styles:this.css.pathNode}).inject(this.topNode)},openAttachment:function(e,node,attachment){this.restActions.getFileUrl(attachment[0].data.id,function(url){window.open(url)})},downloadAttachment:function(e,node,attachments){attachments.each(function(attachment){this.restActions.getFileDownloadUrl(attachment.data.id,function(url){window.open(url)})}.bind(this))},downloadCurrentFile:function(){if(this.selectedItem){if(this.selectedItem.type=="file"){this.selectedItem.open()}}},moveFileFolder:function(){},renameFileFolder:function(){this.content.mask({style:{opacity:.7,"background-color":"#999"}});var renameNode=new Element("div",{styles:this.css.createFolderNode}).inject(this.content);renameNode.position({relativeTo:this.node,position:"center"});var item=this.controller.selectedAttachments[0];var treeNode=item.treeNode;var titleNode=new Element("div",{styles:this.css.createFolderTitleNode,text:this.lp.rename}).inject(renameNode);var inforNode=new Element("div",{styles:this.css.createFolderInforNode,text:this.lp.inputName}).inject(renameNode);var inputAreaNode=new Element("div",{styles:this.css.createFolderInputAreaNode}).inject(renameNode);var inputNode=new Element("input",{type:"text",styles:this.css.createFolderInputNode,value:item.data.name}).inject(inputAreaNode);var actionNode=new Element("div",{styles:this.css.createFolderActionNode}).inject(renameNode);var cancelButton=new Element("button",{styles:this.css.createFolderCancelButton,text:this.lp.cancel}).inject(actionNode);var okButton=new Element("button",{styles:this.css.createFolderOkButton,text:this.lp.ok}).inject(actionNode);cancelButton.addEvent("click",function(){this.content.unmask();renameNode.destroy()}.bind(this));okButton.addEvent("click",function(){if(inputNode.get("value")){item.data.name=inputNode.get("value");if(item.type=="folder"){this.restActions.saveFolder(item.data,function(json){if(this.currentFolder){this.currentFolder.clickNode()}else{this.topTreeNode.clickNode()}treeNode.setText(inputNode.get("value"))}.bind(this))}else{this.restActions.updateAttachment(this.controller.selectedAttachments[0].data.id,this.controller.selectedAttachments[0].data,function(json){if(this.currentFolder){this.currentFolder.clickNode()}else{this.topTreeNode.clickNode()}}.bind(this))}renameNode.destroy();this.content.unmask()}else{this.notice(this.lp.nameNotEmpty,"error",renameNode)}}.bind(this))},deleteAttachments:function(e,node,attachments){this.deleteFileFolder(e,attachments)},deleteFileFolder:function(e,attachments){if(attachments.length){var _self=this;var title=this.lp.deleteFolderFilesTitle;var content=this.lp.deleteFolderFiles;if(attachments.length==1){var title=attachments[0].type=="folder"?this.lp.deleteFolderTitle:this.lp.deleteFileTitle;var content=attachments[0].type=="folder"?this.lp.deleteFolder:this.lp.deleteFile;content=content+"("+attachments[0].data.name+")"}var size=this.node.getSize();var ep={event:{x:(size.x-300)/2,y:(size.y-120)/2}};this.confirm("infor",ep,title,content,300,120,function(){var count=attachments.length;var current=0;var callback=function(){if(current==count){if(this.currentFolder){this.currentFolder.loaded=false;this.currentFolder.clickNode()}else{this.topTreeNode.loaded=false;this.topTreeNode.clickNode()}}};attachments.each(function(att){if(att.type=="folder"){att.treeNode.destroy();_self.restActions.deleteFolder(att.data.id,function(){current++;callback.apply(_self)})}else{_self.restActions.deleteFile(att.data.id,function(){current++;callback.apply(_self)})}});this.close()},function(){this.close()})}},shareAttachment:function(){this.shareFile()},shareFile:function(){this.content.mask({style:{opacity:.7,"background-color":"#999"}});var shareNode=new Element("div",{styles:this.css.createFolderNode}).inject(this.content);shareNode.position({relativeTo:this.node,position:"center"});var titleNode=new Element("div",{styles:this.css.createFolderTitleNode,text:this.lp.shareFile}).inject(shareNode);var inforNode=new Element("div",{styles:this.css.createFolderInforNode,text:this.lp.selectShareUser}).inject(shareNode);var inputAreaNode=new Element("div",{styles:this.css.createFolderInputAreaNode}).inject(shareNode);var inputNode=new Element("div",{type:"text",readonly:true,styles:this.css.shareFileInputNode}).inject(inputAreaNode);debugger;inputNode.addEvent("click",function(){MWF.xDesktop.requireApp("Selector","Person",function(){var selector=new MWF.xApplication.Selector.Person(this.node,{onComplete:function(items){MWF.require("MWF.widget.O2Identity",function(){var names=[];var texts=[];inputNode.empty();items.each(function(item){names.push(item.data.distinguishedName);texts.push(item.data.name);new MWF.widget.O2Person({name:item.data.distinguishedName},inputNode,{style:"xform"})});inputNode.store("texts",texts);inputNode.set("value",names.join(", "))}.bind(this))}.bind(this)});selector.load()}.bind(this))}.bind(this));var actionNode=new Element("div",{styles:this.css.createFolderActionNode}).inject(shareNode);var cancelButton=new Element("button",{styles:this.css.createFolderCancelButton,text:this.lp.cancel}).inject(actionNode);var okButton=new Element("button",{styles:this.css.createFolderOkButton,text:this.lp.ok}).inject(actionNode);cancelButton.addEvent("click",function(){this.content.unmask();shareNode.destroy()}.bind(this));okButton.addEvent("click",function(){var count=this.controller.selectedAttachments.length;var current=0;var callback=function(){if(current===count){if(inputNode.get("value"))this.notice(this.lp.fileShareSuccess+inputNode.retrieve("texts",[]).join(","),"success",this.content);shareNode.destroy();this.content.unmask()}};this.controller.selectedAttachments.each(function(att){if(att.type!="folder"){att.data.shareList=inputNode.get("value").split(/,\s*/g);this.restActions.updateAttachment(att.data.id,att.data,function(json){current++;callback.apply(this)}.bind(this))}else{current++;callback.apply(this)}}.bind(this))}.bind(this))},sendAttachment:function(){this.sendFile()},sendFile:function(){this.content.mask({style:{opacity:.7,"background-color":"#999"}});var shareNode=new Element("div",{styles:this.css.createFolderNode}).inject(this.content);shareNode.position({relativeTo:this.node,position:"center"});var titleNode=new Element("div",{styles:this.css.createFolderTitleNode,text:this.lp.sendFile}).inject(shareNode);var inforNode=new Element("div",{styles:this.css.createFolderInforNode,text:this.lp.selectSendUser}).inject(shareNode);var inputAreaNode=new Element("div",{styles:this.css.createFolderInputAreaNode}).inject(shareNode);var inputNode=new Element("div",{type:"text",readonly:true,styles:this.css.shareFileInputNode}).inject(inputAreaNode);inputNode.addEvent("click",function(){MWF.xDesktop.requireApp("Selector","Person",function(){var selector=new MWF.xApplication.Selector.Person(this.node,{onComplete:function(items){MWF.require("MWF.widget.O2Identity",function(){var names=[];var texts=[];inputNode.empty();items.each(function(item){names.push(item.data.distinguishedName);texts.push(item.data.name);new MWF.widget.O2Person({name:item.data.distinguishedName},inputNode,{style:"xform"})});inputNode.store("texts",texts);inputNode.set("value",names.join(", "))}.bind(this))}.bind(this)});selector.load()}.bind(this))}.bind(this));var actionNode=new Element("div",{styles:this.css.createFolderActionNode}).inject(shareNode);var cancelButton=new Element("button",{styles:this.css.createFolderCancelButton,text:this.lp.cancel}).inject(actionNode);var okButton=new Element("button",{styles:this.css.createFolderOkButton,text:this.lp.ok}).inject(actionNode);cancelButton.addEvent("click",function(){this.content.unmask();shareNode.destroy()}.bind(this));okButton.addEvent("click",function(){var count=this.controller.selectedAttachments.length;var current=0;var callback=function(){if(current==count){if(inputNode.get("value"))this.notice(this.lp.fileSendSuccess+inputNode.retrieve("texts",[]).join(","),"success",this.content);shareNode.destroy();this.content.unmask()}};this.controller.selectedAttachments.each(function(att){if(att.type!="folder"){att.data.editorList=inputNode.get("value").split(/,\s*/g);this.restActions.updateAttachment(att.data.id,att.data,function(json){current++;callback.apply(this)}.bind(this))}else{current++;callback.apply(this)}}.bind(this))}.bind(this))},uploadAttachment:function(e,node){debugger;folderId=this.currentFolder&&this.currentFolder.data?this.currentFolder.data.id:"";this.controller.doUploadAttachment(null,this.restActions.action,"addAttachment",{folder:folderId||"(0)"},function(){if(this.currentFolder){this.currentFolder.clickNode()}else{this.topTreeNode.clickNode()}}.bind(this))},replaceAttachment:function(e,node,attachment){var fileId=attachment.data.id;debugger;this.controller.doReplaceAttachment(null,this.restActions.action,"updateAttachmentData",{id:fileId},function(){if(this.currentFolder){this.currentFolder.clickNode()}else{this.topTreeNode.clickNode()}}.bind(this))},createFolder:function(){this.content.mask({style:{opacity:.7,"background-color":"#999"}});var createFolderNode=new Element("div",{styles:this.css.createFolderNode}).inject(this.content);createFolderNode.position({relativeTo:this.node,position:"center"});var titleNode=new Element("div",{styles:this.css.createFolderTitleNode,text:this.lp.createFolder}).inject(createFolderNode);var inforNode=new Element("div",{styles:this.css.createFolderInforNode,text:this.lp.inputFolderName}).inject(createFolderNode);var inputAreaNode=new Element("div",{styles:this.css.createFolderInputAreaNode}).inject(createFolderNode);var inputNode=new Element("input",{type:"text",styles:this.css.createFolderInputNode}).inject(inputAreaNode);var actionNode=new Element("div",{styles:this.css.createFolderActionNode}).inject(createFolderNode);var cancelButton=new Element("button",{styles:this.css.createFolderCancelButton,text:this.lp.cancel}).inject(actionNode);var okButton=new Element("button",{styles:this.css.createFolderOkButton,text:this.lp.ok}).inject(actionNode);cancelButton.addEvent("click",function(){this.content.unmask();createFolderNode.destroy()}.bind(this));okButton.addEvent("click",function(){if(inputNode.get("value")){var data={name:inputNode.get("value"),superior:this.currentFolder&&this.currentFolder.data?this.currentFolder.data.id:""};debugger;this.restActions.saveFolder(data,function(json){data.id=json.data.id;this.restActions.getFolder(data.id,function(folderJson){if(this.currentFolder){var json={data:[folderJson.data]};this.createTreeNode(json,this.currentFolder);this.currentFolder.clickNode()}else{this.topTreeNode.clickNode()}}.bind(this))}.bind(this));createFolderNode.destroy();this.content.unmask()}else{this.notice(this.lp.folderNameNotEmpty,"error",createFolderNode)}}.bind(this))},getAttachmentUrl:function(attachment,callback){this.restActions.getFileUrl(attachment.data.id,callback)},loadFolderTreeNode:function(){this.folderTreeNode=new Element("div",{styles:this.css.folderTreeNode}).inject(this.folderTreeAreaScrollNode);this.folderTree=new MWF.widget.Tree(this.folderTreeNode,{style:"file"});this.folderTree.load();var rootData={expand:false,title:"root",text:"root",action:function(treeNode){this.recordHistory(treeNode);this.expand(treeNode,function(){this.loadSub(treeNode)}.bind(this))}.bind(this),icon:"folder.png"};this.topTreeNode=this.folderTree.appendChild(rootData)},createShareTreeNode:function(json){json.data.each(function(data){var name=data.name.substring(0,data.name.indexOf("@"));var nodeData={expand:false,title:name+"("+data.count+")",text:name+"("+data.count+")",action:function(treeNode){this.loadShareFile(treeNode)}.bind(this),icon:"folder.png"};var treeNode=this.shareTree.appendChild(nodeData);treeNode.data=data}.bind(this))},loadShareTreeNode:function(){this.shareTreeNode=new Element("div",{styles:this.css.folderTreeNode}).inject(this.shareTreeAreaScrollNode);this.shareTree=new MWF.widget.Tree(this.shareTreeNode,{style:"file"});this.shareTree.load();this.restActions.listShare(function(json){this.createShareTreeNode(json);if(this.shareTree.loadCallback)this.shareTree.loadCallback.apply(this)}.bind(this),null,false)},loadShareFile:function(treeNode){var person=treeNode.data.name;this.restActions.listShareAttachment(person,function(json){this.controller.clear();json.data.each(function(file){this.controller.addAttachment(file)}.bind(this))}.bind(this))},createEditorTreeNode:function(json){json.data.each(function(data){var name=MWF.name.cn(data.name);var nodeData={expand:false,title:name+"("+data.count+")",text:name+"("+data.count+")",action:function(treeNode){this.loadEditorFile(treeNode)}.bind(this),icon:"folder.png"};var treeNode=this.editorTree.appendChild(nodeData);treeNode.data=data}.bind(this))},loadEditorTreeNode:function(){this.editorTreeNode=new Element("div",{styles:this.css.folderTreeNode}).inject(this.editorTreeAreaScrollNode);this.editorTree=new MWF.widget.Tree(this.editorTreeNode,{style:"file"});this.editorTree.load();this.restActions.listEditor(function(json){this.createEditorTreeNode(json);if(this.editorTree.loadCallback)this.editorTree.loadCallback.apply(this)}.bind(this),null,false)},loadEditorFile:function(treeNode){var person=treeNode.data.name;this.restActions.listEditorAttachment(person,function(json){this.controller.clear();json.data.each(function(file){this.controller.addAttachment(file)}.bind(this))}.bind(this))},loadFileContentAreaNode:function(){this.controller=new MWF.xApplication.File.AttachmentController(this.attachmentContentNode,this,{resize:false,isSizeChange:false});this.controller.load()},createTreeNode:function(json,topNode){json.data.each(function(data){var nodeData={expand:false,title:data.name,text:data.name,action:function(treeNode){this.recordHistory(treeNode);this.expand(treeNode,function(){this.loadSub(treeNode)}.bind(this))}.bind(this),icon:"folder.png"};var treeNode=topNode.appendChild(nodeData);treeNode.data=data}.bind(this))},loadFolderTree:function(node,callback){if(!node.loaded){node.loaded=true;if(node.data){this.restActions.listFolder(node.data.id,function(json){this.createTreeNode(json,node);node.setOperateIcon();if(callback)callback()}.bind(this),null,false)}else{this.restActions.listTopFolder(function(json){this.createTreeNode(json,node);node.setOperateIcon();if(callback)callback()}.bind(this),null,false)}}else{if(callback)callback()}},setContentHeight:function(node){var size=this.node.getSize();var tSize=this.topNode.getSize();var mtt=this.topNode.getStyle("margin-top").toFloat();var mbt=this.topNode.getStyle("margin-bottom").toFloat();var mtc=this.fileContentNode.getStyle("margin-top").toFloat();var mbc=this.fileContentNode.getStyle("margin-bottom").toFloat();var height=size.y-tSize.y-mtt-mbt-mtc-mbc;this.fileContentNode.setStyle("height",height);this.attachmentContentNode.setStyle("height",height);var attTopSzie=this.controller.topNode.getSize();var y=height-attTopSzie.y;this.controller.contentScrollNode.setStyle("height",""+y+"px");var tabSize=this.treeTab.tabNodeContainer.getSize();var height=height-tabSize.y;this.folderTreeAreaScrollNode.setStyle("height",height);this.shareTreeAreaScrollNode.setStyle("height",height);this.editorTreeAreaScrollNode.setStyle("height",height)},expand:function(treeNode,callback){if(!treeNode.options.expand){this.loadFolderTree(treeNode,function(){if(callback)callback()}.bind(this));this.folderTree.expand(treeNode);treeNode.options.expand=true;treeNode.setOperateIcon()}else{if(callback)callback()}},checkHistory:function(){if(this.history.length>1){if(this.currentHistory>0){this.enabledLeftNode()}else{this.disabledLeftNode()}if(this.currentHistory0){this.currentHistory--;var treeNode=this.history[this.currentHistory];if(treeNode){treeNode.selectNode();this.loadSub(treeNode);this.checkHistory()}}},rightPath:function(){if(this.currentHistory