コード例 #1
0
        public string Execute(Page page, TemplateFiles files, string templateVirtualFolder, object model)
        {
            var sourceFileUri = new FileUri(templateVirtualFolder + "/" + files.Template);

            try
            {
                string source       = File.ReadAllText(sourceFileUri.PhysicalFilePath);
                string sourceFolder = sourceFileUri.UrlFolder;
                var    hbs          = HandlebarsDotNet.Handlebars.Create();

                RegisterHelpers(hbs);
                RegisterScriptHelper(hbs);
                RegisterHandlebarsHelper(hbs);
                RegisterRegisterStylesheetHelper(hbs, page, sourceFolder);
                RegisterRegisterScriptHelper(hbs, page, sourceFolder);
                if (files.PartialTemplates != null)
                {
                    foreach (var part in files.PartialTemplates.Where(t => t.Value.ClientSide == false))
                    {
                        RegisterTemplate(hbs, part.Key, templateVirtualFolder + "/" + part.Value.Template);
                    }
                }
                return(CompileTemplate(hbs, source, model));
            }
            catch (Exception ex)
            {
                Log.Logger.Error(string.Format("Failed to render Handlebar template source:[{0}], model:[{1}]", sourceFileUri.PhysicalFilePath, model), ex);
                throw new TemplateException("Failed to render Handlebar template " + sourceFileUri.PhysicalFilePath, ex, model, sourceFileUri.PhysicalFilePath);
            }
        }
コード例 #2
0
        private string ExecuteTemplate(Page page, TemplateManifest templateManifest, TemplateFiles files, FileUri templateUri, object model)
        {
            var       templateVirtualFolder = templateManifest.ManifestFolderUri.UrlFolder;
            string    output;
            Stopwatch stopwatch = null;

            if (LogContext.IsLogActive)
            {
                var logKey = "Render template";
                LogContext.Log(_module.ViewModule.ModuleID, logKey, "template", templateUri.FilePath);
                LogContext.Log(_module.ViewModule.ModuleID, logKey, "model", model);
                stopwatch = new Stopwatch();
                stopwatch.Start();
            }
            if (templateUri.Extension != ".hbs")
            {
                output = ExecuteRazor(templateUri, model);
            }
            else
            {
                HandlebarsEngine hbEngine = new HandlebarsEngine();
                output = hbEngine.Execute(page, files, templateVirtualFolder, model);
            }
            if (stopwatch != null)
            {
                stopwatch.Stop();
                var logKey = "Render template";
                LogContext.Log(_module.ViewModule.ModuleID, logKey, "render time (ms)", stopwatch.ElapsedMilliseconds);
                stopwatch.Stop();
            }
            return(output);
        }
コード例 #3
0
        private FileUri CheckFiles(TemplateManifest templateManifest, TemplateFiles files)
        {
            if (files == null)
            {
                throw new Exception("Manifest.json missing or incomplete");
            }
            var templateUri = new FileUri(templateManifest.ManifestFolderUri, files.Template);

            if (!templateUri.FileExists)
            {
                throw new Exception("Template " + templateUri.UrlFilePath + " don't exist");
            }
            if (files.PartialTemplates != null)
            {
                foreach (var partial in files.PartialTemplates)
                {
                    var partialTemplateUri = new FileUri(templateManifest.ManifestFolderUri, partial.Value.Template);
                    if (!partialTemplateUri.FileExists)
                    {
                        throw new Exception("PartialTemplate " + partialTemplateUri.UrlFilePath + " don't exist");
                    }
                }
            }
            return(templateUri);
        }
