mirror of
https://github.com/OrchardCMS/Orchard.git
synced 2026-02-09 09:16:41 +08:00
Add Customforms publish button option with settings for button label (#8228)
Fixes #8227
This commit is contained in:
committed by
Sébastien Ros
parent
bfc0c302f8
commit
902ad928ad
@@ -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);
|
||||
|
||||
|
||||
@@ -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<ContentTypeSettings>().Draftable) {
|
||||
if (typeDefinition != null && (!typeDefinition.Settings.GetModel<ContentTypeSettings>().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);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -64,6 +64,12 @@ namespace Orchard.CustomForms {
|
||||
|
||||
return 5;
|
||||
}
|
||||
public int UpdateFrom5() {
|
||||
SchemaBuilder.AlterTable("CustomFormPartRecord", table => table.AddColumn<bool>("SavePublishContentItem", c => c.WithDefault(false)));
|
||||
SchemaBuilder.AlterTable("CustomFormPartRecord", table => table.AddColumn<string>("PublishButtonText"));
|
||||
return 6;
|
||||
}
|
||||
|
||||
|
||||
public void Uninstall() {
|
||||
ContentDefinitionManager.DeleteTypeDefinition("CustomForm");
|
||||
|
||||
@@ -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<ITitleAspect>().Title; }
|
||||
}
|
||||
|
||||
@@ -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; }
|
||||
|
||||
}
|
||||
}
|
||||
@@ -25,6 +25,11 @@
|
||||
<label for="@Html.FieldIdFor(m => m.CustomFormPart.SaveContentItem)" class="forcheckbox">@T("Save the content item once the form is submitted")</label>
|
||||
<span class="hint">@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.")</span>
|
||||
</fieldset>
|
||||
<fieldset>
|
||||
@Html.EditorFor(m => m.CustomFormPart.SavePublishContentItem)
|
||||
<label for="@Html.FieldIdFor(m => m.CustomFormPart.SavePublishContentItem)" class="forcheckbox">@T("Save and publish the content item once the form is submitted")</label>
|
||||
<span class="hint">@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.")</span>
|
||||
</fieldset>
|
||||
|
||||
<fieldset>
|
||||
@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) })
|
||||
<span class="hint">@T("The text of the submit button.")</span>
|
||||
</fieldset>
|
||||
|
||||
<fieldset>
|
||||
@Html.LabelFor(m => m.CustomFormPart.PublishButtonText)
|
||||
@Html.TextBoxFor(m => m.CustomFormPart.PublishButtonText, new { @class = "text large", @Value = (Model.CustomFormPart.PublishButtonText ?? @T("Publish").Text) })
|
||||
<span class="hint">@T("The text of the publish button.")</span>
|
||||
</fieldset>
|
||||
<fieldset>
|
||||
@Html.EditorFor(m => m.CustomFormPart.Redirect)
|
||||
<label for="@Html.FieldIdFor(m => m.CustomFormPart.Redirect)" class="forcheckbox">@T("Redirect the user once the form is submitted")</label>
|
||||
|
||||
@@ -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 });
|
||||
|
||||
<fieldset class="submit-button">
|
||||
@if (Model.ContentItem.CustomFormPart.SavePublishContentItem == false || Model.ContentItem.CustomFormPart.SaveContentItem == true) {
|
||||
<button type="submit" name="submit.Save" value="submit.Save">@submitButtonText</button>
|
||||
}
|
||||
@if (Model.ContentItem.CustomFormPart.SavePublishContentItem == true) {
|
||||
<button type="submit" name="submit.Publish" value="submit.Publish">@publishButtonText</button>
|
||||
}
|
||||
</fieldset>
|
||||
}
|
||||
|
||||
|
||||
@@ -18,6 +18,11 @@
|
||||
@Html.Hidden("contentId", Request.QueryString["contentId"], new { id = string.Empty });
|
||||
|
||||
<fieldset class="submit-button">
|
||||
|
||||
<button type="submit" name="submit.Save" value="submit.Save">@Model.ContentPart.SubmitButtonText</button>
|
||||
}
|
||||
@if (Model.ContentItem.CustomFormPart.SavePublishContentItem == true) {
|
||||
<button type="submit" name="submit.Publish" value="submit.Publish">@Model.ContentPart.PublishButtonText</button>
|
||||
}
|
||||
</fieldset>
|
||||
}
|
||||
Reference in New Issue
Block a user