Displaying form submission time in local timezone.

This commit is contained in:
Sipke Schoorstra
2014-10-16 22:14:18 -07:00
parent 60f5a112a8
commit b19a4cbbac
2 changed files with 20 additions and 11 deletions

View File

@@ -18,7 +18,7 @@ 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;
using Orchard.Mvc; using Orchard.Localization.Services;
using Orchard.Services; using Orchard.Services;
namespace Orchard.DynamicForms.Services { namespace Orchard.DynamicForms.Services {
@@ -30,32 +30,37 @@ namespace Orchard.DynamicForms.Services {
private readonly IContentManager _contentManager; private readonly IContentManager _contentManager;
private readonly IContentDefinitionManager _contentDefinitionManager; private readonly IContentDefinitionManager _contentDefinitionManager;
private readonly IBindingManager _bindingManager; private readonly IBindingManager _bindingManager;
private readonly IHttpContextAccessor _httpContextAccessor;
private readonly IDynamicFormEventHandler _formEventHandler; private readonly IDynamicFormEventHandler _formEventHandler;
private readonly Lazy<IEnumerable<IElementValidator>> _validators; private readonly Lazy<IEnumerable<IElementValidator>> _validators;
private readonly IDateLocalizationServices _dateLocalizationServices;
private readonly IOrchardServices _services;
private readonly ICultureAccessor _cultureAccessor;
public FormService( public FormService(
ILayoutSerializer serializer, ILayoutSerializer serializer,
IClock clock, IClock clock,
IRepository<Submission> submissionRepository, IRepository<Submission> submissionRepository,
IFormElementEventHandler elementHandlers, IFormElementEventHandler elementHandlers,
IContentManager contentManager,
IContentDefinitionManager contentDefinitionManager, IContentDefinitionManager contentDefinitionManager,
IBindingManager bindingManager, IBindingManager bindingManager,
IHttpContextAccessor httpContextAccessor,
IDynamicFormEventHandler formEventHandler, IDynamicFormEventHandler formEventHandler,
Lazy<IEnumerable<IElementValidator>> validators) { Lazy<IEnumerable<IElementValidator>> validators,
IDateLocalizationServices dateLocalizationServices,
IOrchardServices services,
ICultureAccessor cultureAccessor) {
_serializer = serializer; _serializer = serializer;
_clock = clock; _clock = clock;
_submissionRepository = submissionRepository; _submissionRepository = submissionRepository;
_elementHandlers = elementHandlers; _elementHandlers = elementHandlers;
_contentManager = contentManager; _contentManager = services.ContentManager;
_contentDefinitionManager = contentDefinitionManager; _contentDefinitionManager = contentDefinitionManager;
_bindingManager = bindingManager; _bindingManager = bindingManager;
_httpContextAccessor = httpContextAccessor;
_formEventHandler = formEventHandler; _formEventHandler = formEventHandler;
_validators = validators; _validators = validators;
_dateLocalizationServices = dateLocalizationServices;
_services = services;
_cultureAccessor = cultureAccessor;
} }
public Form FindForm(LayoutPart layoutPart, string formName = null) { public Form FindForm(LayoutPart layoutPart, string formName = null) {
@@ -173,7 +178,7 @@ namespace Orchard.DynamicForms.Services {
} }
// Collect any remaining form values not handled by any specific element. // Collect any remaining form values not handled by any specific element.
var requestForm = _httpContextAccessor.Current().Request.Form; var requestForm = _services.WorkContext.HttpContext.Request.Form;
var blackList = new[] {"__RequestVerificationToken", "formName", "contentId"}; var blackList = new[] {"__RequestVerificationToken", "formName", "contentId"};
foreach (var key in foreach (var key in
from string key in requestForm from string key in requestForm
@@ -200,7 +205,7 @@ namespace Orchard.DynamicForms.Services {
} }
dataTable.Columns.Add("Id"); dataTable.Columns.Add("Id");
dataTable.Columns.Add("CreatedUtc", typeof (DateTime)); dataTable.Columns.Add("Created");
foreach (var columnName in columnNames) { foreach (var columnName in columnNames) {
dataTable.Columns.Add(columnName); dataTable.Columns.Add(columnName);
} }
@@ -209,7 +214,7 @@ namespace Orchard.DynamicForms.Services {
var dataRow = dataTable.NewRow(); var dataRow = dataTable.NewRow();
dataRow["Id"] = record.Item1.Id; dataRow["Id"] = record.Item1.Id;
dataRow["CreatedUtc"] = record.Item1.CreatedUtc; dataRow["Created"] = _dateLocalizationServices.ConvertToSiteTimeZone(record.Item1.CreatedUtc).ToString(_cultureAccessor.CurrentCulture);
foreach (var columnName in columnNames) { foreach (var columnName in columnNames) {
var value = record.Item2[columnName]; var value = record.Item2[columnName];
dataRow[columnName] = value; dataRow[columnName] = value;

View File

@@ -1,14 +1,18 @@
using System;
using System.Globalization; using System.Globalization;
namespace Orchard.Layouts.Services { namespace Orchard.Layouts.Services {
public class CultureAccessor : ICultureAccessor { public class CultureAccessor : ICultureAccessor {
private readonly IWorkContextAccessor _wca; private readonly IWorkContextAccessor _wca;
private readonly Lazy<CultureInfo> _currentCulture;
public CultureAccessor(IWorkContextAccessor wca) { public CultureAccessor(IWorkContextAccessor wca) {
_wca = wca; _wca = wca;
_currentCulture = new Lazy<CultureInfo>(() => new CultureInfo(_wca.GetContext().CurrentCulture));
} }
public CultureInfo CurrentCulture { public CultureInfo CurrentCulture {
get { return new CultureInfo(_wca.GetContext().CurrentCulture); } get { return _currentCulture.Value; }
} }
} }
} }