/// <summary>
        /// Set the forms to match DB question options
        /// </summary>
        private void SetQuestionOptions()
        {
            // Retrieve the original question values
            _question = new Questions().GetQuestionById(_questionId, null);
            QuestionData.QuestionsRow questionRow = _question.Questions[0];

            // Can the question have answers
            if (!(((QuestionTypeMode)questionRow.TypeMode & QuestionTypeMode.Answerable) > 0) ||
                (((QuestionTypeMode)questionRow.TypeMode & QuestionTypeMode.ChildQuestion) > 0)
                )
            {
                AnswersDataGrid.Visible = false;
                AddNewAnswerButton.Visible = false;
                AnswerOption.Visible = false;
                MessageLabel.Visible = true;
                ((PageBase)Page).ShowErrorMessage(MessageLabel, ((PageBase)Page).GetPageResource("SingleQuestionCannotBeEditedMessage"));
            }
            else
            {
                MultipleSelection = ((QuestionTypeMode)questionRow.TypeMode & QuestionTypeMode.MultipleAnswers) > 0;
                _ratingEnabled = questionRow.RatingEnabled;
                _scoreEnabled = _question.Questions[0].IsSurveyIdNull() ? true :
                        new Surveys().IsSurveyScored(SurveyId);

                AnswersDataGrid.Columns[4].Visible = _ratingEnabled;
                AnswersDataGrid.Columns[5].Visible = _scoreEnabled;
            }
        }
        public string FilterName(QuestionData.QuestionsRow q, AnswerData.AnswersRow a, FilterData.FiltersRow f)
        {
            const string splitChar = "|";

            return(f.FilterId == 0
                ? FilterName(q, a, splitChar)
                : FilterName(q, a, f, splitChar));
        }
Esempio n. 3
0
        /// <summary>
        /// Get a web control instance of the question row
        /// and adds it with its options to the table
        /// </summary>
        private void AddQuestionWebControl(Table questionTable, QuestionData.QuestionsRow question)
        {
            QuestionItem questionWebControl = QuestionItemFactory.Create(question, LanguagesDropdownlist.SelectedValue,
                                                                         this.UniqueID, 0, null, true, true);

            // Set question's style
            // and bind the data
            Style questionStyle = new Style();

            questionStyle.CssClass = "surveyQuestion";

            Style answerStyle = new Style();

            answerStyle.CssClass = "surveyAnswer";

            //Style markStyle = new Style();
            //markStyle.CssClass = "icon-warning-sign";

            if (questionWebControl is ActiveQuestion)
            {
                ((ActiveQuestion)questionWebControl).EnableClientSideValidation   = false;
                ((ActiveQuestion)questionWebControl).EnableServerSideValidation   = false;
                ((ActiveQuestion)questionWebControl).ValidationMarkStyle.CssClass = "icon-warning-sign"; //GB
            }
            if (questionWebControl is SectionQuestion)
            {
                ((SectionQuestion)questionWebControl).SectionOptionStyle.CssClass  = "questionOptions";
                ((SectionQuestion)questionWebControl).ValidationMarkStyle.CssClass = "icon-warning-sign"; //GB
            }

            if (questionWebControl is MatrixQuestion)
            {
                ((MatrixQuestion)questionWebControl).MatrixHeaderStyle            = answerStyle;
                ((MatrixQuestion)questionWebControl).MatrixItemStyle              = answerStyle;
                ((MatrixQuestion)questionWebControl).MatrixAlternatingItemStyle   = answerStyle;
                ((MatrixQuestion)questionWebControl).ValidationMarkStyle.CssClass = "icon-warning-sign"; //GB
            }

            questionWebControl.RenderMode    = ControlRenderMode.ReadOnly;
            questionWebControl.AnswerStyle   = answerStyle;
            questionWebControl.QuestionStyle = questionStyle;


            questions.Add(questionWebControl);

            // Add the question and its options to the table
            questionTable.Rows.Add(BuildQuestionOptionsRow(question));

            if (questionWebControl is MatrixQuestion)
            {
                // questionWebControl.Width = new Unit(400.0,UnitType.Pixel);
                questionTable.Rows.Add(BuildRow(questionWebControl));
            }
            else
            {
                questionTable.Rows.Add(BuildRow(questionWebControl));
            }
        }
        /// <summary>
        /// Builds a row with the options available to the question
        /// </summary>
        /// <returns>a tablerow instance with the options</returns>
        private TableRow BuildQuestionOptionsRow(QuestionData.QuestionsRow question)
        {
            // Creates a new edit options control
            UpdateVoterQuestionOptionsControl questionOptions =
                (UpdateVoterQuestionOptionsControl)LoadControl("UserControls/UpdateVoterQuestionOptionsControl.ascx");

            questionOptions.Question = question;
            questionOptions.VoterId  = _voterId;
            return(BuildRow(questionOptions));
        }
