diff --git a/src/Orchard.Web/Modules/Orchard.CustomForms/Controllers/ItemController.cs b/src/Orchard.Web/Modules/Orchard.CustomForms/Controllers/ItemController.cs index 450e17037..d953be2f5 100644 --- a/src/Orchard.Web/Modules/Orchard.CustomForms/Controllers/ItemController.cs +++ b/src/Orchard.Web/Modules/Orchard.CustomForms/Controllers/ItemController.cs @@ -152,7 +152,7 @@ namespace Orchard.CustomForms.Controllers { ContentItem contentItem; if (contentId > 0) - contentItem = _contentManager.Get(contentId); + contentItem = _contentManager.Get(contentId,VersionOptions.DraftRequired); else contentItem = _contentManager.New(customForm.ContentType); diff --git a/src/Orchard.Web/Modules/Orchard.CustomForms/Drivers/CustomFormPartDriver.cs b/src/Orchard.Web/Modules/Orchard.CustomForms/Drivers/CustomFormPartDriver.cs index d6b0fd726..28d8a6ea3 100644 --- a/src/Orchard.Web/Modules/Orchard.CustomForms/Drivers/CustomFormPartDriver.cs +++ b/src/Orchard.Web/Modules/Orchard.CustomForms/Drivers/CustomFormPartDriver.cs @@ -87,10 +87,10 @@ namespace Orchard.CustomForms.Drivers { updater.TryUpdateModel(viewModel, Prefix, null, null); // Warn if the custom form is set to save a content item that is viewable by anonymous users (publicly accessible) - if (viewModel.CustomFormPart.SaveContentItem) { + if (viewModel.CustomFormPart.SaveContentItem || viewModel.CustomFormPart.SavePublishContentItem) { // If it's draftable then don't display the warning because the generated content items won't be publicly accessible var typeDefinition = _contentDefinitionManager.ListTypeDefinitions().Where(x => String.Equals(x.Name, viewModel.CustomFormPart.ContentType, StringComparison.OrdinalIgnoreCase)).FirstOrDefault(); - if (typeDefinition != null && !typeDefinition.Settings.GetModel().Draftable) { + if (typeDefinition != null && (!typeDefinition.Settings.GetModel().Draftable || viewModel.CustomFormPart.SavePublishContentItem)) { // Create a dummy content item of the specified type to check permissions against if (_authService.TryCheckAccess(Orchard.Core.Contents.Permissions.ViewContent, null, _orchardServices.ContentManager.New(viewModel.CustomFormPart.ContentType))) { _orchardServices.Notifier.Add(UI.Notify.NotifyType.Warning, T("Your custom form will save data to content items that are publicly accessible.")); @@ -110,22 +110,26 @@ namespace Orchard.CustomForms.Drivers { context.ImportAttribute(part.PartDefinition.Name, "ContentType", x => part.Record.ContentType = x); context.ImportAttribute(part.PartDefinition.Name, "UseContentTypePermissions", x => part.Record.UseContentTypePermissions = Boolean.Parse(x)); context.ImportAttribute(part.PartDefinition.Name, "SaveContentItem", x => part.Record.SaveContentItem = Boolean.Parse(x)); + context.ImportAttribute(part.PartDefinition.Name, "SavePublishContentItem", x => part.Record.SavePublishContentItem = Boolean.Parse(x)); context.ImportAttribute(part.PartDefinition.Name, "CustomMessage", x => part.Record.CustomMessage = Boolean.Parse(x)); context.ImportAttribute(part.PartDefinition.Name, "Message", x => part.Record.Message = x); context.ImportAttribute(part.PartDefinition.Name, "Redirect", x => part.Record.Redirect = Boolean.Parse(x)); context.ImportAttribute(part.PartDefinition.Name, "RedirectUrl", x => part.Record.RedirectUrl = x); context.ImportAttribute(part.PartDefinition.Name, "SubmitButtonText", x => part.Record.SubmitButtonText = x); + context.ImportAttribute(part.PartDefinition.Name, "PublishButtonText", x => part.Record.PublishButtonText = x); } protected override void Exporting(CustomFormPart part, ExportContentContext context) { context.Element(part.PartDefinition.Name).SetAttributeValue("ContentType", part.Record.ContentType); context.Element(part.PartDefinition.Name).SetAttributeValue("UseContentTypePermissions", part.Record.UseContentTypePermissions); context.Element(part.PartDefinition.Name).SetAttributeValue("SaveContentItem", part.Record.SaveContentItem); + context.Element(part.PartDefinition.Name).SetAttributeValue("SavePublishContentItem", part.Record.SavePublishContentItem); context.Element(part.PartDefinition.Name).SetAttributeValue("CustomMessage", part.Record.CustomMessage); context.Element(part.PartDefinition.Name).SetAttributeValue("Message", part.Record.Message); context.Element(part.PartDefinition.Name).SetAttributeValue("Redirect", part.Record.Redirect); context.Element(part.PartDefinition.Name).SetAttributeValue("RedirectUrl", part.Record.RedirectUrl); context.Element(part.PartDefinition.Name).SetAttributeValue("SubmitButtonText", part.Record.SubmitButtonText); + context.Element(part.PartDefinition.Name).SetAttributeValue("PublishButtonText", part.Record.PublishButtonText); } } } \ No newline at end of file diff --git a/src/Orchard.Web/Modules/Orchard.CustomForms/Migrations.cs b/src/Orchard.Web/Modules/Orchard.CustomForms/Migrations.cs index 5582c1ff5..2289a37f8 100644 --- a/src/Orchard.Web/Modules/Orchard.CustomForms/Migrations.cs +++ b/src/Orchard.Web/Modules/Orchard.CustomForms/Migrations.cs @@ -64,6 +64,12 @@ namespace Orchard.CustomForms { return 5; } + public int UpdateFrom5() { + SchemaBuilder.AlterTable("CustomFormPartRecord", table => table.AddColumn("SavePublishContentItem", c => c.WithDefault(false))); + SchemaBuilder.AlterTable("CustomFormPartRecord", table => table.AddColumn("PublishButtonText")); + return 6; + } + public void Uninstall() { ContentDefinitionManager.DeleteTypeDefinition("CustomForm"); diff --git a/src/Orchard.Web/Modules/Orchard.CustomForms/Models/CustomFormPart.cs b/src/Orchard.Web/Modules/Orchard.CustomForms/Models/CustomFormPart.cs index 4ac9ce559..53742f7b5 100644 --- a/src/Orchard.Web/Modules/Orchard.CustomForms/Models/CustomFormPart.cs +++ b/src/Orchard.Web/Modules/Orchard.CustomForms/Models/CustomFormPart.cs @@ -20,6 +20,11 @@ namespace Orchard.CustomForms.Models { set { Record.SaveContentItem = value; } } + public bool SavePublishContentItem { + get { return Record.SavePublishContentItem; } + set { Record.SavePublishContentItem = value; } + } + public bool CustomMessage { get { return Record.CustomMessage; } set { Record.CustomMessage = value; } @@ -46,6 +51,12 @@ namespace Orchard.CustomForms.Models { set { Record.SubmitButtonText = value; } } + + public string PublishButtonText { + get { return Record.PublishButtonText; } + set { Record.PublishButtonText = value; } + } + public string Title { get { return this.As().Title; } } diff --git a/src/Orchard.Web/Modules/Orchard.CustomForms/Models/CustomFormPartRecord.cs b/src/Orchard.Web/Modules/Orchard.CustomForms/Models/CustomFormPartRecord.cs index a1661fdda..72c8001e4 100644 --- a/src/Orchard.Web/Modules/Orchard.CustomForms/Models/CustomFormPartRecord.cs +++ b/src/Orchard.Web/Modules/Orchard.CustomForms/Models/CustomFormPartRecord.cs @@ -12,10 +12,13 @@ namespace Orchard.CustomForms.Models { public virtual string Message { get; set; } public virtual bool CustomMessage { get; set; } public virtual bool SaveContentItem { get; set; } + public virtual bool SavePublishContentItem { get; set; } [StringLengthMax] public virtual string RedirectUrl { get; set; } public virtual bool Redirect { get; set; } public virtual string SubmitButtonText { get; set; } + public virtual string PublishButtonText { get; set; } + } } \ No newline at end of file diff --git a/src/Orchard.Web/Modules/Orchard.CustomForms/Views/EditorTemplates/Parts.CustomForm.Fields.cshtml b/src/Orchard.Web/Modules/Orchard.CustomForms/Views/EditorTemplates/Parts.CustomForm.Fields.cshtml index ede4f9d74..4bc8b4a94 100644 --- a/src/Orchard.Web/Modules/Orchard.CustomForms/Views/EditorTemplates/Parts.CustomForm.Fields.cshtml +++ b/src/Orchard.Web/Modules/Orchard.CustomForms/Views/EditorTemplates/Parts.CustomForm.Fields.cshtml @@ -25,6 +25,11 @@ @T("Check if you want to save the content item associated to the form. Leave empty if you just want to trigger an action on the event.") +
+ @Html.EditorFor(m => m.CustomFormPart.SavePublishContentItem) + + @T("Check if you want to save the content item associated to the form. Leave empty if you just want to trigger an action on the event.") +
@Html.EditorFor(m => m.CustomFormPart.CustomMessage) @@ -42,7 +47,11 @@ @Html.TextBoxFor(m => m.CustomFormPart.SubmitButtonText, new { @class = "text large", @Value = (Model.CustomFormPart.SubmitButtonText ?? @T("Submit").Text) }) @T("The text of the submit button.")
- +
+ @Html.LabelFor(m => m.CustomFormPart.PublishButtonText) + @Html.TextBoxFor(m => m.CustomFormPart.PublishButtonText, new { @class = "text large", @Value = (Model.CustomFormPart.PublishButtonText ?? @T("Publish").Text) }) + @T("The text of the publish button.") +
@Html.EditorFor(m => m.CustomFormPart.Redirect) diff --git a/src/Orchard.Web/Modules/Orchard.CustomForms/Views/Item/Create.cshtml b/src/Orchard.Web/Modules/Orchard.CustomForms/Views/Item/Create.cshtml index e4c440afe..e35d358db 100644 --- a/src/Orchard.Web/Modules/Orchard.CustomForms/Views/Item/Create.cshtml +++ b/src/Orchard.Web/Modules/Orchard.CustomForms/Views/Item/Create.cshtml @@ -13,6 +13,7 @@ Model.Zones["Sidebar"].Items.Clear(); var submitButtonText = String.IsNullOrEmpty(Model.ContentItem.CustomFormPart.SubmitButtonText) ? T("Submit").Text : Model.ContentItem.CustomFormPart.SubmitButtonText; + var publishButtonText = String.IsNullOrEmpty(Model.ContentItem.CustomFormPart.PublishButtonText) ? T("Publish").Text : Model.ContentItem.CustomFormPart.PublishButtonText; } @Display(New.Parts_Title().Title(displayText)) @@ -25,7 +26,11 @@ @Html.Hidden("contentId", (int)Model.ContentId, new { id = string.Empty });
- + @if (Model.ContentItem.CustomFormPart.SavePublishContentItem == false || Model.ContentItem.CustomFormPart.SaveContentItem == true) { + + } + @if (Model.ContentItem.CustomFormPart.SavePublishContentItem == true) { + + }
-} - +} \ No newline at end of file diff --git a/src/Orchard.Web/Modules/Orchard.CustomForms/Views/Parts.CustomForm.Wrapper.cshtml b/src/Orchard.Web/Modules/Orchard.CustomForms/Views/Parts.CustomForm.Wrapper.cshtml index cb32e636c..a5bda6443 100644 --- a/src/Orchard.Web/Modules/Orchard.CustomForms/Views/Parts.CustomForm.Wrapper.cshtml +++ b/src/Orchard.Web/Modules/Orchard.CustomForms/Views/Parts.CustomForm.Wrapper.cshtml @@ -18,6 +18,11 @@ @Html.Hidden("contentId", Request.QueryString["contentId"], new { id = string.Empty });
- + + + } + @if (Model.ContentItem.CustomFormPart.SavePublishContentItem == true) { + + }
-} +} \ No newline at end of file