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/Polls/Controls/PollEdit.ascx.cs
using System;
using CMS.Controls.Configuration;
using CMS.ExtendedControls;
using CMS.Helpers;
using CMS.Polls;
using CMS.UIControls;

public partial class CMSModules_Polls_Controls_PollEdit : CMSAdminEditControl
{
    #region "Private variables"

    private int mSiteID;
    private int mGroupID;

    #endregion


    #region "Public variables"

    /// <summary>
    /// Gets or Sets site ID of the poll.
    /// </summary>
    public int SiteID
    {
        get
        {
            return mSiteID;
        }
        set
        {
            mSiteID = value;
            PollProperties.SiteID = mSiteID;
        }
    }


    /// <summary>
    /// Gets or sets the group ID for which the poll should be created.
    /// </summary>
    public int GroupID
    {
        get
        {
            return mGroupID;
        }
        set
        {
            mGroupID = value;
            PollProperties.GroupID = mGroupID;
        }
    }


    /// <summary>
    /// Gets or sets answer edit property.
    /// </summary>
    public bool AnswerEditSelected
    {
        get
        {
            return ValidationHelper.GetBoolean(ViewState["answeredit"], false);
        }
        set
        {
            ViewState["answeredit"] = value;
        }
    }

    #endregion


    #region "Security handlers"

    /// <summary>
    /// Polls security - check permission event handler.
    /// </summary>
    private void PollSecurity_OnCheckPermissions(string permissionType, CMSAdminControl sender)
    {
        RaiseOnCheckPermissions(permissionType, sender);
    }


    /// <summary>
    /// Answer edit - check permission event handler.
    /// </summary>
    private void AnswerEdit_OnCheckPermissions(string permissionType, CMSAdminControl sender)
    {
        RaiseOnCheckPermissions(permissionType, sender);
    }


    /// <summary>
    /// Answer list - check permission event handler.
    /// </summary>
    private void AnswerList_OnCheckPermissions(string permissionType, CMSAdminControl sender)
    {
        RaiseOnCheckPermissions(permissionType, sender);
    }


    /// <summary>
    /// Poll properties - check permission event handler.
    /// </summary>
    private void PollProperties_OnCheckPermissions(string permissionType, CMSAdminControl sender)
    {
        RaiseOnCheckPermissions(permissionType, sender);
    }

    #endregion


    #region "Methods"

    protected void Page_Load(object sender, EventArgs e)
    {
        PollProperties.DisplayMode = DisplayMode;
        PollProperties.IsLiveSite = IsLiveSite;
        AnswerList.IsLiveSite = IsLiveSite;
        AnswerEdit.IsLiveSite = IsLiveSite;
        PollSecurity.IsLiveSite = IsLiveSite;
        PollView.IsLiveSite = IsLiveSite;
        PollView.CheckOpen = false;

        PollSecurity.OnCheckPermissions += PollSecurity_OnCheckPermissions;
        AnswerEdit.OnCheckPermissions += AnswerEdit_OnCheckPermissions;
        AnswerList.OnCheckPermissions += AnswerList_OnCheckPermissions;
        PollProperties.OnCheckPermissions += PollProperties_OnCheckPermissions;

        // Setup buttons
        btnNewAnswer.ResourceString = "Polls_Answer_List.NewItemCaption";
        imgNewAnswer.AlternateText = GetString("Polls_Answer_List.NewItemCaption");
        imgNewAnswer.ImageUrl = GetImageUrl("Objects/Polls_PollAnswer/add.png");
        btnResetAnswers.ResourceString = "Polls_Answer_List.ResetButton";
        btnResetAnswers.OnClientClick = "return confirm(" + ScriptHelper.GetString(GetString("Polls_Answer_List.ResetConfirmation")) + ");";
        imgResetAnswers.ImageUrl = GetImageUrl("CMSModules/CMS_Polls/resetanswers.png");
        imgResetAnswers.AlternateText = GetString("Polls_Answer_List.ResetButton");

        // Menu initialization
        tabMenu.UrlTarget = "_self";
        tabMenu.AddTab(new TabItem
        {
            Text = GetString("general.general"),
            RedirectUrl = "#"
        });
        tabMenu.AddTab(new TabItem
        {
            Text = GetString("Polls_Edit.Answers"),
            RedirectUrl = "#"
        });
        tabMenu.AddTab(new TabItem
        {
            Text = GetString("general.security"),
            RedirectUrl = "#"
        });
        tabMenu.AddTab(new TabItem
        {
            Text = GetString("general.view"),
            RedirectUrl = "#"
        });

        tabMenu.UsePostback = true;
        tabMenu.UseClientScript = true;
        tabMenu.RenderLinks = true;
        tabMenu.TabControlIdPrefix = ClientID;

        // BreadCrumbs back link handler
        lnkBackHidden.Click += lnkBackHidden_Click;

        // Register event handlers
        btnNewAnswer.Click += btnNewAnswer_Click;
        btnResetAnswers.Click += btnResetAnswers_Click;
        tabMenu.OnTabClicked += tabMenu_OnTabClicked;
        AnswerList.OnEdit += AnswerList_OnEdit;
        AnswerEdit.OnSaved += AnswerEdit_OnSaved;

        if (!RequestHelper.IsPostBack() && !IsLiveSite)
        {
            ReloadData(false);
        }
    }