Esempio n. 5
0
        /// <summary>
        /// Builds a row with the options available to the question
        /// </summary>
        /// <returns>a tablerow instance with the options</returns>
        private TableRow BuildQuestionOptionsRow(QuestionData.QuestionsRow question)
        {
            // Creates a new edit options control
            QuestionOptionsControl questionOptions =
                (QuestionOptionsControl)LoadControl("UserControls/QuestionOptionsControl.ascx");

            questionOptions.ID            = "QuestionOptions_" + question.QuestionId;
            questionOptions.Question      = question;
            questionOptions.QuestionCount = _questionsData.Questions.Rows.Count;
            return(BuildRow(questionOptions));
        }
Esempio n. 6
0
        private TableRow BuildQuestionOptionsRow(QuestionData.QuestionsRow question)
        {
            LibraryQuestionOptionsControl libraryQuestionOptionsControl =
                (LibraryQuestionOptionsControl)LoadControl("UserControls/LibraryQuestionOptionsControl.ascx");

            libraryQuestionOptionsControl.Question        = question;
            libraryQuestionOptionsControl.EventOrderUp   += new CommandEventHandler(OnOrderUp);
            libraryQuestionOptionsControl.EventOrderDown += new CommandEventHandler(OnOrderDown);
            libraryQuestionOptionsControl.QuestionId      = question.QuestionId.ToString();
            //libraryQuestionOptionsControl.QuestionHelpText = question.q
            return(BuildRow(libraryQuestionOptionsControl, ""));
        }
Esempio n. 7
0
        void EstablishLibraryOrNot()
        {
            QuestionData question = new Questions().GetQuestionById(_questionId, LanguagesDropdownlist.SelectedValue);

            QuestionData.QuestionsRow questionRow = question.Questions[0];
            ViewState["LibraryId"] = questionRow.IsLibraryIdNull() ? -1 : questionRow.LibraryId;
            if (!questionRow.IsLibraryIdNull() && !NSurveyUser.Identity.IsAdmin)
            {
                CheckRight(NSurveyRights.ManageLibrary, true);
            }

            // Can the question have answers
        }
        /// <summary>
        /// Insert a new static question to the library
        /// </summary>
        public QuestionData AddStaticInformationText(int libraryId, string informationText, string questionIDText)
        {
            QuestionData defaultQuestion = this.GetDefaultQuestion();

            QuestionData.QuestionsRow row = defaultQuestion.Questions[0];
            row.LibraryId       = libraryId;
            row.QuestionText    = (informationText.Length > 0xf3c) ? informationText.Substring(0, 0xf3c) : informationText;
            row.DisplayOrder    = 1;
            row.PageNumber      = 1;
            row.SelectionModeId = 5;
            row.QuestionIdText  = questionIDText;
            this.AddQuestion(defaultQuestion);
            return(defaultQuestion);
        }
        /// <summary>
        /// Creates a new question entity with all
        /// required default values
        /// </summary>
        /// <returns></returns>
        private QuestionData GetDefaultQuestion()
        {
            QuestionData data = new QuestionData();

            QuestionData.QuestionsRow row = data.Questions.NewQuestionsRow();
            row.ColumnsNumber        = 0;
            row.MinSelectionRequired = 0;
            row.MaxSelectionAllowed  = 0;
            row.RandomizeAnswers     = false;
            row.RatingEnabled        = false;
            row.QuestionPipeAlias    = null;
            data.Questions.AddQuestionsRow(row);
            return(data);
        }
        /// <summary>
        /// Insert a matrix parent question with hardcoded default values
        /// </summary>
        /// <param name="surveyId">ID of the survey to which belongs the question</param>
        /// <param name="displayOrder">Order in which the question will be displayed</param>
        /// <param name="PageNumber">Page number to which the questions belongs</param>
        /// <param name="questionText">The main question's text</param>
        /// <returns>The full matrix parent question</returns>
        public QuestionData AddDefaultMatrixQuestion(int surveyId, int displayOrder, int pageNumber, string questionText, string questionIDText)
        {
            QuestionData defaultQuestion = this.GetDefaultQuestion();

            QuestionData.QuestionsRow row = defaultQuestion.Questions[0];
            row.SurveyId        = surveyId;
            row.QuestionText    = (questionText.Length > 0xf3c) ? questionText.Substring(0, 0xf3c) : questionText;
            row.DisplayOrder    = displayOrder;
            row.QuestionIdText  = questionIDText;
            row.PageNumber      = pageNumber;
            row.SelectionModeId = 4;
            this.AddQuestion(defaultQuestion);
            return(defaultQuestion);
        }
        /// <summary>
        /// Set the forms to match DB question options
        /// </summary>
        private void BindQuestionOptions()
        {
            // Retrieve the original question values
            QuestionData question = new Questions().GetQuestionById(_parentQuestionId, LanguagesDropdownlist.SelectedValue);

            QuestionData.QuestionsRow questionRow = question.Questions[0];
            QuestionExtraLinks1.Initialize(questionRow.SurveyId, questionRow.QuestionId, questionRow.DisplayOrder, questionRow.PageNumber);
            //
            // Assign them to the form
            QuestionFreeTextBox.Text = questionRow.QuestionText;
            MinSelectionDropDownList.SelectedValue =
                (questionRow.IsMinSelectionRequiredNull()) ? "0" : questionRow.MinSelectionRequired.ToString();
            MaxAllowedDropDownList.SelectedValue =
                (questionRow.IsMaxSelectionAllowedNull()) ? "0" : questionRow.MaxSelectionAllowed.ToString();

            MultipleChoiceCheckbox.Checked = questionRow.SelectionModeId == (int)QuestionSelectionMode.MultiMatrix;
            RatingCheckbox.Checked         = questionRow.RatingEnabled;
            ViewState["LibrayID"]          = questionRow.IsLibraryIdNull() ? -1 : questionRow.LibraryId;

            if (!questionRow.IsLibraryIdNull() && !NSurveyUser.Identity.IsAdmin)
            {
                CheckRight(NSurveyRights.ManageLibrary, true);
            }

            QuestionSectionOptionData sectionOptions = new Questions().GetQuestionSectionOptions(_parentQuestionId, LanguagesDropdownlist.SelectedValue);

            if (sectionOptions.QuestionSectionOptions.Rows.Count > 0)
            {
                RepeatSectionCheckbox.Checked          = true;
                RepeatSectionOptionPlaceholder.Visible = true;
                AddSectionLinkTextBox.Text             = sectionOptions.QuestionSectionOptions[0].AddSectionLinkText;
                DeleteSectionLinkTextBox.Text          = sectionOptions.QuestionSectionOptions[0].DeleteSectionLinkText;
            }
            else
            {
                RepeatSectionCheckbox.Checked          = false;
                RepeatSectionOptionPlaceholder.Visible = false;
            }


            RatingCheckbox.Checked = questionRow.RatingEnabled;

            EnableDisableGroupFields(RatingCheckbox.Checked);
            BindQuestionGroups();

            txtQuestionID.Text      = questionRow.QuestionIdText;
            txtAlias.Text           = questionRow.Alias;
            txtHelpText.Text        = questionRow.HelpText;
            chbShowHelpText.Checked = (questionRow.ShowHelpText != null) ? (bool)questionRow.ShowHelpText : false;
        }
        /// <summary>
        /// Insert a single question to the library
        /// </summary>
        public QuestionData AddDefaultSingleQuestion(int libraryId, string questionText, string questionIdText)
        {
            QuestionData defaultQuestion = this.GetDefaultQuestion();

            QuestionData.QuestionsRow row = defaultQuestion.Questions[0];
            row.LibraryId       = libraryId;
            row.QuestionText    = (questionText.Length > 0xf3c) ? questionText.Substring(0, 0xf3c) : questionText;
            row.DisplayOrder    = 1;
            row.PageNumber      = 1;
            row.SelectionModeId = 1;
            row.LayoutModeId    = 1;
            row.QuestionIdText  = questionIdText;
            this.AddQuestion(defaultQuestion);
            return(defaultQuestion);
        }
        /// <summary>
        /// Insert a new static question
        /// </summary>
        /// <param name="surveyId">ID of the survey to which belongs the question</param>
        /// <param name="displayOrder">Order in which the question will be displayed</param>
        /// <param name="informationText">Static text</param>
        /// <returns>The full static question</returns>
        public QuestionData AddStaticInformationText(int surveyId, int displayOrder, int pageNumber, string informationText, string questionIdText)
        {
            if (pageNumber == 0)
            {
                pageNumber = 1;
            }
            QuestionData defaultQuestion = this.GetDefaultQuestion();

            QuestionData.QuestionsRow row = defaultQuestion.Questions[0];
            row.SurveyId        = surveyId;
            row.QuestionText    = (informationText.Length > 0xf3c) ? informationText.Substring(0, 0xf3c) : informationText;
            row.DisplayOrder    = displayOrder;
            row.PageNumber      = pageNumber;
            row.SelectionModeId = 5;
            row.QuestionIdText  = questionIdText;
            this.AddQuestion(defaultQuestion);
            return(defaultQuestion);
        }
Esempio n. 14
0
        /// <summary>
        /// Get a web control instance of the question row
        /// and adds it with its options to the table
        /// </summary>
        private void AddQuestionWebControl(Table questionTable, QuestionData.QuestionsRow question)
        {
            QuestionItem questionWebControl = QuestionItemFactory.Create(question, LanguagesDropdownlist.SelectedValue, this.UniqueID, 0, null, true, true);

            // Set question's style
            // and bind the data
            Style questionStyle = new Style();

            questionStyle.CssClass = "surveyQuestion";
            Style answerStyle = new Style();

            answerStyle.CssClass = "surveyAnswer";
            Style markStyle = new Style();

            if (questionWebControl is ActiveQuestion)
            {
                ((ActiveQuestion)questionWebControl).EnableClientSideValidation = false;
                ((ActiveQuestion)questionWebControl).EnableServerSideValidation = false;
            }
            if (questionWebControl is SectionQuestion)
            {
                ((SectionQuestion)questionWebControl).SectionOptionStyle.CssClass = "questionOptions";
            }
            if (questionWebControl is MatrixQuestion)
            {
                ((MatrixQuestion)questionWebControl).MatrixHeaderStyle          = answerStyle;
                ((MatrixQuestion)questionWebControl).MatrixItemStyle            = answerStyle;
                ((MatrixQuestion)questionWebControl).MatrixAlternatingItemStyle = answerStyle;
            }

            questionWebControl.RenderMode    = ControlRenderMode.ReadOnly;
            questionWebControl.AnswerStyle   = answerStyle;
            questionWebControl.QuestionStyle = questionStyle;
            questions.Add(questionWebControl);

            // Add the question and its options to the table
            if (NSurveyUser.Identity.IsAdmin || CheckRight(NSurveyRights.ManageLibrary, false))
            {
                questionTable.Rows.Add(BuildQuestionOptionsRow(question));
            }

            questionTable.Rows.Add(BuildRow(questionWebControl, ""));
        }
        void AddFilter(QuestionData.QuestionsRow q, AnswerData.AnswersRow a, FilterData.FiltersRow p)
        {
            FilterData filterData = new FilterData();

            FilterData.FiltersRow filterRow = filterData.Filters.NewFiltersRow();
            filterRow.LogicalOperatorTypeID = short.Parse(LogicalOperatorDropDownList.SelectedValue);
            filterRow.Description           = FilterName(q, a, p);
            filterRow.SurveyId       = SurveyId;
            filterRow.ParentFilterId = p.FilterId;
            filterData.Filters.AddFiltersRow(filterRow);
            new Filter().AddFilter(filterData);

            FilterRuleData filterRuleData = new FilterRuleData();

            FilterRuleData.FilterRulesRow filterRuleRow = filterRuleData.FilterRules.NewFilterRulesRow();
            filterRuleRow.QuestionId = q.QuestionId;
            filterRuleRow.AnswerId   = a.AnswerId;
            filterRuleRow.FilterId   = filterRow.FilterId;
            filterRuleData.FilterRules.AddFilterRulesRow(filterRuleRow);
            new Filter().AddRule(filterRuleData);
        }
        public string GetQuestionPart(QuestionData.QuestionsRow q, AnswerData.AnswersRow a)
        {
            switch (ddlAutoQuestionNaming.SelectedValue)
            {
            case "Question":    /*
                                 *
                                 * if (IsMatrixQuestion(q))
                                 * return TrimSplit((q.ParentQuestionText + splitChar + q.QuestionText + splitChar + q.AnswerText));
                                 * else */
                return(TrimSplit(q.QuestionText));

            case "QuestionDisplayOrderNumber":    /*
                                                   * if (IsMatrixQuestion(q))
                                                   * return TrimSplit(q.DisplayOrder.ToString() + splitChar + q.RowOrder.ToString() + splitChar + q.AnswerText);
                                                   * else */
                return(TrimSplit(q.DisplayOrder.ToString()));

            case "QuestionID":    /*
                                   * if (IsMatrixQuestion(q))
                                   * return TrimSplit((q.IsParentQuestionIdTextNull() ? string.Empty : q.ParentQuestionIdText) +
                                   * splitChar + q.RowOrder.ToString() +
                                   * splitChar + (q.IsAnswerTextNull() ? string.Empty : q.AnswerText));
                                   * else */
                return(TrimSplit(q.IsQuestionIdTextNull() ? q.QuestionText : q.QuestionIdText));

            case "QuestionAlias":    /*
                                      * if (IsMatrixQuestion(q))
                                      * return TrimSplit(q.ParentQuestionAliasText.ToString()
                                      + splitChar + q.RowOrder.ToString() + splitChar + q.AnswerText);
                                      + else */

                return(TrimSplit(q.IsAliasNull() ? q.QuestionText : q.Alias));

            default: return(TrimSplit("Invalid DDl Value"));
            }
        }
        private void UpdateQuestionButton_Click(object sender, System.EventArgs e)
        {
            if (QuestionFreeTextBox.Text.Length == 0)
            {
                MessageLabel.Visible = true;
                ((PageBase)Page).ShowErrorMessage(MessageLabel, ((PageBase)Page).GetPageResource("MissingQuestionMessage"));
            }
            else
            {
                // Removes any single paragraph description
                if (QuestionFreeTextBox.Text.StartsWith("<p>") &&
                    QuestionFreeTextBox.Text.EndsWith("</p>") &&
                    QuestionFreeTextBox.Text.IndexOf("<p>", 3) < 0)
                {
                    QuestionFreeTextBox.Text = QuestionFreeTextBox.Text.Substring(3, QuestionFreeTextBox.Text.Length - 7);
                }

                // creates a BE and update the question
                QuestionData question = new QuestionData();
                QuestionData.QuestionsRow updatedQuestion =
                    question.Questions.NewQuestionsRow();

                // Set the updated fields
                updatedQuestion.QuestionId   = _parentQuestionId;
                updatedQuestion.SurveyId     = getSurveyId();
                updatedQuestion.QuestionText = QuestionFreeTextBox.Text.Length > 3900 ?
                                               Server.HtmlDecode(QuestionFreeTextBox.Text.Substring(0, 3900)) : Server.HtmlDecode(QuestionFreeTextBox.Text);
                updatedQuestion.MinSelectionRequired = int.Parse(MinSelectionDropDownList.SelectedValue);
                updatedQuestion.MaxSelectionAllowed  = int.Parse(MaxAllowedDropDownList.SelectedValue);
                updatedQuestion.RatingEnabled        = RatingCheckbox.Checked;
                updatedQuestion.RandomizeAnswers     = false;
                updatedQuestion.QuestionIdText       = txtQuestionID.Text;
                updatedQuestion.ShowHelpText         = chbShowHelpText.Checked;
                updatedQuestion.Alias          = txtAlias.Text;
                updatedQuestion.HelpText       = txtHelpText.Text;
                updatedQuestion.QuestionIdText = txtQuestionID.Text;
                updatedQuestion.SetQuestionGroupIDNull();
                if (ddlGroup.SelectedIndex != 0)
                {
                    updatedQuestion.QuestionGroupID = int.Parse(ddlGroup.SelectedValue);
                }
                if (ddlSubGroup.SelectedIndex != 0)
                {
                    updatedQuestion.QuestionGroupID = int.Parse(ddlSubGroup.SelectedValue);
                }
                if (MultipleChoiceCheckbox.Checked)
                {
                    updatedQuestion.SelectionModeId = (int)QuestionSelectionMode.MultiMatrix;
                }
                else
                {
                    updatedQuestion.SelectionModeId = (int)QuestionSelectionMode.Matrix;
                }

                question.Questions.AddQuestionsRow(updatedQuestion);

                new Question().UpdateQuestion(question, LanguagesDropdownlist.SelectedValue);

                // Matrix can be repeated
                if (RepeatSectionCheckbox.Checked)
                {
                    // creates a BE and update the options
                    QuestionSectionOptionData sectionOptions = new QuestionSectionOptionData();
                    QuestionSectionOptionData.QuestionSectionOptionsRow updatedSectionOption =
                        sectionOptions.QuestionSectionOptions.NewQuestionSectionOptionsRow();

                    // Set the updated fields
                    updatedSectionOption.QuestionId = _parentQuestionId;
                    updatedSectionOption.RepeatableSectionModeId = (int)RepeatableSectionMode.FullAnswers;
                    updatedSectionOption.DeleteSectionLinkText   = DeleteSectionLinkTextBox.Text;
                    updatedSectionOption.AddSectionLinkText      = AddSectionLinkTextBox.Text;
                    sectionOptions.QuestionSectionOptions.AddQuestionSectionOptionsRow(updatedSectionOption);
                    new Question().UpdateQuestionSectionOptions(sectionOptions, LanguagesDropdownlist.SelectedValue);
                }
                else
                {
                    new Question().DeleteQuestionSectionOptions(_parentQuestionId);
                    DeleteSectionLinkTextBox.Text = string.Empty;
                    AddSectionLinkTextBox.Text    = string.Empty;
                }

                MessageLabel.Visible = true;
                ((PageBase)Page).ShowNormalMessage(MessageLabel, ((PageBase)Page).GetPageResource("OptionsUpdatedMessage"));


                BindQuestionOptions();
                BindAnswerOptions();
            }
        }
 public string FilterName(QuestionData.QuestionsRow q, AnswerData.AnswersRow a, FilterData.FiltersRow f, string splitChar)
 {
     return(GetSubstr(GetFilterPart(f, splitChar)) + splitChar + FilterName(q, a, splitChar));
 }
 public string FilterName(QuestionData.QuestionsRow q, AnswerData.AnswersRow a, string splitChar)
 {
     return(GetSubstr(GetQuestionPart(q, a)) + splitChar + GetSubstr(GetAnswerPart(a)));
 }
 bool IsMatrixQuestion(QuestionData.QuestionsRow q)
 {
     return(false);
 }
