Merge pull request #43 from oqtane/master

sync
This commit is contained in:
Shaun Walker 2020-07-02 08:56:55 -04:00 committed by GitHub
commit 73c5092e46
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 56 additions and 18 deletions

View File

@ -346,6 +346,12 @@
} }
} }
if (!PagePathIsUnique(page.Path, page.SiteId, _pageList))
{
AddModuleMessage($"A page with path {_path} already exists for the selected parent page. The page path needs to be unique for the selected parent.", MessageType.Warning);
return;
}
Page child; Page child;
switch (_insert) switch (_insert)
{ {
@ -407,4 +413,8 @@
} }
} }
private static bool PagePathIsUnique(string pagePath, int siteId, List<Page> existingPages)
{
return !existingPages.Any(page => page.SiteId == siteId && page.Path == pagePath);
}
} }

View File

@ -333,7 +333,7 @@
_children = new List<Page>(); _children = new List<Page>();
if (_parentid == "-1") if (_parentid == "-1")
{ {
foreach(Page p in PageState.Pages.Where(item => item.ParentId == null)) foreach (Page p in PageState.Pages.Where(item => item.ParentId == null))
{ {
if (UserSecurity.IsAuthorized(PageState.User, PermissionNames.View, p.Permissions)) if (UserSecurity.IsAuthorized(PageState.User, PermissionNames.View, p.Permissions))
{ {
@ -433,6 +433,13 @@
page.Path = parent.Path + "/" + Utilities.GetFriendlyUrl(_path); page.Path = parent.Path + "/" + Utilities.GetFriendlyUrl(_path);
} }
} }
if (!PagePathIsUnique(page.Path, page.SiteId, page.PageId, _pageList))
{
AddModuleMessage($"A page with path {_path} already exists for the selected parent page. The page path needs to be unique for the selected parent.", MessageType.Warning);
return;
}
if (_insert != "=") if (_insert != "=")
{ {
Page child; Page child;
@ -512,4 +519,9 @@
AddModuleMessage("Error Saving Page", MessageType.Error); AddModuleMessage("Error Saving Page", MessageType.Error);
} }
} }
private static bool PagePathIsUnique(string pagePath, int siteId, int pageId, List<Page> existingPages)
{
return !existingPages.Any(page => page.SiteId == siteId && page.Path == pagePath && page.PageId != pageId);
}
} }

View File

@ -116,35 +116,51 @@ namespace Oqtane.Modules
return Utilities.ContentUrl(PageState.Alias, fileid); return Utilities.ContentUrl(PageState.Alias, fileid);
} }
public Dictionary<string, string> GetUrlParameters(string parameterTemplate) public virtual Dictionary<string, string> GetUrlParameters(string parametersTemplate = "")
{ {
var urlParameters = new Dictionary<string, string>(); var urlParameters = new Dictionary<string, string>();
string[] templateSegments;
var templateSegments = parameterTemplate.Split('/', StringSplitOptions.RemoveEmptyEntries);
var parameters = PageState.UrlParameters.Split('/', StringSplitOptions.RemoveEmptyEntries); var parameters = PageState.UrlParameters.Split('/', StringSplitOptions.RemoveEmptyEntries);
var parameterId = 0;
if (parameters.Length == templateSegments.Length) if (string.IsNullOrEmpty(parametersTemplate))
{ {
for (int i = 0; i < parameters.Length; i++) for (int i = 0; i < parameters.Length; i++)
{ {
if (parameters.Length > i) urlParameters.TryAdd("parameter" + i, parameters[i]);
}
}
else
{
templateSegments = parametersTemplate.Split('/', StringSplitOptions.RemoveEmptyEntries);
if (parameters.Length == templateSegments.Length)
{
for (int i = 0; i < parameters.Length; i++)
{ {
if (templateSegments[i] == parameters[i]) if (parameters.Length > i)
{ {
} if (templateSegments[i] == parameters[i])
else if (templateSegments[i].StartsWith("{") && templateSegments[i].EndsWith("}")) {
{ urlParameters.TryAdd("parameter" + parameterId, parameters[i]);
var key = templateSegments[i].Replace("{", ""); parameterId++;
key = key.Replace("}", ""); }
urlParameters.TryAdd(key, parameters[i]); else if (templateSegments[i].StartsWith("{") && templateSegments[i].EndsWith("}"))
} {
else var key = templateSegments[i].Replace("{", "");
{ key = key.Replace("}", "");
i = parameters.Length; urlParameters.TryAdd(key, parameters[i]);
}
else
{
i = parameters.Length;
urlParameters.Clear();
}
} }
} }
} }
} }
return urlParameters; return urlParameters;
} }

View File

@ -21,7 +21,7 @@ namespace Oqtane.Repository
return _db.Notification return _db.Notification
.Where(item => item.SiteId == siteId) .Where(item => item.SiteId == siteId)
.Where(item => item.IsDelivered == false) .Where(item => item.IsDelivered == false)
.Where(item => item.SendOn < System.DateTime.UtcNow) .Where(item => item.SendOn == null || item.SendOn < System.DateTime.UtcNow)
.ToList(); .ToList();
} }