HEX
Server: Microsoft-IIS/8.5
System: Windows NT YDAWBH120 6.3 build 9600 (Windows Server 2012 R2 Standard Edition) AMD64
User: tentjecom_web (0)
PHP: 7.4.14
Disabled: NONE
Upload Files
File: D:/HostingSpaces/RMourik/bassol.nl/CMS/CMSAdminControls/Calendar/Calendar.aspx.cs
using System;
using System.Threading;
using System.Web;
using System.Web.UI.WebControls;
using CMS.DocumentEngine;
using CMS.Helpers;
using CMS.Globalization;
using CMS.Membership;
using CMS.UIControls;
using CMS.ExtendedControls;

using CultureInfo = System.Globalization.CultureInfo;
using TimeZoneInfo = CMS.Globalization.TimeZoneInfo;

public partial class CMSAdminControls_Calendar_Calendar : CMSPage
{
    #region "Variable"

    protected string pagetitle = null;
    protected string mCulture = "";

    protected bool editTime = false;
    protected string selDate = null;
    protected bool allowEmpty = false;
    protected string controlId = null;

    #endregion


    /// <summary>
    /// Constructor.
    /// </summary>
    public CMSAdminControls_Calendar_Calendar()
    {
        mCulture = Page.UICulture;

        // Get UI culture parameter from querystring
        string uiCulture = QueryHelper.GetText("UILang", "");
        if (uiCulture != "")
        {
            // If exists set this culture
            UICulture = uiCulture;
            mCulture = uiCulture;
        }
        else
        {
            if (DocumentContext.CurrentDocument != null)
            {
                // If this parameter doesn't exist, set document culture
                mCulture = DocumentContext.CurrentDocument.DocumentCulture;
            }
            else
            {
                // Or system UI culture
                mCulture = CultureInfo.CurrentUICulture.IetfLanguageTag;
            }
        }

        // Set culture to current thread
        Thread.CurrentThread.CurrentCulture = CultureHelper.GetCultureInfo(mCulture);
        Thread.CurrentThread.CurrentUICulture = CultureHelper.GetCultureInfo(mCulture);
    }


    protected void Page_Load(Object sender, EventArgs e)
    {
        // Get parameters
        selDate = QueryHelper.GetString("selDate", "");
        allowEmpty = QueryHelper.GetBoolean("allowempty", false);
        editTime = QueryHelper.GetBoolean("editTime", false);
        controlId = QueryHelper.GetText("controlid", "");

        SetBrowserClass();

        ScriptHelper.RegisterTooltip(Page);

        // Disable caching
        Response.Cache.SetCacheability(HttpCacheability.NoCache);

        pagetitle = GetString("Calendar.Title");

        // Fill in the dropdown values
        if (drpHours.Items.Count == 0)
        {
            FillNumbers(drpHours, 0, 23);
        }
        if (drpMinutes.Items.Count == 0)
        {
            FillNumbers(drpMinutes, 0, 59);
        }
        if (drpSeconds.Items.Count == 0)
        {
            FillNumbers(drpSeconds, 0, 59);
        }

        // Fill in the month selector
        if (drpMonth.Items.Count == 0)
        {
            FillMonths(drpMonth, mCulture);
        }

        // Setup the buttons
        btnCancel.Text = GetString("general.cancel");
        btnCancel.Attributes.Add("onclick", "return CloseDialog();");

        if (editTime)
        {
            btnNow.Text = GetString("Calendar.Now");
        }
        else
        {
            btnNow.Text = GetString("Calendar.Today");
        }

        btnOk.Text = GetString("general.ok");
        btnNA.Text = GetString("general.na");
        btnNA.Attributes.Add("onclick", "CloseWindow(" + ScriptHelper.GetString(controlId) + ", ''); return false;");

        if (!RequestHelper.IsPostBack())
        {
            DateTime now = TimeZoneHelper.GetUserDateTime(MembershipContext.AuthenticatedUser);

            // Selected date
            if (selDate == "")
            {
                SetTime(now, true);
            }
            else
            {
                SetTime(ValidationHelper.GetDateTime(selDate, now), true);
            }

            // Allow empty ?
            if (!allowEmpty)
            {
                btnNA.Visible = false;
            }
            else
            {
                btnNA.Visible = true;
            }

            // Edit time ?
            if (editTime)
            {
                pnlTime.Visible = true;
            }
            else
            {
                pnlTime.Visible = false;
            }
        }

        // Display time zone in form 'GMT+1:00'
        int timeZoneId = QueryHelper.GetInteger("timezoneid", 0);
        if (timeZoneId > 0)
        {
            TimeZoneInfo tzi = TimeZoneInfoProvider.GetTimeZoneInfo(timeZoneId);
            if (tzi != null)
            {
                lblGMTShift.Visible = true;
                lblGMTShift.Text = TimeZoneHelper.GetUTCStringOffset(tzi);
                ScriptHelper.AppendTooltip(lblGMTShift, TimeZoneHelper.GetUTCLongStringOffset(tzi), "help");
            }
        }

        // Next and previous month images
        calDate.NextMonthText = "<img src=\"" + GetImageUrl("Design/Controls/Calendar/next.png") + "\" />";
        calDate.PrevMonthText = "<img src=\"" + GetImageUrl("Design/Controls/Calendar/previous.png") + "\" />";

        RegisterModalPageScripts();
        RegisterEscScript();
    }


