[Tkabber-dev] r303 - in trunk/plugins/bldjid: . msgs

tkabber-svn at jabber.ru tkabber-svn at jabber.ru
Sun Feb 21 05:56:17 MSK 2010


Author: bigote
Date: 2010-02-21 05:56:17 +0300 (Sun, 21 Feb 2010)
New Revision: 303

Modified:
   trunk/plugins/bldjid/ChangeLog
   trunk/plugins/bldjid/README
   trunk/plugins/bldjid/README.ru
   trunk/plugins/bldjid/bldjid.tcl
   trunk/plugins/bldjid/msgs/ru.msg
Log:
New commands for searching in black list and member list implemented:
/inbanlist pattern
/inmemberlist pattern


Modified: trunk/plugins/bldjid/ChangeLog
===================================================================
--- trunk/plugins/bldjid/ChangeLog	2010-02-20 21:29:59 UTC (rev 302)
+++ trunk/plugins/bldjid/ChangeLog	2010-02-21 02:56:17 UTC (rev 303)
@@ -1,3 +1,15 @@
+2010-02-21  Serge Yudin  <xmpp:bigote at jabber.ru> <mailto:bigote at gmail.com>
+
+--- Version 0.9.2 of the plugin.
+
+--- Files modified:
+    bldjid.tcl, README, README.ru, ChangeLog, msgs/ru.msg.
+
+--- Changes:
+	New commands for searching in black list and member list implemented:
+	/inbanlist pattern
+	/inmemberlist pattern
+
 2010-02-20  Serge Yudin  <xmpp:bigote at jabber.ru> <mailto:bigote at gmail.com>
 
 --- Version 0.9.1 of the plugin.

Modified: trunk/plugins/bldjid/README
===================================================================
--- trunk/plugins/bldjid/README	2010-02-20 21:29:59 UTC (rev 302)
+++ trunk/plugins/bldjid/README	2010-02-21 02:56:17 UTC (rev 303)
@@ -25,6 +25,10 @@
 /amnesty
 and after a confirmation all outcasts from that room will be unbanned.
 
+---	You can search for a certain word in the black list or in the member list
+	of the current room using the following commands:
+/inbanlist pattern
+/inmemberlist pattern
 
 New commands added that could be helpful
 when ::muc::options(gen_enter_exit_msgs) is disabled.

Modified: trunk/plugins/bldjid/README.ru
===================================================================
--- trunk/plugins/bldjid/README.ru	2010-02-20 21:29:59 UTC (rev 302)
+++ trunk/plugins/bldjid/README.ru	2010-02-21 02:56:17 UTC (rev 303)
@@ -28,6 +28,11 @@
 Настоятельно советую не пользоваться этой командой в комнатах,
 где вы не хозяин, а только администратор.
 
+---	Вы можете искать определённое слово в чёрном списке или в списке членов
+	текущей комнаты с помощью следующих команд:
+/inbanlist pattern
+/inmemberlist pattern
+
 Добавлены новые команды, которые могут быть полезны,
 когда у вас выключена опция ::muc::options(gen_enter_exit_msgs).
 

Modified: trunk/plugins/bldjid/bldjid.tcl
===================================================================
--- trunk/plugins/bldjid/bldjid.tcl	2010-02-20 21:29:59 UTC (rev 302)
+++ trunk/plugins/bldjid/bldjid.tcl	2010-02-21 02:56:17 UTC (rev 303)
@@ -1,4 +1,4 @@
-# "Bldjid" plugin for Tkabber. 2010-02-20 v. 0.9.1
+# "Bldjid" plugin for Tkabber. 2010-02-21 v. 0.9.2
 # Written by Serge Yudin xmpp:bigote at jabber.ru
 # See README or README.ru file for usage.
 
