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..b02ab3ffff 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
@@ -93,8 +93,10 @@ angular.module("umbraco").controller("Umbraco.PropertyEditors.NestedContent.Prop
"iconHelper",
"clipboardService",
"eventsService",
-
- function ($scope, $interpolate, $filter, $timeout, contentResource, localizationService, iconHelper, clipboardService, eventsService) {
+ "$routeParams",
+ "editorState",
+
+ function ($scope, $interpolate, $filter, $timeout, contentResource, localizationService, iconHelper, clipboardService, eventsService, $routeParams, editorState) {
var contentTypeAliases = [];
_.each($scope.model.config.contentTypes, function (contentType) {
@@ -160,7 +162,15 @@ angular.module("umbraco").controller("Umbraco.PropertyEditors.NestedContent.Prop
view: "itempicker",
event: $event,
clickPasteItem: function(item) {
- $scope.pasteFromClipboard(item.data);
+ if (item.alias === "nc_pasteAllItems") {
+ _.each(item.data, function (node) {
+ delete node.$$hashKey;
+ $scope.pasteFromClipboard(node);
+ });
+ } else {
+ $scope.pasteFromClipboard(item.data);
+ }
+
$scope.overlayMenu.show = false;
$scope.overlayMenu = null;
},
@@ -194,6 +204,20 @@ angular.module("umbraco").controller("Umbraco.PropertyEditors.NestedContent.Prop
$scope.overlayMenu.size = $scope.overlayMenu.availableItems.length > 6 ? "medium" : "small";
$scope.overlayMenu.pasteItems = [];
+ var nestedContentForPaste = clipboardService.retriveDataOfType("nestedContent", ["nc_copyOfAllItems"]);
+ _.each(nestedContentForPaste, function (nestedContent) {
+ if (_.every(nestedContent.nodes,
+ function(node) {
+ return contentTypeAliases.indexOf(node.contentTypeAlias) >= 0;
+ })) {
+ $scope.overlayMenu.pasteItems.push({
+ alias: "nc_pasteAllItems",
+ name: nestedContent.name, // source property name
+ data: nestedContent.nodes, // all items from source property
+ icon: "icon-bulleted-list"
+ });
+ }
+ });
var availableNodesForPaste = clipboardService.retriveDataOfType("elementType", contentTypeAliases);
_.each(availableNodesForPaste, function (node) {
$scope.overlayMenu.pasteItems.push({
@@ -210,6 +234,7 @@ angular.module("umbraco").controller("Umbraco.PropertyEditors.NestedContent.Prop
$event.stopPropagation();
$event.preventDefault();
clipboardService.clearEntriesOfType("elementType", contentTypeAliases);
+ clipboardService.clearEntriesOfType("nestedContent", ["nc_copyOfAllItems"]);
$scope.overlayMenu.pasteItems = [];// This dialog is not connected via the clipboardService events, so we need to update manually.
};
@@ -359,7 +384,26 @@ angular.module("umbraco").controller("Umbraco.PropertyEditors.NestedContent.Prop
clipboardService.copy("elementType", node.contentTypeAlias, node);
$event.stopPropagation();
}
-
+
+ $scope.clickCopyAll = function () {
+
+ syncCurrentNode();
+
+ var culture = $routeParams.cculture ? $routeParams.cculture : $routeParams.mculture;
+ var activeVariant = _.find(editorState.current.variants, function (v) {
+ return !v.language || v.language.culture === culture;
+ });
+
+ localizationService.localize("content_nestedContentCopyAllItemsName", [$scope.model.label, activeVariant.name]).then(function(data) {
+ var model = {
+ nodes: $scope.nodes,
+ key: "nc_" + $scope.model.alias,
+ name: data
+ };
+ clipboardService.copy("nestedContent", "nc_copyOfAllItems", model);
+ });
+ }
+
$scope.pasteFromClipboard = function(newNode) {
if (newNode === undefined) {
diff --git a/src/Umbraco.Web.UI.Client/src/views/propertyeditors/nestedcontent/nestedcontent.html b/src/Umbraco.Web.UI.Client/src/views/propertyeditors/nestedcontent/nestedcontent.html
index 1eb7311ca7..a3196e8928 100644
--- a/src/Umbraco.Web.UI.Client/src/views/propertyeditors/nestedcontent/nestedcontent.html
+++ b/src/Umbraco.Web.UI.Client/src/views/propertyeditors/nestedcontent/nestedcontent.html
@@ -42,6 +42,9 @@
+
+
+
diff --git a/src/Umbraco.Web.UI/Umbraco/config/lang/en.xml b/src/Umbraco.Web.UI/Umbraco/config/lang/en.xml
index 189bd9f10b..c439ed01c3 100644
--- a/src/Umbraco.Web.UI/Umbraco/config/lang/en.xml
+++ b/src/Umbraco.Web.UI/Umbraco/config/lang/en.xml
@@ -273,6 +273,7 @@
Are you sure you want to delete this item?
Property %0% uses editor %1% which is not supported by Nested Content.
No content types are configured for this property.
+ %0% from %1%
Add another text box
Remove this text box
Content root
diff --git a/src/Umbraco.Web.UI/Umbraco/config/lang/en_us.xml b/src/Umbraco.Web.UI/Umbraco/config/lang/en_us.xml
index 6ce6f82ccc..efcfcdc056 100644
--- a/src/Umbraco.Web.UI/Umbraco/config/lang/en_us.xml
+++ b/src/Umbraco.Web.UI/Umbraco/config/lang/en_us.xml
@@ -277,6 +277,7 @@
Are you sure you want to delete this item?
Property %0% uses editor %1% which is not supported by Nested Content.
No content types are configured for this property.
+ %0% from %1%
Add another text box
Remove this text box
Content root