/Tag/Nsurvey16_DNN3_PA/UserControls/FilterOptionControl.ascx.cs
C# | 393 lines | 301 code | 37 blank | 55 comment | 24 complexity | bf716f0d6e795f8f8bd92f688c5fb49e MD5 | raw file
Possible License(s): GPL-2.0
- /**************************************************************************************************
-
- NSurvey - The web survey and form engine
- Copyright (c) 2004, Thomas Zumbrunn. (http://www.nsurvey.org)
-
- Dotnetnuke PA module
- Copyright (c) 2004, Oliver Hine (oliver.hine@gmail.com)
-
- This program is free software; you can redistribute it and/or
- modify it under the terms of the GNU General Public License
- as published by the Free Software Foundation; either version 2
- of the License, or (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-
-
- ************************************************************************************************/
-
- namespace Votations.NSurvey.WebAdmin.UserControls
- {
- using System;
- using System.Web;
- using System.Web.UI;
- using System.Web.UI.WebControls;
- using Votations.NSurvey;
- using Votations.NSurvey.Data;
- using Votations.NSurvey.DataAccess;
- using Votations.NSurvey.BusinessRules;
- using Votations.NSurvey.Enums;
- using Microsoft.VisualBasic;
-
- /// <summary>
- /// Survey data CU methods
- /// </summary>
- public class FilterOptionControl : PageBase
- {
- public event EventHandler OptionChanged;
-
- protected System.Web.UI.WebControls.Label MessageLabel;
- protected System.Web.UI.WebControls.TextBox TextBox1;
- protected System.Web.UI.WebControls.DropDownList DropDownList1;
- protected System.Web.UI.WebControls.Button UpdateFilterButton;
- protected System.Web.UI.WebControls.Button DeleteFilterButton;
- protected System.Web.UI.WebControls.Button CreatefilterButton;
- protected System.Web.UI.WebControls.PlaceHolder EditplaceHolder;
- protected System.Web.UI.WebControls.TextBox FilterNameTextBox;
- protected System.Web.UI.WebControls.DropDownList LogicalOperatorDropDownList;
- protected System.Web.UI.WebControls.Repeater RulesRepeater;
- protected System.Web.UI.WebControls.DropDownList AnswerFilterDropdownlist;
- protected System.Web.UI.WebControls.Label AnswerLabel;
- protected System.Web.UI.WebControls.Label FilterText;
- protected System.Web.UI.WebControls.TextBox TextFilterTextbox;
- protected System.Web.UI.WebControls.DropDownList QuestionFilterDropdownlist;
- protected System.Web.UI.WebControls.Button AddRuleButton;
- protected System.Web.UI.WebControls.Literal FilterNameLabel;
- protected System.Web.UI.WebControls.Literal RuleOperatorLabel;
- protected System.Web.UI.WebControls.Literal NewRuleTitle;
- protected System.Web.UI.WebControls.Literal QuestionLabel;
- protected System.Web.UI.WebControls.Literal FilterRulesTitle;
- protected System.Web.UI.WebControls.Label filtertitle;
-
- /// <summary>
- /// Id of the answer type to edit
- /// if no id is given put the
- /// usercontrol in creation mode
- /// </summary>
- public int FilterId
- {
- get { return (ViewState["FilterId"]==null) ? -1 : int.Parse(ViewState["FilterId"].ToString()); }
- set { ViewState["FilterId"] = value; }
- }
-
- /// <summary>
- /// Id of the survey to which the type belongs
- /// </summary>
- public new int SurveyId
- {
- get { return (ViewState["SurveyID"]==null) ? -1 : int.Parse(ViewState["SurveyID"].ToString()); }
- set { ViewState["SurveyID"] = value; }
- }
-
-
- private void Page_Load(object sender, System.EventArgs e)
- {
- LocalizePage();
-
- MessageLabel.Visible = false;
-
- // Check if any answer type id has been assigned
- if (FilterId == -1)
- {
- SwitchToCreationMode();
- }
- else
- {
- SwitchToEditionMode();
- }
- }
-
-
- private void LocalizePage()
- {
- FilterNameLabel.Text = GetPageResource("FilterNameLabel");
- RuleOperatorLabel.Text = GetPageResource("RuleOperatorLabel");
- if (!Page.IsPostBack)
- {
- LogicalOperatorDropDownList.Items.Add(new ListItem(GetPageResource("AndOperator"),"0"));
- LogicalOperatorDropDownList.Items.Add(new ListItem(GetPageResource("OrOperator"),"1"));
- }
- NewRuleTitle.Text = GetPageResource("NewRuleTitle");
- QuestionLabel.Text = GetPageResource("QuestionLabel");
- AnswerLabel.Text = GetPageResource("AnswerLabel");
- FilterText.Text = GetPageResource("FilterText");
- FilterRulesTitle.Text = GetPageResource("FilterRulesTitle");
- AddRuleButton.Text = GetPageResource("AddRuleButton");
- UpdateFilterButton.Text = GetPageResource("UpdateFilterButton");
- DeleteFilterButton.Text = GetPageResource("DeleteFilterButton");
- CreatefilterButton.Text = GetPageResource("CreatefilterButton");
- }
-
- /// <summary>
- /// Setup the control in creation mode
- /// </summary>
- private void SwitchToCreationMode()
- {
- // Creation mode
- filtertitle.Text = GetPageResource("AddNewFilterTitle");
- CreatefilterButton.Visible = true;
- EditplaceHolder.Visible = false;
- UpdateFilterButton.Visible = false;
- DeleteFilterButton.Visible = false;
- }
-
- /// <summary>
- /// Setup the control in edition mode
- /// </summary>
- private void SwitchToEditionMode()
- {
- filtertitle.Text = GetPageResource("EditFilterTitle");
- CreatefilterButton.Visible = false;
- EditplaceHolder.Visible = true;
- UpdateFilterButton.Visible = true;
- DeleteFilterButton.Visible = true;
- }
-
- /// <summary>
- /// Get the current DB data and fill
- /// the fields with them
- /// </summary>
- public void BindFields()
- {
- FilterData filterData = new Filters().GetFilterById(FilterId);
- FilterNameTextBox.Text = filterData.Filters[0].Description;
- LogicalOperatorDropDownList.SelectedValue = filterData.Filters[0].LogicalOperatorTypeID.ToString();
-
- RulesRepeater.DataSource = new Filters().GetRulesForFilter(FilterId);
- RulesRepeater.DataMember = "FilterRules";
- RulesRepeater.DataBind();
-
- QuestionFilterDropdownlist.DataSource = new Questions().GetAnswerableQuestionList(SurveyId);
- QuestionFilterDropdownlist.DataTextField = "QuestionText";
- QuestionFilterDropdownlist.DataValueField = "QuestionID";
- QuestionFilterDropdownlist.DataBind();
- QuestionFilterDropdownlist.Items.Insert(0, new ListItem(GetPageResource("SelectQuestionMessage"), "-1"));
-
- AddRuleButton.Enabled = false;
- AnswerLabel.Visible = false;
- AnswerFilterDropdownlist.Visible = false;
- TextFilterTextbox.Visible = false;
- FilterText.Visible = false;
- }
-
-
- protected string FormatRule(string questionText, string answerText, string textFilter )
- {
- if (answerText.Length == 0)
- {
- return string.Format(GetPageResource("FilterRuleNoAnswer"),
- Server.HtmlEncode(System.Text.RegularExpressions.Regex.Replace(questionText, "<[^>]*>", " ")));
- }
- else if (textFilter.Length == 0)
- {
- return string.Format(GetPageResource("FilterRuleAnswer"),
- Server.HtmlEncode(System.Text.RegularExpressions.Regex.Replace(questionText, "<[^>]*>", " ")),
- Server.HtmlEncode(System.Text.RegularExpressions.Regex.Replace(answerText, "<[^>]*>", " ")));
- }
- else
- {
- return string.Format(GetPageResource("FilterRuleAnswerWithText"),
- Server.HtmlEncode(System.Text.RegularExpressions.Regex.Replace(questionText, "<[^>]*>", " ")),
- Server.HtmlEncode(System.Text.RegularExpressions.Regex.Replace(answerText, "<[^>]*>", " ")),
- Server.HtmlEncode(System.Text.RegularExpressions.Regex.Replace(textFilter, "<[^>]*>", " ")));
- }
- }
-
- private void QuestionFilterDropdownlist_SelectedIndexChanged(object sender, System.EventArgs e)
- {
- if (QuestionFilterDropdownlist.SelectedValue != "-1")
- {
- AddRuleButton.Enabled = true;
- AnswerLabel.Visible = true;
- AnswerFilterDropdownlist.Visible = true;
- BindAnswerDropDownList();
- }
- else
- {
- AddRuleButton.Enabled = true;
- AnswerLabel.Visible = false;
- AnswerFilterDropdownlist.Items.Clear();
- AnswerFilterDropdownlist.Visible = false;
- TextFilterTextbox.Visible = false;
- TextFilterTextbox.Text = string.Empty;
- FilterText.Visible = false;
- }
- }
-
- /// <summary>
- /// Bind the list and mark field answer
- /// with a negative answer id value
- /// </summary>
- private void BindAnswerDropDownList()
- {
- AnswerData answers = new Answers().GetAnswersList(int.Parse(QuestionFilterDropdownlist.SelectedValue));
- AnswerFilterDropdownlist.Items.Clear();
- AnswerFilterDropdownlist.Items.Add(new ListItem(GetPageResource("AnyAnswerMessage"), "0"));
-
- foreach (AnswerData.AnswersRow answerRow in answers.Answers)
- {
- if ((((AnswerTypeMode)answerRow.TypeMode & AnswerTypeMode.Field) > 0) ||
- (((AnswerTypeMode)answerRow.TypeMode & AnswerTypeMode.Custom) > 0) ||
- (((AnswerTypeMode)answerRow.TypeMode & AnswerTypeMode.DataSource) > 0))
- {
- // Mark field answer with a negative answerid
- AnswerFilterDropdownlist.Items.Add(new ListItem(answerRow.AnswerText + " " +
- GetPageResource("TextEntryInfo"), (-answerRow.AnswerId).ToString()));
- }
- else
- {
- AnswerFilterDropdownlist.Items.Add(new ListItem(answerRow.AnswerText + " " +
- GetPageResource("SelectionInfo"), answerRow.AnswerId.ToString()));
- }
- }
- }
-
- private void AnswerFilterDropdownlist_SelectedIndexChanged(object sender, System.EventArgs e)
- {
- if (int.Parse(AnswerFilterDropdownlist.SelectedValue) < 0)
- {
- TextFilterTextbox.Visible = true;
- FilterText.Visible = true;
- }
- else
- {
- TextFilterTextbox.Text = string.Empty;
- TextFilterTextbox.Visible = false;
- FilterText.Visible = false;
- }
- }
- #region Web Form Designer generated code
-
- private void InitializeComponent()
- {
- this.UpdateFilterButton.Click += new System.EventHandler(this.UpdateFilterButton_Click);
- this.DeleteFilterButton.Click += new System.EventHandler(this.DeleteFilterButton_Click);
- this.CreatefilterButton.Click += new System.EventHandler(this.CreatefilterButton_Click);
- this.QuestionFilterDropdownlist.SelectedIndexChanged += new System.EventHandler(this.QuestionFilterDropdownlist_SelectedIndexChanged);
- this.AnswerFilterDropdownlist.SelectedIndexChanged += new System.EventHandler(this.AnswerFilterDropdownlist_SelectedIndexChanged);
- this.AddRuleButton.Click += new System.EventHandler(this.AddRuleButton_Click);
- this.RulesRepeater.ItemCommand += new System.Web.UI.WebControls.RepeaterCommandEventHandler(this.RulesRepeater_ItemCommand);
- this.Load += new System.EventHandler(this.Page_Load);
-
- }
- override protected void OnInit(EventArgs e)
- {
- //
- // CODEGEN: This call is required by the ASP.NET Web Form Designer.
- //
- InitializeComponent();
- base.OnInit(e);
- }
-
-
-
- #endregion
-
- private void AddRuleButton_Click(object sender, System.EventArgs e)
- {
- FilterRuleData filterRuleData = new FilterRuleData();
- FilterRuleData.FilterRulesRow filterRule = filterRuleData.FilterRules.NewFilterRulesRow();
-
- int questionId = int.Parse(QuestionFilterDropdownlist.SelectedValue),
- answerId = int.Parse(AnswerFilterDropdownlist.SelectedValue);
- if (answerId == 0)
- {
- filterRule.SetAnswerIdNull();
- }
- else if ( answerId < 0)
- {
- filterRule.AnswerId = -answerId;
- }
- else
- {
- filterRule.AnswerId = answerId;
- }
-
- filterRule.QuestionId = questionId;
- if (TextFilterTextbox.Visible)
- {
- filterRule.TextFilter = TextFilterTextbox.Text;
- }
- filterRule.FilterId = FilterId;
- filterRuleData.FilterRules.AddFilterRulesRow(filterRule);
- new Filter().AddRule(filterRuleData);
- MessageLabel.Visible = true;
- MessageLabel.Text = GetPageResource("FilterRuleAddedMessage");
- BindFields();
- }
-
-
- private void RulesRepeater_ItemCommand(object source, System.Web.UI.WebControls.RepeaterCommandEventArgs e)
- {
- new Filter().DeleteRule(int.Parse(e.CommandArgument.ToString()));
- MessageLabel.Visible = true;
- MessageLabel.Text = GetPageResource("FilterRuleDeletedMessage");
- BindFields();
- }
-
- private void DeleteFilterButton_Click(object sender, System.EventArgs e)
- {
- new Filter().DeleteFilter(FilterId);
- MessageLabel.Visible = true;
- MessageLabel.Text = GetPageResource("FilterDeletedMessage");
- this.Visible = false;
- OnOptionChanged();
- }
-
- protected void OnOptionChanged()
- {
- if (OptionChanged != null)
- {
- OptionChanged(this, EventArgs.Empty);
- }
- }
-
- private void UpdateFilterButton_Click(object sender, System.EventArgs e)
- {
- if (FilterNameTextBox.Text.Length == 0)
- {
- MessageLabel.Visible = true;
- MessageLabel.Text = GetPageResource("InvalidFilterDescriptionMessage");
- }
- else
- {
- FilterData filterData = new FilterData();
- FilterData.FiltersRow filterRow = filterData.Filters.NewFiltersRow();
- filterRow.LogicalOperatorTypeID = short.Parse(LogicalOperatorDropDownList.SelectedValue);
- filterRow.Description = FilterNameTextBox.Text;
- filterRow.FilterId = FilterId;
- filterData.Filters.AddFiltersRow(filterRow);
- new Filter().UpdateFilter(filterData);
- MessageLabel.Visible = true;
- MessageLabel.Text = GetPageResource("FilterUpdatedMessage");
- }
- }
-
- private void CreatefilterButton_Click(object sender, System.EventArgs e)
- {
- if (FilterNameTextBox.Text.Length == 0)
- {
- MessageLabel.Visible = true;
- MessageLabel.Text = GetPageResource("InvalidFilterDescriptionMessage");
- }
- else
- {
- FilterData filterData = new FilterData();
- FilterData.FiltersRow filterRow = filterData.Filters.NewFiltersRow();
- filterRow.LogicalOperatorTypeID = short.Parse(LogicalOperatorDropDownList.SelectedValue);
- filterRow.Description = FilterNameTextBox.Text;
- filterRow.SurveyId = SurveyId;
- filterData.Filters.AddFiltersRow(filterRow);
- new Filter().AddFilter(filterData);
- UINavigator.NavigateToFilterEditor(SurveyId, MenuIndex);
- }
- }
- }
- }