diff --git a/Oqtane.Client/Modules/ModuleBase.cs b/Oqtane.Client/Modules/ModuleBase.cs index 1731e22d..4a794630 100644 --- a/Oqtane.Client/Modules/ModuleBase.cs +++ b/Oqtane.Client/Modules/ModuleBase.cs @@ -134,6 +134,7 @@ namespace Oqtane.Modules // url methods + // navigate url public string NavigateUrl() { return NavigateUrl(PageState.Page.Path); @@ -149,24 +150,65 @@ namespace Oqtane.Modules return NavigateUrl(PageState.Page.Path, refresh); } - public string NavigateUrl(string path, string parameters) + public string NavigateUrl(string path, string querystring) { - return Utilities.NavigateUrl(PageState.Alias.Path, path, parameters); + return Utilities.NavigateUrl(PageState.Alias.Path, path, querystring); + } + + public string NavigateUrl(string path, Dictionary querystring) + { + return NavigateUrl(path, Utilities.CreateQueryString(querystring)); } public string NavigateUrl(string path, bool refresh) { - return Utilities.NavigateUrl(PageState.Alias.Path, path, refresh ? "refresh" : ""); + return NavigateUrl(path, refresh ? "refresh" : ""); } + public string NavigateUrl(int moduleId, string action) + { + return EditUrl(PageState.Page.Path, moduleId, action, ""); + } + + public string NavigateUrl(int moduleId, string action, string querystring) + { + return EditUrl(PageState.Page.Path, moduleId, action, querystring); + } + + public string NavigateUrl(int moduleId, string action, Dictionary querystring) + { + return EditUrl(PageState.Page.Path, moduleId, action, querystring); + } + + public string NavigateUrl(string path, int moduleId, string action) + { + return EditUrl(path, moduleId, action, ""); + } + + public string NavigateUrl(string path, int moduleId, string action, string querystring) + { + return EditUrl(path, moduleId, action, querystring); + } + + public string NavigateUrl(string path, int moduleId, string action, Dictionary querystring) + { + return EditUrl(path, moduleId, action, querystring); + } + + // edit url public string EditUrl(string action) { return EditUrl(ModuleState.ModuleId, action); } - public string EditUrl(string action, string parameters) + public string EditUrl(string action, string querystring) { - return EditUrl(ModuleState.ModuleId, action, parameters); + return EditUrl(ModuleState.ModuleId, action, querystring); + } + + public string EditUrl(string action, Dictionary querystring) + { + return EditUrl(ModuleState.ModuleId, action, querystring); } public string EditUrl(int moduleId, string action) @@ -174,16 +216,27 @@ namespace Oqtane.Modules return EditUrl(moduleId, action, ""); } - public string EditUrl(int moduleId, string action, string parameters) + public string EditUrl(int moduleId, string action, string querystring) { - return EditUrl(PageState.Page.Path, moduleId, action, parameters); + return EditUrl(PageState.Page.Path, moduleId, action, querystring); } - public string EditUrl(string path, int moduleid, string action, string parameters) + public string EditUrl(int moduleId, string action, Dictionary querystring) { - return Utilities.EditUrl(PageState.Alias.Path, path, moduleid, action, parameters); + return EditUrl(PageState.Page.Path, moduleId, action, querystring); } + public string EditUrl(string path, int moduleid, string action, string querystring) + { + return Utilities.EditUrl(PageState.Alias.Path, path, moduleid, action, querystring); + } + + public string EditUrl(string path, int moduleid, string action, Dictionary querystring) + { + return EditUrl(path, moduleid, action, Utilities.CreateQueryString(querystring)); + } + + // file url public string FileUrl(string folderpath, string filename) { return FileUrl(folderpath, filename, false); @@ -203,6 +256,8 @@ namespace Oqtane.Modules return Utilities.FileUrl(PageState.Alias, fileid, download); } + // image url + public string ImageUrl(int fileid, int width, int height) { return ImageUrl(fileid, width, height, ""); diff --git a/Oqtane.Client/Themes/ThemeBase.cs b/Oqtane.Client/Themes/ThemeBase.cs index 68da1a70..d6f9789e 100644 --- a/Oqtane.Client/Themes/ThemeBase.cs +++ b/Oqtane.Client/Themes/ThemeBase.cs @@ -93,6 +93,7 @@ namespace Oqtane.Themes // url methods + // navigate url public string NavigateUrl() { return NavigateUrl(PageState.Page.Path); @@ -108,31 +109,78 @@ namespace Oqtane.Themes return NavigateUrl(PageState.Page.Path, refresh); } + public string NavigateUrl(string path, string querystring) + { + return Utilities.NavigateUrl(PageState.Alias.Path, path, querystring); + } + + public string NavigateUrl(string path, Dictionary querystring) + { + return NavigateUrl(path, Utilities.CreateQueryString(querystring)); + } + public string NavigateUrl(string path, bool refresh) { - return Utilities.NavigateUrl(PageState.Alias.Path, path, refresh ? "refresh" : ""); + return NavigateUrl(path, refresh ? "refresh" : ""); } - public string NavigateUrl(string path, string parameters) + public string NavigateUrl(int moduleid, string action) { - return Utilities.NavigateUrl(PageState.Alias.Path, path, parameters); + return EditUrl(moduleid, action, ""); } + public string NavigateUrl(int moduleid, string action, string querystring) + { + return EditUrl(PageState.Page.Path, moduleid, action, querystring); + } + + public string NavigateUrl(int moduleid, string action, Dictionary querystring) + { + return EditUrl(PageState.Page.Path, moduleid, action, Utilities.CreateQueryString(querystring)); + } + + public string NavigateUrl(string path, int moduleId, string action) + { + return EditUrl(path, moduleId, action, ""); + } + + public string NavigateUrl(string path, int moduleid, string action, string querystring) + { + return EditUrl(path, moduleid, action, querystring); + } + + public string NavigateUrl(string path, int moduleid, string action, Dictionary querystring) + { + return EditUrl(path, moduleid, action, querystring); + } + + // edit url public string EditUrl(int moduleid, string action) { return EditUrl(moduleid, action, ""); } - public string EditUrl(int moduleid, string action, string parameters) + public string EditUrl(int moduleid, string action, string querystring) { - return EditUrl(PageState.Page.Path, moduleid, action, parameters); + return EditUrl(PageState.Page.Path, moduleid, action, querystring); } - public string EditUrl(string path, int moduleid, string action, string parameters) + public string EditUrl(int moduleid, string action, Dictionary querystring) { - return Utilities.EditUrl(PageState.Alias.Path, path, moduleid, action, parameters); + return EditUrl(PageState.Page.Path, moduleid, action, querystring); } + public string EditUrl(string path, int moduleid, string action, string querystring) + { + return Utilities.EditUrl(PageState.Alias.Path, path, moduleid, action, querystring); + } + + public string EditUrl(string path, int moduleid, string action, Dictionary querystring) + { + return EditUrl(path, moduleid, action, Utilities.CreateQueryString(querystring)); + } + + // file url public string FileUrl(string folderpath, string filename) { return FileUrl(folderpath, filename, false); @@ -152,6 +200,7 @@ namespace Oqtane.Themes return Utilities.FileUrl(PageState.Alias, fileid, download); } + // image url public string ImageUrl(int fileid, int width, int height) { return ImageUrl(fileid, width, height, ""); diff --git a/Oqtane.Shared/Shared/Utilities.cs b/Oqtane.Shared/Shared/Utilities.cs index 408e889c..6e8f3933 100644 --- a/Oqtane.Shared/Shared/Utilities.cs +++ b/Oqtane.Shared/Shared/Utilities.cs @@ -23,12 +23,13 @@ namespace Oqtane.Shared public static (string UrlParameters, string Querystring, string Fragment) ParseParameters(string parameters) { - // /urlparameters /urlparameters?Id=1 /urlparameters#5 /urlparameters?Id=1#5 /urlparameters?reload#5 - // Id=1 Id=1#5 reload#5 reload + // /urlparameters /urlparameters?id=1 /urlparameters#5 /urlparameters?id=1#5 /urlparameters?reload#5 + // ?id=1 ?id=1#5 ?reload#5 ?reload + // id=1 id=1#5 reload#5 reload // #5 // create absolute url to convert to Uri - parameters = (!parameters.StartsWith("/") && !parameters.StartsWith("#") ? "?" : "") + parameters; + parameters = (!parameters.StartsWith("/") && !parameters.StartsWith("#") && !parameters.StartsWith("?") ? "?" : "") + parameters; parameters = Constants.PackageRegistryUrl + parameters; var uri = new Uri(parameters); var querystring = uri.Query.Replace("?", "");