diff --git a/Oqtane.Client/Modules/Admin/Pages/Edit.razor b/Oqtane.Client/Modules/Admin/Pages/Edit.razor
index 4af2a227..e25fc4dd 100644
--- a/Oqtane.Client/Modules/Admin/Pages/Edit.razor
+++ b/Oqtane.Client/Modules/Admin/Pages/Edit.razor
@@ -209,7 +209,7 @@
@Localizer["ModuleDefinition"] |
- |
+ |
|
@context.Title |
@context.ModuleDefinition?.Name |
@@ -292,6 +292,7 @@
private int _childid = -1;
private string _isnavigation;
private string _isclickable;
+ private string _actualpath;
private string _path;
private string _url;
private string _ispersonalizable;
@@ -344,7 +345,8 @@
_currentparentid = _parentid;
_isnavigation = _page.IsNavigation.ToString();
_isclickable = _page.IsClickable.ToString();
- _path = _page.Path;
+ _actualpath = _page.Path;
+ _path = _actualpath;
if (string.IsNullOrEmpty(_path))
{
_path = "/";
@@ -672,5 +674,4 @@
{
_icon = NewIcon;
}
-
}
diff --git a/Oqtane.Client/Modules/Controls/ActionLink.razor b/Oqtane.Client/Modules/Controls/ActionLink.razor
index 60eed4ca..5afcb874 100644
--- a/Oqtane.Client/Modules/Controls/ActionLink.razor
+++ b/Oqtane.Client/Modules/Controls/ActionLink.razor
@@ -24,116 +24,135 @@
}
@code {
- private string _text = string.Empty;
- private string _parameters = string.Empty;
- private string _url = string.Empty;
- private List _permissions;
- private bool _editmode = false;
- private bool _authorized = false;
- private string _classname = "btn btn-primary";
- private string _style = string.Empty;
- private string _iconSpan = string.Empty;
+ private string _text = string.Empty;
+ private int _moduleId = -1;
+ private string _path = string.Empty;
+ private string _parameters = string.Empty;
+ private string _url = string.Empty;
+ private List _permissions;
+ private bool _editmode = false;
+ private bool _authorized = false;
+ private string _classname = "btn btn-primary";
+ private string _style = string.Empty;
+ private string _iconSpan = string.Empty;
- [Parameter]
- public string Action { get; set; } // required
+ [Parameter]
+ public string Action { get; set; } // required
- [Parameter]
- public string Text { get; set; } // optional - defaults to Action if not specified
+ [Parameter]
+ public string Text { get; set; } // optional - defaults to Action if not specified
- [Parameter]
- public string Parameters { get; set; } // optional - querystring parameters should be in the form of "id=x&name=y"
+ [Parameter]
+ public int ModuleId { get; set; } = -1; // optional - allows the link to target a specific moduleid
- [Parameter]
- public int ModuleId { get; set; } = -1; // optional - allows the link to target a specific moduleid
+ [Parameter]
+ public string Path { get; set; } = null; // optional - allows the link to target a specific page
- [Parameter]
- public Action OnClick { get; set; } = null; // optional - executes a method in the calling component
+ [Parameter]
+ public string Parameters { get; set; } // optional - querystring parameters should be in the form of "id=x&name=y"
- [Parameter]
- public SecurityAccessLevel? Security { get; set; } // optional - can be used to explicitly specify SecurityAccessLevel
+ [Parameter]
+ public Action OnClick { get; set; } = null; // optional - executes a method in the calling component
- [Parameter]
- public string Permissions { get; set; } // deprecated - use PermissionList instead
+ [Parameter]
+ public SecurityAccessLevel? Security { get; set; } // optional - can be used to explicitly specify SecurityAccessLevel
- [Parameter]
- public List PermissionList { get; set; } // optional - can be used to specify permissions
+ [Parameter]
+ public string Permissions { get; set; } // deprecated - use PermissionList instead
- [Parameter]
- public bool Disabled { get; set; } // optional
+ [Parameter]
+ public List PermissionList { get; set; } // optional - can be used to specify permissions
- [Parameter]
- public string EditMode { get; set; } // optional - specifies if an authorized user must be in edit mode to see the action - default is false.
+ [Parameter]
+ public bool Disabled { get; set; } // optional
- [Parameter]
- public string Class { get; set; } // optional - defaults to primary if not specified
+ [Parameter]
+ public string EditMode { get; set; } // optional - specifies if an authorized user must be in edit mode to see the action - default is false.
- [Parameter]
- public string Style { get; set; } // optional
+ [Parameter]
+ public string Class { get; set; } // optional - defaults to primary if not specified
- [Parameter]
- public string IconName { get; set; } // optional - specifies an icon for the link - default is no icon
+ [Parameter]
+ public string Style { get; set; } // optional
- [Parameter]
- public bool IconOnly { get; set; } // optional - specifies only icon in link
+ [Parameter]
+ public string IconName { get; set; } // optional - specifies an icon for the link - default is no icon
- [Parameter]
- public string ReturnUrl { get; set; } // optional - used to set a url to redirect to
+ [Parameter]
+ public bool IconOnly { get; set; } // optional - specifies only icon in link
- protected override void OnInitialized()
- {
- if (!string.IsNullOrEmpty(Permissions))
- {
- PermissionList = JsonSerializer.Deserialize>(Permissions);
- }
- }
+ [Parameter]
+ public string ReturnUrl { get; set; } // optional - used to set a url to redirect to
- protected override void OnParametersSet()
- {
- base.OnParametersSet();
- _text = Action;
- if (!string.IsNullOrEmpty(Text))
- {
- _text = Text;
- }
+ protected override void OnInitialized()
+ {
+ if (!string.IsNullOrEmpty(Permissions))
+ {
+ PermissionList = JsonSerializer.Deserialize>(Permissions);
+ }
+ }
- if (IconOnly && !string.IsNullOrEmpty(IconName))
- {
- _text = string.Empty;
- }
+ protected override void OnParametersSet()
+ {
+ base.OnParametersSet();
- if (!string.IsNullOrEmpty(Parameters))
- {
- _parameters = Parameters;
- }
+ _text = Action;
+ if (!string.IsNullOrEmpty(Text))
+ {
+ _text = Text;
+ }
- if (!string.IsNullOrEmpty(Class))
- {
- _classname = Class;
- }
+ if (IconOnly && !string.IsNullOrEmpty(IconName))
+ {
+ _text = string.Empty;
+ }
- if (!string.IsNullOrEmpty(Style))
- {
- _style = Style;
- }
+ _moduleId = ModuleState.ModuleId;
+ if (ModuleId != -1)
+ {
+ _moduleId = ModuleId;
+ }
- if (!string.IsNullOrEmpty(EditMode))
- {
- _editmode = bool.Parse(EditMode);
- }
+ _path = PageState.Page.Path;
+ if (Path != null)
+ {
+ _path = Path;
+ }
- if (!string.IsNullOrEmpty(IconName))
- {
- if (!IconName.Contains(" "))
- {
- IconName = "oi oi-" + IconName;
- }
- _iconSpan = $"{(IconOnly ? "" : " ")}";
- }
+ if (!string.IsNullOrEmpty(Parameters))
+ {
+ _parameters = Parameters;
+ }
+
+ if (!string.IsNullOrEmpty(Class))
+ {
+ _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 = $"{(IconOnly ? "" : " ")}";
+ }
_permissions = (PermissionList == null) ? ModuleState.PermissionList : PermissionList;
_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))
{
_url += ((_url.Contains("?")) ? "&" : "?") + $"returnurl={WebUtility.UrlEncode(ReturnUrl)}";