Tkabber plugins

Check-in [3c0459b1df]
Login

Many hyperlinks are disabled.
Use anonymous login to enable hyperlinks.

Overview
Comment:Reformatted the code.
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA1:3c0459b1df7655f4a1dba015a160041de42d61c0
User & Date: sgolovan 2015-05-08 14:05:25
Context
2015-05-08
14:19
Adapted the Ejabberd config plugin to the Ttk based interface. check-in: 9e1c4b55aa user: sgolovan tags: trunk
14:05
Reformatted the code. check-in: 3c0459b1df user: sgolovan tags: trunk
13:54
Reformatted the code, fixed posting menu for debug category with :: in it. Adapted the debug window to the Ttk based interface. check-in: bb2ed0978a user: sgolovan tags: trunk
Changes
Hide Diffs Unified Diffs Ignore Whitespace Patch

Changes to ChangeLog.

1





2
3
4
5
6
7
8
2015-05-08  Sergei Golovan  <sgolovan@nes.ru>






	* debug/debug.tcl, debug/msgs/de.msg, debug/msgs/es.msg,
	  debug/msgs/pl.msg, debug/msgs/ru.msg, debug/msgs/uk.msg: Reformatted
	  the code, fixed posting menu for debug category with :: in it.
	  Adapted the debug window to the Ttk based interface.

	* cyrillize/cyrillize.tcl, cyrillize/msgs/ru.msg: Reformatted the

>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
2015-05-08  Sergei Golovan  <sgolovan@nes.ru>

	* ejabberd/ejabberd.tcl, ejabberd/msgs/ca.msg, ejabberd/msgs/de.msg,
	  ejabberd/msgs/es.msg, ejabberd/msgs/fr.msg, ejabberd/msgs/it.msg,
	  ejabberd/msgs/nl.msg, ejabberd/msgs/pl.msg, ejabberd/msgs/pt.msg,
	  ejabberd/msgs/ru.msg, ejabberd/msgs/uk.msg: Reformatted the code.

	* debug/debug.tcl, debug/msgs/de.msg, debug/msgs/es.msg,
	  debug/msgs/pl.msg, debug/msgs/ru.msg, debug/msgs/uk.msg: Reformatted
	  the code, fixed posting menu for debug category with :: in it.
	  Adapted the debug window to the Ttk based interface.

	* cyrillize/cyrillize.tcl, cyrillize/msgs/ru.msg: Reformatted the

Changes to ejabberd/ejabberd.tcl.

1
2
3
4
5
6
7
8
9
10
11
12
13
14

15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
..
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126

127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
...
201
202
203
204
205
206
207
208
209
210
211
212
213

214
215
216
217
218
219
220

221
222
223
224
225
226
227
228
...
236
237
238
239
240
241
242
243

244

245

246

247

248
249
250
251

252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274

275

276

277

278

279
280
281
282
283
284
285
286
...
287
288
289
290
291
292
293
294

295

296

297
298
299
300
301
302
303

304
305
306
307
308
309
310
311
312
313
314
315

316
317
318
319
320
321

322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
...
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
...
389
390
391
392
393
394
395
396

397

398
399
400
401
402
403
404

405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423

424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
...
447
448
449
450
451
452
453
454

455

456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478

479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
...
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569

# ejabberd.tcl --
#
#	Ejabebrd administration plugin.

package require msgcat

namespace eval ejabberd {
    ::msgcat::mcload [file join [file dirname [info script]] msgs]

    if {![::plugins::is_registered ejabberd]} {
	::plugins::register ejabberd \
			    -namespace [namespace current] \
			    -source [info script] \
			    -description [::msgcat::mc "Whether the Ejabberd plugin is loaded."] \

			    -loadcommand [namespace code load] \
			    -unloadcommand [namespace code unload]
	return
    }

    custom::defvar ejabberd_server_list {} \
	[::msgcat::mc "List of ejabberd servers."] \
	-group Hidden
}

proc ejabberd::load {} {
    variable NS_ECONFIGURE
    variable data

    set data(windows) {}

    set NS_ECONFIGURE "http://ejabberd.jabberstudio.org/protocol/configure"

    hook::add finload_hook [namespace current]::setup_menu

    disco::browser::register_feature_handler $NS_ECONFIGURE \
		[namespace current]::open_win \
		-desc [list * [::msgcat::mc "Administrate ejabberd"]]

    disco::browser::register_feature_handler ejabberd:config \
		[list ::data::request_data ejabberd:config] -node 1 \
		-desc [list * [::msgcat::mc "Configure service"]]

    setup_menu
}

proc ejabberd::unload {} {
    variable NS_ECONFIGURE
    variable data

    disco::browser::unregister_feature_handler ejabberd:config
    disco::browser::unregister_feature_handler $NS_ECONFIGURE

    catch {
        set m [.mainframe getmenu admin]
	set idx [$m index [::msgcat::mc "Administrate ejabberd..."]]
        $m delete $idx
    }

    catch { destroy .ejabberdserver }

    foreach w $data(windows) {
	destroy_win $w
    }

    hook::remove finload_hook [namespace current]::setup_menu

    catch {unset data}
    catch {unset NS_ECONFIGURE}
}

proc ejabberd::setup_menu {} {
    catch {
        set m [.mainframe getmenu admin]

        $m add command -label [::msgcat::mc "Administrate ejabberd..."] \
	    -command [namespace current]::ask_server_dialog
    }
}

proc ejabberd::ask_server_dialog {} {
    global ejabberd_server
    global ejabberd_xlib
    variable ejabberd_server_list
................................................................................
    catch { destroy $gw }

    if {[llength [connections]] == 0} return

    set ejabberd_xlib [connection_jid [lindex [connections] 0]]

    Dialog $gw -title [::msgcat::mc "ejabberd server"] -separator 1 -anchor e \
	    -default 0 -cancel 1

    set gf [$gw getframe]
    grid columnconfigure $gf 1 -weight 1

    if {[llength $ejabberd_server_list]} {
	set ejabberd_server [lindex $ejabberd_server_list 0]
    }

    label $gf.ljid -text [::msgcat::mc "Server JID:"]
    ComboBox $gf.jid \
	     -textvariable ejabberd_server \
	     -values $ejabberd_server_list \
	     -width 35

    grid $gf.ljid -row 0 -column 0 -sticky e
    grid $gf.jid  -row 0 -column 1 -sticky ew

    if {[llength [connections]] > 1} {
	foreach c [connections] {
	    lappend connections [connection_jid $c]
	}
	set ejabberd_xlib [lindex $connections 0]

	label $gf.lxlib -text [::msgcat::mc "Connection:"]
	ComboBox $gf.xlib \
		 -textvariable ejabberd_xlib \
		 -values $connections \
		 -editable 0

	grid $gf.lxlib -row 1 -column 0 -sticky e
	grid $gf.xlib  -row 1 -column 1 -sticky ew
    }


    $gw add -text [::msgcat::mc "Administrate"] -command "[namespace current]::administrate $gw"
    $gw add -text [::msgcat::mc "Cancel"] -command "destroy $gw"

    $gw draw $gf.jid
}

proc ejabberd::administrate {gw} {
    global ejabberd_server
    global ejabberd_xlib
    variable ejabberd_server_list

    destroy $gw

    set ejabberd_server_list \
	[update_combo_list $ejabberd_server_list $ejabberd_server 10]

    foreach c [connections] {
	if {[connection_jid $c] == $ejabberd_xlib} {
	    set xlib $c
	}
    }

    if {![info exists xlib]} return

    open_win $xlib $ejabberd_server
}

proc ejabberd::open_win {xlib jid args} {
    variable data

    set w [win_id ejabberd $xlib:$jid]
    if {[winfo exists $w]} {
	raise_win $w
	return
    }

    lappend data(windows) $w

    set title [::msgcat::mc "%s administration" $jid]
    add_win $w -title $title \
	       -tabtitle $jid \
	       -class Ejabberd \
	       -raise 1

    set nb [NoteBook $w.nb]
    pack $nb -fill both -expand yes

    # Binding $nb, not $w to avoid multiple calls if $w is a toplevel
    bind $nb <Destroy> [list [namespace current]::cleanup $xlib $jid $w]

    foreach {page title} \
	[list main   [::msgcat::mc "Main"] \
	      nodes  [::msgcat::mc "Nodes"] \
	      reg    [::msgcat::mc "Registration"] \
	      access [::msgcat::mc "Access"] \
	      last   [::msgcat::mc "Last Activity"]] {
	set f [$nb insert end $page -text $title]

	fill_page_$page $f $xlib $jid
    }
    $nb raise main
}

