diff --git a/src/Umbraco.Web.UI.Client/src/common/resources/media.resource.js b/src/Umbraco.Web.UI.Client/src/common/resources/media.resource.js index 951a4d182f..71676bab7c 100644 --- a/src/Umbraco.Web.UI.Client/src/common/resources/media.resource.js +++ b/src/Umbraco.Web.UI.Client/src/common/resources/media.resource.js @@ -61,8 +61,53 @@ function mediaResource($q, $http, umbDataFormatter, umbRequestHelper) { parentId: args.parentId, idSortOrder: args.sortedIds }), - 'Failed to sort content'); + 'Failed to sort media'); }, + + /** + * @ngdoc method + * @name umbraco.resources.mediaResource#move + * @methodOf umbraco.resources.mediaResource + * + * @description + * Moves a node underneath a new parentId + * + * ##usage + *
+ * mediaResource.move({ parentId: 1244, id: 123 })
+ * .then(function() {
+ * alert("node was moved");
+ * }, function(err){
+ * alert("node didnt move:" + err.data.Message);
+ * });
+ *
+ * @param {Object} args arguments object
+ * @param {Int} args.idd the ID of the node to move
+ * @param {Int} args.parentId the ID of the parent node to move to
+ * @returns {Promise} resourcePromise object.
+ *
+ */
+ move: function (args) {
+ if (!args) {
+ throw "args cannot be null";
+ }
+ if (!args.parentId) {
+ throw "args.parentId cannot be null";
+ }
+ if (!args.id) {
+ throw "args.id cannot be null";
+ }
+
+ return umbRequestHelper.resourcePromise(
+ $http.post(umbRequestHelper.getApiUrl("mediaApiBaseUrl", "PostMove"),
+ {
+ parentId: args.parentId,
+ id: args.id
+ }),
+ 'Failed to move media');
+ },
+
+
/**
* @ngdoc method
* @name umbraco.resources.mediaResource#getById
diff --git a/src/Umbraco.Web.UI.Client/src/views/media/media.move.controller.js b/src/Umbraco.Web.UI.Client/src/views/media/media.move.controller.js
new file mode 100644
index 0000000000..8a7d807c59
--- /dev/null
+++ b/src/Umbraco.Web.UI.Client/src/views/media/media.move.controller.js
@@ -0,0 +1,38 @@
+//used for the media picker dialog
+angular.module("umbraco").controller("Umbraco.Editors.Media.MoveController",
+ function ($scope, eventsService, mediaResource, $log) {
+ var dialogOptions = $scope.$parent.dialogOptions;
+
+ $scope.dialogTreeEventHandler = $({});
+ var node = dialogOptions.currentNode;
+
+ $scope.dialogTreeEventHandler.bind("treeNodeSelect", function(ev, args){
+ args.event.preventDefault();
+ args.event.stopPropagation();
+
+ eventsService.publish("Umbraco.Editors.Media.MoveController.Select", args).then(function(args){
+ var c = $(args.event.target.parentElement);
+ if($scope.selectedEl){
+ $scope.selectedEl.find(".temporary").remove();
+ $scope.selectedEl.find("i.umb-tree-icon").show();
+ }
+
+ c.find("i.umb-tree-icon").hide()
+ .after("");
+
+ $scope.target = args.node;
+ $scope.selectedEl = c;
+ });
+ });
+
+ $scope.move = function(){
+ mediaResource.move({parentId: $scope.target.id, id: node.id})
+ .then(function(){
+ $scope.error = false;
+ $scope.success = true;
+ },function(err){
+ $scope.success = false;
+ $scope.error = err;
+ });
+ };
+});
\ No newline at end of file
diff --git a/src/Umbraco.Web.UI.Client/src/views/media/move.html b/src/Umbraco.Web.UI.Client/src/views/media/move.html
new file mode 100644
index 0000000000..ffe8ce58a7
--- /dev/null
+++ b/src/Umbraco.Web.UI.Client/src/views/media/move.html
@@ -0,0 +1,38 @@
++ Choose where to move {{currentNode.name}} to in the tree struture below +
+ +{{error.data.Message}}
+{{currentNode.name}} was moved underneath + {{target.name}}
+ + +