From eb21bbdd550e4d1efc9a4c6e506eb64ba2cf9842 Mon Sep 17 00:00:00 2001 From: friendica Date: Mon, 27 Jan 2014 18:37:06 -0800 Subject: Ajaxchat package has way too many incompatible assumptions - after a lot of review, we can't work with it without re-writing huge chunks. Think I'll just start fresh. Ajax chat isn't that hard and we can do stuff with it that you just can't do with other chat clients because - well we've got zot. --- library/ajaxchat/chat/changelog.txt | 846 ----- library/ajaxchat/chat/chat.sql | 47 - library/ajaxchat/chat/css/Cobalt.css | 122 - library/ajaxchat/chat/css/Core.css | 115 - library/ajaxchat/chat/css/Lithium.css | 116 - library/ajaxchat/chat/css/Mercury.css | 154 - library/ajaxchat/chat/css/MyBB.css | 115 - library/ajaxchat/chat/css/Oxygen.css | 116 - library/ajaxchat/chat/css/Plum.css | 112 - library/ajaxchat/chat/css/Sulfur.css | 116 - library/ajaxchat/chat/css/Uranium.css | 178 -- library/ajaxchat/chat/css/beige.css | 114 - library/ajaxchat/chat/css/black.css | 115 - library/ajaxchat/chat/css/fonts.css | 100 - library/ajaxchat/chat/css/global.css | 278 -- library/ajaxchat/chat/css/grey.css | 115 - library/ajaxchat/chat/css/ie5-6.css | 70 - library/ajaxchat/chat/css/index.html | 0 library/ajaxchat/chat/css/plum_images/plum.png | Bin 18601 -> 0 bytes library/ajaxchat/chat/css/plum_images/plum2.png | Bin 9172 -> 0 bytes library/ajaxchat/chat/css/print.css | 114 - library/ajaxchat/chat/css/prosilver.css | 154 - library/ajaxchat/chat/css/shoutbox.css | 168 - library/ajaxchat/chat/css/subSilver.css | 117 - library/ajaxchat/chat/css/subblack2.css | 117 - library/ajaxchat/chat/css/vBulletin.css | 127 - library/ajaxchat/chat/flash/FABridge.swf | Bin 7609 -> 0 bytes library/ajaxchat/chat/flash/index.html | 0 library/ajaxchat/chat/img/audio.png | Bin 3966 -> 0 bytes library/ajaxchat/chat/img/autoscroll.png | Bin 4181 -> 0 bytes library/ajaxchat/chat/img/delete.png | Bin 241 -> 0 bytes library/ajaxchat/chat/img/emoticons/angel.png | Bin 959 -> 0 bytes library/ajaxchat/chat/img/emoticons/confused.png | Bin 904 -> 0 bytes library/ajaxchat/chat/img/emoticons/cool.png | Bin 864 -> 0 bytes library/ajaxchat/chat/img/emoticons/crying.png | Bin 899 -> 0 bytes library/ajaxchat/chat/img/emoticons/devilish.png | Bin 855 -> 0 bytes library/ajaxchat/chat/img/emoticons/eek.png | Bin 826 -> 0 bytes library/ajaxchat/chat/img/emoticons/error.png | Bin 653 -> 0 bytes library/ajaxchat/chat/img/emoticons/favorite.png | Bin 788 -> 0 bytes library/ajaxchat/chat/img/emoticons/glasses.png | Bin 949 -> 0 bytes library/ajaxchat/chat/img/emoticons/grin.png | Bin 905 -> 0 bytes library/ajaxchat/chat/img/emoticons/help.png | Bin 932 -> 0 bytes library/ajaxchat/chat/img/emoticons/idea.png | Bin 863 -> 0 bytes library/ajaxchat/chat/img/emoticons/important.png | Bin 717 -> 0 bytes library/ajaxchat/chat/img/emoticons/index.html | 0 library/ajaxchat/chat/img/emoticons/kiss.png | Bin 871 -> 0 bytes library/ajaxchat/chat/img/emoticons/monkey.png | Bin 830 -> 0 bytes library/ajaxchat/chat/img/emoticons/plain.png | Bin 894 -> 0 bytes library/ajaxchat/chat/img/emoticons/razz.png | Bin 772 -> 0 bytes library/ajaxchat/chat/img/emoticons/sad.png | Bin 891 -> 0 bytes library/ajaxchat/chat/img/emoticons/smile-big.png | Bin 856 -> 0 bytes library/ajaxchat/chat/img/emoticons/smile.png | Bin 892 -> 0 bytes library/ajaxchat/chat/img/emoticons/surprise.png | Bin 894 -> 0 bytes library/ajaxchat/chat/img/emoticons/warning.png | Bin 603 -> 0 bytes library/ajaxchat/chat/img/emoticons/wink.png | Bin 914 -> 0 bytes library/ajaxchat/chat/img/help.png | Bin 1359 -> 0 bytes library/ajaxchat/chat/img/index.html | 0 library/ajaxchat/chat/img/license.txt | 45 - library/ajaxchat/chat/img/loading-sprite.png | Bin 4995 -> 0 bytes library/ajaxchat/chat/img/pixel.gif | Bin 43 -> 0 bytes library/ajaxchat/chat/img/playback.png | Bin 961 -> 0 bytes library/ajaxchat/chat/img/settings.png | Bin 1151 -> 0 bytes library/ajaxchat/chat/img/users.png | Bin 1277 -> 0 bytes library/ajaxchat/chat/index.php | 24 - library/ajaxchat/chat/install.php | 80 - library/ajaxchat/chat/js/FABridge.js | 591 ---- library/ajaxchat/chat/js/chat.js | 2940 ----------------- library/ajaxchat/chat/js/config.js | 261 -- library/ajaxchat/chat/js/custom.js | 16 - library/ajaxchat/chat/js/index.html | 0 library/ajaxchat/chat/js/lang/ar.js | 92 - library/ajaxchat/chat/js/lang/bg.js | 92 - library/ajaxchat/chat/js/lang/ca.js | 91 - library/ajaxchat/chat/js/lang/cy.js | 93 - library/ajaxchat/chat/js/lang/cz.js | 91 - library/ajaxchat/chat/js/lang/da.js | 91 - library/ajaxchat/chat/js/lang/de.js | 91 - library/ajaxchat/chat/js/lang/el.js | 92 - library/ajaxchat/chat/js/lang/en.js | 91 - library/ajaxchat/chat/js/lang/es.js | 92 - library/ajaxchat/chat/js/lang/et.js | 91 - library/ajaxchat/chat/js/lang/fi.js | 93 - library/ajaxchat/chat/js/lang/fr.js | 92 - library/ajaxchat/chat/js/lang/gl.js | 92 - library/ajaxchat/chat/js/lang/he.js | 92 - library/ajaxchat/chat/js/lang/hr.js | 91 - library/ajaxchat/chat/js/lang/hu.js | 91 - library/ajaxchat/chat/js/lang/in.js | 91 - library/ajaxchat/chat/js/lang/index.html | 0 library/ajaxchat/chat/js/lang/it.js | 93 - library/ajaxchat/chat/js/lang/ja.js | 91 - library/ajaxchat/chat/js/lang/ka.js | 91 - library/ajaxchat/chat/js/lang/kr.js | 91 - library/ajaxchat/chat/js/lang/mk.js | 9 - library/ajaxchat/chat/js/lang/nl-be.js | 92 - library/ajaxchat/chat/js/lang/nl.js | 92 - library/ajaxchat/chat/js/lang/no.js | 92 - library/ajaxchat/chat/js/lang/pl.js | 92 - library/ajaxchat/chat/js/lang/pt-br.js | 92 - library/ajaxchat/chat/js/lang/pt-pt.js | 92 - library/ajaxchat/chat/js/lang/ro.js | 92 - library/ajaxchat/chat/js/lang/ru.js | 93 - library/ajaxchat/chat/js/lang/sk.js | 92 - library/ajaxchat/chat/js/lang/sl.js | 92 - library/ajaxchat/chat/js/lang/sr.js | 92 - library/ajaxchat/chat/js/lang/sv.js | 92 - library/ajaxchat/chat/js/lang/th.js | 92 - library/ajaxchat/chat/js/lang/tr.js | 92 - library/ajaxchat/chat/js/lang/uk.js | 92 - library/ajaxchat/chat/js/lang/zh-tw.js | 91 - library/ajaxchat/chat/js/lang/zh.js | 92 - library/ajaxchat/chat/js/logs.js | 128 - library/ajaxchat/chat/js/shoutbox.js | 12 - library/ajaxchat/chat/lib/.htaccess | 4 - library/ajaxchat/chat/lib/class/AJAXChat.php | 3326 -------------------- .../ajaxchat/chat/lib/class/AJAXChatDataBase.php | 81 - .../ajaxchat/chat/lib/class/AJAXChatEncoding.php | 138 - .../ajaxchat/chat/lib/class/AJAXChatFileSystem.php | 22 - .../ajaxchat/chat/lib/class/AJAXChatHTTPHeader.php | 56 - .../ajaxchat/chat/lib/class/AJAXChatLanguage.php | 102 - .../chat/lib/class/AJAXChatMySQLDataBase.php | 92 - .../ajaxchat/chat/lib/class/AJAXChatMySQLQuery.php | 89 - .../chat/lib/class/AJAXChatMySQLiDataBase.php | 91 - .../chat/lib/class/AJAXChatMySQLiQuery.php | 81 - library/ajaxchat/chat/lib/class/AJAXChatString.php | 37 - .../ajaxchat/chat/lib/class/AJAXChatTemplate.php | 329 -- library/ajaxchat/chat/lib/class/CustomAJAXChat.php | 126 - .../chat/lib/class/CustomAJAXChatInterface.php | 21 - .../chat/lib/class/CustomAJAXChatShoutBox.php | 25 - library/ajaxchat/chat/lib/classes.php | 26 - library/ajaxchat/chat/lib/config.php.example | 209 -- library/ajaxchat/chat/lib/custom.php | 11 - library/ajaxchat/chat/lib/data/channels.php | 16 - library/ajaxchat/chat/lib/data/users.php | 40 - library/ajaxchat/chat/lib/lang/ar.php | 124 - library/ajaxchat/chat/lib/lang/bg.php | 124 - library/ajaxchat/chat/lib/lang/ca.php | 125 - library/ajaxchat/chat/lib/lang/cy.php | 124 - library/ajaxchat/chat/lib/lang/cz.php | 123 - library/ajaxchat/chat/lib/lang/da.php | 123 - library/ajaxchat/chat/lib/lang/de.php | 123 - library/ajaxchat/chat/lib/lang/el.php | 124 - library/ajaxchat/chat/lib/lang/en.php | 123 - library/ajaxchat/chat/lib/lang/es.php | 124 - library/ajaxchat/chat/lib/lang/et.php | 123 - library/ajaxchat/chat/lib/lang/fa.php | 124 - library/ajaxchat/chat/lib/lang/fi.php | 125 - library/ajaxchat/chat/lib/lang/fr.php | 125 - library/ajaxchat/chat/lib/lang/gl.php | 124 - library/ajaxchat/chat/lib/lang/he.php | 124 - library/ajaxchat/chat/lib/lang/hr.php | 123 - library/ajaxchat/chat/lib/lang/hu.php | 123 - library/ajaxchat/chat/lib/lang/in.php | 123 - library/ajaxchat/chat/lib/lang/it.php | 125 - library/ajaxchat/chat/lib/lang/ja.php | 123 - library/ajaxchat/chat/lib/lang/ka.php | 123 - library/ajaxchat/chat/lib/lang/kr.php | 123 - library/ajaxchat/chat/lib/lang/mk.php | 124 - library/ajaxchat/chat/lib/lang/nl-be.php | 124 - library/ajaxchat/chat/lib/lang/nl.php | 124 - library/ajaxchat/chat/lib/lang/no.php | 124 - library/ajaxchat/chat/lib/lang/pl.php | 124 - library/ajaxchat/chat/lib/lang/pt-br.php | 124 - library/ajaxchat/chat/lib/lang/pt-pt.php | 124 - library/ajaxchat/chat/lib/lang/ro.php | 124 - library/ajaxchat/chat/lib/lang/ru.php | 125 - library/ajaxchat/chat/lib/lang/sk.php | 124 - library/ajaxchat/chat/lib/lang/sl.php | 124 - library/ajaxchat/chat/lib/lang/sr.php | 124 - library/ajaxchat/chat/lib/lang/sv.php | 124 - library/ajaxchat/chat/lib/lang/th.php | 124 - library/ajaxchat/chat/lib/lang/tr.php | 124 - library/ajaxchat/chat/lib/lang/uk.php | 124 - library/ajaxchat/chat/lib/lang/zh-tw.php | 123 - library/ajaxchat/chat/lib/lang/zh.php | 124 - library/ajaxchat/chat/lib/template/loggedIn.html | 387 --- library/ajaxchat/chat/lib/template/loggedOut.html | 78 - library/ajaxchat/chat/lib/template/logs.html | 276 -- library/ajaxchat/chat/lib/template/shoutbox.html | 60 - library/ajaxchat/chat/license.txt | 28 - library/ajaxchat/chat/readme.html | 436 --- library/ajaxchat/chat/socket/.htaccess | 4 - library/ajaxchat/chat/socket/server | 71 - library/ajaxchat/chat/socket/server.conf | 22 - library/ajaxchat/chat/socket/server.rb | 400 --- library/ajaxchat/chat/sounds/index.html | 0 library/ajaxchat/chat/sounds/license.txt | 28 - library/ajaxchat/chat/sounds/sound_1.mp3 | Bin 16462 -> 0 bytes library/ajaxchat/chat/sounds/sound_2.mp3 | Bin 19074 -> 0 bytes library/ajaxchat/chat/sounds/sound_3.mp3 | Bin 37808 -> 0 bytes library/ajaxchat/chat/sounds/sound_4.mp3 | Bin 52168 -> 0 bytes library/ajaxchat/chat/sounds/sound_5.mp3 | Bin 32631 -> 0 bytes library/ajaxchat/chat/sounds/sound_6.mp3 | Bin 4994 -> 0 bytes library/ajaxchat/chat/src/EmptySwf.as | 32 - library/ajaxchat/chat/src/FABridge.as | 943 ------ library/ajaxchat/chat/src/index.html | 0 library/ajaxchat/readme.md | 77 - 197 files changed, 24152 deletions(-) delete mode 100644 library/ajaxchat/chat/changelog.txt delete mode 100644 library/ajaxchat/chat/chat.sql delete mode 100644 library/ajaxchat/chat/css/Cobalt.css delete mode 100644 library/ajaxchat/chat/css/Core.css delete mode 100644 library/ajaxchat/chat/css/Lithium.css delete mode 100644 library/ajaxchat/chat/css/Mercury.css delete mode 100644 library/ajaxchat/chat/css/MyBB.css delete mode 100644 library/ajaxchat/chat/css/Oxygen.css delete mode 100644 library/ajaxchat/chat/css/Plum.css delete mode 100644 library/ajaxchat/chat/css/Sulfur.css delete mode 100644 library/ajaxchat/chat/css/Uranium.css delete mode 100644 library/ajaxchat/chat/css/beige.css delete mode 100644 library/ajaxchat/chat/css/black.css delete mode 100644 library/ajaxchat/chat/css/fonts.css delete mode 100644 library/ajaxchat/chat/css/global.css delete mode 100644 library/ajaxchat/chat/css/grey.css delete mode 100644 library/ajaxchat/chat/css/ie5-6.css delete mode 100644 library/ajaxchat/chat/css/index.html delete mode 100644 library/ajaxchat/chat/css/plum_images/plum.png delete mode 100644 library/ajaxchat/chat/css/plum_images/plum2.png delete mode 100644 library/ajaxchat/chat/css/print.css delete mode 100644 library/ajaxchat/chat/css/prosilver.css delete mode 100644 library/ajaxchat/chat/css/shoutbox.css delete mode 100644 library/ajaxchat/chat/css/subSilver.css delete mode 100644 library/ajaxchat/chat/css/subblack2.css delete mode 100644 library/ajaxchat/chat/css/vBulletin.css delete mode 100644 library/ajaxchat/chat/flash/FABridge.swf delete mode 100644 library/ajaxchat/chat/flash/index.html delete mode 100644 library/ajaxchat/chat/img/audio.png delete mode 100644 library/ajaxchat/chat/img/autoscroll.png delete mode 100644 library/ajaxchat/chat/img/delete.png delete mode 100644 library/ajaxchat/chat/img/emoticons/angel.png delete mode 100644 library/ajaxchat/chat/img/emoticons/confused.png delete mode 100644 library/ajaxchat/chat/img/emoticons/cool.png delete mode 100644 library/ajaxchat/chat/img/emoticons/crying.png delete mode 100644 library/ajaxchat/chat/img/emoticons/devilish.png delete mode 100644 library/ajaxchat/chat/img/emoticons/eek.png delete mode 100644 library/ajaxchat/chat/img/emoticons/error.png delete mode 100644 library/ajaxchat/chat/img/emoticons/favorite.png delete mode 100644 library/ajaxchat/chat/img/emoticons/glasses.png delete mode 100644 library/ajaxchat/chat/img/emoticons/grin.png delete mode 100644 library/ajaxchat/chat/img/emoticons/help.png delete mode 100644 library/ajaxchat/chat/img/emoticons/idea.png delete mode 100644 library/ajaxchat/chat/img/emoticons/important.png delete mode 100644 library/ajaxchat/chat/img/emoticons/index.html delete mode 100644 library/ajaxchat/chat/img/emoticons/kiss.png delete mode 100644 library/ajaxchat/chat/img/emoticons/monkey.png delete mode 100644 library/ajaxchat/chat/img/emoticons/plain.png delete mode 100644 library/ajaxchat/chat/img/emoticons/razz.png delete mode 100644 library/ajaxchat/chat/img/emoticons/sad.png delete mode 100644 library/ajaxchat/chat/img/emoticons/smile-big.png delete mode 100644 library/ajaxchat/chat/img/emoticons/smile.png delete mode 100644 library/ajaxchat/chat/img/emoticons/surprise.png delete mode 100644 library/ajaxchat/chat/img/emoticons/warning.png delete mode 100644 library/ajaxchat/chat/img/emoticons/wink.png delete mode 100644 library/ajaxchat/chat/img/help.png delete mode 100644 library/ajaxchat/chat/img/index.html delete mode 100644 library/ajaxchat/chat/img/license.txt delete mode 100644 library/ajaxchat/chat/img/loading-sprite.png delete mode 100644 library/ajaxchat/chat/img/pixel.gif delete mode 100644 library/ajaxchat/chat/img/playback.png delete mode 100644 library/ajaxchat/chat/img/settings.png delete mode 100644 library/ajaxchat/chat/img/users.png delete mode 100644 library/ajaxchat/chat/index.php delete mode 100644 library/ajaxchat/chat/install.php delete mode 100644 library/ajaxchat/chat/js/FABridge.js delete mode 100644 library/ajaxchat/chat/js/chat.js delete mode 100644 library/ajaxchat/chat/js/config.js delete mode 100644 library/ajaxchat/chat/js/custom.js delete mode 100644 library/ajaxchat/chat/js/index.html delete mode 100644 library/ajaxchat/chat/js/lang/ar.js delete mode 100644 library/ajaxchat/chat/js/lang/bg.js delete mode 100644 library/ajaxchat/chat/js/lang/ca.js delete mode 100644 library/ajaxchat/chat/js/lang/cy.js delete mode 100644 library/ajaxchat/chat/js/lang/cz.js delete mode 100644 library/ajaxchat/chat/js/lang/da.js delete mode 100644 library/ajaxchat/chat/js/lang/de.js delete mode 100644 library/ajaxchat/chat/js/lang/el.js delete mode 100644 library/ajaxchat/chat/js/lang/en.js delete mode 100644 library/ajaxchat/chat/js/lang/es.js delete mode 100644 library/ajaxchat/chat/js/lang/et.js delete mode 100644 library/ajaxchat/chat/js/lang/fi.js delete mode 100644 library/ajaxchat/chat/js/lang/fr.js delete mode 100644 library/ajaxchat/chat/js/lang/gl.js delete mode 100644 library/ajaxchat/chat/js/lang/he.js delete mode 100644 library/ajaxchat/chat/js/lang/hr.js delete mode 100644 library/ajaxchat/chat/js/lang/hu.js delete mode 100644 library/ajaxchat/chat/js/lang/in.js delete mode 100644 library/ajaxchat/chat/js/lang/index.html delete mode 100644 library/ajaxchat/chat/js/lang/it.js delete mode 100644 library/ajaxchat/chat/js/lang/ja.js delete mode 100644 library/ajaxchat/chat/js/lang/ka.js delete mode 100644 library/ajaxchat/chat/js/lang/kr.js delete mode 100644 library/ajaxchat/chat/js/lang/mk.js delete mode 100644 library/ajaxchat/chat/js/lang/nl-be.js delete mode 100644 library/ajaxchat/chat/js/lang/nl.js delete mode 100644 library/ajaxchat/chat/js/lang/no.js delete mode 100644 library/ajaxchat/chat/js/lang/pl.js delete mode 100644 library/ajaxchat/chat/js/lang/pt-br.js delete mode 100644 library/ajaxchat/chat/js/lang/pt-pt.js delete mode 100644 library/ajaxchat/chat/js/lang/ro.js delete mode 100644 library/ajaxchat/chat/js/lang/ru.js delete mode 100644 library/ajaxchat/chat/js/lang/sk.js delete mode 100644 library/ajaxchat/chat/js/lang/sl.js delete mode 100644 library/ajaxchat/chat/js/lang/sr.js delete mode 100644 library/ajaxchat/chat/js/lang/sv.js delete mode 100644 library/ajaxchat/chat/js/lang/th.js delete mode 100644 library/ajaxchat/chat/js/lang/tr.js delete mode 100644 library/ajaxchat/chat/js/lang/uk.js delete mode 100644 library/ajaxchat/chat/js/lang/zh-tw.js delete mode 100644 library/ajaxchat/chat/js/lang/zh.js delete mode 100644 library/ajaxchat/chat/js/logs.js delete mode 100644 library/ajaxchat/chat/js/shoutbox.js delete mode 100644 library/ajaxchat/chat/lib/.htaccess delete mode 100644 library/ajaxchat/chat/lib/class/AJAXChat.php delete mode 100644 library/ajaxchat/chat/lib/class/AJAXChatDataBase.php delete mode 100644 library/ajaxchat/chat/lib/class/AJAXChatEncoding.php delete mode 100644 library/ajaxchat/chat/lib/class/AJAXChatFileSystem.php delete mode 100644 library/ajaxchat/chat/lib/class/AJAXChatHTTPHeader.php delete mode 100644 library/ajaxchat/chat/lib/class/AJAXChatLanguage.php delete mode 100644 library/ajaxchat/chat/lib/class/AJAXChatMySQLDataBase.php delete mode 100644 library/ajaxchat/chat/lib/class/AJAXChatMySQLQuery.php delete mode 100644 library/ajaxchat/chat/lib/class/AJAXChatMySQLiDataBase.php delete mode 100644 library/ajaxchat/chat/lib/class/AJAXChatMySQLiQuery.php delete mode 100644 library/ajaxchat/chat/lib/class/AJAXChatString.php delete mode 100644 library/ajaxchat/chat/lib/class/AJAXChatTemplate.php delete mode 100644 library/ajaxchat/chat/lib/class/CustomAJAXChat.php delete mode 100644 library/ajaxchat/chat/lib/class/CustomAJAXChatInterface.php delete mode 100644 library/ajaxchat/chat/lib/class/CustomAJAXChatShoutBox.php delete mode 100644 library/ajaxchat/chat/lib/classes.php delete mode 100644 library/ajaxchat/chat/lib/config.php.example delete mode 100644 library/ajaxchat/chat/lib/custom.php delete mode 100644 library/ajaxchat/chat/lib/data/channels.php delete mode 100644 library/ajaxchat/chat/lib/data/users.php delete mode 100644 library/ajaxchat/chat/lib/lang/ar.php delete mode 100644 library/ajaxchat/chat/lib/lang/bg.php delete mode 100644 library/ajaxchat/chat/lib/lang/ca.php delete mode 100644 library/ajaxchat/chat/lib/lang/cy.php delete mode 100644 library/ajaxchat/chat/lib/lang/cz.php delete mode 100644 library/ajaxchat/chat/lib/lang/da.php delete mode 100644 library/ajaxchat/chat/lib/lang/de.php delete mode 100644 library/ajaxchat/chat/lib/lang/el.php delete mode 100644 library/ajaxchat/chat/lib/lang/en.php delete mode 100644 library/ajaxchat/chat/lib/lang/es.php delete mode 100644 library/ajaxchat/chat/lib/lang/et.php delete mode 100644 library/ajaxchat/chat/lib/lang/fa.php delete mode 100644 library/ajaxchat/chat/lib/lang/fi.php delete mode 100644 library/ajaxchat/chat/lib/lang/fr.php delete mode 100644 library/ajaxchat/chat/lib/lang/gl.php delete mode 100644 library/ajaxchat/chat/lib/lang/he.php delete mode 100644 library/ajaxchat/chat/lib/lang/hr.php delete mode 100644 library/ajaxchat/chat/lib/lang/hu.php delete mode 100644 library/ajaxchat/chat/lib/lang/in.php delete mode 100644 library/ajaxchat/chat/lib/lang/it.php delete mode 100644 library/ajaxchat/chat/lib/lang/ja.php delete mode 100644 library/ajaxchat/chat/lib/lang/ka.php delete mode 100644 library/ajaxchat/chat/lib/lang/kr.php delete mode 100644 library/ajaxchat/chat/lib/lang/mk.php delete mode 100644 library/ajaxchat/chat/lib/lang/nl-be.php delete mode 100644 library/ajaxchat/chat/lib/lang/nl.php delete mode 100644 library/ajaxchat/chat/lib/lang/no.php delete mode 100644 library/ajaxchat/chat/lib/lang/pl.php delete mode 100644 library/ajaxchat/chat/lib/lang/pt-br.php delete mode 100644 library/ajaxchat/chat/lib/lang/pt-pt.php delete mode 100644 library/ajaxchat/chat/lib/lang/ro.php delete mode 100644 library/ajaxchat/chat/lib/lang/ru.php delete mode 100644 library/ajaxchat/chat/lib/lang/sk.php delete mode 100644 library/ajaxchat/chat/lib/lang/sl.php delete mode 100644 library/ajaxchat/chat/lib/lang/sr.php delete mode 100644 library/ajaxchat/chat/lib/lang/sv.php delete mode 100644 library/ajaxchat/chat/lib/lang/th.php delete mode 100644 library/ajaxchat/chat/lib/lang/tr.php delete mode 100644 library/ajaxchat/chat/lib/lang/uk.php delete mode 100644 library/ajaxchat/chat/lib/lang/zh-tw.php delete mode 100644 library/ajaxchat/chat/lib/lang/zh.php delete mode 100644 library/ajaxchat/chat/lib/template/loggedIn.html delete mode 100644 library/ajaxchat/chat/lib/template/loggedOut.html delete mode 100644 library/ajaxchat/chat/lib/template/logs.html delete mode 100644 library/ajaxchat/chat/lib/template/shoutbox.html delete mode 100644 library/ajaxchat/chat/license.txt delete mode 100644 library/ajaxchat/chat/readme.html delete mode 100644 library/ajaxchat/chat/socket/.htaccess delete mode 100644 library/ajaxchat/chat/socket/server delete mode 100644 library/ajaxchat/chat/socket/server.conf delete mode 100644 library/ajaxchat/chat/socket/server.rb delete mode 100644 library/ajaxchat/chat/sounds/index.html delete mode 100644 library/ajaxchat/chat/sounds/license.txt delete mode 100644 library/ajaxchat/chat/sounds/sound_1.mp3 delete mode 100644 library/ajaxchat/chat/sounds/sound_2.mp3 delete mode 100644 library/ajaxchat/chat/sounds/sound_3.mp3 delete mode 100644 library/ajaxchat/chat/sounds/sound_4.mp3 delete mode 100644 library/ajaxchat/chat/sounds/sound_5.mp3 delete mode 100644 library/ajaxchat/chat/sounds/sound_6.mp3 delete mode 100644 library/ajaxchat/chat/src/EmptySwf.as delete mode 100644 library/ajaxchat/chat/src/FABridge.as delete mode 100644 library/ajaxchat/chat/src/index.html delete mode 100644 library/ajaxchat/readme.md (limited to 'library/ajaxchat') diff --git a/library/ajaxchat/chat/changelog.txt b/library/ajaxchat/chat/changelog.txt deleted file mode 100644 index 733eb994c..000000000 --- a/library/ajaxchat/chat/changelog.txt +++ /dev/null @@ -1,846 +0,0 @@ -Blueimp's AJAX Chat Changelog -============================= - - -Version 0.1 (06.06.2007): -------------------------------- -First release. - - -Version 0.1.0.1 (10.06.2007): -------------------------------- -New features: -- Added dutch localization - thanks to Nic Mertens - - -Version 0.1.0.2 (11.06.2007): -------------------------------- -Bugfixes: -- Smiley replacement of ";)" could produce invalid XHTML - fixed - - -Version 0.1.0.3 (11.06.2007): -------------------------------- -New features: -- Added sample phpBB2 integration - - -Version 0.1.0.4 (12.06.2007): -------------------------------- -Bugfixes: -- Replaced PHP short tags with long version ( Creative Commons Attribution-Share Alike (still free and open source). - -Changed files: -- all (all versions) - - -Version 0.5.0.1 (13.10.2007): -------------------------------- -Changes: -- Moved forum integration code out of class files and into lib/custom.php. - - -Version 0.5.1 (14.10.2007): -------------------------------- -New features: -- Added simple flood control (two new config variables). - -Bugfixes: -- Ignored userNames were not escaped properly for message filter query [SECURITY RISK]. -- /roll messages were being displayed as user messages instead of chatBot messages (Code refactoring mistake). -- No display of invitations/uninvitations or /roll messages from ignored users. -- Preventing robots from being logged in automatically (phpBB3 version). - - -Version 0.5.1.1 (16.10.2007): -------------------------------- -Bugfixes: -- Non-ASCII characters didn't work in JavaScript links with IE and Opera - fixed. - -Other changes: -- Changed file extension of the template files to html. -- The chat now tries to send a logout request on unload of the chat window. - - -Version 0.5.1.2 (16.10.2007): -------------------------------- -Bugfixes: -- Sometimes it could happen that the same message was added twice on client side - fixed. - -Other changes: -- Removed the logout request on chat window unload again - logout on reload is too much of a drawback. - -Notes: -- Due to the bugfix, the parameters of the addMessageToChatList and onNewMessage methods changed. - - -Version 0.5.1.3 (17.10.2007): -------------------------------- -Bugfixes: -- Some SQL queries used were not compatible with MySQL ANSI and ANSI_QUOTES SQL Modes - fixed. - - -Version 0.5.1.4 (18.10.2007): -------------------------------- -Bugfixes: -- Somehow a bug crept into the invitations code - fixed. - -New features: -- Added hebrew localization - thanks to Smiley Barry. -- Updated finnish localization - thanks to zazu. -- Updated greek localization - thanks to panas. - - -Version 0.5.1.5 (18.10.2007): -------------------------------- -New features: -- Added AJAX Chat version for MyBB. -- Added new style "MyBB". - - -Version 0.5.2 (20.10.2007): -------------------------------- -New features: -- Added arabic localization - thanks to pepotiger (www.dd4bb.com). -- Added better support for bidirectional text ("dir" attribute). - -Bugfixes: -- The strings replacing the language tags had not been HTML-encoded - fixed. -- Fixed a bug preventing guest logins (empty password) with Opera. - -Other changes: -- Using "​" (zero width space) as default string to wrap long words. - - -Version 0.5.2.1 (20.10.2007): -------------------------------- -New features: -- Updated dutch localization - thanks to Nic Mertens. -- The dateTime display is now better configurable. -- Adding a new JS config option listing settings to be excluded from being stored in a session cookie. - - -Version 0.5.2.2 (23.10.2007): -------------------------------- - -Bugfixes: -- Fixing the "Only variables should be assigned by reference" notice in standalone version on PHP4. -- Fixing the "cannot yet handle MBCS in html_entity_decode()" warning on PHP4. - Due to PHP bug #25670, html_entity_decode does not work with UTF-8 for PHP versions < 5. -- Improved the entity encoding/decoding handling. - -Changed files: -- lib/class/AJAXChat.php (all versions) -- lib/class/CustomAJAXChat.php (standalone version) - - -Version 0.5.3 (05.11.2007): -------------------------------- -New features: -- Added possibility to configure if messages are shown which have been sent prior to the user entering the channel. -- Updated russian localization - thanks to SkyKnight. - -Bugfixes: -- Fixed background-color and horizontal stretch of chatlist for IE6. - - -Version 0.5.3.1 (05.11.2007): -------------------------------- - -Bugfixes: -- Fixed methods reference assignment for getChannels and getAllChannels (PHP4). - -Changed files: -- lib/class/AJAXChat.php (all versions) -- lib/class/CustomAJAXChat.php (all versions) - - -Version 0.5.4 (06.11.2007): -------------------------------- -New features: -- Added new JS config variable to enable/disable autofocus on the input field. -- Added JS methods to add custom initialization and finalization code. - - -Version 0.5.4.1 (07.11.2007): -------------------------------- -Bugfixes: -- The session is now started automatically if not already started. - The useless sessionCreateNew config variable has been removed accordingly. -- Removed the duplicate #ajaxChatContent #ajaxChatMessageText entry in shoutbox CSS file. - - -Version 0.5.5 (09.11.2007): -------------------------------- -New features: -- Updated italian locale - thanks to s8s8. - -Bugfixes: -- Replaced the unreliable navigator.cookieEnabled check with a custom JS method. - -Other changes: -- The shoutbox class now skips session handling and database connections and has been reduced to parse and return the shoutbox template. -- Shoutbox users are logged in with the first AJAX request. -- Current user information (ID, Name) is now gathered through AJAX requests using the info messages interface. - - -Version 0.5.6 (11.11.2007): -------------------------------- -New features: -- Added romanian locale - thanks to K.Z. (kamikaze666). - -Other changes: -- Code refactoring to improve the functional and modular design. -- Added an interface class to push messages to the chat or query user data. - - -Version 0.5.6.1 (12.11.2007): -------------------------------- -New features: -- Added swedish locale - thanks to Eric. - - -Version 0.6 (13.11.2007): -------------------------------- -New features: -- Added support for ipv6 (only on PHP5 and not on windows hosts). - -Bugfixes: -- The Chat URL had not been HTML encoded for the template output - fixed. -- Logged-in forum users providing a password on the login form had been directed to the forum - fixed. - -Other Changes: -- Updated database table creation script to support ipv6 storage. -- Improved handling with multiple databases. -- Renamed tag FORUM_URL to FORUM_LOGIN_URL to avoid confusion. - -Notes: -- It is recommended to recreate the chat tables to avoid conflicts with old IP entries. - - -Version 0.6.0.1 (14.11.2007): -------------------------------- -Bugfixes: -- IPs were not escaped properly for storage - fixed. - -Other Changes: -- Added code to suppress warnings if converting the IPs to or from storage format fails. - - -Version 0.6.1 (17.11.2007): -------------------------------- -New features: -- Added slovak locale - thanks to Peter. -- The own userName and the current channelName are displayed bold when using /who and /list commands. -- Added possibility to search for IPs using the logs view (Search strings starting with "ip=", e.g. "ip=127.0.0.1"). -- Added client-side method "replaceCustomBBCode" to add more complex custom BBCodes. -- Added client-side and server-side method "replaceCustomText" to replace any custom text. -- Added new request variable "lang" to set the content language (e.g. "lang=en"). -- Added a language selection to the templates. - -Bugfixes: -- Fixed bad JS usage of for...in loops for arrays which could lead to conflicts with JS frameworks. -- Fixed misarranged display on IE6 for RTL direction languages (arabian, hebrew). -- Fixed error name "errorCookiesRequired" in swedish JS language file which had been still "cookiesRequired". - -Other Changes: -- Reduced required database queries to retrieve online users data. -- Improved handling of private channels. -- Added two new config variables to define the prefix and suffix of private channels. -- Added a new config variable to define language names for the language selection. -- The language setting is now saved in an extra cookie instead of the chat session. - - -Version 0.6.2 (20.11.2007): -------------------------------- -New features: -- Added AJAX Chat version for vBulletin. -- Added new style "vBulletin". -- Added four new config variables to set session cookie parameters. -- Added CSS style for print layout. - -Other Changes: -- Added language selection to the logs view template. -- Updated slovak localization. -- Changed config name sessionValuePrefix to sessionKeyPrefix (as it is a prefix for the key, not the value). -- Restructured CSS files to import positions, borders, fonts and miscellaneous from separate files. - - -Version 0.6.2.1 (28.11.2007): -------------------------------- -New features: -- Added french locale - thanks to Ettelcar. - -Bugfixes: -- Updated template file loggedOut.html to ensure valid XHTML (input tags must be put inside a block element). - - -Version 0.6.3 (30.11.2007): -------------------------------- -New features: -- Chat session is now tied to the forum session for the forum integration versions. - -Bugfixes: -- Corrected typing error in french JavaScript localization file. - - -Version 0.6.3.1 (02.12.2007): -------------------------------- -Bugfixes: -- IE cannot handle CSS import rules using a media declaration (e.g. "print") - using inline media declaration instead. - - -Version 0.7 (11.01.2008): -------------------------------- -New features: -- Added optional Flash based sound support. -- Added optional Flash based support to push udates over a socket connection. -- Added extended user menu for the online list and the inline user listing (/who command). -- Added client-side settings page. -- Added option document title blinking on new messages. -- Extended the input field to a multiline textarea (line break can be entered by SHIFT+ENTER). -- Added a message length counter. -- Added the possibility to delete messages. -- Added possibility to search for userIDs using the logs view (Search strings starting with "userID=", e.g. "userID=123"). -- Added ukraine localization - thanks to Yuriy Smetana. -- Added bulgarian localization - thanks to Borislav Manolov. -- Added norwegian localization - thanks to DagArneKirkerod. - -Other changes: -- License change => GNU Affero General Public License (still free and open source). -- Added the private channel of registered users to the channel listing. -- Made the current userRole accessible on client side. -- Made the current channelID accessible on client side. -- Removed the inclusion of js/custom.js from the logs and loggedOut template. -- Moved CSS rules for "body" into the templates, to avoid Flash conflicts on style switching. -- Improved logs view update handling. -- Improved JS config options handling. -- Improved IE5-6 style. -- The commands are now separated into single methods on client and server side. -- Added possibility to force "text/html" content-type. -- Removed the /me command as it had no real use. -- Users exceeding the maxMessageRate are not banned anymore, they get an error message instead. -- Kicked users get automatically banned for the time in minutes set as defaultBanTime. - -Bugfixes: -- MyBB admin/moderator authentication didn't work properly if user belonged to multiple usergroups - fixed. -- Fixed PREG Unicode related bug in the trimString method - thanks to Fiery_Fenix. -- Fixed a bug related to the alternating rowClass and the maxMessages setting - thanks to Frug for the info. -- If the IP of an Admin had been banned he could not login - fixed. - - -Version 0.7.0.1 (12.01.2008): -------------------------------- -New features: -- A click on a username in the chatlist now adds the name to the input field. - -Other changes: -- Closing current query automatically if the query userName is not found (logged out, changed nick). -- Adding a query close message before another query is opened. - - -Version 0.7.0.2 (14.01.2008): -------------------------------- -Changes: -- Updated french and italian localizations - thanks to Massimiliano Tiraboschi. - -Bugfixes: -- The logs view updated too slow if not in monitor mode and with enabled socket connection - fixed. - - -Version 0.7.1 (15.01.2008): -------------------------------- -New features: -- Added the (optional and limited) possibility for registered users to access the logs view. -- Added serbian localization - thanks to Saša Stojanović. - -Bugfixes: -- The soundVolume selection always showed the first option on page reload - fixed. -- Fixed a small display error for inserted logout messages. -- Adjusted the code font size for the print view. - - -Version 0.7.1.1 (16.01.2008): -------------------------------- -Changes: -- Reflecting the setting allowUserMessageDelete on client-side. -- Made the channelID of each message accessible on client-side. -- Allowing users to delete messages received privately or posted in their own private channel. - -Bugfixes: -- Fixed a bug which made bans of registered users ineffective - thanks to Seether for the info. -- Fixed a naming bug affecting the defaultBanTime config value - thanks to Seether for the info. -- Fixed a bug which prevented the "invalid channel message" from being displayed. -- Added the missing join inside the client-side method assignFontColorToMessage - thanks to druiid for the info. - - -Version 0.7.2 (18.01.2008): -------------------------------- -New features: -- Added the possibility to serve multiple chat installations using the same socket server. -- Added polish localization - thanks to Tomasz Topa. -- Updated finnish localization - thanks to Asmo Soinio. -- Updated russian localization - thanks to Dmitry Plyonkin. -- Updated ukrainian localization - thanks to Yuriy Smetana. - -Other changes: -- Removing deleted messages from the chatlist of all clients on the same channel. - -Bugfixes: -- Catching errors when trying to play sounds on the settings page with no Flash plugin installed. - - -Version 0.7.3 (29.01.2008): -------------------------------- -New features: -- Added new client-side config option ajaxChatConfig.startChatOnLoad to delay the chat update. -- Added possibility to retrieve teaser content without being logged in to the chat view. -- Updated bulgarian localization - thanks to Borislav Manolov. - -Other changes: -- Made the userID available for the method ajaxChat.getCustomUserMenuItems(encodedUserName, userID). -- Related to the bugfix the online list is now always visible on chat load. - -Bugfixes: -- If the chat window was just closed the online list would be always hidden on next chat load - fixed. -- Added a workaraound for an IE bug happening on guest logins with the MyBB integration version. - - -Version 0.7.4 (29.02.2008): -------------------------------- -New features: -- Added an installation script (install.php) to create the database tables. - Make sure you delete this file after installation! -- Updated ukrainian localization - thanks to Yuriy Smetana. -- Updated greek localization - thanks to Akis Panas. - -Bugfixes: -- Admin could not login if the chat was closed - fixed. -- Added missing userID to a getUserNodeStringItems call - thanks to Xavier Gouley. -- Fixed a bug (this.dom[id] instead of domNode) in updateDOM method - thanks to Xavier Gouley. -- Made sure the database is selected on CustomAJAXChatInterface usage of SMF version. - - -Version 0.8 (05.03.2008): -------------------------------- -New features: -- Improved socket code which allows real streaming of chat messages and greatly improves performance. -- Moved ignore list code to client-side making it possible to store ignored users using the settings cookie. -- Added client-side interface to parse input text and input commands before sending it to server-side. -- Added chinese (simplified) locale - thanks to mikespook. - -Other changes: -- Changed invitation code to work with the new socket code. -- Improved the online status and session handling. - -Bugfixes: -- Added two missing JavaScript language strings for userName error messages. - -Notes: -- The chat messages delivered using the socket connection are not encrypted even if the Chat-URL is on HTTPS. -- A new database table for the invitations has been added. - To update your existing database you can use the following SQL command: - CREATE TABLE ajax_chat_invitations ( - userID INT(11) NOT NULL, - channel INT(11) NOT NULL, - dateTime DATETIME NOT NULL - ) DEFAULT CHARSET=utf8 COLLATE=utf8_bin; - - -Version 0.8.1 (09.03.2008): -------------------------------- -New features: -- Added image BBCode support (can be disabled via user settings). -- Added new client-side settings to enable/disable image and font color BBCode. -- Added new JavaScript config setting to define allowed soure URL's for media content (e.g. images). -- Added Português (Brasil) locale - thanks to vitoalvaro. - -Bugfixes: -- Added a type check for a given database connection object (MySQL vs. MySQLi). -- The method AJAXChat->getChatURL() could return the URL with the port added twice - fixed. - -Other changes: -- Removed the 'mysql' setting for the versions for forums without MySQLi support (now detected automatically). - - -Version 0.8.1.1 (10.03.2008): -------------------------------- -Bugfixes: -- Fixed an Opera bug related to the display of the deletion link for chat messages. - - -Version 0.8.1.2 (22.03.2008): -------------------------------- -New features: -- Added Turkish locale - thanks to Cydonian. - -Bugfixes: -- Accessing the chat via HTTPS produced an encryption warning on IE due to the hardcoded flash codebase url - fixed. - - -Version 0.8.2 (27.02.2009): -------------------------------- -New features: -- Added status icon to indicate when chat is waiting for a response from the server (orange) or when chat is idle (green). -- Clicking the status icon will force the chat client to retry (workaround for when there is a lost connection). -- Added Catalan locale - thanks to Manu Quintans. -- Added Japanese locale - thanks to Ocean. -- Added Croatian locale - thanks to Renato. -- Added Korean locale - thanks to Sangho Choi. -- Added Slovenian locale - thanks to Valter Pepelko. -- Added Chinese (Traditional) locale - thanks to Tiffblue. -- Added Indonesian locale - thanks to Edi Muljadi. -- Added Czech locale - thanks to Fredy. -- Updated Swedish localization - thanks to Eric. -- Updated Spanish localization - thanks to Manu Quintans. - -Bugfixes: -- Inline user menus will no longer expand hidden below the chat window. -- Replacing the accept method of the server socket with the non-blocking accept_nonblock. -- Hyphen in database table names should no longer cause an error (in standalone chat client only). -- Fixed a typo in the Greek translation - thanks to Marios Zindilis. -- Posting an image should no longer break the autoscroll on slow connections or when it is not cached. -- Blank username and password will now log in correctly with a guest number in the standalone client. - - -Version 0.8.3 (26.06.2009): -------------------------------- -New features: -- Added Hungarian localization - thanks to Atag and Molnár Tamás. -- Added Welsh localization - thanks to Alan Davies. -- Added Estonian localization - thanks to Alar Sapelkov. -- Added Galician localization - thanks to Ruth. -- Added Georgian localization - thanks to Giorgi Maghlakelidze. -- Updated French localization - thanks to Xytovl. -- Updated Finnish localization - thanks to Saku Laukkanen. -- Nicer looking status icons. -- Status icon turns red when there is connection trouble. -- Chat will now automatically attempt to reconnect to the server if the connection is lost, rather than dying silently. -- Chat now uses a buffer before performing multiple DOM operations. This should give a noticeable speed improvement when the -chat list updates many messages at once (such as when viewing logs). - thanks to varamin. - -Bugfixes: -- The invite, uninvite, and whereis user menu options will now only appear in the inline user menu. -- Rolled back the database name handling change because of too many conflicts. If your database has a hyphen in it, you should -check the AJAXChatDataBase.php file to see the commented line. - - -Version 0.8.4 (15.02.2012): -------------------------------- -Bugfixes: -- Fix to remove javascript error message in Chrome when initializing flash bridge. - -Changed files: -- js/FABridge.js (all versions) - thanks to many users for this one. - - -Version 0.8.5 (20.01.2012): -------------------------------- -New features: -- Added Danish localization. - thanks to Allan Rehhoff. -- Added easier to navigate html readme file. -- PHPBB3 html readme file now includes proper custom instructions on implementing a shoutbox. - -Bugfixes: -- Another fix to reintroduce sound in chrome - thanks to jsebean. - - -Version 0.8.5a (11.05.2012): -------------------------------- -Bugfixes: -- Fixed a typo in config.php that would cause chat to crash if used. (all versions) - - -Version 0.8.6 (21.10.2012): -------------------------------- -New features: -- Added Thai localization - thanks to Norrapat Nimmanee. -- Added Macedonian localization - thanks to the jedi nebojsa. -- Added Farsi localization - thanks to mahmood sajjadi. -- Added Portuguese (Portugal) localization - thanks to Broas. -- Install.php checks to see if config.php has been created before running (standalone). - -Bugfixes: -- Improved Brazilian Portuguese translation - thanks to Pedro Innecco (all versions) -- Corrected some language codes (all versions) -- Improved Dutch translation - thanks to Dimitri Taghon (all versions) -- Fixed misplaced estonian language files. (all versions) -- Fixed a typo in the localization section of config.php (all versions) - - -Version 0.8.7 (1.10.2014) -------------------------------- -Notice: -- Minimum php version is now 5 (was 4). -- phpbb2 branch discontinued. -- License has changed from GNU Affero to a Modified MIT License. See file included in download. - -New features: -- Added normal Dutch localization (moved existing nl to nl-be) - thanks to Patrick Donker. -- Hide shoutbox input for users without write permissions - thanks to Felix Eckhofer. -- Added a /clear command to clear the chatlist of all text - thanks to Borislav Manolov. - -Bugfixes: -- Updated Russian and Norwegian localizations - thanks to Il'ya A. Lykov. -- Methods called statically are now declared as static to meet php 5.4 strict standards. -- Fixed case when messages were not displayed to users on page load if last message was deleted - thanks to KEMBL KEMBL. -- Fixed exploit using img tag to pass text request var. -- Change preg_replace with /e to preg_replace_callback in AJAXChatTemplate.php - thanks to Jan Kröpke. -- Fixed browser crashing bug with certain long words - thanks to Clint. -- Properly detect and report mysqli connection errors. -- Fixed a case where the default channel could be blocked from the limitChannelList config option. -- Fix potential conflict between php and mysql timezones by using mysql's FROM_UNIXTIME(). - thanks to ManOnDaMoon. -- Normalized sound volumes a bit. -- Fixed mybb integration database connection. Connection details should be pulled automatically now. -- Fidex mybb integration guest logins to accept guests that don't enter a username (assign numbers like other versions). \ No newline at end of file diff --git a/library/ajaxchat/chat/chat.sql b/library/ajaxchat/chat/chat.sql deleted file mode 100644 index 5e7efea35..000000000 --- a/library/ajaxchat/chat/chat.sql +++ /dev/null @@ -1,47 +0,0 @@ - -DROP TABLE IF EXISTS ajax_chat_online; -CREATE TABLE ajax_chat_online ( - userID INT(11) NOT NULL, - userName VARCHAR(64) NOT NULL, - userRole INT(1) NOT NULL, - channel INT(11) NOT NULL, - dateTime DATETIME NOT NULL, - ip VARBINARY(16) NOT NULL, - PRIMARY KEY (userID), - INDEX (userName) -) DEFAULT CHARSET=utf8 COLLATE=utf8_bin; - -DROP TABLE IF EXISTS ajax_chat_messages; -CREATE TABLE ajax_chat_messages ( - id INT(11) NOT NULL AUTO_INCREMENT, - userID INT(11) NOT NULL, - userName VARCHAR(64) NOT NULL, - userRole INT(1) NOT NULL, - channel INT(11) NOT NULL, - dateTime DATETIME NOT NULL, - ip VARBINARY(16) NOT NULL, - text TEXT, - PRIMARY KEY (id), - INDEX message_condition (id, channel, dateTime), - INDEX (dateTime) -) DEFAULT CHARSET=utf8 COLLATE=utf8_bin; - -DROP TABLE IF EXISTS ajax_chat_bans; -CREATE TABLE ajax_chat_bans ( - userID INT(11) NOT NULL, - userName VARCHAR(64) NOT NULL, - dateTime DATETIME NOT NULL, - ip VARBINARY(16) NOT NULL, - PRIMARY KEY (userID), - INDEX (userName), - INDEX (dateTime) -) DEFAULT CHARSET=utf8 COLLATE=utf8_bin; - -DROP TABLE IF EXISTS ajax_chat_invitations; -CREATE TABLE ajax_chat_invitations ( - userID INT(11) NOT NULL, - channel INT(11) NOT NULL, - dateTime DATETIME NOT NULL, - PRIMARY KEY (userID, channel), - INDEX (dateTime) -) DEFAULT CHARSET=utf8 COLLATE=utf8_bin; diff --git a/library/ajaxchat/chat/css/Cobalt.css b/library/ajaxchat/chat/css/Cobalt.css deleted file mode 100644 index 08c4e363b..000000000 --- a/library/ajaxchat/chat/css/Cobalt.css +++ /dev/null @@ -1,122 +0,0 @@ -/* - * @package AJAX_Chat - * @author Sebastian Tschan - * @author Philip Nicolcev - * @copyright (c) Sebastian Tschan - * @license Modified MIT License - * @link https://blueimp.net/ajax/ - * - * Color palette inspired by PunBB style "Cobalt": - * http://punbb.org/ - */ - -@import url('global.css'); -@import url('fonts.css'); -@import url('print.css'); - -@media screen,projection,handheld { - - /* Buttons */ - #content #bbCodeContainer input, #content #logoutButton, #content #submitButton, #loginForm #loginButton { - background-color:#1a1a1a; - color:#ababab; - border: 0; - } - #content select, #loginForm select, #loginForm input, #content textarea { - background-color:#383838; - color:#ababab; - border: 1px solid #565656; - } - - /* Status Icon */ - #content #statusIconContainer { - background-image: url('../img/loading-sprite.png'); - } - #content .statusContainerOff { - background-position: 0px 0px; - } - #content .statusContainerOn { - background-position: 0px -22px; - } - #content .statusContainerAlert { - background-position: 0px -44px; - } - - /* Other Theme Elements */ - #loginContent { - background-color:#2A2A2A; - color:#D4D4D4; - } - #loginContent h1 { - color:#D4D4D4; - } - #loginContent a { - color:#60A0DC; - } - #loginContent #loginFormContainer #loginButton { - background-color:#424242; - color:#D4D4D4; - } - #loginContent #errorContainer { - color:red; - } - - #content { - background-color:#2A2A2A; - color:#D4D4D4; - } - #content h1 { - color:#D4D4D4; - } - #content a { - color:#60A0DC; - } - #content #chatList, #content #onlineListContainer, #content #helpContainer, #content #settingsContainer, #content #colorCodesContainer { - border: 1px solid #565656; - background-color:#383838; - } - #content #bbCodeContainer, #content #emoticonsContainer { - background-color:#383838; - padding: 5px; - } - #content #colorCodesContainer a { - border-color:black; - } - #content #optionsContainer input { - background-color:transparent; - } - #content .rowEven { - background-color:#565656; - } - #content .rowOdd { - background-color:#484848; - } - #content .guest { - color:gray; - } - #content .user { - color:#D4D4D4; - } - #content .moderator { - color:#00AA00; - } - #content .admin { - color:red; - } - #content .chatBot { - color:#60A0DC; - } - #content #chatList .chatBotErrorMessage { - color:red; - } - #content #chatList a { - color:#60A0DC; - } - #content #chatList .deleteSelected { - border-color:red; - } - #content #onlineListContainer h3, #content #helpContainer h3, #content #settingsContainer h3 { - background-color:#383838; - color:#D4D4D4; - } -} \ No newline at end of file diff --git a/library/ajaxchat/chat/css/Core.css b/library/ajaxchat/chat/css/Core.css deleted file mode 100644 index 104fb1b8a..000000000 --- a/library/ajaxchat/chat/css/Core.css +++ /dev/null @@ -1,115 +0,0 @@ -/* - * @package AJAX_Chat - * @author Sebastian Tschan - * @author Philip Nicolcev - * @copyright (c) Sebastian Tschan - * @license Modified MIT License - * @link https://blueimp.net/ajax/ - * - * Color palette inspired by Simple Machines Forum style "SMF Default Theme - Core": - * http://www.simplemachines.org/ - */ - -@import url('global.css'); -@import url('fonts.css'); -@import url('print.css'); - -@media screen,projection,handheld { - - /* Buttons */ - #content #bbCodeContainer input, #content #logoutButton, #content #submitButton, #loginForm #loginButton { - background-color:#CDE7FF; - color:#333333; - border: 1px solid #787878; - } - #content select, #loginForm select, #loginForm input, #content textarea { - color:#333333; - border: 1px solid #787878; - } - - /* Status Icon */ - #content #statusIconContainer { - background-image: url('../img/loading-sprite.png'); - } - #content .statusContainerOff { - background-position: 0px 0px; - } - #content .statusContainerOn { - background-position: 0px -22px; - } - #content .statusContainerAlert { - background-position: 0px -44px; - } - - #loginContent { - background-color:#E5E5E8; - color:#000; - } - #loginContent h1 { - color:#000; - } - #loginContent a { - color:#000; - } - #loginContent #errorContainer { - color:red; - } - #content { - background-color:#E5E5E8; - color:#000; - } - #content h1 { - color:#000; - } - #content a { - color:#000; - } - #content input, #content select, #content textarea { - background-color:#FFF; - color:#000; - } - #content #chatList, #content #onlineListContainer, #content #helpContainer, #content #settingsContainer, #content #colorCodesContainer, #content #emoticonsContainer { - border-color:#ADADAD; - background-color:#FFF; - } - #content #colorCodesContainer a { - border-color:black; - } - #content #optionsContainer input { - background-color:transparent; - } - #content .rowEven { - background-color:#ECEDF3; - } - #content .rowOdd { - background-color:#F6F6F6; - } - #content .guest { - color:gray; - } - #content .user { - color:#000; - } - #content .moderator { - color:#0000FF; - } - #content .admin { - color:#FF0000; - } - #content .chatBot { - color:#476C8E; - } - #content #chatList .chatBotErrorMessage { - color:red; - } - #content #chatList a { - color:#476C8E; - } - #content #chatList .deleteSelected { - border-color:red; - } - #content #onlineListContainer h3, #content #helpContainer h3, #content #settingsContainer h3 { - background-color:#88A6C0; - color:#FFF; - } -} \ No newline at end of file diff --git a/library/ajaxchat/chat/css/Lithium.css b/library/ajaxchat/chat/css/Lithium.css deleted file mode 100644 index 877615838..000000000 --- a/library/ajaxchat/chat/css/Lithium.css +++ /dev/null @@ -1,116 +0,0 @@ -/* - * @package AJAX_Chat - * @author Sebastian Tschan - * @author Philip Nicolcev - * @copyright (c) Sebastian Tschan - * @license Modified MIT License - * @link https://blueimp.net/ajax/ - * - * Color palette inspired by PunBB style "Lithium": - * http://punbb.org/ - */ - -@import url('global.css'); -@import url('fonts.css'); -@import url('print.css'); - -@media screen,projection,handheld { - - /* Buttons */ - #content #bbCodeContainer input, #content #logoutButton, #content #submitButton, #loginForm #loginButton { - background-color:#6C8A3F; - color: #fff; - border: 1px solid #6C8A3F; - } - #content select, #loginForm select, #loginForm input, #content textarea { - color:#333333; - border: 1px solid #6C8A3F; - } - - /* Status Icon */ - #content #statusIconContainer { - background-image: url('../img/loading-sprite.png'); - } - #content .statusContainerOff { - background-position: 0px 0px; - } - #content .statusContainerOn { - background-position: 0px -22px; - } - #content .statusContainerAlert { - background-position: 0px -44px; - } - - /* Other Theme Elements */ - #loginContent { - background-color:#F1F1F1; - color:#333333; - } - #loginContent h1 { - color:#333333; - } - #loginContent a { - color:#638137; - } - #loginContent input, #loginContent select { - background-color:#FFF; - color:#333333; - } - #loginContent #errorContainer { - color:red; - } - #content { - background-color:#F1F1F1; - color:#333333; - } - #content h1 { - color:#333333; - } - #content a { - color:#638137; - } - #content #chatList, #content #onlineListContainer, #content #helpContainer, #content #settingsContainer, #content #colorCodesContainer, #content textarea { - border-color:#6C8A3F; - background-color:#FFF; - } - #content #colorCodesContainer a { - border-color:black; - } - #content #optionsContainer input { - background-color:transparent; - } - #content .rowEven { - background-color:#F1F1F1; - } - #content .rowOdd { - background-color:#DEDFDF; - } - #content .guest { - color:gray; - } - #content .user { - color:#000; - } - #content .moderator { - color:#00AA00; - } - #content .admin { - color:red; - } - #content .chatBot { - color:#638137; - } - #content #chatList .chatBotErrorMessage { - color:red; - } - #content #chatList a { - color:#638137; - } - #content #chatList .deleteSelected { - border-color:red; - } - #content #onlineListContainer h3, #content #helpContainer h3, #content #settingsContainer h3 { - background-color:#6C8A3F; - color:#FFF; - } -} \ No newline at end of file diff --git a/library/ajaxchat/chat/css/Mercury.css b/library/ajaxchat/chat/css/Mercury.css deleted file mode 100644 index f7e12d53f..000000000 --- a/library/ajaxchat/chat/css/Mercury.css +++ /dev/null @@ -1,154 +0,0 @@ -/* - * @package AJAX_Chat - * @author Sebastian Tschan - * @author Philip Nicolcev - * @copyright (c) Sebastian Tschan - * @license Modified MIT License - * @link https://blueimp.net/ajax/ - * - * Color palette inspired by PunBB style "Mercury": - * http://punbb.org/ - */ - -@import url('global.css'); -@import url('fonts.css'); -@import url('print.css'); - -@media screen,projection,handheld { - - /* Status Icon */ - #content #statusIconContainer { - background-image: url('../img/loading-sprite.png'); - } - #content .statusContainerOff { - background-position: 0px 0px; - } - #content .statusContainerOn { - background-position: 0px -22px; - } - #content .statusContainerAlert { - background-position: 0px -44px; - } - - #content input, #content select, #content textarea { - border: 1px solid #565656; - } - #content textarea { - border-color: #383838; - } - #content input { - border-radius: 3px; - } - #loginContent { - background-color:#2A2A2A; - color:#D4D4D4; - } - #loginContent h1 { - color:#D4D4D4; - } - #loginContent a { - color:#F6B620; - } - #loginContent input, #loginContent select { - background-color:#424242; - border-color:#565656; - color:#D4D4D4; - } - #loginContent #loginFormContainer #loginButton { - background-color:#424242; - color:#D4D4D4; - border-radius: 3px; - } - #loginContent #errorContainer { - color:red; - } - - #content { - background-color:#2A2A2A; - color:#D4D4D4; - } - #content h1 { - color:#D4D4D4; - } - #content a { - color:#F6B620; - } - #content input, #content select, #content textarea { - background-color:#383838; - color:#D4D4D4; - } - #content #chatList, #content #onlineListContainer, #content #helpContainer, #content #settingsContainer, #content #colorCodesContainer, #content #emoticonsContainer { - border: 0; - background-color:#383838; - } - #content #colorCodesContainer { - padding: 5px; - box-shadow: 2px 2px 4px #000; - border-radius: 3px; - } - #content #onlineListContainer { - background: #383838; - } - #content #onlineListContainer #onlineList div { - margin: 0 1px 1px 1px; - border-radius: 5px; - background: #404040; - } - #content #onlineListContainer #onlineList ul { - margin-top: 1px; - list-style: none; - } - #content #emoticonsContainer { - border-radius: 3px; - } - #content #bbCodeContainer { - border: 0; padding-left: 0; - } - #content #bbCodeContainer input, #content #logoutButton, #content #submitButton { - background-color:#383838; - color:#D4D4D4; - } - #content #bbCodeContainer input:hover, #content #logoutButton:hover, #content #submitButton:hover { - background-color:#565656; - } - #content #optionsContainer input.button { - border: 0; - } - #content #optionsContainer input { - background-color:transparent; - } - #content .rowEven { - background-color:#505050; - } - #content .rowOdd { - background-color:#484848; - } - #content .guest { - color:gray; - } - #content .user { - color:#D4D4D4; - } - #content .moderator { - color:#00AA00; - } - #content .admin { - color:red; - } - #content .chatBot { - color:#F6B620; - } - #content #chatList .chatBotErrorMessage { - color:red; - } - #content #chatList a { - color:#F6B620; - } - #content #chatList .deleteSelected { - border-color:red; - } - #content #onlineListContainer h3, #content #helpContainer h3, #content #settingsContainer h3 { - color:#D4D4D4; - height: 15px; - } -} \ No newline at end of file diff --git a/library/ajaxchat/chat/css/MyBB.css b/library/ajaxchat/chat/css/MyBB.css deleted file mode 100644 index 9daa19d56..000000000 --- a/library/ajaxchat/chat/css/MyBB.css +++ /dev/null @@ -1,115 +0,0 @@ -/* - * @package AJAX_Chat - * @author Sebastian Tschan - * @author Philip Nicolcev - * @copyright (c) Sebastian Tschan - * @license Modified MIT License - * @link https://blueimp.net/ajax/ - * - * Color palette inspired by MyBB style "MyBB Default": - * http://www.mybboard.net/ - */ - -@import url('global.css'); -@import url('fonts.css'); -@import url('print.css'); - -@media screen,projection,handheld { - - /* Buttons */ - #content #bbCodeContainer input, #content #logoutButton, #content #submitButton, #loginForm #loginButton { - background-color:#02619f; - color:#fff; - font-weight: bold; - border: 0px solid #02619f; - border-radius: 5px; - } - #content select, #loginForm select, #loginForm input, #content textarea { - color:#333333; - border: 1px solid #02619f; - border-radius: 5px; - } - - /* Status Icon */ - #content #statusIconContainer { - background-image: url('../img/loading-sprite.png'); - } - #content .statusContainerOff { - background-position: 0px 0px; - } - #content .statusContainerOn { - background-position: 0px -22px; - } - #content .statusContainerAlert { - background-position: 0px -44px; - } - #loginContent { - background-color:#FFF; - color:#000; - } - #loginContent h1 { - color:#000; - } - #loginContent a { - color:#000; - } - #loginContent #errorContainer { - color:red; - } - #content { - background-color:#FFF; - color:#000; - } - #content h1 { - color:#000; - } - #content a { - color:#000; - } - #content input, #content select, #content textarea { - background-color:#FFF; - color:#000; - } - #content #chatList, #content #onlineListContainer, #content #helpContainer, #content #settingsContainer, #content #colorCodesContainer, #content #emoticonsContainer { - border-color:#ADADAD; - background-color:#E5E5E8; - } - #content #colorCodesContainer a { - border-color:black; - } - #content #optionsContainer input { - background-color:transparent; - } - #content .rowEven, #content .rowOdd { - background-color:#EFEFEF; - border-bottom: 1px solid #bdccf7; - } - #content .guest { - color:gray; - } - #content .user { - color:#000; - } - #content .moderator { - color:#0000FF; - } - #content .admin { - color:#FF0000; - } - #content .chatBot { - color:#476C8E; - } - #content #chatList .chatBotErrorMessage { - color:red; - } - #content #chatList a { - color:#476C8E; - } - #content #chatList .deleteSelected { - border-color:red; - } - #content #onlineListContainer h3, #content #helpContainer h3, #content #settingsContainer h3 { - background-color:#02619f; - color:#FFF; - } -} \ No newline at end of file diff --git a/library/ajaxchat/chat/css/Oxygen.css b/library/ajaxchat/chat/css/Oxygen.css deleted file mode 100644 index 916317483..000000000 --- a/library/ajaxchat/chat/css/Oxygen.css +++ /dev/null @@ -1,116 +0,0 @@ -/* - * @package AJAX_Chat - * @author Sebastian Tschan - * @author Philip Nicolcev - * @copyright (c) Sebastian Tschan - * @license Modified MIT License - * @link https://blueimp.net/ajax/ - * - * Color palette inspired by PunBB style "Oxygen": - * http://punbb.org/ - */ - -@import url('global.css'); -@import url('fonts.css'); -@import url('print.css'); - -@media screen,projection,handheld { - - /* Buttons */ - #content #bbCodeContainer input, #content #logoutButton, #content #submitButton, #loginForm #loginButton { - background-color:#0066B9; - color: #fff; - border: 1px solid #0066B9; - } - #content select, #loginForm select, #loginForm input, #content textarea { - color:#333333; - border: 1px solid #0066B9; - } - - /* Status Icon */ - #content #statusIconContainer { - background-image: url('../img/loading-sprite.png'); - } - #content .statusContainerOff { - background-position: 0px 0px; - } - #content .statusContainerOn { - background-position: 0px -22px; - } - #content .statusContainerAlert { - background-position: 0px -44px; - } - - /* Other Theme Elements */ - #loginContent { - background-color:#F1F1F1; - color:#333333; - } - #loginContent h1 { - color:#333333; - } - #loginContent a { - color:#0066B9; - } - #loginContent input, #loginContent select { - background-color:#FFF; - color:#333333; - } - #loginContent #errorContainer { - color:red; - } - #content { - background-color:#F1F1F1; - color:#333333; - } - #content h1 { - color:#333333; - } - #content a { - color:#0066B9; - } - #content #chatList, #content #onlineListContainer, #content #helpContainer, #content #settingsContainer, #content #colorCodesContainer, #content textarea { - border-color:#0066B9; - background-color:#FFF; - } - #content #colorCodesContainer a { - border-color:black; - } - #content #optionsContainer input { - background-color:transparent; - } - #content .rowEven { - background-color:#F1F1F1; - } - #content .rowOdd { - background-color:#DEDFDF; - } - #content .guest { - color:gray; - } - #content .user { - color:#000; - } - #content .moderator { - color:#00AA00; - } - #content .admin { - color:red; - } - #content .chatBot { - color:#0066B9; - } - #content #chatList .chatBotErrorMessage { - color:red; - } - #content #chatList a { - color:#0066B9; - } - #content #chatList .deleteSelected { - border-color:red; - } - #content #onlineListContainer h3, #content #helpContainer h3, #content #settingsContainer h3 { - background-color:#0066B9; - color:#FFF; - } -} \ No newline at end of file diff --git a/library/ajaxchat/chat/css/Plum.css b/library/ajaxchat/chat/css/Plum.css deleted file mode 100644 index a1aec9fde..000000000 --- a/library/ajaxchat/chat/css/Plum.css +++ /dev/null @@ -1,112 +0,0 @@ -/* - * @package AJAX_Chat - * @author Rosina Ramirez - * @copyright (c) Rosina Ramirez - * @license Modified MIT License - * @link https://blueimp.net/ajax/ - */ - -@import url('global.css'); -@import url('fonts.css'); -@import url('print.css'); - -@media screen,projection,handheld { - - #content input, select, #content textarea, #loginButton { - border: 0; box-shadow:1px 1px 4px 0px rgba(0,0,0,0.5); - } - #content textarea { border-color: #383838; } - #content input, #loginButton { border-radius: 8px; } - #loginContent, #content { - background-color:#2A112F; - color:#9765A0; - } - a { - color:#DA83A1; - } - input, select { - background:#17081a; - border: 1px solid rgba(0,0,0,1); - color:#9765A0; - } - #loginContent #errorContainer { - color:red; - } - h1 { - color:#CDA6D2; - } - - #content textarea { - background:rgba(0,0,0,0.3); - color:#9765A0; - } - #content #chatList{ - background: url('plum_images/plum.png') no-repeat bottom right rgba(0,0,0,0.3); - } - #content #colorCodesContainer { - padding: 5px; - box-shadow: 2px 2px 4px #000; - border-radius: 3px; - background:rgba(225,225,225,0.2) - } - #content #onlineListContainer, #content #helpContainer, #content #settingsContainer { - background: url('plum_images/plum2.png') no-repeat bottom left rgba(0,0,0,0.3); - } - #content #onlineListContainer #onlineList ul { - list-style: none; - } - #content #emoticonsContainer { border-radius: 3px; } - #content #bbCodeContainer { border: 0; padding-left: 0; } - #content #statusIconContainer { background-image: url('../img/loading-sprite.png'); } - #content .statusContainerOff { - background-position: 0px 0px; - } - #content .statusContainerOn { - background-position: 0px -22px; - } - #content .statusContainerAlert { - background-position: 0px -44px; - } - #content #bbCodeContainer input, #content #logoutButton, #content #submitButton, #loginButton { - background-color:#461124; - color:#DAABBC; - } - #content #bbCodeContainer input:hover, #content #logoutButton:hover, #content #submitButton:hover, #loginButton:hover { - background-color:#591E33; - } - #content #optionsContainer input.button { border: 0; } - #content #optionsContainer input { - background-color:transparent; - } - #content .rowEven { - background:rgba(0,0,0,0.2); - } - #content .rowOdd { - background:rgba(0,0,0,0.3); - } - #content .guest { - color:gray; - } - #content .user { - color:#CDA6D2; - } - #content .moderator { - color:#00AA00; - } - #content .admin { - color:red; - } - #content .chatBot { - color:#CDA6D2; - } - #content #chatList .chatBotErrorMessage { - color:red; - } - #content #chatList .deleteSelected { - border-color:red; - } - #content #onlineListContainer h3, #content #helpContainer h3, #content #settingsContainer h3 { - color:#CDA6D2; - height: 15px; - } -} \ No newline at end of file diff --git a/library/ajaxchat/chat/css/Sulfur.css b/library/ajaxchat/chat/css/Sulfur.css deleted file mode 100644 index f7d721ccf..000000000 --- a/library/ajaxchat/chat/css/Sulfur.css +++ /dev/null @@ -1,116 +0,0 @@ -/* - * @package AJAX_Chat - * @author Sebastian Tschan - * @author Philip Nicolcev - * @copyright (c) Sebastian Tschan - * @license Modified MIT License - * @link https://blueimp.net/ajax/ - * - * Color palette inspired by PunBB style "Sulfur": - * http://punbb.org/ - */ - -@import url('global.css'); -@import url('fonts.css'); -@import url('print.css'); - -@media screen,projection,handheld { - - /* Buttons */ - #content #bbCodeContainer input, #content #logoutButton, #content #submitButton, #loginForm #loginButton { - background-color:#B84623; - color: #fff; - border: 1px solid #B84623; - } - #content select, #loginForm select, #loginForm input, #content textarea { - color:#333333; - border: 1px solid #B84623; - } - - /* Status Icon */ - #content #statusIconContainer { - background-image: url('../img/loading-sprite.png'); - } - #content .statusContainerOff { - background-position: 0px 0px; - } - #content .statusContainerOn { - background-position: 0px -22px; - } - #content .statusContainerAlert { - background-position: 0px -44px; - } - - /* Other Theme Elements */ - #loginContent { - background-color:#F1F1F1; - color:#333333; - } - #loginContent h1 { - color:#333333; - } - #loginContent a { - color:#B84623; - } - #loginContent input, #loginContent select { - background-color:#FFF; - color:#333333; - } - #loginContent #errorContainer { - color:red; - } - #content { - background-color:#F1F1F1; - color:#333333; - } - #content h1 { - color:#333333; - } - #content a { - color:#B84623; - } - #content #chatList, #content #onlineListContainer, #content #helpContainer, #content #settingsContainer, #content #colorCodesContainer, #content textarea { - border-color:#B84623; - background-color:#FFF; - } - #content #colorCodesContainer a { - border-color:black; - } - #content #optionsContainer input { - background-color:transparent; - } - #content .rowEven { - background-color:#F1F1F1; - } - #content .rowOdd { - background-color:#DEDFDF; - } - #content .guest { - color:gray; - } - #content .user { - color:#000; - } - #content .moderator { - color:#00AA00; - } - #content .admin { - color:red; - } - #content .chatBot { - color:#B84623; - } - #content #chatList .chatBotErrorMessage { - color:red; - } - #content #chatList a { - color:#B84623; - } - #content #chatList .deleteSelected { - border-color:red; - } - #content #onlineListContainer h3, #content #helpContainer h3, #content #settingsContainer h3 { - background-color:#B84623; - color:#FFF; - } -} \ No newline at end of file diff --git a/library/ajaxchat/chat/css/Uranium.css b/library/ajaxchat/chat/css/Uranium.css deleted file mode 100644 index 7ff9b648d..000000000 --- a/library/ajaxchat/chat/css/Uranium.css +++ /dev/null @@ -1,178 +0,0 @@ -/* - * @package AJAX_Chat - * @author Rosina Ramirez - * @copyright (c) Rosina Ramirez - * @license Modified MIT License - * @link https://blueimp.net/ajax/ - * - */ - -@import url('global.css'); -@import url('fonts.css'); -@import url('print.css'); - -@media screen,projection,handheld { - - input, select, textarea, #content #chatList, #content #onlineListContainer, #content #helpContainer, #content #settingsContainer, #content .rowEven, - #content #onlineListContainer h3, #content #helpContainer h3, #content #settingsContainer h3, #content #inputFieldContainer, #loginContent input - { border-radius: 5px; -webkit-border-radius:5px;border:0;} - #loginContent a { - color:#4c9546; - } - #content #inputFieldContainer{height:46px; background:#0E0E0E;padding:0;} - #content #inputFieldContainer #inputField{box-shadow: inset 1px 1px 5px 1px #000; border:0;height: 40px;padding: 3px 0.5%;width: 99%;} - #content #inputFieldContainer #inputField:focus{outline:none;box-shadow:0px 0px 8px 1px #376e34;} - #loginContent #loginFormContainer #loginButton { - background-color:#424242; - color:#b0b8a8; - border-radius: 3px; - } - #loginContent #errorContainer { - color:red; - } - - #content, #loginContent { - background-color: #464646; - background-image: -webkit-gradient(linear, left top, left bottom, from(#464646), to(#181818)); - background-image: -webkit-linear-gradient(top, #464646, #181818); - background-image: -moz-linear-gradient(top, #464646, #181818); - background-image: -o-linear-gradient(top, #464646, #181818); - background-image: linear-gradient(to bottom, #464646, #181818); - color:#b0b8a8; - } - h1, h3 { - color:#e2e9db; - text-shadow: 1px 1px 2px #191919; - } - #content a { - color:#4c9546; - } - #loginContent input, #loginContent select{background:#171717; color:#b0b8a8;} - input, select{padding: 3px;} - #content input,#content select,#content textarea { - background-color:#0e0e0e; - color:#b0b8a8; - } - #content #colorCodesContainer,#content #chatList, #content #onlineListContainer, #content #helpContainer, #content #settingsContainer, #content #inputFieldContainer, - #loginContent input[type=text], #loginContent input[type=password]{ - box-shadow: 0px 0px 8px 1px #495a49; -webkit-box-shadow: 0px 0px 8px 1px #495a49; - } - #content #chatList, #content #onlineListContainer, #content #helpContainer, #content #settingsContainer { - background-color:#171717; - border:0; - } - #content #chatList:after, #content #chatList:before{ - content:''; - display:block; - position:absolute; - border-radius: 5px; - } - #content #chatList:before{top:17px;left:0px;width:0px;height:98%;box-shadow: 1px 0px 8px 1px #000;} - #content #chatList:after{top:0px;left:17px;width:98%;height:0px;box-shadow: 0px 1px 8px 1px #000;} - - #content #onlineListContainer #onlineList div { - margin: 0 1px 1px 1px; - background: none; - } - #content #onlineListContainer #onlineList ul { - margin-top: 1px; - list-style: none; - } - - #content #helplist table, #content #settingsList table{border-spacing:0;} - #content #emoticonsContainer { border-radius: 3px; } - #content #bbCodeContainer { border: 0; padding-left: 0; } - #content #statusIconContainer { background-image: url('../img/loading-sprite.png'); } - #content .statusContainerOff { - background-position: 0px 0px; - } - #content .statusContainerOn { - background-position: 0px -22px; - } - #content .statusContainerAlert { - background-position: 0px -44px; - } - #content #bbCodeContainer input { - background-color: #d8ffd6; - background-image: -webkit-gradient(linear, left top, left bottom, from(#d8ffd6), to(#467a44)); - background-image: -webkit-linear-gradient(top, #d8ffd6, #467a44); - background-image: -moz-linear-gradient(top, #d8ffd6, #467a44); - background-image: -o-linear-gradient(top, #d8ffd6, #467a44); - background-image: linear-gradient(to bottom, #d8ffd6, #467a44); - color:#1d1d1d; - } - #content #bbCodeContainer input:hover{ - background-color: #ffffff; - background-image: -webkit-gradient(linear, left top, left bottom, from(#ffffff), to(#08ff35)); - background-image: -webkit-linear-gradient(top, #ffffff, #08ff35); - background-image: -moz-linear-gradient(top, #ffffff, #08ff35); - background-image: -o-linear-gradient(top, #ffffff, #08ff35); - background-image: linear-gradient(to bottom, #ffffff, #08ff35); - } - #content #bbCodeContainer input:active, #content #logoutButton:active, #content #submitButton:active, #loginContent #loginButton:active{box-shadow:0px 0px 8px 1px #38ff56;} - #content #logoutButton, #content #submitButton,#loginContent #loginButton{ - background-color: #4fff58; - background-image: -webkit-gradient(linear, left top, left bottom, from(#4fff58), to(#194221)); - background-image: -webkit-linear-gradient(top, #4fff58, #194221); - background-image: -moz-linear-gradient(top, #4fff58, #194221); - background-image: -o-linear-gradient(top, #4fff58, #194221); - background-image: linear-gradient(to bottom, #4fff58, #194221); - font-weight:bold; color:#fff; - text-shadow:0px 0px 5px #000; - } - #content #logoutButton:hover, #content #submitButton:hover, #loginContent #loginButton:hover{ - background-color: #99ffa8; - background-image: -webkit-gradient(linear, left top, left bottom, from(#99ffa8), to(#002405)); - background-image: -webkit-linear-gradient(top, #99ffa8, #002405); - background-image: -moz-linear-gradient(top, #99ffa8, #002405); - background-image: -o-linear-gradient(top, #99ffa8, #002405); - background-image: linear-gradient(to bottom, #99ffa8, #002405); - } - - #content #colorCodesContainer{ - border:0; - background:rgba(0,0,0,0.7); - padding:7px; - } - #content #colorCodesContainer a{border-radius:10px; box-shadow:0px 0px 3px 1px rgba(255,255,255,0.3); margin:0 5px;border:0;} - #content #optionsContainer input.button { border: 0; padding: 0; margin-right: 5px;} - #content #optionsContainer input { - background-color:transparent; - } - #content .rowEven { - background-color:#131413; - } - #content .guest { - color:gray; - } - #content .user { - color:#b0b8a8; - } - #content .moderator { - color:#00AA00; - } - #content .admin { - color:red; - } - #content .chatBot { - color:#4c9546; - } - #content #chatList .chatBotErrorMessage { - color:red; - } - #content #chatList a { - color:#4c9546; - } - #content #chatList .deleteSelected { - border-color:red; - } - #content #onlineListContainer h3, #content #helpContainer h3, #content #settingsContainer h3 { - background-color: #171717; - background-image: -webkit-gradient(linear, left top, left bottom, from(#3b6c37), to(#171717)); - background-image: -webkit-linear-gradient(top, #3b6c37, #223220, #171717); - background-image: -moz-linear-gradient(top, #3b6c37, #223220, #171717); - background-image: -o-linear-gradient(top, #3b6c37, #223220, #171717); - background-image: linear-gradient(to bottom, #3b6c37, #223220, #171717); - } - -} \ No newline at end of file diff --git a/library/ajaxchat/chat/css/beige.css b/library/ajaxchat/chat/css/beige.css deleted file mode 100644 index 7c30bbe6d..000000000 --- a/library/ajaxchat/chat/css/beige.css +++ /dev/null @@ -1,114 +0,0 @@ -/* - * @package AJAX_Chat - * @author Sebastian Tschan - * @author Philip Nicolcev - * @copyright (c) Sebastian Tschan - * @license Modified MIT License - * @link https://blueimp.net/ajax/ - */ - -@import url('global.css'); -@import url('fonts.css'); -@import url('print.css'); - -@media screen,projection,handheld { - - /* Buttons */ - #content #bbCodeContainer input, #content #logoutButton, #content #submitButton, #loginForm #loginButton { - background-color:#d9ce72; - color:#333333; - border: 1px solid #c8b360; - background-image: linear-gradient(to bottom, #d9ce72, #e1d995); - } - #content select, #loginForm select, #loginForm input, #content textarea { - color:#333333; - border: 1px solid #c8b360; - } - - /* Status Icon */ - #content #statusIconContainer { - background-image: url('../img/loading-sprite.png'); - } - #content .statusContainerOff { - background-position: 0px 0px; - } - #content .statusContainerOn { - background-position: 0px -22px; - } - #content .statusContainerAlert { - background-position: 0px -44px; - } - - /* Other Theme Elements */ - #loginContent { - background-color:#F7F5DC; - color:#000; - } - #loginContent h1 { - color:#000; - } - #loginContent a { - color:#000; - } - #loginContent input, #loginContent select { - background-color:#FFF; - color:#000; - } - #loginContent #errorContainer { - color:red; - } - #content { - background-color:#eee9be; - color:#000; - } - #content h1 { - color:#000; - } - #content a { - color:#000; - } - #content #chatList, #content #onlineListContainer, #content #helpContainer, #content #settingsContainer, #content #colorCodesContainer, #content textarea { - border-color:gray; - background-color:#FFF; - } - #content #colorCodesContainer a { - border-color:black; - } - #content #optionsContainer input { - background-color:transparent; - } - #content .rowEven { - background-color:#FFFFF0; - } - #content .rowOdd { - background-color:#F7F5DC; - } - #content .guest { - color:gray; - } - #content .user { - color:#000; - } - #content .moderator { - color:#00AA00; - } - #content .admin { - color:red; - } - #content .chatBot { - color:#FF6600; - } - #content #chatList .chatBotErrorMessage { - color:red; - } - #content #chatList a { - color:#1E90FF; - } - #content #chatList .deleteSelected { - border-color:red; - } - #content #onlineListContainer h3, #content #helpContainer h3, #content #settingsContainer h3 { - background-color:#FFFFF0; - color:#000; - } -} \ No newline at end of file diff --git a/library/ajaxchat/chat/css/black.css b/library/ajaxchat/chat/css/black.css deleted file mode 100644 index 292b5d10c..000000000 --- a/library/ajaxchat/chat/css/black.css +++ /dev/null @@ -1,115 +0,0 @@ -/* - * @package AJAX_Chat - * @author Sebastian Tschan - * @author Philip Nicolcev - * @copyright (c) Sebastian Tschan - * @license Modified MIT License - * @link https://blueimp.net/ajax/ - */ - -@import url('global.css'); -@import url('fonts.css'); -@import url('print.css'); - -@media screen,projection,handheld { - - /* Buttons */ - #content #bbCodeContainer input, #content #logoutButton, #content #submitButton, #loginForm #loginButton { - background-color:#000; - color:#f0f0f0; - border: 1px solid #808080; - background-image: linear-gradient(to bottom, #222, #000); - } - #content select, #loginForm select, #loginForm input, #content textarea { - background-color:#000; - color:#fafafa; - border: 1px solid #808080; - } - - /* Status Icon */ - #content #statusIconContainer { - background-image: url('../img/loading-sprite.png'); - } - #content .statusContainerOff { - background-position: 0px 0px; - } - #content .statusContainerOn { - background-position: 0px -22px; - } - #content .statusContainerAlert { - background-position: 0px -44px; - } - - /* Other Theme Elements */ - #loginContent { - background-color:#000; - color:#FFF; - } - #loginContent h1 { - color:#FFF; - } - #loginContent a { - color:#FFF; - } - #loginContent input, #loginContent select { - background-color:#212121; - color:#FFF; - } - #loginContent #errorContainer { - color:red; - } - #content { - background-color:#000; - color:#FFF; - } - #content h1 { - color:#FFF; - } - #content a { - color:#FFF; - } - #content #chatList, #content #onlineListContainer, #content #helpContainer, #content #settingsContainer, #content #colorCodesContainer, #content textarea { - border-color:gray; - background-color:#000; - } - #content #colorCodesContainer a { - border-color:black; - } - #content #optionsContainer input { - background-color:transparent; - } - #content .rowEven { - background-color:#212121; - } - #content .rowOdd { - background-color:#000; - } - #content .guest { - color:gray; - } - #content .user { - color:#FFF; - } - #content .moderator { - color:#00AA00; - } - #content .admin { - color:red; - } - #content .chatBot { - color:#FF6600; - } - #content #chatList .chatBotErrorMessage { - color:red; - } - #content #chatList a { - color:#1E90FF; - } - #content #chatList .deleteSelected { - border-color:red; - } - #content #onlineListContainer h3, #content #helpContainer h3, #content #settingsContainer h3 { - background-color:#212121; - color:#FFF; - } -} \ No newline at end of file diff --git a/library/ajaxchat/chat/css/fonts.css b/library/ajaxchat/chat/css/fonts.css deleted file mode 100644 index e12f628cc..000000000 --- a/library/ajaxchat/chat/css/fonts.css +++ /dev/null @@ -1,100 +0,0 @@ -/* - * @package AJAX_Chat - * @author Sebastian Tschan - * @copyright (c) Sebastian Tschan - * @license Modified MIT License - * @link https://blueimp.net/ajax/ - */ - -/* Fonts */ -#loginContent { - font-family:Verdana, Arial, Helvetica, sans-serif; - font-size:0.8em; -} -#loginContent h1 { - font-size:1.3em; - font-family:"Trebuchet MS", Verdana, Arial, sans-serif; - font-weight:bold; -} -#loginContent a { - text-decoration:none; -} -#loginContent a:hover { - text-decoration:underline; -} -#loginContent #loginRegisteredUsers { - font-size:0.8em; -} -#loginContent #copyright { - font-size:0.8em; -} -#content { - font-family:Verdana, Arial, Helvetica, sans-serif; - font-size:0.8em; -} -#content h1 { - font-size:1.3em; - font-family:"Trebuchet MS", Verdana, Arial, sans-serif; - font-weight:bold; -} -#content h3 { - font-size:1.0em; -} -#content a { - text-decoration:none; -} -#content a:hover { - text-decoration:underline; -} -#content #copyright { - font-size:0.8em; -} -#content #chatList span.dateTime { - font-size:0.7em; -} -#content #chatList span.guest { - font-weight:bold; -} -#content #chatList span.user { - font-weight:bold; -} -#content #chatList span.moderator { - font-weight:bold; -} -#content #chatList span.admin { - font-weight:bold; -} -#content #chatList span.chatBot { - font-weight:bold; - font-style:italic; -} -#content #chatList .chatBotMessage { - font-style:italic; -} -#content #chatList .chatBotErrorMessage { - font-style:italic; -} -#content #chatList .privmsg { - font-style:italic; -} -#content #chatList .action { - font-style:italic; -} -#content #chatList q { - font-variant:small-caps; -} -#content #chatList code { - font-size:1.2em; -} -#content #onlineListContainer #onlineList div { - font-size:0.9em; -} -#content #helpContainer #helpList td { - font-size:0.9em; -} -#content #helpContainer #helpList td.code { - font-style:italic; -} -#content #settingsContainer #settingsList td { - font-size:0.9em; -} \ No newline at end of file diff --git a/library/ajaxchat/chat/css/global.css b/library/ajaxchat/chat/css/global.css deleted file mode 100644 index eff916fc9..000000000 --- a/library/ajaxchat/chat/css/global.css +++ /dev/null @@ -1,278 +0,0 @@ -/* - * @package AJAX_Chat - * @author Sebastian Tschan - * @author Philip Nicolcev - * @copyright (c) Sebastian Tschan - * @license Modified MIT License - * @link https://blueimp.net/ajax/ - */ - -/* Positioning */ -#loginContent { - position:absolute; - width:100%; - height:100%; -} -#loginContent #loginHeadlineContainer { - margin: 100px 100px 0 100px; -} -#loginContent #loginFormContainer, #loginContent #errorContainer { - margin: 0 100px; -} -#loginContent #loginFormContainer div { - margin-bottom:7px; -} -#loginContent #loginRegisteredUsers { - padding-top:5px; -} -#loginContent #copyright { - margin: 20px 100px 0 100px; -} -#content { - position:absolute; - width:100%; - height:100%; -} -#content #copyright { - position:absolute; - right:20px; - top:20px; -} -#content #headlineContainer { - position:absolute; - left:20px; - top:5px; -} -#content #logoutChannelContainer { - position:absolute; - left:20px; - top:50px; -} -#content #logoutChannelContainer select{ - width: 105px; - height: 22px; -} -#content #statusIconContainer { - position:absolute; - right:20px; - top:50px; - width: 22px; - height: 22px; -} -#content #chatList { - position:absolute; - left:20px; - right:230px; - top:85px; - bottom:150px; - overflow:auto; -} -#content #inputFieldContainer { - position:absolute; - left:20px; - right:20px; - bottom:95px; - padding-right:4px; -} -#content #submitButtonContainer { - position:absolute; - right:20px; - bottom:60px; -} -#content #onlineListContainer { - position:absolute; - right:20px; - top:85px; - width:200px; - bottom:150px; -} -#content #helpContainer { - position:absolute; - right:20px; - top:85px; - width:360px; - bottom:150px; -} -#content #settingsContainer { - position:absolute; - right:20px; - top:85px; - width:360px; - bottom:150px; -} -#content #bbCodeContainer { - position:absolute; - left:20px; - bottom:20px; - padding:3px; -} -#content #colorCodesContainer { - position:absolute; - left:20px; - bottom:55px; - padding:3px; - z-index:1; -} -#content #emoticonsContainer { - position:absolute; - left:20px; - bottom:57px; - padding:3px; -} -#content #optionsContainer { - position:absolute; - right:20px; - bottom:20px; - padding:3px; - padding-right:0px; -} -#content #bbCodeContainer input, #content #logoutButton, #content #submitButton, #loginContent #loginButton { - padding: 4px 10px; -} -#content #colorCodesContainer a { - display:block; - float:left; - width:20px; - height:20px; -} -#content #optionsContainer input { - vertical-align:middle; -} -#content #optionsContainer input.button { - width:22px; - height:22px; -} -#content #emoticonsContainer a { - margin-left:1px; - margin-right:1px; -} -#content #emoticonsContainer img { - vertical-align:middle; - margin-bottom:2px; -} -#content #headlineContainer h1 { - margin-left:auto; - margin-top:12px; -} -#content #chatList div { - padding: 2px 10px; -} -#content #chatList img { - vertical-align:middle; - margin-bottom:2px; -} -#content #chatList cite { - margin-right:5px; -} -#content #chatList .bbCodeImage { - vertical-align:top; - overflow:auto; - margin:5px; -} -#content #chatList .delete { - display:block; - float:right; - width:10px; - height:10px; - margin-top:2px; - padding-left:5px; - background:url('../img/delete.png') no-repeat right; -} -#content #inputFieldContainer #inputField { - width:100%; - height:40px; -} -#content #onlineListContainer h3, #content #helpContainer h3, #content #settingsContainer h3 { - height:30px; - padding: 4px 10px; - margin:0px; - text-align:center; -} -#content #onlineListContainer #onlineList, #content #helpContainer #helpList, #content #settingsContainer #settingsList { - position:absolute; - left:0px; - right:0px; - top:25px; - bottom:0px; - overflow:auto; -} -#content #onlineListContainer #onlineList div { - padding: 2px 10px; -} -#content #onlineListContainer #onlineList a { - display:block; -} -#content #onlineListContainer #onlineList ul { - margin: 5px 0; - padding-left:20px; -} -#content #helpContainer #helpList td, #content #settingsContainer #settingsList td { - padding: 4px 10px; - vertical-align:top; -} -#content #settingsContainer #settingsList td { - vertical-align:middle; -} -#content #settingsContainer #settingsList td.setting { - width:115px; -} -#content #settingsContainer #settingsList input.text { - width:100px; -} -#content #settingsContainer #settingsList select.left { - text-align:right; -} -#content #settingsContainer #settingsList input.button { - width:22px; - height:22px; - vertical-align:middle; - margin-bottom:2px; -} - -/* Buttons */ -#content #optionsContainer #helpButton { - background:url('../img/help.png') no-repeat; -} -#content #optionsContainer #settingsButton { - background:url('../img/settings.png') no-repeat; -} -#content #optionsContainer #onlineListButton { - background:url('../img/users.png') no-repeat; -} -#content #optionsContainer #audioButton { - background:url('../img/audio.png') no-repeat 0px 0px; -} -#content #optionsContainer #audioButton.off { - background-position: 0px 100%; -} -#content #optionsContainer #autoScrollButton { - background:url('../img/autoscroll.png') no-repeat 0px 0px; -} -#content #optionsContainer #autoScrollButton.off { - background-position: 0px 100%; -} -#content #settingsContainer #settingsList input.playback { - background:url('../img/playback.png') no-repeat; -} - -/* Borders */ -#content img { - border:none; -} -#content #chatList, #content #onlineListContainer, #content #helpContainer, #content #settingsContainer, #content #colorCodesContainer, -#content #colorCodesContainer a, #content textarea { - border-width:1px; - border-style:solid; -} -#content #chatList .deleteSelected { - border-width:1px; - border-style:dotted; -} -#content #helpContainer #helpList table, #content #settingsContainer #settingsList table { - border-collapse:collapse; -} - -/* Misc */ -#content #bbCodeContainer input, #content #optionsContainer input.button, #content #settingsContainer #settingsList input.button, #content #logoutButton, #content #submitButton, #loginContent #loginButton { - cursor:pointer; -} \ No newline at end of file diff --git a/library/ajaxchat/chat/css/grey.css b/library/ajaxchat/chat/css/grey.css deleted file mode 100644 index 36d55d6a4..000000000 --- a/library/ajaxchat/chat/css/grey.css +++ /dev/null @@ -1,115 +0,0 @@ -/* - * @package AJAX_Chat - * @author Sebastian Tschan - * @author Philip Nicolcev - * @author Philip Nicolcev - * @copyright (c) Sebastian Tschan - * @license Modified MIT License - * @link https://blueimp.net/ajax/ - */ - -@import url('global.css'); -@import url('fonts.css'); -@import url('print.css'); - -@media screen,projection,handheld { - - /* Buttons */ - #content #bbCodeContainer input, #content #logoutButton, #content #submitButton, #loginForm #loginButton { - background-color:#8a8a8a; - color:#fff; - border: 1px solid #808080; - background-image: linear-gradient(to bottom, #8a8a8a, #444); - } - #content select, #loginForm select, #loginForm input, #content textarea { - color:#333333; - border: 1px solid #808080; - } - - /* Status Icon */ - #content #statusIconContainer { - background-image: url('../img/loading-sprite.png'); - } - #content .statusContainerOff { - background-position: 0px 0px; - } - #content .statusContainerOn { - background-position: 0px -22px; - } - #content .statusContainerAlert { - background-position: 0px -44px; - } - - /* Other Theme Elements */ - #loginContent { - background-color:#F6F6F6; - color:#000; - } - #loginContent h1 { - color:#000; - } - #loginContent a { - color:#000; - } - #loginContent input, #loginContent select { - background-color:#FFF; - color:#000; - } - #loginContent #errorContainer { - color:red; - } - #content { - background-color:#d0d0d0; - color:#000; - } - #content h1 { - color:#000; - } - #content a { - color:#000; - } - #content #chatList, #content #onlineListContainer, #content #helpContainer, #content #settingsContainer, #content #colorCodesContainer, #content textarea { - border-color:gray; - background-color:#FFF; - } - #content #colorCodesContainer a { - border-color:black; - } - #content #optionsContainer input { - background-color:transparent; - } - #content .rowEven { - background-color:#FFF; - } - #content .rowOdd { - background-color:#F6F6F6; - } - #content .guest { - color:gray; - } - #content .user { - color:#000; - } - #content .moderator { - color:#00AA00; - } - #content .admin { - color:red; - } - #content .chatBot { - color:#FF6600; - } - #content #chatList .chatBotErrorMessage { - color:red; - } - #content #chatList a { - color:#1E90FF; - } - #content #chatList .deleteSelected { - border-color:red; - } - #content #onlineListContainer h3, #content #helpContainer h3, #content #settingsContainer h3 { - background-color:#FFF; - color:#000; - } -} \ No newline at end of file diff --git a/library/ajaxchat/chat/css/ie5-6.css b/library/ajaxchat/chat/css/ie5-6.css deleted file mode 100644 index c6ddda3b6..000000000 --- a/library/ajaxchat/chat/css/ie5-6.css +++ /dev/null @@ -1,70 +0,0 @@ -/* - * @package AJAX_Chat - * @author Sebastian Tschan - * @copyright (c) Sebastian Tschan - * @license Modified MIT License - * @link https://blueimp.net/ajax/ - */ - - -/* - * Positioning adjustments for IE versions < 7 - */ - -body { - width:100%; - height:100%; -} -#content #chatList { - position:static; - margin-right:230px; - margin-left:20px; - margin-top:85px; - height:360px; -} -#content #onlineListContainer { - height:360px; -} -#content #helpContainer { - height:360px; -} -#content #settingsContainer { - height:360px; -} -#content #inputFieldContainer { - top:460px; - padding:0px; -} -#content #submitButtonContainer { - top:517px; -} -#content #bbCodeContainer { - top:550px; -} -#content #colorCodesContainer { - top:516px; -} -#content #emoticonsContainer { - top:517px; -} -#content #optionsContainer { - top:555px; -} -#content #inputFieldContainer #inputField { - width:94%; -} -#content #onlineListContainer #onlineList { - width:100%; - height:335px; - overflow:auto; -} -#content #helpContainer #helpList { - width:100%; - height:335px; - overflow:auto; -} -#content #settingsContainer #settingsList { - width:100%; - height:335px; - overflow:auto; -} \ No newline at end of file diff --git a/library/ajaxchat/chat/css/index.html b/library/ajaxchat/chat/css/index.html deleted file mode 100644 index e69de29bb..000000000 diff --git a/library/ajaxchat/chat/css/plum_images/plum.png b/library/ajaxchat/chat/css/plum_images/plum.png deleted file mode 100644 index bd9f6ae6a..000000000 Binary files a/library/ajaxchat/chat/css/plum_images/plum.png and /dev/null differ diff --git a/library/ajaxchat/chat/css/plum_images/plum2.png b/library/ajaxchat/chat/css/plum_images/plum2.png deleted file mode 100644 index b6c3b9011..000000000 Binary files a/library/ajaxchat/chat/css/plum_images/plum2.png and /dev/null differ diff --git a/library/ajaxchat/chat/css/print.css b/library/ajaxchat/chat/css/print.css deleted file mode 100644 index a37857df6..000000000 --- a/library/ajaxchat/chat/css/print.css +++ /dev/null @@ -1,114 +0,0 @@ -/* - * @package AJAX_Chat - * @author Sebastian Tschan - * @copyright (c) Sebastian Tschan - * @license Modified MIT License - * @link https://blueimp.net/ajax/ - */ - - -/* - * Print layout - */ - -@media print { - - #content { - position:static; - } - #content #copyright { - display:none; - } - #content #headlineContainer { - display:none; - } - #content #logoutChannelContainer { - display:none; - } - #content #statusIconContainer { - display:none; - } - #content #chatList { - position:static; - overflow:visible; - } - #content #inputFieldContainer { - display:none; - } - #content #submitButtonContainer { - display:none; - } - #content #onlineListContainer { - display:none; - } - #content #helpContainer { - display:none; - } - #content #settingsContainer { - display:none; - } - #content #bbCodeContainer { - display:none; - } - #content #colorCodesContainer { - display:none; - } - #content #emoticonsContainer { - display:none; - } - #content #optionsContainer { - display:none; - } - #content #chatList div { - padding-bottom:5px; - } - #content #chatList img { - vertical-align:middle; - margin-bottom:2px; - } - #content #chatList cite { - margin-right:5px; - } - #content #chatList .delete { - display:none; - } - - #content #chatList { - border:none; - } - - #content { - font-family:'times new roman', times, serif; - font-size:1.0em; - text-align:justify; - } - #content #chatList code { - font-size:0.8em; - } - - #content { - color:#000; - } - #content .guest { - color:gray; - } - #content .user { - color:#000; - } - #content .moderator { - color:#00AA00; - } - #content .admin { - color:red; - } - #content .chatBot { - color:#FF6600; - } - #content #chatList .chatBotErrorMessage { - color:red; - } - #content #chatList a { - color:#1E90FF; - } - -} \ No newline at end of file diff --git a/library/ajaxchat/chat/css/prosilver.css b/library/ajaxchat/chat/css/prosilver.css deleted file mode 100644 index 867c30d2d..000000000 --- a/library/ajaxchat/chat/css/prosilver.css +++ /dev/null @@ -1,154 +0,0 @@ -/* - * @package AJAX_Chat - * @author Sebastian Tschan - * @author Philip Nicolcev - * @copyright (c) Sebastian Tschan - * @license Modified MIT License - * @link https://blueimp.net/ajax/ - * - * Color palette inspired by phpBB style "prosilver": - * http://www.phpbb.com/ - */ - -@import url('global.css'); -@import url('fonts.css'); -@import url('print.css'); - -@media screen,projection,handheld { - - /* Firefox button padding fix */ - #content #bbCodeContainer input::-moz-focus-inner, #content #logoutButton::-moz-focus-inner, #content #submitButton::-moz-focus-inner { - border:0; - padding:0; - } - - /* Buttons */ - #content #bbCodeContainer input, #content #logoutButton, #content #submitButton, #loginForm #loginButton { - background-color:#F7F5F1; - color:#333333; - border: 1px solid #8a8a8a; - background-image: linear-gradient(to bottom, #fafafa, #cdcdcd); - background-image: -webkit-linear-gradient(top, #fafafa, #cdcdcd); - } - #content select, #loginForm select, #loginForm input, #content textarea { - background-color:#FFF; - color:#333333; - border: 1px solid #ababab; - } - - /* Status Icon */ - #content #statusIconContainer { - background-image: url('../img/loading-sprite.png'); - } - #content .statusContainerOff { - background-position: 0px 0px; - } - #content .statusContainerOn { - background-position: 0px -22px; - } - #content .statusContainerAlert { - background-position: 0px -44px; - } - - /* Headers */ - #loginContent h1 { - color:#333333; - } - #content #headlineContainer h1 { - color: white; - margin-left: 20px; - } - #content #onlineListContainer h3, #content #helpContainer h3, #content #settingsContainer h3 { - background-color:#0c95d9; - color:#fff; - height: 25px; - } - - /* Other Theme Elements */ - #content #chatList, #content #onlineListContainer, #content #helpContainer, #content #settingsContainer, #content #colorCodesContainer { - border-color: #ababab; - } - #content #chatList .deleteSelected { - border-width:1px; - border-style:dotted; - } - #content #helpContainer #helpList table, #content #settingsContainer #settingsList table { - border-collapse:collapse; - } - #loginContent { - background-color:#F9F9F9; - color:#28313F; - } - #loginContent a { - color:#333333; - } - #loginContent input, #loginContent select { - background-color:#FFF; - color:#333333; - } - #loginContent #loginFormContainer #loginButton { - background-color:#F7F5F1; - color:#333333; - } - #loginContent #errorContainer { - color:red; - } - #content #headlineContainer { - top: 0; - left: 0; - width: 100%; - background: #0c95d9; - } - #content #copyright, #content #copyright a { - color: white; - } - #content { - background-color:#F9F9F9; - color:#28313F; - } - #content a { - color:#333333; - } - #content #chatList, #content #onlineListContainer, #content #helpContainer, #content #settingsContainer, #content #colorCodesContainer, #content #emoticonsContainer { - background-color:#FFF; - } - #content #colorCodesContainer { - box-shadow: 2px 2px 2px #777; - } - #content #colorCodesContainer a { - border-color:black; - } - #content #optionsContainer input { - background-color:transparent; - } - #content .rowEven { - background-color:#eaf1f6; - } - #content .rowOdd { - background-color:#e1eaf2; - } - #content .guest { - color:gray; - } - #content .user { - color:#333333; - } - #content .moderator { - color:#00AA00; - } - #content .admin { - color:#AA0000; - } - #content .chatBot { - color:#D31141; - } - #content #chatList .chatBotErrorMessage { - color:red; - } - #content #chatList a { - color:#D31141; - } - #content #chatList .deleteSelected { - border-color:red; - } -} \ No newline at end of file diff --git a/library/ajaxchat/chat/css/shoutbox.css b/library/ajaxchat/chat/css/shoutbox.css deleted file mode 100644 index d22a92a74..000000000 --- a/library/ajaxchat/chat/css/shoutbox.css +++ /dev/null @@ -1,168 +0,0 @@ -/* - * @package AJAX_Chat - * @author Sebastian Tschan - * @copyright (c) Sebastian Tschan - * @license Modified MIT License - * @link https://blueimp.net/ajax/ - */ - - -/* - * Positioning - */ -#ajaxChatContent #ajaxChatChatList { - height:300px; - overflow:auto; -} -#ajaxChatContent #ajaxChatChatList div { - padding-left:5px; - padding-top:2px; - padding-right:5px; - padding-bottom:2px; -} -#ajaxChatContent #ajaxChatChatList img { - vertical-align:middle; - margin-bottom:2px; -} -#ajaxChatContent #ajaxChatChatList cite { - margin-right:5px; -} -#ajaxChatContent #ajaxChatChatList .bbCodeImage { - vertical-align:top; - overflow:auto; - margin:5px; -} -#ajaxChatContent #ajaxChatChatList .delete { - float:right; - width:10px; - height:10px; - margin-top:5px; - margin-left:5px; -} -#ajaxChatContent #ajaxChatInputFieldContainer #ajaxChatInputField { - width:90%; -} -#ajaxChatContent #ajaxChatCopyright { - margin-top:5px; -} -#ajaxChatContent #ajaxChatInputFieldContainer.write_forbidden { - display:none; -} - - -/* - * Borders - */ - -#ajaxChatContent img { - border:none; -} -#ajaxChatContent #ajaxChatChatList .deleteSelected { - border-width:1px; - border-style:dotted; -} - - -/* - * Fonts - */ - -#ajaxChatContent { - font-size:0.9em; -} -#ajaxChatContent a { - text-decoration:none; -} -#ajaxChatContent a:hover { - text-decoration:underline; -} -#ajaxChatContent #ajaxChatCopyright { - font-size:0.8em; -} -#ajaxChatContent #ajaxChatChatList span.dateTime { - font-size:0.7em; -} -#ajaxChatContent #ajaxChatChatList span.guest { - font-size:0.9em; - font-weight:bold; -} -#ajaxChatContent #ajaxChatChatList span.user { - font-size:0.9em; - font-weight:bold; -} -#ajaxChatContent #ajaxChatChatList span.moderator { - font-size:0.9em; - font-weight:bold; -} -#ajaxChatContent #ajaxChatChatList span.admin { - font-size:0.9em; - font-weight:bold; -} -#ajaxChatContent #ajaxChatChatList span.chatBot { - font-size:0.9em; - font-weight:bold; - font-style:italic; -} -#ajaxChatContent #ajaxChatList .chatBotMessage { - font-style:italic; -} -#ajaxChatContent #ajaxChatChatList .chatBotErrorMessage { - font-style:italic; -} -#ajaxChatContent #ajaxChatChatList .privmsg { - font-style:italic; -} -#ajaxChatContent #ajaxChatChatList .action { - font-style:italic; -} -#ajaxChatContent #ajaxChatChatList q { - font-variant:small-caps; -} -#ajaxChatContent #ajaxChatChatList code { - font-size:1.2em; -} - - -/* - * Colors - */ - -#ajaxChatContent #ajaxChatChatList { - color:#000; -} -#ajaxChatContent #ajaxChatChatList { - background-color:#FFF; -} -#ajaxChatContent .rowEven { - background-color:#FFF; -} -#ajaxChatContent .rowOdd { - background-color:#F6F6F6; -} -#ajaxChatContent .guest { - color:gray; -} -#ajaxChatContent .user { - color:#000; -} -#ajaxChatContent .moderator { - color:#00AA00; -} -#ajaxChatContent .admin { - color:red; -} -#ajaxChatContent .chatBot { - color:#FF6600; -} -#ajaxChatContent #ajaxChatChatList .chatBotErrorMessage { - color:red; -} -#ajaxChatContent #ajaxChatChatList a { - color:#1E90FF; -} -#ajaxChatContent #ajaxChatChatList .delete { - background:url('../img/delete.png') no-repeat right; -} -#ajaxChatContent #ajaxChatChatList .deleteSelected { - border-color:red; -} diff --git a/library/ajaxchat/chat/css/subSilver.css b/library/ajaxchat/chat/css/subSilver.css deleted file mode 100644 index 80f8b75b4..000000000 --- a/library/ajaxchat/chat/css/subSilver.css +++ /dev/null @@ -1,117 +0,0 @@ -/* - * @package AJAX_Chat - * @author Sebastian Tschan - * @author Philip Nicolcev - * @copyright (c) Sebastian Tschan - * @license Modified MIT License - * @link https://blueimp.net/ajax/ - * - * Color palette inspired by phpBB style "subSilver": - * http://www.phpbb.com/ - */ - -@import url('global.css'); -@import url('fonts.css'); -@import url('print.css'); - -@media screen,projection,handheld { - - /* Status Icon */ - #content #statusIconContainer { - background-image: url('../img/loading-sprite.png'); - } - #content .statusContainerOff { - background-position: 0px 0px; - } - #content .statusContainerOn { - background-position: 0px -22px; - } - #content .statusContainerAlert { - background-position: 0px -44px; - } - - #loginContent { - background-color:#E5E5E5; - color:#000; - } - #loginContent h1 { - color:#006699; - } - #loginContent a { - color:#000; - } - #loginContent input, #loginContent select { - background-color:#FFF; - color:#000; - } - #loginContent #loginFormContainer #loginButton { - background-color:#F7F5F1; - color:#000; - } - #loginContent #errorContainer { - color:red; - } - - #content { - background-color:#E5E5E5; - color:#000; - } - #content h1 { - color:#006699; - } - #content a { - color:#000; - } - #content input, #content select, #content textarea { - background-color:#FFF; - color:#000; - } - #content #chatList, #content #onlineListContainer, #content #helpContainer, #content #settingsContainer, #content #colorCodesContainer, #content textarea{ - border-color:#006699; - background-color:#FFF; - } - #content #bbCodeContainer input, #content #logoutButton, #content #submitButton { - background-color:#F7F5F1; - color:#000; - } - #content #colorCodesContainer a { - border-color:black; - } - #content #optionsContainer input { - background-color:transparent; - } - #content .rowEven { - background-color:#DEE3E7; - } - #content .rowOdd { - background-color:#EFEFEF; - } - #content .guest { - color:gray; - } - #content .user { - color:#000; - } - #content .moderator { - color:#006600; - } - #content .admin { - color:#FFA34F; - } - #content .chatBot { - color:#DD6900; - } - #content #chatList .chatBotErrorMessage { - color:red; - } - #content #chatList a { - color:#006699; - } - #content #chatList .deleteSelected { - border-color:red; - } - #content #onlineListContainer h3, #content #helpContainer h3, #content #settingsContainer h3 { - background-color:#DEE3E7; - color:#006699; - } -} \ No newline at end of file diff --git a/library/ajaxchat/chat/css/subblack2.css b/library/ajaxchat/chat/css/subblack2.css deleted file mode 100644 index 3043754aa..000000000 --- a/library/ajaxchat/chat/css/subblack2.css +++ /dev/null @@ -1,117 +0,0 @@ -/* - * @package AJAX_Chat - * @author Sebastian Tschan - * @author Philip Nicolcev - * @copyright (c) Sebastian Tschan - * @license Modified MIT License - * @link https://blueimp.net/ajax/ - * - * Color palette inspired by phpBB style "subblack2": - * http://www.phpbb.com/ - */ - -@import url('global.css'); -@import url('fonts.css'); -@import url('print.css'); - -@media screen,projection,handheld { - - /* Status Icon */ - #content #statusIconContainer { - background-image: url('../img/loading-sprite.png'); - } - #content .statusContainerOff { - background-position: 0px 0px; - } - #content .statusContainerOn { - background-position: 0px -22px; - } - #content .statusContainerAlert { - background-position: 0px -44px; - } - - #loginContent { - background-color:#000; - color:#FFFFCC; - } - #loginContent h1 { - color:#FFFFCC; - } - #loginContent a { - color:#FFFFCC; - } - #loginContent input, #loginContent select { - background-color:#212121; - color:#FFFFCC; - } - #loginContent #loginFormContainer #loginButton { - background-color:#212121; - color:#FFFFCC; - } - #loginContent #errorContainer { - color:red; - } - - #content { - background-color:#000; - color:#FFFFCC; - } - #content h1 { - color:#CC9900; - } - #content a { - color:#FFFFCC; - } - #content input, #content select, #content textarea { - background-color:#212121; - color:#FFFFCC; - } - #content #chatList, #content #onlineListContainer, #content #helpContainer, #content #settingsContainer, #content #bbCodeContainer, #content #colorCodesContainer, #content #emoticonsContainer { - border-color:gray; - background-color:#212121; - } - #content #bbCodeContainer input, #content #logoutButton, #content #submitButton { - background-color:#212121; - color:#FFFFCC; - } - #content #colorCodesContainer a { - border-color:black; - } - #content #optionsContainer input { - background-color:transparent; - } - #content .rowEven { - background-color:#212121; - } - #content .rowOdd { - background-color:#000; - } - #content .guest { - color:gray; - } - #content .user { - color:#FFFFCC; - } - #content .moderator { - color:#00AA00; - } - #content .admin { - color:red; - } - #content .chatBot { - color:#CC9900; - } - #content #chatList .chatBotErrorMessage { - color:red; - } - #content #chatList a { - color:#FFCC00; - } - #content #chatList .deleteSelected { - border-color:red; - } - #content #onlineListContainer h3, #content #helpContainer h3, #content #settingsContainer h3 { - background-color:#212121; - color:#FFCC00; - } -} \ No newline at end of file diff --git a/library/ajaxchat/chat/css/vBulletin.css b/library/ajaxchat/chat/css/vBulletin.css deleted file mode 100644 index 91a7e1a7e..000000000 --- a/library/ajaxchat/chat/css/vBulletin.css +++ /dev/null @@ -1,127 +0,0 @@ -/* - * @package AJAX_Chat - * @author Sebastian Tschan - * @author Philip Nicolcev - * @copyright (c) Sebastian Tschan - * @license Modified MIT License - * @link https://blueimp.net/ajax/ - * - * Color palette inspired by vBulletin style "Standard-Style": - * http://www.vbulletin.com/ - */ - -@import url('global.css'); -@import url('fonts.css'); -@import url('print.css'); - -@media screen,projection,handheld { - - /* Buttons */ - #content #bbCodeContainer input, #content #logoutButton, #content #submitButton, #loginForm #loginButton { - background-color:#7192A8; - color:#fff; - border: 0; - } - #content select, #loginForm select, #loginForm input, #content textarea { - background-color:#7192A8; - color:#fff; - border: 1px solid #2F4456; - } - - /* Status Icon */ - #content #statusIconContainer { - background-image: url('../img/loading-sprite.png'); - } - #content .statusContainerOff { - background-position: 0px 0px; - } - #content .statusContainerOn { - background-position: 0px -22px; - } - #content .statusContainerAlert { - background-position: 0px -44px; - } - - #loginContent { - background-color:#E1E1E2; - color:#000; - } - #loginContent h1 { - color:#3B5485; - } - #loginContent a { - color:#3B5485; - } - #loginContent #errorContainer { - color:red; - } - #content { - background-color:#E1E1E2; - color:#000; - } - #content #headlineContainer h1 { - color:#fff; - margin-left: 20px; - } - #content #headlineContainer { - top: 0; - left: 10px; - right: 10px; - background: #2F4456; - border-radius: 0px 0px 5px 5px; - } - #content #copyright, #content #copyright a { - color: white; - } - #content a { - color:#3B5485; - } - #content input, #content select, #content textarea { - background-color:#FFF; - color:#000; - } - #content #chatList, #content #onlineListContainer, #content #helpContainer, #content #settingsContainer, #content #colorCodesContainer { - border-color:#0B198C; - background-color:#FFF; - } - #content #colorCodesContainer a { - border-color:black; - } - #content #optionsContainer input { - background-color:transparent; - } - #content .rowEven { - background-color:#E1E4F2; - } - #content .rowOdd { - background-color:#F5F5FF; - } - #content .guest { - color:gray; - } - #content .user { - color:#000; - } - #content .moderator { - color:#00AA00; - } - #content .admin { - color:red; - } - #content .chatBot { - color:#3B5485; - } - #content #chatList .chatBotErrorMessage { - color:red; - } - #content #chatList a { - color:#3B5485; - } - #content #chatList .deleteSelected { - border-color:red; - } - #content #onlineListContainer h3, #content #helpContainer h3, #content #settingsContainer h3 { - background-color:#7192A8; - color:#FFF; - } -} \ No newline at end of file diff --git a/library/ajaxchat/chat/flash/FABridge.swf b/library/ajaxchat/chat/flash/FABridge.swf deleted file mode 100644 index 1894cf489..000000000 Binary files a/library/ajaxchat/chat/flash/FABridge.swf and /dev/null differ diff --git a/library/ajaxchat/chat/flash/index.html b/library/ajaxchat/chat/flash/index.html deleted file mode 100644 index e69de29bb..000000000 diff --git a/library/ajaxchat/chat/img/audio.png b/library/ajaxchat/chat/img/audio.png deleted file mode 100644 index fb3705316..000000000 Binary files a/library/ajaxchat/chat/img/audio.png and /dev/null differ diff --git a/library/ajaxchat/chat/img/autoscroll.png b/library/ajaxchat/chat/img/autoscroll.png deleted file mode 100644 index 7c313e597..000000000 Binary files a/library/ajaxchat/chat/img/autoscroll.png and /dev/null differ diff --git a/library/ajaxchat/chat/img/delete.png b/library/ajaxchat/chat/img/delete.png deleted file mode 100644 index ae99c71a0..000000000 Binary files a/library/ajaxchat/chat/img/delete.png and /dev/null differ diff --git a/library/ajaxchat/chat/img/emoticons/angel.png b/library/ajaxchat/chat/img/emoticons/angel.png deleted file mode 100644 index bf6abc421..000000000 Binary files a/library/ajaxchat/chat/img/emoticons/angel.png and /dev/null differ diff --git a/library/ajaxchat/chat/img/emoticons/confused.png b/library/ajaxchat/chat/img/emoticons/confused.png deleted file mode 100644 index 2616381b0..000000000 Binary files a/library/ajaxchat/chat/img/emoticons/confused.png and /dev/null differ diff --git a/library/ajaxchat/chat/img/emoticons/cool.png b/library/ajaxchat/chat/img/emoticons/cool.png deleted file mode 100644 index e2a364881..000000000 Binary files a/library/ajaxchat/chat/img/emoticons/cool.png and /dev/null differ diff --git a/library/ajaxchat/chat/img/emoticons/crying.png b/library/ajaxchat/chat/img/emoticons/crying.png deleted file mode 100644 index 15a152a99..000000000 Binary files a/library/ajaxchat/chat/img/emoticons/crying.png and /dev/null differ diff --git a/library/ajaxchat/chat/img/emoticons/devilish.png b/library/ajaxchat/chat/img/emoticons/devilish.png deleted file mode 100644 index 8e2cd4584..000000000 Binary files a/library/ajaxchat/chat/img/emoticons/devilish.png and /dev/null differ diff --git a/library/ajaxchat/chat/img/emoticons/eek.png b/library/ajaxchat/chat/img/emoticons/eek.png deleted file mode 100644 index 07719a412..000000000 Binary files a/library/ajaxchat/chat/img/emoticons/eek.png and /dev/null differ diff --git a/library/ajaxchat/chat/img/emoticons/error.png b/library/ajaxchat/chat/img/emoticons/error.png deleted file mode 100644 index 3bbbb4a0d..000000000 Binary files a/library/ajaxchat/chat/img/emoticons/error.png and /dev/null differ diff --git a/library/ajaxchat/chat/img/emoticons/favorite.png b/library/ajaxchat/chat/img/emoticons/favorite.png deleted file mode 100644 index 3acb57dc9..000000000 Binary files a/library/ajaxchat/chat/img/emoticons/favorite.png and /dev/null differ diff --git a/library/ajaxchat/chat/img/emoticons/glasses.png b/library/ajaxchat/chat/img/emoticons/glasses.png deleted file mode 100644 index d13f2c8c7..000000000 Binary files a/library/ajaxchat/chat/img/emoticons/glasses.png and /dev/null differ diff --git a/library/ajaxchat/chat/img/emoticons/grin.png b/library/ajaxchat/chat/img/emoticons/grin.png deleted file mode 100644 index d15cf2d45..000000000 Binary files a/library/ajaxchat/chat/img/emoticons/grin.png and /dev/null differ diff --git a/library/ajaxchat/chat/img/emoticons/help.png b/library/ajaxchat/chat/img/emoticons/help.png deleted file mode 100644 index f25fc3fbf..000000000 Binary files a/library/ajaxchat/chat/img/emoticons/help.png and /dev/null differ diff --git a/library/ajaxchat/chat/img/emoticons/idea.png b/library/ajaxchat/chat/img/emoticons/idea.png deleted file mode 100644 index 8851b99ba..000000000 Binary files a/library/ajaxchat/chat/img/emoticons/idea.png and /dev/null differ diff --git a/library/ajaxchat/chat/img/emoticons/important.png b/library/ajaxchat/chat/img/emoticons/important.png deleted file mode 100644 index 81e9ed29a..000000000 Binary files a/library/ajaxchat/chat/img/emoticons/important.png and /dev/null differ diff --git a/library/ajaxchat/chat/img/emoticons/index.html b/library/ajaxchat/chat/img/emoticons/index.html deleted file mode 100644 index e69de29bb..000000000 diff --git a/library/ajaxchat/chat/img/emoticons/kiss.png b/library/ajaxchat/chat/img/emoticons/kiss.png deleted file mode 100644 index 8d3116dbd..000000000 Binary files a/library/ajaxchat/chat/img/emoticons/kiss.png and /dev/null differ diff --git a/library/ajaxchat/chat/img/emoticons/monkey.png b/library/ajaxchat/chat/img/emoticons/monkey.png deleted file mode 100644 index d88f10b82..000000000 Binary files a/library/ajaxchat/chat/img/emoticons/monkey.png and /dev/null differ diff --git a/library/ajaxchat/chat/img/emoticons/plain.png b/library/ajaxchat/chat/img/emoticons/plain.png deleted file mode 100644 index a6761bd10..000000000 Binary files a/library/ajaxchat/chat/img/emoticons/plain.png and /dev/null differ diff --git a/library/ajaxchat/chat/img/emoticons/razz.png b/library/ajaxchat/chat/img/emoticons/razz.png deleted file mode 100644 index 6430fd7ba..000000000 Binary files a/library/ajaxchat/chat/img/emoticons/razz.png and /dev/null differ diff --git a/library/ajaxchat/chat/img/emoticons/sad.png b/library/ajaxchat/chat/img/emoticons/sad.png deleted file mode 100644 index 8e6346a0b..000000000 Binary files a/library/ajaxchat/chat/img/emoticons/sad.png and /dev/null differ diff --git a/library/ajaxchat/chat/img/emoticons/smile-big.png b/library/ajaxchat/chat/img/emoticons/smile-big.png deleted file mode 100644 index 1617e019f..000000000 Binary files a/library/ajaxchat/chat/img/emoticons/smile-big.png and /dev/null differ diff --git a/library/ajaxchat/chat/img/emoticons/smile.png b/library/ajaxchat/chat/img/emoticons/smile.png deleted file mode 100644 index d2313f19b..000000000 Binary files a/library/ajaxchat/chat/img/emoticons/smile.png and /dev/null differ diff --git a/library/ajaxchat/chat/img/emoticons/surprise.png b/library/ajaxchat/chat/img/emoticons/surprise.png deleted file mode 100644 index d829a2640..000000000 Binary files a/library/ajaxchat/chat/img/emoticons/surprise.png and /dev/null differ diff --git a/library/ajaxchat/chat/img/emoticons/warning.png b/library/ajaxchat/chat/img/emoticons/warning.png deleted file mode 100644 index a9e4ff399..000000000 Binary files a/library/ajaxchat/chat/img/emoticons/warning.png and /dev/null differ diff --git a/library/ajaxchat/chat/img/emoticons/wink.png b/library/ajaxchat/chat/img/emoticons/wink.png deleted file mode 100644 index 46be68557..000000000 Binary files a/library/ajaxchat/chat/img/emoticons/wink.png and /dev/null differ diff --git a/library/ajaxchat/chat/img/help.png b/library/ajaxchat/chat/img/help.png deleted file mode 100644 index c67c7a60e..000000000 Binary files a/library/ajaxchat/chat/img/help.png and /dev/null differ diff --git a/library/ajaxchat/chat/img/index.html b/library/ajaxchat/chat/img/index.html deleted file mode 100644 index e69de29bb..000000000 diff --git a/library/ajaxchat/chat/img/license.txt b/library/ajaxchat/chat/img/license.txt deleted file mode 100644 index 4069d3a13..000000000 --- a/library/ajaxchat/chat/img/license.txt +++ /dev/null @@ -1,45 +0,0 @@ - -The icons used for this project have been created by the - -===================== -Tango Desktop Project -===================== - -http://tango.freedesktop.org/ - - -Additional emoticons have been created by - -============================= -zerwas2ky (KDE-Look.org user) -============================= - -http://www.kde-look.org/content/show.php?content=65591 - - -The icons are licensed under the - -==================================================== -Creative Commons Attribution Share Alike 2.5 License -==================================================== - -http://creativecommons.org/licenses/by-sa/2.5/ - -You are free: - -* to Share — to copy, distribute and transmit the work -* to Remix — to adapt the work - -Under the following conditions: - -* Attribution. -You must attribute the work in the manner specified by the author or licensor -(but not in any way that suggests that they endorse you or your use of the work). - -* Share Alike. -If you alter, transform, or build upon this work, -you may distribute the resulting work only under the same or similar license to this one. - -- For any reuse or distribution, you must make clear to others the license terms of this work. -- Any of the above conditions can be waived if you get permission from the copyright holder. -- Nothing in this license impairs or restricts the author's moral rights. diff --git a/library/ajaxchat/chat/img/loading-sprite.png b/library/ajaxchat/chat/img/loading-sprite.png deleted file mode 100644 index 5d742145a..000000000 Binary files a/library/ajaxchat/chat/img/loading-sprite.png and /dev/null differ diff --git a/library/ajaxchat/chat/img/pixel.gif b/library/ajaxchat/chat/img/pixel.gif deleted file mode 100644 index e565824aa..000000000 Binary files a/library/ajaxchat/chat/img/pixel.gif and /dev/null differ diff --git a/library/ajaxchat/chat/img/playback.png b/library/ajaxchat/chat/img/playback.png deleted file mode 100644 index 10102d829..000000000 Binary files a/library/ajaxchat/chat/img/playback.png and /dev/null differ diff --git a/library/ajaxchat/chat/img/settings.png b/library/ajaxchat/chat/img/settings.png deleted file mode 100644 index cc91d6595..000000000 Binary files a/library/ajaxchat/chat/img/settings.png and /dev/null differ diff --git a/library/ajaxchat/chat/img/users.png b/library/ajaxchat/chat/img/users.png deleted file mode 100644 index bced28cfb..000000000 Binary files a/library/ajaxchat/chat/img/users.png and /dev/null differ diff --git a/library/ajaxchat/chat/index.php b/library/ajaxchat/chat/index.php deleted file mode 100644 index a7e2fd04e..000000000 --- a/library/ajaxchat/chat/index.php +++ /dev/null @@ -1,24 +0,0 @@ - \ No newline at end of file diff --git a/library/ajaxchat/chat/install.php b/library/ajaxchat/chat/install.php deleted file mode 100644 index fd19e1beb..000000000 --- a/library/ajaxchat/chat/install.php +++ /dev/null @@ -1,80 +0,0 @@ -getDataBaseTableCreationQueries(); - foreach($queries as $sql) { - // Create a new SQL query: - $result = $this->db->sqlQuery($sql); - - // Stop if an error occurs: - if($result->error()) { - echo $result->getError(); - die(); - } - } - if($printSuccessConfirmation) { - // Print a success confirmation: - echo 'Database tables created successfully - please delete this file (install.php).'; - } - } - -} - -// Initialize the chat installer: -$ajaxChatInstaller = new CustomAJAXChatInstaller(); - -// Create the database tables: -$ajaxChatInstaller->createDataBaseTables(); -?> \ No newline at end of file diff --git a/library/ajaxchat/chat/js/FABridge.js b/library/ajaxchat/chat/js/FABridge.js deleted file mode 100644 index 59424573b..000000000 --- a/library/ajaxchat/chat/js/FABridge.js +++ /dev/null @@ -1,591 +0,0 @@ -/* -/* -Copyright 2006 Adobe Systems Incorporated - -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), -to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, -and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE -OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -*/ - - -/* - * The Bridge class, responsible for navigating AS instances - */ -function FABridge(target,bridgeName) -{ - this.target = target; - this.remoteTypeCache = {}; - this.remoteInstanceCache = {}; - this.remoteFunctionCache = {}; - this.localFunctionCache = {}; - this.bridgeID = FABridge.nextBridgeID++; - this.name = bridgeName; - this.nextLocalFuncID = 0; - FABridge.instances[this.name] = this; - FABridge.idMap[this.bridgeID] = this; - - return this; -} - -// type codes for packed values -FABridge.TYPE_ASINSTANCE = 1; -FABridge.TYPE_ASFUNCTION = 2; - -FABridge.TYPE_JSFUNCTION = 3; -FABridge.TYPE_ANONYMOUS = 4; - -FABridge.initCallbacks = {} - -FABridge.argsToArray = function(args) -{ - var result = []; - for (var i = 0; i < args.length; i++) - { - result[i] = args[i]; - } - return result; -} - -function instanceFactory(objID) -{ - this.fb_instance_id = objID; - return this; -} - -function FABridge__invokeJSFunction(args) -{ - var funcID = args[0]; - var throughArgs = args.concat();//FABridge.argsToArray(arguments); - throughArgs.shift(); - - var bridge = FABridge.extractBridgeFromID(funcID); - return bridge.invokeLocalFunction(funcID, throughArgs); -} - -FABridge.addInitializationCallback = function(bridgeName, callback) -{ - var inst = FABridge.instances[bridgeName]; - if (inst != undefined) - { - callback.call(inst); - return; - } - - var callbackList = FABridge.initCallbacks[bridgeName]; - if(callbackList == null) - { - FABridge.initCallbacks[bridgeName] = callbackList = []; - } - - callbackList.push(callback); -} - -function FABridge__bridgeInitialized(bridgeName) { - var objects = document.getElementsByTagName("object"); - var ol = objects.length; - var activeObjects = []; - if (ol > 0) { - for (var i = 0; i < ol; i++) { - if (typeof objects[i].SetVariable != "undefined") { - activeObjects[activeObjects.length] = objects[i]; - } - } - } - var embeds = document.getElementsByTagName("embed"); - var el = embeds.length; - var activeEmbeds = []; - if (el > 0) { - for (var j = 0; j < el; j++) { - if (typeof embeds[j].SetVariable != "undefined") { - activeEmbeds[activeEmbeds.length] = embeds[j]; - } - } - } - var aol = activeObjects.length; - var ael = activeEmbeds.length; - var searchStr = "bridgeName="+ bridgeName; - if ((aol == 1 && !ael) || (aol == 1 && ael == 1)) { - FABridge.attachBridge(activeObjects[0], bridgeName); - } - else if (ael == 1 && !aol) { - FABridge.attachBridge(activeEmbeds[0], bridgeName); - } - else { - var flash_found = false; - if (aol > 1) { - for (var k = 0; k < aol; k++) { - var params = activeObjects[k].childNodes; - for (var l = 0; l < params.length; l++) { - var param = params[l]; - if (param.nodeType == 1 && param.tagName.toLowerCase() == "param" && param["name"].toLowerCase() == "flashvars" && param["value"].indexOf(searchStr) >= 0) { - FABridge.attachBridge(activeObjects[k], bridgeName); - flash_found = true; - break; - } - } - if (flash_found) { - break; - } - } - } - if (!flash_found && ael > 1) { - for (var m = 0; m < ael; m++) { - var flashVars = activeEmbeds[m].attributes.getNamedItem("flashVars").nodeValue; - if (flashVars.indexOf(searchStr) >= 0) { - FABridge.attachBridge(activeEmbeds[m], bridgeName); - break; - } - } - } - } - return true; -} - -// used to track multiple bridge instances, since callbacks from AS are global across the page. - -FABridge.nextBridgeID = 0; -FABridge.instances = {}; -FABridge.idMap = {}; -FABridge.refCount = 0; - -FABridge.extractBridgeFromID = function(id) -{ - var bridgeID = (id >> 16); - return FABridge.idMap[bridgeID]; -} - -FABridge.attachBridge = function(instance, bridgeName) -{ - var newBridgeInstance = new FABridge(instance, bridgeName); - - FABridge[bridgeName] = newBridgeInstance; - -/* FABridge[bridgeName] = function() { - return newBridgeInstance.root(); - } -*/ - var callbacks = FABridge.initCallbacks[bridgeName]; - if (callbacks == null) - { - return; - } - for (var i = 0; i < callbacks.length; i++) - { - callbacks[i].call(newBridgeInstance); - } - delete FABridge.initCallbacks[bridgeName] -} - -// some methods can't be proxied. You can use the explicit get,set, and call methods if necessary. - -FABridge.blockedMethods = -{ - toString: true, - get: true, - set: true, - call: true -}; - -FABridge.prototype = -{ - - -// bootstrapping - - root: function() - { - return this.deserialize(this.target.getRoot()); - }, -//clears all of the AS objects in the cache maps - releaseASObjects: function() - { - return this.target.releaseASObjects(); - }, -//clears a specific object in AS from the type maps - releaseNamedASObject: function(value) - { - if(typeof(value) != "object") - { - return false; - } - else - { - var ret = this.target.releaseNamedASObject(value.fb_instance_id); - return ret; - } - }, -//create a new AS Object - create: function(className) - { - return this.deserialize(this.target.create(className)); - }, - - - // utilities - - makeID: function(token) - { - return (this.bridgeID << 16) + token; - }, - - - // low level access to the flash object - -//get a named property from an AS object - getPropertyFromAS: function(objRef, propName) - { - if (FABridge.refCount > 0) - { - throw new Error("You are trying to call recursively into the Flash Player which is not allowed. In most cases the JavaScript setTimeout function, can be used as a workaround."); - } - else - { - FABridge.refCount++; - retVal = this.target.getPropFromAS(objRef, propName); - retVal = this.handleError(retVal); - FABridge.refCount--; - return retVal; - } - }, -//set a named property on an AS object - setPropertyInAS: function(objRef,propName, value) - { - if (FABridge.refCount > 0) - { - throw new Error("You are trying to call recursively into the Flash Player which is not allowed. In most cases the JavaScript setTimeout function, can be used as a workaround."); - } - else - { - FABridge.refCount++; - retVal = this.target.setPropInAS(objRef,propName, this.serialize(value)); - retVal = this.handleError(retVal); - FABridge.refCount--; - return retVal; - } - }, - -//call an AS function - callASFunction: function(funcID, args) - { - if (FABridge.refCount > 0) - { - throw new Error("You are trying to call recursively into the Flash Player which is not allowed. In most cases the JavaScript setTimeout function, can be used as a workaround."); - } - else - { - FABridge.refCount++; - retVal = this.target.invokeASFunction(funcID, this.serialize(args)); - retVal = this.handleError(retVal); - FABridge.refCount--; - return retVal; - } - }, -//call a method on an AS object - callASMethod: function(objID, funcName, args) - { - if (FABridge.refCount > 0) - { - throw new Error("You are trying to call recursively into the Flash Player which is not allowed. In most cases the JavaScript setTimeout function, can be used as a workaround."); - } - else - { - FABridge.refCount++; - args = this.serialize(args); - retVal = this.target.invokeASMethod(objID, funcName, args); - retVal = this.handleError(retVal); - FABridge.refCount--; - return retVal; - } - }, - - // responders to remote calls from flash - - //callback from flash that executes a local JS function - //used mostly when setting js functions as callbacks on events - invokeLocalFunction: function(funcID, args) - { - var result; - var func = this.localFunctionCache[funcID]; - - if(func != undefined) - { - result = this.serialize(func.apply(null, this.deserialize(args))); - } - - return result; - }, - - // Object Types and Proxies - - // accepts an object reference, returns a type object matching the obj reference. - getTypeFromName: function(objTypeName) - { - return this.remoteTypeCache[objTypeName]; - }, - //create an AS proxy for the given object ID and type - createProxy: function(objID, typeName) - { - var objType = this.getTypeFromName(typeName); - instanceFactory.prototype = objType; - var instance = new instanceFactory(objID); - this.remoteInstanceCache[objID] = instance; - return instance; - }, - //return the proxy associated with the given object ID - getProxy: function(objID) - { - return this.remoteInstanceCache[objID]; - }, - - // accepts a type structure, returns a constructed type - addTypeDataToCache: function(typeData) - { - newType = new ASProxy(this, typeData.name); - var accessors = typeData.accessors; - for (var i = 0; i < accessors.length; i++) - { - this.addPropertyToType(newType, accessors[i]); - } - - var methods = typeData.methods; - for (var i = 0; i < methods.length; i++) - { - if (FABridge.blockedMethods[methods[i]] == undefined) - { - this.addMethodToType(newType, methods[i]); - } - } - - - this.remoteTypeCache[newType.typeName] = newType; - return newType; - }, - - //add a property to a typename; used to define the properties that can be called on an AS proxied object - addPropertyToType: function(ty, propName) - { - var c = propName.charAt(0); - var setterName; - var getterName; - if(c >= "a" && c <= "z") - { - getterName = "get" + c.toUpperCase() + propName.substr(1); - setterName = "set" + c.toUpperCase() + propName.substr(1); - } - else - { - getterName = "get" + propName; - setterName = "set" + propName; - } - ty[setterName] = function(val) - { - this.bridge.setPropertyInAS(this.fb_instance_id, propName, val); - } - ty[getterName] = function() - { - return this.bridge.deserialize(this.bridge.getPropertyFromAS(this.fb_instance_id, propName)); - } - }, - - //add a method to a typename; used to define the methods that can be callefd on an AS proxied object - addMethodToType: function(ty, methodName) - { - ty[methodName] = function() - { - return this.bridge.deserialize(this.bridge.callASMethod(this.fb_instance_id, methodName, FABridge.argsToArray(arguments))); - } - }, - - // Function Proxies - - //returns the AS proxy for the specified function ID - getFunctionProxy: function(funcID) - { - var bridge = this; - if (this.remoteFunctionCache[funcID] == null) - { - this.remoteFunctionCache[funcID] = function() - { - bridge.callASFunction(funcID, FABridge.argsToArray(arguments)); - } - } - return this.remoteFunctionCache[funcID]; - }, - - //reutrns the ID of the given function; if it doesnt exist it is created and added to the local cache - getFunctionID: function(func) - { - if (func.__bridge_id__ == undefined) - { - func.__bridge_id__ = this.makeID(this.nextLocalFuncID++); - this.localFunctionCache[func.__bridge_id__] = func; - } - return func.__bridge_id__; - }, - - // serialization / deserialization - - serialize: function(value) - { - var result = {}; - - var t = typeof(value); - //primitives are kept as such - if (t == "number" || t == "string" || t == "boolean" || t == null || t == undefined) - { - result = value; - } - else if (value instanceof Array) - { - //arrays are serializesd recursively - result = []; - for (var i = 0; i < value.length; i++) - { - result[i] = this.serialize(value[i]); - } - } - else if (t == "function") - { - //js functions are assigned an ID and stored in the local cache - result.type = FABridge.TYPE_JSFUNCTION; - result.value = this.getFunctionID(value); - } - else if (value instanceof ASProxy) - { - result.type = FABridge.TYPE_ASINSTANCE; - result.value = value.fb_instance_id; - } - else - { - result.type = FABridge.TYPE_ANONYMOUS; - result.value = value; - } - - return result; - }, - - //on deserialization we always check the return for the specific error code that is used to marshall NPE's into JS errors - // the unpacking is done by returning the value on each pachet for objects/arrays - deserialize: function(packedValue) - { - - var result; - - var t = typeof(packedValue); - if (t == "number" || t == "string" || t == "boolean" || packedValue == null || packedValue == undefined) - { - result = this.handleError(packedValue); - } - else if (packedValue instanceof Array) - { - result = []; - for (var i = 0; i < packedValue.length; i++) - { - result[i] = this.deserialize(packedValue[i]); - } - } - else if (t == "object") - { - for(var i = 0; i < packedValue.newTypes.length; i++) - { - this.addTypeDataToCache(packedValue.newTypes[i]); - } - for (var aRefID in packedValue.newRefs) - { - this.createProxy(aRefID, packedValue.newRefs[aRefID]); - } - if (packedValue.type == FABridge.TYPE_PRIMITIVE) - { - result = packedValue.value; - } - else if (packedValue.type == FABridge.TYPE_ASFUNCTION) - { - result = this.getFunctionProxy(packedValue.value); - } - else if (packedValue.type == FABridge.TYPE_ASINSTANCE) - { - result = this.getProxy(packedValue.value); - } - else if (packedValue.type == FABridge.TYPE_ANONYMOUS) - { - result = packedValue.value; - } - } - return result; - }, - //increases the reference count for the given object - addRef: function(obj) - { - this.target.incRef(obj.fb_instance_id); - }, - //decrease the reference count for the given object and release it if needed - release:function(obj) - { - this.target.releaseRef(obj.fb_instance_id); - }, - - // check the given value for the components of the hard-coded error code : __FLASHERROR - // used to marshall NPE's into flash - - handleError: function(value) - { - if (typeof(value)=="string" && value.indexOf("__FLASHERROR")==0) - { - var myErrorMessage = value.split("||"); - if(FABridge.refCount > 0 ) - { - FABridge.refCount--; - } - throw new Error(myErrorMessage[1]); - return value; - } - else - { - return value; - } - } -}; - -// The root ASProxy class that facades a flash object - -ASProxy = function(bridge, typeName) -{ - this.bridge = bridge; - this.typeName = typeName; - return this; -}; -//methods available on each ASProxy object -ASProxy.prototype = -{ - get: function(propName) - { - return this.bridge.deserialize(this.bridge.getPropertyFromAS(this.fb_instance_id, propName)); - }, - - set: function(propName, value) - { - this.bridge.setPropertyInAS(this.fb_instance_id, propName, value); - }, - - call: function(funcName, args) - { - this.bridge.callASMethod(this.fb_instance_id, funcName, args); - }, - - addRef: function() { - this.bridge.addRef(this); - }, - - release: function() { - this.bridge.release(this); - } -}; diff --git a/library/ajaxchat/chat/js/chat.js b/library/ajaxchat/chat/js/chat.js deleted file mode 100644 index 9a93f5e45..000000000 --- a/library/ajaxchat/chat/js/chat.js +++ /dev/null @@ -1,2940 +0,0 @@ -/* - * @package AJAX_Chat - * @author Sebastian Tschan - * @copyright (c) Sebastian Tschan - * @license Modified MIT License - * @link https://blueimp.net/ajax/ - * - * The SELFHTML documentation has been used throughout this project: - * http://selfhtml.org - * - * Stylesheet and cookie methods have been inspired by Paul Sowden (A List Apart): - * http://www.alistapart.com/stories/alternate/ - */ - -// AJAX Chat client side logic: -var ajaxChat = { - - settingsInitiated: null, - styleInitiated: null, - initializeFunction: null, - finalizeFunction: null, - loginChannelID: null, - loginChannelName: null, - timerRate: null, - timer: null, - ajaxURL: null, - baseURL: null, - regExpMediaUrl: null, - dirs: null, - startChatOnLoad: null, - chatStarted: null, - domIDs: null, - dom: null, - settings: null, - nonPersistentSettings: null, - unusedSettings: null, - bbCodeTags: null, - colorCodes: null, - emoticonCodes: null, - emoticonFiles: null, - soundFiles: null, - sounds: null, - soundTransform: null, - sessionName: null, - cookieExpiration: null, - cookiePath: null, - cookieDomain: null, - cookieSecure: null, - chatBotName: null, - chatBotID: null, - allowUserMessageDelete: null, - inactiveTimeout: null, - privateChannelDiff: null, - privateMessageDiff: null, - showChannelMessages: null, - messageTextMaxLength: null, - socketServerEnabled: null, - socketServerHost: null, - socketServerPort: null, - socketServerChatID: null, - socket: null, - socketIsConnected: null, - socketTimerRate: null, - socketReconnectTimer: null, - socketRegistrationID: null, - userID: null, - userName: null, - userRole: null, - channelID: null, - channelName: null, - channelSwitch: null, - usersList: null, - userNamesList: null, - userMenuCounter: null, - encodedUserName: null, - userNodeString: null, - ignoredUserNames: null, - lastID: null, - localID: null, - lang: null, - langCode: null, - baseDirection: null, - originalDocumentTitle: null, - blinkInterval: null, - httpRequest: null, - retryTimer: null, - retryTimerDelay: null, - requestStatus: 'ok', - DOMbuffering: null, - DOMbuffer: null, - DOMbufferRowClass: 'rowOdd', - - init: function(config, lang, initSettings, initStyle, initialize, initializeFunction, finalizeFunction) { - this.httpRequest = {}; - this.usersList = []; - this.userNamesList = []; - this.userMenuCounter = 0; - this.lastID = 0; - this.localID = 0; - this.lang = lang; - this.initConfig(config); - this.initDirectories(); - if(initSettings) { - this.initSettings(); - } - if(initStyle) { - this.initStyle(); - } - this.initializeFunction = initializeFunction; - this.finalizeFunction = finalizeFunction; - if(initialize) { - this.setLoadHandler(); - } - }, - - initConfig: function(config) { - this.loginChannelID = config['loginChannelID']; - this.loginChannelName = config['loginChannelName']; - this.timerRate = config['timerRate']; - this.ajaxURL = config['ajaxURL']; - this.baseURL = config['baseURL']; - this.regExpMediaUrl = config['regExpMediaUrl']; - this.startChatOnLoad = config['startChatOnLoad']; - this.domIDs = config['domIDs']; - this.settings = config['settings']; - this.nonPersistentSettings = config['nonPersistentSettings']; - this.bbCodeTags = config['bbCodeTags']; - this.colorCodes = config['colorCodes']; - this.emoticonCodes = config['emoticonCodes']; - this.emoticonFiles = config['emoticonFiles']; - this.soundFiles = config['soundFiles']; - this.sessionName = config['sessionName']; - this.cookieExpiration = config['cookieExpiration']; - this.cookiePath = config['cookiePath']; - this.cookieDomain = config['cookieDomain']; - this.cookieSecure = config['cookieSecure']; - this.chatBotName = config['chatBotName']; - this.chatBotID = config['chatBotID']; - this.allowUserMessageDelete = config['allowUserMessageDelete']; - this.inactiveTimeout = config['inactiveTimeout']; - this.privateChannelDiff = config['privateChannelDiff']; - this.privateMessageDiff = config['privateMessageDiff']; - this.showChannelMessages = config['showChannelMessages']; - this.messageTextMaxLength = config['messageTextMaxLength']; - this.socketServerEnabled = config['socketServerEnabled']; - this.socketServerHost = config['socketServerHost']; - this.socketServerPort = config['socketServerPort']; - this.socketServerChatID = config['socketServerChatID']; - this.DOMbuffering = false; - this.DOMbuffer = ""; - this.retryTimerDelay = (this.inactiveTimeout*6000 - this.timerRate)/4 + this.timerRate; - }, - - initDirectories: function() { - this.dirs = {}; - this.dirs['emoticons'] = this.baseURL+'img/emoticons/'; - this.dirs['sounds'] = this.baseURL+'sounds/'; - this.dirs['flash'] = this.baseURL+'flash/'; - }, - - initSettings: function() { - var cookie = this.readCookie(this.sessionName + '_settings'), - i, settingsArray, setting, key, value, number; - this.settingsInitiated = true; - this.unusedSettings = {}; - if(cookie) { - settingsArray = cookie.split('&'); - for(i=0; i'
-						+ this.emoticonCodes[i]
-						+ ''; - } - if(this.dom['emoticonsContainer']) { - this.updateDOM('emoticonsContainer', this.DOMbuffer); - } - this.DOMbuffer = ""; - }, - - initColorCodes: function() { - if(this.dom['colorCodesContainer']) { - this.DOMbuffer = ""; - for(var i=0; i' - + "\n"; - } - this.updateDOM('colorCodesContainer', this.DOMbuffer); - this.DOMbuffer = ""; - } - }, - - - startChatUpdate: function() { - // Start the chat update and retrieve current user and channel info and set the login channel: - var infos = 'userID,userName,userRole,channelID,channelName'; - if(this.socketServerEnabled) { - infos += ',socketRegistrationID'; - } - var params = '&getInfos=' + this.encodeText(infos); - if(!isNaN(parseInt(this.loginChannelID))) { - params += '&channelID='+this.loginChannelID; - } else if(this.loginChannelName !== null) { - params += '&channelName='+this.encodeText(this.loginChannelName); - } - this.updateChat(params); - }, - - updateChat: function(paramString) { - var requestUrl = this.ajaxURL - + '&lastID=' - + this.lastID; - if(paramString) { - requestUrl += paramString; - } - this.makeRequest(requestUrl,'GET',null); - }, - - loadFlashInterface: function() { - if(this.dom['flashInterfaceContainer']) { - this.updateDOM( - 'flashInterfaceContainer', - '' - +'' - +'' - +'' - +'' - ); - FABridge.addInitializationCallback('ajaxChat', this.flashInterfaceLoadCompleteHandler); - } - }, - - flashInterfaceLoadCompleteHandler: function() { - ajaxChat.initializeFlashInterface(); - }, - - initializeFlashInterface: function() { - if(this.socketServerEnabled) { - this.socketTimerRate = (this.inactiveTimeout-1)*60*1000; - this.socketConnect(); - } - this.loadSounds(); - this.initializeCustomFlashInterface(); - }, - - socketConnect: function() { - if(!this.socketIsConnected) { - try { - if(!this.socket && FABridge.ajaxChat) { - this.socket = FABridge.ajaxChat.create('flash.net.XMLSocket'); - this.socket.addEventListener('connect', this.socketConnectHandler); - this.socket.addEventListener('close', this.socketCloseHandler); - this.socket.addEventListener('data', this.socketDataHandler); - this.socket.addEventListener('ioError', this.socketIOErrorHandler); - this.socket.addEventListener('securityError', this.socketSecurityErrorHandler); - } - this.socket.connect(this.socketServerHost, this.socketServerPort); - } catch(e) { - //alert(e); - } - } - clearTimeout(this.socketReconnectTimer); - this.socketReconnectTimer = null; - }, - - socketConnectHandler: function(event) { - ajaxChat.socketIsConnected = true; - // setTimeout is needed to avoid calling the flash interface recursively: - setTimeout(ajaxChat.socketRegister, 0); - }, - - socketCloseHandler: function(event) { - ajaxChat.socketIsConnected = false; - if(ajaxChat.socket) { - clearTimeout(ajaxChat.timer); - ajaxChat.updateChat(null); - } - }, - - socketDataHandler: function(event) { - ajaxChat.socketUpdate(event.getData()); - }, - - socketIOErrorHandler: function(event) { - // setTimeout is needed to avoid calling the flash interface recursively (e.g. sound on new messages): - setTimeout(function() { ajaxChat.addChatBotMessageToChatList('/error SocketIO'); }, 0); - setTimeout(ajaxChat.updateChatlistView, 1); - }, - - socketSecurityErrorHandler: function(event) { - // setTimeout is needed to avoid calling the flash interface recursively (e.g. sound on new messages): - setTimeout(function() { ajaxChat.addChatBotMessageToChatList('/error SocketSecurity'); }, 0); - setTimeout(ajaxChat.updateChatlistView, 1); - }, - - socketRegister: function() { - if(this.socket && this.socketIsConnected) { - try { - this.socket.send( - '' - ); - } catch(e) { - //alert(e); - } - } - }, - - loadXML: function(str) { - if(!arguments.callee.parser) { - try { - // DOMParser native implementation (Mozilla, Opera): - arguments.callee.parser = new DOMParser(); - } catch(e) { - var customDOMParser = function() {}; - if(navigator.appName === 'Microsoft Internet Explorer') { - // IE implementation: - customDOMParser.prototype.parseFromString = function(str, contentType) { - if(!arguments.callee.XMLDOM) { - arguments.callee.XMLDOM = new ActiveXObject('Microsoft.XMLDOM'); - } - arguments.callee.XMLDOM.loadXML(str); - return arguments.callee.XMLDOM; - }; - } else { - // Safari, Konqueror: - customDOMParser.prototype.parseFromString = function(str, contentType) { - if(!arguments.callee.httpRequest) { - arguments.callee.httpRequest = new XMLHttpRequest(); - } - arguments.callee.httpRequest.open( - 'GET', - 'data:text/xml;charset=utf-8,'+encodeURIComponent(str), - false - ); - arguments.callee.httpRequest.send(null); - return arguments.callee.httpRequest.responseXML; - }; - } - arguments.callee.parser = new customDOMParser(); - } - } - return arguments.callee.parser.parseFromString(str, 'text/xml'); - }, - - socketUpdate: function(data) { - var xmlDoc = this.loadXML(data); - if(xmlDoc) { - this.handleOnlineUsers(xmlDoc.getElementsByTagName('user')); - // If the root node has the attribute "mode" set to "1" it is a channel message: - if((this.showChannelMessages || xmlDoc.firstChild.getAttribute('mode') !== '1') && !this.channelSwitch) { - var channelID = xmlDoc.firstChild.getAttribute('channelID'); - if(channelID === this.channelID || - parseInt(channelID) === parseInt(this.userID)+this.privateMessageDiff - ) { - this.handleChatMessages(xmlDoc.getElementsByTagName('message')); - } - } - } - }, - - setAudioVolume: function(volume) { - volume = parseFloat(volume); - if(!isNaN(volume)) { - if(volume < 0) { - volume = 0.0; - } else if(volume > 1) { - volume = 1.0; - } - this.settings['audioVolume'] = volume; - try { - if(!this.soundTransform) { - this.soundTransform = FABridge.ajaxChat.create('flash.media.SoundTransform'); - } - this.soundTransform.setVolume(volume); - } catch(e) { - //alert(e); - } - } - }, - - loadSounds: function() { - try { - this.setAudioVolume(this.settings['audioVolume']); - this.sounds = {}; - var sound,urlRequest; - for(var key in this.soundFiles) { - sound = FABridge.ajaxChat.create('flash.media.Sound'); - sound.addEventListener('complete', this.soundLoadCompleteHandler); - sound.addEventListener('ioError', this.soundIOErrorHandler); - urlRequest = FABridge.ajaxChat.create('flash.net.URLRequest'); - urlRequest.setUrl(this.dirs['sounds']+this.soundFiles[key]); - sound.load(urlRequest); - } - } catch(e) { - alert(e); - } - }, - - soundLoadCompleteHandler: function(event) { - var sound = event.getTarget(); - for(var key in ajaxChat.soundFiles) { - // Get the sound key by matching the sound URL with the sound filename: - if((new RegExp(ajaxChat.soundFiles[key])).test(sound.getUrl())) { - // Add the loaded sound to the sounds list: - ajaxChat.sounds[key] = sound; - } - } - }, - - soundIOErrorHandler: function(event) { - // setTimeout is needed to avoid calling the flash interface recursively (e.g. sound on new messages): - setTimeout(function() { ajaxChat.addChatBotMessageToChatList('/error SoundIO'); }, 0); - setTimeout(ajaxChat.updateChatlistView, 1); - }, - - soundPlayCompleteHandler: function(event) { - // soundChannel event 'soundComplete' - }, - - playSound: function(soundID) { - if(this.sounds && this.sounds[soundID]) { - try { - // play() parameters are - // startTime:Number (default = 0), - // loops:int (default = 0) and - // sndTransform:SoundTransform (default = null) - return this.sounds[soundID].play(0, 0, this.soundTransform); - } catch(e) { - //alert(e); - } - } - return null; - }, - - playSoundOnNewMessage: function(dateObject, userID, userName, userRole, messageID, messageText, channelID, ip) { - if(this.settings['audio'] && this.sounds && this.lastID && !this.channelSwitch) { - switch(userID) { - case this.chatBotID: - var messageParts = messageText.split(' ', 1); - switch(messageParts[0]) { - case '/login': - case '/channelEnter': - this.playSound(this.settings['soundEnter']); - break; - case '/logout': - case '/channelLeave': - case '/kick': - this.playSound(this.settings['soundLeave']); - break; - case '/error': - this.playSound(this.settings['soundError']); - break; - default: - this.playSound(this.settings['soundChatBot']); - } - break; - case this.userID: - this.playSound(this.settings['soundSend']); - break; - default: - this.playSound(this.settings['soundReceive']); - break; - } - } - }, - - fillSoundSelection: function(selectionID, selectedSound) { - var selection = document.getElementById(selectionID); - // Skip the first, empty selection: - var i = 1; - for(var key in this.soundFiles) { - selection.options[i] = new Option(key, key); - if(key === selectedSound){ - selection.options[i].selected = true; - } - i++; - } - }, - - setStatus: function(newStatus) { - // status options are: ok, retrying, waiting - if (this.requestStatus !== 'retrying' || newStatus === 'ok') { - this.requestStatus = newStatus; - } - - var statusIcon = document.getElementById('statusIconContainer'); - - if (statusIcon) { - switch (this.requestStatus) { - case 'ok': - this.setClass(statusIcon, 'statusContainerOff'); - break; - case 'waiting': - this.setClass(statusIcon, 'statusContainerOn'); - break; - case 'retrying': - this.setClass(statusIcon, 'statusContainerAlert'); - break; - } - } - }, - - forceNewRequest: function() { - ajaxChat.updateChat(null); - ajaxChat.setStatus('retrying'); - }, - - getHttpRequest: function(identifier) { - if(!this.httpRequest[identifier]) { - if (window.XMLHttpRequest) { - this.httpRequest[identifier] = new XMLHttpRequest(); - if (this.httpRequest[identifier].overrideMimeType) { - this.httpRequest[identifier].overrideMimeType('text/xml'); - } - } else if (window.ActiveXObject) { - try { - this.httpRequest[identifier] = new ActiveXObject("Msxml2.XMLHTTP"); - } catch (e) { - try { - this.httpRequest[identifier] = new ActiveXObject("Microsoft.XMLHTTP"); - } catch (e) { - } - } - } - } - return this.httpRequest[identifier]; - }, - - makeRequest: function(url, method, data) { - var identifier; - this.setStatus('waiting'); - - try { - if(data) { - // Create up to 50 HTTPRequest objects: - if(!arguments.callee.identifier || arguments.callee.identifier > 50) { - arguments.callee.identifier = 1; - } else { - arguments.callee.identifier++; - } - identifier = arguments.callee.identifier; - } else { - identifier = 0; - } - //if the response takes longer than retryTimerDelay to give an OK status, abort the connection and start again. - this.retryTimer = setTimeout(ajaxChat.forceNewRequest, ajaxChat.retryTimerDelay); - - this.getHttpRequest(identifier).open(method, url, true); - this.getHttpRequest(identifier).onreadystatechange = function() { - try { - ajaxChat.handleResponse(identifier); - } catch(e) { - try { - clearTimeout(ajaxChat.timer); - } catch(e) { - //alert(e); - } - try { - if(data) { - ajaxChat.addChatBotMessageToChatList('/error ConnectionTimeout'); - ajaxChat.setStatus('retrying'); - ajaxChat.updateChatlistView(); - } - } catch(e) { - //alert(e); - } - try { - ajaxChat.timer = setTimeout(function() { ajaxChat.updateChat(null); }, ajaxChat.timerRate); - } catch(e) { - //alert(e); - } - } - }; - if(method === 'POST') { - this.getHttpRequest(identifier).setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); - } - this.getHttpRequest(identifier).send(data); - } catch(e) { - clearTimeout(this.timer); - if(data) { - this.addChatBotMessageToChatList('/error ConnectionTimeout'); - ajaxChat.setStatus('retrying'); - this.updateChatlistView(); - } - this.timer = setTimeout(function() { ajaxChat.updateChat(null); }, this.timerRate); - } - }, - - handleResponse: function(identifier) { - var xmlDoc; - if (this.getHttpRequest(identifier).readyState === 4) { - if (this.getHttpRequest(identifier).status === 200) { - clearTimeout(ajaxChat.retryTimer); - xmlDoc = this.getHttpRequest(identifier).responseXML; - ajaxChat.setStatus('ok'); - } else { - // Connection status 0 can be ignored. - if (this.getHttpRequest(identifier).status === 0) { - this.setStatus('waiting'); - this.updateChatlistView(); - return false; - } else { - this.addChatBotMessageToChatList('/error ConnectionStatus '+this.getHttpRequest(identifier).status); - this.setStatus('retrying'); - this.updateChatlistView(); - return false; - } - } - } - if(!xmlDoc) { - return false; - } - this.handleXML(xmlDoc); - return true; - }, - - handleXML: function(xmlDoc) { - this.handleInfoMessages(xmlDoc.getElementsByTagName('info')); - this.handleOnlineUsers(xmlDoc.getElementsByTagName('user')); - this.handleChatMessages(xmlDoc.getElementsByTagName('message')); - this.channelSwitch = null; - this.setChatUpdateTimer(); - }, - - setChatUpdateTimer: function() { - clearTimeout(this.timer); - if(this.chatStarted) { - var timeout; - if(this.socketIsConnected) { - timeout = this.socketTimerRate; - } else { - timeout = this.timerRate; - if(this.socketServerEnabled && !this.socketReconnectTimer) { - // If the socket connection fails try to reconnect once in a minute: - this.socketReconnectTimer = setTimeout(ajaxChat.socketConnect, 60000); - } - } - this.timer = setTimeout(function() {ajaxChat.updateChat(null);}, timeout); - } - }, - - handleInfoMessages: function(infoNodes) { - var infoType, infoData; - for(var i=0; i' - + userName - + '' - + '
    '+this.getUserNodeStringItems(encodedUserName, userID, false) : - ' style="display:none;">') - + '
' - +''; - if(userID === this.userID) { - this.userNodeString = str; - } - return str; - } - }, - - toggleUserMenu: function(menuID, userName, userID) { - // If the menu is empty, fill it with user node menu items before toggling it. - var isInline = false; - if (menuID.indexOf('ium') >= 0 ) { - isInline = true; - } - if(!document.getElementById(menuID).firstChild) { - this.updateDOM( - menuID, - this.getUserNodeStringItems( - this.encodeText(this.addSlashes(this.getScriptLinkValue(userName))), - userID, - isInline - ), - false, - true - ) - } - this.showHide(menuID); - this.dom['chatList'].scrollTop = this.dom['chatList'].scrollHeight; - }, - - getUserNodeStringItems: function(encodedUserName, userID, isInline) { - var menu; - if(encodedUserName !== this.encodedUserName) { - menu = '
  • ' - + this.lang['userMenuSendPrivateMessage'] - + '
  • ' - + '
  • ' - + this.lang['userMenuDescribe'] - + '
  • ' - + '
  • ' - + this.lang['userMenuOpenPrivateChannel'] - + '
  • ' - + '
  • ' - + this.lang['userMenuClosePrivateChannel'] - + '
  • ' - + '
  • ' - + this.lang['userMenuIgnore'] - + '
  • '; - if (isInline) { - menu += '
  • ' - + this.lang['userMenuInvite'] - + '
  • ' - + '
  • ' - + this.lang['userMenuUninvite'] - + '
  • ' - + '
  • ' - + this.lang['userMenuWhereis'] - + '
  • '; - } - if(this.userRole === '2' || this.userRole === '3') { - menu += '
  • ' - + this.lang['userMenuKick'] - + '
  • ' - + '
  • ' - + this.lang['userMenuWhois'] - + '
  • '; - } - } else { - menu = '
  • ' - + this.lang['userMenuLogout'] - + '
  • ' - + '
  • ' - + this.lang['userMenuWho'] - + '
  • ' - + '
  • ' - + this.lang['userMenuIgnoreList'] - + '
  • ' - + '
  • ' - + this.lang['userMenuList'] - + '
  • ' - + '
  • ' - + this.lang['userMenuAction'] - + '
  • ' - + '
  • ' - + this.lang['userMenuRoll'] - + '
  • ' - + '
  • ' - + this.lang['userMenuNick'] - + '
  • '; - if(this.userRole === '1' || this.userRole === '2' || this.userRole === '3') { - menu += '
  • ' - + this.lang['userMenuEnterPrivateRoom'] - + '
  • '; - if(this.userRole === '2' || this.userRole === '3') { - menu += '
  • ' - + this.lang['userMenuBans'] - + '
  • '; - } - } - } - menu += this.getCustomUserMenuItems(encodedUserName, userID); - return menu; - }, - - setOnlineListRowClasses: function() { - if(this.dom['onlineList']) { - var node = this.dom['onlineList'].firstChild; - var rowEven = false; - while(node) { - this.setClass(node, (rowEven ? 'rowEven' : 'rowOdd')); - node = node.nextSibling; - rowEven = !rowEven; - } - } - }, - - clearChatList: function() { - while(this.dom['chatList'].hasChildNodes()) { - this.dom['chatList'].removeChild(this.dom['chatList'].firstChild); - } - }, - - clearOnlineUsersList: function() { - this.usersList = []; - this.userNamesList = []; - if(this.dom['onlineList']) { - while(this.dom['onlineList'].hasChildNodes()) { - this.dom['onlineList'].removeChild(this.dom['onlineList'].firstChild); - } - } - }, - - getEncodedChatBotName: function() { - if(typeof arguments.callee.encodedChatBotName === 'undefined') { - arguments.callee.encodedChatBotName = this.encodeSpecialChars(this.chatBotName); - } - return arguments.callee.encodedChatBotName; - }, - - addChatBotMessageToChatList: function(messageText) { - this.addMessageToChatList( - new Date(), - this.chatBotID, - this.getEncodedChatBotName(), - 4, - null, - messageText, - null - ); - }, - - addMessageToChatList: function(dateObject, userID, userName, userRole, messageID, messageText, channelID, ip) { - // Prevent adding the same message twice: - if(this.getMessageNode(messageID)) { - return; - } - if(!this.onNewMessage(dateObject, userID, userName, userRole, messageID, messageText, channelID, ip)) { - return; - } - this.DOMbufferRowClass = this.DOMbufferRowClass === 'rowEven' ? 'rowOdd' : 'rowEven'; - this.DOMbuffer = this.DOMbuffer + - this.getChatListMessageString( - dateObject, userID, userName, userRole, messageID, messageText, channelID, ip - ); - if(!this.DOMbuffering){ - this.updateDOM('chatList', this.DOMbuffer); - this.DOMbuffer = ""; - } - }, - - getChatListMessageString: function(dateObject, userID, userName, userRole, messageID, messageText, channelID, ip) { - var rowClass = this.DOMbufferRowClass; - var userClass = this.getRoleClass(userRole); - var colon; - if(messageText.indexOf('/action') === 0 || messageText.indexOf('/me') === 0 || messageText.indexOf('/privaction') === 0) { - userClass += ' action'; - colon = ' '; - } else { - colon = ': '; - } - var dateTime = this.settings['dateFormat'] ? '' - + this.formatDate(this.settings['dateFormat'], dateObject) + ' ' : ''; - return '
    ' - + this.getDeletionLink(messageID, userID, userRole, channelID) - + dateTime - + '' - + userName - + '' - + colon - + this.replaceText(messageText) - + '
    '; - }, - - getChatListUserNameTitle: function(userID, userName, userRole, ip) { - return (ip !== null) ? ' title="IP: ' + ip + '"' : ''; - }, - - getMessageDocumentID: function(messageID) { - return ((messageID === null) ? 'ajaxChat_lm_'+(this.localID++) : 'ajaxChat_m_'+messageID); - }, - - getMessageNode: function(messageID) { - return ((messageID === null) ? null : document.getElementById(this.getMessageDocumentID(messageID))); - }, - - getUserDocumentID: function(userID) { - return 'ajaxChat_u_'+userID; - }, - - getUserNode: function(userID) { - return document.getElementById(this.getUserDocumentID(userID)); - }, - - getUserMenuDocumentID: function(userID) { - return 'ajaxChat_um_'+userID; - }, - - getInlineUserMenuDocumentID: function(menuID, index) { - return 'ajaxChat_ium_'+menuID+'_'+index; - }, - - getDeletionLink: function(messageID, userID, userRole, channelID) { - if(messageID !== null && this.isAllowedToDeleteMessage(messageID, userID, userRole, channelID)) { - if(!arguments.callee.deleteMessage) { - arguments.callee.deleteMessage = this.encodeSpecialChars(this.lang['deleteMessage']); - } - return ' '; // Adding a space - without any content Opera messes up the chatlist display - } - return ''; - }, - - isAllowedToDeleteMessage: function(messageID, userID, userRole, channelID) { - if((((this.userRole === '1' && this.allowUserMessageDelete && (userID === this.userID || - parseInt(channelID) === parseInt(this.userID)+this.privateMessageDiff || - parseInt(channelID) === parseInt(this.userID)+this.privateChannelDiff)) || - this.userRole === '2') && userRole !== '3' && userRole !== '4') || this.userRole === '3') { - return true; - } - return false; - }, - - onNewMessage: function(dateObject, userID, userName, userRole, messageID, messageText, channelID, ip) { - if(!this.customOnNewMessage(dateObject, userID, userName, userRole, messageID, messageText, channelID, ip)) { - return false; - } - if(this.ignoreMessage(dateObject, userID, userName, userRole, messageID, messageText, channelID, ip)) { - return false; - } - if(this.parseDeleteMessageCommand(messageText)) { - return false; - } - this.blinkOnNewMessage(dateObject, userID, userName, userRole, messageID, messageText, channelID, ip); - this.playSoundOnNewMessage(dateObject, userID, userName, userRole, messageID, messageText, channelID, ip); - return true; - }, - - parseDeleteMessageCommand: function(messageText) { - if(messageText.indexOf('/delete') === 0) { - var messageID = messageText.substr(8); - var messageNode = this.getMessageNode(messageID); - if(messageNode) { - var nextSibling = messageNode.nextSibling; - try { - this.dom['chatList'].removeChild(messageNode); - if(nextSibling) { - this.updateChatListRowClasses(nextSibling); - } - } catch(e) { - } - } - return true; - } - return false; - }, - - blinkOnNewMessage: function(dateObject, userID, userName, userRole, messageID, messageText, channelID, ip) { - if(this.settings['blink'] && this.lastID && !this.channelSwitch && userID !== this.userID) { - clearInterval(this.blinkInterval); - this.blinkInterval = setInterval( - 'ajaxChat.blinkUpdate(\''+this.addSlashes(this.decodeSpecialChars(userName))+'\')', - this.settings['blinkInterval'] - ); - } - }, - - blinkUpdate: function(blinkStr) { - if(!this.originalDocumentTitle) { - this.originalDocumentTitle = document.title; - } - if(!arguments.callee.blink) { - document.title = '[@ ] '+blinkStr+' - '+this.originalDocumentTitle; - arguments.callee.blink = 1; - } else if(arguments.callee.blink > this.settings['blinkIntervalNumber']) { - clearInterval(this.blinkInterval); - document.title = this.originalDocumentTitle; - arguments.callee.blink = 0; - } else { - if(arguments.callee.blink % 2 !== 0) { - document.title = '[@ ] '+blinkStr+' - '+this.originalDocumentTitle; - } else { - document.title = '[ @] '+blinkStr+' - '+this.originalDocumentTitle; - } - arguments.callee.blink++; - } - }, - - updateChatlistView: function() { - if(this.dom['chatList'].childNodes && this.settings['maxMessages']) { - while(this.dom['chatList'].childNodes.length > this.settings['maxMessages']) { - this.dom['chatList'].removeChild(this.dom['chatList'].firstChild); - } - } - - if(this.settings['autoScroll']) { - this.dom['chatList'].scrollTop = this.dom['chatList'].scrollHeight; - } - }, - - encodeText: function(text) { - return encodeURIComponent(text); - }, - - decodeText: function(text) { - return decodeURIComponent(text); - }, - - utf8Encode: function(plainText) { - var utf8Text = ''; - for(var i=0; i127) && (c<2048)) { - utf8Text += String.fromCharCode((c>>6)|192); - utf8Text += String.fromCharCode((c&63)|128); - } else { - utf8Text += String.fromCharCode((c>>12)|224); - utf8Text += String.fromCharCode(((c>>6)&63)|128); - utf8Text += String.fromCharCode((c&63)|128); - } - } - return utf8Text; - }, - - utf8Decode: function(utf8Text) { - var plainText = ''; - var c,c2,c3; - var i=0; - while(i191) && (c<224)) { - c2 = utf8Text.charCodeAt(i+1); - plainText += String.fromCharCode(((c&31)<<6) | (c2&63)); - i+=2; - } else { - c2 = utf8Text.charCodeAt(i+1); - c3 = utf8Text.charCodeAt(i+2); - plainText += String.fromCharCode(((c&15)<<12) | ((c2&63)<<6) | (c3&63)); - i+=3; - } - } - return plainText; - }, - - encodeSpecialChars: function(text) { - return text.replace( - /[&<>'"]/g, - this.encodeSpecialCharsCallback - ); - }, - - encodeSpecialCharsCallback: function(str) { - switch(str) { - case '&': - return '&'; - case '<': - return '<'; - case '>': - return '>'; - case '\'': - // As ' is not supported by IE, we use ' as replacement for ('): - return '''; - case '"': - return '"'; - default: - return str; - } - }, - - decodeSpecialChars: function(text) { - var regExp = new RegExp('(&)|(<)|(>)|(')|(")', 'g'); - - return text.replace( - regExp, - this.decodeSpecialCharsCallback - ); - }, - - decodeSpecialCharsCallback: function(str) { - switch(str) { - case '&': - return '&'; - case '<': - return '<'; - case '>': - return '>'; - case ''': - return '\''; - case '"': - return '"'; - default: - return str; - } - }, - - inArray: function(haystack, needle) { - var i = haystack.length; - while(i--) { - if(haystack[i] === needle) { - return true; - } - } - return false; - }, - - arraySearch: function(needle, haystack) { - var i = haystack.length; - while(i--) { - if(haystack[i] === needle) { - return i; - } - } - return false; - }, - - stripTags: function(str) { - if (!arguments.callee.regExp) { - arguments.callee.regExp = new RegExp('<\\/?[^>]+?>', 'g'); - } - - return str.replace(arguments.callee.regExp, ''); - }, - - stripBBCodeTags: function(str) { - if (!arguments.callee.regExp) { - arguments.callee.regExp = new RegExp('\\[\\/?[^\\]]+?\\]', 'g'); - } - - return str.replace(arguments.callee.regExp, ''); - }, - - escapeRegExp: function(text) { - if (!arguments.callee.regExp) { - var specials = new Array( - '^', '$', '*', '+', '?', '.', '|', '/', - '(', ')', '[', ']', '{', '}', '\\' - ); - arguments.callee.regExp = new RegExp( - '(\\' + specials.join('|\\') + ')', 'g' - ); - } - return text.replace(arguments.callee.regExp, '\\$1'); - }, - - addSlashes: function(text) { - // Adding slashes in front of apostrophs and backslashes to ensure a valid JavaScript expression: - return text.replace(/\\/g, '\\\\').replace(/\'/g, '\\\''); - }, - - removeSlashes: function(text) { - // Removing slashes added by calling addSlashes(text) previously: - return text.replace(/\\\\/g, '\\').replace(/\\\'/g, '\''); - }, - - formatDate: function(format, date) { - date = (date == null) ? new date() : date; - - return format - .replace(/%Y/g, date.getFullYear()) - .replace(/%m/g, this.addLeadingZero(date.getMonth()+1)) - .replace(/%d/g, this.addLeadingZero(date.getDate())) - .replace(/%H/g, this.addLeadingZero(date.getHours())) - .replace(/%i/g, this.addLeadingZero(date.getMinutes())) - .replace(/%s/g, this.addLeadingZero(date.getSeconds())); - }, - - addLeadingZero: function(number) { - number = number.toString(); - if(number.length < 2) { - number = '0'+number; - } - return number; - }, - - getUserIDFromUserName: function(userName) { - var index = this.arraySearch(userName, this.userNamesList); - if(index !== false) { - return this.usersList[index]; - } - return null; - }, - - getUserNameFromUserID: function(userID) { - var index = this.arraySearch(userID, this.usersList); - if(index !== false) { - return this.userNamesList[index]; - } - return null; - }, - - getRoleClass: function(roleID) { - switch(parseInt(roleID)) { - case 0: - return 'guest'; - case 1: - return 'user'; - case 2: - return 'moderator'; - case 3: - return 'admin'; - case 4: - return 'chatBot'; - default: - return 'default'; - } - }, - - handleInputFieldKeyPress: function(event) { - if(event.keyCode === 13 && !event.shiftKey) { - this.sendMessage(); - try { - event.preventDefault(); - } catch(e) { - event.returnValue = false; // IE - } - return false; - } - return true; - }, - - handleInputFieldKeyUp: function(event) { - this.updateMessageLengthCounter(); - }, - - updateMessageLengthCounter: function() { - if(this.dom['messageLengthCounter']) { - this.updateDOM( - 'messageLengthCounter', - this.dom['inputField'].value.length + '/' + this.messageTextMaxLength, - false, - true - ); - } - }, - - sendMessage: function(text) { - text = text ? text : this.dom['inputField'].value; - if(!text) { - return; - } - text = this.parseInputMessage(text); - if(text) { - clearTimeout(this.timer); - var message = 'lastID=' - + this.lastID - + '&text=' - + this.encodeText(text); - this.makeRequest(this.ajaxURL,'POST',message); - } - this.dom['inputField'].value = ''; - this.dom['inputField'].focus(); - this.updateMessageLengthCounter(); - }, - - parseInputMessage: function(text) { - var textParts; - if(text.charAt(0) === '/') { - textParts = text.split(' '); - switch(textParts[0]) { - case '/ignore': - text = this.parseIgnoreInputCommand(text, textParts); - break; - case '/clear': - this.clearChatList(); - return false; - break; - default: - text = this.parseCustomInputCommand(text, textParts); - } - if(text && this.settings['persistFontColor'] && this.settings['fontColor']) { - text = this.assignFontColorToCommandMessage(text, textParts); - } - } else { - text = this.parseCustomInputMessage(text); - if(text && this.settings['persistFontColor'] && this.settings['fontColor']) { - text = this.assignFontColorToMessage(text); - } - } - return text; - }, - - assignFontColorToMessage: function(text) { - return '[color='+this.settings['fontColor']+']'+text+'[/color]'; - }, - - assignFontColorToCommandMessage: function(text, textParts) { - switch(textParts[0]) { - case '/msg': - case '/describe': - if(textParts.length > 2) { - return textParts[0]+' '+textParts[1]+' ' - + '[color='+this.settings['fontColor']+']' - + textParts.slice(2).join(' ') - + '[/color]'; - } - break; - case '/me': - case '/action': - if(textParts.length > 1) { - return textParts[0]+' ' - + '[color='+this.settings['fontColor']+']' - + textParts.slice(1).join(' ') - + '[/color]'; - } - break; - } - return text; - }, - - parseIgnoreInputCommand: function(text, textParts) { - var userName, ignoredUserNames = this.getIgnoredUserNames(), i; - if(textParts.length > 1) { - userName = this.encodeSpecialChars(textParts[1]); - // Prevent adding the chatBot or current user to the list: - if(userName === this.userName || userName === this.getEncodedChatBotName()) { - // Display the list of ignored users instead: - return this.parseIgnoreInputCommand(null, new Array('/ignore')); - } - if(ignoredUserNames.length > 0) { - i = ignoredUserNames.length; - while(i--) { - if(ignoredUserNames[i] === userName) { - ignoredUserNames.splice(i,1); - this.addChatBotMessageToChatList('/ignoreRemoved '+userName); - this.setIgnoredUserNames(ignoredUserNames); - this.updateChatlistView(); - return null; - } - } - } - ignoredUserNames.push(userName); - this.addChatBotMessageToChatList('/ignoreAdded '+userName); - this.setIgnoredUserNames(ignoredUserNames); - } else { - if(ignoredUserNames.length === 0) { - this.addChatBotMessageToChatList('/ignoreListEmpty -'); - } else { - this.addChatBotMessageToChatList('/ignoreList '+ignoredUserNames.join(' ')); - } - } - this.updateChatlistView(); - return null; - }, - - getIgnoredUserNames: function() { - var ignoredUserNamesString; - if(!this.ignoredUserNames) { - ignoredUserNamesString = this.getSetting('ignoredUserNames'); - if(ignoredUserNamesString) { - this.ignoredUserNames = ignoredUserNamesString.split(' '); - } else { - this.ignoredUserNames = []; - } - } - return this.ignoredUserNames; - }, - - setIgnoredUserNames: function(ignoredUserNames) { - this.ignoredUserNames = ignoredUserNames; - this.setSetting('ignoredUserNames', ignoredUserNames.join(' ')); - }, - - ignoreMessage: function(dateObject, userID, userName, userRole, messageID, messageText, channelID, ip) { - var textParts; - if(userID === this.chatBotID && messageText.charAt(0) === '/') { - textParts = messageText.split(' '); - if(textParts.length > 1) { - switch(textParts[0]) { - case '/invite': - case '/uninvite': - case '/roll': - userName = textParts[1]; - break; - } - } - } - if(this.inArray(this.getIgnoredUserNames(), userName)) { - return true; - } - return false; - }, - - deleteMessage: function(messageID) { - var messageNode = this.getMessageNode(messageID), originalClass, nextSibling; - if(messageNode) { - originalClass = this.getClass(messageNode); - this.setClass(messageNode, originalClass+' deleteSelected'); - if(confirm(this.lang['deleteMessageConfirm'])) { - nextSibling = messageNode.nextSibling; - try { - this.dom['chatList'].removeChild(messageNode); - if(nextSibling) { - this.updateChatListRowClasses(nextSibling); - } - this.updateChat('&delete='+messageID); - } catch(e) { - this.setClass(messageNode, originalClass); - } - } else { - this.setClass(messageNode, originalClass); - } - } - }, - - updateChatListRowClasses: function(node) { - var previousNode, rowEven; - if(!node) { - node = this.dom['chatList'].firstChild; - } - if(node) { - previousNode = node.previousSibling; - rowEven = (previousNode && this.getClass(previousNode) === 'rowOdd') ? true : false; - while(node) { - this.setClass(node, (rowEven ? 'rowEven' : 'rowOdd')); - node = node.nextSibling; - rowEven = !rowEven; - } - } - }, - - getClass: function(node) { - if(typeof node.className !== 'undefined') { - return node.className; // IE - } else { - return node.getAttribute('class'); - } - }, - - setClass: function(node, className) { - if(typeof node.className !== 'undefined') { - node.className = className; // IE - } else { - node.setAttribute('class', className); - } - }, - - scriptLinkEncode: function(text) { - return this.encodeText(this.addSlashes(this.decodeSpecialChars(text))); - }, - - scriptLinkDecode: function(text) { - return this.encodeSpecialChars(this.removeSlashes(this.decodeText(text))); - }, - - getScriptLinkValue: function(value) { - // This method returns plainText encoded values from javascript links - // The value has to be utf8Decoded for MSIE and Opera: - if(typeof arguments.callee.utf8Decode === 'undefined') { - switch(navigator.appName) { - case 'Microsoft Internet Explorer': - case 'Opera': - arguments.callee.utf8Decode = true; - return this.utf8Decode(value); - default: - arguments.callee.utf8Decode = false; - return value; - } - } else if(arguments.callee.utf8Decode) { - return this.utf8Decode(value); - } else { - return value; - } - }, - - sendMessageWrapper: function(text) { - this.sendMessage(this.getScriptLinkValue(text)); - }, - - insertMessageWrapper: function(text) { - this.insertText(this.getScriptLinkValue(text), true); - }, - - switchChannel: function(channel) { - if(!this.chatStarted) { - this.clearChatList(); - this.channelSwitch = true; - this.loginChannelID = null; - this.loginChannelName = channel; - this.requestTeaserContent(); - return; - } - clearTimeout(this.timer); - var message = 'lastID=' - + this.lastID - + '&channelName=' - + this.encodeText(channel); - this.makeRequest(this.ajaxURL,'POST',message); - if(this.dom['inputField'] && this.settings['autoFocus']) { - this.dom['inputField'].focus(); - } - }, - - logout: function() { - clearTimeout(this.timer); - var message = 'logout=true'; - this.makeRequest(this.ajaxURL,'POST',message); - }, - - handleLogout: function(url) { - window.location.href = url; - }, - - toggleSetting: function(setting, buttonID) { - this.setSetting(setting, !this.getSetting(setting)); - if(buttonID) { - this.updateButton(setting, buttonID); - } - }, - - updateButton: function(setting, buttonID) { - var node = document.getElementById(buttonID); - if(node) { - this.setClass(node, (this.getSetting(setting) ? 'button' : 'button off')); - } - }, - - showHide: function(id, styleDisplay, displayInline) { - var node = document.getElementById(id); - if(node) { - if(styleDisplay) { - node.style.display = styleDisplay; - } else { - if(node.style.display === 'none') { - node.style.display = (displayInline ? 'inline' : 'block'); - } else { - node.style.display = 'none'; - } - } - } - }, - - setPersistFontColor: function(bool) { - this.settings['persistFontColor'] = bool; - if(!this.settings['persistFontColor']) { - this.settings['fontColor'] = null; - if(this.dom['inputField']) { - this.dom['inputField'].style.color = ''; - } - } - }, - - setFontColor: function(color) { - if(this.settings['persistFontColor']) { - this.settings['fontColor'] = color; - if(this.dom['inputField']) { - this.dom['inputField'].style.color = color; - } - if(this.dom['colorCodesContainer']) { - this.dom['colorCodesContainer'].style.display = 'none'; - if(this.dom['inputField']) { - this.dom['inputField'].focus(); - } - } - } else { - this.insert('[color=' + color + ']', '[/color]'); - } - }, - - insertText: function(text, clearInputField) { - if(clearInputField) { - this.dom['inputField'].value = ''; - } - this.insert(text, ''); - }, - - insertBBCode: function(bbCode) { - switch(bbCode) { - case 'url': - var url = prompt(this.lang['urlDialog'], 'http://'); - if(url) - this.insert('[url=' + url + ']', '[/url]'); - else - this.dom['inputField'].focus(); - break; - default: - this.insert('[' + bbCode + ']', '[/' + bbCode + ']'); - } - }, - - insert: function(startTag, endTag) { - this.dom['inputField'].focus(); - // Internet Explorer: - if(typeof document.selection !== 'undefined') { - // Insert the tags: - var range = document.selection.createRange(); - var insText = range.text; - range.text = startTag + insText + endTag; - // Adjust the cursor position: - range = document.selection.createRange(); - if (insText.length === 0) { - range.move('character', -endTag.length); - } else { - range.moveStart('character', startTag.length + insText.length + endTag.length); - } - range.select(); - } - // Firefox, etc. (Gecko based browsers): - else if(typeof this.dom['inputField'].selectionStart !== 'undefined') { - // Insert the tags: - var start = this.dom['inputField'].selectionStart; - var end = this.dom['inputField'].selectionEnd; - var insText = this.dom['inputField'].value.substring(start, end); - this.dom['inputField'].value = this.dom['inputField'].value.substr(0, start) - + startTag - + insText - + endTag - + this.dom['inputField'].value.substr(end); - // Adjust the cursor position: - var pos; - if (insText.length === 0) { - pos = start + startTag.length; - } else { - pos = start + startTag.length + insText.length + endTag.length; - } - this.dom['inputField'].selectionStart = pos; - this.dom['inputField'].selectionEnd = pos; - } - // Other browsers: - else { - var pos = this.dom['inputField'].value.length; - this.dom['inputField'].value = this.dom['inputField'].value.substr(0, pos) - + startTag - + endTag - + this.dom['inputField'].value.substr(pos); - } - }, - - replaceText: function(text) { - try{ - text = this.replaceLineBreaks(text); - if(text.charAt(0) === '/') { - text = this.replaceCommands(text); - } else { - text = this.replaceBBCode(text); - text = this.replaceHyperLinks(text); - text = this.replaceEmoticons(text); - } - text = this.breakLongWords(text); - text = this.replaceCustomText(text); - } catch(e){ - //alert(e); - } - return text; - }, - - replaceCommands: function(text) { - try { - if(text.charAt(0) !== '/') { - return text; - } - var textParts = text.split(' '); - switch(textParts[0]) { - case '/login': - return this.replaceCommandLogin(textParts); - case '/logout': - return this.replaceCommandLogout(textParts); - case '/channelEnter': - return this.replaceCommandChannelEnter(textParts); - case '/channelLeave': - return this.replaceCommandChannelLeave(textParts); - case '/privmsg': - return this.replaceCommandPrivMsg(textParts); - case '/privmsgto': - return this.replaceCommandPrivMsgTo(textParts); - case '/privaction': - return this.replaceCommandPrivAction(textParts); - case '/privactionto': - return this.replaceCommandPrivActionTo(textParts); - case '/me': - case '/action': - return this.replaceCommandAction(textParts); - case '/invite': - return this.replaceCommandInvite(textParts); - case '/inviteto': - return this.replaceCommandInviteTo(textParts); - case '/uninvite': - return this.replaceCommandUninvite(textParts); - case '/uninviteto': - return this.replaceCommandUninviteTo(textParts); - case '/queryOpen': - return this.replaceCommandQueryOpen(textParts); - case '/queryClose': - return this.replaceCommandQueryClose(textParts); - case '/ignoreAdded': - return this.replaceCommandIgnoreAdded(textParts); - case '/ignoreRemoved': - return this.replaceCommandIgnoreRemoved(textParts); - case '/ignoreList': - return this.replaceCommandIgnoreList(textParts); - case '/ignoreListEmpty': - return this.replaceCommandIgnoreListEmpty(textParts); - case '/kick': - return this.replaceCommandKick(textParts); - case '/who': - return this.replaceCommandWho(textParts); - case '/whoChannel': - return this.replaceCommandWhoChannel(textParts); - case '/whoEmpty': - return this.replaceCommandWhoEmpty(textParts); - case '/list': - return this.replaceCommandList(textParts); - case '/bans': - return this.replaceCommandBans(textParts); - case '/bansEmpty': - return this.replaceCommandBansEmpty(textParts); - case '/unban': - return this.replaceCommandUnban(textParts); - case '/whois': - return this.replaceCommandWhois(textParts); - case '/whereis': - return this.replaceCommandWhereis(textParts); - case '/roll': - return this.replaceCommandRoll(textParts); - case '/nick': - return this.replaceCommandNick(textParts); - case '/error': - return this.replaceCommandError(textParts); - default: - return this.replaceCustomCommands(text, textParts); - } - } catch(e) { - //alert(e); - } - return text; - }, - - replaceCommandLogin: function(textParts) { - return '' - + this.lang['login'].replace(/%s/, textParts[1]) - + ''; - }, - - replaceCommandLogout: function(textParts) { - var type = ''; - if(textParts.length === 3) - type = textParts[2]; - return '' - + this.lang['logout' + type].replace(/%s/, textParts[1]) - + ''; - }, - - replaceCommandChannelEnter: function(textParts) { - return '' - + this.lang['channelEnter'].replace(/%s/, textParts[1]) - + ''; - }, - - replaceCommandChannelLeave: function(textParts) { - return '' - + this.lang['channelLeave'].replace(/%s/, textParts[1]) - + ''; - }, - - replaceCommandPrivMsg: function(textParts) { - var privMsgText = textParts.slice(1).join(' '); - privMsgText = this.replaceBBCode(privMsgText); - privMsgText = this.replaceHyperLinks(privMsgText); - privMsgText = this.replaceEmoticons(privMsgText); - return '' - + this.lang['privmsg'] - + ' ' - + privMsgText; - }, - - replaceCommandPrivMsgTo: function(textParts) { - var privMsgText = textParts.slice(2).join(' '); - privMsgText = this.replaceBBCode(privMsgText); - privMsgText = this.replaceHyperLinks(privMsgText); - privMsgText = this.replaceEmoticons(privMsgText); - return '' - + this.lang['privmsgto'].replace(/%s/, textParts[1]) - + ' ' - + privMsgText; - }, - - replaceCommandPrivAction: function(textParts) { - var privActionText = textParts.slice(1).join(' '); - privActionText = this.replaceBBCode(privActionText); - privActionText = this.replaceHyperLinks(privActionText); - privActionText = this.replaceEmoticons(privActionText); - return '' - + privActionText - + ' ' - + this.lang['privmsg'] - + ' '; - }, - - replaceCommandPrivActionTo: function(textParts) { - var privActionText = textParts.slice(2).join(' '); - privActionText = this.replaceBBCode(privActionText); - privActionText = this.replaceHyperLinks(privActionText); - privActionText = this.replaceEmoticons(privActionText); - return '' - + privActionText - + ' ' - + this.lang['privmsgto'].replace(/%s/, textParts[1]) - + ' '; - }, - - replaceCommandAction: function(textParts) { - var actionText = textParts.slice(1).join(' '); - actionText = this.replaceBBCode(actionText); - actionText = this.replaceHyperLinks(actionText); - actionText = this.replaceEmoticons(actionText); - return '' - + actionText - + ''; - }, - - replaceCommandInvite: function(textParts) { - var inviteText = this.lang['invite'] - .replace(/%s/, textParts[1]) - .replace( - /%s/, - '' - + textParts[2] - + '' - ); - return '' - + inviteText - + ''; - }, - - replaceCommandInviteTo: function(textParts) { - var inviteText = this.lang['inviteto'] - .replace(/%s/, textParts[1]) - .replace(/%s/, textParts[2]); - return '' - + inviteText - + ''; - }, - - replaceCommandUninvite: function(textParts) { - var uninviteText = this.lang['uninvite'] - .replace(/%s/, textParts[1]) - .replace(/%s/, textParts[2]); - return '' - + uninviteText - + ''; - }, - - replaceCommandUninviteTo: function(textParts) { - var uninviteText = this.lang['uninviteto'] - .replace(/%s/, textParts[1]) - .replace(/%s/, textParts[2]); - return '' - + uninviteText - + ''; - }, - - replaceCommandQueryOpen: function(textParts) { - return '' - + this.lang['queryOpen'].replace(/%s/, textParts[1]) - + ''; - }, - - replaceCommandQueryClose: function(textParts) { - return '' - + this.lang['queryClose'].replace(/%s/, textParts[1]) - + ''; - }, - - replaceCommandIgnoreAdded: function(textParts) { - return '' - + this.lang['ignoreAdded'].replace(/%s/, textParts[1]) - + ''; - }, - - replaceCommandIgnoreRemoved: function(textParts) { - return '' - + this.lang['ignoreRemoved'].replace(/%s/, textParts[1]) - + ''; - }, - - replaceCommandIgnoreList: function(textParts) { - return '' - + this.lang['ignoreList'] + ' ' - + this.getInlineUserMenu(textParts.slice(1)) - + ''; - }, - - replaceCommandIgnoreListEmpty: function(textParts) { - return '' - + this.lang['ignoreListEmpty'] - + ''; - }, - - replaceCommandKick: function(textParts) { - return '' - + this.lang['logoutKicked'].replace(/%s/, textParts[1]) - + ''; - }, - - replaceCommandWho: function(textParts) { - return '' - + this.lang['who'] + ' ' - + this.getInlineUserMenu(textParts.slice(1)) - + ''; - }, - - replaceCommandWhoChannel: function(textParts) { - return '' - + this.lang['whoChannel'].replace(/%s/, textParts[1]) + ' ' - + this.getInlineUserMenu(textParts.slice(2)) - + ''; - }, - - replaceCommandWhoEmpty: function(textParts) { - return '' - + this.lang['whoEmpty'] - + ''; - }, - - replaceCommandList: function(textParts) { - var channels = textParts.slice(1); - var listChannels = []; - var channelName; - for(var i=0; i'+channels[i]+'' : channels[i]; - listChannels.push( - '' - + channelName - + '' - ); - } - return '' - + this.lang['list'] + ' ' - + listChannels.join(', ') - + ''; - }, - - replaceCommandBans: function(textParts) { - var users = textParts.slice(1); - var listUsers = []; - for(var i=0; i' - + users[i] - + '' - ); - } - return '' - + this.lang['bans'] + ' ' - + listUsers.join(', ') - + ''; - }, - - replaceCommandBansEmpty: function(textParts) { - return '' - + this.lang['bansEmpty'] - + ''; - }, - - replaceCommandUnban: function(textParts) { - return '' - + this.lang['unban'].replace(/%s/, textParts[1]) - + ''; - }, - - replaceCommandWhois: function(textParts) { - return '' - + this.lang['whois'].replace(/%s/, textParts[1]) + ' ' - + textParts[2] - + ''; - }, - - replaceCommandWhereis: function(textParts) { - return '' - + this.lang['whereis'].replace(/%s/, textParts[1]).replace( - /%s/, - '' - + textParts[2] - + '' - ) - + ''; - }, - - replaceCommandRoll: function(textParts) { - var rollText = this.lang['roll'].replace(/%s/, textParts[1]); - rollText = rollText.replace(/%s/, textParts[2]); - rollText = rollText.replace(/%s/, textParts[3]); - return '' - + rollText - + ''; - }, - - replaceCommandNick: function(textParts) { - return '' - + this.lang['nick'].replace(/%s/, textParts[1]).replace(/%s/, textParts[2]) - + ''; - }, - - replaceCommandError: function(textParts) { - var errorMessage = this.lang['error'+textParts[1]]; - if(!errorMessage) { - errorMessage = 'Error: Unknown.'; - } else if(textParts.length > 2) { - errorMessage = errorMessage.replace(/%s/, textParts.slice(2).join(' ')); - } - return '' - + errorMessage - + ''; - }, - - getInlineUserMenu: function(users) { - var menu = ''; - for(var i=0; i0) { - menu += ', '; - } - menu += '' - + ((users[i] === this.userName) ? ''+users[i]+'' : users[i]) - + '' - + ''; - } - this.userMenuCounter++; - return menu; - }, - - containsUnclosedTags: function(str) { - var openTags, closeTags, - regExpOpenTags = /<[^>\/]+?>/gm, - regExpCloseTags = /<\/[^>]+?>/gm; - - openTags = str.match(regExpOpenTags); - closeTags = str.match(regExpCloseTags); - // Return true if the number of tags doesn't match: - if((!openTags && closeTags) || - (openTags && !closeTags) || - (openTags && closeTags && (openTags.length !== closeTags.length))) { - return true; - } - return false; - }, - - breakLongWords: function(text) { - var newText, charCounter, currentChar, withinTag, withinEntity, i; - - if(!this.settings['wordWrap']) - return text; - - newText = ''; - charCounter = 0; - - for(i=0; i): - if(i>5 && text.substr(i-5,4) === '
    0 && text.charAt(i-1) === '>') { - withinTag = false; - // Reset the charCounter after newline tags (
    ): - if(i>4 && text.substr(i-5,4) === '
    0 && text.charAt(i-1) === ';') { - withinEntity = false; - // We only increase the charCounter once for the whole entiy: - charCounter++; - } - - if(!withinTag && !withinEntity) { - // Reset the charCounter if we encounter a word boundary: - if(currentChar === ' ' || currentChar === '\n' || currentChar === '\t') { - charCounter = 0; - } else { - // We are not within a tag or entity, increase the charCounter: - charCounter++; - } - if(charCounter > this.settings['maxWordLength']) { - // maxWordLength has been reached, break here and reset the charCounter: - newText += '​'; - charCounter = 0; - } - } - // Add the current char to the text: - newText += currentChar; - } - - return newText; - }, - - replaceBBCode: function(text) { - if(!this.settings['bbCode']) { - // If BBCode is disabled, just strip the text from BBCode tags: - return text.replace(/\[(?:\/)?(\w+)(?:=([^<>]*?))?\]/, ''); - } - // Remove the BBCode tags: - return text.replace( - /\[(\w+)(?:=([^<>]*?))?\](.+?)\[\/\1\]/gm, - this.replaceBBCodeCallback - ); - }, - - replaceBBCodeCallback: function(str, p1, p2, p3) { - // Only replace predefined BBCode tags: - if(!ajaxChat.inArray(ajaxChat.bbCodeTags, p1)) { - return str; - } - // Avoid invalid XHTML (unclosed tags): - if(ajaxChat.containsUnclosedTags(p3)) { - return str; - } - switch(p1) { - case 'color': - return ajaxChat.replaceBBCodeColor(p3, p2); - case 'url': - return ajaxChat.replaceBBCodeUrl(p3, p2); - case 'img': - return ajaxChat.replaceBBCodeImage(p3); - case 'quote': - return ajaxChat.replaceBBCodeQuote(p3, p2); - case 'code': - return ajaxChat.replaceBBCodeCode(p3); - case 'u': - return ajaxChat.replaceBBCodeUnderline(p3); - default: - return ajaxChat.replaceCustomBBCode(p1, p2, p3); - } - }, - - replaceBBCodeColor: function(content, attribute) { - if(this.settings['bbCodeColors']) { - // Only allow predefined color codes: - if(!attribute || !this.inArray(ajaxChat.colorCodes, attribute)) - return content; - return '' - + this.replaceBBCode(content) - + ''; - } - return content; - }, - - replaceBBCodeUrl: function(content, attribute) { - var url, regExpUrl; - if(attribute) - url = attribute.replace(/\s/gm, this.encodeText(' ')); - else - url = this.stripBBCodeTags(content.replace(/\s/gm, this.encodeText(' '))); - regExpUrl = new RegExp( - '^(?:(?:http)|(?:https)|(?:ftp)|(?:irc)):\\/\\/', - '' - ); - if(!url || !url.match(regExpUrl)) - return content; - return '' - + this.replaceBBCode(content) - + ''; - }, - - replaceBBCodeImage: function(url) { - var regExpUrl, maxWidth, maxHeight; - if(this.settings['bbCodeImages']) { - regExpUrl = new RegExp( - this.regExpMediaUrl, - '' - ); - if(!url || !url.match(regExpUrl)) - return url; - url = url.replace(/\s/gm, this.encodeText(' ')); - maxWidth = this.dom['chatList'].offsetWidth-50; - maxHeight = this.dom['chatList'].offsetHeight-50; - return '' - +''; - } - return url; - }, - - replaceBBCodeQuote: function(content, attribute) { - if(attribute) - return '' - + this.lang['cite'].replace(/%s/, attribute) - + '' - + this.replaceBBCode(content) - + ''; - return '' - + this.replaceBBCode(content) - + ''; - }, - - replaceBBCodeCode: function(content) { - // Replace vertical tabs and multiple spaces with two non-breaking space characters: - return '' - + this.replaceBBCode(content.replace(/\t|(?: )/gm, '  ')) - + ''; - }, - - replaceBBCodeUnderline: function(content) { - return '' - + this.replaceBBCode(content) - + ''; - }, - - replaceHyperLinks: function(text) { - var regExp; - if(!this.settings['hyperLinks']) { - return text; - } - regExp = new RegExp( - '(^|\\s|>)((?:(?:http)|(?:https)|(?:ftp)|(?:irc)):\\/\\/[^\\s<>]+)(<\\/a>)?', - 'gm' - ); - return text.replace( - regExp, - // Specifying an anonymous function as second parameter: - function(str, p1, p2, p3) { - // Do not replace URL's inside URL's: - if(p3) { - return str; - } - return p1 - + '' - + p2 - + ''; - } - ); - }, - - replaceLineBreaks: function(text) { - var regExp = new RegExp('\\n', 'g'); - - if(!this.settings['lineBreaks']) { - return text.replace(regExp, ' '); - } else { - return text.replace(regExp, '
    '); - } - }, - - replaceEmoticons: function(text) { - if(!this.settings['emoticons']) { - return text; - } - if(!arguments.callee.regExp) { - var regExpStr = '^(.*)('; - for(var i=0; i' - + ajaxChat.replaceEmoticons(p3); - } - return str; - }, - - getActiveStyle: function() { - var cookie = this.readCookie(this.sessionName + '_style'); - var style = cookie ? cookie : this.getPreferredStyleSheet(); - return style; - }, - - initStyle: function() { - this.styleInitiated = true; - this.setActiveStyleSheet(this.getActiveStyle()); - }, - - persistStyle: function() { - if(this.styleInitiated) { - this.createCookie(this.sessionName + '_style', this.getActiveStyleSheet(), this.cookieExpiration); - } - }, - - setSelectedStyle: function() { - if(this.dom['styleSelection']) { - var style = this.getActiveStyle(); - var styleOptions = this.dom['styleSelection'].getElementsByTagName('option'); - for(var i=0; imenuItem ) - // encodedUserName contains the userName ready to be used for javascript links - // userID is only available for the online users menu - not for the inline user menu - // use (encodedUserName == this.encodedUserName) to check for the current user - getCustomUserMenuItems: function(encodedUserName, userID) { - return ''; - }, - - // Override to parse custom input messages: - // Return replaced text - // text contains the whole message - parseCustomInputMessage: function(text) { - return text; - }, - - // Override to parse custom input commands: - // Return parsed text - // text contains the whole message, textParts the message split up as words array - parseCustomInputCommand: function(text, textParts) { - return text; - }, - - // Override to replace custom text: - // Return replaced text - // text contains the whole message - replaceCustomText: function(text) { - return text; - }, - - // Override to replace custom commands: - // Return replaced text for custom commands - // text contains the whole message, textParts the message split up as words array - replaceCustomCommands: function(text, textParts) { - return text; - }, - - // Override to replace custom BBCodes: - // Return replaced text and call replaceBBCode recursively for the content text - // tag contains the BBCode tag, attribute the BBCode attribute and content the content text - // This method is only called for BBCode tags which are in the bbCodeTags list - replaceCustomBBCode: function(tag, attribute, content) { - return '<' + tag + '>' + this.replaceBBCode(content) + ''; - }, - - // Override to perform custom actions on new messages: - // Return true if message is to be added to the chatList, else false - customOnNewMessage: function(dateObject, userID, userName, userRole, messageID, messageText, channelID, ip) { - return true; - } - -}; \ No newline at end of file diff --git a/library/ajaxchat/chat/js/config.js b/library/ajaxchat/chat/js/config.js deleted file mode 100644 index a4d3c3f75..000000000 --- a/library/ajaxchat/chat/js/config.js +++ /dev/null @@ -1,261 +0,0 @@ -/* - * @package AJAX_Chat - * @author Sebastian Tschan - * @copyright (c) Sebastian Tschan - * @license Modified MIT License - * @link https://blueimp.net/ajax/ - */ - -// Ajax Chat config parameters: -var ajaxChatConfig = { - - // The channelID of the channel to enter on login (the loginChannelName is used if set to null): - loginChannelID: null, - // The channelName of the channel to enter on login (the default channel is used if set to null): - loginChannelName: null, - - // The time in ms between update calls to retrieve new chat messages: - timerRate: 2000, - - // The URL to retrieve the XML chat messages (must at least contain one parameter): - ajaxURL: './?ajax=true', - // The base URL of the chat directory, used to retrieve media files (images, sound files, etc.): - baseURL: './', - - // A regular expression for allowed source URL's for media content (e.g. images displayed inline); - regExpMediaUrl: '^((http)|(https)):\\/\\/', - - // If set to false the chat update is delayed until the event defined in ajaxChat.setStartChatHandler(): - startChatOnLoad: true, - - // Defines the IDs of DOM nodes accessed by the chat: - domIDs: { - // The ID of the chat messages list: - chatList: 'chatList', - // The ID of the online users list: - onlineList: 'onlineList', - // The ID of the message text input field: - inputField: 'inputField', - // The ID of the message text length counter: - messageLengthCounter: 'messageLengthCounter', - // The ID of the channel selection: - channelSelection: 'channelSelection', - // The ID of the style selection: - styleSelection: 'styleSelection', - // The ID of the emoticons container: - emoticonsContainer: 'emoticonsContainer', - // The ID of the color codes container: - colorCodesContainer: 'colorCodesContainer', - // The ID of the flash interface container: - flashInterfaceContainer: 'flashInterfaceContainer' - }, - - // Defines the settings which can be modified by users: - settings: { - // Defines if BBCode tags are replaced with the associated HTML code tags: - bbCode: true, - // Defines if image BBCode is replaced with the associated image HTML code: - bbCodeImages: true, - // Defines if color BBCode is replaced with the associated color HTML code: - bbCodeColors: true, - // Defines if hyperlinks are made clickable: - hyperLinks: true, - // Defines if line breaks are enabled: - lineBreaks: true, - // Defines if emoticon codes are replaced with their associated images: - emoticons: true, - - // Defines if the focus is automatically set to the input field on chat load or channel switch: - autoFocus: true, - // Defines if the chat list scrolls automatically to display the latest messages: - autoScroll: true, - // The maximum count of messages displayed in the chat list (will be ignored if set to 0): - maxMessages: 0, - - // Defines if long words are wrapped to avoid vertical scrolling: - wordWrap: true, - // Defines the maximum length before a word gets wrapped: - maxWordLength: 32, - - // Defines the format of the date and time displayed for each chat message: - dateFormat: '(%H:%i:%s)', - - // Defines if font colors persist without the need to assign them to each message: - persistFontColor: false, - // The default font color, uses the page default font color if set to null: - fontColor: null, - - // Defines if sounds are played: - audio: true, - // Defines the sound volume (0.0 = mute, 1.0 = max): - audioVolume: 1.0, - - // Defines the sound that is played when normal messages are reveived: - soundReceive: 'sound_1', - // Defines the sound that is played on sending normal messages: - soundSend: 'sound_2', - // Defines the sound that is played on channel enter or login: - soundEnter: 'sound_3', - // Defines the sound that is played on channel leave or logout: - soundLeave: 'sound_4', - // Defines the sound that is played on chatBot messages: - soundChatBot: 'sound_5', - // Defines the sound that is played on error messages: - soundError: 'sound_6', - - // Defines if the document title blinks on new messages: - blink: true, - // Defines the blink interval in ms: - blinkInterval: 500, - // Defines the number of blink intervals: - blinkIntervalNumber: 10 - }, - - // Defines a list of settings which are not to be stored in a session cookie: - nonPersistentSettings: [], - - // Defines the list of allowed BBCodes: - bbCodeTags:[ - 'b', - 'i', - 'u', - 'quote', - 'code', - 'color', - 'url', - 'img' - ], - - // Defines the list of allowed color codes: - colorCodes: [ - 'gray', - 'silver', - 'white', - 'yellow', - 'orange', - 'red', - 'fuchsia', - 'purple', - 'navy', - 'blue', - 'aqua', - 'teal', - 'green', - 'lime', - 'olive', - 'maroon', - 'black' - ], - - // Defines the list of allowed emoticon codes: - emoticonCodes: [ - ':)', - ':(', - ';)', - ':P', - ':D', - ':|', - ':O', - ':?', - '8)', - '8o', - 'B)', - ':-)', - ':-(', - ':-*', - 'O:-D', - '>:-D', - ':o)', - ':idea:', - ':important:', - ':help:', - ':error:', - ':warning:', - ':favorite:' - ], - - // Defines the list of emoticon files associated with the emoticon codes: - emoticonFiles: [ - 'smile.png', - 'sad.png', - 'wink.png', - 'razz.png', - 'grin.png', - 'plain.png', - 'surprise.png', - 'confused.png', - 'glasses.png', - 'eek.png', - 'cool.png', - 'smile-big.png', - 'crying.png', - 'kiss.png', - 'angel.png', - 'devilish.png', - 'monkey.png', - 'idea.png', - 'important.png', - 'help.png', - 'error.png', - 'warning.png', - 'favorite.png' - ], - - // Defines the available sounds loaded on chat start: - soundFiles: { - sound_1: 'sound_1.mp3', - sound_2: 'sound_2.mp3', - sound_3: 'sound_3.mp3', - sound_4: 'sound_4.mp3', - sound_5: 'sound_5.mp3', - sound_6: 'sound_6.mp3' - }, - - - // Once users have been logged in, the following values are overridden by those in config.php. - // You should set these to be the same as the ones in config.php to avoid confusion. - - // Session identification, used for style and setting cookies: - sessionName: 'ajax_chat', - - // The time in days until the style and setting cookies expire: - cookieExpiration: 365, - // The path of the cookies, '/' allows to read the cookies from all directories: - cookiePath: '/', - // The domain of the cookies, defaults to the hostname of the server if set to null: - cookieDomain: null, - // If enabled, cookies must be sent over secure (SSL/TLS encrypted) connections: - cookieSecure: null, - - // The name of the chat bot: - chatBotName: 'ChatBot', - // The userID of the chat bot: - chatBotID: 2147483647, - - // Allow/Disallow registered users to delete their own messages: - allowUserMessageDelete: true, - - // Minutes until a user is declared inactive (last status update) - the minimum is 2 minutes: - inactiveTimeout: 2, - - // UserID plus this value are private channels (this is also the max userID and max channelID): - privateChannelDiff: 500000000, - // UserID plus this value are used for private messages: - privateMessageDiff: 1000000000, - - // Defines if login/logout and channel enter/leave are displayed: - showChannelMessages: true, - - // Max messageText length: - messageTextMaxLength: 1040, - - // Defines if the socket server is enabled: - socketServerEnabled: false, - // Defines the hostname of the socket server used to connect from client side: - socketServerHost: 'localhost', - // Defines the port of the socket server: - socketServerPort: 1935, - // This ID can be used to distinguish between different chat installations using the same socket server: - socketServerChatID: 0 - -} \ No newline at end of file diff --git a/library/ajaxchat/chat/js/custom.js b/library/ajaxchat/chat/js/custom.js deleted file mode 100644 index 6d801534e..000000000 --- a/library/ajaxchat/chat/js/custom.js +++ /dev/null @@ -1,16 +0,0 @@ -/* - * @package AJAX_Chat - * @author Sebastian Tschan - * @copyright (c) Sebastian Tschan - * @license Modified MIT License - * @link https://blueimp.net/ajax/ - */ - -// Overriding client side functionality: - -/* -// Example - Overriding the replaceCustomCommands method: -ajaxChat.replaceCustomCommands = function(text, textParts) { - return text; -} - */ \ No newline at end of file diff --git a/library/ajaxchat/chat/js/index.html b/library/ajaxchat/chat/js/index.html deleted file mode 100644 index e69de29bb..000000000 diff --git a/library/ajaxchat/chat/js/lang/ar.js b/library/ajaxchat/chat/js/lang/ar.js deleted file mode 100644 index 7fd18db10..000000000 --- a/library/ajaxchat/chat/js/lang/ar.js +++ /dev/null @@ -1,92 +0,0 @@ -/* - * @package AJAX_Chat - * @author Sebastian Tschan - * @author pepotiger (www.dd4bb.com) - * @copyright (c) Sebastian Tschan - * @license Modified MIT License - * @link https://blueimp.net/ajax/ - */ - -// Ajax Chat language Object: -var ajaxChatLang = { - - login: '%s دخول.', - logout: '%s خروج.', - logoutTimeout: '%s تم تسجيل الخروج (Timeout).', - logoutIP: '%s تم تسجيل الخروج (Invalid IP address).', - logoutKicked: '%s تم تسجيل الخروج (Kicked).', - channelEnter: '%s دخول المحطة.', - channelLeave: '%s خروج.', - privmsg: '(رسالة خاصة)', - privmsgto: '(رسالة خاصة الى %s)', - invite: '%s يدعوك الى %s.', - inviteto: 'دعوتك لـ %s للإنضمام الى %s تم ارسالها.', - uninvite: '%s الغاء دعوتك من %s.', - uninviteto: 'الغاء الدعوة من %s للـ %s تم ارسالها.', - queryOpen: 'تم فتح نافذة خاصة مع %s.', - queryClose: 'النافذة الخاصة مع %s تم غلقها.', - ignoreAdded: 'اضيف %s الى قائمة التجاهل.', - ignoreRemoved: 'حذف %s من قائمة التجاهل.', - ignoreList: 'اعضاء متجاهلين:', - ignoreListEmpty: 'لا يوجد اعضاء تم تجاهلهم.', - who: 'المستخدمين المتواجدين:', - whoChannel: 'Online Users in channel %s:', - whoEmpty: 'لا يوجد اعضاء بهذه المحطة.', - list: 'المحطات المتوفرة:', - bans: 'اعضاء محجوبين:', - bansEmpty: 'لا يوجد اعضاء محجوبين.', - unban: 'حظر العضو %s تم الغائه.', - whois: 'الأى بى للعضو %s:', - whereis: 'User %s is in channel %s.', - roll: '%s rolls %s and gets %s.', - nick: '%s is now known as %s.', - toggleUserMenu: 'Toggle user menu for %s', - userMenuLogout: 'Logout', - userMenuWho: 'List online users', - userMenuList: 'List available channels', - userMenuAction: 'Describe action', - userMenuRoll: 'Roll dice', - userMenuNick: 'Change username', - userMenuEnterPrivateRoom: 'Enter private room', - userMenuSendPrivateMessage: 'Send private message', - userMenuDescribe: 'Send private action', - userMenuOpenPrivateChannel: 'Open private channel', - userMenuClosePrivateChannel: 'Close private channel', - userMenuInvite: 'Invite', - userMenuUninvite: 'Uninvite', - userMenuIgnore: 'Ignore/Accept', - userMenuIgnoreList: 'List ignored users', - userMenuWhereis: 'Display channel', - userMenuKick: 'Kick/Ban', - userMenuBans: 'List banned users', - userMenuWhois: 'Display IP', - unbanUser: 'Revoke ban of user %s', - joinChannel: 'الإنضمام للمحطة %s', - cite: '%s كتب:', - urlDialog: 'من فضلك ادخل الرابط (URL) لعنوان الأنترنت:', - deleteMessage: 'Delete this chat message', - deleteMessageConfirm: 'Really delete the selected chat message?', - errorCookiesRequired: 'الكوكييز مطلوبة لهذا الشات.', - errorUserNameNotFound: 'خطأ: العضو %s لم يتم العثور عليه.', - errorMissingText: 'خطأ: نص الرسالة مفقود.', - errorMissingUserName: 'خطأ: اسم المستخدم مفقود.', - errorInvalidUserName: 'Error: Invalid username.', - errorUserNameInUse: 'Error: Username already in use.', - errorMissingChannelName: 'خطأ: اسم المحطة مفقود.', - errorInvalidChannelName: 'خطأ: اسم المحطة غير صحيح: %s', - errorPrivateMessageNotAllowed: 'خطأ: غير مسموح بالرسائل الخاصة.', - errorInviteNotAllowed: 'خطأ: غير مسموح بدعوة الأخرين.', - errorUninviteNotAllowed: 'خطأ: غير مسموح بإلغاء دعوات الأخرين.', - errorNoOpenQuery: 'خطأ: لم يتم فتح اى نوافذ خاصة.', - errorKickNotAllowed: 'خطأ: غير مسموح لك بطرد احد %s.', - errorCommandNotAllowed: 'خطأ: غير مسموح بالأمر: %s', - errorUnknownCommand: 'خطأ: امر غير معروف: %s', - errorMaxMessageRate: 'Error: You exceeded the maximum number of messages per minute.', - errorConnectionTimeout: 'خطأ: وقت الأتصال استنفذ. من فضلك حاول مرة اخرى.', - errorConnectionStatus: 'خطأ: حالة الأتصال: %s', - errorSoundIO: 'Error: Failed to load sound file (Flash IO Error).', - errorSocketIO: 'Error: Connection to socket server failed (Flash IO Error).', - errorSocketSecurity: 'Error: Connection to socket server failed (Flash Security Error).', - errorDOMSyntax: 'Error: Invalid DOM Syntax (DOM ID: %s).' - -} \ No newline at end of file diff --git a/library/ajaxchat/chat/js/lang/bg.js b/library/ajaxchat/chat/js/lang/bg.js deleted file mode 100644 index c1e1886ad..000000000 --- a/library/ajaxchat/chat/js/lang/bg.js +++ /dev/null @@ -1,92 +0,0 @@ -/* - * @package AJAX_Chat - * @author Sebastian Tschan - * @author Borislav Manolov - * @copyright (c) Sebastian Tschan - * @license Modified MIT License - * @link https://blueimp.net/ajax/ - */ - -// Ajax Chat language Object: -var ajaxChatLang = { - - login: '%s влезе в чата.', - logout: '%s излезе от чата.', - logoutTimeout: '%s излезе автоматично от чата (Изтичане на времето).', - logoutIP: '%s излезе автоматично от чата (Грешен айпи адрес).', - logoutKicked: '%s излезе автоматично от чата (Изритване).', - channelEnter: '%s влезе в канала.', - channelLeave: '%s напусна канала.', - privmsg: '(прошепва)', - privmsgto: '(прошепва на %s)', - invite: '%s ви кани да се присъедините към %s.', - inviteto: 'Поканата ви към %s да се присъедини към канала %s беше изпратена.', - uninvite: '%s отмени поканата ви за канала %s.', - uninviteto: 'Отмяната на поканата ви към %s за канала %s беше изпратена.', - queryOpen: 'Отворен е личен канал за %s.', - queryClose: 'Затворен е личен канал за %s.', - ignoreAdded: '%s беше добавен към списъка с пренебрегнатите.', - ignoreRemoved: '%s беше изваден от списъка с пренебрегнатите.', - ignoreList: 'Пренебрегнати потребители:', - ignoreListEmpty: 'Няма пренебрегнати потребители.', - who: 'Потребители на линия:', - whoChannel: 'Потребители на линия в канала %s:', - whoEmpty: 'В дадения канал няма потребители на линия.', - list: 'Налични канали:', - bans: 'Изгонени потребители:', - bansEmpty: 'Няма изгонени потребители.', - unban: 'Изгонването на потребителя %s е отменено.', - whois: 'Потребител %s — айпи адрес:', - whereis: 'Потребителят %s е в канала %s.', - roll: '%s хвърли %s и получи %s.', - nick: '%s вече се казва %s.', - toggleUserMenu: 'Показване/скриване на потребителското меню за %s', - userMenuLogout: 'Изход', - userMenuWho: 'Потребители на линия', - userMenuList: 'Налични канали', - userMenuAction: 'Описване на действие', - userMenuRoll: 'Хвърляне на зар', - userMenuNick: 'Смяна на името', - userMenuEnterPrivateRoom: 'Влизане в личната стая', - userMenuSendPrivateMessage: 'Изпращане на лично съобщение', - userMenuDescribe: 'Изпращане на лично действие', - userMenuOpenPrivateChannel: 'Отваряне на личен канал', - userMenuClosePrivateChannel: 'Затваряне на личен канал', - userMenuInvite: 'Покана', - userMenuUninvite: 'Отмяна на покана', - userMenuIgnore: 'Пренебрегване/Приемане', - userMenuIgnoreList: 'Пренебрегнати потребители', - userMenuWhereis: 'Преглед на канал', - userMenuKick: 'Изритване/Изгонване', - userMenuBans: 'Изгонени потребители', - userMenuWhois: 'Преглед на айпи адреса', - unbanUser: 'Отмяна на изгонването на %s', - joinChannel: 'Присъединяване към канала %s', - cite: '%s каза:', - urlDialog: 'Моля, въведете адреса (URL) на страницата:', - deleteMessage: 'Изтриване на съобщението', - deleteMessageConfirm: 'Наистина ли желаете да изтриете съобщението?', - errorCookiesRequired: 'За чата се изискват бисквитки (cookies).', - errorUserNameNotFound: 'Грешка: Не е намерен потребител %s.', - errorMissingText: 'Грешка: Липсва текст на съобщението.', - errorMissingUserName: 'Грешка: Липсва потребителско име.', - errorInvalidUserName: 'Грешка: Невалидно потребителско име.', - errorUserNameInUse: 'Грешка: Това потребителско име вече се използва.', - errorMissingChannelName: 'Грешка: Липсва име на канал.', - errorInvalidChannelName: 'Грешка: Невалидно име на канал: %s', - errorPrivateMessageNotAllowed: 'Грешка: Личните съобщения не са позволени.', - errorInviteNotAllowed: 'Грешка: Не ви е позволено да каните потребители в този канал.', - errorUninviteNotAllowed: 'Грешка: Не ви е позволено да отменяте покани в този канал.', - errorNoOpenQuery: 'Грешка: Не е отворен личен канал.', - errorKickNotAllowed: 'Грешка: Не ви е позволено да изритвате %s.', - errorCommandNotAllowed: 'Грешка: Командата не е позволена: %s', - errorUnknownCommand: 'Грешка: Непозната команда: %s', - errorMaxMessageRate: 'Грешка: Превишихте допустимия брой съобщения в минута.', - errorConnectionTimeout: 'Грешка: Изтичане на времето за връзка. Моля, опитайте отново!', - errorConnectionStatus: 'Грешка: Състояние на връзката: %s', - errorSoundIO: 'Грешка: Неуспешно зареждане на звуковия файл (Входно-изходна грешка при Флаш).', - errorSocketIO: 'Грешка: Неуспешна връзка към сокетния сървър (Входно-изходна грешка при Флаш).', - errorSocketSecurity: 'Грешка: Неуспешна връзка към сокетния сървър (Грешка в сигурността при Флаш).', - errorDOMSyntax: 'Грешка: Неправилен синтаксис при DOM (DOM ID: %s).' - -} \ No newline at end of file diff --git a/library/ajaxchat/chat/js/lang/ca.js b/library/ajaxchat/chat/js/lang/ca.js deleted file mode 100644 index 83eab4df5..000000000 --- a/library/ajaxchat/chat/js/lang/ca.js +++ /dev/null @@ -1,91 +0,0 @@ -/* - * @package AJAX_Chat - * @author Sebastian Tschan - * @author Manu Quintans - * @copyright (c) Sebastian Tschan - * @license Modified MIT License - * @link https://blueimp.net/ajax/ - */ - -// Ajax Chat language Object: -var ajaxChatLang = { - login: '%s ha entrat al xat.', - logout: '%s ha sortit del xat.', - logoutTimeout: '%s s\'ha desconnectat (Temps d\'espera esgotat).', - logoutIP: '%s s\'ha desconnectat (Adreça IP no vàlida).', - logoutKicked: '%s s\'ha desconnectat (Patejat).', - channelEnter: '%s entra al canal.', - channelLeave: '%s se\'n va del canal.', - privmsg: '(xiuxiueigs)', - privmsgto: '(xiuxiueigs a %s)', - invite: '%s et convida a unir-te a %s.', - inviteto: 'El teu convit a %s per a unir-se a %s ha estat enviat.', - uninvite: '%s no et convida a %s.', - uninviteto: 'El teu no convit a %s per al canal %s ha estat enviat', - queryOpen: 'Canal privat obert %s.', - queryClose: 'Canal privat tancat %s tancat', - ignoreAdded: 'Agregat %s a la llista de usuaris ignorats.', - ignoreRemoved: 'Eliminant %s de la llista de usuaris ignorats.', - ignoreList: 'Usuaris ignorats', - ignoreListEmpty: 'Llista d\'usuaris no ignorats.', - who: 'Usuaris connectats:', - whoChannel: 'Usuaris en línia al canal %s:', - whoEmpty: 'No hi ha usuaris connectats ara.', - list: 'Canals disponibles:', - bans: 'Usuaris Bannejats:', - bansEmpty: 'No s\'han registrat usuaris bannejats.', - unban: 'Ban de l\'usuari %s revocat.', - whois: 'Usuari %s - Adreça IP:', - whereis: 'L\'usuari %s és al canal %s.', - roll: '%s tirà els daus %s i aconsegueix %s.', - nick: '%s es fa dir ara %s.', - toggleUserMenu: 'Tanca menu de l\'usuari per a %s', - userMenuLogout: 'Tancar sessió', - userMenuWho: 'Llista d\'usuaris en línia', - userMenuList: 'Llista de canals disponibles', - userMenuAction: 'Descriure una acció', - userMenuRoll: 'Tirar daus', - userMenuNick: 'Canviar el nom de l\'usuari', - userMenuEnterPrivateRoom: 'Entrar en un lloc privat', - userMenuSendPrivateMessage: 'Enviar un missatge privat', - userMenuDescribe: 'Enviar una acció privada', - userMenuOpenPrivateChannel: 'Obrir un canal privat', - userMenuClosePrivateChannel: 'Tancar un canal privat', - userMenuInvite: 'Convidar', - userMenuUninvite: 'Desconvidar', - userMenuIgnore: 'Ignorar/Acceptar', - userMenuIgnoreList: 'Llista d\'usuaris ignorats', - userMenuWhereis: 'Visualitzar el canal', - userMenuKick: 'Pateig/Banneig', - userMenuBans: 'Llista d\'usuaris banejats', - userMenuWhois: 'Mostrar IP', - unbanUser: 'Cancel·lar banejament de usuari %s', - joinChannel: 'Unir-se al canal %s', - cite: '%s va dir:', - urlDialog: 'Si us plau, introdueix la adreça (URL) de la pàgina web:', - deleteMessage: 'Esborra aquest missatge', - deleteMessageConfirm: 'Realment vols esborrar el missatge seleccionat?', - errorCookiesRequired: 'Les galetes són necessaries per aquest xat .', - errorUserNameNotFound: 'Error: usuari %s no s\'ha trobat.', - errorMissingText: 'Error: Missatge perdut.', - errorMissingUserName: 'Error: Usuari no trobat.', - errorInvalidUserName: 'Error: Nom d\'usuari no vàlid.', - errorUserNameInUse: 'Error: El nom d\'usuari ja està en ús.', - errorMissingChannelName: 'Error: No es troba el canal.', - errorInvalidChannelName: 'Error: nombre del canal invàlid: %s', - errorPrivateMessageNotAllowed: 'Error: Els missatges privats no t\'estan permesos.', - errorInviteNotAllowed: 'Error: No t\'està permés convidar a ningú a aquest canal.', - errorUninviteNotAllowed: 'Error: No t\'està permés desconvidar ningú d\'aquest canal.', - errorNoOpenQuery: 'Error: Cap canal privat obert.', - errorKickNotAllowed: 'Error: No t\'està permés expulsar a ningú %s.', - errorCommandNotAllowed: 'Error: Ordre desconeguda: %s', - errorUnknownCommand: 'Error: Ordre desconeguda: %s', - errorMaxMessageRate: 'Error: has excedit el màxim nombre de missatges per minut.', - errorConnectionTimeout: 'Error: Temps d\'espera de la connexió expirat. Reintenta-ho de nou.', - errorConnectionStatus: 'Error: Estat de la connexió: %s', - errorSoundIO: 'Error: No ha estat possible carregar el so (Flash IO Error).', - errorSocketIO: 'Error: La connexió al servidor ha fallat (Flash IO Error).', - errorSocketSecurity: 'Error: La connexió al servidor ha fallat (Flash Security Error).', - errorDOMSyntax: 'Error: Sintaxi DOM invàlida (DOM ID: %s).' - -} \ No newline at end of file diff --git a/library/ajaxchat/chat/js/lang/cy.js b/library/ajaxchat/chat/js/lang/cy.js deleted file mode 100644 index fd63aea95..000000000 --- a/library/ajaxchat/chat/js/lang/cy.js +++ /dev/null @@ -1,93 +0,0 @@ -/* - * @package AJAX_Chat - * @author Sebastian Tschan - * @copyright (c) Sebastian Tschan - * @license Modified MIT License - * @link https://blueimp.net/ajax/ - * @translation Alan Davies, ardavies@tiscali.co.uk - * @language: Welsh (Cymraeg) - */ - -// Ajax Chat language Object: -var ajaxChatLang = { - - login: 'Mae %s wedi mewngofnodi.', - logout: 'Allgofnododd %s.', - logoutTimeout: 'Allgofnodwyd %s (Terfyn amser).', - logoutIP: 'Allgofnodwyd %s (Cyfeiriad IP annilys).', - logoutKicked: 'Allgofnodwyd %s (Cic).', - channelEnter: 'Mae %s wedi ymuno \'r sianel.', - channelLeave: 'Mae %s wedi gadael y sianel.', - privmsg: '(sibrwd)', - privmsgto: '(sibrwd i %s)', - invite: 'Mae %s yn eich gwahodd i ymuno %s.', - inviteto: 'Mae eich gwahoddiad i %s i ymuno sianel %s wedi\'i anfon.', - uninvite: 'Mae %s yn tynnu\'r gwahoddiad i sianel %s yn l.', - uninviteto: 'Mae\'r neges yn tynnu\'r gwahoddiad i sianel %s yn l wedi\'i hanfon.', - queryOpen: 'Agorwyd sianel breifat i %s.', - queryClose: 'Ceuwyd sianel breifat i %s.', - ignoreAdded: 'Ychwanegwyd %s i\'r anwybyddion.', - ignoreRemoved: 'Tynnwyd %s bant o\'r anwybyddion.', - ignoreList: 'Anwybyddion:', - ignoreListEmpty: 'Dim anwybyddion wedi\'u rhestru.', - who: 'Defnyddwyr Ar-lein:', - whoChannel: 'Defnyddwyr Ar-lein ar sianel %s:', - whoEmpty: 'Dim defnyddwyr ar-lein ar y sianel hon.', - list: 'Sianeli ar gael:', - bans: 'Gwaharddogion:', - bansEmpty: 'Dim gwaharddogion wedi\'u rhestru.', - unban: 'Diddymwyd gwaharddiad %s.', - whois: 'Defnyddiwr %s - cyfeiriad IP:', - whereis: 'Mae defnyddiwr %s yn y sianel %s.', - roll: 'Mae %s yn rholio %s a chael %s.', - nick: 'Enw %s nawr yw %s.', - toggleUserMenu: 'Togl dewislen defnyddiwr ar gyfer %s', - userMenuLogout: 'Allgofnodi', - userMenuWho: 'Rhestr ddefnyddwyr ar-lein', - userMenuList: 'Rhestr sianeli ar gael', - userMenuAction: 'Disgrifio gweithred', - userMenuRoll: 'Rholio dis', - userMenuNick: 'Newid enw', - userMenuEnterPrivateRoom: 'Myned i mewn i ystafell breifat', - userMenuSendPrivateMessage: 'Anfon neges breifat', - userMenuDescribe: 'Anfon gweithred breifat', - userMenuOpenPrivateChannel: 'Agor sianel breifat', - userMenuClosePrivateChannel: 'Cau sianel breifat', - userMenuInvite: 'Gwahodd', - userMenuUninvite: 'Tynnu gwahoddiad', - userMenuIgnore: 'Anwybyddu/Derbyn', - userMenuIgnoreList: 'Rhestr anwybyddion', - userMenuWhereis: 'Dangos sianel', - userMenuKick: 'Cic/Gwahardd', - userMenuBans: 'Rhestr waharddogion', - userMenuWhois: 'Dangos IP', - unbanUser: 'Diddynu gwaharddiad %s', - joinChannel: 'Ymuno sianel %s', - cite: 'Dywedodd %s:', - urlDialog: 'Rhowch gyfeiriad (URL) y wefan:', - deleteMessage: 'Dilwch y neges hon', - deleteMessageConfirm: 'Ydych wir am ddileu\'r neges hon?', - errorCookiesRequired: 'Mae nagen cwcis ar gyfer y sgwrs hon.', - errorUserNameNotFound: 'Gwall: Heb ffeindio %s.', - errorMissingText: 'Gwall: testun neges ar goll.', - errorMissingUserName: 'Gwall: Enw ar goll.', - errorInvalidUserName: 'Gwall: Enw annilys.', - errorUserNameInUse: 'Gwall: Enw\'n bodoli eisoes.', - errorMissingChannelName: 'Gwall: Enw sianel ar goll.', - errorInvalidChannelName: 'Gwall: Enw sianel annilys: %s', - errorPrivateMessageNotAllowed: 'Gwall: Ni chaniateir negesuon preifat.', - errorInviteNotAllowed: 'Gwall: Nid oes hawl gwahodd rhywun i\'r sianel hon.', - errorUninviteNotAllowed: 'Gwall: Nid oes hawl tynnu gwahaoddiad yn l o\'r sianel hon.', - errorNoOpenQuery: 'Gwall: Dim sianel breifat ar agor.', - errorKickNotAllowed: 'Gwall: Nid oes hawl cicio %s.', - errorCommandNotAllowed: 'Gwall: Nid oes hawl defnyddio\'r gorchymyn: %s', - errorUnknownCommand: 'Gwall: Gorchymyn anhysbys: %s', - errorMaxMessageRate: 'Gwall: Rydych wedi myn dros y nifer o negeseuon sydd hawl gennych anfon pob munud.', - errorConnectionTimeout: 'Gwall: Terfyn amser cysylltiad. Ceisiwch eto.', - errorConnectionStatus: 'Gwall: Statws cysylltiad: %s', - errorSoundIO: 'Gwall: Methu llwytho ffeil sain (Gwall Flash IO).', - errorSocketIO: 'Gwall: Cysylltiad i\'r gweinyddwr soced wedi methu (Gwall Flash IO).', - errorSocketSecurity: 'Gwall: Cysylltiad i\'r gweinyddwr soced wedi methu (Gwall Diogelwch Flash).', - errorDOMSyntax: 'Gwall: Cystrawen DOM Annilys (DOM ID: %s).' - -} \ No newline at end of file diff --git a/library/ajaxchat/chat/js/lang/cz.js b/library/ajaxchat/chat/js/lang/cz.js deleted file mode 100644 index 4a0a7b8b2..000000000 --- a/library/ajaxchat/chat/js/lang/cz.js +++ /dev/null @@ -1,91 +0,0 @@ -/* - * @package AJAX_Chat - * @author Sebastian Tschan - * @copyright (c) Sebastian Tschan - * @license Modified MIT License - * @link https://blueimp.net/ajax/ - */ - -// Ajax Chat language Object: -var ajaxChatLang = { - - login: '%s se přihlásil.', - logout: '%s se odhlásil.', - logoutTimeout: '%s byl odhlášen (překročen timeout).', - logoutIP: '%s byl odhlášen (neplatná IP adresa).', - logoutKicked: '%s byl vyhozen.', - channelEnter: '%s vstoupil do místnosti.', - channelLeave: '%s odešel z místnosti.', - privmsg: '(šeptá)', - privmsgto: '(šeptá %s)', - invite: '%s tě zve do místnosti %s.', - inviteto: 'Tvoje pozvání %s do místnosti %s bylo odesláno.', - uninvite: '%s odmítl pozvání do pokoje %s.', - uninviteto: 'Tvoje pozvání %s do pokoje %s bylo odmítnuto.', - queryOpen: 'Soukromý rozhovor s %s byl započat.', - queryClose: 'Soukromý rozhovor s %s byl ukončen.', - ignoreAdded: '%s byl přidán do seznamu ignorovaných.', - ignoreRemoved: '%s byl odebrán ze seznamu ignorovaných.', - ignoreList: 'Seznam ignorovaných:', - ignoreListEmpty: 'Seznam je prázdný...', - who: 'Přihlášení uživatelé:', - whoChannel: 'Uživatelé, přihlášení v místnosti %s:', - whoEmpty: 'Tady nikdo není...', - list: 'Dostupné místnosti:', - bans: 'Vyhození uživatelé:', - bansEmpty: 'Seznam je prázdný...', - unban: 'Uživatel %s byl omilostněn.', - whois: 'Uživatel %s - IP adresa:', - whereis: 'Uživatel %s je v místnosti %s.', - roll: '%s hodil %s a vyhrává %s.', - nick: '%s se nyní jmenuje %s.', - toggleUserMenu: 'Vyvolej/zhasni uživatelskou nabídku pro %s', - userMenuLogout: 'Odhlásit', - userMenuWho: 'Seznam přihlášených uživatelů', - userMenuList: 'Seznam místností', - userMenuAction: 'Co právě dělám', - userMenuRoll: 'Hodit kostkou', - userMenuNick: 'Změnit jméno uživatele', - userMenuEnterPrivateRoom: 'Vstoupit do soukromé místnosti', - userMenuSendPrivateMessage: 'Poslat soukromou zprávu', - userMenuDescribe: 'Co právě dělám (soukromě)', - userMenuOpenPrivateChannel: 'Zahájit soukromý rozhovor', - userMenuClosePrivateChannel: 'Ukončit soukromý rozhovor', - userMenuInvite: 'Pozvat', - userMenuUninvite: 'Odmítnout pozvání', - userMenuIgnore: 'Ignorovat/Přijmout', - userMenuIgnoreList: 'Seznam ignorovaných uživatelů', - userMenuWhereis: 'Zobrazit místnost', - userMenuKick: 'Vyhodit/Zablokovat', - userMenuBans: 'Seznam vyhozených uživatelů', - userMenuWhois: 'Zobrazit IP adresu', - unbanUser: 'Omilostnit uživatele %s', - joinChannel: 'Vstoupit do místnosti %s', - cite: '%s prohlásil:', - urlDialog: 'Zadej, prosím adresu (URL) stránky:', - deleteMessage: 'Vymazat zprávu', - deleteMessageConfirm: 'Opravdu vymazat tuto zprávu ?', - errorCookiesRequired: 'Pro tento chat je nutno povolit Cookies.', - errorUserNameNotFound: 'Chyba: Uživatel %s nebyl nalezen.', - errorMissingText: 'Chyba: Schází text zprávy.', - errorMissingUserName: 'Chyba: Schází jméno uživatele.', - errorInvalidUserName: 'Chyba: Neplatné jméno uživatele.', - errorUserNameInUse: 'Chyba: Jméno uživatele už je používáno.', - errorMissingChannelName: 'Chyba: Schází název místnosti.', - errorInvalidChannelName: 'Chyba: Neplatný název místnosti: %s', - errorPrivateMessageNotAllowed: 'Chyba: Soukromé zprávy nejsou povoleny.', - errorInviteNotAllowed: 'Chyba: Nejsi oprávněn zvát do této místnosti.', - errorUninviteNotAllowed: 'Chyba: Nejsi oprávněn odmítat pozvání z této místnosti.', - errorNoOpenQuery: 'Chyba: Nebyl zahájen žádný soukromý rozhovor.', - errorKickNotAllowed: 'Chyba: Nemáš právo vyhodit %s.', - errorCommandNotAllowed: 'Chyba: Tento příkaz není povolen: %s', - errorUnknownCommand: 'Chyba: Neznámý příkaz: %s', - errorMaxMessageRate: 'Chyba: Překročil jsi maximální počet zpráv za minutu.', - errorConnectionTimeout: 'Chyba: Čas připojení vypršel. Připoj se znovu.', - errorConnectionStatus: 'Chyba: Stav připojení: %s', - errorSoundIO: 'Chyba: Nepodařilo se přehrát zvukový soubor (Flash IO Error).', - errorSocketIO: 'Chyba: Nepodařilo se připojení k serveru (Flash IO Error).', - errorSocketSecurity: 'Chyba: Připojení k serveru selhalo (Flash Security Error).', - errorDOMSyntax: 'Chyba: Neplatná syntaxe DOM (DOM ID: %s).' - -} \ No newline at end of file diff --git a/library/ajaxchat/chat/js/lang/da.js b/library/ajaxchat/chat/js/lang/da.js deleted file mode 100644 index c6e537aad..000000000 --- a/library/ajaxchat/chat/js/lang/da.js +++ /dev/null @@ -1,91 +0,0 @@ -/* - * @package AJAX_Chat - * @author Sebastian Tschan - * @copyright (c) Sebastian Tschan - * @license Modified MIT License - * @link https://blueimp.net/ajax/ - */ - -// Ajax Chat language Object: -var ajaxChatLang = { - - login: '%s Logger dig ind.', - logout: '%s Logger dig ud.', - logoutTimeout: '%s Er logget ud (Timeout).', - logoutIP: '%s er logget ud (ugyldig IP addresse).', - logoutKicked: '%s er logget ud (Kicked).', - channelEnter: '%s kom ind i kanalen.', - channelLeave: '%s forlod kanalen.', - privmsg: '(hvisker)', - privmsgto: '(hvisker til %s)', - invite: '%s inviterede dig til at joine %s.', - inviteto: 'Din invitation %s til at joine kanal %s er blevet sendt.', - uninvite: '%s Du er nu ikke længere inviteret til %s.', - uninviteto: 'Anullere invitation for %s på kanal %s.', - queryOpen: 'Privat kanal åben for %s.', - queryClose: 'Privat kanal for %s lukket.', - ignoreAdded: 'Tilføjede %s til ignorerings listen.', - ignoreRemoved: 'fjernede %s fra ignorerings listen.', - ignoreList: 'Ignorerede brugere:', - ignoreListEmpty: 'Ingen ignorerede brugere.', - who: 'Online brugere:', - whoChannel: 'Online brugere på kanal %s:', - whoEmpty: 'ingen online brugere på den angivne kanal.', - list: 'Tilgængelige kanaler:', - bans: 'Banlyste brugere:', - bansEmpty: 'Ingen banlyste brugere på listen.', - unban: 'Banlysning af %s ophævet.', - whois: 'bruger %s - IP addresse:', - whereis: 'brugeren %s er på kanal %s.', - roll: '%s Kastede terninger %s og fik %s.', - nick: '%s Er nu kendt som %s.', - toggleUserMenu: 'skift bruger menu for %s', - userMenuLogout: 'Log ud', - userMenuWho: 'Vis online brugere', - userMenuList: 'Vis tilgængelige kanaler', - userMenuAction: 'Beskrivende handling', - userMenuRoll: 'Kast terninger', - userMenuNick: 'Skift brugernavn', - userMenuEnterPrivateRoom: 'Gå ind i privat rum.', - userMenuSendPrivateMessage: 'Send privat besked', - userMenuDescribe: 'Send privat handling', - userMenuOpenPrivateChannel: 'Åben privat kanal', - userMenuClosePrivateChannel: 'Luk privat kanal', - userMenuInvite: 'Inviter', - userMenuUninvite: 'Anuller invitation', - userMenuIgnore: 'Ignorer/Accepter', - userMenuIgnoreList: 'Vis ignorerede brugere', - userMenuWhereis: 'vis kanal', - userMenuKick: 'Spark ud/Banlys', - userMenuBans: 'Vis banlyste brugere', - userMenuWhois: 'Vis IP adresse', - unbanUser: 'Fjernede banlysning af brugere %s', - joinChannel: 'Deltag i en kanal %s', - cite: '%s sagde:', - urlDialog: 'Venligst indsæt adressen (URL) for den pågældende hjemmeside:', - deleteMessage: 'Fjern denne chat besked', - deleteMessageConfirm: 'Vil du virkelig fjerne denne besked?', - errorCookiesRequired: 'Cookies er nødvændige for denne chat', - errorUserNameNotFound: 'FEJL: bruger %s ikke fundet.', - errorMissingText: 'FEJL: Manglende besked.', - errorMissingUserName: 'FEJL: Manglende brugernavn.', - errorInvalidUserName: 'FEJL: Ugyldigt brugernavn.', - errorUserNameInUse: 'FEJL: Brugernavnet er allerede i brug.', - errorMissingChannelName: 'FEJL: Manglende kanal navn.', - errorInvalidChannelName: 'FEJL: Ugyldigt kanal navn: %s', - errorPrivateMessageNotAllowed: 'FEJL: Privat beskeder er ikke tilladt.', - errorInviteNotAllowed: 'FEJL: Du har ikke tilstrækkelige rettigheder til at invitere til denne kanal.', - errorUninviteNotAllowed: 'FEJL: Du har ikke tilstrækkelige rettigheder til at anullere invitationer for denne kanal.', - errorNoOpenQuery: 'FEJL: Ingen privat kanal åben.', - errorKickNotAllowed: 'FEJL: Du har ikke tilstrækkelige rettigheder til at sparke. %s.', - errorCommandNotAllowed: 'FEJL: Kommando ikke tillad: %s', - errorUnknownCommand: 'FEJL: Ukendt kommando: %s', - errorMaxMessageRate: 'FEJL: Du har overskredet max antal beskeder per minut.', - errorConnectionTimeout: 'FEJL: Forbindelses timeout. Prøv venligst igen.', - errorConnectionStatus: 'FEJL: Status for forbindelse. %s', - errorSoundIO: 'FEJL: Kunne ikke indlæse lydfil (Flash IO Fejl).', - errorSocketIO: 'FEJL: Connection to socket server failed (Flash IO fejl).', - errorSocketSecurity: 'FEJL: forbindelse til til socket server fejlede (Flash sikkerheds fejl).', - errorDOMSyntax: 'FEJL: Ugyldig DOM Syntaks(DOM ID: %s).' - -} diff --git a/library/ajaxchat/chat/js/lang/de.js b/library/ajaxchat/chat/js/lang/de.js deleted file mode 100644 index b46b3f323..000000000 --- a/library/ajaxchat/chat/js/lang/de.js +++ /dev/null @@ -1,91 +0,0 @@ -/* - * @package AJAX_Chat - * @author Sebastian Tschan - * @copyright (c) Sebastian Tschan - * @license Modified MIT License - * @link https://blueimp.net/ajax/ - */ - -// Ajax Chat language Object: -var ajaxChatLang = { - - login: '%s betritt den Chat.', - logout: '%s verlässt den Chat.', - logoutTimeout: '%s wurde ausgeloggt (Timeout).', - logoutIP: '%s wurde ausgeloggt (Ungültige IP-Adresse).', - logoutKicked: '%s wurde ausgeloggt (Ausschluss).', - channelEnter: '%s betritt den Raum.', - channelLeave: '%s verlässt den Raum.', - privmsg: '(flüstert)', - privmsgto: '(flüstert zu %s)', - invite: '%s lädt dich ein den Raum %s zu betreten.', - inviteto: 'Deine Einladung an %s den Raum %s zu betreten wurde versendet.', - uninvite: '%s hat dich wieder ausgeladen den Raum %s zu betreten.', - uninviteto: 'Deine Ausladung an %s den Raum %s zu betreten wurde versendet.', - queryOpen: 'Privater Kanal zu %s geöffnet.', - queryClose: 'Privater Kanal zu %s geschlossen.', - ignoreAdded: '%s wurde auf die Ignorier-Liste gesetzt.', - ignoreRemoved: '%s wurde von der Ignorier-Liste entfernt.', - ignoreList: 'Ignorierte Benutzer:', - ignoreListEmpty: 'Keine Benutzer werden ignoriert.', - who: 'Benutzer online:', - whoChannel: 'Benutzer online im Raum %s:', - whoEmpty: 'Keine Benutzer online im angegebenen Kanal.', - list: 'Verfügbare Räume:', - bans: 'Ausgeschlossene Nutzer:', - bansEmpty: 'Keine ausgeschlossenen Nutzer vorhanden.', - unban: 'Ausschluss des Benutzers %s aufgehoben.', - whois: 'Benutzer %s - IP-Adresse:', - whereis: 'Benutzer %s ist im Raum %s.', - roll: '%s würfelt %s und erhält %s.', - nick: '%s heißt jetzt %s.', - toggleUserMenu: 'Benutzer-Menü für %s anzeigen/ausblenden', - userMenuLogout: 'Logout', - userMenuWho: 'Online Benutzer auflisten', - userMenuList: 'Verfügbare Räume auflisten', - userMenuAction: 'Aktion beschreiben', - userMenuRoll: 'Würfeln', - userMenuNick: 'Benutzernamen ändern', - userMenuEnterPrivateRoom: 'Privaten Raum betreten', - userMenuSendPrivateMessage: 'Private Nachricht schicken', - userMenuDescribe: 'Private Aktion schicken', - userMenuOpenPrivateChannel: 'Privaten Kanal öffnen', - userMenuClosePrivateChannel: 'Privaten Kanal schließen', - userMenuInvite: 'Einladen', - userMenuUninvite: 'Ausladen', - userMenuIgnore: 'Ignorieren / Akzeptieren', - userMenuIgnoreList: 'Ignorierte Benutzer auflisten', - userMenuWhereis: 'Raum anzeigen', - userMenuKick: 'Ausschließen / Verbannen', - userMenuBans: 'Ausgeschlossene Benutzer auflisten', - userMenuWhois: 'IP anzeigen', - unbanUser: 'Ausschluss von %s aufheben', - joinChannel: 'Raum %s betreten', - cite: '%s sagte:', - urlDialog: 'Bitte die Adresse (URL) der Webseite eingeben:', - deleteMessage: 'Diese Chat-Nachricht löschen', - deleteMessageConfirm: 'Die ausgewählte Chat-Nachricht wirklich löschen?', - errorCookiesRequired: 'Cookies werden für diesen Chat benötigt.', - errorUserNameNotFound: 'Fehler: Benutzer %s wurde nicht gefunden.', - errorMissingText: 'Fehler: Nachrichtentext fehlt.', - errorMissingUserName: 'Fehler: Benutzername fehlt.', - errorInvalidUserName: 'Fehler: Ungültiger Benutzername.', - errorUserNameInUse: 'Fehler: Benutzername schon vergeben.', - errorMissingChannelName: 'Fehler: Raumname fehlt.', - errorInvalidChannelName: 'Fehler: Ungültiger Raumname: %s', - errorPrivateMessageNotAllowed: 'Fehler: Private Nachrichten sind nicht erlaubt.', - errorInviteNotAllowed: 'Fehler: Du kannst niemanden zu diesem Raum Einladen.', - errorUninviteNotAllowed: 'Fehler: Du kannst niemanden von diesem Raum Ausladen.', - errorNoOpenQuery: 'Fehler: Kein privater Kanal offen.', - errorKickNotAllowed: 'Fehler: Du kannst %s nicht ausschließen.', - errorCommandNotAllowed: 'Fehler: Befehl nicht erlaubt: %s', - errorUnknownCommand: 'Fehler: Unbekannter Befehl: %s', - errorMaxMessageRate: 'Fehler: Du hast die maximale Anzahl an Nachrichten pro Minute überschritten.', - errorConnectionTimeout: 'Fehler: Verbindungsabbruch. Bitte erneut versuchen.', - errorConnectionStatus: 'Fehler: Verbindungsstatus: %s', - errorSoundIO: 'Fehler: Laden einer Sound-Datei fehlgeschlagen (Flash IO Error).', - errorSocketIO: 'Fehler: Verbindung zum Socket Server fehlgeschlagen (Flash IO Error).', - errorSocketSecurity: 'Fehler: Verbindung zum Socket Server fehlgeschlagen (Flash Security Error).', - errorDOMSyntax: 'Error: Invalid DOM Syntax (DOM ID: %s).' - -} \ No newline at end of file diff --git a/library/ajaxchat/chat/js/lang/el.js b/library/ajaxchat/chat/js/lang/el.js deleted file mode 100644 index 2864c3a76..000000000 --- a/library/ajaxchat/chat/js/lang/el.js +++ /dev/null @@ -1,92 +0,0 @@ -/* - * @package AJAX_Chat - * @author Sebastian Tschan - * @author panas - * @copyright (c) Sebastian Tschan - * @license Modified MIT License - * @link https://blueimp.net/ajax/ - */ - -// Ajax Chat language Object: -var ajaxChatLang = { - - login: '%s μπήκε στο Chat.', - logout: '%s βγήκε από το Chat.', - logoutTimeout: '%s βγήκε από το Chat (Ανενεργό).', - logoutIP: '%s βγήκε από το Chat (Λανθασμένη IP).', - logoutKicked: '%s βγήκε από το Chat (Kicked).', - channelEnter: '%s μπήκε στο κανάλι.', - channelLeave: '%s βγήκε από το κανάλι.', - privmsg: '(ψιθυρίζει)', - privmsgto: '( ψιθυρίζει σε %s)', - invite: '%s σας καλεί να συμμετάσχετε στο %s.', - inviteto: 'Η πρόσκληση σας σε %s να συμμετάσχει στο κανάλι %s έχει σταλεί.', - uninvite: '%s τερματίζει την πρόσκληση σας για το κανάλι %s.', - uninviteto: 'Η πρόσκληση σας σε %s για το κανάλι %s έχει σταλεί.', - queryOpen: 'Άνοιξε πρίβε κανάλι σε %s.', - queryClose: ' Το πρίβε κανάλι %s έκλεισε.', - ignoreAdded: '%s προστέθηκε στη λίστα αγνόησης.', - ignoreRemoved: ' %s αφαιρέθηκε από τη λίστα αγνόησης .', - ignoreList: 'Αγνοήμενοι χρήστες:', - ignoreListEmpty: 'Δεν υπάρχουν αγνοημένοι χρήστες.', - who: 'Χρήστες παρόν:', - whoChannel: 'Χρήστες συνδεδεμένοι στο κανάλι %s:', - whoEmpty: 'Δεν υπάρχουν χρήστες στο συγκεκριμένο κανάλι.', - list: 'Διαθέσιμα κανάλια:', - bans: 'Αποκλεισμένοι χρήστες:', - bansEmpty: 'Δεν υπάρχουν αποκλεισμένοι χρήστες.', - unban: 'Ο αποκλεισμός %s αφαιρέθηκε.', - whois: ' %s - IP διεύθυνση:', - whereis: 'Χρήστης %s είναι στο κανάλι %s.', - roll: '%s ρίχνει %s και φέρνει %s.', - nick: '%s άλλαξε το όνομα σε %s.', - toggleUserMenu: 'Αλλαγή μενού χρήστη για %s', - userMenuLogout: 'Αποσύνδεση', - userMenuWho: 'Εμφάνιση λίστας συνδεδεμένων', - userMenuList: 'Εμφάνιση λίστας διαθέσιμων καναλιών', - userMenuAction: 'Περιγραφή ενέργειας', - userMenuRoll: 'Ρίξιμο ζαριών', - userMenuNick: 'Αλλαγή ονόματος', - userMenuEnterPrivateRoom: 'Εισαγωγή σε πριβέ δωμάτιο', - userMenuSendPrivateMessage: 'Αποστολή προσωπικού μηνύματος', - userMenuDescribe: 'Αποστολή προσωπικής ενέργειας', - userMenuOpenPrivateChannel: 'Άνοιγμα πριβέ καναλιού', - userMenuClosePrivateChannel: 'Κλείσιμο πριβέ καναλιού', - userMenuInvite: 'Πρόσκληση', - userMenuUninvite: 'Ακύρωση πρόσκλησης', - userMenuIgnore: 'Αγνόηση/Αποδοχή', - userMenuIgnoreList: 'Εμφάνιση λίστας αγνοημένων', - userMenuWhereis: 'Εμφάνιση καναλιού', - userMenuKick: 'Kick/Ban', - userMenuBans: 'Εμφάνιση λίστας αποκλεισμένων', - userMenuWhois: 'Εμφάνιση IP', - unbanUser: 'Επαναφορά αποκλεισμού για %s', - joinChannel: 'Μπαίνει στο κανάλι %s', - cite: '%s είπε:', - urlDialog: 'παρακαλούμε εισάγετε την διεύθυνση (URL) της ιστοσελίδας:', - deleteMessage: 'Διαγραφή αυτού του μηνύματος', - deleteMessageConfirm: 'Θέλετε να διαγράψετε το επιλεγμένο μήνυμα?', - errorCookiesRequired: 'Τα cookies είναι απαραίτητα για το chat.', - errorUserNameNotFound: 'Σφάλμα: Ο χρήστης %s δεν βρέθηκε.', - errorMissingText: 'Σφάλμα: Λείπει το μήνυμα.', - errorMissingUserName: ': Λείπει ο χρήστης.', - errorInvalidUserName: 'Error: Invalid username.', - errorUserNameInUse: 'Error: Username already in use.', - errorMissingChannelName: 'Σφάλμα: Λείπει το όνομα του καναλιού.', - errorInvalidChannelName: 'Σφάλμα: Ακατάλληλο όνομα καναλιού: %s', - errorPrivateMessageNotAllowed: 'Σφάλμα: Τα προσωπικά μηνύματα δεν επιτρέπονται.', - errorInviteNotAllowed: 'Σφάλμα: Δεν σας επιτρέπετε να καλέσετε άλλούς στο κανάλι.', - errorUninviteNotAllowed: 'Σφάλμα: Δεν σας επιτρέπετε να τερματίσετε την πρόσκληση άλλων από το κανάλι.', - errorNoOpenQuery: ': Δεν ανοίχθηκε πρίβε κανάλι.', - errorKickNotAllowed: 'Δεν σας επιτρέπετε να πετάξετε %s.', - errorCommandNotAllowed: 'Σφάλμα: Δεν επιτρέπετε η εντολή: %s', - errorUnknownCommand: 'Σφάλμα: Άγνωστη εντολή: %s', - errorMaxMessageRate: 'Σφάλμα: Υπερβήκατε τον μέγιστο αριθμό μηνυμάτων ανά λεπτό.', - errorConnectionTimeout: 'Σφάλμα: Έληξε ο χρόνος σύνδεσης. Προσπαθήστε ξανά.', - errorConnectionStatus: 'Σφάλμα: Κατάσταση σύνδεσης: %s', - errorSoundIO: 'Σφάλμα: Απέτυχε η φόρτωση του αρχείου ήχου (Flash IO Σφάλμα).', - errorSocketIO: 'Σφάλμα: Η σύνδεση στο socket του διακομιστή απέτυχε (Flash IO Σφάλμα).', - errorSocketSecurity: 'Σφάλμα:Η σύνδεση στο socket του διακομιστή απέτυχε (Σφάλμα ασφαλείας του Flash ).', - errorDOMSyntax: 'Σφάλμα: Άκυρη DOM σύνταξη (DOM ID: %s).' - -} \ No newline at end of file diff --git a/library/ajaxchat/chat/js/lang/en.js b/library/ajaxchat/chat/js/lang/en.js deleted file mode 100644 index 16b4ab472..000000000 --- a/library/ajaxchat/chat/js/lang/en.js +++ /dev/null @@ -1,91 +0,0 @@ -/* - * @package AJAX_Chat - * @author Sebastian Tschan - * @copyright (c) Sebastian Tschan - * @license Modified MIT License - * @link https://blueimp.net/ajax/ - */ - -// Ajax Chat language Object: -var ajaxChatLang = { - - login: '%s logs into the Chat.', - logout: '%s logs out of the Chat.', - logoutTimeout: '%s has been logged out (Timeout).', - logoutIP: '%s has been logged out (Invalid IP address).', - logoutKicked: '%s has been logged out (Kicked).', - channelEnter: '%s enters the channel.', - channelLeave: '%s leaves the channel.', - privmsg: '(whispers)', - privmsgto: '(whispers to %s)', - invite: '%s invites you to join %s.', - inviteto: 'Your invitation to %s to join channel %s has been sent.', - uninvite: '%s uninvites you from channel %s.', - uninviteto: 'Your uninvitation to %s for channel %s has been sent.', - queryOpen: 'Private channel opened to %s.', - queryClose: 'Private channel to %s closed.', - ignoreAdded: 'Added %s to the ignore list.', - ignoreRemoved: 'Removed %s from the ignore list.', - ignoreList: 'Ignored Users:', - ignoreListEmpty: 'No ignored Users listed.', - who: 'Online Users:', - whoChannel: 'Online Users in channel %s:', - whoEmpty: 'No online users in the given channel.', - list: 'Available channels:', - bans: 'Banned Users:', - bansEmpty: 'No banned Users listed.', - unban: 'Ban of user %s revoked.', - whois: 'User %s - IP address:', - whereis: 'User %s is in channel %s.', - roll: '%s rolls %s and gets %s.', - nick: '%s is now known as %s.', - toggleUserMenu: 'Toggle user menu for %s', - userMenuLogout: 'Logout', - userMenuWho: 'List online users', - userMenuList: 'List available channels', - userMenuAction: 'Describe action', - userMenuRoll: 'Roll dice', - userMenuNick: 'Change username', - userMenuEnterPrivateRoom: 'Enter private room', - userMenuSendPrivateMessage: 'Send private message', - userMenuDescribe: 'Send private action', - userMenuOpenPrivateChannel: 'Open private channel', - userMenuClosePrivateChannel: 'Close private channel', - userMenuInvite: 'Invite', - userMenuUninvite: 'Uninvite', - userMenuIgnore: 'Ignore/Accept', - userMenuIgnoreList: 'List ignored users', - userMenuWhereis: 'Display channel', - userMenuKick: 'Kick/Ban', - userMenuBans: 'List banned users', - userMenuWhois: 'Display IP', - unbanUser: 'Revoke ban of user %s', - joinChannel: 'Join channel %s', - cite: '%s said:', - urlDialog: 'Please enter the address (URL) of the webpage:', - deleteMessage: 'Delete this chat message', - deleteMessageConfirm: 'Really delete the selected chat message?', - errorCookiesRequired: 'Cookies are required for this chat.', - errorUserNameNotFound: 'Error: User %s not found.', - errorMissingText: 'Error: Missing message text.', - errorMissingUserName: 'Error: Missing username.', - errorInvalidUserName: 'Error: Invalid username.', - errorUserNameInUse: 'Error: Username already in use.', - errorMissingChannelName: 'Error: Missing channel name.', - errorInvalidChannelName: 'Error: Invalid channel name: %s', - errorPrivateMessageNotAllowed: 'Error: Private messages are not allowed.', - errorInviteNotAllowed: 'Error: You are not allowed to invite someone to this channel.', - errorUninviteNotAllowed: 'Error: You are not allowed to uninvite someone from this channel.', - errorNoOpenQuery: 'Error: No private channel open.', - errorKickNotAllowed: 'Error: You are not allowed to kick %s.', - errorCommandNotAllowed: 'Error: Command not allowed: %s', - errorUnknownCommand: 'Error: Unknown command: %s', - errorMaxMessageRate: 'Error: You exceeded the maximum number of messages per minute.', - errorConnectionTimeout: 'Error: Connection timeout. Please try again.', - errorConnectionStatus: 'Error: Connection status: %s', - errorSoundIO: 'Error: Failed to load sound file (Flash IO Error).', - errorSocketIO: 'Error: Connection to socket server failed (Flash IO Error).', - errorSocketSecurity: 'Error: Connection to socket server failed (Flash Security Error).', - errorDOMSyntax: 'Error: Invalid DOM Syntax (DOM ID: %s).' - -} \ No newline at end of file diff --git a/library/ajaxchat/chat/js/lang/es.js b/library/ajaxchat/chat/js/lang/es.js deleted file mode 100644 index 393467a8c..000000000 --- a/library/ajaxchat/chat/js/lang/es.js +++ /dev/null @@ -1,92 +0,0 @@ -/* - * @package AJAX_Chat - * @author Sebastian Tschan - * @author Manu Quintans / KeScI [www.e-nologia.com] - * @copyright (c) Sebastian Tschan - * @license Modified MIT License - * @link https://blueimp.net/ajax/ - */ - -// Ajax Chat language Object: -var ajaxChatLang = { - - login: '%s entra al Chat.', - logout: '%s sale del Chat.', - logoutTimeout: '%s se ha desconectado (Tiempo de espera agotado).', - logoutIP: '%s se ha desconectado (Direccion IP no valida).', - logoutKicked: '%s se ha desconectado (Pateado).', - channelEnter: '%s entra en el canal.', - channelLeave: '%s se va del canal.', - privmsg: '(susurra)', - privmsgto: '(susurra a %s)', - invite: '%s te invita a unirte a %s.', - inviteto: 'Su invitación a %s para unirse al canal %s se ha enviado.', - uninvite: '%s le retira la invitación del canal %s.', - uninviteto: 'Su retirada de invitación a %s para el canal %s se ha enviado.', - queryOpen: 'Privado abierto a %s.', - queryClose: 'Privado cerrado a %s.', - ignoreAdded: 'Agregado %s a la lista de usuarios ignorados.', - ignoreRemoved: 'Eliminado %s de la lista de usuarios ignorados.', - ignoreList: 'Usuarios ignorados', - ignoreListEmpty: 'Lista de usuarios no ignorados.', - who: 'Usuarios conectados:', - whoChannel: 'Usuarios conectados en el canal %s:', - whoEmpty: 'No hay usuarios conectados en este momento.', - list: 'Canales disponibles:', - bans: 'Usuarios Baneados:', - bansEmpty: 'No se han listado usuarios baneados.', - unban: 'Ban del usuario %s retirado.', - whois: 'Usuario %s - Direccion IP:', - whereis: 'Usuario %s está en el canal %s.', - roll: '%s lanza %s y obtiene un %s.', - nick: '%s es ahora %s.', - toggleUserMenu: 'Abrir/Cerrar menú del usuario %s', - userMenuLogout: 'Desconectar', - userMenuWho: 'Mostrar usuarios conectados', - userMenuList: 'Mostrar canales disponibles', - userMenuAction: 'Describir acción', - userMenuRoll: 'Tirar dado', - userMenuNick: 'Cambiar Nombre de Usuario', - userMenuEnterPrivateRoom: 'Entrar en canal privado', - userMenuSendPrivateMessage: 'Enviar mensaje privado', - userMenuDescribe: 'Enviar acción privada', - userMenuOpenPrivateChannel: 'Abrir canal privado', - userMenuClosePrivateChannel: 'Cerrar canal privado', - userMenuInvite: 'Invitar', - userMenuUninvite: 'Quitar invitación', - userMenuIgnore: 'Ignorar/Aceptar', - userMenuIgnoreList: 'Mostrar usuarios ignorados', - userMenuWhereis: 'Mostrar canal', - userMenuKick: 'Patada/Ban', - userMenuBans: 'Mostrar usuarios baneados', - userMenuWhois: 'Mostrar la IP', - unbanUser: 'Quitar el ban al usuario %s', - joinChannel: 'Entrar al canal %s', - cite: '%s dijo:', - urlDialog: 'Por favor intruduzca la dirección (URL) de la página web:', - deleteMessage: 'Borrar este mensaje del chat', - deleteMessageConfirm: 'Really delete the selected chat message?', - errorCookiesRequired: 'Se necesitan las Cookies para este chat.', - errorUserNameNotFound: 'Error: usuario %s no se ha encontrado.', - errorMissingText: 'Error: Mensaje perdido.', - errorMissingUserName: 'Error: Usuario no encontrado.', - errorInvalidUserName: 'Error: Nombre de usuario no válido.', - errorUserNameInUse: 'Error: Nombre de usuario está en uso.', - errorMissingChannelName: 'Error: No se encuentra el canal.', - errorInvalidChannelName: 'Error: Nombre invalido del canal: %s', - errorPrivateMessageNotAllowed: 'Error: No se permiten mensajes privados.', - errorInviteNotAllowed: 'Error: No está autorizado a invitar a alguien a este canal.', - errorUninviteNotAllowed: 'Error: No está autorizado a quitar la invitación a alguien de este canal.', - errorNoOpenQuery: 'Error: Ningún privado abierto.', - errorKickNotAllowed: 'Error: No está autorizado a patear a %s.', - errorCommandNotAllowed: 'Error: Comando no permitido: %s', - errorUnknownCommand: 'Error: Comando desconocido: %s', - errorMaxMessageRate: 'Error: Ha sobrepasado el número máximo de mensajes por minuto.', - errorConnectionTimeout: 'Error: Connection timeout. Please try again.', - errorConnectionStatus: 'Error: Estado de la conexión: %s', - errorSoundIO: 'Error: No se ha podido cargar el fichero de sonido (Error IO Flash).', - errorSocketIO: 'Error: No se ha podido conectar al servidor socket (Error IO Flash).', - errorSocketSecurity: 'Error: No se ha podido conectar al servidor socket (Error Seguridad Flash).', - errorDOMSyntax: 'Error: Sintaxis DOM No Válida (DOM ID: %s).' - -} \ No newline at end of file diff --git a/library/ajaxchat/chat/js/lang/et.js b/library/ajaxchat/chat/js/lang/et.js deleted file mode 100644 index e83c986b9..000000000 --- a/library/ajaxchat/chat/js/lang/et.js +++ /dev/null @@ -1,91 +0,0 @@ -/* - * @package AJAX_Chat - * @author Sebastian Tschan - * @copyright (c) Sebastian Tschan - * @license Modified MIT License - * @link https://blueimp.net/ajax/ - */ - -// Ajax Chat language Object: -var ajaxChatLang = { - - login: '%s logis jutukasse.', - logout: '%s logis jutukast välja.', - logoutTimeout: '%s logiti jutukast välja (Aeg otsas).', - logoutIP: '%s logiti jutukast välja (Vigane IP aadress).', - logoutKicked: '%s logiti jutukast välja (Välja heidetud).', - channelEnter: '%s sisenes kanalisse.', - channelLeave: '%s lahkus kanalist.', - privmsg: '(sosinad)', - privmsgto: '(sosinad %s -le)', - invite: '%s kutsub sind %s.', - inviteto: 'Sinu kutse %s -le ühineda kanaliga %s saadeti ära.', - uninvite: '%s palub sul lahkuda kanalist %s.', - uninviteto: 'Sinu palve %s -le lahkuda kanalist %s saadeti ära.', - queryOpen: 'Privaat kanal avati %s -le.', - queryClose: 'Privaat kanal %s -le suleti.', - ignoreAdded: ' %s -t ignoreeritakse.', - ignoreRemoved: ' %s ignoreerimine tühistati.', - ignoreList: 'Ignoreeritud kasutajad:', - ignoreListEmpty: 'Ignoreeritud kasutajad puuduvad.', - who: 'Sisse loginud kasutajad:', - whoChannel: 'Sisse loginud kasutajad kanalis %s:', - whoEmpty: 'Antud kanalis sisse loginud kasutajaid ei ole.', - list: 'Vabad kanalid:', - bans: 'Kasutajate must nimekiri:', - bansEmpty: 'Mustas nimekirjas kasutajaid ei ole.', - unban: 'Kasutaja %s eemaldati mustast nimekirjast.', - whois: 'Kasutaja %s - IP aadress:', - whereis: 'Kasutaja %s on kanalis %s.', - roll: '%s veeretas %s ja sai %s.', - nick: '%s nimetas end ümber: %s.', - toggleUserMenu: 'Näita/ära näita kasutaja menüüd', - userMenuLogout: 'Lahku', - userMenuWho: 'Näita sisse loginud kasutajaid', - userMenuList: 'Näita vabad kanalid', - userMenuAction: 'Kirjelda tegevust', - userMenuRoll: 'Veereta täringut', - userMenuNick: 'Muuda kasutajanimi', - userMenuEnterPrivateRoom: 'Sisene privaat-ruumi', - userMenuSendPrivateMessage: 'Saada privaat-sõnum', - userMenuDescribe: 'Saada privaat-tegevus', - userMenuOpenPrivateChannel: 'Ava privaat-kanal', - userMenuClosePrivateChannel: 'Sulge privaat-kanal', - userMenuInvite: 'Kutsu', - userMenuUninvite: 'Palu lahkuda', - userMenuIgnore: 'Ignoreeri/Tunnusta', - userMenuIgnoreList: 'Ignoreeritud kasutajad', - userMenuWhereis: 'Asukoha kanal', - userMenuKick: 'Viska välja/Lisa musta nimekirja', - userMenuBans: 'Musta nimekirja kasutajad', - userMenuWhois: 'Näita IP-d', - unbanUser: 'Eemalda %s mustast nimekirjast', - joinChannel: 'Liitu kanaliga %s', - cite: '%s ütles:', - urlDialog: 'Palun sisesta oma veebilehe (URL):', - deleteMessage: 'Kustuta see jutuka teade', - deleteMessageConfirm: 'Kas tahad tõesti kustutada seda sõnumit??', - errorCookiesRequired: 'Luba "küpsised", et kasutada seda jutukat.', - errorUserNameNotFound: 'Viga: Kasutajat nimega %s ei leitud.', - errorMissingText: 'Viga: Sõnumi tekst kadunud.', - errorMissingUserName: 'Viga: Kasutajanimi puuduv.', - errorInvalidUserName: 'Viga: Vigane kasutajanimi.', - errorUserNameInUse: 'Viga: Kasutajanimi on juba võetud.', - errorMissingChannelName: 'Viga: Kanali nimi on kadunud.', - errorInvalidChannelName: 'Viga: Vigane kanali nimi: %s', - errorPrivateMessageNotAllowed: 'Viga: Privaat-sõnumid ei ole lubatud.', - errorInviteNotAllowed: 'Viga: Sul ei ole lubatud kutsuda kedagi siia kanalisse.', - errorUninviteNotAllowed: 'Viga: Sul ei ole lubatud kedagi sellest kanalist lahkuma paluda.', - errorNoOpenQuery: 'Viga: htegi privaat-kanalit pole avatud.', - errorKickNotAllowed: 'Viga: Sul ei ole lubatud välja visata %s.', - errorCommandNotAllowed: 'Viga: Korraldus pole lubatud: %s', - errorUnknownCommand: 'Viga: Tundmatu korraldus: %s', - errorMaxMessageRate: 'Viga: Sinu maksimum sõnumite hulk, minuti vältel, on ületatud.', - errorConnectionTimeout: 'Viga: hendus aegus. Please proovi uuesti.', - errorConnectionStatus: 'Viga: henduse olek: %s', - errorSoundIO: 'Viga: Helifaili ei õnnestunud laadida (Flash IO Viga).', - errorSocketIO: 'Viga: hendus socket serveriga ebaõnnestus (Flash IO Viga).', - errorSocketSecurity: 'Viga: hendus socket serveriga ebaõnnestus (Flash Turvalisuse Viga).', - errorDOMSyntax: 'Viga: Vigane DOM Süntaks (DOM ID: %s).' - -} \ No newline at end of file diff --git a/library/ajaxchat/chat/js/lang/fi.js b/library/ajaxchat/chat/js/lang/fi.js deleted file mode 100644 index 68a536c73..000000000 --- a/library/ajaxchat/chat/js/lang/fi.js +++ /dev/null @@ -1,93 +0,0 @@ -/* - * @package AJAX_Chat - * @author Sebastian Tschan - * @author Asmo Soinio - * @author Saku Laukkanen - * @copyright (c) Sebastian Tschan - * @license Modified MIT License - * @link https://blueimp.net/ajax/ - */ - -// Ajax Chat language Object: -var ajaxChatLang = { - - login: '%s kirjautui sisään.', - logout: '%s kirjautui ulos.', - logoutTimeout: '%s kirjautui ulos (Aikakatkaisu).', - logoutIP: '%s kirjautui ulos (virheellinen IP-osoite).', - logoutKicked: '%s kirjautui ulos (Potkut).', - channelEnter: '%s liittyi kanavalle.', - channelLeave: '%s poistui kanavalta.', - privmsg: '(kuiskaa)', - privmsgto: '(kuiskaa käyttäjälle %s)', - invite: '%s kutsuu sinut liittymään kanavalle %s.', - inviteto: 'Sinun kutsusi käyttäjälle %s, liittymisestä kanavalle %s, on lähetetty.', - uninvite: '%s peruu kutsun kanavalle %s.', - uninviteto: 'Kutsusi peruminen käyttäjälle %s kanavaa %s varten, on lähetetty.', - queryOpen: 'Yksityinen kanava käyttäjälle %s on avattu.', - queryClose: 'Yksityinen kanava käyttäjälle %s on suljettu.', - ignoreAdded: 'Käyttäjä %s on lisätty huomiotta jätettäviin.', - ignoreRemoved: 'Käyttäjä %s on poistettu huomiotta jätettävistä.', - ignoreList: 'Huomiotta jätettävät käyttäjät:', - ignoreListEmpty: 'Ei huomiotta jätettäviä käyttäjiä.', - who: 'Paikallaolijat:', - whoChannel: 'Paikallaolijat kanavalla %s:', - whoEmpty: 'Ei käyttäjiä annetulla kanavalla.', - list: 'Käytettävät kanavat:', - bans: 'Potkitut käyttäjät:', - bansEmpty: 'Ei potkittuja käyttäjiä.', - unban: 'Käyttäjän %s potkut on poistettu.', - whois: 'Käyttäjän %s IP osoite:', - whereis: 'Käyttäjä %s on kanavalla %s.', - roll: '%s heittää %s ja saa %s.', - nick: '%s on nyt %s.', - toggleUserMenu: 'Näytä/piilota valikko käyttäjälle %s', - userMenuLogout: 'Poistu', - userMenuWho: 'Listaa paikallaolijat', - userMenuList: 'Listaa käytettävissä olevat kanavat', - userMenuAction: 'Määrittele toiminta', - userMenuRoll: 'Heitä noppaa', - userMenuNick: 'Vaihda käyttäjätunnusta', - userMenuEnterPrivateRoom: 'Mene yksityiseen kanavaasi', - userMenuSendPrivateMessage: 'Lähetä yksityinen viesti', - userMenuDescribe: 'Lähetä yksityinen toiminto', - userMenuOpenPrivateChannel: 'Avaa yksityinen kanava', - userMenuClosePrivateChannel: 'Sulje yksityinen kanava', - userMenuInvite: 'Kutsu', - userMenuUninvite: 'Peru kutsu', - userMenuIgnore: 'Ohita/Hyväksy', - userMenuIgnoreList: 'Listaa huomiota jätettävät käyttäjät', - userMenuWhereis: 'Näytä kanavat', - userMenuKick: 'Poista/Porttikielto', - userMenuBans: 'Listaa käyttäjät, joilla porttikielto', - userMenuWhois: 'Näytä IP-osoite', - unbanUser: 'Poista käyttäjän %s porttikielto', - joinChannel: 'Liity kanavalle %s', - cite: '%s sanoi:', - urlDialog: 'Lisää nettisivujen osoite (URL):', - deleteMessage: 'Poista tämä viesti', - deleteMessageConfirm: 'Poistetaanko viesti?', - errorCookiesRequired: 'Evästeiden pitää olla sallituja käyttääksesi tätä keskustelua.', - errorUserNameNotFound: 'Virhe: Käyttäjää %s ei löydetty.', - errorMissingText: 'Virhe: Puuttuva viestin teksti.', - errorMissingUserName: 'Virhe: Puuttuva käyttäjänimi.', - errorInvalidUserName: 'Virhe: Virheellinen käyttäjätunnus.', - errorUserNameInUse: 'Virhe: Käyttäjätunnus on jo käytössä.', - errorMissingChannelName: 'Virhe: Puuttuva kanavan nimi.', - errorInvalidChannelName: 'Virhe: Virheellinen kanavan nimi: %s', - errorPrivateMessageNotAllowed: 'Virhe: Yksityisviestit eivät ole sallittuja.', - errorInviteNotAllowed: 'Virhe: Sinulla ei ole oikeutta kutsua ketään kanavalle.', - errorUninviteNotAllowed: 'Virhe: Sinulla ei ole oikeutta perua kutsua tälle kanavalle.', - errorNoOpenQuery: 'Virhe: Ei yksityistä kanavaa auki.', - errorKickNotAllowed: 'Virhe: Sinulla ei ole oikeutta potkia käyttäjää %s.', - errorCommandNotAllowed: 'Virhe: Komento ei ole sallittu: %s', - errorUnknownCommand: 'Virhe: Tuntematon komento: %s', - errorMaxMessageRate: 'Virhe: Liikaa viestejä minuutissa.', - errorConnectionTimeout: 'Virhe: Yhteyden aikakatkaisu, olkaa hyvä ja yrittäkää uudelleen.', - errorConnectionStatus: 'Virhe: Yhteyden tila: %s', - errorSoundIO: 'Virhe: Äänitiedoston lataus epäonnistui (Flash IO-virhe).', - errorSocketIO: 'Virhe: Yhteys socket palvelimeen epäonnistui (Flash IO-virhe).', - errorSocketSecurity: 'Virhe: Yhteys socket palvelimeen epäonnistui (Flash-turvallisuus virhe).', - errorDOMSyntax: 'Virhe: Virheellinen DOM-syntaksi (DOM-tunniste: %s).' - -} diff --git a/library/ajaxchat/chat/js/lang/fr.js b/library/ajaxchat/chat/js/lang/fr.js deleted file mode 100644 index 35846f95e..000000000 --- a/library/ajaxchat/chat/js/lang/fr.js +++ /dev/null @@ -1,92 +0,0 @@ -/* - * @package AJAX_Chat - * @author Sebastian Tschan - * @contributors Ettelcar, Massimiliano Tiraboschi, Xytovl - * @copyright (c) Sebastian Tschan - * @license Modified MIT License - * @link https://blueimp.net/ajax/ - */ - -// Ajax Chat language Object: -var ajaxChatLang = { - - login: '%s se connecte au Chat.', - logout: '%s se déconnecte du Chat.', - logoutTimeout: '%s a été déconnecté (Temps écoulé).', - logoutIP: '%s a été déconnecté (Adresse IP invalide).', - logoutKicked: '%s a été déconnecté (Éjecté).', - channelEnter: '%s entre dans le salon.', - channelLeave: '%s sort du salon.', - privmsg: '(murmure)', - privmsgto: '(murmure à l’oreille de %s)', - invite: '%s vous invite à rejoindre %s.', - inviteto: 'Votre invation pour %s à rejoindre le salon %s a bien été envoyée.', - uninvite: '%s annule son invitation pour le salon %s.', - uninviteto: 'Votre annulaton d’invitation pour %s au salon %s a bien été envoyée.', - queryOpen: 'Salon privé ouvert sous le titre %s.', - queryClose: 'Le salon privé %s a été fermé.', - ignoreAdded: '%s a été ajouté à la liste des personnes ignorées.', - ignoreRemoved: '%s a été enlevé de la liste des personnes ignorées.', - ignoreList: 'Utilisateurs ignorés:', - ignoreListEmpty: 'Aucun utilisateur ignoré référencé.', - who: 'Utilisateurs en ligne:', - whoChannel: 'Utilisateurs en ligne dans le salon %s :', - whoEmpty: 'Aucun utilisateur en ligne dans le salon concerné.', - list: 'Salons disponibles :', - bans: 'Utilisateurs bannis :', - bansEmpty: 'Aucun utilisateur banni référencé.', - unban: 'Le ban de l’utilisateur %s a été levé.', - whois: 'Utilisateur %s - Adresse IP:', - whereis: 'L’utilisateur %s est dans le salon %s.', - roll: '%s jette %s et obtient %s.', - nick: '%s est maintenant %s.', - toggleUserMenu: 'Montrer/cacher menu pour %s', - userMenuLogout: 'Déconnexion', - userMenuWho: 'Liste membres en ligne', - userMenuList: 'Liste salons disponibles', - userMenuAction: 'Décrire une action', - userMenuRoll: 'Jeter un dé', - userMenuNick: 'Changer nom', - userMenuEnterPrivateRoom: 'Rejoindre un salon privé', - userMenuSendPrivateMessage: 'Envoyer un message privé', - userMenuDescribe: 'Envoyer une action privé', - userMenuOpenPrivateChannel: 'Ouvrir un salon privé', - userMenuClosePrivateChannel: 'Fermer un salon privé', - userMenuInvite: 'Inviter', - userMenuUninvite: 'Uninvite', - userMenuIgnore: 'Ignorer/Accepter', - userMenuIgnoreList: 'Liste utilisateurs ignorés', - userMenuWhereis: 'Montrer les salons', - userMenuKick: 'Éjecter/bannir', - userMenuBans: 'Liste utilisateurs bannis', - userMenuWhois: 'Display IP', - unbanUser: 'Revoke ban of user %s', - joinChannel: 'Rejoindre le salon %s', - cite: '%s a dit:', - urlDialog: 'Veuillez entrer l’addresse (URL) de la page web:', - deleteMessage: 'Effacer ce message', - deleteMessageConfirm: 'Effacer le message selectionné ?', - errorCookiesRequired: 'Ce Chat requiert l’acceptation des cookies.', - errorUserNameNotFound: 'Erreur : Utilisateur %s introuvable.', - errorMissingText: 'Erreur : Texte du message manquant.', - errorMissingUserName: 'Erreur : Nom d’utilisateur manquant.', - errorMissingChannelName: 'Erreur : Nom de salon manquant.', - errorInvalidChannelName: 'Erreur : Mauvais nom de salon: %s', - errorPrivateMessageNotAllowed: 'Erreur : Les messages privés sont interdits.', - errorInviteNotAllowed: 'Erreur : Vous n’êtes pas autorisé à inviter quelqu’un à ce salon.', - errorUninviteNotAllowed: 'Erreur : Vous n’êtes pas autorisé à annuler une invitation à ce salon.', - errorNoOpenQuery: 'Erreur : Aucun salon privé ouvert.', - errorKickNotAllowed: 'Erreur : Vous n’êtes pas autorisé à éjecter %s.', - errorCommandNotAllowed: 'Erreur : Commande interdite: %s', - errorUnknownCommand: 'Erreur : Commande inconnue: %s', - errorMaxMessageRate: 'Error : You exceeded the maximum number of messages per minute.', - errorConnectionTimeout: 'Erreur : Temps de connexion écoulé. Veuillez réessayer.', - errorConnectionStatus: 'Erreur : Statut de connexion: %s', - errorSoundIO: 'Erreur : Impossible de charger le fichier son (Erreur E/S Flash).', - errorSocketIO: 'Erreur : Connexion au serveur échouée (Erreur E/S Flash).', - errorSocketSecurity: 'Erreur : Connexion au serveur échouée (Erreur de sécurité Flash).', - errorDOMSyntax: 'Erreur : Syntaxe DOM invalide (ID DOM : %s).' - -} - - diff --git a/library/ajaxchat/chat/js/lang/gl.js b/library/ajaxchat/chat/js/lang/gl.js deleted file mode 100644 index 314e226f8..000000000 --- a/library/ajaxchat/chat/js/lang/gl.js +++ /dev/null @@ -1,92 +0,0 @@ -/* - * @package AJAX_Chat - * @author Sebastian Tschan - * @author Manu Quintans - * @copyright (c) Sebastian Tschan - * @license Modified MIT License - * @link https://blueimp.net/ajax/ - */ - -// Ajax Chat language Object: -var ajaxChatLang = { - - login: '%s logs dentro de Chat.', - logout: '%s logs fora del Chat.', - logoutTimeout: '%s desconectouse(Tempo de espera esgotado).', - logoutIP: '%s desconectouse (Dirección IP non válida ).', - logoutKicked: '%s desconectouse (Pateado).', - channelEnter: '%s Entra no chat.', - channelLeave: '%s Vaise do chat.', - privmsg: '(whispers)', - privmsgto: '(whispers to %s)', - invite: '%s invítache a unirte a %s.', - inviteto: 'A túa invitación a %s para unirse a %s foi enviada.', - uninvite: '%s rechazado en %s.', - uninviteto: 'O teu rechazo a %s para %s foi enviado.', - queryOpen: 'Chat privado aberto %s.', - queryClose: 'Chat privado pechado %s pechado.', - ignoreAdded: 'Engadido %s a lista de usuarios ignorados.', - ignoreRemoved: 'Eliminado %s da lista de usuarios ignorados.', - ignoreList: 'Usuarios ignorados', - ignoreListEmpty: 'Lista de usuarios non ignorados.', - who: 'Usuarios conectados:', - whoChannel: 'Usuarios en liña na canle %s:', - whoEmpty: 'Non hai usuarios conectados neste momento.', - list: 'Chats disponibles:', - bans: 'Usuarios Baneados:', - bansEmpty: 'Non hai usuarios baneados.', - unban: 'Baneo do usuario %s revocado.', - whois: 'Usuario %s - Direccion IP:', - whereis: 'Usuario %s en chat %s.', - roll: '%s rolls %s e toma %s.', - nick: '%s agora como %s.', - toggleUserMenu: 'Cambiar menu de usuario para %s', - userMenuLogout: 'Sair', - userMenuWho: 'Listar usuarios en liña', - userMenuList: 'Canles disponibles', - userMenuAction: 'Describe acción', - userMenuRoll: 'Roll di', - userMenuNick: 'Cambiar nome de usuario', - userMenuEnterPrivateRoom: 'Entrar nun privado', - userMenuSendPrivateMessage: 'Enviar mensaxe privada', - userMenuDescribe: 'Enviar accion en privado', - userMenuOpenPrivateChannel: 'Abrir privado', - userMenuClosePrivateChannel: 'Pechar privado', - userMenuInvite: 'Invitar', - userMenuUninvite: 'Rechazar invitado', - userMenuIgnore: 'Ignorar/Aceptar', - userMenuIgnoreList: 'Lista usuarios ignorados', - userMenuWhereis: 'Amosar canle', - userMenuKick: 'Banear', - userMenuBans: 'Lista usuarios baneados', - userMenuWhois: 'Amosar IP', - unbanUser: 'Eliminar baneo de %s', - joinChannel: 'Unirte a %s', - cite: '%s dixo:', - urlDialog: 'Por favor, introduce a URL da paxina web:', - deleteMessage: 'Eliminar mensaxe', - deleteMessageConfirm: 'Queres borra-la mensaxe?', - errorCookiesRequired: 'As Cookies son necesarias para o chat.', - errorUserNameNotFound: 'Error: usuario %s non encontrado.', - errorMissingText: 'Error: mensaxe perdida.', - errorMissingUserName: 'Error: Usuario non encontrado.', - errorInvalidUserName: 'Error: Nome de usuario non valido.', - errorUserNameInUse: 'Error: Usuario en uso.', - errorMissingChannelName: 'Error: No se atopa a canle.', - errorInvalidChannelName: 'Error: Nome inválido de canle: %s', - errorPrivateMessageNotAllowed: 'Error: mensaxes privadas non permitidas.', - errorInviteNotAllowed: 'Error: Non se che permite invitar nesta canle.', - errorUninviteNotAllowed: 'Error: Non se che permite rechazar invitados nesta canle.', - errorNoOpenQuery: 'Error: Ningunha canle privado aberto.', - errorKickNotAllowed: 'Error: Non podes banear %s.', - errorCommandNotAllowed: 'Error: Comando non permitido: %s', - errorUnknownCommand: 'Error: Comando descoñecido: %s', - errorMaxMessageRate: 'Error: Excedes o numero maximo de mensaxes por minuto.', - errorConnectionTimeout: 'Error: Tempo superado. Téntao de novo.', - errorConnectionStatus: 'Error: Estado de conexión: %s', - errorSoundIO: 'Error: Error o reproducir son(Flash IO Error).', - errorSocketIO: 'Error: Conexión co servidor fallida (Flash IO Error).', - errorSocketSecurity: 'Error: Conexión co servidor fallida(Flash Security Error).', - errorDOMSyntax: 'Error: Sintaxis DOM Inválida(DOM ID: %s).' - -} \ No newline at end of file diff --git a/library/ajaxchat/chat/js/lang/he.js b/library/ajaxchat/chat/js/lang/he.js deleted file mode 100644 index 94bbdc5e1..000000000 --- a/library/ajaxchat/chat/js/lang/he.js +++ /dev/null @@ -1,92 +0,0 @@ -/* - * @package AJAX_Chat - * @author Sebastian Tschan - * @author Smiley Barry - * @copyright (c) Sebastian Tschan - * @license Modified MIT License - * @link https://blueimp.net/ajax/ - */ - -// Ajax Chat language Object: -var ajaxChatLang = { - - login: '%s נכנס לתוך הצאט.', - logout: '%s יוצא מהצאט.', - logoutTimeout: '%s הוצא מהצאט (היה לא זמין).', - logoutIP: '%s הוצא מהצאט (כתובת מחשב בלתי חוקית).', - logoutKicked: '%s הוצא מהצאט (הועף/נבעט).', - channelEnter: '%s נכנס לתוך הערוץ.', - channelLeave: '%s יוצא מהערוץ.', - privmsg: '(לוחש)', - privmsgto: '(לוחש ל%s)', - invite: '%s מזמין אותך להצטרף לערוץ %s.', - inviteto: 'ההזמנה שלך עבור %s להצטרף לערוץ %s נשלחה.', - uninvite: '%s ביטל את הזמנתו לערוץ %s.', - uninviteto: 'ביטול ההזמנה שלך עבור %s להצטרף לערוץ %s נשלח.', - queryOpen: 'ערוץ פרטי עבור %s נפתח.', - queryClose: 'ערוץ פרטי עבור %s נסגר.', - ignoreAdded: 'המשתמש %s נוסף לרשימת ההתעלמות.', - ignoreRemoved: 'המשתמש %s נמחק מרשימת ההתעלמות.', - ignoreList: 'משתמשים אשר אתה מתעלם מהם:', - ignoreListEmpty: 'אין משתמשים ברשימה.', - who: 'משתמשים מחוברים:', - whoChannel: 'Online Users in channel %s:', - whoEmpty: 'אין משתמשים מחוברים בערוץ.', - list: 'ערוצים פתוחים:', - bans: 'משתמשים חסומים:', - bansEmpty: 'אין משתמשים חסומים.', - unban: 'בוטלה החסימה נגד המשתמש %s.', - whois: 'כתובת המחשב של המשתמש %s:', - whereis: 'User %s is in channel %s.', - roll: '%s מגלגל %s ומקבל %s.', - nick: '%s is now known as %s.', - toggleUserMenu: 'Toggle user menu for %s', - userMenuLogout: 'Logout', - userMenuWho: 'List online users', - userMenuList: 'List available channels', - userMenuAction: 'Describe action', - userMenuRoll: 'Roll dice', - userMenuNick: 'Change username', - userMenuEnterPrivateRoom: 'Enter private room', - userMenuSendPrivateMessage: 'Send private message', - userMenuDescribe: 'Send private action', - userMenuOpenPrivateChannel: 'Open private channel', - userMenuClosePrivateChannel: 'Close private channel', - userMenuInvite: 'Invite', - userMenuUninvite: 'Uninvite', - userMenuIgnore: 'Ignore/Accept', - userMenuIgnoreList: 'List ignored users', - userMenuWhereis: 'Display channel', - userMenuKick: 'Kick/Ban', - userMenuBans: 'List banned users', - userMenuWhois: 'Display IP', - unbanUser: 'Revoke ban of user %s', - joinChannel: 'הצטרף לערוץ %s', - cite: '%s אמר:', - urlDialog: 'אנא הכנס את כתובת האינטרנט (URL) של הדף:', - deleteMessage: 'Delete this chat message', - deleteMessageConfirm: 'Really delete the selected chat message?', - errorCookiesRequired: 'הצאט מבקש עוגיות כדי לפעול. אנא רד לחנות לקנות.', - errorUserNameNotFound: 'שגיאה: המשתמש %s לא נמצא.', - errorMissingText: 'שגיאה: חסר טקסט בהודעה.', - errorMissingUserName: 'שגיאה: חסר שם משתמש.', - errorInvalidUserName: 'Error: Invalid username.', - errorUserNameInUse: 'Error: Username already in use.', - errorMissingChannelName: 'שגיאה: חסר שם ערוץ.', - errorInvalidChannelName: 'שגיאה: שם ערוץ לא חוקי: %s', - errorPrivateMessageNotAllowed: 'שגיאה: הודעות פרטיות אסורות לשימוש.', - errorInviteNotAllowed: 'שגיאה: אסור לך להזמין אנשים לערוץ זה.', - errorUninviteNotAllowed: 'שגיאה: אסור לך לבטל הזמנות של אנשים לערוץ זה.', - errorNoOpenQuery: 'שגיאה: ערוץ פרטי לא פתוח.', - errorKickNotAllowed: 'שגיאה: אסור לך להעיף את %s.', - errorCommandNotAllowed: 'שגיאה: פקודה אסורה: %s', - errorUnknownCommand: 'שגיאה: פקודה לא ידועה: %s', - errorMaxMessageRate: 'Error: You exceeded the maximum number of messages per minute.', - errorConnectionTimeout: 'שגיאה: זמן חיבור פג. אנא נסה שנית.', - errorConnectionStatus: 'שגיאת חיבור: %s', - errorSoundIO: 'Error: Failed to load sound file (Flash IO Error).', - errorSocketIO: 'Error: Connection to socket server failed (Flash IO Error).', - errorSocketSecurity: 'Error: Connection to socket server failed (Flash Security Error).', - errorDOMSyntax: 'Error: Invalid DOM Syntax (DOM ID: %s).' - -} \ No newline at end of file diff --git a/library/ajaxchat/chat/js/lang/hr.js b/library/ajaxchat/chat/js/lang/hr.js deleted file mode 100644 index 6f72e64de..000000000 --- a/library/ajaxchat/chat/js/lang/hr.js +++ /dev/null @@ -1,91 +0,0 @@ -/* - * @package AJAX_Chat - * @author Sebastian Tschan - * @copyright (c) Sebastian Tschan - * @license Modified MIT License - * @link https://blueimp.net/ajax/ - */ - -// Ajax Chat language Object: -var ajaxChatLang = { - - login: 'Korisnik %s prijavio se u brbljanje.', - logout: 'Korisnik %s odjavio se iz brbljanja.', - logoutTimeout: 'Korisnik %s je odjavljen (neaktivnost).', - logoutIP: 'Korisnik %s je odjavljen (nepravilna IP adresa).', - logoutKicked: 'Korisnik %s je odjavljen (prognan).', - channelEnter: 'Korisnik %s pristupa kanalu.', - channelLeave: 'Korisnik %s napušta kanal.', - privmsg: '(šapuće)', - privmsgto: '(šapuće korisniku %s)', - invite: 'Korisnik %s poziva vas da se pridružite kanalu %s.', - inviteto: 'Vaš poziv korisniku %s da se pridruži kanalu %s je poslan.', - uninvite: 'Korisnik %s povukao je svoj poziv za kanal %s.', - uninviteto: 'Vaš opoziv korisniku %s za pridruživanje kanalu %s je poslan.', - queryOpen: 'Otvoren je privatni kanal za %s.', - queryClose: 'Privatni kanal za %s je zatvoren.', - ignoreAdded: 'Korisnik %s je dodan na popis ignoriranih.', - ignoreRemoved: 'Korisnik %s je uklonjen s popisa ignoriranih.', - ignoreList: 'Ignorirani korisnici:', - ignoreListEmpty: 'Nema ignoriranih korisnika.', - who: 'Prisutni korisnici:', - whoChannel: 'Prisutni korisnici u kanalu %s.', - whoEmpty: 'U odabranom kanalu nema prisutnih korisnika.', - list: 'Dostupni kanali:', - bans: 'Zabranjeni korisnici:', - bansEmpty: 'Nema zabranjenih korisnika.', - unban: 'Opozvana je zabrana korisnika %s.', - whois: 'Korisnik %s - IP adresa:', - whereis: 'Korisnik %s je u kanalu %s.', - roll: 'Korisnik %s baca %s i dobiva %s.', - nick: 'Korisnik %s je sad poznat kao %s.', - toggleUserMenu: 'Prebaci korisnički zbornik za %s', - userMenuLogout: 'Odjava', - userMenuWho: 'Ispiši prisutne korisnike', - userMenuList: 'Ispiši dostupne kanale', - userMenuAction: 'Aktivnost', - userMenuRoll: 'Baci kocku', - userMenuNick: 'Promijeni korisničko ime', - userMenuEnterPrivateRoom: 'Pristupi privatnoj sobi', - userMenuSendPrivateMessage: 'Pošalji privatnu poruku', - userMenuDescribe: 'Pošalji privatnu aktivnost', - userMenuOpenPrivateChannel: 'Otvori privatni kanal', - userMenuClosePrivateChannel: 'Zatvori privatni kanal', - userMenuInvite: 'Pozovi', - userMenuUninvite: 'Opozovi', - userMenuIgnore: 'Ignoriraj / Prihvati', - userMenuIgnoreList: 'Ispiši ignorirane korisnike', - userMenuWhereis: 'Prikaži kanal', - userMenuKick: 'Prognaj / Zabrani', - userMenuBans: 'Ispiši zabranjene korisnike', - userMenuWhois: 'Prikaži IP', - unbanUser: 'Opozovi zabranu korisnika %s.', - joinChannel: 'Pridruži se kanalu %s', - cite: 'Korisnik %s je rekao:', - urlDialog: 'Unesite URL adresu web-stranice:', - deleteMessage: 'Izbriši ovu poruku', - deleteMessageConfirm: 'Želite li zaista izbrisati ovu poruku?', - errorCookiesRequired: 'Ovo brbljanje zahtjeva omogućene kolačiće.', - errorUserNameNotFound: 'Pogreška: Korisnik %s nije pronađen.', - errorMissingText: 'Pogreška: Nedostaje tekst poruke.', - errorMissingUserName: 'Pogreška: Nedostaje korisničko ime.', - errorInvalidUserName: 'Pogreška: Nepravilno korisničko ime.', - errorUserNameInUse: 'Pogreška: Korisničko ime već je u upotrebi.', - errorMissingChannelName: 'Pogreška: Nedostaje naziv kanala.', - errorInvalidChannelName: 'Pogreška: Nepravilan naziv kanala: %s', - errorPrivateMessageNotAllowed: 'Pogreška: Privatne poruke nisu dopuštene.', - errorInviteNotAllowed: 'Pogreška: Nemate dopuštenja za pozivanje drugih osoba u ovaj kanal.', - errorUninviteNotAllowed: 'Pogreška: Nemate dopuštenja za opozivanje drugih osoba u ovom kanalu.', - errorNoOpenQuery: 'Pogreška: Nema otvorenog privatnog kanala.', - errorKickNotAllowed: 'Pogreška: Nemate dopuštenja za progon korisnika %s.', - errorCommandNotAllowed: 'Pogreška: Naredba nije dopuštena: %s', - errorUnknownCommand: 'Pogreška: Nepoznata naredba: %s', - errorMaxMessageRate: 'Pogreška: Premašili ste najveći dopušteni broj poruka u minuti.', - errorConnectionTimeout: 'Pogreška: Neaktivna veza. Pokušajte ponovo.', - errorConnectionStatus: 'Pogreška: Stanje veze: %s', - errorSoundIO: 'Pogreška: Učitavanje datoteke zvuka nije uspjelo (Flash IO pogreška).', - errorSocketIO: 'Pogreška: Povezivanje s priključkom poslužitelja nije uspjelo (Flash IO pogreška).', - errorSocketSecurity: 'Pogreška: Povezivanje s priključkom poslužitelja nije uspjelo (Flash sigurnosna pogreška).', - errorDOMSyntax: 'Pogreška: Nepravilna DOM sintaksa (DOM ID: %s).' - -} diff --git a/library/ajaxchat/chat/js/lang/hu.js b/library/ajaxchat/chat/js/lang/hu.js deleted file mode 100644 index ec2a45e14..000000000 --- a/library/ajaxchat/chat/js/lang/hu.js +++ /dev/null @@ -1,91 +0,0 @@ -/* - * @package AJAX_Chat - * @author Sebastian Tschan - * @copyright (c) Sebastian Tschan - * @license Modified MIT License - * @link https://blueimp.net/ajax/ - */ - -// Ajax Chat language Object: -var ajaxChatLang = { - - login: '%s belépett a chatre.', - logout: '%s kilépett a chatről.', - logoutTimeout: '%s kilépett a chatről (Időtúllépés).', - logoutIP: '%s kilépett a chatről (Hamis IP cím).', - logoutKicked: '%s ki lett rúgva a chatről.', - channelEnter: '%s belépett a szobába.', - channelLeave: '%s kilépett a szobából.', - privmsg: '(suttog)', - privmsgto: '(suttog %s felhasználónak)', - invite: '%s meghívott a következő szobába: %s.', - inviteto: 'A meghívása %s részére a(z) %s szobába elküldve.', - uninvite: '%s hívatlan vendégnek tart a(z) %s szobában.', - uninviteto: 'Hívatlan vendég jelzője %s számára elküldve a(z) %s szobában.', - queryOpen: 'Privát szoba megnyitva %s felhasználónak.', - queryClose: 'Privát szoba bezárva %s felhasználóval.', - ignoreAdded: '%s hozzáadva a figyelmen kívül hagyottakhoz.', - ignoreRemoved: '%s eltávolítva a figyelmen kívül hagyottak közül.', - ignoreList: 'Figyelmen kívül hagyott felhasználók:', - ignoreListEmpty: 'Nincsenek figyelmen kívül hagyott felhasználók.', - who: 'Jelenlévők:', - whoChannel: 'Jelenlévők a(z) %s szobában:', - whoEmpty: 'Senki nincs a megadott szobában.', - list: 'Szobák:', - bans: 'Kitiltott felhasználók:', - bansEmpty: 'Nincs kitiltott felhasználó.', - unban: '%s tiltása törölve.', - whois: '%s IP címe:', - whereis: '%s a következő szobákban van: %s.', - roll: '%s rolls %s and gets %s.', - nick: '%s új nickje %s.', - toggleUserMenu: '%s - felhasználói menüjének mutatása', - userMenuLogout: 'Kilépés', - userMenuWho: 'Jelenlévők listája', - userMenuList: 'Szobák listája', - userMenuAction: 'Akció küldése', - userMenuRoll: 'Dobókocka játék', - userMenuNick: 'Nick cseréje', - userMenuEnterPrivateRoom: 'Privát szobába lépés', - userMenuSendPrivateMessage: 'Privát üzenet küldése', - userMenuDescribe: 'Privát akció küldése', - userMenuOpenPrivateChannel: 'Privát szoba nyitása', - userMenuClosePrivateChannel: 'Privát szoba bezárása', - userMenuInvite: 'Meghívás', - userMenuUninvite: 'Hívatlan vendég', - userMenuIgnore: 'Figyelmen kívül hagy/engedélyez', - userMenuIgnoreList: 'Figyelmen kívül hagyottak', - userMenuWhereis: 'Szobák mutatása, ahol jelen van', - userMenuKick: 'Kirúgás/kitiltás', - userMenuBans: 'Kitiltottak listája', - userMenuWhois: 'IP megjelenítése', - unbanUser: '%s kitiltásának feloldása', - joinChannel: 'Belépés a szobába %s', - cite: '%s azt mondja:', - urlDialog: 'Kérem írja be a honlap URL-jét:', - deleteMessage: 'Chat üzenet törlése', - deleteMessageConfirm: 'Valóban törölni akarja az üzenetet?', - errorCookiesRequired: 'A cookiek engedélyezése szükséges a chat használatához.', - errorUserNameNotFound: 'Hiba: A %s felhasználó nem található.', - errorMissingText: 'Hiba: hiányzó üzenet.', - errorMissingUserName: 'Hiba: hiányzó felhasználónév.', - errorInvalidUserName: 'Hiba: hamis felhasználónév.', - errorUserNameInUse: 'Hiba: a név már használatban van.', - errorMissingChannelName: 'Hiba: hiányzó szoba név.', - errorInvalidChannelName: 'Hiba: hamis szoba név: %s', - errorPrivateMessageNotAllowed: 'Hiba: a privát üzenetek nem engedélyezettek.', - errorInviteNotAllowed: 'Hiba: nem vagy jogosult felhasználókat meghívni a szobába.', - errorUninviteNotAllowed: 'Hiba: nem vagy jogosult hívatlan vendégnek titulálni bárkit a szobában.', - errorNoOpenQuery: 'Hiba: nincs jogod szobát nyitni.', - errorKickNotAllowed: 'Hiba: nincs jogod kirúgni %s-t.', - errorCommandNotAllowed: 'Hiba: a parancs nem engedélyezett: %s', - errorUnknownCommand: 'Hiba: ismeretlen parancs: %s', - errorMaxMessageRate: 'Hiba: elérted a percenként küldhető maximális üzenet számot.', - errorConnectionTimeout: 'Hiba: időtúllépés! Próbáld újra!.', - errorConnectionStatus: 'Hiba: a kapcsolat állapota: %s', - errorSoundIO: 'Hiba: a hangfájl betöltése sikertelen. (I/O)', - errorSocketIO: 'Hiba: kapcsolódás a socket szerverhez sikertelen. (I/O)', - errorSocketSecurity: 'Hiba: kapcsolódás a socket szerverhez sikertelen. (Biztonsági hiba!)', - errorDOMSyntax: 'Hiba: Hibás DOM szintaxis (DOM ID: %s).' - -} \ No newline at end of file diff --git a/library/ajaxchat/chat/js/lang/in.js b/library/ajaxchat/chat/js/lang/in.js deleted file mode 100644 index 582b9703b..000000000 --- a/library/ajaxchat/chat/js/lang/in.js +++ /dev/null @@ -1,91 +0,0 @@ -/* - * @package AJAX_Chat - * @author Sebastian Tschan - * @copyright (c) Sebastian Tschan - * @license Modified MIT License - * @link https://blueimp.net/ajax/ - */ - -// Ajax Chat language Object: -var ajaxChatLang = { - - login: '%s masuk ke chat.', - logout: '%s keluar dari chat.', - logoutTimeout: '%s telah keluar dari saluran (Timeout).', - logoutIP: '%s elah keluar dari saluran (Invalid IP address).', - logoutKicked: '%s elah keluar dari saluran (Kicked).', - channelEnter: '%s masuk saluran.', - channelLeave: '%s meninggalkan.', - privmsg: '(berbisik)', - privmsgto: '(berbisik ke %s)', - invite: '%s mengundang anda untuk gabung ke %s.', - inviteto: 'Undangan anda ke %s untuk gabung saluran %s telah dikirim.', - uninvite: '%s membatalkan untuk mengundang anda dari saluran %s.', - uninviteto: 'Pembatalan undangan anda ke %s untuk salura %s telah dikirim.', - queryOpen: 'Saluran Privasi telah dibuka untuk %s.', - queryClose: 'Saluran Privasi untuk %s telah ditutup.', - ignoreAdded: 'Menambah %s ke daftar yang diacuhkan.', - ignoreRemoved: 'Mencabut %s dari daftar yang diacuhkan.', - ignoreList: 'Acuhkan pengguna:', - ignoreListEmpty: 'Tidak ada nama dalam daftar yang diacuhkan.', - who: 'Pengguna online:', - whoChannel: 'Pengguna-2 yang online di saluran %s:', - whoEmpty: 'Tidak ada pengguna yang online di saluran tersebut.', - list: 'Saluran yang tersedia:', - bans: 'Pengguna yang diblok:', - bansEmpty: 'Tidak ada pengguna yang diblok.', - unban: 'Pembatalan Blok pengguna %s .', - whois: 'Alamat IP Pengguna %s :', - whereis: 'Pengguna %s ada di saluran %s.', - roll: '%s melempar %s dan mendapatkan %s.', - nick: '%s sekarang dikenal sebagai %s.', - toggleUserMenu: 'Tombol menu pengguna untuk %s', - userMenuLogout: 'Keluar', - userMenuWho: 'Daftar pengguna yang online', - userMenuList: 'Daftar saluran-saluran yang tersedia', - userMenuAction: 'Menjelaskan tindakan', - userMenuRoll: 'Melempar Dadu', - userMenuNick: 'Mengganti Nama', - userMenuEnterPrivateRoom: 'Memasuki ruang privasi', - userMenuSendPrivateMessage: 'Kirim pesan pribadi', - userMenuDescribe: 'Kirim tindakan pribadi', - userMenuOpenPrivateChannel: 'Buka Saluran Privasi', - userMenuClosePrivateChannel: 'Tutup Saluran Privasi', - userMenuInvite: 'Mengundang', - userMenuUninvite: 'Tidak Mengundang', - userMenuIgnore: 'Acuhkan/Terima', - userMenuIgnoreList: 'Daftar Pengguna yang diacuhkan', - userMenuWhereis: 'Tampilkan Saluran', - userMenuKick: 'Tendang/Blok', - userMenuBans: 'Daftar Pengguna yang diblok', - userMenuWhois: 'Tampilkan IP', - unbanUser: 'Batalkan blok pengguna %s', - joinChannel: 'Gabung Saluran %s', - cite: '%s berkata:', - urlDialog: 'Mohon masukan alamat (URL) of the web:', - deleteMessage: 'Hapus pesan chat ini', - deleteMessageConfirm: 'Yakin akan menghapus pesan chat yang dipilih?', - errorCookiesRequired: 'Cookies diperlukan untuk chat.', - errorUserNameNotFound: 'Error: Pengguna %s tidak ada.', - errorMissingText: 'Error: Teks pesan tidak ada.', - errorMissingUserName: 'Error: Nama tidak ada.', - errorInvalidUserName: 'Error: Kesalahan pada Nama.', - errorUserNameInUse: 'Error: Nama telah dipakai.', - errorMissingChannelName: 'Error: Nama saluran belum ada.', - errorInvalidChannelName: 'Error: Kesalahan pada nama saluran: %s', - errorPrivateMessageNotAllowed: 'Error: Pesan pribadi tidak diijinkan.', - errorInviteNotAllowed: 'Error: Anda tidak diijinkan untuk mengundang orang lain ke saluran ini.', - errorUninviteNotAllowed: 'Error: Anda tidak diijinkan untuk tidak mengundang seseorang ke saluran ini.', - errorNoOpenQuery: 'Error: Tidak ada saluran privasi yang dibuka.', - errorKickNotAllowed: 'Error: Anda tidak diijinkan untuk menendang %s.', - errorCommandNotAllowed: 'Error: Perintah tidak diijinkan: %s', - errorUnknownCommand: 'Error: Perintah tidak diketahui: %s', - errorMaxMessageRate: 'Error: Anda telah melampaui batas pesan maksimum per menitnya.', - errorConnectionTimeout: 'Error: Koneksi putus. Mohon dicoba kembali.', - errorConnectionStatus: 'Error: Status koneksi: %s', - errorSoundIO: 'Error: Gagal mengeluarkan suara (Flash IO Error).', - errorSocketIO: 'Error: Gagal mengadakan koneksi ke server (Flash IO Error).', - errorSocketSecurity: 'Error: Gagal mengadakan koneksi ke server (Flash Security Error).', - errorDOMSyntax: 'Error: Sintaks DOM yang tidak dikenal(DOM ID: %s).' - -} \ No newline at end of file diff --git a/library/ajaxchat/chat/js/lang/index.html b/library/ajaxchat/chat/js/lang/index.html deleted file mode 100644 index e69de29bb..000000000 diff --git a/library/ajaxchat/chat/js/lang/it.js b/library/ajaxchat/chat/js/lang/it.js deleted file mode 100644 index a84c47ff9..000000000 --- a/library/ajaxchat/chat/js/lang/it.js +++ /dev/null @@ -1,93 +0,0 @@ -/* - * @package AJAX_Chat - * @author Sebastian Tschan - * @author s8s8 - * @author Massimiliano Tiraboschi - * @copyright (c) Sebastian Tschan - * @license Modified MIT License - * @link https://blueimp.net/ajax/ - */ - -// Ajax Chat language Object: -var ajaxChatLang = { - - login: '%s entra in Chat.', - logout: '%s esce dalla Chat.', - logoutTimeout: '%s esce (TimeOut).', - logoutIP: '%s esce (IP non valido).', - logoutKicked: '%s esce (Kicked).', - channelEnter: '%s entra nel canale.', - channelLeave: '%s lascia il canale.', - privmsg: '(privato)', - privmsgto: '(privato a %s)', - invite: '%s ti invita a entrare in %s.', - inviteto: 'Il tuo invito ad entrare nel canale %s è stato inviato a %s.', - uninvite: '%s ha rimosso il tuo invito per %s.', - uninviteto: 'Rimosso invito per %s per il canale %s.', - queryOpen: 'Canale privato aperto con %s.', - queryClose: 'Canale privato con %s chiuso.', - ignoreAdded: '%s aggiunto agli ingorati.', - ignoreRemoved: '%s rimosso dagli ignorati.', - ignoreList: 'Utenti Ignorati:', - ignoreListEmpty: 'Utenti permessi.', - who: 'Utenti Online:', - whoChannel: 'Utenti Online nel canale %s:', - whoEmpty: 'Nessun utente in linea nel canale.', - list: 'Canali disponibili:', - bans: 'Utenti Bannati:', - bansEmpty: 'Nessun utente bannato in lista.', - unban: 'Ban di %s rimosso.', - whois: '%s - IP:', - whereis: 'User %s is in channel %s.', - roll: '%s lancia %s e fa %s.', - nick: '%s è conosciuto ora come %s.', - toggleUserMenu: 'Mostra/Nascondi menu per %s', - userMenuLogout: 'Esci', - userMenuWho: 'Lista utenti online', - userMenuList: 'Lista canali disponibili', - userMenuAction: 'Descrivi azione', - userMenuRoll: 'Getta dadi', - userMenuNick: 'Cambia username', - userMenuEnterPrivateRoom: 'Entra canale privato', - userMenuSendPrivateMessage: 'Invia messaggio privato', - userMenuDescribe: 'Invia azione privata', - userMenuOpenPrivateChannel: 'Apri canale privato', - userMenuClosePrivateChannel: 'Chiudi canale privato', - userMenuInvite: 'Invita', - userMenuUninvite: 'Disinvita', - userMenuIgnore: 'Ignora/Accetta', - userMenuIgnoreList: 'Lista utenti ignorati', - userMenuWhereis: 'Mostra canale', - userMenuKick: 'Butta fuori/Banna', - userMenuBans: 'Lista utenti bannati', - userMenuWhois: 'Mostra IP', - unbanUser: 'Revoca il ban per l\'utente %s', - joinChannel: 'Entra nel canale %s', - cite: '%s dice:', - urlDialog: 'Inserire indirizzo (URL) della pagina Web:', - deleteMessage: 'Cancella questo messaggio', - deleteMessageConfirm: 'Sicuro di cancellare il messaggio selezionato ?', - errorCookiesRequired: 'I Cookies sono richiesti per questa chat.', - errorUserNameNotFound: 'Errore: Utente %s non trovato.', - errorMissingText: 'Errore: Messaggio di testo non trovato.', - errorMissingUserName: 'Errore: Nome Utente non trovato.', - errorInvalidUserName: 'Error: Invalid username.', - errorUserNameInUse: 'Error: Username already in use.', - errorMissingChannelName: 'Errore: Canale non trovato.', - errorInvalidChannelName: 'Errore: Nome canale non valido: %s', - errorPrivateMessageNotAllowed: 'Errore: Messaggi privati non permessi.', - errorInviteNotAllowed: 'Errore: Non hai il permesso di invitare in questo canale.', - errorUninviteNotAllowed: 'Errore: Non hai il permesso di rimuovere inviti per queso canale.', - errorNoOpenQuery: 'Errore: Nessun canale privato aperto.', - errorKickNotAllowed: 'Errore: Non sei abilitato a Kikkare %s.', - errorCommandNotAllowed: 'Errore: Comando non permesso: %s', - errorUnknownCommand: 'Errore: Comando sconosciuto: %s', - errorMaxMessageRate: 'Errore: Hai superato il numero massimo di messaggi per minuto.', - errorConnectionTimeout: 'Errore: Connessione persa. Riprovare.', - errorConnectionStatus: 'Errore: Stato di Connessione: %s', - errorSoundIO: 'Errore: Caricamento files suono fallito (Flash IO Error).', - errorSocketIO: 'Errore: Connection to socket server failed (Flash IO Error).', - errorSocketSecurity: 'Error: Connection to socket server failed (Flash Security Error).', - errorDOMSyntax: 'Error: Invalid DOM Syntax (DOM ID: %s).' - -} \ No newline at end of file diff --git a/library/ajaxchat/chat/js/lang/ja.js b/library/ajaxchat/chat/js/lang/ja.js deleted file mode 100644 index 5d87d2eea..000000000 --- a/library/ajaxchat/chat/js/lang/ja.js +++ /dev/null @@ -1,91 +0,0 @@ -/* - * @package AJAX_Chat - * @author Sebastian Tschan - * @copyright (c) Sebastian Tschan - * @license Modified MIT License - * @link https://blueimp.net/ajax/ - */ - -// Ajax Chat language Object: -var ajaxChatLang = { - - login: '%s さんがログインしました', - logout: '%s さんがログアウトしました', - logoutTimeout: '%s さんが強制的にログアウトされました (タイムアウト)', - logoutIP: '%s さんが強制的にログアウトされました (不正な IPアドレス)', - logoutKicked: '%s さんが強制的にログアウトされました (キック).', - channelEnter: '%s さんが入室しました', - channelLeave: '%s さんが退室しました', - privmsg: '(プライベートメッセージ)', - privmsgto: '(%s さんへプライベートメッセージ)', - invite: '%s さんから チャンネル %s への招待 が届いています', - inviteto: '%s さんへ チャンネル %s への招待 を送りました', - uninvite: '%s さんから チャンネル %s への招待 を取り消されました', - uninviteto: '%s さんの チャンネル %s への招待 を取り消しました', - queryOpen: '二人きりモードを %s さんと開始しました', - queryClose: '%s さんとの二人きりモードを終了しました', - ignoreAdded: '%s さんを無視ユーザーリストに追加しました', - ignoreRemoved: '%s さんを無理ユーザーリストから削除しました', - ignoreList: '無視ユーザーリスト :', - ignoreListEmpty: 'あなたはどのユーザーも無視していません', - who: 'オンラインユーザー :', - whoChannel: 'チャンネル %s に入室中のユーザー :', - whoEmpty: 'そのチャンネルに入室中のユーザーは一人もいません', - list: '入室可能なチャンネル :', - bans: 'アクセス禁止ユーザーリスト :', - bansEmpty: 'アクセス禁止されたユーザーは一人もいません', - unban: 'ユーザー %s のアクセス禁止を取り消しました', - whois: 'ユーザー %s の IPアドレス :', - whereis: 'ユーザー %s はチャンネル %s にいます', - roll: '%s さんがサイコロを振りました。 %s - 結果 %s', - nick: '%s さんのニックネームは以降 %s です', - toggleUserMenu: '%s さんのユーザーメニューを表示する/表示しない', - userMenuLogout: 'ログアウト', - userMenuWho: 'オンラインユーザーリスト', - userMenuList: '入室可能なチャンネルのリスト', - userMenuAction: '感情を表現する', - userMenuRoll: 'サイコロを振る', - userMenuNick: 'ニックネーム', - userMenuEnterPrivateRoom: 'プライベートルームへ移動する', - userMenuSendPrivateMessage: 'プライベートメッセージを送る', - userMenuDescribe: '感情を表現する', - userMenuOpenPrivateChannel: '二人きりモードを開始する', - userMenuClosePrivateChannel: '二人きりモードを終了する', - userMenuInvite: '招待する', - userMenuUninvite: '招待を取り消す', - userMenuIgnore: '無視する/無視しない', - userMenuIgnoreList: '無視ユーザーリスト', - userMenuWhereis: 'ユーザーの居場所', - userMenuKick: 'キック/アクセス禁止', - userMenuBans: 'アクセス禁止ユーザーリスト', - userMenuWhois: 'IPアドレス', - unbanUser: 'ユーザー %s のアクセス禁止を取り消す', - joinChannel: 'チャンネル %s へ移動する', - cite: '%s さんが言いました :', - urlDialog: 'サイトのアドレス (URL) を入力してください :', - deleteMessage: 'このチャットメッセージを削除する', - deleteMessageConfirm: 'チャットメッセージを本当に削除してもよろしいですか?', - errorCookiesRequired: 'このチャットシステムを利用するには Cookie を有効にしておく必要があります', - errorUserNameNotFound: 'エラー : ユーザー %s が見つかりませんでした', - errorMissingText: 'エラー : メッセージが未入力です', - errorMissingUserName: 'エラー : ユーザー名が未入力です', - errorInvalidUserName: 'エラー : ユーザー名が正しくありません', - errorUserNameInUse: 'エラー : そのユーザー名は既に使われています', - errorMissingChannelName: 'エラー : チャンネル名が未入力です', - errorInvalidChannelName: 'エラー : チャンネル名が正しくありません : %s', - errorPrivateMessageNotAllowed: 'エラー : プライベートメッセージが許可されていません', - errorInviteNotAllowed: 'エラー : あなたはこのチャンネルで誰かを招待することを許可されていません', - errorUninviteNotAllowed: 'エラー : あなたはこのチャンネルで誰かの招待を取り消すことを許可されていません', - errorNoOpenQuery: 'エラー : 二人きりモードが開始されていません', - errorKickNotAllowed: 'エラー : あなたは %s さんをキックすることを許可されていません', - errorCommandNotAllowed: 'エラー : コマンドが許可されていません : %s', - errorUnknownCommand: 'エラー : コマンドが不正です : %s', - errorMaxMessageRate: 'エラー : 1分あたりに発言できる最大文字数を超えています', - errorConnectionTimeout: 'エラー : 接続がタイムアウトしました。再度試してください。', - errorConnectionStatus: 'エラー : 接続ステータス : %s', - errorSoundIO: 'エラー : サウンドファイルの読み込みに失敗しました (Flash IO Error)', - errorSocketIO: 'エラー : ソケットサーバへの接続に失敗しました (Flash IO Error)', - errorSocketSecurity: 'エラー : ソケットサーバへの接続に失敗しました (Flash Security Error)', - errorDOMSyntax: 'エラー : DOM の文法が不正です (DOM ID: %s)' - -} \ No newline at end of file diff --git a/library/ajaxchat/chat/js/lang/ka.js b/library/ajaxchat/chat/js/lang/ka.js deleted file mode 100644 index 6f0a24d72..000000000 --- a/library/ajaxchat/chat/js/lang/ka.js +++ /dev/null @@ -1,91 +0,0 @@ -/* - * @package AJAX_Chat - * @author Sebastian Tschan - * @copyright (c) Sebastian Tschan - * @license Modified MIT License - * @link https://blueimp.net/ajax/ - */ - -// Ajax Chat language Object: -var ajaxChatLang = { - - login: '%s ჩატში შემოვიდა.', - logout: '%s ჩატიდან გავიდა.', - logoutTimeout: '%s ჩატი დატოვა (დრო ამოიწურა).', - logoutIP: '%s ჩატი დატოვა (არასწორი IP მისამართი).', - logoutKicked: '%s ჩატი დატოვა (ამოარტყეს).', - channelEnter: '%s უერთდება არხს.', - channelLeave: '%s ტოვებს არხს.', - privmsg: '(ჩურჩულებს)', - privmsgto: '(%s-ს უჩურჩულებს)', - invite: '%s გეპაიჟებათ შეუერთდეთ %s-ს.', - inviteto: '%s-თვის შექმნილი მოსაწვევი, რათა შეუერთდეს არხ %s-ს, გაგზავნილია.', - uninvite: '%s თავის დაპატიჟებას არხ %s-თვის აუქმებს.', - uninviteto: '%s-თვის დაწერილი, %s არხის მოსაწვევის გაუქმება გაგხავნილია.', - queryOpen: 'პირადი არხი %s-სთან გასხნილია.', - queryClose: 'პირადი არხი %s-სთან დახურულია.', - ignoreAdded: '%s იგნორირების სიას დაემატა.', - ignoreRemoved: '%s იგნორირების სიიდან ამოღებულია.', - ignoreList: 'იგნორირებულები:', - ignoreListEmpty: 'იგნორირებული წევრები არაა.', - who: 'ხაზზე არიან:', - whoChannel: 'არხ %s-ში ხაზზე არიან:', - whoEmpty: 'მოცემულ არხში ხაზზე არავინაა.', - list: 'ხელმისაწვდომი არხები:', - bans: 'დაბლოკილი წევრები:', - bansEmpty: 'დაბლოკილი წევრები არაა.', - unban: '%s წევრის ბლოკი მოხსნილია.', - whois: '%s წევრის - IP მისამართი:', - whereis: 'წევრი %s იმყოფება %s არხში.', - roll: '%s აგდებს %s-ს და იღებს %s-ს.', - nick: '%s ახლა ცნობილია როგორც %s.', - toggleUserMenu: 'წევრის მენიუს %s-თვის ჩართვა/გათიშვა', - userMenuLogout: 'გასვლა', - userMenuWho: 'ჩამოწერე ხაზზე ვინაა', - userMenuList: 'ჩამოწერე ხელმისაწვდომი არხები', - userMenuAction: 'აღწერე ქმედება', - userMenuRoll: 'კამათლების გაგორება', - userMenuNick: 'მეტსახელის შეცვლა', - userMenuEnterPrivateRoom: 'პირად ოთახში შესვლა', - userMenuSendPrivateMessage: 'პირადი მიმოწერა', - userMenuDescribe: 'პირადი ქმედების გაგზავნა', - userMenuOpenPrivateChannel: 'გახსენი პირადი არხი', - userMenuClosePrivateChannel: 'დახურე პირადი არხი', - userMenuInvite: 'დაპატიჟება', - userMenuUninvite: 'დაპატიჟების გაუქმება', - userMenuIgnore: 'იგნორირება/მიღება', - userMenuIgnoreList: 'ჩამოწერე იგნორირებულები', - userMenuWhereis: 'მაჩვენე არხი', - userMenuKick: 'ამორტყმა/დაბლოკვა', - userMenuBans: 'დაბლოკილების ჩამოწერა', - userMenuWhois: 'IP-ს ჩვენება', - unbanUser: '%s წევრის ბლოკის მოხსნა', - joinChannel: '%s არხში შესვლა', - cite: '%s თქვა:', - urlDialog: 'გთხოვთ შეიყვანოთ ვებ-გვერდის მისამართი (URL):', - deleteMessage: 'გზავნილის წაშლა', - deleteMessageConfirm: 'მართლა წავშალოთ ეს გზავნილი?', - errorCookiesRequired: 'ჩატისთვის cookies არიან საჭირო.', - errorUserNameNotFound: 'შეცდომა: წევრი %s არ მოიძებნა.', - errorMissingText: 'შეცდომა: გზავნილის ტექსტი აკლია.', - errorMissingUserName: 'შეცდომა: აკლია მეტსახელი.', - errorInvalidUserName: 'შეცდომა: არასწორი მეტსახელი.', - errorUserNameInUse: 'შეცდომა: მეტსახელი დაკავებულია.', - errorMissingChannelName: 'შეცდომა: აკლია არხის სახელი.', - errorInvalidChannelName: 'შეცდომა: არხის სახელი - %s - არასწორია', - errorPrivateMessageNotAllowed: 'შეცდომა: პირადი მიმოწერა აკრზალულია.', - errorInviteNotAllowed: 'შეცდომა: უფლება არ გაქვთ მიმდინარე არხში ვინმე მოიწვიოთ.', - errorUninviteNotAllowed: 'შეცდომა: უფლება არ გაქავთ მინდინარე არხიდან ვინმესი გაგდება.', - errorNoOpenQuery: 'შეცდომა: პირადი არხები გახსნილი არაა.', - errorKickNotAllowed: 'შეცდომა: უფლება არ გაგჩნიათ %s-ს ამოარტყათ.', - errorCommandNotAllowed: 'შეცდომა: ბრზანება - %s - აკრძალულია', - errorUnknownCommand: 'შეცდომა: ბრძანება - %s - უცნობია', - errorMaxMessageRate: 'შეცდომა: თქვენ მიაღწიეთ წუთში მაქსიმალურ შესაძლებელ გზავნილების რიცხვს.', - errorConnectionTimeout: 'შეცდომა: კავშირს ვადა გაუვიდა. გთხოვთ, კიდევ სცადეთ.', - errorConnectionStatus: 'შეცდომა: კავშირის სტატუსი: %s', - errorSoundIO: 'შეცდომა: ხმის ფაილი ვერ ჩაიტვირთა (Flash IO Error).', - errorSocketIO: 'შეცდომა: სერვერის სოკეტთან დაკავშირება ჩაიშალა (Flash IO Error).', - errorSocketSecurity: 'შეცდომა: სერვერის სოკეტთან დაკავშირება ჩაიშალა (Flash Security Error).', - errorDOMSyntax: 'შეცდომა: არასწორი DOM სინტაქსი (DOM ID: %s).' - -} \ No newline at end of file diff --git a/library/ajaxchat/chat/js/lang/kr.js b/library/ajaxchat/chat/js/lang/kr.js deleted file mode 100644 index 27ef9196d..000000000 --- a/library/ajaxchat/chat/js/lang/kr.js +++ /dev/null @@ -1,91 +0,0 @@ -/* - * @package AJAX_Chat - * @author Sebastian Tschan - * @copyright (c) Sebastian Tschan - * @license Modified MIT License - * @link https://blueimp.net/ajax/ - */ - -// Ajax Chat language Object: -var ajaxChatLang = { - - login: '%s께서 접속하였습니다.', - logout: '%s님께서 접속을 종료하였습니다.', - logoutTimeout: '%s님께서 시간초과로 나가셨습니다.', - logoutIP: '%s님께서 IP주소문제로 나가셨습니다.', - logoutKicked: '%s님께서 추방되었습니다.', - channelEnter: '%s님께서 들어오셨습니다.', - channelLeave: '%s님께서 나가셨습니다.', - privmsg: '(귓속말)', - privmsgto: '(%s에게 귓속말)', - invite: '%s님께서 %s채널에서 초대하셨습니다.', - inviteto: '%s을 %s채널로 초대하는 메시지를 보냈습니다..', - uninvite: '%s님께서 %s채널로의 초대를 취소하였습니다.', - uninviteto: '%s님께 %s채널로의 초대를 취소하는 메시지를 보냈습니다', - queryOpen: '%s님의 개인채널이 열렸습니다.', - queryClose: '%s님의 개인채널이 닫혔습니다.', - ignoreAdded: '%s님을 대화차단 목록에 추가하였습니다.', - ignoreRemoved: '%s님을 대화차단 목록에서 삭제하였습니다.', - ignoreList: '차단된 사용자:', - ignoreListEmpty: '차단된 사용자가 없습니다.', - who: '접속중인 사용자:', - whoChannel: '%s채널에 접속중인 사용자:', - whoEmpty: '해당 채널에 접속중인 사용자가 없습니다.', - list: '사용가능한 채널:', - bans: '추방된 사용자:', - bansEmpty: '추방된 사용자가 없습니다.', - unban: '%s을 다시 복구하였습니다.', - whois: '%s - IP주소:', - whereis: '%s님은 %s 채널에 계십니다.', - roll: '%s 롤 %s 및 도착 %s.', - nick: '%s님의 닉네임은 %s입니다.', - toggleUserMenu: '에 대한 전환 사용자 메뉴 %s', - userMenuLogout: '로그아웃', - userMenuWho: '접속중인 사용자', - userMenuList: '채널목록', - userMenuAction: '작업을 설명', - userMenuRoll: '주사위', - userMenuNick: '대화명 변경', - userMenuEnterPrivateRoom: '개인 대화방 입장', - userMenuSendPrivateMessage: '귓속말 전송', - userMenuDescribe: '개인 작업을 보내기', - userMenuOpenPrivateChannel: '개인 채널 개설', - userMenuClosePrivateChannel: '개인 채널 닫기', - userMenuInvite: '초대', - userMenuUninvite: '초대 취소', - userMenuIgnore: '차단/수락', - userMenuIgnoreList: '대화차단 목록', - userMenuWhereis: '채널확인', - userMenuKick: '추방', - userMenuBans: '추방된 사용자 목록', - userMenuWhois: '접속주소 확인', - unbanUser: '%s 사용자를 추방취소', - joinChannel: '%s 채널에 접속', - cite: '%s님의 말:', - urlDialog: '웹페이지의 주소를 입력하세요:', - deleteMessage: '이 메시지 삭제', - deleteMessageConfirm: '선택한 메시지를 삭제하시겠습니까?', - errorCookiesRequired: '쿠키 사용으로 설정하세요.', - errorUserNameNotFound: '오류: %s님을 찾을 수 없습니다.', - errorMissingText: '오류: 메시지를 찾을 수 없습니다.', - errorMissingUserName: '오류: 대화명을 찾을 수 없습니다.', - errorInvalidUserName: '오류: 잘못된 대화명입니다.', - errorUserNameInUse: '오류: 이미 사용중인 대화명입니다.', - errorMissingChannelName: '오류: 채널명을 찾을 수 없습니다.', - errorInvalidChannelName: '오류: %s 채널이 없습니다.', - errorPrivateMessageNotAllowed: '오류: 귓속말을 사용할 수 없습니다.', - errorInviteNotAllowed: '오류: 이 채널로 다른 사용자를 초대하는 권한이 없습니다.', - errorUninviteNotAllowed: '오류: 다른 사용자의 초대를 취소할 권한이 없습니다.', - errorNoOpenQuery: '오류: 열려있는 개인 채널이 없습니다..', - errorKickNotAllowed: '오류: %s를 추방할 수 있는 권한이 없습니다.', - errorCommandNotAllowed: '오류: %s 명령을 사용할 수 없습니다.', - errorUnknownCommand: '오류: %s은 없는 명령어입니다.', - errorMaxMessageRate: '오류: 1분동안 연속해서 입력할 수 있는 메시지 수를 초과하였습니다.', - errorConnectionTimeout: '오류: 접속시간을 초과하였습니다.', - errorConnectionStatus: '오류: 접속 상태: %s', - errorSoundIO: '오류: 입출력 실패로 소리파일을 불러오는데 실패하였습니다.', - errorSocketIO: '오류: 입출력 실패로 서버에 접속하는데 실패하였습니다.', - errorSocketSecurity: '오류: 보안문제로 서버에 접속하는데 실패하였습니다.', - errorDOMSyntax: '오류: DOM 문법이 잘못되었습니다. (DOM ID: %s).' - -} diff --git a/library/ajaxchat/chat/js/lang/mk.js b/library/ajaxchat/chat/js/lang/mk.js deleted file mode 100644 index 8ca441112..000000000 --- a/library/ajaxchat/chat/js/lang/mk.js +++ /dev/null @@ -1,9 +0,0 @@ -/* - * @package AJAX_Chat - * @author Sebastian Tschan - * @author Nebojsa Ilijoski - * @copyright (c) Sebastian Tschan - * @license Modified MIT License - * @link https://blueimp.net/ajax/ - */ -var ajaxChatLang={login:"%s се приклучи на четот.",logout:"%s излезе од четот.",logoutTimeout:"%s излезе автоматски од четот (Истече времето).",logoutIP:"%s излезе автоматски од четот (Погрешна IP адреса).",logoutKicked:"%s излезе автоматски од четот (Злоупотреба).",channelEnter:"%s се прилкучи на каналот.",channelLeave:"%s го напушти канала.",privmsg:"(шепоти)",privmsgto:"(шепоти на %s)",invite:"%s ве кани да се приклучите со него %s.",inviteto:"Поканата за %s да се приклучи на каналот %s беше испратена.",uninvite:"%s е отпоканет на поканата за каналот %s.",uninviteto:"Отпоканата на поканата до %s за каналот %s беше испратена.",queryOpen:"Отворен е приватен канал за %s.",queryClose:"Затворен е приватен канал за %s.",ignoreAdded:"%s е ставен на списокот на игнорирани.",ignoreRemoved:"%s беше отстранет од списокот на игнорирани.",ignoreList:"Игнорирани корисници:",ignoreListEmpty:"Нема игнорирани корисници.",who:"Оnline корисници:",whoChannel:"Online корисници на каналот %s:",whoEmpty:"На дадениот канал нема online корисници.",list:"Приватни канали:",bans:"Блокирани корисници:",bansEmpty:"Нема блокирани корисници.",unban:"Блокирањето на корисникот %s е завршено.",whois:"Корисникот %s — IP адреса:",whereis:"Корисникот %s е на канал %s.",roll:"%s фрли %s и доби %s.",nick:"%s веќе се нарекува %s.",toggleUserMenu:"Прикажување/скривање на корисничкото мени за %s",userMenuLogout:"Излези",userMenuWho:"Online корисници",userMenuList:"Приватни канали",userMenuAction:"Опис на дејство",userMenuRoll:"Фрлање на коцка",userMenuNick:"Промена на името",userMenuEnterPrivateRoom:"Влез во приватна соба",userMenuSendPrivateMessage:"Испраќање на приватна порака",userMenuDescribe:"Испраќање на приватно дејство",userMenuOpenPrivateChannel:"Отварање на приватен канал",userMenuClosePrivateChannel:"Затварање на приватен канал",userMenuInvite:"Покана",userMenuUninvite:"Одговор на покана",userMenuIgnore:"Одбивање/прифаќање",userMenuIgnoreList:"Игнорирани корисници",userMenuWhereis:"Преглед на канал",userMenuKick:"Прифаќање/Блокирање",userMenuBans:"Блокирани корисници",userMenuWhois:"Преглед на IP адреса",unbanUser:"Одблокирање на %s",joinChannel:"Присоединување кон каналот %s",cite:"%s рече:",urlDialog:"Ве молам, внесете адреса (URL) на страницата:",deleteMessage:"Бришење на пораката",deleteMessageConfirm:"Дали сте сигурни дека сакате да е избришете пораката?",errorCookiesRequired:"За четот е потребно да се активни cookies.",errorUserNameNotFound:"Грешка: Корисникот %s не е пронајден.",errorMissingText:"Грешка: Недостасува текст од пораката.",errorMissingUserName:"Грешка: Недостасува корисничкото име.",errorInvalidUserName:"Грешка: Погрешно корисничко име.",errorUserNameInUse:"Грешка: Корисничкото име веќе е во употреба.",errorMissingChannelName:"Грешка: Недостасува името на каналот.",errorInvalidChannelName:"Грешка: Името на каналот не е валидно: %s",errorPrivateMessageNotAllowed:"Грешка: Лични пораки не се дозволени.",errorInviteNotAllowed:"Грешка: Не ви е позволено да каните корисници на овој канал.",errorUninviteNotAllowed:"Грешка: Не ви е дозволено да отпоканување на овој канал.",errorNoOpenQuery:"Грешка: Не е отворен приватен канал.",errorKickNotAllowed:"Грешка: Не ви е дозволено да исфрлате %s.",errorCommandNotAllowed:"Грешка: Командата не е дозволена: %s",errorUnknownCommand:"Грешка: Непозната команда: %s",errorMaxMessageRate:"Грешка: Го надминавте максималниот број пораки во минута.",errorConnectionTimeout:"Грешка: Истече на времето на врската. Ве молам обидете се повторно!",errorConnectionStatus:"Грешка: Состојба на врската: %s",errorSoundIO:"Грешка: Неуспешно поставување на звукот (Влезно-излезна грешка на Флешот).",errorSocketIO:"Грешка: Неуспешна врска кон сокетниот сервер (Влезно-излезна грешка на Флешот).",errorSocketSecurity:"Грешка: Неуспешна врска кон сокетниот сервер (Грешка во сигурноста на Флашот).",errorDOMSyntax:"Грешка: Погрешна синтакса на DOM (DOM ID: %s)."}; \ No newline at end of file diff --git a/library/ajaxchat/chat/js/lang/nl-be.js b/library/ajaxchat/chat/js/lang/nl-be.js deleted file mode 100644 index 4184ce7c9..000000000 --- a/library/ajaxchat/chat/js/lang/nl-be.js +++ /dev/null @@ -1,92 +0,0 @@ -/* - * @package AJAX_Chat - * @author Sebastian Tschan - * @author Nic Mertens - * @copyright (c) Sebastian Tschan - * @license Modified MIT License - * @link https://blueimp.net/ajax/ - */ - -// Ajax Chat language Object: -var ajaxChatLang = { - - login: '%s komt in het chatkanaal.', - logout: '%s verlaat het chatkanaal.', - logoutTimeout: '%s verlaat het chatkanaal (Timeout).', - logoutIP: '%s is afgemeld (Ongeldig IP address).', - logoutKicked: '%s is afgemeld (Kick door admin of moderator).', - channelEnter: '%s komt het kanaal binnen.', - channelLeave: '%s verlaat het kanaal.', - privmsg: '(fluistert)', - privmsgto: '(fluistert naar %s)', - invite: '%s nodigt je uit om naar %s te komen.', - inviteto: 'Je uitnodiging naar %s om het kanaal %s te bezoeken, werd verstuurd.', - uninvite: '%s annuleert de uitnodiging van kanaal %s.', - uninviteto: 'De annulatie van je uitnodiging aan %s voor het kanaal %s werd verstuurd.', - queryOpen: 'Privékanaal geopend naar %s.', - queryClose: 'Privékanaal naar %s wordt gesloten.', - ignoreAdded: '%s is toegevoegd aan de negeer lijst.', - ignoreRemoved: '%s werd verwijderd van de negeerlijst.', - ignoreList: 'Genegeerde gebruikers:', - ignoreListEmpty: 'Er zijn geen genegeerde gebruikers.', - who: 'Online gebruikers:', - whoChannel: 'Online gebruikers in channel %s:', - whoEmpty: 'Er zijn geen gebruikers in het gekozen kanaal.', - list: 'Beschikbare kanalen:', - bans: 'Gebande gebruikers:', - bansEmpty: 'Er zijn geen gebande gebruikers.', - unban: 'Ban van gebruiker %s opgeheven.', - whois: 'Gebruiker %s - IP adres:', - whereis: 'User %s is in channel %s.', - roll: '%s smijt %s en krijgt %s.', - nick: '%s heet nu %s.', - toggleUserMenu: 'Open menu voor gebruiker %s', - userMenuLogout: 'Afmelden', - userMenuWho: 'Lijst online gebruikers', - userMenuList: 'Lijst beschikbaare kanalen', - userMenuAction: 'Beschrijf actie', - userMenuRoll: 'Rol dobbelsteen', - userMenuNick: 'Wijzig gebruikersnaam', - userMenuEnterPrivateRoom: 'Ga privékanaal binnen', - userMenuSendPrivateMessage: 'Stuur privé bericht', - userMenuDescribe: 'Stuur privé actie', - userMenuOpenPrivateChannel: 'Open privé kanaal', - userMenuClosePrivateChannel: 'Sluit privé kanaal', - userMenuInvite: 'Nodig uit', - userMenuUninvite: 'Uitnodiging intrekken', - userMenuIgnore: 'Negeren/aanvaarden', - userMenuIgnoreList: 'Lijst genegeerde gebruikers', - userMenuWhereis: 'Toon kanaal', - userMenuKick: 'Verwijderen/Verbannen', - userMenuBans: 'Lijst verbande gebruikers', - userMenuWhois: 'Toon IP', - unbanUser: 'Gebande gebruiker %s terug toelaten', - joinChannel: 'Betreedt kanaal %s', - cite: '%s zei:', - urlDialog: 'Gelieve het (URL) adres van de webpagina in te geven:', - deleteMessage: 'Verwijder dit chat bericht', - deleteMessageConfirm: 'Bent u zeker dat u dit bericht wil verwijderen?', - errorCookiesRequired: 'Cookies moeten aangeschakeld zijn voor deze chat.', - errorUserNameNotFound: 'Fout: Gebruiker %s werd niet gevonden.', - errorMissingText: 'Fout: Ontbrekende berichttekst.', - errorMissingUserName: 'Fout: Ontbrekende Gebruikersnaam.', - errorInvalidUserName: 'Error: Invalid username.', - errorUserNameInUse: 'Error: Gebruikersnaam wordt al gebruikt', - errorMissingChannelName: 'Fout: Ontbrekende kanaalnaam.', - errorInvalidChannelName: 'Fout: Ongeldige kanaalnaam: %s', - errorPrivateMessageNotAllowed: 'Error: Private berichten zijn niet toegestaan.', - errorInviteNotAllowed: 'Fout: Je bent niet geautoriseerd om iemand uit te nodigen naar dit kanaal.', - errorUninviteNotAllowed: 'Fout: Je bent niet geautoriseerd om een uitnodiging naar iemand te annuleren op dit kanaal.', - errorNoOpenQuery: 'Fout: Er is geen privékanaal geopend.', - errorKickNotAllowed: 'Fout: Je ben niet geautoriseerd om %s te kicken.', - errorCommandNotAllowed: 'Fout: Opdracht is niet toegestaan: %s', - errorUnknownCommand: 'Fout: Onbekende opdracht: %s', - errorMaxMessageRate: 'Error: Je hebt de limiet voor het aantal berichten per minuut overschreven.', - errorConnectionTimeout: 'Fout: Connection timeout. Gelieve opnieuw te proberen.', - errorConnectionStatus: 'Fout: Verbindingsstatus: %s', - errorSoundIO: 'Error: Geluidsbestand kon niet geladen worden (Flash IO Error).', - errorSocketIO: 'Error: Verbinding met Socket server is verloren (Flash IO Error).', - errorSocketSecurity: 'Error: Verbinding met Socket server is verloren (Flash Security Error).', - errorDOMSyntax: 'Error: Ongeldige DOM Syntax (DOM ID: %s).' - -} \ No newline at end of file diff --git a/library/ajaxchat/chat/js/lang/nl.js b/library/ajaxchat/chat/js/lang/nl.js deleted file mode 100644 index 179d0e703..000000000 --- a/library/ajaxchat/chat/js/lang/nl.js +++ /dev/null @@ -1,92 +0,0 @@ -/* - * @package AJAX_Chat - * @author Sebastian Tschan - * @author Dutch localisation: Patrick Donker - * @copyright (c) Sebastian Tschan - * @license Modified MIT License - * @link https://blueimp.net/ajax/ - */ - -// Ajax Chat language Object: -var ajaxChatLang = { - - login: '%s betreedt het chatkanaal.', - logout: '%s verlaat het chatkanaal.', - logoutTimeout: '%s verlaat het chatkanaal (Timeout).', - logoutIP: '%s is afgemeld (Ongeldig IP address).', - logoutKicked: '%s is afgemeld (Verbannen door admin of moderator).', - channelEnter: '%s betreedt het kanaal.', - channelLeave: '%s verlaat het kanaal.', - privmsg: '(fluistert)', - privmsgto: '(fluistert naar %s)', - invite: '%s nodigt je uit om naar %s te komen.', - inviteto: 'Je uitnodiging naar %s om het kanaal %s te bezoeken, is verzonden.', - uninvite: '%s annuleert de uitnodiging van kanaal %s.', - uninviteto: 'De annulering van je uitnodiging aan %s voor het kanaal %s is verzonden.', - queryOpen: 'Privékanaal geopend voor %s.', - queryClose: 'Privékanaal naar %s wordt gesloten.', - ignoreAdded: '%s is toegevoegd aan de negeer lijst.', - ignoreRemoved: '%s is verwijderd van de negeerlijst.', - ignoreList: 'Genegeerde gebruikers:', - ignoreListEmpty: 'Er zijn geen genegeerde gebruikers.', - who: 'Aanwezige gebruikers:', - whoChannel: 'aanwezige gebruikers in channel %s:', - whoEmpty: 'Het gekozen kanaal is leeg.', - list: 'Beschikbare kanalen:', - bans: 'Verbannen gebruikers:', - bansEmpty: 'Er zijn geen gebruikers verbannen.', - unban: 'Ban van gebruiker %s opgeheven.', - whois: 'Gebruiker %s - IP adres:', - whereis: 'Gebruiker %s is in kanaal %s.', - roll: '%s gooit %s en krijgt %s.', - nick: '%s heet nu %s.', - toggleUserMenu: 'Open gebuikersmenu %s', - userMenuLogout: 'Afmelden', - userMenuWho: 'Lijst aanwezige gebruikers', - userMenuList: 'Lijst beschikbare kanalen', - userMenuAction: 'Beschrijf actie', - userMenuRoll: 'Rol dobbelsteen', - userMenuNick: 'Wijzig gebruikersnaam', - userMenuEnterPrivateRoom: 'Betreed privékanaal', - userMenuSendPrivateMessage: 'Stuur privé bericht', - userMenuDescribe: 'Stuur privé actie', - userMenuOpenPrivateChannel: 'Open privé kanaal', - userMenuClosePrivateChannel: 'Sluit privé kanaal', - userMenuInvite: 'Nodig uit', - userMenuUninvite: 'Uitnodiging intrekken', - userMenuIgnore: 'Negeren/aanvaarden', - userMenuIgnoreList: 'Lijst genegeerde gebruikers', - userMenuWhereis: 'Toon kanaal', - userMenuKick: 'Verwijderen/Verbannen', - userMenuBans: 'Lijst verbannen gebruikers', - userMenuWhois: 'Toon IP adres', - unbanUser: 'Verbannen gebruiker %s weer toelaten', - joinChannel: 'Betreed kanaal %s', - cite: '%s zei:', - urlDialog: 'Geef het adres (URL) van de webpagina op:', - deleteMessage: 'Verwijder dit bericht', - deleteMessageConfirm: 'Weet u zeker dat u dit bericht wilt verwijderen?', - errorCookiesRequired: 'Cookies moeten ingeschakeld zijn voor deze chat.', - errorUserNameNotFound: 'Fout: Gebruiker %s is niet gevonden.', - errorMissingText: 'Fout: Ontbrekende berichttekst.', - errorMissingUserName: 'Fout: Ontbrekende gebruikersnaam.', - errorInvalidUserName: 'Error: Ongeldige gebruikersnaam.', - errorUserNameInUse: 'Error: Gebruikersnaam is in gebruik.', - errorMissingChannelName: 'Fout: Ontbrekende kanaalnaam.', - errorInvalidChannelName: 'Fout: Ongeldige kanaalnaam: %s', - errorPrivateMessageNotAllowed: 'Fout: Privéberichten zijn niet toegestaan.', - errorInviteNotAllowed: 'Fout: U bent niet geautoriseerd uitnodigingen te versturen voor dit kanaal.', - errorUninviteNotAllowed: 'Fout: U bent niet geautoriseerd uitnodigingen te annuleren voor dit kanaal.', - errorNoOpenQuery: 'Fout: Geen privékanaal beschikbaar.', - errorKickNotAllowed: 'Fout: U ben niet geautoriseerd om %s te verbannen.', - errorCommandNotAllowed: 'Fout: Opdracht niet toegestaan: %s', - errorUnknownCommand: 'Fout: Onbekende opdracht: %s', - errorMaxMessageRate: 'Error: U hebt het maximaal aantal berichten per minuut bereikt.', - errorConnectionTimeout: 'Fout: Connection timeout. Probeer opnieuw.', - errorConnectionStatus: 'Fout: Verbindingsstatus: %s', - errorSoundIO: 'Error: Geluidsbestand kan worden geladen (Flash IO Error).', - errorSocketIO: 'Error: Verbinding met Socket server is verbroken (Flash IO Error).', - errorSocketSecurity: 'Error: Verbinding met Socket server is verbroken (Flash Security Error).', - errorDOMSyntax: 'Error: Ongeldige DOM Syntax (DOM ID: %s).' - -} \ No newline at end of file diff --git a/library/ajaxchat/chat/js/lang/no.js b/library/ajaxchat/chat/js/lang/no.js deleted file mode 100644 index 4a9a5ac3f..000000000 --- a/library/ajaxchat/chat/js/lang/no.js +++ /dev/null @@ -1,92 +0,0 @@ -/* - * @package AJAX_Chat - * @author Sebastian Tschan - * @author DagArneKirkerod - * @copyright (c) Sebastian Tschan - * @license Modified MIT License - * @link https://blueimp.net/ajax/ - */ - -// Ajax Chat language Object: -var ajaxChatLang = { - - login: '%s logger inn på Chat.', - logout: '%s logger ut av Chat.', - logoutTimeout: '%s har blitt utlogget (Tidsbegrensning).', - logoutIP: '%s har blitt logget ut (Ugyldig IP Adresse).', - logoutKicked: '%s har blitt logget ut (sparket ut).', - channelEnter: '%s kommer inn på kanalen.', - channelLeave: '%s forlater kanalen.', - privmsg: '(hviskere)', - privmsgto: '(hvisker til %s)', - invite: '%s inviterer deg til å delta %s.', - inviteto: 'Din invitasjon til %s å delta på kanal %s er sendt.', - uninvite: '%s trekker din invitasjon fra kanal %s.', - uninviteto: 'Din tilbaketrekkning av invitasjon til %s for kanal %s er sendt.', - queryOpen: 'Privat kanal åpnet til %s.', - queryClose: 'Privat kanal til %s er stengt.', - ignoreAdded: 'Lagt %s til listen over ignorerte brukere.', - ignoreRemoved: 'Fjernet %s fra liste over ignorerte brukere.', - ignoreList: 'Ignorerte Brukere:', - ignoreListEmpty: 'Ingen ignorerte brukere på lista.', - who: 'Påloggede Brukere:', - whoChannel: 'Online Brukere i kanal %s:', - whoEmpty: 'Ingen påloggede brukere på valgt kanal.', - list: 'Tilgjenglige kanaler:', - bans: 'Utsparkede Brukere:', - bansEmpty: 'Ingen utsparkede brukere på lista.', - unban: 'Bruker %s fjernet fra liste over utsparkede brukere.', - whois: 'Bruker %s - IP adresse:', - whereis: 'User %s is in channel %s.', - roll: '%s triller %s og får %s.', - nick: '%s is now known as %s.', - toggleUserMenu: 'Toggle user menu for %s', - userMenuLogout: 'Logout', - userMenuWho: 'List online users', - userMenuList: 'List available channels', - userMenuAction: 'Describe action', - userMenuRoll: 'Roll dice', - userMenuNick: 'Endre brukernavn', - userMenuEnterPrivateRoom: 'Skriv privat rom', - userMenuSendPrivateMessage: 'Send en privat melding', - userMenuDescribe: 'Send privat handling', - userMenuOpenPrivateChannel: 'Åpne privat kanal', - userMenuClosePrivateChannel: 'Lukk privat kanal', - userMenuInvite: 'Invite', - userMenuUninvite: 'Uninvite', - userMenuIgnore: 'Ignore/Accept', - userMenuIgnoreList: 'Liste med ignorerte brukere', - userMenuWhereis: 'Vise kanal', - userMenuKick: 'Kick/Ban', - userMenuBans: 'Liste sperrede brukere', - userMenuWhois: 'Vise IP', - unbanUser: 'Tilbakekalle forbud av brukeren %s', - joinChannel: 'Delta på kanal %s', - cite: '%s sa:', - urlDialog: 'Skriv inn adressen (URL) på web siden:', - deleteMessage: 'Slett denne chat-melding', - deleteMessageConfirm: 'Vil du virkelig slette den valgte chat-melding?', - errorCookiesRequired: 'Cookies er påkrevet på denne chatten.', - errorUserNameNotFound: 'Feil: Bruker %s ble ikke funnet.', - errorMissingText: 'Feil: Mangler meldingstekst.', - errorMissingUserName: 'Feil: Mangler Brukernavn.', - errorInvalidUserName: 'Feil: Ugyldig brukernavn.', - errorUserNameInUse: 'Feil: Brukernavnet er allerede i bruk.', - errorMissingChannelName: 'Feil: Mangler navn på kanal.', - errorInvalidChannelName: 'Feil: Feil navn på kanal: %s', - errorPrivateMessageNotAllowed: 'Feil: Private meldinger ikke tillatt.', - errorInviteNotAllowed: 'Feil: Du har ikke lov til å invitere noen til denne kanalen.', - errorUninviteNotAllowed: 'Feil: Du har ikke lov til å fjerne invitasjon til noen brukere på denne kanalen.', - errorNoOpenQuery: 'Feil: Ingen private kanaler er åpne.', - errorKickNotAllowed: 'Feil: Du har ikke lov til å sparke ut %s.', - errorCommandNotAllowed: 'Feil: Kommando ikke tillatt: %s', - errorUnknownCommand: 'Feil: Ukjent kommando: %s', - errorMaxMessageRate: 'Feil: Du overskredet maksimalt antall meldinger per minutt.', - errorConnectionTimeout: 'Feil: Oppkoblingstid utgått. Forsøk forsøk igjen.', - errorConnectionStatus: 'Feil: Oppkoblingsstatus: %s', - errorSoundIO: 'Feil: Kunne ikke laste lydfil (Flash IO Error).', - errorSocketIO: 'Feil: Tilkobling til stikkontakt server mislyktes (Flash IO Error).', - errorSocketSecurity: 'Feil: Tilkobling til stikkontakt server mislyktes (Flash Security Error).', - errorDOMSyntax: 'Feil: Ugyldig DOM Syntaks (DOM ID: %s).' - -} diff --git a/library/ajaxchat/chat/js/lang/pl.js b/library/ajaxchat/chat/js/lang/pl.js deleted file mode 100644 index 3353d1bdd..000000000 --- a/library/ajaxchat/chat/js/lang/pl.js +++ /dev/null @@ -1,92 +0,0 @@ -/* - * @package AJAX_Chat - * @author Sebastian Tschan - * @author Tomasz Topa, http://tomasz.topa.pl/ - * @copyright (c) Sebastian Tschan - * @license Modified MIT License - * @link https://blueimp.net/ajax/ - */ - -// Ajax Chat language Object: -var ajaxChatLang = { - - login: '%s wszedł na czat.', - logout: '%s wyszedł na czat.', - logoutTimeout: '%s został rozłączony (Przekroczony czas połączenia).', - logoutIP: '%s został rozłączony (Nieprawidłowy adres IP).', - logoutKicked: '%s został wyrzucony.', - channelEnter: '%s wszedł do pokoju.', - channelLeave: '%s wyszedł z pokoju.', - privmsg: '(szept)', - privmsgto: '(szept do %s)', - invite: '%s zaprasza Cię do pokoju %s.', - inviteto: 'Twoje zaprosznie dla %s do wejścia do pokoju %s zostało wysłane.', - uninvite: '%s cofa zaproszenie do pokoju %s.', - uninviteto: 'Twoje zaproszenie dla %s do wejścia do pokoju %s zostało wycofane.', - queryOpen: 'Prywatna rozmowa z %s rozpoczęta.', - queryClose: 'Prywatna rozmowa z %s zakończona.', - ignoreAdded: '%s dodany do listy ignorowanych.', - ignoreRemoved: '%s usunięty z listy ignorowanych.', - ignoreList: 'Ignorowani użytkownicy:', - ignoreListEmpty: 'Brak ignorowanych użytkowników.', - who: 'Użytkownicy online:', - whoChannel: 'Użytkownicy online w pokoju %s:', - whoEmpty: 'W wybranym pokoju nikogo obecnie nie ma.', - list: 'Dostępne pokoje:', - bans: 'Zablokowani użytkownicy:', - bansEmpty: 'Brak zablokowanych użytkowników', - unban: 'Blokada dla %s zdjęta.', - whois: 'Adres IP użytkownika %s:', - whereis: 'Użytkownik %s jest w pokoju %s.', - roll: '%s rzuca kostką %s i uzyskuje wynik(i): %s.', - nick: '%s zmienia nick na %s.', - toggleUserMenu: 'Włącz/wyłącz menu użytkownika %s', - userMenuLogout: 'Wyloguj', - userMenuWho: 'Użytkownicy online', - userMenuList: 'Dostępne pokoje', - userMenuAction: 'Napisz co teraz robisz', - userMenuRoll: 'Rzuć kostką', - userMenuNick: 'Zmień nick', - userMenuEnterPrivateRoom: 'Wejdź do prywatnego pokoju', - userMenuSendPrivateMessage: 'Wyślij prywatną wiadomość', - userMenuDescribe: 'Napisz prywatnie co teraz robisz', - userMenuOpenPrivateChannel: 'Rozpocznij prywatną rozmowę', - userMenuClosePrivateChannel: 'Zakończ prywatną rozmowę', - userMenuInvite: 'Zaproś', - userMenuUninvite: 'Wycofaj zaproszenie', - userMenuIgnore: 'Ignoruj/akceptuj', - userMenuIgnoreList: 'Lista ignorowanych użytkowników', - userMenuWhereis: 'Pokaż pokój', - userMenuKick: 'Wyrzuć/Zablokuj', - userMenuBans: 'Lista zablokowanych użytkowników', - userMenuWhois: 'Pokaż IP', - unbanUser: 'Zdejmij blokadę dla użytkownika %s', - joinChannel: 'Wejdź do pokoju %s', - cite: '%s powiedział:', - urlDialog: 'Podaj adres (URL) strony:', - deleteMessage: 'Usuń tę wiadomość', - deleteMessageConfirm: 'Na pewno usunać tę wiadomość?', - errorCookiesRequired: 'Do poprawnego działania czat wymaga obsługi Cookies.', - errorUserNameNotFound: 'Błąd: Użytkownik %s nie został znaleziony.', - errorMissingText: 'Błąd: Nie wpisano tekstu.', - errorMissingUserName: 'Błąd: Nie wpisano nicka.', - errorInvalidUserName: 'Error: Invalid username.', - errorUserNameInUse: 'Error: Username already in use.', - errorMissingChannelName: 'Błąd: Nie wpisano nazwy pokoju.', - errorInvalidChannelName: 'Błąd: Nieprawidłowa nazwa pokoju: %s', - errorPrivateMessageNotAllowed: 'Błąd: Prywatne wiadomości zostały zablokowane.', - errorInviteNotAllowed: 'Błąd: Nie możesz wysyłać zaproszeń do tego pokoju.', - errorUninviteNotAllowed: 'Błąd: Nie możesz cofać zaproszeń z tego pokoju.', - errorNoOpenQuery: 'Błąd: Brak prywatnych rozmów.', - errorKickNotAllowed: 'Błąd: Nie możesz wyrzucić użytkownika %s.', - errorCommandNotAllowed: 'Błąd: Nieprawidłowe polecenie: %s', - errorUnknownCommand: 'Błąd: Nieznane polecenie: %s', - errorMaxMessageRate: 'Błąd: Przekroczyłeś maksymalną liczbę wiadomości wysyłanych w ciągu minuty. Poczekaj chwilę...', - errorConnectionTimeout: 'Błąd: Czas połączenia przekroczony. Spróbuj ponownie.', - errorConnectionStatus: 'Błąd: Stan połączenia: %s', - errorSoundIO: 'Błąd: nie można pobrać pliku dźwiękowego (Flash IO Error).', - errorSocketIO: 'Bład: nie można połączyć się z serwerem (Flash IO Error).', - errorSocketSecurity: 'Błąd: Połączenie z serwerem nie powiodło się (Flash Security Error).', - errorDOMSyntax: 'Błąd: Nieprawidłowa składnia DOM (DOM ID: %s).' - -} \ No newline at end of file diff --git a/library/ajaxchat/chat/js/lang/pt-br.js b/library/ajaxchat/chat/js/lang/pt-br.js deleted file mode 100644 index eebfce0df..000000000 --- a/library/ajaxchat/chat/js/lang/pt-br.js +++ /dev/null @@ -1,92 +0,0 @@ -/* - * @package AJAX_Chat - * @author Sebastian Tschan - * @author vitoalvaro - * @copyright (c) Sebastian Tschan - * @license Modified MIT License - * @link https://blueimp.net/ajax/ - */ - -// Ajax Chat language Object: -var ajaxChatLang = { - - login: '%s acaba de entrar no Chat.', - logout: '%s acaba de sair no Chat.', - logoutTimeout: '%s desconectou (Tempo esgotado).', - logoutIP: '%s desconectou (Endereço de IP inválido).', - logoutKicked: '%s desconectou (Expulso do canal).', - channelEnter: '%s entrou no canal.', - channelLeave: '%s saiu do canal.', - privmsg: '(sussurra)', - privmsgto: '(Sussurrar para %s)', - invite: '%s convida você para participar %s.', - inviteto: 'O seu convite para se juntar ao %s do canal %s foi enviado.', - uninvite: '%s desconvidou você do canal %s.', - uninviteto: 'Seu desconvidamento %s do canal %s foi enviada.', - queryOpen: 'Canal privado aberto para %s.', - queryClose: 'Canal privado para %s fechado.', - ignoreAdded: 'Adicionar %s para a lista do igrnorado.', - ignoreRemoved: 'Remover %s da lista do ignorado.', - ignoreList: 'Usuários ignorados:', - ignoreListEmpty: 'Nenhuma lista usuários ignorados.', - who: 'Usuários Online:', - whoChannel: 'Usuários online no canal %s:', - whoEmpty: 'Nenhum usuários online na determinado canal.', - list: 'Os canais disponíveis:', - bans: 'Usuários banidos:', - bansEmpty: 'Nenhuma lista usuários banidos.', - unban: 'Usuário de banido %s revogado.', - whois: 'Usuário %s - enderenço IP:', - whereis: 'Usuário %s está no canal %s.', - roll: '%s rolas %s e começa %s.', - nick: '%s é agora conhecido como %s.', - toggleUserMenu: 'Alternar usuário menu de %s', - userMenuLogout: 'Deslogar', - userMenuWho: 'Lista usuários online', - userMenuList: 'Lista os canais disponíveis', - userMenuAction: 'Descreva ação', - userMenuRoll: 'Jogar dados', - userMenuNick: 'Trocar usuário', - userMenuEnterPrivateRoom: 'Entrar sala privada', - userMenuSendPrivateMessage: 'Enviar mensagem privada', - userMenuDescribe: 'Enviar ação privada', - userMenuOpenPrivateChannel: 'Abrir canal privada', - userMenuClosePrivateChannel: 'Fechar canal privada', - userMenuInvite: 'Convidar', - userMenuUninvite: 'Desconvidar', - userMenuIgnore: 'Ignorar/Aceitar', - userMenuIgnoreList: 'Lista usuários banidos', - userMenuWhereis: 'Exibir canais', - userMenuKick: 'Kickar/Banir', - userMenuBans: 'Lista usuários banidos', - userMenuWhois: 'Exibir IP', - unbanUser: 'Revogar usuário de banido %s', - joinChannel: 'Entrar canal %s', - cite: '%s cita:', - urlDialog: 'Digite o endereço (URL) da página:', - deleteMessage: 'Excluir esta mensagem', - deleteMessageConfirm: 'Realmente apagar a mensagem selecionada chat?', - errorCookiesRequired: 'Os cookies são requeridas para este Chat.', - errorUserNameNotFound: 'Erro: Usuário %s não encontrado.', - errorMissingText: 'Erro: Faltando mensagem texto.', - errorMissingUserName: 'Erro: Usuário faltando.', - errorInvalidUserName: 'Erro: Usuário inválido.', - errorUserNameInUse: 'Erro: Usuário já em uso.', - errorMissingChannelName: 'Erro: Faltando nome do canal.', - errorInvalidChannelName: 'Erro: Inválido nome do canal: %s', - errorPrivateMessageNotAllowed: 'Erro: Mensagens privadas não são permitidos.', - errorInviteNotAllowed: 'Erro: Você não tem permissão para convidar alguém para este canal.', - errorUninviteNotAllowed: 'Erro: Você não está autorizado a desconvidar alguém deste canal.', - errorNoOpenQuery: 'Erro: Nenhum canal privado aberto.', - errorKickNotAllowed: 'Erro: Você não está autorizado a kickar %s.', - errorCommandNotAllowed: 'Erro: Comando não permitido: %s', - errorUnknownCommand: 'Erro: Comando desconhecido: %s', - errorMaxMessageRate: 'Erro: Você excedeu o número máximo de mensagens por minuto.', - errorConnectionTimeout: 'Erro: Intervalo de parada da conexão. Por favor, tente novamente..', - errorConnectionStatus: 'Erro: Status da conexão: %s', - errorSoundIO: 'Erro: Falha ao carregar som arquivo (Flash IO Error).', - errorSocketIO: 'Erro: Conexão para socket servidor falhou (Flash IO Error).', - errorSocketSecurity: 'Erro: Conexão para socket servidor falhou (Flash Security Error).', - errorDOMSyntax: 'Erro: Inválido DOM Syntax (DOM ID: %s).' - -} \ No newline at end of file diff --git a/library/ajaxchat/chat/js/lang/pt-pt.js b/library/ajaxchat/chat/js/lang/pt-pt.js deleted file mode 100644 index fd6a0cbd5..000000000 --- a/library/ajaxchat/chat/js/lang/pt-pt.js +++ /dev/null @@ -1,92 +0,0 @@ -/* - * @package AJAX_Chat - * @author Sebastian Tschan - * @author of translate Carlos Rocha (aka Broas@) - * @copyright (c) Sebastian Tschan - * @license Modified MIT License - * @link https://blueimp.net/ajax/ - */ - -// Ajax Chat language Object: -var ajaxChatLang = { - - login: '%s acaba de entrar no chat.', - logout: '%s acaba de sair no chat.', - logoutTimeout: '%s desligou-se (Tempo esgotado).', - logoutIP: '%s desligou-se (Endereço de IP inválido).', - logoutKicked: '%s desligou-se (Expulso da sala).', - channelEnter: '%s entrou na sala.', - channelLeave: '%s saiu da sala.', - privmsg: '(Mensagem privada)', - privmsgto: '(Mensagem privada enviada para %s)', - invite: '%s convidou-te para entrar na sala %s.', - inviteto: 'O teu convite para %s se juntar à sala %s foi enviado.', - uninvite: '%s cancelou o convite para entrares na sala %s.', - uninviteto: 'O cancelamento do convite para %s entrar na sala %s foi enviado.', - queryOpen: 'Sala privada aberta para %s.', - queryClose: 'A sala privada para %s está fechada.', - ignoreAdded: 'Adicionaste %s à a lista do ignorados.', - ignoreRemoved: 'Removeste %s da lista de ignorados.', - ignoreList: 'Utilizadores ignorados:', - ignoreListEmpty: 'Ninguém está ignorado.', - who: 'Utilizadores online:', - whoChannel: 'Utilizadores online na sala %s:', - whoEmpty: 'Nenhum utilizador online na determinada sala.', - list: 'Salas disponíveis:', - bans: 'Utilizadores banidos:', - bansEmpty: 'Ninguém está banido.', - unban: 'O utilizador %s foi desbanido.', - whois: 'Endereço IP do utilizador %s:', - whereis: 'O utilizador %s está na sala %s.', - roll: '%s rola %s e começa com %s.', - nick: '%s mudou o nick para %s.', - toggleUserMenu: 'Menu de alternância de %s', - userMenuLogout: 'Logout', - userMenuWho: 'Lista de utilizadores online', - userMenuList: 'Lista de salas disponíveis', - userMenuAction: 'Acção administrativa', - userMenuRoll: 'Jogar dados', - userMenuNick: 'Trocar de nick', - userMenuEnterPrivateRoom: 'Entrar na sala privada', - userMenuSendPrivateMessage: 'Enviar mensagem privada', - userMenuDescribe: 'Enviar acção administrativa em privado', - userMenuOpenPrivateChannel: 'Abrir sala privada', - userMenuClosePrivateChannel: 'Fechar sala privada', - userMenuInvite: 'Convidar', - userMenuUninvite: 'Cancelar convite', - userMenuIgnore: 'Recusar/Aceitar', - userMenuIgnoreList: 'Lista utilizadores ignorados', - userMenuWhereis: 'Mostrar salas', - userMenuKick: 'Kickar/Banir', - userMenuBans: 'Lista de utilizadores banidos', - userMenuWhois: 'Mostrar IP', - unbanUser: 'Desbanir %s', - joinChannel: 'Entrar na sala %s', - cite: '%s cita:', - urlDialog: 'Digita o endereço (URL) da página:', - deleteMessage: 'Eliminar esta mensagem', - deleteMessageConfirm: 'Tens a certeza que queres eliminar a mensagem selecionada do chat?', - errorCookiesRequired: 'Os cookies são requeridos para utilizar o chat.', - errorUserNameNotFound: 'Erro: O utilizador %s não foi encontrado.', - errorMissingText: 'Erro: Falta o texto.', - errorMissingUserName: 'Erro: Falta o utilizador.', - errorInvalidUserName: 'Erro: Utilizador inválido.', - errorUserNameInUse: 'Erro: Utilizador em uso.', - errorMissingChannelName: 'Erro: Falta o nome da sala.', - errorInvalidChannelName: 'Erro: O nome da sala é inválido: %s', - errorPrivateMessageNotAllowed: 'Erro: Não são premitidas mensagens privadas.', - errorInviteNotAllowed: 'Erro: Não tens permissão para convidar alguém para uma sala.', - errorUninviteNotAllowed: 'Erro: Não estás autorizado a cancelar algum convite.', - errorNoOpenQuery: 'Erro: Nenhuma sala privada aberta.', - errorKickNotAllowed: 'Erro: Não tens permissão para kickar %s.', - errorCommandNotAllowed: 'Erro: O comando %s não é permitido.', - errorUnknownCommand: 'Erro: Comando desconhecido: %s', - errorMaxMessageRate: 'Erro: Excedeste o número máximo de mensagens permitidas por minuto.', - errorConnectionTimeout: 'Erro: O tempo de limite para a conexão esgotou. Por favor, tenta novamente..', - errorConnectionStatus: 'Erro: Estado da conexão: %s', - errorSoundIO: 'Erro: Falha ao carregar o ficheiro de som (Erro Flash IO).', - errorSocketIO: 'Erro: A conexão socket para o servidor falhou (Erro Flash IO).', - errorSocketSecurity: 'Erro: A conexão socket para o servidor falhou (Erro de segurança Flash).', - errorDOMSyntax: 'Erro: Síntese DOM inválida (DOM ID: %s).' - -} \ No newline at end of file diff --git a/library/ajaxchat/chat/js/lang/ro.js b/library/ajaxchat/chat/js/lang/ro.js deleted file mode 100644 index 7a03947aa..000000000 --- a/library/ajaxchat/chat/js/lang/ro.js +++ /dev/null @@ -1,92 +0,0 @@ -/* - * @package AJAX_Chat - * @author Sebastian Tschan - * @author K.Z. - * @copyright (c) Sebastian Tschan - * @license Modified MIT License - * @link https://blueimp.net/ajax/ - */ - -// Ajax Chat language Object: -var ajaxChatLang = { - - login: '%s se autentifică pe Chat.', - logout: '%s iese de pe Chat.', - logoutTimeout: '%s a fost scos de pe Chat (Timeout).', - logoutIP: '%s a fost scos de pe Chat (Adresă IP incorectă).', - logoutKicked: '%s a fost scos de pe Chat (Dat afară).', - channelEnter: '%s se alătură canalului.', - channelLeave: '%s părăseşte canalul.', - privmsg: '(şopteşte)', - privmsgto: '(şopteşte lui %s)', - invite: '%s vă invită să vă alăturaţi %s.', - inviteto: 'Invitaţia trimisă de dumneavoastră către %s de a se alătura canalului %s a fost trimisă.', - uninvite: '%s vă cere să paraşiţi canalul %s.', - uninviteto: 'Cererea dumnevoastră către %s de a părăsi canalul %s a fost trimisă.', - queryOpen: 'Canal privat deschis către %s.', - queryClose: 'Canalul privat către %s s-a închis.', - ignoreAdded: 'Am adăugat utilizatorul %s la lista de utilizatori ignoraţi.', - ignoreRemoved: 'Am şters utilizatorul %s din lista de utilizatori ignoraţi.', - ignoreList: 'Utilizatori ignoraţi:', - ignoreListEmpty: 'Nu a fost listat nici-un utilizator ignorat.', - who: 'Utilizatori activi:', - whoChannel: 'Online Users in channel %s:', - whoEmpty: 'Nici-un utilzator activ in canalul respectiv.', - list: 'Canale disponibile:', - bans: 'Utilizatori care au accesul interzis la chat:', - bansEmpty: 'Nu a fost listat nici-un utilizator care are accesul interzis.', - unban: 'Interzicerea accesului pentru utilizatorul %s a fost revocată.', - whois: 'Utilizatorul %s - adresă IP:', - whereis: 'User %s is in channel %s.', - roll: '%s aruncă %s si îi cade %s.', - nick: '%s is now known as %s.', - toggleUserMenu: 'Toggle user menu for %s', - userMenuLogout: 'Logout', - userMenuWho: 'List online users', - userMenuList: 'List available channels', - userMenuAction: 'Describe action', - userMenuRoll: 'Roll dice', - userMenuNick: 'Change username', - userMenuEnterPrivateRoom: 'Enter private room', - userMenuSendPrivateMessage: 'Send private message', - userMenuDescribe: 'Send private action', - userMenuOpenPrivateChannel: 'Open private channel', - userMenuClosePrivateChannel: 'Close private channel', - userMenuInvite: 'Invite', - userMenuUninvite: 'Uninvite', - userMenuIgnore: 'Ignore/Accept', - userMenuIgnoreList: 'List ignored users', - userMenuWhereis: 'Display channel', - userMenuKick: 'Kick/Ban', - userMenuBans: 'List banned users', - userMenuWhois: 'Display IP', - unbanUser: 'Revoke ban of user %s', - joinChannel: 'Alăturăte canalului %s', - cite: '%s a spus:', - urlDialog: 'Vă rugăm introduceţi adresa (URL) al paginii web:', - deleteMessage: 'Delete this chat message', - deleteMessageConfirm: 'Really delete the selected chat message?', - errorCookiesRequired: 'Aveţi nevoie de cookies activate pentru acest chat.', - errorUserNameNotFound: 'Eroare: Utilizatorul %s nu a fost găsit.', - errorMissingText: 'Eroare: Nu aţi introdus nici-un text.', - errorMissingUserName: 'Eroare: Nu aţi introdus nici-un nume de utilizator.', - errorInvalidUserName: 'Error: Invalid username.', - errorUserNameInUse: 'Error: Username already in use.', - errorMissingChannelName: 'Eroare: Nu aţi introdus nici-un canal.', - errorInvalidChannelName: 'Eroare: Nume de canal incorect: %s', - errorPrivateMessageNotAllowed: 'Eroare: Mesajele private sunt interzise.', - errorInviteNotAllowed: 'Eroare: Nu aveţi voie să invitaţi pe nimeni pe acest canal.', - errorUninviteNotAllowed: 'Eroare: Nu aveţi voie sa cereţi cuiva de pe acest canal să părăsesca canalul.', - errorNoOpenQuery: 'Eroare: Nici-un canal privat deschis.', - errorKickNotAllowed: 'Eroare: Nu aveţi voie să dati afară pe %s.', - errorCommandNotAllowed: 'Eroare: Comanda interzisă: %s', - errorUnknownCommand: 'Eroare: Comanda necunoscută: %s', - errorMaxMessageRate: 'Error: You exceeded the maximum number of messages per minute.', - errorConnectionTimeout: 'Eroare: Connection timeout. Please try again.', - errorConnectionStatus: 'Eroare: Statusul conexiunii: %s', - errorSoundIO: 'Error: Failed to load sound file (Flash IO Error).', - errorSocketIO: 'Error: Connection to socket server failed (Flash IO Error).', - errorSocketSecurity: 'Error: Connection to socket server failed (Flash Security Error).', - errorDOMSyntax: 'Error: Invalid DOM Syntax (DOM ID: %s).' - -} \ No newline at end of file diff --git a/library/ajaxchat/chat/js/lang/ru.js b/library/ajaxchat/chat/js/lang/ru.js deleted file mode 100644 index 847fdb82c..000000000 --- a/library/ajaxchat/chat/js/lang/ru.js +++ /dev/null @@ -1,93 +0,0 @@ -/* - * @package AJAX_Chat - * @author Sebastian Tschan - * @author SkyKnight - * @author Dmitry Plyonkin - * @copyright (c) Sebastian Tschan - * @license Modified MIT License - * @link https://blueimp.net/ajax/ - */ - -// Ajax Chat language Object: -var ajaxChatLang = { - - login: '%s входит в чат.', - logout: '%s выходит из чата.', - logoutTimeout: '%s вышел из чата по таймоуту.', - logoutIP: '%s вышел из чата (неверный IP адрес).', - logoutKicked: '%s был вышвырнут из чата (Kicked).', - channelEnter: '%s присоединяется к каналу.', - channelLeave: '%s покидает канал.', - privmsg: '(приватное сообщение)', - privmsgto: '(приватное сообщение %s)', - invite: '%s приглашает Вас присоединиться к %s.', - inviteto: 'Ваше приглашение %s присоедениться к каналу %s было успешно отправлено.', - uninvite: '%s отзывает Ваше приглашение из канала %s.', - uninviteto: 'Вы отозвали приглашение пользователю %s для канала %s.', - queryOpen: 'Приватный канал открыт к %s.', - queryClose: 'Приватный канал к %s закрыт.', - ignoreAdded: '%s добавлен в игнорлист.', - ignoreRemoved: '%s удален из игнорлиста.', - ignoreList: 'Игнорируемые пользователи:', - ignoreListEmpty: 'Игнорируемых пользователей не найдено.', - who: 'Пользователи:', - whoChannel: 'Пользователи в канале %s:', - whoEmpty: 'В данном канале нет пользователей.', - list: 'Доступные каналы:', - bans: 'Забаненные пользователи:', - bansEmpty: 'Нет забаненных пользователей.', - unban: 'Пользователь %s разбанен.', - whois: 'Пользователь %s - IP адрес:', - whereis: 'Пользователь %s находится в канале %s.', - roll: '%s кинул кубики %s. Результат %s.', - nick: '%s сменил имя на %s.', - toggleUserMenu: 'Меню пользователя %s', - userMenuLogout: 'Выйти', - userMenuWho: 'Список пользователей', - userMenuList: 'Список каналов', - userMenuAction: 'Действие', - userMenuRoll: 'Бросить кубик', - userMenuNick: 'Сменить имя', - userMenuEnterPrivateRoom: 'Войти в комнату', - userMenuSendPrivateMessage: 'Отправить приватное сообщение', - userMenuDescribe: 'Приватное действие', - userMenuOpenPrivateChannel: 'Открыть приватный канал', - userMenuClosePrivateChannel: 'Закрыть приватный канал', - userMenuInvite: 'Пригласить', - userMenuUninvite: 'Отменить приглашение', - userMenuIgnore: 'Игнорировать/Принять', - userMenuIgnoreList: 'Список игнорируемых', - userMenuWhereis: 'В каком канале?', - userMenuKick: 'Выкинуть/Забанить', - userMenuBans: 'Список забаненных', - userMenuWhois: 'Показать IP', - unbanUser: 'Отменить бан пользователя %s', - joinChannel: ' %s присоединился к каналу', - cite: '%s сказал:', - urlDialog: 'Пожалуйста введите адрес (URL) Web-страницы:', - deleteMessage: 'Удалить сообщение', - deleteMessageConfirm: 'Вы действительно хотите удалить это сообщение?', - errorCookiesRequired: 'Необходимо включить Cookies.', - errorUserNameNotFound: 'Ошибка: Пользователь %s не найдет.', - errorMissingText: 'Ошибка: Отсутствует текст сообщения.', - errorMissingUserName: 'Ошибка: Отсутствует имя.', - errorInvalidUserName: 'Error: Invalid username.', - errorUserNameInUse: 'Error: Username already in use.', - errorMissingChannelName: 'Ошибка: Отсутствует имя канала.', - errorInvalidChannelName: 'Ошибка: Не верное имя канала: %s', - errorPrivateMessageNotAllowed: 'Ошибка: Приватные сообщения не разрешены.', - errorInviteNotAllowed: 'Ошибка: У Вас нет прав приглашать кого-либо в этот канал.', - errorUninviteNotAllowed: 'Ошибка: У Вас нет прав отозвать приглашение из этого канала.', - errorNoOpenQuery: 'Ошибка: Приватный канал не открыт.', - errorKickNotAllowed: 'Ошибка: У Вас нет прав забанить %s.', - errorCommandNotAllowed: 'Ошибка: Команда недоступна: %s', - errorUnknownCommand: 'Ошибка: Неизвестная команда: %s', - errorMaxMessageRate: 'Ошибка: Вы превысили ограничение на количество сообщений, отправленных за минуту.', - errorConnectionTimeout: 'Ошибка: Соединение не установлено. Пожалуйста, попробуйте еще раз.', - errorConnectionStatus: 'Ошибка: Статус соединения: %s', - errorSoundIO: 'Ошибка: Не получается загрузить звуковой файл (Flash IO Error).', - errorSocketIO: 'Ошибка: Не удалось открыть сокет (Flash IO Error).', - errorSocketSecurity: 'Ошибка: Не удалость открыть сокет (Flash Security Error).', - errorDOMSyntax: 'Ошибка: Некорректный синтаксис DOM (DOM ID: %s).' - -} diff --git a/library/ajaxchat/chat/js/lang/sk.js b/library/ajaxchat/chat/js/lang/sk.js deleted file mode 100644 index 3b9b06945..000000000 --- a/library/ajaxchat/chat/js/lang/sk.js +++ /dev/null @@ -1,92 +0,0 @@ -/* - * @package AJAX_Chat - * @author Sebastian Tschan - * @author Peter - * @copyright (c) Sebastian Tschan - * @license Modified MIT License - * @link https://blueimp.net/ajax/ - */ - -// Ajax Chat language Object: -var ajaxChatLang = { - - login: '%s sa prihlásil do chatu.', - logout: '%s sa odhlásil z chatu.', - logoutTimeout: '%s bol odhlásený pre neaktivitu.', - logoutIP: '%s bol odhlásený (nesprávna IP adresa).', - logoutKicked: '%s bol odhlásený (vylúčený).', - channelEnter: '%s vstúpil do kanálu.', - channelLeave: '%s opustil kanál.', - privmsg: '(súkromný hovor)', - privmsgto: '(súkromne hovorí s %s)', - invite: '%s vás pozýva na rozhovor %s.', - inviteto: 'Vaša pozvánka na rozhovor s %s v kanáli %s dola odoslaná.', - uninvite: '%s neprijal Vaše pozvanie z kanálu %s.', - uninviteto: 'Vaše pozvanie pre %s v kanáli %s bolo poslané.', - queryOpen: 'Súkromný kanál s %s otvorený.', - queryClose: 'Súkromný kanál s %s zatvorený.', - ignoreAdded: '%s je pridaný do zoznamu zamietnutých.', - ignoreRemoved: '%s je odstránený zo zoznamu zamietnutých.', - ignoreList: 'Zamietnutí užívatelia:', - ignoreListEmpty: 'Zoznam zamietnutých užívateľov je prázdny.', - who: 'Pripojení užívatelia:', - whoChannel: 'Online Users in channel %s:', - whoEmpty: 'Žiadni pripojení užívatelia na danom kanáli.', - list: 'Dostupné kanály:', - bans: 'Vylúčení užívatelia:', - bansEmpty: 'Zoznam vylúčených užívateľov je prázdny.', - unban: 'Vylúčenie užívateľa %s je zrušené.', - whois: 'Užívateľová %s - IP adresa:', - whereis: 'User %s is in channel %s.', - roll: '%s hodil %s a padlo mu číslo %s.', - nick: '%s is now known as %s.', - toggleUserMenu: 'Toggle user menu for %s', - userMenuLogout: 'Logout', - userMenuWho: 'List online users', - userMenuList: 'List available channels', - userMenuAction: 'Describe action', - userMenuRoll: 'Roll dice', - userMenuNick: 'Change username', - userMenuEnterPrivateRoom: 'Enter private room', - userMenuSendPrivateMessage: 'Send private message', - userMenuDescribe: 'Send private action', - userMenuOpenPrivateChannel: 'Open private channel', - userMenuClosePrivateChannel: 'Close private channel', - userMenuInvite: 'Invite', - userMenuUninvite: 'Uninvite', - userMenuIgnore: 'Ignore/Accept', - userMenuIgnoreList: 'List ignored users', - userMenuWhereis: 'Display channel', - userMenuKick: 'Kick/Ban', - userMenuBans: 'List banned users', - userMenuWhois: 'Display IP', - unbanUser: 'Revoke ban of user %s', - joinChannel: 'Pripojiť kanál %s', - cite: '%s povedal:', - urlDialog: 'Prosím, vložte adresu (URL) webstránky:', - deleteMessage: 'Delete this chat message', - deleteMessageConfirm: 'Really delete the selected chat message?', - errorCookiesRequired: 'Tento chat vyžaduje mať povolené Cookies.', - errorUserNameNotFound: 'Chyba: Užívateľ %s nenájdený.', - errorMissingText: 'Chyba: Chýba text správy.', - errorMissingUserName: 'Chyba: Chýba meno užívateľa.', - errorInvalidUserName: 'Error: Invalid username.', - errorUserNameInUse: 'Error: Username already in use.', - errorMissingChannelName: 'Chyba: Chýba meno kanálu.', - errorInvalidChannelName: 'Chyba: Nesprávne meno kanálu: %s', - errorPrivateMessageNotAllowed: 'Chyba: Súkromné správy nie sú povolené.', - errorInviteNotAllowed: 'Chyba: Nemáte povolenie pozívať užívateľov do tohoto kanálu.', - errorUninviteNotAllowed: 'Chyba: Nemáte povolenie zamietnuť pozvanie užívateľov z tohoto kanálu.', - errorNoOpenQuery: 'Chyba: Súkromný kanál nie je otvorený.', - errorKickNotAllowed: 'Chyba: Nie ste oprávnený vylúčiť %s.', - errorCommandNotAllowed: 'Chyba: Príkaz nie je povolený: %s', - errorUnknownCommand: 'Chyba: Neznámy príkaz: %s', - errorMaxMessageRate: 'Error: You exceeded the maximum number of messages per minute.', - errorConnectionTimeout: 'Chyba: Vypršal časový limit pripojenia. Skúste prosím znovu.', - errorConnectionStatus: 'Chyba: Stav pripojenia: %s', - errorSoundIO: 'Error: Failed to load sound file (Flash IO Error).', - errorSocketIO: 'Error: Connection to socket server failed (Flash IO Error).', - errorSocketSecurity: 'Error: Connection to socket server failed (Flash Security Error).', - errorDOMSyntax: 'Error: Invalid DOM Syntax (DOM ID: %s).' - -} \ No newline at end of file diff --git a/library/ajaxchat/chat/js/lang/sl.js b/library/ajaxchat/chat/js/lang/sl.js deleted file mode 100644 index 9b9b4b4ae..000000000 --- a/library/ajaxchat/chat/js/lang/sl.js +++ /dev/null @@ -1,92 +0,0 @@ -/* - * @package AJAX_Chat - * @author Sebastian Tschan - * @author Valter Pepelkoˇ - * @copyright (c) Sebastian Tschan - * @license Modified MIT License - * @link https://blueimp.net/ajax/ - */ - -// Ajax Chat language Object: -var ajaxChatLang = { - - login: '%s prijavljen-a na Klepetu.', - logout: '%s odjavljen-a iz Klepeta.', - logoutTimeout: '%s je prijava potekla (Timeout).', - logoutIP: '%s je prijava potekla (Nepopolna IP adresa).', - logoutKicked: '%s je prijava potekla (Kicked).', - channelEnter: '%s je vstopil-a v sobo.', - channelLeave: '%s odšel-a iz sobe.', - privmsg: '(privatno sporoÄŤilo)', - privmsgto: '(se privatno pogovarja z %s)', - invite: '%s vas vabi na razgovor v %s.', - inviteto: 'Vaše vabilo za razgovor z %s v sobi %s je poslano.', - uninvite: '%s se ne Ĺľeli odzvati vašemu vabilu v sobi %s.', - uninviteto: 'Vaš preklic vabila za %s v sobi %s je poslano.', - queryOpen: 'Privatna soba za %s je odprta.', - queryClose: 'Privatna soba za %s je zaprta.', - ignoreAdded: '%s je dodan na seznam ignoriranih.', - ignoreRemoved: '%s je odstranjen iz seznama ignoriranih.', - ignoreList: 'Ignorirani uporabniki:', - ignoreListEmpty: 'Seznam ignoriranih uporabnikov je prazen.', - who: 'Prisotni:', - whoChannel: 'Prisotni v sobi %s:', - whoEmpty: 'V tej sobi ni uporabnikov.', - list: 'Dostopne sobe:', - bans: 'Uporabniki s prepovedjo dostopa:', - bansEmpty: 'Seznam uporabnikov s prepovedjo dostopa je prazen.', - unban: 'Prepoved dostopa uporabniku je preklicana.', - whois: 'Uporabnik %s - IP adresa:', - whereis: 'Uporabnik %s je v sobi %s.', - roll: '%s je vrgel %s Rezultat je: %s.', - nick: '%s sedaj uporablja nick %s.', - toggleUserMenu: 'Preklopi uporabniški meni za %s', - userMenuLogout: 'Odjava', - userMenuWho: 'Seznam prisotnih uporabnikov', - userMenuList: 'Seznam dostopnih sob', - userMenuAction: 'Opiši akcijo', - userMenuRoll: 'Vrzi kocko', - userMenuNick: 'Zamenjaj uporabniško ime', - userMenuEnterPrivateRoom: 'Vstopi v privatno sobo', - userMenuSendPrivateMessage: 'Pošlji privatno sporoÄŤilo', - userMenuDescribe: 'Pošlji privatno akcijo', - userMenuOpenPrivateChannel: 'Odpri privatno sobo', - userMenuClosePrivateChannel: 'Zapri privatno sobo', - userMenuInvite: 'Poklicati', - userMenuUninvite: 'Preklicati', - userMenuIgnore: 'Ignoriraj/Sprejemi', - userMenuIgnoreList: 'Seznam ignoriranih uporabnikov', - userMenuWhereis: 'PrikaĹľi sobo', - userMenuKick: 'IzvrĹľeen/Prepovedan', - userMenuBans: 'Seznam prepovedanih uporabnikov', - userMenuWhois: 'PrikaĹľi IP adreso', - unbanUser: 'Preklicati prepoved uporabniku %s', - joinChannel: 'Vstopi v sobo %s', - cite: '%s pravi:', - urlDialog: 'Prosimo vas, vnesite naslov (URL) web strani:', - deleteMessage: 'Izbriši to sporoÄŤilo', - deleteMessageConfirm: 'Ali res izbrišem izbrano sporoÄŤilo?', - errorCookiesRequired: 'Pozor: uporaba piškotkov (cookies) je nujna za to klepetalnico!', - errorUserNameNotFound: 'Napaka: uporabnik %s ni najden!', - errorMissingText: 'Napaka: manjka besedilo sporoÄŤila!', - errorMissingUserName: 'Napaka: manjka uporabniško ime!', - errorInvalidUserName: 'Napaka: Nepravilno uporabniško ime!', - errorUserNameInUse: 'Napaka: uporabniško ime je Ĺľe v uporabi!', - errorMissingChannelName: 'Napaka: ni imena sobe!', - errorInvalidChannelName: 'Napaka: napaÄŤno ime sobe: %s', - errorPrivateMessageNotAllowed: 'Napaka: privatna sporoÄŤila niso dovoljena!', - errorInviteNotAllowed: 'Napaka: Nimate dovoljenja, da lahko druge vabite v to sobo!', - errorUninviteNotAllowed: 'Napaka: Nimate dovoljenja, da lahko druge vrĹľete iz te sobe!', - errorNoOpenQuery: 'Napaka: Privatna soba ni odprta!', - errorKickNotAllowed: 'NApaka: Nimate dovoljenja, da lahko vrĹľete %s', - errorCommandNotAllowed: 'Napaka: Ukaz ni dozvoljen: %s', - errorUnknownCommand: 'Napaka: Neznan ukaz: %s', - errorMaxMessageRate: 'NApaka: Presegli ste najveÄŤje dovoljeno število sporoÄŤil na minuto!.', - errorConnectionTimeout: 'Napaka: ÄŤas povezave se je iztekel. Poskusite znova!', - errorConnectionStatus: 'Napaka: Status povezave: %s', - errorSoundIO: 'Napaka: ZvoÄŤne datoteke ni bilo mogoÄŤe naloĹľiti (Napaka Flash IO)!', - errorSocketIO: 'Napaka: Povezava na server ni uspela (Napaka Flash IO)!', - errorSocketSecurity: 'Napaka: Povezava na server ni uspela (Napaka Flash Security)!', - errorDOMSyntax: 'Napaka: Nepopolna DOM Syntaxa (DOM ID: %s).' - -} \ No newline at end of file diff --git a/library/ajaxchat/chat/js/lang/sr.js b/library/ajaxchat/chat/js/lang/sr.js deleted file mode 100644 index b5367b1e2..000000000 --- a/library/ajaxchat/chat/js/lang/sr.js +++ /dev/null @@ -1,92 +0,0 @@ -/* - * @package AJAX_Chat - * @author Sebastian Tschan - * @author Saša Stojanović - * @copyright (c) Sebastian Tschan - * @license Modified MIT License - * @link https://blueimp.net/ajax/ - */ - -// Ajax Chat language Object: -var ajaxChatLang = { - - login: '%s prijavljen-a na Chat.', - logout: '%s odjavljen-a sa Chata.', - logoutTimeout: '%s je prijava istekla (Timeout).', - logoutIP: '%s je prijava istekla (Invalid IP address).', - logoutKicked: '%s je prijava istekla (Kicked).', - channelEnter: '%s je ušao-la u sobu.', - channelLeave: '%s izašao-la iz sobe.', - privmsg: '(privatna poruka)', - privmsgto: '(privatno razgovara sa %s)', - invite: '%s vas poziva na razgovor u %s.', - inviteto: 'Vaš poziv za razgovor sa %s u sobu %s je poslat.', - uninvite: '%s vam otkazuje pozivnicu u sobi %s.', - uninviteto: 'Vaše otkazivanje pozivnice za %s u sobi %s je poslato.', - queryOpen: 'Privatna soba za %s je otvorena.', - queryClose: 'Privatna soba za %s je zatvorena.', - ignoreAdded: '%s je dodat u listu ignorisanih.', - ignoreRemoved: '%s je uklonjen iz liste ignorisanih.', - ignoreList: 'Ignorisani korisnici:', - ignoreListEmpty: 'Lista ignorisanih korisnika je prazna.', - who: 'Prisutni korisnici:', - whoChannel: 'Prisutni korisnici u sobi %s:', - whoEmpty: 'Nema prisutnih korisnika u toj sobi.', - list: 'Dostupne sobe:', - bans: 'Zabranjeni korisnici:', - bansEmpty: 'Lista zabranjenih korisnika je prazna.', - unban: 'Zabrana korisnika %s je povučena.', - whois: 'Korisnik %s - IP adresa:', - whereis: 'Korisnik %s je u sobi %s.', - roll: '%s je bacio %s Rezultat %s.', - nick: '%s je sada poznat kao %s.', - toggleUserMenu: 'Preklopi korisnički meni za %s', - userMenuLogout: 'Odjavljivanje', - userMenuWho: 'Lista prisutnih korisnika', - userMenuList: 'Lista dostupnih soba', - userMenuAction: 'Opiši akciju', - userMenuRoll: 'Baci kocku', - userMenuNick: 'Promeni korisničko ime', - userMenuEnterPrivateRoom: 'Uđi u privatnu sobu', - userMenuSendPrivateMessage: 'Pošalji privatnu poruku', - userMenuDescribe: 'Pošalji privatnu akciju', - userMenuOpenPrivateChannel: 'Otvori privatnu sobu', - userMenuClosePrivateChannel: 'Zatvori privatnu sobu', - userMenuInvite: 'Pozvati', - userMenuUninvite: 'Opozvati', - userMenuIgnore: 'Ignorisati/Prihvatiti', - userMenuIgnoreList: 'Lista ignorisanih korisnika', - userMenuWhereis: 'Prikaži sobu', - userMenuKick: 'Izbačen/Zabranjen', - userMenuBans: 'Lista zabranjenih korisnika', - userMenuWhois: 'Prikaži IP', - unbanUser: 'Opozvati zabranu korisnika %s', - joinChannel: 'Pristupi sobi %s', - cite: '%s reče:', - urlDialog: 'Molimo vas, unesite adresu (URL) web stranice:', - deleteMessage: 'Delete this chat message', - deleteMessageConfirm: 'Really delete the selected chat message?', - errorCookiesRequired: 'Pažnja: kolačići su neophodni za ovaj Chat.', - errorUserNameNotFound: 'Greška: korisnik %s nije pronađen.', - errorMissingText: 'Greška: nedostaje tekst poruke.', - errorMissingUserName: 'Greška: nedostaje korisničko ime.', - errorInvalidUserName: 'Error: Invalid username.', - errorUserNameInUse: 'Error: Username already in use.', - errorMissingChannelName: 'Greška: nedostaje ime sobe.', - errorInvalidChannelName: 'Greška: pogrešno ime sobe: %s', - errorPrivateMessageNotAllowed: 'Greška: privatne poruke nisu dozvoljene.', - errorInviteNotAllowed: 'Greška: Nije vam dozvoljeno da pozivate nekoga u ovu sobu.', - errorUninviteNotAllowed: 'Greška: Nije vam dozvoljeno da nekoga opozovete iz ove sobe.', - errorNoOpenQuery: 'Greška: Privatna soba nije otvorena.', - errorKickNotAllowed: 'Greška: Nije vam dozvoljeno da izbacite %s.', - errorCommandNotAllowed: 'Greška: Komanda nije dozvoljena: %s', - errorUnknownCommand: 'Greška: Nepoznata komanda: %s', - errorMaxMessageRate: 'Error: You exceeded the maximum number of messages per minute.', - errorConnectionTimeout: 'Greška: Vreme konekcije je isteklo. Molimo vas pokušajte ponovo.', - errorConnectionStatus: 'Greška: Status konekcije: %s', - errorSoundIO: 'Error: Failed to load sound file (Flash IO Error).', - errorSocketIO: 'Error: Connection to socket server failed (Flash IO Error).', - errorSocketSecurity: 'Error: Connection to socket server failed (Flash Security Error).', - errorDOMSyntax: 'Error: Invalid DOM Syntax (DOM ID: %s).' - -} \ No newline at end of file diff --git a/library/ajaxchat/chat/js/lang/sv.js b/library/ajaxchat/chat/js/lang/sv.js deleted file mode 100644 index 6c8ded6cc..000000000 --- a/library/ajaxchat/chat/js/lang/sv.js +++ /dev/null @@ -1,92 +0,0 @@ -/* - * @package AJAX_Chat - * @author Sebastian Tschan - * @author Eric [June 7,2008] - * @copyright (c) Sebastian Tschan - * @license Modified MIT License - * @link https://blueimp.net/ajax/ - */ - -// Ajax Chat language Object: -var ajaxChatLang = { - - login: '%s loggade in på Chatten.', - logout: '%s loggade ut från Chatten.', - logoutTimeout: '%s loggades ut (Timeout).', - logoutIP: '%s loggades ut (Felaktig IPadress).', - logoutKicked: '%s har loggats ut (Utsparkad).', - channelEnter: '%s ansluter till kanalen.', - channelLeave: '%s lämnade kanalen.', - privmsg: '(Viskning)', - privmsgto: '(Viskar till %s)', - invite: '%s bjuder in dig att ansluta till %s.', - inviteto: 'Din inbjudan till %s att ansluta till kanalen %s har skickats.', - uninvite: '%s upphävde inbjudan till dig från kanalen %s.', - uninviteto: 'Din uphävning av inbjudan till %s för kanalen %s har skickats.', - queryOpen: 'Privat kanal öppnad för %s.', - queryClose: 'Privat kanal för %s är stängd.', - ignoreAdded: '%s blev inlagd i ignoreringslistan.', - ignoreRemoved: 'Ta bort %s från ignoreringslistan.', - ignoreList: 'Ignorerade användare:', - ignoreListEmpty: 'Inga ignorerade Användare.', - who: 'Användare OnLine:', - whoChannel: 'Användare OnLine i kanalen %s:', - whoEmpty: 'Inga användare OnLine i kanalen.', - list: 'Tillgängliga kanaler:', - bans: 'Bannade Användare:', - bansEmpty: 'Inga bannade Användare.', - unban: 'Banningen av %s är upphävd.', - whois: '%s - IPadress:', - whereis: '%s är i kanalen %s.', - roll: '%s rullar %s och får %s.', - nick: '%s har bytt namn till %s.', - toggleUserMenu: 'Skifta användarmeny för %s', - userMenuLogout: 'Logga Ut', - userMenuWho: 'Lista användare OnLine', - userMenuList: 'Lista tillgängliga kanaler', - userMenuAction: 'Beskriv händelse', - userMenuRoll: 'Rulla tärningar', - userMenuNick: 'Ändra användarnamn', - userMenuEnterPrivateRoom: 'Gå in i privat rum', - userMenuSendPrivateMessage: 'Skicka privat meddelande', - userMenuDescribe: 'Skicka privat händelse', - userMenuOpenPrivateChannel: 'Öppna privat kanal', - userMenuClosePrivateChannel: 'Stäng privat kanal', - userMenuInvite: 'Bjud in', - userMenuUninvite: 'Upphäv inbjudan', - userMenuIgnore: 'Ignorera/Acceptera', - userMenuIgnoreList: 'Lista ignorerade användare', - userMenuWhereis: 'Visa kanal', - userMenuKick: 'Sparka ut/Banna', - userMenuBans: 'Lista bannade användare', - userMenuWhois: 'Visa IP', - unbanUser: 'Upphäv banningen av %s', - joinChannel: 'Anslut till kanalen %s', - cite: '%s sa:', - urlDialog: 'Skriv in adressen (URL) till websidan:', - deleteMessage: 'Radera detta meddelande', - deleteMessageConfirm: 'Vill du radera det valda meddelandet?', - errorCookiesRequired: 'Cookies[kakor] krävs för denna Chat.', - errorUserNameNotFound: 'Error: Användaren %s hittades inte.', - errorMissingText: 'Error: Meddelandetext saknas.', - errorMissingUserName: 'Error: Användarnamn saknas.', - errorInvalidUserName: 'Error: Ogiltigt användarnamn.', - errorUserNameInUse: 'Error: Användarnamnet används redan.', - errorMissingChannelName: 'Error: Kanalnamn saknas.', - errorInvalidChannelName: 'Error: Felaktigt kanalnamn: %s', - errorPrivateMessageNotAllowed: 'Error: Privata meddelanden är inte tillåtna.', - errorInviteNotAllowed: 'Error: Du saknar rättighet att bjuda in någon till denna kanalen.', - errorUninviteNotAllowed: 'Error: Du saknar rättighet att upphäva en inbjudan till någon i denna kanalen.', - errorNoOpenQuery: 'Error: Ingen privat kanal öppen.', - errorKickNotAllowed: 'Error: Du saknar rättighet att sparka %s.', - errorCommandNotAllowed: 'Error: Otillåtet kommando: %s', - errorUnknownCommand: 'Error: Okänt kommando: %s', - errorMaxMessageRate: 'Error: Du överskred det maxiamala antalet meddelanden per minut.', - errorConnectionTimeout: 'Error: Anslutningen fick "timeout". Var vänlig och prova igen.', - errorConnectionStatus: 'Error: Anslutningens status: %s', - errorSoundIO: 'Error: Misslyckades att ladda ljudfil (Flash IO Error).', - errorSocketIO: 'Error: Anslutningen till "socket server" misslyckades (Flash IO Error).', - errorSocketSecurity: 'Error: Anslutningen till "socket server" misslyckades (Flash Security Error).', - errorDOMSyntax: 'Error: Ogiltig DOM Syntax (DOM ID: %s).' - -} \ No newline at end of file diff --git a/library/ajaxchat/chat/js/lang/th.js b/library/ajaxchat/chat/js/lang/th.js deleted file mode 100644 index 35c60a51b..000000000 --- a/library/ajaxchat/chat/js/lang/th.js +++ /dev/null @@ -1,92 +0,0 @@ -/* - * @package AJAX_Chat - * @author Sebastian Tschan - * @copyright (c) Sebastian Tschan - * @license Modified MIT License - * @link https://blueimp.net/ajax/ - * @Translate by Charge01 @ http://www.thaira2lovers.co.cc - */ - -// Ajax Chat language Object: -var ajaxChatLang = { - - login: '%s เข้าสู่ห้องแชท', - logout: '%s ออกจากห้องแชท', - logoutTimeout: '%s ออกจากห้องแชทแล้ว (Timeout).', - logoutIP: '%s ออกจากระบบแล้ว (IP address ไม่ถูกต้อง).', - logoutKicked: '%s ออกจากระบบแล้ว (ถูกไล่).', - channelEnter: '%s เข้าห้องมา', - channelLeave: '%s ออกห้องไป', - privmsg: '(กระซิบ)', - privmsgto: '(กระซิบไป %s)', - invite: '%s เชิญให้ %s เข้าร่วม', - inviteto: 'การเชิญ %s เพื่อเข้าสู่ห้อง %s ถูกส่งแล้ว', - uninvite: '%s ถอนคำเชิญออกจากห้อง %s.', - uninviteto: 'การเชิญ %s สำหรับห้อง %s ถูกส่งแล้ว', - queryOpen: 'ห้องส่วนตัวถูกเปิดที่ %s', - queryClose: 'ห้องส่วนตัว %s ถูกปิด', - ignoreAdded: 'เพิ่ม %s สู่รายการไม่สนใจ', - ignoreRemoved: 'ลบ %s ออกจากรายการไม่สนใจ', - ignoreList: 'ผู้ใช้ที่ถูกไม่สนใจ:', - ignoreListEmpty: 'ไม่มีผู้ใช้ที่ไม่สนใจ', - who: 'ผู้ใช้ออนไลนอยู่:', - whoChannel: 'ผู้ใช้ออนไลน์ในห้อง %s:', - whoEmpty: 'ไม่มีผู้ใช้ออนไลน์อยู่ในห้อง', - list: 'ห้องแชทที่มีอยู่:', - bans: 'ผู้ใช้ถูกแบน:', - bansEmpty: 'ไม่มีผู้ใช้ที่ถูกแบน', - unban: 'การแบนของ %s ถูกยกเลิก', - whois: 'ผู้ใช้ %s - IP address:', - whereis: 'ผู้ใช้ %s อยู่ในห้อง %s.', - roll: '%s rolls %s and gets %s.', - nick: '%s ตอนนี้เปลี่ยนชื่อเป็น %s.', - toggleUserMenu: 'เปิดเมนูสำหรับ %s', - userMenuLogout: 'ออกจากระบบ', - userMenuWho: 'รายชื่อผู้ใช้', - userMenuList: 'รายชื่อห้องที่ปรากฎ', - userMenuAction: 'บอกกล่าวการกระทำ', - userMenuRoll: 'ทอยลูกเต๋า', - userMenuNick: 'เปลี่ยนชื่อ', - userMenuEnterPrivateRoom: 'เข้้าห้องส่วนตัว', - userMenuSendPrivateMessage: 'ส่งข้อความส่วนตัว', - userMenuDescribe: 'ส่งการกระทำส่วนตัว', - userMenuOpenPrivateChannel: 'เปิดห้องแชทส่วนตัว', - userMenuClosePrivateChannel: 'ปิดห้องแชทส่วนตัว', - userMenuInvite: 'เชิญ', - userMenuUninvite: 'ถอนคำเชิญ', - userMenuIgnore: 'ไม่สนใจ/ยอมรับ', - userMenuIgnoreList: 'รายชื่อผู้ใช้ที่ไม่สนใจ', - userMenuWhereis: 'แสดงห้องแชท', - userMenuKick: 'ไล่/แบน', - userMenuBans: 'รายชื่อที่ถูกแบน', - userMenuWhois: 'แสดง IP', - unbanUser: 'ปลดการแบนของผู้ใช้ %s', - joinChannel: 'ร่วมห้อง %s', - cite: '%s พูด:', - urlDialog: 'กรุณาใส่ที่อยู่เว็บ (URL):', - deleteMessage: 'ลบข้อความแชทนี้', - deleteMessageConfirm: 'แน่ใจว่าจะลบข้อความที่เลือกนี้?', - errorCookiesRequired: 'ห้องแชทนี้ต้องการใช้งานคุกกี้', - errorUserNameNotFound: 'Error: ไม่พบผู้ใช้ %s', - errorMissingText: 'Error: ข้อความหายไป', - errorMissingUserName: 'Error: ผู้ใช้หายไป', - errorInvalidUserName: 'Error: ผู้ใช้ไม่ถูกต้อง', - errorUserNameInUse: 'Error: ผู้ใช้นี้ถูกใช้งานอยู่', - errorMissingChannelName: 'Error: ชื่อห้องแชทหายไป', - errorInvalidChannelName: 'Error: ชื่อห้องแชทไม่ถูกต้อง: %s', - errorPrivateMessageNotAllowed: 'Error: ไม่อนุญาตข้อความส่วนตัว', - errorInviteNotAllowed: 'Error: ไม่อนุญาตให้คุณเชิญใครในห้องนี้', - errorUninviteNotAllowed: 'Error: ไม่อนุญาตให้คุณถอดการเชิญในห้องนี้', - errorNoOpenQuery: 'Error: ไม่เปิดห้องส่วนตัว', - errorKickNotAllowed: 'Error: ไม่อนุญาตให้คุณไล่ %s.', - errorCommandNotAllowed: 'Error: ไม่อนุญาตคำสั่ง : %s', - errorUnknownCommand: 'Error: คำสั่งอะไรเนีย: %s', - errorMaxMessageRate: 'Error: ส่งข้อความเกินกำหนดใน 1 นาที', - errorConnectionTimeout: 'Error: การเชื่อมต่อหมดเวลา กรุณาลองอีกครั้ง', - errorConnectionStatus: 'Error: สถานะการเชื่อมต่อ: %s', - errorSoundIO: 'Error: โหลดไฟล์เสียงผิดพลาด (อาจเกิดจาก Flash IO Error, โปรแกรมช่วยดาวน์โหลด).', - errorSocketIO: 'Error: การเชื่อมต่อถึง socket เซิร์ฟเวอร์ผิดพลาด (อาจเกิดจาก Flash IO Error).', - errorSocketSecurity: 'Error: การเชื่อมต่อถึง socket เซิร์ฟเวอร์ผิดพลาด (Flash Security Error).', - errorDOMSyntax: 'Error: DOM Syntax ไม่ถูกต้อง (DOM ID: %s).' - -} \ No newline at end of file diff --git a/library/ajaxchat/chat/js/lang/tr.js b/library/ajaxchat/chat/js/lang/tr.js deleted file mode 100644 index 63d9b5aee..000000000 --- a/library/ajaxchat/chat/js/lang/tr.js +++ /dev/null @@ -1,92 +0,0 @@ -/* - * @package AJAX_Chat - * @author Sebastian Tschan - * @author Cydonian - * @copyright (c) Sebastian Tschan - * @license Modified MIT License - * @link https://blueimp.net/ajax/ - */ - -// Ajax Chat language Object: -var ajaxChatLang = { - - login: '%s sohbet odasına girdi.', - logout: '%s sohbet odasından çıktı.', - logoutTimeout: '%s sohbetten çıkarıldı (Bağlantı Gecikmesi).', - logoutIP: '%s sohbetten çıkarıldı (Geçersiz IP adresi).', - logoutKicked: '%s sohbetten çıkarıldı (Atıldı).', - channelEnter: '%s kanala girdi.', - channelLeave: '%s kanaldan çıktı.', - privmsg: '(fısıldıyor)', - privmsgto: '(%s size fısıldıyor)', - invite: '%s sizi %s odasına davet ediyor.', - inviteto: '%s kanalı için davetiniz %s e gönderildi.', - uninvite: '%s sizi %s kanalından çıkmaya çağırıyor.', - uninviteto: '%s kanalından çıkma davetiniz %s e gönderildi', - queryOpen: '%s e özel kanal açıldı.', - queryClose: '%s e özel kanal kapatıldı.', - ignoreAdded: '%s blok listesine eklendi.', - ignoreRemoved: '%s blok listesinden çıkarıldı.', - ignoreList: 'Blok edilen üyeler:', - ignoreListEmpty: 'Blok Listesi boş.', - who: 'Çevrimiçi üyeler:', - whoChannel: '%s kanalındaki çevrimiçi üyeler:', - whoEmpty: 'Kanalda çevrimiçi üye yoktur.', - list: 'Açık Odalar:', - bans: 'Yasaklanan Üyeler:', - bansEmpty: 'Yasaklı Listesi boş.', - unban: '%s adlı üyenin yasağı kaldırıldı.', - whois: 'Üye %s - IP adresi:', - whereis: '%s adlı üye %s kanalında.', - roll: '%s sallar %s ve alır %s.', - nick: '%s rumuzunu %s yaptı.', - toggleUserMenu: 'Toggle user menu for %s', - userMenuLogout: 'Çıkış', - userMenuWho: 'Çevrimiçi üyeleri göster', - userMenuList: 'Uygun odaları göster', - userMenuAction: 'Aksiyon:', - userMenuRoll: 'Zarları at', - userMenuNick: 'Rumuz değiştir', - userMenuEnterPrivateRoom: 'Özel odaya gir', - userMenuSendPrivateMessage: 'Özel mesaj gönder', - userMenuDescribe: 'Özel aksiyon gönder', - userMenuOpenPrivateChannel: 'Özel kanal aç', - userMenuClosePrivateChannel: 'Özel kanalı kapat', - userMenuInvite: 'Davet et', - userMenuUninvite: 'Davet etme', - userMenuIgnore: 'İptal/Kabul', - userMenuIgnoreList: 'Bloklanmış üyeleri göster', - userMenuWhereis: 'Kanalı göster', - userMenuKick: 'At/Yasakla', - userMenuBans: 'Yasaklanmış üyeleri göster', - userMenuWhois: 'IP göster', - unbanUser: 'Üye %s nin yasağını kaldır', - joinChannel: '%s kanalına Gir', - cite: '%s :', - urlDialog: 'Web sayfasının adresini (URL) giriniz:', - deleteMessage: 'Bu mesajı sil', - deleteMessageConfirm: 'İşaretli mesajı gerçekten silmek istiyor musunuz?', - errorCookiesRequired: 'Bu sohbet için Cookies açık olmalıdır.', - errorUserNameNotFound: 'Hata: %s adlı üye bulunamadı.', - errorMissingText: 'Hata: Mesaj yazısı yok.', - errorMissingUserName: 'Hata: Üye adı yok.', - errorInvalidUserName: 'Hata: Geçersiz üye adı.', - errorUserNameInUse: 'Hata: Üye adı kullanımda.', - errorMissingChannelName: 'Hata: Kanal adı yok.', - errorInvalidChannelName: 'Hata: Geçersiz kanal adı: %s', - errorPrivateMessageNotAllowed: 'Hata: Özel mesajlara izin verilmiyor.', - errorInviteNotAllowed: 'Hata: Başka bir üyeyi bu kanala davet etme izniniz yok.', - errorUninviteNotAllowed: 'Hata: Başka bir üyeyi bu kanaldan dışarı davete izniniz yok.', - errorNoOpenQuery: 'Hata: Açık özel kanal yok.', - errorKickNotAllowed: 'Hata: %s adlı üyeyi atma yetkiniz yok.', - errorCommandNotAllowed: 'Hata: Bu komuta izin yok: %s', - errorUnknownCommand: 'Hata: Bilinmeyen komut: %s', - errorMaxMessageRate: 'Hata: Bir dakika içinde atılabilecek maksimum mesaj sayısına ulaştınız.', - errorConnectionTimeout: 'Hata: Bağlantı süresi aşımı. Lütfen tekrar deneyin.', - errorConnectionStatus: 'Hata: Bağlantı durumu: %s', - errorSoundIO: 'Hata: Ses dosyası yüklenemedi (Flash IO Hatası).', - errorSocketIO: 'Hata: Socket server bağlantısı yapılamadı (Flash IO Hatası).', - errorSocketSecurity: 'Hata: Socket server bağlantısı yapılamadı(Flash Güvenlik Hatası).', - errorDOMSyntax: 'Hata: Geçersiz DOM Sözdizimi (DOM ID: %s).' - -} \ No newline at end of file diff --git a/library/ajaxchat/chat/js/lang/uk.js b/library/ajaxchat/chat/js/lang/uk.js deleted file mode 100644 index 42f61804e..000000000 --- a/library/ajaxchat/chat/js/lang/uk.js +++ /dev/null @@ -1,92 +0,0 @@ -/* - * @package AJAX_Chat - * @author Sebastian Tschan - * @author Yuriy Smetana (yura@stryi.com.ua, http://joomla.org.ua) - * @copyright (c) Sebastian Tschan - * @license Modified MIT License - * @link https://blueimp.net/ajax/ - */ - -// Ajax Chat language Object: -var ajaxChatLang = { - - login: '%s заходить до Чату.', - logout: '%s виходить з Чату.', - logoutTimeout: '%s залишає чат (був неактивний).', - logoutIP: '%s залишає чат (неправильна IP адреса).', - logoutKicked: '%s залишає чат (примусово).', - channelEnter: '%s заходить до кімнати.', - channelLeave: '%s залишає кімнату.', - privmsg: '(пошепки)', - privmsgto: '(пошепки до %s)', - invite: '%s запрошує відвідати кімнату %s.', - inviteto: 'Запрошення до %s відвідати кімнату %s надіслано.', - uninvite: '%s відмовив в запрошенні до кімнати %s.', - uninviteto: 'Відміну запрошення %s до кімнати %s було надіслано.', - queryOpen: 'Створено приватну кімнату з %s.', - queryClose: 'Приватну кімнату з %s зачинено.', - ignoreAdded: '%s додано до переліку ігнорованих осіб.', - ignoreRemoved: '%s вилучено з переліку ігнорованих осіб.', - ignoreList: 'Ігроновані особи:', - ignoreListEmpty: 'Ігнорованих осіб немає.', - who: 'Зараз в Чаті:', - whoChannel: 'Зараз в кімнаті %s такі користувачі:', - whoEmpty: 'Ця кімната порожня.', - list: 'Інші кімнати:', - bans: 'Заблоковані користувачі:', - bansEmpty: 'Немає заблокованих користувачів.', - unban: 'Блокування користувача %s відмінено.', - whois: 'Користувач %s - IP адреса:', - whereis: 'Користувач %s в кімнаті %s.', - roll: 'Користувачем %s кинуто %s, випало %s.', - nick: 'Користувач %s відтепер буде називатись %s.', - toggleUserMenu: 'Меню користувача %s', - userMenuLogout: 'Вийти', - userMenuWho: 'Показати присутніх', - userMenuList: 'Показати кімнати', - userMenuAction: 'Описати чим зараз займаєтесь', - userMenuRoll: 'Кинути кості', - userMenuNick: 'Змінити собі ім\'я', - userMenuEnterPrivateRoom: 'Увійти до приватної кімнати', - userMenuSendPrivateMessage: 'Надіслати особисте повідомлення', - userMenuDescribe: 'Описати чим займаєтесь (приватно)', - userMenuOpenPrivateChannel: 'Створити приватну кімнату', - userMenuClosePrivateChannel: 'Закрити приватну кімнату', - userMenuInvite: 'Запросити', - userMenuUninvite: 'Відмовити', - userMenuIgnore: 'Ігнорувати/Приймати', - userMenuIgnoreList: 'Перелік ігнорованих', - userMenuWhereis: 'Показати кімнати', - userMenuKick: 'Викинути/Заблокувати', - userMenuBans: 'Перелік заблокованих користувачів', - userMenuWhois: 'Показати IP', - unbanUser: 'Відмінити блокування користувача %s', - joinChannel: 'Зайти в кімнату %s', - cite: '%s пише:', - urlDialog: 'Будь-ласка, введіть адресу веб-сторінки:', - deleteMessage: 'Видалити це повідомлення', - deleteMessageConfirm: 'Справді видалити це повідомлення?', - errorCookiesRequired: 'Для Чату необхідно дозволити Cookies.', - errorUserNameNotFound: 'Помилка: користувач %s не існує.', - errorMissingText: 'Помилка: повідомлення відсутнє.', - errorMissingUserName: 'Помилка: відсутнє ім\'я користувача.', - errorInvalidUserName: 'Error: Invalid username.', - errorUserNameInUse: 'Error: Username already in use.', - errorMissingChannelName: 'Помилка: відсутня назва кімнати.', - errorInvalidChannelName: 'Помилка: хибна назва кімнати: %s', - errorPrivateMessageNotAllowed: 'Помилка: приватні повідомлення заборонені.', - errorInviteNotAllowed: 'Помилка: Вам заборонено запрошувати до цієї кімнати.', - errorUninviteNotAllowed: 'Помилка: Вам заборонено відмовляти в запрошенні до цієї кімнати.', - errorNoOpenQuery: 'Помилка: не існує приватних кімнат.', - errorKickNotAllowed: 'Помилка: Вам недозволено викидати користувачів %s.', - errorCommandNotAllowed: 'Помилка: недозволена команда: %s', - errorUnknownCommand: 'Помилка: хибна команда: %s', - errorMaxMessageRate: 'Помилка: Ви досягли максимальної кількості повідомлень за хвилину.', - errorConnectionTimeout: 'Помилка: час очікування минув. Будь-ласка, спробуйте знову.', - errorConnectionStatus: 'Помилка: стан з\'єднання: %s', - errorSoundIO: 'Помилка: Неможливо відкрити звуковий файл (Flash IO Error).', - errorSocketIO: 'Помилка: З\'єднання з сервером невдалося (Flash IO Error).', - errorSocketSecurity: 'Помилка: З\'єднання з сервером невдалося (Flash Security Error).', - errorDOMSyntax: 'Помилка: Invalid DOM Syntax (DOM ID: %s).' - -} \ No newline at end of file diff --git a/library/ajaxchat/chat/js/lang/zh-tw.js b/library/ajaxchat/chat/js/lang/zh-tw.js deleted file mode 100644 index c6b971953..000000000 --- a/library/ajaxchat/chat/js/lang/zh-tw.js +++ /dev/null @@ -1,91 +0,0 @@ -/* - * @package AJAX_Chat - * @author Sebastian Tschan - * @copyright (c) Sebastian Tschan - * @license Modified MIT License - * @link https://blueimp.net/ajax/ - */ - -// Ajax Chat language Object: -var ajaxChatLang = { - - login: '%s已登入', - logout: '%s已登出', - logoutTimeout: '%s已登出(連線逾時)', - logoutIP: '%s已登出(無效的IP address)', - logoutKicked: '%s已登出(被踢掉了)', - channelEnter: '%s已進入', - channelLeave: '%s已離開', - privmsg: '(悄悄話)', - privmsgto: '(給 %s 的悄悄話)', - invite: '%s 邀請您進入 %s .', - inviteto: '請 %s 進入 %s 的邀請函已發送', - uninvite: '%s 於 %s 收回了邀請函', - uninviteto: '請 %s 進入 %s 的邀請函已收回', - queryOpen: '允許 %s 進入私人房', - queryClose: '已不允許 %s 進入私人房', - ignoreAdded: '增加 %s 至忽略清單', - ignoreRemoved: '移除 %s 自忽略清單', - ignoreList: '已忽略來自以下人士的訊息:', - ignoreListEmpty: '忽略清單是空的。', - who: '已上線會員:', - whoChannel: '在 %s 的已上線會員:', - whoEmpty: '沒有人在那裡。', - list: '可進入的房間:', - bans: '被禁止使用的人:', - bansEmpty: '沒有被禁止使用的人。', - unban: '開放之前被禁的使用者 %s :', - whois: '使用者 %s - IP address:', - whereis: '使用者 %s 正在 %s 。', - roll: '%s 擲了 %s 得到了 %s 。', - nick: '%s 現在暱稱改為 %s', - toggleUserMenu: '開啟為 %s 特製的功能表', - userMenuLogout: '登出', - userMenuWho: '顯示已上線會員', - userMenuList: '顯示可進入的房間', - userMenuAction: '描述動作', - userMenuRoll: '擲骰子', - userMenuNick: '換暱稱', - userMenuEnterPrivateRoom: '進入私人房', - userMenuSendPrivateMessage: '傳送悄悄話', - userMenuDescribe: '傳送私人動作', - userMenuOpenPrivateChannel: '允許進入私人房', - userMenuClosePrivateChannel: '不允許進入私人房', - userMenuInvite: '邀請某人(進入自己的私人房)', - userMenuUninvite: '收回邀請', - userMenuIgnore: '忽略/接受某人的訊息', - userMenuIgnoreList: '顯示忽略清單', - userMenuWhereis: '顯示所在地', - userMenuKick: '踢掉/禁人', - userMenuBans: '顯示被禁的使用者', - userMenuWhois: '顯示 IP', - unbanUser: '開放之前被禁的使用者 %s ', - joinChannel: '進入 %s', - cite: '%s 說:', - urlDialog: '請輸入網址(URL):', - deleteMessage: '刪除這條訊息', - deleteMessageConfirm: '真的要刪除這條訊息嗎?', - errorCookiesRequired: '請打開Cookies!', - errorUserNameNotFound: '錯誤:沒有使用者 %s ……', - errorMissingText: '錯誤:未輸入訊息……', - errorMissingUserName: '錯誤:未輸入使用者帳號……', - errorInvalidUserName: '錯誤:帳號錯誤……', - errorUserNameInUse: '錯誤:帳號使用中……', - errorMissingChannelName: '錯誤:不存在的房間……', - errorInvalidChannelName: '錯誤:不存在的房間: %s ……', - errorPrivateMessageNotAllowed: '錯誤:不允許使用悄悄話功能……', - errorInviteNotAllowed: '錯誤:不允許邀請別人來這裡……', - errorUninviteNotAllowed: '錯誤:不允許收回邀請……', - errorNoOpenQuery: '錯誤:沒有私人房是開放的……', - errorKickNotAllowed: '錯誤:你不能把 %s 踢掉!', - errorCommandNotAllowed: '錯誤:不允許使用的指令: %s ……', - errorUnknownCommand: '錯誤:無法辨識的命令: %s ……', - errorMaxMessageRate: '錯誤:已達到一分鐘所能發送的最大訊息數量……', - errorConnectionTimeout: '錯誤:連線逾時,請再連一次……', - errorConnectionStatus: '錯誤:連線狀態: %s ', - errorSoundIO: '錯誤:無法讀取音效檔 (Flash IO Error).', - errorSocketIO: '錯誤:無法連線到伺服器的socket (Flash IO Error).', - errorSocketSecurity: '錯誤:無法連線到伺服器的socket (Flash Security Error).', - errorDOMSyntax: '錯誤:無效的 DOM 語法 (DOM ID: %s).' - -} \ No newline at end of file diff --git a/library/ajaxchat/chat/js/lang/zh.js b/library/ajaxchat/chat/js/lang/zh.js deleted file mode 100644 index ba41fad7f..000000000 --- a/library/ajaxchat/chat/js/lang/zh.js +++ /dev/null @@ -1,92 +0,0 @@ -/* - * @package AJAX_Chat - * @author Sebastian Tschan - * @author mikespook - * @copyright (c) Sebastian Tschan - * @license Modified MIT License - * @link https://blueimp.net/ajax/ - */ - -// Ajax Chat language Object: -var ajaxChatLang = { - - login: '%s 进入聊天室。', - logout: '%s 退出聊天室。', - logoutTimeout: '%s 因超时,退出聊天室。', - logoutIP: '%s 因不合法的 IP 地址退出。', - logoutKicked: '%s 被踢出聊天室。', - channelEnter: '%s 进入频道。', - channelLeave: '%s 退出频道。', - privmsg: '(悄悄话)', - privmsgto: '(对 %s 说悄悄话)', - invite: '%s 邀请你加入 %s。', - inviteto: '对 %s 在频道 %s 的邀请已经发送。', - uninvite: '%s 撤销了你在频道 %s 的邀请。', - uninviteto: '对 %s 在频道 %s 的撤销邀请已经发送。', - queryOpen: '私人频道对 %s 打开。', - queryClose: '私人频道对 %s 关闭。', - ignoreAdded: '将 %s 加入忽略列表。', - ignoreRemoved: '从忽略列表中移除 %s。', - ignoreList: '已忽略用户:', - ignoreListEmpty: '已列出未忽略用户。', - who: '在线用户:', - whoChannel: '频道 %s 的在线用户:', - whoEmpty: '指定频道中没有在线用户。', - list: '可用频道:', - bans: '已禁言用户:', - bansEmpty: '已列出未禁言用户。', - unban: '用户 %s 的禁言已取消。', - whois: '用户 %s - IP 地址:', - whereis: '用户 %s 进入频道 %s.', - roll: '%s 摇出了 %s 并且得到了 %s。', - nick: '%s 改名为 %s。', - toggleUserMenu: '切换用户 %s 的菜单', - userMenuLogout: '退出', - userMenuWho: '列出在线用户', - userMenuList: '列出可用的频道', - userMenuAction: '动作描述', - userMenuRoll: '摇骰子', - userMenuNick: '修改用户名', - userMenuEnterPrivateRoom: '进入私人房间', - userMenuSendPrivateMessage: '发送私人消息', - userMenuDescribe: '发送私人动作', - userMenuOpenPrivateChannel: '打开私人频道', - userMenuClosePrivateChannel: '关闭私人频道', - userMenuInvite: '邀请', - userMenuUninvite: '撤销邀请', - userMenuIgnore: '忽略/接收', - userMenuIgnoreList: '列出忽略的用户', - userMenuWhereis: '显示频道', - userMenuKick: '踢/禁', - userMenuBans: '列出禁言的用户', - userMenuWhois: '显示 IP', - unbanUser: '撤销用户 %s 禁言', - joinChannel: '加入频道 %s', - cite: '%s 说:', - urlDialog: '请输入网页地址(URL):', - deleteMessage: '删除聊天记录', - deleteMessageConfirm: '要删除已经发出的聊天记录吗?', - errorCookiesRequired: '聊天室需要开启 Cookie 功能。', - errorUserNameNotFound: '错误:未找到用户 %s。', - errorMissingText: '错误:缺少消息内容。', - errorMissingUserName: '错误:缺少用户名。', - errorInvalidUserName: 'Error: Invalid username.', - errorUserNameInUse: 'Error: Username already in use.', - errorMissingChannelName: '错误:缺少频道名。', - errorInvalidChannelName: '错误:错误的频道名:%s', - errorPrivateMessageNotAllowed: '错误:不允许发送私人消息。', - errorInviteNotAllowed: '错误:你在这个频道没有权限邀请他人。', - errorUninviteNotAllowed: '错误:你在这个频道没有权限取消邀请。', - errorNoOpenQuery: '错误:没有私人频道开放。', - errorKickNotAllowed: '错误:没有权限提出 %s。', - errorCommandNotAllowed: '错误:不允许的命令:%s', - errorUnknownCommand: '错误:未知命令:%s', - errorMaxMessageRate: '错误:超出了每分钟最大讯息数。', - errorConnectionTimeout: '错误:连接超时,请重试。', - errorConnectionStatus: '错误:连接状态:%s', - errorSoundIO: '错误:加载声音文件失败(Flash IO 错误)。', - errorSocketIO: '错误:连接 Socket 服务器失败(Flash IO 错误)。', - errorSocketSecurity: '错误:连接 Socket 服务器失败(Flash 安全错误)。', - errorDOMSyntax: '错误:错误的 DOM 语法(DOM ID:%s)。' - -} \ No newline at end of file diff --git a/library/ajaxchat/chat/js/logs.js b/library/ajaxchat/chat/js/logs.js deleted file mode 100644 index 9ec694cee..000000000 --- a/library/ajaxchat/chat/js/logs.js +++ /dev/null @@ -1,128 +0,0 @@ -/* - * @package AJAX_Chat - * @author Sebastian Tschan - * @copyright (c) Sebastian Tschan - * @license Modified MIT License - * @link https://blueimp.net/ajax/ - */ - -// Overrides client-side functionality for the logs view: - - ajaxChat.logsMonitorMode = null; - ajaxChat.logsLastID = null; - ajaxChat.logsCommand = null; - - ajaxChat.startChatUpdate = function() { - var infos = 'userID,userName,userRole'; - if(this.socketServerEnabled) { - infos += ',socketRegistrationID'; - } - this.updateChat('&getInfos=' + this.encodeText(infos)); - } - - ajaxChat.updateChat = function(paramString) { - // Only update if we have parameters, are in monitor mode or the lastID has changed since the last update: - if(paramString || this.logsMonitorMode || !this.logsLastID || this.lastID != this.logsLastID) { - // Update the logsLastID for the lastID check: - this.logsLastID = this.lastID; - - var requestUrl = this.ajaxURL - + '&lastID=' - + this.lastID; - if(paramString) { - requestUrl += paramString; - } - requestUrl += '&' + this.getLogsCommand(); - this.makeRequest(requestUrl,'GET',null); - } else { - this.logsLastID = null; - } - } - - ajaxChat.sendMessage = function() { - this.getLogs(); - } - - ajaxChat.getLogs = function() { - clearTimeout(this.timer); - this.clearChatList(); - this.lastID = 0; - this.logsCommand = null; - this.makeRequest(this.ajaxURL,'POST',this.getLogsCommand()); - } - - ajaxChat.getLogsCommand = function() { - if(!this.logsCommand) { - if(!this.dom['inputField'].value && - parseInt(this.dom['yearSelection'].value) <= 0 && - parseInt(this.dom['hourSelection'].value) <= 0) { - this.logsMonitorMode = true; - } else { - this.logsMonitorMode = false; - } - this.logsCommand = 'command=getLogs' - + '&channelID=' + this.dom['channelSelection'].value - + '&year=' + this.dom['yearSelection'].value - + '&month=' + this.dom['monthSelection'].value - + '&day=' + this.dom['daySelection'].value - + '&hour=' + this.dom['hourSelection'].value - + '&search=' + this.encodeText(this.dom['inputField'].value); - } - return this.logsCommand; - } - - ajaxChat.onNewMessage = function(dateObject, userID, userName, userRoleClass, messageID, messageText, channelID, ip) { - if(messageText.indexOf('/delete') == 0) { - return false; - } - if(this.logsMonitorMode) { - this.blinkOnNewMessage(dateObject, userID, userName, userRoleClass, messageID, messageText, channelID, ip); - this.playSoundOnNewMessage( - dateObject, userID, userName, userRoleClass, messageID, messageText, channelID, ip - ); - } - return true; - } - - ajaxChat.logout = function() { - clearTimeout(this.timer); - this.makeRequest(this.ajaxURL,'POST','logout=true'); - } - - ajaxChat.switchLanguage = function(langCode) { - window.location.search = '?view=logs&lang='+langCode; - } - - ajaxChat.setChatUpdateTimer = function() { - clearTimeout(this.timer); - var timeout; - if(this.socketIsConnected && this.logsLastID && this.lastID == this.logsLastID) { - timeout = this.socketTimerRate; - } else { - timeout = this.timerRate; - if(this.socketServerEnabled && !this.socketReconnectTimer) { - // If the socket connection fails try to reconnect once in a minute: - this.socketReconnectTimer = setTimeout('ajaxChat.socketConnect();', 60000); - } - } - this.timer = setTimeout('ajaxChat.updateChat(null);', timeout); - } - - ajaxChat.socketUpdate = function(data) { - if(this.logsMonitorMode) { - var xmlDoc = this.loadXML(data); - if(xmlDoc) { - var selectedChannelID = parseInt(this.dom['channelSelection'].value); - var channelID = parseInt(xmlDoc.firstChild.getAttribute('channelID')); - if(selectedChannelID == -3 || channelID == selectedChannelID || - selectedChannelID == -2 && channelID >= this.privateMessageDiff || - selectedChannelID == -1 - && channelID >= this.privateChannelDiff - && channelID < this.privateMessageDiff - ) { - this.handleChatMessages(xmlDoc.getElementsByTagName('message')); - } - } - } - } - \ No newline at end of file diff --git a/library/ajaxchat/chat/js/shoutbox.js b/library/ajaxchat/chat/js/shoutbox.js deleted file mode 100644 index b283277a7..000000000 --- a/library/ajaxchat/chat/js/shoutbox.js +++ /dev/null @@ -1,12 +0,0 @@ -/* - * @package AJAX_Chat - * @author Sebastian Tschan - * @copyright (c) Sebastian Tschan - * @license Modified MIT License - * @link https://blueimp.net/ajax/ - */ - -// Overrides functionality for the shoutbox view: - - ajaxChat.handleLogout = function() { - } diff --git a/library/ajaxchat/chat/lib/.htaccess b/library/ajaxchat/chat/lib/.htaccess deleted file mode 100644 index 91e386dc9..000000000 --- a/library/ajaxchat/chat/lib/.htaccess +++ /dev/null @@ -1,4 +0,0 @@ -AuthType Basic -AuthName "Forbidden" -AuthUserFile /dev/null -require user nobody \ No newline at end of file diff --git a/library/ajaxchat/chat/lib/class/AJAXChat.php b/library/ajaxchat/chat/lib/class/AJAXChat.php deleted file mode 100644 index 215b2c4e1..000000000 --- a/library/ajaxchat/chat/lib/class/AJAXChat.php +++ /dev/null @@ -1,3326 +0,0 @@ -initialize(); - } - - function initialize() { - // Initialize configuration settings: - $this->initConfig(); - - // Initialize the DataBase connection: - $this->initDataBaseConnection(); - - // Initialize request variables: - $this->initRequestVars(); - - // Initialize the chat session: - $this->initSession(); - - // Handle the browser request and send the response content: - $this->handleRequest(); - } - - function initConfig() { - $config = null; - if (!include(AJAX_CHAT_PATH.'lib/config.php')) { - echo('Error: Could not find a config.php file in "'.AJAX_CHAT_PATH.'"lib/". Check to make sure the file exists.'); - die(); - } - $this->_config = &$config; - - // Initialize custom configuration settings: - $this->initCustomConfig(); - } - - function initRequestVars() { - $this->_requestVars = array(); - $this->_requestVars['ajax'] = isset($_REQUEST['ajax']) ? true : false; - $this->_requestVars['userID'] = isset($_REQUEST['userID']) ? $_REQUEST['userID'] : null; - $this->_requestVars['userName'] = isset($_REQUEST['userName']) ? $_REQUEST['userName'] : null; - $this->_requestVars['channelID'] = isset($_REQUEST['channelID']) ? $_REQUEST['channelID'] : null; - $this->_requestVars['channelName'] = isset($_REQUEST['channelName']) ? $_REQUEST['channelName'] : null; - $this->_requestVars['text'] = isset($_POST['text']) ? $_POST['text'] : null; - $this->_requestVars['lastID'] = isset($_REQUEST['lastID']) ? $_REQUEST['lastID'] : ''; - $this->_requestVars['login'] = isset($_REQUEST['login']) ? true : false; - $this->_requestVars['logout'] = isset($_REQUEST['logout']) ? true : false; - $this->_requestVars['password'] = isset($_REQUEST['password']) ? $_REQUEST['password'] : null; - $this->_requestVars['view'] = isset($_REQUEST['view']) ? $_REQUEST['view'] : null; - $this->_requestVars['year'] = isset($_REQUEST['year']) ? (int)$_REQUEST['year'] : null; - $this->_requestVars['month'] = isset($_REQUEST['month']) ? (int)$_REQUEST['month'] : null; - $this->_requestVars['day'] = isset($_REQUEST['day']) ? (int)$_REQUEST['day'] : null; - $this->_requestVars['hour'] = isset($_REQUEST['hour']) ? (int)$_REQUEST['hour'] : null; - $this->_requestVars['search'] = isset($_REQUEST['search']) ? $_REQUEST['search'] : null; - $this->_requestVars['shoutbox'] = isset($_REQUEST['shoutbox']) ? true : false; - $this->_requestVars['getInfos'] = isset($_REQUEST['getInfos']) ? $_REQUEST['getInfos'] : null; - $this->_requestVars['lang'] = isset($_REQUEST['lang']) ? $_REQUEST['lang'] : null; - $this->_requestVars['delete'] = isset($_REQUEST['delete']) ? (int)$_REQUEST['delete'] : null; - - // Initialize custom request variables: - $this->initCustomRequestVars(); - - // Remove slashes which have been added to user input strings if magic_quotes_gpc is On: - if(get_magic_quotes_gpc()) { - // It is safe to remove the slashes as we escape user data ourself - array_walk( - $this->_requestVars, - create_function( - '&$value, $key', - 'if(is_string($value)) $value = stripslashes($value);' - ) - ); - } - } - - function initDataBaseConnection() { - // Create a new database object: - $this->db = new AJAXChatDataBase( - $this->_config['dbConnection'] - ); - // Use a new database connection if no existing is given: - if(!$this->_config['dbConnection']['link']) { - // Connect to the database server: - $this->db->connect($this->_config['dbConnection']); - if($this->db->error()) { - echo $this->db->getError(); - die(); - } - // Select the database: - $this->db->select($this->_config['dbConnection']['name']); - if($this->db->error()) { - echo $this->db->getError(); - die(); - } - } - // Unset the dbConnection array for safety purposes: - unset($this->_config['dbConnection']); - } - - function getDataBaseTable($table) { - return ($this->db->getName() ? '`'.$this->db->getName().'`.'.$this->getConfig('dbTableNames',$table) : $this->getConfig('dbTableNames',$table)); - } - - function initSession() { - // Start the PHP session (if not already started): - $this->startSession(); - - if($this->isLoggedIn()) { - // Logout if we receive a logout request, the chat has been closed or the userID could not be revalidated: - if($this->getRequestVar('logout') || !$this->isChatOpen() || !$this->revalidateUserID()) { - $this->logout(); - return; - } - // Logout if the Session IP is not the same when logged in and ipCheck is enabled: - if($this->getConfig('ipCheck') && ($this->getSessionIP() === null || $this->getSessionIP() != $_SERVER['REMOTE_ADDR'])) { - $this->logout('IP'); - return; - } - } else if( - // Login if auto-login enabled or a login, userName or shoutbox parameter is given: - $this->getConfig('forceAutoLogin') || - $this->getRequestVar('login') || - $this->getRequestVar('userName') || - $this->getRequestVar('shoutbox') - ) { - $this->login(); - } - - // Initialize the view: - $this->initView(); - - if($this->getView() == 'chat') { - $this->initChatViewSession(); - } else if($this->getView() == 'logs') { - $this->initLogsViewSession(); - } - - if(!$this->getRequestVar('ajax') && !headers_sent()) { - // Set style cookie: - $this->setStyle(); - // Set langCode cookie: - $this->setLangCodeCookie(); - } - - $this->initCustomSession(); - } - - function initLogsViewSession() { - if($this->getConfig('socketServerEnabled')) { - if(!$this->getSessionVar('logsViewSocketAuthenticated')) { - $this->updateLogsViewSocketAuthentication(); - $this->setSessionVar('logsViewSocketAuthenticated', true); - } - } - } - - function updateLogsViewSocketAuthentication() { - if($this->getUserRole() != AJAX_CHAT_ADMIN) { - $channels = array(); - foreach($this->getChannels() as $channel) { - if($this->getConfig('logsUserAccessChannelList') && !in_array($channel, $this->getConfig('logsUserAccessChannelList'))) { - continue; - } - array_push($channels, $channel); - } - array_push($channels, $this->getPrivateMessageID()); - array_push($channels, $this->getPrivateChannelID()); - } else { - // The channelID "ALL" authenticates for all channels: - $channels = array('ALL'); - } - $this->updateSocketAuthentication( - $this->getUserID(), - $this->getSocketRegistrationID(), - $channels - ); - } - - function initChatViewSession() { - // If channel is not null we are logged in to the chat view: - if($this->getChannel() !== null) { - // Check if the current user has been logged out due to inactivity: - if(!$this->isUserOnline()) { - $this->logout(); - return; - } - if($this->getRequestVar('ajax')) { - $this->initChannel(); - $this->updateOnlineStatus(); - $this->checkAndRemoveInactive(); - } - } else { - if($this->getRequestVar('ajax')) { - // Set channel, insert login messages and add to online list on first ajax request in chat view: - $this->chatViewLogin(); - } - } - } - - function isChatOpen() { - if($this->getUserRole() == AJAX_CHAT_ADMIN) - return true; - if($this->getConfig('chatClosed')) - return false; - $time = time(); - if($this->getConfig('timeZoneOffset') !== null) { - // Subtract the server timezone offset and add the config timezone offset: - $time -= date('Z', $time); - $time += $this->getConfig('timeZoneOffset'); - } - // Check the opening hours: - if($this->getConfig('openingHour') < $this->getConfig('closingHour')) - { - if(($this->getConfig('openingHour') > date('G', $time)) || ($this->getConfig('closingHour') <= date('G', $time))) - return false; - } - else - { - if(($this->getConfig('openingHour') > date('G', $time)) && ($this->getConfig('closingHour') <= date('G', $time))) - return false; - } - // Check the opening weekdays: - if(!in_array(date('w', $time), $this->getConfig('openingWeekDays'))) - return false; - return true; - } - - function handleRequest() { - if($this->getRequestVar('ajax')) { - if($this->isLoggedIn()) { - // Parse info requests (for current userName, etc.): - $this->parseInfoRequests(); - - // Parse command requests (e.g. message deletion): - $this->parseCommandRequests(); - - // Parse message requests: - $this->initMessageHandling(); - } - // Send chat messages and online user list in XML format: - $this->sendXMLMessages(); - } else { - // Display XHTML content for non-ajax requests: - $this->sendXHTMLContent(); - } - } - - function parseCommandRequests() { - if($this->getRequestVar('delete') !== null) { - $this->deleteMessage($this->getRequestVar('delete')); - } - } - - function parseInfoRequests() { - if($this->getRequestVar('getInfos')) { - $infoRequests = explode(',', $this->getRequestVar('getInfos')); - foreach($infoRequests as $infoRequest) { - $this->parseInfoRequest($infoRequest); - } - } - } - - function parseInfoRequest($infoRequest) { - switch($infoRequest) { - case 'userID': - $this->addInfoMessage($this->getUserID(), 'userID'); - break; - case 'userName': - $this->addInfoMessage($this->getUserName(), 'userName'); - break; - case 'userRole': - $this->addInfoMessage($this->getUserRole(), 'userRole'); - break; - case 'channelID': - $this->addInfoMessage($this->getChannel(), 'channelID'); - break; - case 'channelName': - $this->addInfoMessage($this->getChannelName(), 'channelName'); - break; - case 'socketRegistrationID': - $this->addInfoMessage($this->getSocketRegistrationID(), 'socketRegistrationID'); - break; - default: - $this->parseCustomInfoRequest($infoRequest); - } - } - - function sendXHTMLContent() { - $httpHeader = new AJAXChatHTTPHeader($this->getConfig('contentEncoding'), $this->getConfig('contentType')); - - $template = new AJAXChatTemplate($this, $this->getTemplateFileName(), $httpHeader->getContentType()); - - // Send HTTP header: - $httpHeader->send(); - - // Send parsed template content: - echo $template->getParsedContent(); - } - - function getTemplateFileName() { - switch($this->getView()) { - case 'chat': - return AJAX_CHAT_PATH.'lib/template/loggedIn.html'; - case 'logs': - return AJAX_CHAT_PATH.'lib/template/logs.html'; - default: - return AJAX_CHAT_PATH.'lib/template/loggedOut.html'; - } - } - - function initView() { - $this->_view = null; - // "chat" is the default view: - $view = ($this->getRequestVar('view') === null) ? 'chat' : $this->getRequestVar('view'); - if($this->hasAccessTo($view)) { - $this->_view = $view; - } - } - - function getView() { - return $this->_view; - } - - function hasAccessTo($view) { - switch($view) { - case 'chat': - case 'teaser': - if($this->isLoggedIn()) { - return true; - } - return false; - case 'logs': - if($this->isLoggedIn() && ($this->getUserRole() == AJAX_CHAT_ADMIN || - ($this->getConfig('logsUserAccess') && - ($this->getUserRole() == AJAX_CHAT_MODERATOR || $this->getUserRole() == AJAX_CHAT_USER)) - )) { - return true; - } - return false; - default: - return false; - } - } - - function login() { - // Retrieve valid login user data (from request variables or session data): - $userData = $this->getValidLoginUserData(); - - if(!$userData) { - $this->addInfoMessage('errorInvalidUser'); - return false; - } - - // If the chat is closed, only the admin may login: - if(!$this->isChatOpen() && $userData['userRole'] != AJAX_CHAT_ADMIN) { - $this->addInfoMessage('errorChatClosed'); - return false; - } - - if(!$this->getConfig('allowGuestLogins') && $userData['userRole'] == AJAX_CHAT_GUEST) { - return false; - } - - // Check if userID or userName are already listed online: - if($this->isUserOnline($userData['userID']) || $this->isUserNameInUse($userData['userName'])) { - if($userData['userRole'] == AJAX_CHAT_USER || $userData['userRole'] == AJAX_CHAT_MODERATOR || $userData['userRole'] == AJAX_CHAT_ADMIN) { - // Set the registered user inactive and remove the inactive users so the user can be logged in again: - $this->setInactive($userData['userID'], $userData['userName']); - $this->removeInactive(); - } else { - $this->addInfoMessage('errorUserInUse'); - return false; - } - } - - // Check if user is banned: - if($userData['userRole'] != AJAX_CHAT_ADMIN && $this->isUserBanned($userData['userName'], $userData['userID'], $_SERVER['REMOTE_ADDR'])) { - $this->addInfoMessage('errorBanned'); - return false; - } - - // Check if the max number of users is logged in (not affecting moderators or admins): - if(!($userData['userRole'] == AJAX_CHAT_MODERATOR || $userData['userRole'] == AJAX_CHAT_ADMIN) && $this->isMaxUsersLoggedIn()) { - $this->addInfoMessage('errorMaxUsersLoggedIn'); - return false; - } - - // Use a new session id (if session has been started by the chat): - $this->regenerateSessionID(); - - // Log in: - $this->setUserID($userData['userID']); - $this->setUserName($userData['userName']); - $this->setLoginUserName($userData['userName']); - $this->setUserRole($userData['userRole']); - $this->setLoggedIn(true); - $this->setLoginTimeStamp(time()); - - // IP Security check variable: - $this->setSessionIP($_SERVER['REMOTE_ADDR']); - - // The client authenticates to the socket server using a socketRegistrationID: - if($this->getConfig('socketServerEnabled')) { - $this->setSocketRegistrationID( - md5(uniqid(rand(), true)) - ); - } - - // Add userID, userName and userRole to info messages: - $this->addInfoMessage($this->getUserID(), 'userID'); - $this->addInfoMessage($this->getUserName(), 'userName'); - $this->addInfoMessage($this->getUserRole(), 'userRole'); - - // Purge logs: - if($this->getConfig('logsPurgeLogs')) { - $this->purgeLogs(); - } - - return true; - } - - function chatViewLogin() { - $this->setChannel($this->getValidRequestChannelID()); - $this->addToOnlineList(); - - // Add channelID and channelName to info messages: - $this->addInfoMessage($this->getChannel(), 'channelID'); - $this->addInfoMessage($this->getChannelName(), 'channelName'); - - // Login message: - $text = '/login '.$this->getUserName(); - $this->insertChatBotMessage( - $this->getChannel(), - $text, - null, - 1 - ); - } - - function getValidRequestChannelID() { - $channelID = $this->getRequestVar('channelID'); - $channelName = $this->getRequestVar('channelName'); - // Check the given channelID, or get channelID from channelName: - if($channelID === null) { - if($channelName !== null) { - $channelID = $this->getChannelIDFromChannelName($channelName); - // channelName might need encoding conversion: - if($channelID === null) { - $channelID = $this->getChannelIDFromChannelName( - $this->trimChannelName($channelName, $this->getConfig('contentEncoding')) - ); - } - } - } - // Validate the resulting channelID: - if(!$this->validateChannel($channelID)) { - if($this->getChannel() !== null) { - return $this->getChannel(); - } - return $this->getConfig('defaultChannelID'); - } - return $channelID; - } - - function initChannel() { - $channelID = $this->getRequestVar('channelID'); - $channelName = $this->getRequestVar('channelName'); - if($channelID !== null) { - $this->switchChannel($this->getChannelNameFromChannelID($channelID)); - } else if($channelName !== null) { - if($this->getChannelIDFromChannelName($channelName) === null) { - // channelName might need encoding conversion: - $channelName = $this->trimChannelName($channelName, $this->getConfig('contentEncoding')); - } - $this->switchChannel($channelName); - } - } - - function logout($type=null) { - // Update the socket server authentication for the user: - if($this->getConfig('socketServerEnabled')) { - $this->updateSocketAuthentication($this->getUserID()); - } - if($this->isUserOnline()) { - $this->chatViewLogout($type); - } - $this->setLoggedIn(false); - $this->destroySession(); - - // Re-initialize the view: - $this->initView(); - } - - function chatViewLogout($type) { - $this->removeFromOnlineList(); - if($type !== null) { - $type = ' '.$type; - } - // Logout message - $text = '/logout '.$this->getUserName().$type; - $this->insertChatBotMessage( - $this->getChannel(), - $text, - null, - 1 - ); - } - - function switchChannel($channelName) { - $channelID = $this->getChannelIDFromChannelName($channelName); - - if($channelID !== null && $this->getChannel() == $channelID) { - // User is already in the given channel, return: - return; - } - - // Check if we have a valid channel: - if(!$this->validateChannel($channelID)) { - // Invalid channel: - $text = '/error InvalidChannelName '.$channelName; - $this->insertChatBotMessage( - $this->getPrivateMessageID(), - $text - ); - return; - } - - $oldChannel = $this->getChannel(); - - $this->setChannel($channelID); - $this->updateOnlineList(); - - // Channel leave message - $text = '/channelLeave '.$this->getUserName(); - $this->insertChatBotMessage( - $oldChannel, - $text, - null, - 1 - ); - - // Channel enter message - $text = '/channelEnter '.$this->getUserName(); - $this->insertChatBotMessage( - $this->getChannel(), - $text, - null, - 1 - ); - - $this->addInfoMessage($channelName, 'channelSwitch'); - $this->addInfoMessage($channelID, 'channelID'); - $this->_requestVars['lastID'] = 0; - } - - function addToOnlineList() { - $sql = 'INSERT INTO '.$this->getDataBaseTable('online').'( - userID, - userName, - userRole, - channel, - dateTime, - ip - ) - VALUES ( - '.$this->db->makeSafe($this->getUserID()).', - '.$this->db->makeSafe($this->getUserName()).', - '.$this->db->makeSafe($this->getUserRole()).', - '.$this->db->makeSafe($this->getChannel()).', - NOW(), - '.$this->db->makeSafe($this->ipToStorageFormat($_SERVER['REMOTE_ADDR'])).' - );'; - - // Create a new SQL query: - $result = $this->db->sqlQuery($sql); - - // Stop if an error occurs: - if($result->error()) { - echo $result->getError(); - die(); - } - - $this->resetOnlineUsersData(); - } - - function removeFromOnlineList() { - $sql = 'DELETE FROM - '.$this->getDataBaseTable('online').' - WHERE - userID = '.$this->db->makeSafe($this->getUserID()).';'; - - // Create a new SQL query: - $result = $this->db->sqlQuery($sql); - - // Stop if an error occurs: - if($result->error()) { - echo $result->getError(); - die(); - } - - $this->removeUserFromOnlineUsersData(); - } - - function updateOnlineList() { - $sql = 'UPDATE - '.$this->getDataBaseTable('online').' - SET - userName = '.$this->db->makeSafe($this->getUserName()).', - channel = '.$this->db->makeSafe($this->getChannel()).', - dateTime = NOW(), - ip = '.$this->db->makeSafe($this->ipToStorageFormat($_SERVER['REMOTE_ADDR'])).' - WHERE - userID = '.$this->db->makeSafe($this->getUserID()).';'; - - // Create a new SQL query: - $result = $this->db->sqlQuery($sql); - - // Stop if an error occurs: - if($result->error()) { - echo $result->getError(); - die(); - } - - $this->resetOnlineUsersData(); - } - - function initMessageHandling() { - // Don't handle messages if we are not in chat view: - if($this->getView() != 'chat') { - return; - } - - // Check if we have been uninvited from a private or restricted channel: - if(!$this->validateChannel($this->getChannel())) { - // Switch to the default channel: - $this->switchChannel($this->getChannelNameFromChannelID($this->getConfig('defaultChannelID'))); - return; - } - - if($this->getRequestVar('text') !== null) { - $this->insertMessage($this->getRequestVar('text')); - } - } - - function insertParsedMessage($text) { - - // If a queryUserName is set, sent all messages as private messages to this userName: - if($this->getQueryUserName() !== null && strpos($text, '/') !== 0) { - $text = '/msg '.$this->getQueryUserName().' '.$text; - } - - // Parse IRC-style commands: - if(strpos($text, '/') === 0) { - $textParts = explode(' ', $text); - - switch($textParts[0]) { - - // Channel switch: - case '/join': - $this->insertParsedMessageJoin($textParts); - break; - - // Logout: - case '/quit': - $this->logout(); - break; - - // Private message: - case '/msg': - case '/describe': - $this->insertParsedMessagePrivMsg($textParts); - break; - - // Invitation: - case '/invite': - $this->insertParsedMessageInvite($textParts); - break; - - // Uninvitation: - case '/uninvite': - $this->insertParsedMessageUninvite($textParts); - break; - - // Private messaging: - case '/query': - $this->insertParsedMessageQuery($textParts); - break; - - // Kicking offending users from the chat: - case '/kick': - $this->insertParsedMessageKick($textParts); - break; - - // Listing banned users: - case '/bans': - $this->insertParsedMessageBans($textParts); - break; - - // Unban user (remove from ban list): - case '/unban': - $this->insertParsedMessageUnban($textParts); - break; - - // Describing actions: - case '/me': - case '/action': - $this->insertParsedMessageAction($textParts); - break; - - - // Listing online Users: - case '/who': - $this->insertParsedMessageWho($textParts); - break; - - // Listing available channels: - case '/list': - $this->insertParsedMessageList($textParts); - break; - - // Retrieving the channel of a User: - case '/whereis': - $this->insertParsedMessageWhereis($textParts); - break; - - // Listing information about a User: - case '/whois': - $this->insertParsedMessageWhois($textParts); - break; - - // Rolling dice: - case '/roll': - $this->insertParsedMessageRoll($textParts); - break; - - // Switching userName: - case '/nick': - $this->insertParsedMessageNick($textParts); - break; - - // Custom or unknown command: - default: - if(!$this->parseCustomCommands($text, $textParts)) { - $this->insertChatBotMessage( - $this->getPrivateMessageID(), - '/error UnknownCommand '.$textParts[0] - ); - } - } - - } else { - // No command found, just insert the plain message: - $this->insertCustomMessage( - $this->getUserID(), - $this->getUserName(), - $this->getUserRole(), - $this->getChannel(), - $text - ); - } - } - - function insertParsedMessageJoin($textParts) { - if(count($textParts) == 1) { - // join with no arguments is the own private channel, if allowed: - if($this->isAllowedToCreatePrivateChannel()) { - // Private channels are identified by square brackets: - $this->switchChannel($this->getChannelNameFromChannelID($this->getPrivateChannelID())); - } else { - $this->insertChatBotMessage( - $this->getPrivateMessageID(), - '/error MissingChannelName' - ); - } - } else { - $this->switchChannel($textParts[1]); - } - } - - function insertParsedMessagePrivMsg($textParts) { - if($this->isAllowedToSendPrivateMessage()) { - if(count($textParts) < 3) { - if(count($textParts) == 2) { - $this->insertChatBotMessage( - $this->getPrivateMessageID(), - '/error MissingText' - ); - } else { - $this->insertChatBotMessage( - $this->getPrivateMessageID(), - '/error MissingUserName' - ); - } - } else { - // Get UserID from UserName: - $toUserID = $this->getIDFromName($textParts[1]); - if($toUserID === null) { - if($this->getQueryUserName() !== null) { - // Close the current query: - $this->insertMessage('/query'); - } else { - $this->insertChatBotMessage( - $this->getPrivateMessageID(), - '/error UserNameNotFound '.$textParts[1] - ); - } - } else { - // Insert /privaction command if /describe is used: - $command = ($textParts[0] == '/describe') ? '/privaction' : '/privmsg'; - // Copy of private message to current User: - $this->insertCustomMessage( - $this->getUserID(), - $this->getUserName(), - $this->getUserRole(), - $this->getPrivateMessageID(), - $command.'to '.$textParts[1].' '.implode(' ', array_slice($textParts, 2)) - ); - // Private message to requested User: - $this->insertCustomMessage( - $this->getUserID(), - $this->getUserName(), - $this->getUserRole(), - $this->getPrivateMessageID($toUserID), - $command.' '.implode(' ', array_slice($textParts, 2)) - ); - } - } - } else { - $this->insertChatBotMessage( - $this->getPrivateMessageID(), - '/error PrivateMessageNotAllowed' - ); - } - } - - function insertParsedMessageInvite($textParts) { - if($this->getChannel() == $this->getPrivateChannelID() || in_array($this->getChannel(), $this->getChannels())) { - if(count($textParts) == 1) { - $this->insertChatBotMessage( - $this->getPrivateMessageID(), - '/error MissingUserName' - ); - } else { - $toUserID = $this->getIDFromName($textParts[1]); - if($toUserID === null) { - $this->insertChatBotMessage( - $this->getPrivateMessageID(), - '/error UserNameNotFound '.$textParts[1] - ); - } else { - // Add the invitation to the database: - $this->addInvitation($toUserID); - $invitationChannelName = $this->getChannelNameFromChannelID($this->getChannel()); - // Copy of invitation to current User: - $this->insertChatBotMessage( - $this->getPrivateMessageID(), - '/inviteto '.$textParts[1].' '.$invitationChannelName - ); - // Invitation to requested User: - $this->insertChatBotMessage( - $this->getPrivateMessageID($toUserID), - '/invite '.$this->getUserName().' '.$invitationChannelName - ); - } - } - } else { - $this->insertChatBotMessage( - $this->getPrivateMessageID(), - '/error InviteNotAllowed' - ); - } - } - - function insertParsedMessageUninvite($textParts) { - if($this->getChannel() == $this->getPrivateChannelID() || in_array($this->getChannel(), $this->getChannels())) { - if(count($textParts) == 1) { - $this->insertChatBotMessage( - $this->getPrivateMessageID(), - '/error MissingUserName' - ); - } else { - $toUserID = $this->getIDFromName($textParts[1]); - if($toUserID === null) { - $this->insertChatBotMessage( - $this->getPrivateMessageID(), - '/error UserNameNotFound '.$textParts[1] - ); - } else { - // Remove the invitation from the database: - $this->removeInvitation($toUserID); - $invitationChannelName = $this->getChannelNameFromChannelID($this->getChannel()); - // Copy of uninvitation to current User: - $this->insertChatBotMessage( - $this->getPrivateMessageID(), - '/uninviteto '.$textParts[1].' '.$invitationChannelName - ); - // Uninvitation to requested User: - $this->insertChatBotMessage( - $this->getPrivateMessageID($toUserID), - '/uninvite '.$this->getUserName().' '.$invitationChannelName - ); - } - } - } else { - $this->insertChatBotMessage( - $this->getPrivateMessageID(), - '/error UninviteNotAllowed' - ); - } - } - - function insertParsedMessageQuery($textParts) { - if($this->isAllowedToSendPrivateMessage()) { - if(count($textParts) == 1) { - if($this->getQueryUserName() !== null) { - $this->insertChatBotMessage( - $this->getPrivateMessageID(), - '/queryClose '.$this->getQueryUserName() - ); - // Close the current query: - $this->setQueryUserName(null); - } else { - $this->insertChatBotMessage( - $this->getPrivateMessageID(), - '/error NoOpenQuery' - ); - } - } else { - if($this->getIDFromName($textParts[1]) === null) { - $this->insertChatBotMessage( - $this->getPrivateMessageID(), - '/error UserNameNotFound '.$textParts[1] - ); - } else { - if($this->getQueryUserName() !== null) { - // Close the current query: - $this->insertMessage('/query'); - } - // Open a query to the requested user: - $this->setQueryUserName($textParts[1]); - $this->insertChatBotMessage( - $this->getPrivateMessageID(), - '/queryOpen '.$textParts[1] - ); - } - } - } else { - $this->insertChatBotMessage( - $this->getPrivateMessageID(), - '/error PrivateMessageNotAllowed' - ); - } - } - - function insertParsedMessageKick($textParts) { - // Only moderators/admins may kick users: - if($this->getUserRole() == AJAX_CHAT_ADMIN || $this->getUserRole() == AJAX_CHAT_MODERATOR) { - if(count($textParts) == 1) { - $this->insertChatBotMessage( - $this->getPrivateMessageID(), - '/error MissingUserName' - ); - } else { - // Get UserID from UserName: - $kickUserID = $this->getIDFromName($textParts[1]); - if($kickUserID === null) { - $this->insertChatBotMessage( - $this->getPrivateMessageID(), - '/error UserNameNotFound '.$textParts[1] - ); - } else { - // Check the role of the user to kick: - $kickUserRole = $this->getRoleFromID($kickUserID); - if($kickUserRole == AJAX_CHAT_ADMIN || ($kickUserRole == AJAX_CHAT_MODERATOR && $this->getUserRole() != AJAX_CHAT_ADMIN)) { - // Admins and moderators may not be kicked: - $this->insertChatBotMessage( - $this->getPrivateMessageID(), - '/error KickNotAllowed '.$textParts[1] - ); - } else { - // Kick user and insert message: - $channel = $this->getChannelFromID($kickUserID); - $banMinutes = (count($textParts) > 2) ? $textParts[2] : null; - $this->kickUser($textParts[1], $banMinutes, $kickUserID); - // If no channel found, user logged out before he could be kicked - if($channel !== null) { - $this->insertChatBotMessage( - $channel, - '/kick '.$textParts[1], - null, - 1 - ); - // Send a copy of the message to the current user, if not in the channel: - if($channel != $this->getChannel()) { - $this->insertChatBotMessage( - $this->getPrivateMessageID(), - '/kick '.$textParts[1], - null, - 1 - ); - } - } - } - } - } - } else { - $this->insertChatBotMessage( - $this->getPrivateMessageID(), - '/error CommandNotAllowed '.$textParts[0] - ); - } - } - - function insertParsedMessageBans($textParts) { - // Only moderators/admins may see the list of banned users: - if($this->getUserRole() == AJAX_CHAT_ADMIN || $this->getUserRole() == AJAX_CHAT_MODERATOR) { - $this->removeExpiredBans(); - $bannedUsers = $this->getBannedUsers(); - if(count($bannedUsers) > 0) { - $this->insertChatBotMessage( - $this->getPrivateMessageID(), - '/bans '.implode(' ', $bannedUsers) - ); - } else { - $this->insertChatBotMessage( - $this->getPrivateMessageID(), - '/bansEmpty -' - ); - } - } else { - $this->insertChatBotMessage( - $this->getPrivateMessageID(), - '/error CommandNotAllowed '.$textParts[0] - ); - } - } - - function insertParsedMessageUnban($textParts) { - // Only moderators/admins may unban users: - if($this->getUserRole() == AJAX_CHAT_ADMIN || $this->getUserRole() == AJAX_CHAT_MODERATOR) { - $this->removeExpiredBans(); - if(count($textParts) == 1) { - $this->insertChatBotMessage( - $this->getPrivateMessageID(), - '/error MissingUserName' - ); - } else { - if(!in_array($textParts[1], $this->getBannedUsers())) { - $this->insertChatBotMessage( - $this->getPrivateMessageID(), - '/error UserNameNotFound '.$textParts[1] - ); - } else { - // Unban user and insert message: - $this->unbanUser($textParts[1]); - $this->insertChatBotMessage( - $this->getPrivateMessageID(), - '/unban '.$textParts[1] - ); - } - } - } else { - $this->insertChatBotMessage( - $this->getPrivateMessageID(), - '/error CommandNotAllowed '.$textParts[0] - ); - } - } - - function insertParsedMessageAction($textParts) { - if(count($textParts) == 1) { - $this->insertChatBotMessage( - $this->getPrivateMessageID(), - '/error MissingText' - ); - } else { - if($this->getQueryUserName() !== null) { - // If we are in query mode, sent the action to the query user: - $this->insertMessage('/describe '.$this->getQueryUserName().' '.implode(' ', array_slice($textParts, 1))); - } else { - $this->insertCustomMessage( - $this->getUserID(), - $this->getUserName(), - $this->getUserRole(), - $this->getChannel(), - implode(' ', $textParts) - ); - } - } - } - - function insertParsedMessageWho($textParts) { - if(count($textParts) == 1) { - if($this->isAllowedToListHiddenUsers()) { - // List online users from any channel: - $this->insertChatBotMessage( - $this->getPrivateMessageID(), - '/who '.implode(' ', $this->getOnlineUsers()) - ); - } else { - // Get online users for all accessible channels: - $channels = $this->getChannels(); - // Add the own private channel if allowed: - if($this->isAllowedToCreatePrivateChannel()) { - array_push($channels, $this->getPrivateChannelID()); - } - // Add the invitation channels: - foreach($this->getInvitations() as $channelID) { - if(!in_array($channelID, $channels)) { - array_push($channels, $channelID); - } - } - $this->insertChatBotMessage( - $this->getPrivateMessageID(), - '/who '.implode(' ', $this->getOnlineUsers($channels)) - ); - } - } else { - $channelName = $textParts[1]; - $channelID = $this->getChannelIDFromChannelName($channelName); - if(!$this->validateChannel($channelID)) { - // Invalid channel: - $this->insertChatBotMessage( - $this->getPrivateMessageID(), - '/error InvalidChannelName '.$channelName - ); - } else { - // Get online users for the given channel: - $onlineUsers = $this->getOnlineUsers(array($channelID)); - if(count($onlineUsers) > 0) { - $this->insertChatBotMessage( - $this->getPrivateMessageID(), - '/whoChannel '.$channelName.' '.implode(' ', $onlineUsers) - ); - } else { - $this->insertChatBotMessage( - $this->getPrivateMessageID(), - '/whoEmpty -' - ); - } - } - } - } - - function insertParsedMessageList($textParts) { - // Get the names of all accessible channels: - $channelNames = $this->getChannelNames(); - // Add the own private channel, if allowed: - if($this->isAllowedToCreatePrivateChannel()) { - array_push($channelNames, $this->getPrivateChannelName()); - } - // Add the invitation channels: - foreach($this->getInvitations() as $channelID) { - $channelName = $this->getChannelNameFromChannelID($channelID); - if($channelName !== null && !in_array($channelName, $channelNames)) { - array_push($channelNames, $channelName); - } - } - $this->insertChatBotMessage( - $this->getPrivateMessageID(), - '/list '.implode(' ', $channelNames) - ); - } - - function insertParsedMessageWhereis($textParts) { - if(count($textParts) == 1) { - $this->insertChatBotMessage( - $this->getPrivateMessageID(), - '/error MissingUserName' - ); - } else { - // Get UserID from UserName: - $whereisUserID = $this->getIDFromName($textParts[1]); - if($whereisUserID === null) { - $this->insertChatBotMessage( - $this->getPrivateMessageID(), - '/error UserNameNotFound '.$textParts[1] - ); - } else { - $channelID = $this->getChannelFromID($whereisUserID); - if($this->validateChannel($channelID)) { - $channelName = $this->getChannelNameFromChannelID($channelID); - } else { - $channelName = null; - } - if($channelName === null) { - $this->insertChatBotMessage( - $this->getPrivateMessageID(), - '/error UserNameNotFound '.$textParts[1] - ); - } else { - // List user information: - $this->insertChatBotMessage( - $this->getPrivateMessageID(), - '/whereis '.$textParts[1].' '.$channelName - ); - } - } - } - } - - function insertParsedMessageWhois($textParts) { - // Only moderators/admins: - if($this->getUserRole() == AJAX_CHAT_ADMIN || $this->getUserRole() == AJAX_CHAT_MODERATOR) { - if(count($textParts) == 1) { - $this->insertChatBotMessage( - $this->getPrivateMessageID(), - '/error MissingUserName' - ); - } else { - // Get UserID from UserName: - $whoisUserID = $this->getIDFromName($textParts[1]); - if($whoisUserID === null) { - $this->insertChatBotMessage( - $this->getPrivateMessageID(), - '/error UserNameNotFound '.$textParts[1] - ); - } else { - // List user information: - $this->insertChatBotMessage( - $this->getPrivateMessageID(), - '/whois '.$textParts[1].' '.$this->getIPFromID($whoisUserID) - ); - } - } - } else { - $this->insertChatBotMessage( - $this->getPrivateMessageID(), - '/error CommandNotAllowed '.$textParts[0] - ); - } - } - - function insertParsedMessageRoll($textParts) { - if(count($textParts) == 1) { - // default is one d6: - $text = '/roll '.$this->getUserName().' 1d6 '.$this->rollDice(6); - } else { - $diceParts = explode('d', $textParts[1]); - if(count($diceParts) == 2) { - $number = (int)$diceParts[0]; - $sides = (int)$diceParts[1]; - - // Dice number must be an integer between 1 and 100, else roll only one: - $number = ($number > 0 && $number <= 100) ? $number : 1; - - // Sides must be an integer between 1 and 100, else take 6: - $sides = ($sides > 0 && $sides <= 100) ? $sides : 6; - - $text = '/roll '.$this->getUserName().' '.$number.'d'.$sides.' '; - for($i=0; $i<$number; $i++) { - if($i != 0) - $text .= ','; - $text .= $this->rollDice($sides); - } - } else { - // if dice syntax is invalid, roll one d6: - $text = '/roll '.$this->getUserName().' 1d6 '.$this->rollDice(6); - } - } - $this->insertChatBotMessage( - $this->getChannel(), - $text - ); - } - - function insertParsedMessageNick($textParts) { - if(!$this->getConfig('allowNickChange') || - (!$this->getConfig('allowGuestUserName') && $this->getUserRole() == AJAX_CHAT_GUEST)) { - $this->insertChatBotMessage( - $this->getPrivateMessageID(), - '/error CommandNotAllowed '.$textParts[0] - ); - } else if(count($textParts) == 1) { - $this->insertChatBotMessage( - $this->getPrivateMessageID(), - '/error MissingUserName' - ); - } else { - $newUserName = implode(' ', array_slice($textParts, 1)); - if($newUserName == $this->getLoginUserName()) { - // Allow the user to regain the original login userName: - $prefix = ''; - $suffix = ''; - } else if($this->getUserRole() == AJAX_CHAT_GUEST) { - $prefix = $this->getConfig('guestUserPrefix'); - $suffix = $this->getConfig('guestUserSuffix'); - } else { - $prefix = $this->getConfig('changedNickPrefix'); - $suffix = $this->getConfig('changedNickSuffix'); - } - $maxLength = $this->getConfig('userNameMaxLength') - - $this->stringLength($prefix) - - $this->stringLength($suffix); - $newUserName = $this->trimString($newUserName, 'UTF-8', $maxLength, true); - if(!$newUserName) { - $this->insertChatBotMessage( - $this->getPrivateMessageID(), - '/error InvalidUserName' - ); - } else { - $newUserName = $prefix.$newUserName.$suffix; - if($this->isUserNameInUse($newUserName)) { - $this->insertChatBotMessage( - $this->getPrivateMessageID(), - '/error UserNameInUse' - ); - } else { - $oldUserName = $this->getUserName(); - $this->setUserName($newUserName); - $this->updateOnlineList(); - // Add info message to update the client-side stored userName: - $this->addInfoMessage($this->getUserName(), 'userName'); - $this->insertChatBotMessage( - $this->getChannel(), - '/nick '.$oldUserName.' '.$newUserName, - null, - 2 - ); - } - } - } - } - - function insertMessage($text) { - if(!$this->isAllowedToWriteMessage()) - return; - - if(!$this->floodControl()) - return; - - $text = $this->trimMessageText($text); - if($text == '') - return; - - if(!$this->onNewMessage($text)) - return; - - $text = $this->replaceCustomText($text); - - $this->insertParsedMessage($text); - } - - function deleteMessage($messageID) { - // Retrieve the channel of the given message: - $sql = 'SELECT - channel - FROM - '.$this->getDataBaseTable('messages').' - WHERE - id='.$this->db->makeSafe($messageID).';'; - - // Create a new SQL query: - $result = $this->db->sqlQuery($sql); - - // Stop if an error occurs: - if($result->error()) { - echo $result->getError(); - die(); - } - - $row = $result->fetch(); - - if($row['channel'] !== null) { - $channel = $row['channel']; - - if($this->getUserRole() == AJAX_CHAT_ADMIN) { - $condition = ''; - } else if($this->getUserRole() == AJAX_CHAT_MODERATOR) { - $condition = ' AND - NOT (userRole='.$this->db->makeSafe(AJAX_CHAT_ADMIN).') - AND - NOT (userRole='.$this->db->makeSafe(AJAX_CHAT_CHATBOT).')'; - } else if($this->getUserRole() == AJAX_CHAT_USER && $this->getConfig('allowUserMessageDelete')) { - $condition = 'AND - ( - userID='.$this->db->makeSafe($this->getUserID()).' - OR - ( - channel = '.$this->db->makeSafe($this->getPrivateMessageID()).' - OR - channel = '.$this->db->makeSafe($this->getPrivateChannelID()).' - ) - AND - NOT (userRole='.$this->db->makeSafe(AJAX_CHAT_ADMIN).') - AND - NOT (userRole='.$this->db->makeSafe(AJAX_CHAT_CHATBOT).') - )'; - } else { - return false; - } - - // Remove given message from the database: - $sql = 'DELETE FROM - '.$this->getDataBaseTable('messages').' - WHERE - id='.$this->db->makeSafe($messageID).' - '.$condition.';'; - - // Create a new SQL query: - $result = $this->db->sqlQuery($sql); - - // Stop if an error occurs: - if($result->error()) { - echo $result->getError(); - die(); - } - - if($result->affectedRows() == 1) { - // Insert a deletion command to remove the message from the clients chatlists: - $this->insertChatBotMessage($channel, '/delete '.$messageID); - return true; - } - } - return false; - } - - function floodControl() { - // Moderators and Admins need no flood control: - if($this->getUserRole() == AJAX_CHAT_MODERATOR || $this->getUserRole() == AJAX_CHAT_ADMIN) { - return true; - } - $time = time(); - // Check the time of the last inserted message: - if($this->getInsertedMessagesRateTimeStamp()+60 < $time) { - $this->setInsertedMessagesRateTimeStamp($time); - $this->setInsertedMessagesRate(1); - } else { - // Increase the inserted messages rate: - $rate = $this->getInsertedMessagesRate()+1; - $this->setInsertedMessagesRate($rate); - // Check if message rate is too high: - if($rate > $this->getConfig('maxMessageRate')) { - $this->insertChatBotMessage( - $this->getPrivateMessageID(), - '/error MaxMessageRate' - ); - // Return false so the message is not inserted: - return false; - } - } - return true; - } - - function isAllowedToWriteMessage() { - if($this->getUserRole() != AJAX_CHAT_GUEST) - return true; - if($this->getConfig('allowGuestWrite')) - return true; - return false; - } - - function insertChatBotMessage($channelID, $messageText, $ip=null, $mode=0) { - $this->insertCustomMessage( - $this->getConfig('chatBotID'), - $this->getConfig('chatBotName'), - AJAX_CHAT_CHATBOT, - $channelID, - $messageText, - $ip, - $mode - ); - } - - function insertCustomMessage($userID, $userName, $userRole, $channelID, $text, $ip=null, $mode=0) { - // The $mode parameter is used for socket updates: - // 0 = normal messages - // 1 = channel messages (e.g. login/logout, channel enter/leave, kick) - // 2 = messages with online user updates (nick) - - $ip = $ip ? $ip : $_SERVER['REMOTE_ADDR']; - - $sql = 'INSERT INTO '.$this->getDataBaseTable('messages').'( - userID, - userName, - userRole, - channel, - dateTime, - ip, - text - ) - VALUES ( - '.$this->db->makeSafe($userID).', - '.$this->db->makeSafe($userName).', - '.$this->db->makeSafe($userRole).', - '.$this->db->makeSafe($channelID).', - NOW(), - '.$this->db->makeSafe($this->ipToStorageFormat($ip)).', - '.$this->db->makeSafe($text).' - );'; - - // Create a new SQL query: - $result = $this->db->sqlQuery($sql); - - // Stop if an error occurs: - if($result->error()) { - echo $result->getError(); - die(); - } - - if($this->getConfig('socketServerEnabled')) { - $this->sendSocketMessage( - $this->getSocketBroadcastMessage( - $this->db->getLastInsertedID(), - time(), - $userID, - $userName, - $userRole, - $channelID, - $text, - $mode - ) - ); - } - } - - function getSocketBroadcastMessage( - $messageID, - $timeStamp, - $userID, - $userName, - $userRole, - $channelID, - $text, - $mode - ) { - // The $mode parameter: - // 0 = normal messages - // 1 = channel messages (e.g. login/logout, channel enter/leave, kick) - // 2 = messages with online user updates (nick) - - // Get the message XML content: - $xml = ''; - if($mode) { - // Add the list of online users if the user list has been updated ($mode > 0): - $xml .= $this->getChatViewOnlineUsersXML(array($channelID)); - } - if($mode != 1 || $this->getConfig('showChannelMessages')) { - $xml .= ''; - $xml .= $this->getChatViewMessageXML( - $messageID, - $timeStamp, - $userID, - $userName, - $userRole, - $channelID, - $text - ); - $xml .= ''; - } - $xml .= ''; - return $xml; - } - - function sendSocketMessage($message) { - // Open a TCP socket connection to the socket server: - if($socket = @socket_create(AF_INET, SOCK_STREAM, SOL_TCP)) { - if(@socket_connect($socket, $this->getConfig('socketServerIP'), $this->getConfig('socketServerPort'))) { - // Append a null-byte to the string as EOL (End Of Line) character - // which is required by Flash XML socket communication: - $message .= "\0"; - @socket_write( - $socket, - $message, - strlen($message) // Using strlen to count the bytes instead of the number of UTF-8 characters - ); - } - @socket_close($socket); - } - } - - function updateSocketAuthentication($userID, $socketRegistrationID=null, $channels=null) { - // If no $socketRegistrationID or no $channels are given the authentication is removed for the given user: - $authentication = ''; - if($channels) { - foreach($channels as $channelID) { - $authentication .= ''; - } - } - $authentication .= ''; - $this->sendSocketMessage($authentication); - } - - function setSocketRegistrationID($value) { - $this->setSessionVar('SocketRegistrationID', $value); - } - - function getSocketRegistrationID() { - return $this->getSessionVar('SocketRegistrationID'); - } - - function rollDice($sides) { - // seed with microseconds since last "whole" second: - mt_srand((double)microtime()*1000000); - - return mt_rand(1, $sides); - } - - function kickUser($userName, $banMinutes=null, $userID=null) { - if($userID === null) { - $userID = $this->getIDFromName($userName); - } - if($userID === null) { - return; - } - - $banMinutes = $banMinutes ? $banMinutes : $this->getConfig('defaultBanTime'); - - if($banMinutes) { - // Ban User for the given time in minutes: - $this->banUser($userName, $banMinutes, $userID); - } - - // Remove given User from online list: - $sql = 'DELETE FROM - '.$this->getDataBaseTable('online').' - WHERE - userID = '.$this->db->makeSafe($userID).';'; - - // Create a new SQL query: - $result = $this->db->sqlQuery($sql); - - // Stop if an error occurs: - if($result->error()) { - echo $result->getError(); - die(); - } - - // Update the socket server authentication for the kicked user: - if($this->getConfig('socketServerEnabled')) { - $this->updateSocketAuthentication($userID); - } - - $this->removeUserFromOnlineUsersData($userID); - } - - function getBannedUsersData($key=null, $value=null) { - if($this->_bannedUsersData === null) { - $this->_bannedUsersData = array(); - - $sql = 'SELECT - userID, - userName, - ip - FROM - '.$this->getDataBaseTable('bans').' - WHERE - NOW() < dateTime;'; - - // Create a new SQL query: - $result = $this->db->sqlQuery($sql); - - // Stop if an error occurs: - if($result->error()) { - echo $result->getError(); - die(); - } - - while($row = $result->fetch()) { - $row['ip'] = $this->ipFromStorageFormat($row['ip']); - array_push($this->_bannedUsersData, $row); - } - - $result->free(); - } - - if($key) { - $bannedUsersData = array(); - foreach($this->_bannedUsersData as $bannedUserData) { - if(!isset($bannedUserData[$key])) { - return $bannedUsersData; - } - if($value) { - if($bannedUserData[$key] == $value) { - array_push($bannedUsersData, $bannedUserData); - } else { - continue; - } - } else { - array_push($bannedUsersData, $bannedUserData[$key]); - } - } - return $bannedUsersData; - } - - return $this->_bannedUsersData; - } - - function getBannedUsers() { - return $this->getBannedUsersData('userName'); - } - - function banUser($userName, $banMinutes=null, $userID=null) { - if($userID === null) { - $userID = $this->getIDFromName($userName); - } - $ip = $this->getIPFromID($userID); - if(!$ip || $userID === null) { - return; - } - - // Remove expired bans: - $this->removeExpiredBans(); - - $banMinutes = (int)$banMinutes; - if(!$banMinutes) { - // If banMinutes is not a valid integer, use the defaultBanTime: - $banMinutes = $this->getConfig('defaultBanTime'); - } - - $sql = 'INSERT INTO '.$this->getDataBaseTable('bans').'( - userID, - userName, - dateTime, - ip - ) - VALUES ( - '.$this->db->makeSafe($userID).', - '.$this->db->makeSafe($userName).', - DATE_ADD(NOW(), interval '.$this->db->makeSafe($banMinutes).' MINUTE), - '.$this->db->makeSafe($this->ipToStorageFormat($ip)).' - );'; - - // Create a new SQL query: - $result = $this->db->sqlQuery($sql); - - // Stop if an error occurs: - if($result->error()) { - echo $result->getError(); - die(); - } - } - - function unbanUser($userName) { - $sql = 'DELETE FROM - '.$this->getDataBaseTable('bans').' - WHERE - userName = '.$this->db->makeSafe($userName).';'; - - // Create a new SQL query: - $result = $this->db->sqlQuery($sql); - - // Stop if an error occurs: - if($result->error()) { - echo $result->getError(); - die(); - } - } - - function removeExpiredBans() { - $sql = 'DELETE FROM - '.$this->getDataBaseTable('bans').' - WHERE - dateTime < NOW();'; - - // Create a new SQL query: - $result = $this->db->sqlQuery($sql); - - // Stop if an error occurs: - if($result->error()) { - echo $result->getError(); - die(); - } - } - - function setInactive($userID, $userName=null) { - $condition = 'userID='.$this->db->makeSafe($userID); - if($userName !== null) { - $condition .= ' OR userName='.$this->db->makeSafe($userName); - } - $sql = 'UPDATE - '.$this->getDataBaseTable('online').' - SET - dateTime = DATE_SUB(NOW(), interval '.(intval($this->getConfig('inactiveTimeout'))+1).' MINUTE) - WHERE - '.$condition.';'; - - // Create a new SQL query: - $result = $this->db->sqlQuery($sql); - - // Stop if an error occurs: - if($result->error()) { - echo $result->getError(); - die(); - } - - $this->resetOnlineUsersData(); - } - - function removeInactive() { - $sql = 'SELECT - userID, - userName, - channel - FROM - '.$this->getDataBaseTable('online').' - WHERE - NOW() > DATE_ADD(dateTime, interval '.$this->getConfig('inactiveTimeout').' MINUTE);'; - - // Create a new SQL query: - $result = $this->db->sqlQuery($sql); - - // Stop if an error occurs: - if($result->error()) { - echo $result->getError(); - die(); - } - - if($result->numRows() > 0) { - $condition = ''; - while($row = $result->fetch()) { - if(!empty($condition)) - $condition .= ' OR '; - // Add userID to condition for removal: - $condition .= 'userID='.$this->db->makeSafe($row['userID']); - - // Update the socket server authentication for the kicked user: - if($this->getConfig('socketServerEnabled')) { - $this->updateSocketAuthentication($row['userID']); - } - - $this->removeUserFromOnlineUsersData($row['userID']); - - // Insert logout timeout message: - $text = '/logout '.$row['userName'].' Timeout'; - $this->insertChatBotMessage( - $row['channel'], - $text, - null, - 1 - ); - } - - $result->free(); - - $sql = 'DELETE FROM - '.$this->getDataBaseTable('online').' - WHERE - '.$condition.';'; - - // Create a new SQL query: - $result = $this->db->sqlQuery($sql); - - // Stop if an error occurs: - if($result->error()) { - echo $result->getError(); - die(); - } - } - } - - function updateOnlineStatus() { - // Update online status every 50 seconds (this allows update requests to be in time): - if(!$this->getStatusUpdateTimeStamp() || ((time() - $this->getStatusUpdateTimeStamp()) > 50)) { - $this->updateOnlineList(); - $this->setStatusUpdateTimeStamp(time()); - } - } - - function checkAndRemoveInactive() { - // Remove inactive users every inactiveCheckInterval: - if(!$this->getInactiveCheckTimeStamp() || ((time() - $this->getInactiveCheckTimeStamp()) > $this->getConfig('inactiveCheckInterval')*60)) { - $this->removeInactive(); - $this->setInactiveCheckTimeStamp(time()); - } - } - - function sendXMLMessages() { - $httpHeader = new AJAXChatHTTPHeader('UTF-8', 'text/xml'); - - // Send HTTP header: - $httpHeader->send(); - - // Output XML messages: - echo $this->getXMLMessages(); - } - - function getXMLMessages() { - switch($this->getView()) { - case 'chat': - return $this->getChatViewXMLMessages(); - case 'teaser': - return $this->getTeaserViewXMLMessages(); - case 'logs': - return $this->getLogsViewXMLMessages(); - default: - return $this->getLogoutXMLMessage(); - } - } - - function getMessageCondition() { - $condition = 'id > '.$this->db->makeSafe($this->getRequestVar('lastID')).' - AND ( - channel = '.$this->db->makeSafe($this->getChannel()).' - OR - channel = '.$this->db->makeSafe($this->getPrivateMessageID()).' - ) - AND - '; - if($this->getConfig('requestMessagesPriorChannelEnter') || - ($this->getConfig('requestMessagesPriorChannelEnterList') && in_array($this->getChannel(), $this->getConfig('requestMessagesPriorChannelEnterList')))) { - $condition .= 'NOW() < DATE_ADD(dateTime, interval '.$this->getConfig('requestMessagesTimeDiff').' HOUR)'; - } else { - $condition .= 'dateTime >= FROM_UNIXTIME(' . $this->getChannelEnterTimeStamp() . ')'; - } - return $condition; - } - - function getMessageFilter() { - $filterChannelMessages = ''; - if(!$this->getConfig('showChannelMessages') || $this->getRequestVar('shoutbox')) { - $filterChannelMessages = ' AND NOT ( - text LIKE (\'/login%\') - OR - text LIKE (\'/logout%\') - OR - text LIKE (\'/channelEnter%\') - OR - text LIKE (\'/channelLeave%\') - OR - text LIKE (\'/kick%\') - )'; - } - return $filterChannelMessages; - } - - function getInfoMessagesXML() { - $xml = ''; - // Go through the info messages: - foreach($this->getInfoMessages() as $type=>$infoArray) { - foreach($infoArray as $info) { - $xml .= ''; - $xml .= 'encodeSpecialChars($info).']]>'; - $xml .= ''; - } - } - $xml .= ''; - return $xml; - } - - function getChatViewOnlineUsersXML($channelIDs) { - // Get the online users for the given channels: - $onlineUsersData = $this->getOnlineUsersData($channelIDs); - $xml = ''; - foreach($onlineUsersData as $onlineUserData) { - $xml .= 'encodeSpecialChars($onlineUserData['userName']).']]>'; - $xml .= ''; - } - $xml .= ''; - return $xml; - } - - function getLogoutXMLMessage() { - $xml = ''; - $xml .= ''; - $xml .= ''; - $xml .= ''; - $xml .= 'encodeSpecialChars($this->getConfig('logoutData')).']]>'; - $xml .= ''; - $xml .= ''; - $xml .= ''; - return $xml; - } - - function getChatViewMessageXML( - $messageID, - $timeStamp, - $userID, - $userName, - $userRole, - $channelID, - $text - ) { - $message = 'encodeSpecialChars($userName).']]>'; - $message .= 'encodeSpecialChars($text).']]>'; - $message .= ''; - return $message; - } - - function getChatViewMessagesXML() { - // Get the last messages in descending order (this optimises the LIMIT usage): - $sql = 'SELECT - id, - userID, - userName, - userRole, - channel AS channelID, - UNIX_TIMESTAMP(dateTime) AS timeStamp, - text - FROM - '.$this->getDataBaseTable('messages').' - WHERE - '.$this->getMessageCondition().' - '.$this->getMessageFilter().' - ORDER BY - id - DESC - LIMIT '.$this->getConfig('requestMessagesLimit').';'; - - // Create a new SQL query: - $result = $this->db->sqlQuery($sql); - - // Stop if an error occurs: - if($result->error()) { - echo $result->getError(); - die(); - } - - $messages = ''; - - // Add the messages in reverse order so it is ascending again: - while($row = $result->fetch()) { - $message = $this->getChatViewMessageXML( - $row['id'], - $row['timeStamp'], - $row['userID'], - $row['userName'], - $row['userRole'], - $row['channelID'], - $row['text'] - ); - $messages = $message.$messages; - } - $result->free(); - - $messages = ''.$messages.''; - return $messages; - } - - function getChatViewXMLMessages() { - $xml = ''; - $xml .= ''; - $xml .= $this->getInfoMessagesXML(); - $xml .= $this->getChatViewOnlineUsersXML(array($this->getChannel())); - $xml .= $this->getChatViewMessagesXML(); - $xml .= ''; - return $xml; - } - - function getTeaserMessageCondition() { - $channelID = $this->getValidRequestChannelID(); - $condition = 'channel = '.$this->db->makeSafe($channelID).' - AND - '; - if($this->getConfig('requestMessagesPriorChannelEnter') || - ($this->getConfig('requestMessagesPriorChannelEnterList') && in_array($channelID, $this->getConfig('requestMessagesPriorChannelEnterList')))) { - $condition .= 'NOW() < DATE_ADD(dateTime, interval '.$this->getConfig('requestMessagesTimeDiff').' HOUR)'; - } else { - // Teaser content may not be shown for this channel: - $condition .= '0 = 1'; - } - return $condition; - } - - function getTeaserViewMessagesXML() { - // Get the last messages in descending order (this optimises the LIMIT usage): - $sql = 'SELECT - id, - userID, - userName, - userRole, - channel AS channelID, - UNIX_TIMESTAMP(dateTime) AS timeStamp, - text - FROM - '.$this->getDataBaseTable('messages').' - WHERE - '.$this->getTeaserMessageCondition().' - '.$this->getMessageFilter().' - ORDER BY - id - DESC - LIMIT '.$this->getConfig('requestMessagesLimit').';'; - - // Create a new SQL query: - $result = $this->db->sqlQuery($sql); - - // Stop if an error occurs: - if($result->error()) { - echo $result->getError(); - die(); - } - - $messages = ''; - - // Add the messages in reverse order so it is ascending again: - while($row = $result->fetch()) { - $message = ''; - $message .= 'encodeSpecialChars($row['userName']).']]>'; - $message .= 'encodeSpecialChars($row['text']).']]>'; - $message .= ''; - $messages = $message.$messages; - } - $result->free(); - - $messages = ''.$messages.''; - return $messages; - } - - function getTeaserViewXMLMessages() { - $xml = ''; - $xml .= ''; - $xml .= $this->getInfoMessagesXML(); - $xml .= $this->getTeaserViewMessagesXML(); - $xml .= ''; - return $xml; - } - - function getLogsViewCondition() { - $condition = 'id > '.$this->db->makeSafe($this->getRequestVar('lastID')); - - // Check the channel condition: - switch($this->getRequestVar('channelID')) { - case '-3': - // Just display messages from all accessible channels - if($this->getUserRole() != AJAX_CHAT_ADMIN) { - $condition .= ' AND (channel = '.$this->db->makeSafe($this->getPrivateMessageID()); - $condition .= ' OR channel = '.$this->db->makeSafe($this->getPrivateChannelID()); - foreach($this->getChannels() as $channel) { - if($this->getConfig('logsUserAccessChannelList') && !in_array($channel, $this->getConfig('logsUserAccessChannelList'))) { - continue; - } - $condition .= ' OR channel = '.$this->db->makeSafe($channel); - } - $condition .= ')'; - } - break; - case '-2': - if($this->getUserRole() != AJAX_CHAT_ADMIN) { - $condition .= ' AND channel = '.($this->getPrivateMessageID()); - } else { - $condition .= ' AND channel > '.($this->getConfig('privateMessageDiff')-1); - } - break; - case '-1': - if($this->getUserRole() != AJAX_CHAT_ADMIN) { - $condition .= ' AND channel = '.($this->getPrivateChannelID()); - } else { - $condition .= ' AND (channel > '.($this->getConfig('privateChannelDiff')-1).' AND channel < '.($this->getConfig('privateMessageDiff')).')'; - } - break; - default: - if(($this->getUserRole() == AJAX_CHAT_ADMIN || !$this->getConfig('logsUserAccessChannelList') || in_array($this->getRequestVar('channelID'), $this->getConfig('logsUserAccessChannelList'))) - && $this->validateChannel($this->getRequestVar('channelID'))) { - $condition .= ' AND channel = '.$this->db->makeSafe($this->getRequestVar('channelID')); - } else { - // No valid channel: - $condition .= ' AND 0 = 1'; - } - } - - // Check the period condition: - $hour = ($this->getRequestVar('hour') === null || $this->getRequestVar('hour') > 23 || $this->getRequestVar('hour') < 0) ? null : $this->getRequestVar('hour'); - $day = ($this->getRequestVar('day') === null || $this->getRequestVar('day') > 31 || $this->getRequestVar('day') < 1) ? null : $this->getRequestVar('day'); - $month = ($this->getRequestVar('month') === null || $this->getRequestVar('month') > 12 || $this->getRequestVar('month') < 1) ? null : $this->getRequestVar('month'); - $year = ($this->getRequestVar('year') === null || $this->getRequestVar('year') > date('Y') || $this->getRequestVar('year') < $this->getConfig('logsFirstYear')) ? null : $this->getRequestVar('year'); - - // If a time (hour) is given but no date (year, month, day), use the current date: - if($hour !== null) { - if($day === null) - $day = date('j'); - if($month === null) - $month = date('n'); - if($year === null) - $year = date('Y'); - } - - if($year === null) { - // No year given, so no period condition - } else if($month === null) { - // Define the given year as period: - $periodStart = mktime(0, 0, 0, 1, 1, $year); - // The last day in a month can be expressed by using 0 for the day of the next month: - $periodEnd = mktime(23, 59, 59, 13, 0, $year); - } else if($day === null) { - // Define the given month as period: - $periodStart = mktime(0, 0, 0, $month, 1, $year); - // The last day in a month can be expressed by using 0 for the day of the next month: - $periodEnd = mktime(23, 59, 59, $month+1, 0, $year); - } else if($hour === null){ - // Define the given day as period: - $periodStart = mktime(0, 0, 0, $month, $day, $year); - $periodEnd = mktime(23, 59, 59, $month, $day, $year); - } else { - // Define the given hour as period: - $periodStart = mktime($hour, 0, 0, $month, $day, $year); - $periodEnd = mktime($hour, 59, 59, $month, $day, $year); - } - - if(isset($periodStart)) - $condition .= ' AND dateTime > \''.date('Y-m-d H:i:s', $periodStart).'\' AND dateTime <= \''.date('Y-m-d H:i:s', $periodEnd).'\''; - - // Check the search condition: - if($this->getRequestVar('search')) { - if(($this->getUserRole() == AJAX_CHAT_ADMIN || $this->getUserRole() == AJAX_CHAT_MODERATOR) && strpos($this->getRequestVar('search'), 'ip=') === 0) { - // Search for messages with the given IP: - $ip = substr($this->getRequestVar('search'), 3); - $condition .= ' AND (ip = '.$this->db->makeSafe($this->ipToStorageFormat($ip)).')'; - } else if(strpos($this->getRequestVar('search'), 'userID=') === 0) { - // Search for messages with the given userID: - $userID = substr($this->getRequestVar('search'), 7); - $condition .= ' AND (userID = '.$this->db->makeSafe($userID).')'; - } else { - // Use the search value as regular expression on message text and username: - $condition .= ' AND (userName REGEXP '.$this->db->makeSafe($this->getRequestVar('search')).' OR text REGEXP '.$this->db->makeSafe($this->getRequestVar('search')).')'; - } - } - - // If no period or search condition is given, just monitor the last messages on the given channel: - if(!isset($periodStart) && !$this->getRequestVar('search')) { - $condition .= ' AND NOW() < DATE_ADD(dateTime, interval '.$this->getConfig('logsRequestMessagesTimeDiff').' HOUR)'; - } - - return $condition; - } - - function getLogsViewMessagesXML() { - $sql = 'SELECT - id, - userID, - userName, - userRole, - channel AS channelID, - UNIX_TIMESTAMP(dateTime) AS timeStamp, - ip, - text - FROM - '.$this->getDataBaseTable('messages').' - WHERE - '.$this->getLogsViewCondition().' - ORDER BY - id - LIMIT '.$this->getConfig('logsRequestMessagesLimit').';'; - - // Create a new SQL query: - $result = $this->db->sqlQuery($sql); - - // Stop if an error occurs: - if($result->error()) { - echo $result->getError(); - die(); - } - - $xml = ''; - while($row = $result->fetch()) { - $xml .= 'getUserRole() == AJAX_CHAT_ADMIN || $this->getUserRole() == AJAX_CHAT_MODERATOR) { - $xml .= ' ip="'.$this->ipFromStorageFormat($row['ip']).'"'; - } - $xml .= '>'; - $xml .= 'encodeSpecialChars($row['userName']).']]>'; - $xml .= 'encodeSpecialChars($row['text']).']]>'; - $xml .= ''; - } - $result->free(); - - $xml .= ''; - - return $xml; - } - - function getLogsViewXMLMessages() { - $xml = ''; - $xml .= ''; - $xml .= $this->getInfoMessagesXML(); - $xml .= $this->getLogsViewMessagesXML(); - $xml .= ''; - return $xml; - } - - function purgeLogs() { - $sql = 'DELETE FROM - '.$this->getDataBaseTable('messages').' - WHERE - dateTime < DATE_SUB(NOW(), interval '.$this->getConfig('logsPurgeTimeDiff').' DAY);'; - - // Create a new SQL query: - $result = $this->db->sqlQuery($sql); - - // Stop if an error occurs: - if($result->error()) { - echo $result->getError(); - die(); - } - } - - function getInfoMessages($type=null) { - if(!isset($this->_infoMessages)) { - $this->_infoMessages = array(); - } - if($type) { - if(!isset($this->_infoMessages[$type])) { - $this->_infoMessages[$type] = array(); - } - return $this->_infoMessages[$type]; - } else { - return $this->_infoMessages; - } - } - - function addInfoMessage($info, $type='error') { - if(!isset($this->_infoMessages)) { - $this->_infoMessages = array(); - } - if(!isset($this->_infoMessages[$type])) { - $this->_infoMessages[$type] = array(); - } - if(!in_array($info, $this->_infoMessages[$type])) { - array_push($this->_infoMessages[$type], $info); - } - } - - function getRequestVars() { - return $this->_requestVars; - } - - function getRequestVar($key) { - if($this->_requestVars && isset($this->_requestVars[$key])) { - return $this->_requestVars[$key]; - } - return null; - } - - function setRequestVar($key, $value) { - if(!$this->_requestVars) { - $this->_requestVars = array(); - } - $this->_requestVars[$key] = $value; - } - - function getOnlineUsersData($channelIDs=null, $key=null, $value=null) { - if($this->_onlineUsersData === null) { - $this->_onlineUsersData = array(); - - $sql = 'SELECT - userID, - userName, - userRole, - channel, - UNIX_TIMESTAMP(dateTime) AS timeStamp, - ip - FROM - '.$this->getDataBaseTable('online').' - ORDER BY - userName;'; - - // Create a new SQL query: - $result = $this->db->sqlQuery($sql); - - // Stop if an error occurs: - if($result->error()) { - echo $result->getError(); - die(); - } - - while($row = $result->fetch()) { - $row['ip'] = $this->ipFromStorageFormat($row['ip']); - array_push($this->_onlineUsersData, $row); - } - - $result->free(); - } - - if($channelIDs || $key) { - $onlineUsersData = array(); - foreach($this->_onlineUsersData as $userData) { - if($channelIDs && !in_array($userData['channel'], $channelIDs)) { - continue; - } - if($key) { - if(!isset($userData[$key])) { - return $onlineUsersData; - } - if($value !== null) { - if($userData[$key] == $value) { - array_push($onlineUsersData, $userData); - } else { - continue; - } - } else { - array_push($onlineUsersData, $userData[$key]); - } - } else { - array_push($onlineUsersData, $userData); - } - } - return $onlineUsersData; - } - - return $this->_onlineUsersData; - } - - function removeUserFromOnlineUsersData($userID=null) { - if(!$this->_onlineUsersData) { - return; - } - $userID = ($userID === null) ? $this->getUserID() : $userID; - for($i=0; $i_onlineUsersData); $i++) { - if($this->_onlineUsersData[$i]['userID'] == $userID) { - array_splice($this->_onlineUsersData, $i, 1); - break; - } - } - } - - function resetOnlineUsersData() { - $this->_onlineUsersData = null; - } - - function getOnlineUsers($channelIDs=null) { - return $this->getOnlineUsersData($channelIDs, 'userName'); - } - - function getOnlineUserIDs($channelIDs=null) { - return $this->getOnlineUsersData($channelIDs, 'userID'); - } - - function startSession() { - if(!session_id()) { - // Set the session name: - session_name($this->getConfig('sessionName')); - - // Set session cookie parameters: - session_set_cookie_params( - 0, // The session is destroyed on logout anyway, so no use to set this - $this->getConfig('sessionCookiePath'), - $this->getConfig('sessionCookieDomain'), - $this->getConfig('sessionCookieSecure') - ); - - // Start the session: - session_start(); - - // We started a new session: - $this->_sessionNew = true; - } - } - - function destroySession() { - if($this->_sessionNew) { - // Delete all session variables: - $_SESSION = array(); - - // Delete the session cookie: - if (isset($_COOKIE[session_name()])) { - setcookie( - session_name(), - '', - time()-42000, - $this->getConfig('sessionCookiePath'), - $this->getConfig('sessionCookieDomain'), - $this->getConfig('sessionCookieSecure') - ); - } - - // Destroy the session: - session_destroy(); - } else { - // Unset all session variables starting with the sessionKeyPrefix: - foreach($_SESSION as $key=>$value) { - if(strpos($key, $this->getConfig('sessionKeyPrefix')) === 0) { - unset($_SESSION[$key]); - } - } - } - } - - function regenerateSessionID() { - if($this->_sessionNew) { - // Regenerate session id: - @session_regenerate_id(true); - } - } - - function getSessionVar($key, $prefix=null) { - if($prefix === null) - $prefix = $this->getConfig('sessionKeyPrefix'); - - // Return the session value if existing: - if(isset($_SESSION[$prefix.$key])) - return $_SESSION[$prefix.$key]; - else - return null; - } - - function setSessionVar($key, $value, $prefix=null) { - if($prefix === null) - $prefix = $this->getConfig('sessionKeyPrefix'); - - // Set the session value: - $_SESSION[$prefix.$key] = $value; - } - - function getSessionIP() { - return $this->getSessionVar('IP'); - } - - function setSessionIP($ip) { - $this->setSessionVar('IP', $ip); - } - - function getQueryUserName() { - return $this->getSessionVar('QueryUserName'); - } - - function setQueryUserName($userName) { - $this->setSessionVar('QueryUserName', $userName); - } - - function getInvitations() { - if($this->_invitations === null) { - $this->_invitations = array(); - - $sql = 'SELECT - channel - FROM - '.$this->getDataBaseTable('invitations').' - WHERE - userID='.$this->db->makeSafe($this->getUserID()).' - AND - DATE_SUB(NOW(), interval 1 DAY) < dateTime;'; - - // Create a new SQL query: - $result = $this->db->sqlQuery($sql); - - // Stop if an error occurs: - if($result->error()) { - echo $result->getError(); - die(); - } - - while($row = $result->fetch()) { - array_push($this->_invitations, $row['channel']); - } - - $result->free(); - } - return $this->_invitations; - } - - function removeExpiredInvitations() { - $sql = 'DELETE FROM - '.$this->getDataBaseTable('invitations').' - WHERE - DATE_SUB(NOW(), interval 1 DAY) > dateTime;'; - - // Create a new SQL query: - $result = $this->db->sqlQuery($sql); - - // Stop if an error occurs: - if($result->error()) { - echo $result->getError(); - die(); - } - } - - function addInvitation($userID, $channelID=null) { - $this->removeExpiredInvitations(); - - $channelID = ($channelID === null) ? $this->getChannel() : $channelID; - - $sql = 'INSERT INTO '.$this->getDataBaseTable('invitations').'( - userID, - channel, - dateTime - ) - VALUES ( - '.$this->db->makeSafe($userID).', - '.$this->db->makeSafe($channelID).', - NOW() - );'; - - // Create a new SQL query: - $result = $this->db->sqlQuery($sql); - - // Stop if an error occurs: - if($result->error()) { - echo $result->getError(); - die(); - } - } - - function removeInvitation($userID, $channelID=null) { - $channelID = ($channelID === null) ? $this->getChannel() : $channelID; - - $sql = 'DELETE FROM - '.$this->getDataBaseTable('invitations').' - WHERE - userID='.$this->db->makeSafe($userID).' - AND - channel='.$this->db->makeSafe($channelID).';'; - - // Create a new SQL query: - $result = $this->db->sqlQuery($sql); - - // Stop if an error occurs: - if($result->error()) { - echo $result->getError(); - die(); - } - } - - function getUserID() { - return $this->getSessionVar('UserID'); - } - - function setUserID($id) { - $this->setSessionVar('UserID', $id); - } - - function getUserName() { - return $this->getSessionVar('UserName'); - } - - function setUserName($name) { - $this->setSessionVar('UserName', $name); - } - - function getLoginUserName() { - return $this->getSessionVar('LoginUserName'); - } - - function setLoginUserName($name) { - $this->setSessionVar('LoginUserName', $name); - } - - function getUserRole() { - $userRole = $this->getSessionVar('UserRole'); - if($userRole === null) - return AJAX_CHAT_GUEST; - return $userRole; - } - - function setUserRole($role) { - $this->setSessionVar('UserRole', $role); - } - - function getChannel() { - return $this->getSessionVar('Channel'); - } - - function setChannel($channel) { - $this->setSessionVar('Channel', $channel); - - // Save the channel enter timestamp: - $this->setChannelEnterTimeStamp(time()); - - // Update the channel authentication for the socket server: - if($this->getConfig('socketServerEnabled')) { - $this->updateSocketAuthentication( - $this->getUserID(), - $this->getSocketRegistrationID(), - array($channel,$this->getPrivateMessageID()) - ); - } - - // Reset the logs view socket authentication session var: - if($this->getSessionVar('logsViewSocketAuthenticated')) { - $this->setSessionVar('logsViewSocketAuthenticated', false); - } - } - - function isLoggedIn() { - return (bool)$this->getSessionVar('LoggedIn'); - } - - function setLoggedIn($bool) { - $this->setSessionVar('LoggedIn', $bool); - } - - function getLoginTimeStamp() { - return $this->getSessionVar('LoginTimeStamp'); - } - - function setLoginTimeStamp($time) { - $this->setSessionVar('LoginTimeStamp', $time); - } - - function getChannelEnterTimeStamp() { - return $this->getSessionVar('ChannelEnterTimeStamp'); - } - - function setChannelEnterTimeStamp($time) { - $this->setSessionVar('ChannelEnterTimeStamp', $time); - } - - function getStatusUpdateTimeStamp() { - return $this->getSessionVar('StatusUpdateTimeStamp'); - } - - function setStatusUpdateTimeStamp($time) { - $this->setSessionVar('StatusUpdateTimeStamp', $time); - } - - function getInactiveCheckTimeStamp() { - return $this->getSessionVar('InactiveCheckTimeStamp'); - } - - function setInactiveCheckTimeStamp($time) { - $this->setSessionVar('InactiveCheckTimeStamp', $time); - } - - function getInsertedMessagesRate() { - return $this->getSessionVar('InsertedMessagesRate'); - } - - function setInsertedMessagesRate($rate) { - $this->setSessionVar('InsertedMessagesRate', $rate); - } - - function getInsertedMessagesRateTimeStamp() { - return $this->getSessionVar('InsertedMessagesRateTimeStamp'); - } - - function setInsertedMessagesRateTimeStamp($time) { - $this->setSessionVar('InsertedMessagesRateTimeStamp', $time); - } - - function getLangCode() { - // Get the langCode from request or cookie: - $langCodeCookie = isset($_COOKIE[$this->getConfig('sessionName').'_lang']) ? $_COOKIE[$this->getConfig('sessionName').'_lang'] : null; - $langCode = $this->getRequestVar('lang') ? $this->getRequestVar('lang') : $langCodeCookie; - // Check if the langCode is valid: - if(!in_array($langCode, $this->getConfig('langAvailable'))) { - // Determine the user language: - $language = new AJAXChatLanguage($this->getConfig('langAvailable'), $this->getConfig('langDefault')); - $langCode = $language->getLangCode(); - } - return $langCode; - } - - function setLangCodeCookie() { - setcookie( - $this->getConfig('sessionName').'_lang', - $this->getLangCode(), - time()+60*60*24*$this->getConfig('sessionCookieLifeTime'), - $this->getConfig('sessionCookiePath'), - $this->getConfig('sessionCookieDomain'), - $this->getConfig('sessionCookieSecure') - ); - } - - function removeUnsafeCharacters($str) { - // Remove NO-WS-CTL, non-whitespace control characters (RFC 2822), decimal 1–8, 11–12, 14–31, and 127: - return AJAXChatEncoding::removeUnsafeCharacters($str); - } - - function subString($str, $start=0, $length=null, $encoding='UTF-8') { - return AJAXChatString::subString($str, $start, $length, $encoding); - } - - function stringLength($str, $encoding='UTF-8') { - return AJAXChatString::stringLength($str, $encoding); - } - - function trimMessageText($text) { - return $this->trimString($text, 'UTF-8', $this->getConfig('messageTextMaxLength')); - } - - function trimUserName($userName) { - return $this->trimString($userName, null, $this->getConfig('userNameMaxLength'), true, true); - } - - function trimChannelName($channelName) { - return $this->trimString($channelName, null, null, true, true); - } - - function trimString($str, $sourceEncoding=null, $maxLength=null, $replaceWhitespace=false, $decodeEntities=false, $htmlEntitiesMap=null) { - // Make sure the string contains valid unicode: - $str = $this->convertToUnicode($str, $sourceEncoding); - - // Make sure the string contains no unsafe characters: - $str = $this->removeUnsafeCharacters($str); - - // Strip whitespace from the beginning and end of the string: - $str = trim($str); - - if($replaceWhitespace) { - // Replace any whitespace in the userName with the underscore "_": - $str = preg_replace('/\s/u', '_', $str); - } - - if($decodeEntities) { - // Decode entities: - $str = $this->decodeEntities($str, 'UTF-8', $htmlEntitiesMap); - } - - if($maxLength) { - // Cut the string to the allowed length: - $str = $this->subString($str, 0, $maxLength); - } - - return $str; - } - - function convertToUnicode($str, $sourceEncoding=null) { - if($sourceEncoding === null) { - $sourceEncoding = $this->getConfig('sourceEncoding'); - } - return $this->convertEncoding($str, $sourceEncoding, 'UTF-8'); - } - - function convertFromUnicode($str, $contentEncoding=null) { - if($contentEncoding === null) { - $contentEncoding = $this->getConfig('contentEncoding'); - } - return $this->convertEncoding($str, 'UTF-8', $contentEncoding); - } - - function convertEncoding($str, $charsetFrom, $charsetTo) { - return AJAXChatEncoding::convertEncoding($str, $charsetFrom, $charsetTo); - } - - function encodeEntities($str, $encoding='UTF-8', $convmap=null) { - return AJAXChatEncoding::encodeEntities($str, $encoding, $convmap); - } - - function decodeEntities($str, $encoding='UTF-8', $htmlEntitiesMap=null) { - return AJAXChatEncoding::decodeEntities($str, $encoding, $htmlEntitiesMap); - } - - function htmlEncode($str) { - return AJAXChatEncoding::htmlEncode($str, $this->getConfig('contentEncoding')); - } - - function encodeSpecialChars($str) { - return AJAXChatEncoding::encodeSpecialChars($str); - } - - function decodeSpecialChars($str) { - return AJAXChatEncoding::decodeSpecialChars($str); - } - - function ipToStorageFormat($ip) { - if(function_exists('inet_pton')) { - // ipv4 & ipv6: - return @inet_pton($ip); - } - // Only ipv4: - return @pack('N',@ip2long($ip)); - } - - function ipFromStorageFormat($ip) { - if(function_exists('inet_ntop')) { - // ipv4 & ipv6: - return @inet_ntop($ip); - } - // Only ipv4: - $unpacked = @unpack('Nlong',$ip); - if(isset($unpacked['long'])) { - return @long2ip($unpacked['long']); - } - return null; - } - - function getConfig($key, $subkey=null) { - if($subkey) - return $this->_config[$key][$subkey]; - else - return $this->_config[$key]; - } - - function setConfig($key, $subkey, $value) { - if($subkey) { - if(!isset($this->_config[$key])) { - $this->_config[$key] = array(); - } - $this->_config[$key][$subkey] = $value; - } else { - $this->_config[$key] = $value; - } - } - - function getLang($key=null) { - if(!$this->_lang) { - // Include the language file: - $lang = null; - require(AJAX_CHAT_PATH.'lib/lang/'.$this->getLangCode().'.php'); - $this->_lang = &$lang; - } - if($key === null) - return $this->_lang; - if(isset($this->_lang[$key])) - return $this->_lang[$key]; - return null; - } - - function getChatURL() { - if(defined('AJAX_CHAT_URL')) { - return AJAX_CHAT_URL; - } - - return - (isset($_SERVER['HTTPS']) ? 'https://' : 'http://'). - (isset($_SERVER['REMOTE_USER']) ? $_SERVER['REMOTE_USER'].'@' : ''). - (isset($_SERVER['HTTP_HOST']) ? $_SERVER['HTTP_HOST'] : ($_SERVER['SERVER_NAME']. - (isset($_SERVER['HTTPS']) && $_SERVER['SERVER_PORT'] == 443 || $_SERVER['SERVER_PORT'] == 80 ? '' : ':'.$_SERVER['SERVER_PORT']))). - substr($_SERVER['SCRIPT_NAME'],0, strrpos($_SERVER['SCRIPT_NAME'], '/')+1); - } - - function getIDFromName($userName) { - $userDataArray = $this->getOnlineUsersData(null,'userName',$userName); - if($userDataArray && isset($userDataArray[0])) { - return $userDataArray[0]['userID']; - } - return null; - } - - function getNameFromID($userID) { - $userDataArray = $this->getOnlineUsersData(null,'userID',$userID); - if($userDataArray && isset($userDataArray[0])) { - return $userDataArray[0]['userName']; - } - return null; - } - - function getChannelFromID($userID) { - $userDataArray = $this->getOnlineUsersData(null,'userID',$userID); - if($userDataArray && isset($userDataArray[0])) { - return $userDataArray[0]['channel']; - } - return null; - } - - function getIPFromID($userID) { - $userDataArray = $this->getOnlineUsersData(null,'userID',$userID); - if($userDataArray && isset($userDataArray[0])) { - return $userDataArray[0]['ip']; - } - return null; - } - - function getRoleFromID($userID) { - $userDataArray = $this->getOnlineUsersData(null,'userID',$userID); - if($userDataArray && isset($userDataArray[0])) { - return $userDataArray[0]['userRole']; - } - return null; - } - - function getChannelNames() { - return array_flip($this->getChannels()); - } - - function getChannelIDFromChannelName($channelName) { - if(!$channelName) - return null; - $channels = $this->getAllChannels(); - if(array_key_exists($channelName,$channels)) { - return $channels[$channelName]; - } - $channelID = null; - // Check if the requested channel is the own private channel: - if($channelName == $this->getPrivateChannelName()) { - return $this->getPrivateChannelID(); - } - // Try to retrieve a private room ID: - $strlenChannelName = $this->stringLength($channelName); - $strlenPrefix = $this->stringLength($this->getConfig('privateChannelPrefix')); - $strlenSuffix = $this->stringLength($this->getConfig('privateChannelSuffix')); - if($this->subString($channelName,0,$strlenPrefix) == $this->getConfig('privateChannelPrefix') - && $this->subString($channelName,$strlenChannelName-$strlenSuffix) == $this->getConfig('privateChannelSuffix')) { - $userName = $this->subString( - $channelName, - $strlenPrefix, - $strlenChannelName-($strlenPrefix+$strlenSuffix) - ); - $userID = $this->getIDFromName($userName); - if($userID !== null) { - $channelID = $this->getPrivateChannelID($userID); - } - } - return $channelID; - } - - function getChannelNameFromChannelID($channelID) { - foreach($this->getAllChannels() as $key=>$value) { - if($value == $channelID) { - return $key; - } - } - // Try to retrieve a private room name: - if($channelID == $this->getPrivateChannelID()) { - return $this->getPrivateChannelName(); - } - $userName = $this->getNameFromID($channelID-$this->getConfig('privateChannelDiff')); - if($userName === null) { - return null; - } - return $this->getPrivateChannelName($userName); - } - - function getChannelName() { - return $this->getChannelNameFromChannelID($this->getChannel()); - } - - function getPrivateChannelName($userName=null) { - if($userName === null) { - $userName = $this->getUserName(); - } - return $this->getConfig('privateChannelPrefix').$userName.$this->getConfig('privateChannelSuffix'); - } - - function getPrivateChannelID($userID=null) { - if($userID === null) { - $userID = $this->getUserID(); - } - return $userID . '.' . $this->getConfig('privateChannelDiff'); - } - - function getPrivateMessageID($userID=null) { - if($userID === null) { - $userID = $this->getUserID(); - } - return $userID . '.' . $this->getConfig('privateMessageDiff'); - } - - function isAllowedToSendPrivateMessage() { - if($this->getConfig('allowPrivateMessages') || $this->getUserRole() == AJAX_CHAT_ADMIN) { - return true; - } - return false; - } - - function isAllowedToCreatePrivateChannel() { - if($this->getConfig('allowPrivateChannels')) { - switch($this->getUserRole()) { - case AJAX_CHAT_USER: - return true; - case AJAX_CHAT_MODERATOR: - return true; - case AJAX_CHAT_ADMIN: - return true; - default: - return false; - } - } - return false; - } - - function isAllowedToListHiddenUsers() { - // Hidden users are users within private or restricted channels: - switch($this->getUserRole()) { - case AJAX_CHAT_MODERATOR: - return true; - case AJAX_CHAT_ADMIN: - return true; - default: - return false; - } - } - - function isUserOnline($userID=null) { - $userID = ($userID === null) ? $this->getUserID() : $userID; - $userDataArray = $this->getOnlineUsersData(null,'userID',$userID); - if($userDataArray && count($userDataArray) > 0) { - return true; - } - return false; - } - - function isUserNameInUse($userName=null) { - $userName = ($userName === null) ? $this->getUserName() : $userName; - $userDataArray = $this->getOnlineUsersData(null,'userName',$userName); - if($userDataArray && count($userDataArray) > 0) { - return true; - } - return false; - } - - function isUserBanned($userName, $userID=null, $ip=null) { - if($userID !== null) { - $bannedUserDataArray = $this->getBannedUsersData('userID',$userID); - if($bannedUserDataArray && isset($bannedUserDataArray[0])) { - return true; - } - } - if($ip !== null) { - $bannedUserDataArray = $this->getBannedUsersData('ip',$ip); - if($bannedUserDataArray && isset($bannedUserDataArray[0])) { - return true; - } - } - $bannedUserDataArray = $this->getBannedUsersData('userName',$userName); - if($bannedUserDataArray && isset($bannedUserDataArray[0])) { - return true; - } - return false; - } - - function isMaxUsersLoggedIn() { - if(count($this->getOnlineUsersData()) >= $this->getConfig('maxUsersLoggedIn')) { - return true; - } - return false; - } - - function validateChannel($channelID) { - if($channelID === null) { - return false; - } - // Return true for normal channels the user has acces to: - if(in_array($channelID, $this->getChannels())) { - return true; - } - // Return true if the user is allowed to join his own private channel: - if($channelID == $this->getPrivateChannelID() && $this->isAllowedToCreatePrivateChannel()) { - return true; - } - // Return true if the user has been invited to a restricted or private channel: - if(in_array($channelID, $this->getInvitations())) { - return true; - } - // No valid channel, return false: - return false; - } - - function createGuestUserName() { - $maxLength = $this->getConfig('userNameMaxLength') - - $this->stringLength($this->getConfig('guestUserPrefix')) - - $this->stringLength($this->getConfig('guestUserSuffix')); - - // seed with microseconds since last "whole" second: - mt_srand((double)microtime()*1000000); - - // Create a random userName using numbers between 100000 and 999999: - $userName = substr(mt_rand(100000, 999999), 0, $maxLength); - - return $this->getConfig('guestUserPrefix').$userName.$this->getConfig('guestUserSuffix'); - } - - // Guest userIDs must not interfere with existing userIDs and must be lower than privateChannelDiff: - function createGuestUserID() { - // seed with microseconds since last "whole" second: - mt_srand((double)microtime()*1000000); - - return mt_rand($this->getConfig('minGuestUserID'), $this->getConfig('privateChannelDiff')-1); - } - - function getGuestUser() { - if(!$this->getConfig('allowGuestLogins')) - return null; - - if($this->getConfig('allowGuestUserName')) { - $maxLength = $this->getConfig('userNameMaxLength') - - $this->stringLength($this->getConfig('guestUserPrefix')) - - $this->stringLength($this->getConfig('guestUserSuffix')); - - // Trim guest userName: - $userName = $this->trimString($this->getRequestVar('userName'), null, $maxLength, true, true); - - // If given userName is invalid, create one: - if(!$userName) { - $userName = $this->createGuestUserName(); - } else { - // Add the guest users prefix and suffix to the given userName: - $userName = $this->getConfig('guestUserPrefix').$userName.$this->getConfig('guestUserSuffix'); - } - } else { - $userName = $this->createGuestUserName(); - } - - $userData = array(); - $userData['userID'] = $this->createGuestUserID(); - $userData['userName'] = $userName; - $userData['userRole'] = AJAX_CHAT_GUEST; - return $userData; - } - - function getCustomVar($key) { - if(!isset($this->_customVars)) - $this->_customVars = array(); - if(!isset($this->_customVars[$key])) - return null; - return $this->_customVars[$key]; - } - - function setCustomVar($key, $value) { - if(!isset($this->_customVars)) - $this->_customVars = array(); - $this->_customVars[$key] = $value; - } - - // Override to replace custom template tags: - // Return the replacement for the given tag (and given tagContent) - function replaceCustomTemplateTags($tag, $tagContent) { - return null; - } - - // Override to initialize custom configuration settings: - function initCustomConfig() { - } - - // Override to add custom request variables: - // Add values to the request variables array: $this->_requestVars['customVariable'] = null; - function initCustomRequestVars() { - } - - // Override to add custom session code right after the session has been started: - function initCustomSession() { - } - - // Override, to parse custom info requests: - // $infoRequest contains the current info request - // Add info responses using the method addInfoMessage($info, $type) - function parseCustomInfoRequest($infoRequest) { - } - - // Override to replace custom text: - // Return replaced text - // $text contains the whole message - function replaceCustomText(&$text) { - return $text; - } - - // Override to add custom commands: - // Return true if a custom command has been successfully parsed, else false - // $text contains the whole message, $textParts the message split up as words array - function parseCustomCommands($text, $textParts) { - return false; - } - - // Override to perform custom actions on new messages: - // Return true if message may be inserted, else false - // $text contains the whole message - function onNewMessage($text) { - return true; - } - - // Override to perform custom actions on new messages: - // Method to set the style cookie depending on user data - function setStyle() { - } - - // Override: - // Returns true if the userID of the logged in user is identical to the userID of the authentication system - // or the user is authenticated as guest in the chat and the authentication system - function revalidateUserID() { - return true; - } - - // Override: - // Returns an associative array containing userName, userID and userRole - // Returns null if login is invalid - function getValidLoginUserData() { - // Check if we have a valid registered user: - if(false) { - // Here is the place to check user authentication - } else { - // Guest users: - return $this->getGuestUser(); - } - } - - // Override: - // Store the channels the current user has access to - // Make sure channel names don't contain any whitespace - function &getChannels() { - if($this->_channels === null) { - $this->_channels = $this->getAllChannels(); - } - return $this->_channels; - } - - // Override: - // Store all existing channels - // Make sure channel names don't contain any whitespace - function &getAllChannels() { - if($this->_allChannels === null) { - $this->_allChannels = array(); - - // Default channel, public to everyone: - $this->_allChannels[$this->trimChannelName($this->getConfig('defaultChannelName'))] = $this->getConfig('defaultChannelID'); - } - return $this->_allChannels; - } - -} -?> \ No newline at end of file diff --git a/library/ajaxchat/chat/lib/class/AJAXChatDataBase.php b/library/ajaxchat/chat/lib/class/AJAXChatDataBase.php deleted file mode 100644 index 2143c5aa0..000000000 --- a/library/ajaxchat/chat/lib/class/AJAXChatDataBase.php +++ /dev/null @@ -1,81 +0,0 @@ -_db = new AJAXChatDatabaseMySQLi($dbConnectionConfig); - break; - case 'mysql': - $this->_db = new AJAXChatDatabaseMySQL($dbConnectionConfig); - break; - default: - // Use MySQLi if available, else MySQL (and check the type of a given database connection object): - if(function_exists('mysqli_connect') && (!$dbConnectionConfig['link'] || is_object($dbConnectionConfig['link']))) { - $this->_db = new AJAXChatDatabaseMySQLi($dbConnectionConfig); - } else { - $this->_db = new AJAXChatDatabaseMySQL($dbConnectionConfig); - } - } - } - - // Method to connect to the DataBase server: - function connect(&$dbConnectionConfig) { - return $this->_db->connect($dbConnectionConfig); - } - - // Method to select the DataBase: - function select($dbName) { - return $this->_db->select($dbName); - } - - // Method to determine if an error has occured: - function error() { - return $this->_db->error(); - } - - // Method to return the error report: - function getError() { - return $this->_db->getError(); - } - - // Method to return the connection identifier: - function &getConnectionID() { - return $this->_db->getConnectionID(); - } - - // Method to prevent SQL injections: - function makeSafe($value) { - return $this->_db->makeSafe($value); - } - - // Method to perform SQL queries: - function sqlQuery($sql) { - return $this->_db->sqlQuery($sql); - } - - // Method to retrieve the current DataBase name: - function getName() { - return $this->_db->getName(); - //If your database has hyphens ( - ) in it, try using this instead: - //return '`'.$this->_db->getName().'`'; - } - - // Method to retrieve the last inserted ID: - function getLastInsertedID() { - return $this->_db->getLastInsertedID(); - } - -} -?> \ No newline at end of file diff --git a/library/ajaxchat/chat/lib/class/AJAXChatEncoding.php b/library/ajaxchat/chat/lib/class/AJAXChatEncoding.php deleted file mode 100644 index 96b2482c7..000000000 --- a/library/ajaxchat/chat/lib/class/AJAXChatEncoding.php +++ /dev/null @@ -1,138 +0,0 @@ -'&', '<'=>'<', '>'=>'>', "'"=>''', '"'=>'"'); - } - return $specialChars; - } - - // Helper function to store Regular expression for NO-WS-CTL as we cannot use static class members in PHP4: - public static function getRegExp_NO_WS_CTL() { - static $regExp_NO_WS_CTL; - if(!$regExp_NO_WS_CTL) { - // Regular expression for NO-WS-CTL, non-whitespace control characters (RFC 2822), decimal 1–8, 11–12, 14–31, and 127: - $regExp_NO_WS_CTL = '/[\x0\x1\x2\x3\x4\x5\x6\x7\x8\xB\xC\xE\xF\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1A\x1B\x1C\x1D\x1E\x1F\x7F]/'; - } - return $regExp_NO_WS_CTL; - } - - public static function convertEncoding($str, $charsetFrom, $charsetTo) { - if(function_exists('mb_convert_encoding')) { - return mb_convert_encoding($str, $charsetTo, $charsetFrom); - } - if(function_exists('iconv')) { - return iconv($charsetFrom, $charsetTo, $str); - } - if(($charsetFrom == 'UTF-8') && ($charsetTo == 'ISO-8859-1')) { - return utf8_decode($str); - } - if(($charsetFrom == 'ISO-8859-1') && ($charsetTo == 'UTF-8')) { - return utf8_encode($str); - } - return $str; - } - - public static function htmlEncode($str, $contentCharset='UTF-8') { - switch($contentCharset) { - case 'UTF-8': - // Encode only special chars (&, <, >, ', ") as entities: - return AJAXChatEncoding::encodeSpecialChars($str); - break; - case 'ISO-8859-1': - case 'ISO-8859-15': - // Encode special chars and all extended characters above ISO-8859-1 charset as entities, then convert to content charset: - return AJAXChatEncoding::convertEncoding(AJAXChatEncoding::encodeEntities($str, 'UTF-8', array( - 0x26, 0x26, 0, 0xFFFF, // & - 0x3C, 0x3C, 0, 0xFFFF, // < - 0x3E, 0x3E, 0, 0xFFFF, // > - 0x27, 0x27, 0, 0xFFFF, // ' - 0x22, 0x22, 0, 0xFFFF, // " - 0x100, 0x2FFFF, 0, 0xFFFF // above ISO-8859-1 - )), 'UTF-8', $contentCharset); - break; - default: - // Encode special chars and all characters above ASCII charset as entities, then convert to content charset: - return AJAXChatEncoding::convertEncoding(AJAXChatEncoding::encodeEntities($str, 'UTF-8', array( - 0x26, 0x26, 0, 0xFFFF, // & - 0x3C, 0x3C, 0, 0xFFFF, // < - 0x3E, 0x3E, 0, 0xFFFF, // > - 0x27, 0x27, 0, 0xFFFF, // ' - 0x22, 0x22, 0, 0xFFFF, // " - 0x80, 0x2FFFF, 0, 0xFFFF // above ASCII - )), 'UTF-8', $contentCharset); - } - } - - public static function encodeSpecialChars($str) { - return strtr($str, AJAXChatEncoding::getSpecialChars()); - } - - public static function decodeSpecialChars($str) { - return strtr($str, array_flip(AJAXChatEncoding::getSpecialChars())); - } - - public static function encodeEntities($str, $encoding='UTF-8', $convmap=null) { - if($convmap && function_exists('mb_encode_numericentity')) { - return mb_encode_numericentity($str, $convmap, $encoding); - } - return htmlentities($str, ENT_QUOTES, $encoding); - } - - public static function decodeEntities($str, $encoding='UTF-8', $htmlEntitiesMap=null) { - // Due to PHP bug #25670, html_entity_decode does not work with UTF-8 for PHP versions < 5: - if(function_exists('html_entity_decode') && version_compare(phpversion(), 5, '>=')) { - // Replace numeric and literal entities: - $str = html_entity_decode($str, ENT_QUOTES, $encoding); - // Replace additional literal HTML entities if an HTML entities map is given: - if($htmlEntitiesMap) { - $str = strtr($str, $htmlEntitiesMap); - } - } else { - // Replace numeric entities: - $str = preg_replace('~&#([0-9]+);~e', 'AJAXChatEncoding::unicodeChar("\\1")', $str); - $str = preg_replace('~&#x([0-9a-f]+);~ei', 'AJAXChatEncoding::unicodeChar(hexdec("\\1"))', $str); - // Replace literal entities: - $htmlEntitiesMap = $htmlEntitiesMap ? $htmlEntitiesMap : array_flip(get_html_translation_table(HTML_ENTITIES, ENT_QUOTES)); - $str = strtr($str, $htmlEntitiesMap); - } - return $str; - } - - public static function unicodeChar($c) { - if($c <= 0x7F) { - return chr($c); - } else if($c <= 0x7FF) { - return chr(0xC0 | $c >> 6) . chr(0x80 | $c & 0x3F); - } else if($c <= 0xFFFF) { - return chr(0xE0 | $c >> 12) . chr(0x80 | $c >> 6 & 0x3F) - . chr(0x80 | $c & 0x3F); - } else if($c <= 0x10FFFF) { - return chr(0xF0 | $c >> 18) . chr(0x80 | $c >> 12 & 0x3F) - . chr(0x80 | $c >> 6 & 0x3F) - . chr(0x80 | $c & 0x3F); - } else { - return null; - } - } - - public static function removeUnsafeCharacters($str) { - // Remove NO-WS-CTL, non-whitespace control characters (RFC 2822), decimal 1–8, 11–12, 14–31, and 127: - return preg_replace(AJAXChatEncoding::getRegExp_NO_WS_CTL(), '', $str); - } - -} -?> \ No newline at end of file diff --git a/library/ajaxchat/chat/lib/class/AJAXChatFileSystem.php b/library/ajaxchat/chat/lib/class/AJAXChatFileSystem.php deleted file mode 100644 index c9626c36a..000000000 --- a/library/ajaxchat/chat/lib/class/AJAXChatFileSystem.php +++ /dev/null @@ -1,22 +0,0 @@ - \ No newline at end of file diff --git a/library/ajaxchat/chat/lib/class/AJAXChatHTTPHeader.php b/library/ajaxchat/chat/lib/class/AJAXChatHTTPHeader.php deleted file mode 100644 index 7340bfcf0..000000000 --- a/library/ajaxchat/chat/lib/class/AJAXChatHTTPHeader.php +++ /dev/null @@ -1,56 +0,0 @@ -_contentType = $contentType.'; charset='.$encoding; - $this->_constant = true; - } else { - if(isset($_SERVER['HTTP_ACCEPT']) && (strpos($_SERVER['HTTP_ACCEPT'],'application/xhtml+xml') !== false)) { - $this->_contentType = 'application/xhtml+xml; charset='.$encoding; - } else { - $this->_contentType = 'text/html; charset='.$encoding; - } - $this->_constant = false; - } - $this->_noCache = $noCache; - } - - // Method to send the HTTP header: - function send() { - // Prevent caching: - if($this->_noCache) { - header('Cache-Control: no-cache, must-revalidate'); - header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); - } - - // Send the content-type-header: - header('Content-Type: '.$this->_contentType); - - // Send vary header if content-type varies (important for proxy-caches): - if(!$this->_constant) { - header('Vary: Accept'); - } - } - - // Method to return the content-type string: - function getContentType() { - // Return the content-type string: - return $this->_contentType; - } - -} -?> \ No newline at end of file diff --git a/library/ajaxchat/chat/lib/class/AJAXChatLanguage.php b/library/ajaxchat/chat/lib/class/AJAXChatLanguage.php deleted file mode 100644 index b19724710..000000000 --- a/library/ajaxchat/chat/lib/class/AJAXChatLanguage.php +++ /dev/null @@ -1,102 +0,0 @@ -_regExpAcceptLangCode = '/^([a-z]{1,8}(?:-[a-z]{1,8})*)(?:;\s*q=(0(?:\.[0-9]{1,3})?|1(?:\.0{1,3})?))?$/i'; - $this->_availableLangCodes = $availableLangCodes; - $this->_defaultLangCode = $defaultLangCode; - if($langCode && in_array($langCode, $availableLangCodes)) { - $this->_langCode = $langCode; - } - $this->_strictMode = $strictMode; - } - - // Method to detect the language code from the HTTP_ACCEPT_LANGUAGE header: - function detectLangCode() { - // If HTTP_ACCEPT_LANGUAGE is empty use defaultLangCode: - if(empty($_SERVER['HTTP_ACCEPT_LANGUAGE'])) { - $this->_langCode = $this->_defaultLangCode; - return; - } - - // Split up the HTTP_ACCEPT_LANGUAGE header: - $acceptedLanguages = preg_split('/,\s*/', $_SERVER['HTTP_ACCEPT_LANGUAGE']); - - $currentLangCode = $this->_defaultLangCode; - $currentLangQuality = 0.0; - - foreach($acceptedLanguages as $acceptedLanguage) { - // Parse the language string: - $match = preg_match($this->_regExpAcceptLangCode, $acceptedLanguage, $matches); - // Check if the syntax is valid: - if(!$match) { - continue; - } - - // Get and split the language code: - $langCodeParts = explode ('-', $matches[1]); - - // Get the language quality given as float value: - if(isset($matches[2])) { - $langQuality = (float)$matches[2]; - } else { - // Missing language quality value is maximum quality: - $langQuality = 1.0; - } - - // Go through it until the language code is empty: - while(count($langCodeParts)) { - // Join the current langCodeParts: - $langCode = strtolower(join('-', $langCodeParts)); - // Check if the langCode is in the available list: - if(in_array($langCode, $this->_availableLangCodes)) { - // Check the quality setting: - if ($langQuality > $currentLangQuality) { - $currentLangCode = $langCode; - $currentLangQuality = $langQuality; - break; - } - } - // If strict mode is set, don't minimalize the language code: - if($this->_strictMode) { - break; - } - // else chop off the right part: - array_pop($langCodeParts); - } - } - - $this->_langCode = $currentLangCode; - } - - function getLangCode() { - if(!$this->_langCode) { - $this->detectLangCode(); - } - return $this->_langCode; - } - - function setLangCode($langCode) { - $this->_langCode = $langCode; - } - - function getLangCodes() { - return $this->_availableLangCodes; - } - -} -?> \ No newline at end of file diff --git a/library/ajaxchat/chat/lib/class/AJAXChatMySQLDataBase.php b/library/ajaxchat/chat/lib/class/AJAXChatMySQLDataBase.php deleted file mode 100644 index 6dca348d1..000000000 --- a/library/ajaxchat/chat/lib/class/AJAXChatMySQLDataBase.php +++ /dev/null @@ -1,92 +0,0 @@ -_connectionID = $dbConnectionConfig['link']; - $this->_dbName = $dbConnectionConfig['name']; - } - - // Method to connect to the DataBase server: - function connect(&$dbConnectionConfig) { - $this->_connectionID = @mysql_connect( - $dbConnectionConfig['host'], - $dbConnectionConfig['user'], - $dbConnectionConfig['pass'], - true - ); - if(!$this->_connectionID) { - $this->_errno = null; - $this->_error = 'Database connection failed.'; - return false; - } - return true; - } - - // Method to select the DataBase: - function select($dbName) { - if(!@mysql_select_db($dbName, $this->_connectionID)) { - $this->_errno = mysql_errno($this->_connectionID); - $this->_error = mysql_error($this->_connectionID); - return false; - } - $this->_dbName = $dbName; - return true; - } - - // Method to determine if an error has occured: - function error() { - return (bool)$this->_error; - } - - // Method to return the error report: - function getError() { - if($this->error()) { - $str = 'Error-Report: ' .$this->_error."\n"; - $str .= 'Error-Code: '.$this->_errno."\n"; - } else { - $str = 'No errors.'."\n"; - } - return $str; - } - - // Method to return the connection identifier: - function &getConnectionID() { - return $this->_connectionID; - } - - // Method to prevent SQL injections: - function makeSafe($value) { - return "'".mysql_real_escape_string($value, $this->_connectionID)."'"; - } - - // Method to perform SQL queries: - function sqlQuery($sql) { - return new AJAXChatMySQLQuery($sql, $this->_connectionID); - } - - // Method to retrieve the current DataBase name: - function getName() { - return $this->_dbName; - } - - // Method to retrieve the last inserted ID: - function getLastInsertedID() { - return mysql_insert_id($this->_connectionID); - } - -} -?> \ No newline at end of file diff --git a/library/ajaxchat/chat/lib/class/AJAXChatMySQLQuery.php b/library/ajaxchat/chat/lib/class/AJAXChatMySQLQuery.php deleted file mode 100644 index f2f3fd466..000000000 --- a/library/ajaxchat/chat/lib/class/AJAXChatMySQLQuery.php +++ /dev/null @@ -1,89 +0,0 @@ -_sql = trim($sql); - $this->_connectionID = $connectionID; - if($this->_connectionID) { - $this->_result = mysql_query($this->_sql, $this->_connectionID); - if(!$this->_result) { - $this->_errno = mysql_errno($this->_connectionID); - $this->_error = mysql_error($this->_connectionID); - } - } else { - $this->_result = mysql_query($this->_sql); - if(!$this->_result) { - $this->_errno = mysql_errno(); - $this->_error = mysql_error(); - } - } - } - - // Returns true if an error occured: - function error() { - // Returns true if the Result-ID is valid: - return !(bool)($this->_result); - } - - // Returns an Error-String: - function getError() { - if($this->error()) { - $str = 'Query: ' .$this->_sql ."\n"; - $str .= 'Error-Report: ' .$this->_error."\n"; - $str .= 'Error-Code: '.$this->_errno; - } else { - $str = "No errors."; - } - return $str; - } - - // Returns the content: - function fetch() { - if($this->error()) { - return null; - } else { - return mysql_fetch_assoc($this->_result); - } - } - - // Returns the number of rows (SELECT or SHOW): - function numRows() { - if($this->error()) { - return null; - } else { - return mysql_num_rows($this->_result); - } - } - - // Returns the number of affected rows (INSERT, UPDATE, REPLACE or DELETE): - function affectedRows() { - if($this->error()) { - return null; - } else { - return mysql_affected_rows($this->_connectionID); - } - } - - // Frees the memory: - function free() { - @mysql_free_result($this->_result); - } - -} -?> \ No newline at end of file diff --git a/library/ajaxchat/chat/lib/class/AJAXChatMySQLiDataBase.php b/library/ajaxchat/chat/lib/class/AJAXChatMySQLiDataBase.php deleted file mode 100644 index 9bc611e2d..000000000 --- a/library/ajaxchat/chat/lib/class/AJAXChatMySQLiDataBase.php +++ /dev/null @@ -1,91 +0,0 @@ -_connectionID = $dbConnectionConfig['link']; - $this->_dbName = $dbConnectionConfig['name']; - } - - // Method to connect to the DataBase server: - function connect(&$dbConnectionConfig) { - @$this->_connectionID = new mysqli( - $dbConnectionConfig['host'], - $dbConnectionConfig['user'], - $dbConnectionConfig['pass'] - ); - if($this->_connectionID->connect_errno) { - $this->_errno = mysqli_connect_errno(); - $this->_error = mysqli_connect_error(); - return false; - } - return true; - } - - // Method to select the DataBase: - function select($dbName) { - if(!$this->_connectionID->select_db($dbName)) { - $this->_errno = $this->_connectionID->errno; - $this->_error = $this->_connectionID->error; - return false; - } - $this->_dbName = $dbName; - return true; - } - - // Method to determine if an error has occured: - function error() { - return (bool)$this->_error; - } - - // Method to return the error report: - function getError() { - if($this->error()) { - $str = 'Error-Report: ' .$this->_error."\n"; - $str .= 'Error-Code: '.$this->_errno."\n"; - } else { - $str = 'No errors.'."\n"; - } - return $str; - } - - // Method to return the connection identifier: - function &getConnectionID() { - return $this->_connectionID; - } - - // Method to prevent SQL injections: - function makeSafe($value) { - return "'".$this->_connectionID->escape_string($value)."'"; - } - - // Method to perform SQL queries: - function sqlQuery($sql) { - return new AJAXChatMySQLiQuery($sql, $this->_connectionID); - } - - // Method to retrieve the current DataBase name: - function getName() { - return $this->_dbName; - } - - // Method to retrieve the last inserted ID: - function getLastInsertedID() { - return $this->_connectionID->insert_id; - } - -} -?> \ No newline at end of file diff --git a/library/ajaxchat/chat/lib/class/AJAXChatMySQLiQuery.php b/library/ajaxchat/chat/lib/class/AJAXChatMySQLiQuery.php deleted file mode 100644 index f81afd886..000000000 --- a/library/ajaxchat/chat/lib/class/AJAXChatMySQLiQuery.php +++ /dev/null @@ -1,81 +0,0 @@ -_sql = trim($sql); - $this->_connectionID = $connectionID; - $this->_result = $this->_connectionID->query($this->_sql); - if(!$this->_result) { - $this->_errno = $this->_connectionID->errno; - $this->_error = $this->_connectionID->error; - } - } - - // Returns true if an error occured: - function error() { - // Returns true if the Result-ID is valid: - return !(bool)($this->_result); - } - - // Returns an Error-String: - function getError() { - if($this->error()) { - $str = 'Query: ' .$this->_sql ."\n"; - $str .= 'Error-Report: ' .$this->_error."\n"; - $str .= 'Error-Code: '.$this->_errno; - } else { - $str = "No errors."; - } - return $str; - } - - // Returns the content: - function fetch() { - if($this->error()) { - return null; - } else { - return $this->_result->fetch_assoc(); - } - } - - // Returns the number of rows (SELECT or SHOW): - function numRows() { - if($this->error()) { - return null; - } else { - return $this->_result->num_rows; - } - } - - // Returns the number of affected rows (INSERT, UPDATE, REPLACE or DELETE): - function affectedRows() { - if($this->error()) { - return null; - } else { - return $this->_connectionID->affected_rows; - } - } - - // Frees the memory: - function free() { - $this->_result->free(); - } - -} -?> \ No newline at end of file diff --git a/library/ajaxchat/chat/lib/class/AJAXChatString.php b/library/ajaxchat/chat/lib/class/AJAXChatString.php deleted file mode 100644 index 8997da5ea..000000000 --- a/library/ajaxchat/chat/lib/class/AJAXChatString.php +++ /dev/null @@ -1,37 +0,0 @@ - \ No newline at end of file diff --git a/library/ajaxchat/chat/lib/class/AJAXChatTemplate.php b/library/ajaxchat/chat/lib/class/AJAXChatTemplate.php deleted file mode 100644 index 16e53a7e6..000000000 --- a/library/ajaxchat/chat/lib/class/AJAXChatTemplate.php +++ /dev/null @@ -1,329 +0,0 @@ -ajaxChat = $ajaxChat; - $this->_regExpTemplateTags = '/\[(\w+?)(?:(?:\/)|(?:\](.+?)\[\/\1))\]/s'; - $this->_templateFile = $templateFile; - $this->_contentType = $contentType; - } - - function getParsedContent() { - if(!$this->_parsedContent) { - $this->parseContent(); - } - return $this->_parsedContent; - } - - function getContent() { - if(!$this->_content) { - $this->_content = AJAXChatFileSystem::getFileContents($this->_templateFile); - } - return $this->_content; - } - - function parseContent() { - $this->_parsedContent = $this->getContent(); - - // Remove the XML declaration if the content-type is not xml: - if($this->_contentType && (strpos($this->_contentType,'xml') === false)) { - $doctypeStart = strpos($this->_parsedContent, '_parsedContent = substr($this->_parsedContent, $doctypeStart); - } - } - - // Replace template tags ([TAG/] and [TAG]content[/TAG]) and return parsed template content: - $this->_parsedContent = preg_replace_callback($this->_regExpTemplateTags, array($this, 'replaceTemplateTags'), $this->_parsedContent); - } - - function replaceTemplateTags($tagData) { - switch($tagData[1]) { - case 'AJAX_CHAT_URL': - return $this->ajaxChat->htmlEncode($this->ajaxChat->getChatURL()); - - case 'LANG': - return $this->ajaxChat->htmlEncode($this->ajaxChat->getLang((isset($tagData[2]) ? $tagData[2] : null))); - case 'LANG_CODE': - return $this->ajaxChat->getLangCode(); - - case 'BASE_DIRECTION': - return $this->getBaseDirectionAttribute(); - - case 'CONTENT_ENCODING': - return $this->ajaxChat->getConfig('contentEncoding'); - - case 'CONTENT_TYPE': - return $this->_contentType; - - case 'LOGIN_URL': - return ($this->ajaxChat->getRequestVar('view') == 'logs') ? './?view=logs' : './'; - - case 'USER_NAME_MAX_LENGTH': - return $this->ajaxChat->getConfig('userNameMaxLength'); - case 'MESSAGE_TEXT_MAX_LENGTH': - return $this->ajaxChat->getConfig('messageTextMaxLength'); - - case 'LOGIN_CHANNEL_ID': - return $this->ajaxChat->getValidRequestChannelID(); - - case 'SESSION_NAME': - return $this->ajaxChat->getConfig('sessionName'); - - case 'COOKIE_EXPIRATION': - return $this->ajaxChat->getConfig('sessionCookieLifeTime'); - case 'COOKIE_PATH': - return $this->ajaxChat->getConfig('sessionCookiePath'); - case 'COOKIE_DOMAIN': - return $this->ajaxChat->getConfig('sessionCookieDomain'); - case 'COOKIE_SECURE': - return $this->ajaxChat->getConfig('sessionCookieSecure'); - - case 'CHAT_BOT_NAME': - return rawurlencode($this->ajaxChat->getConfig('chatBotName')); - case 'CHAT_BOT_ID': - return $this->ajaxChat->getConfig('chatBotID'); - - case 'ALLOW_USER_MESSAGE_DELETE': - if($this->ajaxChat->getConfig('allowUserMessageDelete')) - return 1; - else - return 0; - - case 'INACTIVE_TIMEOUT': - return $this->ajaxChat->getConfig('inactiveTimeout'); - - case 'PRIVATE_CHANNEL_DIFF': - return $this->ajaxChat->getConfig('privateChannelDiff'); - case 'PRIVATE_MESSAGE_DIFF': - return $this->ajaxChat->getConfig('privateMessageDiff'); - - case 'SHOW_CHANNEL_MESSAGES': - if($this->ajaxChat->getConfig('showChannelMessages')) - return 1; - else - return 0; - - case 'SOCKET_SERVER_ENABLED': - if($this->ajaxChat->getConfig('socketServerEnabled')) - return 1; - else - return 0; - - case 'SOCKET_SERVER_HOST': - if($this->ajaxChat->getConfig('socketServerHost')) { - $socketServerHost = $this->ajaxChat->getConfig('socketServerHost'); - } else { - $socketServerHost = (isset($_SERVER['HTTP_HOST']) ? $_SERVER['HTTP_HOST'] : $_SERVER['SERVER_NAME']); - } - return rawurlencode($socketServerHost); - - case 'SOCKET_SERVER_PORT': - return $this->ajaxChat->getConfig('socketServerPort'); - - case 'SOCKET_SERVER_CHAT_ID': - return $this->ajaxChat->getConfig('socketServerChatID'); - - case 'STYLE_SHEETS': - return $this->getStyleSheetLinkTags(); - - case 'CHANNEL_OPTIONS': - return $this->getChannelOptionTags(); - case 'STYLE_OPTIONS': - return $this->getStyleOptionTags(); - case 'LANGUAGE_OPTIONS': - return $this->getLanguageOptionTags(); - - case 'ERROR_MESSAGES': - return $this->getErrorMessageTags(); - - case 'LOGS_CHANNEL_OPTIONS': - return $this->getLogsChannelOptionTags(); - case 'LOGS_YEAR_OPTIONS': - return $this->getLogsYearOptionTags(); - case 'LOGS_MONTH_OPTIONS': - return $this->getLogsMonthOptionTags(); - case 'LOGS_DAY_OPTIONS': - return $this->getLogsDayOptionTags(); - case 'LOGS_HOUR_OPTIONS': - return $this->getLogsHourOptionTags(); - case 'CLASS_WRITEABLE': - $userdata = $this->ajaxChat->getValidLoginUserData(); - $guestwrite = $this->ajaxChat->getConfig('allowGuestWrite'); - if ($userdata['userRole'] === AJAX_CHAT_GUEST && $guestwrite === false) - return 'write_forbidden'; - else - return 'write_allowed'; - - default: - return $this->ajaxChat->replaceCustomTemplateTags($tagData[1], (isset($tagData[2]) ? $tagData[2] : null)); - } - } - - // Function to display alternating table row colors: - function alternateRow($rowOdd='rowOdd', $rowEven='rowEven') { - static $i; - $i += 1; - if($i % 2 == 0) { - return $rowEven; - } else { - return $rowOdd; - } - } - - function getBaseDirectionAttribute() { - $langCodeParts = explode('-', $this->ajaxChat->getLangCode()); - switch($langCodeParts[0]) { - case 'ar': - case 'fa': - case 'he': - return 'rtl'; - default: - return 'ltr'; - } - } - - function getStyleSheetLinkTags() { - $styleSheets = ''; - foreach($this->ajaxChat->getConfig('styleAvailable') as $style) { - $alternate = ($style == $this->ajaxChat->getConfig('styleDefault')) ? '' : 'alternate '; - $styleSheets .= ''; - } - return $styleSheets; - } - - function getChannelOptionTags() { - $channelOptions = ''; - $channelSelected = false; - foreach($this->ajaxChat->getChannels() as $name=>$id) { - if($this->ajaxChat->isLoggedIn() && $this->ajaxChat->getChannel()) { - $selected = ($id == $this->ajaxChat->getChannel()) ? ' selected="selected"' : ''; - } else { - $selected = ($id == $this->ajaxChat->getConfig('defaultChannelID')) ? ' selected="selected"' : ''; - } - if($selected) { - $channelSelected = true; - } - $channelOptions .= ''; - } - if($this->ajaxChat->isLoggedIn() && $this->ajaxChat->isAllowedToCreatePrivateChannel()) { - // Add the private channel of the user to the options list: - if(!$channelSelected && $this->ajaxChat->getPrivateChannelID() == $this->ajaxChat->getChannel()) { - $selected = ' selected="selected"'; - $channelSelected = true; - } else { - $selected = ''; - } - $privateChannelName = $this->ajaxChat->getPrivateChannelName(); - $channelOptions .= ''; - } - // If current channel is not in the list, try to retrieve the channelName: - if(!$channelSelected) { - $channelName = $this->ajaxChat->getChannelName(); - if($channelName !== null) { - $channelOptions .= ''; - } else { - // Show an empty selection: - $channelOptions .= ''; - } - } - return $channelOptions; - } - - function getStyleOptionTags() { - $styleOptions = ''; - foreach($this->ajaxChat->getConfig('styleAvailable') as $style) { - $selected = ($style == $this->ajaxChat->getConfig('styleDefault')) ? ' selected="selected"' : ''; - $styleOptions .= ''; - } - return $styleOptions; - } - - function getLanguageOptionTags() { - $languageOptions = ''; - $languageNames = $this->ajaxChat->getConfig('langNames'); - foreach($this->ajaxChat->getConfig('langAvailable') as $langCode) { - $selected = ($langCode == $this->ajaxChat->getLangCode()) ? ' selected="selected"' : ''; - $languageOptions .= ''; - } - return $languageOptions; - } - - function getErrorMessageTags() { - $errorMessages = ''; - foreach($this->ajaxChat->getInfoMessages('error') as $error) { - $errorMessages .= '
    '.$this->ajaxChat->htmlEncode($this->ajaxChat->getLang($error)).'
    '; - } - return $errorMessages; - } - - function getLogsChannelOptionTags() { - $channelOptions = ''; - $channelOptions .= ''; - foreach($this->ajaxChat->getChannels() as $key=>$value) { - if($this->ajaxChat->getUserRole() != AJAX_CHAT_ADMIN && $this->ajaxChat->getConfig('logsUserAccessChannelList') && !in_array($value, $this->ajaxChat->getConfig('logsUserAccessChannelList'))) { - continue; - } - $channelOptions .= ''; - } - $channelOptions .= ''; - $channelOptions .= ''; - return $channelOptions; - } - - function getLogsYearOptionTags() { - $yearOptions = ''; - $yearOptions .= ''; - for($year=date('Y'); $year>=$this->ajaxChat->getConfig('logsFirstYear'); $year--) { - $yearOptions .= ''; - } - return $yearOptions; - } - - function getLogsMonthOptionTags() { - $monthOptions = ''; - $monthOptions .= ''; - for($month=1; $month<=12; $month++) { - $monthOptions .= ''; - } - return $monthOptions; - } - - function getLogsDayOptionTags() { - $dayOptions = ''; - $dayOptions .= ''; - for($day=1; $day<=31; $day++) { - $dayOptions .= ''; - } - return $dayOptions; - } - - function getLogsHourOptionTags() { - $hourOptions = ''; - $hourOptions .= ''; - for($hour=0; $hour<=23; $hour++) { - $hourOptions .= ''; - } - return $hourOptions; - } - -} -?> diff --git a/library/ajaxchat/chat/lib/class/CustomAJAXChat.php b/library/ajaxchat/chat/lib/class/CustomAJAXChat.php deleted file mode 100644 index 9fff6ada9..000000000 --- a/library/ajaxchat/chat/lib/class/CustomAJAXChat.php +++ /dev/null @@ -1,126 +0,0 @@ -getCustomUsers(); - - if($this->getRequestVar('password')) { - // Check if we have a valid registered user: - - $userName = $this->getRequestVar('userName'); - $userName = $this->convertEncoding($userName, $this->getConfig('contentEncoding'), $this->getConfig('sourceEncoding')); - - $password = $this->getRequestVar('password'); - $password = $this->convertEncoding($password, $this->getConfig('contentEncoding'), $this->getConfig('sourceEncoding')); - - foreach($customUsers as $key=>$value) { - if(($value['userName'] == $userName) && ($value['password'] == $password)) { - $userData = array(); - $userData['userID'] = $key; - $userData['userName'] = $this->trimUserName($value['userName']); - $userData['userRole'] = $value['userRole']; - return $userData; - } - } - - return null; - } else { - // Guest users: - return $this->getGuestUser(); - } - } - - // Store the channels the current user has access to - // Make sure channel names don't contain any whitespace - function &getChannels() { - if($this->_channels === null) { - $this->_channels = array(); - - $customUsers = $this->getCustomUsers(); - - // Get the channels, the user has access to: - if($this->getUserRole() == AJAX_CHAT_GUEST) { - $validChannels = $customUsers[0]['channels']; - } else { - $validChannels = $customUsers[$this->getUserID()]['channels']; - } - - // Add the valid channels to the channel list (the defaultChannelID is always valid): - foreach($this->getAllChannels() as $key=>$value) { - if ($value == $this->getConfig('defaultChannelID')) { - $this->_channels[$key] = $value; - continue; - } - // Check if we have to limit the available channels: - if($this->getConfig('limitChannelList') && !in_array($value, $this->getConfig('limitChannelList'))) { - continue; - } - if(in_array($value, $validChannels)) { - $this->_channels[$key] = $value; - } - } - } - return $this->_channels; - } - - // Store all existing channels - // Make sure channel names don't contain any whitespace - function &getAllChannels() { - if($this->_allChannels === null) { - // Get all existing channels: - $customChannels = $this->getCustomChannels(); - - $defaultChannelFound = false; - - foreach($customChannels as $name=>$id) { - $this->_allChannels[$this->trimChannelName($name)] = $id; - if($id == $this->getConfig('defaultChannelID')) { - $defaultChannelFound = true; - } - } - - if(!$defaultChannelFound) { - // Add the default channel as first array element to the channel list - // First remove it in case it appeard under a different ID - unset($this->_allChannels[$this->getConfig('defaultChannelName')]); - $this->_allChannels = array_merge( - array( - $this->trimChannelName($this->getConfig('defaultChannelName'))=>$this->getConfig('defaultChannelID') - ), - $this->_allChannels - ); - } - } - return $this->_allChannels; - } - - function &getCustomUsers() { - // List containing the registered chat users: - $users = null; - require(AJAX_CHAT_PATH.'lib/data/users.php'); - return $users; - } - - function getCustomChannels() { - // List containing the custom channels: - $channels = null; - require(AJAX_CHAT_PATH.'lib/data/channels.php'); - // Channel array structure should be: - // ChannelName => ChannelID - return array_flip($channels); - } - -} \ No newline at end of file diff --git a/library/ajaxchat/chat/lib/class/CustomAJAXChatInterface.php b/library/ajaxchat/chat/lib/class/CustomAJAXChatInterface.php deleted file mode 100644 index a950739c5..000000000 --- a/library/ajaxchat/chat/lib/class/CustomAJAXChatInterface.php +++ /dev/null @@ -1,21 +0,0 @@ -initConfig(); - - // Initialize the DataBase connection: - $this->initDataBaseConnection(); - } - -} -?> \ No newline at end of file diff --git a/library/ajaxchat/chat/lib/class/CustomAJAXChatShoutBox.php b/library/ajaxchat/chat/lib/class/CustomAJAXChatShoutBox.php deleted file mode 100644 index c014d639e..000000000 --- a/library/ajaxchat/chat/lib/class/CustomAJAXChatShoutBox.php +++ /dev/null @@ -1,25 +0,0 @@ -initConfig(); - } - - function getShoutBoxContent() { - $template = new AJAXChatTemplate($this, AJAX_CHAT_PATH.'lib/template/shoutbox.html'); - - // Return parsed template content: - return $template->getParsedContent(); - } - -} -?> \ No newline at end of file diff --git a/library/ajaxchat/chat/lib/classes.php b/library/ajaxchat/chat/lib/classes.php deleted file mode 100644 index ff1dee265..000000000 --- a/library/ajaxchat/chat/lib/classes.php +++ /dev/null @@ -1,26 +0,0 @@ - \ No newline at end of file diff --git a/library/ajaxchat/chat/lib/config.php.example b/library/ajaxchat/chat/lib/config.php.example deleted file mode 100644 index 023adcdbb..000000000 --- a/library/ajaxchat/chat/lib/config.php.example +++ /dev/null @@ -1,209 +0,0 @@ -'عربي', 'bg'=>'Български', 'ca'=>'Català', 'cy'=>'Cymraeg', 'cz'=>'Česky', 'da'=>'Dansk', 'de'=>'Deutsch', 'el'=>'Ελληνικα', 'en'=>'English', - 'es'=>'Español', 'et'=>'Eesti', 'fa'=>'فارسی', 'fi'=>'Suomi', 'fr'=>'Français', 'gl'=>'Galego', 'he'=>'עברית', 'hr' => 'Hrvatski', 'hu' => 'Magyar', 'in'=>'Bahasa Indonesia', 'it'=>'Italiano', - 'ja'=>'日本語','ka'=>'ქართული','kr'=>'한 글','mk'=>'Македонски', 'nl'=>'Nederlands', 'nl-be'=>'Nederlands (België)', 'no'=>'Norsk', 'pl'=> 'Polski', 'pt-br'=>'Português (Brasil)', 'pt-pt'=>'Português (Portugal)', - 'ro'=>'România', 'ru'=>'Русский', 'sk'=> 'Slovenčina', 'sl'=>'Slovensko', 'sr'=>'Srpski', 'sv'=> 'Svenska', 'th'=>'ภาษาไทย', - 'tr'=>'Türkçe', 'uk'=>'Українська', 'zh'=>'中文 (简体)', 'zh-tw'=>'中文 (繁體)' -); - -// Available styles: -$config['styleAvailable'] = array('beige','black','grey','Oxygen','Lithium','Sulfur','Cobalt','Mercury','Uranium','Plum','prosilver','subblack2','subSilver','Core','MyBB','vBulletin'); -// Default style: -$config['styleDefault'] = 'prosilver'; - -// The encoding used for the XHTML content: -$config['contentEncoding'] = 'UTF-8'; -// The encoding of the data source, like userNames and channelNames: -$config['sourceEncoding'] = 'UTF-8'; -// The content-type of the XHTML page (e.g. "text/html", will be set dependent on browser capabilities if set to null): -$config['contentType'] = null; - -// Session name used to identify the session cookie: -$config['sessionName'] = 'ajax_chat'; -// Prefix added to every session key: -$config['sessionKeyPrefix'] = 'ajaxChat'; -// The lifetime of the language, style and setting cookies in days: -$config['sessionCookieLifeTime'] = 365; -// The path of the cookies, '/' allows to read the cookies from all directories: -$config['sessionCookiePath'] = '/'; -// The domain of the cookies, defaults to the hostname of the server if set to null: -$config['sessionCookieDomain'] = null; -// If enabled, cookies must be sent over secure (SSL/TLS encrypted) connections: -$config['sessionCookieSecure'] = null; - -// Default channelName used together with the defaultChannelID if no channel with this ID exists: -$config['defaultChannelName'] = 'Public'; -// ChannelID used when no channel is given: -$config['defaultChannelID'] = 0; -// Defines an array of channelIDs (e.g. array(0, 1)) to limit the number of available channels, will be ignored if set to null: -$config['limitChannelList'] = null; - -// UserID plus this value are private channels (this is also the max userID and max channelID): -$config['privateChannelDiff'] = 500000000; -// UserID plus this value are used for private messages: -$config['privateMessageDiff'] = 1000000000; - -// Enable/Disable private Channels: -$config['allowPrivateChannels'] = true; -// Enable/Disable private Messages: -$config['allowPrivateMessages'] = true; - -// Private channels should be distinguished by either a prefix or a suffix or both (no whitespace): -$config['privateChannelPrefix'] = '['; -// Private channels should be distinguished by either a prefix or a suffix or both (no whitespace): -$config['privateChannelSuffix'] = ']'; - -// If enabled, users will be logged in automatically as guest users (if allowed), if not authenticated: -$config['forceAutoLogin'] = false; - -// Defines if login/logout and channel enter/leave are displayed: -$config['showChannelMessages'] = true; - -// If enabled, the chat will only be accessible for the admin: -$config['chatClosed'] = false; -// Defines the timezone offset in seconds (-12*60*60 to 12*60*60) - if null, the server timezone is used: -$config['timeZoneOffset'] = null; -// Defines the hour of the day the chat is opened (0 - closingHour): -$config['openingHour'] = 0; -// Defines the hour of the day the chat is closed (openingHour - 24): -$config['closingHour'] = 24; -// Defines the weekdays the chat is opened (0=Sunday to 6=Saturday): -$config['openingWeekDays'] = array(0,1,2,3,4,5,6); - -// Enable/Disable guest logins: -$config['allowGuestLogins'] = true; -// Enable/Disable write access for guest users - if disabled, guest users may not write messages: -$config['allowGuestWrite'] = true; -// Allow/Disallow guest users to choose their own userName: -$config['allowGuestUserName'] = true; -// Guest users should be distinguished by either a prefix or a suffix or both (no whitespace): -$config['guestUserPrefix'] = '('; -// Guest users should be distinguished by either a prefix or a suffix or both (no whitespace): -$config['guestUserSuffix'] = ')'; -// Guest userIDs may not be lower than this value (and not higher than privateChannelDiff): -$config['minGuestUserID'] = 400000000; - -// Allow/Disallow users to change their userName (Nickname): -$config['allowNickChange'] = true; -// Changed userNames should be distinguished by either a prefix or a suffix or both (no whitespace): -$config['changedNickPrefix'] = '('; -// Changed userNames should be distinguished by either a prefix or a suffix or both (no whitespace): -$config['changedNickSuffix'] = ')'; - -// Allow/Disallow registered users to delete their own messages: -$config['allowUserMessageDelete'] = true; - -// The userID used for ChatBot messages: -$config['chatBotID'] = 2147483647; -// The userName used for ChatBot messages -$config['chatBotName'] = 'ChatBot'; - -// Minutes until a user is declared inactive (last status update) - the minimum is 2 minutes: -$config['inactiveTimeout'] = 2; -// Interval in minutes to check for inactive users: -$config['inactiveCheckInterval'] = 5; - -// Defines if messages are shown which have been sent before the user entered the channel: -$config['requestMessagesPriorChannelEnter'] = true; -// Defines an array of channelIDs (e.g. array(0, 1)) for which the previous setting is always true (will be ignored if set to null): -$config['requestMessagesPriorChannelEnterList'] = null; -// Max time difference in hours for messages to display on each request: -$config['requestMessagesTimeDiff'] = 24; -// Max number of messages to display on each request: -$config['requestMessagesLimit'] = 10; - -// Max users in chat (does not affect moderators or admins): -$config['maxUsersLoggedIn'] = 100; -// Max userName length: -$config['userNameMaxLength'] = 16; -// Max messageText length: -$config['messageTextMaxLength'] = 1040; -// Defines the max number of messages a user may send per minute: -$config['maxMessageRate'] = 20; - -// Defines the default time in minutes a user gets banned if kicked from a moderator without ban minutes parameter: -$config['defaultBanTime'] = 5; - -// Argument that is given to the handleLogout JavaScript method: -$config['logoutData'] = './?logout=true'; - -// If true, checks if the user IP is the same when logged in: -$config['ipCheck'] = true; - -// Defines the max time difference in hours for logs when no period or search condition is given: -$config['logsRequestMessagesTimeDiff'] = 1; -// Defines how many logs are returned on each logs request: -$config['logsRequestMessagesLimit'] = 10; - -// Defines the earliest year used for the logs selection: -$config['logsFirstYear'] = 2007; - -// Defines if old messages are purged from the database: -$config['logsPurgeLogs'] = false; -// Max time difference in days for old messages before they are purged from the database: -$config['logsPurgeTimeDiff'] = 365; - -// Defines if registered users (including moderators) have access to the logs (admins are always granted access): -$config['logsUserAccess'] = false; -// Defines a list of channels (e.g. array(0, 1)) to limit the logs access for registered users, includes all channels the user has access to if set to null: -$config['logsUserAccessChannelList'] = null; - -// Defines if the socket server is enabled: -$config['socketServerEnabled'] = false; -// Defines the hostname of the socket server used to connect from client side (the server hostname is used if set to null): -$config['socketServerHost'] = null; -// Defines the IP of the socket server used to connect from server side to broadcast update messages: -$config['socketServerIP'] = '127.0.0.1'; -// Defines the port of the socket server: -$config['socketServerPort'] = 1935; -// This ID can be used to distinguish between different chat installations using the same socket server: -$config['socketServerChatID'] = 0; -?> \ No newline at end of file diff --git a/library/ajaxchat/chat/lib/custom.php b/library/ajaxchat/chat/lib/custom.php deleted file mode 100644 index a9d08841b..000000000 --- a/library/ajaxchat/chat/lib/custom.php +++ /dev/null @@ -1,11 +0,0 @@ - \ No newline at end of file diff --git a/library/ajaxchat/chat/lib/data/channels.php b/library/ajaxchat/chat/lib/data/channels.php deleted file mode 100644 index 8688e5e7b..000000000 --- a/library/ajaxchat/chat/lib/data/channels.php +++ /dev/null @@ -1,16 +0,0 @@ - \ No newline at end of file diff --git a/library/ajaxchat/chat/lib/data/users.php b/library/ajaxchat/chat/lib/data/users.php deleted file mode 100644 index 52ca77e50..000000000 --- a/library/ajaxchat/chat/lib/data/users.php +++ /dev/null @@ -1,40 +0,0 @@ - \ No newline at end of file diff --git a/library/ajaxchat/chat/lib/lang/ar.php b/library/ajaxchat/chat/lib/lang/ar.php deleted file mode 100644 index af9c8305e..000000000 --- a/library/ajaxchat/chat/lib/lang/ar.php +++ /dev/null @@ -1,124 +0,0 @@ - \ No newline at end of file diff --git a/library/ajaxchat/chat/lib/lang/bg.php b/library/ajaxchat/chat/lib/lang/bg.php deleted file mode 100644 index 46d6af163..000000000 --- a/library/ajaxchat/chat/lib/lang/bg.php +++ /dev/null @@ -1,124 +0,0 @@ - \ No newline at end of file diff --git a/library/ajaxchat/chat/lib/lang/ca.php b/library/ajaxchat/chat/lib/lang/ca.php deleted file mode 100644 index e45c376da..000000000 --- a/library/ajaxchat/chat/lib/lang/ca.php +++ /dev/null @@ -1,125 +0,0 @@ - \ No newline at end of file diff --git a/library/ajaxchat/chat/lib/lang/cy.php b/library/ajaxchat/chat/lib/lang/cy.php deleted file mode 100644 index dea446df5..000000000 --- a/library/ajaxchat/chat/lib/lang/cy.php +++ /dev/null @@ -1,124 +0,0 @@ - \ No newline at end of file diff --git a/library/ajaxchat/chat/lib/lang/cz.php b/library/ajaxchat/chat/lib/lang/cz.php deleted file mode 100644 index cc6868c1e..000000000 --- a/library/ajaxchat/chat/lib/lang/cz.php +++ /dev/null @@ -1,123 +0,0 @@ - \ No newline at end of file diff --git a/library/ajaxchat/chat/lib/lang/da.php b/library/ajaxchat/chat/lib/lang/da.php deleted file mode 100644 index 55e7eff1b..000000000 --- a/library/ajaxchat/chat/lib/lang/da.php +++ /dev/null @@ -1,123 +0,0 @@ - diff --git a/library/ajaxchat/chat/lib/lang/de.php b/library/ajaxchat/chat/lib/lang/de.php deleted file mode 100644 index f345d100a..000000000 --- a/library/ajaxchat/chat/lib/lang/de.php +++ /dev/null @@ -1,123 +0,0 @@ - \ No newline at end of file diff --git a/library/ajaxchat/chat/lib/lang/el.php b/library/ajaxchat/chat/lib/lang/el.php deleted file mode 100644 index 526c31bf9..000000000 --- a/library/ajaxchat/chat/lib/lang/el.php +++ /dev/null @@ -1,124 +0,0 @@ - \ No newline at end of file diff --git a/library/ajaxchat/chat/lib/lang/en.php b/library/ajaxchat/chat/lib/lang/en.php deleted file mode 100644 index cb9492bde..000000000 --- a/library/ajaxchat/chat/lib/lang/en.php +++ /dev/null @@ -1,123 +0,0 @@ - \ No newline at end of file diff --git a/library/ajaxchat/chat/lib/lang/es.php b/library/ajaxchat/chat/lib/lang/es.php deleted file mode 100644 index 27b9b7273..000000000 --- a/library/ajaxchat/chat/lib/lang/es.php +++ /dev/null @@ -1,124 +0,0 @@ - \ No newline at end of file diff --git a/library/ajaxchat/chat/lib/lang/et.php b/library/ajaxchat/chat/lib/lang/et.php deleted file mode 100644 index f1169fe19..000000000 --- a/library/ajaxchat/chat/lib/lang/et.php +++ /dev/null @@ -1,123 +0,0 @@ - \ No newline at end of file diff --git a/library/ajaxchat/chat/lib/lang/fa.php b/library/ajaxchat/chat/lib/lang/fa.php deleted file mode 100644 index 0dc3cb132..000000000 --- a/library/ajaxchat/chat/lib/lang/fa.php +++ /dev/null @@ -1,124 +0,0 @@ - diff --git a/library/ajaxchat/chat/lib/lang/fi.php b/library/ajaxchat/chat/lib/lang/fi.php deleted file mode 100644 index 73466b412..000000000 --- a/library/ajaxchat/chat/lib/lang/fi.php +++ /dev/null @@ -1,125 +0,0 @@ - diff --git a/library/ajaxchat/chat/lib/lang/fr.php b/library/ajaxchat/chat/lib/lang/fr.php deleted file mode 100644 index 52ffaf1a2..000000000 --- a/library/ajaxchat/chat/lib/lang/fr.php +++ /dev/null @@ -1,125 +0,0 @@ - \ No newline at end of file diff --git a/library/ajaxchat/chat/lib/lang/gl.php b/library/ajaxchat/chat/lib/lang/gl.php deleted file mode 100644 index 54b8a8ee6..000000000 --- a/library/ajaxchat/chat/lib/lang/gl.php +++ /dev/null @@ -1,124 +0,0 @@ - \ No newline at end of file diff --git a/library/ajaxchat/chat/lib/lang/he.php b/library/ajaxchat/chat/lib/lang/he.php deleted file mode 100644 index 39fa799d2..000000000 --- a/library/ajaxchat/chat/lib/lang/he.php +++ /dev/null @@ -1,124 +0,0 @@ - \ No newline at end of file diff --git a/library/ajaxchat/chat/lib/lang/hr.php b/library/ajaxchat/chat/lib/lang/hr.php deleted file mode 100644 index ed0451033..000000000 --- a/library/ajaxchat/chat/lib/lang/hr.php +++ /dev/null @@ -1,123 +0,0 @@ - diff --git a/library/ajaxchat/chat/lib/lang/hu.php b/library/ajaxchat/chat/lib/lang/hu.php deleted file mode 100644 index 5f2174134..000000000 --- a/library/ajaxchat/chat/lib/lang/hu.php +++ /dev/null @@ -1,123 +0,0 @@ - \ No newline at end of file diff --git a/library/ajaxchat/chat/lib/lang/in.php b/library/ajaxchat/chat/lib/lang/in.php deleted file mode 100644 index 175cc904b..000000000 --- a/library/ajaxchat/chat/lib/lang/in.php +++ /dev/null @@ -1,123 +0,0 @@ - \ No newline at end of file diff --git a/library/ajaxchat/chat/lib/lang/it.php b/library/ajaxchat/chat/lib/lang/it.php deleted file mode 100644 index abcd4f9db..000000000 --- a/library/ajaxchat/chat/lib/lang/it.php +++ /dev/null @@ -1,125 +0,0 @@ - \ No newline at end of file diff --git a/library/ajaxchat/chat/lib/lang/ja.php b/library/ajaxchat/chat/lib/lang/ja.php deleted file mode 100644 index 075fc4fcb..000000000 --- a/library/ajaxchat/chat/lib/lang/ja.php +++ /dev/null @@ -1,123 +0,0 @@ - \ No newline at end of file diff --git a/library/ajaxchat/chat/lib/lang/ka.php b/library/ajaxchat/chat/lib/lang/ka.php deleted file mode 100644 index d92d50886..000000000 --- a/library/ajaxchat/chat/lib/lang/ka.php +++ /dev/null @@ -1,123 +0,0 @@ - \ No newline at end of file diff --git a/library/ajaxchat/chat/lib/lang/kr.php b/library/ajaxchat/chat/lib/lang/kr.php deleted file mode 100644 index 687dd6e30..000000000 --- a/library/ajaxchat/chat/lib/lang/kr.php +++ /dev/null @@ -1,123 +0,0 @@ - \ No newline at end of file diff --git a/library/ajaxchat/chat/lib/lang/mk.php b/library/ajaxchat/chat/lib/lang/mk.php deleted file mode 100644 index f43bcfb7d..000000000 --- a/library/ajaxchat/chat/lib/lang/mk.php +++ /dev/null @@ -1,124 +0,0 @@ - \ No newline at end of file diff --git a/library/ajaxchat/chat/lib/lang/nl-be.php b/library/ajaxchat/chat/lib/lang/nl-be.php deleted file mode 100644 index db01b9871..000000000 --- a/library/ajaxchat/chat/lib/lang/nl-be.php +++ /dev/null @@ -1,124 +0,0 @@ - \ No newline at end of file diff --git a/library/ajaxchat/chat/lib/lang/nl.php b/library/ajaxchat/chat/lib/lang/nl.php deleted file mode 100644 index c7dcc4b38..000000000 --- a/library/ajaxchat/chat/lib/lang/nl.php +++ /dev/null @@ -1,124 +0,0 @@ - \ No newline at end of file diff --git a/library/ajaxchat/chat/lib/lang/no.php b/library/ajaxchat/chat/lib/lang/no.php deleted file mode 100644 index 52fe4afbe..000000000 --- a/library/ajaxchat/chat/lib/lang/no.php +++ /dev/null @@ -1,124 +0,0 @@ - \ No newline at end of file diff --git a/library/ajaxchat/chat/lib/lang/pl.php b/library/ajaxchat/chat/lib/lang/pl.php deleted file mode 100644 index 92a1716a6..000000000 --- a/library/ajaxchat/chat/lib/lang/pl.php +++ /dev/null @@ -1,124 +0,0 @@ - \ No newline at end of file diff --git a/library/ajaxchat/chat/lib/lang/pt-br.php b/library/ajaxchat/chat/lib/lang/pt-br.php deleted file mode 100644 index 034a5fb09..000000000 --- a/library/ajaxchat/chat/lib/lang/pt-br.php +++ /dev/null @@ -1,124 +0,0 @@ - \ No newline at end of file diff --git a/library/ajaxchat/chat/lib/lang/pt-pt.php b/library/ajaxchat/chat/lib/lang/pt-pt.php deleted file mode 100644 index e3399eb04..000000000 --- a/library/ajaxchat/chat/lib/lang/pt-pt.php +++ /dev/null @@ -1,124 +0,0 @@ - \ No newline at end of file diff --git a/library/ajaxchat/chat/lib/lang/ro.php b/library/ajaxchat/chat/lib/lang/ro.php deleted file mode 100644 index 8e6d6418f..000000000 --- a/library/ajaxchat/chat/lib/lang/ro.php +++ /dev/null @@ -1,124 +0,0 @@ - \ No newline at end of file diff --git a/library/ajaxchat/chat/lib/lang/ru.php b/library/ajaxchat/chat/lib/lang/ru.php deleted file mode 100644 index ac86531dc..000000000 --- a/library/ajaxchat/chat/lib/lang/ru.php +++ /dev/null @@ -1,125 +0,0 @@ - \ No newline at end of file diff --git a/library/ajaxchat/chat/lib/lang/sk.php b/library/ajaxchat/chat/lib/lang/sk.php deleted file mode 100644 index fae99a785..000000000 --- a/library/ajaxchat/chat/lib/lang/sk.php +++ /dev/null @@ -1,124 +0,0 @@ - \ No newline at end of file diff --git a/library/ajaxchat/chat/lib/lang/sl.php b/library/ajaxchat/chat/lib/lang/sl.php deleted file mode 100644 index 6e4941532..000000000 --- a/library/ajaxchat/chat/lib/lang/sl.php +++ /dev/null @@ -1,124 +0,0 @@ - \ No newline at end of file diff --git a/library/ajaxchat/chat/lib/lang/sr.php b/library/ajaxchat/chat/lib/lang/sr.php deleted file mode 100644 index a14ba5512..000000000 --- a/library/ajaxchat/chat/lib/lang/sr.php +++ /dev/null @@ -1,124 +0,0 @@ - \ No newline at end of file diff --git a/library/ajaxchat/chat/lib/lang/sv.php b/library/ajaxchat/chat/lib/lang/sv.php deleted file mode 100644 index 87f03a0ce..000000000 --- a/library/ajaxchat/chat/lib/lang/sv.php +++ /dev/null @@ -1,124 +0,0 @@ - \ No newline at end of file diff --git a/library/ajaxchat/chat/lib/lang/th.php b/library/ajaxchat/chat/lib/lang/th.php deleted file mode 100644 index 7ed3b1ef0..000000000 --- a/library/ajaxchat/chat/lib/lang/th.php +++ /dev/null @@ -1,124 +0,0 @@ - \ No newline at end of file diff --git a/library/ajaxchat/chat/lib/lang/tr.php b/library/ajaxchat/chat/lib/lang/tr.php deleted file mode 100644 index 00f7dfaa6..000000000 --- a/library/ajaxchat/chat/lib/lang/tr.php +++ /dev/null @@ -1,124 +0,0 @@ - \ No newline at end of file diff --git a/library/ajaxchat/chat/lib/lang/uk.php b/library/ajaxchat/chat/lib/lang/uk.php deleted file mode 100644 index a7d80c16b..000000000 --- a/library/ajaxchat/chat/lib/lang/uk.php +++ /dev/null @@ -1,124 +0,0 @@ - \ No newline at end of file diff --git a/library/ajaxchat/chat/lib/lang/zh-tw.php b/library/ajaxchat/chat/lib/lang/zh-tw.php deleted file mode 100644 index d39fe6b14..000000000 --- a/library/ajaxchat/chat/lib/lang/zh-tw.php +++ /dev/null @@ -1,123 +0,0 @@ - diff --git a/library/ajaxchat/chat/lib/lang/zh.php b/library/ajaxchat/chat/lib/lang/zh.php deleted file mode 100644 index 1d18f0bc0..000000000 --- a/library/ajaxchat/chat/lib/lang/zh.php +++ /dev/null @@ -1,124 +0,0 @@ - \ No newline at end of file diff --git a/library/ajaxchat/chat/lib/template/loggedIn.html b/library/ajaxchat/chat/lib/template/loggedIn.html deleted file mode 100644 index 16a75ebe9..000000000 --- a/library/ajaxchat/chat/lib/template/loggedIn.html +++ /dev/null @@ -1,387 +0,0 @@ - - - - - - - [LANG]title[/LANG] - - [STYLE_SHEETS/] - - - - - - - - - - -
    -
    -

    [LANG]title[/LANG]

    -
    -
    - - - - - - - -
    -
    - -
    -
    - -
    -
    - 0/[MESSAGE_TEXT_MAX_LENGTH/] - -
    -
    -
    - - - - - - - - -
    - -
    - - - - - -
    -
    -

    [LANG]onlineUsers[/LANG]

    -
    -
    - - - - -
    -
    - - - \ No newline at end of file diff --git a/library/ajaxchat/chat/lib/template/loggedOut.html b/library/ajaxchat/chat/lib/template/loggedOut.html deleted file mode 100644 index ba8a8a4a9..000000000 --- a/library/ajaxchat/chat/lib/template/loggedOut.html +++ /dev/null @@ -1,78 +0,0 @@ - - - - - - - [LANG]title[/LANG] - - [STYLE_SHEETS/] - - - - - - - - -
    -
    -

    [LANG]title[/LANG]

    -
    -
    -
    - - -

    -
    -

    -
    -

    -
    -

    -
    -
    -
    * [LANG]registeredUsers[/LANG]
    -
    -
    -
    [ERROR_MESSAGES/]
    - - -
    - - - \ No newline at end of file diff --git a/library/ajaxchat/chat/lib/template/logs.html b/library/ajaxchat/chat/lib/template/logs.html deleted file mode 100644 index d0b9162a9..000000000 --- a/library/ajaxchat/chat/lib/template/logs.html +++ /dev/null @@ -1,276 +0,0 @@ - - - - - - - [LANG]logsTitle[/LANG] - - [STYLE_SHEETS/] - - - - - - - - - - -
    -
    -

    [LANG]logsTitle[/LANG]

    -
    -
    - - - - - - - - - - - - - -
    - -
    -
    - -
    -
    - -
    -
    - - - -
    - - - -
    -
    - - - \ No newline at end of file diff --git a/library/ajaxchat/chat/lib/template/shoutbox.html b/library/ajaxchat/chat/lib/template/shoutbox.html deleted file mode 100644 index 5f2de9981..000000000 --- a/library/ajaxchat/chat/lib/template/shoutbox.html +++ /dev/null @@ -1,60 +0,0 @@ -
    - - - - - - -
    -
    - -
    - - - -
    -
    diff --git a/library/ajaxchat/chat/license.txt b/library/ajaxchat/chat/license.txt deleted file mode 100644 index 618f9a318..000000000 --- a/library/ajaxchat/chat/license.txt +++ /dev/null @@ -1,28 +0,0 @@ -Modified MIT License (MIT) - -Copyright (c) 2013 blueimp.net - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. - -The above license does not apply to files included in the AJAX Chat project -which fall under other licenses. Such files are provided with their own -license text included beside or within the files themselves. -The presence of this modified MIT license in AJAX Chat does NOT supersede -the licenses applying to those files. You many NOT redistribute this project -or included files in a way that conflicts with their respective licenses. \ No newline at end of file diff --git a/library/ajaxchat/chat/readme.html b/library/ajaxchat/chat/readme.html deleted file mode 100644 index 145e188d3..000000000 --- a/library/ajaxchat/chat/readme.html +++ /dev/null @@ -1,436 +0,0 @@ - - - - - AJAX Chat Readme - - - - - -
    - -

    AJAX Chat - - v 0.8.7 standalone ( blueimp.net/ajax/ ) - -

    - - - -

    This is the standalone version of blueimp's AJAX Chat designed to run on its own, without another web application.
    -If you want to integrate AJAX Chat with one of the forums we support, go back and choose the right version.
    -This version is good for customizing your own integration, or using on its own.

    - -

    - AJAX stands for "Asynchronous JavaScript and XML".
    - The AJAX Chat client (your browser) uses JavaScript to query the web server for updates.
    - Instead of delivering a complete HTML page only updated data is sent in XML format.
    - By using JavaScript the chat page can be updated without having to reload the whole page.
    - PHP is used to communicate with the database and authenticate users. -

    - -

    Requirements

    -
    - - - - - - - - - -
    Server-SideClient-Side
    - PHP >= 5
    - MySQL >= 4
    - Ruby >= 1.8 (optional) -
    - Enabled JavaScript
    - Enabled Cookies
    - Flash Plugin >= 9 (optional) -
    -
    - -

    Installation

    -
    -

    Download your preferred version of AJAX Chat and unzip the file on your computer.

    -

    Before You Begin

    -
    -

    - In order to edit PHP files you will need a good text editor. You should not use Windows notepad, wordpad, or Microsoft Word to edit PHP files. These programs will add something called a byte-order-mark (BOM) to the files and this may prevent chat from functioning properly. - We recommend using Notepad ++ ( http://notepad-plus-plus.org ) for editing all files. It also has the benefit of color-coding your files so you can edit them more easily.
    - If you get an error message like "Cannot modify header information - headers already sent" it is likely because you have used one of the above programs to edit files. -

    -
    - -

    Configure Database Settings

    -
    -

    - The first and most important thing you need to do is tell AJAX Chat how to connect to your database. This, and all core settings must be located inside the file lib/config.php.
    - You need to create this file.
    - An example config.php file can be found in lib/config.php.example that shipped with chat.
    - Duplicate this file and save it as config.php (or just delete .example from the end of the file name) and then fill out at least the following four fields in the file:

    -

    - $config['dbConnection']['host'] = 'your_database_hostname';
    - $config['dbConnection']['user'] = 'your_database_username';
    - $config['dbConnection']['pass'] = 'your_database_password';
    - $config['dbConnection']['name'] = 'your_database_name';
    -

    -

    Sufficed to say you need this information. Talk to your hosting provider if you don't know.

    -

    In most cases, chat will function with only these fields filled out and you can proceed to the next step.
    -

    -

    If your host does not use mysqli you will need to change the connection type field:
    - $config['dbConnection']['type'] = null;
    - If this is set to "null" it defaults to "mysqli" if existing, else to "mysql". In most cases this field can be left as null.
    -
    - You can reference an existing database connection link or object by changing:
    - $config['dbConnection']['link'] = null;
    - If this is set to null, a new database connection is created.

    -
    - -

    Choose Your Channel Settings

    -
    -

    Edit the file lib/data/channels.php.
    - We have provided you with two sample channels, named public and private. You can add your own, or leave it as-is.
    - Channels follow the following format: -
    - $channels[channel id] = 'channel name'; - Each channel must have a unique channel id number and a unique name.
    - Whitespace in the channel names will be converted to the underscore "_".

    -
    - -

    Add Your Users

    -
    -

    Edit users in lib/data/users.php.
    - Users follow the following format: -

    -

    $users[user id] = array();
    - $users[user id]['userRole'] = AJAX_CHAT_ROLE;
    - $users[user id]['userName'] = 'user name';
    - $users[user id]['password'] = 'user password';
    - $users[user id]['channels'] = array(allowed channel ids);

    - Each user must have a unique user id number and a unique name.
    - The first user in the list (user id 0) is used for the guest user settings. All guest users will have access to the channels set for this user and the user role AJAX_CHAT_GUEST.
    - Registered users can have the user roles AJAX_CHAT_USER, AJAX_CHAT_MODERATOR or AJAX_CHAT_ADMIN. (this is case sensitive, type it exactly)
    - The list of channels a user has access to can be set for each user individually. Channel id's are separated by commas. eg: array(0,1,23); allows channels 0, 1 and 23.
    - Whitespace in the user names will be converted to the underscore "_".

    -
    - -

    Upload to Your Server

    -
    -

    Upload the chat folder to your server somewhere under your document root:
    - e.g. http://example.org/path/to/chat/

    -
    -

    Create the Database Tables

    -
    -

    There are two options available to you to create the database. The first, and usually the easiest option, is to run the installation script included with AJAX Chat. Alternatively, you may use a database tool like PHPMyAdmin to manually create the tables.

    -
      -
    1. To use the installation script, visit the following URL in your browser:
      - http://example.org/path/to/chat/install.php
      - Where - "http://example.org/path/to/chat/" is the real URL to your chat directory.
    2. -
    3. To install it manually using PHPMyAdmin or a similar tool, copy the contents of the chat.sql file and run it as a query.
    4. -
    -

    Either of these methods will create the tables your database needs to store chat messages and other information.

    -
    - -

    Delete the Installation Script

    -
    -

    Delete the file install.php from the chat directory on your server. You may also delete the file chat.sql.

    -
    - -

    Congradulation! You Are Winner!

    -
    -

    Yay! You're done! To test your chat, navigate to your chat URL in a browser: http://example.org/path/to/chat/index.php
    -
    You are now free to customize chat to further suit your needs.

    -
    -
    - -

    Configuring and Customizing

    -
    -

    Configuration Files

    -
    -

    AJAX Chat is fully customizable and contains two configuration files:

    -
      -
    1. lib/config.php: This file contains the core configuration options for chat. Essential options for configuring the database, security, available languages, etc, are found here.
    2. -
    3. js/config.js: This file contains client side settings that change your users' default options in chat. Many of these settings can be changed by users in their options but some (like the refresh rate) cannot.
    4. -
    -

    Both of these files are well commented with information on what the settings mean.

    -
    - -

    Customizing the Layout

    -
    -

    The layout of AJAX Chat is fully customizable by using CSS (Cascaded Style Sheets).
    - AJAX Chat comes with a predefined set of styles. To add your own style, do the following:

    -
      -
    1. Add a new CSS file (e.g. mystyle.css) by copying one of the existing styles from the CSS directory.
    2. -
    3. Edit your file (css/mystyle.css) and adjust the CSS settings to your liking.
    4. -
    5. Add the name of your style without file extension to the available styles in lib/config.php:
      - // Available styles:
      - $config['styleAvailable'] = array('mystyle','beige','black','grey');
      - // Default style:
      - $config['styleDefault'] = 'mystyle';
    6. -
    -

    To further customize the layout you can adjust the template files in lib/template/.

    -

    Make sure you are creating valid XHTML, else you will produce errors in modern browsers.
    - This is due to the page content-type served as "application/xhtml+xml".
    - Using this content-type improves performance when manipulating the Document Object Model (DOM).

    -

    If for some reason you cannot create valid XHTML you can force a HTML content-type.
    - Just edit lib/config.php and set the following option:

    -

    $config['contentType'] = 'text/html';

    -
    - -

    Adjusting the Language Settings

    -
    -

    AJAX Chat comes with two language file directories:

    -
      -
    1. js/lang/: This directory contains the language files used for the chat messages localization. These are JavaScript files with the extension ".js".
    2. -
    3. lib/lang/: This directory contains the language files used for the template output. These are PHP files with the extension ".php".
    4. -
    -

    Many languages are already included with the download and you can customize them by editing these files.
    - For each language, you need a file in both of these directories, with the language code as file name (such as en.js and en.php)..
    - The language code is used following the ISO 639 standards.

    -

    The files for the english (language code "en") localization are js/lang/en.js and lib/lang/en.php.

    -

    If you create your own localization, you must put the files in the correct folders and then make two changes to config.php:

    -
      -
    1. Add the language code (this must match the filename you chose for the language. Remember to use commas correctly to separate multiple language codes):
      - $config['langAvailable'] = array('en');
    2. -
    3. Add the language name (this is what users see in the dropdown menu to choose the language):
      - $config['langNames'] = array('en'=>'English');
    4. -
    -

    To avoid errors, you should follow these rules:

    -
      -
    1. Make sure you encode your localization files in UTF-8 (without Byte-order mark).
    2. -
    3. Don't use HTML entities in your localization files.
    4. -
    5. Don't remove any "%s" inside the JavaScript language files - these are filled with dynamic data.
    6. -
    -
    - -

    Adding Features

    -
    -

    AJAX Chat is designed with numerous hooks and overrides available to improve core functionality without requiring you to edit the core files. - With an intermediate understading of PHP and javascript you can modify your chat to suit your needs.

    -

    Have a look through a few examples available on the wiki: - https://github.com/Frug/AJAX-Chat/wiki/General-modifications -

    -
    - -
    - -

    Logs

    -
    -

    Accessing the Logs

    -
    -

    By default, AJAX Chat stores all chat messages in the database.
    - To access the logs you have to add the GET parameter view=logs to your chat url (add ?view=logs to the end of the url):

    -

    e.g. http://example.org/path/to/chat/?view=logs

    -

    If you are not already logged in, you have to login as administrator to access the logs.

    -

    The log view enables you to monitor the latest chat messages on all channels.
    - It is also possible to view the logs of private rooms and private messages.
    - You have the option to filter the logs by date, time and search strings.

    -

    The search filter accepts MySQL style regular expressions as described here: http://dev.mysql.com/doc/refman/5.1/en/regexp.html
    - You can search for IPs, using the following syntax: ip=127.0.0.1

    -
    -
    - -

    Shoutbox

    -
    -

    AJAX Chat is also usable as shoutbox - this is a short guide on how to set it up:

    - -

    Shoutbox Stylesheet

    -
    -

    Add the following line to the stylesheet (CSS) of all pages displaying the shoutbox:

    -

    @import url("http://example.org/path/to/chat/css/shoutbox.css");

    -

    Replace http://example.org/path/to/chat/ with the URL to the chat.
    - Modify css/shoutbox.css to your liking.

    -
    - -

    Shoutbox Function

    -
    -

    Add the following function to your PHP code:

    - -
    -<?php
    -function getShoutBoxContent() {
    -// URL to the chat directory:
    -if(!defined('AJAX_CHAT_URL')) {
    -	define('AJAX_CHAT_URL', './chat/');
    -}
    -
    -// Path to the chat directory:
    -if(!defined('AJAX_CHAT_PATH')) {
    -	define('AJAX_CHAT_PATH', realpath(dirname($_SERVER['SCRIPT_FILENAME']).'/chat').'/');
    -}
    -
    -// Validate the path to the chat:
    -if(@is_file(AJAX_CHAT_PATH.'lib/classes.php')) {
    -	
    -	// Include Class libraries:
    -	require_once(AJAX_CHAT_PATH.'lib/classes.php');
    -	
    -	// Initialize the shoutbox:
    -	$ajaxChat = new CustomAJAXChatShoutBox();
    -	
    -	// Parse and return the shoutbox template content:
    -	return $ajaxChat->getShoutBoxContent();
    -}
    -
    -return null;
    -}
    -?>
    -
    - -

    Make sure AJAX_CHAT_URL and AJAX_CHAT_PATH point to the chat directory.

    -
    - -

    Shoutbox Output

    -
    -

    Display the shoutbox content using the shoutbox function:

    -

    <div style="width:200px;"><?php echo getShoutBoxContent(); ?></div>

    -
    -
    - -

    Socket Server

    -
    -

    Using the AJAX technology alone the chat clients have to permanently pull updates from the server.
    - This is due to AJAX being a web technology and HTTP being a stateless protocol.
    - Events pushed from server-side need a permanent or long-lasting socket connection between clients and server.
    - This requires either a custom HTTP server (called "comet") or another custom socket server.

    -

    AJAX Chat uses a JavaScript-to-Flash bridge to establish a permanent socket connection from client side.
    - The JavaScript-to-Flash bridge requires a Flash plugin >= 9 installed on the user browser.
    - Clients without this requirement will fall back to pull the server for updates.

    -

    This part of the setup is OPTIONAL and meant for experienced users only.

    -

    Installation

    -
    -

    The socket server coming with AJAX Chat is implemented in Ruby.
    - You need to be able to run a Ruby script as a service to run the socket server.
    - To be able to start the service, the script files in the socket/ directory have to be executable:

    -

    $ chmod +x server
    - $ chmod +x server.rb

    -

    "server" is a simple bash script to start and stop a service.
    - "server.rb" is the ruby socket server script.
    - "server.conf" is a configuration file - each setting is explained with a comment.

    -

    To start the service, execute the "server" script with the parameter "start":

    -

    $ ./server start

    -

    This will create two additional files:

    -

    "server.pid" contains the process id of the service.
    - "server.log" is filled with the socket server log.

    -

    To monitor the socket server logs, you can use the "tail" command included in most GNU/Linux distributions:

    -

    $ tail -f server.log

    -

    By default only errors and start/stop of the server are logged.
    - To get more detailed logs configure the log level by editing the configuration file.

    -

    To stop the service, execute the "server" script with the parameter "stop":

    -

    $ ./server stop

    -

    If the socket server is running, you have to enable the following option in lib/config.php:

    -

    $config['socketServerEnabled'] = true;
    -
    - This tells the server-side chat script to broadcast chat messages via the socket server.
    - Chat clients will establish a permanent connection to the socket server to listen for chat messages.

    -

    By default only local clients (127.0.0.1,::1) may broadcast messages.
    - Clients allowed to broadcast messages may also handle the channel authentication.
    - If your socket server is running on another host you should set the broadcast_clients option to the chat server IP.

    -

    Using the socket server increases response time while improving server performance at the same time.

    -
    - -

    Flash Permissions

    -
    -

    - Since Flash 9.0.115.0 and all Flash 10 versions, permissions for creating sockets using Flash have changed.
    - Now an explicit permission (using xml-syntax) is required for creating socket connections.
    - In the current state, socket server won't work with the newest Flash versions.
    - You will get a "Flash security error" in the browser. -

    -

    - A solution is to use a policy-files server which will listen to connections in port 843 in the server.
    - Each time a client tries to connect to the chat, the Flash client will request the policy authorization to the server.
    - The policy-files server is downloadable from http://ammonlauritzen.com/FlashPolicyService-09b.zip
    - It works with FF3 and IE7 (not yet tested in other browsers). -

    -

    A more detailed explanation can be found here:

    -

    * http://ammonlauritzen.com/blog/2007/12/13/new-flash-security-policies/
    - * http://ammonlauritzen.com/blog/2008/04/22/flash-policy-service-daemon/
    -

    -

    Official Adobe documentation:

    -

    * http://www.adobe.com/devnet/flashplayer/articles/fplayer9_security.html
    - * http://www.adobe.com/devnet/flashplayer/articles/fplayer9_security_04.html

    -
    -

     

    -
    - -

    Support

    -
    -

    - Please do not email the devs with support questions.
    - For further documentation and some examples, check out our github wiki.
    - For general support questions use our google group.
    - For specific bug reports and a list of pending issues view our github project.
    -

    -
    - - -
    -

    - Your donations contribute to the growth and development of this project and are always appreciated.
    -

    - - - - -
    - I'm on gittip at https://www.gittip.com/Frug -

    -
    - -

    License

    -
    -

    Bluimp's AJAX Chat is released under a Modified MIT License.

    -

    You should also find this license included with your download of this project.

    -
    - -

    back to top

    - -
    - - diff --git a/library/ajaxchat/chat/socket/.htaccess b/library/ajaxchat/chat/socket/.htaccess deleted file mode 100644 index 91e386dc9..000000000 --- a/library/ajaxchat/chat/socket/.htaccess +++ /dev/null @@ -1,4 +0,0 @@ -AuthType Basic -AuthName "Forbidden" -AuthUserFile /dev/null -require user nobody \ No newline at end of file diff --git a/library/ajaxchat/chat/socket/server b/library/ajaxchat/chat/socket/server deleted file mode 100644 index 806b5ef74..000000000 --- a/library/ajaxchat/chat/socket/server +++ /dev/null @@ -1,71 +0,0 @@ -#!/bin/bash - -# Simple bash script to start and stop a service -# Works without access to /var/run/ or ps and pidof commands -# -# Date:: Wed, 09 Jan 2008 -# Author:: Sebastian Tschan, https://blueimp.net -# License:: GNU Affero General Public License - - -SERVICE_TITLE=Service -SERVICE_BASENAME=${0##*/} -SERVICE_DIR=${0%/$SERVICE_BASENAME} -SERVICE_COMMAND=$SERVICE_DIR/$SERVICE_BASENAME.rb -SERVICE_CONFIG=$SERVICE_DIR/$SERVICE_BASENAME.conf -SERVICE_LOG=$SERVICE_DIR/$SERVICE_BASENAME.log -SERVICE_PIDFILE=$SERVICE_DIR/$SERVICE_BASENAME.pid - - -function start -{ - if [ -f $SERVICE_PIDFILE ] - then - echo "PID file $SERVICE_PIDFILE found - $SERVICE_TITLE already running?" - else - $SERVICE_COMMAND $SERVICE_CONFIG >> $SERVICE_LOG & echo "Started $SERVICE_TITLE..." - PID=$! - echo $PID > $SERVICE_PIDFILE - fi - exit 0 -} - -function stop -{ - if [ -f $SERVICE_PIDFILE ] - then - PID=`cat $SERVICE_PIDFILE` - kill -TERM $PID - rm -f $SERVICE_PIDFILE - echo "Stopped $SERVICE_TITLE." - else - echo "PID file $SERVICE_PIDFILE not found - $SERVICE_TITLE not running?" - fi - exit 0 -} - -function main -{ - for arg in $@ - do - if [ $arg == "start" ] - then - start - elif [ $arg == "stop" ] - then - stop - else - echo "Unknown argument:" $arg - echo "Usage: $0 [start|stop]" - exit 0 - fi - done - - echo "Missing argument." - echo "Usage: $0 [start|stop]" - exit 0 -} - - -# Script execution: -main $@ \ No newline at end of file diff --git a/library/ajaxchat/chat/socket/server.conf b/library/ajaxchat/chat/socket/server.conf deleted file mode 100644 index 47c6849da..000000000 --- a/library/ajaxchat/chat/socket/server.conf +++ /dev/null @@ -1,22 +0,0 @@ - -# Server address (leave empty to bind to all available interfaces): -server_address= - -# Server port: -server_port=1935 - -# Comma-separated list of clients allowed to broadcast (allows all if empty): -broadcast_clients=127.0.0.1,::1 - -# Maximum number of clients (0 allows an unlimited number of clients): -max_clients=0 - -# Comma-separated list of domains from which downloaded Flash clients are allowed to connect (* allows all domains): -allow_access_from=* - -# Log level: -# 0 = log only errors and server start/stop -# 1 = log client connections -# 2 = log all messages but no broadcast content -# 3 = log everything -log_level=0 diff --git a/library/ajaxchat/chat/socket/server.rb b/library/ajaxchat/chat/socket/server.rb deleted file mode 100644 index c2f532c84..000000000 --- a/library/ajaxchat/chat/socket/server.rb +++ /dev/null @@ -1,400 +0,0 @@ -#!/usr/bin/env ruby - -# Simple Ruby XML Socket Server -# -# This is a a simple socket server implementation in ruby -# to communicate with flash clients via Flash XML Sockets. -# -# The socket code is based on the tutorial -# "Sockets programming in Ruby" -# by M. Tim Jones (mtj@mtjones.com). -# -# Date:: Tue, 05 Mar 2008 -# Author:: Sebastian Tschan, https://blueimp.net -# License:: GNU Affero General Public License - -# Include socket library: -require 'socket' -# Include XML libraries: -require 'rexml/document' -require 'rexml/streamlistener' - -# XML Stream Handler class used to parse chat messages: -class XMLStreamHandler - attr_reader :type,:chat_id,:user_id,:reg_id,:channel_id,:channel_ids - # Called when an opening tag (including attributes) is parsed: - def tag_start name, attrs - case name - when 'root' - # root messages are broadcast messages: - @type = :message - @chat_id = attrs['chatID'] - @channel_id = attrs['channelID'] - throw :break - when 'register' - # register messages are sent by chat clients: - @type = :register - @chat_id = attrs['chatID'] - @user_id = attrs['userID'] - @reg_id = attrs['regID'] - throw :break - when 'authenticate' - # authenticate messages are sent by the chat server client: - @type = :authenticate - @chat_id = attrs['chatID'] - @user_id = attrs['userID'] - @reg_id = attrs['regID'] - @channel_ids = Array::new - when 'channel' - # authenticate messages contain channel tags: - if @channel_ids - @channel_ids.push(attrs['id']) - else - throw :break - end - when 'policy-file-request' - # policy-file-requests are sent by flash clients for cross-domain authentication: - @type = :policy_file_request - throw :break - else - throw :break - end - end - # Called when a closing tag is parsed: - def tag_end name - if name == 'authenticate' - throw :break - end - end - def text text - # Called on text between tags - end - # Called when cdata is parsed: - alias cdata text -end - -# Socket Server class: -class SocketServer - - def initialize(config_file) - # List of configuration settings: - @config = Hash::new - # Initialize default settings: - initialize_default_properties - if config_file - # Load settings from configuration file: - load_properties_from_file(config_file) - end - # Sockets list: - @sockets = Array::new - # Clients list: - @clients = Hash::new - # Chats list, used to distinguish between different chat installations (contains channels list): - @chats = Hash::new - # Initialize server socket: - initialize_server_socket - if @server_socket - # Log server start (STDOUT.flush prevents output buffering): - puts "#{Time.now}\tServer started on Port #{@config[:server_port].to_s} ..."; STDOUT.flush - begin - # Start the server: - run - rescue SignalException - # Controlled stop: - ensure - for socket in @sockets - if socket != @server_socket - # Disconnect all clients: - handle_client_disconnection(socket, false) - end - end - @sockets = nil - @clients = nil - # Log server stop: - puts "#{Time.now}\tServer stopped."; STDOUT.flush - end - end - end - - def run - # Endless loop: - while 1 - # Blocking select call. The first three parameters are arrays of IO objects or nil. - # The last parameter is to set a timeout in seconds to force select to return - # if no event has occurred on any of the given IO object arrays. - res = select(@sockets, nil, nil, nil) - if res != nil then - # Iterate through the tagged read descriptors: - for socket in res[0] - # Received a connect to the server socket: - if socket == @server_socket then - accept_new_connection - else - # Received something on a client socket: - if socket.eof? then - # Handle client disconnection: - handle_client_disconnection(socket) - else - # Handle client input data: - handle_client_input(socket, socket.gets(@config[:eol])) - end - end - end - end - end - end - - private - - def initialize_default_properties - # Server address (empty = bind to all available interfaces): - @config[:server_address] = '' - # Server port: - @config[:server_port] = 1935 - # Comma-separated list of clients allowed to broadcast (allows all if empty): - @config[:broadcast_clients] = '' - # Defines if broadcast is sent to broadcasting client: - @config[:broadcast_self] = false - # Maximum number of clients (0 allows an unlimited number of clients): - @config[:max_clients] = 0 - # Comma-separated list of domains from which downloaded Flash clients are allowed to connect (* allows all domains): - @config[:allow_access_from] = '*' - # Defines the cross-domain-policy string sent to Flash clients as response to a policy-file-request: - @config[:cross_domain_policy] = '' - # EOL (End Of Line) character used by Flash XML Socket communication (a null-byte): - @config[:eol] = "\0" - # Log level (0 logs only errors and server start/stop, 1 logs client connections, 2 logs all messages but no broadcast content, 3 logs everything): - @config[:log_level] = 0 - end - - def load_properties_from_file(config_file) - # Open the config file and go through each line: - File.open(config_file, 'r') do |file| - file.read.each_line do |line| - # Remove trailing whitespace from the line: - line.strip! - # Get the position of the first "=": - i = line.index('=') - # Check if line is not a comment and a valid property: - if (!line.empty? && line[0] != ?# && i > 0) - # Add the configuration option to the config hash: - key = line[0..i - 1].strip - value = line[i + 1..-1].strip - # Parse boolean values: - if value.eql?('false') - @config[key.to_sym] = false - elsif value.eql?('true') - @config[key.to_sym] = true - # Parse integer numbers: - elsif value.to_i.to_s.eql?(value) - @config[key.to_sym] = value.to_i - # Parse floating point numbers: - elsif value.to_f.to_s.eql?(value) - @config[key.to_sym] = value.to_f - # Parse string values: - else - @config[key.to_sym] = value - end - end - end - end - if @config[:eol].empty? - # Use default EOL if configuration option is empty: - @config[:eol] = $/ - end - end - - def initialize_server_socket - begin - # The server socket, allowing connections from any interface and bound to the given port number: - @server_socket = TCPServer.new(@config[:server_address], @config[:server_port].to_i) - # Enable reuse of the server address (e.g. for rapid restarts of the server): - @server_socket.setsockopt(Socket::SOL_SOCKET, Socket::SO_REUSEADDR, 1) - # Add the server socket to the sockets list: - @sockets.push(@server_socket) - rescue Exception => error - # Log initialization failure: - puts "#{Time.now}\tFailed to initialize Server on Port #{@config[:server_port].to_s}: #{error}."; STDOUT.flush - end - end - - def accept_new_connection - begin - # Accept the client connection (non-blocking): - socket = @server_socket.accept_nonblock - # Retrieve IP and Port: - ip = socket.peeraddr[3] - port = socket.peeraddr[1] - # Check if we have reached the maximum number of connected clients (always accept the broadcast clients): - if @config[:max_clients].to_i == 0 || @clients.size < @config[:max_clients].to_i || !@config[:broadcast_clients].empty? && @config[:broadcast_clients].include?(ip) - # Add the accepted socket connection to the socket list: - @sockets.push(socket) - # Create a new Hash to store the client data: - client = Hash::new - client[:id] = "[#{ip}]:#{port}" - # Check if the client is allowed to broadcast: - if @config[:broadcast_clients].empty? || @config[:broadcast_clients].include?(ip) - client[:allowed_to_broadcast] = true - else - client[:allowed_to_broadcast] = false - end - # Add the client to the clients list: - @clients[socket] = client - if @config[:log_level].to_i > 0 - # Log client connection and the number of connected clients: - puts "#{Time.now}\t#{client[:id]} Connects\t(#{@clients.size} connected)"; STDOUT.flush - end - else - # Close the socket connection: - socket.close - end - rescue - # Client disconnected before the address information (IP, Port) could be retrieved. - end - end - - def handle_client_disconnection(client_socket, delete_socket=true) - # Retrieve the client ID for the current socket: - client_id = @clients[client_socket][:id] - begin - # Close the socket connection: - client_socket.close - rescue - # Rescue if closing the socket fails - end - if delete_socket - # Remove the socket from the sockets list: - @sockets.delete(client_socket) - end - # Remove the client ID from the clients list: - @clients.delete(client_socket) - if @config[:log_level].to_i > 0 - # Log client disconnection and the number of connected clients: - puts "#{Time.now}\t#{client_id} Disconnects\t(#{@clients.size} connected)"; STDOUT.flush - end - end - - def handle_client_input(client_socket, str) - # Create a new XML stream handler: - handler = XMLStreamHandler.new - begin - # As soon as the parser has found the relevant information it throws a :break symbol: - catch :break do - # Parse the given input string for XML messages: - REXML::Document.parse_stream(str, handler) - end - # The handler stores a type property to define the parsed XML message: - case handler.type - when :message - handle_broadcast_message(client_socket, handler.chat_id, handler.channel_id, str) - when :register - handle_client_registration(client_socket, handler.chat_id, handler.user_id, handler.reg_id) - when :authenticate - handle_client_authentication(client_socket, handler.chat_id, handler.user_id, handler.reg_id, handler.channel_ids) - when :policy_file_request - handle_policy_file_request(client_socket) - end - rescue Exception => error - # Rescue if parsing the client input fails and log the error message: - puts "#{Time.now}\t#{@clients[client_socket][:id]} Client Input Error:#{error.to_s.dump}"; STDOUT.flush - end - end - - def handle_broadcast_message(client_socket, chat_id, channel_id, str) - # Check if the_client is allowed to broadcast: - if @clients[client_socket][:allowed_to_broadcast] - # Check if the chat and channel have been registered: - if @chats[chat_id] && (@chats[chat_id][channel_id] || @chats[chat_id]['ALL']) - # Go through the sockets list: - @sockets.each do |socket| - # Skip the server socket and skip the the client socket if broadcast is not to be sent to self: - if socket != @server_socket && (@config[:broadcast_self] || socket != client_socket) - # Only write to clients registered to the given channel or to the "ALL" channel: - if @chats[chat_id]['ALL'] - reg_id = @chats[chat_id]['ALL'][@clients[socket][:user_id]] - end - if !reg_id && @chats[chat_id][channel_id] - reg_id = @chats[chat_id][channel_id][@clients[socket][:user_id]] - end - # Check if the reg_id stored for the given channel and user_id matches the clients reg_id: - if reg_id && reg_id.eql?(@clients[socket][:reg_id]) - begin - # Write the broadcast message on the socket connection: - socket.write(str) - rescue - # Rescue if writing to the socket fails - end - end - end - end - end - if @config[:log_level].to_i > 2 - # Log the message sent by the broadcast client: - puts "#{Time.now}\t#{@clients[client_socket][:id]} Chat:#{chat_id.to_s.dump} Channel:#{channel_id.to_s.dump} Message:#{str.to_s.dump}"; STDOUT.flush - elsif @config[:log_level].to_i > 1 - # Log the message sent by the broadcast client: - puts "#{Time.now}\t#{@clients[client_socket][:id]} Chat:#{chat_id.to_s.dump} Channel:#{channel_id.to_s.dump} Message"; STDOUT.flush - end - end - end - - def handle_client_registration(client_socket, chat_id, user_id, reg_id) - # Save the chat_id, use_id and reg_id as client properties: - @clients[client_socket][:chat_id] = chat_id - @clients[client_socket][:user_id] = user_id - @clients[client_socket][:reg_id] = reg_id - if @config[:log_level].to_i > 1 - # Log the client registration: - puts "#{Time.now}\t#{@clients[client_socket][:id]} Chat:#{chat_id.to_s.dump} User:#{user_id.to_s.dump} Reg:#{reg_id.to_s.dump}"; STDOUT.flush - end - end - - def handle_client_authentication(client_socket, chat_id, user_id, reg_id, channel_ids) - # Only the broadcast clients may send authentication messages: - if @clients[client_socket][:allowed_to_broadcast] - # Create a new chat item if not found for the given chat_id: - if !@chats[chat_id] - @chats[chat_id] = Hash.new - end - # Go through the list of channels for the given chat: - @chats[chat_id].each_key do |key| - # Delete all items for the given user on all channels of the given chat: - @chats[chat_id][key].delete(user_id) - # If the chat channel is empty, delete the channel item: - if @chats[chat_id][key].size == 0 - @chats[chat_id].delete(key) - end - end - # Go through the list of authenticated channel_ids: - channel_ids.each do |channel_id| - # Create a new channel item if not found for the current channel_id (and the given chat_id): - if !@chats[chat_id][channel_id] - @chats[chat_id][channel_id] = Hash.new - end - # Add a user item of the given user_id with the given reg_id to the current channel: - @chats[chat_id][channel_id][user_id] = reg_id - end - if @config[:log_level].to_i > 1 - # Log the client authentication: - puts "#{Time.now}\t#{@clients[client_socket][:id]} Chat:#{chat_id.to_s.dump} User:#{user_id.to_s.dump} Auth:#{reg_id.to_s.dump} Channels:#{channel_ids.join(',').dump}"; STDOUT.flush - end - end - end - - def handle_policy_file_request(client_socket) - begin - # Write the cross-domain-policy to the Flash client: - client_socket.write(@config[:cross_domain_policy]+@config[:eol]) - rescue - # Rescue if writing to the socket fails - end - if @config[:log_level].to_i > 1 - # Log the policy-file-request: - puts "#{Time.now}\t#{@clients[client_socket][:id]} Policy-File-Request"; STDOUT.flush - end - end - -end - -# Start the socket server with the first command line argument as configuration file: -SocketServer.new($*[0]) \ No newline at end of file diff --git a/library/ajaxchat/chat/sounds/index.html b/library/ajaxchat/chat/sounds/index.html deleted file mode 100644 index e69de29bb..000000000 diff --git a/library/ajaxchat/chat/sounds/license.txt b/library/ajaxchat/chat/sounds/license.txt deleted file mode 100644 index d4a756fe8..000000000 --- a/library/ajaxchat/chat/sounds/license.txt +++ /dev/null @@ -1,28 +0,0 @@ -The sounds used for this project have been created by - -==================================== -Stuart Duffield (Soundsnap.com user) -==================================== - -http://soundsnap.com/user/21 - - -The sounds are licensed under the - -================= -Soundsnap Licence -================= - -http://soundsnap.com/licence - -You are Free: - -* To remix or transform the sounds in any way -* To copy, distribute and transmit the sounds -* To use the sounds in any music, film, video game, website etc. -whether commercial or not, without paying royalties or other fees - -You Cannot: - -* Make commercial distribution of these sounds 'as they are'. -For example, you cannot download and sell them as part of a CD library \ No newline at end of file diff --git a/library/ajaxchat/chat/sounds/sound_1.mp3 b/library/ajaxchat/chat/sounds/sound_1.mp3 deleted file mode 100644 index f9526e1ca..000000000 Binary files a/library/ajaxchat/chat/sounds/sound_1.mp3 and /dev/null differ diff --git a/library/ajaxchat/chat/sounds/sound_2.mp3 b/library/ajaxchat/chat/sounds/sound_2.mp3 deleted file mode 100644 index 73bdcd2b1..000000000 Binary files a/library/ajaxchat/chat/sounds/sound_2.mp3 and /dev/null differ diff --git a/library/ajaxchat/chat/sounds/sound_3.mp3 b/library/ajaxchat/chat/sounds/sound_3.mp3 deleted file mode 100644 index 1c765773a..000000000 Binary files a/library/ajaxchat/chat/sounds/sound_3.mp3 and /dev/null differ diff --git a/library/ajaxchat/chat/sounds/sound_4.mp3 b/library/ajaxchat/chat/sounds/sound_4.mp3 deleted file mode 100644 index d2f66baff..000000000 Binary files a/library/ajaxchat/chat/sounds/sound_4.mp3 and /dev/null differ diff --git a/library/ajaxchat/chat/sounds/sound_5.mp3 b/library/ajaxchat/chat/sounds/sound_5.mp3 deleted file mode 100644 index 0d5a5f299..000000000 Binary files a/library/ajaxchat/chat/sounds/sound_5.mp3 and /dev/null differ diff --git a/library/ajaxchat/chat/sounds/sound_6.mp3 b/library/ajaxchat/chat/sounds/sound_6.mp3 deleted file mode 100644 index df6007948..000000000 Binary files a/library/ajaxchat/chat/sounds/sound_6.mp3 and /dev/null differ diff --git a/library/ajaxchat/chat/src/EmptySwf.as b/library/ajaxchat/chat/src/EmptySwf.as deleted file mode 100644 index 373c5e375..000000000 --- a/library/ajaxchat/chat/src/EmptySwf.as +++ /dev/null @@ -1,32 +0,0 @@ -/* -Copyright 2006 Adobe Systems Incorporated - -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), -to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, -and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE -OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -*/ - -package { - import flash.display.MovieClip; - import bridge.FABridge; - - public class EmptySwf extends MovieClip { - - private var externalBridge:FABridge; - - public function EmptySwf() { - super(); - externalBridge = new FABridge(); - externalBridge.rootObject = this; - } - } -} diff --git a/library/ajaxchat/chat/src/FABridge.as b/library/ajaxchat/chat/src/FABridge.as deleted file mode 100644 index d03dba01a..000000000 --- a/library/ajaxchat/chat/src/FABridge.as +++ /dev/null @@ -1,943 +0,0 @@ -/* -Copyright � 2006 Adobe Systems Incorporated - -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), -to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, -and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE -OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -*/ - - -/* - * The Bridge class, responsible for navigating JS instances - */ -package bridge -{ - -/* - * imports - */ -import flash.external.ExternalInterface; -import flash.utils.Timer; -import flash.events.*; -import flash.display.DisplayObject; -import flash.system.ApplicationDomain; -import flash.utils.Dictionary; -import flash.utils.setTimeout; - -import mx.collections.errors.ItemPendingError; -import mx.core.IMXMLObject; - -import flash.utils.getQualifiedClassName; -import flash.utils.describeType; -import flash.events.TimerEvent; - -/** - * The FABridge class, responsible for proxying AS objects into javascript - */ -public class FABridge extends EventDispatcher implements IMXMLObject -{ - - //holds a list of stuff to call later, to break the recurrence of the js <> as calls - //you must use the full class name, as returned by the getQualifiedClassName() function - public static const MethodsToCallLater:Object = new Object(); - MethodsToCallLater["mx.collections::ArrayCollection"]="refresh,removeItemAt"; - - public static const EventsToCallLater:Object = new Object(); - EventsToCallLater["mx.data.events::UnresolvedConflictsEvent"]="true"; - EventsToCallLater["mx.events::PropertyChangeEvent"]="true"; - - public static const INITIALIZED:String = "bridgeInitialized"; - - // constructor - public function FABridge() - { - super(); - initializeCallbacks(); - } - - // private vars - - /** - * stores a cache of descriptions of AS types suitable for sending to JS - */ - private var localTypeMap:Dictionary = new Dictionary(); - - /** - * stores an id-referenced dictionary of objects exported to JS - */ - private var localInstanceMap:Dictionary = new Dictionary(); - - /** - * stores an id-referenced dictionary of functions exported to JS - */ - private var localFunctionMap:Dictionary = new Dictionary(); - - /** - * stores an id-referenced dictionary of proxy functions imported from JS - */ - private var remoteFunctionCache:Dictionary = new Dictionary(); - - /** - * stores a list of custom serialization functions - */ - private var customSerializersMap:Dictionary = new Dictionary(); - - /** - * stores a map of object ID's and their reference count - */ - private var refMap:Dictionary = new Dictionary(); - /** - * a local counter for generating unique IDs - */ - private var nextID:Number = 0; - - private var lastRef:int; - - /* values that can't be serialized natively across the bridge are packed and identified by type. - These constants represent different serialization types */ - public static const TYPE_ASINSTANCE:uint = 1; - public static const TYPE_ASFUNCTION:uint = 2; - public static const TYPE_JSFUNCTION:uint = 3; - public static const TYPE_ANONYMOUS:uint = 4; - - private var _initChecked:Boolean = false; - - // properties - - //getters and setters for the main component in the swf - the root - public function get rootObject():DisplayObject {return _rootObject;} - public function set rootObject(value:DisplayObject):void - { - _rootObject = value; - checkInitialized(); - } - - /** - * the bridge name - */ - public var bridgeName:String; - private var _registerComplete:Boolean = false; - - /** - * increment the reference count for an object being passed over the bridge - */ - public function incRef(objId:int):void - { - if(refMap[objId] == null) { - //the object is being created; we now add it to the map and set its refCount = 1 - refMap[objId] = 1; - } else { - refMap[objId] = refMap[objId] +1; - } - } - - /** - * when an object has been completely passed to JS its reference count is decreased with 1 - */ - public function releaseRef(objId:int):void - { - if(refMap[objId] != null) - { - var newRefVal:int = refMap[objId] - 1; - // if the object exists in the referenceMap and its count equals or has dropped under 0 we clean it up - if(refMap[objId] != null && newRefVal <= 0) - { - delete refMap[objId]; - delete localInstanceMap[objId]; - } - else - { - refMap[objId] = newRefVal; - } - } - } - - /** - * attaches the callbacks to external interface - */ - public function initializeCallbacks():void - { - if (ExternalInterface.available == false) - { - return; - } - - ExternalInterface.addCallback("getRoot", js_getRoot); - ExternalInterface.addCallback("getPropFromAS", js_getPropFromAS); - ExternalInterface.addCallback("setPropInAS", js_setPropertyInAS); - ExternalInterface.addCallback("invokeASMethod", js_invokeMethod); - ExternalInterface.addCallback("invokeASFunction", js_invokeFunction); - ExternalInterface.addCallback("releaseASObjects", js_releaseASObjects); - ExternalInterface.addCallback("create", js_create); - ExternalInterface.addCallback("releaseNamedASObject",js_releaseNamedASObject); - ExternalInterface.addCallback("incRef", incRef); - ExternalInterface.addCallback("releaseRef", releaseRef); - } - - private var _rootObject:DisplayObject; - - private var _document:DisplayObject; - - /** - * called to check whether the bridge has been initialized for the specified document/id pairs - */ - public function initialized(document:Object, id:String):void - { - _document = (document as DisplayObject); - - if (_document != null) - { - checkInitialized(); - } - } - - private function get baseObject():DisplayObject - { - return (rootObject == null)? _document:rootObject; - } - - - private function checkInitialized():void - { - if(_initChecked== true) - { - return; - } - _initChecked = true; - - // oops! timing error. Player team is working on it. - var t:Timer = new Timer(200,1); - t.addEventListener(TimerEvent.TIMER,auxCheckInitialized); - t.start(); - } - - /** - * auxiliary initialization check that is called after the timing has occurred - */ - private function auxCheckInitialized(e:Event):void - { - - var bCanGetParams:Boolean = true; - - try - { - var params:Object = baseObject.root.loaderInfo.parameters; - } - catch (e:Error) - { - bCanGetParams = false; - } - - if (bCanGetParams == false) - { - var t:Timer = new Timer(100); - var timerFunc:Function = function(e:TimerEvent):void - { - if(baseObject.root != null) - { - try - { - bCanGetParams = true; - var params:Object = baseObject.root.loaderInfo.parameters; - } - catch (err:Error) - { - bCanGetParams = false; - } - if (bCanGetParams) - { - t.removeEventListener(TimerEvent.TIMER, timerFunc); - t.stop(); - dispatchInit(); - } - } - } - t.addEventListener(TimerEvent.TIMER, timerFunc); - t.start(); - } - else - { - dispatchInit(); - } - } - - /** - * call into JS to annunce that the bridge is ready to be used - */ - private function dispatchInit(e:Event = null):void - { - if(_registerComplete == true) - { - return; - } - - if (ExternalInterface.available == false) - { - return; - } - - if (bridgeName == null) - { - bridgeName = baseObject.root.loaderInfo.parameters["bridgeName"]; - - if(bridgeName == null) - { - bridgeName = "flash"; - } - } - - _registerComplete = ExternalInterface.call("FABridge__bridgeInitialized", [bridgeName]); - dispatchEvent(new Event(FABridge.INITIALIZED)); - } - - // serialization/deserialization - - /** serializes a value for transfer across the bridge. primitive types are left as is. Arrays are left as arrays, but individual - * values in the array are serialized according to their type. Functions and class instances are inserted into a hash table and sent - * across as keys into the table. - * - * For class instances, if the instance has been sent before, only its id is passed. If This is the first time the instance has been sent, - * a ref descriptor is sent associating the id with a type string. If this is the first time any instance of that type has been sent - * across, a descriptor indicating methods, properties, and variables of the type is also sent across - */ - public function serialize(value:*, keep_refs:Boolean=false):* - { - var result:* = {}; - result.newTypes = []; - result.newRefs = {}; - - if (value is Number || value is Boolean || value is String || value == null || value == undefined || value is int || value is uint) - { - result = value; - } - else if (value is Array) - { - result = []; - for(var i:int = 0; i < value.length; i++) - { - result[i] = serialize(value[i], keep_refs); - } - } - else if (value is Function) - { - // serialize a class - result.type = TYPE_ASFUNCTION; - result.value = getFunctionID(value, true); - } - else if (getQualifiedClassName(value) == "Object") - { - result.type = TYPE_ANONYMOUS; - result.value = value; - } - else - { - // serialize a class - result.type = TYPE_ASINSTANCE; - // make sure the type info is available - var className:String = getQualifiedClassName(value); - - var serializer:Function = customSerializersMap[className]; - - // try looking up the serializer under an alternate name - if (serializer == null) - { - if (className.indexOf('$') > 0) - { - var split:int = className.lastIndexOf(':'); - if (split > 0) - { - var alternate:String = className.substring(split+1); - serializer = customSerializersMap[alternate]; - } - } - } - - if (serializer != null) - { - return serializer.apply(null, [value, keep_refs]); - } - else - { - if (retrieveCachedTypeDescription(className, false) == null) - { - try - { - result.newTypes.push(retrieveCachedTypeDescription(className, true)); - } - catch(err:Error) - { - var interfaceInfo:XMLList = describeType(value).implementsInterface; - for each (var interf:XML in interfaceInfo) - { - className = interf.@type.toString(); - if (retrieveCachedTypeDescription(className, false) == null){ - result.newTypes.push(retrieveCachedTypeDescription(className, true)); - } //end if push new data type - - } //end for going through interfaces - var baseClass:String = describeType(value).@base.toString(); - if (retrieveCachedTypeDescription(baseClass, false) == null){ - result.newTypes.push(retrieveCachedTypeDescription(baseClass, true)); - } //end if push new data type - } - } - - // make sure the reference is known - var objRef:Number = getRef(value, false); - var should_keep_ref:Boolean = false; - if (isNaN(objRef)) - { - //create the reference if necessary - objRef = getRef(value, true); - should_keep_ref = true; - } - - result.newRefs[objRef] = className; - //trace("serializing new reference: " + className + " with value" + value); - - //the result is a getProperty / invokeMethod call. How can we know how much you will need the object ? - if (keep_refs && should_keep_ref) { - incRef(objRef); - } - result.value = objRef; - } - } - return result; - } - - /** - * deserializes a value passed in from javascript. See serialize for details on how values are packed and - * unpacked for transfer across the bridge. - */ - public function deserialize(valuePackage:*):* - { - var result:*; - if (valuePackage is Number || valuePackage is Boolean || valuePackage is String || valuePackage === null || valuePackage === undefined || valuePackage is int || valuePackage is uint) - { - result = valuePackage; - } - else if(valuePackage is Array) - { - result = []; - for (var i:int = 0; i < valuePackage.length; i++) - { - result[i] = deserialize(valuePackage[i]); - } - } - else if (valuePackage.type == FABridge.TYPE_JSFUNCTION) - { - result = getRemoteFunctionProxy(valuePackage.value, true); - } - else if (valuePackage.type == FABridge.TYPE_ASFUNCTION) - { - throw new Error("as functions can't be passed back to as yet"); - } - else if (valuePackage.type == FABridge.TYPE_ASINSTANCE) - { - result = resolveRef(valuePackage.value); - } - else if (valuePackage.type == FABridge.TYPE_ANONYMOUS) - { - result = valuePackage.value; - } - return result; - } - - public function addCustomSerialization(className:String, serializationFunction:Function):void - { - customSerializersMap[className] = serializationFunction; - } - - - // type management - - /** - * retrieves a type description for the type indicated by className, building one and caching it if necessary - */ - public function retrieveCachedTypeDescription(className:String, createifNecessary:Boolean):Object - { - if(localTypeMap[className] == null && createifNecessary == true) - { - localTypeMap[className] = buildTypeDescription(className); - } - return localTypeMap[className]; - } - - public function addCachedTypeDescription(className:String, desc:Object):Object - { - if (localTypeMap[className] == null) - { - localTypeMap[className] = desc; - } - return localTypeMap[className]; - } - - /** - * builds a type description for the type indiciated by className - */ - public function buildTypeDescription(className:String):Object - { - var desc:Object = {}; - - className = className.replace(/::/,"."); - - var objClass:Class = Class(ApplicationDomain.currentDomain.getDefinition(className)); - - var xData:XML = describeType(objClass); - - desc.name = xData.@name.toString(); - - var methods:Array = []; - var xMethods:XMLList = xData.factory.method; - for (var i:int = 0; i < xMethods.length(); i++) - { - methods.push(xMethods[i].@name.toString()); - } - desc.methods = methods; - - var accessors:Array = []; - var xAcc:XMLList = xData.factory.accessor; - for (i = 0; i < xAcc.length(); i++) - { - accessors.push(xAcc[i].@name.toString()); - } - xAcc = xData.factory.variable; - for (i = 0; i < xAcc.length(); i++) - { - accessors.push(xAcc[i].@name.toString()); - } - desc.accessors = accessors; - - return desc; - } - -// instance mgmt - - /** - * resolves an instance id passed from JS to an instance previously cached for representing in JS - */ - private function resolveRef(objRef:Number):Object - { - try - { - return (objRef == -1)? baseObject : localInstanceMap[objRef]; - } - catch(e:Error) - { - return serialize("__FLASHERROR__"+"||"+e.message); - } - - return (objRef == -1)? baseObject : localInstanceMap[objRef]; - } - - /** - * returns an id associated with the object provided for passing across the bridge to JS - */ - public function getRef(obj:Object, createIfNecessary:Boolean):Number - { - try - { - var ref:Number; - - if (createIfNecessary) - { - var newRef:Number = nextID++; - localInstanceMap[newRef] = obj; - ref = newRef; - } - else - { - for (var key:* in localInstanceMap) - { - if (localInstanceMap[key] === obj) - { - ref = key; - break; - } - } - } - } - catch(e:Error) - { - return serialize("__FLASHERROR__"+"||"+e.message) - } - - return ref; - } - - - // function management - - /** - * resolves a function ID passed from JS to a local function previously cached for representation in JS - */ - private function resolveFunctionID(funcID:Number):Function - { - return localFunctionMap[funcID]; - } - - /** - * associates a unique ID with a local function suitable for passing across the bridge to proxy in Javascript - */ - public function getFunctionID(f:Function, createIfNecessary:Boolean):Number - { - var ref:Number; - - if (createIfNecessary) - { - var newID:Number = nextID++; - localFunctionMap[newID] = f; - ref = newID; - } - else - { - for (var key:* in localFunctionMap) - { - if (localFunctionMap[key] === f) { - ref = key; - } - break; - } - } - - return ref; - } - - /** - * returns a proxy function that represents a function defined in javascript. This function can be called syncrhonously, and will - * return any values returned by the JS function - */ - public function getRemoteFunctionProxy(functionID:Number, createIfNecessary:Boolean):Function - { - try - { - if (remoteFunctionCache[functionID] == null) - { - remoteFunctionCache[functionID] = function(...args):* - { - var externalArgs:Array = args.concat(); - externalArgs.unshift(functionID); - var serializedArgs:* = serialize(externalArgs, true); - - if(checkToThrowLater(serializedArgs[1])) - { - setTimeout(function a():* { - try { - var retVal:* = ExternalInterface.call("FABridge__invokeJSFunction", serializedArgs); - for(var i:int = 0; i= 5 | Enabled JavaScript | -| MySQL >= 4 | Enabled Cookies | -| Ruby >= 1.8 (optional) | Flash Plugin >= 9 (optional) | - - -Features --------- -- Easy installation -- Usable as shoutbox -- Multiple channels -- Private messaging -- Private channels -- Invitation system -- Kick/Ban or Ignore offending Users -- Online users list with user menu -- Emoticons/Smilies -- Easy way to add custom emoticons -- BBCode support -- Optional Flash based sound support -- Optional visual update information (changing window title) -- Clickable Hyperlinks -- Splitting of long words to preserve chat layout -- Flood control -- Possibility to delete messages inside the chat -- IRC style commands -- Easy interface to add custom commands -- Possibility to define opening hours for the chat -- Possibility to enable/disable guest users -- Persistent client-side settings -- Multiple languages (auto-detection of ACCEPT_LANGUAGE browser setting) -- Multiple styles with easy layout customization through stylesheets (CSS) and templates -- Automatic adjustment of displayed time to local client timezone -- Standards compliance (XHTML 1.0 strict) -- Accepts any text input, including code and special characters -- Multiline input field with the possibility to enter line breaks -- Message length counter -- Realtime monitoring and logs viewer -- Support for unicode (UTF-8) and non-unicode content types -- Bandwidth saving update calls (only updated data is sent) -- Optional support to push updates over a Flash based socket connection (increased performance and responsiveness) -- Survives connection timeouts -- Easy integration into existing authentication systems -- Sample phpBB3, MyBB, PunBB, SMF and vBulletin integrations available -- Separation of layout and code -- Well commented Source Code -- Developed with Security as integral part - built to prevent Code injections, SQL injections, Cross-site scripting (XSS), Session stealing and other attacks -- Tested successfully with Microsoft Internet Explorer, Mozilla Firefox, Opera and Safari - built to work with all modern browsers :) - - - -Help ----- -Essential documentation is contained in the attached readme files - -For more documentation consult the github wiki: https://github.com/Frug/AJAX-Chat/wiki - -For support questions use google groups: https://groups.google.com/forum/#!forum/ajax-chat - -To report bugs use github issues: https://github.com/Frug/AJAX-Chat -- cgit v1.2.3