$expires = 30; //クッキーの保持日数\r
$afk_time = 1000 * 60 * 60; //AFKと判定する時間(ミリ秒で指定すること)\r
$log_file_name = "logfile%d.txt"; //ログファイル名(%dはそのままにしておくこと)\r
+$pastlogfile_pattern = "logfile%d(_+.*)?\.txt"; //過去ログと判定する正規表現\r
$system_name = "system"; //システム発言を表す名前(chat.phpと同じにすること)\r
$entered_message = "%sが入室しました";\r
$quited_message = "%sが退室しました";\r
$("input[name=close]").click(function(e){\r
$("#help_frame").css("display","none");\r
});\r
- $("input[name=openPastlog]").click(openPastlogEventListener);\r
$("#whisper_list_view").click(function(e){\r
$("#whisper_list").toggle();\r
});\r
$socket.on("connect",function(){\r
$socket.on("req pastlog",pastLogEventListerner);\r
$socket.on("req msg",getMessageEventListerner);\r
- $socket.on("req pastloglist",CreatePastLogList);\r
});\r
});\r
\r
$("#enter_message").append(msg);\r
if(logflag)\r
{\r
- $socket.json.emit("get pastLogList",{rno:document.chat_form.rno.value});\r
getCurretLog();\r
}\r
}\r
}\r
}\r
\r
-function CreatePastLogList(text)\r
-{\r
- $("#enter_frame form select[name=past]").empty();\r
- var rno = document.chat_form.rno.value;\r
- var file = text.split("\n");\r
- for(var i = 0; i < file.length; i++)\r
- {\r
- var logname = file[i];\r
- if(logname == "")\r
- continue;\r
- var element = document.createElement("option");\r
- element.value = logname;\r
- element.appendChild(document.createTextNode(logname));\r
- $("#enter_frame form select[name=past]").append(element);\r
- }\r
-}\r
-\r
function getCurretLog()\r
{\r
var rno = document.chat_form.rno.value;\r
$socket.emit("get pastLog",url);\r
}\r
\r
-function openPastlogEventListener()\r
-{\r
- $tid = 0;\r
- $("#message").empty();\r
- $("#namelist").empty();\r
- var url = document.enter_form.past.options[document.enter_form.past.selectedIndex].value;\r
- $socket.emit("get pastLog",url);\r
-}\r
-\r
function pastLogEventListerner(msg)\r
{\r
if(IsRomMode() && $roominfo.type != 0 && $roominfo.admin == false)\r
\r
var mailto = "";\r
var date = new Date(Date.parse(msg.date));\r
- if(msg.name != $system_name)\r
+ var name = util.htmlspecialchars(msg.name);\r
+ if(name != $system_name && name in $names)\r
{\r
- color = $names[msg.name].color;\r
- $names[msg.name].time = date.getTime();\r
+ color = $names[name].color;\r
+ $names[name].time = date.getTime();\r
namepart = $("<a/>")\r
- .attr("href",GetNameLink(msg.name))\r
+ .attr("href",GetNameLink(name))\r
+ .attr("target","_blank")\r
.css("color",color)\r
- .text(util.htmlspecialchars(msg.name));\r
+ .text(name);\r
}else{\r
- namepart = $("<span/>").append(msg.name);\r
+ namepart = $("<span/>").append(name);\r
}\r
if(msg.ip != "")\r
namepart.append("@" + msg.ip);\r
{\r
var atag = $("<a/>")\r
.attr("href",GetNameLink(name))\r
+ .attr("target","_blank")\r
.css("color",$names[name].color)\r
.text(name);\r
var spantag = $("<span/>")\r
\r
function AddBold()\r
{\r
- InsertAtCaret(document.chat_form.message,"[b][/b]");\r
+ var text = GetSelection(document.chat_form.message);\r
+ ReplaceSelection(document.chat_form.message,sprintf("[b]%s[/b]",text));\r
}\r
\r
function AddItalic()\r
{\r
- InsertAtCaret(document.chat_form.message,"[i][/i]");\r
+ var text = GetSelection(document.chat_form.message);\r
+ ReplaceSelection(document.chat_form.message,sprintf("[i]%s[/i]",text));\r
}\r
\r
function AddStrike()\r
{\r
- InsertAtCaret(document.chat_form.message,"[s][/s]");\r
+ var text = GetSelection(document.chat_form.message);\r
+ ReplaceSelection(document.chat_form.message,sprintf("[s]%s[/s]",text));\r
}\r
\r
function AddFontSize(size)\r
{\r
- InsertAtCaret(document.chat_form.message,sprintf("[size=%f][/size]",size));\r
+ var text = GetSelection(document.chat_form.message);\r
+ ReplaceSelection(document.chat_form.message,sprintf("[size=%f]%s[/size]",size,text));\r
}\r
\r
-function InsertAtCaret(element, text) {\r
+function GetSelection(element)\r
+{\r
if (document.selection) {\r
element.focus();\r
var sel = document.selection.createRange();\r
- sel.text = text;\r
- element.focus();\r
+ return sel.text;\r
} else if (element.selectionStart || element.selectionStart === 0) {\r
var startPos = element.selectionStart;\r
var endPos = element.selectionEnd;\r
var scrollTop = element.scrollTop;\r
- element.value = element.value.substring(0, startPos) + text + element.value.substring(endPos, element.value.length);\r
- element.focus();\r
- element.selectionStart = startPos + text.length;\r
- element.selectionEnd = startPos + text.length;\r
- element.scrollTop = scrollTop;\r
- } else {\r
- element.value += text;\r
+ return element.value.substring(startPos,endPos);\r
+ }else{\r
+ return "";\r
+ }\r
+}\r
+\r
+function ReplaceSelection(element,text)\r
+{\r
+ if (document.selection) {\r
element.focus();\r
+ var sel = document.selection.createRange();\r
+ sel.text = text;\r
+ } else if (element.selectionStart || element.selectionStart === 0) {\r
+ var startPos = element.selectionStart;\r
+ var endPos = element.selectionEnd;\r
+ element.value = element.value.substring(0, startPos) + text + element.value.substring(endPos, element.value.length);\r
+ } else{\r
+ element.value = text;\r
}\r
}\r
\r