/// <summary> /// Obtiene las páginas anterior y posterior /// </summary> private FilesIndexComposition GetIndexPages(FileTargetModel file, DocumentModel document) { FilesIndexComposition index = new FilesIndexComposition(); FileTargetModelCollection siblings = Data.Files.GetSiblings(file, false); // Asigna los datos index.PageTop = Data.Files.GetParent(file); index.PagePrevious = siblings.GetPreviousPage(file); index.PageNext = siblings.GetNextPage(file); index.PagesRelated = GetPagesRelated(file, document); index.FilesBreadCrumb = Data.Files.GetParents(file); index.Normalize(); // Devuelve el índice return(index); }
/// <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); }