]> jfr.im git - irc/rizon/qchat.git/commitdiff
Add menu item support for crazy non-standard operator modes.
authorChris Porter <redacted>
Sat, 24 Apr 2010 15:39:58 +0000 (16:39 +0100)
committerChris Porter <redacted>
Sat, 24 Apr 2010 15:39:58 +0000 (16:39 +0100)
js/irc/ircclient.js
js/ui/menuitems.js

index 0356d4fe7f0521e4be858e862ceb64f012e1e259..b8d59676d830e6e41ecc087174b6c8dd02bc6d15 100644 (file)
@@ -516,6 +516,28 @@ qwebirc.irc.IRCClient = new Class({
    
     return entry.prefixes.indexOf(prefix) != -1;
   },
+  nickOnChanHasAtLeastPrefix: function(nick, channel, prefix) {
+    var entry = this.tracker.getNickOnChannel(nick, channel);
+    if(!$defined(entry))
+      return false; /* shouldn't happen */
+   
+    /* this array is sorted */
+    var pos = this.prefixes.indexOf(prefix);
+    if(pos == -1)
+      return false;  /* shouldn't happen */
+
+    var modehash = {};
+    this.prefixes.slice(0, pos + 1).split("").each(function(x) {
+      modehash[x] = true;
+    });
+    
+    var prefixes = entry.prefixes;
+    for(var i=0;i<prefixes.length;i++)
+      if(modehash[prefixes.charAt(i)])
+        return true;
+        
+    return false;
+  },
   supported: function(key, value) {
     if(key == "PREFIX") {
       var l = (value.length - 2) / 2;
index 05bc92157346578eca98897736be0a2a7e40909f..6ff3182b958231642390758a6615518df315ef45 100644 (file)
@@ -12,7 +12,7 @@ qwebirc.ui.MENU_ITEMS = function() {
     var channel = this.name; /* window name */
     var myNick = this.client.nickname;
 
-    return this.client.nickOnChanHasPrefix(myNick, channel, "@");
+    return this.client.nickOnChanHasAtLeastPrefix(myNick, channel, "@");
   };
 
   var isVoiced = function(nick) {