Esempio n. 1
0
        /// <summary>
        ///		Compila la página
        /// </summary>
        private string Compile(FileTargetModel file, DocumentModel document)
        {
            SectionSourceModel templateArticle = Data.Templates.GetTemplate(document, TemplatesArrayModel.TemplateType.Article);
            SectionSourceModel templateMain = Data.Templates.GetTemplate(document, TemplatesArrayModel.TemplateType.Main);
            string             content, fullTitle = document.Title;

            // Obtiene el título completo de la página
            if (Processor.Project.AddWebTitle)
            {
                fullTitle += $" - {Processor.Project.Title}";
            }
            // Compila la página
            content = Data.NhamlCompiler.Compile(document, file.DateUpdate, templateArticle,
                                                 GetIndexPages(file, document));
            // Compila el contenido con la plantilla principal
            content = templateMain.ReplaceVariablesPageTemplate(content, null, document.Title, document.Title,
                                                                document.Description, document.KeyWords);
            // Devuelve el valor compilando
            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);
        }