From c0b2dc77544309d186ab1287d0e5d2aacc8ee03b Mon Sep 17 00:00:00 2001 From: Roy Hyde Date: Thu, 14 Mar 2019 11:21:32 +1100 Subject: [PATCH 1/7] Adding optional parameter to add a default a-tag class to the MvcLink if the linkField does not have one defiend. Fixing string comparisons so a-tag and alternateTags are created correctly. --- src/DeloitteDigital.Atlas/Mvc/HtmlExtensions.cs | 4 ++-- src/DeloitteDigital.Atlas/Mvc/MvcLink.cs | 13 ++++++++----- 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/src/DeloitteDigital.Atlas/Mvc/HtmlExtensions.cs b/src/DeloitteDigital.Atlas/Mvc/HtmlExtensions.cs index f65933d..71b1cc4 100644 --- a/src/DeloitteDigital.Atlas/Mvc/HtmlExtensions.cs +++ b/src/DeloitteDigital.Atlas/Mvc/HtmlExtensions.cs @@ -18,11 +18,11 @@ public static MvcEditFrame BeginEditFrame(this HtmlHelper helper, string d return frame; } - public static IDisposable BeginLink(this HtmlHelper htmlHelper, ILinkFieldRenderingString linkField, string alternateTag = null, bool skipInPageEditor = false) + public static IDisposable BeginLink(this HtmlHelper htmlHelper, ILinkFieldRenderingString linkField, string alternateTag = null, bool skipInPageEditor = false, string linkTagClass = null) { if (skipInPageEditor && global::Sitecore.Context.PageMode.IsExperienceEditor) return new EmptyMvcLink(); - return new MvcLink(htmlHelper.ViewContext, linkField, alternateTag); + return new MvcLink(htmlHelper.ViewContext, linkField, alternateTag, linkTagClass); } } } diff --git a/src/DeloitteDigital.Atlas/Mvc/MvcLink.cs b/src/DeloitteDigital.Atlas/Mvc/MvcLink.cs index 290d2d5..8fc6747 100644 --- a/src/DeloitteDigital.Atlas/Mvc/MvcLink.cs +++ b/src/DeloitteDigital.Atlas/Mvc/MvcLink.cs @@ -16,11 +16,11 @@ internal class MvcLink : IDisposable private readonly ViewContext viewContext; private readonly TagBuilder tagBuilder; - public MvcLink(ViewContext viewContext, ILinkFieldRenderingString linkField, string alternateTag) + public MvcLink(ViewContext viewContext, ILinkFieldRenderingString linkField, string alternateTag, string linkTagClass = null) { this.viewContext = viewContext; - if (linkField?.Url != null) + if (!string.IsNullOrWhiteSpace(linkField?.Url)) { // link given - render an anchor tag this.tagBuilder = new TagBuilder("a"); @@ -28,12 +28,15 @@ public MvcLink(ViewContext viewContext, ILinkFieldRenderingString linkField, str // add optional attributes if (!string.IsNullOrWhiteSpace(linkField.Target)) this.tagBuilder.Attributes.Add("target", linkField.Target); - if (!string.IsNullOrWhiteSpace(linkField.Class)) - this.tagBuilder.Attributes.Add("class", linkField.Class); if (!string.IsNullOrWhiteSpace(linkField.Description)) this.tagBuilder.Attributes.Add("title", linkField.Description); + + if (!string.IsNullOrWhiteSpace(linkField.Class)) + this.tagBuilder.Attributes.Add("class", linkField.Class); + else if (!string.IsNullOrWhiteSpace(linkTagClass)) + this.tagBuilder.Attributes.Add("class", linkTagClass); } - else if (string.IsNullOrWhiteSpace(alternateTag)) + else if (!string.IsNullOrWhiteSpace(alternateTag)) { // no link given - render the alternate tag if provided this.tagBuilder = new TagBuilder(alternateTag); From 9009d4deff73b65e12331bef20fa8fd4b45d7457 Mon Sep 17 00:00:00 2001 From: Roy Hyde Date: Fri, 15 Mar 2019 09:41:24 +1100 Subject: [PATCH 2/7] Updating version to 2.1.0.0 --- src/DeloitteDigital.Atlas/DeloitteDigital.Atlas.csproj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/DeloitteDigital.Atlas/DeloitteDigital.Atlas.csproj b/src/DeloitteDigital.Atlas/DeloitteDigital.Atlas.csproj index 182ec8c..a98ebce 100644 --- a/src/DeloitteDigital.Atlas/DeloitteDigital.Atlas.csproj +++ b/src/DeloitteDigital.Atlas/DeloitteDigital.Atlas.csproj @@ -5,7 +5,7 @@ Debug AnyCPU 8.0.30703 - 2.0 + 2.1.0.0 {601B96BD-D95F-4281-9A1B-7D99374DD869} Library Properties From 74a8eef5bcb20195be2e92a43755bd7f4588fbda Mon Sep 17 00:00:00 2001 From: Roy Hyde Date: Fri, 15 Mar 2019 14:52:15 +1100 Subject: [PATCH 3/7] Properly pdating version to 2.1.0.0 --- src/DeloitteDigital.Atlas/Properties/AssemblyInfo.cs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/DeloitteDigital.Atlas/Properties/AssemblyInfo.cs b/src/DeloitteDigital.Atlas/Properties/AssemblyInfo.cs index 6251488..f7731aa 100644 --- a/src/DeloitteDigital.Atlas/Properties/AssemblyInfo.cs +++ b/src/DeloitteDigital.Atlas/Properties/AssemblyInfo.cs @@ -10,7 +10,7 @@ [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("Deloitte Digital")] [assembly: AssemblyProduct("DeloitteDigital.Atlas")] -[assembly: AssemblyCopyright("Copyright © Deloitte Digital 2016")] +[assembly: AssemblyCopyright("Copyright © Deloitte Digital 2019")] [assembly: AssemblyTrademark("")] [assembly: AssemblyCulture("")] @@ -32,6 +32,6 @@ // You can specify all the values or you can default the Build and Revision Numbers // by using the '*' as shown below: // [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.0.0.0")] -[assembly: AssemblyFileVersion("1.0.0.0")] +[assembly: AssemblyVersion("2.1.0.0")] +[assembly: AssemblyFileVersion("2.1.0.0")] [assembly: AssemblyInformationalVersion("1.0.0")] \ No newline at end of file From 784ab035236c47eb1e7cc5e6fb603520bfcb26d6 Mon Sep 17 00:00:00 2001 From: Roy Hyde Date: Fri, 15 Mar 2019 14:54:46 +1100 Subject: [PATCH 4/7] Revert "Updating version to 2.1.0.0" This reverts commit 9009d4deff73b65e12331bef20fa8fd4b45d7457. --- src/DeloitteDigital.Atlas/DeloitteDigital.Atlas.csproj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/DeloitteDigital.Atlas/DeloitteDigital.Atlas.csproj b/src/DeloitteDigital.Atlas/DeloitteDigital.Atlas.csproj index a98ebce..182ec8c 100644 --- a/src/DeloitteDigital.Atlas/DeloitteDigital.Atlas.csproj +++ b/src/DeloitteDigital.Atlas/DeloitteDigital.Atlas.csproj @@ -5,7 +5,7 @@ Debug AnyCPU 8.0.30703 - 2.1.0.0 + 2.0 {601B96BD-D95F-4281-9A1B-7D99374DD869} Library Properties From 8f63031ece349c6f756a3e511078e72b047ec364 Mon Sep 17 00:00:00 2001 From: Roy Hyde Date: Tue, 19 Mar 2019 10:33:22 +1100 Subject: [PATCH 5/7] Adding extra case for when both class params are populated. --- src/DeloitteDigital.Atlas/Mvc/MvcLink.cs | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/DeloitteDigital.Atlas/Mvc/MvcLink.cs b/src/DeloitteDigital.Atlas/Mvc/MvcLink.cs index 8fc6747..475bf1f 100644 --- a/src/DeloitteDigital.Atlas/Mvc/MvcLink.cs +++ b/src/DeloitteDigital.Atlas/Mvc/MvcLink.cs @@ -1,4 +1,5 @@ using System; +using System.Collections.Generic; using System.Web.Mvc; using DeloitteDigital.Atlas.FieldRendering; @@ -31,7 +32,15 @@ public MvcLink(ViewContext viewContext, ILinkFieldRenderingString linkField, str if (!string.IsNullOrWhiteSpace(linkField.Description)) this.tagBuilder.Attributes.Add("title", linkField.Description); - if (!string.IsNullOrWhiteSpace(linkField.Class)) + if (!string.IsNullOrWhiteSpace(linkField.Class) && !string.IsNullOrWhiteSpace(linkTagClass)) + { + var classes = new HashSet(); + foreach (var linkClass in linkField.Class.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries)) + classes.Add(linkClass); + foreach (var tagClass in linkTagClass.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries)) + classes.Add(tagClass); + this.tagBuilder.Attributes.Add("class", string.Join(" ", classes)); + } else if (!string.IsNullOrWhiteSpace(linkField.Class)) this.tagBuilder.Attributes.Add("class", linkField.Class); else if (!string.IsNullOrWhiteSpace(linkTagClass)) this.tagBuilder.Attributes.Add("class", linkTagClass); From 9768f27e4b1f3b344614c146b7486c9353decf48 Mon Sep 17 00:00:00 2001 From: Roy Hyde Date: Tue, 19 Mar 2019 10:46:06 +1100 Subject: [PATCH 6/7] Fixing space alignment --- src/DeloitteDigital.Atlas/Mvc/MvcLink.cs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/DeloitteDigital.Atlas/Mvc/MvcLink.cs b/src/DeloitteDigital.Atlas/Mvc/MvcLink.cs index 475bf1f..be7062c 100644 --- a/src/DeloitteDigital.Atlas/Mvc/MvcLink.cs +++ b/src/DeloitteDigital.Atlas/Mvc/MvcLink.cs @@ -40,7 +40,8 @@ public MvcLink(ViewContext viewContext, ILinkFieldRenderingString linkField, str foreach (var tagClass in linkTagClass.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries)) classes.Add(tagClass); this.tagBuilder.Attributes.Add("class", string.Join(" ", classes)); - } else if (!string.IsNullOrWhiteSpace(linkField.Class)) + } + else if (!string.IsNullOrWhiteSpace(linkField.Class)) this.tagBuilder.Attributes.Add("class", linkField.Class); else if (!string.IsNullOrWhiteSpace(linkTagClass)) this.tagBuilder.Attributes.Add("class", linkTagClass); From a38f4e6df58021d150942d07832571099e51f173 Mon Sep 17 00:00:00 2001 From: Roy Hyde Date: Wed, 27 Mar 2019 16:05:11 +1100 Subject: [PATCH 7/7] Adding an option for forcing the alternate tag in the BeginLinks in the XE, as there are issues with displaying components with these taks in 9.1 in the XE when the component only has a section tag surrounding it. --- src/DeloitteDigital.Atlas/Mvc/HtmlExtensions.cs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/DeloitteDigital.Atlas/Mvc/HtmlExtensions.cs b/src/DeloitteDigital.Atlas/Mvc/HtmlExtensions.cs index 71b1cc4..b82a146 100644 --- a/src/DeloitteDigital.Atlas/Mvc/HtmlExtensions.cs +++ b/src/DeloitteDigital.Atlas/Mvc/HtmlExtensions.cs @@ -18,10 +18,12 @@ public static MvcEditFrame BeginEditFrame(this HtmlHelper helper, string d return frame; } - public static IDisposable BeginLink(this HtmlHelper htmlHelper, ILinkFieldRenderingString linkField, string alternateTag = null, bool skipInPageEditor = false, string linkTagClass = null) + public static IDisposable BeginLink(this HtmlHelper htmlHelper, ILinkFieldRenderingString linkField, string alternateTag = null, bool skipInPageEditor = false, bool alternateTagInPageEditor = false, string linkTagClass = null) { if (skipInPageEditor && global::Sitecore.Context.PageMode.IsExperienceEditor) return new EmptyMvcLink(); + if (alternateTagInPageEditor && global::Sitecore.Context.PageMode.IsExperienceEditor) + return new MvcLink(htmlHelper.ViewContext, null, alternateTag, linkTagClass); return new MvcLink(htmlHelper.ViewContext, linkField, alternateTag, linkTagClass); } }