Пример #1
0
        /// <summary>
        ///		Compila una categoría
        /// </summary>
        internal string CompileCategory(Model.Documents.DocumentModel category, DateTime createdAt,
                                        string strContentHeader, string strContentItems,
                                        Pages.SectionSourceModel templateMain)
        {
            VariablesCollection variables = new VariablesCollection();

            // Obtiene las variables de proyecto
            variables.AddRange(GetProjectVariables());
            variables.AddRange(GetSectionVariables(Model.Documents.DocumentModel.ScopeType.Web));
            variables.AddRange(GetSectionVariables(Model.Documents.DocumentModel.ScopeType.News));
            // Obtiene las variables de la página
            variables.AddRange(GetVariablesPage(category, createdAt, null));
            // Quita la variable de contenido
            for (int index = variables.Count - 1; index >= 0; index--)
            {
                if (variables [index].Name.EqualsIgnoreCase(VariableContent))
                {
                    variables.RemoveAt(index);
                }
            }
            // Añade las variables de contenido y contenido adicional
            variables.Add(GetVariable(VariableContent, strContentHeader, null));
            variables.Add(GetVariable(VariableAdditionalContent, strContentItems, null));
            // Compila
            return(Compile(category.File.FullFileName, templateMain.Source.Content, variables, 0));
        }
Пример #2
0
 /// <summary>
 ///		Añade las variables índice de la página (siguiente, anterior o superior)
 /// </summary>
 private void AddVariablesPageIndex(VariablesCollection variables, string nameVariableTitle, string nameVariableUrl,
                                    Pages.FileTargetModel page)
 {
     if (page != null && !page.DocumentFileName.IsEmpty())
     {
         variables.Add(nameVariableTitle, page.Title);
         variables.Add(nameVariableUrl, page.DocumentFileName);
     }
     else
     {
         variables.Add(nameVariableTitle, "null");
         variables.Add(nameVariableUrl, "null");
     }
 }
Пример #3
0
        /// <summary>
        ///		Obtiene las variables del proyecto
        /// </summary>
        internal VariablesCollection GetProjectVariables()
        {
            VariablesCollection variables = new VariablesCollection();

            // Añade las variables de compilación
            foreach (KeyValuePair <string, string> variable in Processor.Project.ConvertVariables())
            {
                variables.Add(variable.Key, variable.Value);
            }
            // Añade las variables del proyecto
            variables.Add(VariableWebName, Processor.Project.Name);
            variables.Add(VariableWebDescription, Processor.Project.Description);
            // Devuelve la colección de variables
            return(variables);
        }
Пример #4
0
        /// <summary>
        ///		Compila una página
        /// </summary>
        internal string Compile(Model.Documents.DocumentModel document, DateTime createdAt,
                                Pages.SectionSourceModel template, Pages.FilesIndexComposition pageIndex)
        {
            VariablesCollection variables = new VariablesCollection();
            string content;

            // Obtiene las variables de proyecto
            variables.AddRange(GetProjectVariables());
            variables.AddRange(GetSectionVariables(Model.Documents.DocumentModel.ScopeType.Web));
            variables.AddRange(GetSectionVariables(Model.Documents.DocumentModel.ScopeType.News));
            variables.AddRange(GetVariablesPage(document, createdAt, null));
            variables.AddRange(GetVariablesIndex(pageIndex));
            // Añade las páginas relacionadas
            variables.AddRange(GetVariablesPagesRelated(pageIndex));
            // Añade las variables de breadCrumb
            variables.AddRange(GetVariablesBreadCrumb(pageIndex));
            // Añade las variables de sección asociadas a la página
            variables.AddRange(GetVariablesSectionPerPage(variables));
            // Compila la página y añade el contenido a la variable
            content = Compile(document.File.DocumentFileName, document.Content, variables, 0);
            variables.Remove(VariableContent);
            variables.Add(VariableContent, content);
            // Compila el contenido del archivo con la plantilla
            if (template != null)
            {
                content = Compile(document.File.DocumentFileName, template.Source.Content, variables, 0);
            }
            else                     // Añade el error y deja el contenido como estaba
            {
                Processor.Errors.Add(document.File.DocumentFileName, "No se encuentra ninguna plantilla");
            }
            // Devuelve el valor compilado
            return(content);
        }
