Added possibility to set create groups via setting/channels/web. Added browser tests.
This commit is contained in:
parent
4ad897ce9b
commit
a52a74a915
5 changed files with 105 additions and 8 deletions
|
@ -279,9 +279,9 @@ class Index extends App.Controller
|
||||||
reply: (e) =>
|
reply: (e) =>
|
||||||
e.preventDefault()
|
e.preventDefault()
|
||||||
article_id = $(e.target).parents('[data-id]').data('id')
|
article_id = $(e.target).parents('[data-id]').data('id')
|
||||||
article = App.TicketArticle.find( article_id )
|
article = App.Collection.find( 'TicketArticle', article_id )
|
||||||
article_type = App.TicketArticleType.find( article.ticket_article_type_id )
|
article_type = App.Collection.find( 'TicketArticleType', article.ticket_article_type_id )
|
||||||
customer = App.User.find( article.created_by_id )
|
customer = App.Collection.find( 'User', article.created_by_id )
|
||||||
|
|
||||||
# update form
|
# update form
|
||||||
@form_update_execute(article_type)
|
@form_update_execute(article_type)
|
||||||
|
@ -347,7 +347,7 @@ class Index extends App.Controller
|
||||||
e.preventDefault()
|
e.preventDefault()
|
||||||
params = @formParam(e.target)
|
params = @formParam(e.target)
|
||||||
@log 'TicketZoom', 'notice', 'update', params, @ticket
|
@log 'TicketZoom', 'notice', 'update', params, @ticket
|
||||||
article_type = App.TicketArticleType.find( params['ticket_article_type_id'] )
|
article_type = App.Collection.find( 'TicketArticleType', params['ticket_article_type_id'] )
|
||||||
|
|
||||||
# update ticket
|
# update ticket
|
||||||
ticket_update = {}
|
ticket_update = {}
|
||||||
|
|
|
@ -85,12 +85,25 @@ class Index extends App.Controller
|
||||||
if !( 'ticket_priority_id' of defaults )
|
if !( 'ticket_priority_id' of defaults )
|
||||||
defaults['ticket_priority_id'] = App.Collection.findByAttribute( 'TicketPriority', 'name', '2 normal' )
|
defaults['ticket_priority_id'] = App.Collection.findByAttribute( 'TicketPriority', 'name', '2 normal' )
|
||||||
|
|
||||||
groupFilter = (collection) =>
|
groupFilter = (collection, type) =>
|
||||||
|
|
||||||
|
# only filter on collections
|
||||||
|
return collection if type isnt 'collection'
|
||||||
|
|
||||||
|
# get configured ids
|
||||||
|
group_ids = App.Config.get('customer_ticket_create_group_ids')
|
||||||
|
|
||||||
|
# return all groups if no one is selected
|
||||||
|
if !_.isArray( group_ids )
|
||||||
|
group_ids = [group_ids]
|
||||||
|
|
||||||
|
# filter selected groups
|
||||||
|
if _.isEmpty( group_ids )
|
||||||
|
return collection
|
||||||
_.filter(
|
_.filter(
|
||||||
collection
|
collection
|
||||||
(item) ->
|
(item) ->
|
||||||
return item if item.name is 'Support'
|
return item if item && _.contains( group_ids, item.id.toString() )
|
||||||
return item if item.name is 'Sales'
|
|
||||||
)
|
)
|
||||||
|
|
||||||
# generate form
|
# generate form
|
||||||
|
|
24
db/seeds.rb
24
db/seeds.rb
|
@ -779,6 +779,30 @@ Setting.create_if_not_exists(
|
||||||
:frontend => true
|
:frontend => true
|
||||||
)
|
)
|
||||||
|
|
||||||
|
Setting.create_if_not_exists(
|
||||||
|
:title => 'Group selection for Ticket creation',
|
||||||
|
:name => 'customer_ticket_create_group_ids',
|
||||||
|
:area => 'CustomerWeb::Base',
|
||||||
|
:description => 'Defines groups where customer can create tickets via web interface. "-" means all groups are available.',
|
||||||
|
:options => {
|
||||||
|
:form => [
|
||||||
|
{
|
||||||
|
:display => '',
|
||||||
|
:null => true,
|
||||||
|
:name => 'group_ids',
|
||||||
|
:tag => 'select',
|
||||||
|
:multiple => true,
|
||||||
|
:null => false,
|
||||||
|
:nulloption => true,
|
||||||
|
:relation => 'Group',
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
:state => '',
|
||||||
|
:frontend => true
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
Setting.create_if_not_exists(
|
Setting.create_if_not_exists(
|
||||||
:title => 'Enable Ticket View/Update',
|
:title => 'Enable Ticket View/Update',
|
||||||
:name => 'customer_ticket_view',
|
:name => 'customer_ticket_view',
|
||||||
|
|
|
@ -22,6 +22,16 @@ class TicketCreate < ActiveSupport::TestCase
|
||||||
:id => 'form_create',
|
:id => 'form_create',
|
||||||
:result => true,
|
:result => true,
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
:execute => 'wait',
|
||||||
|
:value => 2,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
:execute => 'select',
|
||||||
|
:element => :select_list,
|
||||||
|
:name => 'group_id',
|
||||||
|
:value => 'Users',
|
||||||
|
},
|
||||||
{
|
{
|
||||||
:execute => 'set',
|
:execute => 'set',
|
||||||
:element => :text_field,
|
:element => :text_field,
|
||||||
|
@ -41,7 +51,7 @@ class TicketCreate < ActiveSupport::TestCase
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
:execute => 'wait',
|
:execute => 'wait',
|
||||||
:value => 3,
|
:value => 5,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
:execute => 'check',
|
:execute => 'check',
|
||||||
|
@ -54,6 +64,44 @@ class TicketCreate < ActiveSupport::TestCase
|
||||||
:element => :url,
|
:element => :url,
|
||||||
:result => '#ticket/zoom/',
|
:result => '#ticket/zoom/',
|
||||||
},
|
},
|
||||||
|
|
||||||
|
# check ticket
|
||||||
|
{
|
||||||
|
:execute => 'match',
|
||||||
|
:element => :div,
|
||||||
|
:class => 'article',
|
||||||
|
:value => 'some body 123äöü',
|
||||||
|
:match_result => true,
|
||||||
|
},
|
||||||
|
|
||||||
|
# update ticket
|
||||||
|
{
|
||||||
|
:execute => 'check',
|
||||||
|
:element => :text_field,
|
||||||
|
:name => 'body',
|
||||||
|
:result => true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
:execute => 'set',
|
||||||
|
:element => :text_field,
|
||||||
|
:name => 'body',
|
||||||
|
:value => 'some body 1234 äöüß',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
:execute => 'click',
|
||||||
|
:element => :button,
|
||||||
|
:type => 'submit',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
:execute => 'wait',
|
||||||
|
:value => 5,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
:execute => 'match',
|
||||||
|
:element => :body,
|
||||||
|
:value => 'some body 1234 äöüß',
|
||||||
|
:match_result => true,
|
||||||
|
},
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
]
|
]
|
||||||
|
|
|
@ -138,6 +138,14 @@ class ActiveSupport::TestCase
|
||||||
element = instance.send( action[:element], { :type => action[:type] } )
|
element = instance.send( action[:element], { :type => action[:type] } )
|
||||||
assert( element.exists?, "(#{test[:name]}) Element #{action[:element]} with type #{action[:type]} doesn't exist" )
|
assert( element.exists?, "(#{test[:name]}) Element #{action[:element]} with type #{action[:type]} doesn't exist" )
|
||||||
end
|
end
|
||||||
|
elsif action[:class]
|
||||||
|
if action[:result] == false
|
||||||
|
element = instance.send( action[:element], { :class => action[:class] } )
|
||||||
|
assert( !element.exists?, "(#{test[:name]}) Element #{action[:element]} with class #{action[:class]} exists" )
|
||||||
|
else
|
||||||
|
element = instance.send( action[:element], { :class => action[:class] } )
|
||||||
|
assert( element.exists?, "(#{test[:name]}) Element #{action[:element]} with class #{action[:class]} doesn't exist" )
|
||||||
|
end
|
||||||
elsif action[:name]
|
elsif action[:name]
|
||||||
if action[:result] == false
|
if action[:result] == false
|
||||||
element = instance.send( action[:element], { :name => action[:name] } )
|
element = instance.send( action[:element], { :name => action[:name] } )
|
||||||
|
@ -160,11 +168,15 @@ class ActiveSupport::TestCase
|
||||||
else
|
else
|
||||||
assert( false, "(#{test[:name]}) url #{instance.url} is not matching #{action[:result]}" )
|
assert( false, "(#{test[:name]}) url #{instance.url} is not matching #{action[:result]}" )
|
||||||
end
|
end
|
||||||
|
elsif action[:element] == :body
|
||||||
|
element = instance.send( action[:element] )
|
||||||
else
|
else
|
||||||
assert( false, "(#{test[:name]}) unknow selector for '#{action[:element]}'" )
|
assert( false, "(#{test[:name]}) unknow selector for '#{action[:element]}'" )
|
||||||
end
|
end
|
||||||
if action[:execute] == 'set'
|
if action[:execute] == 'set'
|
||||||
element.set( action[:value] )
|
element.set( action[:value] )
|
||||||
|
elsif action[:execute] == 'select'
|
||||||
|
element.select( action[:value] )
|
||||||
elsif action[:execute] == 'click'
|
elsif action[:execute] == 'click'
|
||||||
element.click
|
element.click
|
||||||
elsif action[:execute] == 'send_key'
|
elsif action[:execute] == 'send_key'
|
||||||
|
|
Loading…
Reference in a new issue