diff --git a/CHANGELOG.md b/CHANGELOG.md index c317fbc17..ea279eae7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,6 @@ # Changelog -## (unreleased) +## v3.0.3111 (2018-03-27) ### **New Features** @@ -26,6 +26,8 @@ - Added the ability to refresh out backend metadata (#2078) [Jamie] +- Update README.md. [zobe123] + ### **Fixes** - Specific favicons for different platforms. [louis-lau] diff --git a/README.md b/README.md index 3a037145c..9b0e212e1 100644 --- a/README.md +++ b/README.md @@ -11,8 +11,12 @@ ____ ___ +We also now have merch up on Teespring! -[![Report a bug](http://i.imgur.com/xSpw482.png)](https://forums.ombi.io/viewforum.php?f=10) [![Feature request](http://i.imgur.com/mFO0OuX.png)](https://forums.ombi.io/posting.php?mode=post&f=20) +[EU Store](https://teespring.com/stores/ombi-eu) +[US Store](https://teespring.com/stores/ombi-us) + +___ | Service | Stable | Develop | @@ -56,7 +60,7 @@ Supported notifications: ### The difference between Version 3 and 2 -Over the last 8 months, we focused on the main functions on Ombi, a complete rewrite while making it better, faster and more stable. +Over the last year, we focused on the main functions on Ombi, a complete rewrite while making it better, faster and more stable. We have already done most of the work, but some features are still be missing in this first version. We are planning to bring back these features in V3 but for now you can find a list below with a quick comparison of features between v2 and v3. @@ -70,13 +74,13 @@ We are planning to bring back these features in V3 but for now you can find a li | Landing page | Yes (brand new) | Yes | | Login page | Yes (brand new) | Yes | | Custom Notification Messages | Yes | No | -| Sending newsletters | Planned | Yes | +| Sending newsletters | Yes | Yes | | Send a Mass Email | Yes | Yes | | SickRage | Yes | Yes | | CouchPotato | Yes | Yes | | DogNzb | Yes | No | | Issues | Yes | Yes | -| Headphones | No (support dropped) | Yes | +| Headphones | No | Yes | # Feature Requests Feature requests are handled on FeatHub. diff --git a/src/Ombi.Api.Emby/EmbyApi.cs b/src/Ombi.Api.Emby/EmbyApi.cs index 126b3c700..3af6d0dd5 100644 --- a/src/Ombi.Api.Emby/EmbyApi.cs +++ b/src/Ombi.Api.Emby/EmbyApi.cs @@ -77,13 +77,19 @@ namespace Ombi.Api.Emby request.AddJsonBody(body); - request.AddHeader("Accept", "application/json"); - request.AddContentHeader("Content-Type", "application/json"); + AddEmbyHeaders(request); var obj = await Api.Request(request); return obj; } + private static void AddEmbyHeaders(Request request) + { + request.AddHeader("Accept", "application/json"); + request.AddHeader("X-Application", $"Ombi/{AssemblyHelper.GetRuntimeVersion()}"); + request.AddContentHeader("Content-Type", "application/json"); + } + public async Task> GetCollection(string mediaId, string apiKey, string userId, string baseUrl) { var request = new Request($"emby/users/{userId}/items?parentId={mediaId}", baseUrl, HttpMethod.Get); diff --git a/src/Ombi.Notifications/NotificationMessageCurlys.cs b/src/Ombi.Notifications/NotificationMessageCurlys.cs index 8c18fba4c..fb5dd976b 100644 --- a/src/Ombi.Notifications/NotificationMessageCurlys.cs +++ b/src/Ombi.Notifications/NotificationMessageCurlys.cs @@ -29,11 +29,19 @@ namespace Ombi.Notifications ApplicationUrl = (s?.ApplicationUrl.HasValue() ?? false) ? s.ApplicationUrl : string.Empty; ApplicationName = string.IsNullOrEmpty(s?.ApplicationName) ? "Ombi" : s?.ApplicationName; RequestedUser = req?.RequestedUser?.UserName; - UserName = req?.RequestedUser?.UserName; + if (UserName.IsNullOrEmpty()) + { + // Can be set if it's an issue + UserName = req?.RequestedUser?.UserName; + } + Alias = (req?.RequestedUser?.Alias.HasValue() ?? false) ? req?.RequestedUser?.Alias : req?.RequestedUser?.UserName; Title = title; RequestedDate = req?.RequestedDate.ToString("D"); - Type = req?.RequestType.ToString(); + if (Type.IsNullOrEmpty()) + { + Type = req?.RequestType.ToString(); + } Overview = req?.Overview; Year = req?.ReleaseDate.Year.ToString(); PosterImage = req?.RequestType == RequestType.Movie ? @@ -65,11 +73,19 @@ namespace Ombi.Notifications ApplicationUrl = (s?.ApplicationUrl.HasValue() ?? false) ? s.ApplicationUrl : string.Empty; ApplicationName = string.IsNullOrEmpty(s?.ApplicationName) ? "Ombi" : s?.ApplicationName; RequestedUser = req?.RequestedUser?.UserName; - UserName = req?.RequestedUser?.UserName; + if (UserName.IsNullOrEmpty()) + { + // Can be set if it's an issue + UserName = req?.RequestedUser?.UserName; + } Alias = (req?.RequestedUser?.Alias.HasValue() ?? false) ? req?.RequestedUser?.Alias : req?.RequestedUser?.UserName; Title = title; RequestedDate = req?.RequestedDate.ToString("D"); - Type = req?.RequestType.ToString(); + if (Type.IsNullOrEmpty()) + { + Type = req?.RequestType.ToString(); + } + Overview = req?.ParentRequest.Overview; Year = req?.ParentRequest.ReleaseDate.Year.ToString(); PosterImage = req?.RequestType == RequestType.Movie ? @@ -128,6 +144,7 @@ namespace Ombi.Notifications IssueSubject = opts.Substitutes.TryGetValue("IssueSubject", out val) ? val : string.Empty; NewIssueComment = opts.Substitutes.TryGetValue("NewIssueComment", out val) ? val : string.Empty; UserName = opts.Substitutes.TryGetValue("IssueUser", out val) ? val : string.Empty; + Type = opts.Substitutes.TryGetValue("RequestType", out val) ? val : string.Empty; } // User Defined diff --git a/src/Ombi.Schedule/Jobs/Ombi/NewsletterJob.cs b/src/Ombi.Schedule/Jobs/Ombi/NewsletterJob.cs index 42a66dfbe..d8629e410 100644 --- a/src/Ombi.Schedule/Jobs/Ombi/NewsletterJob.cs +++ b/src/Ombi.Schedule/Jobs/Ombi/NewsletterJob.cs @@ -111,7 +111,7 @@ namespace Ombi.Schedule.Jobs.Ombi } } - + if (!test) { // Get the users to send it to @@ -259,19 +259,11 @@ namespace Ombi.Schedule.Jobs.Ombi var ordered = plexContentToSend.OrderByDescending(x => x.AddedAt); foreach (var content in ordered) { - if (content.TheMovieDbId.IsNullOrEmpty()) + int.TryParse(content.TheMovieDbId, out var movieDbId); + if (movieDbId <= 0) { - // Maybe we should try the ImdbId? - if (content.ImdbId.HasValue()) - { - var findResult = await _movieApi.Find(content.ImdbId, ExternalSource.imdb_id); - - var movieId = findResult.movie_results?[0]?.id ?? 0; - content.TheMovieDbId = movieId.ToString(); - } + continue; } - - int.TryParse(content.TheMovieDbId, out var movieDbId); var info = await _movieApi.GetMovieInformationWithExtraInfo(movieDbId); if (info == null) { diff --git a/src/Ombi.Schedule/Processor/ChangeLogProcessor.cs b/src/Ombi.Schedule/Processor/ChangeLogProcessor.cs index ea60d932c..f3053876b 100644 --- a/src/Ombi.Schedule/Processor/ChangeLogProcessor.cs +++ b/src/Ombi.Schedule/Processor/ChangeLogProcessor.cs @@ -46,8 +46,7 @@ namespace Ombi.Schedule.Processor if (masterBranch) { latestRelease = doc.DocumentNode.Descendants("h2") - .FirstOrDefault(x => x.InnerText == "(unreleased)"); - // TODO: Change this to InnterText != "(unreleased)" once we go live and it's not a prerelease + .FirstOrDefault(x => x.InnerText != "(unreleased)"); } else { diff --git a/src/Ombi/ClientApp/app/app.module.ts b/src/Ombi/ClientApp/app/app.module.ts index 731fa383b..0936b13cd 100644 --- a/src/Ombi/ClientApp/app/app.module.ts +++ b/src/Ombi/ClientApp/app/app.module.ts @@ -58,10 +58,11 @@ const routes: Routes = [ // AoT requires an exported function for factories export function HttpLoaderFactory(http: HttpClient, platformLocation: PlatformLocation) { const base = platformLocation.getBaseHrefFromDOM(); + const version = Math.floor(Math.random() * 999999999); if (base.length > 1) { - return new TranslateHttpLoader(http, `${base}/translations/`, ".json"); + return new TranslateHttpLoader(http, `${base}/translations/`, `.json?v=${version}`); } - return new TranslateHttpLoader(http, "/translations/", ".json"); + return new TranslateHttpLoader(http, "/translations/", `.json?v=${version}`); } @NgModule({ diff --git a/src/Ombi/ClientApp/app/issues/issueDetails.component.html b/src/Ombi/ClientApp/app/issues/issueDetails.component.html index bad4885e7..e88ad621c 100644 --- a/src/Ombi/ClientApp/app/issues/issueDetails.component.html +++ b/src/Ombi/ClientApp/app/issues/issueDetails.component.html @@ -1,79 +1,80 @@
-
-
-