@@ -225,8 +225,8 @@
 	upvar 0 $compsvar comps
 
 	if {!$wordstart} {
-		lappend comps {/bldjid } {/unbldjid } {/amnesty } \
-			{/visitors } {/visited } {/bldhelp } {/clearmon }
+		lappend comps {/bldjid } {/unbldjid } {/inbanlist } {/inmemberlist } \
+		{/amnesty } {/visitors } {/visited } {/bldhelp } {/clearmon }
 	}
 
 	if {$wordstart && [regexp {^/(bldjid|unban|unbldjid).*} $line]} {
@@ -251,6 +251,10 @@
 # Detect the command.
 	if {[string match {/bldjid*} $body]} {
 		set cmd /bldjid
+	} elseif {[string match {/inbanlist*} $body]} {
+		set cmd /inbanlist
+	} elseif {[string match {/inmemberlist*} $body]} {
+		set cmd /inmemberlist
 	} elseif {[string match {/unbldjid*} $body]} {
 		set cmd /unbldjid
 	} elseif {[string match {/amnesty*} $body]} {
@@ -273,6 +277,14 @@
 
 	if {[string equal [string range $body 0 9] "/unbldjid "]} {
 		set jid [::plugins::muc::parse_nick $body 10]
+	} elseif {[string equal [string range $body 0 10] "/inbanlist "]} {
+		set jid [::plugins::muc::parse_nick $body 11]
+		set attr affiliation
+		set val outcast
+	} elseif {[string equal [string range $body 0 13] "/inmemberlist "]} {
+		set jid [::plugins::muc::parse_nick $body 14]
+		set attr affiliation
+		set val member
 	} elseif {[string equal [string range $body 0 7] "/bldjid "]} {
 		lassign [::plugins::muc::parse_nick_reason $body 8] jid reason
 		set params {affiliation outcast}
@@ -358,6 +370,16 @@
 		/visited {
 			[namespace current]::visited $xlib $chatid $room $group $nick
 		}
+
+		/inbanlist {
+			[namespace current]::request_list $attr $val $chatid \
+			[list inbanlist $jid]
+		}
+
+		/inmemberlist {
+			[namespace current]::request_list $attr $val $chatid \
+			[list inmemberlist $jid]
+		}
 	}
 	return stop
 }
@@ -392,23 +414,71 @@
 }
 
 proc bldjid::amnesty {chatid attr val w f} {
-	set group [chat::get_jid $chatid]
-	[namespace current]::request_list $attr $val $chatid
+#	set group [chat::get_jid $chatid]
+	[namespace current]::request_list $attr $val $chatid amnesty
 	destroy $w
 }
 
