Follow up 5f2181d8a3
- Fixes #3757 - escaped 'Set fixed' workflows don't refresh set values on active ticket sessions.
This commit is contained in:
parent
dfb2abe380
commit
57945692cc
3 changed files with 72 additions and 2 deletions
|
@ -200,10 +200,10 @@ class App.TicketZoom extends App.Controller
|
||||||
formMeta = data.form_meta
|
formMeta = data.form_meta
|
||||||
|
|
||||||
# on the following states we want to rerender the ticket:
|
# on the following states we want to rerender the ticket:
|
||||||
# - if the object attribute configuration has changed (attribute values, restrictions, filters)
|
# - if the object attribute configuration has changed (attribute values, dependecies, filters)
|
||||||
# - if the user view has changed (agent/customer)
|
# - if the user view has changed (agent/customer)
|
||||||
# - if the ticket permission has changed (read/write/full)
|
# - if the ticket permission has changed (read/write/full)
|
||||||
if @view && ( !_.isEqual(@formMeta, formMeta) || @view isnt view || @readable isnt readable || @changeable isnt changeable || @fullable isnt fullable )
|
if @view && ( !_.isEqual(@formMeta.configure_attributes, formMeta.configure_attributes) || !_.isEqual(@formMeta.dependencies, formMeta.dependencies) || !_.isEqual(@formMeta.filter, formMeta.filter) || @view isnt view || @readable isnt readable || @changeable isnt changeable || @fullable isnt fullable )
|
||||||
@renderDone = false
|
@renderDone = false
|
||||||
|
|
||||||
@view = view
|
@view = view
|
||||||
|
@ -214,6 +214,7 @@ class App.TicketZoom extends App.Controller
|
||||||
|
|
||||||
# render page
|
# render page
|
||||||
@render(local)
|
@render(local)
|
||||||
|
App.Event.trigger('ui::ticket::load', data)
|
||||||
|
|
||||||
meta: =>
|
meta: =>
|
||||||
|
|
||||||
|
|
|
@ -5,6 +5,13 @@
|
||||||
class Edit extends App.Controller
|
class Edit extends App.Controller
|
||||||
constructor: (params) ->
|
constructor: (params) ->
|
||||||
super
|
super
|
||||||
|
@controllerBind('ui::ticket::load', (data) =>
|
||||||
|
return if data.ticket_id.toString() isnt @ticket.id.toString()
|
||||||
|
|
||||||
|
@ticket = App.Ticket.find(@ticket.id)
|
||||||
|
@formMeta = data.form_meta
|
||||||
|
@render()
|
||||||
|
)
|
||||||
@render()
|
@render()
|
||||||
|
|
||||||
render: =>
|
render: =>
|
||||||
|
@ -18,6 +25,9 @@ class Edit extends App.Controller
|
||||||
|
|
||||||
if !_.isEmpty(taskState)
|
if !_.isEmpty(taskState)
|
||||||
defaults = _.extend(defaults, taskState)
|
defaults = _.extend(defaults, taskState)
|
||||||
|
# remove core workflow data because it should trigger a request to get data
|
||||||
|
# for the new ticket + eventually changed task state
|
||||||
|
@formMeta.core_workflow = undefined
|
||||||
|
|
||||||
if followUpPossible == 'new_ticket' && ticketState != 'closed' ||
|
if followUpPossible == 'new_ticket' && ticketState != 'closed' ||
|
||||||
followUpPossible != 'new_ticket' ||
|
followUpPossible != 'new_ticket' ||
|
||||||
|
|
|
@ -2134,4 +2134,63 @@ RSpec.describe 'Ticket zoom', type: :system do
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
context 'Basic sidebar handling because of regressions in #3757' do
|
||||||
|
let(:ticket) { create(:ticket, group: Group.find_by(name: 'Users')) }
|
||||||
|
|
||||||
|
before do
|
||||||
|
visit "#ticket/zoom/#{ticket.id}"
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'does show up the new priority' do
|
||||||
|
high_prio = Ticket::Priority.find_by(name: '3 high')
|
||||||
|
ticket.update(priority: high_prio)
|
||||||
|
wait(10, interval: 0.5).until { page.find("select[name='priority_id']").value == high_prio.id.to_s }
|
||||||
|
expect(page.find("select[name='priority_id']").value).to eq(high_prio.id.to_s)
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'does show up the new state and pending time' do
|
||||||
|
pending_state = Ticket::State.find_by(name: 'pending reminder')
|
||||||
|
ticket.update(state: pending_state, pending_time: 1.day.from_now)
|
||||||
|
wait(10, interval: 0.5).until { page.find("select[name='state_id']").value == pending_state.id.to_s }
|
||||||
|
expect(page.find("select[name='state_id']").value).to eq(pending_state.id.to_s)
|
||||||
|
expect(page).to have_selector("div[data-name='pending_time']")
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'does merge attributes with remote priority (ajax) and local state (user)' do
|
||||||
|
select 'closed', from: 'State'
|
||||||
|
high_prio = Ticket::Priority.find_by(name: '3 high')
|
||||||
|
closed_state = Ticket::State.find_by(name: 'closed')
|
||||||
|
ticket.update(priority: high_prio)
|
||||||
|
wait(10, interval: 0.5).until { page.find("select[name='priority_id']").value == high_prio.id.to_s }
|
||||||
|
expect(page.find("select[name='priority_id']").value).to eq(high_prio.id.to_s)
|
||||||
|
expect(page.find("select[name='state_id']").value).to eq(closed_state.id.to_s)
|
||||||
|
end
|
||||||
|
|
||||||
|
context 'when 2 users are in 2 different tickets' do
|
||||||
|
let(:ticket2) { create(:ticket, group: Group.find_by(name: 'Users')) }
|
||||||
|
let(:agent2) { create(:agent, password: 'test', groups: [Group.find_by(name: 'Users')]) }
|
||||||
|
|
||||||
|
before do
|
||||||
|
using_session(:second_browser) do
|
||||||
|
login(
|
||||||
|
username: agent2.login,
|
||||||
|
password: 'test',
|
||||||
|
)
|
||||||
|
visit "#ticket/zoom/#{ticket.id}"
|
||||||
|
visit "#ticket/zoom/#{ticket2.id}"
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'does not make any changes to the second browser ticket' do
|
||||||
|
closed_state = Ticket::State.find_by(name: 'closed')
|
||||||
|
select 'closed', from: 'State'
|
||||||
|
find('.js-submit').click
|
||||||
|
using_session(:second_browser) do
|
||||||
|
sleep 3
|
||||||
|
expect(page.find("select[name='state_id']").value).not_to eq(closed_state.id.to_s)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in a new issue