proc ejabberd::cleanup {xlib jid w} {
    variable data

................................................................................
    catch {unset data($xlib,$jid,acls)}
    catch {unset data($xlib,$jid,access_rules)}
    catch {unset data($xlib,$jid,last)}
    catch {unset data($xlib,$jid,last_int)}

    set idx [lsearch -exact $data(windows) $w]
    if {$idx >= 0} {
	set data(windows) [lreplace $data(windows) $idx $idx]
    }
}

proc ejabberd::add_grid_record {xlib jid info name desc row} {
    label $info.l$name -text $desc

    label $info.v$name -textvariable [namespace current]::data($xlib,$jid,$name)
    grid $info.l$name -row $row -column 0 -sticky e
    grid $info.v$name -row $row -column 1 -sticky w
}

proc ejabberd::add_grid_edit {xlib jid info name desc row} {
    label $info.l$name -text $desc

    entry $info.v$name -textvariable [namespace current]::data($xlib,$jid,$name)
    grid $info.l$name -row $row -column 0 -sticky e
    grid $info.v$name -row $row -column 1 -sticky we
}

proc ejabberd::add_grid_text {xlib jid info name desc row} {
    label $info.l$name -text $desc
    set sw [ScrolledWindow $info.s$name -scrollbar vertical]
................................................................................
    variable data

    set info [frame $f.info]
    pack $info -side top -anchor w -fill both

    grid columnconfigure $info 1 -weight 2

    add_grid_record $xlib $jid $info total_users   [::msgcat::mc "Registered users:"] 0

    add_grid_record $xlib $jid $info online_users  [::msgcat::mc "Online users:"]     1

    add_grid_record $xlib $jid $info running_nodes [::msgcat::mc "Running nodes:"]    2

    add_grid_record $xlib $jid $info stopped_nodes [::msgcat::mc "Stopped nodes:"]    3

    add_grid_record $xlib $jid $info outgoing_s2s  [::msgcat::mc "Outgoing S2S:"]     4


    set reload \
	[button $f.reload -text [::msgcat::mc "Reload"] \
	     -command [list [namespace current]::reload_page_main $f $xlib $jid]]

    pack $reload -side bottom -anchor e
    reload_page_main $f $xlib $jid
}

proc ejabberd::reload_page_main {f xlib jid} {
    variable NS_ECONFIGURE

    ::xmpp::sendIQ $xlib get \
	-query [::xmpp::xml::create info \
			-xmlns $NS_ECONFIGURE] \
	-to $jid \
	-command [list [namespace current]::parse_main_info $f $xlib $jid]
}

proc ejabberd::parse_main_info {f xlib jid status xml} {
    variable data

    if {![string equal $status ok]} {
	return
    }

    ::xmpp::xml::split $xml tag xmlns attrs cdata subels


    set data($xlib,$jid,total_users)   [::xmpp::xml::getAttr $attrs registered-users]

    set data($xlib,$jid,online_users)  [::xmpp::xml::getAttr $attrs online-users]

    set data($xlib,$jid,running_nodes) [::xmpp::xml::getAttr $attrs running-nodes]

    set data($xlib,$jid,stopped_nodes) [::xmpp::xml::getAttr $attrs stopped-nodes]

    set data($xlib,$jid,outgoing_s2s)  [::xmpp::xml::getAttr $attrs outgoing-s2s-servers]
}


proc ejabberd::fill_page_nodes {f xlib jid} {
}

proc ejabberd::fill_page_reg {f xlib jid} {
................................................................................
    variable data

    set info [frame $f.info]
    pack $info -side top -anchor w -fill both

    grid columnconfigure $info 1 -weight 2

    add_grid_edit $xlib $jid $info welcome_subj [::msgcat::mc "Welcome message subject:"] 0

    add_grid_text $xlib $jid $info welcome_body [::msgcat::mc "Welcome message body:"]    1

    add_grid_text $xlib $jid $info reg_watchers [::msgcat::mc "Registration watchers:"]   2



    #set set_b [button $f.set -text [::msgcat::mc "Set"]]
    #pack $set_b -side right -anchor se
    set reload \
	[button $f.reload -text [::msgcat::mc "Reload"] \
	     -command [list [namespace current]::reload_page_reg $f $xlib $jid]]

    pack $reload -side right -anchor se
    reload_page_reg $f $xlib $jid
}

proc ejabberd::reload_page_reg {f xlib jid} {
    variable NS_ECONFIGURE

    ::xmpp::sendIQ $xlib get \
	-query [::xmpp::xml::create welcome-message \
			-xmlns $NS_ECONFIGURE] \
	-to $jid \
	-command [list [namespace current]::parse_welcome_message $f $xlib $jid]


    ::xmpp::sendIQ $xlib get \
	-query [::xmpp::xml::create registration-watchers \
			-xmlns $NS_ECONFIGURE] \
	-to $jid \
	-command [list [namespace current]::parse_registration_watchers $f $xlib $jid]

}

proc ejabberd::parse_welcome_message {f xlib jid status xml} {
    variable data

    set wsubj $f.info.vwelcome_subj
    set wbody $f.info.vwelcome_body

    if {![winfo exists $wsubj]} {
	return
    }

    if {![string equal $status ok]} {
	return
    }

    ::xmpp::xml::split $xml tag xmlns attrs cdata subels

    set subj ""
    set body ""

    foreach subel $subels {
	::xmpp::xml::split $xml stag sxmlns sattrs scdata ssubels

	switch -- $stag {
	    subject {set subj $scdata}
	    body {set body $scdata}
	}
    }

    set data($xlib,$jid,welcome_subj) $subj
    set data($xlib,$jid,welcome_body) $body
    $wbody delete 0.0 end
    $wbody insert 0.0 $body
}
................................................................................

proc ejabberd::parse_registration_watchers {f xlib jid status xml} {
    variable data

    set wwatchers $f.info.vreg_watchers

    if {![winfo exists $wwatchers]} {
	return
    }

    if {![string equal $status ok]} {
	return
    }

    ::xmpp::xml::split $xml tag xmlns attrs cdata subels

    set jids {}

    foreach subel $subels {
	::xmpp::xml::split $xml stag sxmlns sattrs scdata ssubels

	switch -- $tag1 {
	    jid {lappend jids $scdata}
	}
    }

    set data($xlib,$jid,reg_watchers) $jids
    $wwatchers delete 0.0 end
    $wwatchers insert 0.0 [join $jids \n]
}

................................................................................
    variable data

    set info [frame $f.info]
    pack $info -side top -anchor w -fill both

    grid columnconfigure $info 1 -weight 2

    add_grid_text $xlib $jid $info acls         [::msgcat::mc "ACLs:"]         0

    add_grid_text $xlib $jid $info access_rules [::msgcat::mc "Access rules:"] 1



    #set set_b [button $f.set -text [::msgcat::mc "Set"]]
    #pack $set_b -side right -anchor se
    set reload \
	[button $f.reload -text [::msgcat::mc "Reload"] \
	     -command [list [namespace current]::reload_page_access $f $xlib $jid]]

    pack $reload -side right -anchor se

    reload_page_access $f $xlib $jid
}

proc ejabberd::reload_page_access {f xlib jid} {
    variable NS_ECONFIGURE

    ::xmpp::sendIQ $xlib get \
	-query [::xmpp::xml::create acls \
			-xmlns $NS_ECONFIGURE] \
	-to $jid \
	-command [list [namespace current]::parse_access acls $f $xlib $jid]

    ::xmpp::sendIQ $xlib get \
	-query [::xmpp::xml::create access \
			-xmlns $NS_ECONFIGURE] \
	-to $jid \
	-command [list [namespace current]::parse_access access_rules $f $xlib $jid]

}

