/// <summary> /// Compila una página /// </summary> internal string Compile(Model.Documents.DocumentModel document, DateTime createdAt, Pages.SectionSourceModel template, Pages.FilesIndexComposition pageIndex) { VariablesCollection variables = new VariablesCollection(); string content; // Obtiene las variables de proyecto variables.AddRange(GetProjectVariables()); variables.AddRange(GetSectionVariables(Model.Documents.DocumentModel.ScopeType.Web)); variables.AddRange(GetSectionVariables(Model.Documents.DocumentModel.ScopeType.News)); variables.AddRange(GetVariablesPage(document, createdAt, null)); variables.AddRange(GetVariablesIndex(pageIndex)); // Añade las páginas relacionadas variables.AddRange(GetVariablesPagesRelated(pageIndex)); // Añade las variables de breadCrumb variables.AddRange(GetVariablesBreadCrumb(pageIndex)); // Añade las variables de sección asociadas a la página variables.AddRange(GetVariablesSectionPerPage(variables)); // Compila la página y añade el contenido a la variable content = Compile(document.File.DocumentFileName, document.Content, variables, 0); variables.Remove(VariableContent); variables.Add(VariableContent, content); // Compila el contenido del archivo con la plantilla if (template != null) { content = Compile(document.File.DocumentFileName, template.Source.Content, variables, 0); } else // Añade el error y deja el contenido como estaba { Processor.Errors.Add(document.File.DocumentFileName, "No se encuentra ninguna plantilla"); } // Devuelve el valor compilado return(content); }
/// <summary> /// Obtiene las variables de página superior, anterior y siguiente /// </summary> private VariablesCollection GetVariablesIndex(Pages.FilesIndexComposition filesIndex) { VariablesCollection variables = new VariablesCollection(); // Crea un objeto de índice vacío si no existía ninguno if (filesIndex == null) { filesIndex = new Pages.FilesIndexComposition(); } // Añade las variables de índice AddVariablesPageIndex(variables, TitleTopPage, UrlTopPage, filesIndex.PageTop); AddVariablesPageIndex(variables, TitlePreviousPage, UrlPreviousPage, filesIndex.PagePrevious); AddVariablesPageIndex(variables, TitleNextPage, UrlNextPage, filesIndex.PageNext); // Devuelve la colección de variables return(variables); }
/// <summary> /// Compila los elementos de una categoría /// </summary> internal string CompileItemsCategory(Model.Documents.DocumentModel category, Pages.SectionSourceModel template, Pages.FileTargetModelCollection childs, Pages.FilesIndexComposition fileIndex) { VariablesCollection variables = new VariablesCollection(); // Obtiene las variables de las páginas variables.AddRange(GetVariablesDocumentForCategory(childs)); // Obtiene las varialbes de proyecto variables.AddRange(GetProjectVariables()); variables.AddRange(GetSectionVariables(Model.Documents.DocumentModel.ScopeType.Web)); variables.AddRange(GetSectionVariables(Model.Documents.DocumentModel.ScopeType.News)); variables.AddRange(GetVariablesDocumentForCategory(childs)); // Obtiene las variables del índice variables.AddRange(GetVariablesIndex(fileIndex)); // Añade las variables de sección para la página variables.AddRange(GetVariablesSectionPerPage(variables)); // Compila el archivo return(Compile(category.File.DocumentFileName, template.Source.Content, variables, 0)); }
/// <summary> /// Obtiene las variables necesarias para crear el BreadCrumb /// </summary> private VariablesCollection GetVariablesBreadCrumb(Pages.FilesIndexComposition fileIndex) { VariablesCollection variables = new VariablesCollection(); // Añade las variables if (fileIndex != null && fileIndex.FilesBreadCrumb != null) { for (int pageIndex = 0; pageIndex < fileIndex.FilesBreadCrumb.Count; pageIndex++) { Variable variable = new Variable(VariablePageBreadCrumb, ValueBase.GetInstance(""), pageIndex + 1); // Añade los miembros variable.Members.Add(VariableTitle, ValueBase.GetInstance(fileIndex.FilesBreadCrumb [pageIndex].Title)); variable.Members.Add(VariableUrl, ValueBase.GetInstance(fileIndex.FilesBreadCrumb [pageIndex].DocumentFileName)); // Añade la variable a la colección variables.Add(variable); } } // Devuelve la colección de variables return(variables); }
/// <summary> /// Obtiene las variables con las páginas relacionadas /// </summary> private VariablesCollection GetVariablesPagesRelated(Pages.FilesIndexComposition fileIndex) { VariablesCollection variables = new VariablesCollection(); // Recorre la colección de páginas relacionadas if (fileIndex != null && fileIndex.PagesRelated != null) { for (int pageIndex = 0; pageIndex < fileIndex.PagesRelated.Count; pageIndex++) { Pages.DocumentTargetModel page = fileIndex.PagesRelated [pageIndex]; Variable variable = new Variable(VariablePageRelated, ValueBase.GetInstance(""), pageIndex + 1); // Añade los miembros variable.Members.Add(VariableTitle, ValueBase.GetInstance(page.Document.Title)); variable.Members.Add(VariableUrl, ValueBase.GetInstance(page.GetUrlSource())); variable.Members.Add(VariableUrlImage, ValueBase.GetInstance(page.Document.URLImageSummary)); variable.Members.Add(VariableUrlThumb, ValueBase.GetInstance(page.Document.URLThumbImageSummary)); // Añade la variable a la colección variables.Add(variable); } } // Devuelve la colección de variables return(variables); }