diff --git a/ChannelSettings.iis b/ChannelSettings.iis index e2466ba..7fe9b90 100644 --- a/ChannelSettings.iis +++ b/ChannelSettings.iis @@ -50,7 +50,10 @@ menu channel showmessage("Not connected", "You are not connected to the server", "warn", "o"); return; } - + + channelOrig = channel; + channel = strlower(channel); + if (chansethndl[channel] != void && dlgvalidhndl(chansethndl[channel])) dlgclose(chansethndl[channel]); @@ -71,7 +74,7 @@ menu channel # Custom attribute to keep track of which channel the dialog has an effect to dlgsetattr(hndl, "channel", channel); - dlgsetattr(hndl, "title", "Settings for " + channel); + dlgsetattr(hndl, "title", "Settings for " + channelOrig); dlgsetwidgetattr(hndl, "bantable", "header", list("Mask", "Set by", "Date")); @@ -104,7 +107,8 @@ menu channel hook numeric(code, params, message) { - channel = params[1]; + channel = strlower(params[1]); + if (channel == void) return; @@ -113,9 +117,10 @@ hook numeric(code, params, message) hndl = chansethndl[channel]; - # No topic is set. + # No topic is set if (code == "331") { topicDone[channel] = true; + currentTopic[channel] = ""; } # Topic received @@ -124,11 +129,12 @@ hook numeric(code, params, message) topicDone[channel] = true; currentTopic[channel] = message; } - + + # Topic-by message is always a bit late to the party so must be unmuted separately. else if (code == "333") { /unmuteresp 333 } - + # Mode list received else if (code == "324") { args = list(); @@ -144,7 +150,7 @@ hook numeric(code, params, message) # Ban list item received else if (code == "367") { - handle = chansethndl[params[1]]; + handle = chansethndl[channel]; mask = params[2]; setby = params[3]; @@ -160,7 +166,7 @@ hook numeric(code, params, message) # Invites list item received else if (code == "346") { - handle = chansethndl[params[1]]; + handle = chansethndl[channel]; mask = params[2]; setby = params[3]; @@ -176,7 +182,7 @@ hook numeric(code, params, message) # Exceptions list item received else if (code == "348") { - handle = chansethndl[params[1]]; + handle = chansethndl[channel]; mask = params[2]; setby = params[3]; @@ -199,6 +205,7 @@ hook numeric(code, params, message) # hook mode(sender, target, modes) { + target = strlower(target); if (chansethndl[target] == void) return; handle = chansethndl[target]; @@ -274,6 +281,8 @@ function findAndRemoveFromTable(handle, table, mask) # function checkAndHandleAllDone(channel) { + channel = strlower(channel); + if ((topicDone[channel] == false) || (modesDone[channel] == false) || (bansDone[channel] == false) @@ -293,6 +302,8 @@ function checkAndHandleAllDone(channel) # function parseChannelModes(channel, modes, args) { + channel = strlower(channel); + hndl = chansethndl[channel]; i = 0; argi = 0; # Index of 'args', increments on group B and C. @@ -658,9 +669,19 @@ dialog channelsettings height = 25; hook clicked => { channel = dlggetattr(handle, "channel"); - newModes = createModeDiff(channel); + + newModes = createModeDiff(channel); if (strlen(newModes) > 0) /mode %channel %newModes + + newTopic = dlggetwidgetattr(handle, "topic", "text"); + if (newTopic != currentTopic[channel]) { + if (newTopic == "") + /topic -c %channel + else + /topic %channel %newTopic + } + dlgclose(handle); } } @@ -672,6 +693,8 @@ dialog channelsettings # function createModeDiff(channel) { + channel = strlower(channel); + hndl = chansethndl[channel]; unsetmodes = "";