-proc bldjid::request_list {attr val chatid} {
+proc bldjid::request_list {attr val chatid cmd} {
 	set xlib [chat::get_xlib $chatid]
 	set group [chat::get_jid $chatid]
+	set comm [lindex $cmd 0]
+	if {$comm == "amnesty"} {
+			set cmd [list [namespace current]::receive_send_list $attr $val $chatid]
+	} elseif {$comm == "inbanlist" || $comm == "inmemberlist"} {
+		set jid ""
+		if {[llength $cmd] > 1} {
+			set jid [lindex $cmd 1]
+		}
+		set cmd [list [namespace current]::receive_search_list \
+			$attr $val $chatid $jid]
+	} else {
+		return
+	}
 	::xmpp::sendIQ $xlib get \
 		-query [::xmpp::xml::create query \
 		-xmlns "http://jabber.org/protocol/muc#admin" \
 		-subelement [::xmpp::xml::create item \
 		-attrs [list $attr $val]]] \
 		-to $group \
-		-command [list [namespace current]::receive_send_list $attr $val $chatid]
+		-command $cmd
 }
 
+proc bldjid::receive_search_list {attr val chatid test_jid res child} {
+	set xlib [chat::get_xlib $chatid]
+	set group [chat::get_jid $chatid]
+	if {![string equal $res ok]} {
+		chat::add_message $chatid $group error \
+		"$attr $val list: [error_to_string $child]" {}
+		return
+	}
+	::xmpp::xml::split $child tag xmlns attrs cdata items
+	if {$items == ""} {
+		chat::add_message $chatid $group error \
+		[::msgcat::mc "The %s list is empty for %s." $val $group] {}
+		return
+	}
+	set found 0
+	set header [::msgcat::mc "JIDs that match your search pattern '%s' in %s list of this room:" $test_jid $val]
+	set msg ""
+	foreach item $items {
+		::xmpp::xml::split $item tag xmlns attrs cdata subels
+		switch -- $tag {
+			item {
+				set jid [::xmpp::xml::getAttr $attrs jid]
+			}
+		}
+		if {[string match *$test_jid* $jid]} {
+			lappend msg "\n$jid"
+			set found 1
+		}
+	}
+	if {!$found} {
+		append header [::msgcat::mc "\nNo matches were found."]
+	}
+	[namespace current]::print_search_res $chatid $group $header $msg
+}
+
 proc bldjid::receive_send_list {attr val chatid res child} {
 	set xlib [chat::get_xlib $chatid]
 	set group [chat::get_jid $chatid]
@@ -420,7 +490,7 @@
 	::xmpp::xml::split $child tag xmlns attrs cdata items
 	if {$items == {}} {
 		chat::add_message $chatid $group error \
-		[::msgcat::mc "The blacklist is already empty for %s." $group] {}
+		[::msgcat::mc "The blacklist is empty for %s." $group] {}
 		return
 	}
 	set items2 {}
@@ -736,6 +806,10 @@
 	\n/unbldjid JID\
 	\n\nUnban all people banned in the current room:\
 	\n/amnesty\
+	\n\nSearch for a pattern in the outcast list of the current room:\
+	\n/inbanlist pattern\
+	\n\nSearch for a pattern in the member list of the current room:\
+	\n/inmemberlist pattern\
 	\n\nShow all visitors of the current room:\
 	\n/visitors\
 	\n\nShow all visitors of rooms that match *room*:\

Modified: trunk/plugins/bldjid/msgs/ru.msg
===================================================================
--- trunk/plugins/bldjid/msgs/ru.msg	2010-02-20 21:29:59 UTC (rev 302)
+++ trunk/plugins/bldjid/msgs/ru.msg	2010-02-21 02:56:17 UTC (rev 303)
@@ -50,12 +50,12 @@
 ::msgcat::mcset ru "Parameters expected. Type /bldhelp for usage examples." \
 "Здесь должны идти параметры. Наберите /bldhelp для получения справки."
 ::msgcat::mcset ru "Short usage examples for Bldjid plugin" "Примеры использования команд плагина Bldjid"
-::msgcat::mcset ru "The blacklist is already empty for %s." "Чёрный список комнаты %s уже пуст."
+::msgcat::mcset ru "The blacklist is empty for %s." "Чёрный список комнаты %s пуст."
 ::msgcat::mcset ru "The list is empty." "Список пуст."
 ::msgcat::mcset ru "You turned off showing results in the rooms where you don't have admin privileges." \
 "Вы отключили показ результатов в комнатах, где у вас нет админских прав."
-::msgcat::mcset ru "\nBan in all rooms where you have admin privileges: \n/bldjid JID \nSome reason for banning (optional). \n\nUnban a banned person in these rooms: \n/unbldjid JID \n\nUnban all people banned in the current room: \n/amnesty \n\nShow all visitors of the current room: \n/visitors \n\nShow all visitors of rooms that match *room*: \n/visitors room \n\nShow visits made by someone whose nick matches *nick*: \n/visited nick \n\nShows visits made by *nick*, to the rooms that match *room*: \n/visited nick \nroom \n\nThe same fashion as previous, but looking for\ \njids, roles, affiliations and versions:\ \n/visited jid john\ \n/visited role moder\ \n/visited aff none\ \n/visited ver Tkabber\ \n/visited ver Debian\ \n\nAn enhancement of the previous command that allows searching in log file:\ \n/visited log nick\ \n/visited log jid mylogin at jabberserver.org\ \nroom\ \n/visited log ver Gajim Version: 0.12.1 OS: Windows XP\ \n\nBan in all rooms where you have admin privileges: \n?n? means an item number from a list given by a /visit* command. \n/bldjid ?n? \nSome reason for banning (optional). \n\nClear the current monitor window: \n/clearmon \n\nTo toggle between Show and Close monitor states use <Control-m> shortcut. \n\nSee README file for more information. \nVisit Tkabber -> Customize -> Plugins -> Bldjid \nto tune the plugin for your needs." \
-"\nЗабанить во всех комнатах, где у вас есть админские права: \n/bldjid JID \nПричина бана (необязательна). \n\nРазбанить забаненного пользователя в таких комнатах: \n/unbldjid JID \n\nРазбанить всех забаненных в текущей комнате: \n/amnesty \n\nПоказать всех посетителей в текущей комнате: \n/visitors \n\nПоказать всех посетителей комнаты, название которой подходит к *room*: \n/visitors room \n\nПоказать визиты пользователя, чей ник подходит к *nick*: \n/visited nick \n\nПоказать визиты, сделанные *nick*, в комнаты, подходящие к *room*: \n/visited nick \nroom \n\nКак и в предыдущих двух случаях, но ищем джиды, роли, ранги и версии:\ \n/visited jid pupkin\ \n/visited role moder\ \n/visited aff none\ \n/visited ver Tkabber\ \n/visited ver Debian\ \n\nРасширение предыдущей команды, позволяющее искать в файле лога:\ \n/visited log nick \n/visited log jid mylogin at jabberserver.org\ \nroom\ \n/visited log ver Gajim Версия: 0.12.1 ОС: Windows XP\ \n\nЗабанить во всех комнатах, где у вас есть админские права: \n?n? означает номер в списке, выведенном по команде /visit*. \n/bldjid ?n? \nПричина бана (необязательна). \n\nОчистить текущее окно монитора: \n/clearmon \n\nЧтобы показать/скрыть монитор, воспользуйтесь сочетанием клавиш <Control-m>. \n\nПодробное описание команд читайте в файле README.ru. \nЗайдите в Tkabber -> Настройки -> Plugins -> Bldjid, \nчтобы настроить плагин под ваши нужды."
+::msgcat::mcset ru "\nBan in all rooms where you have admin privileges: \n/bldjid JID \nSome reason for banning (optional). \n\nUnban a banned person in these rooms: \n/unbldjid JID \n\nUnban all people banned in the current room: \n/amnesty \n\nSearch for a pattern in the outcast list of the current room: \n/inbanlist pattern \n\nSearch for a pattern in the member list of the current room: \n/inmemberlist pattern \n\nShow all visitors of the current room: \n/visitors \n\nShow all visitors of rooms that match *room*: \n/visitors room \n\nShow visits made by someone whose nick matches *nick*: \n/visited nick \n\nShows visits made by *nick*, to the rooms that match *room*: \n/visited nick \nroom \n\nThe same fashion as previous, but looking for\ \njids, roles, affiliations and versions:\ \n/visited jid john\ \n/visited role moder\ \n/visited aff none\ \n/visited ver Tkabber\ \n/visited ver Debian\ \n\nAn enhancement of the previous command that allows searching in log file:\ \n/visited log nick\ \n/visited log jid mylogin at jabberserver.org\ \nroom\ \n/visited log ver Gajim Version: 0.12.1 OS: Windows XP\ \n\nBan in all rooms where you have admin privileges: \n?n? means an item number from a list given by a /visit* command. \n/bldjid ?n? \nSome reason for banning (optional). \n\nClear the current monitor window: \n/clearmon \n\nTo toggle between Show and Close monitor states use <Control-m> shortcut. \n\nSee README file for more information. \nVisit Tkabber -> Customize -> Plugins -> Bldjid \nto tune the plugin for your needs." \
+"\nЗабанить во всех комнатах, где у вас есть админские права: \n/bldjid JID \nПричина бана (необязательна). \n\nРазбанить забаненного пользователя в таких комнатах: \n/unbldjid JID \n\nРазбанить всех забаненных в текущей комнате: \n/amnesty \n\nИскать слово в чёрном списке текущей комнаты: \n/inbanlist pattern \n\nИскать слово в списке членов текущей комнаты: \n/inmemberlist pattern \n\nПоказать всех посетителей в текущей комнате: \n/visitors \n\nПоказать всех посетителей комнаты, название которой подходит к *room*: \n/visitors room \n\nПоказать визиты пользователя, чей ник подходит к *nick*: \n/visited nick \n\nПоказать визиты, сделанные *nick*, в комнаты, подходящие к *room*: \n/visited nick \nroom \n\nКак и в предыдущих двух случаях, но ищем джиды, роли, ранги и версии:\ \n/visited jid pupkin\ \n/visited role moder\ \n/visited aff none\ \n/visited ver Tkabber\ \n/visited ver Debian\ \n\nРасширение предыдущей команды, позволяющее искать в файле лога:\ \n/visited log nick \n/visited log jid mylogin at jabberserver.org\ \nroom\ \n/visited log ver Gajim Версия: 0.12.1 ОС: Windows XP\ \n\nЗабанить во всех комнатах, где у вас есть админские права: \n?n? означает номер в списке, выведенном по команде /visit*. \n/bldjid ?n? \nПричина бана (необязательна). \n\nОчистить текущее окно монитора: \n/clearmon \n\nЧтобы показать/скрыть монитор, воспользуйтесь сочетанием клавиш <Control-m>. \n\nПодробное описание команд читайте в файле README.ru. \nЗайдите в Tkabber -> Настройки -> Plugins -> Bldjid, \nчтобы настроить плагин под ваши нужды."
 ::msgcat::mcset ru "current room:" "текущую комнату:"
 ::msgcat::mcset ru "room %s:" "комнату %s:"
 ::msgcat::mcset ru "rooms that match *%s*:" "комнаты, названия которых подходят к *%s*:"
@@ -71,3 +71,6 @@
 "Включите эту опцию, чтобы отслеживать членство и роли посетителей. Если включено ведение логов в файл, эта информация будет туда писаться независимо от состояния данной опции."
 ::msgcat::mcset ru "Enable this option to log visitors' client version and OS. Please note that if logging to a file is enabled this information will be saved to file anyway." \
 "Включите эту опцию, чтобы отслеживать версию клиента и ОС посетителей. Если включено ведение логов в файл, эта информация будет туда писаться независимо от состояния данной опции."
+::msgcat::mcset ru "JIDs that match your search pattern '%s' in %s list of this room:" \
+"Джиды, подходящие к поисковому паттерну '%s' в списке %s этой комнаты:"
+::msgcat::mcset ru "\nNo matches were found." "\nНе найдено ни одного подходящего джида."



More information about the Tkabber-dev mailing list