mirror of
https://github.com/Ombi-app/Ombi.git
synced 2025-08-14 02:26:55 -07:00
Merge branch 'develop' of https://github.com/tidusjar/Ombi into develop
This commit is contained in:
commit
f7ac2b3adf
32 changed files with 408 additions and 236 deletions
|
@ -251,7 +251,7 @@ namespace Ombi.Core.Engine
|
|||
var requests = await (OrderMovies(allRequests, orderFilter.OrderType)).Skip(position).Take(count)
|
||||
.ToListAsync();
|
||||
|
||||
await CheckForSubscription(shouldHide, requests);
|
||||
await CheckForSubscription(shouldHide.UserId, requests);
|
||||
return new RequestsViewModel<MovieRequests>
|
||||
{
|
||||
Collection = requests,
|
||||
|
@ -295,7 +295,7 @@ namespace Ombi.Core.Engine
|
|||
var total = requests.Count();
|
||||
requests = requests.Skip(position).Take(count).ToList();
|
||||
|
||||
await CheckForSubscription(shouldHide, requests);
|
||||
await CheckForSubscription(shouldHide.UserId, requests);
|
||||
return new RequestsViewModel<MovieRequests>
|
||||
{
|
||||
Collection = requests,
|
||||
|
@ -380,7 +380,7 @@ namespace Ombi.Core.Engine
|
|||
// TODO fix this so we execute this on the server
|
||||
requests = requests.Skip(position).Take(count).ToList();
|
||||
|
||||
await CheckForSubscription(shouldHide, requests);
|
||||
await CheckForSubscription(shouldHide.UserId, requests);
|
||||
return new RequestsViewModel<MovieRequests>
|
||||
{
|
||||
Collection = requests,
|
||||
|
@ -423,7 +423,7 @@ namespace Ombi.Core.Engine
|
|||
var total = requests.Count();
|
||||
requests = requests.Skip(position).Take(count).ToList();
|
||||
|
||||
await CheckForSubscription(shouldHide, requests);
|
||||
await CheckForSubscription(shouldHide.UserId, requests);
|
||||
return new RequestsViewModel<MovieRequests>
|
||||
{
|
||||
Collection = requests,
|
||||
|
@ -505,7 +505,7 @@ namespace Ombi.Core.Engine
|
|||
allRequests = await MovieRepository.GetWithUser().ToListAsync();
|
||||
}
|
||||
|
||||
await CheckForSubscription(shouldHide, allRequests);
|
||||
await CheckForSubscription(shouldHide.UserId, allRequests);
|
||||
|
||||
return allRequests;
|
||||
}
|
||||
|
@ -513,21 +513,21 @@ namespace Ombi.Core.Engine
|
|||
public async Task<MovieRequests> GetRequest(int requestId)
|
||||
{
|
||||
var request = await MovieRepository.GetWithUser().Where(x => x.Id == requestId).FirstOrDefaultAsync();
|
||||
await CheckForSubscription(new HideResult(), new List<MovieRequests> { request });
|
||||
await CheckForSubscription((await GetUser()).Id, new List<MovieRequests> { request });
|
||||
|
||||
return request;
|
||||
}
|
||||
|
||||
private async Task CheckForSubscription(HideResult shouldHide, List<MovieRequests> movieRequests)
|
||||
private async Task CheckForSubscription(string UserId, List<MovieRequests> movieRequests)
|
||||
{
|
||||
var requestIds = movieRequests.Select(x => x.Id);
|
||||
var sub = await _subscriptionRepository.GetAll().Where(s =>
|
||||
s.UserId == shouldHide.UserId && requestIds.Contains(s.RequestId) && s.RequestType == RequestType.Movie)
|
||||
s.UserId == UserId && requestIds.Contains(s.RequestId) && s.RequestType == RequestType.Movie)
|
||||
.ToListAsync();
|
||||
foreach (var x in movieRequests)
|
||||
{
|
||||
x.PosterPath = PosterPathHelper.FixPosterPath(x.PosterPath);
|
||||
if (shouldHide.UserId == x.RequestedUserId)
|
||||
if (UserId == x.RequestedUserId)
|
||||
{
|
||||
x.ShowSubscribe = false;
|
||||
}
|
||||
|
@ -559,7 +559,7 @@ namespace Ombi.Core.Engine
|
|||
}
|
||||
|
||||
var results = allRequests.Where(x => x.Title.Contains(search, CompareOptions.IgnoreCase)).ToList();
|
||||
await CheckForSubscription(shouldHide, results);
|
||||
await CheckForSubscription(shouldHide.UserId, results);
|
||||
|
||||
return results;
|
||||
}
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
using System;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
using Ombi.Store.Entities;
|
||||
|
||||
namespace Ombi.Core.Models.Search
|
||||
|
@ -32,6 +33,7 @@ namespace Ombi.Core.Models.Search
|
|||
public string TheMovieDbId { get; set; }
|
||||
|
||||
[NotMapped]
|
||||
[Obsolete("Use request service instead")]
|
||||
public bool Subscribed { get; set; }
|
||||
[NotMapped]
|
||||
public bool ShowSubscribe { get; set; }
|
||||
|
|
|
@ -148,9 +148,9 @@
|
|||
<value>Album</value>
|
||||
</data>
|
||||
<data name="Movie" xml:space="preserve">
|
||||
<value>Movie</value>
|
||||
<value>Film</value>
|
||||
</data>
|
||||
<data name="TvShow" xml:space="preserve">
|
||||
<value>TV Show</value>
|
||||
<value>TV-Serier</value>
|
||||
</data>
|
||||
</root>
|
|
@ -121,7 +121,7 @@
|
|||
<value>Nouveaux Albums</value>
|
||||
</data>
|
||||
<data name="NewMovies" xml:space="preserve">
|
||||
<value>Nouveaux Films</value>
|
||||
<value>Nouveaux films</value>
|
||||
</data>
|
||||
<data name="NewTV" xml:space="preserve">
|
||||
<value>Nouvelles séries</value>
|
||||
|
|
|
@ -4,30 +4,18 @@
|
|||
|
||||
<div *ngIf="movie" class="main-content-container">
|
||||
|
||||
<top-banner [background]="movie.background" [available]="movie.available" [title]="movie.title" [releaseDate]="movie.releaseDate" [tagline]="movie.tagline"></top-banner>
|
||||
<top-banner [background]="movie.background" [available]="movie.available" [title]="movie.title"
|
||||
[releaseDate]="movie.releaseDate" [tagline]="movie.tagline"></top-banner>
|
||||
<div class="social-icons-container">
|
||||
|
||||
<social-icons
|
||||
[homepage]="movie.homepage"
|
||||
[theMoviedbId]="movie.id"
|
||||
[hasTrailer]="movie.videos?.results?.length > 0"
|
||||
[imdbId]="movie.imdbId"
|
||||
[twitter]="movie.externalIds.twitterId"
|
||||
[facebook]="movie.externalIds.facebookId"
|
||||
[instagram]="movie.externalIds.instagramId"
|
||||
[available]="movie.available"
|
||||
[plexUrl]="movie.plexUrl"
|
||||
[embyUrl]="movie.embyUrl"
|
||||
[jellyfinUrl]="movie.jellyfinUrl"
|
||||
[isAdmin]="isAdmin"
|
||||
[canShowAdvanced]="showAdvanced && movieRequest"
|
||||
[type]="requestType"
|
||||
[has4KRequest]="movie.has4KRequest"
|
||||
(openTrailer)="openDialog()"
|
||||
(onAdvancedOptions)="openAdvancedOptions()"
|
||||
(onReProcessRequest)="reProcessRequest(false)"
|
||||
(onReProcess4KRequest)="reProcessRequest(true)"
|
||||
>
|
||||
<social-icons [homepage]="movie.homepage" [theMoviedbId]="movie.id"
|
||||
[hasTrailer]="movie.videos?.results?.length > 0" [imdbId]="movie.imdbId"
|
||||
[twitter]="movie.externalIds.twitterId" [facebook]="movie.externalIds.facebookId"
|
||||
[instagram]="movie.externalIds.instagramId" [available]="movie.available" [plexUrl]="movie.plexUrl"
|
||||
[embyUrl]="movie.embyUrl" [jellyfinUrl]="movie.jellyfinUrl" [isAdmin]="isAdmin"
|
||||
[canShowAdvanced]="showAdvanced && movieRequest" [type]="requestType" [has4KRequest]="movie.has4KRequest"
|
||||
(openTrailer)="openDialog()" (onAdvancedOptions)="openAdvancedOptions()"
|
||||
(onReProcessRequest)="reProcessRequest(false)" (onReProcess4KRequest)="reProcessRequest(true)">
|
||||
</social-icons>
|
||||
|
||||
</div>
|
||||
|
@ -43,118 +31,147 @@
|
|||
<div class="details-button-container">
|
||||
<div class="col-12 media-row">
|
||||
<span *ngIf="movie.available || movie.available4K">
|
||||
<a id="viewOnPlexButton" *ngIf="movie.plexUrl" href="{{movie.plexUrl}}" mat-raised-button target="_blank" class="btn-spacing viewon-btn plex">
|
||||
<a id="viewOnPlexButton" *ngIf="movie.plexUrl" href="{{movie.plexUrl}}" mat-raised-button
|
||||
target="_blank" class="btn-spacing viewon-btn plex">
|
||||
{{'Search.ViewOnPlex' | translate}}
|
||||
<i class="far fa-play-circle fa-2x"></i>
|
||||
</a>
|
||||
<a id="viewOnEmbyButton" *ngIf="movie.embyUrl" href="{{movie.embyUrl}}" mat-raised-button target="_blank" class="btn-spacing viewon-btn emby">
|
||||
<a id="viewOnEmbyButton" *ngIf="movie.embyUrl" href="{{movie.embyUrl}}" mat-raised-button
|
||||
target="_blank" class="btn-spacing viewon-btn emby">
|
||||
{{'Search.ViewOnEmby' | translate}}
|
||||
<i class="far fa-play-circle fa-2x"></i>
|
||||
</a>
|
||||
<a id="viewOnJellyfinButton" *ngIf="movie.jellyfinUrl" href="{{movie.jellyfinUrl}}" mat-raised-button target="_blank" class="btn-spacing viewon-btn jellyfin">
|
||||
<a id="viewOnJellyfinButton" *ngIf="movie.jellyfinUrl" href="{{movie.jellyfinUrl}}"
|
||||
mat-raised-button target="_blank" class="btn-spacing viewon-btn jellyfin">
|
||||
{{'Search.ViewOnJellyfin' | translate}}
|
||||
<i class="far fa-play-circle fa-2x"></i>
|
||||
</a>
|
||||
</span>
|
||||
<!-- Regular Movie Status -->
|
||||
<button mat-raised-button class="btn-green btn-spacing" id="availableBtn" *ngIf="movie.available && !movie.plexUrl && !movie.embyUrl && !movie.jellyfinUrl"> {{
|
||||
'Common.Available' | translate }}</button>
|
||||
<span *ngIf="!movie.available">
|
||||
<span *ngIf="movie.requested || movie.approved; then requestedBtn else notRequestedBtn"></span>
|
||||
<ng-template #requestedBtn>
|
||||
<button id="requestedBtn" mat-raised-button *ngIf="!hasRequest || hasRequest && movieRequest && !movieRequest.denied" class="btn-spacing" color="warn" [disabled]>
|
||||
<i class="fas fa-check"></i>
|
||||
{{ 'Common.Requested' | translate }}
|
||||
</button>
|
||||
</ng-template>
|
||||
<ng-template #notRequestedBtn>
|
||||
<button *ngIf="!movie.requested" id="requestBtn" mat-raised-button class="btn-spacing" color="primary" (click)="request(false)">
|
||||
<i *ngIf="movie.requestProcessing" class="fas fa-circle-notch fa-spin fa-fw"></i>
|
||||
<i *ngIf="!movie.requestProcessing && !movie.processed" class="fas fa-plus"></i>
|
||||
<i *ngIf="movie.processed && !movie.requestProcessing" class="fas fa-check"></i>
|
||||
{{'Common.Request' | translate }}
|
||||
</button>
|
||||
</ng-template>
|
||||
<button mat-raised-button class="btn-green btn-spacing" id="availableBtn"
|
||||
*ngIf="movie.available && !movie.plexUrl && !movie.embyUrl && !movie.jellyfinUrl"> {{
|
||||
'Common.Available' | translate }}</button>
|
||||
<span *ngIf="!movie.available">
|
||||
<span
|
||||
*ngIf="movie.requested || movie.approved; then requestedBtn else notRequestedBtn"></span>
|
||||
<ng-template #requestedBtn>
|
||||
<button id="requestedBtn" mat-raised-button
|
||||
*ngIf="!hasRequest || hasRequest && movieRequest && !movieRequest.denied"
|
||||
class="btn-spacing" color="warn" [disabled]>
|
||||
<i class="fas fa-check"></i>
|
||||
{{ 'Common.Requested' | translate }}
|
||||
</button>
|
||||
</ng-template>
|
||||
<ng-template #notRequestedBtn>
|
||||
<button *ngIf="!movie.requested" id="requestBtn" mat-raised-button class="btn-spacing"
|
||||
color="primary" (click)="request(false)">
|
||||
<i *ngIf="movie.requestProcessing" class="fas fa-circle-notch fa-spin fa-fw"></i>
|
||||
<i *ngIf="!movie.requestProcessing && !movie.processed" class="fas fa-plus"></i>
|
||||
<i *ngIf="movie.processed && !movie.requestProcessing" class="fas fa-check"></i>
|
||||
{{'Common.Request' | translate }}
|
||||
</button>
|
||||
</ng-template>
|
||||
</span>
|
||||
|
||||
<!-- 4k Status -->
|
||||
<span *ngIf="is4KEnabled">
|
||||
<!-- 4k Status -->
|
||||
<span *ngIf="is4KEnabled">
|
||||
<span *permission="roleName4k">
|
||||
<button mat-raised-button class="btn-green btn-spacing" id="availableBtn4k" *ngIf="movie.available4K"> {{
|
||||
<button mat-raised-button class="btn-green btn-spacing" id="availableBtn4k"
|
||||
*ngIf="movie.available4K"> {{
|
||||
'Common.Available4K' | translate }}
|
||||
</button>
|
||||
|
||||
<span *ngIf="!movie.available4K">
|
||||
<span *ngIf="movie.has4KRequest || movie.approved4K; then requestedBtn4K else notRequestedBtn4K"></span>
|
||||
<span
|
||||
*ngIf="movie.has4KRequest || movie.approved4K; then requestedBtn4K else notRequestedBtn4K"></span>
|
||||
<ng-template #requestedBtn4K>
|
||||
<button id="requestedBtn4K" mat-raised-button *ngIf="movieRequest && !movieRequest.denied4K" class="btn-spacing" color="warn" [disabled]>
|
||||
<button id="requestedBtn4K" mat-raised-button
|
||||
*ngIf="movieRequest && !movieRequest.denied4K" class="btn-spacing"
|
||||
color="warn" [disabled]>
|
||||
<i class="fas fa-check"></i>
|
||||
{{ 'Common.Requested4K' | translate }}
|
||||
</button>
|
||||
</ng-template>
|
||||
<ng-template #notRequestedBtn4K>
|
||||
<button *ngIf="!movie.has4KRequest" id="requestBtn4k" mat-raised-button class="btn-spacing" color="primary" (click)="request(true)">
|
||||
<i *ngIf="movie.requestProcessing" class="fas fa-circle-notch fa-spin fa-fw"></i>
|
||||
<i *ngIf="!movie.requestProcessing && !movie.processed" class="fas fa-plus"></i>
|
||||
<i *ngIf="movie.processed && !movie.requestProcessing" class="fas fa-check"></i>
|
||||
<button *ngIf="!movie.has4KRequest" id="requestBtn4k" mat-raised-button
|
||||
class="btn-spacing" color="primary" (click)="request(true)">
|
||||
<i *ngIf="movie.requestProcessing"
|
||||
class="fas fa-circle-notch fa-spin fa-fw"></i>
|
||||
<i *ngIf="!movie.requestProcessing && !movie.processed"
|
||||
class="fas fa-plus"></i>
|
||||
<i *ngIf="movie.processed && !movie.requestProcessing"
|
||||
class="fas fa-check"></i>
|
||||
{{'Common.Request4K' | translate }}
|
||||
</button>
|
||||
</ng-template>
|
||||
<span *ngIf="!isAdmin && movie.showSubscribe" >
|
||||
<button *ngIf="!movie.subscribed" (click)="notify()" id="notifyBtn" mat-raised-button class="btn-spacing" > <i class="fas fa-bell"></i>
|
||||
{{ 'Requests.Notify' | translate }}</button>
|
||||
<button *ngIf="movie.subscribed" (click)="unNotify()" id="unnotifyBtn" mat-raised-button class="btn-spacing" > <i class="fas fa-bell-slash"></i>
|
||||
{{ 'Requests.RemoveNotification' | translate }}</button>
|
||||
</span>
|
||||
</span>
|
||||
</span>
|
||||
</span>
|
||||
|
||||
<span *ngIf="movieRequest?.showSubscribe">
|
||||
<button *ngIf="!movieRequest?.subscribed" (click)="notify()" id="notifyBtn"
|
||||
mat-raised-button class="btn-spacing"> <i class="fas fa-bell"></i>
|
||||
{{ 'Requests.Notify' | translate }}</button>
|
||||
<button *ngIf="movieRequest?.subscribed" (click)="unNotify()" id="unnotifyBtn"
|
||||
mat-raised-button class="btn-spacing"> <i class="fas fa-bell-slash"></i>
|
||||
{{ 'Requests.RemoveNotification' | translate }}</button>
|
||||
</span>
|
||||
|
||||
<span *ngIf="isAdmin && hasRequest">
|
||||
<button id="approveBtn" *ngIf="!movie.approved && movie.requested" (click)="approve(false)" mat-raised-button class="btn-spacing" color="accent">
|
||||
<i class="fas fa-plus"></i> {{ 'Common.Approve' | translate }}
|
||||
</button>
|
||||
<button id="markAvailableBtn" *ngIf="!movie.available && movie.requested" (click)="markAvailable(false)" mat-raised-button class="btn-spacing"
|
||||
color="accent">
|
||||
<i class="fas fa-plus"></i> {{ 'Requests.MarkAvailable' | translate }}
|
||||
</button>
|
||||
<button id="markUnavailableBtn" *ngIf="movie.available && movie.requested" (click)="markUnavailable(false)" mat-raised-button class="btn-spacing"
|
||||
color="accent">
|
||||
<i class="fas fa-minus"></i> {{ 'Requests.MarkUnavailable' | translate }}
|
||||
</button>
|
||||
<span *ngIf="isAdmin && hasRequest">
|
||||
<button id="approveBtn" *ngIf="!movie.approved && movie.requested" (click)="approve(false)"
|
||||
mat-raised-button class="btn-spacing" color="accent">
|
||||
<i class="fas fa-plus"></i> {{ 'Common.Approve' | translate }}
|
||||
</button>
|
||||
<button id="markAvailableBtn" *ngIf="!movie.available && movie.requested"
|
||||
(click)="markAvailable(false)" mat-raised-button class="btn-spacing" color="accent">
|
||||
<i class="fas fa-plus"></i> {{ 'Requests.MarkAvailable' | translate }}
|
||||
</button>
|
||||
<button id="markUnavailableBtn" *ngIf="movie.available && movie.requested"
|
||||
(click)="markUnavailable(false)" mat-raised-button class="btn-spacing" color="accent">
|
||||
<i class="fas fa-minus"></i> {{ 'Requests.MarkUnavailable' | translate }}
|
||||
</button>
|
||||
|
||||
<!-- 4k -->
|
||||
<span *ngIf="is4KEnabled">
|
||||
<span *permission="roleName4k">
|
||||
<button id="approve4kBtn" *ngIf="!movie.approved4K && movie.has4KRequest" (click)="approve(true)" mat-raised-button class="btn-spacing" color="accent">
|
||||
<i class="fas fa-plus"></i> {{ 'Common.Approve4K' | translate }}
|
||||
</button>
|
||||
<button id="markAvailable4kBtn" *ngIf="!movie.available4K && movie.has4KRequest" (click)="markAvailable(true)" mat-raised-button class="btn-spacing"
|
||||
color="accent">
|
||||
<i class="fas fa-plus"></i> {{ 'Requests.MarkAvailable4K' | translate }}
|
||||
</button>
|
||||
<button id="markUnavailable4kBtn" *ngIf="movie.available4K" (click)="markUnavailable(true)" mat-raised-button class="btn-spacing"
|
||||
color="accent">
|
||||
<i class="fas fa-minus"></i> {{ 'Requests.MarkUnavailable4K' | translate }}
|
||||
</button>
|
||||
</span>
|
||||
<!-- 4k -->
|
||||
<span *ngIf="is4KEnabled">
|
||||
<span *permission="roleName4k">
|
||||
<button id="approve4kBtn" *ngIf="!movie.approved4K && movie.has4KRequest"
|
||||
(click)="approve(true)" mat-raised-button class="btn-spacing" color="accent">
|
||||
<i class="fas fa-plus"></i> {{ 'Common.Approve4K' | translate }}
|
||||
</button>
|
||||
<button id="markAvailable4kBtn" *ngIf="!movie.available4K && movie.has4KRequest"
|
||||
(click)="markAvailable(true)" mat-raised-button class="btn-spacing"
|
||||
color="accent">
|
||||
<i class="fas fa-plus"></i> {{ 'Requests.MarkAvailable4K' | translate }}
|
||||
</button>
|
||||
<button id="markUnavailable4kBtn" *ngIf="movie.available4K"
|
||||
(click)="markUnavailable(true)" mat-raised-button class="btn-spacing"
|
||||
color="accent">
|
||||
<i class="fas fa-minus"></i> {{ 'Requests.MarkUnavailable4K' | translate }}
|
||||
</button>
|
||||
</span>
|
||||
|
||||
<button id="denyBtn" *ngIf="!movieRequest.denied && movie.requested" mat-raised-button class="btn-spacing" color="warn" (click)="deny(false)">
|
||||
<i class="fas fa-times"></i> {{'Requests.Deny' | translate }}
|
||||
</button>
|
||||
|
||||
<button id="deniedButton" *ngIf="movieRequest && movieRequest.denied" [matTooltip]="movieRequest.deniedReason" mat-raised-button class="btn-spacing" color="warn">
|
||||
<i class="fas fa-times"></i> {{'MediaDetails.Denied' | translate }}
|
||||
</button>
|
||||
</span>
|
||||
|
||||
<button id="reportIssueBtn" mat-raised-button class="btn-spacing" color="danger" (click)="issue()" *ngIf="issuesEnabled">
|
||||
<i class="fas fa-exclamation"></i> {{'Requests.ReportIssue' | translate }}
|
||||
<button id="denyBtn" *ngIf="!movieRequest.denied && movie.requested" mat-raised-button
|
||||
class="btn-spacing" color="warn" (click)="deny(false)">
|
||||
<i class="fas fa-times"></i> {{'Requests.Deny' | translate }}
|
||||
</button>
|
||||
<button id="viewCollectionBtn" *ngIf="movie.belongsToCollection" [routerLink]="'/discover/collection/' + movie.belongsToCollection.id" mat-raised-button class="btn-spacing">
|
||||
<i class="fas fa-list"></i> {{'MediaDetails.ViewCollection' | translate}}
|
||||
|
||||
<button id="deniedButton" *ngIf="movieRequest && movieRequest.denied"
|
||||
[matTooltip]="movieRequest.deniedReason" mat-raised-button class="btn-spacing"
|
||||
color="warn">
|
||||
<i class="fas fa-times"></i> {{'MediaDetails.Denied' | translate }}
|
||||
</button>
|
||||
</span>
|
||||
|
||||
<button id="reportIssueBtn" mat-raised-button class="btn-spacing" color="danger"
|
||||
(click)="issue()" *ngIf="issuesEnabled">
|
||||
<i class="fas fa-exclamation"></i> {{'Requests.ReportIssue' | translate }}
|
||||
</button>
|
||||
<button id="viewCollectionBtn" *ngIf="movie.belongsToCollection"
|
||||
[routerLink]="'/discover/collection/' + movie.belongsToCollection.id" mat-raised-button
|
||||
class="btn-spacing">
|
||||
<i class="fas fa-list"></i> {{'MediaDetails.ViewCollection' | translate}}
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -163,7 +180,8 @@
|
|||
<div class="col-12 col-md-2">
|
||||
<mat-card class="mat-elevation-z8">
|
||||
<mat-card-content>
|
||||
<movie-information-panel [movie]="movie" [request]="movieRequest" [advancedOptions]="showAdvanced"></movie-information-panel>
|
||||
<movie-information-panel [movie]="movie" [request]="movieRequest"
|
||||
[advancedOptions]="showAdvanced"></movie-information-panel>
|
||||
</mat-card-content>
|
||||
</mat-card>
|
||||
|
||||
|
@ -199,9 +217,14 @@
|
|||
<mat-card class="mat-elevation-z8">
|
||||
<mat-card-header>{{'MediaDetails.Trailers' | translate}}</mat-card-header>
|
||||
<mat-card-content>
|
||||
<p-carousel class="no-indicator" [numVisible]="2" [numScroll]="10" [page]="0" [value]="movie.videos?.results">
|
||||
<p-carousel class="no-indicator" [numVisible]="2" [numScroll]="10" [page]="0"
|
||||
[value]="movie.videos?.results">
|
||||
<ng-template let-result pTemplate="item">
|
||||
<iframe width="98%" height="315px" [src]="'https://www.youtube.com/embed/' + result.key | safe" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
|
||||
<iframe width="98%" height="315px"
|
||||
[src]="'https://www.youtube.com/embed/' + result.key | safe"
|
||||
frameborder="0"
|
||||
allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture"
|
||||
allowfullscreen></iframe>
|
||||
</ng-template>
|
||||
</p-carousel>
|
||||
</mat-card-content>
|
||||
|
@ -229,7 +252,9 @@
|
|||
<div class="sidebar affixable affix-top preview-poster">
|
||||
<div class="poster">
|
||||
<a [routerLink]="'/details/movie/'+r.id">
|
||||
<img class="real grow" matTooltip="{{r.title}}" src="https://image.tmdb.org/t/p/w300/{{r.poster_path}}" alt="Poster" style="display: block;">
|
||||
<img class="real grow" matTooltip="{{r.title}}"
|
||||
src="https://image.tmdb.org/t/p/w300/{{r.poster_path}}"
|
||||
alt="Poster" style="display: block;">
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -249,7 +274,9 @@
|
|||
<div class="sidebar affixable affix-top preview-poster">
|
||||
<div class="poster ">
|
||||
<a [routerLink]="'/details/movie/'+r.id">
|
||||
<img class="real grow" matTooltip="{{r.title}}" src="https://image.tmdb.org/t/p/w300/{{r.poster_path}}" alt="Poster" style="display: block;">
|
||||
<img class="real grow" matTooltip="{{r.title}}"
|
||||
src="https://image.tmdb.org/t/p/w300/{{r.poster_path}}"
|
||||
alt="Poster" style="display: block;">
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -98,7 +98,9 @@
|
|||
<button id="bulkFab" *ngIf="selection.hasValue() && isAdmin" mat-fab color="accent" class="floating-fab" [matMenuTriggerFor]="aboveMenu">
|
||||
<i class="fas fa-bars"></i></button>
|
||||
<mat-menu #aboveMenu="matMenu" yPosition="above">
|
||||
<button id="deleteFabButton" mat-menu-item (click)="bulkDelete()">{{'Requests.RequestPanel.Delete' | translate}}</button>
|
||||
<button id="approveFabButton" mat-menu-item (click)="bulkApprove()">{{'Requests.RequestPanel.Approve' | translate}}</button>
|
||||
<button id="approve4kFabButton" mat-menu-item (click)="bulkApprove4K()">{{'Requests.RequestPanel.Approve4K' | translate}}</button>
|
||||
<button *ngIf="is4kEnabled" id="approve4kFabButton" mat-menu-item (click)="bulkApprove4K()">{{'Requests.RequestPanel.Approve4K' | translate}}</button>
|
||||
<button id="denyFabButton" mat-menu-item (click)="bulkDeny()">{{'Requests.RequestPanel.Deny' | translate}}</button>
|
||||
<button *ngIf="is4kEnabled" id="deny4kFabButton" mat-menu-item (click)="bulkDeny4K()">{{'Requests.RequestPanel.Deny4K' | translate}}</button>
|
||||
<button id="deleteFabButton" mat-menu-item (click)="bulkDelete()">{{'Requests.RequestPanel.Delete' | translate}}</button>
|
||||
</mat-menu>
|
|
@ -62,11 +62,11 @@ export class MoviesGridComponent implements OnInit, AfterViewInit {
|
|||
this.manageOwnRequests = this.auth.hasRole("ManageOwnRequests")
|
||||
if (this.isAdmin) {
|
||||
this.displayedColumns.unshift('select');
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
this.is4kEnabled = this.featureFacade.is4kEnabled();
|
||||
if ((this.isAdmin || this.auth.hasRole("Request4KMovie"))
|
||||
&& this.is4kEnabled) {
|
||||
&& this.is4kEnabled) {
|
||||
this.displayedColumns.splice(4, 0, 'has4kRequest');
|
||||
}
|
||||
|
||||
|
@ -155,13 +155,13 @@ export class MoviesGridComponent implements OnInit, AfterViewInit {
|
|||
|
||||
private checkDate(date: Date|string): boolean {
|
||||
if (typeof date === 'string') {
|
||||
return new Date(date).getFullYear() > 1;
|
||||
return new Date(date).getFullYear() > 1;
|
||||
}
|
||||
if (date instanceof Date) {
|
||||
return date.getFullYear() > 1;
|
||||
return date.getFullYear() > 1;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
public switchFilter(type: RequestFilterType) {
|
||||
this.currentFilter = type;
|
||||
|
@ -172,15 +172,15 @@ export class MoviesGridComponent implements OnInit, AfterViewInit {
|
|||
const numSelected = this.selection.selected.length;
|
||||
const numRows = this.dataSource.data.length;
|
||||
return numSelected === numRows;
|
||||
}
|
||||
}
|
||||
|
||||
public masterToggle() {
|
||||
public masterToggle() {
|
||||
this.isAllSelected() ?
|
||||
this.selection.clear() :
|
||||
this.dataSource.data.forEach(row => this.selection.select(row));
|
||||
}
|
||||
}
|
||||
|
||||
public async bulkDelete() {
|
||||
public async bulkDelete() {
|
||||
if (this.selection.isEmpty()) {
|
||||
return;
|
||||
}
|
||||
|
@ -194,13 +194,13 @@ export class MoviesGridComponent implements OnInit, AfterViewInit {
|
|||
this.selection.clear();
|
||||
this.ngAfterViewInit();
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
public bulkApprove = () => this.bulkApproveInternal(false);
|
||||
public bulkApprove = () => this.bulkApproveInternal(false);
|
||||
|
||||
public bulkApprove4K = () => this.bulkApproveInternal(true);
|
||||
public bulkApprove4K = () => this.bulkApproveInternal(true);
|
||||
|
||||
private bulkApproveInternal(is4k: boolean) {
|
||||
private bulkApproveInternal(is4k: boolean) {
|
||||
if (this.selection.isEmpty()) {
|
||||
return;
|
||||
}
|
||||
|
@ -222,12 +222,45 @@ export class MoviesGridComponent implements OnInit, AfterViewInit {
|
|||
this.selection.clear();
|
||||
this.ngAfterViewInit();
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
public getRequestDate(request: IMovieRequests) : Date {
|
||||
public bulkDeny = () => this.bulkDenyInternal(false);
|
||||
|
||||
public bulkDeny4K = () => this.bulkDenyInternal(true);
|
||||
|
||||
private bulkDenyInternal(is4k: boolean) {
|
||||
if (this.selection.isEmpty()) {
|
||||
return;
|
||||
}
|
||||
let tasks = new Array<Observable<IRequestEngineResult>>();
|
||||
this.selection.selected.forEach((selected) => {
|
||||
|
||||
tasks.push(this.requestServiceV1.denyMovie({
|
||||
id: selected.id,
|
||||
is4K: is4k,
|
||||
reason: `` // TOOD: reuse DenyDialog to allow for a reason to be entered
|
||||
}));
|
||||
});
|
||||
|
||||
this.isLoadingResults = true;
|
||||
forkJoin(tasks).subscribe((result: IRequestEngineResult[]) => {
|
||||
this.isLoadingResults = false;
|
||||
const failed = result.filter(x => !x.result);
|
||||
if (failed.length > 0) {
|
||||
this.notification.error("Some requests failed to deny: " + failed[0].errorMessage);
|
||||
this.selection.clear();
|
||||
return;
|
||||
}
|
||||
this.notification.success(this.translateService.instant('Requests.RequestPanel.Denied'));
|
||||
this.selection.clear();
|
||||
this.ngAfterViewInit();
|
||||
})
|
||||
}
|
||||
|
||||
public getRequestDate(request: IMovieRequests): Date {
|
||||
if (new Date(request.requestedDate).getFullYear() === 1) {
|
||||
return request.requestedDate4k;
|
||||
}
|
||||
return request.requestedDate;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,14 +1,20 @@
|
|||
<mat-nav-list>
|
||||
<a id="requestDelete" *ngIf="data.isAdmin || data.manageOwnRequests" (click)="delete()" mat-list-item>
|
||||
<span mat-line>{{'Requests.RequestPanel.Delete' | translate}}</span>
|
||||
</a>
|
||||
<a id="requestApprove" *ngIf="data.canApprove && data.isAdmin && data.hasRegularRequest" (click)="approve()" mat-list-item>
|
||||
<span mat-line>{{'Requests.RequestPanel.Approve' | translate}}</span>
|
||||
</a>
|
||||
<a id="requestDeny" *ngIf="data.canApprove && data.isAdmin && data.hasRegularRequest" (click)="deny()" mat-list-item>
|
||||
<span mat-line>{{'Requests.RequestPanel.Deny' | translate}}</span>
|
||||
</a>
|
||||
<a id="requestApprove4k" *ngIf="data.canApprove && data.isAdmin && data.has4kRequest ?? false" (click)="approve4K()" mat-list-item>
|
||||
<span mat-line>{{'Requests.RequestPanel.Approve4K' | translate}}</span>
|
||||
</a>
|
||||
<a id="requestDeny4k" *ngIf="data.canApprove && data.isAdmin && data.has4kRequest ?? false" (click)="deny4K()" mat-list-item>
|
||||
<span mat-line>{{'Requests.RequestPanel.Deny4K' | translate}}</span>
|
||||
</a>
|
||||
<a id="requestChangeAvailability" *ngIf="data.type !== RequestType.tvShow && data.isAdmin" (click)="changeAvailability()" mat-list-item>
|
||||
<span mat-line>{{'Requests.RequestPanel.ChangeAvailability' | translate}}</span>
|
||||
</a>
|
||||
<a id="requestDelete" *ngIf="data.isAdmin || data.manageOwnRequests" (click)="delete()" mat-list-item>
|
||||
<span mat-line>{{'Requests.RequestPanel.Delete' | translate}}</span>
|
||||
</a>
|
||||
</mat-nav-list>
|
|
@ -5,6 +5,8 @@ import { IRequestEngineResult, RequestType } from '../../../interfaces';
|
|||
import { UpdateType } from '../../models/UpdateType';
|
||||
import { TranslateService } from '@ngx-translate/core';
|
||||
import { firstValueFrom, Observable } from 'rxjs';
|
||||
import { DenyDialogComponent } from '../../../media-details/components/shared/deny-dialog/deny-dialog.component';
|
||||
import { MatDialog } from '@angular/material/dialog';
|
||||
|
||||
@Component({
|
||||
selector: 'request-options',
|
||||
|
@ -17,6 +19,7 @@ export class RequestOptionsComponent {
|
|||
constructor(@Inject(MAT_BOTTOM_SHEET_DATA) public data: any,
|
||||
private requestService: RequestService,
|
||||
private messageService: MessageService,
|
||||
public dialog: MatDialog,
|
||||
private bottomSheetRef: MatBottomSheetRef<RequestOptionsComponent>,
|
||||
private translate: TranslateService) { }
|
||||
|
||||
|
@ -33,11 +36,11 @@ export class RequestOptionsComponent {
|
|||
}
|
||||
request.subscribe(result => {
|
||||
if (result.result) {
|
||||
this.messageService.send(this.translate.instant("Requests.SuccessfullyDeleted"));
|
||||
this.bottomSheetRef.dismiss({type: UpdateType.Delete});
|
||||
return;
|
||||
this.messageService.send(this.translate.instant("Requests.SuccessfullyDeleted"));
|
||||
this.bottomSheetRef.dismiss({type: UpdateType.Delete});
|
||||
return;
|
||||
} else {
|
||||
this.messageService.sendRequestEngineResultError(result);
|
||||
this.messageService.sendRequestEngineResultError(result);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
@ -57,6 +60,24 @@ export class RequestOptionsComponent {
|
|||
return;
|
||||
}
|
||||
|
||||
public deny = () => this.denyInternal(false);
|
||||
|
||||
public deny4K = () => this.denyInternal(true);
|
||||
|
||||
private async denyInternal(is4K: boolean) {
|
||||
const dialogRef = this.dialog.open(DenyDialogComponent, {
|
||||
width: '250px',
|
||||
data: { requestId: this.data.id, is4K: is4K, requestType: this.data.type }
|
||||
});
|
||||
|
||||
dialogRef.afterClosed().subscribe(result => {
|
||||
if (result.denied) {
|
||||
this.bottomSheetRef.dismiss({ type: UpdateType.Deny });
|
||||
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public async approve4K() {
|
||||
if (this.data.type != RequestType.movie) {
|
||||
return;
|
||||
|
|
|
@ -35,6 +35,11 @@ export class RequestsListComponent {
|
|||
event.onChange();
|
||||
return;
|
||||
}
|
||||
if (result.type == UpdateType.Deny) {
|
||||
event.request.requestStatus = 'Common.Denied';
|
||||
event.onChange();
|
||||
return;
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
export enum UpdateType {
|
||||
Delete,
|
||||
Approve,
|
||||
Availability
|
||||
Availability,
|
||||
Deny
|
||||
}
|
|
@ -207,10 +207,13 @@
|
|||
"RequestPanel": {
|
||||
"Delete": "Изтриване на заявка",
|
||||
"Approve": "Одобряване на заявка",
|
||||
"Deny": "Deny Request",
|
||||
"Approve4K": "Approve 4K Request",
|
||||
"Deny4K": "Deny 4K Request",
|
||||
"ChangeAvailability": "Маркиране като налично",
|
||||
"Deleted": "Избраните елементи са изтрити успешно",
|
||||
"Approved": "Избраните елементи са одобрени успешно"
|
||||
"Approved": "Избраните елементи са одобрени успешно",
|
||||
"Denied": "Successfully denied selected items"
|
||||
},
|
||||
"SuccessfullyApproved": "Successfully Approved",
|
||||
"SuccessfullyDeleted": "Request successfully deleted",
|
||||
|
@ -379,7 +382,8 @@
|
|||
"Country": "Country:",
|
||||
"StartDate": "Start Date:",
|
||||
"EndDate": "EndDate:"
|
||||
}
|
||||
},
|
||||
"RequestSource": "Source:"
|
||||
},
|
||||
"Discovery": {
|
||||
"PopularTab": "Популярни",
|
||||
|
|
|
@ -207,10 +207,13 @@
|
|||
"RequestPanel": {
|
||||
"Delete": "Odstranit požadavek",
|
||||
"Approve": "Schválit požadavek",
|
||||
"Deny": "Deny Request",
|
||||
"Approve4K": "Schválit 4K požadavek",
|
||||
"Deny4K": "Deny 4K Request",
|
||||
"ChangeAvailability": "Označit jako dostupné",
|
||||
"Deleted": "Vybrané položky úspěšně odstraněny",
|
||||
"Approved": "Vybrané položky byly úspěšně schváleny"
|
||||
"Approved": "Vybrané položky byly úspěšně schváleny",
|
||||
"Denied": "Successfully denied selected items"
|
||||
},
|
||||
"SuccessfullyApproved": "Úspěšně schváleno",
|
||||
"SuccessfullyDeleted": "Požadavek byl úspěšně odstraněn",
|
||||
|
@ -379,7 +382,8 @@
|
|||
"Country": "Stát:",
|
||||
"StartDate": "Datum zahájení:",
|
||||
"EndDate": "Datum ukončení:"
|
||||
}
|
||||
},
|
||||
"RequestSource": "Source:"
|
||||
},
|
||||
"Discovery": {
|
||||
"PopularTab": "Oblíbené",
|
||||
|
|
|
@ -207,10 +207,13 @@
|
|||
"RequestPanel": {
|
||||
"Delete": "Slet Anmodning",
|
||||
"Approve": "Godkend Andmodning",
|
||||
"Deny": "Deny Request",
|
||||
"Approve4K": "Godkend 4K Anmodning",
|
||||
"Deny4K": "Deny 4K Request",
|
||||
"ChangeAvailability": "Markér som tilgængelig",
|
||||
"Deleted": "De valgte elementer blev slettet",
|
||||
"Approved": "De valgte elementer blev godkendt"
|
||||
"Approved": "De valgte elementer blev godkendt",
|
||||
"Denied": "Successfully denied selected items"
|
||||
},
|
||||
"SuccessfullyApproved": "Godkendt",
|
||||
"SuccessfullyDeleted": "Anmodningen blev slettet",
|
||||
|
@ -379,7 +382,8 @@
|
|||
"Country": "Land:",
|
||||
"StartDate": "Startdato:",
|
||||
"EndDate": "Slutdato:"
|
||||
}
|
||||
},
|
||||
"RequestSource": "Kilde:"
|
||||
},
|
||||
"Discovery": {
|
||||
"PopularTab": "Populære",
|
||||
|
|
|
@ -207,10 +207,13 @@
|
|||
"RequestPanel": {
|
||||
"Delete": "Anfrage löschen",
|
||||
"Approve": "Anfrage genehmigen",
|
||||
"Deny": "Deny Request",
|
||||
"Approve4K": "4K Anfrage genehmigen",
|
||||
"Deny4K": "Deny 4K Request",
|
||||
"ChangeAvailability": "Als verfügbar markieren",
|
||||
"Deleted": "Ausgewählte Elemente erfolgreich gelöscht",
|
||||
"Approved": "Ausgewählte Elemente erfolgreich freigegeben"
|
||||
"Approved": "Ausgewählte Elemente erfolgreich freigegeben",
|
||||
"Denied": "Successfully denied selected items"
|
||||
},
|
||||
"SuccessfullyApproved": "Erfolgreich genehmigt",
|
||||
"SuccessfullyDeleted": "Anfrage erfolgreich gelöscht",
|
||||
|
@ -228,7 +231,7 @@
|
|||
"NoPermissionsOnBehalf": "Sie haben nicht die richtigen Berechtigungen, um im Namen von Benutzern anzufragen!",
|
||||
"NoPermissions": "Sie haben nicht die nötigen Rechte!",
|
||||
"RequestDoesNotExist": "Die Anfrage existiert nicht",
|
||||
"ChildRequestDoesNotExist": "Child Request does not exist",
|
||||
"ChildRequestDoesNotExist": "Untergeordnete Anfrage existiert nicht",
|
||||
"NoPermissionsRequestMovie": "Sie haben keine Berechtigung, um einen Film anzufordern",
|
||||
"NoPermissionsRequestTV": "Sie haben keine Berechtigung, um eine TV-Sendung anzufordern",
|
||||
"NoPermissionsRequestAlbum": "Sie haben keine Berechtigung, um ein Album anzufordern",
|
||||
|
@ -379,7 +382,8 @@
|
|||
"Country": "Land:",
|
||||
"StartDate": "Startdatum:",
|
||||
"EndDate": "Enddatum:"
|
||||
}
|
||||
},
|
||||
"RequestSource": "Quelle:"
|
||||
},
|
||||
"Discovery": {
|
||||
"PopularTab": "Beliebt",
|
||||
|
@ -432,7 +436,7 @@
|
|||
"2": "Plex User",
|
||||
"3": "Emby User",
|
||||
"4": "Emby Connect User",
|
||||
"5": "Jellyfin User"
|
||||
"5": "Jellyfin Server"
|
||||
},
|
||||
"Paginator": {
|
||||
"itemsPerPageLabel": "Elemente pro Seite:",
|
||||
|
|
|
@ -207,10 +207,13 @@
|
|||
"RequestPanel": {
|
||||
"Delete":"Delete Request",
|
||||
"Approve":"Approve Request",
|
||||
"Deny":"Deny Request",
|
||||
"Approve4K":"Approve 4K Request",
|
||||
"Deny4K":"Deny 4K Request",
|
||||
"ChangeAvailability":"Mark Available",
|
||||
"Deleted": "Successfully deleted selected items",
|
||||
"Approved": "Successfully approved selected items"
|
||||
"Approved": "Successfully approved selected items",
|
||||
"Denied": "Successfully denied selected items"
|
||||
},
|
||||
"SuccessfullyApproved": "Successfully Approved",
|
||||
"SuccessfullyDeleted": "Request successfully deleted",
|
||||
|
|
|
@ -207,10 +207,13 @@
|
|||
"RequestPanel": {
|
||||
"Delete": "Eliminar solicitud",
|
||||
"Approve": "Aprobar Solicitud",
|
||||
"Deny": "Rechazar Solicitud",
|
||||
"Approve4K": "Aprobar Solicitud 4K",
|
||||
"Deny4K": "Rechazar Solicitud 4K",
|
||||
"ChangeAvailability": "Marcar como disponible",
|
||||
"Deleted": "Los elementos seleccionados ha sido eliminados correctamente",
|
||||
"Approved": "Los elementos seleccionados ha sido aprobados correctamente"
|
||||
"Approved": "Los elementos seleccionados ha sido aprobados correctamente",
|
||||
"Denied": "Elementos seleccionados rechazados con éxito"
|
||||
},
|
||||
"SuccessfullyApproved": "Se ha aprobado con éxito",
|
||||
"SuccessfullyDeleted": "Solicitud eliminada con éxito",
|
||||
|
@ -379,7 +382,8 @@
|
|||
"Country": "País:",
|
||||
"StartDate": "Fecha de inicio:",
|
||||
"EndDate": "Fecha de finalización:"
|
||||
}
|
||||
},
|
||||
"RequestSource": "Fuente:"
|
||||
},
|
||||
"Discovery": {
|
||||
"PopularTab": "Popular",
|
||||
|
|
|
@ -207,10 +207,13 @@
|
|||
"RequestPanel": {
|
||||
"Delete": "Supprimer la demande",
|
||||
"Approve": "Approuver la demande",
|
||||
"Deny": "Refuser la demande",
|
||||
"Approve4K": "Approuver la demande 4K",
|
||||
"Deny4K": "Refuser la demande 4K",
|
||||
"ChangeAvailability": "Marquer comme Disponible",
|
||||
"Deleted": "Éléments sélectionnés supprimés avec succès",
|
||||
"Approved": "Éléments sélectionnés approuvés avec succès"
|
||||
"Approved": "Éléments sélectionnés approuvés avec succès",
|
||||
"Denied": "Les éléments sélectionnés ont été refusés"
|
||||
},
|
||||
"SuccessfullyApproved": "Approuvée avec succès",
|
||||
"SuccessfullyDeleted": "Demande supprimée avec succès",
|
||||
|
@ -379,7 +382,8 @@
|
|||
"Country": "Pays :",
|
||||
"StartDate": "Date de début :",
|
||||
"EndDate": "Date de fin :"
|
||||
}
|
||||
},
|
||||
"RequestSource": "Source :"
|
||||
},
|
||||
"Discovery": {
|
||||
"PopularTab": "Populaire",
|
||||
|
|
|
@ -207,10 +207,13 @@
|
|||
"RequestPanel": {
|
||||
"Delete": "Kérés törlése",
|
||||
"Approve": "Kérés elfogadása",
|
||||
"Deny": "Deny Request",
|
||||
"Approve4K": "Approve 4K Request",
|
||||
"Deny4K": "Deny 4K Request",
|
||||
"ChangeAvailability": "Elérhetőnek jelölés",
|
||||
"Deleted": "A kijelölt elemek törlésre kerultek",
|
||||
"Approved": "A kijelölt elemek jóváhagyásra kerultek"
|
||||
"Approved": "A kijelölt elemek jóváhagyásra kerultek",
|
||||
"Denied": "Successfully denied selected items"
|
||||
},
|
||||
"SuccessfullyApproved": "Sikeresen jóváhagyva",
|
||||
"SuccessfullyDeleted": "Kérés sikeresen törölve",
|
||||
|
@ -379,7 +382,8 @@
|
|||
"Country": "Ország:",
|
||||
"StartDate": "Kezdés dátuma:",
|
||||
"EndDate": "Befejezés dátuma:"
|
||||
}
|
||||
},
|
||||
"RequestSource": "Source:"
|
||||
},
|
||||
"Discovery": {
|
||||
"PopularTab": "Népszerű",
|
||||
|
|
|
@ -14,7 +14,7 @@
|
|||
"Common": {
|
||||
"ContinueButton": "Continua",
|
||||
"Available": "Disponibile",
|
||||
"Available4K": "Disponibile 4K",
|
||||
"Available4K": "Disponibile in 4K",
|
||||
"Approved": "Approvato",
|
||||
"Approve4K": "Approva 4K",
|
||||
"Pending": "In Sospeso",
|
||||
|
@ -66,7 +66,7 @@
|
|||
"Discover": "Scopri",
|
||||
"Search": "Cerca",
|
||||
"Requests": "Richieste",
|
||||
"UserManagement": "Gestione degli utenti",
|
||||
"UserManagement": "Utenti",
|
||||
"Issues": "Problemi",
|
||||
"Vote": "Vota",
|
||||
"Donate": "Dona!",
|
||||
|
@ -74,7 +74,7 @@
|
|||
"DonateTooltip": "Questo è come convinco mia moglie a farmi spendere il mio tempo libero nello sviluppo di Ombi ;)",
|
||||
"UpdateAvailableTooltip": "Aggiornamento disponibile!",
|
||||
"Settings": "Impostazioni",
|
||||
"Welcome": "Ti diamo il benvenuto {{username}}",
|
||||
"Welcome": "Benvenuto {{username}}",
|
||||
"UpdateDetails": "Aggiorna dettagli",
|
||||
"Logout": "Esci",
|
||||
"OpenMobileApp": "Apri l'app Mobile",
|
||||
|
@ -90,9 +90,9 @@
|
|||
"Music": "Musica",
|
||||
"People": "Persone"
|
||||
},
|
||||
"MorningWelcome": "Buona mattina!",
|
||||
"MorningWelcome": "Buongiorno!",
|
||||
"AfternoonWelcome": "Buon pomeriggio!",
|
||||
"EveningWelcome": "Buona sera!"
|
||||
"EveningWelcome": "Buonasera!"
|
||||
},
|
||||
"Search": {
|
||||
"Title": "Cerca",
|
||||
|
@ -100,10 +100,10 @@
|
|||
"MoviesTab": "Film",
|
||||
"TvTab": "Serie TV",
|
||||
"MusicTab": "Musica",
|
||||
"AdvancedSearch": "Puoi compilare uno dei seguenti per scoprire nuovi media. Tutti i risultati sono ordinati per popolarità",
|
||||
"AdvancedSearch": "Compila uno dei seguenti campi per cercare nuovi media. I risultati sono in ordine di popolarità",
|
||||
"AdvancedSearchHeader": "Ricerca Avanzata",
|
||||
"Suggestions": "Suggerimenti",
|
||||
"NoResults": "Spiacenti, non abbiamo trovato nulla!",
|
||||
"NoResults": "Nessun risultato trovato!",
|
||||
"DigitalDate": "Uscita in digitale: {{date}}",
|
||||
"TheatricalRelease": "Uscita nei cinema: {{date}}",
|
||||
"ViewOnPlex": "Guarda su Plex",
|
||||
|
@ -136,12 +136,12 @@
|
|||
"Season": "Stagione {{seasonNumber}}",
|
||||
"SelectAllInSeason": "Seleziona tutto nella stagione {{seasonNumber}}"
|
||||
},
|
||||
"AdvancedSearchInstructions": "Sei pregato di scegliere che tipo di media stai cercando:",
|
||||
"AdvancedSearchInstructions": "Scegli che tipo di media cercare:",
|
||||
"YearOfRelease": "Anno di Rilascio",
|
||||
"SearchGenre": "Cerca per genere",
|
||||
"SearchKeyword": "Termini di ricerca",
|
||||
"SearchKeyword": "Cerca per parola chiave",
|
||||
"SearchProvider": "Provider di ricerca",
|
||||
"KeywordSearchingDisclaimer": "Sei pregato di notare che la Ricerca per Parola chiave è molto a fortuna a causa di dati non coerenti nel TheMovieDb"
|
||||
"KeywordSearchingDisclaimer": "Attenzione: La ricerca per parola chiave è incostante a causa di dati non coerenti su TheMovieDb"
|
||||
},
|
||||
"Requests": {
|
||||
"Title": "Richieste",
|
||||
|
@ -207,17 +207,20 @@
|
|||
"RequestPanel": {
|
||||
"Delete": "Elimina Richiesta",
|
||||
"Approve": "Approva Richiesta",
|
||||
"Deny": "Rifiuta Richiesta",
|
||||
"Approve4K": "Approva Richiesta 4K",
|
||||
"Deny4K": "Rifiuta Richiesta 4K",
|
||||
"ChangeAvailability": "Segna come Disponibile",
|
||||
"Deleted": "Elementi selezionati eliminati correttamente",
|
||||
"Approved": "Elementi selezionati approvati correttamente"
|
||||
"Approved": "Elementi selezionati approvati correttamente",
|
||||
"Denied": "Elementi selezionati rifiutati con successo"
|
||||
},
|
||||
"SuccessfullyApproved": "Approvato Correttamente",
|
||||
"SuccessfullyApproved": "Approvata",
|
||||
"SuccessfullyDeleted": "Richiesta eliminata correttamente",
|
||||
"NowAvailable": "Richiesta ora disponibile",
|
||||
"NowUnavailable": "Richiesta ora non disponibile",
|
||||
"SuccessfullyReprocessed": "Richiesta ri-elaborata correttamente",
|
||||
"DeniedRequest": "Richiesta Negata",
|
||||
"SuccessfullyReprocessed": "Richiesta rielaborata correttamente",
|
||||
"DeniedRequest": "Richiesta Rifiutata",
|
||||
"RequestCollection": "Richiedi Raccolta",
|
||||
"CollectionSuccesfullyAdded": "La raccolta {{name}} è stata aggiunta correttamente!",
|
||||
"NeedToSelectEpisodes": "Devi selezionare degli episodi!",
|
||||
|
@ -243,20 +246,20 @@
|
|||
"CouldntNotify": "Impossibile notificare il titolo {{title}}"
|
||||
},
|
||||
"Issues": {
|
||||
"Title": "Problemi",
|
||||
"IssuesForTitle": "Problemi per {{title}}",
|
||||
"PendingTitle": "Problemi In Attesa",
|
||||
"InProgressTitle": "Problemi In Corso",
|
||||
"ResolvedTitle": "Problemi Risolti",
|
||||
"Title": "Segnalazioni",
|
||||
"IssuesForTitle": "Segnalazioni per {{title}}",
|
||||
"PendingTitle": "Segnalazioni In Attesa",
|
||||
"InProgressTitle": "Segnalazioni In Risoluzione",
|
||||
"ResolvedTitle": "Segnalazioni Risolte",
|
||||
"ColumnTitle": "Titolo",
|
||||
"Count": "Conteggio",
|
||||
"Count": "Totale",
|
||||
"Category": "Categoria",
|
||||
"Status": "Stato",
|
||||
"Details": "Dettagli",
|
||||
"Description": "Descrizione",
|
||||
"NoComments": "Nessun Commento!",
|
||||
"MarkInProgress": "Senza In Corso",
|
||||
"MarkResolved": "Segna Risolto",
|
||||
"MarkInProgress": "Approva",
|
||||
"MarkResolved": "Risolvi",
|
||||
"SendMessageButton": "Invia",
|
||||
"Subject": "Oggetto",
|
||||
"Comments": "Commenti",
|
||||
|
@ -306,22 +309,22 @@
|
|||
"Denied": "Rifiutato",
|
||||
"Denied4K": "4K Negato",
|
||||
"Trailers": "Trailer",
|
||||
"RecommendationsTitle": "Raccomandazioni",
|
||||
"RecommendationsTitle": "Raccomandati",
|
||||
"SimilarTitle": "Simili",
|
||||
"VideosTitle": "Video",
|
||||
"AlbumsTitle": "Album",
|
||||
"RequestAllAlbums": "Richiedi Tutti gli Album",
|
||||
"RequestAllAlbums": "Richiedi tutti gli Album",
|
||||
"ClearSelection": "Cancella Selezione",
|
||||
"RequestSelectedAlbums": "Richiesta degli Album Selezionati",
|
||||
"RequestSelectedAlbums": "Richiedi gli Album Selezionati",
|
||||
"ViewCollection": "Visualizza Raccolta",
|
||||
"NotEnoughInfo": "Sfortunatamente ancora non ci sono abbastanza informazioni su questo show!",
|
||||
"NotEnoughInfo": "Purtroppo ancora non ci sono abbastanza informazioni su questa serie!",
|
||||
"AdvancedOptions": "Opzioni Avanzate",
|
||||
"AutoApproveOptions": "Puoi configurare qui la tua richiesta, che verrà inviata alla tua applicazione DVR e automaticamente approvata! La configurazione è facoltativa, basta premere Richiedi per saltarla!",
|
||||
"AutoApproveOptionsTv": "Puoi configurare qui la tua richiesta, che verrà inviata alla tua applicazione DVR e automaticamente approvata! Se la richiesta è già presente in Sonarr, la cartella radice o il profilo qualità non verrà cambiato! La configurazione è facoltativa, basta premere Richiedi per saltarla!",
|
||||
"AutoApproveOptionsTvShort": "Puoi configurare qui la tua richiesta, che verrà inviata alla tua applicazione DVR! Se la richiesta è già presente in Sonarr, la cartella radice o il profilo qualità non verrà cambiato! La configurazione è facoltativa, basta premere Richiedi per saltarla!",
|
||||
"QualityProfilesSelect": "Seleziona Un Profilo di Qualità",
|
||||
"RootFolderSelect": "Seleziona Una Cartella di Root",
|
||||
"LanguageProfileSelect": "Seleziona Un Profilo della Lingua",
|
||||
"QualityProfilesSelect": "Seleziona un Profilo per la Qualità",
|
||||
"RootFolderSelect": "Seleziona una Cartella Principale",
|
||||
"LanguageProfileSelect": "Seleziona un profilo per la Lingua",
|
||||
"Status": "Stato:",
|
||||
"StatusValues": {
|
||||
"Rumored": "Rumor",
|
||||
|
@ -331,16 +334,16 @@
|
|||
"Released": "Rilasciato",
|
||||
"Running": "In Corso",
|
||||
"Returning Series": "Serie Rinnovate",
|
||||
"Ended": "Terminata",
|
||||
"Canceled": "Annullata"
|
||||
"Ended": "Conclusa",
|
||||
"Canceled": "Cancellata"
|
||||
},
|
||||
"Seasons": "Stagioni:",
|
||||
"Episodes": "Episodi:",
|
||||
"Availability": "Disponibilità:",
|
||||
"RequestStatus": "Stato Richiesta",
|
||||
"Quality": "Qualità:",
|
||||
"RootFolderOverride": "Sovrascrizione Cartella di Root:",
|
||||
"QualityOverride": "Sovrascrizione Qualità:",
|
||||
"RootFolderOverride": "Sovrascrivi Cartella Principale:",
|
||||
"QualityOverride": "Sovrascrivi Qualità:",
|
||||
"Network": "Rete:",
|
||||
"GenresLabel": "Generi:",
|
||||
"Genres": "Generi",
|
||||
|
@ -357,9 +360,9 @@
|
|||
"CastTitle": "Trasmetti"
|
||||
},
|
||||
"EpisodeSelector": {
|
||||
"AllSeasonsTooltip": "Questo richiederà ogni stagione per questo show",
|
||||
"FirstSeasonTooltip": "Questo richiederà solo la Prima Stagione per questo show",
|
||||
"LatestSeasonTooltip": "Questo richiederà solo l'Ultima Stagione per questo show",
|
||||
"AllSeasonsTooltip": "Richiederà tutte le stagioni per questa serie",
|
||||
"FirstSeasonTooltip": "Richiederà solo la Prima Stagione per questa serie",
|
||||
"LatestSeasonTooltip": "Richiederà solo l'Ultima Stagione per questa serie",
|
||||
"NoEpisodes": "Sfortunatamente, non c'è ancora alcun dato dell'episodio per questa serie!",
|
||||
"SeasonNumber": "Stagione {{number}}"
|
||||
},
|
||||
|
@ -379,7 +382,8 @@
|
|||
"Country": "Paese:",
|
||||
"StartDate": "Data Iniziale:",
|
||||
"EndDate": "Data Finale:"
|
||||
}
|
||||
},
|
||||
"RequestSource": "Sorgente:"
|
||||
},
|
||||
"Discovery": {
|
||||
"PopularTab": "Popolare",
|
||||
|
@ -410,14 +414,14 @@
|
|||
"DarkMode": "Modalità Scura",
|
||||
"Updated": "Aggiornate Correttamente",
|
||||
"StreamingCountry": "Paese di Streaming",
|
||||
"StreamingCountryDescription": "Questo è il codice paese per cui mostreremo le informazioni di streaming. Se sei negli USA, selezionando US riceverai le informazioni di streaming correlate agli USA.",
|
||||
"StreamingCountryDescription": "Questo è il codice del paese per cui mostreremo le informazioni dei media. Se sei in Italia, seleziona IT e ti mostreremo le informazioni dei media in Italiano.",
|
||||
"LanguageDescription": "Questa è la lingua in cui vorresti fosse visualizzata l'interfaccia di Ombi.",
|
||||
"MobileQRCode": "Codice QR Mobile",
|
||||
"LegacyApp": "Avvia l'App Legacy",
|
||||
"NoQrCode": "Sei pregato di contattare il tuo amministratore per abilitare i codici QR",
|
||||
"NoQrCode": "Contatta l'amministratore per abilitare i codici QR",
|
||||
"UserType": "Tipo di Utente:",
|
||||
"ChangeDetails": "Modifica i Dettagli",
|
||||
"NeedCurrentPassword": "Necessiti la tua password corrente per effettuare qualsiasi modifica qui",
|
||||
"NeedCurrentPassword": "Hai bisogno della tua password attuale per apportare qualsiasi modifica qui",
|
||||
"CurrentPassword": "Password Corrente",
|
||||
"EmailAddress": "Indirizzo Email",
|
||||
"NewPassword": "Nuova Password",
|
||||
|
@ -429,8 +433,8 @@
|
|||
},
|
||||
"UserTypeLabel": {
|
||||
"1": "Utente Locale",
|
||||
"2": "Utente di Plex",
|
||||
"3": "Utente di Emby",
|
||||
"2": "Utente Plex",
|
||||
"3": "Utente Emby",
|
||||
"4": "Connetti Utente di Emby",
|
||||
"5": "Utente di Jellyfin"
|
||||
},
|
||||
|
|
|
@ -207,10 +207,13 @@
|
|||
"RequestPanel": {
|
||||
"Delete": "Verwijder Verzoek",
|
||||
"Approve": "Verzoek Goedkeuren",
|
||||
"Deny": "Deny Request",
|
||||
"Approve4K": "Approve 4K Request",
|
||||
"Deny4K": "Deny 4K Request",
|
||||
"ChangeAvailability": "Markeer beschikbaar",
|
||||
"Deleted": "Successfully deleted selected items",
|
||||
"Approved": "Successfully approved selected items"
|
||||
"Approved": "Successfully approved selected items",
|
||||
"Denied": "Successfully denied selected items"
|
||||
},
|
||||
"SuccessfullyApproved": "Successfully Approved",
|
||||
"SuccessfullyDeleted": "Request successfully deleted",
|
||||
|
@ -379,7 +382,8 @@
|
|||
"Country": "Country:",
|
||||
"StartDate": "Start Date:",
|
||||
"EndDate": "EndDate:"
|
||||
}
|
||||
},
|
||||
"RequestSource": "Source:"
|
||||
},
|
||||
"Discovery": {
|
||||
"PopularTab": "Populair",
|
||||
|
|
|
@ -207,10 +207,13 @@
|
|||
"RequestPanel": {
|
||||
"Delete": "Delete Request",
|
||||
"Approve": "Approve Request",
|
||||
"Deny": "Deny Request",
|
||||
"Approve4K": "Approve 4K Request",
|
||||
"Deny4K": "Deny 4K Request",
|
||||
"ChangeAvailability": "Merk tilgjengelig",
|
||||
"Deleted": "Successfully deleted selected items",
|
||||
"Approved": "Successfully approved selected items"
|
||||
"Approved": "Successfully approved selected items",
|
||||
"Denied": "Successfully denied selected items"
|
||||
},
|
||||
"SuccessfullyApproved": "Successfully Approved",
|
||||
"SuccessfullyDeleted": "Request successfully deleted",
|
||||
|
@ -379,7 +382,8 @@
|
|||
"Country": "Country:",
|
||||
"StartDate": "Start Date:",
|
||||
"EndDate": "EndDate:"
|
||||
}
|
||||
},
|
||||
"RequestSource": "Source:"
|
||||
},
|
||||
"Discovery": {
|
||||
"PopularTab": "Populært",
|
||||
|
|
|
@ -207,10 +207,13 @@
|
|||
"RequestPanel": {
|
||||
"Delete": "Usuń zgłoszenie",
|
||||
"Approve": "Zatwierdź zgłoszenie",
|
||||
"Deny": "Deny Request",
|
||||
"Approve4K": "Zatwierdź prośbę o 4K",
|
||||
"Deny4K": "Deny 4K Request",
|
||||
"ChangeAvailability": "Ozn. jako dostępne",
|
||||
"Deleted": "Pomyślnie usunięto wybrane elementy",
|
||||
"Approved": "Pomyślnie zatwierdzono wybrane elementy"
|
||||
"Approved": "Pomyślnie zatwierdzono wybrane elementy",
|
||||
"Denied": "Successfully denied selected items"
|
||||
},
|
||||
"SuccessfullyApproved": "Zatwierdzono pomyślnie",
|
||||
"SuccessfullyDeleted": "Prośba pomyślnie usunięta",
|
||||
|
@ -379,7 +382,8 @@
|
|||
"Country": "Kraj:",
|
||||
"StartDate": "Data rozpoczęcia:",
|
||||
"EndDate": "Data zakończenia:"
|
||||
}
|
||||
},
|
||||
"RequestSource": "Source:"
|
||||
},
|
||||
"Discovery": {
|
||||
"PopularTab": "Popularne",
|
||||
|
|
|
@ -207,10 +207,13 @@
|
|||
"RequestPanel": {
|
||||
"Delete": "Apagar Solicitação",
|
||||
"Approve": "Aprovar Solicitação",
|
||||
"Deny": "Recusar pedido",
|
||||
"Approve4K": "Aprovar pedido 4K",
|
||||
"Deny4K": "Recusar pedido de 4K",
|
||||
"ChangeAvailability": "Marcar Como Disponível",
|
||||
"Deleted": "Successfully deleted selected items",
|
||||
"Approved": "Successfully approved selected items"
|
||||
"Approved": "Successfully approved selected items",
|
||||
"Denied": "Itens selecionados negados com sucesso"
|
||||
},
|
||||
"SuccessfullyApproved": "Successfully Approved",
|
||||
"SuccessfullyDeleted": "Request successfully deleted",
|
||||
|
@ -379,7 +382,8 @@
|
|||
"Country": "Country:",
|
||||
"StartDate": "Start Date:",
|
||||
"EndDate": "EndDate:"
|
||||
}
|
||||
},
|
||||
"RequestSource": "Source:"
|
||||
},
|
||||
"Discovery": {
|
||||
"PopularTab": "Popular",
|
||||
|
|
|
@ -207,10 +207,13 @@
|
|||
"RequestPanel": {
|
||||
"Delete": "Delete Request",
|
||||
"Approve": "Approve Request",
|
||||
"Deny": "Deny Request",
|
||||
"Approve4K": "Approve 4K Request",
|
||||
"Deny4K": "Deny 4K Request",
|
||||
"ChangeAvailability": "Mark Available",
|
||||
"Deleted": "Successfully deleted selected items",
|
||||
"Approved": "Successfully approved selected items"
|
||||
"Approved": "Successfully approved selected items",
|
||||
"Denied": "Successfully denied selected items"
|
||||
},
|
||||
"SuccessfullyApproved": "Successfully Approved",
|
||||
"SuccessfullyDeleted": "Request successfully deleted",
|
||||
|
@ -379,7 +382,8 @@
|
|||
"Country": "Country:",
|
||||
"StartDate": "Start Date:",
|
||||
"EndDate": "EndDate:"
|
||||
}
|
||||
},
|
||||
"RequestSource": "Origem:"
|
||||
},
|
||||
"Discovery": {
|
||||
"PopularTab": "Popular",
|
||||
|
|
|
@ -207,10 +207,13 @@
|
|||
"RequestPanel": {
|
||||
"Delete": "Delete Request",
|
||||
"Approve": "Approve Request",
|
||||
"Deny": "Deny Request",
|
||||
"Approve4K": "Approve 4K Request",
|
||||
"Deny4K": "Deny 4K Request",
|
||||
"ChangeAvailability": "Отметить доступным",
|
||||
"Deleted": "Successfully deleted selected items",
|
||||
"Approved": "Successfully approved selected items"
|
||||
"Approved": "Successfully approved selected items",
|
||||
"Denied": "Successfully denied selected items"
|
||||
},
|
||||
"SuccessfullyApproved": "Successfully Approved",
|
||||
"SuccessfullyDeleted": "Request successfully deleted",
|
||||
|
@ -379,7 +382,8 @@
|
|||
"Country": "Country:",
|
||||
"StartDate": "Start Date:",
|
||||
"EndDate": "EndDate:"
|
||||
}
|
||||
},
|
||||
"RequestSource": "Source:"
|
||||
},
|
||||
"Discovery": {
|
||||
"PopularTab": "Популярное",
|
||||
|
|
|
@ -207,10 +207,13 @@
|
|||
"RequestPanel": {
|
||||
"Delete": "Odstrániž požiadavku",
|
||||
"Approve": "Schváliť žiadosť",
|
||||
"Deny": "Deny Request",
|
||||
"Approve4K": "Approve 4K Request",
|
||||
"Deny4K": "Deny 4K Request",
|
||||
"ChangeAvailability": "Označiť k dispozícií",
|
||||
"Deleted": "Úspešne odstránené vybrané položky",
|
||||
"Approved": "Úspešne schválené vybrané položky"
|
||||
"Approved": "Úspešne schválené vybrané položky",
|
||||
"Denied": "Successfully denied selected items"
|
||||
},
|
||||
"SuccessfullyApproved": "Úspešne schválené",
|
||||
"SuccessfullyDeleted": "Žiadosť bola úspešne vymazaná",
|
||||
|
@ -379,7 +382,8 @@
|
|||
"Country": "Krajina:",
|
||||
"StartDate": "Dátum začatia:",
|
||||
"EndDate": "Dátum ukončenia:"
|
||||
}
|
||||
},
|
||||
"RequestSource": "Source:"
|
||||
},
|
||||
"Discovery": {
|
||||
"PopularTab": "Populárne",
|
||||
|
|
|
@ -207,10 +207,13 @@
|
|||
"RequestPanel": {
|
||||
"Delete": "Ta bort förfrågan",
|
||||
"Approve": "Godkänn begäran",
|
||||
"Deny": "Deny Request",
|
||||
"Approve4K": "Godkänn 4K-begäran",
|
||||
"Deny4K": "Deny 4K Request",
|
||||
"ChangeAvailability": "Markera Tillgänglig",
|
||||
"Deleted": "Successfully deleted selected items",
|
||||
"Approved": "Successfully approved selected items"
|
||||
"Approved": "Successfully approved selected items",
|
||||
"Denied": "Successfully denied selected items"
|
||||
},
|
||||
"SuccessfullyApproved": "Successfully Approved",
|
||||
"SuccessfullyDeleted": "Request successfully deleted",
|
||||
|
@ -379,7 +382,8 @@
|
|||
"Country": "Country:",
|
||||
"StartDate": "Start Date:",
|
||||
"EndDate": "EndDate:"
|
||||
}
|
||||
},
|
||||
"RequestSource": "Källa:"
|
||||
},
|
||||
"Discovery": {
|
||||
"PopularTab": "Populära",
|
||||
|
|
|
@ -207,10 +207,13 @@
|
|||
"RequestPanel": {
|
||||
"Delete": "删除请求",
|
||||
"Approve": "批准请求",
|
||||
"Deny": "Deny Request",
|
||||
"Approve4K": "Approve 4K Request",
|
||||
"Deny4K": "Deny 4K Request",
|
||||
"ChangeAvailability": "标记为可用",
|
||||
"Deleted": "所选项目已删除",
|
||||
"Approved": "所选项目已批准"
|
||||
"Approved": "所选项目已批准",
|
||||
"Denied": "Successfully denied selected items"
|
||||
},
|
||||
"SuccessfullyApproved": "批准成功",
|
||||
"SuccessfullyDeleted": "删除请求成功",
|
||||
|
@ -379,7 +382,8 @@
|
|||
"Country": "国家:",
|
||||
"StartDate": "开始日期:",
|
||||
"EndDate": "结束日期:"
|
||||
}
|
||||
},
|
||||
"RequestSource": "Source:"
|
||||
},
|
||||
"Discovery": {
|
||||
"PopularTab": "热门",
|
||||
|
|
|
@ -207,10 +207,13 @@
|
|||
"RequestPanel": {
|
||||
"Delete": "删除请求",
|
||||
"Approve": "批准请求",
|
||||
"Deny": "Deny Request",
|
||||
"Approve4K": "批准4K请求",
|
||||
"Deny4K": "Deny 4K Request",
|
||||
"ChangeAvailability": "标记为可用",
|
||||
"Deleted": "所选项目已删除",
|
||||
"Approved": "所选项目已批准"
|
||||
"Approved": "所选项目已批准",
|
||||
"Denied": "Successfully denied selected items"
|
||||
},
|
||||
"SuccessfullyApproved": "批准成功",
|
||||
"SuccessfullyDeleted": "删除请求成功",
|
||||
|
@ -379,7 +382,8 @@
|
|||
"Country": "国家:",
|
||||
"StartDate": "开始日期:",
|
||||
"EndDate": "结束日期:"
|
||||
}
|
||||
},
|
||||
"RequestSource": "Source:"
|
||||
},
|
||||
"Discovery": {
|
||||
"PopularTab": "热门",
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue