topic now checks for +t mode before denying topic changes, and also allows halfops in addition to ops.

default required capabilities for topic changes (if topic is +t and user is not an op or halfop), are chan,op and chan,halfop
thanks jemfinch for the suggestions.

Signed-off-by: James Vega <jamessan@users.sourceforge.net>
This commit is contained in:
Daniel Folkinshteyn 2010-04-11 12:48:08 -04:00 committed by James Vega
parent 063dd24677
commit 814d89e200
3 changed files with 6 additions and 2 deletions

View File

@ -64,7 +64,7 @@ conf.registerChannelValue(Topic.undo, 'max',
registry.NonNegativeInteger(10, """Determines the number of previous
topics to keep around in case the undo command is called."""))
conf.registerChannelValue(Topic, 'requireManageCapability',
registry.String('admin; channel,op',
registry.String('channel,op; channel,halfop',
"""Determines the
capabilities required (if any) to make any topic changes,
(everything except for read-only operations). Use 'channel,capab' for

View File

@ -173,7 +173,7 @@ class Topic(callbacks.Plugin):
manually anyway.
"""
c = irc.state.channels[channel]
if msg.nick in c.ops:
if msg.nick in c.ops or msg.nick in c.halfops or 't' not in c.modes:
return True
capabilities = self.registryValue('requireManageCapability')
if capabilities:

View File

@ -73,6 +73,10 @@ class TopicTestCase(ChannelPluginTestCase):
def testManageCapabilities(self):
try:
self.irc.feedMsg(ircmsgs.mode(self.channel, args=('+o', self.nick),
prefix=self.prefix))
self.irc.feedMsg(ircmsgs.mode(self.channel, args=('+t'),
prefix=self.prefix))
world.testing = False
origuser = self.prefix
self.prefix = 'stuff!stuff@stuff'