    /// <summary>
    /// Reloads data in controls.
    /// </summary>
    /// <param name="forceReload">Forces to reload all data</param>
    public override void ReloadData(bool forceReload)
    {
        base.ReloadData(forceReload);
        DisplayControls(tabMenu.SelectedTab.ToString(), forceReload);
    }


    /// <summary>
    /// Tab menu clicked event handler.
    /// </summary>
    private void tabMenu_OnTabClicked(object sender, EventArgs e)
    {
        DisplayControls(tabMenu.SelectedTab.ToString(), false);
    }


    /// <summary>
    /// Displays appropriate controls regarding set properties.
    /// </summary>
    private void DisplayControls(string selectedPage, bool forceReload)
    {
        PollProperties.Visible = false;
        AnswerList.Visible = false;
        PollSecurity.Visible = false;
        PollView.Visible = false;
        PollView.StopProcessing = true;
        headerLinks.Visible = false;
        pnlPollsBreadcrumbs.Visible = false;
        pnlPollsLinks.Visible = false;
        AnswerEdit.Visible = false;
        btnResetAnswers.Visible = true;
        imgResetAnswers.Visible = true;

        if (forceReload)
        {
            selectedPage = "0";
            tabMenu.SelectedTab = 0;
        }

        // Display appropriate tab
        switch (selectedPage)
        {
            // Answer list
            case "1":
                AnswerList.Visible = true;
                AnswerList.PollId = ItemID;
                AnswerList.ReloadData(true);
                headerLinks.Visible = true;
                pnlPollsLinks.Visible = true;
                break;

            // Answer edit
            case "answersedit":
                headerLinks.Visible = true;
                pnlPollsBreadcrumbs.Visible = true;
                pnlPollsLinks.Visible = true;
                AnswerEdit.Visible = true;
                AnswerEdit.PollId = ItemID;
                AnswerEdit.ReloadData();
                btnResetAnswers.Visible = false;
                imgResetAnswers.Visible = false;
                AnswerEditSelected = true;

                // Initialize breadcrumbs
                InitializeBreadcrumbs();
                break;

            // Poll security
            case "2":
                PollSecurity.Visible = true;
                PollSecurity.ItemID = ItemID;
                PollSecurity.ReloadData();
                break;

            // Poll view
            case "3":
                PollView.Visible = true;
                InitPollView(ItemID);
                PollView.StopProcessing = false;
                PollView.ReloadData(false);
                break;

            // Poll properties
            default:
                PollProperties.Visible = true;
                PollProperties.ItemID = ItemID;

                PollProperties.ReloadData();
                break;
        }
    }


