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);
            }
        }
Ejemplo n.º 3
0
        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);
                }
            }
        }