{{issue.title}}

-
- poster - {{IssueStatus[issue.status]}} - {{issue.issueCategory.value}} +
+
+
+

{{issue.title}}

+
+ poster + {{IssueStatus[issue.status]}} + {{issue.issueCategory.value}} -

{{'Issues.ReportedBy' | translate}}: {{issue.userReported.alias}}

-

{{'Issues.ReportedBy' | translate}}: {{issue.userReported.userName}}

-

{{'Issues.Subject' | translate}}: {{issue.subject}}

-
-
- -
- +

{{'Issues.ReportedBy' | translate}}: {{issue.userReported.alias}}

+

{{'Issues.ReportedBy' | translate}}: {{issue.userReported.userName}}

+

{{'Issues.Subject' | translate}}: {{issue.subject}}

+
+
+ +
+ +
-
-
+
-
-
-
-
-
-

- {{'Issues.Comments' | translate}} -

+
+
+
+
+
+

+ {{'Issues.Comments' | translate}} +

+
-
-
-
-
-
-

+
+
+
+
+

+
-
-
-
-
-

{{comment.comment}}

- +
+
+
+

{{comment.comment}}

+ +
-
-
-
-
-
-
-
- -
-
- +
+
+
+ +
+
+ +
-
\ No newline at end of file diff --git a/src/Ombi/ClientApp/app/issues/issueDetails.component.scss b/src/Ombi/ClientApp/app/issues/issueDetails.component.scss index 639b9318c..194ed9566 100644 --- a/src/Ombi/ClientApp/app/issues/issueDetails.component.scss +++ b/src/Ombi/ClientApp/app/issues/issueDetails.component.scss @@ -70,8 +70,9 @@ body{ .tint { z-index: -1; } -img-responsive poster { - display:block; +.img-responsive.poster { + margin-bottom: 21px; + width: 50%; } img { display: block; @@ -143,4 +144,8 @@ img { border-top: 1px solid transparent; border-bottom-right-radius: -1; border-bottom-left-radius: -1; +} + +.bottom-btn{ + margin-bottom: 10px; } \ No newline at end of file diff --git a/src/Ombi/ClientApp/app/requests/movierequests.component.html b/src/Ombi/ClientApp/app/requests/movierequests.component.html index f798e4b70..6b2300f38 100644 --- a/src/Ombi/ClientApp/app/requests/movierequests.component.html +++ b/src/Ombi/ClientApp/app/requests/movierequests.component.html @@ -14,32 +14,32 @@

-
- {{ 'Requests.RequestedBy' | translate }} - {{request.requestedUser.userName}} - {{request.requestedUser.alias}} - {{request.requestedUser.userName}} -
-
- {{ 'Requests.Status' | translate }} - {{request.status}} -
+
+
+ {{ 'Requests.RequestedBy' | translate }} + {{request.requestedUser.userName}} + {{request.requestedUser.alias}} + {{request.requestedUser.userName}} +
+
+ {{ 'Requests.Status' | translate }} + {{request.status}} +
-
- {{ 'Requests.RequestStatus' | translate }} - - - - - - - +
+ {{ 'Requests.RequestStatus' | translate }} + + + + + + + -
-
- {{ 'Requests.Denied' | translate }} - +
+
+ {{ 'Requests.Denied' | translate }} + -
+
-
{{ 'Requests.TheatricalRelease' | translate: {date: request.releaseDate | date: 'mediumDate'} }}
-
{{ 'Requests.DigitalRelease' | translate: {date: request.digitalReleaseDate | date: 'mediumDate'} }}
-
{{ 'Requests.RequestDate' | translate }} {{request.requestedDate | date}}
-
+
{{ 'Requests.TheatricalRelease' | translate: {date: request.releaseDate | date: 'mediumDate'} }}
+
{{ 'Requests.DigitalRelease' | translate: {date: request.digitalReleaseDate | date: 'mediumDate'} }}
+
{{ 'Requests.RequestDate' | translate }} {{request.requestedDate | date}}
+
+
{{ 'Requests.QualityOverride' | translate }} {{request.qualityOverrideTitle}} @@ -127,13 +129,15 @@
+ {{ 'Common.Approve' | translate }} +
+ {{ 'Requests.ChangeRootFolder' | translate }} + + {{ 'Requests.ChangeQualityProfile' | translate }} + + {{ 'Requests.Deny' | translate }} +
+ {{ 'Requests.Remove' | translate }} +
+ {{ 'Requests.MarkUnavailable' | translate }} + + {{ 'Requests.MarkAvailable' | translate }} +
@@ -183,7 +192,7 @@