diff --git a/AssemblyInfoShare/SharedAssemblyInfo.cs b/AssemblyInfoShare/SharedAssemblyInfo.cs index 4602563ba..7278ccdc5 100644 Binary files a/AssemblyInfoShare/SharedAssemblyInfo.cs and b/AssemblyInfoShare/SharedAssemblyInfo.cs differ diff --git a/Telerik.Sitefinity.Frontend.Data/Telerik.Sitefinity.Frontend.Data.csproj b/Telerik.Sitefinity.Frontend.Data/Telerik.Sitefinity.Frontend.Data.csproj index fd2fabac6..b62db9292 100644 --- a/Telerik.Sitefinity.Frontend.Data/Telerik.Sitefinity.Frontend.Data.csproj +++ b/Telerik.Sitefinity.Frontend.Data/Telerik.Sitefinity.Frontend.Data.csproj @@ -18,7 +18,7 @@ SAK SAK - $(SolutionDir)\packages\Telerik.DataAccess.Fluent.2018.0.1127.1\tools\enhancer\enhancer.exe + $(SolutionDir)\packages\Telerik.DataAccess.Fluent.2020.0.428.1\tools\enhancer\enhancer.exe true @@ -52,17 +52,17 @@ - - ..\packages\Telerik.DataAccess.Core.2018.0.1127.1\lib\net40\Telerik.OpenAccess.dll + + ..\packages\Telerik.DataAccess.Core.2020.0.428.1\lib\net40\Telerik.OpenAccess.dll - - ..\packages\Telerik.DataAccess.Core.2018.0.1127.1\lib\net40\Telerik.OpenAccess.35.Extensions.dll + + ..\packages\Telerik.DataAccess.Core.2020.0.428.1\lib\net40\Telerik.OpenAccess.35.Extensions.dll - - ..\packages\Telerik.DataAccess.Core.2018.0.1127.1\lib\net40\Telerik.OpenAccess.40.Extensions.dll + + ..\packages\Telerik.DataAccess.Core.2020.0.428.1\lib\net40\Telerik.OpenAccess.40.Extensions.dll - - ..\packages\Telerik.DataAccess.Core.2018.0.1127.1\lib\net40\Telerik.OpenAccess.Runtime.dll + + ..\packages\Telerik.DataAccess.Core.2020.0.428.1\lib\net40\Telerik.OpenAccess.Runtime.dll @@ -86,15 +86,15 @@ - ..\packages\Telerik.Sitefinity.Core.13.0.7300\lib\net472\Telerik.Sitefinity.Model.dll + ..\packages\Telerik.Sitefinity.Core.13.1.7400\lib\net472\Telerik.Sitefinity.Model.dll True - ..\packages\Telerik.Sitefinity.Core.13.0.7300\lib\net472\Telerik.Sitefinity.dll + ..\packages\Telerik.Sitefinity.Core.13.1.7400\lib\net472\Telerik.Sitefinity.dll True - ..\packages\Telerik.Sitefinity.Core.13.0.7300\lib\net472\Telerik.Sitefinity.Utilities.dll + ..\packages\Telerik.Sitefinity.Core.13.1.7400\lib\net472\Telerik.Sitefinity.Utilities.dll True diff --git a/Telerik.Sitefinity.Frontend.Data/packages.config b/Telerik.Sitefinity.Frontend.Data/packages.config index 54a9e1693..c74cd8950 100644 --- a/Telerik.Sitefinity.Frontend.Data/packages.config +++ b/Telerik.Sitefinity.Frontend.Data/packages.config @@ -1,6 +1,6 @@  - - - + + + \ No newline at end of file diff --git a/Telerik.Sitefinity.Frontend/Designers/Scripts/page-editor-services.js b/Telerik.Sitefinity.Frontend/Designers/Scripts/page-editor-services.js index 112b19ac0..b18544ea0 100644 --- a/Telerik.Sitefinity.Frontend/Designers/Scripts/page-editor-services.js +++ b/Telerik.Sitefinity.Frontend/Designers/Scripts/page-editor-services.js @@ -72,7 +72,7 @@ */ var getUrl = function () { if (!httpGetUrl) { - httpGetUrl = widgetContext.webServiceUrl + widgetContext.widgetId + '/?pageId=' + widgetContext.pageId; + httpGetUrl = widgetContext.webServiceUrl + widgetContext.widgetId + '/?pageId=' + widgetContext.pageId + "&mediaType=" + widgetContext.mediaType; } return httpGetUrl; }; diff --git a/Telerik.Sitefinity.Frontend/Designers/Scripts/page-editor.js b/Telerik.Sitefinity.Frontend/Designers/Scripts/page-editor.js index 25f574df2..c664c7aec 100644 --- a/Telerik.Sitefinity.Frontend/Designers/Scripts/page-editor.js +++ b/Telerik.Sitefinity.Frontend/Designers/Scripts/page-editor.js @@ -153,6 +153,10 @@ var sitefinity = sitefinity || {}; if (this.widgetContext.ModuleName) { url += '&moduleName=' + this.widgetContext.ModuleName; } + if (this.widgetContext.MediaType) { + url += '&mediaType=' + this.widgetContext.MediaType; + } + $.get(url) .done($.proxy(this.renderDialog, this)) .fail(function (data) { diff --git a/Telerik.Sitefinity.Frontend/FilesMonitoring/GridFileManager.cs b/Telerik.Sitefinity.Frontend/FilesMonitoring/GridFileManager.cs index 00725ce4b..7b885edb5 100644 --- a/Telerik.Sitefinity.Frontend/FilesMonitoring/GridFileManager.cs +++ b/Telerik.Sitefinity.Frontend/FilesMonitoring/GridFileManager.cs @@ -100,10 +100,23 @@ public void FileRenamed(string newFileName, string oldFileName, string newFilePa var fileMonitorDataManager = FileMonitorDataManager.GetManager(); var fileData = fileMonitorDataManager.GetFilesData().Where(file => file.FilePath.Equals(oldFilePath, StringComparison.OrdinalIgnoreCase)).FirstOrDefault(); - if (this.AddToToolboxAndFileData(fileMonitorDataManager, newFileName, newFilePath, packageName, fileData, oldFileName)) + if (fileData != null) { - this.WidgetRegistrator.UpdateControlData(newFileName, oldFileName); - fileMonitorDataManager.SaveChanges(); + fileData.FilePath = newFilePath; + if (this.AddToToolboxAndFileData(fileMonitorDataManager, newFileName, newFilePath, packageName, fileData, oldFileName)) + { + this.WidgetRegistrator.UpdateControlData(newFileName, oldFileName); + fileMonitorDataManager.SaveChanges(); + } + else + { + fileMonitorDataManager.Delete(fileData); + fileMonitorDataManager.SaveChanges(); + } + } + else + { + this.FileAdded(newFileName, newFilePath, null, packageName); } } @@ -147,7 +160,7 @@ private bool IsFileInValidFolder(string filePath, string packageName = "") expectedGridFolderStructure = expectedGridFolderStructure.Insert(0, packageName + Path.DirectorySeparatorChar); var resourcePackagesPath = FrontendManager.VirtualPathBuilder.MapPath(string.Concat("~/", PackageManager.PackagesFolder)); - if (directory.FullName.EndsWith(expectedGridFolderStructure, StringComparison.OrdinalIgnoreCase) && + if (directory.FullName.EndsWith(expectedGridFolderStructure, StringComparison.OrdinalIgnoreCase) && ( directory.FullName.StartsWith(HostingEnvironment.ApplicationPhysicalPath, StringComparison.OrdinalIgnoreCase) || directory.FullName.StartsWith(resourcePackagesPath, StringComparison.OrdinalIgnoreCase) diff --git a/Telerik.Sitefinity.Frontend/FilesMonitoring/LayoutFileManager.cs b/Telerik.Sitefinity.Frontend/FilesMonitoring/LayoutFileManager.cs index d7f400836..c18b6f2f8 100644 --- a/Telerik.Sitefinity.Frontend/FilesMonitoring/LayoutFileManager.cs +++ b/Telerik.Sitefinity.Frontend/FilesMonitoring/LayoutFileManager.cs @@ -184,9 +184,11 @@ internal static void UpdateDefaultTemplateImages(LibrariesManager librariesManag var templateThumbsImageLibrary = librariesManager.GetAlbums().FirstOrDefault(lib => lib.Id == LibrariesModule.DefaultTemplateThumbnailsLibraryId); if (templateThumbsImageLibrary != null) { + var images = templateThumbsImageLibrary.Images().ToList(); foreach (var imageToUpgrade in imagesToUpgrade) { - var image = templateThumbsImageLibrary.Images().FirstOrDefault(i => i.Title.Equals("MVC_" + imageToUpgrade, StringComparison.OrdinalIgnoreCase) && i.Status == GenericContent.Model.ContentLifecycleStatus.Master); + var image = images.FirstOrDefault(i => i.Title == "MVC_" + imageToUpgrade && i.Status == GenericContent.Model.ContentLifecycleStatus.Master); + if (image != null) { var iconResource = string.Format(CultureInfo.InvariantCulture, LayoutFileManager.PageTemplateIconPathFormat, imageToUpgrade); @@ -461,7 +463,7 @@ private void CreateTemplate(string packageName, string fileNameWithoutExtension, template.Title = title; template.Framework = Pages.Model.PageTemplateFramework.Mvc; template.Theme = ThemeController.NoThemeName; - var languageData = pageManager.CreatePublishedInvarianLanguageData(); + var languageData = pageManager.CreatePublishedLanguageData(); template.LanguageData.Add(languageData); this.AttachImageToTemplate(template, pageManager, image ?? "default"); @@ -537,7 +539,7 @@ private Image GetTemplateImage(PageTemplate template, string imageName) if (templateThumbsImageLibrary != null) { // Try get image from library - image = templateThumbsImageLibrary.Images().FirstOrDefault(i => i.Title.Equals("MVC_" + imageName, StringComparison.OrdinalIgnoreCase) && i.Status == GenericContent.Model.ContentLifecycleStatus.Master); + image = templateThumbsImageLibrary.Images().FirstOrDefault(i => i.Title == "MVC_" + imageName && i.Status == GenericContent.Model.ContentLifecycleStatus.Master); if (image == null) { // Check if image is in the resources and upload it diff --git a/Telerik.Sitefinity.Frontend/Mvc/Controllers/CompositePrecompiledMvcEngineWrapper.cs b/Telerik.Sitefinity.Frontend/Mvc/Controllers/CompositePrecompiledMvcEngineWrapper.cs index a37236f47..6432268f4 100644 --- a/Telerik.Sitefinity.Frontend/Mvc/Controllers/CompositePrecompiledMvcEngineWrapper.cs +++ b/Telerik.Sitefinity.Frontend/Mvc/Controllers/CompositePrecompiledMvcEngineWrapper.cs @@ -87,7 +87,7 @@ internal static string ComputeHash(Stream stream) } } - internal IEnumerable GetViews(ControllerContext controllerContext, IEnumerable viewLocations) + internal IEnumerable GetViews(IEnumerable viewLocations) { var views = new List(); if (Config.Get().DisablePrecompilation) diff --git a/Telerik.Sitefinity.Frontend/Mvc/Controllers/ContentPagerController.cs b/Telerik.Sitefinity.Frontend/Mvc/Controllers/ContentPagerController.cs index 9a921bcc0..c3941a4e4 100644 --- a/Telerik.Sitefinity.Frontend/Mvc/Controllers/ContentPagerController.cs +++ b/Telerik.Sitefinity.Frontend/Mvc/Controllers/ContentPagerController.cs @@ -117,7 +117,7 @@ private void TryStorePaginationUrls(PagerViewModel model) nextUrl = null; string previousUrl; - if (model.CurrentPage > 1) + if (model.CurrentPage > 1 && model.CurrentPage <= model.TotalPagesCount) if (highlightedIndex > 1) previousUrl = ContentPagerController.PageNodeUrl(model.PagerNodes[highlightedIndex - 2], model.RedirectUrlTemplate); else diff --git a/Telerik.Sitefinity.Frontend/Mvc/Controllers/DesignerController.cs b/Telerik.Sitefinity.Frontend/Mvc/Controllers/DesignerController.cs index dab20bc9b..67be1f5a7 100644 --- a/Telerik.Sitefinity.Frontend/Mvc/Controllers/DesignerController.cs +++ b/Telerik.Sitefinity.Frontend/Mvc/Controllers/DesignerController.cs @@ -8,6 +8,8 @@ using Telerik.Sitefinity.Frontend.Mvc.Infrastructure.Controllers.Attributes; using Telerik.Sitefinity.Frontend.Mvc.Models; using Telerik.Sitefinity.Frontend.Mvc.StringResources; +using Telerik.Sitefinity.Modules; +using Telerik.Sitefinity.Modules.Forms; using Telerik.Sitefinity.Modules.Pages; using Telerik.Sitefinity.Pages.Model; using Telerik.Sitefinity.Services; @@ -33,12 +35,14 @@ public virtual ActionResult Master(string widgetName, string moduleName = null) { this.GetHttpContext().Items[SystemManager.IsBackendRequestKey] = true; - var controlId = this.Request != null ? this.Request["controlId"] ?? Guid.Empty.ToString() : Guid.Empty.ToString(); + var controlId = this.Request != null ? this.Request["controlId"] ?? Guid.Empty.ToString() : Guid.Empty.ToString(); + var mediaType = this.Request != null ? this.Request["mediaType"] ?? DesignMediaType.Page.ToString() : DesignMediaType.Page.ToString(); this.ViewBag.ControlName = widgetName; this.ViewBag.ControlId = controlId; + this.ViewBag.MediaType = mediaType; - var model = this.GetModel(widgetName, Guid.Parse(controlId), moduleName); + var model = this.GetModel(widgetName, Guid.Parse(controlId), moduleName, (DesignMediaType)Enum.Parse(typeof(DesignMediaType), mediaType)); return this.View(DesignerController.DefaultView, model); } @@ -55,15 +59,17 @@ public new virtual ActionResult View(string widgetName, string viewType) { this.GetHttpContext().Items[SystemManager.IsBackendRequestKey] = true; - var viewName = DesignerController.DesignerViewTemplate.Arrange(viewType); + var viewName = DesignerController.DesignerViewTemplate.Arrange(viewType); + var mediaType = this.Request != null ? this.Request["mediaType"] ?? DesignMediaType.Page.ToString() : DesignMediaType.Page.ToString(); + var designMediaType = (DesignMediaType)Enum.Parse(typeof(DesignMediaType), mediaType); - var model = this.GetViewModel(); + var model = this.GetViewModel(designMediaType); // Passing the DesignerModel to the view model var controlIdParam = this.GetControlIdParam(); if (controlIdParam.HasValue) { - ViewBag.DesignerModel = this.GetModel(widgetName, controlIdParam.Value); + ViewBag.DesignerModel = this.GetModel(widgetName, controlIdParam.Value, designMediaType: designMediaType); } return this.PartialView(viewName, model); @@ -98,7 +104,7 @@ protected virtual HttpContextBase GetHttpContext() /// /// Gets the model of the designer. /// - private IDesignerModel GetModel(string widgetName, Guid controlId, string moduleName = null) + private IDesignerModel GetModel(string widgetName, Guid controlId, string moduleName = null, DesignMediaType designMediaType = DesignMediaType.Page) { var viewFilesMappgings = new Dictionary(); @@ -109,13 +115,14 @@ private IDesignerModel GetModel(string widgetName, Guid controlId, string module { "widgetName", widgetName }, { "controlId", controlId }, { "preselectedView", this.Request != null ? this.Request["view"] : null }, - { "viewFilesMappings", viewFilesMappgings } + { "viewFilesMappings", viewFilesMappgings }, + { "mediaType", designMediaType } }; return ControllerModelFactory.GetModel(typeof(DesignerController), constructorParameters); } - private Control GetViewModel() + private Control GetViewModel(DesignMediaType designMediaType) { var controlIdParam = this.GetControlIdParam(); @@ -123,7 +130,7 @@ private Control GetViewModel() return null; var controlId = controlIdParam.Value; - var manager = PageManager.GetManager(); + var manager = this.GetControlManager(designMediaType); var viewModel = manager.LoadControl(manager.GetControl(controlId)); var widgetProxy = viewModel as MvcWidgetProxy; @@ -138,6 +145,18 @@ private Control GetViewModel() return viewModel; } + private IControlManager GetControlManager(DesignMediaType designMediaType) + { + if (designMediaType == DesignMediaType.Form) + { + return FormsManager.GetManager(); + } + else + { + return PageManager.GetManager(); + } + } + private const string DefaultView = "Designer"; private const string DesignerViewTemplate = "DesignerView.{0}"; } diff --git a/Telerik.Sitefinity.Frontend/Mvc/Helpers/HyperLinkHelpers.cs b/Telerik.Sitefinity.Frontend/Mvc/Helpers/HyperLinkHelpers.cs index ebd6a63d4..b292ad59a 100644 --- a/Telerik.Sitefinity.Frontend/Mvc/Helpers/HyperLinkHelpers.cs +++ b/Telerik.Sitefinity.Frontend/Mvc/Helpers/HyperLinkHelpers.cs @@ -106,7 +106,7 @@ public static string GetDetailPageUrl(ItemViewModel item, Guid detailsPageId, bo url = DataResolver.Resolve(item.DataItem, "URL", null, detailsPageId.ToString()); } - url = url.Replace("//", "/"); + url = RemoveDoubleSlash(url); return UrlPath.ResolveUrl(url, true); } @@ -134,8 +134,7 @@ public static string GetDetailPageUrl(ItemViewModel item, Guid detailsPageId, bo } url = url + "?itemIndex=" + itemIndex; - - url = url.Replace("//", "/"); + url = RemoveDoubleSlash(url); return UrlPath.ResolveUrl(url, true); } @@ -199,5 +198,24 @@ public static string BuildTaxonQueryStringParams(ITaxon taxon, string urlKeyPref var taxonQueryStringParams = evaluator.BuildUrl(taxon.Taxonomy.Name, taxonRelativeUrl, taxon.Taxonomy.Name, taxonBuildOptions, UrlEvaluationMode.QueryString, urlKeyPrefix); return taxonQueryStringParams; } + + private static string RemoveDoubleSlash(string url) + { + // If the url is absolute we should not replace first // with /. Ex: http://domain... + Uri result = null; + if (Uri.TryCreate(url, UriKind.Absolute, out result)) + { + UriBuilder builder = new UriBuilder(url); + builder.Path = builder.Path.Replace("//", "/"); + + url = builder.Uri.ToString(); + } + else + { + url = url.Replace("//", "/"); + } + + return url; + } } } diff --git a/Telerik.Sitefinity.Frontend/Mvc/Helpers/ResourceHelper.cs b/Telerik.Sitefinity.Frontend/Mvc/Helpers/ResourceHelper.cs index 5c4038008..d26852ffd 100644 --- a/Telerik.Sitefinity.Frontend/Mvc/Helpers/ResourceHelper.cs +++ b/Telerik.Sitefinity.Frontend/Mvc/Helpers/ResourceHelper.cs @@ -376,7 +376,7 @@ public static MvcHtmlString JsBeautifierScriptReference(this HtmlHelper helper) /// public static MvcHtmlString RenderLangAttribute(this HtmlHelper helper) { - return RenderLangAttribute(helper, CultureInfo.CurrentUICulture.Name); + return RenderLangAttribute(helper, Telerik.Sitefinity.Services.SystemManager.CurrentContext.Culture.Name); } /// diff --git a/Telerik.Sitefinity.Frontend/Mvc/Infrastructure/Controllers/ControllerExtensions.cs b/Telerik.Sitefinity.Frontend/Mvc/Infrastructure/Controllers/ControllerExtensions.cs index c41a801e1..ff625dd56 100644 --- a/Telerik.Sitefinity.Frontend/Mvc/Infrastructure/Controllers/ControllerExtensions.cs +++ b/Telerik.Sitefinity.Frontend/Mvc/Infrastructure/Controllers/ControllerExtensions.cs @@ -563,7 +563,7 @@ private static IEnumerable GetViews(Controller controller, IEnumerable container, HtmlChunk chunk, StringBuil container.Peek().Controls.Add(sectionRenderer); } + else if (chunk.TagName.Equals("meta", StringComparison.OrdinalIgnoreCase)) + { + this.AddIfNotEmpty(currentLiteralText.ToString(), container.Peek()); + currentLiteralText.Clear(); + + this.AddIfNotEmpty(chunk.Html, container.Peek()); + } else if (chunk.TagName == "%@") { //// Ignore @@ -218,6 +225,10 @@ private void HandleCloseTag(Stack container, HtmlChunk chunk, StringBui { //// Ignore } + else if (chunk.TagName.Equals("meta", StringComparison.OrdinalIgnoreCase)) + { + //// Ignore + } else { currentLiteralText.Append(chunk.Html); diff --git a/Telerik.Sitefinity.Frontend/Mvc/Models/ContentModelBase.cs b/Telerik.Sitefinity.Frontend/Mvc/Models/ContentModelBase.cs index d32b1d5a4..deba647df 100644 --- a/Telerik.Sitefinity.Frontend/Mvc/Models/ContentModelBase.cs +++ b/Telerik.Sitefinity.Frontend/Mvc/Models/ContentModelBase.cs @@ -590,7 +590,7 @@ protected virtual ContentLocationSingleItemFilter CompileSingleItemFilterExpress throw new ArgumentException("The type must be Content or Dynamic content"); } - var selectedItemGuid = this.selectedItemsIds.Select(id => new Guid(id)).FirstOrDefault(); + var selectedItemGuid = this.selectedItemsIds.Select(id => new Guid(id)).SingleOrDefault(); var items = this.GetItemsQuery(); IQueryable itemIds = new List().AsQueryable(); @@ -599,13 +599,13 @@ protected virtual ContentLocationSingleItemFilter CompileSingleItemFilterExpress if (typeof(Content).IsAssignableFrom(itemType)) { var typedItems = items.OfType().Where(c => c.Id == selectedItemGuid || c.OriginalContentId == selectedItemGuid); - itemIds = items.Select(n => n.Id.ToString()); + itemIds = typedItems.Select(n => n.Id.ToString()); itemMasterIds = typedItems.Where(i => i.OriginalContentId != Guid.Empty).Select(n => n.OriginalContentId.ToString()); } else { var typedItems = items.OfType().Where(c => c.Id == selectedItemGuid || c.OriginalContentId == selectedItemGuid); - itemIds = items.Select(n => n.Id.ToString()); + itemIds = typedItems.Select(n => n.Id.ToString()); itemMasterIds = typedItems.Where(i => i.OriginalContentId != Guid.Empty).Select(n => n.OriginalContentId.ToString()); } @@ -772,7 +772,7 @@ protected virtual string AdaptMultilingualFilterExpression(string filterExpressi CultureInfo uiCulture; if (SystemManager.CurrentContext.AppSettings.Multilingual) { - uiCulture = System.Globalization.CultureInfo.CurrentUICulture; + uiCulture = Telerik.Sitefinity.Services.SystemManager.CurrentContext.Culture; } else { diff --git a/Telerik.Sitefinity.Frontend/Mvc/Models/DesignerModel.cs b/Telerik.Sitefinity.Frontend/Mvc/Models/DesignerModel.cs index 9ed105da5..2e389e23f 100644 --- a/Telerik.Sitefinity.Frontend/Mvc/Models/DesignerModel.cs +++ b/Telerik.Sitefinity.Frontend/Mvc/Models/DesignerModel.cs @@ -8,9 +8,11 @@ using Telerik.Sitefinity.Frontend.Mvc.Controllers; using Telerik.Sitefinity.Frontend.Mvc.Infrastructure.Controllers; using Telerik.Sitefinity.Frontend.Resources; +using Telerik.Sitefinity.Modules; +using Telerik.Sitefinity.Modules.Forms; using Telerik.Sitefinity.Modules.Pages; using Telerik.Sitefinity.Pages.Model; - + namespace Telerik.Sitefinity.Frontend.Mvc.Models { /// @@ -29,6 +31,23 @@ internal class DesignerModel : IDesignerModel /// Map of the view file location for each view. [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors")] public DesignerModel(IEnumerable views, IEnumerable viewLocations, string widgetName, Guid controlId, string preselectedView, Dictionary viewFilesMappings) + : this(views, viewLocations, widgetName, controlId, preselectedView, viewFilesMappings, DesignMediaType.Page) + { + + } + + /// + /// Initializes a new instance of the class. + /// + /// The views that are available to the controller. + /// The locations where view files can be found. + /// Name of the widget that is being edited. + /// Id of the control that is edited. + /// Name of the preselected view if there is one. Otherwise use null. + /// Map of the view file location for each view. + /// The type of the design media. + [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors")] + public DesignerModel(IEnumerable views, IEnumerable viewLocations, string widgetName, Guid controlId, string preselectedView, Dictionary viewFilesMappings, DesignMediaType mediaType) { this.Caption = widgetName; @@ -53,7 +72,7 @@ public DesignerModel(IEnumerable views, IEnumerable viewLocation this.defaultView = viewConfigs.OrderByDescending(c => c.Value.Priority).Select(c => c.Key).FirstOrDefault(); - this.Control = this.LoadControl(controlId); + this.Control = this.LoadControl(controlId, mediaType); } /// @@ -141,7 +160,7 @@ protected string ExtractViewName(string filename) } /// - /// Populates the script references and dependant modules. + /// Populates the script references and dependent modules. /// /// Name of the widget. /// The view configs. @@ -367,27 +386,39 @@ private string GetScriptPath(string scriptFileName, string widgetName, string pa return scriptVirtualPath; } - private Control LoadControl(Guid controlId) + private Control LoadControl(Guid controlId, DesignMediaType designMediaType) { if (controlId != Guid.Empty) - { - var pageManager = PageManager.GetManager(); - var objectData = pageManager.GetControl(controlId); - - var controlData = objectData as ControlData; - if (controlData != null && !controlData.Caption.IsNullOrEmpty()) - { - this.Caption = controlData.Caption; - } - - return pageManager.LoadControl(objectData); + { + var manager = this.GetControlManager(designMediaType); + var objectData = manager.GetControl(controlId); + + var controlData = objectData as ControlData; + if (controlData != null && !controlData.Caption.IsNullOrEmpty()) + { + this.Caption = controlData.Caption; + } + + return manager.LoadControl(objectData); } else { return null; } - } - + } + + private IControlManager GetControlManager(DesignMediaType designMediaType) + { + if (designMediaType == DesignMediaType.Form) + { + return FormsManager.GetManager(); + } + else + { + return PageManager.GetManager(); + } + } + private const string DesignerViewPrefix = "DesignerView."; private const string ScriptPrefix = "designerview-"; private const string DesignerScriptsPath = "Mvc/Scripts"; diff --git a/Telerik.Sitefinity.Frontend/Mvc/Models/ServerContext.cs b/Telerik.Sitefinity.Frontend/Mvc/Models/ServerContext.cs index e896b9714..d316da4d8 100644 --- a/Telerik.Sitefinity.Frontend/Mvc/Models/ServerContext.cs +++ b/Telerik.Sitefinity.Frontend/Mvc/Models/ServerContext.cs @@ -59,7 +59,7 @@ public string CurrentSiteId public string IsMultisiteMode { - get { return SystemManager.CurrentContext.IsMultisiteMode.ToString(); } + get { return true.ToString(); } } } } diff --git a/Telerik.Sitefinity.Frontend/Mvc/Scripts/Designer/designer.js b/Telerik.Sitefinity.Frontend/Mvc/Scripts/Designer/designer.js index b215a1d67..8553725c5 100644 --- a/Telerik.Sitefinity.Frontend/Mvc/Scripts/Designer/designer.js +++ b/Telerik.Sitefinity.Frontend/Mvc/Scripts/Designer/designer.js @@ -21,7 +21,7 @@ var resolveTemplateUrl = function (view, serverData) { var widgetName = serverData.get('widgetName'); - var templatePath = String.format('Telerik.Sitefinity.Frontend/Designer/View/{0}/{1}?controlId={2}', widgetName, view, serverData.get('controlId')); + var templatePath = String.format('Telerik.Sitefinity.Frontend/Designer/View/{0}/{1}?controlId={2}&mediaType={3}', widgetName, view, serverData.get('controlId'), serverData.get("mediaType")); var moduleName = serverData.get('moduleName'); if (moduleName) { @@ -247,6 +247,11 @@ if (typeof ($telerik) !== 'undefined') $telerik.$(document).trigger('modalDialogClosed'); + if (typeof CustomEvent == "function") { + var evt = new CustomEvent('sfModalDialogClosed'); + document.dispatchEvent(evt); + } + $rootScope.$destroy(); }; diff --git a/Telerik.Sitefinity.Frontend/Mvc/Scripts/Designer/grid-designer.js b/Telerik.Sitefinity.Frontend/Mvc/Scripts/Designer/grid-designer.js index 173c65bb9..d6c0d2616 100644 --- a/Telerik.Sitefinity.Frontend/Mvc/Scripts/Designer/grid-designer.js +++ b/Telerik.Sitefinity.Frontend/Mvc/Scripts/Designer/grid-designer.js @@ -83,6 +83,11 @@ if (typeof ($telerik) != 'undefined') $telerik.$(document).trigger('gridModalDialogClosed'); + + if (typeof CustomEvent == "function") { + var evt = new CustomEvent('sfModalDialogClosed'); + document.dispatchEvent(evt); + } }; $scope.hideError = function () { diff --git a/Telerik.Sitefinity.Frontend/Mvc/Scripts/Designer/personalization-designer.js b/Telerik.Sitefinity.Frontend/Mvc/Scripts/Designer/personalization-designer.js index 85b607d1d..7250824d7 100644 --- a/Telerik.Sitefinity.Frontend/Mvc/Scripts/Designer/personalization-designer.js +++ b/Telerik.Sitefinity.Frontend/Mvc/Scripts/Designer/personalization-designer.js @@ -97,6 +97,11 @@ if (typeof ($telerik) !== 'undefined') $telerik.$(document).trigger('modalDialogClosed'); + + if (typeof CustomEvent == "function") { + var evt = new CustomEvent('sfModalDialogClosed'); + document.dispatchEvent(evt); + } }; $scope.hideError = function () { diff --git a/Telerik.Sitefinity.Frontend/Mvc/Views/Designer/Designer.cshtml b/Telerik.Sitefinity.Frontend/Mvc/Views/Designer/Designer.cshtml index 55f09dac3..6749520b7 100644 --- a/Telerik.Sitefinity.Frontend/Mvc/Views/Designer/Designer.cshtml +++ b/Telerik.Sitefinity.Frontend/Mvc/Views/Designer/Designer.cshtml @@ -15,7 +15,7 @@ } }
- +