proc ejabberd::parse_access {var f xlib jid status xml} {
    variable data

    set w $f.info.v$var

    if {![winfo exists $w]} {
	return
    }

    if {![string equal $status ok]} {
	return
    }

    ::xmpp::xml::split $xml tag xmlns attrs cdata subels

    set data($xlib,$jid,$var) $cdata
    $w delete 0.0 end
    $w insert 0.0 $cdata
................................................................................
    variable data

    set info [frame $f.info]
    pack $info -side top -anchor w -fill both -expand yes

    #grid columnconfigure $info 1 -weight 2

    #add_grid_text $xlib $jid $info acls         [::msgcat::mc "ACLs:"]         0

    #add_grid_text $xlib $jid $info access_rules [::msgcat::mc "Access rules:"] 1


    label $info.lplot \
	-text [::msgcat::mc \
		   "Number of users that used this service N days ago:"]
    pack $info.lplot -side top -anchor w

    set sw [ScrolledWindow $info.sw]
    pack $sw -side top -fill both -expand yes
    set plot [canvas $info.plot -background white]
    $sw setwidget $plot

    set data($xlib,$jid,last) {}
    set data($xlib,$jid,last_int) 0

    set integral \
	[checkbutton $f.integral -text [::msgcat::mc "Integral"] \
	     -variable [namespace current]::data($xlib,$jid,last_int) \
	     -command [list [namespace current]::redraw_last $f $xlib $jid]]
    pack $integral -side left -anchor se

    set reload \
	[button $f.reload -text [::msgcat::mc "Reload"] \
	     -command [list [namespace current]::reload_page_last $f $xlib $jid]]

    pack $reload -side right -anchor se
}

proc ejabberd::reload_page_last {f xlib jid} {
    variable NS_ECONFIGURE

    ::xmpp::sendIQ $xlib get \
	-query [::xmpp::xml::create last \
			-xmlns $NS_ECONFIGURE] \
	-to $jid \
	-command [list [namespace current]::parse_last $f $xlib $jid]
}

proc ejabberd::parse_last {f xlib jid status xml} {
    variable data

    set plot $f.info.plot

    if {![winfo exists $plot]} {
	return
    }

    if {![string equal $status ok]} {
	return
    }

    ::xmpp::xml::split $xml tag xmlns attrs cdata subels

    set data($xlib,$jid,last) $cdata

    redraw_last $f $xlib $jid
................................................................................
    variable data

    set plot $f.info.plot

    set maxdays 0

    foreach t $data($xlib,$jid,last) {
	set days [expr {$t / (60*60*24)}]
	if {$days > $maxdays} {set maxdays $days}

	if {![info exists last($days)]} {
	    set last($days) 0
	}
	incr last($days)
    }

    set xscale 20
    set yscale 200

    $plot delete all

    set val 0

    for {set i 0} {$i <= $maxdays} {incr i} {
	if {[info exists last($i)]} {
	    set v $last($i)
	} else {
	    set v 0
	}

	if {$data($xlib,$jid,last_int)} {
	    incr val $v
	} else {
	    set val $v
	}

	set x1 [expr {$xscale * $i}]
	set x2 [expr {$xscale * ($i+1)}]
	set x [expr {($x1 + $x2)/2}]
	set y [expr {-$yscale * $val}]

	$plot create rectangle $x1 0 $x2 $y -fill red

	$plot create text $x 0 -text $i -anchor n
	$plot create text $x $y -text $val -anchor s
    }

    set bbox [$plot bbox all]

    set y1 [lindex $bbox 1]
    set y2 [lindex $bbox 3]
    set height [winfo height $plot]

    $plot scale all 0 0 1 [expr {0.9 * $height / (0.0 + $y2 - $y1)}]
    $plot configure -scrollregion [$plot bbox all]
}




|







|
|
|
|
>
|
|
|



|
|













|
|


|
|













|






|













|







 







|





|




|
|
|





|
|
|
|

|
|
|
|
|

|
|


>
|













|


|
|
|












|
|






|
|
|








|
|
|
|
|
|

|







 







|





>
|






>
|







 







|
>
|
>
|
>
|
>
|
>


|
|
>








|
|
|
|






|




>
|
>
|
>
|
>
|
>
|







 







|
>
|
>
|
>





|
|
>








|
|
|
|
>


|
|
|
|
>









|



|








|

|
|
|
|







 







|



|







|

|
|
|







 







|
>
|
>





|
|
>









|
|
|
|


|
|
|
|
>








|



|







 







|
>
|
>


|
|











|
|
|



|
|
>







|
|
|
|








|



|







 







|
|

|
|
|
|










|
|
|
|
|

|
|
|
|
|

|
|
|
|

|

|
|












>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
..
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
...
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
...
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
...
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
...
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
...
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
...
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
...
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
# ejabberd.tcl --
#
#       Ejabebrd administration plugin.

package require msgcat

namespace eval ejabberd {
    ::msgcat::mcload [file join [file dirname [info script]] msgs]

    if {![::plugins::is_registered ejabberd]} {
        ::plugins::register ejabberd \
                            -namespace [namespace current] \
                            -source [info script] \
                            -description [::msgcat::mc "Whether the Ejabberd\
                                                        plugin is loaded."] \
                            -loadcommand [namespace code load] \
                            -unloadcommand [namespace code unload]
        return
    }

    custom::defvar ejabberd_server_list {} \
        [::msgcat::mc "List of ejabberd servers."] \
        -group Hidden
}

proc ejabberd::load {} {
    variable NS_ECONFIGURE
    variable data

    set data(windows) {}

    set NS_ECONFIGURE "http://ejabberd.jabberstudio.org/protocol/configure"

    hook::add finload_hook [namespace current]::setup_menu

    disco::browser::register_feature_handler $NS_ECONFIGURE \
                [namespace current]::open_win \
                -desc [list * [::msgcat::mc "Administrate ejabberd"]]

    disco::browser::register_feature_handler ejabberd:config \
                [list ::data::request_data ejabberd:config] -node 1 \
                -desc [list * [::msgcat::mc "Configure service"]]

    setup_menu
}

proc ejabberd::unload {} {
    variable NS_ECONFIGURE
    variable data

    disco::browser::unregister_feature_handler ejabberd:config
    disco::browser::unregister_feature_handler $NS_ECONFIGURE

    catch {
        set m [.mainframe getmenu admin]
        set idx [$m index [::msgcat::mc "Administrate ejabberd..."]]
        $m delete $idx
    }

    catch { destroy .ejabberdserver }

    foreach w $data(windows) {
        destroy_win $w
    }

    hook::remove finload_hook [namespace current]::setup_menu

    catch {unset data}
    catch {unset NS_ECONFIGURE}
}

proc ejabberd::setup_menu {} {
    catch {
        set m [.mainframe getmenu admin]

        $m add command -label [::msgcat::mc "Administrate ejabberd..."] \
            -command [namespace current]::ask_server_dialog
    }
}

proc ejabberd::ask_server_dialog {} {
    global ejabberd_server
    global ejabberd_xlib
    variable ejabberd_server_list
................................................................................
    catch { destroy $gw }

    if {[llength [connections]] == 0} return

    set ejabberd_xlib [connection_jid [lindex [connections] 0]]

    Dialog $gw -title [::msgcat::mc "ejabberd server"] -separator 1 -anchor e \
            -default 0 -cancel 1

    set gf [$gw getframe]
    grid columnconfigure $gf 1 -weight 1

    if {[llength $ejabberd_server_list]} {
        set ejabberd_server [lindex $ejabberd_server_list 0]
    }

    label $gf.ljid -text [::msgcat::mc "Server JID:"]
    ComboBox $gf.jid \
             -textvariable ejabberd_server \
             -values $ejabberd_server_list \
             -width 35

    grid $gf.ljid -row 0 -column 0 -sticky e
    grid $gf.jid  -row 0 -column 1 -sticky ew

    if {[llength [connections]] > 1} {
        foreach c [connections] {
            lappend connections [connection_jid $c]
        }
        set ejabberd_xlib [lindex $connections 0]

        label $gf.lxlib -text [::msgcat::mc "Connection:"]
        ComboBox $gf.xlib \
                 -textvariable ejabberd_xlib \
                 -values $connections \
                 -editable 0

        grid $gf.lxlib -row 1 -column 0 -sticky e
        grid $gf.xlib  -row 1 -column 1 -sticky ew
    }

    $gw add -text [::msgcat::mc "Administrate"] \
            -command "[namespace current]::administrate $gw"
    $gw add -text [::msgcat::mc "Cancel"] -command "destroy $gw"

    $gw draw $gf.jid
}