コード例 #4
0
ファイル: PreSharpBuildTask.cs プロジェクト: wkfff/PreSharp
    public override bool Execute()
    {
        TaskLogger logger = new TaskLogger(this);

        List <string> compileGeneratedFiles;
        List <string> embeddedResourceGeneratedFiles;
        List <string> filesToDelete;

        bool debugMode = (ConditionalCompilationSymbols.Contains("PRESHARP_DEBUG") || Environment.GetEnvironmentVariable("PRESHARP_DEBUG") != null) &&
                         !(ConditionalCompilationSymbols.Contains("DISABLE_PRESHARP_DEBUG") || Environment.GetEnvironmentVariable("DISABLE_PRESHARP_DEBUG") != null);

        PreSharpEntryPoint.Process(
            logger,
            InPlaceFiles.Select(taskItem => taskItem.ItemSpec),
            TemplateFiles.Select(taskItem => taskItem.ItemSpec),
            TemplateIncludeFiles.Select(taskItem => taskItem.ItemSpec),
            TemplateLibraryFiles.Select(taskItem => taskItem.ItemSpec),
            DependencyPaths.Select(taskItem => taskItem.ItemSpec),
            Path.GetFullPath(Path.Combine(Path.GetDirectoryName(ProjectPath), OutputDirectory)),
            out compileGeneratedFiles,
            out embeddedResourceGeneratedFiles,
            out filesToDelete,
            /*createNewAppDomain*/ false,
            /*debugMode*/ debugMode,
            ConditionalCompilationSymbols);

        CompileGeneratedFiles          = compileGeneratedFiles.Select(file => new TaskItem(file)).ToArray();
        EmbeddedResourceGeneratedFiles = embeddedResourceGeneratedFiles.Select(file => new TaskItem(file)).ToArray();
        FilesToDelete = filesToDelete.Select(file => new TaskItem(file)).ToArray();

        return(logger.Success);
    }
コード例 #5
0
 protected ModelFactoryBase(string settingsJson, Manifest.Manifest manifest, TemplateManifest templateManifest, TemplateFiles templateFiles, OpenContentModuleConfig module, int portalId, string cultureCode)
 {
     this._settingsJson     = settingsJson;
     this._manifest         = manifest;
     this._templateFiles    = templateFiles;
     this._module           = module;
     this._cultureCode      = cultureCode;
     this._portalId         = portalId;
     this._templateManifest = templateManifest;
     this._collection       = templateManifest.Collection;
     this._detailTabId      = DnnUtils.GetTabByCurrentCulture(this._portalId, module.GetDetailTabId(), GetCurrentCultureCode());
     _ds        = DataSourceManager.GetDataSource(_manifest.DataSource);
     _dsContext = OpenContentUtils.CreateDataContext(_module);
 }
コード例 #6
0
        protected ModelFactoryBase(OpenContentModuleConfig module, string collection)
        {
            OpenContentSettings settings = module.Settings;

            this._settingsJson     = settings.Data;
            this._manifest         = settings.Template.Manifest;
            this._templateFiles    = settings.Template?.Main;
            this._module           = module;
            this._portalId         = module.PortalId;
            this._templateManifest = settings.Template;
            this._collection       = collection;
            this._detailTabId      = DnnUtils.GetTabByCurrentCulture(this._portalId, module.GetDetailTabId(), GetCurrentCultureCode());
            _ds        = DataSourceManager.GetDataSource(_manifest.DataSource);
            _dsContext = OpenContentUtils.CreateDataContext(_module);
        }
コード例 #7
0
ファイル: ModelFactory.cs プロジェクト: skamphuis/OpenContent
 public ModelFactory(IEnumerable <IDataItem> dataList, string settingsJson, string physicalTemplateFolder, Manifest.Manifest manifest, TemplateManifest templateManifest, TemplateFiles templateFiles, ModuleInfo module, int portalId, string cultureCode, int mainTabId, int mainModuleId)
 {
     this.DataList               = dataList;
     this.settingsJson           = settingsJson;
     this.PhysicalTemplateFolder = physicalTemplateFolder;
     this.Manifest               = manifest;
     this.TemplateFiles          = templateFiles;
     this.Module           = module;
     this.PortalId         = portalId;
     this.CultureCode      = cultureCode;
     this.TemplateManifest = templateManifest;
     this.MainTabId        = mainTabId > 0 ? mainTabId : module.TabID;
     this.MainTabId        = DnnUtils.GetTabByCurrentCulture(this.PortalId, this.MainTabId, GetCurrentCultureCode());
     this.MainModuleId     = mainModuleId > 0 ? mainModuleId : module.ModuleID;
 }
