public void Create(MarkdownRepoPart markdownRepoPart, string markdownText, string mdFileRelativePath) { var markdownContentItem = _contentManager.New(markdownRepoPart.ContentType); if (!markdownContentItem.Has(typeof(BodyPart))) { _contentDefinitionManager.AlterTypeDefinition( markdownContentItem.ContentType, cfg => cfg .WithPart("BodyPart", part => part .WithSetting("BodyTypePartSettings.Flavor", "markdown"))); markdownContentItem = _contentManager.New(markdownRepoPart.ContentType); } markdownContentItem.As <BodyPart>().Text = markdownText; var markdownPagePart = markdownContentItem.As <MarkdownPagePart>(); markdownPagePart.MarkdownFilePath = mdFileRelativePath; markdownPagePart.MarkdownRepoId = markdownRepoPart.ContentItem.Id; // Creating the content item draft. _contentManager.Create(markdownContentItem, VersionOptions.Draft); // Firing event so custom extensions can make their own tasks. _markdownPageEventHandler .MarkdownPageDraftCreated(new MarkdownPageDraftCreatedContext { ContentItem = markdownContentItem }); // Publishing the content item. _contentManager.Publish(markdownContentItem); }
public void DeleteAll(MarkdownRepoPart markdownRepoPart) { var correspondingMarkdownPages = _contentManager .Query(markdownRepoPart.ContentType) .Where <MarkdownPagePartRecord>(record => record.MarkdownRepoId == markdownRepoPart.ContentItem.Id) .List(); foreach (var correspondingMarkdownPage in correspondingMarkdownPages) { correspondingMarkdownPage.As <MarkdownPagePart>().DeletionAllowed = true; _contentManager.Remove(correspondingMarkdownPage); } }
private GitHubClient GetGitHubClient(MarkdownRepoPart markdownRepoPart) { var gitHubClient = new GitHubClient(new ProductHeaderValue("Lombiq.RepositoryMarkdownContent")); if (!string.IsNullOrEmpty(markdownRepoPart.AccessToken)) { gitHubClient.Connection.Credentials = new Credentials(markdownRepoPart.AccessToken); } else if (!string.IsNullOrEmpty(markdownRepoPart.Password) && !string.IsNullOrEmpty(markdownRepoPart.Username)) { gitHubClient.Connection.Credentials = new Credentials( markdownRepoPart.Username, markdownRepoPart.Password); } return(gitHubClient); }
public void Delete(MarkdownRepoPart markdownRepoPart, string mdFileRelativePath) { var markdownPagesToDelete = _contentManager .Query(markdownRepoPart.ContentType) .Where <MarkdownPagePartRecord>( record => record.MarkdownRepoId == markdownRepoPart.ContentItem.Id && record.MarkdownFilePath == mdFileRelativePath); // In case of duplicates we delete all of them. foreach (var markdownPageToDelete in markdownPagesToDelete.List()) { markdownPageToDelete.As <MarkdownPagePart>().DeletionAllowed = true; // Firing event so custom extensions can make their own tasks. _markdownPageEventHandler .MarkdownPageRemoving(new MarkdownPageRemovingContext { ContentItem = markdownPageToDelete }); _contentManager.Remove(markdownPageToDelete); } }
public void Modify(MarkdownRepoPart markdownRepoPart, string markdownText, string mdFileRelativePath) { var markdownPagesToModify = _contentManager .Query(markdownRepoPart.ContentType) .Where <MarkdownPagePartRecord>( record => record.MarkdownRepoId == markdownRepoPart.ContentItem.Id && record.MarkdownFilePath == mdFileRelativePath); var first = true; // In case of duplicates we modify one and remove the duplicates. foreach (var markdownPageToModify in markdownPagesToModify.List()) { if (first) { markdownPageToModify.As <BodyPart>().Text = markdownText; // Firing event so custom extensions can make their own tasks. _markdownPageEventHandler .MarkdownPageModified(new MarkdownPageModifiedContext { ContentItem = markdownPageToModify }); first = false; } else { // Firing event so custom extensions can make their own tasks. _markdownPageEventHandler .MarkdownPageRemoving(new MarkdownPageRemovingContext { ContentItem = markdownPageToModify }); _contentManager.Remove(markdownPageToModify); } } }