Browse Source

Fixes #4364 - Remove ticket hook when pasting into ticket link dialog.

Stubenhocker1399 2 years ago
parent
commit
59c4126cc5

+ 1 - 1
Gemfile.lock

@@ -483,7 +483,7 @@ GEM
       activesupport (>= 4.2.0)
       rack (>= 1.1)
       rubocop (>= 1.33.0, < 2.0)
-    rubocop-rspec (2.16.0)
+    rubocop-rspec (2.15.0)
       rubocop (~> 1.33)
     ruby-progressbar (1.11.0)
     ruby-saml (1.14.0)

+ 0 - 23
app/assets/javascripts/app/controllers/_plugin/default_timezone.coffee

@@ -1,23 +0,0 @@
-class DefaultTimezone extends App.Controller
-  constructor: ->
-    super
-
-    @delay(@setTimezoneIfNeeded, 8500, 'default_timezone')
-
-  setTimezoneIfNeeded: =>
-    return if !_.isEmpty(App.Config.get('timezone_default'))
-
-    timezone = App.i18n.detectBrowserTimezone()
-    return if !timezone
-
-    return if !@permissionCheck('admin.system')
-
-    App.Setting.fetchFull(
-      => @updateSetting(timezone)
-      force: false
-    )
-
-  updateSetting: (timezone) ->
-    App.Setting.set('timezone_default', timezone)
-
-App.Config.set('default_timezone', DefaultTimezone, 'Plugins')

+ 5 - 21
app/assets/javascripts/app/controllers/agent_ticket_merge.coffee

@@ -1,4 +1,6 @@
 class App.TicketMerge extends App.ControllerModal
+  @include App.TicketNumberInput
+
   buttonClose: true
   buttonCancel: true
   buttonSubmit: true
@@ -49,27 +51,9 @@ class App.TicketMerge extends App.ControllerModal
       radio:      true
     )
 
-    content.on('focus', '[name="target_ticket_number"]', (e) ->
-      $(e.target).parents().find('[name="radio"]').prop('checked', false)
-    )
-
-    content.on('paste', '[name="target_ticket_number"]', (e) =>
-      execute = ->
-        # remove ticket hook if present
-        if e.target && e.target.value
-          $('[name="target_ticket_number"]').val( e.target.value.replace(App.Config.get('ticket_hook'), '') )
-
-      @delay( execute, 0)
-
-      return
-    )
-
-    content.on('click', '[name="radio"]', (e) ->
-      if $(e.target).prop('checked')
-        ticket_id = $(e.target).val()
-        ticket    = App.Ticket.fullLocal(ticket_id)
-        $(e.target).parents().find('[name="target_ticket_number"]').val(ticket.number)
-    )
+    @removeTicketSelectionOnFocus(content, 'target_ticket_number')
+    @stripTicketHookOnPaste(content, 'target_ticket_number')
+    @updateTicketNumberOnRadioClick(content, 'target_ticket_number')
 
     content
 

+ 5 - 9
app/assets/javascripts/app/controllers/ticket_link_add.coffee

@@ -1,4 +1,6 @@
 class App.TicketLinkAdd extends App.ControllerModal
+  @include App.TicketNumberInput
+
   buttonClose: true
   buttonCancel: true
   buttonSubmit: true
@@ -45,16 +47,10 @@ class App.TicketLinkAdd extends App.ControllerModal
     if @ticketIdsRecentViewed
       @buildContentTable(content, @ticketIdsRecentViewed, 'ticket-merge-recent-tickets')
 
-    content.on('focus', '[name="ticket_number"]', (e) ->
-      $(e.target).parents().find('[name="radio"]').prop('checked', false)
-    )
+    @removeTicketSelectionOnFocus(content, 'ticket_number')
+    @stripTicketHookOnPaste(content, 'ticket_number')
+    @updateTicketNumberOnRadioClick(content, 'ticket_number')
 
-    content.on('click', '[name="radio"]', (e) ->
-      if $(e.target).prop('checked')
-        ticket_id = $(e.target).val()
-        ticket    = App.Ticket.fullLocal( ticket_id )
-        $(e.target).parents().find('[name="ticket_number"]').val(ticket.number)
-    )
     content
 
   buildContentTable: (container, ticket_ids, tableId) ->

+ 26 - 0
app/assets/javascripts/app/lib/mixins/ticket_number_input.coffee

@@ -0,0 +1,26 @@
+# Common event handlers for ticket number input field
+App.TicketNumberInput =
+  removeTicketSelectionOnFocus: (content, field_name) ->
+    content.on('focus', "[name=\"#{field_name}\"]", (e) ->
+      $(e.target).parents().find('[name="radio"]').prop('checked', false)
+    )
+
+  stripTicketHookOnPaste: (content, field_name) ->
+    content.on('paste', "[name=\"#{field_name}\"]", (e) =>
+      execute = ->
+        # Remove ticket hook if present.
+        if e.target && e.target.value
+          $("[name=\"#{field_name}\"]").val( e.target.value.replace(App.Config.get('ticket_hook'), '') )
+
+      @delay(execute, 0)
+
+      return
+    )
+
+  updateTicketNumberOnRadioClick: (content, field_name) ->
+    content.on('click', '[name="radio"]', (e) ->
+      if $(e.target).prop('checked')
+        ticket_id = $(e.target).val()
+        ticket    = App.Ticket.fullLocal( ticket_id )
+        $(e.target).parents().find("[name=\"#{field_name}\"]").val(ticket.number)
+    )

+ 2 - 2
spec/db/migrate/issue_3810_custom_date_attribute_no_default_spec.rb

@@ -4,8 +4,8 @@ require 'rails_helper'
 
 RSpec.describe Issue3810CustomDateAttributeNoDefault, db_strategy: :reset_all, type: :db_migration do
   before :all do # rubocop:disable RSpec/BeforeAfterAll
-    create(:object_manager_attribute_date, name: 'rspec_date', default: 24)
-    create(:object_manager_attribute_datetime, name: 'rspec_datetime', default: 24)
+    create('object_manager_attribute_date', name: 'rspec_date', default: 24)
+    create('object_manager_attribute_datetime', name: 'rspec_datetime', default: 24)
 
     ObjectManager::Attribute.migration_execute
   end

+ 1 - 1
spec/factories/knowledge_base/answer.rb

@@ -14,7 +14,7 @@ FactoryBot.define do
     before(:create) do |answer, context|
       next if answer.translations.present?
 
-      answer.translations << build(:'knowledge_base/answer/translation', *context.translation_traits, answer: answer, **context.translation_attributes)
+      answer.translations << build('knowledge_base/answer/translation', *context.translation_traits, answer: answer, **context.translation_attributes)
     end
 
     trait :draft # empty placeholder for better readability

+ 1 - 1
spec/factories/knowledge_base/category.rb

@@ -12,7 +12,7 @@ FactoryBot.define do
     before(:create) do |category|
       next if category.translations.present?
 
-      category.translations << create(:'knowledge_base/category/translation', category: category)
+      category.translations << create('knowledge_base/category/translation', category: category)
     end
 
     trait :empty # empty placeholder for better readability

+ 1 - 1
spec/models/object_manager/attribute/set_defaults_spec.rb

@@ -20,7 +20,7 @@ RSpec.describe ObjectManager::Attribute::SetDefaults, time_zone: 'Europe/London'
         create("object_manager_attribute_#{key}", name: "rspec_#{key}_no_default", default: nil)
       end
 
-      create(:object_manager_attribute_text, name: 'rspec_empty', default: '')
+      create('object_manager_attribute_text', name: 'rspec_empty', default: '')
 
       ObjectManager::Attribute.migration_execute
     end

+ 1 - 1
spec/models/ticket/enqueues_user_ticket_counter_job_examples.rb

@@ -3,7 +3,7 @@
 RSpec.shared_examples 'TicketEnqueuesTicketUserTicketCounterJob', type: :job do
   subject { create(described_class.name.underscore) }
 
-  let(:customer) { create(:customer) }
+  let(:customer) { create('customer') }
 
   it 'enqueues a job for the customer' do
     subject.customer = customer

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