Browse Source

Follow up #3543 - Translate link text of link template in organisation sidebar in ticket zoom.

Rolf Schmidt 3 years ago
parent
commit
7de5ec9037
2 changed files with 24 additions and 5 deletions
  1. 9 4
      app/assets/javascripts/app/index.coffee
  2. 15 1
      public/assets/tests/model_ui.js

+ 9 - 4
app/assets/javascripts/app/index.coffee

@@ -115,8 +115,8 @@ class App extends Spine.Controller
         isHtmlEscape = true
         resultLocal = App.i18n.translateDate(resultLocal)
 
-      linktemplate = @_placeholderReplacement(object, attributeConfig, resultLocal)
-      if linktemplate && isHtmlEscape is false
+      linktemplate = @_placeholderReplacement(object, attributeConfig, resultLocal, isHtmlEscape)
+      if linktemplate
         resultLocal = linktemplate
         isHtmlEscape = true
 
@@ -152,7 +152,7 @@ class App extends Spine.Controller
 
     result
 
-  @_placeholderReplacement: (object, attributeConfig, resultLocal) ->
+  @_placeholderReplacement: (object, attributeConfig, resultLocal, isHtmlEscape) ->
     return if !object
     return if !attributeConfig
     return if _.isEmpty(attributeConfig.linktemplate)
@@ -161,7 +161,12 @@ class App extends Spine.Controller
     return if _.isEmpty(object[attributeConfig.name])
     placeholderObjects = { attribute: attributeConfig, session: App.Session.get(), config: App.Config.all() }
     placeholderObjects[object.constructor.className.toLowerCase()] = object
-    "<a href=\"#{App.Utils.replaceTags(attributeConfig.linktemplate, placeholderObjects, true)}\" target=\"blank\">#{App.i18n.translateInline(resultLocal)}</a>"
+
+    value = resultLocal
+    if !isHtmlEscape
+      value = App.Utils.htmlEscape(value)
+
+    "<a href=\"#{App.Utils.replaceTags(attributeConfig.linktemplate, placeholderObjects, true)}\" target=\"blank\">#{value}</a>"
 
   @view: (name) ->
     template = (params = {}) ->

+ 15 - 1
public/assets/tests/model_ui.js

@@ -27,6 +27,14 @@ test( "model ui basic tests", function() {
     name: 'textarea', display: 'textarea 1',  tag: 'textarea', null: true
   };
   App.Ticket.configure_attributes.push( attribute2 )
+  var attribute3 = {
+    name: 'link1', display: 'link 1', linktemplate: 'http://zammad.com',  tag: 'input', null: true, translate: true
+  };
+  App.Ticket.configure_attributes.push( attribute3 )
+  var attribute4 = {
+    name: 'link2', display: 'link 1', linktemplate: 'http://zammad.com',  tag: 'input', null: true
+  };
+  App.Ticket.configure_attributes.push( attribute4 )
 
   var ticket = new App.Ticket()
   ticket.load({
@@ -35,7 +43,9 @@ test( "model ui basic tests", function() {
     state_id:   2,
     updated_at: '2014-11-07T23:43:08.000Z',
     date:       '2015-02-07',
-    textarea:   "some new\nline"
+    textarea:   "some new\nline",
+    link1:      'closed',
+    link2:      'closed',
   })
 
   App.i18n.set('en-us')
@@ -47,6 +57,8 @@ test( "model ui basic tests", function() {
   equal( App.viewPrint( ticket, 'updated_at' ), '<time class="humanTimeFromNow " datetime="2014-11-07T23:43:08.000Z" title="11/07/2014 23:43">11/07/2014</time>')
   equal( App.viewPrint( ticket, 'date' ), '02/07/2015')
   equal( App.viewPrint( ticket, 'textarea' ), '<div>some new</div><div>line</div>')
+  equal( App.viewPrint( ticket, 'link1' ), '<a href="http://zammad.com" target="blank">closed</a>')
+  equal( App.viewPrint( ticket, 'link2' ), '<a href="http://zammad.com" target="blank">closed</a>')
 
 
   App.i18n.set('de-de')
@@ -58,6 +70,8 @@ test( "model ui basic tests", function() {
   equal( App.viewPrint( ticket, 'updated_at' ), '<time class="humanTimeFromNow " datetime="2014-11-07T23:43:08.000Z" title="07.11.2014 23:43">07.11.2014</time>')
   equal( App.viewPrint( ticket, 'date' ), '07.02.2015')
   equal( App.viewPrint( ticket, 'textarea' ), '<div>some new</div><div>line</div>')
+  equal( App.viewPrint( ticket, 'link1' ), '<a href="http://zammad.com" target="blank">geschlossen</a>')
+  equal( App.viewPrint( ticket, 'link2' ), '<a href="http://zammad.com" target="blank">closed</a>')
 
 
   App.i18n.set('en-us')