diff --git a/src/Orchard.Web/Modules/Orchard.Taxonomies/Services/ITaxonomyService.cs b/src/Orchard.Web/Modules/Orchard.Taxonomies/Services/ITaxonomyService.cs index 7ed74a8ef..a8da7e4c8 100644 --- a/src/Orchard.Web/Modules/Orchard.Taxonomies/Services/ITaxonomyService.cs +++ b/src/Orchard.Web/Modules/Orchard.Taxonomies/Services/ITaxonomyService.cs @@ -41,6 +41,7 @@ namespace Orchard.Taxonomies.Services { IEnumerable GetTerms(int taxonomyId); + IEnumerable GetRootTerms(int taxonomyId); int GetTermsCount(int taxonomyId); TermPart GetTerm(int id); TermPart GetTermByName(int taxonomyId, string name); diff --git a/src/Orchard.Web/Modules/Orchard.Taxonomies/Services/TaxonomyService.cs b/src/Orchard.Web/Modules/Orchard.Taxonomies/Services/TaxonomyService.cs index f4ff87d11..89802a07f 100644 --- a/src/Orchard.Web/Modules/Orchard.Taxonomies/Services/TaxonomyService.cs +++ b/src/Orchard.Web/Modules/Orchard.Taxonomies/Services/TaxonomyService.cs @@ -117,7 +117,7 @@ namespace Orchard.Taxonomies.Services { _contentManager.Remove(taxonomy.ContentItem); // Removing terms - foreach (var term in GetTerms(taxonomy.Id)) { + foreach (var term in GetRootTerms(taxonomy.Id)) { DeleteTerm(term); } @@ -171,6 +171,14 @@ namespace Orchard.Taxonomies.Services { return TermPart.Sort(result); } + public IEnumerable GetRootTerms(int taxonomyId) { + var result = _contentManager.Query() + .Where(x => x.TaxonomyId == taxonomyId && x.Path == "/") + .List(); + + return TermPart.Sort(result); + } + public TermPart GetTermByPath(string path) { return _contentManager.Query() .Join()