コード例 #8
0
ファイル: ModelFactory.cs プロジェクト: skamphuis/OpenContent
        }                                    // alpaca options.json format

        public ModelFactory(JToken dataJson, string settingsJson, string physicalTemplateFolder, Manifest.Manifest manifest, TemplateManifest templateManifest, TemplateFiles templateFiles, ModuleInfo module, PortalSettings portalSettings, int mainTabId, int mainModuleId)
        {
            this.dataJson               = dataJson;
            this.settingsJson           = settingsJson;
            this.PhysicalTemplateFolder = physicalTemplateFolder;
            this.Manifest               = manifest;
            this.TemplateFiles          = templateFiles;
            this.Module           = module;
            this.PortalSettings   = portalSettings;
            this.PortalId         = portalSettings.PortalId;
            this.TemplateManifest = templateManifest;
            this.MainTabId        = mainTabId > 0 ? mainTabId : module.TabID;
            this.MainTabId        = DnnUtils.GetTabByCurrentCulture(this.PortalId, this.MainTabId, GetCurrentCultureCode());
            this.MainModuleId     = mainModuleId > 0 ? mainModuleId : module.ModuleID;
        }
コード例 #9
0
        public ModelFactoryBase(OpenContentModuleInfo module, PortalSettings portalSettings, string collection)
        {
            OpenContentSettings settings = module.Settings;

            this._settingsJson           = settings.Data;
            this._physicalTemplateFolder = settings.Template.ManifestFolderUri.PhysicalFullDirectory + "\\";
            this._manifest         = settings.Template.Manifest;
            this._templateFiles    = settings.Template?.Main;
            this._module           = module;
            this._portalSettings   = portalSettings;
            this._portalId         = portalSettings.PortalId;
            this._templateManifest = settings.Template;
            this._collection       = collection;
            this._detailTabId      = DnnUtils.GetTabByCurrentCulture(this._portalId, module.GetDetailTabId(), GetCurrentCultureCode());
            _ds        = DataSourceManager.GetDataSource(_manifest.DataSource);
            _dsContext = OpenContentUtils.CreateDataContext(_module);
        }
コード例 #10
0
        public ModelFactoryBase(string settingsJson, string physicalTemplateFolder, Manifest.Manifest manifest, TemplateManifest templateManifest, TemplateFiles templateFiles, OpenContentModuleInfo module, PortalSettings portalSettings)

        {
            this._settingsJson           = settingsJson;
            this._physicalTemplateFolder = physicalTemplateFolder;
            this._manifest         = manifest;
            this._templateFiles    = templateFiles;
            this._module           = module;
            this._portalSettings   = portalSettings;
            this._portalId         = portalSettings.PortalId;
            this._templateManifest = templateManifest;
            this._collection       = templateManifest == null ? AppConfig.DEFAULT_COLLECTION : templateManifest.Collection;
            this._detailTabId      = DnnUtils.GetTabByCurrentCulture(this._portalId, module.GetDetailTabId(), GetCurrentCultureCode());

            _ds        = DataSourceManager.GetDataSource(_manifest.DataSource);
            _dsContext = OpenContentUtils.CreateDataContext(_module);
        }
コード例 #11
0
ファイル: ModelFactory.cs プロジェクト: skamphuis/OpenContent
        public ModelFactory(IEnumerable <IDataItem> dataList, ModuleInfo module, PortalSettings portalSettings, int mainTabId)
        {
            OpenContentSettings settings = module.OpenContentSettings();

            this.DataList               = dataList;
            this.settingsJson           = settings.Data;
            this.PhysicalTemplateFolder = settings.Template.ManifestFolderUri.PhysicalFullDirectory + "\\";
            this.Manifest               = settings.Template.Manifest;
            this.TemplateFiles          = settings.Template != null ? settings.Template.Main : null;
            this.Module           = module;
            this.PortalSettings   = portalSettings;
            this.PortalId         = portalSettings.PortalId;
            this.TemplateManifest = settings.Template;
            this.MainTabId        = mainTabId > 0 ? mainTabId : module.TabID;
            this.MainTabId        = DnnUtils.GetTabByCurrentCulture(this.PortalId, this.MainTabId, GetCurrentCultureCode());
            this.MainModuleId     = settings.ModuleId > 0 ? settings.ModuleId : module.ModuleID;
        }
