update from branch (1.5.2)

git-svn-id: https://webim.svn.sourceforge.net/svnroot/webim/trunk@399 c66351dc-e62f-0410-b875-e3a5c0b9693f
This commit is contained in:
Evgeny Gryaznov 2009-03-08 20:53:16 +00:00
parent 4a2d55fb40
commit c2d0852e83
26 changed files with 311 additions and 174 deletions

View File

@ -1,6 +1,5 @@
#Thu Dec 18 15:36:01 CET 2008
#Sun Mar 08 21:44:45 CET 2009
eclipse.preferences.version=1
encoding//webim/INSTALL_RUS.txt=cp1251
encoding//webim/locales/fr/properties=ISO-8859-1
encoding//webim/locales/names/properties=utf-8
encoding//webim/locales/ru=cp1251

View File

@ -239,7 +239,10 @@ Class.inherit( Ajax.ChatThreadUpdater, Ajax.Base, {
if( haveMessage ) {
FrameUtils.scrollDown(this._options.container);
if(!this.skipNextsound) {
playSound(Chat.webimRoot+'/sounds/new_message.wav');
var tsound = $('soundimg');
if(tsound == null || tsound.className.match(new RegExp("\\bisound\\b")) ) {
playSound(Chat.webimRoot+'/sounds/new_message.wav');
}
}
if( !this.focused ) {
window.focus();
@ -402,6 +405,22 @@ Behaviour.register({
Chat.threadUpdater.update();
};
},
'a#togglesound' : function(el) {
el.onclick = function() {
var tsound = $('soundimg');
if(!tsound) {
return;
}
if(tsound.className.match(new RegExp("\\bisound\\b"))) {
tsound.className = "tplimage inosound";
} else {
tsound.className = "tplimage isound";
}
var messagePane = $('msgwnd');
if(messagePane)
messagePane.focus();
};
},
'a.closethread' : function(el) {
el.onclick = function() {
Chat.threadUpdater.closeThread();

View File

@ -1,49 +0,0 @@
Open Web Messenger
Copyright (c) 2005-2009 сообщество разработчиков Web Messenger.
Все права защищены. Данное программное обеспечение и сопутствующие материалы
подпадают под условия Eclipse Public License v1.0, доступной по адресу
http://www.eclipse.org/legal/epl-v10.html
СИСТЕМНЫЕ ТРЕБОВАНИЯ
* Apache сервер версии 1.3.34 или выше
* MySQL версии 5.0 или выше
* PHP версии 4.x или выше
БЫСТРАЯ УСТАНОВКА
1. Создайте папку с именем 'webim' в корневом каталоге вашего сайта на сервере.
2. Распакуйте и выгрузите содержимое архива с системой (сохраняя структуру директорий)
в созданную папку на сервере.
3. Отредактируйте конфигурационный файл /webim/libs/config.php и выставьте правильные параметры
соединения с базой данных.
4. Используя веб браузер, перейдите на страницу http://<ваш домен>/webim/install/ и
нажмите 'Create tables' ('Создать таблицы')
5. После того, как необходимые таблицы будут созданы, удалите папку /webim/install/ на вашем сервере.
6. Войдите в систему по адресу http://<ваш домен>/webim/operator/login.php, используя следующие данные:
пользователь: admin
пароль: <пустой>
7. Получите код кнопки по адресу http://<ваш домен>/webim/operator/getcode.php и расположите ее
на странице вашего сайта.
8. Измените пароль и имя пользователя по адресу http://<ваш домен>/webim/operator/operators.php.
9. Просматривайте и обслуживайте посетителей, нажавших на кнопку на странце 'Pending users'
('Посетители') по адресу http://<ваш домен>/webim/operator/users.php.
На unix/linux платформах измените владельца папки /webim/images/avatar на пользователя,
под которым запущен веб сервер (например, chown www /webim/images/avatar). Владелец должен иметь все
права на папку /webim/images/avatar (chmod 700 /webim/images/avatar).
ОБНОВЛЕНИЕ СИСТЕМЫ
1. Скопируйте /webim/libs/config.php в безопасное место, чтобы не потерять настройки.
2. Скопируйте папку /webim/images/avatar в безопасное место, чтобы не потерять ее содержимое.
3. Очистите папку 'webim' в корневом каталоге вашего сайта.
4. Распакуйте и выгрузите содержимое архива с системой (сохраняя структуру директорий)
в папку 'webim'.
5. Отредактируйте config.php в соответствии с настройками вашего сервера.
6. Используя веб браузер, перейдите на страницу http://<ваш домен>/webim/install/index.php и следуйте
указаниям по обновлению базы данных (если потребуется).
7. После того, как необходимые таблицы будут созданы, удалите папку /webim/install/ на вашем сервере.
8. Восстановите содержимое папки /webim/images/avatar.

View File

@ -20,7 +20,8 @@ require_once('libs/expand.php');
if( !isset($_GET['token']) || !isset($_GET['thread']) ) {
$chatstyle = verifyparam( "style", "/^\w+$/", "");
$info = isset($_GET['info']) ? $_GET['info'] : "";
$info = getgetparam('info');
$email = getgetparam('email');
$thread = NULL;
if( isset($_SESSION['threadid']) ) {
$thread = reopen_thread($_SESSION['threadid']);
@ -28,7 +29,10 @@ if( !isset($_GET['token']) || !isset($_GET['thread']) ) {
if( !$thread ) {
if(!has_online_operators()) {
$page = array();
setup_logo();
$page['formname'] = topage(getgetparam('name'));
$page['formemail'] = topage($email);
$page['info'] = topage($info);
expand("styles", getchatstyle(), "leavemessage.tpl");
exit;
@ -46,13 +50,16 @@ if( !isset($_GET['token']) || !isset($_GET['thread']) ) {
}
$userbrowser = $_SERVER['HTTP_USER_AGENT'];
$remoteHost = isset($_SERVER['REMOTE_HOST']) ? $_SERVER['REMOTE_HOST'] : $extAddr;
$visitor = $remote_visitor();
$visitor = visitor_from_request();
$thread = create_thread($visitor['name'], $remoteHost, $referer,$current_locale,$visitor['id'], $userbrowser);
$_SESSION['threadid'] = $thread['threadid'];
if( $referer ) {
post_message($thread['threadid'],$kind_for_agent,getstring2('chat.came.from',array($referer)));
}
post_message($thread['threadid'],$kind_info,getstring('chat.wait'));
if($email) {
post_message($thread['threadid'],$kind_for_agent,getstring2('chat.visitor.email',array($email)));
}
if($info) {
post_message($thread['threadid'],$kind_for_agent,getstring2('chat.visitor.info',array($info)));
}

View File

@ -1,7 +1,13 @@
1.5.2
-----
[+] Ability to disable sound notifications for chat (toolbar button)
[+] Switch to SSL in chat (should be enabled in "Settings -> Optional Services")
[!] lost query parameters after login redirect
[+] added referrer into button code
[+] ability to add text for operator into button code, define visitor's name and email
[!] geolocation on IPs in history
[!] Translation UI: added sorting, filters, fixed several problems
[+] New chat buttons
1.5.1
-----

View File

@ -1 +1 @@
var myAgent="";var jk=0;var myRealAgent="";function kk(){var lk=["\157pe\162a","\u006d\163\151\145","saf\u0061\u0072i","\u0066i\162\u0065\u0066\157\170","n\u0065t\163c\u0061p\145","m\u006fzil\154a"];var gj=navigator.userAgent.toLowerCase();for(var i=0;i<lk.length;i++){var ok=lk[i];if(gj.indexOf(ok)!=-1){myAgent=ok;if(!window.RegExp)break;var pk=new RegExp(ok+"[ \/\135\u003f([\u0030\u002d9\135\053\050\.[\060-\u0039]\u002b\u0029\u003f)");if(pk.exec(gj)!=null){jk=parseFloat(RegExp.$1);} break;} } myRealAgent=myAgent;if(navigator.product=="\107\145c\153o")myAgent="\155o\u007a";} kk();function getEl(name){return document.getElementById(name);}
var myAgent="";var lk=0;var myRealAgent="";function ok(){var pk=["\157pe\162\141","\155si\145","\u0073afa\u0072i","\u0066\151re\146o\u0078","\u006ee\u0074sc\u0061pe","\155o\172\u0069ll\141"];var bj=navigator.userAgent.toLowerCase();for(var i=0;i<pk.length;i++){var dk=pk[i];if(bj.indexOf(dk)!=-1){myAgent=dk;if(!window.RegExp)break;var ek=new RegExp(dk+"\133\u0020\/\u005d?\050[\u0030\0559]+\u0028\.\1330\u002d\071]\053)\u003f\u0029");if(ek.exec(bj)!=null){lk=parseFloat(RegExp.$1);} break;} } myRealAgent=myAgent;if(navigator.product=="\107e\u0063k\u006f")myAgent="\u006do\172";} ok();function getEl(name){return document.getElementById(name);}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -40,16 +40,21 @@ if( count($errors) > 0 ) {
$page['formname'] = topage($visitor_name);
$page['formemail'] = $email;
$page['formmessage'] = topage($message);
$page['info'] = $info;
$page['info'] = topage($info);
setup_logo();
expand("styles", getchatstyle(), "leavemessage.tpl");
exit;
}
$subject = getstring2_("leavemail.subject", array($visitor_name), $webim_messages_locale);
$body = getstring2_("leavemail.body", array($visitor_name,$email,$message,$info ? "$info\n" : ""), $webim_messages_locale);
loadsettings();
$message_locale = $settings['left_messages_locale'];
if(!locale_exists($message_locale)) {
$message_locale = $home_locale;
}
$subject = getstring2_("leavemail.subject", array($visitor_name), $message_locale);
$body = getstring2_("leavemail.body", array($visitor_name,$email,$message,$info ? "$info\n" : ""), $message_locale);
$inbox_mail = $settings['email'];
if($inbox_mail) {

View File

@ -15,8 +15,7 @@
$connection_timeout = 30; // sec
$simplenamecookie = "WEBIM_Name"; // 1.0.8 and earlier
$namecookie = "WEBIM_Data"; // 1.0.9+
$namecookie = "WEBIM_Data";
$usercookie = "WEBIM_UserID";
$state_queue = 0;
@ -286,6 +285,11 @@ function setup_chatview_for_user($thread,$level) {
$params = "thread=".$thread['threadid']."&token=".$thread['ltoken'];
$page['mailLink'] = "$webimroot/client.php?".$params."&level=$level&act=mailthread";
if($settings['enablessl'] == "1" && !is_secure_request()) {
$page['sslLink'] = get_app_location(true, true)."/client.php?".$params."&level=$level";
}
$page['isOpera95'] = is_agent_opera95();
$page['neediframesrc'] = needsFramesrc();
@ -305,6 +309,9 @@ function setup_chatview_for_operator($thread,$operator) {
setup_logo();
$page['send_shortcut'] = "Ctrl-Enter";
if($settings['enablessl'] == "1" && !is_secure_request()) {
$page['sslLink'] = get_app_location(true, true)."/operator/agent.php?thread=".$thread['threadid']."&token=".$thread['ltoken'];
}
$page['isOpera95'] = is_agent_opera95();
$page['neediframesrc'] = needsFramesrc();
$page['historyParams'] = array("userid" => "".$thread['userid']);
@ -535,15 +542,18 @@ function check_for_reassign($thread,$operator) {
}
function visitor_from_request() {
global $namecookie, $simplenamecookie, $compatibility_encoding, $webim_encoding, $usercookie;
$userName = getstring("chat.default.username");
global $namecookie, $webim_encoding, $usercookie;
$defaultName = getstring("chat.default.username");
$userName = $defaultName;
if( isset($_COOKIE[$namecookie]) ) {
$data = base64_decode(strtr($_COOKIE[$namecookie],'-_,', '+/='));
if( strlen($data) > 0 ) {
$userName = myiconv("utf-8",$webim_encoding,$data);
}
} else if( isset($_COOKIE[$simplenamecookie]) && isset($compatibility_encoding) ) {
$userName = myiconv($compatibility_encoding,$webim_encoding,$_COOKIE[$simplenamecookie]);
}
if($userName == $defaultName) {
$userName = getgetparam('name', $userName);
}
$userId = "";

View File

@ -17,7 +17,7 @@ session_start();
require_once(dirname(__FILE__).'/converter.php');
require_once(dirname(__FILE__).'/config.php');
$version = '1.5.1';
$version = '1.5.2';
function myiconv($in_enc, $out_enc, $string) {
global $_utf8win1251, $_win1251utf8;
@ -408,6 +408,36 @@ function quote_smart($value,$link) {
return mysql_real_escape_string($value,$link);
}
function unicode_urldecode($url) {
preg_match_all('/%u([[:alnum:]]{4})/', $url, $a);
foreach ($a[1] as $uniord) {
$dec = hexdec($uniord);
$utf = '';
if ($dec < 128) {
$utf = chr($dec);
} else if ($dec < 2048) {
$utf = chr(192 + (($dec - ($dec % 64)) / 64));
$utf .= chr(128 + ($dec % 64));
} else {
$utf = chr(224 + (($dec - ($dec % 4096)) / 4096));
$utf .= chr(128 + ((($dec % 4096) - ($dec % 64)) / 64));
$utf .= chr(128 + ($dec % 64));
}
$url = str_replace('%u'.$uniord, $utf, $url);
}
return urldecode($url);
}
function getgetparam($name,$default='') {
global $webim_encoding;
if( !isset($_GET[$name]) || !$_GET[$name] ) {
return $default;
}
return myiconv("utf-8", $webim_encoding, unicode_urldecode($_GET[$name]));
}
function get_app_location($showhost,$issecure) {
global $webimroot;
if( $showhost ) {
@ -417,6 +447,13 @@ function get_app_location($showhost,$issecure) {
}
}
function is_secure_request() {
return
isset($_SERVER['SERVER_PORT']) && $_SERVER['SERVER_PORT'] == '443'
|| isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == "on"
|| isset($_SERVER["HTTP_HTTPS"]) && $_SERVER["HTTP_HTTPS"] == "on";
}
function get_month_selection($fromtime,$totime) {
$start = getdate($fromtime);
$month = $start['mon'];
@ -448,9 +485,9 @@ function set_form_date($utime,$prefix) {
}
function webim_mail($toaddr, $reply_to, $subject, $body) {
global $webim_encoding, $webim_from_email, $mail_encoding;
global $webim_encoding, $webim_mailbox, $mail_encoding;
$headers = "From: $webim_from_email\r\n"
$headers = "From: $webim_mailbox\r\n"
."Reply-To: ".myiconv($webim_encoding, $mail_encoding, $reply_to)."\r\n"
."Content-Type: text/plain; charset=$mail_encoding\r\n"
.'X-Mailer: PHP/'.phpversion();
@ -460,23 +497,27 @@ function webim_mail($toaddr, $reply_to, $subject, $body) {
mail($toaddr, $real_subject, wordwrap(myiconv($webim_encoding, $mail_encoding, $body),70), $headers);
}
$dbversion = '1.5.1';
$dbversion = '1.5.2';
$settings = array(
'dbversion' => 0,
'email' => '', /* inbox for left messages */
'title' => 'Your Company',
'hosturl' => 'http://webim.sourceforge.net',
'hosturl' => 'http://openwebim.org',
'logo' => '',
'enableban' => '0',
'usernamepattern' => '{name}',
'usercanchangename' => '1',
'chatstyle' => 'default',
'chattitle' => 'Live Support',
'geolink' => 'http://api.hostip.info/get_html.php?ip={ip}',
'geolinkparams' => 'width=440,height=100,toolbar=0,scrollbars=0,location=0,status=1,menubar=0,resizable=1',
'online_timeout' => 30, /* Timeout (in seconds) when online operator becomes offline */
'max_uploaded_file_size' => 100000,
'email' => '', /* inbox for left messages */
'left_messages_locale' => $home_locale,
'enableban' => '0',
'enablessl' => '0',
'usercanchangename' => '1',
);
$settingsloaded = false;
$settings_in_db = array();

View File

@ -13,10 +13,15 @@
*/
/*
* Application path on server
* Application path on server
*/
$webimroot = "/webim";
/*
* Internal encoding
*/
$webim_encoding = "utf-8";
/*
* MySQL Database parameters
*/
@ -25,46 +30,19 @@ $mysqldb = "webim_db";
$mysqllogin = "webim_lite";
$mysqlpass = "123";
/*
* Localization parameters
*/
/* Use UTF-8 database */
$dbencoding = "utf8";
$webim_encoding = "utf-8";
$force_charset_in_connection = true;
/*
* Web Messenger 1.0.8 an earlier stored user name in cookie in "webim_encoding". If
* you used this versions of webim set your previous encoding here.
* Mailbox
*/
$compatibility_encoding = "cp1251";
$webim_mailbox = "webim@yourdomain.com";
$mail_encoding = "utf-8";
/*
* This encoding will be used for emails
*/
$mail_encoding = $webim_encoding;
/*
* From field in outgoing mail.
*/
$webim_from_email = "webim@yourdomain.com"; /* email from field */
/*
* Inbox for left messages encoding
*/
$webim_messages_locale = "en";
/*
* Locales
* Locales
*/
$home_locale = "en"; /* native name will be used in this locale */
$default_locale = "en"; /* if user does not provide known lang */
/*
* Method of getting information about remote user. For example, you could
* have user name or id in session. Default value: visitor_from_request
*/
$remote_visitor = 'visitor_from_request';
?>

View File

@ -61,13 +61,18 @@ function setup_empty_pagination() {
$page['pagination'] = false;
}
function generate_pagination($pagination) {
function generate_pagination($pagination,$bottom=true) {
global $pagination_spacing, $links_on_page;
$result = getlocal2("tag.pagination.info",
array($pagination['page'],$pagination['total'],$pagination['start']+1,$pagination['end'],$pagination['count']))."<br/>";
if( $pagination['total'] > 1 ) {
$result.="<br/><div class='pagination'>";
if(!$bottom) {
$result = "";
} else {
$result .= "<br/>";
}
$result.="<div class='pagination'>";
$curr_page = $pagination['page'];
$minPage = max( $curr_page - $links_on_page, 1 );

View File

@ -46,6 +46,7 @@ chat.thread.state_closed=Closed
chat.thread.state_loading=Loading
chat.thread.state_wait=In queue
chat.thread.state_wait_for_another_agent=Waiting for operator
chat.visitor.email=E-Mail: {0}
chat.visitor.info=Info: {0}
chat.wait=Thank you for contacting us. An operator will be with you shortly...
chat.window.chatting_with=You chat with:
@ -212,7 +213,7 @@ page.preview.userchat=Chat window (user-mode)
page.translate.descr=If you don't like the translation, please send us an update.
page.translate.done=Your translation is saved.
page.translate.one=Enter you translation.
page.translate.title=Translate Open WebIM
page.translate.title=Localization wizard
page_agent.clear_avatar=Remove avatar
page_agent.create_new=Here you can create new operator
page_agent.error.duplicate_login=Please choose another login, because agent with entered login is already registered in the system.
@ -278,6 +279,8 @@ settings.email.description=Enter email to receive system messages
settings.email=Email
settings.enableban.description=Using it you can block attacks from specific IPs
settings.enableban=Enable feature "Malicious Visitors"
settings.enablessl.description=Please, note that your web server should be<br/> configured to support https requests.
settings.enablessl=Allow secure connections (SSL)
settings.geolink.description=Each IP becomes a link opening in new window. {ip} is substituted with a real ip.
settings.geolink=Link to an external geolocation service
settings.geolinkparams.description=Window size and toolbars hiding
@ -305,6 +308,15 @@ thread.intro=The page displays chat
topMenu.admin=Administration
topMenu.logoff=Exit
topMenu.users=Visitors
translate.direction=Direction:
translate.show.all=All strings
translate.show.foradmin=Strings for administrator
translate.show.foroperator=Strings for operator
translate.show.forvisitor=Strings for visitor
translate.show=Show:
translate.sort.key=Key identifier
translate.sort.lang=Source language string
translate.sort=Sort by:
typing.remote=Remote user is typing...
updates.intro=Web Messenger updates.
updates.title=Updates

View File

@ -56,8 +56,9 @@ foreach( $output as $msg ) {
$subject = getstring("mail.user.history.subject");
$body = getstring2("mail.user.history.body", array($thread['userName'],$history) );
webim_mail($email, $webim_from_email, $subject, $body);
webim_mail($email, $webim_mailbox, $subject, $body);
setup_logo();
expand("styles", getchatstyle(), "mailsent.tpl");
exit;
?>

View File

@ -21,7 +21,7 @@ $operator = check_login();
$page = array('agentId' => '');
$errors = array();
$options = array('enableban', 'usercanchangename');
$options = array('enableban', 'usercanchangename', 'enablessl');
loadsettings();
$params = array();
@ -30,11 +30,8 @@ foreach($options as $opt) {
}
if (isset($_POST['sent'])) {
$params['enableban'] = verifyparam("enableban","/^on$/", "") == "on" ? "1" : "0";
$params['usercanchangename'] = verifyparam("usercanchangename", "/^on$/", "") == "on" ? "1" : "0";
foreach($options as $opt) {
$settings[$opt] = $params[$opt];
$settings[$opt] = verifyparam($opt,"/^on$/", "") == "on" ? "1" : "0";
}
update_settings();
header("Location: $webimroot/operator/features.php?stored");
@ -42,9 +39,10 @@ if (isset($_POST['sent'])) {
}
$page['operator'] = topage(get_operator_name($operator));
$page['formenableban'] = $params['enableban'] == "1";
$page['formusercanchangename'] = $params['usercanchangename'] == "1";
$page['stored'] = isset($_GET['stored']);
foreach($options as $opt) {
$page["form$opt"] = $params[$opt] == "1";
}
setup_settings_tabs(1);
start_html_output();

View File

@ -16,6 +16,35 @@ require_once('../libs/common.php');
require_once('../libs/operator.php');
require_once('../libs/pagination.php');
function compare_localization_by_l1($a, $b) {
if ($a == $b) {
return 0;
}
return ($a['l1'] < $b['l1']) ? -1 : 1;
}
function compare_localization_by_id($a, $b) {
if ($a == $b) {
return 0;
}
return ($a['id'] < $b['id']) ? -1 : 1;
}
function load_idlist($name) {
$result = array();
$fp = @fopen(dirname(__FILE__)."/../locales/names/$name", "r");
if($fp !== FALSE) {
while (!feof($fp)) {
$line = trim(fgets($fp, 4096));
if($line && preg_match("/^[\w_\.]+$/", $line)) {
$result[] = $line;
}
}
fclose($fp);
}
return $result;
}
function save_message($locale,$key,$value) {
global $webim_encoding;
$result = "";
@ -39,22 +68,27 @@ function save_message($locale,$key,$value) {
if(!$added) {
$result .= "$key=".myiconv($webim_encoding, $current_encoding, str_replace("\r", "",str_replace("\n", "\\n",trim($value))))."\n";
}
$fp = fopen(dirname(__FILE__)."/../locales/$locale/properties", "w");
fwrite($fp, $result);
fclose($fp);
$fp = fopen(dirname(__FILE__)."/../locales/$locale/properties.log", "a");
$extAddr = $_SERVER['REMOTE_ADDR'];
if (isset($_SERVER['HTTP_X_FORWARDED_FOR']) &&
$_SERVER['HTTP_X_FORWARDED_FOR'] != $_SERVER['REMOTE_ADDR']) {
$extAddr = $_SERVER['REMOTE_ADDR'].' ('.$_SERVER['HTTP_X_FORWARDED_FOR'].')';
$fp = @fopen(dirname(__FILE__)."/../locales/$locale/properties", "w");
if($fp !== FALSE) {
fwrite($fp, $result);
fclose($fp);
} else {
die("cannot write /locales/$locale/properties, please check file permissions on your server");
}
$userbrowser = $_SERVER['HTTP_USER_AGENT'];
$remoteHost = isset($_SERVER['REMOTE_HOST']) ? $_SERVER['REMOTE_HOST'] : $extAddr;
$fp = @fopen(dirname(__FILE__)."/../locales/$locale/properties.log", "a");
if($fp !== FALSE) {
$extAddr = $_SERVER['REMOTE_ADDR'];
if (isset($_SERVER['HTTP_X_FORWARDED_FOR']) &&
$_SERVER['HTTP_X_FORWARDED_FOR'] != $_SERVER['REMOTE_ADDR']) {
$extAddr = $_SERVER['REMOTE_ADDR'].' ('.$_SERVER['HTTP_X_FORWARDED_FOR'].')';
}
$userbrowser = $_SERVER['HTTP_USER_AGENT'];
$remoteHost = isset($_SERVER['REMOTE_HOST']) ? $_SERVER['REMOTE_HOST'] : $extAddr;
fwrite($fp,"# ".date(DATE_RFC822)." by $remoteHost using $userbrowser\n");
fwrite($fp,"$key=".myiconv($webim_encoding, $current_encoding, str_replace("\r", "",str_replace("\n", "\\n",trim($value))))."\n");
fclose($fp);
fwrite($fp,"# ".date(DATE_RFC822)." by $remoteHost using $userbrowser\n");
fwrite($fp,"$key=".myiconv($webim_encoding, $current_encoding, str_replace("\r", "",str_replace("\n", "\\n",trim($value))))."\n");
fclose($fp);
}
}
$operator = check_login();
@ -119,16 +153,48 @@ foreach($allLocales as $loc) {
$localesList[] = array("id" => $loc, "name" => getlocal_("localeid", $loc));
}
$show = verifyparam("show", "/^(all|s1|s2|s3)$/", "all");
$result = array();
$allkeys = array_keys($lang1);
foreach($allkeys as $key) {
$result[] = array('id' => $key, 'l1' => $lang1[$key], 'l2' => (isset($lang2[$key]) ? $lang2[$key] : "<font color=\"#c13030\"><b>absent</b></font>") );
if($show == 's1') {
$allkeys = array_intersect($allkeys, load_idlist('level1'));
} else if($show == 's2') {
$allkeys = array_intersect($allkeys, load_idlist('level2'));
} else if($show == 's3') {
$allkeys = array_diff($allkeys, load_idlist('level1'), load_idlist('level2'));
}
foreach($allkeys as $key) {
if($key != 'output_charset') {
$tsource = htmlspecialchars($lang1[$key]);
$value = isset($lang2[$key]) ? htmlspecialchars($lang2[$key]) : "<font color=\"#c13030\"><b>absent</b></font>";
$result[] = array(
'id' => $key,
'l1' => $tsource,
'l2' => $value );
}
}
$order = verifyparam("sort", "/^(id|l1)$/", "id");
usort($result, "compare_localization_by_$order");
setup_pagination($result,100);
$page['formtarget'] = $target;
$page['formsource'] = $source;
$page['availableLocales'] = $localesList;
$page['availableOrders'] = array(
array("id" => "id", "name" => getlocal("translate.sort.key")),
array("id" => "l1", "name" => getlocal("translate.sort.lang")),
);
$page['formsort'] = $order;
$page['showOptions'] = array(
array("id" => "all", "name" => getlocal("translate.show.all")),
array("id" => "s1", "name" => getlocal("translate.show.forvisitor")),
array("id" => "s2", "name" => getlocal("translate.show.foroperator")),
array("id" => "s3", "name" => getlocal("translate.show.foradmin")),
);
$page['formshow'] = $show;
start_html_output();
require('../view/translatelist.php');
?>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.0 KiB

After

Width:  |  Height:  |  Size: 3.5 KiB

View File

@ -5,12 +5,12 @@
<link rel="shortcut icon" href="${webimroot}/images/favicon.ico" type="image/x-icon"/>
<meta http-equiv="Content-Type" content="text/html; charset=Windows-1251">
<link rel="stylesheet" type="text/css" href="${webimroot}/chat.css" />
<script type="text/javascript" language="javascript" src="${webimroot}/js/common.js"></script>
<script type="text/javascript" language="javascript" src="${webimroot}/js/brws.js"></script>
<script type="text/javascript" language="javascript" src="${webimroot}/js/common.js?v=152"></script>
<script type="text/javascript" language="javascript" src="${webimroot}/js/brws.js?v=152"></script>
<script language="javascript"><!--
var threadParams = { servl:"${webimroot}/thread.php",wroot:"${webimroot}",frequency:2,${if:user}user:"true",${endif:user}threadid:${page:ct.chatThreadId},token:${page:ct.token} };
//--></script>
<script type="text/javascript" language="javascript" src="${webimroot}/js/chat.js"></script>
<script type="text/javascript" language="javascript" src="${webimroot}/js/chat.js?v=152"></script>
</head>
<style>
@ -49,8 +49,11 @@ var threadParams = { servl:"${webimroot}/thread.php",wroot:"${webimroot}",freque
.iexec { background-position:-48px 0px; }
.ihistory, .ichangeuser { background-position:-96px 0px; }
.isend { background-position:-120px 0px; }
.issl { background-position:-144px 0px; }
.isound { background-position:-168px 0px; }
.inosound { background-position:-192px 0px; }
.iemail { background-position:0px 0px; }
.iclosewin { background-position:-170px -1px; width: 15px; height: 15px; }
.iclosewin { background-position:-187px -27px; width: 15px; height: 15px; }
.tplimageloc {
background: transparent url(${webimroot}${url:image.chat.sprite}) no-repeat scroll 0px 0px;
-moz-background-clip: -moz-initial;
@ -121,39 +124,39 @@ var threadParams = { servl:"${webimroot}/thread.php",wroot:"${webimroot}",freque
<table cellspacing="0" cellpadding="0" border="0">
<tr>
${if:agent}
<td class="text" nowrap>
<td class="text" nowrap>
${if:historyParams}
${msg:chat.window.chatting_with}
<a href="${page:historyParamsLink}" target="_blank" title="${msg:page.analysis.userhistory.title}" onclick="this.newWindow = window.open('${page:historyParamsLink}', 'UserHistory', 'toolbar=0,scrollbars=0,location=0,statusbar=1,menubar=0,width=703,height=380,resizable=1');this.newWindow.focus();this.newWindow.opener=window;return false;">${print:ct.user.name}</a>
${else:historyParams}
${msg:chat.window.chatting_with} <b>${print:ct.user.name}</b>
${endif:historyParams}
</td>
</td>
${endif:agent}
${if:user}
${if:canChangeName}
<td class="text" nowrap>
<div id="changename1" style="display:${page:displ1};">
<table cellspacing="0" cellpadding="0" border="0"><tr>
<td class="text" nowrap>${msg:chat.client.name}</td>
<td width="10" valign="top"><img src='${webimroot}/images/free.gif' width="10" height="1" border="0" alt="" /></td>
<td><input id="uname" type="text" size="12" value="${page:ct.user.name}" class="username"></td>
<td width="5" valign="top"><img src='${webimroot}/images/free.gif' width="5" height="1" border="0" alt="" /></td>
<td><a href="javascript:void(0)" onclick="return false;" title="${msg:chat.client.changename}"><img class="tplimage iexec" src="${webimroot}/images/free.gif" border="0" alt="&gt;&gt;" /></a></td>
</tr></table>
</div>
<div id="changename2" style="display:${page:displ2};">
<table cellspacing="0" cellpadding="0" border="0"><tr>
<td class="text" nowrap><a id="unamelink" href="javascript:void(0)" onclick="return false;" title="${msg:chat.client.changename}">${page:ct.user.name}</a></td>
<td width="10" valign="top"><img src='${webimroot}/images/free.gif' width="10" height="1" border="0" alt="" /></td>
<td><a href="javascript:void(0)" onclick="return false;" title="${msg:chat.client.changename}"><img class="tplimage ichangeuser" src="${webimroot}/images/free.gif" border="0" alt="" /></a></td>
</tr></table>
</div>
</td>
<td class="text" nowrap>
<div id="changename1" style="display:${page:displ1};">
<table cellspacing="0" cellpadding="0" border="0"><tr>
<td class="text" nowrap>${msg:chat.client.name}</td>
<td width="10" valign="top"><img src='${webimroot}/images/free.gif' width="10" height="1" border="0" alt="" /></td>
<td><input id="uname" type="text" size="12" value="${page:ct.user.name}" class="username"></td>
<td width="5" valign="top"><img src='${webimroot}/images/free.gif' width="5" height="1" border="0" alt="" /></td>
<td><a href="javascript:void(0)" onclick="return false;" title="${msg:chat.client.changename}"><img class="tplimage iexec" src="${webimroot}/images/free.gif" border="0" alt="&gt;&gt;" /></a></td>
</tr></table>
</div>
<div id="changename2" style="display:${page:displ2};">
<table cellspacing="0" cellpadding="0" border="0"><tr>
<td class="text" nowrap><a id="unamelink" href="javascript:void(0)" onclick="return false;" title="${msg:chat.client.changename}">${page:ct.user.name}</a></td>
<td width="10" valign="top"><img src='${webimroot}/images/free.gif' width="10" height="1" border="0" alt="" /></td>
<td><a href="javascript:void(0)" onclick="return false;" title="${msg:chat.client.changename}"><img class="tplimage ichangeuser" src="${webimroot}/images/free.gif" border="0" alt="" /></a></td>
</tr></table>
</div>
</td>
${else:canChangeName}
<td class="text" nowrap>
<td class="text" nowrap>
${msg:chat.client.name}&nbsp;${page:ct.user.name}
</td>
</td>
${endif:canChangeName}
${endif:user}
${if:agent}
@ -162,7 +165,7 @@ ${if:agent}
<img class="tplimage iclose" src="${webimroot}/images/free.gif" border="0" altKey="chat.window.close_link_text"/></a></td>
${endif:agent}
<td style="color:#C9C9C9;font-size:40px;padding:0px 15px 5px 15px">|</td>
<td style="color:#C9C9C9;font-size:40px;padding:0px 15px 5px 15px">|</td>
${if:user}
<td><a href="${page:mailLink}&style=${styleid}" target="_blank" title="${msg:chat.window.toolbar.mail_history}" onclick="this.newWindow = window.open('${page:mailLink}&style=${styleid}', 'ForwardMail', 'toolbar=0,scrollbars=0,location=0,statusbar=1,menubar=0,width=603,height=254,resizable=0'); if (this.newWindow != null) {this.newWindow.focus();this.newWindow.opener=window;}return false;"><img class="tplimage iemail" src="${webimroot}/images/free.gif" border="0" alt="Mail&nbsp;"/></a></td>
${endif:user}
@ -175,11 +178,16 @@ ${if:historyParams}
<td><a href="${page:historyParamsLink}" target="_blank" title="${msg:page.analysis.userhistory.title}" onclick="this.newWindow = window.open('${page:historyParamsLink}', 'UserHistory', 'toolbar=0,scrollbars=0,location=0,statusbar=1,menubar=0,width=703,height=380,resizable=1');this.newWindow.focus();this.newWindow.opener=window;return false;"><img class="tplimage ihistory" src="${webimroot}/images/free.gif" border="0" alt="History&nbsp;"/></a></td>
${endif:historyParams}
${endif:agent}
<td><a id="togglesound" href="javascript:void(0)" onclick="return false;" title="Turn off sound">
<img id="soundimg" class="tplimage isound" src="${webimroot}/images/free.gif" border="0" alt="Sound&nbsp;" /></a></td>
<td><a id="refresh" href="javascript:void(0)" onclick="return false;" title="${msg:chat.window.toolbar.refresh}">
<img class="tplimage irefresh" src="${webimroot}/images/free.gif" border="0" alt="Refresh&nbsp;" /></a></td>
<td width="20" valign="top"><img src='${webimroot}/images/free.gif' width="20" height="1" border="0" alt="" /></td>
<td><a id="refresh" href="javascript:void(0)" onclick="return false;" title="${msg:chat.window.toolbar.refresh}">
<img class="tplimage irefresh" src="${webimroot}/images/free.gif" border="0" alt="Refresh&nbsp;" /></a></td>
${if:sslLink}
<td><a href="${page:sslLink}&style=${styleid}" title="SSL" >
<img class="tplimage issl" src="${webimroot}/images/free.gif" border="0" alt="SSL&nbsp;"/></a></td>
${endif:sslLink}
<td width="20" valign="top"><img src='${webimroot}/images/free.gif' width="20" height="1" border="0" alt="" /></td>
</tr>
</table>
</td>

View File

@ -5,7 +5,7 @@
<link rel="shortcut icon" href="${webimroot}/images/favicon.ico" type="image/x-icon"/>
<meta http-equiv="Content-Type" content="text/html; charset=Windows-1251">
<link rel="stylesheet" type="text/css" href="${webimroot}/chat.css" />
<script type="text/javascript" language="javascript" src="${webimroot}/js/brws.js"></script>
<script type="text/javascript" language="javascript" src="${webimroot}/js/brws.js?v=152"></script>
</head>
<body bgcolor="#FFFFFF" text="#000000" link="#C28400" vlink="#C28400" alink="#C28400" marginwidth="0" marginheight="0" leftmargin="0" rightmargin="0" topmargin="0" bottommargin="0">

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.7 KiB

After

Width:  |  Height:  |  Size: 4.4 KiB

View File

@ -5,12 +5,12 @@
<link rel="shortcut icon" href="${webimroot}/images/favicon.ico" type="image/x-icon"/>
<meta http-equiv="Content-Type" content="text/html; charset=Windows-1251">
<link rel="stylesheet" type="text/css" href="${webimroot}/chat.css" />
<script type="text/javascript" language="javascript" src="${webimroot}/js/common.js"></script>
<script type="text/javascript" language="javascript" src="${webimroot}/js/brws.js"></script>
<script type="text/javascript" language="javascript" src="${webimroot}/js/common.js?v=152"></script>
<script type="text/javascript" language="javascript" src="${webimroot}/js/brws.js?v=152"></script>
<script language="javascript"><!--
var threadParams = { servl:"${webimroot}/thread.php",wroot:"${webimroot}",frequency:2,${if:user}user:"true",${endif:user}threadid:${page:ct.chatThreadId},token:${page:ct.token} };
//--></script>
<script type="text/javascript" language="javascript" src="${webimroot}/js/chat.js"></script>
<script type="text/javascript" language="javascript" src="${webimroot}/js/chat.js?v=152"></script>
</head>
<style>
.tplimage {
@ -25,6 +25,9 @@ var threadParams = { servl:"${webimroot}/thread.php",wroot:"${webimroot}",freque
.iexec { background-position:-48px 0px; }
.ihistory, .ichangeuser { background-position:-24px -24px; }
.isend { background-position:-48px -24px; }
.issl { background-position:-173px 0px; }
.isound { background-position:-149px 0px; }
.inosound { background-position:-149px -24px; }
.iemail { background-position:0px 0px; }
.iclosewin { background-position:-108px -34px; width: 15px; height: 15px; }
.ibuttondiv { background-position:-73px -2px; width: 35px; height: 45px;}
@ -170,9 +173,15 @@ ${if:historyParams}
<td><a href="${page:historyParamsLink}" target="_blank" title="${msg:page.analysis.userhistory.title}" onclick="this.newWindow = window.open('${page:historyParamsLink}', 'UserHistory', 'toolbar=0,scrollbars=0,location=0,statusbar=1,menubar=0,width=703,height=380,resizable=1');this.newWindow.focus();this.newWindow.opener=window;return false;"><img class="tplimage ihistory" src="${webimroot}/images/free.gif" border="0" alt="History&nbsp;"/></a></td>
${endif:historyParams}
${endif:agent}
<td><a id="togglesound" href="javascript:void(0)" onclick="return false;" title="Turn off sound">
<img id="soundimg" class="tplimage isound" src="${webimroot}/images/free.gif" border="0" alt="Sound&nbsp;" /></a></td>
<td><a id="refresh" href="javascript:void(0)" onclick="return false;" title="${msg:chat.window.toolbar.refresh}">
<img class="tplimage irefresh" src="${webimroot}/images/free.gif" border="0" alt="Refresh&nbsp;" /></a></td>
${if:sslLink}
<td><a href="${page:sslLink}&style=${styleid}" title="SSL" >
<img class="tplimage issl" src="${webimroot}/images/free.gif" border="0" alt="SSL&nbsp;"/></a></td>
${endif:sslLink}
<td width="20" valign="top"><img src='${webimroot}/images/free.gif' width="20" height="1" border="0" alt="" /></td>
</tr>
</table>

View File

@ -5,7 +5,7 @@
<link rel="shortcut icon" href="${webimroot}/images/favicon.ico" type="image/x-icon"/>
<meta http-equiv="Content-Type" content="text/html; charset=Windows-1251">
<link rel="stylesheet" type="text/css" href="${webimroot}/chat.css" />
<script type="text/javascript" language="javascript" src="${webimroot}/js/brws.js"></script>
<script type="text/javascript" language="javascript" src="${webimroot}/js/brws.js?v=152"></script>
</head>
<body bgcolor="#FFFFFF" background="${tplroot}/images/bg.gif" text="#000000" link="#C28400" vlink="#C28400" alink="#C28400" marginwidth="0" marginheight="0" leftmargin="0" rightmargin="0" topmargin="0" bottommargin="0">

View File

@ -82,6 +82,10 @@
<input type="checkbox" name="enableban" value="on"<?php echo form_value_cb('enableban') ? " checked=\"checked\"" : "" ?>/>
</td><td></td><td class='formauth'><span class='formdescr'> &mdash; <?php echo getlocal('settings.enableban.description') ?></span></td></tr><tr><td colspan='3' height='10'></td></tr>
<tr><td class='formauth'><?php echo getlocal('settings.enablessl') ?></td><td width='10'><img width='10' height='1' border='0' alt='' src='<?php echo $webimroot ?>/images/free.gif'></td><td></td></tr><tr><td height='2' colspan='3'></td></tr><tr><td>
<input type="checkbox" name="enablessl" value="on"<?php echo form_value_cb('enablessl') ? " checked=\"checked\"" : "" ?>/>
</td><td></td><td class='formauth'><span class='formdescr'> &mdash; <?php echo getlocal('settings.enablessl.description') ?></span></td></tr><tr><td colspan='3' height='10'></td></tr>
<tr><td colspan='3' height='20'></td></tr><tr><td colspan='3' background='<?php echo $webimroot ?>/images/formline.gif'><img src='<?php echo $webimroot ?>/images/formline.gif' width='1' height='2' border='0' alt=''></td></tr><tr><td colspan='3' height='10'></td></tr>
<tr>
<td class="formauth" colspan="3">

View File

@ -18,7 +18,7 @@
<link rel="stylesheet" type="text/css" media="all" href="<?php echo $webimroot ?>/styles.css" />
<script type="text/javascript" language="javascript" src="<?php echo $webimroot ?>/js/common.js"></script>
<script type="text/javascript" language="javascript" src="<?php echo $webimroot ?>/js/common.js?v=152"></script>
<script><!--
var localized = new Array(
"<?php echo getlocal("pending.table.speak") ?>",
@ -30,7 +30,7 @@ var updaterOptions = {
agentservl:"<?php echo $webimroot ?>/operator/agent.php",
noclients:"<?php echo getlocal("clients.no_clients") ?>" };
//--></script>
<script type="text/javascript" language="javascript" src="<?php echo $webimroot ?>/js/users.js"></script>
<script type="text/javascript" language="javascript" src="<?php echo $webimroot ?>/js/users.js?v=152"></script>
<link rel="shortcut icon" href="<?php echo $webimroot ?>/images/favicon.ico" type="image/x-icon"/>
<title>

View File

@ -47,16 +47,34 @@
<form name="translateForm" method="get" action="<?php echo $webimroot ?>/operator/translate.php">
<table cellspacing='0' cellpadding='0' border='0'><tr><td background='<?php echo $webimroot ?>/images/loginbg.gif'><table cellspacing='0' cellpadding='0' border='0'><tr><td><img src='<?php echo $webimroot ?>/images/logincrnlt.gif' width='16' height='16' border='0' alt=''></td><td></td><td><img src='<?php echo $webimroot ?>/images/logincrnrt.gif' width='16' height='16' border='0' alt=''></td></tr><tr><td></td><td align='center'><table border='0' cellspacing='0' cellpadding='0'>
<tr>
<td class="formauth" colspan="3">
<td class="formauth"><?php echo getlocal("translate.direction") ?></td>
<td></td>
<td class="formauth"><?php echo getlocal("translate.sort") ?></td>
<td></td>
<td class="formauth"><?php echo getlocal("translate.show") ?></td>
</tr>
<tr><td colspan="3" height="2"></td></tr>
<tr>
<td class="formauth">
<select name="source" onchange="this.form.submit();"><?php foreach($page['availableLocales'] as $k) { echo "<option value=\"".$k["id"]."\"".($k["id"] == form_value("source") ? " selected=\"selected\"" : "").">".$k["name"]."</option>"; } ?></select>
=>
<select name="target" onchange="this.form.submit();"><?php foreach($page['availableLocales'] as $k) { echo "<option value=\"".$k["id"]."\"".($k["id"] == form_value("target") ? " selected=\"selected\"" : "").">".$k["name"]."</option>"; } ?></select>
</td>
<td width="40">&nbsp;</td>
<td>
<select name="sort" onchange="this.form.submit();"><?php foreach($page['availableOrders'] as $k) { echo "<option value=\"".$k["id"]."\"".($k["id"] == form_value("sort") ? " selected=\"selected\"" : "").">".$k["name"]."</option>"; } ?></select>
</td>
<td width="40">&nbsp;</td>
<td>
<select name="show" onchange="this.form.submit();"><?php foreach($page['showOptions'] as $k) { echo "<option value=\"".$k["id"]."\"".($k["id"] == form_value("show") ? " selected=\"selected\"" : "").">".$k["name"]."</option>"; } ?></select>
</td>
</tr>
</table></td><td></td></tr><tr><td><img src='<?php echo $webimroot ?>/images/logincrnlb.gif' width='16' height='16' border='0' alt=''></td><td></td><td><img src='<?php echo $webimroot ?>/images/logincrnrb.gif' width='16' height='16' border='0' alt=''></td></tr></table></td></tr></table>
</form>
<br/>
<?php if( $page['pagination'] && $page['pagination.items'] ) { ?>
<?php echo generate_pagination($page['pagination'],false) ?>
</br>
<table cellpadding="0" cellspacing="0" border="0" width="100%">
<tr>
<td class='table' bgcolor='#276db8' height='30'><span class='header'>Key</span></td><td width='3'></td>