Merge pull request #3219 from sbwalker/dev

fix paths in Edit Page / Modules tab / Edit option
This commit is contained in:
Shaun Walker 2023-09-01 13:57:26 -04:00 committed by GitHub
commit d0d3cc8faa
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 106 additions and 86 deletions

View File

@ -209,7 +209,7 @@
<th>@Localizer["ModuleDefinition"]</th> <th>@Localizer["ModuleDefinition"]</th>
</Header> </Header>
<Row> <Row>
<td><ActionLink Action="Settings" Text="Edit" ModuleId="@context.ModuleId" Security="SecurityAccessLevel.Edit" PermissionList="@context.PermissionList" ResourceKey="ModuleSettings" /></td> <td><ActionLink Action="Settings" Text="Edit" Path="@_actualpath" ModuleId="@context.ModuleId" Security="SecurityAccessLevel.Edit" PermissionList="@context.PermissionList" ResourceKey="ModuleSettings" /></td>
<td><ActionDialog Header="Delete Module" Message="Are You Sure You Wish To Delete This Module?" Action="Delete" Security="SecurityAccessLevel.Edit" PermissionList="@context.PermissionList" Class="btn btn-danger" OnClick="@(async () => await DeleteModule(context))" ResourceKey="DeleteModule" /></td> <td><ActionDialog Header="Delete Module" Message="Are You Sure You Wish To Delete This Module?" Action="Delete" Security="SecurityAccessLevel.Edit" PermissionList="@context.PermissionList" Class="btn btn-danger" OnClick="@(async () => await DeleteModule(context))" ResourceKey="DeleteModule" /></td>
<td>@context.Title</td> <td>@context.Title</td>
<td>@context.ModuleDefinition?.Name</td> <td>@context.ModuleDefinition?.Name</td>
@ -292,6 +292,7 @@
private int _childid = -1; private int _childid = -1;
private string _isnavigation; private string _isnavigation;
private string _isclickable; private string _isclickable;
private string _actualpath;
private string _path; private string _path;
private string _url; private string _url;
private string _ispersonalizable; private string _ispersonalizable;
@ -344,7 +345,8 @@
_currentparentid = _parentid; _currentparentid = _parentid;
_isnavigation = _page.IsNavigation.ToString(); _isnavigation = _page.IsNavigation.ToString();
_isclickable = _page.IsClickable.ToString(); _isclickable = _page.IsClickable.ToString();
_path = _page.Path; _actualpath = _page.Path;
_path = _actualpath;
if (string.IsNullOrEmpty(_path)) if (string.IsNullOrEmpty(_path))
{ {
_path = "/"; _path = "/";
@ -672,5 +674,4 @@
{ {
_icon = NewIcon; _icon = NewIcon;
} }
} }

View File

