From 425d590d301040232aaaa59ab2443e58ba47cb86 Mon Sep 17 00:00:00 2001 From: Sipke Schoorstra Date: Tue, 31 Dec 2013 11:05:27 +0100 Subject: [PATCH] Added version options to GetTermsForContentItem. This allows to get only Published terms the driver's Display method and the Latest terms from the Editor method. Question to be answered: what about Exporting: should only Published terms be exported, Latest terms, or based on the "Published content only" checkbox on the Export screen? --- .../Modules/Orchard.Taxonomies/Drivers/TaxonomyFieldDriver.cs | 2 +- .../Modules/Orchard.Taxonomies/Services/ITaxonomyService.cs | 2 +- .../Modules/Orchard.Taxonomies/Services/TaxonomyService.cs | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/Orchard.Web/Modules/Orchard.Taxonomies/Drivers/TaxonomyFieldDriver.cs b/src/Orchard.Web/Modules/Orchard.Taxonomies/Drivers/TaxonomyFieldDriver.cs index 5e10379c9..a39ed8f14 100644 --- a/src/Orchard.Web/Modules/Orchard.Taxonomies/Drivers/TaxonomyFieldDriver.cs +++ b/src/Orchard.Web/Modules/Orchard.Taxonomies/Drivers/TaxonomyFieldDriver.cs @@ -60,7 +60,7 @@ namespace Orchard.Taxonomies.Drivers { protected override DriverResult Editor(ContentPart part, TaxonomyField field, dynamic shapeHelper) { return ContentShape("Fields_TaxonomyField_Edit", GetDifferentiator(field, part), () => { var settings = field.PartFieldDefinition.Settings.GetModel(); - var appliedTerms = _taxonomyService.GetTermsForContentItem(part.ContentItem.Id, field.Name).Distinct(new TermPartComparer()).ToDictionary(t => t.Id, t => t); + var appliedTerms = _taxonomyService.GetTermsForContentItem(part.ContentItem.Id, field.Name, VersionOptions.Latest).Distinct(new TermPartComparer()).ToDictionary(t => t.Id, t => t); var taxonomy = _taxonomyService.GetTaxonomyByName(settings.Taxonomy); var terms = taxonomy != null ? _taxonomyService.GetTerms(taxonomy.Id).Where(t => !string.IsNullOrWhiteSpace(t.Name)).Select(t => t.CreateTermEntry()).ToList() diff --git a/src/Orchard.Web/Modules/Orchard.Taxonomies/Services/ITaxonomyService.cs b/src/Orchard.Web/Modules/Orchard.Taxonomies/Services/ITaxonomyService.cs index f8322bc4d..2b4750162 100644 --- a/src/Orchard.Web/Modules/Orchard.Taxonomies/Services/ITaxonomyService.cs +++ b/src/Orchard.Web/Modules/Orchard.Taxonomies/Services/ITaxonomyService.cs @@ -24,7 +24,7 @@ namespace Orchard.Taxonomies.Services { string GenerateTermTypeName(string taxonomyName); TermPart NewTerm(TaxonomyPart taxonomy); - IEnumerable GetTermsForContentItem(int contentItemId, string field = null); + IEnumerable GetTermsForContentItem(int contentItemId, string field = null, VersionOptions versionOptions = null); void UpdateTerms(ContentItem contentItem, IEnumerable terms, string field); IEnumerable GetParents(TermPart term); IEnumerable GetChildren(TermPart term); diff --git a/src/Orchard.Web/Modules/Orchard.Taxonomies/Services/TaxonomyService.cs b/src/Orchard.Web/Modules/Orchard.Taxonomies/Services/TaxonomyService.cs index f4b63e045..8879dc406 100644 --- a/src/Orchard.Web/Modules/Orchard.Taxonomies/Services/TaxonomyService.cs +++ b/src/Orchard.Web/Modules/Orchard.Taxonomies/Services/TaxonomyService.cs @@ -157,12 +157,12 @@ namespace Orchard.Taxonomies.Services { .Where(x => x.Id == id).List().FirstOrDefault(); } - public IEnumerable GetTermsForContentItem(int contentItemId, string field = null) { + public IEnumerable GetTermsForContentItem(int contentItemId, string field = null, VersionOptions versionOptions = null) { var termIds = String.IsNullOrEmpty(field) ? _termContentItemRepository.Fetch(x => x.TermsPartRecord.ContentItemRecord.Id == contentItemId).Select(t => t.TermRecord.Id).ToArray() : _termContentItemRepository.Fetch(x => x.TermsPartRecord.Id == contentItemId && x.Field == field).Select(t => t.TermRecord.Id).ToArray(); - return _contentManager.GetMany(termIds, VersionOptions.Latest, QueryHints.Empty); + return _contentManager.GetMany(termIds, versionOptions ?? VersionOptions.Published, QueryHints.Empty); } public TermPart GetTermByName(int taxonomyId, string name) {