diff --git a/RMuseum/Services/Implementation/GanjoorService.cs b/RMuseum/Services/Implementation/GanjoorService.cs
index d4642292..c7380b4c 100644
--- a/RMuseum/Services/Implementation/GanjoorService.cs
+++ b/RMuseum/Services/Implementation/GanjoorService.cs
@@ -2098,6 +2098,31 @@ namespace RMuseum.Services.Implementation
}
}
+ private async Task _UpdatePageChildrenTitleAndUrl(GanjoorPage dbPage)
+ {
+ var children = await _context.GanjoorPages.Where(p => p.ParentId == dbPage.Id).ToListAsync();
+ foreach(var child in children)
+ {
+ child.FullUrl = dbPage.FullUrl + "/" + child.UrlSlug;
+ child.FullTitle = dbPage.FullTitle + " » " + child.Title;
+
+ if(child.GanjoorPageType == GanjoorPageType.PoemPage)
+ {
+ GanjoorPoem poem = await _context.GanjoorPoems.Where(p => p.Id == child.Id).SingleAsync();
+ poem.FullTitle = child.FullTitle;
+ poem.FullUrl = child.FullUrl;
+
+ _context.GanjoorPoems.Update(poem);
+ }
+
+ await _UpdatePageChildrenTitleAndUrl(child);
+
+ CacheCleanForPageByUrl(child.FullUrl);
+ }
+ _context.GanjoorPages.UpdateRange(children);
+ await _context.SaveChangesAsync();
+ }
+
///
/// modify page
///
@@ -2143,8 +2168,27 @@ namespace RMuseum.Services.Implementation
_context.GanjoorPageSnapshots.Add(snapshot);
await _context.SaveChangesAsync();
- dbPage.Title = pageData.Title;
- dbPage.UrlSlug = pageData.UrlSlug;
+
+
+ if (dbPage.Title != pageData.Title || dbPage.UrlSlug != pageData.UrlSlug)
+ {
+ dbPage.Title = pageData.Title;
+ dbPage.UrlSlug = pageData.UrlSlug;
+
+ if (dbPage.ParentId != null)
+ {
+ GanjoorPage parent = await _context.GanjoorPages.AsNoTracking().Where(p => p.Id == dbPage.ParentId).SingleAsync();
+ dbPage.FullUrl = parent.FullUrl + "/" + pageData.UrlSlug;
+ dbPage.FullTitle = parent.FullTitle + " » " + pageData.Title;
+ }
+ else
+ {
+ dbPage.FullUrl = "/" + pageData.UrlSlug;
+ dbPage.FullTitle = pageData.Title;
+ }
+ await _UpdatePageChildrenTitleAndUrl(dbPage);
+ }
+
dbPage.HtmlText = pageData.HtmlText;
_context.GanjoorPages.Update(dbPage);
@@ -2177,6 +2221,10 @@ namespace RMuseum.Services.Implementation
dbPoem.OldTagPageUrl = pageData.OldTagPageUrl;
dbPoem.HtmlText = pageData.HtmlText;
+ dbPoem.Title = pageData.Title;
+ dbPoem.UrlSlug = pageData.UrlSlug;
+ dbPoem.FullUrl = dbPage.FullUrl;
+ dbPoem.FullTitle = dbPoem.FullTitle;
List verses = _extractVersesFromPoemHtmlText(id, pageData.HtmlText);