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/CMSModules/ImportExport/Controls/ExportConfiguration.ascx.cs
using System;
using System.Data;
using System.Text;
using System.Web.UI.WebControls;

using CMS.CMSImportExport;
using CMS.DataEngine;
using CMS.FormEngine;
using CMS.Helpers;
using CMS.IO;
using CMS.Membership;
using CMS.Base;
using CMS.UIControls;

public partial class CMSModules_ImportExport_Controls_ExportConfiguration : CMSUserControl
{
    #region "Variables"

    private SiteExportSettings mSettings = null;
    private bool mExportHistory = false;

    #endregion


    #region "Properties"

    /// <summary>
    /// Export settings.
    /// </summary>
    public SiteExportSettings Settings
    {
        get
        {
            return mSettings;
        }
        set
        {
            mSettings = value;
        }
    }


    /// <summary>
    /// Site ID.
    /// </summary>
    public int SiteId
    {
        get
        {
            return ValidationHelper.GetInteger(ViewState["SiteID"], 0);
        }
        set
        {
            ViewState["SiteID"] = value;
        }
    }


    /// <summary>
    /// Export history.
    /// </summary>
    public bool ExportHistory
    {
        get
        {
            return mExportHistory; // ValidationHelper.GetBoolean(ViewState["ExportHistory"], false);
        }
        set
        {
            mExportHistory = value; //ViewState["ExportHistory"] = value;
        }
    }

    #endregion


    #region "Page events"

    protected void Page_Load(object sender, EventArgs e)
    {
        if (!StopProcessing)
        {
            if (!RequestHelper.IsCallback())
            {
                siteSelector.UniSelector.OnSelectionChanged += UniSelector_OnSelectionChanged;

                radAll.Text = GetString("ExportConfiguration.All");
                radDate.Text = GetString("ExportConfiguration.Date");
                radExport.Text = GetString("ExportConfiguration.Export");
                radNone.Text = GetString("ExportConfiguration.None");

                // Client script for setting controls
                StringBuilder script = new StringBuilder();
                script.AppendLine("function SetupControls()");
                script.AppendLine("{");
                script.AppendLine(" var listBoxElem = document.getElementById('" + lstExports.ClientID + "');");
                script.AppendLine(" var exportRadElem = document.getElementById('" + radExport.ClientID + "');");
                script.AppendLine(" var dateRadElem = document.getElementById('" + radDate.ClientID + "');");
                script.AppendLine(" if((exportRadElem != null) && (listBoxElem != null))");
                script.AppendLine(" {");
                script.AppendLine("     listBoxElem.disabled = exportRadElem.checked ? '' : 'disabled';");
                script.AppendLine(" }");
                script.AppendLine(" if(dateRadElem != null)");
                script.AppendLine(" {");
                script.AppendLine("     SetEnabled_" + dtDate.ClientID + "(dateRadElem.checked);");
                script.AppendLine(" }");
                script.AppendLine("}");

                ScriptHelper.RegisterClientScriptBlock(Page, typeof(string), "setupHistory", ScriptHelper.GetScript(script.ToString()));
                ScriptHelper.RegisterStartupScript(Page, typeof(string), "setupControlsOnLoad", ScriptHelper.GetScript("SetupControls();"));

                radAll.Attributes.Add("onclick", "SetupControls(this);");
                radDate.Attributes.Add("onclick", "SetupControls(this);");
                radExport.Attributes.Add("onclick", "SetupControls(this);");
                radNone.Attributes.Add("onclick", "SetupControls(this);");

                // Add additional option for global objects export
                plcNone.Visible = (SiteId == 0);

                // Load sites list
                LoadSites();

                // Load export histories list
                if (!RequestHelper.IsPostBack())
                {
                    LoadExportHistories();

                    // Select default option
                    SetDefaultOption();
                }
            }
        }
    }


    protected override void OnPreRender(EventArgs e)
    {
        base.OnPreRender(e);

        lblError.Visible = (lblError.Text != string.Empty);
    }

    #endregion


    #region "Control events"

    /// <summary>
    /// Handles site selection change event.
    /// </summary>
    protected void UniSelector_OnSelectionChanged(object sender, EventArgs e)
    {
        LoadExportHistories();

        // Display additional option for global obejcts export
        SiteId = ValidationHelper.GetInteger(siteSelector.Value, 0);
        plcNone.Visible = (SiteId == 0);

        // Select default option
        SetDefaultOption();
    }

    #endregion


    #region "Methods"

    /// <summary>
    /// Loads export histories list.
    /// </summary> 
    private void LoadExportHistories()
    {
        lstExports.Items.Clear();
        var where = new WhereCondition();

        int siteId = ValidationHelper.GetInteger(siteSelector.Value, 0);
        if (siteId != 0)
        {
            where.Where("ExportSiteID", QueryOperator.Equals ,siteSelector.Value);
        }
        else
        {
            where.WhereNull("ExportSiteID");
        }

        var histories = ExportHistoryInfoProvider.GetExportHistories()
            .Where(where)
            .OrderByDescending("ExportDateTime")
            .Columns(new [] { "ExportDateTime", "ExportFileName", "ExportID" });

        if (!DataHelper.DataSourceIsEmpty(histories))
        {
            radExport.Enabled = true;
            foreach (DataRow dr in histories.Tables[0].Rows)
            {
                lstExports.Items.Add(new ListItem(ValidationHelper.GetString(dr["ExportDateTime"], "yyyy-mm-ddd") + " - " + ValidationHelper.GetString(dr["ExportFileName"], "filename"), ValidationHelper.GetString(dr["ExportID"], null)));
            }
        }
    }


