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); }
/// <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); }
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); }