/// <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> /// Compila una categoría /// </summary> internal string CompileCategory(Model.Documents.DocumentModel category, DateTime createdAt, string strContentHeader, string strContentItems, Pages.SectionSourceModel templateMain) { VariablesCollection variables = new VariablesCollection(); // Obtiene las variables de proyecto variables.AddRange(GetProjectVariables()); variables.AddRange(GetSectionVariables(Model.Documents.DocumentModel.ScopeType.Web)); variables.AddRange(GetSectionVariables(Model.Documents.DocumentModel.ScopeType.News)); // Obtiene las variables de la página variables.AddRange(GetVariablesPage(category, createdAt, null)); // Quita la variable de contenido for (int index = variables.Count - 1; index >= 0; index--) { if (variables [index].Name.EqualsIgnoreCase(VariableContent)) { variables.RemoveAt(index); } } // Añade las variables de contenido y contenido adicional variables.Add(GetVariable(VariableContent, strContentHeader, null)); variables.Add(GetVariable(VariableAdditionalContent, strContentItems, null)); // Compila return(Compile(category.File.FullFileName, templateMain.Source.Content, variables, 0)); }
/// <summary> /// Obtiene las variables de un documento para introducirlas en una categoría /// </summary> internal VariablesCollection GetVariablesPage(Model.Documents.DocumentModel document, DateTime createdAt, int?pageIndex) { VariablesCollection variables = new VariablesCollection(); // Añade las variables de las páginas para la categoría if (document != null) { // Añade las variables de la página variables.Add(GetVariable(VariableTitle, document.Title, pageIndex)); variables.Add(GetVariable(VariableKeyWords, document.KeyWords, pageIndex)); variables.Add(GetVariable(VariableDescription, document.Description, pageIndex)); variables.Add(GetVariable(VariableUrlImage, document.URLImageSummary, pageIndex)); if (!document.URLImageSummary.IsEmpty() && System.IO.File.Exists(System.IO.Path.Combine(Processor.Project.File.Path, document.URLThumbImageSummary))) { variables.Add(GetVariable(VariableUrlThumb, document.URLThumbImageSummary, pageIndex)); } else { variables.Add(GetVariable(VariableUrlThumb, "", pageIndex)); } variables.Add(GetVariable(VariableDate, string.Format("{0:dd-MM-yyyy}", createdAt), pageIndex)); variables.Add(GetVariable(VariableDay, createdAt.Day.ToString(), pageIndex)); variables.Add(GetVariable(VariableMonth, createdAt.Month.ToString(), pageIndex)); variables.Add(GetVariable(VariableMonthName, System.Globalization.CultureInfo.CurrentCulture.DateTimeFormat.GetAbbreviatedMonthName(createdAt.Month).ToUpperFirstLetter(), pageIndex)); variables.Add(GetVariable(VariableYear, createdAt.Year.ToString(), pageIndex)); // Añade las variables con el nombre completo de la página if (Processor.Project.AddWebTitle && !Processor.Project.Title.IsEmpty()) { variables.Add(GetVariable(VariableFullTitle, $"{document.Title} - {Processor.Project.Title}", pageIndex)); } else { variables.Add(GetVariable(VariableFullTitle, document.Title, pageIndex)); } // Añade las variables de las etiquetas variables.AddRange(GetVariablesTag(document, pageIndex)); } // 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 de etiqueta /// </summary> private VariablesCollection GetVariablesTag(Model.Documents.DocumentModel document, int?pageIndex) { VariablesCollection variables = new VariablesCollection(); int tagIndex = 0; // Añade las variables de la etiqueta if (pageIndex == null) { foreach (Model.Solutions.FileModel tag in document.Tags) { Variable variable = GetVariable(Tags, "", tagIndex); // Añade los miembros de la variable variable.Members.Add(VariableTitle, tag.Title); variable.Members.Add(VariableUrl, tag.IDFileName); // Añade la variable a la colección variables.Add(variable); // Incrementa el índice de la etiqueta tagIndex++; } } else { Variable variable = GetVariable(Tags, "", pageIndex); // Añade los miembros de la etiqueta foreach (Model.Solutions.FileModel tag in document.Tags) { // Añade los miembros de la variable variable.Members.Add(VariableTitle, tag.Title, tagIndex + 1); variable.Members.Add(VariableUrl, tag.IDFileName, tagIndex + 1); // Incrementa el índice de la etiqueta tagIndex++; } // Añade la variable a la colección variables.Add(variable); } // Devuelve la colección de variables return(variables); }
/// <summary> /// Compila un documento /// </summary> internal string Compile(Model.Documents.DocumentModel document, VariablesCollection variables, int maxInstructions) { return(Compile(document.File.DocumentFileName, document.Content, variables, maxInstructions)); }