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)}";