Skip to content

Commit 462467a

Browse files
committed
Merge pull request umbraco#616 from AndyButland/u4-6061
U4-6061 - NodeCount for tags is not populated
2 parents ea12da9 + d235340 commit 462467a

File tree

4 files changed

+31
-19
lines changed

4 files changed

+31
-19
lines changed

src/Umbraco.Core/Models/TaggableObjectTypes.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
/// </summary>
66
public enum TaggableObjectTypes
77
{
8+
All,
89
Content,
910
Media,
1011
Member

src/Umbraco.Core/Persistence/Repositories/TagRepository.cs

Lines changed: 22 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -168,8 +168,6 @@ protected override void PersistUpdatedItem(ITag entity)
168168

169169
public IEnumerable<TaggedEntity> GetTaggedEntitiesByTagGroup(TaggableObjectTypes objectType, string tagGroup)
170170
{
171-
var nodeObjectType = GetNodeObjectType(objectType);
172-
173171
var sql = new Sql()
174172
.Select("cmsTagRelationship.nodeId, cmsPropertyType.Alias, cmsPropertyType.id as propertyTypeId, cmsTags.tag, cmsTags.id as tagId, cmsTags." + SqlSyntaxContext.SqlSyntaxProvider.GetQuotedColumnName("group"))
175173
.From<TagDto>()
@@ -181,17 +179,21 @@ public IEnumerable<TaggedEntity> GetTaggedEntitiesByTagGroup(TaggableObjectTypes
181179
.On<PropertyTypeDto, TagRelationshipDto>(left => left.Id, right => right.PropertyTypeId)
182180
.InnerJoin<NodeDto>()
183181
.On<NodeDto, ContentDto>(left => left.NodeId, right => right.NodeId)
184-
.Where<NodeDto>(dto => dto.NodeObjectType == nodeObjectType)
185182
.Where<TagDto>(dto => dto.Group == tagGroup);
186183

184+
if (objectType != TaggableObjectTypes.All)
185+
{
186+
var nodeObjectType = GetNodeObjectType(objectType);
187+
sql = sql
188+
.Where<NodeDto>(dto => dto.NodeObjectType == nodeObjectType);
189+
}
190+
187191
return CreateTaggedEntityCollection(
188192
ApplicationContext.Current.DatabaseContext.Database.Fetch<dynamic>(sql));
189193
}
190194

191195
public IEnumerable<TaggedEntity> GetTaggedEntitiesByTag(TaggableObjectTypes objectType, string tag, string tagGroup = null)
192196
{
193-
var nodeObjectType = GetNodeObjectType(objectType);
194-
195197
var sql = new Sql()
196198
.Select("cmsTagRelationship.nodeId, cmsPropertyType.Alias, cmsPropertyType.id as propertyTypeId, cmsTags.tag, cmsTags.id as tagId, cmsTags." + SqlSyntaxContext.SqlSyntaxProvider.GetQuotedColumnName("group"))
197199
.From<TagDto>()
@@ -203,9 +205,15 @@ public IEnumerable<TaggedEntity> GetTaggedEntitiesByTag(TaggableObjectTypes obje
203205
.On<PropertyTypeDto, TagRelationshipDto>(left => left.Id, right => right.PropertyTypeId)
204206
.InnerJoin<NodeDto>()
205207
.On<NodeDto, ContentDto>(left => left.NodeId, right => right.NodeId)
206-
.Where<NodeDto>(dto => dto.NodeObjectType == nodeObjectType)
207208
.Where<TagDto>(dto => dto.Tag == tag);
208209

210+
if (objectType != TaggableObjectTypes.All)
211+
{
212+
var nodeObjectType = GetNodeObjectType(objectType);
213+
sql = sql
214+
.Where<NodeDto>(dto => dto.NodeObjectType == nodeObjectType);
215+
}
216+
209217
if (tagGroup.IsNullOrWhiteSpace() == false)
210218
{
211219
sql = sql.Where<TagDto>(dto => dto.Group == tagGroup);
@@ -233,8 +241,6 @@ private IEnumerable<TaggedEntity> CreateTaggedEntityCollection(IEnumerable<dynam
233241

234242
public IEnumerable<ITag> GetTagsForEntityType(TaggableObjectTypes objectType, string group = null)
235243
{
236-
var nodeObjectType = GetNodeObjectType(objectType);
237-
238244
var sql = GetTagsQuerySelect(true);
239245

240246
sql = ApplyRelationshipJoinToTagsQuery(sql);
@@ -243,8 +249,14 @@ public IEnumerable<ITag> GetTagsForEntityType(TaggableObjectTypes objectType, st
243249
.InnerJoin<ContentDto>()
244250
.On<ContentDto, TagRelationshipDto>(left => left.NodeId, right => right.NodeId)
245251
.InnerJoin<NodeDto>()
246-
.On<NodeDto, ContentDto>(left => left.NodeId, right => right.NodeId)
247-
.Where<NodeDto>(dto => dto.NodeObjectType == nodeObjectType);
252+
.On<NodeDto, ContentDto>(left => left.NodeId, right => right.NodeId);
253+
254+
if (objectType != TaggableObjectTypes.All)
255+
{
256+
var nodeObjectType = GetNodeObjectType(objectType);
257+
sql = sql
258+
.Where<NodeDto>(dto => dto.NodeObjectType == nodeObjectType);
259+
}
248260

249261
sql = ApplyGroupFilterToTagsQuery(sql, group);
250262

src/Umbraco.Core/Services/TagService.cs

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -133,14 +133,7 @@ public IEnumerable<ITag> GetAllTags(string tagGroup = null)
133133
{
134134
using (var repository = _repositoryFactory.CreateTagRepository(_uowProvider.GetUnitOfWork()))
135135
{
136-
if (tagGroup.IsNullOrWhiteSpace())
137-
{
138-
return repository.GetAll();
139-
}
140-
141-
var query = Query<ITag>.Builder.Where(x => x.Group == tagGroup);
142-
var definitions = repository.GetByQuery(query);
143-
return definitions;
136+
return repository.GetTagsForEntityType(TaggableObjectTypes.All, tagGroup);
144137
}
145138
}
146139

src/Umbraco.Tests/Persistence/Repositories/TagRepositoryTest.cs

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -658,14 +658,20 @@ public void Can_Get_Tags_For_Entity_Type()
658658
new[]
659659
{
660660
new Tag {Text = "tag1", Group = "test"},
661-
new Tag {Text = "tag2", Group = "test1"}
661+
new Tag {Text = "tag4", Group = "test1"}
662662
}, false);
663663

664664
var result1 = repository.GetTagsForEntityType(TaggableObjectTypes.Content).ToArray();
665665
var result2 = repository.GetTagsForEntityType(TaggableObjectTypes.Media).ToArray();
666+
var result3 = repository.GetTagsForEntityType(TaggableObjectTypes.All).ToArray();
666667

667668
Assert.AreEqual(3, result1.Count());
668669
Assert.AreEqual(2, result2.Count());
670+
Assert.AreEqual(4, result3.Count());
671+
672+
Assert.AreEqual(1, result1.Single(x => x.Text == "tag1").NodeCount);
673+
Assert.AreEqual(2, result3.Single(x => x.Text == "tag1").NodeCount);
674+
Assert.AreEqual(1, result3.Single(x => x.Text == "tag4").NodeCount);
669675

670676
}
671677
}

0 commit comments

Comments
 (0)