@@ -892,7 +892,7 @@
}
@CurrentPage.BodyText
-
+
@@ -921,4 +921,4 @@
-
\ No newline at end of file
+
diff --git a/src/Umbraco.Tests/TestHelpers/ControllerTesting/TestControllerActivatorBase.cs b/src/Umbraco.Tests/TestHelpers/ControllerTesting/TestControllerActivatorBase.cs
index 4cca5f195b..c6bbebf550 100644
--- a/src/Umbraco.Tests/TestHelpers/ControllerTesting/TestControllerActivatorBase.cs
+++ b/src/Umbraco.Tests/TestHelpers/ControllerTesting/TestControllerActivatorBase.cs
@@ -9,7 +9,6 @@ using System.Web.Http.Dispatcher;
using System.Web.Security;
using Moq;
using Umbraco.Core.Cache;
-using Umbraco.Core.Composing;
using Umbraco.Core.Configuration.UmbracoSettings;
using Umbraco.Core.Dictionary;
using Umbraco.Core.Models.Membership;
@@ -150,9 +149,9 @@ namespace Umbraco.Tests.TestHelpers.ControllerTesting
urlHelper.Setup(provider => provider.GetUrl(It.IsAny
(), It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny()))
.Returns(UrlInfo.Url("/hello/world/1234"));
- var membershipHelper = new MembershipHelper(new TestUmbracoContextAccessor(umbCtx), Mock.Of(), Mock.Of(), Mock.Of(), Mock.Of(), Mock.Of(), Mock.Of(), Mock.Of(), Mock.Of());
+ var membershipHelper = new MembershipHelper(umbCtx.HttpContext, Mock.Of(), Mock.Of(), Mock.Of(), Mock.Of(), Mock.Of(), Mock.Of(), Mock.Of(), Mock.Of(), Mock.Of());
- var umbHelper = new UmbracoHelper(umbCtx,
+ var umbHelper = new UmbracoHelper(Mock.Of(),
Mock.Of(),
Mock.Of(),
Mock.Of(),
diff --git a/src/Umbraco.Tests/TestHelpers/Entities/MockedContentTypes.cs b/src/Umbraco.Tests/TestHelpers/Entities/MockedContentTypes.cs
index d7dcf8e79a..6de467f32f 100644
--- a/src/Umbraco.Tests/TestHelpers/Entities/MockedContentTypes.cs
+++ b/src/Umbraco.Tests/TestHelpers/Entities/MockedContentTypes.cs
@@ -359,7 +359,7 @@ namespace Umbraco.Tests.TestHelpers.Entities
contentCollection.Add(new PropertyType(Constants.PropertyEditors.Aliases.TextBox, ValueStorageType.Nvarchar) { Alias = "singleLineText", Name = "Text String", Mandatory = false, SortOrder = 4, DataTypeId = -88 });
contentCollection.Add(new PropertyType(Constants.PropertyEditors.Aliases.TextArea, ValueStorageType.Ntext) { Alias = "multilineText", Name = "Multiple Text Strings", Mandatory = false, SortOrder = 5, DataTypeId = -89 });
contentCollection.Add(new PropertyType(Constants.PropertyEditors.Aliases.UploadField, ValueStorageType.Nvarchar) { Alias = "upload", Name = "Upload Field", Mandatory = false, SortOrder = 6, DataTypeId = -90 });
- contentCollection.Add(new PropertyType(Constants.PropertyEditors.Aliases.NoEdit, ValueStorageType.Nvarchar) { Alias = "label", Name = "Label", Mandatory = false, SortOrder = 7, DataTypeId = -92 });
+ contentCollection.Add(new PropertyType(Constants.PropertyEditors.Aliases.Label, ValueStorageType.Nvarchar) { Alias = "label", Name = "Label", Mandatory = false, SortOrder = 7, DataTypeId = -92 });
contentCollection.Add(new PropertyType(Constants.PropertyEditors.Aliases.DateTime, ValueStorageType.Date) { Alias = "dateTime", Name = "Date Time", Mandatory = false, SortOrder = 8, DataTypeId = -36 });
contentCollection.Add(new PropertyType(Constants.PropertyEditors.Aliases.ColorPicker, ValueStorageType.Nvarchar) { Alias = "colorPicker", Name = "Color Picker", Mandatory = false, SortOrder = 9, DataTypeId = -37 });
contentCollection.Add(new PropertyType(Constants.PropertyEditors.Aliases.DropDownListFlexible, ValueStorageType.Nvarchar) { Alias = "ddlMultiple", Name = "Dropdown List Multiple", Mandatory = false, SortOrder = 11, DataTypeId = -39 });
@@ -420,10 +420,10 @@ namespace Umbraco.Tests.TestHelpers.Entities
var contentCollection = new PropertyTypeCollection(false);
contentCollection.Add(new PropertyType(Constants.PropertyEditors.Aliases.UploadField, ValueStorageType.Nvarchar) { Alias = Constants.Conventions.Media.File, Name = "File", Description = "", Mandatory = false, SortOrder = 1, DataTypeId = -90 });
- contentCollection.Add(new PropertyType(Constants.PropertyEditors.Aliases.NoEdit, ValueStorageType.Integer) { Alias = Constants.Conventions.Media.Width, Name = "Width", Description = "", Mandatory = false, SortOrder = 2, DataTypeId = -90 });
- contentCollection.Add(new PropertyType(Constants.PropertyEditors.Aliases.NoEdit, ValueStorageType.Integer) { Alias = Constants.Conventions.Media.Height, Name = "Height", Description = "", Mandatory = false, SortOrder = 2, DataTypeId = -90 });
- contentCollection.Add(new PropertyType(Constants.PropertyEditors.Aliases.NoEdit, ValueStorageType.Integer) { Alias = Constants.Conventions.Media.Bytes, Name = "Bytes", Description = "", Mandatory = false, SortOrder = 2, DataTypeId = -90 });
- contentCollection.Add(new PropertyType(Constants.PropertyEditors.Aliases.NoEdit, ValueStorageType.Nvarchar) { Alias = Constants.Conventions.Media.Extension, Name = "File Extension", Description = "", Mandatory = false, SortOrder = 2, DataTypeId = -90 });
+ contentCollection.Add(new PropertyType(Constants.PropertyEditors.Aliases.Label, ValueStorageType.Integer) { Alias = Constants.Conventions.Media.Width, Name = "Width", Description = "", Mandatory = false, SortOrder = 2, DataTypeId = -90 });
+ contentCollection.Add(new PropertyType(Constants.PropertyEditors.Aliases.Label, ValueStorageType.Integer) { Alias = Constants.Conventions.Media.Height, Name = "Height", Description = "", Mandatory = false, SortOrder = 2, DataTypeId = -90 });
+ contentCollection.Add(new PropertyType(Constants.PropertyEditors.Aliases.Label, ValueStorageType.Integer) { Alias = Constants.Conventions.Media.Bytes, Name = "Bytes", Description = "", Mandatory = false, SortOrder = 2, DataTypeId = -90 });
+ contentCollection.Add(new PropertyType(Constants.PropertyEditors.Aliases.Label, ValueStorageType.Nvarchar) { Alias = Constants.Conventions.Media.Extension, Name = "File Extension", Description = "", Mandatory = false, SortOrder = 2, DataTypeId = -90 });
mediaType.PropertyGroups.Add(new PropertyGroup(contentCollection) { Name = "Media", SortOrder = 1 });
diff --git a/src/Umbraco.Tests/Testing/TestingTests/MockTests.cs b/src/Umbraco.Tests/Testing/TestingTests/MockTests.cs
index b69451547e..57381eb287 100644
--- a/src/Umbraco.Tests/Testing/TestingTests/MockTests.cs
+++ b/src/Umbraco.Tests/Testing/TestingTests/MockTests.cs
@@ -16,6 +16,7 @@ using Umbraco.Tests.TestHelpers;
using Umbraco.Tests.TestHelpers.Stubs;
using Umbraco.Tests.Testing.Objects.Accessors;
using Umbraco.Web;
+using Umbraco.Web.PublishedCache;
using Umbraco.Web.Routing;
using Umbraco.Web.Security;
using Current = Umbraco.Web.Composing.Current;
@@ -60,12 +61,12 @@ namespace Umbraco.Tests.Testing.TestingTests
Composition.Register();
// ReSharper disable once UnusedVariable
- var helper = new UmbracoHelper(umbracoContext,
+ var helper = new UmbracoHelper(Mock.Of(),
Mock.Of(),
Mock.Of(),
Mock.Of(),
Mock.Of(),
- new MembershipHelper(new TestUmbracoContextAccessor(umbracoContext), Mock.Of(), Mock.Of(), Mock.Of(), Mock.Of(), Mock.Of(), Mock.Of(), Mock.Of(), Mock.Of()));
+ new MembershipHelper(umbracoContext.HttpContext, Mock.Of(), Mock.Of(), Mock.Of(), Mock.Of(), Mock.Of(), Mock.Of(), Mock.Of(), Mock.Of(), Mock.Of()));
Assert.Pass();
}
diff --git a/src/Umbraco.Tests/Umbraco.Tests.csproj b/src/Umbraco.Tests/Umbraco.Tests.csproj
index 5aa1588ef2..55ceee0c1e 100644
--- a/src/Umbraco.Tests/Umbraco.Tests.csproj
+++ b/src/Umbraco.Tests/Umbraco.Tests.csproj
@@ -262,7 +262,7 @@
-
+
@@ -491,6 +491,7 @@
+
diff --git a/src/Umbraco.Tests/Web/Mvc/HtmlHelperExtensionMethodsTests.cs b/src/Umbraco.Tests/Web/Mvc/HtmlHelperExtensionMethodsTests.cs
index ba19f41e74..a301dfbd04 100644
--- a/src/Umbraco.Tests/Web/Mvc/HtmlHelperExtensionMethodsTests.cs
+++ b/src/Umbraco.Tests/Web/Mvc/HtmlHelperExtensionMethodsTests.cs
@@ -7,6 +7,9 @@ namespace Umbraco.Tests.Web.Mvc
[TestFixture]
public class HtmlHelperExtensionMethodsTests
{
+ private const string SampleWithAnchorElement = "Hello world, this is some text with a link";
+ private const string SampleWithBoldAndAnchorElements = "Hello world, this is some text with a link";
+
[SetUp]
public virtual void Initialize()
{
@@ -29,5 +32,99 @@ namespace Umbraco.Tests.Web.Mvc
var output = _htmlHelper.Wrap("div", "hello world", new {style = "color:red;", onclick = "void();"});
Assert.AreEqual("hello world
", output.ToHtmlString());
}
+
+ [Test]
+ public static void Truncate_Simple()
+ {
+ var helper = new HtmlHelper(new ViewContext(), new ViewPage());
+ var result = helper.Truncate(SampleWithAnchorElement, 25).ToString();
+
+ Assert.AreEqual("Hello world, this is some…", result);
+ }
+
+ [Test]
+ public static void When_Truncating_A_String_Ends_With_A_Space_We_Should_Trim_The_Space_Before_Appending_The_Ellipsis()
+ {
+ var helper = new HtmlHelper(new ViewContext(), new ViewPage());
+ var result = helper.Truncate(SampleWithAnchorElement, 26).ToString();
+
+ Assert.AreEqual("Hello world, this is some…", result);
+ }
+
+ [Test]
+ public static void Truncate_Inside_Word()
+ {
+ var helper = new HtmlHelper(new ViewContext(), new ViewPage());
+ var result = helper.Truncate(SampleWithAnchorElement, 24).ToString();
+
+ Assert.AreEqual("Hello world, this is som…", result);
+ }
+
+ [Test]
+ public static void Truncate_With_Tag()
+ {
+ var helper = new HtmlHelper(new ViewContext(), new ViewPage());
+ var result = helper.Truncate(SampleWithAnchorElement, 35).ToString();
+
+ Assert.AreEqual("Hello world, this is some text with…", result);
+ }
+
+ [Test]
+ public static void Truncate_By_Words()
+ {
+ var helper = new HtmlHelper(new ViewContext(), new ViewPage());
+ var result = helper.TruncateByWords(SampleWithAnchorElement, 4).ToString();
+
+ Assert.AreEqual("Hello world, this is…", result);
+ }
+
+ [Test]
+ public static void Truncate_By_Words_With_Tag()
+ {
+ var helper = new HtmlHelper(new ViewContext(), new ViewPage());
+ var result = helper.TruncateByWords(SampleWithBoldAndAnchorElements, 4).ToString();
+
+ Assert.AreEqual("Hello world, this is…", result);
+ }
+
+ [Test]
+ public static void Truncate_By_Words_Mid_Tag()
+ {
+ var helper = new HtmlHelper(new ViewContext(), new ViewPage());
+ var result = helper.TruncateByWords(SampleWithAnchorElement, 7).ToString();
+
+ Assert.AreEqual("Hello world, this is some text with…", result);
+ }
+
+ [Test]
+ public static void Strip_All_Html()
+ {
+ var helper = new HtmlHelper(new ViewContext(), new ViewPage());
+ var result = helper.StripHtml(SampleWithBoldAndAnchorElements, null).ToString();
+
+ Assert.AreEqual("Hello world, this is some text with a link", result);
+ }
+
+ [Test]
+ public static void Strip_Specific_Html()
+ {
+ string[] tags = { "b" };
+
+ var helper = new HtmlHelper(new ViewContext(), new ViewPage());
+ var result = helper.StripHtml(SampleWithBoldAndAnchorElements, tags).ToString();
+
+ Assert.AreEqual(SampleWithAnchorElement, result);
+ }
+
+ [Test]
+ public static void Strip_Invalid_Html()
+ {
+ const string text = "Hello world, is some text with a link";
+
+ var helper = new HtmlHelper(new ViewContext(), new ViewPage());
+ var result = helper.StripHtml(text).ToString();
+
+ Assert.AreEqual("Hello world, is some text with a link", result);
+ }
}
}
diff --git a/src/Umbraco.Tests/Web/Mvc/SurfaceControllerTests.cs b/src/Umbraco.Tests/Web/Mvc/SurfaceControllerTests.cs
index eca6a6e144..846ee4b7d8 100644
--- a/src/Umbraco.Tests/Web/Mvc/SurfaceControllerTests.cs
+++ b/src/Umbraco.Tests/Web/Mvc/SurfaceControllerTests.cs
@@ -7,14 +7,12 @@ using System.Web.Security;
using Moq;
using NUnit.Framework;
using Umbraco.Core.Cache;
-using Umbraco.Core.Composing;
using Umbraco.Core.Configuration.UmbracoSettings;
using Umbraco.Core.Dictionary;
using Umbraco.Core.Logging;
using Umbraco.Core.Models.PublishedContent;
using Umbraco.Core.Services;
using Umbraco.Tests.TestHelpers;
-using Umbraco.Tests.TestHelpers.Stubs;
using Umbraco.Tests.Testing;
using Umbraco.Tests.Testing.Objects.Accessors;
using Umbraco.Web;
@@ -114,12 +112,12 @@ namespace Umbraco.Tests.Web.Mvc
var umbracoContextAccessor = new TestUmbracoContextAccessor(umbracoContext);
var helper = new UmbracoHelper(
- umbracoContext,
+ content.Object,
Mock.Of(),
Mock.Of(),
Mock.Of(),
Mock.Of(query => query.Content(2) == content.Object),
- new MembershipHelper(new TestUmbracoContextAccessor(umbracoContext), Mock.Of(), Mock.Of(), Mock.Of(), Mock.Of(), Mock.Of(), Mock.Of(), Mock.Of(), Mock.Of()));
+ new MembershipHelper(umbracoContext.HttpContext, Mock.Of(), Mock.Of(), Mock.Of(), Mock.Of(), Mock.Of(), Mock.Of(), Mock.Of(), Mock.Of(), Mock.Of()));
var ctrl = new TestSurfaceController(umbracoContextAccessor, helper);
var result = ctrl.GetContent(2) as PublishedContentResult;
diff --git a/src/Umbraco.Tests/FrontEnd/UmbracoHelperTests.cs b/src/Umbraco.Tests/Web/UmbracoHelperTests.cs
similarity index 59%
rename from src/Umbraco.Tests/FrontEnd/UmbracoHelperTests.cs
rename to src/Umbraco.Tests/Web/UmbracoHelperTests.cs
index b7b85cc4de..b23b5bd6b7 100644
--- a/src/Umbraco.Tests/FrontEnd/UmbracoHelperTests.cs
+++ b/src/Umbraco.Tests/Web/UmbracoHelperTests.cs
@@ -1,184 +1,30 @@
using System;
-using System.Collections.Generic;
using System.Text;
using Moq;
using NUnit.Framework;
using Umbraco.Core;
-using Umbraco.Tests.TestHelpers;
using Umbraco.Core.Cache;
using Umbraco.Core.Composing;
using Umbraco.Core.Configuration;
using Umbraco.Core.IO;
using Umbraco.Core.Logging;
+using Umbraco.Tests.TestHelpers;
using Umbraco.Web;
-namespace Umbraco.Tests.FrontEnd
+namespace Umbraco.Tests.Web
{
[TestFixture]
public class UmbracoHelperTests
- {
- private const string SampleWithAnchorElement = "Hello world, this is some text with a link";
- private const string SampleWithBoldAndAnchorElements = "Hello world, this is some text with a link";
+ {
[TearDown]
public void TearDown()
{
Current.Reset();
}
- [Test]
- public static void Truncate_Simple()
- {
- var helper = new UmbracoHelper();
-
- var result = helper.Truncate(SampleWithAnchorElement, 25).ToString();
-
- Assert.AreEqual("Hello world, this is some…", result);
- }
-
- [Test]
- public static void When_Truncating_A_String_Ends_With_A_Space_We_Should_Trim_The_Space_Before_Appending_The_Ellipsis()
- {
- var helper = new UmbracoHelper();
-
- var result = helper.Truncate(SampleWithAnchorElement, 26).ToString();
-
- Assert.AreEqual("Hello world, this is some…", result);
- }
-
- [Test]
- public static void Truncate_Inside_Word()
- {
- var helper = new UmbracoHelper();
-
- var result = helper.Truncate(SampleWithAnchorElement, 24).ToString();
-
- Assert.AreEqual("Hello world, this is som…", result);
- }
-
- [Test]
- public static void Truncate_With_Tag()
- {
- var helper = new UmbracoHelper();
-
- var result = helper.Truncate(SampleWithAnchorElement, 35).ToString();
-
- Assert.AreEqual("Hello world, this is some text with…", result);
- }
-
- [Test]
- public static void Create_Encrypted_RouteString_From_Anonymous_Object()
- {
- var additionalRouteValues = new
- {
- key1 = "value1",
- key2 = "value2",
- Key3 = "Value3",
- keY4 = "valuE4"
- };
-
- var encryptedRouteString = UmbracoHelper.CreateEncryptedRouteString(
- "FormController",
- "FormAction",
- "",
- additionalRouteValues
- );
-
- var result = encryptedRouteString.DecryptWithMachineKey();
-
- const string expectedResult = "c=FormController&a=FormAction&ar=&key1=value1&key2=value2&Key3=Value3&keY4=valuE4";
-
- Assert.AreEqual(expectedResult, result);
- }
-
- [Test]
- public static void Create_Encrypted_RouteString_From_Dictionary()
- {
- var additionalRouteValues = new Dictionary()
- {
- {"key1", "value1"},
- {"key2", "value2"},
- {"Key3", "Value3"},
- {"keY4", "valuE4"}
- };
-
- var encryptedRouteString = UmbracoHelper.CreateEncryptedRouteString(
- "FormController",
- "FormAction",
- "",
- additionalRouteValues
- );
-
- var result = encryptedRouteString.DecryptWithMachineKey();
-
- const string expectedResult = "c=FormController&a=FormAction&ar=&key1=value1&key2=value2&Key3=Value3&keY4=valuE4";
-
- Assert.AreEqual(expectedResult, result);
- }
-
- [Test]
- public static void Truncate_By_Words()
- {
- var helper = new UmbracoHelper();
-
- var result = helper.TruncateByWords(SampleWithAnchorElement, 4).ToString();
-
- Assert.AreEqual("Hello world, this is…", result);
- }
-
- [Test]
- public static void Truncate_By_Words_With_Tag()
- {
- var helper = new UmbracoHelper();
-
- var result = helper.TruncateByWords(SampleWithBoldAndAnchorElements, 4).ToString();
-
- Assert.AreEqual("Hello world, this is…", result);
- }
-
- [Test]
- public static void Truncate_By_Words_Mid_Tag()
- {
- var helper = new UmbracoHelper();
-
- var result = helper.TruncateByWords(SampleWithAnchorElement, 7).ToString();
-
- Assert.AreEqual("Hello world, this is some text with…", result);
- }
-
- [Test]
- public static void Strip_All_Html()
- {
- var helper = new UmbracoHelper();
-
- var result = helper.StripHtml(SampleWithBoldAndAnchorElements, null).ToString();
-
- Assert.AreEqual("Hello world, this is some text with a link", result);
- }
-
- [Test]
- public static void Strip_Specific_Html()
- {
- string[] tags = { "b" };
-
- var helper = new UmbracoHelper();
-
- var result = helper.StripHtml(SampleWithBoldAndAnchorElements, tags).ToString();
-
- Assert.AreEqual(SampleWithAnchorElement, result);
- }
-
- [Test]
- public static void Strip_Invalid_Html()
- {
- const string text = "Hello world, is some text with a link";
-
- var helper = new UmbracoHelper();
-
- var result = helper.StripHtml(text).ToString();
-
- Assert.AreEqual("Hello world, is some text with a link", result);
- }
+
+
// ------- Int32 conversion tests
[Test]
public static void Converting_Boxed_34_To_An_Int_Returns_34()
diff --git a/src/Umbraco.Tests/Web/UrlHelperExtensionTests.cs b/src/Umbraco.Tests/Web/UrlHelperExtensionTests.cs
new file mode 100644
index 0000000000..a4b96ab4ff
--- /dev/null
+++ b/src/Umbraco.Tests/Web/UrlHelperExtensionTests.cs
@@ -0,0 +1,61 @@
+using System.Collections.Generic;
+using NUnit.Framework;
+using Umbraco.Core;
+using Umbraco.Web;
+
+namespace Umbraco.Tests.Web
+{
+ [TestFixture]
+ public class UrlHelperExtensionTests
+ {
+ [Test]
+ public static void Create_Encrypted_RouteString_From_Anonymous_Object()
+ {
+ var additionalRouteValues = new
+ {
+ key1 = "value1",
+ key2 = "value2",
+ Key3 = "Value3",
+ keY4 = "valuE4"
+ };
+
+ var encryptedRouteString = UrlHelperRenderExtensions.CreateEncryptedRouteString(
+ "FormController",
+ "FormAction",
+ "",
+ additionalRouteValues
+ );
+
+ var result = encryptedRouteString.DecryptWithMachineKey();
+
+ const string expectedResult = "c=FormController&a=FormAction&ar=&key1=value1&key2=value2&Key3=Value3&keY4=valuE4";
+
+ Assert.AreEqual(expectedResult, result);
+ }
+
+ [Test]
+ public static void Create_Encrypted_RouteString_From_Dictionary()
+ {
+ var additionalRouteValues = new Dictionary()
+ {
+ {"key1", "value1"},
+ {"key2", "value2"},
+ {"Key3", "Value3"},
+ {"keY4", "valuE4"}
+ };
+
+ var encryptedRouteString = UrlHelperRenderExtensions.CreateEncryptedRouteString(
+ "FormController",
+ "FormAction",
+ "",
+ additionalRouteValues
+ );
+
+ var result = encryptedRouteString.DecryptWithMachineKey();
+
+ const string expectedResult = "c=FormController&a=FormAction&ar=&key1=value1&key2=value2&Key3=Value3&keY4=valuE4";
+
+ Assert.AreEqual(expectedResult, result);
+ }
+ }
+}
diff --git a/src/Umbraco.Web.UI.Client/src/common/directives/components/content/edit.controller.js b/src/Umbraco.Web.UI.Client/src/common/directives/components/content/edit.controller.js
index 03ed7aadaf..e6b8bae30c 100644
--- a/src/Umbraco.Web.UI.Client/src/common/directives/components/content/edit.controller.js
+++ b/src/Umbraco.Web.UI.Client/src/common/directives/components/content/edit.controller.js
@@ -4,7 +4,7 @@
function ContentEditController($rootScope, $scope, $routeParams, $q, $window,
appState, contentResource, entityResource, navigationService, notificationsService,
serverValidationManager, contentEditingHelper, treeService, formHelper, umbRequestHelper,
- editorState, $http, eventsService, relationResource, overlayService) {
+ editorState, $http, eventsService, relationResource, overlayService, $location) {
var evts = [];
var infiniteMode = $scope.infiniteModel && $scope.infiniteModel.infiniteMode;
@@ -22,7 +22,7 @@
$scope.page.isNew = $scope.isNew ? true : false;
$scope.page.buttonGroupState = "init";
$scope.page.hideActionsMenu = infiniteMode ? true : false;
- $scope.page.hideChangeVariant = infiniteMode ? true : false;
+ $scope.page.hideChangeVariant = false;
$scope.allowOpen = true;
$scope.app = null;
@@ -213,24 +213,7 @@
$scope.page.showPreviewButton = true;
}
-
- // create infinite editing buttons
- function createInfiniteModeButtons(content) {
-
- $scope.page.allowInfinitePublishAndClose = false;
- $scope.page.allowInfiniteSaveAndClose = false;
-
- // check for publish rights
- if (_.contains(content.allowedActions, "U")) {
- $scope.page.allowInfinitePublishAndClose = true;
-
- // check for save rights
- } else if (_.contains(content.allowedActions, "A")) {
- $scope.page.allowInfiniteSaveAndClose = true;
- }
-
- }
-
+
/** Syncs the content item to it's tree node - this occurs on first load and after saving */
function syncTreeNode(content, path, initialLoad) {
@@ -874,11 +857,8 @@
$scope.$broadcast("editors.apps.appChanged", { app: app });
- if (infiniteMode) {
- createInfiniteModeButtons($scope.content);
- } else {
- createButtons($scope.content);
- }
+ createButtons($scope.content);
+
};
/**
@@ -896,6 +876,18 @@
$scope.infiniteModel.close($scope.infiniteModel);
}
};
+
+ /**
+ * Call back when user click the back-icon
+ */
+ $scope.onBack = function() {
+ if ($scope.infiniteModel && $scope.infiniteModel.close) {
+ $scope.infiniteModel.close($scope.infiniteModel);
+ } else {
+ // navigate backwards if content has a parent.
+ $location.path('/' + $routeParams.section + '/' + $routeParams.tree + '/' + $routeParams.method + '/' + $scope.content.parentId);
+ }
+ };
//ensure to unregister from all events!
$scope.$on('$destroy', function () {
diff --git a/src/Umbraco.Web.UI.Client/src/common/directives/components/content/umbvariantcontent.directive.js b/src/Umbraco.Web.UI.Client/src/common/directives/components/content/umbvariantcontent.directive.js
index 5556308e06..effa21e581 100644
--- a/src/Umbraco.Web.UI.Client/src/common/directives/components/content/umbvariantcontent.directive.js
+++ b/src/Umbraco.Web.UI.Client/src/common/directives/components/content/umbvariantcontent.directive.js
@@ -17,7 +17,9 @@
onSelectVariant: "&",
onOpenSplitView: "&",
onSelectApp: "&",
- onSelectAppAnchor: "&"
+ onSelectAppAnchor: "&",
+ onBack: "&?",
+ showBack: ""
},
controllerAs: 'vm',
controller: umbVariantContentController
@@ -37,6 +39,7 @@
vm.openSplitView = openSplitView;
vm.selectApp = selectApp;
vm.selectAppAnchor = selectAppAnchor;
+ vm.showBackButton = showBackButton;
function onInit() {
// disable the name field if the active content app is not "Content"
@@ -48,6 +51,10 @@
});
}
+ function showBackButton() {
+ return vm.page.listViewPath !== null && vm.showBack;
+ }
+
/** Called when the component has linked all elements, this is when the form controller is available */
function postLink() {
//set the content to dirty if the header changes
diff --git a/src/Umbraco.Web.UI.Client/src/common/directives/components/content/umbvariantcontenteditors.directive.js b/src/Umbraco.Web.UI.Client/src/common/directives/components/content/umbvariantcontenteditors.directive.js
index bd21cca541..3f67b74380 100644
--- a/src/Umbraco.Web.UI.Client/src/common/directives/components/content/umbvariantcontenteditors.directive.js
+++ b/src/Umbraco.Web.UI.Client/src/common/directives/components/content/umbvariantcontenteditors.directive.js
@@ -11,7 +11,9 @@
content: "<", // TODO: Not sure if this should be = since we are changing the 'active' property of a variant
culture: "<",
onSelectApp: "&?",
- onSelectAppAnchor: "&?"
+ onSelectAppAnchor: "&?",
+ onBack: "&?",
+ showBack: ""
},
controllerAs: 'vm',
controller: umbVariantContentEditorsController
diff --git a/src/Umbraco.Web.UI.Client/src/common/directives/components/editor/umbeditorcontentheader.directive.js b/src/Umbraco.Web.UI.Client/src/common/directives/components/editor/umbeditorcontentheader.directive.js
index c1c42911fa..4999f7007a 100644
--- a/src/Umbraco.Web.UI.Client/src/common/directives/components/editor/umbeditorcontentheader.directive.js
+++ b/src/Umbraco.Web.UI.Client/src/common/directives/components/editor/umbeditorcontentheader.directive.js
@@ -1,7 +1,7 @@
(function () {
'use strict';
- function EditorContentHeader($location, $routeParams) {
+ function EditorContentHeader() {
function link(scope, el, attr, ctrl) {
@@ -37,7 +37,9 @@
}
scope.goBack = function () {
- $location.path('/' + $routeParams.section + '/' + $routeParams.tree + '/' + $routeParams.method + '/' + scope.menu.currentNode.parentId);
+ if (scope.onBack) {
+ scope.onBack();
+ }
};
scope.selectVariant = function (event, variant) {
@@ -113,13 +115,14 @@
name: "=",
nameDisabled: "",
menu: "=",
- hideMenu: "",
+ hideActionsMenu: "",
content: "=",
openVariants: "<",
hideChangeVariant: "",
onSelectNavigationItem: "&?",
onSelectAnchorItem: "&?",
showBackButton: "",
+ onBack: "&?",
splitViewOpen: "=?",
onOpenInSplitView: "&?",
onCloseSplitView: "&?",
diff --git a/src/Umbraco.Web.UI.Client/src/common/directives/components/editor/umbeditorheader.directive.js b/src/Umbraco.Web.UI.Client/src/common/directives/components/editor/umbeditorheader.directive.js
index f01083d725..76c2e585f8 100644
--- a/src/Umbraco.Web.UI.Client/src/common/directives/components/editor/umbeditorheader.directive.js
+++ b/src/Umbraco.Web.UI.Client/src/common/directives/components/editor/umbeditorheader.directive.js
@@ -258,7 +258,7 @@ Use this directive to construct a header inside the main editor window.
name: "=",
nameLocked: "=",
menu: "=",
- hideMenu: "",
+ hideActionsMenu: "",
icon: "=",
hideIcon: "@",
alias: "=",
diff --git a/src/Umbraco.Web.UI.Client/src/views/components/content/edit.html b/src/Umbraco.Web.UI.Client/src/views/components/content/edit.html
index 1f38d61469..cd2c94c458 100644
--- a/src/Umbraco.Web.UI.Client/src/views/components/content/edit.html
+++ b/src/Umbraco.Web.UI.Client/src/views/components/content/edit.html
@@ -11,7 +11,10 @@
content="content"
culture="culture"
on-select-app="appChanged(app)"
- on-select-app-anchor="appAnchorChanged(app, anchor)">
+ on-select-app-anchor="appAnchorChanged(app, anchor)"
+ on-back="onBack()"
+ show-back="!(infiniteModel && infiniteModel.infiniteMode)"
+ >
@@ -59,7 +62,7 @@
+ on-select-app-anchor="vm.selectAppAnchor(app, anchor)"
+ on-back="vm.onBack()"
+ show-back="vm.showBack">
diff --git a/src/Umbraco.Web.UI.Client/src/views/components/content/umb-variant-content.html b/src/Umbraco.Web.UI.Client/src/views/components/content/umb-variant-content.html
index 34c7792055..94fb7edae8 100644
--- a/src/Umbraco.Web.UI.Client/src/views/components/content/umb-variant-content.html
+++ b/src/Umbraco.Web.UI.Client/src/views/components/content/umb-variant-content.html
@@ -16,7 +16,8 @@
on-select-anchor-item="vm.selectAppAnchor(item, anchor)"
open-variants="vm.openVariants"
hide-change-variant="vm.page.hideChangeVariant"
- show-back-button="vm.page.listViewPath !== null"
+ show-back-button="vm.showBackButton()"
+ on-back="vm.onBack()"
split-view-open="vm.editorCount > 1"
on-open-in-split-view="vm.openSplitView(variant)"
on-close-split-view="vm.onCloseSplitView()"
diff --git a/src/Umbraco.Web.UI.Client/src/views/components/editor/umb-editor-content-header.html b/src/Umbraco.Web.UI.Client/src/views/components/editor/umb-editor-content-header.html
index 09d46fcf4c..227a08c54f 100644
--- a/src/Umbraco.Web.UI.Client/src/views/components/editor/umb-editor-content-header.html
+++ b/src/Umbraco.Web.UI.Client/src/views/components/editor/umb-editor-content-header.html
@@ -69,7 +69,7 @@
-