Browse Source

Merge branch 'develop' of github.com:martini/zammad into develop

Felix Niklas 9 years ago
parent
commit
50cf1fa018

+ 4 - 7
app/assets/javascripts/app/controllers/chat.coffee

@@ -119,7 +119,6 @@ class App.CustomerChat extends App.Controller
           type: 'error'
           msg:  App.i18n.translateContent('To be able to chat you need to select min. one chat topic in settings!')
         )
-        return
 
     @meta.active = state
 
@@ -148,7 +147,6 @@ class App.CustomerChat extends App.Controller
     if @meta.active_sessions
       for session in @meta.active_sessions
         @addChat(session)
-        console.log('updateMeta aC', session)
     @meta.active_sessions = false
 
     @updateNavMenu()
@@ -281,7 +279,8 @@ class ChatWindow extends App.Controller
         if preferences.chat && preferences.chat.phrase
           phrases = preferences.chat.phrase[@session.chat_id]
           if phrases
-            @sendMessage phrases
+            @input.html(phrases)
+            @sendMessage()
 
   focus: =>
     @input.focus()
@@ -352,12 +351,10 @@ class ChatWindow extends App.Controller
           event.preventDefault()
           @sendMessage()
 
-  sendMessage: (content) =>
-    if !content
-      content = @input.html()
+  sendMessage: =>
+    content = @input.html()
     return if !content
 
