mirror of
https://github.com/Ombi-app/Ombi.git
synced 2025-08-21 05:43:19 -07:00
Merge branch 'dev' into master
This commit is contained in:
commit
a056ba17e5
206 changed files with 8047 additions and 2824 deletions
|
@ -1,13 +1,17 @@
|
|||
@using PlexRequests.UI.Helpers
|
||||
@Html.Partial("_Sidebar")
|
||||
@Html.Partial("Shared/Partial/_Sidebar")
|
||||
|
||||
@{
|
||||
var baseUrl = Html.GetBaseUrl();
|
||||
var formAction = "/admin/authentication";
|
||||
|
||||
var usermanagement = "/usermanagement";
|
||||
if (!string.IsNullOrEmpty(baseUrl.ToHtmlString()))
|
||||
{
|
||||
formAction = "/" + baseUrl.ToHtmlString() + formAction;
|
||||
usermanagement = "/" + baseUrl.ToHtmlString() + usermanagement;
|
||||
}
|
||||
|
||||
}
|
||||
<div class="col-sm-8 col-sm-push-1">
|
||||
<form class="form-horizontal" method="POST" action="@formAction" id="mainForm">
|
||||
|
@ -50,18 +54,10 @@
|
|||
|
||||
|
||||
<br />
|
||||
<a href="@usermanagement" class="btn btn-info-outline">User Management</a>
|
||||
<br />
|
||||
<p class="form-group">Current users that are allowed to authenticate: </p>
|
||||
|
||||
<div class="form-group">
|
||||
<select id="users" multiple="" class="form-control-custom" style="height: 180px;"></select>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
|
||||
<div>
|
||||
<button id="refreshUsers" class="btn btn-primary-outline">Refresh Users</button>
|
||||
</div>
|
||||
</div>
|
||||
<br />
|
||||
|
||||
|
||||
<p class="form-group">A comma separated list of users that you do not want to login.</p>
|
||||
<div class="form-group">
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
@using PlexRequests.UI.Helpers
|
||||
@inherits Nancy.ViewEngines.Razor.NancyRazorViewBase<PlexRequests.Core.SettingModels.CouchPotatoSettings>
|
||||
@Html.Partial("_Sidebar")
|
||||
@Html.Partial("Shared/Partial/_Sidebar")
|
||||
@{
|
||||
int port;
|
||||
if (Model.Port == 0)
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
@using PlexRequests.Core.Models
|
||||
@using PlexRequests.UI.Helpers
|
||||
@inherits Nancy.ViewEngines.Razor.NancyRazorViewBase<PlexRequests.Core.SettingModels.EmailNotificationSettings>
|
||||
@Html.Partial("_Sidebar")
|
||||
@Html.Partial("Shared/Partial/_Sidebar")
|
||||
@{
|
||||
int port;
|
||||
if (Model.EmailPort == 0)
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
@using PlexRequests.UI.Helpers
|
||||
@Html.Partial("_Sidebar")
|
||||
@Html.Partial("Shared/Partial/_Sidebar")
|
||||
@{
|
||||
int port;
|
||||
if (Model.Port == 0)
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
@using PlexRequests.UI.Helpers
|
||||
@Html.Partial("_Sidebar")
|
||||
@Html.Partial("Shared/Partial/_Sidebar")
|
||||
@inherits Nancy.ViewEngines.Razor.NancyRazorViewBase<PlexRequests.Core.SettingModels.LandingPageSettings>
|
||||
@Html.LoadDateTimePickerAsset()
|
||||
<div class="col-sm-8 col-sm-push-1">
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
@using PlexRequests.UI.Helpers
|
||||
@Html.Partial("_Sidebar")
|
||||
@Html.Partial("Shared/Partial/_Sidebar")
|
||||
@Html.LoadTableAssets()
|
||||
|
||||
@{
|
||||
|
@ -21,7 +21,7 @@
|
|||
<label for="logLevel" class="control-label">Log Level</label>
|
||||
<div id="logLevel">
|
||||
<select class="form-control" id="selected">
|
||||
<option id="Trace" value="0">Trace</option>
|
||||
<option id="Trace" value="0">Trace (ONLY USE FOR DEVELOPMENT)</option>
|
||||
<option id="Debug" value="1">Debug</option>
|
||||
<option id="Info" value="2">Info</option>
|
||||
<option id="Warn" value="3">Warn</option>
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
@using PlexRequests.Core.Models
|
||||
@using PlexRequests.UI.Helpers
|
||||
@inherits Nancy.ViewEngines.Razor.NancyRazorViewBase<PlexRequests.Core.SettingModels.NewletterSettings>
|
||||
@Html.Partial("_Sidebar")
|
||||
@Html.Partial("Shared/Partial/_Sidebar")
|
||||
|
||||
<div class="col-sm-8 col-sm-push-1">
|
||||
<form class="form-horizontal" method="POST" id="mainForm">
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
@using PlexRequests.Core.Models
|
||||
@using PlexRequests.UI.Helpers
|
||||
@inherits Nancy.ViewEngines.Razor.NancyRazorViewBase<PlexRequests.Core.SettingModels.NotificationSettingsV2>
|
||||
@Html.Partial("_Sidebar")
|
||||
@Html.Partial("Shared/Partial/_Sidebar")
|
||||
|
||||
<div class="col-sm-8 col-sm-push-1">
|
||||
<form class="form-horizontal" method="POST" id="mainForm">
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
@using PlexRequests.UI.Helpers
|
||||
@inherits Nancy.ViewEngines.Razor.NancyRazorViewBase<PlexRequests.Core.SettingModels.PlexSettings>
|
||||
@Html.Partial("_Sidebar")
|
||||
@Html.Partial("Shared/Partial/_Sidebar")
|
||||
@{
|
||||
int port;
|
||||
if (Model.Port == 0)
|
||||
|
@ -87,21 +87,6 @@
|
|||
<input type="text" class="form-control form-control-custom " id="SubDir" name="SubDir" value="@Model.SubDir">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@*<div class="form-group">
|
||||
<label for="PlexDatabaseLocationOverride" class="control-label">Plex Database Override</label>
|
||||
<div>
|
||||
<input type="text" class="form-control form-control-custom " id="PlexDatabaseLocationOverride" name="PlexDatabaseLocationOverride" placeholder="%LOCALAPPDATA%\Plex Media Server\" value="@Model.PlexDatabaseLocationOverride">
|
||||
</div>
|
||||
<small>
|
||||
This is your Plex data directory location, if we cannot manually find it then you need to specify the location! See <a href="https://support.plex.tv/hc/en-us/articles/202915258-Where-is-the-Plex-Media-Server-data-directory-located-">Here</a>.
|
||||
</small>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="">
|
||||
<button id="dbTest" class="btn btn-primary-outline">Test Database Directory <i class="fa fa-database"></i> <div id="dbSpinner"></div></button>
|
||||
</div>
|
||||
</div>*@
|
||||
|
||||
<div class="form-group">
|
||||
<label for="authToken" class="control-label">Plex Authorization Token</label>
|
||||
|
@ -110,6 +95,13 @@
|
|||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label for="MachineIdentifier" class="control-label">Machine Identifier</label>
|
||||
<div class="">
|
||||
<input type="text" class="form-control-custom form-control" id="MachineIdentifier" name="MachineIdentifier" value="@Model.MachineIdentifier">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div class="form-group">
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
@using PlexRequests.UI.Helpers
|
||||
@Html.Partial("_Sidebar")
|
||||
@Html.Partial("Shared/Partial/_Sidebar")
|
||||
|
||||
<div class="col-sm-8 col-sm-push-1">
|
||||
<form class="form-horizontal" method="POST" id="mainForm">
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
@using PlexRequests.UI.Helpers
|
||||
@Html.Partial("_Sidebar")
|
||||
@Html.Partial("Shared/Partial/_Sidebar")
|
||||
|
||||
<div class="col-sm-8 col-sm-push-1">
|
||||
<form class="form-horizontal" method="POST" id="mainForm">
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
@using PlexRequests.UI.Helpers
|
||||
@inherits Nancy.ViewEngines.Razor.NancyRazorViewBase<PlexRequests.UI.Models.ScheduledJobsViewModel>
|
||||
@Html.Partial("_Sidebar")
|
||||
@Html.Partial("Shared/Partial/_Sidebar")
|
||||
|
||||
<div class="col-sm-8 col-sm-push-1">
|
||||
|
||||
|
@ -32,6 +32,16 @@
|
|||
<input type="text" class="form-control form-control-custom " id="PlexAvailabilityChecker" name="PlexAvailabilityChecker" value="@Model.PlexAvailabilityChecker">
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label for="PlexContentCacher" class="control-label">Plex Content Cacher (min)</label>
|
||||
<input type="text" class="form-control form-control-custom " id="PlexContentCacher" name="PlexContentCacher" value="@Model.PlexContentCacher">
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label for="PlexUserChecker" class="control-label">Plex User Checker (hours)</label>
|
||||
<input type="text" class="form-control form-control-custom " id="PlexUserChecker" name="PlexUserChecker" value="@Model.PlexUserChecker">
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label for="CouchPotatoCacher" class="control-label">Couch Potato Cacher (min)</label>
|
||||
<input type="text" class="form-control form-control-custom " id="CouchPotatoCacher" name="CouchPotatoCacher" value="@Model.CouchPotatoCacher">
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
@using PlexRequests.UI.Helpers
|
||||
@inherits Nancy.ViewEngines.Razor.NancyRazorViewBase<PlexRequests.Core.SettingModels.PlexRequestSettings>
|
||||
@Html.Partial("_Sidebar")
|
||||
@Html.Partial("Shared/Partial/_Sidebar")
|
||||
@{
|
||||
int port;
|
||||
if (Model.Port == 0)
|
||||
|
@ -57,11 +57,17 @@
|
|||
<div class="form-group">
|
||||
<label for="ApiKey" class="control-label">Api Key</label>
|
||||
<div class="input-group">
|
||||
<input type="text" disabled="disabled" class="form-control form-control-custom" id="apiKey" name="ApiKey" value="@Model.ApiKey">
|
||||
<input type="text" hidden="hidden" name="ApiKey" value="@Model.ApiKey"/>
|
||||
<input type="text" readonly="readonly" class="form-control form-control-custom" id="ApiKey" name="ApiKey" value="@Model.ApiKey">
|
||||
|
||||
<div class="input-group-addon">
|
||||
<div id="refreshKey" class="fa fa-refresh" title="Reset API Key"></div>
|
||||
</div>
|
||||
|
||||
<div class="input-group-addon">
|
||||
<div class="fa fa-clipboard" data-clipboard-action="copy" data-clipboard-target="#ApiKey"></div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
@ -74,20 +80,9 @@
|
|||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="checkbox">
|
||||
|
||||
@Html.Checkbox(Model.SearchForMovies,"SearchForMovies","Search for Movies")
|
||||
|
||||
@if (Model.SearchForMovies)
|
||||
{
|
||||
<input type="checkbox" id="SearchForMovies" name="SearchForMovies" checked="checked"><label for="SearchForMovies">Search for Movies</label>
|
||||
}
|
||||
else
|
||||
{
|
||||
<input type="checkbox" id="SearchForMovies" name="SearchForMovies"><label for="SearchForMovies">Search for Movies</label>
|
||||
}
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<div class="checkbox">
|
||||
|
@ -117,82 +112,7 @@
|
|||
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="checkbox">
|
||||
|
||||
@if (Model.RequireMovieApproval)
|
||||
{
|
||||
<input type="checkbox" id="RequireMovieApproval" name="RequireMovieApproval" checked="checked"><label for="RequireMovieApproval">Require approval of Movie requests</label>
|
||||
}
|
||||
else
|
||||
{
|
||||
<input type="checkbox" id="RequireMovieApproval" name="RequireMovieApproval"><label for="RequireMovieApproval">Require approval of Movie requests</label>
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="checkbox">
|
||||
|
||||
@if (Model.RequireTvShowApproval)
|
||||
{
|
||||
<input type="checkbox" id="RequireTvShowApproval" name="RequireTvShowApproval" checked="checked"><label for="RequireTvShowApproval">Require approval of TV show requests</label>
|
||||
}
|
||||
else
|
||||
{
|
||||
<input type="checkbox" id="RequireTvShowApproval" name="RequireTvShowApproval"><label for="RequireTvShowApproval">Require approval of TV show requests</label>
|
||||
}
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="checkbox">
|
||||
|
||||
@if (Model.RequireMusicApproval)
|
||||
{
|
||||
<input type="checkbox" id="RequireMusicApproval" name="RequireMusicApproval" checked="checked"><label for="RequireMusicApproval">Require approval of Music requests</label>
|
||||
}
|
||||
else
|
||||
{
|
||||
<input type="checkbox" id="RequireMusicApproval" name="RequireMusicApproval"><label for="RequireMusicApproval">Require approval of Music requests</label>
|
||||
}
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<div class="checkbox">
|
||||
|
||||
@if (Model.UsersCanViewOnlyOwnRequests)
|
||||
{
|
||||
<input type="checkbox" id="UsersCanViewOnlyOwnRequests" name="UsersCanViewOnlyOwnRequests" checked="checked">
|
||||
<label for="UsersCanViewOnlyOwnRequests">Users can view their own requests only</label>
|
||||
}
|
||||
else
|
||||
{
|
||||
<input type="checkbox" id="UsersCanViewOnlyOwnRequests" name="UsersCanViewOnlyOwnRequests"><label for="UsersCanViewOnlyOwnRequests">Users can view their own requests only</label>
|
||||
}
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<div class="checkbox">
|
||||
|
||||
@if (Model.UsersCanViewOnlyOwnIssues)
|
||||
{
|
||||
<input type="checkbox" id="UsersCanViewOnlyOwnIssues" name="UsersCanViewOnlyOwnIssues" checked="checked">
|
||||
<label for="UsersCanViewOnlyOwnIssues">Users can view their own issues only</label>
|
||||
}
|
||||
else
|
||||
{
|
||||
<input type="checkbox" id="UsersCanViewOnlyOwnIssues" name="UsersCanViewOnlyOwnIssues"><label for="UsersCanViewOnlyOwnIssues">Users can view their own issues only</label>
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<div class="checkbox">
|
||||
|
||||
|
@ -278,38 +198,25 @@
|
|||
<input type="text" class="form-control-custom form-control " id="CustomDonationMessage" name="CustomDonationMessage" placeholder="Donation button message" value="@Model.CustomDonationMessage">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<p class="form-group">A comma separated list of users whose requests do not require approval (These users also do not have a request limit).</p>
|
||||
<p class="form-group">If the request limits are set to 0 then no request limit is applied.</p>
|
||||
<div class="form-group">
|
||||
<label for="NoApprovalUsers" class="control-label">Approval White listed Users</label>
|
||||
<label for="MovieWeeklyRequestLimit" class="control-label">Movie Weekly Request Limit</label>
|
||||
<div>
|
||||
<input type="text" class="form-control-custom form-control " id="NoApprovalUsers" name="NoApprovalUsers" placeholder="e.g. John, Bobby" value="@Model.NoApprovalUsers">
|
||||
<label>
|
||||
<input type="number" id="MovieWeeklyRequestLimit" name="MovieWeeklyRequestLimit" class="form-control form-control-custom " value="@Model.MovieWeeklyRequestLimit">
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<p class="form-group">If the request limits are set to 0 then no request limit is applied.</p>
|
||||
<div class="form-group">
|
||||
<label for="MovieWeeklyRequestLimit" class="control-label">Movie Weekly Request Limit</label>
|
||||
<div>
|
||||
<label>
|
||||
<input type="number" id="MovieWeeklyRequestLimit" name="MovieWeeklyRequestLimit" class="form-control form-control-custom " value="@Model.MovieWeeklyRequestLimit">
|
||||
</label>
|
||||
<div class="form-group">
|
||||
<label for="TvWeeklyRequestLimit" class="control-label">TV Show Weekly Request Limit</label>
|
||||
<div>
|
||||
<label>
|
||||
<input type="number" id="TvWeeklyRequestLimit" name="TvWeeklyRequestLimit" class="form-control form-control-custom " value="@Model.TvWeeklyRequestLimit">
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label for="TvWeeklyRequestLimit" class="control-label">TV Show Weekly Request Limit</label>
|
||||
<div>
|
||||
<label>
|
||||
<input type="number" id="TvWeeklyRequestLimit" name="TvWeeklyRequestLimit" class="form-control form-control-custom " value="@Model.TvWeeklyRequestLimit">
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label for="AlbumWeeklyRequestLimit" class="control-label">Album Weekly Request Limit</label>
|
||||
|
@ -320,7 +227,7 @@
|
|||
</div>
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div>
|
||||
|
@ -333,6 +240,11 @@
|
|||
|
||||
<script>
|
||||
$(function () {
|
||||
|
||||
|
||||
new Clipboard('.fa-clipboard');
|
||||
|
||||
|
||||
$('#save').click(function (e) {
|
||||
e.preventDefault();
|
||||
|
||||
|
@ -373,7 +285,7 @@
|
|||
success: function(response) {
|
||||
if (response) {
|
||||
generateNotify("Success!", "success");
|
||||
$('#apiKey').val(response);
|
||||
$('#ApiKey').val(response);
|
||||
}
|
||||
},
|
||||
error: function(e) {
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
@using PlexRequests.UI.Helpers
|
||||
@Html.Partial("_Sidebar")
|
||||
@Html.Partial("Shared/Partial/_Sidebar")
|
||||
@{
|
||||
int port;
|
||||
if (Model.Port == 0)
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
@using PlexRequests.UI.Helpers
|
||||
@Html.Partial("_Sidebar")
|
||||
@Html.Partial("Shared/Partial/_Sidebar")
|
||||
|
||||
<div class="col-sm-8 col-sm-push-1">
|
||||
<form class="form-horizontal" method="POST" id="mainForm">
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
@using PlexRequests.UI.Helpers
|
||||
@Html.Partial("_Sidebar")
|
||||
@Html.Partial("Shared/Partial/_Sidebar")
|
||||
@{
|
||||
int port;
|
||||
if (Model.Port == 0)
|
||||
|
|
|
@ -1,71 +0,0 @@
|
|||
@using PlexRequests.UI.Helpers
|
||||
@Html.Partial("_Sidebar")
|
||||
|
||||
<div class="col-sm-8 col-sm-push-1">
|
||||
<fieldset>
|
||||
<legend>Status</legend>
|
||||
|
||||
|
||||
<div class="form-group">
|
||||
<label class="control-label">Version: </label>
|
||||
<label class="control-label">@Model.Version</label>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label class="control-label">Update Available: </label>
|
||||
@if (Model.UpdateAvailable)
|
||||
{
|
||||
<label class="control-label"><a href="@Model.UpdateUri" target="_blank"><i class="fa fa-check"></i></a></label>
|
||||
<br />
|
||||
@*<button id="autoUpdate" class="btn btn-success-outline">Automatic Update <i class="fa fa-download"></i></button>*@ //TODO
|
||||
}
|
||||
else
|
||||
{
|
||||
<label class="control-label"><i class="fa fa-times"></i></label>
|
||||
}
|
||||
|
||||
</div>
|
||||
|
||||
@if (Model.UpdateAvailable)
|
||||
{
|
||||
<h2>
|
||||
<a href="@Model.DownloadUri">@Model.ReleaseTitle</a>
|
||||
</h2>
|
||||
<hr />
|
||||
<label>Release Notes:</label>
|
||||
@Html.Raw(Model.ReleaseNotes)
|
||||
}
|
||||
|
||||
|
||||
</fieldset>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
|
||||
var base = '@Html.GetBaseUrl()';
|
||||
$('#autoUpdate')
|
||||
.click(function (e) {
|
||||
e.preventDefault();
|
||||
$('body').append("<i class=\"fa fa-spinner fa-spin fa-5x fa-fw\" style=\"position: absolute; top: 20%; left: 50%;\"></i>");
|
||||
$('#autoUpdate').prop("disabled", "disabled");
|
||||
var count = 0;
|
||||
setInterval(function () {
|
||||
count++;
|
||||
var dots = new Array(count % 10).join('.');
|
||||
document.getElementById('autoUpdate').innerHTML = "Updating" + dots;
|
||||
}, 1000);
|
||||
|
||||
$.ajax({
|
||||
type: "Post",
|
||||
url: "autoupdate",
|
||||
data: { url: "@Model.DownloadUri" },
|
||||
dataType: "json",
|
||||
error: function () {
|
||||
setTimeout(
|
||||
function () {
|
||||
location.reload();
|
||||
}, 30000);
|
||||
}
|
||||
});
|
||||
});
|
||||
</script>
|
109
PlexRequests.UI/Views/FaultQueue/RequestFaultQueue.cshtml
Normal file
109
PlexRequests.UI/Views/FaultQueue/RequestFaultQueue.cshtml
Normal file
|
@ -0,0 +1,109 @@
|
|||
@using PlexRequests.UI.Helpers
|
||||
@inherits Nancy.ViewEngines.Razor.NancyRazorViewBase<IEnumerable<PlexRequests.UI.Models.FaultedRequestsViewModel>>
|
||||
@Html.Partial("Shared/Partial/_Sidebar")
|
||||
<div class="col-sm-8 col-sm-push-1">
|
||||
<fieldset>
|
||||
<legend>Release Fault Queue</legend>
|
||||
|
||||
<table class="table table-striped table-hover table-responsive table-condensed">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>
|
||||
Request Title
|
||||
</th>
|
||||
<th>
|
||||
Type
|
||||
</th>
|
||||
<th>
|
||||
Fault Type
|
||||
</th>
|
||||
<th>
|
||||
LastRetry
|
||||
</th>
|
||||
<th>
|
||||
Error Description
|
||||
</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
|
||||
@foreach (var m in Model)
|
||||
{
|
||||
<tr>
|
||||
<td>
|
||||
@m.Title
|
||||
</td>
|
||||
<td>
|
||||
@m.Type
|
||||
</td>
|
||||
<td>
|
||||
@m.FaultType
|
||||
</td>
|
||||
<td>
|
||||
@m.LastRetry
|
||||
</td>
|
||||
<td>
|
||||
@m.Message
|
||||
</td>
|
||||
</tr>
|
||||
}
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
</fieldset>
|
||||
</div>
|
||||
|
||||
@*<script>
|
||||
|
||||
var base = '@Html.GetBaseUrl()';
|
||||
$('#autoUpdate')
|
||||
.click(function (e) {
|
||||
e.preventDefault();
|
||||
$('body').append("<i class=\"fa fa-spinner fa-spin fa-5x fa-fw\" style=\"position: absolute; top: 20%; left: 50%;\"></i>");
|
||||
$('#autoUpdate').prop("disabled", "disabled");
|
||||
document.getElementById("lightbox").style.display = "";
|
||||
var count = 0;
|
||||
setInterval(function () {
|
||||
count++;
|
||||
var dots = new Array(count % 10).join('.');
|
||||
document.getElementById('autoUpdate').innerHTML = "Updating" + dots;
|
||||
}, 1000);
|
||||
|
||||
$.ajax({
|
||||
type: "Post",
|
||||
url: "autoupdate",
|
||||
data: { url: "@Model.Status.DownloadUri" },
|
||||
dataType: "json",
|
||||
error: function () {
|
||||
setTimeout(
|
||||
function () {
|
||||
location.reload();
|
||||
}, 30000);
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
$('#saveSettings').click(function (e) {
|
||||
e.preventDefault();
|
||||
var $form = $("#mainForm");
|
||||
|
||||
var branches = $("#branches option:selected").val();
|
||||
|
||||
var data = $form.serialize();
|
||||
data = data + "&branch=" + branches;
|
||||
$.ajax({
|
||||
type: $form.prop("method"),
|
||||
url: $form.prop("action"),
|
||||
data: data,
|
||||
dataType: "json",
|
||||
success: function (response) {
|
||||
if (response.result === true) {
|
||||
generateNotify(response.message, "success");
|
||||
|
||||
} else {
|
||||
generateNotify(response.message, "warning");
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
</script>*@
|
|
@ -1,6 +1,7 @@
|
|||
@using System.Linq
|
||||
@using PlexRequests.Core.Models
|
||||
@using PlexRequests.Helpers
|
||||
@using PlexRequests.Helpers.Permissions
|
||||
@using PlexRequests.UI.Helpers
|
||||
@{
|
||||
var baseUrl = Html.GetBaseUrl();
|
||||
|
@ -10,16 +11,8 @@
|
|||
formAction = "/" + baseUrl.ToHtmlString();
|
||||
}
|
||||
|
||||
var isAdmin = false;
|
||||
var isAdmin = Html.HasAnyPermission(true, Permissions.Administrator, Permissions.ManageRequests);
|
||||
|
||||
if (Context.CurrentUser != null)
|
||||
{
|
||||
var claims = Context.CurrentUser.Claims.ToList();
|
||||
if (claims.Contains("Admin") || claims.Contains("PowerUser"))
|
||||
{
|
||||
isAdmin = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
<h1>Details</h1>
|
||||
|
||||
|
|
|
@ -1,19 +1,22 @@
|
|||
@using Nancy.Security
|
||||
@using Nancy.Security
|
||||
@using PlexRequests.Helpers.Permissions
|
||||
@using PlexRequests.UI.Helpers
|
||||
@using PlexRequests.UI.Resources
|
||||
@{
|
||||
var baseUrl = Html.GetBaseUrl();
|
||||
var formAction = string.Empty;
|
||||
var isAdmin = Html.HasAnyPermission(true, Permissions.Administrator, Permissions.ManageRequests);
|
||||
if (!string.IsNullOrEmpty(baseUrl.ToHtmlString()))
|
||||
{
|
||||
formAction = "/" + baseUrl.ToHtmlString();
|
||||
}
|
||||
}
|
||||
<div>
|
||||
<div hidden="hidden" id="isAdmin" value="@isAdmin"></div>
|
||||
<h1>@UI.Requests_Title</h1>
|
||||
<h4>@UI.Requests_Paragraph</h4>
|
||||
<br />
|
||||
<br/>
|
||||
|
||||
<!-- Nav tabs -->
|
||||
<ul id="nav-tabs" class="nav nav-tabs" role="tablist">
|
||||
|
@ -30,7 +33,7 @@
|
|||
<li role="presentation"><a href="#MusicTab" aria-controls="profile" role="tab" data-toggle="tab"><i class="fa fa-music"></i> @UI.Requests_AlbumsTabTitle</a></li>
|
||||
}
|
||||
</ul>
|
||||
<br />
|
||||
<br/>
|
||||
|
||||
<!-- Tab panes -->
|
||||
<div class="tab-content contentList">
|
||||
|
@ -38,38 +41,59 @@
|
|||
<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 (isAdmin)
|
||||
{
|
||||
@if (Model.SearchForMovies)
|
||||
{
|
||||
<button id="deleteMovies" class="btn btn-warning-outline delete-category" type="submit"><i class="fa fa-trash"></i> @UI.Requests_DeleteMovies</button>
|
||||
<button id="approveMovies" class="btn btn-success-outline approve-category" type="submit"><i class="fa fa-plus"></i> @UI.Requests_ApproveMovies</button>
|
||||
}
|
||||
{
|
||||
<button id="deleteMovies" class="btn btn-warning-outline delete-category" type="submit"><i class="fa fa-trash"></i> @UI.Requests_DeleteMovies</button>
|
||||
<button id="approveMovies" class="btn btn-success-outline approve-category" type="submit"><i class="fa fa-plus"></i> @UI.Requests_ApproveMovies</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> @UI.Requests_DeleteTVShows</button>
|
||||
<button id="approveTVShows" class="btn btn-success-outline approve-category" type="submit" style="display: none;"><i class="fa fa-plus"></i> @UI.Requests_ApproveTvShows</button>
|
||||
}
|
||||
{
|
||||
<button id="deleteTVShows" class="btn btn-warning-outline delete-category" type="submit" style="display: none;"><i class="fa fa-trash"></i> @UI.Requests_DeleteTVShows</button>
|
||||
<button id="approveTVShows" class="btn btn-success-outline approve-category" type="submit" style="display: none;"><i class="fa fa-plus"></i> @UI.Requests_ApproveTvShows</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> @UI.Requests_DeleteMusic</button>
|
||||
<button id="approveMusic" class="btn btn-success-outline approve-category" type="submit" style="display: none;"><i class="fa fa-plus"></i> @UI.Requests_ApproveMusic</button>
|
||||
}
|
||||
{
|
||||
<button id="deleteMusic" class="btn btn-warning-outline delete-category" type="submit" style="display: none;"><i class="fa fa-trash"></i> @UI.Requests_DeleteMusic</button>
|
||||
<button id="approveMusic" class="btn btn-success-outline approve-category" type="submit" style="display: none;"><i class="fa fa-plus"></i> @UI.Requests_ApproveMusic</button>
|
||||
}
|
||||
}
|
||||
</div>
|
||||
<div class="btn-group">
|
||||
<a href="#" class="btn btn-primary-outline dropdown-toggle" data-toggle="dropdown" aria-expanded="false">
|
||||
@UI.Requests_Filter
|
||||
@if (isAdmin)
|
||||
{
|
||||
<span id="filterText">@UI.Requests_Filter_NotApproved</span>
|
||||
}
|
||||
else
|
||||
{
|
||||
<span id="filterText">@UI.Requests_Filter_All</span>
|
||||
}
|
||||
<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> @UI.Requests_Filter_All</a></li>
|
||||
<li><a href="#" class="filter" data-filter=".approved-true"><i class="fa fa-square-o"></i> @UI.Requests_Filter_Approved</a></li>
|
||||
<li><a href="#" class="filter" data-filter=".approved-false"><i class="fa fa-square-o"></i> @UI.Requests_Filter_NotApproved</a></li>
|
||||
<li><a href="#" class="filter" data-filter=".available-true"><i class="fa fa-square-o"></i> @UI.Requests_Filter_Available</a></li>
|
||||
@if (!isAdmin)
|
||||
{
|
||||
<li><a href="#" class="filter" data-filter="all"><i class="fa fa-check-square"></i> @UI.Requests_Filter_All</a></li>
|
||||
}
|
||||
else
|
||||
{
|
||||
<li><a href="#" class="filter" data-filter="all"><i class="fa fa-square-o"></i> @UI.Requests_Filter_All</a></li>
|
||||
}
|
||||
<li><a href="#" class="filter" data-filter=".approved-true"><i class="fa fa-square-o"></i> @UI.Requests_Filter_Approved</a></li>
|
||||
@if (isAdmin)
|
||||
{
|
||||
<li><a href="#" class="filter" data-filter=".approved-false"><i class="fa fa-check-square"></i> @UI.Requests_Filter_NotApproved</a></li>
|
||||
}
|
||||
else
|
||||
{
|
||||
<li><a href="#" class="filter" data-filter=".approved-false"><i class="fa fa-square-o"></i> @UI.Requests_Filter_NotApproved</a></li>
|
||||
}
|
||||
<li><a href="#" class="filter" data-filter=".available-true"><i class="fa fa-square-o"></i> @UI.Requests_Filter_Available</a></li>
|
||||
<li><a href="#" class="filter" data-filter=".available-false"><i class="fa fa-square-o"></i> @UI.Requests_Filter_NotAvailable</a></li>
|
||||
<li><a href="#" class="filter" data-filter=".released-true"><i class="fa fa-square-o"></i> @UI.Requests_Filter_Released</a></li>
|
||||
<li><a href="#" class="filter" data-filter=".released-false"><i class="fa fa-square-o"></i> @UI.Requests_Filter_NotReleased</a></li>
|
||||
<li><a href="#" class="filter" data-filter=".released-true"><i class="fa fa-square-o"></i> @UI.Requests_Filter_Released</a></li>
|
||||
<li><a href="#" class="filter" data-filter=".released-false"><i class="fa fa-square-o"></i> @UI.Requests_Filter_NotReleased</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="btn-group">
|
||||
|
@ -78,23 +102,23 @@
|
|||
<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> @UI.Requests_Order_LatestRequests</a></li>
|
||||
<li><a href="#" class="sort" data-sort="requestorder:asc"><i class="fa fa-square-o"></i> @UI.Requests_Order_OldestRequests</a></li>
|
||||
<li><a href="#" class="sort" data-sort="releaseorder:desc"><i class="fa fa-square-o"></i> @UI.Requests_Order_LatestReleases</a></li>
|
||||
<li><a href="#" class="sort" data-sort="releaseorder:asc"><i class="fa fa-square-o"></i> @UI.Requests_Order_OldestReleases</a></li>
|
||||
<li><a href="#" class="sort" data-sort="requestorder:desc"><i class="fa fa-check-square"></i> @UI.Requests_Order_LatestRequests</a></li>
|
||||
<li><a href="#" class="sort" data-sort="requestorder:asc"><i class="fa fa-square-o"></i> @UI.Requests_Order_OldestRequests</a></li>
|
||||
<li><a href="#" class="sort" data-sort="releaseorder:desc"><i class="fa fa-square-o"></i> @UI.Requests_Order_LatestReleases</a></li>
|
||||
<li><a href="#" class="sort" data-sort="releaseorder:asc"><i class="fa fa-square-o"></i> @UI.Requests_Order_OldestReleases</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@if (Model.SearchForMovies)
|
||||
{
|
||||
{
|
||||
|
||||
<!-- Movie tab -->
|
||||
<div role="tabpanel" class="tab-pane active" id="MoviesTab">
|
||||
|
||||
<br />
|
||||
<br />
|
||||
<br/>
|
||||
<br/>
|
||||
<!-- Movie content -->
|
||||
<div id="movieList">
|
||||
</div>
|
||||
|
@ -102,12 +126,12 @@
|
|||
}
|
||||
|
||||
@if (Model.SearchForTvShows)
|
||||
{
|
||||
{
|
||||
<!-- TV tab -->
|
||||
<div role="tabpanel" class="tab-pane" id="TvShowTab">
|
||||
|
||||
<br />
|
||||
<br />
|
||||
<br/>
|
||||
<br/>
|
||||
<!-- TV content -->
|
||||
<div id="tvList">
|
||||
</div>
|
||||
|
@ -115,12 +139,12 @@
|
|||
}
|
||||
|
||||
@if (Model.SearchForMusic)
|
||||
{
|
||||
{
|
||||
<!-- Music tab -->
|
||||
<div role="tabpanel" class="tab-pane" id="MusicTab">
|
||||
|
||||
<br />
|
||||
<br />
|
||||
<br/>
|
||||
<br/>
|
||||
<!-- TV content -->
|
||||
<div id="musicList">
|
||||
</div>
|
||||
|
@ -168,38 +192,20 @@
|
|||
<a href="http://www.imdb.com/title/{{imdb}}/" target="_blank">
|
||||
<h4 class="request-title">{{title}} ({{year}})</h4>
|
||||
</a>
|
||||
<div>
|
||||
{{#if_eq type "tv"}}
|
||||
<span>@UI.Search_TV_Show_Status: </span>
|
||||
{{else}}
|
||||
<span>@UI.Search_Movie_Status: </span>
|
||||
{{/if_eq}}
|
||||
<span class="label label-success">{{status}}</span>
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<span>Request status: </span>
|
||||
{{#if available}}
|
||||
<span class="label label-success">@UI.Search_Available_on_plex</span>
|
||||
{{else}}
|
||||
{{#if approved}}
|
||||
<span class="label label-info">@UI.Search_Processing_Request</span>
|
||||
{{else if denied}}
|
||||
<span class="label label-danger">@UI.Search_Request_denied</span>
|
||||
{{#if deniedReason}}
|
||||
<span class="customTooltip" title="{{deniedReason}}"><i class="fa fa-info-circle"></i></span>
|
||||
{{/if}}
|
||||
{{else}}
|
||||
<span class="label label-warning">@UI.Search_Pending_approval</span>
|
||||
{{/if}}
|
||||
{{/if}}
|
||||
</div>
|
||||
</div>
|
||||
<br />
|
||||
{{#if_eq type "tv"}}
|
||||
<span>@UI.Search_TV_Show_Status: </span>
|
||||
{{else}}
|
||||
<span>@UI.Search_Movie_Status: </span>
|
||||
{{/if_eq}}
|
||||
<span class="label label-success">{{status}}</span>
|
||||
{{#if denied}}
|
||||
<div>
|
||||
Denied: <i style="color:red;" class="fa fa-check"></i>
|
||||
|
||||
{{#if deniedReason}}
|
||||
<span class="customTooltip" title="{{deniedReason}}"><i class="fa fa-info-circle"></i></span>
|
||||
{{/if}}
|
||||
</div>
|
||||
|
||||
{{/if}}
|
||||
|
@ -208,7 +214,26 @@
|
|||
{{else}}
|
||||
<div>@UI.Requests_ReleaseDate: {{releaseDate}}</div>
|
||||
{{/if_eq}}
|
||||
<br />
|
||||
{{#unless denied}}
|
||||
<div>
|
||||
@UI.Common_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>
|
||||
{{/unless}}
|
||||
<div>
|
||||
@UI.Requests_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"}}
|
||||
{{#if episodes}}
|
||||
|
|
|
@ -111,33 +111,6 @@
|
|||
</div>
|
||||
}
|
||||
|
||||
<!-- Notification tab -->
|
||||
<div role="tabpanel" class="tab-pane" id="NotificationsTab">
|
||||
<div class="input-group">
|
||||
<div class="input-group-addon input-group-sm"></div>
|
||||
</div>
|
||||
<br />
|
||||
|
||||
<!-- Notifications content -->
|
||||
<form class="form-horizontal" method="POST" id="notificationsForm">
|
||||
<fieldset>
|
||||
<div class="form-group">
|
||||
<div class="checkbox">
|
||||
<input type="checkbox" id="notifyUser" name="Notify">
|
||||
<label for="notifyUser">@UI.Search_SendNotificationText</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div>
|
||||
<button id="saveNotificationSettings" class="btn btn-primary-outline">@UI.Common_Save</button>
|
||||
</div>
|
||||
</div>
|
||||
</fieldset>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Movie and TV Results template -->
|
||||
<script id="search-template" type="text/x-handlebars-template">
|
||||
<div class="row">
|
||||
|
|
|
@ -22,6 +22,8 @@
|
|||
<meta charset="utf-8">
|
||||
<!-- Styles -->
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
@Html.LoadFavIcon()
|
||||
|
||||
@Html.LoadAnalytics()
|
||||
@Html.LoadAssets()
|
||||
</head>
|
|
@ -10,7 +10,7 @@
|
|||
$(function () {
|
||||
|
||||
// Check for update
|
||||
var url = createBaseUrl(urlBase, '/updatechecker');
|
||||
var url = createBaseUrl(urlBase, '/layout');
|
||||
$.ajax({
|
||||
type: "GET",
|
||||
url: url,
|
||||
|
@ -20,7 +20,7 @@
|
|||
var status = createBaseUrl(urlBase, '/admin/status');
|
||||
$('#updateAvailable').html("<i class='fa fa-cloud-download' aria-hidden='true'></i> @UI.Layout_UpdateAvailablePart1 <a style='color: white' href='" + status + "'>@UI.Layout_UpdateAvailablePart2</a>");
|
||||
$('#updateAvailable').removeAttr("hidden");
|
||||
$('body').addClass('update-available');
|
||||
//$('body').addClass('update-available');
|
||||
}
|
||||
},
|
||||
error: function (e) {
|
||||
|
@ -29,6 +29,7 @@
|
|||
});
|
||||
// End Check for update
|
||||
|
||||
checkCacheInProgress();
|
||||
|
||||
// Scroller
|
||||
$(document).on('scroll', function () {
|
||||
|
@ -43,9 +44,6 @@
|
|||
$('.scroll-top-wrapper').on('click', scrollToTop);
|
||||
// End Scroller
|
||||
|
||||
|
||||
|
||||
|
||||
// Get Issue count
|
||||
var issueUrl = createBaseUrl(urlBase, '/issues/issuecount');
|
||||
$.ajax({
|
||||
|
@ -66,6 +64,8 @@
|
|||
// End issue count
|
||||
|
||||
|
||||
|
||||
|
||||
$('#donate').click(function () {
|
||||
ga('send', 'event', 'Navbar', 'Donate', 'Donate Clicked');
|
||||
});
|
||||
|
@ -80,4 +80,23 @@
|
|||
offsetTop = offset.top;
|
||||
$('html, body').animate({ scrollTop: offsetTop }, 500, 'linear');
|
||||
}
|
||||
|
||||
function checkCacheInProgress() {
|
||||
|
||||
var url = createBaseUrl(urlBase, '/layout/cacher');
|
||||
$.ajax({
|
||||
type: "GET",
|
||||
url: url,
|
||||
dataType: "json",
|
||||
success: function (response) {
|
||||
if (response.currentlyRunning) {
|
||||
$('#cacherRunning').html("@UI.Layout_CacherRunning");
|
||||
$('#cacherRunning').removeAttr("hidden");
|
||||
}
|
||||
},
|
||||
error: function (e) {
|
||||
console.log(e);
|
||||
}
|
||||
});
|
||||
}
|
||||
</script>
|
|
@ -2,6 +2,7 @@
|
|||
@using Nancy.Session
|
||||
@using Nancy;
|
||||
@using PlexRequests.Core.SettingModels
|
||||
@using PlexRequests.Helpers
|
||||
@using PlexRequests.UI.Helpers
|
||||
@using PlexRequests.UI.Models
|
||||
@using PlexRequests.UI.Resources
|
||||
|
@ -35,23 +36,27 @@
|
|||
@Html.GetNavbarUrl(Context, "/search", UI.Layout_Search, "search")
|
||||
@Html.GetNavbarUrl(Context, "/requests", UI.Layout_Requests, "plus-circle")
|
||||
@Html.GetNavbarUrl(Context, "/issues", UI.Layout_Issues, "exclamation", "<span id=\"issueCount\"></span>")
|
||||
@if (Context.CurrentUser.IsAuthenticated()) // TODO replace with IsAdmin
|
||||
@if (Html.IsAdmin())
|
||||
{
|
||||
@Html.GetNavbarUrl(Context, "/usermanagement", UI.Layout_Usermanagement, "users")
|
||||
}
|
||||
@*@if (Context.CurrentUser.IsAuthenticated()) // TODO replace with IsAdmin*@
|
||||
@if (Html.IsAdmin())
|
||||
{
|
||||
<li><a id="donate" href="https://www.paypal.me/PlexRequestsNet" target="_blank"><i class="fa fa-heart" style="color: red"></i> @UI.Layout_Donate</a></li>
|
||||
}
|
||||
<li id="customDonate" style="display: none"><a id="customDonateHref" href="https://www.paypal.me/PlexRequestsNet" target="_blank"><i class="fa fa-heart" style="color: yellow;"></i> <span id="donationText">@UI.Custom_Donation_Default</span></a></li>
|
||||
</ul>
|
||||
<ul class="nav navbar-nav navbar-right">
|
||||
|
||||
|
||||
@if (!Context.CurrentUser.IsAuthenticated() && Context.Request.Session[SessionKeys.UsernameKey] == null) // TODO replace with IsAdmin
|
||||
@*@if (!Context.CurrentUser.IsAuthenticated() && Context.Request.Session[SessionKeys.UsernameKey] == null) // TODO replace with IsAdmin*@
|
||||
@if (!Html.IsLoggedIn(Context))
|
||||
{
|
||||
|
||||
<li><a href="@url/login?redirect=@Context.Request.Path"><i class="fa fa-user"></i> @UI.Layout_Admin</a></li>
|
||||
}
|
||||
@if (Context.CurrentUser.IsAuthenticated()) // TODO replace with IsAdmin
|
||||
@*@if (Context.CurrentUser.IsAuthenticated()) // TODO replace with IsAdmin*@
|
||||
@if (Html.IsAdmin())
|
||||
{
|
||||
<li><a>@UI.Layout_Welcome @Context.Request.Session[SessionKeys.UsernameKey]</a></li>
|
||||
<li><a>@UI.Layout_Welcome @Context.CurrentUser.UserName</a></li>
|
||||
<li class="dropdown">
|
||||
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false"><i class="fa fa-user"></i> @UI.Layout_Admin <span class="caret"></span></a>
|
||||
<ul class="dropdown-menu" role="menu">
|
||||
|
@ -63,33 +68,44 @@
|
|||
</ul>
|
||||
</li>
|
||||
}
|
||||
@if (Context.Request.Session[SessionKeys.UsernameKey] != null && !Context.CurrentUser.IsAuthenticated())
|
||||
@*@if (Context.Request.Session[SessionKeys.UsernameKey] != null && !Context.CurrentUser.IsAuthenticated())*@
|
||||
else if (Html.IsNormalUser()) // Logged in but not admin
|
||||
{
|
||||
<li class="dropdown">
|
||||
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false"><i class="fa fa-user"></i> @UI.Layout_Welcome @Context.Request.Session[SessionKeys.UsernameKey] <span class="caret"></span></a>
|
||||
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false"><i class="fa fa-user"></i> @UI.Layout_Welcome @Context.CurrentUser.UserName <span class="caret"></span></a>
|
||||
<ul class="dropdown-menu" role="menu">
|
||||
<li><a href="@url/login?redirect=@Context.Request.Path"><i class="fa fa-user"></i> @UI.Layout_Admin</a></li>
|
||||
<li class="divider"></li>
|
||||
<li><a href="@url/userlogin/logout"><i class="fa fa-sign-out"></i> @UI.Layout_Logout</a></li>
|
||||
<li><a href="@url/changepassword"><i class="fa fa-key"></i> @UI.Layout_ChangePassword</a></li>
|
||||
<li><a href="@url/logout"><i class="fa fa-sign-out"></i> @UI.Layout_Logout</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
|
||||
}
|
||||
else if (Html.IsPlexUser()) // Logged in but not admin
|
||||
{
|
||||
<li class="dropdown">
|
||||
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false"><i class="fa fa-user"></i> @UI.Layout_Welcome @Context.CurrentUser.UserName <span class="caret"></span></a>
|
||||
<ul class="dropdown-menu" role="menu">
|
||||
<li><a href="@url/logout"><i class="fa fa-sign-out"></i> @UI.Layout_Logout</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
|
||||
}
|
||||
|
||||
<li class="dropdown">
|
||||
|
||||
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false"><i class="fa fa-language" aria-hidden="true"><span class="caret"></span></i></a>
|
||||
<ul class="dropdown-menu" role="menu">
|
||||
<li><a href="@url/culture?l=en&u=@Context.Request.Path">@UI.Layout_English</a></li>
|
||||
<li><a href="@url/culture?l=fr&u=@Context.Request.Path">@UI.Layout_French</a></li>
|
||||
<li><a href="@url/culture?l=nl&u=@Context.Request.Path">@UI.Layout_Dutch</a></li>
|
||||
<li><a href="@url/culture?l=es&u=@Context.Request.Path">@UI.Layout_Spanish</a></li>
|
||||
<li><a href="@url/culture?l=de&u=@Context.Request.Path">@UI.Layout_German</a></li>
|
||||
<li><a href="@url/culture?l=da&u=@Context.Request.Path">@UI.Layout_Danish</a></li>
|
||||
<li><a href="@url/culture?l=pt&u=@Context.Request.Path">@UI.Layout_Portuguese</a></li>
|
||||
<li><a href="@url/culture?l=sv&u=@Context.Request.Path">@UI.Layout_Swedish</a></li>
|
||||
<li><a href="@url/culture?l=it&u=@Context.Request.Path">@UI.Layout_Italian</a></li>
|
||||
</ul>
|
||||
<li/>
|
||||
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false"><i class="fa fa-language" aria-hidden="true"><span class="caret"></span></i></a>
|
||||
<ul class="dropdown-menu" role="menu">
|
||||
<li><a href="@url/culture?l=en&u=@Context.Request.Path">@UI.Layout_English</a></li>
|
||||
<li><a href="@url/culture?l=fr&u=@Context.Request.Path">@UI.Layout_French</a></li>
|
||||
<li><a href="@url/culture?l=nl&u=@Context.Request.Path">@UI.Layout_Dutch</a></li>
|
||||
<li><a href="@url/culture?l=es&u=@Context.Request.Path">@UI.Layout_Spanish</a></li>
|
||||
<li><a href="@url/culture?l=de&u=@Context.Request.Path">@UI.Layout_German</a></li>
|
||||
<li><a href="@url/culture?l=da&u=@Context.Request.Path">@UI.Layout_Danish</a></li>
|
||||
<li><a href="@url/culture?l=pt&u=@Context.Request.Path">@UI.Layout_Portuguese</a></li>
|
||||
<li><a href="@url/culture?l=sv&u=@Context.Request.Path">@UI.Layout_Swedish</a></li>
|
||||
<li><a href="@url/culture?l=it&u=@Context.Request.Path">@UI.Layout_Italian</a></li>
|
||||
</ul>
|
||||
<li />
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -104,16 +120,18 @@
|
|||
var donateLink = $("#customDonateHref");
|
||||
var donationText = $("#donationText");
|
||||
donateLink.attr("href", result.url);
|
||||
if(result.message) {
|
||||
donationText.text(result.message);
|
||||
if (result.message) {
|
||||
donationText.text(result.message);
|
||||
}
|
||||
}
|
||||
},
|
||||
error: function(xhr, status, error) {
|
||||
error: function (xhr, status, error) {
|
||||
console.log("error " + error);
|
||||
$("#customDonate").hide();
|
||||
}
|
||||
});
|
||||
</script>
|
||||
<div id="updateAvailable" hidden="hidden"></div>
|
||||
|
||||
<div id="cacherRunning" hidden="hidden"></div>
|
||||
</nav>
|
||||
|
|
|
@ -5,6 +5,7 @@
|
|||
@Html.GetSidebarUrl(Context, "/admin", "Plex Request")
|
||||
@Html.GetSidebarUrl(Context, "/admin/landingpage", "Landing Page")
|
||||
@Html.GetSidebarUrl(Context, "/admin/authentication", "Authentication")
|
||||
@Html.GetSidebarUrl(Context, "/admin/usermanagementsettings", "User Management Settings")
|
||||
@Html.GetSidebarUrl(Context, "/admin/plex", "Plex")
|
||||
@Html.GetSidebarUrl(Context, "/admin/couchpotato", "CouchPotato")
|
||||
@Html.GetSidebarUrl(Context, "/admin/sonarr", "Sonarr")
|
||||
|
@ -18,5 +19,6 @@
|
|||
@Html.GetSidebarUrl(Context, "/admin/logs", "Logs")
|
||||
@Html.GetSidebarUrl(Context, "/admin/status", "Status")
|
||||
@Html.GetSidebarUrl(Context, "/admin/scheduledjobs", "Scheduled Jobs")
|
||||
@Html.GetSidebarUrl(Context, "/admin/faultqueue", "Request Fault Queue")
|
||||
</div>
|
||||
</div>
|
|
@ -16,8 +16,6 @@
|
|||
<i class="fa fa-2x fa-arrow-circle-up"></i>
|
||||
</span>
|
||||
</div>
|
||||
|
||||
@*@MiniProfiler.RenderIncludes()*@
|
||||
</body>
|
||||
|
||||
@Html.GetInformationalVersion()
|
||||
|
|
129
PlexRequests.UI/Views/SystemStatus/Status.cshtml
Normal file
129
PlexRequests.UI/Views/SystemStatus/Status.cshtml
Normal file
|
@ -0,0 +1,129 @@
|
|||
@using PlexRequests.UI.Helpers
|
||||
@inherits Nancy.ViewEngines.Razor.NancyRazorViewBase<PlexRequests.Core.SettingModels.SystemSettings>
|
||||
@Html.Partial("Shared/Partial/_Sidebar")
|
||||
<div id="lightbox" style="display:none"></div>
|
||||
<div class="col-sm-8 col-sm-push-1">
|
||||
<fieldset>
|
||||
<legend>Status</legend>
|
||||
|
||||
|
||||
<div class="form-group">
|
||||
<label class="control-label">Current Version: </label>
|
||||
<label class="control-label">@Model.Status.CurrentVersion</label>
|
||||
</div>
|
||||
|
||||
@if (Model.Status.UpdateAvailable)
|
||||
{
|
||||
<div class="form-group">
|
||||
<label class="control-label">New Version: </label>
|
||||
<label class="control-label">@Model.Status.NewVersion</label>
|
||||
</div>
|
||||
}
|
||||
|
||||
<form id="mainForm" method="post" action="save">
|
||||
|
||||
<div class="form-group">
|
||||
<label for="select" class="control-label">Code Branch</label>
|
||||
<div id="branches">
|
||||
<select class="form-control form-control-custom" id="select">
|
||||
@foreach (var b in Model.BranchDropdown)
|
||||
{
|
||||
if (b.Selected)
|
||||
{
|
||||
<option selected='selected' value='@b.Value'>@b.Name</option>
|
||||
}
|
||||
else
|
||||
{
|
||||
<option value='@b.Value'>@b.Name</option>
|
||||
}
|
||||
}
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<button id="saveSettings" class="btn btn-success-outline">Save</button>
|
||||
</form>
|
||||
|
||||
|
||||
<div class="form-group">
|
||||
<label class="control-label">Update Available: </label>
|
||||
@if (Model.Status.UpdateAvailable)
|
||||
{
|
||||
<label class="control-label"><a href="@Model.Status.UpdateUri" target="_blank"><i class="fa fa-check"></i></a></label>
|
||||
<br />
|
||||
<button id="autoUpdate" class="btn btn-success-outline">Automatic Update (beta) <i class="fa fa-download"></i></button>
|
||||
}
|
||||
else
|
||||
{
|
||||
<label class="control-label"><i class="fa fa-times"></i></label>
|
||||
}
|
||||
|
||||
</div>
|
||||
|
||||
@if (Model.Status.UpdateAvailable)
|
||||
{
|
||||
<h2>
|
||||
<a href="@Model.Status.DownloadUri">@Model.Status.ReleaseTitle</a>
|
||||
</h2>
|
||||
<hr />
|
||||
<label>Release Notes:</label>
|
||||
@Html.Raw(Model.Status.ReleaseNotes)
|
||||
}
|
||||
|
||||
|
||||
</fieldset>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
|
||||
var base = '@Html.GetBaseUrl()';
|
||||
$('#autoUpdate')
|
||||
.click(function (e) {
|
||||
e.preventDefault();
|
||||
$('body').append("<i class=\"fa fa-spinner fa-spin fa-5x fa-fw\" style=\"position: absolute; top: 20%; left: 50%;\"></i>");
|
||||
$('#autoUpdate').prop("disabled", "disabled");
|
||||
document.getElementById("lightbox").style.display = "";
|
||||
var count = 0;
|
||||
setInterval(function () {
|
||||
count++;
|
||||
var dots = new Array(count % 10).join('.');
|
||||
document.getElementById('autoUpdate').innerHTML = "Updating" + dots;
|
||||
}, 1000);
|
||||
|
||||
$.ajax({
|
||||
type: "Post",
|
||||
url: "autoupdate",
|
||||
data: { url: "@Model.Status.DownloadUri" },
|
||||
dataType: "json",
|
||||
error: function () {
|
||||
setTimeout(
|
||||
function () {
|
||||
location.reload();
|
||||
}, 30000);
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
$('#saveSettings').click(function (e) {
|
||||
e.preventDefault();
|
||||
var $form = $("#mainForm");
|
||||
|
||||
var branches = $("#branches option:selected").val();
|
||||
|
||||
var data = $form.serialize();
|
||||
data = data + "&branch=" + branches;
|
||||
$.ajax({
|
||||
type: $form.prop("method"),
|
||||
url: $form.prop("action"),
|
||||
data: data,
|
||||
dataType: "json",
|
||||
success: function (response) {
|
||||
if (response.result === true) {
|
||||
generateNotify(response.message, "success");
|
||||
|
||||
} else {
|
||||
generateNotify(response.message, "warning");
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
</script>
|
|
@ -53,38 +53,9 @@
|
|||
{
|
||||
<text>
|
||||
|
||||
generateNotify('@nullableError',"warning");
|
||||
generateNotify('@nullableError', "warning");
|
||||
|
||||
</text>
|
||||
}
|
||||
|
||||
@*$('#loginBtn').click(function (e) {
|
||||
e.preventDefault();
|
||||
var $form = $("#loginForm");
|
||||
var formData = $form.serialize();
|
||||
var dtOffset = new Date().getTimezoneOffset();
|
||||
formData += ('&DateTimeOffset=' + dtOffset);
|
||||
|
||||
$.ajax({
|
||||
type: $form.prop("method"),
|
||||
url: $form.prop("action"),
|
||||
data: formData,
|
||||
dataType: "json",
|
||||
success: function (response) {
|
||||
console.log(response);
|
||||
if (response.result === true) {
|
||||
location.replace(response.message);
|
||||
|
||||
} else {
|
||||
generateNotify(response.message, "warning");
|
||||
}
|
||||
},
|
||||
error: function (e) {
|
||||
console.log(e);
|
||||
generateNotify("@UI.Javascript_SomethingWentWrong", "danger");
|
||||
}
|
||||
});
|
||||
});*@
|
||||
|
||||
});
|
||||
</script>
|
|
@ -1,55 +1,13 @@
|
|||
@using PlexRequests.UI.Helpers
|
||||
@inherits PlexRequests.UI.Helpers.AngularViewBase
|
||||
|
||||
@inherits PlexRequests.UI.Helpers.AngularViewBase
|
||||
@using PlexRequests.UI.Helpers
|
||||
@Html.LoadUserManagementAssets()
|
||||
|
||||
|
||||
<div id="wrapper" class="toggled" ng-controller="userManagementController" ng-init="init()" ng-cloak>
|
||||
<!--Sidebar-->
|
||||
<div id="sidebar-wrapper" class="shadow">
|
||||
<br />
|
||||
<br />
|
||||
<img ng-show="selectedUser.plexInfo.thumb" class="col-md-pull-1 img-circle" style="position: absolute" ng-src="{{selectedUser.plexInfo.thumb}}" />
|
||||
<div hidden="hidden" ng-bind="selectedUser.id"></div>
|
||||
<div>
|
||||
<strong>Username: </strong><span ng-bind="selectedUser.username"></span>
|
||||
</div>
|
||||
<div ng-show="selectedUser.emailAddress">
|
||||
<strong>Email Address: </strong><span ng-bind="selectedUser.emailAddress"></span>
|
||||
</div>
|
||||
<div>
|
||||
<strong>Permissions: </strong><span ng-bind="selectedUser.claims"></span>
|
||||
</div>
|
||||
<div>
|
||||
<strong>User Type: </strong><span ng-bind="selectedUser.type === 1 ? 'Local User' : 'Plex User'"></span>
|
||||
</div>
|
||||
<br />
|
||||
<br />
|
||||
<div ng-show="selectedUser.type === 1">
|
||||
<!--Edit-->
|
||||
|
||||
<strong>Modify Roles:</strong>
|
||||
<!--Load all claims-->
|
||||
<div class="checkbox" ng-repeat="claim in selectedUser.claimsItem">
|
||||
<input id="claimCheckboxEdit_{{$id}}" class="checkbox-custom" name="selectedClaims[]" ng-checked="claim.selected" ng-model="claim.selected" type="checkbox" value="claim" />
|
||||
<label for="claimCheckboxEdit_{{$id}}">{{claim.name}}</label>
|
||||
</div>
|
||||
|
||||
<strong>Email Address</strong>
|
||||
<div class="form-group">
|
||||
<input id="emailAddress" type="email" ng-model="selectedUser.emailAddress" class="form-control form-control-custom" />
|
||||
</div>
|
||||
|
||||
<strong>Alias</strong>
|
||||
<div class="form-group">
|
||||
<input id="alias" type="text" ng-model="selectedUser.alias" class="form-control form-control-custom" />
|
||||
</div>
|
||||
<span us-spinner="{radius:30, width:8, length: 16, color: '#ffffff' }"></span>
|
||||
|
||||
|
||||
<button ng-click="updateUser()" class="btn btn-primary-outline">Update</button>
|
||||
<button ng-click="deleteUser()" class="btn btn-danger-outline">Delete</button>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<!--SideBar End-->
|
||||
<sidebar></sidebar>
|
||||
|
||||
<div>
|
||||
<div class="container-fluid">
|
||||
|
@ -58,110 +16,14 @@
|
|||
<br />
|
||||
<br />
|
||||
<div class="col-md-12">
|
||||
<br>
|
||||
<br>
|
||||
<div ng-show="error.error" ng-bind="error.errorMessage"></div>
|
||||
<form name="userform" ng-submit="addUser()" novalidate>
|
||||
<div class="form-group">
|
||||
<input id="username" type="text" placeholder="user" ng-model="user.username" class="form-control form-control-custom" />
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<input id="password" type="password" placeholder="password" ng-model="user.password" class="form-control form-control-custom" />
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<input id="email" type="email" placeholder="email address" ng-model="user.email" class="form-control form-control-custom" />
|
||||
</div>
|
||||
<br />
|
||||
<br />
|
||||
<br />
|
||||
|
||||
<add-User></add-User>
|
||||
|
||||
<div class="checkbox" ng-repeat="claim in claims">
|
||||
<input id="claimCheckbox_{{$id}}" class="checkbox-custom" name="selectedClaims[]"
|
||||
ng-checked="claim.selected" ng-model="claim.selected" type="checkbox" value="claim" />
|
||||
<label for="claimCheckbox_{{$id}}">{{claim.name}}</label>
|
||||
</div>
|
||||
|
||||
<input type="submit" class="btn btn-success-outline" value="Add" />
|
||||
</form>
|
||||
|
||||
<form>
|
||||
<div class="form-group">
|
||||
<div class="input-group">
|
||||
<div class="input-group-addon">
|
||||
<i class="fa fa-search"></i>
|
||||
</div>
|
||||
|
||||
<input type="text" class="form-control" placeholder="Search" ng-model="searchTerm">
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
<table class="table table-striped table-hover table-responsive table-condensed">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>
|
||||
<a href="#" ng-click="sortType = 'username'; sortReverse = !sortReverse">
|
||||
Username
|
||||
<span ng-show="sortType == 'username' && !sortReverse" class="fa fa-caret-down"></span>
|
||||
<span ng-show="sortType == 'username' && sortReverse" class="fa fa-caret-up"></span>
|
||||
</a>
|
||||
</th>
|
||||
<th>
|
||||
<a href="#" ng-click="sortType = 'alias'; sortReverse = !sortReverse">
|
||||
Alias
|
||||
<span ng-show="sortType == 'alias' && !sortReverse" class="fa fa-caret-down"></span>
|
||||
<span ng-show="sortType == 'alias' && sortReverse" class="fa fa-caret-up"></span>
|
||||
</a>
|
||||
</th>
|
||||
<th>
|
||||
<a href="#" ng-click="sortType = 'emailAddress'; sortReverse = !sortReverse">
|
||||
Email
|
||||
<span ng-show="sortType == 'emailAddress' && !sortReverse" class="fa fa-caret-down"></span>
|
||||
<span ng-show="sortType == 'emailAddress' && sortReverse" class="fa fa-caret-up"></span>
|
||||
</a>
|
||||
</th>
|
||||
<th>
|
||||
Roles
|
||||
</th>
|
||||
<th>
|
||||
<a href="#" ng-click="sortType = 'type'; sortReverse = !sortReverse">
|
||||
User Type
|
||||
<span ng-show="sortType == 'type' && !sortReverse" class="fa fa-caret-down"></span>
|
||||
<span ng-show="sortType == 'type' && sortReverse" class="fa fa-caret-up"></span>
|
||||
</a>
|
||||
</th>
|
||||
|
||||
<th>
|
||||
<a href="#" ng-click="sortType = 'lastLoggedIn'; sortReverse = !sortReverse">
|
||||
Last Logged In
|
||||
<span ng-show="sortType == 'lastLoggedIn' && !sortReverse" class="fa fa-caret-down"></span>
|
||||
<span ng-show="sortType == 'lastLoggedIn' && sortReverse" class="fa fa-caret-up"></span>
|
||||
</a>
|
||||
</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr ng-repeat="u in users | orderBy:sortType:sortReverse | filter:searchTerm">
|
||||
<td>
|
||||
{{u.username}}
|
||||
</td>
|
||||
<td>
|
||||
{{u.alias}}
|
||||
</td>
|
||||
<td>
|
||||
{{u.emailAddress}}
|
||||
</td>
|
||||
<td>
|
||||
{{u.claims}}
|
||||
</td>
|
||||
<td>
|
||||
{{u.type === 1 ? 'Local User' : 'Plex User'}}
|
||||
</td>
|
||||
<td ng-bind="u.lastLoggedIn === minDate ? 'Never' : formatDate(u.lastLoggedIn)"></td>
|
||||
<td>
|
||||
<a href="#" ng-click="selectUser(u.id)" class="btn btn-sm btn-info-outline detailsBtn">Details/Edit</a>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<table-Component></table-Component>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -0,0 +1,69 @@
|
|||
@using PlexRequests.UI.Helpers
|
||||
@inherits Nancy.ViewEngines.Razor.NancyRazorViewBase<PlexRequests.Core.SettingModels.UserManagementSettings>
|
||||
@Html.Partial("Shared/Partial/_Sidebar")
|
||||
|
||||
<div class="col-sm-8 col-sm-push-1">
|
||||
<form class="form-horizontal" method="POST" id="mainForm">
|
||||
<fieldset>
|
||||
<legend>User Management Settings</legend>
|
||||
|
||||
<span>Here you can manage the default permissions and features that your users get</span>
|
||||
|
||||
|
||||
<h3>Permissions</h3>
|
||||
@Html.Checkbox(Model.RequestMovies, "RequestMovies", "Request Movies")
|
||||
@Html.Checkbox(Model.RequestTvShows, "RequestTvShows", "Request TV Shows")
|
||||
@Html.Checkbox(Model.RequestMusic, "RequestMusic", "Request Music")
|
||||
@Html.Checkbox(Model.AutoApproveMovies, "AutoApproveMovies", "Auto Approve Movie Requests")
|
||||
@Html.Checkbox(Model.AutoApproveTvShows, "AutoApproveTvShows", "Auto Approve TV Show Requests")
|
||||
@Html.Checkbox(Model.AutoApproveMusic, "AutoApproveMusic", "Auto Approve Music Requests")
|
||||
@Html.Checkbox(Model.ReportIssues, "ReportIssues", "Report Issues")
|
||||
@Html.Checkbox(Model.UsersCanViewOnlyOwnIssues, "UsersCanViewOnlyOwnIssues", "Users can only view their own issues")
|
||||
@Html.Checkbox(Model.UsersCanViewOnlyOwnRequests, "UsersCanViewOnlyOwnRequests", "Users can only view their own requests")
|
||||
|
||||
|
||||
|
||||
<h3>Features</h3>
|
||||
@Html.Checkbox(Model.RecentlyAddedNewsletter, "RecentlyAddedNewsletter", "Recently Added Newsletter")
|
||||
@Html.Checkbox(Model.RecentlyAddedNotification, "RecentlyAddedNotification", "Recently Added Notifications")
|
||||
|
||||
<div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div>
|
||||
<button type="submit" id="save" class="btn btn-primary-outline">Submit</button>
|
||||
</div>
|
||||
</div>
|
||||
</fieldset>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
$(function () {
|
||||
$('#save').click(function (e) {
|
||||
e.preventDefault();
|
||||
|
||||
var $form = $("#mainForm");
|
||||
|
||||
var data = $form.serialize();
|
||||
|
||||
$.ajax({
|
||||
type: $form.prop("method"),
|
||||
data: data,
|
||||
url: $form.prop("action"),
|
||||
dataType: "json",
|
||||
success: function (response) {
|
||||
if (response.result === true) {
|
||||
generateNotify("Success!", "success");
|
||||
} else {
|
||||
generateNotify(response.message, "warning");
|
||||
}
|
||||
},
|
||||
error: function (e) {
|
||||
console.log(e);
|
||||
generateNotify("Something went wrong!", "danger");
|
||||
}
|
||||
});
|
||||
});
|
||||
});
|
||||
</script>
|
|
@ -104,22 +104,7 @@
|
|||
<input type="checkbox" id="SearchForMusic" name="SearchForMusic"><label id="SearchForMusicLabel" for="SearchForMusic">Allow searching for Music</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="checkbox">
|
||||
<input type="checkbox" disabled="disabled" id="RequireMovieApproval" name="RequireMovieApproval"><label style="color:grey" id="RequireMovieApprovalLabel" for="RequireMovieApproval">Require approval of all Movie requests</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="checkbox">
|
||||
<input type="checkbox" disabled="disabled" id="RequireTvShowApproval" name="RequireTvShowApproval"><label style="color:grey" id="RequireTvShowApprovalLabel" for="RequireTvShowApproval">Require approval of all TV show requests</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="checkbox">
|
||||
<input type="checkbox" disabled="disabled" id="RequireMusicApproval" name="RequireMusicApproval"><label style="color:grey" id="RequireMusicApprovalLabel" for="RequireMusicApproval">Require approval of all Music requests</label>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="form-group">
|
||||
<div style="text-align: center; margin-top: 20px">
|
||||
<a href="#" id="submitPlexRequest" class="btn btn-primary-outline">Next</a>
|
||||
|
@ -155,7 +140,7 @@
|
|||
<script id="adminArea" type="text/html">
|
||||
<form method="post" action="@formAction/wizard/createuser" id="adminForm">
|
||||
<h4 class="media-heading landing-title">Create the Admin account</h4>
|
||||
<small>This account will be used to configure your settings and also manage all of the requests.</small>
|
||||
<small>This account will be used to configure your settings and also manage all of the requests. Note: this should not be the same as your Plex.Tv account (you can change this later in the User Management Settings)</small>
|
||||
<div class="form-group">
|
||||
<div>
|
||||
<label for="adminUsername">Username</label><input type="text" class="form-control form-control-custom" id="adminUsername" name="Username" placeholder="Username">
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue