Exemple #1
0
        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);
 }
Exemple #5
0
 public PropertyOptions EnforceTemplate(SitecoreEnforceTemplate option)
 {
     Options.EnforceTemplate = option;
     return(this);
 }