diff --git a/src/Umbraco.Web.UI.Client/src/common/resources/redirecturls.resource.js b/src/Umbraco.Web.UI.Client/src/common/resources/redirecturls.resource.js new file mode 100644 index 0000000000..f79c773eea --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/common/resources/redirecturls.resource.js @@ -0,0 +1,127 @@ +/** + * @ngdoc service + * @name umbraco.resources.redirectUrlResource + * @function + * + * @description + * Used by the redirect url dashboard to get urls and send requests to remove redirects. + */ +(function() { + 'use strict'; + + function redirectUrlsResource($http, umbRequestHelper) { + + var redirectBaseUrl = "backoffice/api/RedirectUrlManagement/"; + + /** + * @ngdoc function + * @name umbraco.resources.redirectUrlResource#searchRedirectUrls + * @methodOf umbraco.resources.redirectUrlResource + * @function + * + * @description + * Called to search redirects + * ##usage + *
+         * redirectUrlsResource.searchRedirectUrls("", 0, 20)
+         *    .then(function(response) {
+         *
+         *    });
+         * 
+ * @param {String} searchTerm Searh term + * @param {Int} pageIndex index of the page to retrive items from + * @param {Int} pageSize The number of items on a page + */ + function searchRedirectUrls(searchTerm, pageIndex, pageSize) { + return umbRequestHelper.resourcePromise( + $http.get(redirectBaseUrl + "SearchRedirectUrls/?searchTerm=" + searchTerm + "&page=" + pageIndex + "&pageSize=" + pageSize), + "Failed to retrieve redirects" + ); + } + + /** + * @ngdoc function + * @name umbraco.resources.redirectUrlResource#deleteRedirectUrl + * @methodOf umbraco.resources.redirectUrlResource + * @function + * + * @description + * Called to delete a redirect + * ##usage + *
+         * redirectUrlsResource.deleteRedirectUrl(1234)
+         *    .then(function() {
+         *
+         *    });
+         * 
+ * @param {Int} id Id of the redirect + */ + function deleteRedirectUrl(id) { + return umbRequestHelper.resourcePromise( + $http.post(redirectBaseUrl + "DeleteRedirectUrl/" + id), + "Failed to remove redirect" + ); + } + + /** + * @ngdoc function + * @name umbraco.resources.redirectUrlResource#toggleUrlTracker + * @methodOf umbraco.resources.redirectUrlResource + * @function + * + * @description + * Called to enable or disable redirect url tracker + * ##usage + *
+         * redirectUrlsResource.toggleUrlTracker(true)
+         *    .then(function() {
+         *
+         *    });
+         * 
+ * @param {Bool} disable true/false to disable/enable the url tracker + */ + function toggleUrlTracker(disable) { + return umbRequestHelper.resourcePromise( + $http.post(redirectBaseUrl + "ToggleUrlTracker/?disable=" + disable), + "Failed to toggle redirect url tracker" + ); + } + + /** + * @ngdoc function + * @name umbraco.resources.redirectUrlResource#getPublishedUrl + * @methodOf umbraco.resources.redirectUrlResource + * @function + * + * @description + * Called to get the published url for a content item + * ##usage + *
+         * redirectUrlsResource.getPublishedUrl(1234)
+         *    .then(function() {
+         *
+         *    });
+         * 
+ * @param {Int} contentId The content id of the item to get the published url + */ + function getPublishedUrl(contentId) { + return umbRequestHelper.resourcePromise( + $http.get(redirectBaseUrl + "GetPublishedUrl/?id=" + contentId), + "Failed to get published url" + ); + } + + var resource = { + searchRedirectUrls: searchRedirectUrls, + deleteRedirectUrl: deleteRedirectUrl, + toggleUrlTracker: toggleUrlTracker, + getPublishedUrl: getPublishedUrl + }; + + return resource; + + } + + angular.module('umbraco.resources').factory('redirectUrlsResource', redirectUrlsResource); + +})(); diff --git a/src/Umbraco.Web.UI.Client/src/views/dashboard/developer/redirecturls.controller.js b/src/Umbraco.Web.UI.Client/src/views/dashboard/developer/redirecturls.controller.js index 0bf6c60427..439ecb08bd 100644 --- a/src/Umbraco.Web.UI.Client/src/views/dashboard/developer/redirecturls.controller.js +++ b/src/Umbraco.Web.UI.Client/src/views/dashboard/developer/redirecturls.controller.js @@ -1,4 +1,4 @@ -angular.module("umbraco").controller("Umbraco.Dashboard.RedirectUrlsController", function($scope, $http, angularHelper, notificationsService, entityResource, $routeParams, $q) { +angular.module("umbraco").controller("Umbraco.Dashboard.RedirectUrlsController", function($scope, redirectUrlsResource, notificationsService, $q) { //...todo //search by url or url part //search by domain @@ -39,23 +39,23 @@ angular.module("umbraco").controller("Umbraco.Dashboard.RedirectUrlsController", searchTerm = ""; } - $http.get("backoffice/api/RedirectUrlManagement/SearchRedirectUrls/?searchTerm=" + searchTerm + "&page=" + $scope.pagination.pageIndex + "&pageSize=" + $scope.pagination.pageSize).then(function(response) { + redirectUrlsResource.searchRedirectUrls(searchTerm, $scope.pagination.pageIndex, $scope.pagination.pageSize).then(function(response) { - console.log(response); - - $scope.redirectUrls = response.data.SearchResults; + $scope.redirectUrls = response.SearchResults; // update pagination - $scope.pagination.pageIndex = response.data.CurrentPage; - $scope.pagination.pageNumber = response.data.CurrentPage + 1; - $scope.pagination.totalPages = response.data.PageCount; + $scope.pagination.pageIndex = response.CurrentPage; + $scope.pagination.pageNumber = response.CurrentPage + 1; + $scope.pagination.totalPages = response.PageCount; // Set enable/disable state for url tracker - $scope.dashboard.UrlTrackerDisabled = response.data.UrlTrackerDisabled; + $scope.dashboard.UrlTrackerDisabled = response.UrlTrackerDisabled; - angular.forEach($scope.redirectUrls, function(item) { - $http.get("backoffice/api/RedirectUrlManagement/GetPublishedUrl/?id=" + item.ContentId).then(function(response) { - item.ContentUrl = response.data; + angular.forEach($scope.redirectUrls, function(redirect) { + redirectUrlsResource.getPublishedUrl(redirect.ContentId).then(function(response) { + redirect.ContentUrl = response; + }, function(error) { + notificationsService.error("Redirect Url Error!", "Failed to get published url for " + redirect.Url); }); }); @@ -65,44 +65,42 @@ angular.module("umbraco").controller("Umbraco.Dashboard.RedirectUrlsController", }; $scope.removeRedirect = function(redirectToDelete) { - $http.post("backoffice/api/RedirectUrlManagement/DeleteRedirectUrl/" + redirectToDelete.Id).then(function(response) { - if (response.status === 200) { - var index = $scope.redirectUrls.indexOf(redirectToDelete); - $scope.redirectUrls.splice(index, 1); + redirectUrlsResource.deleteRedirectUrl(redirectToDelete.Id).then(function() { + + var index = $scope.redirectUrls.indexOf(redirectToDelete); + $scope.redirectUrls.splice(index, 1); + notificationsService.success("Redirect Url Removed!", "Redirect Url " + redirectToDelete.Url + " has been deleted"); + + }, function(error) { + + notificationsService.error("Redirect Url Error!", "Redirect Url " + redirectToDelete.Url + " was not deleted"); - notificationsService.success("Redirect Url Removed!", "Redirect Url " + redirectToDelete.Url + " has been deleted"); - } else { - notificationsService.warning("Redirect Url Error!", "Redirect Url " + redirectToDelete.Url + " was not deleted"); - } }); + }; $scope.disableUrlTracker = function() { var toggleConfirm = confirm("Are you sure you want to disable the URL tracker?"); if (toggleConfirm) { - $http.post("backoffice/api/RedirectUrlManagement/ToggleUrlTracker/?disable=true").then(function(response) { - if (response.status === 200) { - notificationsService.success("URL Tracker has now been disabled"); - activate(); - } else { - notificationsService.warning("Error disabling the URL Tracker, more information can be found in your log file."); - } + + redirectUrlsResource.toggleUrlTracker(true).then(function() { + activate(); + notificationsService.success("URL Tracker has now been disabled"); + }, function(error) { + notificationsService.warning("Error disabling the URL Tracker, more information can be found in your log file."); }); + } }; $scope.enableUrlTracker = function() { - if (toggleConfirm) { - $http.post("backoffice/api/RedirectUrlManagement/ToggleUrlTracker/?disable=false").then(function(response) { - if (response.status === 200) { - notificationsService.success("URL Tracker has now been enabled"); - activate(); - } else { - notificationsService.warning("Error enabling the URL Tracker, more information can be found in your log file."); - } - }); - } + redirectUrlsResource.toggleUrlTracker(false).then(function() { + activate(); + notificationsService.success("URL Tracker has now been enabled"); + }, function(error) { + notificationsService.warning("Error enabling the URL Tracker, more information can be found in your log file."); + }); }; var filterDebounced = _.debounce(function(e) {