Use english strings instead of keys for localization

This commit is contained in:
Dmitriy Simushev 2014-06-26 15:14:15 +00:00
parent c454ec6d98
commit 64c626ffdb
136 changed files with 933 additions and 2259 deletions

View File

@ -325,7 +325,7 @@ function show_install_err($text)
$page = array( $page = array(
'version' => MIBEW_VERSION, 'version' => MIBEW_VERSION,
'localeLinks' => get_locale_links(), 'localeLinks' => get_locale_links(),
'title' => getlocal("install.err.title"), 'title' => getlocal("Problem"),
'no_right_menu' => true, 'no_right_menu' => true,
'fixedwrap' => true, 'fixedwrap' => true,
'errors' => array($text), 'errors' => array($text),

View File

@ -83,7 +83,7 @@ function check_mibewroot()
return false; return false;
} }
$page['done'][] = getlocal("install.0.app", array(MIBEW_WEB_ROOT)); $page['done'][] = getlocal("Application path is {0}", array(MIBEW_WEB_ROOT));
return true; return true;
} }
@ -129,9 +129,9 @@ function check_files()
$packageFile = MIBEW_FS_ROOT . "/install/package"; $packageFile = MIBEW_FS_ROOT . "/install/package";
$fp = @fopen($packageFile, "r"); $fp = @fopen($packageFile, "r");
if ($fp === FALSE) { if ($fp === FALSE) {
$errors[] = getlocal("install.cannot_read", array(MIBEW_WEB_ROOT . "/install/package")); $errors[] = getlocal("Cannot read file {0}", array(MIBEW_WEB_ROOT . "/install/package"));
if (file_exists($packageFile)) { if (file_exists($packageFile)) {
$errors[] = getlocal("install.check_permissions", array(fpermissions($packageFile))); $errors[] = getlocal("Insufficient file permissions {0}", array(fpermissions($packageFile)));
} }
return false; return false;
} }
@ -150,10 +150,10 @@ function check_files()
$relativeName = MIBEW_FS_ROOT . "/$file"; $relativeName = MIBEW_FS_ROOT . "/$file";
if (!is_readable($relativeName)) { if (!is_readable($relativeName)) {
if (file_exists($relativeName)) { if (file_exists($relativeName)) {
$errors[] = getlocal("install.cannot_read", array(MIBEW_WEB_ROOT . "/$file")); $errors[] = getlocal("Cannot read file {0}", array(MIBEW_WEB_ROOT . "/$file"));
$errors[] = getlocal("install.check_permissions", array(fpermissions($relativeName))); $errors[] = getlocal("Insufficient file permissions {0}", array(fpermissions($relativeName)));
} else { } else {
$errors[] = getlocal("install.no_file", array(MIBEW_WEB_ROOT . "/$file")); $errors[] = getlocal("File is absent: {0}", array(MIBEW_WEB_ROOT . "/$file"));
} }
return false; return false;
} }
@ -164,14 +164,14 @@ function check_files()
$result = md5(str_replace("\r", "", file_get_contents($relativeName))); $result = md5(str_replace("\r", "", file_get_contents($relativeName)));
} }
if ($result != $sum) { if ($result != $sum) {
$errors[] = getlocal("install.bad_checksum", array(MIBEW_WEB_ROOT . "/$file")); $errors[] = getlocal("Checksum differs for {0}", array(MIBEW_WEB_ROOT . "/$file"));
$errors[] = getlocal("install.check_files"); $errors[] = getlocal("Please, re-upload files to the server.");
return false; return false;
} }
} }
} }
$page['done'][] = getlocal("install.0.package"); $page['done'][] = getlocal("Mibew package is valid.");
return true; return true;
} }
@ -182,7 +182,7 @@ function check_connection()
if ($link) { if ($link) {
$result = mysql_query("SELECT VERSION() as c", $link); $result = mysql_query("SELECT VERSION() as c", $link);
if ($result && $ver = mysql_fetch_array($result, MYSQL_ASSOC)) { if ($result && $ver = mysql_fetch_array($result, MYSQL_ASSOC)) {
$page['done'][] = getlocal("install.1.connected", array($ver['c'])); $page['done'][] = getlocal("You are connected to MySQL server version {0}", array($ver['c']));
mysql_free_result($result); mysql_free_result($result);
} else { } else {
$errors[] = "Version of your SQL server is unknown. Please check. Error: " . mysql_error($link); $errors[] = "Version of your SQL server is unknown. Please check. Error: " . mysql_error($link);
@ -191,7 +191,7 @@ function check_connection()
} }
return $link; return $link;
} else { } else {
$errors[] = getlocal("install.connection.error", array(mysql_error())); $errors[] = getlocal("Could not connect. Please check server settings in config.php. Error: {0}", array(mysql_error()));
return null; return null;
} }
} }
@ -200,13 +200,13 @@ function check_database($link)
{ {
global $mysqldb, $page; global $mysqldb, $page;
if (mysql_select_db($mysqldb, $link)) { if (mysql_select_db($mysqldb, $link)) {
$page['done'][] = getlocal("install.2.db_exists", array($mysqldb)); $page['done'][] = getlocal("Database \"{0}\" is created.", array($mysqldb));
mysql_query("SET character set utf8", $link); mysql_query("SET character set utf8", $link);
return true; return true;
} else { } else {
$page['nextstep'] = getlocal("install.2.create", array($mysqldb)); $page['nextstep'] = getlocal("Create database \"{0}\"", array($mysqldb));
$page['nextnotice'] = getlocal("install.2.notice"); $page['nextnotice'] = getlocal("The database was not found on the server. If you have permissions to create it now, click on the following link.");
$page['nextstepurl'] = MIBEW_WEB_ROOT . "/install/dbperform.php?act=createdb"; $page['nextstepurl'] = MIBEW_WEB_ROOT . "/install/dbperform.php?act=createdb";
} }
return false; return false;
@ -219,10 +219,10 @@ function check_tables($link)
if ($curr_tables !== false) { if ($curr_tables !== false) {
$tocreate = array_diff(array_keys($dbtables), $curr_tables); $tocreate = array_diff(array_keys($dbtables), $curr_tables);
if (count($tocreate) == 0) { if (count($tocreate) == 0) {
$page['done'][] = getlocal("install.3.tables_exist"); $page['done'][] = getlocal("Required tables are created.");
return true; return true;
} else { } else {
$page['nextstep'] = getlocal("install.3.create"); $page['nextstep'] = getlocal("Create required tables.");
$page['nextstepurl'] = MIBEW_WEB_ROOT . "/install/dbperform.php?act=ct"; $page['nextstepurl'] = MIBEW_WEB_ROOT . "/install/dbperform.php?act=ct";
} }
} }
@ -244,9 +244,9 @@ function check_columns($link)
$cannot_update = array_diff($tocreate, $dbtables_can_update[$id]); $cannot_update = array_diff($tocreate, $dbtables_can_update[$id]);
if (count($cannot_update) != 0) { if (count($cannot_update) != 0) {
$errors[] = "Key columns are absent in table `$id'. Unable to continue installation."; $errors[] = "Key columns are absent in table `$id'. Unable to continue installation.";
$page['nextstep'] = getlocal("install.kill_tables"); $page['nextstep'] = getlocal("Drop existing tables from database");
$page['nextstepurl'] = MIBEW_WEB_ROOT . "/install/dbperform.php?act=dt"; $page['nextstepurl'] = MIBEW_WEB_ROOT . "/install/dbperform.php?act=dt";
$page['nextnotice'] = getlocal("install.kill_tables.notice"); $page['nextnotice'] = getlocal("Impossible to update tables structure. Try to do it manually or recreate all tables (warning: all your data will be lost).");
return false; return false;
} }
$need_to_create_columns = true; $need_to_create_columns = true;
@ -266,13 +266,13 @@ function check_columns($link)
} }
if ($need_to_create_columns || $need_to_create_indexes) { if ($need_to_create_columns || $need_to_create_indexes) {
$page['nextstep'] = getlocal("install.4.create"); $page['nextstep'] = getlocal("Update tables");
$page['nextstepurl'] = MIBEW_WEB_ROOT . "/install/dbperform.php?act=addcolumns"; $page['nextstepurl'] = MIBEW_WEB_ROOT . "/install/dbperform.php?act=addcolumns";
$page['nextnotice'] = getlocal("install.4.notice"); $page['nextnotice'] = getlocal("Structure of your tables should be adjusted for new version of Messenger.");
return false; return false;
} }
$page['done'][] = getlocal("install.4.done"); $page['done'][] = getlocal("Tables structure is up to date.");
return true; return true;
} }
@ -281,9 +281,9 @@ function check_sound()
global $page; global $page;
$page['soundcheck'] = true; $page['soundcheck'] = true;
$page['done'][] = getlocal("install.5.text", array( $page['done'][] = getlocal("Click to check the sound: {0} and {1}", array(
"<a id='check-nv' href='javascript:void(0)'>" . getlocal("install.5.newvisitor") . "</a>", "<a id='check-nv' href='javascript:void(0)'>" . getlocal("New Visitor") . "</a>",
"<a id='check-nm' href='javascript:void(0)'>" . getlocal("install.5.newmessage") . "</a>" "<a id='check-nm' href='javascript:void(0)'>" . getlocal("New Message") . "</a>"
)); ));
} }
@ -434,7 +434,7 @@ function check_status()
{ {
global $page, $mysqlprefix; global $page, $mysqlprefix;
$page['done'][] = getlocal("install.0.php", array(phpversion())); $page['done'][] = getlocal("PHP version {0}", array(phpversion()));
if (!check_mibewroot()) { if (!check_mibewroot()) {
return; return;
@ -470,11 +470,11 @@ function check_status()
check_sound(); check_sound();
$page['done'][] = getlocal("installed.message"); $page['done'][] = getlocal("<b>Application installed successfully.</b>");
if (!check_admin($link)) { if (!check_admin($link)) {
$page['nextstep'] = getlocal("installed.login_link"); $page['nextstep'] = getlocal("Proceed to the login page");
$page['nextnotice'] = getlocal("installed.notice", array(MIBEW_WEB_ROOT . "/install/")); $page['nextnotice'] = getlocal("You can logon as <b>admin</b> with empty password.<br/><br/><span class=\"warning\">!!! For security reasons please change your password immediately and remove the {0} folder from your server.</span>", array(MIBEW_WEB_ROOT . "/install/"));
$page['nextstepurl'] = MIBEW_WEB_ROOT . "/operator/login?login=admin"; $page['nextstepurl'] = MIBEW_WEB_ROOT . "/operator/login?login=admin";
} }
@ -493,7 +493,7 @@ function check_status()
check_status(); check_status();
$page['title'] = getlocal("install.title"); $page['title'] = getlocal("Installation");
$page['fixedwrap'] = true; $page['fixedwrap'] = true;
$page['errors'] = $errors; $page['errors'] = $errors;

View File

@ -5,4 +5,4 @@
You may obtain a copy of the License at You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0 http://www.apache.org/licenses/LICENSE-2.0
*/ */
(function(a,c,d){a.Views.CloseControl=a.Views.Control.extend({template:c.templates.chat_controls_close,events:d.extend({},a.Views.Control.prototype.events,{click:"closeThread"}),closeThread:function(){var b=a.Localization.get("chat.close.confirmation");(!1===b||confirm(b))&&this.model.closeThread()}})})(Mibew,Handlebars,_); (function(a,c,d){a.Views.CloseControl=a.Views.Control.extend({template:c.templates.chat_controls_close,events:d.extend({},a.Views.Control.prototype.events,{click:"closeThread"}),closeThread:function(){var b=a.Localization.get("Are you sure want to leave chat?");(!1===b||confirm(b))&&this.model.closeThread()}})})(Mibew,Handlebars,_);

View File

@ -6,5 +6,5 @@
http://www.apache.org/licenses/LICENSE-2.0 http://www.apache.org/licenses/LICENSE-2.0
*/ */
(function(c,e){var d=c.Models.BaseSurveyForm;c.Models.LeaveMessageForm=d.extend({defaults:e.extend({},d.prototype.defaults,{showCaptcha:!1,captcha:""}),validate:function(a){var b=c.Localization;if("undefined"!=typeof a.email){if(!a.email)return b.get("leavemessage.error.email.required");if(!c.Utils.checkEmail(a.email))return b.get("leavemessage.error.wrong.email")}if("undefined"!=typeof a.name&&!a.name)return b.get("leavemessage.error.name.required");if("undefined"!=typeof a.message&&!a.message)return b.get("leavemessage.error.message.required"); (function(c,e){var d=c.Models.BaseSurveyForm;c.Models.LeaveMessageForm=d.extend({defaults:e.extend({},d.prototype.defaults,{showCaptcha:!1,captcha:""}),validate:function(a){var b=c.Localization;if("undefined"!=typeof a.email){if(!a.email)return b.get("leavemessage.error.email.required");if(!c.Utils.checkEmail(a.email))return b.get("leavemessage.error.wrong.email")}if("undefined"!=typeof a.name&&!a.name)return b.get("leavemessage.error.name.required");if("undefined"!=typeof a.message&&!a.message)return b.get("leavemessage.error.message.required");
if(this.get("showCaptcha")&&"undefined"!=typeof a.captcha&&!a.captcha)return b.get("errors.captcha")},submit:function(){if(!this.validate(this.attributes)){var a=this;c.Objects.server.callFunctions([{"function":"processLeaveMessage",arguments:{references:{},"return":{},groupId:a.get("groupId"),name:a.get("name"),info:a.get("info"),email:a.get("email"),message:a.get("message"),referrer:a.get("referrer"),captcha:a.get("captcha"),threadId:null,token:null}}],function(b){0==b.errorCode?a.trigger("submit:complete", if(this.get("showCaptcha")&&"undefined"!=typeof a.captcha&&!a.captcha)return b.get("The letters you typed don't match the letters that were shown in the picture.")},submit:function(){if(!this.validate(this.attributes)){var a=this;c.Objects.server.callFunctions([{"function":"processLeaveMessage",arguments:{references:{},"return":{},groupId:a.get("groupId"),name:a.get("name"),info:a.get("info"),email:a.get("email"),message:a.get("message"),referrer:a.get("referrer"),captcha:a.get("captcha"),threadId:null,token:null}}],function(b){0==b.errorCode?a.trigger("submit:complete",
a):a.trigger("submit:error",a,{code:b.errorCode,message:b.errorMessage||""})},!0)}},ERROR_WRONG_CAPTCHA:10})})(Mibew,_); a):a.trigger("submit:error",a,{code:b.errorCode,message:b.errorMessage||""})},!0)}},ERROR_WRONG_CAPTCHA:10})})(Mibew,_);

View File

@ -5,6 +5,6 @@
You may obtain a copy of the License at You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0 http://www.apache.org/licenses/LICENSE-2.0
*/ */
(function(b,e){var d=b.Models.BaseSurveyForm;b.Models.SurveyForm=d.extend({defaults:e.extend({},d.prototype.defaults,{showEmail:!1,showMessage:!1,canChangeName:!1}),validate:function(a){if(this.get("showEmail")&&"undefined"!=typeof a.email&&!b.Utils.checkEmail(a.email))return b.Localization.get("presurvey.error.wrong_email")},submit:function(){if(!this.validate(this.attributes)){var a=this;b.Objects.server.callFunctions([{"function":"processSurvey",arguments:{references:{},"return":{next:"next",options:"options"}, (function(b,e){var d=b.Models.BaseSurveyForm;b.Models.SurveyForm=d.extend({defaults:e.extend({},d.prototype.defaults,{showEmail:!1,showMessage:!1,canChangeName:!1}),validate:function(a){if(this.get("showEmail")&&"undefined"!=typeof a.email&&!b.Utils.checkEmail(a.email))return b.Localization.get("Wrong email address.")},submit:function(){if(!this.validate(this.attributes)){var a=this;b.Objects.server.callFunctions([{"function":"processSurvey",arguments:{references:{},"return":{next:"next",options:"options"},
groupId:a.get("groupId"),name:a.get("name"),info:a.get("info"),email:a.get("email"),message:a.get("message"),referrer:a.get("referrer"),threadId:null,token:null}}],function(c){if(0==c.errorCode)switch(a.trigger("submit:complete",a),b.Application.Survey.stop(),c.next){case "chat":b.Application.Chat.start(c.options);break;case "leaveMessage":b.Application.LeaveMessage.start(c.options);break;default:throw Error("Do not know how to continue!");}else a.trigger("submit:error",a,{code:c.errorCode,message:c.errorMessage|| groupId:a.get("groupId"),name:a.get("name"),info:a.get("info"),email:a.get("email"),message:a.get("message"),referrer:a.get("referrer"),threadId:null,token:null}}],function(c){if(0==c.errorCode)switch(a.trigger("submit:complete",a),b.Application.Survey.stop(),c.next){case "chat":b.Application.Chat.start(c.options);break;case "leaveMessage":b.Application.LeaveMessage.start(c.options);break;default:throw Error("Do not know how to continue!");}else a.trigger("submit:error",a,{code:c.errorCode,message:c.errorMessage||
""})},!0)}}})})(Mibew,_); ""})},!0)}}})})(Mibew,_);

View File

@ -110,7 +110,7 @@ MibewAPIChatInteraction=function(){this.mandatoryArguments=function(){return{"*"
http://www.apache.org/licenses/LICENSE-2.0 http://www.apache.org/licenses/LICENSE-2.0
*/ */
(function(c,e){var d=c.Models.BaseSurveyForm;c.Models.LeaveMessageForm=d.extend({defaults:e.extend({},d.prototype.defaults,{showCaptcha:!1,captcha:""}),validate:function(a){var b=c.Localization;if("undefined"!=typeof a.email){if(!a.email)return b.get("leavemessage.error.email.required");if(!c.Utils.checkEmail(a.email))return b.get("leavemessage.error.wrong.email")}if("undefined"!=typeof a.name&&!a.name)return b.get("leavemessage.error.name.required");if("undefined"!=typeof a.message&&!a.message)return b.get("leavemessage.error.message.required"); (function(c,e){var d=c.Models.BaseSurveyForm;c.Models.LeaveMessageForm=d.extend({defaults:e.extend({},d.prototype.defaults,{showCaptcha:!1,captcha:""}),validate:function(a){var b=c.Localization;if("undefined"!=typeof a.email){if(!a.email)return b.get("leavemessage.error.email.required");if(!c.Utils.checkEmail(a.email))return b.get("leavemessage.error.wrong.email")}if("undefined"!=typeof a.name&&!a.name)return b.get("leavemessage.error.name.required");if("undefined"!=typeof a.message&&!a.message)return b.get("leavemessage.error.message.required");
if(this.get("showCaptcha")&&"undefined"!=typeof a.captcha&&!a.captcha)return b.get("errors.captcha")},submit:function(){if(!this.validate(this.attributes)){var a=this;c.Objects.server.callFunctions([{"function":"processLeaveMessage",arguments:{references:{},"return":{},groupId:a.get("groupId"),name:a.get("name"),info:a.get("info"),email:a.get("email"),message:a.get("message"),referrer:a.get("referrer"),captcha:a.get("captcha"),threadId:null,token:null}}],function(b){0==b.errorCode?a.trigger("submit:complete", if(this.get("showCaptcha")&&"undefined"!=typeof a.captcha&&!a.captcha)return b.get("The letters you typed don't match the letters that were shown in the picture.")},submit:function(){if(!this.validate(this.attributes)){var a=this;c.Objects.server.callFunctions([{"function":"processLeaveMessage",arguments:{references:{},"return":{},groupId:a.get("groupId"),name:a.get("name"),info:a.get("info"),email:a.get("email"),message:a.get("message"),referrer:a.get("referrer"),captcha:a.get("captcha"),threadId:null,token:null}}],function(b){0==b.errorCode?a.trigger("submit:complete",
a):a.trigger("submit:error",a,{code:b.errorCode,message:b.errorMessage||""})},!0)}},ERROR_WRONG_CAPTCHA:10})})(Mibew,_); a):a.trigger("submit:error",a,{code:b.errorCode,message:b.errorMessage||""})},!0)}},ERROR_WRONG_CAPTCHA:10})})(Mibew,_);
/* /*
Copyright 2005-2014 the original author or authors. Copyright 2005-2014 the original author or authors.
@ -147,7 +147,7 @@ this.play(b+"/sounds/new_message")}this.set({skipNextMessageSound:!1})}})})(Mibe
You may obtain a copy of the License at You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0 http://www.apache.org/licenses/LICENSE-2.0
*/ */
(function(b,e){var d=b.Models.BaseSurveyForm;b.Models.SurveyForm=d.extend({defaults:e.extend({},d.prototype.defaults,{showEmail:!1,showMessage:!1,canChangeName:!1}),validate:function(a){if(this.get("showEmail")&&"undefined"!=typeof a.email&&!b.Utils.checkEmail(a.email))return b.Localization.get("presurvey.error.wrong_email")},submit:function(){if(!this.validate(this.attributes)){var a=this;b.Objects.server.callFunctions([{"function":"processSurvey",arguments:{references:{},"return":{next:"next",options:"options"}, (function(b,e){var d=b.Models.BaseSurveyForm;b.Models.SurveyForm=d.extend({defaults:e.extend({},d.prototype.defaults,{showEmail:!1,showMessage:!1,canChangeName:!1}),validate:function(a){if(this.get("showEmail")&&"undefined"!=typeof a.email&&!b.Utils.checkEmail(a.email))return b.Localization.get("Wrong email address.")},submit:function(){if(!this.validate(this.attributes)){var a=this;b.Objects.server.callFunctions([{"function":"processSurvey",arguments:{references:{},"return":{next:"next",options:"options"},
groupId:a.get("groupId"),name:a.get("name"),info:a.get("info"),email:a.get("email"),message:a.get("message"),referrer:a.get("referrer"),threadId:null,token:null}}],function(c){if(0==c.errorCode)switch(a.trigger("submit:complete",a),b.Application.Survey.stop(),c.next){case "chat":b.Application.Chat.start(c.options);break;case "leaveMessage":b.Application.LeaveMessage.start(c.options);break;default:throw Error("Do not know how to continue!");}else a.trigger("submit:error",a,{code:c.errorCode,message:c.errorMessage|| groupId:a.get("groupId"),name:a.get("name"),info:a.get("info"),email:a.get("email"),message:a.get("message"),referrer:a.get("referrer"),threadId:null,token:null}}],function(c){if(0==c.errorCode)switch(a.trigger("submit:complete",a),b.Application.Survey.stop(),c.next){case "chat":b.Application.Chat.start(c.options);break;case "leaveMessage":b.Application.LeaveMessage.start(c.options);break;default:throw Error("Do not know how to continue!");}else a.trigger("submit:error",a,{code:c.errorCode,message:c.errorMessage||
""})},!0)}}})})(Mibew,_); ""})},!0)}}})})(Mibew,_);
/* /*
@ -194,7 +194,7 @@ changeGroupDescription:function(){var a=this.ui.groupSelect.prop("selectedIndex"
You may obtain a copy of the License at You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0 http://www.apache.org/licenses/LICENSE-2.0
*/ */
(function(a,c,d){a.Views.CloseControl=a.Views.Control.extend({template:c.templates.chat_controls_close,events:d.extend({},a.Views.Control.prototype.events,{click:"closeThread"}),closeThread:function(){var b=a.Localization.get("chat.close.confirmation");(!1===b||confirm(b))&&this.model.closeThread()}})})(Mibew,Handlebars,_); (function(a,c,d){a.Views.CloseControl=a.Views.Control.extend({template:c.templates.chat_controls_close,events:d.extend({},a.Views.Control.prototype.events,{click:"closeThread"}),closeThread:function(){var b=a.Localization.get("Are you sure want to leave chat?");(!1===b||confirm(b))&&this.model.closeThread()}})})(Mibew,Handlebars,_);
/* /*
Copyright 2005-2014 the original author or authors. Copyright 2005-2014 the original author or authors.
Licensed under the Apache License, Version 2.0 (the "License"). Licensed under the Apache License, Version 2.0 (the "License").

View File

@ -5,6 +5,6 @@
You may obtain a copy of the License at You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0 http://www.apache.org/licenses/LICENSE-2.0
*/ */
(function(a,h,j){var c=0,g=function(){c++;10==c&&(alert(a.Localization.get("pending.errors.network")),c=0)},b=new h.Marionette.Application;b.addRegions({agentsRegion:"#agents-region",statusPanelRegion:"#status-panel-region",threadsRegion:"#threads-region",visitorsRegion:"#visitors-region"});b.addInitializer(function(d){a.PluginOptions=d.plugins||{};var c=a.Objects,f=a.Objects.Models,e=a.Objects.Collections;c.server=new a.Server(j.extend({interactionType:MibewAPIUsersInteraction,onTimeout:g,onTransportError:g}, (function(a,h,j){var c=0,g=function(){c++;10==c&&(alert(a.Localization.get("Network problems detected. Please refresh the page.")),c=0)},b=new h.Marionette.Application;b.addRegions({agentsRegion:"#agents-region",statusPanelRegion:"#status-panel-region",threadsRegion:"#threads-region",visitorsRegion:"#visitors-region"});b.addInitializer(function(d){a.PluginOptions=d.plugins||{};var c=a.Objects,f=a.Objects.Models,e=a.Objects.Collections;c.server=new a.Server(j.extend({interactionType:MibewAPIUsersInteraction,onTimeout:g,onTransportError:g},
d.server));f.page=new a.Models.Page(d.page);f.agent=new a.Models.Agent(d.agent);e.threads=new a.Collections.Threads;b.threadsRegion.show(new a.Views.ThreadsCollection({collection:e.threads}));d.page.showVisitors&&(e.visitors=new a.Collections.Visitors,b.visitorsRegion.show(new a.Views.VisitorsCollection({collection:e.visitors})));f.statusPanel=new a.Models.StatusPanel;b.statusPanelRegion.show(new a.Views.StatusPanel({model:f.statusPanel}));d.page.showOnlineOperators&&(e.agents=new a.Collections.Agents, d.server));f.page=new a.Models.Page(d.page);f.agent=new a.Models.Agent(d.agent);e.threads=new a.Collections.Threads;b.threadsRegion.show(new a.Views.ThreadsCollection({collection:e.threads}));d.page.showVisitors&&(e.visitors=new a.Collections.Visitors,b.visitorsRegion.show(new a.Views.VisitorsCollection({collection:e.visitors})));f.statusPanel=new a.Models.StatusPanel;b.statusPanelRegion.show(new a.Views.StatusPanel({model:f.statusPanel}));d.page.showOnlineOperators&&(e.agents=new a.Collections.Agents,
b.agentsRegion.show(new a.Views.AgentsCollection({collection:e.agents})));c.server.callFunctionsPeriodically(function(){return[{"function":"update",arguments:{"return":{},references:{},agentId:f.agent.id}}]},function(){})});b.on("start",function(){a.Objects.server.runUpdater()});a.Application=b})(Mibew,Backbone,_); b.agentsRegion.show(new a.Views.AgentsCollection({collection:e.agents})));c.server.callFunctionsPeriodically(function(){return[{"function":"update",arguments:{"return":{},references:{},agentId:f.agent.id}}]},function(){})});b.on("start",function(){a.Objects.server.runUpdater()});a.Application=b})(Mibew,Backbone,_);

View File

@ -8,5 +8,5 @@
(function(d,h,k){d.Views.ThreadsCollection=d.Views.CompositeBase.extend({template:h.templates.threads_collection,itemView:d.Views.QueuedThread,itemViewContainer:"#threads-container",emptyView:d.Views.NoThreads,className:"threads-collection",collectionEvents:{sort:"render","sort:field":"createSortField",add:"threadAdded"},itemViewOptions:function(a){return{tagName:d.Objects.Models.page.get("threadTag"),collection:a.get("controls")}},initialize:function(){window.setInterval(k.bind(this.updateTimers, (function(d,h,k){d.Views.ThreadsCollection=d.Views.CompositeBase.extend({template:h.templates.threads_collection,itemView:d.Views.QueuedThread,itemViewContainer:"#threads-container",emptyView:d.Views.NoThreads,className:"threads-collection",collectionEvents:{sort:"render","sort:field":"createSortField",add:"threadAdded"},itemViewOptions:function(a){return{tagName:d.Objects.Models.page.get("threadTag"),collection:a.get("controls")}},initialize:function(){window.setInterval(k.bind(this.updateTimers,
this),2E3);this.on("itemview:before:render",this.updateStyles,this);this.on("composite:collection:rendered",this.updateTimers,this)},updateStyles:function(a){var b=this.collection,c=a.model,d=this;if(c.id){var e=this.getQueueCode(c),f=!1,g=!1,b=b.filter(function(a){return d.getQueueCode(a)==e});0<b.length&&(g=b[0].id==c.id,f=b[b.length-1].id==c.id);if(0<a.lastStyles.length){c=0;for(b=a.lastStyles.length;c<b;c++)a.$el.removeClass(a.lastStyles[c]);a.lastStyles=[]}c=(e!=this.QUEUE_BAN?"in":"")+this.queueCodeToString(e); this),2E3);this.on("itemview:before:render",this.updateStyles,this);this.on("composite:collection:rendered",this.updateTimers,this)},updateStyles:function(a){var b=this.collection,c=a.model,d=this;if(c.id){var e=this.getQueueCode(c),f=!1,g=!1,b=b.filter(function(a){return d.getQueueCode(a)==e});0<b.length&&(g=b[0].id==c.id,f=b[b.length-1].id==c.id);if(0<a.lastStyles.length){c=0;for(b=a.lastStyles.length;c<b;c++)a.$el.removeClass(a.lastStyles[c]);a.lastStyles=[]}c=(e!=this.QUEUE_BAN?"in":"")+this.queueCodeToString(e);
a.lastStyles.push(c);g&&a.lastStyles.push(c+"-first");f&&a.lastStyles.push(c+"-last");c=0;for(b=a.lastStyles.length;c<b;c++)a.$el.addClass(a.lastStyles[c])}},updateTimers:function(){d.Utils.updateTimers(this.$el,".timesince")},createSortField:function(a,b){var c=this.getQueueCode(a)||"Z";b.field=c.toString()+"_"+a.get("waitingTime").toString()},threadAdded:function(){var a=d.Objects.Models.page.get("mibewRoot");"undefined"!==typeof a&&d.Utils.playSound(a+"/sounds/new_user");if(d.Objects.Models.page.get("showPopup"))this.once("render", a.lastStyles.push(c);g&&a.lastStyles.push(c+"-first");f&&a.lastStyles.push(c+"-last");c=0;for(b=a.lastStyles.length;c<b;c++)a.$el.addClass(a.lastStyles[c])}},updateTimers:function(){d.Utils.updateTimers(this.$el,".timesince")},createSortField:function(a,b){var c=this.getQueueCode(a)||"Z";b.field=c.toString()+"_"+a.get("waitingTime").toString()},threadAdded:function(){var a=d.Objects.Models.page.get("mibewRoot");"undefined"!==typeof a&&d.Utils.playSound(a+"/sounds/new_user");if(d.Objects.Models.page.get("showPopup"))this.once("render",
function(){alert(d.Localization.get("pending.popup_notification"))})},getQueueCode:function(a){var b=a.get("state");return!1!=a.get("ban")&&b!=a.STATE_CHATTING?this.QUEUE_BAN:b==a.STATE_QUEUE||b==a.STATE_LOADING?this.QUEUE_WAITING:b==a.STATE_CLOSED||b==a.STATE_LEFT?this.QUEUE_CLOSED:b==a.STATE_WAITING?this.QUEUE_PRIO:b==a.STATE_CHATTING?this.QUEUE_CHATTING:!1},queueCodeToString:function(a){return a==this.QUEUE_PRIO?"prio":a==this.QUEUE_WAITING?"wait":a==this.QUEUE_CHATTING?"chat":a==this.QUEUE_BAN? function(){alert(d.Localization.get("A new visitor is waiting for an answer."))})},getQueueCode:function(a){var b=a.get("state");return!1!=a.get("ban")&&b!=a.STATE_CHATTING?this.QUEUE_BAN:b==a.STATE_QUEUE||b==a.STATE_LOADING?this.QUEUE_WAITING:b==a.STATE_CLOSED||b==a.STATE_LEFT?this.QUEUE_CLOSED:b==a.STATE_WAITING?this.QUEUE_PRIO:b==a.STATE_CHATTING?this.QUEUE_CHATTING:!1},queueCodeToString:function(a){return a==this.QUEUE_PRIO?"prio":a==this.QUEUE_WAITING?"wait":a==this.QUEUE_CHATTING?"chat":a==this.QUEUE_BAN?
"ban":a==this.QUEUE_CLOSED?"closed":""},QUEUE_PRIO:1,QUEUE_WAITING:2,QUEUE_CHATTING:3,QUEUE_BAN:4,QUEUE_CLOSED:5})})(Mibew,Handlebars,_); "ban":a==this.QUEUE_CLOSED?"closed":""},QUEUE_PRIO:1,QUEUE_WAITING:2,QUEUE_CHATTING:3,QUEUE_BAN:4,QUEUE_CLOSED:5})})(Mibew,Handlebars,_);

View File

@ -6,7 +6,7 @@
http://www.apache.org/licenses/LICENSE-2.0 http://www.apache.org/licenses/LICENSE-2.0
*/ */
(function(d,e){d.Views.QueuedThread=d.Views.CompositeBase.extend({template:e.templates.queued_thread,itemView:d.Views.Control,itemViewContainer:".thread-controls",className:"thread",modelEvents:{change:"render"},events:{"click .open-dialog":"openDialog","click .view-control":"viewDialog","click .track-control":"showTrack","click .ban-control":"showBan","click .geo-link":"showGeoInfo","click .first-message a":"showFirstMessage"},initialize:function(){this.lastStyles=[]},serializeData:function(){var a= (function(d,e){d.Views.QueuedThread=d.Views.CompositeBase.extend({template:e.templates.queued_thread,itemView:d.Views.Control,itemViewContainer:".thread-controls",className:"thread",modelEvents:{change:"render"},events:{"click .open-dialog":"openDialog","click .view-control":"viewDialog","click .track-control":"showTrack","click .ban-control":"showBan","click .geo-link":"showGeoInfo","click .first-message a":"showFirstMessage"},initialize:function(){this.lastStyles=[]},serializeData:function(){var a=
this.model,b=d.Objects.Models.page,c=a.toJSON();c.stateDesc=this.stateToDesc(a.get("state"));c.chatting=a.get("state")==a.STATE_CHATTING;c.tracked=b.get("showVisitors");c.firstMessage&&(c.firstMessagePreview=30<c.firstMessage.length?c.firstMessage.substring(0,30)+"...":c.firstMessage);return c},stateToDesc:function(a){var b=d.Localization;return a==this.model.STATE_QUEUE?b.get("chat.thread.state_wait"):a==this.model.STATE_WAITING?b.get("chat.thread.state_wait_for_another_agent"):a==this.model.STATE_CHATTING? this.model,b=d.Objects.Models.page,c=a.toJSON();c.stateDesc=this.stateToDesc(a.get("state"));c.chatting=a.get("state")==a.STATE_CHATTING;c.tracked=b.get("showVisitors");c.firstMessage&&(c.firstMessagePreview=30<c.firstMessage.length?c.firstMessage.substring(0,30)+"...":c.firstMessage);return c},stateToDesc:function(a){var b=d.Localization;return a==this.model.STATE_QUEUE?b.get("In queue"):a==this.model.STATE_WAITING?b.get("Waiting for operator"):a==this.model.STATE_CHATTING?
b.get("chat.thread.state_chatting_with_agent"):a==this.model.STATE_CLOSED?b.get("chat.thread.state_closed"):a==this.model.STATE_LOADING?b.get("chat.thread.state_loading"):""},showGeoInfo:function(){var a=this.model.get("userIp");if(a){var b=d.Objects.Models.page,c=b.get("geoLink").replace("{ip}",a);d.Popup.open(c,"ip"+a,b.get("geoWindowParams"))}},openDialog:function(){var a=this.model;if(a.get("canOpen")||a.get("canView"))a=!a.get("canOpen"),this.showDialogWindow(a)},viewDialog:function(){this.showDialogWindow(!0)}, b.get("In chat"):a==this.model.STATE_CLOSED?b.get("Closed"):a==this.model.STATE_LOADING?b.get("Loading"):""},showGeoInfo:function(){var a=this.model.get("userIp");if(a){var b=d.Objects.Models.page,c=b.get("geoLink").replace("{ip}",a);d.Popup.open(c,"ip"+a,b.get("geoWindowParams"))}},openDialog:function(){var a=this.model;if(a.get("canOpen")||a.get("canView"))a=!a.get("canOpen"),this.showDialogWindow(a)},viewDialog:function(){this.showDialogWindow(!0)},
showDialogWindow:function(a){var b=this.model.id,c=d.Objects.Models.page;d.Popup.open(c.get("agentLink")+"/"+b+(a?"?viewonly=true":""),"ImCenter"+b,c.get("chatWindowParams"))},showTrack:function(){var a=this.model.id,b=d.Objects.Models.page;d.Popup.open(b.get("trackedLink")+"?thread="+a,"ImTracked"+a,b.get("trackedUserWindowParams"))},showBan:function(){var a=this.model,b=a.get("ban"),c=d.Objects.Models.page;d.Popup.open(c.get("banLink")+"/"+(!1!==b?b.id+"/edit":"add?thread="+a.id),"ImBan"+b.id,c.get("banWindowParams"))}, showDialogWindow:function(a){var b=this.model.id,c=d.Objects.Models.page;d.Popup.open(c.get("agentLink")+"/"+b+(a?"?viewonly=true":""),"ImCenter"+b,c.get("chatWindowParams"))},showTrack:function(){var a=this.model.id,b=d.Objects.Models.page;d.Popup.open(b.get("trackedLink")+"?thread="+a,"ImTracked"+a,b.get("trackedUserWindowParams"))},showBan:function(){var a=this.model,b=a.get("ban"),c=d.Objects.Models.page;d.Popup.open(c.get("banLink")+"/"+(!1!==b?b.id+"/edit":"add?thread="+a.id),"ImBan"+b.id,c.get("banWindowParams"))},
showFirstMessage:function(){var a=this.model.get("firstMessage");a&&alert(a)}})})(Mibew,Handlebars); showFirstMessage:function(){var a=this.model.get("firstMessage");a&&alert(a)}})})(Mibew,Handlebars);

View File

@ -93,8 +93,8 @@ a,c);return c.field},updateVisitors:function(a){if(0==a.errorCode){var c;c=a.cur
http://www.apache.org/licenses/LICENSE-2.0 http://www.apache.org/licenses/LICENSE-2.0
*/ */
(function(d,e){d.Views.QueuedThread=d.Views.CompositeBase.extend({template:e.templates.queued_thread,itemView:d.Views.Control,itemViewContainer:".thread-controls",className:"thread",modelEvents:{change:"render"},events:{"click .open-dialog":"openDialog","click .view-control":"viewDialog","click .track-control":"showTrack","click .ban-control":"showBan","click .geo-link":"showGeoInfo","click .first-message a":"showFirstMessage"},initialize:function(){this.lastStyles=[]},serializeData:function(){var a= (function(d,e){d.Views.QueuedThread=d.Views.CompositeBase.extend({template:e.templates.queued_thread,itemView:d.Views.Control,itemViewContainer:".thread-controls",className:"thread",modelEvents:{change:"render"},events:{"click .open-dialog":"openDialog","click .view-control":"viewDialog","click .track-control":"showTrack","click .ban-control":"showBan","click .geo-link":"showGeoInfo","click .first-message a":"showFirstMessage"},initialize:function(){this.lastStyles=[]},serializeData:function(){var a=
this.model,b=d.Objects.Models.page,c=a.toJSON();c.stateDesc=this.stateToDesc(a.get("state"));c.chatting=a.get("state")==a.STATE_CHATTING;c.tracked=b.get("showVisitors");c.firstMessage&&(c.firstMessagePreview=30<c.firstMessage.length?c.firstMessage.substring(0,30)+"...":c.firstMessage);return c},stateToDesc:function(a){var b=d.Localization;return a==this.model.STATE_QUEUE?b.get("chat.thread.state_wait"):a==this.model.STATE_WAITING?b.get("chat.thread.state_wait_for_another_agent"):a==this.model.STATE_CHATTING? this.model,b=d.Objects.Models.page,c=a.toJSON();c.stateDesc=this.stateToDesc(a.get("state"));c.chatting=a.get("state")==a.STATE_CHATTING;c.tracked=b.get("showVisitors");c.firstMessage&&(c.firstMessagePreview=30<c.firstMessage.length?c.firstMessage.substring(0,30)+"...":c.firstMessage);return c},stateToDesc:function(a){var b=d.Localization;return a==this.model.STATE_QUEUE?b.get("In queue"):a==this.model.STATE_WAITING?b.get("Waiting for operator"):a==this.model.STATE_CHATTING?
b.get("chat.thread.state_chatting_with_agent"):a==this.model.STATE_CLOSED?b.get("chat.thread.state_closed"):a==this.model.STATE_LOADING?b.get("chat.thread.state_loading"):""},showGeoInfo:function(){var a=this.model.get("userIp");if(a){var b=d.Objects.Models.page,c=b.get("geoLink").replace("{ip}",a);d.Popup.open(c,"ip"+a,b.get("geoWindowParams"))}},openDialog:function(){var a=this.model;if(a.get("canOpen")||a.get("canView"))a=!a.get("canOpen"),this.showDialogWindow(a)},viewDialog:function(){this.showDialogWindow(!0)}, b.get("In chat"):a==this.model.STATE_CLOSED?b.get("Closed"):a==this.model.STATE_LOADING?b.get("Loading"):""},showGeoInfo:function(){var a=this.model.get("userIp");if(a){var b=d.Objects.Models.page,c=b.get("geoLink").replace("{ip}",a);d.Popup.open(c,"ip"+a,b.get("geoWindowParams"))}},openDialog:function(){var a=this.model;if(a.get("canOpen")||a.get("canView"))a=!a.get("canOpen"),this.showDialogWindow(a)},viewDialog:function(){this.showDialogWindow(!0)},
showDialogWindow:function(a){var b=this.model.id,c=d.Objects.Models.page;d.Popup.open(c.get("agentLink")+"/"+b+(a?"?viewonly=true":""),"ImCenter"+b,c.get("chatWindowParams"))},showTrack:function(){var a=this.model.id,b=d.Objects.Models.page;d.Popup.open(b.get("trackedLink")+"?thread="+a,"ImTracked"+a,b.get("trackedUserWindowParams"))},showBan:function(){var a=this.model,b=a.get("ban"),c=d.Objects.Models.page;d.Popup.open(c.get("banLink")+"/"+(!1!==b?b.id+"/edit":"add?thread="+a.id),"ImBan"+b.id,c.get("banWindowParams"))}, showDialogWindow:function(a){var b=this.model.id,c=d.Objects.Models.page;d.Popup.open(c.get("agentLink")+"/"+b+(a?"?viewonly=true":""),"ImCenter"+b,c.get("chatWindowParams"))},showTrack:function(){var a=this.model.id,b=d.Objects.Models.page;d.Popup.open(b.get("trackedLink")+"?thread="+a,"ImTracked"+a,b.get("trackedUserWindowParams"))},showBan:function(){var a=this.model,b=a.get("ban"),c=d.Objects.Models.page;d.Popup.open(c.get("banLink")+"/"+(!1!==b?b.id+"/edit":"add?thread="+a.id),"ImBan"+b.id,c.get("banWindowParams"))},
showFirstMessage:function(){var a=this.model.get("firstMessage");a&&alert(a)}})})(Mibew,Handlebars); showFirstMessage:function(){var a=this.model.get("firstMessage");a&&alert(a)}})})(Mibew,Handlebars);
/* /*
@ -128,7 +128,7 @@ showTrack:function(){var b=this.model.id,c=a.Objects.Models.page;a.Popup.open(c.
(function(d,h,k){d.Views.ThreadsCollection=d.Views.CompositeBase.extend({template:h.templates.threads_collection,itemView:d.Views.QueuedThread,itemViewContainer:"#threads-container",emptyView:d.Views.NoThreads,className:"threads-collection",collectionEvents:{sort:"render","sort:field":"createSortField",add:"threadAdded"},itemViewOptions:function(a){return{tagName:d.Objects.Models.page.get("threadTag"),collection:a.get("controls")}},initialize:function(){window.setInterval(k.bind(this.updateTimers, (function(d,h,k){d.Views.ThreadsCollection=d.Views.CompositeBase.extend({template:h.templates.threads_collection,itemView:d.Views.QueuedThread,itemViewContainer:"#threads-container",emptyView:d.Views.NoThreads,className:"threads-collection",collectionEvents:{sort:"render","sort:field":"createSortField",add:"threadAdded"},itemViewOptions:function(a){return{tagName:d.Objects.Models.page.get("threadTag"),collection:a.get("controls")}},initialize:function(){window.setInterval(k.bind(this.updateTimers,
this),2E3);this.on("itemview:before:render",this.updateStyles,this);this.on("composite:collection:rendered",this.updateTimers,this)},updateStyles:function(a){var b=this.collection,c=a.model,d=this;if(c.id){var e=this.getQueueCode(c),f=!1,g=!1,b=b.filter(function(a){return d.getQueueCode(a)==e});0<b.length&&(g=b[0].id==c.id,f=b[b.length-1].id==c.id);if(0<a.lastStyles.length){c=0;for(b=a.lastStyles.length;c<b;c++)a.$el.removeClass(a.lastStyles[c]);a.lastStyles=[]}c=(e!=this.QUEUE_BAN?"in":"")+this.queueCodeToString(e); this),2E3);this.on("itemview:before:render",this.updateStyles,this);this.on("composite:collection:rendered",this.updateTimers,this)},updateStyles:function(a){var b=this.collection,c=a.model,d=this;if(c.id){var e=this.getQueueCode(c),f=!1,g=!1,b=b.filter(function(a){return d.getQueueCode(a)==e});0<b.length&&(g=b[0].id==c.id,f=b[b.length-1].id==c.id);if(0<a.lastStyles.length){c=0;for(b=a.lastStyles.length;c<b;c++)a.$el.removeClass(a.lastStyles[c]);a.lastStyles=[]}c=(e!=this.QUEUE_BAN?"in":"")+this.queueCodeToString(e);
a.lastStyles.push(c);g&&a.lastStyles.push(c+"-first");f&&a.lastStyles.push(c+"-last");c=0;for(b=a.lastStyles.length;c<b;c++)a.$el.addClass(a.lastStyles[c])}},updateTimers:function(){d.Utils.updateTimers(this.$el,".timesince")},createSortField:function(a,b){var c=this.getQueueCode(a)||"Z";b.field=c.toString()+"_"+a.get("waitingTime").toString()},threadAdded:function(){var a=d.Objects.Models.page.get("mibewRoot");"undefined"!==typeof a&&d.Utils.playSound(a+"/sounds/new_user");if(d.Objects.Models.page.get("showPopup"))this.once("render", a.lastStyles.push(c);g&&a.lastStyles.push(c+"-first");f&&a.lastStyles.push(c+"-last");c=0;for(b=a.lastStyles.length;c<b;c++)a.$el.addClass(a.lastStyles[c])}},updateTimers:function(){d.Utils.updateTimers(this.$el,".timesince")},createSortField:function(a,b){var c=this.getQueueCode(a)||"Z";b.field=c.toString()+"_"+a.get("waitingTime").toString()},threadAdded:function(){var a=d.Objects.Models.page.get("mibewRoot");"undefined"!==typeof a&&d.Utils.playSound(a+"/sounds/new_user");if(d.Objects.Models.page.get("showPopup"))this.once("render",
function(){alert(d.Localization.get("pending.popup_notification"))})},getQueueCode:function(a){var b=a.get("state");return!1!=a.get("ban")&&b!=a.STATE_CHATTING?this.QUEUE_BAN:b==a.STATE_QUEUE||b==a.STATE_LOADING?this.QUEUE_WAITING:b==a.STATE_CLOSED||b==a.STATE_LEFT?this.QUEUE_CLOSED:b==a.STATE_WAITING?this.QUEUE_PRIO:b==a.STATE_CHATTING?this.QUEUE_CHATTING:!1},queueCodeToString:function(a){return a==this.QUEUE_PRIO?"prio":a==this.QUEUE_WAITING?"wait":a==this.QUEUE_CHATTING?"chat":a==this.QUEUE_BAN? function(){alert(d.Localization.get("A new visitor is waiting for an answer."))})},getQueueCode:function(a){var b=a.get("state");return!1!=a.get("ban")&&b!=a.STATE_CHATTING?this.QUEUE_BAN:b==a.STATE_QUEUE||b==a.STATE_LOADING?this.QUEUE_WAITING:b==a.STATE_CLOSED||b==a.STATE_LEFT?this.QUEUE_CLOSED:b==a.STATE_WAITING?this.QUEUE_PRIO:b==a.STATE_CHATTING?this.QUEUE_CHATTING:!1},queueCodeToString:function(a){return a==this.QUEUE_PRIO?"prio":a==this.QUEUE_WAITING?"wait":a==this.QUEUE_CHATTING?"chat":a==this.QUEUE_BAN?
"ban":a==this.QUEUE_CLOSED?"closed":""},QUEUE_PRIO:1,QUEUE_WAITING:2,QUEUE_CHATTING:3,QUEUE_BAN:4,QUEUE_CLOSED:5})})(Mibew,Handlebars,_); "ban":a==this.QUEUE_CLOSED?"closed":""},QUEUE_PRIO:1,QUEUE_WAITING:2,QUEUE_CHATTING:3,QUEUE_BAN:4,QUEUE_CLOSED:5})})(Mibew,Handlebars,_);
/* /*
Copyright 2005-2014 the original author or authors. Copyright 2005-2014 the original author or authors.
@ -144,6 +144,6 @@ this.updateTimers,this)},updateTimers:function(){a.Utils.updateTimers(this.$el,"
You may obtain a copy of the License at You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0 http://www.apache.org/licenses/LICENSE-2.0
*/ */
(function(a,h,j){var c=0,g=function(){c++;10==c&&(alert(a.Localization.get("pending.errors.network")),c=0)},b=new h.Marionette.Application;b.addRegions({agentsRegion:"#agents-region",statusPanelRegion:"#status-panel-region",threadsRegion:"#threads-region",visitorsRegion:"#visitors-region"});b.addInitializer(function(d){a.PluginOptions=d.plugins||{};var c=a.Objects,f=a.Objects.Models,e=a.Objects.Collections;c.server=new a.Server(j.extend({interactionType:MibewAPIUsersInteraction,onTimeout:g,onTransportError:g}, (function(a,h,j){var c=0,g=function(){c++;10==c&&(alert(a.Localization.get("Network problems detected. Please refresh the page.")),c=0)},b=new h.Marionette.Application;b.addRegions({agentsRegion:"#agents-region",statusPanelRegion:"#status-panel-region",threadsRegion:"#threads-region",visitorsRegion:"#visitors-region"});b.addInitializer(function(d){a.PluginOptions=d.plugins||{};var c=a.Objects,f=a.Objects.Models,e=a.Objects.Collections;c.server=new a.Server(j.extend({interactionType:MibewAPIUsersInteraction,onTimeout:g,onTransportError:g},
d.server));f.page=new a.Models.Page(d.page);f.agent=new a.Models.Agent(d.agent);e.threads=new a.Collections.Threads;b.threadsRegion.show(new a.Views.ThreadsCollection({collection:e.threads}));d.page.showVisitors&&(e.visitors=new a.Collections.Visitors,b.visitorsRegion.show(new a.Views.VisitorsCollection({collection:e.visitors})));f.statusPanel=new a.Models.StatusPanel;b.statusPanelRegion.show(new a.Views.StatusPanel({model:f.statusPanel}));d.page.showOnlineOperators&&(e.agents=new a.Collections.Agents, d.server));f.page=new a.Models.Page(d.page);f.agent=new a.Models.Agent(d.agent);e.threads=new a.Collections.Threads;b.threadsRegion.show(new a.Views.ThreadsCollection({collection:e.threads}));d.page.showVisitors&&(e.visitors=new a.Collections.Visitors,b.visitorsRegion.show(new a.Views.VisitorsCollection({collection:e.visitors})));f.statusPanel=new a.Models.StatusPanel;b.statusPanelRegion.show(new a.Views.StatusPanel({model:f.statusPanel}));d.page.showOnlineOperators&&(e.agents=new a.Collections.Agents,
b.agentsRegion.show(new a.Views.AgentsCollection({collection:e.agents})));c.server.callFunctionsPeriodically(function(){return[{"function":"update",arguments:{"return":{},references:{},agentId:f.agent.id}}]},function(){})});b.on("start",function(){a.Objects.server.runUpdater()});a.Application=b})(Mibew,Backbone,_); b.agentsRegion.show(new a.Views.AgentsCollection({collection:e.agents})));c.server.callFunctionsPeriodically(function(){return[{"function":"update",arguments:{"return":{},references:{},agentId:f.agent.id}}]},function(){})});b.on("start",function(){a.Objects.server.runUpdater()});a.Application=b})(Mibew,Backbone,_);

View File

@ -39,7 +39,7 @@
*/ */
closeThread: function() { closeThread: function() {
// Show confirmation message if can // Show confirmation message if can
var confirmMessage = Mibew.Localization.get('chat.close.confirmation'); var confirmMessage = Mibew.Localization.get('Are you sure want to leave chat?');
if (confirmMessage !== false) { if (confirmMessage !== false) {
if (! confirm(confirmMessage)) { if (! confirm(confirmMessage)) {
return; return;

View File

@ -78,7 +78,7 @@
if (this.get('showCaptcha')) { if (this.get('showCaptcha')) {
if (typeof attributes.captcha != 'undefined') { if (typeof attributes.captcha != 'undefined') {
if (! attributes.captcha) { if (! attributes.captcha) {
return l.get('errors.captcha'); return l.get('The letters you typed don\'t match the letters that were shown in the picture.');
} }
} }
} }

View File

@ -56,7 +56,7 @@
if (typeof attributes.email != 'undefined') { if (typeof attributes.email != 'undefined') {
if(! Mibew.Utils.checkEmail(attributes.email)) { if(! Mibew.Utils.checkEmail(attributes.email)) {
return Mibew.Localization.get( return Mibew.Localization.get(
'presurvey.error.wrong_email' 'Wrong email address.'
); );
} }
} }

View File

@ -23,7 +23,7 @@
badRequestsCount++; badRequestsCount++;
// Check if there is // Check if there is
if (badRequestsCount == 10) { if (badRequestsCount == 10) {
alert(Mibew.Localization.get('pending.errors.network')); alert(Mibew.Localization.get('Network problems detected. Please refresh the page.'));
badRequestsCount = 0; badRequestsCount = 0;
} }
} }

View File

@ -166,7 +166,7 @@
if (Mibew.Objects.Models.page.get('showPopup')) { if (Mibew.Objects.Models.page.get('showPopup')) {
this.once('render', function() { this.once('render', function() {
alert( alert(
Mibew.Localization.get('pending.popup_notification') Mibew.Localization.get('A new visitor is waiting for an answer.')
); );
}) })
} }

View File

@ -109,19 +109,19 @@
stateToDesc: function(state) { stateToDesc: function(state) {
var l = Mibew.Localization; var l = Mibew.Localization;
if (state == this.model.STATE_QUEUE) { if (state == this.model.STATE_QUEUE) {
return l.get('chat.thread.state_wait'); return l.get('In queue');
} }
if (state == this.model.STATE_WAITING) { if (state == this.model.STATE_WAITING) {
return l.get('chat.thread.state_wait_for_another_agent'); return l.get('Waiting for operator');
} }
if (state == this.model.STATE_CHATTING) { if (state == this.model.STATE_CHATTING) {
return l.get('chat.thread.state_chatting_with_agent'); return l.get('In chat');
} }
if (state == this.model.STATE_CLOSED) { if (state == this.model.STATE_CLOSED) {
return l.get('chat.thread.state_closed'); return l.get('Closed');
} }
if (state == this.model.STATE_LOADING) { if (state == this.model.STATE_LOADING) {
return l.get('chat.thread.state_loading'); return l.get('Loading');
} }
return ""; return "";
}, },

View File

@ -266,10 +266,10 @@ function prepare_chat_app_data()
// Set some localized strings // Set some localized strings
$data['localized'] = array( $data['localized'] = array(
'email.required' => no_field("form.field.email"), 'email.required' => no_field("Your email"),
'name.required' => no_field("form.field.name"), 'name.required' => no_field("Your name"),
'message.required' => no_field("form.field.message"), 'message.required' => no_field("Message"),
'wrong.email' => wrong_field("form.field.email"), 'wrong.email' => wrong_field("Your email"),
); );
return $data; return $data;
@ -312,7 +312,7 @@ function setup_leavemessage($name, $email, $group_id, $info, $referrer)
); );
$data['page.title'] = (empty($group_name) ? '' : $group_name . ': ') $data['page.title'] = (empty($group_name) ? '' : $group_name . ': ')
. getlocal('leavemessage.title'); . getlocal('Leave your message');
$data['leaveMessage']['page'] = array( $data['leaveMessage']['page'] = array(
'title' => $data['page.title'] 'title' => $data['page.title']
); );
@ -358,7 +358,7 @@ function setup_survey($name, $email, $group_id, $info, $referrer)
'canChangeName' => (bool) (Settings::get('usercanchangename') == "1"), 'canChangeName' => (bool) (Settings::get('usercanchangename') == "1"),
); );
$data['page.title'] = getlocal('presurvey.title'); $data['page.title'] = getlocal('Live support');
$data['survey']['page'] = array( $data['survey']['page'] = array(
'title' => $data['page.title'] 'title' => $data['page.title']
); );
@ -535,7 +535,7 @@ function setup_chatview_for_user(Thread $thread)
$data['chat']['user'] = array( $data['chat']['user'] = array(
'name' => htmlspecialchars($thread->userName), 'name' => htmlspecialchars($thread->userName),
'canChangeName' => (bool) (Settings::get('usercanchangename') == "1"), 'canChangeName' => (bool) (Settings::get('usercanchangename') == "1"),
'defaultName' => (bool) (getlocal("chat.default.username") != $thread->userName), 'defaultName' => (bool) (getlocal("Guest") != $thread->userName),
'canPost' => true, 'canPost' => true,
'isAgent' => false, 'isAgent' => false,
); );
@ -658,7 +658,7 @@ function ban_for_addr($addr)
*/ */
function visitor_from_request() function visitor_from_request()
{ {
$default_name = getlocal("chat.default.username"); $default_name = getlocal("Guest");
$user_name = $default_name; $user_name = $default_name;
if (isset($_COOKIE[USERNAME_COOKIE_NAME])) { if (isset($_COOKIE[USERNAME_COOKIE_NAME])) {
$data = base64_decode(strtr($_COOKIE[USERNAME_COOKIE_NAME], '-_,', '+/=')); $data = base64_decode(strtr($_COOKIE[USERNAME_COOKIE_NAME], '-_,', '+/='));
@ -784,7 +784,7 @@ function chat_start_for_user(
$thread->postMessage( $thread->postMessage(
Thread::KIND_FOR_AGENT, Thread::KIND_FOR_AGENT,
getlocal( getlocal(
'chat.visitor.invitation.accepted', 'Visitor accepted invitation from operator {0}',
array($operator_name), array($operator_name),
CURRENT_LOCALE, CURRENT_LOCALE,
true true
@ -794,14 +794,14 @@ function chat_start_for_user(
if ($referrer) { if ($referrer) {
$thread->postMessage( $thread->postMessage(
Thread::KIND_FOR_AGENT, Thread::KIND_FOR_AGENT,
getlocal('chat.came.from', array($referrer), CURRENT_LOCALE, true) getlocal('Vistor came from page {0}', array($referrer), CURRENT_LOCALE, true)
); );
} }
if ($requested_operator && !$requested_operator_online) { if ($requested_operator && !$requested_operator_online) {
$thread->postMessage( $thread->postMessage(
Thread::KIND_INFO, Thread::KIND_INFO,
getlocal( getlocal(
'chat.requested_operator.offline', 'Thank you for contacting us. We are sorry, but requested operator <strong>{0}</strong> is offline. Another operator will be with you shortly.',
array(get_operator_name($requested_operator)), array(get_operator_name($requested_operator)),
CURRENT_LOCALE, CURRENT_LOCALE,
true true
@ -810,7 +810,7 @@ function chat_start_for_user(
} else { } else {
$thread->postMessage( $thread->postMessage(
Thread::KIND_INFO, Thread::KIND_INFO,
getlocal('chat.wait', null, CURRENT_LOCALE, true) getlocal('Thank you for contacting us. An operator will be with you shortly.', null, CURRENT_LOCALE, true)
); );
} }
} }
@ -819,7 +819,7 @@ function chat_start_for_user(
if ($info) { if ($info) {
$thread->postMessage( $thread->postMessage(
Thread::KIND_FOR_AGENT, Thread::KIND_FOR_AGENT,
getlocal('chat.visitor.info', array($info), CURRENT_LOCALE, true) getlocal('Info: {0}', array($info), CURRENT_LOCALE, true)
); );
} }

View File

@ -56,7 +56,7 @@ class BanController extends AbstractController
} }
unset($item); unset($item);
$page['title'] = getlocal('page_bans.title'); $page['title'] = getlocal('Ban List');
$page['menuid'] = 'bans'; $page['menuid'] = 'bans';
$pagination = setup_pagination($blocked_list); $pagination = setup_pagination($blocked_list);
$page['pagination'] = $pagination['info']; $page['pagination'] = $pagination['info'];
@ -159,7 +159,7 @@ class BanController extends AbstractController
$page['threadid'] = $request->request->get('threadid'); $page['threadid'] = $request->request->get('threadid');
} }
$page['title'] = getlocal('page_ban.title'); $page['title'] = getlocal('Block address');
$page['formaction'] = $request->getBaseUrl() . $request->getPathInfo(); $page['formaction'] = $request->getBaseUrl() . $request->getPathInfo();
$page = array_merge($page, prepare_menu($operator, false)); $page = array_merge($page, prepare_menu($operator, false));
@ -192,15 +192,15 @@ class BanController extends AbstractController
$comment = $request->request->get('comment'); $comment = $request->request->get('comment');
if (!$address) { if (!$address) {
$errors[] = no_field('form.field.address'); $errors[] = no_field('Visitor\'s Address');
} }
if (!preg_match("/^\d+$/", $days)) { if (!preg_match("/^\d+$/", $days)) {
$errors[] = wrong_field('form.field.ban_days'); $errors[] = wrong_field('Days');
} }
if (!$comment) { if (!$comment) {
$errors[] = no_field('form.field.ban_comment'); $errors[] = no_field('Comment');
} }
// Check if the ban already exists in the database // Check if the ban already exists in the database
@ -213,7 +213,7 @@ class BanController extends AbstractController
'ban_edit', 'ban_edit',
array('ban_id' => $existing_ban['banid']) array('ban_id' => $existing_ban['banid'])
); );
$errors[] = getlocal('ban.error.duplicate', array($address, $ban_url)); $errors[] = getlocal('The specified address is already in use. Click <a href="{1}">here</a> if you want to edit it.', array($address, $ban_url));
} }
if (count($errors) != 0) { if (count($errors) != 0) {
@ -254,7 +254,7 @@ class BanController extends AbstractController
// Rerender the form page // Rerender the form page
$page['saved'] = true; $page['saved'] = true;
$page['address'] = $address; $page['address'] = $address;
$page['title'] = getlocal('page_ban.title'); $page['title'] = getlocal('Block address');
$page = array_merge($page, prepare_menu($operator, false)); $page = array_merge($page, prepare_menu($operator, false));
return $this->render('ban', $page); return $this->render('ban', $page);

View File

@ -54,14 +54,14 @@ class ButtonCodeController extends AbstractController
$image_locales = $image_locales_map[$image]; $image_locales = $image_locales_map[$image];
$style_list = ChatStyle::getAvailableStyles(); $style_list = ChatStyle::getAvailableStyles();
$style_list[''] = getlocal('page.preview.style_default'); $style_list[''] = getlocal('-from general settings-');
$style = $request->query->get('style', ''); $style = $request->query->get('style', '');
if ($style && !in_array($style, $style_list)) { if ($style && !in_array($style, $style_list)) {
$style = ''; $style = '';
} }
$invitation_style_list = InvitationStyle::getAvailableStyles(); $invitation_style_list = InvitationStyle::getAvailableStyles();
$invitation_style_list[''] = getlocal('page.preview.style_default'); $invitation_style_list[''] = getlocal('-from general settings-');
$invitation_style = $request->query->get('invitationstyle', ''); $invitation_style = $request->query->get('invitationstyle', '');
if ($invitation_style && !in_array($invitation_style, $invitation_style_list)) { if ($invitation_style && !in_array($invitation_style, $invitation_style_list)) {
$invitation_style = ''; $invitation_style = '';
@ -71,7 +71,7 @@ class ButtonCodeController extends AbstractController
$group_id = $request->query->getInt('group'); $group_id = $request->query->getInt('group');
if ($group_id && !group_by_id($group_id)) { if ($group_id && !group_by_id($group_id)) {
$page['errors'][] = getlocal("page.group.no_such"); $page['errors'][] = getlocal("No such group");
$group_id = false; $group_id = false;
} }
@ -123,7 +123,7 @@ class ButtonCodeController extends AbstractController
$lang = in_array(CURRENT_LOCALE, $locales_list) ? CURRENT_LOCALE : $locales_list[0]; $lang = in_array(CURRENT_LOCALE, $locales_list) ? CURRENT_LOCALE : $locales_list[0];
} }
$message = getlocal('page.gen_button.text_link_text'); $message = getlocal('Click to chat');
} }
$page['buttonCode'] = generate_button( $page['buttonCode'] = generate_button(
@ -146,9 +146,9 @@ class ButtonCodeController extends AbstractController
$page['groups'] = get_groups_list(); $page['groups'] = get_groups_list();
$page['availableCodeTypes'] = array( $page['availableCodeTypes'] = array(
'button' => getlocal('page.gen_button.button'), 'button' => getlocal('button'),
'operator_code' => getlocal('page.gen_button.operator_code'), 'operator_code' => getlocal('operator code field'),
'text_link' => getlocal('page.gen_button.text_link') 'text_link' => getlocal('text link')
); );
$page['formgroup'] = $group_id; $page['formgroup'] = $group_id;
@ -165,7 +165,7 @@ class ButtonCodeController extends AbstractController
$page['operator_code'] = $operator_code; $page['operator_code'] = $operator_code;
$page['generateButton'] = $generate_button; $page['generateButton'] = $generate_button;
$page['title'] = getlocal("page.gen_button.title"); $page['title'] = getlocal("Button HTML code generation");
$page['menuid'] = "getcode"; $page['menuid'] = "getcode";
$page = array_merge($page, prepare_menu($operator)); $page = array_merge($page, prepare_menu($operator));

View File

@ -41,7 +41,7 @@ class ButtonController extends AbstractController
$thread = Thread::load($_SESSION['threadid']); $thread = Thread::load($_SESSION['threadid']);
if ($thread && $thread->state != Thread::STATE_CLOSED) { if ($thread && $thread->state != Thread::STATE_CLOSED) {
$msg = getlocal( $msg = getlocal(
"chat.client.visited.page", "Visitor navigated to {0}",
array($referer), array($referer),
$thread->locale, $thread->locale,
true true

View File

@ -65,7 +65,7 @@ class CannedMessageController extends AbstractController
if ($group_id) { if ($group_id) {
$group = group_by_id($group_id); $group = group_by_id($group_id);
if (!$group) { if (!$group) {
$page['errors'][] = getlocal('page.group.no_such'); $page['errors'][] = getlocal('No such group');
$group_id = false; $group_id = false;
} }
} }
@ -77,7 +77,7 @@ class CannedMessageController extends AbstractController
$page['groups'] = array(); $page['groups'] = array();
$page['groups'][] = array( $page['groups'][] = array(
'groupid' => '', 'groupid' => '',
'vclocalname' => getlocal('page.gen_button.default_group'), 'vclocalname' => getlocal('-all operators-'),
'level' => 0, 'level' => 0,
); );
foreach ($all_groups as $g) { foreach ($all_groups as $g) {
@ -101,7 +101,7 @@ class CannedMessageController extends AbstractController
$page['formgroup'] = $group_id; $page['formgroup'] = $group_id;
// Set other needed page values and render the response // Set other needed page values and render the response
$page['title'] = getlocal('canned.title'); $page['title'] = getlocal('Canned Messages');
$page['menuid'] = 'canned'; $page['menuid'] = 'canned';
$page = array_merge($page, prepare_menu($operator)); $page = array_merge($page, prepare_menu($operator));
@ -157,7 +157,7 @@ class CannedMessageController extends AbstractController
// Load existing message // Load existing message
$canned_message = load_canned_message($message_id); $canned_message = load_canned_message($message_id);
if (!$canned_message) { if (!$canned_message) {
$page['errors'][] = getlocal('cannededit.no_such'); $page['errors'][] = getlocal('No such message');
$message_id = false; $message_id = false;
} else { } else {
$title = $canned_message['vctitle']; $title = $canned_message['vctitle'];
@ -186,8 +186,8 @@ class CannedMessageController extends AbstractController
$page['formmessage'] = $message; $page['formmessage'] = $message;
$page['formaction'] = $request->getBaseUrl() . $request->getPathInfo(); $page['formaction'] = $request->getBaseUrl() . $request->getPathInfo();
$page['title'] = empty($message_id) $page['title'] = empty($message_id)
? getlocal('cannednew.title') ? getlocal('New Message')
: getlocal('cannededit.title'); : getlocal('Edit Message');
$page = array_merge($page, prepare_menu($operator, false)); $page = array_merge($page, prepare_menu($operator, false));
return $this->render('canned_message_edit', $page); return $this->render('canned_message_edit', $page);
@ -211,12 +211,12 @@ class CannedMessageController extends AbstractController
$title = $request->request->get('title'); $title = $request->request->get('title');
if (!$title) { if (!$title) {
$errors[] = no_field("form.field.title"); $errors[] = no_field("Title");
} }
$message = $request->request->get('message'); $message = $request->request->get('message');
if (!$message) { if (!$message) {
$errors[] = no_field("form.field.message"); $errors[] = no_field("Message");
} }
if (count($errors) != 0) { if (count($errors) != 0) {

View File

@ -91,9 +91,9 @@ class MailController extends AbstractController
$email = $request->request->get('email'); $email = $request->request->get('email');
$group = is_null($thread->groupId) ? null : group_by_id($thread->groupId); $group = is_null($thread->groupId) ? null : group_by_id($thread->groupId);
if (!$email) { if (!$email) {
$errors[] = no_field('form.field.email'); $errors[] = no_field('Your email');
} elseif (!is_valid_email($email)) { } elseif (!is_valid_email($email)) {
$errors[] = wrong_field('form.field.email'); $errors[] = wrong_field('Your email');
} }
if (count($errors) > 0) { if (count($errors) > 0) {

View File

@ -83,13 +83,13 @@ class OperatorChatController extends AbstractController
// Check operator's browser level because old browsers aren't supported. // Check operator's browser level because old browsers aren't supported.
$remote_level = get_remote_level($request->headers->get('User-Agent')); $remote_level = get_remote_level($request->headers->get('User-Agent'));
if ($remote_level != 'ajaxed') { if ($remote_level != 'ajaxed') {
return $this->showErrors(array(getlocal('thread.error.old_browser'))); return $this->showErrors(array(getlocal('Old browser is used, please update it')));
} }
// Check if the thread can be loaded. // Check if the thread can be loaded.
$thread = Thread::load($thread_id); $thread = Thread::load($thread_id);
if (!$thread || !isset($thread->lastToken)) { if (!$thread || !isset($thread->lastToken)) {
return $this->showErrors(array(getlocal('thread.error.wrong_thread'))); return $this->showErrors(array(getlocal('Wrong thread')));
} }
$view_only = ($request->query->get('viewonly') == 'true'); $view_only = ($request->query->get('viewonly') == 'true');
@ -100,7 +100,7 @@ class OperatorChatController extends AbstractController
&& $operator['operatorid'] != $thread->agentId; && $operator['operatorid'] != $thread->agentId;
if ($try_take_over) { if ($try_take_over) {
if (!is_capable(CAN_TAKEOVER, $operator)) { if (!is_capable(CAN_TAKEOVER, $operator)) {
return $this->showErrors(array(getlocal('thread.error.cannot_take_over'))); return $this->showErrors(array(getlocal('Cannot take over')));
} }
if ($force_take == false) { if ($force_take == false) {
@ -115,7 +115,7 @@ class OperatorChatController extends AbstractController
'user' => $thread->userName, 'user' => $thread->userName,
'agent' => $thread->agentName, 'agent' => $thread->agentName,
'link' => $link, 'link' => $link,
'title' => getlocal('confirm.take.head'), 'title' => getlocal('Change operator'),
); );
$page_style = new PageStyle(PageStyle::getCurrentStyle()); $page_style = new PageStyle(PageStyle::getCurrentStyle());
@ -127,10 +127,10 @@ class OperatorChatController extends AbstractController
if (!$view_only) { if (!$view_only) {
if (!$thread->take($operator)) { if (!$thread->take($operator)) {
return $this->showErrors(array(getlocal('thread.error.cannot_take'))); return $this->showErrors(array(getlocal('Cannot take thread')));
} }
} elseif (!is_capable(CAN_VIEWTHREADS, $operator)) { } elseif (!is_capable(CAN_VIEWTHREADS, $operator)) {
return $this->showErrors(array(getlocal('thread.error.cannot_view'))); return $this->showErrors(array(getlocal('Cannot view threads')));
} }
// Redrect the operator to initialized chat page // Redrect the operator to initialized chat page

View File

@ -103,11 +103,11 @@ class RedirectController extends AbstractController
if ($next_group) { if ($next_group) {
$page['message'] = getlocal( $page['message'] = getlocal(
'chat.redirected.group.content', 'The visitor has been placed in a priorty queue of the group {0}.',
array(get_group_name($next_group)) array(get_group_name($next_group))
); );
if (!$this->redirectToGroup($thread, $next_id)) { if (!$this->redirectToGroup($thread, $next_id)) {
$page['errors'][] = getlocal('chat.redirect.cannot'); $page['errors'][] = getlocal('You are not chatting with the visitor.');
} }
} else { } else {
$page['errors'][] = 'Unknown group'; $page['errors'][] = 'Unknown group';
@ -122,11 +122,11 @@ class RedirectController extends AbstractController
if ($next_operator) { if ($next_operator) {
$page['message'] = getlocal( $page['message'] = getlocal(
'chat.redirected.content', 'The visitor has been placed in the priorty queue of the operator {0}.',
array(get_operator_name($next_operator)) array(get_operator_name($next_operator))
); );
if (!$this->redirectToOperator($thread, $next_id)) { if (!$this->redirectToOperator($thread, $next_id)) {
$page['errors'][] = getlocal('chat.redirect.cannot'); $page['errors'][] = getlocal('You are not chatting with the visitor.');
} }
} else { } else {
$page['errors'][] = 'Unknown operator'; $page['errors'][] = 'Unknown operator';
@ -168,7 +168,7 @@ class RedirectController extends AbstractController
$thread->postMessage( $thread->postMessage(
Thread::KIND_EVENTS, Thread::KIND_EVENTS,
getlocal( getlocal(
'chat.status.operator.redirect', 'Operator {0} redirected you to another operator. Please wait a while.',
array(get_operator_name($this->getOperator())), array(get_operator_name($this->getOperator())),
$thread->locale, $thread->locale,
true true
@ -222,7 +222,7 @@ class RedirectController extends AbstractController
$thread->postMessage( $thread->postMessage(
Thread::KIND_EVENTS, Thread::KIND_EVENTS,
getlocal( getlocal(
'chat.status.operator.redirect', 'Operator {0} redirected you to another operator. Please wait a while.',
array(get_operator_name($this->getOperator())), array(get_operator_name($this->getOperator())),
$thread->locale, $thread->locale,
true true

View File

@ -40,11 +40,11 @@ abstract class AbstractController extends BaseController
$args = array('group_id' => $group_id); $args = array('group_id' => $group_id);
if ($group_id) { if ($group_id) {
$tabs[getlocal('page_group.tab.main')] = ($route == 'group_members') $tabs[getlocal('General')] = ($route == 'group_members')
? $this->generateUrl('group_edit', $args) ? $this->generateUrl('group_edit', $args)
: ''; : '';
$tabs[getlocal('page_group.tab.members')] = ($route != 'group_members') $tabs[getlocal('Members')] = ($route != 'group_members')
? $this->generateUrl('group_members', $args) ? $this->generateUrl('group_members', $args)
: ''; : '';
} }

View File

@ -66,17 +66,17 @@ class ManagementController extends AbstractController
$page['formsortdirection'] = $sort['desc'] ? 'desc' : 'asc'; $page['formsortdirection'] = $sort['desc'] ? 'desc' : 'asc';
$page['canmodify'] = is_capable(CAN_ADMINISTRATE, $operator); $page['canmodify'] = is_capable(CAN_ADMINISTRATE, $operator);
$page['availableOrders'] = array( $page['availableOrders'] = array(
array('id' => 'name', 'name' => getlocal('form.field.groupname')), array('id' => 'name', 'name' => getlocal('Name')),
array('id' => 'lastseen', 'name' => getlocal('page_agents.status')), array('id' => 'lastseen', 'name' => getlocal('Last active')),
array('id' => 'weight', 'name' => getlocal('page.groups.weight')), array('id' => 'weight', 'name' => getlocal('Weight')),
); );
$page['availableDirections'] = array( $page['availableDirections'] = array(
array('id' => 'desc', 'name' => getlocal('page.groups.sortdirection.desc')), array('id' => 'desc', 'name' => getlocal('descending')),
array('id' => 'asc', 'name' => getlocal('page.groups.sortdirection.asc')), array('id' => 'asc', 'name' => getlocal('ascending')),
); );
// Set other variables and render the response. // Set other variables and render the response.
$page['title'] = getlocal('page.groups.title'); $page['title'] = getlocal('Groups');
$page['menuid'] = 'groups'; $page['menuid'] = 'groups';
$page = array_merge($page, prepare_menu($operator)); $page = array_merge($page, prepare_menu($operator));

View File

@ -78,7 +78,7 @@ class MembersController extends AbstractController
// Set other values and render the page // Set other values and render the page
$page['stored'] = $request->query->get('stored'); $page['stored'] = $request->query->get('stored');
$page['title'] = getlocal('page.groupmembers.title'); $page['title'] = getlocal('Members');
$page['menuid'] = 'groups'; $page['menuid'] = 'groups';
$page = array_merge($page, prepare_menu($operator)); $page = array_merge($page, prepare_menu($operator));
$page['tabs'] = $this->buildTabs($request); $page['tabs'] = $this->buildTabs($request);

View File

@ -89,7 +89,7 @@ class SettingsController extends AbstractController
$page['stored'] = $request->query->has('stored'); $page['stored'] = $request->query->has('stored');
$page['availableParentGroups'] = get_available_parent_groups($group_id); $page['availableParentGroups'] = get_available_parent_groups($group_id);
$page['formaction'] = $request->getBaseUrl() . $request->getPathInfo(); $page['formaction'] = $request->getBaseUrl() . $request->getPathInfo();
$page['title'] = getlocal('page.group.title'); $page['title'] = getlocal('Group details');
$page['menuid'] = 'groups'; $page['menuid'] = 'groups';
$page = array_merge($page, prepare_menu($operator)); $page = array_merge($page, prepare_menu($operator));
$page['tabs'] = $this->buildTabs($request); $page['tabs'] = $this->buildTabs($request);
@ -129,15 +129,15 @@ class SettingsController extends AbstractController
$logo = $request->request->get('logo'); $logo = $request->request->get('logo');
if (!$name) { if (!$name) {
$errors[] = no_field("form.field.groupname"); $errors[] = no_field("Name");
} }
if ($email != '' && !is_valid_email($email)) { if ($email != '' && !is_valid_email($email)) {
$errors[] = wrong_field("form.field.mail"); $errors[] = wrong_field("E-mail");
} }
if (!preg_match("/^(\d{1,10})?$/", $weight)) { if (!preg_match("/^(\d{1,10})?$/", $weight)) {
$errors[] = wrong_field("form.field.groupweight"); $errors[] = wrong_field("Weight");
} }
if (!$weight) { if (!$weight) {
@ -151,7 +151,7 @@ class SettingsController extends AbstractController
&& $group_id != $existing_group['groupid']); && $group_id != $existing_group['groupid']);
if ($duplicate_name) { if ($duplicate_name) {
$errors[] = getlocal("page.group.duplicate_name"); $errors[] = getlocal("Please choose another name because a group with that name already exists.");
} }
if (count($errors) != 0) { if (count($errors) != 0) {

View File

@ -157,7 +157,7 @@ class HistoryController extends AbstractController
$page['formtype'] = $search_type; $page['formtype'] = $search_type;
$page['forminsystemmessages'] = $search_in_system_messages; $page['forminsystemmessages'] = $search_in_system_messages;
$page['title'] = getlocal("page_analysis.search.title"); $page['title'] = getlocal("Chat history");
$page['menuid'] = "history"; $page['menuid'] = "history";
$page['canSearchInSystemMessages'] = ($search_type != 'all') $page['canSearchInSystemMessages'] = ($search_type != 'all')
&& ($search_type != 'message'); && ($search_type != 'message');
@ -197,7 +197,7 @@ class HistoryController extends AbstractController
$last_id = -1; $last_id = -1;
$messages = $thread->getMessages(false, $last_id); $messages = $thread->getMessages(false, $last_id);
$page['threadMessages'] = json_encode($messages); $page['threadMessages'] = json_encode($messages);
$page['title'] = getlocal("thread.chat_log"); $page['title'] = getlocal("Chat log");
$page = array_merge($page, prepare_menu($operator, false)); $page = array_merge($page, prepare_menu($operator, false));
@ -260,7 +260,7 @@ class HistoryController extends AbstractController
} }
} }
$page['title'] = getlocal("page.analysis.userhistory.title"); $page['title'] = getlocal("Visit history");
$page['menuid'] = "history"; $page['menuid'] = "history";
return $this->render('history_user', $page); return $this->render('history_user', $page);
@ -310,7 +310,7 @@ class HistoryController extends AbstractController
); );
} }
$page['title'] = getlocal('tracked.path'); $page['title'] = getlocal('Tracked path of visitor');
$page['show_small_login'] = false; $page['show_small_login'] = false;
return $this->render('tracked', $page); return $this->render('tracked', $page);

View File

@ -60,7 +60,7 @@ class HomeController extends AbstractController
'featuresPage' => $base_url . '/operator/settings/features', 'featuresPage' => $base_url . '/operator/settings/features',
'isOnline' => $is_online, 'isOnline' => $is_online,
'warnOffline' => true, 'warnOffline' => true,
'title' => getlocal('topMenu.admin'), 'title' => getlocal('Home'),
'menuid' => 'main', 'menuid' => 'main',
); );

View File

@ -35,7 +35,7 @@ class LicenseController extends AbstractController
return $this->render( return $this->render(
'license', 'license',
array( array(
'title' => getlocal("license.title"), 'title' => getlocal("License"),
'no_right_menu' => true, 'no_right_menu' => true,
'fixedwrap' => true, 'fixedwrap' => true,
'show_small_login' => true, 'show_small_login' => true,

View File

@ -37,11 +37,11 @@ abstract class AbstractController extends BaseAbstractController
$tabs = array(); $tabs = array();
$route = $request->attributes->get('_route'); $route = $request->attributes->get('_route');
$tabs[getlocal('page_localization.tab.translation')] = ($route != 'translations') $tabs[getlocal('Translations')] = ($route != 'translations')
? $this->generateUrl('translations') ? $this->generateUrl('translations')
: ''; : '';
$tabs[getlocal('page_localization.tab.locale')] = ($route != 'locales') $tabs[getlocal('Locales')] = ($route != 'locales')
? $this->generateUrl('locales') ? $this->generateUrl('locales')
: ''; : '';

View File

@ -108,11 +108,11 @@ class TranslationController extends AbstractController
$page['formsource'] = $source; $page['formsource'] = $source;
$page['availableLocales'] = $locales_list; $page['availableLocales'] = $locales_list;
$page['availableOrders'] = array( $page['availableOrders'] = array(
array('id' => 'id', 'name' => getlocal('translate.sort.key')), array('id' => 'id', 'name' => getlocal('Key identifier')),
array('id' => 'l1', 'name' => getlocal('translate.sort.lang')), array('id' => 'l1', 'name' => getlocal('Source language string')),
); );
$page['formsort'] = $order; $page['formsort'] = $order;
$page['title'] = getlocal('page.translate.title'); $page['title'] = getlocal('Translations');
$page['menuid'] = 'translation'; $page['menuid'] = 'translation';
$page = array_merge($page, prepare_menu($operator)); $page = array_merge($page, prepare_menu($operator));
$page['tabs'] = $this->buildTabs($request); $page['tabs'] = $this->buildTabs($request);
@ -168,7 +168,7 @@ class TranslationController extends AbstractController
$page['target'] = $target; $page['target'] = $target;
$page['formoriginal'] = isset($lang1[$string_id]) ? $lang1[$string_id] : '<b><unknown></b>'; $page['formoriginal'] = isset($lang1[$string_id]) ? $lang1[$string_id] : '<b><unknown></b>';
$page['formtranslation'] = $translation; $page['formtranslation'] = $translation;
$page['title'] = getlocal('page.translate.title'); $page['title'] = getlocal('Translations');
$page = array_merge( $page = array_merge(
$page, $page,
prepare_menu($operator, false) prepare_menu($operator, false)
@ -200,7 +200,7 @@ class TranslationController extends AbstractController
$translation = $request->request->get('translation'); $translation = $request->request->get('translation');
if (!$translation) { if (!$translation) {
$errors[] = no_field("form.field.translation"); $errors[] = no_field("Translation");
} }
if (count($errors) != 0) { if (count($errors) != 0) {
@ -213,7 +213,7 @@ class TranslationController extends AbstractController
save_message($target, $string_id, $translation); save_message($target, $string_id, $translation);
$page['saved'] = true; $page['saved'] = true;
$page['title'] = getlocal("page.translate.title"); $page['title'] = getlocal("Translations");
$page = array_merge( $page = array_merge(
$page, $page,
prepare_menu($operator, false) prepare_menu($operator, false)

View File

@ -58,8 +58,8 @@ class LoginController extends AbstractController
} }
$page['localeLinks'] = get_locale_links(); $page['localeLinks'] = get_locale_links();
$page['title'] = getlocal('page_login.title'); $page['title'] = getlocal('Login');
$page['headertitle'] = getlocal('app.title'); $page['headertitle'] = getlocal('Mibew Messenger');
$page['show_small_login'] = false; $page['show_small_login'] = false;
$page['fixedwrap'] = true; $page['fixedwrap'] = true;
@ -103,9 +103,9 @@ class LoginController extends AbstractController
return $this->redirect($target); return $this->redirect($target);
} else { } else {
if (operator_is_disabled($operator)) { if (operator_is_disabled($operator)) {
$errors[] = getlocal('page_login.operator.disabled'); $errors[] = getlocal('Your account is temporarily blocked. Please contact system administrator.');
} else { } else {
$errors[] = getlocal("page_login.error"); $errors[] = getlocal("Entered login/password is incorrect");
} }
} }

View File

@ -54,7 +54,7 @@ class MailTemplateController extends AbstractController
$page['formaction'] = $this->generateUrl('mail_templates'); $page['formaction'] = $this->generateUrl('mail_templates');
$page['mailTemplates'] = $this->getMailTemplatesList($lang); $page['mailTemplates'] = $this->getMailTemplatesList($lang);
$page['formlang'] = $lang; $page['formlang'] = $lang;
$page['title'] = getlocal('mail_template.title'); $page['title'] = getlocal('Mail templates');
$page['menuid'] = 'mail_templates'; $page['menuid'] = 'mail_templates';
$page = array_merge($page, prepare_menu($operator)); $page = array_merge($page, prepare_menu($operator));
@ -95,7 +95,7 @@ class MailTemplateController extends AbstractController
'mail_template_edit', 'mail_template_edit',
array('name' => $template_name) array('name' => $template_name)
); );
$page['title'] = getlocal('mail_template.title'); $page['title'] = getlocal('Mail templates');
$page['menuid'] = 'mail_templates'; $page['menuid'] = 'mail_templates';
$page = array_merge($page, prepare_menu($operator)); $page = array_merge($page, prepare_menu($operator));
@ -121,12 +121,12 @@ class MailTemplateController extends AbstractController
$subject = $request->request->get('subject'); $subject = $request->request->get('subject');
if (!$subject) { if (!$subject) {
$errors[] = no_field('form.field.mail_template_subject'); $errors[] = no_field('Mail subject');
} }
$body = $request->request->get('body'); $body = $request->request->get('body');
if (!$body) { if (!$body) {
$errors[] = no_field('form.field.mail_template_body'); $errors[] = no_field('Mail body');
} }
if (count($errors) != 0) { if (count($errors) != 0) {

View File

@ -40,19 +40,19 @@ abstract class AbstractController extends BaseController
$args = array('operator_id' => $operator_id); $args = array('operator_id' => $operator_id);
if ($operator_id) { if ($operator_id) {
$tabs[getlocal('page_agent.tab.main')] = ($route != 'operator_edit') $tabs[getlocal('General')] = ($route != 'operator_edit')
? $this->generateUrl('operator_edit', $args) ? $this->generateUrl('operator_edit', $args)
: ''; : '';
$tabs[getlocal('page_agent.tab.avatar')] = ($route != 'operator_avatar') $tabs[getlocal('Photo')] = ($route != 'operator_avatar')
? $this->generateUrl('operator_avatar', $args) ? $this->generateUrl('operator_avatar', $args)
: ''; : '';
$tabs[getlocal('page_agent.tab.groups')] = ($route != 'operator_groups') $tabs[getlocal('Groups')] = ($route != 'operator_groups')
? $this->generateUrl('operator_groups', $args) ? $this->generateUrl('operator_groups', $args)
: ''; : '';
$tabs[getlocal('page_agent.tab.permissions')] = ($route != 'operator_permissions') $tabs[getlocal('Permissions')] = ($route != 'operator_permissions')
? $this->generateUrl('operator_permissions', $args) ? $this->generateUrl('operator_permissions', $args)
: ''; : '';
} }

View File

@ -59,9 +59,9 @@ class AvatarController extends AbstractController
$page['avatar'] = $op['vcavatar']; $page['avatar'] = $op['vcavatar'];
$page['currentop'] = $op $page['currentop'] = $op
? get_operator_name($op) . ' (' . $op['vclogin'] . ')' ? get_operator_name($op) . ' (' . $op['vclogin'] . ')'
: getlocal('not_found'); : getlocal('-not found-');
$page['canmodify'] = $can_modify ? '1' : ''; $page['canmodify'] = $can_modify ? '1' : '';
$page['title'] = getlocal('page_avatar.title'); $page['title'] = getlocal('Upload photo');
$page['menuid'] = ($operator['operatorid'] == $op_id) ? 'profile' : 'operators'; $page['menuid'] = ($operator['operatorid'] == $op_id) ? 'profile' : 'operators';
$page = array_merge($page, prepare_menu($operator)); $page = array_merge($page, prepare_menu($operator));
@ -107,9 +107,9 @@ class AvatarController extends AbstractController
$file_size = $file->getSize(); $file_size = $file->getSize();
if ($file_size == 0 || $file_size > Settings::get('max_uploaded_file_size')) { if ($file_size == 0 || $file_size > Settings::get('max_uploaded_file_size')) {
$errors[] = failed_uploading_file($orig_filename, "errors.file.size.exceeded"); $errors[] = failed_uploading_file($orig_filename, "Uploaded file size exceeded");
} elseif (!in_array($ext, $valid_types)) { } elseif (!in_array($ext, $valid_types)) {
$errors[] = failed_uploading_file($orig_filename, "errors.invalid.file.type"); $errors[] = failed_uploading_file($orig_filename, "Invalid file type");
} else { } else {
// Remove avatar if it already exists // Remove avatar if it already exists
$avatar_local_dir = MIBEW_FS_ROOT . '/files/avatar/'; $avatar_local_dir = MIBEW_FS_ROOT . '/files/avatar/';
@ -123,7 +123,7 @@ class AvatarController extends AbstractController
$file->move($avatar_local_dir, $new_file_name); $file->move($avatar_local_dir, $new_file_name);
$avatar = MIBEW_WEB_ROOT . "/files/avatar/$new_file_name"; $avatar = MIBEW_WEB_ROOT . "/files/avatar/$new_file_name";
} catch (Exception $e) { } catch (Exception $e) {
$errors[] = failed_uploading_file($orig_filename, "errors.file.move.error"); $errors[] = failed_uploading_file($orig_filename, "Error moving file");
} }
} }
} else { } else {

View File

@ -60,7 +60,7 @@ class GroupsController extends AbstractController
$page['currentop'] = $op $page['currentop'] = $op
? get_operator_name($op) . ' (' . $op['vclogin'] . ')' ? get_operator_name($op) . ' (' . $op['vclogin'] . ')'
: getlocal('not_found'); : getlocal('-not found-');
$page['canmodify'] = $can_modify ? '1' : ''; $page['canmodify'] = $can_modify ? '1' : '';
// Get IDs of groups the operator belongs to. // Get IDs of groups the operator belongs to.
@ -82,7 +82,7 @@ class GroupsController extends AbstractController
} }
$page['stored'] = $request->query->has('stored'); $page['stored'] = $request->query->has('stored');
$page['title'] = getlocal('operator.groups.title'); $page['title'] = getlocal('Operator groups');
$page['menuid'] = ($operator['operatorid'] == $op_id) ? 'profile' : 'operators'; $page['menuid'] = ($operator['operatorid'] == $op_id) ? 'profile' : 'operators';
$page = array_merge($page, prepare_menu($operator)); $page = array_merge($page, prepare_menu($operator));
$page['tabs'] = $this->buildTabs($request); $page['tabs'] = $this->buildTabs($request);

View File

@ -74,17 +74,17 @@ class ManagementController extends AbstractController
$page['allowedAgents'] = $operators_list; $page['allowedAgents'] = $operators_list;
$page['canmodify'] = is_capable(CAN_ADMINISTRATE, $operator); $page['canmodify'] = is_capable(CAN_ADMINISTRATE, $operator);
$page['availableOrders'] = array( $page['availableOrders'] = array(
array('id' => 'login', 'name' => getlocal('page_agents.login')), array('id' => 'login', 'name' => getlocal('Login')),
array('id' => 'localename', 'name' => getlocal('page_agents.agent_name')), array('id' => 'localename', 'name' => getlocal('Name')),
array('id' => 'commonname', 'name' => getlocal('page_agents.commonname')), array('id' => 'commonname', 'name' => getlocal('International name')),
array('id' => 'lastseen', 'name' => getlocal('page_agents.status')), array('id' => 'lastseen', 'name' => getlocal('Last active')),
); );
$page['availableDirections'] = array( $page['availableDirections'] = array(
array('id' => 'desc', 'name' => getlocal('page_agents.sortdirection.desc')), array('id' => 'desc', 'name' => getlocal('descending')),
array('id' => 'asc', 'name' => getlocal('page_agents.sortdirection.asc')), array('id' => 'asc', 'name' => getlocal('ascending')),
); );
$page['title'] = getlocal('page_agents.title'); $page['title'] = getlocal('Operators');
$page['menuid'] = 'operators'; $page['menuid'] = 'operators';
$page = array_merge($page, prepare_menu($operator)); $page = array_merge($page, prepare_menu($operator));
@ -108,13 +108,13 @@ class ManagementController extends AbstractController
$errors = array(); $errors = array();
if ($operator_id == $current_operator['operatorid']) { if ($operator_id == $current_operator['operatorid']) {
$errors[] = getlocal('page_agents.error.cannot_remove_self'); $errors[] = getlocal('Cannot remove self.');
} else { } else {
$operator = operator_by_id($operator_id); $operator = operator_by_id($operator_id);
if (!$operator) { if (!$operator) {
throw new NotFoundException('The operator is not found.'); throw new NotFoundException('The operator is not found.');
} elseif ($operator['vclogin'] == 'admin') { } elseif ($operator['vclogin'] == 'admin') {
$errors[] = getlocal("page_agents.error.cannot_remove_admin"); $errors[] = getlocal("Cannot remove operator \"admin\".");
} }
} }
@ -149,13 +149,13 @@ class ManagementController extends AbstractController
$errors = array(); $errors = array();
if ($operator_id == $current_operator['operatorid']) { if ($operator_id == $current_operator['operatorid']) {
$errors[] = getlocal('page_agents.cannot.disable.self'); $errors[] = getlocal('Cannot disable self.');
} else { } else {
$operator = operator_by_id($operator_id); $operator = operator_by_id($operator_id);
if (!$operator) { if (!$operator) {
throw new NotFoundException('The operator is not found.'); throw new NotFoundException('The operator is not found.');
} elseif ($operator['vclogin'] == 'admin') { } elseif ($operator['vclogin'] == 'admin') {
$errors[] = getlocal('page_agents.cannot.disable.admin'); $errors[] = getlocal('Cannot disable "admin".');
} }
} }

View File

@ -54,7 +54,7 @@ class PermissionsController extends AbstractController
// Check if the target operator exists // Check if the target operator exists
$page['currentop'] = $op $page['currentop'] = $op
? get_operator_name($op) . ' (' . $op['vclogin'] . ')' ? get_operator_name($op) . ' (' . $op['vclogin'] . ')'
: getlocal('not_found'); : getlocal('-not found-');
// Build list of permissions which belongs to the target operator. // Build list of permissions which belongs to the target operator.
$checked_permissions = array(); $checked_permissions = array();
@ -72,7 +72,7 @@ class PermissionsController extends AbstractController
} }
$page['stored'] = $request->query->has('stored'); $page['stored'] = $request->query->has('stored');
$page['title'] = getlocal('permissions.title'); $page['title'] = getlocal('Permissions');
$page['menuid'] = ($operator['operatorid'] == $op_id) ? 'profile' : 'operators'; $page['menuid'] = ($operator['operatorid'] == $op_id) ? 'profile' : 'operators';
$page = array_merge($page, prepare_menu($operator)); $page = array_merge($page, prepare_menu($operator));
$page['tabs'] = $this->buildTabs($request); $page['tabs'] = $this->buildTabs($request);

View File

@ -59,7 +59,7 @@ class ProfileController extends AbstractController
$no_password = check_password_hash($operator['vclogin'], '', $operator['vcpassword']) $no_password = check_password_hash($operator['vclogin'], '', $operator['vcpassword'])
&& !$request->query->has('stored'); && !$request->query->has('stored');
if ($no_password) { if ($no_password) {
$page['errors'][] = getlocal('my_settings.error.no_password'); $page['errors'][] = getlocal('No Password set for the Administrator');
} }
$page['formlogin'] = $op['vclogin']; $page['formlogin'] = $op['vclogin'];
@ -94,7 +94,7 @@ class ProfileController extends AbstractController
$page['canmodify'] = $can_modify ? '1' : ''; $page['canmodify'] = $can_modify ? '1' : '';
$page['canchangelogin'] = is_capable(CAN_ADMINISTRATE, $operator); $page['canchangelogin'] = is_capable(CAN_ADMINISTRATE, $operator);
$page['needChangePassword'] = check_password_hash($operator['vclogin'], '', $operator['vcpassword']); $page['needChangePassword'] = check_password_hash($operator['vclogin'], '', $operator['vcpassword']);
$page['title'] = getlocal('page_agent.title'); $page['title'] = getlocal('Operator details');
$page['menuid'] = ($op_id == $operator['operatorid']) ? 'profile' : 'operators'; $page['menuid'] = ($op_id == $operator['operatorid']) ? 'profile' : 'operators';
$page['requirePassword'] = (!$op_id || $page['needChangePassword']); $page['requirePassword'] = (!$op_id || $page['needChangePassword']);
$page['formaction'] = $request->getBaseUrl() . $request->getPathInfo(); $page['formaction'] = $request->getBaseUrl() . $request->getPathInfo();
@ -133,33 +133,33 @@ class ProfileController extends AbstractController
$code = $request->request->get('code'); $code = $request->request->get('code');
if (!$local_name) { if (!$local_name) {
$errors[] = no_field('form.field.agent_name'); $errors[] = no_field('Name');
} }
if (!$common_name) { if (!$common_name) {
$errors[] = no_field('form.field.agent_commonname'); $errors[] = no_field('International name (Latin)');
} }
if (!$login) { if (!$login) {
$errors[] = no_field('form.field.login'); $errors[] = no_field('Login');
} elseif (!preg_match("/^[\w_\.]+$/", $login)) { } elseif (!preg_match("/^[\w_\.]+$/", $login)) {
$errors[] = getlocal('page_agent.error.wrong_login'); $errors[] = getlocal('Login should contain only latin characters, numbers and underscore symbol.');
} }
if (!$email || !is_valid_email($email)) { if (!$email || !is_valid_email($email)) {
$errors[] = wrong_field('form.field.mail'); $errors[] = wrong_field('E-mail');
} }
if ($code && (!preg_match("/^[A-Za-z0-9_]+$/", $code))) { if ($code && (!preg_match("/^[A-Za-z0-9_]+$/", $code))) {
$errors[] = getlocal('page_agent.error.wrong_agent_code'); $errors[] = getlocal('Code should contain only latin characters, numbers and underscore symbol.');
} }
if (!$op_id && !$password) { if (!$op_id && !$password) {
$errors[] = no_field('form.field.password'); $errors[] = no_field('Password');
} }
if ($password != $password_confirm) { if ($password != $password_confirm) {
$errors[] = getlocal('my_settings.error.password_match'); $errors[] = getlocal('Entered passwords do not match');
} }
$existing_operator = operator_by_login($login); $existing_operator = operator_by_login($login);
@ -168,7 +168,7 @@ class ProfileController extends AbstractController
&& $existing_operator && $existing_operator
&& $op_id != $existing_operator['operatorid']); && $op_id != $existing_operator['operatorid']);
if ($duplicate_login) { if ($duplicate_login) {
$errors[] = getlocal('page_agent.error.duplicate_login'); $errors[] = getlocal('Please choose another login because an operator with that login is already registered in the system.');
} }
// Check if operator with specified email already exists in the database. // Check if operator with specified email already exists in the database.
@ -181,7 +181,7 @@ class ProfileController extends AbstractController
&& $existing_operator && $existing_operator
&& $op_id != $existing_operator['operatorid']); && $op_id != $existing_operator['operatorid']);
if ($duplicate_email) { if ($duplicate_email) {
$errors[] = getlocal('page_agent.error.duplicate_email'); $errors[] = getlocal('Please choose another email because an operator with that email is already registered in the system.');
} }
if (count($errors) != 0) { if (count($errors) != 0) {

View File

@ -42,8 +42,8 @@ class PasswordRecoveryController extends AbstractController
$page = array( $page = array(
'version' => MIBEW_VERSION, 'version' => MIBEW_VERSION,
'title' => getlocal('restore.title'), 'title' => getlocal('Trouble Accessing Your Account?'),
'headertitle' => getlocal('app.title'), 'headertitle' => getlocal('Mibew Messenger'),
'show_small_login' => true, 'show_small_login' => true,
'fixedwrap' => true, 'fixedwrap' => true,
'errors' => array(), 'errors' => array(),
@ -57,7 +57,7 @@ class PasswordRecoveryController extends AbstractController
? operator_by_email($login_or_email) ? operator_by_email($login_or_email)
: operator_by_login($login_or_email); : operator_by_login($login_or_email);
if (!$to_restore) { if (!$to_restore) {
$page['errors'][] = getlocal('no_such_operator'); $page['errors'][] = getlocal('No such Operator');
} }
$email = $to_restore['vcemail']; $email = $to_restore['vcemail'];
@ -128,8 +128,8 @@ class PasswordRecoveryController extends AbstractController
$page = array( $page = array(
'version' => MIBEW_VERSION, 'version' => MIBEW_VERSION,
'showform' => true, 'showform' => true,
'title' => getlocal('resetpwd.title'), 'title' => getlocal('Change your password'),
'headertitle' => getlocal('app.title'), 'headertitle' => getlocal('Mibew Messenger'),
'show_small_login' => true, 'show_small_login' => true,
'fixedwrap' => true, 'fixedwrap' => true,
'errors' => array(), 'errors' => array(),
@ -166,11 +166,11 @@ class PasswordRecoveryController extends AbstractController
$password_confirm = $request->request->get('passwordConfirm'); $password_confirm = $request->request->get('passwordConfirm');
if (!$password) { if (!$password) {
$page['errors'][] = no_field('form.field.password'); $page['errors'][] = no_field('Password');
} }
if ($password != $password_confirm) { if ($password != $password_confirm) {
$page['errors'][] = getlocal('my_settings.error.password_match'); $page['errors'][] = getlocal('Entered passwords do not match');
} }
if (count($page['errors']) == 0) { if (count($page['errors']) == 0) {

View File

@ -42,15 +42,15 @@ abstract class AbstractController extends BaseController
$performance = $route == 'settings_performance' || $route == 'settings_performance_save'; $performance = $route == 'settings_performance' || $route == 'settings_performance_save';
$tabs[getlocal('page_settings.tab.main')] = (!$common) $tabs[getlocal('General')] = (!$common)
? $this->generateUrl('settings_common') ? $this->generateUrl('settings_common')
: ''; : '';
$tabs[getlocal('page_settings.tab.features')] = (!$features) $tabs[getlocal('Optional Services')] = (!$features)
? $this->generateUrl('settings_features') ? $this->generateUrl('settings_features')
: ''; : '';
$tabs[getlocal('page_settings.tab.performance')] = (!$performance) $tabs[getlocal('Performance')] = (!$performance)
? $this->generateUrl('settings_performance') ? $this->generateUrl('settings_performance')
: ''; : '';

View File

@ -104,7 +104,7 @@ class CommonController extends AbstractController
array('cron_key' => $params['cron_key']), array('cron_key' => $params['cron_key']),
UrlGeneratorInterface::ABSOLUTE_URL UrlGeneratorInterface::ABSOLUTE_URL
); );
$page['title'] = getlocal('settings.title'); $page['title'] = getlocal('Messenger settings');
$page['menuid'] = 'settings'; $page['menuid'] = 'settings';
$page = array_merge($page, prepare_menu($operator)); $page = array_merge($page, prepare_menu($operator));
@ -152,7 +152,7 @@ class CommonController extends AbstractController
} }
if ($params['email'] && !is_valid_email($params['email'])) { if ($params['email'] && !is_valid_email($params['email'])) {
$errors[] = getlocal('settings.wrong.email'); $errors[] = getlocal('Enter a valid email address');
} }
if ($params['geolinkparams']) { if ($params['geolinkparams']) {
@ -170,7 +170,7 @@ class CommonController extends AbstractController
} }
if (preg_match("/^[0-9A-Za-z]*$/", $params['cron_key']) == 0) { if (preg_match("/^[0-9A-Za-z]*$/", $params['cron_key']) == 0) {
$errors[] = getlocal('settings.wrong.cronkey'); $errors[] = getlocal('Use only Latin letters(upper and lower case) and numbers in cron key.');
} }
// Load styles configs // Load styles configs

View File

@ -54,7 +54,7 @@ class FeaturesController extends AbstractController
$page['canmodify'] = is_capable(CAN_ADMINISTRATE, $operator); $page['canmodify'] = is_capable(CAN_ADMINISTRATE, $operator);
$page['stored'] = $request->query->get('stored'); $page['stored'] = $request->query->get('stored');
$page['title'] = getlocal('settings.title'); $page['title'] = getlocal('Messenger settings');
$page['menuid'] = 'settings'; $page['menuid'] = 'settings';
$page = array_merge($page, prepare_menu($operator)); $page = array_merge($page, prepare_menu($operator));
$page['tabs'] = $this->buildTabs($request); $page['tabs'] = $this->buildTabs($request);

View File

@ -86,7 +86,7 @@ class PerformanceController extends AbstractController
$page['enabletracking'] = Settings::get('enabletracking'); $page['enabletracking'] = Settings::get('enabletracking');
$page['stored'] = $request->query->get('stored'); $page['stored'] = $request->query->get('stored');
$page['title'] = getlocal("settings.title"); $page['title'] = getlocal("Messenger settings");
$page['menuid'] = "settings"; $page['menuid'] = "settings";
$page = array_merge($page, prepare_menu($operator)); $page = array_merge($page, prepare_menu($operator));
@ -112,59 +112,59 @@ class PerformanceController extends AbstractController
$params['online_timeout'] = $request->request->get('onlinetimeout'); $params['online_timeout'] = $request->request->get('onlinetimeout');
if (!is_numeric($params['online_timeout'])) { if (!is_numeric($params['online_timeout'])) {
$errors[] = wrong_field("settings.onlinetimeout"); $errors[] = wrong_field("Operator online time threshold");
} }
$params['updatefrequency_operator'] = $request->request->get('frequencyoperator'); $params['updatefrequency_operator'] = $request->request->get('frequencyoperator');
if (!is_numeric($params['updatefrequency_operator'])) { if (!is_numeric($params['updatefrequency_operator'])) {
$errors[] = wrong_field("settings.frequencyoperator"); $errors[] = wrong_field("Operator's console refresh time");
} }
$params['updatefrequency_chat'] = $request->request->get('frequencychat'); $params['updatefrequency_chat'] = $request->request->get('frequencychat');
if (!is_numeric($params['updatefrequency_chat'])) { if (!is_numeric($params['updatefrequency_chat'])) {
$errors[] = wrong_field("settings.frequencychat"); $errors[] = wrong_field("Chat refresh time");
} }
$params['max_connections_from_one_host'] = $request->request->get('onehostconnections'); $params['max_connections_from_one_host'] = $request->request->get('onehostconnections');
if (!is_numeric($params['max_connections_from_one_host'])) { if (!is_numeric($params['max_connections_from_one_host'])) {
$errors[] = getlocal("settings.wrong.onehostconnections"); $errors[] = getlocal("\"Max number of threads\" field should be a number");
} }
$params['thread_lifetime'] = $request->request->get('threadlifetime'); $params['thread_lifetime'] = $request->request->get('threadlifetime');
if (!is_numeric($params['thread_lifetime'])) { if (!is_numeric($params['thread_lifetime'])) {
$errors[] = getlocal("settings.wrong.threadlifetime"); $errors[] = getlocal("\"Thread lifetime\" field should be a number");
} }
$params['statistics_aggregation_interval'] = $request->request->get('statistics_aggregation_interval'); $params['statistics_aggregation_interval'] = $request->request->get('statistics_aggregation_interval');
if (!is_numeric($params['statistics_aggregation_interval'])) { if (!is_numeric($params['statistics_aggregation_interval'])) {
$errors[] = wrong_field("settings.statistics_aggregation_interval"); $errors[] = wrong_field("Statistics aggregation interval");
} }
if (Settings::get('enabletracking')) { if (Settings::get('enabletracking')) {
$params['updatefrequency_tracking'] = $request->request->get('frequencytracking'); $params['updatefrequency_tracking'] = $request->request->get('frequencytracking');
if (!is_numeric($params['updatefrequency_tracking'])) { if (!is_numeric($params['updatefrequency_tracking'])) {
$errors[] = wrong_field("settings.frequencytracking"); $errors[] = wrong_field("Tracking refresh time");
} }
$params['visitors_limit'] = $request->request->get('visitorslimit'); $params['visitors_limit'] = $request->request->get('visitorslimit');
if (!is_numeric($params['visitors_limit'])) { if (!is_numeric($params['visitors_limit'])) {
$errors[] = wrong_field("settings.visitorslimit"); $errors[] = wrong_field("Limit for tracked visitors list");
} }
$params['invitation_lifetime'] = $request->request->get('invitationlifetime'); $params['invitation_lifetime'] = $request->request->get('invitationlifetime');
if (!is_numeric($params['invitation_lifetime'])) { if (!is_numeric($params['invitation_lifetime'])) {
$errors[] = wrong_field("settings.invitationlifetime"); $errors[] = wrong_field("Invitation lifetime");
} }
$params['tracking_lifetime'] = $request->request->get('trackinglifetime'); $params['tracking_lifetime'] = $request->request->get('trackinglifetime');
if (!is_numeric($params['tracking_lifetime'])) { if (!is_numeric($params['tracking_lifetime'])) {
$errors[] = wrong_field("settings.trackinglifetime"); $errors[] = wrong_field("Track lifetime");
} }
} }
$params['max_uploaded_file_size'] = $request->request->get('maxuploadedfilesize'); $params['max_uploaded_file_size'] = $request->request->get('maxuploadedfilesize');
if (!is_numeric($params['max_uploaded_file_size'])) { if (!is_numeric($params['max_uploaded_file_size'])) {
$errors[] = wrong_field("settings.maxuploadedfilesize"); $errors[] = wrong_field("Maximum size of uploaded files");
} }
if (count($errors) != 0) { if (count($errors) != 0) {

View File

@ -61,7 +61,7 @@ class StatisticsController extends AbstractController
UrlGeneratorInterface::ABSOLUTE_URL UrlGeneratorInterface::ABSOLUTE_URL
); );
$page['pageDescription'] = getlocal( $page['pageDescription'] = getlocal(
'statistics.description.full', 'From this page you can generate a variety of usage reports. Last time statistics was calculated {0}. You can calculate it <a href="{1}" target="_blank">manually</a>.',
array( array(
date_to_text(Settings::get('_last_cron_run')), date_to_text(Settings::get('_last_cron_run')),
$cron_uri, $cron_uri,
@ -76,7 +76,7 @@ class StatisticsController extends AbstractController
$start = $time_interval['start']; $start = $time_interval['start'];
$end = $time_interval['end']; $end = $time_interval['end'];
if ($start > $end) { if ($start > $end) {
$page['errors'][] = getlocal('statistics.wrong.dates'); $page['errors'][] = getlocal('You have selected From date after Till date');
} }
$page = array_merge( $page = array_merge(
@ -97,7 +97,7 @@ class StatisticsController extends AbstractController
} }
$page['showresults'] = count($page['errors']) == 0; $page['showresults'] = count($page['errors']) == 0;
$page['title'] = getlocal("statistics.title"); $page['title'] = getlocal("Statistics");
$page['menuid'] = "statistics"; $page['menuid'] = "statistics";
$page = array_merge($page, prepare_menu($operator)); $page = array_merge($page, prepare_menu($operator));
$page['tabs'] = $this->buildTabs($request); $page['tabs'] = $this->buildTabs($request);
@ -118,16 +118,16 @@ class StatisticsController extends AbstractController
$args = $request->query->all(); $args = $request->query->all();
$type = $request->attributes->get('type'); $type = $request->attributes->get('type');
$tabs[getlocal('report.bydate.title')] = $type != self::TYPE_BY_DATE $tabs[getlocal('Usage statistics for each date')] = $type != self::TYPE_BY_DATE
? $this->generateUrl('statistics', ($args + array('type' => self::TYPE_BY_DATE))) ? $this->generateUrl('statistics', ($args + array('type' => self::TYPE_BY_DATE)))
: ''; : '';
$tabs[getlocal('report.byoperator.title')] = $type != self::TYPE_BY_OPERATOR $tabs[getlocal('Threads by operator')] = $type != self::TYPE_BY_OPERATOR
? $this->generateUrl('statistics', ($args + array('type' => self::TYPE_BY_OPERATOR))) ? $this->generateUrl('statistics', ($args + array('type' => self::TYPE_BY_OPERATOR)))
: ''; : '';
if (Settings::get('enabletracking')) { if (Settings::get('enabletracking')) {
$tabs[getlocal('report.bypage.title')] = $type != self::TYPE_BY_PAGE $tabs[getlocal('Chat threads by page')] = $type != self::TYPE_BY_PAGE
? $this->generateUrl('statistics', ($args + array('type' => self::TYPE_BY_PAGE))) ? $this->generateUrl('statistics', ($args + array('type' => self::TYPE_BY_PAGE)))
: ''; : '';
} }

View File

@ -56,7 +56,7 @@ class StyleController extends AbstractController
$page['formaction'] = $request->getBaseUrl() . $request->getPathInfo(); $page['formaction'] = $request->getBaseUrl() . $request->getPathInfo();
$page['availablePreviews'] = $style_list; $page['availablePreviews'] = $style_list;
$page['screenshotsList'] = $screenshots; $page['screenshotsList'] = $screenshots;
$page['title'] = getlocal('page.preview.title'); $page['title'] = getlocal('Site style');
$page['menuid'] = 'styles'; $page['menuid'] = 'styles';
$page = array_merge($page, prepare_menu($operator)); $page = array_merge($page, prepare_menu($operator));
@ -78,16 +78,16 @@ class StyleController extends AbstractController
$tabs = array(); $tabs = array();
$type = $request->attributes->get('type'); $type = $request->attributes->get('type');
$tabs[getlocal("page_settings.tab.page_themes")] = ($type != self::TYPE_PAGE) $tabs[getlocal("Operator pages themes preview")] = ($type != self::TYPE_PAGE)
? $this->generateUrl('style_preview', array('type' => self::TYPE_PAGE)) ? $this->generateUrl('style_preview', array('type' => self::TYPE_PAGE))
: ''; : '';
$tabs[getlocal("page_settings.tab.themes")] = ($type != self::TYPE_CHAT) $tabs[getlocal("Chat themes preview")] = ($type != self::TYPE_CHAT)
? $this->generateUrl('style_preview', array('type' => self::TYPE_CHAT)) ? $this->generateUrl('style_preview', array('type' => self::TYPE_CHAT))
: ''; : '';
if (Settings::get('enabletracking')) { if (Settings::get('enabletracking')) {
$tabs[getlocal("page_settings.tab.invitationthemes")] = ($type != self::TYPE_INVITATION) $tabs[getlocal("Invitation themes preview")] = ($type != self::TYPE_INVITATION)
? $this->generateUrl('style_preview', array('type' => self::TYPE_INVITATION)) ? $this->generateUrl('style_preview', array('type' => self::TYPE_INVITATION))
: ''; : '';
} }

View File

@ -39,7 +39,7 @@ class UpdatesController extends AbstractController
'localizations' => get_available_locales(), 'localizations' => get_available_locales(),
'phpVersion' => phpversion(), 'phpVersion' => phpversion(),
'version' => MIBEW_VERSION, 'version' => MIBEW_VERSION,
'title' => getlocal("updates.title"), 'title' => getlocal("Updates"),
'menuid' => "updates", 'menuid' => "updates",
'errors' => array(), 'errors' => array(),
); );

View File

@ -67,7 +67,7 @@ class UsersController extends AbstractController
$page['coreStyles.trackedVisitorWindowParams'] = $style_config['tracked']['visitor_window_params']; $page['coreStyles.trackedVisitorWindowParams'] = $style_config['tracked']['visitor_window_params'];
$page['coreStyles.banWindowParams'] = $style_config['ban']['window_params']; $page['coreStyles.banWindowParams'] = $style_config['ban']['window_params'];
$page['title'] = getlocal("clients.title"); $page['title'] = getlocal("List of visitors waiting");
$page['menuid'] = "users"; $page['menuid'] = "users";
// Get additional plugins data // Get additional plugins data

View File

@ -119,7 +119,7 @@ class WidgetController extends AbstractController
'operatorName' => htmlspecialchars($operator_name), 'operatorName' => htmlspecialchars($operator_name),
'avatarUrl' => htmlspecialchars($operator['vcavatar']), 'avatarUrl' => htmlspecialchars($operator['vcavatar']),
'threadUrl' => $this->generateUrl('chat_user_invitation'), 'threadUrl' => $this->generateUrl('chat_user_invitation'),
'acceptCaption' => getlocal('invitation.accept.caption'), 'acceptCaption' => getlocal('Answer'),
); );
$_SESSION['invitation_threadid'] = $thread->id; $_SESSION['invitation_threadid'] = $thread->id;

View File

@ -503,7 +503,7 @@ class ThreadProcessor extends ClientSideProcessor
if ($email) { if ($email) {
$thread->postMessage( $thread->postMessage(
Thread::KIND_FOR_AGENT, Thread::KIND_FOR_AGENT,
getlocal('chat.visitor.email', array($email), CURRENT_LOCALE, true) getlocal('E-Mail: {0}', array($email), CURRENT_LOCALE, true)
); );
} }
@ -558,7 +558,7 @@ class ThreadProcessor extends ClientSideProcessor
unset($_SESSION['mibew_captcha']); unset($_SESSION['mibew_captcha']);
if (empty($original) || empty($captcha) || $captcha != $original) { if (empty($original) || empty($captcha) || $captcha != $original) {
throw new ThreadProcessorException( throw new ThreadProcessorException(
getlocal('errors.captcha'), getlocal('The letters you typed don\'t match the letters that were shown in the picture.'),
ThreadProcessorException::ERROR_WRONG_CAPTCHA ThreadProcessorException::ERROR_WRONG_CAPTCHA
); );
} }
@ -573,7 +573,7 @@ class ThreadProcessor extends ClientSideProcessor
if (!is_valid_email($email)) { if (!is_valid_email($email)) {
throw new ThreadProcessorException( throw new ThreadProcessorException(
wrong_field("form.field.email"), wrong_field("Your email"),
ThreadProcessorException::ERROR_WRONG_EMAIL ThreadProcessorException::ERROR_WRONG_EMAIL
); );
} }
@ -617,19 +617,19 @@ class ThreadProcessor extends ClientSideProcessor
if ($referrer) { if ($referrer) {
$thread->postMessage( $thread->postMessage(
Thread::KIND_FOR_AGENT, Thread::KIND_FOR_AGENT,
getlocal('chat.came.from', array($referrer), CURRENT_LOCALE, true) getlocal('Vistor came from page {0}', array($referrer), CURRENT_LOCALE, true)
); );
} }
if ($email) { if ($email) {
$thread->postMessage( $thread->postMessage(
Thread::KIND_FOR_AGENT, Thread::KIND_FOR_AGENT,
getlocal('chat.visitor.email', array($email), CURRENT_LOCALE, true) getlocal('E-Mail: {0}', array($email), CURRENT_LOCALE, true)
); );
} }
if ($info) { if ($info) {
$thread->postMessage( $thread->postMessage(
Thread::KIND_FOR_AGENT, Thread::KIND_FOR_AGENT,
getlocal('chat.visitor.info', array($info), CURRENT_LOCALE, true) getlocal('Info: {0}', array($info), CURRENT_LOCALE, true)
); );
} }
$thread->postMessage(Thread::KIND_USER, $message, array('name' => $name)); $thread->postMessage(Thread::KIND_USER, $message, array('name' => $name));

View File

@ -364,7 +364,7 @@ class Thread
// Send message // Send message
$thread->postMessage( $thread->postMessage(
self::KIND_EVENTS, self::KIND_EVENTS,
getlocal('chat.status.user.reopenedthread', null, $thread->locale, true) getlocal('Visitor joined chat again', null, $thread->locale, true)
); );
return $thread; return $thread;
@ -601,7 +601,7 @@ class Thread
if ($this->state == self::STATE_CHATTING) { if ($this->state == self::STATE_CHATTING) {
// Send message to user // Send message to user
$message_to_post = getlocal( $message_to_post = getlocal(
'chat.status.operator.dead', 'Your operator has connection issues. We have moved you to a priorty position in the queue. Sorry for keeping you waiting.',
null, null,
$this->locale, $this->locale,
true true
@ -627,7 +627,7 @@ class Thread
// And send a message to operator // And send a message to operator
$message_to_post = getlocal( $message_to_post = getlocal(
'chat.status.user.dead', 'Visitor closed chat window',
null, null,
$this->locale, $this->locale,
true true
@ -710,14 +710,14 @@ class Thread
// Prepare message // Prepare message
if ($this->nextAgent == $operator['operatorid']) { if ($this->nextAgent == $operator['operatorid']) {
$message_to_post = getlocal( $message_to_post = getlocal(
"chat.status.operator.changed", "Operator <strong>{0}</strong> changed operator <strong>{1}</strong>",
array($operator_name, $this->agentName), array($operator_name, $this->agentName),
$this->locale, $this->locale,
true true
); );
} else { } else {
$message_to_post = getlocal( $message_to_post = getlocal(
"chat.status.operator.returned", "Operator {0} is back",
array($operator_name), array($operator_name),
$this->locale, $this->locale,
true true
@ -857,7 +857,7 @@ class Thread
$this->postMessage( $this->postMessage(
self::KIND_EVENTS, self::KIND_EVENTS,
getlocal( getlocal(
"chat.status.user.left", "Visitor {0} left the chat",
array($this->userName), array($this->userName),
$this->locale, $this->locale,
true true
@ -868,7 +868,7 @@ class Thread
$this->postMessage( $this->postMessage(
self::KIND_FOR_AGENT, self::KIND_FOR_AGENT,
getlocal( getlocal(
'chat.visitor.invitation.canceled', 'Operator canceled invitation',
null, null,
$this->locale, $this->locale,
true true
@ -878,7 +878,7 @@ class Thread
$this->postMessage( $this->postMessage(
self::KIND_EVENTS, self::KIND_EVENTS,
getlocal( getlocal(
"chat.status.operator.left", "Operator {0} left the chat",
array($this->agentName), array($this->agentName),
$this->locale, $this->locale,
true true
@ -936,14 +936,14 @@ class Thread
if ($this->state == self::STATE_WAITING) { if ($this->state == self::STATE_WAITING) {
if ($operator['operatorid'] != $this->agentId) { if ($operator['operatorid'] != $this->agentId) {
$message = getlocal( $message = getlocal(
"chat.status.operator.changed", "Operator <strong>{0}</strong> changed operator <strong>{1}</strong>",
array($operator_name, $this->agentName), array($operator_name, $this->agentName),
$this->locale, $this->locale,
true true
); );
} else { } else {
$message = getlocal( $message = getlocal(
"chat.status.operator.returned", "Operator {0} is back",
array($operator_name), array($operator_name),
$this->locale, $this->locale,
true true
@ -951,7 +951,7 @@ class Thread
} }
} else { } else {
$message = getlocal( $message = getlocal(
"chat.status.operator.joined", "Operator {0} joined the chat",
array($operator_name), array($operator_name),
$this->locale, $this->locale,
true true
@ -962,7 +962,7 @@ class Thread
if ($operator['operatorid'] != $this->agentId) { if ($operator['operatorid'] != $this->agentId) {
$take_thread = true; $take_thread = true;
$message = getlocal( $message = getlocal(
"chat.status.operator.changed", "Operator <strong>{0}</strong> changed operator <strong>{1}</strong>",
array($operator_name, $this->agentName), array($operator_name, $this->agentName),
$this->locale, $this->locale,
true true
@ -1013,7 +1013,7 @@ class Thread
// Send message about renaming // Send message about renaming
$message = getlocal( $message = getlocal(
"chat.status.user.changedname", "The visitor changed their name <strong>{0}</strong> to <strong>{1}</strong>",
array($old_name, $new_name), array($old_name, $new_name),
$this->locale, $this->locale,
true true

View File

@ -72,16 +72,16 @@ function set_form_date($utime, $prefix)
function date_to_text($unixtime) function date_to_text($unixtime)
{ {
if ($unixtime < 60 * 60 * 24 * 30) { if ($unixtime < 60 * 60 * 24 * 30) {
return getlocal("time.never"); return getlocal("Never");
} }
$then = getdate($unixtime); $then = getdate($unixtime);
$now = getdate(); $now = getdate();
if ($then['yday'] == $now['yday'] && $then['year'] == $now['year']) { if ($then['yday'] == $now['yday'] && $then['year'] == $now['year']) {
return getlocal("time.today.at", array(format_date($unixtime, 'time'))); return getlocal("Today at {0}", array(format_date($unixtime, 'time')));
} elseif (($then['yday'] + 1) == $now['yday'] && $then['year'] == $now['year']) { } elseif (($then['yday'] + 1) == $now['yday'] && $then['year'] == $now['year']) {
return getlocal("time.yesterday.at", array(format_date($unixtime, 'time'))); return getlocal("Yesterday at {0}", array(format_date($unixtime, 'time')));
} else { } else {
return format_date($unixtime, 'full'); return format_date($unixtime, 'full');
} }

View File

@ -803,7 +803,7 @@ function get_localized_string($string, $locale)
return get_localized_string($string, 'en'); return get_localized_string($string, 'en');
} }
return "!" . $string; return $string;
} }
/* prepares for Javascript string */ /* prepares for Javascript string */

View File

@ -201,17 +201,17 @@ function get_plugins_data($page_name)
function no_field($key) function no_field($key)
{ {
return getlocal('errors.required', array(getlocal($key))); return getlocal('Please fill "{0}".', array(getlocal($key)));
} }
function failed_uploading_file($filename, $key) function failed_uploading_file($filename, $key)
{ {
return getlocal('errors.failed.uploading.file', array($filename, getlocal($key))); return getlocal('Error uploading file "{0}": {1}.', array($filename, getlocal($key)));
} }
function wrong_field($key) function wrong_field($key)
{ {
return getlocal('errors.wrong_field', array(getlocal($key))); return getlocal('Please fill "{0}" correctly.', array(getlocal($key)));
} }
function add_params($servlet, $params) function add_params($servlet, $params)

View File

@ -147,7 +147,7 @@ function verifyparam_groupid($param_id, &$errors)
if ($group_id) { if ($group_id) {
$group = group_by_id($group_id); $group = group_by_id($group_id);
if (!$group) { if (!$group) {
$errors[] = getlocal("page.group.no_such"); $errors[] = getlocal("No such group");
$group_id = ""; $group_id = "";
} }
} }
@ -166,7 +166,7 @@ function get_groups_list()
$all_groups = get_all_groups(); $all_groups = get_all_groups();
$result[] = array( $result[] = array(
'groupid' => '', 'groupid' => '',
'vclocalname' => getlocal("page.gen_button.default_group"), 'vclocalname' => getlocal("-all operators-"),
'level' => 0, 'level' => 0,
); );
foreach ($all_groups as $g) { foreach ($all_groups as $g) {

View File

@ -124,7 +124,7 @@ function get_available_parent_groups($skip_group)
$result[] = array( $result[] = array(
'groupid' => '', 'groupid' => '',
'level' => '', 'level' => '',
'vclocalname' => getlocal("form.field.groupparent.root"), 'vclocalname' => getlocal("-none-"),
); );
$db = Database::getInstance(); $db = Database::getInstance();

View File

@ -120,7 +120,7 @@ function invitation_invite($visitor_id, $operator)
$thread->postMessage( $thread->postMessage(
Thread::KIND_FOR_AGENT, Thread::KIND_FOR_AGENT,
getlocal( getlocal(
'chat.visitor.invitation.sent', 'Operator {0} invites visitor at {1} page',
array($operator_name, $last_visited_page), array($operator_name, $last_visited_page),
CURRENT_LOCALE, CURRENT_LOCALE,
true true
@ -128,7 +128,7 @@ function invitation_invite($visitor_id, $operator)
); );
$thread->postMessage( $thread->postMessage(
Thread::KIND_AGENT, Thread::KIND_AGENT,
getlocal('invitation.message', null, CURRENT_LOCALE, true), getlocal('Hello, how can I help you?', null, CURRENT_LOCALE, true),
array( array(
'name' => $operator_name, 'name' => $operator_name,
'operator_id' => $operator['operatorid'], 'operator_id' => $operator['operatorid'],
@ -202,7 +202,7 @@ function invitation_reject($visitor_id)
if ($thread) { if ($thread) {
$thread->postMessage( $thread->postMessage(
Thread::KIND_FOR_AGENT, Thread::KIND_FOR_AGENT,
getlocal('chat.visitor.invitation.rejected', null, CURRENT_LOCALE, true) getlocal('Visitor rejected invitation', null, CURRENT_LOCALE, true)
); );
} }
@ -272,7 +272,7 @@ function invitation_close_old()
$thread = Thread::createFromDbInfo($thread_info); $thread = Thread::createFromDbInfo($thread_info);
$thread->postMessage( $thread->postMessage(
Thread::KIND_FOR_AGENT, Thread::KIND_FOR_AGENT,
getlocal('chat.visitor.invitation.ignored', null, $thread->locale, true) getlocal('Visitor ignored invitation and it was closed automatically', null, $thread->locale, true)
); );
unset($thread); unset($thread);
} }

View File

@ -572,8 +572,8 @@ function setup_redirect_links(UrlGeneratorInterface $url_generator, $threadid, $
$params['nextAgent'] = $agent['operatorid']; $params['nextAgent'] = $agent['operatorid'];
$status = $agent['time'] < Settings::get('online_timeout') $status = $agent['time'] < Settings::get('online_timeout')
? ($agent['istatus'] == 0 ? ($agent['istatus'] == 0
? getlocal("char.redirect.operator.online_suff") ? getlocal("(online)")
: getlocal("char.redirect.operator.away_suff")) : getlocal("(away)"))
: ""; : "";
$agent_list .= "<li><a href=\"" . $url_generator->generate('chat_operator_redirect', $params) $agent_list .= "<li><a href=\"" . $url_generator->generate('chat_operator_redirect', $params)
. "\" title=\"" . get_operator_name($agent) . "\">" . "\" title=\"" . get_operator_name($agent) . "\">"
@ -588,8 +588,8 @@ function setup_redirect_links(UrlGeneratorInterface $url_generator, $threadid, $
foreach ($groups as $group) { foreach ($groups as $group) {
$params['nextGroup'] = $group['groupid']; $params['nextGroup'] = $group['groupid'];
$status = group_is_online($group) $status = group_is_online($group)
? getlocal("char.redirect.operator.online_suff") ? getlocal("(online)")
: (group_is_away($group) ? getlocal("char.redirect.operator.away_suff") : ""); : (group_is_away($group) ? getlocal("(away)") : "");
$group_list .= "<li><a href=\"" . $url_generator->generate('chat_operator_redirect', $params) $group_list .= "<li><a href=\"" . $url_generator->generate('chat_operator_redirect', $params)
. "\" title=\"" . get_group_name($group) . "\">" . "\" title=\"" . get_group_name($group) . "\">"
. get_group_name($group) . get_group_name($group)
@ -648,7 +648,7 @@ function prepare_menu($operator, $has_right = true)
$result['showMenu'] = true; $result['showMenu'] = true;
$result['operator'] = get_operator_name($operator); $result['operator'] = get_operator_name($operator);
$result['goOnlineLink'] = getlocal( $result['goOnlineLink'] = getlocal(
"menu.goonline", "You are Offline.<br/><a href=\"{0}\">Connect...</a>",
array(MIBEW_WEB_ROOT . "/operator/users?nomenu") array(MIBEW_WEB_ROOT . "/operator/users?nomenu")
); );
if ($has_right) { if ($has_right) {

View File

@ -149,7 +149,7 @@ function setup_pagination($items, $default_items_per_page = 15)
function generate_pagination($style_path, $pagination, $bottom = true) function generate_pagination($style_path, $pagination, $bottom = true)
{ {
$result = getlocal( $result = getlocal(
'tag.pagination.info', 'Page {0} of {1}, {2}-{3} from {4}',
array( array(
$pagination['page'], $pagination['page'],
$pagination['total'], $pagination['total'],
@ -177,7 +177,7 @@ function generate_pagination($style_path, $pagination, $bottom = true)
generate_pagination_image( generate_pagination_image(
$style_path, $style_path,
"prevpage", "prevpage",
getlocal("tag.pagination.previous") getlocal("previous")
) )
) . PAGINATION_SPACING; ) . PAGINATION_SPACING;
} }
@ -200,7 +200,7 @@ function generate_pagination($style_path, $pagination, $bottom = true)
generate_pagination_image( generate_pagination_image(
$style_path, $style_path,
"nextpage", "nextpage",
getlocal("tag.pagination.next") getlocal("next")
) )
); );
} }

File diff suppressed because it is too large Load Diff

View File

@ -10,53 +10,53 @@ typeof f===m?f.apply(a):f))+'" alt=""/>\n </a>\n ')}fu
m="function",h=this.escapeExpression,s=this;c='\n<div id="top2">\n <div id="logo">\n ';if((n=e["if"].call(a,(n=(n=a&&a.page,null==n||!1===n?n:n.company),null==n||!1===n?n:n.chatLogoURL),{hash:{},inverse:s.program(6,function(a,c){var b,f;b="\n ";if((f=e["if"].call(a,(f=a&&a.page,null==f||!1===f?f:f.mibewHost),{hash:{},inverse:s.program(9,t,c),fn:s.program(7,l,c),data:c}))||0===f)b+=f;return b+"\n "},b),fn:s.program(1,function(a,c){var b,f;b="\n ";if((f=e["if"].call(a, m="function",h=this.escapeExpression,s=this;c='\n<div id="top2">\n <div id="logo">\n ';if((n=e["if"].call(a,(n=(n=a&&a.page,null==n||!1===n?n:n.company),null==n||!1===n?n:n.chatLogoURL),{hash:{},inverse:s.program(6,function(a,c){var b,f;b="\n ";if((f=e["if"].call(a,(f=a&&a.page,null==f||!1===f?f:f.mibewHost),{hash:{},inverse:s.program(9,t,c),fn:s.program(7,l,c),data:c}))||0===f)b+=f;return b+"\n "},b),fn:s.program(1,function(a,c){var b,f;b="\n ";if((f=e["if"].call(a,
(f=a&&a.page,null==f||!1===f?f:f.mibewHost),{hash:{},inverse:s.program(4,k,c),fn:s.program(2,g,c),data:c}))||0===f)b+=f;return b+"\n "},b),data:b}))||0===n)c+=n;return c+='\n &nbsp;\n <div id="page-title">'+h((n=(n=a&&a.page,null==n||!1===n?n:n.title),typeof n===m?n.apply(a):n))+'</div>\n <div class="clear">&nbsp;</div>\n </div>\n</div>'});v.chat_avatar=u(function(c,a,e,d,b){this.compilerInfo=[4,">= 1.0.0"];e=this.merge(e,c.helpers);b=b||{};var g=this.escapeExpression; (f=a&&a.page,null==f||!1===f?f:f.mibewHost),{hash:{},inverse:s.program(4,k,c),fn:s.program(2,g,c),data:c}))||0===f)b+=f;return b+"\n "},b),data:b}))||0===n)c+=n;return c+='\n &nbsp;\n <div id="page-title">'+h((n=(n=a&&a.page,null==n||!1===n?n:n.title),typeof n===m?n.apply(a):n))+'</div>\n <div class="clear">&nbsp;</div>\n </div>\n</div>'});v.chat_avatar=u(function(c,a,e,d,b){this.compilerInfo=[4,">= 1.0.0"];e=this.merge(e,c.helpers);b=b||{};var g=this.escapeExpression;
return(c=e["if"].call(a,a&&a.imageLink,{hash:{},inverse:this.program(3,function(a,e){return'<div class="default-avatar"></div>'},b),fn:this.program(1,function(a,c){var b,d;b='<img src="';(d=e.imageLink)?d=d.call(a,{hash:{},data:c}):(d=a&&a.imageLink,d="function"===typeof d?d.call(a,{hash:{},data:c}):d);return b+=g(d)+'" border="0" alt="" />'},b),data:b}))||0===c?c:""});v.chat_controls_close=u(function(c,a,e,d,b){this.compilerInfo=[4,">= 1.0.0"];e=this.merge(e,c.helpers);b=b||{};var g,k;c=e.helperMissing; return(c=e["if"].call(a,a&&a.imageLink,{hash:{},inverse:this.program(3,function(a,e){return'<div class="default-avatar"></div>'},b),fn:this.program(1,function(a,c){var b,d;b='<img src="';(d=e.imageLink)?d=d.call(a,{hash:{},data:c}):(d=a&&a.imageLink,d="function"===typeof d?d.call(a,{hash:{},data:c}):d);return b+=g(d)+'" border="0" alt="" />'},b),data:b}))||0===c?c:""});v.chat_controls_close=u(function(c,a,e,d,b){this.compilerInfo=[4,">= 1.0.0"];e=this.merge(e,c.helpers);b=b||{};var g,k;c=e.helperMissing;
d=this.escapeExpression;return a=""+('<div class="tpl-image" title="'+d((g=e.l10n||a&&a.l10n,k={hash:{},data:b},g?g.call(a,"chat.window.close_title",k):c.call(a,"l10n","chat.window.close_title",k)))+'"></div>')});v.chat_controls_history=u(function(c,a,e,d,b){this.compilerInfo=[4,">= 1.0.0"];e=this.merge(e,c.helpers);b=b||{};var g,k;c=e.helperMissing;d=this.escapeExpression;return a=""+('<div class="tpl-image" title="'+d((g=e.l10n||a&&a.l10n,k={hash:{},data:b},g?g.call(a,"page.analysis.userhistory.title", d=this.escapeExpression;return a=""+('<div class="tpl-image" title="'+d((g=e.l10n||a&&a.l10n,k={hash:{},data:b},g?g.call(a,"Close chat",k):c.call(a,"l10n","Close chat",k)))+'"></div>')});v.chat_controls_history=u(function(c,a,e,d,b){this.compilerInfo=[4,">= 1.0.0"];e=this.merge(e,c.helpers);b=b||{};var g,k;c=e.helperMissing;d=this.escapeExpression;return a=""+('<div class="tpl-image" title="'+d((g=e.l10n||a&&a.l10n,k={hash:{},data:b},g?g.call(a,"Visit history",k):c.call(a,"l10n","Visit history",k)))+
k):c.call(a,"l10n","page.analysis.userhistory.title",k)))+'"></div>')});v.chat_controls_redirect=u(function(c,a,e,d,b){this.compilerInfo=[4,">= 1.0.0"];e=this.merge(e,c.helpers);b=b||{};var g,k=e.helperMissing,l=this.escapeExpression;return(g=e["if"].call(a,(g=a&&a.user,null==g||!1===g?g:g.canPost),{hash:{},inverse:this.noop,fn:this.program(1,function(a,c){var b,d,s;return b=""+('\n<div class="tpl-image" title="'+l((d=e.l10n||a&&a.l10n,s={hash:{},data:c},d?d.call(a,"chat.window.toolbar.redirect_user", '"></div>')});v.chat_controls_redirect=u(function(c,a,e,d,b){this.compilerInfo=[4,">= 1.0.0"];e=this.merge(e,c.helpers);b=b||{};var g,k=e.helperMissing,l=this.escapeExpression;return(g=e["if"].call(a,(g=a&&a.user,null==g||!1===g?g:g.canPost),{hash:{},inverse:this.noop,fn:this.program(1,function(a,c){var b,d,s;return b=""+('\n<div class="tpl-image" title="'+l((d=e.l10n||a&&a.l10n,s={hash:{},data:c},d?d.call(a,"Redirect visitor to another operator",s):k.call(a,"l10n","Redirect visitor to another operator",
s):k.call(a,"l10n","chat.window.toolbar.redirect_user",s)))+'"></div>\n')},b),data:b}))||0===g?g:""});v.chat_controls_refresh=u(function(c,a,e,d,b){this.compilerInfo=[4,">= 1.0.0"];e=this.merge(e,c.helpers);b=b||{};var g,k;c=e.helperMissing;d=this.escapeExpression;return a=""+('<div class="tpl-image" title="'+d((g=e.l10n||a&&a.l10n,k={hash:{},data:b},g?g.call(a,"chat.window.toolbar.refresh",k):c.call(a,"l10n","chat.window.toolbar.refresh",k)))+'"></div>')});v.chat_controls_secure_mode=u(function(c, s)))+'"></div>\n')},b),data:b}))||0===g?g:""});v.chat_controls_refresh=u(function(c,a,e,d,b){this.compilerInfo=[4,">= 1.0.0"];e=this.merge(e,c.helpers);b=b||{};var g,k;c=e.helperMissing;d=this.escapeExpression;return a=""+('<div class="tpl-image" title="'+d((g=e.l10n||a&&a.l10n,k={hash:{},data:b},g?g.call(a,"Refresh",k):c.call(a,"l10n","Refresh",k)))+'"></div>')});v.chat_controls_secure_mode=u(function(c,a,e,d,b){this.compilerInfo=[4,">= 1.0.0"];this.merge(e,c.helpers);return'<div class="tpl-image" title="SSL"></div>'});
a,e,d,b){this.compilerInfo=[4,">= 1.0.0"];this.merge(e,c.helpers);return'<div class="tpl-image" title="SSL"></div>'});v.chat_controls_send_mail=u(function(c,a,e,d,b){this.compilerInfo=[4,">= 1.0.0"];e=this.merge(e,c.helpers);b=b||{};var g,k;c=e.helperMissing;d=this.escapeExpression;return a=""+('<div class="tpl-image" title="'+d((g=e.l10n||a&&a.l10n,k={hash:{},data:b},g?g.call(a,"chat.window.toolbar.mail_history",k):c.call(a,"l10n","chat.window.toolbar.mail_history",k)))+'"></div>')});v.chat_controls_sound= v.chat_controls_send_mail=u(function(c,a,e,d,b){this.compilerInfo=[4,">= 1.0.0"];e=this.merge(e,c.helpers);b=b||{};var g,k;c=e.helperMissing;d=this.escapeExpression;return a=""+('<div class="tpl-image" title="'+d((g=e.l10n||a&&a.l10n,k={hash:{},data:b},g?g.call(a,"Send chat history by e-mail",k):c.call(a,"l10n","Send chat history by e-mail",k)))+'"></div>')});v.chat_controls_sound=u(function(c,a,e,d,b){this.compilerInfo=[4,">= 1.0.0"];e=this.merge(e,c.helpers);b=b||{};var g=e.helperMissing,k=this.escapeExpression;
u(function(c,a,e,d,b){this.compilerInfo=[4,">= 1.0.0"];e=this.merge(e,c.helpers);b=b||{};var g=e.helperMissing,k=this.escapeExpression;return(c=e["if"].call(a,a&&a.enabled,{hash:{},inverse:this.program(3,function(a,c){var b,d,h;return b=""+('\n <div class="tpl-image sound-control-off" title="'+k((d=e.l10n||a&&a.l10n,h={hash:{},data:c},d?d.call(a,"chat.window.toolbar.turn_on_sound",h):g.call(a,"l10n","chat.window.toolbar.turn_on_sound",h)))+'"></div>\n')},b),fn:this.program(1,function(a,c){var b, return(c=e["if"].call(a,a&&a.enabled,{hash:{},inverse:this.program(3,function(a,c){var b,d,h;return b=""+('\n <div class="tpl-image sound-control-off" title="'+k((d=e.l10n||a&&a.l10n,h={hash:{},data:c},d?d.call(a,"Turn on sound",h):g.call(a,"l10n","Turn on sound",h)))+'"></div>\n')},b),fn:this.program(1,function(a,c){var b,d,h;return b=""+('\n <div class="tpl-image sound-control-on" title="'+k((d=e.l10n||a&&a.l10n,h={hash:{},data:c},d?d.call(a,"Turn off sound",h):g.call(a,"l10n","Turn off sound",
d,h;return b=""+('\n <div class="tpl-image sound-control-on" title="'+k((d=e.l10n||a&&a.l10n,h={hash:{},data:c},d?d.call(a,"chat.window.toolbar.turn_off_sound",h):g.call(a,"l10n","chat.window.toolbar.turn_off_sound",h)))+'"></div>\n')},b),data:b}))||0===c?c:""});v.chat_controls_user_name=u(function(c,a,e,d,b){function g(a,c){var b,d,f,h;return b=""+('\n <div class="user-name-control-input-bg"><input id="user-name-control-input" type="text" size="12" value="'+n((d=(d=a&&a.user,null==d||!1=== h)))+'"></div>\n')},b),data:b}))||0===c?c:""});v.chat_controls_user_name=u(function(c,a,e,d,b){function g(a,c){var b,d,f,h;return b=""+('\n <div class="user-name-control-input-bg"><input id="user-name-control-input" type="text" size="12" value="'+n((d=(d=a&&a.user,null==d||!1===d?d:d.name),typeof d===t?d.apply(a):d))+'" class="username" /></div>\n <a href="javascript:void(0)" class="user-name-control-set tpl-image" title="'+n((f=e.l10n||a&&a.l10n,h={hash:{},data:c},f?f.call(a,"Change name",
d?d:d.name),typeof d===t?d.apply(a):d))+'" class="username" /></div>\n <a href="javascript:void(0)" class="user-name-control-set tpl-image" title="'+n((f=e.l10n||a&&a.l10n,h={hash:{},data:c},f?f.call(a,"chat.client.changename",h):m.call(a,"l10n","chat.client.changename",h)))+'"></a>\n ')}function k(a,c){var b,d,f,h;return b=""+('\n <a href="javascript:void(0)" title="'+n((f=e.l10n||a&&a.l10n,h={hash:{},data:c},f?f.call(a,"chat.client.changename",h):m.call(a,"l10n","chat.client.changename", h):m.call(a,"l10n","Change name",h)))+'"></a>\n ')}function k(a,c){var b,d,f,h;return b=""+('\n <a href="javascript:void(0)" title="'+n((f=e.l10n||a&&a.l10n,h={hash:{},data:c},f?f.call(a,"Change name",h):m.call(a,"l10n","Change name",h)))+'">'+n((d=(d=a&&a.user,null==d||!1===d?d:d.name),typeof d===t?d.apply(a):d))+'</a>\n <a class="user-name-control-change tpl-image" title="'+n((f=e.l10n||a&&a.l10n,h={hash:{},data:c},f?f.call(a,"Change name",h):m.call(a,"l10n","Change name",h)))+
h)))+'">'+n((d=(d=a&&a.user,null==d||!1===d?d:d.name),typeof d===t?d.apply(a):d))+'</a>\n <a class="user-name-control-change tpl-image" title="'+n((f=e.l10n||a&&a.l10n,h={hash:{},data:c},f?f.call(a,"chat.client.changename",h):m.call(a,"l10n","chat.client.changename",h)))+'"></a>\n ')}this.compilerInfo=[4,">= 1.0.0"];e=this.merge(e,c.helpers);b=b||{};var l,t="function",n=this.escapeExpression,m=e.helperMissing,h=this;return(l=e["if"].call(a,(l=a&&a.user,null==l||!1===l?l:l.canChangeName), '"></a>\n ')}this.compilerInfo=[4,">= 1.0.0"];e=this.merge(e,c.helpers);b=b||{};var l,t="function",n=this.escapeExpression,m=e.helperMissing,h=this;return(l=e["if"].call(a,(l=a&&a.user,null==l||!1===l?l:l.canChangeName),{hash:{},inverse:h.program(6,function(a,c){var b,d,f,h;return b=""+("\n"+n((f=e.l10n||a&&a.l10n,h={hash:{},data:c},f?f.call(a,"You are",h):m.call(a,"l10n","You are",h)))+"&nbsp;"+n((d=(d=a&&a.user,null==d||!1===d?d:d.name),typeof d===t?d.apply(a):d))+"\n")},b),fn:h.program(1,function(a,
{hash:{},inverse:h.program(6,function(a,c){var b,d,f,h;return b=""+("\n"+n((f=e.l10n||a&&a.l10n,h={hash:{},data:c},f?f.call(a,"chat.client.name",h):m.call(a,"l10n","chat.client.name",h)))+"&nbsp;"+n((d=(d=a&&a.user,null==d||!1===d?d:d.name),typeof d===t?d.apply(a):d))+"\n")},b),fn:h.program(1,function(a,c){var d,b,f;d=""+('\n <span class="user-name-control-prefix">'+n((b=e.l10n||a&&a.l10n,f={hash:{},data:c},b?b.call(a,"chat.client.name",f):m.call(a,"l10n","chat.client.name",f)))+"</span>\n "); c){var d,b,f;d=""+('\n <span class="user-name-control-prefix">'+n((b=e.l10n||a&&a.l10n,f={hash:{},data:c},b?b.call(a,"You are",f):m.call(a,"l10n","You are",f)))+"</span>\n ");if((b=e["if"].call(a,a&&a.nameInput,{hash:{},inverse:h.program(4,k,c),fn:h.program(2,g,c),data:c}))||0===b)d+=b;return d+"\n"},b),data:b}))||0===l?l:""});v.chat_layout=u(function(c,a,e,d,b){this.compilerInfo=[4,">= 1.0.0"];e=this.merge(e,c.helpers);d=this.merge(d,c.partials);b=b||{};var g,k,l=e.helperMissing,t=this.escapeExpression;
if((b=e["if"].call(a,a&&a.nameInput,{hash:{},inverse:h.program(4,k,c),fn:h.program(2,g,c),data:c}))||0===b)d+=b;return d+"\n"},b),data:b}))||0===l?l:""});v.chat_layout=u(function(c,a,e,d,b){this.compilerInfo=[4,">= 1.0.0"];e=this.merge(e,c.helpers);d=this.merge(d,c.partials);b=b||{};var g,k,l=e.helperMissing,t=this.escapeExpression;c="\n";if((d=this.invokePartial(d._logo,"_logo",a,e,d,b))||0===d)c+=d;c+='\n\n\n<div id="chat-header">\n <div class="bgc"><div class="bgl"><div class="bgr">\n \n <div id="controls-region"></div>\n </div></div></div>\n</div>\n\n\n<div id="chat">\n <div class="bgl"><div class="bgr"><div class="sdwbgc"><div class="sdwbgl"><div class="sdwbgr">\n '; c="\n";if((d=this.invokePartial(d._logo,"_logo",a,e,d,b))||0===d)c+=d;c+='\n\n\n<div id="chat-header">\n <div class="bgc"><div class="bgl"><div class="bgr">\n \n <div id="controls-region"></div>\n </div></div></div>\n</div>\n\n\n<div id="chat">\n <div class="bgl"><div class="bgr"><div class="sdwbgc"><div class="sdwbgl"><div class="sdwbgr">\n ';if((d=e.unless.call(a,(d=a&&a.user,null==d||!1===d?d:d.isAgent),{hash:{},inverse:this.noop,fn:this.program(1,function(a,c){return'\n <div id="avatar-region"></div>\n '},
if((d=e.unless.call(a,(d=a&&a.user,null==d||!1===d?d:d.isAgent),{hash:{},inverse:this.noop,fn:this.program(1,function(a,c){return'\n <div id="avatar-region"></div>\n '},b),data:b}))||0===d)c+=d;return c+='\n \n <div id="messages-region"></div>\n \n <div id="status-region"></div>\n </div></div></div></div></div>\n</div>\n\n\n<div id="message-form-region"></div>\n\n\n<div id="footer">'+t((g=e.l10n||a&&a.l10n,k={hash:{},data:b},g?g.call(a,"chat.window.poweredby", b),data:b}))||0===d)c+=d;return c+='\n \n <div id="messages-region"></div>\n \n <div id="status-region"></div>\n </div></div></div></div></div>\n</div>\n\n\n<div id="message-form-region"></div>\n\n\n<div id="footer">'+t((g=e.l10n||a&&a.l10n,k={hash:{},data:b},g?g.call(a,"Powered by:",k):l.call(a,"l10n","Powered by:",k)))+' <a id="poweredByLink" href="http://mibew.org" title="Mibew Community" target="_blank">mibew.org</a></div>'});v.chat_message=u(function(c,a,e,d,b){this.compilerInfo=
k):l.call(a,"l10n","chat.window.poweredby",k)))+' <a id="poweredByLink" href="http://mibew.org" title="Mibew Community" target="_blank">mibew.org</a></div>'});v.chat_message=u(function(c,a,e,d,b){this.compilerInfo=[4,">= 1.0.0"];e=this.merge(e,c.helpers);b=b||{};var g,k,l=this.escapeExpression,t=e.helperMissing;c=""+("<span>"+l((g=e.formatTime||a&&a.formatTime,k={hash:{},data:b},g?g.call(a,a&&a.created,k):t.call(a,"formatTime",a&&a.created,k)))+"</span> \n");if((g=e["if"].call(a,a&&a.name,{hash:{}, [4,">= 1.0.0"];e=this.merge(e,c.helpers);b=b||{};var g,k,l=this.escapeExpression,t=e.helperMissing;c=""+("<span>"+l((g=e.formatTime||a&&a.formatTime,k={hash:{},data:b},g?g.call(a,a&&a.created,k):t.call(a,"formatTime",a&&a.created,k)))+"</span> \n");if((g=e["if"].call(a,a&&a.name,{hash:{},inverse:this.noop,fn:this.program(1,function(a,c){var b,d;b="<span class='n";(d=e.kindName)?d=d.call(a,{hash:{},data:c}):(d=a&&a.kindName,d="function"===typeof d?d.call(a,{hash:{},data:c}):d);b+=l(d)+"'>";(d=e.name)?
inverse:this.noop,fn:this.program(1,function(a,c){var b,d;b="<span class='n";(d=e.kindName)?d=d.call(a,{hash:{},data:c}):(d=a&&a.kindName,d="function"===typeof d?d.call(a,{hash:{},data:c}):d);b+=l(d)+"'>";(d=e.name)?d=d.call(a,{hash:{},data:c}):(d=a&&a.name,d="function"===typeof d?d.call(a,{hash:{},data:c}):d);return b+=l(d)+"</span>: "},b),data:b}))||0===g)c+=g;c+="\n<span class='m";(g=e.kindName)?g=g.call(a,{hash:{},data:b}):(g=a&&a.kindName,g="function"===typeof g?g.call(a,{hash:{},data:b}):g); d=d.call(a,{hash:{},data:c}):(d=a&&a.name,d="function"===typeof d?d.call(a,{hash:{},data:c}):d);return b+=l(d)+"</span>: "},b),data:b}))||0===g)c+=g;c+="\n<span class='m";(g=e.kindName)?g=g.call(a,{hash:{},data:b}):(g=a&&a.kindName,g="function"===typeof g?g.call(a,{hash:{},data:b}):g);c+=l(g)+"'>";if((g=e["if"].call(a,a&&a.allowFormatting,{hash:{},inverse:this.program(5,function(a,c){var d,b;return l((d=e.apply||a&&a.apply,b={hash:{},data:c},d?d.call(a,a&&a.message,"urlReplace, nl2br",b):t.call(a,
c+=l(g)+"'>";if((g=e["if"].call(a,a&&a.allowFormatting,{hash:{},inverse:this.program(5,function(a,c){var d,b;return l((d=e.apply||a&&a.apply,b={hash:{},data:c},d?d.call(a,a&&a.message,"urlReplace, nl2br",b):t.call(a,"apply",a&&a.message,"urlReplace, nl2br",b)))},b),fn:this.program(3,function(a,c){var d,b;return l((d=e.apply||a&&a.apply,b={hash:{},data:c},d?d.call(a,a&&a.message,"urlReplace, nl2br, allowTags",b):t.call(a,"apply",a&&a.message,"urlReplace, nl2br, allowTags",b)))},b),data:b}))||0===g)c+= "apply",a&&a.message,"urlReplace, nl2br",b)))},b),fn:this.program(3,function(a,c){var d,b;return l((d=e.apply||a&&a.apply,b={hash:{},data:c},d?d.call(a,a&&a.message,"urlReplace, nl2br, allowTags",b):t.call(a,"apply",a&&a.message,"urlReplace, nl2br, allowTags",b)))},b),data:b}))||0===g)c+=g;return c+"</span><br/>"});v.chat_message_form=u(function(c,a,e,d,b){function g(a,c){var d,b,f;d=""+('\n <select id="predefined" size="1" class="answer">\n <option>'+n((b=e.l10n||
g;return c+"</span><br/>"});v.chat_message_form=u(function(c,a,e,d,b){function g(a,c){var d,b,f;d=""+('\n <select id="predefined" size="1" class="answer">\n <option>'+n((b=e.l10n||a&&a.l10n,f={hash:{},data:c},b?b.call(a,"chat.window.predefined.select_answer",f):m.call(a,"l10n","chat.window.predefined.select_answer",f)))+"</option>\n ");if((b=e.each.call(a,a&&a.predefinedAnswers,{hash:{},inverse:h.noop,fn:h.program(5,k,c),data:c}))||0===b)d+=b;return d+ a&&a.l10n,f={hash:{},data:c},b?b.call(a,"Select answer...",f):m.call(a,"l10n","Select answer...",f)))+"</option>\n ");if((b=e.each.call(a,a&&a.predefinedAnswers,{hash:{},inverse:h.noop,fn:h.program(5,k,c),data:c}))||0===b)d+=b;return d+"\n </select>\n "}function k(a,c){var d,b;return d=""+("\n <option>"+n((b=a&&a["short"],typeof b===t?b.apply(a):b))+"</option>\n ")}this.compilerInfo=[4,">= 1.0.0"];e=this.merge(e,c.helpers);
"\n </select>\n "}function k(a,c){var d,b;return d=""+("\n <option>"+n((b=a&&a["short"],typeof b===t?b.apply(a):b))+"</option>\n ")}this.compilerInfo=[4,">= 1.0.0"];e=this.merge(e,c.helpers);b=b||{};var l,t="function",n=this.escapeExpression,m=e.helperMissing,h=this;c='<div id="message">\n';if((l=e["if"].call(a,(l=a&&a.user,null==l||!1===l?l:l.canPost),{hash:{},inverse:h.noop,fn:h.program(1,function(a,c){return'\n <div class="bgc"><div class="bgl"><div class="bgr">\n <textarea id="message-input" class="message" tabindex="0" rows="4" cols="10"></textarea>\n </div></div></div>\n'}, b=b||{};var l,t="function",n=this.escapeExpression,m=e.helperMissing,h=this;c='<div id="message">\n';if((l=e["if"].call(a,(l=a&&a.user,null==l||!1===l?l:l.canPost),{hash:{},inverse:h.noop,fn:h.program(1,function(a,c){return'\n <div class="bgc"><div class="bgl"><div class="bgr">\n <textarea id="message-input" class="message" tabindex="0" rows="4" cols="10"></textarea>\n </div></div></div>\n'},b),data:b}))||0===l)c+=l;c+='\n</div>\n\n<div id="send">\n';if((l=e["if"].call(a,(l=a&&a.user,
b),data:b}))||0===l)c+=l;c+='\n</div>\n\n<div id="send">\n';if((l=e["if"].call(a,(l=a&&a.user,null==l||!1===l?l:l.canPost),{hash:{},inverse:h.noop,fn:h.program(3,function(a,c){var d,b,f,w;d='\n <div id="postmessage">\n <div id="predefined-wrapper">\n ';if((b=e["if"].call(a,(b=a&&a.user,null==b||!1===b?b:b.isAgent),{hash:{},inverse:h.noop,fn:h.program(4,g,c),data:c}))||0===b)d+=b;return d+='\n </div>\n <a href="javascript:void(0)" id="send-message" title="'+n((f= null==l||!1===l?l:l.canPost),{hash:{},inverse:h.noop,fn:h.program(3,function(a,c){var d,b,f,w;d='\n <div id="postmessage">\n <div id="predefined-wrapper">\n ';if((b=e["if"].call(a,(b=a&&a.user,null==b||!1===b?b:b.isAgent),{hash:{},inverse:h.noop,fn:h.program(4,g,c),data:c}))||0===b)d+=b;return d+='\n </div>\n <a href="javascript:void(0)" id="send-message" title="'+n((f=e.l10n||a&&a.l10n,w={hash:{},data:c},f?f.call(a,"Send message",w):m.call(a,"l10n","Send message",
e.l10n||a&&a.l10n,w={hash:{},data:c},f?f.call(a,"chat.window.send_message",w):m.call(a,"l10n","chat.window.send_message",w)))+'">'+n((f=e.l10n||a&&a.l10n,w={hash:{},data:c},f?f.call(a,"chat.window.send_message_short_and_shortcut",w):m.call(a,"l10n","chat.window.send_message_short_and_shortcut",w)))+"</a>\n </div>\n"},b),data:b}))||0===l)c+=l;return c+'\n</div>\n<div class="clear"></div>'});v.chat_status_base=u(function(c,a,e,d,b){this.compilerInfo=[4,">= 1.0.0"];e=this.merge(e,c.helpers);b=b|| w)))+'">'+n((f=e.l10n||a&&a.l10n,w={hash:{},data:c},f?f.call(a,"chat.window.send_message_short_and_shortcut",w):m.call(a,"l10n","chat.window.send_message_short_and_shortcut",w)))+"</a>\n </div>\n"},b),data:b}))||0===l)c+=l;return c+'\n</div>\n<div class="clear"></div>'});v.chat_status_base=u(function(c,a,e,d,b){this.compilerInfo=[4,">= 1.0.0"];e=this.merge(e,c.helpers);b=b||{};c=this.escapeExpression;(e=e.title)?a=e.call(a,{hash:{},data:b}):(e=a&&a.title,a="function"===typeof e?e.call(a,{hash:{},
{};c=this.escapeExpression;(e=e.title)?a=e.call(a,{hash:{},data:b}):(e=a&&a.title,a="function"===typeof e?e.call(a,{hash:{},data:b}):e);return c(a)});v.chat_status_message=u(function(c,a,e,d,b){this.compilerInfo=[4,">= 1.0.0"];e=this.merge(e,c.helpers);b=b||{};c=this.escapeExpression;(e=e.message)?a=e.call(a,{hash:{},data:b}):(e=a&&a.message,a="function"===typeof e?e.call(a,{hash:{},data:b}):e);return c(a)});v.chat_status_typing=u(function(c,a,e,d,b){this.compilerInfo=[4,">= 1.0.0"];e=this.merge(e, data:b}):e);return c(a)});v.chat_status_message=u(function(c,a,e,d,b){this.compilerInfo=[4,">= 1.0.0"];e=this.merge(e,c.helpers);b=b||{};c=this.escapeExpression;(e=e.message)?a=e.call(a,{hash:{},data:b}):(e=a&&a.message,a="function"===typeof e?e.call(a,{hash:{},data:b}):e);return c(a)});v.chat_status_typing=u(function(c,a,e,d,b){this.compilerInfo=[4,">= 1.0.0"];e=this.merge(e,c.helpers);b=b||{};var g,k;c=e.helperMissing;d=this.escapeExpression;return d((g=e.l10n||a&&a.l10n,k={hash:{},data:b},g?g.call(a,
c.helpers);b=b||{};var g,k;c=e.helperMissing;d=this.escapeExpression;return d((g=e.l10n||a&&a.l10n,k={hash:{},data:b},g?g.call(a,"typing.remote",k):c.call(a,"l10n","typing.remote",k)))});v.default_control=u(function(c,a,e,d,b){this.compilerInfo=[4,">= 1.0.0"];e=this.merge(e,c.helpers);b=b||{};d=this.escapeExpression;c="<strong>";(e=e.title)?a=e.call(a,{hash:{},data:b}):(e=a&&a.title,a="function"===typeof e?e.call(a,{hash:{},data:b}):e);return c+=d(a)+"</strong>"});v.invitation_layout=u(function(c, "Remote user is typing...",k):c.call(a,"l10n","Remote user is typing...",k)))});v.default_control=u(function(c,a,e,d,b){this.compilerInfo=[4,">= 1.0.0"];e=this.merge(e,c.helpers);b=b||{};d=this.escapeExpression;c="<strong>";(e=e.title)?a=e.call(a,{hash:{},data:b}):(e=a&&a.title,a="function"===typeof e?e.call(a,{hash:{},data:b}):e);return c+=d(a)+"</strong>"});v.invitation_layout=u(function(c,a,e,d,b){this.compilerInfo=[4,">= 1.0.0"];this.merge(e,c.helpers);return'<div id="invitation-messages-region"></div>'});
a,e,d,b){this.compilerInfo=[4,">= 1.0.0"];this.merge(e,c.helpers);return'<div id="invitation-messages-region"></div>'});v.leave_message_description=u(function(c,a,e,d,b){this.compilerInfo=[4,">= 1.0.0"];e=this.merge(e,c.helpers);b=b||{};var g,k,l;c=e.helperMissing;d=this.escapeExpression;return a=""+('<div class="buttons">\n <a href="javascript:window.close();" title="'+d((k=e.l10n||a&&a.l10n,l={hash:{},data:b},k?k.call(a,"leavemessage.close",l):c.call(a,"l10n","leavemessage.close",l)))+'">\n <img class="tpl-image iclosewin" src="'+ v.leave_message_description=u(function(c,a,e,d,b){this.compilerInfo=[4,">= 1.0.0"];e=this.merge(e,c.helpers);b=b||{};var g,k,l;c=e.helperMissing;d=this.escapeExpression;return a=""+('<div class="buttons">\n <a href="javascript:window.close();" title="'+d((k=e.l10n||a&&a.l10n,l={hash:{},data:b},k?k.call(a,"Close",l):c.call(a,"l10n","Close",l)))+'">\n <img class="tpl-image iclosewin" src="'+d((g=(g=a&&a.page,null==g||!1===g?g:g.tplRoot),"function"===typeof g?g.apply(a):g))+'/images/free.gif" alt="'+
d((g=(g=a&&a.page,null==g||!1===g?g:g.tplRoot),"function"===typeof g?g.apply(a):g))+'/images/free.gif" alt="'+d((k=e.l10n||a&&a.l10n,l={hash:{},data:b},k?k.call(a,"leavemessage.close",l):c.call(a,"l10n","leavemessage.close",l)))+'" />\n </a>\n</div>\n<div class="messagetxt">'+d((k=e.l10n||a&&a.l10n,l={hash:{},data:b},k?k.call(a,"leavemessage.descr",l):c.call(a,"l10n","leavemessage.descr",l)))+"</div>")});v.leave_message_form=u(function(c,a,e,d,b){function g(a,c){var d,b;d='<input type="hidden" name="group" value="'; d((k=e.l10n||a&&a.l10n,l={hash:{},data:b},k?k.call(a,"Close",l):c.call(a,"l10n","Close",l)))+'" />\n </a>\n</div>\n<div class="messagetxt">'+d((k=e.l10n||a&&a.l10n,l={hash:{},data:b},k?k.call(a,"Sorry. None of the support team is available at the moment. <br/>Please leave a message and someone will get back to you shortly.",l):c.call(a,"l10n","Sorry. None of the support team is available at the moment. <br/>Please leave a message and someone will get back to you shortly.",l)))+"</div>")});v.leave_message_form=
(b=e.groupId)?b=b.call(a,{hash:{},data:c}):(b=a&&a.groupId,b=typeof b===s?b.call(a,{hash:{},data:c}):b);return d+=r(b)+'"/>'}function k(a,c){var b,d;b=""+('\n <option value="'+r((d=a&&a.id,typeof d===s?d.apply(a):d))+'" ');if((d=e["if"].call(a,a&&a.selected,{hash:{},inverse:p.noop,fn:p.program(6,l,c),data:c}))||0===d)b+=d;return b+=">"+r((d=a&&a.name,typeof d===s?d.apply(a):d))+"</option>\n "}function l(a,d){return'selected="selected"'}function t(a,d){var c; u(function(c,a,e,d,b){function g(a,c){var d,b;d='<input type="hidden" name="group" value="';(b=e.groupId)?b=b.call(a,{hash:{},data:c}):(b=a&&a.groupId,b=typeof b===s?b.call(a,{hash:{},data:c}):b);return d+=r(b)+'"/>'}function k(a,c){var b,d;b=""+('\n <option value="'+r((d=a&&a.id,typeof d===s?d.apply(a):d))+'" ');if((d=e["if"].call(a,a&&a.selected,{hash:{},inverse:p.noop,fn:p.program(6,l,c),data:c}))||0===d)b+=d;return b+=">"+r((d=a&&a.name,typeof d===s?d.apply(a):d))+"</option>\n "}
return(c=e["if"].call(a,a&&a.selected,{hash:{},inverse:p.noop,fn:p.program(9,n,d),data:d}))||0===c?c:""}function n(a,d){var c;return r((c=a&&a.description,typeof c===s?c.apply(a):c))}this.compilerInfo=[4,">= 1.0.0"];e=this.merge(e,c.helpers);b=b||{};var m,h,s="function",r=this.escapeExpression,p=this,q=e.helperMissing;c=""+('<form name="leaveMessageForm" method="post" action="">\n <input type="hidden" name="style" value="'+r((m=(m=a&&a.page,null==m||!1===m?m:m.style),typeof m===s?m.apply(a):m))+ function l(a,d){return'selected="selected"'}function t(a,d){var c;return(c=e["if"].call(a,a&&a.selected,{hash:{},inverse:p.noop,fn:p.program(9,n,d),data:d}))||0===c?c:""}function n(a,d){var c;return r((c=a&&a.description,typeof c===s?c.apply(a):c))}this.compilerInfo=[4,">= 1.0.0"];e=this.merge(e,c.helpers);b=b||{};var m,h,s="function",r=this.escapeExpression,p=this,q=e.helperMissing;c=""+('<form name="leaveMessageForm" method="post" action="">\n <input type="hidden" name="style" value="'+r((m=
'"/>\n <input type="hidden" name="info" value="');(d=e.info)?m=d.call(a,{hash:{},data:b}):(d=a&&a.info,m=typeof d===s?d.call(a,{hash:{},data:b}):d);c+=r(m)+'"/>\n <input type="hidden" name="referrer" value="';(d=e.referrer)?m=d.call(a,{hash:{},data:b}):(d=a&&a.referrer,m=typeof d===s?d.call(a,{hash:{},data:b}):d);c+=r(m)+'"/>\n ';if((m=e.unless.call(a,a&&a.groups,{hash:{},inverse:p.noop,fn:p.program(1,function(a,c){var d;return(d=e["if"].call(a,a&&a.groupId,{hash:{},inverse:p.noop,fn:p.program(2, (m=a&&a.page,null==m||!1===m?m:m.style),typeof m===s?m.apply(a):m))+'"/>\n <input type="hidden" name="info" value="');(d=e.info)?m=d.call(a,{hash:{},data:b}):(d=a&&a.info,m=typeof d===s?d.call(a,{hash:{},data:b}):d);c+=r(m)+'"/>\n <input type="hidden" name="referrer" value="';(d=e.referrer)?m=d.call(a,{hash:{},data:b}):(d=a&&a.referrer,m=typeof d===s?d.call(a,{hash:{},data:b}):d);c+=r(m)+'"/>\n ';if((m=e.unless.call(a,a&&a.groups,{hash:{},inverse:p.noop,fn:p.program(1,function(a,c){var d;
g,c),data:c}))||0===d?d:""},b),data:b}))||0===m)c+=m;c+='\n\n <div class="errors"></div>\n\n <table cellspacing="1" cellpadding="5" border="0" class="form">\n <tr>\n <td><strong>'+r((d=e.l10n||a&&a.l10n,h={hash:{},data:b},d?d.call(a,"form.field.email",h):q.call(a,"l10n","form.field.email",h)))+':</strong></td>\n <td><input type="text" name="email" size="50" value="';(d=e.email)?m=d.call(a,{hash:{},data:b}):(d=a&&a.email,m=typeof d===s?d.call(a,{hash:{},data:b}): return(d=e["if"].call(a,a&&a.groupId,{hash:{},inverse:p.noop,fn:p.program(2,g,c),data:c}))||0===d?d:""},b),data:b}))||0===m)c+=m;c+='\n\n <div class="errors"></div>\n\n <table cellspacing="1" cellpadding="5" border="0" class="form">\n <tr>\n <td><strong>'+r((d=e.l10n||a&&a.l10n,h={hash:{},data:b},d?d.call(a,"Your email",h):q.call(a,"l10n","Your email",h)))+':</strong></td>\n <td><input type="text" name="email" size="50" value="';(d=e.email)?m=d.call(a,{hash:{},data:b}):
d);c+=r(m)+'" class="username"/></td>\n </tr>\n <tr>\n <td><strong>'+r((d=e.l10n||a&&a.l10n,h={hash:{},data:b},d?d.call(a,"form.field.name",h):q.call(a,"l10n","form.field.name",h)))+':</strong></td>\n <td><input type="text" name="name" size="50" value="';(d=e.name)?m=d.call(a,{hash:{},data:b}):(d=a&&a.name,m=typeof d===s?d.call(a,{hash:{},data:b}):d);c+=r(m)+'" class="username"/></td>\n </tr>\n ';if((m=e["if"].call(a,a&&a.groups,{hash:{},inverse:p.noop, (d=a&&a.email,m=typeof d===s?d.call(a,{hash:{},data:b}):d);c+=r(m)+'" class="username"/></td>\n </tr>\n <tr>\n <td><strong>'+r((d=e.l10n||a&&a.l10n,h={hash:{},data:b},d?d.call(a,"Your name",h):q.call(a,"l10n","Your name",h)))+':</strong></td>\n <td><input type="text" name="name" size="50" value="';(d=e.name)?m=d.call(a,{hash:{},data:b}):(d=a&&a.name,m=typeof d===s?d.call(a,{hash:{},data:b}):d);c+=r(m)+'" class="username"/></td>\n </tr>\n ';if((m=e["if"].call(a,
fn:p.program(4,function(a,d){var c,b,h,g;c=""+('\n <tr>\n <td class="text"><strong>'+r((h=e.l10n||a&&a.l10n,g={hash:{},data:d},h?h.call(a,"form.field.department",g):q.call(a,"l10n","form.field.department",g)))+'</strong></td>\n <td>\n <select name="group" style="min-width:200px;">\n ');if((b=e.each.call(a,a&&a.groups,{hash:{},inverse:p.noop,fn:p.program(5,k,d),data:d}))||0===b)c+=b;c+='\n </select>\n </td>\n </tr>\n <tr>\n <td class="text"><strong>'+ a&&a.groups,{hash:{},inverse:p.noop,fn:p.program(4,function(a,d){var c,b,h,g;c=""+('\n <tr>\n <td class="text"><strong>'+r((h=e.l10n||a&&a.l10n,g={hash:{},data:d},h?h.call(a,"Choose Department:",g):q.call(a,"l10n","Choose Department:",g)))+'</strong></td>\n <td>\n <select name="group" style="min-width:200px;">\n ');if((b=e.each.call(a,a&&a.groups,{hash:{},inverse:p.noop,fn:p.program(5,k,d),data:d}))||0===b)c+=b;c+='\n </select>\n </td>\n </tr>\n <tr>\n <td class="text"><strong>'+
r((h=e.l10n||a&&a.l10n,g={hash:{},data:d},h?h.call(a,"form.field.department.description",g):q.call(a,"l10n","form.field.department.description",g)))+'</strong></td>\n <td class="text" id="groupDescription">\n ';if((b=e.each.call(a,a&&a.groups,{hash:{},inverse:p.noop,fn:p.program(8,t,d),data:d}))||0===b)c+=b;return c+"\n </td>\n </tr>\n "},b),data:b}))||0===m)c+=m;c+="\n <tr>\n <td><strong>"+r((d=e.l10n||a&&a.l10n,h={hash:{},data:b}, r((h=e.l10n||a&&a.l10n,g={hash:{},data:d},h?h.call(a,"Department description:",g):q.call(a,"l10n","Department description:",g)))+'</strong></td>\n <td class="text" id="groupDescription">\n ';if((b=e.each.call(a,a&&a.groups,{hash:{},inverse:p.noop,fn:p.program(8,t,d),data:d}))||0===b)c+=b;return c+"\n </td>\n </tr>\n "},b),data:b}))||0===m)c+=m;c+="\n <tr>\n <td><strong>"+r((d=e.l10n||a&&a.l10n,h={hash:{},data:b},d?d.call(a,"Message",
d?d.call(a,"form.field.message",h):q.call(a,"l10n","form.field.message",h)))+':</strong></td>\n <td valign="top">\n <textarea name="message" tabindex="0" cols="40" rows="5">';(d=e.message)?m=d.call(a,{hash:{},data:b}):(d=a&&a.message,m=typeof d===s?d.call(a,{hash:{},data:b}):d);c+=r(m)+"</textarea>\n </td>\n </tr>\n ";if((m=e["if"].call(a,a&&a.showCaptcha,{hash:{},inverse:p.noop,fn:p.program(11,function(a,c){return'\n <tr>\n <td><img id="captcha-img" src="captcha"/></td>\n <td><input type="text" name="captcha" size="50" maxlength="15" value="" class="username"/></td>\n </tr>\n '}, h):q.call(a,"l10n","Message",h)))+':</strong></td>\n <td valign="top">\n <textarea name="message" tabindex="0" cols="40" rows="5">';(d=e.message)?m=d.call(a,{hash:{},data:b}):(d=a&&a.message,m=typeof d===s?d.call(a,{hash:{},data:b}):d);c+=r(m)+"</textarea>\n </td>\n </tr>\n ";if((m=e["if"].call(a,a&&a.showCaptcha,{hash:{},inverse:p.noop,fn:p.program(11,function(a,c){return'\n <tr>\n <td><img id="captcha-img" src="captcha"/></td>\n <td><input type="text" name="captcha" size="50" maxlength="15" value="" class="username"/></td>\n </tr>\n '},
b),data:b}))||0===m)c+=m;return c+='\n </table>\n <a href="javascript:void(0);" class="but" id="send-message">'+r((d=e.l10n||a&&a.l10n,h={hash:{},data:b},d?d.call(a,"mailthread.perform",h):q.call(a,"l10n","mailthread.perform",h)))+'</a>\n <div class="clear">&nbsp;</div>\n</form>\n<div id="ajax-loader"><img src="'+r((m=(m=a&&a.page,null==m||!1===m?m:m.tplRoot),typeof m===s?m.apply(a):m))+'/images/ajax-loader.gif" alt="Loading..." /></div>'});v.leave_message_layout=u(function(c,a,e,d,b){this.compilerInfo= b),data:b}))||0===m)c+=m;return c+='\n </table>\n <a href="javascript:void(0);" class="but" id="send-message">'+r((d=e.l10n||a&&a.l10n,h={hash:{},data:b},d?d.call(a,"Send",h):q.call(a,"l10n","Send",h)))+'</a>\n <div class="clear">&nbsp;</div>\n</form>\n<div id="ajax-loader"><img src="'+r((m=(m=a&&a.page,null==m||!1===m?m:m.tplRoot),typeof m===s?m.apply(a):m))+'/images/ajax-loader.gif" alt="Loading..." /></div>'});v.leave_message_layout=u(function(c,a,e,d,b){this.compilerInfo=[4,">= 1.0.0"];
[4,">= 1.0.0"];e=this.merge(e,c.helpers);d=this.merge(d,c.partials);b=b||{};c="\n";if((a=this.invokePartial(d._logo,"_logo",a,e,d,b))||0===a)c+=a;return c+'\n\n\n<div id="headers">\n <div class="wndb"><div class="wndl"><div class="wndr"><div class="wndt"><div class="wndtl"><div class="wndtr"><div class="wndbl"><div class="wndbr" id="description-region">\n </div></div></div></div></div></div></div></div>\n</div>\n\n\n<div id="content-wrapper"></div>'});v.leave_message_sent_description=u(function(c, e=this.merge(e,c.helpers);d=this.merge(d,c.partials);b=b||{};c="\n";if((a=this.invokePartial(d._logo,"_logo",a,e,d,b))||0===a)c+=a;return c+'\n\n\n<div id="headers">\n <div class="wndb"><div class="wndl"><div class="wndr"><div class="wndt"><div class="wndtl"><div class="wndtr"><div class="wndbl"><div class="wndbr" id="description-region">\n </div></div></div></div></div></div></div></div>\n</div>\n\n\n<div id="content-wrapper"></div>'});v.leave_message_sent_description=u(function(c,a,e,d,b){this.compilerInfo=
a,e,d,b){this.compilerInfo=[4,">= 1.0.0"];e=this.merge(e,c.helpers);b=b||{};var g,k,l;c=e.helperMissing;d=this.escapeExpression;return a=""+('<div class="buttons">\n <a href="javascript:window.close();" title="'+d((k=e.l10n||a&&a.l10n,l={hash:{},data:b},k?k.call(a,"chat.mailthread.sent.close",l):c.call(a,"l10n","chat.mailthread.sent.close",l)))+'">\n <img class="tpl-image iclosewin" src="'+d((g=(g=a&&a.page,null==g||!1===g?g:g.tplRoot),"function"===typeof g?g.apply(a):g))+'/images/free.gif" alt="'+ [4,">= 1.0.0"];e=this.merge(e,c.helpers);b=b||{};var g,k,l;c=e.helperMissing;d=this.escapeExpression;return a=""+('<div class="buttons">\n <a href="javascript:window.close();" title="'+d((k=e.l10n||a&&a.l10n,l={hash:{},data:b},k?k.call(a,"Close...",l):c.call(a,"l10n","Close...",l)))+'">\n <img class="tpl-image iclosewin" src="'+d((g=(g=a&&a.page,null==g||!1===g?g:g.tplRoot),"function"===typeof g?g.apply(a):g))+'/images/free.gif" alt="'+d((k=e.l10n||a&&a.l10n,l={hash:{},data:b},k?
d((k=e.l10n||a&&a.l10n,l={hash:{},data:b},k?k.call(a,"chat.mailthread.sent.close",l):c.call(a,"l10n","chat.mailthread.sent.close",l)))+'" />\n </a>\n</div>\n<div class="messagetxt">'+d((k=e.l10n||a&&a.l10n,l={hash:{},data:b},k?k.call(a,"leavemessage.sent.message",l):c.call(a,"l10n","leavemessage.sent.message",l)))+"</div>")});v.message=u(function(c,a,e,d,b){this.compilerInfo=[4,">= 1.0.0"];e=this.merge(e,c.helpers);b=b||{};var g,k,l=this.escapeExpression,t=e.helperMissing;c=""+("<span>"+l((g= k.call(a,"Close...",l):c.call(a,"l10n","Close...",l)))+'" />\n </a>\n</div>\n<div class="messagetxt">'+d((k=e.l10n||a&&a.l10n,l={hash:{},data:b},k?k.call(a,"Thank you for your message. We'll answer your query by email as soon as possible.",l):c.call(a,"l10n","Thank you for your message. We'll answer your query by email as soon as possible.",l)))+"</div>")});v.message=u(function(c,a,e,d,b){this.compilerInfo=[4,">= 1.0.0"];e=this.merge(e,c.helpers);b=b||{};var g,k,l=this.escapeExpression,t=e.helperMissing;
e.formatTime||a&&a.formatTime,k={hash:{},data:b},g?g.call(a,a&&a.created,k):t.call(a,"formatTime",a&&a.created,k)))+"</span>\n");if((g=e["if"].call(a,a&&a.name,{hash:{},inverse:this.noop,fn:this.program(1,function(a,c){var d,b;d="<span class='n";(b=e.kindName)?b=b.call(a,{hash:{},data:c}):(b=a&&a.kindName,b="function"===typeof b?b.call(a,{hash:{},data:c}):b);d+=l(b)+"'>";(b=e.name)?b=b.call(a,{hash:{},data:c}):(b=a&&a.name,b="function"===typeof b?b.call(a,{hash:{},data:c}):b);return d+=l(b)+"</span>: "}, c=""+("<span>"+l((g=e.formatTime||a&&a.formatTime,k={hash:{},data:b},g?g.call(a,a&&a.created,k):t.call(a,"formatTime",a&&a.created,k)))+"</span>\n");if((g=e["if"].call(a,a&&a.name,{hash:{},inverse:this.noop,fn:this.program(1,function(a,c){var d,b;d="<span class='n";(b=e.kindName)?b=b.call(a,{hash:{},data:c}):(b=a&&a.kindName,b="function"===typeof b?b.call(a,{hash:{},data:c}):b);d+=l(b)+"'>";(b=e.name)?b=b.call(a,{hash:{},data:c}):(b=a&&a.name,b="function"===typeof b?b.call(a,{hash:{},data:c}):b);
b),data:b}))||0===g)c+=g;c+="\n<span class='m";(g=e.kindName)?g=g.call(a,{hash:{},data:b}):(g=a&&a.kindName,g="function"===typeof g?g.call(a,{hash:{},data:b}):g);c+=l(g)+"'>";if((g=e["if"].call(a,a&&a.allowFormatting,{hash:{},inverse:this.program(5,function(a,c){var d,b;return l((d=e.apply||a&&a.apply,b={hash:{},data:c},d?d.call(a,a&&a.message,"urlReplace, nl2br",b):t.call(a,"apply",a&&a.message,"urlReplace, nl2br",b)))},b),fn:this.program(3,function(a,d){var b,c;return l((b=e.apply||a&&a.apply,c= return d+=l(b)+"</span>: "},b),data:b}))||0===g)c+=g;c+="\n<span class='m";(g=e.kindName)?g=g.call(a,{hash:{},data:b}):(g=a&&a.kindName,g="function"===typeof g?g.call(a,{hash:{},data:b}):g);c+=l(g)+"'>";if((g=e["if"].call(a,a&&a.allowFormatting,{hash:{},inverse:this.program(5,function(a,c){var d,b;return l((d=e.apply||a&&a.apply,b={hash:{},data:c},d?d.call(a,a&&a.message,"urlReplace, nl2br",b):t.call(a,"apply",a&&a.message,"urlReplace, nl2br",b)))},b),fn:this.program(3,function(a,d){var b,c;return l((b=
{hash:{},data:d},b?b.call(a,a&&a.message,"urlReplace, nl2br, allowTags",c):t.call(a,"apply",a&&a.message,"urlReplace, nl2br, allowTags",c)))},b),data:b}))||0===g)c+=g;return c+"</span><br/>"});v.survey_form=u(function(c,a,e,d,b){function g(a,b){var c,d;c='<input type="hidden" name="group" value="';(d=e.groupId)?d=d.call(a,{hash:{},data:b}):(d=a&&a.groupId,d=typeof d===r?d.call(a,{hash:{},data:b}):d);return c+=p(d)+'"/>'}function k(a,d){var c,b;c=""+('\n <option value="'+p((b= e.apply||a&&a.apply,c={hash:{},data:d},b?b.call(a,a&&a.message,"urlReplace, nl2br, allowTags",c):t.call(a,"apply",a&&a.message,"urlReplace, nl2br, allowTags",c)))},b),data:b}))||0===g)c+=g;return c+"</span><br/>"});v.survey_form=u(function(c,a,e,d,b){function g(a,b){var c,d;c='<input type="hidden" name="group" value="';(d=e.groupId)?d=d.call(a,{hash:{},data:b}):(d=a&&a.groupId,d=typeof d===r?d.call(a,{hash:{},data:b}):d);return c+=p(d)+'"/>'}function k(a,d){var c,b;c=""+('\n <option value="'+
a&&a.id,typeof b===r?b.apply(a):b))+'" ');if((b=e["if"].call(a,a&&a.selected,{hash:{},inverse:q.noop,fn:q.program(10,l,d),data:d}))||0===b)c+=b;c+=">"+p((b=a&&a.name,typeof b===r?b.apply(a):b));if((b=e.unless.call(a,a&&a.online,{hash:{},inverse:q.noop,fn:q.program(12,t,d),data:d}))||0===b)c+=b;return c+"</option>\n "}function l(a,b){return'selected="selected"'}function t(a,b){return" (offline)"}function n(a,b){var d;return(d=e["if"].call(a,a&&a.selected,{hash:{},inverse:q.noop, p((b=a&&a.id,typeof b===r?b.apply(a):b))+'" ');if((b=e["if"].call(a,a&&a.selected,{hash:{},inverse:q.noop,fn:q.program(10,l,d),data:d}))||0===b)c+=b;c+=">"+p((b=a&&a.name,typeof b===r?b.apply(a):b));if((b=e.unless.call(a,a&&a.online,{hash:{},inverse:q.noop,fn:q.program(12,t,d),data:d}))||0===b)c+=b;return c+"</option>\n "}function l(a,b){return'selected="selected"'}function t(a,b){return" (offline)"}function n(a,b){var d;return(d=e["if"].call(a,a&&a.selected,{hash:{},inverse:q.noop,
fn:q.program(15,m,b),data:b}))||0===d?d:""}function m(a,b){var d;return p((d=a&&a.description,typeof d===r?d.apply(a):d))}this.compilerInfo=[4,">= 1.0.0"];e=this.merge(e,c.helpers);b=b||{};var h,s,r="function",p=this.escapeExpression,q=this,f=e.helperMissing;c=""+('<form name="surveyForm" method="post" action="">\n <input type="hidden" name="style" value="'+p((h=(h=a&&a.page,null==h||!1===h?h:h.style),typeof h===r?h.apply(a):h))+'"/>\n <input type="hidden" name="info" value="');(d=e.info)?h= fn:q.program(15,m,b),data:b}))||0===d?d:""}function m(a,b){var d;return p((d=a&&a.description,typeof d===r?d.apply(a):d))}this.compilerInfo=[4,">= 1.0.0"];e=this.merge(e,c.helpers);b=b||{};var h,s,r="function",p=this.escapeExpression,q=this,f=e.helperMissing;c=""+('<form name="surveyForm" method="post" action="">\n <input type="hidden" name="style" value="'+p((h=(h=a&&a.page,null==h||!1===h?h:h.style),typeof h===r?h.apply(a):h))+'"/>\n <input type="hidden" name="info" value="');(d=e.info)?h=
d.call(a,{hash:{},data:b}):(d=a&&a.info,h=typeof d===r?d.call(a,{hash:{},data:b}):d);c+=p(h)+'"/>\n <input type="hidden" name="referrer" value="';(d=e.referrer)?h=d.call(a,{hash:{},data:b}):(d=a&&a.referrer,h=typeof d===r?d.call(a,{hash:{},data:b}):d);c+=p(h)+'"/>\n <input type="hidden" name="survey" value="on"/>\n ';if((h=e.unless.call(a,a&&a.showEmail,{hash:{},inverse:q.noop,fn:q.program(1,function(a,b){var d,c;d='<input type="hidden" name="email" value="';(c=e.email)?c=c.call(a,{hash:{}, d.call(a,{hash:{},data:b}):(d=a&&a.info,h=typeof d===r?d.call(a,{hash:{},data:b}):d);c+=p(h)+'"/>\n <input type="hidden" name="referrer" value="';(d=e.referrer)?h=d.call(a,{hash:{},data:b}):(d=a&&a.referrer,h=typeof d===r?d.call(a,{hash:{},data:b}):d);c+=p(h)+'"/>\n <input type="hidden" name="survey" value="on"/>\n ';if((h=e.unless.call(a,a&&a.showEmail,{hash:{},inverse:q.noop,fn:q.program(1,function(a,b){var d,c;d='<input type="hidden" name="email" value="';(c=e.email)?c=c.call(a,{hash:{},
data:b}):(c=a&&a.email,c=typeof c===r?c.call(a,{hash:{},data:b}):c);return d+=p(c)+'"/>'},b),data:b}))||0===h)c+=h;c+="\n ";if((h=e.unless.call(a,a&&a.groups,{hash:{},inverse:q.noop,fn:q.program(3,function(a,b){var d;return(d=e["if"].call(a,a&&a.groupId,{hash:{},inverse:q.noop,fn:q.program(4,g,b),data:b}))||0===d?d:""},b),data:b}))||0===h)c+=h;c+="\n ";if((h=e.unless.call(a,a&&a.showMessage,{hash:{},inverse:q.noop,fn:q.program(6,function(a,d){var b,c;b='<input type="hidden" name="message" value="'; data:b}):(c=a&&a.email,c=typeof c===r?c.call(a,{hash:{},data:b}):c);return d+=p(c)+'"/>'},b),data:b}))||0===h)c+=h;c+="\n ";if((h=e.unless.call(a,a&&a.groups,{hash:{},inverse:q.noop,fn:q.program(3,function(a,b){var d;return(d=e["if"].call(a,a&&a.groupId,{hash:{},inverse:q.noop,fn:q.program(4,g,b),data:b}))||0===d?d:""},b),data:b}))||0===h)c+=h;c+="\n ";if((h=e.unless.call(a,a&&a.showMessage,{hash:{},inverse:q.noop,fn:q.program(6,function(a,d){var b,c;b='<input type="hidden" name="message" value="';
(c=e.message)?c=c.call(a,{hash:{},data:d}):(c=a&&a.message,c=typeof c===r?c.call(a,{hash:{},data:d}):c);return b+=p(c)+'"/>'},b),data:b}))||0===h)c+=h;c+='\n\n <div class="errors"></div>\n\n <table class="form">\n ';if((h=e["if"].call(a,a&&a.groups,{hash:{},inverse:q.noop,fn:q.program(8,function(a,b){var d,c,g,h;d=""+("\n <tr>\n <td><strong>"+p((g=e.l10n||a&&a.l10n,h={hash:{},data:b},g?g.call(a,"form.field.department",h):f.call(a,"l10n","form.field.department",h)))+'</strong></td>\n <td>\n <select name="group">\n '); (c=e.message)?c=c.call(a,{hash:{},data:d}):(c=a&&a.message,c=typeof c===r?c.call(a,{hash:{},data:d}):c);return b+=p(c)+'"/>'},b),data:b}))||0===h)c+=h;c+='\n\n <div class="errors"></div>\n\n <table class="form">\n ';if((h=e["if"].call(a,a&&a.groups,{hash:{},inverse:q.noop,fn:q.program(8,function(a,b){var d,c,g,h;d=""+("\n <tr>\n <td><strong>"+p((g=e.l10n||a&&a.l10n,h={hash:{},data:b},g?g.call(a,"Choose Department:",h):f.call(a,"l10n","Choose Department:",h)))+'</strong></td>\n <td>\n <select name="group">\n ');
if((c=e.each.call(a,a&&a.groups,{hash:{},inverse:q.noop,fn:q.program(9,k,b),data:b}))||0===c)d+=c;d+="\n </select>\n </td>\n </tr>\n <tr>\n <td><strong>"+p((g=e.l10n||a&&a.l10n,h={hash:{},data:b},g?g.call(a,"form.field.department.description",h):f.call(a,"l10n","form.field.department.description",h)))+'</strong></td>\n <td id="groupDescription">';if((c=e.each.call(a,a&&a.groups,{hash:{},inverse:q.noop,fn:q.program(14,n,b),data:b}))||0=== if((c=e.each.call(a,a&&a.groups,{hash:{},inverse:q.noop,fn:q.program(9,k,b),data:b}))||0===c)d+=c;d+="\n </select>\n </td>\n </tr>\n <tr>\n <td><strong>"+p((g=e.l10n||a&&a.l10n,h={hash:{},data:b},g?g.call(a,"Department description:",h):f.call(a,"l10n","Department description:",h)))+'</strong></td>\n <td id="groupDescription">';if((c=e.each.call(a,a&&a.groups,{hash:{},inverse:q.noop,fn:q.program(14,n,b),data:b}))||0===c)d+=c;return d+"</td>\n </tr>\n "},
c)d+=c;return d+"</td>\n </tr>\n "},b),data:b}))||0===h)c+=h;c+="\n <tr>\n <td><strong>"+p((d=e.l10n||a&&a.l10n,s={hash:{},data:b},d?d.call(a,"presurvey.name",s):f.call(a,"l10n","presurvey.name",s)))+'</strong></td>\n <td><input type="text" name="name" size="50" value="';(d=e.name)?h=d.call(a,{hash:{},data:b}):(d=a&&a.name,h=typeof d===r?d.call(a,{hash:{},data:b}):d);c+=p(h)+'" class="username" ';if((h=e.unless.call(a,a&&a.canChangeName,{hash:{},inverse:q.noop, b),data:b}))||0===h)c+=h;c+="\n <tr>\n <td><strong>"+p((d=e.l10n||a&&a.l10n,s={hash:{},data:b},d?d.call(a,"Name:",s):f.call(a,"l10n","Name:",s)))+'</strong></td>\n <td><input type="text" name="name" size="50" value="';(d=e.name)?h=d.call(a,{hash:{},data:b}):(d=a&&a.name,h=typeof d===r?d.call(a,{hash:{},data:b}):d);c+=p(h)+'" class="username" ';if((h=e.unless.call(a,a&&a.canChangeName,{hash:{},inverse:q.noop,fn:q.program(17,function(a,d){return'disabled="disabled"'},b),
fn:q.program(17,function(a,d){return'disabled="disabled"'},b),data:b}))||0===h)c+=h;c+="/></td>\n </tr>\n ";if((h=e["if"].call(a,a&&a.showEmail,{hash:{},inverse:q.noop,fn:q.program(19,function(a,d){var b,c,g;b=""+("\n <tr>\n <td><strong>"+p((c=e.l10n||a&&a.l10n,g={hash:{},data:d},c?c.call(a,"presurvey.mail",g):f.call(a,"l10n","presurvey.mail",g)))+'</strong></td>\n <td><input type="text" name="email" size="50" value="');(c=e.email)?c=c.call(a,{hash:{},data:d}): data:b}))||0===h)c+=h;c+="/></td>\n </tr>\n ";if((h=e["if"].call(a,a&&a.showEmail,{hash:{},inverse:q.noop,fn:q.program(19,function(a,d){var b,c,g;b=""+("\n <tr>\n <td><strong>"+p((c=e.l10n||a&&a.l10n,g={hash:{},data:d},c?c.call(a,"Email:",g):f.call(a,"l10n","Email:",g)))+'</strong></td>\n <td><input type="text" name="email" size="50" value="');(c=e.email)?c=c.call(a,{hash:{},data:d}):(c=a&&a.email,c=typeof c===r?c.call(a,{hash:{},data:d}):c);return b+=p(c)+'" class="username"/></td>\n </tr>\n '},
(c=a&&a.email,c=typeof c===r?c.call(a,{hash:{},data:d}):c);return b+=p(c)+'" class="username"/></td>\n </tr>\n '},b),data:b}))||0===h)c+=h;c+="\n ";if((h=e["if"].call(a,a&&a.showMessage,{hash:{},inverse:q.noop,fn:q.program(21,function(a,c){var d,b,g;d=""+("\n <tr>\n <td><strong>"+p((b=e.l10n||a&&a.l10n,g={hash:{},data:c},b?b.call(a,"presurvey.question",g):f.call(a,"l10n","presurvey.question",g)))+'</strong></td>\n <td valign="top"><textarea name="message" tabindex="0" cols="45" rows="2">'); b),data:b}))||0===h)c+=h;c+="\n ";if((h=e["if"].call(a,a&&a.showMessage,{hash:{},inverse:q.noop,fn:q.program(21,function(a,c){var d,b,g;d=""+("\n <tr>\n <td><strong>"+p((b=e.l10n||a&&a.l10n,g={hash:{},data:c},b?b.call(a,"Initial Question:",g):f.call(a,"l10n","Initial Question:",g)))+'</strong></td>\n <td valign="top"><textarea name="message" tabindex="0" cols="45" rows="2">');(b=e.message)?b=b.call(a,{hash:{},data:c}):(b=a&&a.message,b=typeof b===r?b.call(a,{hash:{},
(b=e.message)?b=b.call(a,{hash:{},data:c}):(b=a&&a.message,b=typeof b===r?b.call(a,{hash:{},data:c}):b);return d+=p(b)+"</textarea></td>\n </tr>\n "},b),data:b}))||0===h)c+=h;return c+='\n </table>\n <a href="javascript:void(0);" class="but" id="submit-survey">'+p((d=e.l10n||a&&a.l10n,s={hash:{},data:b},d?d.call(a,"presurvey.submit",s):f.call(a,"l10n","presurvey.submit",s)))+'</a>\n <div class="clear">&nbsp;</div>\n</form>\n<div id="ajax-loader"><img src="'+p((h=(h=a&&a.page,null== data:c}):b);return d+=p(b)+"</textarea></td>\n </tr>\n "},b),data:b}))||0===h)c+=h;return c+='\n </table>\n <a href="javascript:void(0);" class="but" id="submit-survey">'+p((d=e.l10n||a&&a.l10n,s={hash:{},data:b},d?d.call(a,"Start Chat",s):f.call(a,"l10n","Start Chat",s)))+'</a>\n <div class="clear">&nbsp;</div>\n</form>\n<div id="ajax-loader"><img src="'+p((h=(h=a&&a.page,null==h||!1===h?h:h.tplRoot),typeof h===r?h.apply(a):h))+'/images/ajax-loader.gif" alt="Loading..." /></div>'});
h||!1===h?h:h.tplRoot),typeof h===r?h.apply(a):h))+'/images/ajax-loader.gif" alt="Loading..." /></div>'});v.survey_layout=u(function(c,a,e,d,b){this.compilerInfo=[4,">= 1.0.0"];e=this.merge(e,c.helpers);d=this.merge(d,c.partials);b=b||{};var g,k,l=e.helperMissing,t=this.escapeExpression;c="\n";if((d=this.invokePartial(d._logo,"_logo",a,e,d,b))||0===d)c+=d;return c+='\n\n\n<div id="headers">\n <div class="wndb"><div class="wndl"><div class="wndr"><div class="wndt"><div class="wndtl"><div class="wndtr"><div class="wndbl"><div class="wndbr">\n <div class="buttons">\n <a href="javascript:window.close();" title="'+ v.survey_layout=u(function(c,a,e,d,b){this.compilerInfo=[4,">= 1.0.0"];e=this.merge(e,c.helpers);d=this.merge(d,c.partials);b=b||{};var g,k,l=e.helperMissing,t=this.escapeExpression;c="\n";if((d=this.invokePartial(d._logo,"_logo",a,e,d,b))||0===d)c+=d;return c+='\n\n\n<div id="headers">\n <div class="wndb"><div class="wndl"><div class="wndr"><div class="wndt"><div class="wndtl"><div class="wndtr"><div class="wndbl"><div class="wndbr">\n <div class="buttons">\n <a href="javascript:window.close();" title="'+
t((g=e.l10n||a&&a.l10n,k={hash:{},data:b},g?g.call(a,"leavemessage.close",k):l.call(a,"l10n","leavemessage.close",k)))+'"><img class="tpl-image iclosewin" src="'+t((d=(d=a&&a.page,null==d||!1===d?d:d.tplRoot),"function"===typeof d?d.apply(a):d))+'/images/free.gif" alt="'+t((g=e.l10n||a&&a.l10n,k={hash:{},data:b},g?g.call(a,"leavemessage.close",k):l.call(a,"l10n","leavemessage.close",k)))+'" /></a>\n </div>\n <div class="messagetxt">'+t((g=e.l10n||a&&a.l10n,k={hash:{},data:b},g?g.call(a, t((g=e.l10n||a&&a.l10n,k={hash:{},data:b},g?g.call(a,"Close",k):l.call(a,"l10n","Close",k)))+'"><img class="tpl-image iclosewin" src="'+t((d=(d=a&&a.page,null==d||!1===d?d:d.tplRoot),"function"===typeof d?d.apply(a):d))+'/images/free.gif" alt="'+t((g=e.l10n||a&&a.l10n,k={hash:{},data:b},g?g.call(a,"Close",k):l.call(a,"l10n","Close",k)))+'" /></a>\n </div>\n <div class="messagetxt">'+t((g=e.l10n||a&&a.l10n,k={hash:{},data:b},g?g.call(a,"Thank you for contacting us. Please fill out the form below and click the Start Chat button.",
"presurvey.intro",k):l.call(a,"l10n","presurvey.intro",k)))+'</div>\n </div></div></div></div></div></div></div></div>\n</div>\n\n\n<div id="content-wrapper"></div>'})})(); k):l.call(a,"l10n","Thank you for contacting us. Please fill out the form below and click the Start Chat button.",k)))+'</div>\n </div></div></div></div></div></div></div></div>\n</div>\n\n\n<div id="content-wrapper"></div>'})})();

View File

@ -1 +1 @@
<div class="tpl-image" title="{{l10n "chat.window.close_title"}}"></div> <div class="tpl-image" title="{{l10n "Close chat"}}"></div>

View File

@ -1 +1 @@
<div class="tpl-image" title="{{l10n "page.analysis.userhistory.title"}}"></div> <div class="tpl-image" title="{{l10n "Visit history"}}"></div>

View File

@ -1,3 +1,3 @@
{{#if user.canPost}} {{#if user.canPost}}
<div class="tpl-image" title="{{l10n "chat.window.toolbar.redirect_user"}}"></div> <div class="tpl-image" title="{{l10n "Redirect visitor to another operator"}}"></div>
{{/if}} {{/if}}

View File

@ -1 +1 @@
<div class="tpl-image" title="{{l10n "chat.window.toolbar.refresh"}}"></div> <div class="tpl-image" title="{{l10n "Refresh"}}"></div>

View File

@ -1 +1 @@
<div class="tpl-image" title="{{l10n "chat.window.toolbar.mail_history"}}"></div> <div class="tpl-image" title="{{l10n "Send chat history by e-mail"}}"></div>

View File

@ -1,5 +1,5 @@
{{#if enabled}} {{#if enabled}}
<div class="tpl-image sound-control-on" title="{{l10n "chat.window.toolbar.turn_off_sound"}}"></div> <div class="tpl-image sound-control-on" title="{{l10n "Turn off sound"}}"></div>
{{else}} {{else}}
<div class="tpl-image sound-control-off" title="{{l10n "chat.window.toolbar.turn_on_sound"}}"></div> <div class="tpl-image sound-control-off" title="{{l10n "Turn on sound"}}"></div>
{{/if}} {{/if}}

View File

@ -1,12 +1,12 @@
{{#if user.canChangeName}} {{#if user.canChangeName}}
<span class="user-name-control-prefix">{{l10n "chat.client.name"}}</span> <span class="user-name-control-prefix">{{l10n "You are"}}</span>
{{#if nameInput}} {{#if nameInput}}
<div class="user-name-control-input-bg"><input id="user-name-control-input" type="text" size="12" value="{{user.name}}" class="username" /></div> <div class="user-name-control-input-bg"><input id="user-name-control-input" type="text" size="12" value="{{user.name}}" class="username" /></div>
<a href="javascript:void(0)" class="user-name-control-set tpl-image" title="{{l10n "chat.client.changename"}}"></a> <a href="javascript:void(0)" class="user-name-control-set tpl-image" title="{{l10n "Change name"}}"></a>
{{else}} {{else}}
<a href="javascript:void(0)" title="{{l10n "chat.client.changename"}}">{{user.name}}</a> <a href="javascript:void(0)" title="{{l10n "Change name"}}">{{user.name}}</a>
<a class="user-name-control-change tpl-image" title="{{l10n "chat.client.changename"}}"></a> <a class="user-name-control-change tpl-image" title="{{l10n "Change name"}}"></a>
{{/if}} {{/if}}
{{else}} {{else}}
{{l10n "chat.client.name"}}&nbsp;{{user.name}} {{l10n "You are"}}&nbsp;{{user.name}}
{{/if}} {{/if}}

View File

@ -26,4 +26,4 @@
<div id="message-form-region"></div> <div id="message-form-region"></div>
{{! Footer links}} {{! Footer links}}
<div id="footer">{{l10n "chat.window.poweredby"}} <a id="poweredByLink" href="http://mibew.org" title="Mibew Community" target="_blank">mibew.org</a></div> <div id="footer">{{l10n "Powered by:"}} <a id="poweredByLink" href="http://mibew.org" title="Mibew Community" target="_blank">mibew.org</a></div>

View File

@ -12,14 +12,14 @@
<div id="predefined-wrapper"> <div id="predefined-wrapper">
{{#if user.isAgent}} {{#if user.isAgent}}
<select id="predefined" size="1" class="answer"> <select id="predefined" size="1" class="answer">
<option>{{l10n "chat.window.predefined.select_answer"}}</option> <option>{{l10n "Select answer..."}}</option>
{{#each predefinedAnswers}} {{#each predefinedAnswers}}
<option>{{this.short}}</option> <option>{{this.short}}</option>
{{/each}} {{/each}}
</select> </select>
{{/if}} {{/if}}
</div> </div>
<a href="javascript:void(0)" id="send-message" title="{{l10n "chat.window.send_message"}}">{{l10n "chat.window.send_message_short_and_shortcut"}}</a> <a href="javascript:void(0)" id="send-message" title="{{l10n "Send message"}}">{{l10n "chat.window.send_message_short_and_shortcut"}}</a>
</div> </div>
{{/if}} {{/if}}
</div> </div>

View File

@ -1 +1 @@
{{l10n "typing.remote"}} {{l10n "Remote user is typing..."}}

View File

@ -1,6 +1,6 @@
<div class="buttons"> <div class="buttons">
<a href="javascript:window.close();" title="{{l10n "leavemessage.close"}}"> <a href="javascript:window.close();" title="{{l10n "Close"}}">
<img class="tpl-image iclosewin" src="{{page.tplRoot}}/images/free.gif" alt="{{l10n "leavemessage.close"}}" /> <img class="tpl-image iclosewin" src="{{page.tplRoot}}/images/free.gif" alt="{{l10n "Close"}}" />
</a> </a>
</div> </div>
<div class="messagetxt">{{l10n "leavemessage.descr"}}</div> <div class="messagetxt">{{l10n "Sorry. None of the support team is available at the moment. <br/>Please leave a message and someone will get back to you shortly."}}</div>

View File

@ -8,16 +8,16 @@
<table cellspacing="1" cellpadding="5" border="0" class="form"> <table cellspacing="1" cellpadding="5" border="0" class="form">
<tr> <tr>
<td><strong>{{l10n "form.field.email"}}:</strong></td> <td><strong>{{l10n "Your email"}}:</strong></td>
<td><input type="text" name="email" size="50" value="{{email}}" class="username"/></td> <td><input type="text" name="email" size="50" value="{{email}}" class="username"/></td>
</tr> </tr>
<tr> <tr>
<td><strong>{{l10n "form.field.name"}}:</strong></td> <td><strong>{{l10n "Your name"}}:</strong></td>
<td><input type="text" name="name" size="50" value="{{name}}" class="username"/></td> <td><input type="text" name="name" size="50" value="{{name}}" class="username"/></td>
</tr> </tr>
{{#if groups}} {{#if groups}}
<tr> <tr>
<td class="text"><strong>{{l10n "form.field.department"}}</strong></td> <td class="text"><strong>{{l10n "Choose Department:"}}</strong></td>
<td> <td>
<select name="group" style="min-width:200px;"> <select name="group" style="min-width:200px;">
{{#each groups}} {{#each groups}}
@ -27,14 +27,14 @@
</td> </td>
</tr> </tr>
<tr> <tr>
<td class="text"><strong>{{l10n "form.field.department.description"}}</strong></td> <td class="text"><strong>{{l10n "Department description:"}}</strong></td>
<td class="text" id="groupDescription"> <td class="text" id="groupDescription">
{{#each groups}}{{#if this.selected}}{{this.description}}{{/if}}{{/each}} {{#each groups}}{{#if this.selected}}{{this.description}}{{/if}}{{/each}}
</td> </td>
</tr> </tr>
{{/if}} {{/if}}
<tr> <tr>
<td><strong>{{l10n "form.field.message"}}:</strong></td> <td><strong>{{l10n "Message"}}:</strong></td>
<td valign="top"> <td valign="top">
<textarea name="message" tabindex="0" cols="40" rows="5">{{message}}</textarea> <textarea name="message" tabindex="0" cols="40" rows="5">{{message}}</textarea>
</td> </td>
@ -46,7 +46,7 @@
</tr> </tr>
{{/if}} {{/if}}
</table> </table>
<a href="javascript:void(0);" class="but" id="send-message">{{l10n "mailthread.perform"}}</a> <a href="javascript:void(0);" class="but" id="send-message">{{l10n "Send"}}</a>
<div class="clear">&nbsp;</div> <div class="clear">&nbsp;</div>
</form> </form>
<div id="ajax-loader"><img src="{{page.tplRoot}}/images/ajax-loader.gif" alt="Loading..." /></div> <div id="ajax-loader"><img src="{{page.tplRoot}}/images/ajax-loader.gif" alt="Loading..." /></div>

View File

@ -1,6 +1,6 @@
<div class="buttons"> <div class="buttons">
<a href="javascript:window.close();" title="{{l10n "chat.mailthread.sent.close"}}"> <a href="javascript:window.close();" title="{{l10n "Close..."}}">
<img class="tpl-image iclosewin" src="{{page.tplRoot}}/images/free.gif" alt="{{l10n "chat.mailthread.sent.close"}}" /> <img class="tpl-image iclosewin" src="{{page.tplRoot}}/images/free.gif" alt="{{l10n "Close..."}}" />
</a> </a>
</div> </div>
<div class="messagetxt">{{l10n "leavemessage.sent.message"}}</div> <div class="messagetxt">{{l10n "Thank you for your message. We'll answer your query by email as soon as possible."}}</div>

View File

@ -12,7 +12,7 @@
<table class="form"> <table class="form">
{{#if groups}} {{#if groups}}
<tr> <tr>
<td><strong>{{l10n "form.field.department"}}</strong></td> <td><strong>{{l10n "Choose Department:"}}</strong></td>
<td> <td>
<select name="group"> <select name="group">
{{#each groups}} {{#each groups}}
@ -22,28 +22,28 @@
</td> </td>
</tr> </tr>
<tr> <tr>
<td><strong>{{l10n "form.field.department.description"}}</strong></td> <td><strong>{{l10n "Department description:"}}</strong></td>
<td id="groupDescription">{{#each groups}}{{#if this.selected}}{{this.description}}{{/if}}{{/each}}</td> <td id="groupDescription">{{#each groups}}{{#if this.selected}}{{this.description}}{{/if}}{{/each}}</td>
</tr> </tr>
{{/if}} {{/if}}
<tr> <tr>
<td><strong>{{l10n "presurvey.name"}}</strong></td> <td><strong>{{l10n "Name:"}}</strong></td>
<td><input type="text" name="name" size="50" value="{{name}}" class="username" {{#unless canChangeName}}disabled="disabled"{{/unless}}/></td> <td><input type="text" name="name" size="50" value="{{name}}" class="username" {{#unless canChangeName}}disabled="disabled"{{/unless}}/></td>
</tr> </tr>
{{#if showEmail}} {{#if showEmail}}
<tr> <tr>
<td><strong>{{l10n "presurvey.mail"}}</strong></td> <td><strong>{{l10n "Email:"}}</strong></td>
<td><input type="text" name="email" size="50" value="{{email}}" class="username"/></td> <td><input type="text" name="email" size="50" value="{{email}}" class="username"/></td>
</tr> </tr>
{{/if}} {{/if}}
{{#if showMessage}} {{#if showMessage}}
<tr> <tr>
<td><strong>{{l10n "presurvey.question"}}</strong></td> <td><strong>{{l10n "Initial Question:"}}</strong></td>
<td valign="top"><textarea name="message" tabindex="0" cols="45" rows="2">{{message}}</textarea></td> <td valign="top"><textarea name="message" tabindex="0" cols="45" rows="2">{{message}}</textarea></td>
</tr> </tr>
{{/if}} {{/if}}
</table> </table>
<a href="javascript:void(0);" class="but" id="submit-survey">{{l10n "presurvey.submit"}}</a> <a href="javascript:void(0);" class="but" id="submit-survey">{{l10n "Start Chat"}}</a>
<div class="clear">&nbsp;</div> <div class="clear">&nbsp;</div>
</form> </form>
<div id="ajax-loader"><img src="{{page.tplRoot}}/images/ajax-loader.gif" alt="Loading..." /></div> <div id="ajax-loader"><img src="{{page.tplRoot}}/images/ajax-loader.gif" alt="Loading..." /></div>

View File

@ -5,9 +5,9 @@
<div id="headers"> <div id="headers">
<div class="wndb"><div class="wndl"><div class="wndr"><div class="wndt"><div class="wndtl"><div class="wndtr"><div class="wndbl"><div class="wndbr"> <div class="wndb"><div class="wndl"><div class="wndr"><div class="wndt"><div class="wndtl"><div class="wndtr"><div class="wndbl"><div class="wndbr">
<div class="buttons"> <div class="buttons">
<a href="javascript:window.close();" title="{{l10n "leavemessage.close"}}"><img class="tpl-image iclosewin" src="{{page.tplRoot}}/images/free.gif" alt="{{l10n "leavemessage.close"}}" /></a> <a href="javascript:window.close();" title="{{l10n "Close"}}"><img class="tpl-image iclosewin" src="{{page.tplRoot}}/images/free.gif" alt="{{l10n "Close"}}" /></a>
</div> </div>
<div class="messagetxt">{{l10n "presurvey.intro"}}</div> <div class="messagetxt">{{l10n "Thank you for contacting us. Please fill out the form below and click the Start Chat button."}}</div>
</div></div></div></div></div></div></div></div> </div></div></div></div></div></div></div></div>
</div> </div>

View File

@ -2,7 +2,7 @@
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head> <head>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8" /> <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
<title>{{#block "windowTitle"}}{{l10n "chat.window.title.user"}}{{/block}}</title> <title>{{#block "windowTitle"}}{{l10n "Mibew Messenger"}}{{/block}}</title>
<link rel="shortcut icon" href="{{stylePath}}/images/favicon.ico" type="image/x-icon" /> <link rel="shortcut icon" href="{{stylePath}}/images/favicon.ico" type="image/x-icon" />
<link rel="stylesheet" type="text/css" href="{{stylePath}}/chat.css" media="all" /> <link rel="stylesheet" type="text/css" href="{{stylePath}}/chat.css" media="all" />
{{#block "head"}}{{/block}} {{#block "head"}}{{/block}}
@ -30,7 +30,7 @@
<img src="{{stylePath}}/images/default-logo.png" alt=""/> <img src="{{stylePath}}/images/default-logo.png" alt=""/>
{{/if}} {{/if}}
{{/if}} {{/if}}
<div id="page-title">{{#block "pageTitle"}}{{l10n "chat.window.title.user"}}{{/block}}</div> <div id="page-title">{{#block "pageTitle"}}{{l10n "Mibew Messenger"}}{{/block}}</div>
<div class="clear">&nbsp;</div> <div class="clear">&nbsp;</div>
</div> </div>
</div> </div>

View File

@ -30,43 +30,43 @@
<script type="text/javascript"><!-- <script type="text/javascript"><!--
// Localized strings for the core // Localized strings for the core
Mibew.Localization.set({ Mibew.Localization.set({
'chat.close.confirmation': '{{#jsString}}{{l10n "chat.close.confirmation"}}{{/jsString}}', 'Are you sure want to leave chat?': '{{#jsString}}{{l10n "Are you sure want to leave chat?"}}{{/jsString}}',
'typing.remote': '{{#jsString}}{{l10n "typing.remote"}}{{/jsString}}', 'Remote user is typing...': '{{#jsString}}{{l10n "Remote user is typing..."}}{{/jsString}}',
'chat.window.predefined.select_answer': '{{#jsString}}{{l10n "chat.window.predefined.select_answer"}}{{/jsString}}', 'Select answer...': '{{#jsString}}{{l10n "Select answer..."}}{{/jsString}}',
'chat.window.send_message': '{{#jsString}}{{l10n "chat.window.send_message"}}{{/jsString}}', 'Send message': '{{#jsString}}{{l10n "Send message"}}{{/jsString}}',
'chat.window.send_message_short_and_shortcut': '{{#jsString}}{{l10n "chat.window.send_message_short" send_shortcut}}{{/jsString}}', 'chat.window.send_message_short_and_shortcut': '{{#jsString}}{{l10n "Send ({0})" send_shortcut}}{{/jsString}}',
'chat.window.close_title': '{{#jsString}}{{l10n "chat.window.close_title"}}{{/jsString}}', 'Close chat': '{{#jsString}}{{l10n "Close chat"}}{{/jsString}}',
'chat.window.toolbar.refresh': '{{#jsString}}{{l10n "chat.window.toolbar.refresh"}}{{/jsString}}', 'Refresh': '{{#jsString}}{{l10n "Refresh"}}{{/jsString}}',
'chat.window.toolbar.mail_history': '{{#jsString}}{{l10n "chat.window.toolbar.mail_history"}}{{/jsString}}', 'Send chat history by e-mail': '{{#jsString}}{{l10n "Send chat history by e-mail"}}{{/jsString}}',
'chat.window.toolbar.redirect_user': '{{#jsString}}{{l10n "chat.window.toolbar.redirect_user"}}{{/jsString}}', 'Redirect visitor to another operator': '{{#jsString}}{{l10n "Redirect visitor to another operator"}}{{/jsString}}',
'page.analysis.userhistory.title': '{{#jsString}}{{l10n "page.analysis.userhistory.title"}}{{/jsString}}', 'Visit history': '{{#jsString}}{{l10n "Visit history"}}{{/jsString}}',
'chat.client.name': '{{#jsString}}{{l10n "chat.client.name"}}{{/jsString}}', 'You are': '{{#jsString}}{{l10n "You are"}}{{/jsString}}',
'chat.client.changename': '{{#jsString}}{{l10n "chat.client.changename"}}{{/jsString}}', 'Change name': '{{#jsString}}{{l10n "Change name"}}{{/jsString}}',
'chat.window.toolbar.turn_off_sound': '{{#jsString}}{{l10n "chat.window.toolbar.turn_off_sound"}}{{/jsString}}', 'Turn off sound': '{{#jsString}}{{l10n "Turn off sound"}}{{/jsString}}',
'chat.window.toolbar.turn_on_sound': '{{#jsString}}{{l10n "chat.window.toolbar.turn_on_sound"}}{{/jsString}}', 'Turn on sound': '{{#jsString}}{{l10n "Turn on sound"}}{{/jsString}}',
'chat.window.poweredby': '{{#jsString}}{{l10n "chat.window.poweredby"}}{{/jsString}}', 'Powered by:': '{{#jsString}}{{l10n "Powered by:"}}{{/jsString}}',
'chat.mailthread.sent.close': '{{#jsString}}{{l10n "chat.mailthread.sent.close"}}{{/jsString}}', 'Close...': '{{#jsString}}{{l10n "Close..."}}{{/jsString}}',
'form.field.department': '{{#jsString}}{{l10n "form.field.department"}}{{/jsString}}', 'Choose Department:': '{{#jsString}}{{l10n "Choose Department:"}}{{/jsString}}',
'form.field.department.description': '{{#jsString}}{{l10n "form.field.department.description"}}{{/jsString}}', 'Department description:': '{{#jsString}}{{l10n "Department description:"}}{{/jsString}}',
'form.field.email': '{{#jsString}}{{l10n "form.field.email"}}{{/jsString}}', 'Your email': '{{#jsString}}{{l10n "Your email"}}{{/jsString}}',
'form.field.name': '{{#jsString}}{{l10n "form.field.name"}}{{/jsString}}', 'Your name': '{{#jsString}}{{l10n "Your name"}}{{/jsString}}',
'form.field.message': '{{#jsString}}{{l10n "form.field.message"}}{{/jsString}}', 'Message': '{{#jsString}}{{l10n "Message"}}{{/jsString}}',
'leavemessage.close': '{{#jsString}}{{l10n "leavemessage.close"}}{{/jsString}}', 'Close': '{{#jsString}}{{l10n "Close"}}{{/jsString}}',
'leavemessage.descr': '{{#jsString}}{{l10n "leavemessage.descr"}}{{/jsString}}', 'Sorry. None of the support team is available at the moment. <br/>Please leave a message and someone will get back to you shortly.': '{{#jsString}}{{l10n "Sorry. None of the support team is available at the moment. <br/>Please leave a message and someone will get back to you shortly."}}{{/jsString}}',
'leavemessage.sent.message': '{{#jsString}}{{l10n "leavemessage.sent.message"}}{{/jsString}}', 'Thank you for your message. We\'ll answer your query by email as soon as possible.': '{{#jsString}}{{l10n "Thank you for your message. We'll answer your query by email as soon as possible."}}{{/jsString}}',
'leavemessage.error.email.required': '{{#jsString}}{{localized.[email.required]}}{{/jsString}}', 'leavemessage.error.email.required': '{{#jsString}}{{localized.[email.required]}}{{/jsString}}',
'leavemessage.error.name.required': '{{#jsString}}{{localized.[name.required]}}{{/jsString}}', 'leavemessage.error.name.required': '{{#jsString}}{{localized.[name.required]}}{{/jsString}}',
'leavemessage.error.message.required': '{{#jsString}}{{localized.[message.required]}}{{/jsString}}', 'leavemessage.error.message.required': '{{#jsString}}{{localized.[message.required]}}{{/jsString}}',
'leavemessage.error.wrong.email': '{{#jsString}}{{localized.[wrong.email]}}{{/jsString}}', 'leavemessage.error.wrong.email': '{{#jsString}}{{localized.[wrong.email]}}{{/jsString}}',
'errors.captcha': '{{#jsString}}{{l10n "errors.captcha"}}{{/jsString}}', 'The letters you typed don\'t match the letters that were shown in the picture.': '{{#jsString}}{{l10n "The letters you typed don't match the letters that were shown in the picture."}}{{/jsString}}',
'mailthread.perform': '{{#jsString}}{{l10n "mailthread.perform"}}{{/jsString}}', 'Send': '{{#jsString}}{{l10n "Send"}}{{/jsString}}',
'presurvey.name': '{{#jsString}}{{l10n "presurvey.name"}}{{/jsString}}', 'Name:': '{{#jsString}}{{l10n "Name:"}}{{/jsString}}',
'presurvey.mail': '{{#jsString}}{{l10n "presurvey.mail"}}{{/jsString}}', 'Email:': '{{#jsString}}{{l10n "Email:"}}{{/jsString}}',
'presurvey.question': '{{#jsString}}{{l10n "presurvey.question"}}{{/jsString}}', 'Initial Question:': '{{#jsString}}{{l10n "Initial Question:"}}{{/jsString}}',
'presurvey.submit': '{{#jsString}}{{l10n "presurvey.submit"}}{{/jsString}}', 'Start Chat': '{{#jsString}}{{l10n "Start Chat"}}{{/jsString}}',
'presurvey.error.wrong_email': '{{#jsString}}{{l10n "presurvey.error.wrong_email"}}{{/jsString}}', 'Wrong email address.': '{{#jsString}}{{l10n "Wrong email address."}}{{/jsString}}',
'presurvey.title': '{{#jsString}}{{l10n "presurvey.title"}}{{/jsString}}', 'Live support': '{{#jsString}}{{l10n "Live support"}}{{/jsString}}',
'presurvey.intro': '{{#jsString}}{{l10n "presurvey.intro"}}{{/jsString}}' 'Thank you for contacting us. Please fill out the form below and click the Start Chat button.': '{{#jsString}}{{l10n "Thank you for contacting us. Please fill out the form below and click the Start Chat button."}}{{/jsString}}'
}); });
// Plugins localization // Plugins localization
Mibew.Localization.set({{{additional_localized_strings}}}); Mibew.Localization.set({{{additional_localized_strings}}});

View File

@ -1,17 +1,17 @@
{{#extends "_layout"}} {{#extends "_layout"}}
{{#override "windowTitle"}}{{l10n "chat.error_page.title"}}{{/override}} {{#override "windowTitle"}}{{l10n "Error"}}{{/override}}
{{#override "pageTitle"}}{{l10n "chat.error_page.title"}}{{/override}} {{#override "pageTitle"}}{{l10n "Error"}}{{/override}}
{{#override "buttons"}} {{#override "buttons"}}
<a href="javascript:window.close();" title="{{l10n 'chat.error_page.close'}}"> <a href="javascript:window.close();" title="{{l10n 'Close...'}}">
<img class="tpl-image iclosewin" src="{{stylePath}}/images/free.gif" alt="{{l10n 'chat.error_page.close'}}" /> <img class="tpl-image iclosewin" src="{{stylePath}}/images/free.gif" alt="{{l10n 'Close...'}}" />
</a> </a>
{{/override}} {{/override}}
{{#override "content"}} {{#override "content"}}
{{#if errors}} {{#if errors}}
<b>{{l10n "harderrors.header"}}</b><br/> <b>{{l10n "Cannot execute:"}}</b><br/>
<ul> <ul>
{{#each errors}} {{#each errors}}
<li class="error">{{{this}}}</li> <li class="error">{{{this}}}</li>

View File

@ -1,9 +1,9 @@
{{#extends "_layout"}} {{#extends "_layout"}}
{{#override "pageTitle"}}{{l10n "mailthread.title"}}{{/override}} {{#override "pageTitle"}}{{l10n "Send chat history<br/>by mail"}}{{/override}}
{{#override "buttons"}} {{#override "buttons"}}
<a href="javascript:window.close();" title="{{l10n 'mailthread.close'}}"> <a href="javascript:window.close();" title="{{l10n 'Close...'}}">
<img class="tpl-image iclosewin" src="{{stylePath}}/images/free.gif" alt="{{l10n 'mailthread.close'}}" /> <img class="tpl-image iclosewin" src="{{stylePath}}/images/free.gif" alt="{{l10n 'Close...'}}" />
</a> </a>
{{/override}} {{/override}}
@ -12,15 +12,15 @@
<input type="hidden" name="style" value="{{styleName}}"/> <input type="hidden" name="style" value="{{styleName}}"/>
<input type="hidden" name="level" value="{{level}}"/> <input type="hidden" name="level" value="{{level}}"/>
<strong>{{l10n "mailthread.enter_email"}}</strong> <strong>{{l10n "Enter your email:"}}</strong>
<input type="text" name="email" size="20" value="{{formemail}}" class="username" />&nbsp; <input type="text" name="email" size="20" value="{{formemail}}" class="username" />&nbsp;
<a href="javascript:document.mailThreadForm.submit();">{{l10n "mailthread.perform"}}</a> <a href="javascript:document.mailThreadForm.submit();">{{l10n "Send"}}</a>
</form> </form>
{{/override}} {{/override}}
{{#override "content"}} {{#override "content"}}
{{#if errors}} {{#if errors}}
<b>{{l10n "errors.header"}}</b><br/> <b>{{l10n "Correct the mistakes:"}}</b><br/>
<ul> <ul>
{{#each errors}} {{#each errors}}
<li class="error">{{{this}}}</li> <li class="error">{{{this}}}</li>

View File

@ -1,11 +1,11 @@
{{#extends "_layout"}} {{#extends "_layout"}}
{{#override "pageTitle"}}{{l10n "chat.mailthread.sent.title"}}{{/override}} {{#override "pageTitle"}}{{l10n "Sent"}}{{/override}}
{{#override "buttons"}} {{#override "buttons"}}
<a href="javascript:window.close();" title="{{l10n 'chat.mailthread.sent.close'}}"> <a href="javascript:window.close();" title="{{l10n 'Close...'}}">
<img class="tpl-image iclosewin" src="{{stylePath}}/images/free.gif" alt="{{l10n 'chat.mailthread.sent.close'}}" /> <img class="tpl-image iclosewin" src="{{stylePath}}/images/free.gif" alt="{{l10n 'Close...'}}" />
</a> </a>
{{/override}} {{/override}}
{{#override "message"}}{{l10n "chat.mailthread.sent.content" email}}{{/override}} {{#override "message"}}{{l10n "A history of your chat was sent to address {0}" email}}{{/override}}
{{/extends}} {{/extends}}

View File

@ -1,13 +1,13 @@
{{#extends "_layout"}} {{#extends "_layout"}}
{{#override "pageTitle"}}{{l10n "chat.error_page.title"}}{{/override}} {{#override "pageTitle"}}{{l10n "Error"}}{{/override}}
{{#override "buttons"}} {{#override "buttons"}}
<a href="javascript:window.close();" title="{{l10n 'page.chat.old_browser.close'}}"> <a href="javascript:window.close();" title="{{l10n 'Close...'}}">
<img class="tpl-image iclosewin" src="{{stylePath}}/images/free.gif" alt="{{l10n 'page.chat.old_browser.close'}}" /> <img class="tpl-image iclosewin" src="{{stylePath}}/images/free.gif" alt="{{l10n 'Close...'}}" />
</a> </a>
{{/override}} {{/override}}
{{#override "message"}}<p>{{l10n "page.chat.old_browser.problem"}}</p>{{/override}} {{#override "message"}}<p>{{l10n "Your web browser is not fully supported. \nPlease, use one of the following web browsers:"}}</p>{{/override}}
{{#override "content"}} {{#override "content"}}
<ul> <ul>

View File

@ -1,18 +1,18 @@
{{#extends "_layout"}} {{#extends "_layout"}}
{{#override "pageTitle"}}{{l10n "chat.redirect.title"}}{{/override}} {{#override "pageTitle"}}{{l10n "Redirect to<br/>another operator"}}{{/override}}
{{#override "buttons"}} {{#override "buttons"}}
<a href="javascript:window.close();" title="{{l10n 'chat.redirect.back'}}"> <a href="javascript:window.close();" title="{{l10n 'Back...'}}">
<img class="tpl-image iclosewin" src="{{stylePath}}/images/free.gif" alt="{{l10n 'chat.redirect.back'}}" /> <img class="tpl-image iclosewin" src="{{stylePath}}/images/free.gif" alt="{{l10n 'Back...'}}" />
</a> </a>
{{/override}} {{/override}}
{{#override "message"}}{{l10n "chat.redirect.choose"}}{{/override}} {{#override "message"}}{{l10n "Choose:"}}{{/override}}
{{#override "content"}} {{#override "content"}}
<div class="left"> <div class="left">
{{#if redirectToAgent}} {{#if redirectToAgent}}
<strong>{{l10n "chat.redirect.operator"}}</strong> <strong>{{l10n "Operator:"}}</strong>
<ul class="agentlist"> <ul class="agentlist">
{{{redirectToAgent}}} {{{redirectToAgent}}}
</ul> </ul>
@ -20,7 +20,7 @@
</div> </div>
<div class="right"> <div class="right">
{{#if redirectToGroup}} {{#if redirectToGroup}}
<strong>{{l10n "chat.redirect.group"}}</strong> <strong>{{l10n "Group:"}}</strong>
<ul class="agentlist"> <ul class="agentlist">
{{{redirectToGroup}}} {{{redirectToGroup}}}
</ul> </ul>

View File

@ -1,9 +1,9 @@
{{#extends "_layout"}} {{#extends "_layout"}}
{{#override "pageTitle"}}{{l10n "chat.redirected.title"}}{{/override}} {{#override "pageTitle"}}{{l10n "The visitor has been redirected to another operator"}}{{/override}}
{{#override "buttons"}} {{#override "buttons"}}
<a href="javascript:window.close();" title="{{l10n 'chat.redirected.close'}}"> <a href="javascript:window.close();" title="{{l10n 'Close...'}}">
<img class="tpl-image iclosewin" src="{{stylePath}}/images/free.gif" alt="{{l10n 'chat.redirected.close'}}" /> <img class="tpl-image iclosewin" src="{{stylePath}}/images/free.gif" alt="{{l10n 'Close...'}}" />
</a> </a>
{{/override}} {{/override}}

View File

@ -4,32 +4,31 @@
You may obtain a copy of the License at You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0 http://www.apache.org/licenses/LICENSE-2.0
*/ */
(function(){var l=Handlebars.template,m=Handlebars.templates=Handlebars.templates||{};m.agent=l(function(b,a,f,c,d){this.compilerInfo=[4,">= 1.0.0"];f=this.merge(f,b.helpers);d=d||{};var g=f.helperMissing,e=this.escapeExpression;b='<span class="agent-status-';if((c=f["if"].call(a,a&&a.away,{hash:{},inverse:this.program(3,function(a,c){return"online"},d),fn:this.program(1,function(a,c){return"away"},d),data:d}))||0===c)b+=c;b+=' inline-block" title="';if((c=f["if"].call(a,a&&a.away,{hash:{},inverse:this.program(7, (function(){var l=Handlebars.template,m=Handlebars.templates=Handlebars.templates||{};m.visitor=l(function(c,a,f,b,d){function g(a,b){return"-"}this.compilerInfo=[4,">= 1.0.0"];f=this.merge(f,c.helpers);d=d||{};var e,n,p=f.helperMissing,k=this.escapeExpression;c='<td class="visitor">\n ';if((b=f.unless.call(a,a&&a.invitationInfo,{hash:{},inverse:this.program(3,function(a,b){var c;(c=f.userName)?c=c.call(a,{hash:{},data:b}):(c=a&&a.userName,c="function"===typeof c?c.call(a,{hash:{},data:b}):c);
function(a,c){var b,h;return e((b=f.l10n||a&&a.l10n,h={hash:{},data:c},b?b.call(a,"pending.status.online",h):g.call(a,"l10n","pending.status.online",h)))},d),fn:this.program(5,function(a,c){var b,h;return e((b=f.l10n||a&&a.l10n,h={hash:{},data:c},b?b.call(a,"pending.status.away",h):g.call(a,"l10n","pending.status.away",h)))},d),data:d}))||0===c)b+=c;b+='"></span>';(c=f.name)?c=c.call(a,{hash:{},data:d}):(c=a&&a.name,c="function"===typeof c?c.call(a,{hash:{},data:d}):c);b+=e(c);if((c=f.unless.call(a, return k(c)},d),fn:this.program(1,function(a,b){var c,e,d;c=""+('<a href="javascript:void(0);" class="invite-link" title="'+k((e=f.l10n||a&&a.l10n,d={hash:{},data:b},e?e.call(a,"Invite to chat",d):p.call(a,"l10n","Invite to chat",d)))+'">');(e=f.userName)?e=e.call(a,{hash:{},data:b}):(e=a&&a.userName,e="function"===typeof e?e.call(a,{hash:{},data:b}):e);return c+=k(e)+"</a>"},d),data:d}))||0===b)c+=b;c+='\n</td>\n<td class="visitor">\n <div class="default-visitor-controls inline-block">\n <div class="control track-control inline-block" title="'+
a&&a.isLast,{hash:{},inverse:this.noop,fn:this.program(9,function(a,c){return","},d),data:d}))||0===c)b+=c;return b});m.no_threads=l(function(b,a,f,c,d){this.compilerInfo=[4,">= 1.0.0"];f=this.merge(f,b.helpers);d=d||{};var g,e;b=f.helperMissing;c=this.escapeExpression;return a=""+('<td class="no-threads" colspan="8">'+c((g=f.l10n||a&&a.l10n,e={hash:{},data:d},g?g.call(a,"clients.no_clients",e):b.call(a,"l10n","clients.no_clients",e)))+"</td>")});m.no_visitors=l(function(b,a,f,c,d){this.compilerInfo= k((e=f.l10n||a&&a.l10n,n={hash:{},data:d},e?e.call(a,"Tracked visitor's path",n):p.call(a,"l10n","Tracked visitor's path",n)))+'"></div>\n </div>\n <div class="visitor-controls inline-block"></div>\n</td>\n<td class="visitor">';if((b=f["if"].call(a,a&&a.userIp,{hash:{},inverse:this.program(7,function(a,b){var c;(c=f.remote)?c=c.call(a,{hash:{},data:b}):(c=a&&a.remote,c="function"===typeof c?c.call(a,{hash:{},data:b}):c);return k(c)},d),fn:this.program(5,function(a,b){var c,e;c='<a href="javascript:void(0);" class="geo-link" title="GeoLocation">';
[4,">= 1.0.0"];f=this.merge(f,b.helpers);d=d||{};var g,e;b=f.helperMissing;c=this.escapeExpression;return a=""+('<td class="no-visitors" colspan="9">'+c((g=f.l10n||a&&a.l10n,e={hash:{},data:d},g?g.call(a,"visitors.no_visitors",e):b.call(a,"l10n","visitors.no_visitors",e)))+"</td>")});m.queued_thread=l(function(b,a,f,c,d){this.compilerInfo=[4,">= 1.0.0"];f=this.merge(f,b.helpers);d=d||{};var g=f.helperMissing,e=this.escapeExpression;b='<td class="visitor">\n <div><a href="javascript:void(0);" class="user-name open-dialog" title="'; (e=f.remote)?e=e.call(a,{hash:{},data:b}):(e=a&&a.remote,e="function"===typeof e?e.call(a,{hash:{},data:b}):e);return c+=k(e)+"</a>"},d),data:d}))||0===b)c+=b;c+='</td>\n<td class="visitor"><span class="timesince" data-timestamp="';(e=f.firstTime)?b=e.call(a,{hash:{},data:d}):(e=a&&a.firstTime,b="function"===typeof e?e.call(a,{hash:{},data:d}):e);c+=k(b)+'"></span></td>\n<td class="visitor"><span class="timesince" data-timestamp="';(e=f.lastTime)?b=e.call(a,{hash:{},data:d}):(e=a&&a.lastTime,b="function"===
if((c=f["if"].call(a,a&&a.canOpen,{hash:{},inverse:this.program(3,function(a,c){var b,h;return e((b=f.l10n||a&&a.l10n,h={hash:{},data:c},b?b.call(a,"pending.table.view",h):g.call(a,"l10n","pending.table.view",h)))},d),fn:this.program(1,function(a,c){var b,h;return e((b=f.l10n||a&&a.l10n,h={hash:{},data:c},b?b.call(a,"pending.table.speak",h):g.call(a,"l10n","pending.table.speak",h)))},d),data:d}))||0===c)b+=c;b+='">';if((c=f["if"].call(a,a&&a.ban,{hash:{},inverse:this.noop,fn:this.program(5,function(a, typeof e?e.call(a,{hash:{},data:d}):e);c+=k(b)+'"></span></td>\n<td class="visitor">';if((b=f["if"].call(a,a&&a.invitationInfo,{hash:{},inverse:this.program(11,g,d),fn:this.program(9,function(a,b){var c;return k((c=(c=a&&a.invitationInfo,null==c||!1===c?c:c.agentName),"function"===typeof c?c.apply(a):c))},d),data:d}))||0===b)c+=b;c+='</td>\n<td class="visitor">';if((b=f["if"].call(a,a&&a.invitationInfo,{hash:{},inverse:this.program(11,g,d),fn:this.program(13,function(a,b){var c,e;return c=""+('<span class="timesince" data-timestamp="'+
c){var b,h,d;return b=""+(e((h=f.l10n||a&&a.l10n,d={hash:{},data:c},h?h.call(a,"chat.client.spam.prefix",d):g.call(a,"l10n","chat.client.spam.prefix",d)))+"&nbsp;")},d),data:d}))||0===c)b+=c;(c=f.userName)?c=c.call(a,{hash:{},data:d}):(c=a&&a.userName,c="function"===typeof c?c.call(a,{hash:{},data:d}):c);b+=e(c)+"</a></div>\n ";if((c=f["if"].call(a,a&&a.firstMessage,{hash:{},inverse:this.noop,fn:this.program(7,function(a,c){var b,h;b='<div class="first-message"><a href="javascript:void(0);" title="'; k((e=(e=a&&a.invitationInfo,null==e||!1===e?e:e.time),"function"===typeof e?e.apply(a):e))+'"></span>')},d),data:d}))||0===b)c+=b;c+='</td>\n<td class="visitor">';(e=f.invitations)?b=e.call(a,{hash:{},data:d}):(e=a&&a.invitations,b="function"===typeof e?e.call(a,{hash:{},data:d}):e);c+=k(b)+" / ";(e=f.chats)?b=e.call(a,{hash:{},data:d}):(e=a&&a.chats,b="function"===typeof e?e.call(a,{hash:{},data:d}):e);c+=k(b)+'</td>\n<td class="visitor">';(e=f.userAgent)?b=e.call(a,{hash:{},data:d}):(e=a&&a.userAgent,
(h=f.firstMessage)?h=h.call(a,{hash:{},data:c}):(h=a&&a.firstMessage,h="function"===typeof h?h.call(a,{hash:{},data:c}):h);b+=e(h)+'">';(h=f.firstMessagePreview)?h=h.call(a,{hash:{},data:c}):(h=a&&a.firstMessagePreview,h="function"===typeof h?h.call(a,{hash:{},data:c}):h);return b+=e(h)+"</a></div>"},d),data:d}))||0===c)b+=c;b+='\n</td>\n<td class="visitor">\n <div class="default-thread-controls inline-block">\n ';if((c=f["if"].call(a,a&&a.canOpen,{hash:{},inverse:this.noop,fn:this.program(9, b="function"===typeof e?e.call(a,{hash:{},data:d}):e);return c+=k(b)+"</td>"});m.visitors_collection=l(function(c,a,f,b,d){this.compilerInfo=[4,">= 1.0.0"];f=this.merge(f,c.helpers);d=d||{};var g,e;c=f.helperMissing;b=this.escapeExpression;return a=""+('<table id="visitorslist" class="awaiting" border="0">\n<thead>\n<tr>\n <th class="first">'+b((g=f.l10n||a&&a.l10n,e={hash:{},data:d},g?g.call(a,"Name",e):c.call(a,"l10n","Name",e)))+"</th>\n <th>"+b((g=f.l10n||a&&a.l10n,e={hash:{},data:d},g?
function(a,c){var b,h,d;return b=""+('\n <div class="control open-dialog open-control inline-block" title="'+e((h=f.l10n||a&&a.l10n,d={hash:{},data:c},h?h.call(a,"pending.table.speak",d):g.call(a,"l10n","pending.table.speak",d)))+'"></div>\n ')},d),data:d}))||0===c)b+=c;b+="\n ";if((c=f["if"].call(a,a&&a.canView,{hash:{},inverse:this.noop,fn:this.program(11,function(a,c){var b,d,n;return b=""+('\n <div class="control view-control inline-block" title="'+e((d=f.l10n|| g.call(a,"Actions",e):c.call(a,"l10n","Actions",e)))+"</th>\n <th>"+b((g=f.l10n||a&&a.l10n,e={hash:{},data:d},g?g.call(a,"Visitor's address",e):c.call(a,"l10n","Visitor's address",e)))+"</th>\n <th>"+b((g=f.l10n||a&&a.l10n,e={hash:{},data:d},g?g.call(a,"First seen",e):c.call(a,"l10n","First seen",e)))+"</th>\n <th>"+b((g=f.l10n||a&&a.l10n,e={hash:{},data:d},g?g.call(a,"Last seen",e):c.call(a,"l10n","Last seen",e)))+"</th>\n <th>"+b((g=f.l10n||a&&a.l10n,e={hash:{},data:d},g?g.call(a,"Invited by",
a&&a.l10n,n={hash:{},data:c},d?d.call(a,"pending.table.view",n):g.call(a,"l10n","pending.table.view",n)))+'"></div>\n ')},d),data:d}))||0===c)b+=c;b+="\n ";if((c=f["if"].call(a,a&&a.tracked,{hash:{},inverse:this.noop,fn:this.program(13,function(a,c){var b,d,n;return b=""+('\n <div class="control track-control inline-block" title="'+e((d=f.l10n||a&&a.l10n,n={hash:{},data:c},d?d.call(a,"pending.table.tracked",n):g.call(a,"l10n","pending.table.tracked",n)))+'"></div>\n ')}, e):c.call(a,"l10n","Invited by",e)))+"</th>\n <th>"+b((g=f.l10n||a&&a.l10n,e={hash:{},data:d},g?g.call(a,"Invitation time",e):c.call(a,"l10n","Invitation time",e)))+"</th>\n <th>"+b((g=f.l10n||a&&a.l10n,e={hash:{},data:d},g?g.call(a,"Invitations / Chats",e):c.call(a,"l10n","Invitations / Chats",e)))+"</th>\n <th>"+b((g=f.l10n||a&&a.l10n,e={hash:{},data:d},g?g.call(a,"Misc",e):c.call(a,"l10n","Misc",e)))+'</th>\n</tr>\n</thead>\n<tbody id="visitors-container">\n</tbody>\n</table>')});m.agent=
d),data:d}))||0===c)b+=c;b+="\n ";if((c=f["if"].call(a,a&&a.canBan,{hash:{},inverse:this.noop,fn:this.program(15,function(a,c){var b,d,n;return b=""+('\n <div class="control ban-control inline-block" title="'+e((d=f.l10n||a&&a.l10n,n={hash:{},data:c},d?d.call(a,"pending.table.ban",n):g.call(a,"l10n","pending.table.ban",n)))+'"></div>\n ')},d),data:d}))||0===c)b+=c;b+='\n </div>\n <div class="thread-controls inline-block"></div>\n</td>\n<td class="visitor">';if((c=f["if"].call(a, l(function(c,a,f,b,d){this.compilerInfo=[4,">= 1.0.0"];f=this.merge(f,c.helpers);d=d||{};var g=f.helperMissing,e=this.escapeExpression;c='<span class="agent-status-';if((b=f["if"].call(a,a&&a.away,{hash:{},inverse:this.program(3,function(a,b){return"online"},d),fn:this.program(1,function(a,b){return"away"},d),data:d}))||0===b)c+=b;c+=' inline-block" title="';if((b=f["if"].call(a,a&&a.away,{hash:{},inverse:this.program(7,function(a,b){var c,d;return e((c=f.l10n||a&&a.l10n,d={hash:{},data:b},c?c.call(a,
a&&a.userIp,{hash:{},inverse:this.program(19,function(a,c){var b;(b=f.remote)?b=b.call(a,{hash:{},data:c}):(b=a&&a.remote,b="function"===typeof b?b.call(a,{hash:{},data:c}):b);return e(b)},d),fn:this.program(17,function(a,c){var b,d;b='<a href="javascript:void(0);" class="geo-link" title="GeoLocation">';(d=f.remote)?d=d.call(a,{hash:{},data:c}):(d=a&&a.remote,d="function"===typeof d?d.call(a,{hash:{},data:c}):d);return b+=e(d)+"</a>"},d),data:d}))||0===c)b+=c;b+='</td>\n<td class="visitor">';(c=f.stateDesc)? "Up to date",d):g.call(a,"l10n","Up to date",d)))},d),fn:this.program(5,function(a,b){var c,d;return e((c=f.l10n||a&&a.l10n,d={hash:{},data:b},c?c.call(a,"Away",d):g.call(a,"l10n","Away",d)))},d),data:d}))||0===b)c+=b;c+='"></span>';(b=f.name)?b=b.call(a,{hash:{},data:d}):(b=a&&a.name,b="function"===typeof b?b.call(a,{hash:{},data:d}):b);c+=e(b);if((b=f.unless.call(a,a&&a.isLast,{hash:{},inverse:this.noop,fn:this.program(9,function(a,b){return","},d),data:d}))||0===b)c+=b;return c});m.no_threads=
c=c.call(a,{hash:{},data:d}):(c=a&&a.stateDesc,c="function"===typeof c?c.call(a,{hash:{},data:d}):c);b+=e(c)+'</td>\n<td class="visitor">';(c=f.agentName)?c=c.call(a,{hash:{},data:d}):(c=a&&a.agentName,c="function"===typeof c?c.call(a,{hash:{},data:d}):c);b+=e(c)+'</td>\n<td class="visitor"><span class="timesince" data-timestamp="';(c=f.totalTime)?c=c.call(a,{hash:{},data:d}):(c=a&&a.totalTime,c="function"===typeof c?c.call(a,{hash:{},data:d}):c);b+=e(c)+'"></span></td>\n<td class="visitor">';if((c= l(function(c,a,f,b,d){this.compilerInfo=[4,">= 1.0.0"];f=this.merge(f,c.helpers);d=d||{};var g,e;c=f.helperMissing;b=this.escapeExpression;return a=""+('<td class="no-threads" colspan="8">'+b((g=f.l10n||a&&a.l10n,e={hash:{},data:d},g?g.call(a,"The list of visitors waiting is empty",e):c.call(a,"l10n","The list of visitors waiting is empty",e)))+"</td>")});m.no_visitors=l(function(c,a,f,b,d){this.compilerInfo=[4,">= 1.0.0"];f=this.merge(f,c.helpers);d=d||{};var g,e;c=f.helperMissing;b=this.escapeExpression;
f.unless.call(a,a&&a.chatting,{hash:{},inverse:this.program(23,function(a,c){return"-"},d),fn:this.program(21,function(a,c){var b,d;b='<span class="timesince" data-timestamp="';(d=f.waitingTime)?d=d.call(a,{hash:{},data:c}):(d=a&&a.waitingTime,d="function"===typeof d?d.call(a,{hash:{},data:c}):d);return b+=e(d)+'"></span>'},d),data:d}))||0===c)b+=c;b+='</td>\n<td class="visitor">';if((c=f["if"].call(a,a&&a.ban,{hash:{},inverse:this.program(27,function(a,c){var b;(b=f.userAgent)?b=b.call(a,{hash:{}, return a=""+('<td class="no-visitors" colspan="9">'+b((g=f.l10n||a&&a.l10n,e={hash:{},data:d},g?g.call(a,"There are no visitors ready to chat on your site at present time",e):c.call(a,"l10n","There are no visitors ready to chat on your site at present time",e)))+"</td>")});m.queued_thread=l(function(c,a,f,b,d){this.compilerInfo=[4,">= 1.0.0"];f=this.merge(f,c.helpers);d=d||{};var g=f.helperMissing,e=this.escapeExpression;c='<td class="visitor">\n <div><a href="javascript:void(0);" class="user-name open-dialog" title="';
data:c}):(b=a&&a.userAgent,b="function"===typeof b?b.call(a,{hash:{},data:c}):b);return e(b)},d),fn:this.program(25,function(a,c){var b;return e((b=(b=a&&a.ban,null==b||!1===b?b:b.reason),"function"===typeof b?b.apply(a):b))},d),data:d}))||0===c)b+=c;return b+"</td>"});m.status_panel=l(function(b,a,f,c,d){this.compilerInfo=[4,">= 1.0.0"];f=this.merge(f,b.helpers);d=d||{};var g=f.helperMissing,e=this.escapeExpression;b='<div id="connstatus">';(c=f.message)?c=c.call(a,{hash:{},data:d}):(c=a&&a.message, if((b=f["if"].call(a,a&&a.canOpen,{hash:{},inverse:this.program(3,function(a,b){var c,d;return e((c=f.l10n||a&&a.l10n,d={hash:{},data:b},c?c.call(a,"Watch the chat",d):g.call(a,"l10n","Watch the chat",d)))},d),fn:this.program(1,function(a,b){var c,d;return e((c=f.l10n||a&&a.l10n,d={hash:{},data:b},c?c.call(a,"Click to chat with the visitor",d):g.call(a,"l10n","Click to chat with the visitor",d)))},d),data:d}))||0===b)c+=b;c+='">';if((b=f["if"].call(a,a&&a.ban,{hash:{},inverse:this.noop,fn:this.program(5,
c="function"===typeof c?c.call(a,{hash:{},data:d}):c);b+=e(c);if((c=f["if"].call(a,(c=a&&a.agent,null==c||!1===c?c:c.away),{hash:{},inverse:this.program(3,function(a,c){var b,d;return e((b=f.l10n||a&&a.l10n,d={hash:{},data:c},b?b.call(a,"pending.status.online",d):g.call(a,"l10n","pending.status.online",d)))},d),fn:this.program(1,function(a,b){var c,d;return e((c=f.l10n||a&&a.l10n,d={hash:{},data:b},c?c.call(a,"pending.status.away",d):g.call(a,"l10n","pending.status.away",d)))},d),data:d}))||0===c)b+= function(a,b){var c,d,h;return c=""+(e((d=f.l10n||a&&a.l10n,h={hash:{},data:b},d?d.call(a,"[spam]",h):g.call(a,"l10n","[spam]",h)))+"&nbsp;")},d),data:d}))||0===b)c+=b;(b=f.userName)?b=b.call(a,{hash:{},data:d}):(b=a&&a.userName,b="function"===typeof b?b.call(a,{hash:{},data:d}):b);c+=e(b)+"</a></div>\n ";if((b=f["if"].call(a,a&&a.firstMessage,{hash:{},inverse:this.noop,fn:this.program(7,function(a,b){var c,d;c='<div class="first-message"><a href="javascript:void(0);" title="';(d=f.firstMessage)?
c;b+='</div><div id="connlinks"><a href="javascript:void(0);" id="change-status">';if((c=f["if"].call(a,(c=a&&a.agent,null==c||!1===c?c:c.away),{hash:{},inverse:this.program(7,function(a,c){var b,d;return e((b=f.l10n||a&&a.l10n,d={hash:{},data:c},b?b.call(a,"pending.status.setaway",d):g.call(a,"l10n","pending.status.setaway",d)))},d),fn:this.program(5,function(a,b){var c,d;return e((c=f.l10n||a&&a.l10n,d={hash:{},data:b},c?c.call(a,"pending.status.setonline",d):g.call(a,"l10n","pending.status.setonline", d=d.call(a,{hash:{},data:b}):(d=a&&a.firstMessage,d="function"===typeof d?d.call(a,{hash:{},data:b}):d);c+=e(d)+'">';(d=f.firstMessagePreview)?d=d.call(a,{hash:{},data:b}):(d=a&&a.firstMessagePreview,d="function"===typeof d?d.call(a,{hash:{},data:b}):d);return c+=e(d)+"</a></div>"},d),data:d}))||0===b)c+=b;c+='\n</td>\n<td class="visitor">\n <div class="default-thread-controls inline-block">\n ';if((b=f["if"].call(a,a&&a.canOpen,{hash:{},inverse:this.noop,fn:this.program(9,function(a,b){var c,
d)))},d),data:d}))||0===c)b+=c;return b+"</a></div>"});m.threads_collection=l(function(b,a,f,c,d){this.compilerInfo=[4,">= 1.0.0"];f=this.merge(f,b.helpers);d=d||{};var g,e;b=f.helperMissing;c=this.escapeExpression;return a=""+('<table class="awaiting" border="0">\n<thead>\n<tr>\n <th class="first">'+c((g=f.l10n||a&&a.l10n,e={hash:{},data:d},g?g.call(a,"pending.table.head.name",e):b.call(a,"l10n","pending.table.head.name",e)))+"</th>\n <th>"+c((g=f.l10n||a&&a.l10n,e={hash:{},data:d},g?g.call(a, d,h;return c=""+('\n <div class="control open-dialog open-control inline-block" title="'+e((d=f.l10n||a&&a.l10n,h={hash:{},data:b},d?d.call(a,"Click to chat with the visitor",h):g.call(a,"l10n","Click to chat with the visitor",h)))+'"></div>\n ')},d),data:d}))||0===b)c+=b;c+="\n ";if((b=f["if"].call(a,a&&a.canView,{hash:{},inverse:this.noop,fn:this.program(11,function(a,b){var c,d,h;return c=""+('\n <div class="control view-control inline-block" title="'+e((d=f.l10n||
"pending.table.head.actions",e):b.call(a,"l10n","pending.table.head.actions",e)))+"</th>\n <th>"+c((g=f.l10n||a&&a.l10n,e={hash:{},data:d},g?g.call(a,"pending.table.head.contactid",e):b.call(a,"l10n","pending.table.head.contactid",e)))+"</th>\n <th>"+c((g=f.l10n||a&&a.l10n,e={hash:{},data:d},g?g.call(a,"pending.table.head.state",e):b.call(a,"l10n","pending.table.head.state",e)))+"</th>\n <th>"+c((g=f.l10n||a&&a.l10n,e={hash:{},data:d},g?g.call(a,"pending.table.head.operator",e):b.call(a, a&&a.l10n,h={hash:{},data:b},d?d.call(a,"Watch the chat",h):g.call(a,"l10n","Watch the chat",h)))+'"></div>\n ')},d),data:d}))||0===b)c+=b;c+="\n ";if((b=f["if"].call(a,a&&a.tracked,{hash:{},inverse:this.noop,fn:this.program(13,function(a,b){var c,d,h;return c=""+('\n <div class="control track-control inline-block" title="'+e((d=f.l10n||a&&a.l10n,h={hash:{},data:b},d?d.call(a,"Tracked visitor's path",h):g.call(a,"l10n","Tracked visitor's path",h)))+'"></div>\n ')},
"l10n","pending.table.head.operator",e)))+"</th>\n <th>"+c((g=f.l10n||a&&a.l10n,e={hash:{},data:d},g?g.call(a,"pending.table.head.total",e):b.call(a,"l10n","pending.table.head.total",e)))+"</th>\n <th>"+c((g=f.l10n||a&&a.l10n,e={hash:{},data:d},g?g.call(a,"pending.table.head.waittime",e):b.call(a,"l10n","pending.table.head.waittime",e)))+"</th>\n <th>"+c((g=f.l10n||a&&a.l10n,e={hash:{},data:d},g?g.call(a,"pending.table.head.etc",e):b.call(a,"l10n","pending.table.head.etc",e)))+'</th>\n</tr>\n</thead>\n<tbody id="threads-container">\n\n</tbody>\n</table>')}); d),data:d}))||0===b)c+=b;c+="\n ";if((b=f["if"].call(a,a&&a.canBan,{hash:{},inverse:this.noop,fn:this.program(15,function(a,b){var c,d,h;return c=""+('\n <div class="control ban-control inline-block" title="'+e((d=f.l10n||a&&a.l10n,h={hash:{},data:b},d?d.call(a,"Ban this visitor",h):g.call(a,"l10n","Ban this visitor",h)))+'"></div>\n ')},d),data:d}))||0===b)c+=b;c+='\n </div>\n <div class="thread-controls inline-block"></div>\n</td>\n<td class="visitor">';if((b=f["if"].call(a,
m.visitor=l(function(b,a,f,c,d){function g(a,c){return"-"}this.compilerInfo=[4,">= 1.0.0"];f=this.merge(f,b.helpers);d=d||{};var e,l,m=f.helperMissing,k=this.escapeExpression;b='<td class="visitor">\n ';if((c=f.unless.call(a,a&&a.invitationInfo,{hash:{},inverse:this.program(3,function(a,c){var b;(b=f.userName)?b=b.call(a,{hash:{},data:c}):(b=a&&a.userName,b="function"===typeof b?b.call(a,{hash:{},data:c}):b);return k(b)},d),fn:this.program(1,function(a,b){var c,d,e;c=""+('<a href="javascript:void(0);" class="invite-link" title="'+ a&&a.userIp,{hash:{},inverse:this.program(19,function(a,b){var c;(c=f.remote)?c=c.call(a,{hash:{},data:b}):(c=a&&a.remote,c="function"===typeof c?c.call(a,{hash:{},data:b}):c);return e(c)},d),fn:this.program(17,function(a,c){var b,d;b='<a href="javascript:void(0);" class="geo-link" title="GeoLocation">';(d=f.remote)?d=d.call(a,{hash:{},data:c}):(d=a&&a.remote,d="function"===typeof d?d.call(a,{hash:{},data:c}):d);return b+=e(d)+"</a>"},d),data:d}))||0===b)c+=b;c+='</td>\n<td class="visitor">';(b=f.stateDesc)?
k((d=f.l10n||a&&a.l10n,e={hash:{},data:b},d?d.call(a,"pending.table.invite",e):m.call(a,"l10n","pending.table.invite",e)))+'">');(d=f.userName)?d=d.call(a,{hash:{},data:b}):(d=a&&a.userName,d="function"===typeof d?d.call(a,{hash:{},data:b}):d);return c+=k(d)+"</a>"},d),data:d}))||0===c)b+=c;b+='\n</td>\n<td class="visitor">\n <div class="default-visitor-controls inline-block">\n <div class="control track-control inline-block" title="'+k((e=f.l10n||a&&a.l10n,l={hash:{},data:d},e?e.call(a, b=b.call(a,{hash:{},data:d}):(b=a&&a.stateDesc,b="function"===typeof b?b.call(a,{hash:{},data:d}):b);c+=e(b)+'</td>\n<td class="visitor">';(b=f.agentName)?b=b.call(a,{hash:{},data:d}):(b=a&&a.agentName,b="function"===typeof b?b.call(a,{hash:{},data:d}):b);c+=e(b)+'</td>\n<td class="visitor"><span class="timesince" data-timestamp="';(b=f.totalTime)?b=b.call(a,{hash:{},data:d}):(b=a&&a.totalTime,b="function"===typeof b?b.call(a,{hash:{},data:d}):b);c+=e(b)+'"></span></td>\n<td class="visitor">';if((b=
"pending.table.tracked",l):m.call(a,"l10n","pending.table.tracked",l)))+'"></div>\n </div>\n <div class="visitor-controls inline-block"></div>\n</td>\n<td class="visitor">';if((c=f["if"].call(a,a&&a.userIp,{hash:{},inverse:this.program(7,function(a,b){var c;(c=f.remote)?c=c.call(a,{hash:{},data:b}):(c=a&&a.remote,c="function"===typeof c?c.call(a,{hash:{},data:b}):c);return k(c)},d),fn:this.program(5,function(a,c){var b,d;b='<a href="javascript:void(0);" class="geo-link" title="GeoLocation">'; f.unless.call(a,a&&a.chatting,{hash:{},inverse:this.program(23,function(a,c){return"-"},d),fn:this.program(21,function(a,c){var b,d;b='<span class="timesince" data-timestamp="';(d=f.waitingTime)?d=d.call(a,{hash:{},data:c}):(d=a&&a.waitingTime,d="function"===typeof d?d.call(a,{hash:{},data:c}):d);return b+=e(d)+'"></span>'},d),data:d}))||0===b)c+=b;c+='</td>\n<td class="visitor">';if((b=f["if"].call(a,a&&a.ban,{hash:{},inverse:this.program(27,function(a,c){var b;(b=f.userAgent)?b=b.call(a,{hash:{},
(d=f.remote)?d=d.call(a,{hash:{},data:c}):(d=a&&a.remote,d="function"===typeof d?d.call(a,{hash:{},data:c}):d);return b+=k(d)+"</a>"},d),data:d}))||0===c)b+=c;b+='</td>\n<td class="visitor"><span class="timesince" data-timestamp="';(e=f.firstTime)?c=e.call(a,{hash:{},data:d}):(e=a&&a.firstTime,c="function"===typeof e?e.call(a,{hash:{},data:d}):e);b+=k(c)+'"></span></td>\n<td class="visitor"><span class="timesince" data-timestamp="';(e=f.lastTime)?c=e.call(a,{hash:{},data:d}):(e=a&&a.lastTime,c="function"=== data:c}):(b=a&&a.userAgent,b="function"===typeof b?b.call(a,{hash:{},data:c}):b);return e(b)},d),fn:this.program(25,function(a,b){var c;return e((c=(c=a&&a.ban,null==c||!1===c?c:c.reason),"function"===typeof c?c.apply(a):c))},d),data:d}))||0===b)c+=b;return c+"</td>"});m.status_panel=l(function(c,a,f,b,d){this.compilerInfo=[4,">= 1.0.0"];f=this.merge(f,c.helpers);d=d||{};var g=f.helperMissing,e=this.escapeExpression;c='<div id="connstatus">';(b=f.message)?b=b.call(a,{hash:{},data:d}):(b=a&&a.message,
typeof e?e.call(a,{hash:{},data:d}):e);b+=k(c)+'"></span></td>\n<td class="visitor">';if((c=f["if"].call(a,a&&a.invitationInfo,{hash:{},inverse:this.program(11,g,d),fn:this.program(9,function(a,c){var b;return k((b=(b=a&&a.invitationInfo,null==b||!1===b?b:b.agentName),"function"===typeof b?b.apply(a):b))},d),data:d}))||0===c)b+=c;b+='</td>\n<td class="visitor">';if((c=f["if"].call(a,a&&a.invitationInfo,{hash:{},inverse:this.program(11,g,d),fn:this.program(13,function(a,b){var c,d;return c=""+('<span class="timesince" data-timestamp="'+ b="function"===typeof b?b.call(a,{hash:{},data:d}):b);c+=e(b);if((b=f["if"].call(a,(b=a&&a.agent,null==b||!1===b?b:b.away),{hash:{},inverse:this.program(3,function(a,c){var b,d;return e((b=f.l10n||a&&a.l10n,d={hash:{},data:c},b?b.call(a,"Up to date",d):g.call(a,"l10n","Up to date",d)))},d),fn:this.program(1,function(a,c){var b,d;return e((b=f.l10n||a&&a.l10n,d={hash:{},data:c},b?b.call(a,"Away",d):g.call(a,"l10n","Away",d)))},d),data:d}))||0===b)c+=b;c+='</div><div id="connlinks"><a href="javascript:void(0);" id="change-status">';
k((d=(d=a&&a.invitationInfo,null==d||!1===d?d:d.time),"function"===typeof d?d.apply(a):d))+'"></span>')},d),data:d}))||0===c)b+=c;b+='</td>\n<td class="visitor">';(e=f.invitations)?c=e.call(a,{hash:{},data:d}):(e=a&&a.invitations,c="function"===typeof e?e.call(a,{hash:{},data:d}):e);b+=k(c)+" / ";(e=f.chats)?c=e.call(a,{hash:{},data:d}):(e=a&&a.chats,c="function"===typeof e?e.call(a,{hash:{},data:d}):e);b+=k(c)+'</td>\n<td class="visitor">';(e=f.userAgent)?c=e.call(a,{hash:{},data:d}):(e=a&&a.userAgent, if((b=f["if"].call(a,(b=a&&a.agent,null==b||!1===b?b:b.away),{hash:{},inverse:this.program(7,function(a,c){var b,d;return e((b=f.l10n||a&&a.l10n,d={hash:{},data:c},b?b.call(a,'Set status as "Away"',d):g.call(a,"l10n",'Set status as "Away"',d)))},d),fn:this.program(5,function(a,c){var b,d;return e((b=f.l10n||a&&a.l10n,d={hash:{},data:c},b?b.call(a,'Set status as "Available"',d):g.call(a,"l10n",'Set status as "Available"',d)))},d),data:d}))||0===b)c+=b;return c+"</a></div>"});m.threads_collection=l(function(c,
c="function"===typeof e?e.call(a,{hash:{},data:d}):e);return b+=k(c)+"</td>"});m.visitors_collection=l(function(b,a,f,c,d){this.compilerInfo=[4,">= 1.0.0"];f=this.merge(f,b.helpers);d=d||{};var g,e;b=f.helperMissing;c=this.escapeExpression;return a=""+('<table id="visitorslist" class="awaiting" border="0">\n<thead>\n<tr>\n <th class="first">'+c((g=f.l10n||a&&a.l10n,e={hash:{},data:d},g?g.call(a,"visitors.table.head.name",e):b.call(a,"l10n","visitors.table.head.name",e)))+"</th>\n <th>"+c((g= a,f,b,d){this.compilerInfo=[4,">= 1.0.0"];f=this.merge(f,c.helpers);d=d||{};var g,e;c=f.helperMissing;b=this.escapeExpression;return a=""+('<table class="awaiting" border="0">\n<thead>\n<tr>\n <th class="first">'+b((g=f.l10n||a&&a.l10n,e={hash:{},data:d},g?g.call(a,"Name",e):c.call(a,"l10n","Name",e)))+"</th>\n <th>"+b((g=f.l10n||a&&a.l10n,e={hash:{},data:d},g?g.call(a,"Actions",e):c.call(a,"l10n","Actions",e)))+"</th>\n <th>"+b((g=f.l10n||a&&a.l10n,e={hash:{},data:d},g?g.call(a,"Visitor's address",
f.l10n||a&&a.l10n,e={hash:{},data:d},g?g.call(a,"visitors.table.head.actions",e):b.call(a,"l10n","visitors.table.head.actions",e)))+"</th>\n <th>"+c((g=f.l10n||a&&a.l10n,e={hash:{},data:d},g?g.call(a,"visitors.table.head.contactid",e):b.call(a,"l10n","visitors.table.head.contactid",e)))+"</th>\n <th>"+c((g=f.l10n||a&&a.l10n,e={hash:{},data:d},g?g.call(a,"visitors.table.head.firsttimeonsite",e):b.call(a,"l10n","visitors.table.head.firsttimeonsite",e)))+"</th>\n <th>"+c((g=f.l10n||a&&a.l10n, e):c.call(a,"l10n","Visitor's address",e)))+"</th>\n <th>"+b((g=f.l10n||a&&a.l10n,e={hash:{},data:d},g?g.call(a,"State",e):c.call(a,"l10n","State",e)))+"</th>\n <th>"+b((g=f.l10n||a&&a.l10n,e={hash:{},data:d},g?g.call(a,"Operator",e):c.call(a,"l10n","Operator",e)))+"</th>\n <th>"+b((g=f.l10n||a&&a.l10n,e={hash:{},data:d},g?g.call(a,"Total time",e):c.call(a,"l10n","Total time",e)))+"</th>\n <th>"+b((g=f.l10n||a&&a.l10n,e={hash:{},data:d},g?g.call(a,"Waiting time",e):c.call(a,"l10n","Waiting time",
e={hash:{},data:d},g?g.call(a,"visitors.table.head.lasttimeonsite",e):b.call(a,"l10n","visitors.table.head.lasttimeonsite",e)))+"</th>\n <th>"+c((g=f.l10n||a&&a.l10n,e={hash:{},data:d},g?g.call(a,"visitors.table.head.invited.by",e):b.call(a,"l10n","visitors.table.head.invited.by",e)))+"</th>\n <th>"+c((g=f.l10n||a&&a.l10n,e={hash:{},data:d},g?g.call(a,"visitors.table.head.invitationtime",e):b.call(a,"l10n","visitors.table.head.invitationtime",e)))+"</th>\n <th>"+c((g=f.l10n||a&&a.l10n,e= e)))+"</th>\n <th>"+b((g=f.l10n||a&&a.l10n,e={hash:{},data:d},g?g.call(a,"Misc",e):c.call(a,"l10n","Misc",e)))+'</th>\n</tr>\n</thead>\n<tbody id="threads-container">\n\n</tbody>\n</table>')})})();
{hash:{},data:d},g?g.call(a,"visitors.table.head.invitations",e):b.call(a,"l10n","visitors.table.head.invitations",e)))+"</th>\n <th>"+c((g=f.l10n||a&&a.l10n,e={hash:{},data:d},g?g.call(a,"visitors.table.head.etc",e):b.call(a,"l10n","visitors.table.head.etc",e)))+'</th>\n</tr>\n</thead>\n<tbody id="visitors-container">\n</tbody>\n</table>')})})();

View File

@ -1 +1 @@
<span class="agent-status-{{#if away}}away{{else}}online{{/if}} inline-block" title="{{#if away}}{{l10n "pending.status.away"}}{{else}}{{l10n "pending.status.online"}}{{/if}}"></span>{{name}}{{#unless isLast}},{{/unless}} <span class="agent-status-{{#if away}}away{{else}}online{{/if}} inline-block" title="{{#if away}}{{l10n "Away"}}{{else}}{{l10n "Up to date"}}{{/if}}"></span>{{name}}{{#unless isLast}},{{/unless}}

View File

@ -1 +1 @@
<td class="no-threads" colspan="8">{{l10n "clients.no_clients"}}</td> <td class="no-threads" colspan="8">{{l10n "The list of visitors waiting is empty"}}</td>

View File

@ -1 +1 @@
<td class="no-visitors" colspan="9">{{l10n "visitors.no_visitors"}}</td> <td class="no-visitors" colspan="9">{{l10n "There are no visitors ready to chat on your site at present time"}}</td>

View File

@ -1,20 +1,20 @@
<td class="visitor"> <td class="visitor">
<div><a href="javascript:void(0);" class="user-name open-dialog" title="{{#if canOpen}}{{l10n "pending.table.speak"}}{{else}}{{l10n "pending.table.view"}}{{/if}}">{{#if ban}}{{l10n "chat.client.spam.prefix"}}&nbsp;{{/if}}{{userName}}</a></div> <div><a href="javascript:void(0);" class="user-name open-dialog" title="{{#if canOpen}}{{l10n "Click to chat with the visitor"}}{{else}}{{l10n "Watch the chat"}}{{/if}}">{{#if ban}}{{l10n "[spam]"}}&nbsp;{{/if}}{{userName}}</a></div>
{{#if firstMessage}}<div class="first-message"><a href="javascript:void(0);" title="{{firstMessage}}">{{firstMessagePreview}}</a></div>{{/if}} {{#if firstMessage}}<div class="first-message"><a href="javascript:void(0);" title="{{firstMessage}}">{{firstMessagePreview}}</a></div>{{/if}}
</td> </td>
<td class="visitor"> <td class="visitor">
<div class="default-thread-controls inline-block"> <div class="default-thread-controls inline-block">
{{#if canOpen}} {{#if canOpen}}
<div class="control open-dialog open-control inline-block" title="{{l10n "pending.table.speak"}}"></div> <div class="control open-dialog open-control inline-block" title="{{l10n "Click to chat with the visitor"}}"></div>
{{/if}} {{/if}}
{{#if canView}} {{#if canView}}
<div class="control view-control inline-block" title="{{l10n "pending.table.view"}}"></div> <div class="control view-control inline-block" title="{{l10n "Watch the chat"}}"></div>
{{/if}} {{/if}}
{{#if tracked}} {{#if tracked}}
<div class="control track-control inline-block" title="{{l10n "pending.table.tracked"}}"></div> <div class="control track-control inline-block" title="{{l10n "Tracked visitor's path"}}"></div>
{{/if}} {{/if}}
{{#if canBan}} {{#if canBan}}
<div class="control ban-control inline-block" title="{{l10n "pending.table.ban"}}"></div> <div class="control ban-control inline-block" title="{{l10n "Ban this visitor"}}"></div>
{{/if}} {{/if}}
</div> </div>
<div class="thread-controls inline-block"></div> <div class="thread-controls inline-block"></div>

View File

@ -1 +1 @@
<div id="connstatus">{{message}}{{#if agent.away}}{{l10n "pending.status.away"}}{{else}}{{l10n "pending.status.online"}}{{/if}}</div><div id="connlinks"><a href="javascript:void(0);" id="change-status">{{#if agent.away}}{{l10n "pending.status.setonline"}}{{else}}{{l10n "pending.status.setaway"}}{{/if}}</a></div> <div id="connstatus">{{message}}{{#if agent.away}}{{l10n "Away"}}{{else}}{{l10n "Up to date"}}{{/if}}</div><div id="connlinks"><a href="javascript:void(0);" id="change-status">{{#if agent.away}}{{l10n "Set status as \"Available\""}}{{else}}{{l10n "Set status as \"Away\""}}{{/if}}</a></div>

View File

@ -1,14 +1,14 @@
<table class="awaiting" border="0"> <table class="awaiting" border="0">
<thead> <thead>
<tr> <tr>
<th class="first">{{l10n "pending.table.head.name"}}</th> <th class="first">{{l10n "Name"}}</th>
<th>{{l10n "pending.table.head.actions"}}</th> <th>{{l10n "Actions"}}</th>
<th>{{l10n "pending.table.head.contactid"}}</th> <th>{{l10n "Visitor's address"}}</th>
<th>{{l10n "pending.table.head.state"}}</th> <th>{{l10n "State"}}</th>
<th>{{l10n "pending.table.head.operator"}}</th> <th>{{l10n "Operator"}}</th>
<th>{{l10n "pending.table.head.total"}}</th> <th>{{l10n "Total time"}}</th>
<th>{{l10n "pending.table.head.waittime"}}</th> <th>{{l10n "Waiting time"}}</th>
<th>{{l10n "pending.table.head.etc"}}</th> <th>{{l10n "Misc"}}</th>
</tr> </tr>
</thead> </thead>
<tbody id="threads-container"> <tbody id="threads-container">

View File

@ -1,9 +1,9 @@
<td class="visitor"> <td class="visitor">
{{#unless invitationInfo}}<a href="javascript:void(0);" class="invite-link" title="{{l10n "pending.table.invite"}}">{{userName}}</a>{{else}}{{userName}}{{/unless}} {{#unless invitationInfo}}<a href="javascript:void(0);" class="invite-link" title="{{l10n "Invite to chat"}}">{{userName}}</a>{{else}}{{userName}}{{/unless}}
</td> </td>
<td class="visitor"> <td class="visitor">
<div class="default-visitor-controls inline-block"> <div class="default-visitor-controls inline-block">
<div class="control track-control inline-block" title="{{l10n "pending.table.tracked"}}"></div> <div class="control track-control inline-block" title="{{l10n "Tracked visitor's path"}}"></div>
</div> </div>
<div class="visitor-controls inline-block"></div> <div class="visitor-controls inline-block"></div>
</td> </td>

View File

@ -1,15 +1,15 @@
<table id="visitorslist" class="awaiting" border="0"> <table id="visitorslist" class="awaiting" border="0">
<thead> <thead>
<tr> <tr>
<th class="first">{{l10n "visitors.table.head.name"}}</th> <th class="first">{{l10n "Name"}}</th>
<th>{{l10n "visitors.table.head.actions"}}</th> <th>{{l10n "Actions"}}</th>
<th>{{l10n "visitors.table.head.contactid"}}</th> <th>{{l10n "Visitor's address"}}</th>
<th>{{l10n "visitors.table.head.firsttimeonsite"}}</th> <th>{{l10n "First seen"}}</th>
<th>{{l10n "visitors.table.head.lasttimeonsite"}}</th> <th>{{l10n "Last seen"}}</th>
<th>{{l10n "visitors.table.head.invited.by"}}</th> <th>{{l10n "Invited by"}}</th>
<th>{{l10n "visitors.table.head.invitationtime"}}</th> <th>{{l10n "Invitation time"}}</th>
<th>{{l10n "visitors.table.head.invitations"}}</th> <th>{{l10n "Invitations / Chats"}}</th>
<th>{{l10n "visitors.table.head.etc"}}</th> <th>{{l10n "Misc"}}</th>
</tr> </tr>
</thead> </thead>
<tbody id="visitors-container"> <tbody id="visitors-container">

View File

@ -1,7 +1,7 @@
{{#if errors}} {{#if errors}}
<div class="errinfo"> <div class="errinfo">
<img src="{{stylePath}}/images/icon_err.gif" width="40" height="40" border="0" alt="" class="left"/> <img src="{{stylePath}}/images/icon_err.gif" width="40" height="40" border="0" alt="" class="left"/>
<b>{{l10n "errors.header"}}</b><br/> <b>{{l10n "Correct the mistakes:"}}</b><br/>
<ul> <ul>
{{#each errors}} {{#each errors}}
<li class="error">{{{this}}}</li> <li class="error">{{{this}}}</li>

View File

@ -5,7 +5,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link rel="shortcut icon" href="{{stylePath}}/images/favicon.ico" type="image/x-icon"/> <link rel="shortcut icon" href="{{stylePath}}/images/favicon.ico" type="image/x-icon"/>
<title> <title>
{{title}} - {{l10n "app.title"}} {{title}} - {{l10n "Mibew Messenger"}}
</title> </title>
<link href="{{stylePath}}/css/default.css" rel="stylesheet" type="text/css" /> <link href="{{stylePath}}/css/default.css" rel="stylesheet" type="text/css" />
<!--[if lte IE 7]><link href="{{stylePath}}/css/default_ie.css" rel="stylesheet" type="text/css" /><![endif] --> <!--[if lte IE 7]><link href="{{stylePath}}/css/default_ie.css" rel="stylesheet" type="text/css" /><![endif] -->
@ -22,12 +22,12 @@
</div> </div>
{{#if operator}} {{#if operator}}
<div id="path"><p>{{l10n "menu.operator" operator}}</p></div> <div id="path"><p>{{l10n "You are {0}" operator}}</p></div>
{{else}} {{else}}
{{#if show_small_login}} {{#if show_small_login}}
<div id="loginsmallpane"> <div id="loginsmallpane">
<form name="smallLogin" method="post" action="{{mibewRoot}}/operator/login"> <form name="smallLogin" method="post" action="{{mibewRoot}}/operator/login">
{{l10n "page_login.login"}} {{l10n "Login:"}}
<input type="text" name="login" size="8" class="formauth"/> <input type="text" name="login" size="8" class="formauth"/>
<input type="password" name="password" size="8" class="formauth" autocomplete="off"/> <input type="password" name="password" size="8" class="formauth" autocomplete="off"/>
<input type="hidden" name="isRemember" value=""/> <input type="hidden" name="isRemember" value=""/>

View File

@ -1,7 +1,7 @@
<div id="sidebar"> <div id="sidebar">
<ul> <ul>
<li> <li>
<h2><b>{{l10n "lang.choose"}}</b></h2> <h2><b>{{l10n "Choose your language"}}</b></h2>
<ul class="locales"> <ul class="locales">
{{#each localeLinks}} {{#each localeLinks}}
<li {{#ifEqual @key ../currentLocale}} class="active"{{/ifEqual}}> <li {{#ifEqual @key ../currentLocale}} class="active"{{/ifEqual}}>

View File

@ -10,42 +10,42 @@
{{/if}} {{/if}}
{{#if showMenu}} {{#if showMenu}}
<li> <li>
<h2>{{l10n "right.main"}}</h2> <h2>{{l10n "Main"}}</h2>
<ul class="submenu"> <ul class="submenu">
<li{{#ifEqual menuid "main"}} class="active"{{/ifEqual}}><a href="{{mibewRoot}}/operator">{{l10n "topMenu.main"}}</a></li> <li{{#ifEqual menuid "main"}} class="active"{{/ifEqual}}><a href="{{mibewRoot}}/operator">{{l10n "Home"}}</a></li>
<li{{#ifEqual menuid "users"}} class="active"{{/ifEqual}}><a href="{{mibewRoot}}/operator/users">{{l10n "topMenu.users"}}</a> <span class="small">(<a class="inner" href="{{mibewRoot}}/operator/users?nomenu">{{l10n "topMenu.users.nomenu"}}</a>)</span></li> <li{{#ifEqual menuid "users"}} class="active"{{/ifEqual}}><a href="{{mibewRoot}}/operator/users">{{l10n "Visitors"}}</a> <span class="small">(<a class="inner" href="{{mibewRoot}}/operator/users?nomenu">{{l10n "without menu"}}</a>)</span></li>
<li{{#ifEqual menuid "history"}} class="active"{{/ifEqual}}><a href="{{mibewRoot}}/operator/history">{{l10n "page_analysis.search.title"}}</a></li> <li{{#ifEqual menuid "history"}} class="active"{{/ifEqual}}><a href="{{mibewRoot}}/operator/history">{{l10n "Chat history"}}</a></li>
{{#if showstat}} {{#if showstat}}
<li{{#ifEqual menuid "statistics"}} class="active"{{/ifEqual}}><a href="{{mibewRoot}}/operator/statistics">{{l10n "statistics.title"}}</a></li> <li{{#ifEqual menuid "statistics"}} class="active"{{/ifEqual}}><a href="{{mibewRoot}}/operator/statistics">{{l10n "Statistics"}}</a></li>
{{/if}} {{/if}}
{{#if showban}} {{#if showban}}
<li{{#ifEqual menuid "bans"}} class="active"{{/ifEqual}}><a href="{{mibewRoot}}/operator/ban">{{l10n "menu.blocked"}}</a></li> <li{{#ifEqual menuid "bans"}} class="active"{{/ifEqual}}><a href="{{mibewRoot}}/operator/ban">{{l10n "Blocked visitors"}}</a></li>
{{/if}} {{/if}}
</ul> </ul>
</li> </li>
<li> <li>
<h2>{{l10n "right.administration"}}</h2> <h2>{{l10n "Administration"}}</h2>
<ul class="submenu"> <ul class="submenu">
<li{{#ifEqual menuid "canned"}} class="active"{{/ifEqual}}><a href="{{mibewRoot}}/operator/canned-message">{{l10n "menu.canned"}}</a></li> <li{{#ifEqual menuid "canned"}} class="active"{{/ifEqual}}><a href="{{mibewRoot}}/operator/canned-message">{{l10n "Canned Messages"}}</a></li>
{{#if showadmin}} {{#if showadmin}}
<li{{#ifEqual menuid "getcode"}} class="active"{{/ifEqual}}><a href="{{mibewRoot}}/operator/button-code">{{l10n "leftMenu.client_gen_button"}}</a></li> <li{{#ifEqual menuid "getcode"}} class="active"{{/ifEqual}}><a href="{{mibewRoot}}/operator/button-code">{{l10n "Button code"}}</a></li>
<li{{#ifEqual menuid "operators"}} class="active"{{/ifEqual}}><a href="{{mibewRoot}}/operator/operator">{{l10n "leftMenu.client_agents"}}</a></li> <li{{#ifEqual menuid "operators"}} class="active"{{/ifEqual}}><a href="{{mibewRoot}}/operator/operator">{{l10n "Operators"}}</a></li>
<li{{#ifEqual menuid "groups"}} class="active"{{/ifEqual}}><a href="{{mibewRoot}}/operator/group">{{l10n "menu.groups"}}</a></li> <li{{#ifEqual menuid "groups"}} class="active"{{/ifEqual}}><a href="{{mibewRoot}}/operator/group">{{l10n "Groups"}}</a></li>
<li{{#ifEqual menuid "settings"}} class="active"{{/ifEqual}}><a href="{{mibewRoot}}/operator/settings">{{l10n "leftMenu.client_settings"}}</a></li> <li{{#ifEqual menuid "settings"}} class="active"{{/ifEqual}}><a href="{{mibewRoot}}/operator/settings">{{l10n "Settings"}}</a></li>
<li{{#ifEqual menuid "styles"}} class="active"{{/ifEqual}}><a href="{{mibewRoot}}/operator/style/page/preview">{{l10n "menu.styles"}}</a></li> <li{{#ifEqual menuid "styles"}} class="active"{{/ifEqual}}><a href="{{mibewRoot}}/operator/style/page/preview">{{l10n "Styles"}}</a></li>
<li{{#ifEqual menuid "translation"}} class="active"{{/ifEqual}}><a href="{{mibewRoot}}/operator/translation">{{l10n "menu.translate"}}</a></li> <li{{#ifEqual menuid "translation"}} class="active"{{/ifEqual}}><a href="{{mibewRoot}}/operator/translation">{{l10n "Localize"}}</a></li>
<li{{#ifEqual menuid "mail_templates"}} class="active"{{/ifEqual}}><a href="{{mibewRoot}}/operator/mail-template">{{l10n "menu.mail_templates"}}</a></li> <li{{#ifEqual menuid "mail_templates"}} class="active"{{/ifEqual}}><a href="{{mibewRoot}}/operator/mail-template">{{l10n "Mail templates"}}</a></li>
<li{{#ifEqual menuid "updates"}} class="active"{{/ifEqual}}><a href="{{mibewRoot}}/operator/updates">{{l10n "menu.updates"}}</a></li> <li{{#ifEqual menuid "updates"}} class="active"{{/ifEqual}}><a href="{{mibewRoot}}/operator/updates">{{l10n "Updates"}}</a></li>
{{/if}} {{/if}}
{{#if currentopid}} {{#if currentopid}}
<li{{#ifEqual menuid "profile"}} class="active"{{/ifEqual}}><a href="{{mibewRoot}}/operator/operator/{{currentopid}}/edit">{{l10n "menu.profile"}}</a></li> <li{{#ifEqual menuid "profile"}} class="active"{{/ifEqual}}><a href="{{mibewRoot}}/operator/operator/{{currentopid}}/edit">{{l10n "Profile"}}</a></li>
{{/if}} {{/if}}
</ul> </ul>
</li> </li>
<li> <li>
<h2>{{l10n "right.other"}}</h2> <h2>{{l10n "Other"}}</h2>
<ul class="submenu"> <ul class="submenu">
<li><a href="{{mibewRoot}}/operator/logout">{{l10n "topMenu.logoff"}}</a></li> <li><a href="{{mibewRoot}}/operator/logout">{{l10n "Exit"}}</a></li>
</ul> </ul>
</li> </li>
{{/if}} {{/if}}

View File

@ -1,7 +1,7 @@
{{#extends "_layout"}} {{#extends "_layout"}}
{{#override "content"}} {{#override "content"}}
{{#if saved}} {{#if saved}}
{{l10n "page_ban.sent" address}} {{l10n "Address {0} is blocked for a specified number of days." address}}
<script type="text/javascript"><!-- <script type="text/javascript"><!--
if(window.opener && window.opener.location) { if(window.opener && window.opener.location) {
@ -10,7 +10,7 @@
setTimeout( (function() { window.close(); }), 1500 ); setTimeout( (function() { window.close(); }), 1500 );
//--></script> //--></script>
{{else}} {{else}}
{{l10n "page_ban.intro"}} {{l10n "Here you can block malicious visitors that affect your work with spam messages."}}
<br/> <br/>
<br/> <br/>
@ -18,7 +18,7 @@
{{> _errors}} {{> _errors}}
{{#if thread}} {{#if thread}}
{{l10n "page_ban.thread" thread}}<br/> {{l10n "You opened this window for \"{0}\" thread. <i>Address</i> field is already filled. Select a number of days and click <i>Send</i>." thread}}<br/>
<br/> <br/>
{{/if}} {{/if}}
@ -37,34 +37,34 @@
<div class="forminner"> <div class="forminner">
<div class="fieldForm"> <div class="fieldForm">
<div class="field"> <div class="field">
<label for="address" class="flabel">{{l10n "form.field.address"}}<span class="required">*</span></label> <label for="address" class="flabel">{{l10n "Visitor's Address"}}<span class="required">*</span></label>
<div class="fvalue"> <div class="fvalue">
<input id="address" type="text" name="address" size="40" value="{{formaddress}}" class="formauth"/> <input id="address" type="text" name="address" size="40" value="{{formaddress}}" class="formauth"/>
</div> </div>
<label for="address" class="fdescr"> &mdash; {{l10n "form.field.address.description"}}</label> <label for="address" class="fdescr"> &mdash; {{l10n "Ex: 127.0.0.1 or example.com"}}</label>
<br clear="all"/> <br clear="all"/>
</div> </div>
<div class="field"> <div class="field">
<label for="days" class="flabel">{{l10n "form.field.ban_days"}}<span class="required">*</span></label> <label for="days" class="flabel">{{l10n "Days"}}<span class="required">*</span></label>
<div class="fvalue"> <div class="fvalue">
<input id="days" type="text" name="days" size="4" value="{{formdays}}" class="formauth"/> <input id="days" type="text" name="days" size="4" value="{{formdays}}" class="formauth"/>
</div> </div>
<label for="days" class="fdescr"> &mdash; {{l10n "form.field.ban_days.description"}}</label> <label for="days" class="fdescr"> &mdash; {{l10n "Numbers of days this address is blocked"}}</label>
<br clear="all"/> <br clear="all"/>
</div> </div>
<div class="field"> <div class="field">
<label for="comment" class="flabel">{{l10n "form.field.ban_comment"}}<span class="required">*</span></label> <label for="comment" class="flabel">{{l10n "Comment"}}<span class="required">*</span></label>
<div class="fvalue"> <div class="fvalue">
<input id="comment" type="text" name="comment" size="40" value="{{formcomment}}" class="formauth"/> <input id="comment" type="text" name="comment" size="40" value="{{formcomment}}" class="formauth"/>
</div> </div>
<label for="comment" class="fdescr"> &mdash; {{l10n "form.field.ban_comment.description"}}</label> <label for="comment" class="fdescr"> &mdash; {{l10n "Reason for block"}}</label>
<br clear="all"/> <br clear="all"/>
</div> </div>
<div class="fbutton"> <div class="fbutton">
<input type="submit" name="save" class="submit-bg-button save-button" value="{{l10n "button.save"}}"/> <input type="submit" name="save" class="submit-bg-button save-button" value="{{l10n "Save"}}"/>
</div> </div>
</div> </div>
</div> </div>
@ -75,7 +75,7 @@
</div> </div>
<div class="asterisk"> <div class="asterisk">
<span class="required">*</span> - {{l10n "common.asterisk_explanation"}} <span class="required">*</span> - {{l10n "mandatory fields"}}
</div> </div>
</form> </form>

Some files were not shown because too many files have changed in this diff Show More