-    console.log('send', content, @session.session_id)
     App.WebSocket.send(
       event:'chat_session_message'
       data:

+ 1 - 1
app/models/chat.rb

@@ -18,7 +18,7 @@ class Chat < ApplicationModel
             chat_user = User.find(chat_session.user_id)
             url = nil
             if chat_user.image && chat_user.image != 'none'
-              url = "/api/v1/users/image/#{chat_user.image}"
+              url = "#{Setting.get('http_type')}://#{Setting.get('fqdn')}/api/v1/users/image/#{chat_user.image}"
             end
             user = {
               name: chat_user.fullname,

+ 1 - 1
lib/sessions/event/chat_session_start.rb

@@ -23,7 +23,7 @@ class Sessions::Event::ChatSessionStart < Sessions::Event::ChatBase
     chat_user = User.find(chat_session.user_id)
     url = nil
     if chat_user.image && chat_user.image != 'none'
-      url = "/api/v1/users/image/#{chat_user.image}"
+      url = "#{Setting.get('http_type')}://#{Setting.get('fqdn')}/api/v1/users/image/#{chat_user.image}"
     end
     user = {
       name: chat_user.fullname,

+ 7 - 7
public/assets/chat/chat.coffee

@@ -8,7 +8,7 @@ do($ = window.jQuery, window) ->
   class ZammadChat
 
     defaults:
-      chat_id: undefined
+      chatId: undefined
       show: true
       target: $('body')
       host: ''
@@ -73,6 +73,7 @@ do($ = window.jQuery, window) ->
         return window.zammadChatTemplates[name](options)
 
     constructor: (options) ->
+      @options = $.extend {}, @defaults, options
 
       # check prerequisites
       if !window.WebSocket or !sessionStorage
@@ -80,12 +81,11 @@ do($ = window.jQuery, window) ->
         @log 'notice', 'Chat: Browser not supported!'
         return
 
-      if !options.chat_id
+      if !@options.chatId
         @state = 'unsupported'
-        @log 'error', 'Chat: need chat id as option!'
+        @log 'error', 'Chat: need chatId as option!'
         return
 
-      @options = $.extend {}, @defaults, options
       @el = $(@view('chat')(
         title: @options.title
       ))
@@ -111,7 +111,7 @@ do($ = window.jQuery, window) ->
         @sendMessage()
 
     send: (event, data = {}) =>
-      data.chat_id = @options.chat_id
+      data.chat_id = @options.chatId
       @log 'debug', 'ws:send', event, data
       pipe = JSON.stringify
         event: event
@@ -447,12 +447,12 @@ do($ = window.jQuery, window) ->
       protocol = 'ws://'
       if window.location.protocol is 'https:'
         protocol = 'wss://'
-      @options.host = "#{ protocol }#{ scriptHost }"
+      @options.host = "#{ protocol }#{ scriptHost }/ws"
 
     wsConnect: =>
       @detectHost() if !@options.host
 
-      @log 'notice', "Connecting to #{@options.host}"
+      @log 'debug', "Connecting to #{@options.host}"
       @ws = new window.WebSocket("#{@options.host}")
       @ws.onopen = @onWebSocketOpen
 

+ 68 - 68
public/assets/chat/chat.js

@@ -8,7 +8,7 @@ var bind = function(fn, me){ return function(){ return fn.apply(me, arguments);
   scriptHost = myScript.src.match('.*://([^:/]*).*')[1];
   ZammadChat = (function() {
     ZammadChat.prototype.defaults = {
-      chat_id: void 0,
+      chatId: void 0,
       show: true,
       target: $('body'),
       host: '',
@@ -134,17 +134,17 @@ var bind = function(fn, me){ return function(){ return fn.apply(me, arguments);
       this.view = bind(this.view, this);
       this.log = bind(this.log, this);
       this.T = bind(this.T, this);
+      this.options = $.extend({}, this.defaults, options);
       if (!window.WebSocket || !sessionStorage) {
         this.state = 'unsupported';
         this.log('notice', 'Chat: Browser not supported!');
         return;
       }
-      if (!options.chat_id) {
+      if (!this.options.chatId) {
         this.state = 'unsupported';
-        this.log('error', 'Chat: need chat id as option!');
+        this.log('error', 'Chat: need chatId as option!');
         return;
       }
-      this.options = $.extend({}, this.defaults, options);
       this.el = $(this.view('chat')({
         title: this.options.title
       }));
@@ -173,7 +173,7 @@ var bind = function(fn, me){ return function(){ return fn.apply(me, arguments);
       if (data == null) {
         data = {};
       }
-      data.chat_id = this.options.chat_id;
+      data.chat_id = this.options.chatId;
       this.log('debug', 'ws:send', event, data);
       pipe = JSON.stringify({
         event: event,
@@ -551,14 +551,14 @@ var bind = function(fn, me){ return function(){ return fn.apply(me, arguments);
       if (window.location.protocol === 'https:') {
         protocol = 'wss://';
       }
-      return this.options.host = "" + protocol + scriptHost;
+      return this.options.host = "" + protocol + scriptHost + "/ws";
     };
 
     ZammadChat.prototype.wsConnect = function() {
       if (!this.options.host) {
         this.detectHost();
       }
-      this.log('notice', "Connecting to " + this.options.host);
+      this.log('debug', "Connecting to " + this.options.host);
       this.ws = new window.WebSocket("" + this.options.host);
       this.ws.onopen = this.onWebSocketOpen;
       this.ws.onmessage = this.onWebSocketMessage;
@@ -683,67 +683,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, '&amp;')
-        .replace(/</g, '&lt;')
-        .replace(/>/g, '&gt;')
-        .replace(/"/g, '&quot;');
-    };
-  }
-  (function() {
-    (function() {
-      if (this.agent.avatar) {
-        __out.push('\n<img class="zammad-chat-agent-avatar" src="');
-        __out.push(__sanitize(this.agent.avatar));
-        __out.push('">\n');
-      }
-    
-      __out.push('\n<span class="zammad-chat-agent-sentence">\n  <span class="zammad-chat-agent-name">');
-    
-      __out.push(__sanitize(this.agent.name));
-    
-      __out.push('</span>\n</span>');
-    
-    }).call(this);
-    
-  }).call(__obj);
-  __obj.safe = __objSafe, __obj.escape = __escape;
-  return __out.join('');
-};
-
 /*!
  * ----------------------------------------------------------------------------
  * "THE BEER-WARE LICENSE" (Revision 42):
@@ -821,6 +760,67 @@ jQuery.fn.autoGrow = function(options) {
 
   });
 };
+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, '&amp;')
+        .replace(/</g, '&lt;')
+        .replace(/>/g, '&gt;')
+        .replace(/"/g, '&quot;');
+    };
+  }
+  (function() {
+    (function() {
+      if (this.agent.avatar) {
+        __out.push('\n<img class="zammad-chat-agent-avatar" src="');
+        __out.push(__sanitize(this.agent.avatar));
+        __out.push('">\n');
+      }
+    
+      __out.push('\n<span class="zammad-chat-agent-sentence">\n  <span class="zammad-chat-agent-name">');
+    
+      __out.push(__sanitize(this.agent.name));
+    
+      __out.push('</span>\n</span>');
+    
+    }).call(this);
+    
+  }).call(__obj);
+  __obj.safe = __objSafe, __obj.escape = __escape;
+  return __out.join('');
+};
+
 if (!window.zammadChatTemplates) {
   window.zammadChatTemplates = {};
 }

File diff suppressed because it is too large
+ 0 - 0
public/assets/chat/chat.min.js


+ 1 - 1
public/assets/chat/index.html

@@ -138,7 +138,7 @@
 -->
 <script>
   var chat = new ZammadChat({
-    chat_id: 1,
+    chatId: 1,
     host: 'ws://localhost:6042',
     debug: true
   });

+ 1 - 1
public/assets/chat/znuny.html

@@ -105,7 +105,7 @@
 <script src="chat.js"></script>
 <script>
   var chat = new ZammadChat({
-    chat_id: 1,
+    chatId: 1,
     host: 'ws://localhost:6042',
     debug: true,
     background: '#494d52',

+ 3 - 3
test/unit/chat_test.rb

@@ -200,7 +200,7 @@ class ChatTest < ActiveSupport::TestCase
 
     # check customer state
     assert_equal('no_seats_available', chat.customer_state[:state])
-    assert_equal(0, chat.customer_state[:queue])
+    assert_equal(5, chat.customer_state[:queue])
 
     # check agent1 state
     agent_state = Chat.agent_state(agent1.id)
@@ -225,7 +225,7 @@ class ChatTest < ActiveSupport::TestCase
 
     # check customer state
     assert_equal('no_seats_available', chat.customer_state[:state])
-    assert_equal(-2, chat.customer_state[:queue])
+    assert_equal(5, chat.customer_state[:queue])
 
     # check agent1 state
     agent_state = Chat.agent_state(agent1.id)
@@ -250,7 +250,7 @@ class ChatTest < ActiveSupport::TestCase
 
     # check customer state
     assert_equal('no_seats_available', chat.customer_state[:state])
-    assert_equal(-1, chat.customer_state[:queue])
+    assert_equal(5, chat.customer_state[:queue])
 
     # check agent1 state
     agent_state = Chat.agent_state(agent1.id)

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