proc ejabberd::administrate {gw} {
    global ejabberd_server
    global ejabberd_xlib
    variable ejabberd_server_list

    destroy $gw

    set ejabberd_server_list \
        [update_combo_list $ejabberd_server_list $ejabberd_server 10]

    foreach c [connections] {
        if {[connection_jid $c] == $ejabberd_xlib} {
            set xlib $c
        }
    }

    if {![info exists xlib]} return

    open_win $xlib $ejabberd_server
}

proc ejabberd::open_win {xlib jid args} {
    variable data

    set w [win_id ejabberd $xlib:$jid]
    if {[winfo exists $w]} {
        raise_win $w
        return
    }

    lappend data(windows) $w

    set title [::msgcat::mc "%s administration" $jid]
    add_win $w -title $title \
               -tabtitle $jid \
               -class Ejabberd \
               -raise 1

    set nb [NoteBook $w.nb]
    pack $nb -fill both -expand yes

    # Binding $nb, not $w to avoid multiple calls if $w is a toplevel
    bind $nb <Destroy> [list [namespace current]::cleanup $xlib $jid $w]

    foreach {page title} \
        [list main   [::msgcat::mc "Main"] \
              nodes  [::msgcat::mc "Nodes"] \
              reg    [::msgcat::mc "Registration"] \
              access [::msgcat::mc "Access"] \
              last   [::msgcat::mc "Last Activity"]] {
        set f [$nb insert end $page -text $title]

        fill_page_$page $f $xlib $jid
    }
    $nb raise main
}

proc ejabberd::cleanup {xlib jid w} {
    variable data

................................................................................
    catch {unset data($xlib,$jid,acls)}
    catch {unset data($xlib,$jid,access_rules)}
    catch {unset data($xlib,$jid,last)}
    catch {unset data($xlib,$jid,last_int)}

    set idx [lsearch -exact $data(windows) $w]
    if {$idx >= 0} {
        set data(windows) [lreplace $data(windows) $idx $idx]
    }
}

proc ejabberd::add_grid_record {xlib jid info name desc row} {
    label $info.l$name -text $desc
    label $info.v$name \
          -textvariable [namespace current]::data($xlib,$jid,$name)
    grid $info.l$name -row $row -column 0 -sticky e
    grid $info.v$name -row $row -column 1 -sticky w
}

proc ejabberd::add_grid_edit {xlib jid info name desc row} {
    label $info.l$name -text $desc
    entry $info.v$name \
          -textvariable [namespace current]::data($xlib,$jid,$name)
    grid $info.l$name -row $row -column 0 -sticky e
    grid $info.v$name -row $row -column 1 -sticky we
}

proc ejabberd::add_grid_text {xlib jid info name desc row} {
    label $info.l$name -text $desc
    set sw [ScrolledWindow $info.s$name -scrollbar vertical]
................................................................................
    variable data

    set info [frame $f.info]
    pack $info -side top -anchor w -fill both

    grid columnconfigure $info 1 -weight 2

    add_grid_record $xlib $jid $info total_users   \
            [::msgcat::mc "Registered users:"] 0
    add_grid_record $xlib $jid $info online_users  \
            [::msgcat::mc "Online users:"]     1
    add_grid_record $xlib $jid $info running_nodes \
            [::msgcat::mc "Running nodes:"]    2
    add_grid_record $xlib $jid $info stopped_nodes \
            [::msgcat::mc "Stopped nodes:"]    3
    add_grid_record $xlib $jid $info outgoing_s2s  \
            [::msgcat::mc "Outgoing S2S:"]     4

    set reload \
        [button $f.reload -text [::msgcat::mc "Reload"] \
             -command [list [namespace current]::reload_page_main \
                            $f $xlib $jid]]
    pack $reload -side bottom -anchor e
    reload_page_main $f $xlib $jid
}

proc ejabberd::reload_page_main {f xlib jid} {
    variable NS_ECONFIGURE

    ::xmpp::sendIQ $xlib get \
        -query [::xmpp::xml::create info \
                        -xmlns $NS_ECONFIGURE] \
        -to $jid \
        -command [list [namespace current]::parse_main_info $f $xlib $jid]
}

proc ejabberd::parse_main_info {f xlib jid status xml} {
    variable data

    if {![string equal $status ok]} {
        return
    }

    ::xmpp::xml::split $xml tag xmlns attrs cdata subels

    set data($xlib,$jid,total_users)   \
            [::xmpp::xml::getAttr $attrs registered-users]
    set data($xlib,$jid,online_users)  \
            [::xmpp::xml::getAttr $attrs online-users]
    set data($xlib,$jid,running_nodes) \
            [::xmpp::xml::getAttr $attrs running-nodes]
    set data($xlib,$jid,stopped_nodes) \
            [::xmpp::xml::getAttr $attrs stopped-nodes]
    set data($xlib,$jid,outgoing_s2s)  \
            [::xmpp::xml::getAttr $attrs outgoing-s2s-servers]
}


proc ejabberd::fill_page_nodes {f xlib jid} {
}

proc ejabberd::fill_page_reg {f xlib jid} {
................................................................................
    variable data

    set info [frame $f.info]
    pack $info -side top -anchor w -fill both

    grid columnconfigure $info 1 -weight 2

    add_grid_edit $xlib $jid $info welcome_subj \
            [::msgcat::mc "Welcome message subject:"] 0
    add_grid_text $xlib $jid $info welcome_body \
            [::msgcat::mc "Welcome message body:"]    1
    add_grid_text $xlib $jid $info reg_watchers \
            [::msgcat::mc "Registration watchers:"]   2


    #set set_b [button $f.set -text [::msgcat::mc "Set"]]
    #pack $set_b -side right -anchor se
    set reload \
        [button $f.reload -text [::msgcat::mc "Reload"] \
             -command [list [namespace current]::reload_page_reg \
                            $f $xlib $jid]]
    pack $reload -side right -anchor se
    reload_page_reg $f $xlib $jid
}

proc ejabberd::reload_page_reg {f xlib jid} {
    variable NS_ECONFIGURE

    ::xmpp::sendIQ $xlib get \
        -query [::xmpp::xml::create welcome-message \
                        -xmlns $NS_ECONFIGURE] \
        -to $jid \
        -command [list [namespace current]::parse_welcome_message \
                       $f $xlib $jid]

    ::xmpp::sendIQ $xlib get \
        -query [::xmpp::xml::create registration-watchers \
                        -xmlns $NS_ECONFIGURE] \
        -to $jid \
        -command [list [namespace current]::parse_registration_watchers \
                       $f $xlib $jid]
}

proc ejabberd::parse_welcome_message {f xlib jid status xml} {
    variable data

    set wsubj $f.info.vwelcome_subj
    set wbody $f.info.vwelcome_body

    if {![winfo exists $wsubj]} {
        return
    }

    if {![string equal $status ok]} {
        return
    }

    ::xmpp::xml::split $xml tag xmlns attrs cdata subels

    set subj ""
    set body ""

    foreach subel $subels {
        ::xmpp::xml::split $xml stag sxmlns sattrs scdata ssubels

        switch -- $stag {
            subject {set subj $scdata}
            body {set body $scdata}
        }
    }

    set data($xlib,$jid,welcome_subj) $subj
    set data($xlib,$jid,welcome_body) $body
    $wbody delete 0.0 end
    $wbody insert 0.0 $body
}
................................................................................