コード例 #12
0
        private string GenerateOutput(Page page, TemplateManifest templateManifest, TemplateFiles files, JToken dataJson, string settingsJson)
        {
            // detail template
            if (dataJson != null)
            {
                //todo check view permissions
            }
            var templateVirtualFolder = templateManifest.ManifestFolderUri.UrlFolder;

            if (!string.IsNullOrEmpty(files.Template))
            {
                string  physicalTemplateFolder = HostingEnvironment.MapPath(templateVirtualFolder);
                FileUri templateUri            = CheckFiles(templateManifest, files);

                if (dataJson != null)
                {
                    int          mainTabId = _settings.DetailTabId > 0 ? _settings.DetailTabId : _settings.TabId;
                    ModelFactory mf        = new ModelFactory(_renderinfo.Data, settingsJson, physicalTemplateFolder, _renderinfo.Template.Manifest, _renderinfo.Template, files, _module, PortalSettings.Current, mainTabId, _settings.ModuleId);
                    dynamic      model     = mf.GetModelAsDynamic();
                    if (!string.IsNullOrEmpty(_renderinfo.Template.Manifest.DetailMetaTitle))
                    {
                        HandlebarsEngine hbEngine = new HandlebarsEngine();
                        page.Title = hbEngine.Execute(_renderinfo.Template.Manifest.DetailMetaTitle, model);
                    }
                    if (!string.IsNullOrEmpty(_renderinfo.Template.Manifest.DetailMetaDescription))
                    {
                        HandlebarsEngine hbEngine = new HandlebarsEngine();
                        PageUtils.SetPageDescription(page, hbEngine.Execute(_renderinfo.Template.Manifest.DetailMetaDescription, model));
                    }
                    if (!string.IsNullOrEmpty(_renderinfo.Template.Manifest.DetailMeta))
                    {
                        HandlebarsEngine hbEngine = new HandlebarsEngine();
                        PageUtils.SetPageMeta(page, hbEngine.Execute(_renderinfo.Template.Manifest.DetailMeta, model));
                    }
                    return(ExecuteTemplate(page, templateManifest, files, templateUri, model));
                }
                else
                {
                    return("");
                }
            }
            else
            {
                return("");
            }
        }
コード例 #13
0
        private string ExecuteTemplate(Page page, TemplateManifest templateManifest, TemplateFiles files, FileUri templateUri, dynamic model)
        {
            var templateVirtualFolder = templateManifest.ManifestFolderUri.UrlFolder;

            if (LogContext.IsLogActive)
            {
                var logKey = "Render template";
                LogContext.Log(_module.ModuleID, logKey, "template", templateUri.FilePath);
                LogContext.Log(_module.ModuleID, logKey, "model", model);
            }
            if (templateUri.Extension != ".hbs")
            {
                return(ExecuteRazor(templateUri, model));
            }
            else
            {
                HandlebarsEngine hbEngine = new HandlebarsEngine();
                return(hbEngine.Execute(page, files, templateVirtualFolder, model));
            }
        }
コード例 #14
0
 private string GenerateListOutput(Page page, TemplateManifest templateManifest, TemplateFiles files, IEnumerable <IDataItem> dataList, string settingsJson)
 {
     if (!string.IsNullOrEmpty(files.Template))
     {
         FileUri templateUri = CheckFiles(templateManifest, files);
         if (dataList != null)
         {
             ModelFactoryMultiple mf = new ModelFactoryMultiple(dataList, settingsJson, _renderinfo.Template.Manifest, _renderinfo.Template, files, _module);
             object model;
             if (templateUri.Extension != ".hbs") // razor
             {
                 model = mf.GetModelAsDynamic();
             }
             else // handlebars
             {
                 if (!App.Services.CreateGlobalSettingsRepository(_module.PortalId).GetLegacyHandlebars())
                 {
                     model = mf.GetModelAsDictionary();
                 }
                 else
                 {
                     model = mf.GetModelAsDynamic();
                 }
             }
             return(ExecuteTemplate(page, templateManifest, files, templateUri, model));
         }
     }
     return("");
 }
