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 @@
}
}
-
+