From dab9fe995a98b1e39a1e030c6aee3aae7882e603 Mon Sep 17 00:00:00 2001 From: Martin Edenhofer Date: Mon, 24 Jul 2017 15:25:37 +0200 Subject: [PATCH] Fixed issue #1290 - Missing replacement of Config and Current User objects in text modules. --- .../app/controllers/agent_ticket_create.coffee | 3 +++ app/assets/javascripts/app/controllers/chat.coffee | 3 +++ .../app/controllers/ticket_zoom/article_new.coffee | 1 + app/assets/javascripts/app/lib/app_post/utils.coffee | 1 + public/assets/tests/html_utils.js | 10 ++++++++++ test/unit/notification_factory_renderer_test.rb | 10 ++++++++++ 6 files changed, 28 insertions(+) diff --git a/app/assets/javascripts/app/controllers/agent_ticket_create.coffee b/app/assets/javascripts/app/controllers/agent_ticket_create.coffee index 38b2228ca..44c04a193 100644 --- a/app/assets/javascripts/app/controllers/agent_ticket_create.coffee +++ b/app/assets/javascripts/app/controllers/agent_ticket_create.coffee @@ -330,6 +330,9 @@ class App.TicketCreate extends App.Controller # show text module UI @textModule = new App.WidgetTextModule( el: @$('[data-name="body"]').parent() + data: + config: App.Config.all() + user: App.Session.get() ) new Sidebar( diff --git a/app/assets/javascripts/app/controllers/chat.coffee b/app/assets/javascripts/app/controllers/chat.coffee index 3934511a2..6023b6a8a 100644 --- a/app/assets/javascripts/app/controllers/chat.coffee +++ b/app/assets/javascripts/app/controllers/chat.coffee @@ -465,6 +465,9 @@ class ChatWindow extends App.Controller # show text module UI new App.WidgetTextModule( el: @input + data: + user: App.Session.get() + config: App.Config.all() ) focus: => diff --git a/app/assets/javascripts/app/controllers/ticket_zoom/article_new.coffee b/app/assets/javascripts/app/controllers/ticket_zoom/article_new.coffee index 82ed57e1e..befeae02d 100644 --- a/app/assets/javascripts/app/controllers/ticket_zoom/article_new.coffee +++ b/app/assets/javascripts/app/controllers/ticket_zoom/article_new.coffee @@ -310,6 +310,7 @@ class App.TicketZoomArticleNew extends App.Controller data: ticket: ticket user: App.Session.get() + config: App.Config.all() ) callback = (ticket) -> textModule.reload( diff --git a/app/assets/javascripts/app/lib/app_post/utils.coffee b/app/assets/javascripts/app/lib/app_post/utils.coffee index 5b71dd5a2..85a67087e 100644 --- a/app/assets/javascripts/app/lib/app_post/utils.coffee +++ b/app/assets/javascripts/app/lib/app_post/utils.coffee @@ -649,6 +649,7 @@ class App.Utils # textReplaced = App.Utils.replaceTags( template, { user: { firstname: 'Bob', lastname: 'Smith' } } ) @replaceTags: (template, objects) -> template = template.replace( /#\{\s{0,2}(.+?)\s{0,2}\}/g, (index, key) -> + key = key.replace(/<.+?>/g, '') levels = key.split(/\./) dataRef = objects for level in levels diff --git a/public/assets/tests/html_utils.js b/public/assets/tests/html_utils.js index a9c70a1b2..837b3542c 100644 --- a/public/assets/tests/html_utils.js +++ b/public/assets/tests/html_utils.js @@ -1100,6 +1100,16 @@ test("check replace tags", function() { verify = App.Utils.replaceTags(message, data) equal(verify, result) + message = "
#{user.firstname} #{user.lastname}
" + result = '
Bob Smith
' + data = { + user: { + firstname: 'Bob', + lastname: 'Smith', + }, + } + verify = App.Utils.replaceTags(message, data) + equal(verify, result) }); // check attibute validation diff --git a/test/unit/notification_factory_renderer_test.rb b/test/unit/notification_factory_renderer_test.rb index a09c73015..d3bcffed1 100644 --- a/test/unit/notification_factory_renderer_test.rb +++ b/test/unit/notification_factory_renderer_test.rb @@ -148,6 +148,16 @@ class NotificationFactoryRendererTest < ActiveSupport::TestCase ).render assert_equal(CGI.escapeHTML(ticket.title), result) + template = "\#{ticket.\" title}" + result = described_class.new( + { + ticket: ticket, + }, + 'en-us', + template, + ).render + assert_equal(CGI.escapeHTML(ticket.title), result) + template = "some test
\#{article.body}" result = described_class.new( {