    /// <summary>
    /// Answer list edit action event handler.
    /// </summary>
    private void AnswerList_OnEdit(object sender, EventArgs e)
    {
        // Handle events from visible controls only
        if (AnswerList.Visible)
        {
            AnswerEdit.ItemID = AnswerList.SelectedItemID;
            AnswerEdit.PollId = ItemID;
            DisplayControls("answersedit", false);
        }
    }


    /// <summary>
    /// Answer Edit OnSave handler.
    /// </summary>
    private void AnswerEdit_OnSaved(object sender, EventArgs e)
    {
        // Handle events from visible controls only
        if (AnswerEdit.Visible)
        {
            AnswerEdit.PollId = ItemID;
            DisplayControls("answersedit", false);
            AnswerEdit.LoadData();
        }
    }


    /// <summary>
    /// New answer button click.
    /// </summary>
    private void btnNewAnswer_Click(object sender, EventArgs e)
    {
        if (CheckModifyPermission(ItemID))
        {
            AnswerEdit.ItemID = 0;
            AnswerEdit.PollId = ItemID;
            DisplayControls("answersedit", false);
            AnswerEdit.LoadData();
        }
    }


    /// <summary>
    /// Breadcrumbs click handler.
    /// </summary>
    private void lnkBackHidden_Click(object sender, EventArgs e)
    {
        DisplayControls("1", false);
    }


    /// <summary>
    /// Reset answers button handler.
    /// </summary>
    private void btnResetAnswers_Click(object sender, EventArgs e)
    {
        if (CheckModifyPermission(ItemID))
        {
            PollAnswerInfoProvider.ResetAnswers(ItemID);
            AnswerList.ReloadData();
        }
    }


    /// <summary>
    /// Initializes PollView control.
    /// </summary>
    /// <param name="pollId">ID of current Poll</param>
    protected void InitPollView(int pollId)
    {
        PollInfo pi = PollInfoProvider.GetPollInfo(pollId);

        if (pi != null)
        {
            PollView.PollCodeName = pi.PollCodeName;
            PollView.PollSiteID = pi.PollSiteID;
            PollView.PollGroupID = pi.PollGroupID;
            PollView.CountType = CountTypeEnum.Percentage;
            PollView.ShowGraph = true;
            PollView.ShowResultsAfterVote = true;
            PollView.CheckPermissions = false;
            PollView.CheckVoted = false;
            PollView.HideWhenNotAuthorized = false;
            PollView.CheckOpen = false;
            PollView.Visible = false;
        }
    }


    /// <summary>
    /// Checks modify permission. Returns false if checking failed.
    /// </summary>
    /// <param name="pollId">Poll ID</param>
    private bool CheckModifyPermission(int pollId)
    {
        PollInfo pi = PollInfoProvider.GetPollInfo(pollId);
        if (pi != null)
        {
            return (pi.PollSiteID > 0) && CheckPermissions("cms.polls", PERMISSION_MODIFY) ||
                   (pi.PollSiteID <= 0) && CheckPermissions("cms.polls", PERMISSION_GLOBALMODIFY);
        }
        return false;
    }


    /// <summary>
    /// Initializes breadcrumbs items.
    /// </summary>
    private void InitializeBreadcrumbs()
    {
        ucBreadcrumbs.Items.Clear();

        ucBreadcrumbs.AddBreadcrumb(new BreadcrumbItem {
            Text = GetString("Polls_Answer_Edit.ItemListLink"),
            OnClientClick = ControlsHelper.GetPostBackEventReference(lnkBackHidden) + "; return false;"
        });

        PollAnswerInfo pollAnswerObj = (AnswerEdit.ItemID > 0) ? PollAnswerInfoProvider.GetPollAnswerInfo(AnswerEdit.ItemID) : null;

        ucBreadcrumbs.AddBreadcrumb(new BreadcrumbItem { 
            Text = (pollAnswerObj == null) ? GetString("Polls_Answer_Edit.NewItemCaption") : GetString("Polls_Answer_Edit.AnswerLabel") + " " + pollAnswerObj.AnswerOrder.ToString(),
        });
    }

    #endregion
}