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/Newsletters/Controls/TemplateFlatSelector.ascx.cs
using System;
using System.Linq;

using CMS.Helpers;
using CMS.Newsletters;
using CMS.SiteProvider;
using CMS.UIControls;
using CMS.DataEngine;

public partial class CMSModules_Newsletters_Controls_TemplateFlatSelector : CMSAdminControl
{
    #region "Variables"

    private int mNewsletterId = 0;
    private int mSiteId = 0;
    private string mTemplateType = EmailTemplateType.Issue;

    #endregion


    #region "Flat selector properties"

    /// <summary>
    /// Gets or sets the newsletter id. Only templates of this newsletter will be diplayed if set.
    /// </summary>
    public int NewsletterId
    {
        get
        {
            return mNewsletterId;
        }
        set
        {
            mNewsletterId = value;
        }
    }


    /// <summary>
    /// Gets or sets selected item (TemplateID) in flat selector.
    /// </summary>
    public string SelectedItem
    {
        get
        {
            return flatElem.SelectedItem;
        }
        set
        {
            flatElem.SelectedItem = value;
        }
    }


    /// <summary>
    /// Gets or sets the site id. Only templates of this site will be diplayed if set.
    /// It is not required if NewsletterId property is set.
    /// </summary>
    public int SiteId
    {
        get
        {
            return mSiteId;
        }
        set
        {
            mSiteId = value;
        }
    }


    /// <summary>
    /// Indicates if the control should perform the operations.
    /// </summary>
    public override bool StopProcessing
    {
        get
        {
            return base.StopProcessing;
        }
        set
        {
            base.StopProcessing = value;
            flatElem.StopProcessing = value;
            EnableViewState = !value;
        }
    }


    /// <summary>
    /// Gets or sets the template type (available in EmailTemplateType class). Issue templates are displayed if not set.
    /// </summary>
    public string TemplateType
    {
        get
        {
            return mTemplateType;
        }
        set
        {
            switch (value)
            {
                case EmailTemplateType.Issue:
                case EmailTemplateType.Subscription:
                case EmailTemplateType.Unsubscription:
                case EmailTemplateType.DoubleOptIn:
                    mTemplateType = value;
                    break;
            }
        }
    }


    /// <summary>
    /// Returns inner instance of UniFlatSelector control.
    /// </summary>
    public UniFlatSelector UniFlatSelector
    {
        get
        {
            return flatElem;
        }
    }


    /// <summary>
    /// Gets or sets name of javascript function which is used for passing selected item out of selector.
    /// </summary>
    public string SelectFunction
    {
        get
        {
            return flatElem.SelectFunction;
        }
        set
        {
            flatElem.SelectFunction = value;
        }
    }

    #endregion


    #region "Page events"

    protected void Page_Load(object sender, EventArgs e)
    {
        if (StopProcessing)
        {
            return;
        }

        ScriptHelper.RegisterJQuery(Page);

        // Setup flat selector
        flatElem.QueryName = "newsletter.emailtemplate.selectall";
        flatElem.ValueColumn = "TemplateID";
        flatElem.SearchLabelResourceString = "newslettertemplate.templatename";
        flatElem.SearchColumn = "TemplateDisplayName";
        flatElem.SelectedColumns = "TemplateID, TemplateDisplayName, TemplateThumbnailGUID";
        flatElem.PageSize = 15;
        flatElem.OrderBy = "TemplateDisplayName";
        flatElem.NotAvailableImageUrl = GetImageUrl("Objects/Newsletter_EmailTemplate/notavailable.png");
        flatElem.NoRecordsMessage = "newslettertemplate.norecords";
        flatElem.NoRecordsSearchMessage = "newslettertemplate.norecordsfound";

        // Select templates of specified type
        flatElem.WhereCondition = "TemplateType='" + TemplateType + "'";
        if (NewsletterId > 0)
        {
            // Select templates that are in default newsletter configuration, assigned to the newsletter or available to all newsletters on specified site
            flatElem.WhereCondition = SqlHelper.AddWhereCondition(flatElem.WhereCondition,
                String.Format("TemplateID IN (SELECT NewsletterTemplateID FROM Newsletter_Newsletter WHERE NewsletterID={0})" +
                " OR TemplateID IN (SELECT TemplateID FROM Newsletter_EmailTemplateNewsletter WHERE NewsletterID={0})", NewsletterId));
        }
        if (SiteId > 0)
        {
            // Select templates from specified site
            flatElem.WhereCondition = SqlHelper.AddWhereCondition(flatElem.WhereCondition, "TemplateSiteID=" + SiteContext.CurrentSiteID);
        }

        flatElem.OnItemSelected += new UniFlatSelector.ItemSelectedEventHandler(flatElem_OnItemSelected);
    }


    /// <summary>
    /// On PreRender.
    /// </summary>    
    protected override void OnPreRender(EventArgs e)
    {
        base.OnPreRender(e);

        if (StopProcessing)
        {
            return;
        }

        // Description area
        litCategory.Text = ShowInDescriptionArea(SelectedItem);
    }

    #endregion


    #region "Event handling"

    /// <summary>
    /// Updates description after item is selected in flat selector.
    /// </summary>
    protected string flatElem_OnItemSelected(string selectedValue)
    {
        return ShowInDescriptionArea(selectedValue);
    }

    #endregion


    #region "Methods"

    /// <summary>
    /// Reloads data.
    /// </summary>
    public override void ReloadData()
    {
        flatElem.ReloadData();
        pnlUpdate.Update();
    }


    /// <summary>
    /// Add a reload script to the page which will update the page size (items count) according to the window size.
    /// </summary>
    /// <param name="forceResize">Indicates whether to invoke resizing of the page before calculating the items count</param>
    public void RegisterRefreshPageSizeScript(bool forceResize)
    {
        flatElem.RegisterRefreshPageSizeScript(forceResize);
    }


    /// <summary>
    /// Generates HTML text to be used in description area.
    /// </summary>
    ///<param name="selectedValue">Selected item for which generate description</param>
    private string ShowInDescriptionArea(string selectedValue)
    {
        string description = String.Empty;

        if (!String.IsNullOrEmpty(selectedValue))
        {
            int templateId = ValidationHelper.GetInteger(selectedValue, 0);
            var template = EmailTemplateInfoProvider.GetEmailTemplates()
                                                    .WhereEquals("TemplateID", templateId)
                                                    .Columns("TemplateDisplayName", "TemplateSubject")
                                                    .TopN(1)
                                                    .FirstOrDefault();
            if (template != null)
            {
                description = template.TemplateSubject;
            }
        }

        if (!String.IsNullOrEmpty(description))
        {
            return "<div class=\"Description\">" + HTMLHelper.HTMLEncode(description) + "</div>";
        }

        return String.Empty;
    }

    #endregion
}