From 8e03a1ffca01083baae964fa9f2084d6b11569fc Mon Sep 17 00:00:00 2001 From: Shannon Date: Wed, 22 Mar 2017 18:17:59 +1100 Subject: [PATCH] Updates tha a and img tags in the rte to use a data-udi attribute when udi's are used --- .../tinymce/plugins/umbracolink/plugin.min.js | 35 ++++++---- .../src/common/services/tinymce.service.js | 70 +++++++++++++------ .../config/tinyMceConfig.Release.config | 2 +- .../config/tinyMceConfig.config | 2 +- 4 files changed, 70 insertions(+), 39 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/lib/tinymce/plugins/umbracolink/plugin.min.js b/src/Umbraco.Web.UI.Client/lib/tinymce/plugins/umbracolink/plugin.min.js index 9d80e310de..d1757de319 100644 --- a/src/Umbraco.Web.UI.Client/lib/tinymce/plugins/umbracolink/plugin.min.js +++ b/src/Umbraco.Web.UI.Client/lib/tinymce/plugins/umbracolink/plugin.min.js @@ -192,28 +192,33 @@ tinymce.PluginManager.add('umbracolink', function(editor) { if (data) { var href = data.url; // We want to use the Udi. If it is set, we use it, else fallback to id, and finally to null - var id = data.udi ? data.udi : (data.id ? data.id : null); + var hasUdi = data.udi ? true : false; + var id = hasUdi ? data.udi : (data.id ? data.id : null); + + //Create a json obj used to create the attributes for the tag + function createElemAttributes() { + var a = { + href: href, + title: data.name, + target: data.target ? data.target : null, + rel: data.rel ? data.rel : null + }; + if (hasUdi) { + a["data-udi"] = data.udi; + } + else if (data.id) { + a["data-id"] = data.id; + } + } function insertLink() { if (anchorElm) { - dom.setAttribs(anchorElm, { - href: href, - title: data.name, - target: data.target ? data.target : null, - rel: data.rel ? data.rel : null, - 'data-id': id - }); + dom.setAttribs(anchorElm, createElemAttributes()); selection.select(anchorElm); editor.execCommand('mceEndTyping'); } else { - editor.execCommand('mceInsertLink', false, { - href: href, - title: data.name, - target: data.target ? data.target : null, - rel: data.rel ? data.rel : null, - 'data-id': id - }); + editor.execCommand('mceInsertLink', false, createElemAttributes()); } } diff --git a/src/Umbraco.Web.UI.Client/src/common/services/tinymce.service.js b/src/Umbraco.Web.UI.Client/src/common/services/tinymce.service.js index d08b21b89c..8753bb5316 100644 --- a/src/Umbraco.Web.UI.Client/src/common/services/tinymce.service.js +++ b/src/Umbraco.Web.UI.Client/src/common/services/tinymce.service.js @@ -95,11 +95,20 @@ function tinyMceService(dialogService, $log, imageHelper, $http, $timeout, macro if(selectedElm.nodeName === 'IMG'){ var img = $(selectedElm); + + var hasUdi = img.attr("data-udi") ? true : false; + currentTarget = { altText: img.attr("alt"), - url: img.attr("src"), - id: img.attr("rel") + url: img.attr("src") }; + + if (hasUdi) { + currentTarget["udi"] = img.attr("data-udi"); + } + else { + currentTarget["id"] = img.attr("rel"); + } } userService.getCurrentUser().then(function(userData) { @@ -115,13 +124,23 @@ function tinyMceService(dialogService, $log, imageHelper, $http, $timeout, macro insertMediaInEditor: function(editor, img) { if(img) { + var hasUdi = img.udi ? true : false; + var data = { alt: img.altText || "", - src: (img.url) ? img.url : "nothing.jpg", - rel: img.id, - 'data-id': img.id, + src: (img.url) ? img.url : "nothing.jpg", id: '__mcenew' - }; + }; + + if (hasUdi) { + data["data-udi"] = img.udi; + } + else { + //Considering these fixed because UDI will now be used and thus + // we have no need for rel http://issues.umbraco.org/issue/U4-6228, http://issues.umbraco.org/issue/U4-6595 + data["rel"] = img.id; + data["data-id"] = img.id; + } editor.insertContent(editor.dom.createHTML('img', data)); @@ -726,28 +745,35 @@ function tinyMceService(dialogService, $log, imageHelper, $http, $timeout, macro var href = target.url; // We want to use the Udi. If it is set, we use it, else fallback to id, and finally to null - var id = target.udi ? target.udi : (target.id ? target.id : null); + var hasUdi = target.udi ? true : false; + var id = hasUdi ? target.udi : (target.id ? target.id : null); + + //Create a json obj used to create the attributes for the tag + function createElemAttributes() { + var a = { + href: href, + title: target.name, + target: target.target ? target.target : null, + rel: target.rel ? target.rel : null + }; + if (hasUdi) { + a["data-udi"] = target.udi; + } + else if (target.id) { + a["data-id"] = target.id; + } + return a; + } function insertLink() { if (anchorElm) { - editor.dom.setAttribs(anchorElm, { - href: href, - title: target.name, - target: target.target ? target.target : null, - rel: target.rel ? target.rel : null, - 'data-id': id - }); + editor.dom.setAttribs(anchorElm, createElemAttributes()); editor.selection.select(anchorElm); editor.execCommand('mceEndTyping'); - } else { - editor.execCommand('mceInsertLink', false, { - href: href, - title: target.name, - target: target.target ? target.target : null, - rel: target.rel ? target.rel : null, - 'data-id': id - }); + } + else { + editor.execCommand('mceInsertLink', false, createElemAttributes()); } } diff --git a/src/Umbraco.Web.UI/config/tinyMceConfig.Release.config b/src/Umbraco.Web.UI/config/tinyMceConfig.Release.config index a18841983d..c4ed5f5d99 100644 --- a/src/Umbraco.Web.UI/config/tinyMceConfig.Release.config +++ b/src/Umbraco.Web.UI/config/tinyMceConfig.Release.config @@ -241,7 +241,7 @@ hr - hr -