mirror of
https://github.com/OrchardCMS/Orchard.git
synced 2025-08-20 10:06:07 +08:00
handled the setting in the DateTimeField and DateTimeFieldDriver.
Updated the Editor shape
This commit is contained in:
parent
d2cb962e2b
commit
6d815f15f9
@ -42,23 +42,27 @@ namespace Orchard.Fields.Drivers {
|
||||
var options = new DateLocalizationOptions();
|
||||
|
||||
// Don't do any time zone conversion if field is semantically a date-only field, because that might mutate the date component.
|
||||
if (settings.Display == DateTimeFieldDisplays.DateOnly) {
|
||||
if (field.Display == DateTimeFieldDisplays.DateOnly) {
|
||||
options.EnableTimeZoneConversion = false;
|
||||
}
|
||||
|
||||
// Don't do any calendar conversion if field is semantically a time-only field, because the date component might we out of allowed boundaries for the current calendar.
|
||||
if (settings.Display == DateTimeFieldDisplays.TimeOnly) {
|
||||
if (field.Display == DateTimeFieldDisplays.TimeOnly) {
|
||||
options.EnableCalendarConversion = false;
|
||||
options.IgnoreDate = true;
|
||||
}
|
||||
|
||||
var showDate = settings.Display == DateTimeFieldDisplays.DateAndTime || settings.Display == DateTimeFieldDisplays.DateOnly;
|
||||
var showTime = settings.Display == DateTimeFieldDisplays.DateAndTime || settings.Display == DateTimeFieldDisplays.TimeOnly;
|
||||
var showDate = field.Display == DateTimeFieldDisplays.DateAndTime || field.Display == DateTimeFieldDisplays.DateOnly;
|
||||
var showTime = field.Display == DateTimeFieldDisplays.DateAndTime || field.Display == DateTimeFieldDisplays.TimeOnly;
|
||||
|
||||
|
||||
DateTimeFieldDisplays displayOption = field.Display;
|
||||
var viewModel = new DateTimeFieldViewModel {
|
||||
Name = field.DisplayName,
|
||||
Hint = settings.Hint,
|
||||
IsRequired = settings.Required,
|
||||
AllowDisplayOptionsOverride = settings.AllowDisplayOptionsOverride,
|
||||
DisplayOption = displayOption,
|
||||
Editor = new DateTimeEditor() {
|
||||
Date = showDate ? DateLocalizationServices.ConvertToLocalizedDateString(value, options) : null,
|
||||
Time = showTime ? DateLocalizationServices.ConvertToLocalizedTimeString(value, options) : null,
|
||||
@ -78,25 +82,33 @@ namespace Orchard.Fields.Drivers {
|
||||
var value = part.IsNew() && field.DateTime == default(DateTime) ? settings.DefaultValue : field.DateTime;
|
||||
var options = new DateLocalizationOptions();
|
||||
|
||||
// Don't do any time zone conversion if field is semantically a date-only field, because that might mutate the date component.
|
||||
if (settings.Display == DateTimeFieldDisplays.DateOnly) {
|
||||
options.EnableTimeZoneConversion = false;
|
||||
// If AllowDisplayOptionsOverride is true, both the date selector and the time selector will be shown
|
||||
var showDate = true;
|
||||
var showTime = true;
|
||||
|
||||
DateTimeFieldDisplays displayOption = field.Display;
|
||||
if (!settings.AllowDisplayOptionsOverride) {
|
||||
// Don't do any time zone conversion if field is semantically a date-only field, because that might mutate the date component.
|
||||
if (settings.Display == DateTimeFieldDisplays.DateOnly) {
|
||||
options.EnableTimeZoneConversion = false;
|
||||
}
|
||||
|
||||
// Don't do any calendar conversion if field is semantically a time-only field, because the date component might we out of allowed boundaries for the current calendar.
|
||||
if (settings.Display == DateTimeFieldDisplays.TimeOnly) {
|
||||
options.EnableCalendarConversion = false;
|
||||
options.IgnoreDate = true;
|
||||
}
|
||||
|
||||
showDate = settings.Display == DateTimeFieldDisplays.DateAndTime || settings.Display == DateTimeFieldDisplays.DateOnly;
|
||||
showTime = settings.Display == DateTimeFieldDisplays.DateAndTime || settings.Display == DateTimeFieldDisplays.TimeOnly;
|
||||
}
|
||||
|
||||
// Don't do any calendar conversion if field is semantically a time-only field, because the date component might we out of allowed boundaries for the current calendar.
|
||||
if (settings.Display == DateTimeFieldDisplays.TimeOnly) {
|
||||
options.EnableCalendarConversion = false;
|
||||
options.IgnoreDate = true;
|
||||
}
|
||||
|
||||
var showDate = settings.Display == DateTimeFieldDisplays.DateAndTime || settings.Display == DateTimeFieldDisplays.DateOnly;
|
||||
var showTime = settings.Display == DateTimeFieldDisplays.DateAndTime || settings.Display == DateTimeFieldDisplays.TimeOnly;
|
||||
|
||||
|
||||
var viewModel = new DateTimeFieldViewModel {
|
||||
Name = field.DisplayName,
|
||||
Hint = settings.Hint,
|
||||
IsRequired = settings.Required,
|
||||
AllowDisplayOptionsOverride = settings.AllowDisplayOptionsOverride,
|
||||
DisplayOption = displayOption,
|
||||
Editor = new DateTimeEditor() {
|
||||
Date = showDate ? DateLocalizationServices.ConvertToLocalizedDateString(value, options) : null,
|
||||
Time = showTime ? DateLocalizationServices.ConvertToLocalizedTimeString(value, options) : null,
|
||||
@ -118,19 +130,25 @@ namespace Orchard.Fields.Drivers {
|
||||
|
||||
var options = new DateLocalizationOptions();
|
||||
|
||||
// Don't do any time zone conversion if field is semantically a date-only field, because that might mutate the date component.
|
||||
if (settings.Display == DateTimeFieldDisplays.DateOnly) {
|
||||
options.EnableTimeZoneConversion = false;
|
||||
}
|
||||
var showDate = true;
|
||||
var showTime = true;
|
||||
|
||||
// Don't do any calendar conversion if field is semantically a time-only field, because the date component might we out of allowed boundaries for the current calendar.
|
||||
if (settings.Display == DateTimeFieldDisplays.TimeOnly) {
|
||||
options.EnableCalendarConversion = false;
|
||||
options.IgnoreDate = true;
|
||||
}
|
||||
field.Display = viewModel.DisplayOption;
|
||||
|
||||
var showDate = settings.Display == DateTimeFieldDisplays.DateAndTime || settings.Display == DateTimeFieldDisplays.DateOnly;
|
||||
var showTime = settings.Display == DateTimeFieldDisplays.DateAndTime || settings.Display == DateTimeFieldDisplays.TimeOnly;
|
||||
if (!settings.AllowDisplayOptionsOverride) {
|
||||
if (settings.Display == DateTimeFieldDisplays.DateOnly) {
|
||||
options.EnableTimeZoneConversion = false;
|
||||
}
|
||||
|
||||
// Don't do any calendar conversion if field is semantically a time-only field, because the date component might we out of allowed boundaries for the current calendar.
|
||||
if (settings.Display == DateTimeFieldDisplays.TimeOnly) {
|
||||
options.EnableCalendarConversion = false;
|
||||
options.IgnoreDate = true;
|
||||
}
|
||||
|
||||
showDate = settings.Display == DateTimeFieldDisplays.DateAndTime || settings.Display == DateTimeFieldDisplays.DateOnly;
|
||||
showTime = settings.Display == DateTimeFieldDisplays.DateAndTime || settings.Display == DateTimeFieldDisplays.TimeOnly;
|
||||
}
|
||||
|
||||
DateTime? value = null;
|
||||
|
||||
@ -172,7 +190,8 @@ namespace Orchard.Fields.Drivers {
|
||||
protected override void Describe(DescribeMembersContext context) {
|
||||
context
|
||||
.Member(null, typeof(DateTime), T("Value"), T("The date and time value of the field."))
|
||||
.Enumerate<DateTimeField>(() => field => new[] { field.DateTime });
|
||||
.Enumerate<DateTimeField>(() => field => new[] { field.DateTime })
|
||||
.Member("DisplayOption", typeof(string), T("DisplayOption"), T("The display option specific for this field"));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,7 +1,9 @@
|
||||
using System;
|
||||
using System.Runtime.InteropServices.WindowsRuntime;
|
||||
using Orchard.ContentManagement;
|
||||
using Orchard.ContentManagement.FieldStorage;
|
||||
using Orchard.Fields.Settings;
|
||||
using Orchard.UI.Notify;
|
||||
|
||||
namespace Orchard.Fields.Fields {
|
||||
public class DateTimeField : ContentField {
|
||||
@ -30,8 +32,26 @@ namespace Orchard.Fields.Fields {
|
||||
public DateTimeFieldDisplays Display {
|
||||
get {
|
||||
var settings = this.PartFieldDefinition.Settings.GetModel<DateTimeFieldSettings>();
|
||||
if (settings.AllowDisplayOptionsOverride) {
|
||||
if (Enum.TryParse(DisplayOption, out DateTimeFieldDisplays displayOption)){
|
||||
return displayOption;
|
||||
}
|
||||
}
|
||||
return settings.Display;
|
||||
}
|
||||
set {
|
||||
DisplayOption = value.ToString();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
protected string DisplayOption {
|
||||
get {
|
||||
return Storage.Get<string>("DisplayOption");
|
||||
}
|
||||
set {
|
||||
Storage.Set("DisplayOption", value ?? String.Empty);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,6 +1,7 @@
|
||||
using Orchard.Core.Common.ViewModels;
|
||||
using Orchard.Fields.Settings;
|
||||
|
||||
|
||||
namespace Orchard.Fields.ViewModels {
|
||||
public class DateTimeFieldViewModel {
|
||||
public string Name { get; set; }
|
||||
@ -8,6 +9,6 @@ namespace Orchard.Fields.ViewModels {
|
||||
public bool IsRequired { get; set; }
|
||||
public DateTimeEditor Editor { get; set; }
|
||||
public bool AllowDisplayOptionsOverride { get; set; }
|
||||
|
||||
public DateTimeFieldDisplays DisplayOption { get; set; }
|
||||
}
|
||||
}
|
||||
@ -1,15 +1,19 @@
|
||||
@model Orchard.Fields.ViewModels.DateTimeFieldViewModel
|
||||
@using Orchard.Fields.Settings;
|
||||
|
||||
|
||||
<fieldset>
|
||||
<label for="@Html.FieldIdFor(m => Model.Editor.Date)" @if (Model.IsRequired) { <text> class="required" </text> }>@Model.Name</label>
|
||||
@Html.EditorFor(m => m.Editor)
|
||||
@if (Model.AllowDisplayOptionsOverride) {
|
||||
<span class="hint">SPECIFICAMI QUESTO</span>
|
||||
@if (Model.AllowDisplayOptionsOverride) {
|
||||
<select id="@Html.FieldIdFor(m => m.DisplayOption)" name="@Html.FieldNameFor(m => m.DisplayOption)">
|
||||
@Html.SelectOption(DateTimeFieldDisplays.DateAndTime, Model.DisplayOption == DateTimeFieldDisplays.DateAndTime, T("Date and time").ToString())
|
||||
@Html.SelectOption(DateTimeFieldDisplays.DateOnly, Model.DisplayOption == DateTimeFieldDisplays.DateOnly, T("Date only").ToString())
|
||||
@Html.SelectOption(DateTimeFieldDisplays.TimeOnly, Model.DisplayOption == DateTimeFieldDisplays.TimeOnly, T("Time only").ToString())
|
||||
</select>
|
||||
}
|
||||
|
||||
@if (HasText(Model.Hint))
|
||||
{
|
||||
@if (HasText(Model.Hint)) {
|
||||
<span class="hint">@Model.Hint</span>
|
||||
}
|
||||
</fieldset>
|
||||
|
||||
Loading…
Reference in New Issue
Block a user