]> git.scottworley.com Git - reliable-chat/blobdiff - webclient/rc.html
Prompt new users for a nick explicitly
[reliable-chat] / webclient / rc.html
index c1d36b26117bcbd58a969e1fe0d0a4360e97404d..e4bdb2de89ae70ef7e8e981dd2aed01c709dcf31 100644 (file)
@@ -47,6 +47,7 @@
                width: 100%;
                position: fixed;
                bottom: 0;
+               display: none;
        }
        #input {
                width: 100%;
                padding-left: 5px;
                padding-right: 5px;
        }
+       #getnick {
+               padding-left: 3em;
+               display: none;
+       }
 
        /* BEGIN expando input box trick kindly provided by http://www.alistapart.com/articles/expanding-text-areas-made-elegant/ */
        .expandingArea {
        //   UI: The DOM node for this message in the UI
 
        function rcnick() {
-               var nick = localStorage.getItem("nick");
-               if (nick) {
-                       return nick;
-               }
-               return 'anonymous';
+               return localStorage.getItem("nick");
        }
 
        function rcsetnick(new_nick) {
                }
        }
 
+       function rcstart() {
+               if (rcnick()) {
+                       document.getElementById("client").style.display = 'block';
+                       rcconnect();
+               } else {
+                       document.getElementById("getnick").style.display = 'block';
+               }
+       }
+
        function rcsend(d, message) {
                message.ID = new Date().getTime() + "-" + session + "-" + Math.random();
                seen[make_seen_key(message.ID, message.Text)] = message;
                                        rcaddmessagetoUI({'Text': '-!- Your nick is already ' + rcnick(), 'ServerTimes': {}});
                                        return;
                                }
-                               message = "*** " + rcnick() + " is now known as " + rest;
-                               rcsetnick(rest);
+                               if (rest) {
+                                       message = "*** " + rcnick() + " is now known as " + rest;
+                                       rcsetnick(rest);
+                               } else {
+                                       rcaddmessagetoUI({'Text': '-!- /nick requires an argument', 'ServerTimes': {}});
+                                       return;
+                               }
                        } else {
                                rcaddmessagetoUI({'Text': '-!- No such command: ' + command, 'ServerTimes': {}});
                                return;
                }
        }
 
+       function rcsetinitialnick() {
+               if (document.getnickform.initial_nick.value) {
+                       rcsetnick(document.getnickform.initial_nick.value);
+                       document.getElementById("getnick").style.display = 'none';
+                       document.getElementById("client").style.display = 'block';
+                       rcconnect();
+               }
+               return false;
+       }
+
        // From http://www.alistapart.com/articles/expanding-text-areas-made-elegant/
        function makeExpandingArea(container) {
                var area = container.querySelector('textarea');
 
 </head>
 
-<body onload="rcconnect()">
+<body onload="rcstart()">
        <div id="container">
                <div class="banner">(You are using <a href="https://github.com/chkno/reliable-chat">Reliable Chat</a>)</div>
                <div id="history"></div>
                <div class="expandingArea" style="visibility: hidden">
                        <pre><span id="historypad"></span><br></pre>
                </div>
+               <div id="getnick">
+                       <h1>Set your nick</h1>
+                       <form name="getnickform" onsubmit="return rcsetinitialnick();">
+                               <input id="initial_nick" type="text"></input>
+                               <input type="submit" value="ok"></input>
+                       </form>
+               </div>
                <div id="client">
                        <div id="input">
                                <form name="input" onsubmit="return false" autocomplete="off">