diff --git a/src/messenger/webim/default.css b/src/messenger/webim/default.css index 735977d7..6ad63ce4 100644 --- a/src/messenger/webim/default.css +++ b/src/messenger/webim/default.css @@ -599,7 +599,7 @@ table.awaiting td.visitor { float:left; display: inline; margin:7px 20px 5px 0px; - width:75%; + width:60%; padding-right:5px; } diff --git a/src/messenger/webim/locales/en/properties b/src/messenger/webim/locales/en/properties index 5a2eebb9..5acdac0f 100644 --- a/src/messenger/webim/locales/en/properties +++ b/src/messenger/webim/locales/en/properties @@ -350,7 +350,7 @@ page_agents.login=Login page_agents.new_agent=Add operator... page_agents.status=Last active page_agents.title=Operators -page_analysis.full.text.search=User name or message text search: +page_analysis.full.text.search=User name, operator name or message text search: page_analysis.search.title=Chat history page_avatar.intro=You can upload your photo only as JPG, GIF, PNG or TIF image files. page_avatar.title=Upload photo @@ -373,7 +373,13 @@ page_login.login=Login: page_login.password=Password: page_login.remember=Remember page_login.title=Login -page_search.intro=Search the chat history for a specified user or a specified phrase in messages. +page_search.intro=Search the chat history for a specified user, an operator or a specified phrase in messages. +page_search.type.all=everywhere +page_search.search.type.in_system_messages=Search in system messages +page_search.type.message=in messages +page_search.type.operator=by operator +page_search.type.title=Search: +page_search.type.visitor=by visitor page_settings.intro=Specify options affecting chat window and common system behavior. page_settings.tab.features=Optional Services page_settings.tab.main=General diff --git a/src/messenger/webim/locales/ru/properties b/src/messenger/webim/locales/ru/properties index 739997fe..50d481d8 100644 --- a/src/messenger/webim/locales/ru/properties +++ b/src/messenger/webim/locales/ru/properties @@ -348,7 +348,7 @@ page_agents.login= page_agents.new_agent=�������� ���������... page_agents.status=��������� ��� page_agents.title=��������� -page_analysis.full.text.search=����� �� ����� ���������� ��� �� ������ ���������: +page_analysis.full.text.search=����� �� ����� ����������, ����� ��������� ��� �� ������ ���������: page_analysis.search.title=������� �������� page_avatar.intro=�� ������ ��������� ���������� ���������� JPG, GIF, PNG ��� TIF. page_avatar.title=�������� ���������� @@ -371,7 +371,13 @@ page_login.operator.disabled= page_login.password=������: page_login.remember=��������� page_login.title=���� � ������� -page_search.intro=�� ������ �������� ����� ����������� ����� �������� �� ����� ������������ ��� �����, ������������� � ���������. +page_search.intro=�� ������ �������� ����� ����������� ����� �������� �� ����� ������������, ����� ��������� ��� �����, ������������� � ���������. +page_search.type.all=����� +page_search.search.type.in_system_messages=������ � ��������� ���������� +page_search.type.message=� ���������� +page_search.type.operator=�� ��������� +page_search.type.title=������: +page_search.type.visitor=�� ���������� page_settings.intro=����� �� ������ ������ ����� �������� �� ����������� ��� ���� � ����� ��������� �������. page_settings.tab.features=���������� page_settings.tab.main=����� diff --git a/src/messenger/webim/operator/history.php b/src/messenger/webim/operator/history.php index b4b00398..113f6fa7 100644 --- a/src/messenger/webim/operator/history.php +++ b/src/messenger/webim/operator/history.php @@ -35,6 +35,9 @@ setlocale(LC_TIME, getstring("time.locale")); $page = array(); $query = isset($_GET['q']) ? myiconv(getoutputenc(), $webim_encoding, $_GET['q']) : false; +$searchType = verifyparam('type', '/^(all|message|operator|visitor)$/', 'all'); +$searchInSystemMessages = (verifyparam('insystemmessages', '/^on$/', 'off') == 'on') || !$query; + if ($query !== false) { $link = connect(); @@ -48,6 +51,18 @@ if ($query !== false) { $page['groupName'] = $groupName; $escapedQuery = db_escape_string($query, $link); + $searchConditions = array(); + if ($searchType == 'message' || $searchType == 'all') { + $searchConditions[] = "(${mysqlprefix}chatmessage.tmessage LIKE '%%$escapedQuery%%'" . + ($searchInSystemMessages?'':" AND (${mysqlprefix}chatmessage.ikind = $kind_user OR ${mysqlprefix}chatmessage.ikind = $kind_agent)") . + ")"; + } + if ($searchType == 'operator' || $searchType == 'all') { + $searchConditions[] = "(${mysqlprefix}chatthread.agentName LIKE '%%$escapedQuery%%')"; + } + if ($searchType == 'visitor' || $searchType == 'all') { + $searchConditions[] = "(${mysqlprefix}chatthread.userName LIKE '%%$escapedQuery%%')"; + } select_with_pagintation("DISTINCT unix_timestamp(${mysqlprefix}chatthread.dtmcreated) as created, " . "unix_timestamp(${mysqlprefix}chatthread.dtmmodified) as modified, ${mysqlprefix}chatthread.threadid, " . "${mysqlprefix}chatthread.remote, ${mysqlprefix}chatthread.agentName, ${mysqlprefix}chatthread.userName, groupid, " . @@ -55,7 +70,7 @@ if ($query !== false) { "${mysqlprefix}chatthread, ${mysqlprefix}chatmessage", array( "${mysqlprefix}chatmessage.threadid = ${mysqlprefix}chatthread.threadid", - "((${mysqlprefix}chatthread.userName LIKE '%%$escapedQuery%%') or (${mysqlprefix}chatmessage.tmessage LIKE '%%$escapedQuery%%'))" + "(" . implode(' or ', $searchConditions) . ")" ), "order by created DESC", "DISTINCT ${mysqlprefix}chatthread.dtmcreated", $link); @@ -67,6 +82,9 @@ if ($query !== false) { setup_empty_pagination(); } +$page['formtype'] = $searchType; +$page['forminsystemmessages'] = $searchInSystemMessages; + prepare_menu($operator); start_html_output(); require('../view/thread_search.php'); diff --git a/src/messenger/webim/view/statistics.php b/src/messenger/webim/view/statistics.php index 12417d28..4b4174fd 100644 --- a/src/messenger/webim/view/statistics.php +++ b/src/messenger/webim/view/statistics.php @@ -138,7 +138,7 @@ require_once('inc_errors.php'); <?php if( $page['reportByAgent'] ) { ?> <?php foreach( $page['reportByAgent'] as $row ) { ?> <tr> - <td><a href="<?php echo $webimroot ?>/operator/history.php?q=<?php echo topage(htmlspecialchars($row['name'])) ?>"><?php echo topage(htmlspecialchars($row['name'])) ?></a></td> + <td><a href="<?php echo $webimroot ?>/operator/history.php?q=<?php echo topage(htmlspecialchars($row['name'])) ?>&type=operator"><?php echo topage(htmlspecialchars($row['name'])) ?></a></td> <td><?php echo $row['threads'] ?></td> <td><?php echo $row['msgs'] ?></td> <td><?php echo $row['avglen'] ?></td> diff --git a/src/messenger/webim/view/thread_search.php b/src/messenger/webim/view/thread_search.php index dedc9b42..c2990c81 100644 --- a/src/messenger/webim/view/thread_search.php +++ b/src/messenger/webim/view/thread_search.php @@ -38,10 +38,22 @@ function tpl_content() { global $page, $webimroot; <div class="flabel"><?php echo getlocal("page_analysis.full.text.search") ?></div> <div class="fvaluenodesc"> <div id="searchtext"> - <input type="text" name="q" size="80" value="<?php echo form_value('q') ?>" class="formauth"/> + <input type="text" name="q" size="60" value="<?php echo form_value('q') ?>" class="formauth"/> + </div> + <div class="searchctrl"> + <?php echo getlocal("page_search.type.title") ?> + <select name="type" onchange="if (this.value == 'all' || this.value == 'message') {document.getElementById('inSystemMessages').style.display='inline'} else {document.getElementById('inSystemMessages').style.display='none'}; "> + <option value="all" <?php echo (form_value('type') == 'all')?'selected="selected"':'' ?>><?php echo getlocal("page_search.type.all") ?></option> + <option value="message" <?php echo (form_value('type') == 'message')?'selected="selected"':'' ?>><?php echo getlocal("page_search.type.message") ?></option> + <option value="operator" <?php echo (form_value('type') == 'operator')?'selected="selected"':'' ?>><?php echo getlocal("page_search.type.operator") ?></option> + <option value="visitor" <?php echo (form_value('type') == 'visitor')?'selected="selected"':'' ?>><?php echo getlocal("page_search.type.visitor") ?></option> + </select> </div> <div id="searchbutton"> <input type="image" name="search" src='<?php echo $webimroot.getlocal("image.button.search") ?>' alt='<?php echo getlocal("button.search") ?>'/> + </div><br /> + <div class="searchctrl" id="inSystemMessages"<?php echo ((form_value('type') != 'all' && form_value('type') != 'message')?' style="display: none;"':'')?>> + <input type="checkbox" name="insystemmessages" <?php echo (form_value('insystemmessages')?'checked="checked"':'') ?>/> <?php echo getlocal("page_search.search.type.in_system_messages") ?> </div> </div> <br clear="all"/>