OSDN Git Service

改行が含まれるログをうまく送信できないバグを修正した
[webchat/WebChat.git] / public / scripts / chatclient.js
index cb0d3cf..3e93823 100644 (file)
@@ -11,12 +11,18 @@ $critical_message = "[color=red]%s クリティカル![/color]";
 $send_message = "%sからの送信 %s";\r
 $failed_connect_message = "接続に失敗しました";\r
 $invaild_name_message = "名前を空欄にすることはできません";\r
+$free_password1 = "最初に入室する人が自由にパスワードを設定できます";  //自由パスワードメッセージ1\r
+$free_password2 = "この部屋は使用されています。パスワードを入力してください";      //自由パスワードメッセージ2\r
+$fixed_password = "この部屋にはパスワードが設定されています";      //固定パスワードルーム\r
+$hidden_log_to_rom = "この部屋ではROMできないようになっています";\r
 \r
 //ここから先は変更しないでください\r
 $prefix_filelist = "!";\r
 $socket = new Object();\r
 $names = {};\r
+$roominfo = {};\r
 $dateFormat = new DateFormat("yyyy/MM/dd HH:mm:ss");\r
+$romcount = 0;\r
 //ここまで\r
 \r
 $(document).ready(function(){\r
@@ -38,28 +44,59 @@ $(document).ready(function(){
                $("#help_frame").css("display","none");\r
        });\r
        $("input[name=openPastlog]").click(openPastlogEventListener);\r
-       $("#enter_frame input[name=name]").keydown(function(e){\r
-               if(e.keyCode == 13)\r
-                       enterEventListener();\r
-       });\r
-       $("#chat_frame input[name=message]").keydown(function(e){\r
-               if(e.keyCode == 13)\r
-                       sidEventListener();\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.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
-               $socket.json.emit("get pastLogList",{rno:document.chat_form.rno.value});\r
-               getCurretLog();\r
        });\r
 });\r
 \r
+function sendRomCountListerner(count)\r
+{\r
+       $romcount = count;\r
+       createNameList();\r
+}\r
+\r
+function sendRoomInfoListerner(info)\r
+{\r
+       $roominfo = info;\r
+       var logflag = true;\r
+       var msg = "";\r
+       var adminmsg = "(管理モード)";\r
+       if(info.type == 1){\r
+               if(info.IsOwned)\r
+                       msg = $free_password2;\r
+               else\r
+                       msg = $free_password1;\r
+               logflag = false;\r
+       }else if(info.type == 2){\r
+               msg = $fixed_password;\r
+               logflag = false;\r
+       }else if(info.type == 3){\r
+               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
+\r
 function CreateColorList()\r
 {\r
        var c = new Array("00","33","66","99","CC","FF");\r
@@ -111,6 +148,8 @@ function openPastlogEventListener()
 \r
 function pastLogEventListerner(msg)\r
 {\r
+       if(IsRomMode() && $roominfo.type != 0 && $roominfo.admin == false)\r
+               return;\r
        for(var i = 0; i < msg.length; i++)\r
                ParseMessage(msg[i]);\r
        createNameList();\r
@@ -118,6 +157,8 @@ function pastLogEventListerner(msg)
 \r
 function getMessageEventListerner(msg)\r
 {\r
+       if(IsRomMode() && $roominfo.type != 0 && $roominfo.admin == false)\r
+               return;\r
        ParseMessage(msg);\r
        createNameList();\r
        if( document.getElementById("bell").checked == true && msg.name != document.enter_form.name.value)\r
@@ -152,6 +193,8 @@ function ParseMessage(msg)
        }else{\r
                ptag.append(msg.name);\r
        }\r
+       if(msg.ip != "")\r
+               ptag.append(" " + msg.ip);\r
        ptag.append(":");\r
        ptag.append(childtag);\r
        ptag.append("(" + $dateFormat.format(date) +")");\r
@@ -177,6 +220,7 @@ function createNameList()
        var date = new Date();\r
        $("#namelist").empty();\r
        $("#namelist").append("<ul></ul>");\r
+       $("#namelist > ul").append($("<li/>").append("ROM人数:" + $romcount));\r
        for(var name in $names)\r
        {\r
                var diff = date.getTime() - $names[name].time;\r
@@ -193,7 +237,8 @@ function createNameList()
        }\r
 }\r
 \r
-function enterEventListener(){\r
+function enterEventListener()\r
+{\r
        if(document.enter_form.name.value == "")\r
        {\r
                alert($invaild_name_message);\r
@@ -208,15 +253,24 @@ function enterEventListener(){
        $.cookie("name",document.enter_form.name.value,{ expires: $expires });\r
        $.cookie("color_index",document.enter_form.color.selectedIndex,{ expires: $expires });\r
 \r
-       $socket.json.emit("join",{name:document.enter_form.name.value,color:color,mailto:document.enter_form.mailto.value});\r
+       $socket.json.emit("join",{name:document.enter_form.name.value,color:color,mailto:document.enter_form.mailto.value,password:document.enter_form.password.value});\r
 }\r
 \r
 function quitEventListener(){\r
        $socket.json.emit("quit",{name:document.enter_form.name.value});\r
 \r
-       $socket.json.emit("get pastLogList",{rno:document.chat_form.rno.value});\r
        $("#enter_frame").css("display","block");\r
        $("#chat_frame").css("display","none");\r
+\r
+       if($roominfo.type != 0 && $roominfo.admin == false)\r
+       {\r
+               $("#message").empty();\r
+               $("#namelist").empty();\r
+               $names = {};\r
+               createNameList();\r
+       }\r
+       else\r
+               $socket.json.emit("get pastLogList",{rno:document.chat_form.rno.value});\r
 }\r
 \r
 function sidEventListener(){\r
@@ -246,6 +300,11 @@ function getErrorMessage(text)
                alert(text);\r
 }\r
 \r
+function IsRomMode()\r
+{\r
+       return $("#chat_frame").css("display") == "none";\r
+}\r
+\r
 //NameCollectionクラス\r
 function GetNameCollection(text)\r
 {\r
@@ -403,6 +462,15 @@ function CommandParserWhenPost()
 \r
                return null;\r
        }\r
+       this.CommandList["/setpassword"] = function(msg,word)\r
+       {\r
+               if(word.length != 2)\r
+                       return msg.message;\r
+\r
+               $socket.json.emit("set password",{owner:document.enter_form.name.value,password:word[1]});\r
+\r
+               return null;\r
+       }\r
 }\r
 CommandParserWhenPost.prototype = new CommandParser;\r
 \r