add operator name in avatar region +

save user name and messages count when user add leave message
This commit is contained in:
Silron88 2015-08-19 03:07:40 +03:00
parent 9439ca4ffe
commit e650dc64cc
5 changed files with 46 additions and 25 deletions

View File

@ -33,7 +33,12 @@
* An URL of the avatar image or false by default.
* @type String|Boolean
*/
imageLink: false
imageLink: false,
/**
* An operator name
* @type String|Boolean
*/
operatorName: false
},
/**
@ -79,7 +84,10 @@
* @param args {Object} An object of passed arguments
*/
apiSetupAvatar: function(args) {
this.set({imageLink: (args.imageLink || false)});
this.set({
imageLink: (args.imageLink || false),
operatorName: (args.operatorName || false)
});
},
/**
@ -89,7 +97,7 @@
setFromThread: function(thread) {
if (!thread.get('agentId')) {
// There is no operator. Hide the avatar.
this.set({imageLink: false});
this.set({imageLink: false, operatorName: false});
return;
}
@ -101,7 +109,8 @@
'arguments': {
'references': {},
'return': {
'imageLink': 'imageLink'
'imageLink': 'imageLink',
'operatorName': 'operatorName'
},
'threadId': thread.get('id'),
'token': thread.get('token')

View File

@ -159,7 +159,8 @@
// Initialize avatar only for user
if (! models.user.get('isAgent')) {
models.avatar = new Mibew.Models.Avatar({
imageLink: (options.avatar || false)
imageLink: (options.avatar || false),
operatorName: (options.operatorName || false)
});
layout.avatarRegion.show(new Mibew.Views.Avatar({
model: models.avatar

View File

@ -20,11 +20,11 @@
use Mibew\Asset\Generator\UrlGeneratorInterface as AssetUrlGeneratorInterface;
use Mibew\EventDispatcher\EventDispatcher;
use Mibew\EventDispatcher\Events;
use Mibew\Routing\Generator\SecureUrlGeneratorInterface as UrlGeneratorInterface;
use Mibew\Settings;
use Mibew\Thread;
use Mibew\Style\ChatStyle;
use Mibew\Style\PageStyle;
use Mibew\Routing\Generator\SecureUrlGeneratorInterface as UrlGeneratorInterface;
use Mibew\Thread;
use Symfony\Component\HttpFoundation\Request;
/**
@ -341,7 +341,7 @@ function setup_chatview(Thread $thread)
);
$data['page.title'] = empty($group['vcchattitle'])
? Settings::get('chattitle')
? getlocal(Settings::get('chattitle'), null, get_current_locale(), true)
: $group['vcchattitle'];
$data['chat']['page'] = array(
'title' => $data['page.title']
@ -438,6 +438,8 @@ function setup_chatview_for_user(
? $asset_url_generator->generate($operator['vcavatar'])
: '';
$data['chat']['operatorName'] = $operator['vclocalename'];
return $data;
}
@ -551,7 +553,7 @@ function visitor_from_request()
$default_name = getlocal("Guest");
$user_name = $default_name;
if (isset($_COOKIE[USERNAME_COOKIE_NAME])) {
$data = base64_decode(strtr($_COOKIE[USERNAME_COOKIE_NAME], '-_,', '+/='));
$data = base64_decode(strtr($_COOKIE[USERNAME_COOKIE_NAME], ' -_,', '++/='));
if (strlen($data) > 0) {
$user_name = $data;
}
@ -690,7 +692,7 @@ function chat_start_for_user(
if ($referrer) {
$thread->postMessage(
Thread::KIND_FOR_AGENT,
getlocal('Vistor came from page {0}', array($referrer), get_current_locale(), true)
getlocal('Visitor came from page {0}', array($referrer), get_current_locale(), true)
);
}
if ($requested_operator && !$requested_operator_online) {

View File

@ -772,6 +772,9 @@ class ThreadProcessor extends ClientSideProcessor implements
if (!locale_is_available($message_locale)) {
$message_locale = get_home_locale();
}
if ($name == ""){
$name = $visitor["name"];
}
// Create thread
$thread = new Thread();
@ -783,6 +786,7 @@ class ThreadProcessor extends ClientSideProcessor implements
$thread->userId = $visitor['id'];
$thread->userAgent = $user_browser;
$thread->state = Thread::STATE_LEFT;
$thread->messageCount = $thread->messageCount + 1;
$thread->closed = time();
$thread->save();
@ -790,7 +794,7 @@ class ThreadProcessor extends ClientSideProcessor implements
if ($referrer) {
$thread->postMessage(
Thread::KIND_FOR_AGENT,
getlocal('Vistor came from page {0}', array($referrer), get_current_locale(), true)
getlocal('Visitor came from page {0}', array($referrer), get_current_locale(), true)
);
}
if ($email) {
@ -851,6 +855,7 @@ class ThreadProcessor extends ClientSideProcessor implements
* - 'token': Token of the thread.
* @return array Array of results. It contains following keys:
* - 'imageLink': string, relative path to operator's avatar.
* - 'operatorName': string, operator's name
*/
protected function apiGetAvatar($args)
{
@ -858,14 +863,16 @@ class ThreadProcessor extends ClientSideProcessor implements
$thread = self::getThread($args['threadId'], $args['token']);
$image_link = false;
$operator_name = false;
if ($thread->agentId) {
$operator = operator_by_id($thread->agentId);
$operator_name = $operator['vclocalename'];
if ($operator['vcavatar']) {
$url_generator = $this->getAssetManager()->getUrlGenerator();
$image_link = $url_generator->generate($operator['vcavatar']);
}
}
return array('imageLink' => $image_link);
return array('imageLink' => $image_link, 'operatorName' => $operator_name);
}
}

View File

@ -1 +1,3 @@
{{#if imageLink}}<img src="{{imageLink}}" border="0" alt="" />{{else}}<div class="default-avatar"></div>{{/if}}
<div id="avatar-img">{{#if imageLink}}<img src="{{imageLink}}" border="0" alt="{{operatorName}}"/>{{else}}<div class="default-avatar"></div>{{/if}}</div>
<div id="operator-text">{{#if operatorName}}<span class="operator-name">{{operatorName}}<br/></span>{{/if}}
<span class="operator-depart">{{l10n "Support service"}}</span></div>