IMWidget.min.js 3.3 KB

1
  1. MWF.xDesktop.requireApp("IM","Actions.RestActions",null,false);MWF.require("MWF.xDesktop.UserData",null,false);MWF.xApplication.IM=MWF.xApplication.IM||{};MWF.xApplication.IM.IMWidget=new Class({Extends:MWF.xApplication.Common.Widget,Implements:[Options,Events],options:{style:"default",appName:"IM",name:"IMWidget"},initialize:function(e,s){this.setOptions(s);this.desktop=e},loadContent:function(e){this.ssoCount=0;this.widget.node.setStyle("display","none");this.userAction=new MWF.xApplication.IM.Actions.RestActions;this.users={};this.unShowMessage={};this.widget.close()},doUnreadMessages:function(){this.unShowMessage=MWF.UD.getDataJson("unreadChat")||{};layout.desktop.addEvent("unload",function(){MWF.UD.putData("unreadChat",this.unShowMessage)}.bind(this))},getOwner:function(e){if(this.owner){if(e)e()}else{this.userAction.getPerson(function(s){this.owner=s.data;if(e)e()}.bind(this),null,layout.desktop.session.user.id)}},getPerson:function(e,s){if(this.users[e]){if(s)s()}else{this.userAction.getPerson(function(t){this.users[e]=t.data;if(s)s()}.bind(this),null,e)}},getDialogue:function(e,s,t,i){var o=e.dialogues[s];if(!o){this.getPerson(t.from,function(){o=e.addDialogueBack(this.owner,[this.users[t.from]]);if(i)i(o)}.bind(this))}else{if(i)i(o)}},receiveChatMessage:function(e){this.getOwner(function(){var s=layout.desktop.apps["Chat"];if(s){if(layout.desktop.currentApp==s){var t=e.from+layout.desktop.session.user.distinguishedName;this.getDialogue(s,t,e,function(t){if(s.current!=t){this.receiveMessageRecod(e);t.addUnreadMessage(e)}else{t.showMessage(e,e.from);layout.desktop.playMessageAudio()}}.bind(this))}else{var t=e.from+layout.desktop.session.user.distinguishedName;this.getDialogue(s,t,e,function(t){if(s.current!=t){this.receiveMessageRecod(e);t.addUnreadMessage(e)}else{t.showMessage(e,e.from);layout.desktop.playMessageAudio()}}.bind(this));this.sendTooltipMessage(e);layout.desktop.playMessageAudio()}}else{this.receiveMessageRecod(e)}}.bind(this))},receiveMessageRecod:function(e){var s=e.from+layout.desktop.session.user.distinguishedName;if(!this.unShowMessage[s])this.unShowMessage[s]=[];this.unShowMessage[s].push(e);this.setUnread();this.sendTooltipMessage(e);layout.desktop.playMessageAudio()},sendTooltipMessage:function(e){var s='<div style="height: 20px; line-height: 20px">'+e.text+"</div></div>";msg={subject:e.from+" "+MWF.LP.desktop.say+": ",content:s};var t=layout.desktop.message.addTooltip(msg);t.contentNode.addEvent("click",function(s){this.openChat(s,e)}.bind(this))},openChat:function(e,s){this.getPerson(s.from,function(){var t=this.users[s.from];var i=layout.desktop.apps["Chat"];if(i){var o=s.from+layout.desktop.session.user.name;var n=i.dialogues[o];if(!n)n=i.addDialogue(this.owner,[t]);n.setCurrent()}var a=this;layout.desktop.openApplication(e,"Chat",{onPostLoad:function(){n=this.addDialogue(a.owner,[t])}})}.bind(this))},setUnread:function(){var e=layout.desktop.apps["IM"];var s=0;Object.each(this.unShowMessage,function(t,i){s+=t.length;if(e)if(t.length)e.checkUnread(t[0].from)}.bind(this));if(s>0){if(!this.unreadNode){this.unreadNode=new Element("div",{styles:layout.desktop.css.messageUnreadCountNode}).inject(layout.desktop.top.userChatNode)}this.unreadNode.set("text",s)}else{if(this.unreadNode){this.unreadNode.destroy();this.unreadNode=null;delete this.unreadNode}}}});