Add button to show tracked path of a visitor into operator's chat window

This commit is contained in:
Fedor A. Fetisov 2022-06-28 02:58:00 +03:00
parent 3148db54b5
commit 691bcfa061
10 changed files with 162 additions and 4 deletions

View File

@ -0,0 +1,68 @@
/*!
* This file is a part of Mibew Messenger.
*
* Copyright 2005-2022 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
(function(Mibew, Handlebars, _) {
/**
* @class Represents Tracked path control view
*/
Mibew.Views.TrackedPathControl = Mibew.Views.Control.extend(
/** @lends Mibew.Views.TrackedPathControl.prototype */
{
/**
* Template function
* @type Function
*/
template: Handlebars.templates['chat/controls/tracked_path'],
/**
* Map ui events to view methods
* The view inherits events from
* {@link Mibew.Views.Control.prototype.events}.
* @type Object
*/
events: _.extend(
{},
Mibew.Views.Control.prototype.events,
{
'click': 'showTrackedPath'
}
),
/**
* Display tracked path window
*/
showTrackedPath: function() {
var user = Mibew.Objects.Models.user;
var link = this.model.get('link');
if (user.get('isAgent') && link) {
var winParams = Mibew.Utils.buildWindowParams(this.model.get('windowParams'));
// TODO: Kill & at the server side
link = link.replace('&', '&', 'g');
var newWindow = window.open(link, 'UserTrackedPath', winParams);
if (newWindow !== null) {
newWindow.focus();
newWindow.opener=window;
}
}
}
}
);
})(Mibew, Handlebars, _);

View File

@ -0,0 +1,63 @@
/*!
* This file is a part of Mibew Messenger.
*
* Copyright 2005-2022 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
(function(Mibew, _){
/**
* @class Tracked path control model
*/
Mibew.Models.TrackedPathControl = Mibew.Models.Control.extend(
/** @lends Mibew.Models.TrackedPathControl.prototype */
{
/**
* A list of default model values.
*
* The model inherits defaults from
* {@link Mibew.Models.Control.prototype.defaults}.
* @type Object
*/
defaults: _.extend(
{},
Mibew.Models.Control.prototype.defaults,
{
/**
* An URL of the tracked path page or false by default.
* @type String|Boolean
*/
link: false,
/**
* Params string for tracked path popup window
* @type String
*/
windowParams: ''
}
),
/**
* Returns model type
* @returns {String} Model type
*/
getModelType: function() {
return 'TrackedPathControl';
}
}
);
})(Mibew, _);

View File

@ -101,6 +101,15 @@
windowParams: options.windowsParams.history windowParams: options.windowsParams.history
}); });
ctrlsCollection.add(controls.history); ctrlsCollection.add(controls.history);
if (options.links.tracked) {
controls.tracked_path = new Mibew.Models.TrackedPathControl({
weight: 170,
link: options.links.tracked,
windowParams: options.windowsParams.trackedPath
});
ctrlsCollection.add(controls.tracked_path);
}
} }
// Create toggle sound button // Create toggle sound button

View File

@ -380,6 +380,8 @@ function setup_chatview(Thread $thread)
$style_config = $page_style->getConfigurations(); $style_config = $page_style->getConfigurations();
$data['chat']['windowsParams']['history'] $data['chat']['windowsParams']['history']
= $style_config['history']['window']; = $style_config['history']['window'];
$data['chat']['windowsParams']['trackedPath']
= $style_config['tracked']['visitor_window'];
$data['startFrom'] = 'chat'; $data['startFrom'] = 'chat';
@ -517,11 +519,13 @@ function setup_chatview_for_operator(
// Set tracking params // Set tracking params
if (Settings::get('enabletracking')) { if (Settings::get('enabletracking')) {
$visitor = track_get_visitor_by_thread_id($thread->id); $visitor = track_get_visitor_by_thread_id($thread->id);
if ($visitor) {
$data['chat']['links']['tracked'] = $url_generator->generate( $data['chat']['links']['tracked'] = $url_generator->generate(
'history_user_track', 'history_user_track',
array('visitor' => $visitor['visitorid']) array('visitor' => $visitor['visitorid'])
); );
} }
}
// Check if agent can post messages // Check if agent can post messages
if ($thread->agentId == $operator['operatorid']) { if ($thread->agentId == $operator['operatorid']) {

View File

@ -170,6 +170,12 @@ a:hover .image-close-window {
.active-history-control .tpl-image { .active-history-control .tpl-image {
background-position: -112px 0; background-position: -112px 0;
} }
.tracked-path-control .tpl-image {
background-position: -192px -16px;
}
.active-tracked-path-control .tpl-image {
background-position: -192px 0;
}
.sound-control .sound-control-on { .sound-control .sound-control-on {
background-position: -48px -16px; background-position: -48px -16px;
} }

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.3 KiB

After

Width:  |  Height:  |  Size: 5.5 KiB

View File

@ -0,0 +1 @@
<div class="tpl-image" title="{{l10n "Tracked path of visitor"}}"></div>

View File

@ -167,6 +167,12 @@ a:hover .image-close-window {
.active-history-control .tpl-image { .active-history-control .tpl-image {
background-position: -112px 0; background-position: -112px 0;
} }
.tracked-path-control .tpl-image {
background-position: -192px -16px;
}
.active-tracked-path-control .tpl-image {
background-position: -192px 0;
}
.sound-control .sound-control-on { .sound-control .sound-control-on {
background-position: -48px -16px; background-position: -48px -16px;
} }

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.3 KiB

After

Width:  |  Height:  |  Size: 5.5 KiB

View File

@ -0,0 +1 @@
<div class="tpl-image" title="{{l10n "Tracked path of visitor"}}"></div>