using System; using System.Data; using System.Collections; using System.Drawing; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.HtmlControls; using CMS.GlobalHelper; using CMS.Scheduler; using CMS.SettingsProvider; using CMS.UIControls; using CMS.ExtendedControls; public partial class CMSAdminControls_UI_Selectors_ScheduleInterval : BaseSchedulingControl { #region "Public properties" /// /// Messages placeholder /// public override MessagesPlaceHolder MessagesPlaceHolder { get { return plcMess; } } /// /// Control providing amount of time units /// public override TextBox Quantity { get { return txtEvery; } } /// /// Control providing window of opportunity start hours /// public override TextBox FromHours { get { return txtFromHours; } } /// /// Control providing window of opportunity start minutes /// public override TextBox FromMinutes { get { return txtFromMinutes; } } /// /// Control providing window of opportunity end hours /// public override TextBox ToHours { get { return txtToHours; } } /// /// Control providing window of opportunity end minutes /// public override TextBox ToMinutes { get { return txtToMinutes; } } /// /// Control providing start time /// public override DateTimePicker StartTime { get { return dateTimePicker; } } /// /// Control providing time unit used for scheduling /// public override DropDownList Period { get { return drpPeriod; } } /// /// Control providing allowed weekdays /// public override CheckBoxList WeekDays { get { return chkWeek; } } /// /// Control providing allowed weekend days /// public override CheckBoxList WeekEnd { get { return chkWeekEnd; } } /// /// Control to select date mode for month /// public override RadioButton MonthModeDate { get { return radMonthDate; } } /// /// Control providing day in the month /// public override DropDownList MonthDate { get { return drpMonthDate; } } /// /// Control to select specification mode for month /// public override RadioButton MonthModeSpecification { get { return radMonthSpecification; } } /// /// Control providing order of the desired day in the month /// public override DropDownList MonthOrder { get { return drpMonthOrder; } } /// /// Control providing desired day of week in the month /// public override DropDownList MonthDay { get { return drpMonthDay; } } /// /// If true, start time textbox is displayed /// public bool DisplayStartTime { get { return pnlStartTime.Visible; } set { pnlStartTime.Visible = false; } } #endregion #region "Methods" protected void Page_Load(object sender, EventArgs e) { EnsureChildControls(); if (!RequestHelper.IsPostBack()) { ReloadData(); } } protected override void CreateChildControls() { base.CreateChildControls(); // Control init StartTime.DateTimeTextBox.ForeColor = Color.Black; Quantity.ForeColor = Color.Black; FromHours.ForeColor = Color.Black; FromMinutes.ForeColor = Color.Black; ToHours.ForeColor = Color.Black; ToMinutes.ForeColor = Color.Black; if (!RequestHelper.IsPostBack()) { ControlInit(); ValidatorInit(); } } protected void Page_PreRender(object sender, EventArgs e) { if (!WeekListChecked) { // Initialize week and weekend selectors WeekDays.ClearSelection(); foreach (ListItem li in WeekDays.Items) { li.Selected = true; } WeekEnd.ClearSelection(); foreach (ListItem li in WeekEnd.Items) { li.Selected = true; } } } /// /// Reloads form with values from the schedule interval. /// public void ReloadData() { EnsureChildControls(); TaskInterval ti = TaskInterval; if (ti == null) { ti = new TaskInterval(); ti.Every = 1; ti.Period = SchedulingHelper.PERIOD_DAY; ti.StartTime = DateTime.Now; } // Set period type Period.SelectedValue = ti.Period; OnPeriodChangeInit(); // Start time if (StartTime != null) { StartTime.SelectedDateTime = ti.StartTime; } switch (Period.SelectedValue) { case SchedulingHelper.PERIOD_SECOND: case SchedulingHelper.PERIOD_MINUTE: case SchedulingHelper.PERIOD_HOUR: Quantity.Text = ti.Every.ToString(); FromHours.Text = ti.BetweenStart.TimeOfDay.Hours >= 10 ? ti.BetweenStart.TimeOfDay.Hours.ToString() : "0" + ti.BetweenStart.TimeOfDay.Hours.ToString(); FromMinutes.Text = ti.BetweenStart.TimeOfDay.Minutes >= 10 ? ti.BetweenStart.TimeOfDay.Minutes.ToString() : "0" + ti.BetweenStart.TimeOfDay.Minutes.ToString(); ToHours.Text = ti.BetweenEnd.TimeOfDay.Hours >= 10 ? ti.BetweenEnd.TimeOfDay.Hours.ToString() : "0" + ti.BetweenEnd.TimeOfDay.Hours.ToString(); ToMinutes.Text = ti.BetweenEnd.TimeOfDay.Minutes >= 10 ? ti.BetweenEnd.TimeOfDay.Minutes.ToString() : "0" + ti.BetweenEnd.TimeOfDay.Minutes.ToString(); SetDays(WeekDays, ti.Days); SetDays(WeekEnd, ti.Days); break; case SchedulingHelper.PERIOD_DAY: Quantity.Text = ti.Every.ToString(); SetDays(WeekDays, ti.Days); SetDays(WeekEnd, ti.Days); break; case SchedulingHelper.PERIOD_WEEK: Quantity.Text = ti.Every.ToString(); break; case SchedulingHelper.PERIOD_MONTH: if (string.IsNullOrEmpty(ti.Day)) { MonthDate.SelectedValue = ti.Order.ToLowerCSafe(); MonthModeDate.Checked = true; MonthModeSelectionChanged(true); } else { MonthOrder.SelectedValue = ti.Order.ToLowerCSafe(); MonthModeSpecification.Checked = true; MonthModeSelectionChanged(false); MonthDay.SelectedValue = ti.Day; } break; } WeekListChecked = (TaskInterval != null); } /// /// Initialization of validators. /// protected void ValidatorInit() { string error = GetString("ScheduleInterval.WrongFormat"); string empty = GetString("ScheduleInterval.ErrorEmpty"); // 'Every' panel validators rfvEvery.ErrorMessage = empty; rvEvery.MinimumValue = "0"; rvEvery.MaximumValue = "10000"; rvEvery.ErrorMessage = error; // 'Between' panel validators rfvFromHours.ErrorMessage = empty; rvFromHours.MinimumValue = "0"; rvFromHours.MaximumValue = "23"; rvFromHours.ErrorMessage = error; rfvFromMinutes.ErrorMessage = empty; rvFromMinutes.MinimumValue = "0"; rvFromMinutes.MaximumValue = "59"; rvFromMinutes.ErrorMessage = error; rfvToHours.ErrorMessage = empty; rvToHours.MinimumValue = "0"; rvToHours.MaximumValue = "23"; rvToHours.ErrorMessage = error; rfvToMinutes.ErrorMessage = empty; rvToMinutes.MinimumValue = "0"; rvToMinutes.MaximumValue = "59"; rvToMinutes.ErrorMessage = error; } /// /// Initializes dialog according to selected period. /// protected override void OnPeriodChangeInit() { switch (drpPeriod.SelectedValue) { case SchedulingHelper.PERIOD_SECOND: // Second pnlEvery.Visible = true; pnlBetween.Visible = true; pnlDays.Visible = true; pnlMonth.Visible = false; lblEveryPeriod.Text = GetString("ScheduleInterval.Period.second"); break; case SchedulingHelper.PERIOD_MINUTE: // Minute pnlEvery.Visible = true; pnlBetween.Visible = true; pnlDays.Visible = true; pnlMonth.Visible = false; lblEveryPeriod.Text = GetString("ScheduleInterval.Period.Minute"); break; case SchedulingHelper.PERIOD_HOUR: // Hour pnlEvery.Visible = true; pnlBetween.Visible = true; pnlDays.Visible = true; pnlMonth.Visible = false; lblEveryPeriod.Text = GetString("ScheduleInterval.Period.Hour"); break; case SchedulingHelper.PERIOD_DAY: // Day pnlEvery.Visible = true; pnlBetween.Visible = false; pnlDays.Visible = true; pnlMonth.Visible = false; lblEveryPeriod.Text = GetString("ScheduleInterval.Period.Day"); break; case SchedulingHelper.PERIOD_WEEK: // Week pnlEvery.Visible = true; pnlBetween.Visible = false; pnlDays.Visible = false; pnlMonth.Visible = false; lblEveryPeriod.Text = GetString("ScheduleInterval.Period.Week"); break; case SchedulingHelper.PERIOD_MONTH: // Month pnlEvery.Visible = false; pnlBetween.Visible = false; pnlDays.Visible = false; pnlMonth.Visible = true; break; case SchedulingHelper.PERIOD_ONCE: // Once pnlEvery.Visible = false; pnlBetween.Visible = false; pnlDays.Visible = false; pnlMonth.Visible = false; break; } // Set default values to textboxes and checkboxlists StartTime.SelectedDateTime = DateTime.Now; Quantity.Text = "1"; FromHours.Text = "00"; FromMinutes.Text = "00"; ToHours.Text = "23"; ToMinutes.Text = "59"; MonthDate.SelectedIndex = 0; MonthOrder.SelectedIndex = 0; MonthDay.SelectedIndex = 0; } /// /// On selected index changed. /// protected void DrpPeriod_OnSelectedIndexChanged(object sender, EventArgs e) { OnPeriodChangeInit(); } /// /// On 1st radio button change. /// protected void radMonthDate_CheckedChanged(object sender, EventArgs e) { MonthModeSelectionChanged(true); } /// /// On 2nd radio button change. /// protected void radMonthSpecification_CheckedChanged(object sender, EventArgs e) { MonthModeSelectionChanged(false); } #endregion }