OSDN Git Service

接続時に無駄な情報を送らないようにした
[webchat/WebChat.git] / public / scripts / chatclient.js
index fa31a0f..ab3a79e 100644 (file)
@@ -6,15 +6,20 @@ $entered_message = "%sが入室しました";
 $quited_message = "%sが退室しました";\r
 $system_msg_color ="#000000";\r
 $profile_link = ""     //プロフィールシステムへのリンク先(%nで名前を表す)\r
-$fanble_message = "[color=blue]%s ファンブル![/color]";   //ファンブル時のメッセージ\r
-$critical_message = "[color=red]%s クリティカル![/color]";       //クリティカル時のメッセージ\r
+$fanble_message = "[color=blue]%s ファンブル![/color]";\r
+$critical_message = "[color=red]%s クリティカル![/color]";\r
 $send_message = "%sからの送信 %s";\r
-$failed_connect_message = "failed connect or ip banned";\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
@@ -48,17 +53,35 @@ $(document).ready(function(){
        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);\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
@@ -83,6 +106,8 @@ function CreatePastLogList(text)
        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
@@ -108,16 +133,20 @@ function openPastlogEventListener()
 \r
 function pastLogEventListerner(msg)\r
 {\r
-       ParseMessage(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
@@ -151,19 +180,17 @@ 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
 {\r
        var util = new Util();\r
-       if(document.enter_form.mailto.value == "")\r
-               return $profile_link.replace("%n",encodeURI(name));\r
+       if($names[name].mailto == "")\r
+               return $profile_link.replace("%n",encodeURIComponent(name));\r
        return "mailto:" + util.htmlspecialchars($names[name].mailto);\r
 }\r
 \r
@@ -188,7 +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
@@ -197,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,token:document.chat_form.token.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
-       var text = "/quitedby " + document.enter_form.name.value;\r
-       $socket.json.emit("send msg",{name:$system_name,message:text,token:document.chat_form.token.value});\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
@@ -215,8 +252,7 @@ function sidEventListener(){
        var cmd = new CommandParserWhenPost;\r
        var msg = {\r
                name:document.enter_form.name.value,\r
-               message:document.chat_form.message.value,\r
-               token:document.chat_form.token.value\r
+               message:document.chat_form.message.value\r
        };      \r
        msg.message = cmd.parse(msg);\r
 \r
@@ -396,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