Example #1
0
        protected override IEnumerable <string> GetCurrentFiles(PathDefinition definition, string path)
        {
            if (definition == null)
            {
                throw new ArgumentNullException("definition");
            }

            if (path == null)
            {
                throw new ArgumentNullException("path");
            }

            var cacheManager = this.GetCacheManager();
            var key          = this.GetFilesCacheKey(definition, path);
            var result       = cacheManager[key] as IEnumerable <string>;

            if (result == null)
            {
                lock (this.getFilesLock)
                {
                    result = cacheManager[key] as IEnumerable <string>;
                    if (result == null)
                    {
                        var controllerName = path.Split(new char[] { '/' }, StringSplitOptions.RemoveEmptyEntries).LastOrDefault();

                        if (controllerName == null)
                        {
                            return(null);
                        }

                        var controllers = this.GetControllersFullNames(definition);

                        if (controllers == null)
                        {
                            return(null);
                        }

                        var dynamicType = ControllerExtensions.GetDynamicContentType(controllerName);
                        var areaName    = definition.ResolverName;

                        // case for dynamic type
                        if (dynamicType != null)
                        {
                            var moduleProvider = Telerik.Sitefinity.DynamicModules.Builder.ModuleBuilderManager.GetManager().Provider;
                            var dynamicModule  = moduleProvider.GetDynamicModule(dynamicType.ParentModuleId);
                            areaName = this.GetDynamicTypeAreaName(dynamicModule.Title, dynamicType.DisplayName);
                        }

                        result = this.GetViewPaths(path, controllers, areaName);

                        cacheManager.Add(key, result, Microsoft.Practices.EnterpriseLibrary.Caching.CacheItemPriority.Normal, null, this.GetControlPresentationsCacheExpirations());
                    }
                }
            }

            return(result);
        }
        /// <summary>
        /// Gets the name of the area.
        /// </summary>
        /// <param name="controllerName">Name of the controller.</param>
        /// <returns></returns>
        private string GetAreaName(string controllerName)
        {
            var    dynamicType = ControllerExtensions.GetDynamicContentType(controllerName);
            string areaName    = controllerName;

            // case for dynamic types
            if (dynamicType != null)
            {
                var moduleProvider = Telerik.Sitefinity.DynamicModules.Builder.ModuleBuilderManager.GetManager().Provider;
                var dynamicModule  = moduleProvider.GetDynamicModule(dynamicType.ParentModuleId);
                areaName = this.GetDynamicTypeAreaName(dynamicModule.Title, dynamicType.DisplayName);
            }

            return(areaName);
        }
Example #3
0
        /// <summary>
        /// Gets the display name of the <see cref="DynamicModuleType"/>
        /// </summary>
        /// <returns><see cref="DynamicModuleType"/>'s display name</returns>
        private string GetDynamicContentTypeDisplayName()
        {
            var widgetName = this.ViewBag.WidgetName as string;

            if (widgetName.IsNullOrEmpty())
            {
                return(null);
            }

            var dynamicType = ControllerExtensions.GetDynamicContentType(widgetName);

            if (dynamicType != null)
            {
                return(dynamicType.DisplayName);
            }

            return(null);
        }
Example #4
0
        protected virtual ControlPresentation GetControlPresentation(PathDefinition virtualPathDefinition, string virtualPath)
        {
            if (virtualPathDefinition == null)
            {
                throw new ArgumentNullException("virtualPathDefinition");
            }

            if (virtualPath == null)
            {
                throw new ArgumentNullException("virtualPath");
            }

            var extension = Path.GetExtension(virtualPath);

            /// TODO: Fix - currently allowed only for razor views
            if (extension == MvcConstants.RazorFileNameExtension)
            {
                var name        = Path.GetFileNameWithoutExtension(virtualPath);
                var controllers = this.GetControllersFullNames(virtualPathDefinition);

                if (controllers == null)
                {
                    return(null);
                }

                var pathNames = virtualPath.Split(new char[] { '/' }, StringSplitOptions.RemoveEmptyEntries);
                if (pathNames == null)
                {
                    return(null);
                }

                string controllerName;
                if (pathNames.Length > 0)
                {
                    controllerName = pathNames[pathNames.Length - 2];
                }
                else
                {
                    controllerName = string.Empty;
                }

                var dynamicType = ControllerExtensions.GetDynamicContentType(controllerName);

                string areaName;

                // case for dynamic types
                if (dynamicType != null)
                {
                    var moduleProvider = Telerik.Sitefinity.DynamicModules.Builder.ModuleBuilderManager.GetManager().Provider;
                    var dynamicModule  = moduleProvider.GetDynamicModule(dynamicType.ParentModuleId);
                    areaName = this.GetDynamicTypeAreaName(dynamicModule.Title, dynamicType.DisplayName);
                }
                else
                {
                    areaName = virtualPathDefinition.ResolverName;
                }

                return(this.GetControlPresentationItem(controllers, name, areaName));
            }

            return(null);
        }