proc ejabberd::parse_registration_watchers {f xlib jid status xml} {
    variable data

    set wwatchers $f.info.vreg_watchers

    if {![winfo exists $wwatchers]} {
        return
    }

    if {![string equal $status ok]} {
        return
    }

    ::xmpp::xml::split $xml tag xmlns attrs cdata subels

    set jids {}

    foreach subel $subels {
        ::xmpp::xml::split $xml stag sxmlns sattrs scdata ssubels

        switch -- $tag1 {
            jid {lappend jids $scdata}
        }
    }

    set data($xlib,$jid,reg_watchers) $jids
    $wwatchers delete 0.0 end
    $wwatchers insert 0.0 [join $jids \n]
}

................................................................................
    variable data

    set info [frame $f.info]
    pack $info -side top -anchor w -fill both

    grid columnconfigure $info 1 -weight 2

    add_grid_text $xlib $jid $info acls         \
            [::msgcat::mc "ACLs:"]         0
    add_grid_text $xlib $jid $info access_rules \
            [::msgcat::mc "Access rules:"] 1


    #set set_b [button $f.set -text [::msgcat::mc "Set"]]
    #pack $set_b -side right -anchor se
    set reload \
        [button $f.reload -text [::msgcat::mc "Reload"] \
             -command [list [namespace current]::reload_page_access \
                            $f $xlib $jid]]
    pack $reload -side right -anchor se

    reload_page_access $f $xlib $jid
}

proc ejabberd::reload_page_access {f xlib jid} {
    variable NS_ECONFIGURE

    ::xmpp::sendIQ $xlib get \
        -query [::xmpp::xml::create acls \
                        -xmlns $NS_ECONFIGURE] \
        -to $jid \
        -command [list [namespace current]::parse_access acls $f $xlib $jid]

    ::xmpp::sendIQ $xlib get \
        -query [::xmpp::xml::create access \
                        -xmlns $NS_ECONFIGURE] \
        -to $jid \
        -command [list [namespace current]::parse_access access_rules \
                       $f $xlib $jid]
}

proc ejabberd::parse_access {var f xlib jid status xml} {
    variable data

    set w $f.info.v$var

    if {![winfo exists $w]} {
        return
    }

    if {![string equal $status ok]} {
        return
    }

    ::xmpp::xml::split $xml tag xmlns attrs cdata subels

    set data($xlib,$jid,$var) $cdata
    $w delete 0.0 end
    $w insert 0.0 $cdata
................................................................................
    variable data

    set info [frame $f.info]
    pack $info -side top -anchor w -fill both -expand yes

    #grid columnconfigure $info 1 -weight 2

    #add_grid_text $xlib $jid $info acls         \
    #       [::msgcat::mc "ACLs:"]         0
    #add_grid_text $xlib $jid $info access_rules \
    #       [::msgcat::mc "Access rules:"] 1

    label $info.lplot \
        -text [::msgcat::mc \
                   "Number of users that used this service N days ago:"]
    pack $info.lplot -side top -anchor w

    set sw [ScrolledWindow $info.sw]
    pack $sw -side top -fill both -expand yes
    set plot [canvas $info.plot -background white]
    $sw setwidget $plot

    set data($xlib,$jid,last) {}
    set data($xlib,$jid,last_int) 0

    set integral \
        [checkbutton $f.integral -text [::msgcat::mc "Integral"] \
             -variable [namespace current]::data($xlib,$jid,last_int) \
             -command [list [namespace current]::redraw_last $f $xlib $jid]]
    pack $integral -side left -anchor se

    set reload \
        [button $f.reload -text [::msgcat::mc "Reload"] \
             -command [list [namespace current]::reload_page_last \
                            $f $xlib $jid]]
    pack $reload -side right -anchor se
}

proc ejabberd::reload_page_last {f xlib jid} {
    variable NS_ECONFIGURE

    ::xmpp::sendIQ $xlib get \
        -query [::xmpp::xml::create last \
                        -xmlns $NS_ECONFIGURE] \
        -to $jid \
        -command [list [namespace current]::parse_last $f $xlib $jid]
}

proc ejabberd::parse_last {f xlib jid status xml} {
    variable data

    set plot $f.info.plot

    if {![winfo exists $plot]} {
        return
    }

    if {![string equal $status ok]} {
        return
    }

    ::xmpp::xml::split $xml tag xmlns attrs cdata subels

    set data($xlib,$jid,last) $cdata

    redraw_last $f $xlib $jid
................................................................................
    variable data

    set plot $f.info.plot

    set maxdays 0

    foreach t $data($xlib,$jid,last) {
        set days [expr {$t / (60*60*24)}]
        if {$days > $maxdays} {set maxdays $days}

        if {![info exists last($days)]} {
            set last($days) 0
        }
        incr last($days)
    }

    set xscale 20
    set yscale 200

    $plot delete all

    set val 0

    for {set i 0} {$i <= $maxdays} {incr i} {
        if {[info exists last($i)]} {
            set v $last($i)
        } else {
            set v 0
        }

        if {$data($xlib,$jid,last_int)} {
            incr val $v
        } else {
            set val $v
        }

        set x1 [expr {$xscale * $i}]
        set x2 [expr {$xscale * ($i+1)}]
        set x [expr {($x1 + $x2)/2}]
        set y [expr {-$yscale * $val}]

        $plot create rectangle $x1 0 $x2 $y -fill red

        $plot create text $x 0 -text $i -anchor n
        $plot create text $x $y -text $val -anchor s
    }

    set bbox [$plot bbox all]

    set y1 [lindex $bbox 1]
    set y2 [lindex $bbox 3]
    set height [winfo height $plot]

    $plot scale all 0 0 1 [expr {0.9 * $height / (0.0 + $y2 - $y1)}]
    $plot configure -scrollregion [$plot bbox all]
}

# vim:ft=tcl:ts=8:sw=4:sts=4:et

Changes to ejabberd/msgs/ca.msg.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18


# ca.msg --
#
#	Catalan messages for the Tkabber XMPP client (Ejabberd plugin).
#	http://www.softcatala.org/projectes/eines/recull/recull.htm
#	http://www.softcatala.org/projectes/eines/guiaestil/guiaestil.htm
#
# Author: Luis Peralta <peralta @ aditel . org>
# Revised by: Carles Bellver <bellverc @ cent . uji . es>

::msgcat::mcset ca "%s administration" "%s administració"
::msgcat::mcset ca "Administrate ejabberd" "Administrar ejabberd"
::msgcat::mcset ca "Administrate" "Administrar"
::msgcat::mcset ca "ejabberd server" "servidor ejabberd"
::msgcat::mcset ca "List of ejabberd servers." "Llista de servidors ejabberd."
::msgcat::mcset ca "Integral" "Integral"
::msgcat::mcset ca "Reload" "Recarregar"
::msgcat::mcset ca "Cancel" "Cancel·lar"
::msgcat::mcset ca "Configure service" "Configurar servei"




|
|
|













>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# ca.msg --
#
#       Catalan messages for the Tkabber XMPP client (Ejabberd plugin).
#       http://www.softcatala.org/projectes/eines/recull/recull.htm
#       http://www.softcatala.org/projectes/eines/guiaestil/guiaestil.htm
#
# Author: Luis Peralta <peralta @ aditel . org>
# Revised by: Carles Bellver <bellverc @ cent . uji . es>

::msgcat::mcset ca "%s administration" "%s administració"
::msgcat::mcset ca "Administrate ejabberd" "Administrar ejabberd"
::msgcat::mcset ca "Administrate" "Administrar"
::msgcat::mcset ca "ejabberd server" "servidor ejabberd"
::msgcat::mcset ca "List of ejabberd servers." "Llista de servidors ejabberd."
::msgcat::mcset ca "Integral" "Integral"
::msgcat::mcset ca "Reload" "Recarregar"
::msgcat::mcset ca "Cancel" "Cancel·lar"
::msgcat::mcset ca "Configure service" "Configurar servei"

# vim:ft=tcl:ts=8:sw=4:sts=4:et

Changes to ejabberd/msgs/de.msg.

1
2
3
4
5
6
7
8
9
10
..
18
19
20
21
22
23
24
25


26
27
28
29
30
31
32
33
34
35
36

37



# de.msg --
#
#	German messages for the Ejabberd Tkabber plugin.
#
# Author: Roger Sondermann
# Last-Modified: 13.03.2009

::msgcat::mcset de "%s administration"          "%s Administrierung"
::msgcat::mcset de "Access rules:"              "Zugriffs-Regeln:"
::msgcat::mcset de "Access"                     "Zugriff"
................................................................................
::msgcat::mcset de "ejabberd server"            "ejabberd-Server"
::msgcat::mcset de "Integral"                   "Integriert"
::msgcat::mcset de "Server JID:"                "Server-JID:"
::msgcat::mcset de "Last Activity"              "Letzte Aktivität"
::msgcat::mcset de "List of ejabberd servers."  "Liste von ejabberd-Servern."
::msgcat::mcset de "Main"                       "Allgemein"
::msgcat::mcset de "Nodes"                      "Knoten"
::msgcat::mcset de "Number of users that used this service N days ago:" "Anzahl der Benutzer, die diesen Service innerhalb der letzten N Tage genutzt haben:"


::msgcat::mcset de "Online users:"              "'Online'-Benutzer:"
::msgcat::mcset de "Outgoing S2S:"              "Ausgehende S2S:"
::msgcat::mcset de "Registered users:"          "Registrierte Benutzer:"
::msgcat::mcset de "Registration watchers:"     "Registrierungs-Beobachter:"
::msgcat::mcset de "Registration"               "Registrierung"
::msgcat::mcset de "Reload"                     "Neu laden"
::msgcat::mcset de "Running nodes:"             "Laufende Knoten:"
::msgcat::mcset de "Set"                        "Setzen"
::msgcat::mcset de "Stopped nodes:"             "Angehaltene Knoten:"
::msgcat::mcset de "Welcome message body:"      "Text der 'Willkommen'-Nachricht:"
::msgcat::mcset de "Welcome message subject:"   "Subjekt der 'Willkommen'-Nachricht:"

::msgcat::mcset de "Whether the Ejabberd plugin is loaded." "ejabberd-Plugin laden."





|







 







|
>
>









|
|
>
|
>
>
>
1
2
3
4
5
6
7
8
9
10
..
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
# de.msg --
#
#       German messages for the Ejabberd Tkabber plugin.
#
# Author: Roger Sondermann
# Last-Modified: 13.03.2009

::msgcat::mcset de "%s administration"          "%s Administrierung"
::msgcat::mcset de "Access rules:"              "Zugriffs-Regeln:"
::msgcat::mcset de "Access"                     "Zugriff"
................................................................................
::msgcat::mcset de "ejabberd server"            "ejabberd-Server"
::msgcat::mcset de "Integral"                   "Integriert"
::msgcat::mcset de "Server JID:"                "Server-JID:"
::msgcat::mcset de "Last Activity"              "Letzte Aktivität"
::msgcat::mcset de "List of ejabberd servers."  "Liste von ejabberd-Servern."
::msgcat::mcset de "Main"                       "Allgemein"
::msgcat::mcset de "Nodes"                      "Knoten"
::msgcat::mcset de "Number of users that used this service N days ago:" \
        "Anzahl der Benutzer, die diesen Service innerhalb der letzten N Tage\
        genutzt haben:"
::msgcat::mcset de "Online users:"              "'Online'-Benutzer:"
::msgcat::mcset de "Outgoing S2S:"              "Ausgehende S2S:"
::msgcat::mcset de "Registered users:"          "Registrierte Benutzer:"
::msgcat::mcset de "Registration watchers:"     "Registrierungs-Beobachter:"
::msgcat::mcset de "Registration"               "Registrierung"
::msgcat::mcset de "Reload"                     "Neu laden"
::msgcat::mcset de "Running nodes:"             "Laufende Knoten:"
::msgcat::mcset de "Set"                        "Setzen"
::msgcat::mcset de "Stopped nodes:"             "Angehaltene Knoten:"
::msgcat::mcset de "Welcome message body:" "Text der 'Willkommen'-Nachricht:"
::msgcat::mcset de "Welcome message subject:" \
        "Subjekt der 'Willkommen'-Nachricht:"
::msgcat::mcset de "Whether the Ejabberd plugin is loaded." \
        "ejabberd-Plugin laden."

# vim:ft=tcl:ts=8:sw=4:sts=4:et

Changes to ejabberd/msgs/es.msg.

1
2
3
4
5
6
7
8
9
10
..
15
16
17
18
19
20
21
22

23
24
25
26
27
28
29
30
31
32
33

34

35

36


# es.msg --
#
#	Spanish messages for the Ejabberd Tkabber plugin.
#
# Author: Badlop

::msgcat::mcset es "%s administration" "administración de %s"
::msgcat::mcset es "ACLs:" "ACLs:"
::msgcat::mcset es "Access rules:" "Reglas de acceso:"
::msgcat::mcset es "Access" "Accesi"
................................................................................
::msgcat::mcset es "Configure service" "Configurar servicio"
::msgcat::mcset es "Connection:" "Conexión:"
::msgcat::mcset es "Integral" "Integral"
::msgcat::mcset es "Last Activity" "Última Actividad"
::msgcat::mcset es "List of ejabberd servers." "Lista de servidores ejabberd."
::msgcat::mcset es "Main" "Principal"
::msgcat::mcset es "Nodes" "Nodos"
::msgcat::mcset es "Number of users that used this service N days ago:" "Número de usuarios que usaron este servidor hace N días:"

::msgcat::mcset es "Online users:" "Usuarios conectados:"
::msgcat::mcset es "Outgoing S2S:" "Conexiones S2S salientes:"
::msgcat::mcset es "Registered users:" "Usuarios registrados:"
::msgcat::mcset es "Registration watchers:" "Visores de registros:"
::msgcat::mcset es "Registration" "Regitro"
::msgcat::mcset es "Reload" "Recargar"
::msgcat::mcset es "Running nodes:" "Nodos funcionando:"
::msgcat::mcset es "Server JID:" "JID del servidor:"
::msgcat::mcset es "Set" "Poner"
::msgcat::mcset es "Stopped nodes:" "Nodos detenidos:"
::msgcat::mcset es "Welcome message body:" "Contenido del mensaje de bienvenida:"

::msgcat::mcset es "Welcome message subject:" "Asunto del mensaje de bienvenida:"

::msgcat::mcset es "Whether the Ejabberd plugin is loaded." "Cargar el plugin Ejabberd."

::msgcat::mcset es "ejabberd server" "servidor ejabberd"




|







 







|
>










|
>
|
>
|
>

>
>
1
2
3
4
5
6
7
8
9
10
..
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
# es.msg --
#
#       Spanish messages for the Ejabberd Tkabber plugin.
#
# Author: Badlop

::msgcat::mcset es "%s administration" "administración de %s"
::msgcat::mcset es "ACLs:" "ACLs:"
::msgcat::mcset es "Access rules:" "Reglas de acceso:"
::msgcat::mcset es "Access" "Accesi"
................................................................................
::msgcat::mcset es "Configure service" "Configurar servicio"
::msgcat::mcset es "Connection:" "Conexión:"
::msgcat::mcset es "Integral" "Integral"
::msgcat::mcset es "Last Activity" "Última Actividad"
::msgcat::mcset es "List of ejabberd servers." "Lista de servidores ejabberd."
::msgcat::mcset es "Main" "Principal"
::msgcat::mcset es "Nodes" "Nodos"
::msgcat::mcset es "Number of users that used this service N days ago:" \
        "Número de usuarios que usaron este servidor hace N días:"
::msgcat::mcset es "Online users:" "Usuarios conectados:"
::msgcat::mcset es "Outgoing S2S:" "Conexiones S2S salientes:"
::msgcat::mcset es "Registered users:" "Usuarios registrados:"
::msgcat::mcset es "Registration watchers:" "Visores de registros:"
::msgcat::mcset es "Registration" "Regitro"
::msgcat::mcset es "Reload" "Recargar"
::msgcat::mcset es "Running nodes:" "Nodos funcionando:"
::msgcat::mcset es "Server JID:" "JID del servidor:"
::msgcat::mcset es "Set" "Poner"
::msgcat::mcset es "Stopped nodes:" "Nodos detenidos:"
::msgcat::mcset es "Welcome message body:" \
        "Contenido del mensaje de bienvenida:"
