|
|
|
@ -1,36 +1,39 @@
|
|
|
|
|
<div class="form-group">
|
|
|
|
|
<div class="input-group">
|
|
|
|
|
<input type="text" id="search" class="form-control form-control-custom searchwidth" placeholder="Search" (keyup)="search($event)">
|
|
|
|
|
<input type="text" id="search" class="form-control form-control-custom searchwidth" placeholder="Search"
|
|
|
|
|
(keyup)="search($event)">
|
|
|
|
|
<span class="input-group-btn">
|
|
|
|
|
<button id="filterBtn" class="btn btn-sm btn-info-outline" (click)="filterDisplay = !filterDisplay">
|
|
|
|
|
<i class="fa fa-filter"></i> {{ 'Requests.Filter' | translate }}
|
|
|
|
|
</button>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<button class="btn btn-sm btn-primary-outline dropdown-toggle" type="button" data-toggle="dropdown" aria-haspopup="true"
|
|
|
|
|
aria-expanded="true">
|
|
|
|
|
<button class="btn btn-sm btn-primary-outline dropdown-toggle" type="button" data-toggle="dropdown"
|
|
|
|
|
aria-haspopup="true" aria-expanded="true">
|
|
|
|
|
<i class="fa fa-sort"></i> {{ 'Requests.Sort' | translate }}
|
|
|
|
|
<span class="caret"></span>
|
|
|
|
|
</button>
|
|
|
|
|
<ul class="dropdown-menu" aria-labelledby="dropdownMenu2">
|
|
|
|
|
<li>
|
|
|
|
|
<a (click)="setOrder(OrderType.RequestedDateAsc, $event)">{{ 'Requests.SortRequestDateAsc' | translate }}
|
|
|
|
|
|
|
|
|
|
<a (click)="setOrder(OrderType.RequestedDateAsc, $event)">{{ 'Requests.SortRequestDateAsc' |
|
|
|
|
|
translate }}
|
|
|
|
|
|
|
|
|
|
</a>
|
|
|
|
|
<a class="active" (click)="setOrder(OrderType.RequestedDateDesc, $event)">{{ 'Requests.SortRequestDateDesc' | translate }}
|
|
|
|
|
<a class="active" (click)="setOrder(OrderType.RequestedDateDesc, $event)">{{
|
|
|
|
|
'Requests.SortRequestDateDesc' | translate }}
|
|
|
|
|
|
|
|
|
|
</a>
|
|
|
|
|
<a (click)="setOrder(OrderType.TitleAsc, $event)">{{ 'Requests.SortTitleAsc' | translate}}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
</a>
|
|
|
|
|
<a (click)="setOrder(OrderType.TitleDesc, $event)">{{ 'Requests.SortTitleDesc' | translate}}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
</a>
|
|
|
|
|
<a (click)="setOrder(OrderType.StatusAsc, $event)">{{ 'Requests.SortStatusAsc' | translate}}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
</a>
|
|
|
|
|
<a (click)="setOrder(OrderType.StatusDesc, $event)">{{ 'Requests.SortStatusDesc' | translate}}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
</a>
|
|
|
|
|
|
|
|
|
|
</li>
|
|
|
|
@ -58,16 +61,20 @@
|
|
|
|
|
<div class="col-sm-5 small-padding">
|
|
|
|
|
<div>
|
|
|
|
|
<a href="http://www.imdb.com/title/{{request.imdbId}}/" target="_blank">
|
|
|
|
|
<h4 class="request-title">{{request.title}} ({{request.releaseDate | amLocal | amDateFormat: 'YYYY'}})</h4>
|
|
|
|
|
<h4 class="request-title">{{request.title}} ({{request.releaseDate | amLocal | amDateFormat:
|
|
|
|
|
'YYYY'}})</h4>
|
|
|
|
|
</a>
|
|
|
|
|
</div>
|
|
|
|
|
<br />
|
|
|
|
|
<div class="request-info">
|
|
|
|
|
<div class="request-by">
|
|
|
|
|
<span>{{ 'Requests.RequestedBy' | translate }} </span>
|
|
|
|
|
<span *ngIf="!isAdmin">{{request.requestedUser.userName}}</span>
|
|
|
|
|
<span *ngIf="isAdmin && request.requestedUser.alias">{{request.requestedUser.alias}}</span>
|
|
|
|
|
<span *ngIf="isAdmin && !request.requestedUser.alias">{{request.requestedUser.userName}}</span>
|
|
|
|
|
<span *ngIf="request.requestedByAlias">{{request.requestedByAlias}}</span>
|
|
|
|
|
<span *ngIf="!request.requestedByAlias">
|
|
|
|
|
<span *ngIf="!isAdmin">{{request.requestedUser.userName}}</span>
|
|
|
|
|
<span *ngIf="isAdmin && request.requestedUser.alias">{{request.requestedUser.alias}}</span>
|
|
|
|
|
<span *ngIf="isAdmin && !request.requestedUser.alias">{{request.requestedUser.userName}}</span>
|
|
|
|
|
</span>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="request-status">
|
|
|
|
|
<span>{{ 'Requests.Status' | translate }} </span>
|
|
|
|
@ -77,13 +84,14 @@
|
|
|
|
|
<div class="requested-status">
|
|
|
|
|
<span>{{ 'Requests.RequestStatus' | translate }} </span>
|
|
|
|
|
<span *ngIf="request.available" class="label label-success" id="availableLabel" [translate]="'Common.Available'"></span>
|
|
|
|
|
<span *ngIf="request.approved && !request.available" id="processingRequestLabel" class="label label-info" [translate]="'Common.ProcessingRequest'"></span>
|
|
|
|
|
<span *ngIf="request.approved && !request.available" id="processingRequestLabel" class="label label-info"
|
|
|
|
|
[translate]="'Common.ProcessingRequest'"></span>
|
|
|
|
|
<span *ngIf="request.denied" class="label label-danger" id="requestDeclinedLabel" [translate]="'Common.RequestDenied'"></span>
|
|
|
|
|
<span *ngIf="request.deniedReason" title="{{request.deniedReason}}">
|
|
|
|
|
<i class="fa fa-info-circle"></i>
|
|
|
|
|
</span>
|
|
|
|
|
<span *ngIf="!request.approved && !request.availble && !request.denied" id="pendingApprovalLabel" class="label label-warning"
|
|
|
|
|
[translate]="'Common.PendingApproval'"></span>
|
|
|
|
|
<span *ngIf="!request.approved && !request.availble && !request.denied" id="pendingApprovalLabel"
|
|
|
|
|
class="label label-warning" [translate]="'Common.PendingApproval'"></span>
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
<div *ngIf="request.denied" id="requestDenied">
|
|
|
|
@ -93,16 +101,21 @@
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div id="releaseDate">{{ 'Requests.TheatricalRelease' | translate: {date: request.releaseDate | amLocal | amDateFormat: 'LL'} }}</div>
|
|
|
|
|
<div *ngIf="request.digitalReleaseDate" id="digitalReleaseDate">{{ 'Requests.DigitalRelease' | translate: {date: request.digitalReleaseDate | amLocal | amDateFormat: 'LL'} }}</div>
|
|
|
|
|
<div id="requestedDate">{{ 'Requests.RequestDate' | translate }} {{request.requestedDate | amLocal | amDateFormat: 'LL'}}</div>
|
|
|
|
|
<div id="releaseDate">{{ 'Requests.TheatricalRelease' | translate: {date: request.releaseDate |
|
|
|
|
|
amLocal | amDateFormat: 'LL'} }}</div>
|
|
|
|
|
<div *ngIf="request.digitalReleaseDate" id="digitalReleaseDate">{{ 'Requests.DigitalRelease' |
|
|
|
|
|
translate: {date: request.digitalReleaseDate | amLocal | amDateFormat: 'LL'} }}</div>
|
|
|
|
|
<div id="requestedDate">{{ 'Requests.RequestDate' | translate }} {{request.requestedDate | amLocal
|
|
|
|
|
| amDateFormat: 'LL'}}</div>
|
|
|
|
|
<br />
|
|
|
|
|
</div>
|
|
|
|
|
<div *ngIf="isAdmin">
|
|
|
|
|
<div *ngIf="request.qualityOverrideTitle" class="quality-override">{{ 'Requests.QualityOverride' | translate }}
|
|
|
|
|
<div *ngIf="request.qualityOverrideTitle" class="quality-override">{{ 'Requests.QualityOverride' |
|
|
|
|
|
translate }}
|
|
|
|
|
<span>{{request.qualityOverrideTitle}} </span>
|
|
|
|
|
</div>
|
|
|
|
|
<div *ngIf="request.rootPathOverrideTitle" class="root-override">{{ 'Requests.RootFolderOverride' | translate }}
|
|
|
|
|
<div *ngIf="request.rootPathOverrideTitle" class="root-override">{{ 'Requests.RootFolderOverride' |
|
|
|
|
|
translate }}
|
|
|
|
|
<span>{{request.rootPathOverrideTitle}} </span>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
@ -112,10 +125,12 @@
|
|
|
|
|
<div class="row">
|
|
|
|
|
<div class="col-md-2 col-md-push-6">
|
|
|
|
|
|
|
|
|
|
<a *ngIf="request.showSubscribe && !request.subscribed" style="color:white" (click)="subscribe(request)" pTooltip="Subscribe for notifications">
|
|
|
|
|
<a *ngIf="request.showSubscribe && !request.subscribed" style="color:white" (click)="subscribe(request)"
|
|
|
|
|
pTooltip="Subscribe for notifications">
|
|
|
|
|
<i class="fa fa-rss"></i>
|
|
|
|
|
</a>
|
|
|
|
|
<a *ngIf="request.showSubscribe && request.subscribed" style="color:red" (click)="unSubscribe(request)" pTooltip="Unsubscribe notification">
|
|
|
|
|
<a *ngIf="request.showSubscribe && request.subscribed" style="color:red" (click)="unSubscribe(request)"
|
|
|
|
|
pTooltip="Unsubscribe notification">
|
|
|
|
|
<i class="fa fa-rss"></i>
|
|
|
|
|
</a>
|
|
|
|
|
</div>
|
|
|
|
@ -123,7 +138,8 @@
|
|
|
|
|
<div *ngIf="isAdmin">
|
|
|
|
|
<div *ngIf="!request.approved" id="approveBtn">
|
|
|
|
|
<form>
|
|
|
|
|
<button (click)="approve(request)" style="text-align: right" class="btn btn-sm btn-success-outline approve" type="submit">
|
|
|
|
|
<button (click)="approve(request)" style="text-align: right" class="btn btn-sm btn-success-outline approve"
|
|
|
|
|
type="submit">
|
|
|
|
|
<i class="fa fa-plus"></i> {{ 'Common.Approve' | translate }}
|
|
|
|
|
</button>
|
|
|
|
|
</form>
|
|
|
|
@ -133,7 +149,8 @@
|
|
|
|
|
<button type="button" class="btn btn-sm btn-warning-outline">
|
|
|
|
|
<i class="fa fa-plus"></i> {{ 'Requests.ChangeRootFolder' | translate }}
|
|
|
|
|
</button>
|
|
|
|
|
<button type="button" class="btn btn-warning-outline dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
|
|
|
|
|
<button type="button" class="btn btn-warning-outline dropdown-toggle" data-toggle="dropdown"
|
|
|
|
|
aria-haspopup="true" aria-expanded="false">
|
|
|
|
|
<span class="caret"></span>
|
|
|
|
|
<span class="sr-only">Toggle Dropdown</span>
|
|
|
|
|
</button>
|
|
|
|
@ -149,7 +166,8 @@
|
|
|
|
|
<button type="button" class="btn btn-sm btn-warning-outline">
|
|
|
|
|
<i class="fa fa-plus"></i> {{ 'Requests.ChangeQualityProfile' | translate }}
|
|
|
|
|
</button>
|
|
|
|
|
<button type="button" class="btn btn-warning-outline dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
|
|
|
|
|
<button type="button" class="btn btn-warning-outline dropdown-toggle" data-toggle="dropdown"
|
|
|
|
|
aria-haspopup="true" aria-expanded="false">
|
|
|
|
|
<span class="caret"></span>
|
|
|
|
|
<span class="sr-only">Toggle Dropdown</span>
|
|
|
|
|
</button>
|
|
|
|
@ -166,15 +184,15 @@
|
|
|
|
|
</button>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<form id="markBtnGroup">
|
|
|
|
|
<button id="unavailableBtn" *ngIf="request.available" (click)="changeAvailability(request, false)" style="text-align: right"
|
|
|
|
|
value="false" class="btn btn-sm btn-info-outline change">
|
|
|
|
|
<button id="unavailableBtn" *ngIf="request.available" (click)="changeAvailability(request, false)"
|
|
|
|
|
style="text-align: right" value="false" class="btn btn-sm btn-info-outline change">
|
|
|
|
|
<i class="fa fa-minus"></i> {{ 'Requests.MarkUnavailable' | translate }}
|
|
|
|
|
</button>
|
|
|
|
|
<button id="availableBtn" *ngIf="!request.available" (click)="changeAvailability(request, true)" style="text-align: right"
|
|
|
|
|
value="true" class="btn btn-sm btn-success-outline change">
|
|
|
|
|
<button id="availableBtn" *ngIf="!request.available" (click)="changeAvailability(request, true)"
|
|
|
|
|
style="text-align: right" value="true" class="btn btn-sm btn-success-outline change">
|
|
|
|
|
<i class="fa fa-plus"></i> {{ 'Requests.MarkAvailable' | translate }}
|
|
|
|
|
</button>
|
|
|
|
|
</form>
|
|
|
|
@ -190,8 +208,8 @@
|
|
|
|
|
</form>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="dropdown" *ngIf="issueCategories && issuesEnabled" id="issuesBtn">
|
|
|
|
|
<button class="btn btn-sm btn-primary-outline dropdown-toggle" type="button" data-toggle="dropdown" aria-haspopup="true"
|
|
|
|
|
aria-expanded="true">
|
|
|
|
|
<button class="btn btn-sm btn-primary-outline dropdown-toggle" type="button" data-toggle="dropdown"
|
|
|
|
|
aria-haspopup="true" aria-expanded="true">
|
|
|
|
|
<i class="fa fa-plus"></i> {{ 'Requests.ReportIssue' | translate }}
|
|
|
|
|
<span class="caret"></span>
|
|
|
|
|
</button>
|
|
|
|
@ -204,8 +222,8 @@
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
<br/>
|
|
|
|
|
<br/>
|
|
|
|
|
<br />
|
|
|
|
|
<br />
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@ -216,11 +234,11 @@
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
<p-dialog *ngIf="requestToDeny" header="Deny Request '{{requestToDeny.title}}''" [(visible)]="denyDisplay" [draggable]="false">
|
|
|
|
|
<span>Please enter a rejection reason, the user will be notified of this:</span>
|
|
|
|
|
<textarea [(ngModel)]="rejectionReason" class="form-control-custom form-control"></textarea>
|
|
|
|
|
<span>Please enter a rejection reason, the user will be notified of this:</span>
|
|
|
|
|
<textarea [(ngModel)]="rejectionReason" class="form-control-custom form-control"></textarea>
|
|
|
|
|
<p-footer>
|
|
|
|
|
<button type="button" (click)="denyRequest();" label="Reject" class="btn btn-success">Deny</button>
|
|
|
|
|
<button type="button"(click)="denyDisplay=false" label="Close" class="btn btn-danger">Close</button>
|
|
|
|
|
<button type="button" (click)="denyDisplay=false" label="Close" class="btn btn-danger">Close</button>
|
|
|
|
|
</p-footer>
|
|
|
|
|
</p-dialog>
|
|
|
|
|
|
|
|
|
|