MWF.xDesktop = MWF.xDesktop || {}; MWF.xApplication = MWF.xApplication || {}; MWF.require("MWF.xDesktop.Actions.RestActions", null, false); MWF.xDesktop.WebSocket = new Class({ Implements: [Options, Events], options: {}, initialize: function(options){ var addressObj = layout.serviceAddressList["x_message_assemble_communicate"]; var uri = new URI(window.location.href); var scheme = uri.get("scheme"); var wsScheme = (scheme.toString().toLowerCase()==="https") ? "wss" : "ws"; this.ws = wsScheme+"://"+addressObj.host+(addressObj.port==80 ? "" : ":"+addressObj.port)+addressObj.context+"/ws/collaboration"; this.reConnect = true; this.checking = false; this.heartTimeout = 60000; this.checkingTimeout = 4000; this.heartMsg = "heartbeat"; this.maxErrorCount = 10; this.errorCount = 0; // var addressObj = layout.desktop.serviceAddressList["x_collaboration_assemble_websocket"]; // this.ws = "ws://"+addressObj.host+(addressObj.port==80 ? "" : ":"+addressObj.port)+addressObj.context+"/ws/collaboration"; //var ws = "ws://hbxa01.bf.ctc.com/x_collaboration_assemble_websocket/ws/collaboration"; //使用轮询方式处理消息..... // this.webSocket = { // "readyState":"1", // "close": function(){}, // "open": function(){} // }; // window.setInterval(function(){ // o2.Actions.get("") // }, 10000); ///*暂时不启用WebSocket了------------ //this.ws = this.ws+"?x-token="+encodeURIComponent(Cookie.read("x-token"))+"&authorization="+encodeURIComponent(Cookie.read("x-token")); this.connect(); }, connect: function(){ if (layout.config.webSocketEnable){ var ws = this.ws+"?x-token="+encodeURIComponent(Cookie.read("x-token")); ws = o2.filterUrl(ws); try{ this.webSocket = new WebSocket(ws); //this.webSocket = new WebSocket(this.ws); this.webSocket.onopen = function (e){this.onOpen(e);}.bind(this); this.webSocket.onclose = function (e){this.onClose(e);}.bind(this); this.webSocket.onmessage = function (e){this.onMessage(e);}.bind(this); this.webSocket.onerror = function (e){this.onError(e);}.bind(this); //---------------------------------*/ }catch(e){ //WebSocket.close(); //this.webSocket = new WebSocket(this.ws); this.errorCount++; console.log("Unable to connect to the websocket server, will retry in "+(this.checkingTimeout/1000)+" seconds"); this.checkRetry(); // if (this.webSocket){ // this.close(); // //this.webSocket = new WebSocket(this.ws); // } } } }, onOpen: function(e){ this.errorCount = 0; console.log("websocket is open, You can receive system messages"); this.heartbeat(); //MWF.xDesktop.notice("success", {"x": "right", "y": "top"}, "websocket is open ..."); }, onClose: function(e){ console.log("websocket is closed. "); //if (this.reConnect) this.checkRetry(); //MWF.xDesktop.notice("success", {"x": "right", "y": "top"}, "websocket is closed ..."); }, onMessage: function(e){ if (e.data){ try{ if (e.data===this.heartMsg){ this.heartbeat(); //console.log("get heartbeat..."); return true; } var data = JSON.decode(e.data); switch (data.category){ case "dialog": switch (data.type){ case "text": this.receiveChatMessage(data); break; default: } break; default: switch (data.type){ case "task": case "task_create": case "task_urge": case "task_expire": case "task_press": this.receiveTaskMessage(data); break; case "read": case "read_create": this.receiveReadMessage(data); break; case "review": this.receiveReviewMessage(data); break; case "fileEditor": case "attachment_editor": case "attachment_editorCancel": case "attachment_editorModify": this.receiveFileEditorMessage(data); break; case "fileShare": case "attachment_share": case "attachment_shareCancel": this.receiveFileShareMessage(data); break; case "meetingInvite": case "meeting_invite": this.receiveMeetingInviteMessage(data); break; case "meetingCancel": case "meeting_cancel": this.receiveMeetingCancelMessage(data); break; case "meetingAccept": case "meeting_accept": this.receiveMeetingAcceptMessage(data); break; case "meetingReject": case "meeting_reject": this.receiveMeetingRejectMessage(data); break; case "attendanceAppealInvite": this.receiveAttendanceAppealInviteMessage(data); break; case "attendanceAppealAccept": this.receiveAttendanceAppealAcceptMessage(data); break; case "attendanceAppealReject": this.receiveAttendanceAppealRejectMessage(data); break; case "calendar_alarm": this.receiveCalendarAlarmMessage(data); break; case "teamwork_taskCreate": case "teamwork_taskUpdate": case "teamwork_taskDelelte": case "teamwork_taskOvertime": case "teamwork_taskChat": this.receiveTeamWorkMessage(data); break; case "custom_create": this.receiveCustomMessage(data); case "im_create": console.log("im 消息来了!!!"); this.receiveIMMessage(data); break; case "cms_publish" : this.receiveCMSPublishMessage(data); break; default: } } }catch(e){} } }, onError: function(e){ this.errorCount++; //console.log(e); console.log("Unable to connect to the websocket server, will retry in "+(this.checkingTimeout/1000)+" seconds."); this.checkRetry(); //MWF.xDesktop.notice("success", {"x": "right", "y": "top"}, "websocket is error ..."); }, checkRetry: function(){ if (this.serverCheck) window.clearTimeout(this.serverCheck); if (this.heartbeatCheck) window.clearTimeout(this.heartbeatCheck); if (this.errorCount < this.maxErrorCount) this.serverCheck = window.setTimeout(function(){ this.retry(); }.bind(this), this.checkingTimeout); }, retry: function(){ if (this.webSocket){ this.close(); } console.log("Retry connect to websocket server. ("+this.errorCount+"/"+this.maxErrorCount+")"); this.connect(); }, close: function(){ this.reConnect = false; if (this.webSocket) this.webSocket.close(); //WebSocket.close(); }, send: function(msg){ if (!this.webSocket || this.webSocket.readyState != 1) { if (this.serverCheck) window.clearTimeout(this.serverCheck); this.retry(); } // try{ this.webSocket.send(JSON.encode(msg)); // }catch(e){ // this.retry(); // this.webSocket.send(JSON.encode(msg)); // } }, heartbeat: function(){ if (this.serverCheck) window.clearTimeout(this.serverCheck); if (this.heartbeatCheck) window.clearTimeout(this.heartbeatCheck); this.heartbeatCheck = window.setTimeout(function(){ this.sendHeartbeat(this.heartMsg); }.bind(this), this.heartTimeout); }, sendHeartbeat: function(msg){ if (!this.webSocket || this.webSocket.readyState != 1) { if (this.serverCheck) window.clearTimeout(this.serverCheck); this.retry(); } try{ //console.log("send heartbeat ..."); this.webSocket.send(msg); this.checkRetry(); }catch(e){ //console.log("send heartbeat error !!!"); if (this.serverCheck) window.clearTimeout(this.serverCheck); this.retry(); //this.initialize(); } }, receiveCMSPublishMessage: function(data){ debugger; var content = ""+(data.body.creatorPerson||"").split("@")[0]+""+MWF.LP.desktop.messsage.publishDocument+data.body.title; var msg = { "subject": data.body.categoryName, "content": content }; var messageItem = layout.desktop.message.addMessage(msg); var tooltipItem = layout.desktop.message.addTooltip(msg); tooltipItem.contentNode.addEvent("click", function(e){ layout.desktop.message.hide(); var appId = "cms.Document"+data.body.id; if ( layout.desktop.apps && layout.desktop.apps[appId] ) { layout.desktop.apps[appId].setCurrent(); }else{ var options = {"documentId": data.body.id, "appId": appId}; layout.desktop.openApplication(e, "cms.Document", options); } }); messageItem.contentNode.addEvent("click", function(e){ layout.desktop.message.addUnread(-1); layout.desktop.message.hide(); var appId = "cms.Document"+data.body.id; if ( layout.desktop.apps && layout.desktop.apps[appId] ) { layout.desktop.apps[appId].setCurrent(); }else{ var options = {"documentId": data.body.id, "appId": appId}; layout.desktop.openApplication(e, "cms.Document", options); } }); }, receiveChatMessage: function(data){ if (layout.desktop.widgets["IMIMWidget"]) layout.desktop.widgets["IMIMWidget"].receiveChatMessage(data); //if (layout.desktop.top.userPanel) layout.desktop.top.userPanel.receiveChatMessage(data); }, openWork: function(id, e){ o2.Actions.get("x_processplatform_assemble_surface").getWorkInfor(id, function(){ var options = {"workId": id, "appId": "process.Work"+id}; layout.desktop.openApplication(e, "process.Work", options); }.bind(this), function(){ layout.desktop.openApplication(e, "process.TaskCenter", null, { "status": { "navi": "task" } }); }.bind(this)); }, receiveTaskMessage: function(data){ debugger; var task = data.body; //var content = MWF.LP.desktop.messsage.receiveTask+"《"+task.title+"》, "+MWF.LP.desktop.messsage.activity+": "+(task.activityName || "")+""; var content = data.title; content += "
"+MWF.LP.desktop.messsage.appliction+": "+task.applicationName+"; "+ ""+MWF.LP.desktop.messsage.process+": "+task.processName+""; var msg = { "subject": MWF.LP.desktop.messsage.taskMessage, "content": content }; var messageItem = layout.desktop.message.addMessage(msg, data.body.startTime); var tooltipItem = layout.desktop.message.addTooltip(msg, data.body.startTime); tooltipItem.contentNode.addEvent("click", function(e){ layout.desktop.message.hide(); this.openWork(task.work,e); }.bind(this)); messageItem.contentNode.addEvent("click", function(e){ layout.desktop.message.addUnread(-1); layout.desktop.message.hide(); this.openWork(task.work,e); }.bind(this)); }, receiveReadMessage: function(data){ var read = data.body; //var content = MWF.LP.desktop.messsage.receiveRead+"《"+read.title+"》. "; var content = data.title; content += "
"+MWF.LP.desktop.messsage.appliction+": "+read.applicationName+"; "+ ""+MWF.LP.desktop.messsage.process+": "+read.processName+""; var msg = { "subject": MWF.LP.desktop.messsage.readMessage, "content": content }; var messageItem = layout.desktop.message.addMessage(msg, data.body.startTime); var tooltipItem = layout.desktop.message.addTooltip(msg, data.body.startTime); tooltipItem.contentNode.addEvent("click", function(e){ layout.desktop.message.hide(); this.openWork(read.work,e); }.bind(this)); messageItem.contentNode.addEvent("click", function(e){ layout.desktop.message.addUnread(-1); layout.desktop.message.hide(); this.openWork(read.work,e); }.bind(this)); }, receiveCustomMessage: function(data){ var content = ""+MWF.LP.desktop.messsage.customMessage+":"+data.body; var msg = { "subject": MWF.LP.desktop.messsage.customMessageTitle, "content": content }; var messageItem = layout.desktop.message.addMessage(msg); var tooltipItem = layout.desktop.message.addTooltip(msg); }, receiveIMMessage: function(data){ var imBody = data.body; var jsonBody = imBody.body; var conversationId = imBody.conversationId; var body = JSON.parse(jsonBody); var msgBody = body.body; //默认text 文本消息 if (body.type && body.type == "emoji") { //表情 消息 msgBody = "[表情]"; } var content = ""+data.title+": "+msgBody; var msg = { "subject": MWF.LP.desktop.messsage.customMessageTitle, "content": content }; var messageItem = layout.desktop.message.addMessage(msg); var options = {"conversationId": conversationId}; messageItem.contentNode.addEvent("click", function(e){ layout.desktop.message.addUnread(-1); layout.desktop.message.hide(); layout.desktop.openApplication(e, "IMV2", options); }.bind(this)); var tooltipItem = layout.desktop.message.addTooltip(msg); tooltipItem.contentNode.addEvent("click", function(e){ layout.desktop.message.hide(); layout.desktop.openApplication(e, "IMV2", options); }.bind(this)); }, receiveReviewMessage: function(data){ var content = MWF.LP.desktop.messsage.receiveReview+"《"+data.title+"》. "; content += "
"+MWF.LP.desktop.messsage.appliction+": "+data.applicationName+"; "+ ""+MWF.LP.desktop.messsage.process+": "+data.processName+""; var msg = { "subject": MWF.LP.desktop.messsage.reviewMessage, "content": content }; var messageItem = layout.desktop.message.addMessage(msg, data.body.startTime); var tooltipItem = layout.desktop.message.addTooltip(msg, data.body.startTime); tooltipItem.contentNode.addEvent("click", function(e){ layout.desktop.message.hide(); layout.desktop.openApplication(e, "process.TaskCenter", null, { "status": { "navi": "review" } }); }); messageItem.contentNode.addEvent("click", function(e){ layout.desktop.message.addUnread(-1); layout.desktop.message.hide(); layout.desktop.openApplication(e, "process.TaskCenter", null, { "status": { "navi": "review" } }); }); }, receiveFileEditorMessage: function(data){ debugger; var content = ""+MWF.name.cn(data.body.person)+" "+MWF.LP.desktop.messsage.receiveFileEditor+"“"+data.body.name+"”. "; var msg = { "subject": MWF.LP.desktop.messsage.fileEditorMessage, "content": content }; var messageItem = layout.desktop.message.addMessage(msg, ((data.body) ? data.body.startTime : "")); var tooltipItem = layout.desktop.message.addTooltip(msg, ((data.body) ? data.body.startTime : "")); tooltipItem.contentNode.addEvent("click", function(e){ layout.desktop.message.hide(); layout.desktop.openApplication(e, "File", null, { "status": { "tab": "editor", "node": data.person } }); }); messageItem.contentNode.addEvent("click", function(e){ layout.desktop.message.addUnread(-1); layout.desktop.message.hide(); layout.desktop.openApplication(e, "File", null, { "status": { "tab": "editor", "node": data.person } }); }); }, receiveFileShareMessage: function(data){ debugger; var content = ""+MWF.name.cn(data.body.person)+" "+MWF.LP.desktop.messsage.receiveFileShare+"“"+data.body.name+"”. "; var msg = { "subject": MWF.LP.desktop.messsage.fileShareMessage, "content": content }; var messageItem = layout.desktop.message.addMessage(msg, ((data.body) ? data.body.createTime : "")); var tooltipItem = layout.desktop.message.addTooltip(msg, ((data.body) ? data.body.createTime : "")); tooltipItem.contentNode.addEvent("click", function(e){ layout.desktop.message.hide(); layout.desktop.openApplication(e, "File", null, { "status": { "tab": "share", "node": data.person } }); }); messageItem.contentNode.addEvent("click", function(e){ layout.desktop.message.addUnread(-1); layout.desktop.message.hide(); layout.desktop.openApplication(e, "File", null, { "status": { "tab": "share", "node": data.person } }); }); }, getMeeting: function(data, callback){ //this.action = new MWF.xDesktop.Actions.RestActions("/Actions/action.json", "x_meeting_assemble_control", "x_component_Meeting"); //var action = new MWF.xDesktop.Actions.RestActions("/Actions/action.json", "x_meeting_assemble_control", "x_component_Meeting"); if( data.body && typeOf( data.body ) === "object" ){ var data = data.body; MWF.Actions.get("x_meeting_assemble_control").getRoom(data.room, function(roomJson){ data.roomName = roomJson.data.name; MWF.Actions.get("x_meeting_assemble_control").getBuilding(roomJson.data.building, function(buildingJson){ data.buildingName = buildingJson.data.name; if (callback) callback(data); }.bind(this)); }.bind(this)); }else{ MWF.Actions.get("x_meeting_assemble_control").getMeeting(data.metting, function(json){ var data = json.data; MWF.Actions.get("x_meeting_assemble_control").getRoom(data.room, function(roomJson){ data.roomName = roomJson.data.name; MWF.Actions.get("x_meeting_assemble_control").getBuilding(roomJson.data.building, function(buildingJson){ data.buildingName = buildingJson.data.name; if (callback) callback(data); }.bind(this)); }.bind(this)); }.bind(this)); } }, receiveMeetingInviteMessage: function(data){ debugger; this.getMeeting(data, function(meeting){ var content = MWF.LP.desktop.messsage.meetingInvite; content = content.replace(/{person}/g, MWF.name.cn(meeting.applicant)); var date = Date.parse(meeting.startTime).format("%Y-%m-%d- %H:%M"); content = content.replace(/{date}/g, date); content = content.replace(/{subject}/g, meeting.subject); content = content.replace(/{addr}/g, meeting.roomName+"("+meeting.buildingName+")"); var msg = { "subject": MWF.LP.desktop.messsage.meetingInviteMessage, "content": content }; var messageItem = layout.desktop.message.addMessage(msg, ((data.body) ? data.body.startTime : "")); var tooltipItem = layout.desktop.message.addTooltip(msg, ((data.body) ? data.body.startTime : "")); tooltipItem.contentNode.addEvent("click", function(e){ layout.desktop.message.hide(); layout.desktop.openApplication(e, "Meeting", null); }); messageItem.contentNode.addEvent("click", function(e){ layout.desktop.message.addUnread(-1); layout.desktop.message.hide(); layout.desktop.openApplication(e, "Meeting", null); }); }.bind(this)); }, receiveMeetingCancelMessage: function(data){ debugger; this.getMeeting(data, function(meeting){ var content = MWF.LP.desktop.messsage.meetingCancel; content = content.replace(/{person}/g, MWF.name.cn(meeting.applicant)); var date = Date.parse(meeting.startTime).format("%Y-%m-%d- %H:%M"); content = content.replace(/{date}/g, date); content = content.replace(/{subject}/g, meeting.subject); content = content.replace(/{addr}/g, meeting.roomName+"("+meeting.buildingName+")"); var msg = { "subject": MWF.LP.desktop.messsage.meetingCancelMessage, "content": content }; var messageItem = layout.desktop.message.addMessage(msg, ((data.body) ? data.body.startTime : "")); var tooltipItem = layout.desktop.message.addTooltip(msg, ((data.body) ? data.body.startTime : "")); tooltipItem.contentNode.addEvent("click", function(e){ layout.desktop.message.hide(); layout.desktop.openApplication(e, "Meeting", null); }); messageItem.contentNode.addEvent("click", function(e){ layout.desktop.message.addUnread(-1); layout.desktop.message.hide(); layout.desktop.openApplication(e, "Meeting", null); }); }.bind(this)); }, receiveMeetingAcceptMessage: function(data){ debugger; this.getMeeting(data, function(meeting){ var content = MWF.LP.desktop.messsage.meetingAccept; //content = content.replace(/{person}/g, MWF.name.cn(meeting.applicant)); content = content.replace(/{person}/g, MWF.name.cn(data.person)); var date = Date.parse(meeting.startTime).format("%Y-%m-%d- %H:%M"); content = content.replace(/{date}/g, date); content = content.replace(/{subject}/g, meeting.subject); content = content.replace(/{addr}/g, meeting.roomName+"("+meeting.buildingName+")"); var msg = { "subject": MWF.LP.desktop.messsage.meetingAcceptMessage, "content": content }; var messageItem = layout.desktop.message.addMessage(msg, ((data.body) ? data.body.startTime : "")); var tooltipItem = layout.desktop.message.addTooltip(msg, ((data.body) ? data.body.startTime : "")); tooltipItem.contentNode.addEvent("click", function(e){ layout.desktop.message.hide(); layout.desktop.openApplication(e, "Meeting", null); }); messageItem.contentNode.addEvent("click", function(e){ layout.desktop.message.addUnread(-1); layout.desktop.message.hide(); layout.desktop.openApplication(e, "Meeting", null); }); }.bind(this)); }, receiveMeetingRejectMessage: function(data){ debugger; this.getMeeting(data, function(meeting){ var content = MWF.LP.desktop.messsage.meetingReject; //content = content.replace(/{person}/g, MWF.name.cn(meeting.applicant)); content = content.replace(/{person}/g, MWF.name.cn(data.person)); var date = Date.parse(meeting.startTime).format("%Y-%m-%d- %H:%M"); content = content.replace(/{date}/g, date); content = content.replace(/{subject}/g, meeting.subject); content = content.replace(/{addr}/g, meeting.roomName+"("+meeting.buildingName+")"); var msg = { "subject": MWF.LP.desktop.messsage.meetingRejectMessage, "content": content }; var messageItem = layout.desktop.message.addMessage(msg, ((data.body) ? data.body.startTime : "")); var tooltipItem = layout.desktop.message.addTooltip(msg, ((data.body) ? data.body.startTime : "")); tooltipItem.contentNode.addEvent("click", function(e){ layout.desktop.message.hide(); layout.desktop.openApplication(e, "Meeting", null); }); messageItem.contentNode.addEvent("click", function(e){ layout.desktop.message.addUnread(-1); layout.desktop.message.hide(); layout.desktop.openApplication(e, "Meeting", null); }); }.bind(this)); }, receiveAttendanceAppealInviteMessage : function(data){ var content = MWF.LP.desktop.messsage.attendanceAppealInvite; content = content.replace(/{subject}/g, data.subject); var msg = { "subject": MWF.LP.desktop.messsage.attendanceAppealInviteMessage, "content": content }; var messageItem = layout.desktop.message.addMessage(msg); var tooltipItem = layout.desktop.message.addTooltip(msg); tooltipItem.contentNode.addEvent("click", function(e){ layout.desktop.message.hide(); layout.desktop.openApplication(e, "Attendance", {"curNaviId":"13"}); }); messageItem.contentNode.addEvent("click", function(e){ layout.desktop.message.addUnread(-1); layout.desktop.message.hide(); layout.desktop.openApplication(e, "Attendance", {"curNaviId":"13"}); }); }, receiveAttendanceAppealAcceptMessage : function(data){ var content = MWF.LP.desktop.messsage.attendanceAppealAccept; content = content.replace(/{subject}/g, data.subject); var msg = { "subject": MWF.LP.desktop.messsage.attendanceAppealAcceptMessage, "content": content }; var messageItem = layout.desktop.message.addMessage(msg); var tooltipItem = layout.desktop.message.addTooltip(msg); tooltipItem.contentNode.addEvent("click", function(e){ layout.desktop.message.hide(); layout.desktop.openApplication(e, "Attendance", {"curNaviId":"12"}); }); messageItem.contentNode.addEvent("click", function(e){ layout.desktop.message.addUnread(-1); layout.desktop.message.hide(); layout.desktop.openApplication(e, "Attendance", {"curNaviId":"12"}); }); }, receiveAttendanceAppealRejectMessage : function(data){ var content = MWF.LP.desktop.messsage.attendanceAppealReject; content = content.replace(/{subject}/g, data.subject); var msg = { "subject": MWF.LP.desktop.messsage.attendanceAppealRejectMessage, "content": content }; var messageItem = layout.desktop.message.addMessage(msg); var tooltipItem = layout.desktop.message.addTooltip(msg); tooltipItem.contentNode.addEvent("click", function(e){ layout.desktop.message.hide(); layout.desktop.openApplication(e, "Attendance", {"curNaviId":"12"}); }); messageItem.contentNode.addEvent("click", function(e){ layout.desktop.message.addUnread(-1); layout.desktop.message.hide(); layout.desktop.openApplication(e, "Attendance", {"curNaviId":"12"}); }); }, receiveCalendarAlarmMessage: function(data){ debugger; var content = MWF.LP.desktop.messsage.canlendarAlarm; content = content.replace(/{title}/g, data.title); var msg = { "subject": MWF.LP.desktop.messsage.canlendarAlarmMessage, "content": content }; var messageItem = layout.desktop.message.addMessage(msg); var tooltipItem = layout.desktop.message.addTooltip(msg); tooltipItem.contentNode.addEvent("click", function(e){ layout.desktop.message.hide(); if ( layout.desktop.apps && layout.desktop.apps["Calendar"] ) { if( layout.desktop.apps["Calendar"].openEvent ){ layout.desktop.apps["Calendar"].setCurrent(); layout.desktop.apps["Calendar"].openEvent( data.body.id ); }else if(layout.desktop.apps["Calendar"].options){ layout.desktop.apps["Calendar"].options.eventId = data.body.id; layout.desktop.apps["Calendar"].setCurrent(); }else{ layout.desktop.openApplication(e, "Calendar", {"eventId": data.body.id }); } }else{ layout.desktop.openApplication(e, "Calendar", {"eventId": data.body.id }); } }); messageItem.contentNode.addEvent("click", function(e){ layout.desktop.message.addUnread(-1); layout.desktop.message.hide(); if ( layout.desktop.apps && layout.desktop.apps["Calendar"] ) { if( layout.desktop.apps["Calendar"].openEvent ){ layout.desktop.apps["Calendar"].setCurrent(); layout.desktop.apps["Calendar"].openEvent( data.body.id ); }else if(layout.desktop.apps["Calendar"].options){ layout.desktop.apps["Calendar"].options.eventId = data.body.id; layout.desktop.apps["Calendar"].setCurrent(); }else{ layout.desktop.openApplication(e, "Calendar", {"eventId": data.body.id }); } }else{ layout.desktop.openApplication(e, "Calendar", {"eventId": data.body.id }); } }); }, receiveTeamWorkMessage: function(data){ debugger; var task = data.body; //var content = MWF.LP.desktop.messsage.receiveTask+"《"+task.title+"》, "+MWF.LP.desktop.messsage.activity+": "+(task.activityName || "")+""; var content = data.title; //content += "
"+MWF.LP.desktop.messsage.teamwork.creatorPerson+": "+task.creatorPerson+"; "+ // ""+MWF.LP.desktop.messsage.teamwork.executor+": "+task.executor+""; var msg = { "subject": task.name, "content": content }; var messageItem = layout.desktop.message.addMessage(msg); var tooltipItem = layout.desktop.message.addTooltip(msg); tooltipItem.contentNode.addEvent("click", function(e){ layout.desktop.message.hide(); var options = {"taskId": task.id, "projectId": task.project}; layout.desktop.openApplication(e, "TeamWork.Task", options); }.bind(this)); messageItem.contentNode.addEvent("click", function(e){ layout.desktop.message.addUnread(-1); layout.desktop.message.hide(); var options = {"taskId": task.id, "projectId": task.project}; layout.desktop.openApplication(e, "TeamWork.Task", options); }.bind(this)); }, });