コード例 #15
0
        private string GenerateListOutput(Page page, TemplateManifest templateManifest, TemplateFiles files, IEnumerable <IDataItem> dataList, string settingsJson)
        {
            var templateVirtualFolder = templateManifest.ManifestFolderUri.UrlFolder;

            if (!string.IsNullOrEmpty(files.Template))
            {
                string  physicalTemplateFolder = HostingEnvironment.MapPath(templateVirtualFolder);
                FileUri templateUri            = CheckFiles(templateManifest, files);
                if (dataList != null)
                {
                    ModelFactoryMultiple mf = new ModelFactoryMultiple(dataList, settingsJson, physicalTemplateFolder, _renderinfo.Template.Manifest, _renderinfo.Template, files, _module, PortalSettings.Current);
                    object model;
                    if (templateUri.Extension != ".hbs") // razor
                    {
                        model = mf.GetModelAsDynamic();
                    }
                    else // handlebars
                    {
                        if (OpenContentControllerFactory.Instance.OpenContentGlobalSettingsController.GetFastHandlebars())
                        {
                            model = mf.GetModelAsDictionary();
                        }
                        else
                        {
                            model = mf.GetModelAsDynamic();
                        }
                    }
                    return(ExecuteTemplate(page, templateManifest, files, templateUri, model));
                }
            }
            return("");
        }
コード例 #16
0
        private string GenerateOutputSingle(Page page, FileUri template, JToken dataJson, string settingsJson, TemplateFiles files)
        {
            if (template != null)
            {
                string templateVirtualFolder  = template.UrlFolder;
                string physicalTemplateFolder = HostingEnvironment.MapPath(templateVirtualFolder);
                if (dataJson != null)
                {
                    ModelFactorySingle mf;

                    if (_renderinfo.Data == null)
                    {
                        // demo data
                        mf = new ModelFactorySingle(_renderinfo.DataJson, settingsJson, physicalTemplateFolder, _renderinfo.Template.Manifest, _renderinfo.Template, files, _module, PortalSettings.Current);
                    }
                    else
                    {
                        mf = new ModelFactorySingle(_renderinfo.Data, settingsJson, physicalTemplateFolder, _renderinfo.Template.Manifest, _renderinfo.Template, files, _module, PortalSettings.Current);
                    }
                    if (template.Extension != ".hbs") // razor
                    {
                        dynamic model = mf.GetModelAsDynamic();
                        if (LogContext.IsLogActive)
                        {
                            var logKey = "Render single item template";
                            LogContext.Log(_module.ViewModule.ModuleID, logKey, "template", template.FilePath);
                            LogContext.Log(_module.ViewModule.ModuleID, logKey, "model", model);
                        }
                        return(ExecuteRazor(template, model));
                    }
                    else // handlebars
                    {
                        object model;
                        if (OpenContentControllerFactory.Instance.OpenContentGlobalSettingsController.GetFastHandlebars())
                        {
                            model = mf.GetModelAsDictionary();
                        }
                        else
                        {
                            model = mf.GetModelAsDynamic();
                        }
                        if (LogContext.IsLogActive)
                        {
                            var logKey = "Render single item template";
                            LogContext.Log(_module.ViewModule.ModuleID, logKey, "template", template.FilePath);
                            LogContext.Log(_module.ViewModule.ModuleID, logKey, "model", model);
                        }
                        HandlebarsEngine hbEngine = new HandlebarsEngine();
                        return(hbEngine.Execute(page, template, model));
                    }
                }
                else
                {
                    return("");
                }
            }
            else
            {
                return("");
            }
        }
コード例 #17
0
        private string GenerateOutputDetail(Page page, TemplateManifest templateManifest, TemplateFiles files, JToken dataJson, string settingsJson)
        {
            // detail template
            var templateVirtualFolder = templateManifest.ManifestFolderUri.UrlFolder;

            if (!string.IsNullOrEmpty(files.Template))
            {
                string  physicalTemplateFolder = HostingEnvironment.MapPath(templateVirtualFolder);
                FileUri templateUri            = CheckFiles(templateManifest, files);

                if (dataJson != null)
                {
                    var mf = new ModelFactorySingle(_renderinfo.Data, settingsJson, physicalTemplateFolder, _renderinfo.Template.Manifest, _renderinfo.Template, files, _module, PortalSettings.Current);
                    mf.Detail = true;
                    object model;
                    if (templateUri.Extension != ".hbs") // razor
                    {
                        model = mf.GetModelAsDynamic();
                    }
                    else // handlebars
                    {
                        if (OpenContentControllerFactory.Instance.OpenContentGlobalSettingsController.GetFastHandlebars())
                        {
                            model = mf.GetModelAsDictionary();
                        }
                        else
                        {
                            model = mf.GetModelAsDynamic();
                        }
                    }
                    if (!string.IsNullOrEmpty(_renderinfo.Template.Manifest.DetailMetaTitle))
                    {
                        HandlebarsEngine hbEngine = new HandlebarsEngine();
                        //page.Title
                        MetaTitle = hbEngine.Execute(_renderinfo.Template.Manifest.DetailMetaTitle, model);
                    }
                    if (!string.IsNullOrEmpty(_renderinfo.Template.Manifest.DetailMetaDescription))
                    {
                        HandlebarsEngine hbEngine = new HandlebarsEngine();
                        //PageUtils.SetPageDescription(page, hbEngine.Execute(_renderinfo.Template.Manifest.DetailMetaDescription, model));
                        MetaDescription = hbEngine.Execute(_renderinfo.Template.Manifest.DetailMetaDescription, model);
                    }
                    if (!string.IsNullOrEmpty(_renderinfo.Template.Manifest.DetailMeta))
                    {
                        HandlebarsEngine hbEngine = new HandlebarsEngine();
                        //PageUtils.SetPageMeta(page, hbEngine.Execute(_renderinfo.Template.Manifest.DetailMeta, model));
                        MetaOther = hbEngine.Execute(_renderinfo.Template.Manifest.DetailMeta, model);
                    }
                    return(ExecuteTemplate(page, templateManifest, files, templateUri, model));
                }
                else
                {
                    return("");
                }
            }
            else
            {
                return("");
            }
        }