Esempio n. 21
0
        /// <summary>
        /// Set the forms to match DB question options
        /// </summary>
        private void BindQuestionOptions()
        {
            // Retrieve the original question values
            QuestionData question = new Questions().GetQuestionById(_questionId, LanguagesDropdownlist.SelectedValue);

            QuestionData.QuestionsRow questionRow = question.Questions[0];

            QuestionExtraLinks1.Initialize(questionRow.SurveyId, questionRow.QuestionId, questionRow.DisplayOrder, questionRow.PageNumber);

            // Assign them to the form
            QuestionFreeTextBox.Text = questionRow.QuestionText;
            txtQuestionID.Text       = questionRow.QuestionIdText;
            DisplayModeDropDownList.SelectedValue =
                (questionRow.IsLayoutModeIdNull()) ? ((int)QuestionLayoutMode.Horizontal).ToString() : questionRow.LayoutModeId.ToString();
            ColumnDropdownlist.SelectedValue        = questionRow.ColumnsNumber.ToString();
            SelectionModeDropDownList.SelectedValue = questionRow.SelectionModeId.ToString();
            MinSelectionDropDownList.SelectedValue  =
                (questionRow.IsMinSelectionRequiredNull()) ? "0" : questionRow.MinSelectionRequired.ToString();
            MaxAllowedDropDownList.SelectedValue =
                (questionRow.IsMaxSelectionAllowedNull()) ? "0" : questionRow.MaxSelectionAllowed.ToString();

            //JL: Enable or disable the Min Max dropdown list depending on selectionmodedropdownlist option selected by user
            EnableDisableMinMaxDropDownList();

            RandomizeCheckBox.Checked = questionRow.RandomizeAnswers;
            RatingCheckbox.Checked    = questionRow.RatingEnabled;

            RatingCheckbox.Checked = questionRow.RatingEnabled;

            EnableDisableGroupFields(RatingCheckbox.Checked);
            BindQuestionGroups();

            PipeAliasTextBox.Text     = questionRow.QuestionPipeAlias;
            RandomizeCheckBox.Enabled = !RatingCheckbox.Checked;

            ViewState["LibraryId"] = questionRow.IsLibraryIdNull() ? -1 : questionRow.LibraryId;
            if (!questionRow.IsLibraryIdNull() && !NSurveyUser.Identity.IsAdmin)
            {
                CheckRight(NSurveyRights.ManageLibrary, true);
            }

            // Can the question have answers
            if (((QuestionTypeMode)questionRow.TypeMode & QuestionTypeMode.Answerable) > 0)
            {
                AnswerOptionsPlaceholder.Visible       = true;
                RepeatSectionOptionPlaceHolder.Visible = true;
                EditAnswersButton.Enabled = true;
                MultipleSelection         = ((QuestionTypeMode)questionRow.TypeMode & QuestionTypeMode.MultipleAnswers) > 0;
            }
            else
            {
                RepeatSectionOptionPlaceHolder.Visible = false;
                AnswerOptionsPlaceholder.Visible       = false;
                EditAnswersButton.Enabled = false;
                new Question().DeleteQuestionSectionOptions(_questionId);
            }

            if (questionRow.RatingEnabled)
            {
                BindQuestionGroups();
            }
            else
            {
                ddlGroup.Enabled    = true;
                ddlSubGroup.Enabled = true;
            }

            txtAlias.Text           = questionRow.Alias;
            txtHelpText.Text        = questionRow.HelpText;
            chbShowHelpText.Checked = (questionRow.ShowHelpText) ? (bool)questionRow.ShowHelpText : false;
        }
