コード例 #1
0
        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 }
            }));
        }
コード例 #2
0
        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"));
        }