mirror of
https://github.com/OrchardCMS/Orchard.git
synced 2025-10-27 12:29:04 +08:00
Merge remote-tracking branch 'origin/1.10.x' into dev
# Conflicts: # src/Orchard.Web/Modules/Orchard.Fields/Views/EditorTemplates/Fields/Link.Edit.cshtml # src/Orchard.Web/Modules/Orchard.Fields/Views/EditorTemplates/Fields/Numeric.Edit.cshtml
This commit is contained in:
@@ -48,7 +48,12 @@ namespace Orchard.Fields.Drivers {
|
||||
if (updater.TryUpdateModel(field, GetPrefix(field, part), null, null)) {
|
||||
var settings = field.PartFieldDefinition.Settings.GetModel<BooleanFieldSettings>();
|
||||
if (!settings.Optional && !field.Value.HasValue) {
|
||||
updater.AddModelError(field.Name, T("The field {0} is mandatory.", T(field.DisplayName)));
|
||||
if (settings.DefaultValue.HasValue) {
|
||||
field.Value = settings.DefaultValue;
|
||||
}
|
||||
else {
|
||||
updater.AddModelError(field.Name, T("The field {0} is mandatory.", T(field.DisplayName)));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -136,31 +136,41 @@ namespace Orchard.Fields.Drivers {
|
||||
var showDate = settings.Display == DateTimeFieldDisplays.DateAndTime || settings.Display == DateTimeFieldDisplays.DateOnly;
|
||||
var showTime = settings.Display == DateTimeFieldDisplays.DateAndTime || settings.Display == DateTimeFieldDisplays.TimeOnly;
|
||||
|
||||
DateTime? value = null;
|
||||
var IsParseError = false;
|
||||
|
||||
// If required and one field is missing, don't try to parse data.
|
||||
if (settings.Required && ((showDate && String.IsNullOrWhiteSpace(viewModel.Editor.Date)) || (showTime && String.IsNullOrWhiteSpace(viewModel.Editor.Time)))) {
|
||||
updater.AddModelError(GetPrefix(field, part), T("{0} is required.", field.DisplayName));
|
||||
// And use the default value only if all required fields are empty.
|
||||
if (!showDate || !showTime || (String.IsNullOrWhiteSpace(viewModel.Editor.Date) && String.IsNullOrWhiteSpace(viewModel.Editor.Time))) {
|
||||
value = settings.DefaultValue;
|
||||
}
|
||||
}
|
||||
else {
|
||||
try {
|
||||
var utcDateTime = DateLocalizationServices.ConvertFromLocalizedString(viewModel.Editor.Date, viewModel.Editor.Time, options);
|
||||
|
||||
if (utcDateTime.HasValue) {
|
||||
// Hackish workaround to make sure a time-only field with an entered time equivalent to
|
||||
// 00:00 UTC doesn't get stored as a full DateTime.MinValue in the database, resulting
|
||||
// in it being interpreted as an empty value when subsequently retrieved.
|
||||
if (settings.Display == DateTimeFieldDisplays.TimeOnly && utcDateTime.Value == DateTime.MinValue) {
|
||||
field.DateTime = utcDateTime.Value.AddDays(1);
|
||||
}
|
||||
else {
|
||||
field.DateTime = utcDateTime.Value;
|
||||
}
|
||||
} else {
|
||||
field.DateTime = settings.DefaultValue.HasValue ? settings.DefaultValue.Value : DateTime.MinValue;
|
||||
}
|
||||
value = utcDateTime.HasValue ? utcDateTime : settings.DefaultValue;
|
||||
}
|
||||
catch {
|
||||
IsParseError = true;
|
||||
updater.AddModelError(GetPrefix(field, part), T("{0} could not be parsed as a valid date and time.", field.DisplayName));
|
||||
}
|
||||
}
|
||||
|
||||
if (!IsParseError) {
|
||||
// Hackish workaround to make sure a time-only field with an entered time equivalent to
|
||||
// 00:00 UTC doesn't get stored as a full DateTime.MinValue in the database, resulting
|
||||
// in it being interpreted as an empty value when subsequently retrieved.
|
||||
if (value.HasValue && settings.Display == DateTimeFieldDisplays.TimeOnly && value == DateTime.MinValue) {
|
||||
value = value.Value.AddDays(1);
|
||||
}
|
||||
|
||||
if (settings.Required && (!value.HasValue || (settings.Display != DateTimeFieldDisplays.TimeOnly && value.Value.Date == DateTime.MinValue))) {
|
||||
updater.AddModelError(GetPrefix(field, part), T("{0} is required.", field.DisplayName));
|
||||
}
|
||||
}
|
||||
|
||||
field.DateTime = value.HasValue ? value.Value : DateTime.MinValue;
|
||||
}
|
||||
|
||||
return Editor(part, field, shapeHelper);
|
||||
|
||||
@@ -7,6 +7,7 @@ using Orchard.Localization;
|
||||
using Orchard.Tokens;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
|
||||
namespace Orchard.Fields.Drivers {
|
||||
public class EnumerationFieldDriver : ContentFieldDriver<EnumerationField> {
|
||||
@@ -40,7 +41,7 @@ namespace Orchard.Fields.Drivers {
|
||||
() => {
|
||||
if (field.Value == null) {
|
||||
var settings = field.PartFieldDefinition.Settings.GetModel<EnumerationFieldSettings>();
|
||||
if (!String.IsNullOrEmpty(settings.DefaultValue)) {
|
||||
if (!String.IsNullOrWhiteSpace(settings.DefaultValue)) {
|
||||
field.Value = _tokenizer.Replace(settings.DefaultValue, new Dictionary<string, object> { { "Content", part.ContentItem } });
|
||||
}
|
||||
}
|
||||
@@ -52,6 +53,16 @@ namespace Orchard.Fields.Drivers {
|
||||
protected override DriverResult Editor(ContentPart part, EnumerationField field, IUpdateModel updater, dynamic shapeHelper) {
|
||||
if (updater.TryUpdateModel(field, GetPrefix(field, part), null, null)) {
|
||||
var settings = field.PartFieldDefinition.Settings.GetModel<EnumerationFieldSettings>();
|
||||
|
||||
if (field.SelectedValues.Length == 0 && !String.IsNullOrWhiteSpace(settings.DefaultValue) && !String.IsNullOrWhiteSpace(settings.Options)) {
|
||||
field.Value = _tokenizer.Replace(settings.DefaultValue, new Dictionary<string, object> { { "Content", part.ContentItem } });
|
||||
|
||||
string[] options = settings.Options.Split(new string[] { System.Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries);
|
||||
var selectedValues = field.SelectedValues.ToList();
|
||||
selectedValues.RemoveAll(value => !options.Any(value.Equals));
|
||||
field.SelectedValues = selectedValues.ToArray();
|
||||
}
|
||||
|
||||
if (settings.Required && field.SelectedValues.Length == 0) {
|
||||
updater.AddModelError(field.Name, T("The field {0} is mandatory", T(field.DisplayName)));
|
||||
}
|
||||
|
||||
@@ -46,11 +46,11 @@ namespace Orchard.Fields.Drivers {
|
||||
if (updater.TryUpdateModel(field, GetPrefix(field, part), null, null)) {
|
||||
var settings = field.PartFieldDefinition.Settings.GetModel<InputFieldSettings>();
|
||||
|
||||
if (field.Value == null && !String.IsNullOrEmpty(settings.DefaultValue)) {
|
||||
if (String.IsNullOrWhiteSpace(field.Value) && !String.IsNullOrWhiteSpace(settings.DefaultValue)) {
|
||||
field.Value = _tokenizer.Replace(settings.DefaultValue, new Dictionary<string, object> { { "Content", part.ContentItem } });
|
||||
}
|
||||
|
||||
if (settings.Required && string.IsNullOrWhiteSpace(field.Value)) {
|
||||
if (settings.Required && String.IsNullOrWhiteSpace(field.Value)) {
|
||||
updater.AddModelError(GetPrefix(field, part), T("The field {0} is mandatory.", T(field.DisplayName)));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -46,21 +46,21 @@ namespace Orchard.Fields.Drivers {
|
||||
if (updater.TryUpdateModel(field, GetPrefix(field, part), null, null)) {
|
||||
var settings = field.PartFieldDefinition.Settings.GetModel<LinkFieldSettings>();
|
||||
|
||||
if (String.IsNullOrEmpty(field.Value) && !String.IsNullOrEmpty(settings.DefaultValue)) {
|
||||
if (String.IsNullOrWhiteSpace(field.Value) && !String.IsNullOrWhiteSpace(settings.DefaultValue)) {
|
||||
field.Value = _tokenizer.Replace(settings.DefaultValue, new Dictionary<string, object> { { "Content", part.ContentItem } });
|
||||
}
|
||||
|
||||
if(!String.IsNullOrEmpty(settings.TextDefaultValue) && String.IsNullOrWhiteSpace(field.Text)) {
|
||||
if(!String.IsNullOrWhiteSpace(settings.TextDefaultValue) && String.IsNullOrWhiteSpace(field.Text)) {
|
||||
field.Text = _tokenizer.Replace(settings.TextDefaultValue, new Dictionary<string, object> { { "Content", part.ContentItem } });
|
||||
}
|
||||
|
||||
if (settings.Required && string.IsNullOrWhiteSpace(field.Value)) {
|
||||
if (settings.Required && String.IsNullOrWhiteSpace(field.Value)) {
|
||||
updater.AddModelError(GetPrefix(field, part), T("Url is required for {0}", field.DisplayName));
|
||||
}
|
||||
else if (!string.IsNullOrWhiteSpace(field.Value) && !Uri.IsWellFormedUriString(field.Value, UriKind.RelativeOrAbsolute)) {
|
||||
else if (!String.IsNullOrWhiteSpace(field.Value) && !Uri.IsWellFormedUriString(field.Value, UriKind.RelativeOrAbsolute)) {
|
||||
updater.AddModelError(GetPrefix(field, part), T("{0} is an invalid url.", field.Value));
|
||||
}
|
||||
else if (settings.LinkTextMode == LinkTextMode.Required && string.IsNullOrWhiteSpace(field.Text)) {
|
||||
else if (settings.LinkTextMode == LinkTextMode.Required && String.IsNullOrWhiteSpace(field.Text)) {
|
||||
updater.AddModelError(GetPrefix(field, part), T("Text is required for {0}.", field.DisplayName));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -64,47 +64,41 @@ namespace Orchard.Fields.Drivers {
|
||||
|
||||
var settings = field.PartFieldDefinition.Settings.GetModel<NumericFieldSettings>();
|
||||
|
||||
if (settings.Required && String.IsNullOrWhiteSpace(viewModel.Value)) {
|
||||
updater.AddModelError(GetPrefix(field, part), T("The field {0} is mandatory.", T(field.DisplayName)));
|
||||
if (String.IsNullOrWhiteSpace(viewModel.Value) && !String.IsNullOrWhiteSpace(settings.DefaultValue)) {
|
||||
viewModel.Value = _tokenizer.Replace(settings.DefaultValue, new Dictionary<string, object> { { "Content", part.ContentItem } });
|
||||
}
|
||||
|
||||
if (!settings.Required && String.IsNullOrWhiteSpace(viewModel.Value)) {
|
||||
if (settings.DefaultValue != null) {
|
||||
if (Decimal.TryParse(_tokenizer.Replace(settings.DefaultValue, new Dictionary<string, object> { { "Content", part.ContentItem } }), NumberStyles.Any, _cultureInfo.Value, out value)
|
||||
&& Math.Round(value, settings.Scale) == value
|
||||
&& !String.IsNullOrEmpty(settings.DefaultValue)) {
|
||||
field.Value = value;
|
||||
}
|
||||
}
|
||||
else {
|
||||
field.Value = null;
|
||||
field.Value = null;
|
||||
|
||||
if (String.IsNullOrWhiteSpace(viewModel.Value)) {
|
||||
if (settings.Required) {
|
||||
updater.AddModelError(GetPrefix(field, part), T("The field {0} is mandatory.", T(field.DisplayName)));
|
||||
}
|
||||
}
|
||||
else if (Decimal.TryParse(viewModel.Value, NumberStyles.Any, _cultureInfo.Value, out value)) {
|
||||
field.Value = value;
|
||||
else if (!Decimal.TryParse(viewModel.Value, NumberStyles.Any, _cultureInfo.Value, out value)) {
|
||||
updater.AddModelError(GetPrefix(field, part), T("{0} or its default value is an invalid number", field.DisplayName));
|
||||
}
|
||||
else {
|
||||
updater.AddModelError(GetPrefix(field, part), T("{0} is an invalid number", field.DisplayName));
|
||||
field.Value = null;
|
||||
}
|
||||
|
||||
if (settings.Minimum.HasValue && field.Value.HasValue && field.Value.Value < settings.Minimum.Value) {
|
||||
updater.AddModelError(GetPrefix(field, part), T("The value must be greater than {0}", settings.Minimum.Value));
|
||||
}
|
||||
field.Value = value;
|
||||
|
||||
if (settings.Maximum.HasValue && field.Value.HasValue && field.Value.Value > settings.Maximum.Value) {
|
||||
updater.AddModelError(GetPrefix(field, part), T("The value must be less than {0}", settings.Maximum.Value));
|
||||
}
|
||||
|
||||
// checking the number of decimals
|
||||
if(field.Value.HasValue && Math.Round(field.Value.Value, settings.Scale) != field.Value.Value) {
|
||||
if(settings.Scale == 0) {
|
||||
updater.AddModelError(GetPrefix(field, part), T("The field {0} must be an integer", field.DisplayName));
|
||||
if (settings.Minimum.HasValue && value < settings.Minimum.Value) {
|
||||
updater.AddModelError(GetPrefix(field, part), T("The value must be greater than {0}", settings.Minimum.Value));
|
||||
}
|
||||
else {
|
||||
updater.AddModelError(GetPrefix(field, part), T("Invalid number of digits for {0}, max allowed: {1}", field.DisplayName, settings.Scale));
|
||||
|
||||
if (settings.Maximum.HasValue && value > settings.Maximum.Value) {
|
||||
updater.AddModelError(GetPrefix(field, part), T("The value must be less than {0}", settings.Maximum.Value));
|
||||
}
|
||||
|
||||
// checking the number of decimals
|
||||
if (Math.Round(value, settings.Scale) != value) {
|
||||
if (settings.Scale == 0) {
|
||||
updater.AddModelError(GetPrefix(field, part), T("The field {0} must be an integer", field.DisplayName));
|
||||
}
|
||||
else {
|
||||
updater.AddModelError(GetPrefix(field, part), T("Invalid number of digits for {0}, max allowed: {1}", field.DisplayName, settings.Scale));
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -81,7 +81,7 @@
|
||||
<div>
|
||||
<label for="@Html.FieldIdFor(m => m.DefaultValue)">@T("Default value")</label>
|
||||
@Html.TextBoxFor(m => m.DefaultValue, new { @class = "text large tokenized ui-autocomplete-input" })
|
||||
<span class="hint">@T("A valid url as a default value, i.e. http://orchardproject.net, /content/file.pdf ... You can use tokens in this field. (optional)")</span>
|
||||
<span class="hint">@T("Default value for the field. You can use tokens in this field. If there is no value given for the actual field, this will be filled in. (optional)")</span>
|
||||
@Html.ValidationMessageFor(m => m.DefaultValue)
|
||||
</div>
|
||||
</fieldset>
|
||||
</fieldset>
|
||||
|
||||
@@ -3,47 +3,49 @@
|
||||
@{
|
||||
var settings = Model.PartFieldDefinition.Settings.GetModel<EnumerationFieldSettings>();
|
||||
string[] options = (!String.IsNullOrWhiteSpace(settings.Options)) ? settings.Options.Split(new string[] { System.Environment.NewLine }, StringSplitOptions.None) : new string[] { T("Select an option").ToString() };
|
||||
var isRequired = settings.Required && String.IsNullOrWhiteSpace(settings.DefaultValue);
|
||||
}
|
||||
<fieldset>
|
||||
<label for="@Html.FieldIdFor(m => m.Value)" @if(settings.Required) { <text>class="required"</text> }>@Model.DisplayName</label>
|
||||
<label for="@Html.FieldIdFor(m => m.Value)" @if (settings.Required) { <text> class="required" </text> }>@Model.DisplayName</label>
|
||||
@switch (settings.ListMode) {
|
||||
case ListMode.Dropdown:
|
||||
@Html.DropDownListFor(m => m.Value, new SelectList(options, Model.Value), settings.Required ? new {required = "required"} : null)
|
||||
@Html.DropDownListFor(m => m.Value, new SelectList(options, Model.Value), isRequired ? new { required = "required" } : null)
|
||||
break;
|
||||
|
||||
|
||||
case ListMode.Radiobutton:
|
||||
foreach (var option in options) {
|
||||
if (string.IsNullOrWhiteSpace(option)) {
|
||||
<label>@Html.RadioButton("Value", "", string.IsNullOrWhiteSpace(Model.Value), settings.Required ? new {required = "required"} : null)<i>@T("unset")</i></label>
|
||||
}
|
||||
if (string.IsNullOrWhiteSpace(option)) {
|
||||
<label>@Html.RadioButton("Value", "", string.IsNullOrWhiteSpace(Model.Value), isRequired ? new { required = "required" } : null)<i>@T("unset")</i></label> }
|
||||
else {
|
||||
<label>@Html.RadioButton("Value", option, (option == Model.Value), settings.Required ? new {required = "required"} : null)@option</label>
|
||||
}
|
||||
<label>@Html.RadioButton("Value", option, (option == Model.Value), isRequired ? new { required = "required" } : null)@option</label> }
|
||||
}
|
||||
break;
|
||||
|
||||
|
||||
case ListMode.Listbox:
|
||||
<input name="@Html.FieldNameFor(m => m.SelectedValues)" type="hidden" />
|
||||
@Html.ListBoxFor(m => m.SelectedValues, new MultiSelectList(options, Model.SelectedValues), settings.Required ? new {required = "required"} : null)
|
||||
@Html.ListBoxFor(m => m.SelectedValues, new MultiSelectList(options, Model.SelectedValues), isRequired ? new { required = "required" } : null)
|
||||
break;
|
||||
|
||||
case ListMode.Checkbox:
|
||||
int index = 0;
|
||||
<input name="@Html.FieldNameFor(m => m.SelectedValues)" type="hidden" />
|
||||
foreach (var option in options) {
|
||||
index++;
|
||||
if (!string.IsNullOrWhiteSpace(option)) {
|
||||
foreach (var option in options) {
|
||||
index++;
|
||||
if (!string.IsNullOrWhiteSpace(option)) {
|
||||
<div>
|
||||
<input type="checkbox" name="@Html.FieldNameFor(m => m.SelectedValues)" value="@option" @((Model.SelectedValues != null && Model.SelectedValues.Contains(option)) ? "checked=\"checked\"" : "") class="check-box" id="@Html.FieldIdFor(m => m.SelectedValues)-@index" @if(settings.Required) {<text> required="required"</text> } />
|
||||
<label class="forcheckbox" for="@Html.FieldIdFor(m => m.SelectedValues)-@index">@T(option)</label>
|
||||
<input type="checkbox" name="@Html.FieldNameFor(m => m.SelectedValues)" value="@option" @((Model.SelectedValues != null && Model.SelectedValues.Contains(option)) ? "checked=\"checked\"" : "") class="check-box" id="@Html.FieldIdFor(m => m.SelectedValues)-@index" />
|
||||
<label class="forcheckbox" for="@Html.FieldIdFor(m => m.SelectedValues)-@index">@T(option)</label>
|
||||
</div>
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
@Html.ValidationMessageFor(m => m.SelectedValues)
|
||||
@if (HasText(settings.Hint)) {
|
||||
<span class="hint">@settings.Hint</span>
|
||||
<span class="hint">@settings.Hint</span>
|
||||
}
|
||||
</fieldset>
|
||||
@if (!String.IsNullOrWhiteSpace(settings.DefaultValue)) {
|
||||
<span class="hint">@T("If no option is selected then the default value will be used.")</span>
|
||||
}
|
||||
</fieldset>
|
||||
@@ -3,13 +3,14 @@
|
||||
@using Orchard.Fields.Settings;
|
||||
@{
|
||||
var settings = Model.PartFieldDefinition.Settings.GetModel<InputFieldSettings>();
|
||||
var isRequired = settings.Required && String.IsNullOrWhiteSpace(settings.DefaultValue);
|
||||
}
|
||||
<fieldset>
|
||||
<label for="@Html.FieldIdFor(m => m.Value)" @if(settings.Required) { <text>class="required"</text> }>@Model.DisplayName</label>
|
||||
<input type="@settings.Type.ToString().ToLower()" id="@Html.FieldIdFor(m => m.Value)" name="@Html.FieldNameFor(m => m.Value)"@if(!String.IsNullOrWhiteSpace(settings.Title)) {<text> title="@settings.Title"</text>} value="@Model.Value"@if(settings.Required) {<text> required="required"</text> }@if(settings.AutoFocus) {<text> autofocus="autofocus"</text> }@if(settings.AutoComplete) {<text> autocomplete="on"</text> }@if(!string.IsNullOrWhiteSpace(settings.Placeholder)) {<text> placeholder="@settings.Placeholder"</text>}@if(!string.IsNullOrEmpty(settings.Pattern)) {<text> pattern="@settings.Pattern"</text>}@if(!string.IsNullOrEmpty(settings.EditorCssClass)) {<text> class="@settings.EditorCssClass"</text>} else {<text> class="text medium"</text>} @if(settings.MaxLength > 1) {<text> maxlength="@settings.MaxLength.ToString()"</text>} />
|
||||
<label for="@Html.FieldIdFor(m => m.Value)" @if (settings.Required) { <text> class="required" </text> }>@Model.DisplayName</label>
|
||||
<input type="@settings.Type.ToString().ToLower()" id="@Html.FieldIdFor(m => m.Value)" name="@Html.FieldNameFor(m => m.Value)" @if (!String.IsNullOrWhiteSpace(settings.Title)) { <text> title="@settings.Title" </text> } value="@Model.Value" @if (isRequired) { <text> required="required" </text> } @if (settings.AutoFocus) { <text> autofocus="autofocus" </text> } @if (settings.AutoComplete) { <text> autocomplete="on" </text> } @if (!String.IsNullOrWhiteSpace(settings.Placeholder)) { <text> placeholder="@settings.Placeholder" </text> } @if (!String.IsNullOrWhiteSpace(settings.Pattern)) { <text> pattern="@settings.Pattern" </text> } @if (!String.IsNullOrWhiteSpace(settings.EditorCssClass)) { <text> class="@settings.EditorCssClass" </text> } else { <text> class="text medium" </text> } @if (settings.MaxLength > 1) { <text> maxlength="@settings.MaxLength.ToString()" </text> } />
|
||||
@Html.ValidationMessageFor(m => m.Value)
|
||||
@if (HasText(settings.Hint)) {
|
||||
<span class="hint">@settings.Hint</span>
|
||||
<span class="hint">@settings.Hint</span>
|
||||
}
|
||||
@if (!String.IsNullOrWhiteSpace(settings.DefaultValue)) {
|
||||
<span class="hint">@T("If the field is left empty then the default value will be used.")</span>
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
@using Orchard.Fields.Settings;
|
||||
@{
|
||||
var settings = Model.PartFieldDefinition.Settings.GetModel<LinkFieldSettings>();
|
||||
string target = string.Empty;
|
||||
string target = String.Empty;
|
||||
switch (settings.TargetMode) {
|
||||
case TargetMode.NewWindow:
|
||||
target = "_blank";
|
||||
@@ -13,18 +13,21 @@
|
||||
case TargetMode.Top:
|
||||
target = "_top";
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
var isRequired = settings.Required && String.IsNullOrWhiteSpace(settings.DefaultValue);
|
||||
var isTextRequired = settings.LinkTextMode == LinkTextMode.Required && String.IsNullOrWhiteSpace(settings.TextDefaultValue);
|
||||
}
|
||||
<fieldset>
|
||||
<label for="@Html.FieldIdFor(m => m.Value)">@Model.DisplayName</label>
|
||||
@if (HasText(settings.Hint)) {
|
||||
<span class="hint">@settings.Hint</span>
|
||||
<span class="hint">@settings.Hint</span>
|
||||
}
|
||||
<div class="editor-label">
|
||||
<label for="@Html.FieldIdFor(m => m.Value)" @if(settings.Required) { <text>class="required"</text> }>@T("Url")</label>
|
||||
<label for="@Html.FieldIdFor(m => m.Value)" @if (settings.Required) { <text> class="required" </text> }>@T("Url")</label>
|
||||
</div>
|
||||
<div class="editor-field">
|
||||
@Html.TextBoxFor(m => m.Value, new { @class = "text large", placeholder = settings.UrlPlaceholder })
|
||||
@(isRequired ? Html.TextBoxFor(m => m.Value, new { @class = "text large", placeholder = settings.UrlPlaceholder, required = "required" }) : Html.TextBoxFor(m => m.Value, new { @class = "text large", placeholder = settings.UrlPlaceholder }))
|
||||
<span class="hint">@T("A valid url, i.e. http://orchardproject.net, /content/file.pdf, ...")</span>
|
||||
</div>
|
||||
@if (!String.IsNullOrWhiteSpace(settings.DefaultValue)) {
|
||||
@@ -32,10 +35,10 @@
|
||||
}
|
||||
@if (settings.LinkTextMode == LinkTextMode.Optional || settings.LinkTextMode == LinkTextMode.Required) {
|
||||
<div class="editor-label">
|
||||
<label for="@Html.FieldIdFor(m => m.Text)" @if(settings.LinkTextMode == LinkTextMode.Required) { <text>class="required"</text> }>@T("Text")</label>
|
||||
<label for="@Html.FieldIdFor(m => m.Text)" @if (settings.LinkTextMode == LinkTextMode.Required) { <text> class="required" </text> }>@T("Text")</label>
|
||||
</div>
|
||||
<div class="editor-field">
|
||||
@Html.TextBoxFor(m => m.Text, new { @class = "text medium", placeholder = settings.TextPlaceholder })
|
||||
@(isTextRequired ? Html.TextBoxFor(m => m.Text, new { @class = "text medium", placeholder = settings.UrlPlaceholder, required = "required" }) : Html.TextBoxFor(m => m.Text, new { @class = "text medium", placeholder = settings.UrlPlaceholder }))
|
||||
@if (!String.IsNullOrWhiteSpace(settings.TextDefaultValue)) {
|
||||
<span class="hint">@T("If the field is left empty then the default value will be used.")</span>
|
||||
}
|
||||
@@ -44,13 +47,13 @@
|
||||
}
|
||||
</div>
|
||||
}
|
||||
|
||||
|
||||
@if (settings.TargetMode == TargetMode.UserChoice) {
|
||||
<div class="editor-label">
|
||||
<label for="@Html.FieldIdFor(m => m.Target)">@T("Target")</label>
|
||||
</div>
|
||||
<div class="editor-field">
|
||||
@Html.TextBoxFor(m => m.Target, new { @class = "text"})
|
||||
@Html.TextBoxFor(m => m.Target, new { @class = "text" })
|
||||
<span class="hint">@T("A valid HTML target attribute value. e.g., _blank, _parent, _top, or an anchor. ")</span>
|
||||
</div>
|
||||
}
|
||||
|
||||
@@ -2,14 +2,32 @@
|
||||
@using System.Globalization
|
||||
@using Orchard.Fields.Settings;
|
||||
|
||||
@{
|
||||
var isRequired = Model.Settings.Required && String.IsNullOrWhiteSpace(Model.Settings.DefaultValue);
|
||||
var hasValue = !String.IsNullOrWhiteSpace(Model.Value);
|
||||
|
||||
var attributes = new Dictionary<string, object>();
|
||||
attributes.Add("class", "text-small"); attributes.Add("type", "text");
|
||||
attributes.Add("min", Model.Settings.Minimum.HasValue ? Model.Settings.Minimum.Value : 0);
|
||||
attributes.Add("max", Model.Settings.Maximum.HasValue ? Model.Settings.Maximum.Value : 1000000);
|
||||
attributes.Add("step", Math.Pow(10, 0 - Model.Settings.Scale).ToString(CultureInfo.InvariantCulture));
|
||||
attributes.Add("placeholder", Model.Settings.Placeholder);
|
||||
|
||||
if (isRequired) {
|
||||
attributes.Add("required", "required");
|
||||
}
|
||||
|
||||
if (hasValue) {
|
||||
attributes.Add("Value", Model.Value);
|
||||
}
|
||||
}
|
||||
|
||||
<fieldset>
|
||||
<label for="@Html.FieldIdFor(m => m.Value)" @if(Model.Settings.Required) { <text>class="required"</text> }>@Model.Field.DisplayName</label>
|
||||
@(Model.Settings.Required
|
||||
? Html.TextBoxFor(m => m.Value, new {@class = "text-small", type = "text", min = (Model.Settings.Minimum.HasValue) ? Model.Settings.Minimum.Value : 0, max = (Model.Settings.Maximum.HasValue) ? Model.Settings.Maximum.Value : 1000000, step = Math.Pow(10, 0 - Model.Settings.Scale).ToString(CultureInfo.InvariantCulture), required = "required", placeholder = Model.Settings.Placeholder })
|
||||
: Html.TextBoxFor(m => m.Value, new {@class = "text-small", type = "text", min = (Model.Settings.Minimum.HasValue) ? Model.Settings.Minimum.Value : 0, max = (Model.Settings.Maximum.HasValue) ? Model.Settings.Maximum.Value : 1000000, step = Math.Pow(10, 0 - Model.Settings.Scale).ToString(CultureInfo.InvariantCulture), placeholder = Model.Settings.Placeholder }))
|
||||
<label for="@Html.FieldIdFor(m => m.Value)" @if (Model.Settings.Required) { <text> class="required" </text> }>@Model.Field.DisplayName</label>
|
||||
@Html.TextBoxFor(m => m.Value, attributes)
|
||||
@Html.ValidationMessageFor(m => m.Value)
|
||||
@if (HasText(Model.Settings.Hint)) {
|
||||
<span class="hint">@Model.Settings.Hint</span>
|
||||
<span class="hint">@Model.Settings.Hint</span>
|
||||
}
|
||||
@if (!String.IsNullOrWhiteSpace(Model.Settings.DefaultValue)) {
|
||||
<span class="hint">@T("If the field is left empty then the default value will be used.")</span>
|
||||
|
||||
Reference in New Issue
Block a user