mirror of
https://github.com/Ombi-app/Ombi.git
synced 2025-08-19 12:59:39 -07:00
Small tweaks to the Request Page
This commit is contained in:
parent
b7d4a9c2be
commit
a2639375fb
7 changed files with 107 additions and 53 deletions
|
@ -20,8 +20,8 @@ namespace PlexRequests.Core
|
||||||
Response HasPermissionsRedirect(Permissions perm, NancyContext context, string routeName, HttpStatusCode code);
|
Response HasPermissionsRedirect(Permissions perm, NancyContext context, string routeName, HttpStatusCode code);
|
||||||
Func<NancyContext, Response> HttpStatusCodeIfNot(HttpStatusCode statusCode, Func<NancyContext, bool> test);
|
Func<NancyContext, Response> HttpStatusCodeIfNot(HttpStatusCode statusCode, Func<NancyContext, bool> test);
|
||||||
bool IsLoggedIn(NancyContext context);
|
bool IsLoggedIn(NancyContext context);
|
||||||
bool IsNormalUser(NancyContext context);
|
bool IsNormalUser(IUserIdentity user);
|
||||||
bool IsPlexUser(NancyContext context);
|
bool IsPlexUser(IUserIdentity user);
|
||||||
bool HasPermissions(string userName, Permissions perm);
|
bool HasPermissions(string userName, Permissions perm);
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|
|
@ -65,15 +65,15 @@ namespace PlexRequests.Core
|
||||||
return realUser || plexUser;
|
return realUser || plexUser;
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool IsPlexUser(NancyContext context)
|
public bool IsPlexUser(IUserIdentity user)
|
||||||
{
|
{
|
||||||
var plexUser = PlexUsers.GetUserByUsername(context.CurrentUser.UserName);
|
var plexUser = PlexUsers.GetUserByUsername(user.UserName);
|
||||||
return plexUser != null;
|
return plexUser != null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool IsNormalUser(NancyContext context)
|
public bool IsNormalUser(IUserIdentity user)
|
||||||
{
|
{
|
||||||
var dbUser = UserRepository.GetUserByUsername(context.CurrentUser.UserName);
|
var dbUser = UserRepository.GetUserByUsername(user.UserName);
|
||||||
|
|
||||||
return dbUser != null;
|
return dbUser != null;
|
||||||
}
|
}
|
||||||
|
|
13
PlexRequests.UI/Content/requests.js
vendored
13
PlexRequests.UI/Content/requests.js
vendored
|
@ -16,10 +16,13 @@ var base = $('#baseUrl').text();
|
||||||
var tvLoaded = false;
|
var tvLoaded = false;
|
||||||
var albumLoaded = false;
|
var albumLoaded = false;
|
||||||
|
|
||||||
|
var isAdmin = $('#isAdmin').val();
|
||||||
|
var defaultFiler = isAdmin == 'True' ? '.approved-fase' : 'all';
|
||||||
|
|
||||||
var mixItUpDefault = {
|
var mixItUpDefault = {
|
||||||
animation: { enable: true },
|
animation: { enable: true },
|
||||||
load: {
|
load: {
|
||||||
filter: '.approved-false',
|
filter: defaultFiler,
|
||||||
sort: 'requestorder:desc'
|
sort: 'requestorder:desc'
|
||||||
},
|
},
|
||||||
layout: {
|
layout: {
|
||||||
|
@ -259,7 +262,7 @@ $('#deleteMusic').click(function (e) {
|
||||||
});
|
});
|
||||||
|
|
||||||
// filtering/sorting
|
// filtering/sorting
|
||||||
$('.filter,.sort', '.dropdown-menu').click(function (e) {
|
$('.filter', '.dropdown-menu').click(function (e) {
|
||||||
var $this = $(this);
|
var $this = $(this);
|
||||||
$('.fa-check-square', $this.parents('.dropdown-menu:first')).removeClass('fa-check-square').addClass('fa-square-o');
|
$('.fa-check-square', $this.parents('.dropdown-menu:first')).removeClass('fa-check-square').addClass('fa-square-o');
|
||||||
$this.children('.fa').first().removeClass('fa-square-o').addClass('fa-check-square');
|
$this.children('.fa').first().removeClass('fa-square-o').addClass('fa-check-square');
|
||||||
|
@ -268,6 +271,12 @@ $('.filter,.sort', '.dropdown-menu').click(function (e) {
|
||||||
}).fadeIn();
|
}).fadeIn();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
$('.sort', '.dropdown-menu').click(function (e) {
|
||||||
|
var $this = $(this);
|
||||||
|
$('.fa-check-square', $this.parents('.dropdown-menu:first')).removeClass('fa-check-square').addClass('fa-square-o');
|
||||||
|
$this.children('.fa').first().removeClass('fa-square-o').addClass('fa-check-square');
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
// Report Issue
|
// Report Issue
|
||||||
$(document).on("click", ".dropdownIssue", function (e) {
|
$(document).on("click", ".dropdownIssue", function (e) {
|
||||||
|
|
|
@ -26,12 +26,9 @@
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
using Nancy;
|
using Nancy;
|
||||||
using Nancy.Linker;
|
|
||||||
using Nancy.Security;
|
using Nancy.Security;
|
||||||
using Nancy.ViewEngines.Razor;
|
using Nancy.ViewEngines.Razor;
|
||||||
using Ninject;
|
|
||||||
using PlexRequests.Helpers.Permissions;
|
using PlexRequests.Helpers.Permissions;
|
||||||
using PlexRequests.Store.Repository;
|
|
||||||
using ISecurityExtensions = PlexRequests.Core.ISecurityExtensions;
|
using ISecurityExtensions = PlexRequests.Core.ISecurityExtensions;
|
||||||
|
|
||||||
namespace PlexRequests.UI.Helpers
|
namespace PlexRequests.UI.Helpers
|
||||||
|
@ -50,14 +47,14 @@ namespace PlexRequests.UI.Helpers
|
||||||
private static ISecurityExtensions _security;
|
private static ISecurityExtensions _security;
|
||||||
|
|
||||||
|
|
||||||
public static bool HasAnyPermission(this HtmlHelpers helper, int permission, bool authenticated = true)
|
public static bool HasAnyPermission(this HtmlHelpers helper, bool authenticated = true, params Permissions[] permission)
|
||||||
{
|
{
|
||||||
if (authenticated)
|
if (authenticated)
|
||||||
{
|
{
|
||||||
return helper.CurrentUser.IsAuthenticated()
|
return helper.CurrentUser.IsAuthenticated()
|
||||||
&& Security.HasPermissions(helper.CurrentUser, (Permissions) permission);
|
&& Security.HasAnyPermissions(helper.CurrentUser, permission);
|
||||||
}
|
}
|
||||||
return Security.HasPermissions(helper.CurrentUser, (Permissions)permission);
|
return Security.HasAnyPermissions(helper.CurrentUser, permission);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static bool DoesNotHavePermission(this HtmlHelpers helper, int permission)
|
public static bool DoesNotHavePermission(this HtmlHelpers helper, int permission)
|
||||||
|
@ -67,12 +64,21 @@ namespace PlexRequests.UI.Helpers
|
||||||
|
|
||||||
public static bool IsAdmin(this HtmlHelpers helper, bool isAuthenticated = true)
|
public static bool IsAdmin(this HtmlHelpers helper, bool isAuthenticated = true)
|
||||||
{
|
{
|
||||||
return HasAnyPermission(helper, (int) Permissions.Administrator, isAuthenticated);
|
return HasAnyPermission(helper, isAuthenticated, Permissions.Administrator);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static bool IsLoggedIn(this HtmlHelpers helper, NancyContext context)
|
public static bool IsLoggedIn(this HtmlHelpers helper, NancyContext context)
|
||||||
{
|
{
|
||||||
return Security.IsLoggedIn(context);
|
return Security.IsLoggedIn(context);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static bool IsPlexUser(this HtmlHelpers helper)
|
||||||
|
{
|
||||||
|
return Security.IsPlexUser(helper.CurrentUser);
|
||||||
|
}
|
||||||
|
public static bool IsNormalUser(this HtmlHelpers helper)
|
||||||
|
{
|
||||||
|
return Security.IsNormalUser(helper.CurrentUser);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -11,7 +11,7 @@
|
||||||
formAction = "/" + baseUrl.ToHtmlString();
|
formAction = "/" + baseUrl.ToHtmlString();
|
||||||
}
|
}
|
||||||
|
|
||||||
var isAdmin = Html.HasAnyPermission((int)Permissions.Administrator) || Html.HasAnyPermission((int)Permissions.ManageRequests);
|
var isAdmin = Html.HasAnyPermission(true, Permissions.Administrator) || Html.HasAnyPermission(Permissions.ManageRequests);
|
||||||
|
|
||||||
}
|
}
|
||||||
<h1>Details</h1>
|
<h1>Details</h1>
|
||||||
|
|
|
@ -1,19 +1,22 @@
|
||||||
@using Nancy.Security
|
@using Nancy.Security
|
||||||
@using Nancy.Security
|
@using Nancy.Security
|
||||||
|
@using PlexRequests.Helpers.Permissions
|
||||||
@using PlexRequests.UI.Helpers
|
@using PlexRequests.UI.Helpers
|
||||||
@using PlexRequests.UI.Resources
|
@using PlexRequests.UI.Resources
|
||||||
@{
|
@{
|
||||||
var baseUrl = Html.GetBaseUrl();
|
var baseUrl = Html.GetBaseUrl();
|
||||||
var formAction = string.Empty;
|
var formAction = string.Empty;
|
||||||
|
var isAdmin = Html.HasAnyPermission(true, Permissions.Administrator, Permissions.ManageRequests);
|
||||||
if (!string.IsNullOrEmpty(baseUrl.ToHtmlString()))
|
if (!string.IsNullOrEmpty(baseUrl.ToHtmlString()))
|
||||||
{
|
{
|
||||||
formAction = "/" + baseUrl.ToHtmlString();
|
formAction = "/" + baseUrl.ToHtmlString();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
<div>
|
<div>
|
||||||
|
<div hidden="hidden" id="isAdmin" value="@isAdmin"></div>
|
||||||
<h1>@UI.Requests_Title</h1>
|
<h1>@UI.Requests_Title</h1>
|
||||||
<h4>@UI.Requests_Paragraph</h4>
|
<h4>@UI.Requests_Paragraph</h4>
|
||||||
<br />
|
<br/>
|
||||||
|
|
||||||
<!-- Nav tabs -->
|
<!-- Nav tabs -->
|
||||||
<ul id="nav-tabs" class="nav nav-tabs" role="tablist">
|
<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>
|
<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>
|
</ul>
|
||||||
<br />
|
<br/>
|
||||||
|
|
||||||
<!-- Tab panes -->
|
<!-- Tab panes -->
|
||||||
<div class="tab-content contentList">
|
<div class="tab-content contentList">
|
||||||
|
@ -38,7 +41,7 @@
|
||||||
<div class="col-sm-12">
|
<div class="col-sm-12">
|
||||||
<div class="pull-right">
|
<div class="pull-right">
|
||||||
<div class="btn-group btn-group-separated">
|
<div class="btn-group btn-group-separated">
|
||||||
@if (Context.CurrentUser.IsAuthenticated()) //TODO replace with IsAdmin
|
@if (isAdmin)
|
||||||
{
|
{
|
||||||
@if (Model.SearchForMovies)
|
@if (Model.SearchForMovies)
|
||||||
{
|
{
|
||||||
|
@ -59,13 +62,34 @@
|
||||||
</div>
|
</div>
|
||||||
<div class="btn-group">
|
<div class="btn-group">
|
||||||
<a href="#" class="btn btn-primary-outline dropdown-toggle" data-toggle="dropdown" aria-expanded="false">
|
<a href="#" class="btn btn-primary-outline dropdown-toggle" data-toggle="dropdown" aria-expanded="false">
|
||||||
|
@if (isAdmin)
|
||||||
|
{
|
||||||
<span id="filterText">@UI.Requests_Filter_NotApproved</span>
|
<span id="filterText">@UI.Requests_Filter_NotApproved</span>
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
<span id="filterText">@UI.Requests_Filter_All</span>
|
||||||
|
}
|
||||||
<i class="fa fa-filter"></i>
|
<i class="fa fa-filter"></i>
|
||||||
</a>
|
</a>
|
||||||
<ul class="dropdown-menu">
|
<ul class="dropdown-menu">
|
||||||
|
@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="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>
|
<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>
|
<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-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=".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-true"><i class="fa fa-square-o"></i> @UI.Requests_Filter_Released</a></li>
|
||||||
|
@ -93,8 +117,8 @@
|
||||||
<!-- Movie tab -->
|
<!-- Movie tab -->
|
||||||
<div role="tabpanel" class="tab-pane active" id="MoviesTab">
|
<div role="tabpanel" class="tab-pane active" id="MoviesTab">
|
||||||
|
|
||||||
<br />
|
<br/>
|
||||||
<br />
|
<br/>
|
||||||
<!-- Movie content -->
|
<!-- Movie content -->
|
||||||
<div id="movieList">
|
<div id="movieList">
|
||||||
</div>
|
</div>
|
||||||
|
@ -106,8 +130,8 @@
|
||||||
<!-- TV tab -->
|
<!-- TV tab -->
|
||||||
<div role="tabpanel" class="tab-pane" id="TvShowTab">
|
<div role="tabpanel" class="tab-pane" id="TvShowTab">
|
||||||
|
|
||||||
<br />
|
<br/>
|
||||||
<br />
|
<br/>
|
||||||
<!-- TV content -->
|
<!-- TV content -->
|
||||||
<div id="tvList">
|
<div id="tvList">
|
||||||
</div>
|
</div>
|
||||||
|
@ -119,8 +143,8 @@
|
||||||
<!-- Music tab -->
|
<!-- Music tab -->
|
||||||
<div role="tabpanel" class="tab-pane" id="MusicTab">
|
<div role="tabpanel" class="tab-pane" id="MusicTab">
|
||||||
|
|
||||||
<br />
|
<br/>
|
||||||
<br />
|
<br/>
|
||||||
<!-- TV content -->
|
<!-- TV content -->
|
||||||
<div id="musicList">
|
<div id="musicList">
|
||||||
</div>
|
</div>
|
||||||
|
@ -168,9 +192,14 @@
|
||||||
<a href="http://www.imdb.com/title/{{imdb}}/" target="_blank">
|
<a href="http://www.imdb.com/title/{{imdb}}/" target="_blank">
|
||||||
<h4 class="request-title">{{title}} ({{year}})</h4>
|
<h4 class="request-title">{{title}} ({{year}})</h4>
|
||||||
</a>
|
</a>
|
||||||
<span class="label label-success">{{status}}</span>
|
|
||||||
</div>
|
</div>
|
||||||
<br />
|
<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}}
|
{{#if denied}}
|
||||||
<div>
|
<div>
|
||||||
Denied: <i style="color:red;" class="fa fa-check"></i>
|
Denied: <i style="color:red;" class="fa fa-check"></i>
|
||||||
|
|
|
@ -69,7 +69,7 @@
|
||||||
</li>
|
</li>
|
||||||
}
|
}
|
||||||
@*@if (Context.Request.Session[SessionKeys.UsernameKey] != null && !Context.CurrentUser.IsAuthenticated())*@
|
@*@if (Context.Request.Session[SessionKeys.UsernameKey] != null && !Context.CurrentUser.IsAuthenticated())*@
|
||||||
else if (Context.CurrentUser != null && Context.CurrentUser.IsAuthenticated()) // Logged in but not admin
|
else if (Html.IsNormalUser()) // Logged in but not admin
|
||||||
{
|
{
|
||||||
<li class="dropdown">
|
<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>
|
<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>
|
||||||
|
@ -79,6 +79,16 @@
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</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">
|
<li class="dropdown">
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue