Browse Source

Fixes #4329 - Typing the text attribute in the ticket changes the displayed name of the ticket in the activity stream

Mantas 2 years ago
parent
commit
e5b4a1767c

+ 1 - 54
app/assets/javascripts/app/models/_application_model.coffee

@@ -14,60 +14,7 @@ class App.Model extends Spine.Model
     @constructor.className
 
   displayName: ->
-    return @name if @name
-    if @realname
-      return "#{@realname} <#{@email}>"
-    if !_.isEmpty(@firstname)
-      name = @firstname
-    if !_.isEmpty(@lastname)
-      if _.isEmpty(name)
-        name = ''
-      else
-        name = name + ' '
-      name = name + @lastname
-    return name if !_.isEmpty(name)
-    if @email
-      return @email
-    if @title
-      return @title
-    if @subject
-      return @subject
-    if @phone
-      return @phone
-    if @login
-      return @login
-    return '???'
-
-  displayNameLong: ->
-    return @name if @name
-    if !_.isEmpty(@firstname)
-      name = @firstname
-    if !_.isEmpty(@lastname)
-      if _.isEmpty(name)
-        name = ''
-      else
-        name = name + ' '
-      name = name + @lastname
-    if !_.isEmpty(name)
-      if !_.isEmpty(@organization)
-        if typeof @organization is 'object'
-          name = "#{name} (#{@organization.name})"
-        else
-          name = "#{name} (#{@organization})"
-      else if !_.isEmpty(@department)
-        name = "#{name} (#{@department})"
-    return name if !_.isEmpty(name)
-    if @email
-      return @email
-    if @title
-      return @title
-    if @subject
-      return @subject
-    if @phone
-      return @phone
-    if @login
-      return @login
-    return '???'
+    return @name || '???'
 
   # shows the icon representing the object itself (e. g. the organization icon in organization profile or ticket sidebar)
   icon: (user) ->

+ 3 - 0
app/assets/javascripts/app/models/ticket.coffee

@@ -387,3 +387,6 @@ class App.Ticket extends App.Model
       attrs.shared_draft_id = @shared_draft_id
 
     attrs
+
+  displayName: ->
+    return @title || '???'

+ 46 - 0
app/assets/javascripts/app/models/user.coffee

@@ -414,3 +414,49 @@ class App.User extends App.Model
   # Do NOT modify the return value of this method!
   # It is a direct reference to a value in the App.User.irecords object.
   @current: App.Session.get
+
+  displayName: ->
+    if @realname
+      return "#{@realname} <#{@email}>"
+    if !_.isEmpty(@firstname)
+      name = @firstname
+    if !_.isEmpty(@lastname)
+      if _.isEmpty(name)
+        name = ''
+      else
+        name = name + ' '
+      name = name + @lastname
+    return name if !_.isEmpty(name)
+    if @email
+      return @email
+    if @phone
+      return @phone
+    if @login
+      return @login
+    return '???'
+
+  displayNameLong: ->
+    if !_.isEmpty(@firstname)
+      name = @firstname
+    if !_.isEmpty(@lastname)
+      if _.isEmpty(name)
+        name = ''
+      else
+        name = name + ' '
+      name = name + @lastname
+    if !_.isEmpty(name)
+      if !_.isEmpty(@organization)
+        if typeof @organization is 'object'
+          name = "#{name} (#{@organization.name})"
+        else
+          name = "#{name} (#{@organization})"
+      else if !_.isEmpty(@department)
+        name = "#{name} (#{@department})"
+    return name if !_.isEmpty(name)
+    if @email
+      return @email
+    if @phone
+      return @phone
+    if @login
+      return @login
+    return '???'

+ 30 - 0
spec/system/activity_stream_spec.rb

@@ -0,0 +1,30 @@
+# Copyright (C) 2012-2023 Zammad Foundation, https://zammad-foundation.org/
+
+require 'rails_helper'
+
+RSpec.describe 'Dashboard', type: :system do
+  context 'when Ticket has name attribute', authenticated_as: :authenticate, db_strategy: :reset do
+    def authenticate
+      create(:object_manager_attribute_text, name: 'name', display: 'Name')
+      ObjectManager::Attribute.migration_execute
+      true
+    end
+
+    let(:ticket)     { Ticket.first }
+    let(:name_value) { 'activity stream test' }
+
+    before do
+      ticket.update! name: name_value
+    end
+
+    it 'shows ticket title in activity stream' do
+      visit '/'
+
+      within '.sidebar' do
+        expect(page)
+          .to have_no_text(name_value)
+          .and have_text(ticket.title)
+      end
+    end
+  end
+end