Compare commits

..

241 Commits

Author SHA1 Message Date
7cfe7d6a4d Update packaging script 2013-09-17 19:18:49 +04:00
95c37f1777 Change version to 1.6.6 2013-09-14 22:52:03 +04:00
547a415488 Update changelog 2013-09-14 22:49:42 +04:00
032306866a Fix bugs with extra escaping of special chars in requests related to operations with threads 2013-09-14 22:31:13 +04:00
2779206a1a Add new localization constants 2013-09-14 22:15:36 +04:00
6e3f6a4201 Add missed parentheses 2013-09-14 20:52:07 +04:00
5d728ed7fd Completely wiped out the old application name 2013-09-14 20:32:58 +04:00
16879885c5 Change some translations to decrease confusion with the old application name 2013-09-14 20:18:35 +04:00
fc965fd285 Rename some cookies to decrease confusion with the old application name 2013-09-14 16:36:39 +04:00
1c0b4f48c9 Rename some functions to decrease confusion with the old application name 2013-09-14 16:30:54 +04:00
e94ba149df Update README file to decrease confusion with the old application name 2013-09-14 16:28:50 +04:00
5afc23c446 Switch to a properly hashed passwords 2013-09-14 15:59:38 +04:00
003ba6f46b Make session cookie more secure 2013-09-14 15:58:57 +04:00
13729dac93 Improve generation of CAPTCHA images 2013-09-13 22:56:01 +04:00
8bb1551f7a Switch to a more secure method for generation of the thread token 2013-09-13 20:19:12 +04:00
d9a8afeb57 Fix regular expressions for integer IDs 2013-09-13 20:18:06 +04:00
d7c18215c5 Switch to a more secure method for generation of the CSRF token 2013-09-13 19:53:20 +04:00
2334a0ed0a Switch to a more secure method for generation of the token for request for a password restore 2013-09-13 19:36:56 +04:00
e61706955a Switch to a more reliable function for generation of userid 2013-09-13 19:36:31 +04:00
b77e2a9743 Fix bug with userid type in sql requests 2013-09-13 19:33:31 +04:00
4f43280bd1 Set PHPSESSID cookie as secure if HTTPS is used 2013-09-13 16:21:10 +04:00
e7ae0845d8 Set PHPSESSID cookie as HTTP-only 2013-09-13 15:56:06 +04:00
0cfb7a74f5 Fix multiple potential filepath manipulation vulnerabilities 2013-09-13 15:26:54 +04:00
84467fbb8d Restrict opening of files outside the Mibew installation 2013-09-13 14:34:59 +04:00
afa06b21e2 Bug fix
Properly check file handler before making use of it in common.php
2013-09-13 14:34:32 +04:00
6747e2f557 Improve algorithm of setting and storing locale setting 2013-09-13 13:36:04 +04:00
2559630e8f Add verification of values of the default and home locales 2013-09-11 20:18:26 +04:00
097ee2b0d9 Fix files' permissions 2013-09-11 19:35:17 +04:00
50c0b50abf Sanitize database tables prefix 2013-09-10 19:10:26 +04:00
f26af7f05d Make headers more safe 2013-09-10 17:41:54 +04:00
b42f5bdd0d Sanitize path to application and remove extra slashes from it 2013-09-10 17:28:22 +04:00
92847d1a52 Fix multiple (potential) SQL Injections 2013-09-10 16:21:34 +04:00
2532f3bc01 Enable default conversion of single quotes during HTML entities conversion 2013-09-06 17:08:27 +04:00
441e88dfa9 Remove redundant whitespaces 2013-09-06 15:35:11 +04:00
0f86f558ec Fix HTML attributes markup 2013-09-06 15:34:42 +04:00
621f5951c4 Fix paths in login-related forms 2013-09-06 14:34:44 +04:00
4e6eff55e5 Mark necessary comment field in ban form 2013-09-06 14:33:11 +04:00
03265a1fb0 Fix multiple CSRF vulnerabilities 2013-09-06 14:32:25 +04:00
9aef0fb2d4 Fix multiple XSS vulnerabilities (including CVE-2012-0829) 2013-09-06 14:31:07 +04:00
Dmitriy Simushev
3ee7fca025 Add captcha to pre-chat survey 2013-08-28 12:33:25 +04:00
845d250b88 Fix steps enumeration in README file 2013-08-04 13:38:17 +04:00
efe6caee71 Mibew Tray 1.1.1 release
Update links to an actual mibew domain in Mibew Tray application (thanks to Nemesis0one)
2013-07-31 16:38:10 +04:00
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
1514 changed files with 44319 additions and 62705 deletions

64
.gitignore vendored
View File

@ -1,55 +1,9 @@
# IDE folders bin
.idea src/messenger/.idea/workspace.xml
src/messenger/webim/install/package
src/mibew/install/package src/messenger/absent_*
src/absent_* src/messenger/release*
src/release* src/mibewjava/.idea/workspace.xml
src/upload* src/mibewjava/org.mibew.notifier/resources/
src/*.po mibew.ini
.DS_Store
# Do not index actual configuration files
src/mibew/configs/config.yml
src/tests/server_side/mibew/libs/config.php
# Do not index avatars
src/mibew/files/avatar/*
!src/mibew/files/avatar/.keep
# Do not index cache files
src/mibew/cache/*
!src/mibew/cache/.keep
!src/mibew/cache/.htaccess
# Do not index plugins
src/mibew/plugins/*
!src/mibew/plugins/.keep
# Do not index custom locales
src/mibew/locales/*
!src/mibew/locales/en/
# Do not index composer files
src/composer.phar
src/composer.lock
# Do not index third-party libraries
src/mibew/vendor
src/mibew/js/vendor
# Do not index node.js modules that are used for building
src/node_modules
src/package-lock.json
# Do not index compiled js files of the core
src/mibew/js/compiled/*
!src/mibew/js/compiled/.keep
# Do not index compiled files of chat styles
src/mibew/styles/chats/*/templates_compiled/client_side/*
!src/mibew/styles/chats/*/templates_compiled/client_side/.keep
src/mibew/styles/chats/*/js/compiled/*
!src/mibew/styles/chats/*/js/compiled/.keep
# Do not index compiled files of page styles
src/mibew/styles/pages/*/templates_compiled/client_side/*
!src/mibew/styles/pages/*/templates_compiled/client_side/.keep

3
.gitmodules vendored
View File

@ -1,3 +0,0 @@
[submodule "src/i18n"]
path = src/i18n
url = git@github.com:Mibew/i18n.git

View File

@ -1,12 +0,0 @@
### Environment
* Mibew Messenger version:
* OS:
* Web server:
* PHP:
* PHP extensions:
* MySQL:
### Expected behavior
### Actual behavior
### Steps to reproduce the behavior

View File

@ -1 +0,0 @@
./src/mibew/LICENSE.txt

View File

@ -1,8 +0,0 @@
Fixes # .
Changes proposed in this pull request:
-
-
-
@Mibew/core-developers

BIN
README.md

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
docs/design/he/he_off.psd Normal file

Binary file not shown.

BIN
docs/design/he/he_on.psd Normal file

Binary file not shown.

BIN
docs/design/logo.psd Normal file

Binary file not shown.

BIN
docs/design/logo/16x16.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 348 B

BIN
docs/design/logo/32x32.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 796 B

BIN
docs/design/logo/64x64.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

Binary file not shown.

View File

@ -1,4 +0,0 @@
{
"directory": "./mibew/js/vendor",
"analytics": false
}

View File

@ -1,27 +0,0 @@
{
"extends": "eslint:recommended",
"rules": {
"indent": ["error", 4, {"SwitchCase": 1}],
"no-trailing-spaces": "error",
"semi": ["error", "always"],
"guard-for-in": "error",
"no-unused-vars": ["error", {"caughtErrors": "none", "args": "none"}]
},
"globals": {
"Mibew": true,
"MibewAPI": true,
"MibewAPIInteraction": true,
"MibewAPIChatInteraction": true,
"MibewAPIUsersInteraction": true,
"MibewAPIExecutionContext": true,
"Handlebars": true,
"_": true,
"Backbone": true,
"jQuery": true,
"vex": true,
"validator": true
},
"env":{
"browser": true
}
}

View File

@ -1,17 +0,0 @@
{
"name": "mibew",
"private": true,
"dependencies": {
"underscore": "1.8.2",
"json": "https://github.com/douglascrockford/JSON-js.git#c98948ae1944a28e2e8ebc3717894e580aeaaa05",
"jquery": "1.11.3",
"backbone": "1.1.2",
"marionette": "2.4.1",
"handlebars": "4.3.0",
"vex": "2.3.2",
"validator-js": "3.40.0"
},
"resolutions": {
"underscore": "1.8.2"
}
}

View File

@ -1,51 +0,0 @@
{
"name": "mibew/mibew",
"version": "3.6.0",
"description": "Mibew Messenger - open-source live support application",
"type": "project",
"homepage": "https://mibew.org",
"license": "Apache-2.0",
"authors": [
{
"name": "Mibew Messenger Project",
"homepage": "https://mibew.org/credits"
}
],
"support": {
"email": "support@mibew.org",
"issues": "https://github.com/mibew/mibew/issues",
"forum": "https://mibew.org/forums",
"source": "https://github.com/mibew/mibew"
},
"repositories": [
{
"type": "vcs",
"url": "https://github.com/mibew/handlebars.php"
},
{
"type": "vcs",
"url": "https://github.com/mibew/handlebars.php-helpers"
}
],
"require": {
"mibew/handlebars.php": "~0.10.5",
"mibew/handlebars.php-helpers": "1.*",
"symfony/http-foundation": "4.4.*",
"symfony/routing": "4.4.*",
"symfony/config": "4.4.*",
"symfony/yaml": "^5.2",
"symfony/translation": "2.6.*",
"tedivm/stash": "0.12.*",
"mibew/html5": "1.1.*",
"vierbergenlars/php-semver": "3.0.*",
"swiftmailer/swiftmailer": "~5.4.0",
"ua-parser/uap-php": "^3.9",
"true/punycode": "~1.1"
},
"require-dev": {
"squizlabs/php_codesniffer": "3.*"
},
"config": {
"vendor-dir": "mibew/vendor"
}
}

View File

