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)); }
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")); }
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)); }
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]); })); }