Main.min.js 7.6 KB

1
  1. MWF.xApplication.Chat.options.multitask=false;MWF.xApplication.Chat.options.executable=false;MWF.xDesktop.requireApp("IM","Actions.RestActions",null,false);MWF.xApplication.Chat.Main=new Class({Extends:MWF.xApplication.Common.Main,Implements:[Options,Events],options:{style:"default",name:"Chat",icon:"icon.png",width:"800",height:"500",title:MWF.xApplication.Chat.LP.title,id:"",owner:"",desktopReload:false},onQueryLoad:function(){this.lp=MWF.xApplication.Chat.LP;this.userAction=MWF.Actions.get("x_organization_assemble_control");this.socketAction=MWF.Actions.get("x_collaboration_assemble_websocket")},loadApplication:function(t){this.dialogues={};this.node=new Element("div",{styles:this.css.content}).inject(this.content);this.dialogueTabAreaNode=new Element("div",{styles:this.css.dialogueTabAreaNode}).inject(this.node);this.chatContentAreaNode=new Element("div",{styles:this.css.chatContentAreaNode}).inject(this.node);this.chatTitleNode=new Element("div",{styles:this.css.chatTitleNode}).inject(this.chatContentAreaNode);this.chatTitleAddMemberAction=new Element("div",{styles:this.css.chatTitleAddMemberAction}).inject(this.chatTitleNode);this.chatTitleMemberNode=new Element("div",{styles:this.css.chatTitleMemberNode}).inject(this.chatTitleNode);this.chatAreaNode=new Element("div",{styles:this.css.chatAreaNode}).inject(this.chatContentAreaNode);this.chatInputAreaNode=new Element("div",{styles:this.css.chatInputAreaNode}).inject(this.chatContentAreaNode);this.chatInputNode=new Element("div",{styles:this.css.chatInputNode}).inject(this.chatInputAreaNode);this.chatTextAreaNode=new Element("textarea",{styles:this.css.chatTextAreaNode}).inject(this.chatInputNode);this.chatInputActionNode=new Element("div",{styles:this.css.chatInputActionNode}).inject(this.chatInputAreaNode);this.chatSendActionNode=new Element("div",{styles:this.css.chatSendActionNode,text:this.lp.send}).inject(this.chatInputActionNode);this.setChatAreaHeight();this.addEvent("resize",this.setChatAreaHeight);this.setEvent()},setEvent:function(){this.chatTextAreaNode.addEvent("keydown",function(t){if(t.control&&t.code==13){this.sendMessage();this.chatTextAreaNode.focus()}}.bind(this));this.chatSendActionNode.addEvent("click",this.sendMessage.bind(this))},sendMessage:function(){if(this.current){var t=this.chatTextAreaNode.get("value");if(t){message={text:t,type:"text",from:this.current.owner.distinguishedName,person:this.current.toNames[0],category:"dialog"};this.desktop.socket.send(message);this.current.showMessage(message)}this.chatTextAreaNode.set("value","")}},setChatAreaHeight:function(){var t=this.chatContentAreaNode.getSize();var e=this.chatTitleNode.getSize();var s=this.chatInputAreaNode.getSize();var i=t.y-e.y-s.y;this.chatAreaNode.setStyle("height",""+i+"px")},addDialogueBack:function(t,e){var s=new MWF.xApplication.Chat.Dialogue(t,e,this);var i=t.distinguishedName+e[0].distinguishedName;var n=e[0].distinguishedName+t.distinguishedName;this.dialogues[i]=s;this.dialogues[n]=s;return s},addDialogue:function(t,e){var s=new MWF.xApplication.Chat.Dialogue(t,e,this);var i=t.distinguishedName+e[0].distinguishedName;var n=e[0].distinguishedName+t.distinguishedName;this.dialogues[i]=s;this.dialogues[n]=s;s.setCurrent();return s}});MWF.xApplication.Chat.Dialogue=new Class({initialize:function(t,e,s){this.chat=s;this.owner=t;this.members=e;this.css=this.chat.css;this.unreadCount=0;this.messageDate=null;this.load()},load:function(){this.createTab();this.createContent()},createContent:function(){this.chatContentScrollNode=new Element("div",{styles:this.css.chatContentScrollNode}).inject(this.chat.chatAreaNode);this.chatContentNode=new Element("div",{styles:this.css.chatContentNode}).inject(this.chatContentScrollNode);this.scroll=new Fx.Scroll(this.chatContentScrollNode);MWF.require("MWF.widget.ScrollBar",function(){new MWF.widget.ScrollBar(this.chatContentScrollNode,{style:"xDesktop_Message",where:"before",indent:false,distance:50,friction:6,axis:{x:false,y:true}})}.bind(this))},createTab:function(){this.tabNode=new Element("div",{styles:this.css.chatTabNode}).inject(this.chat.dialogueTabAreaNode);var t=this.members[0].icon;if(this.members.length>1){t=this.chat.path+this.chat.options.style+"/group.png"}else{t=this.chat.userAction.getPersonIcon(this.members[0].id)}this.tabIconNode=new Element("div",{styles:this.css.tabIconNode}).inject(this.tabNode);this.tabIconImgNode=new Element("img",{styles:this.css.tabIconImgNode}).inject(this.tabIconNode);this.tabIconImgNode.set("src",t);this.tabCloseAction=new Element("div",{styles:this.css.tabCloseAction}).inject(this.tabNode);this.tabTextNode=new Element("div",{styles:this.css.tabTextNode}).inject(this.tabNode);var e=[];var s=[];this.members.each(function(t){e.push(t.distinguishedName);s.push(t.name)});this.toNames=e;this.title=s.join(",");this.tabTextNode.set("text",this.title);this.tabNode.addEvents({mouseover:function(){if(this.chat.current!=this)this.tabNode.setStyles(this.css.chatTabNode_over);this.tabCloseAction.setStyle("display","block")}.bind(this),mouseout:function(){if(this.chat.current!=this)this.tabNode.setStyles(this.css.chatTabNode);this.tabCloseAction.setStyle("display","none")}.bind(this),click:function(){this.setCurrent()}.bind(this)});this.tabCloseAction.addEvents({click:function(t){this.close();t.stopPropagation()}.bind(this)})},close:function(){},setCurrent:function(){if(this.chat.current)this.chat.current.setUncurrent();this.tabNode.setStyles(this.css.chatTabNode_current);this.chatContentScrollNode.setStyle("display","block");this.chat.chatTitleMemberNode.set("text",this.title);this.chat.setTitle(this.title);this.chat.current=this;this.checkUnread();this.clearUnread()},checkUnread:function(){if(layout.desktop.widgets["IMIMWidget"]){var t=layout.desktop.widgets["IMIMWidget"].unShowMessage;var e=this.members[0].distinguishedName+this.owner.distinguishedName;if(t[e]){if(t[e].length){t[e].each(function(t){this.showMessage(t,t.from)}.bind(this))}delete t[e];layout.desktop.widgets["IMIMWidget"].setUnread();if(layout.desktop.apps["IM"])layout.desktop.apps["IM"].checkUnread(this.members[0].distinguishedName)}}},setUncurrent:function(){this.chatContentScrollNode.setStyle("display","none");this.tabNode.setStyles(this.css.chatTabNode);this.chat.current=null},showMessage:function(t,e){var s=new Date;if(!this.messageDate||s.getTime()-this.messageDate.getTime()>12e4){var i=s.format("%Y-%m-%d %H:%M");var n=new Element("div",{styles:this.css.messageTimeNode,text:i}).inject(this.chatContentNode);this.messageDate=s}var a=new Element("div",{styles:this.css.messageNode}).inject(this.chatContentNode);var o="";var h="";var c="";if(e){for(var d=0;d<this.members.length;d++){if(this.members[d].distinguishedName===e)break}if(this.members[d]){o=this.getIcon(this.members[d]);iconCss=this.css.messageIconGetNode;textAreaCss=this.css.messageTextAreaGetNode;textCss=this.css.messageTextGetNode}}else{o=this.getIcon(this.owner);iconCss=this.css.messageIconSendNode;textAreaCss=this.css.messageTextAreaSendNode;textCss=this.css.messageTextSendNode}var l=new Element("div",{styles:iconCss}).inject(a);var r=new Element("img",{styles:this.css.messageIconImgNode,src:o}).inject(l);var u=new Element("div",{styles:textAreaCss}).inject(a);var m=t.text.replace(/[\n+]/g,"<br/>");var N=new Element("div",{styles:textCss,html:m}).inject(u);this.scroll.toElement(a)},getIcon:function(t){return this.chat.userAction.getPersonIcon(t.id)},addUnreadMessage:function(t){if(!this.unreadNode)this.unreadNode=new Element("div",{styles:this.css.userListUnreadNode,text:"0"}).inject(this.tabNode,"bottom");var e=this.unreadNode.get("text").toInt()+1;this.unreadNode.set("text",e)},clearUnread:function(){if(this.unreadNode){this.unreadNode.destroy();this.unreadNode=null}}});