Exemple #1
0
        public IViewEngine CreateThemeViewEngine(CreateThemeViewEngineParams parameters)
        {
            var partialViewLocationFormats = new[]
            {
                parameters.VirtualPath + "/Views/{0}.php"
            };

            var areaPartialViewLocationFormats = new[]
            {
                parameters.VirtualPath + "/Views/{2}/{1}/{0}.php"
            };

            var viewEngine = new PhpViewEngine(_phpRuntimeWork)
            {
                MasterLocationFormats          = DisabledFormats,
                ViewLocationFormats            = DisabledFormats,
                PartialViewLocationFormats     = partialViewLocationFormats,
                AreaMasterLocationFormats      = DisabledFormats,
                AreaViewLocationFormats        = DisabledFormats,
                AreaPartialViewLocationFormats = areaPartialViewLocationFormats,
                ViewLocationCache = new ThemeViewLocationCache(parameters.VirtualPath),
            };

            return(viewEngine);
        }
Exemple #2
0
        public IViewEngine CreateThemeViewEngine(CreateThemeViewEngineParams parameters)
        {
            var partialViewLocationFormats = new[]
            {
                parameters.VirtualPath + "/Views/{0}.liquid"
            };

            var areaPartialViewLocationFormats = new[]
            {
                parameters.VirtualPath + "/Views/{2}/{1}/{0}.liquid"
            };

            var viewEngine = new LiquidViewEngine(_liquidTemplateServiceWork)
            {
                MasterLocationFormats          = DisabledFormats,
                ViewLocationFormats            = DisabledFormats,
                PartialViewLocationFormats     = partialViewLocationFormats,
                AreaMasterLocationFormats      = DisabledFormats,
                AreaViewLocationFormats        = DisabledFormats,
                AreaPartialViewLocationFormats = areaPartialViewLocationFormats,
                ViewLocationCache = new ThemeViewLocationCache(parameters.VirtualPath),
            };

            return(viewEngine);
        }
