/// <summary> /// Compila una sección /// </summary> private string Compile(SectionSourceModel section, FileTargetModelCollection childs) { SectionSourceModel template = Data.Templates.GetTemplate(section.Source, TemplatesArrayModel.TemplateType.News); NhamlCompiler.Variables.VariablesCollection variables = Data.NhamlCompiler.GetVariablesDocumentForCategory(childs); string content; // Ordena los archivos hijo childs.SortByDate(false); // Dependiendo de si la sección tiene o no una plantilla if (template != null) { // Compila las páginas content = Data.NhamlCompiler.Compile(section.FileTarget.File.DocumentFileName, template.Source.Content, variables, 0); // Crea las variables para el contenido de la sección variables.Clear(); variables.Add(Compiler.NHamlCompilerWrapper.VariableContent, content); // Compila la sección content = Data.NhamlCompiler.Compile(section.FileTarget.File.DocumentFileName, section.Source.Content, variables, 0); } else { content = Data.NhamlCompiler.Compile(section.Source, variables, 0); } // Devuelve el valor compilado return(content); }
/// <summary> /// Crea las páginas de una categoría /// </summary> private FileTargetModelCollection Compile(FileTargetModel fileCategory, DocumentModel category, FileTargetModelCollection childs, int intItemsPerPage) { FileTargetModelCollection filesCompiled = new FileTargetModelCollection(Processor); SectionSourceModel templateMain = Data.Templates.GetTemplate(category, TemplatesArrayModel.TemplateType.Main); SectionSourceModel templateHeader = Data.Templates.GetTemplate(category, TemplatesArrayModel.TemplateType.CategoryHeader); // Si no hay ninguna plantilla añade el error if (templateHeader == null) { Processor.Errors.Add(fileCategory.File.DocumentFileName, "No se encuentra ninguna plantilla para la cabecera de la categoría"); } else { SectionSourceModel templateItems = GetTemplateItems(category); if (templateItems == null) { Processor.Errors.Add(fileCategory.File.DocumentFileName, "No se encuentra ninguna plantilla para los elementos de la categoría"); } else { string contentHeader = Data.NhamlCompiler.Compile(category, fileCategory.DateUpdate, templateHeader, null); int pageIndex = 0; int numberPages = CountPages(childs.Count, intItemsPerPage); if (childs.Count == 0) { string content; // Compila con la cabecera de la plantilla content = templateMain.ReplaceVariablesPageTemplate(contentHeader, null, category.Title, category.Title, category.Description, category.KeyWords); // Crea el archivo filesCompiled.Add(CreateFile(fileCategory, 0)); // Graba en el archivo compilado el contenido de la cabecera Save(filesCompiled [filesCompiled.Count - 1], content); } else { // Ordena los archivos if (fileCategory.ShowMode == DocumentModel.ShowChildsMode.SortByDate) { childs.SortByDate(false); } else { childs.SortByName(true); } // Compila el contenido for (int top = 0; top < childs.Count; top += intItemsPerPage, pageIndex++) { string content; FilesIndexComposition fileIndex = new FilesIndexComposition(); // Obtiene las páginas de índice fileIndex.PageTop = Data.Files.GetParent(fileCategory); fileIndex.PagePrevious = GetPage(fileCategory, pageIndex - 1, numberPages); fileIndex.PageNext = GetPage(fileCategory, pageIndex + 1, numberPages); // Normaliza el índice fileIndex.Normalize(); // Compila los elementos de la categoría content = Data.NhamlCompiler.CompileItemsCategory(category, templateItems, childs.Slice(top, intItemsPerPage), fileIndex); // Compila con la cabecera de la plantilla content = templateMain.ReplaceVariablesPageTemplate(contentHeader, content, category.Title, category.Title, category.Description, category.KeyWords); // Crea el archivo filesCompiled.Add(CreateFile(fileCategory, pageIndex)); // Graba el archivo compilado Save(filesCompiled [filesCompiled.Count - 1], content); } } } } // Devuelve la colección de páginas return(filesCompiled); }