Skip to content
This repository was archived by the owner on Feb 10, 2024. It is now read-only.

Commit 0d991ab

Browse files
authored
Merge pull request #182 from skttl/media-tracking
Enables media tracking in 8.6
2 parents e55c6c4 + b439fc4 commit 0d991ab

File tree

5 files changed

+118
-11
lines changed

5 files changed

+118
-11
lines changed

src/Our.Umbraco.DocTypeGridEditor/Composing/DocTypeGridEditorComposer.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
using Our.Umbraco.DocTypeGridEditor.Extensions;
22
using Our.Umbraco.DocTypeGridEditor.ValueProcessing;
3+
using Umbraco.Core;
34
using Umbraco.Core.Composing;
45

56
namespace Our.Umbraco.DocTypeGridEditor.Composing
@@ -12,6 +13,7 @@ public class DocTypeGridEditorComposer : IUserComposer
1213
public void Compose(Composition composition)
1314
{
1415
composition.DocTypeGridEditorValueProcessors().Append<UmbracoTagsValueProcessor>();
16+
composition.DataValueReferenceFactories().Append<DocTypeGridEditorDataValueReference>();
1517
}
1618
}
1719
}
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
using Newtonsoft.Json;
2+
using Newtonsoft.Json.Linq;
3+
using System;
4+
using System.Collections.Generic;
5+
using System.Linq;
6+
using System.Text;
7+
using System.Threading.Tasks;
8+
9+
namespace Our.Umbraco.DocTypeGridEditor.Models
10+
{
11+
public class DocTypeGridEditorValue
12+
{
13+
[JsonProperty("value")]
14+
public JObject Value { get; set; }
15+
[JsonProperty("dtgeContentTypeAlias")]
16+
public string ContentTypeAlias { get; set; }
17+
[JsonProperty("id")]
18+
public Guid Id { get; set; }
19+
}
20+
}

src/Our.Umbraco.DocTypeGridEditor/Our.Umbraco.DocTypeGridEditor.csproj

Lines changed: 17 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -35,11 +35,17 @@
3535
<WarningLevel>4</WarningLevel>
3636
</PropertyGroup>
3737
<ItemGroup>
38+
<Reference Include="ClientDependency.Core, Version=1.9.9.0, Culture=neutral, processorArchitecture=MSIL">
39+
<HintPath>..\packages\ClientDependency.1.9.9\lib\net45\ClientDependency.Core.dll</HintPath>
40+
</Reference>
41+
<Reference Include="ClientDependency.Core.Mvc, Version=1.9.3.0, Culture=neutral, processorArchitecture=MSIL">
42+
<HintPath>..\packages\ClientDependency-Mvc5.1.9.3\lib\net45\ClientDependency.Core.Mvc.dll</HintPath>
43+
</Reference>
3844
<Reference Include="CSharpTest.Net.Collections, Version=14.906.1403.1082, Culture=neutral, PublicKeyToken=06aee00cce822474, processorArchitecture=MSIL">
3945
<HintPath>..\packages\CSharpTest.Net.Collections.14.906.1403.1082\lib\net40\CSharpTest.Net.Collections.dll</HintPath>
4046
</Reference>
41-
<Reference Include="Examine, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
42-
<HintPath>..\packages\Examine.1.0.0\lib\net452\Examine.dll</HintPath>
47+
<Reference Include="Examine, Version=1.0.2.0, Culture=neutral, processorArchitecture=MSIL">
48+
<HintPath>..\packages\Examine.1.0.2\lib\net452\Examine.dll</HintPath>
4349
</Reference>
4450
<Reference Include="HtmlAgilityPack, Version=1.8.14.0, Culture=neutral, PublicKeyToken=bd319b19eaf3b43a, processorArchitecture=MSIL">
4551
<HintPath>..\packages\HtmlAgilityPack.1.8.14\lib\Net45\HtmlAgilityPack.dll</HintPath>
@@ -206,21 +212,26 @@
206212
<Reference Include="System.Xml" />
207213
<Reference Include="System.Xml.Linq" />
208214
<Reference Include="Umbraco.Core, Version=8.0.0.0, Culture=neutral, processorArchitecture=MSIL">
209-
<HintPath>..\packages\UmbracoCms.Core.8.1.0\lib\net472\Umbraco.Core.dll</HintPath>
215+
<HintPath>..\packages\UmbracoCms.Core.8.6.0\lib\net472\Umbraco.Core.dll</HintPath>
210216
</Reference>
211217
<Reference Include="Umbraco.Examine, Version=8.0.0.0, Culture=neutral, processorArchitecture=MSIL">
212-
<HintPath>..\packages\UmbracoCms.Web.8.1.0\lib\net472\Umbraco.Examine.dll</HintPath>
218+
<HintPath>..\packages\UmbracoCms.Web.8.6.0\lib\net472\Umbraco.Examine.dll</HintPath>
219+
</Reference>
220+
<Reference Include="Umbraco.ModelsBuilder.Embedded, Version=8.0.0.0, Culture=neutral, processorArchitecture=MSIL">
221+
<HintPath>..\packages\UmbracoCms.Web.8.6.0\lib\net472\Umbraco.ModelsBuilder.Embedded.dll</HintPath>
213222
</Reference>
214223
<Reference Include="Umbraco.Web, Version=8.0.0.0, Culture=neutral, processorArchitecture=MSIL">
215-
<HintPath>..\packages\UmbracoCms.Web.8.1.0\lib\net472\Umbraco.Web.dll</HintPath>
224+
<HintPath>..\packages\UmbracoCms.Web.8.6.0\lib\net472\Umbraco.Web.dll</HintPath>
216225
</Reference>
217226
<Reference Include="Umbraco.Web.UI, Version=8.0.0.0, Culture=neutral, processorArchitecture=MSIL">
218-
<HintPath>..\packages\UmbracoCms.Web.8.1.0\lib\net472\Umbraco.Web.UI.dll</HintPath>
227+
<HintPath>..\packages\UmbracoCms.Web.8.6.0\lib\net472\Umbraco.Web.UI.dll</HintPath>
219228
</Reference>
220229
</ItemGroup>
221230
<ItemGroup>
222231
<Compile Include="Bootstrap.cs" />
223232
<Compile Include="Composing\Current.cs" />
233+
<Compile Include="Models\DocTypeGridEditorValue.cs" />
234+
<Compile Include="ValueProcessing\DocTypeGridEditorDataValueReference.cs" />
224235
<Compile Include="Extensions\JsonExtensions.cs" />
225236
<Compile Include="Helpers\DocTypeGridEditorHelper.cs" />
226237
<Compile Include="Helpers\XmlHelper.cs" />
Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
using Newtonsoft.Json;
2+
using Our.Umbraco.DocTypeGridEditor.Models;
3+
using System;
4+
using System.Collections.Generic;
5+
using System.Linq;
6+
using Umbraco.Core;
7+
using Umbraco.Core.Composing;
8+
using Umbraco.Core.Models;
9+
using Umbraco.Core.Models.Editors;
10+
using Umbraco.Core.PropertyEditors;
11+
12+
namespace Our.Umbraco.DocTypeGridEditor.ValueProcessing
13+
{
14+
public class DocTypeGridEditorDataValueReference : IDataValueReferenceFactory, IDataValueReference
15+
{
16+
private readonly Lazy<Dictionary<string, IContentType>> _contentTypes;
17+
18+
public IDataValueReference GetDataValueReference() => this;
19+
20+
public bool IsForEditor(IDataEditor dataEditor) => dataEditor.Alias.InvariantEquals(Constants.PropertyEditors.Aliases.Grid);
21+
22+
23+
public DocTypeGridEditorDataValueReference()
24+
{
25+
_contentTypes = new Lazy<Dictionary<string, IContentType>>(() => Current.Services.ContentTypeService.GetAll().ToDictionary(c => c.Alias));
26+
}
27+
28+
public IEnumerable<UmbracoEntityReference> GetReferences(object value)
29+
{
30+
var result = new List<UmbracoEntityReference>();
31+
var _propertyEditors = Current.PropertyEditors;
32+
var rawJson = value == null ? string.Empty : value is string str ? str : value.ToString();
33+
DeserializeGridValue(rawJson, out var dtgeValues);
34+
35+
foreach (var control in dtgeValues)
36+
{
37+
if (_contentTypes.Value.TryGetValue(control.ContentTypeAlias, out var contentType))
38+
{
39+
var propertyTypes = contentType.CompositionPropertyTypes.ToDictionary(x => x.Alias, x => x);
40+
var properties = control.Value.Properties();
41+
42+
foreach (var property in properties)
43+
{
44+
if (propertyTypes.TryGetValue(property.Name, out var propertyType))
45+
{
46+
if (_propertyEditors.TryGet(propertyType.PropertyEditorAlias, out var propertyEditor))
47+
{
48+
if (propertyEditor.GetValueEditor() is IDataValueReference reference)
49+
{
50+
var propertyValue = property.Value.ToString();
51+
var refs = reference.GetReferences(propertyValue);
52+
result.AddRange(refs);
53+
}
54+
}
55+
}
56+
}
57+
}
58+
}
59+
return result;
60+
61+
}
62+
63+
internal GridValue DeserializeGridValue(string rawJson, out IEnumerable<DocTypeGridEditorValue> dtgeValues)
64+
{
65+
var grid = JsonConvert.DeserializeObject<GridValue>(rawJson);
66+
67+
// Find all controls that uses DTGE editor
68+
var controls = grid.Sections.SelectMany(x => x.Rows.SelectMany(r => r.Areas).SelectMany(a => a.Controls)).ToArray();
69+
dtgeValues = controls.Where(x => x.Editor.Alias.ToLowerInvariant() == "doctype").Select(x => x.Value.ToObject<DocTypeGridEditorValue>());
70+
71+
return grid;
72+
}
73+
}
74+
}