    /// <summary>
    /// Fills the CMSDropDownList with the numbers.
    /// </summary>
    /// <param name="drp">CMSDropDownList to fill</param>
    /// <param name="fromnumber">Starting number</param>
    /// <param name="tonumber">Edning number</param>
    private void FillNumbers(CMSDropDownList drp, int fromNumber, int toNumber)
    {
        FillNumbers(drp, fromNumber, toNumber, fromNumber);
    }


    /// <summary>
    /// Fills the CMSDropDownList with the numbers. Text and value of CMSDropDownList are
    /// filled separately.
    /// </summary>
    /// <param name="drp">CMSDropDownList to fill</param>
    /// <param name="fromnumber">Starting number (text)</param>
    /// <param name="tonumber">Ending number (text)</param>
    /// <param name="valFromNumber">Starting number (value)</param>
    private void FillNumbers(CMSDropDownList drp, int fromnumber, int tonumber, int valFromNumber)
    {
        drp.Items.Clear();

        // Get length of number
        int max = tonumber.ToString().Length;
        for (int i = fromnumber; i <= tonumber; i++)
        {
            // Format string number with nulls
            string item = i.ToString().PadLeft(max, '0');

            // Add this number to dropdown list
            drp.Items.Add(new ListItem(item, valFromNumber.ToString()));
            valFromNumber++;
        }
    }


    /// <summary>
    /// Fills the CMSDropDownList with the months values in corect culture format.
    /// </summary>
    /// <param name="drp">CMSDropDownList to fill</param>
    /// <param name="culture">Culture</param>
    private void FillMonths(CMSDropDownList drp, string culture)
    {
        drp.Items.Clear();

        // Get DateTime information
        DateTime dt = DateTimeHelper.GetYearStart(DateTime.Now);
        IFormatProvider ifp = CultureHelper.GetCultureInfo(mCulture);

        string item = null;

        for (int i = 1; i <= 12; i++)
        {
            item = i.ToString();
            if (i < 10)
            {
                item = "0" + item;
            }

            // Fill dropdown list
            drp.Items.Add(new ListItem(item, dt.ToString("MM", ifp)));
            dt = dt.AddMonths(1);
        }
    }


    /// <summary>
    /// Sets the calendar time to the given time.
    /// </summary>
    /// <param name="time">Time to set</param>
    private void SetTime(DateTime time, bool selectCalendar)
    {
        if (selectCalendar)
        {
            calDate.VisibleDate = time.Date;
            calDate.SelectedDate = time.Date;
        }

        // Get culture specific year
        string cultureYear = time.ToString("yyyy", CultureHelper.GetCultureInfo(mCulture));
        int cultureYearInt = ValidationHelper.GetInteger(cultureYear, time.Year);

        FillNumbers(drpYear, cultureYearInt - 5, cultureYearInt + 5, time.Year - 5);

        // Set the new time
        drpHours.SelectedValue = time.Hour.ToString();
        drpMinutes.SelectedValue = time.Minute.ToString();
        drpSeconds.SelectedValue = time.Second.ToString();
        drpYear.SelectedValue = time.Year.ToString();
        drpMonth.SelectedValue = time.ToString("MM", CultureHelper.GetCultureInfo(mCulture));
    }


    protected void btnNow_Click(Object sender, EventArgs e)
    {
        SetTime(TimeZoneHelper.GetUserDateTime(MembershipContext.AuthenticatedUser), true);
        //this.ltlScript.Text = ScriptHelper.GetScript("CloseWindow('" + Request.QueryString["controlid"] + "', '" + DateTime.Now.ToString() + "');");
    }


    /// <summary>
    /// Gets selected time from calendar
    /// </summary>    
    protected DateTime GetCurrentTime()
    {
        DateTime selTime = DateTime.MinValue;
        selTime = calDate.SelectedDate.Date;
        selTime = selTime.AddHours(drpHours.SelectedIndex);
        selTime = selTime.AddMinutes(drpMinutes.SelectedIndex);
        selTime = selTime.AddSeconds(drpSeconds.SelectedIndex);
        return selTime;
    }


    protected void btnOK_Click(Object sender, EventArgs e)
    {
        DateTime selTime = GetCurrentTime();

        // Add 'Close window' script
        if (editTime)
        {
            ltlScript.Text = ScriptHelper.GetScript("CloseWindow(" + ScriptHelper.GetString(controlId) + ", '" + selTime.ToString("d", CultureHelper.GetCultureInfo(mCulture)) + selTime.ToString(" HH:mm:ss") + "');");
        }
        else
        {
            ltlScript.Text = ScriptHelper.GetScript("CloseWindow(" + ScriptHelper.GetString(controlId) + ", '" + selTime.ToString("d", CultureHelper.GetCultureInfo(mCulture)) + "');");
        }
    }


    protected void calDate_SelectionChanged(object sender, EventArgs e)
    {
        SetTime(GetCurrentTime(), false);
    }


    protected void drpYear_SelectedIndexChanged(object sender, EventArgs e)
    {
        try
        {
            // Change DateTime to the new value
            DateTime curTime = GetCurrentTime();
            DateTime newTime = new DateTime(Convert.ToInt32(drpYear.SelectedValue), curTime.Month, curTime.Day, curTime.Hour, curTime.Minute, curTime.Second);
            SetTime(newTime, true);
        }
        catch
        {
        }
    }


    protected void drpMonth_SelectedIndexChanged(object sender, EventArgs e)
    {
        try
        {
            // Change DateTime to the new value
            DateTime curTime = GetCurrentTime();
            DateTime newTime = new DateTime(curTime.Year, Convert.ToInt32(drpMonth.SelectedValue), curTime.Day, curTime.Hour, curTime.Minute, curTime.Second);
            SetTime(newTime, true);
        }
        catch
        {
        }
    }
}