From 7f93b1f38220eed85c9fe5f4837a1a7ac04ab99b Mon Sep 17 00:00:00 2001 From: Ric Carey <ric.carey@northernwolf.marketing> Date: Tue, 5 May 2020 17:45:03 +0100 Subject: [PATCH] upgraded to latest version of Umbraco + fixed issue with null check on render macro by injecting UmbracoComponentRenderer --- .../Shared/CustomLabel/CustomLabel.cs | 13 ++++++- source/nuPickers/Shared/Editor/Editor.cs | 17 +++++++-- .../Shared/RelationMapping/RelationMapping.cs | 4 +- source/nuPickers/nuPickers.csproj | 38 +++++++++---------- source/nuPickers/packages.config | 10 ++--- 5 files changed, 49 insertions(+), 33 deletions(-) diff --git a/source/nuPickers/Shared/CustomLabel/CustomLabel.cs b/source/nuPickers/Shared/CustomLabel/CustomLabel.cs index 87f9bfb..a3fe6fb 100644 --- a/source/nuPickers/Shared/CustomLabel/CustomLabel.cs +++ b/source/nuPickers/Shared/CustomLabel/CustomLabel.cs @@ -3,8 +3,10 @@ using System.Linq; using System.Web; using nuPickers.Shared.Editor; +using Umbraco.Core.Dictionary; using Umbraco.Core.Models; using Umbraco.Core.Models.PublishedContent; +using Umbraco.Web; using Umbraco.Web.Composing; namespace nuPickers.Shared.CustomLabel @@ -23,14 +25,20 @@ internal class CustomLabel private string PropertyAlias { get; set; } + + + private readonly IUmbracoComponentRenderer _componentRenderer; + /// <summary> /// /// </summary> /// <param name="macroAlias">alias of Macro to execute</param> /// <param name="contextId">node, media or member id</param> /// <param name="propertyAlias">property alias</param> - internal CustomLabel(string macroAlias, int contextId, string propertyAlias) + internal CustomLabel(string macroAlias, int contextId, string propertyAlias, IUmbracoComponentRenderer componentRenderer) { + _componentRenderer = componentRenderer; + MacroAlias = macroAlias; ContextId = contextId; PropertyAlias = propertyAlias; @@ -52,6 +60,7 @@ internal CustomLabel(string macroAlias, int contextId, string propertyAlias) if (contextNode != null) { HttpContext.Current.Items["pageID"] = contextNode.Id; + ContextId = contextNode.Id; HasMacroContext = true; } } @@ -118,7 +127,7 @@ private string ProcessMacro(string key, string label, string keys, int counter, /// <param name="properties"></param> private string RenderToString(Macro macro, Dictionary<string, object> properties) { - return Current.UmbracoHelper.RenderMacro(macro.Alias, properties).ToHtmlString(); + return _componentRenderer.RenderMacro(ContextId, macro.Alias, properties).ToHtmlString(); } } } \ No newline at end of file diff --git a/source/nuPickers/Shared/Editor/Editor.cs b/source/nuPickers/Shared/Editor/Editor.cs index 8509fd1..998933d 100644 --- a/source/nuPickers/Shared/Editor/Editor.cs +++ b/source/nuPickers/Shared/Editor/Editor.cs @@ -10,9 +10,20 @@ namespace nuPickers.Shared.Editor using System.Collections.Generic; using System.Linq; using Umbraco.Core; + using Umbraco.Core.Composing; + using Umbraco.Web; internal static class Editor { + + public static IFactory Factory + => Umbraco.Core.Composing.Current.Factory; + + public static IUmbracoComponentRenderer UmbracoComponentRenderer + => Factory.GetInstance<IUmbracoComponentRenderer>(); + + + /// <summary> /// Get a collection of all the (key/label) items for a picker (with optional typeahead) /// </summary> @@ -39,7 +50,7 @@ internal static IEnumerable<EditorDataItem> GetEditorDataItems( if (!string.IsNullOrWhiteSpace(customLabelMacro)) { - editorDataItems = new CustomLabel(customLabelMacro, currentId, propertyAlias).ProcessEditorDataItems(editorDataItems); + editorDataItems = new CustomLabel(customLabelMacro, currentId, propertyAlias, UmbracoComponentRenderer).ProcessEditorDataItems(editorDataItems); } // if the datasource didn't handle the typeahead text, then it needs to be done here (post custom label processing ?) @@ -78,7 +89,7 @@ internal static IEnumerable<EditorDataItem> GetEditorDataItems( if (!string.IsNullOrWhiteSpace(customLabelMacro)) { - editorDataItems = new CustomLabel(customLabelMacro, currentId, propertyAlias).ProcessEditorDataItems(editorDataItems); + editorDataItems = new CustomLabel(customLabelMacro, currentId, propertyAlias, UmbracoComponentRenderer).ProcessEditorDataItems(editorDataItems); } // ensure sort order matches order of keys supplied @@ -122,7 +133,7 @@ internal static IEnumerable<EditorDataItem> GetEditorDataItems( if (!string.IsNullOrWhiteSpace(customLabelMacro)) { - editorDataItems = new CustomLabel(customLabelMacro, currentId, propertyAlias).ProcessEditorDataItems(editorDataItems); + editorDataItems = new CustomLabel(customLabelMacro, currentId, propertyAlias, UmbracoComponentRenderer).ProcessEditorDataItems(editorDataItems); } } diff --git a/source/nuPickers/Shared/RelationMapping/RelationMapping.cs b/source/nuPickers/Shared/RelationMapping/RelationMapping.cs index 46981c2..45b8b54 100644 --- a/source/nuPickers/Shared/RelationMapping/RelationMapping.cs +++ b/source/nuPickers/Shared/RelationMapping/RelationMapping.cs @@ -96,13 +96,13 @@ internal static void UpdateRelationMapping(int contextId, string propertyAlias, } // check current context is of the correct object type (as according to the relation type) - if (Current.Services.EntityService.GetObjectType(contextId) == ObjectTypes.GetUmbracoObjectType(relationType.ChildObjectType)) + if (Current.Services.EntityService.GetObjectType(contextId) == ObjectTypes.GetUmbracoObjectType(relationType.ChildObjectType.Value)) { // for each picked item foreach (int pickedId in pickedIds) { // check picked item context if of the correct object type (as according to the relation type) - if (Current.Services.EntityService.GetObjectType(pickedId) == ObjectTypes.GetUmbracoObjectType(relationType.ParentObjectType)) + if (Current.Services.EntityService.GetObjectType(pickedId) == ObjectTypes.GetUmbracoObjectType(relationType.ParentObjectType.Value)) { // if relation doesn't already exist (new picked item) if (!relations.Exists(x => x.ParentId == pickedId)) diff --git a/source/nuPickers/nuPickers.csproj b/source/nuPickers/nuPickers.csproj index 2f5bbee..fe05688 100644 --- a/source/nuPickers/nuPickers.csproj +++ b/source/nuPickers/nuPickers.csproj @@ -38,13 +38,11 @@ <Reference Include="AutoMapper.Net4"> <HintPath>..\packages\AutoMapper.3.0.0\lib\net40\AutoMapper.Net4.dll</HintPath> </Reference> - <Reference Include="ClientDependency.Core, Version=1.9.7.0, Culture=neutral, PublicKeyToken=null"> - <HintPath>..\packages\ClientDependency.1.9.7\lib\net45\ClientDependency.Core.dll</HintPath> - <Private>True</Private> + <Reference Include="ClientDependency.Core, Version=1.9.9.0, Culture=neutral, processorArchitecture=MSIL"> + <HintPath>..\packages\ClientDependency.1.9.9\lib\net45\ClientDependency.Core.dll</HintPath> </Reference> - <Reference Include="ClientDependency.Core.Mvc, Version=1.8.0.0, Culture=neutral, PublicKeyToken=null"> - <HintPath>..\packages\ClientDependency-Mvc5.1.8.0.0\lib\net45\ClientDependency.Core.Mvc.dll</HintPath> - <Private>True</Private> + <Reference Include="ClientDependency.Core.Mvc, Version=1.9.3.0, Culture=neutral, processorArchitecture=MSIL"> + <HintPath>..\packages\ClientDependency-Mvc5.1.9.3\lib\net45\ClientDependency.Core.Mvc.dll</HintPath> </Reference> <Reference Include="CookComputing.XmlRpcV2"> <HintPath>..\packages\xmlrpcnet.2.5.0\lib\net20\CookComputing.XmlRpcV2.dll</HintPath> @@ -53,9 +51,8 @@ <HintPath>..\packages\CSharpTest.Net.Collections.14.906.1403.1082\lib\net40\CSharpTest.Net.Collections.dll</HintPath> <Private>True</Private> </Reference> - <Reference Include="Examine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"> - <HintPath>..\packages\Examine.1.0.0\lib\net452\Examine.dll</HintPath> - <Private>True</Private> + <Reference Include="Examine, Version=1.0.2.0, Culture=neutral, processorArchitecture=MSIL"> + <HintPath>..\packages\Examine.1.0.2\lib\net452\Examine.dll</HintPath> </Reference> <Reference Include="HtmlAgilityPack, Version=1.8.14.0, Culture=neutral, PublicKeyToken=bd319b19eaf3b43a"> <HintPath>..\packages\HtmlAgilityPack.1.8.14\lib\Net45\HtmlAgilityPack.dll</HintPath> @@ -290,21 +287,20 @@ <Reference Include="Microsoft.CSharp" /> <Reference Include="System.Data" /> <Reference Include="System.Xml" /> - <Reference Include="Umbraco.Core, Version=8.0.0.0, Culture=neutral, PublicKeyToken=null"> - <HintPath>..\packages\UmbracoCms.Core.8.1.1\lib\net472\Umbraco.Core.dll</HintPath> - <Private>True</Private> + <Reference Include="Umbraco.Core, Version=8.0.0.0, Culture=neutral, processorArchitecture=MSIL"> + <HintPath>..\packages\UmbracoCms.Core.8.6.1\lib\net472\Umbraco.Core.dll</HintPath> </Reference> - <Reference Include="Umbraco.Examine, Version=8.0.0.0, Culture=neutral, PublicKeyToken=null"> - <HintPath>..\packages\UmbracoCms.Web.8.1.1\lib\net472\Umbraco.Examine.dll</HintPath> - <Private>True</Private> + <Reference Include="Umbraco.Examine, Version=8.0.0.0, Culture=neutral, processorArchitecture=MSIL"> + <HintPath>..\packages\UmbracoCms.Web.8.6.1\lib\net472\Umbraco.Examine.dll</HintPath> </Reference> - <Reference Include="Umbraco.Web, Version=8.0.0.0, Culture=neutral, PublicKeyToken=null"> - <HintPath>..\packages\UmbracoCms.Web.8.1.1\lib\net472\Umbraco.Web.dll</HintPath> - <Private>True</Private> + <Reference Include="Umbraco.ModelsBuilder.Embedded, Version=8.0.0.0, Culture=neutral, processorArchitecture=MSIL"> + <HintPath>..\packages\UmbracoCms.Web.8.6.1\lib\net472\Umbraco.ModelsBuilder.Embedded.dll</HintPath> </Reference> - <Reference Include="Umbraco.Web.UI, Version=8.0.0.0, Culture=neutral, PublicKeyToken=null"> - <HintPath>..\packages\UmbracoCms.Web.8.1.1\lib\net472\Umbraco.Web.UI.dll</HintPath> - <Private>True</Private> + <Reference Include="Umbraco.Web, Version=8.0.0.0, Culture=neutral, processorArchitecture=MSIL"> + <HintPath>..\packages\UmbracoCms.Web.8.6.1\lib\net472\Umbraco.Web.dll</HintPath> + </Reference> + <Reference Include="Umbraco.Web.UI, Version=8.0.0.0, Culture=neutral, processorArchitecture=MSIL"> + <HintPath>..\packages\UmbracoCms.Web.8.6.1\lib\net472\Umbraco.Web.UI.dll</HintPath> </Reference> </ItemGroup> <ItemGroup> diff --git a/source/nuPickers/packages.config b/source/nuPickers/packages.config index 85d862f..7c9c87b 100644 --- a/source/nuPickers/packages.config +++ b/source/nuPickers/packages.config @@ -1,11 +1,11 @@ <?xml version="1.0" encoding="utf-8"?> <packages> <package id="AutoMapper" version="3.0.0" targetFramework="net45" /> - <package id="ClientDependency" version="1.9.7" targetFramework="net472" /> + <package id="ClientDependency" version="1.9.9" targetFramework="net472" /> <package id="ClientDependency-Mvc" version="1.8.0.0" targetFramework="net45" /> - <package id="ClientDependency-Mvc5" version="1.8.0.0" targetFramework="net472" /> + <package id="ClientDependency-Mvc5" version="1.9.3" targetFramework="net472" /> <package id="CSharpTest.Net.Collections" version="14.906.1403.1082" targetFramework="net472" /> - <package id="Examine" version="1.0.0" targetFramework="net472" /> + <package id="Examine" version="1.0.2" targetFramework="net472" /> <package id="HtmlAgilityPack" version="1.8.14" targetFramework="net472" /> <package id="ImageProcessor" version="2.7.0.100" targetFramework="net472" /> <package id="ImageProcessor.Web" version="3.3.1.0" targetFramework="net45" /> @@ -57,7 +57,7 @@ <package id="System.Threading.Tasks.Dataflow" version="4.9.0" targetFramework="net472" /> <package id="System.ValueTuple" version="4.5.0" targetFramework="net472" /> <package id="Umbraco.SqlServerCE" version="4.0.0.1" targetFramework="net472" /> - <package id="UmbracoCms.Core" version="8.1.1" targetFramework="net472" /> - <package id="UmbracoCms.Web" version="8.1.1" targetFramework="net472" /> + <package id="UmbracoCms.Core" version="8.6.1" targetFramework="net472" /> + <package id="UmbracoCms.Web" version="8.6.1" targetFramework="net472" /> <package id="xmlrpcnet" version="2.5.0" targetFramework="net45" /> </packages> \ No newline at end of file