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/ModalCalendar/RangeModalCalendar.ascx.cs
using System;
using System.Collections.Generic;

using CMS.Base;
using CMS.ExtendedControls;
using CMS.Helpers;

public partial class CMSAdminControls_ModalCalendar_RangeModalCalendar : CMSCustomCalendarControl
{
    protected override void OnPreRender(EventArgs e)
    {
        base.OnPreRender(e);

        RangeDateTimePicker datePickerObject = PickerControl as RangeDateTimePicker;
        if ((datePickerObject == null) || !Visible)
        {
            return;
        }

        // Register default scripts
        RegisterDefaultScripts(datePickerObject);

        // Register initial range picker scripts
        RegisterPickerInitScripts(datePickerObject);

        // Register custom scripts for control components
        RegisterCustomScripts(datePickerObject);
    }


    private void RegisterPickerInitScripts(RangeDateTimePicker datePickerObject)
    {
        // Init picker settings
        var settings = new HashSet<string>();
        settings.Add(String.Format("showTimePanel:{0}", (datePickerObject.EditTime && !datePickerObject.DisableDaySelect && !datePickerObject.DisableMonthSelect).ToString().ToLowerCSafe()));
        settings.Add(String.Format("stepMonths:{0}", datePickerObject.DisableMonthSelect ? 12 : 1));
        settings.Add(String.Format("disableDaySelect:{0}", datePickerObject.DisableDaySelect.ToString().ToLowerCSafe()));
        settings.Add(String.Format("disableMonthSelect:{0}", datePickerObject.DisableMonthSelect.ToString().ToLowerCSafe()));
        settings.Add(String.Format("changeMonth:{0}", (!datePickerObject.DisableMonthSelect).ToString().ToLowerCSafe()));
        settings.Add("showButtonPanel:false");

        // Get all parameters for picker initialization
        string pickerParams = GetScriptParameters(datePickerObject, settings);

        // Init both calendars
        string calendarInit = String.Format(@"$cmsj(function() {{$cmsj('#{0}').cmsdatepicker({{ {1},defaultTimeValue:{2} }});
$cmsj('#{3}').cmsdatepicker({{ {1},defaultTimeValue:{4} }})}});", dateFrom.ClientID, pickerParams, (datePickerObject.UseDynamicDefaultTime ? 1 : 0), dateTo.ClientID, (datePickerObject.UseDynamicDefaultTime ? 2 : 0));

        ScriptHelper.RegisterClientScriptBlock(Page, GetType(), ClientID + "_RegisterDatePickerFunction", ScriptHelper.GetScript(calendarInit));
    }


    private void RegisterCustomScripts(RangeDateTimePicker datePickerObject)
    {
        // Get client IDs
        string rangeCalendarClientId = rangeCalendar.ClientID;
        string textBoxClientId = datePickerObject.DateTimeTextBox.ClientID;
        string altTextBoxClientId = datePickerObject.AlternateDateTimeTextBox.ClientID;
        string dateFromClientId = dateFrom.ClientID;
        string dateToClientId = dateTo.ClientID;
        string calendarImgClientId = datePickerObject.CalendarImageClientID;

        // Button OK
        btnOK.OnClientClick = String.Format(@"$cmsj('#{0}').val ($cmsj('#{1}').cmsdatepicker ('getFormattedDate'));
$cmsj('#{2}').val ($cmsj('#{3}').cmsdatepicker ('getFormattedDate'));
$cmsj('#{4}').hide(); {5}", textBoxClientId, dateFromClientId, altTextBoxClientId, dateToClientId, rangeCalendarClientId, !datePickerObject.PostbackOnOK ? "return false;" : "");

        if (datePickerObject.DisplayNAButton)
        {
            btnNA.OnClientClick = String.Format("$cmsj('#{0}').hide(); $cmsj('#{1}').val(''); $cmsj('#{2}').val(''); return false;", rangeCalendarClientId, textBoxClientId, altTextBoxClientId);
            btnNA.Visible = true;
        }

        // Icon
        string clickScript = String.Format(@"if( $cmsj('#{0}').is(':hidden')) {{
$cmsj('#{1}').cmsdatepicker('setDate',$cmsj('#{3}').val());
$cmsj('#{2}').cmsdatepicker('setDate',$cmsj('#{4}').val());
var offset = localizeRangeCalendar($cmsj('#{0}'),$cmsj('#{3}'),{5},true);
$cmsj('#{0}').css({{left:offset.left+'px',top:offset.top+'px'}});$cmsj('#{0}').show();}} return false;", rangeCalendarClientId, dateFromClientId, dateToClientId, textBoxClientId, altTextBoxClientId, CultureHelper.IsUICultureRTL().ToString().ToLowerCSafe());

        datePickerObject.DateTimeTextBox.Attributes["OnClick"] = clickScript;
        datePickerObject.AlternateDateTimeTextBox.Attributes["OnClick"] = clickScript;

        // Add image on click
        String script = String.Format("$cmsj(\"#{0}\").click(function() {{ {1} }});", calendarImgClientId, clickScript);
        ScriptHelper.RegisterStartupScript(this, typeof(string), ClientID + "CalendarImageInitScript", ScriptHelper.GetScript(script));

        // Script for hiding calendar when clicked somewhere else
        ltlScript.Text = ScriptHelper.GetScript(String.Format(@"$cmsj(document).mousedown(function(event) {{
var target = $cmsj(event.target);
if ((target.closest('#{0}').length == 0) && (target.parents('#{0}').length == 0)
    && (target.closest('#{1}').length == 0) && (target.closest('#{2}').length == 0) && (target.closest('#{3}').length == 0))
        $cmsj('#{0}').hide();
}});", rangeCalendarClientId, calendarImgClientId, textBoxClientId, altTextBoxClientId));
    }
}