@ -24,116 +24,135 @@
} }
@code { @code {
private string _text = string.Empty; private string _text = string.Empty;
private string _parameters = string.Empty; private int _moduleId = -1;
private string _url = string.Empty; private string _path = string.Empty;
private List<Permission> _permissions; private string _parameters = string.Empty;
private bool _editmode = false; private string _url = string.Empty;
private bool _authorized = false; private List<Permission> _permissions;
private string _classname = "btn btn-primary"; private bool _editmode = false;
private string _style = string.Empty; private bool _authorized = false;
private string _iconSpan = string.Empty; private string _classname = "btn btn-primary";
private string _style = string.Empty;
private string _iconSpan = string.Empty;
[Parameter] [Parameter]
public string Action { get; set; } // required public string Action { get; set; } // required
[Parameter] [Parameter]
public string Text { get; set; } // optional - defaults to Action if not specified public string Text { get; set; } // optional - defaults to Action if not specified
[Parameter] [Parameter]
public string Parameters { get; set; } // optional - querystring parameters should be in the form of "id=x&name=y" public int ModuleId { get; set; } = -1; // optional - allows the link to target a specific moduleid
[Parameter] [Parameter]
public int ModuleId { get; set; } = -1; // optional - allows the link to target a specific moduleid public string Path { get; set; } = null; // optional - allows the link to target a specific page
[Parameter] [Parameter]
public Action OnClick { get; set; } = null; // optional - executes a method in the calling component public string Parameters { get; set; } // optional - querystring parameters should be in the form of "id=x&name=y"
[Parameter] [Parameter]
public SecurityAccessLevel? Security { get; set; } // optional - can be used to explicitly specify SecurityAccessLevel public Action OnClick { get; set; } = null; // optional - executes a method in the calling component
[Parameter] [Parameter]
public string Permissions { get; set; } // deprecated - use PermissionList instead public SecurityAccessLevel? Security { get; set; } // optional - can be used to explicitly specify SecurityAccessLevel
[Parameter] [Parameter]
public List<Permission> PermissionList { get; set; } // optional - can be used to specify permissions public string Permissions { get; set; } // deprecated - use PermissionList instead
[Parameter] [Parameter]
public bool Disabled { get; set; } // optional public List<Permission> PermissionList { get; set; } // optional - can be used to specify permissions
[Parameter] [Parameter]
public string EditMode { get; set; } // optional - specifies if an authorized user must be in edit mode to see the action - default is false. public bool Disabled { get; set; } // optional
[Parameter] [Parameter]
public string Class { get; set; } // optional - defaults to primary if not specified public string EditMode { get; set; } // optional - specifies if an authorized user must be in edit mode to see the action - default is false.
[Parameter] [Parameter]
public string Style { get; set; } // optional public string Class { get; set; } // optional - defaults to primary if not specified
[Parameter] [Parameter]
public string IconName { get; set; } // optional - specifies an icon for the link - default is no icon public string Style { get; set; } // optional
[Parameter] [Parameter]
public bool IconOnly { get; set; } // optional - specifies only icon in link public string IconName { get; set; } // optional - specifies an icon for the link - default is no icon
[Parameter] [Parameter]
public string ReturnUrl { get; set; } // optional - used to set a url to redirect to public bool IconOnly { get; set; } // optional - specifies only icon in link
protected override void OnInitialized() [Parameter]
{ public string ReturnUrl { get; set; } // optional - used to set a url to redirect to
if (!string.IsNullOrEmpty(Permissions))
{
PermissionList = JsonSerializer.Deserialize<List<Permission>>(Permissions);
}
}
protected override void OnParametersSet()
{
base.OnParametersSet();
_text = Action; protected override void OnInitialized()
if (!string.IsNullOrEmpty(Text)) {
{ if (!string.IsNullOrEmpty(Permissions))
_text = Text; {
} PermissionList = JsonSerializer.Deserialize<List<Permission>>(Permissions);
}
}
if (IconOnly && !string.IsNullOrEmpty(IconName)) protected override void OnParametersSet()
{ {
_text = string.Empty; base.OnParametersSet();
}
if (!string.IsNullOrEmpty(Parameters)) _text = Action;
{ if (!string.IsNullOrEmpty(Text))
_parameters = Parameters; {
} _text = Text;
}
if (!string.IsNullOrEmpty(Class)) if (IconOnly && !string.IsNullOrEmpty(IconName))
{ {
_classname = Class; _text = string.Empty;
} }
if (!string.IsNullOrEmpty(Style)) _moduleId = ModuleState.ModuleId;
{ if (ModuleId != -1)
_style = Style; {
} _moduleId = ModuleId;
}
if (!string.IsNullOrEmpty(EditMode)) _path = PageState.Page.Path;
{ if (Path != null)
_editmode = bool.Parse(EditMode); {
} _path = Path;
}
if (!string.IsNullOrEmpty(IconName)) if (!string.IsNullOrEmpty(Parameters))
{ {
if (!IconName.Contains(" ")) _parameters = Parameters;
{ }
IconName = "oi oi-" + IconName;
} if (!string.IsNullOrEmpty(Class))
_iconSpan = $"<span class=\"{IconName}\"></span>{(IconOnly ? "" : "&nbsp")}"; {
} _classname = Class;
}
if (!string.IsNullOrEmpty(Style))
{
_style = Style;
}
if (!string.IsNullOrEmpty(EditMode))
{
_editmode = bool.Parse(EditMode);
}
if (!string.IsNullOrEmpty(IconName))
{
if (!IconName.Contains(" "))
{
IconName = "oi oi-" + IconName;
}
_iconSpan = $"<span class=\"{IconName}\"></span>{(IconOnly ? "" : "&nbsp")}";
}
_permissions = (PermissionList == null) ? ModuleState.PermissionList : PermissionList; _permissions = (PermissionList == null) ? ModuleState.PermissionList : PermissionList;
_text = Localize(nameof(Text), _text); _text = Localize(nameof(Text), _text);
_url = (ModuleId == -1) ? EditUrl(Action, _parameters) : EditUrl(ModuleId, Action, _parameters);
_url = EditUrl(_path, _moduleId, Action, _parameters);
if (!string.IsNullOrEmpty(ReturnUrl)) if (!string.IsNullOrEmpty(ReturnUrl))
{ {
_url += ((_url.Contains("?")) ? "&" : "?") + $"returnurl={WebUtility.UrlEncode(ReturnUrl)}"; _url += ((_url.Contains("?")) ? "&" : "?") + $"returnurl={WebUtility.UrlEncode(ReturnUrl)}";