public PageStruct GetStructFromPage( IPage page, string postUrl, bool commentsOpen ) { var p = new PageStruct(); p.commentPolicy = commentsOpen ? "1" : "0"; if (!string.IsNullOrWhiteSpace(page.DraftContent)) { p.description = page.DraftContent; } else { p.description = page.Content; } p.link = postUrl; if (page.PubDate.HasValue) { p.pageUtcDate = page.PubDate.Value; p.pageDate = page.PubDate.Value; } p.pageId = page.Id; p.pageOrder = page.PageOrder.ToString(CultureInfo.InvariantCulture); p.pageParentId = page.ParentId; p.title = page.Title; p.parentTitle = page.ParentSlug; return(p); }
public Page GetPageFromStruct(PageStruct pageStruct) { var p = new Page(); p.Content = pageStruct.description; p.Title = pageStruct.title; p.Id = pageStruct.pageId; p.ParentId = pageStruct.pageParentId; // p.IsPublished = pageStruct.published; if (pageStruct.pageUtcDate != null) { p.PubDate = pageStruct.pageUtcDate; } p.Slug = pageStruct.link; if (!string.IsNullOrEmpty(pageStruct.pageOrder)) { p.PageOrder = Convert.ToInt32(pageStruct.pageOrder); } return(p); }
public PageStruct GetStructFromPage( IPage page, string postUrl, bool commentsOpen ) { var p = new PageStruct(); p.commentPolicy = commentsOpen ? "1" : "0"; p.description = page.Content; p.link = postUrl; p.pageUtcDate = page.PubDate; p.pageDate = page.PubDate; p.pageId = page.Id; p.pageOrder = page.PageOrder.ToString(CultureInfo.InvariantCulture); p.pageParentId = page.ParentId; p.title = page.Title; p.parentTitle = page.ParentSlug; return(p); }
public async Task <bool> EditPage( string blogId, string pageId, string userName, string password, PageStruct page, bool publish) { var existing = await pageService.GetPage( blogId, pageId, userName, password ).ConfigureAwait(false); if (existing == null) { return(false); } var update = mapper.GetPageFromStruct(page); existing.Content = update.Content; existing.PageOrder = update.PageOrder; existing.ParentId = update.ParentId; existing.Title = update.Title; await pageService.Update( blogId, userName, password, existing, publish ).ConfigureAwait(false); return(true); }
public async Task <string> NewPage( string blogId, string userName, string password, PageStruct newPage, bool publish) { var page = mapper.GetPageFromStruct(newPage); page.ProjectId = blogId; page.Id = Guid.NewGuid().ToString(); //page.Author = authorDisplayName; page.IsPublished = publish; await pageService.Create( blogId, userName, password, page, publish ).ConfigureAwait(false); return(page.Id); }
public async Task <bool> EditPage( string blogId, string pageId, string userName, string password, PageStruct pageStruct, bool publish) { var permission = await _security.ValidatePermissions( blogId, userName, password, CancellationToken.None ).ConfigureAwait(false); if (!permission.CanEditPages) { _log.LogWarning($"user {userName} cannot edit pages"); return(false); } var page = await _pageService.GetPage(pageId).ConfigureAwait(false); if (page == null) { _log.LogError($"page not found for id {pageId}"); return(false); } if (!string.IsNullOrWhiteSpace(page.TemplateKey)) { _log.LogError($"page {pageId} uses a content template and cannot be edited via metaweblog api"); return(false); } if (page.ContentType != ProjectConstants.HtmlContentType) { _log.LogError($"page {pageId} uses a content type {page.ContentType} and cannot be edited via metaweblog api"); return(false); } var history = page.CreateHistory(permission.DisplayName); var update = _mapper.GetPageFromStruct(pageStruct); if (publish) { page.Content = update.Content; page.IsPublished = true; if (!page.PubDate.HasValue) { page.PubDate = DateTime.UtcNow; } page.DraftAuthor = null; page.DraftContent = null; page.DraftPubDate = null; } else { page.DraftContent = update.Content; } page.PageOrder = update.PageOrder; page.ParentId = update.ParentId; if (!string.IsNullOrWhiteSpace(page.ParentId)) { var parent = await _pageService.GetPage(page.ParentId); if (parent != null) { page.ParentSlug = parent.Slug; } } else { page.ParentSlug = null; } page.Title = update.Title; page.LastModifiedByUser = permission.DisplayName; await _contentHistoryCommands.Create(blogId, history); var convertToRelativeUrls = true; await _pageService.Update(page, convertToRelativeUrls).ConfigureAwait(false); _pageService.ClearNavigationCache(); if (publish) { await _pageService.FirePublishEvent(page); await _contentHistoryCommands.DeleteDraftHistory(blogId, history.ContentId); } return(true); }
public async Task <string> NewPage( string blogId, string userName, string password, PageStruct newPage, bool publish) { var permission = await _security.ValidatePermissions( blogId, userName, password, CancellationToken.None ).ConfigureAwait(false); if (!permission.CanEditPages) { _log.LogWarning($"user {userName} cannot edit pages"); return(null); } var page = _mapper.GetPageFromStruct(newPage); page.ProjectId = blogId; page.Id = Guid.NewGuid().ToString(); page.CreatedByUser = permission.DisplayName; page.LastModifiedByUser = permission.DisplayName; if (!string.IsNullOrWhiteSpace(page.ParentId)) { var parent = await _pageService.GetPage(page.ParentId); if (parent != null) { page.ParentSlug = parent.Slug; } } else { page.ParentSlug = null; } if (string.IsNullOrWhiteSpace(newPage.pageOrder)) { page.PageOrder = await _pageService.GetNextChildPageOrder(page.ParentSlug).ConfigureAwait(false); } if (publish) { page.IsPublished = true; page.PubDate = DateTime.UtcNow; } else { page.DraftAuthor = page.Author; page.DraftContent = page.Content; page.Content = null; page.IsPublished = false; page.PubDate = null; } var convertToRelativeUrls = true; await _pageService.Create(page, convertToRelativeUrls).ConfigureAwait(false); _pageService.ClearNavigationCache(); if (publish) { await _pageService.FirePublishEvent(page); } return(page.Id); }
private PageStruct GetPage(XElement paramNode) { var temp = new PageStruct(); // Require Title and Description //var title = node.SelectSingleNode("value/struct/member[name='title']"); //var title = node.Descendants("member") // .First(i => (string)i.Attribute("name") == "title"); var titleMember = paramNode.Descendants("member") .FirstOrDefault(p => p.Element("name").Value == "title" ); if (titleMember == null) { throw new MetaWeblogException("06", "Page Struct Element, Title, not Sent."); } temp.title = (titleMember.LastNode as XElement).Value; //var description = node.SelectSingleNode("value/struct/member[name='description']"); //var description = node.Descendants("member") // .First(i => (string)i.Attribute("name") == "description"); var descMember = paramNode.Descendants("member") .FirstOrDefault(p => p.Element("name").Value == "description" ); if (descMember == null) { throw new MetaWeblogException("06", "Page Struct Element, Description, not Sent."); } temp.description = (descMember.LastNode as XElement).Value; //var link = node.SelectSingleNode("value/struct/member[name='link']"); //if (link != null) //{ // temp.link = node.SelectSingleNode("value/struct/member[name='link']") == null ? null : link.LastChild.InnerText; //} //var link = node.Descendants("member") // .First(i => (string)i.Attribute("name") == "link"); var linkMember = paramNode.Descendants("member") .FirstOrDefault(p => p.Element("name").Value == "link" ); temp.link = linkMember == null ? string.Empty : (linkMember.LastNode as XElement).Value; var slugMember = paramNode.Descendants("member") .FirstOrDefault(p => p.Element("name").Value == "wp_slug" ); temp.slug = slugMember == null ? string.Empty : (slugMember.LastNode as XElement).Value; //var dateCreated = node.SelectSingleNode("value/struct/member[name='dateCreated']"); //var dateCreated = node.Descendants("member") // .First(i => (string)i.Attribute("name") == "dateCreated"); var dateCreatedMember = paramNode.Descendants("member") .FirstOrDefault(p => p.Element("name").Value == "dateCreated" ); if (dateCreatedMember != null) { try { var tempDate = (dateCreatedMember.LastNode as XElement).Value; temp.pageDate = DateTime.ParseExact( tempDate, "yyyyMMdd'T'HH':'mm':'ss", CultureInfo.InvariantCulture, DateTimeStyles.AssumeUniversal); } catch (Exception ex) { // Ignore PubDate Error if (log != null) { log.LogError("swallowed pub date error", ex); } } } // Keywords //var keywords = node.SelectSingleNode("value/struct/member[name='mt_keywords']"); //temp.mt_keywords = keywords == null ? string.Empty : keywords.LastChild.InnerText; //var keywords = node.Descendants("member") // .First(i => (string)i.Attribute("name") == "mt_keywords"); var keywordsMember = paramNode.Descendants("member") .FirstOrDefault(p => p.Element("name").Value == "mt_keywords" ); temp.mt_keywords = keywordsMember == null ? string.Empty : (keywordsMember.LastNode as XElement).Value; //var pageParentId = node.SelectSingleNode("value/struct/member[name='wp_page_parent_id']"); //temp.pageParentID = pageParentId == null ? null : pageParentId.LastChild.InnerText; //var pageParentId = node.Descendants("member") // .First(i => (string)i.Attribute("name") == "wp_page_parent_id"); var parentIdMember = paramNode.Descendants("member") .FirstOrDefault(p => p.Element("name").Value == "wp_page_parent_id" ); temp.pageParentId = parentIdMember == null ? null : (parentIdMember.LastNode as XElement).Value; //var pageOrder = node.SelectSingleNode("value/struct/member[name='wp_page_order']"); //temp.pageOrder = pageOrder == null ? null : pageOrder.LastChild.InnerText; //var pageOrder = node.Descendants("member") // .First(i => (string)i.Attribute("name") == "wp_page_order"); var pageOrderMember = paramNode.Descendants("member") .FirstOrDefault(p => p.Element("name").Value == "wp_page_order" ); temp.pageOrder = pageOrderMember == null ? null : (pageOrderMember.LastNode as XElement).Value; //var allowComments = node.SelectSingleNode("value/struct/member[name='mt_allow_comments']"); //temp.commentPolicy = allowComments == null ? string.Empty : allowComments.LastChild.InnerText; //var allowComments = node.Descendants("member") // .First(i => (string)i.Attribute("name") == "mt_allow_comments"); var allowCommentsMember = paramNode.Descendants("member") .FirstOrDefault(p => p.Element("name").Value == "mt_allow_comments" ); temp.commentPolicy = allowCommentsMember == null ? string.Empty : (allowCommentsMember.LastNode as XElement).Value; return(temp); }
public async Task <bool> EditPage( string blogId, string pageId, string userName, string password, PageStruct pageStruct, bool publish) { var permission = await _security.ValidatePermissions( blogId, userName, password, CancellationToken.None ).ConfigureAwait(false); if (!permission.CanEditPages) { _log.LogWarning($"user {userName} cannot edit pages"); return(false); } var page = await _pageService.GetPage(pageId).ConfigureAwait(false); if (page == null) { _log.LogError($"page not found for id {pageId}"); return(false); } if (!string.IsNullOrWhiteSpace(page.TemplateKey)) { throw new InvalidOperationException("templated pages cannot be edited via metaweblog api"); } if (page.ContentType != ProjectConstants.HtmlContentType) { throw new InvalidOperationException("non html content cannot be edited via metaweblog api"); } var history = page.CreateHistory(permission.DisplayName); var update = _mapper.GetPageFromStruct(pageStruct); var utcPubDate = _timeZoneHelper.ConvertToUtc(pageStruct.pageDate, permission.TimeZoneId); if (publish) { if (utcPubDate < DateTime.UtcNow) { page.IsPublished = true; if (utcPubDate.Year != 1) // no date specified { page.PubDate = utcPubDate; } if (!page.PubDate.HasValue) { page.PubDate = DateTime.UtcNow; } page.Content = update.Content; page.DraftAuthor = null; page.DraftContent = null; page.DraftPubDate = null; } else { //future date needs to be draft, it will auto publish after pub date page.DraftAuthor = update.Author; page.DraftContent = update.Content; page.DraftPubDate = utcPubDate; } } else { page.DraftAuthor = update.Author; page.DraftContent = update.Content; if (utcPubDate > DateTime.UtcNow) { page.DraftPubDate = utcPubDate; } } page.PageOrder = update.PageOrder; page.ParentId = update.ParentId; if (!string.IsNullOrWhiteSpace(page.ParentId)) { var parent = await _pageService.GetPage(page.ParentId); if (parent != null) { page.ParentSlug = parent.Slug; } } else { page.ParentSlug = null; } page.Title = update.Title; page.LastModifiedByUser = permission.DisplayName; await _contentHistoryCommands.Create(blogId, history).ConfigureAwait(false); await _pageUrlResolver.ConvertMediaToRelativeUrls(page).ConfigureAwait(false); await _pageService.Update(page).ConfigureAwait(false); await _navigationCache.ClearTreeCache(); if (publish) { await _pageService.FirePublishEvent(page).ConfigureAwait(false); await _contentHistoryCommands.DeleteDraftHistory(blogId, history.ContentId).ConfigureAwait(false); } return(true); }
public async Task <string> NewPage( string blogId, string userName, string password, PageStruct newPage, bool publish) { var permission = await _security.ValidatePermissions( blogId, userName, password, CancellationToken.None ).ConfigureAwait(false); if (!permission.CanEditPages) { _log.LogWarning($"user {userName} cannot edit pages"); return(null); } var page = _mapper.GetPageFromStruct(newPage); page.ProjectId = blogId; page.Id = Guid.NewGuid().ToString(); page.CreatedByUser = permission.DisplayName; page.LastModifiedByUser = permission.DisplayName; if (!string.IsNullOrWhiteSpace(page.ParentId)) { var parent = await _pageService.GetPage(page.ParentId).ConfigureAwait(false); if (parent != null) { page.ParentSlug = parent.Slug; } } else { page.ParentSlug = null; } if (string.IsNullOrWhiteSpace(newPage.pageOrder)) { page.PageOrder = await _pageService.GetNextChildPageOrder(page.ParentSlug).ConfigureAwait(false); } var utcPubDate = _timeZoneHelper.ConvertToUtc(newPage.pageDate, permission.TimeZoneId); if (publish) { if (utcPubDate.Year == 1) { //invalid because not supplied utcPubDate = DateTime.UtcNow; } if (utcPubDate < DateTime.UtcNow) { page.IsPublished = true; page.PubDate = utcPubDate; } else { //future date needs to be draft, it will auto publish after pub date page.DraftAuthor = page.Author; page.DraftContent = page.Content; page.DraftPubDate = utcPubDate; page.IsPublished = false; page.PubDate = null; page.Content = null; } } else { page.DraftAuthor = page.Author; page.DraftContent = page.Content; if (utcPubDate > DateTime.UtcNow) { page.DraftPubDate = utcPubDate; } page.Content = null; page.IsPublished = false; page.PubDate = null; } await _pageUrlResolver.ConvertMediaToRelativeUrls(page).ConfigureAwait(false); await _pageService.Create(page).ConfigureAwait(false); await _navigationCache.ClearTreeCache(); if (publish) { await _pageService.FirePublishEvent(page).ConfigureAwait(false); } return(page.Id); }
public Task <bool> EditPage(string blogId, string pageId, string userName, string password, PageStruct page, bool publish) { throw new NotImplementedException(); }