mirror of
https://github.com/OrchardCMS/Orchard.git
synced 2025-09-21 03:44:20 +08:00
Merged 'feature/layouteditor' into 1.x.
This commit is contained in:
@@ -23,6 +23,7 @@
|
|||||||
<ErrorReport>prompt</ErrorReport>
|
<ErrorReport>prompt</ErrorReport>
|
||||||
<WarningLevel>4</WarningLevel>
|
<WarningLevel>4</WarningLevel>
|
||||||
<Prefer32Bit>false</Prefer32Bit>
|
<Prefer32Bit>false</Prefer32Bit>
|
||||||
|
<UseVSHostingProcess>false</UseVSHostingProcess>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||||
<DebugType>pdbonly</DebugType>
|
<DebugType>pdbonly</DebugType>
|
||||||
|
@@ -1,3 +1,15 @@
|
|||||||
@(Model.Required != null && Model.Required
|
@{
|
||||||
? Html.TextBox("Text", (string)Model.Text, new { @class = "text large", required = "required" })
|
var htmlAttributes = new Dictionary<string, object> {
|
||||||
: Html.TextBox("Text", (string)Model.Text, new { @class = "text large" }))
|
{"class", "text large"}
|
||||||
|
};
|
||||||
|
|
||||||
|
if (Model.Required == true) {
|
||||||
|
htmlAttributes["required"] = "required";
|
||||||
|
}
|
||||||
|
|
||||||
|
if (Model.AutoFocus == true) {
|
||||||
|
htmlAttributes["autofocus"] = "autofocus";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Html.TextBox("Text", (string)Model.Text, htmlAttributes)
|
@@ -1,3 +1,15 @@
|
|||||||
@(Model.Required != null && Model.Required
|
@{
|
||||||
? Html.TextBox("Text", (string)Model.Text, new { @class = "text small", required = "required" })
|
var htmlAttributes = new Dictionary<string, object> {
|
||||||
: Html.TextBox("Text", (string)Model.Text, new { @class = "text small" }))
|
{"class", "text small"}
|
||||||
|
};
|
||||||
|
|
||||||
|
if (Model.Required == true) {
|
||||||
|
htmlAttributes["required"] = "required";
|
||||||
|
}
|
||||||
|
|
||||||
|
if (Model.AutoFocus == true) {
|
||||||
|
htmlAttributes["autofocus"] = "autofocus";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Html.TextBox("Text", (string)Model.Text, htmlAttributes)
|
@@ -1,3 +1,13 @@
|
|||||||
@(Model.Required != null && Model.Required
|
@{
|
||||||
? Html.TextArea("Text", (string)Model.Text, 10, 80, new { required = "required" })
|
var htmlAttributes = new Dictionary<string, object>();
|
||||||
: Html.TextArea("Text", (string)Model.Text, 10, 80, new { }))
|
|
||||||
|
if (Model.Required == true) {
|
||||||
|
htmlAttributes["required"] = "required";
|
||||||
|
}
|
||||||
|
|
||||||
|
if (Model.AutoFocus == true) {
|
||||||
|
htmlAttributes["autofocus"] = "autofocus";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Html.TextArea("Text", (string)Model.Text, 25, 80, htmlAttributes)
|
@@ -1,3 +1,15 @@
|
|||||||
@(Model.Required != null && Model.Required
|
@{
|
||||||
? Html.TextBox("Text", (string)Model.Text, new { @class = "text medium", required = "required" })
|
var htmlAttributes = new Dictionary<string, object> {
|
||||||
: Html.TextBox("Text", (string)Model.Text, new { @class = "text medium" }))
|
{"class", "text medium"}
|
||||||
|
};
|
||||||
|
|
||||||
|
if (Model.Required == true) {
|
||||||
|
htmlAttributes["required"] = "required";
|
||||||
|
}
|
||||||
|
|
||||||
|
if (Model.AutoFocus == true) {
|
||||||
|
htmlAttributes["autofocus"] = "autofocus";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Html.TextBox("Text", (string)Model.Text, htmlAttributes)
|
@@ -1,7 +1,18 @@
|
|||||||
@using Orchard.Utility.Extensions;
|
@using Orchard.Utility.Extensions;
|
||||||
@{
|
@{
|
||||||
string editorFlavor = Model.EditorFlavor;
|
string editorFlavor = Model.EditorFlavor;
|
||||||
|
|
||||||
|
var htmlAttributes = new Dictionary<string, object> {
|
||||||
|
{"class", editorFlavor.HtmlClassify()}
|
||||||
|
};
|
||||||
|
|
||||||
|
if (Model.Required == true) {
|
||||||
|
htmlAttributes["required"] = "required";
|
||||||
|
}
|
||||||
|
|
||||||
|
if (Model.AutoFocus == true) {
|
||||||
|
htmlAttributes["autofocus"] = "autofocus";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@(Model.Required != null && Model.Required
|
|
||||||
? Html.TextArea("Text", (string)Model.Text, 25, 80, new { @class = editorFlavor.HtmlClassify(), required = "required" })
|
@Html.TextArea("Text", (string)Model.Text, 25, 80, htmlAttributes)
|
||||||
: Html.TextArea("Text", (string)Model.Text, 25, 80, new { @class = editorFlavor.HtmlClassify() }))
|
|
@@ -2,6 +2,6 @@
|
|||||||
@using Orchard.Core.Common.ViewModels;
|
@using Orchard.Core.Common.ViewModels;
|
||||||
<fieldset>
|
<fieldset>
|
||||||
<label>@T("Body")</label>
|
<label>@T("Body")</label>
|
||||||
@Display.Body_Editor(Text: Model.Text, EditorFlavor: Model.EditorFlavor, Required: false, ContentItem: Model.BodyPart.ContentItem)
|
@Display.Body_Editor(Text: Model.Text, EditorFlavor: Model.EditorFlavor, Required: false, AutoFocus: false, ContentItem: Model.BodyPart.ContentItem)
|
||||||
@Html.ValidationMessageFor(m => m.Text)
|
@Html.ValidationMessageFor(m => m.Text)
|
||||||
</fieldset>
|
</fieldset>
|
@@ -36,6 +36,7 @@
|
|||||||
<WarningLevel>4</WarningLevel>
|
<WarningLevel>4</WarningLevel>
|
||||||
<CodeAnalysisRuleSet>..\..\OrchardBasicCorrectness.ruleset</CodeAnalysisRuleSet>
|
<CodeAnalysisRuleSet>..\..\OrchardBasicCorrectness.ruleset</CodeAnalysisRuleSet>
|
||||||
<Prefer32Bit>false</Prefer32Bit>
|
<Prefer32Bit>false</Prefer32Bit>
|
||||||
|
<UseVSHostingProcess>false</UseVSHostingProcess>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||||
<DebugType>pdbonly</DebugType>
|
<DebugType>pdbonly</DebugType>
|
||||||
|
@@ -4,8 +4,7 @@
|
|||||||
Script.Require("OrchardMarkdown");
|
Script.Require("OrchardMarkdown");
|
||||||
Style.Require("OrchardMarkdown");
|
Style.Require("OrchardMarkdown");
|
||||||
|
|
||||||
string idPostfix = Html.FieldIdFor(m => m);
|
var idPostfix = Html.FieldIdFor(m => m);
|
||||||
|
|
||||||
var shellDescriptor = WorkContext.Resolve<ShellDescriptor>();
|
var shellDescriptor = WorkContext.Resolve<ShellDescriptor>();
|
||||||
var mediaLibraryEnabled = shellDescriptor.Features.Any(x => x.Name == "Orchard.MediaLibrary");
|
var mediaLibraryEnabled = shellDescriptor.Features.Any(x => x.Name == "Orchard.MediaLibrary");
|
||||||
|
|
||||||
@@ -18,22 +17,25 @@
|
|||||||
Script.Require("OrchardMarkdown-MediaPicker");
|
Script.Require("OrchardMarkdown-MediaPicker");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var textAreaAttributes = new Dictionary<string, object> {
|
||||||
|
{"id", "wmd-input" + "-" + idPostfix},
|
||||||
|
{"class", "wmd-input"},
|
||||||
|
{"data-mediapicker-uploadpath", Model.AddMediaPath},
|
||||||
|
{"data-mediapicker-title", T("Insert/Update Media")}
|
||||||
|
};
|
||||||
|
|
||||||
|
// The markdown editor itself doesn't seem to (yet) support autofocus, but we'll set it on the textarea nonetheless.
|
||||||
|
if (Model.AutoFocus == true) {
|
||||||
|
textAreaAttributes["autofocus"] = "autofocus";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
<div class="wmd-box has-grip">
|
<div class="wmd-box has-grip">
|
||||||
<div class="wmd-innerbox">
|
<div class="wmd-innerbox">
|
||||||
<div class="wmd-editor-box">
|
<div class="wmd-editor-box">
|
||||||
<div id="wmd-button-bar-@idPostfix" class="wmd-button-bar"></div>
|
<div id="wmd-button-bar-@idPostfix" class="wmd-button-bar"></div>
|
||||||
|
@Html.TextArea("Text", (string)Model.Text, 25, 80, textAreaAttributes)
|
||||||
@Html.TextArea("Text", (string)Model.Text, 25, 80,
|
|
||||||
new Dictionary<string, object> {
|
|
||||||
{"id", "wmd-input" + "-" + idPostfix},
|
|
||||||
{"class", "wmd-input"},
|
|
||||||
{"data-mediapicker-uploadpath", Model.AddMediaPath},
|
|
||||||
{"data-mediapicker-title", T("Insert/Update Media")}
|
|
||||||
})
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="wmd-preview-box">
|
<div class="wmd-preview-box">
|
||||||
<div id="wmd-preview-@idPostfix" class="wmd-panel wmd-preview"></div>
|
<div id="wmd-preview-@idPostfix" class="wmd-panel wmd-preview"></div>
|
||||||
</div>
|
</div>
|
||||||
|
@@ -553,10 +553,22 @@
|
|||||||
<Content Include="Content\Strobe Media Playback Notice.docx" />
|
<Content Include="Content\Strobe Media Playback Notice.docx" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
<Content Include="Scripts\lib\console-shim.min.js.map">
|
||||||
|
<DependentUpon>console-shim.min.js</DependentUpon>
|
||||||
|
</Content>
|
||||||
|
<Content Include="Scripts\lib\jstree.min.js.map">
|
||||||
|
<DependentUpon>jstree.min.js</DependentUpon>
|
||||||
|
</Content>
|
||||||
|
<Content Include="Scripts\lib\moment.min.js.map">
|
||||||
|
<DependentUpon>moment.min.js</DependentUpon>
|
||||||
|
</Content>
|
||||||
<None Include="Scripts\lib\MPEG Dash Notice.docx" />
|
<None Include="Scripts\lib\MPEG Dash Notice.docx" />
|
||||||
<Content Include="Styles\cloudmedia-admin-settings.css.map">
|
<Content Include="Styles\cloudmedia-admin-settings.css.map">
|
||||||
<DependentUpon>cloudmedia-admin-settings.css</DependentUpon>
|
<DependentUpon>cloudmedia-admin-settings.css</DependentUpon>
|
||||||
</Content>
|
</Content>
|
||||||
|
<Content Include="Scripts\lib\underscore.min.js.map">
|
||||||
|
<DependentUpon>underscore.min.js</DependentUpon>
|
||||||
|
</Content>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Content Include="Scripts\cloudmedia-admin-common.js.map" />
|
<Content Include="Scripts\cloudmedia-admin-common.js.map" />
|
||||||
|
@@ -117,6 +117,11 @@
|
|||||||
<Name>Orchard.Widgets</Name>
|
<Name>Orchard.Widgets</Name>
|
||||||
</ProjectReference>
|
</ProjectReference>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<Content Include="Scripts\jquery.tmpl.min.js.map">
|
||||||
|
<DependentUpon>jquery.tmpl.min.js</DependentUpon>
|
||||||
|
</Content>
|
||||||
|
</ItemGroup>
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">10.0</VisualStudioVersion>
|
<VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">10.0</VisualStudioVersion>
|
||||||
<VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath>
|
<VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath>
|
||||||
|
@@ -6,7 +6,7 @@ namespace Orchard.DynamicForms.Bindings {
|
|||||||
public class BodyPartBindings : Component, IBindingProvider {
|
public class BodyPartBindings : Component, IBindingProvider {
|
||||||
public void Describe(BindingDescribeContext context) {
|
public void Describe(BindingDescribeContext context) {
|
||||||
context.For<BodyPart>()
|
context.For<BodyPart>()
|
||||||
.Binding("Text", (part, s) => part.Text = s);
|
.Binding("Text", (contentItem, part, s) => part.Text = s);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@@ -0,0 +1,24 @@
|
|||||||
|
using System;
|
||||||
|
using Orchard.DynamicForms.Services;
|
||||||
|
using Orchard.DynamicForms.Services.Models;
|
||||||
|
using Orchard.Fields.Fields;
|
||||||
|
using Orchard.Localization;
|
||||||
|
|
||||||
|
namespace Orchard.DynamicForms.Bindings {
|
||||||
|
public class BooleanFieldBindings : Component, IBindingProvider {
|
||||||
|
public BooleanFieldBindings() {
|
||||||
|
T = NullLocalizer.Instance;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Localizer T { get; set; }
|
||||||
|
|
||||||
|
public void Describe(BindingDescribeContext context) {
|
||||||
|
context.For<BooleanField>()
|
||||||
|
.Binding("Value", (contentItem, field, s) => field.Value = IsTrueish(s));
|
||||||
|
}
|
||||||
|
|
||||||
|
private bool IsTrueish(string s) {
|
||||||
|
return !String.IsNullOrWhiteSpace(s) && !String.Equals("false", s, StringComparison.OrdinalIgnoreCase) && !String.Equals(T("No").Text, s, StringComparison.OrdinalIgnoreCase);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@@ -0,0 +1,16 @@
|
|||||||
|
using System;
|
||||||
|
using Orchard.DynamicForms.Services;
|
||||||
|
using Orchard.DynamicForms.Services.Models;
|
||||||
|
using Orchard.Fields.Fields;
|
||||||
|
|
||||||
|
namespace Orchard.DynamicForms.Bindings {
|
||||||
|
public class EnumerationFieldBindings : Component, IBindingProvider {
|
||||||
|
public void Describe(BindingDescribeContext context) {
|
||||||
|
context.For<EnumerationField>()
|
||||||
|
.Binding("SelectedValues", (contentItem, field, s) => {
|
||||||
|
var items = (s ?? "").Split(new[] {',', ';'}, StringSplitOptions.RemoveEmptyEntries);
|
||||||
|
field.SelectedValues = items;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@@ -0,0 +1,12 @@
|
|||||||
|
using Orchard.DynamicForms.Services;
|
||||||
|
using Orchard.DynamicForms.Services.Models;
|
||||||
|
using Orchard.Fields.Fields;
|
||||||
|
|
||||||
|
namespace Orchard.DynamicForms.Bindings {
|
||||||
|
public class InputFieldBindings : Component, IBindingProvider {
|
||||||
|
public void Describe(BindingDescribeContext context) {
|
||||||
|
context.For<InputField>()
|
||||||
|
.Binding("Text", (contentItem, field, s) => field.Value = s);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@@ -0,0 +1,36 @@
|
|||||||
|
using System;
|
||||||
|
using System.Linq;
|
||||||
|
using Orchard.ContentManagement;
|
||||||
|
using Orchard.DynamicForms.Services;
|
||||||
|
using Orchard.DynamicForms.Services.Models;
|
||||||
|
using Orchard.Environment.Extensions;
|
||||||
|
using Orchard.Taxonomies.Fields;
|
||||||
|
using Orchard.Taxonomies.Models;
|
||||||
|
using Orchard.Taxonomies.Services;
|
||||||
|
|
||||||
|
namespace Orchard.DynamicForms.Bindings {
|
||||||
|
[OrchardFeature("Orchard.DynamicForms.Taxonomies")]
|
||||||
|
public class TaxonomyFieldBindings : Component, IBindingProvider {
|
||||||
|
private readonly ITaxonomyService _taxonomyService;
|
||||||
|
public TaxonomyFieldBindings(ITaxonomyService taxonomyService) {
|
||||||
|
_taxonomyService = taxonomyService;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Describe(BindingDescribeContext context) {
|
||||||
|
context.For<TaxonomyField>()
|
||||||
|
.Binding("Terms", (contentItem, field, s) => {
|
||||||
|
var selectedTerms =
|
||||||
|
s.Split(new []{',', ';'}, StringSplitOptions.RemoveEmptyEntries)
|
||||||
|
.Select(XmlHelper.Parse<int?>)
|
||||||
|
.Select(t => GetTerm(t.GetValueOrDefault()))
|
||||||
|
.Where(t => t != null).ToList();
|
||||||
|
|
||||||
|
_taxonomyService.UpdateTerms(contentItem, selectedTerms, field.Name);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
private TermPart GetTerm(int termId) {
|
||||||
|
return _taxonomyService.GetTerm(termId);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@@ -6,7 +6,7 @@ namespace Orchard.DynamicForms.Bindings {
|
|||||||
public class TextFieldBindings : Component, IBindingProvider {
|
public class TextFieldBindings : Component, IBindingProvider {
|
||||||
public void Describe(BindingDescribeContext context) {
|
public void Describe(BindingDescribeContext context) {
|
||||||
context.For<TextField>()
|
context.For<TextField>()
|
||||||
.Binding("Text", (field, s) => field.Value = s);
|
.Binding("Text", (contentItem, field, s) => field.Value = s);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@@ -6,7 +6,7 @@ namespace Orchard.DynamicForms.Bindings {
|
|||||||
public class TitlePartBindings : Component, IBindingProvider {
|
public class TitlePartBindings : Component, IBindingProvider {
|
||||||
public void Describe(BindingDescribeContext context) {
|
public void Describe(BindingDescribeContext context) {
|
||||||
context.For<TitlePart>()
|
context.For<TitlePart>()
|
||||||
.Binding("Title", (part, s) => part.Title = s);
|
.Binding("Title", (contentItem, part, s) => part.Title = s);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@@ -12,12 +12,12 @@ namespace Orchard.DynamicForms.Bindings {
|
|||||||
|
|
||||||
public void Describe(BindingDescribeContext context) {
|
public void Describe(BindingDescribeContext context) {
|
||||||
context.For<UserPart>()
|
context.For<UserPart>()
|
||||||
.Binding("UserName", (part, s) => {
|
.Binding("UserName", (contentItem, part, s) => {
|
||||||
part.UserName = s;
|
part.UserName = s;
|
||||||
part.NormalizedUserName = s.ToLowerInvariant();
|
part.NormalizedUserName = s.ToLowerInvariant();
|
||||||
})
|
})
|
||||||
.Binding("Email", (part, s) => part.Email = s)
|
.Binding("Email", (contentItem, part, s) => part.Email = s)
|
||||||
.Binding("Password", (part, s) => {
|
.Binding("Password", (contentItem, part, s) => {
|
||||||
part.HashAlgorithm = "SHA1";
|
part.HashAlgorithm = "SHA1";
|
||||||
_membershipService.SetPassword(part, s);
|
_membershipService.SetPassword(part, s);
|
||||||
});
|
});
|
||||||
|
@@ -27,12 +27,12 @@ namespace Orchard.DynamicForms.Drivers {
|
|||||||
if (contentTypeDefinition == null)
|
if (contentTypeDefinition == null)
|
||||||
return null;
|
return null;
|
||||||
|
|
||||||
var viewModel = new FormBindingSettings {
|
var viewModel = element.Data.GetModel<FormBindingSettings>() ?? new FormBindingSettings();
|
||||||
AvailableBindings = _bindingManager.DescribeBindingsFor(contentTypeDefinition).ToArray()
|
viewModel.AvailableBindings = _bindingManager.DescribeBindingsFor(contentTypeDefinition).ToArray();
|
||||||
};
|
|
||||||
|
|
||||||
if (context.Updater != null) {
|
if (context.Updater != null) {
|
||||||
context.Updater.TryUpdateModel(viewModel, null, null, new[] {"AvailableBindings"});
|
context.Updater.TryUpdateModel(viewModel, null, null, new[] {"AvailableBindings"});
|
||||||
|
viewModel.Store(element.Data);
|
||||||
}
|
}
|
||||||
|
|
||||||
var bindingsEditor = context.ShapeFactory.EditorTemplate(TemplateName: "FormBindings", Model: viewModel);
|
var bindingsEditor = context.ShapeFactory.EditorTemplate(TemplateName: "FormBindings", Model: viewModel);
|
||||||
|
@@ -4,8 +4,8 @@ using Orchard.Forms.Services;
|
|||||||
using Orchard.Layouts.Framework.Drivers;
|
using Orchard.Layouts.Framework.Drivers;
|
||||||
|
|
||||||
namespace Orchard.DynamicForms.Drivers {
|
namespace Orchard.DynamicForms.Drivers {
|
||||||
public class ButtonDriver : FormsElementDriver<Button> {
|
public class ButtonElementDriver : FormsElementDriver<Button> {
|
||||||
public ButtonDriver(IFormManager formManager) : base(formManager) { }
|
public ButtonElementDriver(IFormManager formManager) : base(formManager) { }
|
||||||
|
|
||||||
protected override IEnumerable<string> FormNames {
|
protected override IEnumerable<string> FormNames {
|
||||||
get { yield return "Button"; }
|
get { yield return "Button"; }
|
@@ -6,10 +6,10 @@ using Orchard.Tokens;
|
|||||||
using DescribeContext = Orchard.Forms.Services.DescribeContext;
|
using DescribeContext = Orchard.Forms.Services.DescribeContext;
|
||||||
|
|
||||||
namespace Orchard.DynamicForms.Drivers {
|
namespace Orchard.DynamicForms.Drivers {
|
||||||
public class CheckboxDriver : FormsElementDriver<CheckBox> {
|
public class CheckboxElementDriver : FormsElementDriver<CheckBox> {
|
||||||
private readonly ITokenizer _tokenizer;
|
private readonly ITokenizer _tokenizer;
|
||||||
|
|
||||||
public CheckboxDriver(IFormManager formManager, ITokenizer tokenizer)
|
public CheckboxElementDriver(IFormManager formManager, ITokenizer tokenizer)
|
||||||
: base(formManager) {
|
: base(formManager) {
|
||||||
_tokenizer = tokenizer;
|
_tokenizer = tokenizer;
|
||||||
}
|
}
|
@@ -6,10 +6,10 @@ using Orchard.Tokens;
|
|||||||
using DescribeContext = Orchard.Forms.Services.DescribeContext;
|
using DescribeContext = Orchard.Forms.Services.DescribeContext;
|
||||||
|
|
||||||
namespace Orchard.DynamicForms.Drivers {
|
namespace Orchard.DynamicForms.Drivers {
|
||||||
public class EmailFieldDriver : FormsElementDriver<EmailField>{
|
public class EmailFieldElementDriver : FormsElementDriver<EmailField>{
|
||||||
private readonly ITokenizer _tokenizer;
|
private readonly ITokenizer _tokenizer;
|
||||||
|
|
||||||
public EmailFieldDriver(IFormManager formManager, ITokenizer tokenizer) : base(formManager) {
|
public EmailFieldElementDriver(IFormManager formManager, ITokenizer tokenizer) : base(formManager) {
|
||||||
_tokenizer = tokenizer;
|
_tokenizer = tokenizer;
|
||||||
}
|
}
|
||||||
|
|
@@ -12,9 +12,9 @@ using Orchard.Utility.Extensions;
|
|||||||
using DescribeContext = Orchard.Forms.Services.DescribeContext;
|
using DescribeContext = Orchard.Forms.Services.DescribeContext;
|
||||||
|
|
||||||
namespace Orchard.DynamicForms.Drivers {
|
namespace Orchard.DynamicForms.Drivers {
|
||||||
public class EnumerationDriver : FormsElementDriver<Enumeration> {
|
public class EnumerationElementDriver : FormsElementDriver<Enumeration> {
|
||||||
private readonly ITokenizer _tokenizer;
|
private readonly ITokenizer _tokenizer;
|
||||||
public EnumerationDriver(IFormManager formManager, ITokenizer tokenizer)
|
public EnumerationElementDriver(IFormManager formManager, ITokenizer tokenizer)
|
||||||
: base(formManager) {
|
: base(formManager) {
|
||||||
_tokenizer = tokenizer;
|
_tokenizer = tokenizer;
|
||||||
}
|
}
|
||||||
@@ -55,12 +55,11 @@ namespace Orchard.DynamicForms.Drivers {
|
|||||||
protected override void OnDisplaying(Enumeration element, ElementDisplayContext context) {
|
protected override void OnDisplaying(Enumeration element, ElementDisplayContext context) {
|
||||||
var tokenizedOptions = _tokenizer.Replace(element.Options).ToArray();
|
var tokenizedOptions = _tokenizer.Replace(element.Options).ToArray();
|
||||||
var typeName = element.GetType().Name;
|
var typeName = element.GetType().Name;
|
||||||
var category = element.Category.ToSafeName();
|
|
||||||
var displayType = context.DisplayType;
|
var displayType = context.DisplayType;
|
||||||
|
|
||||||
context.ElementShape.TokenizedOptions = tokenizedOptions;
|
context.ElementShape.TokenizedOptions = tokenizedOptions;
|
||||||
context.ElementShape.Metadata.Alternates.Add(String.Format("Element__{0}__{1}__{2}", category, typeName, element.InputType));
|
context.ElementShape.Metadata.Alternates.Add(String.Format("Elements_{0}__{1}", typeName, element.InputType));
|
||||||
context.ElementShape.Metadata.Alternates.Add(String.Format("Element_{0}__{1}__{2}__{3}", displayType, category, typeName, element.InputType));
|
context.ElementShape.Metadata.Alternates.Add(String.Format("Elements_{0}__{1}__{2}", displayType, typeName, element.InputType));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@@ -15,13 +15,13 @@ using Orchard.Layouts.Helpers;
|
|||||||
using Orchard.Layouts.Services;
|
using Orchard.Layouts.Services;
|
||||||
|
|
||||||
namespace Orchard.DynamicForms.Drivers {
|
namespace Orchard.DynamicForms.Drivers {
|
||||||
public class FormDriver : FormsElementDriver<Form> {
|
public class FormElementDriver : FormsElementDriver<Form> {
|
||||||
private readonly IContentDefinitionManager _contentDefinitionManager;
|
private readonly IContentDefinitionManager _contentDefinitionManager;
|
||||||
private readonly IFormService _formService;
|
private readonly IFormService _formService;
|
||||||
private readonly ICurrentControllerAccessor _currentControllerAccessor;
|
private readonly ICurrentControllerAccessor _currentControllerAccessor;
|
||||||
private readonly ICultureAccessor _cultureAccessor;
|
private readonly ICultureAccessor _cultureAccessor;
|
||||||
|
|
||||||
public FormDriver(
|
public FormElementDriver(
|
||||||
IFormManager formManager,
|
IFormManager formManager,
|
||||||
IContentDefinitionManager contentDefinitionManager,
|
IContentDefinitionManager contentDefinitionManager,
|
||||||
IFormService formService,
|
IFormService formService,
|
||||||
@@ -119,7 +119,7 @@ namespace Orchard.DynamicForms.Drivers {
|
|||||||
form._FormMethod.Items.Add(new SelectListItem { Text = "GET", Value = "GET" });
|
form._FormMethod.Items.Add(new SelectListItem { Text = "GET", Value = "GET" });
|
||||||
|
|
||||||
// ContentType
|
// ContentType
|
||||||
var contentTypes = _contentDefinitionManager.ListTypeDefinitions().Where(IsCreatableContentType).ToArray();
|
var contentTypes = _contentDefinitionManager.ListTypeDefinitions().Where(IsFormBindingContentType).ToArray();
|
||||||
foreach (var contentType in contentTypes.OrderBy(x => x.DisplayName)) {
|
foreach (var contentType in contentTypes.OrderBy(x => x.DisplayName)) {
|
||||||
form._ContentType.Items.Add(new SelectListItem { Text = contentType.DisplayName, Value = contentType.Name });
|
form._ContentType.Items.Add(new SelectListItem { Text = contentType.DisplayName, Value = contentType.Name });
|
||||||
}
|
}
|
||||||
@@ -147,7 +147,7 @@ namespace Orchard.DynamicForms.Drivers {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private static bool IsCreatableContentType(ContentTypeDefinition contentTypeDefinition) {
|
private static bool IsFormBindingContentType(ContentTypeDefinition contentTypeDefinition) {
|
||||||
var blacklist = new[] {"Site", "Layer"};
|
var blacklist = new[] {"Site", "Layer"};
|
||||||
|
|
||||||
return !blacklist.Any(x => contentTypeDefinition.Name == x) && String.IsNullOrEmpty(contentTypeDefinition.Stereotype());
|
return !blacklist.Any(x => contentTypeDefinition.Name == x) && String.IsNullOrEmpty(contentTypeDefinition.Stereotype());
|
@@ -7,9 +7,9 @@ using Orchard.Tokens;
|
|||||||
using DescribeContext = Orchard.Forms.Services.DescribeContext;
|
using DescribeContext = Orchard.Forms.Services.DescribeContext;
|
||||||
|
|
||||||
namespace Orchard.DynamicForms.Drivers {
|
namespace Orchard.DynamicForms.Drivers {
|
||||||
public class HiddenFieldDriver : FormsElementDriver<HiddenField> {
|
public class HiddenFieldElementDriver : FormsElementDriver<HiddenField> {
|
||||||
private readonly ITokenizer _tokenizer;
|
private readonly ITokenizer _tokenizer;
|
||||||
public HiddenFieldDriver(IFormManager formManager, ITokenizer tokenizer) : base(formManager) {
|
public HiddenFieldElementDriver(IFormManager formManager, ITokenizer tokenizer) : base(formManager) {
|
||||||
_tokenizer = tokenizer;
|
_tokenizer = tokenizer;
|
||||||
}
|
}
|
||||||
|
|
@@ -2,5 +2,5 @@
|
|||||||
using Orchard.Layouts.Framework.Drivers;
|
using Orchard.Layouts.Framework.Drivers;
|
||||||
|
|
||||||
namespace Orchard.DynamicForms.Drivers {
|
namespace Orchard.DynamicForms.Drivers {
|
||||||
public class UserNameFieldDriver : ElementDriver<UserNameField> { }
|
public class IpAddressFieldElementDriver : ElementDriver<IpAddressField> { }
|
||||||
}
|
}
|
@@ -4,8 +4,8 @@ using Orchard.Forms.Services;
|
|||||||
using Orchard.Layouts.Framework.Drivers;
|
using Orchard.Layouts.Framework.Drivers;
|
||||||
|
|
||||||
namespace Orchard.DynamicForms.Drivers {
|
namespace Orchard.DynamicForms.Drivers {
|
||||||
public class LabelDriver : FormsElementDriver<Label> {
|
public class LabelElementDriver : FormsElementDriver<Label> {
|
||||||
public LabelDriver(IFormManager formManager) : base(formManager) {}
|
public LabelElementDriver(IFormManager formManager) : base(formManager) {}
|
||||||
|
|
||||||
protected override IEnumerable<string> FormNames {
|
protected override IEnumerable<string> FormNames {
|
||||||
get { yield return "Label"; }
|
get { yield return "Label"; }
|
@@ -4,8 +4,8 @@ using Orchard.Layouts.Framework.Drivers;
|
|||||||
using DescribeContext = Orchard.Forms.Services.DescribeContext;
|
using DescribeContext = Orchard.Forms.Services.DescribeContext;
|
||||||
|
|
||||||
namespace Orchard.DynamicForms.Drivers {
|
namespace Orchard.DynamicForms.Drivers {
|
||||||
public class PasswordFieldDriver : FormsElementDriver<PasswordField>{
|
public class PasswordFieldElementDriver : FormsElementDriver<PasswordField>{
|
||||||
public PasswordFieldDriver(IFormManager formManager) : base(formManager) {}
|
public PasswordFieldElementDriver(IFormManager formManager) : base(formManager) {}
|
||||||
|
|
||||||
protected override EditorResult OnBuildEditor(PasswordField element, ElementEditorContext context) {
|
protected override EditorResult OnBuildEditor(PasswordField element, ElementEditorContext context) {
|
||||||
var autoLabelEditor = BuildForm(context, "AutoLabel");
|
var autoLabelEditor = BuildForm(context, "AutoLabel");
|
@@ -18,12 +18,12 @@ using DescribeContext = Orchard.Forms.Services.DescribeContext;
|
|||||||
|
|
||||||
namespace Orchard.DynamicForms.Drivers {
|
namespace Orchard.DynamicForms.Drivers {
|
||||||
[OrchardFeature("Orchard.DynamicForms.Projections")]
|
[OrchardFeature("Orchard.DynamicForms.Projections")]
|
||||||
public class QueryDriver : FormsElementDriver<Query> {
|
public class QueryElementDriver : FormsElementDriver<Query> {
|
||||||
private readonly IProjectionManager _projectionManager;
|
private readonly IProjectionManager _projectionManager;
|
||||||
private readonly IContentManager _contentManager;
|
private readonly IContentManager _contentManager;
|
||||||
private readonly ITokenizer _tokenizer;
|
private readonly ITokenizer _tokenizer;
|
||||||
|
|
||||||
public QueryDriver(IFormManager formManager, IProjectionManager projectionManager, IContentManager contentManager, ITokenizer tokenizer)
|
public QueryElementDriver(IFormManager formManager, IProjectionManager projectionManager, IContentManager contentManager, ITokenizer tokenizer)
|
||||||
: base(formManager) {
|
: base(formManager) {
|
||||||
_projectionManager = projectionManager;
|
_projectionManager = projectionManager;
|
||||||
_contentManager = contentManager;
|
_contentManager = contentManager;
|
@@ -7,10 +7,10 @@ using Orchard.Tokens;
|
|||||||
using DescribeContext = Orchard.Forms.Services.DescribeContext;
|
using DescribeContext = Orchard.Forms.Services.DescribeContext;
|
||||||
|
|
||||||
namespace Orchard.DynamicForms.Drivers {
|
namespace Orchard.DynamicForms.Drivers {
|
||||||
public class RadioButtonDriver : FormsElementDriver<RadioButton> {
|
public class RadioButtonElementDriver : FormsElementDriver<RadioButton> {
|
||||||
private readonly ITokenizer _tokenizer;
|
private readonly ITokenizer _tokenizer;
|
||||||
|
|
||||||
public RadioButtonDriver(IFormManager formManager, ITokenizer tokenizer)
|
public RadioButtonElementDriver(IFormManager formManager, ITokenizer tokenizer)
|
||||||
: base(formManager) {
|
: base(formManager) {
|
||||||
_tokenizer = tokenizer;
|
_tokenizer = tokenizer;
|
||||||
}
|
}
|
@@ -8,10 +8,10 @@ using Orchard.Layouts.Framework.Drivers;
|
|||||||
|
|
||||||
namespace Orchard.DynamicForms.Drivers {
|
namespace Orchard.DynamicForms.Drivers {
|
||||||
[OrchardFeature("Orchard.DynamicForms.AntiSpam")]
|
[OrchardFeature("Orchard.DynamicForms.AntiSpam")]
|
||||||
public class ReCaptchaDriver : FormsElementDriver<ReCaptcha>{
|
public class ReCaptchaElementDriver : FormsElementDriver<ReCaptcha>{
|
||||||
private readonly IOrchardServices _services;
|
private readonly IOrchardServices _services;
|
||||||
|
|
||||||
public ReCaptchaDriver(IFormManager formManager, IOrchardServices services) : base(formManager) {
|
public ReCaptchaElementDriver(IFormManager formManager, IOrchardServices services) : base(formManager) {
|
||||||
_services = services;
|
_services = services;
|
||||||
}
|
}
|
||||||
|
|
@@ -15,11 +15,11 @@ using DescribeContext = Orchard.Forms.Services.DescribeContext;
|
|||||||
|
|
||||||
namespace Orchard.DynamicForms.Drivers {
|
namespace Orchard.DynamicForms.Drivers {
|
||||||
[OrchardFeature("Orchard.DynamicForms.Taxonomies")]
|
[OrchardFeature("Orchard.DynamicForms.Taxonomies")]
|
||||||
public class TaxonomyDriver : FormsElementDriver<Taxonomy> {
|
public class TaxonomyElementDriver : FormsElementDriver<Taxonomy> {
|
||||||
private readonly ITaxonomyService _taxonomyService;
|
private readonly ITaxonomyService _taxonomyService;
|
||||||
private readonly ITokenizer _tokenizer;
|
private readonly ITokenizer _tokenizer;
|
||||||
|
|
||||||
public TaxonomyDriver(IFormManager formManager, ITaxonomyService taxonomyService, ITokenizer tokenizer)
|
public TaxonomyElementDriver(IFormManager formManager, ITaxonomyService taxonomyService, ITokenizer tokenizer)
|
||||||
: base(formManager) {
|
: base(formManager) {
|
||||||
_taxonomyService = taxonomyService;
|
_taxonomyService = taxonomyService;
|
||||||
_tokenizer = tokenizer;
|
_tokenizer = tokenizer;
|
||||||
@@ -96,12 +96,11 @@ namespace Orchard.DynamicForms.Drivers {
|
|||||||
protected override void OnDisplaying(Taxonomy element, ElementDisplayContext context) {
|
protected override void OnDisplaying(Taxonomy element, ElementDisplayContext context) {
|
||||||
var taxonomyId = element.TaxonomyId;
|
var taxonomyId = element.TaxonomyId;
|
||||||
var typeName = element.GetType().Name;
|
var typeName = element.GetType().Name;
|
||||||
var category = element.Category.ToSafeName();
|
|
||||||
var displayType = context.DisplayType;
|
var displayType = context.DisplayType;
|
||||||
|
|
||||||
context.ElementShape.TermOptions = GetTermOptions(element, taxonomyId).ToArray();
|
context.ElementShape.TermOptions = GetTermOptions(element, taxonomyId).ToArray();
|
||||||
context.ElementShape.Metadata.Alternates.Add(String.Format("Element__{0}__{1}__{2}", category, typeName, element.InputType));
|
context.ElementShape.Metadata.Alternates.Add(String.Format("Elements_{0}__{1}", typeName, element.InputType));
|
||||||
context.ElementShape.Metadata.Alternates.Add(String.Format("Element_{0}__{1}__{2}__{3}", displayType, category, typeName, element.InputType));
|
context.ElementShape.Metadata.Alternates.Add(String.Format("Elements_{0}__{1}__{2}", displayType, typeName, element.InputType));
|
||||||
}
|
}
|
||||||
|
|
||||||
private IEnumerable<SelectListItem> GetTermOptions(Taxonomy element, int? taxonomyId) {
|
private IEnumerable<SelectListItem> GetTermOptions(Taxonomy element, int? taxonomyId) {
|
@@ -7,9 +7,9 @@ using Orchard.Tokens;
|
|||||||
using DescribeContext = Orchard.Forms.Services.DescribeContext;
|
using DescribeContext = Orchard.Forms.Services.DescribeContext;
|
||||||
|
|
||||||
namespace Orchard.DynamicForms.Drivers {
|
namespace Orchard.DynamicForms.Drivers {
|
||||||
public class TextAreaDriver : FormsElementDriver<TextArea> {
|
public class TextAreaElementDriver : FormsElementDriver<TextArea> {
|
||||||
private readonly ITokenizer _tokenizer;
|
private readonly ITokenizer _tokenizer;
|
||||||
public TextAreaDriver(IFormManager formManager, ITokenizer tokenizer) : base(formManager) {
|
public TextAreaElementDriver(IFormManager formManager, ITokenizer tokenizer) : base(formManager) {
|
||||||
_tokenizer = tokenizer;
|
_tokenizer = tokenizer;
|
||||||
}
|
}
|
||||||
|
|
@@ -6,10 +6,10 @@ using Orchard.Tokens;
|
|||||||
using DescribeContext = Orchard.Forms.Services.DescribeContext;
|
using DescribeContext = Orchard.Forms.Services.DescribeContext;
|
||||||
|
|
||||||
namespace Orchard.DynamicForms.Drivers {
|
namespace Orchard.DynamicForms.Drivers {
|
||||||
public class TextFieldDriver : FormsElementDriver<TextField>{
|
public class TextFieldElementDriver : FormsElementDriver<TextField>{
|
||||||
private readonly ITokenizer _tokenizer;
|
private readonly ITokenizer _tokenizer;
|
||||||
|
|
||||||
public TextFieldDriver(IFormManager formManager, ITokenizer tokenizer) : base(formManager) {
|
public TextFieldElementDriver(IFormManager formManager, ITokenizer tokenizer) : base(formManager) {
|
||||||
_tokenizer = tokenizer;
|
_tokenizer = tokenizer;
|
||||||
}
|
}
|
||||||
|
|
@@ -2,5 +2,5 @@
|
|||||||
using Orchard.Layouts.Framework.Drivers;
|
using Orchard.Layouts.Framework.Drivers;
|
||||||
|
|
||||||
namespace Orchard.DynamicForms.Drivers {
|
namespace Orchard.DynamicForms.Drivers {
|
||||||
public class IpAddressFieldDriver : ElementDriver<IpAddressField> { }
|
public class UserNameFieldElementDriver : ElementDriver<UserNameField> { }
|
||||||
}
|
}
|
@@ -4,8 +4,8 @@ using Orchard.Forms.Services;
|
|||||||
using Orchard.Layouts.Framework.Drivers;
|
using Orchard.Layouts.Framework.Drivers;
|
||||||
|
|
||||||
namespace Orchard.DynamicForms.Drivers {
|
namespace Orchard.DynamicForms.Drivers {
|
||||||
public class ValidationMessageDriver : FormsElementDriver<ValidationMessage> {
|
public class ValidationMessageElementDriver : FormsElementDriver<ValidationMessage> {
|
||||||
public ValidationMessageDriver(IFormManager formManager) : base(formManager) {}
|
public ValidationMessageElementDriver(IFormManager formManager) : base(formManager) {}
|
||||||
|
|
||||||
protected override IEnumerable<string> FormNames {
|
protected override IEnumerable<string> FormNames {
|
||||||
get { yield return "ValidationMessage"; }
|
get { yield return "ValidationMessage"; }
|
||||||
@@ -17,8 +17,8 @@ namespace Orchard.DynamicForms.Drivers {
|
|||||||
var form = shape.Fieldset(
|
var form = shape.Fieldset(
|
||||||
Id: "ValidationMessage",
|
Id: "ValidationMessage",
|
||||||
_ValidationMessageFor: shape.Textbox(
|
_ValidationMessageFor: shape.Textbox(
|
||||||
Id: "ValidationMessageFor",
|
Id: "For",
|
||||||
Name: "ValidationMessageFor",
|
Name: "For",
|
||||||
Title: "For",
|
Title: "For",
|
||||||
Classes: new[] { "text", "large" },
|
Classes: new[] { "text", "large" },
|
||||||
Description: T("The name of the field this validation message is for.")));
|
Description: T("The name of the field this validation message is for.")));
|
@@ -2,6 +2,6 @@
|
|||||||
using Orchard.Layouts.Framework.Drivers;
|
using Orchard.Layouts.Framework.Drivers;
|
||||||
|
|
||||||
namespace Orchard.DynamicForms.Drivers {
|
namespace Orchard.DynamicForms.Drivers {
|
||||||
public class ValidationSummaryDriver : ElementDriver<ValidationSummary> {
|
public class ValidationSummaryElementDriver : ElementDriver<ValidationSummary> {
|
||||||
}
|
}
|
||||||
}
|
}
|
@@ -2,13 +2,13 @@
|
|||||||
|
|
||||||
namespace Orchard.DynamicForms.Elements {
|
namespace Orchard.DynamicForms.Elements {
|
||||||
public class Button : FormElement {
|
public class Button : FormElement {
|
||||||
public override bool HasEditor {
|
public override string ToolboxIcon {
|
||||||
get { return true; }
|
get { return "\uf096"; }
|
||||||
}
|
}
|
||||||
|
|
||||||
public string Text {
|
public string Text {
|
||||||
get { return State.Get("ButtonText", "Submit"); }
|
get { return this.Retrieve(x => x.Text, () => "Submit"); }
|
||||||
set { State["ButtonText"] = value; }
|
set { this.Store(x => x.Text, value); }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@@ -2,8 +2,12 @@
|
|||||||
|
|
||||||
namespace Orchard.DynamicForms.Elements {
|
namespace Orchard.DynamicForms.Elements {
|
||||||
public class CheckBox : LabeledFormElement {
|
public class CheckBox : LabeledFormElement {
|
||||||
|
public override string ToolboxIcon {
|
||||||
|
get { return "\uf046"; }
|
||||||
|
}
|
||||||
|
|
||||||
public CheckBoxValidationSettings ValidationSettings {
|
public CheckBoxValidationSettings ValidationSettings {
|
||||||
get { return State.GetModel<CheckBoxValidationSettings>(""); }
|
get { return Data.GetModel<CheckBoxValidationSettings>(""); }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@@ -3,7 +3,7 @@
|
|||||||
namespace Orchard.DynamicForms.Elements {
|
namespace Orchard.DynamicForms.Elements {
|
||||||
public class EmailField : LabeledFormElement {
|
public class EmailField : LabeledFormElement {
|
||||||
public EmailFieldValidationSettings ValidationSettings {
|
public EmailFieldValidationSettings ValidationSettings {
|
||||||
get { return State.GetModel<EmailFieldValidationSettings>(""); }
|
get { return Data.GetModel<EmailFieldValidationSettings>(""); }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@@ -18,8 +18,8 @@ namespace Orchard.DynamicForms.Elements {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public string InputType {
|
public string InputType {
|
||||||
get { return State.Get("InputType", "SelectList"); }
|
get { return this.Retrieve(x => x.InputType, () => "SelectList"); }
|
||||||
set { State["InputType"] = value; }
|
set { this.Store(x => x.InputType, value); }
|
||||||
}
|
}
|
||||||
|
|
||||||
private IEnumerable<SelectListItem> GetOptions() {
|
private IEnumerable<SelectListItem> GetOptions() {
|
||||||
@@ -27,7 +27,7 @@ namespace Orchard.DynamicForms.Elements {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private IEnumerable<SelectListItem> ParseOptionsText() {
|
private IEnumerable<SelectListItem> ParseOptionsText() {
|
||||||
var data = State.Get("Options");
|
var data = this.Retrieve("Options", () => "");
|
||||||
var lines = Regex.Split(data, @"(?:\r\n|[\r\n])", RegexOptions.Multiline);
|
var lines = Regex.Split(data, @"(?:\r\n|[\r\n])", RegexOptions.Multiline);
|
||||||
return lines.Select(ParseLine).Where(x => x != null);
|
return lines.Select(ParseLine).Where(x => x != null);
|
||||||
}
|
}
|
||||||
|
@@ -4,57 +4,57 @@ using Orchard.Layouts.Helpers;
|
|||||||
namespace Orchard.DynamicForms.Elements {
|
namespace Orchard.DynamicForms.Elements {
|
||||||
public class Form : Container {
|
public class Form : Container {
|
||||||
public override string Category {
|
public override string Category {
|
||||||
get { return "Form"; }
|
get { return "Forms"; }
|
||||||
}
|
}
|
||||||
|
|
||||||
public string Name {
|
public string Name {
|
||||||
get { return State.Get("FormName", "Untitled"); }
|
get { return this.Retrieve("FormName", () => "Untitled"); }
|
||||||
set { State["FormName"] = value; }
|
set { this.Store("FormName", value); }
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool? EnableClientValidation {
|
public bool? EnableClientValidation {
|
||||||
get { return State.Get("EnableClientValidation").ToBoolean(); }
|
get { return this.Retrieve(x => x.EnableClientValidation); }
|
||||||
set { State["EnableClientValidation"] = value.ToString(); }
|
set { this.Store(x => x.EnableClientValidation, value); }
|
||||||
}
|
}
|
||||||
|
|
||||||
public string Action {
|
public string Action {
|
||||||
get { return State.Get("FormAction"); }
|
get { return this.Retrieve<string>("FormAction"); }
|
||||||
set { State["FormAction"] = value; }
|
set { this.Store("FormAction", value); }
|
||||||
}
|
}
|
||||||
|
|
||||||
public string Method {
|
public string Method {
|
||||||
get { return State.Get("FormMethod"); }
|
get { return this.Retrieve<string>("FormMethod"); }
|
||||||
set { State["FormMethod"] = value; }
|
set { this.Store("FormMethod", value); }
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool? StoreSubmission {
|
public bool? StoreSubmission {
|
||||||
get { return State.Get("StoreSubmission").ToBoolean(); }
|
get { return this.Retrieve(x => x.StoreSubmission); }
|
||||||
set { State["StoreSubmission"] = value != null ? value.Value.ToString() : null; }
|
set { this.Store(x => x.StoreSubmission, value); }
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool? CreateContent {
|
public bool? CreateContent {
|
||||||
get { return State.Get("CreateContent").ToBoolean(); }
|
get { return this.Retrieve(x => x.CreateContent); }
|
||||||
set { State["CreateContent"] = value != null ? value.Value.ToString() : null; }
|
set { this.Store(x => x.CreateContent, value); }
|
||||||
}
|
}
|
||||||
|
|
||||||
public string ContentType {
|
public string ContentType {
|
||||||
get { return State.Get("CreateContentType"); }
|
get { return this.Retrieve<string>("CreateContentType"); }
|
||||||
set { State["CreateContentType"] = value; }
|
set { this.Store("CreateContentType", value); }
|
||||||
}
|
}
|
||||||
|
|
||||||
public string Publication {
|
public string Publication {
|
||||||
get { return State.Get("Publication"); }
|
get { return this.Retrieve(x => x.Publication); }
|
||||||
set { State["Publication"] = value; }
|
set { this.Store(x => x.Publication, value); }
|
||||||
}
|
}
|
||||||
|
|
||||||
public string Notification {
|
public string Notification {
|
||||||
get { return State.Get("Notification"); }
|
get { return this.Retrieve(x => x.Notification); }
|
||||||
set { State["Notification"] = value; }
|
set { this.Store(x => x.Notification, value); }
|
||||||
}
|
}
|
||||||
|
|
||||||
public string RedirectUrl {
|
public string RedirectUrl {
|
||||||
get { return State.Get("RedirectUrl"); }
|
get { return this.Retrieve(x => x.RedirectUrl); }
|
||||||
set { State["RedirectUrl"] = value; }
|
set { this.Store(x => x.RedirectUrl, value); }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@@ -5,7 +5,7 @@ using Orchard.Layouts.Framework.Harvesters;
|
|||||||
namespace Orchard.DynamicForms.Elements {
|
namespace Orchard.DynamicForms.Elements {
|
||||||
public class FormCategoryProvider : Component, ICategoryProvider {
|
public class FormCategoryProvider : Component, ICategoryProvider {
|
||||||
public IEnumerable<Category> GetCategories() {
|
public IEnumerable<Category> GetCategories() {
|
||||||
yield return new Category("Form", T("Form"), T("Contains elements that help building forms."), 10);
|
yield return new Category("Forms", T("Forms"), T("Contains elements that help building forms."), 10);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@@ -11,19 +11,15 @@ namespace Orchard.DynamicForms.Elements {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public override string Category {
|
public override string Category {
|
||||||
get { return "Form"; }
|
get { return "Forms"; }
|
||||||
}
|
|
||||||
|
|
||||||
public override bool HasEditor {
|
|
||||||
get { return true; }
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public virtual string Name {
|
public virtual string Name {
|
||||||
get { return State.Get("InputName"); }
|
get { return this.Retrieve<string>("InputName"); }
|
||||||
}
|
}
|
||||||
|
|
||||||
public string Value {
|
public string Value {
|
||||||
get { return State.Get("Value"); }
|
get { return this.Retrieve(x => x.Value); }
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -40,8 +36,8 @@ namespace Orchard.DynamicForms.Elements {
|
|||||||
public string PostedValue { get; set; }
|
public string PostedValue { get; set; }
|
||||||
|
|
||||||
public string FormBindingContentType {
|
public string FormBindingContentType {
|
||||||
get { return State.Get("FormBindingContentType"); }
|
get { return this.Retrieve(x => x.FormBindingContentType); }
|
||||||
set { State["FormBindingContentType"] = value; }
|
set { this.Store(x => x.FormBindingContentType, value); }
|
||||||
}
|
}
|
||||||
|
|
||||||
public Form Form {
|
public Form Form {
|
||||||
|
@@ -4,7 +4,7 @@ using Orchard.Layouts.Helpers;
|
|||||||
namespace Orchard.DynamicForms.Elements {
|
namespace Orchard.DynamicForms.Elements {
|
||||||
public class Label : Element {
|
public class Label : Element {
|
||||||
public override string Category {
|
public override string Category {
|
||||||
get { return "Form"; }
|
get { return "Forms"; }
|
||||||
}
|
}
|
||||||
|
|
||||||
public override bool HasEditor {
|
public override bool HasEditor {
|
||||||
@@ -12,13 +12,13 @@ namespace Orchard.DynamicForms.Elements {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public string Text {
|
public string Text {
|
||||||
get { return State.Get("LabelText"); }
|
get { return this.Retrieve<string>("LabelText"); }
|
||||||
set { State["LabelText"] = value; }
|
set { this.Store("LabelText", value); }
|
||||||
}
|
}
|
||||||
|
|
||||||
public string For {
|
public string For {
|
||||||
get { return State.Get("LabelFor"); }
|
get { return this.Retrieve<string>("LabelFor"); }
|
||||||
set { State["LabelFor"] = value; }
|
set { this.Store("LabelFor", value); }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@@ -3,13 +3,13 @@
|
|||||||
namespace Orchard.DynamicForms.Elements {
|
namespace Orchard.DynamicForms.Elements {
|
||||||
public abstract class LabeledFormElement : FormElement {
|
public abstract class LabeledFormElement : FormElement {
|
||||||
public string Label {
|
public string Label {
|
||||||
get { return State.Get("Label"); }
|
get { return this.Retrieve(x => x.Label); }
|
||||||
set { State["Label"] = value; }
|
set { this.Store(x => x.Label, value); }
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool ShowLabel {
|
public bool ShowLabel {
|
||||||
get { return State.Get("ShowLabel").ToBoolean().GetValueOrDefault(); }
|
get { return this.Retrieve(x => x.ShowLabel); }
|
||||||
set { State["ShowLabel"] = value.ToString(); }
|
set { this.Store(x => x.ShowLabel, value); }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@@ -3,7 +3,7 @@
|
|||||||
namespace Orchard.DynamicForms.Elements {
|
namespace Orchard.DynamicForms.Elements {
|
||||||
public class PasswordField : LabeledFormElement {
|
public class PasswordField : LabeledFormElement {
|
||||||
public PasswordFieldValidationSettings ValidationSettings {
|
public PasswordFieldValidationSettings ValidationSettings {
|
||||||
get { return State.GetModel<PasswordFieldValidationSettings>(""); }
|
get { return Data.GetModel<PasswordFieldValidationSettings>(""); }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@@ -4,26 +4,26 @@ namespace Orchard.DynamicForms.Elements {
|
|||||||
public class Query : LabeledFormElement {
|
public class Query : LabeledFormElement {
|
||||||
|
|
||||||
public string InputType {
|
public string InputType {
|
||||||
get { return State.Get("InputType", "SelectList"); }
|
get { return this.Retrieve(x => x.InputType, () => "SelectList"); }
|
||||||
set { State["InputType"] = value; }
|
set { this.Store(x => x.InputType, value); }
|
||||||
}
|
}
|
||||||
|
|
||||||
public int? QueryId {
|
public int? QueryId {
|
||||||
get { return State.Get("QueryId").ToInt32(); }
|
get { return this.Retrieve(x => x.QueryId); }
|
||||||
set { State["QueryId"] = value.ToString(); }
|
set { this.Store(x => x.QueryId, value); }
|
||||||
}
|
}
|
||||||
|
|
||||||
public string OptionLabel {
|
public string OptionLabel {
|
||||||
get { return State.Get("OptionLabel"); }
|
get { return this.Retrieve(x => x.OptionLabel); }
|
||||||
set { State["OptionLabel"] = value; }
|
set { this.Store(x => x.OptionLabel, value); }
|
||||||
}
|
}
|
||||||
|
|
||||||
public string TextExpression {
|
public string TextExpression {
|
||||||
get { return State.Get("TextExpression", "{Content.Title}"); }
|
get { return this.Retrieve(x => x.TextExpression, () => "{Content.Title}"); }
|
||||||
}
|
}
|
||||||
|
|
||||||
public string ValueExpression {
|
public string ValueExpression {
|
||||||
get { return State.Get("ValueExpression", "{Content.Id}"); }
|
get { return this.Retrieve(x => x.ValueExpression, () => "{Content.Id}"); }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@@ -1,4 +1,7 @@
|
|||||||
namespace Orchard.DynamicForms.Elements {
|
namespace Orchard.DynamicForms.Elements {
|
||||||
public class RadioButton : LabeledFormElement {
|
public class RadioButton : LabeledFormElement {
|
||||||
|
public override string ToolboxIcon {
|
||||||
|
get { return "\uf192"; }
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@@ -3,7 +3,7 @@
|
|||||||
namespace Orchard.DynamicForms.Elements {
|
namespace Orchard.DynamicForms.Elements {
|
||||||
public class ReCaptcha : FormElement {
|
public class ReCaptcha : FormElement {
|
||||||
public ReCaptchaValidationSettings ValidationSettings {
|
public ReCaptchaValidationSettings ValidationSettings {
|
||||||
get { return State.GetModel<ReCaptchaValidationSettings>(""); }
|
get { return Data.GetModel<ReCaptchaValidationSettings>(""); }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@@ -4,33 +4,33 @@ namespace Orchard.DynamicForms.Elements {
|
|||||||
public class Taxonomy : LabeledFormElement {
|
public class Taxonomy : LabeledFormElement {
|
||||||
|
|
||||||
public string InputType {
|
public string InputType {
|
||||||
get { return State.Get("InputType", "SelectList"); }
|
get { return this.Retrieve(x => x.InputType, ()=> "SelectList"); }
|
||||||
set { State["InputType"] = value; }
|
set { this.Store(x => x.InputType, value); }
|
||||||
}
|
}
|
||||||
|
|
||||||
public int? TaxonomyId {
|
public int? TaxonomyId {
|
||||||
get { return State.Get("TaxonomyId").ToInt32(); }
|
get { return this.Retrieve(x => x.TaxonomyId); }
|
||||||
set { State["TaxonomyId"] = value.ToString(); }
|
set { this.Store(x => x.TaxonomyId, value); }
|
||||||
}
|
}
|
||||||
|
|
||||||
public string SortOrder {
|
public string SortOrder {
|
||||||
get { return State.Get("SortOrder"); }
|
get { return this.Retrieve(x => x.SortOrder); }
|
||||||
set { State["SortOrder"] = value; }
|
set { this.Store(x => x.SortOrder, value); }
|
||||||
}
|
}
|
||||||
|
|
||||||
public string OptionLabel {
|
public string OptionLabel {
|
||||||
get { return State.Get("OptionLabel"); }
|
get { return this.Retrieve(x => x.OptionLabel); }
|
||||||
set { State["OptionLabel"] = value; }
|
set { this.Store(x => x.OptionLabel, value); }
|
||||||
}
|
}
|
||||||
|
|
||||||
public string TextExpression {
|
public string TextExpression {
|
||||||
get { return State.Get("TextExpression"); }
|
get { return this.Retrieve(x => x.TextExpression); }
|
||||||
set { State["TextExpression"] = value; }
|
set { this.Store(x => x.TextExpression, value); }
|
||||||
}
|
}
|
||||||
|
|
||||||
public string ValueExpression {
|
public string ValueExpression {
|
||||||
get { return State.Get("ValueExpression"); }
|
get { return this.Retrieve(x => x.ValueExpression); }
|
||||||
set { State["ValueExpression"] = value; }
|
set { this.Store(x => x.ValueExpression, value); }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@@ -4,17 +4,17 @@ using Orchard.Layouts.Helpers;
|
|||||||
namespace Orchard.DynamicForms.Elements {
|
namespace Orchard.DynamicForms.Elements {
|
||||||
public class TextArea : LabeledFormElement {
|
public class TextArea : LabeledFormElement {
|
||||||
public int? Rows {
|
public int? Rows {
|
||||||
get { return State.Get("Rows").ToInt32(); }
|
get { return this.Retrieve(x => x.Rows); }
|
||||||
set { State["Rows"] = value.ToString(); }
|
set { this.Store(x => x.Rows, value); }
|
||||||
}
|
}
|
||||||
|
|
||||||
public int? Columns {
|
public int? Columns {
|
||||||
get { return State.Get("Columns").ToInt32(); }
|
get { return this.Retrieve(x => x.Columns); }
|
||||||
set { State["Columns"] = value.ToString(); }
|
set { this.Store(x => x.Columns, value); }
|
||||||
}
|
}
|
||||||
|
|
||||||
public TextAreaValidationSettings ValidationSettings {
|
public TextAreaValidationSettings ValidationSettings {
|
||||||
get { return State.GetModel<TextAreaValidationSettings>(""); }
|
get { return Data.GetModel<TextAreaValidationSettings>(""); }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@@ -3,7 +3,7 @@
|
|||||||
namespace Orchard.DynamicForms.Elements {
|
namespace Orchard.DynamicForms.Elements {
|
||||||
public class TextField : LabeledFormElement {
|
public class TextField : LabeledFormElement {
|
||||||
public TextFieldValidationSettings ValidationSettings {
|
public TextFieldValidationSettings ValidationSettings {
|
||||||
get { return State.GetModel<TextFieldValidationSettings>(""); }
|
get { return Data.GetModel<TextFieldValidationSettings>(""); }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@@ -1,13 +1,15 @@
|
|||||||
using Orchard.Layouts.Framework.Elements;
|
using Orchard.Layouts.Framework.Elements;
|
||||||
|
using Orchard.Layouts.Helpers;
|
||||||
|
|
||||||
namespace Orchard.DynamicForms.Elements {
|
namespace Orchard.DynamicForms.Elements {
|
||||||
public class ValidationMessage : Element {
|
public class ValidationMessage : Element {
|
||||||
public override string Category {
|
public override string Category {
|
||||||
get { return "Form"; }
|
get { return "Forms"; }
|
||||||
}
|
}
|
||||||
|
|
||||||
public override bool HasEditor {
|
public string For {
|
||||||
get { return true; }
|
get { return this.Retrieve(x => x.For); }
|
||||||
|
set { this.Store(x => x.For, value); }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@@ -3,7 +3,7 @@
|
|||||||
namespace Orchard.DynamicForms.Elements {
|
namespace Orchard.DynamicForms.Elements {
|
||||||
public class ValidationSummary : Element {
|
public class ValidationSummary : Element {
|
||||||
public override string Category {
|
public override string Category {
|
||||||
get { return "Form"; }
|
get { return "Forms"; }
|
||||||
}
|
}
|
||||||
|
|
||||||
public override bool HasEditor {
|
public override bool HasEditor {
|
||||||
|
@@ -0,0 +1,22 @@
|
|||||||
|
using Orchard.DisplayManagement.Descriptors;
|
||||||
|
using Orchard.Environment;
|
||||||
|
using Orchard.UI.Resources;
|
||||||
|
|
||||||
|
namespace Orchard.DynamicForms.Handlers {
|
||||||
|
public class LayoutEditorShapeEventHandler : IShapeTableProvider {
|
||||||
|
private readonly Work<IResourceManager> _resourceManager;
|
||||||
|
public LayoutEditorShapeEventHandler(Work<IResourceManager> resourceManager) {
|
||||||
|
_resourceManager = resourceManager;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Discover(ShapeTableBuilder builder) {
|
||||||
|
builder.Describe("EditorTemplate").OnDisplaying(context => {
|
||||||
|
if (context.Shape.TemplateName != "Parts.Layout")
|
||||||
|
return;
|
||||||
|
|
||||||
|
_resourceManager.Value.Require("stylesheet", "DynamicForms.FormElements");
|
||||||
|
_resourceManager.Value.Require("script", "DynamicForms.FormElements");
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@@ -23,7 +23,7 @@ namespace Orchard.DynamicForms {
|
|||||||
.WithSetting("AutorouteSettings.PatternDefinitions", "[{\"Name\":\"Title\",\"Pattern\":\"{Content.Slug}\",\"Description\":\"my-form\"}]")
|
.WithSetting("AutorouteSettings.PatternDefinitions", "[{\"Name\":\"Title\",\"Pattern\":\"{Content.Slug}\",\"Description\":\"my-form\"}]")
|
||||||
.WithSetting("AutorouteSettings.DefaultPatternIndex", "0"))
|
.WithSetting("AutorouteSettings.DefaultPatternIndex", "0"))
|
||||||
.WithPart("LayoutPart", p => p
|
.WithPart("LayoutPart", p => p
|
||||||
.WithSetting("LayoutTypePartSettings.DefaultLayoutState",
|
.WithSetting("LayoutTypePartSettings.DefaultLayoutData",
|
||||||
"{" +
|
"{" +
|
||||||
"\"elements\": [{" +
|
"\"elements\": [{" +
|
||||||
"\"typeName\": \"Orchard.DynamicForms.Elements.Form\"," +
|
"\"typeName\": \"Orchard.DynamicForms.Elements.Form\"," +
|
||||||
@@ -44,7 +44,7 @@ namespace Orchard.DynamicForms {
|
|||||||
.WithSetting("DateEditorSettings.ShowDateEditor", "false"))
|
.WithSetting("DateEditorSettings.ShowDateEditor", "false"))
|
||||||
.WithPart("WidgetPart")
|
.WithPart("WidgetPart")
|
||||||
.WithPart("LayoutPart", p => p
|
.WithPart("LayoutPart", p => p
|
||||||
.WithSetting("LayoutTypePartSettings.DefaultLayoutState",
|
.WithSetting("LayoutTypePartSettings.DefaultLayoutData",
|
||||||
"{" +
|
"{" +
|
||||||
"\"elements\": [{" +
|
"\"elements\": [{" +
|
||||||
"\"typeName\": \"Orchard.DynamicForms.Elements.Form\"," +
|
"\"typeName\": \"Orchard.DynamicForms.Elements.Form\"," +
|
||||||
|
@@ -10,7 +10,7 @@ Features:
|
|||||||
Name: Dynamic Forms
|
Name: Dynamic Forms
|
||||||
Description: Create custom forms like contact forms using layouts.
|
Description: Create custom forms like contact forms using layouts.
|
||||||
Category: Forms
|
Category: Forms
|
||||||
Dependencies: Orchard.Layouts, Orchard.Scripting.CSharp, Orchard.Tokens, Orchard.Workflows, Orchard.Users, Orchard.AuditTrail, Common
|
Dependencies: Orchard.Layouts, Orchard.Scripting.CSharp, Orchard.Tokens, Orchard.Workflows, Orchard.Users, Orchard.AuditTrail, Orchard.Fields, Common
|
||||||
Orchard.DynamicForms.AntiSpam:
|
Orchard.DynamicForms.AntiSpam:
|
||||||
Name: Anti-Spam Elements
|
Name: Anti-Spam Elements
|
||||||
Description: Provides anti-spam elements to protect your content from malicious submissions.
|
Description: Provides anti-spam elements to protect your content from malicious submissions.
|
||||||
|
@@ -48,6 +48,10 @@
|
|||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Reference Include="Microsoft.CSharp" />
|
<Reference Include="Microsoft.CSharp" />
|
||||||
|
<Reference Include="Newtonsoft.Json, Version=4.5.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
|
||||||
|
<SpecificVersion>False</SpecificVersion>
|
||||||
|
<HintPath>..\..\..\..\lib\newtonsoft.json\Newtonsoft.Json.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
<Reference Include="System" />
|
<Reference Include="System" />
|
||||||
<Reference Include="System.Data" />
|
<Reference Include="System.Data" />
|
||||||
<Reference Include="System.ComponentModel.DataAnnotations">
|
<Reference Include="System.ComponentModel.DataAnnotations">
|
||||||
@@ -74,14 +78,25 @@
|
|||||||
<Reference Include="System.Xml.Linq" />
|
<Reference Include="System.Xml.Linq" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Content Include="Scripts\jquery.validate.js" />
|
<Content Include="Scripts\Forms.js">
|
||||||
<Content Include="Scripts\jquery.validate.min.js" />
|
<DependentUpon>Forms.js.bundle</DependentUpon>
|
||||||
<Content Include="Scripts\jquery.validate.unobtrusive.additional.js" />
|
</Content>
|
||||||
<Content Include="Scripts\jquery.validate.unobtrusive.js" />
|
<Content Include="Scripts\Forms.min.js">
|
||||||
<Content Include="Scripts\jquery.validate.unobtrusive.min.js" />
|
<DependentUpon>Forms.js</DependentUpon>
|
||||||
<Content Include="Styles\form-elements.css" />
|
</Content>
|
||||||
|
<Content Include="Scripts\Layouts\Directives\Form.js" />
|
||||||
|
<Content Include="Scripts\Layouts\Models\Form.js" />
|
||||||
|
<Content Include="Scripts\Lib\jquery.validate.js" />
|
||||||
|
<Content Include="Scripts\Lib\jquery.validate.min.js">
|
||||||
|
<DependentUpon>jquery.validate.js</DependentUpon>
|
||||||
|
</Content>
|
||||||
|
<Content Include="Scripts\Lib\jquery.validate.unobtrusive.additional.js" />
|
||||||
|
<Content Include="Scripts\Lib\jquery.validate.unobtrusive.js" />
|
||||||
|
<Content Include="Scripts\Lib\jquery.validate.unobtrusive.min.js">
|
||||||
|
<DependentUpon>jquery.validate.unobtrusive.js</DependentUpon>
|
||||||
|
</Content>
|
||||||
|
<Content Include="Styles\forms.css" />
|
||||||
<Content Include="Styles\forms-admin.css" />
|
<Content Include="Styles\forms-admin.css" />
|
||||||
<Content Include="Styles\form.designer.css" />
|
|
||||||
<Content Include="Styles\menu.dynamicforms-admin.css" />
|
<Content Include="Styles\menu.dynamicforms-admin.css" />
|
||||||
<Content Include="Styles\menu.dynamicforms.png" />
|
<Content Include="Styles\menu.dynamicforms.png" />
|
||||||
<Content Include="Web.config" />
|
<Content Include="Web.config" />
|
||||||
@@ -107,6 +122,10 @@
|
|||||||
<Project>{3dd574cd-9c5d-4a45-85e1-ebba64c22b5f}</Project>
|
<Project>{3dd574cd-9c5d-4a45-85e1-ebba64c22b5f}</Project>
|
||||||
<Name>Orchard.AuditTrail</Name>
|
<Name>Orchard.AuditTrail</Name>
|
||||||
</ProjectReference>
|
</ProjectReference>
|
||||||
|
<ProjectReference Include="..\Orchard.Fields\Orchard.Fields.csproj">
|
||||||
|
<Project>{3787dde5-e5c8-4841-bda7-dcb325388064}</Project>
|
||||||
|
<Name>Orchard.Fields</Name>
|
||||||
|
</ProjectReference>
|
||||||
<ProjectReference Include="..\Orchard.Forms\Orchard.Forms.csproj">
|
<ProjectReference Include="..\Orchard.Forms\Orchard.Forms.csproj">
|
||||||
<Project>{642a49d7-8752-4177-80d6-bfbbcfad3de0}</Project>
|
<Project>{642a49d7-8752-4177-80d6-bfbbcfad3de0}</Project>
|
||||||
<Name>Orchard.Forms</Name>
|
<Name>Orchard.Forms</Name>
|
||||||
@@ -145,6 +164,10 @@
|
|||||||
<Compile Include="Activities\AddModelErrorActivity.cs" />
|
<Compile Include="Activities\AddModelErrorActivity.cs" />
|
||||||
<Compile Include="Activities\DynamicFormValidatingActivity.cs" />
|
<Compile Include="Activities\DynamicFormValidatingActivity.cs" />
|
||||||
<Compile Include="Activities\DynamicFormSubmittedActivity.cs" />
|
<Compile Include="Activities\DynamicFormSubmittedActivity.cs" />
|
||||||
|
<Compile Include="Bindings\BooleanFieldBindings.cs" />
|
||||||
|
<Compile Include="Bindings\EnumerationFieldBindings.cs" />
|
||||||
|
<Compile Include="Bindings\InputFieldBindings.cs" />
|
||||||
|
<Compile Include="Bindings\TaxonomyFieldBindings.cs" />
|
||||||
<Compile Include="Forms\AddModelErrorForm.cs" />
|
<Compile Include="Forms\AddModelErrorForm.cs" />
|
||||||
<Compile Include="Forms\SelectDynamicForms.cs" />
|
<Compile Include="Forms\SelectDynamicForms.cs" />
|
||||||
<Compile Include="Bindings\TextFieldBindings.cs" />
|
<Compile Include="Bindings\TextFieldBindings.cs" />
|
||||||
@@ -153,12 +176,12 @@
|
|||||||
<Compile Include="Controllers\SubmissionAdminController.cs" />
|
<Compile Include="Controllers\SubmissionAdminController.cs" />
|
||||||
<Compile Include="Controllers\AdminController.cs" />
|
<Compile Include="Controllers\AdminController.cs" />
|
||||||
<Compile Include="Controllers\FormController.cs" />
|
<Compile Include="Controllers\FormController.cs" />
|
||||||
<Compile Include="Drivers\EmailFieldDriver.cs" />
|
<Compile Include="Drivers\EmailFieldElementDriver.cs" />
|
||||||
<Compile Include="Drivers\PasswordFieldDriver.cs" />
|
<Compile Include="Drivers\PasswordFieldElementDriver.cs" />
|
||||||
<Compile Include="Drivers\QueryDriver.cs" />
|
<Compile Include="Drivers\QueryElementDriver.cs" />
|
||||||
<Compile Include="Drivers\ReCaptchaDriver.cs" />
|
<Compile Include="Drivers\ReCaptchaElementDriver.cs" />
|
||||||
<Compile Include="Drivers\ValidationMessageDriver.cs" />
|
<Compile Include="Drivers\ValidationMessageElementDriver.cs" />
|
||||||
<Compile Include="Drivers\ValidationSummaryDriver.cs" />
|
<Compile Include="Drivers\ValidationSummaryElementDriver.cs" />
|
||||||
<Compile Include="Elements\EmailField.cs" />
|
<Compile Include="Elements\EmailField.cs" />
|
||||||
<Compile Include="Elements\PasswordField.cs" />
|
<Compile Include="Elements\PasswordField.cs" />
|
||||||
<Compile Include="Elements\Query.cs" />
|
<Compile Include="Elements\Query.cs" />
|
||||||
@@ -167,7 +190,10 @@
|
|||||||
<Compile Include="Elements\ValidationSummary.cs" />
|
<Compile Include="Elements\ValidationSummary.cs" />
|
||||||
<Compile Include="Forms\DynamicFormValidatingForm.cs" />
|
<Compile Include="Forms\DynamicFormValidatingForm.cs" />
|
||||||
<Compile Include="Handlers\ClientValidationRegistrationCoordinator.cs" />
|
<Compile Include="Handlers\ClientValidationRegistrationCoordinator.cs" />
|
||||||
|
<Compile Include="Handlers\LayoutEditorShapeEventHandler.cs" />
|
||||||
<Compile Include="Handlers\WorkflowValidatorCoordinator.cs" />
|
<Compile Include="Handlers\WorkflowValidatorCoordinator.cs" />
|
||||||
|
<Compile Include="ResourceManifest.cs" />
|
||||||
|
<Compile Include="Services\FormModelMap.cs" />
|
||||||
<Compile Include="Services\Models\FormSubmissionTokenContext.cs" />
|
<Compile Include="Services\Models\FormSubmissionTokenContext.cs" />
|
||||||
<Compile Include="Handlers\ValidatorsCoordinator.cs" />
|
<Compile Include="Handlers\ValidatorsCoordinator.cs" />
|
||||||
<Compile Include="Handlers\FormSubmissionCoordinator.cs" />
|
<Compile Include="Handlers\FormSubmissionCoordinator.cs" />
|
||||||
@@ -203,13 +229,13 @@
|
|||||||
<Compile Include="Services\Models\FormEventContext.cs" />
|
<Compile Include="Services\Models\FormEventContext.cs" />
|
||||||
<Compile Include="Drivers\ValidationElementDriver.cs" />
|
<Compile Include="Drivers\ValidationElementDriver.cs" />
|
||||||
<Compile Include="Drivers\BindingsElementDriver.cs" />
|
<Compile Include="Drivers\BindingsElementDriver.cs" />
|
||||||
<Compile Include="Drivers\TaxonomyDriver.cs" />
|
<Compile Include="Drivers\TaxonomyElementDriver.cs" />
|
||||||
<Compile Include="Drivers\HiddenFieldDriver.cs" />
|
<Compile Include="Drivers\HiddenFieldElementDriver.cs" />
|
||||||
<Compile Include="Drivers\CheckboxDriver.cs" />
|
<Compile Include="Drivers\CheckboxElementDriver.cs" />
|
||||||
<Compile Include="Drivers\TextAreaDriver.cs" />
|
<Compile Include="Drivers\TextAreaElementDriver.cs" />
|
||||||
<Compile Include="Drivers\RadioButtonDriver.cs" />
|
<Compile Include="Drivers\RadioButtonElementDriver.cs" />
|
||||||
<Compile Include="Drivers\EnumerationDriver.cs" />
|
<Compile Include="Drivers\EnumerationElementDriver.cs" />
|
||||||
<Compile Include="Drivers\UserNameFieldDriver.cs" />
|
<Compile Include="Drivers\UserNameFieldElementDriver.cs" />
|
||||||
<Compile Include="Elements\LabeledFormElement.cs" />
|
<Compile Include="Elements\LabeledFormElement.cs" />
|
||||||
<Compile Include="Elements\Taxonomy.cs" />
|
<Compile Include="Elements\Taxonomy.cs" />
|
||||||
<Compile Include="Elements\HiddenField.cs" />
|
<Compile Include="Elements\HiddenField.cs" />
|
||||||
@@ -257,9 +283,9 @@
|
|||||||
<Compile Include="Helpers\SubmissionExtensions.cs" />
|
<Compile Include="Helpers\SubmissionExtensions.cs" />
|
||||||
<Compile Include="ViewModels\FormsIndexViewModel.cs" />
|
<Compile Include="ViewModels\FormsIndexViewModel.cs" />
|
||||||
<Compile Include="Drivers\CommonFormElementDriver.cs" />
|
<Compile Include="Drivers\CommonFormElementDriver.cs" />
|
||||||
<Compile Include="Drivers\FormDriver.cs" />
|
<Compile Include="Drivers\FormElementDriver.cs" />
|
||||||
<Compile Include="Drivers\ButtonDriver.cs" />
|
<Compile Include="Drivers\ButtonElementDriver.cs" />
|
||||||
<Compile Include="Drivers\IpAddressFieldDriver.cs" />
|
<Compile Include="Drivers\IpAddressFieldElementDriver.cs" />
|
||||||
<Compile Include="Elements\IpAddressField.cs" />
|
<Compile Include="Elements\IpAddressField.cs" />
|
||||||
<Compile Include="Handlers\IpAddressFieldHandler.cs" />
|
<Compile Include="Handlers\IpAddressFieldHandler.cs" />
|
||||||
<Compile Include="AdminMenu.cs" />
|
<Compile Include="AdminMenu.cs" />
|
||||||
@@ -272,8 +298,8 @@
|
|||||||
<Compile Include="Services\FormService.cs" />
|
<Compile Include="Services\FormService.cs" />
|
||||||
<Compile Include="Services\IFormElementEventHandler.cs" />
|
<Compile Include="Services\IFormElementEventHandler.cs" />
|
||||||
<Compile Include="Services\IFormService.cs" />
|
<Compile Include="Services\IFormService.cs" />
|
||||||
<Compile Include="Drivers\LabelDriver.cs" />
|
<Compile Include="Drivers\LabelElementDriver.cs" />
|
||||||
<Compile Include="Drivers\TextFieldDriver.cs" />
|
<Compile Include="Drivers\TextFieldElementDriver.cs" />
|
||||||
<Compile Include="Elements\FormCategoryProvider.cs" />
|
<Compile Include="Elements\FormCategoryProvider.cs" />
|
||||||
<Compile Include="Elements\FormElement.cs" />
|
<Compile Include="Elements\FormElement.cs" />
|
||||||
<Compile Include="Elements\Form.cs" />
|
<Compile Include="Elements\Form.cs" />
|
||||||
@@ -286,28 +312,25 @@
|
|||||||
<Content Include="Views\SubmissionAdmin\Index.cshtml" />
|
<Content Include="Views\SubmissionAdmin\Index.cshtml" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Content Include="Views\Element-Form-TextField.cshtml" />
|
<Content Include="Views\Elements\TextField.cshtml" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Content Include="Views\Element-Form.Design.cshtml" />
|
<Content Include="Views\Elements\Button.cshtml" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Content Include="Views\Element-Form-Button.cshtml" />
|
<Content Include="Views\Elements\Form.cshtml" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Content Include="Views\Element-Form.cshtml" />
|
<Content Include="Views\Elements\Label.cshtml" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Content Include="Views\Element-Form-Label.cshtml" />
|
<Content Include="Views\Elements\TextField.Design.cshtml" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Content Include="Views\Element-Form-TextField.Design.cshtml" />
|
<Content Include="Views\Elements\IpAddressField.cshtml" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Content Include="Views\Element-Form-IpAddressField.cshtml" />
|
<Content Include="Views\Elements\IpAddressField.Design.cshtml" />
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<Content Include="Views\Element-Form-IpAddressField.Design.cshtml" />
|
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Content Include="Views\Admin\Index.cshtml" />
|
<Content Include="Views\Admin\Index.cshtml" />
|
||||||
@@ -319,58 +342,58 @@
|
|||||||
<Content Include="Views\EditorTemplates\FormBindings.cshtml" />
|
<Content Include="Views\EditorTemplates\FormBindings.cshtml" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Content Include="Views\Element-Form-UserNameField.cshtml" />
|
<Content Include="Views\Elements\UserNameField.cshtml" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Content Include="Views\Element-Form-UserNameField.Design.cshtml" />
|
<Content Include="Views\Elements\UserNameField.Design.cshtml" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Content Include="Views\Element-Form-HiddenField.Design.cshtml" />
|
<Content Include="Views\Elements\HiddenField.Design.cshtml" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Content Include="Views\Element-Form-HiddenField.cshtml" />
|
<Content Include="Views\Elements\HiddenField.cshtml" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Content Include="Views\Element-Form-TextArea.cshtml" />
|
<Content Include="Views\Elements\TextArea.cshtml" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Content Include="Views\Element-Form-TextArea.Design.cshtml" />
|
<Content Include="Views\Elements\TextArea.Design.cshtml" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Content Include="Views\Element-Form-RadioButton.cshtml" />
|
<Content Include="Views\Elements\RadioButton.cshtml" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Content Include="Views\Element-Form-RadioButton.Design.cshtml" />
|
<Content Include="Views\Elements\RadioButton.Design.cshtml" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Content Include="Views\Element-Form-Checkbox.Design.cshtml" />
|
<Content Include="Views\Elements\Checkbox.Design.cshtml" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Content Include="Views\Element-Form-Checkbox.cshtml" />
|
<Content Include="Views\Elements\Checkbox.cshtml" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Content Include="Views\Element-Form-Enumeration-SelectList.cshtml" />
|
<Content Include="Views\Elements\Enumeration-SelectList.cshtml" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Content Include="Views\Element-Form-Enumeration-MultiSelectList.cshtml" />
|
<Content Include="Views\Elements\Enumeration-MultiSelectList.cshtml" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Content Include="Views\Element-Form-Enumeration-RadioList.cshtml" />
|
<Content Include="Views\Elements\Enumeration-RadioList.cshtml" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Content Include="Views\Element-Form-Enumeration-CheckList.cshtml" />
|
<Content Include="Views\Elements\Enumeration-CheckList.cshtml" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Content Include="Views\Element-Form-Taxonomy-SelectList.cshtml" />
|
<Content Include="Views\Elements\Taxonomy-SelectList.cshtml" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Content Include="Views\Element-Form-Taxonomy-RadioList.cshtml" />
|
<Content Include="Views\Elements\Taxonomy-RadioList.cshtml" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Content Include="Views\Element-Form-Taxonomy-MultiSelectList.cshtml" />
|
<Content Include="Views\Elements\Taxonomy-MultiSelectList.cshtml" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Content Include="Views\Element-Form-Taxonomy-CheckList.cshtml" />
|
<Content Include="Views\Elements\Taxonomy-CheckList.cshtml" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Content Include="Views\Activity-DynamicFormSubmitted.cshtml" />
|
<Content Include="Views\Activity-DynamicFormSubmitted.cshtml" />
|
||||||
@@ -379,49 +402,70 @@
|
|||||||
<Content Include="Views\BlueprintAdmin\Index.cshtml" />
|
<Content Include="Views\BlueprintAdmin\Index.cshtml" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Content Include="Views\Element-Form-ValidationSummary.cshtml" />
|
<Content Include="Views\Elements\ValidationSummary.cshtml" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Content Include="Views\Element-Form-ValidationSummary.Design.cshtml" />
|
<Content Include="Views\Elements\ValidationSummary.Design.cshtml" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Content Include="Views\Element-Form-ValidationMessage.cshtml" />
|
<Content Include="Views\Elements\ValidationMessage.cshtml" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Content Include="Views\Element-Form-ValidationMessage.Design.cshtml" />
|
<Content Include="Views\Elements\ValidationMessage.Design.cshtml" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Content Include="Views\FormElement.Wrapper.cshtml" />
|
<Content Include="Views\FormElement.Wrapper.cshtml" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Content Include="Views\Element-Form-PasswordField.Design.cshtml" />
|
<Content Include="Views\Elements\PasswordField.Design.cshtml" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Content Include="Views\Element-Form-PasswordField.cshtml" />
|
<Content Include="Views\Elements\PasswordField.cshtml" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Content Include="Views\Element-Form-Query-SelectList.cshtml" />
|
<Content Include="Views\Elements\Query-SelectList.cshtml" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Content Include="Views\Element-Form-Query-CheckList.cshtml" />
|
<Content Include="Views\Elements\Query-CheckList.cshtml" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Content Include="Views\Element-Form-Query-MultiSelectList.cshtml" />
|
<Content Include="Views\Elements\Query-MultiSelectList.cshtml" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Content Include="Views\Element-Form-Query-RadioList.cshtml" />
|
<Content Include="Views\Elements\Query-RadioList.cshtml" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Content Include="Views\Element-Form-EmailField.Design.cshtml" />
|
<Content Include="Views\Elements\EmailField.Design.cshtml" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Content Include="Views\Element-Form-EmailField.cshtml" />
|
<Content Include="Views\Elements\EmailField.cshtml" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Content Include="Views\Element-Form-ReCaptcha.cshtml" />
|
<Content Include="Views\Elements\ReCaptcha.cshtml" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Content Include="Views\Element-Form-ReCaptcha.Design.cshtml" />
|
<Content Include="Views\Elements\ReCaptcha.Design.cshtml" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<Content Include="Scripts\Lib\jquery.validate.min.js.map">
|
||||||
|
<DependentUpon>jquery.validate.min.js</DependentUpon>
|
||||||
|
</Content>
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<Content Include="Scripts\Lib\jquery.validate.unobtrusive.min.js.map">
|
||||||
|
<DependentUpon>jquery.validate.unobtrusive.min.js</DependentUpon>
|
||||||
|
</Content>
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<Content Include="Scripts\Forms.js.bundle" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<Content Include="Views\LayoutEditor.Template.Form.cshtml" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<Content Include="Scripts\Forms.min.js.map">
|
||||||
|
<DependentUpon>Forms.min.js</DependentUpon>
|
||||||
|
</Content>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">10.0</VisualStudioVersion>
|
<VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">10.0</VisualStudioVersion>
|
||||||
|
@@ -0,0 +1,11 @@
|
|||||||
|
using Orchard.UI.Resources;
|
||||||
|
|
||||||
|
namespace Orchard.DynamicForms {
|
||||||
|
public class ResourceManifest : IResourceManifestProvider {
|
||||||
|
public void BuildManifests(ResourceManifestBuilder builder) {
|
||||||
|
var manifest = builder.Add();
|
||||||
|
manifest.DefineStyle("DynamicForms.FormElements").SetUrl("forms-admin.css");
|
||||||
|
manifest.DefineScript("DynamicForms.FormElements").SetUrl("Forms.min.js", "Forms.js").SetDependencies("Layouts.LayoutEditor");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@@ -0,0 +1,96 @@
|
|||||||
|
angular
|
||||||
|
.module("LayoutEditor")
|
||||||
|
.directive("orcLayoutForm", function ($compile, scopeConfigurator, environment) {
|
||||||
|
return {
|
||||||
|
restrict: "E",
|
||||||
|
scope: { element: "=" },
|
||||||
|
controller: function ($scope, $element) {
|
||||||
|
scopeConfigurator.configureForElement($scope, $element);
|
||||||
|
scopeConfigurator.configureForContainer($scope, $element);
|
||||||
|
$scope.sortableOptions["axis"] = "y";
|
||||||
|
$scope.edit = function () {
|
||||||
|
$scope.$root.editElement($scope.element).then(function (args) {
|
||||||
|
if (args.cancel)
|
||||||
|
return;
|
||||||
|
$scope.element.data = decodeURIComponent(args.element.data);
|
||||||
|
$scope.element.name = args.elementEditorModel.name;
|
||||||
|
$scope.$apply();
|
||||||
|
});
|
||||||
|
};
|
||||||
|
},
|
||||||
|
templateUrl: environment.templateUrl("Form"),
|
||||||
|
replace: true
|
||||||
|
};
|
||||||
|
});
|
||||||
|
var LayoutEditor;
|
||||||
|
(function ($, LayoutEditor) {
|
||||||
|
|
||||||
|
LayoutEditor.Form = function (data, htmlId, htmlClass, htmlStyle, isTemplated, name, formBindingContentType, contentType, contentTypeLabel, contentTypeClass, hasEditor, children) {
|
||||||
|
LayoutEditor.Element.call(this, "Form", data, htmlId, htmlClass, htmlStyle, isTemplated);
|
||||||
|
LayoutEditor.Container.call(this, ["Grid", "Content"], children);
|
||||||
|
|
||||||
|
var self = this;
|
||||||
|
this.isContainable = true;
|
||||||
|
this.dropTargetClass = "layout-common-holder";
|
||||||
|
this.contentType = contentType;
|
||||||
|
this.contentTypeLabel = contentTypeLabel;
|
||||||
|
this.contentTypeClass = contentTypeClass;
|
||||||
|
this.name = name || "Untitled";
|
||||||
|
this.formBindingContentType = formBindingContentType;
|
||||||
|
this.hasEditor = hasEditor;
|
||||||
|
|
||||||
|
this.toObject = function () {
|
||||||
|
var result = this.elementToObject();
|
||||||
|
result.name = this.name;
|
||||||
|
result.formBindingContentType = formBindingContentType;
|
||||||
|
result.children = this.childrenToObject();
|
||||||
|
|
||||||
|
return result;
|
||||||
|
};
|
||||||
|
|
||||||
|
var getEditorObject = this.getEditorObject;
|
||||||
|
this.getEditorObject = function() {
|
||||||
|
var dto = getEditorObject();
|
||||||
|
return $.extend(dto, {
|
||||||
|
FormName: this.name,
|
||||||
|
FormBindingContentType: this.formBindingContentType
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
this.setChildren = function (children) {
|
||||||
|
this.children = children;
|
||||||
|
_(this.children).each(function (child) {
|
||||||
|
child.parent = self;
|
||||||
|
|
||||||
|
var getEditorObject = child.getEditorObject;
|
||||||
|
child.getEditorObject = function () {
|
||||||
|
var dto = getEditorObject();
|
||||||
|
return $.extend(dto, {
|
||||||
|
FormBindingContentType: self.formBindingContentType
|
||||||
|
});
|
||||||
|
};
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
this.setChildren(children);
|
||||||
|
};
|
||||||
|
|
||||||
|
LayoutEditor.Form.from = function (value) {
|
||||||
|
return new LayoutEditor.Form(
|
||||||
|
value.data,
|
||||||
|
value.htmlId,
|
||||||
|
value.htmlClass,
|
||||||
|
value.htmlStyle,
|
||||||
|
value.isTemplated,
|
||||||
|
value.name,
|
||||||
|
value.formBindingContentType,
|
||||||
|
value.contentType,
|
||||||
|
value.contentTypeLabel,
|
||||||
|
value.contentTypeClass,
|
||||||
|
value.hasEditor,
|
||||||
|
LayoutEditor.childrenFrom(value.children));
|
||||||
|
};
|
||||||
|
|
||||||
|
LayoutEditor.registerFactory("Form", function(value) { return LayoutEditor.Form.from(value); });
|
||||||
|
|
||||||
|
})(jQuery, LayoutEditor || (LayoutEditor = {}));
|
@@ -0,0 +1,16 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<bundle xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://vswebessentials.com/schemas/v1/bundle.xsd">
|
||||||
|
<settings>
|
||||||
|
<!--Determines if the bundle file should be automatically optimized after creation/update.-->
|
||||||
|
<minify>true</minify>
|
||||||
|
<!--Determine whether to generate/re-generate this bundle on building the solution.-->
|
||||||
|
<runOnBuild>false</runOnBuild>
|
||||||
|
<!--Specifies a custom subfolder to save files to. By default, compiled output will be placed in the same folder and nested under the original file.-->
|
||||||
|
<outputDirectory />
|
||||||
|
</settings>
|
||||||
|
<!--The order of the <file> elements determines the order of the files in the bundle.-->
|
||||||
|
<files>
|
||||||
|
<file>/Scripts/Layouts/Directives/Form.js</file>
|
||||||
|
<file>/Scripts/Layouts/Models/Form.js</file>
|
||||||
|
</files>
|
||||||
|
</bundle>
|
1
src/Orchard.Web/Modules/Orchard.DynamicForms/Scripts/Forms.min.js
vendored
Normal file
1
src/Orchard.Web/Modules/Orchard.DynamicForms/Scripts/Forms.min.js
vendored
Normal file
@@ -0,0 +1 @@
|
|||||||
|
angular.module("LayoutEditor").directive("orcLayoutForm",function(n,t,i){return{restrict:"E",scope:{element:"="},controller:function(n,i){t.configureForElement(n,i);t.configureForContainer(n,i);n.sortableOptions.axis="y";n.edit=function(){n.$root.editElement(n.element).then(function(t){t.cancel||(n.element.data=decodeURIComponent(t.element.data),n.element.name=t.elementEditorModel.name,n.$apply())})}},templateUrl:i.templateUrl("Form"),replace:!0}});var LayoutEditor;(function(n,t){t.Form=function(i,r,u,f,e,o,s,h,c,l,a,v){var y,p;t.Element.call(this,"Form",i,r,u,f,e);t.Container.call(this,["Grid","Content"],v);y=this;this.isContainable=!0;this.dropTargetClass="layout-common-holder";this.contentType=h;this.contentTypeLabel=c;this.contentTypeClass=l;this.name=o||"Untitled";this.formBindingContentType=s;this.hasEditor=a;this.toObject=function(){var n=this.elementToObject();return n.name=this.name,n.formBindingContentType=s,n.children=this.childrenToObject(),n};p=this.getEditorObject;this.getEditorObject=function(){var t=p();return n.extend(t,{FormName:this.name,FormBindingContentType:this.formBindingContentType})};this.setChildren=function(t){this.children=t;_(this.children).each(function(t){t.parent=y;var i=t.getEditorObject;t.getEditorObject=function(){var t=i();return n.extend(t,{FormBindingContentType:y.formBindingContentType})}})};this.setChildren(v)};t.Form.from=function(n){return new t.Form(n.data,n.htmlId,n.htmlClass,n.htmlStyle,n.isTemplated,n.name,n.formBindingContentType,n.contentType,n.contentTypeLabel,n.contentTypeClass,n.hasEditor,t.childrenFrom(n.children))};t.registerFactory("Form",function(n){return t.Form.from(n)})})(jQuery,LayoutEditor||(LayoutEditor={}));
|
@@ -0,0 +1,8 @@
|
|||||||
|
{
|
||||||
|
"version":3,
|
||||||
|
"file":"Form.min.js",
|
||||||
|
"lineCount":1,
|
||||||
|
"mappings":"AAAAA,OACIC,OAAO,CAAC,cAAD,CACPC,UAAU,CAAC,eAAe,CAAE,QAAS,CAACC,CAAQ,CAAEC,CAAiB,CAAEC,CAA9B,CAA2C,CAC5E,MAAO,CACH,QAAQ,CAAE,GAAG,CACb,KAAK,CAAE,CAAE,OAAO,CAAE,GAAX,CAAgB,CACvB,UAAU,CAAEC,QAAS,CAACC,CAAM,CAAEC,CAAT,CAAmB,CACpCJ,CAAiBK,oBAAoB,CAACF,CAAM,CAAEC,CAAT,CAAkB,CACvDJ,CAAiBM,sBAAsB,CAACH,CAAM,CAAEC,CAAT,CAAkB,CACzDD,CAAMI,gBAAiBC,KAAQ,CAAE,GAAG,CACpCL,CAAMM,KAAM,CAAEC,QAAS,CAAA,CAAG,CACtBP,CAAMQ,MAAMC,YAAY,CAACT,CAAMU,QAAP,CAAgBC,KAAK,CAAC,QAAS,CAACC,CAAD,CAAO,CACtDA,CAAIC,O,GAERb,CAAMU,QAAQI,KAAM,CAAEC,kBAAkB,CAACH,CAAIF,QAAQI,KAAb,CAAmB,CAC3Dd,CAAMU,QAAQM,KAAM,CAAEJ,CAAIK,mBAAmBD,KAAK,CAClDhB,CAAMkB,OAAO,CAAA,EAL6C,CAAjB,CADvB,CAJU,CAavC,CACD,WAAW,CAAEpB,CAAWqB,YAAY,CAAC,MAAD,CAAQ,CAC5C,OAAO,CAAE,CAAA,CAlBN,CADqE,CAAtE,CAqBR,CCvBN,IAAIC,YAAY,EACf,QAAS,CAACC,CAAC,CAAED,CAAJ,CAAkB,CAExBA,CAAYE,KAAM,CAAEC,QAAS,CAACT,CAAI,CAAEU,CAAM,CAAEC,CAAS,CAAEC,CAAS,CAAEC,CAAW,CAAEX,CAAI,CAAEY,CAAsB,CAAEC,CAAW,CAAEC,CAAgB,CAAEC,CAAgB,CAAEC,CAAS,CAAEC,CAA5I,CAAsJ,CAI/K,IAAIC,EAmBAC,CAnBW,CAHff,CAAYgB,QAAQC,KAAK,CAAC,IAAI,CAAE,MAAM,CAAEvB,CAAI,CAAEU,CAAM,CAAEC,CAAS,CAAEC,CAAS,CAAEC,CAAnD,CAA+D,CACxFP,CAAYkB,UAAUD,KAAK,CAAC,IAAI,CAAE,CAAC,MAAM,CAAE,SAAT,CAAmB,CAAEJ,CAA5B,CAAqC,CAE5DC,CAAK,CAAE,I,CACX,IAAIK,cAAe,CAAE,CAAA,CAAI,CACzB,IAAIC,gBAAiB,CAAE,sBAAsB,CAC7C,IAAIX,YAAa,CAAEA,CAAW,CAC9B,IAAIC,iBAAkB,CAAEA,CAAgB,CACxC,IAAIC,iBAAkB,CAAEA,CAAgB,CACxC,IAAIf,KAAM,CAAEA,CAAK,EAAG,UAAU,CAC9B,IAAIY,uBAAwB,CAAEA,CAAsB,CACpD,IAAII,UAAW,CAAEA,CAAS,CAE1B,IAAIS,SAAU,CAAEC,QAAS,CAAA,CAAG,CACxB,IAAIC,EAAS,IAAIC,gBAAgB,CAAA,CAAE,CAKnC,OAJAD,CAAM3B,KAAM,CAAE,IAAIA,KAAK,CACvB2B,CAAMf,uBAAwB,CAAEA,CAAsB,CACtDe,CAAMV,SAAU,CAAE,IAAIY,iBAAiB,CAAA,CAAE,CAElCF,CANiB,CAO3B,CAEGR,CAAgB,CAAE,IAAIA,gB,CAC1B,IAAIA,gBAAiB,CAAEW,QAAQ,CAAA,CAAG,CAC9B,IAAIC,EAAMZ,CAAe,CAAA,CAAE,CAC3B,OAAOd,CAAC2B,OAAO,CAACD,CAAG,CAAE,CACjB,QAAQ,CAAE,IAAI/B,KAAK,CACnB,sBAAsB,CAAE,IAAIY,uBAFX,CAAN,CAFe,C,CAQlC,IAAIqB,YAAa,CAAEC,QAAS,CAACjB,CAAD,CAAW,CACnC,IAAIA,SAAU,CAAEA,CAAQ,CACxBkB,CAAC,CAAC,IAAIlB,SAAL,CAAemB,KAAK,CAAC,QAAS,CAACC,CAAD,CAAQ,CACnCA,CAAKC,OAAQ,CAAEpB,CAAI,CAEnB,IAAIC,EAAkBkB,CAAKlB,gBAAgB,CAC3CkB,CAAKlB,gBAAiB,CAAEoB,QAAS,CAAA,CAAG,CAChC,IAAIR,EAAMZ,CAAe,CAAA,CAAE,CAC3B,OAAOd,CAAC2B,OAAO,CAACD,CAAG,CAAE,CACjB,sBAAsB,CAAEb,CAAIN,uBADX,CAAN,CAFiB,CAJD,CAAlB,CAFc,CAatC,CAED,IAAIqB,YAAY,CAAChB,CAAD,CA/C+J,CAgDlL,CAEDb,CAAYE,KAAKkC,KAAM,CAAEC,QAAS,CAACC,CAAD,CAAQ,CACtC,OAAO,IAAItC,CAAYE,KAAK,CACxBoC,CAAK5C,KAAK,CACV4C,CAAKlC,OAAO,CACZkC,CAAKjC,UAAU,CACfiC,CAAKhC,UAAU,CACfgC,CAAK/B,YAAY,CACjB+B,CAAK1C,KAAK,CACV0C,CAAK9B,uBAAuB,CAC5B8B,CAAK7B,YAAY,CACjB6B,CAAK5B,iBAAiB,CACtB4B,CAAK3B,iBAAiB,CACtB2B,CAAK1B,UAAU,CACfZ,CAAYuC,aAAa,CAACD,CAAKzB,SAAN,CAZD,CADU,CAczC,CAEDb,CAAYwC,gBAAgB,CAAC,MAAM,CAAE,QAAQ,CAACF,CAAD,CAAQ,CAAE,OAAOtC,CAAYE,KAAKkC,KAAK,CAACE,CAAD,CAA/B,CAAzB,CApEJ,EAsE1B,CAACG,MAAM,CAAEzC,YAAa,EAAG,CAACA,YAAa,CAAE,CAAA,CAAhB,CAAzB,CAA6C",
|
||||||
|
"sources":["/Scripts/Layouts/Directives/Form.js","/Scripts/Layouts/Models/Form.js"],
|
||||||
|
"names":["angular","module","directive","$compile","scopeConfigurator","environment","controller","$scope","$element","configureForElement","configureForContainer","sortableOptions","axis","edit","$scope.edit","$root","editElement","element","then","args","cancel","data","decodeURIComponent","name","elementEditorModel","$apply","templateUrl","LayoutEditor","$","Form","LayoutEditor.Form","htmlId","htmlClass","htmlStyle","isTemplated","formBindingContentType","contentType","contentTypeLabel","contentTypeClass","hasEditor","children","self","getEditorObject","Element","call","Container","isContainable","dropTargetClass","toObject",".toObject","result","elementToObject","childrenToObject",".getEditorObject","dto","extend","setChildren",".setChildren","_","each","child","parent","child.getEditorObject","from","LayoutEditor.Form.from","value","childrenFrom","registerFactory","jQuery"]
|
||||||
|
}
|
@@ -0,0 +1,24 @@
|
|||||||
|
angular
|
||||||
|
.module("LayoutEditor")
|
||||||
|
.directive("orcLayoutForm", function ($compile, scopeConfigurator, environment) {
|
||||||
|
return {
|
||||||
|
restrict: "E",
|
||||||
|
scope: { element: "=" },
|
||||||
|
controller: function ($scope, $element) {
|
||||||
|
scopeConfigurator.configureForElement($scope, $element);
|
||||||
|
scopeConfigurator.configureForContainer($scope, $element);
|
||||||
|
$scope.sortableOptions["axis"] = "y";
|
||||||
|
$scope.edit = function () {
|
||||||
|
$scope.$root.editElement($scope.element).then(function (args) {
|
||||||
|
if (args.cancel)
|
||||||
|
return;
|
||||||
|
$scope.element.data = decodeURIComponent(args.element.data);
|
||||||
|
$scope.element.name = args.elementEditorModel.name;
|
||||||
|
$scope.$apply();
|
||||||
|
});
|
||||||
|
};
|
||||||
|
},
|
||||||
|
templateUrl: environment.templateUrl("Form"),
|
||||||
|
replace: true
|
||||||
|
};
|
||||||
|
});
|
@@ -0,0 +1,72 @@
|
|||||||
|
var LayoutEditor;
|
||||||
|
(function ($, LayoutEditor) {
|
||||||
|
|
||||||
|
LayoutEditor.Form = function (data, htmlId, htmlClass, htmlStyle, isTemplated, name, formBindingContentType, contentType, contentTypeLabel, contentTypeClass, hasEditor, children) {
|
||||||
|
LayoutEditor.Element.call(this, "Form", data, htmlId, htmlClass, htmlStyle, isTemplated);
|
||||||
|
LayoutEditor.Container.call(this, ["Grid", "Content"], children);
|
||||||
|
|
||||||
|
var self = this;
|
||||||
|
this.isContainable = true;
|
||||||
|
this.dropTargetClass = "layout-common-holder";
|
||||||
|
this.contentType = contentType;
|
||||||
|
this.contentTypeLabel = contentTypeLabel;
|
||||||
|
this.contentTypeClass = contentTypeClass;
|
||||||
|
this.name = name || "Untitled";
|
||||||
|
this.formBindingContentType = formBindingContentType;
|
||||||
|
this.hasEditor = hasEditor;
|
||||||
|
|
||||||
|
this.toObject = function () {
|
||||||
|
var result = this.elementToObject();
|
||||||
|
result.name = this.name;
|
||||||
|
result.formBindingContentType = formBindingContentType;
|
||||||
|
result.children = this.childrenToObject();
|
||||||
|
|
||||||
|
return result;
|
||||||
|
};
|
||||||
|
|
||||||
|
var getEditorObject = this.getEditorObject;
|
||||||
|
this.getEditorObject = function() {
|
||||||
|
var dto = getEditorObject();
|
||||||
|
return $.extend(dto, {
|
||||||
|
FormName: this.name,
|
||||||
|
FormBindingContentType: this.formBindingContentType
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
this.setChildren = function (children) {
|
||||||
|
this.children = children;
|
||||||
|
_(this.children).each(function (child) {
|
||||||
|
child.parent = self;
|
||||||
|
|
||||||
|
var getEditorObject = child.getEditorObject;
|
||||||
|
child.getEditorObject = function () {
|
||||||
|
var dto = getEditorObject();
|
||||||
|
return $.extend(dto, {
|
||||||
|
FormBindingContentType: self.formBindingContentType
|
||||||
|
});
|
||||||
|
};
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
this.setChildren(children);
|
||||||
|
};
|
||||||
|
|
||||||
|
LayoutEditor.Form.from = function (value) {
|
||||||
|
return new LayoutEditor.Form(
|
||||||
|
value.data,
|
||||||
|
value.htmlId,
|
||||||
|
value.htmlClass,
|
||||||
|
value.htmlStyle,
|
||||||
|
value.isTemplated,
|
||||||
|
value.name,
|
||||||
|
value.formBindingContentType,
|
||||||
|
value.contentType,
|
||||||
|
value.contentTypeLabel,
|
||||||
|
value.contentTypeClass,
|
||||||
|
value.hasEditor,
|
||||||
|
LayoutEditor.childrenFrom(value.children));
|
||||||
|
};
|
||||||
|
|
||||||
|
LayoutEditor.registerFactory("Form", function(value) { return LayoutEditor.Form.from(value); });
|
||||||
|
|
||||||
|
})(jQuery, LayoutEditor || (LayoutEditor = {}));
|
2
src/Orchard.Web/Modules/Orchard.DynamicForms/Scripts/Lib/jquery.validate.min.js
vendored
Normal file
2
src/Orchard.Web/Modules/Orchard.DynamicForms/Scripts/Lib/jquery.validate.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
2
src/Orchard.Web/Modules/Orchard.DynamicForms/Scripts/Lib/jquery.validate.unobtrusive.min.js
vendored
Normal file
2
src/Orchard.Web/Modules/Orchard.DynamicForms/Scripts/Lib/jquery.validate.unobtrusive.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -0,0 +1,25 @@
|
|||||||
|
using System;
|
||||||
|
using Newtonsoft.Json.Linq;
|
||||||
|
using Orchard.DynamicForms.Elements;
|
||||||
|
using Orchard.Layouts.Services;
|
||||||
|
using Orchard.Utility.Extensions;
|
||||||
|
|
||||||
|
namespace Orchard.DynamicForms.Services {
|
||||||
|
public class FormModelMap : LayoutModelMapBase<Form> {
|
||||||
|
protected override void ToElement(Form element, JToken node) {
|
||||||
|
base.ToElement(element, node);
|
||||||
|
element.Name = (string)node["name"];
|
||||||
|
element.ContentType = (string)node["formBindingContentType"];
|
||||||
|
}
|
||||||
|
|
||||||
|
public override void FromElement(Form element, DescribeElementsContext describeContext, JToken node) {
|
||||||
|
base.FromElement(element, describeContext, node);
|
||||||
|
node["name"] = element.Name;
|
||||||
|
node["formBindingContentType"] = element.ContentType;
|
||||||
|
node["hasEditor"] = element.HasEditor;
|
||||||
|
node["contentType"] = element.Descriptor.TypeName;
|
||||||
|
node["contentTypeLabel"] = element.Descriptor.DisplayText.Text;
|
||||||
|
node["contentTypeClass"] = String.Format(element.DisplayText.Text.HtmlClassify());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@@ -15,7 +15,6 @@ using Orchard.DynamicForms.Helpers;
|
|||||||
using Orchard.DynamicForms.Models;
|
using Orchard.DynamicForms.Models;
|
||||||
using Orchard.DynamicForms.Services.Models;
|
using Orchard.DynamicForms.Services.Models;
|
||||||
using Orchard.DynamicForms.ViewModels;
|
using Orchard.DynamicForms.ViewModels;
|
||||||
using Orchard.Layouts.Framework.Serialization;
|
|
||||||
using Orchard.Layouts.Helpers;
|
using Orchard.Layouts.Helpers;
|
||||||
using Orchard.Layouts.Models;
|
using Orchard.Layouts.Models;
|
||||||
using Orchard.Layouts.Services;
|
using Orchard.Layouts.Services;
|
||||||
@@ -65,7 +64,7 @@ namespace Orchard.DynamicForms.Services {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public Form FindForm(LayoutPart layoutPart, string formName = null) {
|
public Form FindForm(LayoutPart layoutPart, string formName = null) {
|
||||||
var elements = _serializer.Deserialize(layoutPart.LayoutState, new DescribeElementsContext { Content = layoutPart });
|
var elements = _serializer.Deserialize(layoutPart.LayoutData, new DescribeElementsContext { Content = layoutPart });
|
||||||
var forms = elements.Flatten().Where(x => x is Form).Cast<Form>();
|
var forms = elements.Flatten().Where(x => x is Form).Cast<Form>();
|
||||||
return String.IsNullOrWhiteSpace(formName) ? forms.FirstOrDefault() : forms.FirstOrDefault(x => x.Name == formName);
|
return String.IsNullOrWhiteSpace(formName) ? forms.FirstOrDefault() : forms.FirstOrDefault(x => x.Name == formName);
|
||||||
}
|
}
|
||||||
@@ -255,7 +254,7 @@ namespace Orchard.DynamicForms.Services {
|
|||||||
ReadElementValues(element, context);
|
ReadElementValues(element, context);
|
||||||
|
|
||||||
var value = context.Output[element.Name];
|
var value = context.Output[element.Name];
|
||||||
var bindingSettings = element.State.GetModel<FormBindingSettings>(null);
|
var bindingSettings = element.Data.GetModel<FormBindingSettings>(null);
|
||||||
|
|
||||||
if (bindingSettings != null) {
|
if (bindingSettings != null) {
|
||||||
foreach (var partBindingSettings in bindingSettings.Parts) {
|
foreach (var partBindingSettings in bindingSettings.Parts) {
|
||||||
@@ -320,7 +319,7 @@ namespace Orchard.DynamicForms.Services {
|
|||||||
foreach (var binding in partBindingSettings.Bindings.Where(x => x.Enabled)) {
|
foreach (var binding in partBindingSettings.Bindings.Where(x => x.Enabled)) {
|
||||||
var localBinding = binding;
|
var localBinding = binding;
|
||||||
foreach (var partBinding in partBindings.Where(x => x.Name == localBinding.Name)) {
|
foreach (var partBinding in partBindings.Where(x => x.Name == localBinding.Name)) {
|
||||||
partBinding.Setter.DynamicInvoke(part, value);
|
partBinding.Setter.DynamicInvoke(contentItem, part, value);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -358,7 +357,7 @@ namespace Orchard.DynamicForms.Services {
|
|||||||
foreach (var binding in fieldBindingSettings.Bindings.Where(x => x.Enabled)) {
|
foreach (var binding in fieldBindingSettings.Bindings.Where(x => x.Enabled)) {
|
||||||
var localBinding = binding;
|
var localBinding = binding;
|
||||||
foreach (var fieldBinding in fieldBindings.Where(x => x.Name == localBinding.Name)) {
|
foreach (var fieldBinding in fieldBindings.Where(x => x.Name == localBinding.Name)) {
|
||||||
fieldBinding.Setter.DynamicInvoke(field, value);
|
fieldBinding.Setter.DynamicInvoke(contentItem, field, value);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -1,5 +1,6 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
using Orchard.ContentManagement;
|
||||||
|
|
||||||
namespace Orchard.DynamicForms.Services.Models {
|
namespace Orchard.DynamicForms.Services.Models {
|
||||||
public abstract class BindingContext {
|
public abstract class BindingContext {
|
||||||
@@ -20,7 +21,7 @@ namespace Orchard.DynamicForms.Services.Models {
|
|||||||
public BindingContext() : base(typeof(T).Name) {
|
public BindingContext() : base(typeof(T).Name) {
|
||||||
}
|
}
|
||||||
|
|
||||||
public BindingContext<T> Binding(string name, Action<T, string> setter) {
|
public BindingContext<T> Binding(string name, Action<ContentItem, T, string> setter) {
|
||||||
|
|
||||||
_bindings.Add(new BindingDescriptor<T> {
|
_bindings.Add(new BindingDescriptor<T> {
|
||||||
Name = name,
|
Name = name,
|
||||||
|
@@ -1,46 +0,0 @@
|
|||||||
.layout-editor .canvas .x-form {
|
|
||||||
background: none repeat scroll 0 0 #fafafa;
|
|
||||||
border: 1px solid #bdbcbc;
|
|
||||||
margin: 0 0 0.3em;
|
|
||||||
padding: 4.3em 0.4em 2.5em 0.4em;
|
|
||||||
position: relative;
|
|
||||||
}
|
|
||||||
|
|
||||||
.layout-editor .canvas .x-form .form-toolbar {
|
|
||||||
padding: 0 0.5em 0 0.5em;
|
|
||||||
height: 27px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.layout-editor .canvas .x-form .drag-handle {
|
|
||||||
background: none repeat scroll 0 0 #e4e4e4;
|
|
||||||
cursor: move;
|
|
||||||
left: -1px;
|
|
||||||
position: absolute;
|
|
||||||
right: -1px;
|
|
||||||
top: -1px;
|
|
||||||
z-index: 25;
|
|
||||||
border: 1px solid #bdbcbc;
|
|
||||||
height: 27px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.layout-editor .canvas .x-form .drag-handle .name {
|
|
||||||
line-height: 1.5em;
|
|
||||||
}
|
|
||||||
|
|
||||||
.layout-editor .canvas .x-row .x-column .x-form .x-holder,
|
|
||||||
.layout-editor .canvas .x-form .x-holder {
|
|
||||||
min-height: 5em;
|
|
||||||
border: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
.layout-editor .hidden-field {
|
|
||||||
background: #e5e5e5;
|
|
||||||
padding: 0.5em;
|
|
||||||
-ms-opacity: .5;
|
|
||||||
opacity: .5;
|
|
||||||
}
|
|
||||||
|
|
||||||
input.text.design,
|
|
||||||
textarea.text.design {
|
|
||||||
width: 99%;
|
|
||||||
}
|
|
@@ -1,18 +1,12 @@
|
|||||||
.dynamic-forms tbody.forms td:last-child,
|
.layout-editor .layout-content > .layout-element-wrapper .layout-content-markup > .validation-message,
|
||||||
.dynamic-forms-submissions tbody.submissions td:last-child {
|
.layout-editor .layout-content > .layout-element-wrapper .layout-content-markup > .validation-summary {
|
||||||
text-align: right;
|
border: 1px dashed #ccc;
|
||||||
|
padding: 0.2em;
|
||||||
|
background: #e8e8e8;
|
||||||
}
|
}
|
||||||
|
|
||||||
.bindings table thead th.property-type,
|
.layout-editor .layout-content > .layout-element-wrapper .layout-content-markup > .form-field-element input[type="text"],
|
||||||
.bindings table tbody td.property-type {
|
.layout-editor .layout-content > .layout-element-wrapper .layout-content-markup > .form-field-element input[type="password"],
|
||||||
width: 300px;
|
.layout-editor .layout-content > .layout-element-wrapper .layout-content-markup > .form-field-element textarea {
|
||||||
text-align: right;
|
width: 100%;
|
||||||
}
|
|
||||||
|
|
||||||
th.validator-name {
|
|
||||||
width: 20%;
|
|
||||||
}
|
|
||||||
|
|
||||||
th.validator-settings {
|
|
||||||
width: 80%;
|
|
||||||
}
|
}
|
@@ -1,3 +1,4 @@
|
|||||||
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using Orchard.DynamicForms.Services.Models;
|
using Orchard.DynamicForms.Services.Models;
|
||||||
|
|
||||||
@@ -9,5 +10,32 @@ namespace Orchard.DynamicForms.ViewModels {
|
|||||||
|
|
||||||
public IEnumerable<ContentPartBindingDescriptor> AvailableBindings { get; set; }
|
public IEnumerable<ContentPartBindingDescriptor> AvailableBindings { get; set; }
|
||||||
public IList<PartBindingSettings> Parts { get; set; }
|
public IList<PartBindingSettings> Parts { get; set; }
|
||||||
|
|
||||||
|
public void Store(IDictionary<string, string> data) {
|
||||||
|
for (var partIndex = 0; partIndex < Parts.Count; partIndex++) {
|
||||||
|
var part = Parts[partIndex];
|
||||||
|
|
||||||
|
data[String.Format("FormBindingSettings.Parts[{0}].Name", partIndex)] = part.Name;
|
||||||
|
|
||||||
|
for (var partBindingIndex = 0; partBindingIndex < part.Bindings.Count; partBindingIndex++) {
|
||||||
|
var partBinding = part.Bindings[partBindingIndex];
|
||||||
|
data[String.Format("FormBindingSettings.Parts[{0}].Bindings[{1}].Name", partIndex, partBindingIndex)] = partBinding.Name;
|
||||||
|
data[String.Format("FormBindingSettings.Parts[{0}].Bindings[{1}].Enabled", partIndex, partBindingIndex)] = partBinding.Enabled.ToString();
|
||||||
|
}
|
||||||
|
|
||||||
|
for (var fieldIndex = 0; fieldIndex < part.Fields.Count; fieldIndex++) {
|
||||||
|
var field = part.Fields[fieldIndex];
|
||||||
|
data[String.Format("FormBindingSettings.Parts[{0}].Fields[{1}].Name", partIndex, fieldIndex)] = field.Name;
|
||||||
|
|
||||||
|
for (var fieldBindingIndex = 0; fieldBindingIndex < field.Bindings.Count; fieldBindingIndex++) {
|
||||||
|
var fieldBinding = field.Bindings[fieldBindingIndex];
|
||||||
|
|
||||||
|
data[String.Format("FormBindingSettings.Parts[{0}].Fields[{1}].Bindings[{2}].Name", partIndex, fieldIndex, fieldBindingIndex)] = fieldBinding.Name;
|
||||||
|
data[String.Format("FormBindingSettings.Parts[{0}].Fields[{1}].Bindings[{2}].Enabled", partIndex, fieldIndex, fieldBindingIndex)] = fieldBinding.Enabled.ToString();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@@ -32,8 +32,8 @@
|
|||||||
<td>@blueprint.ElementTypeName</td>
|
<td>@blueprint.ElementTypeName</td>
|
||||||
<td>@blueprint.BaseElementTypeName</td>
|
<td>@blueprint.BaseElementTypeName</td>
|
||||||
<td>
|
<td>
|
||||||
@Html.ActionLink(T("Edit").Text, "Edit", "BlueprintAdmin", new { id = blueprint.Id, area = "Orchard.DynamicForms" }, null) @T(" | ")
|
@Html.ActionLink(T("Edit").Text, "Edit", "BlueprintAdmin", new { id = blueprint.Id, area = "Orchard.DynamicForms" }, null) @T(" | ")
|
||||||
@Html.ActionLink(T("Remove").Text, "Delete", "BlueprintAdmin", new { id = blueprint.Id, area = "Orchard.DynamicForms" }, new { itemprop = "RemoveUrl UnsafeUrl" })
|
@Html.ActionLink(T("Remove").Text, "Delete", "BlueprintAdmin", new { id = blueprint.Id, area = "Orchard.DynamicForms" }, new { itemprop = "RemoveUrl UnsafeUrl" })
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
}
|
}
|
||||||
|
@@ -20,41 +20,45 @@
|
|||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
@foreach (var partBinding in partDescriptor.BindingContexts.SelectMany(x => x.Bindings)) {
|
@if (partDescriptor.BindingContexts.Any()) {
|
||||||
var partBindingId = String.Format("binding-{0}-{1}", partDescriptor.Part.PartDefinition.Name.HtmlClassify(), partBinding.Name.HtmlClassify());
|
foreach (var partBinding in partDescriptor.BindingContexts.SelectMany(x => x.Bindings)) {
|
||||||
var partBindingState = partState.Bindings.ElementAtOrDefault(partBindingIndex) ?? new BindingSettings();
|
var partBindingId = String.Format("binding-{0}-{1}", partDescriptor.Part.PartDefinition.Name.HtmlClassify(), partBinding.Name.HtmlClassify());
|
||||||
<tr>
|
var partBindingState = partState.Bindings.ElementAtOrDefault(partBindingIndex) ?? new BindingSettings();
|
||||||
<td colspan="2">
|
<tr>
|
||||||
<input type="hidden" name="Parts[@partIndex].Bindings[@partBindingIndex].Name" value="@partBinding.Name" />
|
<td colspan="2">
|
||||||
<input type="checkbox" id="@partBindingId" name="Parts[@partIndex].Bindings[@partBindingIndex].Enabled" value="@Boolean.TrueString" @if (partBindingState.Enabled) { <text> checked="checked" </text> } />
|
<input type="hidden" name="Parts[@partIndex].Bindings[@partBindingIndex].Name" value="@partBinding.Name" />
|
||||||
<label class="forcheckbox" for="@partBindingId">@partBinding.Name</label>
|
<input type="checkbox" id="@partBindingId" name="Parts[@partIndex].Bindings[@partBindingIndex].Enabled" value="@Boolean.TrueString" @if (partBindingState.Enabled) {<text> checked="checked" </text>} />
|
||||||
</td>
|
<label class="forcheckbox" for="@partBindingId">@partBinding.Name</label>
|
||||||
</tr>
|
</td>
|
||||||
partBindingIndex++;
|
</tr>
|
||||||
|
partBindingIndex++;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@foreach (var fieldDescriptor in partDescriptor.FieldBindings) {
|
@foreach (var fieldDescriptor in partDescriptor.FieldBindings) {
|
||||||
var fieldBindingIndex = 0;
|
var fieldBindingIndex = 0;
|
||||||
var fieldState = partState.Fields.ElementAtOrDefault(fieldIndex) ?? new FieldBindingSettings();
|
var fieldState = partState.Fields.ElementAtOrDefault(fieldIndex) ?? new FieldBindingSettings();
|
||||||
foreach (var fieldBinding in fieldDescriptor.BindingContexts.SelectMany(x => x.Bindings)) {
|
if (fieldDescriptor.BindingContexts.Any()) {
|
||||||
var fieldBindingId = String.Format("binding-{0}-{1}-{2}", partDescriptor.Part.PartDefinition.Name.HtmlClassify(), fieldDescriptor.Field.Name.HtmlClassify(), fieldBinding.Name.HtmlClassify());
|
foreach (var fieldBinding in fieldDescriptor.BindingContexts.SelectMany(x => x.Bindings)) {
|
||||||
var fieldBindingstate = fieldState.Bindings.ElementAtOrDefault(fieldBindingIndex) ?? new BindingSettings();
|
var fieldBindingId = String.Format("binding-{0}-{1}-{2}", partDescriptor.Part.PartDefinition.Name.HtmlClassify(), fieldDescriptor.Field.Name.HtmlClassify(), fieldBinding.Name.HtmlClassify());
|
||||||
<tr>
|
var fieldBindingstate = fieldState.Bindings.ElementAtOrDefault(fieldBindingIndex) ?? new BindingSettings();
|
||||||
<td class="property-name">
|
<tr>
|
||||||
<input type="hidden" name="Parts[@partIndex].Fields[@fieldIndex].Name" value="@fieldDescriptor.Field.Name" />
|
<td class="property-name">
|
||||||
<input type="hidden" name="Parts[@partIndex].Fields[@fieldIndex].Bindings[@fieldBindingIndex].Name" value="@fieldBinding.Name" />
|
<input type="hidden" name="Parts[@partIndex].Fields[@fieldIndex].Name" value="@fieldDescriptor.Field.Name" />
|
||||||
<input type="checkbox" id="@fieldBindingId" name="Parts[@partIndex].Fields[@fieldIndex].Bindings[@fieldBindingIndex].Enabled" value="@Boolean.TrueString" @if (fieldBindingstate.Enabled) { <text> checked="checked" </text> } />
|
<input type="hidden" name="Parts[@partIndex].Fields[@fieldIndex].Bindings[@fieldBindingIndex].Name" value="@fieldBinding.Name" />
|
||||||
<label class="forcheckbox" for="@fieldBindingId">@String.Format("{0}.{1}", fieldDescriptor.Field.Name, fieldBinding.Name)</label>
|
<input type="checkbox" id="@fieldBindingId" name="Parts[@partIndex].Fields[@fieldIndex].Bindings[@fieldBindingIndex].Enabled" value="@Boolean.TrueString" @if (fieldBindingstate.Enabled) { <text> checked="checked" </text> } />
|
||||||
</td>
|
<label class="forcheckbox" for="@fieldBindingId">@String.Format("{0}.{1}", fieldDescriptor.Field.Name, fieldBinding.Name)</label>
|
||||||
<td class="property-type">
|
</td>
|
||||||
@fieldDescriptor.Field.FieldDefinition.Name
|
<td class="property-type">
|
||||||
</td>
|
@fieldDescriptor.Field.FieldDefinition.Name
|
||||||
</tr>
|
</td>
|
||||||
fieldBindingIndex++;
|
</tr>
|
||||||
|
fieldBindingIndex++;
|
||||||
|
}
|
||||||
|
fieldIndex++;
|
||||||
}
|
}
|
||||||
fieldIndex++;
|
|
||||||
}
|
}
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
partIndex++;
|
partIndex++;
|
||||||
}
|
}
|
||||||
</fieldset>
|
</fieldset>
|
@@ -1,4 +0,0 @@
|
|||||||
@{
|
|
||||||
var forFieldName = (string) Model.ValidationMessageFor;
|
|
||||||
}
|
|
||||||
<div class="hidden-field">@T("Validation message for {0}", forFieldName)</div>
|
|
@@ -1,6 +0,0 @@
|
|||||||
@using Orchard.Layouts.Helpers
|
|
||||||
@{
|
|
||||||
var forFieldName = (string) Model.ValidationMessageFor;
|
|
||||||
var commonAttributes = (IDictionary<string, object>) TagBuilderExtensions.GetCommonElementAttributes(Model);
|
|
||||||
}
|
|
||||||
@Html.ValidationMessage(forFieldName, commonAttributes)
|
|
@@ -1 +0,0 @@
|
|||||||
<div class="hidden-field">@T("Validation summary")</div>
|
|
@@ -1,29 +0,0 @@
|
|||||||
@using Orchard.DynamicForms.Elements
|
|
||||||
@using Orchard.Utility.Extensions
|
|
||||||
@{
|
|
||||||
Style.Include("form.designer.css");
|
|
||||||
}
|
|
||||||
@{
|
|
||||||
var element = (Form)Model.Element;
|
|
||||||
var isTemplated = element.IsTemplated;
|
|
||||||
var formTitle = !String.IsNullOrWhiteSpace(element.Name) ? element.Name.CamelFriendly() : T("Form").Text;
|
|
||||||
}
|
|
||||||
<div class="x-form x-element x-container x-container-widget @if (isTemplated) {<text>templated</text>}" data-element="@Model.ElementJson">
|
|
||||||
@if (!isTemplated) {
|
|
||||||
<div class="drag-handle">
|
|
||||||
<div class="toolbar form-toolbar group">
|
|
||||||
<div class="pull-left">
|
|
||||||
<a class="edit icon-cog" href="#" title="@T("Edit form properties")"></a>
|
|
||||||
<a class="remove icon-trash" href="#" title="@T("Remove form")"></a>
|
|
||||||
</div>
|
|
||||||
<div class="pull-right">
|
|
||||||
<span class="name">@formTitle</span>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
}
|
|
||||||
<div class="element container x-holder drop-target">
|
|
||||||
@DisplayChildren(Model)
|
|
||||||
</div>
|
|
||||||
<a href="#" class="add" title="@T("Add Element")"></a>
|
|
||||||
</div>
|
|
@@ -1,10 +1,8 @@
|
|||||||
@using Orchard.DisplayManagement.Shapes
|
@using Orchard.DisplayManagement.Shapes
|
||||||
@using Orchard.DynamicForms.Elements
|
@using Orchard.DynamicForms.Elements
|
||||||
@using Orchard.Layouts.Helpers
|
@using Orchard.Layouts.Helpers
|
||||||
@using Orchard.Layouts.Settings
|
|
||||||
@{
|
@{
|
||||||
var element = (EmailField)Model.Element;
|
var element = (EmailField)Model.Element;
|
||||||
var commonSettings = element.State.GetModel<CommonElementSettings>();
|
|
||||||
var tagBuilder = (OrchardTagBuilder)TagBuilderExtensions.AddCommonElementAttributes(new OrchardTagBuilder("input"), Model);
|
var tagBuilder = (OrchardTagBuilder)TagBuilderExtensions.AddCommonElementAttributes(new OrchardTagBuilder("input"), Model);
|
||||||
|
|
||||||
tagBuilder.AddCssClass("text design");
|
tagBuilder.AddCssClass("text design");
|
||||||
@@ -15,7 +13,7 @@
|
|||||||
|
|
||||||
@if (element.ShowLabel) {
|
@if (element.ShowLabel) {
|
||||||
<div>
|
<div>
|
||||||
<label for="@commonSettings.Id">@element.Label</label>
|
<label for="@element.HtmlId">@element.Label</label>
|
||||||
@Html.Raw(tagBuilder.ToString(TagRenderMode.SelfClosing))
|
@Html.Raw(tagBuilder.ToString(TagRenderMode.SelfClosing))
|
||||||
</div>
|
</div>
|
||||||
}
|
}
|
@@ -1,10 +1,8 @@
|
|||||||
@using Orchard.DisplayManagement.Shapes
|
@using Orchard.DisplayManagement.Shapes
|
||||||
@using Orchard.DynamicForms.Elements
|
@using Orchard.DynamicForms.Elements
|
||||||
@using Orchard.Layouts.Helpers
|
@using Orchard.Layouts.Helpers
|
||||||
@using Orchard.Layouts.Settings
|
|
||||||
@{
|
@{
|
||||||
var element = (EmailField)Model.Element;
|
var element = (EmailField)Model.Element;
|
||||||
var commonSettings = element.State.GetModel<CommonElementSettings>();
|
|
||||||
var tagBuilder = (OrchardTagBuilder)TagBuilderExtensions.AddCommonElementAttributes(new OrchardTagBuilder("input"), Model);
|
var tagBuilder = (OrchardTagBuilder)TagBuilderExtensions.AddCommonElementAttributes(new OrchardTagBuilder("input"), Model);
|
||||||
|
|
||||||
tagBuilder.AddCssClass("text");
|
tagBuilder.AddCssClass("text");
|
||||||
@@ -19,7 +17,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
@if (element.ShowLabel) {
|
@if (element.ShowLabel) {
|
||||||
<label for="@commonSettings.Id">@element.Label</label>
|
<label for="@element.HtmlId">@element.Label</label>
|
||||||
}
|
}
|
||||||
@Html.Raw(tagBuilder.ToString(TagRenderMode.SelfClosing))
|
@Html.Raw(tagBuilder.ToString(TagRenderMode.SelfClosing))
|
||||||
@if (element.ValidationSettings.ShowValidationMessage == true) {
|
@if (element.ValidationSettings.ShowValidationMessage == true) {
|
@@ -1,14 +1,12 @@
|
|||||||
@using Orchard.DynamicForms.Elements
|
@using Orchard.DynamicForms.Elements
|
||||||
@using Orchard.Layouts.Helpers
|
@using Orchard.Layouts.Helpers
|
||||||
@using Orchard.Layouts.Settings
|
|
||||||
@{
|
@{
|
||||||
var element = (Enumeration)Model.Element;
|
var element = (Enumeration)Model.Element;
|
||||||
var commonSettings = element.State.GetModel<CommonElementSettings>();
|
|
||||||
var attributes = (IDictionary<string, object>)TagBuilderExtensions.GetCommonElementAttributes(Model);
|
var attributes = (IDictionary<string, object>)TagBuilderExtensions.GetCommonElementAttributes(Model);
|
||||||
var name = String.IsNullOrWhiteSpace(element.Name) ? "MultiSelectList1" : element.Name;
|
var name = String.IsNullOrWhiteSpace(element.Name) ? "MultiSelectList1" : element.Name;
|
||||||
var options = (IEnumerable<SelectListItem>)Model.TokenizedOptions;
|
var options = (IEnumerable<SelectListItem>)Model.TokenizedOptions;
|
||||||
}
|
}
|
||||||
@if (element.ShowLabel) {
|
@if (element.ShowLabel) {
|
||||||
<label for="@commonSettings.Id">@Html.Raw(element.Label)</label>
|
<label for="@element.HtmlId">@Html.Raw(element.Label)</label>
|
||||||
}
|
}
|
||||||
@Html.ListBox(name, options, attributes)
|
@Html.ListBox(name, options, attributes)
|
@@ -1,14 +1,12 @@
|
|||||||
@using Orchard.DynamicForms.Elements
|
@using Orchard.DynamicForms.Elements
|
||||||
@using Orchard.Layouts.Helpers
|
@using Orchard.Layouts.Helpers
|
||||||
@using Orchard.Layouts.Settings
|
|
||||||
@{
|
@{
|
||||||
var element = (Enumeration)Model.Element;
|
var element = (Enumeration)Model.Element;
|
||||||
var commonSettings = element.State.GetModel<CommonElementSettings>();
|
|
||||||
var attributes = (IDictionary<string, object>)TagBuilderExtensions.GetCommonElementAttributes(Model);
|
var attributes = (IDictionary<string, object>)TagBuilderExtensions.GetCommonElementAttributes(Model);
|
||||||
var name = String.IsNullOrWhiteSpace(element.Name) ? "SelectList1" : element.Name;
|
var name = String.IsNullOrWhiteSpace(element.Name) ? "SelectList1" : element.Name;
|
||||||
var options = (IEnumerable<SelectListItem>)Model.TokenizedOptions;
|
var options = (IEnumerable<SelectListItem>)Model.TokenizedOptions;
|
||||||
}
|
}
|
||||||
@if (element.ShowLabel) {
|
@if (element.ShowLabel) {
|
||||||
<label for="@commonSettings.Id">@Html.Raw(element.Label)</label>
|
<label for="@element.HtmlId">@Html.Raw(element.Label)</label>
|
||||||
}
|
}
|
||||||
@Html.DropDownList(name, options, attributes)
|
@Html.DropDownList(name, options, attributes)
|
@@ -3,7 +3,7 @@
|
|||||||
@using Orchard.DynamicForms.Elements
|
@using Orchard.DynamicForms.Elements
|
||||||
@using Orchard.Layouts.Helpers
|
@using Orchard.Layouts.Helpers
|
||||||
@{
|
@{
|
||||||
Style.Include("form-elements.css");
|
Style.Include("forms.css");
|
||||||
}
|
}
|
||||||
@{
|
@{
|
||||||
var contentItem = (ContentItem) Model.ContentItem;
|
var contentItem = (ContentItem) Model.ContentItem;
|
||||||
@@ -17,9 +17,9 @@
|
|||||||
|
|
||||||
if (element.EnableClientValidation == true) {
|
if (element.EnableClientValidation == true) {
|
||||||
Script.Require("jQuery").AtFoot();
|
Script.Require("jQuery").AtFoot();
|
||||||
Script.Include("jquery.validate.js", "jquery.validate.min.js").AtFoot();
|
Script.Include("lib/jquery.validate.js", "lib/jquery.validate.min.js").AtFoot();
|
||||||
Script.Include("jquery.validate.unobtrusive.js", "jquery.validate.unobtrusive.min.js").AtFoot();
|
Script.Include("lib/jquery.validate.unobtrusive.js", "lib/jquery.validate.unobtrusive.min.js").AtFoot();
|
||||||
Script.Include("jquery.validate.unobtrusive.additional.js").AtFoot();
|
Script.Include("lib/jquery.validate.unobtrusive.additional.js").AtFoot();
|
||||||
|
|
||||||
Html.EnableUnobtrusiveJavaScript();
|
Html.EnableUnobtrusiveJavaScript();
|
||||||
Html.EnableClientValidation();
|
Html.EnableClientValidation();
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user