This repository has been archived on 2025-05-14. You can view files and clone it, but cannot push or open issues or pull requests.
Mitchel Sellers f8a048e5ac ActionLink Improvements
Adjustment to ActionLink component to support custom button classes.  Adjustment of all button styles inside of the project to swap to either btn-danger for delete operations or btn-secondary for cancel operations for consistency.
2019-05-17 23:55:55 -05:00

79 lines
2.4 KiB
Plaintext

@using Microsoft.AspNetCore.Components.Routing
@using Oqtane.Modules
@using Oqtane.Services
@using Oqtane.Shared
@inherits ModuleBase
@inject IUserService UserService
@if (authorized)
{
<NavLink class="@buttonClass" href="@url">@text</NavLink>
}
@functions {
[Parameter]
private string Action { get; set; }
[Parameter]
private string Text { get; set; } // optional
[Parameter]
private string Parameters { get; set; } // optional
[Parameter]
private string ButtonClass { get; set; } // optional
string text = "";
string url = "";
string parameters = "";
string buttonClass = "btn btn-primary";
bool authorized = false;
protected override void OnInit()
{
text = Action;
if (!String.IsNullOrEmpty(Text))
{
text = Text;
}
if (!String.IsNullOrEmpty(Parameters))
{
parameters = Parameters;
}
if (!string.IsNullOrEmpty(ButtonClass))
{
buttonClass = "btn " + ButtonClass;
}
url = EditUrl(Action, parameters);
string typename = ModuleState.ModuleType.Replace(Utilities.GetTypeNameClass(ModuleState.ModuleType) + ",", Action + ",");
Type moduleType = Type.GetType(typename);
if (moduleType != null)
{
var moduleobject = Activator.CreateInstance(moduleType);
SecurityAccessLevelEnum SecurityAccessLevel = (SecurityAccessLevelEnum)moduleType.GetProperty("SecurityAccessLevel").GetValue(moduleobject, null);
switch (SecurityAccessLevel)
{
case SecurityAccessLevelEnum.Anonymous:
authorized = true;
break;
case SecurityAccessLevelEnum.View:
authorized = UserService.IsAuthorized(PageState.User, ModuleState.ViewPermissions);
break;
case SecurityAccessLevelEnum.Edit:
authorized = UserService.IsAuthorized(PageState.User, ModuleState.EditPermissions);
break;
case SecurityAccessLevelEnum.Admin:
authorized = UserService.IsAuthorized(PageState.User, Constants.AdminRole);
break;
case SecurityAccessLevelEnum.Host:
authorized = PageState.User.IsSuperUser;
break;
}
}
}
}