Implemented issue #422 - Convert Chat into Ticket.

This commit is contained in:
Martin Edenhofer 2018-01-29 03:44:50 +01:00
parent 5fb6bfed7d
commit 724879c6c8
6 changed files with 46 additions and 9 deletions

View file

@ -211,7 +211,7 @@ class App.TicketCreate extends App.Controller
render: (template = {}) -> render: (template = {}) ->
# get params # get params
params = {} params = @prefilledParams || {}
if template && !_.isEmpty(template.options) if template && !_.isEmpty(template.options)
params = template.options params = template.options
else if App.TaskManager.get(@task_key) && !_.isEmpty(App.TaskManager.get(@task_key).state) else if App.TaskManager.get(@task_key) && !_.isEmpty(App.TaskManager.get(@task_key).state)

View file

@ -163,9 +163,10 @@ class App.CustomerChat extends App.Controller
@title 'Customer Chat', true @title 'Customer Chat', true
@navupdate '#customer_chat' @navupdate '#customer_chat'
if params.session_id && App.ChatSession.exists(params.session_id) if params.session_id
session = App.ChatSession.find(params.session_id) callback = (session) =>
@addChat(session) @addChat(session)
App.ChatSession.full(params.session_id, callback)
@navigate '#customer_chat' @navigate '#customer_chat'
active: (state) => active: (state) =>
@ -342,6 +343,7 @@ class ChatWindow extends App.Controller
'click .js-disconnect': 'disconnect' 'click .js-disconnect': 'disconnect'
'click .js-scrollHint': 'onScrollHintClick' 'click .js-scrollHint': 'onScrollHintClick'
'click .js-info': 'toggleMeta' 'click .js-info': 'toggleMeta'
'click .js-createTicket': 'ticketCreate'
'submit .js-metaForm': 'sendMetaForm' 'submit .js-metaForm': 'sendMetaForm'
elements: elements:
@ -764,6 +766,28 @@ class ChatWindow extends App.Controller
else if showHint else if showHint
@showScrollHint() @showScrollHint()
ticketCreate: (e) =>
e.preventDefault()
id = Math.floor( Math.random() * 99999 )
@navigate "#ticket/create/id/#{id}"
# cleanup params
fqdn = App.Config.get('fqdn')
http_type = App.Config.get('http_type')
clean_params =
id: id
prefilledParams:
body: "#{http_type}://#{fqdn}#{@session.uiUrl()}"
title: 'Chat'
App.TaskManager.execute(
key: "TicketCreateScreen-#{id}"
controller: 'TicketCreate'
params: clean_params
show: true
)
class Setting extends App.ControllerModal class Setting extends App.ControllerModal
buttonClose: true buttonClose: true
buttonCancel: true buttonCancel: true

View file

@ -1,5 +1,3 @@
<!--
<div class="chat-footer"> <div class="chat-footer">
<div class="btn btn--primary js-createTicket">Turn chat into ticket</div> <div class="btn btn--primary js-createTicket"><%- @T('Turn chat into ticket') %></div>
</div> </div>
-->

View file

@ -0,0 +1,10 @@
# Copyright (C) 2012-2016 Zammad Foundation, http://zammad-foundation.org/
class ChatSessionsController < ApplicationController
prepend_before_action { authentication_check(permission: 'chat.agent') }
def show
model_show_render(Chat::Session, params)
end
end

View file

@ -1,7 +1,6 @@
Zammad::Application.routes.draw do Zammad::Application.routes.draw do
api_path = Rails.configuration.api_path api_path = Rails.configuration.api_path
# groups
match api_path + '/chats', to: 'chats#index', via: :get match api_path + '/chats', to: 'chats#index', via: :get
match api_path + '/chats/:id', to: 'chats#show', via: :get match api_path + '/chats/:id', to: 'chats#show', via: :get
match api_path + '/chats', to: 'chats#create', via: :post match api_path + '/chats', to: 'chats#create', via: :post

View file

@ -0,0 +1,6 @@
Zammad::Application.routes.draw do
api_path = Rails.configuration.api_path
match api_path + '/chat_sessions/:id', to: 'chat_sessions#show', via: :get
end