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

tkabber-svn at jabber.ru tkabber-svn at jabber.ru
Mon Feb 1 04:45:26 MSK 2010


Author: bigote
Date: 2010-02-01 04:45:26 +0300 (Mon, 01 Feb 2010)
New Revision: 279

Modified:
   trunk/plugins/bldjid/ChangeLog
   trunk/plugins/bldjid/TODO
   trunk/plugins/bldjid/bldjid.tcl
   trunk/plugins/bldjid/msgs/ru.msg
Log:
Plugin adapted to changes in muc.tcl made in revision 1898.


Modified: trunk/plugins/bldjid/ChangeLog
===================================================================
--- trunk/plugins/bldjid/ChangeLog	2010-01-29 13:03:31 UTC (rev 278)
+++ trunk/plugins/bldjid/ChangeLog	2010-02-01 01:45:26 UTC (rev 279)
@@ -1,3 +1,14 @@
+2010-02-01  Serge Yudin  <xmpp:bigote at jabber.ru> <mailto:bigote at gmail.com>
+
+--- Version 0.6.4 of the plugin.
+
+--- Files modified:
+    bldjid.tcl, ChangeLog, msgs/ru.msg.
+
+--- Changes:
+	Plugin adapted to changes in muc.tcl made in revision 1898.
+	Also, a reference to a Russian file README.ru fixed in ru.msg.
+
 2009-12-12  Serge Yudin  <xmpp:bigote at jabber.ru> <mailto:bigote at gmail.com>
 
 --- Version 0.6.3 of the plugin.

Modified: trunk/plugins/bldjid/TODO
===================================================================
--- trunk/plugins/bldjid/TODO	2010-01-29 13:03:31 UTC (rev 278)
+++ trunk/plugins/bldjid/TODO	2010-02-01 01:45:26 UTC (rev 279)
@@ -12,7 +12,15 @@
 	but at least the menu can be hidden dynamically when we uncheck and set
 	corresponding options.
 
-===	Add "Bldjid" menu item with all commands to room MUC menu.
-	Note that a list of rooms must be done for these commands to work.
+===	Add selective server message printing.
+---	Now it's possible to show either all or no server messages
+	(and smart logging, when only the first entrance of JID/Nick pair is shown).
+---	It would be nice to be able to show messages about nick changing
+	and also about kicking and banning people.
 
+===	Add possibility to log resource and client version
+	for better distinguishing of visitors.
+
+===	Fix a bug with broken monitor window if editing window size is changed.
+
 ===	Add "Antiflood & Autokick" functionality.

Modified: trunk/plugins/bldjid/bldjid.tcl
===================================================================
--- trunk/plugins/bldjid/bldjid.tcl	2010-01-29 13:03:31 UTC (rev 278)
+++ trunk/plugins/bldjid/bldjid.tcl	2010-02-01 01:45:26 UTC (rev 279)
@@ -1,4 +1,4 @@
-# "Bldjid" plugin for Tkabber. 2009-12-12 v. 0.6.3
+# "Bldjid" plugin for Tkabber. 2010-02-01 v. 0.6.4
 # Written by Serge Yudin xmpp:bigote at jabber.ru
 # See README file for usage.
 
@@ -89,10 +89,10 @@
 	hook::add chat_send_message_hook \
 	[namespace current]::handle_commands 17
 	::hook::add open_chat_post_hook [namespace current]::setup_bindings
-	hook::add client_presence_hook \
+	hook::add chat_user_enter \
 	[namespace current]::smart_enter_exit_message 69
 	hook::add room_nickname_changed_hook \
-	[namespace current]::smart_enter_exit_message 51
+	[namespace current]::bridge2_smart_enter_exit_message 100
 }
 
 proc bldjid::unload {} {
@@ -106,10 +106,10 @@
 	hook::remove chat_send_message_hook \
 	[namespace current]::handle_commands 17
 	::hook::remove open_chat_post_hook [namespace current]::setup_bindings
-	hook::remove client_presence_hook \
+	hook::remove chat_user_enter \
 	[namespace current]::smart_enter_exit_message 69
 	hook::remove room_nickname_changed_hook \
-	[namespace current]::smart_enter_exit_message 51
+	[namespace current]::bridge2_smart_enter_exit_message 100
 
 	catch {unset ent_cntr}
 	catch {unset user_list}
@@ -130,22 +130,24 @@
     bind $w <<ToggleMonitor>> +break
 }
 
