From 2f0ba3ac076cf19bfda9284f89e5bfe4c698fa66 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Fri, 5 Aug 2016 10:51:32 +0200 Subject: [PATCH] First part of html + js cleanup - use angular components in dashboard view + make js fit. --- .../redirecturlsearch.controller.js | 216 ++++++++---------- .../redirecturlsearch.html | 151 +++++++----- 2 files changed, 180 insertions(+), 187 deletions(-) diff --git a/src/Umbraco.Web.UI/App_Plugins/RedirectUrlDashboard/redirecturlsearch.controller.js b/src/Umbraco.Web.UI/App_Plugins/RedirectUrlDashboard/redirecturlsearch.controller.js index 5dc8f901b2..51d50eebd6 100644 --- a/src/Umbraco.Web.UI/App_Plugins/RedirectUrlDashboard/redirecturlsearch.controller.js +++ b/src/Umbraco.Web.UI/App_Plugins/RedirectUrlDashboard/redirecturlsearch.controller.js @@ -1,166 +1,134 @@ -angular.module("umbraco").controller("Umbraco.RedirectUrlSearch", function ($scope, $http, angularHelper, notificationsService, entityResource, $routeParams) { +angular.module("umbraco").controller("Umbraco.RedirectUrlSearch", function ($scope, $http, angularHelper, notificationsService, entityResource, $routeParams, $q) { //...todo //search by url or url part //search by domain //display domain in dashboard results? - $scope.isSearch = false; - $scope.hasResults = false; + //used to cancel any request in progress if another one needs to take it's place + var canceler = null; - $scope.pagination = []; - $scope.isNew = false; - $scope.actionInProgress = false; - $scope.listViewResultSet = { - totalPages: 0, - items: [] + $scope.dashboard = { + searchTerm: "", + loading: false, + UrlTrackerDisabled: false }; - $scope.options = { - pageSize: 20, - pageNumber: ($routeParams.page && Number($routeParams.page) !== NaN && Number($routeParams.page) > 0) ? $routeParams.page : 1 + $scope.pagination = { + pageIndex: 0, + pageNumber: 1, + totalPages: 1, + pageSize: 20 }; - $scope.next = function () { - if ($scope.options.pageNumber < $scope.pageCount) { - $scope.options.pageNumber++; - $scope.currentPage++; - $scope.load(); - } - }; + function activate() { + $scope.search(); + } - $scope.goToPage = function (pageNumber) { - $scope.options.pageNumber = pageNumber + 1; - $scope.currentPage = pageNumber; - $scope.load(); - }; - - $scope.prev = function () { - if ($scope.options.pageNumber > 1) { - $scope.options.pageNumber--; - $scope.currentPage--; - $scope.load(); - } + $scope.goToPage = function(pageNumber) { + $scope.pagination.pageIndex = pageNumber - 1; + $scope.pagination.pageNumber = pageNumber; + $scope.search(); }; $scope.search = function () { - var searchTerm = $scope.searchTerm; + + $scope.dashboard.loading = true; + + var searchTerm = $scope.dashboard.searchTerm; if (searchTerm === undefined) { searchTerm = ""; } - $http.get("backoffice/api/RedirectUrlManagement/SearchRedirectUrls/?searchTerm=" + searchTerm + "&page=" + $scope.currentPage + "&pageSize=" + $scope.options.pageSize).then(function (response) { - var matchingItems = response.data; - $scope.isSearch = true; - $scope.StatusMessage = matchingItems.StatusMessage; - $scope.hasResults = matchingItems.HasSearchResults; - $scope.redirectUrls = matchingItems.SearchResults; + $http.get("backoffice/api/RedirectUrlManagement/SearchRedirectUrls/?searchTerm=" + searchTerm + "&page=" + $scope.pagination.pageIndex + "&pageSize=" + $scope.pagination.pageSize).then(function (response) { - $scope.urlTrackerDisabled = matchingItems.UrlTrackerDisabled; - $scope.action = ""; - if ($scope.urlTrackerDisabled !== true) { - $scope.action = "Disable"; - } else { - $scope.action = "Enable"; - } + console.log(response); - $scope.pageCount = matchingItems.PageCount; - $scope.totalCount = matchingItems.TotalCount; - $scope.currentPage = matchingItems.CurrentPage; - $scope.options.pageNumber = matchingItems.CurrentPage + 1; - - if ($scope.options.pageNumber > $scope.pageCount) { - $scope.options.pageNumber = $scope.pageCount; - } + $scope.redirectUrls = response.data.SearchResults; - $scope.pagination = []; + // update pagination + $scope.pagination.pageIndex = response.data.CurrentPage; + $scope.pagination.pageNumber = response.data.CurrentPage + 1; + $scope.pagination.totalPages = response.data.PageCount; - var i; - if ($scope.pageCount <= 10) { - for (i = 0; i < $scope.pageCount; i++) { - $scope.pagination.push({ - val: (i + 1), - isActive: $scope.options.pageNumber === (i + 1) - }); - } - } else { - //if there is more than 10 pages, we need to do some fancy bits + // Set enable/disable state for url tracker + $scope.dashboard.UrlTrackerDisabled = response.data.UrlTrackerDisabled; - //get the max index to start - var maxIndex = $scope.pageCount - 10; - //set the start, but it can't be below zero - var start = Math.max($scope.options.pageNumber - 5, 0); - //ensure that it's not too far either - start = Math.min(maxIndex, start); - - for (i = start; i < (10 + start) ; i++) { - $scope.pagination.push({ - val: (i + 1), - isActive: $scope.options.pageNumber === (i + 1) - }); - } - - //now, if the start is greater than 0 then '1' will not be displayed, so do the elipses thing - if (start > 0) { - $scope.pagination.unshift({ name: "First", val: 1, isActive: false }, { val: "...", isActive: false }); - } - - //same for the end - if (start < maxIndex) { - $scope.pagination.push({ val: "...", isActive: false }, { name: "Last", val: $scope.pageCount, isActive: false }); - } - } - - angular.forEach($scope.redirectUrls, function (item) { + angular.forEach($scope.redirectUrls, function (item) { $http.get("backoffice/api/RedirectUrlManagement/GetPublishedUrl/?id=" + item.ContentId).then(function (response) { item.ContentUrl = response.data; - }); + }); }); - }); - }; - $scope.load = function () { - // $scope.searchTerm = ""; - $scope.search(); + $scope.dashboard.loading = false; + + }); }; $scope.removeRedirect = function (redirectToDelete) { $http.post("backoffice/api/RedirectUrlManagement/DeleteRedirectUrl/" + redirectToDelete.Id).then(function (response) { if (response.status === 200) { - notificationsService.success("Redirect Url Removed!", "Redirect Url " + redirectToDelete.Url + " has been deleted"); - // now remove from table client sides - var index = -1; - var urlArr = eval($scope.redirectUrls); - for (var i = 0; i < urlArr.length; i++) { - if (urlArr[i].Id === redirectToDelete.Id) { - index = i; - break; - } - } - if (index === -1) { - notificationsService.warning("Redirect Url Removal Error!", "Redirect Url " + redirectToDelete.Url + " may have already been removed"); - } + + var index = $scope.redirectUrls.indexOf(redirectToDelete); $scope.redirectUrls.splice(index, 1); + + 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.toggleUrlTracker = function () { - var toggleConfirm = confirm("Are you sure you want to " + $scope.action.toLowerCase() + " the URL tracker?"); + $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=" + (!$scope.urlTrackerDisabled)).then(function (response) { - if (response.status === 200) { - notificationsService.success("URL Tracker has now been " + $scope.action.toLowerCase() + "d."); - - $scope.load(); - } else { - notificationsService.warning("Error " + $scope.action.toLowerCase() + "ing the URL Tracker, more information can be found in your log file."); - } - }); + $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."); + } + }); } }; - $scope.load(); -}); \ No newline at end of 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."); + } + }); + } + }; + + var filterDebounced = _.debounce(function(e) { + + $scope.$apply(function () { + + //a canceler exists, so perform the cancelation operation and reset + if (canceler) { + canceler.resolve(); + canceler = $q.defer(); + } + else { + canceler = $q.defer(); + } + + $scope.search(); + + }); + + }, 200); + + $scope.filter = function() { + filterDebounced(); + }; + + activate(); + +}); diff --git a/src/Umbraco.Web.UI/App_Plugins/RedirectUrlDashboard/redirecturlsearch.html b/src/Umbraco.Web.UI/App_Plugins/RedirectUrlDashboard/redirecturlsearch.html index dcc3c01b90..8c4a342aaa 100644 --- a/src/Umbraco.Web.UI/App_Plugins/RedirectUrlDashboard/redirecturlsearch.html +++ b/src/Umbraco.Web.UI/App_Plugins/RedirectUrlDashboard/redirecturlsearch.html @@ -1,73 +1,98 @@
-
- -
+ -

Redirect Url Management

-

When you move and rename pages in Umbraco, 301 permanent redirects are automatically created

-

Here is a list of the redirects you

+ -
-
- -
- + + + + + + + + + + + + + + + + + + + + + +
+ +
+
+
+
Original Url
+
Redirected To
+
Date Created
+
+ +
+ +
+ +
+ +
+ + + + + +
+ {{redirectUrl.CreateDateUtc | date:'medium'}} +
+ +
+ Edit + +
+ +
+ +
+
-
- - - - +
+ + +
- - - - - - - - - - - - - - - -
Original UrlRedirected ToDate CreatedRemove
{{redirectUrl.Url}}{{redirectUrl.ContentUrl}} {{redirectUrl.CreateDateUtc | date:'medium'}}
-
-
- - -
-