formatMessageData = function (msg, sessionData, tmpls) { var content = msg.content, messageTypes = constants.messageType, httpReg = constants.httpReg, o = { typeName: '', senderId: msg.senderId, senderName: msg.senderName, messageId: msg.messageId, messageTime: msg.messageTime, profileImage: msg.profileImage, createTime: util.getDateSummaryDesc(moment.unix(msg.messageTime / 1000), moment.unix(msg.serviceTime), 1) }; for (var i in messageTypes) { if (messageTypes.hasOwnProperty(i) && messageTypes[i] == msg.messageType) { o.typeName = i; } } if (!content) return; switch (msg.messageType) { case messageTypes.image: content = json.parse(content); content.FileSize = util.getFileSize(content.FileSize); content.ThumbnailUrl = util.getFileUrl(content.Thumbnail); content.fileName = content.N; _.extend(o, content); break; case messageTypes.document: content = json.parse(content); content.Size = util.getFileSize(content.Size); content.FileType = util.getFileType({"name": content.File}, true); content.DownloadUrl = util.getFileUrl(content.File, true, content.Name); _.extend(o, content); break; case messageTypes.audio: content = json.parse(content); content.File = util.getFileUrl(content.File); _.extend(o, content); break; case messageTypes.location: content = json.parse(content); content.messageTime = parseInt(o.messageTime / 1000, 10); _.extend(o, content); break; case messageTypes.workNotice: // 工作提醒 content = json.parse(content); _.extend(o, { "title": content.T, "desc": content.C, "feedid": content.F }); break; case messageTypes.systemPrompt: content = json.parse(content); var systemPrompt = constants.systemPrompt, t = content.T, u = content.U, _html = [], _s = ''; switch (t) { case systemPrompt.exit: _s = '退出群对话'; break; case systemPrompt.invite: _s = '邀请'; _.each(content.A, function (id) { var _n; if(id == loginUserData.id){ _n = '你'; } else { var _e = util.getContactDataById(id, "p"); if(_e){ _n = _e.name; } } if(_n){ _html.push(_n); } }); _s += _html.join("、") + "加入群对话"; break; case systemPrompt.kick: _s = '将'; _.each(content.A, function (id) { var _n; if(id == loginUserData.id){ _n = '你'; } else { var _e = util.getContactDataById(id, "p"); if(_e){ _n = _e.name; } } if(_n){ _html.push(_n); } }); _s += _html.join("、") + "移出群对话"; break; case systemPrompt.name: if (content.V) { _s = "将群对话的名称修改为:" + content.V; } else { _s = "取消了群对话名称"; } break; } o.content = _s; break; case messageTypes.text: default: content = content.replace(/</g, '<').replace(/>/g, '>').replace(/[\n\r]/g, '<br/>').replace(new RegExp(' ', 'g'), ' '); content = content.replace(httpReg, function (httpText) { var protocolReg = /https{0,1}|ftp/gi; return '<a href="' + (protocolReg.test(httpText) ? '' : 'http://') + httpText + '" target="_blank">' + httpText + '</a>'; }); content = util.emoji(content); o.content = content; } if (tmpls) { return tmpls[o.typeName](o); } return o; },
getMessageHtml = function (tmpl, msg) { var content = msg.content, messageTypes = constants.messageType, httpReg = new RegExp("(http[s]{0,1}|ftp)://[a-zA-Z0-9\\.\\-]+\\.([a-zA-Z]{2,4})(:\\d+)?(/[a-zA-Z0-9\\.\\-~!@#$%^&*+?:_/=<>]*)?|www\\.[a-z0-9\\-]+(\\.[a-zA-Z]{2,4}){1,2}(:\\d+)?/?", "gi"), //用于判断文本内容超链接 o = { typeName: '', senderId: msg.senderId, senderName: msg.senderName, messageId: msg.messageId, messageTime: msg.messageTime, profileImage: msg.profileImage, createTime: util.getDateSummaryDesc(moment.unix(msg.messageTime/1000), moment.unix(msg.serviceTime), 1) }; for (var i in messageTypes) { if (messageTypes.hasOwnProperty(i) && messageTypes[i] == msg.messageType) { o.typeName = i; } } if(!content) return ; switch (msg.messageType) { case messageTypes.emotion://大表情 var objContent = json.parse(content);//转换为JSON对象 var directoryStr=objContent.PackId+'/'; var imgNameStr='fs_bee_'+(objContent.Index-1)+'.gif'; var imgStr='<img class="fs-img-emotion" src="'+FS.ASSETS_PATH+'/images/'+directoryStr+imgNameStr+'">'; o.content = imgStr; break; case messageTypes.image: content = json.parse(content); content.FileSize = util.getFileSize(content.FileSize); content.ThumbnailUrl = util.getFileUrl(content.Thumbnail); content.fileName = content.N; _.extend(o, content); break; case messageTypes.document: content = json.parse(content); content.Size = util.getFileSize(content.Size); content.FileType = util.getFileType({"name": content.File}, true); content.DownloadUrl = util.getFileUrl(content.File, content.Name, true); _.extend(o, content); break; case messageTypes.audio: content = json.parse(content); content.File = getMp3Url(content.File); _.extend(o, content); break; case messageTypes.location: content = json.parse(content); content.messageTime = parseInt(o.messageTime/1000, 10); _.extend(o, content); break; case messageTypes.workNotice: // 工作提醒 content = json.parse(content); _.extend(o, { "title": content.T, "desc": content.C, "feedid": content.F }); break; case messageTypes.linkWorkItem: // 链接到工作项 content = json.parse(content); var title = { 'P1': '日志', 'P2': '周计划', 'P3': '月计划', 'A1': '普通审批', 'A2': '请假单', 'A3': '报销单', 'A4': '差旅单', 'A5': '借款单', 'W': '指令' }; var _t = ''; if(content.T == 'W'){ _t = title['W']; } else { if(content.T == 'P' && content.ST == 1){ _t = moment(content.D).format('MM月DD日的日志'); } else { _t = title[content.T + content.ST]; } } _.extend(o, { "title": _t, "desc": content.C, "feedid": content.F }); break; case messageTypes.linkWorkSchdule: // 链接到日程 content = json.parse(content); _.extend(o, { "title": moment(content.ST).format('MM月DD日 HH:mm的日程'), "desc": content.C, "feedid": content.F }); break; case messageTypes.systemPrompt: content = json.parse(content); var systemPrompt = constants.systemPrompt, t = content.T, u = content.U, _html = [], _s = ''; switch (t) { case systemPrompt.exit: _s = '退出群对话'; break; case systemPrompt.invite: _s = '邀请'; _.each(content.A, function (id) { if(id == u) return ; var _n; if(id == currentUserData.id){ _n = '你'; } else { var _e = util.getContactDataById(id, "p"); if(_e){ _n = _e.name; } } if(_n){ _html.push(_n); } }); _s += _html.join("、") + "加入群对话"; break; case systemPrompt.kick: _s = '将'; _.each(content.A, function (id) { if(id == u) return ; var _n; if(id == currentUserData.id){ _n = '你'; } else { var _e = util.getContactDataById(id, "p"); if(_e){ _n = _e.name; } } if(_n){ _html.push(_n); } }); _s += _html.join("、") + "移出群对话"; break; case systemPrompt.name: if(content.V){ _s = "将群对话的名称修改为:" + content.V; } else { _s = "取消了群对话名称"; } break; } o.content = _s; break; case messageTypes.systemTextPrompt: // 纯文本型系统提示 o.content = content; break; case messageTypes.text: default: content = content.replace(/</g, '<').replace(/>/g, '>').replace(/[\n\r]/g, '<br/>').replace(new RegExp(' ', 'g'), ' '); content = content.replace(httpReg, function (httpText) { var protocolReg = /https{0,1}|ftp/gi; return '<a href="' + (protocolReg.test(httpText) ? '' : 'http://') + httpText + '" target="_blank">' + httpText + '</a>'; }); content = util.emoji(content); o.content = content; } return tmpl[o.typeName](o); };