Example #1
0
        public async Task <IActionResult> Entry(string submission, string title, string id, string container)
        {
            var contentItem = await _contentManager.NewAsync(_id);

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

            var    subObject  = JObject.Parse(submission);
            string guid       = contentItem.ContentItemId;
            string subTitle   = title + " " + DateTime.Now.ToUniversalTime().ToString() + " " + guid;
            var    advFormSub = new AdvancedFormSubmissions(subObject["data"].ToString(),
                                                            subObject["metadata"].ToString(), subTitle, container);
            var titlePart = new TitlePart(subTitle);

            contentItem.Content.AdvancedFormSubmissions = JToken.FromObject(advFormSub);
            contentItem.Content.TitlePart          = JToken.FromObject(titlePart);
            contentItem.Content.AutoroutePart.Path = CreatePath(title, guid);

            if (!ModelState.IsValid)
            {
                _session.Cancel();
                return(StatusCode(StatusCodes.Status406NotAcceptable));
            }

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

            await _contentManager.PublishAsync(contentItem);

            return(StatusCode(StatusCodes.Status201Created));
        }
        public async Task <IActionResult> Entry(string submission, string title, string id, string container, string header, string footer, string description, string tag, string submissionId, string instructions)
        {
            ContentItem contentItem;

            if (!string.IsNullOrWhiteSpace(submissionId))
            {
                contentItem = await _contentManager.GetAsync(submissionId, VersionOptions.Latest);
            }
            else
            {
                contentItem = await _contentManager.NewAsync(_id);
            }
            if (!await _authorizationService.AuthorizeAsync(User, Permissions.SubmitForm, contentItem))
            {
                return(Unauthorized());
            }

            var    subObject  = JObject.Parse(submission);
            string guid       = contentItem.ContentItemId;
            string subTitle   = title + " " + DateTime.Now.ToUniversalTime().ToString() + " " + guid;
            var    advFormSub = new AdvancedFormSubmissions(subObject["data"].ToString(),
                                                            subObject["metadata"].ToString(), subTitle, container, header, footer, description, tag, instructions);

            contentItem.Content.AdvancedFormSubmissions = JToken.FromObject(advFormSub);
            contentItem.DisplayText = subTitle;
            contentItem.Content.AutoroutePart.Path = CreatePath(title, guid);

            if (!ModelState.IsValid)
            {
                _session.Cancel();
                return(StatusCode(StatusCodes.Status406NotAcceptable));
            }

            if (!string.IsNullOrWhiteSpace(submissionId))
            {
                await _contentManager.UpdateAsync(contentItem);
            }
            else
            {
                await _contentManager.CreateAsync(contentItem, VersionOptions.Draft);
            }

            await _contentManager.PublishAsync(contentItem);

            return(StatusCode(StatusCodes.Status201Created));
        }