コード例 #18
0
 public ModelFactorySingle(IDataItem data, string settingsJson, string physicalTemplateFolder, Manifest.Manifest manifest, TemplateManifest templateManifest, TemplateFiles templateFiles, OpenContentModuleInfo module, PortalSettings portalSettings) :
     base(settingsJson, physicalTemplateFolder, manifest, templateManifest, templateFiles, module, portalSettings)
 {
     this._dataJson = data.Data;
     this._data     = data;
 }
コード例 #19
0
        private string GenerateOutputSingle(Page page, FileUri template, JToken dataJson, string settingsJson, TemplateFiles files)
        {
            if (template != null)
            {
                if (dataJson != null)
                {
                    ModelFactorySingle mf;

                    if (_renderinfo.Data == null)
                    {
                        // demo data
                        mf = new ModelFactorySingle(_renderinfo.DataJson, settingsJson, _renderinfo.Template.Manifest, _renderinfo.Template, files, _module);
                    }
                    else
                    {
                        mf = new ModelFactorySingle(_renderinfo.Data, settingsJson, _renderinfo.Template.Manifest, _renderinfo.Template, files, _module);
                    }
                    if (template.Extension != ".hbs") // razor
                    {
                        dynamic model = mf.GetModelAsDynamic();
                        if (LogContext.IsLogActive)
                        {
                            var logKey = "Render single item template";
                            LogContext.Log(_module.ViewModule.ModuleId, logKey, "template", template.FilePath);
                            LogContext.Log(_module.ViewModule.ModuleId, logKey, "model", model);
                        }
                        return(ExecuteRazor(template, model));
                    }
                    else // handlebars
                    {
                        object model;
                        if (!App.Services.CreateGlobalSettingsRepository(PortalSettings.Current.PortalId).GetLegacyHandlebars())
                        {
                            model = mf.GetModelAsDictionary();
                        }
                        else
                        {
                            model = mf.GetModelAsDynamic();
                        }
                        if (LogContext.IsLogActive)
                        {
                            var logKey = "Render single item template";
                            LogContext.Log(_module.ViewModule.ModuleId, logKey, "template", template.FilePath);
                            LogContext.Log(_module.ViewModule.ModuleId, logKey, "model", model);
                        }
                        HandlebarsEngine hbEngine = new HandlebarsEngine();
                        return(hbEngine.Execute(page, template, model));
                    }
                }
                else
                {
                    return("");
                }
            }
            else
            {
                return("");
            }
        }
