showchat.jsp
上传用户:jhtang88
上传日期:2014-01-27
资源大小:28528k
文件大小:12k
源码类别:

Jsp/Servlet

开发平台:

Java

  1. <%@ page contentType="text/html;charset=utf-8"%>
  2. <%@ page import="com.redmoon.oa.person.*"%>
  3. <jsp:useBean id="privilege" scope="page" class="com.redmoon.oa.pvg.Privilege"/>
  4. <%
  5. String priv="read";
  6. if (!privilege.isUserPrivValid(request,priv))
  7. {
  8. out.println(cn.js.fan.web.SkinUtil.makeErrMsg(request, cn.js.fan.web.SkinUtil.LoadString(request, "pvg_invalid")));
  9. return;
  10. }
  11. UserSetupDb usd = new UserSetupDb();
  12. usd = usd.getUserSetupDb(privilege.getUser(request));
  13. %>
  14. <html>
  15. <head>
  16. <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  17. <meta name="GENERATOR" content="Microsoft FrontPage 4.0">
  18. <meta name="ProgId" content="FrontPage.Editor.Document">
  19. <title>聊天显示</title>
  20. <SCRIPT LANGUAGE=javascript>
  21. <!--
  22. // 播放声音
  23. function MM_controlSound(sndAction,_sndObj) { //v2.0
  24. try {
  25. var sndObj = eval( _sndObj );
  26. if (sndObj != null) {
  27. if (sndAction=='stop') {
  28. sndObj.stop();
  29. } else {
  30. if (navigator.appName == 'Netscape' ) {
  31. sndObj.play();
  32. } else {
  33. if (document.MM_WMP_DETECTED == null) {
  34. document.MM_WMP_DETECTED = false;
  35. var i;
  36. for( i in sndObj )
  37. if ( i == "ActiveMovie" ) {
  38. document.MM_WMP_DETECTED = true;
  39. break; 
  40. }
  41. }
  42. if (document.MM_WMP_DETECTED)
  43. sndObj.play();
  44. else if ( sndObj.FileName )
  45. sndObj.run();
  46. }
  47. }
  48. }
  49. }
  50. catch (e) {}
  51. }
  52. function notify() {
  53. <%if (usd.isChatSoundPlay()) {%>
  54. MM_controlSound('play','document.player','../sounds/msg.wav')
  55. <%}%>
  56. <%if (usd.isChatIconShow()) {%>
  57. notify_flash_lb();
  58. <%}%>
  59. }
  60. var notifyTimeOutId = 0;
  61. var notifyCount = 0;
  62. function notify_flash_lb()
  63. {
  64. if (notifyCount==1) {
  65. notifyCount = 0;
  66. try {
  67. window.top.bottomFrame.layer_lb.style.display = "none";
  68. }
  69. catch (e) {
  70. }
  71. return;
  72. }
  73. try {
  74. window.top.bottomFrame.layer_lb.style.display = "";
  75. }
  76. catch (e) {
  77. }
  78. notifyCount = 1;
  79. notifyTimeOutId = window.setTimeout("notify_flash_lb()", 5000); // 每隔5000毫秒钟刷新一次
  80. }
  81. // cookie操作
  82. function getCookieVal(offset)
  83. {
  84. var endstr=document.cookie.indexOf(";",offset);
  85. if(endstr==-1)
  86. endstr=document.cookie.length;
  87. return unescape(document.cookie.substring(offset,endstr));
  88. }
  89. function GetCookie(name)
  90. {
  91. var arg=name+"=";
  92. var alen=arg.length;
  93. var clen=document.cookie.length;
  94. var i=0;
  95. while(i<clen)
  96. {
  97. var j=i+alen;
  98. if(document.cookie.substring(i,j)==arg)
  99. return getCookieVal(j);
  100. i=document.cookie.indexOf(" ",i)+1;
  101. if(i==0) 
  102. break;
  103. }
  104. return null;
  105. }
  106. //盯人
  107. function lookat(sb)
  108. {
  109. var checkObj = eval("document.body");
  110. //判断对象是否为空
  111. if (checkObj == null)
  112. return;
  113. if(sb!="")
  114. {
  115. var rng = document.body.createTextRange();
  116. if (rng.findText(sb,-1,6)==true)//向前搜索大小写敏感,匹配整字
  117. {
  118.     var left,top;
  119.     left = rng.offsetLeft;
  120.     top = rng.offsetTop;
  121.     indicator.style.left = left+15;
  122.     indicator.style.top = top+document.body.scrollTop;
  123.     indicator.style.display = "";
  124.     //rng.select();
  125. //rng.scrollIntoView();
  126. }
  127. else
  128. {
  129. indicator.style.display = "none";
  130. }
  131. }
  132. }
  133. var infg = "#$#"
  134. function parsemyshow(myshow)
  135. {
  136. var aryword,tk
  137. tk = ""
  138. var nick,saytoname,talktime,color,say
  139. var talknum = 0
  140. var ismine=0
  141. if (myshow=="")
  142. return
  143. var mynick;
  144. if (typeof(window.parent.chatappletarea.getUser)=="function") {
  145. mynick = window.parent.chatappletarea.getUser();
  146. }
  147. aryword = myshow.split(infg)
  148. nick = aryword[0]
  149. if (nick!="yxbulletin")
  150. {
  151. talktime = aryword[1]
  152. if (aryword[2]=="y")
  153. srt = "[秘]"
  154. else
  155. srt = ""
  156. saytoname = aryword[3]
  157. expression = aryword[4]
  158. addimg = aryword[5]
  159. if (addimg!="")
  160. addimg="<IMG src=images/addimgs/" + addimg+".gif>"
  161. color = aryword[6]
  162. say = aryword[7]
  163. if (!isnickshield(nick))//nick被屏蔽
  164. {
  165. if (aryword[2]=="y")
  166. {
  167. if (saytoname==mynick)
  168. ismine = 2//别人对自己说的话
  169. else if (nick==mynick)
  170. ismine = 1//自己对别人
  171. else
  172. tk="";//别人秘谈的话则紧接着读下一条
  173. }
  174. else
  175. {
  176. if (saytoname==mynick) {
  177. ismine = 2 // 别人对自己说的话
  178. notify();
  179. }
  180. else if (nick==mynick)
  181. ismine = 1 // 自己所说的话
  182. else
  183. ismine = 3 // 不是属于自己的话即公共的话,不是秘谈
  184. }
  185. if (ismine) {
  186. tk = "<table class='p10'><tr><td width='100%'><font color='ff00ff'>"+srt+
  187. "</font><font color='#0000FF'><a href=javascript:window.parent.talkarea.getname('"+ nick +
  188.  "')>" +nick+"</a>" +expression+"对<a href=javascript:window.parent.talkarea.getname('"+
  189.  saytoname+"') style='COLOR: salmon'>"+saytoname+"</a>"+addimg+"说:</font><font color=#"+
  190.  color+">"+say+"</font><font size=2 style='COLOR: mediumslateblue'>["+talktime+"]</font></td></tr></table>"
  191. }
  192. }
  193. else
  194. tk = ""//被屏蔽
  195. }
  196. else
  197. {
  198. action = aryword[1]
  199. user = aryword[2]
  200. switch (action)
  201. {
  202. case "login":tk = user+"进入聊天室!"+"<br>";break
  203. case "logout":tk = user+"退出聊天室!"+"<br>";break
  204. case "Dropping":tk = user+"悄悄地退出了聊天室!"+"<br>";break;
  205. case "rename":tk = user+"已更名为"+aryword[3]+"<br>";break;
  206. case "info":tk=user+"<br>";break;
  207. case "kicksb":
  208. if (user == mynick)
  209. {
  210. tk = "对不起,您已经被踢出聊天室!"+"<br>";
  211. tk = "<table><tr><td>" + tk + "</td></tr></table>"
  212. showchat(tk,1);
  213. //用新页面的URL替换当前的历史纪录,这样浏览历史记录中就只有一个页面,后退按钮永远不会变为可用
  214. window.top.location.replace("../exit_oa.jsp?iskicked=yes");
  215. }
  216. else
  217. tk = user+"被踢出聊天室!<br>";
  218. break;
  219. default:return
  220. }
  221. tk = "<table><tr><td>" + tk + "</td></tr></table>"
  222. ismine = 3//公共消息
  223. }
  224. showchat(tk,ismine)
  225. //使跟踪lookat
  226. lookat(GetCookie("lookat"));
  227. }
  228. var issplit = false;
  229. function getissplit()
  230. {
  231. return window.parent.getissplit()
  232. }
  233. function showchat(tk,ismine)
  234. {
  235. if (tk=="")
  236. return;
  237. if (ismine==2 && typeof(top.chatappletarea.msgbtn)=="object")
  238. top.chatappletarea.msgbtn.click();//当有别人对自己说的话时,向foashell传递消息
  239. if (typeof(document.all.talkspan)!="object")
  240. return;
  241. if (ismine>=2 && typeof(window.parent.chatappletarea.playMsgAudio)=="function") {
  242. window.parent.chatappletarea.playMsgAudio();
  243. }
  244. if (getissplit() && ismine>=1 && ismine!=3)
  245. window.parent.secretarea.inserttk(tk)//在scretarea插入对自己的话
  246. else//在showchatarea正文部分插入茶室内新说的话
  247. {
  248. if (tk!="")
  249. talkspan.insertAdjacentHTML("BeforeEnd" ,tk)
  250. }
  251. }
  252. var autoScrollOn = 1;
  253. var scrollOnFunction;
  254. var scrollOffFunction; 
  255. function scrollit()
  256. {
  257. autoScrollOn=1;StartUp();return true;
  258. }
  259. function scrollWindow( )
  260. {
  261. if ( autoScrollOn == 1 )
  262. {
  263. self.scroll(0, 65000);
  264. this.scroll(0, 65000);
  265. setTimeout("scrollWindow()",300);
  266. }
  267. }
  268.  
  269. function scrollOn( )
  270. {
  271. autoScrollOn = 1;scrollWindow( );
  272. }
  273.   
  274. function scrollOff( )
  275. {autoScrollOn = 0;}
  276.   
  277. function StartUp( )
  278. {
  279. this.onblur  = scrollOnFunction; 
  280. this.onfocus = scrollOffFunction;
  281.     scrollWindow( );
  282. }
  283. scrollOnFunction = new Function("scrollOn( )")
  284. scrollOffFunction = new Function("scrollOff( )")
  285. StartUp();
  286. var shieldnicks=""
  287. function doshieldsb(nick)
  288. {
  289. var d,t
  290. t=""
  291. var c = ":";
  292. d = new Date();
  293. t += d.getHours() + c;
  294. t += d.getMinutes() + c;
  295. t += d.getSeconds() 
  296. var dotk
  297. if (isnickshield(nick))
  298. dotk = "<table class='p10'><tr><td width='100%'><font color='ff00ff'>[秘]</font><font color='#0000FF'>聊天室答复:</font><font color=#000000>呢称"+nick+"已被屏蔽!</font><font size=2 style='COLOR: mediumslateblue'>[" + t + "]</font></td></tr></table>"
  299. else
  300. {
  301. shieldnicks += "#"+nick
  302.    dotk = "<table class='p10'><tr><td width='100%'><font color='ff00ff'>[秘]</font><font color='#0000FF'>聊天室答复:</font><font color=#000000>屏蔽了呢称"+nick+"!</font><font size=2 style='COLOR: mediumslateblue'>[" + t + "]</font></td></tr></table>"
  303.    }
  304. talkspan.insertAdjacentHTML("BeforeEnd" ,dotk)
  305. }
  306. function doacceptsb(nick)
  307. {
  308. var d,t
  309. t=""
  310. var c = ":";
  311. d = new Date();
  312. t += d.getHours() + c;
  313. t += d.getMinutes() + c;
  314. t += d.getSeconds()
  315. var temp = shieldnicks+"#"
  316. var dotk = ""
  317. var which = "#"+nick+"#"
  318. if (temp.search(which,"i")==-1)
  319.    {
  320.    //没有找到解禁的呢称
  321.    dotk = "<table class='p10'><tr><td width='100%'><font color='ff00ff'>[秘]</font><font color='#0000FF'>聊天室答复:</font><font color=#000000>呢称"+nick+"未曾被屏蔽!</font><font size=2 style='COLOR: mediumslateblue'>[" + t + "]</font></td></tr></table>"
  322. talkspan.insertAdjacentHTML("BeforeEnd" ,dotk)
  323. return
  324. }
  325. var regwhich = new RegExp(which,"i")
  326. shieldnicks = temp.replace(regwhich,"#")
  327. if (shieldnicks.length==1)
  328. shieldnicks = ""//如果是仅剩一个字符#则直接清空以免被else后的语句置为带有一个空格的字符串
  329. if (shieldnicks.charAt(shieldnicks.length-1)=="#")
  330. {
  331. shieldnicks.substr(0,shieldnicks.length-1)
  332. }
  333.    dotk = "<table class='p10'><tr><td width='100%'><font color='ff00ff'>[秘]</font><font color='#0000FF'>聊天室答复:</font><font color=#000000>解禁了呢称"+nick+"!</font><font size=2 style='COLOR: mediumslateblue'>[" + t + "]</font></td></tr></table>"
  334. talkspan.insertAdjacentHTML("BeforeEnd" ,dotk)
  335. }
  336. function doshieldlist()
  337. {
  338. var dotk=""
  339. var d,t
  340. t=""
  341. var c = ":";
  342. d = new Date();
  343. t += d.getHours() + c;
  344. t += d.getMinutes() + c;
  345. t += d.getSeconds()
  346.    if (shieldnicks=="")
  347.    {
  348.    dotk = "<table class='p10'><tr><td width='100%'><font color='ff00ff'>[秘]</font><font color='#0000FF'>聊天室答复:</font><font color=#000000>没有被屏蔽的呢称!</font><font size=2 style='COLOR: mediumslateblue'>[" + t + "]</font></td></tr></table>"
  349. talkspan.insertAdjacentHTML("BeforeEnd" ,dotk)
  350. return
  351. }
  352. var aryNick,tempnicks
  353. tempnicks = shieldnicks
  354. tempnicks = tempnicks.substr(1,tempnicks.length-1)//去掉第一个#
  355. aryNick = tempnicks.split("#")
  356.    dotk = "<table class='p10'><tr><td width='100%'><font color='ff00ff'>[秘]</font><font color='#0000FF'>聊天室答复:</font><font color=#000000>被屏蔽的呢称有--"
  357. for (i=0; i<aryNick.length; i++)
  358. {
  359. dotk += aryNick[i]+"  "
  360. }
  361. dotk +="!</font><font size=2 style='COLOR: mediumslateblue'>[" + t + "]</font></td></tr></table>"
  362. talkspan.insertAdjacentHTML("BeforeEnd" ,dotk)
  363. }
  364. function doclearlist()
  365. {
  366. shieldnicks = ""
  367.    var dotk = ""
  368. var d,t
  369. t=""
  370. var c = ":";
  371. d = new Date();
  372. t += d.getHours() + c;
  373. t += d.getMinutes() + c;
  374. t += d.getSeconds()
  375.    dotk = "<table class='p10'><tr><td width='100%'><font color='ff00ff'>[秘]</font><font color='#0000FF'>聊天室答复:</font><font color=#000000>已清除所有被屏蔽的呢称!</font><font size=2 style='COLOR: mediumslateblue'>[" + t + "]</font></td></tr></table>"
  376. talkspan.insertAdjacentHTML("BeforeEnd" ,dotk)
  377. }
  378. function isnickshield(nick)
  379. {
  380. if (shieldnicks=="")
  381. return false
  382. var temp = shieldnicks+"#"
  383. var dotk = ""
  384. var which = "#"+nick+"#"
  385. if (temp.search(which,"i")==-1)
  386.    //没有找到解禁的呢称
  387. return false
  388. return true
  389. }
  390. //-->
  391. </SCRIPT>
  392. <STYLE type=text/css><!--
  393. body {  font-family: "宋体";font-size : 10pt;}
  394. .p11 {  font-family: "宋体"; font-size: 11pt}
  395. .p10 {  font-family: "宋体"; font-size: 11pt}
  396. a{text-transform: none; text-decoration: none;color:#228b22}
  397. a:hover {text-decoration: none; color: #ff00ff;}
  398. --></STYLE>
  399. <link href="common.css" rel="stylesheet" type="text/css">
  400. </head>
  401. <body>
  402. <EMBED NAME='player' SRC='../sounds/msg.wav' LOOP=false AUTOSTART=false MASTERSOUND HIDDEN=true WIDTH=100 HEIGHT=50></EMBED> 
  403. <IMG alt=锁定 id=indicator src="images/DOGGIE.GIF" style="DISPLAY: none; LEFT: 51px; POSITION: absolute; TOP: 616px"> 
  404. <span id=talkspan name=talkspan></span>
  405. </body>
  406. </html>