mirror of https://github.com/Ombi-app/Ombi
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
423 lines
23 KiB
423 lines
23 KiB
@using Nancy.Security
|
|
@using PlexRequests.UI.Helpers
|
|
@{
|
|
var baseUrl = Html.GetBaseUrl();
|
|
var formAction = string.Empty;
|
|
if (!string.IsNullOrEmpty(baseUrl.ToHtmlString()))
|
|
{
|
|
formAction = "/" + baseUrl.ToHtmlString();
|
|
}
|
|
}
|
|
<div>
|
|
<h1>Requests</h1>
|
|
<h4>Below you can see yours and all other requests, as well as their download and approval status.</h4>
|
|
<br />
|
|
|
|
<!-- Nav tabs -->
|
|
<ul id="nav-tabs" class="nav nav-tabs" role="tablist">
|
|
@if (Model.SearchForMovies)
|
|
{
|
|
<li role="presentation" class="active"><a href="#MoviesTab" aria-controls="home" role="tab" data-toggle="tab"><i class="fa fa-film"></i>Movies</a></li>
|
|
}
|
|
@if (Model.SearchForTvShows)
|
|
{
|
|
<li role="presentation"><a href="#TvShowTab" aria-controls="profile" role="tab" data-toggle="tab"><i class="fa fa-television"></i>TV Shows</a></li>
|
|
}
|
|
@if (Model.SearchForMusic)
|
|
{
|
|
<li role="presentation"><a href="#MusicTab" aria-controls="profile" role="tab" data-toggle="tab"><i class="fa fa-music"></i>Albums</a></li>
|
|
}
|
|
</ul>
|
|
<br />
|
|
|
|
<!-- Tab panes -->
|
|
<div class="tab-content contentList">
|
|
<div class="row">
|
|
<div class="col-sm-12">
|
|
<div class="pull-right">
|
|
<div class="btn-group btn-group-separated">
|
|
@if (Context.CurrentUser.IsAuthenticated()) //TODO replace with IsAdmin
|
|
{
|
|
@if (Model.SearchForMovies)
|
|
{
|
|
<button id="deleteMovies" class="btn btn-warning-outline delete-category" type="submit"><i class="fa fa-trash"></i> Delete Movies</button>
|
|
<button id="approveMovies" class="btn btn-success-outline approve-category" type="submit"><i class="fa fa-plus"></i> Approve Movies</button>
|
|
}
|
|
@if (Model.SearchForTvShows)
|
|
{
|
|
<button id="deleteTVShows" class="btn btn-warning-outline delete-category" type="submit" style="display: none;"><i class="fa fa-trash"></i> Delete TV Shows</button>
|
|
<button id="approveTVShows" class="btn btn-success-outline approve-category" type="submit" style="display: none;"><i class="fa fa-plus"></i> Approve TV Shows</button>
|
|
}
|
|
@if (Model.SearchForMusic)
|
|
{
|
|
<button id="deleteMusic" class="btn btn-warning-outline delete-category" type="submit" style="display: none;"><i class="fa fa-trash"></i> Delete Music</button>
|
|
<button id="approveMusic" class="btn btn-success-outline approve-category" type="submit" style="display: none;"><i class="fa fa-plus"></i> Approve Music</button>
|
|
}
|
|
}
|
|
</div>
|
|
<div class="btn-group">
|
|
<a href="#" class="btn btn-primary-outline dropdown-toggle" data-toggle="dropdown" aria-expanded="false">
|
|
Filter
|
|
<i class="fa fa-filter"></i>
|
|
</a>
|
|
<ul class="dropdown-menu">
|
|
<li><a href="#" class="filter" data-filter="all"><i class="fa fa-check-square"></i> All</a></li>
|
|
<li><a href="#" class="filter" data-filter=".approved-true"><i class="fa fa-square-o"></i> Approved</a></li>
|
|
<li><a href="#" class="filter" data-filter=".approved-false"><i class="fa fa-square-o"></i> Not Approved</a></li>
|
|
<li><a href="#" class="filter" data-filter=".available-true"><i class="fa fa-square-o"></i> Available</a></li>
|
|
<li><a href="#" class="filter" data-filter=".available-false"><i class="fa fa-square-o"></i> Not Available</a></li>
|
|
<li><a href="#" class="filter" data-filter=".released-true"><i class="fa fa-square-o"></i> Released</a></li>
|
|
<li><a href="#" class="filter" data-filter=".released-false"><i class="fa fa-square-o"></i> Not Released</a></li>
|
|
</ul>
|
|
</div>
|
|
<div class="btn-group">
|
|
<a href="#" class="btn btn-primary-outline dropdown-toggle" data-toggle="dropdown" aria-expanded="false">
|
|
Order
|
|
<i class="fa fa-sort"></i>
|
|
</a>
|
|
<ul class="dropdown-menu">
|
|
<li><a href="#" class="sort" data-sort="requestorder:desc"><i class="fa fa-check-square"></i> Latest Requests</a></li>
|
|
<li><a href="#" class="sort" data-sort="requestorder:asc"><i class="fa fa-square-o"></i> Oldest Requests</a></li>
|
|
<li><a href="#" class="sort" data-sort="releaseorder:desc"><i class="fa fa-square-o"></i> Latest Releases</a></li>
|
|
<li><a href="#" class="sort" data-sort="releaseorder:asc"><i class="fa fa-square-o"></i> Oldest Releases</a></li>
|
|
</ul>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
@if (Model.SearchForMovies)
|
|
{
|
|
|
|
<!-- Movie tab -->
|
|
<div role="tabpanel" class="tab-pane active" id="MoviesTab">
|
|
|
|
<br />
|
|
<br />
|
|
<!-- Movie content -->
|
|
<div id="movieList">
|
|
</div>
|
|
</div>
|
|
}
|
|
|
|
@if (Model.SearchForTvShows)
|
|
{
|
|
<!-- TV tab -->
|
|
<div role="tabpanel" class="tab-pane" id="TvShowTab">
|
|
|
|
<br />
|
|
<br />
|
|
<!-- TV content -->
|
|
<div id="tvList">
|
|
</div>
|
|
</div>
|
|
}
|
|
|
|
@if (Model.SearchForMusic)
|
|
{
|
|
<!-- Music tab -->
|
|
<div role="tabpanel" class="tab-pane" id="MusicTab">
|
|
|
|
<br />
|
|
<br />
|
|
<!-- TV content -->
|
|
<div id="musicList">
|
|
</div>
|
|
</div>
|
|
}
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
<script id="search-template" type="text/x-handlebars-template">
|
|
<div id="{{requestId}}Template" class="mix available-{{available}} approved-{{approved}} released-{{released}}" data-requestorder="{{requestedDateTicks}}" data-releaseorder="{{releaseDateTicks}}">
|
|
<div class="row">
|
|
<div class="col-sm-2">
|
|
{{#if_eq type "movie"}}
|
|
{{#if posterPath}}
|
|
<img class="img-responsive" src="https://image.tmdb.org/t/p/w150/{{posterPath}}" alt="poster">
|
|
{{/if}}
|
|
{{/if_eq}}
|
|
{{#if_eq type "tv"}}
|
|
{{#if posterPath}}
|
|
<img class="img-responsive" width="150" src="{{posterPath}}" alt="poster">
|
|
{{/if}}
|
|
{{/if_eq}}
|
|
</div>
|
|
<div class="col-sm-5 ">
|
|
<div>
|
|
<a href="http://www.imdb.com/title/{{imdb}}/" target="_blank">
|
|
<h4 class="request-title">{{title}} ({{year}})</h4>
|
|
</a>
|
|
<span class="label label-success">{{status}}</span>
|
|
</div>
|
|
<br />
|
|
<div>Release Date: {{releaseDate}}</div>
|
|
<div>
|
|
Approved:
|
|
{{#if_eq approved false}}
|
|
<i id="{{requestId}}notapproved" class="fa fa-times"></i>
|
|
{{/if_eq}}
|
|
{{#if_eq approved true}}
|
|
<i class="fa fa-check"></i>
|
|
{{/if_eq}}
|
|
</div>
|
|
<div>
|
|
Available
|
|
{{#if_eq available false}}
|
|
<i id="availableIcon{{requestId}}" class="fa fa-times"></i>
|
|
{{/if_eq}}
|
|
{{#if_eq available true}}
|
|
<i id="availableIcon{{requestId}}" class="fa fa-check"></i>
|
|
{{/if_eq}}
|
|
</div>
|
|
{{#if_eq type "tv"}}
|
|
<div>Seasons Requested: {{seriesRequested}}</div>
|
|
{{/if_eq}}
|
|
{{#if requestedUsers}}
|
|
<div>Requested By: {{requestedUsers}}</div>
|
|
{{/if}}
|
|
<div>Requested Date: {{requestedDate}}</div>
|
|
<div id="issueArea{{requestId}}">
|
|
{{#if otherMessage}}
|
|
<div>Message: {{otherMessage}}</div>
|
|
{{else}}
|
|
<div>Issue: {{issues}}</div>
|
|
{{/if}}
|
|
</div>
|
|
<div id="adminNotesArea{{requestId}}">
|
|
{{#if adminNote}}
|
|
<div>Note from Admin: {{adminNote}}</div>
|
|
{{/if}}
|
|
</div>
|
|
</div>
|
|
<div class="col-sm-3 col-sm-push-3">
|
|
{{#if_eq admin true}}
|
|
{{#if_eq approved false}}
|
|
<form method="POST" action="@formAction/approval/approve" id="approve{{requestId}}">
|
|
<input name="requestId" type="text" value="{{requestId}}" hidden="hidden" />
|
|
{{#if_eq hasQualities true}}
|
|
<div class="btn-group btn-split">
|
|
<button type="button" class="btn btn-sm btn-success-outline approve" id="{{requestId}}" custom-button="{{requestId}}"><i class="fa fa-plus"></i> Approve</button>
|
|
<button type="button" class="btn btn-success-outline dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
|
|
<span class="caret"></span>
|
|
<span class="sr-only">Toggle Dropdown</span>
|
|
</button>
|
|
<ul class="dropdown-menu">
|
|
{{#each qualities}}
|
|
<li><a href="#" class="approve-with-quality" id="{{id}}">{{name}}</a></li>
|
|
{{/each}}
|
|
</ul>
|
|
</div>
|
|
{{else}}
|
|
<button id="{{requestId}}" custom-button="{{requestId}}" style="text-align: right" class="btn btn-sm btn-success-outline approve" type="submit"><i class="fa fa-plus"></i> Approve</button>
|
|
{{/if_eq}}
|
|
</form>
|
|
{{/if_eq}}
|
|
<form method="POST" action="@formAction/requests/delete" id="delete{{requestId}}">
|
|
<input name="Id" type="text" value="{{requestId}}" hidden="hidden" />
|
|
<button id="{{requestId}}" style="text-align: right" class="btn btn-sm btn-danger-outline delete" type="submit"><i class="fa fa-minus"></i> Remove</button>
|
|
</form>
|
|
|
|
<form method="POST" action="@formAction/requests/clearissues" id="clear{{requestId}}">
|
|
<input name="Id" type="text" value="{{requestId}}" hidden="hidden" />
|
|
<button id="{{requestId}}" style="text-align: right" class="btn btn-sm btn-info-outline clear" type="submit"><i class="fa fa-check"></i> Clear Issues</button>
|
|
</form>
|
|
|
|
<form method="POST" action="@formAction/requests/changeavailability" id="change{{requestId}}">
|
|
<input name="Id" type="text" value="{{requestId}}" hidden="hidden" />
|
|
{{#if_eq available true}}
|
|
<button id="{{requestId}}" custom-availibility="{{requestId}}" style="text-align: right" value="false" class="btn btn-sm btn-info-outline change" type="submit"><i class="fa fa-minus"></i> Mark Unavailable</button>
|
|
{{else}}
|
|
<button id="{{requestId}}" custom-availibility="{{requestId}}" style="text-align: right" value="true" class="btn btn-sm btn-success-outline change" type="submit"><i class="fa fa-plus"></i> Mark Available</button>
|
|
{{/if_eq}}
|
|
</form>
|
|
|
|
{{/if_eq}}
|
|
|
|
<form method="POST" action="@formAction/issues/issue/" id="report{{requestId}}">
|
|
<input name="requestId" type="text" value="{{requestId}}" hidden="hidden" />
|
|
<div class="dropdown">
|
|
<button id="{{requestId}}" 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> Report Issue
|
|
<span class="caret"></span>
|
|
</button>
|
|
<ul class="dropdown-menu" aria-labelledby="dropdownMenu1">
|
|
<li><a id="{{requestId}}" issue-select="0" class="dropdownIssue" href="#">Wrong Audio</a></li>
|
|
<li><a id="{{requestId}}" issue-select="1" class="dropdownIssue" href="#">No Subtitles</a></li>
|
|
<li><a id="{{requestId}}" issue-select="2" class="dropdownIssue" href="#">Wrong Content</a></li>
|
|
<li><a id="{{requestId}}" issue-select="3" class="dropdownIssue" href="#">Playback Issues</a></li>
|
|
<li><a id="{{requestId}}" issue-select="4" class="dropdownIssue" data-identifier="{{requestId}}" href="#" data-toggle="modal" data-target="#myModal">Other</a></li>
|
|
|
|
{{#if_eq admin true}}
|
|
<li><a id="{{requestId}}" issue-select="4" class="note" data-identifier="{{requestId}}" href="#" data-toggle="modal" data-target="#noteModal">Add Note</a></li>
|
|
{{/if_eq}}
|
|
</ul>
|
|
</div>
|
|
</form>
|
|
|
|
</div>
|
|
</div>
|
|
<hr />
|
|
</div>
|
|
</script>
|
|
|
|
<script id="album-template" type="text/x-handlebars-template">
|
|
<div id="{{requestId}}Template" class="mix available-{{available}} approved-{{approved}}" data-requestorder="{{requestedDateTicks}}" data-releaseorder="{{releaseDateTicks}}">
|
|
<div class="row">
|
|
<div class="col-sm-2">
|
|
{{#if posterPath}}
|
|
<img class="img-responsive" src="{{posterPath}}" width="150" alt="poster">
|
|
{{/if}}
|
|
</div>
|
|
<div class="col-sm-5 ">
|
|
<div>
|
|
<a href="https://musicbrainz.org/release/{{musicBrainzId}}" target="_blank">
|
|
<h4>
|
|
{{artist}} - {{title}}
|
|
{{#if year}}
|
|
({{year}})
|
|
{{/if}}
|
|
</h4>
|
|
</a>
|
|
<span class="label label-success">{{status}}</span>
|
|
</div>
|
|
<br />
|
|
<div>Release Date: {{releaseDate}}</div>
|
|
<div>
|
|
Approved:
|
|
{{#if_eq approved false}}
|
|
<i id="{{requestId}}notapproved" class="fa fa-times"></i>
|
|
{{/if_eq}}
|
|
{{#if_eq approved true}}
|
|
<i class="fa fa-check"></i>
|
|
{{/if_eq}}
|
|
</div>
|
|
<div>
|
|
Available
|
|
{{#if_eq available false}}
|
|
<i id="availableIcon{{requestId}}" class="fa fa-times"></i>
|
|
{{/if_eq}}
|
|
{{#if_eq available true}}
|
|
<i id="availableIcon{{requestId}}" class="fa fa-check"></i>
|
|
{{/if_eq}}
|
|
</div>
|
|
{{#if requestedUsers}}
|
|
<div>Requested By: {{requestedUsers}}</div>
|
|
{{/if}}
|
|
<div>Requested Date: {{requestedDate}}</div>
|
|
<div id="issueArea{{requestId}}">
|
|
{{#if otherMessage}}
|
|
<div>Message: {{otherMessage}}</div>
|
|
{{else}}
|
|
<div>Issue: {{issues}}</div>
|
|
{{/if}}
|
|
</div>
|
|
<div id="adminNotesArea{{requestId}}">
|
|
{{#if adminNote}}
|
|
<div>Note from Admin: {{adminNote}}</div>
|
|
{{/if}}
|
|
</div>
|
|
</div>
|
|
<div class="col-sm-2 col-sm-push-3">
|
|
{{#if_eq admin true}}
|
|
{{#if_eq approved false}}
|
|
<form method="POST" action="@formAction/approval/approve" id="approve{{requestId}}">
|
|
<input name="requestId" type="text" value="{{requestId}}" hidden="hidden" />
|
|
<button id="{{requestId}}" custom-button="{{requestId}}" style="text-align: right" class="btn btn-sm btn-success-outline approve" type="submit"><i class="fa fa-plus"></i> Approve</button>
|
|
</form>
|
|
{{/if_eq}}
|
|
<form method="POST" action="@formAction/requests/delete" id="delete{{requestId}}">
|
|
<input name="Id" type="text" value="{{requestId}}" hidden="hidden" />
|
|
<button id="{{requestId}}" style="text-align: right" class="btn btn-sm btn-danger-outline delete" type="submit"><i class="fa fa-minus"></i> Remove</button>
|
|
</form>
|
|
|
|
<form method="POST" action="@formAction/requests/clearissues" id="clear{{requestId}}">
|
|
<input name="Id" type="text" value="{{requestId}}" hidden="hidden" />
|
|
<button id="{{requestId}}" style="text-align: right" class="btn btn-sm btn-info-outline clear" type="submit"><i class="fa fa-check"></i> Clear Issues</button>
|
|
</form>
|
|
|
|
<form method="POST" action="@formAction/requests/changeavailability" id="change{{requestId}}">
|
|
<input name="Id" type="text" value="{{requestId}}" hidden="hidden" />
|
|
{{#if_eq available true}}
|
|
<button id="{{requestId}}" custom-availibility="{{requestId}}" style="text-align: right" value="false" class="btn btn-sm btn-info-outline change" type="submit"><i class="fa fa-minus"></i> Mark Unavailable</button>
|
|
{{else}}
|
|
<button id="{{requestId}}" custom-availibility="{{requestId}}" style="text-align: right" value="true" class="btn btn-sm btn-success-outline change" type="submit"><i class="fa fa-plus"></i> Mark Available</button>
|
|
{{/if_eq}}
|
|
</form>
|
|
|
|
{{/if_eq}}
|
|
|
|
<form method="POST" action="@formAction/issues/issue/" id="report{{requestId}}">
|
|
<input name="requestId" type="text" value="{{requestId}}" hidden="hidden" />
|
|
<div class="dropdown">
|
|
<button id="{{requestId}}" 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> Report Issue
|
|
<span class="caret"></span>
|
|
</button>
|
|
<ul class="dropdown-menu" aria-labelledby="dropdownMenu1">
|
|
<li><a id="{{requestId}}" issue-select="0" class="dropdownIssue" href="#">Wrong Audio</a></li>
|
|
<li><a id="{{requestId}}" issue-select="1" class="dropdownIssue" href="#">No Subtitles</a></li>
|
|
<li><a id="{{requestId}}" issue-select="2" class="dropdownIssue" href="#">Wrong Content</a></li>
|
|
<li><a id="{{requestId}}" issue-select="3" class="dropdownIssue" href="#">Playback Issues</a></li>
|
|
<li><a id="{{requestId}}" issue-select="4" class="dropdownIssue" data-identifier="{{requestId}}" href="#" data-toggle="modal" data-target="#myModal">Other</a></li>
|
|
|
|
{{#if_eq admin true}}
|
|
<li><a id="{{requestId}}" issue-select="4" class="note" data-identifier="{{requestId}}" href="#" data-toggle="modal" data-target="#noteModal">Add Note</a></li>
|
|
{{/if_eq}}
|
|
</ul>
|
|
</div>
|
|
</form>
|
|
|
|
</div>
|
|
</div>
|
|
<hr />
|
|
</div>
|
|
</script>
|
|
|
|
<div class="modal fade" id="myModal">
|
|
<div class="modal-dialog">
|
|
<div class="modal-content">
|
|
<div class="modal-header">
|
|
<button type="button" class="close" data-dismiss="modal" aria-hidden="true"><i class="fa fa-times"></i></button>
|
|
<h4 class="modal-title">Add issue/comment</h4>
|
|
</div>
|
|
<form method="POST" action="@formAction/issues/issuecomment" id="commentForm">
|
|
<div class="modal-body">
|
|
<input name="requestId" class="requestId" type="text" hidden="hidden" value="" />
|
|
<textarea class="form-control form-control-custom" rows="3" id="commentArea" name="commentArea"></textarea>
|
|
</div>
|
|
<div class="modal-footer">
|
|
<button type="button" class="btn btn-danger-outline" data-dismiss="modal">Close</button>
|
|
<button type="button" class="btn btn-primary-outline theSaveButton" data-dismiss="modal">Save changes</button>
|
|
</div>
|
|
</form>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="modal fade" id="noteModal">
|
|
<div class="modal-dialog">
|
|
<div class="modal-content">
|
|
<div class="modal-header">
|
|
<button type="button" class="close" data-dismiss="modal" aria-hidden="true"><i class="fa fa-times"></i></button>
|
|
<h4 class="modal-title">Add a note</h4>
|
|
</div>
|
|
<form method="POST" action="@formAction/requests/addnote" id="noteForm">
|
|
<div class="modal-body">
|
|
<input name="requestId" class="noteId" type="text" hidden="hidden" value=""/>
|
|
<textarea class="form-control form-control-custom" rows="3" id="noteArea" name="noteArea"></textarea>
|
|
</div>
|
|
<div class="modal-footer">
|
|
<button type="button" class="btn btn-danger-outline" data-dismiss="modal">Close</button>
|
|
<button type="button" class="btn btn-primary-outline theNoteSaveButton" data-dismiss="modal">Save changes</button>
|
|
</div>
|
|
</form>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
@Html.LoadRequestAssets()
|
|
|
|
|