::msgcat::mcset es "Welcome message subject:" \
        "Asunto del mensaje de bienvenida:"
::msgcat::mcset es "Whether the Ejabberd plugin is loaded." \
        "Cargar el plugin Ejabberd."
::msgcat::mcset es "ejabberd server" "servidor ejabberd"

# vim:ft=tcl:ts=8:sw=4:sts=4:et

Changes to ejabberd/msgs/fr.msg.

1
2
3
4
5
6
7


# fr.msg --
#
#	French messages for the Tkabber XMPP client.
#
# Author: Vincent Ricard <coding@magicninja.org>

::msgcat::mcset fr "Configure service" "Configurer les services"




|




>
>
1
2
3
4
5
6
7
8
9
# fr.msg --
#
#       French messages for the Tkabber XMPP client.
#
# Author: Vincent Ricard <coding@magicninja.org>

::msgcat::mcset fr "Configure service" "Configurer les services"

# vim:ft=tcl:ts=8:sw=4:sts=4:et

Changes to ejabberd/msgs/it.msg.

1
2
3
4
5
6
7
8


# it.msg --
#
#	Italian messages for the Tkabber XMPP client
#
# Author: Antonino Iacono
# Updated: Mikhail Zakharenko

::msgcat::mcset it "Configure service" "Configurazione"




|





>
>
1
2
3
4
5
6
7
8
9
10
# it.msg --
#
#       Italian messages for the Tkabber XMPP client
#
# Author: Antonino Iacono
# Updated: Mikhail Zakharenko

::msgcat::mcset it "Configure service" "Configurazione"

# vim:ft=tcl:ts=8:sw=4:sts=4:et

Changes to ejabberd/msgs/nl.msg.

1
2
3
4
5
6
7


# nl.msg --
#
#	Dutch messages for the Tkabber XMPP client.
#
# Author: Sander Devrieze <s (.) devrieze (A.T) pandora (. )be>

::msgcat::mcset nl "Configure service" "Dienst configureren"




|




>
>
1
2
3
4
5
6
7
8
9
# nl.msg --
#
#       Dutch messages for the Tkabber XMPP client.
#
# Author: Sander Devrieze <s (.) devrieze (A.T) pandora (. )be>

::msgcat::mcset nl "Configure service" "Dienst configureren"

# vim:ft=tcl:ts=8:sw=4:sts=4:et

Changes to ejabberd/msgs/pl.msg.

1
2
3
4
5
6
7
8
9

10

11
12
13
14
15
16
17
..
29
30
31
32
33
34
35
36

37


# pl.msg --
#
#	Polish messages for the Ejabberd Tkabber plugin.
#
# Author: Irek Chmielowiec <irek.ch@gmail.com>

::msgcat::mcset pl "List of ejabberd servers." "Lista serwerów ejabberd."
::msgcat::mcset pl "Administrate ejabberd" "Zarządzanie serwerem ejabberd"
::msgcat::mcset pl "Administrate ejabberd..." "Zarządzanie serwerem ejabberd..."

::msgcat::mcset pl "Number of users that used this service N days ago:" "Liczba osób korzystających z usługi N dni temu:"

::msgcat::mcset pl "ejabberd server" "Serwer ejabberd"
::msgcat::mcset pl "Administrate" "Zarządzaj"
::msgcat::mcset pl "%s administration" "Zarządzanie serwerem %s"
::msgcat::mcset pl "Reload" "Przeładuj"
::msgcat::mcset pl "Integral" "Razem"
::msgcat::mcset pl "Main" "Główny"
::msgcat::mcset pl "Nodes" "Węzły"
................................................................................
::msgcat::mcset pl "ACLs:" "ACL-e:"
::msgcat::mcset pl "Access rules:" "Reguły dostępu:"
::msgcat::mcset pl "JID:" "JID:"
::msgcat::mcset pl "Set" "Ustaw"
::msgcat::mcset pl "Cancel" "Anuluj"
::msgcat::mcset pl "Connection:" "Połączenie:"
::msgcat::mcset pl "Server JID:" "JID serwera:"
::msgcat::mcset pl "Whether the Ejabberd plugin is loaded." "Załaduj wtyczkę administracji serwerem Ejabberd"

::msgcat::mcset pl "Configure service" "Konfiguracja usługi"




|





|
>
|
>







 







|
>

>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
..
31
32
33
34
35
36
37
38
39
40
41
42
# pl.msg --
#
#       Polish messages for the Ejabberd Tkabber plugin.
#
# Author: Irek Chmielowiec <irek.ch@gmail.com>

::msgcat::mcset pl "List of ejabberd servers." "Lista serwerów ejabberd."
::msgcat::mcset pl "Administrate ejabberd" "Zarządzanie serwerem ejabberd"
::msgcat::mcset pl "Administrate ejabberd..." \
        "Zarządzanie serwerem ejabberd..."
::msgcat::mcset pl "Number of users that used this service N days ago:" \
        "Liczba osób korzystających z usługi N dni temu:"
::msgcat::mcset pl "ejabberd server" "Serwer ejabberd"
::msgcat::mcset pl "Administrate" "Zarządzaj"
::msgcat::mcset pl "%s administration" "Zarządzanie serwerem %s"
::msgcat::mcset pl "Reload" "Przeładuj"
::msgcat::mcset pl "Integral" "Razem"
::msgcat::mcset pl "Main" "Główny"
::msgcat::mcset pl "Nodes" "Węzły"
................................................................................
::msgcat::mcset pl "ACLs:" "ACL-e:"
::msgcat::mcset pl "Access rules:" "Reguły dostępu:"
::msgcat::mcset pl "JID:" "JID:"
::msgcat::mcset pl "Set" "Ustaw"
::msgcat::mcset pl "Cancel" "Anuluj"
::msgcat::mcset pl "Connection:" "Połączenie:"
::msgcat::mcset pl "Server JID:" "JID serwera:"
::msgcat::mcset pl "Whether the Ejabberd plugin is loaded." \
        "Załaduj wtyczkę administracji serwerem Ejabberd"
::msgcat::mcset pl "Configure service" "Konfiguracja usługi"

# vim:ft=tcl:ts=8:sw=4:sts=4:et

Changes to ejabberd/msgs/pt.msg.

1
2
3
4
5
6
7
8
9
10
11
12
13


# pt.msg --
#
#	Portuguese messages for the Ejabberd plugin for Tkabber XMPP client.
#
# Author: Miguel <maiguel @ netvisao . pt>

::msgcat::mcset pt "List of ejabberd servers." "Lista de servidores ejabberd."
::msgcat::mcset pt "Administrate ejabberd" "Administrar ejabberd"
::msgcat::mcset pt "ejabberd server" "servidor ejabberd"
::msgcat::mcset pt "Administrate" "Administrar"
::msgcat::mcset pt "%s administration" "Administração de %s"
::msgcat::mcset pt "Reload" "Recarregar"
::msgcat::mcset pt "Integral" "Integral"




|










>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# pt.msg --
#
#       Portuguese messages for the Ejabberd plugin for Tkabber XMPP client.
#
# Author: Miguel <maiguel @ netvisao . pt>

::msgcat::mcset pt "List of ejabberd servers." "Lista de servidores ejabberd."
::msgcat::mcset pt "Administrate ejabberd" "Administrar ejabberd"
::msgcat::mcset pt "ejabberd server" "servidor ejabberd"
::msgcat::mcset pt "Administrate" "Administrar"
::msgcat::mcset pt "%s administration" "Administração de %s"
::msgcat::mcset pt "Reload" "Recarregar"
::msgcat::mcset pt "Integral" "Integral"

# vim:ft=tcl:ts=8:sw=4:sts=4:et

Changes to ejabberd/msgs/ru.msg.

1
2
3
4
5
6
7
8
9
10
..
17
18
19
20
21
22
23

24
25
26
27
28
29
30
31
32
33
34
35
36
37

# ru.msg --
#
#	Russian messages for the Ejabberd Tkabber plugin.
#
# Author: Sergei Golovan <sgolovan@nes.ru>

