在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.添加徽章如下(也是找到对应的代码用状态进行添加和更改)。
注:修改页面也是更新建页面的差不多,照保存草稿按钮的代码进行修改。
又学会了一件,很有成就感。