diff --git a/src/Umbraco.Web.UI/Umbraco.Web.UI.csproj b/src/Umbraco.Web.UI/Umbraco.Web.UI.csproj index da577d4ad0..f2be24e528 100644 --- a/src/Umbraco.Web.UI/Umbraco.Web.UI.csproj +++ b/src/Umbraco.Web.UI/Umbraco.Web.UI.csproj @@ -40,8 +40,7 @@ v4.5 true - - + 44319 @@ -579,6 +578,8 @@ + + @@ -638,6 +639,7 @@ + 404handlers.config diff --git a/src/Umbraco.Web.UI/config/Dashboard.config b/src/Umbraco.Web.UI/config/Dashboard.config index df45708e0f..cc20f70654 100644 --- a/src/Umbraco.Web.UI/config/Dashboard.config +++ b/src/Umbraco.Web.UI/config/Dashboard.config @@ -109,4 +109,14 @@ +
+ + developer + + + + /App_Plugins/RedirectUrlDashboard/redirecturlsearch.html + + +
diff --git a/src/Umbraco.Web/Redirects/RedirectUrlManagementController.cs b/src/Umbraco.Web/Redirects/RedirectUrlManagementController.cs new file mode 100644 index 0000000000..27791136e1 --- /dev/null +++ b/src/Umbraco.Web/Redirects/RedirectUrlManagementController.cs @@ -0,0 +1,65 @@ +using System.Net.Http; +using System.Text; +using System.Web.Http; +using Umbraco.Web.WebApi; + +namespace Umbraco.Web.Redirects +{ + public class RedirectUrlManagementController : UmbracoAuthorizedApiController + { + //add paging + [HttpGet] + public RedirectUrlSearchResult SearchRedirectUrls(string searchTerm, int page = 0) + { + + int pageSize = 20; + var searchResult = new RedirectUrlSearchResult(); + var redirectUrlService = Services.RedirectUrlService; + long resultCount = 0L; + // need endpoint for search functionality + // by url, by domain ? it's the url that you want to find them by, that's what you see.. + + var redirects = redirectUrlService.GetAllRedirectUrls(page, 20, out resultCount); + searchResult.SearchResults = redirects; + searchResult.TotalCount = resultCount; + searchResult.CurrentPage = page; + //hmm how many results 'could there be ? + searchResult.PageCount = ((int)resultCount + pageSize - 1) / pageSize; + + searchResult.HasSearchResults = resultCount > 0; + searchResult.HasExactMatch = (resultCount == 1); + return searchResult; + + } + + [HttpGet] + public HttpResponseMessage GetPublishedUrl(int id) + { + var publishedUrl = "#"; + if (id > 0) + { + publishedUrl = Umbraco.Url(id); + } + + return new HttpResponseMessage { Content = new StringContent(publishedUrl, Encoding.UTF8, "text/html") }; + + } + + [HttpPost] + public HttpResponseMessage DeleteRedirectUrl(int id) + { + + var redirectUrlService = Services.RedirectUrlService; + // has the redirect already been deleted ? + //var redirectUrl = redirectUrlService.GetById(redirectUrl.Id); + //if (redirectUrl== null) + //{ + // return new HttpResponseMessage(System.Net.HttpStatusCode.NotFound); + //} + redirectUrlService.Delete(id); + return new HttpResponseMessage(System.Net.HttpStatusCode.OK); + } + + + } +} \ No newline at end of file diff --git a/src/Umbraco.Web/Redirects/RedirectUrlSearchResults.cs b/src/Umbraco.Web/Redirects/RedirectUrlSearchResults.cs new file mode 100644 index 0000000000..1dac259a88 --- /dev/null +++ b/src/Umbraco.Web/Redirects/RedirectUrlSearchResults.cs @@ -0,0 +1,16 @@ +using System.Collections.Generic; +using Umbraco.Core.Models; + +namespace Umbraco.Web.Redirects +{ + public class RedirectUrlSearchResult + { + public string StatusMessage { get; set; } + public IEnumerable SearchResults { get; set; } + public bool HasSearchResults { get; set; } + public bool HasExactMatch { get; set; } + public long TotalCount { get; set; } + public int PageCount { get; set; } + public int CurrentPage { get; set; } + } +} \ No newline at end of file diff --git a/src/Umbraco.Web/Umbraco.Web.csproj b/src/Umbraco.Web/Umbraco.Web.csproj index d1cab1b52d..78b88577a4 100644 --- a/src/Umbraco.Web/Umbraco.Web.csproj +++ b/src/Umbraco.Web/Umbraco.Web.csproj @@ -391,6 +391,8 @@ + +