private TemplateDeclaration ApplyTemplate()
        {
            if (applied)
            {
                return(null);
            }

            if (templates == null)
            {
                applied = true;
                return(null);
            }

            PageTemplateAttribute attr = PageTemplateAttribute.GetAttribute(GetType());

            if (attr != null)
            {
                this.SkinID = attr.SkinID;

                if (Logic.StringEmpty(attr.TemplateName))
                {
                    applied = true;
                    return(null);
                }

                TemplateDeclaration template = templates[attr.TemplateName];
                if (template != null)
                {
                    template.ApplyTo(this);
                    applied = true;
                }
                return(template);
            }

            foreach (TemplateDeclaration template in templates)
            {
                if (mappings != null)
                {
                    IList m = (IList)mappings.Mappings[template.Name];
                    if (m != null)
                    {
                        foreach (ITemplateMappingCondition cond in m)
                        {
                            if (cond.Satisfied(Context))
                            {
                                template.ApplyTo(this);
                                applied = true;
                                return(template);
                            }
                        }
                    }
                }
            }

            if (templates.Default != null)
            {
                templates.Default.ApplyTo(this);
                applied = true;
            }
            return(templates.Default);
        }
Example #2
0
 internal TemplateSymbol(Symbol container, MergedTemplateDeclaration declaration)
 {
     Debug.Assert(declaration.Kind == DeclarationKind.Template);
     _containingSymbol = container;
     _declaration      = declaration.Declaration;
 }