#18869: Completing DateTime Field tokens

Work Item: 18869

--HG--
branch : 1.x
This commit is contained in:
Sebastien Ros
2012-09-21 17:00:49 -07:00
parent 138f9a204e
commit a5b47d1b23

View File

@@ -2,6 +2,9 @@
using Orchard.Events;
using Orchard.Fields.Fields;
using Orchard.Localization;
using Orchard.Services;
using Orchard.Core.Shapes.Localization;
using System.Globalization;
namespace Orchard.Fields.Tokens {
public interface ITokenProvider : IEventHandler {
@@ -11,6 +14,27 @@ namespace Orchard.Fields.Tokens {
public class FieldTokens : ITokenProvider {
private readonly IClock _clock;
private readonly IDateTimeLocalization _dateTimeLocalization;
private readonly IWorkContextAccessor _workContextAccessor;
private readonly Lazy<CultureInfo> _cultureInfo;
private readonly Lazy<TimeZoneInfo> _timeZone;
public FieldTokens(
IClock clock,
IDateTimeLocalization dateTimeLocalization,
IWorkContextAccessor workContextAccessor) {
_clock = clock;
_dateTimeLocalization = dateTimeLocalization;
_workContextAccessor = workContextAccessor;
_cultureInfo = new Lazy<CultureInfo>(() => CultureInfo.GetCultureInfo(_workContextAccessor.GetContext().CurrentCulture));
_timeZone = new Lazy<TimeZoneInfo>(() => _workContextAccessor.GetContext().CurrentTimeZone);
T = NullLocalizer.Instance;
}
public Localizer T { get; set; }
public void Describe(dynamic context) {
@@ -24,6 +48,7 @@ namespace Orchard.Fields.Tokens {
context.For("DateTimeField", T("Date Time Field"), T("Tokens for Date Time Fields"))
.Token("Date", T("Date"), T("The date only."))
.Token("Time", T("Time"), T("The time only."))
.Token("DateTime", T("Date Time"), T("The date and time."))
;
context.For("MediaPickerField", T("Media Picker Field"), T("Tokens for Media Picker Fields"))
@@ -47,8 +72,10 @@ namespace Orchard.Fields.Tokens {
;
context.For<DateTimeField>("DateTimeField")
.Token("Date", (Func<DateTimeField, object>)(field => field.DateTime))
.Chain("Date", "Date", (Func<DateTimeField, object>)(field => field.DateTime))
.Token("Date", (Func<DateTimeField, object>)(d => d.DateTime.ToString(_dateTimeLocalization.ShortDateFormat.Text, _cultureInfo.Value)))
.Token("Time", (Func<DateTimeField, object>)(d => d.DateTime.ToString(_dateTimeLocalization.ShortTimeFormat.Text, _cultureInfo.Value)))
.Token("DateTime", (Func<DateTimeField, object>)(d => d.DateTime.ToString(_dateTimeLocalization.ShortDateFormat.Text + " " + _dateTimeLocalization.ShortTimeFormat.Text, _cultureInfo.Value)))
.Chain("DateTime", "Date", (Func<DateTimeField, object>)(field => field.DateTime))
;
context.For<MediaPickerField>("MediaPickerField")
@@ -61,11 +88,6 @@ namespace Orchard.Fields.Tokens {
.Token("Width", (Func<MediaPickerField, object>)(field => field.Width))
.Token("Height", (Func<MediaPickerField, object>)(field => field.Height))
;
context.For<DateTimeField>("DateTimeField")
.Token("Date", (Func<DateTimeField, object>)(field => field.DateTime))
.Chain("Date", "Date", (Func<DateTimeField, object>)(field => field.DateTime))
;
}
}
}