]> jfr.im git - irc/quakenet/qwebirc.git/blobdiff - js/qwebircinterface.js
Add URL parsing for channels/nick selection.
[irc/quakenet/qwebirc.git] / js / qwebircinterface.js
index a08dd6dec5c7aaf5487a64760113f1391d5affc0..8f9562610761e2d157cd77d9c52fafb49bf43ff1 100644 (file)
@@ -3,7 +3,7 @@ var QWebIRCInterface = new Class({
   options: {
     initialNickname: "qwebirc" + Math.ceil(Math.random() * 100000),
     initialChannels: "",
-    searchURL: false,
+    searchURL: true,
     theme: undefined
   },
   initialize: function(element, ui, options) {
@@ -11,18 +11,46 @@ var QWebIRCInterface = new Class({
 
     window.addEvent("domready", function() {
       var ui_ = new ui($(element), new Theme(this.options.theme));
-
-      if(this.options.searchURL) {
-        /* TODO: look at URI and detect nickname/channels... */
-      }
-
-      var details = ui_.loginBox(function(options) {
+      var inick = this.options.initialNickname;
+      var ichans = this.options.initialChannels;
+      var autoNick = true;
+      
+      var callback = function(options) {
         var IRC = new IRCClient(options, ui_);
         IRC.connect();
         window.addEvent("beforeunload", function() {
           IRC.quit("Page closed");
         });
-      }, this.options.initialNickname, this.options.initialChannels);
+      };
+
+      var supplied = false; 
+      if(this.options.searchURL) {
+        var args = parseURI(String(document.location));
+        
+        var chans = args["channels"];
+        var nick = args["nick"];
+
+        if(chans) {
+          chans = chans.split(",");
+          var chans2 = [];
+          
+          for(i=0;i<chans.length;i++) {
+            chans2[i] = chans[i];
+            
+            if(chans[i].charAt(0) != '#')
+              chans2[i] = "#" + chans2[i]
+          }
+          ichans = chans2.join(",");
+          supplied = true;
+        }
+        
+        if(nick) {
+          inick = nick;
+          autoNick = false;
+        }
+      }
+
+      var details = ui_.loginBox(callback, inick, ichans, supplied, autoNick);
     }.bind(this));
   }
 });