public void transform(HtmlDocument document, TemplateEnvironment environment, List <PageStackItem> pageDefinitions) { replaceUrlInAttributes("href", document); replaceUrlInAttributes("src", document); replaceUrlInAttributes("data-hr-model-src", document); replaceUrlInAttributes("data-hr-config-urlroot", document); }
public IActionResult Preview(String file) { //This can be optimized like index, but will only be hit //for one page if requested, so whatever targetFileInfo = fileInfoProvider.GetFileInfo(file, HttpContext.Request.PathBase); templateEnvironment = new TemplateEnvironment(targetFileInfo.FileNoExtension, fileFinder, overrideVars: overrideValuesProvider.OverrideVars); PageStack pageStack = new PageStack(templateEnvironment, fileFinder); pageStack.ContentFile = targetFileInfo.HtmlFile; var pageSettings = fileFinder.GetProjectPageDefinition(targetFileInfo); switch (targetFileInfo.Extension) { case ".html": if (targetFileInfo.IsProjectFile) { return(new FileStreamResult(fileFinder.ReadFile(targetFileInfo.HtmlFile), "text/html")); } return(Redirect(targetFileInfo.NoHtmlRedirect)); case "": return(buildAsPage(pageStack, pageSettings.Layout)); default: var cleanExtension = targetFileInfo.Extension.TrimStart('.') + ".html"; if (fileFinder.DoesLayoutExist(cleanExtension)) { return(buildAsPage(pageStack, cleanExtension)); } return(returnFile(file)); } }
public void transform(HtmlDocument document, TemplateEnvironment environment, List <PageStackItem> pageDefinitions) { using (var sha = SHA256.Create()) { var controllerNode = HtmlRapierQueries.getControllerNode("treeMenu", document.DocumentNode); if (controllerNode != null) { var file = controllerNode.GetAttributeValue("data-hr-config-menu", default(String)); if (file != null) { try { using (var stream = fileFinder.ReadFile(file)) { byte[] checksum = sha.ComputeHash(stream); var hash = BitConverter.ToString(checksum).Replace("-", String.Empty); controllerNode.SetAttributeValue("data-hr-config-treemenu-version", hash); } } catch (FileNotFoundException) { //Ignored, just means we don't write a hash } } } } }
public void transform(HtmlDocument document, TemplateEnvironment environment, List <PageStackItem> pageDefinitions) { var formNode = document.DocumentNode.Select("[data-settings-form]").FirstOrDefault(); if (formNode != null) { var controlNode = formNode.Select("[data-settings-form-control]").FirstOrDefault(); if (controlNode != null) { var valueProvider = new DictionaryValueProvider(); int index = 0; foreach (var page in pageDefinitions) { if (index == stopEnumerationIndex) { break; } var definition = page.PageDefinition; foreach (var variable in definition.Vars) { valueProvider.Values["name"] = variable.Key; valueProvider.Values["prettyName"] = variable.Key; valueProvider.Values["value"] = variable.Value; var node = controlNode.CloneNode(true); node.InnerHtml = TextFormatter.formatText(node.InnerHtml, valueProvider, WebUtility.HtmlEncode); formNode.AppendChild(node); } } controlNode.Remove(); } } }
private PageStack CreatePageStack() { templateEnvironment = new TemplateEnvironment(targetFileInfo.FileNoExtension, fileFinder, overrideVars: overrideValuesProvider.OverrideVars); PageStack pageStack = new PageStack(templateEnvironment, fileFinder); pageStack.ContentFile = targetFileInfo.HtmlFile; return(pageStack); }
public void transform(HtmlDocument document, TemplateEnvironment environment, List <PageStackItem> pageDefinitions) { var controllerNode = HtmlRapierQueries.getControllerNode("treeMenu", document.DocumentNode); if (controllerNode != null) { controllerNode.SetAttributeValue("data-hr-config-treemenu-editmode", "true"); controllerNode.AddClass("treemenu-editor"); var rootControllerDoc = new HtmlDocument(); rootControllerDoc.LoadHtml(rootEditor); controllerNode.InsertBefore(rootControllerDoc.DocumentNode, controllerNode.FirstChild); //Find templates var folderModel = HtmlRapierQueries.getModelNode("childItems", controllerNode); if (folderModel != null) { var folderTemplate = HtmlRapierQueries.getModelTemplate(folderModel); if (folderTemplate != null) { var firstElement = folderTemplate.FirstElementChild(); if (firstElement != null) { MakeDraggable(firstElement); } var insertNode = folderTemplate.Select("[data-hr-on-click='toggleMenuItem']").FirstOrDefault(); if (insertNode != null) { var childModel = HtmlRapierQueries.getModelNode("children", folderTemplate); if (childModel != null) { var doc = new HtmlDocument(); doc.LoadHtml(folderEditor); insertNode.AppendChild(doc.DocumentNode); insertNode.AddClass("treemenu-editor-folder"); } } } var linkTemplate = HtmlRapierQueries.getModelTemplate(folderModel, "link"); if (linkTemplate != null) { var insertNode = linkTemplate.FirstElementChild(); if (insertNode != null) { insertNode.InnerHtml += linkEditor; insertNode.AddClass("treemenu-editor-link"); MakeDraggable(insertNode); } } } } }
public void buildPage(string relativeFile) { relativeFile = relativeFile.TrimStartingPathChars(); var outFile = Path.Combine(this.outDir, relativeFile); var extension = "json"; if (OutputExtension != null) { extension = OutputExtension; } outFile = Path.ChangeExtension(outFile, extension); var fileInfo = fileInfoProvider.GetFileInfo(relativeFile, null); TemplateEnvironment environment = new TemplateEnvironment(fileInfo.FileNoExtension, fileFinder, overrideValuesProvider.OverrideVars, null, true); PageStack pageStack = new PageStack(environment, fileFinder); pageStack.ContentFile = fileInfo.HtmlFile; if (pageStack.Visible) { pageStack.ContentTransformer = (content) => { //This removes all html elements and formatting and cleans up the whitespace HtmlDocument htmlDoc = new HtmlDocument(); htmlDoc.LoadHtml(content); var escaped = HtmlEntity.DeEntitize(htmlDoc.DocumentNode.InnerText); escaped = escaped.SingleSpaceWhitespace(); return(escaped.JsonEscape()); }; var pageSettings = fileFinder.GetProjectPageDefinition(fileInfo); var layout = pageSettings.Layout; if (OutputExtension != null) { layout = Path.ChangeExtension(layout, OutputExtension); } pageStack.pushLayout(layout); var dr = new PlainTextRenderer(environment, StringExtensions.JsonEscape); var document = dr.getDocument(pageStack.Pages); var outDir = Path.GetDirectoryName(outFile); if (!Directory.Exists(outDir)) { Directory.CreateDirectory(outDir); } using (var writer = new StreamWriter(File.Open(outFile, FileMode.Create, FileAccess.Write, FileShare.None), Encoding.UTF8)) { writer.Write(document); } } }
public void buildPage(String relativeFile) { relativeFile = relativeFile.TrimStartingPathChars(); var outFile = Path.Combine(this.outDir, relativeFile); if (OutputExtension != null) { outFile = Path.ChangeExtension(outFile, OutputExtension); } ITargetFileInfo fileInfo = fileInfoProvider.GetFileInfo(relativeFile, null); TemplateEnvironment environment = new TemplateEnvironment(fileInfo.FileNoExtension, fileFinder, overrideValuesProvider.OverrideVars, version, true); PageStack pageStack = new PageStack(environment, fileFinder); pageStack.ContentFile = fileInfo.HtmlFile; if (pageStack.Visible) { var pageSettings = fileFinder.GetProjectPageDefinition(fileInfo); var layout = pageSettings.Layout; if (OutputExtension != null) { layout = Path.ChangeExtension(layout, OutputExtension); } pageStack.pushLayout(layout); var pathBase = environment.PathBase; HtmlDocumentRenderer dr = new HtmlDocumentRenderer(environment); dr.addTransform(new HashTreeMenus(fileFinder)); dr.addTransform(new ExpandRootedPaths(pathBase)); if (!String.IsNullOrEmpty(pathBase)) { //Safe to fix relative urls last since it wont replace any that already start with the path base. dr.addTransform(new FixRelativeUrls(pathBase)); } var document = dr.getDocument(pageStack.Pages); var outDir = Path.GetDirectoryName(outFile); if (!Directory.Exists(outDir)) { Directory.CreateDirectory(outDir); } using (var writer = new StreamWriter(File.Open(outFile, FileMode.Create, FileAccess.Write, FileShare.None))) { writer.Write(document.DocumentNode.OuterHtml); } fileFinder.CopyLinkedFiles(this.outDir, pageStack); } }
public TemplateCompiler(TemplateEnvironment environment) { Environment = environment; Application = CreateApplication(); }
public TemplateCompiler(TemplateEnvironment environment) { Environment = environment; Application = CreateApplication (); }
public void btn_Ajouter() { if (CurrentAvailable != null) { // Si la dep n'est pas déjà présente if (!ListDependencies.Contains(CurrentAvailable)) { ListDependencies.Add(CurrentAvailable); // Which item are we managing dependencies for switch (ManagedItemType) { case DBItemType.Template: // What dependency type switch (DependencyType) { case DBItemType.Macro: App.Entities.TemplateMacroes.Add(TemplateMacro.newTemplateMacro(ManagedTemplate, (Macro)CurrentAvailable)); break; case DBItemType.Package: App.Entities.TemplatePackages.Add(TemplatePackage.newTemplatePackage(ManagedTemplate, (Package)CurrentAvailable)); break; case DBItemType.Meta: App.Entities.TemplateMetas.Add(TemplateMeta.newTemplateMeta(ManagedTemplate, (Meta)CurrentAvailable)); break; case DBItemType.Environment: App.Entities.TemplateEnvironments.Add(TemplateEnvironment.newTemplateEnvironment(ManagedTemplate, (LTG_Entity.Environment)CurrentAvailable)); break; default: break; } break; case DBItemType.Macro: ManagedMacro.Packages.Add((Package)CurrentAvailable); break; case DBItemType.Meta: switch (DependencyType) { case DBItemType.Macro: ManagedMeta.Macroes.Add((Macro)CurrentAvailable); break; case DBItemType.Package: ManagedMeta.Packages.Add((Package)CurrentAvailable); break; case DBItemType.Meta: ManagedMeta.Metas.Add((Meta)CurrentAvailable); break; case DBItemType.Environment: ManagedMeta.Environments.Add((LTG_Entity.Environment)CurrentAvailable); break; default: break; } break; case DBItemType.Environment: ManagedEnvironment.Packages.Add((Package)CurrentAvailable); break; default: break; } } try { App.Entities.SaveChanges(); } catch (Exception e) { Console.WriteLine(e); _dialogCoordinator.ShowMessageAsync(this, "Information", "Un problème est survenu lors de l'ajout"); } } }