Gajim now asks reason for ban/kick (thanks liorithiel!)

This commit is contained in:
Nikos Kouremenos 2005-07-02 18:33:51 +00:00
parent 7c8bd6ac38
commit 513a4c9f4f
3 changed files with 25 additions and 6 deletions

View File

@ -1109,7 +1109,7 @@ class Connection:
self.to_be_sent.insert(0, common.xmpp.Presence(to = '%s/%s' % (jid, nick),
typ = ptype, show = show, status = status))
def gc_set_role(self, room_jid, nick, role):
def gc_set_role(self, room_jid, nick, role, reason = ''):
if not self.connection:
return
iq = common.xmpp.Iq(typ = 'set', to = room_jid, queryNS =\
@ -1117,9 +1117,11 @@ class Connection:
item = iq.getTag('query').setTag('item')
item.setAttr('nick', nick)
item.setAttr('role', role)
if reason:
item.addChild(name = 'reason', payload = reason)
self.to_be_sent.insert(0, iq)
def gc_set_affiliation(self, room_jid, jid, affiliation):
def gc_set_affiliation(self, room_jid, jid, affiliation, reason = ''):
if not self.connection:
return
iq = common.xmpp.Iq(typ = 'set', to = room_jid, queryNS =\
@ -1127,6 +1129,8 @@ class Connection:
item = iq.getTag('query').setTag('item')
item.setAttr('jid', jid)
item.setAttr('affiliation', affiliation)
if reason:
item.addChild(name = 'reason', payload = reason)
self.to_be_sent.insert(0, iq)
def send_gc_config(self, room_jid, config):

View File

@ -583,7 +583,15 @@ class GroupchatWindow(chat.Chat):
def kick(self, widget, room_jid, nick):
"""kick a user"""
gajim.connections[self.account].gc_set_role(room_jid, nick, 'none')
# ask for reason
instance = dialogs.InputDialog(_('Kicking %s') % nick,
_('Please specify a reason below:'))
response = instance.get_response()
if response == gtk.RESPONSE_OK:
reason = instance.input_entry.get_text()
else:
return # stop kicking procedure
gajim.connections[self.account].gc_set_role(room_jid, nick, 'none', reason)
def grant_voice(self, widget, room_jid, nick):
"""grant voice privilege to a user"""
@ -603,8 +611,15 @@ class GroupchatWindow(chat.Chat):
def ban(self, widget, room_jid, jid):
"""ban a user"""
gajim.connections[self.account].gc_set_affiliation(room_jid, jid,
'outcast')
# ask for reason
instance = dialogs.InputDialog(_('Banning %s') % nick,
_('Please specify a reason below:'))
response = instance.get_response()
if response == gtk.RESPONSE_OK:
reason = instance.input_entry.get_text()
else:
return # stop banning procedure
gajim.connections[self.account].gc_set_affiliation(room_jid, jid, 'outcast', reason)
def grant_membership(self, widget, room_jid, jid):
"""grant membership privilege to a user"""

View File

@ -11863,7 +11863,7 @@ JID: whatever@jabber.org</property>
</widget>
<widget class="GtkDialog" id="input_dialog">
<property name="border_width">12</property>
<property name="border_width">6</property>
<property name="visible">True</property>
<property name="title" translatable="yes"></property>
<property name="type">GTK_WINDOW_TOPLEVEL</property>