OSDN Git Service

$name[name]がundefinedになることがあった
[webchat/WebChat.git] / public / scripts / chatclient.js
index 66441c2..c4726b1 100644 (file)
@@ -1,11 +1,12 @@
 $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
 $system_msg_color ="#000000";\r
-$profile_link = ""     //プロフィールシステムへのリンク先(%nで名前を表す)\r
+$profile_link = "/profile/detail?name=%n"      //プロフィールシステムへのリンク先(%nで名前を表す)\r
 $fanble_message = "[color=blue]%s ファンブル![/color]";\r
 $critical_message = "[color=red]%s クリティカル![/color]";\r
 $send_message = "%sからの送信 %s";\r
@@ -15,7 +16,6 @@ $free_password1 = "最初に入室する人が自由にパスワードを設定
 $free_password2 = "この部屋は使用されています。パスワードを入力してください";      //自由パスワードメッセージ2\r
 $fixed_password = "この部屋にはパスワードが設定されています";      //固定パスワードルーム\r
 $hidden_log_to_rom = "この部屋ではROMできないようになっています";   //ROM禁止ルーム\r
-$adminmsg = "(管理モード)";       //管理モード\r
 $romcount_msg = "ROM(%d人)"   //ROMカウント\r
 \r
 //ここから先は変更しないでください\r
@@ -23,7 +23,6 @@ $prefix_filelist = "!";
 $socket = new Object();\r
 $names = {};\r
 $roominfo = {};\r
-$dateFormat = new DateFormat("yyyy/MM/dd HH:mm:ss");\r
 $romcount = 0;\r
 //ここまで\r
 \r
@@ -45,18 +44,22 @@ $(document).ready(function(){
        $("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
+       $("#decoration_list_view").click(function(e){\r
+               $("#decoration_list").toggle();\r
+       });\r
        document.chat_form.onsubmit = function(){return false;};\r
        document.enter_form.onsubmit = function(){return false;};\r
 \r
-       $socket = io.connect(location.hostname  + "/" + document.chat_form.rno.value + "?token="+ encodeURIComponent(document.chat_form.token.value));\r
+       $socket = io.connect(location.hostname  + "/" + document.chat_form.rno.value + "?token="+ encodeURIComponent(document.chat_form._csrf.value));\r
        $socket.on("error",getErrorMessage);\r
        $socket.on("send roominfo",sendRoomInfoListerner);\r
        $socket.on("send romcount",sendRomCountListerner);\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
@@ -84,16 +87,10 @@ function sendRoomInfoListerner(info)
                msg = $hidden_log_to_rom;\r
                logflag = false;\r
        }\r
-       if(info.admin)\r
-       {\r
-               logflag = true;\r
-               msg += $adminmsg;\r
-       }\r
        if(msg != "")\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
@@ -114,23 +111,6 @@ function CreateColorList()
        }\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
@@ -138,15 +118,6 @@ function getCurretLog()
        $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
@@ -158,7 +129,7 @@ function pastLogEventListerner(msg)
 \r
 function getMessageEventListerner(msg)\r
 {\r
-       if(IsRomMode() && $roominfo.type != 0 && $roominfo.admin == false)\r
+       if(IsRomMode() && $roominfo.type != 0)\r
                return;\r
        ParseMessage(msg);\r
        createNameList();\r
@@ -185,23 +156,25 @@ function ParseMessage(msg)
 \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
        trtag.append($("<td/>").append(namepart));\r
 \r
        msgpart = childtag\r
-               .append("(" + $dateFormat.format(date) +")")\r
+               .append("(" + date.toFormat("YYYY/MM/DD HH:MI:SS") +")")\r
                .css("color",color);\r
        trtag.append($("<td/>").append(msgpart));\r
 \r
@@ -222,9 +195,13 @@ function GetNameLink(name)
 function createNameList()\r
 {\r
        var date = new Date();\r
+       $("#whisper_list").empty();\r
+       $("#whisper_list").append("<ul></ul>");\r
+\r
        $("#namelist").empty();\r
        $("#namelist").append("<ul></ul>");\r
        $("#namelist > ul").append($("<li/>").append(sprintf($romcount_msg,$romcount)));\r
+\r
        for(var name in $names)\r
        {\r
                var diff = date.getTime() - $names[name].time;\r
@@ -234,13 +211,79 @@ function createNameList()
                {\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
+                               .click(clickNameEventListener)\r
+                               .text(name);\r
+                       $("#whisper_list > ul").append($("<li/>").append(spantag));\r
                        $("#namelist > ul").append($("<li/>").append(atag));\r
                }\r
        }\r
 }\r
 \r
+function clickNameEventListener(e)\r
+{\r
+       document.chat_form.message.value = "/tell " + $(this).text();\r
+       document.chat_form.message.focus();\r
+}\r
+\r
+function AddBold()\r
+{\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
+       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
+       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
+       var text = GetSelection(document.chat_form.message);\r
+       ReplaceSelection(document.chat_form.message,sprintf("[size=%f]%s[/size]",size,text));\r
+}\r
+\r
+function GetSelection(element)\r
+{\r
+    if (document.selection) {\r
+        element.focus();\r
+        var sel = document.selection.createRange();\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
+        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
 function enterEventListener()\r
 {\r
        if(document.enter_form.name.value == "")\r