Пример #5
0
        /// <summary>
        ///		Obtiene las variables de un documento para introducirlas en una categoría
        /// </summary>
        internal VariablesCollection GetVariablesPageForCategory(Pages.DocumentTargetModel document, int?pageIndex)
        {
            VariablesCollection variables = GetVariablesPage(document.Document, document.FileTarget.DateUpdate, pageIndex);

            // Añade las variables de las páginas para la categoría
            if (document != null)
            {
                // Añade las variables de la página
                variables.Add(GetVariable(VariableUrl, document.GetUrlSource(), pageIndex));
                variables.Add(GetVariable(VariableUrlFull, document.GetInternetUrl(Processor.Project), pageIndex));
                variables.Add(GetVariable(VariableUrlImageFull, document.GetFullUrlImage(Processor.Project), pageIndex));
                // Añade la variable con el contenido de la página
                variables.Add(GetVariable(VariableContent, document.Document.Content, pageIndex));
            }
            // Devuelve la colección de variables
            return(variables);
        }
Пример #6
0
        /// <summary>
        ///		Obtiene las variables de etiqueta
        /// </summary>
        private VariablesCollection GetVariablesTag(Model.Documents.DocumentModel document, int?pageIndex)
        {
            VariablesCollection variables = new VariablesCollection();
            int tagIndex = 0;

            // Añade las variables de la etiqueta
            if (pageIndex == null)
            {
                foreach (Model.Solutions.FileModel tag in document.Tags)
                {
                    Variable variable = GetVariable(Tags, "", tagIndex);

                    // Añade los miembros de la variable
                    variable.Members.Add(VariableTitle, tag.Title);
                    variable.Members.Add(VariableUrl, tag.IDFileName);
                    // Añade la variable a la colección
                    variables.Add(variable);
                    // Incrementa el índice de la etiqueta
                    tagIndex++;
                }
            }
            else
            {
                Variable variable = GetVariable(Tags, "", pageIndex);

                // Añade los miembros de la etiqueta
                foreach (Model.Solutions.FileModel tag in document.Tags)
                {
                    // Añade los miembros de la variable
                    variable.Members.Add(VariableTitle, tag.Title, tagIndex + 1);
                    variable.Members.Add(VariableUrl, tag.IDFileName, tagIndex + 1);
                    // Incrementa el índice de la etiqueta
                    tagIndex++;
                }
                // Añade la variable a la colección
                variables.Add(variable);
            }
            // Devuelve la colección de variables
            return(variables);
        }
Пример #7
0
        /// <summary>
        ///		Obtiene las variables asociadas a las secciones
        /// </summary>
        internal VariablesCollection GetSectionVariables(Model.Documents.DocumentModel.ScopeType idScope)
        {
            VariablesCollection variables = new VariablesCollection();

            // Asigna las variables
            foreach (Pages.SectionSourceModel source in CompilerData.Templates)
            {
                if (source.Source.File.FileType == Model.Solutions.FileModel.DocumentType.Section &&
                    source.Source.IDScope == idScope)
                {
                    variables.Add(source.GetNameSection(), source.Source.Content);
                }
            }
            // Devuelve la colección de variables
            return(variables);
        }
Пример #8
0
        /// <summary>
        ///		Obtiene las variables asociadas a secciones de página
        /// </summary>
        private VariablesCollection GetVariablesSectionPerPage(VariablesCollection variablesPage)
        {
            VariablesCollection variables = new VariablesCollection();

            // Asigna las variables
            foreach (Pages.SectionSourceModel source in CompilerData.Templates)
            {
                if (source.Source.File.FileType == Model.Solutions.FileModel.DocumentType.Section &&
                    source.Source.IDScope == Model.Documents.DocumentModel.ScopeType.Page)
                {
                    variables.Add(source.GetNameSection(),
                                  Compile(source.FileTarget.File.DocumentFileName, source.Source.Content, variablesPage, 0));
                }
            }
            // Devuelve la colección de variables
            return(variables);
        }
        private void GetVariablesFromRecords()
        {
            this.variables = new VariablesCollection();

            int dictionaryIndex = 0;
            int variableIndex   = 0;

            foreach (var variableRecord in this.MetaData.VariableRecords)
            {
                if (variableRecord.Type >= 0)
                {
                    variables.Add(GetVariable(variableIndex, dictionaryIndex, this.MetaData));
                    variableIndex++;
                }
                dictionaryIndex++;
            }
        }
Пример #10
0
        /// <summary>
        ///		Obtiene las variables necesarias para crear el BreadCrumb
        /// </summary>
        private VariablesCollection GetVariablesBreadCrumb(Pages.FilesIndexComposition fileIndex)
        {
            VariablesCollection variables = new VariablesCollection();

            // Añade las variables
            if (fileIndex != null && fileIndex.FilesBreadCrumb != null)
            {
                for (int pageIndex = 0; pageIndex < fileIndex.FilesBreadCrumb.Count; pageIndex++)
                {
                    Variable variable = new Variable(VariablePageBreadCrumb, ValueBase.GetInstance(""), pageIndex + 1);

                    // Añade los miembros
                    variable.Members.Add(VariableTitle, ValueBase.GetInstance(fileIndex.FilesBreadCrumb [pageIndex].Title));
                    variable.Members.Add(VariableUrl, ValueBase.GetInstance(fileIndex.FilesBreadCrumb [pageIndex].DocumentFileName));
                    // Añade la variable a la colección
                    variables.Add(variable);
                }
            }
            // Devuelve la colección de variables
            return(variables);
        }
