| 1 |
- MWF.xApplication.IM.options.multitask=false;MWF.require("MWF.widget.Tree",null,false);MWF.xDesktop.requireApp("IM","Actions.RestActions",null,false);MWF.xApplication.IM.Main=new Class({Extends:MWF.xApplication.Common.Main,Implements:[Options,Events],options:{style:"default",name:"IM",icon:"icon.png",title:MWF.xApplication.IM.LP.title},onQueryLoad:function(){this.lp=MWF.xApplication.IM.LP;this.left=null;this.top=null;this.height=null;if(!this.userAction)this.userAction=new MWF.xApplication.IM.Actions.RestActions},loadWindow:function(t){this.fireAppEvent("queryLoadWindow");this.window=new MWF.xDesktop.WindowTransparent(this);this.fireAppEvent("loadWindow");this.window.show();this.content=this.window.content;if(t)this.setCurrent();this.fireAppEvent("postLoadWindow");this.fireAppEvent("queryLoadApplication");this.loadApplication(function(){this.fireAppEvent("postLoadApplication")}.bind(this))},loadApplication:function(t){this.node=new Element("div#IM",{styles:this.css.panelNode}).inject(this.content);this.titleNode=new Element("div",{styles:this.css.titleNode}).inject(this.node);this.userInforNode=new Element("div",{styles:this.css.userInforNode}).inject(this.node);this.userSearchNode=new Element("div",{styles:this.css.userSearchNode}).inject(this.node);this.userListNode=new Element("div",{styles:this.css.userListNode}).inject(this.node);this.userMenuNode=new Element("div",{styles:this.css.userMenuNode}).inject(this.node);this.createTitle();this.createUserInfor();this.createSearch();this.createUserList();this.setResizeEvent();this.checkPersonOnline();this.addEvent("queryClose",function(){if(this.checkPersonOnlineTimerID)window.clearInterval(this.checkPersonOnlineTimerID)}.bind(this))},checkPersonOnline:function(){this.checkPersonOnlineTimerID=window.setInterval(function(){if(this.onlineList)this.checkOnline(this.onlineList.personList);if(this.searchList)this.checkOnline(this.searchList.personList);if(this.chatList)this.checkOnline(this.chatList.personList)}.bind(this),2e4)},checkOnline:function(t){Object.each(t,function(t,e){this.userAction.personOnline(function(e){if(e.data.onlineStatus=="online"){t.online()}else{t.offline()}}.bind(this),null,t.data.name)}.bind(this))},setNodePosition:function(){if(this.top)this.node.setStyle("top",""+this.top+"px");if(this.left)this.node.setStyle("left",""+this.top+"px");if(this.height)this.node.setStyle("height",""+this.top+"px")},setResizeEvent:function(){this.setNodePositionAndSizeFun=this.setNodePositionAndSize.bind(this);this.setNodePositionAndSizeFun();this.addEvent("current",this.setNodePositionAndSizeFun);this.desktop.addEvent("resize",this.setNodePositionAndSizeFun);this.addEvent("postClose",function(){if(this.desktop)this.desktop.removeEvent("resize",this.setNodePositionAndSizeFun)}.bind(this))},setNodePositionAndSize:function(){this.setNodePosition();var t=this.desktop.desktopNode.getSize();var e=this.desktop.desktopNode.getPosition();var s=this.node.getSize();if(!this.left||this.left>t.x-s.x-10||this.left<0){var i=t.x-s.x-10;if(i<0)i=0;this.node.setStyle("left",""+i+"px")}if(!this.top||this.top<e.y+10){var n=e.y+10;this.node.setStyle("top",""+n+"px")}if(!this.height||this.height>t.y-24){var o=t.y-24;this.node.setStyle("height",""+o+"px")}this.setNodeSize()},setNodeSize:function(){var t=this.node.getSize();var e=this.titleNode.getSize();var s=this.userInforNode.getSize();var i=this.userSearchNode.getSize();var n=this.userMenuNode.getSize();var o=t.y-(e.y+s.y+i.y+n.y);this.userListNode.setStyle("height",""+o+"px");var a=this.userListTitleNode.getSize();o=o-a.y;this.userListScrollNode.setStyle("height",""+o+"px")},createTitle:function(){this.closeAction=new Element("div",{styles:this.css.closeActionNode}).inject(this.titleNode);this.closeAction.addEvent("click",function(t){this.close();t.stopPropagation()}.bind(this));var t=new Drag.Move(this.node,{handle:this.titleNode,container:this.desktop.desktopNode,onDrop:function(){var t=this.node.getPosition();this.left=t.x;this.top=t.y}.bind(this)})},createUserInfor:function(){this.userIconAreaNode=new Element("div",{styles:this.css.userIconAreaNode}).inject(this.userInforNode);this.userIconNode=new Element("img",{styles:this.css.userIconNode}).inject(this.userIconAreaNode);this.userTextInforNode=new Element("div",{styles:this.css.userTextInforNode}).inject(this.userInforNode);this.userNameInforNode=new Element("div",{styles:this.css.userNameInforNode}).inject(this.userTextInforNode);this.userNameTextInforNode=new Element("div",{styles:this.css.userNameTextInforNode}).inject(this.userNameInforNode);this.userDutyTextInforNode=new Element("div",{styles:this.css.userDutyTextInforNode}).inject(this.userNameInforNode);this.userSignInforNode=new Element("div",{styles:this.css.userSignInforNode}).inject(this.userTextInforNode);if(!this.userAction)this.userAction=new MWF.xApplication.Selector.Actions.RestActions;this.userAction.getPersonComplex(function(t){if(!t.data)t.data={display:layout.desktop.session.user.name,name:layout.desktop.session.user.name,identityList:[]};this.owner=t.data;if(t.data.icon){this.userIconNode.set("src","data:image/png;base64,"+t.data.icon+"")}else{if(t.data.genderType=="f"){this.userIconNode.set("src",""+MWF.defaultPath+"/xDesktop/$UserPanel/default/icon/female.png")}else{this.userIconNode.set("src",""+MWF.defaultPath+"/xDesktop/$UserPanel/default/icon/man.png")}}this.userNameTextInforNode.set("text",t.data.display);var e=[];t.data.identityList.each(function(t){e.push(t.departmentName)}.bind(this));var s=e.join(", ");this.userDutyTextInforNode.set("text",s);this.userSignInforNode.set("text",t.data.signature||MWF.LP.desktop.nosign)}.bind(this),null,layout.desktop.session.user.id)},createSearch:function(){this.searchInput=new Element("input",{styles:this.css.searchInput,type:"text",value:MWF.LP.desktop.searchUser}).inject(this.userSearchNode);this.searchInput.addEvents({focus:function(){if(this.searchInput.get("value")==MWF.LP.desktop.searchUser)this.searchInput.set("value","")}.bind(this),blur:function(){if(!this.searchInput.get("value"))this.searchInput.set("value",MWF.LP.desktop.searchUser)}.bind(this),keydown:function(t){if(t.code==13)this.doSearch()}.bind(this)})},doSearch:function(){var t=this.searchInput.get("value");if(t){this.userListSearchTab.click();this.userAction.listPersonByKey(function(t){if(this.searchList)this.searchList.empty();t.data.each(function(t){if(t.name!=layout.desktop.session.user.name){this.userAction.getPersonComplex(function(t){if(t.data.onlineStatus=="online"){this.searchList.appendIdentityTreeNode(t.data,this.searchList.onlineTree)}else{this.searchList.appendIdentityTreeNode(t.data,this.searchList.offlineTree)}}.bind(this),null,t.name)}}.bind(this))}.bind(this),null,t)}},createUserList:function(){this.userListTitleNode=new Element("div",{styles:this.css.userListTitleNode}).inject(this.userListNode);this.userListChatTab=new Element("div",{styles:this.css.userListChatTab}).inject(this.userListTitleNode);this.userListOnlineTab=new Element("div",{styles:this.css.userListOnlineTab}).inject(this.userListTitleNode);this.userListSearchTab=new Element("div",{styles:this.css.userListSearchTab}).inject(this.userListTitleNode);this.userListChatTab.addEvents({mouseover:function(){if(this.currentList!=this.userListChatTab)this.userListChatTab.setStyles(this.css.userListChatTab_over)}.bind(this),mouseout:function(){if(this.currentList!=this.userListChatTab)this.userListChatTab.setStyles(this.css.userListChatTab)}.bind(this),click:function(){this.loadChatList()}.bind(this)});this.userListOnlineTab.addEvents({mouseover:function(){if(this.currentList!=this.userListOnlineTab)this.userListOnlineTab.setStyles(this.css.userListOnlineTab_over)}.bind(this),mouseout:function(){if(this.currentList!=this.userListOnlineTab)this.userListOnlineTab.setStyles(this.css.userListOnlineTab)}.bind(this),click:function(){this.loadOnlineList()}.bind(this)});this.userListSearchTab.addEvents({mouseover:function(){if(this.currentList!=this.userListSearchTab)this.userListSearchTab.setStyles(this.css.userListSearchTab_over)}.bind(this),mouseout:function(){if(this.currentList!=this.userListSearchTab)this.userListSearchTab.setStyles(this.css.userListSearchTab)}.bind(this),click:function(){this.loadSearchList()}.bind(this)});this.currentList=this.userListOnlineTab;this.userListScrollNode=new Element("div",{styles:this.css.userListScrollNode}).inject(this.userListNode);this.userListChatAreaNode=new Element("div",{styles:this.css.userListAreaNode}).inject(this.userListScrollNode);this.userListChatAreaOnlineNode=new Element("div",{styles:this.css.userListAreaNode}).inject(this.userListChatAreaNode);this.userListChatAreaOfflineNode=new Element("div",{styles:this.css.userListAreaNode}).inject(this.userListChatAreaNode);this.userListOnlineAreaNode=new Element("div",{styles:this.css.userListAreaNode}).inject(this.userListScrollNode);this.userListOnlineAreaTreeNode=new Element("div",{styles:this.css.userListAreaNode}).inject(this.userListOnlineAreaNode);this.userListSearchAreaNode=new Element("div",{styles:this.css.userListAreaNode}).inject(this.userListScrollNode);this.userListSearchAreaOnlineNode=new Element("div#online",{styles:this.css.userListAreaNode}).inject(this.userListSearchAreaNode);this.userListSearchAreaOfflineNode=new Element("div#offline",{styles:this.css.userListAreaNode}).inject(this.userListSearchAreaNode);MWF.require("MWF.widget.ScrollBar",function(){new MWF.widget.ScrollBar(this.userListScrollNode,{style:"xDesktop_Message",where:"before",indent:false,distance:50,friction:6,axis:{x:false,y:true}})}.bind(this));this.loadOnlineList()},loadChatList:function(){this.userListOnlineAreaNode.setStyle("display","none");this.userListChatAreaNode.setStyle("display","block");this.userListSearchAreaNode.setStyle("display","none");this.userListChatAreaOnlineNode.setStyle("display","block");this.userListChatAreaOfflineNode.setStyle("display","block");this.userListOnlineTab.setStyles(this.css.userListOnlineTab);this.userListChatTab.setStyles(this.css.userListChatTab_current);this.userListSearchTab.setStyles(this.css.userListSearchTab);this.currentList=this.userListChatTab;if(!this.chatList){this.chatList=new MWF.xApplication.IM.ChatList(this)}},loadOnlineList:function(){this.userListOnlineAreaNode.setStyle("display","block");this.userListChatAreaNode.setStyle("display","none");this.userListSearchAreaNode.setStyle("display","none");this.userListOnlineAreaTreeNode.setStyle("display","block");this.userListOnlineTab.setStyles(this.css.userListOnlineTab_current);this.userListChatTab.setStyles(this.css.userListChatTab);this.userListSearchTab.setStyles(this.css.userListSearchTab);this.currentList=this.userListOnlineTab;if(!this.onlineList){this.onlineList=new MWF.xApplication.IM.OnlineList(this)}},loadSearchList:function(){this.userListOnlineAreaNode.setStyle("display","none");this.userListChatAreaNode.setStyle("display","none");this.userListSearchAreaNode.setStyle("display","block");this.userListSearchAreaOnlineNode.setStyle("display","block");this.userListSearchAreaOfflineNode.setStyle("display","block");this.userListOnlineTab.setStyles(this.css.userListOnlineTab);this.userListChatTab.setStyles(this.css.userListChatTab);this.userListSearchTab.setStyles(this.css.userListSearchTab_current);this.currentList=this.userListSearchTab;if(!this.searchList){this.searchList=new MWF.xApplication.IM.SearchList(this)}},checkUnread:function(t){var e=null;if(this.onlineList){e=this.onlineList.personList[t];if(e)e.checkUnread()}e=null;if(this.searchList){e=this.searchList.personList[t];if(e)e.checkUnread()}e=null;if(this.chatList){e=this.chatList.personList[t];if(e)e.checkUnread()}}});MWF.xApplication.IM.OnlineList=new Class({initialize:function(t){this.app=t;this.userAction=this.app.userAction;this.css=this.app.css;this.container=this.app.userListOnlineAreaNode;this.personList={};this.load()},load:function(){this.tree=new MWF.widget.Tree(this.container,{style:"chat"});this.tree.addEvent("queryExpand",function(t){this.expandItem(t)}.bind(this));this.tree.load();this.userAction.listTopCompany(function(t){t.data.each(function(t){var e=this.appendCompanyItem(t,this.tree);e.expandOrCollapse()}.bind(this))}.bind(this))},appendCompanyItem:function(t,e){var s={expand:false,title:t.name,text:t.name,action:function(t){t.expandOrCollapse()}.bind(this),icon:"companyicon.png",style:"company"};var i=e.appendChild(s);i.data=t;i.itemType="company";if(t.departmentSubDirectCount||t.companySubDirectCount)this.appendLoaddingItem(i);return i},appendDepartmentItem:function(t,e){var s={expand:false,title:t.display,text:t.display,action:function(t){t.expandOrCollapse()}.bind(this),icon:"departmenticon.png",style:"company"};var i=e.appendChild(s);i.data=t;i.itemType="department";if(t.departmentSubDirectCount||t.companySubDirectCount||t.identitySubDirectCount)this.appendLoaddingItem(i);return i},appendIdentityItem:function(t,e){this.userAction.getPersonComplex(function(t){this.appendIdentityTreeNode(t.data,e)}.bind(this),null,t.person)},appendIdentityTreeNode:function(t,e){var s=new MWF.xApplication.IM.Person(t,e,this);this.personList[t.name]=s},expandItem:function(t){var e=t.firstChild;if(e&&e.options.text=="loadding..."){var s="";if(t.itemType=="company")s="listCompanySub";if(t.itemType=="department")s="listDepartmentSub";if(s){e.destroy();this.userAction[s](function(e){if(e.data.companyList)e.data.companyList.each(function(e){this.appendCompanyItem(e,t)}.bind(this));if(e.data.departmentList)e.data.departmentList.each(function(e){this.appendDepartmentItem(e,t)}.bind(this));if(e.data.identityList)e.data.identityList.each(function(e){this.appendIdentityItem(e,t)}.bind(this))}.bind(this),null,t.data.id)}}},appendLoaddingItem:function(t){t.appendChild({expand:false,title:"loadding...",text:"loadding...",icon:""})}});MWF.xApplication.IM.ChatList=new Class({Extends:MWF.xApplication.IM.OnlineList,load:function(){this.onlineTree=new MWF.widget.Tree(this.app.userListChatAreaOnlineNode,{style:"chat"});this.onlineTree.load();this.offlineTree=new MWF.widget.Tree(this.app.userListChatAreaOfflineNode,{style:"chat"});this.offlineTree.load();this.userAction.listChat(function(t){t.data.each(function(t){var e=t.from==this.app.owner.name?t.person:t.from;if(e!=this.app.owner.name){this.userAction.getPersonComplex(function(t){if(t.data.onlineStatus=="online"){this.appendIdentityTreeNode(t.data,this.onlineTree)}else{this.appendIdentityTreeNode(t.data,this.offlineTree)}}.bind(this),null,e)}}.bind(this))}.bind(this))}});MWF.xApplication.IM.SearchList=new Class({Extends:MWF.xApplication.IM.OnlineList,load:function(){this.onlineTree=new MWF.widget.Tree(this.app.userListSearchAreaOnlineNode,{style:"chat"});this.onlineTree.load();this.offlineTree=new MWF.widget.Tree(this.app.userListSearchAreaOfflineNode,{style:"chat"});this.offlineTree.load()},empty:function(){this.onlineTree.empty();this.offlineTree.empty();this.personList=null;this.personList={}}});MWF.xApplication.IM.Person=new Class({initialize:function(t,e,s){this.list=s;this.app=this.list.app;this.css=this.app.css;this.parent=e;this.data=t;this.load()},load:function(){this.treeItem=this.parent.appendChild(this.getTreenodeObj());this.createPersonInforNode();this.setEvent();this.checkUnread();if(this.img.status=="error"){window.setTimeout(this.checkOnline.bind(this),2e3)}},setEvent:function(){var t=this;this.treeItem.itemNode.addEvents({mouseover:function(){this.setStyles(t.css.chatUserNode_over)},mouseout:function(){this.setStyles(t.css.chatUserNode)},dblclick:function(e){t.openChat(e)},click:function(e){t.openChat(e)}});this.treeItem.textNode.getElement("img").addEvents({mouseover:function(){t.showPersonInfor(this)},mouseout:function(){t.hidePersonInfor(this)}})},getImg:function(t){var e="";if(this.data.icon){e="data:image/png;base64,"+this.data.icon}else{if(this.data.genderType=="f"){e="/x_component_IM/$Main/"+this.app.options.style+"/icon/female.png"}else{e="/x_component_IM/$Main/"+this.app.options.style+"/icon/man.png"}}srcObj={status:"success",src:e};if(t=="online"){}else if(t=="offline"){srcObj=MWF.grayscale(e)}else{if(this.data.onlineStatus=="offline"){srcObj=MWF.grayscale(e)}}if(srcObj.status=="error")this.data.onlineStatus="unknow";return srcObj},getTreenodeObj:function(){this.img=this.getImg();var t="<div style='height: 56px; width: 56px; float: left'>"+"<img style='width:48px; height: 48px; margin:4px;' src='"+this.img.src+"' />"+"</div>"+"<div style='height: 56px; margin-left: 56px;'>"+"<div style='height: 30px; line-height: 36px; color: #666666'>"+this.data.display+"</div>"+"<div style='height: 26px; line-height: 22px; color: #999999'>"+(this.data.signature||this.app.lp.nosign)+"</div></div>";return{expand:false,title:this.data.display,text:t,action:"",icon:"",style:"person"}},createPersonInforNode:function(){var t=[];this.data.identityList.each(function(e){e.companyDutyList.each(function(s){t.push(e.companyDutyList+"["+s.name+"]")}.bind(this));e.departmentDutyList.each(function(s){t.push(e.departmentName+"["+s.name+"]")}.bind(this))}.bind(this));this.personInforNode=new Element("div",{styles:this.css.personInforNode});var e='<table width="100%" cellpadding="3px" border="0">';e+="<tr><td>"+MWF.LP.desktop.person.personEmployee+"</td><td>"+this.data.employee+"</td></tr>";e+="<tr><td>"+MWF.LP.desktop.person.personMobile+"</td><td>"+this.data.mobile+"</td></tr>";e+="<tr><td>"+MWF.LP.desktop.person.personMail+"</td><td>"+this.data.mail+"</td></tr>";e+="<tr><td>"+MWF.LP.desktop.person.personQQ+"</td><td>"+this.data.qq+"</td></tr>";e+="<tr><td>"+MWF.LP.desktop.person.personWeixin+"</td><td>"+this.data.weixin+"</td></tr>";if(t.length)e+="<tr><td>"+MWF.LP.desktop.person.duty+"</td><td>"+t.join(", ")+"</td></tr>";e+="</table>";this.personInforNode.set("html",e)},showPersonInfor:function(t){this.personInforNode.inject(this.app.content);this.personInforNode.setStyle("display","block");var e=this.personInforNode.getSize();var s=t.getPosition(this.app.content);var i=this.treeItem.tree.container.getPosition(this.app.content);var n=s.y;var o=i.x-e.x-5;this.personInforNode.setStyles({top:""+n+"px",left:""+o+"px"})},hidePersonInfor:function(){this.personInforNode.setStyle("display","none")},checkUnread:function(){if(layout.desktop.widgets["IMIMWidget"]){var t=layout.desktop.widgets["IMIMWidget"].unShowMessage;var e=this.data.name+this.app.owner.name;if(t[e]){var s=t[e].length;if(s){this.setUnread(s)}else{this.clearUnread()}}else{this.clearUnread()}}},setUnread:function(t){if(!this.unreadNode){this.unreadNode=new Element("div",{styles:this.css.userListUnreadNode}).inject(this.treeItem.textNode)}this.unreadNode.set("text",t)},clearUnread:function(){if(this.unreadNode){this.unreadNode.destroy();this.unreadNode=null;delete this.unreadNode}},openChat:function(t){if(this.data.name!=this.app.owner.name){var e=layout.desktop.apps["Chat"];if(e){var s=this.data.name+layout.desktop.session.user.name;var i=e.dialogues[s];if(!i)i=e.addDialogue(this.app.owner,[this.data]);i.setCurrent()}var n=this;layout.desktop.openApplication(t,"Chat",{onPostLoad:function(){i=this.addDialogue(n.app.owner,[n.data])}})}},checkOnline:function(){this.app.userAction.personOnline(function(t){if(t.data.onlineStatus=="online"){this.online()}else{this.offline()}}.bind(this),null,this.data.name)},online:function(){if(this.data.onlineStatus!="online"){this.img=this.getImg("online");if(this.img.status=="success")this.data.onlineStatus="online";var t=this.treeItem.textNode.getElement("img");t.set("src",this.img.src);if(this.onlineTree){this.parent=this.onlineTree;this.treeItem.destroy();this.treeItem=this.parent.appendChild(this.getTreenodeObj())}}},offline:function(){if(this.data.onlineStatus!="offline"){this.data.onlineStatus="offline";this.img=this.getImg("offline");if(this.img.status=="success")this.data.onlineStatus="offline";var t=this.treeItem.textNode.getElement("img");t.set("src",this.img.src);if(this.offlineTree){this.parent=this.offlineTree;this.treeItem.destroy();this.treeItem=this.parent.appendChild(this.getTreenodeObj())}}}});
|