Skip to content

Commit 8aa1e9b

Browse files
authored
Merge pull request #119 from valadas/url-placeholder-fix
Fixed an issue where edit urls could get mangled
2 parents 136b547 + 8c494ab commit 8aa1e9b

File tree

3 files changed

+10
-53
lines changed

3 files changed

+10
-53
lines changed

Components/BaseController.cs

Lines changed: 0 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -89,44 +89,11 @@ public PortalInfo PortalInfo
8989

9090
protected int PortalId { get; set; }
9191

92-
93-
public string EditUrlPattern { get; set; }
94-
9592
public void Initialise(ModuleInstanceContext context)
9693
{
9794
_moduleSettings = context.Settings;
9895
Configuration = context.Configuration;
9996
User = context.PortalSettings.UserInfo;
100-
101-
EditUrlPattern = context.EditUrl( DataTableColumn.RowId.ToString(CultureInfo.InvariantCulture), "{0}","edit");
102-
}
103-
104-
/// <summary>
105-
/// Sanitizes a URL by ensuring it has only one question mark separator between the base URL and query parameters.
106-
/// This prevents duplicate question marks when formatting URL templates with parameters.
107-
/// </summary>
108-
/// <param name="url">The URL to sanitize</param>
109-
/// <returns>A sanitized URL with proper query string formatting</returns>
110-
public static string SanitizeUrl(string url)
111-
{
112-
if (string.IsNullOrEmpty(url))
113-
return url;
114-
115-
// Find the first occurrence of '?'
116-
var firstQuestionMarkIndex = url.IndexOf('?');
117-
118-
if (firstQuestionMarkIndex == -1)
119-
return url; // No query parameters, return as-is
120-
121-
// Split into base URL and query parameters
122-
var baseUrl = url.Substring(0, firstQuestionMarkIndex);
123-
var queryPart = url.Substring(firstQuestionMarkIndex + 1);
124-
125-
// Remove any additional '?' characters from the query part and replace with '&'
126-
queryPart = queryPart.Replace('?', '&');
127-
128-
// Reconstruct the URL
129-
return baseUrl + "?" + queryPart;
13097
}
13198

13299
public void Initialise(int moduleId, int tabId, UserInfo user)

Components/UserDefinedTableController.cs

Lines changed: 10 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,3 @@
1-
using System;
2-
using System.Collections.Generic;
3-
using System.Data;
4-
using System.Globalization;
5-
using System.Linq;
6-
using System.Threading;
7-
using System.Web;
8-
using System.Xml;
91
using DotNetNuke.Abstractions;
102
using DotNetNuke.Abstractions.Portals;
113
using DotNetNuke.Common;
@@ -15,6 +7,15 @@
157
using DotNetNuke.Modules.UserDefinedTable.Components;
168
using DotNetNuke.Services.Localization;
179
using DotNetNuke.UI.Modules;
10+
using System;
11+
using System.Collections.Generic;
12+
using System.Data;
13+
using System.Globalization;
14+
using System.Linq;
15+
using System.Runtime.Remoting.Contexts;
16+
using System.Threading;
17+
using System.Web;
18+
using System.Xml;
1819

1920
namespace DotNetNuke.Modules.UserDefinedTable
2021
{
@@ -83,8 +84,6 @@ void SetEditLinksAndVisibilityBasedOnPermissions(DataSet ds)
8384

8485
ds.Tables[DataSetTableName.Data].Columns.Add(DataTableColumn.EditLink, typeof (string));
8586

86-
var urlPattern = EditUrlPattern ?? this.NavigationManager.NavigateURL(TabId, "edit", "mid=" + ModuleId, DataTableColumn.RowId + "={0}");
87-
8887
foreach (DataRow row in ds.Tables[DataSetTableName.Data].Rows)
8988
{
9089
var rowCreatorUserName = row[createdByColumnName].ToString();
@@ -93,8 +92,7 @@ void SetEditLinksAndVisibilityBasedOnPermissions(DataSet ds)
9392
rowCreatorUserName != Definition.NameOfAnonymousUser);
9493
if (security.IsAllowedToEditRow(isRowOwner))
9594
{
96-
var formattedUrl = string.Format(urlPattern, row[DataTableColumn.RowId]);
97-
row[DataTableColumn.EditLink] = BaseController.SanitizeUrl(formattedUrl);
95+
row[DataTableColumn.EditLink] = this.NavigationManager.NavigateURL(TabId, "edit", $"mid={ModuleId}", $"{DataTableColumn.RowId}={row[DataTableColumn.RowId]}");
9896
}
9997
}
10098
//Adjust visibility to actual permissions

DotNetNuke.Modules.UserDefinedTable.xml

Lines changed: 0 additions & 8 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)