OSDN Git Service

接続時に無駄な情報を送らないようにした
[webchat/WebChat.git] / public / scripts / chatclient.js
index 278e8e4..ab3a79e 100644 (file)
@@ -11,11 +11,15 @@ $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
 \r
 //ここから先は変更しないでください\r
 $prefix_filelist = "!";\r
 $socket = new Object();\r
 $names = {};\r
+$roominfo = {};\r
 $dateFormat = new DateFormat("yyyy/MM/dd HH:mm:ss");\r
 //ここまで\r
 \r
@@ -51,15 +55,33 @@ $(document).ready(function(){
 \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("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 sendRoomInfoListerner(info)\r
+{\r
+       $roominfo = info;\r
+       if(info.type == 0)\r
+       {\r
+               $socket.json.emit("get pastLogList",{rno:document.chat_form.rno.value});\r
+               getCurretLog();\r
+       }else if(info.type == 1){\r
+               if(info.IsOwned)\r
+               {\r
+                       $("#enter_message").append($free_password2);\r
+               }else{\r
+                       $("#enter_message").append($free_password1);\r
+               }\r
+       }else if(info.type == 2){\r
+               $("#enter_message").append($fixed_password);\r
+       }\r
+}\r
+\r
 function CreateColorList()\r
 {\r
        var c = new Array("00","33","66","99","CC","FF");\r
@@ -113,15 +135,18 @@ function pastLogEventListerner(msg)
 {\r
        for(var i = 0; i < msg.length; i++)\r
                ParseMessage(msg[i]);\r
+       createNameList();\r
 }\r
 \r
 function getMessageEventListerner(msg)\r
 {\r
        ParseMessage(msg);\r
+       createNameList();\r
        if( document.getElementById("bell").checked == true && msg.name != document.enter_form.name.value)\r
                document.getElementById("NoticeSound").play();\r
 }\r
 \r
+var $messageTag = null;\r
 function ParseMessage(msg)\r
 {\r
        var util = new Util();\r
@@ -155,12 +180,10 @@ function ParseMessage(msg)
 \r
        ptag.css("color",color);\r
 \r
-       if($("#message > p").length == 0)\r
-               $("#message").append(ptag);\r
-       else\r
-               $("#message > p:first").before(ptag);\r
+       if($messageTag == null)\r
+               $messageTag = $("#message");\r
 \r
-       createNameList();\r
+       $messageTag.prepend(ptag);\r
 }\r
 \r
 function GetNameLink(name)\r
@@ -192,13 +215,20 @@ 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
                return;\r
        }\r
 \r
+       if($roominfo.type != 0) //サーバー側からログが送られるので一旦クリアーする\r
+       {\r
+               $("#message").empty();\r
+               $("#namelist").empty();\r
+       }\r
+\r
        $("#enter_frame").css("display","none");\r
        $("#chat_frame").css("display","block");\r
 \r
@@ -207,14 +237,11 @@ function enterEventListener(){
        $.cookie("name",document.enter_form.name.value,{ expires: $expires });\r
        $.cookie("color_index",document.enter_form.color.selectedIndex,{ expires: $expires });\r
 \r
-       var text = "/enteredby " + document.enter_form.name.value + " " + color + " " + document.enter_form.mailto.value;\r
-\r
-       $socket.json.emit("send msg",{name:$system_name,message:text});\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
-       var text = "/quitedby " + document.enter_form.name.value;\r
-       $socket.json.emit("send msg",{name:$system_name,message:text});\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
@@ -405,6 +432,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