protected void AddFieldsFromTemplate(FieldList allFields, DbItem fakeItem, DbTemplate fakeTemplate, Language language, Version version)
{
var sourceItem = this.GetSourceItem(fakeItem);
foreach (var templateField in fakeTemplate.Fields)
{
var fieldId = templateField.ID;
var itemField = this.FindItemDbField(fakeItem, templateField);
if (itemField == null)
{
continue;
}
var value = itemField.GetValue(language.Name, version.Number);
if (sourceItem != null && string.IsNullOrWhiteSpace(value))
{
continue;
}
if (value != null)
{
allFields.Add(fieldId, value);
}
}
foreach (var template in fakeTemplate.BaseIDs.Select(this.GetFakeTemplate).Where(t => t != null))
{
this.AddFieldsFromTemplate(allFields, fakeItem, template, language, version);
}
if (fakeTemplate.BaseIDs.Any() || fakeTemplate.ID == TemplateIDs.StandardTemplate)
{
return;
}
var standardTemplate = this.GetFakeTemplate(TemplateIDs.StandardTemplate);
this.AddFieldsFromTemplate(allFields, fakeItem, standardTemplate, language, version);
}