mirror of
https://github.com/Mibew/design.git
synced 2024-11-16 01:44:11 +03:00
[redirect, predefined answers] store nextagent id in Db, show next agent in agent field, predefined answers started, messages
git-svn-id: https://webim.svn.sourceforge.net/svnroot/webim/trunk@132 c66351dc-e62f-0410-b875-e3a5c0b9693f
This commit is contained in:
parent
9befc1c180
commit
78e48df62d
@ -270,7 +270,7 @@ function setup_chatview_for_operator($thread,$operator) {
|
|||||||
$page = array();
|
$page = array();
|
||||||
$page['agent'] = true;
|
$page['agent'] = true;
|
||||||
$page['user'] = false;
|
$page['user'] = false;
|
||||||
$page['canpost'] = true;
|
$page['canpost'] = $thread['agentId'] == $operator['operatorid'];
|
||||||
$page['ct.chatThreadId'] = $thread['threadid'];
|
$page['ct.chatThreadId'] = $thread['threadid'];
|
||||||
$page['ct.token'] = $thread['ltoken'];
|
$page['ct.token'] = $thread['ltoken'];
|
||||||
$page['ct.user.name'] = topage(get_user_name($thread['userName'],$thread['remote']));
|
$page['ct.user.name'] = topage(get_user_name($thread['userName'],$thread['remote']));
|
||||||
@ -282,6 +282,10 @@ function setup_chatview_for_operator($thread,$operator) {
|
|||||||
$page['isOpera95'] = is_agent_opera95();
|
$page['isOpera95'] = is_agent_opera95();
|
||||||
$page['neediframesrc'] = needsFramesrc();
|
$page['neediframesrc'] = needsFramesrc();
|
||||||
|
|
||||||
|
$page['predefinedList'] = explode("\n", getlocal_('chat.predefined_answers', $thread['locale']));
|
||||||
|
$params = "thread=".$thread['threadid']."&token=".$thread['ltoken'];
|
||||||
|
$page['selfLink'] = "$webimroot/operator/agent.php?".$params;
|
||||||
|
|
||||||
$page['namePostfix'] = "";
|
$page['namePostfix'] = "";
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -323,6 +327,7 @@ function ping_thread($thread, $isuser,$istyping) {
|
|||||||
$message_to_post = getstring_("chat.status.operator.dead", $thread['locale']);
|
$message_to_post = getstring_("chat.status.operator.dead", $thread['locale']);
|
||||||
post_message_($thread['threadid'],$kind_conn,$message_to_post,$link,null,$lastping+$connection_timeout);
|
post_message_($thread['threadid'],$kind_conn,$message_to_post,$link,null,$lastping+$connection_timeout);
|
||||||
$params['istate'] = $state_waiting;
|
$params['istate'] = $state_waiting;
|
||||||
|
$params['nextagent'] = 0;
|
||||||
commit_thread($thread['threadid'], $params, $link);
|
commit_thread($thread['threadid'], $params, $link);
|
||||||
mysql_close($link);
|
mysql_close($link);
|
||||||
return;
|
return;
|
||||||
@ -373,7 +378,7 @@ function close_thread($thread,$isuser) {
|
|||||||
|
|
||||||
function thread_by_id_($id,$link) {
|
function thread_by_id_($id,$link) {
|
||||||
return select_one_row("select threadid,userName,agentName,agentId,lrevision,istate,ltoken,userTyping,agentTyping".
|
return select_one_row("select threadid,userName,agentName,agentId,lrevision,istate,ltoken,userTyping,agentTyping".
|
||||||
",remote,referer,locale,unix_timestamp(lastpinguser) as lpuser,unix_timestamp(lastpingagent) as lpagent, unix_timestamp(CURRENT_TIMESTAMP) as current".
|
",remote,referer,locale,unix_timestamp(lastpinguser) as lpuser,unix_timestamp(lastpingagent) as lpagent, unix_timestamp(CURRENT_TIMESTAMP) as current,nextagent".
|
||||||
" from chatthread where threadid = ". $id, $link );
|
" from chatthread where threadid = ". $id, $link );
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -411,6 +416,7 @@ function do_take_thread($threadid,$operatorId,$operatorName) {
|
|||||||
$link = connect();
|
$link = connect();
|
||||||
commit_thread( $threadid,
|
commit_thread( $threadid,
|
||||||
array("istate" => $state_chatting,
|
array("istate" => $state_chatting,
|
||||||
|
"nextagent" => 0,
|
||||||
"agentId" => $operatorId,
|
"agentId" => $operatorId,
|
||||||
"agentName" => "'".mysql_real_escape_string($operatorName)."'"), $link);
|
"agentName" => "'".mysql_real_escape_string($operatorName)."'"), $link);
|
||||||
mysql_close($link);
|
mysql_close($link);
|
||||||
@ -429,7 +435,7 @@ function reopen_thread($threadid) {
|
|||||||
if( $thread['istate'] != $state_chatting && $thread['istate'] != $state_queue && $thread['istate'] != $state_loading ) {
|
if( $thread['istate'] != $state_chatting && $thread['istate'] != $state_queue && $thread['istate'] != $state_loading ) {
|
||||||
$link = connect();
|
$link = connect();
|
||||||
commit_thread( $threadid,
|
commit_thread( $threadid,
|
||||||
array("istate" => $state_waiting ), $link);
|
array("istate" => $state_waiting, "nextagent" => 0), $link);
|
||||||
mysql_close($link);
|
mysql_close($link);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -449,7 +455,7 @@ function take_thread($thread,$operator) {
|
|||||||
if( $state == $state_queue || $state == $state_waiting || $state == $state_loading) {
|
if( $state == $state_queue || $state == $state_waiting || $state == $state_loading) {
|
||||||
do_take_thread($threadid, $operator['operatorid'], $operatorName);
|
do_take_thread($threadid, $operator['operatorid'], $operatorName);
|
||||||
|
|
||||||
if( $state == $state_waiting ) {
|
if( $state == $state_waiting && $thread['nextagent'] != 0 ) {
|
||||||
if( $operatorName != $thread['agentName'] ) {
|
if( $operatorName != $thread['agentName'] ) {
|
||||||
$message_to_post = getstring2_("chat.status.operator.changed", array($operatorName, $thread['agentName']), $thread['locale']);
|
$message_to_post = getstring2_("chat.status.operator.changed", array($operatorName, $thread['agentName']), $thread['locale']);
|
||||||
} else {
|
} else {
|
||||||
@ -476,7 +482,8 @@ function check_for_reassign($thread,$operator) {
|
|||||||
global $state_waiting, $home_locale, $kind_events;
|
global $state_waiting, $home_locale, $kind_events;
|
||||||
$operatorName = ($thread['locale'] == $home_locale) ? $operator['vclocalename'] : $operator['vccommonname'];
|
$operatorName = ($thread['locale'] == $home_locale) ? $operator['vclocalename'] : $operator['vccommonname'];
|
||||||
if( $thread['istate'] == $state_waiting &&
|
if( $thread['istate'] == $state_waiting &&
|
||||||
( $thread['agentId'] == $operator['operatorid'] )) {
|
( $thread['nextagent'] == $operator['operatorid']
|
||||||
|
|| $thread['agentId'] == $operator['operatorid'] )) {
|
||||||
do_take_thread($thread['threadid'], $operator['operatorid'], $operatorName);
|
do_take_thread($thread['threadid'], $operator['operatorid'], $operatorName);
|
||||||
if( $operatorName != $thread['agentName'] ) {
|
if( $operatorName != $thread['agentName'] ) {
|
||||||
$message_to_post = getstring2_("chat.status.operator.changed", array($operatorName, $thread['agentName']), $thread['locale']);
|
$message_to_post = getstring2_("chat.status.operator.changed", array($operatorName, $thread['agentName']), $thread['locale']);
|
||||||
|
@ -22,7 +22,9 @@ chat.window.poweredby=Powered by:
|
|||||||
chat.window.poweredreftext=webim.ru
|
chat.window.poweredreftext=webim.ru
|
||||||
chat.window.send_message=Send message
|
chat.window.send_message=Send message
|
||||||
chat.window.send_message_short=Send ({0})
|
chat.window.send_message_short=Send ({0})
|
||||||
|
chat.window.predefined.select_answer=Choose answer...
|
||||||
chat.window.toolbar.mail_history=Send chat history by e-mail
|
chat.window.toolbar.mail_history=Send chat history by e-mail
|
||||||
|
chat.window.toolbar.redirect_user=Redirect visitor to another operator
|
||||||
chat.window.toolbar.refresh=Refresh
|
chat.window.toolbar.refresh=Refresh
|
||||||
chat.client.name=You are
|
chat.client.name=You are
|
||||||
chat.client.changename=Change name
|
chat.client.changename=Change name
|
||||||
@ -30,6 +32,7 @@ chat.status.operator.left=Operator {0} left the chat
|
|||||||
chat.status.user.left=Visitor {0} left the chat
|
chat.status.user.left=Visitor {0} left the chat
|
||||||
chat.status.user.dead=Visitor closed chat window
|
chat.status.user.dead=Visitor closed chat window
|
||||||
chat.status.operator.dead=Operator has connection issues, we temporarily moved you to foreground queue. Sorry for keeping you waiting.
|
chat.status.operator.dead=Operator has connection issues, we temporarily moved you to foreground queue. Sorry for keeping you waiting.
|
||||||
|
chat.status.operator.redirect=Operator {0} redirected you to another operator, please, wait a little
|
||||||
chat.status.operator.joined=Operator {0} joined the chat
|
chat.status.operator.joined=Operator {0} joined the chat
|
||||||
chat.status.user.changedname=Visitor changed the name {0} to {1}
|
chat.status.user.changedname=Visitor changed the name {0} to {1}
|
||||||
chat.status.user.reopenedthread=Visitor joined chat again
|
chat.status.user.reopenedthread=Visitor joined chat again
|
||||||
@ -43,6 +46,7 @@ page.chat.old_browser.title=Please, use newer browser
|
|||||||
page.chat.old_browser.close=Close...
|
page.chat.old_browser.close=Close...
|
||||||
page.chat.old_browser.content=Your web browser is not fully supported by Web Messenger. \nPlease, use one of the following web browsers: \n<p><ul>\n<li>Internet Explorer 5.5+\n<li>Firefox 1.0+\n<li>Opera 8.0+\n<li>Mozilla 1.4+\n<li>Netscape 7.1+\n<li>Safari 1.2+\n</ul></p>\nAlso, we support some old browsers:\n<p><ul>\n<li>Internet Explorer 5.0\n<li>Opera 7.0\n</ul></p>
|
page.chat.old_browser.content=Your web browser is not fully supported by Web Messenger. \nPlease, use one of the following web browsers: \n<p><ul>\n<li>Internet Explorer 5.5+\n<li>Firefox 1.0+\n<li>Opera 8.0+\n<li>Mozilla 1.4+\n<li>Netscape 7.1+\n<li>Safari 1.2+\n</ul></p>\nAlso, we support some old browsers:\n<p><ul>\n<li>Internet Explorer 5.0\n<li>Opera 7.0\n</ul></p>
|
||||||
chat.wait=Thank you for contacting us. An operator will be with you shortly...
|
chat.wait=Thank you for contacting us. An operator will be with you shortly...
|
||||||
|
chat.predefined_answers=Hello, how may I help you?\nHello! Welcome to our support. How may I help you?
|
||||||
mailthread.title=Send chat history<br>by mail
|
mailthread.title=Send chat history<br>by mail
|
||||||
mailthread.enter_email=Enter your e-mail:
|
mailthread.enter_email=Enter your e-mail:
|
||||||
mailthread.perform=Send
|
mailthread.perform=Send
|
||||||
@ -56,6 +60,13 @@ chat.thread.state_wait_for_another_agent=Waiting for operator
|
|||||||
chat.thread.state_chatting_with_agent=In chat
|
chat.thread.state_chatting_with_agent=In chat
|
||||||
chat.thread.state_closed=Closed
|
chat.thread.state_closed=Closed
|
||||||
chat.thread.state_loading=Loading
|
chat.thread.state_loading=Loading
|
||||||
|
chat.redirect.title=Redirect to<br>another operator
|
||||||
|
chat.redirect.choose_operator=Choose an operator:
|
||||||
|
chat.redirect.back=Back...
|
||||||
|
chat.redirected.title=The visitor redirected to another operator
|
||||||
|
chat.redirected.content=The visitor placed in priorty queue of the operator {0}.
|
||||||
|
chat.redirected.closewindow=Click to close the window
|
||||||
|
chat.redirected.close=Close...
|
||||||
clients.title=List of awaiting visitors
|
clients.title=List of awaiting visitors
|
||||||
clients.no_clients=The list of awaiting visitors is empty
|
clients.no_clients=The list of awaiting visitors is empty
|
||||||
clients.intro=The page displays list of awaiting visitors.
|
clients.intro=The page displays list of awaiting visitors.
|
||||||
@ -135,6 +146,10 @@ image.button.search=/locales/en/images/search.gif
|
|||||||
admin.content.client_settings=Specify options affecting chat window and common system behavior
|
admin.content.client_settings=Specify options affecting chat window and common system behavior
|
||||||
app.title=Web Instant Messenger
|
app.title=Web Instant Messenger
|
||||||
chat.came.from=Vistor came from page {0}
|
chat.came.from=Vistor came from page {0}
|
||||||
|
confirm.take.head=Change operator
|
||||||
|
confirm.take.message=Visitor <span style="color:blue;">{0}</span> is already served by <span style="color:green;">{1}</span>.<br/> Are your really sure you wan't to start chatting the visitor?
|
||||||
|
confirm.take.no=No, close the window
|
||||||
|
confirm.take.yes=Yes, I'm sure
|
||||||
content.history=Search the dialogs history
|
content.history=Search the dialogs history
|
||||||
content.logoff=Log out of the system.
|
content.logoff=Log out of the system.
|
||||||
errors.wrong_field=Please fill "{0}" correctly.
|
errors.wrong_field=Please fill "{0}" correctly.
|
||||||
|
@ -22,7 +22,9 @@ chat.window.poweredby=
|
|||||||
chat.window.poweredreftext=webim.ru
|
chat.window.poweredreftext=webim.ru
|
||||||
chat.window.send_message=Отправить сообщение
|
chat.window.send_message=Отправить сообщение
|
||||||
chat.window.send_message_short=Отправить ({0})
|
chat.window.send_message_short=Отправить ({0})
|
||||||
|
chat.window.predefined.select_answer=Выберите ответ...
|
||||||
chat.window.toolbar.mail_history=Отправить историю диалога по электронной почте
|
chat.window.toolbar.mail_history=Отправить историю диалога по электронной почте
|
||||||
|
chat.window.toolbar.redirect_user=Перенаправить посетителя другому оператору
|
||||||
chat.window.toolbar.refresh=Обновить содержимое диалога
|
chat.window.toolbar.refresh=Обновить содержимое диалога
|
||||||
chat.client.name=Вы
|
chat.client.name=Вы
|
||||||
chat.client.changename=Изменить имя
|
chat.client.changename=Изменить имя
|
||||||
@ -30,6 +32,7 @@ chat.status.operator.left=
|
|||||||
chat.status.user.left=Посетитель {0} покинул диалог
|
chat.status.user.left=Посетитель {0} покинул диалог
|
||||||
chat.status.user.dead=Посетитель закрыл окно диалога
|
chat.status.user.dead=Посетитель закрыл окно диалога
|
||||||
chat.status.operator.dead=У оператора возникли проблемы со связью, мы временно перевели Вас в приоритетную очередь. Приносим извинения за Ваше ожидание.
|
chat.status.operator.dead=У оператора возникли проблемы со связью, мы временно перевели Вас в приоритетную очередь. Приносим извинения за Ваше ожидание.
|
||||||
|
chat.status.operator.redirect=Оператор {0} переключил Вас на другого оператора, пожалуйста, подождите немного
|
||||||
chat.status.operator.joined=Оператор {0} включился в разговор
|
chat.status.operator.joined=Оператор {0} включился в разговор
|
||||||
chat.status.user.changedname=Посетитель сменил имя {0} на {1}
|
chat.status.user.changedname=Посетитель сменил имя {0} на {1}
|
||||||
chat.status.user.reopenedthread=Посетитель заново вошел в диалог
|
chat.status.user.reopenedthread=Посетитель заново вошел в диалог
|
||||||
@ -43,6 +46,7 @@ page.chat.old_browser.title=
|
|||||||
page.chat.old_browser.close=Закрыть...
|
page.chat.old_browser.close=Закрыть...
|
||||||
page.chat.old_browser.content=К сожалению, для работы этой страницы необходим более новый браузер. Для лучшего просмотра используйте:\n<p><ul>\n<li>Internet Explorer 5.5+\n<li>Firefox 1.0+\n<li>Opera 8.0+\n<li>Mozilla 1.4+\n<li>Netscape 7.1+\n<li>Safari 1.2+\n</ul></p>\nТакже поддерживаются некоторые старые браузеры:\n<p><ul>\n<li>Internet Explorer 5.0\n<li>Opera 7.0\n</ul></p>
|
page.chat.old_browser.content=К сожалению, для работы этой страницы необходим более новый браузер. Для лучшего просмотра используйте:\n<p><ul>\n<li>Internet Explorer 5.5+\n<li>Firefox 1.0+\n<li>Opera 8.0+\n<li>Mozilla 1.4+\n<li>Netscape 7.1+\n<li>Safari 1.2+\n</ul></p>\nТакже поддерживаются некоторые старые браузеры:\n<p><ul>\n<li>Internet Explorer 5.0\n<li>Opera 7.0\n</ul></p>
|
||||||
chat.wait=Пожалуйста, подождите немного, к Вам присоединится оператор..
|
chat.wait=Пожалуйста, подождите немного, к Вам присоединится оператор..
|
||||||
|
chat.predefined_answers=Здравствуйте! Чем я могу Вам помочь?\nПодождите секунду, я переключу Вас на другого оператора.\nВы не могли бы уточнить, что Вы имеете ввиду..\nУдачи, до свиданья!
|
||||||
mailthread.title=Отправить историю разговора<br>на почтовый ящик
|
mailthread.title=Отправить историю разговора<br>на почтовый ящик
|
||||||
mailthread.enter_email=Введите Ваш E-mail:
|
mailthread.enter_email=Введите Ваш E-mail:
|
||||||
mailthread.perform=Отправить
|
mailthread.perform=Отправить
|
||||||
@ -56,6 +60,13 @@ chat.thread.state_wait_for_another_agent=
|
|||||||
chat.thread.state_chatting_with_agent=В диалоге
|
chat.thread.state_chatting_with_agent=В диалоге
|
||||||
chat.thread.state_closed=Закрыто
|
chat.thread.state_closed=Закрыто
|
||||||
chat.thread.state_loading=Загружается
|
chat.thread.state_loading=Загружается
|
||||||
|
chat.redirect.title=Перенаправить<br>другому оператору
|
||||||
|
chat.redirect.choose_operator=Выберите оператора:
|
||||||
|
chat.redirect.back=Назад...
|
||||||
|
chat.redirected.title=Посетитель переведен другому оператору
|
||||||
|
chat.redirected.content=Посетитель помещен в привелегированную очередь оператора {0}.
|
||||||
|
chat.redirected.closewindow=Нажмите на эту ссылку чтобы закрыть окно
|
||||||
|
chat.redirected.close=Закрыть...
|
||||||
clients.title=Список ожидающих посетителей
|
clients.title=Список ожидающих посетителей
|
||||||
clients.no_clients=В этой очереди ожидающих посетителей нет
|
clients.no_clients=В этой очереди ожидающих посетителей нет
|
||||||
clients.intro=На этой странице можно просмотреть список ожидающих ответа посетителей.
|
clients.intro=На этой странице можно просмотреть список ожидающих ответа посетителей.
|
||||||
@ -135,6 +146,10 @@ image.button.search=/locales/ru/images/search.gif
|
|||||||
admin.content.client_settings=Вы можете задать опции влияющие на отображение чат окна и общее поведение системы
|
admin.content.client_settings=Вы можете задать опции влияющие на отображение чат окна и общее поведение системы
|
||||||
app.title=Веб Мессенджер
|
app.title=Веб Мессенджер
|
||||||
chat.came.from=Посетитель пришел со страницы {0}
|
chat.came.from=Посетитель пришел со страницы {0}
|
||||||
|
confirm.take.head=Сменить оператора
|
||||||
|
confirm.take.message=С посетителем <span style="color:blue;">{0}</span> уже общается <span style="color:green;">{1}</span>.<br/>Вы уверены что хотите сменить его?
|
||||||
|
confirm.take.no=Нет, закрыть окно
|
||||||
|
confirm.take.yes=Да, я уверен
|
||||||
content.history=Поиск по истории диалогов
|
content.history=Поиск по истории диалогов
|
||||||
content.logoff=Покинуть систему.
|
content.logoff=Покинуть систему.
|
||||||
errors.wrong_field=Неправильно заполнено поле "{0}"
|
errors.wrong_field=Неправильно заполнено поле "{0}"
|
||||||
|
@ -39,17 +39,22 @@ $threadstate_key = array(
|
|||||||
$state_loading => "chat.thread.state_loading"
|
$state_loading => "chat.thread.state_loading"
|
||||||
);
|
);
|
||||||
|
|
||||||
function thread_to_xml($thread) {
|
function thread_to_xml($thread,$link) {
|
||||||
global $threadstate_to_string, $threadstate_key, $webim_encoding;
|
global $threadstate_to_string, $threadstate_key, $webim_encoding, $operator;
|
||||||
$state = $threadstate_to_string[$thread['istate']];
|
$state = $threadstate_to_string[$thread['istate']];
|
||||||
$result = "<thread id=\"".$thread['threadid']."\" stateid=\"$state\"";
|
$result = "<thread id=\"".$thread['threadid']."\" stateid=\"$state\"";
|
||||||
if( $state == "closed" )
|
if( $state == "closed" )
|
||||||
return $result."/>";
|
return $result."/>";
|
||||||
|
|
||||||
$state = getstring($threadstate_key[$thread['istate']]);
|
$state = getstring($threadstate_key[$thread['istate']]);
|
||||||
$threadoperator = ($thread['agentName'] ? $thread['agentName'] : "-");
|
$nextagent = $thread['nextagent'] != 0 ? operator_by_id_($thread['nextagent'],$link) : null;
|
||||||
|
$threadoperator = $nextagent ? get_operator_name($nextagent)
|
||||||
|
: ($thread['agentName'] ? $thread['agentName'] : "-");
|
||||||
|
|
||||||
$result .= " canopen=\"true\"";
|
$result .= " canopen=\"true\"";
|
||||||
|
if( $thread['agentId'] != $operator['operatorid'] && $thread['nextagent'] != $operator['operatorid']) {
|
||||||
|
$result .= " canview=\"true\"";
|
||||||
|
}
|
||||||
|
|
||||||
$result .= " state=\"$state\" typing=\"".$thread['userTyping']."\">";
|
$result .= " state=\"$state\" typing=\"".$thread['userTyping']."\">";
|
||||||
$result .= "<name>".htmlspecialchars(htmlspecialchars(get_user_name($thread['userName'],$thread['remote'])))."</name>";
|
$result .= "<name>".htmlspecialchars(htmlspecialchars(get_user_name($thread['userName'],$thread['remote'])))."</name>";
|
||||||
@ -69,11 +74,11 @@ function print_pending_threads($since) {
|
|||||||
$revision = $since;
|
$revision = $since;
|
||||||
$output = array();
|
$output = array();
|
||||||
$query = "select threadid, userName, agentName, unix_timestamp(dtmcreated), userTyping, ".
|
$query = "select threadid, userName, agentName, unix_timestamp(dtmcreated), userTyping, ".
|
||||||
"unix_timestamp(dtmmodified), lrevision, istate, remote ".
|
"unix_timestamp(dtmmodified), lrevision, istate, remote, nextagent, agentId ".
|
||||||
"from chatthread where lrevision > $since ORDER BY threadid";
|
"from chatthread where lrevision > $since ORDER BY threadid";
|
||||||
$rows = select_multi_assoc($query, $link);
|
$rows = select_multi_assoc($query, $link);
|
||||||
foreach ($rows as $row) {
|
foreach ($rows as $row) {
|
||||||
$thread = thread_to_xml($row);
|
$thread = thread_to_xml($row,$link);
|
||||||
$output[] = $thread;
|
$output[] = $thread;
|
||||||
if( $row['lrevision'] > $revision )
|
if( $row['lrevision'] > $revision )
|
||||||
$revision = $row['lrevision'];
|
$revision = $row['lrevision'];
|
||||||
|
Loading…
Reference in New Issue
Block a user