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);
 }
Exemple #2
0
        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
                 }
             }
         }
     }
 }
Exemple #4
0
        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();
                }
            }
        }
Exemple #5
0
        private PageStack CreatePageStack()
        {
            templateEnvironment = new TemplateEnvironment(targetFileInfo.FileNoExtension, fileFinder, overrideVars: overrideValuesProvider.OverrideVars);
            PageStack pageStack = new PageStack(templateEnvironment, fileFinder);

            pageStack.ContentFile = targetFileInfo.HtmlFile;
            return(pageStack);
        }
Exemple #6
0
        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);
                }
            }
        }
Exemple #8
0
        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();
 }
Exemple #10
0
 public TemplateCompiler(TemplateEnvironment environment)
 {
     Environment = environment;
     Application = CreateApplication ();
 }
Exemple #11
0
        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");
                }
            }
        }