コード例 #1
0
        /// <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);
        }
コード例 #2
0
        /// <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);
        }