@ -1,743 +0,0 @@
// Initialize requirements
var fs = require('fs'),
https = require('https'),
exec = require('child_process').exec,
eventStream = require('event-stream'),
runSequence = require('gulp4-run-sequence'),
through = require('through2'),
lodash = require('lodash'),
PoFile = require('pofile'),
strftime = require('strftime'),
del = require('del'),
bower = require('bower'),
gulp = require('gulp'),
uglify = require('gulp-uglify'),
concat = require('gulp-concat'),
phpcs = require('gulp-phpcs'),
order = require('gulp-order'),
handlebars = require('gulp-handlebars'),
handlebarsEngine = require('handlebars'),
defineModule = require('gulp-define-module'),
header = require('gulp-header'),
zip = require('gulp-zip'),
tar = require('gulp-tar'),
gzip = require('gulp-gzip'),
chmod = require('gulp-chmod'),
xgettext = require('gulp-xgettext'),
concatPo = require('gulp-concat-po'),
rename = require('gulp-rename'),
eslint = require('gulp-eslint'),
removeDuplicateHeaders = require('mibew-gulp-greh'),
mkdirp = require('mkdirp');
// Set global configuration
var config = {
mibewPath: 'mibew',
configsPath: 'mibew/configs',
phpVendorPath: 'mibew/vendor',
jsVendorPath: 'mibew/js/vendor',
pluginsPath: 'mibew/plugins',
avatarsPath: 'mibew/files/avatar',
cachePath: 'mibew/cache',
jsPath: 'mibew/js',
chatStylesPath: 'mibew/styles/chats',
pageStylesPath: 'mibew/styles/pages',
i18nPath: 'i18n',
i18nPrefix: 'mibew-i18n-',
releasePath: 'release',
uploadPath: 'upload',
compiledTemplatesHeader: fs.readFileSync('tools/compiled_templates_header.txt'),
getComposerUrl: 'https://getcomposer.org/installer',
phpBin: 'php -d "suhosin.executor.include.whitelist = phar" -d "memory_limit=512M"',
package: require('./composer.json'),
msginit: 'msginit',
msgcat: 'msgcat'
}
config.i18nSuffix = '-' + config.package.version + '-' + strftime('%Y%m%d');
// Tasks for cleaning //////////////////
// Cleans all built files
gulp.task('clean', function(callback) {
return del([
config.releasePath,
'composer.lock',
config.phpVendorPath,
config.jsVendorPath,
config.jsPath + '/compiled/**/*',
'!' + config.jsPath + '/compiled/.keep',
config.chatStylesPath + '/*/templates_compiled/client_side/*.js',
config.chatStylesPath + '/*/js/compiled/*.js',
config.pageStylesPath + '/*/templates_compiled/client_side/*.js'
], callback);
});
// Cleans temporary English translation in the release dir
gulp.task('clean-tmp-po', function(callback) {
return del([config.releasePath + '/translation.po'], callback);
});
// Cleans temporary files of translations in the release dir
gulp.task('clean-tmp-i18n-files', function(callback) {
return del([
config.releasePath + '/**/*',
'!' + config.releasePath + '/*.zip',
'!' + config.releasePath + '/*.tar.gz',
'!' + config.releasePath + '/*.pot'
], callback);
});
// Cleans all files prepared for uploading to CDN
gulp.task('clean-upload', function(callback) {
return del([config.uploadPath], callback);
});
// Cleans everything
gulp.task('clean-all', function(callback) {
runSequence( ['clean', 'clean-upload'],
callback );
});
// Watcher tasks ///////////////////////
// Watch styles
gulp.task('watch', function() {
gulp.watch(config.pageStylesPath + '/**/*.handlebars', gulp.series('page-styles'));
gulp.watch(config.chatStylesPath + '/**/js/source/**/*.js', gulp.series('chat-styles-js'));
gulp.watch(config.chatStylesPath + '/**/*.handlebars', gulp.series('chat-styles-handlebars'));
});
// Service tasks //////////////////
// Get and install PHP Composer
gulp.task('get-composer', function(callback) {
// Check whether Composer is already in place
if (fs.existsSync('./composer.phar')) {
callback(null);
return;
}
// Get installer from the Internet
https.get(config.getComposerUrl, function(response) {
// Run PHP to install Composer
var php = exec(config.phpBin, function(error, stdout, stderr) {
callback(error ? stderr : null);
});
// Pass installer code to PHP via STDIN
response.pipe(php.stdin);
});
});
// Install Composer dependencies excluding development ones
gulp.task('composer-install', gulp.series('get-composer', function(callback) {
exec(config.phpBin + ' composer.phar install --no-dev',
function(error, stdout, stderr) {
callback(error ? stderr : null);
});
}));
// Install all Composer dependencies
gulp.task('composer-install-dev', gulp.series('get-composer', function(callback) {
exec(config.phpBin + ' composer.phar install',
function(error, stdout, stderr) {
callback(error ? stderr : null);
});
}));
// Installs bower dependencies
gulp.task('bower-install', function(callback) {
bower.commands.install([], {}, {})
.on('error', function(error) {
callback(error);
})
.on('end', function() {
// We should manually minify JavaScript files that was not minified
// by bower packages' authors
// TODO: This is a temproary workaround and should be removed once
// the packages will be fixed
var stream = eventStream.merge(
gulp.src(config.jsVendorPath + '/backbone/backbone.js',
{base: config.jsVendorPath})
.pipe(uglify({preserveComments: 'some'}))
// There are neither "@license" tag nor "!preserve" in the
// header. Add the header manually
.pipe(header(
"// Backbone.js 1.1.2\n"
+ "// (c) 2010-2015 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n"
+ "// Backbone may be freely distributed under the MIT license.\n"
+ "// For all details and documentation:\n"
+ "// http://backbonejs.org\n"
))
.pipe(rename('backbone/backbone-min.js')),
gulp.src(config.jsVendorPath + '/json/json2.js',
{base: config.jsVendorPath})
.pipe(uglify({preserveComments: 'some'}))
// There are neither "@license" tag nor "!preserve" in the
// header, add the header manually
.pipe(header("// json2.js. Public Domain. See http://www.JSON.org/js.html\n"))
.pipe(rename('json/json2.min.js'))
)
.pipe(gulp.dest(config.jsVendorPath));
stream
.on('error', callback)
.on('end', callback);
});
});
// Tasks for checking //////////////////
// Checks all PHP files with PHP Code Sniffer
gulp.task('phpcs', gulp.series('composer-install-dev', function() {
return gulp.src([
config.mibewPath + '/**/*.php',
'!' + config.phpVendorPath + '/**/*.*',
'!' + config.pluginsPath + '/**/*.*',
'!' + config.cachePath + '/**/*.*'
], {
// Content of the cache directory is readable only for webserver.
// Thus we must to set "strict" option to false to prevent "EACCES"
// errors. At the same we need to see all errors that take place.
strict: false,
silent: false
})
.pipe(phpcs({
bin: config.phpVendorPath + '/bin/phpcs',
standard: 'PSR2',
warningSeverity: 0
}))
.pipe(phpcs.reporter('log'))
.pipe(phpcs.reporter('fail'));
}));
// Checks all JavaScript Source files with ESLint
gulp.task('eslint', function() {
return gulp.src(config.jsPath + '/source/**/*.js')
.pipe(eslint())
.pipe(eslint.format())
.pipe(eslint.failAfterError());
});
// Restore empty English translation in the source code
gulp.task('post-pack-cleanup', function(callback) {
gulp.src('translation.po')
.pipe(gulp.dest(config.mibewPath + '/locales/en/'));
del(['translation.po', config.releasePath + '/translation.po'], callback);
});
// Tasks of compiling //////////////////
// Compile all JavaScript files of the Mibew Messenger Core
gulp.task('js', function() {
return eventStream.merge(
getClientSideApp('default'),
getClientSideApp('chat'),
getClientSideApp('thread_log'),
getClientSideApp('users'),
gulp.src(config.jsPath + '/source/**/*.js')
)
.pipe(uglify({preserveComments: 'some'}))
.pipe(removeDuplicateHeaders())
.pipe(gulp.dest(config.jsPath + '/compiled'));
});
// Compile and concatenate Handlebars templates for all chat styles
gulp.task('chat-styles-handlebars', function() {
return getChildDirs(config.chatStylesPath)
.then(function (dirs) {
return Promise.all(dirs.map(function (dir) {
return new Promise(function(resolve, reject) {
gulp.src(config.chatStylesPath + '/' + dir
+ '/templates_src/client_side/**/*.handlebars')
.pipe(handlebars({
// Use specific version of Handlebars.js
handlebars: handlebarsEngine
}))
.pipe(wrapHandlebarsTemplate())
.pipe(concat('templates.js'))
.pipe(uglify({preserveComments: 'some'}))
.pipe(header(config.compiledTemplatesHeader))
.pipe(gulp.dest(config.chatStylesPath + '/' + dir
+ '/templates_compiled/client_side'))
.on('end', resolve)
.on('error', reject);
});
}));
});
});
// Compile and concatenate js files for all chat styles
gulp.task('chat-styles-js', function() {
return getChildDirs(config.chatStylesPath)
.then(function (dirs) {
return Promise.all(dirs.map(function (dir) {
return new Promise(function(resolve, reject) {
gulp.src(config.chatStylesPath + '/' + dir
+ '/js/source/**/*.js')
.pipe(concat('scripts.js'))
.pipe(uglify({preserveComments: 'some'}))
.pipe(gulp.dest(config.chatStylesPath + '/' + dir
+ '/js/compiled'))
.on('end', resolve)
.on('error', reject);
});
}));
});
});
// Performs all job related to pages styles
gulp.task('page-styles', function() {
return getChildDirs(config.pageStylesPath)
.then(function (dirs) {
return Promise.all(dirs.map(function (dir) {
return new Promise(function(resolve, reject){
gulp.src(config.pageStylesPath + '/' + dir
+ '/templates_src/client_side/**/*.handlebars')
.pipe(handlebars({
// Use specific version of Handlebars.js
handlebars: handlebarsEngine
}))
.pipe(wrapHandlebarsTemplate())
.pipe(concat('templates.js'))
.pipe(uglify({preserveComments: 'some'}))
.pipe(header(config.compiledTemplatesHeader))
.pipe(gulp.dest(config.pageStylesPath + '/' + dir
+ '/templates_compiled/client_side'))
.on('end', resolve)
.on('error', reject);
});
}));
});
});
// Performs all job related to chat styles
gulp.task('chat-styles', gulp.series('chat-styles-handlebars', 'chat-styles-js'));
// Prepares ready to use development version of Mibew Messenger without
// packing or validating it
gulp.task('rebuild', function(callback) {
runSequence(
'clean',
['js', 'chat-styles', 'page-styles', 'composer-install',
'bower-install'],
callback
);
});
// Tasks for localization issues ///////
// Generate POT-file based upon the source code
gulp.task('generate-pot', function() {
return eventStream.merge(
gulp.src([
config.mibewPath + '/**/*.php',
'!' + config.phpVendorPath + '/**/*.*',
'!' + config.pluginsPath + '/**/*.*',
'!' + config.cachePath + '/**/*.*'
], {
// Content of the cache directory is readable only for
// webserver. Thus we must to set "strict" option to false
// to prevent "EACCES" errors. At the same we need to see all
// errors that take place.
strict: false,
silent: false
})
.pipe(xgettext({
language: 'PHP',
keywords: [
{name: 'getlocal'},
{name: 'no_field'},
{name: 'wrong_field'},
{name: 'failed_uploading_file', singular: 2}
]
})),
gulp.src(config.jsPath + '/source/**/*.js', {base: config.mibewPath})
.pipe(xgettext({
language: 'JavaScript',
keywords: [
{name: 'trans'}
]
})),
gulp.src([
config.chatStylesPath + '/default/templates_src/**/*.handlebars',
config.pageStylesPath + '/default/templates_src/**/*.handlebars'
], {base: config.mibewPath})
.pipe(xgettextHandlebars())
)
.pipe(concatPo(config.i18nPrefix + 'translation'
+ config.i18nSuffix + '.pot',
{
headers: {
'Project-Id-Version': 'Mibew Messenger '
+ config.package.version,
'Report-Msgid-Bugs-To': config.package.support.email,
'POT-Creation-Date': strftime('%Y-%m-%d %H:%M%z'),
'PO-Revision-Date': '',
'Last-Translator': '',
'Language-Team': '',
'Content-Type': 'text/plain; charset=UTF-8'
}
})
)
.pipe(gulp.dest(config.releasePath));
});
// Generate temporary English translation to be used in the release
gulp.task('generate-tmp-po', gulp.series('generate-pot', function(callback) {
return exec(config.msginit + ' --no-translator --no-wrap -i '
+ config.releasePath + '/' + config.i18nPrefix + 'translation'
+ config.i18nSuffix + '.pot' + ' -l en -o '
+ config.releasePath + '/translation.po',
function(error, stdout, stderr) {
callback(error ? stderr : null);
});
}));
// Generate complete translations (that includes missed strings) to be used
// in the release
gulp.task('generate-pos', gulp.series('generate-tmp-po', function(callback) {
return getChildDirs(config.i18nPath + '/translations')
.then(function (dirs) {
return Promise.all(dirs.map(function (dir) {
return new Promise(function(resolve, reject) {
mkdirp(config.releasePath + '/' + dir, function (error) {
if (error) {
reject(error);
}
});
exec(config.msgcat + ' ' + config.i18nPath + '/translations/'
+ dir + '/translation.po ' + config.releasePath
+ '/translation.po --no-location --no-wrap --use-first'
+ ' -o ' + config.releasePath + '/' + dir
+ '/translation.po',
function(error, stdout, stderr) {
if (error) {
reject(error);
}
});
var sources = [
config.i18nPath + '/translations/' + dir + '/**/*',
'!' + config.i18nPath + '/translations/' + dir
+ '/translation.po'
];
gulp.src(sources)
.pipe(gulp.dest(config.releasePath + '/' + dir))
.on('error', reject)
.on('end', resolve);
});
}));
});
}));
// Packaging tasks /////////////////////
// Pack sources for release as .zip and .tar.gz archives
gulp.task('pack-sources', gulp.series('composer-install', 'bower-install', function() {
gulp.src(config.mibewPath + '/locales/en/translation.po')
.pipe(gulp.dest('.'));
gulp.src(config.releasePath + '/translation.po')
.pipe(gulp.dest(config.mibewPath + '/locales/en/'));
var sources = [
config.mibewPath + '/**/*',
// Exclude user's config
'!' + config.configsPath + '/config.yml',
// Exclude cache files but not the ".keep" file.
'!' + config.cachePath + '/**/!(.keep)',
// Exclude avatars but not the ".keep" file.
'!' + config.avatarsPath + '/!(.keep)',
// Exclude plugins but not the ".keep" file.
'!' + config.pluginsPath + '/!(.keep)',
'!' + config.pluginsPath + '/*/**/*',
// Exclude Git repositories that can be shipped with third-party libs
'!' + config.phpVendorPath + '/**/.git',
'!' + config.phpVendorPath + '/**/.git/**/*',
// Exclude vendors binaries
'!' + config.phpVendorPath + '/bin/**/*',
// Exclude JavaScript sources
'!' + config.jsPath + '/source/**/*',
// Actually we does not need backbone.babysitter and backbone.wreqr
// dependencies because they embed into marionette.js. So we exclude
// "backbone.babysitter" and "backbone.wreqr" directories and all their
// contents.
'!' + config.jsVendorPath + '/backbone.babysitter{,/**}',
'!' + config.jsVendorPath + '/backbone.wreqr{,/**}',
// Exclude dot files within third-party JS libraries.
'!' + config.jsVendorPath + '/**/.*',
// Exclude config files of various package systems
'!' + config.jsVendorPath + '/**/{bower,component,package,composer}.json',
// Exclude config files of various build systems
'!' + config.jsVendorPath + '/**/Gruntfile.*',
'!' + config.jsVendorPath + '/**/gulpfile.*',
'!' + config.jsVendorPath + '/**/Makefile',
// Exclude HTML files from third-party JS libraries. Such files can be
// used for docs or for tests, we need none of them.
'!' + config.jsVendorPath + '/**/*.html',
// There are too many useless files in Vex.js library. Exclude them.
'!' + config.jsVendorPath + '/vex/sass{,/**}',
'!' + config.jsVendorPath + '/vex/docs{,/**}',
'!' + config.jsVendorPath + '/vex/docs{,/**}',
'!' + config.jsVendorPath + '/vex/coffee{,/**}'
];
var srcOptions = {
// Dot files (.htaccess, .keep, etc.) must be included in the package
dot: true,
// Content of the cache directory is readable only for webserver. Thus
// we must to set "strict" option to false to prevent "EACCES" errors.
// At the same we need to see all errors that take place.
strict: false,
silent: false,
// Preserve root directory name (i.e. 'mibew/')
base: '.'
}
var version = config.package.version;
return eventStream.merge(
gulp.src(sources, srcOptions)
.pipe(zip('mibew-' + version + '.zip')),
gulp.src(sources, srcOptions)
.pipe(tar('mibew-' + version + '.tar'))
.pipe(gzip())
)
.pipe(chmod(644))
.pipe(gulp.dest(config.releasePath));
}));
// Pack translations for release as .zip and .tar.gz archives
gulp.task('pack-i18n', function(callback) {
return getChildDirs(config.i18nPath + '/translations')
.then(function (dirs) {
return Promise.all(dirs.map(function (dir) {
return new Promise(function(resolve, reject) {
var srcOptions = {
base: config.releasePath
};
eventStream.merge(
gulp.src(config.releasePath + '/' + dir
+ '/**/*', srcOptions)
.pipe(zip(config.i18nPrefix + dir
+ config.i18nSuffix + '.zip')),
gulp.src(config.releasePath + '/' + dir
+ '/**/*', srcOptions)
.pipe(tar(config.i18nPrefix + dir
+ config.i18nSuffix + '.tar'))
.pipe(gzip())
)
.pipe(chmod(644))
.pipe(gulp.dest(config.releasePath))
.on('error', reject)
.on('end', resolve);
});
}));
});
});
// Tasks of releasing //////////////////
// Prepare release of Mibew Messenger
gulp.task('prepare-release', function(callback) {
runSequence(
'clean',
['phpcs', 'js', 'chat-styles', 'page-styles', 'generate-pot',
'generate-tmp-po'],
'pack-sources',
'post-pack-cleanup',
callback
);
});
// Prepare releases of translations for Mibew Messenger
gulp.task('prepare-i18n-release', function(callback) {
runSequence( 'clean-tmp-po',
'generate-pos',
'pack-i18n',
'clean-tmp-i18n-files',
callback
);
});
// Mirror prepared releases of Mibew Messenger and its translations in a form
// intended for uploading into the CDN
gulp.task('prepare-for-upload', function(callback) {
gulp.src(config.releasePath + '/mibew-' + config.package.version + '.*')
.pipe(gulp.dest(config.uploadPath + '/core/' + config.package.version + '/'));
gulp.src(config.releasePath + '/mibew-i18n-translation-' + config.package.version + '-*.pot')
.pipe(gulp.dest(config.uploadPath + '/i18n/_pot/' + config.package.version + '/'));
return getChildDirs(config.i18nPath + '/translations')
.then(function (dirs) {
return Promise.all(dirs.map(function (dir) {
return new Promise(function(resolve, reject) {
gulp.src(config.releasePath + '/mibew-i18n-' + dir + '-' + config.package.version + '-*.*')
.pipe(gulp.dest(config.uploadPath + '/i18n/' + dir + '/' + config.package.version + '/'))
.on('error', reject)
.on('end', resolve);
});
}));
});
});
// Perform all preparations before uploading the release of Mibew Messenger and
// its translations into the CDN
gulp.task('prepare-all', function(callback) {
runSequence('clean-all', 'prepare-release', 'prepare-i18n-release',
'prepare-for-upload', callback);
});
// Prepare release archives of the development version of Mibew Messenger
gulp.task('default', function(callback) {
runSequence(
'clean',
['js', 'chat-styles', 'page-styles', 'generate-tmp-po'],
'pack-sources',
['post-pack-cleanup', 'clean-tmp-po'],
callback
);
});
/**
* Loads and prepare js file for a client side application with the specified
* name.
*
* @param {String} name Application name.
* @returns A files stream that can be piped to any gulp plugin.
*/
var getClientSideApp = function(name) {
var appSource = config.jsPath + '/source/' + name;
return gulp.src(appSource + '/**/*.js')
.pipe(order(
[
appSource + '/init.js',
// The following line is equivalent to
// gulp.src([appSource + '/*.js', '!' + appSource + '/app.js']);
appSource + '/!(app).js',
appSource + '/models/**/base*.js',
appSource + '/models/**/*.js',
appSource + '/collections/**/base*.js',
appSource + '/collections/**/*.js',
appSource + '/model_views/**/base*.js',
appSource + '/model_views/**/*.js',
appSource + '/collection_views/**/base*.js',
appSource + '/collection_views/**/*.js',
appSource + '/regions/**/base*.js',
appSource + '/regions/**/*.js',
appSource + '/layouts/**/base*.js',
appSource + '/layouts/**/*.js',
appSource + '/**/base*.js',
// The following line is equivalent to
// gulp.src([appSource + '/**/*.js', '!' + appSource + '/app.js']);
'!' + appSource + '/app.js',
appSource + '/app.js'
],
{base: process.cwd()}
))
.pipe(concat(name + '_app.js'));
}
/**
* Wraps a handlebars template with a function and attach it to the
* Handlebars.templates object.
*
* @returns {Function} A function that can be used in pipe() method of a file
* stream right after gulp-handlebars plugin.
*/
var wrapHandlebarsTemplate = function() {
return defineModule('plain', {
wrapper: '(function() {\n'
+ 'var templates = Handlebars.templates = Handlebars.templates || {};\n'
+ 'Handlebars.templates["<%= relative %>"] = <%= handlebars %>;\n'
+ '})()',
context: function(context) {
return {relative: context.file.relative.replace(/\.js$/, '').replace(/\\/g, '/')};
}
});
}
/**
* Extracts gettext messages from handlebars templates.
*
* @returns {Function} A function that can be used in pipe() method of a file
* stream.
*/
var xgettextHandlebars = function() {
var helperRegExp = /\{{2}l10n\s*('|")(.*?[^\\])\1.*?\}{2}/g;
return through.obj(function (file, enc, callback) {
var po = new PoFile();
match = false,
contents = file.contents.toString();
while (match = helperRegExp.exec(contents)) {
// Try to find item in the .po file by its name
var item = lodash.find(po.items, function(item) {
return match[2] === item.msgid;
});
var line = contents.substr(0, match.index).split(/\r?\n|\r/g).length;
if (!item) {
// There is no such item, create new one
item = new PoFile.Item();
item.msgid = match[2].replace(/\\'/g, "'").replace(/\\"/g, '"');
po.items.push(item);
}
// Add new reference
item.references.push(file.relative + ':' + line);
}
// Update file contents
file.contents = Buffer.from(po.toString());
this.push(file);
callback();
});
}
/**
* Retrieves list of all dirs which are placed in the specified one.
*
* @param {String} srcDir A dir to search.
* @returns Promise A promise which will be resolved with list of child dirs or
* rejected with the occured error.
*/
var getChildDirs = function(srcDir) {
return (new Promise(function(resolve, reject) {
fs.readdir(srcDir, function (err, files) {
if (err) {
reject(err);
} else {
resolve(files);
}
});
})).then(function (files) {
// Replace all files that are not a directory with nulls.
return Promise.all(files.map(function (file) {
return new Promise(function (resolve, reject) {
fs.lstat(srcDir + '/' + file, function (err, stat) {
if (err) {
reject(err);
} else {
resolve(stat.isDirectory() ? file : null);
}
});
});
}));
}).then(function(dirs) {
// Remove all nulls from the array.
return dirs.filter(function (dir) {
return null !== dir;
});
});
}

@ -1 +0,0 @@
Subproject commit 55868d9973f531c3550575481bde4233cc625b91

View File

@ -0,0 +1 @@
messenger

View File

@ -0,0 +1,31 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectCodeStyleSettingsManager">
<option name="PER_PROJECT_SETTINGS">
<value>
<option name="OTHER_INDENT_OPTIONS">
<value>
<option name="INDENT_SIZE" value="4" />
<option name="CONTINUATION_INDENT_SIZE" value="8" />
<option name="TAB_SIZE" value="4" />
<option name="USE_TAB_CHARACTER" value="true" />
<option name="SMART_TABS" value="false" />
<option name="LABEL_INDENT_SIZE" value="0" />
<option name="LABEL_INDENT_ABSOLUTE" value="false" />
<option name="USE_RELATIVE_INDENTS" value="false" />
</value>
</option>
<XML>
<option name="XML_LEGACY_SETTINGS_IMPORTED" value="true" />
</XML>
<codeStyleSettings language="PHP">
<indentOptions>
<option name="USE_TAB_CHARACTER" value="true" />
</indentOptions>
</codeStyleSettings>
</value>
</option>
<option name="USE_PER_PROJECT_SETTINGS" value="true" />
</component>
</project>

View File

@ -0,0 +1,13 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="Encoding" useUTFGuessing="true" native2AsciiForPropertiesFiles="false">
<file url="file://$PROJECT_DIR$" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/webim/locales/be/properties" charset="windows-1251" />
<file url="file://$PROJECT_DIR$/webim/locales/bg/properties" charset="windows-1251" />
<file url="file://$PROJECT_DIR$/webim/locales/ca/properties" charset="ISO-8859-1" />
<file url="file://$PROJECT_DIR$/webim/locales/ru/properties" charset="windows-1251" />
<file url="file://$PROJECT_DIR$/webim/locales/sp/properties" charset="ISO-8859-1" />
<file url="file://$PROJECT_DIR$/webim/locales/ua/properties" charset="windows-1251" />
</component>
</project>

View File

@ -0,0 +1,11 @@
<component name="InspectionProjectProfileManager">
<profile version="1.0" is_locked="false">
<option name="myName" value="Project Default" />
<option name="myLocal" value="false" />
<inspection_tool class="SpellCheckingInspection" enabled="false" level="TYPO" enabled_by_default="false">
<option name="processCode" value="true" />
<option name="processLiterals" value="true" />
<option name="processComments" value="true" />
</inspection_tool>
</profile>
</component>

View File

@ -0,0 +1,7 @@
<component name="InspectionProjectProfileManager">
<settings>
<option name="PROJECT_PROFILE" value="Project Default" />
<option name="USE_PROJECT_PROFILE" value="true" />
<version value="1.0" />
</settings>
</component>

View File

@ -0,0 +1,15 @@
<?xml version="1.0" encoding="UTF-8"?>
<module type="WEB_MODULE" version="4">
<component name="NewModuleRootManager">
<content url="file://$MODULE_DIR$" />
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
<orderEntry type="module-library">
<library name="PHP">
<CLASSES />
<SOURCES />
</library>
</orderEntry>
</component>
</module>

View File

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectResources">
<default-html-doctype>http://www.w3.org/1999/xhtml</default-html-doctype>
</component>
<component name="ProjectRootManager" version="2" />
</project>

View File

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectModuleManager">
<modules>
<module fileurl="file://$PROJECT_DIR$/.idea/messenger.iml" filepath="$PROJECT_DIR$/.idea/messenger.iml" />
</modules>
</component>
</project>

View File

@ -0,0 +1,80 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="CodeStyleSettingsManager">
<option name="PER_PROJECT_SETTINGS">
<value>
<ADDITIONAL_INDENT_OPTIONS fileType="js">
<option name="INDENT_SIZE" value="4" />
<option name="CONTINUATION_INDENT_SIZE" value="8" />
<option name="TAB_SIZE" value="4" />
<option name="USE_TAB_CHARACTER" value="false" />
<option name="SMART_TABS" value="false" />
<option name="LABEL_INDENT_SIZE" value="0" />
<option name="LABEL_INDENT_ABSOLUTE" value="false" />
<option name="USE_RELATIVE_INDENTS" value="false" />
</ADDITIONAL_INDENT_OPTIONS>
<ADDITIONAL_INDENT_OPTIONS fileType="jsp">
<option name="INDENT_SIZE" value="4" />
<option name="CONTINUATION_INDENT_SIZE" value="8" />
<option name="TAB_SIZE" value="4" />
<option name="USE_TAB_CHARACTER" value="false" />
<option name="SMART_TABS" value="false" />
<option name="LABEL_INDENT_SIZE" value="0" />
<option name="LABEL_INDENT_ABSOLUTE" value="false" />
<option name="USE_RELATIVE_INDENTS" value="false" />
</ADDITIONAL_INDENT_OPTIONS>
<ADDITIONAL_INDENT_OPTIONS fileType="php">
<option name="INDENT_SIZE" value="4" />
<option name="CONTINUATION_INDENT_SIZE" value="8" />
<option name="TAB_SIZE" value="4" />
<option name="USE_TAB_CHARACTER" value="false" />
<option name="SMART_TABS" value="false" />
<option name="LABEL_INDENT_SIZE" value="0" />
<option name="LABEL_INDENT_ABSOLUTE" value="false" />
<option name="USE_RELATIVE_INDENTS" value="false" />
</ADDITIONAL_INDENT_OPTIONS>
<ADDITIONAL_INDENT_OPTIONS fileType="sass">
<option name="INDENT_SIZE" value="2" />
<option name="CONTINUATION_INDENT_SIZE" value="8" />
<option name="TAB_SIZE" value="4" />
<option name="USE_TAB_CHARACTER" value="false" />
<option name="SMART_TABS" value="false" />
<option name="LABEL_INDENT_SIZE" value="0" />
<option name="LABEL_INDENT_ABSOLUTE" value="false" />
<option name="USE_RELATIVE_INDENTS" value="false" />
</ADDITIONAL_INDENT_OPTIONS>
<ADDITIONAL_INDENT_OPTIONS fileType="sql">
<option name="INDENT_SIZE" value="2" />
<option name="CONTINUATION_INDENT_SIZE" value="8" />
<option name="TAB_SIZE" value="4" />
<option name="USE_TAB_CHARACTER" value="false" />
<option name="SMART_TABS" value="false" />
<option name="LABEL_INDENT_SIZE" value="0" />
<option name="LABEL_INDENT_ABSOLUTE" value="false" />
<option name="USE_RELATIVE_INDENTS" value="false" />
</ADDITIONAL_INDENT_OPTIONS>
<ADDITIONAL_INDENT_OPTIONS fileType="xml">
<option name="INDENT_SIZE" value="4" />
<option name="CONTINUATION_INDENT_SIZE" value="8" />
<option name="TAB_SIZE" value="4" />
<option name="USE_TAB_CHARACTER" value="false" />
<option name="SMART_TABS" value="false" />
<option name="LABEL_INDENT_SIZE" value="0" />
<option name="LABEL_INDENT_ABSOLUTE" value="false" />
<option name="USE_RELATIVE_INDENTS" value="false" />
</ADDITIONAL_INDENT_OPTIONS>
<ADDITIONAL_INDENT_OPTIONS fileType="yml">
<option name="INDENT_SIZE" value="2" />
<option name="CONTINUATION_INDENT_SIZE" value="8" />
<option name="TAB_SIZE" value="4" />
<option name="USE_TAB_CHARACTER" value="false" />
<option name="SMART_TABS" value="false" />
<option name="LABEL_INDENT_SIZE" value="0" />
<option name="LABEL_INDENT_ABSOLUTE" value="false" />
<option name="USE_RELATIVE_INDENTS" value="false" />
</ADDITIONAL_INDENT_OPTIONS>
</value>
</option>
</component>
</project>

View File

@ -0,0 +1,5 @@
<component name="DependencyValidationManager">
<state>
<option name="SKIP_IMPORT_STATEMENTS" value="false" />
</state>
</component>

View File

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="$PROJECT_DIR$/../.." vcs="Git" />
</component>
</project>

View File

@ -0,0 +1,56 @@
#!/usr/bin/perl
sub read_transl($) {
my($from) = @_;
my %translation = ();
open(IN, "webim/locales/$from/properties");
while(<IN>) {
chomp;
if(/^([\w\.]+)=(.*)$/) {
if($1 ne "encoding" && $1 ne "output_charset" && $1 ne "output_encoding") {
$translation{$1} = $2;
}
} else {
die "wrong line in $from: $_\n";
}
}
close(IN);
return %translation;
}
%tr_en = read_transl("en");
@all_keys = keys %tr_en;
sub check_transl($%) {
my($name,%tr) = @_;
print "checking $name...\n";
my @totransl = ();
for $key (@all_keys) {
unless(exists $tr{$key}) {
push @totransl, "$key=".$tr_en{$key};
}
}
for $key(keys %tr) {
unless(exists $tr_en{$key}) {
print "unknown key in $name: $key\n";
}
}
if($#totransl >= 0) {
print "@{[$#totransl+1]} lines absent in locales/$name/properties\n";
open(OUT, "> absent_$name");
for(sort @totransl) {
print OUT "$_\n";
}
close(OUT);
}
}
check_transl("ru", read_transl("ru"));
check_transl("fr", read_transl("fr"));
check_transl("de", read_transl("de"));
check_transl("sp", read_transl("sp"));
check_transl("it", read_transl("it"));
check_transl("pl", read_transl("pl"));
check_transl("zh-tw", read_transl("zh-tw"));

5
src/messenger/compile_js Executable file
View File

@ -0,0 +1,5 @@
#!/bin/sh
cd webim/js/source
ant
rm -rf bin

View File

@ -0,0 +1,245 @@
#!/usr/bin/perl
use Digest::MD5 qw(md5 md5_hex md5_base64);
@rules = (
["redirect(ed)?\\.tpl", 1],
["\\.tpl", 0],
["view/license.php", 0],
["view/themes.php", 2],
["view/translate.php", 2],
["view/translatelist.php", 2],
["view/settings.php", 2],
["view/updates.php", 2],
["view/features.php", 2],
["view/performance.php", 2],
["view/avatar.php", 2],
["view/permissions.php", 2],
["view/agent.php", 2],
["view/agents.php", 2],
["view/group.php", 2],
["view/groupmembers.php", 2],
["view/groups.php", 2],
["view/operator_groups.php", 2],
["view/gen_button.php", 2],
["view/install_err.php", 2],
["view/install_index.php", 2],
["view/.*\\.php", 1],
["install/.*\\.php", 2],
["operator/themes.php", 2],
["operator/translate.php", 2],
["operator/settings.php", 2],
["operator/updates.php", 2],
["operator/features.php", 2],
["operator/performance.php", 2],
["operator/avatar.php", 2],
["operator/permissions.php", 2],
["operator/operator.php", 2],
["operator/operators.php", 2],
["operator/group.php", 2],
["operator/groupmembers.php", 2],
["operator/groups.php", 2],
["operator/opgroups.php", 2],
["operator/getcode.php", 2],
["operator/.*\\.php", 1],
["webim/client.php", 0],
["webim/leavemessage.php", 0],
["webim/captcha.php", 0],
["webim/license.php", 0],
["webim/mail.php", 0],
["libs/operator_settings.php", 2],
["webim/libs/chat.php", 0],
["libs/pagination.php", 1],
["libs/settings.php", 2],
["libs/groups.php", 2],
["libs/demothread.php", 2],
["webim/thread.php", 0],
["webim/b.php", 0],
["webim/button.php", 0],
["webim/index.php", 0],
["webim/libs/.*\\.php", 1],
);
%messagekeys = (
"localeid" => 0,
"output_charset" => 0,
"output_encoding" => 0,
"harderrors.header" => 0,
"errors.required" => 0,
"errors.wrong_field" => 0,
"errors.file.move.error" => 2,
"errors.invalid.file.type" => 2,
"errors.file.size.exceeded" => 2,
"permission.admin" => 1,
"permission.takeover" => 1,
"permission.viewthreads" => 1,
"chat.thread.state_chatting_with_agent" => 1,
"chat.thread.state_closed" => 1,
"chat.thread.state_loading" => 1,
"chat.thread.state_wait" => 1,
"chat.thread.state_wait_for_another_agent" => 1,
"clients.queue.chat" => 1,
"clients.queue.prio" => 1,
"clients.queue.wait" => 1,
);
$webimPath = "webim";
%urls = ();
%usermessages = ();
%operatormessages = ();
$current_level = 0;
sub usemsg($) {
my ($m) = @_;
$messagekeys{$m} = exists $messagekeys{$m} && $messagekeys{$m} < $current_level ? $messagekeys{$m} : $current_level;
if($current_level == -1) {
print " .. $m\n";
}
}
sub file_content($) {
my $input = $_[0];
open( IN1, "< $input" ) or die "cannot find file $input";
my $oldslash = $/;
$/ = EOI;
$content = <IN1>;
close( IN1 );
if($content =~ s/\r//g) {
open( OUT1, "> $input") or die "cannot fix $input";
print OUT1 $content;
close(OUT1);
}
$/ = $oldslash;
return $content;
}
sub process_tpl($) {
my ($filename) = @_;
my $m = file_content($filename);
while( $m =~ /\${msg:([\w\.]+)(,[\w\.]+)?}/g ) {
usemsg($1);
}
while( $m =~ /\${url:([\w\.]+)(,[\w\.]+)?}/g ) {
usemsg($1);
$urls{"%$1"} = 1;
}
}
sub process_php($) {
my ($source) = @_;
my $content = file_content($source);
$content =~ s/<\?xml version=\\"1\.0\\" encoding=\\"UTF-8\\"\?>//;
while( $content =~ s/<\?(?!xml)(.*?)\?>//s ) {
my $inner = $1;
while($inner =~ s/(getlocal|getstring|no_field)2?_?\((.*?)[,\)]//s) {
my $firstarg = $2;
if( $firstarg =~ /^["']([\w\.]+)['"]$/) {
usemsg($1);
} elsif($firstarg =~ /^\$\w+$/ || $firstarg eq '"$var.header"' || $firstarg eq '"permission.$permid"' || $firstarg eq '$threadstate_key[$thread[\'istate\']]') {
# skip
} else {
print "> unknown: $firstarg\n";
}
}
}
}
sub file_checksum($) {
my ($source) = @_;
if($source =~ /\.(png|gif|jpg|ico|wav)$/ || $source =~ /config\.php$/) {
return "-";
}
my $content = file_content($source);
return md5_hex($content);
}
@allsources = ();
sub process_one($) {
my($source) = @_;
push @allsources, $source unless $source =~ /$webimPath\/locales/ && $source !~ /$webimPath\/locales\/(en|names)/ || $source =~ /\/package$/;
if($source !~ /\.(php|tpl)$/) {
return;
}
$current_level = -1;
A: foreach $rule (@rules) {
my $key = $$rule[0];
if($source =~ /$key/) {
$current_level = $$rule[1];
last A;
}
}
if($current_level < 0 || $current_level > 2) {
print "not detected for: $source\n";
$current_level = 0;
}
if($source =~ /\.php$/) {
# print "$source ($current_level)\n";
process_php($source);
} elsif($source =~ /\.tpl$/) {
process_tpl($source);
} else {
#print ". $source\n";
}
}
sub process_files($) {
my($from) = @_;
opendir(DIR, $from) || die "can't opendir $from: $!";
my @content = readdir(DIR);
closedir DIR;
for(grep { -f "$from/$_" && ($_ !~ /^\./ || $_ eq ".htaccess") } @content) {
process_one("$from/$_");
}
for(grep { -d "$from/$_" && $_ !~ /^\./ } @content) {
process_files("$from/$_");
}
}
process_files($webimPath);
# fix
$messagekeys{'page.analysis.userhistory.title'} = 1;
$messagekeys{'errors.failed.uploading.file'} = 2;
open( OUT, "> $webimPath/locales/names/level1") or die "cannot write file, $!";
for $key(sort grep { $messagekeys{$_} == 0 } keys %messagekeys) {
print OUT "$key\n";
}
close( OUT );
open( OUT, "> $webimPath/locales/names/level2") or die "cannot write file, $!";
for $key(sort grep { $messagekeys{$_} == 1 } keys %messagekeys) {
print OUT "$key\n";
}
close( OUT );
open( OUT, "> $webimPath/install/package") or die "cannot write file, $!";
for $key(sort @allsources) {
$digest = file_checksum($key);
$key =~ s/$webimPath\///;
print OUT "$key $digest\n";
}
close( OUT );

66
src/messenger/pack.pl Executable file
View File

@ -0,0 +1,66 @@
#!/usr/bin/perl
##################################################################
# Arguments
##################################################################
$targetFolder = "deploy";
$suffix = "166";
##################################################################
# Copies tree into target folder, preprocess .phps
##################################################################
sub process_dir($$) {
my ($from,$to) = @_;
opendir(DIR, $from) || die "can't opendir $from: $!";
my @content = readdir(DIR);
closedir DIR;
mkdir $to;
for(grep { -f "$from/$_" && ($_ !~ /^\./ || $_ eq ".htaccess" || $_ eq ".keep") } @content) {
my ($source,$target) = ("$from/$_","$to/$_");
open (IN,"$source");
binmode(IN);
open (OUT,">$target");
binmode(OUT);
print OUT $buffer while (read (IN,$buffer,65536));
}
for(grep { -d "$from/$_" && $_ !~ /^\./ } @content) {
process_dir("$from/$_","$to/$_");
}
}
##################################################################
# Main
##################################################################
`rm -rf $targetFolder`;
die "Target folder exists: $targetFolder" if -e $targetFolder;
process_dir("./webim", $targetFolder);
`rm -rf release$suffix`;
die "release folder exists: release$suffix" if -e "release$suffix";
mkdir "release$suffix";
chdir "$targetFolder";
`zip -r ../release$suffix/mibew${suffix}_all.zip * .htaccess`;
chdir "locales";
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}_$locale.zip $locale`;
`rm -rf $locale`;
}
chdir "..";
`zip -r ../release$suffix/mibew$suffix.zip * .htaccess`;
chdir "..";
`rm -rf $targetFolder`;

View File

@ -1,6 +1,4 @@
This file is a part of Mibew Messenger. Copyright 2005-2013 the original author or authors.
Copyright 2005-2023 the original author or authors.
Licensed under the Apache License, Version 2.0 (the "License"); Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License. you may not use this file except in compliance with the License.

View File

@ -0,0 +1,56 @@
#!/usr/bin/perl
$sourceFolder = "../webim";
sub file_content($) {
my $input = $_[0];
open( IN1, "< $input" ) or die "cannot find file $input";
$/ = EOI;
$content = <IN1>;
$content =~ s/\r//g;
close( IN1 );
return $content;
}
$php_header = file_content("header.txt");
$php_header =~ s/\s+$//;
@allfiles = ();
sub process_folder($) {
my($from) = @_;
opendir(DIR, $from) || die "can't opendir $from: $!";
my @content = readdir(DIR);
closedir DIR;
for(grep { -f "$from/$_" && ($_ !~ /^\./ || $_ eq ".htaccess") } @content) {
push @allfiles, "$from/$_";
}
for(grep { -d "$from/$_" && $_ !~ /^\./ } @content) {
process_folder("$from/$_");
}
}
process_folder($sourceFolder);
P: for $phpfile (grep { /\.php$/ } @allfiles) {
$content = file_content($phpfile);
$content =~ s/\s+$//g;
die "not a php: $phpfile" unless $content =~ /^<\?php\n(\/\*.*?\*\/)?/s;
die "no comment in $phpfile" unless defined($1);
$comment = $1;
if($comment =~ /\[external\]/) {
next P;
};
$newcomment = "$php_header";
$newcomment =~ s/^/ * /gm;
$newcomment =~ s/\s+$//gm;
$newcomment = "/*\n$newcomment\n */";
$content =~ s/^(<\?php\n)\/\*.*?\*\//$1$newcomment/s;
open( OUT, "> $phpfile" ) or die "cannot write file: $phpfile\n";
print OUT $content;
close( OUT );
}

33
src/messenger/tools/sortit.pl Executable file
View File

@ -0,0 +1,33 @@
#!/usr/bin/perl
sub sort_transl($) {
my($from) = @_;
my @translation = ();
my $header = "";
open(IN, "$from");
while(<IN>) {
chomp;
my $curr = $_;
if(/^([\w\.]+)=(.*)$/) {
if($1 ne "encoding" && $1 ne "output_charset" && $1 ne "output_encoding") {
push @translation, $curr;
} else {
$header .= "$curr\n";
}
} else {
die "wrong line in $from: $curr\n";
}
}
close(IN);
open(OUT, "> $from");
print OUT $header;
for$line(sort @translation) {
print OUT "$line\n";
}
close(OUT);
}
die "no parameter\n" if $#ARGV < 0;
die "doesn't exists\n" unless -e $ARGV[0];
sort_transl($ARGV[0]);

View File

@ -0,0 +1,4 @@
<IfModule mod_security.c>
SecFilterEngine Off
SecFilterScanPOST Off
</IfModule>

View File

@ -0,0 +1,41 @@
Mibew Messenger
Copyright 2005-2013 the original author or authors.
REQUIREMENTS
* Apache web server 1.3.34 or above
* MySQL database 5.0 or above
* PHP 4.x or above with MySQL support
INSTALLATION
1. Create folder with name 'mibew' in the root of your website.
2. Upload all the files contained in this archive (retaining the directory structure) into created folder.
Be sure to chromo the mibew folder to 755 and the install folder to 644.
3. Add a MySQL database with the name 'mibew'
4. Edit /mibew/libs/config.php to the information needed to connect to the database
5. Using your web browser visit http://<yourdomain>/mibew/install/ and
hit 'Create tables'
6. Remove /mibew/install/ directory from your server
7. Logon as
user: admin
password: <empty>
8. Get button code and setup it on your site.
9. Change your password and name.
10. Wait for your visitors on 'Pending users' page.
On unix/linux platforms change the owner of /mibew/images/avatar folder
to the user, under which the web server is running (for instance, www).
The owner should have all rights on the folder /mibew/images/avatar
(chmod 700 /mibew/images/avatar).
UPDATE
1. Backup your /mibew/libs/config.php
2. Backup your /mibew/images/avatar folder.
3. Delete the items in the mibew folder on the server.
4. Upload all the files contained in the downloaded archive (retaining the directory structure) into mibew folder.
5. Re-edit the MySQL database settings you config.php
6. Visit http://<yourdomain>/mibew/install/ and follow the instructions to update database (if needed).
7. Remove /mibew/install/ directory from your server
8. Restore contents of /mibew/images/avatar folder.

View File

@ -0,0 +1 @@
Mibew/1.6.6

74
src/messenger/webim/b.php Normal file
View File

@ -0,0 +1,74 @@
<?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/groups.php');
$referer = isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : "";
if($referer && isset($_SESSION['threadid'])) {
$link = connect();
$thread = thread_by_id_($_SESSION['threadid'], $link);
if ($thread && $thread['istate'] != $state_closed) {
$msg = getstring2_("chat.client.visited.page", array($referer), $thread['locale'], true);
post_message_($thread['threadid'], $kind_for_agent,$msg,$link);
}
mysql_close($link);
}
$image = verifyparam(isset($_GET['image']) ? "image" : "i", "/^\w+$/", "mibew");
$lang = verifyparam(isset($_GET['language']) ? "language" : "lang", "/^[\w-]{2,5}$/", "");
if(!$lang || !locale_pattern_check($lang) || !locale_exists($lang)) {
$lang = $current_locale;
}
$groupid = verifyparam( "group", "/^\d{1,10}$/", "");
if($groupid) {
loadsettings();
if($settings['enablegroups'] == '1') {
$group = group_by_id($groupid);
if(!$group) {
$groupid = "";
}
} else {
$groupid = "";
}
}
$image_postfix = has_online_operators($groupid) ? "on" : "off";
$filename = dirname(__FILE__) . "/locales/${lang}/button/${image}_${image_postfix}.gif";
if (!file_exists($filename)) {
die("no image");
}
$fp = fopen($filename, 'rb') or die("unable to get image");
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Pragma: no-cache");
header("Content-Type: image/gif");
header("Content-Length: ".filesize($filename));
if(function_exists('fpassthru')){
@fpassthru($fp);
} else {
while( (!feof($fp)) && (connection_status()==0)){
print(fread($fp, 1024*8));
flush();
}
fclose($fp);
}
exit;
?>

View File

@ -1,7 +1,6 @@
/*! <?php
* This file is a part of Mibew Messenger. /*
* * Copyright 2005-2013 the original author or authors.
* Copyright 2005-2023 the original author or authors.
* *
* Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.
@ -15,3 +14,7 @@
* See the License for the specific language governing permissions and * See the License for the specific language governing permissions and
* limitations under the License. * limitations under the License.
*/ */
require_once('b.php');
exit;
?>

View File

@ -1,5 +1,6 @@
<?php
/* /*
* Copyright 2005-2023 the original author or authors. * Copyright 2005-2013 the original author or authors.
* *
* Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.
@ -14,12 +15,12 @@
* limitations under the License. * limitations under the License.
*/ */
/* common controls */ require_once('libs/common.php');
.control, require_once('libs/captcha.php');
.user-name-control-set,
.user-name-control-change, $captchaCode = gen_captcha();
.user-name-control-input-background, $_SESSION["mibew_captcha"] = $captchaCode;
#confirm-pane .submit-button { draw_captcha($captchaCode);
display: inline;
zoom: 1; exit;
} ?>

View File

@ -0,0 +1,180 @@
<?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/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") {
if(!is_secure_request()) {
$requested = $_SERVER['PHP_SELF'];
if($_SERVER['REQUEST_METHOD'] == 'GET' && $_SERVER['QUERY_STRING']) {
header("Location: ".get_app_location(true,true)."/client.php?".$_SERVER['QUERY_STRING']);
} else {
die("only https connections are handled");
}
exit;
}
}
if( !isset($_GET['token']) || !isset($_GET['thread']) ) {
$thread = NULL;
if( isset($_SESSION['threadid']) ) {
$thread = reopen_thread($_SESSION['threadid']);
}
if( !$thread ) {
$groupid = "";
$groupname = "";
if($settings['enablegroups'] == '1') {
$groupid = verifyparam( "group", "/^\d{1,10}$/", "");
if($groupid) {
$group = group_by_id($groupid);
if(!$group) {
$groupid = "";
} else {
$groupname = get_group_name($group);
}
}
}
$visitor = visitor_from_request();
if(isset($_POST['survey']) && $_POST['survey'] == 'on') {
$firstmessage = getparam("message");
$info = getparam("info");
$email = getparam("email");
$referrer = urldecode(getparam("referrer"));
if ($settings["surveyaskcaptcha"] == "1") {
$captcha = getparam('captcha');
$original = isset($_SESSION["mibew_captcha"])
? $_SESSION["mibew_captcha"]
: "";
$survey_captcha_failed = empty($original)
|| empty($captcha)
|| $captcha != $original;
unset($_SESSION['mibew_captcha']);
}
if($settings['usercanchangename'] == "1" && isset($_POST['name'])) {
$newname = getparam("name");
if($newname != $visitor['name']) {
$data = strtr(base64_encode(myiconv($mibew_encoding,"utf-8",$newname)), '+/=', '-_,');
setcookie($namecookie, $data, time()+60*60*24*365);
$visitor['name'] = $newname;
}
}
} else {
$firstmessage = NULL;
$info = getgetparam('info');
$email = getgetparam('email');
$referrer = isset($_GET['url']) ? $_GET['url'] :
(isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : "");
if(isset($_GET['referrer']) && $_GET['referrer']) {
$referrer .= "\n".$_GET['referrer'];
}
}
if(!has_online_operators($groupid)) {
$page = array();
setup_logo();
setup_leavemessage($visitor['name'],$email,$firstmessage,$groupid,$groupname,$info,$referrer,can_show_captcha());
expand("styles", getchatstyle(), "leavemessage.tpl");
exit;
}
$show_survey = $settings['enablepresurvey'] == '1'
&& (
!(isset($_POST['survey']) && $_POST['survey'] == 'on')
|| ($settings["surveyaskcaptcha"] == "1" && !empty($survey_captcha_failed))
);
if($show_survey) {
$page = array();
setup_logo();
if (!empty($survey_captcha_failed)) {
$errors[] = getlocal('errors.captcha');
}
setup_survey($visitor['name'], $email, $groupid, $info, $referrer, can_show_captcha());
expand("styles", getchatstyle(), "survey.tpl");
exit;
}
$remoteHost = get_remote_host();
$userbrowser = $_SERVER['HTTP_USER_AGENT'];
$link = connect();
if(!check_connections_from_remote($remoteHost, $link)) {
mysql_close($link);
die("number of connections from your IP is exceeded, try again later");
}
$thread = create_thread($groupid,$visitor['name'], $remoteHost, $referrer,$current_locale,$visitor['id'], $userbrowser,$state_loading,$link);
$_SESSION['threadid'] = $thread['threadid'];
if( $referrer ) {
post_message_($thread['threadid'],$kind_for_agent,getstring2('chat.came.from',array($referrer),true),$link);
}
post_message_($thread['threadid'],$kind_info,getstring('chat.wait', true),$link);
if($email) {
post_message_($thread['threadid'],$kind_for_agent,getstring2('chat.visitor.email',array($email),true),$link);
}
if($info) {
post_message_($thread['threadid'],$kind_for_agent,getstring2('chat.visitor.info',array($info),true),$link);
}
if($firstmessage) {
$postedid = post_message_($thread['threadid'],$kind_user,$firstmessage,$link,$visitor['name']);
commit_thread( $thread['threadid'], array('shownmessageid' => intval($postedid)), $link);
}
notify_operators($thread, $firstmessage, $link);
mysql_close($link);
}
$threadid = $thread['threadid'];
$token = $thread['ltoken'];
$level = get_remote_level($_SERVER['HTTP_USER_AGENT']);
$chatstyle = verifyparam( "style", "/^\w+$/", "");
header("Location: $mibewroot/client.php?thread=$threadid&token=$token&level=$level".($chatstyle ? "&style=$chatstyle" : ""));
exit;
}
$token = verifyparam( "token", "/^\d{1,10}$/");
$threadid = verifyparam( "thread", "/^\d{1,10}$/");
$level = verifyparam( "level", "/^(ajaxed|simple|old)$/");
$thread = thread_by_id($threadid);
if( !$thread || !isset($thread['ltoken']) || $token != $thread['ltoken'] ) {
die("wrong thread");
}
setup_chatview_for_user($thread, $level);
$pparam = verifyparam( "act", "/^(mailthread)$/", "default");
if( $pparam == "mailthread" ) {
expand("styles", getchatstyle(), "mail.tpl");
} else if( $level == "ajaxed" ) {
expand("styles", getchatstyle(), "chat.tpl");
} else if( $level == "simple" ) {
expand("styles", getchatstyle(), "chatsimple.tpl");
} else if( $level == "old" ) {
expand("styles", getchatstyle(), "nochat.tpl");
}
?>

View File

@ -0,0 +1,917 @@
/*
* Copyright 2005-2013 Evgeny Gryaznov
*
* 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.
*/
/* reset all */
html, body, div, h1, h2, h3, h4, h5, h6, ul, ol, dl, li, dt, dd, p, blockquote, pre, form, fieldset, table, th, td { margin: 0; padding: 0; }
table { border-collapse:collapse; border-spacing:0; }
fieldset,img { border:0; }
ol,ul { list-style:none; }
h1,h2,h3,h4,h5,h6 { font-size:100%; font-weight:normal; }
q:before,q:after { content:''; }
body {
background: #FFFFFF url(images/header.gif) repeat-x;
font-family: "Trebuchet MS", Arial, Helvetica, sans-serif;
font-size: 0.8em;
line-height: 140%;
color: #333333;
}
/* 100% height with footer, 200 px sidebar */
html, body {
height: 100%;
}
body {
min-width: 750px;
}
a {
color: #2f7599;
}
#wrap400, #wrap700, #fixedwrap {
position:relative;
margin: 0px auto -41px;
height:auto !important;
height:100%;
min-height:100%;
}
#wrap400 {
width: 100%;
min-width:450px;
}
#wrap700 {
width: 100%;
min-width:750px;
}
#fixedwrap {
width: 750px;
}
.contentdiv {
float:left;
width: 100%;
}
.contentinner {
margin-right: 210px;
padding: 10px 60px 10px 20px;
overflow: hidden;
}
.contentnomenu {
padding: 10px 60px 10px 20px;
}
.empty_inner {
height:40px;
}
#footer {
background: white url(images/footer.gif) bottom repeat-x;
font-size:11px;
position:relative;
min-height: 40px;
height:40px;
vertical-align:middle;
width:100%;
text-align: center;
}
#legal {
clear: both;
line-height: 30px;
padding-top:10px;
text-align: center;
color: #375C69;
margin-bottom: 0px;
}
#footer .flink {
color: #2f7599;
text-decoration: underline;
}
#togglediv {
float:right;
padding-right:10px;
}
/* Header */
#header {
width: 100%;
height: 32px;
margin: 0px -2px 10px 0px;
padding-top: 10px;
padding-bottom: 5px;
background: url(images/graydot.gif) repeat-x left bottom;
display: block;
}
#header {
float: left;
}
img.left {
float: left;
margin-right: 15px;
}
#header h1 {
font-size: 2em;
line-height: 32px;
color: #494949;
margin-left: 40px;
}
#header h1 a {
color: #494949;
}
#header a {
text-decoration: none;
}
#title {
float: left;
display: inline;
}
#path {
float: right;
padding: 10px 20px 0px 0px;
line-height: 22px;
display: inline;
}
/* Sidebar */
#sidebar {
float: left;
width: 185px;
margin-left: -210px;
margin-top: 20px;
position:relative;
line-height: 180%
}
#sidebar ul {
margin: 0;
padding: 0;
list-style: none;
}
#sidebar li {
margin-bottom: 20px;
}
#sidebar li ul {
}
#sidebar li li {
margin: 0;
}
#sidebar h2 {
text-transform: lowercase;
margin-bottom: 10px;
background: url(images/graydot.gif) repeat-x left bottom;
font-size: 1.3em;
font-weight: bold;
}
.locales a {
color: #2f7599;
font-size: 1em;
text-decoration: none;
}
.locales .active a {
color: #555;
}
.locales a:hover {
text-decoration: underline;
}
.submenu a {
padding-left: 15px;
color: #2f7599;
font-size: 1em;
text-decoration: none;
}
.submenu a.inner { padding-left: 0px; }
.submenu span.small { font-size: 80%; padding-left: 5px; }
.submenu .active a {
background: url(images/li.gif) no-repeat left 1px;
color: #555;
}
.submenu .active a.inner {
background: none;
}
.submenu a:hover {
text-decoration: underline;
}
/* form, tabbed form */
.mform {
background: url(images/loginbg.gif);
clear: both;
width: 100%;
}
.tabs {
float: right;
margin-left: 15px;
display: inline;
margin-right: 15px;
}
.tabs li {
display: inline;
}
.tabs a {
display: block;
float: left;
padding: 2px 9px 3px 9px;
font-family: Verdana, Geneva, Arial, Helvetica, sans-serif;
font-size: 11px;
color: #2f7599;
}
.tabs li.active a {
background: url(images/loginbg.gif);
border-left:1px solid #bbbbbb;border-top:1px solid #bbbbbb;border-right:1px solid #bbbbbb;
color: #000;
text-decoration: none;
}
.formtop, .formbottom, .formtopi, .formbottomi { height: 15px;}
.formtop { background: url(images/logincrnrt.gif) no-repeat top right;}
.formtopi { background: url(images/logincrnlt.gif) no-repeat top left; }
.formbottom { background: url(images/logincrnrb.gif) no-repeat bottom right; }
.formbottomi { background: url(images/logincrnlb.gif) no-repeat bottom left; }
.forminner { margin: 0px 15px;}
.forminner p { margin-bottom: 1em; }
/* fieldForm */
.fieldForm {
font-family: Verdana, Geneva, Arial, Helvetica, sans-serif;
font-size: 11px;
width: 100%;
}
.packedFormField {
font-family: Verdana, Geneva, Arial, Helvetica, sans-serif;
font-size: 11px;
float:left;
margin-right:25px;
margin-bottom:8px;
}
.packedFormField select {
min-width: 130px;
}
div.errinfo {
color: #c13030;
}
.field {
width: 100%;
margin-top: 5px;
}
.flabel {
position: relative;
margin: 8px auto 2px;
color: black;
}
.fleftlabel {
float: left;
width: 11em;
}
.flabel span.required {
font-size:8.0pt;
color:red;
font-weight: bold;
}
.field .subfield {
padding-left: 30px;
background: url(images/subitem.gif) no-repeat 10px 2px;
}
.fieldinrow {
min-width: 300px;
display: inline;
float:left;
width: 45%;
}
.fvalue {
float: left;
}
.fvaluewithta {
float: left;
width: 67%;
}
.fvaluewithta textarea {
width: 100%;
}
.fvaluenodesc {
}
.fvalueframe {
overflow: auto;
width: 100%;
}
.fvalueframe iframe {
border: solid 1px #999;
}
.fdescr {
float:left;
padding-left:10px;
color: #676767;
font-size: 10px;
min-width: 200px;
}
.fbutton {
background: url(images/formline.gif) repeat-x;
margin-top: 20px;
padding-top: 10px;
}
.fbutton .links {
float: right;
margin-top: 5px;
}
.fbutton .submitbutton {
float: left;
}
.formauth {
}
textarea.wide {
border:1px solid #878787;
overflow:auto;
width: 95%;
}
input.formauth {
border: 1px solid #878787;
color: #333;
margin-right:15px;
padding-right: 0px;
}
#formmessage {
border: 1px solid #4C96D4;
background-color: #E7F1F9;
padding: 8px 11px;
font-size: 0.85em;
font-weight:bold;
max-width: 700px;
margin: -10px 2px 10px;
color: #515151;
}
#offwarn {
border: 1px solid #4CD496;
background-color: #E7F9F1;
color: #515151;
padding: 8px 11px;
font-size: 0.85em;
font-weight:bold;
line-height: 140%;
margin: 0px;
}
#offwarn img {
margin-top: .4em;
float: left;
padding-right: 10px;
}
.asterisk {
padding: 10px 20px;
}
/* tables */
.tabletool {
float: right;
}
.tabletool a {
color: #296685;
vertical-align: top;
padding-left: 4px;
}
.tabletitle {
background: url(images/graydot.gif) repeat-x left bottom;
font-family: "Lucida Sans Unicode", "Lucida Grande", Sans-Serif;
font-size: 1.4em;
margin: 10px 0px 20px;
padding-bottom: 10px;
color: #1D485E;
font-weight: bold;
}
table.list, table.translate, table.statistics {
font-family: "Lucida Sans Unicode", "Lucida Grande", Sans-Serif;
background: #fff;
width: 100%;
border-collapse: collapse;
text-align: left;
}
table.list th, table.translate th, table.statistics th {
font-size: 1.2em;
font-weight: normal;
padding: 10px 8px;
border-bottom: 2px solid #2F7598;
}
table.list th, table.translate th { color: #1D485E; }
table.statistics th { color: #2F7598; }
table.list td, table.statistics td {
color: #2f7599;
padding: 10px 8px;
border-bottom: 1px solid #ccc;
}
table.translate td {
font-family: Arial, Helvetica, sans-serif;
font-size: 12px;
color: #515151;
padding: 2px 8px;
border-bottom: 1px solid #ccc;
}
table.list td a.man {
background: url(images/tbliclogin.gif) no-repeat left center;
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;
}
/* awaiting */
table.awaiting {
font-family: "Lucida Sans Unicode", "Lucida Grande", Sans-Serif;
background: #fff;
width: 100%;
border-collapse: collapse;
text-align: left;
}
table.awaiting th {
font-size: 1.2em;
font-weight: normal;
color: #1D485E;
padding: 10px 8px;
border-bottom: 2px solid #2F7598;
text-align: center;
}
table.awaiting th.first {
text-align: left;
}
table.awaiting table.inner {
border: none;
width: 100%;
}
table.awaiting table.inner .icon {
width: 30px;
text-align: center;
}
table.awaiting td.visitor {
color: #296685;
border-bottom: 1px solid #ccc;
padding: 10px 8px;
margin: 0px;
}
.awaiting .visitor a { color: #296685; }
.awaiting tr:hover .visitor, .awaiting tr:hover .visitor a { color: #1D485E; }
.awaiting tr.ban .visitor, .awaiting tr.ban .visitor a { color: #9AC8E0; }
.awaiting tr.ban:hover .visitor, .awaiting tr.ban:hover .visitor a { color: #4C9CC8; }
.awaiting tr.inwait .visitor, .awaiting tr.inwait a { font-weight: bold; }
.awaiting tr.inprio .visitor, .awaiting tr.inprio a { font-weight: bold; font-size: 1.05em; }
.awaiting tr.inchat .visitor, .awaiting tr.inchat .visitor a { color: #777; }
.awaiting tr.inchat:hover .visitor, .awaiting tr.inchat:hover .visitor a { color: #444; }
.awaiting tr.inchat a { text-decoration: none; }
.firstmessage {
text-align: right;
font-size: 0.8em;
padding-right: 10px;
}
.firstmessage a {
text-decoration: none;
}
.firstmessage a:hover {
text-decoration: underline;
}
#connstatus {
float:right;
margin: 10px 10px;
}
#connlinks {
margin: 10px 10px;
}
#connlinks a {
color: #777;
text-decoration: none;
}
#connlinks a:hover {
text-decoration: underline;
}
/* online operators */
#onlineoperators {
padding-right: 10px;
float: right;
}
/* search */
#searchtext {
float:left;
display: inline;
margin:7px 20px 5px 0px;
width:75%;
padding-right:5px;
}
.searchctrl {
float: left;
margin:7px 20px 5px 0px;
padding-right:5px;
display: inline;
}
#searchtext input {
width: 100%;
margin: 0px;
}
#searchbutton {
float:left;
}
/* login */
#loginsmallpane {
float: right;
padding: 10px 15px 0px 0px;
margin-right: 0px;
line-height: 22px;
display: inline;
}
#loginsmallpane input {
margin: 0px 3px;
padding: 0px 2px;
}
#loginsmallpane .butt {
height: 1.3em;
border: 0px;
background: none;
}
#loginsmallpane .butt:hover {
background: #aaa;
}
#loginintro {
width: 400px;
margin: 10px 30px;
}
#loginpane {
width: 400px;
margin: 30px 30px;
}
#loginpane .header h2 {
font-size: 2em;
margin-bottom: 0.9em;
padding-bottom: 0.8em;
border-bottom: 2px solid #2F7598;
}
/* nice button */
#confirmpane {
width:450px;
margin:0px auto 5px;
padding-top: 70px;
}
.nicebutton {
border: none;
float: left;
margin-left: 30px;
}
.submit a {
font-family: Verdana, Geneva, Arial, Helvetica, sans-serif;
font-size: 11px;
line-height: 35px;
color: #000000;
text-decoration: none;
}
.submit {
background: url(images/submitbg.gif) repeat-x;
vertical-align: top;
}
/* thread log */
.logpane {
margin: 10px 0px;
line-height: 150%;
}
.logpane .header {
padding-bottom: 0.8em;
border-bottom: 2px solid #2F7598;
}
.logpane .wlabel {
width: 10em;
float: left;
margin-right:10px;
}
.logpane .wvalue {
float: left;
}
/* dashboard */
#dashboard {
width: 100%;
}
.dashitem {
width:33%;
margin: 0px 2em 5em 0px;
padding: 5px 2em 5em;
vertical-align: top;
}
.dashitem:hover {
}
.dashitem a {
padding-top:2px;
padding-bottom: 10px;
display: block;
}
.dashitem img, #dashlocalesPopup h2 img {
float: left;
padding-right:10px;
width: 24px;
height: 24px;
}
#dashlocalesPopup h2 img {
margin-top: -3px;
}
#dashlocalesPopup .locales {
line-height: 180%;
margin-left:10px;
}
#dashlocalesPopup h2 {
font-size: 1.5em;
margin-bottom: 0.9em;
padding: 5px 30px 0.8em 0px;
border-bottom: 2px solid #2F7598;
}
#dashlocalesPopupClose {
float: right;
position:absolute;
right:5px;
top:5px;
}
#dashlocalesPopup {
display:none;
position:fixed;
_position:absolute; /* ie6*/
background:#FFFFFF;
border:2px solid #2F7598;
z-index:110;
padding:1em 1em;
font-size:1em;
}
#backgroundPopup{
display:none;
position:fixed;
_position:absolute; /* ie6*/
height:100%;
opacity: .5;
width:100%;
top:0;
left:0;
background:#000000;
border:1px solid #cecece;
z-index:101;
}
/* install */
#install li {
list-style-type: circle;
list-style-position: inside;
margin-left: 2em;
}
#check-nv, #check-nm {
color: #2f7599;
text-decoration: none;
}
#check-nv:hover, #check-nm:hover {
text-decoration: underline;
}
/* chat */
.message {
font-family: Arial, Helvetica, sans-serif;
font-size: 12px;
color: #4F4F4F;
padding: 15px 0px 0px 0px;
line-height: 17px;
}
.message span.time {
color: #000000;
}
.message span.nuser {
color: #B11E23;
font-weight: bold;
}
.message span.nagent {
font-weight: bold;
}
.message span.minf {
color: #1E48B1;
font-size: 11px;
}
.message span.mevent {
color: #A1A1A1;
font-size: 11px;
}
.message span.mhidden {
color: #A1A1A1;
font-size: 11px;
}
.message span.mconn {
color: #A1A1A1;
font-size: 11px;
}
/* updates */
#news {
font-family: Verdana, Geneva, Arial, Helvetica, sans-serif;
font-size: 11px;
margin-bottom:15px;
padding:4px;
}
.newstext {
margin-bottom:1em;
}
/* rtl rules */
.lrtl .dashitem img, .lrtl #dashlocalesPopup h2 img, .lrtl #offwarn img {
float: right;
padding-right:0px;
padding-left:10px;
}
.lrtl .fleftlabel {
float: right;
width: 11em;
}
.lrtl .fdescr {
float:right;
padding-right:10px;
}
.lrtl .field .subfield {
padding-right: 30px;
background: url(images/subitem_rtl.gif) no-repeat 99% 2px;
}
.lrtl .fvalue {
float: right;
}
.lrtl .logpane .wlabel {
float: right;
margin-left:10px;
}
.lrtl .logpane .wvalue {
float: right;
}
.lrtl .fvaluewithta {
float: right;
}
.lrtl #togglediv {
float:left;
padding-left:10px;
}

View File

Before

Width:  |  Height:  |  Size: 372 B

After

Width:  |  Height:  |  Size: 372 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 732 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

View File

Before

Width:  |  Height:  |  Size: 340 B

After

Width:  |  Height:  |  Size: 340 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 728 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 604 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 690 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

@ -0,0 +1,19 @@
"34aL volume 3.1" icons set
Ammount of icons:
60
Colors:
Colored, grey
Icon Sizes:
24x24
File Types:
.ico (RGBA, 256 color, 16 color),
.tiff (RGBA)
.gif (indexed)
.bmp (RGB - 1 color background),
.png (RGBA)
Note: These icons are free for use.

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

View File

Before

Width:  |  Height:  |  Size: 162 B

After

Width:  |  Height:  |  Size: 162 B

View File

Before

Width:  |  Height:  |  Size: 43 B

After

Width:  |  Height:  |  Size: 43 B

View File

Before

Width:  |  Height:  |  Size: 49 B

After

Width:  |  Height:  |  Size: 49 B

View File

Before

Width:  |  Height:  |  Size: 43 B

After

Width:  |  Height:  |  Size: 43 B

View File

Before

Width:  |  Height:  |  Size: 162 B

After

Width:  |  Height:  |  Size: 162 B

View File

Before

Width:  |  Height:  |  Size: 713 B

After

Width:  |  Height:  |  Size: 713 B

View File

Before

Width:  |  Height:  |  Size: 60 B

After

Width:  |  Height:  |  Size: 60 B

View File

Before

Width:  |  Height:  |  Size: 377 B

After

Width:  |  Height:  |  Size: 377 B

View File

Before

Width:  |  Height:  |  Size: 68 B

After

Width:  |  Height:  |  Size: 68 B

View File

Before

Width:  |  Height:  |  Size: 148 B

After

Width:  |  Height:  |  Size: 148 B

View File

Before

Width:  |  Height:  |  Size: 199 B

After

Width:  |  Height:  |  Size: 199 B

View File

Before

Width:  |  Height:  |  Size: 139 B

After

Width:  |  Height:  |  Size: 139 B

View File

Before

Width:  |  Height:  |  Size: 142 B

After

Width:  |  Height:  |  Size: 142 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 796 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 328 B

View File

Before

Width:  |  Height:  |  Size: 2.2 KiB

After

Width:  |  Height:  |  Size: 2.2 KiB

View File

Before

Width:  |  Height:  |  Size: 915 B

After

Width:  |  Height:  |  Size: 915 B

View File

Before

Width:  |  Height:  |  Size: 905 B

After

Width:  |  Height:  |  Size: 905 B

View File

Before

Width:  |  Height:  |  Size: 906 B

After

Width:  |  Height:  |  Size: 906 B

View File

Before

Width:  |  Height:  |  Size: 914 B

After

Width:  |  Height:  |  Size: 914 B

View File

Before

Width:  |  Height:  |  Size: 75 B

After

Width:  |  Height:  |  Size: 75 B

View File

Before

Width:  |  Height:  |  Size: 74 B

After

Width:  |  Height:  |  Size: 74 B

View File

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 1.6 KiB

View File

Before

Width:  |  Height:  |  Size: 55 B

After

Width:  |  Height:  |  Size: 55 B

View File

Before

Width:  |  Height:  |  Size: 89 B

After

Width:  |  Height:  |  Size: 89 B

View File

Before

Width:  |  Height:  |  Size: 43 B

After

Width:  |  Height:  |  Size: 43 B

Some files were not shown because too many files have changed in this diff Show More