#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
@@ -2,6 +2,9 @@
using Orchard.Events; using Orchard.Events;
using Orchard.Fields.Fields; using Orchard.Fields.Fields;
using Orchard.Localization; using Orchard.Localization;
using Orchard.Services;
using Orchard.Core.Shapes.Localization;
using System.Globalization;
namespace Orchard.Fields.Tokens { namespace Orchard.Fields.Tokens {
public interface ITokenProvider : IEventHandler { public interface ITokenProvider : IEventHandler {
@@ -11,6 +14,27 @@ namespace Orchard.Fields.Tokens {
public class FieldTokens : ITokenProvider { 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 Localizer T { get; set; }
public void Describe(dynamic context) { 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")) context.For("DateTimeField", T("Date Time Field"), T("Tokens for Date Time Fields"))
.Token("Date", T("Date"), T("The date only.")) .Token("Date", T("Date"), T("The date only."))
.Token("Time", T("Time"), T("The time 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")) 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") context.For<DateTimeField>("DateTimeField")
.Token("Date", (Func<DateTimeField, object>)(field => field.DateTime)) .Token("Date", (Func<DateTimeField, object>)(d => d.DateTime.ToString(_dateTimeLocalization.ShortDateFormat.Text, _cultureInfo.Value)))
.Chain("Date", "Date", (Func<DateTimeField, object>)(field => field.DateTime)) .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") context.For<MediaPickerField>("MediaPickerField")
@@ -61,11 +88,6 @@ namespace Orchard.Fields.Tokens {
.Token("Width", (Func<MediaPickerField, object>)(field => field.Width)) .Token("Width", (Func<MediaPickerField, object>)(field => field.Width))
.Token("Height", (Func<MediaPickerField, object>)(field => field.Height)) .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))
;
} }
} }
} }