예제 #1
0
 public void Render(DomElement element,
                    HxlWriter output)
 {
     foreach (var child in element.ChildNodes)
     {
         output.Write(child);
     }
 }
예제 #2
0
 void IHxlElementTemplate.Render(DomElement element, HxlWriter output)
 {
     _element = element;
     try {
         _writer       = output;
         _outputBuffer = output;
         Render();
     } finally {
         _writer       = null;
         _outputBuffer = null;
     }
 }
예제 #3
0
        internal HxlWriter StartBufferContent(string name)
        {
            if (name == "spaFragments")
            {
                var result = new BufferContent(name);
                var writer = new HxlWriter(result.Writer, new HxlWriterSettings {
                    TemplateContext = this
                });
                StartBufferContent(result);
                return(writer);
            }

            throw new NotImplementedException();
        }
        internal static void Render(DomElement element,
                                    string name,
                                    string layoutName,
                                    HxlWriter hxlOutput)
        {
            var        templateContext = hxlOutput.TemplateContext;
            var        pc = templateContext.FindPlaceholderContent(name);
            DomElement content;

            if (pc == null)
            {
                content = element;
            }
            else
            {
                content    = pc.Element;
                layoutName = pc.Layout;
                MergeAttributes(content, element);
            }

            var attr = element.Attributes["class"];

            if (attr == null)
            {
                element.Attribute("class", "app-placeholder");
            }
            else
            {
                AttributeAppend(attr, "app-placeholder");
            }

            element.Attribute("data-placeholder", name);
            element.Attribute("data-layout", layoutName);

            // TODO Skip over single-page elements that were disabled
            // TODO Output correct locations
            var output = hxlOutput.BaseWriter;

            // TODO We always render element - should attribute selection be allowed to choose another element template?
            HxlElementTemplate.ProcessAttributesForTemplate(element, templateContext);
            HxlElementTemplate.RenderElementStart(element, output);

            hxlOutput.Write(content.ChildNodes);
            HxlElementTemplate.RenderElementEnd(element, output);
        }
예제 #5
0
        internal void Render_(HxlTemplateContext templateContext,
                              HxlWriter hxlWriter)
        {
            try {
                this.TemplateContext = templateContext;
                _outputBuffer        = hxlWriter;

                if (Rendering != null)
                {
                    Rendering(templateContext, this);
                }

                Render();
            } finally {
                this.TemplateContext = null;
                _outputBuffer        = InvalidTextOutput.Instance;
            }
        }
            public void Render(DomElement element, HxlWriter output)
            {
                var eti      = new HxlElementTemplateInfo(element.Name, element.Attribute("class"));
                var services = ServiceProvider.Compose(
                    ServiceProvider.Current,
                    ServiceProvider.FromValue(eti));

                var template = output.TemplateContext.TemplateFactory.CreateTemplate(_name, _type, services);

                if (template == null)
                {
                    // TODO Missing line number
                    throw HxlFailure.CannotFindMatchingTemplate(_type, _name, -1, -1);
                }

                var context = output.TemplateContext.CreateChildContext(template);

                context.Data.Add("element", element);

                template.Transform(output.BaseWriter, context);
            }
예제 #7
0
 void IHxlElementTemplate.Render(DomElement element, HxlWriter output)
 {
     RenderElementStart(element, output.BaseWriter);
     output.Write(element.ChildNodes);
     RenderElementEnd(element, output.BaseWriter);
 }
예제 #8
0
 void IHxlElementTemplate.Render(DomElement element, HxlWriter output)
 {
 }