diff --git a/PlexRequests.UI/Content/requests.js b/PlexRequests.UI/Content/requests.js
index 032da43b1..611d89fba 100644
--- a/PlexRequests.UI/Content/requests.js
+++ b/PlexRequests.UI/Content/requests.js
@@ -6,11 +6,12 @@
});
var searchSource = $("#search-template").html();
+var albumSource = $("#album-template").html();
var searchTemplate = Handlebars.compile(searchSource);
+var albumTemplate = Handlebars.compile(albumSource);
var movieTimer = 0;
var tvimer = 0;
-var noResultsHtml = "
" +
- "
Sorry, there are no {0} requests yet!
";
+
var mixItUpDefault = {
animation: { enable: true },
load: {
@@ -86,7 +87,7 @@ $('#approveMovies').click(function (e) {
generateNotify("Something went wrong!", "danger");
},
complete: function (e) {
- finishLoading(buttonId, "success", origHtml)
+ finishLoading(buttonId, "success", origHtml);
}
});
});
@@ -116,7 +117,7 @@ $('#approveTVShows').click(function (e) {
generateNotify("Something went wrong!", "danger");
},
complete: function (e) {
- finishLoading(buttonId, "success", origHtml)
+ finishLoading(buttonId, "success", origHtml);
}
});
});
@@ -384,6 +385,8 @@ function mixItUpConfig(activeState) {
function initLoad() {
movieLoad();
tvLoad();
+ albumLoad();
+ //noResultsMusic
}
function movieLoad() {
@@ -432,6 +435,29 @@ function tvLoad() {
});
};
+function albumLoad() {
+ var $albumL = $('#MusicList');
+ if ($albumL.mixItUp('isLoaded')) {
+ activeState = $albumL.mixItUp('getState');
+ $albumL.mixItUp('destroy');
+ }
+ $albumL.html("");
+
+ $.ajax("/requests/albums/").success(function (results) {
+ if (results.length > 0) {
+ results.forEach(function (result) {
+ var context = buildRequestContext(result, "album");
+ var html = searchTemplate(context);
+ $albumL.append(html);
+ });
+ }
+ else {
+ $albumL.html(noResultsMusic.format("albums"));
+ }
+ $albumL.mixItUp(mixItUpConfig());
+ });
+};
+
// Builds the request context.
function buildRequestContext(result, type) {
var context = {
@@ -455,8 +481,11 @@ function buildRequestContext(result, type) {
requestId: result.id,
adminNote: result.adminNotes,
imdb: result.imdbId,
- seriesRequested: result.tvSeriesRequestType
+ seriesRequested: result.tvSeriesRequestType,
+ coverArtUrl: result.coverArtUrl,
+
};
return context;
-}
\ No newline at end of file
+}
+
diff --git a/PlexRequests.UI/Content/search.js b/PlexRequests.UI/Content/search.js
index 126d65634..1c2daa06d 100644
--- a/PlexRequests.UI/Content/search.js
+++ b/PlexRequests.UI/Content/search.js
@@ -9,10 +9,7 @@ var searchSource = $("#search-template").html();
var musicSource = $("#music-template").html();
var searchTemplate = Handlebars.compile(searchSource);
var musicTemplate = Handlebars.compile(musicSource);
-var noResultsHtml = "" +
- "
Sorry, we didn't find any results!
";
-var noResultsMusic = "" +
- "
Sorry, we didn't find any results!
";
+
var searchTimer = 0;
// Type in movie search
diff --git a/PlexRequests.UI/Content/site.js b/PlexRequests.UI/Content/site.js
index 698178126..72ec831fa 100644
--- a/PlexRequests.UI/Content/site.js
+++ b/PlexRequests.UI/Content/site.js
@@ -44,4 +44,9 @@ function finishLoading(elementId, originalCss, html) {
$('#' + elementId).removeClass("btn-primary-outline");
$('#' + elementId).addClass("btn-" + originalCss + "-outline");
$('#' + elementId).html(html);
-}
\ No newline at end of file
+}
+
+var noResultsHtml = "" +
+ "
Sorry, we didn't find any results!
";
+var noResultsMusic = "" +
+ "
Sorry, we didn't find any results!
";
\ No newline at end of file
diff --git a/PlexRequests.UI/Models/RequestViewModel.cs b/PlexRequests.UI/Models/RequestViewModel.cs
index 292bc39df..575681007 100644
--- a/PlexRequests.UI/Models/RequestViewModel.cs
+++ b/PlexRequests.UI/Models/RequestViewModel.cs
@@ -51,5 +51,6 @@ namespace PlexRequests.UI.Models
public string OtherMessage { get; set; }
public string AdminNotes { get; set; }
public string TvSeriesRequestType { get; set; }
+ public string MusicBrainzId { get; set; }
}
}
diff --git a/PlexRequests.UI/Modules/RequestsModule.cs b/PlexRequests.UI/Modules/RequestsModule.cs
index 2d12ab4a1..7d7d7b8ad 100644
--- a/PlexRequests.UI/Modules/RequestsModule.cs
+++ b/PlexRequests.UI/Modules/RequestsModule.cs
@@ -56,6 +56,7 @@ namespace PlexRequests.UI.Modules
Get["/"] = _ => LoadRequests();
Get["/movies"] = _ => GetMovies();
Get["/tvshows"] = _ => GetTvShows();
+ Get["/albums"] = _ => GetAlbumRequests();
Post["/delete"] = _ => DeleteRequest((int)Request.Form.id);
Post["/reportissue"] = _ => ReportIssue((int)Request.Form.requestId, (IssueState)(int)Request.Form.issue, null);
Post["/reportissuecomment"] = _ => ReportIssue((int)Request.Form.requestId, IssueState.Other, (string)Request.Form.commentArea);
@@ -156,6 +157,47 @@ namespace PlexRequests.UI.Modules
return Response.AsJson(viewModel);
}
+ private Response GetAlbumRequests()
+ {
+ var settings = PrSettings.GetSettings();
+ var isAdmin = Context.CurrentUser.IsAuthenticated();
+ var dbAlbum = Service.GetAll().Where(x => x.Type == RequestType.Album);
+ if (settings.UsersCanViewOnlyOwnRequests && !isAdmin)
+ {
+ dbAlbum = dbAlbum.Where(x => x.UserHasRequested(Username));
+ }
+
+ var viewModel = dbAlbum.Select(album => {
+ return new RequestViewModel
+ {
+ ProviderId = album.ProviderId,
+ Type = album.Type,
+ Status = album.Status,
+ ImdbId = album.ImdbId,
+ Id = album.Id,
+ PosterPath = album.PosterPath,
+ ReleaseDate = album.ReleaseDate.Humanize(),
+ ReleaseDateTicks = album.ReleaseDate.Ticks,
+ RequestedDate = DateTimeHelper.OffsetUTCDateTime(album.RequestedDate, DateTimeOffset).Humanize(),
+ RequestedDateTicks = DateTimeHelper.OffsetUTCDateTime(album.RequestedDate, DateTimeOffset).Ticks,
+ Approved = album.Available || album.Approved,
+ Title = album.Title,
+ Overview = album.Overview,
+ RequestedUsers = isAdmin ? album.AllUsers.ToArray() : new string[] { },
+ ReleaseYear = album.ReleaseDate.Year.ToString(),
+ Available = album.Available,
+ Admin = isAdmin,
+ Issues = album.Issues.Humanize(LetterCasing.Title),
+ OtherMessage = album.OtherMessage,
+ AdminNotes = album.AdminNote,
+ TvSeriesRequestType = album.SeasonsRequested,
+ MusicBrainzId = album.MusicBrainzId
+ };
+ }).ToList();
+
+ return Response.AsJson(viewModel);
+ }
+
private Response DeleteRequest(int requestid)
{
if (!Context.CurrentUser.IsAuthenticated())
diff --git a/PlexRequests.UI/Modules/SearchModule.cs b/PlexRequests.UI/Modules/SearchModule.cs
index ee4f518f5..77783a7ba 100644
--- a/PlexRequests.UI/Modules/SearchModule.cs
+++ b/PlexRequests.UI/Modules/SearchModule.cs
@@ -512,7 +512,8 @@ namespace PlexRequests.UI.Modules
Type = RequestType.Album,
ProviderId = 0,
RequestedUsers = new List() { Username },
- Status = albumInfo.status
+ Status = albumInfo.status,
+ Issues = IssueState.None
};
diff --git a/PlexRequests.UI/Views/Requests/Index.cshtml b/PlexRequests.UI/Views/Requests/Index.cshtml
index 5f47fe7fb..e2b3d9bd6 100644
--- a/PlexRequests.UI/Views/Requests/Index.cshtml
+++ b/PlexRequests.UI/Views/Requests/Index.cshtml
@@ -16,7 +16,7 @@
}
@if (Model.SearchForMusic)
{
- Music
+ Albums
}
@@ -233,6 +233,119 @@
+
+