Esempio n. 22
0
        private void BindQuestionGroups()
        {
            QuestionData question = new Questions().GetQuestionById(_questionId, LanguagesDropdownlist.SelectedValue);

            QuestionData.QuestionsRow questionRow = question.Questions[0];
            int questionGroupId = questionRow.IsQuestionGroupIDNull() ? -1 : (int)questionRow.QuestionGroupID;

            int selectedQuestionGroupId = -1;

            QuestionGroupsData data         = new Votations.NSurvey.DataAccess.QuestionGroups().GetAll(LanguagesDropdownlist.SelectedValue);
            DataView           groupView    = data.DefaultViewManager.CreateDataView(data.Tables[0]);
            DataView           subGroupView = data.DefaultViewManager.CreateDataView(data.Tables[0]);

            groupView.RowFilter = "ParentGroupId is null";


            foreach (QuestionGroupsData.QuestionGroupsRow row in data.Tables[0].Rows)
            {
                if (row.ID == questionGroupId)
                {
                    selectedQuestionGroupId = (row.ParentGroupID != null) ? (int)row.ParentGroupID : questionGroupId;
                    break;
                }
            }


            if (ddlGroup.SelectedIndex > -1 && ddlGroup.SelectedValue != selectedQuestionGroupId.ToString())
            {
                selectedQuestionGroupId = int.Parse(ddlGroup.SelectedValue);
            }

            subGroupView.RowFilter = "ParentGroupId = " + selectedQuestionGroupId;
            ddlGroup.Items.Clear();
            ddlGroup.Items.Add(new ListItem(GetPageResource("DdlNoSelect"), "-1"));
            ddlSubGroup.Items.Clear();
            ddlSubGroup.Items.Add(new ListItem(GetPageResource("DdlNoSelect"), "-1"));

            ddlGroup.DataSource     = groupView;
            ddlGroup.DataTextField  = "GroupName";
            ddlGroup.DataValueField = "ID";
            ddlGroup.DataBind();

            ddlSubGroup.DataSource     = subGroupView;
            ddlSubGroup.DataTextField  = "GroupName";
            ddlSubGroup.DataValueField = "ID";
            ddlSubGroup.DataBind();

            foreach (ListItem item in ddlGroup.Items)
            {
                if (item.Value == selectedQuestionGroupId.ToString())
                {
                    item.Selected = true;
                    break;
                }
            }

            foreach (ListItem item in ddlSubGroup.Items)
            {
                if (item.Value == questionGroupId.ToString())
                {
                    item.Selected = true;
                    break;
                }
            }
        }
