public void Render(object source, HtmlTextWriter htmlWriter, TemplateDefinition liveDefinition) { var resolver = new PathResolver(liveDefinition.Folder); var hostPage = DNNContext.Current.Page; var args = new XsltArgumentList(); args.AddExtensionObject("urn:ddrmenu", new XsltFunctions()); args.AddExtensionObject("urn:dnngarden", new XsltFunctions()); args.AddParam("ControlID", "", DNNContext.Current.HostControl.ClientID); args.AddParam("Options", "", ConvertToJson(liveDefinition.ClientOptions)); args.AddParam("DNNPath", "", hostPage.ResolveUrl(resolver.Resolve("/", PathResolver.RelativeTo.Dnn))); args.AddParam("ManifestPath", "", hostPage.ResolveUrl(resolver.Resolve("/", PathResolver.RelativeTo.Manifest))); args.AddParam("PortalPath", "", hostPage.ResolveUrl(resolver.Resolve("/", PathResolver.RelativeTo.Portal))); args.AddParam("SkinPath", "", hostPage.ResolveUrl(resolver.Resolve("/", PathResolver.RelativeTo.Skin))); liveDefinition.TemplateArguments.ForEach(a => args.AddParam(a.Name, "", a.Value)); HttpContext.Current.Items["Resolver"] = resolver; using (var xmlStream = new MemoryStream()) { Utilities.SerialiserFor(source.GetType()).Serialize(xmlStream, source); xmlStream.Seek(0, SeekOrigin.Begin); xsl.Transform(XmlReader.Create(xmlStream), args, htmlWriter); } }
public void Render(object source, HtmlTextWriter htmlWriter, TemplateDefinition liveDefinition) { if (!(string.IsNullOrEmpty(liveDefinition.TemplateVirtualPath))) { var resolver = new PathResolver(liveDefinition.Folder); dynamic model = new ExpandoObject(); model.Source = source; model.ControlID = DNNContext.Current.HostControl.ClientID; model.Options = ConvertToJson(liveDefinition.ClientOptions); model.DNNPath = resolver.Resolve("/", PathResolver.RelativeTo.Dnn); model.ManifestPath = resolver.Resolve("/", PathResolver.RelativeTo.Manifest); model.PortalPath = resolver.Resolve("/", PathResolver.RelativeTo.Portal); model.SkinPath = resolver.Resolve("/", PathResolver.RelativeTo.Skin); var modelDictionary = model as IDictionary<string, object>; liveDefinition.TemplateArguments.ForEach(a => modelDictionary.Add(a.Name, a.Value)); var razorEngine = new RazorEngine(liveDefinition.TemplateVirtualPath, null, null); var writer = new StringWriter(); razorEngine.Render<dynamic>(writer, model); htmlWriter.Write(writer.ToString()); } }
public void Render(object source, HtmlTextWriter htmlWriter, TemplateDefinition liveDefinition) { var resolver = new PathResolver(liveDefinition.Folder); var args = new XsltArgumentList(); args.AddExtensionObject("urn:ddrmenu", new XsltFunctions()); args.AddExtensionObject("urn:dnngarden", new XsltFunctions()); args.AddParam("controlid", "", DNNContext.Current.HostControl.ClientID); args.AddParam("options", "", ConvertToJson(liveDefinition.ClientOptions)); args.AddParam("dnnpath", "", resolver.Resolve("/", PathResolver.RelativeTo.Dnn)); args.AddParam("manifestpath", "", resolver.Resolve("/", PathResolver.RelativeTo.Manifest)); args.AddParam("portalpath", "", resolver.Resolve("/", PathResolver.RelativeTo.Portal)); args.AddParam("skinpath", "", resolver.Resolve("/", PathResolver.RelativeTo.Skin)); liveDefinition.TemplateArguments.ForEach(a => args.AddParam(a.Name.ToLowerInvariant(), "", a.Value)); var sb = new StringBuilder(); using (var xmlStream = new MemoryStream()) using (var outputWriter = new StringWriter(sb)) { Utilities.SerialiserFor(source.GetType()).Serialize(xmlStream, source); xmlStream.Seek(0, SeekOrigin.Begin); xsl.Transform(XmlReader.Create(xmlStream), args, outputWriter); } htmlWriter.Write(HttpUtility.HtmlDecode(sb.ToString())); }
private static string GetResolvedPath(XmlNode scriptElt, PathResolver pathResolver) { return pathResolver.Resolve( scriptElt.InnerText.Trim(), PathResolver.RelativeTo.Manifest, PathResolver.RelativeTo.Skin, PathResolver.RelativeTo.Module, PathResolver.RelativeTo.Portal, PathResolver.RelativeTo.Dnn); }