Exemple #3
0
        /// <summary>
        /// 创建主题视图引擎。
        /// </summary>
        /// <param name="parameters">创建主题视图引擎所需的参数。</param>
        /// <returns>视图引擎。</returns>
        public IViewEngine CreateThemeViewEngine(CreateThemeViewEngineParams parameters)
        {
            // /Views/{area}/{controller}/{viewName}

            // /Views/{partialName}
            // /Views/"DisplayTemplates/"+{templateName}
            // /Views/"EditorTemplates/+{templateName}
            var partialViewLocationFormats = new[] {
                parameters.VirtualPath + "/Views/{0}.cshtml",
            };

            var areaPartialViewLocationFormats = new[] {
                parameters.VirtualPath + "/Views/{2}/{1}/{0}.cshtml",
            };

            var viewEngine = new RazorViewEngine
            {
                MasterLocationFormats          = DisabledFormats,
                ViewLocationFormats            = DisabledFormats,
                PartialViewLocationFormats     = partialViewLocationFormats,
                AreaMasterLocationFormats      = DisabledFormats,
                AreaViewLocationFormats        = DisabledFormats,
                AreaPartialViewLocationFormats = areaPartialViewLocationFormats,
                ViewLocationCache = new ThemeViewLocationCache(parameters.VirtualPath),
            };

            return(viewEngine);
        }
        private IEnumerable <IViewEngine> CreateThemeViewEngines(ExtensionDescriptor theme)
        {
            var themeParams = new CreateThemeViewEngineParams {
                VirtualPath = theme.Location
            };

            return(viewEngineProviders.Select(vep => vep.CreateThemeViewEngine(themeParams)));
        }
        public new IViewEngine CreateThemeViewEngine(CreateThemeViewEngineParams parameters)
        {
            // This replicates the implementation from the base class, while adding the paths for
            // the alternates for the tenant. Ideally, we would get the viewEngine from
            // base.CreateThemeViewEngine(parameters) and change it dynamically.

            // We have to get this as dynamic because IViewEngine doesn't expose the properties
            // we need to alter.
            var baseEngine = (dynamic)base.CreateThemeViewEngine(parameters);

            // parameters.VirtualPath is
            // ~/Themes/Theme.Id
            // We need only the Theme.Id for our tenant alternates
            var themeId        = parameters.VirtualPath.Substring(9);
            var alternatesPath = Path.Combine(_alternateFolderBasePath, themeId)
                                 .Replace(Path.DirectorySeparatorChar, '/');

            // compute paths that we need to add BEFORE the paths computed by the base implementation
            var partialViewLocationFormats = new List <string>()
            {
                alternatesPath + "/Views/{0}.cshtml",
                alternatesPath + "/Views/{1}/{0}.cshtml",
            };

            // add "original" paths
            partialViewLocationFormats.AddRange((IEnumerable <string>)baseEngine.PartialViewLocationFormats);
            // replace the paths in the base engine
            baseEngine.PartialViewLocationFormats = partialViewLocationFormats.ToArray();

            // compute paths that we need to add BEFORE the paths computed by the base implementation
            var areaPartialViewLocationFormats = new List <string>()
            {
                alternatesPath + "/Views/{2}/{1}/{0}.cshtml",
            };

            // add "original" paths
            areaPartialViewLocationFormats.AddRange((IEnumerable <string>)baseEngine.AreaPartialViewLocationFormats);
            // replace the paths in the base engine
            baseEngine.AreaPartialViewLocationFormats = areaPartialViewLocationFormats.ToArray();

            // change the cache location for the views, otherwise the view engine will still mess things up
            // down the line
            baseEngine.ViewLocationCache = new ThemeViewLocationCache(alternatesPath);

            return((RazorViewEngine)baseEngine);
        }
        public IViewEngine CreateThemeViewEngine(CreateThemeViewEngineParams parameters)
        {
            // Area: if "area" in RouteData. Url hit for module...
            // Area-Layout Paths - no-op because LayoutViewEngine uses multi-pass instead of layout paths
            // Area-View Paths - no-op because LayoutViewEngine relies entirely on Partial view resolution
            // Area-Partial Paths - enable theming views associated with a module based on the route

            // Layout Paths - no-op because LayoutViewEngine uses multi-pass instead of layout paths
            // View Paths - no-op because LayoutViewEngine relies entirely on Partial view resolution
            // Partial Paths -
            //   {area}/{controller}/

            // for "routed" request views...
            // enable /Views/{area}/{controller}/{viewName}

            // enable /Views/{partialName}
            // enable /Views/"DisplayTemplates/"+{templateName}
            // enable /Views/"EditorTemplates/+{templateName}
            var partialViewLocationFormats = new[] {
                parameters.VirtualPath + "/Views/{0}.cshtml",
                parameters.VirtualPath + "/Views/{1}/{0}.cshtml",
            };

            //Logger.Debug("PartialViewLocationFormats (theme): \r\n\t-{0}", string.Join("\r\n\t-", partialViewLocationFormats));

            var areaPartialViewLocationFormats = new[] {
                parameters.VirtualPath + "/Views/{2}/{1}/{0}.cshtml",
            };

            //Logger.Debug("AreaPartialViewLocationFormats (theme): \r\n\t-{0}", string.Join("\r\n\t-", areaPartialViewLocationFormats));

            var viewEngine = new RazorViewEngine
            {
                MasterLocationFormats          = DisabledFormats,
                ViewLocationFormats            = DisabledFormats,
                PartialViewLocationFormats     = partialViewLocationFormats,
                AreaMasterLocationFormats      = DisabledFormats,
                AreaViewLocationFormats        = DisabledFormats,
                AreaPartialViewLocationFormats = areaPartialViewLocationFormats,
                ViewLocationCache = new ThemeViewLocationCache(parameters.VirtualPath),
            };

            return(viewEngine);
        }
        public IViewEngine CreateThemeViewEngine(CreateThemeViewEngineParams parameters)
        {
            // Area: if "area" in RouteData. Url hit for module...
            // Area-Layout Paths - no-op because LayoutViewEngine uses multi-pass instead of layout paths
            // Area-View Paths - no-op because LayoutViewEngine relies entirely on Partial view resolution
            // Area-Partial Paths - enable theming views associated with a module based on the route

            // Layout Paths - no-op because LayoutViewEngine uses multi-pass instead of layout paths
            // View Paths - no-op because LayoutViewEngine relies entirely on Partial view resolution
            // Partial Paths -
            //   {area}/{controller}/

            // for "routed" request views...
            // enable /Views/{area}/{controller}/{viewName}

            // enable /Views/{partialName}
            // enable /Views/"DisplayTemplates/"+{templateName}
            // enable /Views/"EditorTemplates/+{templateName}
            var partialViewLocationFormats = new[] {
                parameters.VirtualPath + "/Views/{0}.ascx",
                parameters.VirtualPath + "/Views/{0}.aspx",
            };

            //Logger.Debug("PartialViewLocationFormats (theme): \r\n\t-{0}", string.Join("\r\n\t-", partialViewLocationFormats));

            var areaPartialViewLocationFormats = new[] {
                parameters.VirtualPath + "/Views/{2}/{1}/{0}.ascx",
                parameters.VirtualPath + "/Views/{2}/{1}/{0}.aspx",
            };

            //Logger.Debug("AreaPartialViewLocationFormats (theme): \r\n\t-{0}", string.Join("\r\n\t-", areaPartialViewLocationFormats));

            var viewEngine = new WebFormViewEngine {
                MasterLocationFormats = DisabledFormats,
                ViewLocationFormats = DisabledFormats,
                PartialViewLocationFormats = partialViewLocationFormats,
                AreaMasterLocationFormats = DisabledFormats,
                AreaViewLocationFormats = DisabledFormats,
                AreaPartialViewLocationFormats = areaPartialViewLocationFormats,
                ViewLocationCache = new ThemeViewLocationCache(parameters.VirtualPath),
            };

            return viewEngine;
        }
        public IViewEngine CreateThemeViewEngine(CreateThemeViewEngineParams parameters) {
            var partialViewLocationFormats = new[] {
                parameters.VirtualPath + "/Views/{0}.cshtml",
            };

            var areaPartialViewLocationFormats = new[] {
                parameters.VirtualPath + "/Views/{2}/{1}/{0}.cshtml",
            };

            var viewEngine = new RazorViewEngine {
                MasterLocationFormats = DisabledFormats,
                ViewLocationFormats = DisabledFormats,
                PartialViewLocationFormats = partialViewLocationFormats,
                AreaMasterLocationFormats = DisabledFormats,
                AreaViewLocationFormats = DisabledFormats,
                AreaPartialViewLocationFormats = areaPartialViewLocationFormats,
                ViewLocationCache = new ThemeViewLocationCache(parameters.VirtualPath),
            };

            return viewEngine;
        }
 private IEnumerable<IViewEngine> CreateThemeViewEngines(ExtensionDescriptor theme) {
     var themeLocation = theme.Location + "/" + theme.Id;
     var themeParams = new CreateThemeViewEngineParams {VirtualPath = themeLocation};
     return _viewEngineProviders.Select(vep => vep.CreateThemeViewEngine(themeParams));
 }
        /// <summary>
        /// 创建主题视图引擎。
        /// </summary>
        /// <param name="parameters">创建主题视图引擎所需的参数。</param>
        /// <returns>视图引擎。</returns>
        public IViewEngine CreateThemeViewEngine(CreateThemeViewEngineParams parameters)
        {
            // /Views/{area}/{controller}/{viewName}

            // /Views/{partialName}
            // /Views/"DisplayTemplates/"+{templateName}
            // /Views/"EditorTemplates/+{templateName}
            var partialViewLocationFormats = new[] {
                parameters.VirtualPath + "/Views/{0}.cshtml",
            };

            var areaPartialViewLocationFormats = new[] {
                parameters.VirtualPath + "/Views/{2}/{1}/{0}.cshtml",
            };

            var viewEngine = new RazorViewEngine
            {
                MasterLocationFormats = DisabledFormats,
                ViewLocationFormats = DisabledFormats,
                PartialViewLocationFormats = partialViewLocationFormats,
                AreaMasterLocationFormats = DisabledFormats,
                AreaViewLocationFormats = DisabledFormats,
                AreaPartialViewLocationFormats = areaPartialViewLocationFormats,
                ViewLocationCache = new ThemeViewLocationCache(parameters.VirtualPath),
            };

            return viewEngine;
        }