/// <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>
        ///		Carga los documentos, inicializa sus datos básicos y compila en corto
        /// </summary>
        internal override void Process()
        {
            foreach (SectionSourceModel section in Data.Templates)
            {
                if (section.Source.IDScope == DocumentModel.ScopeType.News)
                {
                    FileTargetModelCollection childs = Data.Files.GetChilds(section.Source.ChildPages, true, true);

                    // Compila el contenido de la sección
                    section.Source.Content = Compile(section, childs);
                }
            }
        }
Exemple #3
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);
        }
Exemple #4
0
        /// <summary>
        ///		Obtiene las páginas relacionadas
        /// </summary>
        private System.Collections.Generic.List <DocumentTargetModel> GetPagesRelated(FileTargetModel file, DocumentModel document)
        {
            System.Collections.Generic.List <DocumentTargetModel> documents = new System.Collections.Generic.List <DocumentTargetModel>();
            FileTargetModelCollection filesRelated = Data.Files.GetPagesRelated(file, document);

            // Carga los archivos y rellena la lista
            foreach (FileTargetModel fileRelated in filesRelated)
            {
                documents.Add(new DocumentTargetModel
                {
                    FileTarget = fileRelated,
                    Document   = new DocumentBussiness().Load(Processor.Project,
                                                              fileRelated.GetFullFileNameCompiledShort(Processor))
                });
            }
            // Devuelve la colección de archivos
            return(documents);
        }
        /// <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);
        }