From 45219464e17ef701cb791a5748c0722e9590a0c8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Bauer?= Date: Sun, 25 Jun 2017 12:25:56 +0200 Subject: [PATCH 001/144] added elasticsearch dependency to packages --- .pkgr.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.pkgr.yml b/.pkgr.yml index 85265c521..652c94518 100644 --- a/.pkgr.yml +++ b/.pkgr.yml @@ -5,19 +5,23 @@ notifications: false targets: centos-7: dependencies: + - elasticsearch - nginx - postgresql-server - which debian-8: dependencies: + - elasticsearch - nginx|apache2 - postgresql|mysql-server|mariadb-server|sqlite ubuntu-16.04: dependencies: + - elasticsearch - nginx|apache2 - postgresql|mysql-server|mariadb-server|sqlite sles-12: dependencies: + - elasticsearch - nginx - postgresql-server before: From 84ed6f6c222991c021c64202315f5bcd8bcbd60e Mon Sep 17 00:00:00 2001 From: Martin Edenhofer Date: Mon, 3 Jul 2017 14:12:42 +0200 Subject: [PATCH 002/144] Fixed issue #1220 - Zammad Chat widget not working with jquery 3. --- public/assets/chat/chat.coffee | 4 +- public/assets/chat/chat.js | 126 ++++++++++++++++----------------- public/assets/chat/chat.min.js | 2 +- 3 files changed, 66 insertions(+), 66 deletions(-) diff --git a/public/assets/chat/chat.coffee b/public/assets/chat/chat.coffee index 94a5b00ef..f9a7d216d 100644 --- a/public/assets/chat/chat.coffee +++ b/public/assets/chat/chat.coffee @@ -536,7 +536,7 @@ do($ = window.jQuery, window) -> @maybeAddTimestamp() # add message before message typing loader - if @el.find('.zammad-chat-message--typing').size() + if @el.find('.zammad-chat-message--typing').get(0) @lastAddedType = 'typing-placeholder' @el.find('.zammad-chat-message--typing').before messageElement else @@ -725,7 +725,7 @@ do($ = window.jQuery, window) -> @stopTypingId = setTimeout(@onAgentTypingEnd, 3000) # never display two typing indicators - return if @el.find('.zammad-chat-message--typing').size() + return if @el.find('.zammad-chat-message--typing').get(0) @maybeAddTimestamp() diff --git a/public/assets/chat/chat.js b/public/assets/chat/chat.js index 480f5a78d..3bdb1803c 100644 --- a/public/assets/chat/chat.js +++ b/public/assets/chat/chat.js @@ -1,64 +1,3 @@ -if (!window.zammadChatTemplates) { - window.zammadChatTemplates = {}; -} -window.zammadChatTemplates["agent"] = function (__obj) { - if (!__obj) __obj = {}; - var __out = [], __capture = function(callback) { - var out = __out, result; - __out = []; - callback.call(this); - result = __out.join(''); - __out = out; - return __safe(result); - }, __sanitize = function(value) { - if (value && value.ecoSafe) { - return value; - } else if (typeof value !== 'undefined' && value != null) { - return __escape(value); - } else { - return ''; - } - }, __safe, __objSafe = __obj.safe, __escape = __obj.escape; - __safe = __obj.safe = function(value) { - if (value && value.ecoSafe) { - return value; - } else { - if (!(typeof value !== 'undefined' && value != null)) value = ''; - var result = new String(value); - result.ecoSafe = true; - return result; - } - }; - if (!__escape) { - __escape = __obj.escape = function(value) { - return ('' + value) - .replace(/&/g, '&') - .replace(//g, '>') - .replace(/"/g, '"'); - }; - } - (function() { - (function() { - if (this.agent.avatar) { - __out.push('\n\n'); - } - - __out.push('\n\n '); - - __out.push(__sanitize(this.agent.name)); - - __out.push('\n'); - - }).call(this); - - }).call(__obj); - __obj.safe = __objSafe, __obj.escape = __escape; - return __out.join(''); -}; - var bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; }, slice = [].slice, extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }, @@ -823,7 +762,7 @@ var bind = function(fn, me){ return function(){ return fn.apply(me, arguments); unreadClass: '' }); this.maybeAddTimestamp(); - if (this.el.find('.zammad-chat-message--typing').size()) { + if (this.el.find('.zammad-chat-message--typing').get(0)) { this.lastAddedType = 'typing-placeholder'; this.el.find('.zammad-chat-message--typing').before(messageElement); } else { @@ -1022,7 +961,7 @@ var bind = function(fn, me){ return function(){ return fn.apply(me, arguments); clearTimeout(this.stopTypingId); } this.stopTypingId = setTimeout(this.onAgentTypingEnd, 3000); - if (this.el.find('.zammad-chat-message--typing').size()) { + if (this.el.find('.zammad-chat-message--typing').get(0)) { return; } this.maybeAddTimestamp(); @@ -1395,6 +1334,67 @@ var bind = function(fn, me){ return function(){ return fn.apply(me, arguments); return window.ZammadChat = ZammadChat; })(window.jQuery, window); +if (!window.zammadChatTemplates) { + window.zammadChatTemplates = {}; +} +window.zammadChatTemplates["agent"] = function (__obj) { + if (!__obj) __obj = {}; + var __out = [], __capture = function(callback) { + var out = __out, result; + __out = []; + callback.call(this); + result = __out.join(''); + __out = out; + return __safe(result); + }, __sanitize = function(value) { + if (value && value.ecoSafe) { + return value; + } else if (typeof value !== 'undefined' && value != null) { + return __escape(value); + } else { + return ''; + } + }, __safe, __objSafe = __obj.safe, __escape = __obj.escape; + __safe = __obj.safe = function(value) { + if (value && value.ecoSafe) { + return value; + } else { + if (!(typeof value !== 'undefined' && value != null)) value = ''; + var result = new String(value); + result.ecoSafe = true; + return result; + } + }; + if (!__escape) { + __escape = __obj.escape = function(value) { + return ('' + value) + .replace(/&/g, '&') + .replace(//g, '>') + .replace(/"/g, '"'); + }; + } + (function() { + (function() { + if (this.agent.avatar) { + __out.push('\n\n'); + } + + __out.push('\n\n '); + + __out.push(__sanitize(this.agent.name)); + + __out.push('\n'); + + }).call(this); + + }).call(__obj); + __obj.safe = __objSafe, __obj.escape = __escape; + return __out.join(''); +}; + /*! * ---------------------------------------------------------------------------- * "THE BEER-WARE LICENSE" (Revision 42): diff --git a/public/assets/chat/chat.min.js b/public/assets/chat/chat.min.js index eda8bf4bc..29472bc59 100644 --- a/public/assets/chat/chat.min.js +++ b/public/assets/chat/chat.min.js @@ -1,2 +1,2 @@ -window.zammadChatTemplates||(window.zammadChatTemplates={}),window.zammadChatTemplates.agent=function(t){t||(t={});var e,s=[],n=function(t){return t&&t.ecoSafe?t:"undefined"!=typeof t&&null!=t?o(t):""},i=t.safe,o=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},o||(o=t.escape=function(t){return(""+t).replace(/&/g,"&").replace(//g,">").replace(/"/g,""")}),function(){(function(){this.agent.avatar&&(s.push('\n\n')),s.push('\n\n '),s.push(n(this.agent.name)),s.push("\n")}).call(this)}.call(t),t.safe=i,t.escape=o,s.join("")};var bind=function(t,e){return function(){return t.apply(e,arguments)}},slice=[].slice,extend=function(t,e){function s(){this.constructor=t}for(var n in e)hasProp.call(e,n)&&(t[n]=e[n]);return s.prototype=e.prototype,t.prototype=new s,t.__super__=e.prototype,t},hasProp={}.hasOwnProperty;!function(t,e){var s,n,i,o,a,r,h,l,d;return d=document.getElementsByTagName("script"),r=d[d.length-1],h=r.src.match(".*://([^:/]*).*")[1],l=r.src.match("(.*)://[^:/]*.*")[1],s=function(){function e(e){this.options=t.extend({},this.defaults,e),this.log=new i({debug:this.options.debug,logPrefix:this.options.logPrefix||this.logPrefix})}return e.prototype.defaults={debug:!1},e}(),i=function(){function e(e){this.log=bind(this.log,this),this.error=bind(this.error,this),this.notice=bind(this.notice,this),this.debug=bind(this.debug,this),this.options=t.extend({},this.defaults,e)}return e.prototype.defaults={debug:!1},e.prototype.debug=function(){var t;return t=1<=arguments.length?slice.call(arguments,0):[],this.options.debug?this.log("debug",t):void 0},e.prototype.notice=function(){var t;return t=1<=arguments.length?slice.call(arguments,0):[],this.log("notice",t)},e.prototype.error=function(){var t;return t=1<=arguments.length?slice.call(arguments,0):[],this.log("error",t)},e.prototype.log=function(e,s){var n,i,o,a;if(s.unshift("||"),s.unshift(e),s.unshift(this.options.logPrefix),console.log.apply(console,s),this.options.debug){for(a="",n=0,o=s.length;o>n;n++)i=s[n],a+=" ",a+="object"==typeof i?JSON.stringify(i):i&&i.toString?i.toString():i;return t(".js-chatLogDisplay").prepend("
"+a+"
")}},e}(),o=function(t){function e(t){this.stop=bind(this.stop,this),this.start=bind(this.start,this),e.__super__.constructor.call(this,t)}return extend(e,t),e.prototype.timeoutStartedAt=null,e.prototype.logPrefix="timeout",e.prototype.defaults={debug:!1,timeout:4,timeoutIntervallCheck:.5},e.prototype.start=function(){var t,e;return this.stop(),e=new Date,t=function(t){return function(){var s;return s=new Date-new Date(e.getTime()+1e3*t.options.timeout*60),t.log.debug("Timeout check for "+t.options.timeout+" minutes (left "+s/1e3+" sec.)"),0>s?void 0:(t.stop(),t.options.callback())}}(this),this.log.debug("Start timeout in "+this.options.timeout+" minutes"),this.intervallId=setInterval(t,1e3*this.options.timeoutIntervallCheck*60)},e.prototype.stop=function(){return this.intervallId?(this.log.debug("Stop timeout of "+this.options.timeout+" minutes"),clearInterval(this.intervallId)):void 0},e}(s),n=function(t){function s(t){this.ping=bind(this.ping,this),this.send=bind(this.send,this),this.reconnect=bind(this.reconnect,this),this.close=bind(this.close,this),this.connect=bind(this.connect,this),this.set=bind(this.set,this),s.__super__.constructor.call(this,t)}return extend(s,t),s.prototype.logPrefix="io",s.prototype.set=function(t){var e,s,n;s=[];for(e in t)n=t[e],s.push(this.options[e]=n);return s},s.prototype.connect=function(){return this.log.debug("Connecting to "+this.options.host),this.ws=new e.WebSocket(""+this.options.host),this.ws.onopen=function(t){return function(e){return t.log.debug("onOpen",e),t.options.onOpen(e),t.ping()}}(this),this.ws.onmessage=function(t){return function(e){var s,n,i,o;for(o=JSON.parse(e.data),t.log.debug("onMessage",e.data),s=0,n=o.length;n>s;s++)i=o[s],"pong"===i.event&&t.ping();return t.options.onMessage?t.options.onMessage(o):void 0}}(this),this.ws.onclose=function(t){return function(e){if(t.log.debug("close websocket connection",e),t.pingDelayId&&clearTimeout(t.pingDelayId),t.manualClose){if(t.log.debug("manual close, onClose callback"),t.manualClose=!1,t.options.onClose)return t.options.onClose(e)}else if(t.log.debug("error close, onError callback"),t.options.onError)return t.options.onError("Connection lost...")}}(this),this.ws.onerror=function(t){return function(e){return t.log.debug("onError",e),t.options.onError?t.options.onError(e):void 0}}(this)},s.prototype.close=function(){return this.log.debug("close websocket manually"),this.manualClose=!0,this.ws.close()},s.prototype.reconnect=function(){return this.log.debug("reconnect"),this.close(),this.connect()},s.prototype.send=function(t,e){var s;return null==e&&(e={}),this.log.debug("send",t,e),s=JSON.stringify({event:t,data:e}),this.ws.send(s)},s.prototype.ping=function(){var t;return t=function(t){return function(){return t.send("ping")}}(this),this.pingDelayId=setTimeout(t,29e3)},s}(s),a=function(s){function i(s){return this.startTimeoutObservers=bind(this.startTimeoutObservers,this),this.onCssLoaded=bind(this.onCssLoaded,this),this.setAgentOnlineState=bind(this.setAgentOnlineState,this),this.onConnectionEstablished=bind(this.onConnectionEstablished,this),this.setSessionId=bind(this.setSessionId,this),this.onConnectionReestablished=bind(this.onConnectionReestablished,this),this.reconnect=bind(this.reconnect,this),this.destroy=bind(this.destroy,this),this.onScrollHintClick=bind(this.onScrollHintClick,this),this.detectScrolledtoBottom=bind(this.detectScrolledtoBottom,this),this.onLeaveTemporary=bind(this.onLeaveTemporary,this),this.onAgentTypingEnd=bind(this.onAgentTypingEnd,this),this.onAgentTypingStart=bind(this.onAgentTypingStart,this),this.onQueue=bind(this.onQueue,this),this.onQueueScreen=bind(this.onQueueScreen,this),this.onWebSocketClose=bind(this.onWebSocketClose,this),this.onCloseAnimationEnd=bind(this.onCloseAnimationEnd,this),this.close=bind(this.close,this),this.toggle=bind(this.toggle,this),this.sessionClose=bind(this.sessionClose,this),this.onOpenAnimationEnd=bind(this.onOpenAnimationEnd,this),this.open=bind(this.open,this),this.renderMessage=bind(this.renderMessage,this),this.receiveMessage=bind(this.receiveMessage,this),this.onSubmit=bind(this.onSubmit,this),this.onFocus=bind(this.onFocus,this),this.onInput=bind(this.onInput,this),this.onReopenSession=bind(this.onReopenSession,this),this.onError=bind(this.onError,this),this.onWebSocketMessage=bind(this.onWebSocketMessage,this),this.send=bind(this.send,this),this.checkForEnter=bind(this.checkForEnter,this),this.render=bind(this.render,this),this.view=bind(this.view,this),this.T=bind(this.T,this),this.options=t.extend({},this.defaults,s),i.__super__.constructor.call(this,this.options),this.isFullscreen=e.matchMedia&&e.matchMedia("(max-width: 768px)").matches,this.scrollRoot=t(this.getScrollRoot()),t?e.WebSocket&&sessionStorage?this.options.chatId?(this.options.lang||(this.options.lang=t("html").attr("lang")),this.options.lang&&(this.translations[this.options.lang]||(this.log.debug("lang: No "+this.options.lang+" found, try first two letters"),this.options.lang=this.options.lang.replace(/-.+?$/,"")),this.log.debug("lang: "+this.options.lang)),this.options.host||this.detectHost(),this.loadCss(),this.io=new n(this.options),this.io.set({onOpen:this.render,onClose:this.onWebSocketClose,onMessage:this.onWebSocketMessage,onError:this.onError}),void this.io.connect()):(this.state="unsupported",void this.log.error("Chat: need chatId as option!")):(this.state="unsupported",void this.log.notice("Chat: Browser not supported!")):(this.state="unsupported",void this.log.notice("Chat: no jquery found!"))}return extend(i,s),i.prototype.defaults={chatId:void 0,show:!0,target:t("body"),host:"",debug:!1,flat:!1,lang:void 0,cssAutoload:!0,cssUrl:void 0,fontSize:void 0,buttonClass:"open-zammad-chat",inactiveClass:"is-inactive",title:"Chat with us!",scrollHint:"Scrolle nach unten um neue Nachrichten zu sehen",idleTimeout:6,idleTimeoutIntervallCheck:.5,inactiveTimeout:8,inactiveTimeoutIntervallCheck:.5,waitingListTimeout:4,waitingListTimeoutIntervallCheck:.5},i.prototype.logPrefix="chat",i.prototype._messageCount=0,i.prototype.isOpen=!1,i.prototype.blinkOnlineInterval=null,i.prototype.stopBlinOnlineStateTimeout=null,i.prototype.showTimeEveryXMinutes=2,i.prototype.lastTimestamp=null,i.prototype.lastAddedType=null,i.prototype.inputTimeout=null,i.prototype.isTyping=!1,i.prototype.state="offline",i.prototype.initialQueueDelay=1e4,i.prototype.translations={de:{"Chat with us!":"Chatte mit uns!","Scroll down to see new messages":"Scrolle nach unten um neue Nachrichten zu sehen",Online:"Online",Online:"Online",Offline:"Offline",Connecting:"Verbinden","Connection re-established":"Verbindung wiederhergestellt",Today:"Heute",Send:"Senden","Compose your message...":"Ihre Nachricht...","All colleagues are busy.":"Alle Kollegen sind belegt.","You are on waiting list position %s.":"Sie sind in der Warteliste an der Position %s.","Start new conversation":"Neue Konversation starten","Since you didn't respond in the last %s minutes your conversation with %s got closed.":"Da Sie in den letzten %s Minuten nichts geschrieben haben wurde Ihre Konversation mit %s geschlossen.","Since you didn't respond in the last %s minutes your conversation got closed.":"Da Sie in den letzten %s Minuten nichts geschrieben haben wurde Ihre Konversation geschlossen.","We are sorry, it takes longer as expected to get an empty slot. Please try again later or send us an email. Thank you!":"Es tut uns leid, es dauert länger als erwartet, um einen freien Platz zu erhalten. Bitte versuchen Sie es zu einem späteren Zeitpunkt noch einmal oder schicken Sie uns eine E-Mail. Vielen Dank!"},fr:{"Chat with us!":"Chattez avec nous!","Scroll down to see new messages":"Faites défiler pour lire les nouveaux messages",Online:"En-ligne",Online:"En-ligne",Offline:"Hors-ligne",Connecting:"Connexion en cours","Connection re-established":"Connexion rétablie",Today:"Aujourdhui",Send:"Envoyer","Compose your message...":"Composez votre message...","All colleagues are busy.":"Tous les collègues sont actuellement occupés.","You are on waiting list position %s.":"Vous êtes actuellement en %s position dans la file d'attente.","Start new conversation":"Démarrer une nouvelle conversation","Since you didn't respond in the last %s minutes your conversation with %s got closed.":"Si vous ne répondez pas dans les %s minutes, votre conversation avec %s va être fermée.","Since you didn't respond in the last %s minutes your conversation got closed.":"Si vous ne répondez pas dans les %s minutes, votre conversation va être fermée.","We are sorry, it takes longer as expected to get an empty slot. Please try again later or send us an email. Thank you!":"Nous sommes désolés, il faut plus de temps que prévu pour obtenir un emplacement vide. Veuillez réessayer ultérieurement ou nous envoyer un courriel. Je vous remercie!"},"zh-cn":{"Chat with us!":"发起即时对话!","Scroll down to see new messages":"向下滚动以查看新消息",Online:"在线",Online:"在线",Offline:"离线",Connecting:"连接中","Connection re-established":"正在重新建立连接",Today:"今天",Send:"发送","Compose your message...":"正在输入信息...","All colleagues are busy.":"所有工作人员都在忙碌中.","You are on waiting list position %s.":"您目前的等候位置是第 %s 位.","Start new conversation":"开始新的会话","Since you didn't respond in the last %s minutes your conversation with %s got closed.":"由于您超过 %s 分钟没有回复, 您与 %s 的会话已被关闭.","Since you didn't respond in the last %s minutes your conversation got closed.":"由于您超过 %s 分钟没有任何回复, 该对话已被关闭.","We are sorry, it takes longer as expected to get an empty slot. Please try again later or send us an email. Thank you!":"非常抱歉, 目前需要等候更长的时间才能接入对话, 请稍后重试或向我们发送电子邮件. 谢谢!"},"zh-tw":{"Chat with us!":"開始即時對话!","Scroll down to see new messages":"向下滑動以查看新訊息",Online:"線上",Online:"線上",Offline:"离线",Connecting:"連線中","Connection re-established":"正在重新建立連線中",Today:"今天",Send:"發送","Compose your message...":"正在輸入訊息...","All colleagues are busy.":"所有服務人員都在忙碌中.","You are on waiting list position %s.":"你目前的等候位置是第 %s 順位.","Start new conversation":"開始新的對話","Since you didn't respond in the last %s minutes your conversation with %s got closed.":"由於你超過 %s 分鐘沒有回應, 你與 %s 的對話已被關閉.","Since you didn't respond in the last %s minutes your conversation got closed.":"由於你超過 %s 分鐘沒有任何回應, 該對話已被關閉.","We are sorry, it takes longer as expected to get an empty slot. Please try again later or send us an email. Thank you!":"非常抱歉, 當前需要等候更長的時間方可排入對話程序, 請稍後重試或向我們寄送電子郵件. 謝謝!"}},i.prototype.sessionId=void 0,i.prototype.scrolledToBottom=!0,i.prototype.scrollSnapTolerance=10,i.prototype.T=function(){var t,e,s,n,i,o;if(i=arguments[0],s=2<=arguments.length?slice.call(arguments,1):[],this.options.lang&&"en"!==this.options.lang&&(this.translations[this.options.lang]?(o=this.translations[this.options.lang],o[i]||this.log.notice("Translation needed for '"+i+"'"),i=o[i]||i):this.log.notice("Translation '"+this.options.lang+"' needed!")),s)for(t=0,n=s.length;n>t;t++)e=s[t],i=i.replace(/%s/,e);return i},i.prototype.view=function(t){return function(s){return function(n){return n||(n={}),n.T=s.T,n.background=s.options.background,n.flat=s.options.flat,n.fontSize=s.options.fontSize,e.zammadChatTemplates[t](n)}}(this)},i.prototype.getScrollRoot=function(){var t,e,s;return"scrollingElement"in document?document.scrollingElement:(e=document.documentElement,s=e.scrollTop,e.scrollTop=s+1,t=e.scrollTop,e.scrollTop=s,t>s?e:document.body)},i.prototype.render=function(){return this.el&&t(".zammad-chat").get(0)||this.renderBase(),t("."+this.options.buttonClass).addClass(this.inactiveClass),this.setAgentOnlineState("online"),this.log.debug("widget rendered"),this.startTimeoutObservers(),this.idleTimeout.start(),this.sessionId=sessionStorage.getItem("sessionId"),this.send("chat_status_customer",{session_id:this.sessionId,url:e.location.href})},i.prototype.renderBase=function(){return this.el=t(this.view("chat")({title:this.options.title,scrollHint:this.options.scrollHint})),this.options.target.append(this.el),this.input=this.el.find(".zammad-chat-input"),this.el.find(".js-chat-open").click(this.open),this.el.find(".js-chat-toggle").click(this.toggle),this.el.find(".zammad-chat-controls").on("submit",this.onSubmit),this.el.find(".zammad-chat-body").on("scroll",this.detectScrolledtoBottom),this.el.find(".zammad-scroll-hint").click(this.onScrollHintClick),this.input.on({keydown:this.checkForEnter,input:this.onInput}),t(e).on("beforeunload",function(t){return function(){return t.onLeaveTemporary()}}(this)),t(e).bind("hashchange",function(t){return function(){return t.isOpen?void(t.sessionId&&t.send("chat_session_notice",{session_id:t.sessionId,message:e.location.href})):t.idleTimeout.start()}}(this)),this.isFullscreen?this.input.on({focus:this.onFocus,focusout:this.onFocusOut}):void 0},i.prototype.checkForEnter=function(t){return t.shiftKey||13!==t.keyCode?void 0:(t.preventDefault(),this.sendMessage())},i.prototype.send=function(t,e){return null==e&&(e={}),e.chat_id=this.options.chatId,this.io.send(t,e)},i.prototype.onWebSocketMessage=function(t){var e,s,n;for(e=0,s=t.length;s>e;e++)switch(n=t[e],this.log.debug("ws:onmessage",n),n.event){case"chat_error":this.log.notice(n.data),n.data&&"chat_disabled"===n.data.state&&this.destroy({remove:!0});break;case"chat_session_message":if(n.data.self_written)return;this.receiveMessage(n.data);break;case"chat_session_typing":if(n.data.self_written)return;this.onAgentTypingStart();break;case"chat_session_start":this.onConnectionEstablished(n.data);break;case"chat_session_queue":this.onQueueScreen(n.data);break;case"chat_session_closed":this.onSessionClosed(n.data);break;case"chat_session_left":this.onSessionClosed(n.data);break;case"chat_status_customer":switch(n.data.state){case"online":this.sessionId=void 0,!this.options.cssAutoload||this.cssLoaded?this.onReady():this.socketReady=!0;break;case"offline":this.onError("Zammad Chat: No agent online");break;case"chat_disabled":this.onError("Zammad Chat: Chat is disabled");break;case"no_seats_available":this.onError("Zammad Chat: Too many clients in queue. Clients in queue: "+n.data.queue);break;case"reconnect":this.onReopenSession(n.data)}}},i.prototype.onReady=function(){return this.log.debug("widget ready for use"),t("."+this.options.buttonClass).click(this.open).removeClass(this.inactiveClass),this.options.show?this.show():void 0},i.prototype.onError=function(e){return this.log.debug(e),this.addStatus(e),t("."+this.options.buttonClass).hide(),this.isOpen?(this.disableInput(),this.destroy({remove:!1})):this.destroy({remove:!0})},i.prototype.onReopenSession=function(t){var e,s,n,i,o;if(this.log.debug("old messages",t.session),this.inactiveTimeout.start(),o=sessionStorage.getItem("unfinished_message"),t.agent){for(this.onConnectionEstablished(t),i=t.session,e=0,s=i.length;s>e;e++)n=i[e],this.renderMessage({message:n.content,id:n.id,from:n.created_by_id?"agent":"customer"});o&&this.input.val(o)}return t.position&&this.onQueue(t),this.show(),this.open(),this.scrollToBottom(),o?this.input.focus():void 0},i.prototype.onInput=function(){return this.el.find(".zammad-chat-message--unread").removeClass("zammad-chat-message--unread"),sessionStorage.setItem("unfinished_message",this.input.val()),this.onTyping()},i.prototype.onFocus=function(){var s;return t(e).scrollTop(10),s=t(e).scrollTop()>0,t(e).scrollTop(0),s?this.log.notice("virtual keyboard shown"):void 0},i.prototype.onFocusOut=function(){},i.prototype.onTyping=function(){return this.isTyping&&this.isTyping>new Date((new Date).getTime()-1500)?void 0:(this.isTyping=new Date,this.send("chat_session_typing",{session_id:this.sessionId}),this.inactiveTimeout.start())},i.prototype.onSubmit=function(t){return t.preventDefault(),this.sendMessage()},i.prototype.sendMessage=function(){var t,e;return(t=this.input.val())?(this.inactiveTimeout.start(),sessionStorage.removeItem("unfinished_message"),e=this.view("message")({message:t,from:"customer",id:this._messageCount++,unreadClass:""}),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.input.val(""),this.scrollToBottom(),this.send("chat_session_message",{content:t,id:this._messageCount,session_id:this.sessionId})):void 0},i.prototype.receiveMessage=function(t){return this.inactiveTimeout.start(),this.onAgentTypingEnd(),this.maybeAddTimestamp(),this.renderMessage({message:t.message.content,id:t.id,from:"agent"}),this.scrollToBottom({showHint:!0})},i.prototype.renderMessage=function(t){return this.lastAddedType="message--"+t.from,t.unreadClass=document.hidden?" zammad-chat-message--unread":"",this.el.find(".zammad-chat-body").append(this.view("message")(t))},i.prototype.open=function(){var t;return this.isOpen?void this.log.debug("widget already open, block"):(this.isOpen=!0,this.log.debug("open widget"),this.sessionId||this.showLoader(),this.el.addClass("zammad-chat-is-open"),this.inputInitialized||(this.inputInitialized=!0,this.input.autoGrow({extraLine:!1})),t=this.el.height()-this.el.find(".zammad-chat-header").outerHeight(),this.el.css("bottom",-t),this.sessionId?(this.el.css("bottom",0),this.onOpenAnimationEnd()):(this.el.animate({bottom:0},500,this.onOpenAnimationEnd),this.send("chat_session_init",{url:e.location.href})))},i.prototype.onOpenAnimationEnd=function(){return this.idleTimeout.stop(),this.isFullscreen?this.disableScrollOnRoot():void 0},i.prototype.sessionClose=function(){return this.send("chat_session_close",{session_id:this.sessionId}),this.inactiveTimeout.stop(),this.waitingListTimeout.stop(),sessionStorage.removeItem("unfinished_message"),this.onInitialQueueDelayId&&clearTimeout(this.onInitialQueueDelayId),this.setSessionId(void 0)},i.prototype.toggle=function(t){return this.isOpen?this.close(t):this.open(t)},i.prototype.close=function(t){var e;return this.isOpen?(this.initDelayId&&clearTimeout(this.initDelayId),this.sessionId?(this.log.debug("close widget"),t&&t.stopPropagation(),this.sessionClose(),this.isFullscreen&&this.enableScrollOnRoot(),e=this.el.height()-this.el.find(".zammad-chat-header").outerHeight(),this.el.animate({bottom:-e},500,this.onCloseAnimationEnd)):void this.log.debug("can't close widget without sessionId")):void this.log.debug("can't close widget, it's not open")},i.prototype.onCloseAnimationEnd=function(){return this.el.css("bottom",""),this.el.removeClass("zammad-chat-is-open"),this.showLoader(),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"),this.isOpen=!1,this.io.reconnect()},i.prototype.onWebSocketClose=function(){return this.isOpen?void 0:this.el?(this.el.removeClass("zammad-chat-is-shown"),this.el.removeClass("zammad-chat-is-loaded")):void 0},i.prototype.show=function(){return"offline"!==this.state?(this.el.addClass("zammad-chat-is-loaded"),this.el.addClass("zammad-chat-is-shown")):void 0},i.prototype.disableInput=function(){return this.input.prop("disabled",!0),this.el.find(".zammad-chat-send").prop("disabled",!0)},i.prototype.enableInput=function(){return this.input.prop("disabled",!1),this.el.find(".zammad-chat-send").prop("disabled",!1)},i.prototype.hideModal=function(){return this.el.find(".zammad-chat-modal").html("")},i.prototype.onQueueScreen=function(t){var e;return this.setSessionId(t.session_id),e=function(e){return function(){return e.onQueue(t),e.waitingListTimeout.start()}}(this),this.initialQueueDelay&&!this.onInitialQueueDelayId?void(this.onInitialQueueDelayId=setTimeout(e,this.initialQueueDelay)):(this.onInitialQueueDelayId&&clearTimeout(this.onInitialQueueDelayId),e())},i.prototype.onQueue=function(t){return this.log.notice("onQueue",t.position),this.inQueue=!0,this.el.find(".zammad-chat-modal").html(this.view("waiting")({position:t.position}))},i.prototype.onAgentTypingStart=function(){return this.stopTypingId&&clearTimeout(this.stopTypingId),this.stopTypingId=setTimeout(this.onAgentTypingEnd,3e3),!this.el.find(".zammad-chat-message--typing").size()&&(this.maybeAddTimestamp(),this.el.find(".zammad-chat-body").append(this.view("typingIndicator")()),this.isVisible(this.el.find(".zammad-chat-message--typing"),!0))?this.scrollToBottom():void 0},i.prototype.onAgentTypingEnd=function(){return this.el.find(".zammad-chat-message--typing").remove()},i.prototype.onLeaveTemporary=function(){return this.sessionId?this.send("chat_session_leave_temporary",{session_id:this.sessionId}):void 0},i.prototype.maybeAddTimestamp=function(){var t,e,s;return s=Date.now(),!this.lastTimestamp||s-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=s):(this.el.find(".zammad-chat-body").append(this.view("timestamp")({label:t,time:e})),this.lastTimestamp=s,this.lastAddedType="timestamp",this.scrollToBottom())):void 0},i.prototype.updateLastTimestamp=function(t,e){return this.el?this.el.find(".zammad-chat-body").find(".zammad-chat-timestamp").last().replaceWith(this.view("timestamp")({label:t,time:e})):void 0},i.prototype.addStatus=function(t){return this.el?(this.maybeAddTimestamp(),this.el.find(".zammad-chat-body").append(this.view("status")({status:t})),this.scrollToBottom()):void 0},i.prototype.detectScrolledtoBottom=function(){var t;return t=this.el.find(".zammad-chat-body").scrollTop()+this.el.find(".zammad-chat-body").outerHeight(),this.scrolledToBottom=Math.abs(t-this.el.find(".zammad-chat-body").prop("scrollHeight"))<=this.scrollSnapTolerance,this.scrolledToBottom?this.el.find(".zammad-scroll-hint").addClass("is-hidden"):void 0},i.prototype.showScrollHint=function(){return this.el.find(".zammad-scroll-hint").removeClass("is-hidden"),this.el.find(".zammad-chat-body").scrollTop(this.el.find(".zammad-chat-body").scrollTop()+this.el.find(".zammad-scroll-hint").outerHeight())},i.prototype.onScrollHintClick=function(){return this.el.find(".zammad-chat-body").animate({scrollTop:this.el.find(".zammad-chat-body").prop("scrollHeight")},300)},i.prototype.scrollToBottom=function(e){var s;return s=(null!=e?e:{showHint:!1}).showHint,this.scrolledToBottom?this.el.find(".zammad-chat-body").scrollTop(t(".zammad-chat-body").prop("scrollHeight")):s?this.showScrollHint():void 0},i.prototype.destroy=function(t){return null==t&&(t={}),this.log.debug("destroy widget",t),this.setAgentOnlineState("offline"),t.remove&&this.el&&this.el.remove(),this.waitingListTimeout&&this.waitingListTimeout.stop(),this.inactiveTimeout&&this.inactiveTimeout.stop(),this.idleTimeout&&this.idleTimeout.stop(),this.io.close()},i.prototype.reconnect=function(){return this.log.notice("reconnecting"),this.disableInput(),this.lastAddedType="status",this.setAgentOnlineState("connecting"),this.addStatus(this.T("Connection lost"))},i.prototype.onConnectionReestablished=function(){return this.lastAddedType="status",this.setAgentOnlineState("online"),this.addStatus(this.T("Connection re-established"))},i.prototype.onSessionClosed=function(t){return this.addStatus(this.T("Chat closed by %s",t.realname)),this.disableInput(),this.setAgentOnlineState("offline"),this.inactiveTimeout.stop()},i.prototype.setSessionId=function(t){return this.sessionId=t,void 0===t?sessionStorage.removeItem("sessionId"):sessionStorage.setItem("sessionId",t)},i.prototype.onConnectionEstablished=function(t){return this.onInitialQueueDelayId&&clearTimeout(this.onInitialQueueDelayId),this.inQueue=!1,t.agent&&(this.agent=t.agent),t.session_id&&this.setSessionId(t.session_id),this.el.find(".zammad-chat-body").html(""),this.el.find(".zammad-chat-agent").html(this.view("agent")({agent:this.agent})),this.enableInput(),this.hideModal(),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.isFullscreen||this.input.focus(),this.setAgentOnlineState("online"),this.waitingListTimeout.stop(),this.idleTimeout.stop(),this.inactiveTimeout.start()},i.prototype.showCustomerTimeout=function(){var t;return this.el.find(".zammad-chat-modal").html(this.view("customer_timeout")({agent:this.agent.name,delay:this.options.inactiveTimeout})),t=function(){return location.reload()},this.el.find(".js-restart").click(t),this.sessionClose()},i.prototype.showWaitingListTimeout=function(){var t;return this.el.find(".zammad-chat-modal").html(this.view("waiting_list_timeout")({delay:this.options.watingListTimeout})),t=function(){return location.reload()},this.el.find(".js-restart").click(t),this.sessionClose()},i.prototype.showLoader=function(){return this.el.find(".zammad-chat-modal").html(this.view("loader")())},i.prototype.setAgentOnlineState=function(t){var e;return this.state=t,this.el?(e=t.charAt(0).toUpperCase()+t.slice(1),this.el.find(".zammad-chat-agent-status").attr("data-status",t).text(this.T(e))):void 0},i.prototype.detectHost=function(){var t;return t="ws://","https"===l&&(t="wss://"),this.options.host=""+t+h+"/ws"},i.prototype.loadCss=function(){var t,e,s;if(this.options.cssAutoload)return s=this.options.cssUrl,s||(s=this.options.host.replace(/^wss/i,"https").replace(/^ws/i,"http").replace(/\/ws/i,""),s+="/assets/chat/chat.css"),this.log.debug("load css from '"+s+"'"),e="@import url('"+s+"');",t=document.createElement("link"),t.onload=this.onCssLoaded,t.rel="stylesheet",t.href="data:text/css,"+escape(e),document.getElementsByTagName("head")[0].appendChild(t)},i.prototype.onCssLoaded=function(){return this.socketReady?this.onReady():this.cssLoaded=!0},i.prototype.startTimeoutObservers=function(){return this.idleTimeout=new o({logPrefix:"idleTimeout",debug:this.options.debug,timeout:this.options.idleTimeout,timeoutIntervallCheck:this.options.idleTimeoutIntervallCheck,callback:function(t){return function(){return t.log.debug("Idle timeout reached, hide widget",new Date),t.destroy({remove:!0})}}(this)}),this.inactiveTimeout=new o({logPrefix:"inactiveTimeout",debug:this.options.debug,timeout:this.options.inactiveTimeout,timeoutIntervallCheck:this.options.inactiveTimeoutIntervallCheck,callback:function(t){return function(){return t.log.debug("Inactive timeout reached, show timeout screen.",new Date),t.showCustomerTimeout(),t.destroy({remove:!1})}}(this)}),this.waitingListTimeout=new o({logPrefix:"waitingListTimeout",debug:this.options.debug,timeout:this.options.waitingListTimeout,timeoutIntervallCheck:this.options.waitingListTimeoutIntervallCheck,callback:function(t){return function(){return t.log.debug("Waiting list timeout reached, show timeout screen.",new Date),t.showWaitingListTimeout(),t.destroy({remove:!1})}}(this)})},i.prototype.disableScrollOnRoot=function(){return this.rootScrollOffset=this.scrollRoot.scrollTop(),this.scrollRoot.css({overflow:"hidden",position:"fixed"})},i.prototype.enableScrollOnRoot=function(){return this.scrollRoot.scrollTop(this.rootScrollOffset),this.scrollRoot.css({overflow:"",position:""})},i.prototype.isVisible=function(s,n,i,o){var a,r,h,l,d,c,u,p,m,g,f,y,v,b,w,T,z,S,C,I,k,_,O,A,x,E;if(!(s.length<1))if(r=t(e),a=s.length>1?s.eq(0):s,S=a.get(0),E=r.width(),x=r.height(),o=o?o:"both",p=i===!0?S.offsetWidth*S.offsetHeight:!0,"function"==typeof S.getBoundingClientRect){if(z=S.getBoundingClientRect(),C=z.top>=0&&z.top0&&z.bottom<=x,b=z.left>=0&&z.left0&&z.right<=E,I=n?C||u:C&&u,v=n?b||T:b&&T,"both"===o)return p&&I&&v;if("vertical"===o)return p&&I;if("horizontal"===o)return p&&v}else{if(A=r.scrollTop(),k=A+x,_=r.scrollLeft(),O=_+E,w=a.offset(),c=w.top,h=c+a.height(),l=w.left,d=l+a.width(),y=n===!0?h:c,m=n===!0?c:h,g=n===!0?d:l,f=n===!0?l:d,"both"===o)return!!p&&k>=m&&y>=A&&O>=f&&g>=_;if("vertical"===o)return!!p&&k>=m&&y>=A;if("horizontal"===o)return!!p&&O>=f&&g>=_}},i}(s),e.ZammadChat=a}(window.jQuery,window),jQuery.fn.autoGrow=function(t){return this.each(function(){var e=jQuery.extend({extraLine:!0},t),s=function(t){return jQuery(t).after('
'),jQuery(t).next(".autogrow-textarea-mirror")[0]},n=function(t){if(o.innerHTML=String(t.value).replace(/&/g,"&").replace(/"/g,""").replace(/'/g,"'").replace(//g,">").replace(/ /g," ").replace(/\n/g,"
")+(e.extraLine?".
.":""),jQuery(t).height()!=jQuery(o).height()){jQuery(t).height(jQuery(o).height());var s=jQuery(o).height()>a?"":"hidden";jQuery(t).css("overflow",s)}},i=function(){n(this)},o=s(this),a=parseInt(jQuery(this).css("max-height"),10);o.style.display="none",o.style.wordWrap="break-word",o.style.whiteSpace="normal",o.style.padding=jQuery(this).css("paddingTop")+" "+jQuery(this).css("paddingRight")+" "+jQuery(this).css("paddingBottom")+" "+jQuery(this).css("paddingLeft"),o.style.width=jQuery(this).css("width"),o.style.fontFamily=jQuery(this).css("font-family"),o.style.fontSize=jQuery(this).css("font-size"),o.style.lineHeight=jQuery(this).css("line-height"),o.style.letterSpacing=jQuery(this).css("letter-spacing"),o.style.boxSizing=jQuery(this).css("boxSizing"), +var bind=function(t,e){return function(){return t.apply(e,arguments)}},slice=[].slice,extend=function(t,e){function s(){this.constructor=t}for(var n in e)hasProp.call(e,n)&&(t[n]=e[n]);return s.prototype=e.prototype,t.prototype=new s,t.__super__=e.prototype,t},hasProp={}.hasOwnProperty;!function(t,e){var s,n,i,o,a,r,h,l,d;return d=document.getElementsByTagName("script"),r=d[d.length-1],h=r.src.match(".*://([^:/]*).*")[1],l=r.src.match("(.*)://[^:/]*.*")[1],s=function(){function e(e){this.options=t.extend({},this.defaults,e),this.log=new i({debug:this.options.debug,logPrefix:this.options.logPrefix||this.logPrefix})}return e.prototype.defaults={debug:!1},e}(),i=function(){function e(e){this.log=bind(this.log,this),this.error=bind(this.error,this),this.notice=bind(this.notice,this),this.debug=bind(this.debug,this),this.options=t.extend({},this.defaults,e)}return e.prototype.defaults={debug:!1},e.prototype.debug=function(){var t;return t=1<=arguments.length?slice.call(arguments,0):[],this.options.debug?this.log("debug",t):void 0},e.prototype.notice=function(){var t;return t=1<=arguments.length?slice.call(arguments,0):[],this.log("notice",t)},e.prototype.error=function(){var t;return t=1<=arguments.length?slice.call(arguments,0):[],this.log("error",t)},e.prototype.log=function(e,s){var n,i,o,a;if(s.unshift("||"),s.unshift(e),s.unshift(this.options.logPrefix),console.log.apply(console,s),this.options.debug){for(a="",n=0,o=s.length;o>n;n++)i=s[n],a+=" ",a+="object"==typeof i?JSON.stringify(i):i&&i.toString?i.toString():i;return t(".js-chatLogDisplay").prepend("
"+a+"
")}},e}(),o=function(t){function e(t){this.stop=bind(this.stop,this),this.start=bind(this.start,this),e.__super__.constructor.call(this,t)}return extend(e,t),e.prototype.timeoutStartedAt=null,e.prototype.logPrefix="timeout",e.prototype.defaults={debug:!1,timeout:4,timeoutIntervallCheck:.5},e.prototype.start=function(){var t,e;return this.stop(),e=new Date,t=function(t){return function(){var s;return s=new Date-new Date(e.getTime()+1e3*t.options.timeout*60),t.log.debug("Timeout check for "+t.options.timeout+" minutes (left "+s/1e3+" sec.)"),0>s?void 0:(t.stop(),t.options.callback())}}(this),this.log.debug("Start timeout in "+this.options.timeout+" minutes"),this.intervallId=setInterval(t,1e3*this.options.timeoutIntervallCheck*60)},e.prototype.stop=function(){return this.intervallId?(this.log.debug("Stop timeout of "+this.options.timeout+" minutes"),clearInterval(this.intervallId)):void 0},e}(s),n=function(t){function s(t){this.ping=bind(this.ping,this),this.send=bind(this.send,this),this.reconnect=bind(this.reconnect,this),this.close=bind(this.close,this),this.connect=bind(this.connect,this),this.set=bind(this.set,this),s.__super__.constructor.call(this,t)}return extend(s,t),s.prototype.logPrefix="io",s.prototype.set=function(t){var e,s,n;s=[];for(e in t)n=t[e],s.push(this.options[e]=n);return s},s.prototype.connect=function(){return this.log.debug("Connecting to "+this.options.host),this.ws=new e.WebSocket(""+this.options.host),this.ws.onopen=function(t){return function(e){return t.log.debug("onOpen",e),t.options.onOpen(e),t.ping()}}(this),this.ws.onmessage=function(t){return function(e){var s,n,i,o;for(o=JSON.parse(e.data),t.log.debug("onMessage",e.data),s=0,n=o.length;n>s;s++)i=o[s],"pong"===i.event&&t.ping();return t.options.onMessage?t.options.onMessage(o):void 0}}(this),this.ws.onclose=function(t){return function(e){if(t.log.debug("close websocket connection",e),t.pingDelayId&&clearTimeout(t.pingDelayId),t.manualClose){if(t.log.debug("manual close, onClose callback"),t.manualClose=!1,t.options.onClose)return t.options.onClose(e)}else if(t.log.debug("error close, onError callback"),t.options.onError)return t.options.onError("Connection lost...")}}(this),this.ws.onerror=function(t){return function(e){return t.log.debug("onError",e),t.options.onError?t.options.onError(e):void 0}}(this)},s.prototype.close=function(){return this.log.debug("close websocket manually"),this.manualClose=!0,this.ws.close()},s.prototype.reconnect=function(){return this.log.debug("reconnect"),this.close(),this.connect()},s.prototype.send=function(t,e){var s;return null==e&&(e={}),this.log.debug("send",t,e),s=JSON.stringify({event:t,data:e}),this.ws.send(s)},s.prototype.ping=function(){var t;return t=function(t){return function(){return t.send("ping")}}(this),this.pingDelayId=setTimeout(t,29e3)},s}(s),a=function(s){function i(s){return this.startTimeoutObservers=bind(this.startTimeoutObservers,this),this.onCssLoaded=bind(this.onCssLoaded,this),this.setAgentOnlineState=bind(this.setAgentOnlineState,this),this.onConnectionEstablished=bind(this.onConnectionEstablished,this),this.setSessionId=bind(this.setSessionId,this),this.onConnectionReestablished=bind(this.onConnectionReestablished,this),this.reconnect=bind(this.reconnect,this),this.destroy=bind(this.destroy,this),this.onScrollHintClick=bind(this.onScrollHintClick,this),this.detectScrolledtoBottom=bind(this.detectScrolledtoBottom,this),this.onLeaveTemporary=bind(this.onLeaveTemporary,this),this.onAgentTypingEnd=bind(this.onAgentTypingEnd,this),this.onAgentTypingStart=bind(this.onAgentTypingStart,this),this.onQueue=bind(this.onQueue,this),this.onQueueScreen=bind(this.onQueueScreen,this),this.onWebSocketClose=bind(this.onWebSocketClose,this),this.onCloseAnimationEnd=bind(this.onCloseAnimationEnd,this),this.close=bind(this.close,this),this.toggle=bind(this.toggle,this),this.sessionClose=bind(this.sessionClose,this),this.onOpenAnimationEnd=bind(this.onOpenAnimationEnd,this),this.open=bind(this.open,this),this.renderMessage=bind(this.renderMessage,this),this.receiveMessage=bind(this.receiveMessage,this),this.onSubmit=bind(this.onSubmit,this),this.onFocus=bind(this.onFocus,this),this.onInput=bind(this.onInput,this),this.onReopenSession=bind(this.onReopenSession,this),this.onError=bind(this.onError,this),this.onWebSocketMessage=bind(this.onWebSocketMessage,this),this.send=bind(this.send,this),this.checkForEnter=bind(this.checkForEnter,this),this.render=bind(this.render,this),this.view=bind(this.view,this),this.T=bind(this.T,this),this.options=t.extend({},this.defaults,s),i.__super__.constructor.call(this,this.options),this.isFullscreen=e.matchMedia&&e.matchMedia("(max-width: 768px)").matches,this.scrollRoot=t(this.getScrollRoot()),t?e.WebSocket&&sessionStorage?this.options.chatId?(this.options.lang||(this.options.lang=t("html").attr("lang")),this.options.lang&&(this.translations[this.options.lang]||(this.log.debug("lang: No "+this.options.lang+" found, try first two letters"),this.options.lang=this.options.lang.replace(/-.+?$/,"")),this.log.debug("lang: "+this.options.lang)),this.options.host||this.detectHost(),this.loadCss(),this.io=new n(this.options),this.io.set({onOpen:this.render,onClose:this.onWebSocketClose,onMessage:this.onWebSocketMessage,onError:this.onError}),void this.io.connect()):(this.state="unsupported",void this.log.error("Chat: need chatId as option!")):(this.state="unsupported",void this.log.notice("Chat: Browser not supported!")):(this.state="unsupported",void this.log.notice("Chat: no jquery found!"))}return extend(i,s),i.prototype.defaults={chatId:void 0,show:!0,target:t("body"),host:"",debug:!1,flat:!1,lang:void 0,cssAutoload:!0,cssUrl:void 0,fontSize:void 0,buttonClass:"open-zammad-chat",inactiveClass:"is-inactive",title:"Chat with us!",scrollHint:"Scrolle nach unten um neue Nachrichten zu sehen",idleTimeout:6,idleTimeoutIntervallCheck:.5,inactiveTimeout:8,inactiveTimeoutIntervallCheck:.5,waitingListTimeout:4,waitingListTimeoutIntervallCheck:.5},i.prototype.logPrefix="chat",i.prototype._messageCount=0,i.prototype.isOpen=!1,i.prototype.blinkOnlineInterval=null,i.prototype.stopBlinOnlineStateTimeout=null,i.prototype.showTimeEveryXMinutes=2,i.prototype.lastTimestamp=null,i.prototype.lastAddedType=null,i.prototype.inputTimeout=null,i.prototype.isTyping=!1,i.prototype.state="offline",i.prototype.initialQueueDelay=1e4,i.prototype.translations={de:{"Chat with us!":"Chatte mit uns!","Scroll down to see new messages":"Scrolle nach unten um neue Nachrichten zu sehen",Online:"Online",Online:"Online",Offline:"Offline",Connecting:"Verbinden","Connection re-established":"Verbindung wiederhergestellt",Today:"Heute",Send:"Senden","Compose your message...":"Ihre Nachricht...","All colleagues are busy.":"Alle Kollegen sind belegt.","You are on waiting list position %s.":"Sie sind in der Warteliste an der Position %s.","Start new conversation":"Neue Konversation starten","Since you didn't respond in the last %s minutes your conversation with %s got closed.":"Da Sie in den letzten %s Minuten nichts geschrieben haben wurde Ihre Konversation mit %s geschlossen.","Since you didn't respond in the last %s minutes your conversation got closed.":"Da Sie in den letzten %s Minuten nichts geschrieben haben wurde Ihre Konversation geschlossen.","We are sorry, it takes longer as expected to get an empty slot. Please try again later or send us an email. Thank you!":"Es tut uns leid, es dauert länger als erwartet, um einen freien Platz zu erhalten. Bitte versuchen Sie es zu einem späteren Zeitpunkt noch einmal oder schicken Sie uns eine E-Mail. Vielen Dank!"},fr:{"Chat with us!":"Chattez avec nous!","Scroll down to see new messages":"Faites défiler pour lire les nouveaux messages",Online:"En-ligne",Online:"En-ligne",Offline:"Hors-ligne",Connecting:"Connexion en cours","Connection re-established":"Connexion rétablie",Today:"Aujourdhui",Send:"Envoyer","Compose your message...":"Composez votre message...","All colleagues are busy.":"Tous les collègues sont actuellement occupés.","You are on waiting list position %s.":"Vous êtes actuellement en %s position dans la file d'attente.","Start new conversation":"Démarrer une nouvelle conversation","Since you didn't respond in the last %s minutes your conversation with %s got closed.":"Si vous ne répondez pas dans les %s minutes, votre conversation avec %s va être fermée.","Since you didn't respond in the last %s minutes your conversation got closed.":"Si vous ne répondez pas dans les %s minutes, votre conversation va être fermée.","We are sorry, it takes longer as expected to get an empty slot. Please try again later or send us an email. Thank you!":"Nous sommes désolés, il faut plus de temps que prévu pour obtenir un emplacement vide. Veuillez réessayer ultérieurement ou nous envoyer un courriel. Je vous remercie!"},"zh-cn":{"Chat with us!":"发起即时对话!","Scroll down to see new messages":"向下滚动以查看新消息",Online:"在线",Online:"在线",Offline:"离线",Connecting:"连接中","Connection re-established":"正在重新建立连接",Today:"今天",Send:"发送","Compose your message...":"正在输入信息...","All colleagues are busy.":"所有工作人员都在忙碌中.","You are on waiting list position %s.":"您目前的等候位置是第 %s 位.","Start new conversation":"开始新的会话","Since you didn't respond in the last %s minutes your conversation with %s got closed.":"由于您超过 %s 分钟没有回复, 您与 %s 的会话已被关闭.","Since you didn't respond in the last %s minutes your conversation got closed.":"由于您超过 %s 分钟没有任何回复, 该对话已被关闭.","We are sorry, it takes longer as expected to get an empty slot. Please try again later or send us an email. Thank you!":"非常抱歉, 目前需要等候更长的时间才能接入对话, 请稍后重试或向我们发送电子邮件. 谢谢!"},"zh-tw":{"Chat with us!":"開始即時對话!","Scroll down to see new messages":"向下滑動以查看新訊息",Online:"線上",Online:"線上",Offline:"离线",Connecting:"連線中","Connection re-established":"正在重新建立連線中",Today:"今天",Send:"發送","Compose your message...":"正在輸入訊息...","All colleagues are busy.":"所有服務人員都在忙碌中.","You are on waiting list position %s.":"你目前的等候位置是第 %s 順位.","Start new conversation":"開始新的對話","Since you didn't respond in the last %s minutes your conversation with %s got closed.":"由於你超過 %s 分鐘沒有回應, 你與 %s 的對話已被關閉.","Since you didn't respond in the last %s minutes your conversation got closed.":"由於你超過 %s 分鐘沒有任何回應, 該對話已被關閉.","We are sorry, it takes longer as expected to get an empty slot. Please try again later or send us an email. Thank you!":"非常抱歉, 當前需要等候更長的時間方可排入對話程序, 請稍後重試或向我們寄送電子郵件. 謝謝!"}},i.prototype.sessionId=void 0,i.prototype.scrolledToBottom=!0,i.prototype.scrollSnapTolerance=10,i.prototype.T=function(){var t,e,s,n,i,o;if(i=arguments[0],s=2<=arguments.length?slice.call(arguments,1):[],this.options.lang&&"en"!==this.options.lang&&(this.translations[this.options.lang]?(o=this.translations[this.options.lang],o[i]||this.log.notice("Translation needed for '"+i+"'"),i=o[i]||i):this.log.notice("Translation '"+this.options.lang+"' needed!")),s)for(t=0,n=s.length;n>t;t++)e=s[t],i=i.replace(/%s/,e);return i},i.prototype.view=function(t){return function(s){return function(n){return n||(n={}),n.T=s.T,n.background=s.options.background,n.flat=s.options.flat,n.fontSize=s.options.fontSize,e.zammadChatTemplates[t](n)}}(this)},i.prototype.getScrollRoot=function(){var t,e,s;return"scrollingElement"in document?document.scrollingElement:(e=document.documentElement,s=e.scrollTop,e.scrollTop=s+1,t=e.scrollTop,e.scrollTop=s,t>s?e:document.body)},i.prototype.render=function(){return this.el&&t(".zammad-chat").get(0)||this.renderBase(),t("."+this.options.buttonClass).addClass(this.inactiveClass),this.setAgentOnlineState("online"),this.log.debug("widget rendered"),this.startTimeoutObservers(),this.idleTimeout.start(),this.sessionId=sessionStorage.getItem("sessionId"),this.send("chat_status_customer",{session_id:this.sessionId,url:e.location.href})},i.prototype.renderBase=function(){return this.el=t(this.view("chat")({title:this.options.title,scrollHint:this.options.scrollHint})),this.options.target.append(this.el),this.input=this.el.find(".zammad-chat-input"),this.el.find(".js-chat-open").click(this.open),this.el.find(".js-chat-toggle").click(this.toggle),this.el.find(".zammad-chat-controls").on("submit",this.onSubmit),this.el.find(".zammad-chat-body").on("scroll",this.detectScrolledtoBottom),this.el.find(".zammad-scroll-hint").click(this.onScrollHintClick),this.input.on({keydown:this.checkForEnter,input:this.onInput}),t(e).on("beforeunload",function(t){return function(){return t.onLeaveTemporary()}}(this)),t(e).bind("hashchange",function(t){return function(){return t.isOpen?void(t.sessionId&&t.send("chat_session_notice",{session_id:t.sessionId,message:e.location.href})):t.idleTimeout.start()}}(this)),this.isFullscreen?this.input.on({focus:this.onFocus,focusout:this.onFocusOut}):void 0},i.prototype.checkForEnter=function(t){return t.shiftKey||13!==t.keyCode?void 0:(t.preventDefault(),this.sendMessage())},i.prototype.send=function(t,e){return null==e&&(e={}),e.chat_id=this.options.chatId,this.io.send(t,e)},i.prototype.onWebSocketMessage=function(t){var e,s,n;for(e=0,s=t.length;s>e;e++)switch(n=t[e],this.log.debug("ws:onmessage",n),n.event){case"chat_error":this.log.notice(n.data),n.data&&"chat_disabled"===n.data.state&&this.destroy({remove:!0});break;case"chat_session_message":if(n.data.self_written)return;this.receiveMessage(n.data);break;case"chat_session_typing":if(n.data.self_written)return;this.onAgentTypingStart();break;case"chat_session_start":this.onConnectionEstablished(n.data);break;case"chat_session_queue":this.onQueueScreen(n.data);break;case"chat_session_closed":this.onSessionClosed(n.data);break;case"chat_session_left":this.onSessionClosed(n.data);break;case"chat_status_customer":switch(n.data.state){case"online":this.sessionId=void 0,!this.options.cssAutoload||this.cssLoaded?this.onReady():this.socketReady=!0;break;case"offline":this.onError("Zammad Chat: No agent online");break;case"chat_disabled":this.onError("Zammad Chat: Chat is disabled");break;case"no_seats_available":this.onError("Zammad Chat: Too many clients in queue. Clients in queue: "+n.data.queue);break;case"reconnect":this.onReopenSession(n.data)}}},i.prototype.onReady=function(){return this.log.debug("widget ready for use"),t("."+this.options.buttonClass).click(this.open).removeClass(this.inactiveClass),this.options.show?this.show():void 0},i.prototype.onError=function(e){return this.log.debug(e),this.addStatus(e),t("."+this.options.buttonClass).hide(),this.isOpen?(this.disableInput(),this.destroy({remove:!1})):this.destroy({remove:!0})},i.prototype.onReopenSession=function(t){var e,s,n,i,o;if(this.log.debug("old messages",t.session),this.inactiveTimeout.start(),o=sessionStorage.getItem("unfinished_message"),t.agent){for(this.onConnectionEstablished(t),i=t.session,e=0,s=i.length;s>e;e++)n=i[e],this.renderMessage({message:n.content,id:n.id,from:n.created_by_id?"agent":"customer"});o&&this.input.val(o)}return t.position&&this.onQueue(t),this.show(),this.open(),this.scrollToBottom(),o?this.input.focus():void 0},i.prototype.onInput=function(){return this.el.find(".zammad-chat-message--unread").removeClass("zammad-chat-message--unread"),sessionStorage.setItem("unfinished_message",this.input.val()),this.onTyping()},i.prototype.onFocus=function(){var s;return t(e).scrollTop(10),s=t(e).scrollTop()>0,t(e).scrollTop(0),s?this.log.notice("virtual keyboard shown"):void 0},i.prototype.onFocusOut=function(){},i.prototype.onTyping=function(){return this.isTyping&&this.isTyping>new Date((new Date).getTime()-1500)?void 0:(this.isTyping=new Date,this.send("chat_session_typing",{session_id:this.sessionId}),this.inactiveTimeout.start())},i.prototype.onSubmit=function(t){return t.preventDefault(),this.sendMessage()},i.prototype.sendMessage=function(){var t,e;return(t=this.input.val())?(this.inactiveTimeout.start(),sessionStorage.removeItem("unfinished_message"),e=this.view("message")({message:t,from:"customer",id:this._messageCount++,unreadClass:""}),this.maybeAddTimestamp(),this.el.find(".zammad-chat-message--typing").get(0)?(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.input.val(""),this.scrollToBottom(),this.send("chat_session_message",{content:t,id:this._messageCount,session_id:this.sessionId})):void 0},i.prototype.receiveMessage=function(t){return this.inactiveTimeout.start(),this.onAgentTypingEnd(),this.maybeAddTimestamp(),this.renderMessage({message:t.message.content,id:t.id,from:"agent"}),this.scrollToBottom({showHint:!0})},i.prototype.renderMessage=function(t){return this.lastAddedType="message--"+t.from,t.unreadClass=document.hidden?" zammad-chat-message--unread":"",this.el.find(".zammad-chat-body").append(this.view("message")(t))},i.prototype.open=function(){var t;return this.isOpen?void this.log.debug("widget already open, block"):(this.isOpen=!0,this.log.debug("open widget"),this.sessionId||this.showLoader(),this.el.addClass("zammad-chat-is-open"),this.inputInitialized||(this.inputInitialized=!0,this.input.autoGrow({extraLine:!1})),t=this.el.height()-this.el.find(".zammad-chat-header").outerHeight(),this.el.css("bottom",-t),this.sessionId?(this.el.css("bottom",0),this.onOpenAnimationEnd()):(this.el.animate({bottom:0},500,this.onOpenAnimationEnd),this.send("chat_session_init",{url:e.location.href})))},i.prototype.onOpenAnimationEnd=function(){return this.idleTimeout.stop(),this.isFullscreen?this.disableScrollOnRoot():void 0},i.prototype.sessionClose=function(){return this.send("chat_session_close",{session_id:this.sessionId}),this.inactiveTimeout.stop(),this.waitingListTimeout.stop(),sessionStorage.removeItem("unfinished_message"),this.onInitialQueueDelayId&&clearTimeout(this.onInitialQueueDelayId),this.setSessionId(void 0)},i.prototype.toggle=function(t){return this.isOpen?this.close(t):this.open(t)},i.prototype.close=function(t){var e;return this.isOpen?(this.initDelayId&&clearTimeout(this.initDelayId),this.sessionId?(this.log.debug("close widget"),t&&t.stopPropagation(),this.sessionClose(),this.isFullscreen&&this.enableScrollOnRoot(),e=this.el.height()-this.el.find(".zammad-chat-header").outerHeight(),this.el.animate({bottom:-e},500,this.onCloseAnimationEnd)):void this.log.debug("can't close widget without sessionId")):void this.log.debug("can't close widget, it's not open")},i.prototype.onCloseAnimationEnd=function(){return this.el.css("bottom",""),this.el.removeClass("zammad-chat-is-open"),this.showLoader(),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"),this.isOpen=!1,this.io.reconnect()},i.prototype.onWebSocketClose=function(){return this.isOpen?void 0:this.el?(this.el.removeClass("zammad-chat-is-shown"),this.el.removeClass("zammad-chat-is-loaded")):void 0},i.prototype.show=function(){return"offline"!==this.state?(this.el.addClass("zammad-chat-is-loaded"),this.el.addClass("zammad-chat-is-shown")):void 0},i.prototype.disableInput=function(){return this.input.prop("disabled",!0),this.el.find(".zammad-chat-send").prop("disabled",!0)},i.prototype.enableInput=function(){return this.input.prop("disabled",!1),this.el.find(".zammad-chat-send").prop("disabled",!1)},i.prototype.hideModal=function(){return this.el.find(".zammad-chat-modal").html("")},i.prototype.onQueueScreen=function(t){var e;return this.setSessionId(t.session_id),e=function(e){return function(){return e.onQueue(t),e.waitingListTimeout.start()}}(this),this.initialQueueDelay&&!this.onInitialQueueDelayId?void(this.onInitialQueueDelayId=setTimeout(e,this.initialQueueDelay)):(this.onInitialQueueDelayId&&clearTimeout(this.onInitialQueueDelayId),e())},i.prototype.onQueue=function(t){return this.log.notice("onQueue",t.position),this.inQueue=!0,this.el.find(".zammad-chat-modal").html(this.view("waiting")({position:t.position}))},i.prototype.onAgentTypingStart=function(){return this.stopTypingId&&clearTimeout(this.stopTypingId),this.stopTypingId=setTimeout(this.onAgentTypingEnd,3e3),!this.el.find(".zammad-chat-message--typing").get(0)&&(this.maybeAddTimestamp(),this.el.find(".zammad-chat-body").append(this.view("typingIndicator")()),this.isVisible(this.el.find(".zammad-chat-message--typing"),!0))?this.scrollToBottom():void 0},i.prototype.onAgentTypingEnd=function(){return this.el.find(".zammad-chat-message--typing").remove()},i.prototype.onLeaveTemporary=function(){return this.sessionId?this.send("chat_session_leave_temporary",{session_id:this.sessionId}):void 0},i.prototype.maybeAddTimestamp=function(){var t,e,s;return s=Date.now(),!this.lastTimestamp||s-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=s):(this.el.find(".zammad-chat-body").append(this.view("timestamp")({label:t,time:e})),this.lastTimestamp=s,this.lastAddedType="timestamp",this.scrollToBottom())):void 0},i.prototype.updateLastTimestamp=function(t,e){return this.el?this.el.find(".zammad-chat-body").find(".zammad-chat-timestamp").last().replaceWith(this.view("timestamp")({label:t,time:e})):void 0},i.prototype.addStatus=function(t){return this.el?(this.maybeAddTimestamp(),this.el.find(".zammad-chat-body").append(this.view("status")({status:t})),this.scrollToBottom()):void 0},i.prototype.detectScrolledtoBottom=function(){var t;return t=this.el.find(".zammad-chat-body").scrollTop()+this.el.find(".zammad-chat-body").outerHeight(),this.scrolledToBottom=Math.abs(t-this.el.find(".zammad-chat-body").prop("scrollHeight"))<=this.scrollSnapTolerance,this.scrolledToBottom?this.el.find(".zammad-scroll-hint").addClass("is-hidden"):void 0},i.prototype.showScrollHint=function(){return this.el.find(".zammad-scroll-hint").removeClass("is-hidden"),this.el.find(".zammad-chat-body").scrollTop(this.el.find(".zammad-chat-body").scrollTop()+this.el.find(".zammad-scroll-hint").outerHeight())},i.prototype.onScrollHintClick=function(){return this.el.find(".zammad-chat-body").animate({scrollTop:this.el.find(".zammad-chat-body").prop("scrollHeight")},300)},i.prototype.scrollToBottom=function(e){var s;return s=(null!=e?e:{showHint:!1}).showHint,this.scrolledToBottom?this.el.find(".zammad-chat-body").scrollTop(t(".zammad-chat-body").prop("scrollHeight")):s?this.showScrollHint():void 0},i.prototype.destroy=function(t){return null==t&&(t={}),this.log.debug("destroy widget",t),this.setAgentOnlineState("offline"),t.remove&&this.el&&this.el.remove(),this.waitingListTimeout&&this.waitingListTimeout.stop(),this.inactiveTimeout&&this.inactiveTimeout.stop(),this.idleTimeout&&this.idleTimeout.stop(),this.io.close()},i.prototype.reconnect=function(){return this.log.notice("reconnecting"),this.disableInput(),this.lastAddedType="status",this.setAgentOnlineState("connecting"),this.addStatus(this.T("Connection lost"))},i.prototype.onConnectionReestablished=function(){return this.lastAddedType="status",this.setAgentOnlineState("online"),this.addStatus(this.T("Connection re-established"))},i.prototype.onSessionClosed=function(t){return this.addStatus(this.T("Chat closed by %s",t.realname)),this.disableInput(),this.setAgentOnlineState("offline"),this.inactiveTimeout.stop()},i.prototype.setSessionId=function(t){return this.sessionId=t,void 0===t?sessionStorage.removeItem("sessionId"):sessionStorage.setItem("sessionId",t)},i.prototype.onConnectionEstablished=function(t){return this.onInitialQueueDelayId&&clearTimeout(this.onInitialQueueDelayId),this.inQueue=!1,t.agent&&(this.agent=t.agent),t.session_id&&this.setSessionId(t.session_id),this.el.find(".zammad-chat-body").html(""),this.el.find(".zammad-chat-agent").html(this.view("agent")({agent:this.agent})),this.enableInput(),this.hideModal(),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.isFullscreen||this.input.focus(),this.setAgentOnlineState("online"),this.waitingListTimeout.stop(),this.idleTimeout.stop(),this.inactiveTimeout.start()},i.prototype.showCustomerTimeout=function(){var t;return this.el.find(".zammad-chat-modal").html(this.view("customer_timeout")({agent:this.agent.name,delay:this.options.inactiveTimeout})),t=function(){return location.reload()},this.el.find(".js-restart").click(t),this.sessionClose()},i.prototype.showWaitingListTimeout=function(){var t;return this.el.find(".zammad-chat-modal").html(this.view("waiting_list_timeout")({delay:this.options.watingListTimeout})),t=function(){return location.reload()},this.el.find(".js-restart").click(t),this.sessionClose()},i.prototype.showLoader=function(){return this.el.find(".zammad-chat-modal").html(this.view("loader")())},i.prototype.setAgentOnlineState=function(t){var e;return this.state=t,this.el?(e=t.charAt(0).toUpperCase()+t.slice(1),this.el.find(".zammad-chat-agent-status").attr("data-status",t).text(this.T(e))):void 0},i.prototype.detectHost=function(){var t;return t="ws://","https"===l&&(t="wss://"),this.options.host=""+t+h+"/ws"},i.prototype.loadCss=function(){var t,e,s;if(this.options.cssAutoload)return s=this.options.cssUrl,s||(s=this.options.host.replace(/^wss/i,"https").replace(/^ws/i,"http").replace(/\/ws/i,""),s+="/assets/chat/chat.css"),this.log.debug("load css from '"+s+"'"),e="@import url('"+s+"');",t=document.createElement("link"),t.onload=this.onCssLoaded,t.rel="stylesheet",t.href="data:text/css,"+escape(e),document.getElementsByTagName("head")[0].appendChild(t)},i.prototype.onCssLoaded=function(){return this.socketReady?this.onReady():this.cssLoaded=!0},i.prototype.startTimeoutObservers=function(){return this.idleTimeout=new o({logPrefix:"idleTimeout",debug:this.options.debug,timeout:this.options.idleTimeout,timeoutIntervallCheck:this.options.idleTimeoutIntervallCheck,callback:function(t){return function(){return t.log.debug("Idle timeout reached, hide widget",new Date),t.destroy({remove:!0})}}(this)}),this.inactiveTimeout=new o({logPrefix:"inactiveTimeout",debug:this.options.debug,timeout:this.options.inactiveTimeout,timeoutIntervallCheck:this.options.inactiveTimeoutIntervallCheck,callback:function(t){return function(){return t.log.debug("Inactive timeout reached, show timeout screen.",new Date),t.showCustomerTimeout(),t.destroy({remove:!1})}}(this)}),this.waitingListTimeout=new o({logPrefix:"waitingListTimeout",debug:this.options.debug,timeout:this.options.waitingListTimeout,timeoutIntervallCheck:this.options.waitingListTimeoutIntervallCheck,callback:function(t){return function(){return t.log.debug("Waiting list timeout reached, show timeout screen.",new Date),t.showWaitingListTimeout(),t.destroy({remove:!1})}}(this)})},i.prototype.disableScrollOnRoot=function(){return this.rootScrollOffset=this.scrollRoot.scrollTop(),this.scrollRoot.css({overflow:"hidden",position:"fixed"})},i.prototype.enableScrollOnRoot=function(){return this.scrollRoot.scrollTop(this.rootScrollOffset),this.scrollRoot.css({overflow:"",position:""})},i.prototype.isVisible=function(s,n,i,o){var a,r,h,l,d,c,u,p,m,g,f,y,v,b,w,T,z,S,C,I,k,_,O,A,x,E;if(!(s.length<1))if(r=t(e),a=s.length>1?s.eq(0):s,S=a.get(0),E=r.width(),x=r.height(),o=o?o:"both",p=i===!0?S.offsetWidth*S.offsetHeight:!0,"function"==typeof S.getBoundingClientRect){if(z=S.getBoundingClientRect(),C=z.top>=0&&z.top0&&z.bottom<=x,b=z.left>=0&&z.left0&&z.right<=E,I=n?C||u:C&&u,v=n?b||T:b&&T,"both"===o)return p&&I&&v;if("vertical"===o)return p&&I;if("horizontal"===o)return p&&v}else{if(A=r.scrollTop(),k=A+x,_=r.scrollLeft(),O=_+E,w=a.offset(),c=w.top,h=c+a.height(),l=w.left,d=l+a.width(),y=n===!0?h:c,m=n===!0?c:h,g=n===!0?d:l,f=n===!0?l:d,"both"===o)return!!p&&k>=m&&y>=A&&O>=f&&g>=_;if("vertical"===o)return!!p&&k>=m&&y>=A;if("horizontal"===o)return!!p&&O>=f&&g>=_}},i}(s),e.ZammadChat=a}(window.jQuery,window),window.zammadChatTemplates||(window.zammadChatTemplates={}),window.zammadChatTemplates.agent=function(t){t||(t={});var e,s=[],n=function(t){return t&&t.ecoSafe?t:"undefined"!=typeof t&&null!=t?o(t):""},i=t.safe,o=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},o||(o=t.escape=function(t){return(""+t).replace(/&/g,"&").replace(//g,">").replace(/"/g,""")}),function(){(function(){this.agent.avatar&&(s.push('\n\n')),s.push('\n\n '),s.push(n(this.agent.name)),s.push("\n")}).call(this)}.call(t),t.safe=i,t.escape=o,s.join("")},jQuery.fn.autoGrow=function(t){return this.each(function(){var e=jQuery.extend({extraLine:!0},t),s=function(t){return jQuery(t).after('
'),jQuery(t).next(".autogrow-textarea-mirror")[0]},n=function(t){if(o.innerHTML=String(t.value).replace(/&/g,"&").replace(/"/g,""").replace(/'/g,"'").replace(//g,">").replace(/ /g," ").replace(/\n/g,"
")+(e.extraLine?".
.":""),jQuery(t).height()!=jQuery(o).height()){jQuery(t).height(jQuery(o).height());var s=jQuery(o).height()>a?"":"hidden";jQuery(t).css("overflow",s)}},i=function(){n(this)},o=s(this),a=parseInt(jQuery(this).css("max-height"),10);o.style.display="none",o.style.wordWrap="break-word",o.style.whiteSpace="normal",o.style.padding=jQuery(this).css("paddingTop")+" "+jQuery(this).css("paddingRight")+" "+jQuery(this).css("paddingBottom")+" "+jQuery(this).css("paddingLeft"),o.style.width=jQuery(this).css("width"),o.style.fontFamily=jQuery(this).css("font-family"),o.style.fontSize=jQuery(this).css("font-size"),o.style.lineHeight=jQuery(this).css("line-height"),o.style.letterSpacing=jQuery(this).css("letter-spacing"),o.style.boxSizing=jQuery(this).css("boxSizing"), this.style.overflow="hidden",this.style.minHeight=this.rows+"em",this.onkeyup=i,this.onfocus=i,n(this)})},window.zammadChatTemplates||(window.zammadChatTemplates={}),window.zammadChatTemplates.chat=function(t){t||(t={});var e,s=[],n=function(t){return t&&t.ecoSafe?t:"undefined"!=typeof t&&null!=t?o(t):""},i=t.safe,o=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},o||(o=t.escape=function(t){return(""+t).replace(/&/g,"&").replace(//g,">").replace(/"/g,""")}),function(){(function(){s.push('
\n
\n
\n \n \n \n \n \n
\n
\n
\n
\n \n '),s.push(this.T(this.title)),s.push('\n
\n
\n
\n \n
\n
\n \n \n
\n
")}).call(this)}.call(t),t.safe=i,t.escape=o,s.join("")},window.zammadChatTemplates||(window.zammadChatTemplates={}),window.zammadChatTemplates.customer_timeout=function(t){t||(t={});var e,s=[],n=function(t){return t&&t.ecoSafe?t:"undefined"!=typeof t&&null!=t?o(t):""},i=t.safe,o=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},o||(o=t.escape=function(t){return(""+t).replace(/&/g,"&").replace(//g,">").replace(/"/g,""")}),function(){(function(){s.push('
\n '),this.agent?(s.push("\n "),s.push(this.T("Since you didn't respond in the last %s minutes your conversation with %s got closed.",this.delay,this.agent)),s.push("\n ")):(s.push("\n "),s.push(this.T("Since you didn't respond in the last %s minutes your conversation got closed.",this.delay)),s.push("\n ")),s.push('\n
\n
"),s.push(this.T("Start new conversation")),s.push("
\n
")}).call(this)}.call(t),t.safe=i,t.escape=o,s.join("")},window.zammadChatTemplates||(window.zammadChatTemplates={}),window.zammadChatTemplates.loader=function(t){t||(t={});var e,s=[],n=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(){s.push('\n \n \n \n\n'),s.push(this.T("Connecting")),s.push("")}).call(this)}.call(t),t.safe=n,t.escape=i,s.join("")},window.zammadChatTemplates||(window.zammadChatTemplates={}),window.zammadChatTemplates.message=function(t){t||(t={});var e,s=[],n=function(t){return t&&t.ecoSafe?t:"undefined"!=typeof t&&null!=t?o(t):""},i=t.safe,o=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},o||(o=t.escape=function(t){return(""+t).replace(/&/g,"&").replace(//g,">").replace(/"/g,""")}),function(){(function(){s.push('
\n "),s.push(this.message),s.push("\n
")}).call(this)}.call(t),t.safe=i,t.escape=o,s.join("")},window.zammadChatTemplates||(window.zammadChatTemplates={}),window.zammadChatTemplates.status=function(t){t||(t={});var e,s=[],n=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(){s.push('
\n
\n '),s.push(this.status),s.push("\n
\n
")}).call(this)}.call(t),t.safe=n,t.escape=i,s.join("")},window.zammadChatTemplates||(window.zammadChatTemplates={}),window.zammadChatTemplates.timestamp=function(t){t||(t={});var e,s=[],n=function(t){return t&&t.ecoSafe?t:"undefined"!=typeof t&&null!=t?o(t):""},i=t.safe,o=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},o||(o=t.escape=function(t){return(""+t).replace(/&/g,"&").replace(//g,">").replace(/"/g,""")}),function(){(function(){s.push('
'),s.push(n(this.label)),s.push(" "),s.push(n(this.time)),s.push("
")}).call(this)}.call(t),t.safe=i,t.escape=o,s.join("")},window.zammadChatTemplates||(window.zammadChatTemplates={}),window.zammadChatTemplates.typingIndicator=function(t){t||(t={});var e,s=[],n=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(){s.push('
\n \n \n \n \n \n \n \n
')}).call(this)}.call(t),t.safe=n,t.escape=i,s.join("")},window.zammadChatTemplates||(window.zammadChatTemplates={}),window.zammadChatTemplates.waiting=function(t){t||(t={});var e,s=[],n=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(){s.push('
\n \n \n \n \n \n '),s.push(this.T("All colleagues are busy.")),s.push("
\n "),s.push(this.T("You are on waiting list position %s.",this.position)),s.push("\n
")}).call(this)}.call(t),t.safe=n,t.escape=i,s.join("")},window.zammadChatTemplates||(window.zammadChatTemplates={}),window.zammadChatTemplates.waiting_list_timeout=function(t){t||(t={});var e,s=[],n=function(t){return t&&t.ecoSafe?t:"undefined"!=typeof t&&null!=t?o(t):""},i=t.safe,o=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},o||(o=t.escape=function(t){return(""+t).replace(/&/g,"&").replace(//g,">").replace(/"/g,""")}),function(){(function(){s.push('
\n '),s.push(this.T("We are sorry, it takes longer as expected to get an empty slot. Please try again later or send us an email. Thank you!")),s.push('\n
\n
"),s.push(this.T("Start new conversation")),s.push("
\n
")}).call(this)}.call(t),t.safe=i,t.escape=o,s.join("")}; \ No newline at end of file From 0065028ee61a7a433cce58c9501bd40340fdd5a4 Mon Sep 17 00:00:00 2001 From: Martin Edenhofer Date: Wed, 5 Jul 2017 07:18:19 +0200 Subject: [PATCH 003/144] Implemented issue#341 - optional subject for email, define if twitter initials are used and default internal state of new notes. --- .../app/controllers/ticket_zoom.coffee | 19 +- .../ticket_zoom/article_new.coffee | 218 ++++++++++-------- .../{higlighter.coffee => highlighter.coffee} | 0 .../controllers/ticket_zoom/setting.coffee | 35 +++ .../javascripts/app/views/ticket_zoom.jst.eco | 15 +- .../app/views/ticket_zoom/article_new.jst.eco | 10 +- .../app/views/ticket_zoom/setting.jst.eco | 3 + .../20170630000001_ticket_zoom_setting.rb | 99 ++++++++ db/seeds/settings.rb | 65 +++++- test/browser_test_helper.rb | 2 +- 10 files changed, 342 insertions(+), 124 deletions(-) rename app/assets/javascripts/app/controllers/ticket_zoom/{higlighter.coffee => highlighter.coffee} (100%) create mode 100644 app/assets/javascripts/app/controllers/ticket_zoom/setting.coffee create mode 100644 app/assets/javascripts/app/views/ticket_zoom/setting.jst.eco create mode 100644 db/migrate/20170630000001_ticket_zoom_setting.rb diff --git a/app/assets/javascripts/app/controllers/ticket_zoom.coffee b/app/assets/javascripts/app/controllers/ticket_zoom.coffee index d523501f2..067618d68 100644 --- a/app/assets/javascripts/app/controllers/ticket_zoom.coffee +++ b/app/assets/javascripts/app/controllers/ticket_zoom.coffee @@ -404,7 +404,7 @@ class App.TicketZoom extends App.Controller ) new App.TicketZoomOverviewNavigator( - el: elLocal.find('.overview-navigator') + el: elLocal.find('.js-overviewNavigatorContainer') ticket_id: @ticket_id overview_id: @overview_id ) @@ -412,13 +412,13 @@ class App.TicketZoom extends App.Controller new App.TicketZoomTitle( object_id: @ticket_id overview_id: @overview_id - el: elLocal.find('.ticket-title') + el: elLocal.find('.js-ticketTitleContainer') task_key: @task_key ) new App.TicketZoomMeta( object_id: @ticket_id - el: elLocal.find('.ticket-meta') + el: elLocal.find('.js-ticketMetaContainer') ) @attributeBar = new App.TicketZoomAttributeBar( @@ -445,7 +445,12 @@ class App.TicketZoom extends App.Controller ) @highligher = new App.TicketZoomHighlighter( - el: elLocal.find('.highlighter') + el: elLocal.find('.js-highlighterContainer') + ticket_id: @ticket_id + ) + + new App.TicketZoomSetting( + el: elLocal.find('.js-settingContainer') ticket_id: @ticket_id ) @@ -557,14 +562,16 @@ class App.TicketZoom extends App.Controller return if !@ticket currentStoreTicket = @ticket.attributes() delete currentStoreTicket.article + internal = @Config.get('ui_ticket_zoom_article_note_new_internal') currentStore = ticket: currentStoreTicket article: to: '' cc: '' + subject: '' type: 'note' body: '' - internal: 'true' + internal: internal in_reply_to: '' if @permissionCheck('ticket.customer') @@ -575,7 +582,7 @@ class App.TicketZoom extends App.Controller formCurrent: => currentParams = ticket: @formParam(@el.find('.edit')) - article: @formParam(@el.find('.article-add')) + article: @articleNew.params() # add attachments if exist attachmentCount = @$('.article-add .textBubble .attachments .attachment').length diff --git a/app/assets/javascripts/app/controllers/ticket_zoom/article_new.coffee b/app/assets/javascripts/app/controllers/ticket_zoom/article_new.coffee index c42c5ba7a..60fd1b1bf 100644 --- a/app/assets/javascripts/app/controllers/ticket_zoom/article_new.coffee +++ b/app/assets/javascripts/app/controllers/ticket_zoom/article_new.coffee @@ -28,107 +28,9 @@ class App.TicketZoomArticleNew extends App.Controller constructor: -> super - # set possble article types - possibleArticleType = - note: true - phone: true - if @ticket && @ticket.create_article_type_id - articleTypeCreate = App.TicketArticleType.find(@ticket.create_article_type_id).name - if articleTypeCreate is 'twitter status' - possibleArticleType['twitter status'] = true - else if articleTypeCreate is 'twitter direct-message' - possibleArticleType['twitter direct-message'] = true - else if articleTypeCreate is 'email' - possibleArticleType['email'] = true - else if articleTypeCreate is 'facebook feed post' - possibleArticleType['facebook feed comment'] = true - else if articleTypeCreate is 'telegram personal-message' - possibleArticleType['telegram personal-message'] = true - if @ticket && @ticket.customer_id - customer = App.User.find(@ticket.customer_id) - if customer.email - possibleArticleType['email'] = true - - # gets referenced in @setArticleType @internalSelector = true @type = @defaults['type'] || 'note' - @articleTypes = [] - if possibleArticleType.note - internal = @Config.get('ui_ticket_zoom_article_new_internal') - - @articleTypes.push { - name: 'note' - icon: 'note' - attributes: [] - internal: internal, - features: ['attachment'] - } - if possibleArticleType.email - @articleTypes.push { - name: 'email' - icon: 'email' - attributes: ['to', 'cc'] - internal: false, - features: ['attachment'] - } - if possibleArticleType['facebook feed comment'] - @articleTypes.push { - name: 'facebook feed comment' - icon: 'facebook' - attributes: [] - internal: false, - features: [] - } - if possibleArticleType['twitter status'] - @articleTypes.push { - name: 'twitter status' - icon: 'twitter' - attributes: [] - internal: false, - features: ['body:limit', 'body:initials'] - maxTextLength: 140 - warningTextLength: 30 - } - if possibleArticleType['twitter direct-message'] - @articleTypes.push { - name: 'twitter direct-message' - icon: 'twitter' - attributes: ['to'] - internal: false, - features: ['body:limit', 'body:initials'] - maxTextLength: 10000 - warningTextLength: 500 - } - if possibleArticleType.phone - @articleTypes.push { - name: 'phone' - icon: 'phone' - attributes: [] - internal: false, - features: ['attachment'] - } - if possibleArticleType['telegram personal-message'] - @articleTypes.push { - name: 'telegram personal-message' - icon: 'telegram' - attributes: [] - internal: false, - features: ['attachment'] - maxTextLength: 10000 - warningTextLength: 5000 - } - - if @permissionCheck('ticket.customer') - @type = 'note' - @articleTypes = [ - { - name: 'note' - icon: 'note' - attributes: [] - internal: false, - features: ['attachment'] - }, - ] + @setPossibleArticleTypes() if @permissionCheck('ticket.customer') @internalSelector = false @@ -181,6 +83,114 @@ class App.TicketZoomArticleNew extends App.Controller @render() ) + setPossibleArticleTypes: => + possibleArticleType = + note: true + phone: true + if @ticket && @ticket.create_article_type_id + articleTypeCreate = App.TicketArticleType.find(@ticket.create_article_type_id).name + if articleTypeCreate is 'twitter status' + possibleArticleType['twitter status'] = true + else if articleTypeCreate is 'twitter direct-message' + possibleArticleType['twitter direct-message'] = true + else if articleTypeCreate is 'email' + possibleArticleType['email'] = true + else if articleTypeCreate is 'facebook feed post' + possibleArticleType['facebook feed comment'] = true + else if articleTypeCreate is 'telegram personal-message' + possibleArticleType['telegram personal-message'] = true + if @ticket && @ticket.customer_id + customer = App.User.find(@ticket.customer_id) + if customer.email + possibleArticleType['email'] = true + + # gets referenced in @setArticleType + @articleTypes = [] + if possibleArticleType.note + internal = @Config.get('ui_ticket_zoom_article_note_new_internal') + @articleTypes.push { + name: 'note' + icon: 'note' + attributes: [] + internal: internal, + features: ['attachment'] + } + if possibleArticleType.email + attributes = ['to', 'cc', 'subject'] + if !@Config.get('ui_ticket_zoom_article_email_subject') + attributes = ['to', 'cc'] + @articleTypes.push { + name: 'email' + icon: 'email' + attributes: attributes + internal: false, + features: ['attachment'] + } + if possibleArticleType['facebook feed comment'] + @articleTypes.push { + name: 'facebook feed comment' + icon: 'facebook' + attributes: [] + internal: false, + features: [] + } + if possibleArticleType['twitter status'] + attributes = ['body:limit', 'body:initials'] + if !@Config.get('ui_ticket_zoom_article_twitter_initials') + attributes = ['body:limit'] + @articleTypes.push { + name: 'twitter status' + icon: 'twitter' + attributes: [] + internal: false, + features: ['body:limit', 'body:initials'] + maxTextLength: 140 + warningTextLength: 30 + } + if possibleArticleType['twitter direct-message'] + attributes = ['body:limit', 'body:initials'] + if !@Config.get('ui_ticket_zoom_article_twitter_initials') + attributes = ['body:limit'] + @articleTypes.push { + name: 'twitter direct-message' + icon: 'twitter' + attributes: ['to'] + internal: false, + features: ['body:limit', 'body:initials'] + maxTextLength: 10000 + warningTextLength: 500 + } + if possibleArticleType.phone + @articleTypes.push { + name: 'phone' + icon: 'phone' + attributes: [] + internal: false, + features: ['attachment'] + } + if possibleArticleType['telegram personal-message'] + @articleTypes.push { + name: 'telegram personal-message' + icon: 'telegram' + attributes: [] + internal: false, + features: ['attachment'] + maxTextLength: 10000 + warningTextLength: 5000 + } + + if @permissionCheck('ticket.customer') + @type = 'note' + @articleTypes = [ + { + name: 'note' + icon: 'note' + attributes: [] + internal: false, + features: ['attachment'] + }, + ] + placeCaretAtEnd: (el) -> el.focus() if typeof window.getSelection isnt 'undefined' && typeof document.createRange isnt 'undefined' @@ -318,9 +328,6 @@ class App.TicketZoomArticleNew extends App.Controller params.form_id = @form_id params.content_type = 'text/html' - if !params['internal'] - params['internal'] = false - if @permissionCheck('ticket.customer') sender = App.TicketArticleSender.findByAttribute('name', 'Customer') type = App.TicketArticleType.findByAttribute('name', 'web') @@ -332,6 +339,11 @@ class App.TicketZoomArticleNew extends App.Controller params.sender_id = sender.id params.type_id = type.id + if params.internal + params.internal = true + else + params.internal = false + if params.type is 'twitter status' App.Utils.htmlRemoveRichtext(@$('[data-name=body]'), false) params.content_type = 'text/plain' @@ -478,6 +490,8 @@ class App.TicketZoomArticleNew extends App.Controller @articleNewEdit.attr('data-type', type) @$('.js-selectableTypes').addClass('hide').filter("[data-type='#{type}']").removeClass('hide') + @setPossibleArticleTypes() + # get config config = {} for articleTypeConfig in @articleTypes diff --git a/app/assets/javascripts/app/controllers/ticket_zoom/higlighter.coffee b/app/assets/javascripts/app/controllers/ticket_zoom/highlighter.coffee similarity index 100% rename from app/assets/javascripts/app/controllers/ticket_zoom/higlighter.coffee rename to app/assets/javascripts/app/controllers/ticket_zoom/highlighter.coffee diff --git a/app/assets/javascripts/app/controllers/ticket_zoom/setting.coffee b/app/assets/javascripts/app/controllers/ticket_zoom/setting.coffee new file mode 100644 index 000000000..1103f9e3c --- /dev/null +++ b/app/assets/javascripts/app/controllers/ticket_zoom/setting.coffee @@ -0,0 +1,35 @@ +class App.TicketZoomSetting extends App.Controller + events: + 'click .js-setting': 'show' + + constructor: -> + super + return if !@permissionCheck('admin') + @render() + + render: -> + @html(App.view('ticket_zoom/setting')()) + + show: -> + new Modal() + +class Modal extends App.ControllerModal + buttonClose: true + buttonCancel: true + buttonSubmit: false + head: 'Settings' + + constructor: -> + super + + render: => + super + + post: => + new App.SettingsArea( + area: 'UI::TicketZoom' + el: @el.find('.modal-body') + ) + + content: -> + App.view('generic/page_loading')() diff --git a/app/assets/javascripts/app/views/ticket_zoom.jst.eco b/app/assets/javascripts/app/views/ticket_zoom.jst.eco index 36ef86765..89d8733a8 100644 --- a/app/assets/javascripts/app/views/ticket_zoom.jst.eco +++ b/app/assets/javascripts/app/views/ticket_zoom.jst.eco @@ -1,21 +1,22 @@
<%- @C('ticket_hook') %> <%- @ticket.number %> -
-
-
+
+
+
-
-
+
+
+
-
-
+
+
diff --git a/app/assets/javascripts/app/views/ticket_zoom/article_new.jst.eco b/app/assets/javascripts/app/views/ticket_zoom/article_new.jst.eco index 4f160381a..7f7142818 100644 --- a/app/assets/javascripts/app/views/ticket_zoom/article_new.jst.eco +++ b/app/assets/javascripts/app/views/ticket_zoom/article_new.jst.eco @@ -41,13 +41,19 @@
-
+
-
+
+
+
+
+ +
+
diff --git a/app/assets/javascripts/app/views/ticket_zoom/setting.jst.eco b/app/assets/javascripts/app/views/ticket_zoom/setting.jst.eco new file mode 100644 index 000000000..491eab3c3 --- /dev/null +++ b/app/assets/javascripts/app/views/ticket_zoom/setting.jst.eco @@ -0,0 +1,3 @@ +
+ <%- @Icon('cog', 'dropdown-icon') %> +
\ No newline at end of file diff --git a/db/migrate/20170630000001_ticket_zoom_setting.rb b/db/migrate/20170630000001_ticket_zoom_setting.rb new file mode 100644 index 000000000..9966132fd --- /dev/null +++ b/db/migrate/20170630000001_ticket_zoom_setting.rb @@ -0,0 +1,99 @@ +class TicketZoomSetting < ActiveRecord::Migration + def up + + # return if it's a new setup + return if !Setting.find_by(name: 'system_init_done') + + setting = Setting.find_by(name: 'ui_ticket_zoom_article_new_internal') + if setting + setting.title = 'Note - default visibility' + setting.name = 'ui_ticket_zoom_article_note_new_internal' + setting.description = 'Default visibility for new articles.' + setting.preferences[:prio] = 100 + setting.options[:form][0][:name] = 'ui_ticket_zoom_article_note_new_internal' + setting.save! + end + Setting.create_if_not_exists( + title: 'Note - default visibility', + name: 'ui_ticket_zoom_article_note_new_internal', + area: 'UI::TicketZoom', + description: 'Default visibility for new articles.', + options: { + form: [ + { + display: '', + null: true, + name: 'ui_ticket_zoom_article_note_new_internal', + tag: 'boolean', + translate: true, + options: { + true => 'internal', + false => 'public', + }, + }, + ], + }, + state: true, + preferences: { + prio: 100, + permission: ['admin.ui'], + }, + frontend: true + ) + Setting.create_if_not_exists( + title: 'Email - subject field', + name: 'ui_ticket_zoom_article_email_subject', + area: 'UI::TicketZoom', + description: 'Use subject field for emails. If disabled, the ticket title will be used as subject.', + options: { + form: [ + { + display: '', + null: true, + name: 'ui_ticket_zoom_article_email_subject', + tag: 'boolean', + translate: true, + options: { + true => 'yes', + false => 'no', + }, + }, + ], + }, + state: false, + preferences: { + prio: 200, + permission: ['admin.ui'], + }, + frontend: true + ) + Setting.create_if_not_exists( + title: 'Twitter - tweet initials', + name: 'ui_ticket_zoom_article_twitter_initials', + area: 'UI::TicketZoom', + description: 'Add sender initials to end of a tweet.', + options: { + form: [ + { + display: '', + null: true, + name: 'ui_ticket_zoom_article_twitter_initials', + tag: 'boolean', + translate: true, + options: { + true => 'yes', + false => 'no', + }, + }, + ], + }, + state: true, + preferences: { + prio: 300, + permission: ['admin.ui'], + }, + frontend: true + ) + end + +end diff --git a/db/seeds/settings.rb b/db/seeds/settings.rb index 9734aa262..73b3b7797 100644 --- a/db/seeds/settings.rb +++ b/db/seeds/settings.rb @@ -546,18 +546,17 @@ Setting.create_if_not_exists( }, frontend: true ) - Setting.create_if_not_exists( - title: 'Define default visibility of new a new article', - name: 'ui_ticket_zoom_article_new_internal', + title: 'Note - default visibility', + name: 'ui_ticket_zoom_article_note_new_internal', area: 'UI::TicketZoom', - description: 'Set default visibility of new a new article.', + description: 'Default visibility for new note.', options: { form: [ { display: '', null: true, - name: 'ui_ticket_zoom_article_new_internal', + name: 'ui_ticket_zoom_article_note_new_internal', tag: 'boolean', translate: true, options: { @@ -569,7 +568,61 @@ Setting.create_if_not_exists( }, state: true, preferences: { - prio: 1, + prio: 100, + permission: ['admin.ui'], + }, + frontend: true +) +Setting.create_if_not_exists( + title: 'Email - subject field', + name: 'ui_ticket_zoom_article_email_subject', + area: 'UI::TicketZoom', + description: 'Use subject field for emails. If disabled, the ticket title will be used as subject.', + options: { + form: [ + { + display: '', + null: true, + name: 'ui_ticket_zoom_article_email_subject', + tag: 'boolean', + translate: true, + options: { + true => 'yes', + false => 'no', + }, + }, + ], + }, + state: false, + preferences: { + prio: 200, + permission: ['admin.ui'], + }, + frontend: true +) +Setting.create_if_not_exists( + title: 'Twitter - tweet initials', + name: 'ui_ticket_zoom_article_twitter_initials', + area: 'UI::TicketZoom', + description: 'Add sender initials to end of a tweet.', + options: { + form: [ + { + display: '', + null: true, + name: 'ui_ticket_zoom_article_twitter_initials', + tag: 'boolean', + translate: true, + options: { + true => 'yes', + false => 'no', + }, + }, + ], + }, + state: true, + preferences: { + prio: 300, permission: ['admin.ui'], }, frontend: true diff --git a/test/browser_test_helper.rb b/test/browser_test_helper.rb index 1e221f193..f0c42a8d1 100644 --- a/test/browser_test_helper.rb +++ b/test/browser_test_helper.rb @@ -2261,7 +2261,7 @@ wait untill text in selector disabppears 9.times { begin text = instance.find_elements(css: '.content.active .js-reset')[0].text - if !text || text.empty? + if text.blank? screenshot(browser: instance, comment: 'ticket_update_ok') sleep 1 return true From 714b88aa93ec08acf8c170e577e7f971688da68a Mon Sep 17 00:00:00 2001 From: Rolf Schmidt Date: Thu, 6 Jul 2017 11:05:28 +0200 Subject: [PATCH 004/144] Fixed issue #1194 - Add date/time information to time accounting (xls export). --- .../views/time_accounting/by_ticket.jst.eco | 4 + .../time_accountings_controller.rb | 92 +++++++++++++++++++ 2 files changed, 96 insertions(+) diff --git a/app/assets/javascripts/app/views/time_accounting/by_ticket.jst.eco b/app/assets/javascripts/app/views/time_accounting/by_ticket.jst.eco index 143de9e84..0f395dbf9 100644 --- a/app/assets/javascripts/app/views/time_accounting/by_ticket.jst.eco +++ b/app/assets/javascripts/app/views/time_accounting/by_ticket.jst.eco @@ -13,6 +13,8 @@ <%- @T('Agent') %> <%- @T('Time Units') %> <%- @T('Time Units Total') %> + <%- @T('Created at') %> + <%- @T('Closed at') %> <% for row in @rows: %> @@ -24,6 +26,8 @@ <%= row.agent %> <%= row.time_unit %> <%= row.ticket.time_unit %> + <%- @humanTime(row.ticket.created_at) %> + <%- @humanTime(row.ticket.close_at) %> <% end %> diff --git a/app/controllers/time_accountings_controller.rb b/app/controllers/time_accountings_controller.rb index f2acb1a09..69268dc2d 100644 --- a/app/controllers/time_accountings_controller.rb +++ b/app/controllers/time_accountings_controller.rb @@ -93,9 +93,84 @@ class TimeAccountingsController < ApplicationController name: 'Time Units Total', width: 10, }, + { + name: 'Created at', + width: 10, + }, + { + name: 'Closed at', + width: 10, + }, + { + name: 'Close Escalation At', + width: 10, + }, + { + name: 'Close In Min', + width: 10, + }, + { + name: 'Close Diff In Min', + width: 10, + }, + { + name: 'First Response At', + width: 10, + }, + { + name: 'First Response Escalation At', + width: 10, + }, + { + name: 'First Response In Min', + width: 10, + }, + { + name: 'First Response Diff In Min', + width: 10, + }, + { + name: 'Update Escalation At', + width: 10, + }, + { + name: 'Update In Min', + width: 10, + }, + { + name: 'Update Diff In Min', + width: 10, + }, + { + name: 'Last Contact At', + width: 10, + }, + { + name: 'Last Contact Agent At', + width: 10, + }, + { + name: 'Last Contact Customer At', + width: 10, + }, + { + name: 'Article Count', + width: 10, + }, + { + name: 'Escalation At', + width: 10, + }, ] result = [] results.each { |row| + row[:ticket].keys.each{|field| + next if row[:ticket][field].blank? + next if !row[:ticket][field].kind_of?(ActiveSupport::TimeWithZone) + + row[:ticket][field] = row[:ticket][field].iso8601 + } + result_row = [ row[:ticket]['number'], row[:ticket]['title'], @@ -104,6 +179,23 @@ class TimeAccountingsController < ApplicationController row[:agent], row[:time_unit], row[:ticket]['time_unit'], + row[:ticket]['created_at'], + row[:ticket]['close_at'], + row[:ticket]['close_escalation_at'], + row[:ticket]['close_in_min'], + row[:ticket]['close_diff_in_min'], + row[:ticket]['first_response_at'], + row[:ticket]['first_response_escalation_at'], + row[:ticket]['first_response_in_min'], + row[:ticket]['first_response_diff_in_min'], + row[:ticket]['update_escalation_at'], + row[:ticket]['update_in_min'], + row[:ticket]['update_diff_in_min'], + row[:ticket]['last_contact_at'], + row[:ticket]['last_contact_agent_at'], + row[:ticket]['last_contact_customer_at'], + row[:ticket]['article_count'], + row[:ticket]['escalation_at'], ] result.push result_row } From 164aa47e577d9dc2536f96229c8f533e827bca2d Mon Sep 17 00:00:00 2001 From: Rolf Schmidt Date: Thu, 6 Jul 2017 13:47:33 +0200 Subject: [PATCH 005/144] Tidied. --- app/controllers/time_accountings_controller.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/controllers/time_accountings_controller.rb b/app/controllers/time_accountings_controller.rb index 69268dc2d..e258217a7 100644 --- a/app/controllers/time_accountings_controller.rb +++ b/app/controllers/time_accountings_controller.rb @@ -164,9 +164,9 @@ class TimeAccountingsController < ApplicationController ] result = [] results.each { |row| - row[:ticket].keys.each{|field| + row[:ticket].keys.each { |field| next if row[:ticket][field].blank? - next if !row[:ticket][field].kind_of?(ActiveSupport::TimeWithZone) + next if !row[:ticket][field].is_a?(ActiveSupport::TimeWithZone) row[:ticket][field] = row[:ticket][field].iso8601 } From 74ebb10d2c2b3a39a94e90596b5d725e53ef321c Mon Sep 17 00:00:00 2001 From: Rolf Schmidt Date: Thu, 6 Jul 2017 15:58:10 +0200 Subject: [PATCH 006/144] Fixed issue #1149 - Trigger: Wrong behaviour for condition "is not" "not set". --- app/models/ticket.rb | 6 +- test/unit/ticket_trigger_test.rb | 222 +++++++++++++++++++++++++++++++ 2 files changed, 225 insertions(+), 3 deletions(-) diff --git a/app/models/ticket.rb b/app/models/ticket.rb index 6c5537b74..01c8a502e 100644 --- a/app/models/ticket.rb +++ b/app/models/ticket.rb @@ -504,7 +504,7 @@ condition example query += "#{attribute} IN (?)" bind_params.push 1 else - query += "#{attribute} IS NOT NULL" + query += "#{attribute} IS NULL" end elsif selector['pre_condition'] == 'current_user.id' raise "Use current_user.id in selector, but no current_user is set #{selector.inspect}" if !current_user_id @@ -518,7 +518,7 @@ condition example else # rubocop:disable Style/IfInsideElse if selector['value'].nil? - query += "#{attribute} IS NOT NULL" + query += "#{attribute} IS NULL" else query += "#{attribute} IN (?)" bind_params.push selector['value'] @@ -531,7 +531,7 @@ condition example query += "#{attribute} NOT IN (?)" bind_params.push 1 else - query += "#{attribute} IS NULL" + query += "#{attribute} IS NOT NULL" end elsif selector['pre_condition'] == 'current_user.id' query += "#{attribute} NOT IN (?)" diff --git a/test/unit/ticket_trigger_test.rb b/test/unit/ticket_trigger_test.rb index 7a7d6f628..306630c8a 100644 --- a/test/unit/ticket_trigger_test.rb +++ b/test/unit/ticket_trigger_test.rb @@ -1414,6 +1414,228 @@ class TicketTriggerTest < ActiveSupport::TestCase end + test '6.1 owner auto assignment based on organization' do + trigger1 = Trigger.create_or_update( + name: 'aaa auto assignment', + condition: { + 'ticket.organization_id' => { + 'operator' => 'is not', + 'pre_condition' => 'not_set', + 'value' => '', + 'value_completion' => '', + }, + 'ticket.action' => { + 'operator' => 'is', + 'value' => 'update', + }, + }, + perform: { + 'ticket.owner_id' => { + 'pre_condition' => 'current_user.id', + 'value' => '', + 'value_completion' => '', + }, + }, + disable_notification: true, + active: true, + created_by_id: 1, + updated_by_id: 1, + ) + roles = Role.where(name: 'Agent') + agent = User.create_or_update( + login: 'agent@example.com', + firstname: 'Trigger', + lastname: 'Agent1', + email: 'agent@example.com', + password: 'agentpw', + active: true, + roles: roles, + updated_by_id: 1, + created_by_id: 1, + ) + roles = Role.where(name: 'Customer') + customer = User.create_or_update( + login: 'customer@example.com', + firstname: 'Trigger', + lastname: 'Customer1', + email: 'customer@example.com', + password: 'customerpw', + vip: true, + active: true, + roles: roles, + updated_by_id: 1, + created_by_id: 1, + ) + + ticket1 = Ticket.create( + title: 'test 123', + group: Group.lookup(name: 'Users'), + customer: customer, + updated_by_id: 1, + created_by_id: 1, + ) + Ticket::Article.create( + ticket_id: ticket1.id, + from: 'some_sender@example.com', + to: 'some_recipient@example.com', + subject: 'some subject', + message_id: 'some@id', + body: "some message note\nnew line", + internal: false, + sender: Ticket::Article::Sender.find_by(name: 'Agent'), + type: Ticket::Article::Type.find_by(name: 'note'), + updated_by_id: 1, + created_by_id: 1, + ) + Observer::Transaction.commit + + assert_equal('test 123', ticket1.title, 'ticket1.title verify') + assert_equal('Users', ticket1.group.name, 'ticket1.group verify') + assert_equal(1, ticket1.owner_id, 'ticket1.owner_id verify') + assert_equal('new', ticket1.state.name, 'ticket1.state verify') + assert_equal('2 normal', ticket1.priority.name, 'ticket1.priority verify') + assert_equal(1, ticket1.articles.count, 'ticket1.articles verify') + assert_equal([], ticket1.tag_list) + + ticket1.update_attribute(:customer, User.lookup(email: 'nicole.braun@zammad.org') ) + + UserInfo.current_user_id = agent.id + Ticket::Article.create( + ticket_id: ticket1.id, + from: 'some_sender@example.com', + to: 'some_recipient@example.com', + subject: 'update', + message_id: 'some@id', + content_type: 'text/html', + body: 'update', + internal: false, + sender: Ticket::Article::Sender.find_by(name: 'Agent'), + type: Ticket::Article::Type.find_by(name: 'note'), + ) + Observer::Transaction.commit + UserInfo.current_user_id = nil + + ticket1.reload + assert_equal('test 123', ticket1.title, 'ticket1.title verify') + assert_equal('Users', ticket1.group.name, 'ticket1.group verify') + assert_equal(agent.id, ticket1.owner_id, 'ticket1.owner_id verify') + assert_equal('new', ticket1.state.name, 'ticket1.state verify') + assert_equal('2 normal', ticket1.priority.name, 'ticket1.priority verify') + assert_equal(2, ticket1.articles.count, 'ticket1.articles verify') + assert_equal([], ticket1.tag_list) + end + + test '6.2 owner auto assignment based on organization' do + trigger1 = Trigger.create_or_update( + name: 'aaa auto assignment', + condition: { + 'ticket.organization_id' => { + 'operator' => 'is', + 'pre_condition' => 'not_set', + 'value' => '', + 'value_completion' => '', + }, + 'ticket.action' => { + 'operator' => 'is', + 'value' => 'update', + }, + }, + perform: { + 'ticket.owner_id' => { + 'pre_condition' => 'current_user.id', + 'value' => '', + 'value_completion' => '', + }, + }, + disable_notification: true, + active: true, + created_by_id: 1, + updated_by_id: 1, + ) + roles = Role.where(name: 'Agent') + agent = User.create_or_update( + login: 'agent@example.com', + firstname: 'Trigger', + lastname: 'Agent1', + email: 'agent@example.com', + password: 'agentpw', + active: true, + roles: roles, + updated_by_id: 1, + created_by_id: 1, + ) + roles = Role.where(name: 'Customer') + customer = User.create_or_update( + login: 'customer@example.com', + firstname: 'Trigger', + lastname: 'Customer1', + email: 'customer@example.com', + password: 'customerpw', + vip: true, + active: true, + roles: roles, + updated_by_id: 1, + created_by_id: 1, + ) + + ticket1 = Ticket.create( + title: 'test 123', + group: Group.lookup(name: 'Users'), + customer: User.lookup(email: 'nicole.braun@zammad.org'), + updated_by_id: 1, + created_by_id: 1, + ) + Ticket::Article.create( + ticket_id: ticket1.id, + from: 'some_sender@example.com', + to: 'some_recipient@example.com', + subject: 'some subject', + message_id: 'some@id', + body: "some message note\nnew line", + internal: false, + sender: Ticket::Article::Sender.find_by(name: 'Agent'), + type: Ticket::Article::Type.find_by(name: 'note'), + updated_by_id: 1, + created_by_id: 1, + ) + Observer::Transaction.commit + + assert_equal('test 123', ticket1.title, 'ticket1.title verify') + assert_equal('Users', ticket1.group.name, 'ticket1.group verify') + assert_equal(1, ticket1.owner_id, 'ticket1.owner_id verify') + assert_equal('new', ticket1.state.name, 'ticket1.state verify') + assert_equal('2 normal', ticket1.priority.name, 'ticket1.priority verify') + assert_equal(1, ticket1.articles.count, 'ticket1.articles verify') + assert_equal([], ticket1.tag_list) + + ticket1.update_attribute(:customer, customer ) + + UserInfo.current_user_id = agent.id + Ticket::Article.create( + ticket_id: ticket1.id, + from: 'some_sender@example.com', + to: 'some_recipient@example.com', + subject: 'update', + message_id: 'some@id', + content_type: 'text/html', + body: 'update', + internal: false, + sender: Ticket::Article::Sender.find_by(name: 'Agent'), + type: Ticket::Article::Type.find_by(name: 'note'), + ) + Observer::Transaction.commit + UserInfo.current_user_id = nil + + ticket1.reload + assert_equal('test 123', ticket1.title, 'ticket1.title verify') + assert_equal('Users', ticket1.group.name, 'ticket1.group verify') + assert_equal(agent.id, ticket1.owner_id, 'ticket1.owner_id verify') + assert_equal('new', ticket1.state.name, 'ticket1.state verify') + assert_equal('2 normal', ticket1.priority.name, 'ticket1.priority verify') + assert_equal(2, ticket1.articles.count, 'ticket1.articles verify') + assert_equal([], ticket1.tag_list) + end + test '7 owner auto assignment' do trigger1 = Trigger.create_or_update( name: 'aaa auto assignment', From 672b1ab40c5e307657d09b508155570bb80152f4 Mon Sep 17 00:00:00 2001 From: Rolf Schmidt Date: Fri, 7 Jul 2017 16:47:15 +0200 Subject: [PATCH 007/144] Fixed issue #884 - Firefox - Focus lost after using :: TextSnippts. --- app/assets/javascripts/app/lib/base/jquery.textmodule.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/assets/javascripts/app/lib/base/jquery.textmodule.js b/app/assets/javascripts/app/lib/base/jquery.textmodule.js index 492229a00..6236f42d3 100644 --- a/app/assets/javascripts/app/lib/base/jquery.textmodule.js +++ b/app/assets/javascripts/app/lib/base/jquery.textmodule.js @@ -180,7 +180,7 @@ Plugin.prototype.renderBase = function() { this.$element.after('') this.$widget = this.$element.next() - this.$widget.on('click', 'li', $.proxy(this.onEntryClick, this)) + this.$widget.on('mousedown', 'li', $.proxy(this.onEntryClick, this)) this.$widget.on('mouseenter', 'li', $.proxy(this.onMouseEnter, this)) } @@ -313,6 +313,7 @@ } Plugin.prototype.onEntryClick = function(event) { + event.preventDefault() var id = $(event.target).data('id') this.take(id) } From d1278d44c2fc96e761ad90f6cc72f4a7fdca968f Mon Sep 17 00:00:00 2001 From: Jens Pfeifer Date: Mon, 10 Jul 2017 15:00:51 +0000 Subject: [PATCH 008/144] Fixed typos. --- .../javascripts/app/controllers/widget/dev_banner.coffee | 4 ++-- lib/core_ext/string.rb | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/app/assets/javascripts/app/controllers/widget/dev_banner.coffee b/app/assets/javascripts/app/controllers/widget/dev_banner.coffee index a8f7f5c9e..28d534391 100644 --- a/app/assets/javascripts/app/controllers/widget/dev_banner.coffee +++ b/app/assets/javascripts/app/controllers/widget/dev_banner.coffee @@ -5,10 +5,10 @@ class Widget banner = """ | | Welcome Zammad Developer! -| You can enable debugging by the following examples (value is a regex): +| You can enable debugging with the following examples (value is a regex): | | App.Log.config('module', '(websocket|delay|interval)') // enable debugging for websocket, delay and interval class -| App.Log.config('content', 'send') // enable debugging for messages which contains the string 'send' +| App.Log.config('content', 'send') // enable debugging for messages which contain the string 'send' | App.Log.config('banner', false) // disable this banner | | App.Log.config() // current settings diff --git a/lib/core_ext/string.rb b/lib/core_ext/string.rb index 6552f3e99..f93035d93 100644 --- a/lib/core_ext/string.rb +++ b/lib/core_ext/string.rb @@ -81,7 +81,7 @@ class String def html2text(string_only = false, strict = false) string = "#{self}" # rubocop:disable Style/UnneededInterpolation - # in case of invalid encodeing, strip invalid chars + # in case of invalid encoding, strip invalid chars # see also test/fixtures/mail21.box # note: string.encode!('UTF-8', 'UTF-8', :invalid => :replace, :replace => '?') was not detecting invalid chars if !string.valid_encoding? From 8a08a368fcc4b756bcfc22df2ee4b5e40cfedffa Mon Sep 17 00:00:00 2001 From: Jens Pfeifer Date: Wed, 12 Jul 2017 07:39:37 +0000 Subject: [PATCH 009/144] Updated guard-symlink. --- Gemfile.lock | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index 5b161264b..6b8623801 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -151,7 +151,8 @@ GEM guard (~> 2.8) guard-compat (~> 1.0) multi_json (~> 1.8) - guard-symlink (0.1.0) + guard-symlink (0.1.1) + guard guard-compat (~> 1.1) hashdiff (0.3.2) hashie (3.4.4) @@ -499,4 +500,4 @@ RUBY VERSION ruby 2.3.1p112 BUNDLED WITH - 1.13.7 + 1.15.1 From 899daa653054295f165f2ec50df732152ad2a7da Mon Sep 17 00:00:00 2001 From: Martin Edenhofer Date: Wed, 12 Jul 2017 11:20:17 +0200 Subject: [PATCH 010/144] Fixed issue #1240 - Unable to add Linked Gitlab account. --- Gemfile.lock | 26 +++++++++++++------------- config/initializers/omniauth.rb | 1 - 2 files changed, 13 insertions(+), 14 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index 6b8623801..bac5b7af6 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -155,7 +155,7 @@ GEM guard guard-compat (~> 1.1) hashdiff (0.3.2) - hashie (3.4.4) + hashie (3.5.5) htmlentities (4.3.4) http (1.0.4) addressable (~> 2.3) @@ -170,7 +170,7 @@ GEM icalendar (2.4.1) inflection (1.0.0) json (1.8.6) - jwt (1.5.4) + jwt (1.5.6) kgio (2.11.0) koala (2.4.0) addressable @@ -195,7 +195,7 @@ GEM mini_portile2 (2.2.0) minitest (5.10.2) multi_json (1.12.1) - multi_xml (0.5.5) + multi_xml (0.6.0) multipart-post (2.0.0) mysql2 (0.4.6) naught (1.1.0) @@ -209,27 +209,27 @@ GEM nenv (~> 0.1) shellany (~> 0.0) oauth (0.5.1) - oauth2 (1.2.0) - faraday (>= 0.8, < 0.10) + oauth2 (1.4.0) + faraday (>= 0.8, < 0.13) jwt (~> 1.0) multi_json (~> 1.3) multi_xml (~> 0.5) rack (>= 1.2, < 3) octokit (4.4.1) sawyer (~> 0.7.0, >= 0.5.3) - omniauth (1.3.1) - hashie (>= 1.2, < 4) - rack (>= 1.0, < 3) + omniauth (1.6.1) + hashie (>= 3.4.6, < 3.6.0) + rack (>= 1.6.2, < 3) omniauth-facebook (4.0.0) omniauth-oauth2 (~> 1.2) - omniauth-github (1.1.2) - omniauth (~> 1.0) - omniauth-oauth2 (~> 1.1) + omniauth-github (1.3.0) + omniauth (~> 1.5) + omniauth-oauth2 (>= 1.4.0, < 2.0) omniauth-gitlab (1.0.2) omniauth (~> 1.0) omniauth-oauth2 (~> 1.0) - omniauth-google-oauth2 (0.4.1) - jwt (~> 1.5.2) + omniauth-google-oauth2 (0.5.0) + jwt (~> 1.5) multi_json (~> 1.3) omniauth (>= 1.1.1) omniauth-oauth2 (>= 1.3.1) diff --git a/config/initializers/omniauth.rb b/config/initializers/omniauth.rb index 6436d6aad..a9ebe137b 100644 --- a/config/initializers/omniauth.rb +++ b/config/initializers/omniauth.rb @@ -32,7 +32,6 @@ Rails.application.config.middleware.use OmniAuth::Builder do authorize_url: '/oauth/authorize', token_url: '/oauth/token' }, - scope: 'read_user', } # oauth2 database connect From eedfacbfa285b06fc983f534daad6b8e4df331b0 Mon Sep 17 00:00:00 2001 From: Martin Edenhofer Date: Wed, 12 Jul 2017 11:27:33 +0200 Subject: [PATCH 011/144] Set X-Forwarded-Proto to get https prefix in omniauth generated callback urls. Relateed to issue #1240. --- contrib/nginx/zammad.conf | 2 ++ contrib/nginx/zammad_ssl.conf | 2 ++ 2 files changed, 4 insertions(+) diff --git a/contrib/nginx/zammad.conf b/contrib/nginx/zammad.conf index 7bb4fcc25..279d35f51 100644 --- a/contrib/nginx/zammad.conf +++ b/contrib/nginx/zammad.conf @@ -33,6 +33,7 @@ server { proxy_set_header Connection "Upgrade"; proxy_set_header CLIENT_IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Proto $scheme; proxy_read_timeout 86400; proxy_pass http://zammad-websocket; } @@ -41,6 +42,7 @@ server { proxy_set_header Host $http_host; proxy_set_header CLIENT_IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Proto $scheme; proxy_read_timeout 180; proxy_pass http://zammad; diff --git a/contrib/nginx/zammad_ssl.conf b/contrib/nginx/zammad_ssl.conf index 248790af3..de55f36ed 100644 --- a/contrib/nginx/zammad_ssl.conf +++ b/contrib/nginx/zammad_ssl.conf @@ -124,6 +124,7 @@ server { proxy_set_header Connection "Upgrade"; proxy_set_header CLIENT_IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Proto $scheme; proxy_read_timeout 86400; proxy_pass http://zammad-websocket; } @@ -132,6 +133,7 @@ server { proxy_set_header Host $http_host; proxy_set_header CLIENT_IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Proto $scheme; proxy_read_timeout 180; proxy_pass http://zammad; From 9f6a4a99f5835fe7e2153b9a6f3ad1603818b091 Mon Sep 17 00:00:00 2001 From: Martin Edenhofer Date: Wed, 12 Jul 2017 16:41:10 +0200 Subject: [PATCH 012/144] Ensure that a user has always (at least) signup rules and not none roles. --- app/controllers/users_controller.rb | 6 +- app/models/user.rb | 7 ++- test/unit/user_test.rb | 88 ++++++++++++++++++++++++++--- 3 files changed, 89 insertions(+), 12 deletions(-) diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb index 8376b1c68..c1997de05 100644 --- a/app/controllers/users_controller.rb +++ b/app/controllers/users_controller.rb @@ -252,17 +252,17 @@ class UsersController < ApplicationController # only allow Admin's if current_user.permissions?('admin.user') && (params[:role_ids] || params[:roles]) - user.associations_from_param({ role_ids: params[:role_ids], roles: params[:roles] }) + user.associations_from_param(role_ids: params[:role_ids], roles: params[:roles]) end # only allow Admin's if current_user.permissions?('admin.user') && (params[:group_ids] || params[:groups]) - user.associations_from_param({ group_ids: params[:group_ids], groups: params[:groups] }) + user.associations_from_param(group_ids: params[:group_ids], groups: params[:groups]) end # only allow Admin's and Agent's if current_user.permissions?(['admin.user', 'ticket.agent']) && (params[:organization_ids] || params[:organizations]) - user.associations_from_param({ organization_ids: params[:organization_ids], organizations: params[:organizations] }) + user.associations_from_param(organization_ids: params[:organization_ids], organizations: params[:organizations]) end if params[:expand] diff --git a/app/models/user.rb b/app/models/user.rb index 53355583d..1c3b2e7dd 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -38,7 +38,7 @@ class User < ApplicationModel load 'user/search_index.rb' include User::SearchIndex - before_validation :check_name, :check_email, :check_login, :ensure_password + before_validation :check_name, :check_email, :check_login, :ensure_password, :ensure_roles before_create :check_preferences_default, :validate_roles, :domain_based_assignment, :set_locale before_update :check_preferences_default, :validate_roles, :reset_login_failed after_create :avatar_for_email_check @@ -886,6 +886,11 @@ returns true end + def ensure_roles + return true if role_ids.present? + self.role_ids = Role.signup_role_ids + end + def validate_roles return true if !role_ids role_ids.each { |role_id| diff --git a/test/unit/user_test.rb b/test/unit/user_test.rb index 799294515..97043b876 100644 --- a/test/unit/user_test.rb +++ b/test/unit/user_test.rb @@ -245,9 +245,9 @@ class UserTest < ActiveSupport::TestCase tests.each { |test| # check if user exists - user = User.where( login: test[:create][:login] ).first + user = User.where(login: test[:create][:login]).first if user - user.destroy + user.destroy! end user = User.create( test[:create] ) @@ -266,8 +266,8 @@ class UserTest < ActiveSupport::TestCase end } if test[:create_verify][:image_md5] - file = Avatar.get_by_hash( user.image ) - file_md5 = Digest::MD5.hexdigest( file.content ) + file = Avatar.get_by_hash(user.image) + file_md5 = Digest::MD5.hexdigest(file.content) assert_equal(test[:create_verify][:image_md5], file_md5, "create avatar md5 check in (#{test[:name]})") end if test[:update] @@ -275,7 +275,7 @@ class UserTest < ActiveSupport::TestCase test[:update_verify].each { |key, value| next if key == :image_md5 - if user.respond_to?( key ) + if user.respond_to?(key) assert_equal(value, user.send(key), "update check #{key} in (#{test[:name]})") else assert_equal(value, user[key], "update check #{key} in (#{test[:name]})") @@ -289,10 +289,83 @@ class UserTest < ActiveSupport::TestCase end end - user.destroy + user.destroy! } end + test 'ensure roles' do + name = rand(999_999_999) + + admin = User.create_or_update( + login: "admin-role#{name}@example.com", + firstname: 'Role', + lastname: "Admin#{name}", + email: "admin-role#{name}@example.com", + password: 'adminpw', + active: true, + roles: Role.where(name: %w(Admin Agent)), + updated_by_id: 1, + created_by_id: 1, + ) + + customer1 = User.create_or_update( + login: "user-ensure-role1-#{name}@example.com", + firstname: 'Role', + lastname: "Customer#{name}", + email: "user-ensure-role1-#{name}@example.com", + password: 'customerpw', + active: true, + updated_by_id: 1, + created_by_id: 1, + ) + assert_equal(customer1.role_ids.sort, Role.signup_role_ids) + + roles = Role.where(name: 'Agent') + customer1.roles = roles + customer1.save! + + assert_equal(customer1.role_ids.count, 1) + assert_equal(customer1.role_ids.first, roles.first.id) + assert_equal(customer1.roles.first.id, roles.first.id) + + customer1.roles = [] + customer1.save! + + assert_equal(customer1.role_ids.sort, Role.signup_role_ids) + customer1.destroy! + + customer2 = User.create_or_update( + login: "user-ensure-role2-#{name}@example.com", + firstname: 'Role', + lastname: "Customer#{name}", + email: "user-ensure-role2-#{name}@example.com", + password: 'customerpw', + roles: roles, + active: true, + updated_by_id: 1, + created_by_id: 1, + ) + assert_equal(customer2.role_ids.count, 1) + assert_equal(customer2.role_ids.first, roles.first.id) + assert_equal(customer2.roles.first.id, roles.first.id) + + roles = Role.where(name: 'Admin') + customer2.role_ids = [roles.first.id] + customer2.save! + + assert_equal(customer2.role_ids.count, 1) + assert_equal(customer2.role_ids.first, roles.first.id) + assert_equal(customer2.roles.first.id, roles.first.id) + + customer2.roles = [] + customer2.save! + + assert_equal(customer2.role_ids.sort, Role.signup_role_ids) + customer2.destroy! + + admin.destroy! + end + test 'user default preferences' do name = rand(999_999_999) groups = Group.where(name: 'Users') @@ -352,7 +425,6 @@ class UserTest < ActiveSupport::TestCase assert(customer1.preferences['notification_config']) assert(customer1.preferences['notification_config']['matrix']['create']) assert(customer1.preferences['notification_config']['matrix']['update']) - end test 'permission' do @@ -557,7 +629,7 @@ class UserTest < ActiveSupport::TestCase # So we need to merge them with the User Nr 1 and destroy them afterwards User.with_permissions('admin').each do |user| Models.merge('User', 1, user.id) - user.destroy + user.destroy! end # store current admin count From c2234d74565b98c7876da685ba2bac745b2819f0 Mon Sep 17 00:00:00 2001 From: Jens Pfeifer Date: Thu, 13 Jul 2017 09:59:22 +0000 Subject: [PATCH 013/144] Fixed issue #1230, missing backslashes in body of sent emails. --- app/models/channel/email_build.rb | 4 +++- test/unit/email_build_test.rb | 6 ++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/app/models/channel/email_build.rb b/app/models/channel/email_build.rb index 3629bfe3a..034d5783d 100644 --- a/app/models/channel/email_build.rb +++ b/app/models/channel/email_build.rb @@ -156,7 +156,9 @@ Check if string is a complete html document. If not, add head and css styles. return html if html =~ //i - Rails.configuration.html_email_body.sub('###html###', html) + # use block form because variable html could contain backslashes and e. g. '\1' that + # must not be handled as back-references for regular expressions + Rails.configuration.html_email_body.sub('###html###') {html} end =begin diff --git a/test/unit/email_build_test.rb b/test/unit/email_build_test.rb index 7e2d3410e..8d161ea5b 100644 --- a/test/unit/email_build_test.rb +++ b/test/unit/email_build_test.rb @@ -22,6 +22,12 @@ class EmailBuildTest < ActiveSupport::TestCase assert(result !~ /font-family/, 'test 2') assert(result =~ %r{test}, 'test 2') + # Issue #1230, missing backslashes + # 'Test URL: \\storage\project\100242-Inc' + html = 'Test URL: \\\\storage\\project\\100242-Inc' + result = Channel::EmailBuild.html_complete_check(html) + assert(result.include?(html), 'backslashes must be kept') + end test 'html email + attachment check' do From f723357f77be507d4e6afc6bb980f946a40c4a66 Mon Sep 17 00:00:00 2001 From: Martin Edenhofer Date: Thu, 13 Jul 2017 13:13:45 +0200 Subject: [PATCH 014/144] Applied rubocop. --- app/models/channel/email_build.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/models/channel/email_build.rb b/app/models/channel/email_build.rb index 034d5783d..b0692648f 100644 --- a/app/models/channel/email_build.rb +++ b/app/models/channel/email_build.rb @@ -158,7 +158,7 @@ Check if string is a complete html document. If not, add head and css styles. # use block form because variable html could contain backslashes and e. g. '\1' that # must not be handled as back-references for regular expressions - Rails.configuration.html_email_body.sub('###html###') {html} + Rails.configuration.html_email_body.sub('###html###') { html } end =begin From b60b139e952c055d1e15ed420042e35312384000 Mon Sep 17 00:00:00 2001 From: Martin Edenhofer Date: Thu, 13 Jul 2017 17:08:53 +0200 Subject: [PATCH 015/144] Implemented issue #1177 - OAuth2: Office365. --- Gemfile | 1 + Gemfile.lock | 4 + .../_profile/linked_accounts.coffee | 80 ++++++++++--------- .../javascripts/app/controllers/login.coffee | 45 +---------- .../javascripts/app/views/login.jst.eco | 2 +- ...170713000001_omniauth_office365_setting.rb | 63 +++++++++++++++ db/seeds/settings.rb | 57 +++++++++++++ vendor/lib/microsoft_office365_database.rb | 13 +++ 8 files changed, 183 insertions(+), 82 deletions(-) create mode 100644 db/migrate/20170713000001_omniauth_office365_setting.rb create mode 100644 vendor/lib/microsoft_office365_database.rb diff --git a/Gemfile b/Gemfile index 2695e13bb..9f5658fcf 100644 --- a/Gemfile +++ b/Gemfile @@ -40,6 +40,7 @@ gem 'omniauth-gitlab' gem 'omniauth-google-oauth2' gem 'omniauth-linkedin-oauth2' gem 'omniauth-twitter' +gem 'omniauth-microsoft-office365' gem 'twitter' gem 'telegramAPI' diff --git a/Gemfile.lock b/Gemfile.lock index bac5b7af6..c8671468b 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -236,6 +236,9 @@ GEM omniauth-linkedin-oauth2 (0.1.5) omniauth (~> 1.0) omniauth-oauth2 + omniauth-microsoft-office365 (0.0.7) + omniauth + omniauth-oauth2 omniauth-oauth (1.1.0) oauth omniauth (~> 1.0) @@ -464,6 +467,7 @@ DEPENDENCIES omniauth-gitlab omniauth-google-oauth2 omniauth-linkedin-oauth2 + omniauth-microsoft-office365 omniauth-oauth2 omniauth-twitter pg diff --git a/app/assets/javascripts/app/controllers/_profile/linked_accounts.coffee b/app/assets/javascripts/app/controllers/_profile/linked_accounts.coffee index 671da7abc..828223057 100644 --- a/app/assets/javascripts/app/controllers/_profile/linked_accounts.coffee +++ b/app/assets/javascripts/app/controllers/_profile/linked_accounts.coffee @@ -9,43 +9,7 @@ class Index extends App.ControllerSubContent @render() render: => - auth_provider_all = { - facebook: { - url: '/auth/facebook' - name: 'Facebook' - config: 'auth_facebook' - }, - twitter: { - url: '/auth/twitter' - name: 'Twitter' - config: 'auth_twitter' - }, - linkedin: { - url: '/auth/linkedin' - name: 'LinkedIn' - config: 'auth_linkedin' - }, - github: { - url: '/auth/github' - name: 'GitHub' - config: 'auth_github' - }, - gitlab: { - url: '/auth/gitlab' - name: 'GitLab' - config: 'auth_gitlab' - }, - google_oauth2: { - url: '/auth/google_oauth2' - name: 'Google' - config: 'auth_google_oauth2' - }, - oauth2: { - url: '/auth/oauth2' - name: 'OAuth2' - config: 'auth_oauth2' - }, - } + auth_provider_all = App.Config.get('auth_provider_all') auth_providers = {} for key, provider of auth_provider_all if @Config.get(provider.config) is true || @Config.get(provider.config) is 'true' @@ -90,3 +54,45 @@ class Index extends App.ControllerSubContent ) App.Config.set('LinkedAccounts', { prio: 4000, name: 'Linked Accounts', parent: '#profile', target: '#profile/linked', controller: Index, permission: ['user_preferences.linked_accounts'] }, 'NavBarProfile') +App.Config.set('auth_provider_all', { + facebook: + url: '/auth/facebook' + name: 'Facebook' + config: 'auth_facebook' + class: 'facebook' + twitter: + url: '/auth/twitter' + name: 'Twitter' + config: 'auth_twitter' + class: 'twitter' + linkedin: + url: '/auth/linkedin' + name: 'LinkedIn' + config: 'auth_linkedin' + class: 'linkedin' + github: + url: '/auth/github' + name: 'GitHub' + config: 'auth_github' + class: 'github' + gitlab: + url: '/auth/gitlab' + name: 'GitLab' + config: 'auth_gitlab' + class: 'gitlab' + microsoft_office365: + url: '/auth/microsoft_office365' + name: 'Office 365' + config: 'auth_microsoft_office365' + class: 'microsoft_office365' + google_oauth2: + url: '/auth/google_oauth2' + name: 'Google' + config: 'auth_google_oauth2' + class: 'google' + oauth2: + url: '/auth/oauth2' + name: 'OAuth2' + config: 'auth_oauth2' + class: 'oauth2' +}) diff --git a/app/assets/javascripts/app/controllers/login.coffee b/app/assets/javascripts/app/controllers/login.coffee index 322a518c7..6e7f608d3 100644 --- a/app/assets/javascripts/app/controllers/login.coffee +++ b/app/assets/javascripts/app/controllers/login.coffee @@ -38,50 +38,7 @@ class Index extends App.ControllerContent ) render: (data = {}) -> - auth_provider_all = { - facebook: { - url: '/auth/facebook', - name: 'Facebook', - config: 'auth_facebook', - class: 'facebook' - }, - twitter: { - url: '/auth/twitter' - name: 'Twitter' - config: 'auth_twitter' - class: 'twitter' - }, - linkedin: { - url: '/auth/linkedin' - name: 'LinkedIn' - config: 'auth_linkedin' - class: 'linkedin' - }, - github: { - url: '/auth/github' - name: 'GitHub' - config: 'auth_github' - class: 'github' - }, - gitlab: { - url: '/auth/gitlab' - name: 'GitLab' - config: 'auth_gitlab' - class: 'gitlab' - }, - google_oauth2: { - url: '/auth/google_oauth2' - name: 'Google' - config: 'auth_google_oauth2' - class: 'google' - }, - oauth2: { - url: '/auth/oauth2' - name: 'OAuth2' - config: 'auth_oauth2' - class: 'oauth2' - }, - } + auth_provider_all = App.Config.get('auth_provider_all') auth_providers = [] for key, provider of auth_provider_all if @Config.get(provider.config) is true || @Config.get(provider.config) is 'true' diff --git a/app/assets/javascripts/app/views/login.jst.eco b/app/assets/javascripts/app/views/login.jst.eco index 00b086f48..135c1c859 100644 --- a/app/assets/javascripts/app/views/login.jst.eco +++ b/app/assets/javascripts/app/views/login.jst.eco @@ -24,7 +24,7 @@
- +
diff --git a/db/migrate/20170713000001_omniauth_office365_setting.rb b/db/migrate/20170713000001_omniauth_office365_setting.rb new file mode 100644 index 000000000..147dbd508 --- /dev/null +++ b/db/migrate/20170713000001_omniauth_office365_setting.rb @@ -0,0 +1,63 @@ +class OmniauthOffice365Setting < ActiveRecord::Migration + def up + + # return if it's a new setup + return if !Setting.find_by(name: 'system_init_done') + Setting.create_if_not_exists( + title: 'Authentication via %s', + name: 'auth_microsoft_office365', + area: 'Security::ThirdPartyAuthentication', + description: 'Enables user authentication via %s. Register your app first at [%s](%s).', + options: { + form: [ + { + display: '', + null: true, + name: 'auth_microsoft_office365', + tag: 'boolean', + options: { + true => 'yes', + false => 'no', + }, + }, + ], + }, + preferences: { + controller: 'SettingsAreaSwitch', + sub: ['auth_microsoft_office365_credentials'], + title_i18n: ['Office 365'], + description_i18n: ['Office 365', 'Microsoft Application Registration Portal', 'https://apps.dev.microsoft.com'], + permission: ['admin.security'], + }, + state: false, + frontend: true + ) + Setting.create_if_not_exists( + title: 'Office 365 App Credentials', + name: 'auth_microsoft_office365_credentials', + area: 'Security::ThirdPartyAuthentication::Office365', + description: 'Enables user authentication via Office 365.', + options: { + form: [ + { + display: 'App ID', + null: true, + name: 'app_id', + tag: 'input', + }, + { + display: 'App Secret', + null: true, + name: 'app_secret', + tag: 'input', + }, + ], + }, + state: {}, + preferences: { + permission: ['admin.security'], + }, + frontend: false + ) + end +end diff --git a/db/seeds/settings.rb b/db/seeds/settings.rb index 73b3b7797..d0bec62b5 100644 --- a/db/seeds/settings.rb +++ b/db/seeds/settings.rb @@ -1057,6 +1057,63 @@ Setting.create_if_not_exists( frontend: false ) +Setting.create_if_not_exists( + title: 'Authentication via %s', + name: 'auth_microsoft_office365', + area: 'Security::ThirdPartyAuthentication', + description: 'Enables user authentication via %s. Register your app first at [%s](%s).', + options: { + form: [ + { + display: '', + null: true, + name: 'auth_microsoft_office365', + tag: 'boolean', + options: { + true => 'yes', + false => 'no', + }, + }, + ], + }, + preferences: { + controller: 'SettingsAreaSwitch', + sub: ['auth_microsoft_office365_credentials'], + title_i18n: ['Office 365'], + description_i18n: ['Office 365', 'Microsoft Application Registration Portal', 'https://apps.dev.microsoft.com'], + permission: ['admin.security'], + }, + state: false, + frontend: true +) +Setting.create_if_not_exists( + title: 'Office 365 App Credentials', + name: 'auth_microsoft_office365_credentials', + area: 'Security::ThirdPartyAuthentication::Office365', + description: 'Enables user authentication via Office 365.', + options: { + form: [ + { + display: 'App ID', + null: true, + name: 'app_id', + tag: 'input', + }, + { + display: 'App Secret', + null: true, + name: 'app_secret', + tag: 'input', + }, + ], + }, + state: {}, + preferences: { + permission: ['admin.security'], + }, + frontend: false +) + Setting.create_if_not_exists( title: 'Authentication via %s', name: 'auth_oauth2', diff --git a/vendor/lib/microsoft_office365_database.rb b/vendor/lib/microsoft_office365_database.rb new file mode 100644 index 000000000..5d51c084a --- /dev/null +++ b/vendor/lib/microsoft_office365_database.rb @@ -0,0 +1,13 @@ +class MicrosoftOffice365Database < OmniAuth::Strategies::MicrosoftOffice365 + option :name, 'microsoft_office365' + + def initialize(app, *args, &block) + + # database lookup + config = Setting.get('auth_microsoft_office365_credentials') || {} + args[0] = config['app_id'] + args[1] = config['app_secret'] + super + end + +end From bd061fb5c1d4c63f064dccfe0d92016c1c3ba1c2 Mon Sep 17 00:00:00 2001 From: Martin Edenhofer Date: Thu, 13 Jul 2017 13:09:16 +0200 Subject: [PATCH 016/144] Implemented issue #571 - Original e-mail inclusion at the bottom of sent e-mails. --- .../ticket_zoom/article_actions.coffee | 18 +++++++++++- .../ticket_zoom/article_new.coffee | 23 +++++++++++++-- ...=> 20170713000001_ticket_zoom_setting2.rb} | 29 ++++++++++++++++++- db/seeds/settings.rb | 27 +++++++++++++++++ 4 files changed, 92 insertions(+), 5 deletions(-) rename db/migrate/{20170630000001_ticket_zoom_setting.rb => 20170713000001_ticket_zoom_setting2.rb} (74%) diff --git a/app/assets/javascripts/app/controllers/ticket_zoom/article_actions.coffee b/app/assets/javascripts/app/controllers/ticket_zoom/article_actions.coffee index 6b60eb01e..df150405a 100644 --- a/app/assets/javascripts/app/controllers/ticket_zoom/article_actions.coffee +++ b/app/assets/javascripts/app/controllers/ticket_zoom/article_actions.coffee @@ -391,6 +391,7 @@ class App.TicketZoomArticleActions extends App.Controller body = @el.closest('.ticketZoom').find('.article-add [data-name="body"]').html() || '' # check if quote need to be added + signaturePosition = 'bottom' selected = App.ClipBoard.getSelected('html') if selected selected = App.Utils.htmlCleanup(selected).html() @@ -399,6 +400,16 @@ class App.TicketZoomArticleActions extends App.Controller if selected selected = App.Utils.textCleanup(selected) selected = App.Utils.text2html(selected) + + # full quote, if needed + if !selected && article && App.Config.get('ui_ticket_zoom_article_email_full_quote') + signaturePosition = 'top' + if article.content_type.match('html') + selected = App.Utils.textCleanup(article.body) + if article.content_type.match('plain') + selected = App.Utils.textCleanup(selected) + selected = App.Utils.text2html(selected) + if selected selected = "


#{selected}

" @@ -409,7 +420,12 @@ class App.TicketZoomArticleActions extends App.Controller type = App.TicketArticleType.findByAttribute(name:'email') - App.Event.trigger('ui::ticket::setArticleType', { ticket: @ticket, type: type, article: articleNew } ) + App.Event.trigger('ui::ticket::setArticleType', { + ticket: @ticket + type: type + article: articleNew + signaturePosition: signaturePosition + }) telegramPersonalMessageReply: (e) => e.preventDefault() diff --git a/app/assets/javascripts/app/controllers/ticket_zoom/article_new.coffee b/app/assets/javascripts/app/controllers/ticket_zoom/article_new.coffee index 60fd1b1bf..82ed57e1e 100644 --- a/app/assets/javascripts/app/controllers/ticket_zoom/article_new.coffee +++ b/app/assets/javascripts/app/controllers/ticket_zoom/article_new.coffee @@ -59,7 +59,7 @@ class App.TicketZoomArticleNew extends App.Controller @$('[name="' + key + '"]').val(value).trigger('change') # preselect article type - @setArticleType(data.type.name) + @setArticleType(data.type.name, data.signaturePosition) # set focus at end of field if data.position is 'end' @@ -483,7 +483,7 @@ class App.TicketZoomArticleNew extends App.Controller @$('[name=internal]').val('') - setArticleType: (type) => + setArticleType: (type, signaturePosition = 'bottom') => wasScrolledToBottom = @isScrolledToBottom() @type = type @$('[name=type]').val(type).trigger('change') @@ -532,7 +532,10 @@ class App.TicketZoomArticleNew extends App.Controller body.append('

') signature = $("
#{signatureFinished}
") App.Utils.htmlStrip(signature) - body.append(signature) + if signaturePosition is 'top' + body.prepend(signature) + else + body.append(signature) @$('[data-name=body]').replaceWith(body) # remove old signature @@ -566,6 +569,20 @@ class App.TicketZoomArticleNew extends App.Controller @delay(@updateLetterCount, 600) @$('.js-textSizeLimit').removeClass('hide') + # convert remote src images to data uri + @$('[data-name=body] img').each( (i,image) -> + $image = $(image) + src = $image.attr('src') + if !_.isEmpty(src) && !src.match(/^data:image/i) + canvas = document.createElement('canvas') + canvas.width = image.width + canvas.height = image.height + ctx = canvas.getContext('2d') + ctx.drawImage(image, 0, 0) + dataURL = canvas.toDataURL() + $image.attr('src', dataURL) + ) + @scrollToBottom() if wasScrolledToBottom isScrolledToBottom: -> diff --git a/db/migrate/20170630000001_ticket_zoom_setting.rb b/db/migrate/20170713000001_ticket_zoom_setting2.rb similarity index 74% rename from db/migrate/20170630000001_ticket_zoom_setting.rb rename to db/migrate/20170713000001_ticket_zoom_setting2.rb index 9966132fd..8147edc1f 100644 --- a/db/migrate/20170630000001_ticket_zoom_setting.rb +++ b/db/migrate/20170713000001_ticket_zoom_setting2.rb @@ -1,4 +1,4 @@ -class TicketZoomSetting < ActiveRecord::Migration +class TicketZoomSetting2 < ActiveRecord::Migration def up # return if it's a new setup @@ -67,6 +67,33 @@ class TicketZoomSetting < ActiveRecord::Migration }, frontend: true ) + Setting.create_if_not_exists( + title: 'Email - full quote', + name: 'ui_ticket_zoom_article_email_full_quote', + area: 'UI::TicketZoom', + description: 'Enable if you want to quote the full email in your answer. The quoted email will be put at the end of your answer. If you just want to quote a certain phrase, just mark the text and press reply (this feature is always available).', + options: { + form: [ + { + display: '', + null: true, + name: 'ui_ticket_zoom_article_email_full_quote', + tag: 'boolean', + translate: true, + options: { + true => 'yes', + false => 'no', + }, + }, + ], + }, + state: false, + preferences: { + prio: 220, + permission: ['admin.ui'], + }, + frontend: true + ) Setting.create_if_not_exists( title: 'Twitter - tweet initials', name: 'ui_ticket_zoom_article_twitter_initials', diff --git a/db/seeds/settings.rb b/db/seeds/settings.rb index 73b3b7797..e791637f6 100644 --- a/db/seeds/settings.rb +++ b/db/seeds/settings.rb @@ -600,6 +600,33 @@ Setting.create_if_not_exists( }, frontend: true ) +Setting.create_if_not_exists( + title: 'Email - full quote', + name: 'ui_ticket_zoom_article_email_full_quote', + area: 'UI::TicketZoom', + description: 'Enable if you want to quote the full email in your answer. The quoted email will be put at the end of your answer. If you just want to quote a certain phrase, just mark the text and press reply (this feature is always available).', + options: { + form: [ + { + display: '', + null: true, + name: 'ui_ticket_zoom_article_email_full_quote', + tag: 'boolean', + translate: true, + options: { + true => 'yes', + false => 'no', + }, + }, + ], + }, + state: false, + preferences: { + prio: 220, + permission: ['admin.ui'], + }, + frontend: true +) Setting.create_if_not_exists( title: 'Twitter - tweet initials', name: 'ui_ticket_zoom_article_twitter_initials', From 2f33755dda3ed4667ac5e9169b53cc84d5c47039 Mon Sep 17 00:00:00 2001 From: Martin Edenhofer Date: Fri, 14 Jul 2017 08:15:14 +0200 Subject: [PATCH 017/144] Implemented issue #1177 - OAuth2: Office365. --- config/initializers/omniauth.rb | 3 +++ 1 file changed, 3 insertions(+) diff --git a/config/initializers/omniauth.rb b/config/initializers/omniauth.rb index a9ebe137b..ea2793497 100644 --- a/config/initializers/omniauth.rb +++ b/config/initializers/omniauth.rb @@ -34,6 +34,9 @@ Rails.application.config.middleware.use OmniAuth::Builder do }, } + # microsoft_office365 database connect + provider :microsoft_office365_database, 'not_change_will_be_set_by_database', 'not_change_will_be_set_by_database' + # oauth2 database connect provider :oauth2_database, 'not_change_will_be_set_by_database', 'not_change_will_be_set_by_database', { client_options: { From e3ab40f618e49f84b22501289bdeca79b7fa924e Mon Sep 17 00:00:00 2001 From: Felix Niklas Date: Fri, 14 Jul 2017 11:47:45 +0200 Subject: [PATCH 018/144] Add Office365 Icon #1177 --- .../_profile/linked_accounts.coffee | 2 +- app/assets/stylesheets/svg-dimensions.css | 1 + app/assets/stylesheets/zammad.scss | 5 ++++- contrib/icon-sprite.sketch | Bin 1490944 -> 206391 bytes public/assets/images/icons.svg | 2 +- .../assets/images/icons/office365-button.svg | 12 ++++++++++++ 6 files changed, 19 insertions(+), 3 deletions(-) create mode 100644 public/assets/images/icons/office365-button.svg diff --git a/app/assets/javascripts/app/controllers/_profile/linked_accounts.coffee b/app/assets/javascripts/app/controllers/_profile/linked_accounts.coffee index 828223057..5f731803b 100644 --- a/app/assets/javascripts/app/controllers/_profile/linked_accounts.coffee +++ b/app/assets/javascripts/app/controllers/_profile/linked_accounts.coffee @@ -84,7 +84,7 @@ App.Config.set('auth_provider_all', { url: '/auth/microsoft_office365' name: 'Office 365' config: 'auth_microsoft_office365' - class: 'microsoft_office365' + class: 'office365' google_oauth2: url: '/auth/google_oauth2' name: 'Google' diff --git a/app/assets/stylesheets/svg-dimensions.css b/app/assets/stylesheets/svg-dimensions.css index 755a6dbed..d86c8b006 100644 --- a/app/assets/stylesheets/svg-dimensions.css +++ b/app/assets/stylesheets/svg-dimensions.css @@ -55,6 +55,7 @@ .icon-mute { width: 16px; height: 16px; } .icon-note { width: 16px; height: 16px; } .icon-oauth2-button { width: 29px; height: 24px; } +.icon-office365-button { width: 29px; height: 24px; } .icon-one-ticket { width: 48px; height: 10px; } .icon-organization { width: 16px; height: 16px; } .icon-outbound-calls { width: 17px; height: 17px; } diff --git a/app/assets/stylesheets/zammad.scss b/app/assets/stylesheets/zammad.scss index ac39a1c4b..8da4e8e50 100644 --- a/app/assets/stylesheets/zammad.scss +++ b/app/assets/stylesheets/zammad.scss @@ -2550,6 +2550,10 @@ ol.tabs li { background: hsl(0,0%,15%); } + &.auth-provider--office365 { + background: hsl(15,100%,47%); + } + .provider-name { flex: 1; } @@ -2558,7 +2562,6 @@ ol.tabs li { width: 29px; height: 24px; margin-right: 10px; - margin-top: 1px; } } diff --git a/contrib/icon-sprite.sketch b/contrib/icon-sprite.sketch index 6ec311680a156411bace5a22b638e65ff6c187c8..2a6135cec3f0976d4d4583547bb1df26aa5f1491 100644 GIT binary patch literal 206391 zcmV)`Kz_eaO9KQH00ICA000000N^Pf(8K`%0DuGl01W^D0Az1tb!}yCbS`RhZ*HxU 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�PAM7z#eagfI^sG2 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 h>BFr2kG4MZx z_)SuETBm(6BJu6vfs*iO`P(5Q*j#WD@%$!c@`ZXS;nF2<2-;6*PG&zFZ=Bk!tWXoO zx#ImxqnR`qPL!LT_qE&tb6ecEWog^gW^U@8Xh(QD0RVp5_{A8BvyRzvk~Avc#z@#n zGq3QW8fmuN79+6`pU4rX4E89Vq7Pp9?VMw2WDWZ!0RgwbiT6&T0w&H`5lYfFV&U_{ zH;Hbk=~~)?b(FSqOPb@%!WXQ-W{sqUyrBc{-FH*ceX@pJ4bzmHYaNS>ZYsh6$6T zsoI!ppLZSLpGinmxUYmJ)IWRiFR|WgCgFJ&YHDHFyrKkfs*;ngcT3Xxeiv`Po&k2iPM`Ss;OtbB`EI0kD(Yft=xOsbt~Clq5|w z*paX%VJ0XO24#Y!7Q!oR*?j~H!j}x4MN>9x=0y@iePh;h@Izk?uT)L$WV%OR##z^90Xm&OX>6 zoQm*dVf_WnF3z!(k}=ut;xGt(XqcfNt{P7e_a8)KZ8HW_cr6Guy>OPCo{^1kD_{$a z@WBg-#XjbDY;-RuUt+L8?9(TBA;QPA3zP3<7b|N3bDU5-uo1R{`5ata&Dd1feT3^339Jrcyci166G5NgG#OAiFEayRQ4U6Yx4_%7MBgD4 zvP}wft$@&~MA3RN96dW9q-Uqr3i#xWg7t|C*xaaSM^H9PU5QIIwfrab?0o$88yJRE zI0xm5@rnVKRAF0G@GzL%eaSkk&I8=DMEW>I`jdSR?Ki)D{r2nEUm*IU`{tCJ9*t8T zN!1ou!5PXbx!P1It&SR;&GrL#g8Q3vw-2qq@#oXRr&e&fv5&s{HeERP>E}t|{*x^8 z;d^i>G#1ZFHKqoYQj*F(Wd)l%Ol_ql;-d%Wy7^^l)y8g&Dm6mpT}M@%uWGc=htzB5 z96s}jJ{oY|d%jqTR6{bBr$9bz%;bg2pfibkSt$ylCv%qQ377fWMK-twYZu=UDv=33 z@P#7_MU~@iGFZLH78$Hud=Cw$WfpfOhwr)>nfb&z z$$$~50Wog*X5{g(49oPAEc0wP)2ClpX-^{eOan+5aw(JdKx4{=p4H}~K@ zCQHZZiBm!&N-opx3*SqXnKX4w4gk(aW@7ZJ9_qV4dB2%Pi4&69bN)6cq7tKjR8bva&Vv!iVqcGd;gB zv!c!PfrT;R;B9Wsys*-aMCS<(-CD)DdbJzWm`kl6U9wTG6uYAA${O zh2Gqo|AQ^^mYgm_ttxb{q`o(hslu-d&w+1Rvv@%pZLLL>2m%eOPr z#VfT`lwQ^Qh2}X?=^Sos%g5huvuP8ve`e`DyZP3;mZ3Uso)~R}Af07^g`El*mze3p zxfJKZ4il18jpM+bR@+vQ@bt9Z7~wxp(~xVL22br0z{3cGGxHV`gn9<4mjv(-@rS2W1-c_P1<6NZYie|@zo;|%UX}Ggv3KTgn^5`6G zEK+^wM7lZ3bYbZo*6G|&efASx?pwc8%Cjy=*HeP_TnkXTx&+Lbtxa=B#T<_i@(S;z z*Ko-U7#qUGE--I}`6@kA5P)+VZ`(H1{QPjG(}3H+5B#vO@BTN0+<8^VeO90`g=wZc zZ=(bH9ufD?lXX}i9ZG(DrpfXq#94>c|MJg zU%Jf5XOC;+9C*ouXp(~}`$-Dor?r8d@bF}UsKq(<`#P<$2F_YCaiXxCJep`(Cf$lp zhX+g)7rKl+%&e#nykExC>zRfJ?=%lq+Bn!(3isJMnU)xNW}vy#0`pY~aP zecFqcd47tZ#jhs;D+Awzw^Z8uz0v!6je@kz$`Ib5Wel-@8l|*PVi?n?Va7pmUIHtd z$B;||iIcF6CLva{JA;(#fyqlM{i52%Nw_x+!m+oJSnN-SH=ATYS3-E}h{e{*;JXov z1yfot&Z&g6rZ|&TIhv?|k4tTV8f^TBb?=P7xo;vc4{JLebm_yFe^XkZfB*9H&+nyL z```-uTwGyAlBg|_Dx(+0M!3SbG!>iXGz@ikGN15(A48tsW!-iP9*~&t{+?lN5au=+ zr{;x!+%DD#K3qXKT}~yXPJHpHQp+S~w*_I=uDt_ypM3y_a4K0z&_c;f6T@h+`X@PK zfgJDtK9MCP76uTY?;wsx+Bgk(ObU_HlE`%jK1Jcv27LB7aYt(-5YjlsGu=oYdkGxwy3=apmGWr0{6J=~Hd(yzykcV{~MXvOXLe6HS~}lDtE=QSObfmhkKYQ99vZK4m;4mq zJ-=z;!8ppc4FdK%41l%0o;O+5Pt%D+2%Dw!#f*Z$?l-mqWP8cT*Jm+1vvB4AUK3J-WrD zd(59T4sqr&wx`+S zF4~}FPBY1$)4bKG)k)=p8Vd+L6n2mEd2c`AlH@b7;n(R{J{uHJU8=YGscSu&z(q)# z_vY#jK?%pY7>=XCU%knZ`-$8&>4_mBpIgoIGErIUB;v%GXnDQr|8g{`C4?M z@ZTKIvE4SUcituSwyPcA7e_=_8iZ8`V@h=nQOac+rwtbk=0LVKtV$=pA+itaR1plU zB{~c1z|q<1O}XU2^_v`J^$R8SMOIxgdOh(^0jjAdU4_+76vAENs7i=JFoj0i(!4Bo zxl~2lEC!hpshR3e=vL_))P16@8TX%E+x9&W`JP-+E_j~>Z~l@?n3HN#QZ>|VUhVEz zVo0V$@S_FPJ8BFzTdNwhsHOz*spEUGSG?T6ug>pcT(_>I6{8Z<9q;>J?w~o-h!1HL%UuwuB{$)d|iC zB%ck54Y+iHA3}kVOtv!5{vao5l5qpBa3d#7x!Rx{#?z*9P{UP#;0!rApRdBWC5BQQau<7d|z^ zq}R+*&Xu&u^}MEh&Nqq%*&`HefZ5#7aLHO2iP>r-8Y2_8Gs9V zoOpp0znXPCwOrAuv?>r1b3j(P(MhrdHeC>-C+H78zh8|QTfd@hh9ZDFuxsYkYXIDh ziHJd*(usaFNe}UNjD)0}uF>dJl{@2JMQc1SNjQ#4?iUB0u4nh)bkcbIm}8bc3626hRF%ipoT?>dM+?LPh^xm}PW(J~BV* zICCThgosZd$%XE~<_zN!QDf2&0p)wHS$_Qm9oaH{4?y39A{R$xTGZpdDB8uq@0p4HQbPmAZp39uSszdNC#uhmLHiZm zgh1BYQFxiPip0rpHDE9T;yFu9CCl^F(%9tcMj39tAM^v=#k{}k#SxZ6g92R2AWWFE z36yUIg1KmxA&RQwt#PUvb=kfJsUl9vyVYb0#9@-I&bv$5{Q#E14#MjPsKf|E8@%$k zQ&O8AtQ;U4B?Jh3oo~{U2Yb|Z;YQ)V$kY>ME~BbL6v}Y&XbaLSPh5GTO#R*zsT~QX z0Tpa<2|7~*I$oT`hOEe4Z(11J82YR%wU{jciI#eNY69c4Aj|{8VDI++mj1w`T{5NH z-W5t6>Tb50-$Lq%NTD0REyDy84&>*Zi)6)AoJ(vSAWhN_@#vaxJ{8>YLT$};bd%95 z3_rkj2dNpEpkvy}qo1=}tphefcJe6$akD<9hu&wG=3eVPEAmDoWew$nJx~a3M&jO% zugnr5j-+7hv-Y~wzG_jSLDDnxoL1`-egfti`+qW+7Y{R>g3MnX-?=h~>CF*#TBuSS z_RQ7%+Wu~I9e>SrTesi(xP&%&70BSLUO7`7XY@SE6Egvbqz}j2AdbbJaU$%UKDBP@ z>D{bw%Z zgkkO`yyGdwR{Ww*DQ5}+#&ow|;5KPvdGwtv(kAa#yX}dBHTd!x z;w-xK$T;lu5qsB)gh!pV;*5{R&@zw^FJU*2MJ~R2YCeZ`;NH=YV7RBC{Cgp-Y)Q3| zo9b%3m{UqQ{eiNKFPmh`tY3rDXdLG+C8qsitEO42ijI3nwu*i}#FBK1Zfb#4Q4QuT z!tykp)lay>n@qe<kNE3Pl(-IIAdLa!*Kn9q#g;nd?=!g+sA#Drci-PuFrw_5yehJm41s){JMRlg*Wh zIDfDQgF_?wly#!yvw$W!FMpn#0Kx;0LI9 zt^5lM3!1#*EhWcCC{n^P2mUDVVtgC4MACr3yT#OuQJ|3Mz3wf|Ce9rF&p^)$n z7l!>_g$Os9_jIVJUMMclq_R;eSj^1VB!iQn%KMp=l)~xX+Wr|?UTO)$cJh))hc2F4 zP*&S7Fxuebm)uaKf1!jG@v2gVTRoAnnuSfqrg}Ie=65|m^NBh5_a8l`KlKr6B zzJd$4=C&n;J?7TF(xpGY;)m zn5@uaSQY5=v8`^+j@qTrsS?bO_Ka zeckLbQeB0b1;fNqYshdqm*frcIwOdz_<$%L5z`e{+PqftLcFh+E1!UqZU1F9m$dgm9 zlra0miJs?hlmJo&ELz*d^^7$=E?i_kSrMhR* z=OB8_Eg)+d2m4b2Tuo!mbps|!jiIX|kjQ`n)Hl9X8UXbwmY#TkSeR2RDaGLKSXx%6 z$@wEnVS{Hj+PR3NGEJptXghcMuUs<{ObU_!4IO!3z~!MMnbI6YAmZD8kg(U5UC$;s zrU=ne9BfF7tuy1Of|-)rr6Xu$zqsZJ3Xx))680vOx~Rx?d|~(kC@W4*vmAIl7rLGp zt(b(1nOt2%QPP?lws`Y6d%enK!x;;O55o0;9$M|R0|n!=oXy`k85$ehHfeyej@>tJ zQno<3yR>GfJg+@Y^l`th(FY*#v2(mGi2PPbn^0&FZD~GNFxJv!U5y1h*?UpQhFhcZ zrein3@X}!0p45TON*9P4e8_64klS+7$n%zqR}%bb5!Wt7K-!!ZIu&@e~0we!!rteb0)5RKuZyIssv=Jm7%}cdWq|lEFFHP0PAP>7J7N1wm>9n>3OblH{#Z<+HWh~37L7Qi z{49KAVH=a3Kudqu^Xjv0sE3 zRY`C>t&B#qa>{uFgvOEGBhnT5+7TEdXp+p~=zfA`7?Ti0ZW%-LA60J%H>+dn9T#wq zAYkH&ku2BcU<7g=W*PBd@9@bm0|qHCzoV|uv9iH!TZTZ|lk=1{xU=#!-o%_PnyfET zK<^M(yJMO0##cP=QhHIE`#f;3nE0>zG~+ZPQ=U0sk>RH3a?ApSYQPA#!#r2+TbXoz zNDWe8fqds4U4=ywwK3fK?MUc<4m?P!Iqg@KR5 zOvE?O0_%*f=-*=2wq(hPL-B^|3F#N<%XK`N4MRVlktNH7c)&l zt9(yRfmQ~y7Fw&>8$d=oACqg>RErl5ULOQ|eFUmxg0R4Pbl^6Y9kLh#PZ2wo5gotR zgxT6p9uYtWACvWrv{*AlQ`p>p_eTaxqff7Uq33QAzn5lG=B;O9+<{6baG5HjL;W2H~_r zB)KweFY}{P$7_1U-XoVam~-1dNZCZ~C}112&;m=ZS}y=%DFPjI(FBLj<}N%^uv3&S zikta%bufD3>YJZ5j$K5&M~u%`F$^2sJ0KoGskV-{B&979q5{rbfaCdiCF{>LR* zwMgl>q$yOoE$kadtheJ#42bI)#W1}sJcbdjW}aiB2fMd_x*T$LJxMwjWrmOv@Rb_w zDvgXBhiol!kDbB-OH0xEw8Sc{Hcbix5hi*k7)*9|ya5yblUkA&|Dq~Ldc+oh1?NBy zhm0DXz>{TeF9^j5#Yw_!G&|rE7`c=Z)TyD;+xI>!{F~ddEIr$Gsy@??4+;jidCE>p zQ@uV1Z=2HelfLMTOlqJ&J2^-ZD8wLTGxepAAd}w+PQ{i18Io=wuOD;w7uvp;IP&C z+{5LUGF<)b{l52zEP;Dn8lZg=m#c`u7(PsdjT1UxiUBo+WUiiR|7zvWP*L@$vGVFo z^eLaZs%_;=-q8PXv2u|Fl!`7mDbiTCT`CBD)bH2Vsva_{c==&b!d*_yJdqZ>#g2I) zD6o!vo~e2+z+HRUV)Z#qBhtO$$=vF8UFI+apY2qVpFgjun$Er;Ot|T*GnM!Hb$_pf z3F#II;lcuM)t1(3@d`3ZwKxWWWGi5dHRFsBx*)!i#>;+BqJ0lDBU7A!JqGYOu*ng_ zi(~tojw7ywMTU)*T!2+LI96_>oTLaD?=m^b{`wqq$`tgX%N`m;X{g9>m*gcyLg&^i z@S1|C896TP(~RUB&Mng-e&Nz@m_BjT)?#BQ*V?*3z#ky`;6JGY-m#l->B#V#<3N&H zxH%)Eo)5Y8H zv&Z0B=P|RO(LodBREhPXshXRm>y>PRs7SN?!`sUvxlHyf2A)(VN` zIcq3dnf8Q@_57aMNQO3!eI2-n)r1HpF6`&@U*W1=@&ft}y~E&; z1WfJLN|&Z%D%;}sV-Ce02pHmWV@e40Nb?}`F<6`aQ%Ejuxefndwjtw&-{`~Yr6J77 zf_Kh;&~iQZj$k*DzrW>r|0pf!fCFt{YNjaCg{-wtQFW^-iv!$qx#w*Q7`ZHq`tx_# zHQG{pf(Q}}mW{MmY>z&kz(1eGeh~meM)%0=`2s@eKn7=%qJ=+7O;}`Jyjp0qq)BGA zv^D?|c7Zl@6vN$4BIdr2aAF`O^o)u#qdCb8Az2Zxb%=`3n89V_@-K1z58C7-ndLNH z_ChObhnH~)YUt{@JU-4*Ubrm*!>Efdq{21U&0HPdRq#{Ll`DJhl2mi&v|<-C3Sur! zn7EZqG7QwY+-VX~B$I7SdGqOe&3PuE={-2VX#88G$mmZ%MFU&kxNuR#{OT2v9nN~8 z^oztxqD(yjL(n*$lcO)evCU$Wq3OWrMw7~rQkkpTaFp*oL3n8SHhyvOZ+ZU92DI@D ztQT9s43;t(6;5TpONSS^P!EvGsRmg2L=`2XnNHuYx(-|}~K*k!8I zBo#+Fn(29O>z|bZhBXymJU&>;nDMm9WR+qxwD8U(EN{x?uF zg)-;J9+Qj$RU5|uqk>8;HeO+5_C}|HqyL!cmsn|LH5aOu|F-AbB<%L-?k`9z3UVFo zWY!&jS?bq`&SPiy&y-KPX!!1RLwc#X&Q)os8tyvSt-qiqcTiFOIx;D+iBWZQ5*xJ8 zOeUx}E~B{oGQWRJ^nd+I3taNQd5fx&fL5|al@lG}Pqr4Z9LCn3FRh^zbdYmb z*tDVJs$fa3=sN^3lc{aC_NfflUZi0={>0gm5>SBy?M$sa^{$`17aC5H}iGA$*sj|ye z@zFm7{^d^p!m6VyjtLamZ9hqGG)gCk9~DMNY9pU)v+cKV$rgdD%d4@= zV4>ppk9}fBzQaGNRMphxJ~Y+Aaf$p!F6tMq$(iGSN|{D^9pbsUu?NMIIulpDAO5fM z)$;}CxN1365n0kPY*h@iKp~wumeTP;--DRizZ^4cRu?U+Nos9@Nrl~q(v7>6wqG}q zZE7Gs{7g~&|2S0il#(o9=fs_&(1^eHxMrX{A-1=c0KiW~_z%NhR@%9*qaA-Dy~_R9 z?^xW4+GPqSP5^!ROZTpdxvo>{JCQc58F!fO$;@5MYzoM%-lfol|0hb(!8O({lVz0a z&{nPlGs_YwnVe7-^GM~y$4=q7x_oIS7g+Va|A(~XH)KWmm^Od11*yp2(FP?(2vgGJe?Nl5v!V1CWF(aNL zyr}=Q_p*KYtF^mw(yRlus?0ZD4!Lrdn24Xut6G~{rC+rF6ZetPTTvm&$z{tt2dgo$ z5_MG0NNC1wY(}SE(fR)s1$n;WvWPiJA!8%{m`ATkyGC-mJ2k6x@z6#B-$6UUe^QkH zl-ljAp29#jil$(AaH^~f03p7zYomK#{fqe(^a76Gx;kS0D$n#EKxM|w@uy?~Rt zHawD#(=SJ8Vrf$8XlkbvfP#=WEj5u+kJ+HCixMfoWBNbtB!#}xW;rLBVAIr}WUXXs zk#>XPLp*B7^Km$qmO=15g~&L*jS;k4(Mt)vKnC3{`d! zO14VZo(}n%pecI@&h>00<_q&%bPFzayAQU z=JU8rg0GfBhAb0-Bv2h+R2^eK`G>^+X45aJa*L%lPLuG6ZXyigl}nXruz4?Syh~iL zupiHUY3(a9hfjG`G`B1Hg-I*PFcWw-7E9sNi|;1jektz19ZJgO0QxXov@-r8LOCuS zMJapJc^PPJ-th5ngNFlF6E!idl<`YpJVfUkU8wG-B+`(tE%klH7J9fsegwo*|M$Y} zUbO(d=Up;}A~lXy{#&U=wqG3Oy12O8bpHV}i@$vaVh+v8)3XXXr53zKa@W=7qJU846ooeC>ZiL55Jx!z(Bu;>|n(aD@_QM;wV`` zMr127h{!EAg&3Zwi+IpQ#`eS@4(@4rE-h?HsW^xcviHQ$D#6Lse%Q=^BV7t;I1r2c z!%-w2G@TQsx>Q__#ie{%ZOvcqgyi5xB)rU($*QFeEXhqvSDDC8mZgtlM}J#z_7pj) zh5=J%r%RbAZ#6_$j|?0GmT&70KUWnk7fj!S`2PoM7)EW+R@d8AY>t7e?{i&O-<=nJ z0@G9-xqOgxI|uLy#iqs-X^6-ELbm1&#Gcq3Z|C#f=5cIqItOFEdy~qkZEb5URiF!y z8Pjn&M)$_Q^(g;&{Ycm?M}FLWNxN8Z|9QyZ!)*1){rjWo^BEp}@Auo&Z{PRl^;Dj7 zPO9UY?w{`9ARFEL0`egy>&aQRKezq6eO_}Xl{dQsFPl4qMANN7JaSg+l{JnIo(%Vp? zGbI8SU$jV!`#wdy*^o{HrPe)CZ8u0YiVH<|K65wOzS~<>&`(c@KuH+I;dg8IyS<1gnBte zwd$-XbhM1`cULY`cab~8(u26pJv6V6_|5+67#2PqV(UgWH5EBh`9PWqi{*lzvF$9u zXsST(<;Tu?&8I8pR_LwIKTq$PER1xlht>+Ha-p`cwRCcnPVJ-pF6&LOIdMbVbWCd$ z*RkAJyr+2nQc=niWEJQLKf3IJhf=mjbsXSmIuTT!H&CU+TwZDZ;j>VOJ9_`LP6zwb z*4>YCdtjk^v*y6UvIA7CSEz8sQxRlT>MScNEsG9jgUFsndhjH!1OuQ^dE>VIA?zm? z;)6U>CDSCT*$L}$R0@nFhYOiQPFB}blxF?Zw#Z=nRZE!Q%CG_y@jBE;acfFnF8XTO zEFY;77(=WZCHKU{Wg~up_<`9drO0ffyH5L5%Jn_*^bqTVRg(&c`<-iprRY0;?|Qqt z?|;P{tVQaTY>I!J18S?(EtRpCa-Og{NsE8%i$?UF2)8s*rHY4m`H#o30YVF*-TNox zh98gUc&qQ`nG_JIo3c#}n7Z= z!Tni{OVGT7X6QCe4E3-qn?4**;IvT)r2VvC5ovPnmP3zL~Tje!%?oD;TEhS>`{Jz^kU4_OT#$Jg~O#fA{1 zG4ia^?b}uQJM4t?b)igbsEd9~evR6`=Z-}Y*6gK1bdaLe<|H4FUpf3!PbTK!Sf-1k zl;T4F%{idhsMr+I^O|m*^>1*Io5*OvqYOLF&p+1i(*{hwuN&IUBBKoSP0*SX(tXU_ zCHOrN(&L=RyV}h=h49i<>bH4)ZFY8)xYCNWjn=D)%516VM$%JF*Zzy%PE7m?w@<0X zJU;yDChNFEDEBW9u5ipf;!QG_{XAUgZ^~r5B)njyYUg?J36gf2y#kLZh*E!VlseGg z8Vlv{fJbEbsrRo%?l#Jo^6G2Vn@s~QMsQOQ(KUX>6ySX~eBgkpQPDZW9ZjH7GGeU# z{mJ^Efn;J#FODUzn}b1W^oFzjszYFE>Y6Xd)a$pVI;7qB5xmKpdbQ!BEVI_bnDf5( zDt(iF{2E>F)Vxp)SBW)H{vHZFG~~9s7+bTCW2w_B@AJW^_^2^@PYushRU$%_kzR5x z(7Ypg0O<^}7Glkr;}won2&7AU6b(RH6y#1s_fSSw9M)1s7SZ zXB-K!R0aGAGSKU}7YL8=&U?u$E(U$ZojB4TsLKm&y}Ux~=W2cV%@6832C?}iRwOse zZ{aY7?f5F>UQIpJo;9{+7=z8Vb;zDk!{4Bdq@%tN0))(fW&_7Q7-$9d?XO}TL%k5h zSFq6)I5D{TC4f8ayL8wbYgDOaUS=`)@PiVg5fgc;PGl zmj-B36~_#_pQZxenp}>7!LPb5_d@Wu0WynP-+xy#k+88iAS*xwTwB3&zi-cbAsVj# zRnifL{trq}w?wpC)LhFZBo>IlvP1v_#nPY5)-Yr>hI&ybnlDj+N25VC(shgpj!u;z zM&h7BCOsdeO(r1x?*~Z0uf=ved#}Xm8l4*{Va&NVP|ARNqVuh8(Xyx-O%KVCAgsH5 zmS~2KjS8}M@jZj0)nozik@^KELAF7g=`{RzC*_G0musr7Hx^Akp7H7!dB>+;4;sw8 zV_aCyF$Ll|0;rzX{iGh2%avM4hU!KJtdH^xx^}(E@49Vf(nela28gVU=;b^d;w%Pb zJAGpKd~tvsQH?g=cv;0^*GPR$sPB56hY)|MHDV^nvA?>NwU}FLpR^x#QDnF&WF>LV z3^oYRfr*>~k1hib)kp8w$T51Im|oW|3)LNIN%z&GLGWs1NNRkTbTRJKd#`u9`|*?- ziOEbtG;ThnFvisrS8}CX8#Cw1ce@zsQgEx3ktD^f!n?DLM7LYiKVSzheztjAK;&zsp6?Y=DsFS@=0qs>rI?5|9HCL zxZg|N`ncYSwT&1`&x>^8HlFvqRN2{3kxHg3QE=hWx~|@c7(UCSS5Ya5a}+sQu&7Rs zZfg@OPP=i;#GTkDsn}ZUksH4MaoC2p&p0G@bhwUV;uMQV=ZmxNAir6f7+H(H;Lvfx zlZV{dQIXor&KJ#cy=Nttm;mc8s&1kto=y<;EZ?eXs(|+}QC-5tOv_#{=gWRaTVsRedb5{VnXcms1`btFn0(ikS7!F$xtNyj zhL!a(eMhxXBGFZ0@VbJPZdok5cgj%FwAsWn<3T8sK-9D01hTO&)~&qhL>oD8M=s!! z)I~&9G)n@zqJV}B8vm&Q`_=>Nwm*$<=LVa|Neu1@G<9ns(b-(ISUuvVrKdLCt~ zd;VlI1eh?K+yb(7^TAXiTl;F<@-4kBv34}BWo+4Zxuo6p1ME2tAAiL@tlbvq+$5$* z3rle!ElDZQN5EUEW;~8*XGZVS4&q;S7gD)udpAg?pJeTFf?f1|XY(UTB=w|yTqKi4 z_RCE7%XG2~u)C056$HuqxW2q>%RT17+-u8dnpcjtr;R8Is6wBjK8%BQyf-XFR)~Tw z0pi9;iDzPHo2!POC6QzSST@}+^@Lpd<<{^oIBI+Zx4d7Hyp|`)ssOn4%Qos{&!rj8NqyTIyqC0D!JBj8Kq9#b6Ag`-OB-FV_WJni z9DkIB$7ZA+8VE~|nIH=LXGfGjHCw))uUWYtPaJsd`dwqDGUT56x<+O=qp5i|sb%N| zq@0&NlsW|T!66q5G3^7VOJpxfQh^SJRnbvEDrSg6=;TpLjcX}jbL_;ttELYy@MXaH z-W5Wg{yvlr&F13A!p174*IpL?uSpx;dDc#ep-fWc^^_5&uP`3W?6SZ6>cuQSe>?(3 zWPD>MDt}PaVskd?-M$b*^;@~5GiUgWEH80R>~=S|`*5o%c=)w#v3W~v;dtki{^6>R zkMAo1bGUex;mZ~f=WxaXSVwCqK)yE!%j)>fiw!zj*5Q+I?WRYCrRL0hrB-IUyquS`avMl|$PVS>*H%!~L94sg1f{eQs>&>{cpTqZ?dq|$ zcH(1gf3|vh&FYw)yyi^2* zw4H~g&P`I*it8T)^nACjTs4>QeoK+GC5kt><(;ks#JHklgaBru_OWVo%rou>ofaKW z@@_WFJKk28J|q_xnxy2vuJVOW?x5E80NGK#lyE(`lzR4!RvNK%f80k>`Y=7VK683C z=Mr^~ixj)x z%*GNsyd4mE>U9ooqIo4v_}+kYZPd=ek^Rq z8jmy6zV?x{HFZDjrBA10zR@=KFSo$SF;Hik+nYpZwT%fGQ+}-vmkmiT6~pgIF`>89 zH&is|Ch`@?o5k`}qnMq0hpDe(53G_=_w@Dwh1%=F^3>=2Lx%sh$#OeS!H9QkVpma> z!??RfVKwqZSr8~c;^f6hyYcu4-_a@y!fbHF)cjY%Wd3~a+q+k#BHy8fKcf=5px$bE z5^c}H2;K6S>p-)W+~_g7WcadXmkF$`m}{Pi0~hB9AyR=EK6NZnVWa8p3_~dF@%QFd4-8@!icd!2xDA^N;An-s`(7W_hc9 zxrlXM6;4qm5B$xa&@Y837a%7eA~(b#?dM@_7)hQ>Ae{tX%WINnq+mpOh|qQSjLxOz z?cFnce<5Z{CZ1^1C&SpuyNWox^4Ro6DEZeGuy31k@k{C7893qUu`L$_#2BjD7%n1o zfp$-1P?2{SY0H=B3EW*Uw9_+OJg?quP_^+fo~;hXkiLma_QkT=nD8aZ;Hzzbm$BAL z`-9;@n!7IS$V>J8e)Dce2(a07!vGq?UYlWzBK3?hp>~{QT)f^Mk9L{z@3qu?Eoapi z=YC(XI_#uh!rj+mm}^2;tt2YzsS7T3ZMxn|fJ58j%>EczFy7k;BZ;~rn9 za+P2HVEACL2cRr(2@rjhjxq8i0$RqNKxz$eDgZJ{W{h3h!b{=mMePnTqvDoir1tZG zabOjt`x*|Ve^G5wVqP+OWeX0RPKo*QN*tI@%bnJia{HVAgQI$m9!>!-%%%aN1U z4wKGG+;`QjaLi4`G-KbLOt2>;E4VfP=2zb1vF&-bn;t~Nza};ha^%<)zR#Z#j3oke zi=ES*%dgr0Ou4aSMdsXqwoMfG80(9%8aq%OEW<7Fjj{@=yRr( zL~+^CKIeksrPPaHgQSKZ7CE?a{c-)e z2JO?wOldy}?Db4H(rIb8ugkQ&$65CDNL}I&&?6)}TJ#`Y3CQ)z!3qPaF?}^RQn9Pp zsVMUX=uJZajaX)b@RFLUdpaWYOxd-HGMpIM6;CXG&CqnE#-+Y6KmQe9vEDs)G~)y$ ztZg?jUWFiJ8}I8LFTfJWFkN;>7J|JcRBJXN7))S4CZ=~dZL*%;A64dD5_9Esntr~b zckJWZfxM{>y3@8B!$*iaRK$x;rK$%cROs0 z8qP7~@mALtGQl*vxq8Pjbb4e8-~=pKcyO0b=cv5%3$K3O^|$DMp5{#GS7rTGwDwCr zaJDL!mWC`*R3QMCohjV|%_a*fiNt&scDwpuy)Wo+@xsTYtD?b0v;jqHpvs7q4mCdq zS2~%gLJXtJd}yJ+C8t(KGbSnaxuue$o;@nZCk*A)vXiF0Slo|epx5XgE$(`4LRZ>x zS`^0y_@G<6MOZtO|3yi<4$)%ODziI`}t{FK>aFIrBcsE z8~WS+PT8zF6&Eb~*YN2&IDJi{nqiX-AGCdP+zjOd(&JXSdcPCf5>Mi0#w%u=bzvH} zXO06sdEBj4(dU>e`^X8#X-)MjQdzv+&*Y;JqpZBg6UH$&+w$;!;bYr1p}P}&5%qPU znz={cAVrdgZx3+1`dg7wi|nGw&Qmgq;_s=W!Rz9tG}nB`uiY*o8^z3i{kbO+>Vxr7 zea2SQMM%*20&wiz+&`z*d~Xmu8)h?5RpP%pUqB9bB9wGO_3dp~k$t`(Ja4qtvHav` zxG6CiIV^fK8QI}7!mol`0LL4fDz~Ufrn1Az)R`;riA8vB6zG-?d1Jy{*j5VOFPEED z@c22qSIf5Bw-8y7!0)QX*Fey=P*`s-8L%ctW(OswV4V&7SqD_o;?p6iBKYWRe4%NS zZGy1f$S>c-J+iPYu~udtL6De?N?AJ`8x&~&RGHttP@#leQwxdvIo_v`4$6k-97W{Q z4)IZNRCmP=3C)ril4Jtuy}y$=uu^6^yaM+=@CQnh%%SXQk=&jVVc;>>)|l%e zxAcl?^sp6b&+MgM236o~ugTO8Gc2RG2>P^)QO+x)_lKOZ}}P}0S9Fl%Jr;3EUGGjrD{r# zQLC!VCzPIoYDMb%2??%}h}+9%O8PMb0RV7<-EXh!0GYhY`ScVS4eU@iqAjb_8%KtR zGc}KK1qBdciuPGtqFVOBIGA~(Nx$+qM8~V@F-I2pN8r;3VGe+q6Q@{OHZp~amfa+I zOd`SvN$Uo@J*D7cd+cvgHO4q3dyUvgCu0Tg6%3~d@@4OnFkvf&`E^((?vu_0fnBQO zS^}_w^_!mbxzAkh5J&-)fX6M%M=EKZH<*D8Q#GY}h>h}=D*GsPBzQEmMsCb<5mEpm z>_;>5Y+9SCIFFRa_LF*07st?g@QT)M4?TIh=!pTI%+uj-)B=C$ZFC7ZjVSktb(l3J z7#T_9Pp3HH$Y)eCvA8QsP&>OYb|CRFnD%05GCibn;4W_nHKUajr{JUk;%Zem+IG9J z6Ek6SRIfgZWWnP1&>$a!$$VaYgqj&zk_~04AnCNr=*A(%OpD{ft{-+$)s?`mdmurR zmU_Sm7pTRZhAJ&tU+)rEl1kYsTdxi>Mxjqc_K2d1PkF|VGcEaq2MP8UvhuL|uYT#A zuYT#1_k$f(%aO_=3C2U5;v$cdZIc0&cDmJQSBk}LJdLF(gZYU>a|b%cIZ4W>+}2SB zIVB`vyXf`$Gt^g4lpHMRR6ru#VZs*YU$6bOioq1W@s7x`F%6LFGgT&|On>{j%K$q! zRW1Z*knfqK+2^^_q;T~01CUcVG~3;&{e76Cv95+FKKZ428^ZZjW9MZvSF*^Esg!Bx zE>4cX8E;ThcL!@-O9$)Kx(JkAmVyj&ruUum@+fK4cEybf!@Y?KeD|GtJtTba(qeR- zE8%)mZ*RF9+#_0by{(g|KqNNO>l|SShy~ROn6L^f1fpiJ3Ebtv$6V4*=m;bB1PMuH z1EdpD$qOOQcpr~Gtw&P3uZj+xW526)jhwOy4n4Ss#iVflv_rYL;qmbqAHrx$C0AY{ zxL}woy>JV6>F_*%9ZJeKJuYi(zV;rV?M^JGC4np&A5IoKM4~IfE58)v`B34}T9Y~r zJA7g~&c=hzwR+%ylGbR`50^w1C^MvNMSN zn&@R9)Wa<{VftLA5z_+?Zt)Gb=O3+k*|IpU1T)dfz~qr6=6cM&%i ztN01RAKTG|%Oo=VSu9UbZ@GQt}R|9G-3y_yZSjuZt(i5{pl2dN)=u;l<4tw zE%gaw;*(x@NY@`2BIkyEQljo-ycd{Nommby=zTERtAS!JW)BSy-MLdLG;o zr?}Fe>;@z+fGh{ez{Je0OM3afK73Hj)q#l;jBCI`-wUQj-Mym5v8e+`HioN~7&#Ok zZeGYHr55AduVl;N;D!6^&#bgKv)8+cKgKZf}7=o%Wz2A zQ?Y9a5pFllV6_f7oNXbL2i%mER^}*omk70xG3hBHyXS5w8XUG5x#+mr2wyfygOpX( zgl45F=wtCPKlE(~7NEwNdbRX(t@uif!MAWuK#Ce4H^tv2!)mZMxuH9rDvHFnO+;~bHl=QZl|lmwAzk8ndR4eitf5H+Q1igq?iS4By%a?9WC%Oi-=W<%bXDovG+KJRU=kE53trk@JTsqu;ah_ zmnG`xy3uD+r&u} zlX=AS!J8xkRLg8MGKhOQ4^ZT)2Fb$&<35U9^)6jIjh^uf;yS&@SUHrOq^(7-U2Xv3 zfWj*Qi63(veEF@6-bf`gR`$A4%y#r|*a=}73CXp=WUy~fTqyMXmIK$1GwYlej%7Ya zbHrZsA@FOGfkCE!*voEi)(Ds#*fU_B(*$3kjvyY;6F5-$Qohzz9nG$UW@E`~G)HKz zz!TNUILCu1uu@HVDx?W|JUQfzS|D?H?VeA+b7gTPAaxaAt&_+4>1oXi&lcn&VkS+ow{j%UwQreL);uN z@Y+wSQR9zqXt7d@hU%y5Zl4G5P$Z|NNHs}Sxm}f<5i-xO?e#+NXv0^T9RoG(DaX#& zdY=RVW!v$arr#4#xN0gKpED-{YBeV{BY9&#gXRJp{=K^bSsE#1ozpo%7cTvLHm>g3 z;R%7Mi!;`41;BaeN(rl@uq1ac;cuKzeC&l^c-A^lXC(%f=ahhl)(leI*bY-O0<3)iy_)&BFZ=!F4Yckb6(F*Nn4LD zuYk;h&~Cf;`jIxBFy1kV2GWThUw>dQWfpny5!)7zHcgHHzE$OKRKkTW-8nlN@t8qMyye(5WT}Y;vBMmB^o)0OrmQ_4W=w*FhCK8poHQk$%4_ zL}MkI1phEAAl~ZB1J_!2epMh>ase5ECasuL!Yv_2!2SIgQE&_ zT&8;VAsMjC4O&gGuth$#JrKI3$_8a>;6zY7F)#YVV};3}nGwGd@tP(kF0^5h?gJD71E0qf9Pewzk*njwNQ7>q_=f}IBXnE z!QRW0pRH2NGcnNJ^gssTwx2&R(0hkO7p#_m7a}1(Kn^WStS8$E*6BRHTm>4?zeGM_=>HXt^*+7Ar-5>|vr~&EK8HQVi!#4t-xMU%}|zf zKpFYw!as)8gMcc1vkjF+u%CL37ScmKsj@VNDr3lWd1!9<-CKJRP+k+x-_3fF4&qr0 z4(j00DC;eX{!4an$vS_f;&?lRqD(L@JXxzWc7+C{tlFD!!$3#6@}u7@3&G@jo}Qhu zymzWAGY5MFC};rrGybpq&!B#|^PRl)L2OUxyPV&HmGdMiS!&|pbQM-WiNR%m_a1TP?R#-TTCr9 z3owqh4z`Bfg9yEFa%+$$2TQldJ@lwXW~mxd04xB-c*86d&mCD8>@QXk;%IjSU}CTN zc3~1z^e5Y7xuAU6!64!UQ|gj>J*}=s+Vs{(r}1_f98YJOQhG$^{sYC9A{eS3v8JD3 z<93cfae0|8vVPKR71dI-$&`(9ui4Wfk$J^3>pO^vL_5qvm-Tc5xRv7c3WD3n%{yLS!)`#f;6j(8P;4u-)*{8n;l?EOPvh_2ICQ3)lT@g zvGh0>Y0l&dKk>23uH~k7O6U92dTNeu0(Wh})UC=Q{BJ5Ab;HtV)iW*s>nSK4Kqhns z6;(;>xb2Mx@>G+SeJ%L09rVZBqkfm~Q@*rCfSnf=>9?mhZ z!5o&l-UakOFF&(^@NF~79fNudr#Z|11ah*=8dWEHVoI6}{hASR6+?`z9EPGFHswiw zaPB5-F3ThoUj3M$qqqzvK#h^GZi%D9 zH?gI44sS%L6a&VFg#>|x;(gR^lW=5u|EOR7ZWC%YuA?(F+-cIZG zkQ?p55wD_-Pxa?0u8={jHPd*Db$}AMF^L2p#^XHbVSX-@F!u3tT5=tDEoR zJlN$iSoj(vxGXw;F-e8>mZdLtKih=a?KEwO6g@bR4s4~gy)A1gfmF_B$DGJbp>+5{z8mVb}oP;Hx!;SIfa#p z(ubyyVky8Fg%n_iczj^Yawo75S?1cm!37vEK2@R?##&P(Pm5$#i!C4&f#`$ys1(3) zSYIc5S^2C2yOGc&a3`D?bI6P>Ik9st0n#06WUf z2~#}jhwO>VDGO{uQ1S;U*?HE831OmWEriTKu&lmsBndX-1px%(pq=Ebc5qjbjm|o@ zoZ`)=&Uq&|1{jk>ir9Q|>=bwyl7z(s&?^oPyL>2v8W>r$@22BuDQ_GC{}mH?ErGHMGlfOrkXkyNNkOU4Zudg2EKHK7o63!epp7F zR_g0@dQJ)e!!Klubro#bxN`*-W+Qk*wdA=v4NdAya!M{-FYeeDU_*DNz*it^OlLq& z37Z#|07%ALQf{uT0K#hrT~Pc<-5SEpH8_*OUw_y!EO z^Z7~X0`!A<5_I+>nv|5tE|NhuE%a;q7XU~C?>KS^fM&d1*sVxVOHNqDkp>pgw8nT- za8BTwy`$i-c0>ip3bTp>-~_v4=LW#^0vr)A8KMg0s*0Nm6IeJ0Mr+T)XI(n`@q!OM0QKJvX07Q&R0pG5Yd z06a8aac8>@WTjq)CfzNzD87vG#vxKG@~Uzr5wk5^=nG2=fJazFdGVVX(;7dqUl_eI zh0I9uTXJ8-2w)6E3G44*t@F<37bQJApak~li8>Fq3jTnGCUTn|TmhwEXCT1|S-DhB zpnjD%Gt7meBI>&KUIrPdP>(9GMn|s^P2h0)$D+8quGz#L$j(r(x zEt2Jq-1M?aHAw6zl+Lh17ql4nf`}D(jS}_%)q9CoZ6xOw1#FdE;eB>gB|~i5(?B*H zV_OUe{RDQN&^M$GOog230x+O}TCuE2M_>`j{wdU$XO5yz(^&*-FdTtA*2TG<3qS@b z8h5IC*q%lN8eecUAq6(T!4*L8wQ#$-U<(~!&jqJQhEIYa;7wUeR01745+N(GIUsqD zO+0XJ7EQp`0#Lbc0T#VsGC*T|W)1rE0NI38f{3G?mV=&|l-Ub&Hg2;p7_B5o)qx_HV5L~ zr0LKKFc-lDjpQY|?(uJ-6b^5i5d+$=dIp#-%>ly*g%VB&i6R{M1HgM&n4PSv*gAOm z0L|W!4Yq6hBmi^#gE6DUQSgV1pkJ80VPPXJzjluIjDIgFO9U8<57)#afNT*cl6xOJ zM)FC7WZ4aQ5kH}s*?9(NOB^6RZ)gztpHgVz$?_`e3CfGeG8CtJn_m0+ZP*l=N|B+L@b<~%M_iwpPwZqGS#D~+HvR% zsH4)i6K?v*bG3W}TtEQyXU+wCt*lbg7Mf|Cci4QyHsLhQM9x^gB*wpXXN(Guk6@fe zAG3m0?L(825?Ad*&bGojAVn?nysyts|SD##Pw`B?RCBzGE)R0 zu4?O1$AEcRgsQ=Xa9TxpS3%s%kl)6A#FkVVN5HXhqe!|Do<0ox^N9T7j-)R&Q|Zul^GZ04``9RlUOne~{+qL~qM zpC4Wi6(ZmZygf)m4>ZV34IDNFGV$)0Z-9Tr@3H7=k=M}`G(?LDp9iZ6TnzZo&uYv} zDAGCNyyl%cLIEd{_lB@WbSHgeO6x=lAQj%U_+!^Kz7WH};{f==r1S*<94;h#hp7#K z%&RwcFd!L5AHD;Q8eY3klT_Wn5=vtJlRMdQUnPsiRia26cjZYP21~%@6-4U?b9Feg zbo`NWcjWs&eFLyehHnHG&n{Ij*#*h*LOS{7{(%($o2cz#$1 zOy}o2w zy}1__ZeS6V3N#w-rGvQr3FbZX{`*#7@l?vBI?$T!Vf#{YWG!NCW-Xnq1z1l_4Ah&{+`9aRZ=Mo$Y6 zSuH2>CMjqs$i(cgM{E!_2x>)Uivj;BW0a|6vX{R*E+DUX*kN99r(-=W?hY;^ z@}3Rv67gA&AMqj);RT8h!gX9q<6US2GM6L7UKTjOc8Mkcau$m5a)T#M_nqdF7#hGv zVBKtvC)KsYJ4uS+u=3@YJS1H1a$$nQ5vc-r%JEPw5(a~Y8vA91ogRyrsX~(&h_f8y z6x|8Jjs##Fn4sF{(I~gQ6n6=6vg^`#M0%b@c!+g`>wHKXZ*wW(*VOS?y~wI7M|IqL zg+;1>ImY(FtG%H6ZXY(+BW@PjaK8B|#=+Q`tvHhtKcU?-1W#Of# z!XP8iepE`VtP5i{3!Z8zCH5@rE0jiJEfRkFCbaPu<=xW)4Hi))9EN_q3H(F=LHmtA z(z2F=!4ZsvfYKGiy8e|?p~zEQfQZhAeRe9bAdrC_0sMU-BAh{Bx-Tth`gBah8#oI_ zG%~RZE88<@@TMe$@=UHK%4e^NcnecGfeL5^f4#3Fvv}FE&=c?#U$b)o9LshQ0kbI3 z741W_cv3RUm|(baJSJ+-b6qlvj+D9c`I$}|}o<&`By;hFN zT<%e-t@8ruG))9_K#h4RC3J4@3MhOr6J-|1GUkm zy&{#$BM!^%GAkTH39HDPD#JwZz}^UyPjZ53sY1(i4r!;l3d6cm0KNg#Xbs|NejzV) zk~p@Mi}%OEPZnc)%iB0!rSv>9bMOiyAS{DsOew4JXNbHtKt#xUiJmXSu~5xKmY8H_ z*UjD#ToDBFR>GzG(s9e%3F_go=sh|;ST)NH#v}ydZt10NyoWTmu11eF&n{~vimlM=VWELl4QvP&o9pebgLSmMC#+@aE%ybcFu_T=xi*g#9$wGWB zYxJ=pjvWU}HDqD;3^uQ5*EB_354g8nxnhUlM6PvHFo8*oL5VTWuFsT(Fc@F0jZ0>I zr_#H!hXCh{nO+J-o+LskM#f4Qp|qGfNvXp85V=dEVFKJTo|DJJ%r>fep+%ANAaE z-lmh-t7V-nX3uM3-iYa1@dnF?@UD~yF0di)G!Dy5Sa}2VMIxzv#=!%AVF038m@p~% zev(mnUk8Ih&A0gVGOi~)BZZQ3F`7227#-)?FwtzJQ50a#6>;JwjY1ZD!?3uehUDbH z9={`MtgaRR!2c5jq{8z2-s!k+rC5C*gfjEOQ=JdhDJ~+&E-e{5KvEp@bdp48p9`Q7 zI~}4caZOd6@C(SBJv=NA@7JzN2RCdf8@YJt;P-6~%U*EL>KoQflwNoWFtHR%ESXvC zyhEKAtPpgx%$Y?32vK8?ssUZGx8b7^EM=S5^`tRLfJvr}VHHls!Yvmt2r+P&nQz*u zs|{by>Hv5LR!W?1GuVU&@5wtv#BJdihQJQz^z3qp<$GMsT4&GZnVuTBD8IkZmL|66 z{VjJDOj@i!36JDrM&7^uh zB`<&^gYaf|x$W{ftQL8(4ks_k4tSZK0&={|Wg8-Ev4DVfcA&t@vXbAjsh8FLr};g~ zS{&;@St`+3F2!0`?P&pbKkLADWxv{yjd--=?qHa%%BN|5@e(XWu{(P(vREK=06Bmd z7w?BwYL_#mOP-Kp_W*D<2>w`m0JOw{zy1yELKc?#vKiH_Wmjme$TCBNnsKI1gCII* zAsPkCS?jeIGqC)SH!~DzkEcBfaF5-~ZX{A+99sc^a>fyP$=38fJXS2S7m+>x4ra2f z!AIb_fGE^c>%9ay?W41|luy{}<=_z}1R!pyy(FCO=ZmVi35y#E|I4vHJmuC8mL3r% zuV?UFB9{ou8dzH3*I*;z)>0v*tasGY9M7SWk2~Wi(hs<$NtPw8{q-l7QNh$WhOx&o z3W!w`o2A%8#Qx@G{PR#6C~CE~heQOjv@5|dm)^|_XKJZ49oack^3EpAg%E&-g*|ch zl>2;?^a?H%1f(Z~99u67UnCo`d|0!9IDsr|VI2UY-d-NF)Jy_iz{~Qs zHSfFlRycn+7$znVIN*Ksq0bZS{#dblAlk}ysbDGW8(sV?q2U?qO>0GtES7f6$pTNL zUK@ft~su%Gj$NX)&qJ0zDX7 z!mrg{besWTN7xX0KJ9~?0vXHlCieR8TmZnx%;a}kG7+bd3sYAJ3fTAe^}?PfYQQOv zz9xi6b?`>D7E?kMlVVe6hn8C@TW%$Y`pMG;w~=T>mP<9*;!G3BUr2FlS-2=nH)88$ zmTcSLJ9-4PTe`n9tyA1t41*XL_Ly}7IFO~gWd4>9fxx=3@%&K6f$=m#PV&vrfA)NI zgtG@4M6fBWjayv-4kFke4#$}F7}A?SA7#zM&i=)%6FkCb#OhU+_Y(S?k_~H1;4W%} zwhpqR&u{DC2MS3Do0rQ6COZ@H(+Xeivme>=mY z%!&Y(hq2ZXMy_mJrfp1R+s0;P(2XSdJ&+_102^bSCR2fG4ZAu`^)(nbWl}+Cg&+K# zNRpp0eC81rrB=gBaigQRrno6l3Vax9tH2HILoh3kgRj%5qZ#G^6y$U;8BxFSu~ct; zY+<$sn3WL$EQ<86Dr@$)Pe1)~BUV14-YMzm=4Nb;v(YKfrU0axSq9c^@xmv(ePZQm z=M-x!W=ufrI>AnqIe8PN*~{q0R#V--Yu|v5#EUeHd+8jGli}RYqJ@$+}IaZ)+wYyrefKj-$4rS~Cp_UlpA*t=P## zm&cav*jlLX*G=hzo6^Nios?g0Zt6|DDRR#wmNxpg?xr4Qy4g)Fe;=RH*Y{Firn1>d zJ$^H<<)qG*aHEepe^2kgM?HEme|Q%)O|1=XFnE{F=r|#g3bUH%tB+$TW1HREPhm_0 zFXn16qbZ_`3V9P)~A#*_TC48g@3%_KP*9q{ZdOgCZn zZuS!!S-0F}Nm=wjtW$E1sJ|k9dckVIbCW%bIPlqUAd0k!&yNGeg5#XmC{~~9MsmSw zGIoxGQ8xrrZHxG6#?v(0a!uQuJn74^1+1mKOOCQu%Hd>TDIzOV5f@Gs^p6&jO`W^$ z8Z4R`34`KA zj)S;q69Z7lWSOM^1m0lZ7qaYe%!(w8F$A~TU*eW^rjCZ{eZ%;*L3UJ%aqL2A3Ra%o z7qwpuy?NREJlE!`2|!>*gRiC(7-H)kYg|VdsBue;$g#XE?36Tu$;Nsam%uufI1A0 zD~=L3o!E|bW^6Vtcnj9AvZG%cB;aZB%w$HwZ`&k0+0i#naO=9w<0O(S9DNlS{1RtV zl@j*J4RaVsXgBOzx3zMd=RUHd9OwE_o1MN+O-4~*V~-_>;sA+^);yM--JfQZ`)dbcdm)uFcshBDhSr8b)(Mub!zCOcOTL*0P9>eR-T z^=@)j7reqiWDu+5#BMsipI0-K^5h~;dUCm7D4TXU?8@_@iJ zutUXty~f|&s~^e2eV!~GXxtkZ-rp4UghRA1u#wsj55;jXaVXv(8o*(9E*bB0tO@_P zO+JF?D=%8Cu($2n5?`sWs~el_a1oTK)EHU&UnwwGEe4AnF3G&0ym1W4JC}5n4~UV-zt6k zs+fbiP8S-EP&=}KDQI;6yJJh2Nt^&n~sVU>|4=w`~ zzzn2Ztuz-(mgz&(qfWH}S=GQM_fD4#w7vZoufA`!n?5pYe;rv_w3t;?V`2CFnUu$3Py9qS@o=B z5BQTZ&ZW+q?{l1Ad3e8NNALJJ-zt-yxlW~m30cp{!Oe=t^;(Xr zAK6vRab=_<#T~0t-&<03Ocgi#7>Z~QygKhz^wv8sj`|3mY7wh_)rso8lxfvPUgks^ z;7RmDk`8=F-pNO@aefEbnF6mTNWHNzdV06qk>S4=bpr&$vPizI6+BrovXId#SVtA> zu3|~GB+q29kVk)CH0y-oGM*fdeB3TMt(+C9dbA`tD2=?_(op2DB9Oy`oc%~Q~^}?Jz@$#u7zXX}Q$g>vns+wrAg%`mT-J-b3N#r{&v<*}u;=1po zmm%X`hGi+1*WssHx?8H^y`(CV#U`CwHM8=TdP4k>#{me+`!f1EM?3oOlB%d_26PK* zCMyVpY8+VDCPn~!+BgkqcJqfwRm3>gsUqT=Q>u8-mVjBOV3O1d-<-lI+goSL119Xc z402LpNUvI)P6+tv*EgG~*c#HcVFn7wY6i(Hu^gKzBf|7BjWQ;kW3>5kNOzjhUk=)< zw-})9O40}xs%9Gu`Hc)&=nMtLO!h<5dCWtd#cg%Mb*M#W5%wYtDiae3_T75R&ef0XYvH*v)De+Ua&W4pkZ(pr>({bW&wu3Q zb!pc}I@VtoLv|5%VbPK=vR1F^Jhd2;^4r<0(d$(y@#82PYnjqIPDP&8NLhpH`R{r2g#w?nDPjwDqnQuJ+kJn__GFA2Mt0yC>>wT?5P4hnI++zVK9 zxJ;Q*7!k=ksa6xbpf4$_@Kh} z_QO+P*4Zy+p~NCr2-Geb0iXHEo<_i{LmdjH zb0~R1e1b?g*cI>i+$UcCEZ0XmK$sq)rV@ZyVX?^#uz@iBnUCxtOustRF^(93YUiyG zK&wxA3unx=kL=`-xg6>Mozq)9G}{{?LmZvcYAEz*bZmoZPViHZ7F(FC3-0~q>d)`l z7Ku9l*gFxjmWS5H(>=P&cV3+j_kTCs+|^rjSF7i2_o+IJUstW!ZrgRx?rJF5*Z2E9 zN?EtNS3k1P?p_({kb8gG)7WqKH1>CRn%{LVzk}MmQ+WNmm*(AD;Ek5{g>G-b*|M}GtQ|PExDM&T05I&ZFN#V=DMdNu%iVj zodPzd*DTEW5p(|W^MCwoe!^dRht+ns!ntP)=LSiWj_Qrol#I^vWU9JiVzk~Dr)iXr zL8$y@s@$%fq4!tgCZi25%+}~6B=`{c44X5Hu9~BQOOSA@aobbl#tr_%&wpLs(G%V& zI}b^GHqj=>^3Z4+`Glq{?2brD-ZA;PyqTl=5C{MFHxvNhgX~)b{N5tq)k3%3Wo_vK1=SI>|8eI&J!B1~I=8gZQW6^DqB-vx+yXc(aOc%qq?)sh9a`W0goKL2fQ)j?o((V=*lRZ)|mv zMlWqB;rlSRjUsTxf|+*7veY%o{A;@2pFaQf^Sh@)iFQuvq?uMC;#eC8Q_~zx*4mtFWgHg@ zj6eE~?q9E7=1w6;Uu(eP&1zJz$6JoU*wAEfWpFL~cR*E}T+9E=~Q zI+WUN3@`4FYeikM3kxkS5 zemhq@c{swEK-HJsSnhn5GqHgasaCr4Uj)B<#qfXf?xy5`5wy`4pkyh zR6KT{Dm*22#Ko#ZHO@^DdP|kt)zEr2g_YK6Y5^t z$e&m~@9tQfcf%`h4X=bJpyUj$c*-ODFVG}>fh*WL*M~aP zFGme<_vL>g>k#bPC-xz*%aJ}F085l#*Br=?5%9l!VtsJ>(+;uJRM<6cU zm3%&myMee{(&=?U+|)EQ-V3BM2cyzFHR#n$Ir>tI%tIUgFsIhtNrK6WMby*Dk;(an z=-#Fp*Bb>6lmLiML^UJw%L{Fsc!{zI>=YN&uCW`uV30k)VdLO$wuWcFx)|B}oD~44 z>}bpPyqoQV?1>aM4*vZ>U9w)wG-u=5m<{meV6vTA$udbq#IMsZzhe%(n9kk9L+vO2 zab?^@incSneS0qPsxEp( zR6aMDJvrs5KAXY~$J}tttK*n?^wba)mhfw_V(Nexq-N)x%d^_a{$UR5tq|(17D8!+ zx%4Xc|K3mtb@d}VNh>dh`gr$n9wAE(-Y0-~wJvSBxP9g$d(tsihx(qNMQoIzB8qE{ zEQn&tJXkYMZLD#c2YJW2`FscW^|+|wOKv`gb9B<>7bQO=Uz~?ylp9pJ-JZQNQVDK! zX|x$9bnr%7X{JhTh5~CXtJEyz4|760Qn^|dbwe+24!uxAF^ly84?Z}jZXLZ`{m4G_ za%HFkYLxE$hfT6B-0<8-_NY-_9qO29QpgFRjz>IDM8wApqDj|2vQsqaa;O6rq9w}1 zKY_}7YY6VSkLRnz`kE z7Hd;*x3>NpI(a;=$7d$TCMDHqQps>)N|A^dMx2?dO_JE=WQ#Jq6d#?Gs7bPSZt2VN z2yjy7?M1OxbCNZ!_|1dtQIFp^_|}EfWGCzGWJ=Y6JU?QxrosfQ$1mm?2w+cD-O6p5k46moW{EQ`E$U-ryL_S~0U9qKz$Kf&7+@2Y85 zNGUTVQ-(B{Fi7+<01L+Viv{)WQF*656SenuF5g4JV$Xks)S;l>S%1q;eQ)^p&&qC0jt6;(`YSAjMf0#b067*$*&Ie9g}y{m|L2fNt0HCz@P!X*TGD{Zc`gd zYc9QGhv4G5M{wsC7u4`rJc8Z@InOHeE@QEGL2o7MufWpz2z*(6RN-_6i_XBEe_Sh%2niz&k zkwr0?7sA**Lz}`_N*&*?V^EftTrE5y*e@4~bpQk5)-v}-AlpUR*8^gENHg)y@1bMP zKmHT>P%3o}Pt?2`m#O<3@@Q&|YG5*^d2E`St$&!4dMjIhqrmMhr;=T8fZYM$!*5A> zT>Z$toX3@+J|51AP7@xlWFKt|(Yr0Q3)ergi+17KP~Q)+WEuRJM{j8HjE-eCEsoLH z)W$ZuLfoPZBC;u;sF<=RVbPf;jirY9H#h ztV+rAsHQqk$sLPPma@vaQ@ z{h--6PF7@`O)U-9Kg|4N(n(Ti7W%22b>RGTR_ITNeqR;0CP;~(a1-f-Ftr@g2=20$s7`=4#- zJc!u_4=CX^I4?P^md9)zWLJ62w!sgeyI92Abox1`4OsQLkL*EiSBE-=(_rso05Aan z1Og6QaN4zx?8Ir8Lw!e;mLOBsV9gjb8Li`F+7OaSQED23E6(aWj?y(<_XWH~uy$j) zdA^f#A$E5IY~P({^Xc{8d2;PKV7n_HIJcI|6y`yju{jP#a}m?R*vvFFKa|nWWBTKq z+8csHy|}k49{mTn38DaYMDxGoRRlc&?3f z0Pwgqc;ohhnQtRc^8aywKmYKTfBh?L>Gt&d z`+51>7t6xg{yP5f&mSHex-Y-WNBFHj_h0|*?>~N84Cw#;+$%uMP6(9U8Lkm;gTp@hMUL8(%$a!&}{x#j_KYsY@ z&wu}4fB*FBQy+S^-QOy%eL?{jT=P|`35}_>JmF;xGXkqI<~rB}E8~xW;RloE-Z%rq z*~`BMY_G?osn|I?JDaA}Vz&asOqN@}!7GR-2i z4nx(U74KY|cAeQffLyA z6mj5jKup$YG4f6VA&!XNsw^DCrDRup67Mn< z*~-()0euoTDgr%m#bNsgmxH}7AbE;Lz8W`PA8CIKY^_*z)OkuFzz?-)|P$jqEP~g>nbqUvH@QTSDy0lCItC+9}V8pPZ zsb7m~R+|OJF<_6VtZadz0AP|m1=w7oJEz&AgfcLlqXr(Jx$fKnf*p$Y;!+Tpt$4~{ zCW{&4oIA#jdeCNh9D|UP#k&@NnFoA&pre=KJPapW6w{&t)L{s5(6Nkv&>uSBKhfJX`|g1PXw+O+cQ`tz$Pf zToF`y2g?tCv>(}AA8GHybS#bNBD=tw(Wr_@WAW^cW)?OIV1ki|Tk&id2Hq!zgbxTD zZs=6gaGD8$sK7nqJM13c9`7sw0)hiire}iSdqnPeJr8Fm)Q$xzIfQR8J^%?h{Uu?I zb#d=-(H`*xqAq&vWM$<&JHQWY3$-lCp*QY>I4rHh1ObB)Q^-CSxOIXDykZ0>aX^p+ zjr34^mH--XZT?MTAHX;z-~}a*ASMT&7g~k8gm90+rgst?MOxS5 z7#JJRiY$Pxe2+yFV15qK0q6sj`;Dr}mq2La1P?H}W1i08*hU;$7t#`@u<0x~E7;%U z$BJv>lG_K_!}`8)@B?cQ0QK<_tpb-vY_Oh(L5Supn`&|Vd|ulIS*7q6aXC}4tzGdN zAnn|+=6xq&>)1z#{ZqEESU_0_ZCtrR0{qkm;Ol|PXpB7!AU65N#M5OgL$?uP$=Ku` z2=8d#so0!tj0hh*j6~6AU&PnmCSyw*5&j}rj|erN-4ZW9)EnowyJ7?0Spx>KRJFis z?Ib5n3jRiASP?h%q8C`M%w}ap(gZ;K~=^2*HF1 z0}1@L%l@m+|I8XjSR5hMQBVieQ+B@pZPPpQ{MIvn1&fAL<-2Ex8I81U_)hFQ?6S3b zq|JluDN))u_#s|On6m)joLT6ZmsN(V#`$%YG*yBxTgzy`(*kkwIt?+Y>+qXCSz!RM z7sx3BB(m=mY#sZ+5)_;#E!ni6!8Fc;jOze>D=lNMZqMQC1=VVa3j+ z!C)sQvd1t4$vnAxG5yuh^cz&b-Rj@oX#LwTmKtQT#+K2M)xeoN+h%IEW1V%>IZfZC z{w)t-vN2ebZ1YB=Q&USB42)yRb7@V6{2}V!@K6aZv=|?_;w}f%=2=bCX@>oulGg3D zH1Q!j*=ZV5FMms~Kus%OR{rn*;EaD*OyK*jpz*UG8N?YoN-^4EHHdR3}P8E`q?L#h>Ce=)> zE_H4*OllAl0}gBp!!%oa^_2ej!*754@BNsZ_RQaZ{xtmX%fIv~y8avg4-nG*@BHth z7G;cc9+Gq9C#67nil*5qn^@*KrP{DD>a8a48w=%*ej1t+Gv)x7+fp%^C?i)%QCc3S zT;H?Mi3SH-lZ#lyEAd$ybn7nr@`-JCl26q&eH`4}%;4H&V7`~4?!khkrELr!<)hRxZWGJYx+ZU~lO?e_C4pLua+ z<=L^GkD;Fw8^|;aWlUy{3iBBnUP5)n41mz%7{_s5Iz_*}3WyP{BG$>2c8fmwyrJd) zxsU9~E?pmL>k^a^+px`o*B^pGv@n>AWi%!G1}CC+in3t|nBIejD9I`ehwweDEx~gi z*>h=fb*RltP=KNw&z^<uz8h8^tn&GytnZB zNKcDyKL7g5Lv-)fo5@|uyuQfUl?a?7=b8_X z{=|28c4rgZpL4~zjAxHQzi8??<`uG1v=UgMu!c_TjWelNauM>T1yoQh9+ zYJ%7GJ3V2M8ZcXM_Z{;)@ASfPmX(XSe7)MV-?~3};vI8e20B#jePt2tTCwoutFn97 z-5!$PcxDlwpZl|~>ZNnPU-w%&{Ntv>2`fZHG;qs&z*d$;MpAc}SCwo2|0Dd#vpKV5BeqWXYD6^WVeI zCl3Fozx@XA*Pn*Zzx?OTy5Fq(&AQ)Grd#R1HI+1Egrze=RHGJVwu)9W&Q+R*A%^;X z74+g=$vOCx5LguiR1c8c-&q!UB*6n~B$Gw2HtXiylZ8oCN{pI<#9O`D!Fsc1eY2w$ z1JpsfYMD*eFq$Gk2Rqf4ruOaX&H7xPc#Zy>m-%a7$L2ycY+W(hJj+FJ2-HO#s+7Uz zH_7<+%V)&)_iyu`e?u7l^CwPY3E_`rL2z26VqJ`%DXKZPXj&ee8D$!Z&LLGh9ZXxY zJ?dQ6dHJu?ljGMPs+2D0;_4jDm~A#%HJPG18XI_D;oT&${b3C3Ed}yA1Rqaqo~>0} zoJ^Z=tl{AzyH~uK>y*bb$!G`rh823A-20^|6fez8$>V$tqc=@mGo|7;W;|-LZX4zc zDPS$Asje`*$>nvj`l}z=M^=AjsI5zY_%}qKtznsyQ9r<7iz}wp368beqN#oeTKHQP zz*}vKi#6#q&Sstl-f&fGYVpoA>&7t8WpIOhmnr~Qf;2@6g2TNUojr`43~J^uO?HZ7 zc5eO$iqjZI#mQ;68i225C=j1bF#@g3i3RMlunlEu24P4JLl`s+^V?5i zOOk1}J{g%Phg+s(Sk!N1sCgJ{LzpmbtpTuipw*a|$L0D|m-a0I`BM0|_C+JPfJHtvuixhtESEMwz^s0<$vn2xKwT*$5+; z3Wr|P{Epe-18HB=!Y8Kr%Q+5rDce#clBx#p`=r!@bMH#Yn!K~zai^;�!NiHW`1S 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⪚iVJ0Y74-bt5aY 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�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 o$y(|H36?EI@=z#Epc!8N8|A8PFZAuk1-; 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 literal 1490944 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%0DLW#0M>TD08vTZ`gg@jc$rGjf%1Qg|2^^l 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

PX?#tEk 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

`yE82nvYys}7RYv*Y^Qa_-P6=HO;*$P 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 diff --git a/public/assets/images/icons.svg b/public/assets/images/icons.svg index 5a377c4a6..b4b8b1d0e 100644 --- a/public/assets/images/icons.svg +++ b/public/assets/images/icons.svg @@ -1 +1 @@ -arrow-downarrow-leftarrow-rightarrow-upchatcheckbox-checkedcheckbox-indeterminatecheckboxcheckmarkclipboardclockcloudcogcrowndashboarddiagonal-crossdownloaddraggabledropdown-listemail-buttonemaileyedropperfacebook-buttonfacebookformgithub-buttongitlab-buttongoogle-buttongrouphelpimportantin-processinfoline-left-arrowline-right-arrowlinkedin-buttonlistloadinglock-openlocklogotypelong-arrow-rightmagnifiermarkermessageminus-smallminusmood-badmood-goodmood-okmood-superbadmood-supergoodmutenoteoauth2-buttonone-ticketorganizationoutbound-callsoverviewspackagepaperclippenpersonphoneplus-smallplusprinterradio-checkedradioreceived-callsreloadreopeningreply-allreplyreportsearchdetailsignoutsmall-dotsplitstatus-modified-outer-circlestatusstopwatchswitchViewtask-stateteamtelegramtemplatestoolstotal-ticketstrashtwitter-buttontwitterunmuteuserwebzoom-inzoom-out \ No newline at end of file +arrow-downarrow-leftarrow-rightarrow-upchatcheckbox-checkedcheckbox-indeterminatecheckboxcheckmarkclipboardclockcloudcogcrowndashboarddiagonal-crossdownloaddraggabledropdown-listemail-buttonemaileyedropperfacebook-buttonfacebookformgithub-buttongitlab-buttongoogle-buttongrouphelpimportantin-processinfoline-left-arrowline-right-arrowlinkedin-buttonlistloadinglock-openlocklogotypelong-arrow-rightmagnifiermarkermessageminus-smallminusmood-badmood-goodmood-okmood-superbadmood-supergoodmutenoteoauth2-buttonoffice365-buttonone-ticketorganizationoutbound-callsoverviewspackagepaperclippenpersonphoneplus-smallplusprinterradio-checkedradioreceived-callsreloadreopeningreply-allreplyreportsearchdetailsignoutsmall-dotsplitstatus-modified-outer-circlestatusstopwatchswitchViewtask-stateteamtelegramtemplatestoolstotal-ticketstrashtwitter-buttontwitterunmuteuserwebzoom-inzoom-out \ No newline at end of file diff --git a/public/assets/images/icons/office365-button.svg b/public/assets/images/icons/office365-button.svg new file mode 100644 index 000000000..8fe7b1fda --- /dev/null +++ b/public/assets/images/icons/office365-button.svg @@ -0,0 +1,12 @@ + + + + office365-button + Created with Sketch. + + + + + + + \ No newline at end of file From 77d3f8bf674ae8a56057de5a1801972cc80650be Mon Sep 17 00:00:00 2001 From: Martin Edenhofer Date: Fri, 14 Jul 2017 11:57:34 +0200 Subject: [PATCH 019/144] Implemented issue #562 - Ticket creation - allow to create users without email, issue #181 - Allow customers without email addresses (was incoming phone call) and issue #247 telephone ticket without email. --- .../app/models/_application_model.coffee | 35 +++++++++ app/controllers/users_controller.rb | 18 +++-- app/models/user.rb | 16 ++-- ...0001_object_manager_user_email_optional.rb | 54 +++++++++++++ db/seeds/object_manager_attributes.rb | 4 +- .../user_organization_controller_test.rb | 32 ++++++-- test/unit/user_test.rb | 75 +++++++++++++++++++ 7 files changed, 213 insertions(+), 21 deletions(-) create mode 100644 db/migrate/20170714000001_object_manager_user_email_optional.rb diff --git a/app/assets/javascripts/app/models/_application_model.coffee b/app/assets/javascripts/app/models/_application_model.coffee index f7c708b78..49ad8aac9 100644 --- a/app/assets/javascripts/app/models/_application_model.coffee +++ b/app/assets/javascripts/app/models/_application_model.coffee @@ -32,6 +32,10 @@ class App.Model extends Spine.Model return @title if @subject return @subject + if @phone + return @phone + if @login + return @login return '???' displayNameLong: -> @@ -57,6 +61,12 @@ class App.Model extends Spine.Model return @email if @title return @title + if @subject + return @subject + if @phone + return @phone + if @login + return @login return '???' icon: (user) -> @@ -165,6 +175,31 @@ class App.Model extends Spine.Model ### +set new attributes of model (remove already available attributes) + + App.Model.attributesSet(attributes) + + ### + + @attributesSet: (attributes) -> + + configure_attributes = App[ @.className ].configure_attributes + attributesNew = [] + for localAttribute in configure_attributes + found = false + for attribute in attributes + if attribute.name is localAttribute.name + found = true + break + if !found + attributesNew.push localAttribute + for attribute in attributes + App[@.className].attributes.push attribute.name + attributesNew.push attribute + App[ @.className ].configure_attributes = attributesNew + + ### + attributes = App.Model.attributesGet(optionalScreen, optionalAttributesList) returns diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb index c1997de05..acb82ed35 100644 --- a/app/controllers/users_controller.rb +++ b/app/controllers/users_controller.rb @@ -126,6 +126,12 @@ class UsersController < ApplicationController if admin_account_exists && !params[:signup] raise Exceptions::UnprocessableEntity, 'Only signup with not authenticate user possible!' end + + # check if user already exists + if clean_params[:email].blank? + raise Exceptions::UnprocessableEntity, 'Attribute \'email\' required!' + end + user = User.new(clean_params) user.associations_from_param(params) user.updated_by_id = 1 @@ -166,7 +172,7 @@ class UsersController < ApplicationController end # check if user already exists - if !user.email.empty? + if user.email.present? exists = User.where(email: user.email.downcase).first raise Exceptions::UnprocessableEntity, 'User already exists!' if exists end @@ -177,7 +183,7 @@ class UsersController < ApplicationController Setting.set('system_init_done', true) # fetch org logo - if !user.email.empty? + if user.email.present? Service::Image.organization_suggest(user.email) end @@ -363,7 +369,7 @@ class UsersController < ApplicationController limit: params[:limit], current_user: current_user, } - if params[:role_ids] && !params[:role_ids].empty? + if params[:role_ids].present? query_params[:role_ids] = params[:role_ids] end @@ -449,10 +455,10 @@ class UsersController < ApplicationController end # do query - user_all = if params[:role_ids] && !params[:role_ids].empty? - User.joins(:roles).where( 'roles.id' => params[:role_ids] ).where('users.id != 1').order('users.created_at DESC').limit( params[:limit] || 20 ) + user_all = if params[:role_ids].present? + User.joins(:roles).where('roles.id' => params[:role_ids]).where('users.id != 1').order('users.created_at DESC').limit(params[:limit] || 20) else - User.where('id != 1').order('created_at DESC').limit( params[:limit] || 20 ) + User.where('id != 1').order('created_at DESC').limit(params[:limit] || 20) end # build result list diff --git a/app/models/user.rb b/app/models/user.rb index 1c3b2e7dd..e447b961d 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -38,7 +38,7 @@ class User < ApplicationModel load 'user/search_index.rb' include User::SearchIndex - before_validation :check_name, :check_email, :check_login, :ensure_password, :ensure_roles + before_validation :check_name, :check_email, :check_login, :ensure_password, :ensure_roles, :ensure_identifier before_create :check_preferences_default, :validate_roles, :domain_based_assignment, :set_locale before_update :check_preferences_default, :validate_roles, :reset_login_failed after_create :avatar_for_email_check @@ -867,9 +867,9 @@ returns end end - # if no email, complain about missing login - if id != 1 && login.blank? - raise Exceptions::UnprocessableEntity, 'Attribute \'login\' required!' + # generate auto login + if login.blank? + self.login = "auto-#{Time.zone.now.to_i}-#{rand(999_999)}" end # check if login already exists @@ -878,7 +878,7 @@ returns while check exists = User.find_by(login: login) if exists && exists.id != id - self.login = login + rand(999).to_s + self.login = "#{login}#{rand(999)}" else check = false end @@ -891,6 +891,12 @@ returns self.role_ids = Role.signup_role_ids end + def ensure_identifier + return true if email.present? || firstname.present? || lastname.present? || phone.present? + return true if login.present? && !login.start_with?('auto-') + raise Exceptions::UnprocessableEntity, 'Minimum one identifier (login, firstname, lastname, phone or email) for user is required.' + end + def validate_roles return true if !role_ids role_ids.each { |role_id| diff --git a/db/migrate/20170714000001_object_manager_user_email_optional.rb b/db/migrate/20170714000001_object_manager_user_email_optional.rb new file mode 100644 index 000000000..4536130b6 --- /dev/null +++ b/db/migrate/20170714000001_object_manager_user_email_optional.rb @@ -0,0 +1,54 @@ +class ObjectManagerUserEmailOptional < ActiveRecord::Migration + def up + + # return if it's a new setup + return if !Setting.find_by(name: 'system_init_done') + + ObjectManager::Attribute.add( + force: true, + object: 'User', + name: 'email', + display: 'Email', + data_type: 'input', + data_option: { + type: 'email', + maxlength: 150, + null: true, + item_class: 'formGroup--halfSize', + }, + editable: false, + active: true, + screens: { + signup: { + '-all-' => { + null: false, + }, + }, + invite_agent: { + '-all-' => { + null: false, + }, + }, + invite_customer: { + '-all-' => { + null: false, + }, + }, + edit: { + '-all-' => { + null: true, + }, + }, + view: { + '-all-' => { + shown: true, + }, + }, + }, + to_create: false, + to_migrate: false, + to_delete: false, + position: 400, + ) + end +end diff --git a/db/seeds/object_manager_attributes.rb b/db/seeds/object_manager_attributes.rb index 420d4f3ee..e622a82e8 100644 --- a/db/seeds/object_manager_attributes.rb +++ b/db/seeds/object_manager_attributes.rb @@ -604,7 +604,7 @@ ObjectManager::Attribute.add( data_option: { type: 'email', maxlength: 150, - null: false, + null: true, item_class: 'formGroup--halfSize', }, editable: false, @@ -627,7 +627,7 @@ ObjectManager::Attribute.add( }, edit: { '-all-' => { - null: false, + null: true, }, }, view: { diff --git a/test/controllers/user_organization_controller_test.rb b/test/controllers/user_organization_controller_test.rb index 1107547ce..1a64030a4 100644 --- a/test/controllers/user_organization_controller_test.rb +++ b/test/controllers/user_organization_controller_test.rb @@ -128,6 +128,14 @@ class UserOrganizationControllerTest < ActionDispatch::IntegrationTest assert(result['error']) assert_equal('User already exists!', result['error']) + # email missing with enabled feature + params = { firstname: 'some firstname', signup: true } + post '/api/v1/users', params.to_json, headers + assert_response(422) + result = JSON.parse(@response.body) + assert(result['error']) + assert_equal('Attribute \'email\' required!', result['error']) + # create user with enabled feature (take customer role) params = { firstname: 'Me First', lastname: 'Me Last', email: 'new_here@example.com', signup: true } post '/api/v1/users', params.to_json, headers @@ -330,15 +338,9 @@ class UserOrganizationControllerTest < ActionDispatch::IntegrationTest assert_response(422) result = JSON.parse(@response.body) assert(result) - assert_equal('Attribute \'login\' required!', result['error']) - - params = { firstname: 'newfirstname123', note: 'some note' } - post '/api/v1/users', params.to_json, @headers.merge('Authorization' => credentials) - assert_response(422) - result = JSON.parse(@response.body) - assert(result) - assert_equal('Attribute \'login\' required!', result['error']) + assert_equal('Minimum one identifier (login, firstname, lastname, phone or email) for user is required.', result['error']) + # invalid email params = { firstname: 'newfirstname123', email: 'some_what', note: 'some note' } post '/api/v1/users', params.to_json, @headers.merge('Authorization' => credentials) assert_response(422) @@ -346,6 +348,20 @@ class UserOrganizationControllerTest < ActionDispatch::IntegrationTest assert(result) assert_equal('Invalid email', result['error']) + # with valid attributes + params = { firstname: 'newfirstname123', note: 'some note' } + post '/api/v1/users', params.to_json, @headers.merge('Authorization' => credentials) + assert_response(201) + result = JSON.parse(@response.body) + assert(result) + user = User.find(result['id']) + assert_not(user.role?('Admin')) + assert_not(user.role?('Agent')) + assert(user.role?('Customer')) + assert(result['login'].start_with?('auto-')) + assert_equal('', result['email']) + assert_equal('newfirstname123', result['firstname']) + assert_equal('', result['lastname']) end test 'user index and create with agent' do diff --git a/test/unit/user_test.rb b/test/unit/user_test.rb index 97043b876..d18dafa6e 100644 --- a/test/unit/user_test.rb +++ b/test/unit/user_test.rb @@ -293,6 +293,81 @@ class UserTest < ActiveSupport::TestCase } end + test 'without email - but login eq email' do + name = rand(999_999_999) + + login = "admin-role_without_email#{name}@example.com" + email = "admin-role_without_email#{name}@example.com" + admin = User.create_or_update( + login: login, + firstname: 'Role', + lastname: "Admin#{name}", + #email: "", + password: 'adminpw', + active: true, + roles: Role.where(name: %w(Admin Agent)), + updated_by_id: 1, + created_by_id: 1, + ) + + assert(admin.id) + assert_equal(admin.login, login) + assert_equal(admin.email, '') + + admin.email = email + admin.save! + + assert_equal(admin.login, login) + assert_equal(admin.email, email) + + admin.email = '' + admin.save! + + assert(admin.id) + assert(admin.login) + assert_not_equal(admin.login, login) + assert_equal(admin.email, '') + + admin.destroy! + end + + test 'without email - but login ne email' do + name = rand(999_999_999) + + login = "admin-role_without_email#{name}" + email = "admin-role_without_email#{name}@example.com" + admin = User.create_or_update( + login: login, + firstname: 'Role', + lastname: "Admin#{name}", + #email: "", + password: 'adminpw', + active: true, + roles: Role.where(name: %w(Admin Agent)), + updated_by_id: 1, + created_by_id: 1, + ) + + assert(admin.id) + assert_equal(admin.login, login) + assert_equal(admin.email, '') + + admin.email = email + admin.save! + + assert_equal(admin.login, login) + assert_equal(admin.email, email) + + admin.email = '' + admin.save! + + assert(admin.id) + assert_equal(admin.login, login) + assert_equal(admin.email, '') + + admin.destroy! + end + test 'ensure roles' do name = rand(999_999_999) From e028e8c1a32303097f7a4a03d894bc9c4b7a9c38 Mon Sep 17 00:00:00 2001 From: Martin Edenhofer Date: Fri, 14 Jul 2017 13:53:28 +0200 Subject: [PATCH 020/144] Fixed migration version. --- ...et_zoom_setting2.rb => 20170713000002_ticket_zoom_setting2.rb} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename db/migrate/{20170713000001_ticket_zoom_setting2.rb => 20170713000002_ticket_zoom_setting2.rb} (100%) diff --git a/db/migrate/20170713000001_ticket_zoom_setting2.rb b/db/migrate/20170713000002_ticket_zoom_setting2.rb similarity index 100% rename from db/migrate/20170713000001_ticket_zoom_setting2.rb rename to db/migrate/20170713000002_ticket_zoom_setting2.rb From 7cb212832e93cdf37f427c0b4c126f02f42f9022 Mon Sep 17 00:00:00 2001 From: Martin Edenhofer Date: Fri, 14 Jul 2017 15:47:10 +0200 Subject: [PATCH 021/144] Fixed issue #1151 - Problem with cyrillic letters in name of overviews. --- app/models/overview.rb | 27 +++- test/unit/overview_test.rb | 215 ++++++++++++++++++++++++++++++ test/unit/ticket_overview_test.rb | 4 +- 3 files changed, 237 insertions(+), 9 deletions(-) create mode 100644 test/unit/overview_test.rb diff --git a/app/models/overview.rb b/app/models/overview.rb index 1abc9f2be..57a3490f9 100644 --- a/app/models/overview.rb +++ b/app/models/overview.rb @@ -28,24 +28,37 @@ class Overview < ApplicationModel end def fill_link_on_create - return true if !link.empty? + return true if link.present? self.link = link_name(name) true end def fill_link_on_update - return true if link.empty? return true if !changes['name'] + return true if changes['link'] self.link = link_name(name) true end def link_name(name) - link = name.downcase - link.gsub!(/\s/, '_') - link.gsub!(/[^0-9a-z]/i, '_') - link.gsub!(/_+/, '_') - link + local_link = name.downcase + local_link = local_link.parameterize('_') + local_link.gsub!(/\s/, '_') + local_link.gsub!(/_+/, '_') + local_link = URI.escape(local_link) + if local_link.blank? + local_link = id || rand(999) + end + check = true + while check + exists = Overview.find_by(link: local_link) + if exists && exists.id != id + local_link = "#{local_link}_#{rand(999)}" + else + check = false + end + end + local_link end end diff --git a/test/unit/overview_test.rb b/test/unit/overview_test.rb new file mode 100644 index 000000000..45cabd99f --- /dev/null +++ b/test/unit/overview_test.rb @@ -0,0 +1,215 @@ +# encoding: utf-8 +require 'test_helper' + +class OverviewTest < ActiveSupport::TestCase + + test 'overview link' do + UserInfo.current_user_id = 1 + overview = Overview.create!( + name: 'Not Shown Admin 2', + condition: { + 'ticket.state_id' => { + operator: 'is', + value: [1, 2, 3], + }, + }, + order: { + by: 'created_at', + direction: 'DESC', + }, + view: { + d: %w(title customer state created_at), + s: %w(number title customer state created_at), + m: %w(number title customer state created_at), + view_mode_default: 's', + }, + ) + assert_equal(overview.link, 'not_shown_admin_2') + overview.destroy! + + overview = Overview.create!( + name: 'My assigned Tickets', + condition: { + 'ticket.state_id' => { + operator: 'is', + value: [1, 2, 3], + }, + }, + order: { + by: 'created_at', + direction: 'DESC', + }, + view: { + d: %w(title customer state created_at), + s: %w(number title customer state created_at), + m: %w(number title customer state created_at), + view_mode_default: 's', + }, + ) + assert_equal(overview.link, 'my_assigned_tickets') + overview.destroy! + + overview = Overview.create!( + name: 'Übersicht', + condition: { + 'ticket.state_id' => { + operator: 'is', + value: [1, 2, 3], + }, + }, + order: { + by: 'created_at', + direction: 'DESC', + }, + view: { + d: %w(title customer state created_at), + s: %w(number title customer state created_at), + m: %w(number title customer state created_at), + view_mode_default: 's', + }, + ) + assert_equal(overview.link, 'ubersicht') + overview.destroy! + + overview = Overview.create!( + name: " Übersicht \n", + condition: { + 'ticket.state_id' => { + operator: 'is', + value: [1, 2, 3], + }, + }, + order: { + by: 'created_at', + direction: 'DESC', + }, + view: { + d: %w(title customer state created_at), + s: %w(number title customer state created_at), + m: %w(number title customer state created_at), + view_mode_default: 's', + }, + ) + assert_equal(overview.link, 'ubersicht') + overview.destroy! + + overview1 = Overview.create!( + name: 'Meine Übersicht', + condition: { + 'ticket.state_id' => { + operator: 'is', + value: [1, 2, 3], + }, + }, + order: { + by: 'created_at', + direction: 'DESC', + }, + view: { + d: %w(title customer state created_at), + s: %w(number title customer state created_at), + m: %w(number title customer state created_at), + view_mode_default: 's', + }, + ) + assert_equal(overview1.link, 'meine_ubersicht') + overview2 = Overview.create!( + name: 'Meine Übersicht', + condition: { + 'ticket.state_id' => { + operator: 'is', + value: [1, 2, 3], + }, + }, + order: { + by: 'created_at', + direction: 'DESC', + }, + view: { + d: %w(title customer state created_at), + s: %w(number title customer state created_at), + m: %w(number title customer state created_at), + view_mode_default: 's', + }, + ) + assert(overview2.link.start_with?('meine_ubersicht')) + assert_not_equal(overview1.link, overview2.link) + overview1.destroy! + overview2.destroy! + + overview = Overview.create!( + name: 'Д дФ ф', + condition: { + 'ticket.state_id' => { + operator: 'is', + value: [1, 2, 3], + }, + }, + order: { + by: 'created_at', + direction: 'DESC', + }, + view: { + d: %w(title customer state created_at), + s: %w(number title customer state created_at), + m: %w(number title customer state created_at), + view_mode_default: 's', + }, + ) + assert_match(/^\d\d\d$/, overview.link) + overview.destroy! + + overview = Overview.create!( + name: ' Д дФ ф abc ', + condition: { + 'ticket.state_id' => { + operator: 'is', + value: [1, 2, 3], + }, + }, + order: { + by: 'created_at', + direction: 'DESC', + }, + view: { + d: %w(title customer state created_at), + s: %w(number title customer state created_at), + m: %w(number title customer state created_at), + view_mode_default: 's', + }, + ) + assert_equal(overview.link, 'abc') + overview.destroy! + + overview = Overview.create!( + name: 'Übersicht', + link: 'my_overview', + condition: { + 'ticket.state_id' => { + operator: 'is', + value: [1, 2, 3], + }, + }, + order: { + by: 'created_at', + direction: 'DESC', + }, + view: { + d: %w(title customer state created_at), + s: %w(number title customer state created_at), + m: %w(number title customer state created_at), + view_mode_default: 's', + }, + ) + assert_equal(overview.link, 'my_overview') + + overview.name = 'Übersicht2' + overview.link = 'my_overview2' + overview.save! + + assert_equal(overview.link, 'my_overview2') + + overview.destroy! + + end +end diff --git a/test/unit/ticket_overview_test.rb b/test/unit/ticket_overview_test.rb index 8c1acc94d..029c18e6d 100644 --- a/test/unit/ticket_overview_test.rb +++ b/test/unit/ticket_overview_test.rb @@ -302,7 +302,7 @@ class TicketOverviewTest < ActiveSupport::TestCase ) end - test 'bbb overiview index' do + test 'bbb overview index' do result = Ticket::Overviews.all( current_user: @agent1, @@ -343,7 +343,7 @@ class TicketOverviewTest < ActiveSupport::TestCase end - test 'ccc overiview content' do + test 'ccc overview content' do Ticket.destroy_all From 10dca434321d12a1f7951c8c791f4619c8eb4193 Mon Sep 17 00:00:00 2001 From: Martin Edenhofer Date: Fri, 14 Jul 2017 15:49:16 +0200 Subject: [PATCH 022/144] Moved to contenteditable for chat widget. --- public/assets/chat/chat.coffee | 8 +- public/assets/chat/chat.js | 134 +++++++++++++++--------------- public/assets/chat/chat.min.js | 4 +- public/assets/chat/views/chat.eco | 2 +- 4 files changed, 74 insertions(+), 74 deletions(-) diff --git a/public/assets/chat/chat.coffee b/public/assets/chat/chat.coffee index f9a7d216d..a31fbb58f 100644 --- a/public/assets/chat/chat.coffee +++ b/public/assets/chat/chat.coffee @@ -471,7 +471,7 @@ do($ = window.jQuery, window) -> from: if message.created_by_id then 'agent' else 'customer' if unfinishedMessage - @input.val unfinishedMessage + @input.html(unfinishedMessage) # show wait list if data.position @@ -489,7 +489,7 @@ do($ = window.jQuery, window) -> @el.find('.zammad-chat-message--unread') .removeClass 'zammad-chat-message--unread' - sessionStorage.setItem 'unfinished_message', @input.val() + sessionStorage.setItem 'unfinished_message', @input.html() @onTyping() @@ -520,7 +520,7 @@ do($ = window.jQuery, window) -> @sendMessage() sendMessage: -> - message = @input.val() + message = @input.html() return if !message @inactiveTimeout.start() @@ -543,7 +543,7 @@ do($ = window.jQuery, window) -> @lastAddedType = 'message--customer' @el.find('.zammad-chat-body').append messageElement - @input.val('') + @input.html('') @scrollToBottom() # send message event diff --git a/public/assets/chat/chat.js b/public/assets/chat/chat.js index 3bdb1803c..7cb133435 100644 --- a/public/assets/chat/chat.js +++ b/public/assets/chat/chat.js @@ -1,3 +1,64 @@ +if (!window.zammadChatTemplates) { + window.zammadChatTemplates = {}; +} +window.zammadChatTemplates["agent"] = function (__obj) { + if (!__obj) __obj = {}; + var __out = [], __capture = function(callback) { + var out = __out, result; + __out = []; + callback.call(this); + result = __out.join(''); + __out = out; + return __safe(result); + }, __sanitize = function(value) { + if (value && value.ecoSafe) { + return value; + } else if (typeof value !== 'undefined' && value != null) { + return __escape(value); + } else { + return ''; + } + }, __safe, __objSafe = __obj.safe, __escape = __obj.escape; + __safe = __obj.safe = function(value) { + if (value && value.ecoSafe) { + return value; + } else { + if (!(typeof value !== 'undefined' && value != null)) value = ''; + var result = new String(value); + result.ecoSafe = true; + return result; + } + }; + if (!__escape) { + __escape = __obj.escape = function(value) { + return ('' + value) + .replace(/&/g, '&') + .replace(//g, '>') + .replace(/"/g, '"'); + }; + } + (function() { + (function() { + if (this.agent.avatar) { + __out.push('\n\n'); + } + + __out.push('\n\n '); + + __out.push(__sanitize(this.agent.name)); + + __out.push('\n'); + + }).call(this); + + }).call(__obj); + __obj.safe = __objSafe, __obj.escape = __escape; + return __out.join(''); +}; + var bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; }, slice = [].slice, extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }, @@ -699,7 +760,7 @@ var bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }); } if (unfinishedMessage) { - this.input.val(unfinishedMessage); + this.input.html(unfinishedMessage); } } if (data.position) { @@ -715,7 +776,7 @@ var bind = function(fn, me){ return function(){ return fn.apply(me, arguments); ZammadChat.prototype.onInput = function() { this.el.find('.zammad-chat-message--unread').removeClass('zammad-chat-message--unread'); - sessionStorage.setItem('unfinished_message', this.input.val()); + sessionStorage.setItem('unfinished_message', this.input.html()); return this.onTyping(); }; @@ -749,7 +810,7 @@ var bind = function(fn, me){ return function(){ return fn.apply(me, arguments); ZammadChat.prototype.sendMessage = function() { var message, messageElement; - message = this.input.val(); + message = this.input.html(); if (!message) { return; } @@ -769,7 +830,7 @@ var bind = function(fn, me){ return function(){ return fn.apply(me, arguments); this.lastAddedType = 'message--customer'; this.el.find('.zammad-chat-body').append(messageElement); } - this.input.val(''); + this.input.html(''); this.scrollToBottom(); return this.send('chat_session_message', { content: message, @@ -1334,67 +1395,6 @@ var bind = function(fn, me){ return function(){ return fn.apply(me, arguments); return window.ZammadChat = ZammadChat; })(window.jQuery, window); -if (!window.zammadChatTemplates) { - window.zammadChatTemplates = {}; -} -window.zammadChatTemplates["agent"] = function (__obj) { - if (!__obj) __obj = {}; - var __out = [], __capture = function(callback) { - var out = __out, result; - __out = []; - callback.call(this); - result = __out.join(''); - __out = out; - return __safe(result); - }, __sanitize = function(value) { - if (value && value.ecoSafe) { - return value; - } else if (typeof value !== 'undefined' && value != null) { - return __escape(value); - } else { - return ''; - } - }, __safe, __objSafe = __obj.safe, __escape = __obj.escape; - __safe = __obj.safe = function(value) { - if (value && value.ecoSafe) { - return value; - } else { - if (!(typeof value !== 'undefined' && value != null)) value = ''; - var result = new String(value); - result.ecoSafe = true; - return result; - } - }; - if (!__escape) { - __escape = __obj.escape = function(value) { - return ('' + value) - .replace(/&/g, '&') - .replace(//g, '>') - .replace(/"/g, '"'); - }; - } - (function() { - (function() { - if (this.agent.avatar) { - __out.push('\n\n'); - } - - __out.push('\n\n '); - - __out.push(__sanitize(this.agent.name)); - - __out.push('\n'); - - }).call(this); - - }).call(__obj); - __obj.safe = __objSafe, __obj.escape = __escape; - return __out.join(''); -}; - /*! * ---------------------------------------------------------------------------- * "THE BEER-WARE LICENSE" (Revision 42): @@ -1555,11 +1555,11 @@ window.zammadChatTemplates["chat"] = function (__obj) { __out.push(this.T(this.scrollHint)); - __out.push('\n

\n
\n
\n \n
\n \n \n
")}).call(this)}.call(t),t.safe=i,t.escape=o,s.join("")},window.zammadChatTemplates||(window.zammadChatTemplates={}),window.zammadChatTemplates.customer_timeout=function(t){t||(t={});var e,s=[],n=function(t){return t&&t.ecoSafe?t:"undefined"!=typeof t&&null!=t?o(t):""},i=t.safe,o=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},o||(o=t.escape=function(t){return(""+t).replace(/&/g,"&").replace(//g,">").replace(/"/g,""")}),function(){(function(){s.push('
\n '),this.agent?(s.push("\n "),s.push(this.T("Since you didn't respond in the last %s minutes your conversation with %s got closed.",this.delay,this.agent)),s.push("\n ")):(s.push("\n "),s.push(this.T("Since you didn't respond in the last %s minutes your conversation got closed.",this.delay)),s.push("\n ")),s.push('\n
\n
"),s.push(this.T("Start new conversation")),s.push("
\n
")}).call(this)}.call(t),t.safe=i,t.escape=o,s.join("")},window.zammadChatTemplates||(window.zammadChatTemplates={}),window.zammadChatTemplates.loader=function(t){t||(t={});var e,s=[],n=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(){s.push('\n \n \n \n\n'),s.push(this.T("Connecting")),s.push("")}).call(this)}.call(t),t.safe=n,t.escape=i,s.join("")},window.zammadChatTemplates||(window.zammadChatTemplates={}),window.zammadChatTemplates.message=function(t){t||(t={});var e,s=[],n=function(t){return t&&t.ecoSafe?t:"undefined"!=typeof t&&null!=t?o(t):""},i=t.safe,o=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},o||(o=t.escape=function(t){return(""+t).replace(/&/g,"&").replace(//g,">").replace(/"/g,""")}),function(){(function(){s.push('
\n "),s.push(this.message),s.push("\n
")}).call(this)}.call(t),t.safe=i,t.escape=o,s.join("")},window.zammadChatTemplates||(window.zammadChatTemplates={}),window.zammadChatTemplates.status=function(t){t||(t={});var e,s=[],n=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(){s.push('
\n
\n '),s.push(this.status),s.push("\n
\n
")}).call(this)}.call(t),t.safe=n,t.escape=i,s.join("")},window.zammadChatTemplates||(window.zammadChatTemplates={}),window.zammadChatTemplates.timestamp=function(t){t||(t={});var e,s=[],n=function(t){return t&&t.ecoSafe?t:"undefined"!=typeof t&&null!=t?o(t):""},i=t.safe,o=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},o||(o=t.escape=function(t){return(""+t).replace(/&/g,"&").replace(//g,">").replace(/"/g,""")}),function(){(function(){s.push('
'),s.push(n(this.label)),s.push(" "),s.push(n(this.time)),s.push("
")}).call(this)}.call(t),t.safe=i,t.escape=o,s.join("")},window.zammadChatTemplates||(window.zammadChatTemplates={}),window.zammadChatTemplates.typingIndicator=function(t){t||(t={});var e,s=[],n=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(){s.push('
\n \n \n \n \n \n \n \n
')}).call(this)}.call(t),t.safe=n,t.escape=i,s.join("")},window.zammadChatTemplates||(window.zammadChatTemplates={}),window.zammadChatTemplates.waiting=function(t){t||(t={});var e,s=[],n=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(){s.push('
\n \n \n \n \n \n '),s.push(this.T("All colleagues are busy.")),s.push("
\n "),s.push(this.T("You are on waiting list position %s.",this.position)),s.push("\n
")}).call(this)}.call(t),t.safe=n,t.escape=i,s.join("")},window.zammadChatTemplates||(window.zammadChatTemplates={}),window.zammadChatTemplates.waiting_list_timeout=function(t){t||(t={});var e,s=[],n=function(t){return t&&t.ecoSafe?t:"undefined"!=typeof t&&null!=t?o(t):""},i=t.safe,o=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},o||(o=t.escape=function(t){return(""+t).replace(/&/g,"&").replace(//g,">").replace(/"/g,""")}),function(){(function(){s.push('
\n '),s.push(this.T("We are sorry, it takes longer as expected to get an empty slot. Please try again later or send us an email. Thank you!")),s.push('\n
\n
"),s.push(this.T("Start new conversation")),s.push("
\n
")}).call(this)}.call(t),t.safe=i,t.escape=o,s.join("")}; \ No newline at end of file +window.zammadChatTemplates||(window.zammadChatTemplates={}),window.zammadChatTemplates.agent=function(t){t||(t={});var e,s=[],n=function(t){return t&&t.ecoSafe?t:"undefined"!=typeof t&&null!=t?o(t):""},i=t.safe,o=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},o||(o=t.escape=function(t){return(""+t).replace(/&/g,"&").replace(//g,">").replace(/"/g,""")}),function(){(function(){this.agent.avatar&&(s.push('\n\n')),s.push('\n\n '),s.push(n(this.agent.name)),s.push("\n")}).call(this)}.call(t),t.safe=i,t.escape=o,s.join("")};var bind=function(t,e){return function(){return t.apply(e,arguments)}},slice=[].slice,extend=function(t,e){function s(){this.constructor=t}for(var n in e)hasProp.call(e,n)&&(t[n]=e[n]);return s.prototype=e.prototype,t.prototype=new s,t.__super__=e.prototype,t},hasProp={}.hasOwnProperty;!function(t,e){var s,n,i,o,a,r,h,l,d;return d=document.getElementsByTagName("script"),r=d[d.length-1],h=r.src.match(".*://([^:/]*).*")[1],l=r.src.match("(.*)://[^:/]*.*")[1],s=function(){function e(e){this.options=t.extend({},this.defaults,e),this.log=new i({debug:this.options.debug,logPrefix:this.options.logPrefix||this.logPrefix})}return e.prototype.defaults={debug:!1},e}(),i=function(){function e(e){this.log=bind(this.log,this),this.error=bind(this.error,this),this.notice=bind(this.notice,this),this.debug=bind(this.debug,this),this.options=t.extend({},this.defaults,e)}return e.prototype.defaults={debug:!1},e.prototype.debug=function(){var t;return t=1<=arguments.length?slice.call(arguments,0):[],this.options.debug?this.log("debug",t):void 0},e.prototype.notice=function(){var t;return t=1<=arguments.length?slice.call(arguments,0):[],this.log("notice",t)},e.prototype.error=function(){var t;return t=1<=arguments.length?slice.call(arguments,0):[],this.log("error",t)},e.prototype.log=function(e,s){var n,i,o,a;if(s.unshift("||"),s.unshift(e),s.unshift(this.options.logPrefix),console.log.apply(console,s),this.options.debug){for(a="",n=0,o=s.length;o>n;n++)i=s[n],a+=" ",a+="object"==typeof i?JSON.stringify(i):i&&i.toString?i.toString():i;return t(".js-chatLogDisplay").prepend("
"+a+"
")}},e}(),o=function(t){function e(t){this.stop=bind(this.stop,this),this.start=bind(this.start,this),e.__super__.constructor.call(this,t)}return extend(e,t),e.prototype.timeoutStartedAt=null,e.prototype.logPrefix="timeout",e.prototype.defaults={debug:!1,timeout:4,timeoutIntervallCheck:.5},e.prototype.start=function(){var t,e;return this.stop(),e=new Date,t=function(t){return function(){var s;return s=new Date-new Date(e.getTime()+1e3*t.options.timeout*60),t.log.debug("Timeout check for "+t.options.timeout+" minutes (left "+s/1e3+" sec.)"),0>s?void 0:(t.stop(),t.options.callback())}}(this),this.log.debug("Start timeout in "+this.options.timeout+" minutes"),this.intervallId=setInterval(t,1e3*this.options.timeoutIntervallCheck*60)},e.prototype.stop=function(){return this.intervallId?(this.log.debug("Stop timeout of "+this.options.timeout+" minutes"),clearInterval(this.intervallId)):void 0},e}(s),n=function(t){function s(t){this.ping=bind(this.ping,this),this.send=bind(this.send,this),this.reconnect=bind(this.reconnect,this),this.close=bind(this.close,this),this.connect=bind(this.connect,this),this.set=bind(this.set,this),s.__super__.constructor.call(this,t)}return extend(s,t),s.prototype.logPrefix="io",s.prototype.set=function(t){var e,s,n;s=[];for(e in t)n=t[e],s.push(this.options[e]=n);return s},s.prototype.connect=function(){return this.log.debug("Connecting to "+this.options.host),this.ws=new e.WebSocket(""+this.options.host),this.ws.onopen=function(t){return function(e){return t.log.debug("onOpen",e),t.options.onOpen(e),t.ping()}}(this),this.ws.onmessage=function(t){return function(e){var s,n,i,o;for(o=JSON.parse(e.data),t.log.debug("onMessage",e.data),s=0,n=o.length;n>s;s++)i=o[s],"pong"===i.event&&t.ping();return t.options.onMessage?t.options.onMessage(o):void 0}}(this),this.ws.onclose=function(t){return function(e){if(t.log.debug("close websocket connection",e),t.pingDelayId&&clearTimeout(t.pingDelayId),t.manualClose){if(t.log.debug("manual close, onClose callback"),t.manualClose=!1,t.options.onClose)return t.options.onClose(e)}else if(t.log.debug("error close, onError callback"),t.options.onError)return t.options.onError("Connection lost...")}}(this),this.ws.onerror=function(t){return function(e){return t.log.debug("onError",e),t.options.onError?t.options.onError(e):void 0}}(this)},s.prototype.close=function(){return this.log.debug("close websocket manually"),this.manualClose=!0,this.ws.close()},s.prototype.reconnect=function(){return this.log.debug("reconnect"),this.close(),this.connect()},s.prototype.send=function(t,e){var s;return null==e&&(e={}),this.log.debug("send",t,e),s=JSON.stringify({event:t,data:e}),this.ws.send(s)},s.prototype.ping=function(){var t;return t=function(t){return function(){return t.send("ping")}}(this),this.pingDelayId=setTimeout(t,29e3)},s}(s),a=function(s){function i(s){return this.startTimeoutObservers=bind(this.startTimeoutObservers,this),this.onCssLoaded=bind(this.onCssLoaded,this),this.setAgentOnlineState=bind(this.setAgentOnlineState,this),this.onConnectionEstablished=bind(this.onConnectionEstablished,this),this.setSessionId=bind(this.setSessionId,this),this.onConnectionReestablished=bind(this.onConnectionReestablished,this),this.reconnect=bind(this.reconnect,this),this.destroy=bind(this.destroy,this),this.onScrollHintClick=bind(this.onScrollHintClick,this),this.detectScrolledtoBottom=bind(this.detectScrolledtoBottom,this),this.onLeaveTemporary=bind(this.onLeaveTemporary,this),this.onAgentTypingEnd=bind(this.onAgentTypingEnd,this),this.onAgentTypingStart=bind(this.onAgentTypingStart,this),this.onQueue=bind(this.onQueue,this),this.onQueueScreen=bind(this.onQueueScreen,this),this.onWebSocketClose=bind(this.onWebSocketClose,this),this.onCloseAnimationEnd=bind(this.onCloseAnimationEnd,this),this.close=bind(this.close,this),this.toggle=bind(this.toggle,this),this.sessionClose=bind(this.sessionClose,this),this.onOpenAnimationEnd=bind(this.onOpenAnimationEnd,this),this.open=bind(this.open,this),this.renderMessage=bind(this.renderMessage,this),this.receiveMessage=bind(this.receiveMessage,this),this.onSubmit=bind(this.onSubmit,this),this.onFocus=bind(this.onFocus,this),this.onInput=bind(this.onInput,this),this.onReopenSession=bind(this.onReopenSession,this),this.onError=bind(this.onError,this),this.onWebSocketMessage=bind(this.onWebSocketMessage,this),this.send=bind(this.send,this),this.checkForEnter=bind(this.checkForEnter,this),this.render=bind(this.render,this),this.view=bind(this.view,this),this.T=bind(this.T,this),this.options=t.extend({},this.defaults,s),i.__super__.constructor.call(this,this.options),this.isFullscreen=e.matchMedia&&e.matchMedia("(max-width: 768px)").matches,this.scrollRoot=t(this.getScrollRoot()),t?e.WebSocket&&sessionStorage?this.options.chatId?(this.options.lang||(this.options.lang=t("html").attr("lang")),this.options.lang&&(this.translations[this.options.lang]||(this.log.debug("lang: No "+this.options.lang+" found, try first two letters"),this.options.lang=this.options.lang.replace(/-.+?$/,"")),this.log.debug("lang: "+this.options.lang)),this.options.host||this.detectHost(),this.loadCss(),this.io=new n(this.options),this.io.set({onOpen:this.render,onClose:this.onWebSocketClose,onMessage:this.onWebSocketMessage,onError:this.onError}),void this.io.connect()):(this.state="unsupported",void this.log.error("Chat: need chatId as option!")):(this.state="unsupported",void this.log.notice("Chat: Browser not supported!")):(this.state="unsupported",void this.log.notice("Chat: no jquery found!"))}return extend(i,s),i.prototype.defaults={chatId:void 0,show:!0,target:t("body"),host:"",debug:!1,flat:!1,lang:void 0,cssAutoload:!0,cssUrl:void 0,fontSize:void 0,buttonClass:"open-zammad-chat",inactiveClass:"is-inactive",title:"Chat with us!",scrollHint:"Scrolle nach unten um neue Nachrichten zu sehen",idleTimeout:6,idleTimeoutIntervallCheck:.5,inactiveTimeout:8,inactiveTimeoutIntervallCheck:.5,waitingListTimeout:4,waitingListTimeoutIntervallCheck:.5},i.prototype.logPrefix="chat",i.prototype._messageCount=0,i.prototype.isOpen=!1,i.prototype.blinkOnlineInterval=null,i.prototype.stopBlinOnlineStateTimeout=null,i.prototype.showTimeEveryXMinutes=2,i.prototype.lastTimestamp=null,i.prototype.lastAddedType=null,i.prototype.inputTimeout=null,i.prototype.isTyping=!1,i.prototype.state="offline",i.prototype.initialQueueDelay=1e4,i.prototype.translations={de:{"Chat with us!":"Chatte mit uns!","Scroll down to see new messages":"Scrolle nach unten um neue Nachrichten zu sehen",Online:"Online",Online:"Online",Offline:"Offline",Connecting:"Verbinden","Connection re-established":"Verbindung wiederhergestellt",Today:"Heute",Send:"Senden","Compose your message...":"Ihre Nachricht...","All colleagues are busy.":"Alle Kollegen sind belegt.","You are on waiting list position %s.":"Sie sind in der Warteliste an der Position %s.","Start new conversation":"Neue Konversation starten","Since you didn't respond in the last %s minutes your conversation with %s got closed.":"Da Sie in den letzten %s Minuten nichts geschrieben haben wurde Ihre Konversation mit %s geschlossen.","Since you didn't respond in the last %s minutes your conversation got closed.":"Da Sie in den letzten %s Minuten nichts geschrieben haben wurde Ihre Konversation geschlossen.","We are sorry, it takes longer as expected to get an empty slot. Please try again later or send us an email. Thank you!":"Es tut uns leid, es dauert länger als erwartet, um einen freien Platz zu erhalten. Bitte versuchen Sie es zu einem späteren Zeitpunkt noch einmal oder schicken Sie uns eine E-Mail. Vielen Dank!"},fr:{"Chat with us!":"Chattez avec nous!","Scroll down to see new messages":"Faites défiler pour lire les nouveaux messages",Online:"En-ligne",Online:"En-ligne",Offline:"Hors-ligne",Connecting:"Connexion en cours","Connection re-established":"Connexion rétablie",Today:"Aujourdhui",Send:"Envoyer","Compose your message...":"Composez votre message...","All colleagues are busy.":"Tous les collègues sont actuellement occupés.","You are on waiting list position %s.":"Vous êtes actuellement en %s position dans la file d'attente.","Start new conversation":"Démarrer une nouvelle conversation","Since you didn't respond in the last %s minutes your conversation with %s got closed.":"Si vous ne répondez pas dans les %s minutes, votre conversation avec %s va être fermée.","Since you didn't respond in the last %s minutes your conversation got closed.":"Si vous ne répondez pas dans les %s minutes, votre conversation va être fermée.","We are sorry, it takes longer as expected to get an empty slot. Please try again later or send us an email. Thank you!":"Nous sommes désolés, il faut plus de temps que prévu pour obtenir un emplacement vide. Veuillez réessayer ultérieurement ou nous envoyer un courriel. Je vous remercie!"},"zh-cn":{"Chat with us!":"发起即时对话!","Scroll down to see new messages":"向下滚动以查看新消息",Online:"在线",Online:"在线",Offline:"离线",Connecting:"连接中","Connection re-established":"正在重新建立连接",Today:"今天",Send:"发送","Compose your message...":"正在输入信息...","All colleagues are busy.":"所有工作人员都在忙碌中.","You are on waiting list position %s.":"您目前的等候位置是第 %s 位.","Start new conversation":"开始新的会话","Since you didn't respond in the last %s minutes your conversation with %s got closed.":"由于您超过 %s 分钟没有回复, 您与 %s 的会话已被关闭.","Since you didn't respond in the last %s minutes your conversation got closed.":"由于您超过 %s 分钟没有任何回复, 该对话已被关闭.","We are sorry, it takes longer as expected to get an empty slot. Please try again later or send us an email. Thank you!":"非常抱歉, 目前需要等候更长的时间才能接入对话, 请稍后重试或向我们发送电子邮件. 谢谢!"},"zh-tw":{"Chat with us!":"開始即時對话!","Scroll down to see new messages":"向下滑動以查看新訊息",Online:"線上",Online:"線上",Offline:"离线",Connecting:"連線中","Connection re-established":"正在重新建立連線中",Today:"今天",Send:"發送","Compose your message...":"正在輸入訊息...","All colleagues are busy.":"所有服務人員都在忙碌中.","You are on waiting list position %s.":"你目前的等候位置是第 %s 順位.","Start new conversation":"開始新的對話","Since you didn't respond in the last %s minutes your conversation with %s got closed.":"由於你超過 %s 分鐘沒有回應, 你與 %s 的對話已被關閉.","Since you didn't respond in the last %s minutes your conversation got closed.":"由於你超過 %s 分鐘沒有任何回應, 該對話已被關閉.","We are sorry, it takes longer as expected to get an empty slot. Please try again later or send us an email. Thank you!":"非常抱歉, 當前需要等候更長的時間方可排入對話程序, 請稍後重試或向我們寄送電子郵件. 謝謝!"}},i.prototype.sessionId=void 0,i.prototype.scrolledToBottom=!0,i.prototype.scrollSnapTolerance=10,i.prototype.T=function(){var t,e,s,n,i,o;if(i=arguments[0],s=2<=arguments.length?slice.call(arguments,1):[],this.options.lang&&"en"!==this.options.lang&&(this.translations[this.options.lang]?(o=this.translations[this.options.lang],o[i]||this.log.notice("Translation needed for '"+i+"'"),i=o[i]||i):this.log.notice("Translation '"+this.options.lang+"' needed!")),s)for(t=0,n=s.length;n>t;t++)e=s[t],i=i.replace(/%s/,e);return i},i.prototype.view=function(t){return function(s){return function(n){return n||(n={}),n.T=s.T,n.background=s.options.background,n.flat=s.options.flat,n.fontSize=s.options.fontSize,e.zammadChatTemplates[t](n)}}(this)},i.prototype.getScrollRoot=function(){var t,e,s;return"scrollingElement"in document?document.scrollingElement:(e=document.documentElement,s=e.scrollTop,e.scrollTop=s+1,t=e.scrollTop,e.scrollTop=s,t>s?e:document.body)},i.prototype.render=function(){return this.el&&t(".zammad-chat").get(0)||this.renderBase(),t("."+this.options.buttonClass).addClass(this.inactiveClass),this.setAgentOnlineState("online"),this.log.debug("widget rendered"),this.startTimeoutObservers(),this.idleTimeout.start(),this.sessionId=sessionStorage.getItem("sessionId"),this.send("chat_status_customer",{session_id:this.sessionId,url:e.location.href})},i.prototype.renderBase=function(){return this.el=t(this.view("chat")({title:this.options.title,scrollHint:this.options.scrollHint})),this.options.target.append(this.el),this.input=this.el.find(".zammad-chat-input"),this.el.find(".js-chat-open").click(this.open),this.el.find(".js-chat-toggle").click(this.toggle),this.el.find(".zammad-chat-controls").on("submit",this.onSubmit),this.el.find(".zammad-chat-body").on("scroll",this.detectScrolledtoBottom),this.el.find(".zammad-scroll-hint").click(this.onScrollHintClick),this.input.on({keydown:this.checkForEnter,input:this.onInput}),t(e).on("beforeunload",function(t){return function(){return t.onLeaveTemporary()}}(this)),t(e).bind("hashchange",function(t){return function(){return t.isOpen?void(t.sessionId&&t.send("chat_session_notice",{session_id:t.sessionId,message:e.location.href})):t.idleTimeout.start()}}(this)),this.isFullscreen?this.input.on({focus:this.onFocus,focusout:this.onFocusOut}):void 0},i.prototype.checkForEnter=function(t){return t.shiftKey||13!==t.keyCode?void 0:(t.preventDefault(),this.sendMessage())},i.prototype.send=function(t,e){return null==e&&(e={}),e.chat_id=this.options.chatId,this.io.send(t,e)},i.prototype.onWebSocketMessage=function(t){var e,s,n;for(e=0,s=t.length;s>e;e++)switch(n=t[e],this.log.debug("ws:onmessage",n),n.event){case"chat_error":this.log.notice(n.data),n.data&&"chat_disabled"===n.data.state&&this.destroy({remove:!0});break;case"chat_session_message":if(n.data.self_written)return;this.receiveMessage(n.data);break;case"chat_session_typing":if(n.data.self_written)return;this.onAgentTypingStart();break;case"chat_session_start":this.onConnectionEstablished(n.data);break;case"chat_session_queue":this.onQueueScreen(n.data);break;case"chat_session_closed":this.onSessionClosed(n.data);break;case"chat_session_left":this.onSessionClosed(n.data);break;case"chat_status_customer":switch(n.data.state){case"online":this.sessionId=void 0,!this.options.cssAutoload||this.cssLoaded?this.onReady():this.socketReady=!0;break;case"offline":this.onError("Zammad Chat: No agent online");break;case"chat_disabled":this.onError("Zammad Chat: Chat is disabled");break;case"no_seats_available":this.onError("Zammad Chat: Too many clients in queue. Clients in queue: "+n.data.queue);break;case"reconnect":this.onReopenSession(n.data)}}},i.prototype.onReady=function(){return this.log.debug("widget ready for use"),t("."+this.options.buttonClass).click(this.open).removeClass(this.inactiveClass),this.options.show?this.show():void 0},i.prototype.onError=function(e){return this.log.debug(e),this.addStatus(e),t("."+this.options.buttonClass).hide(),this.isOpen?(this.disableInput(),this.destroy({remove:!1})):this.destroy({remove:!0})},i.prototype.onReopenSession=function(t){var e,s,n,i,o;if(this.log.debug("old messages",t.session),this.inactiveTimeout.start(),o=sessionStorage.getItem("unfinished_message"),t.agent){for(this.onConnectionEstablished(t),i=t.session,e=0,s=i.length;s>e;e++)n=i[e],this.renderMessage({message:n.content,id:n.id,from:n.created_by_id?"agent":"customer"});o&&this.input.html(o)}return t.position&&this.onQueue(t),this.show(),this.open(),this.scrollToBottom(),o?this.input.focus():void 0},i.prototype.onInput=function(){return this.el.find(".zammad-chat-message--unread").removeClass("zammad-chat-message--unread"),sessionStorage.setItem("unfinished_message",this.input.html()),this.onTyping()},i.prototype.onFocus=function(){var s;return t(e).scrollTop(10),s=t(e).scrollTop()>0,t(e).scrollTop(0),s?this.log.notice("virtual keyboard shown"):void 0},i.prototype.onFocusOut=function(){},i.prototype.onTyping=function(){return this.isTyping&&this.isTyping>new Date((new Date).getTime()-1500)?void 0:(this.isTyping=new Date,this.send("chat_session_typing",{session_id:this.sessionId}),this.inactiveTimeout.start())},i.prototype.onSubmit=function(t){return t.preventDefault(),this.sendMessage()},i.prototype.sendMessage=function(){var t,e;return(t=this.input.html())?(this.inactiveTimeout.start(),sessionStorage.removeItem("unfinished_message"),e=this.view("message")({message:t,from:"customer",id:this._messageCount++,unreadClass:""}),this.maybeAddTimestamp(),this.el.find(".zammad-chat-message--typing").get(0)?(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.input.html(""),this.scrollToBottom(),this.send("chat_session_message",{content:t,id:this._messageCount,session_id:this.sessionId})):void 0},i.prototype.receiveMessage=function(t){return this.inactiveTimeout.start(),this.onAgentTypingEnd(),this.maybeAddTimestamp(),this.renderMessage({message:t.message.content,id:t.id,from:"agent"}),this.scrollToBottom({showHint:!0})},i.prototype.renderMessage=function(t){return this.lastAddedType="message--"+t.from,t.unreadClass=document.hidden?" zammad-chat-message--unread":"",this.el.find(".zammad-chat-body").append(this.view("message")(t))},i.prototype.open=function(){var t;return this.isOpen?void this.log.debug("widget already open, block"):(this.isOpen=!0,this.log.debug("open widget"),this.sessionId||this.showLoader(),this.el.addClass("zammad-chat-is-open"),this.inputInitialized||(this.inputInitialized=!0,this.input.autoGrow({extraLine:!1})),t=this.el.height()-this.el.find(".zammad-chat-header").outerHeight(),this.el.css("bottom",-t),this.sessionId?(this.el.css("bottom",0),this.onOpenAnimationEnd()):(this.el.animate({bottom:0},500,this.onOpenAnimationEnd),this.send("chat_session_init",{url:e.location.href})))},i.prototype.onOpenAnimationEnd=function(){return this.idleTimeout.stop(),this.isFullscreen?this.disableScrollOnRoot():void 0},i.prototype.sessionClose=function(){return this.send("chat_session_close",{session_id:this.sessionId}),this.inactiveTimeout.stop(),this.waitingListTimeout.stop(),sessionStorage.removeItem("unfinished_message"),this.onInitialQueueDelayId&&clearTimeout(this.onInitialQueueDelayId),this.setSessionId(void 0)},i.prototype.toggle=function(t){return this.isOpen?this.close(t):this.open(t)},i.prototype.close=function(t){var e;return this.isOpen?(this.initDelayId&&clearTimeout(this.initDelayId),this.sessionId?(this.log.debug("close widget"),t&&t.stopPropagation(),this.sessionClose(),this.isFullscreen&&this.enableScrollOnRoot(),e=this.el.height()-this.el.find(".zammad-chat-header").outerHeight(),this.el.animate({bottom:-e},500,this.onCloseAnimationEnd)):void this.log.debug("can't close widget without sessionId")):void this.log.debug("can't close widget, it's not open")},i.prototype.onCloseAnimationEnd=function(){return this.el.css("bottom",""),this.el.removeClass("zammad-chat-is-open"),this.showLoader(),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"),this.isOpen=!1,this.io.reconnect()},i.prototype.onWebSocketClose=function(){return this.isOpen?void 0:this.el?(this.el.removeClass("zammad-chat-is-shown"),this.el.removeClass("zammad-chat-is-loaded")):void 0},i.prototype.show=function(){return"offline"!==this.state?(this.el.addClass("zammad-chat-is-loaded"),this.el.addClass("zammad-chat-is-shown")):void 0},i.prototype.disableInput=function(){return this.input.prop("disabled",!0),this.el.find(".zammad-chat-send").prop("disabled",!0)},i.prototype.enableInput=function(){return this.input.prop("disabled",!1),this.el.find(".zammad-chat-send").prop("disabled",!1)},i.prototype.hideModal=function(){return this.el.find(".zammad-chat-modal").html("")},i.prototype.onQueueScreen=function(t){var e;return this.setSessionId(t.session_id),e=function(e){return function(){return e.onQueue(t),e.waitingListTimeout.start()}}(this),this.initialQueueDelay&&!this.onInitialQueueDelayId?void(this.onInitialQueueDelayId=setTimeout(e,this.initialQueueDelay)):(this.onInitialQueueDelayId&&clearTimeout(this.onInitialQueueDelayId),e())},i.prototype.onQueue=function(t){return this.log.notice("onQueue",t.position),this.inQueue=!0,this.el.find(".zammad-chat-modal").html(this.view("waiting")({position:t.position}))},i.prototype.onAgentTypingStart=function(){return this.stopTypingId&&clearTimeout(this.stopTypingId),this.stopTypingId=setTimeout(this.onAgentTypingEnd,3e3),!this.el.find(".zammad-chat-message--typing").get(0)&&(this.maybeAddTimestamp(),this.el.find(".zammad-chat-body").append(this.view("typingIndicator")()),this.isVisible(this.el.find(".zammad-chat-message--typing"),!0))?this.scrollToBottom():void 0},i.prototype.onAgentTypingEnd=function(){return this.el.find(".zammad-chat-message--typing").remove()},i.prototype.onLeaveTemporary=function(){return this.sessionId?this.send("chat_session_leave_temporary",{session_id:this.sessionId}):void 0},i.prototype.maybeAddTimestamp=function(){var t,e,s;return s=Date.now(),!this.lastTimestamp||s-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=s):(this.el.find(".zammad-chat-body").append(this.view("timestamp")({label:t,time:e})),this.lastTimestamp=s,this.lastAddedType="timestamp",this.scrollToBottom())):void 0},i.prototype.updateLastTimestamp=function(t,e){return this.el?this.el.find(".zammad-chat-body").find(".zammad-chat-timestamp").last().replaceWith(this.view("timestamp")({label:t,time:e})):void 0},i.prototype.addStatus=function(t){return this.el?(this.maybeAddTimestamp(),this.el.find(".zammad-chat-body").append(this.view("status")({status:t})),this.scrollToBottom()):void 0},i.prototype.detectScrolledtoBottom=function(){var t;return t=this.el.find(".zammad-chat-body").scrollTop()+this.el.find(".zammad-chat-body").outerHeight(),this.scrolledToBottom=Math.abs(t-this.el.find(".zammad-chat-body").prop("scrollHeight"))<=this.scrollSnapTolerance,this.scrolledToBottom?this.el.find(".zammad-scroll-hint").addClass("is-hidden"):void 0},i.prototype.showScrollHint=function(){return this.el.find(".zammad-scroll-hint").removeClass("is-hidden"),this.el.find(".zammad-chat-body").scrollTop(this.el.find(".zammad-chat-body").scrollTop()+this.el.find(".zammad-scroll-hint").outerHeight())},i.prototype.onScrollHintClick=function(){return this.el.find(".zammad-chat-body").animate({scrollTop:this.el.find(".zammad-chat-body").prop("scrollHeight")},300)},i.prototype.scrollToBottom=function(e){var s;return s=(null!=e?e:{showHint:!1}).showHint,this.scrolledToBottom?this.el.find(".zammad-chat-body").scrollTop(t(".zammad-chat-body").prop("scrollHeight")):s?this.showScrollHint():void 0},i.prototype.destroy=function(t){return null==t&&(t={}),this.log.debug("destroy widget",t),this.setAgentOnlineState("offline"),t.remove&&this.el&&this.el.remove(),this.waitingListTimeout&&this.waitingListTimeout.stop(),this.inactiveTimeout&&this.inactiveTimeout.stop(),this.idleTimeout&&this.idleTimeout.stop(),this.io.close()},i.prototype.reconnect=function(){return this.log.notice("reconnecting"),this.disableInput(),this.lastAddedType="status",this.setAgentOnlineState("connecting"),this.addStatus(this.T("Connection lost"))},i.prototype.onConnectionReestablished=function(){return this.lastAddedType="status",this.setAgentOnlineState("online"),this.addStatus(this.T("Connection re-established"))},i.prototype.onSessionClosed=function(t){return this.addStatus(this.T("Chat closed by %s",t.realname)),this.disableInput(),this.setAgentOnlineState("offline"),this.inactiveTimeout.stop()},i.prototype.setSessionId=function(t){return this.sessionId=t,void 0===t?sessionStorage.removeItem("sessionId"):sessionStorage.setItem("sessionId",t)},i.prototype.onConnectionEstablished=function(t){return this.onInitialQueueDelayId&&clearTimeout(this.onInitialQueueDelayId),this.inQueue=!1,t.agent&&(this.agent=t.agent),t.session_id&&this.setSessionId(t.session_id),this.el.find(".zammad-chat-body").html(""),this.el.find(".zammad-chat-agent").html(this.view("agent")({agent:this.agent})),this.enableInput(),this.hideModal(),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.isFullscreen||this.input.focus(),this.setAgentOnlineState("online"),this.waitingListTimeout.stop(),this.idleTimeout.stop(),this.inactiveTimeout.start()},i.prototype.showCustomerTimeout=function(){var t;return this.el.find(".zammad-chat-modal").html(this.view("customer_timeout")({agent:this.agent.name,delay:this.options.inactiveTimeout})),t=function(){return location.reload()},this.el.find(".js-restart").click(t),this.sessionClose()},i.prototype.showWaitingListTimeout=function(){var t;return this.el.find(".zammad-chat-modal").html(this.view("waiting_list_timeout")({delay:this.options.watingListTimeout})),t=function(){return location.reload()},this.el.find(".js-restart").click(t),this.sessionClose()},i.prototype.showLoader=function(){return this.el.find(".zammad-chat-modal").html(this.view("loader")())},i.prototype.setAgentOnlineState=function(t){var e;return this.state=t,this.el?(e=t.charAt(0).toUpperCase()+t.slice(1),this.el.find(".zammad-chat-agent-status").attr("data-status",t).text(this.T(e))):void 0},i.prototype.detectHost=function(){var t;return t="ws://","https"===l&&(t="wss://"),this.options.host=""+t+h+"/ws"},i.prototype.loadCss=function(){var t,e,s;if(this.options.cssAutoload)return s=this.options.cssUrl,s||(s=this.options.host.replace(/^wss/i,"https").replace(/^ws/i,"http").replace(/\/ws/i,""),s+="/assets/chat/chat.css"),this.log.debug("load css from '"+s+"'"),e="@import url('"+s+"');",t=document.createElement("link"),t.onload=this.onCssLoaded,t.rel="stylesheet",t.href="data:text/css,"+escape(e),document.getElementsByTagName("head")[0].appendChild(t)},i.prototype.onCssLoaded=function(){return this.socketReady?this.onReady():this.cssLoaded=!0},i.prototype.startTimeoutObservers=function(){return this.idleTimeout=new o({logPrefix:"idleTimeout",debug:this.options.debug,timeout:this.options.idleTimeout,timeoutIntervallCheck:this.options.idleTimeoutIntervallCheck,callback:function(t){return function(){return t.log.debug("Idle timeout reached, hide widget",new Date),t.destroy({remove:!0})}}(this)}),this.inactiveTimeout=new o({logPrefix:"inactiveTimeout",debug:this.options.debug,timeout:this.options.inactiveTimeout,timeoutIntervallCheck:this.options.inactiveTimeoutIntervallCheck,callback:function(t){return function(){return t.log.debug("Inactive timeout reached, show timeout screen.",new Date),t.showCustomerTimeout(),t.destroy({remove:!1})}}(this)}),this.waitingListTimeout=new o({logPrefix:"waitingListTimeout",debug:this.options.debug,timeout:this.options.waitingListTimeout,timeoutIntervallCheck:this.options.waitingListTimeoutIntervallCheck,callback:function(t){return function(){return t.log.debug("Waiting list timeout reached, show timeout screen.",new Date),t.showWaitingListTimeout(),t.destroy({remove:!1})}}(this)})},i.prototype.disableScrollOnRoot=function(){return this.rootScrollOffset=this.scrollRoot.scrollTop(),this.scrollRoot.css({overflow:"hidden",position:"fixed"})},i.prototype.enableScrollOnRoot=function(){return this.scrollRoot.scrollTop(this.rootScrollOffset),this.scrollRoot.css({overflow:"",position:""})},i.prototype.isVisible=function(s,n,i,o){var a,r,h,l,d,c,u,p,m,g,f,y,v,b,w,T,z,S,C,I,k,_,O,A,E,x;if(!(s.length<1))if(r=t(e),a=s.length>1?s.eq(0):s,S=a.get(0),x=r.width(),E=r.height(),o=o?o:"both",p=i===!0?S.offsetWidth*S.offsetHeight:!0,"function"==typeof S.getBoundingClientRect){if(z=S.getBoundingClientRect(),C=z.top>=0&&z.top0&&z.bottom<=E,b=z.left>=0&&z.left0&&z.right<=x,I=n?C||u:C&&u,v=n?b||T:b&&T,"both"===o)return p&&I&&v;if("vertical"===o)return p&&I;if("horizontal"===o)return p&&v}else{if(A=r.scrollTop(),k=A+E,_=r.scrollLeft(),O=_+x,w=a.offset(),c=w.top,h=c+a.height(),l=w.left,d=l+a.width(),y=n===!0?h:c,m=n===!0?c:h,g=n===!0?d:l,f=n===!0?l:d,"both"===o)return!!p&&k>=m&&y>=A&&O>=f&&g>=_;if("vertical"===o)return!!p&&k>=m&&y>=A;if("horizontal"===o)return!!p&&O>=f&&g>=_}},i}(s),e.ZammadChat=a}(window.jQuery,window),jQuery.fn.autoGrow=function(t){return this.each(function(){var e=jQuery.extend({extraLine:!0},t),s=function(t){return jQuery(t).after('
'),jQuery(t).next(".autogrow-textarea-mirror")[0]},n=function(t){if(o.innerHTML=String(t.value).replace(/&/g,"&").replace(/"/g,""").replace(/'/g,"'").replace(//g,">").replace(/ /g," ").replace(/\n/g,"
")+(e.extraLine?".
.":""),jQuery(t).height()!=jQuery(o).height()){jQuery(t).height(jQuery(o).height());var s=jQuery(o).height()>a?"":"hidden";jQuery(t).css("overflow",s)}},i=function(){n(this)},o=s(this),a=parseInt(jQuery(this).css("max-height"),10);o.style.display="none",o.style.wordWrap="break-word",o.style.whiteSpace="normal",o.style.padding=jQuery(this).css("paddingTop")+" "+jQuery(this).css("paddingRight")+" "+jQuery(this).css("paddingBottom")+" "+jQuery(this).css("paddingLeft"),o.style.width=jQuery(this).css("width"),o.style.fontFamily=jQuery(this).css("font-family"),o.style.fontSize=jQuery(this).css("font-size"),o.style.lineHeight=jQuery(this).css("line-height"),o.style.letterSpacing=jQuery(this).css("letter-spacing"),o.style.boxSizing=jQuery(this).css("boxSizing"), +this.style.overflow="hidden",this.style.minHeight=this.rows+"em",this.onkeyup=i,this.onfocus=i,n(this)})},window.zammadChatTemplates||(window.zammadChatTemplates={}),window.zammadChatTemplates.chat=function(t){t||(t={});var e,s=[],n=function(t){return t&&t.ecoSafe?t:"undefined"!=typeof t&&null!=t?o(t):""},i=t.safe,o=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},o||(o=t.escape=function(t){return(""+t).replace(/&/g,"&").replace(//g,">").replace(/"/g,""")}),function(){(function(){s.push('
\n
\n
\n \n \n \n \n \n
\n
\n
\n
\n \n '),s.push(this.T(this.title)),s.push('\n
\n
\n
\n \n
\n
\n
\n \n
\n
")}).call(this)}.call(t),t.safe=i,t.escape=o,s.join("")},window.zammadChatTemplates||(window.zammadChatTemplates={}),window.zammadChatTemplates.customer_timeout=function(t){t||(t={});var e,s=[],n=function(t){return t&&t.ecoSafe?t:"undefined"!=typeof t&&null!=t?o(t):""},i=t.safe,o=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},o||(o=t.escape=function(t){return(""+t).replace(/&/g,"&").replace(//g,">").replace(/"/g,""")}),function(){(function(){s.push('
\n '),this.agent?(s.push("\n "),s.push(this.T("Since you didn't respond in the last %s minutes your conversation with %s got closed.",this.delay,this.agent)),s.push("\n ")):(s.push("\n "),s.push(this.T("Since you didn't respond in the last %s minutes your conversation got closed.",this.delay)),s.push("\n ")),s.push('\n
\n
"),s.push(this.T("Start new conversation")),s.push("
\n
")}).call(this)}.call(t),t.safe=i,t.escape=o,s.join("")},window.zammadChatTemplates||(window.zammadChatTemplates={}),window.zammadChatTemplates.loader=function(t){t||(t={});var e,s=[],n=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(){s.push('\n \n \n \n\n'),s.push(this.T("Connecting")),s.push("")}).call(this)}.call(t),t.safe=n,t.escape=i,s.join("")},window.zammadChatTemplates||(window.zammadChatTemplates={}),window.zammadChatTemplates.message=function(t){t||(t={});var e,s=[],n=function(t){return t&&t.ecoSafe?t:"undefined"!=typeof t&&null!=t?o(t):""},i=t.safe,o=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},o||(o=t.escape=function(t){return(""+t).replace(/&/g,"&").replace(//g,">").replace(/"/g,""")}),function(){(function(){s.push('
\n "),s.push(this.message),s.push("\n
")}).call(this)}.call(t),t.safe=i,t.escape=o,s.join("")},window.zammadChatTemplates||(window.zammadChatTemplates={}),window.zammadChatTemplates.status=function(t){t||(t={});var e,s=[],n=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(){s.push('
\n
\n '),s.push(this.status),s.push("\n
\n
")}).call(this)}.call(t),t.safe=n,t.escape=i,s.join("")},window.zammadChatTemplates||(window.zammadChatTemplates={}),window.zammadChatTemplates.timestamp=function(t){t||(t={});var e,s=[],n=function(t){return t&&t.ecoSafe?t:"undefined"!=typeof t&&null!=t?o(t):""},i=t.safe,o=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},o||(o=t.escape=function(t){return(""+t).replace(/&/g,"&").replace(//g,">").replace(/"/g,""")}),function(){(function(){s.push('
'),s.push(n(this.label)),s.push(" "),s.push(n(this.time)),s.push("
")}).call(this)}.call(t),t.safe=i,t.escape=o,s.join("")},window.zammadChatTemplates||(window.zammadChatTemplates={}),window.zammadChatTemplates.typingIndicator=function(t){t||(t={});var e,s=[],n=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(){s.push('
\n \n \n \n \n \n \n \n
')}).call(this)}.call(t),t.safe=n,t.escape=i,s.join("")},window.zammadChatTemplates||(window.zammadChatTemplates={}),window.zammadChatTemplates.waiting=function(t){t||(t={});var e,s=[],n=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(){s.push('
\n \n \n \n \n \n '),s.push(this.T("All colleagues are busy.")),s.push("
\n "),s.push(this.T("You are on waiting list position %s.",this.position)),s.push("\n
")}).call(this)}.call(t),t.safe=n,t.escape=i,s.join("")},window.zammadChatTemplates||(window.zammadChatTemplates={}),window.zammadChatTemplates.waiting_list_timeout=function(t){t||(t={});var e,s=[],n=function(t){return t&&t.ecoSafe?t:"undefined"!=typeof t&&null!=t?o(t):""},i=t.safe,o=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},o||(o=t.escape=function(t){return(""+t).replace(/&/g,"&").replace(//g,">").replace(/"/g,""")}),function(){(function(){s.push('
\n '),s.push(this.T("We are sorry, it takes longer as expected to get an empty slot. Please try again later or send us an email. Thank you!")),s.push('\n
\n
"),s.push(this.T("Start new conversation")),s.push("
\n
")}).call(this)}.call(t),t.safe=i,t.escape=o,s.join("")}; \ No newline at end of file diff --git a/public/assets/chat/views/chat.eco b/public/assets/chat/views/chat.eco index 6d73cc626..2860d193e 100644 --- a/public/assets/chat/views/chat.eco +++ b/public/assets/chat/views/chat.eco @@ -21,7 +21,7 @@
- +
\ No newline at end of file From f5e0d576f3ba217801e31fbb24db562b107f6dc0 Mon Sep 17 00:00:00 2001 From: Felix Niklas Date: Fri, 14 Jul 2017 16:04:20 +0200 Subject: [PATCH 023/144] Chat: remove autogrow, style contenteditable div --- public/assets/chat/chat.coffee | 5 - public/assets/chat/chat.css | 20 ++- public/assets/chat/chat.js | 206 +++++++------------------- public/assets/chat/chat.min.js | 4 +- public/assets/chat/chat.scss | 14 +- public/assets/chat/gulpfile.js | 4 +- public/assets/chat/jquery.autoGrow.js | 92 ------------ 7 files changed, 72 insertions(+), 273 deletions(-) delete mode 100644 public/assets/chat/jquery.autoGrow.js diff --git a/public/assets/chat/chat.coffee b/public/assets/chat/chat.coffee index a31fbb58f..e70625be1 100644 --- a/public/assets/chat/chat.coffee +++ b/public/assets/chat/chat.coffee @@ -585,11 +585,6 @@ do($ = window.jQuery, window) -> @el.addClass('zammad-chat-is-open') - if !@inputInitialized - @inputInitialized = true - @input.autoGrow - extraLine: false - remainerHeight = @el.height() - @el.find('.zammad-chat-header').outerHeight() @el.css 'bottom', -remainerHeight diff --git a/public/assets/chat/chat.css b/public/assets/chat/chat.css index 451ca8b09..255fa5b7a 100644 --- a/public/assets/chat/chat.css +++ b/public/assets/chat/chat.css @@ -320,9 +320,9 @@ .zammad-chat-controls { overflow: hidden; display: none; - -webkit-align-items: flex-start; - -ms-flex-align: start; - align-items: flex-start; + -webkit-align-items: flex-end; + -ms-flex-align: end; + align-items: flex-end; border-top: 1px solid #ededed; padding: 0; margin: 0; @@ -340,25 +340,23 @@ margin: 0; padding: 1em 2em; float: left; - width: auto; - height: auto; max-height: 6em; - min-height: 1.4em !important; + min-height: 1.4em; font-family: inherit; line-height: 1.4em; font-size: inherit; -webkit-appearance: none; -moz-appearance: none; appearance: none; - border: none !important; + border: none; background: none; - box-shadow: none !important; + box-shadow: none; box-sizing: content-box; outline: none; - resize: none; -webkit-flex: 1; -ms-flex: 1; - flex: 1; } + flex: 1; + overflow: auto; } .zammad-chat-input::-webkit-input-placeholder { color: #d9d9d9; } @@ -373,7 +371,7 @@ background: #379ad7; color: white; padding: 0.5em 1.2em; - margin: 0.5em 1em 0.5em; + margin: 0.63em 1em; cursor: pointer; border: none; border-radius: 1.5em; diff --git a/public/assets/chat/chat.js b/public/assets/chat/chat.js index 7cb133435..aa9f016fe 100644 --- a/public/assets/chat/chat.js +++ b/public/assets/chat/chat.js @@ -1,64 +1,3 @@ -if (!window.zammadChatTemplates) { - window.zammadChatTemplates = {}; -} -window.zammadChatTemplates["agent"] = function (__obj) { - if (!__obj) __obj = {}; - var __out = [], __capture = function(callback) { - var out = __out, result; - __out = []; - callback.call(this); - result = __out.join(''); - __out = out; - return __safe(result); - }, __sanitize = function(value) { - if (value && value.ecoSafe) { - return value; - } else if (typeof value !== 'undefined' && value != null) { - return __escape(value); - } else { - return ''; - } - }, __safe, __objSafe = __obj.safe, __escape = __obj.escape; - __safe = __obj.safe = function(value) { - if (value && value.ecoSafe) { - return value; - } else { - if (!(typeof value !== 'undefined' && value != null)) value = ''; - var result = new String(value); - result.ecoSafe = true; - return result; - } - }; - if (!__escape) { - __escape = __obj.escape = function(value) { - return ('' + value) - .replace(/&/g, '&') - .replace(//g, '>') - .replace(/"/g, '"'); - }; - } - (function() { - (function() { - if (this.agent.avatar) { - __out.push('\n\n'); - } - - __out.push('\n\n '); - - __out.push(__sanitize(this.agent.name)); - - __out.push('\n'); - - }).call(this); - - }).call(__obj); - __obj.safe = __objSafe, __obj.escape = __escape; - return __out.join(''); -}; - var bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; }, slice = [].slice, extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }, @@ -871,12 +810,6 @@ var bind = function(fn, me){ return function(){ return fn.apply(me, arguments); this.showLoader(); } this.el.addClass('zammad-chat-is-open'); - if (!this.inputInitialized) { - this.inputInitialized = true; - this.input.autoGrow({ - extraLine: false - }); - } remainerHeight = this.el.height() - this.el.find('.zammad-chat-header').outerHeight(); this.el.css('bottom', -remainerHeight); if (!this.sessionId) { @@ -1395,98 +1328,67 @@ var bind = function(fn, me){ return function(){ return fn.apply(me, arguments); return window.ZammadChat = ZammadChat; })(window.jQuery, window); -/*! - * ---------------------------------------------------------------------------- - * "THE BEER-WARE LICENSE" (Revision 42): - * wrote this file. As long as you retain this notice you - * can do whatever you want with this stuff. If we meet some day, and you think - * this stuff is worth it, you can buy me a beer in return. Jevin O. Sewaruth - * ---------------------------------------------------------------------------- - * - * Autogrow Textarea Plugin Version v3.0 - * http://www.technoreply.com/autogrow-textarea-plugin-3-0 - * - * THIS PLUGIN IS DELIVERD ON A PAY WHAT YOU WHANT BASIS. IF THE PLUGIN WAS USEFUL TO YOU, PLEASE CONSIDER BUYING THE PLUGIN HERE : - * https://sites.fastspring.com/technoreply/instant/autogrowtextareaplugin - * - * Date: October 15, 2012 - * - * Zammad modification: - * - remove overflow:hidden when maximum height is reached - * - mirror box-sizing - * - */ - -jQuery.fn.autoGrow = function(options) { - return this.each(function() { - var settings = jQuery.extend({ - extraLine: true, - }, options); - - var createMirror = function(textarea) { - jQuery(textarea).after('
'); - return jQuery(textarea).next('.autogrow-textarea-mirror')[0]; +if (!window.zammadChatTemplates) { + window.zammadChatTemplates = {}; +} +window.zammadChatTemplates["agent"] = function (__obj) { + if (!__obj) __obj = {}; + var __out = [], __capture = function(callback) { + var out = __out, result; + __out = []; + callback.call(this); + result = __out.join(''); + __out = out; + return __safe(result); + }, __sanitize = function(value) { + if (value && value.ecoSafe) { + return value; + } else if (typeof value !== 'undefined' && value != null) { + return __escape(value); + } else { + return ''; } - - var sendContentToMirror = function (textarea) { - mirror.innerHTML = String(textarea.value) + }, __safe, __objSafe = __obj.safe, __escape = __obj.escape; + __safe = __obj.safe = function(value) { + if (value && value.ecoSafe) { + return value; + } else { + if (!(typeof value !== 'undefined' && value != null)) value = ''; + var result = new String(value); + result.ecoSafe = true; + return result; + } + }; + if (!__escape) { + __escape = __obj.escape = function(value) { + return ('' + value) .replace(/&/g, '&') - .replace(/"/g, '"') - .replace(/'/g, ''') .replace(//g, '>') - .replace(/ /g, ' ') - .replace(/\n/g, '
') + - (settings.extraLine? '.
.' : '') - ; - - if (jQuery(textarea).height() != jQuery(mirror).height()) { - jQuery(textarea).height(jQuery(mirror).height()); - - var overflow = jQuery(mirror).height() > maxHeight ? '' : 'hidden'; - jQuery(textarea).css('overflow', overflow); + .replace(/"/g, '"'); + }; + } + (function() { + (function() { + if (this.agent.avatar) { + __out.push('\n\n'); } - } - - var growTextarea = function () { - sendContentToMirror(this); - } - - // Create a mirror - var mirror = createMirror(this); - - // Store max-height - var maxHeight = parseInt(jQuery(this).css('max-height'), 10); - // Style the mirror - mirror.style.display = 'none'; - mirror.style.wordWrap = 'break-word'; - mirror.style.whiteSpace = 'normal'; - mirror.style.padding = jQuery(this).css('paddingTop') + ' ' + - jQuery(this).css('paddingRight') + ' ' + - jQuery(this).css('paddingBottom') + ' ' + - jQuery(this).css('paddingLeft'); - - mirror.style.width = jQuery(this).css('width'); - mirror.style.fontFamily = jQuery(this).css('font-family'); - mirror.style.fontSize = jQuery(this).css('font-size'); - mirror.style.lineHeight = jQuery(this).css('line-height'); - mirror.style.letterSpacing = jQuery(this).css('letter-spacing'); - mirror.style.boxSizing = jQuery(this).css('boxSizing'); - - // Style the textarea - this.style.overflow = "hidden"; - this.style.minHeight = this.rows+"em"; - - // Bind the textarea's event - this.onkeyup = growTextarea; - this.onfocus = growTextarea; - - // Fire the event for text already present - sendContentToMirror(this); - - }); + __out.push('\n\n '); + + __out.push(__sanitize(this.agent.name)); + + __out.push('\n'); + + }).call(this); + + }).call(__obj); + __obj.safe = __objSafe, __obj.escape = __escape; + return __out.join(''); }; + if (!window.zammadChatTemplates) { window.zammadChatTemplates = {}; } diff --git a/public/assets/chat/chat.min.js b/public/assets/chat/chat.min.js index cd6e179f8..fed77d7b7 100644 --- a/public/assets/chat/chat.min.js +++ b/public/assets/chat/chat.min.js @@ -1,2 +1,2 @@ -window.zammadChatTemplates||(window.zammadChatTemplates={}),window.zammadChatTemplates.agent=function(t){t||(t={});var e,s=[],n=function(t){return t&&t.ecoSafe?t:"undefined"!=typeof t&&null!=t?o(t):""},i=t.safe,o=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},o||(o=t.escape=function(t){return(""+t).replace(/&/g,"&").replace(//g,">").replace(/"/g,""")}),function(){(function(){this.agent.avatar&&(s.push('\n\n')),s.push('\n\n '),s.push(n(this.agent.name)),s.push("\n")}).call(this)}.call(t),t.safe=i,t.escape=o,s.join("")};var bind=function(t,e){return function(){return t.apply(e,arguments)}},slice=[].slice,extend=function(t,e){function s(){this.constructor=t}for(var n in e)hasProp.call(e,n)&&(t[n]=e[n]);return s.prototype=e.prototype,t.prototype=new s,t.__super__=e.prototype,t},hasProp={}.hasOwnProperty;!function(t,e){var s,n,i,o,a,r,h,l,d;return d=document.getElementsByTagName("script"),r=d[d.length-1],h=r.src.match(".*://([^:/]*).*")[1],l=r.src.match("(.*)://[^:/]*.*")[1],s=function(){function e(e){this.options=t.extend({},this.defaults,e),this.log=new i({debug:this.options.debug,logPrefix:this.options.logPrefix||this.logPrefix})}return e.prototype.defaults={debug:!1},e}(),i=function(){function e(e){this.log=bind(this.log,this),this.error=bind(this.error,this),this.notice=bind(this.notice,this),this.debug=bind(this.debug,this),this.options=t.extend({},this.defaults,e)}return e.prototype.defaults={debug:!1},e.prototype.debug=function(){var t;return t=1<=arguments.length?slice.call(arguments,0):[],this.options.debug?this.log("debug",t):void 0},e.prototype.notice=function(){var t;return t=1<=arguments.length?slice.call(arguments,0):[],this.log("notice",t)},e.prototype.error=function(){var t;return t=1<=arguments.length?slice.call(arguments,0):[],this.log("error",t)},e.prototype.log=function(e,s){var n,i,o,a;if(s.unshift("||"),s.unshift(e),s.unshift(this.options.logPrefix),console.log.apply(console,s),this.options.debug){for(a="",n=0,o=s.length;o>n;n++)i=s[n],a+=" ",a+="object"==typeof i?JSON.stringify(i):i&&i.toString?i.toString():i;return t(".js-chatLogDisplay").prepend("
"+a+"
")}},e}(),o=function(t){function e(t){this.stop=bind(this.stop,this),this.start=bind(this.start,this),e.__super__.constructor.call(this,t)}return extend(e,t),e.prototype.timeoutStartedAt=null,e.prototype.logPrefix="timeout",e.prototype.defaults={debug:!1,timeout:4,timeoutIntervallCheck:.5},e.prototype.start=function(){var t,e;return this.stop(),e=new Date,t=function(t){return function(){var s;return s=new Date-new Date(e.getTime()+1e3*t.options.timeout*60),t.log.debug("Timeout check for "+t.options.timeout+" minutes (left "+s/1e3+" sec.)"),0>s?void 0:(t.stop(),t.options.callback())}}(this),this.log.debug("Start timeout in "+this.options.timeout+" minutes"),this.intervallId=setInterval(t,1e3*this.options.timeoutIntervallCheck*60)},e.prototype.stop=function(){return this.intervallId?(this.log.debug("Stop timeout of "+this.options.timeout+" minutes"),clearInterval(this.intervallId)):void 0},e}(s),n=function(t){function s(t){this.ping=bind(this.ping,this),this.send=bind(this.send,this),this.reconnect=bind(this.reconnect,this),this.close=bind(this.close,this),this.connect=bind(this.connect,this),this.set=bind(this.set,this),s.__super__.constructor.call(this,t)}return extend(s,t),s.prototype.logPrefix="io",s.prototype.set=function(t){var e,s,n;s=[];for(e in t)n=t[e],s.push(this.options[e]=n);return s},s.prototype.connect=function(){return this.log.debug("Connecting to "+this.options.host),this.ws=new e.WebSocket(""+this.options.host),this.ws.onopen=function(t){return function(e){return t.log.debug("onOpen",e),t.options.onOpen(e),t.ping()}}(this),this.ws.onmessage=function(t){return function(e){var s,n,i,o;for(o=JSON.parse(e.data),t.log.debug("onMessage",e.data),s=0,n=o.length;n>s;s++)i=o[s],"pong"===i.event&&t.ping();return t.options.onMessage?t.options.onMessage(o):void 0}}(this),this.ws.onclose=function(t){return function(e){if(t.log.debug("close websocket connection",e),t.pingDelayId&&clearTimeout(t.pingDelayId),t.manualClose){if(t.log.debug("manual close, onClose callback"),t.manualClose=!1,t.options.onClose)return t.options.onClose(e)}else if(t.log.debug("error close, onError callback"),t.options.onError)return t.options.onError("Connection lost...")}}(this),this.ws.onerror=function(t){return function(e){return t.log.debug("onError",e),t.options.onError?t.options.onError(e):void 0}}(this)},s.prototype.close=function(){return this.log.debug("close websocket manually"),this.manualClose=!0,this.ws.close()},s.prototype.reconnect=function(){return this.log.debug("reconnect"),this.close(),this.connect()},s.prototype.send=function(t,e){var s;return null==e&&(e={}),this.log.debug("send",t,e),s=JSON.stringify({event:t,data:e}),this.ws.send(s)},s.prototype.ping=function(){var t;return t=function(t){return function(){return t.send("ping")}}(this),this.pingDelayId=setTimeout(t,29e3)},s}(s),a=function(s){function i(s){return this.startTimeoutObservers=bind(this.startTimeoutObservers,this),this.onCssLoaded=bind(this.onCssLoaded,this),this.setAgentOnlineState=bind(this.setAgentOnlineState,this),this.onConnectionEstablished=bind(this.onConnectionEstablished,this),this.setSessionId=bind(this.setSessionId,this),this.onConnectionReestablished=bind(this.onConnectionReestablished,this),this.reconnect=bind(this.reconnect,this),this.destroy=bind(this.destroy,this),this.onScrollHintClick=bind(this.onScrollHintClick,this),this.detectScrolledtoBottom=bind(this.detectScrolledtoBottom,this),this.onLeaveTemporary=bind(this.onLeaveTemporary,this),this.onAgentTypingEnd=bind(this.onAgentTypingEnd,this),this.onAgentTypingStart=bind(this.onAgentTypingStart,this),this.onQueue=bind(this.onQueue,this),this.onQueueScreen=bind(this.onQueueScreen,this),this.onWebSocketClose=bind(this.onWebSocketClose,this),this.onCloseAnimationEnd=bind(this.onCloseAnimationEnd,this),this.close=bind(this.close,this),this.toggle=bind(this.toggle,this),this.sessionClose=bind(this.sessionClose,this),this.onOpenAnimationEnd=bind(this.onOpenAnimationEnd,this),this.open=bind(this.open,this),this.renderMessage=bind(this.renderMessage,this),this.receiveMessage=bind(this.receiveMessage,this),this.onSubmit=bind(this.onSubmit,this),this.onFocus=bind(this.onFocus,this),this.onInput=bind(this.onInput,this),this.onReopenSession=bind(this.onReopenSession,this),this.onError=bind(this.onError,this),this.onWebSocketMessage=bind(this.onWebSocketMessage,this),this.send=bind(this.send,this),this.checkForEnter=bind(this.checkForEnter,this),this.render=bind(this.render,this),this.view=bind(this.view,this),this.T=bind(this.T,this),this.options=t.extend({},this.defaults,s),i.__super__.constructor.call(this,this.options),this.isFullscreen=e.matchMedia&&e.matchMedia("(max-width: 768px)").matches,this.scrollRoot=t(this.getScrollRoot()),t?e.WebSocket&&sessionStorage?this.options.chatId?(this.options.lang||(this.options.lang=t("html").attr("lang")),this.options.lang&&(this.translations[this.options.lang]||(this.log.debug("lang: No "+this.options.lang+" found, try first two letters"),this.options.lang=this.options.lang.replace(/-.+?$/,"")),this.log.debug("lang: "+this.options.lang)),this.options.host||this.detectHost(),this.loadCss(),this.io=new n(this.options),this.io.set({onOpen:this.render,onClose:this.onWebSocketClose,onMessage:this.onWebSocketMessage,onError:this.onError}),void this.io.connect()):(this.state="unsupported",void this.log.error("Chat: need chatId as option!")):(this.state="unsupported",void this.log.notice("Chat: Browser not supported!")):(this.state="unsupported",void this.log.notice("Chat: no jquery found!"))}return extend(i,s),i.prototype.defaults={chatId:void 0,show:!0,target:t("body"),host:"",debug:!1,flat:!1,lang:void 0,cssAutoload:!0,cssUrl:void 0,fontSize:void 0,buttonClass:"open-zammad-chat",inactiveClass:"is-inactive",title:"Chat with us!",scrollHint:"Scrolle nach unten um neue Nachrichten zu sehen",idleTimeout:6,idleTimeoutIntervallCheck:.5,inactiveTimeout:8,inactiveTimeoutIntervallCheck:.5,waitingListTimeout:4,waitingListTimeoutIntervallCheck:.5},i.prototype.logPrefix="chat",i.prototype._messageCount=0,i.prototype.isOpen=!1,i.prototype.blinkOnlineInterval=null,i.prototype.stopBlinOnlineStateTimeout=null,i.prototype.showTimeEveryXMinutes=2,i.prototype.lastTimestamp=null,i.prototype.lastAddedType=null,i.prototype.inputTimeout=null,i.prototype.isTyping=!1,i.prototype.state="offline",i.prototype.initialQueueDelay=1e4,i.prototype.translations={de:{"Chat with us!":"Chatte mit uns!","Scroll down to see new messages":"Scrolle nach unten um neue Nachrichten zu sehen",Online:"Online",Online:"Online",Offline:"Offline",Connecting:"Verbinden","Connection re-established":"Verbindung wiederhergestellt",Today:"Heute",Send:"Senden","Compose your message...":"Ihre Nachricht...","All colleagues are busy.":"Alle Kollegen sind belegt.","You are on waiting list position %s.":"Sie sind in der Warteliste an der Position %s.","Start new conversation":"Neue Konversation starten","Since you didn't respond in the last %s minutes your conversation with %s got closed.":"Da Sie in den letzten %s Minuten nichts geschrieben haben wurde Ihre Konversation mit %s geschlossen.","Since you didn't respond in the last %s minutes your conversation got closed.":"Da Sie in den letzten %s Minuten nichts geschrieben haben wurde Ihre Konversation geschlossen.","We are sorry, it takes longer as expected to get an empty slot. Please try again later or send us an email. Thank you!":"Es tut uns leid, es dauert länger als erwartet, um einen freien Platz zu erhalten. Bitte versuchen Sie es zu einem späteren Zeitpunkt noch einmal oder schicken Sie uns eine E-Mail. Vielen Dank!"},fr:{"Chat with us!":"Chattez avec nous!","Scroll down to see new messages":"Faites défiler pour lire les nouveaux messages",Online:"En-ligne",Online:"En-ligne",Offline:"Hors-ligne",Connecting:"Connexion en cours","Connection re-established":"Connexion rétablie",Today:"Aujourdhui",Send:"Envoyer","Compose your message...":"Composez votre message...","All colleagues are busy.":"Tous les collègues sont actuellement occupés.","You are on waiting list position %s.":"Vous êtes actuellement en %s position dans la file d'attente.","Start new conversation":"Démarrer une nouvelle conversation","Since you didn't respond in the last %s minutes your conversation with %s got closed.":"Si vous ne répondez pas dans les %s minutes, votre conversation avec %s va être fermée.","Since you didn't respond in the last %s minutes your conversation got closed.":"Si vous ne répondez pas dans les %s minutes, votre conversation va être fermée.","We are sorry, it takes longer as expected to get an empty slot. Please try again later or send us an email. Thank you!":"Nous sommes désolés, il faut plus de temps que prévu pour obtenir un emplacement vide. Veuillez réessayer ultérieurement ou nous envoyer un courriel. Je vous remercie!"},"zh-cn":{"Chat with us!":"发起即时对话!","Scroll down to see new messages":"向下滚动以查看新消息",Online:"在线",Online:"在线",Offline:"离线",Connecting:"连接中","Connection re-established":"正在重新建立连接",Today:"今天",Send:"发送","Compose your message...":"正在输入信息...","All colleagues are busy.":"所有工作人员都在忙碌中.","You are on waiting list position %s.":"您目前的等候位置是第 %s 位.","Start new conversation":"开始新的会话","Since you didn't respond in the last %s minutes your conversation with %s got closed.":"由于您超过 %s 分钟没有回复, 您与 %s 的会话已被关闭.","Since you didn't respond in the last %s minutes your conversation got closed.":"由于您超过 %s 分钟没有任何回复, 该对话已被关闭.","We are sorry, it takes longer as expected to get an empty slot. Please try again later or send us an email. Thank you!":"非常抱歉, 目前需要等候更长的时间才能接入对话, 请稍后重试或向我们发送电子邮件. 谢谢!"},"zh-tw":{"Chat with us!":"開始即時對话!","Scroll down to see new messages":"向下滑動以查看新訊息",Online:"線上",Online:"線上",Offline:"离线",Connecting:"連線中","Connection re-established":"正在重新建立連線中",Today:"今天",Send:"發送","Compose your message...":"正在輸入訊息...","All colleagues are busy.":"所有服務人員都在忙碌中.","You are on waiting list position %s.":"你目前的等候位置是第 %s 順位.","Start new conversation":"開始新的對話","Since you didn't respond in the last %s minutes your conversation with %s got closed.":"由於你超過 %s 分鐘沒有回應, 你與 %s 的對話已被關閉.","Since you didn't respond in the last %s minutes your conversation got closed.":"由於你超過 %s 分鐘沒有任何回應, 該對話已被關閉.","We are sorry, it takes longer as expected to get an empty slot. Please try again later or send us an email. Thank you!":"非常抱歉, 當前需要等候更長的時間方可排入對話程序, 請稍後重試或向我們寄送電子郵件. 謝謝!"}},i.prototype.sessionId=void 0,i.prototype.scrolledToBottom=!0,i.prototype.scrollSnapTolerance=10,i.prototype.T=function(){var t,e,s,n,i,o;if(i=arguments[0],s=2<=arguments.length?slice.call(arguments,1):[],this.options.lang&&"en"!==this.options.lang&&(this.translations[this.options.lang]?(o=this.translations[this.options.lang],o[i]||this.log.notice("Translation needed for '"+i+"'"),i=o[i]||i):this.log.notice("Translation '"+this.options.lang+"' needed!")),s)for(t=0,n=s.length;n>t;t++)e=s[t],i=i.replace(/%s/,e);return i},i.prototype.view=function(t){return function(s){return function(n){return n||(n={}),n.T=s.T,n.background=s.options.background,n.flat=s.options.flat,n.fontSize=s.options.fontSize,e.zammadChatTemplates[t](n)}}(this)},i.prototype.getScrollRoot=function(){var t,e,s;return"scrollingElement"in document?document.scrollingElement:(e=document.documentElement,s=e.scrollTop,e.scrollTop=s+1,t=e.scrollTop,e.scrollTop=s,t>s?e:document.body)},i.prototype.render=function(){return this.el&&t(".zammad-chat").get(0)||this.renderBase(),t("."+this.options.buttonClass).addClass(this.inactiveClass),this.setAgentOnlineState("online"),this.log.debug("widget rendered"),this.startTimeoutObservers(),this.idleTimeout.start(),this.sessionId=sessionStorage.getItem("sessionId"),this.send("chat_status_customer",{session_id:this.sessionId,url:e.location.href})},i.prototype.renderBase=function(){return this.el=t(this.view("chat")({title:this.options.title,scrollHint:this.options.scrollHint})),this.options.target.append(this.el),this.input=this.el.find(".zammad-chat-input"),this.el.find(".js-chat-open").click(this.open),this.el.find(".js-chat-toggle").click(this.toggle),this.el.find(".zammad-chat-controls").on("submit",this.onSubmit),this.el.find(".zammad-chat-body").on("scroll",this.detectScrolledtoBottom),this.el.find(".zammad-scroll-hint").click(this.onScrollHintClick),this.input.on({keydown:this.checkForEnter,input:this.onInput}),t(e).on("beforeunload",function(t){return function(){return t.onLeaveTemporary()}}(this)),t(e).bind("hashchange",function(t){return function(){return t.isOpen?void(t.sessionId&&t.send("chat_session_notice",{session_id:t.sessionId,message:e.location.href})):t.idleTimeout.start()}}(this)),this.isFullscreen?this.input.on({focus:this.onFocus,focusout:this.onFocusOut}):void 0},i.prototype.checkForEnter=function(t){return t.shiftKey||13!==t.keyCode?void 0:(t.preventDefault(),this.sendMessage())},i.prototype.send=function(t,e){return null==e&&(e={}),e.chat_id=this.options.chatId,this.io.send(t,e)},i.prototype.onWebSocketMessage=function(t){var e,s,n;for(e=0,s=t.length;s>e;e++)switch(n=t[e],this.log.debug("ws:onmessage",n),n.event){case"chat_error":this.log.notice(n.data),n.data&&"chat_disabled"===n.data.state&&this.destroy({remove:!0});break;case"chat_session_message":if(n.data.self_written)return;this.receiveMessage(n.data);break;case"chat_session_typing":if(n.data.self_written)return;this.onAgentTypingStart();break;case"chat_session_start":this.onConnectionEstablished(n.data);break;case"chat_session_queue":this.onQueueScreen(n.data);break;case"chat_session_closed":this.onSessionClosed(n.data);break;case"chat_session_left":this.onSessionClosed(n.data);break;case"chat_status_customer":switch(n.data.state){case"online":this.sessionId=void 0,!this.options.cssAutoload||this.cssLoaded?this.onReady():this.socketReady=!0;break;case"offline":this.onError("Zammad Chat: No agent online");break;case"chat_disabled":this.onError("Zammad Chat: Chat is disabled");break;case"no_seats_available":this.onError("Zammad Chat: Too many clients in queue. Clients in queue: "+n.data.queue);break;case"reconnect":this.onReopenSession(n.data)}}},i.prototype.onReady=function(){return this.log.debug("widget ready for use"),t("."+this.options.buttonClass).click(this.open).removeClass(this.inactiveClass),this.options.show?this.show():void 0},i.prototype.onError=function(e){return this.log.debug(e),this.addStatus(e),t("."+this.options.buttonClass).hide(),this.isOpen?(this.disableInput(),this.destroy({remove:!1})):this.destroy({remove:!0})},i.prototype.onReopenSession=function(t){var e,s,n,i,o;if(this.log.debug("old messages",t.session),this.inactiveTimeout.start(),o=sessionStorage.getItem("unfinished_message"),t.agent){for(this.onConnectionEstablished(t),i=t.session,e=0,s=i.length;s>e;e++)n=i[e],this.renderMessage({message:n.content,id:n.id,from:n.created_by_id?"agent":"customer"});o&&this.input.html(o)}return t.position&&this.onQueue(t),this.show(),this.open(),this.scrollToBottom(),o?this.input.focus():void 0},i.prototype.onInput=function(){return this.el.find(".zammad-chat-message--unread").removeClass("zammad-chat-message--unread"),sessionStorage.setItem("unfinished_message",this.input.html()),this.onTyping()},i.prototype.onFocus=function(){var s;return t(e).scrollTop(10),s=t(e).scrollTop()>0,t(e).scrollTop(0),s?this.log.notice("virtual keyboard shown"):void 0},i.prototype.onFocusOut=function(){},i.prototype.onTyping=function(){return this.isTyping&&this.isTyping>new Date((new Date).getTime()-1500)?void 0:(this.isTyping=new Date,this.send("chat_session_typing",{session_id:this.sessionId}),this.inactiveTimeout.start())},i.prototype.onSubmit=function(t){return t.preventDefault(),this.sendMessage()},i.prototype.sendMessage=function(){var t,e;return(t=this.input.html())?(this.inactiveTimeout.start(),sessionStorage.removeItem("unfinished_message"),e=this.view("message")({message:t,from:"customer",id:this._messageCount++,unreadClass:""}),this.maybeAddTimestamp(),this.el.find(".zammad-chat-message--typing").get(0)?(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.input.html(""),this.scrollToBottom(),this.send("chat_session_message",{content:t,id:this._messageCount,session_id:this.sessionId})):void 0},i.prototype.receiveMessage=function(t){return this.inactiveTimeout.start(),this.onAgentTypingEnd(),this.maybeAddTimestamp(),this.renderMessage({message:t.message.content,id:t.id,from:"agent"}),this.scrollToBottom({showHint:!0})},i.prototype.renderMessage=function(t){return this.lastAddedType="message--"+t.from,t.unreadClass=document.hidden?" zammad-chat-message--unread":"",this.el.find(".zammad-chat-body").append(this.view("message")(t))},i.prototype.open=function(){var t;return this.isOpen?void this.log.debug("widget already open, block"):(this.isOpen=!0,this.log.debug("open widget"),this.sessionId||this.showLoader(),this.el.addClass("zammad-chat-is-open"),this.inputInitialized||(this.inputInitialized=!0,this.input.autoGrow({extraLine:!1})),t=this.el.height()-this.el.find(".zammad-chat-header").outerHeight(),this.el.css("bottom",-t),this.sessionId?(this.el.css("bottom",0),this.onOpenAnimationEnd()):(this.el.animate({bottom:0},500,this.onOpenAnimationEnd),this.send("chat_session_init",{url:e.location.href})))},i.prototype.onOpenAnimationEnd=function(){return this.idleTimeout.stop(),this.isFullscreen?this.disableScrollOnRoot():void 0},i.prototype.sessionClose=function(){return this.send("chat_session_close",{session_id:this.sessionId}),this.inactiveTimeout.stop(),this.waitingListTimeout.stop(),sessionStorage.removeItem("unfinished_message"),this.onInitialQueueDelayId&&clearTimeout(this.onInitialQueueDelayId),this.setSessionId(void 0)},i.prototype.toggle=function(t){return this.isOpen?this.close(t):this.open(t)},i.prototype.close=function(t){var e;return this.isOpen?(this.initDelayId&&clearTimeout(this.initDelayId),this.sessionId?(this.log.debug("close widget"),t&&t.stopPropagation(),this.sessionClose(),this.isFullscreen&&this.enableScrollOnRoot(),e=this.el.height()-this.el.find(".zammad-chat-header").outerHeight(),this.el.animate({bottom:-e},500,this.onCloseAnimationEnd)):void this.log.debug("can't close widget without sessionId")):void this.log.debug("can't close widget, it's not open")},i.prototype.onCloseAnimationEnd=function(){return this.el.css("bottom",""),this.el.removeClass("zammad-chat-is-open"),this.showLoader(),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"),this.isOpen=!1,this.io.reconnect()},i.prototype.onWebSocketClose=function(){return this.isOpen?void 0:this.el?(this.el.removeClass("zammad-chat-is-shown"),this.el.removeClass("zammad-chat-is-loaded")):void 0},i.prototype.show=function(){return"offline"!==this.state?(this.el.addClass("zammad-chat-is-loaded"),this.el.addClass("zammad-chat-is-shown")):void 0},i.prototype.disableInput=function(){return this.input.prop("disabled",!0),this.el.find(".zammad-chat-send").prop("disabled",!0)},i.prototype.enableInput=function(){return this.input.prop("disabled",!1),this.el.find(".zammad-chat-send").prop("disabled",!1)},i.prototype.hideModal=function(){return this.el.find(".zammad-chat-modal").html("")},i.prototype.onQueueScreen=function(t){var e;return this.setSessionId(t.session_id),e=function(e){return function(){return e.onQueue(t),e.waitingListTimeout.start()}}(this),this.initialQueueDelay&&!this.onInitialQueueDelayId?void(this.onInitialQueueDelayId=setTimeout(e,this.initialQueueDelay)):(this.onInitialQueueDelayId&&clearTimeout(this.onInitialQueueDelayId),e())},i.prototype.onQueue=function(t){return this.log.notice("onQueue",t.position),this.inQueue=!0,this.el.find(".zammad-chat-modal").html(this.view("waiting")({position:t.position}))},i.prototype.onAgentTypingStart=function(){return this.stopTypingId&&clearTimeout(this.stopTypingId),this.stopTypingId=setTimeout(this.onAgentTypingEnd,3e3),!this.el.find(".zammad-chat-message--typing").get(0)&&(this.maybeAddTimestamp(),this.el.find(".zammad-chat-body").append(this.view("typingIndicator")()),this.isVisible(this.el.find(".zammad-chat-message--typing"),!0))?this.scrollToBottom():void 0},i.prototype.onAgentTypingEnd=function(){return this.el.find(".zammad-chat-message--typing").remove()},i.prototype.onLeaveTemporary=function(){return this.sessionId?this.send("chat_session_leave_temporary",{session_id:this.sessionId}):void 0},i.prototype.maybeAddTimestamp=function(){var t,e,s;return s=Date.now(),!this.lastTimestamp||s-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=s):(this.el.find(".zammad-chat-body").append(this.view("timestamp")({label:t,time:e})),this.lastTimestamp=s,this.lastAddedType="timestamp",this.scrollToBottom())):void 0},i.prototype.updateLastTimestamp=function(t,e){return this.el?this.el.find(".zammad-chat-body").find(".zammad-chat-timestamp").last().replaceWith(this.view("timestamp")({label:t,time:e})):void 0},i.prototype.addStatus=function(t){return this.el?(this.maybeAddTimestamp(),this.el.find(".zammad-chat-body").append(this.view("status")({status:t})),this.scrollToBottom()):void 0},i.prototype.detectScrolledtoBottom=function(){var t;return t=this.el.find(".zammad-chat-body").scrollTop()+this.el.find(".zammad-chat-body").outerHeight(),this.scrolledToBottom=Math.abs(t-this.el.find(".zammad-chat-body").prop("scrollHeight"))<=this.scrollSnapTolerance,this.scrolledToBottom?this.el.find(".zammad-scroll-hint").addClass("is-hidden"):void 0},i.prototype.showScrollHint=function(){return this.el.find(".zammad-scroll-hint").removeClass("is-hidden"),this.el.find(".zammad-chat-body").scrollTop(this.el.find(".zammad-chat-body").scrollTop()+this.el.find(".zammad-scroll-hint").outerHeight())},i.prototype.onScrollHintClick=function(){return this.el.find(".zammad-chat-body").animate({scrollTop:this.el.find(".zammad-chat-body").prop("scrollHeight")},300)},i.prototype.scrollToBottom=function(e){var s;return s=(null!=e?e:{showHint:!1}).showHint,this.scrolledToBottom?this.el.find(".zammad-chat-body").scrollTop(t(".zammad-chat-body").prop("scrollHeight")):s?this.showScrollHint():void 0},i.prototype.destroy=function(t){return null==t&&(t={}),this.log.debug("destroy widget",t),this.setAgentOnlineState("offline"),t.remove&&this.el&&this.el.remove(),this.waitingListTimeout&&this.waitingListTimeout.stop(),this.inactiveTimeout&&this.inactiveTimeout.stop(),this.idleTimeout&&this.idleTimeout.stop(),this.io.close()},i.prototype.reconnect=function(){return this.log.notice("reconnecting"),this.disableInput(),this.lastAddedType="status",this.setAgentOnlineState("connecting"),this.addStatus(this.T("Connection lost"))},i.prototype.onConnectionReestablished=function(){return this.lastAddedType="status",this.setAgentOnlineState("online"),this.addStatus(this.T("Connection re-established"))},i.prototype.onSessionClosed=function(t){return this.addStatus(this.T("Chat closed by %s",t.realname)),this.disableInput(),this.setAgentOnlineState("offline"),this.inactiveTimeout.stop()},i.prototype.setSessionId=function(t){return this.sessionId=t,void 0===t?sessionStorage.removeItem("sessionId"):sessionStorage.setItem("sessionId",t)},i.prototype.onConnectionEstablished=function(t){return this.onInitialQueueDelayId&&clearTimeout(this.onInitialQueueDelayId),this.inQueue=!1,t.agent&&(this.agent=t.agent),t.session_id&&this.setSessionId(t.session_id),this.el.find(".zammad-chat-body").html(""),this.el.find(".zammad-chat-agent").html(this.view("agent")({agent:this.agent})),this.enableInput(),this.hideModal(),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.isFullscreen||this.input.focus(),this.setAgentOnlineState("online"),this.waitingListTimeout.stop(),this.idleTimeout.stop(),this.inactiveTimeout.start()},i.prototype.showCustomerTimeout=function(){var t;return this.el.find(".zammad-chat-modal").html(this.view("customer_timeout")({agent:this.agent.name,delay:this.options.inactiveTimeout})),t=function(){return location.reload()},this.el.find(".js-restart").click(t),this.sessionClose()},i.prototype.showWaitingListTimeout=function(){var t;return this.el.find(".zammad-chat-modal").html(this.view("waiting_list_timeout")({delay:this.options.watingListTimeout})),t=function(){return location.reload()},this.el.find(".js-restart").click(t),this.sessionClose()},i.prototype.showLoader=function(){return this.el.find(".zammad-chat-modal").html(this.view("loader")())},i.prototype.setAgentOnlineState=function(t){var e;return this.state=t,this.el?(e=t.charAt(0).toUpperCase()+t.slice(1),this.el.find(".zammad-chat-agent-status").attr("data-status",t).text(this.T(e))):void 0},i.prototype.detectHost=function(){var t;return t="ws://","https"===l&&(t="wss://"),this.options.host=""+t+h+"/ws"},i.prototype.loadCss=function(){var t,e,s;if(this.options.cssAutoload)return s=this.options.cssUrl,s||(s=this.options.host.replace(/^wss/i,"https").replace(/^ws/i,"http").replace(/\/ws/i,""),s+="/assets/chat/chat.css"),this.log.debug("load css from '"+s+"'"),e="@import url('"+s+"');",t=document.createElement("link"),t.onload=this.onCssLoaded,t.rel="stylesheet",t.href="data:text/css,"+escape(e),document.getElementsByTagName("head")[0].appendChild(t)},i.prototype.onCssLoaded=function(){return this.socketReady?this.onReady():this.cssLoaded=!0},i.prototype.startTimeoutObservers=function(){return this.idleTimeout=new o({logPrefix:"idleTimeout",debug:this.options.debug,timeout:this.options.idleTimeout,timeoutIntervallCheck:this.options.idleTimeoutIntervallCheck,callback:function(t){return function(){return t.log.debug("Idle timeout reached, hide widget",new Date),t.destroy({remove:!0})}}(this)}),this.inactiveTimeout=new o({logPrefix:"inactiveTimeout",debug:this.options.debug,timeout:this.options.inactiveTimeout,timeoutIntervallCheck:this.options.inactiveTimeoutIntervallCheck,callback:function(t){return function(){return t.log.debug("Inactive timeout reached, show timeout screen.",new Date),t.showCustomerTimeout(),t.destroy({remove:!1})}}(this)}),this.waitingListTimeout=new o({logPrefix:"waitingListTimeout",debug:this.options.debug,timeout:this.options.waitingListTimeout,timeoutIntervallCheck:this.options.waitingListTimeoutIntervallCheck,callback:function(t){return function(){return t.log.debug("Waiting list timeout reached, show timeout screen.",new Date),t.showWaitingListTimeout(),t.destroy({remove:!1})}}(this)})},i.prototype.disableScrollOnRoot=function(){return this.rootScrollOffset=this.scrollRoot.scrollTop(),this.scrollRoot.css({overflow:"hidden",position:"fixed"})},i.prototype.enableScrollOnRoot=function(){return this.scrollRoot.scrollTop(this.rootScrollOffset),this.scrollRoot.css({overflow:"",position:""})},i.prototype.isVisible=function(s,n,i,o){var a,r,h,l,d,c,u,p,m,g,f,y,v,b,w,T,z,S,C,I,k,_,O,A,E,x;if(!(s.length<1))if(r=t(e),a=s.length>1?s.eq(0):s,S=a.get(0),x=r.width(),E=r.height(),o=o?o:"both",p=i===!0?S.offsetWidth*S.offsetHeight:!0,"function"==typeof S.getBoundingClientRect){if(z=S.getBoundingClientRect(),C=z.top>=0&&z.top0&&z.bottom<=E,b=z.left>=0&&z.left0&&z.right<=x,I=n?C||u:C&&u,v=n?b||T:b&&T,"both"===o)return p&&I&&v;if("vertical"===o)return p&&I;if("horizontal"===o)return p&&v}else{if(A=r.scrollTop(),k=A+E,_=r.scrollLeft(),O=_+x,w=a.offset(),c=w.top,h=c+a.height(),l=w.left,d=l+a.width(),y=n===!0?h:c,m=n===!0?c:h,g=n===!0?d:l,f=n===!0?l:d,"both"===o)return!!p&&k>=m&&y>=A&&O>=f&&g>=_;if("vertical"===o)return!!p&&k>=m&&y>=A;if("horizontal"===o)return!!p&&O>=f&&g>=_}},i}(s),e.ZammadChat=a}(window.jQuery,window),jQuery.fn.autoGrow=function(t){return this.each(function(){var e=jQuery.extend({extraLine:!0},t),s=function(t){return jQuery(t).after('
'),jQuery(t).next(".autogrow-textarea-mirror")[0]},n=function(t){if(o.innerHTML=String(t.value).replace(/&/g,"&").replace(/"/g,""").replace(/'/g,"'").replace(//g,">").replace(/ /g," ").replace(/\n/g,"
")+(e.extraLine?".
.":""),jQuery(t).height()!=jQuery(o).height()){jQuery(t).height(jQuery(o).height());var s=jQuery(o).height()>a?"":"hidden";jQuery(t).css("overflow",s)}},i=function(){n(this)},o=s(this),a=parseInt(jQuery(this).css("max-height"),10);o.style.display="none",o.style.wordWrap="break-word",o.style.whiteSpace="normal",o.style.padding=jQuery(this).css("paddingTop")+" "+jQuery(this).css("paddingRight")+" "+jQuery(this).css("paddingBottom")+" "+jQuery(this).css("paddingLeft"),o.style.width=jQuery(this).css("width"),o.style.fontFamily=jQuery(this).css("font-family"),o.style.fontSize=jQuery(this).css("font-size"),o.style.lineHeight=jQuery(this).css("line-height"),o.style.letterSpacing=jQuery(this).css("letter-spacing"),o.style.boxSizing=jQuery(this).css("boxSizing"), -this.style.overflow="hidden",this.style.minHeight=this.rows+"em",this.onkeyup=i,this.onfocus=i,n(this)})},window.zammadChatTemplates||(window.zammadChatTemplates={}),window.zammadChatTemplates.chat=function(t){t||(t={});var e,s=[],n=function(t){return t&&t.ecoSafe?t:"undefined"!=typeof t&&null!=t?o(t):""},i=t.safe,o=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},o||(o=t.escape=function(t){return(""+t).replace(/&/g,"&").replace(//g,">").replace(/"/g,""")}),function(){(function(){s.push('
\n
\n
\n \n \n \n \n \n
\n
\n
\n
\n \n '),s.push(this.T(this.title)),s.push('\n
\n
\n
\n \n
\n
\n
\n \n
\n
")}).call(this)}.call(t),t.safe=i,t.escape=o,s.join("")},window.zammadChatTemplates||(window.zammadChatTemplates={}),window.zammadChatTemplates.customer_timeout=function(t){t||(t={});var e,s=[],n=function(t){return t&&t.ecoSafe?t:"undefined"!=typeof t&&null!=t?o(t):""},i=t.safe,o=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},o||(o=t.escape=function(t){return(""+t).replace(/&/g,"&").replace(//g,">").replace(/"/g,""")}),function(){(function(){s.push('
\n '),this.agent?(s.push("\n "),s.push(this.T("Since you didn't respond in the last %s minutes your conversation with %s got closed.",this.delay,this.agent)),s.push("\n ")):(s.push("\n "),s.push(this.T("Since you didn't respond in the last %s minutes your conversation got closed.",this.delay)),s.push("\n ")),s.push('\n
\n
"),s.push(this.T("Start new conversation")),s.push("
\n
")}).call(this)}.call(t),t.safe=i,t.escape=o,s.join("")},window.zammadChatTemplates||(window.zammadChatTemplates={}),window.zammadChatTemplates.loader=function(t){t||(t={});var e,s=[],n=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(){s.push('\n \n \n \n\n'),s.push(this.T("Connecting")),s.push("")}).call(this)}.call(t),t.safe=n,t.escape=i,s.join("")},window.zammadChatTemplates||(window.zammadChatTemplates={}),window.zammadChatTemplates.message=function(t){t||(t={});var e,s=[],n=function(t){return t&&t.ecoSafe?t:"undefined"!=typeof t&&null!=t?o(t):""},i=t.safe,o=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},o||(o=t.escape=function(t){return(""+t).replace(/&/g,"&").replace(//g,">").replace(/"/g,""")}),function(){(function(){s.push('
\n "),s.push(this.message),s.push("\n
")}).call(this)}.call(t),t.safe=i,t.escape=o,s.join("")},window.zammadChatTemplates||(window.zammadChatTemplates={}),window.zammadChatTemplates.status=function(t){t||(t={});var e,s=[],n=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(){s.push('
\n
\n '),s.push(this.status),s.push("\n
\n
")}).call(this)}.call(t),t.safe=n,t.escape=i,s.join("")},window.zammadChatTemplates||(window.zammadChatTemplates={}),window.zammadChatTemplates.timestamp=function(t){t||(t={});var e,s=[],n=function(t){return t&&t.ecoSafe?t:"undefined"!=typeof t&&null!=t?o(t):""},i=t.safe,o=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},o||(o=t.escape=function(t){return(""+t).replace(/&/g,"&").replace(//g,">").replace(/"/g,""")}),function(){(function(){s.push('
'),s.push(n(this.label)),s.push(" "),s.push(n(this.time)),s.push("
")}).call(this)}.call(t),t.safe=i,t.escape=o,s.join("")},window.zammadChatTemplates||(window.zammadChatTemplates={}),window.zammadChatTemplates.typingIndicator=function(t){t||(t={});var e,s=[],n=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(){s.push('
\n \n \n \n \n \n \n \n
')}).call(this)}.call(t),t.safe=n,t.escape=i,s.join("")},window.zammadChatTemplates||(window.zammadChatTemplates={}),window.zammadChatTemplates.waiting=function(t){t||(t={});var e,s=[],n=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(){s.push('
\n \n \n \n \n \n '),s.push(this.T("All colleagues are busy.")),s.push("
\n "),s.push(this.T("You are on waiting list position %s.",this.position)),s.push("\n
")}).call(this)}.call(t),t.safe=n,t.escape=i,s.join("")},window.zammadChatTemplates||(window.zammadChatTemplates={}),window.zammadChatTemplates.waiting_list_timeout=function(t){t||(t={});var e,s=[],n=function(t){return t&&t.ecoSafe?t:"undefined"!=typeof t&&null!=t?o(t):""},i=t.safe,o=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},o||(o=t.escape=function(t){return(""+t).replace(/&/g,"&").replace(//g,">").replace(/"/g,""")}),function(){(function(){s.push('
\n '),s.push(this.T("We are sorry, it takes longer as expected to get an empty slot. Please try again later or send us an email. Thank you!")),s.push('\n
\n
"),s.push(this.T("Start new conversation")),s.push("
\n
")}).call(this)}.call(t),t.safe=i,t.escape=o,s.join("")}; \ No newline at end of file +var bind=function(t,e){return function(){return t.apply(e,arguments)}},slice=[].slice,extend=function(t,e){function s(){this.constructor=t}for(var n in e)hasProp.call(e,n)&&(t[n]=e[n]);return s.prototype=e.prototype,t.prototype=new s,t.__super__=e.prototype,t},hasProp={}.hasOwnProperty;!function(t,e){var s,n,i,o,a,r,l,h,d;return d=document.getElementsByTagName("script"),r=d[d.length-1],l=r.src.match(".*://([^:/]*).*")[1],h=r.src.match("(.*)://[^:/]*.*")[1],s=function(){function e(e){this.options=t.extend({},this.defaults,e),this.log=new i({debug:this.options.debug,logPrefix:this.options.logPrefix||this.logPrefix})}return e.prototype.defaults={debug:!1},e}(),i=function(){function e(e){this.log=bind(this.log,this),this.error=bind(this.error,this),this.notice=bind(this.notice,this),this.debug=bind(this.debug,this),this.options=t.extend({},this.defaults,e)}return e.prototype.defaults={debug:!1},e.prototype.debug=function(){var t;return t=1<=arguments.length?slice.call(arguments,0):[],this.options.debug?this.log("debug",t):void 0},e.prototype.notice=function(){var t;return t=1<=arguments.length?slice.call(arguments,0):[],this.log("notice",t)},e.prototype.error=function(){var t;return t=1<=arguments.length?slice.call(arguments,0):[],this.log("error",t)},e.prototype.log=function(e,s){var n,i,o,a;if(s.unshift("||"),s.unshift(e),s.unshift(this.options.logPrefix),console.log.apply(console,s),this.options.debug){for(a="",n=0,o=s.length;o>n;n++)i=s[n],a+=" ",a+="object"==typeof i?JSON.stringify(i):i&&i.toString?i.toString():i;return t(".js-chatLogDisplay").prepend("
"+a+"
")}},e}(),o=function(t){function e(t){this.stop=bind(this.stop,this),this.start=bind(this.start,this),e.__super__.constructor.call(this,t)}return extend(e,t),e.prototype.timeoutStartedAt=null,e.prototype.logPrefix="timeout",e.prototype.defaults={debug:!1,timeout:4,timeoutIntervallCheck:.5},e.prototype.start=function(){var t,e;return this.stop(),e=new Date,t=function(t){return function(){var s;return s=new Date-new Date(e.getTime()+1e3*t.options.timeout*60),t.log.debug("Timeout check for "+t.options.timeout+" minutes (left "+s/1e3+" sec.)"),0>s?void 0:(t.stop(),t.options.callback())}}(this),this.log.debug("Start timeout in "+this.options.timeout+" minutes"),this.intervallId=setInterval(t,1e3*this.options.timeoutIntervallCheck*60)},e.prototype.stop=function(){return this.intervallId?(this.log.debug("Stop timeout of "+this.options.timeout+" minutes"),clearInterval(this.intervallId)):void 0},e}(s),n=function(t){function s(t){this.ping=bind(this.ping,this),this.send=bind(this.send,this),this.reconnect=bind(this.reconnect,this),this.close=bind(this.close,this),this.connect=bind(this.connect,this),this.set=bind(this.set,this),s.__super__.constructor.call(this,t)}return extend(s,t),s.prototype.logPrefix="io",s.prototype.set=function(t){var e,s,n;s=[];for(e in t)n=t[e],s.push(this.options[e]=n);return s},s.prototype.connect=function(){return this.log.debug("Connecting to "+this.options.host),this.ws=new e.WebSocket(""+this.options.host),this.ws.onopen=function(t){return function(e){return t.log.debug("onOpen",e),t.options.onOpen(e),t.ping()}}(this),this.ws.onmessage=function(t){return function(e){var s,n,i,o;for(o=JSON.parse(e.data),t.log.debug("onMessage",e.data),s=0,n=o.length;n>s;s++)i=o[s],"pong"===i.event&&t.ping();return t.options.onMessage?t.options.onMessage(o):void 0}}(this),this.ws.onclose=function(t){return function(e){if(t.log.debug("close websocket connection",e),t.pingDelayId&&clearTimeout(t.pingDelayId),t.manualClose){if(t.log.debug("manual close, onClose callback"),t.manualClose=!1,t.options.onClose)return t.options.onClose(e)}else if(t.log.debug("error close, onError callback"),t.options.onError)return t.options.onError("Connection lost...")}}(this),this.ws.onerror=function(t){return function(e){return t.log.debug("onError",e),t.options.onError?t.options.onError(e):void 0}}(this)},s.prototype.close=function(){return this.log.debug("close websocket manually"),this.manualClose=!0,this.ws.close()},s.prototype.reconnect=function(){return this.log.debug("reconnect"),this.close(),this.connect()},s.prototype.send=function(t,e){var s;return null==e&&(e={}),this.log.debug("send",t,e),s=JSON.stringify({event:t,data:e}),this.ws.send(s)},s.prototype.ping=function(){var t;return t=function(t){return function(){return t.send("ping")}}(this),this.pingDelayId=setTimeout(t,29e3)},s}(s),a=function(s){function i(s){return this.startTimeoutObservers=bind(this.startTimeoutObservers,this),this.onCssLoaded=bind(this.onCssLoaded,this),this.setAgentOnlineState=bind(this.setAgentOnlineState,this),this.onConnectionEstablished=bind(this.onConnectionEstablished,this),this.setSessionId=bind(this.setSessionId,this),this.onConnectionReestablished=bind(this.onConnectionReestablished,this),this.reconnect=bind(this.reconnect,this),this.destroy=bind(this.destroy,this),this.onScrollHintClick=bind(this.onScrollHintClick,this),this.detectScrolledtoBottom=bind(this.detectScrolledtoBottom,this),this.onLeaveTemporary=bind(this.onLeaveTemporary,this),this.onAgentTypingEnd=bind(this.onAgentTypingEnd,this),this.onAgentTypingStart=bind(this.onAgentTypingStart,this),this.onQueue=bind(this.onQueue,this),this.onQueueScreen=bind(this.onQueueScreen,this),this.onWebSocketClose=bind(this.onWebSocketClose,this),this.onCloseAnimationEnd=bind(this.onCloseAnimationEnd,this),this.close=bind(this.close,this),this.toggle=bind(this.toggle,this),this.sessionClose=bind(this.sessionClose,this),this.onOpenAnimationEnd=bind(this.onOpenAnimationEnd,this),this.open=bind(this.open,this),this.renderMessage=bind(this.renderMessage,this),this.receiveMessage=bind(this.receiveMessage,this),this.onSubmit=bind(this.onSubmit,this),this.onFocus=bind(this.onFocus,this),this.onInput=bind(this.onInput,this),this.onReopenSession=bind(this.onReopenSession,this),this.onError=bind(this.onError,this),this.onWebSocketMessage=bind(this.onWebSocketMessage,this),this.send=bind(this.send,this),this.checkForEnter=bind(this.checkForEnter,this),this.render=bind(this.render,this),this.view=bind(this.view,this),this.T=bind(this.T,this),this.options=t.extend({},this.defaults,s),i.__super__.constructor.call(this,this.options),this.isFullscreen=e.matchMedia&&e.matchMedia("(max-width: 768px)").matches,this.scrollRoot=t(this.getScrollRoot()),t?e.WebSocket&&sessionStorage?this.options.chatId?(this.options.lang||(this.options.lang=t("html").attr("lang")),this.options.lang&&(this.translations[this.options.lang]||(this.log.debug("lang: No "+this.options.lang+" found, try first two letters"),this.options.lang=this.options.lang.replace(/-.+?$/,"")),this.log.debug("lang: "+this.options.lang)),this.options.host||this.detectHost(),this.loadCss(),this.io=new n(this.options),this.io.set({onOpen:this.render,onClose:this.onWebSocketClose,onMessage:this.onWebSocketMessage,onError:this.onError}),void this.io.connect()):(this.state="unsupported",void this.log.error("Chat: need chatId as option!")):(this.state="unsupported",void this.log.notice("Chat: Browser not supported!")):(this.state="unsupported",void this.log.notice("Chat: no jquery found!"))}return extend(i,s),i.prototype.defaults={chatId:void 0,show:!0,target:t("body"),host:"",debug:!1,flat:!1,lang:void 0,cssAutoload:!0,cssUrl:void 0,fontSize:void 0,buttonClass:"open-zammad-chat",inactiveClass:"is-inactive",title:"Chat with us!",scrollHint:"Scrolle nach unten um neue Nachrichten zu sehen",idleTimeout:6,idleTimeoutIntervallCheck:.5,inactiveTimeout:8,inactiveTimeoutIntervallCheck:.5,waitingListTimeout:4,waitingListTimeoutIntervallCheck:.5},i.prototype.logPrefix="chat",i.prototype._messageCount=0,i.prototype.isOpen=!1,i.prototype.blinkOnlineInterval=null,i.prototype.stopBlinOnlineStateTimeout=null,i.prototype.showTimeEveryXMinutes=2,i.prototype.lastTimestamp=null,i.prototype.lastAddedType=null,i.prototype.inputTimeout=null,i.prototype.isTyping=!1,i.prototype.state="offline",i.prototype.initialQueueDelay=1e4,i.prototype.translations={de:{"Chat with us!":"Chatte mit uns!","Scroll down to see new messages":"Scrolle nach unten um neue Nachrichten zu sehen",Online:"Online",Online:"Online",Offline:"Offline",Connecting:"Verbinden","Connection re-established":"Verbindung wiederhergestellt",Today:"Heute",Send:"Senden","Compose your message...":"Ihre Nachricht...","All colleagues are busy.":"Alle Kollegen sind belegt.","You are on waiting list position %s.":"Sie sind in der Warteliste an der Position %s.","Start new conversation":"Neue Konversation starten","Since you didn't respond in the last %s minutes your conversation with %s got closed.":"Da Sie in den letzten %s Minuten nichts geschrieben haben wurde Ihre Konversation mit %s geschlossen.","Since you didn't respond in the last %s minutes your conversation got closed.":"Da Sie in den letzten %s Minuten nichts geschrieben haben wurde Ihre Konversation geschlossen.","We are sorry, it takes longer as expected to get an empty slot. Please try again later or send us an email. Thank you!":"Es tut uns leid, es dauert länger als erwartet, um einen freien Platz zu erhalten. Bitte versuchen Sie es zu einem späteren Zeitpunkt noch einmal oder schicken Sie uns eine E-Mail. Vielen Dank!"},fr:{"Chat with us!":"Chattez avec nous!","Scroll down to see new messages":"Faites défiler pour lire les nouveaux messages",Online:"En-ligne",Online:"En-ligne",Offline:"Hors-ligne",Connecting:"Connexion en cours","Connection re-established":"Connexion rétablie",Today:"Aujourdhui",Send:"Envoyer","Compose your message...":"Composez votre message...","All colleagues are busy.":"Tous les collègues sont actuellement occupés.","You are on waiting list position %s.":"Vous êtes actuellement en %s position dans la file d'attente.","Start new conversation":"Démarrer une nouvelle conversation","Since you didn't respond in the last %s minutes your conversation with %s got closed.":"Si vous ne répondez pas dans les %s minutes, votre conversation avec %s va être fermée.","Since you didn't respond in the last %s minutes your conversation got closed.":"Si vous ne répondez pas dans les %s minutes, votre conversation va être fermée.","We are sorry, it takes longer as expected to get an empty slot. Please try again later or send us an email. Thank you!":"Nous sommes désolés, il faut plus de temps que prévu pour obtenir un emplacement vide. Veuillez réessayer ultérieurement ou nous envoyer un courriel. Je vous remercie!"},"zh-cn":{"Chat with us!":"发起即时对话!","Scroll down to see new messages":"向下滚动以查看新消息",Online:"在线",Online:"在线",Offline:"离线",Connecting:"连接中","Connection re-established":"正在重新建立连接",Today:"今天",Send:"发送","Compose your message...":"正在输入信息...","All colleagues are busy.":"所有工作人员都在忙碌中.","You are on waiting list position %s.":"您目前的等候位置是第 %s 位.","Start new conversation":"开始新的会话","Since you didn't respond in the last %s minutes your conversation with %s got closed.":"由于您超过 %s 分钟没有回复, 您与 %s 的会话已被关闭.","Since you didn't respond in the last %s minutes your conversation got closed.":"由于您超过 %s 分钟没有任何回复, 该对话已被关闭.","We are sorry, it takes longer as expected to get an empty slot. Please try again later or send us an email. Thank you!":"非常抱歉, 目前需要等候更长的时间才能接入对话, 请稍后重试或向我们发送电子邮件. 谢谢!"},"zh-tw":{"Chat with us!":"開始即時對话!","Scroll down to see new messages":"向下滑動以查看新訊息",Online:"線上",Online:"線上",Offline:"离线",Connecting:"連線中","Connection re-established":"正在重新建立連線中",Today:"今天",Send:"發送","Compose your message...":"正在輸入訊息...","All colleagues are busy.":"所有服務人員都在忙碌中.","You are on waiting list position %s.":"你目前的等候位置是第 %s 順位.","Start new conversation":"開始新的對話","Since you didn't respond in the last %s minutes your conversation with %s got closed.":"由於你超過 %s 分鐘沒有回應, 你與 %s 的對話已被關閉.","Since you didn't respond in the last %s minutes your conversation got closed.":"由於你超過 %s 分鐘沒有任何回應, 該對話已被關閉.","We are sorry, it takes longer as expected to get an empty slot. Please try again later or send us an email. Thank you!":"非常抱歉, 當前需要等候更長的時間方可排入對話程序, 請稍後重試或向我們寄送電子郵件. 謝謝!"}},i.prototype.sessionId=void 0,i.prototype.scrolledToBottom=!0,i.prototype.scrollSnapTolerance=10,i.prototype.T=function(){var t,e,s,n,i,o;if(i=arguments[0],s=2<=arguments.length?slice.call(arguments,1):[],this.options.lang&&"en"!==this.options.lang&&(this.translations[this.options.lang]?(o=this.translations[this.options.lang],o[i]||this.log.notice("Translation needed for '"+i+"'"),i=o[i]||i):this.log.notice("Translation '"+this.options.lang+"' needed!")),s)for(t=0,n=s.length;n>t;t++)e=s[t],i=i.replace(/%s/,e);return i},i.prototype.view=function(t){return function(s){return function(n){return n||(n={}),n.T=s.T,n.background=s.options.background,n.flat=s.options.flat,n.fontSize=s.options.fontSize,e.zammadChatTemplates[t](n)}}(this)},i.prototype.getScrollRoot=function(){var t,e,s;return"scrollingElement"in document?document.scrollingElement:(e=document.documentElement,s=e.scrollTop,e.scrollTop=s+1,t=e.scrollTop,e.scrollTop=s,t>s?e:document.body)},i.prototype.render=function(){return this.el&&t(".zammad-chat").get(0)||this.renderBase(),t("."+this.options.buttonClass).addClass(this.inactiveClass),this.setAgentOnlineState("online"),this.log.debug("widget rendered"),this.startTimeoutObservers(),this.idleTimeout.start(),this.sessionId=sessionStorage.getItem("sessionId"),this.send("chat_status_customer",{session_id:this.sessionId,url:e.location.href})},i.prototype.renderBase=function(){return this.el=t(this.view("chat")({title:this.options.title,scrollHint:this.options.scrollHint})),this.options.target.append(this.el),this.input=this.el.find(".zammad-chat-input"),this.el.find(".js-chat-open").click(this.open),this.el.find(".js-chat-toggle").click(this.toggle),this.el.find(".zammad-chat-controls").on("submit",this.onSubmit),this.el.find(".zammad-chat-body").on("scroll",this.detectScrolledtoBottom),this.el.find(".zammad-scroll-hint").click(this.onScrollHintClick),this.input.on({keydown:this.checkForEnter,input:this.onInput}),t(e).on("beforeunload",function(t){return function(){return t.onLeaveTemporary()}}(this)),t(e).bind("hashchange",function(t){return function(){return t.isOpen?void(t.sessionId&&t.send("chat_session_notice",{session_id:t.sessionId,message:e.location.href})):t.idleTimeout.start()}}(this)),this.isFullscreen?this.input.on({focus:this.onFocus,focusout:this.onFocusOut}):void 0},i.prototype.checkForEnter=function(t){return t.shiftKey||13!==t.keyCode?void 0:(t.preventDefault(),this.sendMessage())},i.prototype.send=function(t,e){return null==e&&(e={}),e.chat_id=this.options.chatId,this.io.send(t,e)},i.prototype.onWebSocketMessage=function(t){var e,s,n;for(e=0,s=t.length;s>e;e++)switch(n=t[e],this.log.debug("ws:onmessage",n),n.event){case"chat_error":this.log.notice(n.data),n.data&&"chat_disabled"===n.data.state&&this.destroy({remove:!0});break;case"chat_session_message":if(n.data.self_written)return;this.receiveMessage(n.data);break;case"chat_session_typing":if(n.data.self_written)return;this.onAgentTypingStart();break;case"chat_session_start":this.onConnectionEstablished(n.data);break;case"chat_session_queue":this.onQueueScreen(n.data);break;case"chat_session_closed":this.onSessionClosed(n.data);break;case"chat_session_left":this.onSessionClosed(n.data);break;case"chat_status_customer":switch(n.data.state){case"online":this.sessionId=void 0,!this.options.cssAutoload||this.cssLoaded?this.onReady():this.socketReady=!0;break;case"offline":this.onError("Zammad Chat: No agent online");break;case"chat_disabled":this.onError("Zammad Chat: Chat is disabled");break;case"no_seats_available":this.onError("Zammad Chat: Too many clients in queue. Clients in queue: "+n.data.queue);break;case"reconnect":this.onReopenSession(n.data)}}},i.prototype.onReady=function(){return this.log.debug("widget ready for use"),t("."+this.options.buttonClass).click(this.open).removeClass(this.inactiveClass),this.options.show?this.show():void 0},i.prototype.onError=function(e){return this.log.debug(e),this.addStatus(e),t("."+this.options.buttonClass).hide(),this.isOpen?(this.disableInput(),this.destroy({remove:!1})):this.destroy({remove:!0})},i.prototype.onReopenSession=function(t){var e,s,n,i,o;if(this.log.debug("old messages",t.session),this.inactiveTimeout.start(),o=sessionStorage.getItem("unfinished_message"),t.agent){for(this.onConnectionEstablished(t),i=t.session,e=0,s=i.length;s>e;e++)n=i[e],this.renderMessage({message:n.content,id:n.id,from:n.created_by_id?"agent":"customer"});o&&this.input.html(o)}return t.position&&this.onQueue(t),this.show(),this.open(),this.scrollToBottom(),o?this.input.focus():void 0},i.prototype.onInput=function(){return this.el.find(".zammad-chat-message--unread").removeClass("zammad-chat-message--unread"),sessionStorage.setItem("unfinished_message",this.input.html()),this.onTyping()},i.prototype.onFocus=function(){var s;return t(e).scrollTop(10),s=t(e).scrollTop()>0,t(e).scrollTop(0),s?this.log.notice("virtual keyboard shown"):void 0},i.prototype.onFocusOut=function(){},i.prototype.onTyping=function(){return this.isTyping&&this.isTyping>new Date((new Date).getTime()-1500)?void 0:(this.isTyping=new Date,this.send("chat_session_typing",{session_id:this.sessionId}),this.inactiveTimeout.start())},i.prototype.onSubmit=function(t){return t.preventDefault(),this.sendMessage()},i.prototype.sendMessage=function(){var t,e;return(t=this.input.html())?(this.inactiveTimeout.start(),sessionStorage.removeItem("unfinished_message"),e=this.view("message")({message:t,from:"customer",id:this._messageCount++,unreadClass:""}),this.maybeAddTimestamp(),this.el.find(".zammad-chat-message--typing").get(0)?(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.input.html(""),this.scrollToBottom(),this.send("chat_session_message",{content:t,id:this._messageCount,session_id:this.sessionId})):void 0},i.prototype.receiveMessage=function(t){return this.inactiveTimeout.start(),this.onAgentTypingEnd(),this.maybeAddTimestamp(),this.renderMessage({message:t.message.content,id:t.id,from:"agent"}),this.scrollToBottom({showHint:!0})},i.prototype.renderMessage=function(t){return this.lastAddedType="message--"+t.from,t.unreadClass=document.hidden?" zammad-chat-message--unread":"",this.el.find(".zammad-chat-body").append(this.view("message")(t))},i.prototype.open=function(){var t;return this.isOpen?void this.log.debug("widget already open, block"):(this.isOpen=!0,this.log.debug("open widget"),this.sessionId||this.showLoader(),this.el.addClass("zammad-chat-is-open"),t=this.el.height()-this.el.find(".zammad-chat-header").outerHeight(),this.el.css("bottom",-t),this.sessionId?(this.el.css("bottom",0),this.onOpenAnimationEnd()):(this.el.animate({bottom:0},500,this.onOpenAnimationEnd),this.send("chat_session_init",{url:e.location.href})))},i.prototype.onOpenAnimationEnd=function(){return this.idleTimeout.stop(),this.isFullscreen?this.disableScrollOnRoot():void 0},i.prototype.sessionClose=function(){return this.send("chat_session_close",{session_id:this.sessionId}),this.inactiveTimeout.stop(),this.waitingListTimeout.stop(),sessionStorage.removeItem("unfinished_message"),this.onInitialQueueDelayId&&clearTimeout(this.onInitialQueueDelayId),this.setSessionId(void 0)},i.prototype.toggle=function(t){return this.isOpen?this.close(t):this.open(t)},i.prototype.close=function(t){var e;return this.isOpen?(this.initDelayId&&clearTimeout(this.initDelayId),this.sessionId?(this.log.debug("close widget"),t&&t.stopPropagation(),this.sessionClose(),this.isFullscreen&&this.enableScrollOnRoot(),e=this.el.height()-this.el.find(".zammad-chat-header").outerHeight(),this.el.animate({bottom:-e},500,this.onCloseAnimationEnd)):void this.log.debug("can't close widget without sessionId")):void this.log.debug("can't close widget, it's not open")},i.prototype.onCloseAnimationEnd=function(){return this.el.css("bottom",""),this.el.removeClass("zammad-chat-is-open"),this.showLoader(),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"),this.isOpen=!1,this.io.reconnect()},i.prototype.onWebSocketClose=function(){return this.isOpen?void 0:this.el?(this.el.removeClass("zammad-chat-is-shown"),this.el.removeClass("zammad-chat-is-loaded")):void 0},i.prototype.show=function(){return"offline"!==this.state?(this.el.addClass("zammad-chat-is-loaded"),this.el.addClass("zammad-chat-is-shown")):void 0},i.prototype.disableInput=function(){return this.input.prop("disabled",!0),this.el.find(".zammad-chat-send").prop("disabled",!0)},i.prototype.enableInput=function(){return this.input.prop("disabled",!1),this.el.find(".zammad-chat-send").prop("disabled",!1)},i.prototype.hideModal=function(){return this.el.find(".zammad-chat-modal").html("")},i.prototype.onQueueScreen=function(t){var e;return this.setSessionId(t.session_id),e=function(e){return function(){return e.onQueue(t),e.waitingListTimeout.start()}}(this),this.initialQueueDelay&&!this.onInitialQueueDelayId?void(this.onInitialQueueDelayId=setTimeout(e,this.initialQueueDelay)):(this.onInitialQueueDelayId&&clearTimeout(this.onInitialQueueDelayId),e())},i.prototype.onQueue=function(t){return this.log.notice("onQueue",t.position),this.inQueue=!0,this.el.find(".zammad-chat-modal").html(this.view("waiting")({position:t.position}))},i.prototype.onAgentTypingStart=function(){return this.stopTypingId&&clearTimeout(this.stopTypingId),this.stopTypingId=setTimeout(this.onAgentTypingEnd,3e3),!this.el.find(".zammad-chat-message--typing").get(0)&&(this.maybeAddTimestamp(),this.el.find(".zammad-chat-body").append(this.view("typingIndicator")()),this.isVisible(this.el.find(".zammad-chat-message--typing"),!0))?this.scrollToBottom():void 0},i.prototype.onAgentTypingEnd=function(){return this.el.find(".zammad-chat-message--typing").remove()},i.prototype.onLeaveTemporary=function(){return this.sessionId?this.send("chat_session_leave_temporary",{session_id:this.sessionId}):void 0},i.prototype.maybeAddTimestamp=function(){var t,e,s;return s=Date.now(),!this.lastTimestamp||s-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=s):(this.el.find(".zammad-chat-body").append(this.view("timestamp")({label:t,time:e})),this.lastTimestamp=s,this.lastAddedType="timestamp",this.scrollToBottom())):void 0},i.prototype.updateLastTimestamp=function(t,e){return this.el?this.el.find(".zammad-chat-body").find(".zammad-chat-timestamp").last().replaceWith(this.view("timestamp")({label:t,time:e})):void 0},i.prototype.addStatus=function(t){return this.el?(this.maybeAddTimestamp(),this.el.find(".zammad-chat-body").append(this.view("status")({status:t})),this.scrollToBottom()):void 0},i.prototype.detectScrolledtoBottom=function(){var t;return t=this.el.find(".zammad-chat-body").scrollTop()+this.el.find(".zammad-chat-body").outerHeight(),this.scrolledToBottom=Math.abs(t-this.el.find(".zammad-chat-body").prop("scrollHeight"))<=this.scrollSnapTolerance,this.scrolledToBottom?this.el.find(".zammad-scroll-hint").addClass("is-hidden"):void 0},i.prototype.showScrollHint=function(){return this.el.find(".zammad-scroll-hint").removeClass("is-hidden"),this.el.find(".zammad-chat-body").scrollTop(this.el.find(".zammad-chat-body").scrollTop()+this.el.find(".zammad-scroll-hint").outerHeight())},i.prototype.onScrollHintClick=function(){return this.el.find(".zammad-chat-body").animate({scrollTop:this.el.find(".zammad-chat-body").prop("scrollHeight")},300)},i.prototype.scrollToBottom=function(e){var s;return s=(null!=e?e:{showHint:!1}).showHint,this.scrolledToBottom?this.el.find(".zammad-chat-body").scrollTop(t(".zammad-chat-body").prop("scrollHeight")):s?this.showScrollHint():void 0},i.prototype.destroy=function(t){return null==t&&(t={}),this.log.debug("destroy widget",t),this.setAgentOnlineState("offline"),t.remove&&this.el&&this.el.remove(),this.waitingListTimeout&&this.waitingListTimeout.stop(),this.inactiveTimeout&&this.inactiveTimeout.stop(),this.idleTimeout&&this.idleTimeout.stop(),this.io.close()},i.prototype.reconnect=function(){return this.log.notice("reconnecting"),this.disableInput(),this.lastAddedType="status",this.setAgentOnlineState("connecting"),this.addStatus(this.T("Connection lost"))},i.prototype.onConnectionReestablished=function(){return this.lastAddedType="status",this.setAgentOnlineState("online"),this.addStatus(this.T("Connection re-established"))},i.prototype.onSessionClosed=function(t){return this.addStatus(this.T("Chat closed by %s",t.realname)),this.disableInput(),this.setAgentOnlineState("offline"),this.inactiveTimeout.stop()},i.prototype.setSessionId=function(t){return this.sessionId=t,void 0===t?sessionStorage.removeItem("sessionId"):sessionStorage.setItem("sessionId",t)},i.prototype.onConnectionEstablished=function(t){return this.onInitialQueueDelayId&&clearTimeout(this.onInitialQueueDelayId),this.inQueue=!1,t.agent&&(this.agent=t.agent),t.session_id&&this.setSessionId(t.session_id),this.el.find(".zammad-chat-body").html(""),this.el.find(".zammad-chat-agent").html(this.view("agent")({agent:this.agent})),this.enableInput(),this.hideModal(),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.isFullscreen||this.input.focus(),this.setAgentOnlineState("online"),this.waitingListTimeout.stop(),this.idleTimeout.stop(),this.inactiveTimeout.start()},i.prototype.showCustomerTimeout=function(){var t;return this.el.find(".zammad-chat-modal").html(this.view("customer_timeout")({agent:this.agent.name,delay:this.options.inactiveTimeout})),t=function(){return location.reload()},this.el.find(".js-restart").click(t),this.sessionClose()},i.prototype.showWaitingListTimeout=function(){var t;return this.el.find(".zammad-chat-modal").html(this.view("waiting_list_timeout")({delay:this.options.watingListTimeout})),t=function(){return location.reload()},this.el.find(".js-restart").click(t),this.sessionClose()},i.prototype.showLoader=function(){return this.el.find(".zammad-chat-modal").html(this.view("loader")())},i.prototype.setAgentOnlineState=function(t){var e;return this.state=t,this.el?(e=t.charAt(0).toUpperCase()+t.slice(1),this.el.find(".zammad-chat-agent-status").attr("data-status",t).text(this.T(e))):void 0},i.prototype.detectHost=function(){var t;return t="ws://","https"===h&&(t="wss://"),this.options.host=""+t+l+"/ws"},i.prototype.loadCss=function(){var t,e,s;if(this.options.cssAutoload)return s=this.options.cssUrl,s||(s=this.options.host.replace(/^wss/i,"https").replace(/^ws/i,"http").replace(/\/ws/i,""),s+="/assets/chat/chat.css"),this.log.debug("load css from '"+s+"'"),e="@import url('"+s+"');",t=document.createElement("link"),t.onload=this.onCssLoaded,t.rel="stylesheet",t.href="data:text/css,"+escape(e),document.getElementsByTagName("head")[0].appendChild(t)},i.prototype.onCssLoaded=function(){return this.socketReady?this.onReady():this.cssLoaded=!0},i.prototype.startTimeoutObservers=function(){return this.idleTimeout=new o({logPrefix:"idleTimeout",debug:this.options.debug,timeout:this.options.idleTimeout,timeoutIntervallCheck:this.options.idleTimeoutIntervallCheck,callback:function(t){return function(){return t.log.debug("Idle timeout reached, hide widget",new Date),t.destroy({remove:!0})}}(this)}),this.inactiveTimeout=new o({logPrefix:"inactiveTimeout",debug:this.options.debug,timeout:this.options.inactiveTimeout,timeoutIntervallCheck:this.options.inactiveTimeoutIntervallCheck,callback:function(t){return function(){return t.log.debug("Inactive timeout reached, show timeout screen.",new Date),t.showCustomerTimeout(),t.destroy({remove:!1})}}(this)}),this.waitingListTimeout=new o({logPrefix:"waitingListTimeout",debug:this.options.debug,timeout:this.options.waitingListTimeout,timeoutIntervallCheck:this.options.waitingListTimeoutIntervallCheck,callback:function(t){return function(){return t.log.debug("Waiting list timeout reached, show timeout screen.",new Date),t.showWaitingListTimeout(),t.destroy({remove:!1})}}(this)})},i.prototype.disableScrollOnRoot=function(){return this.rootScrollOffset=this.scrollRoot.scrollTop(),this.scrollRoot.css({overflow:"hidden",position:"fixed"})},i.prototype.enableScrollOnRoot=function(){return this.scrollRoot.scrollTop(this.rootScrollOffset),this.scrollRoot.css({overflow:"",position:""})},i.prototype.isVisible=function(s,n,i,o){var a,r,l,h,d,c,u,p,m,g,f,y,v,b,w,T,z,C,S,I,k,_,O,A,E,L;if(!(s.length<1))if(r=t(e),a=s.length>1?s.eq(0):s,C=a.get(0),L=r.width(),E=r.height(),o=o?o:"both",p=i===!0?C.offsetWidth*C.offsetHeight:!0,"function"==typeof C.getBoundingClientRect){if(z=C.getBoundingClientRect(),S=z.top>=0&&z.top0&&z.bottom<=E,b=z.left>=0&&z.left0&&z.right<=L,I=n?S||u:S&&u,v=n?b||T:b&&T,"both"===o)return p&&I&&v;if("vertical"===o)return p&&I;if("horizontal"===o)return p&&v}else{if(A=r.scrollTop(),k=A+E,_=r.scrollLeft(),O=_+L,w=a.offset(),c=w.top,l=c+a.height(),h=w.left,d=h+a.width(),y=n===!0?l:c,m=n===!0?c:l,g=n===!0?d:h,f=n===!0?h:d,"both"===o)return!!p&&k>=m&&y>=A&&O>=f&&g>=_;if("vertical"===o)return!!p&&k>=m&&y>=A;if("horizontal"===o)return!!p&&O>=f&&g>=_}},i}(s),e.ZammadChat=a}(window.jQuery,window),window.zammadChatTemplates||(window.zammadChatTemplates={}),window.zammadChatTemplates.agent=function(t){t||(t={});var e,s=[],n=function(t){return t&&t.ecoSafe?t:"undefined"!=typeof t&&null!=t?o(t):""},i=t.safe,o=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},o||(o=t.escape=function(t){return(""+t).replace(/&/g,"&").replace(//g,">").replace(/"/g,""")}),function(){(function(){this.agent.avatar&&(s.push('\n\n')),s.push('\n\n '),s.push(n(this.agent.name)),s.push("\n")}).call(this)}.call(t),t.safe=i,t.escape=o,s.join("")},window.zammadChatTemplates||(window.zammadChatTemplates={}),window.zammadChatTemplates.chat=function(t){t||(t={});var e,s=[],n=function(t){return t&&t.ecoSafe?t:"undefined"!=typeof t&&null!=t?o(t):""},i=t.safe,o=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},o||(o=t.escape=function(t){return(""+t).replace(/&/g,"&").replace(//g,">").replace(/"/g,""")}),function(){(function(){s.push('
\n
\n
\n \n \n \n \n \n
\n
\n
\n
\n \n '), +s.push(this.T(this.title)),s.push('\n
\n
\n
\n \n
\n
\n
\n \n
\n
")}).call(this)}.call(t),t.safe=i,t.escape=o,s.join("")},window.zammadChatTemplates||(window.zammadChatTemplates={}),window.zammadChatTemplates.customer_timeout=function(t){t||(t={});var e,s=[],n=function(t){return t&&t.ecoSafe?t:"undefined"!=typeof t&&null!=t?o(t):""},i=t.safe,o=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},o||(o=t.escape=function(t){return(""+t).replace(/&/g,"&").replace(//g,">").replace(/"/g,""")}),function(){(function(){s.push('
\n '),this.agent?(s.push("\n "),s.push(this.T("Since you didn't respond in the last %s minutes your conversation with %s got closed.",this.delay,this.agent)),s.push("\n ")):(s.push("\n "),s.push(this.T("Since you didn't respond in the last %s minutes your conversation got closed.",this.delay)),s.push("\n ")),s.push('\n
\n
"),s.push(this.T("Start new conversation")),s.push("
\n
")}).call(this)}.call(t),t.safe=i,t.escape=o,s.join("")},window.zammadChatTemplates||(window.zammadChatTemplates={}),window.zammadChatTemplates.loader=function(t){t||(t={});var e,s=[],n=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(){s.push('\n \n \n \n\n'),s.push(this.T("Connecting")),s.push("")}).call(this)}.call(t),t.safe=n,t.escape=i,s.join("")},window.zammadChatTemplates||(window.zammadChatTemplates={}),window.zammadChatTemplates.message=function(t){t||(t={});var e,s=[],n=function(t){return t&&t.ecoSafe?t:"undefined"!=typeof t&&null!=t?o(t):""},i=t.safe,o=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},o||(o=t.escape=function(t){return(""+t).replace(/&/g,"&").replace(//g,">").replace(/"/g,""")}),function(){(function(){s.push('
\n "),s.push(this.message),s.push("\n
")}).call(this)}.call(t),t.safe=i,t.escape=o,s.join("")},window.zammadChatTemplates||(window.zammadChatTemplates={}),window.zammadChatTemplates.status=function(t){t||(t={});var e,s=[],n=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(){s.push('
\n
\n '),s.push(this.status),s.push("\n
\n
")}).call(this)}.call(t),t.safe=n,t.escape=i,s.join("")},window.zammadChatTemplates||(window.zammadChatTemplates={}),window.zammadChatTemplates.timestamp=function(t){t||(t={});var e,s=[],n=function(t){return t&&t.ecoSafe?t:"undefined"!=typeof t&&null!=t?o(t):""},i=t.safe,o=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},o||(o=t.escape=function(t){return(""+t).replace(/&/g,"&").replace(//g,">").replace(/"/g,""")}),function(){(function(){s.push('
'),s.push(n(this.label)),s.push(" "),s.push(n(this.time)),s.push("
")}).call(this)}.call(t),t.safe=i,t.escape=o,s.join("")},window.zammadChatTemplates||(window.zammadChatTemplates={}),window.zammadChatTemplates.typingIndicator=function(t){t||(t={});var e,s=[],n=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(){s.push('
\n \n \n \n \n \n \n \n
')}).call(this)}.call(t),t.safe=n,t.escape=i,s.join("")},window.zammadChatTemplates||(window.zammadChatTemplates={}),window.zammadChatTemplates.waiting=function(t){t||(t={});var e,s=[],n=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(){s.push('
\n \n \n \n \n \n '),s.push(this.T("All colleagues are busy.")),s.push("
\n "),s.push(this.T("You are on waiting list position %s.",this.position)),s.push("\n
")}).call(this)}.call(t),t.safe=n,t.escape=i,s.join("")},window.zammadChatTemplates||(window.zammadChatTemplates={}),window.zammadChatTemplates.waiting_list_timeout=function(t){t||(t={});var e,s=[],n=function(t){return t&&t.ecoSafe?t:"undefined"!=typeof t&&null!=t?o(t):""},i=t.safe,o=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},o||(o=t.escape=function(t){return(""+t).replace(/&/g,"&").replace(//g,">").replace(/"/g,""")}),function(){(function(){s.push('
\n '),s.push(this.T("We are sorry, it takes longer as expected to get an empty slot. Please try again later or send us an email. Thank you!")),s.push('\n
\n
"),s.push(this.T("Start new conversation")),s.push("
\n
")}).call(this)}.call(t),t.safe=i,t.escape=o,s.join("")}; \ No newline at end of file diff --git a/public/assets/chat/chat.scss b/public/assets/chat/chat.scss index 1cec7cef1..579ebce53 100644 --- a/public/assets/chat/chat.scss +++ b/public/assets/chat/chat.scss @@ -329,7 +329,7 @@ .zammad-chat-controls { overflow: hidden; display: none; - align-items: flex-start; + align-items: flex-end; border-top: 1px solid hsl(0,0%,93%); padding: 0; margin: 0; @@ -349,21 +349,19 @@ margin: 0; padding: 1em 2em; float: left; - width: auto; - height: auto; max-height: 6em; - min-height: 1.4em !important; + min-height: 1.4em; font-family: inherit; line-height: 1.4em; font-size: inherit; appearance: none; - border: none !important; + border: none; background: none; - box-shadow: none !important; + box-shadow: none ; box-sizing: content-box; outline: none; - resize: none; flex: 1; + overflow: auto; } .zammad-chat-input::-webkit-input-placeholder { @@ -378,7 +376,7 @@ background: hsl(203,67%,53%); color: white; padding: 0.5em 1.2em; - margin: 0.5em 1em 0.5em; + margin: 0.63em 1em; cursor: pointer; border: none; border-radius: 1.5em; diff --git a/public/assets/chat/gulpfile.js b/public/assets/chat/gulpfile.js index 60372ab40..b73b6e9ea 100644 --- a/public/assets/chat/gulpfile.js +++ b/public/assets/chat/gulpfile.js @@ -29,9 +29,7 @@ gulp.task('js', function(){ .pipe(plumber()) .pipe(coffee({bare: true}).on('error', gutil.log)); - var autoGrow = gulp.src('jquery.autoGrow.js'); - - return merge(templates, js, autoGrow) + return merge(templates, js) .pipe(concat('chat.js')) .pipe(gulp.dest('./')) .pipe(uglify()) diff --git a/public/assets/chat/jquery.autoGrow.js b/public/assets/chat/jquery.autoGrow.js deleted file mode 100644 index cda824c42..000000000 --- a/public/assets/chat/jquery.autoGrow.js +++ /dev/null @@ -1,92 +0,0 @@ -/*! - * ---------------------------------------------------------------------------- - * "THE BEER-WARE LICENSE" (Revision 42): - * wrote this file. As long as you retain this notice you - * can do whatever you want with this stuff. If we meet some day, and you think - * this stuff is worth it, you can buy me a beer in return. Jevin O. Sewaruth - * ---------------------------------------------------------------------------- - * - * Autogrow Textarea Plugin Version v3.0 - * http://www.technoreply.com/autogrow-textarea-plugin-3-0 - * - * THIS PLUGIN IS DELIVERD ON A PAY WHAT YOU WHANT BASIS. IF THE PLUGIN WAS USEFUL TO YOU, PLEASE CONSIDER BUYING THE PLUGIN HERE : - * https://sites.fastspring.com/technoreply/instant/autogrowtextareaplugin - * - * Date: October 15, 2012 - * - * Zammad modification: - * - remove overflow:hidden when maximum height is reached - * - mirror box-sizing - * - */ - -jQuery.fn.autoGrow = function(options) { - return this.each(function() { - var settings = jQuery.extend({ - extraLine: true, - }, options); - - var createMirror = function(textarea) { - jQuery(textarea).after('
'); - return jQuery(textarea).next('.autogrow-textarea-mirror')[0]; - } - - var sendContentToMirror = function (textarea) { - mirror.innerHTML = String(textarea.value) - .replace(/&/g, '&') - .replace(/"/g, '"') - .replace(/'/g, ''') - .replace(//g, '>') - .replace(/ /g, ' ') - .replace(/\n/g, '
') + - (settings.extraLine? '.
.' : '') - ; - - if (jQuery(textarea).height() != jQuery(mirror).height()) { - jQuery(textarea).height(jQuery(mirror).height()); - - var overflow = jQuery(mirror).height() > maxHeight ? '' : 'hidden'; - jQuery(textarea).css('overflow', overflow); - } - } - - var growTextarea = function () { - sendContentToMirror(this); - } - - // Create a mirror - var mirror = createMirror(this); - - // Store max-height - var maxHeight = parseInt(jQuery(this).css('max-height'), 10); - - // Style the mirror - mirror.style.display = 'none'; - mirror.style.wordWrap = 'break-word'; - mirror.style.whiteSpace = 'normal'; - mirror.style.padding = jQuery(this).css('paddingTop') + ' ' + - jQuery(this).css('paddingRight') + ' ' + - jQuery(this).css('paddingBottom') + ' ' + - jQuery(this).css('paddingLeft'); - - mirror.style.width = jQuery(this).css('width'); - mirror.style.fontFamily = jQuery(this).css('font-family'); - mirror.style.fontSize = jQuery(this).css('font-size'); - mirror.style.lineHeight = jQuery(this).css('line-height'); - mirror.style.letterSpacing = jQuery(this).css('letter-spacing'); - mirror.style.boxSizing = jQuery(this).css('boxSizing'); - - // Style the textarea - this.style.overflow = "hidden"; - this.style.minHeight = this.rows+"em"; - - // Bind the textarea's event - this.onkeyup = growTextarea; - this.onfocus = growTextarea; - - // Fire the event for text already present - sendContentToMirror(this); - - }); -}; \ No newline at end of file From 5bfaab8af958cce59cf68983e69f05c359f2dc39 Mon Sep 17 00:00:00 2001 From: Martin Edenhofer Date: Fri, 14 Jul 2017 16:27:25 +0200 Subject: [PATCH 024/144] Improved test. --- test/unit/overview_test.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/unit/overview_test.rb b/test/unit/overview_test.rb index 45cabd99f..145b64951 100644 --- a/test/unit/overview_test.rb +++ b/test/unit/overview_test.rb @@ -156,7 +156,7 @@ class OverviewTest < ActiveSupport::TestCase view_mode_default: 's', }, ) - assert_match(/^\d\d\d$/, overview.link) + assert_match(/^\d{1,3}$/, overview.link) overview.destroy! overview = Overview.create!( From daaf1525cd159f2e0b859876dbe8088e7add06a1 Mon Sep 17 00:00:00 2001 From: Martin Edenhofer Date: Fri, 14 Jul 2017 16:27:58 +0200 Subject: [PATCH 025/144] Fixed key. --- .../controllers/_ui_element/object_manager_attribute.coffee | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/app/assets/javascripts/app/controllers/_ui_element/object_manager_attribute.coffee b/app/assets/javascripts/app/controllers/_ui_element/object_manager_attribute.coffee index 0ac160b3c..80d61840b 100644 --- a/app/assets/javascripts/app/controllers/_ui_element/object_manager_attribute.coffee +++ b/app/assets/javascripts/app/controllers/_ui_element/object_manager_attribute.coffee @@ -82,7 +82,7 @@ class App.UiElement.object_manager_attribute extends App.UiElement.ApplicationUi view: shown: true invite_customer: - show: false + shown: false required: false 'admin.user': create: @@ -94,10 +94,10 @@ class App.UiElement.object_manager_attribute extends App.UiElement.ApplicationUi view: shown: true invite_agent: - show: false + shown: false required: false invite_customer: - show: false + shown: false required: false Organization: 'ticket.customer': From 547f002f7179ae89cf246785481498f6efca48c1 Mon Sep 17 00:00:00 2001 From: Martin Edenhofer Date: Fri, 14 Jul 2017 17:20:48 +0200 Subject: [PATCH 026/144] Implemented issue #1254 - Feature Request: clear caller log. --- app/models/cti/log.rb | 18 ++++++++++++++++++ db/migrate/20170714000003_cleanup_cti_log.rb | 18 ++++++++++++++++++ db/seeds/schedulers.rb | 9 +++++++++ 3 files changed, 45 insertions(+) create mode 100644 db/migrate/20170714000003_cleanup_cti_log.rb diff --git a/app/models/cti/log.rb b/app/models/cti/log.rb index c5cdc7519..fa63b7d48 100644 --- a/app/models/cti/log.rb +++ b/app/models/cti/log.rb @@ -358,5 +358,23 @@ returns ) } end + +=begin + +cleanup caller logs + + Cti::Log.cleanup + +optional you can put the max oldest chat entries as argument + + Cti::Log.cleanup(12.months) + +=end + + def self.cleanup(diff = 12.months) + Cti::Log.where('created_at < ?', Time.zone.now - diff).delete_all + true + end + end end diff --git a/db/migrate/20170714000003_cleanup_cti_log.rb b/db/migrate/20170714000003_cleanup_cti_log.rb new file mode 100644 index 000000000..4b9e59cbe --- /dev/null +++ b/db/migrate/20170714000003_cleanup_cti_log.rb @@ -0,0 +1,18 @@ +class CleanupCtiLog < ActiveRecord::Migration + def up + + # return if it's a new setup + return if !Setting.find_by(name: 'system_init_done') + + Scheduler.create_if_not_exists( + name: 'Cleanup Cti::Log', + method: 'Cti::Log.cleanup', + period: 1.month, + prio: 2, + active: true, + updated_by_id: 1, + created_by_id: 1, + ) + end + +end diff --git a/db/seeds/schedulers.rb b/db/seeds/schedulers.rb index 94fbe49f6..659e610f3 100644 --- a/db/seeds/schedulers.rb +++ b/db/seeds/schedulers.rb @@ -156,6 +156,15 @@ Scheduler.create_if_not_exists( updated_by_id: 1, created_by_id: 1, ) +Scheduler.create_if_not_exists( + name: 'Cleanup Cti::Log', + method: 'Cti::Log.cleanup', + period: 1.month, + prio: 2, + active: true, + updated_by_id: 1, + created_by_id: 1, +) Scheduler.create_if_not_exists( name: 'Import Jobs', method: 'ImportJob.start_registered', From 866614122db0947d07da6280782850dc9b945a29 Mon Sep 17 00:00:00 2001 From: Martin Edenhofer Date: Sat, 15 Jul 2017 00:35:44 +0200 Subject: [PATCH 027/144] Implemented issue #1251 - Config option to have uniq email addresses for users. --- app/controllers/users_controller.rb | 9 +- app/models/user.rb | 14 ++- .../20170714000002_user_email_multiple_use.rb | 34 +++++++ db/seeds/settings.rb | 25 +++++ .../user_organization_controller_test.rb | 12 ++- test/integration/geo_location_test.rb | 2 +- test/unit/activity_stream_test.rb | 20 ++-- test/unit/history_test.rb | 50 ++++------ test/unit/user_test.rb | 94 +++++++++++++++++++ 9 files changed, 207 insertions(+), 53 deletions(-) create mode 100644 db/migrate/20170714000002_user_email_multiple_use.rb diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb index acb82ed35..a51a6ac0c 100644 --- a/app/controllers/users_controller.rb +++ b/app/controllers/users_controller.rb @@ -132,6 +132,10 @@ class UsersController < ApplicationController raise Exceptions::UnprocessableEntity, 'Attribute \'email\' required!' end + # check if user already exists + exists = User.find_by(email: clean_params[:email].downcase.strip) + raise Exceptions::UnprocessableEntity, 'Email address is already used for other user.' if exists + user = User.new(clean_params) user.associations_from_param(params) user.updated_by_id = 1 @@ -171,11 +175,6 @@ class UsersController < ApplicationController user.associations_from_param(params) end - # check if user already exists - if user.email.present? - exists = User.where(email: user.email.downcase).first - raise Exceptions::UnprocessableEntity, 'User already exists!' if exists - end user.save! # if first user was added, set system init done diff --git a/app/models/user.rb b/app/models/user.rb index e447b961d..c9896d8dc 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -38,7 +38,7 @@ class User < ApplicationModel load 'user/search_index.rb' include User::SearchIndex - before_validation :check_name, :check_email, :check_login, :ensure_password, :ensure_roles, :ensure_identifier + before_validation :check_name, :check_email, :check_login, :ensure_uniq_email, :ensure_password, :ensure_roles, :ensure_identifier before_create :check_preferences_default, :validate_roles, :domain_based_assignment, :set_locale before_update :check_preferences_default, :validate_roles, :reset_login_failed after_create :avatar_for_email_check @@ -845,7 +845,7 @@ returns def check_email return true if Setting.get('import_mode') - return true if email.empty? + return true if email.blank? self.email = email.downcase.strip return true if id == 1 raise Exceptions::UnprocessableEntity, 'Invalid email' if email !~ /@/ @@ -897,6 +897,16 @@ returns raise Exceptions::UnprocessableEntity, 'Minimum one identifier (login, firstname, lastname, phone or email) for user is required.' end + def ensure_uniq_email + return true if Setting.get('user_email_multiple_use') + return true if Setting.get('import_mode') + return true if email.blank? + return true if !changes + return true if !changes['email'] + return true if !User.find_by(email: email.downcase.strip) + raise Exceptions::UnprocessableEntity, 'Email address is already used for other user.' + end + def validate_roles return true if !role_ids role_ids.each { |role_id| diff --git a/db/migrate/20170714000002_user_email_multiple_use.rb b/db/migrate/20170714000002_user_email_multiple_use.rb new file mode 100644 index 000000000..5d89d8d59 --- /dev/null +++ b/db/migrate/20170714000002_user_email_multiple_use.rb @@ -0,0 +1,34 @@ +class UserEmailMultipleUse < ActiveRecord::Migration + def up + + # return if it's a new setup + return if !Setting.find_by(name: 'system_init_done') + + Setting.create_if_not_exists( + title: 'User email for muliple users', + name: 'user_email_multiple_use', + area: 'Model::User', + description: 'Allow to use email address for muliple users.', + options: { + form: [ + { + display: '', + null: true, + name: 'user_email_multiple_use', + tag: 'boolean', + options: { + true => 'yes', + false => 'no', + }, + }, + ], + }, + state: false, + preferences: { + permission: ['admin'], + }, + frontend: false + ) + end + +end diff --git a/db/seeds/settings.rb b/db/seeds/settings.rb index 6e5bd08d0..5802c1063 100644 --- a/db/seeds/settings.rb +++ b/db/seeds/settings.rb @@ -705,6 +705,31 @@ Setting.create_if_not_exists( }, frontend: true ) +Setting.create_if_not_exists( + title: 'User email for muliple users', + name: 'user_email_multiple_use', + area: 'Model::User', + description: 'Allow to use email address for muliple users.', + options: { + form: [ + { + display: '', + null: true, + name: 'user_email_multiple_use', + tag: 'boolean', + options: { + true => 'yes', + false => 'no', + }, + }, + ], + }, + state: false, + preferences: { + permission: ['admin'], + }, + frontend: false +) Setting.create_if_not_exists( title: 'Authentication via %s', name: 'auth_ldap', diff --git a/test/controllers/user_organization_controller_test.rb b/test/controllers/user_organization_controller_test.rb index 1a64030a4..4754a75de 100644 --- a/test/controllers/user_organization_controller_test.rb +++ b/test/controllers/user_organization_controller_test.rb @@ -126,7 +126,15 @@ class UserOrganizationControllerTest < ActionDispatch::IntegrationTest assert_response(422) result = JSON.parse(@response.body) assert(result['error']) - assert_equal('User already exists!', result['error']) + assert_equal('Email address is already used for other user.', result['error']) + + # email missing with enabled feature + params = { firstname: 'some firstname', signup: true } + post '/api/v1/users', params.to_json, headers + assert_response(422) + result = JSON.parse(@response.body) + assert(result['error']) + assert_equal('Attribute \'email\' required!', result['error']) # email missing with enabled feature params = { firstname: 'some firstname', signup: true } @@ -330,7 +338,7 @@ class UserOrganizationControllerTest < ActionDispatch::IntegrationTest assert_response(422) result = JSON.parse(@response.body) assert(result) - assert_equal('User already exists!', result['error']) + assert_equal('Email address is already used for other user.', result['error']) # missing required attributes params = { note: 'some note' } diff --git a/test/integration/geo_location_test.rb b/test/integration/geo_location_test.rb index 388378255..8bd148a9a 100644 --- a/test/integration/geo_location_test.rb +++ b/test/integration/geo_location_test.rb @@ -51,7 +51,7 @@ class GeoLocationTest < ActiveSupport::TestCase login: 'some_geo_login2', firstname: 'First', lastname: 'Last', - email: 'some_geo_login1@example.com', + email: 'some_geo_login2@example.com', password: 'test', street: 'Marienstrasse 13', city: 'Berlin', diff --git a/test/unit/activity_stream_test.rb b/test/unit/activity_stream_test.rb index 27b905ad1..8da295f33 100644 --- a/test/unit/activity_stream_test.rb +++ b/test/unit/activity_stream_test.rb @@ -10,7 +10,7 @@ class ActivityStreamTest < ActiveSupport::TestCase login: 'admin', firstname: 'Bob', lastname: 'Smith', - email: 'bob@example.com', + email: 'bob+active_stream@example.com', password: 'some_pass', active: true, roles: roles, @@ -23,7 +23,7 @@ class ActivityStreamTest < ActiveSupport::TestCase end test 'ticket+user' do - ticket = Ticket.create( + ticket = Ticket.create!( group_id: Group.lookup(name: 'Users').id, customer_id: @current_user.id, owner_id: User.lookup(login: '-').id, @@ -35,7 +35,7 @@ class ActivityStreamTest < ActiveSupport::TestCase ) travel 2.seconds - article = Ticket::Article.create( + article = Ticket::Article.create!( ticket_id: ticket.id, updated_by_id: @current_user.id, created_by_id: @current_user.id, @@ -86,12 +86,12 @@ class ActivityStreamTest < ActiveSupport::TestCase assert(stream.empty?) # cleanup - ticket.destroy + ticket.destroy! travel_back end test 'organization' do - organization = Organization.create( + organization = Organization.create!( name: 'some name', updated_by_id: @current_user.id, created_by_id: @current_user.id, @@ -125,12 +125,12 @@ class ActivityStreamTest < ActiveSupport::TestCase assert(stream.empty?) # cleanup - organization.destroy + organization.destroy! travel_back end test 'user with update check false' do - user = User.create( + user = User.create!( login: 'someemail@example.com', email: 'someemail@example.com', firstname: 'Bob Smith II', @@ -157,12 +157,12 @@ class ActivityStreamTest < ActiveSupport::TestCase assert(stream.empty?) # cleanup - user.destroy + user.destroy! travel_back end test 'user with update check true' do - user = User.create( + user = User.create!( login: 'someemail@example.com', email: 'someemail@example.com', firstname: 'Bob Smith II', @@ -204,7 +204,7 @@ class ActivityStreamTest < ActiveSupport::TestCase assert(stream.empty?) # cleanup - user.destroy + user.destroy! travel_back end diff --git a/test/unit/history_test.rb b/test/unit/history_test.rb index f8061c68d..989b92152 100644 --- a/test/unit/history_test.rb +++ b/test/unit/history_test.rb @@ -155,12 +155,12 @@ class HistoryTest < ActiveSupport::TestCase # use transaction ActiveRecord::Base.transaction do - ticket = Ticket.create(test[:ticket_create][:ticket]) + ticket = Ticket.create!(test[:ticket_create][:ticket]) test[:ticket_create][:article][:ticket_id] = ticket.id - article = Ticket::Article.create(test[:ticket_create][:article]) + article = Ticket::Article.create!(test[:ticket_create][:article]) - assert_equal(ticket.class.to_s, 'Ticket') - assert_equal(article.class.to_s, 'Ticket::Article') + assert_equal(ticket.class, Ticket) + assert_equal(article.class, Ticket::Article) # update ticket if test[:ticket_update][:ticket] @@ -185,25 +185,21 @@ class HistoryTest < ActiveSupport::TestCase } # delete tickets - tickets.each { |ticket| - ticket_id = ticket.id - ticket.destroy - found = Ticket.where(id: ticket_id).first - assert_not(found, 'Ticket destroyed') - } + tickets.each(&:destroy!) end test 'user' do + name = rand(999_999) tests = [ # test 1 { user_create: { user: { - login: 'some_login_test', + login: "some_login_test-#{name}", firstname: 'Bob', lastname: 'Smith', - email: 'somebody@example.com', + email: "somebody-#{name}@example.com", active: true, updated_by_id: current_user.id, created_by_id: current_user.id, @@ -213,7 +209,7 @@ class HistoryTest < ActiveSupport::TestCase user: { firstname: 'Bob', lastname: 'Master', - email: 'master@example.com', + email: "master-#{name}@example.com", active: false, }, }, @@ -236,8 +232,8 @@ class HistoryTest < ActiveSupport::TestCase history_object: 'User', history_type: 'updated', history_attribute: 'email', - value_from: 'somebody@example.com', - value_to: 'master@example.com', + value_from: "somebody-#{name}@example.com", + value_to: "master-#{name}@example.com", }, { result: true, @@ -258,9 +254,8 @@ class HistoryTest < ActiveSupport::TestCase # user transaction ActiveRecord::Base.transaction do - user = User.create(test[:user_create][:user]) - - assert_equal(user.class.to_s, 'User') + user = User.create!(test[:user_create][:user]) + assert_equal(user.class, User) # update user if test[:user_update][:user] @@ -277,12 +272,7 @@ class HistoryTest < ActiveSupport::TestCase } # delete user - users.each { |user| - user_id = user.id - user.destroy - found = User.where(id: user_id).first - assert_not(found, 'User destroyed') - } + users.each(&:destroy!) end test 'organization' do @@ -328,9 +318,8 @@ class HistoryTest < ActiveSupport::TestCase # user transaction ActiveRecord::Base.transaction do - organization = Organization.create(test[:organization_create][:organization]) - - assert_equal(organization.class.to_s, 'Organization') + organization = Organization.create!(test[:organization_create][:organization]) + assert_equal(organization.class, Organization) # update organization if test[:organization_update][:organization] @@ -346,12 +335,7 @@ class HistoryTest < ActiveSupport::TestCase } # delete user - organizations.each { |organization| - organization_id = organization.id - organization.destroy - found = Organization.where(id: organization_id).first - assert_not(found, 'Organization destroyed') - } + organizations.each(&:destroy!) end def history_check(history_list, history_check) diff --git a/test/unit/user_test.rb b/test/unit/user_test.rb index d18dafa6e..89447737c 100644 --- a/test/unit/user_test.rb +++ b/test/unit/user_test.rb @@ -368,6 +368,100 @@ class UserTest < ActiveSupport::TestCase admin.destroy! end + test 'uniq email' do + name = rand(999_999_999) + + email1 = "admin1-role_without_email#{name}@example.com" + admin1 = User.create!( + login: email1, + firstname: 'Role', + lastname: "Admin1#{name}", + email: email1, + password: 'adminpw', + active: true, + roles: Role.where(name: %w(Admin Agent)), + updated_by_id: 1, + created_by_id: 1, + ) + + assert(admin1.id) + assert_equal(admin1.email, email1) + + assert_raises(Exceptions::UnprocessableEntity) { + User.create!( + login: "#{email1}-1", + firstname: 'Role', + lastname: "Admin1#{name}", + email: email1, + password: 'adminpw', + active: true, + roles: Role.where(name: %w(Admin Agent)), + updated_by_id: 1, + created_by_id: 1, + ) + } + + email2 = "admin2-role_without_email#{name}@example.com" + admin2 = User.create!( + firstname: 'Role', + lastname: "Admin2#{name}", + email: email2, + password: 'adminpw', + active: true, + roles: Role.where(name: %w(Admin Agent)), + updated_by_id: 1, + created_by_id: 1, + ) + + assert_raises(Exceptions::UnprocessableEntity) { + admin2.email = email1 + admin2.save! + } + + admin1.email = admin1.email + admin1.save! + + admin2.destroy! + admin1.destroy! + end + + test 'uniq email - multiple use' do + Setting.set('user_email_multiple_use', true) + name = rand(999_999_999) + + email1 = "admin1-role_without_email#{name}@example.com" + admin1 = User.create!( + login: email1, + firstname: 'Role', + lastname: "Admin1#{name}", + email: email1, + password: 'adminpw', + active: true, + roles: Role.where(name: %w(Admin Agent)), + updated_by_id: 1, + created_by_id: 1, + ) + + assert(admin1.id) + assert_equal(admin1.email, email1) + + admin2 = User.create!( + login: "#{email1}-1", + firstname: 'Role', + lastname: "Admin1#{name}", + email: email1, + password: 'adminpw', + active: true, + roles: Role.where(name: %w(Admin Agent)), + updated_by_id: 1, + created_by_id: 1, + ) + assert_equal(admin2.email, email1) + admin2.destroy! + admin1.destroy! + Setting.set('user_email_multiple_use', false) + end + test 'ensure roles' do name = rand(999_999_999) From a9a76ef0b75befec230b438029906fa9ccddb27e Mon Sep 17 00:00:00 2001 From: Martin Edenhofer Date: Mon, 17 Jul 2017 05:57:19 +0200 Subject: [PATCH 028/144] Improved pretty date - absolute time format (only show no year if date is in same year + only show no weekday if date is less then 6 days). --- .../javascripts/app/lib/app_post/pretty_date.coffee | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/app/assets/javascripts/app/lib/app_post/pretty_date.coffee b/app/assets/javascripts/app/lib/app_post/pretty_date.coffee index 9c607eee0..13c6157a2 100644 --- a/app/assets/javascripts/app/lib/app_post/pretty_date.coffee +++ b/app/assets/javascripts/app/lib/app_post/pretty_date.coffee @@ -38,11 +38,16 @@ class App.PrettyDate months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'] month = months[created.getMonth()] - # for less than 7 days - if diff < (60 * 60 * 24 * 7) + # for less than 6 days + # weekday HH::MM + if diff < (60 * 60 * 24 * 6) string = "#{App.i18n.translateInline(weekday)} #{created.getHours()}:#{@s(created.getMinutes(), 2)}" - else if diff < (60 * 60 * 24 * 7) * 365 + # if it was this year + # weekday DD. MM HH::MM + else if created.getYear() is current.getYear() string = "#{App.i18n.translateInline(weekday)} #{created.getDate()}. #{App.i18n.translateInline(month)} #{created.getHours()}:#{@s(created.getMinutes(), 2)}" + # if it was the year before + # weekday YYYY-MM-DD HH::MM else string = "#{App.i18n.translateInline(weekday)} #{App.i18n.translateTimestamp(time)}" if escalation From 084ef3f50dd31b6898ef08097b9d6c35ae4e5bb1 Mon Sep 17 00:00:00 2001 From: Rolf Schmidt Date: Tue, 18 Jul 2017 13:51:26 +0200 Subject: [PATCH 029/144] Fixed issue #986 - Zammad sends reply to itself. --- .../app/controllers/ticket_zoom/article_actions.coffee | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/app/assets/javascripts/app/controllers/ticket_zoom/article_actions.coffee b/app/assets/javascripts/app/controllers/ticket_zoom/article_actions.coffee index df150405a..ad9f73d79 100644 --- a/app/assets/javascripts/app/controllers/ticket_zoom/article_actions.coffee +++ b/app/assets/javascripts/app/controllers/ticket_zoom/article_actions.coffee @@ -336,8 +336,7 @@ class App.TicketZoomArticleActions extends App.Controller articleNew.to = ticket.customer.email else - user = App.User.find(article.created_by_id) - if article.sender.name is 'Agent' && !article.from.match(user.email) + if article.sender.name is 'Agent' articleNew.to = article.to else if article.reply_to From a583cc330f015ef19bfc86df63fd16cd8d755d99 Mon Sep 17 00:00:00 2001 From: Martin Edenhofer Date: Tue, 18 Jul 2017 15:15:09 +0200 Subject: [PATCH 030/144] Only show text in desktop notification. --- app/assets/javascripts/app/controllers/chat.coffee | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/assets/javascripts/app/controllers/chat.coffee b/app/assets/javascripts/app/controllers/chat.coffee index f8e969e86..96f4de60d 100644 --- a/app/assets/javascripts/app/controllers/chat.coffee +++ b/app/assets/javascripts/app/controllers/chat.coffee @@ -587,7 +587,7 @@ class ChatWindow extends App.Controller @sounds.message.play() @notifyDesktop( title: @name - body: message + body: App.Utils.html2text(message) url: '#customer_chat' callback: => App.Event.trigger('chat_focus', { session_id: @session.session_id }) From a313c485acf21ae8eb446fe2e4e11c65f38de723 Mon Sep 17 00:00:00 2001 From: Martin Edenhofer Date: Tue, 18 Jul 2017 15:43:04 +0200 Subject: [PATCH 031/144] Implemented issue #1255 - Chat Widget should support richtext (same as agent chat). --- public/assets/chat/chat.coffee | 409 +++++++++++++++++++++++- public/assets/chat/chat.js | 568 ++++++++++++++++++++++++++++----- public/assets/chat/chat.min.js | 4 +- 3 files changed, 902 insertions(+), 79 deletions(-) diff --git a/public/assets/chat/chat.coffee b/public/assets/chat/chat.coffee index e70625be1..b551ea076 100644 --- a/public/assets/chat/chat.coffee +++ b/public/assets/chat/chat.coffee @@ -251,6 +251,11 @@ do($ = window.jQuery, window) -> sessionId: undefined scrolledToBottom: true scrollSnapTolerance: 10 + richTextFormatKey: + 66: true # b + 73: true # i + 85: true # u + 83: true # s T: (string, items...) => if @options.lang && @options.lang isnt 'en' @@ -367,9 +372,211 @@ do($ = window.jQuery, window) -> @el.find('.zammad-chat-controls').on 'submit', @onSubmit @el.find('.zammad-chat-body').on 'scroll', @detectScrolledtoBottom @el.find('.zammad-scroll-hint').click @onScrollHintClick - @input.on + @input.on( keydown: @checkForEnter input: @onInput + ) + @input.on('keydown', (e) => + richtTextControl = false + if !e.altKey && !e.ctrlKey && e.metaKey + richtTextControl = true + else if !e.altKey && e.ctrlKey && !e.metaKey + richtTextControl = true + + if richtTextControl && @richTextFormatKey[ e.keyCode ] + e.preventDefault() + if e.keyCode is 66 + document.execCommand('bold') + return true + if e.keyCode is 73 + document.execCommand('italic') + return true + if e.keyCode is 85 + document.execCommand('underline') + return true + if e.keyCode is 83 + document.execCommand('strikeThrough') + return true + ) + @input.on('paste', (e) => + e.stopPropagation() + e.preventDefault() + + clipboardData + if e.clipboardData + clipboardData = e.clipboardData + else if window.clipboardData + clipboardData = window.clipboardData + else if e.originalEvent.clipboardData + clipboardData = e.originalEvent.clipboardData + else + throw 'No clipboardData support' + + imageInserted = false + if clipboardData && clipboardData.items && clipboardData.items[0] + item = clipboardData.items[0] + if item.kind == 'file' && (item.type == 'image/png' || item.type == 'image/jpeg') + imageFile = item.getAsFile() + reader = new FileReader() + + reader.onload = (e) => + result = e.target.result + img = document.createElement('img') + img.src = result + + insert = (dataUrl, width, height, isRetina) => + + # adapt image if we are on retina devices + if @isRetina() + width = width / 2 + height = height / 2 + result = dataUrl + img = "" + document.execCommand('insertHTML', false, img) + + # resize if to big + @resizeImage(img.src, 460, 'auto', 2, 'image/jpeg', 'auto', insert) + + reader.readAsDataURL(imageFile) + imageInserted = true + + return if imageInserted + + # check existing + paste text for limit + text = undefined + docType = undefined + try + text = clipboardData.getData('text/html') + docType = 'html' + if !text || text.length is 0 + docType = 'text' + text = clipboardData.getData('text/plain') + if !text || text.length is 0 + docType = 'text2' + text = clipboardData.getData('text') + catch e + console.log('Sorry, can\'t insert markup because browser is not supporting it.') + docType = 'text3' + text = clipboardData.getData('text') + + if docType is 'text' || docType is 'text2' || docType is 'text3' + text = '
' + text.replace(/\n/g, '
') + '
' + text = text.replace(/
<\/div>/g, '

') + console.log('p', docType, text) + if docType is 'html' + html = $("
#{text}
") + match = false + htmlTmp = text + regex = new RegExp('<(/w|w)\:[A-Za-z]') + if htmlTmp.match(regex) + match = true + htmlTmp = htmlTmp.replace(regex, '') + regex = new RegExp('<(/o|o)\:[A-Za-z]') + if htmlTmp.match(regex) + match = true + htmlTmp = htmlTmp.replace(regex, '') + if match + html = @wordFilter(html) + #html + + html = $(html) + + html.contents().each( -> + if @nodeType == 8 + $(@).remove() + ) + + # remove tags, keep content + html.find('a, font, small, time, form, label').replaceWith( -> + $(@).contents() + ) + + # replace tags with generic div + # New type of the tag + replacementTag = 'div'; + + # Replace all x tags with the type of replacementTag + html.find('textarea').each( -> + outer = @outerHTML + + # Replace opening tag + regex = new RegExp('<' + @tagName, 'i') + newTag = outer.replace(regex, '<' + replacementTag) + + # Replace closing tag + regex = new RegExp(' + e.stopPropagation() + e.preventDefault() + + dataTransfer + if window.dataTransfer # ie + dataTransfer = window.dataTransfer + else if e.originalEvent.dataTransfer # other browsers + dataTransfer = e.originalEvent.dataTransfer + else + throw 'No clipboardData support' + + x = e.clientX + y = e.clientY + file = dataTransfer.files[0] + + # look for images + if file.type.match('image.*') + reader = new FileReader() + reader.onload = (e) => + result = e.target.result + img = document.createElement('img') + img.src = result + + # Insert the image at the carat + insert = (dataUrl, width, height, isRetina) => + + # adapt image if we are on retina devices + if @isRetina() + width = width / 2 + height = height / 2 + + result = dataUrl + img = $("") + img = img.get(0) + + if document.caretPositionFromPoint + pos = document.caretPositionFromPoint(x, y) + range = document.createRange() + range.setStart(pos.offsetNode, pos.offset) + range.collapse() + range.insertNode(img) + else if document.caretRangeFromPoint + range = document.caretRangeFromPoint(x, y) + range.insertNode(img) + else + console.log('could not find carat') + + # resize if to big + @resizeImage(img.src, 460, 'auto', 2, 'image/jpeg', 'auto', insert) + reader.readAsDataURL(file) + ) + $(window).on('beforeunload', => @onLeaveTemporary() ) @@ -1027,4 +1234,204 @@ do($ = window.jQuery, window) -> else if direction is 'horizontal' return !!clientSize && ((compareRight <= viewRight) && (compareLeft >= viewLeft)) + isRetina: -> + if window.matchMedia + mq = window.matchMedia('only screen and (min--moz-device-pixel-ratio: 1.3), only screen and (-o-min-device-pixel-ratio: 2.6/2), only screen and (-webkit-min-device-pixel-ratio: 1.3), only screen and (min-device-pixel-ratio: 1.3), only screen and (min-resolution: 1.3dppx)') + return (mq && mq.matches || (window.devicePixelRatio > 1)) + false + + resizeImage: (dataURL, x = 'auto', y = 'auto', sizeFactor = 1, type, quallity, callback, force = true) -> + + # load image from data url + imageObject = new Image() + imageObject.onload = -> + imageWidth = imageObject.width + imageHeight = imageObject.height + console.log('ImageService', 'current size', imageWidth, imageHeight) + if y is 'auto' && x is 'auto' + x = imageWidth + y = imageHeight + + # get auto dimensions + if y is 'auto' + factor = imageWidth / x + y = imageHeight / factor + + if x is 'auto' + factor = imageWidth / y + x = imageHeight / factor + + # check if resize is needed + resize = false + if x < imageWidth || y < imageHeight + resize = true + x = x * sizeFactor + y = y * sizeFactor + else + x = imageWidth + y = imageHeight + + # create canvas and set dimensions + canvas = document.createElement('canvas') + canvas.width = x + canvas.height = y + + # draw image on canvas and set image dimensions + context = canvas.getContext('2d') + context.drawImage(imageObject, 0, 0, x, y) + + # set quallity based on image size + if quallity == 'auto' + if x < 200 && y < 200 + quallity = 1 + else if x < 400 && y < 400 + quallity = 0.9 + else if x < 600 && y < 600 + quallity = 0.8 + else if x < 900 && y < 900 + quallity = 0.7 + else + quallity = 0.6 + + # execute callback with resized image + newDataUrl = canvas.toDataURL(type, quallity) + if resize + console.log('ImageService', 'resize', x/sizeFactor, y/sizeFactor, quallity, (newDataUrl.length * 0.75)/1024/1024, 'in mb') + callback(newDataUrl, x/sizeFactor, y/sizeFactor, true) + return + console.log('ImageService', 'no resize', x, y, quallity, (newDataUrl.length * 0.75)/1024/1024, 'in mb') + callback(newDataUrl, x, y, false) + + # load image from data url + imageObject.src = dataURL + + # taken from https://stackoverflow.com/questions/6690752/insert-html-at-caret-in-a-contenteditable-div/6691294#6691294 + pasteHtmlAtCaret: (html) -> + sel = undefined + range = undefined + if window.getSelection + sel = window.getSelection() + if sel.getRangeAt && sel.rangeCount + range = sel.getRangeAt(0) + range.deleteContents() + + el = document.createElement('div') + el.innerHTML = html + frag = document.createDocumentFragment(node, lastNode) + while node = el.firstChild + lastNode = frag.appendChild(node) + range.insertNode(frag) + + if lastNode + range = range.cloneRange() + range.setStartAfter(lastNode) + range.collapse(true) + sel.removeAllRanges() + sel.addRange(range) + else if document.selection && document.selection.type != 'Control' + document.selection.createRange().pasteHTML(html) + + # (C) sbrin - https://github.com/sbrin + # https://gist.github.com/sbrin/6801034 + wordFilter: (editor) -> + content = editor.html() + + # Word comments like conditional comments etc + content = content.replace(//gi, '') + + # Remove comments, scripts (e.g., msoShowComment), XML tag, VML content, + # MS Office namespaced tags, and a few other tags + content = content.replace(/<(!|script[^>]*>.*?<\/script(?=[>\s])|\/?(\?xml(:\w+)?|img|meta|link|style|\w:\w+)(?=[\s\/>]))[^>]*>/gi, '') + + # Convert into for line-though + content = content.replace(/<(\/?)s>/gi, '<$1strike>') + + # Replace nbsp entites to char since it's easier to handle + # content = content.replace(/ /gi, "\u00a0") + content = content.replace(/ /gi, ' ') + + # Convert ___ to string of alternating + # breaking/non-breaking spaces of same length + #content = content.replace(/([\s\u00a0]*)<\/span>/gi, (str, spaces) -> + # return (spaces.length > 0) ? spaces.replace(/./, " ").slice(Math.floor(spaces.length/2)).split("").join("\u00a0") : '' + #) + + editor.html(content) + + # Parse out list indent level for lists + $('p', editor).each( -> + str = $(@).attr('style') + matches = /mso-list:\w+ \w+([0-9]+)/.exec(str) + if matches + $(@).data('_listLevel', parseInt(matches[1], 10)) + ) + + # Parse Lists + last_level = 0 + pnt = null + $('p', editor).each(-> + cur_level = $(@).data('_listLevel') + if cur_level != undefined + txt = $(@).text() + list_tag = '
    ' + if (/^\s*\w+\./.test(txt)) + matches = /([0-9])\./.exec(txt) + if matches + start = parseInt(matches[1], 10) + list_tag = start>1 ? '
      ' : '
        ' + else + list_tag = '
          ' + + if cur_level > last_level + if last_level == 0 + $(@).before(list_tag) + pnt = $(@).prev() + else + pnt = $(list_tag).appendTo(pnt) + + if cur_level < last_level + for i in [i..last_level-cur_level] + pnt = pnt.parent() + + $('span:first', @).remove() + pnt.append('
        1. ' + $(@).html() + '
        2. ') + $(@).remove() + last_level = cur_level + else + last_level = 0 + ) + + $('[style]', editor).removeAttr('style') + $('[align]', editor).removeAttr('align') + $('span', editor).replaceWith(-> + $(@).contents() + ) + $('span:empty', editor).remove() + $("[class^='Mso']", editor).removeAttr('class') + $('p:empty', editor).remove() + editor + + removeAttribute: (element) -> + return if !element + $element = $(element) + for att in element.attributes + if att && att.name + element.removeAttribute(att.name) + #$element.removeAttr(att.name) + + $element.removeAttr('style') + .removeAttr('class') + .removeAttr('lang') + .removeAttr('type') + .removeAttr('align') + .removeAttr('id') + .removeAttr('wrap') + .removeAttr('title') + + removeAttributes: (html, parent = true) => + if parent + html.each((index, element) => @removeAttribute(element) ) + html.find('*').each((index, element) => @removeAttribute(element) ) + html + window.ZammadChat = ZammadChat diff --git a/public/assets/chat/chat.js b/public/assets/chat/chat.js index aa9f016fe..7526115be 100644 --- a/public/assets/chat/chat.js +++ b/public/assets/chat/chat.js @@ -1,3 +1,64 @@ +if (!window.zammadChatTemplates) { + window.zammadChatTemplates = {}; +} +window.zammadChatTemplates["agent"] = function (__obj) { + if (!__obj) __obj = {}; + var __out = [], __capture = function(callback) { + var out = __out, result; + __out = []; + callback.call(this); + result = __out.join(''); + __out = out; + return __safe(result); + }, __sanitize = function(value) { + if (value && value.ecoSafe) { + return value; + } else if (typeof value !== 'undefined' && value != null) { + return __escape(value); + } else { + return ''; + } + }, __safe, __objSafe = __obj.safe, __escape = __obj.escape; + __safe = __obj.safe = function(value) { + if (value && value.ecoSafe) { + return value; + } else { + if (!(typeof value !== 'undefined' && value != null)) value = ''; + var result = new String(value); + result.ecoSafe = true; + return result; + } + }; + if (!__escape) { + __escape = __obj.escape = function(value) { + return ('' + value) + .replace(/&/g, '&') + .replace(//g, '>') + .replace(/"/g, '"'); + }; + } + (function() { + (function() { + if (this.agent.avatar) { + __out.push('\n\n'); + } + + __out.push('\n\n '); + + __out.push(__sanitize(this.agent.name)); + + __out.push('\n'); + + }).call(this); + + }).call(__obj); + __obj.safe = __objSafe, __obj.escape = __escape; + return __out.join(''); +}; + var bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; }, slice = [].slice, extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }, @@ -60,7 +121,7 @@ var bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; Log.prototype.log = function(level, items) { - var i, item, len, logString; + var item, j, len, logString; items.unshift('||'); items.unshift(level); items.unshift(this.options.logPrefix); @@ -69,8 +130,8 @@ var bind = function(fn, me){ return function(){ return fn.apply(me, arguments); return; } logString = ''; - for (i = 0, len = items.length; i < len; i++) { - item = items[i]; + for (j = 0, len = items.length; j < len; j++) { + item = items[j]; logString += ' '; if (typeof item === 'object') { logString += JSON.stringify(item); @@ -173,11 +234,11 @@ var bind = function(fn, me){ return function(){ return fn.apply(me, arguments); })(this); this.ws.onmessage = (function(_this) { return function(e) { - var i, len, pipe, pipes; + var j, len, pipe, pipes; pipes = JSON.parse(e.data); _this.log.debug('onMessage', e.data); - for (i = 0, len = pipes.length; i < len; i++) { - pipe = pipes[i]; + for (j = 0, len = pipes.length; j < len; j++) { + pipe = pipes[j]; if (pipe.event === 'pong') { _this.ping(); } @@ -386,8 +447,15 @@ var bind = function(fn, me){ return function(){ return fn.apply(me, arguments); ZammadChat.prototype.scrollSnapTolerance = 10; + ZammadChat.prototype.richTextFormatKey = { + 66: true, + 73: true, + 85: true, + 83: true + }; + ZammadChat.prototype.T = function() { - var i, item, items, len, string, translations; + var item, items, j, len, string, translations; string = arguments[0], items = 2 <= arguments.length ? slice.call(arguments, 1) : []; if (this.options.lang && this.options.lang !== 'en') { if (!this.translations[this.options.lang]) { @@ -401,8 +469,8 @@ var bind = function(fn, me){ return function(){ return fn.apply(me, arguments); } } if (items) { - for (i = 0, len = items.length; i < len; i++) { - item = items[i]; + for (j = 0, len = items.length; j < len; j++) { + item = items[j]; string = string.replace(/%s/, item); } } @@ -425,6 +493,7 @@ var bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; function ZammadChat(options) { + this.removeAttributes = bind(this.removeAttributes, this); this.startTimeoutObservers = bind(this.startTimeoutObservers, this); this.onCssLoaded = bind(this.onCssLoaded, this); this.setAgentOnlineState = bind(this.setAgentOnlineState, this); @@ -552,6 +621,203 @@ var bind = function(fn, me){ return function(){ return fn.apply(me, arguments); keydown: this.checkForEnter, input: this.onInput }); + this.input.on('keydown', (function(_this) { + return function(e) { + var richtTextControl; + richtTextControl = false; + if (!e.altKey && !e.ctrlKey && e.metaKey) { + richtTextControl = true; + } else if (!e.altKey && e.ctrlKey && !e.metaKey) { + richtTextControl = true; + } + if (richtTextControl && _this.richTextFormatKey[e.keyCode]) { + e.preventDefault(); + if (e.keyCode === 66) { + document.execCommand('bold'); + return true; + } + if (e.keyCode === 73) { + document.execCommand('italic'); + return true; + } + if (e.keyCode === 85) { + document.execCommand('underline'); + return true; + } + if (e.keyCode === 83) { + document.execCommand('strikeThrough'); + return true; + } + } + }; + })(this)); + this.input.on('paste', (function(_this) { + return function(e) { + var clipboardData, docType, error, html, htmlTmp, imageFile, imageInserted, item, match, reader, regex, replacementTag, text; + e.stopPropagation(); + e.preventDefault(); + clipboardData; + if (e.clipboardData) { + clipboardData = e.clipboardData; + } else if (window.clipboardData) { + clipboardData = window.clipboardData; + } else if (e.originalEvent.clipboardData) { + clipboardData = e.originalEvent.clipboardData; + } else { + throw 'No clipboardData support'; + } + imageInserted = false; + if (clipboardData && clipboardData.items && clipboardData.items[0]) { + item = clipboardData.items[0]; + if (item.kind === 'file' && (item.type === 'image/png' || item.type === 'image/jpeg')) { + imageFile = item.getAsFile(); + reader = new FileReader(); + reader.onload = function(e) { + var img, insert, result; + result = e.target.result; + img = document.createElement('img'); + img.src = result; + insert = function(dataUrl, width, height, isRetina) { + if (_this.isRetina()) { + width = width / 2; + height = height / 2; + } + result = dataUrl; + img = ""; + return document.execCommand('insertHTML', false, img); + }; + return _this.resizeImage(img.src, 460, 'auto', 2, 'image/jpeg', 'auto', insert); + }; + reader.readAsDataURL(imageFile); + imageInserted = true; + } + } + if (imageInserted) { + return; + } + text = void 0; + docType = void 0; + try { + text = clipboardData.getData('text/html'); + docType = 'html'; + if (!text || text.length === 0) { + docType = 'text'; + text = clipboardData.getData('text/plain'); + } + if (!text || text.length === 0) { + docType = 'text2'; + text = clipboardData.getData('text'); + } + } catch (error) { + e = error; + console.log('Sorry, can\'t insert markup because browser is not supporting it.'); + docType = 'text3'; + text = clipboardData.getData('text'); + } + if (docType === 'text' || docType === 'text2' || docType === 'text3') { + text = '
          ' + text.replace(/\n/g, '
          ') + '
          '; + text = text.replace(/
          <\/div>/g, '

          '); + } + console.log('p', docType, text); + if (docType === 'html') { + html = $("
          " + text + "
          "); + match = false; + htmlTmp = text; + regex = new RegExp('<(/w|w)\:[A-Za-z]'); + if (htmlTmp.match(regex)) { + match = true; + htmlTmp = htmlTmp.replace(regex, ''); + } + regex = new RegExp('<(/o|o)\:[A-Za-z]'); + if (htmlTmp.match(regex)) { + match = true; + htmlTmp = htmlTmp.replace(regex, ''); + } + if (match) { + html = _this.wordFilter(html); + } + html = $(html); + html.contents().each(function() { + if (this.nodeType === 8) { + return $(this).remove(); + } + }); + html.find('a, font, small, time, form, label').replaceWith(function() { + return $(this).contents(); + }); + replacementTag = 'div'; + html.find('textarea').each(function() { + var newTag, outer; + outer = this.outerHTML; + regex = new RegExp('<' + this.tagName, 'i'); + newTag = outer.replace(regex, '<' + replacementTag); + regex = new RegExp('"); + img = img.get(0); + if (document.caretPositionFromPoint) { + pos = document.caretPositionFromPoint(x, y); + range = document.createRange(); + range.setStart(pos.offsetNode, pos.offset); + range.collapse(); + return range.insertNode(img); + } else if (document.caretRangeFromPoint) { + range = document.caretRangeFromPoint(x, y); + return range.insertNode(img); + } else { + return console.log('could not find carat'); + } + }; + return _this.resizeImage(img.src, 460, 'auto', 2, 'image/jpeg', 'auto', insert); + }; + return reader.readAsDataURL(file); + } + }; + })(this)); $(window).on('beforeunload', (function(_this) { return function() { return _this.onLeaveTemporary(); @@ -595,9 +861,9 @@ var bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; ZammadChat.prototype.onWebSocketMessage = function(pipes) { - var i, len, pipe; - for (i = 0, len = pipes.length; i < len; i++) { - pipe = pipes[i]; + var j, len, pipe; + for (j = 0, len = pipes.length; j < len; j++) { + pipe = pipes[j]; this.log.debug('ws:onmessage', pipe); switch (pipe.event) { case 'chat_error': @@ -683,15 +949,15 @@ var bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; ZammadChat.prototype.onReopenSession = function(data) { - var i, len, message, ref, unfinishedMessage; + var j, len, message, ref, unfinishedMessage; this.log.debug('old messages', data.session); this.inactiveTimeout.start(); unfinishedMessage = sessionStorage.getItem('unfinished_message'); if (data.agent) { this.onConnectionEstablished(data); ref = data.session; - for (i = 0, len = ref.length; i < len; i++) { - message = ref[i]; + for (j = 0, len = ref.length; j < len; j++) { + message = ref[j]; this.renderMessage({ message: message.content, id: message.id, @@ -1322,73 +1588,223 @@ var bind = function(fn, me){ return function(){ return fn.apply(me, arguments); } }; + ZammadChat.prototype.isRetina = function() { + var mq; + if (window.matchMedia) { + mq = window.matchMedia('only screen and (min--moz-device-pixel-ratio: 1.3), only screen and (-o-min-device-pixel-ratio: 2.6/2), only screen and (-webkit-min-device-pixel-ratio: 1.3), only screen and (min-device-pixel-ratio: 1.3), only screen and (min-resolution: 1.3dppx)'); + return mq && mq.matches || (window.devicePixelRatio > 1); + } + return false; + }; + + ZammadChat.prototype.resizeImage = function(dataURL, x, y, sizeFactor, type, quallity, callback, force) { + var imageObject; + if (x == null) { + x = 'auto'; + } + if (y == null) { + y = 'auto'; + } + if (sizeFactor == null) { + sizeFactor = 1; + } + if (force == null) { + force = true; + } + imageObject = new Image(); + imageObject.onload = function() { + var canvas, context, factor, imageHeight, imageWidth, newDataUrl, resize; + imageWidth = imageObject.width; + imageHeight = imageObject.height; + console.log('ImageService', 'current size', imageWidth, imageHeight); + if (y === 'auto' && x === 'auto') { + x = imageWidth; + y = imageHeight; + } + if (y === 'auto') { + factor = imageWidth / x; + y = imageHeight / factor; + } + if (x === 'auto') { + factor = imageWidth / y; + x = imageHeight / factor; + } + resize = false; + if (x < imageWidth || y < imageHeight) { + resize = true; + x = x * sizeFactor; + y = y * sizeFactor; + } else { + x = imageWidth; + y = imageHeight; + } + canvas = document.createElement('canvas'); + canvas.width = x; + canvas.height = y; + context = canvas.getContext('2d'); + context.drawImage(imageObject, 0, 0, x, y); + if (quallity === 'auto') { + if (x < 200 && y < 200) { + quallity = 1; + } else if (x < 400 && y < 400) { + quallity = 0.9; + } else if (x < 600 && y < 600) { + quallity = 0.8; + } else if (x < 900 && y < 900) { + quallity = 0.7; + } else { + quallity = 0.6; + } + } + newDataUrl = canvas.toDataURL(type, quallity); + if (resize) { + console.log('ImageService', 'resize', x / sizeFactor, y / sizeFactor, quallity, (newDataUrl.length * 0.75) / 1024 / 1024, 'in mb'); + callback(newDataUrl, x / sizeFactor, y / sizeFactor, true); + return; + } + console.log('ImageService', 'no resize', x, y, quallity, (newDataUrl.length * 0.75) / 1024 / 1024, 'in mb'); + return callback(newDataUrl, x, y, false); + }; + return imageObject.src = dataURL; + }; + + ZammadChat.prototype.pasteHtmlAtCaret = function(html) { + var el, frag, lastNode, node, range, sel; + sel = void 0; + range = void 0; + if (window.getSelection) { + sel = window.getSelection(); + if (sel.getRangeAt && sel.rangeCount) { + range = sel.getRangeAt(0); + range.deleteContents(); + el = document.createElement('div'); + el.innerHTML = html; + frag = document.createDocumentFragment(node, lastNode); + while (node = el.firstChild) { + lastNode = frag.appendChild(node); + } + range.insertNode(frag); + if (lastNode) { + range = range.cloneRange(); + range.setStartAfter(lastNode); + range.collapse(true); + sel.removeAllRanges(); + return sel.addRange(range); + } + } + } else if (document.selection && document.selection.type !== 'Control') { + return document.selection.createRange().pasteHTML(html); + } + }; + + ZammadChat.prototype.wordFilter = function(editor) { + var content, last_level, pnt; + content = editor.html(); + content = content.replace(//gi, ''); + content = content.replace(/<(!|script[^>]*>.*?<\/script(?=[>\s])|\/?(\?xml(:\w+)?|img|meta|link|style|\w:\w+)(?=[\s\/>]))[^>]*>/gi, ''); + content = content.replace(/<(\/?)s>/gi, '<$1strike>'); + content = content.replace(/ /gi, ' '); + editor.html(content); + $('p', editor).each(function() { + var matches, str; + str = $(this).attr('style'); + matches = /mso-list:\w+ \w+([0-9]+)/.exec(str); + if (matches) { + return $(this).data('_listLevel', parseInt(matches[1], 10)); + } + }); + last_level = 0; + pnt = null; + $('p', editor).each(function() { + var cur_level, i, j, list_tag, matches, ref, ref1, ref2, start, txt; + cur_level = $(this).data('_listLevel'); + if (cur_level !== void 0) { + txt = $(this).text(); + list_tag = '
            '; + if (/^\s*\w+\./.test(txt)) { + matches = /([0-9])\./.exec(txt); + if (matches) { + start = parseInt(matches[1], 10); + list_tag = (ref = start > 1) != null ? ref : '
              ': '
                ' + }; + } else { + list_tag = '
                  '; + } + } + if (cur_level > last_level) { + if (last_level === 0) { + $(this).before(list_tag); + pnt = $(this).prev(); + } else { + pnt = $(list_tag).appendTo(pnt); + } + } + if (cur_level < last_level) { + for (i = j = ref1 = i, ref2 = last_level - cur_level; ref1 <= ref2 ? j <= ref2 : j >= ref2; i = ref1 <= ref2 ? ++j : --j) { + pnt = pnt.parent(); + } + } + $('span:first', this).remove(); + pnt.append('
                1. ' + $(this).html() + '
                2. '); + $(this).remove(); + return last_level = cur_level; + } else { + return last_level = 0; + } + }); + $('[style]', editor).removeAttr('style'); + $('[align]', editor).removeAttr('align'); + $('span', editor).replaceWith(function() { + return $(this).contents(); + }); + $('span:empty', editor).remove(); + $("[class^='Mso']", editor).removeAttr('class'); + $('p:empty', editor).remove(); + return editor; + }; + + ZammadChat.prototype.removeAttribute = function(element) { + var $element, att, j, len, ref; + if (!element) { + return; + } + $element = $(element); + ref = element.attributes; + for (j = 0, len = ref.length; j < len; j++) { + att = ref[j]; + if (att && att.name) { + element.removeAttribute(att.name); + } + } + return $element.removeAttr('style').removeAttr('class').removeAttr('lang').removeAttr('type').removeAttr('align').removeAttr('id').removeAttr('wrap').removeAttr('title'); + }; + + ZammadChat.prototype.removeAttributes = function(html, parent) { + if (parent == null) { + parent = true; + } + if (parent) { + html.each((function(_this) { + return function(index, element) { + return _this.removeAttribute(element); + }; + })(this)); + } + html.find('*').each((function(_this) { + return function(index, element) { + return _this.removeAttribute(element); + }; + })(this)); + return html; + }; + return ZammadChat; })(Base); return window.ZammadChat = ZammadChat; })(window.jQuery, window); -if (!window.zammadChatTemplates) { - window.zammadChatTemplates = {}; -} -window.zammadChatTemplates["agent"] = function (__obj) { - if (!__obj) __obj = {}; - var __out = [], __capture = function(callback) { - var out = __out, result; - __out = []; - callback.call(this); - result = __out.join(''); - __out = out; - return __safe(result); - }, __sanitize = function(value) { - if (value && value.ecoSafe) { - return value; - } else if (typeof value !== 'undefined' && value != null) { - return __escape(value); - } else { - return ''; - } - }, __safe, __objSafe = __obj.safe, __escape = __obj.escape; - __safe = __obj.safe = function(value) { - if (value && value.ecoSafe) { - return value; - } else { - if (!(typeof value !== 'undefined' && value != null)) value = ''; - var result = new String(value); - result.ecoSafe = true; - return result; - } - }; - if (!__escape) { - __escape = __obj.escape = function(value) { - return ('' + value) - .replace(/&/g, '&') - .replace(//g, '>') - .replace(/"/g, '"'); - }; - } - (function() { - (function() { - if (this.agent.avatar) { - __out.push('\n\n'); - } - - __out.push('\n\n '); - - __out.push(__sanitize(this.agent.name)); - - __out.push('\n'); - - }).call(this); - - }).call(__obj); - __obj.safe = __objSafe, __obj.escape = __escape; - return __out.join(''); -}; - if (!window.zammadChatTemplates) { window.zammadChatTemplates = {}; } diff --git a/public/assets/chat/chat.min.js b/public/assets/chat/chat.min.js index fed77d7b7..91f5131c5 100644 --- a/public/assets/chat/chat.min.js +++ b/public/assets/chat/chat.min.js @@ -1,2 +1,2 @@ -var bind=function(t,e){return function(){return t.apply(e,arguments)}},slice=[].slice,extend=function(t,e){function s(){this.constructor=t}for(var n in e)hasProp.call(e,n)&&(t[n]=e[n]);return s.prototype=e.prototype,t.prototype=new s,t.__super__=e.prototype,t},hasProp={}.hasOwnProperty;!function(t,e){var s,n,i,o,a,r,l,h,d;return d=document.getElementsByTagName("script"),r=d[d.length-1],l=r.src.match(".*://([^:/]*).*")[1],h=r.src.match("(.*)://[^:/]*.*")[1],s=function(){function e(e){this.options=t.extend({},this.defaults,e),this.log=new i({debug:this.options.debug,logPrefix:this.options.logPrefix||this.logPrefix})}return e.prototype.defaults={debug:!1},e}(),i=function(){function e(e){this.log=bind(this.log,this),this.error=bind(this.error,this),this.notice=bind(this.notice,this),this.debug=bind(this.debug,this),this.options=t.extend({},this.defaults,e)}return e.prototype.defaults={debug:!1},e.prototype.debug=function(){var t;return t=1<=arguments.length?slice.call(arguments,0):[],this.options.debug?this.log("debug",t):void 0},e.prototype.notice=function(){var t;return t=1<=arguments.length?slice.call(arguments,0):[],this.log("notice",t)},e.prototype.error=function(){var t;return t=1<=arguments.length?slice.call(arguments,0):[],this.log("error",t)},e.prototype.log=function(e,s){var n,i,o,a;if(s.unshift("||"),s.unshift(e),s.unshift(this.options.logPrefix),console.log.apply(console,s),this.options.debug){for(a="",n=0,o=s.length;o>n;n++)i=s[n],a+=" ",a+="object"==typeof i?JSON.stringify(i):i&&i.toString?i.toString():i;return t(".js-chatLogDisplay").prepend("
                  "+a+"
                  ")}},e}(),o=function(t){function e(t){this.stop=bind(this.stop,this),this.start=bind(this.start,this),e.__super__.constructor.call(this,t)}return extend(e,t),e.prototype.timeoutStartedAt=null,e.prototype.logPrefix="timeout",e.prototype.defaults={debug:!1,timeout:4,timeoutIntervallCheck:.5},e.prototype.start=function(){var t,e;return this.stop(),e=new Date,t=function(t){return function(){var s;return s=new Date-new Date(e.getTime()+1e3*t.options.timeout*60),t.log.debug("Timeout check for "+t.options.timeout+" minutes (left "+s/1e3+" sec.)"),0>s?void 0:(t.stop(),t.options.callback())}}(this),this.log.debug("Start timeout in "+this.options.timeout+" minutes"),this.intervallId=setInterval(t,1e3*this.options.timeoutIntervallCheck*60)},e.prototype.stop=function(){return this.intervallId?(this.log.debug("Stop timeout of "+this.options.timeout+" minutes"),clearInterval(this.intervallId)):void 0},e}(s),n=function(t){function s(t){this.ping=bind(this.ping,this),this.send=bind(this.send,this),this.reconnect=bind(this.reconnect,this),this.close=bind(this.close,this),this.connect=bind(this.connect,this),this.set=bind(this.set,this),s.__super__.constructor.call(this,t)}return extend(s,t),s.prototype.logPrefix="io",s.prototype.set=function(t){var e,s,n;s=[];for(e in t)n=t[e],s.push(this.options[e]=n);return s},s.prototype.connect=function(){return this.log.debug("Connecting to "+this.options.host),this.ws=new e.WebSocket(""+this.options.host),this.ws.onopen=function(t){return function(e){return t.log.debug("onOpen",e),t.options.onOpen(e),t.ping()}}(this),this.ws.onmessage=function(t){return function(e){var s,n,i,o;for(o=JSON.parse(e.data),t.log.debug("onMessage",e.data),s=0,n=o.length;n>s;s++)i=o[s],"pong"===i.event&&t.ping();return t.options.onMessage?t.options.onMessage(o):void 0}}(this),this.ws.onclose=function(t){return function(e){if(t.log.debug("close websocket connection",e),t.pingDelayId&&clearTimeout(t.pingDelayId),t.manualClose){if(t.log.debug("manual close, onClose callback"),t.manualClose=!1,t.options.onClose)return t.options.onClose(e)}else if(t.log.debug("error close, onError callback"),t.options.onError)return t.options.onError("Connection lost...")}}(this),this.ws.onerror=function(t){return function(e){return t.log.debug("onError",e),t.options.onError?t.options.onError(e):void 0}}(this)},s.prototype.close=function(){return this.log.debug("close websocket manually"),this.manualClose=!0,this.ws.close()},s.prototype.reconnect=function(){return this.log.debug("reconnect"),this.close(),this.connect()},s.prototype.send=function(t,e){var s;return null==e&&(e={}),this.log.debug("send",t,e),s=JSON.stringify({event:t,data:e}),this.ws.send(s)},s.prototype.ping=function(){var t;return t=function(t){return function(){return t.send("ping")}}(this),this.pingDelayId=setTimeout(t,29e3)},s}(s),a=function(s){function i(s){return this.startTimeoutObservers=bind(this.startTimeoutObservers,this),this.onCssLoaded=bind(this.onCssLoaded,this),this.setAgentOnlineState=bind(this.setAgentOnlineState,this),this.onConnectionEstablished=bind(this.onConnectionEstablished,this),this.setSessionId=bind(this.setSessionId,this),this.onConnectionReestablished=bind(this.onConnectionReestablished,this),this.reconnect=bind(this.reconnect,this),this.destroy=bind(this.destroy,this),this.onScrollHintClick=bind(this.onScrollHintClick,this),this.detectScrolledtoBottom=bind(this.detectScrolledtoBottom,this),this.onLeaveTemporary=bind(this.onLeaveTemporary,this),this.onAgentTypingEnd=bind(this.onAgentTypingEnd,this),this.onAgentTypingStart=bind(this.onAgentTypingStart,this),this.onQueue=bind(this.onQueue,this),this.onQueueScreen=bind(this.onQueueScreen,this),this.onWebSocketClose=bind(this.onWebSocketClose,this),this.onCloseAnimationEnd=bind(this.onCloseAnimationEnd,this),this.close=bind(this.close,this),this.toggle=bind(this.toggle,this),this.sessionClose=bind(this.sessionClose,this),this.onOpenAnimationEnd=bind(this.onOpenAnimationEnd,this),this.open=bind(this.open,this),this.renderMessage=bind(this.renderMessage,this),this.receiveMessage=bind(this.receiveMessage,this),this.onSubmit=bind(this.onSubmit,this),this.onFocus=bind(this.onFocus,this),this.onInput=bind(this.onInput,this),this.onReopenSession=bind(this.onReopenSession,this),this.onError=bind(this.onError,this),this.onWebSocketMessage=bind(this.onWebSocketMessage,this),this.send=bind(this.send,this),this.checkForEnter=bind(this.checkForEnter,this),this.render=bind(this.render,this),this.view=bind(this.view,this),this.T=bind(this.T,this),this.options=t.extend({},this.defaults,s),i.__super__.constructor.call(this,this.options),this.isFullscreen=e.matchMedia&&e.matchMedia("(max-width: 768px)").matches,this.scrollRoot=t(this.getScrollRoot()),t?e.WebSocket&&sessionStorage?this.options.chatId?(this.options.lang||(this.options.lang=t("html").attr("lang")),this.options.lang&&(this.translations[this.options.lang]||(this.log.debug("lang: No "+this.options.lang+" found, try first two letters"),this.options.lang=this.options.lang.replace(/-.+?$/,"")),this.log.debug("lang: "+this.options.lang)),this.options.host||this.detectHost(),this.loadCss(),this.io=new n(this.options),this.io.set({onOpen:this.render,onClose:this.onWebSocketClose,onMessage:this.onWebSocketMessage,onError:this.onError}),void this.io.connect()):(this.state="unsupported",void this.log.error("Chat: need chatId as option!")):(this.state="unsupported",void this.log.notice("Chat: Browser not supported!")):(this.state="unsupported",void this.log.notice("Chat: no jquery found!"))}return extend(i,s),i.prototype.defaults={chatId:void 0,show:!0,target:t("body"),host:"",debug:!1,flat:!1,lang:void 0,cssAutoload:!0,cssUrl:void 0,fontSize:void 0,buttonClass:"open-zammad-chat",inactiveClass:"is-inactive",title:"Chat with us!",scrollHint:"Scrolle nach unten um neue Nachrichten zu sehen",idleTimeout:6,idleTimeoutIntervallCheck:.5,inactiveTimeout:8,inactiveTimeoutIntervallCheck:.5,waitingListTimeout:4,waitingListTimeoutIntervallCheck:.5},i.prototype.logPrefix="chat",i.prototype._messageCount=0,i.prototype.isOpen=!1,i.prototype.blinkOnlineInterval=null,i.prototype.stopBlinOnlineStateTimeout=null,i.prototype.showTimeEveryXMinutes=2,i.prototype.lastTimestamp=null,i.prototype.lastAddedType=null,i.prototype.inputTimeout=null,i.prototype.isTyping=!1,i.prototype.state="offline",i.prototype.initialQueueDelay=1e4,i.prototype.translations={de:{"Chat with us!":"Chatte mit uns!","Scroll down to see new messages":"Scrolle nach unten um neue Nachrichten zu sehen",Online:"Online",Online:"Online",Offline:"Offline",Connecting:"Verbinden","Connection re-established":"Verbindung wiederhergestellt",Today:"Heute",Send:"Senden","Compose your message...":"Ihre Nachricht...","All colleagues are busy.":"Alle Kollegen sind belegt.","You are on waiting list position %s.":"Sie sind in der Warteliste an der Position %s.","Start new conversation":"Neue Konversation starten","Since you didn't respond in the last %s minutes your conversation with %s got closed.":"Da Sie in den letzten %s Minuten nichts geschrieben haben wurde Ihre Konversation mit %s geschlossen.","Since you didn't respond in the last %s minutes your conversation got closed.":"Da Sie in den letzten %s Minuten nichts geschrieben haben wurde Ihre Konversation geschlossen.","We are sorry, it takes longer as expected to get an empty slot. Please try again later or send us an email. Thank you!":"Es tut uns leid, es dauert länger als erwartet, um einen freien Platz zu erhalten. Bitte versuchen Sie es zu einem späteren Zeitpunkt noch einmal oder schicken Sie uns eine E-Mail. Vielen Dank!"},fr:{"Chat with us!":"Chattez avec nous!","Scroll down to see new messages":"Faites défiler pour lire les nouveaux messages",Online:"En-ligne",Online:"En-ligne",Offline:"Hors-ligne",Connecting:"Connexion en cours","Connection re-established":"Connexion rétablie",Today:"Aujourdhui",Send:"Envoyer","Compose your message...":"Composez votre message...","All colleagues are busy.":"Tous les collègues sont actuellement occupés.","You are on waiting list position %s.":"Vous êtes actuellement en %s position dans la file d'attente.","Start new conversation":"Démarrer une nouvelle conversation","Since you didn't respond in the last %s minutes your conversation with %s got closed.":"Si vous ne répondez pas dans les %s minutes, votre conversation avec %s va être fermée.","Since you didn't respond in the last %s minutes your conversation got closed.":"Si vous ne répondez pas dans les %s minutes, votre conversation va être fermée.","We are sorry, it takes longer as expected to get an empty slot. Please try again later or send us an email. Thank you!":"Nous sommes désolés, il faut plus de temps que prévu pour obtenir un emplacement vide. Veuillez réessayer ultérieurement ou nous envoyer un courriel. Je vous remercie!"},"zh-cn":{"Chat with us!":"发起即时对话!","Scroll down to see new messages":"向下滚动以查看新消息",Online:"在线",Online:"在线",Offline:"离线",Connecting:"连接中","Connection re-established":"正在重新建立连接",Today:"今天",Send:"发送","Compose your message...":"正在输入信息...","All colleagues are busy.":"所有工作人员都在忙碌中.","You are on waiting list position %s.":"您目前的等候位置是第 %s 位.","Start new conversation":"开始新的会话","Since you didn't respond in the last %s minutes your conversation with %s got closed.":"由于您超过 %s 分钟没有回复, 您与 %s 的会话已被关闭.","Since you didn't respond in the last %s minutes your conversation got closed.":"由于您超过 %s 分钟没有任何回复, 该对话已被关闭.","We are sorry, it takes longer as expected to get an empty slot. Please try again later or send us an email. Thank you!":"非常抱歉, 目前需要等候更长的时间才能接入对话, 请稍后重试或向我们发送电子邮件. 谢谢!"},"zh-tw":{"Chat with us!":"開始即時對话!","Scroll down to see new messages":"向下滑動以查看新訊息",Online:"線上",Online:"線上",Offline:"离线",Connecting:"連線中","Connection re-established":"正在重新建立連線中",Today:"今天",Send:"發送","Compose your message...":"正在輸入訊息...","All colleagues are busy.":"所有服務人員都在忙碌中.","You are on waiting list position %s.":"你目前的等候位置是第 %s 順位.","Start new conversation":"開始新的對話","Since you didn't respond in the last %s minutes your conversation with %s got closed.":"由於你超過 %s 分鐘沒有回應, 你與 %s 的對話已被關閉.","Since you didn't respond in the last %s minutes your conversation got closed.":"由於你超過 %s 分鐘沒有任何回應, 該對話已被關閉.","We are sorry, it takes longer as expected to get an empty slot. Please try again later or send us an email. Thank you!":"非常抱歉, 當前需要等候更長的時間方可排入對話程序, 請稍後重試或向我們寄送電子郵件. 謝謝!"}},i.prototype.sessionId=void 0,i.prototype.scrolledToBottom=!0,i.prototype.scrollSnapTolerance=10,i.prototype.T=function(){var t,e,s,n,i,o;if(i=arguments[0],s=2<=arguments.length?slice.call(arguments,1):[],this.options.lang&&"en"!==this.options.lang&&(this.translations[this.options.lang]?(o=this.translations[this.options.lang],o[i]||this.log.notice("Translation needed for '"+i+"'"),i=o[i]||i):this.log.notice("Translation '"+this.options.lang+"' needed!")),s)for(t=0,n=s.length;n>t;t++)e=s[t],i=i.replace(/%s/,e);return i},i.prototype.view=function(t){return function(s){return function(n){return n||(n={}),n.T=s.T,n.background=s.options.background,n.flat=s.options.flat,n.fontSize=s.options.fontSize,e.zammadChatTemplates[t](n)}}(this)},i.prototype.getScrollRoot=function(){var t,e,s;return"scrollingElement"in document?document.scrollingElement:(e=document.documentElement,s=e.scrollTop,e.scrollTop=s+1,t=e.scrollTop,e.scrollTop=s,t>s?e:document.body)},i.prototype.render=function(){return this.el&&t(".zammad-chat").get(0)||this.renderBase(),t("."+this.options.buttonClass).addClass(this.inactiveClass),this.setAgentOnlineState("online"),this.log.debug("widget rendered"),this.startTimeoutObservers(),this.idleTimeout.start(),this.sessionId=sessionStorage.getItem("sessionId"),this.send("chat_status_customer",{session_id:this.sessionId,url:e.location.href})},i.prototype.renderBase=function(){return this.el=t(this.view("chat")({title:this.options.title,scrollHint:this.options.scrollHint})),this.options.target.append(this.el),this.input=this.el.find(".zammad-chat-input"),this.el.find(".js-chat-open").click(this.open),this.el.find(".js-chat-toggle").click(this.toggle),this.el.find(".zammad-chat-controls").on("submit",this.onSubmit),this.el.find(".zammad-chat-body").on("scroll",this.detectScrolledtoBottom),this.el.find(".zammad-scroll-hint").click(this.onScrollHintClick),this.input.on({keydown:this.checkForEnter,input:this.onInput}),t(e).on("beforeunload",function(t){return function(){return t.onLeaveTemporary()}}(this)),t(e).bind("hashchange",function(t){return function(){return t.isOpen?void(t.sessionId&&t.send("chat_session_notice",{session_id:t.sessionId,message:e.location.href})):t.idleTimeout.start()}}(this)),this.isFullscreen?this.input.on({focus:this.onFocus,focusout:this.onFocusOut}):void 0},i.prototype.checkForEnter=function(t){return t.shiftKey||13!==t.keyCode?void 0:(t.preventDefault(),this.sendMessage())},i.prototype.send=function(t,e){return null==e&&(e={}),e.chat_id=this.options.chatId,this.io.send(t,e)},i.prototype.onWebSocketMessage=function(t){var e,s,n;for(e=0,s=t.length;s>e;e++)switch(n=t[e],this.log.debug("ws:onmessage",n),n.event){case"chat_error":this.log.notice(n.data),n.data&&"chat_disabled"===n.data.state&&this.destroy({remove:!0});break;case"chat_session_message":if(n.data.self_written)return;this.receiveMessage(n.data);break;case"chat_session_typing":if(n.data.self_written)return;this.onAgentTypingStart();break;case"chat_session_start":this.onConnectionEstablished(n.data);break;case"chat_session_queue":this.onQueueScreen(n.data);break;case"chat_session_closed":this.onSessionClosed(n.data);break;case"chat_session_left":this.onSessionClosed(n.data);break;case"chat_status_customer":switch(n.data.state){case"online":this.sessionId=void 0,!this.options.cssAutoload||this.cssLoaded?this.onReady():this.socketReady=!0;break;case"offline":this.onError("Zammad Chat: No agent online");break;case"chat_disabled":this.onError("Zammad Chat: Chat is disabled");break;case"no_seats_available":this.onError("Zammad Chat: Too many clients in queue. Clients in queue: "+n.data.queue);break;case"reconnect":this.onReopenSession(n.data)}}},i.prototype.onReady=function(){return this.log.debug("widget ready for use"),t("."+this.options.buttonClass).click(this.open).removeClass(this.inactiveClass),this.options.show?this.show():void 0},i.prototype.onError=function(e){return this.log.debug(e),this.addStatus(e),t("."+this.options.buttonClass).hide(),this.isOpen?(this.disableInput(),this.destroy({remove:!1})):this.destroy({remove:!0})},i.prototype.onReopenSession=function(t){var e,s,n,i,o;if(this.log.debug("old messages",t.session),this.inactiveTimeout.start(),o=sessionStorage.getItem("unfinished_message"),t.agent){for(this.onConnectionEstablished(t),i=t.session,e=0,s=i.length;s>e;e++)n=i[e],this.renderMessage({message:n.content,id:n.id,from:n.created_by_id?"agent":"customer"});o&&this.input.html(o)}return t.position&&this.onQueue(t),this.show(),this.open(),this.scrollToBottom(),o?this.input.focus():void 0},i.prototype.onInput=function(){return this.el.find(".zammad-chat-message--unread").removeClass("zammad-chat-message--unread"),sessionStorage.setItem("unfinished_message",this.input.html()),this.onTyping()},i.prototype.onFocus=function(){var s;return t(e).scrollTop(10),s=t(e).scrollTop()>0,t(e).scrollTop(0),s?this.log.notice("virtual keyboard shown"):void 0},i.prototype.onFocusOut=function(){},i.prototype.onTyping=function(){return this.isTyping&&this.isTyping>new Date((new Date).getTime()-1500)?void 0:(this.isTyping=new Date,this.send("chat_session_typing",{session_id:this.sessionId}),this.inactiveTimeout.start())},i.prototype.onSubmit=function(t){return t.preventDefault(),this.sendMessage()},i.prototype.sendMessage=function(){var t,e;return(t=this.input.html())?(this.inactiveTimeout.start(),sessionStorage.removeItem("unfinished_message"),e=this.view("message")({message:t,from:"customer",id:this._messageCount++,unreadClass:""}),this.maybeAddTimestamp(),this.el.find(".zammad-chat-message--typing").get(0)?(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.input.html(""),this.scrollToBottom(),this.send("chat_session_message",{content:t,id:this._messageCount,session_id:this.sessionId})):void 0},i.prototype.receiveMessage=function(t){return this.inactiveTimeout.start(),this.onAgentTypingEnd(),this.maybeAddTimestamp(),this.renderMessage({message:t.message.content,id:t.id,from:"agent"}),this.scrollToBottom({showHint:!0})},i.prototype.renderMessage=function(t){return this.lastAddedType="message--"+t.from,t.unreadClass=document.hidden?" zammad-chat-message--unread":"",this.el.find(".zammad-chat-body").append(this.view("message")(t))},i.prototype.open=function(){var t;return this.isOpen?void this.log.debug("widget already open, block"):(this.isOpen=!0,this.log.debug("open widget"),this.sessionId||this.showLoader(),this.el.addClass("zammad-chat-is-open"),t=this.el.height()-this.el.find(".zammad-chat-header").outerHeight(),this.el.css("bottom",-t),this.sessionId?(this.el.css("bottom",0),this.onOpenAnimationEnd()):(this.el.animate({bottom:0},500,this.onOpenAnimationEnd),this.send("chat_session_init",{url:e.location.href})))},i.prototype.onOpenAnimationEnd=function(){return this.idleTimeout.stop(),this.isFullscreen?this.disableScrollOnRoot():void 0},i.prototype.sessionClose=function(){return this.send("chat_session_close",{session_id:this.sessionId}),this.inactiveTimeout.stop(),this.waitingListTimeout.stop(),sessionStorage.removeItem("unfinished_message"),this.onInitialQueueDelayId&&clearTimeout(this.onInitialQueueDelayId),this.setSessionId(void 0)},i.prototype.toggle=function(t){return this.isOpen?this.close(t):this.open(t)},i.prototype.close=function(t){var e;return this.isOpen?(this.initDelayId&&clearTimeout(this.initDelayId),this.sessionId?(this.log.debug("close widget"),t&&t.stopPropagation(),this.sessionClose(),this.isFullscreen&&this.enableScrollOnRoot(),e=this.el.height()-this.el.find(".zammad-chat-header").outerHeight(),this.el.animate({bottom:-e},500,this.onCloseAnimationEnd)):void this.log.debug("can't close widget without sessionId")):void this.log.debug("can't close widget, it's not open")},i.prototype.onCloseAnimationEnd=function(){return this.el.css("bottom",""),this.el.removeClass("zammad-chat-is-open"),this.showLoader(),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"),this.isOpen=!1,this.io.reconnect()},i.prototype.onWebSocketClose=function(){return this.isOpen?void 0:this.el?(this.el.removeClass("zammad-chat-is-shown"),this.el.removeClass("zammad-chat-is-loaded")):void 0},i.prototype.show=function(){return"offline"!==this.state?(this.el.addClass("zammad-chat-is-loaded"),this.el.addClass("zammad-chat-is-shown")):void 0},i.prototype.disableInput=function(){return this.input.prop("disabled",!0),this.el.find(".zammad-chat-send").prop("disabled",!0)},i.prototype.enableInput=function(){return this.input.prop("disabled",!1),this.el.find(".zammad-chat-send").prop("disabled",!1)},i.prototype.hideModal=function(){return this.el.find(".zammad-chat-modal").html("")},i.prototype.onQueueScreen=function(t){var e;return this.setSessionId(t.session_id),e=function(e){return function(){return e.onQueue(t),e.waitingListTimeout.start()}}(this),this.initialQueueDelay&&!this.onInitialQueueDelayId?void(this.onInitialQueueDelayId=setTimeout(e,this.initialQueueDelay)):(this.onInitialQueueDelayId&&clearTimeout(this.onInitialQueueDelayId),e())},i.prototype.onQueue=function(t){return this.log.notice("onQueue",t.position),this.inQueue=!0,this.el.find(".zammad-chat-modal").html(this.view("waiting")({position:t.position}))},i.prototype.onAgentTypingStart=function(){return this.stopTypingId&&clearTimeout(this.stopTypingId),this.stopTypingId=setTimeout(this.onAgentTypingEnd,3e3),!this.el.find(".zammad-chat-message--typing").get(0)&&(this.maybeAddTimestamp(),this.el.find(".zammad-chat-body").append(this.view("typingIndicator")()),this.isVisible(this.el.find(".zammad-chat-message--typing"),!0))?this.scrollToBottom():void 0},i.prototype.onAgentTypingEnd=function(){return this.el.find(".zammad-chat-message--typing").remove()},i.prototype.onLeaveTemporary=function(){return this.sessionId?this.send("chat_session_leave_temporary",{session_id:this.sessionId}):void 0},i.prototype.maybeAddTimestamp=function(){var t,e,s;return s=Date.now(),!this.lastTimestamp||s-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=s):(this.el.find(".zammad-chat-body").append(this.view("timestamp")({label:t,time:e})),this.lastTimestamp=s,this.lastAddedType="timestamp",this.scrollToBottom())):void 0},i.prototype.updateLastTimestamp=function(t,e){return this.el?this.el.find(".zammad-chat-body").find(".zammad-chat-timestamp").last().replaceWith(this.view("timestamp")({label:t,time:e})):void 0},i.prototype.addStatus=function(t){return this.el?(this.maybeAddTimestamp(),this.el.find(".zammad-chat-body").append(this.view("status")({status:t})),this.scrollToBottom()):void 0},i.prototype.detectScrolledtoBottom=function(){var t;return t=this.el.find(".zammad-chat-body").scrollTop()+this.el.find(".zammad-chat-body").outerHeight(),this.scrolledToBottom=Math.abs(t-this.el.find(".zammad-chat-body").prop("scrollHeight"))<=this.scrollSnapTolerance,this.scrolledToBottom?this.el.find(".zammad-scroll-hint").addClass("is-hidden"):void 0},i.prototype.showScrollHint=function(){return this.el.find(".zammad-scroll-hint").removeClass("is-hidden"),this.el.find(".zammad-chat-body").scrollTop(this.el.find(".zammad-chat-body").scrollTop()+this.el.find(".zammad-scroll-hint").outerHeight())},i.prototype.onScrollHintClick=function(){return this.el.find(".zammad-chat-body").animate({scrollTop:this.el.find(".zammad-chat-body").prop("scrollHeight")},300)},i.prototype.scrollToBottom=function(e){var s;return s=(null!=e?e:{showHint:!1}).showHint,this.scrolledToBottom?this.el.find(".zammad-chat-body").scrollTop(t(".zammad-chat-body").prop("scrollHeight")):s?this.showScrollHint():void 0},i.prototype.destroy=function(t){return null==t&&(t={}),this.log.debug("destroy widget",t),this.setAgentOnlineState("offline"),t.remove&&this.el&&this.el.remove(),this.waitingListTimeout&&this.waitingListTimeout.stop(),this.inactiveTimeout&&this.inactiveTimeout.stop(),this.idleTimeout&&this.idleTimeout.stop(),this.io.close()},i.prototype.reconnect=function(){return this.log.notice("reconnecting"),this.disableInput(),this.lastAddedType="status",this.setAgentOnlineState("connecting"),this.addStatus(this.T("Connection lost"))},i.prototype.onConnectionReestablished=function(){return this.lastAddedType="status",this.setAgentOnlineState("online"),this.addStatus(this.T("Connection re-established"))},i.prototype.onSessionClosed=function(t){return this.addStatus(this.T("Chat closed by %s",t.realname)),this.disableInput(),this.setAgentOnlineState("offline"),this.inactiveTimeout.stop()},i.prototype.setSessionId=function(t){return this.sessionId=t,void 0===t?sessionStorage.removeItem("sessionId"):sessionStorage.setItem("sessionId",t)},i.prototype.onConnectionEstablished=function(t){return this.onInitialQueueDelayId&&clearTimeout(this.onInitialQueueDelayId),this.inQueue=!1,t.agent&&(this.agent=t.agent),t.session_id&&this.setSessionId(t.session_id),this.el.find(".zammad-chat-body").html(""),this.el.find(".zammad-chat-agent").html(this.view("agent")({agent:this.agent})),this.enableInput(),this.hideModal(),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.isFullscreen||this.input.focus(),this.setAgentOnlineState("online"),this.waitingListTimeout.stop(),this.idleTimeout.stop(),this.inactiveTimeout.start()},i.prototype.showCustomerTimeout=function(){var t;return this.el.find(".zammad-chat-modal").html(this.view("customer_timeout")({agent:this.agent.name,delay:this.options.inactiveTimeout})),t=function(){return location.reload()},this.el.find(".js-restart").click(t),this.sessionClose()},i.prototype.showWaitingListTimeout=function(){var t;return this.el.find(".zammad-chat-modal").html(this.view("waiting_list_timeout")({delay:this.options.watingListTimeout})),t=function(){return location.reload()},this.el.find(".js-restart").click(t),this.sessionClose()},i.prototype.showLoader=function(){return this.el.find(".zammad-chat-modal").html(this.view("loader")())},i.prototype.setAgentOnlineState=function(t){var e;return this.state=t,this.el?(e=t.charAt(0).toUpperCase()+t.slice(1),this.el.find(".zammad-chat-agent-status").attr("data-status",t).text(this.T(e))):void 0},i.prototype.detectHost=function(){var t;return t="ws://","https"===h&&(t="wss://"),this.options.host=""+t+l+"/ws"},i.prototype.loadCss=function(){var t,e,s;if(this.options.cssAutoload)return s=this.options.cssUrl,s||(s=this.options.host.replace(/^wss/i,"https").replace(/^ws/i,"http").replace(/\/ws/i,""),s+="/assets/chat/chat.css"),this.log.debug("load css from '"+s+"'"),e="@import url('"+s+"');",t=document.createElement("link"),t.onload=this.onCssLoaded,t.rel="stylesheet",t.href="data:text/css,"+escape(e),document.getElementsByTagName("head")[0].appendChild(t)},i.prototype.onCssLoaded=function(){return this.socketReady?this.onReady():this.cssLoaded=!0},i.prototype.startTimeoutObservers=function(){return this.idleTimeout=new o({logPrefix:"idleTimeout",debug:this.options.debug,timeout:this.options.idleTimeout,timeoutIntervallCheck:this.options.idleTimeoutIntervallCheck,callback:function(t){return function(){return t.log.debug("Idle timeout reached, hide widget",new Date),t.destroy({remove:!0})}}(this)}),this.inactiveTimeout=new o({logPrefix:"inactiveTimeout",debug:this.options.debug,timeout:this.options.inactiveTimeout,timeoutIntervallCheck:this.options.inactiveTimeoutIntervallCheck,callback:function(t){return function(){return t.log.debug("Inactive timeout reached, show timeout screen.",new Date),t.showCustomerTimeout(),t.destroy({remove:!1})}}(this)}),this.waitingListTimeout=new o({logPrefix:"waitingListTimeout",debug:this.options.debug,timeout:this.options.waitingListTimeout,timeoutIntervallCheck:this.options.waitingListTimeoutIntervallCheck,callback:function(t){return function(){return t.log.debug("Waiting list timeout reached, show timeout screen.",new Date),t.showWaitingListTimeout(),t.destroy({remove:!1})}}(this)})},i.prototype.disableScrollOnRoot=function(){return this.rootScrollOffset=this.scrollRoot.scrollTop(),this.scrollRoot.css({overflow:"hidden",position:"fixed"})},i.prototype.enableScrollOnRoot=function(){return this.scrollRoot.scrollTop(this.rootScrollOffset),this.scrollRoot.css({overflow:"",position:""})},i.prototype.isVisible=function(s,n,i,o){var a,r,l,h,d,c,u,p,m,g,f,y,v,b,w,T,z,C,S,I,k,_,O,A,E,L;if(!(s.length<1))if(r=t(e),a=s.length>1?s.eq(0):s,C=a.get(0),L=r.width(),E=r.height(),o=o?o:"both",p=i===!0?C.offsetWidth*C.offsetHeight:!0,"function"==typeof C.getBoundingClientRect){if(z=C.getBoundingClientRect(),S=z.top>=0&&z.top0&&z.bottom<=E,b=z.left>=0&&z.left0&&z.right<=L,I=n?S||u:S&&u,v=n?b||T:b&&T,"both"===o)return p&&I&&v;if("vertical"===o)return p&&I;if("horizontal"===o)return p&&v}else{if(A=r.scrollTop(),k=A+E,_=r.scrollLeft(),O=_+L,w=a.offset(),c=w.top,l=c+a.height(),h=w.left,d=h+a.width(),y=n===!0?l:c,m=n===!0?c:l,g=n===!0?d:h,f=n===!0?h:d,"both"===o)return!!p&&k>=m&&y>=A&&O>=f&&g>=_;if("vertical"===o)return!!p&&k>=m&&y>=A;if("horizontal"===o)return!!p&&O>=f&&g>=_}},i}(s),e.ZammadChat=a}(window.jQuery,window),window.zammadChatTemplates||(window.zammadChatTemplates={}),window.zammadChatTemplates.agent=function(t){t||(t={});var e,s=[],n=function(t){return t&&t.ecoSafe?t:"undefined"!=typeof t&&null!=t?o(t):""},i=t.safe,o=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},o||(o=t.escape=function(t){return(""+t).replace(/&/g,"&").replace(//g,">").replace(/"/g,""")}),function(){(function(){this.agent.avatar&&(s.push('\n\n')),s.push('\n\n '),s.push(n(this.agent.name)),s.push("\n")}).call(this)}.call(t),t.safe=i,t.escape=o,s.join("")},window.zammadChatTemplates||(window.zammadChatTemplates={}),window.zammadChatTemplates.chat=function(t){t||(t={});var e,s=[],n=function(t){return t&&t.ecoSafe?t:"undefined"!=typeof t&&null!=t?o(t):""},i=t.safe,o=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},o||(o=t.escape=function(t){return(""+t).replace(/&/g,"&").replace(//g,">").replace(/"/g,""")}),function(){(function(){s.push('
                  \n
                  \n
                  \n \n \n \n \n \n
                  \n
                  \n
                  \n
                  \n \n '), -s.push(this.T(this.title)),s.push('\n
                  \n
                  \n
                  \n \n
                  \n
                  \n
                  \n \n
                  \n
                  ")}).call(this)}.call(t),t.safe=i,t.escape=o,s.join("")},window.zammadChatTemplates||(window.zammadChatTemplates={}),window.zammadChatTemplates.customer_timeout=function(t){t||(t={});var e,s=[],n=function(t){return t&&t.ecoSafe?t:"undefined"!=typeof t&&null!=t?o(t):""},i=t.safe,o=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},o||(o=t.escape=function(t){return(""+t).replace(/&/g,"&").replace(//g,">").replace(/"/g,""")}),function(){(function(){s.push('
                  \n '),this.agent?(s.push("\n "),s.push(this.T("Since you didn't respond in the last %s minutes your conversation with %s got closed.",this.delay,this.agent)),s.push("\n ")):(s.push("\n "),s.push(this.T("Since you didn't respond in the last %s minutes your conversation got closed.",this.delay)),s.push("\n ")),s.push('\n
                  \n
                  "),s.push(this.T("Start new conversation")),s.push("
                  \n
                  ")}).call(this)}.call(t),t.safe=i,t.escape=o,s.join("")},window.zammadChatTemplates||(window.zammadChatTemplates={}),window.zammadChatTemplates.loader=function(t){t||(t={});var e,s=[],n=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(){s.push('\n \n \n \n\n'),s.push(this.T("Connecting")),s.push("")}).call(this)}.call(t),t.safe=n,t.escape=i,s.join("")},window.zammadChatTemplates||(window.zammadChatTemplates={}),window.zammadChatTemplates.message=function(t){t||(t={});var e,s=[],n=function(t){return t&&t.ecoSafe?t:"undefined"!=typeof t&&null!=t?o(t):""},i=t.safe,o=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},o||(o=t.escape=function(t){return(""+t).replace(/&/g,"&").replace(//g,">").replace(/"/g,""")}),function(){(function(){s.push('
                  \n "),s.push(this.message),s.push("\n
                  ")}).call(this)}.call(t),t.safe=i,t.escape=o,s.join("")},window.zammadChatTemplates||(window.zammadChatTemplates={}),window.zammadChatTemplates.status=function(t){t||(t={});var e,s=[],n=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(){s.push('
                  \n
                  \n '),s.push(this.status),s.push("\n
                  \n
                  ")}).call(this)}.call(t),t.safe=n,t.escape=i,s.join("")},window.zammadChatTemplates||(window.zammadChatTemplates={}),window.zammadChatTemplates.timestamp=function(t){t||(t={});var e,s=[],n=function(t){return t&&t.ecoSafe?t:"undefined"!=typeof t&&null!=t?o(t):""},i=t.safe,o=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},o||(o=t.escape=function(t){return(""+t).replace(/&/g,"&").replace(//g,">").replace(/"/g,""")}),function(){(function(){s.push('
                  '),s.push(n(this.label)),s.push(" "),s.push(n(this.time)),s.push("
                  ")}).call(this)}.call(t),t.safe=i,t.escape=o,s.join("")},window.zammadChatTemplates||(window.zammadChatTemplates={}),window.zammadChatTemplates.typingIndicator=function(t){t||(t={});var e,s=[],n=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(){s.push('
                  \n \n \n \n \n \n \n \n
                  ')}).call(this)}.call(t),t.safe=n,t.escape=i,s.join("")},window.zammadChatTemplates||(window.zammadChatTemplates={}),window.zammadChatTemplates.waiting=function(t){t||(t={});var e,s=[],n=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(){s.push('
                  \n \n \n \n \n \n '),s.push(this.T("All colleagues are busy.")),s.push("
                  \n "),s.push(this.T("You are on waiting list position %s.",this.position)),s.push("\n
                  ")}).call(this)}.call(t),t.safe=n,t.escape=i,s.join("")},window.zammadChatTemplates||(window.zammadChatTemplates={}),window.zammadChatTemplates.waiting_list_timeout=function(t){t||(t={});var e,s=[],n=function(t){return t&&t.ecoSafe?t:"undefined"!=typeof t&&null!=t?o(t):""},i=t.safe,o=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},o||(o=t.escape=function(t){return(""+t).replace(/&/g,"&").replace(//g,">").replace(/"/g,""")}),function(){(function(){s.push('
                  \n '),s.push(this.T("We are sorry, it takes longer as expected to get an empty slot. Please try again later or send us an email. Thank you!")),s.push('\n
                  \n
                  "),s.push(this.T("Start new conversation")),s.push("
                  \n
                  ")}).call(this)}.call(t),t.safe=i,t.escape=o,s.join("")}; \ No newline at end of file +window.zammadChatTemplates||(window.zammadChatTemplates={}),window.zammadChatTemplates.agent=function(t){t||(t={});var e,n=[],s=function(t){return t&&t.ecoSafe?t:"undefined"!=typeof t&&null!=t?o(t):""},i=t.safe,o=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},o||(o=t.escape=function(t){return(""+t).replace(/&/g,"&").replace(//g,">").replace(/"/g,""")}),function(){(function(){this.agent.avatar&&(n.push('\n\n')),n.push('\n\n '),n.push(s(this.agent.name)),n.push("\n")}).call(this)}.call(t),t.safe=i,t.escape=o,n.join("")};var bind=function(t,e){return function(){return t.apply(e,arguments)}},slice=[].slice,extend=function(t,e){function n(){this.constructor=t}for(var s in e)hasProp.call(e,s)&&(t[s]=e[s]);return n.prototype=e.prototype,t.prototype=new n,t.__super__=e.prototype,t},hasProp={}.hasOwnProperty;!function(t,e){var n,s,i,o,a,r,l,h,d;return d=document.getElementsByTagName("script"),r=d[d.length-1],l=r.src.match(".*://([^:/]*).*")[1],h=r.src.match("(.*)://[^:/]*.*")[1],n=function(){function e(e){this.options=t.extend({},this.defaults,e),this.log=new i({debug:this.options.debug,logPrefix:this.options.logPrefix||this.logPrefix})}return e.prototype.defaults={debug:!1},e}(),i=function(){function e(e){this.log=bind(this.log,this),this.error=bind(this.error,this),this.notice=bind(this.notice,this),this.debug=bind(this.debug,this),this.options=t.extend({},this.defaults,e)}return e.prototype.defaults={debug:!1},e.prototype.debug=function(){var t;return t=1<=arguments.length?slice.call(arguments,0):[],this.options.debug?this.log("debug",t):void 0},e.prototype.notice=function(){var t;return t=1<=arguments.length?slice.call(arguments,0):[],this.log("notice",t)},e.prototype.error=function(){var t;return t=1<=arguments.length?slice.call(arguments,0):[],this.log("error",t)},e.prototype.log=function(e,n){var s,i,o,a;if(n.unshift("||"),n.unshift(e),n.unshift(this.options.logPrefix),console.log.apply(console,n),this.options.debug){for(a="",i=0,o=n.length;o>i;i++)s=n[i],a+=" ",a+="object"==typeof s?JSON.stringify(s):s&&s.toString?s.toString():s;return t(".js-chatLogDisplay").prepend("
                  "+a+"
                  ")}},e}(),o=function(t){function e(t){this.stop=bind(this.stop,this),this.start=bind(this.start,this),e.__super__.constructor.call(this,t)}return extend(e,t),e.prototype.timeoutStartedAt=null,e.prototype.logPrefix="timeout",e.prototype.defaults={debug:!1,timeout:4,timeoutIntervallCheck:.5},e.prototype.start=function(){var t,e;return this.stop(),e=new Date,t=function(t){return function(){var n;return n=new Date-new Date(e.getTime()+1e3*t.options.timeout*60),t.log.debug("Timeout check for "+t.options.timeout+" minutes (left "+n/1e3+" sec.)"),0>n?void 0:(t.stop(),t.options.callback())}}(this),this.log.debug("Start timeout in "+this.options.timeout+" minutes"),this.intervallId=setInterval(t,1e3*this.options.timeoutIntervallCheck*60)},e.prototype.stop=function(){return this.intervallId?(this.log.debug("Stop timeout of "+this.options.timeout+" minutes"),clearInterval(this.intervallId)):void 0},e}(n),s=function(t){function n(t){this.ping=bind(this.ping,this),this.send=bind(this.send,this),this.reconnect=bind(this.reconnect,this),this.close=bind(this.close,this),this.connect=bind(this.connect,this),this.set=bind(this.set,this),n.__super__.constructor.call(this,t)}return extend(n,t),n.prototype.logPrefix="io",n.prototype.set=function(t){var e,n,s;n=[];for(e in t)s=t[e],n.push(this.options[e]=s);return n},n.prototype.connect=function(){return this.log.debug("Connecting to "+this.options.host),this.ws=new e.WebSocket(""+this.options.host),this.ws.onopen=function(t){return function(e){return t.log.debug("onOpen",e),t.options.onOpen(e),t.ping()}}(this),this.ws.onmessage=function(t){return function(e){var n,s,i,o;for(o=JSON.parse(e.data),t.log.debug("onMessage",e.data),n=0,s=o.length;s>n;n++)i=o[n],"pong"===i.event&&t.ping();return t.options.onMessage?t.options.onMessage(o):void 0}}(this),this.ws.onclose=function(t){return function(e){if(t.log.debug("close websocket connection",e),t.pingDelayId&&clearTimeout(t.pingDelayId),t.manualClose){if(t.log.debug("manual close, onClose callback"),t.manualClose=!1,t.options.onClose)return t.options.onClose(e)}else if(t.log.debug("error close, onError callback"),t.options.onError)return t.options.onError("Connection lost...")}}(this),this.ws.onerror=function(t){return function(e){return t.log.debug("onError",e),t.options.onError?t.options.onError(e):void 0}}(this)},n.prototype.close=function(){return this.log.debug("close websocket manually"),this.manualClose=!0,this.ws.close()},n.prototype.reconnect=function(){return this.log.debug("reconnect"),this.close(),this.connect()},n.prototype.send=function(t,e){var n;return null==e&&(e={}),this.log.debug("send",t,e),n=JSON.stringify({event:t,data:e}),this.ws.send(n)},n.prototype.ping=function(){var t;return t=function(t){return function(){return t.send("ping")}}(this),this.pingDelayId=setTimeout(t,29e3)},n}(n),a=function(n){function i(n){return this.removeAttributes=bind(this.removeAttributes,this),this.startTimeoutObservers=bind(this.startTimeoutObservers,this),this.onCssLoaded=bind(this.onCssLoaded,this),this.setAgentOnlineState=bind(this.setAgentOnlineState,this),this.onConnectionEstablished=bind(this.onConnectionEstablished,this),this.setSessionId=bind(this.setSessionId,this),this.onConnectionReestablished=bind(this.onConnectionReestablished,this),this.reconnect=bind(this.reconnect,this),this.destroy=bind(this.destroy,this),this.onScrollHintClick=bind(this.onScrollHintClick,this),this.detectScrolledtoBottom=bind(this.detectScrolledtoBottom,this),this.onLeaveTemporary=bind(this.onLeaveTemporary,this),this.onAgentTypingEnd=bind(this.onAgentTypingEnd,this),this.onAgentTypingStart=bind(this.onAgentTypingStart,this),this.onQueue=bind(this.onQueue,this),this.onQueueScreen=bind(this.onQueueScreen,this),this.onWebSocketClose=bind(this.onWebSocketClose,this),this.onCloseAnimationEnd=bind(this.onCloseAnimationEnd,this),this.close=bind(this.close,this),this.toggle=bind(this.toggle,this),this.sessionClose=bind(this.sessionClose,this),this.onOpenAnimationEnd=bind(this.onOpenAnimationEnd,this),this.open=bind(this.open,this),this.renderMessage=bind(this.renderMessage,this),this.receiveMessage=bind(this.receiveMessage,this),this.onSubmit=bind(this.onSubmit,this),this.onFocus=bind(this.onFocus,this),this.onInput=bind(this.onInput,this),this.onReopenSession=bind(this.onReopenSession,this),this.onError=bind(this.onError,this),this.onWebSocketMessage=bind(this.onWebSocketMessage,this),this.send=bind(this.send,this),this.checkForEnter=bind(this.checkForEnter,this),this.render=bind(this.render,this),this.view=bind(this.view,this),this.T=bind(this.T,this),this.options=t.extend({},this.defaults,n),i.__super__.constructor.call(this,this.options),this.isFullscreen=e.matchMedia&&e.matchMedia("(max-width: 768px)").matches,this.scrollRoot=t(this.getScrollRoot()),t?e.WebSocket&&sessionStorage?this.options.chatId?(this.options.lang||(this.options.lang=t("html").attr("lang")),this.options.lang&&(this.translations[this.options.lang]||(this.log.debug("lang: No "+this.options.lang+" found, try first two letters"),this.options.lang=this.options.lang.replace(/-.+?$/,"")),this.log.debug("lang: "+this.options.lang)),this.options.host||this.detectHost(),this.loadCss(),this.io=new s(this.options),this.io.set({onOpen:this.render,onClose:this.onWebSocketClose,onMessage:this.onWebSocketMessage,onError:this.onError}),void this.io.connect()):(this.state="unsupported",void this.log.error("Chat: need chatId as option!")):(this.state="unsupported",void this.log.notice("Chat: Browser not supported!")):(this.state="unsupported",void this.log.notice("Chat: no jquery found!"))}return extend(i,n),i.prototype.defaults={chatId:void 0,show:!0,target:t("body"),host:"",debug:!1,flat:!1,lang:void 0,cssAutoload:!0,cssUrl:void 0,fontSize:void 0,buttonClass:"open-zammad-chat",inactiveClass:"is-inactive",title:"Chat with us!",scrollHint:"Scrolle nach unten um neue Nachrichten zu sehen",idleTimeout:6,idleTimeoutIntervallCheck:.5,inactiveTimeout:8,inactiveTimeoutIntervallCheck:.5,waitingListTimeout:4,waitingListTimeoutIntervallCheck:.5},i.prototype.logPrefix="chat",i.prototype._messageCount=0,i.prototype.isOpen=!1,i.prototype.blinkOnlineInterval=null,i.prototype.stopBlinOnlineStateTimeout=null,i.prototype.showTimeEveryXMinutes=2,i.prototype.lastTimestamp=null,i.prototype.lastAddedType=null,i.prototype.inputTimeout=null,i.prototype.isTyping=!1,i.prototype.state="offline",i.prototype.initialQueueDelay=1e4,i.prototype.translations={de:{"Chat with us!":"Chatte mit uns!","Scroll down to see new messages":"Scrolle nach unten um neue Nachrichten zu sehen",Online:"Online",Online:"Online",Offline:"Offline",Connecting:"Verbinden","Connection re-established":"Verbindung wiederhergestellt",Today:"Heute",Send:"Senden","Compose your message...":"Ihre Nachricht...","All colleagues are busy.":"Alle Kollegen sind belegt.","You are on waiting list position %s.":"Sie sind in der Warteliste an der Position %s.","Start new conversation":"Neue Konversation starten","Since you didn't respond in the last %s minutes your conversation with %s got closed.":"Da Sie in den letzten %s Minuten nichts geschrieben haben wurde Ihre Konversation mit %s geschlossen.","Since you didn't respond in the last %s minutes your conversation got closed.":"Da Sie in den letzten %s Minuten nichts geschrieben haben wurde Ihre Konversation geschlossen.","We are sorry, it takes longer as expected to get an empty slot. Please try again later or send us an email. Thank you!":"Es tut uns leid, es dauert länger als erwartet, um einen freien Platz zu erhalten. Bitte versuchen Sie es zu einem späteren Zeitpunkt noch einmal oder schicken Sie uns eine E-Mail. Vielen Dank!"},fr:{"Chat with us!":"Chattez avec nous!","Scroll down to see new messages":"Faites défiler pour lire les nouveaux messages",Online:"En-ligne",Online:"En-ligne",Offline:"Hors-ligne",Connecting:"Connexion en cours","Connection re-established":"Connexion rétablie",Today:"Aujourdhui",Send:"Envoyer","Compose your message...":"Composez votre message...","All colleagues are busy.":"Tous les collègues sont actuellement occupés.","You are on waiting list position %s.":"Vous êtes actuellement en %s position dans la file d'attente.","Start new conversation":"Démarrer une nouvelle conversation","Since you didn't respond in the last %s minutes your conversation with %s got closed.":"Si vous ne répondez pas dans les %s minutes, votre conversation avec %s va être fermée.","Since you didn't respond in the last %s minutes your conversation got closed.":"Si vous ne répondez pas dans les %s minutes, votre conversation va être fermée.","We are sorry, it takes longer as expected to get an empty slot. Please try again later or send us an email. Thank you!":"Nous sommes désolés, il faut plus de temps que prévu pour obtenir un emplacement vide. Veuillez réessayer ultérieurement ou nous envoyer un courriel. Je vous remercie!"},"zh-cn":{"Chat with us!":"发起即时对话!","Scroll down to see new messages":"向下滚动以查看新消息",Online:"在线",Online:"在线",Offline:"离线",Connecting:"连接中","Connection re-established":"正在重新建立连接",Today:"今天",Send:"发送","Compose your message...":"正在输入信息...","All colleagues are busy.":"所有工作人员都在忙碌中.","You are on waiting list position %s.":"您目前的等候位置是第 %s 位.","Start new conversation":"开始新的会话","Since you didn't respond in the last %s minutes your conversation with %s got closed.":"由于您超过 %s 分钟没有回复, 您与 %s 的会话已被关闭.","Since you didn't respond in the last %s minutes your conversation got closed.":"由于您超过 %s 分钟没有任何回复, 该对话已被关闭.","We are sorry, it takes longer as expected to get an empty slot. Please try again later or send us an email. Thank you!":"非常抱歉, 目前需要等候更长的时间才能接入对话, 请稍后重试或向我们发送电子邮件. 谢谢!"},"zh-tw":{"Chat with us!":"開始即時對话!","Scroll down to see new messages":"向下滑動以查看新訊息",Online:"線上",Online:"線上",Offline:"离线",Connecting:"連線中","Connection re-established":"正在重新建立連線中",Today:"今天",Send:"發送","Compose your message...":"正在輸入訊息...","All colleagues are busy.":"所有服務人員都在忙碌中.","You are on waiting list position %s.":"你目前的等候位置是第 %s 順位.","Start new conversation":"開始新的對話","Since you didn't respond in the last %s minutes your conversation with %s got closed.":"由於你超過 %s 分鐘沒有回應, 你與 %s 的對話已被關閉.","Since you didn't respond in the last %s minutes your conversation got closed.":"由於你超過 %s 分鐘沒有任何回應, 該對話已被關閉.","We are sorry, it takes longer as expected to get an empty slot. Please try again later or send us an email. Thank you!":"非常抱歉, 當前需要等候更長的時間方可排入對話程序, 請稍後重試或向我們寄送電子郵件. 謝謝!"}},i.prototype.sessionId=void 0,i.prototype.scrolledToBottom=!0,i.prototype.scrollSnapTolerance=10,i.prototype.richTextFormatKey={66:!0,73:!0,85:!0,83:!0},i.prototype.T=function(){var t,e,n,s,i,o;if(i=arguments[0],e=2<=arguments.length?slice.call(arguments,1):[],this.options.lang&&"en"!==this.options.lang&&(this.translations[this.options.lang]?(o=this.translations[this.options.lang],o[i]||this.log.notice("Translation needed for '"+i+"'"),i=o[i]||i):this.log.notice("Translation '"+this.options.lang+"' needed!")),e)for(n=0,s=e.length;s>n;n++)t=e[n],i=i.replace(/%s/,t);return i},i.prototype.view=function(t){return function(n){return function(s){return s||(s={}),s.T=n.T,s.background=n.options.background,s.flat=n.options.flat,s.fontSize=n.options.fontSize,e.zammadChatTemplates[t](s)}}(this)},i.prototype.getScrollRoot=function(){var t,e,n;return"scrollingElement"in document?document.scrollingElement:(e=document.documentElement,n=e.scrollTop,e.scrollTop=n+1,t=e.scrollTop,e.scrollTop=n,t>n?e:document.body)},i.prototype.render=function(){return this.el&&t(".zammad-chat").get(0)||this.renderBase(),t("."+this.options.buttonClass).addClass(this.inactiveClass),this.setAgentOnlineState("online"),this.log.debug("widget rendered"),this.startTimeoutObservers(),this.idleTimeout.start(),this.sessionId=sessionStorage.getItem("sessionId"),this.send("chat_status_customer",{session_id:this.sessionId,url:e.location.href})},i.prototype.renderBase=function(){return this.el=t(this.view("chat")({title:this.options.title,scrollHint:this.options.scrollHint})),this.options.target.append(this.el),this.input=this.el.find(".zammad-chat-input"),this.el.find(".js-chat-open").click(this.open),this.el.find(".js-chat-toggle").click(this.toggle),this.el.find(".zammad-chat-controls").on("submit",this.onSubmit),this.el.find(".zammad-chat-body").on("scroll",this.detectScrolledtoBottom),this.el.find(".zammad-scroll-hint").click(this.onScrollHintClick),this.input.on({keydown:this.checkForEnter,input:this.onInput}),this.input.on("keydown",function(t){return function(e){var n;if(n=!1,e.altKey||e.ctrlKey||!e.metaKey?e.altKey||!e.ctrlKey||e.metaKey||(n=!0):n=!0,n&&t.richTextFormatKey[e.keyCode]){if(e.preventDefault(),66===e.keyCode)return document.execCommand("bold"),!0;if(73===e.keyCode)return document.execCommand("italic"),!0;if(85===e.keyCode)return document.execCommand("underline"),!0;if(83===e.keyCode)return document.execCommand("strikeThrough"),!0}}}(this)),this.input.on("paste",function(n){return function(s){var i,o,a,r,l,h,d,c,u,p,m,g,f;if(s.stopPropagation(),s.preventDefault(),s.clipboardData)i=s.clipboardData;else if(e.clipboardData)i=e.clipboardData;else{if(!s.originalEvent.clipboardData)throw"No clipboardData support";i=s.originalEvent.clipboardData}if(d=!1,i&&i.items&&i.items[0]&&(c=i.items[0],"file"!==c.kind||"image/png"!==c.type&&"image/jpeg"!==c.type||(h=c.getAsFile(),p=new FileReader,p.onload=function(t){var e,s,i;return i=t.target.result,e=document.createElement("img"),e.src=i,s=function(t,s,o,a){return n.isRetina()&&(s/=2,o/=2),i=t,e='',document.execCommand("insertHTML",!1,e)},n.resizeImage(e.src,460,"auto",2,"image/jpeg","auto",s)},p.readAsDataURL(h),d=!0)),!d){f=void 0,o=void 0;try{f=i.getData("text/html"),o="html",f&&0!==f.length||(o="text",f=i.getData("text/plain")),f&&0!==f.length||(o="text2",f=i.getData("text"))}catch(a){s=a,console.log("Sorry, can't insert markup because browser is not supporting it."),o="text3",f=i.getData("text")}return("text"===o||"text2"===o||"text3"===o)&&(f="
                  "+f.replace(/\n/g,"
                  ")+"
                  ",f=f.replace(/
                  <\/div>/g,"

                  ")),console.log("p",o,f),"html"===o&&(r=t("
                  "+f+"
                  "),u=!1,l=f,m=new RegExp("<(/w|w):[A-Za-z]"),l.match(m)&&(u=!0,l=l.replace(m,"")),m=new RegExp("<(/o|o):[A-Za-z]"),l.match(m)&&(u=!0,l=l.replace(m,"")),u&&(r=n.wordFilter(r)),r=t(r),r.contents().each(function(){return 8===this.nodeType?t(this).remove():void 0}),r.find("a, font, small, time, form, label").replaceWith(function(){return t(this).contents()}),g="div",r.find("textarea").each(function(){var e,n;return n=this.outerHTML,m=new RegExp("<"+this.tagName,"i"),e=n.replace(m,"<"+g),m=new RegExp("'),s=s.get(0),document.caretPositionFromPoint?(d=document.caretPositionFromPoint(r,l),c=document.createRange(),c.setStart(d.offsetNode,d.offset),c.collapse(),c.insertNode(s)):document.caretRangeFromPoint?(c=document.caretRangeFromPoint(r,l),c.insertNode(s)):console.log("could not find carat")},n.resizeImage(s.src,460,"auto",2,"image/jpeg","auto",i)},a.readAsDataURL(o)):void 0}}(this)),t(e).on("beforeunload",function(t){return function(){return t.onLeaveTemporary()}}(this)),t(e).bind("hashchange",function(t){return function(){return t.isOpen?void(t.sessionId&&t.send("chat_session_notice",{session_id:t.sessionId,message:e.location.href})):t.idleTimeout.start()}}(this)),this.isFullscreen?this.input.on({focus:this.onFocus,focusout:this.onFocusOut}):void 0},i.prototype.checkForEnter=function(t){return t.shiftKey||13!==t.keyCode?void 0:(t.preventDefault(),this.sendMessage())},i.prototype.send=function(t,e){return null==e&&(e={}),e.chat_id=this.options.chatId,this.io.send(t,e)},i.prototype.onWebSocketMessage=function(t){var e,n,s;for(e=0,n=t.length;n>e;e++)switch(s=t[e],this.log.debug("ws:onmessage",s),s.event){case"chat_error":this.log.notice(s.data),s.data&&"chat_disabled"===s.data.state&&this.destroy({remove:!0});break;case"chat_session_message":if(s.data.self_written)return;this.receiveMessage(s.data);break;case"chat_session_typing":if(s.data.self_written)return;this.onAgentTypingStart();break;case"chat_session_start":this.onConnectionEstablished(s.data);break;case"chat_session_queue":this.onQueueScreen(s.data);break;case"chat_session_closed":this.onSessionClosed(s.data);break;case"chat_session_left":this.onSessionClosed(s.data);break;case"chat_status_customer":switch(s.data.state){case"online":this.sessionId=void 0,!this.options.cssAutoload||this.cssLoaded?this.onReady():this.socketReady=!0;break;case"offline":this.onError("Zammad Chat: No agent online");break;case"chat_disabled":this.onError("Zammad Chat: Chat is disabled");break;case"no_seats_available":this.onError("Zammad Chat: Too many clients in queue. Clients in queue: "+s.data.queue);break;case"reconnect":this.onReopenSession(s.data)}}},i.prototype.onReady=function(){return this.log.debug("widget ready for use"),t("."+this.options.buttonClass).click(this.open).removeClass(this.inactiveClass),this.options.show?this.show():void 0},i.prototype.onError=function(e){return this.log.debug(e),this.addStatus(e),t("."+this.options.buttonClass).hide(),this.isOpen?(this.disableInput(),this.destroy({remove:!1})):this.destroy({remove:!0})},i.prototype.onReopenSession=function(t){var e,n,s,i,o;if(this.log.debug("old messages",t.session),this.inactiveTimeout.start(),o=sessionStorage.getItem("unfinished_message"),t.agent){for(this.onConnectionEstablished(t),i=t.session,e=0,n=i.length;n>e;e++)s=i[e],this.renderMessage({message:s.content,id:s.id,from:s.created_by_id?"agent":"customer"});o&&this.input.html(o)}return t.position&&this.onQueue(t),this.show(),this.open(),this.scrollToBottom(),o?this.input.focus():void 0},i.prototype.onInput=function(){return this.el.find(".zammad-chat-message--unread").removeClass("zammad-chat-message--unread"),sessionStorage.setItem("unfinished_message",this.input.html()),this.onTyping()},i.prototype.onFocus=function(){var n;return t(e).scrollTop(10),n=t(e).scrollTop()>0,t(e).scrollTop(0),n?this.log.notice("virtual keyboard shown"):void 0},i.prototype.onFocusOut=function(){},i.prototype.onTyping=function(){return this.isTyping&&this.isTyping>new Date((new Date).getTime()-1500)?void 0:(this.isTyping=new Date,this.send("chat_session_typing",{session_id:this.sessionId}),this.inactiveTimeout.start())},i.prototype.onSubmit=function(t){return t.preventDefault(),this.sendMessage()},i.prototype.sendMessage=function(){var t,e;return(t=this.input.html())?(this.inactiveTimeout.start(),sessionStorage.removeItem("unfinished_message"),e=this.view("message")({message:t,from:"customer",id:this._messageCount++,unreadClass:""}),this.maybeAddTimestamp(),this.el.find(".zammad-chat-message--typing").get(0)?(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.input.html(""),this.scrollToBottom(),this.send("chat_session_message",{content:t,id:this._messageCount,session_id:this.sessionId})):void 0},i.prototype.receiveMessage=function(t){return this.inactiveTimeout.start(),this.onAgentTypingEnd(),this.maybeAddTimestamp(),this.renderMessage({message:t.message.content,id:t.id,from:"agent"}),this.scrollToBottom({showHint:!0})},i.prototype.renderMessage=function(t){return this.lastAddedType="message--"+t.from,t.unreadClass=document.hidden?" zammad-chat-message--unread":"",this.el.find(".zammad-chat-body").append(this.view("message")(t))},i.prototype.open=function(){var t;return this.isOpen?void this.log.debug("widget already open, block"):(this.isOpen=!0,this.log.debug("open widget"),this.sessionId||this.showLoader(),this.el.addClass("zammad-chat-is-open"),t=this.el.height()-this.el.find(".zammad-chat-header").outerHeight(),this.el.css("bottom",-t),this.sessionId?(this.el.css("bottom",0),this.onOpenAnimationEnd()):(this.el.animate({bottom:0},500,this.onOpenAnimationEnd),this.send("chat_session_init",{url:e.location.href})))},i.prototype.onOpenAnimationEnd=function(){return this.idleTimeout.stop(),this.isFullscreen?this.disableScrollOnRoot():void 0},i.prototype.sessionClose=function(){return this.send("chat_session_close",{session_id:this.sessionId}),this.inactiveTimeout.stop(),this.waitingListTimeout.stop(),sessionStorage.removeItem("unfinished_message"),this.onInitialQueueDelayId&&clearTimeout(this.onInitialQueueDelayId),this.setSessionId(void 0)},i.prototype.toggle=function(t){return this.isOpen?this.close(t):this.open(t)},i.prototype.close=function(t){var e;return this.isOpen?(this.initDelayId&&clearTimeout(this.initDelayId),this.sessionId?(this.log.debug("close widget"),t&&t.stopPropagation(),this.sessionClose(),this.isFullscreen&&this.enableScrollOnRoot(),e=this.el.height()-this.el.find(".zammad-chat-header").outerHeight(),this.el.animate({bottom:-e},500,this.onCloseAnimationEnd)):void this.log.debug("can't close widget without sessionId")):void this.log.debug("can't close widget, it's not open")},i.prototype.onCloseAnimationEnd=function(){return this.el.css("bottom",""),this.el.removeClass("zammad-chat-is-open"),this.showLoader(),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"),this.isOpen=!1,this.io.reconnect()},i.prototype.onWebSocketClose=function(){return this.isOpen?void 0:this.el?(this.el.removeClass("zammad-chat-is-shown"),this.el.removeClass("zammad-chat-is-loaded")):void 0},i.prototype.show=function(){return"offline"!==this.state?(this.el.addClass("zammad-chat-is-loaded"),this.el.addClass("zammad-chat-is-shown")):void 0},i.prototype.disableInput=function(){return this.input.prop("disabled",!0),this.el.find(".zammad-chat-send").prop("disabled",!0)},i.prototype.enableInput=function(){return this.input.prop("disabled",!1),this.el.find(".zammad-chat-send").prop("disabled",!1)},i.prototype.hideModal=function(){return this.el.find(".zammad-chat-modal").html("")},i.prototype.onQueueScreen=function(t){var e;return this.setSessionId(t.session_id),e=function(e){return function(){return e.onQueue(t),e.waitingListTimeout.start()}}(this),this.initialQueueDelay&&!this.onInitialQueueDelayId?void(this.onInitialQueueDelayId=setTimeout(e,this.initialQueueDelay)):(this.onInitialQueueDelayId&&clearTimeout(this.onInitialQueueDelayId),e())},i.prototype.onQueue=function(t){return this.log.notice("onQueue",t.position),this.inQueue=!0,this.el.find(".zammad-chat-modal").html(this.view("waiting")({position:t.position}))},i.prototype.onAgentTypingStart=function(){return this.stopTypingId&&clearTimeout(this.stopTypingId),this.stopTypingId=setTimeout(this.onAgentTypingEnd,3e3),!this.el.find(".zammad-chat-message--typing").get(0)&&(this.maybeAddTimestamp(),this.el.find(".zammad-chat-body").append(this.view("typingIndicator")()),this.isVisible(this.el.find(".zammad-chat-message--typing"),!0))?this.scrollToBottom():void 0},i.prototype.onAgentTypingEnd=function(){return this.el.find(".zammad-chat-message--typing").remove()},i.prototype.onLeaveTemporary=function(){return this.sessionId?this.send("chat_session_leave_temporary",{session_id:this.sessionId}):void 0},i.prototype.maybeAddTimestamp=function(){var t,e,n;return n=Date.now(),!this.lastTimestamp||n-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=n):(this.el.find(".zammad-chat-body").append(this.view("timestamp")({label:t,time:e})),this.lastTimestamp=n,this.lastAddedType="timestamp",this.scrollToBottom())):void 0},i.prototype.updateLastTimestamp=function(t,e){return this.el?this.el.find(".zammad-chat-body").find(".zammad-chat-timestamp").last().replaceWith(this.view("timestamp")({label:t,time:e})):void 0},i.prototype.addStatus=function(t){return this.el?(this.maybeAddTimestamp(),this.el.find(".zammad-chat-body").append(this.view("status")({status:t})),this.scrollToBottom()):void 0},i.prototype.detectScrolledtoBottom=function(){var t;return t=this.el.find(".zammad-chat-body").scrollTop()+this.el.find(".zammad-chat-body").outerHeight(),this.scrolledToBottom=Math.abs(t-this.el.find(".zammad-chat-body").prop("scrollHeight"))<=this.scrollSnapTolerance,this.scrolledToBottom?this.el.find(".zammad-scroll-hint").addClass("is-hidden"):void 0},i.prototype.showScrollHint=function(){return this.el.find(".zammad-scroll-hint").removeClass("is-hidden"),this.el.find(".zammad-chat-body").scrollTop(this.el.find(".zammad-chat-body").scrollTop()+this.el.find(".zammad-scroll-hint").outerHeight())},i.prototype.onScrollHintClick=function(){return this.el.find(".zammad-chat-body").animate({scrollTop:this.el.find(".zammad-chat-body").prop("scrollHeight")},300)},i.prototype.scrollToBottom=function(e){var n;return n=(null!=e?e:{showHint:!1}).showHint,this.scrolledToBottom?this.el.find(".zammad-chat-body").scrollTop(t(".zammad-chat-body").prop("scrollHeight")):n?this.showScrollHint():void 0},i.prototype.destroy=function(t){return null==t&&(t={}),this.log.debug("destroy widget",t),this.setAgentOnlineState("offline"),t.remove&&this.el&&this.el.remove(),this.waitingListTimeout&&this.waitingListTimeout.stop(),this.inactiveTimeout&&this.inactiveTimeout.stop(),this.idleTimeout&&this.idleTimeout.stop(),this.io.close()},i.prototype.reconnect=function(){return this.log.notice("reconnecting"),this.disableInput(),this.lastAddedType="status",this.setAgentOnlineState("connecting"),this.addStatus(this.T("Connection lost"))},i.prototype.onConnectionReestablished=function(){return this.lastAddedType="status",this.setAgentOnlineState("online"),this.addStatus(this.T("Connection re-established"))},i.prototype.onSessionClosed=function(t){return this.addStatus(this.T("Chat closed by %s",t.realname)),this.disableInput(),this.setAgentOnlineState("offline"),this.inactiveTimeout.stop()},i.prototype.setSessionId=function(t){return this.sessionId=t,void 0===t?sessionStorage.removeItem("sessionId"):sessionStorage.setItem("sessionId",t)},i.prototype.onConnectionEstablished=function(t){return this.onInitialQueueDelayId&&clearTimeout(this.onInitialQueueDelayId),this.inQueue=!1,t.agent&&(this.agent=t.agent),t.session_id&&this.setSessionId(t.session_id),this.el.find(".zammad-chat-body").html(""),this.el.find(".zammad-chat-agent").html(this.view("agent")({agent:this.agent})),this.enableInput(),this.hideModal(),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.isFullscreen||this.input.focus(),this.setAgentOnlineState("online"),this.waitingListTimeout.stop(),this.idleTimeout.stop(),this.inactiveTimeout.start()},i.prototype.showCustomerTimeout=function(){var t;return this.el.find(".zammad-chat-modal").html(this.view("customer_timeout")({agent:this.agent.name,delay:this.options.inactiveTimeout})),t=function(){return location.reload()},this.el.find(".js-restart").click(t),this.sessionClose()},i.prototype.showWaitingListTimeout=function(){var t;return this.el.find(".zammad-chat-modal").html(this.view("waiting_list_timeout")({delay:this.options.watingListTimeout})),t=function(){return location.reload()},this.el.find(".js-restart").click(t),this.sessionClose()},i.prototype.showLoader=function(){return this.el.find(".zammad-chat-modal").html(this.view("loader")())},i.prototype.setAgentOnlineState=function(t){var e;return this.state=t,this.el?(e=t.charAt(0).toUpperCase()+t.slice(1),this.el.find(".zammad-chat-agent-status").attr("data-status",t).text(this.T(e))):void 0},i.prototype.detectHost=function(){var t;return t="ws://","https"===h&&(t="wss://"),this.options.host=""+t+l+"/ws"},i.prototype.loadCss=function(){var t,e,n;if(this.options.cssAutoload)return n=this.options.cssUrl,n||(n=this.options.host.replace(/^wss/i,"https").replace(/^ws/i,"http").replace(/\/ws/i,""),n+="/assets/chat/chat.css"),this.log.debug("load css from '"+n+"'"),e="@import url('"+n+"');",t=document.createElement("link"),t.onload=this.onCssLoaded,t.rel="stylesheet",t.href="data:text/css,"+escape(e),document.getElementsByTagName("head")[0].appendChild(t); +},i.prototype.onCssLoaded=function(){return this.socketReady?this.onReady():this.cssLoaded=!0},i.prototype.startTimeoutObservers=function(){return this.idleTimeout=new o({logPrefix:"idleTimeout",debug:this.options.debug,timeout:this.options.idleTimeout,timeoutIntervallCheck:this.options.idleTimeoutIntervallCheck,callback:function(t){return function(){return t.log.debug("Idle timeout reached, hide widget",new Date),t.destroy({remove:!0})}}(this)}),this.inactiveTimeout=new o({logPrefix:"inactiveTimeout",debug:this.options.debug,timeout:this.options.inactiveTimeout,timeoutIntervallCheck:this.options.inactiveTimeoutIntervallCheck,callback:function(t){return function(){return t.log.debug("Inactive timeout reached, show timeout screen.",new Date),t.showCustomerTimeout(),t.destroy({remove:!1})}}(this)}),this.waitingListTimeout=new o({logPrefix:"waitingListTimeout",debug:this.options.debug,timeout:this.options.waitingListTimeout,timeoutIntervallCheck:this.options.waitingListTimeoutIntervallCheck,callback:function(t){return function(){return t.log.debug("Waiting list timeout reached, show timeout screen.",new Date),t.showWaitingListTimeout(),t.destroy({remove:!1})}}(this)})},i.prototype.disableScrollOnRoot=function(){return this.rootScrollOffset=this.scrollRoot.scrollTop(),this.scrollRoot.css({overflow:"hidden",position:"fixed"})},i.prototype.enableScrollOnRoot=function(){return this.scrollRoot.scrollTop(this.rootScrollOffset),this.scrollRoot.css({overflow:"",position:""})},i.prototype.isVisible=function(n,s,i,o){var a,r,l,h,d,c,u,p,m,g,f,v,y,b,w,T,C,z,S,k,I,A,_,x,E,O;if(!(n.length<1))if(r=t(e),a=n.length>1?n.eq(0):n,z=a.get(0),O=r.width(),E=r.height(),o=o?o:"both",p=i===!0?z.offsetWidth*z.offsetHeight:!0,"function"==typeof z.getBoundingClientRect){if(C=z.getBoundingClientRect(),S=C.top>=0&&C.top0&&C.bottom<=E,b=C.left>=0&&C.left0&&C.right<=O,k=s?S||u:S&&u,y=s?b||T:b&&T,"both"===o)return p&&k&&y;if("vertical"===o)return p&&k;if("horizontal"===o)return p&&y}else{if(x=r.scrollTop(),I=x+E,A=r.scrollLeft(),_=A+O,w=a.offset(),c=w.top,l=c+a.height(),h=w.left,d=h+a.width(),v=s===!0?l:c,m=s===!0?c:l,g=s===!0?d:h,f=s===!0?h:d,"both"===o)return!!p&&I>=m&&v>=x&&_>=f&&g>=A;if("vertical"===o)return!!p&&I>=m&&v>=x;if("horizontal"===o)return!!p&&_>=f&&g>=A}},i.prototype.isRetina=function(){var t;return e.matchMedia?(t=e.matchMedia("only screen and (min--moz-device-pixel-ratio: 1.3), only screen and (-o-min-device-pixel-ratio: 2.6/2), only screen and (-webkit-min-device-pixel-ratio: 1.3), only screen and (min-device-pixel-ratio: 1.3), only screen and (min-resolution: 1.3dppx)"),t&&t.matches||e.devicePixelRatio>1):!1},i.prototype.resizeImage=function(t,e,n,s,i,o,a,r){var l;return null==e&&(e="auto"),null==n&&(n="auto"),null==s&&(s=1),null==r&&(r=!0),l=new Image,l.onload=function(){var t,r,h,d,c,u,p;return c=l.width,d=l.height,console.log("ImageService","current size",c,d),"auto"===n&&"auto"===e&&(e=c,n=d),"auto"===n&&(h=c/e,n=d/h),"auto"===e&&(h=c/n,e=d/h),p=!1,c>e||d>n?(p=!0,e*=s,n*=s):(e=c,n=d),t=document.createElement("canvas"),t.width=e,t.height=n,r=t.getContext("2d"),r.drawImage(l,0,0,e,n),"auto"===o&&(o=200>e&&200>n?1:400>e&&400>n?.9:600>e&&600>n?.8:900>e&&900>n?.7:.6),u=t.toDataURL(i,o),p?(console.log("ImageService","resize",e/s,n/s,o,.75*u.length/1024/1024,"in mb"),void a(u,e/s,n/s,!0)):(console.log("ImageService","no resize",e,n,o,.75*u.length/1024/1024,"in mb"),a(u,e,n,!1))},l.src=t},i.prototype.pasteHtmlAtCaret=function(t){var n,s,i,o,a,r;if(r=void 0,a=void 0,e.getSelection){if(r=e.getSelection(),r.getRangeAt&&r.rangeCount){for(a=r.getRangeAt(0),a.deleteContents(),n=document.createElement("div"),n.innerHTML=t,s=document.createDocumentFragment(o,i);o=n.firstChild;)i=s.appendChild(o);if(a.insertNode(s),i)return a=a.cloneRange(),a.setStartAfter(i),a.collapse(!0),r.removeAllRanges(),r.addRange(a)}}else if(document.selection&&"Control"!==document.selection.type)return document.selection.createRange().pasteHTML(t)},i.prototype.wordFilter=function(e){var n,s,i;return n=e.html(),n=n.replace(//gi,""),n=n.replace(/<(!|script[^>]*>.*?<\/script(?=[>\s])|\/?(\?xml(:\w+)?|img|meta|link|style|\w:\w+)(?=[\s\/>]))[^>]*>/gi,""),n=n.replace(/<(\/?)s>/gi,"<$1strike>"),n=n.replace(/ /gi," "),e.html(n),t("p",e).each(function(){var e,n;return n=t(this).attr("style"),e=/mso-list:\w+ \w+([0-9]+)/.exec(n),e?t(this).data("_listLevel",parseInt(e[1],10)):void 0}),s=0,i=null,t("p",e).each(function(){var e,n,o,a,r,l,h,d,c,u;if(e=t(this).data("_listLevel"),void 0!==e){if(u=t(this).text(),a="
                    ",/^\s*\w+\./.test(u)&&(r=/([0-9])\./.exec(u),r?(c=parseInt(r[1],10),a=null!=(l=c>1)?l:'
                      ':"
                        "}):a="
                          "),e>s&&(0===s?(t(this).before(a),i=t(this).prev()):i=t(a).appendTo(i)),s>e)for(n=o=h=n,d=s-e;d>=h?d>=o:o>=d;n=d>=h?++o:--o)i=i.parent();return t("span:first",this).remove(),i.append("
                        1. "+t(this).html()+"
                        2. "),t(this).remove(),s=e}return s=0}),t("[style]",e).removeAttr("style"),t("[align]",e).removeAttr("align"),t("span",e).replaceWith(function(){return t(this).contents()}),t("span:empty",e).remove(),t("[class^='Mso']",e).removeAttr("class"),t("p:empty",e).remove(),e},i.prototype.removeAttribute=function(e){var n,s,i,o,a;if(e){for(n=t(e),a=e.attributes,i=0,o=a.length;o>i;i++)s=a[i],s&&s.name&&e.removeAttribute(s.name);return n.removeAttr("style").removeAttr("class").removeAttr("lang").removeAttr("type").removeAttr("align").removeAttr("id").removeAttr("wrap").removeAttr("title")}},i.prototype.removeAttributes=function(t,e){return null==e&&(e=!0),e&&t.each(function(t){return function(e,n){return t.removeAttribute(n)}}(this)),t.find("*").each(function(t){return function(e,n){return t.removeAttribute(n)}}(this)),t},i}(n),e.ZammadChat=a}(window.jQuery,window),window.zammadChatTemplates||(window.zammadChatTemplates={}),window.zammadChatTemplates.chat=function(t){t||(t={});var e,n=[],s=function(t){return t&&t.ecoSafe?t:"undefined"!=typeof t&&null!=t?o(t):""},i=t.safe,o=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},o||(o=t.escape=function(t){return(""+t).replace(/&/g,"&").replace(//g,">").replace(/"/g,""")}),function(){(function(){n.push('
                          \n
                          \n
                          \n \n \n \n \n \n
                          \n
                          \n
                          \n
                          \n \n '),n.push(this.T(this.title)),n.push('\n
                          \n
                          \n
                          \n \n
                          \n
                          \n
                          \n \n
                          \n
                          ")}).call(this)}.call(t),t.safe=i,t.escape=o,n.join("")},window.zammadChatTemplates||(window.zammadChatTemplates={}),window.zammadChatTemplates.customer_timeout=function(t){t||(t={});var e,n=[],s=function(t){return t&&t.ecoSafe?t:"undefined"!=typeof t&&null!=t?o(t):""},i=t.safe,o=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},o||(o=t.escape=function(t){return(""+t).replace(/&/g,"&").replace(//g,">").replace(/"/g,""")}),function(){(function(){n.push('
                          \n '),this.agent?(n.push("\n "),n.push(this.T("Since you didn't respond in the last %s minutes your conversation with %s got closed.",this.delay,this.agent)),n.push("\n ")):(n.push("\n "),n.push(this.T("Since you didn't respond in the last %s minutes your conversation got closed.",this.delay)),n.push("\n ")),n.push('\n
                          \n
                          "),n.push(this.T("Start new conversation")),n.push("
                          \n
                          ")}).call(this)}.call(t),t.safe=i,t.escape=o,n.join("")},window.zammadChatTemplates||(window.zammadChatTemplates={}),window.zammadChatTemplates.loader=function(t){t||(t={});var e,n=[],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(){n.push('\n \n \n \n\n'),n.push(this.T("Connecting")),n.push("")}).call(this)}.call(t),t.safe=s,t.escape=i,n.join("")},window.zammadChatTemplates||(window.zammadChatTemplates={}),window.zammadChatTemplates.message=function(t){t||(t={});var e,n=[],s=function(t){return t&&t.ecoSafe?t:"undefined"!=typeof t&&null!=t?o(t):""},i=t.safe,o=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},o||(o=t.escape=function(t){return(""+t).replace(/&/g,"&").replace(//g,">").replace(/"/g,""")}),function(){(function(){n.push('
                          \n "),n.push(this.message),n.push("\n
                          ")}).call(this)}.call(t),t.safe=i,t.escape=o,n.join("")},window.zammadChatTemplates||(window.zammadChatTemplates={}),window.zammadChatTemplates.status=function(t){t||(t={});var e,n=[],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(){n.push('
                          \n
                          \n '),n.push(this.status),n.push("\n
                          \n
                          ")}).call(this)}.call(t),t.safe=s,t.escape=i,n.join("")},window.zammadChatTemplates||(window.zammadChatTemplates={}),window.zammadChatTemplates.timestamp=function(t){t||(t={});var e,n=[],s=function(t){return t&&t.ecoSafe?t:"undefined"!=typeof t&&null!=t?o(t):""},i=t.safe,o=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},o||(o=t.escape=function(t){return(""+t).replace(/&/g,"&").replace(//g,">").replace(/"/g,""")}),function(){(function(){n.push('
                          '),n.push(s(this.label)),n.push(" "),n.push(s(this.time)),n.push("
                          ")}).call(this)}.call(t),t.safe=i,t.escape=o,n.join("")},window.zammadChatTemplates||(window.zammadChatTemplates={}),window.zammadChatTemplates.typingIndicator=function(t){t||(t={});var e,n=[],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(){n.push('
                          \n \n \n \n \n \n \n \n
                          ')}).call(this)}.call(t),t.safe=s,t.escape=i,n.join("")},window.zammadChatTemplates||(window.zammadChatTemplates={}),window.zammadChatTemplates.waiting=function(t){t||(t={});var e,n=[],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(){n.push('
                          \n \n \n \n \n \n '),n.push(this.T("All colleagues are busy.")),n.push("
                          \n "),n.push(this.T("You are on waiting list position %s.",this.position)),n.push("\n
                          ")}).call(this)}.call(t),t.safe=s,t.escape=i,n.join("")},window.zammadChatTemplates||(window.zammadChatTemplates={}),window.zammadChatTemplates.waiting_list_timeout=function(t){t||(t={});var e,n=[],s=function(t){return t&&t.ecoSafe?t:"undefined"!=typeof t&&null!=t?o(t):""},i=t.safe,o=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},o||(o=t.escape=function(t){return(""+t).replace(/&/g,"&").replace(//g,">").replace(/"/g,""")}),function(){(function(){n.push('
                          \n '),n.push(this.T("We are sorry, it takes longer as expected to get an empty slot. Please try again later or send us an email. Thank you!")),n.push('\n
                          \n
                          "),n.push(this.T("Start new conversation")),n.push("
                          \n
                          ")}).call(this)}.call(t),t.safe=i,t.escape=o,n.join("")}; \ No newline at end of file From b10ee11c86821e91fa822b505bbc25117c5918ee Mon Sep 17 00:00:00 2001 From: Martin Edenhofer Date: Wed, 19 Jul 2017 07:29:52 +0200 Subject: [PATCH 032/144] Strip null byte - postgresql will complain about it. --- app/models/application_model.rb | 2 +- .../checks_attribute_length.rb | 39 -------------- .../checks_attribute_values_and_length.rb | 54 +++++++++++++++++++ config/initializers/db_preferences_mysql.rb | 1 + .../initializers/db_preferences_postgresql.rb | 1 + lib/stats/ticket_reopen.rb | 1 + test/unit/ticket_null_byte_test.rb | 34 ++++++++++++ 7 files changed, 92 insertions(+), 40 deletions(-) delete mode 100644 app/models/application_model/checks_attribute_length.rb create mode 100644 app/models/application_model/checks_attribute_values_and_length.rb create mode 100644 test/unit/ticket_null_byte_test.rb diff --git a/app/models/application_model.rb b/app/models/application_model.rb index 551fe482b..c3d267e5f 100644 --- a/app/models/application_model.rb +++ b/app/models/application_model.rb @@ -5,7 +5,7 @@ class ApplicationModel < ActiveRecord::Base include ApplicationModel::HasCache include ApplicationModel::CanLookup include ApplicationModel::CanLookupSearchIndexAttributes - include ApplicationModel::ChecksAttributeLength + include ApplicationModel::ChecksAttributeValuesAndLength include ApplicationModel::CanCleanupParam include ApplicationModel::HasRecentViews include ApplicationModel::ChecksUserColumnsFillup diff --git a/app/models/application_model/checks_attribute_length.rb b/app/models/application_model/checks_attribute_length.rb deleted file mode 100644 index 5254b035c..000000000 --- a/app/models/application_model/checks_attribute_length.rb +++ /dev/null @@ -1,39 +0,0 @@ -# Copyright (C) 2012-2016 Zammad Foundation, http://zammad-foundation.org/ -module ApplicationModel::ChecksAttributeLength - extend ActiveSupport::Concern - - included do - before_create :check_attribute_length - before_update :check_attribute_length - end - -=begin - -check string/varchar size and cut them if needed - -=end - - def check_attribute_length - attributes.each { |attribute| - next if !self[ attribute[0] ] - next if !self[ attribute[0] ].instance_of?(String) - next if self[ attribute[0] ].empty? - column = self.class.columns_hash[ attribute[0] ] - next if !column - limit = column.limit - if column && limit - current_length = attribute[1].to_s.length - if limit < current_length - logger.warn "WARNING: cut string because of database length #{self.class}.#{attribute[0]}(#{limit} but is #{current_length}:#{attribute[1]})" - self[ attribute[0] ] = attribute[1][ 0, limit ] - end - end - - # strip 4 bytes utf8 chars if needed - if column && self[ attribute[0] ] - self[attribute[0]] = self[ attribute[0] ].utf8_to_3bytesutf8 - end - } - true - end -end diff --git a/app/models/application_model/checks_attribute_values_and_length.rb b/app/models/application_model/checks_attribute_values_and_length.rb new file mode 100644 index 000000000..27a680866 --- /dev/null +++ b/app/models/application_model/checks_attribute_values_and_length.rb @@ -0,0 +1,54 @@ +# Copyright (C) 2012-2016 Zammad Foundation, http://zammad-foundation.org/ +module ApplicationModel::ChecksAttributeValuesAndLength + extend ActiveSupport::Concern + + included do + before_create :check_attribute_values_and_length + before_update :check_attribute_values_and_length + end + +=begin + +1) check string/varchar size and cut them if needed + +2) check string for null byte \u0000 and remove it + +=end + + def check_attribute_values_and_length + columns = self.class.columns_hash + attributes.each { |name, value| + next if value.blank? + next if !value.instance_of?(String) + column = columns[name] + next if !column + + # strip null byte chars (postgresql will complain about it) + if column.sql_type == 'text' + if Rails.application.config.db_null_byte == false + self[name].delete!("\u0000") + end + end + + # for varchar check length and replace null bytes + limit = column.limit + if limit + current_length = value.length + if limit < current_length + logger.warn "WARNING: cut string because of database length #{self.class}.#{name}(#{limit} but is #{current_length}:#{value})" + self[name] = value[0, limit] + end + + # strip null byte chars (postgresql will complain about it) + if Rails.application.config.db_null_byte == false + self[name].delete!("\u0000") + end + end + + # strip 4 bytes utf8 chars if needed (mysql/mariadb will complain it) + next if self[name].blank? + self[name] = self[name].utf8_to_3bytesutf8 + } + true + end +end diff --git a/config/initializers/db_preferences_mysql.rb b/config/initializers/db_preferences_mysql.rb index 121608f10..9de0ac255 100644 --- a/config/initializers/db_preferences_mysql.rb +++ b/config/initializers/db_preferences_mysql.rb @@ -1,6 +1,7 @@ # mysql if ActiveRecord::Base.connection_config[:adapter] == 'mysql2' Rails.application.config.db_4bytes_utf8 = false + Rails.application.config.db_null_byte = true # mysql version check # mysql example: "5.7.3" diff --git a/config/initializers/db_preferences_postgresql.rb b/config/initializers/db_preferences_postgresql.rb index 8f72504c4..b62f7082c 100644 --- a/config/initializers/db_preferences_postgresql.rb +++ b/config/initializers/db_preferences_postgresql.rb @@ -2,6 +2,7 @@ if ActiveRecord::Base.connection_config[:adapter] == 'postgresql' Rails.application.config.db_case_sensitive = true Rails.application.config.db_like = 'ILIKE' + Rails.application.config.db_null_byte = false # postgresql version check # example output: "9.5.0" diff --git a/lib/stats/ticket_reopen.rb b/lib/stats/ticket_reopen.rb index 38b3afacc..360d549d4 100644 --- a/lib/stats/ticket_reopen.rb +++ b/lib/stats/ticket_reopen.rb @@ -66,6 +66,7 @@ class Stats::TicketReopen def self.log(object, o_id, changes, updated_by_id) return if object != 'Ticket' ticket = Ticket.lookup(id: o_id) + return if !ticket # check if close_at is already set / if not, ticket is not reopend return if !ticket.close_at diff --git a/test/unit/ticket_null_byte_test.rb b/test/unit/ticket_null_byte_test.rb new file mode 100644 index 000000000..aa3fdbd6a --- /dev/null +++ b/test/unit/ticket_null_byte_test.rb @@ -0,0 +1,34 @@ +# encoding: utf-8 +require 'test_helper' + +class TicketNullByteTest < ActiveSupport::TestCase + test 'null byte test' do + ticket1 = Ticket.create!( + title: "some title \u0000 123", + group: Group.lookup(name: 'Users'), + customer_id: 2, + updated_by_id: 1, + created_by_id: 1, + ) + assert(ticket1, 'ticket created') + + article1 = Ticket::Article.create!( + ticket_id: ticket1.id, + from: 'some_customer_com-1@example.com', + to: 'some_zammad_com-1@example.com', + subject: "com test 1\u0000", + message_id: 'some@id_com_1', + body: "some\u0000message 123", + internal: false, + sender: Ticket::Article::Sender.find_by(name: 'Customer'), + type: Ticket::Article::Type.find_by(name: 'email'), + updated_by_id: 1, + created_by_id: 1, + ) + assert(article1, 'ticket created') + + ticket1.destroy! + article1.destroy! + + end +end From 337d8f96d63d8f7dd8cfc5f6e54dfef5223bb4f0 Mon Sep 17 00:00:00 2001 From: "Michael R.|SchlaumeierTV" Date: Wed, 19 Jul 2017 07:57:27 +0200 Subject: [PATCH 033/144] Translation Fix (#1258) Generic OAUTH 2 is not gitlab --- db/seeds/settings.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/db/seeds/settings.rb b/db/seeds/settings.rb index 5802c1063..606dd2754 100644 --- a/db/seeds/settings.rb +++ b/db/seeds/settings.rb @@ -1225,7 +1225,7 @@ Setting.create_if_not_exists( null: true, name: 'site', tag: 'input', - placeholder: 'https://gitlab.YOURDOMAIN.com', + placeholder: 'https://oauth.YOURDOMAIN.com', }, { display: 'authorize_url', From 04c97d1201e3a7f9aeae667c292a429cff99a4cf Mon Sep 17 00:00:00 2001 From: Martin Edenhofer Date: Wed, 19 Jul 2017 10:37:29 +0200 Subject: [PATCH 034/144] Show organization tab only for agents. --- .../app/controllers/ticket_zoom/sidebar_organization.coffee | 1 + 1 file changed, 1 insertion(+) diff --git a/app/assets/javascripts/app/controllers/ticket_zoom/sidebar_organization.coffee b/app/assets/javascripts/app/controllers/ticket_zoom/sidebar_organization.coffee index ad612da6b..6fc2ef5cb 100644 --- a/app/assets/javascripts/app/controllers/ticket_zoom/sidebar_organization.coffee +++ b/app/assets/javascripts/app/controllers/ticket_zoom/sidebar_organization.coffee @@ -1,5 +1,6 @@ class SidebarOrganization extends App.Controller sidebarItem: => + return if !@permissionCheck('ticket.agent') return if !@ticket.organization_id { head: 'Organization' From 51d416277582a27a6b285949706d7564ef0e80fc Mon Sep 17 00:00:00 2001 From: Rolf Schmidt Date: Wed, 19 Jul 2017 12:03:17 +0200 Subject: [PATCH 035/144] Fixed issue #1216 - Race condition if agents merge ticket at same time but in different directions. --- app/models/ticket.rb | 7 ++++++- spec/models/ticket_spec.rb | 18 ++++++++++++++++++ 2 files changed, 24 insertions(+), 1 deletion(-) diff --git a/app/models/ticket.rb b/app/models/ticket.rb index 01c8a502e..e7f1a1fca 100644 --- a/app/models/ticket.rb +++ b/app/models/ticket.rb @@ -244,6 +244,11 @@ returns def merge_to(data) + # prevent cross merging tickets + target_ticket = Ticket.find(data[:ticket_id]) + raise 'no target ticket given' if !target_ticket + raise 'invalid state for target ticket' if target_ticket.state.name == 'merged' + # update articles Transaction.execute do @@ -296,7 +301,7 @@ returns save! # touch new ticket (to broadcast change) - Ticket.find(data[:ticket_id]).touch + target_ticket.touch end true end diff --git a/spec/models/ticket_spec.rb b/spec/models/ticket_spec.rb index 3ef97f67e..bd19972eb 100644 --- a/spec/models/ticket_spec.rb +++ b/spec/models/ticket_spec.rb @@ -32,6 +32,24 @@ RSpec.describe Ticket do expect(check_ticket_ids).to match_array(expected_ticket_ids) end + it 'prevents cross merging tickets' do + source_ticket = create(:ticket) + target_ticket = create(:ticket) + + result = source_ticket.merge_to( + ticket_id: target_ticket.id, + user_id: 1, + ) + expect(result).to be(true) + + expect { + result = target_ticket.merge_to( + ticket_id: source_ticket.id, + user_id: 1, + ) + }.to raise_error('invalid state for target ticket') + end + end describe '.destroy' do From d8ad2b1b2f2d3c30d62c8c3ea8e41015c2067ac9 Mon Sep 17 00:00:00 2001 From: Martin Edenhofer Date: Thu, 20 Jul 2017 14:01:14 +0200 Subject: [PATCH 036/144] Implemented issue #539 - Add email address without importing historical emails. --- .gitlab-ci.yml | 11 + .../app/controllers/_channel/email.coffee | 28 ++- .../app/controllers/getting_started.coffee | 38 +-- .../app/views/getting_started/email.jst.eco | 2 +- app/assets/stylesheets/zammad.scss | 4 + app/models/channel/driver/imap.rb | 61 +++-- test/integration/email_deliver_test.rb | 16 +- test/integration/email_keep_on_server_test.rb | 232 ++++++++++++++++++ 8 files changed, 340 insertions(+), 52 deletions(-) create mode 100644 test/integration/email_keep_on_server_test.rb diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 99741dc47..20297b184 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -127,6 +127,17 @@ test:integration:email_deliver: - ruby -I test/ test/integration/email_deliver_test.rb - rake db:drop +test:integration:email_keep_on_server: + stage: test + tags: + - core + script: + - export RAILS_ENV=test + - rake db:create + - rake db:migrate + - ruby -I test/ test/integration/email_keep_on_server_test.rb + - rake db:drop + test:integration:twitter: stage: test tags: diff --git a/app/assets/javascripts/app/controllers/_channel/email.coffee b/app/assets/javascripts/app/controllers/_channel/email.coffee index 99a71620e..a6855923a 100644 --- a/app/assets/javascripts/app/controllers/_channel/email.coffee +++ b/app/assets/javascripts/app/controllers/_channel/email.coffee @@ -560,21 +560,24 @@ class App.ChannelEmailAccountWizard extends App.WizardModal # inbound configureAttributesInbound = [ - { name: 'adapter', display: 'Type', tag: 'select', multiple: false, null: false, options: @channelDriver.email.inbound }, - { name: 'options::host', display: 'Host', tag: 'input', type: 'text', limit: 120, null: false, autocapitalize: false }, - { name: 'options::user', display: 'User', tag: 'input', type: 'text', limit: 120, null: false, autocapitalize: false, autocomplete: 'off', }, - { name: 'options::password', display: 'Password', tag: 'input', type: 'password', limit: 120, null: false, autocapitalize: false, autocomplete: 'new-password', single: true }, - { name: 'options::ssl', display: 'SSL', tag: 'boolean', null: true, options: { true: 'yes', false: 'no' }, default: true, translate: true, item_class: 'formGroup--halfSize' }, - { name: 'options::port', display: 'Port', tag: 'input', type: 'text', limit: 6, null: true, autocapitalize: false, default: '993', item_class: 'formGroup--halfSize' }, - { name: 'options::folder', display: 'Folder', tag: 'input', type: 'text', limit: 120, null: true, autocapitalize: false }, + { name: 'adapter', display: 'Type', tag: 'select', multiple: false, null: false, options: @channelDriver.email.inbound }, + { name: 'options::host', display: 'Host', tag: 'input', type: 'text', limit: 120, null: false, autocapitalize: false }, + { name: 'options::user', display: 'User', tag: 'input', type: 'text', limit: 120, null: false, autocapitalize: false, autocomplete: 'off' }, + { name: 'options::password', display: 'Password', tag: 'input', type: 'password', limit: 120, null: false, autocapitalize: false, autocomplete: 'new-password', single: true }, + { name: 'options::ssl', display: 'SSL', tag: 'boolean', null: true, options: { true: 'yes', false: 'no' }, default: true, translate: true, item_class: 'formGroup--halfSize' }, + { name: 'options::port', display: 'Port', tag: 'input', type: 'text', limit: 6, null: true, autocapitalize: false, default: '993', item_class: 'formGroup--halfSize' }, + { name: 'options::folder', display: 'Folder', tag: 'input', type: 'text', limit: 120, null: true, autocapitalize: false, item_class: 'formGroup--halfSize' }, + { name: 'options::keep_on_server', display: 'Keep messages on server', tag: 'boolean', null: true, options: { true: 'yes', false: 'no' }, translate: true, default: false, item_class: 'formGroup--halfSize' }, ] showHideFolder = (params, attribute, attributes, classname, form, ui) -> return if !params if params.adapter is 'imap' ui.show('options::folder') + ui.show('options::keep_on_server') return ui.hide('options::folder') + ui.hide('options::keep_on_server') handlePort = (params, attribute, attributes, classname, form, ui) -> return if !params @@ -606,9 +609,10 @@ class App.ChannelEmailAccountWizard extends App.WizardModal # fill user / password based on intro info channel_used = { options: {} } if @account['meta'] - channel_used['options']['user'] = @account['meta']['email'] - channel_used['options']['password'] = @account['meta']['password'] - channel_used['options']['folder'] = @account['meta']['folder'] + channel_used['options']['user'] = @account['meta']['email'] + channel_used['options']['password'] = @account['meta']['password'] + channel_used['options']['folder'] = @account['meta']['folder'] + channel_used['options']['keep_on_server'] = @account['meta']['keep_on_server'] # show used backend @$('.base-outbound-settings').html('') @@ -670,7 +674,7 @@ class App.ChannelEmailAccountWizard extends App.WizardModal for key, value of data.setting @account[key] = value - if data.content_messages && data.content_messages > 0 + if data.content_messages && data.content_messages > 0 && (!@account['inbound']['options'] || @account['inbound']['options']['keep_on_server'] isnt true) message = App.i18n.translateContent('We have already found %s email(s) in your mailbox. Zammad will move it all from your mailbox into Zammad.', data.content_messages) @$('.js-inbound-acknowledge .js-message').html(message) @$('.js-inbound-acknowledge .js-back').attr('data-slide', 'js-intro') @@ -724,7 +728,7 @@ class App.ChannelEmailAccountWizard extends App.WizardModal # remember account settings @account.inbound = params - if data.content_messages && data.content_messages > 0 + if data.content_messages && data.content_messages > 0 && (!@account['inbound']['options'] || @account['inbound']['options']['keep_on_server'] isnt true) message = App.i18n.translateContent('We have already found %s email(s) in your mailbox. Zammad will move it all from your mailbox into Zammad.', data.content_messages) @$('.js-inbound-acknowledge .js-message').html(message) @$('.js-inbound-acknowledge .js-back').attr('data-slide', 'js-inbound') diff --git a/app/assets/javascripts/app/controllers/getting_started.coffee b/app/assets/javascripts/app/controllers/getting_started.coffee index c7d236267..8c2fbb71d 100644 --- a/app/assets/javascripts/app/controllers/getting_started.coffee +++ b/app/assets/javascripts/app/controllers/getting_started.coffee @@ -450,8 +450,8 @@ class EmailNotification extends App.WizardFullScreen if adapter is 'smtp' configureAttributesOutbound = [ { name: 'options::host', display: 'Host', tag: 'input', type: 'text', limit: 120, null: false, autocapitalize: false, autofocus: true }, - { name: 'options::user', display: 'User', tag: 'input', type: 'text', limit: 120, null: true, autocapitalize: false, autocomplete: 'new-password' }, - { name: 'options::password', display: 'Password', tag: 'input', type: 'password', limit: 120, null: true, autocapitalize: false, autocomplete: 'new-password', single: true }, + { name: 'options::user', display: 'User', tag: 'input', type: 'text', limit: 120, null: true, autocapitalize: false, autocomplete: 'off' }, + { name: 'options::password', display: 'Password', tag: 'input', type: 'password', limit: 120, null: true, autocapitalize: false, autocomplete: 'off', single: true }, { name: 'options::port', display: 'Port', tag: 'input', type: 'text', limit: 6, null: true, autocapitalize: false }, ] @form = new App.ControllerForm( @@ -671,20 +671,24 @@ class ChannelEmail extends App.WizardFullScreen # inbound configureAttributesInbound = [ - { name: 'adapter', display: 'Type', tag: 'select', multiple: false, null: false, options: @channelDriver.email.inbound }, - { name: 'options::host', display: 'Host', tag: 'input', type: 'text', limit: 120, null: false, autocapitalize: false }, - { name: 'options::user', display: 'User', tag: 'input', type: 'text', limit: 120, null: false, autocapitalize: false, autocomplete: 'new-password', }, - { name: 'options::password', display: 'Password', tag: 'input', type: 'password', limit: 120, null: false, autocapitalize: false, autocomplete: 'new-password', single: true }, - { name: 'options::ssl', display: 'SSL', tag: 'boolean', null: true, options: { true: 'yes', false: 'no' }, default: true, translate: true, item_class: 'formGroup--halfSize' }, - { name: 'options::port', display: 'Port', tag: 'input', type: 'text', limit: 6, null: true, autocapitalize: false, default: '993', item_class: 'formGroup--halfSize' }, + { name: 'adapter', display: 'Type', tag: 'select', multiple: false, null: false, options: @channelDriver.email.inbound }, + { name: 'options::host', display: 'Host', tag: 'input', type: 'text', limit: 120, null: false, autocapitalize: false }, + { name: 'options::user', display: 'User', tag: 'input', type: 'text', limit: 120, null: false, autocapitalize: false, autocomplete: 'off', }, + { name: 'options::password', display: 'Password', tag: 'input', type: 'password', limit: 120, null: false, autocapitalize: false, autocomplete: 'off', single: true }, + { name: 'options::ssl', display: 'SSL', tag: 'boolean', null: true, options: { true: 'yes', false: 'no' }, default: true, translate: true, item_class: 'formGroup--halfSize' }, + { name: 'options::port', display: 'Port', tag: 'input', type: 'text', limit: 6, null: true, autocapitalize: false, default: '993', item_class: 'formGroup--halfSize' }, + { name: 'options::folder', display: 'Folder', tag: 'input', type: 'text', limit: 120, null: true, autocapitalize: false, item_class: 'formGroup--halfSize' }, + { name: 'options::keep_on_server', display: 'Keep messages on server', tag: 'boolean', null: true, options: { true: 'yes', false: 'no' }, translate: true, default: false, item_class: 'formGroup--halfSize' }, ] showHideFolder = (params, attribute, attributes, classname, form, ui) -> return if !params if params.adapter is 'imap' ui.show('options::folder') + ui.show('options::keep_on_server') return ui.hide('options::folder') + ui.hide('options::keep_on_server') handlePort = (params, attribute, attributes, classname, form, ui) -> return if !params @@ -700,7 +704,7 @@ class ChannelEmail extends App.WizardFullScreen return new App.ControllerForm( - el: @$('.base-inbound-settings'), + el: @$('.base-inbound-settings') model: configure_attributes: configureAttributesInbound className: '' @@ -716,8 +720,10 @@ class ChannelEmail extends App.WizardFullScreen # fill user / password based on intro info channel_used = { options: {} } if @account['meta'] - channel_used['options']['user'] = @account['meta']['email'] - channel_used['options']['password'] = @account['meta']['password'] + channel_used['options']['user'] = @account['meta']['email'] + channel_used['options']['password'] = @account['meta']['password'] + channel_used['options']['folder'] = @account['meta']['folder'] + channel_used['options']['keep_on_server'] = @account['meta']['keep_on_server'] # show used backend @$('.base-outbound-settings').html('') @@ -725,8 +731,8 @@ class ChannelEmail extends App.WizardFullScreen if adapter is 'smtp' configureAttributesOutbound = [ { name: 'options::host', display: 'Host', tag: 'input', type: 'text', limit: 120, null: false, autocapitalize: false, autofocus: true }, - { name: 'options::user', display: 'User', tag: 'input', type: 'text', limit: 120, null: true, autocapitalize: false, autocomplete: 'new-password', }, - { name: 'options::password', display: 'Password', tag: 'input', type: 'password', limit: 120, null: true, autocapitalize: false, autocomplete: 'new-password', single: true }, + { name: 'options::user', display: 'User', tag: 'input', type: 'text', limit: 120, null: true, autocapitalize: false, autocomplete: 'off', }, + { name: 'options::password', display: 'Password', tag: 'input', type: 'password', limit: 120, null: true, autocapitalize: false, autocomplete: 'off', single: true }, { name: 'options::port', display: 'Port', tag: 'input', type: 'text', limit: 6, null: true, autocapitalize: false }, ] @form = new App.ControllerForm( @@ -745,7 +751,7 @@ class ChannelEmail extends App.WizardFullScreen @account.meta = params @disable(e) - @$('.js-probe .js-email').text( params.email ) + @$('.js-probe .js-email').text(params.email) @showSlide('js-probe') @ajax( @@ -760,7 +766,7 @@ class ChannelEmail extends App.WizardFullScreen for key, value of data.setting @account[key] = value - if data.content_messages && data.content_messages > 0 + if data.content_messages && data.content_messages > 0 && (!@account['inbound']['options'] || @account['inbound']['options']['keep_on_server'] isnt true) message = App.i18n.translateContent('We have already found %s email(s) in your mailbox. Zammad will move it all from your mailbox into Zammad.', data.content_messages) @$('.js-inbound-acknowledge .js-message').html(message) @$('.js-inbound-acknowledge .js-back').attr('data-slide', 'js-intro') @@ -809,7 +815,7 @@ class ChannelEmail extends App.WizardFullScreen # remember account settings @account.inbound = params - if data.content_messages && data.content_messages > 0 + if data.content_messages && data.content_messages > 0 && (!@account['inbound']['options'] || @account['inbound']['options']['keep_on_server'] isnt true) message = App.i18n.translateContent('We have already found %s emails in your mailbox. Zammad will move it all from your mailbox into Zammad.', data.content_messages) @$('.js-inbound-acknowledge .js-message').html(message) @$('.js-inbound-acknowledge .js-back').attr('data-slide', 'js-inbound') diff --git a/app/assets/javascripts/app/views/getting_started/email.jst.eco b/app/assets/javascripts/app/views/getting_started/email.jst.eco index e3ef082f8..1d2d0cb50 100644 --- a/app/assets/javascripts/app/views/getting_started/email.jst.eco +++ b/app/assets/javascripts/app/views/getting_started/email.jst.eco @@ -63,7 +63,7 @@
                          -
                          +

                          <%- @T('Email Inbound') %>

                          diff --git a/app/assets/stylesheets/zammad.scss b/app/assets/stylesheets/zammad.scss index 8da4e8e50..2a6020b51 100644 --- a/app/assets/stylesheets/zammad.scss +++ b/app/assets/stylesheets/zammad.scss @@ -6457,6 +6457,10 @@ footer { width: 400px; padding-bottom: 18px; margin-bottom: 20px; + + &.wizard-slide--large { + width: 460px; + } } .wizard h2 { diff --git a/app/models/channel/driver/imap.rb b/app/models/channel/driver/imap.rb index d2e0043bc..344b971b9 100644 --- a/app/models/channel/driver/imap.rb +++ b/app/models/channel/driver/imap.rb @@ -52,6 +52,7 @@ example host: 'outlook.office365.com', user: 'xxx@znuny.onmicrosoft.com', password: 'xxx', + keep_on_server: true, } channel = Channel.last instance = Channel::Driver::Imap.new @@ -60,13 +61,18 @@ example =end def fetch (options, channel, check_type = '', verify_string = '') - ssl = true - port = 993 + ssl = true + port = 993 + keep_on_server = false + folder = 'INBOX' + if options[:keep_on_server] == true || options[:keep_on_server] == 'true' + keep_on_server = true + end if options.key?(:ssl) && options[:ssl] == false ssl = false port = 143 end - if options.key?(:port) && !options[:port].empty? + if options.key?(:port) && options[:port].present? port = options[:port] # disable ssl for non ssl ports @@ -74,8 +80,11 @@ example ssl = false end end + if options[:folder].present? + folder = options[:folder] + end - Rails.logger.info "fetching imap (#{options[:host]}/#{options[:user]} port=#{port},ssl=#{ssl},folder=#{options[:folder]})" + Rails.logger.info "fetching imap (#{options[:host]}/#{options[:user]} port=#{port},ssl=#{ssl},folder=#{folder},keep_on_server=#{keep_on_server})" # on check, reduce open_timeout to have faster probing timeout = 45 @@ -90,17 +99,17 @@ example @imap.login(options[:user], options[:password]) # select folder - if !options[:folder] || options[:folder].empty? - @imap.select('INBOX') - else - @imap.select(options[:folder]) - end + @imap.select(folder) # sort messages by date on server (if not supported), if not fetch messages via search (first in, first out) + filter = ['ALL'] + if keep_on_server && check_type != 'check' && check_type != 'verify' + filter = %w(NOT SEEN) + end begin - message_ids = @imap.sort(['DATE'], ['ALL'], 'US-ASCII') + message_ids = @imap.sort(['DATE'], filter, 'US-ASCII') rescue - message_ids = @imap.search(['ALL']) + message_ids = @imap.search(filter) end # check mode only @@ -168,9 +177,8 @@ example message_ids.each do |message_id| count += 1 Rails.logger.info " - message #{count}/#{count_all}" - #Rails.logger.info msg.to_s - message_meta = @imap.fetch(message_id, ['RFC822.SIZE', 'FLAGS', 'INTERNALDATE'])[0] + message_meta = @imap.fetch(message_id, ['RFC822.SIZE', 'ENVELOPE', 'FLAGS', 'INTERNALDATE'])[0] # ignore to big messages info = too_big?(message_meta, count, count_all) @@ -182,14 +190,23 @@ example # ignore deleted messages next if deleted?(message_meta, count, count_all) + # ignore already imported + next if already_imported?(message_id, message_meta, count, count_all, keep_on_server) + # delete email from server after article was created msg = @imap.fetch(message_id, 'RFC822')[0].attr['RFC822'] next if !msg process(channel, msg, false) - @imap.store(message_id, '+FLAGS', [:Deleted]) + if !keep_on_server + @imap.store(message_id, '+FLAGS', [:Deleted]) + else + @imap.store(message_id, '+FLAGS', [:Seen]) + end count_fetched += 1 end - @imap.expunge() + if !keep_on_server + @imap.expunge() + end disconnect if count.zero? Rails.logger.info ' - no message' @@ -209,6 +226,20 @@ example private + def already_imported?(message_id, message_meta, count, count_all, keep_on_server) + return false if !keep_on_server + return false if !message_meta.attr + return false if !message_meta.attr['ENVELOPE'] + local_message_id = message_meta.attr['ENVELOPE'].message_id + return false if local_message_id.blank? + local_message_id_md5 = Digest::MD5.hexdigest(local_message_id) + article = Ticket::Article.where(message_id_md5: local_message_id_md5).order('created_at DESC, id DESC').limit(1).first + return false if !article + @imap.store(message_id, '+FLAGS', [:Seen]) + Rails.logger.info " - ignore message #{count}/#{count_all} - because message message id already imported" + true + end + def deleted?(message_meta, count, count_all) return false if !message_meta.attr['FLAGS'].include?(:Deleted) Rails.logger.info " - ignore message #{count}/#{count_all} - because message has already delete flag" diff --git a/test/integration/email_deliver_test.rb b/test/integration/email_deliver_test.rb index 6d13296b6..440dc550b 100644 --- a/test/integration/email_deliver_test.rb +++ b/test/integration/email_deliver_test.rb @@ -4,16 +4,16 @@ require 'test_helper' class EmailDeliverTest < ActiveSupport::TestCase test 'basic check' do - if !ENV['MAIL_SERVER'] + if ENV['MAIL_SERVER'].blank? raise "Need MAIL_SERVER as ENV variable like export MAIL_SERVER='mx.example.com'" end - if !ENV['MAIL_SERVER_ACCOUNT'] + if ENV['MAIL_SERVER_ACCOUNT'].blank? raise "Need MAIL_SERVER_ACCOUNT as ENV variable like export MAIL_SERVER_ACCOUNT='user:somepass'" end server_login = ENV['MAIL_SERVER_ACCOUNT'].split(':')[0] server_password = ENV['MAIL_SERVER_ACCOUNT'].split(':')[1] - email_address = EmailAddress.create( + email_address = EmailAddress.create!( realname: 'me Helpdesk', email: "me#{rand(999_999_999)}@example.com", updated_by_id: 1, @@ -27,7 +27,7 @@ class EmailDeliverTest < ActiveSupport::TestCase created_by_id: 1, ) - channel = Channel.create( + channel = Channel.create!( area: 'Email::Account', group_id: group.id, options: { @@ -50,9 +50,9 @@ class EmailDeliverTest < ActiveSupport::TestCase ) email_address.channel_id = channel.id - email_address.save + email_address.save! - ticket1 = Ticket.create( + ticket1 = Ticket.create!( title: 'some delivery test', group: group, customer_id: 2, @@ -63,7 +63,7 @@ class EmailDeliverTest < ActiveSupport::TestCase ) assert(ticket1, 'ticket created') - article1 = Ticket::Article.create( + article1 = Ticket::Article.create!( ticket_id: ticket1.id, to: 'some_recipient@example_not_existing_what_ever.com', subject: 'some subject', @@ -189,7 +189,7 @@ class EmailDeliverTest < ActiveSupport::TestCase # remove background jobs Delayed::Job.destroy_all - article2 = Ticket::Article.create( + article2 = Ticket::Article.create!( ticket_id: ticket1.id, to: 'some_recipient@example_not_existing_what_ever.com', subject: 'some subject2', diff --git a/test/integration/email_keep_on_server_test.rb b/test/integration/email_keep_on_server_test.rb new file mode 100644 index 000000000..99d8069b9 --- /dev/null +++ b/test/integration/email_keep_on_server_test.rb @@ -0,0 +1,232 @@ +# encoding: utf-8 +require 'test_helper' +require 'net/imap' + +class EmailKeepOnServerTest < ActiveSupport::TestCase + setup do + + if ENV['KEEP_ON_MAIL_SERVER'].blank? + raise "Need KEEP_ON_MAIL_SERVER as ENV variable like export KEEP_ON_MAIL_SERVER='mx.example.com'" + end + if ENV['KEEP_ON_MAIL_SERVER_ACCOUNT'].blank? + raise "Need KEEP_ON_MAIL_SERVER_ACCOUNT as ENV variable like export KEEP_ON_MAIL_SERVER_ACCOUNT='user:somepass'" + end + @server_login = ENV['KEEP_ON_MAIL_SERVER_ACCOUNT'].split(':')[0] + @server_password = ENV['KEEP_ON_MAIL_SERVER_ACCOUNT'].split(':')[1] + + @folder = "keep_on_mail_server_#{rand(999_999_999)}" + + email_address = EmailAddress.create!( + realname: 'me Helpdesk', + email: "me#{rand(999_999_999)}@example.com", + updated_by_id: 1, + created_by_id: 1, + ) + + group = Group.create_or_update( + name: 'KeepOnServerTest', + email_address_id: email_address.id, + updated_by_id: 1, + created_by_id: 1, + ) + + @channel = Channel.create!( + area: 'Email::Account', + group_id: group.id, + options: { + inbound: { + adapter: 'imap', + options: { + host: ENV['KEEP_ON_MAIL_SERVER'], + user: @server_login, + password: @server_password, + ssl: true, + folder: @folder, + #keep_on_server: true, + } + }, + outbound: { + adapter: 'sendmail' + } + }, + active: true, + updated_by_id: 1, + created_by_id: 1, + ) + email_address.channel_id = @channel.id + email_address.save! + + end + + test 'keep on server' do + @channel.options[:inbound][:options][:keep_on_server] = true + @channel.save! + + # clean mailbox + imap = Net::IMAP.new(ENV['KEEP_ON_MAIL_SERVER'], 993, true, nil, false) + imap.login(@server_login, @server_password) + imap.create(@folder) + imap.select(@folder) + + # put unseen message in it + imap.append(@folder, "Subject: hello1 +From: shugo@example.com +To: shugo@example.com +Message-ID: + +hello world +".gsub(/\n/, "\r\n"), [], Time.zone.now) + + # verify if message is still on server + message_ids = imap.sort(['DATE'], ['ALL'], 'US-ASCII') + assert_equal(1, message_ids.count) + + message_meta = imap.fetch(1, ['FLAGS'])[0].attr + assert_not(message_meta['FLAGS'].include?(:Seen)) + + # fetch messages + article_count = Ticket::Article.count + @channel.fetch(true) + assert_equal(article_count + 1, Ticket::Article.count) + + # verify if message is still on server + message_ids = imap.sort(['DATE'], ['ALL'], 'US-ASCII') + assert_equal(1, message_ids.count) + + message_meta = imap.fetch(1, ['RFC822.HEADER', 'FLAGS'])[0].attr + assert(message_meta['FLAGS'].include?(:Seen)) + + # fetch messages + article_count = Ticket::Article.count + @channel.fetch(true) + assert_equal(article_count, Ticket::Article.count) + + # verify if message is still on server + message_ids = imap.sort(['DATE'], ['ALL'], 'US-ASCII') + assert_equal(1, message_ids.count) + + # put unseen message in it + imap.append(@folder, "Subject: hello2 +From: shugo@example.com +To: shugo@example.com +Message-ID: + +hello world +".gsub(/\n/, "\r\n"), [], Time.zone.now) + + message_meta = imap.fetch(1, ['FLAGS'])[0].attr + assert(message_meta['FLAGS'].include?(:Seen)) + message_meta = imap.fetch(2, ['FLAGS'])[0].attr + assert_not(message_meta['FLAGS'].include?(:Seen)) + + # fetch messages + article_count = Ticket::Article.count + @channel.fetch(true) + assert_equal(article_count + 1, Ticket::Article.count) + + # verify if message is still on server + message_ids = imap.sort(['DATE'], ['ALL'], 'US-ASCII') + assert_equal(2, message_ids.count) + + message_meta = imap.fetch(1, ['FLAGS'])[0].attr + assert(message_meta['FLAGS'].include?(:Seen)) + message_meta = imap.fetch(2, ['FLAGS'])[0].attr + assert(message_meta['FLAGS'].include?(:Seen)) + + # set messages to not seen + imap.store(1, '-FLAGS', [:Seen]) + imap.store(2, '-FLAGS', [:Seen]) + + # fetch messages + article_count = Ticket::Article.count + @channel.fetch(true) + assert_equal(article_count, Ticket::Article.count) + + imap.delete(@folder) + @channel.destroy! + end + + test 'keep not on server' do + @channel.options[:inbound][:options][:keep_on_server] = false + @channel.save! + + # clean mailbox + imap = Net::IMAP.new(ENV['KEEP_ON_MAIL_SERVER'], 993, true, nil, false) + imap.login(@server_login, @server_password) + imap.create(@folder) + imap.select(@folder) + + # put unseen message in it + imap.append(@folder, "Subject: hello1 +From: shugo@example.com +To: shugo@example.com +Message-ID: + +hello world +".gsub(/\n/, "\r\n"), [], Time.zone.now) + + # verify if message is still on server + message_ids = imap.sort(['DATE'], ['ALL'], 'US-ASCII') + assert_equal(1, message_ids.count) + + message_meta = imap.fetch(1, ['FLAGS'])[0].attr + assert_not(message_meta['FLAGS'].include?(:Seen)) + + # fetch messages + article_count = Ticket::Article.count + @channel.fetch(true) + assert_equal(article_count + 1, Ticket::Article.count) + + # verify if message is still on server + message_ids = imap.sort(['DATE'], ['ALL'], 'US-ASCII') + assert_equal(1, message_ids.count) + + # put unseen message in it + imap.append(@folder, "Subject: hello2 +From: shugo@example.com +To: shugo@example.com +Message-ID: + +hello world +".gsub(/\n/, "\r\n"), [], Time.zone.now) + + # verify if message is still on server + message_ids = imap.sort(['DATE'], ['ALL'], 'US-ASCII') + assert_equal(1, message_ids.count) + + message_meta = imap.fetch(1, ['FLAGS'])[0].attr + assert_not(message_meta['FLAGS'].include?(:Seen)) + + # fetch messages + article_count = Ticket::Article.count + @channel.fetch(true) + assert_equal(article_count + 1, Ticket::Article.count) + + # verify if message is still on server + message_ids = imap.sort(['DATE'], ['ALL'], 'US-ASCII') + assert_equal(1, message_ids.count) + + # put unseen message in it + imap.append(@folder, "Subject: hello2 +From: shugo@example.com +To: shugo@example.com +Message-ID: + +hello world +".gsub(/\n/, "\r\n"), [], Time.zone.now) + + # verify if message is still on server + message_ids = imap.sort(['DATE'], ['ALL'], 'US-ASCII') + assert_equal(1, message_ids.count) + + # fetch messages + article_count = Ticket::Article.count + @channel.fetch(true) + assert_equal(article_count + 1, Ticket::Article.count) + + imap.delete(@folder) + @channel.destroy! + + end + +end From 4b6496c5452c3f635262394e29c79c05ddd0ac70 Mon Sep 17 00:00:00 2001 From: Martin Edenhofer Date: Thu, 20 Jul 2017 15:58:03 +0200 Subject: [PATCH 037/144] Do html cleanup directly on content fields too (not only on finished article). --- app/models/signature.rb | 4 ++++ app/models/text_module.rb | 3 +++ 2 files changed, 7 insertions(+) diff --git a/app/models/signature.rb b/app/models/signature.rb index 0435e0fff..04053bad0 100644 --- a/app/models/signature.rb +++ b/app/models/signature.rb @@ -2,7 +2,11 @@ class Signature < ApplicationModel include ChecksLatestChangeObserved + include ChecksHtmlSanitized has_many :groups, after_add: :cache_update, after_remove: :cache_update validates :name, presence: true + + sanitized_html :body + end diff --git a/app/models/text_module.rb b/app/models/text_module.rb index 357f0c78b..7fcb7da83 100644 --- a/app/models/text_module.rb +++ b/app/models/text_module.rb @@ -2,10 +2,13 @@ class TextModule < ApplicationModel include ChecksClientNotification + include ChecksHtmlSanitized validates :name, presence: true validates :content, presence: true + sanitized_html :content + =begin load text modules from online From d2d7c534eb90c4161add2e0847029fa24e29cdf4 Mon Sep 17 00:00:00 2001 From: Martin Edenhofer Date: Thu, 20 Jul 2017 17:17:46 +0200 Subject: [PATCH 038/144] Using text modules not working in IE 11 (only in IE 11). --- .../app/lib/base/jquery.contenteditable.js | 66 ++++++++----------- .../app/lib/base/jquery.textmodule.js | 25 ++++--- 2 files changed, 41 insertions(+), 50 deletions(-) diff --git a/app/assets/javascripts/app/lib/base/jquery.contenteditable.js b/app/assets/javascripts/app/lib/base/jquery.contenteditable.js index 2a1994828..d074e3dff 100644 --- a/app/assets/javascripts/app/lib/base/jquery.contenteditable.js +++ b/app/assets/javascripts/app/lib/base/jquery.contenteditable.js @@ -295,7 +295,7 @@ else { img = "" } - document.execCommand('insertHTML', false, img) + _this.paste(img) } // resize if to big @@ -367,13 +367,7 @@ text = App.Utils.removeEmptyLines(text) _this.log('insert', text) - // as fallback, insert html via pasteHtmlAtCaret (for IE 11 and lower) - if (docType == 'text3') { - _this.pasteHtmlAtCaret(text) - } - else { - document.execCommand('insertHTML', false, text) - } + _this.paste(text) return true }) @@ -533,37 +527,6 @@ return this.$element.html().trim() } - // taken from https://stackoverflow.com/questions/6690752/insert-html-at-caret-in-a-contenteditable-div/6691294#6691294 - Plugin.prototype.pasteHtmlAtCaret = function(html) { - var sel, range; - if (window.getSelection) { - sel = window.getSelection() - if (sel.getRangeAt && sel.rangeCount) { - range = sel.getRangeAt(0) - range.deleteContents() - - var el = document.createElement('div') - el.innerHTML = html; - var frag = document.createDocumentFragment(), node, lastNode - while ( (node = el.firstChild) ) { - lastNode = frag.appendChild(node) - } - range.insertNode(frag) - - if (lastNode) { - range = range.cloneRange() - range.setStartAfter(lastNode) - range.collapse(true) - sel.removeAllRanges() - sel.addRange(range) - } - } - } - else if (document.selection && document.selection.type != 'Control') { - document.selection.createRange().pasteHTML(html) - } - } - // log method Plugin.prototype.log = function() { if (App && App.Log) { @@ -574,7 +537,30 @@ } } - $.fn[pluginName] = function ( options ) { + // paste some content + Plugin.prototype.paste = function(string) { + var isIE11 = !!window.MSInputMethodContext && !!document.documentMode; + + // IE <= 10 + if (document.selection && document.selection.createRange) { + var range = document.selection.createRange() + if (range.pasteHTML) { + range.pasteHTML(string) + } + } + // IE == 11 + else if (isIE11 && document.getSelection) { + var range = document.getSelection().getRangeAt(0) + var nnode = document.createElement('div') + range.surroundContents(nnode) + nnode.innerHTML = string + } + else { + document.execCommand('insertHTML', false, string) + } + } + + $.fn[pluginName] = function (options) { return this.each(function () { if (!$.data(this, 'plugin_' + pluginName)) { $.data(this, 'plugin_' + pluginName, diff --git a/app/assets/javascripts/app/lib/base/jquery.textmodule.js b/app/assets/javascripts/app/lib/base/jquery.textmodule.js index 6236f42d3..699ff1847 100644 --- a/app/assets/javascripts/app/lib/base/jquery.textmodule.js +++ b/app/assets/javascripts/app/lib/base/jquery.textmodule.js @@ -250,9 +250,21 @@ // paste some content Plugin.prototype.paste = function(string) { - if (document.selection) { // IE + var isIE11 = !!window.MSInputMethodContext && !!document.documentMode; + + // IE <= 10 + if (document.selection && document.selection.createRange) { var range = document.selection.createRange() - range.pasteHTML(string) + if (range.pasteHTML) { + range.pasteHTML(string) + } + } + // IE == 11 + else if (isIE11 && document.getSelection) { + var range = document.getSelection().getRangeAt(0) + var nnode = document.createElement('div') + range.surroundContents(nnode) + nnode.innerHTML = string } else { document.execCommand('insertHTML', false, string) @@ -295,14 +307,7 @@ // for chrome, insert space again if (start) { if (spacerChar === ' ') { - string = " " - if (document.selection) { // IE - var range = document.selection.createRange() - range.pasteHTML(string) - } - else { - document.execCommand('insertHTML', false, string) - } + this.paste(' ') } } } From 7468b3ed36bed206f64ba3c584f3a60b67cac673 Mon Sep 17 00:00:00 2001 From: Felix Niklas Date: Fri, 21 Jul 2017 11:46:52 +0200 Subject: [PATCH 039/144] Ticket Zoom: position Settings Button --- app/assets/javascripts/app/views/ticket_zoom.jst.eco | 1 + app/assets/javascripts/app/views/ticket_zoom/setting.jst.eco | 2 +- app/assets/stylesheets/zammad.scss | 2 +- 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/app/assets/javascripts/app/views/ticket_zoom.jst.eco b/app/assets/javascripts/app/views/ticket_zoom.jst.eco index 89d8733a8..b6bf082c7 100644 --- a/app/assets/javascripts/app/views/ticket_zoom.jst.eco +++ b/app/assets/javascripts/app/views/ticket_zoom.jst.eco @@ -9,6 +9,7 @@
                          +
                          diff --git a/app/assets/javascripts/app/views/ticket_zoom/setting.jst.eco b/app/assets/javascripts/app/views/ticket_zoom/setting.jst.eco index 491eab3c3..7997f7e8f 100644 --- a/app/assets/javascripts/app/views/ticket_zoom/setting.jst.eco +++ b/app/assets/javascripts/app/views/ticket_zoom/setting.jst.eco @@ -1,3 +1,3 @@ -
                          +
                          <%- @Icon('cog', 'dropdown-icon') %>
                          \ No newline at end of file diff --git a/app/assets/stylesheets/zammad.scss b/app/assets/stylesheets/zammad.scss index 2a6020b51..70b569381 100644 --- a/app/assets/stylesheets/zammad.scss +++ b/app/assets/stylesheets/zammad.scss @@ -415,7 +415,7 @@ pre code.hljs { font-size: 12px; letter-spacing: 0.05em; height: 31px; - padding: 2px 11px 0 !important; + padding: 0 11px !important; display: inline-flex; align-items: center; From ad8de497689bf42c8419c99fe90a3bf29c25f95f Mon Sep 17 00:00:00 2001 From: Felix Niklas Date: Fri, 21 Jul 2017 11:47:25 +0200 Subject: [PATCH 040/144] Searchfield: fix clipped focus shadow on high-res screens fixes #1210 --- app/assets/stylesheets/zammad.scss | 1 + 1 file changed, 1 insertion(+) diff --git a/app/assets/stylesheets/zammad.scss b/app/assets/stylesheets/zammad.scss index 70b569381..71b17c243 100644 --- a/app/assets/stylesheets/zammad.scss +++ b/app/assets/stylesheets/zammad.scss @@ -1860,6 +1860,7 @@ input.has-error { appearance: textfield; border-radius: 19px; padding: 0 17px 0 42px; + will-change: transform; &.is-empty + .empty-search { visibility: hidden; From a9ef5ea8ff739e2748c29bcbfd47ea264dfd1f21 Mon Sep 17 00:00:00 2001 From: Felix Niklas Date: Fri, 21 Jul 2017 14:05:17 +0200 Subject: [PATCH 041/144] Wizard: make sure its scrollable on small screens --- app/assets/stylesheets/zammad.scss | 3 +++ 1 file changed, 3 insertions(+) diff --git a/app/assets/stylesheets/zammad.scss b/app/assets/stylesheets/zammad.scss index 71b17c243..77f690c57 100644 --- a/app/assets/stylesheets/zammad.scss +++ b/app/assets/stylesheets/zammad.scss @@ -6444,6 +6444,9 @@ footer { @extend .u-textTruncate; } +.wizard { + margin: auto; // makes sure that the wizard is scrollable +} .wizard-logo { fill: white; From 3df5cfa4ec9750779172ae15737b3df32cbc4b9f Mon Sep 17 00:00:00 2001 From: Never Date: Fri, 21 Jul 2017 20:30:13 +0800 Subject: [PATCH 042/144] fixed #1267 (#1275) --- public/assets/chat/chat.coffee | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/public/assets/chat/chat.coffee b/public/assets/chat/chat.coffee index b551ea076..2118ff1aa 100644 --- a/public/assets/chat/chat.coffee +++ b/public/assets/chat/chat.coffee @@ -197,6 +197,23 @@ do($ = window.jQuery, window) -> 'Since you didn\'t respond in the last %s minutes your conversation with %s got closed.': 'Da Sie in den letzten %s Minuten nichts geschrieben haben wurde Ihre Konversation mit %s geschlossen.' 'Since you didn\'t respond in the last %s minutes your conversation got closed.': 'Da Sie in den letzten %s Minuten nichts geschrieben haben wurde Ihre Konversation geschlossen.' 'We are sorry, it takes longer as expected to get an empty slot. Please try again later or send us an email. Thank you!': 'Es tut uns leid, es dauert länger als erwartet, um einen freien Platz zu erhalten. Bitte versuchen Sie es zu einem späteren Zeitpunkt noch einmal oder schicken Sie uns eine E-Mail. Vielen Dank!' + 'es' + 'Chat with us!': 'Chatee con nosotros!' + 'Scroll down to see new messages': 'Haga scroll hacia abajo para ver nuevos mensajes' + 'Online': 'En linea' + 'Online': 'En linea' + 'Offline': 'Desconectado' + 'Connecting': 'Conectando' + 'Connection re-established': 'Conexión restablecida' + 'Today': 'Hoy' + 'Send': 'Enviar' + 'Compose your message...': 'Escriba su mensaje...' + 'All colleagues are busy.': 'Todos los agentes están ocupados.' + 'You are on waiting list position %s.': 'Usted está en la posición %s de la lista de espera.' + 'Start new conversation': 'Iniciar nueva conversación' + 'Since you didn\'t respond in the last %s minutes your conversation with %s got closed.': 'Puesto que usted no respondió en los últimos %s minutos su conversación con %s se ha cerrado.' + 'Since you didn\'t respond in the last %s minutes your conversation got closed.': 'Puesto que usted no respondió en los últimos %s minutos su conversación se ha cerrado.' + 'We are sorry, it takes longer as expected to get an empty slot. Please try again later or send us an email. Thank you!': 'Lo sentimos, se tarda más tiempo de lo esperado para ser atendido por un agente. Inténtelo de nuevo más tarde o envíenos un correo electrónico. ¡Gracias!' 'fr': 'Chat with us!': 'Chattez avec nous!' 'Scroll down to see new messages': 'Faites défiler pour lire les nouveaux messages' From 961a5ecfa5df79734c6f76d798695ceb92f8b82a Mon Sep 17 00:00:00 2001 From: Felix Niklas Date: Fri, 21 Jul 2017 14:32:03 +0200 Subject: [PATCH 043/144] Dropdown: prevent overlap with modal --- app/assets/stylesheets/zammad.scss | 2 ++ 1 file changed, 2 insertions(+) diff --git a/app/assets/stylesheets/zammad.scss b/app/assets/stylesheets/zammad.scss index 77f690c57..3ab10f4d1 100644 --- a/app/assets/stylesheets/zammad.scss +++ b/app/assets/stylesheets/zammad.scss @@ -5968,6 +5968,8 @@ footer { } .dropdown-menu { + @extend .zIndex-9; // has to be behind modal windows + position: absolute; margin: 0; padding: 0; min-width: 100%; From c8fb10e1b5d1fe3a1a2e56e1e23aaa898433960c Mon Sep 17 00:00:00 2001 From: Rolf Schmidt Date: Fri, 21 Jul 2017 15:02:16 +0200 Subject: [PATCH 044/144] Revert "Fixed issue #986 - Zammad sends reply to itself." This reverts commit 084ef3f50dd31b6898ef08097b9d6c35ae4e5bb1. --- .../app/controllers/ticket_zoom/article_actions.coffee | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/assets/javascripts/app/controllers/ticket_zoom/article_actions.coffee b/app/assets/javascripts/app/controllers/ticket_zoom/article_actions.coffee index ad9f73d79..df150405a 100644 --- a/app/assets/javascripts/app/controllers/ticket_zoom/article_actions.coffee +++ b/app/assets/javascripts/app/controllers/ticket_zoom/article_actions.coffee @@ -336,7 +336,8 @@ class App.TicketZoomArticleActions extends App.Controller articleNew.to = ticket.customer.email else - if article.sender.name is 'Agent' + user = App.User.find(article.created_by_id) + if article.sender.name is 'Agent' && !article.from.match(user.email) articleNew.to = article.to else if article.reply_to From 1c46b61c4b4f6468f95a95eb7492725f78e0e96f Mon Sep 17 00:00:00 2001 From: Thorsten Eckel Date: Fri, 21 Jul 2017 15:03:34 +0200 Subject: [PATCH 045/144] Fixed failing TravisCI jobs caused by confusion about TravisCI ENV and job ENV. --- .travis.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 510217e74..c8153f76e 100644 --- a/.travis.yml +++ b/.travis.yml @@ -7,7 +7,6 @@ notifications: env: - DB=mysql - DB=postgresql - - BUNDLE_JOBS=8 addons: postgresql: "9.4" apt: From 7253631f54d9fc0d08163b7ffe220d816310df65 Mon Sep 17 00:00:00 2001 From: Felix Niklas Date: Fri, 21 Jul 2017 15:06:07 +0200 Subject: [PATCH 046/144] Inputs: readonly and disabled state MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - inputs and textareas will get a dark background as an indicator when they’re set to readonly - checkboxes and radios can’t be set to readonly (html limitation) - added disabled support for the zammad-switch --- .../app/views/layout_ref/inputs.jst.eco | 4 ++ app/assets/stylesheets/zammad.scss | 62 +++++++++++++------ 2 files changed, 48 insertions(+), 18 deletions(-) diff --git a/app/assets/javascripts/app/views/layout_ref/inputs.jst.eco b/app/assets/javascripts/app/views/layout_ref/inputs.jst.eco index 7fc1e34c6..50ff41cc4 100644 --- a/app/assets/javascripts/app/views/layout_ref/inputs.jst.eco +++ b/app/assets/javascripts/app/views/layout_ref/inputs.jst.eco @@ -51,6 +51,10 @@
                          +
                          + + +
                          diff --git a/app/assets/stylesheets/zammad.scss b/app/assets/stylesheets/zammad.scss index 3ab10f4d1..e4557822d 100644 --- a/app/assets/stylesheets/zammad.scss +++ b/app/assets/stylesheets/zammad.scss @@ -398,7 +398,8 @@ pre code.hljs { } &.is-disabled, - &[disabled] { + &[disabled], + &:disabled { pointer-events: none; cursor: not-allowed; opacity: .33; @@ -1623,6 +1624,24 @@ textarea, border-color: hsl(200,71%,59%); box-shadow: 0 0 0 3px hsl(201,62%,90%); } + + &.is-disabled, // .is-disabled should not be used - legacy support + &[disabled], + &[readonly] { + background: hsl(210,17%,93%); + border-color: hsl(210,10%,85%); + + &:focus, + &.focus { + border-color: hsl(200,71%,59%); + } + } + + &.is-disabled, // .is-disabled should not be used + &[disabled] { + cursor: not-allowed; + opacity: 1; + } } input[type=url] { @@ -1700,13 +1719,6 @@ select.form-control:not([multiple]) { display: none; } -.form-control[disabled], .form-control.is-disabled { - cursor: not-allowed; - background-color: #fff; - color: #d5d5d5; - opacity: 1; -} - .form-control.form-control--borderless { border: none; padding: 0; @@ -5487,8 +5499,13 @@ footer { .newTicket .sidebar { width: 290px; } - .newTicket .form-control:not(:focus):not(.focus) { + .newTicket .form-control { border-color: hsl(0,0%,90%); + + &:focus, + &.focus { + border-color: hsl(200,71%,59%); + } } .newTicket .article-form-top { margin-top: 15px; @@ -6309,15 +6326,18 @@ footer { cursor: default; } -.checkbox.form-group .controls label { - padding: 2px 0; - font: inherit; - font-size: 13px; - margin-bottom: 0; - color: inherit; - text-transform: inherit; - letter-spacing: 0; - @extend .u-clickable; +.checkbox, +.radio { + &.form-group .controls label { + padding: 2px 0; + font: inherit; + font-size: 13px; + margin-bottom: 0; + color: inherit; + text-transform: inherit; + letter-spacing: 0; + @extend .u-clickable; + } } .userSearch-label { @@ -7191,6 +7211,12 @@ output { .zammad-switch input { display: none; + &[disabled] + label { + cursor: not-allowed; + background: hsl(210,17%,93%); + border-color: hsl(210,10%,85%); + } + &:focus + label { transition: none; background: hsl(200,71%,59%); From 6b3bc0701c10bbfd97fb935d8469e669a8557930 Mon Sep 17 00:00:00 2001 From: Felix Niklas Date: Fri, 21 Jul 2017 15:23:18 +0200 Subject: [PATCH 047/144] Searchfield: fix that icon is visible --- app/assets/javascripts/app/views/layout_ref/user_list.jst.eco | 2 +- app/assets/javascripts/app/views/search/index.jst.eco | 2 +- app/assets/javascripts/app/views/user.jst.eco | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/app/assets/javascripts/app/views/layout_ref/user_list.jst.eco b/app/assets/javascripts/app/views/layout_ref/user_list.jst.eco index 93f91446e..07f1630aa 100644 --- a/app/assets/javascripts/app/views/layout_ref/user_list.jst.eco +++ b/app/assets/javascripts/app/views/layout_ref/user_list.jst.eco @@ -116,8 +116,8 @@
                          - <%- @Icon('magnifier') %> + <%- @Icon('magnifier') %>
                          diff --git a/app/assets/javascripts/app/views/search/index.jst.eco b/app/assets/javascripts/app/views/search/index.jst.eco index 504e997f3..55637065d 100644 --- a/app/assets/javascripts/app/views/search/index.jst.eco +++ b/app/assets/javascripts/app/views/search/index.jst.eco @@ -3,8 +3,8 @@