    private void SetDefaultOption()
    {
        if (SiteId == 0)
        {
            radNone.Checked = true;
            radAll.Checked = false;
        }
        else
        {
            radNone.Checked = false;
            radAll.Checked = true;
        }
    }


    /// <summary>
    /// Loads sites list.
    /// </summary> 
    private void LoadSites()
    {
        // Set site selector
        siteSelector.DropDownSingleSelect.AutoPostBack = true;
        siteSelector.AllowAll = false;
        siteSelector.UniSelector.SpecialFields.Add(new SpecialField { Text = GetString("ExportConfiguration.NoSite"), Value = "0" });

        if (!RequestHelper.IsPostBack())
        {
            if (SiteId != 0)
            {
                siteSelector.Value = SiteId;
                siteSelector.Enabled = false;
            }
            else
            {
                siteSelector.Value = "0";
            }
        }
    }


    public void InitControl()
    {
        if (String.IsNullOrEmpty(txtFileName.Text))
        {
            txtFileName.Text = ImportExportHelper.GenerateExportFileName("export");
        }
    }


    public bool ApplySettings()
    {
        txtFileName.Text = txtFileName.Text.Trim();

        // Validate the file name 
        string result = ImportExportHelper.ValidateExportFileName(Settings, txtFileName.Text);

        if (string.IsNullOrEmpty(result))
        {
            if (Path.GetExtension(txtFileName.Text).ToLowerCSafe() != ".zip")
            {
                txtFileName.Text = txtFileName.Text.TrimEnd('.') + ".zip";
            }

            // Set current user information
            Settings.CurrentUser = MembershipContext.AuthenticatedUser;

            Settings.SiteId = SiteId;
            Settings.DefaultProcessObjectType = ProcessObjectEnum.Selected;

            // Additional setings
            Settings.SetSettings(ImportExportHelper.SETTINGS_BIZFORM_DATA, true);
            Settings.SetSettings(ImportExportHelper.SETTINGS_CUSTOMTABLE_DATA, true);
            Settings.SetSettings(ImportExportHelper.SETTINGS_FORUM_POSTS, true);
            Settings.SetSettings(ImportExportHelper.SETTINGS_BOARD_MESSAGES, true);
            Settings.SetSettings(ImportExportHelper.SETTINGS_GLOBAL_FOLDERS, true);
            Settings.SetSettings(ImportExportHelper.SETTINGS_SITE_FOLDERS, true);
            Settings.SetSettings(ImportExportHelper.SETTINGS_COPY_ASPX_TEMPLATES_FOLDER, true);

            ExportTypeEnum exportType = (SiteId != 0) ? ExportTypeEnum.Site : ExportTypeEnum.All;

            // Init default values
            if (radNone.Checked)
            {
                // None objects
                Settings.TimeStamp = DateTimeHelper.ZERO_TIME;
                Settings.ExportType = ExportTypeEnum.None;
            }
            else if (radAll.Checked)
            {
                // All objects
                Settings.TimeStamp = DateTimeHelper.ZERO_TIME;
                Settings.ExportType = exportType;
            }
            else if (radDate.Checked)
            {
                if (dtDate.SelectedDateTime != DateTimeHelper.ZERO_TIME)
                {
                    if (!dtDate.IsValidRange())
                    {
                        lblError.Text = GetString("general.errorinvaliddatetimerange");
                        return false;
                    }
                    else
                    {
                        // From specified date
                        Settings.TimeStamp = dtDate.SelectedDateTime;
                        Settings.ExportType = exportType;
                    }
                }
                else
                {
                    lblError.Text = GetString("ExportSite.SelectDateTime");
                    return false;
                }
            }
            else
            {
                // From previous export
                int historyId = ValidationHelper.GetInteger(lstExports.SelectedValue, 0);
                if (historyId == 0)
                {
                    lblError.Text = GetString("ExportSite.SelectExportHistory");
                    return false;
                }
                else
                {
                    ExportHistoryInfo history = ExportHistoryInfoProvider.GetExportHistoryInfo(historyId);
                    if (history != null)
                    {
                        // Load history settings
                        SiteExportSettings settings = new SiteExportSettings(MembershipContext.AuthenticatedUser);
                        settings.SetInfo(ImportExportHelper.INFO_HISTORY_NAME, history.ExportFileName);
                        settings.SetInfo(ImportExportHelper.INFO_HISTORY_DATE, history.ExportDateTime);
                        settings.LoadFromXML(history.ExportSettings);
                        settings.TargetPath = Settings.TargetPath;
                        settings.PersistentSettingsKey = Settings.PersistentSettingsKey;
                        Settings = settings;
                        ExportHistory = true;
                    }
                    else
                    {
                        lblError.Text = GetString("ExportSite.ErrorLoadingExportHistory");
                        return false;
                    }
                }
            }

            // Keep current file name
            Settings.TargetFileName = txtFileName.Text;
        }
        else
        {
            lblError.Text = result;
            return false;
        }

        return true;
    }

    #endregion
}