+proc bldjid::bridge2_smart_enter_exit_message {chatid nick newnick} {
+	after idle [namespace current]::smart_enter_exit_message [list $chatid $newnick]
+}
+
 ## Thanks to Alexey Smirnov <alexey.smirnov at gmx.com>
 ## and Rakhmanin Ruslan <rakhmaninr at gmail.com>
 ## Adapted to bldjid's necessities by Serge Yudin
-proc bldjid::smart_enter_exit_message {xlib jid type x args} {
-	global grouproster
+proc bldjid::smart_enter_exit_message {chatid nick} {
 	global jids_by_chats
 	variable options
 	variable ent_cntr
 	if {!$options(enable_jids_gathering)} {
 		return
 	}
-	set group [::xmpp::jid::stripResource $jid]
-	set chatid [::chat::chatid $xlib $group]
+	set group [::chat::get_jid $chatid]
 	if {[chat::is_groupchat $chatid]} {
-		set user_already_here [lcontain $grouproster(users,$chatid) $jid]
-		if {$type != "available" || $user_already_here} {
+		set user_already_here [lcontain [::muc::roster $chatid] $nick]
+		if {!$user_already_here} {
 			return
 		}
 	} else {
@@ -153,15 +155,14 @@
 	}
 	if {[::chat::is_opened $chatid]} {
 		if {[::chat::is_groupchat $chatid]} {
-			if {[::xmpp::jid::resource $jid] == ""} {
+			if {$nick == ""} {
 				return
 			}
-			set nick [::chat::get_nick $xlib $jid groupchat]
 			set ts [clock format [clock seconds] \
 			-format $::plugins::options(timestamp_format)]
+			set xlib [::chat::get_xlib $chatid]
 			set real_jid [::xmpp::jid::stripResource \
 				[::muc::get_real_jid $xlib $group/$nick]]
-
 			if {[info exists jids_by_chats($group)]} {
 				if {$options(verbosity_level) == "min"} {
 					foreach item $jids_by_chats($group) {
@@ -181,7 +182,7 @@
 				[expr {[llength $jids_by_chats($group)] \
 				- $options(log_length)}]]
 			}
-				lappend jids_by_chats($group) [list $ts $nick $real_jid]
+			lappend jids_by_chats($group) [list $ts $nick $real_jid]
 			if {$options(send_chat_messages) && $options(verbosity_level) == "min"} {
 				set occupant "$nick ($real_jid)"
 				set msg [::msgcat::mc "%s has entered" $occupant]
@@ -471,12 +472,10 @@
 # Here we get our role and affiliation in a room.
 # Thanks to Konstantin Khomoutov <kostix at 007spb.ru>
 proc bldjid::whoami {xlib where} {
-	global grouproster
 	if {[muc::is_compatible $where]} {
 		set chatid [::chat::chatid $xlib $where]
 		set jid $where/[get_our_groupchat_nick $chatid]
-		return [list $muc::users(role,$xlib,$jid) \
-				$muc::users(affiliation,$xlib,$jid)]
+		return [muc::get_affiliation $xlib $jid]
 	}
 }
 
@@ -486,7 +485,6 @@
 # If some transport doesn't have it (1% of probability),
 # a ban request will be sent there and we'll get an error.
 	variable options
-	global grouproster
 	set grpjids ""
 	foreach tmpchatid [lsort [lfilter chat::is_groupchat [chat::opened $xlib]]] {
 		set tmpgrp [::chat::get_jid $tmpchatid]
@@ -512,11 +510,11 @@
 	}
 	foreach tmpchatid $grplist {
 		set tmpgrp [::chat::get_jid $tmpchatid]
-		set jid $tmpgrp/[get_our_groupchat_nick $tmpchatid]
-		if {[lcontain $grouproster(users,$tmpchatid) $jid]} {
+		set nick [get_our_groupchat_nick $tmpchatid]
+		if {[lcontain [::muc::roster $tmpchatid] $nick]} {
 			switch -- $which {
 				admin {
-					set iam [lindex [whoami $xlib $tmpgrp] 1]
+					set iam [whoami $xlib $tmpgrp]
 					if {($iam == "admin" || $iam == "owner") \
 						&& ![string match *%*@irc* $tmpgrp]} {
 						lappend grpjids $tmpgrp
@@ -585,7 +583,7 @@
 			return stop
 		} elseif {$options(matching_rules) == "exact"} {
 			if {$options(filter_admin_rooms)} {
-				set iam [lindex [whoami $xlib $room] 1]
+				set iam [whoami $xlib $room]
 				if {!($iam == "admin" || $iam == "owner")} {
 					chat::add_message $chatid $group error $filter_turned_on {}
 					return stop
@@ -649,7 +647,7 @@
 				to the rooms that match *%s*:" $nick $room]
 			}
 			if {$options(filter_admin_rooms)} {
-				set iam [lindex [whoami $xlib $group] 1]
+				set iam [whoami $xlib $group]
 				if {!($iam == "admin" || $iam == "owner")} {
 					chat::add_message $chatid $group error \
 					[::msgcat::mc "You turned off showing results in the rooms\

Modified: trunk/plugins/bldjid/msgs/ru.msg
===================================================================
--- trunk/plugins/bldjid/msgs/ru.msg	2010-01-29 13:03:31 UTC (rev 278)
+++ trunk/plugins/bldjid/msgs/ru.msg	2010-02-01 01:45:26 UTC (rev 279)
@@ -16,7 +16,7 @@
 ::msgcat::mcset ru "Matching rules for /visit* commands." \
 "Правила совпадений для команд /visit*."
 ::msgcat::mcset ru "Max length of your JID list for each room. Zero means unlimited. See README for details." \
-"Максимальная длина списка джидов для каждой из комнат. Ноль означает бесконечный список. Читайте подробности в файле README."
+"Максимальная длина списка джидов для каждой из комнат. Ноль означает бесконечный список. Читайте подробности в файле README.ru"
 ::msgcat::mcset ru "Maximum: All entrances of each user will be logged." \
 "Максимальный: Будут зарегистрированы все заходы каждого пользователя."
 ::msgcat::mcset ru "Minimum: Log each entrance or nick change of a unique pair nick/jid only once per room (less memory used)." \
@@ -55,7 +55,7 @@
 ::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\nBan a user in the current room by his/her JID: \n/banjid JID \nSome reason for banning (optional). \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\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\nBan in the current room by a number from a list given by a /visit* command. \n/banjid ?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/banjid JID \nПричина бана (необязательна). \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?n? означает номер в списке, выведенном по команде /visit*. \n/bldjid ?n? \nПричина бана (необязательна). \n\nЗабанить в текущей комнате по номеру в списке, выведенном командой /visit*. \n/banjid ?n? \nПричина бана (необязательна). \n\nОчистить текущее окно монитора: \n/clearmon \n\nЧтобы показать/скрыть монитор, воспользуйтесь сочетанием клавиш <Control-m>. \n\nПодробное описание команд читайте в файле README. \nЗайдите в Tkabber -> Настройки -> Plugins -> Bldjid, \nчтобы настроить плагин под ваши нужды."
+"\nЗабанить во всех комнатах, где у вас есть админские права: \n/bldjid JID \nПричина бана (необязательна). \n\nРазбанить забаненного пользователя в таких комнатах: \n/unbldjid JID \n\nЗабанить в текущей комнате пользователя по его/её джиду: \n/banjid JID \nПричина бана (необязательна). \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?n? означает номер в списке, выведенном по команде /visit*. \n/bldjid ?n? \nПричина бана (необязательна). \n\nЗабанить в текущей комнате по номеру в списке, выведенном командой /visit*. \n/banjid ?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*:"



More information about the Tkabber-dev mailing list