Example #3
0
        public async Task <IActionResult> SubmissionPublish(AdvancedFormViewModel model, string returnUrl = "")
        {
            ContentItem content;

            if (!string.IsNullOrWhiteSpace(model.SubmissionId))
            {
                content = await _contentManager.GetAsync(model.SubmissionId, VersionOptions.Latest);
            }
            else
            {
                content = await _contentManager.NewAsync(_id);

                await _contentManager.CreateAsync(content, VersionOptions.Draft);
            }

            if (string.IsNullOrWhiteSpace(model.Owner))
            {
                model.Owner = User.Identity.Name;
            }

            string guid      = content.ContentItemId;
            string subTitle  = model.Title;
            var    subObject = JObject.Parse(model.Submission);
            var    viewModel = new AdvancedFormSubmissions(model.Submission, model.Metadata, subTitle, model.Owner, model.Status, model.AdminSubmission, model.ApplicationLocation, model.FormFields, model.AdvancedFormId);

            await EditPOST(content.ContentItemId, content.DisplayText, model.Title, viewModel, async contentItem =>
            {
                await _contentManager.PublishAsync(contentItem);

                var typeDefinition = _contentDefinitionManager.GetTypeDefinition(contentItem.ContentType);

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

            if (!string.IsNullOrWhiteSpace(returnUrl))
            {
                return(Redirect(returnUrl));
            }

            return(Redirect("/AdvancedForms/Admin/Submissions"));
        }
Example #4
0
        private async Task <IActionResult> EditPOST(string contentItemId, string displayText, string title, AdvancedFormSubmissions viewModel, Func <ContentItem, Task> conditionallyPublish)
        {
            var contentItem = await _contentManager.GetAsync(contentItemId, VersionOptions.DraftRequired);

            if (contentItem == null)
            {
                return(NotFound());
            }

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

            string guid = contentItem.ContentItemId;

            contentItem.Content.AdvancedFormSubmissions = JToken.FromObject(viewModel);
            contentItem.DisplayText = displayText;
            contentItem.Author      = User.Identity.Name;
            contentItem.Owner       = viewModel.Owner;
            contentItem.Content.AutoroutePart.Path = CreatePath(title, guid);

            await conditionallyPublish(contentItem);

            // The content item needs to be marked as saved (again) in case the drivers or the handlers have
            // executed some query which would flush the saved entities. In this case the changes happening in handlers
            // would not be taken into account.
            _session.Save(contentItem);


            var typeDefinition = _contentDefinitionManager.GetTypeDefinition(contentItem.ContentType);

            return(Ok(contentItem));
        }
Example #5
0
        public async Task <IActionResult> Entry(string submission, string title, string id, string submissionId, string owner, bool isDraft, string group)
        {
            ContentItem content;
            string      adminSubmission = string.Empty;

            if (!string.IsNullOrWhiteSpace(submissionId))
            {
                content = await _contentManager.GetAsync(submissionId, VersionOptions.Latest);

                adminSubmission = content.Content.AdvancedFormSubmissions.AdminSubmission != null?content.Content.AdvancedFormSubmissions.AdminSubmission.Html.ToString() : null;
            }
            else
            {
                content = await _contentManager.NewAsync(_id);

                await _contentManager.CreateAsync(content, VersionOptions.Draft);
            }

            if (!group.Contains("Anonymous") && !await _authorizationService.AuthorizeAsync(User, Permissions.SubmitForm, content))
            {
                return(Unauthorized());
            }

            var formContent = await _contentManager.GetAsync(id, VersionOptions.Latest);

            string adminContainer = formContent.Content.AdvancedForm.AdminContainer.Html != null?JsonConvert.SerializeObject(formContent.Content.AdvancedForm.AdminContainer.Html) : String.Empty;

            string formFields = formContent.Content.AdvancedForm.FormFields.Html != null?JsonConvert.SerializeObject(formContent.Content.AdvancedForm.FormFields.Html) : String.Empty;

            string metadata = string.Empty, data, status = string.Empty;
            var    query = _session.Query <ContentItem, ContentItemIndex>();

            if (isDraft)
            {
                data = submission;
                var pageOfContentItems = await query.Where(o => o.ContentType == "AdvancedFormStatus" && o.DisplayText == "Draft" && (o.Latest || o.Published)).ListAsync();

                foreach (var item in pageOfContentItems)
                {
                    status = item.ContentItemId;
                }
            }
            else
            {
                var subObject = JObject.Parse(submission);
                metadata = subObject["metadata"].ToString();
                data     = subObject["data"].ToString();
                var pageOfContentItems = await query.Where(o => o.ContentType == "AdvancedFormStatus" && o.DisplayText == "Submitted" && (o.Latest || o.Published)).ListAsync();

                foreach (var item in pageOfContentItems)
                {
                    status = item.ContentItemId;
                }
            }

            if (string.IsNullOrWhiteSpace(owner) && !string.IsNullOrEmpty(User.Identity.Name))
            {
                owner = User.Identity.Name;
            }
            string guid     = content.ContentItemId;
            string subTitle = title;
            string Location = string.Empty;

            if (adminContainer != null)
            {
                ContentHelper helper = new ContentHelper(_contentManager, _session, _contentDefinitionManager, _contentAliasManager);
                Location = helper.GetInputValue(data, "applicationLocation");
                if ((Location.StartsWith("{") && Location.EndsWith("}")))
                {
                    var obj = JToken.Parse(Location);
                    Location = obj["formatted_address"].ToString();
                }
                if (string.IsNullOrEmpty(adminSubmission))
                {
                    adminSubmission = "{\r\n  \"doNotMapLocation\": false\r\n}";
                }
            }
            string displayText = string.Empty;

            if (string.IsNullOrEmpty(Location))
            {
                displayText = string.Format("{0} by {1}, Created Date: {2}", title, owner, content.CreatedUtc.Value.ToString("MM/dd/yyyy"));
            }
            else
            {
                displayText = string.Format("{0}, {1} by {2}, Created Date: {3}", title, Location, owner, content.CreatedUtc.Value.ToString("MM/dd/yyyy"));
            }

            var viewModel = new AdvancedFormSubmissions(data, metadata, subTitle, owner, status, adminSubmission, Location, formFields, formContent.ContentItemId);

            return(await EditPOST(content.ContentItemId, displayText, title, viewModel, async contentItem =>
            {
                if (!isDraft)
                {
                    await _contentManager.PublishAsync(contentItem);
                }

                var typeDefinition = _contentDefinitionManager.GetTypeDefinition(contentItem.ContentType);

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