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?
This commit is contained in:
Sipke Schoorstra
2013-12-31 11:05:27 +01:00
parent 538761da34
commit 425d590d30
3 changed files with 4 additions and 4 deletions

View File

@@ -60,7 +60,7 @@ namespace Orchard.Taxonomies.Drivers {
protected override DriverResult Editor(ContentPart part, TaxonomyField field, dynamic shapeHelper) { protected override DriverResult Editor(ContentPart part, TaxonomyField field, dynamic shapeHelper) {
return ContentShape("Fields_TaxonomyField_Edit", GetDifferentiator(field, part), () => { return ContentShape("Fields_TaxonomyField_Edit", GetDifferentiator(field, part), () => {
var settings = field.PartFieldDefinition.Settings.GetModel<TaxonomyFieldSettings>(); var settings = field.PartFieldDefinition.Settings.GetModel<TaxonomyFieldSettings>();
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 taxonomy = _taxonomyService.GetTaxonomyByName(settings.Taxonomy);
var terms = taxonomy != null var terms = taxonomy != null
? _taxonomyService.GetTerms(taxonomy.Id).Where(t => !string.IsNullOrWhiteSpace(t.Name)).Select(t => t.CreateTermEntry()).ToList() ? _taxonomyService.GetTerms(taxonomy.Id).Where(t => !string.IsNullOrWhiteSpace(t.Name)).Select(t => t.CreateTermEntry()).ToList()

View File

@@ -24,7 +24,7 @@ namespace Orchard.Taxonomies.Services {
string GenerateTermTypeName(string taxonomyName); string GenerateTermTypeName(string taxonomyName);
TermPart NewTerm(TaxonomyPart taxonomy); TermPart NewTerm(TaxonomyPart taxonomy);
IEnumerable<TermPart> GetTermsForContentItem(int contentItemId, string field = null); IEnumerable<TermPart> GetTermsForContentItem(int contentItemId, string field = null, VersionOptions versionOptions = null);
void UpdateTerms(ContentItem contentItem, IEnumerable<TermPart> terms, string field); void UpdateTerms(ContentItem contentItem, IEnumerable<TermPart> terms, string field);
IEnumerable<TermPart> GetParents(TermPart term); IEnumerable<TermPart> GetParents(TermPart term);
IEnumerable<TermPart> GetChildren(TermPart term); IEnumerable<TermPart> GetChildren(TermPart term);

View File

@@ -157,12 +157,12 @@ namespace Orchard.Taxonomies.Services {
.Where(x => x.Id == id).List().FirstOrDefault(); .Where(x => x.Id == id).List().FirstOrDefault();
} }
public IEnumerable<TermPart> GetTermsForContentItem(int contentItemId, string field = null) { public IEnumerable<TermPart> GetTermsForContentItem(int contentItemId, string field = null, VersionOptions versionOptions = null) {
var termIds = String.IsNullOrEmpty(field) var termIds = String.IsNullOrEmpty(field)
? _termContentItemRepository.Fetch(x => x.TermsPartRecord.ContentItemRecord.Id == contentItemId).Select(t => t.TermRecord.Id).ToArray() ? _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(); : _termContentItemRepository.Fetch(x => x.TermsPartRecord.Id == contentItemId && x.Field == field).Select(t => t.TermRecord.Id).ToArray();
return _contentManager.GetMany<TermPart>(termIds, VersionOptions.Latest, QueryHints.Empty); return _contentManager.GetMany<TermPart>(termIds, versionOptions ?? VersionOptions.Published, QueryHints.Empty);
} }
public TermPart GetTermByName(int taxonomyId, string name) { public TermPart GetTermByName(int taxonomyId, string name) {