在Orchardcore中添加一级审核功能

在Orchardcore的OrchardCore.Contents模块中进行更改的(遵守了OrchardCore模块的套路进行更改的)。

1.首先显示按钮:我做了提交按钮和驳回按钮。提交按钮是在新建内容的时候出现所以要在view中找到对应的代码。在Views下的Content.SaveDraftButton.cshtml

这段代码是在新建页面和修改页面上显示的!

2.需要使用数据状态所以要在数据库中添加一个状态(我使用的状态名称是:Examine)在OrchardCore/OrchardCore.ContentManagement.Abstractions/ContentItem.cs中添加Examine状态。

可能会出现报错,是因为状态没能存进数据库中导致的。

3.在OrchardCore.Contents/Controllers/AdminController.cs的代码中找到以下代码。


        [HttpPost, ActionName("Create")]
        [FormValueRequired("submit.Save")]
        public Task<IActionResult> CreatePOST(string id, [Bind(Prefix = "submit.Save")] string submitSave, string returnUrl)
        {
            var stayOnSamePage = submitSave == "submit.SaveAndContinue";
            return CreatePOST(id, returnUrl, stayOnSamePage, 0, contentItem =>
            {
                var typeDefinition = _contentDefinitionManager.GetTypeDefinition(contentItem.ContentType);

                _notifier.Success(string.IsNullOrWhiteSpace(typeDefinition.DisplayName)
                    ? T["Your content draft has been saved."]
                    : T["Your {0} draft has been saved.", typeDefinition.DisplayName]);

                return Task.CompletedTask;
            });
        }

然后把此段代码复制粘贴在下面后进行修改。(这段代码是保存草稿按钮的)

4.把复制粘贴的代码修改成一下代码。

[HttpPost, ActionName("Create")]
        [FormValueRequired("submit.toexamine")]
        public Task<IActionResult> CreateAndToExaminePOST(string id, [Bind(Prefix = "submit.toexamine")] string toexamine, string returnUrl)
        {
            var stayOnSamePage = false;
            return CreatePOST(id, returnUrl, stayOnSamePage, 1, contentItem =>
            {
                var typeDefinition = _contentDefinitionManager.GetTypeDefinition(contentItem.ContentType);

                _notifier.Success(string.IsNullOrWhiteSpace(typeDefinition.DisplayName)
                    ? T["您的内容已提交."]
                    : T["您的 {0} 已提交待审核.", typeDefinition.DisplayName]);

                return Task.CompletedTask;
            });
        }

submit.toexamine是在前端定义的,由于我没做保存并继续的按钮所以在var stayOnSamePage赋值直接给了false。

注:CreatePOST,CreateAndToExaminePOST,CreateAndPublishPOST这三个中都调用了CreatePOST,在CreatePOST中我有添加了一个int类型的状态(tijiao)。

               0===>保存草稿中
               1===>待审核中
               2===>已驳回
               3===>已发布的

5.以下代码是修改CreatePOST的,也就是(按钮)的调用。

 private async Task<IActionResult> CreatePOST(string id, string returnUrl, bool stayOnSamePage,int tijioa, Func<ContentItem, Task> conditionallyPublish)
        {
            var contentItem = await _contentManager.NewAsync(id);

            // Set the current user as the owner to check for ownership permissions on creation
            contentItem.Owner = User.Identity.Name;

            if (!await _authorizationService.AuthorizeAsync(User, Permissions.EditContent, contentItem))
            {
                return Unauthorized();
            }

            var model = await _contentItemDisplayManager.UpdateEditorAsync(contentItem, this, true);

            if (!ModelState.IsValid)
            {
                _session.Cancel();
                return View(model);
            }
            if (tijioa == 0)
            {
                contentItem.Examine = 0;
            }
            else if (tijioa == 1)
            {
                contentItem.Examine = 1;
            }
            else if (tijioa == 3)
            {
                contentItem.Examine = 3;
            }

            await _contentManager.CreateAsync(contentItem, VersionOptions.Draft);
            

            await conditionallyPublish(contentItem);

            if ((!string.IsNullOrEmpty(returnUrl)) && (!stayOnSamePage))
            {
                return LocalRedirect(returnUrl);
            }

            var adminRouteValues = (await _contentManager.PopulateAspectAsync<ContentItemMetadata>(contentItem)).AdminRouteValues;

            if (!string.IsNullOrEmpty(returnUrl))
            {
                adminRouteValues.Add("returnUrl", returnUrl);
            }

            return RedirectToRoute(adminRouteValues);
        }

这样就差不多完成了新建时候的提交按钮。

1.添加徽章如下(也是找到对应的代码用状态进行添加和更改)。

注:修改页面也是更新建页面的差不多,照保存草稿按钮的代码进行修改。

又学会了一件,很有成就感。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值