diff --git a/public/assets/chat/chat.coffee b/public/assets/chat/chat.coffee
index b21622eba..798d39f4c 100644
--- a/public/assets/chat/chat.coffee
+++ b/public/assets/chat/chat.coffee
@@ -80,7 +80,9 @@ do($ = window.jQuery, window) ->
message = @el.find('.zammad-chat-input').val()
if message
- messageElement = @view('message') { message: message }
+ messageElement = @view('message')
+ message: message
+ from: 'customer'
@maybeAddTimestamp()
@@ -106,7 +108,9 @@ do($ = window.jQuery, window) ->
@lastAddedType = 'message--agent'
unread = document.hidden ? " zammad-chat-message--unread" : ""
- @el.find('.zammad-chat-body').append @view('message')({message: message})
+ @el.find('.zammad-chat-body').append @view('message')
+ message: message
+ from: 'agent'
@scrollToBottom()
toggle: =>
@@ -159,7 +163,7 @@ do($ = window.jQuery, window) ->
maybeAddTimestamp: ->
timestamp = Date.now()
- if !@lastTimestamp or timestamp - @lastTimestamp > @showTimeEveryXMinutes * 60000
+ if !@lastTimestamp or (timestamp - @lastTimestamp) > @showTimeEveryXMinutes * 60000
label = @T('Today')
time = new Date().toTimeString().substr 0,5
if @lastAddedType is 'timestamp'
@@ -181,7 +185,7 @@ do($ = window.jQuery, window) ->
time: time
addStatus: (label, time) ->
- @el.find('.zammad-chat-body').append( @view('status')
+ @el.find('.zammad-chat-body').append @view('status')
label: label
time: time
diff --git a/public/assets/chat/chat.js b/public/assets/chat/chat.js
index 0b717f8a6..3c194037d 100644
--- a/public/assets/chat/chat.js
+++ b/public/assets/chat/chat.js
@@ -49,6 +49,289 @@ window.zammadChatTemplates["chat"] = function (__obj) {
return __out.join('');
};
+var bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; };
+
+(function($, window) {
+ var ZammadChat;
+ ZammadChat = (function() {
+ ZammadChat.prototype.defaults = {
+ invitationPhrase: 'Chat with us!',
+ agentPhrase: '%%agent%% is helping you',
+ show: true,
+ target: $('body')
+ };
+
+ ZammadChat.prototype.isOpen = false;
+
+ ZammadChat.prototype.blinkOnlineInterval = null;
+
+ ZammadChat.prototype.stopBlinOnlineStateTimeout = null;
+
+ ZammadChat.prototype.showTimeEveryXMinutes = 1;
+
+ ZammadChat.prototype.lastTimestamp = null;
+
+ ZammadChat.prototype.lastAddedType = null;
+
+ ZammadChat.prototype.inputTimeout = null;
+
+ ZammadChat.prototype.isTyping = false;
+
+ ZammadChat.prototype.isOnline = true;
+
+ ZammadChat.prototype.strings = {
+ 'Online': 'Online',
+ 'Offline': 'Offline',
+ 'Connecting': 'Connecting',
+ 'Connection re-established': 'Connection re-established',
+ 'Today': 'Today'
+ };
+
+ ZammadChat.prototype.T = function(string) {
+ return this.strings[string];
+ };
+
+ ZammadChat.prototype.view = function(name) {
+ return window.zammadChatTemplates[name];
+ };
+
+ function ZammadChat(el, options) {
+ this.setAgentOnlineState = bind(this.setAgentOnlineState, this);
+ this.onConnectionEstablished = bind(this.onConnectionEstablished, this);
+ this.onConnectionReestablished = bind(this.onConnectionReestablished, this);
+ this.reconnect = bind(this.reconnect, this);
+ this.onAgentTypingEnd = bind(this.onAgentTypingEnd, this);
+ this.onAgentTypingStart = bind(this.onAgentTypingStart, this);
+ this.onCloseAnimationEnd = bind(this.onCloseAnimationEnd, this);
+ this.onOpenAnimationEnd = bind(this.onOpenAnimationEnd, this);
+ this.toggle = bind(this.toggle, this);
+ this.receiveMessage = bind(this.receiveMessage, this);
+ this.onSubmit = bind(this.onSubmit, this);
+ this.onTypingEnd = bind(this.onTypingEnd, this);
+ this.onInput = bind(this.onInput, this);
+ this.checkForEnter = bind(this.checkForEnter, this);
+ this.options = $.extend({}, this.defaults, options);
+ this.el = $(this.view('chat')());
+ this.options.target.append(this.el);
+ this.setAgentOnlineState(this.isOnline);
+ if (this.options.show) {
+ this.show();
+ }
+ this.el.find('.zammad-chat-header').click(this.toggle);
+ this.el.find('.zammad-chat-controls').on('submit', this.onSubmit);
+ this.el.find('.zammad-chat-input').on({
+ keydown: this.checkForEnter,
+ input: this.onInput
+ }).autoGrow({
+ extraLine: false
+ });
+ }
+
+ ZammadChat.prototype.checkForEnter = function(event) {
+ if (!event.shiftKey && event.keyCode === 13) {
+ event.preventDefault();
+ return this.sendMessage();
+ }
+ };
+
+ ZammadChat.prototype.onInput = function() {
+ this.el.find('.zammad-chat-message--unread').removeClass('zammad-chat-message--unread');
+ if (this.inputTimeout) {
+ clearTimeout(this.inputTimeout);
+ }
+ this.inputTimeout = setTimeout(this.onTypingEnd, 5000);
+ if (this.isTyping) {
+ return this.onTypingStart();
+ }
+ };
+
+ ZammadChat.prototype.onTypingStart = function() {
+ return this.isTyping = true;
+ };
+
+ ZammadChat.prototype.onTypingEnd = function() {
+ return this.isTyping = false;
+ };
+
+ ZammadChat.prototype.onSubmit = function(event) {
+ event.preventDefault();
+ return this.sendMessage();
+ };
+
+ ZammadChat.prototype.sendMessage = function() {
+ var message, messageElement;
+ message = this.el.find('.zammad-chat-input').val();
+ if (message) {
+ messageElement = this.view('message')({
+ message: message,
+ from: 'customer'
+ });
+ this.maybeAddTimestamp();
+ if (this.el.find('.zammad-chat-message--typing').size()) {
+ this.lastAddedType = 'typing-placeholder';
+ this.el.find('.zammad-chat-message--typing').before(messageElement);
+ } else {
+ this.lastAddedType = 'message--customer';
+ this.el.find('.zammad-chat-body').append(messageElement);
+ }
+ this.el.find('.zammad-chat-input').val('');
+ this.scrollToBottom();
+ return this.isTyping = false;
+ }
+ };
+
+ ZammadChat.prototype.receiveMessage = function(message) {
+ var ref, unread;
+ this.onAgentTypingEnd();
+ this.maybeAddTimestamp();
+ this.lastAddedType = 'message--agent';
+ unread = (ref = document.hidden) != null ? ref : {
+ " zammad-chat-message--unread": ""
+ };
+ this.el.find('.zammad-chat-body').append(this.view('message')({
+ message: message,
+ from: 'agent'
+ }));
+ return this.scrollToBottom();
+ };
+
+ ZammadChat.prototype.toggle = function() {
+ if (this.isOpen) {
+ return this.close();
+ } else {
+ return this.open();
+ }
+ };
+
+ ZammadChat.prototype.open = function() {
+ return this.el.addClass('zammad-chat-is-open').animate({
+ bottom: 0
+ }, 500, this.onOpenAnimationEnd);
+ };
+
+ ZammadChat.prototype.onOpenAnimationEnd = function() {
+ this.isOpen = true;
+ setTimeout(this.onConnectionEstablished, 1180);
+ setTimeout(this.onAgentTypingStart, 2000);
+ setTimeout(this.receiveMessage, 5000, "Hello! How can I help you?");
+ return this.connect();
+ };
+
+ ZammadChat.prototype.close = function() {
+ var remainerHeight;
+ remainerHeight = this.el.height() - this.el.find('.zammad-chat-header').outerHeight();
+ return this.el.animate({
+ bottom: -remainerHeight
+ }, 500, onCloseAnimationEnd);
+ };
+
+ ZammadChat.prototype.onCloseAnimationEnd = function() {
+ this.el.removeClass('zammad-chat-is-open');
+ this.disconnect();
+ return this.isOpen = false;
+ };
+
+ ZammadChat.prototype.hide = function() {
+ return this.el.removeClass('zammad-chat-is-visible');
+ };
+
+ ZammadChat.prototype.show = function() {
+ var remainerHeight;
+ this.el.addClass('zammad-chat-is-visible');
+ remainerHeight = this.el.height() - this.el.find('.zammad-chat-header').outerHeight();
+ return this.el.css('bottom', -remainerHeight);
+ };
+
+ ZammadChat.prototype.onAgentTypingStart = function() {
+ if (this.el.find('.zammad-chat-message--typing').size()) {
+ return;
+ }
+ this.maybeAddTimestamp();
+ this.el.find('.zammad-chat-body').append(this.view('typingIndicator')());
+ return this.scrollToBottom();
+ };
+
+ ZammadChat.prototype.onAgentTypingEnd = function() {
+ return this.el.find('.zammad-chat-message--typing').remove();
+ };
+
+ ZammadChat.prototype.maybeAddTimestamp = function() {
+ var label, time, timestamp;
+ timestamp = Date.now();
+ if (!this.lastTimestamp || (timestamp - this.lastTimestamp) > this.showTimeEveryXMinutes * 60000) {
+ label = this.T('Today');
+ time = new Date().toTimeString().substr(0, 5);
+ if (this.lastAddedType === 'timestamp') {
+ this.updateLastTimestamp(label, time);
+ return this.lastTimestamp = timestamp;
+ } else {
+ this.addStatus(label, time);
+ this.lastTimestamp = timestamp;
+ return this.lastAddedType = 'timestamp';
+ }
+ }
+ };
+
+ ZammadChat.prototype.updateLastTimestamp = function(label, time) {
+ return this.el.find('.zammad-chat-body').find('.zammad-chat-status').last().replaceWith(this.view('status')({
+ label: label,
+ time: time
+ }));
+ };
+
+ ZammadChat.prototype.addStatus = function(label, time) {
+ return this.el.find('.zammad-chat-body').append(this.view('status')({
+ label: label,
+ time: time
+ }));
+ };
+
+ ZammadChat.prototype.scrollToBottom = function() {
+ return this.el.find('.zammad-chat-body').scrollTop($('.zammad-chat-body').prop('scrollHeight'));
+ };
+
+ ZammadChat.prototype.connect = function() {};
+
+ ZammadChat.prototype.reconnect = function() {
+ this.lastAddedType = 'status';
+ this.el.find('.zammad-chat-agent-status').attr('data-status', 'connecting').text(this.T('Connecting'));
+ return this.addStatus(this.T('Connection lost'));
+ };
+
+ ZammadChat.prototype.onConnectionReestablished = function() {
+ this.lastAddedType = 'status';
+ this.el.find('.zammad-chat-agent-status').attr('data-status', 'online').text(this.T('Online'));
+ return this.addStatus(this.T('Connection re-established'));
+ };
+
+ ZammadChat.prototype.disconnect = function() {
+ this.el.find('.zammad-chat-loader').removeClass('zammad-chat-is-hidden');
+ this.el.find('.zammad-chat-welcome').removeClass('zammad-chat-is-hidden');
+ this.el.find('.zammad-chat-agent').addClass('zammad-chat-is-hidden');
+ return this.el.find('.zammad-chat-agent-status').addClass('zammad-chat-is-hidden');
+ };
+
+ ZammadChat.prototype.onConnectionEstablished = function() {
+ this.el.find('.zammad-chat-loader').addClass('zammad-chat-is-hidden');
+ this.el.find('.zammad-chat-welcome').addClass('zammad-chat-is-hidden');
+ this.el.find('.zammad-chat-agent').removeClass('zammad-chat-is-hidden');
+ this.el.find('.zammad-chat-agent-status').removeClass('zammad-chat-is-hidden');
+ return this.el.find('.zammad-chat-input').focus();
+ };
+
+ ZammadChat.prototype.setAgentOnlineState = function(state) {
+ this.isOnline = state;
+ return this.el.find('.zammad-chat-agent-status').toggleClass('zammad-chat-is-online', state).text(state ? this.T('Online') : this.T('Offline'));
+ };
+
+ return ZammadChat;
+
+ })();
+ return $(document).ready(function() {
+ return window.zammadChat = new ZammadChat();
+ });
+})(window.jQuery, window);
+
/*!
* ----------------------------------------------------------------------------
* "THE BEER-WARE LICENSE" (Revision 42):
@@ -168,9 +451,13 @@ window.zammadChatTemplates["message"] = function (__obj) {
}
(function() {
(function() {
- __out.push('
\n
');
+ __out.push('\n ');
+
+ __out.push(this.message);
__out.push(' \n
');
@@ -225,11 +512,11 @@ window.zammadChatTemplates["status"] = function (__obj) {
(function() {
__out.push('');
- __out.push(__sanitize(label));
+ __out.push(__sanitize(this.label));
__out.push(' ');
- __out.push(__sanitize(time));
+ __out.push(__sanitize(this.time));
__out.push('
');
diff --git a/public/assets/chat/chat.min.js b/public/assets/chat/chat.min.js
index 2a1a00e77..85739d6d4 100644
--- a/public/assets/chat/chat.min.js
+++ b/public/assets/chat/chat.min.js
@@ -1 +1 @@
-window.zammadChatTemplates||(window.zammadChatTemplates={}),window.zammadChatTemplates.chat=function(a){a||(a={});var e,n=[],s=a.safe,t=a.escape;return e=a.safe=function(a){if(a&&a.ecoSafe)return a;("undefined"==typeof a||null==a)&&(a="");var e=new String(a);return e.ecoSafe=!0,e},t||(t=a.escape=function(a){return(""+a).replace(/&/g,"&").replace(//g,">").replace(/"/g,""")}),function(){(function(){n.push('\n \n
\n \n \n \n \n \n Connecting \n
\n
\n
\n
')}).call(this)}.call(a),a.safe=s,a.escape=t,n.join("")},jQuery.fn.autoGrow=function(a){return this.each(function(){var e=jQuery.extend({extraLine:!0},a),n=function(a){return jQuery(a).after('
'),jQuery(a).next(".autogrow-textarea-mirror")[0]},s=function(a){c.innerHTML=String(a.value).replace(/&/g,"&").replace(/"/g,""").replace(/'/g,"'").replace(//g,">").replace(/ /g," ").replace(/\n/g," ")+(e.extraLine?". .":""),jQuery(a).height()!=jQuery(c).height()&&jQuery(a).height(jQuery(c).height())},t=function(){s(this)},c=n(this);c.style.display="none",c.style.wordWrap="break-word",c.style.whiteSpace="normal",c.style.padding=jQuery(this).css("paddingTop")+" "+jQuery(this).css("paddingRight")+" "+jQuery(this).css("paddingBottom")+" "+jQuery(this).css("paddingLeft"),c.style.width=jQuery(this).css("width"),c.style.fontFamily=jQuery(this).css("font-family"),c.style.fontSize=jQuery(this).css("font-size"),c.style.lineHeight=jQuery(this).css("line-height"),this.style.overflow="hidden",this.style.minHeight=this.rows+"em",this.onkeyup=t,s(this)})},window.zammadChatTemplates||(window.zammadChatTemplates={}),window.zammadChatTemplates.message=function(a){a||(a={});var e,n=[],s=a.safe,t=a.escape;return e=a.safe=function(a){if(a&&a.ecoSafe)return a;("undefined"==typeof a||null==a)&&(a="");var e=new String(a);return e.ecoSafe=!0,e},t||(t=a.escape=function(a){return(""+a).replace(/&/g,"&").replace(//g,">").replace(/"/g,""")}),function(){(function(){n.push('\n '),n.push(message),n.push(" \n
")}).call(this)}.call(a),a.safe=s,a.escape=t,n.join("")},window.zammadChatTemplates||(window.zammadChatTemplates={}),window.zammadChatTemplates.status=function(a){a||(a={});var e,n=[],s=function(a){return a&&a.ecoSafe?a:"undefined"!=typeof a&&null!=a?c(a):""},t=a.safe,c=a.escape;return e=a.safe=function(a){if(a&&a.ecoSafe)return a;("undefined"==typeof a||null==a)&&(a="");var e=new String(a);return e.ecoSafe=!0,e},c||(c=a.escape=function(a){return(""+a).replace(/&/g,"&").replace(//g,">").replace(/"/g,""")}),function(){(function(){n.push(''),n.push(s(label)),n.push(" "),n.push(s(time)),n.push("
")}).call(this)}.call(a),a.safe=t,a.escape=c,n.join("")},window.zammadChatTemplates||(window.zammadChatTemplates={}),window.zammadChatTemplates.typingIndicator=function(a){a||(a={});var e,n=[],s=a.safe,t=a.escape;return e=a.safe=function(a){if(a&&a.ecoSafe)return a;("undefined"==typeof a||null==a)&&(a="");var e=new String(a);return e.ecoSafe=!0,e},t||(t=a.escape=function(a){return(""+a).replace(/&/g,"&").replace(//g,">").replace(/"/g,""")}),function(){(function(){n.push('\n \n \n \n \n \n \n \n
')}).call(this)}.call(a),a.safe=s,a.escape=t,n.join("")};
\ No newline at end of file
+window.zammadChatTemplates||(window.zammadChatTemplates={}),window.zammadChatTemplates.chat=function(t){t||(t={});var e,a=[],n=t.safe,s=t.escape;return e=t.safe=function(t){if(t&&t.ecoSafe)return t;("undefined"==typeof t||null==t)&&(t="");var e=new String(t);return e.ecoSafe=!0,e},s||(s=t.escape=function(t){return(""+t).replace(/&/g,"&").replace(//g,">").replace(/"/g,""")}),function(){(function(){a.push('\n \n
\n \n \n \n \n \n Connecting \n
\n
\n
\n \n Send \n \n
')}).call(this)}.call(t),t.safe=n,t.escape=s,a.join("")};var bind=function(t,e){return function(){return t.apply(e,arguments)}};!function(t,e){var a;return a=function(){function a(e,a){this.setAgentOnlineState=bind(this.setAgentOnlineState,this),this.onConnectionEstablished=bind(this.onConnectionEstablished,this),this.onConnectionReestablished=bind(this.onConnectionReestablished,this),this.reconnect=bind(this.reconnect,this),this.onAgentTypingEnd=bind(this.onAgentTypingEnd,this),this.onAgentTypingStart=bind(this.onAgentTypingStart,this),this.onCloseAnimationEnd=bind(this.onCloseAnimationEnd,this),this.onOpenAnimationEnd=bind(this.onOpenAnimationEnd,this),this.toggle=bind(this.toggle,this),this.receiveMessage=bind(this.receiveMessage,this),this.onSubmit=bind(this.onSubmit,this),this.onTypingEnd=bind(this.onTypingEnd,this),this.onInput=bind(this.onInput,this),this.checkForEnter=bind(this.checkForEnter,this),this.options=t.extend({},this.defaults,a),this.el=t(this.view("chat")()),this.options.target.append(this.el),this.setAgentOnlineState(this.isOnline),this.options.show&&this.show(),this.el.find(".zammad-chat-header").click(this.toggle),this.el.find(".zammad-chat-controls").on("submit",this.onSubmit),this.el.find(".zammad-chat-input").on({keydown:this.checkForEnter,input:this.onInput}).autoGrow({extraLine:!1})}return a.prototype.defaults={invitationPhrase:"Chat with us!",agentPhrase:"%%agent%% is helping you",show:!0,target:t("body")},a.prototype.isOpen=!1,a.prototype.blinkOnlineInterval=null,a.prototype.stopBlinOnlineStateTimeout=null,a.prototype.showTimeEveryXMinutes=1,a.prototype.lastTimestamp=null,a.prototype.lastAddedType=null,a.prototype.inputTimeout=null,a.prototype.isTyping=!1,a.prototype.isOnline=!0,a.prototype.strings={Online:"Online",Offline:"Offline",Connecting:"Connecting","Connection re-established":"Connection re-established",Today:"Today"},a.prototype.T=function(t){return this.strings[t]},a.prototype.view=function(t){return e.zammadChatTemplates[t]},a.prototype.checkForEnter=function(t){return t.shiftKey||13!==t.keyCode?void 0:(t.preventDefault(),this.sendMessage())},a.prototype.onInput=function(){return this.el.find(".zammad-chat-message--unread").removeClass("zammad-chat-message--unread"),this.inputTimeout&&clearTimeout(this.inputTimeout),this.inputTimeout=setTimeout(this.onTypingEnd,5e3),this.isTyping?this.onTypingStart():void 0},a.prototype.onTypingStart=function(){return this.isTyping=!0},a.prototype.onTypingEnd=function(){return this.isTyping=!1},a.prototype.onSubmit=function(t){return t.preventDefault(),this.sendMessage()},a.prototype.sendMessage=function(){var t,e;return t=this.el.find(".zammad-chat-input").val(),t?(e=this.view("message")({message:t,from:"customer"}),this.maybeAddTimestamp(),this.el.find(".zammad-chat-message--typing").size()?(this.lastAddedType="typing-placeholder",this.el.find(".zammad-chat-message--typing").before(e)):(this.lastAddedType="message--customer",this.el.find(".zammad-chat-body").append(e)),this.el.find(".zammad-chat-input").val(""),this.scrollToBottom(),this.isTyping=!1):void 0},a.prototype.receiveMessage=function(t){var e,a;return this.onAgentTypingEnd(),this.maybeAddTimestamp(),this.lastAddedType="message--agent",a=null!=(e=document.hidden)?e:{" zammad-chat-message--unread":""},this.el.find(".zammad-chat-body").append(this.view("message")({message:t,from:"agent"})),this.scrollToBottom()},a.prototype.toggle=function(){return this.isOpen?this.close():this.open()},a.prototype.open=function(){return this.el.addClass("zammad-chat-is-open").animate({bottom:0},500,this.onOpenAnimationEnd)},a.prototype.onOpenAnimationEnd=function(){return this.isOpen=!0,setTimeout(this.onConnectionEstablished,1180),setTimeout(this.onAgentTypingStart,2e3),setTimeout(this.receiveMessage,5e3,"Hello! How can I help you?"),this.connect()},a.prototype.close=function(){var t;return t=this.el.height()-this.el.find(".zammad-chat-header").outerHeight(),this.el.animate({bottom:-t},500,onCloseAnimationEnd)},a.prototype.onCloseAnimationEnd=function(){return this.el.removeClass("zammad-chat-is-open"),this.disconnect(),this.isOpen=!1},a.prototype.hide=function(){return this.el.removeClass("zammad-chat-is-visible")},a.prototype.show=function(){var t;return this.el.addClass("zammad-chat-is-visible"),t=this.el.height()-this.el.find(".zammad-chat-header").outerHeight(),this.el.css("bottom",-t)},a.prototype.onAgentTypingStart=function(){return this.el.find(".zammad-chat-message--typing").size()?void 0:(this.maybeAddTimestamp(),this.el.find(".zammad-chat-body").append(this.view("typingIndicator")()),this.scrollToBottom())},a.prototype.onAgentTypingEnd=function(){return this.el.find(".zammad-chat-message--typing").remove()},a.prototype.maybeAddTimestamp=function(){var t,e,a;return a=Date.now(),!this.lastTimestamp||a-this.lastTimestamp>6e4*this.showTimeEveryXMinutes?(t=this.T("Today"),e=(new Date).toTimeString().substr(0,5),"timestamp"===this.lastAddedType?(this.updateLastTimestamp(t,e),this.lastTimestamp=a):(this.addStatus(t,e),this.lastTimestamp=a,this.lastAddedType="timestamp")):void 0},a.prototype.updateLastTimestamp=function(t,e){return this.el.find(".zammad-chat-body").find(".zammad-chat-status").last().replaceWith(this.view("status")({label:t,time:e}))},a.prototype.addStatus=function(t,e){return this.el.find(".zammad-chat-body").append(this.view("status")({label:t,time:e}))},a.prototype.scrollToBottom=function(){return this.el.find(".zammad-chat-body").scrollTop(t(".zammad-chat-body").prop("scrollHeight"))},a.prototype.connect=function(){},a.prototype.reconnect=function(){return this.lastAddedType="status",this.el.find(".zammad-chat-agent-status").attr("data-status","connecting").text(this.T("Connecting")),this.addStatus(this.T("Connection lost"))},a.prototype.onConnectionReestablished=function(){return this.lastAddedType="status",this.el.find(".zammad-chat-agent-status").attr("data-status","online").text(this.T("Online")),this.addStatus(this.T("Connection re-established"))},a.prototype.disconnect=function(){return this.el.find(".zammad-chat-loader").removeClass("zammad-chat-is-hidden"),this.el.find(".zammad-chat-welcome").removeClass("zammad-chat-is-hidden"),this.el.find(".zammad-chat-agent").addClass("zammad-chat-is-hidden"),this.el.find(".zammad-chat-agent-status").addClass("zammad-chat-is-hidden")},a.prototype.onConnectionEstablished=function(){return this.el.find(".zammad-chat-loader").addClass("zammad-chat-is-hidden"),this.el.find(".zammad-chat-welcome").addClass("zammad-chat-is-hidden"),this.el.find(".zammad-chat-agent").removeClass("zammad-chat-is-hidden"),this.el.find(".zammad-chat-agent-status").removeClass("zammad-chat-is-hidden"),this.el.find(".zammad-chat-input").focus()},a.prototype.setAgentOnlineState=function(t){return this.isOnline=t,this.el.find(".zammad-chat-agent-status").toggleClass("zammad-chat-is-online",t).text(t?this.T("Online"):this.T("Offline"))},a}(),t(document).ready(function(){return e.zammadChat=new a})}(window.jQuery,window),jQuery.fn.autoGrow=function(t){return this.each(function(){var e=jQuery.extend({extraLine:!0},t),a=function(t){return jQuery(t).after('
'),jQuery(t).next(".autogrow-textarea-mirror")[0]},n=function(t){i.innerHTML=String(t.value).replace(/&/g,"&").replace(/"/g,""").replace(/'/g,"'").replace(//g,">").replace(/ /g," ").replace(/\n/g," ")+(e.extraLine?". .":""),jQuery(t).height()!=jQuery(i).height()&&jQuery(t).height(jQuery(i).height())},s=function(){n(this)},i=a(this);i.style.display="none",i.style.wordWrap="break-word",i.style.whiteSpace="normal",i.style.padding=jQuery(this).css("paddingTop")+" "+jQuery(this).css("paddingRight")+" "+jQuery(this).css("paddingBottom")+" "+jQuery(this).css("paddingLeft"),i.style.width=jQuery(this).css("width"),i.style.fontFamily=jQuery(this).css("font-family"),i.style.fontSize=jQuery(this).css("font-size"),i.style.lineHeight=jQuery(this).css("line-height"),this.style.overflow="hidden",this.style.minHeight=this.rows+"em",this.onkeyup=s,n(this)})},window.zammadChatTemplates||(window.zammadChatTemplates={}),window.zammadChatTemplates.message=function(t){t||(t={});var e,a=[],n=function(t){return t&&t.ecoSafe?t:"undefined"!=typeof t&&null!=t?i(t):""},s=t.safe,i=t.escape;return e=t.safe=function(t){if(t&&t.ecoSafe)return t;("undefined"==typeof t||null==t)&&(t="");var e=new String(t);return e.ecoSafe=!0,e},i||(i=t.escape=function(t){return(""+t).replace(/&/g,"&").replace(//g,">").replace(/"/g,""")}),function(){(function(){a.push('\n '),a.push(this.message),a.push(" \n
")}).call(this)}.call(t),t.safe=s,t.escape=i,a.join("")},window.zammadChatTemplates||(window.zammadChatTemplates={}),window.zammadChatTemplates.status=function(t){t||(t={});var e,a=[],n=function(t){return t&&t.ecoSafe?t:"undefined"!=typeof t&&null!=t?i(t):""},s=t.safe,i=t.escape;return e=t.safe=function(t){if(t&&t.ecoSafe)return t;("undefined"==typeof t||null==t)&&(t="");var e=new String(t);return e.ecoSafe=!0,e},i||(i=t.escape=function(t){return(""+t).replace(/&/g,"&").replace(//g,">").replace(/"/g,""")}),function(){(function(){a.push(''),a.push(n(this.label)),a.push(" "),a.push(n(this.time)),a.push("
")}).call(this)}.call(t),t.safe=s,t.escape=i,a.join("")},window.zammadChatTemplates||(window.zammadChatTemplates={}),window.zammadChatTemplates.typingIndicator=function(t){t||(t={});var e,a=[],n=t.safe,s=t.escape;return e=t.safe=function(t){if(t&&t.ecoSafe)return t;("undefined"==typeof t||null==t)&&(t="");var e=new String(t);return e.ecoSafe=!0,e},s||(s=t.escape=function(t){return(""+t).replace(/&/g,"&").replace(//g,">").replace(/"/g,""")}),function(){(function(){a.push('\n \n \n \n \n \n \n \n
')}).call(this)}.call(t),t.safe=n,t.escape=s,a.join("")};
\ No newline at end of file
diff --git a/public/assets/chat/views/message.eco b/public/assets/chat/views/message.eco
index 3f65f9f9a..4576122ca 100644
--- a/public/assets/chat/views/message.eco
+++ b/public/assets/chat/views/message.eco
@@ -1,3 +1,3 @@
-
-
<%- message %>
+
+ <%- @message %>
\ No newline at end of file
diff --git a/public/assets/chat/views/status.eco b/public/assets/chat/views/status.eco
index e713e9814..d0b4caaf6 100644
--- a/public/assets/chat/views/status.eco
+++ b/public/assets/chat/views/status.eco
@@ -1 +1 @@
-
<%= label %> <%= time %>
\ No newline at end of file
+
<%= @label %> <%= @time %>
\ No newline at end of file