private void InitializerTermsLoader(TermsPart part) { if (part._termParts != null) { return; } var queryHint = new QueryHints() .ExpandRecords("ContentTypeRecord", "CommonPartRecord", "TermsPartRecord"); foreach (var field in part.ContentItem.Parts.SelectMany(p => p.Fields).OfType<TaxonomyField>()) { var tempField = field.Name; field.TermsField.Loader(() => { var fieldTermRecordIds = part.Record.Terms.Where(t => t.Field == tempField).Select(tci => tci.TermRecord.Id); var terms = _contentManager.GetMany<TermPart>(fieldTermRecordIds, VersionOptions.Published, queryHint); return terms.ToList(); }); } part._termParts = new LazyField<IEnumerable<TermContentItemPart>>(); part._termParts.Loader(() => { var ids = part.Terms.Select(t => t.TermRecord.Id).Distinct(); var terms = _contentManager.GetMany<TermPart>(ids, VersionOptions.Published, queryHint) .ToDictionary(t => t.Id, t => t); return part.Terms.Select( x => new TermContentItemPart { Field = x.Field, TermPart = terms[x.TermRecord.Id] } ); }); }
private static void RecalculateCount(ITaxonomyService taxonomyService, TermsPart part) { foreach (var term in part.Terms) { var termPart = taxonomyService.GetTerm(term.TermRecord.Id); term.TermRecord.Count = (int)taxonomyService.GetContentItemsCount(termPart); } }
private static void RecalculateCount(IContentManager contentManager, ITaxonomyService taxonomyService, TermsPart part) { // submits any change to the db so that GetContentItemsCount is accurate contentManager.Flush(); foreach (var term in part.Terms) { var termPart = taxonomyService.GetTerm(term.TermRecord.Id); term.TermRecord.Count = (int)taxonomyService.GetContentItemsCount(termPart); } }
private void InitializerTermsLoader(TermsPart part) { foreach (var field in part.ContentItem.Parts.SelectMany(p => p.Fields).OfType<TaxonomyField>()) { var tempField = field.Name; var fieldTermRecordIds = part.Record.Terms.Where(t => t.Field == tempField).Select(tci => tci.TermRecord.Id); field.TermsField.Loader(value => fieldTermRecordIds.Select(id => _contentManager.Get<TermPart>(id)).ToList()); } part._termParts.Loader(value => part.Terms.Select( x => new TermContentItemPart { Field = x.Field, TermPart = _contentManager.Get<TermPart>(x.TermRecord.Id) } )); }
// Retrieve the number of associated content items, for the whole hierarchy private static void RecalculateCount(ITaxonomyService taxonomyService, TermsPart part) { foreach (var term in part.Terms) { var termPart = taxonomyService.GetTerm(term.TermRecord.Id); while (termPart != null) { termPart.Count = (int)taxonomyService.GetContentItemsCount(termPart); // compute count for the hierarchy too if (termPart.Container != null) { var parentTerm = termPart.Container.As<TermPart>(); termPart = parentTerm; } } } }
private void InitializerTermsLoader(TermsPart part) { foreach (var field in part.ContentItem.Parts.SelectMany(p => p.Fields).OfType <TaxonomyField>()) { var tempField = field.Name; var fieldTermRecordIds = part.Record.Terms.Where(t => t.Field == tempField).Select(tci => tci.TermRecord.Id); field.TermsField.Loader(value => fieldTermRecordIds.Select(id => _contentManager.Get <TermPart>(id)).ToList()); } part._termParts.Loader(value => part.Terms.Select( x => new TermContentItemPart { Field = x.Field, TermPart = _contentManager.Get <TermPart>(x.TermRecord.Id) } )); }
// Retrieve the number of associated content items, for the whole hierarchy private static void RecalculateCount(ITaxonomyService taxonomyService, TermsPart part) { foreach (var term in part.Terms) { var termPart = taxonomyService.GetTerm(term.TermRecord.Id); while (termPart != null) { termPart.Count = (int)taxonomyService.GetContentItemsCount(termPart); // compute count for the hierarchy too if (termPart.Container != null) { var parentTerm = termPart.Container.As <TermPart>(); termPart = parentTerm; } } } }
private void InitializerTermsLoader(TermsPart part) { if (part._termParts != null) { return; } var queryHint = new QueryHints() .ExpandRecords("ContentTypeRecord", "CommonPartRecord", "TermsPartRecord"); foreach (var field in part.ContentItem.Parts.SelectMany(p => p.Fields).OfType <TaxonomyField>()) { var tempField = field.Name; field.TermsField.Loader(() => { var fieldTermRecordIds = part.Record.Terms.Where(t => t.Field == tempField).Select(tci => tci.TermRecord.Id); var terms = _contentManager.GetMany <TermPart>(fieldTermRecordIds, VersionOptions.Published, queryHint); return(terms.ToList()); }); } part._termParts = new LazyField <IEnumerable <TermContentItemPart> >(); part._termParts.Loader(() => { var ids = part.Terms.Select(t => t.TermRecord.Id).Distinct(); var terms = _contentManager.GetMany <TermPart>(ids, VersionOptions.Published, queryHint) .ToDictionary(t => t.Id, t => t); return (part.Terms.Select( x => new TermContentItemPart { Field = x.Field, TermPart = terms[x.TermRecord.Id] } )); }); }
// Fires off a processing engine task to run the count processing after the request so it's non-blocking. private void RecalculateCount(IProcessingEngine processingEngine, ShellSettings shellSettings, IShellDescriptorManager shellDescriptorManager, TermsPart part) { var termPartRecordIds = part.Terms.Select(t => t.TermRecord.Id).ToArray(); processingEngine.AddTask(shellSettings, shellDescriptorManager.GetShellDescriptor(), "ITermCountProcessor.Process", new Dictionary<string, object> { { "termPartRecordIds", termPartRecordIds } }); }
// Fires off a processing engine task to run the count processing after the request so it's non-blocking. private void RecalculateCount(IProcessingEngine processingEngine, ShellSettings shellSettings, IShellDescriptorManager shellDescriptorManager, TermsPart part) { var termPartRecordIds = part.Terms.Select(t => t.TermRecord.Id).ToArray(); if (termPartRecordIds.Any()) { if (!_processedTermParts.Any()) { processingEngine.AddTask(shellSettings, shellDescriptorManager.GetShellDescriptor(), "ITermCountProcessor.Process", new Dictionary <string, object> { { "termPartRecordIds", _processedTermParts } }); } foreach (var termPartRecordId in termPartRecordIds) { _processedTermParts.Add(termPartRecordId); } } }
// Fires off a processing engine task to run the count processing after the request so it's non-blocking. private void RecalculateCount(IProcessingEngine processingEngine, ShellSettings shellSettings, IShellDescriptorManager shellDescriptorManager, TermsPart part) { var termPartRecordIds = part.Terms.Select(t => t.TermRecord.Id).ToArray(); processingEngine.AddTask(shellSettings, shellDescriptorManager.GetShellDescriptor(), "ITermCountProcessor.Process", new Dictionary <string, object> { { "termPartRecordIds", termPartRecordIds } }); }
// Fires off a processing engine task to run the count processing after the request so it's non-blocking. private void RecalculateCount(IProcessingEngine processingEngine, ShellSettings shellSettings, IShellDescriptorManager shellDescriptorManager, TermsPart part) { var termPartRecordIds = part.Terms.Select(t => t.TermRecord.Id).ToArray(); if (termPartRecordIds.Any()) { if (!_processedTermParts.Any()) { processingEngine.AddTask(shellSettings, shellDescriptorManager.GetShellDescriptor(), "ITermCountProcessor.Process", new Dictionary<string, object> { { "termPartRecordIds", _processedTermParts } }); } foreach (var termPartRecordId in termPartRecordIds) { _processedTermParts.Add(termPartRecordId); } } }
private bool IsTermGraphBuildingEnabled(TermsPart part) { var settings = part.ContentItem.TypeDefinition.Settings.GetModel<AssociativyTaxonomiesAdapterTypeSettings>(); return settings != null && settings.GraphNames.Any(); }