Пример #11
0
        /// <summary>
        ///		Obtiene las variables con las páginas relacionadas
        /// </summary>
        private VariablesCollection GetVariablesPagesRelated(Pages.FilesIndexComposition fileIndex)
        {
            VariablesCollection variables = new VariablesCollection();

            // Recorre la colección de páginas relacionadas
            if (fileIndex != null && fileIndex.PagesRelated != null)
            {
                for (int pageIndex = 0; pageIndex < fileIndex.PagesRelated.Count; pageIndex++)
                {
                    Pages.DocumentTargetModel page = fileIndex.PagesRelated [pageIndex];
                    Variable variable = new Variable(VariablePageRelated, ValueBase.GetInstance(""), pageIndex + 1);

                    // Añade los miembros
                    variable.Members.Add(VariableTitle, ValueBase.GetInstance(page.Document.Title));
                    variable.Members.Add(VariableUrl, ValueBase.GetInstance(page.GetUrlSource()));
                    variable.Members.Add(VariableUrlImage, ValueBase.GetInstance(page.Document.URLImageSummary));
                    variable.Members.Add(VariableUrlThumb, ValueBase.GetInstance(page.Document.URLThumbImageSummary));
                    // Añade la variable a la colección
                    variables.Add(variable);
                }
            }
            // Devuelve la colección de variables
            return(variables);
        }
Пример #12
0
        /// <summary>
        ///		Obtiene las variables de un documento para introducirlas en una categoría
        /// </summary>
        internal VariablesCollection GetVariablesPage(Model.Documents.DocumentModel document, DateTime createdAt, int?pageIndex)
        {
            VariablesCollection variables = new VariablesCollection();

            // Añade las variables de las páginas para la categoría
            if (document != null)
            {
                // Añade las variables de la página
                variables.Add(GetVariable(VariableTitle, document.Title, pageIndex));
                variables.Add(GetVariable(VariableKeyWords, document.KeyWords, pageIndex));
                variables.Add(GetVariable(VariableDescription, document.Description, pageIndex));
                variables.Add(GetVariable(VariableUrlImage, document.URLImageSummary, pageIndex));
                if (!document.URLImageSummary.IsEmpty() &&
                    System.IO.File.Exists(System.IO.Path.Combine(Processor.Project.File.Path,
                                                                 document.URLThumbImageSummary)))
                {
                    variables.Add(GetVariable(VariableUrlThumb, document.URLThumbImageSummary, pageIndex));
                }
                else
                {
                    variables.Add(GetVariable(VariableUrlThumb, "", pageIndex));
                }
                variables.Add(GetVariable(VariableDate, string.Format("{0:dd-MM-yyyy}", createdAt), pageIndex));
                variables.Add(GetVariable(VariableDay, createdAt.Day.ToString(), pageIndex));
                variables.Add(GetVariable(VariableMonth, createdAt.Month.ToString(), pageIndex));
                variables.Add(GetVariable(VariableMonthName,
                                          System.Globalization.CultureInfo.CurrentCulture.DateTimeFormat.GetAbbreviatedMonthName(createdAt.Month).ToUpperFirstLetter(),
                                          pageIndex));
                variables.Add(GetVariable(VariableYear, createdAt.Year.ToString(), pageIndex));
                // Añade las variables con el nombre completo de la página
                if (Processor.Project.AddWebTitle && !Processor.Project.Title.IsEmpty())
                {
                    variables.Add(GetVariable(VariableFullTitle,
                                              $"{document.Title} - {Processor.Project.Title}",
                                              pageIndex));
                }
                else
                {
                    variables.Add(GetVariable(VariableFullTitle, document.Title, pageIndex));
                }
                // Añade las variables de las etiquetas
                variables.AddRange(GetVariablesTag(document, pageIndex));
            }
            // Devuelve la colección de variables
            return(variables);
        }
Пример #13
0
        private void GetVariablesFromRecords()
        {
            this.variables = new VariablesCollection();

            int dictionaryIndex = 0;
            int variableIndex = 0;
            foreach (var variableRecord in this.MetaData.VariableRecords)
            {
                if (variableRecord.Type >= 0)
                {
                    variables.Add(GetVariable(variableIndex, dictionaryIndex, this.MetaData));
                    variableIndex++;
                }
                dictionaryIndex++;
            }
        }