Compare commits

...

199 Commits

Author SHA1 Message Date
dcd5ecebfa 1.6.5 released 2013-07-24 17:23:48 +04:00
32b9ba862b Update db and features versions 2013-07-24 15:50:00 +04:00
eb65ec9329 Update translations (da, de, fi, it, pt-br) 2013-07-24 15:49:22 +04:00
d6c18a5ef7 Update javascripts: version changed to 1.6.5 2013-07-24 01:47:07 +04:00
3ea9c6c893 Update copyright notice 2013-07-24 01:20:36 +04:00
4cd7bab1be Improve packaging script 2013-07-24 00:42:43 +04:00
95d95daa34 Update localization constants 2013-07-24 00:42:23 +04:00
Dmitriy Simushev
b5d05f5411 Update license info in license.php 2013-07-24 00:08:46 +04:00
Evgeny Gryaznov
13ca97f10d update headers 2013-03-06 22:56:55 +01:00
Evgeny Gryaznov
4f483abe26 Merge branch 'v1.6.x' 2013-03-06 22:52:38 +01:00
Evgeny Gryaznov
2400cd2588 Merge branch 'v1.6.x' 2012-03-12 01:27:47 +01:00
Evgeny Gryaznov
035479f7a2 Merge branch v1.6.x into master 2012-03-12 01:05:44 +01:00
Evgeny Gryaznov
b969bf7717 phpstorm 3.0.3 config files 2012-03-12 00:20:15 +01:00
Evgeny Gryaznov
463ff10744 update Persian (by Amir Khani) 2012-03-12 00:19:36 +01:00
Evgeny Gryaznov
2b3b897545 update Hungarian (by Istvan Somlai) 2012-03-12 00:19:28 +01:00
Evgeny Gryaznov
875bccb9d0 update Simplified Chinese (by Xiaoyu) 2012-03-12 00:19:20 +01:00
Evgeny Gryaznov
d753a68a9e update Spanish (by Jesus Plaza) 2012-03-12 00:19:12 +01:00
Evgeny Gryaznov
ae2d6e95bb update Portuguese European, pt-pt (by Carlos Silva) 2012-03-12 00:19:01 +01:00
Evgeny Gryaznov
15c1127cb7 update Indonesian (by Adi Nugroho), without images though 2012-03-12 00:18:53 +01:00
Evgeny Gryaznov
dbd2a058e2 update Italian (Luca Sasdelli) 2012-03-12 00:18:45 +01:00
Evgeny Gryaznov
9df971df14 update English (by Olimax) 2012-03-12 00:18:27 +01:00
Evgeny Gryaznov
34765f7180 update Belarusian (by Berasneu) 2012-03-12 00:16:21 +01:00
Evgeny Gryaznov
cb373fb7f2 update pl (by WebTower), hu, fr 2012-03-12 00:16:15 +01:00
Evgeny Gryaznov
701c8e2251 fix encoding in operators list 2012-03-12 00:16:00 +01:00
a749909f90 Fix check of existance of tables indexes during database upgrade process 2012-03-12 00:15:49 +01:00
6a867b4a92 Create indexes for database tables during installation process 2012-03-12 00:15:39 +01:00
Evgeny Gryaznov
d02b113f93 redirect to profile page after first login; informational banner when password is blank; do not enforce password change; rename Home -> Dashboard 2011-04-15 01:38:43 +02:00
Haynes
aee46f9e2a This commit forces the User to set a password for the Administrator before doing anything else after the installation. 2011-04-14 23:52:33 +02:00
Evgeny Gryaznov
c053bfe283 removed .iml; modern tabs on group settings pages; beautifying code 2011-04-07 00:52:03 +02:00
Evgeny Gryaznov
7ff174aa86 silver skin by Alekin Pavel (update) 2011-04-06 23:44:28 +02:00
Evgeny Gryaznov
ff141e42f2 silver skin by Alekin Pavel (initial commit) 2011-04-06 23:44:19 +02:00
Evgeny Gryaznov
1700b128b0 fix theme preview; fix bottom anchor in chat.js 2011-04-06 23:43:50 +02:00
Evgeny Gryaznov
2261c1cfbe fix TYPE -> ENGINE (mysql 5.5 compatibility) 2011-04-06 23:42:59 +02:00
Evgeny Gryaznov
a68b9e6e9c 1.6.4 released 2011-04-06 23:42:28 +02:00
Evgeny Gryaznov
02c43a147d 1.6.4 RC2 2011-04-06 23:42:08 +02:00
Evgeny Gryaznov
483bc80180 1.6.4 RC1 2011-04-06 23:41:57 +02:00
Evgeny Gryaznov
71f9b1fa6a update whatsnew 2011-04-06 23:41:47 +02:00
Evgeny Gryaznov
81c84f3702 better installation messages; ignore \r in checksum 2011-04-06 23:41:15 +02:00
Evgeny Gryaznov
ab922fd519 fix cr in .htaccess; disable drop tables; do not show change password/delete install folder if admin has password; check file permissions/checksum 2011-04-06 23:40:06 +02:00
Evgeny Gryaznov
4257b6f87b fix sound issues in windows 2011-04-06 23:36:15 +02:00
Evgeny Gryaznov
049def144e update whatsnew, recompute resources 2011-04-06 23:34:34 +02:00
Evgeny Gryaznov
acc86b9221 ability to override notification email for group 2011-04-06 23:32:29 +02:00
Evgeny Gryaznov
3715d2207e fix: do not cache button image (thanks to Alex Morozov) 2011-04-06 23:32:13 +02:00
Evgeny Gryaznov
5595bd0f6e install page: links to check the sound 2011-04-06 23:31:39 +02:00
Evgeny Gryaznov
2a5943c058 update release script 2011-04-06 23:21:57 +02:00
Evgeny Gryaznov
9d9cbf7e81 code cleanup 2011-04-06 23:21:36 +02:00
Evgeny Gryaznov
3d368c6783 fix session using for installations with prefix 2011-02-27 00:11:08 +01:00
Evgeny Gryaznov
9cc2833364 fix tr/fr locale 2011-02-27 00:04:59 +01:00
Evgeny Gryaznov
f4e99a3d52 fix minor issues (link param, formatting) 2011-02-26 23:54:58 +01:00
Evgeny Gryaznov
03dec2afb2 format code 2011-02-26 23:48:41 +01:00
Evgeny Gryaznov
2bcffd5f4a replace " . $mysqlprefix . " -> ${mysqlprefix} 2011-02-26 14:29:11 +01:00
Evgeny Gryaznov
84bd011a11 ka images, part 2 2011-02-25 01:00:03 +01:00
Evgeny Gryaznov
74bc8de4fb update ka images 2011-02-25 00:45:40 +01:00
Evgeny Gryaznov
893d455a32 Georgian locale (by George Zviadadze) 2011-02-24 22:15:55 +01:00
Evgeny Gryaznov
d61a9d30f7 disable feature checkboxes for non-admin 2011-02-22 00:16:31 +01:00
Evgeny Gryaznov
d308977a00 Ignore packaged releases/output of check_translation (proposed by Peter Harkins); fix formatting in php 2011-02-21 23:59:46 +01:00
Peter Harkins
8a39697351 Check admin permissions 2011-02-21 23:47:59 +01:00
Evgeny Gryaznov
c48cf51e58 fix captcha 2011-02-21 01:08:47 +01:00
Evgeny Gryaznov
acfd461617 fix XSS problem in leavemessage 2011-02-21 01:07:35 +01:00
Evgeny Gryaznov
0829a0bd2b ignore .DS_Store 2011-02-21 00:12:23 +01:00
Evgeny Gryaznov
36283f4f87 add el, update fa 2011-02-21 00:10:05 +01:00
Evgeny Gryaznov
735225dea8 update page: show iconv module status 2011-02-21 00:09:55 +01:00
Evgeny Gryaznov
dd92249a0a update ar, cs, da, fa, fi, it, ka, ru 2011-02-21 00:09:46 +01:00
Evgeny Gryaznov
7f290fd2b2 turn off spelling intention 2011-02-20 23:11:36 +01:00
Evgeny Gryaznov
a58c7774a0 swt-base notifier application; update java api 2011-02-20 23:05:47 +01:00
Evgeny Gryaznov
de5717e2f2 swt libraries 3.6.1 - cocoa 64; IC 10.0.2 project 2011-02-17 00:28:30 +01:00
Evgeny Gryaznov
d0db10ae6e remove old idea project 2011-02-17 00:23:35 +01:00
Evgeny Gryaznov
374e3307d9 phpstorm files 2011-02-16 03:32:24 +01:00
Evgeny Gryaznov
7418e57075 update copyrights - 2011 2011-02-14 22:48:14 +01:00
Evgeny Gryaznov
32d64d8600 update version to 1.6.4 2011-02-13 23:29:47 +01:00
Evgeny Gryaznov
f65b49d49b fix eol in readme.txt 2011-02-13 23:22:24 +01:00
Evgeny Gryaznov
b34f1727c0 idea project files + gitignore 2011-02-13 23:22:13 +01:00
Evgeny Gryaznov
bd97e06dab remove site 2011-02-13 23:12:38 +01:00
Evgeny Gryaznov
21d0e5ada6 added README 2010-11-07 22:17:06 +01:00
Evgeny Gryaznov
419f161723 fix eol in repository 2010-11-07 22:04:53 +01:00
Evgeny Gryaznov
47ba545e4c update .gitattributes 2010-11-07 22:04:14 +01:00
Evgeny Gryaznov
2d77bc03f6 fix eol in repository 2010-11-07 22:02:41 +01:00
Evgeny Gryaznov
e43c517b49 .gitattributes added 2010-11-07 21:55:38 +01:00
Evgeny Gryaznov
1388151bf8 small fix in /libs/operator.php, a few missed db usages, formatting 2010-11-07 15:12:40 +01:00
novagen
7cc810c683 Fixed a problem with multiple installations on the same domain.
When a user logged in on one chat, they also got logged in to all the other chats.
2010-10-29 11:44:17 +02:00
novagen
e304901bd0 Fixed bug in /libs/operator.php 2010-10-26 12:21:55 +02:00
novagen
d70bfbcce0 Fixed a bug in function db_build_select 2010-10-26 10:23:04 +02:00
novagen
a0a9a7f708 Added support for multiple installations in one database. User can add a prefix to the tables in the database. This is set in the variable $mysqlprefix in /libs/config.php 2010-10-26 09:53:44 +02:00
Evgeny Gryaznov
43e69a0e3a sort tr, prepare to release
git-svn-id: https://webim.svn.sourceforge.net/svnroot/webim/trunk@810 c66351dc-e62f-0410-b875-e3a5c0b9693f
2010-05-07 22:59:16 +00:00
Evgeny Gryaznov
83e861cf9b turkish by Serkan Durusoy
git-svn-id: https://webim.svn.sourceforge.net/svnroot/webim/trunk@809 c66351dc-e62f-0410-b875-e3a5c0b9693f
2010-05-07 22:54:34 +00:00
Evgeny Gryaznov
3d42b81053 image sources: fix tr dataset
git-svn-id: https://webim.svn.sourceforge.net/svnroot/webim/trunk@808 c66351dc-e62f-0410-b875-e3a5c0b9693f
2010-05-07 22:47:24 +00:00
Evgeny Gryaznov
4eb81a1fd7 update tr images (by Serkan Durusoy)
git-svn-id: https://webim.svn.sourceforge.net/svnroot/webim/trunk@807 c66351dc-e62f-0410-b875-e3a5c0b9693f
2010-05-07 22:45:34 +00:00
Evgeny Gryaznov
4bd0b9dd37 tr: regenerate buttons
git-svn-id: https://webim.svn.sourceforge.net/svnroot/webim/trunk@806 c66351dc-e62f-0410-b875-e3a5c0b9693f
2010-05-07 22:40:47 +00:00
Evgeny Gryaznov
ffbd9397ab installation: proper name of folder to remove, fix locales
git-svn-id: https://webim.svn.sourceforge.net/svnroot/webim/trunk@805 c66351dc-e62f-0410-b875-e3a5c0b9693f
2010-05-02 18:31:45 +00:00
Evgeny Gryaznov
47b4a82da2 check webimroot variable during installation
git-svn-id: https://webim.svn.sourceforge.net/svnroot/webim/trunk@804 c66351dc-e62f-0410-b875-e3a5c0b9693f
2010-05-02 18:20:55 +00:00
Evgeny Gryaznov
a0d3403cb5 generate Text button started
git-svn-id: https://webim.svn.sourceforge.net/svnroot/webim/trunk@803 c66351dc-e62f-0410-b875-e3a5c0b9693f
2010-05-02 17:44:38 +00:00
Evgeny Gryaznov
f069d8d9b6 update whatsnew
git-svn-id: https://webim.svn.sourceforge.net/svnroot/webim/trunk@802 c66351dc-e62f-0410-b875-e3a5c0b9693f
2010-05-02 12:56:57 +00:00
Evgeny Gryaznov
b1e2624702 fix captcha
git-svn-id: https://webim.svn.sourceforge.net/svnroot/webim/trunk@801 c66351dc-e62f-0410-b875-e3a5c0b9693f
2010-05-02 12:35:24 +00:00
Evgeny Gryaznov
a99a621a66 getcode refactoring started: rename view file, move generate_button method
git-svn-id: https://webim.svn.sourceforge.net/svnroot/webim/trunk@800 c66351dc-e62f-0410-b875-e3a5c0b9693f
2010-05-02 12:28:16 +00:00
Evgeny Gryaznov
64f27e8805 create button.php (for compatibility)
git-svn-id: https://webim.svn.sourceforge.net/svnroot/webim/trunk@799 c66351dc-e62f-0410-b875-e3a5c0b9693f
2010-05-02 12:15:46 +00:00
Evgeny Gryaznov
d916b10276 rename button.php -> b.php
git-svn-id: https://webim.svn.sourceforge.net/svnroot/webim/trunk@798 c66351dc-e62f-0410-b875-e3a5c0b9693f
2010-05-02 12:12:56 +00:00
Evgeny Gryaznov
e5833dcc75 update release script
git-svn-id: https://webim.svn.sourceforge.net/svnroot/webim/trunk@797 c66351dc-e62f-0410-b875-e3a5c0b9693f
2010-05-02 12:04:11 +00:00
Evgeny Gryaznov
5459b5ff4b add download links for: bg, ca, hu, ro, sv
git-svn-id: https://webim.svn.sourceforge.net/svnroot/webim/trunk@796 c66351dc-e62f-0410-b875-e3a5c0b9693f
2010-05-01 23:11:04 +00:00
Evgeny Gryaznov
4087a5f9bc eol-style = LF
git-svn-id: https://webim.svn.sourceforge.net/svnroot/webim/trunk@795 c66351dc-e62f-0410-b875-e3a5c0b9693f
2010-05-01 22:58:53 +00:00
Evgeny Gryaznov
8ff4c21993 small properties fixes, remove odd images
git-svn-id: https://webim.svn.sourceforge.net/svnroot/webim/trunk@794 c66351dc-e62f-0410-b875-e3a5c0b9693f
2010-05-01 22:12:07 +00:00
Evgeny Gryaznov
1d69ead8f2 update locales (from the site)
git-svn-id: https://webim.svn.sourceforge.net/svnroot/webim/trunk@793 c66351dc-e62f-0410-b875-e3a5c0b9693f
2010-05-01 21:50:43 +00:00
Evgeny Gryaznov
024fc33d78 update locales/hu/button/*
git-svn-id: https://webim.svn.sourceforge.net/svnroot/webim/trunk@792 c66351dc-e62f-0410-b875-e3a5c0b9693f
2010-05-01 21:46:34 +00:00
Evgeny Gryaznov
fd24c49f5b add hu dataset
git-svn-id: https://webim.svn.sourceforge.net/svnroot/webim/trunk@791 c66351dc-e62f-0410-b875-e3a5c0b9693f
2010-05-01 21:40:46 +00:00
Evgeny Gryaznov
a9b87cf5e7 update locales/hu/images/*
git-svn-id: https://webim.svn.sourceforge.net/svnroot/webim/trunk@790 c66351dc-e62f-0410-b875-e3a5c0b9693f
2010-05-01 21:35:12 +00:00
Evgeny Gryaznov
d69f6463b4 localize locales/ro/images/*
git-svn-id: https://webim.svn.sourceforge.net/svnroot/webim/trunk@789 c66351dc-e62f-0410-b875-e3a5c0b9693f
2010-05-01 21:00:29 +00:00
Evgeny Gryaznov
b1113fcbe1 ro buttons
git-svn-id: https://webim.svn.sourceforge.net/svnroot/webim/trunk@788 c66351dc-e62f-0410-b875-e3a5c0b9693f
2010-04-30 22:13:14 +00:00
Evgeny Gryaznov
03dc8d7bbf ro dataset
git-svn-id: https://webim.svn.sourceforge.net/svnroot/webim/trunk@787 c66351dc-e62f-0410-b875-e3a5c0b9693f
2010-04-30 22:09:30 +00:00
Evgeny Gryaznov
03f4b241b3 update sv/button/*
git-svn-id: https://webim.svn.sourceforge.net/svnroot/webim/trunk@786 c66351dc-e62f-0410-b875-e3a5c0b9693f
2010-04-30 22:03:16 +00:00
Evgeny Gryaznov
755078d223 sv datasets
git-svn-id: https://webim.svn.sourceforge.net/svnroot/webim/trunk@785 c66351dc-e62f-0410-b875-e3a5c0b9693f
2010-04-30 22:01:06 +00:00
Evgeny Gryaznov
af1d15c401 add sv dataset
git-svn-id: https://webim.svn.sourceforge.net/svnroot/webim/trunk@784 c66351dc-e62f-0410-b875-e3a5c0b9693f
2010-04-30 21:40:24 +00:00
Evgeny Gryaznov
d9f8b2366e update sv/images/*
git-svn-id: https://webim.svn.sourceforge.net/svnroot/webim/trunk@783 c66351dc-e62f-0410-b875-e3a5c0b9693f
2010-04-30 21:33:20 +00:00
Evgeny Gryaznov
2c0ebbe7c9 update ca images
git-svn-id: https://webim.svn.sourceforge.net/svnroot/webim/trunk@782 c66351dc-e62f-0410-b875-e3a5c0b9693f
2010-04-27 22:34:12 +00:00
Evgeny Gryaznov
3e617ff62e add bg & ca
git-svn-id: https://webim.svn.sourceforge.net/svnroot/webim/trunk@781 c66351dc-e62f-0410-b875-e3a5c0b9693f
2010-04-27 22:13:52 +00:00
Evgeny Gryaznov
ad270cf968 update bg buttons
git-svn-id: https://webim.svn.sourceforge.net/svnroot/webim/trunk@780 c66351dc-e62f-0410-b875-e3a5c0b9693f
2010-04-27 21:56:11 +00:00
Evgeny Gryaznov
d97b7c45c6 regenerate images; remove simple button for bg
git-svn-id: https://webim.svn.sourceforge.net/svnroot/webim/trunk@779 c66351dc-e62f-0410-b875-e3a5c0b9693f
2010-04-27 21:35:00 +00:00
Evgeny Gryaznov
465172329b proper links
git-svn-id: https://webim.svn.sourceforge.net/svnroot/webim/trunk@778 c66351dc-e62f-0410-b875-e3a5c0b9693f
2010-04-26 21:31:47 +00:00
Evgeny Gryaznov
68ec93abf6 update contacts
git-svn-id: https://webim.svn.sourceforge.net/svnroot/webim/trunk@777 c66351dc-e62f-0410-b875-e3a5c0b9693f
2010-04-26 21:03:57 +00:00
Evgeny Gryaznov
4cd3cd3e47 proper links
git-svn-id: https://webim.svn.sourceforge.net/svnroot/webim/trunk@776 c66351dc-e62f-0410-b875-e3a5c0b9693f
2010-04-26 20:58:55 +00:00
Evgeny Gryaznov
07b1d1310b revert ua, until we have it translated
git-svn-id: https://webim.svn.sourceforge.net/svnroot/webim/trunk@775 c66351dc-e62f-0410-b875-e3a5c0b9693f
2010-04-26 20:40:50 +00:00
Evgeny Gryaznov
836ffcc62a link to article
git-svn-id: https://webim.svn.sourceforge.net/svnroot/webim/trunk@774 c66351dc-e62f-0410-b875-e3a5c0b9693f
2010-04-26 20:39:41 +00:00
Evgeny Gryaznov
d749e58621 update credits page
git-svn-id: https://webim.svn.sourceforge.net/svnroot/webim/trunk@773 c66351dc-e62f-0410-b875-e3a5c0b9693f
2010-04-26 20:35:05 +00:00
Evgeny Gryaznov
e2b5238b78 update credits page
git-svn-id: https://webim.svn.sourceforge.net/svnroot/webim/trunk@772 c66351dc-e62f-0410-b875-e3a5c0b9693f
2010-04-26 20:29:36 +00:00
Evgeny Gryaznov
b77ee7efb0 add nl/fr
git-svn-id: https://webim.svn.sourceforge.net/svnroot/webim/trunk@771 c66351dc-e62f-0410-b875-e3a5c0b9693f
2010-04-25 23:46:45 +00:00
Evgeny Gryaznov
fd597941ee update ru (site localization, sorted)
git-svn-id: https://webim.svn.sourceforge.net/svnroot/webim/trunk@770 c66351dc-e62f-0410-b875-e3a5c0b9693f
2010-04-25 23:37:45 +00:00
Evgeny Gryaznov
cecdbacf8a update sp (site localization, sorted)
git-svn-id: https://webim.svn.sourceforge.net/svnroot/webim/trunk@769 c66351dc-e62f-0410-b875-e3a5c0b9693f
2010-04-25 23:36:53 +00:00
Evgeny Gryaznov
4524bafd0a add missing locales in packing script
git-svn-id: https://webim.svn.sourceforge.net/svnroot/webim/trunk@768 c66351dc-e62f-0410-b875-e3a5c0b9693f
2010-04-25 23:32:38 +00:00
Evgeny Gryaznov
3903449edc apply patch by Andrew Armstrong: available operators list (revised); remove odd eval code in common.js
git-svn-id: https://webim.svn.sourceforge.net/svnroot/webim/trunk@767 c66351dc-e62f-0410-b875-e3a5c0b9693f
2010-04-25 23:28:05 +00:00
Evgeny Gryaznov
59e5325785 replace preview.php -> themes.php in properties, add Catalan lang
git-svn-id: https://webim.svn.sourceforge.net/svnroot/webim/trunk@766 c66351dc-e62f-0410-b875-e3a5c0b9693f
2010-04-23 00:21:37 +00:00
Evgeny Gryaznov
f82f10ee71 punctuation in Catalan
git-svn-id: https://webim.svn.sourceforge.net/svnroot/webim/trunk@765 c66351dc-e62f-0410-b875-e3a5c0b9693f
2010-04-23 00:19:25 +00:00
Evgeny Gryaznov
af3ebb058e sort and fix punctuation
git-svn-id: https://webim.svn.sourceforge.net/svnroot/webim/trunk@764 c66351dc-e62f-0410-b875-e3a5c0b9693f
2010-04-22 23:48:18 +00:00
Evgeny Gryaznov
3e5f3c254c sort locales
git-svn-id: https://webim.svn.sourceforge.net/svnroot/webim/trunk@763 c66351dc-e62f-0410-b875-e3a5c0b9693f
2010-04-22 23:15:18 +00:00
Evgeny Gryaznov
fb7bddebdc update Latvian
git-svn-id: https://webim.svn.sourceforge.net/svnroot/webim/trunk@762 c66351dc-e62f-0410-b875-e3a5c0b9693f
2010-04-22 23:10:23 +00:00
Evgeny Gryaznov
eb71d62ffd update Persian
git-svn-id: https://webim.svn.sourceforge.net/svnroot/webim/trunk@761 c66351dc-e62f-0410-b875-e3a5c0b9693f
2010-04-22 23:05:50 +00:00
Evgeny Gryaznov
79d789f98d Bulgarian by Teodor Todorov
git-svn-id: https://webim.svn.sourceforge.net/svnroot/webim/trunk@760 c66351dc-e62f-0410-b875-e3a5c0b9693f
2010-04-21 22:07:49 +00:00
Evgeny Gryaznov
10dcf26128 Bulgarian by Teodor Todorov
git-svn-id: https://webim.svn.sourceforge.net/svnroot/webim/trunk@759 c66351dc-e62f-0410-b875-e3a5c0b9693f
2010-04-21 21:07:55 +00:00
Ed Kraus
3994000200 Initial import.
git-svn-id: https://webim.svn.sourceforge.net/svnroot/webim/trunk@758 c66351dc-e62f-0410-b875-e3a5c0b9693f
2010-04-21 02:12:37 +00:00
Ed Kraus
828e59d53f Discontinuing ticket support, linked "Support" to our contact page.
git-svn-id: https://webim.svn.sourceforge.net/svnroot/webim/trunk@757 c66351dc-e62f-0410-b875-e3a5c0b9693f
2010-04-01 02:08:48 +00:00
Evgeny Gryaznov
63a083804c initial ca by Enric Garcia Barrios
git-svn-id: https://webim.svn.sourceforge.net/svnroot/webim/trunk@756 c66351dc-e62f-0410-b875-e3a5c0b9693f
2010-03-16 21:13:16 +00:00
Evgeny Gryaznov
ade7d13151 initial sv by Sverok - Oliver Sundström, Nina Högberg, Andreas Brodin and David Stenström
git-svn-id: https://webim.svn.sourceforge.net/svnroot/webim/trunk@755 c66351dc-e62f-0410-b875-e3a5c0b9693f
2010-03-16 21:09:53 +00:00
Evgeny Gryaznov
cee36b75fc update packing script
git-svn-id: https://webim.svn.sourceforge.net/svnroot/webim/trunk@754 c66351dc-e62f-0410-b875-e3a5c0b9693f
2010-03-11 21:37:34 +00:00
Evgeny Gryaznov
a2b897f91e cs & fi created
git-svn-id: https://webim.svn.sourceforge.net/svnroot/webim/trunk@751 c66351dc-e62f-0410-b875-e3a5c0b9693f
2010-03-03 22:02:37 +00:00
Evgeny Gryaznov
904d5588e7 copyright text in generated .js
git-svn-id: https://webim.svn.sourceforge.net/svnroot/webim/trunk@750 c66351dc-e62f-0410-b875-e3a5c0b9693f
2010-02-27 16:06:25 +00:00
Evgeny Gryaznov
1f6946ec44 google closure compiler updated: better compression
git-svn-id: https://webim.svn.sourceforge.net/svnroot/webim/trunk@749 c66351dc-e62f-0410-b875-e3a5c0b9693f
2010-02-27 14:44:41 +00:00
Evgeny Gryaznov
5b743ecdec use google closure compiler
git-svn-id: https://webim.svn.sourceforge.net/svnroot/webim/trunk@748 c66351dc-e62f-0410-b875-e3a5c0b9693f
2010-02-27 14:38:02 +00:00
Evgeny Gryaznov
491676f37e extract get_operator_groupslist (fix for Java API)
git-svn-id: https://webim.svn.sourceforge.net/svnroot/webim/trunk@747 c66351dc-e62f-0410-b875-e3a5c0b9693f
2010-02-27 14:33:59 +00:00
Evgeny Gryaznov
190f7914f4 jquery 1.3.2 -> 1.4.2
git-svn-id: https://webim.svn.sourceforge.net/svnroot/webim/trunk@746 c66351dc-e62f-0410-b875-e3a5c0b9693f
2010-02-27 14:24:41 +00:00
Evgeny Gryaznov
91683c4de0 add ua, update ru/en
git-svn-id: https://webim.svn.sourceforge.net/svnroot/webim/trunk@745 c66351dc-e62f-0410-b875-e3a5c0b9693f
2010-02-24 00:08:20 +00:00
Evgeny Gryaznov
f8571cfa67 minor: da, tr
git-svn-id: https://webim.svn.sourceforge.net/svnroot/webim/trunk@744 c66351dc-e62f-0410-b875-e3a5c0b9693f
2010-02-23 23:02:14 +00:00
Evgeny Gryaznov
c2c0953aff update ar, ro by Tallal Suliman Eshaq
git-svn-id: https://webim.svn.sourceforge.net/svnroot/webim/trunk@743 c66351dc-e62f-0410-b875-e3a5c0b9693f
2010-02-23 23:00:21 +00:00
Evgeny Gryaznov
86bfe87956 add persian
git-svn-id: https://webim.svn.sourceforge.net/svnroot/webim/trunk@742 c66351dc-e62f-0410-b875-e3a5c0b9693f
2010-02-23 22:51:51 +00:00
Evgeny Gryaznov
3cdfd8fd3c Thai/Dutch
git-svn-id: https://webim.svn.sourceforge.net/svnroot/webim/trunk@741 c66351dc-e62f-0410-b875-e3a5c0b9693f
2010-02-18 22:00:16 +00:00
Evgeny Gryaznov
c1abc7376e locales tool on the top
git-svn-id: https://webim.svn.sourceforge.net/svnroot/webim/trunk@740 c66351dc-e62f-0410-b875-e3a5c0b9693f
2010-02-18 21:54:52 +00:00
Evgeny Gryaznov
95701358da sort messages, add thai language, fix nl
git-svn-id: https://webim.svn.sourceforge.net/svnroot/webim/trunk@739 c66351dc-e62f-0410-b875-e3a5c0b9693f
2010-02-17 08:36:32 +00:00
Evgeny Gryaznov
2acc073581 thai by Bongkoch P.
git-svn-id: https://webim.svn.sourceforge.net/svnroot/webim/trunk@738 c66351dc-e62f-0410-b875-e3a5c0b9693f
2010-02-17 08:29:50 +00:00
Evgeny Gryaznov
85734d07a5 dutch update from elegantchaos
git-svn-id: https://webim.svn.sourceforge.net/svnroot/webim/trunk@737 c66351dc-e62f-0410-b875-e3a5c0b9693f
2010-02-17 08:24:28 +00:00
Evgeny Gryaznov
79d901847f minor improvements: site properties
git-svn-id: https://webim.svn.sourceforge.net/svnroot/webim/trunk@736 c66351dc-e62f-0410-b875-e3a5c0b9693f
2010-01-28 22:43:27 +00:00
Evgeny Gryaznov
923b9c944a pad file 1.6.3, newlocale.zip
git-svn-id: https://webim.svn.sourceforge.net/svnroot/webim/trunk@735 c66351dc-e62f-0410-b875-e3a5c0b9693f
2010-01-28 22:40:57 +00:00
Evgeny Gryaznov
01217e6b7d Notification application (without options dialog)
git-svn-id: https://webim.svn.sourceforge.net/svnroot/webim/trunk@734 c66351dc-e62f-0410-b875-e3a5c0b9693f
2010-01-23 10:35:54 +00:00
Evgeny Gryaznov
ecb7d3643f menu with visitors list, info
git-svn-id: https://webim.svn.sourceforge.net/svnroot/webim/trunk@733 c66351dc-e62f-0410-b875-e3a5c0b9693f
2010-01-17 21:32:18 +00:00
Evgeny Gryaznov
e453ed2757 add MibewAgent, offline/online icon
git-svn-id: https://webim.svn.sourceforge.net/svnroot/webim/trunk@732 c66351dc-e62f-0410-b875-e3a5c0b9693f
2010-01-17 21:15:31 +00:00
Evgeny Gryaznov
cb85159474 add notifier project
git-svn-id: https://webim.svn.sourceforge.net/svnroot/webim/trunk@731 c66351dc-e62f-0410-b875-e3a5c0b9693f
2010-01-17 19:03:40 +00:00
Evgeny Gryaznov
fcb70074bf remove empty folder
git-svn-id: https://webim.svn.sourceforge.net/svnroot/webim/trunk@730 c66351dc-e62f-0410-b875-e3a5c0b9693f
2010-01-17 18:59:38 +00:00
Evgeny Gryaznov
5bf6ed1acd extract api part
git-svn-id: https://webim.svn.sourceforge.net/svnroot/webim/trunk@729 c66351dc-e62f-0410-b875-e3a5c0b9693f
2010-01-17 18:58:57 +00:00
Evgeny Gryaznov
0656e7d8f2 build dmg, fix plist.info, ignore dmg
git-svn-id: https://webim.svn.sourceforge.net/svnroot/webim/trunk@728 c66351dc-e62f-0410-b875-e3a5c0b9693f
2010-01-17 00:23:25 +00:00
Evgeny Gryaznov
3d8cc81ced update ant file, exclude jars/bin
git-svn-id: https://webim.svn.sourceforge.net/svnroot/webim/trunk@727 c66351dc-e62f-0410-b875-e3a5c0b9693f
2010-01-17 00:04:31 +00:00
Evgeny Gryaznov
3988fe9724 add deployment folder
git-svn-id: https://webim.svn.sourceforge.net/svnroot/webim/trunk@726 c66351dc-e62f-0410-b875-e3a5c0b9693f
2010-01-16 23:29:40 +00:00
Evgeny Gryaznov
9a054da64b send new visitor notification
git-svn-id: https://webim.svn.sourceforge.net/svnroot/webim/trunk@725 c66351dc-e62f-0410-b875-e3a5c0b9693f
2010-01-16 00:42:28 +00:00
Evgeny Gryaznov
42bb76d504 notifications on home page, warn if operator is offline
git-svn-id: https://webim.svn.sourceforge.net/svnroot/webim/trunk@724 c66351dc-e62f-0410-b875-e3a5c0b9693f
2010-01-15 23:47:35 +00:00
Evgeny Gryaznov
b39c9a8d33 show notification details
git-svn-id: https://webim.svn.sourceforge.net/svnroot/webim/trunk@723 c66351dc-e62f-0410-b875-e3a5c0b9693f
2010-01-10 23:58:05 +00:00
Evgeny Gryaznov
9f4db8d39d remove copyright page
git-svn-id: https://webim.svn.sourceforge.net/svnroot/webim/trunk@722 c66351dc-e62f-0410-b875-e3a5c0b9693f
2010-01-10 23:08:24 +00:00
Evgeny Gryaznov
7c65433c5f sort properties, update ru, fix label width (login page)
git-svn-id: https://webim.svn.sourceforge.net/svnroot/webim/trunk@721 c66351dc-e62f-0410-b875-e3a5c0b9693f
2010-01-10 14:19:28 +00:00
Evgeny Gryaznov
f9965f4d10 add "Notifications Log" page, record sent mails, fast history search, fix redirection to groups
git-svn-id: https://webim.svn.sourceforge.net/svnroot/webim/trunk@720 c66351dc-e62f-0410-b875-e3a5c0b9693f
2010-01-10 13:39:49 +00:00
Evgeny Gryaznov
ecfe7ebfc4 notify about new features
git-svn-id: https://webim.svn.sourceforge.net/svnroot/webim/trunk@719 c66351dc-e62f-0410-b875-e3a5c0b9693f
2010-01-09 22:01:19 +00:00
Evgeny Gryaznov
d98d0e04d8 service "Jabber notifications", hide operator jabber options when service is off, fix css
git-svn-id: https://webim.svn.sourceforge.net/svnroot/webim/trunk@718 c66351dc-e62f-0410-b875-e3a5c0b9693f
2010-01-09 21:33:33 +00:00
Evgeny Gryaznov
958423ef35 two-row tab menu, two column options in "generate code", jabber notification option, adjust db
git-svn-id: https://webim.svn.sourceforge.net/svnroot/webim/trunk@717 c66351dc-e62f-0410-b875-e3a5c0b9693f
2010-01-09 20:58:27 +00:00
Evgeny Gryaznov
5b91e98928 update js folder references 163 -> 164
git-svn-id: https://webim.svn.sourceforge.net/svnroot/webim/trunk@716 c66351dc-e62f-0410-b875-e3a5c0b9693f
2010-01-07 22:28:18 +00:00
Evgeny Gryaznov
2b31cc8d33 rename js folder -> 164
git-svn-id: https://webim.svn.sourceforge.net/svnroot/webim/trunk@715 c66351dc-e62f-0410-b875-e3a5c0b9693f
2010-01-07 22:23:51 +00:00
Evgeny Gryaznov
3a17dd02ab update year in headers
git-svn-id: https://webim.svn.sourceforge.net/svnroot/webim/trunk@714 c66351dc-e62f-0410-b875-e3a5c0b9693f
2010-01-07 22:14:29 +00:00
Evgeny Gryaznov
c37027ebb0 hu properties
git-svn-id: https://webim.svn.sourceforge.net/svnroot/webim/trunk@713 c66351dc-e62f-0410-b875-e3a5c0b9693f
2010-01-07 22:08:27 +00:00
Evgeny Gryaznov
8824ee3923 fix demo
git-svn-id: https://webim.svn.sourceforge.net/svnroot/webim/trunk@712 c66351dc-e62f-0410-b875-e3a5c0b9693f
2009-12-27 21:06:24 +00:00
Evgeny Gryaznov
c64d4d3525 update news
git-svn-id: https://webim.svn.sourceforge.net/svnroot/webim/trunk@711 c66351dc-e62f-0410-b875-e3a5c0b9693f
2009-12-27 20:49:48 +00:00
Evgeny Gryaznov
dcc2f75732 features list
git-svn-id: https://webim.svn.sourceforge.net/svnroot/webim/trunk@710 c66351dc-e62f-0410-b875-e3a5c0b9693f
2009-12-27 20:38:56 +00:00
Evgeny Gryaznov
a126c76477 localize dates on downloads page, fix site name in sp locale
git-svn-id: https://webim.svn.sourceforge.net/svnroot/webim/trunk@709 c66351dc-e62f-0410-b875-e3a5c0b9693f
2009-12-20 00:56:48 +00:00
Evgeny Gryaznov
67809dc9d9 localize dates on downloads page, fix site name in sp locale
git-svn-id: https://webim.svn.sourceforge.net/svnroot/webim/trunk@708 c66351dc-e62f-0410-b875-e3a5c0b9693f
2009-12-20 00:53:34 +00:00
Evgeny Gryaznov
461f9ed8e2 localize home page
git-svn-id: https://webim.svn.sourceforge.net/svnroot/webim/trunk@707 c66351dc-e62f-0410-b875-e3a5c0b9693f
2009-12-20 00:43:08 +00:00
Evgeny Gryaznov
fa7330b365 get rid of smart getlocale, folders for languages
git-svn-id: https://webim.svn.sourceforge.net/svnroot/webim/trunk@706 c66351dc-e62f-0410-b875-e3a5c0b9693f
2009-12-19 23:35:54 +00:00
Evgeny Gryaznov
23e6e1edb5 site update
git-svn-id: https://webim.svn.sourceforge.net/svnroot/webim/trunk@705 c66351dc-e62f-0410-b875-e3a5c0b9693f
2009-12-19 22:57:27 +00:00
Ed Kraus
e674c47058 deleted cause of security reasons
git-svn-id: https://webim.svn.sourceforge.net/svnroot/webim/trunk@704 c66351dc-e62f-0410-b875-e3a5c0b9693f
2009-12-16 02:24:12 +00:00
Ed Kraus
a5736fc53f added db.php - it's to show whose paid to have "powered by" taken off
git-svn-id: https://webim.svn.sourceforge.net/svnroot/webim/trunk@703 c66351dc-e62f-0410-b875-e3a5c0b9693f
2009-12-16 02:18:38 +00:00
Ed Kraus
21d38e3fd9 fixed location of folders.
git-svn-id: https://webim.svn.sourceforge.net/svnroot/webim/trunk@702 c66351dc-e62f-0410-b875-e3a5c0b9693f
2009-12-16 02:13:15 +00:00
Ed Kraus
eedb94d05a Removing COpywrite
git-svn-id: https://webim.svn.sourceforge.net/svnroot/webim/trunk@701 c66351dc-e62f-0410-b875-e3a5c0b9693f
2009-11-18 04:00:20 +00:00
Ed Kraus
92b23e9cd8 Change in what's said for Creating tables
git-svn-id: https://webim.svn.sourceforge.net/svnroot/webim/trunk@700 c66351dc-e62f-0410-b875-e3a5c0b9693f
2009-11-18 00:16:00 +00:00
Ed Kraus
35fe72e503 hehe added html code
git-svn-id: https://webim.svn.sourceforge.net/svnroot/webim/trunk@699 c66351dc-e62f-0410-b875-e3a5c0b9693f
2009-11-03 21:53:33 +00:00
Ed Kraus
ecad44411f Took out 1 guy from tech team, added link to "WebTower"
git-svn-id: https://webim.svn.sourceforge.net/svnroot/webim/trunk@698 c66351dc-e62f-0410-b875-e3a5c0b9693f
2009-11-03 21:52:24 +00:00
Ed Kraus
d47e4fe437 reverted
git-svn-id: https://webim.svn.sourceforge.net/svnroot/webim/trunk@697 c66351dc-e62f-0410-b875-e3a5c0b9693f
2009-11-01 17:28:29 +00:00
Ed Kraus
28443beb9e Moved files to represent the ftp better
git-svn-id: https://webim.svn.sourceforge.net/svnroot/webim/trunk@696 c66351dc-e62f-0410-b875-e3a5c0b9693f
2009-11-01 17:17:08 +00:00
Ed Kraus
e2ffddf9b5 Features page updated to 1.6.3 Features :D
git-svn-id: https://webim.svn.sourceforge.net/svnroot/webim/trunk@695 c66351dc-e62f-0410-b875-e3a5c0b9693f
2009-10-26 15:14:54 +00:00
Ed Kraus
1628945de0 Updated the Update page on everyone's Mibew site :D
git-svn-id: https://webim.svn.sourceforge.net/svnroot/webim/trunk@694 c66351dc-e62f-0410-b875-e3a5c0b9693f
2009-10-26 15:07:13 +00:00
Ed Kraus
0b69213378 Updated Main page to say 1.6.3 is out :)
git-svn-id: https://webim.svn.sourceforge.net/svnroot/webim/trunk@693 c66351dc-e62f-0410-b875-e3a5c0b9693f
2009-10-26 15:03:58 +00:00
81 changed files with 1267 additions and 267 deletions

View File

@ -52,89 +52,12 @@ chdir "$targetFolder";
chdir "locales";
`zip -r ../../release$suffix/mibew${suffix}_cs.zip cs`;
`rm -rf cs`;
foreach $locale qw ( ar be bg ca cs da de el fa fi fr he hr hu id it ka lv nl pl pt-br pt-pt ro ru sp sv th tr ua zh-cn zh-tw ) {
`zip -r ../../release$suffix/mibew${suffix}_fi.zip fi`;
`rm -rf fi`;
`zip -r ../../release$suffix/mibew${suffix}_$locale.zip $locale`;
`rm -rf $locale`;
`zip -r ../../release$suffix/mibew${suffix}_da.zip da`;
`rm -rf da`;
`zip -r ../../release$suffix/mibew${suffix}_el.zip el`;
`rm -rf el`;
`zip -r ../../release$suffix/mibew${suffix}_lv.zip lv`;
`rm -rf lv`;
`zip -r ../../release$suffix/mibew${suffix}_fa.zip fa`;
`rm -rf fa`;
`zip -r ../../release$suffix/mibew${suffix}_nl.zip nl`;
`rm -rf nl`;
`zip -r ../../release$suffix/mibew${suffix}_th.zip th`;
`rm -rf th`;
`zip -r ../../release$suffix/mibew${suffix}_ar.zip ar`;
`rm -rf ar`;
`zip -r ../../release$suffix/mibew${suffix}_bg.zip bg`;
`rm -rf bg`;
`zip -r ../../release$suffix/mibew${suffix}_ca.zip ca`;
`rm -rf ca`;
`zip -r ../../release$suffix/mibew${suffix}_de.zip de`;
`rm -rf de`;
`zip -r ../../release$suffix/mibew${suffix}_ru.zip ru`;
`rm -rf ru`;
`zip -r ../../release$suffix/mibew${suffix}_ro.zip ro`;
`rm -rf ro`;
`zip -r ../../release$suffix/mibew${suffix}_hu.zip hu`;
`rm -rf hu`;
`zip -r ../../release$suffix/mibew${suffix}_fr.zip fr`;
`rm -rf fr`;
`zip -r ../../release$suffix/mibew${suffix}_it.zip it`;
`rm -rf it`;
`zip -r ../../release$suffix/mibew${suffix}_ka.zip ka`;
`rm -rf ka`;
`zip -r ../../release$suffix/mibew${suffix}_pl.zip pl`;
`rm -rf pl`;
`zip -r ../../release$suffix/mibew${suffix}_pt-br.zip pt-br`;
`rm -rf pt-br`;
`zip -r ../../release$suffix/mibew${suffix}_sp.zip sp`;
`rm -rf sp`;
`zip -r ../../release$suffix/mibew${suffix}_sv.zip sv`;
`rm -rf sv`;
`zip -r ../../release$suffix/mibew${suffix}_ua.zip ua`;
`rm -rf ua`;
`zip -r ../../release$suffix/mibew${suffix}_he.zip he`;
`rm -rf he`;
`zip -r ../../release$suffix/mibew${suffix}_hr.zip hr`;
`rm -rf hr`;
`zip -r ../../release$suffix/mibew${suffix}_tr.zip tr`;
`rm -rf tr`;
`zip -r ../../release$suffix/mibew${suffix}_zh-cn.zip zh-cn`;
`rm -rf zh-cn`;
`zip -r ../../release$suffix/mibew${suffix}_zh-tw.zip zh-tw`;
`rm -rf zh-tw`;
}
chdir "..";
`zip -r ../release$suffix/mibew$suffix.zip * .htaccess`;

View File

@ -21,6 +21,7 @@ require_once('libs/operator.php');
require_once('libs/groups.php');
require_once('libs/expand.php');
require_once('libs/captcha.php');
require_once('libs/notify.php');
loadsettings();
if($settings['enablessl'] == "1" && $settings['forcessl'] == "1") {
@ -125,6 +126,7 @@ if( !isset($_GET['token']) || !isset($_GET['thread']) ) {
$postedid = post_message_($thread['threadid'],$kind_user,$firstmessage,$link,$visitor['name']);
commit_thread( $thread['threadid'], array('shownmessageid' => $postedid), $link);
}
notify_operators($thread, $firstmessage, $link);
mysql_close($link);
}
$threadid = $thread['threadid'];

View File

@ -249,6 +249,7 @@ img.left {
.tabs {
float: right;
margin-left: 15px;
display: inline;
margin-right: 15px;
}
@ -297,6 +298,10 @@ img.left {
margin-bottom:8px;
}
.packedFormField select {
min-width: 130px;
}
div.errinfo {
color: #c13030;
}
@ -490,6 +495,16 @@ table.list td a.man {
padding-left: 15px;
}
table.list td a.mail {
background: url(images/mail.png) no-repeat left center;
padding-left: 24px;
}
table.list td a.xmpp {
background: url(images/xmpp.png) no-repeat left center;
padding-left: 24px;
}
table.list tbody tr:hover td, table.list tbody tr:hover td a, table.statistics tbody tr:hover td {
color: #1D485E;
}
@ -728,6 +743,8 @@ table.awaiting td.visitor {
.dashitem img, #dashlocalesPopup h2 img {
float: left;
padding-right:10px;
width: 24px;
height: 24px;
}
#dashlocalesPopup h2 img {

Binary file not shown.

After

Width:  |  Height:  |  Size: 690 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 328 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 331 B

View File

@ -72,6 +72,7 @@ $dbtables = array(
"vcavatar" => "varchar(255)",
"vcjabbername" => "varchar(255)",
"iperm" => "int DEFAULT 65535",
"inotify" => "int DEFAULT 0", /* 0 - none, 1 - jabber */
"dtmrestore" => "datetime DEFAULT 0",
"vcrestoretoken" => "varchar(64)",
),
@ -105,7 +106,18 @@ $dbtables = array(
"locale" => "varchar(8)",
"groupid" => "int references ${mysqlprefix}chatgroup(groupid)",
"vcvalue" => "varchar(1024) NOT NULL",
)
),
"${mysqlprefix}chatnotification" => array(
"id" => "INT NOT NULL auto_increment PRIMARY KEY",
"locale" => "varchar(8)",
"vckind" => "varchar(16)",
"vcto" => "varchar(256)",
"dtmcreated" => "datetime DEFAULT 0",
"vcsubject" => "varchar(256)",
"tmessage" => "text NOT NULL",
"refoperator" => "int NOT NULL references ${mysqlprefix}chatoperator(operatorid)",
),
);
$dbtables_indexes = array(
@ -119,11 +131,12 @@ $memtables = array();
$dbtables_can_update = array(
"${mysqlprefix}chatthread" => array("agentId", "userTyping", "agentTyping", "messageCount", "nextagent", "shownmessageid", "userid", "userAgent", "groupid"),
"${mysqlprefix}chatmessage" => array("agentId"),
"${mysqlprefix}chatoperator" => array("vcavatar", "vcjabbername", "iperm", "istatus", "vcemail", "dtmrestore", "vcrestoretoken"),
"${mysqlprefix}chatoperator" => array("vcavatar", "vcjabbername", "iperm", "istatus", "vcemail", "dtmrestore", "vcrestoretoken", "inotify"),
"${mysqlprefix}chatban" => array(),
"${mysqlprefix}chatgroup" => array("vcemail"),
"${mysqlprefix}chatgroupoperator" => array(),
"${mysqlprefix}chatresponses" => array(),
"${mysqlprefix}chatnotification" => array(),
);
function show_install_err($text)
@ -171,7 +184,7 @@ function create_table($id, $link)
mysql_query($query, $link) or show_install_err(' Query failed: ' . mysql_error($link));
if ($id == "${mysqlprefix}chatoperator") {
create_operator_("admin", "", "", "Administrator", "Administrator", "", $link);
create_operator_("admin", "", "", "", "Administrator", "Administrator", 0, "", $link);
} else if ($id == "${mysqlprefix}chatrevision") {
perform_query("INSERT INTO ${mysqlprefix}chatrevision VALUES (1)", $link);
}

View File

@ -38,7 +38,8 @@ if ($act == "silentcreateall") {
} else if ($act == "createdb") {
mysql_query("CREATE DATABASE $mysqldb", $link) or show_install_err(' Query failed: ' . mysql_error($link));
} else {
mysql_select_db($mysqldb, $link) or show_install_err('Could not select database');
mysql_select_db($mysqldb, $link)
or show_install_err('Could not select database');
if ($force_charset_in_connection) {
mysql_query("SET character set $dbencoding", $link);
}
@ -118,6 +119,10 @@ if ($act == "silentcreateall") {
runsql("ALTER TABLE ${mysqlprefix}chatoperator ADD istatus int DEFAULT 0", $link);
}
if (in_array("${mysqlprefix}chatoperator.inotify", $absent)) {
runsql("ALTER TABLE ${mysqlprefix}chatoperator ADD inotify int DEFAULT 0", $link);
}
if (in_array("${mysqlprefix}chatoperator.vcavatar", $absent)) {
runsql("ALTER TABLE ${mysqlprefix}chatoperator ADD vcavatar varchar(255)", $link);
}

View File

@ -1,7 +1,12 @@
1.6.5
-----
[+] Apache 2 license
[!] csrf fixes
[+] switched to google closure compiler for Javascript compression, jQuery 1.4.2
[+] improve database schema (add indexes, fix compatibility with MySQL 5.5)
[+] silver skin (thanks to Alekin Pavel)
[+] informational banner on empty password of administrator
[!] CSRF fixes
[!] close old threads by timeout
1.6.4
-----

View File

@ -1 +0,0 @@
var myAgent="",myVer=0,myRealAgent="";function detectAgent(){for(var a=["opera","msie","safari","firefox","netscape","mozilla"],b=navigator.userAgent.toLowerCase(),c=0;c<a.length;c++){var d=a[c];if(b.indexOf(d)!=-1){myAgent=d;if(!window.RegExp)break;RegExp(d+"[ /]?([0-9]+(.[0-9]+)?)").exec(b)!=null&&(myVer=parseFloat(RegExp.$1));break}}myRealAgent=myAgent;navigator.product=="Gecko"&&(myAgent="moz")}detectAgent();function getEl(a){return document.getElementById(a)};

View File

@ -1,24 +0,0 @@
/*
This file is part of Mibew Messenger project.
http://mibew.org
Copyright (c) 2005-2011 Mibew Messenger Community
License: http://mibew.org/license.php
*/
var FrameUtils={getDocument:function(a){return a.contentDocument?a.contentDocument:a.contentWindow?a.contentWindow.document:a.document?a.document:null},initFrame:function(a){var b=this.getDocument(a);b.open();b.write("<html><head>");b.write('<link rel="stylesheet" type="text/css" media="all" href="'+Chat.cssfile+'">');b.write("</head><body bgcolor='#FFFFFF' text='#000000' link='#C28400' vlink='#C28400' alink='#C28400'>");b.write("<table width='100%' cellspacing='0' cellpadding='0' border='0'><tr><td valign='top' class='message' id='content'></td></tr></table><a id='bottom' name='bottom'></a>");
b.write("</body></html>");b.close();a.onload=function(){a.myHtml&&(FrameUtils.getDocument(a).getElementById("content").innerHTML+=a.myHtml,FrameUtils.scrollDown(a))}},insertIntoFrame:function(a,b){var c=this.getDocument(a).getElementById("content");if(c==null){if(!a.myHtml)a.myHtml="";a.myHtml+=b}else c.innerHTML+=b},scrollDown:function(a){var b=this.getDocument(a).getElementById("bottom");if(myAgent=="opera")try{a.contentWindow.scrollTo(0,this.getDocument(a).getElementById("content").clientHeight)}catch(c){}b&&
b.scrollIntoView(!1)}};Ajax.ChatThreadUpdater=Class.create();
Class.inherit(Ajax.ChatThreadUpdater,Ajax.Base,{initialize:function(a){this.setOptions(a);this._options.onComplete=this.requestComplete.bind(this);this._options.onException=this.handleException.bind(this);this._options.onTimeout=this.handleTimeout.bind(this);this._options.timeout=5E3;this.updater={};this.frequency=this._options.frequency||2;this.lastupdate=0;this.focused=this.skipNextsound=this.cansend=!0;this.ownThread=this._options.message!=null;FrameUtils.initFrame(this._options.container);if(this._options.message)this._options.message.onkeydown=
this.handleKeyDown.bind(this),this._options.message.onfocus=function(){this.focused=!0}.bind(this),this._options.message.onblur=function(){this.focused=!1}.bind(this);this.update()},handleException:function(){this.setStatus("offline, reconnecting");this.stopUpdate();this.timer=setTimeout(this.update.bind(this),1E3)},handleTimeout:function(){this.setStatus("timeout, reconnecting");this.stopUpdate();this.timer=setTimeout(this.update.bind(this),1E3)},updateOptions:function(a){this._options.parameters=
"act="+a+"&thread="+(this._options.threadid||0)+"&token="+(this._options.token||0)+"&lastid="+(this._options.lastid||0);this._options.user&&(this._options.parameters+="&user=true");a=="refresh"&&this._options.message&&this._options.message.value!=""&&(this._options.parameters+="&typed=1")},enableInput:function(a){if(this._options.message)this._options.message.disabled=!a},stopUpdate:function(){this.enableInput(!0);if(this.updater._options)this.updater._options.onComplete=void 0;clearTimeout(this.timer)},
update:function(){this.updateOptions("refresh");this.updater=new Ajax.Request(this._options.servl,this._options)},requestComplete:function(a){try{this.enableInput(!0);this.cansend=!0;var b=Ajax.getXml(a);b&&b.tagName=="thread"?this.updateContent(b):this.handleError(a,b,"refresh messages failed")}catch(c){}this.skipNextsound=!1;this.timer=setTimeout(this.update.bind(this),this.frequency*1E3)},postMessage:function(a){if(a!=""&&this.cansend){this.cansend=!1;this.stopUpdate();this.skipNextsound=!0;this.updateOptions("post");
var b={}.extend(this._options);b.parameters+="&message="+encodeURIComponent(a);b.onComplete=function(a){this.requestComplete(a);if(this._options.message)this._options.message.value="",this._options.message.focus()}.bind(this);myRealAgent!="opera"&&this.enableInput(!1);this.updater=new Ajax.Request(this._options.servl,b)}},changeName:function(a){this.skipNextsound=!0;new Ajax.Request(this._options.servl,{parameters:"act=rename&thread="+(this._options.threadid||0)+"&token="+(this._options.token||0)+
"&name="+encodeURIComponent(a)})},onThreadClosed:function(a){var b=Ajax.getXml(a);b&&b.tagName=="closed"?setTimeout("window.close()",2E3):this.handleError(a,b,"cannot close")},closeThread:function(){var a="act=close&thread="+(this._options.threadid||0)+"&token="+(this._options.token||0);this._options.user&&(a+="&user=true");new Ajax.Request(this._options.servl,{parameters:a,onComplete:this.onThreadClosed.bind(this)})},processMessage:function(a,b){var c=NodeUtils.getNodeText(b);FrameUtils.insertIntoFrame(a,
c)},showTyping:function(a){if($("typingdiv"))$("typingdiv").style.display=a?"inline":"none"},setupAvatar:function(a){a=NodeUtils.getNodeText(a);if(this._options.avatar&&this._options.user)this._options.avatar.innerHTML=a!=""?'<img src="'+Chat.webimRoot+'/images/free.gif" width="7" height="1" border="0" alt="" /><img src="'+a+'" border="0" alt=""/>':""},updateContent:function(a){var b=!1,c=this._options.container,d=NodeUtils.getAttrValue(a,"lastid");if(d)this._options.lastid=d;(d=NodeUtils.getAttrValue(a,
"typing"))&&this.showTyping(d=="1");if((d=NodeUtils.getAttrValue(a,"canpost"))&&(d=="1"&&!this.ownThread||this.ownThread&&d!="1"))window.location.href=window.location.href;for(d=0;d<a.childNodes.length;d++){var e=a.childNodes[d];e.tagName=="message"?(b=!0,this.processMessage(c,e)):e.tagName=="avatar"&&this.setupAvatar(e)}window.location.search.indexOf("trace=on")>=0?(a="updated",this.lastupdate>0&&(c=((new Date).getTime()-this.lastupdate)/1E3,a=a+", "+c+" secs",c>10&&alert(a)),this.lastupdate=(new Date).getTime(),
this.setStatus(a)):this.clearStatus();b&&(FrameUtils.scrollDown(this._options.container),this.skipNextsound||(b=$("soundimg"),(b==null||b.className.match(/\bisound\b/))&&playSound(Chat.webimRoot+"/sounds/new_message.wav")),this.focused||window.focus())},isSendkey:function(a,b){return b==13&&(a||this._options.ignorectrl)||b==10},handleKeyDown:function(a){a?(ctrl=a.ctrlKey,a=a.which):(a=event.keyCode,ctrl=event.ctrlKey);if(this._options.message&&this.isSendkey(ctrl,a))return a=this._options.message.value,
this._options.ignorectrl&&(a=a.replace(/[\r\n]+$/,"")),this.postMessage(a),!1;return!0},handleError:function(a,b){b&&b.tagName=="error"?this.setStatus(NodeUtils.getNodeValue(b,"descr")):this.setStatus("reconnecting")},showStatusDiv:function(a){if($("engineinfo"))$("engineinfo").style.display="inline",$("engineinfo").innerHTML=a},setStatus:function(a){this.statusTimeout&&clearTimeout(this.statusTimeout);this.showStatusDiv(a);this.statusTimeout=setTimeout(this.clearStatus.bind(this),4E3)},clearStatus:function(){$("engineinfo").style.display=
"none"}});var Chat={threadUpdater:{},applyName:function(){Chat.threadUpdater.changeName($("uname").value);$("changename1").style.display="none";$("changename2").style.display="inline";$("unamelink").innerHTML=htmlescape($("uname").value)},showNameField:function(){$("changename1").style.display="inline";$("changename2").style.display="none"}};
Behaviour.register({"#postmessage a":function(a){a.onclick=function(){var a=$("msgwnd");a&&Chat.threadUpdater.postMessage(a.value)}},"select#predefined":function(a){a.onchange=function(){var a=$("msgwnd");if(this.selectedIndex!=0)a.value=this.options[this.selectedIndex].innerText||this.options[this.selectedIndex].innerHTML;this.selectedIndex=0;a.focus()}},"div#changename2 a":function(a){a.onclick=function(){Chat.showNameField();return!1}},"div#changename1 a":function(a){a.onclick=function(){Chat.applyName();
return!1}},"div#changename1 input#uname":function(a){a.onkeydown=function(a){(a||event).keyCode==13&&Chat.applyName()}},"a#refresh":function(a){a.onclick=function(){Chat.threadUpdater.stopUpdate();Chat.threadUpdater.update()}},"a#togglesound":function(a){a.onclick=function(){var a=$("soundimg");if(a)a.className=a.className.match(/\bisound\b/)?"tplimage inosound":"tplimage isound",(a=$("msgwnd"))&&a.focus()}},"a.closethread":function(a){a.onclick=function(){Chat.threadUpdater.closeThread()}}});
EventHelper.register(window,"onload",function(){Chat.webimRoot=threadParams.wroot;Chat.cssfile=threadParams.cssfile;Chat.threadUpdater=new Ajax.ChatThreadUpdater({ignorectrl:-1,container:myRealAgent=="safari"?self.frames[0]:$("chatwnd"),avatar:$("avatarwnd"),message:$("msgwnd")}.extend(threadParams||{}))});

View File

@ -1,25 +0,0 @@
/*
This file is part of Mibew Messenger project.
http://mibew.org
Copyright (c) 2005-2011 Mibew Messenger Community
License: http://mibew.org/license.php
*/
var Class={create:function(){return function(){this.initialize.apply(this,arguments)}},inherit:function(a,b,c){Object.extend(Object.extend(a.prototype,b.prototype),c)}};Object.extend=function(a,b){for(property in b)a[property]=b[property];return a};Object.prototype.extend=function(a){return Object.extend.apply(this,[this,a])};Function.prototype.bind=function(a){var b=this;return function(){return b.apply(a,arguments)}};
Function.prototype.bindAsEventListener=function(a){var b=this;return function(c){b.call(a,c||window.event)}};Number.prototype.toColorPart=function(){var a=this.toString(16);if(this<16)return"0"+a;return a};var Try={these:function(){for(var a,b=0;b<arguments.length;b++){var c=arguments[b];try{a=c();break}catch(d){}}return a}},PeriodicalExecuter=Class.create();
PeriodicalExecuter.prototype={initialize:function(a,b){this.callback=a;this.frequency=b;this.currentlyExecuting=!1;this.registerCallback()},registerCallback:function(){setInterval(this.onTimerEvent.bind(this),this.frequency*1E3)},onTimerEvent:function(){if(!this.currentlyExecuting)try{this.currentlyExecuting=!0,this.callback()}finally{this.currentlyExecuting=!1}}};
function findObj(a){var b;if(!(b=document[a])&&document.all)b=document.all[a];!b&&document.getElementById&&(b=document.getElementById(a));if(!b&&!document.all&&document.getElementsByName){b=document.getElementsByName(a);if(b.length==0)return null;if(b.length==1)return b[0]}return b}if(!Array.prototype.push)Array.prototype.push=function(){for(var a=this.length,b=0;b<arguments.length;b++)this[a+b]=arguments[b];return this.length};
function $(){for(var a=[],b=0;b<arguments.length;b++){var c=arguments[b];typeof c=="string"&&(c=findObj(c));if(arguments.length==1)return c;a.push(c)}return a}
var Ajax={getTransport:function(){return Try.these(function(){return new ActiveXObject("Msxml2.XMLHTTP")},function(){return new ActiveXObject("Microsoft.XMLHTTP")},function(){return new XMLHttpRequest})||!1},getXml:function(a){if(a&&a.status>=200&&a.status<300&&(a=a.responseXML)&&a.documentElement)return a.documentElement;return null},getError:function(a){return a.statusText||"connection error N"+a.status},emptyFunction:function(){},Base:function(){}};
Ajax.Base.prototype={setOptions:function(a){this._options={_method:"post",asynchronous:!0,parameters:""}.extend(a||{})},getStatus:function(){try{return this.transport.status||0}catch(a){return 0}},responseIsSuccess:function(){var a=this.getStatus();return!a||a>=200&&a<300},responseIsFailure:function(){return!this.responseIsSuccess()}};Ajax.Request=Class.create();Ajax.Request.Events=["Uninitialized","Loading","Loaded","Interactive","Complete"];
Class.inherit(Ajax.Request,Ajax.Base,{initialize:function(a,b){this.transport=Ajax.getTransport();this.setOptions(b);this.transportTimer={};this.finished=!1;this.request(a)},request:function(a){var b=this._options.parameters||"";b.length>0&&(b+="&_=");try{this._options._method=="get"&&b.length>0&&(a+="?"+b);this.transport.open(this._options._method.toUpperCase(),a,this._options.asynchronous);if(this._options.asynchronous&&(this.transport.onreadystatechange=this.onStateChange.bind(this),this._options.timeout))this.transportTimer=
setTimeout(this.handleTimeout.bind(this),this._options.timeout);this.setRequestHeaders();var c=this._options.postBody?this._options.postBody:b;this.transport.send(this._options._method=="post"?c:null)}catch(d){this.dispatchException(d)}},setRequestHeaders:function(){var a=["X-Requested-With","XMLHttpRequest"];this._options._method=="post"&&(a.push("Content-type","application/x-www-form-urlencoded"),this.transport.overrideMimeType&&(navigator.userAgent.match("/Gecko/(d{4})/")||[0,2005])[1]<2005&&a.push("Connection",
"close"));this._options.requestHeaders&&a.push.apply(a,this._options.requestHeaders);for(var b=0;b<a.length;b+=2)this.transport.setRequestHeader(a[b],a[b+1])},onStateChange:function(){this.transport.readyState!=1&&this.respondToReadyState(this.transport.readyState)},handleTimeout:function(){if(!this.finished)this.finished=!0,(this._options.onTimeout||Ajax.emptyFunction)(this)},respondToReadyState:function(a){if(Ajax.Request.Events[a]=="Complete"){try{if(!this.finished)this.finished=!0,this._options.timeout&&
clearTimeout(this.transportTimer),(this._options.onComplete||Ajax.emptyFunction)(this.transport)}catch(b){this.dispatchException(b)}this.transport.onreadystatechange=Ajax.emptyFunction}},dispatchException:function(a){(this._options.onException||Ajax.emptyFunction)(this,a)}});
var EventHelper={register:function(a,b,c){var d=a[b];a[b]=typeof d!="function"?c:function(){d();c()}}},Behaviour={list:[],register:function(a){Behaviour.list.push(a)},init:function(){EventHelper.register(window,"onload",function(){Behaviour.apply()})},apply:function(){for(h=0;sheet=Behaviour.list[h];h++)for(selector in sheet)if(list=document.getElementsBySelector(selector))for(i=0;element=list[i];i++)sheet[selector](element)}};Behaviour.init();
function getAllChildren(a){return a.all?a.all:a.getElementsByTagName("*")}
document.getElementsBySelector=function(a){if(!document.getElementsByTagName)return[];for(var a=a.split(" "),b=Array(document),c=0;c<a.length;c++)if(token=a[c].replace(/^\s+/,"").replace(/\s+$/,""),token.indexOf("#")>-1){var d=token.split("#"),e=d[0],b=document.getElementById(d[1]);if(b==null||e&&b.nodeName.toLowerCase()!=e)return[];b=Array(b)}else if(token.indexOf(".")>-1){d=token.split(".");e=d[0];d=d[1];e||(e="*");for(var l=[],j=0,n=0;n<b.length;n++){var g;g=e=="*"?getAllChildren(b[n]):b[n].getElementsByTagName(e);
if(g!=null)for(var o=0;o<g.length;o++)l[j++]=g[o]}b=[];for(j=e=0;j<l.length;j++)l[j].className&&l[j].className.match(RegExp("\\b"+d+"\\b"))&&(b[e++]=l[j])}else{if(!b[0])return;e=token;l=[];for(n=j=0;n<b.length;n++){g=b[n].getElementsByTagName(e);for(o=0;o<g.length;o++)l[j++]=g[o]}b=l}return b};
var NodeUtils={getNodeValue:function(a,b){var c=a.getElementsByTagName(b);if(c.length==0)return"";var c=c[0].childNodes,d="";for(i=0;i<c.length;i++)d+=c[i].nodeValue;return d},getNodeText:function(a){var a=a.childNodes,b="";for(i=0;i<a.length;i++)b+=a[i].nodeValue;return b},getAttrValue:function(a,b){for(k=0;k<a.attributes.length;k++)if(a.attributes[k].nodeName==b)return a.attributes[k].nodeValue;return null}},CommonUtils={getRow:function(a,b){var c=b.rows[a];if(c!=null)return c;if(b.rows.head!=null)return null;
for(k=0;k<b.rows.length;k++)if(b.rows[k].id==a)return b.rows[k];return null},getCell:function(a,b,c){var d=b.cells[a];if(d!=null)return d;if(c.rows.head!=null)return null;for(k=0;k<b.cells.length;k++)if(b.cells[k].id==a)return b.cells[k];return null},insertCell:function(a,b,c,d,e,l){a=a.insertCell(-1);a.id=b;if(d)a.align=d;a.className=c;if(e)a.height=e;a.innerHTML=l}};
function playSound(a){var b=document.createElement("div");if(navigator.userAgent.toLowerCase().indexOf("opera")!=-1)b.style="position: absolute; left: 0px; top: -200px;";document.body.appendChild(b);b.innerHTML='<audio autoplay src="'+a+'"><embed src="'+a+'" hidden="true" autostart="true" loop="false"></audio>'}function htmlescape(a){return a.replace("&","&amp;").replace("<","&lt;").replace(">","&gt;").replace('"',"&quot;")};

View File

@ -1,27 +0,0 @@
/*
This file is part of Mibew Messenger project.
http://mibew.org
Copyright (c) 2005-2011 Mibew Messenger Community
License: http://mibew.org/license.php
*/
Ajax.PeriodicalUpdater=Class.create();
Class.inherit(Ajax.PeriodicalUpdater,Ajax.Base,{initialize:function(a){this.setOptions(a);this._options.onComplete=this.requestComplete.bind(this);this._options.onException=this.handleException.bind(this);this._options.onTimeout=this.handleTimeout.bind(this);this._options.timeout=5E3;this.frequency=this._options.frequency||2;this.updater={};this.update()},handleException:function(){this._options.handleError&&this._options.handleError("offline, reconnecting");this.stopUpdate();this.timer=setTimeout(this.update.bind(this),
1E3)},handleTimeout:function(){this._options.handleError&&this._options.handleError("timeout, reconnecting");this.stopUpdate();this.timer=setTimeout(this.update.bind(this),1E3)},stopUpdate:function(){if(this.updater._options)this.updater._options.onComplete=void 0;clearTimeout(this.timer)},update:function(){if(this._options.updateParams)this._options.parameters=this._options.updateParams();this.updater=new Ajax.Request(this._options.url,this._options)},requestComplete:function(a){try{var b=Ajax.getXml(a);
b?(this._options.updateContent||Ajax.emptyFunction)(b):this._options.handleError&&this._options.handleError("reconnecting")}catch(c){}this.timer=setTimeout(this.update.bind(this),this.frequency*1E3)}});
var HtmlGenerationUtils={popupLink:function(a,b,c,d,e,l,j){return'<a href="'+a+'"'+(j!=null?' class="'+j+'"':"")+' target="_blank" title="'+b+'" onclick="this.newWindow = window.open(\''+a+"', '"+c+"', 'toolbar=0,scrollbars=0,location=0,status=1,menubar=0,width="+e+",height="+l+",resizable=1');this.newWindow.focus();this.newWindow.opener=window;return false;\">"+d+"</a>"},generateOneRowTable:function(a){return'<table class="inner"><tr>'+a+"</tr></table>"},viewOpenCell:function(a,b,c,d,e,l,j,n){var l=
2,b=b+"?thread="+c,g="<td>";g+=e||d?HtmlGenerationUtils.popupLink(n||!d?b:b+"&viewonly=true",localized[e?0:1],"ImCenter"+c,a,640,480,null):'<a href="#">'+a+"</a>";g+="</td>";e&&(g+='<td class="icon">',g+=HtmlGenerationUtils.popupLink(b,localized[0],"ImCenter"+c,'<img src="'+webimRoot+'/images/tbliclspeak.gif" width="15" height="15" border="0" alt="'+localized[0]+'">',640,480,null),g+="</td>",l++);d&&(g+='<td class="icon">',g+=HtmlGenerationUtils.popupLink(b+"&viewonly=true",localized[1],"ImCenter"+
c,'<img src="'+webimRoot+'/images/tbliclread.gif" width="15" height="15" border="0" alt="'+localized[1]+'">',640,480,null),g+="</td>",l++);j!=""&&(g+='</tr><tr><td class="firstmessage" colspan="'+l+'"><a href="javascript:void(0)" title="'+j+'" onclick="alert(this.title);return false;">',g+=j.length>30?j.substring(0,30)+"...":j,g+="</a></td>");return HtmlGenerationUtils.generateOneRowTable(g)},banCell:function(a,b){return'<td class="icon">'+HtmlGenerationUtils.popupLink(webimRoot+"/operator/ban.php?"+
(b?"id="+b:"thread="+a),localized[2],"ban"+a,'<img src="'+webimRoot+'/images/ban.gif" width="15" height="15" border="0" alt="'+localized[2]+'">',720,480,null)+"</td>"}};Ajax.ThreadListUpdater=Class.create();
Class.inherit(Ajax.ThreadListUpdater,Ajax.Base,{initialize:function(a){this.setOptions(a);this._options.updateParams=this.updateParams.bind(this);this._options.handleError=this.handleError.bind(this);this._options.updateContent=this.updateContent.bind(this);this._options.lastrevision=0;this.threadTimers={};this.delta=0;this.t=this._options.table;this.periodicalUpdater=new Ajax.PeriodicalUpdater(this._options)},updateParams:function(){return"since="+this._options.lastrevision+"&status="+this._options.istatus+
(this._options.showonline?"&showonline=1":"")},setStatus:function(a){this._options.status.innerHTML=a},handleError:function(a){this.setStatus(a)},updateThread:function(a){function b(a,b,c,d){if(a=CommonUtils.getCell(c,b,a))a.innerHTML=d}for(var c,d,e,l=!1,j=!1,n=!1,g=null,o=null,f=0;f<a.attributes.length;f++){var m=a.attributes[f];if(m.nodeName=="id")c=m.nodeValue;else if(m.nodeName=="stateid")d=m.nodeValue;else if(m.nodeName=="state")e=m.nodeValue;else if(m.nodeName=="canopen")j=!0;else if(m.nodeName==
"canview")l=!0;else if(m.nodeName=="canban")n=!0;else if(m.nodeName=="ban")g=m.nodeValue;else if(m.nodeName=="banid")o=m.nodeValue}f=CommonUtils.getRow("thr"+c,this.t);if(d=="closed")f&&this.t.deleteRow(f.rowIndex),this.threadTimers[c]=null;else{var m=NodeUtils.getNodeValue(a,"name"),s=NodeUtils.getNodeValue(a,"addr"),q=NodeUtils.getNodeValue(a,"time"),t=NodeUtils.getNodeValue(a,"agent"),r=NodeUtils.getNodeValue(a,"modified"),u=NodeUtils.getNodeValue(a,"message"),p="<td>"+NodeUtils.getNodeValue(a,
"useragent")+"</td>";g!=null&&(p="<td>"+NodeUtils.getNodeValue(a,"reason")+"</td>");n&&(p+=HtmlGenerationUtils.banCell(c,o));p=HtmlGenerationUtils.generateOneRowTable(p);a=CommonUtils.getRow("t"+d,this.t);n=CommonUtils.getRow("t"+d+"end",this.t);if(f!=null&&(f.rowIndex<=a.rowIndex||f.rowIndex>=n.rowIndex))this.t.deleteRow(f.rowIndex),f=this.threadTimers[c]=null;if(f==null){if(f=this.t.insertRow(a.rowIndex+1),f.className=g=="blocked"&&d!="chat"?"ban":"in"+d,f.id="thr"+c,this.threadTimers[c]=[q,r,d],
CommonUtils.insertCell(f,"name","visitor",null,null,HtmlGenerationUtils.viewOpenCell(m,this._options.agentservl,c,l,j,g,u,d!="chat")),CommonUtils.insertCell(f,"contid","visitor","center",null,s),CommonUtils.insertCell(f,"state","visitor","center",null,e),CommonUtils.insertCell(f,"op","visitor","center",null,t),CommonUtils.insertCell(f,"time","visitor","center",null,this.getTimeSince(q)),CommonUtils.insertCell(f,"wait","visitor","center",null,d!="chat"?this.getTimeSince(r):"-"),CommonUtils.insertCell(f,
"etc","visitor","center",null,p),d=="wait"||d=="prio")return!0}else this.threadTimers[c]=[q,r,d],f.className=g=="blocked"&&d!="chat"?"ban":"in"+d,b(this.t,f,"name",HtmlGenerationUtils.viewOpenCell(m,this._options.agentservl,c,l,j,g,u,d!="chat")),b(this.t,f,"contid",s),b(this.t,f,"state",e),b(this.t,f,"op",t),b(this.t,f,"time",this.getTimeSince(q)),b(this.t,f,"wait",d!="chat"?this.getTimeSince(r):"-"),b(this.t,f,"etc",p);return!1}},updateQueueMessages:function(){function a(a,b){var c=$(b),j=$(b+"end");
if(c==null||j==null)return!1;return c.rowIndex+1<j.rowIndex}var b=$("statustd");if(b){var c=a(this.t,"twait")||a(this.t,"tprio")||a(this.t,"tchat");b.innerHTML=c?"":this._options.noclients;b.height=c?5:30}},getTimeSince:function(a){var a=Math.floor(((new Date).getTime()-a-this.delta)/1E3),b=Math.floor(a/60),c="";a%=60;a<10&&(a="0"+a);b>=60&&(c=Math.floor(b/60),b%=60,b<10&&(b="0"+b),c+=":");return c+b+":"+a},updateTimers:function(){for(var a in this.threadTimers)if(this.threadTimers[a]!=null){var b=
this.threadTimers[a],c=CommonUtils.getRow("thr"+a,this.t);if(c!=null){var d=function(a,b,c,d){if(a=CommonUtils.getCell(c,b,a))a.innerHTML=d};d(this.t,c,"time",this.getTimeSince(b[0]));d(this.t,c,"wait",b[2]!="chat"?this.getTimeSince(b[1]):"-")}}},updateThreads:function(a){var b=!1,c=NodeUtils.getAttrValue(a,"time"),d=NodeUtils.getAttrValue(a,"revision");if(c)this.delta=(new Date).getTime()-c;if(d)this._options.lastrevision=d;for(c=0;c<a.childNodes.length;c++)d=a.childNodes[c],d.tagName=="thread"&&
this.updateThread(d)&&(b=!0);this.updateQueueMessages();this.updateTimers();this.setStatus(this._options.istatus?"Away":"Up to date");b&&(playSound(webimRoot+"/sounds/new_user.wav"),window.focus(),updaterOptions.showpopup&&alert(localized[5]))},updateOperators:function(a){var b=$("onlineoperators");if(b){for(var c=[],d=0;d<a.childNodes.length;d++){var e=a.childNodes[d];if(e.tagName=="operator"){var l=NodeUtils.getAttrValue(e,"name"),e=NodeUtils.getAttrValue(e,"away")!=null;c[c.length]='<img src="'+
webimRoot+"/images/op"+(e?"away":"online")+'.gif" width="12" height="12" border="0" alt="'+localized[1]+'"> '+l}}b.innerHTML=c.join(", ")}},updateContent:function(a){if(a.tagName=="update")for(var b=0;b<a.childNodes.length;b++){var c=a.childNodes[b];c.tagName=="threads"?this.updateThreads(c):c.tagName=="operators"&&this.updateOperators(c)}else a.tagName=="error"?this.setStatus(NodeUtils.getNodeValue(a,"descr")):this.setStatus("reconnecting")}});
function togglemenu(){if($("sidebar")&&$("wcontent")&&$("togglemenu"))$("wcontent").className=="contentnomenu"?($("sidebar").style.display="block",$("wcontent").className="contentinner",$("togglemenu").innerHTML=localized[4]):($("sidebar").style.display="none",$("wcontent").className="contentnomenu",$("togglemenu").innerHTML=localized[3])}var webimRoot="";Behaviour.register({"#togglemenu":function(a){a.onclick=function(){togglemenu()}}});
EventHelper.register(window,"onload",function(){webimRoot=updaterOptions.wroot;new Ajax.ThreadListUpdater({table:$("threadlist"),status:$("connstatus"),istatus:0}.extend(updaterOptions||{}));updaterOptions.havemenu||togglemenu()});

View File

@ -0,0 +1 @@
var myAgent="",myVer=0,myRealAgent="";function detectAgent(){for(var a="opera msie safari firefox netscape mozilla".split(" "),b=navigator.userAgent.toLowerCase(),c=0;c<a.length;c++){var d=a[c];if(-1!=b.indexOf(d)){myAgent=d;if(!window.RegExp)break;null!=RegExp(d+"[ /]?([0-9]+(.[0-9]+)?)").exec(b)&&(myVer=parseFloat(RegExp.$1));break}}myRealAgent=myAgent;"Gecko"==navigator.product&&(myAgent="moz")}detectAgent();function getEl(a){return document.getElementById(a)};

View File

@ -0,0 +1,24 @@
/*
This file is part of Mibew Messenger project.
http://mibew.org
Copyright (c) 2005-2013 Mibew Messenger Community
License: http://mibew.org/license.php
*/
var FrameUtils={getDocument:function(a){return a.contentDocument?a.contentDocument:a.contentWindow?a.contentWindow.document:a.document?a.document:null},initFrame:function(a){var b=this.getDocument(a);b.open();b.write("<html><head>");b.write('<link rel="stylesheet" type="text/css" media="all" href="'+Chat.cssfile+'">');b.write("</head><body bgcolor='#FFFFFF' text='#000000' link='#C28400' vlink='#C28400' alink='#C28400'>");b.write("<table width='100%' cellspacing='0' cellpadding='0' border='0'><tr><td valign='top' class='message' id='content'></td></tr></table><a id='bottom' name='bottom'></a>");
b.write("</body></html>");b.close();a.onload=function(){a.myHtml&&(FrameUtils.getDocument(a).getElementById("content").innerHTML+=a.myHtml,FrameUtils.scrollDown(a))}},insertIntoFrame:function(a,b){var c=this.getDocument(a).getElementById("content");null==c?(a.myHtml||(a.myHtml=""),a.myHtml+=b):c.innerHTML+=b},scrollDown:function(a){var b=this.getDocument(a).getElementById("bottom");if("opera"==myAgent)try{a.contentWindow.scrollTo(0,this.getDocument(a).getElementById("content").clientHeight)}catch(c){}b&&
b.scrollIntoView(!1)}};Ajax.ChatThreadUpdater=Class.create();
Class.inherit(Ajax.ChatThreadUpdater,Ajax.Base,{initialize:function(a){this.setOptions(a);this._options.onComplete=this.requestComplete.bind(this);this._options.onException=this.handleException.bind(this);this._options.onTimeout=this.handleTimeout.bind(this);this._options.timeout=5E3;this.updater={};this.frequency=this._options.frequency||2;this.lastupdate=0;this.focused=this.skipNextsound=this.cansend=!0;this.ownThread=null!=this._options.message;FrameUtils.initFrame(this._options.container);this._options.message&&
(this._options.message.onkeydown=this.handleKeyDown.bind(this),this._options.message.onfocus=function(){this.focused=!0}.bind(this),this._options.message.onblur=function(){this.focused=!1}.bind(this));this.update()},handleException:function(a,b){this.setStatus("offline, reconnecting");this.stopUpdate();this.timer=setTimeout(this.update.bind(this),1E3)},handleTimeout:function(a){this.setStatus("timeout, reconnecting");this.stopUpdate();this.timer=setTimeout(this.update.bind(this),1E3)},updateOptions:function(a){this._options.parameters=
"act="+a+"&thread="+(this._options.threadid||0)+"&token="+(this._options.token||0)+"&lastid="+(this._options.lastid||0);this._options.user&&(this._options.parameters+="&user=true");"refresh"==a&&(this._options.message&&""!=this._options.message.value)&&(this._options.parameters+="&typed=1")},enableInput:function(a){this._options.message&&(this._options.message.disabled=!a)},stopUpdate:function(){this.enableInput(!0);this.updater._options&&(this.updater._options.onComplete=void 0);clearTimeout(this.timer)},
update:function(){this.updateOptions("refresh");this.updater=new Ajax.Request(this._options.servl,this._options)},requestComplete:function(a){try{this.enableInput(!0);this.cansend=!0;var b=Ajax.getXml(a);b&&"thread"==b.tagName?this.updateContent(b):this.handleError(a,b,"refresh messages failed")}catch(c){}this.skipNextsound=!1;this.timer=setTimeout(this.update.bind(this),1E3*this.frequency)},postMessage:function(a){if(""!=a&&this.cansend){this.cansend=!1;this.stopUpdate();this.skipNextsound=!0;this.updateOptions("post");
var b={}.extend(this._options);b.parameters+="&message="+encodeURIComponent(a);b.onComplete=function(a){this.requestComplete(a);this._options.message&&(this._options.message.value="",this._options.message.focus())}.bind(this);"opera"!=myRealAgent&&this.enableInput(!1);this.updater=new Ajax.Request(this._options.servl,b)}},changeName:function(a){this.skipNextsound=!0;new Ajax.Request(this._options.servl,{parameters:"act=rename&thread="+(this._options.threadid||0)+"&token="+(this._options.token||0)+
"&name="+encodeURIComponent(a)})},onThreadClosed:function(a){var b=Ajax.getXml(a);b&&"closed"==b.tagName?setTimeout("window.close()",2E3):this.handleError(a,b,"cannot close")},closeThread:function(){var a="act=close&thread="+(this._options.threadid||0)+"&token="+(this._options.token||0);this._options.user&&(a+="&user=true");new Ajax.Request(this._options.servl,{parameters:a,onComplete:this.onThreadClosed.bind(this)})},processMessage:function(a,b){var c=NodeUtils.getNodeText(b);FrameUtils.insertIntoFrame(a,
c)},showTyping:function(a){$("typingdiv")&&($("typingdiv").style.display=a?"inline":"none")},setupAvatar:function(a){a=NodeUtils.getNodeText(a);this._options.avatar&&this._options.user&&(this._options.avatar.innerHTML=""!=a?'<img src="'+Chat.webimRoot+'/images/free.gif" width="7" height="1" border="0" alt="" /><img src="'+a+'" border="0" alt=""/>':"")},updateContent:function(a){var b=!1,c=this._options.container,d=NodeUtils.getAttrValue(a,"lastid");d&&(this._options.lastid=d);(d=NodeUtils.getAttrValue(a,
"typing"))&&this.showTyping("1"==d);(d=NodeUtils.getAttrValue(a,"canpost"))&&("1"==d&&!this.ownThread||this.ownThread&&"1"!=d)&&(window.location.href=window.location.href);for(d=0;d<a.childNodes.length;d++){var e=a.childNodes[d];"message"==e.tagName?(b=!0,this.processMessage(c,e)):"avatar"==e.tagName&&this.setupAvatar(e)}0<=window.location.search.indexOf("trace=on")?(a="updated",0<this.lastupdate&&(c=((new Date).getTime()-this.lastupdate)/1E3,a=a+", "+c+" secs",10<c&&alert(a)),this.lastupdate=(new Date).getTime(),
this.setStatus(a)):this.clearStatus();b&&(FrameUtils.scrollDown(this._options.container),this.skipNextsound||(b=$("soundimg"),(null==b||b.className.match(/\bisound\b/))&&playSound(Chat.webimRoot+"/sounds/new_message.wav")),this.focused||window.focus())},isSendkey:function(a,b){return 13==b&&(a||this._options.ignorectrl)||10==b},handleKeyDown:function(a){a?(ctrl=a.ctrlKey,a=a.which):(a=event.keyCode,ctrl=event.ctrlKey);return this._options.message&&this.isSendkey(ctrl,a)?(a=this._options.message.value,
this._options.ignorectrl&&(a=a.replace(/[\r\n]+$/,"")),this.postMessage(a),!1):!0},handleError:function(a,b,c){b&&"error"==b.tagName?this.setStatus(NodeUtils.getNodeValue(b,"descr")):this.setStatus("reconnecting")},showStatusDiv:function(a){$("engineinfo")&&($("engineinfo").style.display="inline",$("engineinfo").innerHTML=a)},setStatus:function(a){this.statusTimeout&&clearTimeout(this.statusTimeout);this.showStatusDiv(a);this.statusTimeout=setTimeout(this.clearStatus.bind(this),4E3)},clearStatus:function(){$("engineinfo").style.display=
"none"}});var Chat={threadUpdater:{},applyName:function(){Chat.threadUpdater.changeName($("uname").value);$("changename1").style.display="none";$("changename2").style.display="inline";$("unamelink").innerHTML=htmlescape($("uname").value)},showNameField:function(){$("changename1").style.display="inline";$("changename2").style.display="none"}};
Behaviour.register({"#postmessage a":function(a){a.onclick=function(){var a=$("msgwnd");a&&Chat.threadUpdater.postMessage(a.value)}},"select#predefined":function(a){a.onchange=function(){var a=$("msgwnd");0!=this.selectedIndex&&(a.value=this.options[this.selectedIndex].innerText||this.options[this.selectedIndex].innerHTML);this.selectedIndex=0;a.focus()}},"div#changename2 a":function(a){a.onclick=function(){Chat.showNameField();return!1}},"div#changename1 a":function(a){a.onclick=function(){Chat.applyName();
return!1}},"div#changename1 input#uname":function(a){a.onkeydown=function(a){13==(a||event).keyCode&&Chat.applyName()}},"a#refresh":function(a){a.onclick=function(){Chat.threadUpdater.stopUpdate();Chat.threadUpdater.update()}},"a#togglesound":function(a){a.onclick=function(){var a=$("soundimg");a&&(a.className.match(/\bisound\b/)?a.className="tplimage inosound":a.className="tplimage isound",(a=$("msgwnd"))&&a.focus())}},"a.closethread":function(a){a.onclick=function(){Chat.threadUpdater.closeThread()}}});
EventHelper.register(window,"onload",function(){Chat.webimRoot=threadParams.wroot;Chat.cssfile=threadParams.cssfile;Chat.threadUpdater=new Ajax.ChatThreadUpdater({ignorectrl:-1,container:"safari"==myRealAgent?self.frames[0]:$("chatwnd"),avatar:$("avatarwnd"),message:$("msgwnd")}.extend(threadParams||{}))});

View File

@ -0,0 +1,25 @@
/*
This file is part of Mibew Messenger project.
http://mibew.org
Copyright (c) 2005-2013 Mibew Messenger Community
License: http://mibew.org/license.php
*/
var Class={create:function(){return function(){this.initialize.apply(this,arguments)}},inherit:function(a,b,c){Object.extend(Object.extend(a.prototype,b.prototype),c)}};Object.extend=function(a,b){for(property in b)a[property]=b[property];return a};Object.prototype.extend=function(a){return Object.extend.apply(this,[this,a])};Function.prototype.bind=function(a){var b=this;return function(){return b.apply(a,arguments)}};
Function.prototype.bindAsEventListener=function(a){var b=this;return function(c){b.call(a,c||window.event)}};Number.prototype.toColorPart=function(){var a=this.toString(16);return 16>this?"0"+a:a};var Try={these:function(){for(var a,b=0;b<arguments.length;b++){var c=arguments[b];try{a=c();break}catch(d){}}return a}},PeriodicalExecuter=Class.create();
PeriodicalExecuter.prototype={initialize:function(a,b){this.callback=a;this.frequency=b;this.currentlyExecuting=!1;this.registerCallback()},registerCallback:function(){setInterval(this.onTimerEvent.bind(this),1E3*this.frequency)},onTimerEvent:function(){if(!this.currentlyExecuting)try{this.currentlyExecuting=!0,this.callback()}finally{this.currentlyExecuting=!1}}};
function findObj(a){var b;!(b=document[a])&&document.all&&(b=document.all[a]);!b&&document.getElementById&&(b=document.getElementById(a));if(!b&&!document.all&&document.getElementsByName){b=document.getElementsByName(a);if(0==b.length)return null;if(1==b.length)return b[0]}return b}Array.prototype.push||(Array.prototype.push=function(){for(var a=this.length,b=0;b<arguments.length;b++)this[a+b]=arguments[b];return this.length});
function $(){for(var a=[],b=0;b<arguments.length;b++){var c=arguments[b];"string"==typeof c&&(c=findObj(c));if(1==arguments.length)return c;a.push(c)}return a}
var Ajax={getTransport:function(){return Try.these(function(){return new ActiveXObject("Msxml2.XMLHTTP")},function(){return new ActiveXObject("Microsoft.XMLHTTP")},function(){return new XMLHttpRequest})||!1},getXml:function(a){return a&&200<=a.status&&300>a.status&&(a=a.responseXML)&&a.documentElement?a.documentElement:null},getError:function(a){return a.statusText||"connection error N"+a.status},emptyFunction:function(){},Base:function(){}};
Ajax.Base.prototype={setOptions:function(a){this._options={_method:"post",asynchronous:!0,parameters:""}.extend(a||{})},getStatus:function(){try{return this.transport.status||0}catch(a){return 0}},responseIsSuccess:function(){var a=this.getStatus();return!a||200<=a&&300>a},responseIsFailure:function(){return!this.responseIsSuccess()}};Ajax.Request=Class.create();Ajax.Request.Events=["Uninitialized","Loading","Loaded","Interactive","Complete"];
Class.inherit(Ajax.Request,Ajax.Base,{initialize:function(a,b){this.transport=Ajax.getTransport();this.setOptions(b);this.transportTimer={};this.finished=!1;this.request(a)},request:function(a){var b=this._options.parameters||"";0<b.length&&(b+="&_=");try{"get"==this._options._method&&0<b.length&&(a+="?"+b);this.transport.open(this._options._method.toUpperCase(),a,this._options.asynchronous);this._options.asynchronous&&(this.transport.onreadystatechange=this.onStateChange.bind(this),this._options.timeout&&
(this.transportTimer=setTimeout(this.handleTimeout.bind(this),this._options.timeout)));this.setRequestHeaders();var c=this._options.postBody?this._options.postBody:b;this.transport.send("post"==this._options._method?c:null)}catch(d){this.dispatchException(d)}},setRequestHeaders:function(){var a=["X-Requested-With","XMLHttpRequest"];"post"==this._options._method&&(a.push("Content-type","application/x-www-form-urlencoded"),this.transport.overrideMimeType&&2005>(navigator.userAgent.match("/Gecko/(d{4})/")||
[0,2005])[1]&&a.push("Connection","close"));this._options.requestHeaders&&a.push.apply(a,this._options.requestHeaders);for(var b=0;b<a.length;b+=2)this.transport.setRequestHeader(a[b],a[b+1])},onStateChange:function(){1!=this.transport.readyState&&this.respondToReadyState(this.transport.readyState)},handleTimeout:function(){this.finished||(this.finished=!0,(this._options.onTimeout||Ajax.emptyFunction)(this))},respondToReadyState:function(a){if("Complete"==Ajax.Request.Events[a]){try{this.finished||
(this.finished=!0,this._options.timeout&&clearTimeout(this.transportTimer),(this._options.onComplete||Ajax.emptyFunction)(this.transport))}catch(b){this.dispatchException(b)}this.transport.onreadystatechange=Ajax.emptyFunction}},dispatchException:function(a){(this._options.onException||Ajax.emptyFunction)(this,a)}});
var EventHelper={register:function(a,b,c){var d=a[b];a[b]="function"!=typeof d?c:function(){d();c()}}},Behaviour={list:[],register:function(a){Behaviour.list.push(a)},init:function(){EventHelper.register(window,"onload",function(){Behaviour.apply()})},apply:function(){for(h=0;sheet=Behaviour.list[h];h++)for(selector in sheet)if(list=document.getElementsBySelector(selector))for(i=0;element=list[i];i++)sheet[selector](element)}};Behaviour.init();
function getAllChildren(a){return a.all?a.all:a.getElementsByTagName("*")}
document.getElementsBySelector=function(a){if(!document.getElementsByTagName)return[];a=a.split(" ");for(var b=Array(document),c=0;c<a.length;c++)if(token=a[c].replace(/^\s+/,"").replace(/\s+$/,""),-1<token.indexOf("#")){var d=token.split("#"),e=d[0],b=document.getElementById(d[1]);if(null==b||e&&b.nodeName.toLowerCase()!=e)return[];b=Array(b)}else if(-1<token.indexOf(".")){d=token.split(".");e=d[0];d=d[1];e||(e="*");for(var m=[],l=0,p=0;p<b.length;p++){var f;f="*"==e?getAllChildren(b[p]):b[p].getElementsByTagName(e);
if(null!=f)for(var q=0;q<f.length;q++)m[l++]=f[q]}b=[];for(l=e=0;l<m.length;l++)m[l].className&&m[l].className.match(RegExp("\\b"+d+"\\b"))&&(b[e++]=m[l])}else{if(!b[0])return;e=token;m=[];for(p=l=0;p<b.length;p++)for(f=b[p].getElementsByTagName(e),q=0;q<f.length;q++)m[l++]=f[q];b=m}return b};
var NodeUtils={getNodeValue:function(a,b){var c=a.getElementsByTagName(b);if(0==c.length)return"";var c=c[0].childNodes,d="";for(i=0;i<c.length;i++)d+=c[i].nodeValue;return d},getNodeText:function(a){a=a.childNodes;var b="";for(i=0;i<a.length;i++)b+=a[i].nodeValue;return b},getAttrValue:function(a,b){for(k=0;k<a.attributes.length;k++)if(a.attributes[k].nodeName==b)return a.attributes[k].nodeValue;return null}},CommonUtils={getRow:function(a,b){var c=b.rows[a];if(null!=c)return c;if(null!=b.rows.head)return null;
for(k=0;k<b.rows.length;k++)if(b.rows[k].id==a)return b.rows[k];return null},getCell:function(a,b,c){var d=b.cells[a];if(null!=d)return d;if(null!=c.rows.head)return null;for(k=0;k<b.cells.length;k++)if(b.cells[k].id==a)return b.cells[k];return null},insertCell:function(a,b,c,d,e,m){a=a.insertCell(-1);a.id=b;d&&(a.align=d);a.className=c;e&&(a.height=e);a.innerHTML=m}};
function playSound(a){var b=document.createElement("div");-1!=navigator.userAgent.toLowerCase().indexOf("opera")&&(b.style="position: absolute; left: 0px; top: -200px;");document.body.appendChild(b);b.innerHTML='<audio autoplay src="'+a+'"><embed src="'+a+'" hidden="true" autostart="true" loop="false"></audio>'}function htmlescape(a){return a.replace("&","&amp;").replace("<","&lt;").replace(">","&gt;").replace('"',"&quot;")};

View File

@ -0,0 +1,27 @@
/*
This file is part of Mibew Messenger project.
http://mibew.org
Copyright (c) 2005-2013 Mibew Messenger Community
License: http://mibew.org/license.php
*/
Ajax.PeriodicalUpdater=Class.create();
Class.inherit(Ajax.PeriodicalUpdater,Ajax.Base,{initialize:function(a){this.setOptions(a);this._options.onComplete=this.requestComplete.bind(this);this._options.onException=this.handleException.bind(this);this._options.onTimeout=this.handleTimeout.bind(this);this._options.timeout=5E3;this.frequency=this._options.frequency||2;this.updater={};this.update()},handleException:function(a,b){this._options.handleError&&this._options.handleError("offline, reconnecting");this.stopUpdate();this.timer=setTimeout(this.update.bind(this),
1E3)},handleTimeout:function(a){this._options.handleError&&this._options.handleError("timeout, reconnecting");this.stopUpdate();this.timer=setTimeout(this.update.bind(this),1E3)},stopUpdate:function(){this.updater._options&&(this.updater._options.onComplete=void 0);clearTimeout(this.timer)},update:function(){this._options.updateParams&&(this._options.parameters=this._options.updateParams());this.updater=new Ajax.Request(this._options.url,this._options)},requestComplete:function(a){try{var b=Ajax.getXml(a);
b?(this._options.updateContent||Ajax.emptyFunction)(b):this._options.handleError&&this._options.handleError("reconnecting")}catch(c){}this.timer=setTimeout(this.update.bind(this),1E3*this.frequency)}});
var HtmlGenerationUtils={popupLink:function(a,b,c,d,e,m,l){return'<a href="'+a+'"'+(null!=l?' class="'+l+'"':"")+' target="_blank" title="'+b+'" onclick="this.newWindow = window.open(\''+a+"', '"+c+"', 'toolbar=0,scrollbars=0,location=0,status=1,menubar=0,width="+e+",height="+m+",resizable=1');this.newWindow.focus();this.newWindow.opener=window;return false;\">"+d+"</a>"},generateOneRowTable:function(a){return'<table class="inner"><tr>'+a+"</tr></table>"},viewOpenCell:function(a,b,c,d,e,m,l,p){m=
2;b=b+"?thread="+c;var f="<td>",f=e||d?f+HtmlGenerationUtils.popupLink(p||!d?b:b+"&viewonly=true",localized[e?0:1],"ImCenter"+c,a,640,480,null):f+('<a href="#">'+a+"</a>"),f=f+"</td>";e&&(f=f+'<td class="icon">'+HtmlGenerationUtils.popupLink(b,localized[0],"ImCenter"+c,'<img src="'+webimRoot+'/images/tbliclspeak.gif" width="15" height="15" border="0" alt="'+localized[0]+'">',640,480,null),f+="</td>",m++);d&&(f+='<td class="icon">',f+=HtmlGenerationUtils.popupLink(b+"&viewonly=true",localized[1],"ImCenter"+
c,'<img src="'+webimRoot+'/images/tbliclread.gif" width="15" height="15" border="0" alt="'+localized[1]+'">',640,480,null),f+="</td>",m++);""!=l&&(f+='</tr><tr><td class="firstmessage" colspan="'+m+'"><a href="javascript:void(0)" title="'+l+'" onclick="alert(this.title);return false;">',f+=30<l.length?l.substring(0,30)+"...":l,f+="</a></td>");return HtmlGenerationUtils.generateOneRowTable(f)},banCell:function(a,b){return'<td class="icon">'+HtmlGenerationUtils.popupLink(webimRoot+"/operator/ban.php?"+
(b?"id="+b:"thread="+a),localized[2],"ban"+a,'<img src="'+webimRoot+'/images/ban.gif" width="15" height="15" border="0" alt="'+localized[2]+'">',720,480,null)+"</td>"}};Ajax.ThreadListUpdater=Class.create();
Class.inherit(Ajax.ThreadListUpdater,Ajax.Base,{initialize:function(a){this.setOptions(a);this._options.updateParams=this.updateParams.bind(this);this._options.handleError=this.handleError.bind(this);this._options.updateContent=this.updateContent.bind(this);this._options.lastrevision=0;this.threadTimers={};this.delta=0;this.t=this._options.table;this.periodicalUpdater=new Ajax.PeriodicalUpdater(this._options)},updateParams:function(){return"since="+this._options.lastrevision+"&status="+this._options.istatus+
(this._options.showonline?"&showonline=1":"")},setStatus:function(a){this._options.status.innerHTML=a},handleError:function(a){this.setStatus(a)},updateThread:function(a){function b(a,b,c,d){if(a=CommonUtils.getCell(c,b,a))a.innerHTML=d}for(var c,d,e,m=!1,l=!1,p=!1,f=null,q=null,g=0;g<a.attributes.length;g++){var n=a.attributes[g];"id"==n.nodeName?c=n.nodeValue:"stateid"==n.nodeName?d=n.nodeValue:"state"==n.nodeName?e=n.nodeValue:"canopen"==n.nodeName?l=!0:"canview"==n.nodeName?m=!0:"canban"==n.nodeName?
p=!0:"ban"==n.nodeName?f=n.nodeValue:"banid"==n.nodeName&&(q=n.nodeValue)}g=CommonUtils.getRow("thr"+c,this.t);if("closed"==d)g&&this.t.deleteRow(g.rowIndex),this.threadTimers[c]=null;else{var n=NodeUtils.getNodeValue(a,"name"),u=NodeUtils.getNodeValue(a,"addr"),s=NodeUtils.getNodeValue(a,"time"),v=NodeUtils.getNodeValue(a,"agent"),t=NodeUtils.getNodeValue(a,"modified"),w=NodeUtils.getNodeValue(a,"message"),r="<td>"+NodeUtils.getNodeValue(a,"useragent")+"</td>";null!=f&&(r="<td>"+NodeUtils.getNodeValue(a,
"reason")+"</td>");p&&(r+=HtmlGenerationUtils.banCell(c,q));r=HtmlGenerationUtils.generateOneRowTable(r);a=CommonUtils.getRow("t"+d,this.t);p=CommonUtils.getRow("t"+d+"end",this.t);null!=g&&(g.rowIndex<=a.rowIndex||g.rowIndex>=p.rowIndex)&&(this.t.deleteRow(g.rowIndex),g=this.threadTimers[c]=null);if(null==g){if(g=this.t.insertRow(a.rowIndex+1),g.className="blocked"==f&&"chat"!=d?"ban":"in"+d,g.id="thr"+c,this.threadTimers[c]=[s,t,d],CommonUtils.insertCell(g,"name","visitor",null,null,HtmlGenerationUtils.viewOpenCell(n,
this._options.agentservl,c,m,l,f,w,"chat"!=d)),CommonUtils.insertCell(g,"contid","visitor","center",null,u),CommonUtils.insertCell(g,"state","visitor","center",null,e),CommonUtils.insertCell(g,"op","visitor","center",null,v),CommonUtils.insertCell(g,"time","visitor","center",null,this.getTimeSince(s)),CommonUtils.insertCell(g,"wait","visitor","center",null,"chat"!=d?this.getTimeSince(t):"-"),CommonUtils.insertCell(g,"etc","visitor","center",null,r),"wait"==d||"prio"==d)return!0}else this.threadTimers[c]=
[s,t,d],g.className="blocked"==f&&"chat"!=d?"ban":"in"+d,b(this.t,g,"name",HtmlGenerationUtils.viewOpenCell(n,this._options.agentservl,c,m,l,f,w,"chat"!=d)),b(this.t,g,"contid",u),b(this.t,g,"state",e),b(this.t,g,"op",v),b(this.t,g,"time",this.getTimeSince(s)),b(this.t,g,"wait","chat"!=d?this.getTimeSince(t):"-"),b(this.t,g,"etc",r);return!1}},updateQueueMessages:function(){function a(a,b){var c=$(b),l=$(b+"end");return null==c||null==l?!1:c.rowIndex+1<l.rowIndex}var b=$("statustd");if(b){var c=a(this.t,
"twait")||a(this.t,"tprio")||a(this.t,"tchat");b.innerHTML=c?"":this._options.noclients;b.height=c?5:30}},getTimeSince:function(a){a=Math.floor(((new Date).getTime()-a-this.delta)/1E3);var b=Math.floor(a/60),c="";a%=60;10>a&&(a="0"+a);60<=b&&(c=Math.floor(b/60),b%=60,10>b&&(b="0"+b),c+=":");return c+b+":"+a},updateTimers:function(){for(var a in this.threadTimers)if(null!=this.threadTimers[a]){var b=this.threadTimers[a],c=CommonUtils.getRow("thr"+a,this.t);if(null!=c){var d=this.getTimeSince(b[0]),
e=CommonUtils.getCell("time",c,this.t);e&&(e.innerHTML=d);b="chat"!=b[2]?this.getTimeSince(b[1]):"-";if(c=CommonUtils.getCell("wait",c,this.t))c.innerHTML=b}}},updateThreads:function(a){var b=!1,c=NodeUtils.getAttrValue(a,"time"),d=NodeUtils.getAttrValue(a,"revision");c&&(this.delta=(new Date).getTime()-c);d&&(this._options.lastrevision=d);for(c=0;c<a.childNodes.length;c++)d=a.childNodes[c],"thread"==d.tagName&&this.updateThread(d)&&(b=!0);this.updateQueueMessages();this.updateTimers();this.setStatus(this._options.istatus?
"Away":"Up to date");b&&(playSound(webimRoot+"/sounds/new_user.wav"),window.focus(),updaterOptions.showpopup&&alert(localized[5]))},updateOperators:function(a){var b=$("onlineoperators");if(b){for(var c=[],d=0;d<a.childNodes.length;d++){var e=a.childNodes[d];if("operator"==e.tagName){var m=NodeUtils.getAttrValue(e,"name"),e=null!=NodeUtils.getAttrValue(e,"away");c[c.length]='<img src="'+webimRoot+"/images/op"+(e?"away":"online")+'.gif" width="12" height="12" border="0" alt="'+localized[1]+'"> '+m}}b.innerHTML=
c.join(", ")}},updateContent:function(a){if("update"==a.tagName)for(var b=0;b<a.childNodes.length;b++){var c=a.childNodes[b];"threads"==c.tagName?this.updateThreads(c):"operators"==c.tagName&&this.updateOperators(c)}else"error"==a.tagName?this.setStatus(NodeUtils.getNodeValue(a,"descr")):this.setStatus("reconnecting")}});
function togglemenu(){$("sidebar")&&($("wcontent")&&$("togglemenu"))&&("contentnomenu"==$("wcontent").className?($("sidebar").style.display="block",$("wcontent").className="contentinner",$("togglemenu").innerHTML=localized[4]):($("sidebar").style.display="none",$("wcontent").className="contentnomenu",$("togglemenu").innerHTML=localized[3]))}var webimRoot="";Behaviour.register({"#togglemenu":function(a){a.onclick=function(){togglemenu()}}});
EventHelper.register(window,"onload",function(){webimRoot=updaterOptions.wroot;new Ajax.ThreadListUpdater({table:$("threadlist"),status:$("connstatus"),istatus:0}.extend(updaterOptions||{}));updaterOptions.havemenu||togglemenu()});

View File

@ -2,7 +2,7 @@
<project basedir="." default="update" name="Obfuscator">
<property name="closure.c" value="/usr/local/closure/compiler.jar" />
<property name="webim.location" value="../164" />
<property name="webim.location" value="../165" />
<target name="update">
<java jar="${closure.c}" fork="true">

View File

@ -2,7 +2,7 @@
* @preserve This file is part of Mibew Messenger project.
* http://mibew.org
*
* Copyright (c) 2005-2011 Mibew Messenger Community
* Copyright (c) 2005-2013 Mibew Messenger Community
* License: http://mibew.org/license.php
*/

View File

@ -2,7 +2,7 @@
* @preserve This file is part of Mibew Messenger project.
* http://mibew.org
*
* Copyright (c) 2005-2011 Mibew Messenger Community
* Copyright (c) 2005-2013 Mibew Messenger Community
* License: http://mibew.org/license.php
*/

View File

@ -2,7 +2,7 @@
* @preserve This file is part of Mibew Messenger project.
* http://mibew.org
*
* Copyright (c) 2005-2011 Mibew Messenger Community
* Copyright (c) 2005-2013 Mibew Messenger Community
* License: http://mibew.org/license.php
*/

View File

@ -702,6 +702,34 @@ function check_for_reassign($thread, $operator)
}
}
function notify_operators($thread, $firstmessage, $link)
{
global $settings, $mysqlprefix;
if ($settings['enablejabber'] == 1) {
$groupid = $thread['groupid'];
$query = "select ${mysqlprefix}chatoperator.operatorid as opid, inotify, vcjabbername, vcemail, (unix_timestamp(CURRENT_TIMESTAMP)-unix_timestamp(dtmlastvisited)) as time from ${mysqlprefix}chatoperator";
if ($groupid) {
$query .= ", ${mysqlprefix}chatgroupoperator where groupid = $groupid and ${mysqlprefix}chatoperator.operatorid = ${mysqlprefix}chatgroupoperator.operatorid and istatus = 0";
} else {
$query .= " where istatus = 0";
}
$query .= " and inotify = 1";
$result = select_multi_assoc($query, $link);
$text = getstring2_("notify.new.text", array(
get_app_location(true, $settings['enablessl'] == '1' && $settings['forcessl'] == '1') . "/operator/agent.php?thread=" . $thread['threadid'],
$thread['userName']
), $thread['locale']);
if ($firstmessage) {
$text .= "\n$firstmessage";
}
foreach ($result as $op) {
if ($op['time'] < $settings['online_timeout'] && is_valid_email($op['vcjabbername'])) {
webim_xmpp($op['vcjabbername'], getstring2("notify.new.subject", array($thread['userName'])), $text, $link);
}
}
}
}
function check_connections_from_remote($remote, $link)
{
global $settings, $state_closed, $state_left, $mysqlprefix;

View File

@ -595,8 +595,8 @@ function date_to_text($unixtime)
return strftime($date_format . " " . getlocal("time.timeformat"), $unixtime);
}
$dbversion = '1.6.3';
$featuresversion = '1.6.4';
$dbversion = '1.6.5';
$featuresversion = '1.6.5';
$settings = array(
'dbversion' => 0,
@ -623,6 +623,7 @@ $settings = array(
'usercanchangename' => '1',
'enablegroups' => '0',
'enablestatistics' => '1',
'enablejabber' => '0',
'enablepresurvey' => '1',
'surveyaskmail' => '0',
'surveyaskgroup' => '1',

View File

@ -15,6 +15,16 @@
* limitations under the License.
*/
function setup_getcode_tabs($active)
{
global $page, $webimroot;
$page['tabselected'] = $active;
$page['tabs'] = array(
array('title' => getlocal("page_getcode.tab.image"), 'link' => "$webimroot/operator/getcode.php"),
array('title' => getlocal("page_getcode.tab.text"), 'link' => "$webimroot/operator/gettextcode.php"),
);
}
function generate_button($title, $locale, $style, $group, $inner, $showhost, $forcesecure, $modsecurity)
{
$link = get_app_location($showhost, $forcesecure) . "/client.php";

View File

@ -38,9 +38,10 @@ function setup_group_settings_tabs($gid, $active)
{
global $page, $webimroot, $settings;
if ($gid) {
$page['tabselected'] = $active;
$page['tabs'] = array(
getlocal("page_group.tab.main") => $active != 0 ? "$webimroot/operator/group.php?gid=$gid" : "",
getlocal("page_group.tab.members") => $active != 1 ? "$webimroot/operator/groupmembers.php?gid=$gid" : "",
array('title' => getlocal("page_group.tab.main"), 'link' => "$webimroot/operator/group.php?gid=$gid"),
array('title' => getlocal("page_group.tab.members"), 'link' => "$webimroot/operator/groupmembers.php?gid=$gid"),
);
} else {
$page['tabs'] = array();

View File

@ -15,6 +15,22 @@
* limitations under the License.
*/
function log_notification($locale, $kind, $to, $subj, $text, $refop, $link)
{
global $mysqlprefix;
$query = sprintf(
"insert into ${mysqlprefix}chatnotification (locale,vckind,vcto,vcsubject,tmessage,refoperator,dtmcreated) values ('%s','%s','%s','%s','%s',%s,%s)",
$locale,
$kind,
mysql_real_escape_string($to, $link),
mysql_real_escape_string($subj, $link),
mysql_real_escape_string($text, $link),
$refop ? $refop : "0",
"CURRENT_TIMESTAMP");
perform_query($query, $link);
}
function webim_mail($toaddr, $reply_to, $subject, $body, $link)
{
global $webim_encoding, $webim_mailbox, $mail_encoding, $current_locale;
@ -28,7 +44,14 @@ function webim_mail($toaddr, $reply_to, $subject, $body, $link)
$body = preg_replace("/\n/", "\r\n", $body);
log_notification($current_locale, "mail", $toaddr, $subject, $body, null, $link);
@mail($toaddr, $real_subject, wordwrap(myiconv($webim_encoding, $mail_encoding, $body), 70), $headers);
}
function webim_xmpp($toaddr, $subject, $text, $link)
{
global $current_locale;
log_notification($current_locale, "xmpp", $toaddr, $subject, $text, null, $link);
}
?>

View File

@ -94,20 +94,21 @@ function operator_is_away($operator)
return $operator['istatus'] != 0 && $operator['time'] < $settings['online_timeout'] ? "1" : "";
}
function update_operator($operatorid, $login, $email, $password, $localename, $commonname)
function update_operator($operatorid, $login, $email, $jabber, $password, $localename, $commonname, $notify)
{
global $mysqlprefix;
$link = connect();
$query = sprintf(
"update ${mysqlprefix}chatoperator set vclogin = '%s',%s vclocalename = '%s', vccommonname = '%s'" .
", vcemail = '%s', vcjabbername= '%s'" .
", vcemail = '%s', vcjabbername= '%s', inotify = %s" .
" where operatorid = %s",
mysql_real_escape_string($login),
($password ? " vcpassword='" . md5($password) . "'," : ""),
mysql_real_escape_string($localename),
mysql_real_escape_string($commonname),
mysql_real_escape_string($email),
'',
mysql_real_escape_string($jabber),
$notify,
$operatorid);
perform_query($query, $link);
@ -126,17 +127,19 @@ function update_operator_avatar($operatorid, $avatar)
mysql_close($link);
}
function create_operator_($login, $email, $password, $localename, $commonname, $avatar, $link)
function create_operator_($login, $email, $jabber, $password, $localename, $commonname, $notify, $avatar, $link)
{
global $mysqlprefix;
$query = sprintf(
"insert into ${mysqlprefix}chatoperator (vclogin,vcpassword,vclocalename,vccommonname,vcavatar,vcemail,vcjabbername) values ('%s','%s','%s','%s','%s','%s','%s')",
"insert into ${mysqlprefix}chatoperator (vclogin,vcpassword,vclocalename,vccommonname,vcavatar,vcemail,vcjabbername,inotify) values ('%s','%s','%s','%s','%s','%s','%s',%s)",
mysql_real_escape_string($login),
md5($password),
mysql_real_escape_string($localename),
mysql_real_escape_string($commonname),
mysql_real_escape_string($avatar),
mysql_real_escape_string($email), '');
mysql_real_escape_string($email),
mysql_real_escape_string($jabber),
$notify);
perform_query($query, $link);
$id = mysql_insert_id($link);
@ -144,10 +147,10 @@ function create_operator_($login, $email, $password, $localename, $commonname, $
return select_one_row("select * from ${mysqlprefix}chatoperator where operatorid = $id", $link);
}
function create_operator($login, $email, $password, $localename, $commonname, $avatar)
function create_operator($login, $email, $jabber, $password, $localename, $commonname, $notify, $avatar)
{
$link = connect();
$newop = create_operator_($login, $email, $password, $localename, $commonname, $avatar, $link);
$newop = create_operator_($login, $email, $jabber, $password, $localename, $commonname, $notify, $avatar, $link);
mysql_close($link);
return $newop;
}

View File

@ -21,19 +21,21 @@ function setup_operator_settings_tabs($opId, $active)
loadsettings();
if ($opId) {
$page['tabselected'] = $active;
if ($settings['enablegroups'] == '1') {
$page['tabs'] = array(
getlocal("page_agent.tab.main") => $active != 0 ? "$webimroot/operator/operator.php?op=$opId" : "",
getlocal("page_agent.tab.avatar") => $active != 1 ? "$webimroot/operator/avatar.php?op=$opId" : "",
getlocal("page_agent.tab.groups") => $active != 2 ? "$webimroot/operator/opgroups.php?op=$opId" : "",
getlocal("page_agent.tab.permissions") => $active != 3 ? "$webimroot/operator/permissions.php?op=$opId" : ""
array('title' => getlocal("page_agent.tab.main"), 'link' => "$webimroot/operator/operator.php?op=$opId"),
array('title' => getlocal("page_agent.tab.avatar"), 'link' => "$webimroot/operator/avatar.php?op=$opId"),
array('title' => getlocal("page_agent.tab.groups"), 'link' => "$webimroot/operator/opgroups.php?op=$opId"),
array('title' => getlocal("page_agent.tab.permissions"), 'link' => "$webimroot/operator/permissions.php?op=$opId"),
);
} else {
$page['tabs'] = array(
getlocal("page_agent.tab.main") => $active != 0 ? "$webimroot/operator/operator.php?op=$opId" : "",
getlocal("page_agent.tab.avatar") => $active != 1 ? "$webimroot/operator/avatar.php?op=$opId" : "",
getlocal("page_agent.tab.permissions") => $active != 3 ? "$webimroot/operator/permissions.php?op=$opId" : ""
array('title' => getlocal("page_agent.tab.main"), 'link' => "$webimroot/operator/operator.php?op=$opId"),
array('title' => getlocal("page_agent.tab.avatar"), 'link' => "$webimroot/operator/avatar.php?op=$opId"),
array('title' => getlocal("page_agent.tab.permissions"), 'link' => "$webimroot/operator/permissions.php?op=$opId"),
);
if ($active == 3) $active--;
}
} else {
$page['tabs'] = array();

View File

@ -33,11 +33,12 @@ function update_settings()
function setup_settings_tabs($active)
{
global $page, $webimroot;
$page['tabselected'] = $active;
$page['tabs'] = array(
getlocal("page_settings.tab.main") => $active != 0 ? "$webimroot/operator/settings.php" : "",
getlocal("page_settings.tab.features") => $active != 1 ? "$webimroot/operator/features.php" : "",
getlocal("page_settings.tab.performance") => $active != 2 ? "$webimroot/operator/performance.php" : "",
getlocal("page_settings.tab.themes") => $active != 3 ? "$webimroot/operator/themes.php" : "",
array('title' => getlocal("page_settings.tab.main"), 'link' => "$webimroot/operator/settings.php"),
array('title' => getlocal("page_settings.tab.features"), 'link' => "$webimroot/operator/features.php"),
array('title' => getlocal("page_settings.tab.performance"), 'link' => "$webimroot/operator/performance.php"),
array('title' => getlocal("page_settings.tab.themes"), 'link' => "$webimroot/operator/themes.php"),
);
}

0
src/messenger/webim/locales/ca/button/webim_off.gif Normal file → Executable file
View File

Before

Width:  |  Height:  |  Size: 4.7 KiB

After

Width:  |  Height:  |  Size: 4.7 KiB

0
src/messenger/webim/locales/ca/button/webim_on.gif Normal file → Executable file
View File

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 14 KiB

0
src/messenger/webim/locales/ca/images/history.gif Normal file → Executable file
View File

Before

Width:  |  Height:  |  Size: 231 B

After

Width:  |  Height:  |  Size: 231 B

0
src/messenger/webim/locales/ca/images/login.gif Normal file → Executable file
View File

Before

Width:  |  Height:  |  Size: 2.4 KiB

After

Width:  |  Height:  |  Size: 2.4 KiB

0
src/messenger/webim/locales/ca/images/message.gif Normal file → Executable file
View File

Before

Width:  |  Height:  |  Size: 255 B

After

Width:  |  Height:  |  Size: 255 B

0
src/messenger/webim/locales/ca/images/save.gif Normal file → Executable file
View File

Before

Width:  |  Height:  |  Size: 2.4 KiB

After

Width:  |  Height:  |  Size: 2.4 KiB

0
src/messenger/webim/locales/ca/images/search.gif Normal file → Executable file
View File

Before

Width:  |  Height:  |  Size: 2.5 KiB

After

Width:  |  Height:  |  Size: 2.5 KiB

0
src/messenger/webim/locales/ca/images/wmchat.png Normal file → Executable file
View File

Before

Width:  |  Height:  |  Size: 371 B

After

Width:  |  Height:  |  Size: 371 B

0
src/messenger/webim/locales/ca/properties Normal file → Executable file
View File

View File

@ -3,19 +3,42 @@ output_charset=utf-8
output_encoding=utf-8
admin.content.client_agents=Opret, slet firma operatører. Håndter deres rettigheder.
admin.content.client_gen_button=HTML code generator knap.
admin.content.description=Tilladte funktioner for administratorer.
agent.not_logged_in=Din session er udløbet. Venligst login igen
app.descr=Mibew Messenger er et open-source live support program.
app.title=Mibew Messenger
ban.error.duplicate=Adressen er allerede i brug, klik <a href="ban.php?id={1}">her</a> for at ændre det.
button.delete=Slet
button.enter=Enter
button.offline.bottom=Læg din besked
button.offline.top=Side konsulent
button.offline=OFFLINE
button.online.bottom=Hvad vil du spørge os om
button.online.top=Supporter
button.online=ONLINE
canned.descr=Rediger de spørgsmål du typisk bruger i chatten
canned.locale=Sprog
button.save=Gem
button.search=Søg
canned.actions.del=fjern
canned.actions.edit=rediger
canned.actions=Ændre
canned.add=Tilføj besked...
canned.descr=Rediger de spørgsmål du oftest anvender i chatten.
canned.group=Grupper:
canned.locale=Sprog:
canned.title=Pre-definerede beskeder
cannededit.descr=Rediger en eksisterende besked.
cannededit.done=Gemt
cannededit.message=Besked
cannededit.no_such=Der er ingen besked der matcher
cannededit.title=Rediger besked
cannednew.descr=Tilføj ny besked.
cannednew.title=Ny besked
char.redirect.operator.away_suff=(ikke tilstede)
char.redirect.operator.online_suff=Online
chat.came.from=Besøgende kom fra side {0}
chat.came.from=Besøgende kom fra følgende side {0}
chat.client.changename=Skift navn
chat.client.name=Du er
chat.client.spam.prefix=[spam]&nbsp;
chat.client.visited.page=Besøgende navigerede til {0}
chat.default.username=Besøgende
chat.error_page.close=Luk...
@ -26,19 +49,35 @@ chat.mailthread.sent.closewindow=Klik på dette link for at lukke vinduet
chat.mailthread.sent.content=Din chat-historik er sendt til {0}
chat.mailthread.sent.title=Sendt
chat.predefined_answers=Hejsa - kan jeg hjælpe med noget?\nVelkommen til vores support! Kan jeg hjælpe med noget?
chat.redirect.back=Tilbage...
chat.redirect.cannot=Du chatter nu med besøgende.
chat.redirect.choose=Vælg:
chat.redirect.group=Gruppe:
chat.redirect.operator=Supporter:
chat.redirect.title=Videresend til<br/>en anden supporter
chat.redirected.close=Luk...
chat.redirected.closewindow=Tryk for at lukke vinduet
chat.redirected.content=Den besøgende blev sat i prioriteret kø af supporter {0}.
chat.redirected.group.content=Den besøgende blev sat i prioriteret kø for gruppe {0}.
chat.redirected.title=Den besøgende blev videresendt til en anden supporter
chat.status.operator.changed=Operatøren {0} skiftede operatør {1}
chat.status.operator.dead=Operatøren har problemer med at forbinde og vi har midlertidigt anbragt dig forest i køen. Beklager ventetiden.
chat.status.operator.joined=Operatøren {0} er kommet ind i chatten
chat.status.operator.left=Operatøren {0} har forladt chatten
chat.status.operator.redirect=Supporten har videresendt til til en anden supporter. Vent venligst
chat.status.operator.returned=Operatøren {0} er tilbage
chat.status.user.changedname=Besøgende har ændret sit navn fra {0} til {1}
chat.status.user.dead=Besøgende har lukket chat vinduet
chat.status.user.left=Besøgende {0} har forladt chatten
chat.status.user.reopenedthread=Besøgende er kommet tilbage til chatten igen
chat.thread.state_chatting_with_agent=Chatter
chat.thread.state_closed=Lukkede
chat.thread.state_loading=Loader
chat.thread.state_wait=I kø
chat.thread.state_wait_for_another_agent=Venter på en supporter
chat.visitor.email=E-mail: {0}
chat.visitor.info=Info: {0}
chat.wait=Tak for at du kontakter os. En operatør vil være klar om et øjeblik...
chat.wait=Tak for at du kontakter os. En supporter vil være klar om et øjeblik...
chat.window.chatting_with=Du chatter med:
chat.window.close_title=Luk chatten
chat.window.poweredby=Kører på:
@ -50,20 +89,93 @@ chat.window.send_message_short=Send ({0})
chat.window.title.agent=Mibew Messenger
chat.window.title.user=Mibew Messenger
chat.window.toolbar.mail_history=Send chat historik via e-mail
chat.window.toolbar.redirect_user=Videresend den besøgende til en anden operatør
chat.window.toolbar.redirect_user=Videresend den besøgende til en anden supporter
chat.window.toolbar.refresh=Opdater
clients.how_to=Tryk på den besøgendes navn for at svare.
clients.intro=Denne side viser en liste over ventende besøgende.
clients.no_clients=Der er ingen i kø
clients.queue.prio=Prioritér kø
clients.queue.wait=Venter på en supporter for første gang
clients.title=Liste over besøgende der venter
common.asterisk_explanation=<b><span style='font-size:8.0pt;color:red'>*</span></b> - påkrævede felter
company.title=Mibew Messenger Community
confirm.take.head=Vælg ny supporter
confirm.take.message=Besøgende <span style="color:blue;">{0}</span> bliver allerede hjulpet af <span style="color:green;">{1}</span>.<br/> Er du sikker på, at du vil igangsætte endnu en chat session?
confirm.take.no=Nej, luk vinduet
confirm.take.yes=Ja, jeg er sikker
content.history=Søg i tidligere dialoger
content.logoff=Log ud af systemet
data.saved=Ændringerne er gemt
demo.chat.question=Der er så mange browsere at vælge imellem. Hvilke anbefaler du?
demo.chat.welcome=Hej. Hvad kan jeg hjælpe med?
errors.captcha=De indtastede bogstaver stemmer ikke overens med dem i billedet.
errors.failed.uploading.file=Der skete en fejl ved upload af "{0}": {1}.
errors.file.move.error=Der skete en fejl under flytning af fil
errors.file.size.exceeded=Den uploadede fil er for stor
errors.footer=</ul>
errors.header=<b>Ret venligst følgende fejl:</b><br/><ul>
errors.invalid.file.type=Ukendt filtype
errors.required=Udfyld venligst "{0}".
errors.suffix=</li>
errors.wrong_field=Udfyld venligst "{0}" korrekt.
features.saved=Funktioner aktiveret
form.field.address.description=Fx: 12.23.45.123 eller todo.com
form.field.address=Besøgendes adresse
form.field.agent_commonname.description=Navnet er synligt for besøgende.
form.field.agent_commonname=Internationalt navn (Latin)
form.field.agent_name.description=Navnet er synligt for besøgende.
form.field.agent_name=Navn
form.field.avatar.current.description=Dit billede
form.field.avatar.current=Nuværende billede
form.field.avatar.upload.description=Vælg venligst et billede til upload. <br/> Billedet må ikke overstige 100x100 px.
form.field.avatar.upload=Upload billede
form.field.ban_comment=Kommentér
form.field.ban_days.description=Antal dage denne adresse er blokeret
form.field.ban_days=Dage
form.field.email=Din e-mail
form.field.groupcommondesc.description=Beskrivelse på dansk
form.field.groupcommondesc=International beskrivelse
form.field.groupcommonname.description=Engelsk navn.
form.field.groupcommonname=International navn
form.field.groupdesc.description=Beskrivelse af gruppe.
form.field.groupdesc=Beskrivelse
form.field.groupemail.description=Gruppe email for notifikationer. Ved tomt felt bruges standard adressen.
form.field.groupname.description=Navn til at identificere gruppen.
form.field.groupname=Navn
form.field.login.description=Login kan bestå af små bogstaver og understreger.
form.field.login=Login
form.field.mail.description=Til notifikationer og generhvervelse af adgangskoder.
form.field.mail=Email
form.field.message=Besked
form.field.name=Dit navn
form.field.password.description=Indtast en ny adgangskode eller lad feltet forblive tomt for at beholde forrige kode.
form.field.password=Adgangskode
form.field.password_confirm.description=Bekræft adgangskode.
form.field.password_confirm=Bekræftelse
form.field.translation=Oversættelse
harderrors.header=<b>Kan ikke eksekvere:</b><br/><ul>
image.button.login=/locales/da/images/login.gif
image.button.save=locales/da/images/save.gif
image.button.search=locales/da/images/search.gif
image.chat.history=/locales/da/images/history.gif
image.chat.message=/locales/da/images/message.gif
image.chat.sprite=/locales/da/images/wmchat.png
install.0.app=Applikationssti er {0}
install.0.package=Mibew pakke er gyldig.
install.2.create=Opret database "{0}"
install.2.db_exists=Database "{0}" er oprettet.
install.2.notice=Databasen blev ikke fundet på serveren. Hvis du har tilladelse til at oprette databasen, så skal du klikke på følgende link.
install.3.create=Opret nødvendige tabeller.
install.3.tables_exist=Nødvendige tabeller er oprettet.
install.4.create=Opdater tabeller
install.4.done=Tabelstrukturen er up to date.
install.4.notice=Tabelstrukturen bør justeres til ny version af Messenger.
install.5.newmessage=Ny besked
install.5.newvisitor=Ny besøgende
install.5.text=Klik for at tjekke lyden: {0} og {1}
install.bad_checksum=Checksum er forskellig for {0}
install.cannot_read=Kan ikke læse filen {0}
lang.choose=Vælg sprog
leavemail.body=Du har en besked fra {0}:\n\n{2}\n\nHans/hendes e-mail: {1}\n{3}
leavemail.subject=Spørgsmål fra {0}
leavemessage.close=Luk
@ -72,6 +184,9 @@ leavemessage.perform=Indsend
leavemessage.sent.message=Tak for at anvende vores service. Vi vil besvare din mail så hurtigt som muligt.
leavemessage.sent.title=Din besked er sendt
leavemessage.title=Angiv din besked
leftMenu.client_agents=Supportere
leftMenu.client_gen_button=Knap-kode
leftMenu.client_settings=Indstillinger
license.title=Licens
localedirection=ltr
localeid=Danish (da)
@ -81,10 +196,30 @@ mailthread.close=Luk...
mailthread.enter_email=Indtast din e-mail:
mailthread.perform=Send
mailthread.title=Send chat historik<br/>via e-mail
menu.agents=Supporterliste
menu.blocked=Blokerede besøgende
menu.canned=Pre-definerede beskeder
menu.goonline=Du er OFFLINE.<br/><a href="{0}">Forbind..</a>
menu.groups=Grupper
menu.locale=Sprog
menu.operator=Du er {0}
menu.profile=Profil
menu.translate=Lokalisér
menu.updates.content=Tjek for nyheder og opdateringer.
menu.updates=Opdateringer
page.chat.old_browser.close=Luk...
page.chat.old_browser.list=<ul>\n<li>Internet Explorer 5.5+</li>\n<li>Fireforx 1.0+</li>\n<li>Opera 8.0+</li>\n<li>Mozilla 1.4+</li>\n<li>Netscape 7.1+</li>\n<li>Safari 1.2+</li>\n</ul>\n<p>Vi understøtter også nogle ældre browsers:</p>\n<ul>\n<li>Internet Explorer 5.0</li>\n<li>Opera 7.0</li>\n</ul>
page.chat.old_browser.problem=<p>Din browser er ikke fuldt ud kompatibel med Mibew Messenger.\nAnvend venligst end af browsers:</p>
page.chat.old_browser.title=Anvend venligst en nyerer browser
page_analysis.search.title=Historik
page_bans.add=Tilføj adresse
page_login.login=Login:
page_login.password=Adgangskode:
page_login.remember=Husk
page_login.title=Login
page_settings.tab.main=Generalt
pending.table.head.name=Navn
pending.table.head.operator=Supporter
presurvey.department=Vælg afdeling:
presurvey.intro=Tak for at du har kontaktet os. For bedre at kunne servicere dig, udfyld venligst formen nedenfor og klik Start chat knappen.
presurvey.mail=E-mail:
@ -92,7 +227,50 @@ presurvey.name=Navn:
presurvey.question=Første spørgsmål:
presurvey.submit=Start chat
presurvey.title=Live support
report.bydate.1=Dato
report.bydate.2=Chat tråde
right.other=Andet
settings.usernamepattern=Besøgendes identifikator
settings.wrong.email=Indtast en gyldig email
settings.wrong.onehostconnections="Maks antal af tråde" feltet skal være tal
site.title=mibew.org
site.url=http://mibew.org
statistics.dates=Vælg datoer
statistics.description=Fra denne side kan du generere forskellige rapporter.
statistics.from=Fra:
statistics.till=Til:
statistics.title=Statistikker
statistics.wrong.dates=Du har valgt Fra dato efter Til dato
tag.pagination.info=Side {0} af {1}, {2}-{3} af {4}
tag.pagination.next=næste
tag.pagination.no_items.elements=Ingen elemnter
tag.pagination.no_items=Fandt 0 elementer
tag.pagination.previous=tidligere
thread.back_to_search=Gå til søgning
thread.intro=Denne side viser detaljer og indhold for chatten.
time.never=Aldrig
time.timeformat=%I:%M %p
time.today.at=I dag kl.
time.yesterday.at=I går kl.
topMenu.admin=Start
topMenu.logoff=Exit
topMenu.main=Start
topMenu.users.nomenu=uden menu
topMenu.users=Besøgende
translate.direction=Vej:
translate.show.all=Alle strenge
translate.show.foradmin=Strenge for administratorer
translate.show.foroperator=Strenge for supportere
translate.show.forvisitor=Strenge for besøgende
translate.show=Vis:
translate.sort.key=Nøgle identifikator
translate.sort.lang=Kildesprog streng
translate.sort=Sorter efter:
typing.remote=Bruger skriver...
updates.current=Du bruger:
updates.env=Miljø:
updates.installed_locales=Installerede lokaliseringer:
updates.intro=Messenger opdateringer.
updates.latest=Seneste version:
updates.news=Nyheder:
updates.title=Opdateringer

View File

@ -11,6 +11,8 @@ app.title=Live Support
ban.error.duplicate=Addresse {0} ist schon vorhanden, klicke <a href="ban.php?id={1}">hier</a> um die Addresse zu ändern.
button.delete=Löschen
button.enter=OK
button.offline.bottom=Nachricht hinterlassen
button.offline=offline
button.save=Speichern
button.search=Suchen
canned.actions.del=entfernen

View File

@ -149,6 +149,10 @@ form.field.groupdesc=Description
form.field.groupemail.description=Group email for notifications. Leave empty to use the default address.
form.field.groupname.description=Name to identify the group.
form.field.groupname=Name
form.field.jabber.description=For instant notifications
form.field.jabber=Jabber ID
form.field.jabbernotify.description=deliver via Jabber (instant)
form.field.jabbernotify=Notification of new visitor
form.field.login.description=Login can consist of small Latin letters and underscore.
form.field.login=Login
form.field.mail.description=For notifications and password retrieval.
@ -232,6 +236,8 @@ menu.groups=Groups
menu.locale.content=Change locale.
menu.locale=Language
menu.main=Main
menu.notifications.content=All notifications sent by messenger.
menu.notifications=Notifications
menu.operator=You are {0}
menu.profile.content=You can change your personal information on this page.
menu.profile=Profile
@ -240,6 +246,24 @@ menu.updates.content=Check for news and updates.
menu.updates=Updates
my_settings.error.password_match=Entered passwords do not match
no_such_operator=No such Operator
notification.back_to_list=Back to the list
notification.intro=Contents of sent notification.
notification.label.subj=Subject
notification.label.time=Time
notification.label.to=To
notification.title=Notification details
notifications.head.msg=Text
notifications.head.subj=Subject
notifications.head.time=Time
notifications.head.to=To
notifications.kind.all=-all-
notifications.kind.mail=E-Mail
notifications.kind.xmpp=XMPP/Jabber
notifications.kind=Kind of notification
notifications.locale.all=-all-
notifications.locale=Language
notify.new.subject="{0}"
notify.new.text={1}: {0}
operator.group.no_description=&lt;no description&gt;
operator.groups.intro=Choose groups according to operator skills.
operator.groups.title=Operator groups
@ -269,6 +293,8 @@ page.gen_button.modsecurity=Compatibility with mod_security (modsecurity.org), t
page.gen_button.sample=Example
page.gen_button.secure_links=Use secure links (https)
page.gen_button.title=Button HTML code generation
page_getcode.tab.image=Image
page_getcode.tab.text=Text
page.group.create_new=Create new group here.
page.group.duplicate_name=Please choose another name because a group with that name already exists.
page.group.intro=On this page you can edit group details.
@ -283,6 +309,8 @@ page.groups.isaway=Away
page.groups.isonline=Online
page.groups.new=Create new group
page.groups.title=Groups
page.notifications.intro=The list displays all notifications sent by messenger, including instant text messages and E-Mails.
page.notifications.title=Notifications Log
page.preview.agentchat=Chat window (operator-mode)
page.preview.agentrochat=View Chat window (operator in read-only mode)
page.preview.chatsimple=Simple chat window. Refresh to post messages (IE 5, Opera 7)
@ -426,6 +454,8 @@ settings.enableban.description=Using it you can block attacks from specific IPs
settings.enableban=Enable feature "Malicious Visitors"
settings.enablegroups.description=Use it to have separate queues for different questions.
settings.enablegroups=Enable "Groups"
settings.enablejabber.description=Instant notification of new visitor (require <a href="http://mibew.org/download.php">Mibew Jabber</a> software)
settings.enablejabber=Enable "Jabber notifications"
settings.enablepresurvey.description=Forces the user to fill out a special form to start a chat.
settings.enablepresurvey=Enable "Pre-chat survey"
settings.enablessl.description=Please note that your web server should be configured to support https requests.

View File

@ -27,11 +27,11 @@ cannednew.descr=Lisää uusi viesti.
cannednew.title=Uusi Viesti
char.redirect.operator.away_suff=(poissa)
char.redirect.operator.online_suff=(käyettävissä)
chat.came.from=Käviä tuli sivulta {0}
chat.came.from=Kävijä tuli sivulta {0}
chat.client.changename=Muuta nimi
chat.client.name=Sinä olet
chat.client.visited.page=Käviä suuntasi sivulle {0}
chat.default.username=Käviä
chat.client.visited.page=Kävijä suuntasi sivulle {0}
chat.default.username=Kävijä
chat.error_page.close=Sulje...
chat.error_page.head=Tapahtui virhe:
chat.error_page.title=Virhe
@ -45,7 +45,7 @@ chat.redirect.choose=Valitse:
chat.redirect.group=Ryhmä:
chat.redirected.close=Sulje...
chat.redirected.closewindow=Napsauta sulkeaksesi ikkuna
chat.status.user.dead=Käviä sulki kesukusteluikkunan
chat.status.user.dead=Kävijä sulki keskusteluikkunan
chat.status.user.reopenedthread=Vierailija liittyi keskusteluun uudestaan
chat.thread.state_chatting_with_agent=Keskustelussa
chat.thread.state_closed=Suljettu
@ -79,7 +79,7 @@ errors.required=Täytä "{0}".
errors.wrong_field=Täytä "{0}" oikein.
features.saved=Ominaisuudet aktivoitu
form.field.address.description=Esim.: 12.23.35.123 tai todo.com
form.field.address=Käviän Osoite
form.field.address=Kävijän Osoite
form.field.agent_commonname.description=Tämä nimi näytetään käviöille.
form.field.agent_name.description=Tämä nimi näytetään käviöille.
form.field.agent_name=Nimi

View File

@ -309,7 +309,7 @@ page_agent.clear_avatar=Rimuovi avatar
page_agent.create_new=Qui puoi creare un nuovo operatore.
page_agent.error.duplicate_login=Per favore scegli un altro login, perché questo è già utilizzato nel sistema.
page_agent.error.wrong_login=la login può conteneresolo caratteri latin, numeri ed underscore.
page_agent.intro=Questa pagina visualizza i dettagli degli operatori, se tu possiedi i diritti di accesso puoi modificarli.
page_agent.intro=Questa pagina visualizza elenco degli assistenti societari e permette anche di aggiungerne nuovi, se si possiedono le autorizzazioni.
page_agent.tab.avatar=Foto
page_agent.tab.groups=Gruppi
page_agent.tab.main=Generale

View File

@ -62,6 +62,8 @@ mailthread.close
mailthread.enter_email
mailthread.perform
mailthread.title
notify.new.subject
notify.new.text
output_charset
output_encoding
page.chat.old_browser.close

View File

@ -58,6 +58,8 @@ confirm.take.yes
content.blocked
content.history
content.logoff
error.no_password
error.no_password.visit_profile
errors.footer
errors.header
errors.prefix
@ -87,6 +89,8 @@ menu.groups
menu.groups.content
menu.locale
menu.locale.content
menu.notifications
menu.notifications.content
menu.operator
menu.profile
menu.profile.content
@ -95,6 +99,22 @@ menu.updates
menu.updates.content
my_settings.error.password_match
no_such_operator
notification.back_to_list
notification.intro
notification.label.subj
notification.label.time
notification.label.to
notification.title
notifications.head.msg
notifications.head.subj
notifications.head.time
notifications.head.to
notifications.kind
notifications.kind.all
notifications.kind.mail
notifications.kind.xmpp
notifications.locale
notifications.locale.all
page.analysis.search.head_browser
page.analysis.search.head_group
page.analysis.search.head_host
@ -104,8 +124,23 @@ page.analysis.search.head_operator
page.analysis.search.head_time
page.analysis.userhistory.intro
page.analysis.userhistory.title
page.gen_button.choose_group
page.gen_button.choose_image
page.gen_button.choose_locale
page.gen_button.choose_style
page.gen_button.code
page.gen_button.code.description
page.gen_button.default_group
page.gen_button.include_site_name
page.gen_button.intro
page.gen_button.modsecurity
page.gen_button.sample
page.gen_button.secure_links
page.gen_button.title
page.group.no_such
page.notifications.intro
page.notifications.title
page.preview.style_default
page_analysis.full.text.search
page_analysis.search.title
page_ban.intro
@ -116,6 +151,8 @@ page_bans.add
page_bans.title
page_bans.to
page_client.pending_users
page_getcode.tab.image
page_getcode.tab.text
page_login.error
page_login.intro
page_login.login

View File

@ -6,11 +6,17 @@ admin.content.client_gen_button=Botão de geração de código HTML.
admin.content.client_settings=Especificar opções que afetam a janela de chat e o comportamento comum do sistema.
admin.content.description=Funções disponíveis para administradores.
agent.not_logged_in=Sua sessão expirou, por favor faça novamente o login
app.descr=Chat para Suporte.
app.descr=Mibew Messenger é um programa de código aberto para suporte ao vivo.
app.title=Mibew Messenger
ban.error.duplicate=O endereço especificado já está em uso, clique <a href="ban.php?id={1}">aqui</a> se você deseja editá-lo.
button.delete=Excluir
button.enter=Entrar
button.offline.bottom=Deixe sua mensagem
button.offline.top=Atendente
button.offline=OFFLINE
button.online.bottom=Faça sua pergunta
button.online.top=Atendente
button.online=ONLINE
button.save=Salvar
button.search=Procurar
canned.actions.del=Remover
@ -28,10 +34,13 @@ cannededit.no_such=Nenhuma dessas mensagens
cannededit.title=Editando Mensagem
cannednew.descr=Adicionando nova Mensagem.
cannednew.title=Nova Mensagem
char.redirect.operator.away_suff=(Ausente)
char.redirect.operator.online_suff=(online)
chat.came.from=O visitante veio da página {0}
chat.client.changename=Alterar nome
chat.client.name= Nome Atual:
chat.client.name=Usuário
chat.client.spam.prefix=[spam]&nbsp;
chat.client.visited.page=O Visitante navegou para {0}
chat.default.username=Visitante
chat.error_page.close=Fechar...
chat.error_page.head=Erro ocorrido:
@ -42,10 +51,15 @@ chat.mailthread.sent.content=O histórico da sua conversa foi enviado para {0}
chat.mailthread.sent.title=Enviado
chat.predefined_answers=Olá, como posso ajudá-lo?\nOlá! Bem vindo ao nosso suporte. Como posso ajudá-lo?
chat.redirect.back=Voltar...
chat.redirect.cannot=Você não está conversando com os visitantes.
chat.redirect.choose=Escolha:
chat.redirect.group=Grupo:
chat.redirect.operator=Operador:
chat.redirect.title=Redirecionar para<br/>outro atendente
chat.redirected.close=Fechar...
chat.redirected.closewindow=Clique aqui para fechar a janela
chat.redirected.content=O visitante passou para a fila de prioridades do operador {0}.
chat.redirected.group.content=O visitante passou para a fila de prioridades do grupo {0}.
chat.redirected.title=O visitante foi redirecionado a outro operador
chat.status.operator.changed=O operador {0} mudou o operador {1}
chat.status.operator.dead=O operador teve problemas em sua conexão, você está temporariamente em espera, desculpe-nos pela demora.
@ -67,7 +81,7 @@ chat.visitor.info=Info: {0}
chat.wait=Obrigado por nos contatar. Aguarde...
chat.window.chatting_with=Você está conversando:
chat.window.close_title=Fechar chat
chat.window.poweredby=Desemvolvido por:
chat.window.poweredby=Desenvolvido por:
chat.window.poweredreftext=mibew.org
chat.window.predefined.select_answer=Escolha a resposta...
chat.window.product_name=Mibew <span class="grey">Messenger</span>
@ -80,7 +94,7 @@ chat.window.toolbar.redirect_user=Redirecionar visitante para outro operador
chat.window.toolbar.refresh=Refresh
clients.how_to=Para responder ao visitante, clique em seu nome na lista.
clients.intro=Esta página contém a lista de visitante em espera.
clients.no_clients=A lista de visitantes em espera está vazio
clients.no_clients=A lista de visitantes em espera está vazia
clients.queue.chat=Visitantes no chat
clients.queue.prio=Fila de prioridade para visitantes
clients.queue.wait=Esperando um operador
@ -91,11 +105,13 @@ confirm.take.head=Mudar o operador
confirm.take.message=O visitante <span style="color:blue;">{0}</span> já está sendo atendido <span style="color:green;">{1}</span>.<br/> Você tem certeza que quer entrar no chat?
confirm.take.no=Não, feche esta janela
confirm.take.yes=Sim, tenho certeza
content.blocked=Aqui você pode cuidar dos visitantes mal-intencionados.
content.blocked=Aqui você pode se defender de visitantes mal-intencionados.
content.history=Procurar histórico de conversa.
content.logoff=Sair do sistema.
demo.chat.question=Há muitos browsers para escolher. Qual deles você me recomenda?
data.saved=Alterações salvas
demo.chat.question=Existem muitos navegadores para escolher. Qual deles você me recomenda?
demo.chat.welcome=Olá, Como posso lhe ajudar?
errors.captcha=As letras que você digitou não coincidem com as letras que aparecem na imagem.
errors.failed.uploading.file=Erro ao fazer upload do arquivo "{0}": "{1}".
errors.file.move.error=Erro ao mover arquivo
errors.file.size.exceeded=Tamanho do arquivo excedido
@ -105,9 +121,9 @@ errors.invalid.file.type=Tipo de arquivo inválido
errors.prefix=<li class="error">
errors.required=Por favor, preencha "{0}".
errors.suffix=</li>
errors.wrong_field=Por favor, preecnha "{0}" corretamente.
errors.wrong_field=Por favor, preencha "{0}" corretamente.
features.saved=Características Ativas
form.field.address.description=Ex: 12.23.45.123 or site.com
form.field.address.description=Ex: 12.23.45.123 ou site.com
form.field.address=Endereço do visitante
form.field.agent_commonname.description=Este nome será visto por todos os visitantes.
form.field.agent_commonname=Nome internacional (Latin)
@ -123,15 +139,18 @@ form.field.ban_days.description=Quantos dias para ignorar este endereço
form.field.ban_days=Dias
form.field.email=Seu e-mail
form.field.groupcommondesc.description=Descrição em Inglês.
form.field.groupcommondesc=Descrção Internacional
form.field.groupcommondesc=Descrição Internacional
form.field.groupcommonname.description=Nome em Inglês.
form.field.groupcommonname=Nome Internacional
form.field.groupdesc.description=Descrição do grupo.
form.field.groupdesc=Descrição
form.field.groupemail.description=Grupo de e-mail para notificações. Deixe em branco para usar o endereço padrão.
form.field.groupname.description=Nome para identificar o grupo.
form.field.groupname=Nome
form.field.login.description=Login deve ser alfa-numérico.
form.field.login=Login
form.field.mail.description=Para notificações e recuperação de senha.
form.field.mail=E-mail
form.field.message=Mensagem
form.field.name=Seu nome
form.field.password.description=Digite uma nova senha. Campo vazio para não alterar.
@ -146,6 +165,9 @@ image.button.search=/locales/pt-br/images/search.gif
image.chat.history=/locales/pt-br/images/history.gif
image.chat.message=/locales/pt-br/images/message.gif
image.chat.sprite=/locales/pt-br/images/wmchat.png
install.0.app=Caminho do aplicativo é {0}
install.0.package=O pacote Mibew é válido.
install.0.php=Versão PHP {0}
install.1.connected=Você está conectado ao Servidor MySQL, versão {0}
install.2.create=Criar banco de dados "{0}"
install.2.db_exists=O banco de dados "{0}" está criado.
@ -155,6 +177,13 @@ install.3.tables_exist=Tabelas requeridas foram criadas.
install.4.create=Atualizar tabelas
install.4.done=Estruturas das tabelas estão criadas.
install.4.notice=A estrutura de suas tabelas deve ser ajustada para a nova versão do Messenger.
install.5.newmessage=Nova Mensagem
install.5.newvisitor=Novo Visitante
install.5.text=Clique para ajustar o som: {0} e {1}
install.bad_checksum=A Soma de verificação é diferente de {0}
install.cannot_read=Não é possível ler o arquivo {0}
install.check_files=Por favor, reenvie os arquivos para o servidor.
install.check_permissions=Faltam permissões de arquivo {0}
install.connection.error=Não pode conectar, por favor, verifique as configurações no arquivo config.php. Erro: {0}
install.done=Pronto:
install.err.back=Resolva o problema e tente novamente. Clique <a>voltar</a> para retornar ao instalador.
@ -163,8 +192,11 @@ install.kill_tables.notice=Não foi possível atualizar a estrutura das tabelas.
install.kill_tables=Exclua as tabelas existentes no sistema
install.license=Concordo com a licença do Software
install.message=Siga o instalador para completar a instalação.
install.newfeatures=Parabéns! Agora você está com o Mibew Menssenger {1} instalado. Ative recursos adicionais na <a href="{0}"> página </a> serviços opcionais.
install.next=Próximo Passo:
install.no_file=Arquivo faltante: {0}
install.title=Instalação
install.updatedb=Por favor, execute o <a href="{0}"> Assistente de atualização </a> para ajustar seu banco de dados.
installed.login_link=Ir para a página de login
installed.message=<b>Aplicação instalado com sucesso.</b>
installed.notice=Você pode logar como <b>admin</b> com a senha em branco.<br/><br/><font color="#c13030"><b>!!! Por razões de segurança, mude sua imediatamente e remove a pasta {0} do seu servidor.</b></font>
@ -180,6 +212,7 @@ leavemessage.title=Deixe sua mensagem
leftMenu.client_agents=Agentes
leftMenu.client_gen_button=Botão
leftMenu.client_settings=Configurações
license.title=Licença
localedirection=ltr
localeid=Português Brasil (pt-br)
mail.user.history.body=Olá, {0}!\n\nSeu histórico do chat: \n\n{1}\n--- \nObrigado,\nMibew Messenger
@ -191,12 +224,13 @@ mailthread.title=Enviar histórico do chat<br/>por email
menu.agents=Lista de agentes
menu.blocked=Visitantes bloqueados
menu.canned=Mensagens prontas
menu.goonline=Você está Offline.<br/><a href="{0}">Conecte..</a>
menu.groups.content=Departamento ou habilidade baseada operador grupos.
menu.groups=Grupos
menu.locale.content=Selecione o Idioma.
menu.locale=Idioma
menu.main=Inicial
menu.operator= <span style="color:#66C786; text-transform: uppercase;"><b>{0} </b></span> - Bem Vindo ao Sistema.
menu.operator=Bem Vindo {0}
menu.profile.content=Você pode alterar suas informações pessoais nesta página.
menu.profile=Perfil
menu.translate=Idioma
@ -207,6 +241,8 @@ no_such_operator=Nenhum operador
operator.group.no_description=&lt;Sem descrição&gt;
operator.groups.intro=Escolha grupos de acordo com o operador competências.
operator.groups.title=Operador grupos
page.analysis.search.head_browser=Navegador
page.analysis.search.head_group=Grupo
page.analysis.search.head_host=Endereço do visitante
page.analysis.search.head_messages=Mensagens do visitante
page.analysis.search.head_name=Nome
@ -216,7 +252,7 @@ page.analysis.userhistory.intro=Você pode encontrar o histórico de chat dos vi
page.analysis.userhistory.title=Histórico de visitas
page.chat.old_browser.close=Fechar...
page.chat.old_browser.list=<ul>\n<li>Internet Explorer 5.5+</li>\n<li>Firefox 1.0+</li>\n<li>Opera 8.0+</li>\n<li>Mozilla 1.4+</li>\n<li>Netscape 7.1+</li>\n<li>Safari 1.2+</li>\n</ul>\n<p>Suporte somente para os seguintes navegadores antigos:</p>\n<ul>\n<li>Internet Explorer 5.0</li>\n<li>Opera 7.0</li>\n</ul>
page.chat.old_browser.problem=<p>Seu browser não suporta esta aplicação. \nPor favor, use alguns dos seguintes browsers:</p>
page.chat.old_browser.problem=<p>Seu navegador não é totalmente suportado pelo Mibew Messenger.\nPor favor, use um dos seguintes navegadores:</p>
page.chat.old_browser.title=Por favor, use um browser mais novo
page.gen_button.choose_group=Selecione o Grupo
page.gen_button.choose_image=Escolha a imagem
@ -227,6 +263,7 @@ page.gen_button.code=Código HTML
page.gen_button.default_group=-Todos os Operadores-
page.gen_button.include_site_name=Incluir o nome do host
page.gen_button.intro=Você pode gerar o código HTML para colocar no seu site aqui.
page.gen_button.modsecurity=Compatibilidade com o mod_security (modsecurity.org), ative-o apenas em caso de problemas
page.gen_button.sample=Exemplo
page.gen_button.secure_links=Usar link seguro (https)
page.gen_button.title=Gerador do código HTML do botão
@ -240,6 +277,8 @@ page.groupmembers.intro=Ver e editar a lista de membros.
page.groupmembers.title=Membros
page.groups.confirm=Tem certeza que pretende eliminar grupo "{0}"?
page.groups.intro=Esta página apresenta uma lista de grupos na sua empresa. Cada grupo pode ter separadamente seu perfil.
page.groups.isaway=Ausente
page.groups.isonline=Online
page.groups.new=Criando novo Grupo..
page.groups.title=Grupos
page.preview.agentchat=Janela do Chat (agent-mode)
@ -247,6 +286,7 @@ page.preview.agentrochat=Ver janela do chat (Modo de leitura)
page.preview.chatsimple=Janela de chat simples, atualize para mandar mensagens (IE 5, Opera 7)
page.preview.choose=Escolher estilo
page.preview.choosetpl=Escolher template
page.preview.error=Janela de erro
page.preview.intro=Você pode visualizar estilos do seu site.
page.preview.leavemessage=Ver a janela de mensagens
page.preview.leavemessagesent=Ver a janela de mensagens enviadas
@ -257,12 +297,14 @@ page.preview.redirect=Redirecionar visitante para outro janela
page.preview.redirected=O visitante foi redirecionado para outra janela
page.preview.showerr=Monstrar error
page.preview.style_default=- configurações orginais -
page.preview.survey=Estudo Pré-chat
page.preview.title=Estilo do site
page.preview.userchat=Janela do Chat (visitante)
page.translate.descr=Se você não gostou da tradução, por favor, nos envie uma atualização.
page.translate.done=Sua tradução foi salva.
page.translate.one=Coloque sua tradução.
page.translate.title=Traduzir o WEBIM
page_agent.cannot_modify=Você não possui permissão para alterar o perfil desta pessoa.
page_agent.clear_avatar=Remover avatar
page_agent.create_new=Aqui você pode criar um novo operador.
page_agent.error.duplicate_login=Por favor, escolha outro login, já há este login na base de dados.
@ -275,7 +317,10 @@ page_agent.tab.permissions=Permissões
page_agent.title=Detalhes do operador
page_agents.agent_name=Nome
page_agents.agents=Lista de todos os agentes:
page_agents.confirm=Deseja excluir o operador "{0}"?
page_agents.intro=Esta página mostar a lista de agentes da empresa e também permite adicionar novos.
page_agents.isaway=Ausente
page_agents.isonline=Online
page_agents.login=Usuario
page_agents.new_agent=Criar um novo agente..
page_agents.status=Ultima Sessão
@ -289,10 +334,13 @@ page_ban.sent=Endereço {0} está bloquado por uma quantidade determinada de dia
page_ban.thread=Você abriu esta janela por "{0}" entretanto, <i>o campo endereço</i> já está preenchido. Selecione um número de dias e clique <i>Enviar</i>.
page_ban.title=Bloquear endereço
page_bans.add=Adicionar endereço
page_bans.confirm=Deseja excluir o endereço {0} da lista de bloqueados?
page_bans.list=Lista de IP banidos:
page_bans.title=Bloqueados
page_bans.to=Antes
page_client.pending_users=Você pode encontrar visitantes em espera.
page_group.tab.main=Geral
page_group.tab.members=Membros
page_login.error=Usuário e/ou senhas incorretos
page_login.intro=Digite seu nome de usuário e senha para acessar ferramentas administrativas, ver os seus visitantes e percorrer a história.
page_login.login=Usuario:
@ -303,9 +351,13 @@ page_search.intro=Procurar por históricos de chat de um determinado visitante o
page_settings.intro=Opções específicas afetam a janela do chat e o comportamento do sistema.
page_settings.tab.features=Serviços Opcionais
page_settings.tab.main=Geral
page_settings.tab.performance=Desempenho
page_settings.tab.themes=Prévia do Tema
pending.menu.hide=Ocultar o Menu >>
pending.menu.show=Visualisar o Menu >>
pending.popup_notification=Um novo visitante está aguardando resposta.
pending.status.setaway=Definir status "Ausente"
pending.status.setonline=Definir status "Disponível"
pending.table.ban=Bannir o visitante
pending.table.head.contactid=Endereço do usuário
pending.table.head.etc=Misc
@ -330,15 +382,33 @@ presurvey.question=Pergunta Inicial:
presurvey.submit=Inicar Chat
presurvey.title=Chat Suporte
report.bydate.1=Date
report.bydate.2=Chat threads
report.bydate.2=Tópicos do Chat
report.bydate.3=Mensagens de Operadores
report.bydate.4=Mensagens de Visitantes
report.bydate.title=Estatísticas de utilização para cada data
report.byoperator.1=Operador
report.byoperator.2=Quantidade de Chat
report.byoperator.2=Tópicos do Chat
report.byoperator.3=Mensagens
report.byoperator.4=comprimento (em caracteres)
report.byoperator.4=Tamanho da mensagem (em caracteres)
report.byoperator.title=Dados pelo Operador
report.no_items=Não há dados suficientes
report.total=Total:
resetpwd.changed.title=Sua senha foi alterada!
resetpwd.changed=Faça o login usando sua nova senha.
resetpwd.intro=Por favor escolha uma senha para usar com a sua conta Mibew.
resetpwd.login=Prossiga para fazer o login
resetpwd.submit=Mudar
resetpwd.title=Mude sua senha Mibew
restore.back_to_login=Voltar para o Login
restore.emailorlogin=Login ou E-mail:
restore.intro=Não é possível recuperar sua senha, mas você pode definir uma nova, clicando no link enviado por e-mail.
restore.mailsubj=Redefina sua senha no Mibew
restore.mailtext=Olá, {0}\n\nPor favor clique no link abaixo ou copie e cole o URL em seu navegador:\n{1}\n\nDesta forma, você poderá escolher uma nova senha. \n\nMibew Messenger.
restore.pwd.message=Esqueceu sua senha?
restore.sent.title=Recuperação de senha
restore.sent=Enviamos as instruções para seu e-mail. Por favor, verifique!
restore.submit=Redefinir a senha
restore.title=Problemas para acessar sua conta?
right.administration=Área Administrativa
right.main=Opções
right.other=Outros
@ -352,27 +422,56 @@ settings.email.description=Digite um e-mail para receber mensagens do sistema
settings.email=Email
settings.enableban.description=Usando esta opção você pode bloquear ataques de IPs especificos
settings.enableban=Ativar opção "visitante mal-intencionado"
settings.enablegroups.description=Use-o para ter filas separadas para questões diferentes.
settings.enablegroups=Ativar "grupos"
settings.enablepresurvey.description=Obriga o usuário a preencher um formulário especial para iniciar a conversa.
settings.enablepresurvey=Ativar "pesquisa pré-chat"
settings.enablessl.description=Note que seu servidor web deve ser<br/> configurado para suportar requisições https.
settings.enablessl=Permitir conexões seguras (SSL)
settings.enablestatistics.description=Adiciona página com relatórios de uso das mensagens.
settings.enablestatistics=Ativar "Estatísticas"
settings.forcessl.description=Mostrar conversas apenas através de uma conexão https
settings.forcessl=Obriga que todas as conversas sejam em ambiente seguro
settings.frequencychat.description=Especifique o intervalo de sondagem em segundos. O padrão é 2 segundos.
settings.frequencychat=Tempo de atualização da conversa
settings.frequencyoldchat.description=Navegadores antigos precisam atualizar a página inteira para receber mensagens. O padrão é de 7 segundos.
settings.frequencyoldchat=Tempo de atualização da página para navegadores antigos
settings.frequencyoperator.description=Especifique o intervalo de sondagem em segundos. O padrão é 2 segundos.
settings.frequencyoperator=Tempo de atualização do console do operador
settings.geolink.description=Endereço de Ip, abre em uma nova janela.
settings.geolink=Link externo para localização de IP
settings.geolinkparams.description=Tamanho da janela e barra de ferramentas
settings.geolinkparams=Opções da janela de localização de IP
settings.host.description=Descrição
settings.host=URL de seu site
settings.leavemessage_captcha.description=Proteção contra spam automatizado (captcha)
settings.leavemessage_captcha=Obriga o visitante a inserir um código de verificação quando deixar mensagem
settings.logo.description=Endereço do seu logo tipo
settings.logo=Seu Logotipo
settings.no.title=Nome da empresa
settings.onehostconnections.description=0 Sem quantidades de conexões
settings.onehostconnections= número máximo de chamadas a partir de um endereço
settings.onlinetimeout.description=Defina quantos mostrar operador como online. O padrão é 30 segundos.
settings.onlinetimeout=Limite de tempo on-line do operador
settings.popup_notification.description=Diálogos curtos parecem atrair sua atenção.
settings.popup_notification=Ativar "Notificação de diálogo pop-up do novo visitante".
settings.saved=Alterações gravadas
settings.sendmessagekey=Enviar mensagem como:
settings.show_online_operators.description=É possível diminuir a taxa de atualização da lista
settings.show_online_operators=Mostrar operadores on-line na página de "Lista de espera de visitantes"
settings.survey.askgroup.description=Mostrar / ocultar campo de seleção de departamento na pesquisa
settings.survey.askgroup=Permite ao visitante escolher departamento / grupo
settings.survey.askmail.description=Mostrar / ocultar campo email na pesquisa
settings.survey.askmail=Pergunte o e-mail do visitante
settings.survey.askmessage.description=Mostrar/ocultar campo pergunta inicial da pesquisa
settings.survey.askmessage=Mostrar campo pergunta inicial
settings.title=Opções do Messenger
settings.usercanchangename.description=Desligue para esconder o box de edição da janela de chat
settings.usercanchangename=Permite que os visitantes editem seus nomes
settings.usernamepattern.description=Como mostrar o nome do visitante {name}, {id} ou {addr}. Padrão: {name}
settings.usernamepattern=Apresentação do nome do visitante
settings.wrong.email=Digite um e-mail válido
settings.wrong.onehostconnections=O Campo "Número máximo de tópicos" deve ser númérico
site.title=mibew.org
site.url=http://mibew.org
statistics.dates=Filtro por Data
@ -382,11 +481,14 @@ statistics.till=Até:
statistics.title=Estatísticas
statistics.wrong.dates=Você selecionou um periodo de datas
tag.pagination.info=Página {0} de {1}, {2}-{3} até {4}
tag.pagination.next=Próximo
tag.pagination.no_items.elements=Nenhum elemento
tag.pagination.no_items=Encontrado 0 elemento(s)
tag.pagination.previous=Anterior
thread.back_to_search=Procurar
thread.chat_log=Log do chat
thread.intro=Está página mostra todos os chats.
time.dateformat=%d %B, %Y
time.locale=pt_BR
time.never=Nunca
time.timeformat=%H:%M
@ -394,6 +496,7 @@ time.today.at=Hoje às
time.yesterday.at=Ontem às
topMenu.admin=Administração
topMenu.logoff=Sair
topMenu.main=Principal
topMenu.users.nomenu=Ocultar Menu
topMenu.users=Visitantes
translate.direction=Direção:
@ -409,7 +512,7 @@ typing.remote=Usuário remoto está digitando...
updates.current=Você está usando:
updates.env=Ambiente:
updates.installed_locales=Idiomas Instalados:
updates.intro=Informações das: Atualizações e Instalações.
updates.intro=Atualizações.
updates.latest=Ultima Versão:
updates.news=Novos:
updates.news=Notícias:
updates.title=Atualizações

View File

@ -149,6 +149,10 @@ form.field.groupdesc=
form.field.groupemail.description=Адрес для извещений. Оставьте пустым, чтобы использовать глобальный адрес.
form.field.groupname.description=Может быть названием отдела в вашей компании.
form.field.groupname=Название группы
form.field.jabber.description=Äëÿ áûñòðîãî ïîëó÷åíèÿ óâåäîìëåíèé
form.field.jabber=Jabber ID
form.field.jabbernotify.description=äîñòàâèòü ÷åðåç Jabber (ìîìåíòàëüíî)
form.field.jabbernotify=Óâåäîìëåíèÿ î íîâîì ïîñåòèòåëå
form.field.login.description=Логин может состоять из маленьких латинских букв и знака подчеркивания.
form.field.login=Логин
form.field.mail.description=Для уведомлений и восстановления пароля.
@ -232,6 +236,8 @@ menu.groups=
menu.locale.content=Выбрать язык системы.
menu.locale=Язык
menu.main=Главная
menu.notifications.content=Èñòîðèÿ âñåõ îòïðàâëåííûõ óâåäîìëåíèé.
menu.notifications=Óâåäîìëåíèÿ
menu.operator=Вы {0}
menu.profile.content=На этой странице вы можете отредактировать свою персональную информацию.
menu.profile=Профиль
@ -240,6 +246,22 @@ menu.updates.content=
menu.updates=Обновления
my_settings.error.password_match=Введенные пароли должны совпадать
no_such_operator=Запрашиваемая учетная запись не существует
notification.back_to_list=Âåðíóòüñÿ ê ñïèñêó
notification.intro=Ñîäåðæàíèå îòïðàâëåííîãî óâåäîìëåíèÿ.
notification.label.subj=Òåìà
notification.label.time=Âðåìÿ îòïðàâêè
notification.label.to=Êîìó
notification.title=Äåòàëè óâåäîìëåíèÿ
notifications.head.msg=Òåêñò
notifications.head.subj=Òåìà
notifications.head.time=Âðåìÿ
notifications.head.to=Àäðåñàò
notifications.kind.all=-âñå-
notifications.kind.mail=Ýëåêòðîííàÿ ïî÷òà
notifications.kind.xmpp=XMPP/Jabber
notifications.kind=Òèï óâåäîìëåíèÿ
notifications.locale.all=-âñå-
notifications.locale=ßçûê
operator.group.no_description=&lt;без описания&gt;
operator.groups.intro=Группы в которых состоит оператор.
operator.groups.title=Группы
@ -283,6 +305,8 @@ page.groups.isaway=Away
page.groups.isonline=Доступна
page.groups.new=Добавить группу...
page.groups.title=Группы
page.notifications.intro= ýòîì ñïèñêå âû íàéäåòå âñå óâåäîìëåíèÿ, îòïðàâëåííûå ìåññåíäæåðîì, âêëþ÷àÿ ïèñüìà è ìãíîâåííûå ñîîáùåíèÿ (Jabber).
page.notifications.title=Èñòîðèÿ Óâåäîìëåíèé
page.preview.agentchat=Окно чата (со стороны оператора)
page.preview.agentrochat=Окно просмотра чата (для оператора)
page.preview.chatsimple=Simple chat window, refresh to post messages (IE 5, Opera 7)
@ -426,6 +450,8 @@ settings.enableban.description=
settings.enableban=Включить функцию "Нежелательные посетители"
settings.enablegroups.description=Позволяет объединять операторов в группы и организовывать для них отдельные очереди.
settings.enablegroups=Включить функцию "Группы"
settings.enablejabber.description=Ìîìåíòàëüíûå óâåäîìëåíèÿ î íîâîì ïîñåòèòåëå (òðåáóåò îòäåëüíîé ïðîãðàììû <a href="http://mibew.org/download.php">Mibew Jabber</a>)
settings.enablejabber=Âêëþ÷èòü ôóíêöèþ "Jabber óâåäîìëåíèÿ"
settings.enablepresurvey.description=Предлагает посетителю заполнить специальную форму перед началом чата.
settings.enablepresurvey=Включить "Опрос перед началом диалога"
settings.enablessl.description=Ваш сервер должен быть настроен для обработки https запросов.

0
src/messenger/webim/operator/avatar.php Normal file → Executable file
View File

View File

@ -26,7 +26,7 @@ $page = array('agentId' => '');
$errors = array();
$options = array(
'enableban', 'usercanchangename', 'enablegroups', 'enablestatistics',
'enableban', 'usercanchangename', 'enablegroups', 'enablestatistics', 'enablejabber',
'enablessl', 'forcessl',
'enablepresurvey', 'surveyaskmail', 'surveyaskgroup', 'surveyaskmessage',
'enablepopupnotification', 'showonlineoperators',

View File

@ -72,6 +72,7 @@ $page['formsecure'] = $forcesecure;
$page['formmodsecurity'] = $modsecurity;
prepare_menu($operator);
setup_getcode_tabs(0);
start_html_output();
require('../view/gen_button.php');
require('../view/getcode_image.php');
?>

View File

@ -0,0 +1,62 @@
<?php
/*
* Copyright 2005-2013 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
require_once('../libs/common.php');
require_once('../libs/operator.php');
require_once('../libs/groups.php');
require_once('../libs/getcode.php');
$operator = check_login();
loadsettings();
$stylelist = get_style_list("../styles");
$style = verifyparam("style", "/^\w*$/", "");
if ($style && !in_array($style, $stylelist)) {
$style = "";
}
$groupid = verifyparam_groupid("group");
$showhost = verifyparam("hostname", "/^on$/", "") == "on";
$forcesecure = verifyparam("secure", "/^on$/", "") == "on";
$modsecurity = verifyparam("modsecurity", "/^on$/", "") == "on";
$allLocales = get_available_locales();
$lang = verifyparam("lang", "/^[\w-]{2,5}$/", "");
if (!$lang || !in_array($lang, $allLocales))
$lang = in_array($current_locale, $allLocales) ? $current_locale : $allLocales[0];
$message = "Click to chat"; // TODO
$page = array();
$page['buttonCode'] = generate_button("", $lang, $style, $groupid, $message, $showhost, $forcesecure, $modsecurity);
$page['availableLocales'] = $allLocales;
$page['availableStyles'] = $stylelist;
$page['groups'] = get_groups_list();
$page['formgroup'] = $groupid;
$page['formstyle'] = $style;
$page['formlang'] = $lang;
$page['formhostname'] = $showhost;
$page['formsecure'] = $forcesecure;
$page['formmodsecurity'] = $modsecurity;
prepare_menu($operator);
setup_getcode_tabs(1);
start_html_output();
require('../view/getcode_text.php');
?>

View File

@ -0,0 +1,46 @@
<?php
/*
* Copyright 2005-2013 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
require_once('../libs/common.php');
require_once('../libs/operator.php');
require_once('../libs/chat.php');
$operator = check_login();
$page = array();
setlocale(LC_TIME, getstring("time.locale"));
function notification_info($id)
{
global $mysqlprefix;
$link = connect();
$notification = select_one_row(db_build_select(
"id, locale, vckind, vcto, unix_timestamp(dtmcreated) as created, vcsubject, tmessage, refoperator", "${mysqlprefix}chatnotification",
array("id = $id"), ""), $link);
mysql_close($link);
return $notification;
}
$notificationid = verifyparam("id", "/^(\d{1,9})$/");
$page['notification'] = notification_info($notificationid);
prepare_menu($operator, false);
start_html_output();
require('../view/notification.php');
?>

View File

@ -0,0 +1,79 @@
<?php
/*
* Copyright 2005-2013 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
require_once('../libs/common.php');
require_once('../libs/chat.php');
require_once('../libs/operator.php');
require_once('../libs/pagination.php');
$operator = check_login();
$page = array();
$errors = array();
if (!is_capable($can_administrate, $operator)) {
die("Permission denied.");
}
setlocale(LC_TIME, getstring("time.locale"));
# locales
$all_locales = get_available_locales();
$locales_with_label = array(array('id' => '', 'name' => getlocal("notifications.locale.all")));
foreach ($all_locales as $id) {
$locales_with_label[] = array('id' => $id, 'name' => getlocal_($id, "names"));
}
$page['locales'] = $locales_with_label;
$lang = verifyparam("lang", "/^([\w-]{2,5})?$/", "");
if ($lang && !in_array($lang, $all_locales)) {
$lang = "";
}
# kind
$kind = verifyparam("kind", "/^(mail|xmpp)?$/", "");
$page['allkinds'] = array('', 'mail', 'xmpp');
# fetch
$conditions = array();
if ($kind) {
$conditions[] = "vckind = '$kind'";
}
if ($lang) {
$conditions[] = "locale = '$lang'";
}
$link = connect();
select_with_pagintation(
"id, locale, vckind, vcto, unix_timestamp(dtmcreated) as created, vcsubject, tmessage, refoperator", "${mysqlprefix}chatnotification",
$conditions,
"order by created desc", "", $link);
mysql_close($link);
$page['formlang'] = $lang;
$page['formkind'] = $kind;
prepare_menu($operator);
start_html_output();
require('../view/notifications.php');
exit;
?>

View File

@ -26,14 +26,17 @@ $page = array('opid' => '');
$errors = array();
$opId = '';
loadsettings();
if (isset($_POST['login']) && isset($_POST['password'])) {
$opId = verifyparam("opid", "/^(\d{1,9})?$/", "");
$login = getparam('login');
$email = getparam('email');
$jabber = getparam('jabber');
$password = getparam('password');
$passwordConfirm = getparam('passwordConfirm');
$localname = getparam('name');
$commonname = getparam('commonname');
$jabbernotify = verifyparam("jabbernotify", "/^on$/", "") == "on";
if (!$localname)
$errors[] = no_field("form.field.agent_name");
@ -50,6 +53,17 @@ if (isset($_POST['login']) && isset($_POST['password'])) {
if ($email != '' && !is_valid_email($email))
$errors[] = wrong_field("form.field.mail");
if ($jabber != '' && !is_valid_email($jabber))
$errors[] = wrong_field("form.field.jabber");
if ($jabbernotify && $jabber == '') {
if ($settings['enablejabber'] == "1") {
$errors[] = no_field("form.field.jabber");
} else {
$jabbernotify = false;
}
}
if (!$opId && !$password)
$errors[] = no_field("form.field.password");
@ -69,11 +83,11 @@ if (isset($_POST['login']) && isset($_POST['password'])) {
if (count($errors) == 0) {
if (!$opId) {
$newop = create_operator($login, $email, $password, $localname, $commonname, "");
$newop = create_operator($login, $email, $jabber, $password, $localname, $commonname, $jabbernotify ? 1 : 0, "");
header("Location: $webimroot/operator/avatar.php?op=" . $newop['operatorid']);
exit;
} else {
update_operator($opId, $login, $email, $password, $localname, $commonname);
update_operator($opId, $login, $email, $jabber, $password, $localname, $commonname, $jabbernotify ? 1 : 0);
// update the session password
if (!empty($password) && $opId == $operator['operatorid']) {
$toDashboard = $operator['vcpassword'] == md5('') && $password != '';
@ -90,6 +104,8 @@ if (isset($_POST['login']) && isset($_POST['password'])) {
$page['formlogin'] = topage($login);
$page['formname'] = topage($localname);
$page['formemail'] = topage($email);
$page['formjabber'] = topage($jabber);
$page['formjabbernotify'] = $jabbernotify;
$page['formcommonname'] = topage($commonname);
$page['opid'] = topage($opId);
}
@ -105,6 +121,8 @@ if (isset($_POST['login']) && isset($_POST['password'])) {
$page['formlogin'] = topage($op['vclogin']);
$page['formname'] = topage($op['vclocalename']);
$page['formemail'] = topage($op['vcemail']);
$page['formjabber'] = topage($op['vcjabbername']);
$page['formjabbernotify'] = $op['inotify'] != 0;
$page['formcommonname'] = topage($op['vccommonname']);
$page['opid'] = topage($op['operatorid']);
}
@ -119,6 +137,7 @@ $canmodify = ($opId == $operator['operatorid'] && is_capable($can_modifyprofile,
$page['stored'] = isset($_GET['stored']);
$page['canmodify'] = $canmodify ? "1" : "";
$page['showjabber'] = $settings['enablejabber'] == "1";
$page['needChangePassword'] = $operator['vcpassword'] == md5('');
prepare_menu($operator);

0
src/messenger/webim/operator/permissions.php Normal file → Executable file
View File

View File

@ -48,6 +48,10 @@ require_once('inc_errors.php');
<form name="agentForm" method="post" action="<?php echo $webimroot ?>/operator/operator.php">
<?php print_csrf_token_input() ?>
<input type="hidden" name="opid" value="<?php echo $page['opid'] ?>"/>
<?php if(!$page['showjabber']) { ?>
<input type="hidden" name="jabber" value="<?php echo form_value('jabber') ?>"/>
<?php if(form_value_cb('jabbernotify')) { ?><input type="hidden" name="jabbernotify" value="on"/><?php } ?>
<?php } ?>
<div>
<?php if(!$page['needChangePassword']) { print_tabbar(); } ?>
<div class="mform"><div class="formtop"><div class="formtopi"></div></div><div class="forminner">
@ -107,6 +111,26 @@ require_once('inc_errors.php');
<br clear="all"/>
</div>
<?php if($page['showjabber']) { ?>
<div class="field">
<div class="flabel"><?php echo getlocal('form.field.jabber') ?></div>
<div class="fvalue">
<input type="text" name="jabber" size="40" value="<?php echo form_value('jabber') ?>" class="formauth"<?php echo $page['canmodify'] ? "" : " disabled=\"disabled\"" ?>/>
</div>
<div class="fdescr"> &mdash; <?php echo getlocal('form.field.jabber.description') ?></div>
<br clear="all"/>
</div>
<div class="field" style="padding-top:0.3em;">
<div class="flabel"><?php echo getlocal('form.field.jabbernotify') ?></div>
<div class="fvalue">
<input type="checkbox" name="jabbernotify" value="on"<?php echo form_value_cb('jabbernotify') ? " checked=\"checked\"" : "" ?><?php echo $page['canmodify'] ? "" : " disabled=\"disabled\"" ?>/>
</div>
<div class="fdescr"> &mdash; <?php echo getlocal('form.field.jabbernotify.description') ?></div>
<br clear="all"/>
</div>
<?php } ?>
<?php if($page['canmodify']) { ?>
<div class="fbutton">
<input type="image" name="save" value="" src='<?php echo $webimroot.getlocal("image.button.save") ?>' alt='<?php echo getlocal("button.save") ?>'/>

View File

@ -121,6 +121,15 @@ require_once('inc_errors.php');
<br clear="all"/>
</div>
<div class="field">
<div class="flabel"><?php echo getlocal('settings.enablejabber') ?></div>
<div class="fvalue">
<input type="checkbox" name="enablejabber" value="on"<?php echo form_value_cb('enablejabber') ? " checked=\"checked\"" : "" ?><?php echo $page['canmodify'] ? "" : " disabled=\"disabled\"" ?>/>
</div>
<div class="fdescr"> &mdash; <?php echo getlocal('settings.enablejabber.description') ?></div>
<br clear="all"/>
</div>
<div class="field">
<div class="flabel"><?php echo getlocal('settings.enableban') ?></div>
<div class="fvalue">

View File

@ -16,6 +16,8 @@
*/
require_once("inc_menu.php");
require_once("inc_tabbar.php");
$page['title'] = getlocal("page.gen_button.title");
$page['menuid'] = "getcode";
@ -30,9 +32,12 @@ require_once('inc_errors.php');
?>
<form name="buttonCodeForm" method="get" action="<?php echo $webimroot ?>/operator/getcode.php">
<div>
<?php print_tabbar(); ?>
<div class="mform"><div class="formtop"><div class="formtopi"></div></div><div class="forminner">
<div class="fieldForm">
<div class="fieldinrow">
<div class="flabel"><?php echo getlocal("page.gen_button.choose_locale") ?></div>
<div class="fvaluenodesc">
@ -40,14 +45,6 @@ require_once('inc_errors.php');
</div>
</div>
<div class="fieldinrow">
<div class="flabel"><?php echo getlocal("page.gen_button.choose_image") ?></div>
<div class="fvaluenodesc">
<select name="i" onchange="this.form.submit();"><?php foreach($page['availableImages'] as $k) { echo "<option value=\"".$k."\"".($k == form_value("image") ? " selected=\"selected\"" : "").">".$k."</option>"; } ?></select>
</div>
</div>
<br clear="all"/>
<?php if($page['showgroups']) { ?>
<div class="fieldinrow">
<div class="flabel"><?php echo getlocal("page.gen_button.choose_group") ?></div>
@ -56,6 +53,14 @@ require_once('inc_errors.php');
</div>
</div>
<?php } ?>
<br clear="all"/>
<div class="fieldinrow">
<div class="flabel"><?php echo getlocal("page.gen_button.choose_image") ?></div>
<div class="fvaluenodesc">
<select name="i" onchange="this.form.submit();"><?php foreach($page['availableImages'] as $k) { echo "<option value=\"".$k."\"".($k == form_value("image") ? " selected=\"selected\"" : "").">".$k."</option>"; } ?></select>
</div>
</div>
<div class="fieldinrow">
<div class="flabel"><?php echo getlocal("page.gen_button.choose_style") ?></div>
@ -108,6 +113,7 @@ require_once('inc_errors.php');
</div>
</div><div class="formbottom"><div class="formbottomi"></div></div></div>
</div>
</form>
<?php

View File

@ -0,0 +1,116 @@
<?php
/*
* Copyright 2005-2013 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
require_once("inc_menu.php");
require_once("inc_tabbar.php");
$page['title'] = getlocal("page.gen_button.title");
$page['menuid'] = "getcode";
function tpl_content() { global $page, $webimroot, $errors;
?>
<?php echo getlocal("page.gen_button.intro") ?>
<br />
<br />
<?php
require_once('inc_errors.php');
?>
<form name="buttonCodeForm" method="get" action="<?php echo $webimroot ?>/operator/gettextcode.php">
<div>
<?php print_tabbar(); ?>
<div class="mform"><div class="formtop"><div class="formtopi"></div></div><div class="forminner">
<div class="fieldForm">
<div class="fieldinrow">
<div class="flabel"><?php echo getlocal("page.gen_button.choose_locale") ?></div>
<div class="fvaluenodesc">
<select name="lang" onchange="this.form.submit();"><?php foreach($page['availableLocales'] as $k) { echo "<option value=\"".$k."\"".($k == form_value("lang") ? " selected=\"selected\"" : "").">".$k."</option>"; } ?></select>
</div>
</div>
<?php if($page['showgroups']) { ?>
<div class="fieldinrow">
<div class="flabel"><?php echo getlocal("page.gen_button.choose_group") ?></div>
<div class="fvaluenodesc">
<select name="group" onchange="this.form.submit();"><?php foreach($page['groups'] as $k) { echo "<option value=\"".$k['groupid']."\"".($k['groupid'] == form_value("group") ? " selected=\"selected\"" : "").">".$k['vclocalname']."</option>"; } ?></select>
</div>
</div>
<?php } ?>
<br clear="all"/>
<div class="fieldinrow">
<div class="flabel"><?php echo getlocal("page.gen_button.choose_style") ?></div>
<div class="fvaluenodesc">
<select name="style" onchange="this.form.submit();"><?php foreach($page['availableStyles'] as $k => $v) { echo "<option value=\"".$k."\"".($k == form_value("style") ? " selected=\"selected\"" : "").">".$v."</option>"; } ?></select>
</div>
</div>
<br clear="all"/>
<div class="fieldinrow">
<div class="flabel"><?php echo getlocal("page.gen_button.include_site_name") ?></div>
<div class="fvaluenodesc">
<input type="checkbox" name="hostname" value="on"<?php echo form_value_cb('hostname') ? " checked=\"checked\"" : "" ?> onchange="this.form.submit();"/>
</div>
</div>
<?php if( $page['formhostname'] ) { ?>
<div class="fieldinrow">
<div class="flabel"><?php echo getlocal("page.gen_button.secure_links") ?></div>
<div class="fvaluenodesc">
<input type="checkbox" name="secure" value="on"<?php echo form_value_cb('secure') ? " checked=\"checked\"" : "" ?> onchange="this.form.submit();"/>
</div>
</div>
<?php } ?>
<br clear="all"/>
<div class="field">
<div class="flabel"><?php echo getlocal("page.gen_button.modsecurity") ?></div>
<div class="fvaluenodesc">
<input type="checkbox" name="modsecurity" value="on"<?php echo form_value_cb('modsecurity') ? " checked=\"checked\"" : "" ?> onchange="this.form.submit();"/>
</div>
</div>
<div class="field">
<div class="flabel"><?php echo getlocal("page.gen_button.code") ?></div>
<div class="fvaluewithta" dir="ltr">
<textarea cols="44" rows="15"><?php echo htmlspecialchars($page['buttonCode']) ?></textarea>
</div>
<div class="fdescr"><?php echo getlocal("page.gen_button.code.description") ?></div>
<br clear="all"/>
</div>
<div class="field">
<div class="flabel"><?php echo getlocal("page.gen_button.sample") ?></div>
<div class="fvaluenodesc">
<?php echo $page['buttonCode'] ?>
</div>
</div>
</div>
</div><div class="formbottom"><div class="formbottomi"></div></div></div>
</div>
</form>
<?php
} /* content */
require_once('inc_main.php');
?>

View File

@ -83,7 +83,7 @@ $isrtl = getlocal("localedirection") == 'rtl';
<div class="empty_inner" style="">&#160;</div>
</div>
<div id="footer">
<p id="legal"><a href="http://mibew.org/" target="_blank" class="flink">Mibew Messenger</a> <?php echo $version ?> | (c) 2011 mibew.org</p>
<p id="legal"><a href="http://mibew.org/" target="_blank" class="flink">Mibew Messenger</a> <?php echo $version ?> | (c) 2011-2013 mibew.org</p>
</div>
</body>
</html>

View File

@ -58,6 +58,7 @@ function tpl_menu() { global $page, $webimroot, $errors;
<li<?php menuli("settings")?>><a href='<?php echo $webimroot ?>/operator/settings.php'><?php echo getlocal('leftMenu.client_settings') ?></a></li>
<li<?php menuli("translate")?>><a href='<?php echo $webimroot ?>/operator/translate.php'><?php echo getlocal('menu.translate') ?></a></li>
<li<?php menuli("updates")?>><a href='<?php echo $webimroot ?>/operator/updates.php'><?php echo getlocal('menu.updates') ?></a></li>
<li<?php menuli("notifications")?>><a href='<?php echo $webimroot ?>/operator/notifications.php'><?php echo getlocal('menu.notifications') ?></a></li>
<?php } ?>
<?php if(isset($page['currentopid']) && $page['currentopid']) {?>
<li<?php menuli("profile")?>><a href='<?php echo $webimroot ?>/operator/operator.php?op=<?php echo $page['currentopid'] ?>'><?php echo getlocal('menu.profile') ?></a></li>

View File

@ -15,18 +15,38 @@
* limitations under the License.
*/
function print_tabbar() {
function print_tabbar($maxwidth = 4) {
global $page;
if($page['tabs']) { ?>
<ul class="tabs">
if($page['tabs']) {
$tabbar = $page['tabs'];
$len = count($tabbar);
$selected = $page['tabselected'];
$tabbar2 = array();
for($i = 0; $i < $len; $i++) {
$tabbar2[] = $i != $selected
? "<li><a href=\"".$tabbar[$i]['link']."\">".$tabbar[$i]['title']."</a></li>\n"
: "<li class=\"active\"><a href=\"#\">".$tabbar[$i]['title']."</a></li>\n";
}
<?php foreach($page['tabs'] as $k => $v) { if($v) { ?>
<li><a href="<?php echo $v ?>"><?php echo $k ?></a></li>
<?php } else { ?>
<li class="active"><a href="#"><?php echo $k ?></a></li><?php }} ?>
</ul>
<?php }
if($len > $maxwidth) { // && $len - $selected > $maxwidth
if($selected < $maxwidth) {
$tabbar = array_splice($tabbar2, 0, $maxwidth);
array_splice($tabbar2, count($tabbar2),0, $tabbar);
} // else 3 rows menu
}
echo "<ul class=\"tabs\">\n";
$i = 0;
foreach($tabbar2 as $v) {
if($i > 0 && (($len-$i)%$maxwidth) == 0) {
echo "</ul><br clear=\"all\"><ul class=\"tabs\">\n";
}
echo $v;
$i++;
}
echo "</ul>";
}
}
?>

View File

@ -22,29 +22,23 @@ $page['fixedwrap'] = true;
function tpl_content() { global $page, $webimroot, $errors;
?>
<p>Mibew Messenger is distributed under the terms of the Eclipse Public License (or
the General Public License, this means that you can choose one of two, and use it
accordingly) with the following special exception.</p>
<p>Copyright 2005-2013 the original author or authors.</p>
<br/>
<b>License exception:</b>
<p>No one may remove, alter or hide any copyright notices or links to the community
site ("http://mibew.org") contained within the Program. Any derivative work
must include this license exception.</p>
<p>Licensed under the <b>Apache License, Version 2.0</b> (the "License").</p>
<br/>
<p>Eclipse Public License:<br/>
<a href="<?php echo $webimroot ?>/epl-v10.html">Local version</a> or <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>
</p>
<p>You may obtain a copy of the License at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a></p>
<br/>
<p>
General Public License:<br/>
<a href="<?php echo $webimroot ?>/gpl-2.0.txt">Local version</a> or <a href="http://www.gnu.org/copyleft/gpl.html">http://www.gnu.org/copyleft/gpl.html</a>
</p>
<p>Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.</p>
<?php
} /* content */

View File

@ -161,6 +161,14 @@ $menuItemsCount = 2;
<?php echo getlocal('menu.updates.content') ?>
</td>
<?php menuseparator(); ?>
<td class="dashitem">
<img src="<?php echo $webimroot ?>/images/dash/notifications.gif" alt=""/>
<a href='<?php echo $webimroot ?>/operator/notifications.php'>
<?php echo getlocal('menu.notifications') ?></a>
<?php echo getlocal('menu.notifications.content') ?>
</td>
<?php menuseparator(); ?>
<?php } ?>
<td class="dashitem">

View File

@ -0,0 +1,71 @@
<?php
/*
* Copyright 2005-2013 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
$page['title'] = getlocal("notification.title");
function tpl_content() { global $page, $webimroot, $errors;
$notification = $page['notification'];
?>
<?php echo getlocal("notification.intro") ?>
<br/><br/>
<div class="logpane">
<div class="header">
<div class="wlabel">
<?php echo getlocal("notification.label.to") ?>:
</div>
<div class="wvalue">
<?php echo topage(htmlspecialchars($notification['vcto'])) ?>
</div>
<br clear="all"/>
<div class="wlabel">
<?php echo getlocal("notification.label.time") ?>:
</div>
<div class="wvalue">
<?php echo date_to_text($notification['created']) ?>
</div>
<br clear="all"/>
<div class="wlabel">
<?php echo getlocal("notification.label.subj") ?>:
</div>
<div class="wvalue">
<?php echo topage(htmlspecialchars($notification['vcsubject'])) ?>
</div>
<br clear="all"/>
</div>
<div class="message">
<?php echo topage(prepare_html_message(htmlspecialchars($notification['tmessage']))) ?>
</div>
</div>
<br />
<a href="<?php echo $webimroot ?>/operator/notifications.php">
<?php echo getlocal("notification.back_to_list") ?></a>
<br />
<?php
} /* content */
require_once('inc_main.php');
?>

View File

@ -0,0 +1,132 @@
<?php
/*
* Copyright 2005-2013 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
require_once("inc_menu.php");
$page['title'] = getlocal("page.notifications.title");
$page['menuid'] = "notifications";
function shorten($text,$len) {
if(strlen($text) > $len)
return substr($text,0,$len)."..";
return $text;
}
function tpl_header() { global $page, $webimroot;
?>
<script type="text/javascript" language="javascript" src="<?php echo $webimroot ?>/js/jquery-1.4.2.min.js"></script>
<?php
}
function tpl_content() { global $page, $webimroot, $errors;
?>
<?php echo getlocal("page.notifications.intro") ?>
<br />
<br />
<?php
require_once('inc_errors.php');
?>
<form name="notifyFilterForm" method="get" action="<?php echo $webimroot ?>/operator/notifications.php">
<div class="mform"><div class="formtop"><div class="formtopi"></div></div><div class="forminner">
<div class="packedFormField">
<?php echo getlocal("notifications.kind") ?><br/>
<select name="kind" onchange="this.form.submit();"><?php
foreach($page['allkinds'] as $k) {
echo "<option value=\"".$k."\"".($k == form_value("kind") ? " selected=\"selected\"" : "").">".getlocal("notifications.kind.".($k ? $k : "all"))."</option>";
} ?></select>
</div>
<div class="packedFormField">
<?php echo getlocal("notifications.locale") ?><br/>
<select name="lang" onchange="this.form.submit();"><?php
foreach($page['locales'] as $k) {
echo "<option value=\"".$k["id"]."\"".($k["id"] == form_value("lang") ? " selected=\"selected\"" : "").">".$k["name"]."</option>";
} ?></select>
</div>
<br clear="all"/>
</div><div class="formbottom"><div class="formbottomi"></div></div></div>
</form>
<br/>
<?php if( $page['pagination'] ) { ?>
<table class="list">
<thead>
<tr class="header">
<th>
<?php echo getlocal("notifications.head.to") ?>
</th><th>
<?php echo getlocal("notifications.head.subj") ?>
</th><th>
<?php echo getlocal("notifications.head.msg") ?>
</th><th>
<?php echo getlocal("notifications.head.time") ?>
</th>
</tr>
</thead>
<tbody>
<?php
if( $page['pagination.items'] ) {
foreach( $page['pagination.items'] as $b ) { ?>
<tr>
<td class="notlast">
<a href="<?php echo $webimroot ?>/operator/notification.php?id=<?php echo $b['id'] ?>" target="_blank" onclick="this.newWindow = window.open('<?php echo $webimroot ?>/operator/notification.php?id=<?php echo $b['id'] ?>', '', 'toolbar=0,scrollbars=1,location=0,status=1,menubar=0,width=720,height=520,resizable=1');this.newWindow.focus();this.newWindow.opener=window;return false;" class="<?php echo $b['vckind'] == 'xmpp' ? 'xmpp' : 'mail' ?>">
<?php echo htmlspecialchars(shorten(topage($b['vcto']),30)) ?>
</a>
</td>
<td class="notlast">
<?php echo htmlspecialchars(shorten(topage($b['vcsubject']),30)) ?>
</td>
<td class="notlast">
<?php echo htmlspecialchars(shorten(topage($b['tmessage']),30)) ?>
</td>
<td>
<?php echo date_to_text($b['created']) ?>
</td>
</tr>
<?php
}
} else {
?>
<tr>
<td colspan="4">
<?php echo getlocal("tag.pagination.no_items.elements") ?>
</td>
</tr>
<?php
}
?>
</tbody>
</table>
<?php
if( $page['pagination.items'] ) {
echo "<br/>";
echo generate_pagination($page['pagination']);
}
}
?>
<?php
} /* content */
require_once('inc_main.php');
?>