protected virtual void PerformTemplateCheck(ObjectConstructionArgs args, ID templateId, SitecoreEnforceTemplate enforceTemplate) { if (!enforceTemplate.IsEnabled()) { base.Execute(args); } else { if (ID.IsNullOrEmpty(templateId)) { throw new MapperException("Cannot EnforceTemplate with Null TemplateID"); } else { var scArgs = args.AbstractTypeCreationContext as SitecoreTypeCreationContext; var key = "{0} {1} {2}".Formatted(templateId, scArgs.Item.TemplateID, enforceTemplate); var result = false; if (_cache.ContainsKey(key)) { result = _cache[key]; } else { var item = scArgs.Item; if (enforceTemplate == SitecoreEnforceTemplate.TemplateAndBase) { result = TemplateAndBaseCheck(item.Template, templateId); } else if (enforceTemplate == SitecoreEnforceTemplate.Template) { result = item.TemplateID == templateId; } _cache.TryAdd(key, result); } if (result) { base.Execute(args); } } } }
/// <summary> /// Enforce a template when mapping the property. /// </summary> /// <param name="templateId">The ID of the template that the item must use.</param> /// <param name="enforceTemplate">The type of template check to perform.</param> /// <returns></returns> public SitecoreLinked <T> TemplateId(ID templateId, SitecoreEnforceTemplate enforceTemplate) { Configuration.TemplateId = templateId; Configuration.EnforceTemplate = enforceTemplate; return(this); }
/// <summary> /// Indicates that some form of template enforcement is enabled. Check the Enum to verify what type of /// enforcement /// </summary> /// <param name="value"></param> /// <returns></returns> public static bool IsEnabled(this SitecoreEnforceTemplate value) { return(value != SitecoreEnforceTemplate.Default && value != SitecoreEnforceTemplate.No); }
public T EnforceTemplate(SitecoreEnforceTemplate enforceTemplate = SitecoreEnforceTemplate.Template) { _options.EnforceTemplate = enforceTemplate; return(this as T); }
public PropertyOptions EnforceTemplate(SitecoreEnforceTemplate option) { Options.EnforceTemplate = option; return(this); }