OSDN Git Service

発言の行頭をそろえるようした
[webchat/WebChat.git] / public / scripts / chatclient.js
index 549451a..774d68c 100644 (file)
@@ -6,16 +6,25 @@ $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
+$hidden_log_to_rom = "この部屋ではROMできないようになっています";   //ROM禁止ルーム\r
+$adminmsg = "(管理モード)";       //管理モード\r
+$romcount_msg = "ROM(%d人)"   //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
@@ -37,28 +46,58 @@ $(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
+       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
@@ -110,16 +149,24 @@ function openPastlogEventListener()
 \r
 function pastLogEventListerner(msg)\r
 {\r
-       ParseMessage(msg);\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
 }\r
 \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
                document.getElementById("NoticeSound").play();\r
 }\r
 \r
+var $messageTag = null;\r
 function ParseMessage(msg)\r
 {\r
        var util = new Util();\r
@@ -129,36 +176,40 @@ function ParseMessage(msg)
 \r
        if(childtag == null)\r
                return;\r
+       if(typeof(childtag) == "string")\r
+               childtag = $("<span/>").append(childtag);\r
 \r
-       var ptag = $("<p/>");\r
+       var trtag = $("<tr/>");\r
+       var namepart,msgpart;\r
 \r
        var color = $system_msg_color;\r
+\r
        var mailto = "";\r
        var date = new Date(Date.parse(msg.date));\r
        if(msg.name != $system_name)\r
        {\r
                color = $names[msg.name].color;\r
                $names[msg.name].time = date.getTime();\r
-               var atag = $("<a/>")\r
+               namepart = $("<a/>")\r
                        .attr("href",GetNameLink(msg.name))\r
                        .css("color",color)\r
                        .text(util.htmlspecialchars(msg.name));\r
-               ptag.append(atag);\r
        }else{\r
-               ptag.append(msg.name);\r
+               namepart = $("<span/>").append(msg.name);\r
        }\r
-       ptag.append(":");\r
-       ptag.append(childtag);\r
-       ptag.append("(" + $dateFormat.format(date) +")");\r
+       if(msg.ip != "")\r
+               namepart.append("@" + msg.ip);\r
+       trtag.append($("<td/>").append(namepart));\r
 \r
-       ptag.css("color",color);\r
+       msgpart = childtag\r
+               .append("(" + $dateFormat.format(date) +")")\r
+               .css("color",color);\r
+       trtag.append($("<td/>").append(msgpart));\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(trtag);\r
 }\r
 \r
 function GetNameLink(name)\r
@@ -174,6 +225,7 @@ function createNameList()
        var date = new Date();\r
        $("#namelist").empty();\r
        $("#namelist").append("<ul></ul>");\r
+       $("#namelist > ul").append($("<li/>").append(sprintf($romcount_msg,$romcount)));\r
        for(var name in $names)\r
        {\r
                var diff = date.getTime() - $names[name].time;\r
@@ -190,7 +242,14 @@ 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
        $("#enter_frame").css("display","none");\r
        $("#chat_frame").css("display","block");\r
 \r
@@ -199,18 +258,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
-       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
        $("#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
@@ -221,7 +286,7 @@ function sidEventListener(){
        };      \r
        msg.message = cmd.parse(msg);\r
 \r
-       if(msg.message != null)\r
+       if(msg.message != null && msg.message != "")\r
                $socket.json.emit("send msg",msg);\r
 \r
        document.chat_form.message.value ="";\r
@@ -240,6 +305,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
@@ -397,6 +467,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