::msgcat::mcset ru "%s administration" "Администрирование %s"
::msgcat::mcset ru "Access rules:" "Правила доступа:"
::msgcat::mcset ru "Access" "Доступ"
::msgcat::mcset ru "ACLs:" "Списки управления доступом:"
................................................................................
::msgcat::mcset ru "ejabberd server" "Сервер ejabberd"
::msgcat::mcset ru "Integral" "Интегральный"
::msgcat::mcset ru "Server JID:" "JID сервера:"
::msgcat::mcset ru "Last Activity" "Последнее подключение"
::msgcat::mcset ru "List of ejabberd servers." "Список серверов ejabberd."
::msgcat::mcset ru "Main" "Главная"
::msgcat::mcset ru "Nodes" "Узлы"

::msgcat::mcset ru "Number of users that used this service N days ago:" "Число пользователей, которые подключались к серверу N дней назад:"
::msgcat::mcset ru "Online users:" "Подключённые пользователи:"
::msgcat::mcset ru "Outgoing S2S:" "Исходящие S2S-соединения:"
::msgcat::mcset ru "Registered users:" "Зарегистрированные пользователи:"
::msgcat::mcset ru "Registration watchers:" "Наблюдатели за регистрацией:"
::msgcat::mcset ru "Registration" "Регистрация"
::msgcat::mcset ru "Reload" "Обновить"
::msgcat::mcset ru "Running nodes:" "Запущенные узлы:"
::msgcat::mcset ru "Set" "Установить"
::msgcat::mcset ru "Stopped nodes:" "Остановленные узлы:"
::msgcat::mcset ru "Welcome message body:" "Тело приветственного сообщения:"
::msgcat::mcset ru "Welcome message subject:" "Тема приветственного сообщения:"
::msgcat::mcset ru "Whether the Ejabberd plugin is loaded."\
	"Загружено ли расширение администрирования сервера ejabberd."



|







 







>
|












|
>
1
2
3
4
5
6
7
8
9
10
..
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# ru.msg --
#
#       Russian messages for the Ejabberd Tkabber plugin.
#
# Author: Sergei Golovan <sgolovan@nes.ru>

::msgcat::mcset ru "%s administration" "Администрирование %s"
::msgcat::mcset ru "Access rules:" "Правила доступа:"
::msgcat::mcset ru "Access" "Доступ"
::msgcat::mcset ru "ACLs:" "Списки управления доступом:"
................................................................................
::msgcat::mcset ru "ejabberd server" "Сервер ejabberd"
::msgcat::mcset ru "Integral" "Интегральный"
::msgcat::mcset ru "Server JID:" "JID сервера:"
::msgcat::mcset ru "Last Activity" "Последнее подключение"
::msgcat::mcset ru "List of ejabberd servers." "Список серверов ejabberd."
::msgcat::mcset ru "Main" "Главная"
::msgcat::mcset ru "Nodes" "Узлы"
::msgcat::mcset ru "Number of users that used this service N days ago:" \
        "Число пользователей, которые подключались к серверу N дней назад:"
::msgcat::mcset ru "Online users:" "Подключённые пользователи:"
::msgcat::mcset ru "Outgoing S2S:" "Исходящие S2S-соединения:"
::msgcat::mcset ru "Registered users:" "Зарегистрированные пользователи:"
::msgcat::mcset ru "Registration watchers:" "Наблюдатели за регистрацией:"
::msgcat::mcset ru "Registration" "Регистрация"
::msgcat::mcset ru "Reload" "Обновить"
::msgcat::mcset ru "Running nodes:" "Запущенные узлы:"
::msgcat::mcset ru "Set" "Установить"
::msgcat::mcset ru "Stopped nodes:" "Остановленные узлы:"
::msgcat::mcset ru "Welcome message body:" "Тело приветственного сообщения:"
::msgcat::mcset ru "Welcome message subject:" "Тема приветственного сообщения:"
::msgcat::mcset ru "Whether the Ejabberd plugin is loaded."\
        "Загружено ли расширение администрирования сервера ejabberd."
# vim:ft=tcl:ts=8:sw=4:sts=4:et

Changes to ejabberd/msgs/uk.msg.

1
2
3
4
5
6
7
8
9
10
..
17
18
19
20
21
22
23

24
25
26
27
28
29
30
31
32
33
34

35
36

# uk.msg --
#
#	Ukrainian messages for the Ejabberd Tkabber plugin.
#
# Author: Artem Bondarenko

::msgcat::mcset uk "%s administration" "адміністрування %s"
::msgcat::mcset uk "Access rules:" "Правила доступу:"
::msgcat::mcset uk "Access" "Доступ"
::msgcat::mcset uk "ACLs:" "ACLs:"
................................................................................
::msgcat::mcset uk "ejabberd server" "сервер ejabberd"
::msgcat::mcset uk "Integral" "Integral"
::msgcat::mcset uk "Server JID:" "JID сервера:"
::msgcat::mcset uk "Last Activity" "Остання активність"
::msgcat::mcset uk "List of ejabberd servers." "Список ejabberd серверів."
::msgcat::mcset uk "Main" "Головна"
::msgcat::mcset uk "Nodes" "Node"

::msgcat::mcset uk "Number of users that used this service N days ago:" "Кількість користувачів, які використовували цей сервіс N днів тому:"
::msgcat::mcset uk "Online users:" "Користувачі он-лайн:"
::msgcat::mcset uk "Outgoing S2S:" "Вихідні S2S з’єднання:"
::msgcat::mcset uk "Registered users:" "Зареєстровані користувачі:"
::msgcat::mcset uk "Registration watchers:" "Наглядачі реєстрацій:"
::msgcat::mcset uk "Registration" "Реєстрація"
::msgcat::mcset uk "Reload" "Оновити"
::msgcat::mcset uk "Running nodes:" "Запущені nodes:"
::msgcat::mcset uk "Set" "Встановити"
::msgcat::mcset uk "Stopped nodes:" "Зупинені nodes:"
::msgcat::mcset uk "Welcome message body:" "Повідомлення з привітанням:"

::msgcat::mcset uk "Welcome message subject:" "Тема повідомлення з привітанням:"




|







 







>
|










>
|

>
1
2
3
4
5
6
7
8
9
10
..
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# uk.msg --
#
#       Ukrainian messages for the Ejabberd Tkabber plugin.
#
# Author: Artem Bondarenko

::msgcat::mcset uk "%s administration" "адміністрування %s"
::msgcat::mcset uk "Access rules:" "Правила доступу:"
::msgcat::mcset uk "Access" "Доступ"
::msgcat::mcset uk "ACLs:" "ACLs:"
................................................................................
::msgcat::mcset uk "ejabberd server" "сервер ejabberd"
::msgcat::mcset uk "Integral" "Integral"
::msgcat::mcset uk "Server JID:" "JID сервера:"
::msgcat::mcset uk "Last Activity" "Остання активність"
::msgcat::mcset uk "List of ejabberd servers." "Список ejabberd серверів."
::msgcat::mcset uk "Main" "Головна"
::msgcat::mcset uk "Nodes" "Node"
::msgcat::mcset uk "Number of users that used this service N days ago:" \
        "Кількість користувачів, які використовували цей сервіс N днів тому:"
::msgcat::mcset uk "Online users:" "Користувачі он-лайн:"
::msgcat::mcset uk "Outgoing S2S:" "Вихідні S2S з’єднання:"
::msgcat::mcset uk "Registered users:" "Зареєстровані користувачі:"
::msgcat::mcset uk "Registration watchers:" "Наглядачі реєстрацій:"
::msgcat::mcset uk "Registration" "Реєстрація"
::msgcat::mcset uk "Reload" "Оновити"
::msgcat::mcset uk "Running nodes:" "Запущені nodes:"
::msgcat::mcset uk "Set" "Встановити"
::msgcat::mcset uk "Stopped nodes:" "Зупинені nodes:"
::msgcat::mcset uk "Welcome message body:" "Повідомлення з привітанням:"
::msgcat::mcset uk "Welcome message subject:" \
        "Тема повідомлення з привітанням:"

# vim:ft=tcl:ts=8:sw=4:sts=4:et