using System; using CMS.GlobalHelper; using CMS.Polls; using CMS.UIControls; public partial class CMSModules_Polls_Controls_PollEdit : CMSAdminEditControl { #region "Private variables" private int mSiteID = 0; private int mGroupID = 0; #endregion #region "Public variables" /// /// Gets or Sets site ID of the poll. /// public int SiteID { get { return mSiteID; } set { mSiteID = value; PollProperties.SiteID = mSiteID; } } /// /// Gets or sets the group ID for which the poll should be created. /// public int GroupID { get { return mGroupID; } set { mGroupID = value; PollProperties.GroupID = mGroupID; } } /// /// Gets or sets answer edit property. /// public bool AnswerEditSelected { get { return ValidationHelper.GetBoolean(ViewState["answeredit"], false); } set { ViewState["answeredit"] = value; } } #endregion #region "Security handlers" /// /// Polls security - check permission event handler. /// private void PollSecurity_OnCheckPermissions(string permissionType, CMSAdminControl sender) { RaiseOnCheckPermissions(permissionType, sender); } /// /// Answer edit - check permission event handler. /// private void AnswerEdit_OnCheckPermissions(string permissionType, CMSAdminControl sender) { RaiseOnCheckPermissions(permissionType, sender); } /// /// Answer list - check permission event handler. /// private void AnswerList_OnCheckPermissions(string permissionType, CMSAdminControl sender) { RaiseOnCheckPermissions(permissionType, sender); } /// /// Poll properties - check permission event handler. /// 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 += new CheckPermissionsEventHandler(PollSecurity_OnCheckPermissions); AnswerEdit.OnCheckPermissions += new CheckPermissionsEventHandler(AnswerEdit_OnCheckPermissions); AnswerList.OnCheckPermissions += new CheckPermissionsEventHandler(AnswerList_OnCheckPermissions); PollProperties.OnCheckPermissions += new CheckPermissionsEventHandler(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.Tabs = new string[4, 5]; tabMenu.Tabs[0, 0] = GetString("general.general"); tabMenu.Tabs[1, 0] = GetString("Polls_Edit.Answers"); tabMenu.Tabs[2, 0] = GetString("general.security"); tabMenu.Tabs[3, 0] = GetString("general.view"); tabMenu.UsePostback = true; tabMenu.UseClientScript = true; tabMenu.TabControlIdPrefix = ClientID; // BreadCrumbs setup btnBreadCrumbs.ResourceString = "Polls_Answer_Edit.ItemListLink"; btnBreadCrumbs.Click += new EventHandler(btnBreadCrumbs_Click); // Register event handlers btnNewAnswer.Click += new EventHandler(btnNewAnswer_Click); btnResetAnswers.Click += new EventHandler(btnResetAnswers_Click); tabMenu.OnTabClicked += new EventHandler(tabMenu_OnTabClicked); AnswerList.OnEdit += new EventHandler(AnswerList_OnEdit); AnswerEdit.OnSaved += new EventHandler(AnswerEdit_OnSaved); if (!RequestHelper.IsPostBack() && !IsLiveSite) { ReloadData(false); } } /// /// Reloads data in controls. /// /// Forces to reload all data public override void ReloadData(bool forceReload) { base.ReloadData(forceReload); DisplayControls(tabMenu.SelectedTab.ToString(), forceReload); } /// /// Tab menu clicked event handler. /// private void tabMenu_OnTabClicked(object sender, EventArgs e) { DisplayControls(tabMenu.SelectedTab.ToString(), false); } /// /// Displays appropriate controls regarding set properties. /// 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) { // Poll properties case "0": default: PollProperties.Visible = true; PollProperties.ItemID = ItemID; PollProperties.ReloadData(); break; // 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 string currentPollAnswer = GetString("Polls_Answer_Edit.NewItemCaption"); if (AnswerEdit.ItemID > 0) { PollAnswerInfo pollAnswerObj = PollAnswerInfoProvider.GetPollAnswerInfo(AnswerEdit.ItemID); if (pollAnswerObj != null) { currentPollAnswer = GetString("Polls_Answer_Edit.AnswerLabel") + " " + pollAnswerObj.AnswerOrder.ToString(); } } lblAnswer.Text = currentPollAnswer; 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; } } /// /// Answer list edit action event handler. /// 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); } } /// /// Answer Edit OnSave handler. /// 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(); } } /// /// New answer button click. /// private void btnNewAnswer_Click(object sender, EventArgs e) { if (CheckModifyPermission(ItemID)) { AnswerEdit.ItemID = 0; AnswerEdit.PollId = ItemID; DisplayControls("answersedit", false); AnswerEdit.LoadData(); } } /// /// Breadcrumbs click handler. /// private void btnBreadCrumbs_Click(object sender, EventArgs e) { DisplayControls("1", false); } /// /// Reset answers button handler. /// private void btnResetAnswers_Click(object sender, EventArgs e) { if (CheckModifyPermission(ItemID)) { PollAnswerInfoProvider.ResetAnswers(ItemID); AnswerList.ReloadData(); } } /// /// Initializes PollView control. /// /// ID of current Poll 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; } } /// /// Checks modify permission. Returns false if checking failed. /// /// Poll ID 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; } #endregion }