diff --git a/src/Umbraco.Core/PropertyEditors/DataEditorAttribute.cs b/src/Umbraco.Core/PropertyEditors/DataEditorAttribute.cs
index ca08127d51..bf67522449 100644
--- a/src/Umbraco.Core/PropertyEditors/DataEditorAttribute.cs
+++ b/src/Umbraco.Core/PropertyEditors/DataEditorAttribute.cs
@@ -111,6 +111,11 @@ namespace Umbraco.Core.PropertyEditors
///
public bool HideLabel { get; set; }
+ ///
+ /// Gets or sets a value indicating whether the editor value can be copied
+ ///
+ public bool CanCopy { get; set; }
+
///
/// Gets or sets an optional icon.
///
diff --git a/src/Umbraco.Core/PropertyEditors/DataValueEditor.cs b/src/Umbraco.Core/PropertyEditors/DataValueEditor.cs
index c4380f032c..2f215c6032 100644
--- a/src/Umbraco.Core/PropertyEditors/DataValueEditor.cs
+++ b/src/Umbraco.Core/PropertyEditors/DataValueEditor.cs
@@ -57,6 +57,7 @@ namespace Umbraco.Core.PropertyEditors
View = view;
ValueType = attribute.ValueType;
HideLabel = attribute.HideLabel;
+ CanCopy = attribute.CanCopy;
}
///
@@ -133,6 +134,12 @@ namespace Umbraco.Core.PropertyEditors
[JsonProperty("hideLabel")]
public bool HideLabel { get; set; }
+ ///
+ /// If this is true then the editor value can be copied
+ ///
+ [JsonProperty("canCopy")]
+ public bool CanCopy { get; set; }
+
///
/// Set this to true if the property editor is for display purposes only
///
diff --git a/src/Umbraco.Core/PropertyEditors/IDataValueEditor.cs b/src/Umbraco.Core/PropertyEditors/IDataValueEditor.cs
index cb68531cc7..18670ccf4f 100644
--- a/src/Umbraco.Core/PropertyEditors/IDataValueEditor.cs
+++ b/src/Umbraco.Core/PropertyEditors/IDataValueEditor.cs
@@ -34,6 +34,11 @@ namespace Umbraco.Core.PropertyEditors
///
bool HideLabel { get; }
+ ///
+ /// Gets a value indicating whether the value can be copied
+ ///
+ bool CanCopy { get; }
+
///
/// Validates a property value.
///
diff --git a/src/Umbraco.Web.UI.Client/src/common/directives/components/property/umbproperty.directive.js b/src/Umbraco.Web.UI.Client/src/common/directives/components/property/umbproperty.directive.js
index 302378b8c0..1e4c810fec 100644
--- a/src/Umbraco.Web.UI.Client/src/common/directives/components/property/umbproperty.directive.js
+++ b/src/Umbraco.Web.UI.Client/src/common/directives/components/property/umbproperty.directive.js
@@ -32,6 +32,10 @@ angular.module("umbraco.directives")
self.setPropertyError = function (errorMsg) {
$scope.property.propertyErrorMessage = errorMsg;
};
+
+ $scope.onCopy = function () {
+ $scope.$broadcast("propertyCopy");
+ }
}
};
});
diff --git a/src/Umbraco.Web.UI.Client/src/views/components/property/umb-property.html b/src/Umbraco.Web.UI.Client/src/views/components/property/umb-property.html
index 9d2588484c..01d8f2b616 100644
--- a/src/Umbraco.Web.UI.Client/src/views/components/property/umb-property.html
+++ b/src/Umbraco.Web.UI.Client/src/views/components/property/umb-property.html
@@ -17,6 +17,9 @@
*
+
+
+
diff --git a/src/Umbraco.Web.UI.Client/src/views/propertyeditors/nestedcontent/nestedcontent.controller.js b/src/Umbraco.Web.UI.Client/src/views/propertyeditors/nestedcontent/nestedcontent.controller.js
index 4e8b35a276..2884212c85 100644
--- a/src/Umbraco.Web.UI.Client/src/views/propertyeditors/nestedcontent/nestedcontent.controller.js
+++ b/src/Umbraco.Web.UI.Client/src/views/propertyeditors/nestedcontent/nestedcontent.controller.js
@@ -547,12 +547,19 @@ angular.module("umbraco").controller("Umbraco.PropertyEditors.NestedContent.Prop
$scope.realCurrentNode = newVal;
});
- var unsubscribe = $scope.$on("formSubmitting", function (ev, args) {
+ var unsubscribe = [];
+ unsubscribe.push($scope.$on("formSubmitting", function (ev, args) {
updateModel();
- });
+ }));
+ unsubscribe.push($scope.$on("propertyCopy", function (ev, args) {
+ console.log("NC: I be the copy function by broadcast", $scope.model.alias);
+ }));
$scope.$on("$destroy", function () {
- unsubscribe();
+ console.log("Unsubscribing", unsubscribe.length)
+ for (var u in unsubscribe) {
+ unsubscribe[u]();
+ }
});
}
diff --git a/src/Umbraco.Web/Models/ContentEditing/ContentPropertyDisplay.cs b/src/Umbraco.Web/Models/ContentEditing/ContentPropertyDisplay.cs
index 39a4718dd0..add557c8fc 100644
--- a/src/Umbraco.Web/Models/ContentEditing/ContentPropertyDisplay.cs
+++ b/src/Umbraco.Web/Models/ContentEditing/ContentPropertyDisplay.cs
@@ -33,6 +33,9 @@ namespace Umbraco.Web.Models.ContentEditing
[DataMember(Name = "hideLabel")]
public bool HideLabel { get; set; }
+ [DataMember(Name = "canCopy")]
+ public bool CanCopy { get; set; }
+
[DataMember(Name = "validation")]
public PropertyTypeValidation Validation { get; set; }
diff --git a/src/Umbraco.Web/Models/Mapping/ContentPropertyDisplayMapper.cs b/src/Umbraco.Web/Models/Mapping/ContentPropertyDisplayMapper.cs
index 8a45548e9c..7a10f7062b 100644
--- a/src/Umbraco.Web/Models/Mapping/ContentPropertyDisplayMapper.cs
+++ b/src/Umbraco.Web/Models/Mapping/ContentPropertyDisplayMapper.cs
@@ -39,6 +39,7 @@ namespace Umbraco.Web.Models.Mapping
dest.Description = originalProp.PropertyType.Description;
dest.Label = originalProp.PropertyType.Name;
dest.HideLabel = valEditor.HideLabel;
+ dest.CanCopy = valEditor.CanCopy;
//add the validation information
dest.Validation.Mandatory = originalProp.PropertyType.Mandatory;
diff --git a/src/Umbraco.Web/PropertyEditors/NestedContentPropertyEditor.cs b/src/Umbraco.Web/PropertyEditors/NestedContentPropertyEditor.cs
index 6dee2f78b5..6fcb7ea642 100644
--- a/src/Umbraco.Web/PropertyEditors/NestedContentPropertyEditor.cs
+++ b/src/Umbraco.Web/PropertyEditors/NestedContentPropertyEditor.cs
@@ -18,7 +18,7 @@ namespace Umbraco.Web.PropertyEditors
///
/// Represents a nested content property editor.
///
- [DataEditor(Constants.PropertyEditors.Aliases.NestedContent, "Nested Content", "nestedcontent", ValueType = "JSON", Group = "lists", Icon = "icon-thumbnail-list")]
+ [DataEditor(Constants.PropertyEditors.Aliases.NestedContent, "Nested Content", "nestedcontent", ValueType = "JSON", Group = "lists", Icon = "icon-thumbnail-list", CanCopy = true)]
public class NestedContentPropertyEditor : DataEditor
{
private readonly Lazy _propertyEditors;