コード例 #20
0
        private string GenerateOutput(Page page, FileUri template, JToken dataJson, string settingsJson, TemplateFiles files)
        {
            var ps = PortalSettings.Current;

            if (template != null)
            {
                string templateVirtualFolder  = template.UrlFolder;
                string physicalTemplateFolder = HostingEnvironment.MapPath(templateVirtualFolder);
                if (dataJson != null)
                {
                    ModelFactory mf;
                    int          mainTabId = _settings.DetailTabId > 0 ? _settings.DetailTabId : _settings.TabId;
                    if (_renderinfo.Data == null)
                    {
                        // demo data
                        mf = new ModelFactory(_renderinfo.DataJson, settingsJson, physicalTemplateFolder, _renderinfo.Template.Manifest, _renderinfo.Template, files, _module, ps, mainTabId, _settings.ModuleId);
                    }
                    else
                    {
                        mf = new ModelFactory(_renderinfo.Data, settingsJson, physicalTemplateFolder, _renderinfo.Template.Manifest, _renderinfo.Template, files, _module, ps, mainTabId, _settings.ModuleId);
                    }
                    dynamic model = mf.GetModelAsDynamic();
                    if (LogContext.IsLogActive)
                    {
                        var logKey = "Render single item template";
                        LogContext.Log(_module.ModuleID, logKey, "template", template.FilePath);
                        LogContext.Log(_module.ModuleID, logKey, "model", model);
                    }

                    if (template.Extension != ".hbs")
                    {
                        return(ExecuteRazor(template, model));
                    }
                    else
                    {
                        HandlebarsEngine hbEngine = new HandlebarsEngine();
                        return(hbEngine.Execute(page, template, model));
                    }
                }
                else
                {
                    return("");
                }
            }
            else
            {
                return("");
            }
        }
コード例 #21
0
        private bool BuildPackage(ITaskItem item)
        {
            var res = true;

            try
            {
                var idenity            = item.GetMetadata("Identity");
                var filename           = Path.GetFileName(idenity);
                var packageName        = ProjectName + ".pnp";
                var packedTemplateName = Path.GetFileNameWithoutExtension(filename) + ".xml";

                LogMessage($"Packing template={filename}, package={packageName}");

                XMLFileSystemTemplateProvider provider = new XMLFileSystemTemplateProvider(ProjectDir, "");
                var fsConnector = provider.Connector;
                var template    = provider.GetTemplate(idenity);

                var configManager = new ConfigurationManager();
                var config        = configManager.GetProjectConfiguration(ProjectDir);

                var outFile = Path.Combine(ProjectDir, OutDir, packageName);
                OpenXMLConnector openXml = new OpenXMLConnector(outFile, fsConnector, config.Author);

                //write files
                var files = template.Files != null?template.Files.Select(f => f.Src.ToLower()).ToList() : new List <string>();

                if (TemplateFiles?.Length > 0)
                {
                    files = files.Union(TemplateFiles.Select(t => t.GetMetadata("Identity")?.ToLower())).ToList();
                }

                foreach (var file in files)
                {
                    LogMessage($"Packing file={file}, package={packageName}");
                    var fileName  = Path.GetFileName(file);
                    var container = Path.GetDirectoryName(file);
                    using (var stream = fsConnector.GetFileStream(fileName, container))
                    {
                        if (stream != null)
                        {
                            openXml.SaveFileStream(fileName, container, stream);
                        }
                        else
                        {
                            throw new FileNotFoundException($"Not found: {Path.Combine(ProjectDir, file)}");
                        }
                    }
                }

                var xml = template.ToXML();
                using (var stream = GetStream(xml))
                {
                    openXml.SaveFileStream(packedTemplateName, stream);
                }

                openXml.Commit();
                LogMessage($"Packed successfully.");
            }
            catch (Exception e)
            {
                LogError(e);
                res = false;
            }
            return(res);
        }
コード例 #22
0
        private string GenerateListOutput(Page page, TemplateManifest templateManifest, TemplateFiles files, IEnumerable <IDataItem> dataList, string settingsJson)
        {
            var templateVirtualFolder = templateManifest.ManifestFolderUri.UrlFolder;

            if (!string.IsNullOrEmpty(files.Template))
            {
                string  physicalTemplateFolder = HostingEnvironment.MapPath(templateVirtualFolder);
                FileUri templateUri            = CheckFiles(templateManifest, files);
                if (dataList != null)
                {
                    int          mainTabId = _settings.DetailTabId > 0 ? _settings.DetailTabId : _settings.TabId;
                    ModelFactory mf        = new ModelFactory(dataList, settingsJson, physicalTemplateFolder, _renderinfo.Template.Manifest, _renderinfo.Template, files, _module, PortalSettings.Current, mainTabId, _settings.ModuleId);
                    dynamic      model     = mf.GetModelAsDynamic();
                    return(ExecuteTemplate(page, templateManifest, files, templateUri, model));
                }
            }
            return("");
        }
