private async Task <IActionResult> CreatePOST(AdvancedFormViewModel viewModel, Func <ContentItem, Task> conditionallyPublish) { var contentItem = await _contentManager.NewAsync(_id); if (!await _authorizationService.AuthorizeAsync(User, Permissions.ManageAdvancedForms, contentItem)) { return(Unauthorized()); } var advForm = new AdvancedForm(viewModel.Description, viewModel.Instructions, viewModel.Container, viewModel.Title, viewModel.Header, viewModel.Footer, viewModel.Type, viewModel.AdminContainer, viewModel.HideFromListing, viewModel.IsGlobalHeader, viewModel.IsGlobalFooter, viewModel.Group, viewModel.FormFields); contentItem.Content.AdvancedForm = JToken.FromObject(advForm); contentItem.DisplayText = viewModel.Title; var path = CreatePath(viewModel.Title); contentItem.Content.AutoroutePart.Path = path; contentItem.Alter <OrchardCore.Autoroute.Model.AutoroutePart>(x => x.Path = path); if (!ModelState.IsValid) { _session.Cancel(); return(View(viewModel)); } await _contentManager.CreateAsync(contentItem, VersionOptions.Draft); await conditionallyPublish(contentItem); return(RedirectToAction("Edit", new RouteValueDictionary { { "ContentItemId", contentItem.ContentItemId } })); }
public async Task <ActionResult> ListPOST(ContentOptionsViewModel options, IEnumerable <int> itemIds) { if (itemIds?.Count() > 0) { var checkedContentItems = await _session.Query <ContentItem, ContentItemIndex>().Where(x => x.DocumentId.IsIn(itemIds) && x.Latest).ListAsync(); switch (options.BulkAction) { case ContentsBulkAction.None: break; case ContentsBulkAction.PublishNow: foreach (var item in checkedContentItems) { if (!await _authorizationService.AuthorizeAsync(User, CommonPermissions.PublishContent, item)) { _notifier.Warning(H["Couldn't publish selected content."]); _session.Cancel(); return(Forbid()); } await _contentManager.PublishAsync(item); } _notifier.Success(H["Content successfully published."]); break; case ContentsBulkAction.Unpublish: foreach (var item in checkedContentItems) { if (!await _authorizationService.AuthorizeAsync(User, CommonPermissions.PublishContent, item)) { _notifier.Warning(H["Couldn't unpublish selected content."]); _session.Cancel(); return(Forbid()); } await _contentManager.UnpublishAsync(item); } _notifier.Success(H["Content successfully unpublished."]); break; case ContentsBulkAction.Remove: foreach (var item in checkedContentItems) { if (!await _authorizationService.AuthorizeAsync(User, CommonPermissions.DeleteContent, item)) { _notifier.Warning(H["Couldn't remove selected content."]); _session.Cancel(); return(Forbid()); } await _contentManager.RemoveAsync(item); } _notifier.Success(H["Content successfully removed."]); break; default: throw new ArgumentOutOfRangeException(); } } return(RedirectToAction("List")); }