diff options
| -rw-r--r-- | addons/survey/data/survey_demo_certification.xml | 4 | ||||
| -rw-r--r-- | addons/survey/data/survey_demo_feedback.xml | 1 | ||||
| -rw-r--r-- | addons/survey/data/survey_demo_quiz.xml | 2 | ||||
| -rw-r--r-- | addons/survey/models/survey_question.py | 5 | ||||
| -rw-r--r-- | addons/survey/static/src/js/survey_form.js | 31 | ||||
| -rw-r--r-- | addons/survey/static/tests/tours/certification_failure.js | 18 | ||||
| -rw-r--r-- | addons/survey/static/tests/tours/certification_success.js | 18 | ||||
| -rw-r--r-- | addons/survey/static/tests/tours/survey.js | 6 | ||||
| -rw-r--r-- | addons/survey/static/tests/tours/survey_prefill.js | 10 | ||||
| -rw-r--r-- | addons/survey/tests/test_survey_ui_certification.py | 4 | ||||
| -rw-r--r-- | addons/survey/tests/test_survey_ui_feedback.py | 1 | ||||
| -rw-r--r-- | addons/survey/views/survey_question_views.xml | 5 | ||||
| -rw-r--r-- | addons/survey/views/survey_templates.xml | 30 | ||||
| -rw-r--r-- | addons/test_website_slides_full/tests/test_ui_wslides.py | 1 | ||||
| -rw-r--r-- | addons/website_slides_survey/data/survey_demo.xml | 1 |
15 files changed, 22 insertions, 115 deletions
diff --git a/addons/survey/data/survey_demo_certification.xml b/addons/survey/data/survey_demo_certification.xml index 389b8278e71..5ea4351605a 100644 --- a/addons/survey/data/survey_demo_certification.xml +++ b/addons/survey/data/survey_demo_certification.xml @@ -42,7 +42,6 @@ <field name="sequence">2</field> <field name="title">Do we sell Acoustic Bloc Screens?</field> <field name="question_type">simple_choice</field> - <field name="display_mode">dropdown</field> <field name="constr_mandatory" eval="True" /> </record> <record model="survey.question.answer" id="vendor_certification_page_1_question_1_choice_1"> @@ -145,7 +144,6 @@ <field name="sequence">5</field> <field name="title">How many versions of the Corner Desk do we have?</field> <field name="question_type">simple_choice</field> - <field name="display_mode">dropdown</field> <field name="constr_mandatory" eval="True" /> </record> <record model="survey.question.answer" id="vendor_certification_page_1_question_4_choice_1"> @@ -192,7 +190,6 @@ <field name="sequence">8</field> <field name="title">How much do we sell our Cable Management Box?</field> <field name="question_type">simple_choice</field> - <field name="display_mode">dropdown</field> <field name="constr_mandatory" eval="True" /> </record> <record model="survey.question.answer" id="vendor_certification_page_2_question_1_choice_1"> @@ -280,7 +277,6 @@ <field name="sequence">10</field> <field name="title">What do you think about our prices (not rated)?</field> <field name="question_type">simple_choice</field> - <field name="display_mode">dropdown</field> <field name="constr_mandatory" eval="True" /> </record> <record model="survey.question.answer" id="vendor_certification_page_2_question_3_choice_1"> diff --git a/addons/survey/data/survey_demo_feedback.xml b/addons/survey/data/survey_demo_feedback.xml index 6aff000dcdd..99071ff197f 100644 --- a/addons/survey/data/survey_demo_feedback.xml +++ b/addons/survey/data/survey_demo_feedback.xml @@ -42,7 +42,6 @@ <field name="sequence">4</field> <field name="title">How frequently do you buy products online ?</field> <field name="question_type">simple_choice</field> - <field name="display_mode">dropdown</field> <field name="comments_allowed" eval="True"/> <field name="comment_count_as_answer" eval="True"/> <field name="constr_mandatory" eval="True"/> diff --git a/addons/survey/data/survey_demo_quiz.xml b/addons/survey/data/survey_demo_quiz.xml index 88bb3c7f694..c4202ef081a 100644 --- a/addons/survey/data/survey_demo_quiz.xml +++ b/addons/survey/data/survey_demo_quiz.xml @@ -89,7 +89,6 @@ <field name="title">Which category does a tomato belong to</field> <field name="description" type="html"><span>"Red" is not a category, I know what you are trying to do ;)</span></field> <field name="question_type">simple_choice</field> - <field name="display_mode">dropdown</field> <field name="comments_allowed" eval="True"/> <field name="comment_count_as_answer" eval="True"/> <field name="constr_mandatory" eval="True"/> @@ -118,7 +117,6 @@ <field name="sequence">22</field> <field name="title">Which of the following would you use to pollinate</field> <field name="question_type">simple_choice</field> - <field name="display_mode">columns</field> <field name="comments_allowed" eval="True"/> <field name="comment_count_as_answer" eval="False"/> <field name="constr_mandatory" eval="True"/> diff --git a/addons/survey/models/survey_question.py b/addons/survey/models/survey_question.py index 486c3d2d95d..24f55e00133 100644 --- a/addons/survey/models/survey_question.py +++ b/addons/survey/models/survey_question.py @@ -14,7 +14,7 @@ class SurveyQuestion(models.Model): """ Questions that will be asked in a survey. Each question can have one of more suggested answers (eg. in case of - dropdown choices, multi-answer checkboxes, radio buttons...). + multi-answer checkboxes, radio buttons...). Technical note: @@ -98,9 +98,6 @@ class SurveyQuestion(models.Model): ('12', '1'), ('6', '2'), ('4', '3'), ('3', '4'), ('2', '6')], string='Number of columns', default='12', help='These options refer to col-xx-[12|6|4|3|2] classes in Bootstrap for dropdown-based simple and multiple choice questions.') - display_mode = fields.Selection( - [('columns', 'Radio Buttons'), ('dropdown', 'Selection Box')], - string='Display Mode', default='columns', help='Display mode of simple choice questions.') # -- comments (simple choice, multiple choice, matrix (without count as an answer)) comments_allowed = fields.Boolean('Show Comments Field') comments_message = fields.Char('Comment Message', translate=True, default=lambda self: _("If other, please specify:")) diff --git a/addons/survey/static/src/js/survey_form.js b/addons/survey/static/src/js/survey_form.js index c28cbebf8ec..2c6b6a1d5d1 100644 --- a/addons/survey/static/src/js/survey_form.js +++ b/addons/survey/static/src/js/survey_form.js @@ -52,10 +52,6 @@ publicWidget.registry.SurveyFormWidget = publicWidget.Widget.extend({ /* * Checks, if the 'other' choice is checked. Applies only if the comment count as answer. - * In case of dropdownlist: - * If not checked : Clear the comment textarea and hide it - * If checked : show the comment textarea and focus on it - * In case of radio buttons * If not checked : Clear the comment textarea and disable it * If checked : enable the comment textarea and focus on it * @@ -67,24 +63,12 @@ publicWidget.registry.SurveyFormWidget = publicWidget.Widget.extend({ var $otherItem = $choiceItemGroup.find('.o_survey_js_form_other_comment'); var $commentInput = $choiceItemGroup.find('textarea[type="text"]'); - // Handle dropdownlist - var $dropdownlist = $choiceItemGroup.find('select'); - var isDropdown = $dropdownlist.length > 0; - - var isOtherSelected = (isDropdown && $dropdownlist.val() === $otherItem.val()) || $otherItem.prop('checked'); - - if (isOtherSelected || $commentInput.hasClass('o_survey_comment')) { - if (isDropdown) { - $commentInput.toggleClass('d-none', false); - } - if (isOtherSelected) { - $commentInput.enable(); + if ($otherItem.prop('checked') || $commentInput.hasClass('o_survey_comment')) { + $commentInput.enable(); + if ($otherItem.prop('checked')) { $commentInput.focus(); } } else { - if (isDropdown) { - $commentInput.toggleClass('d-none', true); - } $commentInput.val(''); $commentInput.enable(false); } @@ -188,12 +172,9 @@ publicWidget.registry.SurveyFormWidget = publicWidget.Widget.extend({ case 'datetime': params = self._prepareSubmitDates(params, this.name, this.value, true); break; - case 'simple_choice_dropdown': - params = self._prepareSubmitChoices(params, $(this), $(this).data('name'), 'option:selected'); - break; case 'simple_choice_radio': case 'multiple_choice': - params = self._prepareSubmitChoices(params, $(this), $(this).data('name'), 'input:checked'); + params = self._prepareSubmitChoices(params, $(this), $(this).data('name')); break; case 'matrix': params = self._prepareSubmitAnswersMatrix(params, $(this)); @@ -219,9 +200,9 @@ publicWidget.registry.SurveyFormWidget = publicWidget.Widget.extend({ * If the answer is not the 'comment selection' (=Other), calls the _prepareSubmitAnswer method to add the answer to the params * If there is a comment linked to that question, calls the _prepareSubmitComment method to add the comment to the params */ - _prepareSubmitChoices: function(params, $parent, questionId, selector) { + _prepareSubmitChoices: function (params, $parent, questionId) { var self = this; - $parent.find(selector).each(function () { + $parent.find('input:checked').each(function () { if (this.value !== '-1') { params = self._prepareSubmitAnswer(params, questionId, this.value); } diff --git a/addons/survey/static/tests/tours/certification_failure.js b/addons/survey/static/tests/tours/certification_failure.js index 5b5fb1c9ea0..95d292afab2 100644 --- a/addons/survey/static/tests/tours/certification_failure.js +++ b/addons/survey/static/tests/tours/certification_failure.js @@ -13,8 +13,7 @@ var failSteps = [{ // Page-1 trigger: 'a.btn.btn-primary.btn-lg:contains("Start Certification")', }, { // Question: Do we sell Acoustic Bloc Screens? content: "Selecting answer 'No'", - trigger: 'div.js_question-wrapper:contains("Do we sell Acoustic Bloc Screens") select', - run: 'text No', + trigger: 'div.js_question-wrapper:contains("Do we sell Acoustic Bloc Screens") label:contains("No") input', }, { // Question: Select all the existing products content: "Ticking answer 'Fanta'", trigger: 'div.js_question-wrapper:contains("Select all the existing products") label:contains("Fanta") input' @@ -32,19 +31,14 @@ var failSteps = [{ // Page-1 trigger: 'div.js_question-wrapper:contains("Select all the available customizations for our Customizable Desk") label:contains("Height") input' }, { // Question: How many versions of the Corner Desk do we have? content: "Selecting answer '2'", - trigger: 'div.js_question-wrapper:contains("How many versions of the Corner Desk do we have") select', - run: 'text 2', + trigger: 'div.js_question-wrapper:contains("How many versions of the Corner Desk do we have") label:contains("2") input', }, { // Question: Do you think we have missing products in our catalog? (not rated) content: "Missing products", trigger: 'div.js_question-wrapper:contains("Do you think we have missing products in our catalog") textarea', run: "text I don't know products enough to be able to answer that", }, { // Page-2 Question: How much do we sell our Cable Management Box? content: "Selecting answer '80$'", - trigger: 'div.js_question-wrapper:contains("How much do we sell our Cable Management Box") select', - run: function () { - var $select = $('div.js_question-wrapper:contains("How much do we sell our Cable Management Box") select'); - $select.val($('option:contains("80$")').val()); - } + trigger: 'div.js_question-wrapper:contains("How much do we sell our Cable Management Box") label:contains("80$") input', }, { // Question: Select all the the products that sell for 100$ or more content: "Ticking answer 'Corner Desk Right Sit'", trigger: 'div.js_question-wrapper:contains("Select all the the products that sell for 100$ or more") label:contains("Corner Desk Right Sit") input' @@ -55,11 +49,7 @@ var failSteps = [{ // Page-1 content: "Ticking answer 'Office Chair Black'", trigger: 'div.js_question-wrapper:contains("Select all the the products that sell for 100$ or more") label:contains("Office Chair Black") input' }, { // Question: What do you think about our prices (not rated)? - trigger: 'div.js_question-wrapper:contains("What do you think about our prices") select', - run: function () { - var $select = $('div.js_question-wrapper:contains("What do you think about our prices") select'); - $select.val($('option:contains("Correctly priced")').val()); - } + trigger: 'div.js_question-wrapper:contains("What do you think about our prices") label:contains("Correctly priced") input', }, { content: "Finish Survey", trigger: 'button[type="submit"]', diff --git a/addons/survey/static/tests/tours/certification_success.js b/addons/survey/static/tests/tours/certification_success.js index 03d3a22a9d7..f371e375266 100644 --- a/addons/survey/static/tests/tours/certification_success.js +++ b/addons/survey/static/tests/tours/certification_success.js @@ -12,8 +12,7 @@ tour.register('test_certification_success', { trigger: 'a.btn.btn-primary.btn-lg:contains("Start Certification")', }, { // Question: Do we sell Acoustic Bloc Screens? content: "Selecting answer 'Yes'", - trigger: 'div.js_question-wrapper:contains("Do we sell Acoustic Bloc Screens") select', - run: 'text Yes', + trigger: 'div.js_question-wrapper:contains("Do we sell Acoustic Bloc Screens") label:contains("Yes") input', }, { // Question: Select all the existing products content: "Ticking answer 'Chair floor protection'", trigger: 'div.js_question-wrapper:contains("Select all the existing products") label:contains("Chair floor protection") input' @@ -31,19 +30,14 @@ tour.register('test_certification_success', { trigger: 'div.js_question-wrapper:contains("Select all the available customizations for our Customizable Desk") label:contains("Legs") input' }, { // Question: How many versions of the Corner Desk do we have? content: "Selecting answer '2'", - trigger: 'div.js_question-wrapper:contains("How many versions of the Corner Desk do we have") select', - run: 'text 2', + trigger: 'div.js_question-wrapper:contains("How many versions of the Corner Desk do we have") label:contains("2") input', }, { // Question: Do you think we have missing products in our catalog? (not rated) content: "Missing products", trigger: 'div.js_question-wrapper:contains("Do you think we have missing products in our catalog") textarea', run: "text I think we should make more versions of the customizable desk, it's such an amazing product!", }, { // Page-2 Question: How much do we sell our Cable Management Box? content: "Selecting answer '80$' (wrong one)", - trigger: 'div.js_question-wrapper:contains("How much do we sell our Cable Management Box") select', - run: function () { - var $select = $('div.js_question-wrapper:contains("How much do we sell our Cable Management Box") select'); - $select.val($('option:contains("80$")').val()); - } + trigger: 'div.js_question-wrapper:contains("How much do we sell our Cable Management Box") label:contains("80$") input', }, { // Question: Select all the the products that sell for 100$ or more content: "Ticking answer 'Corner Desk Right Sit'", trigger: 'div.js_question-wrapper:contains("Select all the the products that sell for 100$ or more") label:contains("Corner Desk Right Sit") input' @@ -55,11 +49,7 @@ tour.register('test_certification_success', { trigger: 'div.js_question-wrapper:contains("Select all the the products that sell for 100$ or more") label:contains("Large Desk") input' }, { // Question: What do you think about our prices (not rated)? content: "Selecting answer 'Underpriced'", - trigger: 'div.js_question-wrapper:contains("What do you think about our prices") select', - run: function () { - var $select = $('div.js_question-wrapper:contains("What do you think about our prices") select'); - $select.val($('option:contains("Underpriced")').val()); - } + trigger: 'div.js_question-wrapper:contains("What do you think about our prices") label:contains("Underpriced") input', }, { content: "Finish Survey", trigger: 'button[type="submit"]', diff --git a/addons/survey/static/tests/tours/survey.js b/addons/survey/static/tests/tours/survey.js index e4540fba1ab..16ec56dc543 100644 --- a/addons/survey/static/tests/tours/survey.js +++ b/addons/survey/static/tests/tours/survey.js @@ -21,11 +21,7 @@ tour.register('test_survey', { run: 'text 05/05/1980', }, { content: 'Answer How frequently do you buy products online', - trigger: 'div.js_question-wrapper:contains("How frequently do you buy products online") select', - run: function () { - var $select = $('div.js_question-wrapper:contains("How frequently do you buy products online") select'); - $select.val($('option:contains("Once a month")').val()); - } + trigger: 'div.js_question-wrapper:contains("How frequently do you buy products online") label:contains("Once a month") input', }, { content: 'Answer How many times did you order products on our website', trigger: 'div.js_question-wrapper:contains("How many times did you order products on our website") input', diff --git a/addons/survey/static/tests/tours/survey_prefill.js b/addons/survey/static/tests/tours/survey_prefill.js index d93f3d96210..2872e316cf9 100644 --- a/addons/survey/static/tests/tours/survey_prefill.js +++ b/addons/survey/static/tests/tours/survey_prefill.js @@ -16,11 +16,7 @@ tour.register('test_survey_prefill', { trigger: 'div.js_question-wrapper:contains("When is your date of birth ?") input', run: 'text 05/05/1980', }, { // Question: How frequently do you buy products online ? - trigger: 'div.js_question-wrapper:contains("How frequently do you buy products online ?") select', - run: function() { - var optionID = $('option:contains("Once a week")').val(); - $('div.js_question-wrapper:contains("How frequently do you buy products online ?") select').val(optionID); - }, + trigger: 'div.js_question-wrapper:contains("How frequently do you buy products online ?") label:contains("Once a week") input', }, { // Question: How many times did you order products on our website ? trigger: 'div.js_question-wrapper:contains("How many times did you order products on our website ?") input', run: 'text 42', @@ -80,8 +76,8 @@ tour.register('test_survey_prefill', { return; } - var $selectQ3 = $('div.js_question-wrapper:contains("How frequently do you buy products online ?") select'); - if ($selectQ3.val() !== $('option:contains("Once a week")').val()) { + var $inputQ3 = $('div.js_question-wrapper:contains("How frequently do you buy products online ?") label:contains("Once a week") input'); + if (!$inputQ3.is(':checked')) { return; } diff --git a/addons/survey/tests/test_survey_ui_certification.py b/addons/survey/tests/test_survey_ui_certification.py index 8beca6113e2..da8d3b74658 100644 --- a/addons/survey/tests/test_survey_ui_certification.py +++ b/addons/survey/tests/test_survey_ui_certification.py @@ -37,7 +37,6 @@ class TestUiCertification(HttpCaseWithUserDemo): 'title': 'Do we sell Acoustic Bloc Screens?', 'sequence': 2, 'question_type': 'simple_choice', - 'display_mode': 'dropdown', 'constr_mandatory': True, 'suggested_answer_ids': [ (0, 0, { @@ -116,7 +115,6 @@ class TestUiCertification(HttpCaseWithUserDemo): 'title': 'How many versions of the Corner Desk do we have?', 'sequence': 5, 'question_type': 'simple_choice', - 'display_mode': 'dropdown', 'constr_mandatory': True, 'suggested_answer_ids': [ (0, 0, { @@ -149,7 +147,6 @@ class TestUiCertification(HttpCaseWithUserDemo): 'title': 'How much do we sell our Cable Management Box?', 'sequence': 8, 'question_type': 'simple_choice', - 'display_mode': 'dropdown', 'constr_mandatory': True, 'suggested_answer_ids': [ (0, 0, { @@ -213,7 +210,6 @@ class TestUiCertification(HttpCaseWithUserDemo): 'title': 'What do you think about our prices (not rated)?', 'sequence': 10, 'question_type': 'simple_choice', - 'display_mode': 'dropdown', 'constr_mandatory': True, 'suggested_answer_ids': [ (0, 0, { diff --git a/addons/survey/tests/test_survey_ui_feedback.py b/addons/survey/tests/test_survey_ui_feedback.py index 60ab7c5b297..1778881a409 100644 --- a/addons/survey/tests/test_survey_ui_feedback.py +++ b/addons/survey/tests/test_survey_ui_feedback.py @@ -40,7 +40,6 @@ class TestUiFeedback(HttpCaseWithUserDemo): 'title': 'How frequently do you buy products online ?', 'sequence': 4, 'question_type': 'simple_choice', - 'display_mode': 'dropdown', 'comments_allowed': True, 'comment_count_as_answer': True, 'constr_mandatory': True, diff --git a/addons/survey/views/survey_question_views.xml b/addons/survey/views/survey_question_views.xml index b505350c50c..3d8426a3bc3 100644 --- a/addons/survey/views/survey_question_views.xml +++ b/addons/survey/views/survey_question_views.xml @@ -148,9 +148,8 @@ <field name="matrix_subtype" attrs="{'invisible':[('question_type','not in',['matrix'])],'required':[('question_type','=','matrix')]}"/> </group> </group> - <group string="Display mode" attrs="{'invisible':[('question_type','not in',['simple_choice', 'multiple_choice'])]}"> - <field name="display_mode" string="Format" attrs="{'invisible':[('question_type','not in',['simple_choice'])],'required':[('question_type','=','simple_choice')]}"/> - <field name="column_nb" string="Number of columns" attrs="{'invisible':[('display_mode','=','dropdown'), ('question_type','=','simple_choice')]}"/> + <group string="Display" attrs="{'invisible':[('question_type','not in',['simple_choice', 'multiple_choice'])]}"> + <field name="column_nb" string="Number of columns"/> </group> <group string="Allow Comments" attrs="{'invisible':[('question_type','not in',['simple_choice','multiple_choice', 'matrix'])]}"> <field name='comments_allowed' /> diff --git a/addons/survey/views/survey_templates.xml b/addons/survey/views/survey_templates.xml index 62c5f54d648..c0a61477231 100644 --- a/addons/survey/views/survey_templates.xml +++ b/addons/survey/views/survey_templates.xml @@ -234,35 +234,7 @@ <template id="question_simple_choice" name="Question: simple choice"> <t t-set="answer_line" t-value="answer_lines.filtered(lambda line: line.suggested_answer_id)"/> <t t-set="comment_line" t-value="answer_lines.filtered(lambda line: line.value_char_box)"/> - <div t-if="question.display_mode == 'dropdown'" class="o_survey_form_choice o_survey_question_simple_choice_dropdown row" - t-att-data-name="question.id" - data-question-type="simple_choice_dropdown"> - <div class="col-lg-12"> - <select class="form-control o_survey_form_choice_item"> - <option disabled="1" selected="1" value="" - t-att-selected="not answer_line and (not comment_line or not question.comment_count_as_answer) and 'selected' or None">Choose...</option> - <t t-foreach='question.suggested_answer_ids' t-as='label'> - <option t-att-value='label.id' - t-att-selected="answer_line and answer_line.suggested_answer_id == label and 'selected' or None"><t t-esc='label.value'/></option> - </t> - <t t-if='question.comments_allowed and question.comment_count_as_answer'> - <option class="o_survey_js_form_other_comment" value="-1" - t-att-selected="comment_line and question.comment_count_as_answer and 'selected' or None"> - <span t-esc="question.comments_message"/> - </option> - </t> - </select> - </div> - <div t-if='question.comments_allowed and question.comment_count_as_answer' class="col-lg-6"> - <textarea type="text" class="form-control" - t-attf-class="form-control #{'' if comment_line else 'd-none'}"><t t-esc="comment_line.value_char_box if comment_line else ''"/></textarea> - </div> - <div t-if='question.comments_allowed and not question.comment_count_as_answer' class="col-lg-12 mt16"> - <span t-field="question.comments_message"/> - <textarea type="text" class="form-control o_survey_comment"><t t-esc="comment_line.value_char_box if comment_line else ''"/></textarea> - </div> - </div> - <div t-if="question.display_mode == 'columns'" class="row o_survey_form_choice o_survey_question_simple_choice_radio" + <div class="row o_survey_form_choice" t-att-data-name="question.id" data-question-type="simple_choice_radio"> <div t-foreach='question.suggested_answer_ids' t-as='label' t-attf-class="col-lg-#{question.column_nb}"> diff --git a/addons/test_website_slides_full/tests/test_ui_wslides.py b/addons/test_website_slides_full/tests/test_ui_wslides.py index 8be0d563438..e8b45d55d7e 100644 --- a/addons/test_website_slides_full/tests/test_ui_wslides.py +++ b/addons/test_website_slides_full/tests/test_ui_wslides.py @@ -74,7 +74,6 @@ class TestUi(TestUICommon): 'title': 'What type of wood is the best for furniture?', 'sequence': 2, 'question_type': 'simple_choice', - 'display_mode': 'dropdown', 'constr_mandatory': True, 'suggested_answer_ids': [ (0, 0, { diff --git a/addons/website_slides_survey/data/survey_demo.xml b/addons/website_slides_survey/data/survey_demo.xml index 4ddcdfda3c1..c6ea5100636 100644 --- a/addons/website_slides_survey/data/survey_demo.xml +++ b/addons/website_slides_survey/data/survey_demo.xml @@ -30,7 +30,6 @@ <field name="sequence">2</field> <field name="title">What type of wood is the best for furniture?</field> <field name="question_type">simple_choice</field> - <field name="display_mode">dropdown</field> <field name="constr_mandatory" eval="True" /> </record> <record model="survey.question.answer" id="furniture_certification_page_1_question_1_choice_1"> |