コード例 #23
0
 public ModelFactoryMultiple(IEnumerable <IDataItem> dataList, string settingsJson, Manifest.Manifest manifest, TemplateManifest templateManifest, TemplateFiles templateFiles, OpenContentModuleConfig module) :
     base(settingsJson, manifest, templateManifest, templateFiles, module)
 {
     this._dataList = dataList;
 }
コード例 #24
0
 public ModelFactoryMultiple(IEnumerable <IDataItem> dataList, string settingsJson, string physicalTemplateFolder, Manifest.Manifest manifest, TemplateManifest templateManifest, TemplateFiles templateFiles, OpenContentModuleInfo moduleinfo, PortalSettings portalSettings) :
     base(settingsJson, manifest, templateManifest, templateFiles, OpenContentModuleConfig.Create(moduleinfo.ModuleId, moduleinfo.TabId, portalSettings))
 {
     this._dataList = dataList;
 }
コード例 #25
0
 public ModelFactorySingle(IDataItem data, string settingsJson, Manifest.Manifest manifest, TemplateManifest templateManifest, TemplateFiles templateFiles, OpenContentModuleConfig module) :
     base(settingsJson, manifest, templateManifest, templateFiles, module)
 {
     this._dataJson = data.Data;
     this._data     = data;
 }
コード例 #26
0
 public ModelFactoryMultiple(IEnumerable <IDataItem> dataList, string settingsJson, string physicalTemplateFolder, Manifest.Manifest manifest, TemplateManifest templateManifest, TemplateFiles templateFiles, OpenContentModuleInfo module, int portalId, string cultureCode) :
     base(settingsJson, physicalTemplateFolder, manifest, templateManifest, templateFiles, module, portalId, cultureCode)
 {
     this._dataList = dataList;
 }
コード例 #27
0
        private string GenerateOutputDetail(Page page, TemplateManifest templateManifest, TemplateFiles files, JToken dataJson, string settingsJson)
        {
            // detail template
            if (!string.IsNullOrEmpty(files.Template))
            {
                FileUri templateUri = CheckFiles(templateManifest, files);

                if (dataJson != null)
                {
                    var mf = new ModelFactorySingle(_renderinfo.Data, settingsJson, _renderinfo.Template.Manifest, _renderinfo.Template, files, _module);
                    mf.Detail = true;
                    object model;
                    if (templateUri.Extension != ".hbs") // razor
                    {
                        model = mf.GetModelAsDynamic();
                    }
                    else // handlebars
                    {
                        if (!App.Services.CreateGlobalSettingsRepository(PortalSettings.Current.PortalId).GetLegacyHandlebars())
                        {
                            model = mf.GetModelAsDictionary();
                        }
                        else
                        {
                            model = mf.GetModelAsDynamic();
                        }
                    }
                    if (!string.IsNullOrEmpty(_renderinfo.Template.Manifest.DetailMetaTitle))
                    {
                        HandlebarsEngine hbEngine = new HandlebarsEngine();
                        //page.Title
                        MetaTitle = hbEngine.Execute(_renderinfo.Template.Manifest.DetailMetaTitle, model);
                    }
                    if (!string.IsNullOrEmpty(_renderinfo.Template.Manifest.DetailMetaDescription))
                    {
                        HandlebarsEngine hbEngine = new HandlebarsEngine();
                        //PageUtils.SetPageDescription(page, hbEngine.Execute(_renderinfo.Template.Manifest.DetailMetaDescription, model));
                        MetaDescription = hbEngine.Execute(_renderinfo.Template.Manifest.DetailMetaDescription, model);
                    }
                    if (!string.IsNullOrEmpty(_renderinfo.Template.Manifest.DetailMeta))
                    {
                        HandlebarsEngine hbEngine = new HandlebarsEngine();
                        //PageUtils.SetPageMeta(page, hbEngine.Execute(_renderinfo.Template.Manifest.DetailMeta, model));
                        MetaOther = hbEngine.Execute(_renderinfo.Template.Manifest.DetailMeta, model);
                    }
                    return(ExecuteTemplate(page, templateManifest, files, templateUri, model));
                }
                else
                {
                    return("");
                }
            }
            else
            {
                return("");
            }
        }