src/Our.Umbraco.DocTypeGridEditor/packages.config

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
<?xml version="1.0" encoding="utf-8"?>
22
<packages>
3-
<package id="ClientDependency" version="1.9.7" targetFramework="net45" />
3+
<package id="ClientDependency" version="1.9.9" targetFramework="net472" />
44
<package id="ClientDependency-Mvc" version="1.8.0.0" targetFramework="net45" />
5-
<package id="ClientDependency-Mvc5" version="1.8.0.0" targetFramework="net45" />
5+
<package id="ClientDependency-Mvc5" version="1.9.3" targetFramework="net472" />
66
<package id="CSharpTest.Net.Collections" version="14.906.1403.1082" targetFramework="net472" />
7-
<package id="Examine" version="1.0.0" targetFramework="net472" />
7+
<package id="Examine" version="1.0.2" targetFramework="net472" />
88
<package id="HtmlAgilityPack" version="1.8.14" targetFramework="net472" />
99
<package id="ImageProcessor" version="2.7.0.100" targetFramework="net472" />
1010
<package id="ImageProcessor.Web" version="4.8.3" targetFramework="net45" />
@@ -65,8 +65,8 @@
6565
<package id="System.Threading.Tasks.Dataflow" version="4.9.0" targetFramework="net472" />
6666
<package id="System.ValueTuple" version="4.5.0" targetFramework="net472" />
6767
<package id="Umbraco.SqlServerCE" version="4.0.0.1" targetFramework="net472" />
68-
<package id="UmbracoCms.Core" version="8.1.0" targetFramework="net472" />
69-
<package id="UmbracoCms.Web" version="8.1.0" targetFramework="net472" />
68+
<package id="UmbracoCms.Core" version="8.6.0" targetFramework="net472" />
69+
<package id="UmbracoCms.Web" version="8.6.0" targetFramework="net472" />
7070
<package id="UrlRewritingNet" version="2.0.7" targetFramework="net45" />
7171
<package id="xmlrpcnet" version="2.5.0" targetFramework="net45" />
7272
</packages>

0 commit comments

Comments
 (0)