Esempio n. 23
0
        private void UpdateQuestionButton_Click(object sender, System.EventArgs e)
        {
            if (QuestionFreeTextBox.Text.Length == 0)
            {
                MessageLabel.Visible = true;
                ((PageBase)Page).ShowErrorMessage(MessageLabel, ((PageBase)Page).GetPageResource("MissingQuestionMessage"));
            }
            else
            {
                // Removes any single paragraph description
                if (QuestionFreeTextBox.Text.StartsWith("<p>") &&
                    QuestionFreeTextBox.Text.EndsWith("</p>") &&
                    QuestionFreeTextBox.Text.IndexOf("<p>", 3) < 0)
                {
                    QuestionFreeTextBox.Text = QuestionFreeTextBox.Text.Substring(3, QuestionFreeTextBox.Text.Length - 7);
                }


                // creates a BE and update the question
                QuestionData question = new QuestionData();
                QuestionData.QuestionsRow updatedQuestion =
                    question.Questions.NewQuestionsRow();

                // Set the updated fields
                updatedQuestion.QuestionId   = _questionId;
                updatedQuestion.SurveyId     = getSurveyId();
                updatedQuestion.QuestionText = QuestionFreeTextBox.Text.Length > 3900 ?
                                               Server.HtmlDecode(QuestionFreeTextBox.Text.Substring(0, 3900)) : Server.HtmlDecode(QuestionFreeTextBox.Text);
                updatedQuestion.ColumnsNumber        = int.Parse(ColumnDropdownlist.SelectedValue);
                updatedQuestion.MinSelectionRequired = int.Parse(MinSelectionDropDownList.SelectedValue);
                updatedQuestion.MaxSelectionAllowed  = int.Parse(MaxAllowedDropDownList.SelectedValue);
                updatedQuestion.LayoutModeId         = byte.Parse(DisplayModeDropDownList.SelectedValue);
                updatedQuestion.SelectionModeId      = byte.Parse(SelectionModeDropDownList.SelectedValue);
                updatedQuestion.RandomizeAnswers     = RatingCheckbox.Checked ? false : RandomizeCheckBox.Checked;
                updatedQuestion.RatingEnabled        = RatingCheckbox.Checked;
                updatedQuestion.QuestionPipeAlias    = PipeAliasTextBox.Text;
                updatedQuestion.QuestionIdText       = txtQuestionID.Text;
                updatedQuestion.ShowHelpText         = chbShowHelpText.Checked;
                updatedQuestion.Alias    = txtAlias.Text;
                updatedQuestion.HelpText = txtHelpText.Text;
                updatedQuestion.SetQuestionGroupIDNull();
                if (ddlGroup.SelectedIndex != 0)
                {
                    updatedQuestion.QuestionGroupID = int.Parse(ddlGroup.SelectedValue);
                }
                if (ddlSubGroup.SelectedIndex != 0)
                {
                    updatedQuestion.QuestionGroupID = int.Parse(ddlSubGroup.SelectedValue);
                }
                if (!RatingCheckbox.Checked)
                {
                    updatedQuestion.SetQuestionGroupIDNull();
                }
                question.Questions.AddQuestionsRow(updatedQuestion);

                new Question().UpdateQuestion(question, LanguagesDropdownlist.SelectedValue);

                MessageLabel.Visible = true;
                ((PageBase)Page).ShowNormalMessage(MessageLabel, ((PageBase)Page).GetPageResource("OptionsUpdatedMessage"));


                BindQuestionOptions();
            }
        }
        /// <summary>
        /// Get a web control instance of the question row
        /// and adds it with its options to the table
        /// </summary>
        private void AddQuestionWebControl(Table questionTable, QuestionData.QuestionsRow question)
        {
            QuestionItem questionWebControl;

            // Set voter answers only on first load to init
            // question control's answer items
            if (!Page.IsPostBack)
            {
                questionWebControl = QuestionItemFactory.Create(question, null, this.UniqueID, 0, _voterAnswers.VotersAnswers, false);
            }
            else
            {
                questionWebControl = QuestionItemFactory.Create(question, null, this.UniqueID, 0, null, false);
            }

            // Set question's style
            // and bind the data
            Style questionStyle = new Style();

            questionStyle.CssClass = "surveyQuestion";
            Style answerStyle = new Style();

            answerStyle.CssClass = "surveyAnswer";
            Style markStyle       = new Style();
            Style validationStyle = new Style();

            validationStyle.CssClass = "questionValidationMessageStyleCSS";
            Style confirmationStyle = new Style();

            confirmationStyle.CssClass = "confirmationMessageStyleCSS";

            if (questionWebControl is ActiveQuestion)
            {
                ((ActiveQuestion)questionWebControl).AnswerPosted +=
                    new AnswerPostedEventHandler(OnAnswerPost);
                ((ActiveQuestion)questionWebControl).EnableClientSideValidation = false;
                ((ActiveQuestion)questionWebControl).EnableServerSideValidation = false;
                ((ActiveQuestion)questionWebControl).ValidationMessageStyle     = validationStyle;
                ((ActiveQuestion)questionWebControl).ConfirmationMessageStyle   = confirmationStyle;
            }
            if (questionWebControl is SectionQuestion)
            {
                ((SectionQuestion)questionWebControl).SectionOptionStyle.CssClass = "questionOptions";
            }
            if (questionWebControl is MatrixQuestion)
            {
                ((MatrixQuestion)questionWebControl).MatrixHeaderStyle          = answerStyle;
                ((MatrixQuestion)questionWebControl).MatrixStyle                = answerStyle;
                ((MatrixQuestion)questionWebControl).MatrixItemStyle            = answerStyle;
                ((MatrixQuestion)questionWebControl).MatrixAlternatingItemStyle = answerStyle;
            }
            if (questionWebControl is SectionQuestion)
            {
                ((SectionQuestion)questionWebControl).SectionGridAnswersItemStyle            = answerStyle;
                ((SectionQuestion)questionWebControl).SectionGridAnswersHeaderStyle          = answerStyle;
                ((SectionQuestion)questionWebControl).SectionGridAnswersAlternatingItemStyle = answerStyle;
                ((SectionQuestion)questionWebControl).SectionGridAnswersStyle = answerStyle;
                ((SectionQuestion)questionWebControl).EnableGridSectionClientSideValidation = false;
                ((SectionQuestion)questionWebControl).EnableGridSectionServerSideValidation = false;
            }

            questionWebControl.RenderMode    = ControlRenderMode.Edit;
            questionWebControl.AnswerStyle   = answerStyle;
            questionWebControl.QuestionStyle = questionStyle;

            questions.Add(questionWebControl);

            // Add the question and its options to the table
            questionTable.Rows.Add(BuildQuestionOptionsRow(question));
            questionTable.Rows.Add(BuildRow(questionWebControl));
        }
        public static QuestionItem Create(QuestionData.QuestionsRow question, string languageCode, string parentControlUniqueID,
                                          int questionRandomSeed, VoterAnswersData.VotersAnswersDataTable voterAnswersState,
                                          bool enableAnswerDefaults, bool isDesignMode = false)
        {
            QuestionItem item;

            if ((question.TypeAssembly.Length == 0) || (question.TypeAssembly == null))
            {
                throw new ApplicationException("Could not create an instance because the question data has no assembly type specified");
            }
            try
            {
                item = (QuestionItem)Assembly.Load(question.TypeAssembly).CreateInstance(question.TypeNameSpace);
            }
            catch (InvalidCastException)
            {
                throw new InvalidCastException("Concrete type " + question.TypeNameSpace + " is not a child of the questionitem abstract class");
            }
            catch (NullReferenceException)
            {
                throw new InvalidCastException("specfied type " + question.TypeNameSpace + " could not be found in the specifed assembly " + question.TypeAssembly);
            }
            item.ID         = "Question" + question.QuestionId.ToString();
            item.QuestionId = question.QuestionId;
            item.Text       = new PipeManager().PipeValuesInText(question.QuestionId, question.QuestionText +
                                                                 ((question.ShowHelpText && !isDesignMode)?(
                                                                      question.IsHelpTextNull()?string.Empty: HelpTextInSmallFont(question.HelpText)):string.Empty)//JJSurveyBoxChange
                                                                 , voterAnswersState, languageCode);
            item.LanguageCode    = languageCode;
            item.QuestionId_Text = question.QuestionIdText;
            item.HelpText        = question.HelpText;
            SectionQuestion question2 = item as SectionQuestion;

            if ((question2 != null) && (question.RepeatableSectionModeId != 0))
            {
                question2.RepeatMode  = (RepeatableSectionMode)question.RepeatableSectionModeId;
                question2.MaxSections = question.MaxSections;
                question2.GridAnswers = new Questions().GetQuestionSectionGridAnswers(question.QuestionId);
                if ((question.AddSectionLinkText != null) && (question.AddSectionLinkText.Length > 0))
                {
                    question2.AddSectionLinkText = question.AddSectionLinkText;
                }
                if ((question.DeleteSectionLinkText != null) && (question.DeleteSectionLinkText.Length > 0))
                {
                    question2.DeleteSectionLinkText = question.DeleteSectionLinkText;
                }
                if ((question.EditSectionLinkText != null) && (question.EditSectionLinkText.Length > 0))
                {
                    question2.EditSectionLinkText = question.EditSectionLinkText;
                }
                if ((question.UpdateSectionLinkText != null) && (question.UpdateSectionLinkText.Length > 0))
                {
                    question2.UpdateSectionLinkText = question.UpdateSectionLinkText;
                }
            }
            SingleQuestion question3 = item as SingleQuestion;

            if (question3 != null)
            {
                question3.VoterAnswersState    = voterAnswersState;
                question3.EnableAnswersDefault = enableAnswerDefaults;
                question3.MinSelectionRequired = question.MinSelectionRequired;
                question3.MaxSelectionAllowed  = question.MaxSelectionAllowed;
                question3.ColumnsNumber        = question.ColumnsNumber;
                question3.LayoutMode           = question.IsLayoutModeIdNull() ? QuestionLayoutMode.Vertical : ((QuestionLayoutMode)question.LayoutModeId);
                if (question.RandomizeAnswers)
                {
                    question3.DataSource = new Answers().GetRandomAnswers(question.QuestionId, questionRandomSeed, languageCode);
                    return(question3);
                }
                question3.DataSource = new Answers().GetAnswers(question.QuestionId, languageCode);
                return(question3);
            }
            MatrixQuestion question4 = item as MatrixQuestion;

            if (question4 != null)
            {
                question4.VoterAnswersState    = voterAnswersState;
                question4.EnableAnswersDefault = enableAnswerDefaults;
                question4.MinSelectionRequired = question.MinSelectionRequired;
                question4.MaxSelectionAllowed  = question.MaxSelectionAllowed;
                question4.DataSource           = new Questions().GetMatrixChildQuestions(question.QuestionId, languageCode);
                return(question4);
            }
            return(item);
        }