Example #1
0
        /// <summary>
        ///		Compila las plantillas
        /// </summary>
        private void CompileTemplates()
        {
            NhamlCompiler.Variables.VariablesCollection variables = new NhamlCompiler.Variables.VariablesCollection();

            // Obtiene las variables de proyecto
            variables.AddRange(Data.NhamlCompiler.GetProjectVariables());
            // Añade las variables de secciones de noticias y Web
            variables.AddRange(Data.NhamlCompiler.GetSectionVariables(DocumentModel.ScopeType.News));
            variables.AddRange(Data.NhamlCompiler.GetSectionVariables(DocumentModel.ScopeType.Web));
            // Añade las variables con los datos explícitos de la página
            variables.Add(Compiler.NHamlCompilerWrapper.VariableMainUrlPage, SectionSourceModel.VariableMainUrlPage);
            variables.Add(Compiler.NHamlCompilerWrapper.VariableMainUrlImage, SectionSourceModel.VariableMainUrlImage);
            variables.Add(Compiler.NHamlCompilerWrapper.VariableContent, SectionSourceModel.VariableContent);
            variables.Add(Compiler.NHamlCompilerWrapper.VariableAdditionalContent, SectionSourceModel.VariableAdditionalContent);
            variables.Add(Compiler.NHamlCompilerWrapper.VariableTitle, SectionSourceModel.VariableTitle);
            variables.Add(Compiler.NHamlCompilerWrapper.VariableFullTitle, SectionSourceModel.VariableFullTitle);
            variables.Add(Compiler.NHamlCompilerWrapper.VariableKeyWords, SectionSourceModel.VariableKeywords);
            variables.Add(Compiler.NHamlCompilerWrapper.VariableDescription, SectionSourceModel.VariableDescription);
            // Compila las secciones Web
            foreach (SectionSourceModel template in Data.Templates)
            {
                if (template.FileTarget.File.FileType == Model.Solutions.FileModel.DocumentType.Template)
                {
                    template.ContentCompiled = Data.NhamlCompiler.Compile(template, variables, 0);
                }
            }
        }
        /// <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);
        }
Example #3
0
        /// <summary>
        ///		Compila un documento
        /// </summary>
        private void Compile(DocumentModel document, Pages.FileTargetModel file, NhamlCompiler.Variables.VariablesCollection variables)
        {
            // Compila
            document.Content = Data.NhamlCompiler.Compile(document, variables, Processor.Project.ParagraphsSummaryNumber);
            // Graba el documento en corto
            try
            {
                string fileName = file.GetFullFileNameCompiledShort(Processor);

                // Crea el directorio
                LibCommonHelper.Files.HelperFiles.MakePath(System.IO.Path.GetDirectoryName(fileName));
                // Graba el documento
                new DocumentBussiness().Save(document, fileName);
            }
            catch (Exception exception)
            {
                Processor.Errors.Add(file.GetFullFileName(Processor), $"Error al grabar el archivo {document.File.IDFileName}: {exception.Message}");
            }
        }
Example #4
0
        /// <summary>
        ///		Compila las secciones Web
        /// </summary>
        private void CompileSectionsWeb()
        {
            NhamlCompiler.Variables.VariablesCollection variables = new NhamlCompiler.Variables.VariablesCollection();

            // Obtiene las variables de proyecto
            variables.AddRange(Data.NhamlCompiler.GetProjectVariables());
            // Añade las variables de secciones de noticias
            variables.AddRange(Data.NhamlCompiler.GetSectionVariables(DocumentModel.ScopeType.News));
            // Añade como variables los nombres de sección (puesto que al no estar compiladas aún, no tendremos el contenido y la
            // variable está a null)
            foreach (SectionSourceModel section in Data.Templates)
            {
                if (section.Source.IDScope == DocumentModel.ScopeType.Web)
                {
                    variables.Add(section.GetNameSection(), VariablePrefix + section.GetNameSection() + VariablePrefix);
                }
            }
            // Compila las secciones Web
            foreach (SectionSourceModel section in Data.Templates)
            {
                if (section.Source.IDScope == DocumentModel.ScopeType.Web)
                {
                    section.Source.Content = Data.NhamlCompiler.Compile(section, variables, 0);
                }
            }
            // Reemplaza en el contenido compilado las variables falsas anteriores
            foreach (SectionSourceModel section in Data.Templates)
            {
                if (section.Source.IDScope == DocumentModel.ScopeType.Web)
                {
                    foreach (SectionSourceModel sectionFake in Data.Templates)
                    {
                        if (sectionFake.Source.IDScope == DocumentModel.ScopeType.Web)
                        {
                            section.Source.Content = section.Source.Content.Replace(VariablePrefix + sectionFake.GetNameSection() + VariablePrefix,
                                                                                    sectionFake.Source.Content);
                        }
                    }
                }
            }
        }