📄 send.inc
字号:
<%
'************************************************************************************************
' 文件名: send.inc
' Copyright(c) 2001-2002 上海阿尔卡特网络支援系统有限公司
'
' 创建人 : 周秋舫
' 日 期 : 2002-05-13
' 修改历史 :
' ****年**月**日 ****** 修改内容:**************************************************
' 功能描述 : send.asp的包含文件,主要是服务器端的一些函数实现
' FormMsg() : 构造一个发送消息的Form
' ActionLink() : 构造Link
' SaveMessage() : 保存到草稿箱
' SendMessage() : 发送消息
' NewMsgId() : 产生一个唯一的消息标识作为t_msg.msg_id
' GetReplyReceivers(sReceivers, sSender) '' 全部回复时根据原消息的发件人和收件人产生本消息的收件人
' 版 本 :
'************************************************************************************************
Function FormMsg()
dim sSQL, crs, rs
dim sParentMsgId, sSubject, sContent, sFolder, sSender, sReceiver, sSendTime
if Not IsEmpty(pOriginalMsgSerial) then
sSQL = "select * from t_msg where emp_serial = " & GetEmpSerial & " and serial = " & pOriginalMsgSerial
elseif Not IsEmpty(pMsgSerial) then
sSQL = "select * from t_msg where emp_serial = " & GetEmpSerial & " and serial = " & pMsgSerial
end if
' response.write sSQL & "<br>": response.end
if sSQL <> "" then
set crs = New CRecordset
set rs = crs.Open(dbLocal, sSQL)
if rs.EOF then
crs.Close()
Response.Clear
Response.Write "<script language=""javascript"">alert(""该消息已被删除,请刷新草稿箱!"");window.close();</script>"
Response.End
''Response.Clear
''Server.Transfer("../common/error.asp")
''Response.End
end if
if Not IsEmpty(pOriginalMsgSerial) then
sParentMsgId = crs.GetValue("msg_id") '' 原消息的 msg_id 字段作为新消息的 ParentMsgId
elseif Not IsEmpty(pMsgSerial) then
sParentMsgId = crs.GetValue("parent_msg_id") '' ParentMsgId 保持不变
end if
sSubject = crs.GetValue("subject")
sContent = crs.GetValue("content")
sSender = crs.GetValue("sender")
sSendTime = crs.GetValue("send_time")
sReceiver = crs.GetValue("receiver")
end if
if Not IsEmpty(pOriginalMsgSerial) then
'' 附加原始消息
sContent = vbLF & vbLF & vbLF & vbLF & vbLF & _
"----原始消息----" & vbLF & _
"发件人: " & TransEmpSerial(dbLocal, sSender) & vbLF & _
"收件人: " & TransEmpSerial(dbLocal, sReceiver) & vbLF & _
"主 题: " & sSubject & vbLF & _
sContent & vbLF
if pAction = "reply" then
sSubject = "答复: " & sSubject '' 表明是回复消息,在原消息主题前加 “答复: ” 字样,并且接收者缺省为原消息的发送者
sReceiver = sSender
elseif pAction = "replyall" then
sSubject = "答复: " & sSubject '' 表明是回复消息,,在原消息主题前加 “答复: ” 字样,并且接收者缺省为原消息的发送者和原消息的所有接收者
sReceiver = GetReplyReceivers(sReceiver, sSender)
elseif pAction = "forward" then
sSubject = "转发: " & sSubject '' 表明是转发消息,在原消息主题前加 “转发: ” 字样,并且接收者应为空
sReceiver = ""
end if
end if
FormMsg = _
"<table cellspacing=1 cellpadding=2 border=0 bgcolor=""silver"" width=""480"" align=center>" & vbLF & _
"<form method=post name=""frmSendMsg"" action=""send.asp"">" & vbLF & _
"<input type=""hidden"" name=""FormAction"">" & vbLF & _
"<input type=""hidden"" name=""msg_type"" value=""1"">" & vbLF & _
"<input type=""hidden"" name=""original_msg_serial"" value=""" & pOriginalMsgSerial & """>" & vbLF & _
"<input type=""hidden"" name=""msg_serial"" value=""" & pMsgSerial & """>" & vbLF & _
"<input type=""hidden"" name=""parent_msg_id"" value=""" & sParentMsgId & """>" & vbLF & _
"<tr bgcolor=white height=20 style=""cursor:hand"">" & vbLF & _
" <td width=""60"" ondblclick=""getReceiver('" & sReceiver & "');""> 收件人:</td>" & vbLF & _
" <td ondblclick=""getReceiver('" & sReceiver & "');"">" & vbLF & _
"<input type=""hidden"" name=""receiver_serial"" value=""" & sReceiver & """ size=59 maxlength=256 readonly>" & vbLF & _
"<input type=""text"" name=""receiver_name"" value=""" & TransEmpSerial(dbLocal, sReceiver) & """ size=60 maxlength=256 readonly>" & vbLF & _
"<img border=0 src=""../images/openswin.gif"" align=absmiddle style=""cursor:hand"" onclick=""getReceiver('" & sReceiver & "');""></td></tr>" & vbLF & _
"<tr bgcolor=white height=20>" & vbLF & _
" <td> 主 题:</td>" & vblF & _
" <td><input type=""text"" name=""subject"" value=""" & sSubject & """ size=66 maxlength=256></td></tr>" & vbLF & _
"<tr height=1 bgcolor=white><td colspan=2></td></tr>" & vbLF & _
"<tr bgcolor=white>" & vbLF & _
" <td colspan=2 valign=top style=""color:blue;text-align:top"">" & vbLF & _
"<!--span style=""color:black""> 内 容:</span><br-->" & vbLF & _
" <textarea cols=74 rows=19 name=""content"" style=""color:blue"">" & sContent & "</textarea><br><img height=8></td></tr>" & vbLF & _
"<tr bgcolor=""#0099cc"" height=20>" & vbLF & _
" <td align=center colspan=2>" & ActionLink & "</td></tr>" & vbLF & _
"</table>" & vbLF & _
"</form>" & vbLF & _
"<select id=""slctReceivers"" multiple size=10 style=""display:none"">" & selectOptions(dbLocal,"t_employee", "serial", "name", "", "co_id=" & GetCoId & " and isdummy=0 and dismissed=0") & "</select>" & vbLF
End Function
Function ActionLink()
ActionLink = _
"<a href=""#"" onclick=""btnSave_OnClick()"">保存至草稿箱</a>" & _
" " & _
"<a href=""#"" onclick=""btnSend_OnClick()"">发 送</a>"
'' 如果是从草稿箱取出来的消息,则显示删除/永久删除链接
'' 如果是从回收站中取出来的消息,则显示永久删除链接
End Function
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'' SaveMessage()
'' 将消息保存到发件箱
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
sub SaveMessage()
dim sSQL
dim sParentMsgId : sParentMsgId = GetParam("parent_msg_id")
dim sMsgType : sMsgType = GetParam("msg_type")
dim sSubject : sSubject = GetParam("subject")
dim sContent : sContent = GetParam("content")
dim sSender : sSender = GetEmpSerial
dim sReceiver : sReceiver = GetParam("receiver_serial")
dim sEmpSerial : sEmpSerial = GetEmpSerial() '' 消息的主人是我自己
dim sFolder : sFolder = DRAFT_BOX '' 常量DRAFT_BOX在msg.inc中有定义,表示草稿箱
dim sStatus : sStatus = MSG_READ '' 常量 MSG_READ 在 msg.inc 中有定义,表示状态为已读
'' 草稿箱中的send_time其实是插入或更新时间
dim sMsgId : sMsgId = NewMsgId
if IsEmpty(pMsgSerial) then '' 第一次保存到草稿箱,作插入动作
sSQL = "insert into t_msg(emp_serial, msg_id, msg_type, subject, content, folder, sender, send_time, receiver, parent_msg_id, status)" & _
" values(" & ToSQL(sEmpSerial, "Number") & _
", " & ToSQL(sMsgId, "Text") & _
", " & ToSQL(sMsgType, "Number") & _
", " & ToSQL(sSubject, "Text") & _
", " & ToSQL(sContent, "Text") & _
", " & ToSQL(sFolder, "Number") & _
", " & ToSQL(sSender, "Number") & _
", " & ToSQL(now, "Text") & _
", " & ToSQL(sReceiver, "Text") & _
", " & ToSQL(sParentMsgId, "Text") & _
", " & ToSQL(sStatus, "Number") & _
")"
''Response.Write sSQL & "<br>"
call ExecuteSQL(dbLocal, sSQL)
'' 这时,应该把这封消息从草稿箱中取出来,重新显示,关键是取到这封消息的msg_serial,对于第一次保存的情况,很难取到(再次保存到草稿箱时msg_serial不变)
'' 有一种方法可以取到,就是在第一次保存的时候产生一个MsgId(这个MsgId是唯一的),那根据这个MsgId就可以取回新插入消息的msg_serial了
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -