From a97a7e26d5c38bc5b733fd7bb3f3dfb93e32ea4a Mon Sep 17 00:00:00 2001 From: Piotr Szmyd Date: Tue, 24 Mar 2015 15:17:15 +0100 Subject: [PATCH] #21294: Added optional date parameter to TimerActivity. Also added description hints and updated class name. Work Item: 21294 --- .../Orchard.Workflows/Activities/TimerActivity.cs | 12 +++++++++--- .../Modules/Orchard.Workflows/Forms/TimerForms.cs | 15 ++++++++++----- 2 files changed, 19 insertions(+), 8 deletions(-) diff --git a/src/Orchard.Web/Modules/Orchard.Workflows/Activities/TimerActivity.cs b/src/Orchard.Web/Modules/Orchard.Workflows/Activities/TimerActivity.cs index 364b32daa..5309c42d2 100644 --- a/src/Orchard.Web/Modules/Orchard.Workflows/Activities/TimerActivity.cs +++ b/src/Orchard.Web/Modules/Orchard.Workflows/Activities/TimerActivity.cs @@ -6,6 +6,7 @@ using Orchard.Data; using Orchard.Environment.Extensions; using Orchard.Forms.Services; using Orchard.Localization; +using Orchard.Localization.Services; using Orchard.Services; using Orchard.Tasks; using Orchard.Workflows.Models; @@ -15,9 +16,11 @@ namespace Orchard.Workflows.Activities { [OrchardFeature("Orchard.Workflows.Timer")] public class TimerActivity : Event { private readonly IClock _clock; + private readonly IDateLocalizationServices _dateServices; - public TimerActivity(IClock clock) { + public TimerActivity(IClock clock, IDateLocalizationServices dateServices) { _clock = clock; + _dateServices = dateServices; T = NullLocalizer.Instance; } @@ -57,7 +60,11 @@ namespace Orchard.Workflows.Activities { DateTime started; if (!workflowContext.HasStateFor(activityContext.Record, "StartedUtc")) { - workflowContext.SetStateFor(activityContext.Record, "StartedUtc", started = _clock.UtcNow); + var dateString = activityContext.GetState("Date"); + var date = _dateServices.ConvertFromLocalizedString(dateString); + started = date ?? _clock.UtcNow; + + workflowContext.SetStateFor(activityContext.Record, "StartedUtc", started); } else { started = workflowContext.GetStateFor(activityContext.Record, "StartedUtc"); @@ -71,7 +78,6 @@ namespace Orchard.Workflows.Activities { public static DateTime When(DateTime started, int amount, string type) { try { - var when = started; switch (type) { diff --git a/src/Orchard.Web/Modules/Orchard.Workflows/Forms/TimerForms.cs b/src/Orchard.Web/Modules/Orchard.Workflows/Forms/TimerForms.cs index 8b012f7c0..d33543175 100644 --- a/src/Orchard.Web/Modules/Orchard.Workflows/Forms/TimerForms.cs +++ b/src/Orchard.Web/Modules/Orchard.Workflows/Forms/TimerForms.cs @@ -7,11 +7,11 @@ using Orchard.Localization; namespace Orchard.Workflows.Forms { [OrchardFeature("Orchard.Workflows.Timer")] - public class ScheduleForms : IFormProvider { + public class TimerForms : IFormProvider { protected dynamic Shape { get; set; } public Localizer T { get; set; } - public ScheduleForms(IShapeFactory shapeFactory) { + public TimerForms(IShapeFactory shapeFactory) { Shape = shapeFactory; T = NullLocalizer.Instance; } @@ -24,7 +24,8 @@ namespace Orchard.Workflows.Forms { _Amount: Shape.Textbox( Id: "Amount", Name: "Amount", Title: T("Amount"), - Classes: new[] { "text small" }), + Description: T("Amount of time units to add."), + Classes: new[] { "text small tokenized" }), _Type: Shape.SelectList( Id: "Unity", Name: "Unity", Title: T("Amount type")) @@ -32,8 +33,12 @@ namespace Orchard.Workflows.Forms { .Add(new SelectListItem { Value = "Hour", Text = T("Hours").Text }) .Add(new SelectListItem { Value = "Day", Text = T("Days").Text }) .Add(new SelectListItem { Value = "Week", Text = T("Weeks").Text }) - .Add(new SelectListItem { Value = "Month", Text = T("Months").Text }) - ); + .Add(new SelectListItem { Value = "Month", Text = T("Months").Text }), + _Date: Shape.Textbox( + Id: "Date", Name: "Date", + Title: T("Date"), + Description: T("Optional. Starting date/time to calculate difference from. Leave blank to use current date/time."), + Classes: new[] {"text medium tokenized"})); return form; }