diff --git a/sh_survey_all_in_one/README.md b/sh_survey_all_in_one/README.md new file mode 100644 index 0000000..3dcd1d0 --- /dev/null +++ b/sh_survey_all_in_one/README.md @@ -0,0 +1,22 @@ +About +============ +A survey is a method to collect data from various people to gain information on different topics. The survey can be useful for multiple purposes. We have created this app to make odoo survey module more useful. Our module provides survey with many addition fields options and different theme styles. We provide 5 unique theme styles for survey so you can use different theme for different survey. You can create attractive and clean survey forms with no effort so you can easily create survey using this module. We provide 20+ additional fields for survey. + +Installation +============ +1) Copy module files to addon folder. +2) Restart odoo service (sudo service odoo-server restart). +3) Go to your odoo instance and open apps (make sure to activate debug mode). +4) click on update app list. +5) search module name and hit install button. + +Any Problem with module? +===================================== +Please create your ticket here https://softhealer.com/support + +Softhealer Technologies Doubt/Inquiry/Sales/Customization Team +===================================== +Skype: live:softhealertechnologies +What's app: +917984575681 +E-Mail: support@softhealer.com +Website: https://softhealer.com diff --git a/sh_survey_all_in_one/__init__.py b/sh_survey_all_in_one/__init__.py new file mode 100755 index 0000000..3027e47 --- /dev/null +++ b/sh_survey_all_in_one/__init__.py @@ -0,0 +1,7 @@ +# -*- coding: utf-8 -*- +# Part of Softhealer Technologies. + +from . import sh_survmate_theme +from . import sh_survey_extra_fields +from . import sh_survey_matrix_adv +from . import sh_survey_extra_fields_adv \ No newline at end of file diff --git a/sh_survey_all_in_one/__manifest__.py b/sh_survey_all_in_one/__manifest__.py new file mode 100755 index 0000000..eae7c6b --- /dev/null +++ b/sh_survey_all_in_one/__manifest__.py @@ -0,0 +1,76 @@ +# -*- coding: utf-8 -*- +# Part of Softhealer Technologies. +{ + "name": "All In One Survey Management | Morden Survey Theme | Survey By Additional Fields | Survey Templates | Survey Matrix | Custom Survey", + "author": "Softhealer Technologies", + "website": "https://www.softhealer.com", + "support": "support@softhealer.com", + "category": "Extra Tools", + "license": "OPL-1", + "summary": "Create Awesome Survey By Email Survey By File Survey By URL Survey By Time Survey By Range Survey By Barcode Survey By QRCode Export Survey Answer XLS Latest Survey Theme Organization Survey Company Survey Creative Survey Theme Beautifull Survey Survey file upload Survey attachment upload on Survey attach file on Survey attachment upload attachment on Survey binary field Survey multi file upload Survey multi attachment on Survey attach file on Survey attachment answer Survey file upload option Survey Multi File Upload Field and upload in attachment survey theme all in one survey Odoo", + "description": """A survey is a method to collect data from various people to gain information on different topics. The survey can be useful for multiple purposes. We have created this app to make odoo survey module more useful. Our module provides survey with many addition fields options and different theme styles. We provide 5 unique theme styles for survey so you can use different theme for different survey. You can create attractive and clean survey forms with no effort so you can easily create survey using this module. We provide 20+ additional fields For Survey.""", + "version": "16.0.5", + "depends": ["survey", "website", ], + "data": [ + + "security/ir.model.access.csv", + + # Survmate + + "sh_survmate_theme/wizards/button_style_wizard_views.xml", + "sh_survmate_theme/views/survey_layout_templates.xml", + "sh_survmate_theme/views/survey_views.xml", + "sh_survmate_theme/views/survey_setting_views.xml", + "sh_survmate_theme/views/survey_question_views.xml", + "sh_survmate_theme/views/survey_question_template.xml", + "sh_survmate_theme/views/survey_question_matrix_templates.xml", + "sh_survmate_theme/data/survmate_demo.xml", + + # Survey extra fields + + 'sh_survey_extra_fields/views/survey_statistics_templates.xml', + 'sh_survey_extra_fields/views/survey_templates.xml', + 'sh_survey_extra_fields/views/survey_views.xml', + + # Survey Matrix Adv + 'sh_survey_matrix_adv/views/survey_templates.xml', + 'sh_survey_matrix_adv/views/survey_views.xml', + + # sh_survey_extra_fields_adv + 'sh_survey_extra_fields_adv/views/survey_page_fill_templates.xml', + 'sh_survey_extra_fields_adv/views/survey_templates.xml', + 'sh_survey_extra_fields_adv/views/survey_views.xml', + ], + 'assets': { + 'web.assets_frontend': [ + 'sh_survey_all_in_one/static/src/scss/extra_addons/sh_survmate_theme/button_style.scss', + 'sh_survey_all_in_one/static/src/scss/extra_addons/sh_survmate_theme/checkbox_style.scss', + 'sh_survey_all_in_one/static/src/scss/extra_addons/sh_survmate_theme/common_style.scss', + 'sh_survey_all_in_one/static/src/scss/extra_addons/sh_survmate_theme/input_style.scss', + 'sh_survey_all_in_one/static/src/scss/extra_addons/sh_survmate_theme/radio_btn.scss', + 'sh_survey_all_in_one/static/src/scss/extra_addons/sh_survmate_theme/section_style.scss', + ], + 'survey.survey_assets': [ + 'sh_survey_all_in_one/static/src/css/extra_addons/sh_survey_extra_fields/filter_multi_select.css', + 'sh_survey_all_in_one/static/src/js/extra_addons/sh_survey_extra_fields/bootstrap-multiselect.js', + 'sh_survey_all_in_one/static/src/js/extra_addons/sh_survey_extra_fields/filter-multi-select-bundle.min.js', + 'sh_survey_all_in_one/static/src/js/extra_addons/sh_survey_extra_fields/jSignature.js', + 'sh_survey_all_in_one/static/src/js/extra_addons/sh_survey_extra_fields/survey_form.js', + 'sh_survey_all_in_one/static/src/css/extra_addons/sh_survey_matrix_adv/survey.css', + 'sh_survey_all_in_one/static/src/js/extra_addons/sh_survey_matrix_adv/survey_form.js', + + # sh_survey_extra_fields_adv + 'sh_survey_all_in_one/static/src/css/extra_addons/sh_survey_extra_fields_adv/sh_survey_extra_fields_adv.css', + 'sh_survey_all_in_one/static/src/scss/extra_addons/sh_survey_extra_fields_adv/extra_field_barcode.scss', + 'sh_survey_all_in_one/static/src/js/extra_addons/sh_survey_extra_fields_adv/ZXing.js', + 'sh_survey_all_in_one/static/src/js/extra_addons/sh_survey_extra_fields_adv/survey_form.js', + 'sh_survey_all_in_one/static/src/js/extra_addons/sh_survey_extra_fields_adv/extra_field_barcode.js', + ], + }, + "images": ["static/description/background.gif", ], + "auto_install": False, + "installable": True, + "application": True, + "price": 250, + "currency": "EUR" +} diff --git a/sh_survey_all_in_one/__pycache__/__init__.cpython-310.pyc b/sh_survey_all_in_one/__pycache__/__init__.cpython-310.pyc new file mode 100644 index 0000000..5a2823f Binary files /dev/null and b/sh_survey_all_in_one/__pycache__/__init__.cpython-310.pyc differ diff --git a/sh_survey_all_in_one/doc/changelog.rst b/sh_survey_all_in_one/doc/changelog.rst new file mode 100755 index 0000000..665de3a --- /dev/null +++ b/sh_survey_all_in_one/doc/changelog.rst @@ -0,0 +1,24 @@ +v16.0.1 (Date : 14th Oct 2022) +============================= + = Initial Release + +(Date : 3rd Nov 2022) +============================= + = [fix] design changes + +v16.0.2 (Date : 27th Dec 2022) +=============================== + = [fix] background image not appreared on survey + +v16.0.3 (Date : 31th Mar 2023) +============================== + = required field warning added + +v16.0.4 (Date : 14th September 2023) +==================================== + = [FIX] An error was displayed if a date field was not answered in the matrix during submission. + = [IMP] The datetime field in the matrix design has been improved because it no longer looks like a date field. + +v16.0.5 (Date : 5th October 2023) +================================== + = [IMP] survey condition added while assign css \ No newline at end of file diff --git a/sh_survey_all_in_one/i18n/ar.po b/sh_survey_all_in_one/i18n/ar.po new file mode 100644 index 0000000..a822843 --- /dev/null +++ b/sh_survey_all_in_one/i18n/ar.po @@ -0,0 +1,841 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * sh_survey_all_in_one +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 15.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2022-06-28 07:30+0000\n" +"PO-Revision-Date: 2022-06-28 07:30+0000\n" +"Last-Translator: \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: \n" + +#. module: sh_survey_all_in_one +#: model_terms:ir.ui.view,arch_db:sh_survey_all_in_one.tmpl_sh_textbox_for_pattern +msgid "#{question.validation_sh_textbox_placeholder}" +msgstr "#{question.validation_sh_textbox_placeholder}" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_question__sh_survmate_theme_grid_type__10 +msgid "10" +msgstr "10" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_question__sh_survmate_theme_grid_type__11 +msgid "11" +msgstr "11" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_question__sh_survmate_theme_grid_type__12 +msgid "12" +msgstr "12" + +#. module: sh_survey_all_in_one +#: model_terms:ir.ui.view,arch_db:sh_survey_all_in_one.sh_survey_extra_fields_survey_que_form_view +msgid "18:00" +msgstr "18:00" + +#. module: sh_survey_all_in_one +#: model_terms:ir.ui.view,arch_db:sh_survey_all_in_one.sh_survey_extra_fields_survey_que_form_view +msgid "20" +msgstr "20" + +#. module: sh_survey_all_in_one +#: model_terms:ir.ui.view,arch_db:sh_survey_all_in_one.sh_survey_extra_fields_survey_que_form_view +msgid "2018-03" +msgstr "2018-03" + +#. module: sh_survey_all_in_one +#: model_terms:ir.ui.view,arch_db:sh_survey_all_in_one.sh_survey_extra_fields_survey_que_form_view +msgid "2018-05" +msgstr "2018-05" + +#. module: sh_survey_all_in_one +#: model_terms:ir.ui.view,arch_db:sh_survey_all_in_one.sh_survey_extra_fields_survey_que_form_view +msgid "2018-W18" +msgstr "2018-W18" + +#. module: sh_survey_all_in_one +#: model_terms:ir.ui.view,arch_db:sh_survey_all_in_one.sh_survey_extra_fields_survey_que_form_view +msgid "2018-W26" +msgstr "2018-W26" + +#. module: sh_survey_all_in_one +#: model_terms:ir.ui.view,arch_db:sh_survey_all_in_one.sh_survey_extra_fields_survey_que_form_view +msgid "60 (In seconds)" +msgstr "60 (في ثوان)" + +#. module: sh_survey_all_in_one +#: model_terms:ir.ui.view,arch_db:sh_survey_all_in_one.sh_survey_extra_fields_survey_que_form_view +msgid "9:00" +msgstr "9:00" + +#. module: sh_survey_all_in_one +#: model_terms:ir.ui.view,arch_db:sh_survey_all_in_one.survey_page_fill +msgid "" +"Result:\n" +" " +msgstr "" +"نتيجة:\n" +" " + +#. module: sh_survey_all_in_one +#: model_terms:ir.ui.view,arch_db:sh_survey_all_in_one.survey_page_fill +msgid "Camera" +msgstr "آلة تصوير" + +#. module: sh_survey_all_in_one +#: code:addons/sh_survey_all_in_one/sh_survey_matrix_adv/models/survey.py:0 +#, python-format +msgid "A question is either skipped, either answered. Not both." +msgstr "يتم تخطي سؤال إما ، إما الإجابة. ليس كليهما." + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_user_input_line__value_ans_sh_address +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_question__question_type__que_sh_address +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_user_input_line__answer_type__ans_sh_address +msgid "Address" +msgstr "تبوك" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_sh_survmate_settings__sh_survmate_answer_color +msgid "Answer Color" +msgstr "لون الإجابة" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_sh_survmate_settings__sh_survmate_section_answer_text_color +msgid "Answer Text Color" +msgstr "إجابة لون النص" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_user_input_line__answer_type +msgid "Answer Type" +msgstr "نوع الإجابة" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_sh_survmate_settings__sh_survmate_bg_color +msgid "Background Color" +msgstr "لون الخلفية" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_user_input_line__value_ans_sh_barcode +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_question__question_type__que_sh_barcode +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_question_answer__sh_value_type__que_sh_barcode +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_user_input_line__answer_type__ans_sh_barcode +msgid "Barcode" +msgstr "الرمز الشريطي" + +#. module: sh_survey_all_in_one +#: model_terms:ir.ui.view,arch_db:sh_survey_all_in_one.survey_page_fill +msgid "Barcode Scanner" +msgstr "ماسح الباركود" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_sh_survmate_settings__sh_survmate_button_style +msgid "Button Style" +msgstr "نمط زر" + +#. module: sh_survey_all_in_one +#: model_terms:ir.ui.view,arch_db:sh_survey_all_in_one.sh_survmate_theme_button_style_wizard_view +msgid "Cancel" +msgstr "يلغي" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_sh_survmate_settings__sh_survmate_checkbox_style +msgid "Checkbox Style" +msgstr "نمط مربع الاختيار" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_question_answer__sh_value_type +msgid "Choices Type" +msgstr "نوع الخيارات" + +#. module: sh_survey_all_in_one +#: model_terms:ir.ui.view,arch_db:sh_survey_all_in_one.tmpl_sh_address +msgid "City" +msgstr "مدينة" + +#. module: sh_survey_all_in_one +#: model_terms:ir.ui.view,arch_db:sh_survey_all_in_one.tmpl_sh_signature +msgid "Clear" +msgstr "صافي" + +#. module: sh_survey_all_in_one +#: model_terms:ir.ui.view,arch_db:sh_survey_all_in_one.matrix +#: model_terms:ir.ui.view,arch_db:sh_survey_all_in_one.tmpl_sh_file_print +msgid "Click here to download file" +msgstr "انقر هنا لتنزيل الملف" + +#. module: sh_survey_all_in_one +#: model_terms:ir.ui.view,arch_db:sh_survey_all_in_one.survey_page_fill +msgid "Close" +msgstr "قريب" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_user_input_line__value_ans_sh_color +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_question__question_type__que_sh_color +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_question_answer__sh_value_type__que_sh_color +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_user_input_line__answer_type__ans_sh_color +msgid "Color" +msgstr "اللون" + +#. module: sh_survey_all_in_one +#: model_terms:ir.ui.view,arch_db:sh_survey_all_in_one.sh_survmate_theme_survey_settings_form +msgid "Colors" +msgstr "الألوان" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_user_input_line__value_ans_sh_country_id +#: model_terms:ir.ui.view,arch_db:sh_survey_all_in_one.tmpl_sh_address +msgid "Country" +msgstr "دولة" + +#. module: sh_survey_all_in_one +#: model_terms:ir.ui.view,arch_db:sh_survey_all_in_one.tmpl_sh_address +msgid "Country..." +msgstr "دولة..." + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_sh_survmate_settings__create_uid +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_sh_survmate_theme_button_design_wizard__create_uid +msgid "Created by" +msgstr "انشأ من قبل" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_sh_survmate_settings__create_date +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_sh_survmate_theme_button_design_wizard__create_date +msgid "Created on" +msgstr "تم إنشاؤها على" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_question__matrix_subtype__sh_custom_matrix +msgid "Custom Matrix" +msgstr "مصفوفة مخصصة" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_question_answer__sh_value_type__date +msgid "Date" +msgstr "تاريخ" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_question_answer__sh_value_type__datetime +msgid "Datetime" +msgstr "DateTime" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_sh_survmate_settings__display_name +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_sh_survmate_theme_button_design_wizard__display_name +msgid "Display Name" +msgstr "اسم العرض" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_user_input_line__value_ans_sh_email +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_question__question_type__que_sh_email +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_question_answer__sh_value_type__que_sh_email +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_user_input_line__answer_type__ans_sh_email +msgid "E-mail" +msgstr "البريد الإلكتروني" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_user_input_line__value_ans_sh_file +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_question__question_type__que_sh_file +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_question_answer__sh_value_type__que_sh_file +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_user_input_line__answer_type__ans_sh_file +msgid "File" +msgstr "ملف" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_user_input_line__value_ans_sh_file_fname +msgid "File Name" +msgstr "اسم الملف" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_question__sh_survmate_theme_grid_type +msgid "Grid" +msgstr "جريد" + +#. module: sh_survey_all_in_one +#: model:ir.model,name:sh_survey_all_in_one.model_ir_http +msgid "HTTP Routing" +msgstr "HTTP التوجيه" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_sh_survmate_settings__id +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_sh_survmate_theme_button_design_wizard__id +msgid "ID" +msgstr "بطاقة تعريف" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_user_input_line__access_token +msgid "Identification token" +msgstr "الرمز المميز للهوية" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_sh_survmate_theme_button_design_wizard__img_src +msgid "Image Src" +msgstr "صورة SRC" + +#. module: sh_survey_all_in_one +#: model:ir.model,name:sh_survey_all_in_one.model_survey_question +msgid "Inherit Survey Question for extra fields" +msgstr "مسألة استقصاء وراثة للحقول الإضافية" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_sh_survmate_settings__sh_survmate_input_style +msgid "Input Style" +msgstr "نمط الإدخال" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_question__validation_is_sh_textbox_pattern +msgid "Input must be in specified pattern" +msgstr "يجب أن يكون المدخلات في نمط محدد" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_survey__sh_is_time_fixed +msgid "Is Fixed Timer Position?" +msgstr "هل وضع مؤقت ثابت؟" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_sh_survmate_settings____last_update +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_sh_survmate_theme_button_design_wizard____last_update +msgid "Last Modified on" +msgstr "آخر تعديل على" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_sh_survmate_settings__write_uid +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_sh_survmate_theme_button_design_wizard__write_uid +msgid "Last Updated by" +msgstr "آخر تحديث بواسطة" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_sh_survmate_settings__write_date +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_sh_survmate_theme_button_design_wizard__write_date +msgid "Last Updated on" +msgstr "آخر تحديث على" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_user_input_line__value_sh_location_latitude +msgid "Latitude" +msgstr "خط العرض" + +#. module: sh_survey_all_in_one +#: model_terms:ir.ui.view,arch_db:sh_survey_all_in_one.sh_survmate_theme_survey_question_form_inherit +msgid "Layout" +msgstr "تَخطِيط" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_user_input_line__value_ans_sh_location +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_question__question_type__que_sh_location +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_user_input_line__answer_type__ans_sh_location +msgid "Location" +msgstr "موقع" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_user_input_line__value_sh_location_longitude +msgid "Longitude" +msgstr "خط الطول" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_user_input_line__value_ans_sh_many2many +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_question__question_type__que_sh_many2many +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_user_input_line__answer_type__ans_sh_many2many +msgid "Many2many" +msgstr "Many2Many" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_user_input_line__value_ans_sh_many2one +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_question__question_type__que_sh_many2one +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_user_input_line__answer_type__ans_sh_many2one +msgid "Many2one" +msgstr "quant2one" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_question__matrix_subtype +msgid "Matrix Type" +msgstr "نوع المصفوفة" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_question_answer__sh_matrix_range_max +msgid "Maximum" +msgstr "أقصى" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_question__validation_sh_month_max +msgid "Maximum Month" +msgstr "أقصى شهر" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_question__validation_sh_range_max +msgid "Maximum Range" +msgstr "أقصى مدى" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_question__validation_sh_time_max +msgid "Maximum Time" +msgstr "الحد الأقصى للوقت" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_question__validation_sh_week_max +msgid "Maximum Week" +msgstr "أقصى أسبوع" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_question_answer__sh_matrix_range_min +msgid "Minimum" +msgstr "الحد الأدنى" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_question__validation_sh_month_min +msgid "Minimum Month" +msgstr "الحد الأدنى للشهر" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_question__validation_sh_range_min +msgid "Minimum Range" +msgstr "الحد الأدنى النطاق" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_question__validation_sh_time_min +msgid "Minimum Time" +msgstr "الحد الأدنى من الوقت" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_question__validation_sh_week_min +msgid "Minimum Week" +msgstr "أدنى أسبوع" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_question__que_sh_many2many_model_id +msgid "Model" +msgstr "نموذج" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_question__que_sh_many2one_model_id +msgid "Model " +msgstr "نموذج" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_user_input_line__value_ans_sh_month +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_question__question_type__que_sh_month +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_question_answer__sh_value_type__que_sh_month +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_user_input_line__answer_type__ans_sh_month +msgid "Month" +msgstr "شهر" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_question__validation_sh_month_step +msgid "Month Step" +msgstr "خطوة الشهر" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_question_answer__sh_value_type__free_text +msgid "Multiple Lines Text Box" +msgstr "مربع نص خطوط متعددة" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_sh_survmate_settings__name +msgid "Name" +msgstr "اسم" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_question_answer__sh_value_type__numerical_box +msgid "Numerical Value" +msgstr "القيمة العددية" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_user_input_line__value_ans_sh_password +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_question__question_type__que_sh_password +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_question_answer__sh_value_type__que_sh_password +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_user_input_line__answer_type__ans_sh_password +msgid "Password" +msgstr "كلمة المرور" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_question__validation_sh_password_maxlen +msgid "Password Maximum Length" +msgstr "كلمة مرور الحد الأقصى" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_question__validation_sh_password_minlen +msgid "Password Minimum Length" +msgstr "الحد الأدنى لطول كلمة المرور" + +#. module: sh_survey_all_in_one +#: model_terms:ir.ui.view,arch_db:sh_survey_all_in_one.sh_survmate_theme_survey_settings_form +msgid "Preview" +msgstr "معاينة" + +#. module: sh_survey_all_in_one +#: code:addons/sh_survey_all_in_one/sh_survmate_theme/models/survey.py:0 +#, python-format +msgid "Preview Style" +msgstr "نمط المعاينة" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_sh_survmate_settings__sh_survmate_theme_primary_color +msgid "Primary Color" +msgstr "لون أصلي" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_user_input_line__value_ans_sh_qrcode +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_question__question_type__que_sh_qrcode +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_question_answer__sh_value_type__que_sh_qrcode +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_user_input_line__answer_type__ans_sh_qrcode +msgid "QR Code" +msgstr "رمز الاستجابة السريعة" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_sh_survmate_settings__sh_survmate_question_color +msgid "Question Color" +msgstr "لون أسئلة" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_question__question_type +msgid "Question Type" +msgstr "نوع السؤال" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_sh_survmate_settings__sh_survmate_radio_button_style +msgid "Radio Button Style" +msgstr "نمط زر الراديو" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_user_input_line__value_ans_sh_range +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_question__question_type__que_sh_range +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_question_answer__sh_value_type__que_sh_range +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_user_input_line__answer_type__ans_sh_range +msgid "Range" +msgstr "نطاق" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_question__validation_sh_range_step +msgid "Range Step" +msgstr "خطوة المدى" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_sh_survmate_settings__sh_survmate_theme_secondary_color +msgid "Secondary Color" +msgstr "اللون الثانوي" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_sh_survmate_settings__sh_survmate_section_title_color +msgid "Section Background Color" +msgstr "لون خلفية القسم" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_sh_survmate_settings__sh_survmate_section_title_font_color +msgid "Section Font Color" +msgstr "لون الخط" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_sh_survmate_settings__sh_survmate_section_style +msgid "Section Style" +msgstr "نمط القسم" + +#. module: sh_survey_all_in_one +#: model_terms:ir.ui.view,arch_db:sh_survey_all_in_one.tmpl_sh_many2one +msgid "Select..." +msgstr "يختار..." + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_sh_survmate_settings__sh_survmate_show_bg_color +msgid "Show Background Color" +msgstr "إظهار لون الخلفية" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_question__sh_is_show_city +msgid "Show City Field?" +msgstr "عرض المدينة؟" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_question__sh_is_show_country_id +msgid "Show Country Field?" +msgstr "إظهار حقل البلد؟" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_question__sh_is_show_state_id +msgid "Show State Field?" +msgstr "إظهار حقل الدولة؟" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_question__sh_is_show_street +msgid "Show Street Field?" +msgstr "أظهر حقل الشارع؟" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_question__sh_is_show_street2 +msgid "Show Street2 Field?" +msgstr "إظهار حقل Street2؟" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_question__sh_is_show_zip +msgid "Show Zip Field?" +msgstr "عرض zip Field؟" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_user_input_line__value_ans_sh_signature +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_question__question_type__que_sh_signature +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_user_input_line__answer_type__ans_sh_signature +msgid "Signature" +msgstr "التوقيع" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_user_input_line__value_ans_sh_signature_src +msgid "Signature src" +msgstr "توقيع SRC" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_question_answer__sh_value_type__textbox +msgid "Single Line Text Box" +msgstr "مربع نص سطر واحد" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_user_input_line__value_ans_sh_state_id +msgid "State" +msgstr "حالة" + +#. module: sh_survey_all_in_one +#: model_terms:ir.ui.view,arch_db:sh_survey_all_in_one.tmpl_sh_address +msgid "State / Province" +msgstr "الدولة / المقاطعة" + +#. module: sh_survey_all_in_one +#: model_terms:ir.ui.view,arch_db:sh_survey_all_in_one.tmpl_sh_address +msgid "State / Province..." +msgstr "الدولة / المقاطعة ..." + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_question_answer__sh_matrix_range_step +msgid "Step" +msgstr "خطوة" + +#. module: sh_survey_all_in_one +#: model_terms:ir.ui.view,arch_db:sh_survey_all_in_one.tmpl_sh_address +msgid "Street 2" +msgstr "الشارع 2" + +#. module: sh_survey_all_in_one +#: model_terms:ir.ui.view,arch_db:sh_survey_all_in_one.tmpl_sh_address +msgid "Street and Number" +msgstr "Street والرقم " + +#. module: sh_survey_all_in_one +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__sh_survmate_settings__sh_survmate_button_style__style_1 +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__sh_survmate_settings__sh_survmate_checkbox_style__style_1 +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__sh_survmate_settings__sh_survmate_input_style__style_1 +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__sh_survmate_settings__sh_survmate_radio_button_style__style_1 +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__sh_survmate_settings__sh_survmate_section_style__style_1 +msgid "Style 1" +msgstr "نمط 1" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__sh_survmate_settings__sh_survmate_button_style__style_2 +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__sh_survmate_settings__sh_survmate_checkbox_style__style_2 +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__sh_survmate_settings__sh_survmate_input_style__style_2 +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__sh_survmate_settings__sh_survmate_radio_button_style__style_2 +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__sh_survmate_settings__sh_survmate_section_style__style_2 +msgid "Style 2" +msgstr "النمط 2" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__sh_survmate_settings__sh_survmate_button_style__style_3 +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__sh_survmate_settings__sh_survmate_checkbox_style__style_3 +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__sh_survmate_settings__sh_survmate_input_style__style_3 +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__sh_survmate_settings__sh_survmate_radio_button_style__style_3 +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__sh_survmate_settings__sh_survmate_section_style__style_3 +msgid "Style 3" +msgstr "النمط 3" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__sh_survmate_settings__sh_survmate_button_style__style_4 +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__sh_survmate_settings__sh_survmate_checkbox_style__style_4 +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__sh_survmate_settings__sh_survmate_input_style__style_4 +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__sh_survmate_settings__sh_survmate_radio_button_style__style_4 +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__sh_survmate_settings__sh_survmate_section_style__style_4 +msgid "Style 4" +msgstr "النمط 4" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__sh_survmate_settings__sh_survmate_button_style__style_5 +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__sh_survmate_settings__sh_survmate_checkbox_style__style_5 +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__sh_survmate_settings__sh_survmate_input_style__style_5 +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__sh_survmate_settings__sh_survmate_radio_button_style__style_5 +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__sh_survmate_settings__sh_survmate_section_style__style_5 +msgid "Style 5" +msgstr "النمط 5" + +#. module: sh_survey_all_in_one +#: model_terms:ir.ui.view,arch_db:sh_survey_all_in_one.sh_survmate_theme_survey_settings_form +msgid "Styles" +msgstr "أنماط" + +#. module: sh_survey_all_in_one +#: model:ir.model,name:sh_survey_all_in_one.model_survey_survey +msgid "Survey" +msgstr "الدراسة الاستقصائية" + +#. module: sh_survey_all_in_one +#: model:ir.model,name:sh_survey_all_in_one.model_survey_question_answer +msgid "Survey Label" +msgstr "تسمية المسح" + +#. module: sh_survey_all_in_one +#: model:ir.model,name:sh_survey_all_in_one.model_survey_user_input_line +msgid "Survey User Input Line for extra fields" +msgstr "خط إدخال مستخدم المسح لحقول إضافية" + +#. module: sh_survey_all_in_one +#: model:ir.model,name:sh_survey_all_in_one.model_survey_user_input +msgid "Survey User Input for custom matrix" +msgstr "استطلاع إدخال مستخدم للمصفوفة المخصصة" + +#. module: sh_survey_all_in_one +#: model:ir.actions.act_window,name:sh_survey_all_in_one.sh_survmate_theme_survey_settings_action +#: model:ir.model,name:sh_survey_all_in_one.model_sh_survmate_settings +#: model:ir.ui.menu,name:sh_survey_all_in_one.sh_survmate_theme_survey_settings_menu +msgid "Survmate Settings" +msgstr "إعدادات الناجين" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_survey__sh_survmate_settings_id +#: model_terms:ir.ui.view,arch_db:sh_survey_all_in_one.sh_survmate_theme_survey_form_inherit +msgid "Survmate Theme" +msgstr "موضوع الناجين" + +#. module: sh_survey_all_in_one +#: model:ir.model,name:sh_survey_all_in_one.model_sh_survmate_theme_button_design_wizard +msgid "Survmate Theme Button Design" +msgstr "تصميم زر الناجين" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_question__validation_sh_textbox_pattern +msgid "Textbox Pattern" +msgstr "نمط مربع النص" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_question__validation_sh_textbox_placeholder +msgid "Textbox Placeholder" +msgstr "نص مربع النص" + +#. module: sh_survey_all_in_one +#: model_terms:ir.ui.view,arch_db:sh_survey_all_in_one.sh_survmate_theme_button_style_wizard_view +msgid "Theme Preview" +msgstr "معاينة الموضوع" + +#. module: sh_survey_all_in_one +#. openerp-web +#: code:addons/sh_survey_all_in_one/static/src/js/extra_addons/sh_survey_extra_fields/survey_form.js:0 +#, python-format +msgid "This answer must be an URL." +msgstr "يجب أن تكون هذه الإجابة عنوان URL." + +#. module: sh_survey_all_in_one +#. openerp-web +#: code:addons/sh_survey_all_in_one/static/src/js/extra_addons/sh_survey_extra_fields/survey_form.js:0 +#, python-format +msgid "This answer must be an email address." +msgstr "يجب أن تكون هذه الإجابة عنوان بريد إلكتروني." + +#. module: sh_survey_all_in_one +#. openerp-web +#: code:addons/sh_survey_all_in_one/static/src/js/extra_addons/sh_survey_extra_fields/survey_form.js:0 +#, python-format +msgid "This is not a date" +msgstr "هذا ليس موعدًا" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_user_input_line__value_ans_sh_time +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_question__question_type__que_sh_time +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_question_answer__sh_value_type__que_sh_time +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_user_input_line__answer_type__ans_sh_time +msgid "Time" +msgstr "زمن" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_question__validation_sh_time_step +msgid "Time Step" +msgstr "خطوة زمنية" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_user_input_line__value_ans_sh_url +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_question__question_type__que_sh_url +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_question_answer__sh_value_type__que_sh_url +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_user_input_line__answer_type__ans_sh_url +msgid "URL" +msgstr "عنوان URL" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_user_input_line__value_ans_sh_city +msgid "Value Ans Sh City" +msgstr "قيمة ANS SH CITY" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_user_input_line__value_ans_sh_street +msgid "Value Ans Sh Street" +msgstr "قيمة الجواب شارع شارع" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_user_input_line__value_ans_sh_street2 +msgid "Value Ans Sh Street2" +msgstr "القيمة Ans SH Street2" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_user_input_line__value_ans_sh_zip +msgid "Value Ans Sh Zip" +msgstr "قيمة الجواب sh zip" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_user_input_line__value_ans_sh_week +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_question__question_type__que_sh_week +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_question_answer__sh_value_type__que_sh_week +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_user_input_line__answer_type__ans_sh_week +msgid "Week" +msgstr "أسبوع" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_question__validation_sh_week_step +msgid "Week Step" +msgstr "خطوة الأسبوع" + +#. module: sh_survey_all_in_one +#: model_terms:ir.ui.view,arch_db:sh_survey_all_in_one.tmpl_sh_address +msgid "Zip Code" +msgstr "الرمز البريدي" + +#. module: sh_survey_all_in_one +#: model_terms:ir.ui.view,arch_db:sh_survey_all_in_one.sh_survey_extra_fields_survey_que_form_view +msgid "[0-9]{4}" +msgstr "[0-9] {4}" + +#. module: sh_survey_all_in_one +#: model_terms:ir.ui.view,arch_db:sh_survey_all_in_one.sh_survmate_theme_survey_settings_form +msgid "e.g. Theme Settings for Survey A" +msgstr "على سبيل المثال إعدادات الموضوع للمسح أ" + +#. module: sh_survey_all_in_one +#: model_terms:ir.ui.view,arch_db:sh_survey_all_in_one.matrix +#: model_terms:ir.ui.view,arch_db:sh_survey_all_in_one.tmpl_sh_email +msgid "example@domain.com" +msgstr "example@domain.com" + +#. module: sh_survey_all_in_one +#: model_terms:ir.ui.view,arch_db:sh_survey_all_in_one.matrix +#: model_terms:ir.ui.view,arch_db:sh_survey_all_in_one.tmpl_sh_time +#: model_terms:ir.ui.view,arch_db:sh_survey_all_in_one.tmpl_sh_url +msgid "https://example.com" +msgstr "https://example.com" + +#. module: sh_survey_all_in_one +#: model_terms:ir.ui.view,arch_db:sh_survey_all_in_one.sh_survey_extra_fields_survey_que_form_view +msgid "nnnn" +msgstr "nnnn" + +#. module: sh_survey_all_in_one +#: model_terms:ir.ui.view,arch_db:sh_survey_all_in_one.sh_survmate_theme_button_style_wizard_view +msgid "preview image" +msgstr "صورة المعاينة" diff --git a/sh_survey_all_in_one/i18n/de.po b/sh_survey_all_in_one/i18n/de.po new file mode 100644 index 0000000..96bb74b --- /dev/null +++ b/sh_survey_all_in_one/i18n/de.po @@ -0,0 +1,841 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * sh_survey_all_in_one +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 15.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2022-06-28 07:30+0000\n" +"PO-Revision-Date: 2022-06-28 07:30+0000\n" +"Last-Translator: \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: \n" + +#. module: sh_survey_all_in_one +#: model_terms:ir.ui.view,arch_db:sh_survey_all_in_one.tmpl_sh_textbox_for_pattern +msgid "#{question.validation_sh_textbox_placeholder}" +msgstr "#{question.validation_sh_textbox_placeholder}" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_question__sh_survmate_theme_grid_type__10 +msgid "10" +msgstr "10" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_question__sh_survmate_theme_grid_type__11 +msgid "11" +msgstr "11" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_question__sh_survmate_theme_grid_type__12 +msgid "12" +msgstr "12" + +#. module: sh_survey_all_in_one +#: model_terms:ir.ui.view,arch_db:sh_survey_all_in_one.sh_survey_extra_fields_survey_que_form_view +msgid "18:00" +msgstr "18:00" + +#. module: sh_survey_all_in_one +#: model_terms:ir.ui.view,arch_db:sh_survey_all_in_one.sh_survey_extra_fields_survey_que_form_view +msgid "20" +msgstr "20" + +#. module: sh_survey_all_in_one +#: model_terms:ir.ui.view,arch_db:sh_survey_all_in_one.sh_survey_extra_fields_survey_que_form_view +msgid "2018-03" +msgstr "2018-03" + +#. module: sh_survey_all_in_one +#: model_terms:ir.ui.view,arch_db:sh_survey_all_in_one.sh_survey_extra_fields_survey_que_form_view +msgid "2018-05" +msgstr "2018-05" + +#. module: sh_survey_all_in_one +#: model_terms:ir.ui.view,arch_db:sh_survey_all_in_one.sh_survey_extra_fields_survey_que_form_view +msgid "2018-W18" +msgstr "2018-W18" + +#. module: sh_survey_all_in_one +#: model_terms:ir.ui.view,arch_db:sh_survey_all_in_one.sh_survey_extra_fields_survey_que_form_view +msgid "2018-W26" +msgstr "2018-W26" + +#. module: sh_survey_all_in_one +#: model_terms:ir.ui.view,arch_db:sh_survey_all_in_one.sh_survey_extra_fields_survey_que_form_view +msgid "60 (In seconds)" +msgstr "60 (In seconds)" + +#. module: sh_survey_all_in_one +#: model_terms:ir.ui.view,arch_db:sh_survey_all_in_one.sh_survey_extra_fields_survey_que_form_view +msgid "9:00" +msgstr "9:00" + +#. module: sh_survey_all_in_one +#: model_terms:ir.ui.view,arch_db:sh_survey_all_in_one.survey_page_fill +msgid "" +"Result:\n" +" " +msgstr "" +"Ergebnis:\n" +" " + +#. module: sh_survey_all_in_one +#: model_terms:ir.ui.view,arch_db:sh_survey_all_in_one.survey_page_fill +msgid "Camera" +msgstr "Kamera" + +#. module: sh_survey_all_in_one +#: code:addons/sh_survey_all_in_one/sh_survey_matrix_adv/models/survey.py:0 +#, python-format +msgid "A question is either skipped, either answered. Not both." +msgstr "Eine Frage wird entweder übersprungen, entweder beantwortet. Nicht beide." + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_user_input_line__value_ans_sh_address +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_question__question_type__que_sh_address +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_user_input_line__answer_type__ans_sh_address +msgid "Address" +msgstr "Adresse" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_sh_survmate_settings__sh_survmate_answer_color +msgid "Answer Color" +msgstr "Antwortfarbe" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_sh_survmate_settings__sh_survmate_section_answer_text_color +msgid "Answer Text Color" +msgstr "Beantwortung der Textfarbe" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_user_input_line__answer_type +msgid "Answer Type" +msgstr "Antworttyp" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_sh_survmate_settings__sh_survmate_bg_color +msgid "Background Color" +msgstr "Hintergrundfarbe" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_user_input_line__value_ans_sh_barcode +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_question__question_type__que_sh_barcode +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_question_answer__sh_value_type__que_sh_barcode +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_user_input_line__answer_type__ans_sh_barcode +msgid "Barcode" +msgstr "Barcode" + +#. module: sh_survey_all_in_one +#: model_terms:ir.ui.view,arch_db:sh_survey_all_in_one.survey_page_fill +msgid "Barcode Scanner" +msgstr "Barcodelesegerät" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_sh_survmate_settings__sh_survmate_button_style +msgid "Button Style" +msgstr "Knopfstil" + +#. module: sh_survey_all_in_one +#: model_terms:ir.ui.view,arch_db:sh_survey_all_in_one.sh_survmate_theme_button_style_wizard_view +msgid "Cancel" +msgstr "Absagen" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_sh_survmate_settings__sh_survmate_checkbox_style +msgid "Checkbox Style" +msgstr "Kontrollkastenstil" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_question_answer__sh_value_type +msgid "Choices Type" +msgstr "Auswahltyp" + +#. module: sh_survey_all_in_one +#: model_terms:ir.ui.view,arch_db:sh_survey_all_in_one.tmpl_sh_address +msgid "City" +msgstr "Stadt" + +#. module: sh_survey_all_in_one +#: model_terms:ir.ui.view,arch_db:sh_survey_all_in_one.tmpl_sh_signature +msgid "Clear" +msgstr "Klar" + +#. module: sh_survey_all_in_one +#: model_terms:ir.ui.view,arch_db:sh_survey_all_in_one.matrix +#: model_terms:ir.ui.view,arch_db:sh_survey_all_in_one.tmpl_sh_file_print +msgid "Click here to download file" +msgstr "Klicken Sie hier, um die Datei herunterzuladen" + +#. module: sh_survey_all_in_one +#: model_terms:ir.ui.view,arch_db:sh_survey_all_in_one.survey_page_fill +msgid "Close" +msgstr "Nah dran" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_user_input_line__value_ans_sh_color +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_question__question_type__que_sh_color +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_question_answer__sh_value_type__que_sh_color +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_user_input_line__answer_type__ans_sh_color +msgid "Color" +msgstr "Farbe" + +#. module: sh_survey_all_in_one +#: model_terms:ir.ui.view,arch_db:sh_survey_all_in_one.sh_survmate_theme_survey_settings_form +msgid "Colors" +msgstr "Farben" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_user_input_line__value_ans_sh_country_id +#: model_terms:ir.ui.view,arch_db:sh_survey_all_in_one.tmpl_sh_address +msgid "Country" +msgstr "Land" + +#. module: sh_survey_all_in_one +#: model_terms:ir.ui.view,arch_db:sh_survey_all_in_one.tmpl_sh_address +msgid "Country..." +msgstr "Land..." + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_sh_survmate_settings__create_uid +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_sh_survmate_theme_button_design_wizard__create_uid +msgid "Created by" +msgstr "Erstellt von" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_sh_survmate_settings__create_date +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_sh_survmate_theme_button_design_wizard__create_date +msgid "Created on" +msgstr "Erstellt am" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_question__matrix_subtype__sh_custom_matrix +msgid "Custom Matrix" +msgstr "Benutzerdefinierte Matrix" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_question_answer__sh_value_type__date +msgid "Date" +msgstr "Datum" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_question_answer__sh_value_type__datetime +msgid "Datetime" +msgstr "Terminzeit" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_sh_survmate_settings__display_name +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_sh_survmate_theme_button_design_wizard__display_name +msgid "Display Name" +msgstr "Anzeigename" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_user_input_line__value_ans_sh_email +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_question__question_type__que_sh_email +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_question_answer__sh_value_type__que_sh_email +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_user_input_line__answer_type__ans_sh_email +msgid "E-mail" +msgstr "Email" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_user_input_line__value_ans_sh_file +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_question__question_type__que_sh_file +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_question_answer__sh_value_type__que_sh_file +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_user_input_line__answer_type__ans_sh_file +msgid "File" +msgstr "Datei" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_user_input_line__value_ans_sh_file_fname +msgid "File Name" +msgstr "Dateiname" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_question__sh_survmate_theme_grid_type +msgid "Grid" +msgstr "Netz" + +#. module: sh_survey_all_in_one +#: model:ir.model,name:sh_survey_all_in_one.model_ir_http +msgid "HTTP Routing" +msgstr "HTTP -Routing" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_sh_survmate_settings__id +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_sh_survmate_theme_button_design_wizard__id +msgid "ID" +msgstr "ICH WÜRDE" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_user_input_line__access_token +msgid "Identification token" +msgstr "Identifikationstoken" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_sh_survmate_theme_button_design_wizard__img_src +msgid "Image Src" +msgstr "Bild SRC" + +#. module: sh_survey_all_in_one +#: model:ir.model,name:sh_survey_all_in_one.model_survey_question +msgid "Inherit Survey Question for extra fields" +msgstr "Erbefragfrage für zusätzliche Felder in Erben" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_sh_survmate_settings__sh_survmate_input_style +msgid "Input Style" +msgstr "Eingabestil" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_question__validation_is_sh_textbox_pattern +msgid "Input must be in specified pattern" +msgstr "Die Eingabe muss im angegebenen Muster sein" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_survey__sh_is_time_fixed +msgid "Is Fixed Timer Position?" +msgstr "Ist die Position der festen Timer?" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_sh_survmate_settings____last_update +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_sh_survmate_theme_button_design_wizard____last_update +msgid "Last Modified on" +msgstr "Zuletzt modifiziert auf" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_sh_survmate_settings__write_uid +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_sh_survmate_theme_button_design_wizard__write_uid +msgid "Last Updated by" +msgstr "Zuletzt aktualisiert von" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_sh_survmate_settings__write_date +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_sh_survmate_theme_button_design_wizard__write_date +msgid "Last Updated on" +msgstr "Zuletzt aktualisiert am" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_user_input_line__value_sh_location_latitude +msgid "Latitude" +msgstr "Breite" + +#. module: sh_survey_all_in_one +#: model_terms:ir.ui.view,arch_db:sh_survey_all_in_one.sh_survmate_theme_survey_question_form_inherit +msgid "Layout" +msgstr "Layout" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_user_input_line__value_ans_sh_location +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_question__question_type__que_sh_location +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_user_input_line__answer_type__ans_sh_location +msgid "Location" +msgstr "Ort" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_user_input_line__value_sh_location_longitude +msgid "Longitude" +msgstr "Längengrad" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_user_input_line__value_ans_sh_many2many +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_question__question_type__que_sh_many2many +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_user_input_line__answer_type__ans_sh_many2many +msgid "Many2many" +msgstr "Viele2Many" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_user_input_line__value_ans_sh_many2one +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_question__question_type__que_sh_many2one +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_user_input_line__answer_type__ans_sh_many2one +msgid "Many2one" +msgstr "Viele2one" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_question__matrix_subtype +msgid "Matrix Type" +msgstr "Matrixtyp" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_question_answer__sh_matrix_range_max +msgid "Maximum" +msgstr "Maximal" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_question__validation_sh_month_max +msgid "Maximum Month" +msgstr "Maximaler Monat" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_question__validation_sh_range_max +msgid "Maximum Range" +msgstr "Maximale Reichweite" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_question__validation_sh_time_max +msgid "Maximum Time" +msgstr "Höchstzeit" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_question__validation_sh_week_max +msgid "Maximum Week" +msgstr "Maximale Woche" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_question_answer__sh_matrix_range_min +msgid "Minimum" +msgstr "Minimum" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_question__validation_sh_month_min +msgid "Minimum Month" +msgstr "Mindestmonat" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_question__validation_sh_range_min +msgid "Minimum Range" +msgstr "Mindestbereich" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_question__validation_sh_time_min +msgid "Minimum Time" +msgstr "Mindestzeit" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_question__validation_sh_week_min +msgid "Minimum Week" +msgstr "Mindestwoche" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_question__que_sh_many2many_model_id +msgid "Model" +msgstr "Modell" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_question__que_sh_many2one_model_id +msgid "Model " +msgstr "Modell" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_user_input_line__value_ans_sh_month +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_question__question_type__que_sh_month +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_question_answer__sh_value_type__que_sh_month +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_user_input_line__answer_type__ans_sh_month +msgid "Month" +msgstr "Monat" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_question__validation_sh_month_step +msgid "Month Step" +msgstr "Monatschritt" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_question_answer__sh_value_type__free_text +msgid "Multiple Lines Text Box" +msgstr "Textfeld mehrere Zeilen" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_sh_survmate_settings__name +msgid "Name" +msgstr "Name" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_question_answer__sh_value_type__numerical_box +msgid "Numerical Value" +msgstr "Numerischer Wert" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_user_input_line__value_ans_sh_password +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_question__question_type__que_sh_password +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_question_answer__sh_value_type__que_sh_password +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_user_input_line__answer_type__ans_sh_password +msgid "Password" +msgstr "Passwort" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_question__validation_sh_password_maxlen +msgid "Password Maximum Length" +msgstr "Passwort Maximale Länge" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_question__validation_sh_password_minlen +msgid "Password Minimum Length" +msgstr "Passwort Mindestlänge" + +#. module: sh_survey_all_in_one +#: model_terms:ir.ui.view,arch_db:sh_survey_all_in_one.sh_survmate_theme_survey_settings_form +msgid "Preview" +msgstr "Vorschau" + +#. module: sh_survey_all_in_one +#: code:addons/sh_survey_all_in_one/sh_survmate_theme/models/survey.py:0 +#, python-format +msgid "Preview Style" +msgstr "Vorschaustil" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_sh_survmate_settings__sh_survmate_theme_primary_color +msgid "Primary Color" +msgstr "Primärfarbe" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_user_input_line__value_ans_sh_qrcode +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_question__question_type__que_sh_qrcode +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_question_answer__sh_value_type__que_sh_qrcode +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_user_input_line__answer_type__ans_sh_qrcode +msgid "QR Code" +msgstr "QR-Code" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_sh_survmate_settings__sh_survmate_question_color +msgid "Question Color" +msgstr "Frage Farbe" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_question__question_type +msgid "Question Type" +msgstr "Fragetyp" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_sh_survmate_settings__sh_survmate_radio_button_style +msgid "Radio Button Style" +msgstr "Optionsknopfstil" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_user_input_line__value_ans_sh_range +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_question__question_type__que_sh_range +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_question_answer__sh_value_type__que_sh_range +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_user_input_line__answer_type__ans_sh_range +msgid "Range" +msgstr "Bereich" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_question__validation_sh_range_step +msgid "Range Step" +msgstr "Bereichsschritt" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_sh_survmate_settings__sh_survmate_theme_secondary_color +msgid "Secondary Color" +msgstr "Sekundäre Farbe" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_sh_survmate_settings__sh_survmate_section_title_color +msgid "Section Background Color" +msgstr "Abschnitt Hintergrundfarbe" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_sh_survmate_settings__sh_survmate_section_title_font_color +msgid "Section Font Color" +msgstr "Schnitt Schriftfarbe" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_sh_survmate_settings__sh_survmate_section_style +msgid "Section Style" +msgstr "Abschnittsstil" + +#. module: sh_survey_all_in_one +#: model_terms:ir.ui.view,arch_db:sh_survey_all_in_one.tmpl_sh_many2one +msgid "Select..." +msgstr "Auswählen..." + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_sh_survmate_settings__sh_survmate_show_bg_color +msgid "Show Background Color" +msgstr "Hintergrundfarbe zeigen" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_question__sh_is_show_city +msgid "Show City Field?" +msgstr "Zeigen Sie City Field?" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_question__sh_is_show_country_id +msgid "Show Country Field?" +msgstr "Show Country Field?" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_question__sh_is_show_state_id +msgid "Show State Field?" +msgstr "Staatsfeld zeigen?" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_question__sh_is_show_street +msgid "Show Street Field?" +msgstr "Show Street Field?" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_question__sh_is_show_street2 +msgid "Show Street2 Field?" +msgstr "Show Street2 Field?" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_question__sh_is_show_zip +msgid "Show Zip Field?" +msgstr "ZIP -Feld zeigen?" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_user_input_line__value_ans_sh_signature +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_question__question_type__que_sh_signature +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_user_input_line__answer_type__ans_sh_signature +msgid "Signature" +msgstr "Unterschrift" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_user_input_line__value_ans_sh_signature_src +msgid "Signature src" +msgstr "Signatur Src" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_question_answer__sh_value_type__textbox +msgid "Single Line Text Box" +msgstr "Ein Zeilen Textfeld" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_user_input_line__value_ans_sh_state_id +msgid "State" +msgstr "Bundesland" + +#. module: sh_survey_all_in_one +#: model_terms:ir.ui.view,arch_db:sh_survey_all_in_one.tmpl_sh_address +msgid "State / Province" +msgstr "Staat / Provinz" + +#. module: sh_survey_all_in_one +#: model_terms:ir.ui.view,arch_db:sh_survey_all_in_one.tmpl_sh_address +msgid "State / Province..." +msgstr "Staat / Provinz ..." + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_question_answer__sh_matrix_range_step +msgid "Step" +msgstr "Schritt" + +#. module: sh_survey_all_in_one +#: model_terms:ir.ui.view,arch_db:sh_survey_all_in_one.tmpl_sh_address +msgid "Street 2" +msgstr "Straße Nummer 2" + +#. module: sh_survey_all_in_one +#: model_terms:ir.ui.view,arch_db:sh_survey_all_in_one.tmpl_sh_address +msgid "Street and Number" +msgstr "Street und nummer " + +#. module: sh_survey_all_in_one +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__sh_survmate_settings__sh_survmate_button_style__style_1 +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__sh_survmate_settings__sh_survmate_checkbox_style__style_1 +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__sh_survmate_settings__sh_survmate_input_style__style_1 +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__sh_survmate_settings__sh_survmate_radio_button_style__style_1 +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__sh_survmate_settings__sh_survmate_section_style__style_1 +msgid "Style 1" +msgstr "Stil 1" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__sh_survmate_settings__sh_survmate_button_style__style_2 +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__sh_survmate_settings__sh_survmate_checkbox_style__style_2 +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__sh_survmate_settings__sh_survmate_input_style__style_2 +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__sh_survmate_settings__sh_survmate_radio_button_style__style_2 +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__sh_survmate_settings__sh_survmate_section_style__style_2 +msgid "Style 2" +msgstr "Stil 2" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__sh_survmate_settings__sh_survmate_button_style__style_3 +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__sh_survmate_settings__sh_survmate_checkbox_style__style_3 +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__sh_survmate_settings__sh_survmate_input_style__style_3 +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__sh_survmate_settings__sh_survmate_radio_button_style__style_3 +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__sh_survmate_settings__sh_survmate_section_style__style_3 +msgid "Style 3" +msgstr "Stil 3" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__sh_survmate_settings__sh_survmate_button_style__style_4 +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__sh_survmate_settings__sh_survmate_checkbox_style__style_4 +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__sh_survmate_settings__sh_survmate_input_style__style_4 +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__sh_survmate_settings__sh_survmate_radio_button_style__style_4 +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__sh_survmate_settings__sh_survmate_section_style__style_4 +msgid "Style 4" +msgstr "Stil 4" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__sh_survmate_settings__sh_survmate_button_style__style_5 +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__sh_survmate_settings__sh_survmate_checkbox_style__style_5 +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__sh_survmate_settings__sh_survmate_input_style__style_5 +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__sh_survmate_settings__sh_survmate_radio_button_style__style_5 +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__sh_survmate_settings__sh_survmate_section_style__style_5 +msgid "Style 5" +msgstr "Stil 5" + +#. module: sh_survey_all_in_one +#: model_terms:ir.ui.view,arch_db:sh_survey_all_in_one.sh_survmate_theme_survey_settings_form +msgid "Styles" +msgstr "Stile" + +#. module: sh_survey_all_in_one +#: model:ir.model,name:sh_survey_all_in_one.model_survey_survey +msgid "Survey" +msgstr "Umfrage" + +#. module: sh_survey_all_in_one +#: model:ir.model,name:sh_survey_all_in_one.model_survey_question_answer +msgid "Survey Label" +msgstr "Vermessungsetikett" + +#. module: sh_survey_all_in_one +#: model:ir.model,name:sh_survey_all_in_one.model_survey_user_input_line +msgid "Survey User Input Line for extra fields" +msgstr "Umfrage der Benutzereingabezeile für zusätzliche Felder" + +#. module: sh_survey_all_in_one +#: model:ir.model,name:sh_survey_all_in_one.model_survey_user_input +msgid "Survey User Input for custom matrix" +msgstr "Umfrage der Benutzereingabe für benutzerdefinierte Matrix" + +#. module: sh_survey_all_in_one +#: model:ir.actions.act_window,name:sh_survey_all_in_one.sh_survmate_theme_survey_settings_action +#: model:ir.model,name:sh_survey_all_in_one.model_sh_survmate_settings +#: model:ir.ui.menu,name:sh_survey_all_in_one.sh_survmate_theme_survey_settings_menu +msgid "Survmate Settings" +msgstr "Einstellungen übertrieben" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_survey__sh_survmate_settings_id +#: model_terms:ir.ui.view,arch_db:sh_survey_all_in_one.sh_survmate_theme_survey_form_inherit +msgid "Survmate Theme" +msgstr "Übertriffungsthema" + +#. module: sh_survey_all_in_one +#: model:ir.model,name:sh_survey_all_in_one.model_sh_survmate_theme_button_design_wizard +msgid "Survmate Theme Button Design" +msgstr "Überwachen Sie das Design des Themas -Schaltfläche" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_question__validation_sh_textbox_pattern +msgid "Textbox Pattern" +msgstr "Textbox -Muster" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_question__validation_sh_textbox_placeholder +msgid "Textbox Placeholder" +msgstr "Textbox -Platzhalter" + +#. module: sh_survey_all_in_one +#: model_terms:ir.ui.view,arch_db:sh_survey_all_in_one.sh_survmate_theme_button_style_wizard_view +msgid "Theme Preview" +msgstr "Thema Vorschau" + +#. module: sh_survey_all_in_one +#. openerp-web +#: code:addons/sh_survey_all_in_one/static/src/js/extra_addons/sh_survey_extra_fields/survey_form.js:0 +#, python-format +msgid "This answer must be an URL." +msgstr "Diese Antwort muss eine URL sein." + +#. module: sh_survey_all_in_one +#. openerp-web +#: code:addons/sh_survey_all_in_one/static/src/js/extra_addons/sh_survey_extra_fields/survey_form.js:0 +#, python-format +msgid "This answer must be an email address." +msgstr "Diese Antwort muss eine E -Mail -Adresse sein." + +#. module: sh_survey_all_in_one +#. openerp-web +#: code:addons/sh_survey_all_in_one/static/src/js/extra_addons/sh_survey_extra_fields/survey_form.js:0 +#, python-format +msgid "This is not a date" +msgstr "Dies ist kein Datum" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_user_input_line__value_ans_sh_time +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_question__question_type__que_sh_time +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_question_answer__sh_value_type__que_sh_time +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_user_input_line__answer_type__ans_sh_time +msgid "Time" +msgstr "Zeit" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_question__validation_sh_time_step +msgid "Time Step" +msgstr "Zeitschritt" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_user_input_line__value_ans_sh_url +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_question__question_type__que_sh_url +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_question_answer__sh_value_type__que_sh_url +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_user_input_line__answer_type__ans_sh_url +msgid "URL" +msgstr "URL" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_user_input_line__value_ans_sh_city +msgid "Value Ans Sh City" +msgstr "Wert ans Sh City" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_user_input_line__value_ans_sh_street +msgid "Value Ans Sh Street" +msgstr "Wert ans Sh Street" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_user_input_line__value_ans_sh_street2 +msgid "Value Ans Sh Street2" +msgstr "Wert Ans SH Street2" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_user_input_line__value_ans_sh_zip +msgid "Value Ans Sh Zip" +msgstr "Wert Ans sh Zip" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_user_input_line__value_ans_sh_week +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_question__question_type__que_sh_week +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_question_answer__sh_value_type__que_sh_week +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_user_input_line__answer_type__ans_sh_week +msgid "Week" +msgstr "Woche" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_question__validation_sh_week_step +msgid "Week Step" +msgstr "Woche Schritt" + +#. module: sh_survey_all_in_one +#: model_terms:ir.ui.view,arch_db:sh_survey_all_in_one.tmpl_sh_address +msgid "Zip Code" +msgstr "Postleitzahl" + +#. module: sh_survey_all_in_one +#: model_terms:ir.ui.view,arch_db:sh_survey_all_in_one.sh_survey_extra_fields_survey_que_form_view +msgid "[0-9]{4}" +msgstr "[0-9] {4}" + +#. module: sh_survey_all_in_one +#: model_terms:ir.ui.view,arch_db:sh_survey_all_in_one.sh_survmate_theme_survey_settings_form +msgid "e.g. Theme Settings for Survey A" +msgstr "z.B. Themeneinstellungen für Umfrage a" + +#. module: sh_survey_all_in_one +#: model_terms:ir.ui.view,arch_db:sh_survey_all_in_one.matrix +#: model_terms:ir.ui.view,arch_db:sh_survey_all_in_one.tmpl_sh_email +msgid "example@domain.com" +msgstr "Beispiel@domain.com" + +#. module: sh_survey_all_in_one +#: model_terms:ir.ui.view,arch_db:sh_survey_all_in_one.matrix +#: model_terms:ir.ui.view,arch_db:sh_survey_all_in_one.tmpl_sh_time +#: model_terms:ir.ui.view,arch_db:sh_survey_all_in_one.tmpl_sh_url +msgid "https://example.com" +msgstr "https://example.com" + +#. module: sh_survey_all_in_one +#: model_terms:ir.ui.view,arch_db:sh_survey_all_in_one.sh_survey_extra_fields_survey_que_form_view +msgid "nnnn" +msgstr "nnnn" + +#. module: sh_survey_all_in_one +#: model_terms:ir.ui.view,arch_db:sh_survey_all_in_one.sh_survmate_theme_button_style_wizard_view +msgid "preview image" +msgstr "Vorschaubild" diff --git a/sh_survey_all_in_one/i18n/es.po b/sh_survey_all_in_one/i18n/es.po new file mode 100644 index 0000000..d48040a --- /dev/null +++ b/sh_survey_all_in_one/i18n/es.po @@ -0,0 +1,841 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * sh_survey_all_in_one +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 15.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2022-06-28 07:30+0000\n" +"PO-Revision-Date: 2022-06-28 07:30+0000\n" +"Last-Translator: \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: \n" + +#. module: sh_survey_all_in_one +#: model_terms:ir.ui.view,arch_db:sh_survey_all_in_one.tmpl_sh_textbox_for_pattern +msgid "#{question.validation_sh_textbox_placeholder}" +msgstr "#{question.validation_sh_textbox_placeholder}" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_question__sh_survmate_theme_grid_type__10 +msgid "10" +msgstr "10" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_question__sh_survmate_theme_grid_type__11 +msgid "11" +msgstr "11" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_question__sh_survmate_theme_grid_type__12 +msgid "12" +msgstr "12" + +#. module: sh_survey_all_in_one +#: model_terms:ir.ui.view,arch_db:sh_survey_all_in_one.sh_survey_extra_fields_survey_que_form_view +msgid "18:00" +msgstr "18:00" + +#. module: sh_survey_all_in_one +#: model_terms:ir.ui.view,arch_db:sh_survey_all_in_one.sh_survey_extra_fields_survey_que_form_view +msgid "20" +msgstr "20" + +#. module: sh_survey_all_in_one +#: model_terms:ir.ui.view,arch_db:sh_survey_all_in_one.sh_survey_extra_fields_survey_que_form_view +msgid "2018-03" +msgstr "2018-03" + +#. module: sh_survey_all_in_one +#: model_terms:ir.ui.view,arch_db:sh_survey_all_in_one.sh_survey_extra_fields_survey_que_form_view +msgid "2018-05" +msgstr "2018-05" + +#. module: sh_survey_all_in_one +#: model_terms:ir.ui.view,arch_db:sh_survey_all_in_one.sh_survey_extra_fields_survey_que_form_view +msgid "2018-W18" +msgstr "2018-W18" + +#. module: sh_survey_all_in_one +#: model_terms:ir.ui.view,arch_db:sh_survey_all_in_one.sh_survey_extra_fields_survey_que_form_view +msgid "2018-W26" +msgstr "2018-W26" + +#. module: sh_survey_all_in_one +#: model_terms:ir.ui.view,arch_db:sh_survey_all_in_one.sh_survey_extra_fields_survey_que_form_view +msgid "60 (In seconds)" +msgstr "60 (In seconds)" + +#. module: sh_survey_all_in_one +#: model_terms:ir.ui.view,arch_db:sh_survey_all_in_one.sh_survey_extra_fields_survey_que_form_view +msgid "9:00" +msgstr "9:00" + +#. module: sh_survey_all_in_one +#: model_terms:ir.ui.view,arch_db:sh_survey_all_in_one.survey_page_fill +msgid "" +"Result:\n" +" " +msgstr "" +"Resultado\n" +" " + +#. module: sh_survey_all_in_one +#: model_terms:ir.ui.view,arch_db:sh_survey_all_in_one.survey_page_fill +msgid "Camera" +msgstr "Cámara" + +#. module: sh_survey_all_in_one +#: code:addons/sh_survey_all_in_one/sh_survey_matrix_adv/models/survey.py:0 +#, python-format +msgid "A question is either skipped, either answered. Not both." +msgstr "Una pregunta se omite, ya sea respondida. No ambos." + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_user_input_line__value_ans_sh_address +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_question__question_type__que_sh_address +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_user_input_line__answer_type__ans_sh_address +msgid "Address" +msgstr "Dirección" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_sh_survmate_settings__sh_survmate_answer_color +msgid "Answer Color" +msgstr "Responder color" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_sh_survmate_settings__sh_survmate_section_answer_text_color +msgid "Answer Text Color" +msgstr "Responder Color de texto" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_user_input_line__answer_type +msgid "Answer Type" +msgstr "Tipo de respuesta" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_sh_survmate_settings__sh_survmate_bg_color +msgid "Background Color" +msgstr "Color de fondo" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_user_input_line__value_ans_sh_barcode +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_question__question_type__que_sh_barcode +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_question_answer__sh_value_type__que_sh_barcode +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_user_input_line__answer_type__ans_sh_barcode +msgid "Barcode" +msgstr "Código de barras" + +#. module: sh_survey_all_in_one +#: model_terms:ir.ui.view,arch_db:sh_survey_all_in_one.survey_page_fill +msgid "Barcode Scanner" +msgstr "Escáner de código de barras" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_sh_survmate_settings__sh_survmate_button_style +msgid "Button Style" +msgstr "Estilo de botón" + +#. module: sh_survey_all_in_one +#: model_terms:ir.ui.view,arch_db:sh_survey_all_in_one.sh_survmate_theme_button_style_wizard_view +msgid "Cancel" +msgstr "Cancelar" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_sh_survmate_settings__sh_survmate_checkbox_style +msgid "Checkbox Style" +msgstr "Estilo de casilla de verificación" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_question_answer__sh_value_type +msgid "Choices Type" +msgstr "Tipo de opciones" + +#. module: sh_survey_all_in_one +#: model_terms:ir.ui.view,arch_db:sh_survey_all_in_one.tmpl_sh_address +msgid "City" +msgstr "Ciudad" + +#. module: sh_survey_all_in_one +#: model_terms:ir.ui.view,arch_db:sh_survey_all_in_one.tmpl_sh_signature +msgid "Clear" +msgstr "Claro" + +#. module: sh_survey_all_in_one +#: model_terms:ir.ui.view,arch_db:sh_survey_all_in_one.matrix +#: model_terms:ir.ui.view,arch_db:sh_survey_all_in_one.tmpl_sh_file_print +msgid "Click here to download file" +msgstr "Haga clic aquí para descargar archivo" + +#. module: sh_survey_all_in_one +#: model_terms:ir.ui.view,arch_db:sh_survey_all_in_one.survey_page_fill +msgid "Close" +msgstr "Cerca" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_user_input_line__value_ans_sh_color +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_question__question_type__que_sh_color +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_question_answer__sh_value_type__que_sh_color +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_user_input_line__answer_type__ans_sh_color +msgid "Color" +msgstr "Color" + +#. module: sh_survey_all_in_one +#: model_terms:ir.ui.view,arch_db:sh_survey_all_in_one.sh_survmate_theme_survey_settings_form +msgid "Colors" +msgstr "Colores" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_user_input_line__value_ans_sh_country_id +#: model_terms:ir.ui.view,arch_db:sh_survey_all_in_one.tmpl_sh_address +msgid "Country" +msgstr "País" + +#. module: sh_survey_all_in_one +#: model_terms:ir.ui.view,arch_db:sh_survey_all_in_one.tmpl_sh_address +msgid "Country..." +msgstr "País..." + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_sh_survmate_settings__create_uid +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_sh_survmate_theme_button_design_wizard__create_uid +msgid "Created by" +msgstr "Creado por" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_sh_survmate_settings__create_date +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_sh_survmate_theme_button_design_wizard__create_date +msgid "Created on" +msgstr "Creado en" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_question__matrix_subtype__sh_custom_matrix +msgid "Custom Matrix" +msgstr "Matriz personalizada" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_question_answer__sh_value_type__date +msgid "Date" +msgstr "Fecha" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_question_answer__sh_value_type__datetime +msgid "Datetime" +msgstr "Fecha y hora" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_sh_survmate_settings__display_name +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_sh_survmate_theme_button_design_wizard__display_name +msgid "Display Name" +msgstr "Nombre para mostrar" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_user_input_line__value_ans_sh_email +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_question__question_type__que_sh_email +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_question_answer__sh_value_type__que_sh_email +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_user_input_line__answer_type__ans_sh_email +msgid "E-mail" +msgstr "Correo electrónico" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_user_input_line__value_ans_sh_file +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_question__question_type__que_sh_file +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_question_answer__sh_value_type__que_sh_file +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_user_input_line__answer_type__ans_sh_file +msgid "File" +msgstr "Expediente" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_user_input_line__value_ans_sh_file_fname +msgid "File Name" +msgstr "Nombre del archivo" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_question__sh_survmate_theme_grid_type +msgid "Grid" +msgstr "Cuadrícula" + +#. module: sh_survey_all_in_one +#: model:ir.model,name:sh_survey_all_in_one.model_ir_http +msgid "HTTP Routing" +msgstr "Enrutamiento HTTP" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_sh_survmate_settings__id +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_sh_survmate_theme_button_design_wizard__id +msgid "ID" +msgstr "IDENTIFICACIÓN" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_user_input_line__access_token +msgid "Identification token" +msgstr "Token de identificación" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_sh_survmate_theme_button_design_wizard__img_src +msgid "Image Src" +msgstr "Imagen SRC" + +#. module: sh_survey_all_in_one +#: model:ir.model,name:sh_survey_all_in_one.model_survey_question +msgid "Inherit Survey Question for extra fields" +msgstr "Pregunta de la encuesta heredar para campos adicionales" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_sh_survmate_settings__sh_survmate_input_style +msgid "Input Style" +msgstr "Estilo de entrada" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_question__validation_is_sh_textbox_pattern +msgid "Input must be in specified pattern" +msgstr "La entrada debe estar en un patrón especificado" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_survey__sh_is_time_fixed +msgid "Is Fixed Timer Position?" +msgstr "¿Es la posición del temporizador fijo?" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_sh_survmate_settings____last_update +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_sh_survmate_theme_button_design_wizard____last_update +msgid "Last Modified on" +msgstr "Última modificación en" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_sh_survmate_settings__write_uid +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_sh_survmate_theme_button_design_wizard__write_uid +msgid "Last Updated by" +msgstr "Última actualización por" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_sh_survmate_settings__write_date +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_sh_survmate_theme_button_design_wizard__write_date +msgid "Last Updated on" +msgstr "Ultima actualización en" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_user_input_line__value_sh_location_latitude +msgid "Latitude" +msgstr "Latitud" + +#. module: sh_survey_all_in_one +#: model_terms:ir.ui.view,arch_db:sh_survey_all_in_one.sh_survmate_theme_survey_question_form_inherit +msgid "Layout" +msgstr "Diseño" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_user_input_line__value_ans_sh_location +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_question__question_type__que_sh_location +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_user_input_line__answer_type__ans_sh_location +msgid "Location" +msgstr "Ubicación" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_user_input_line__value_sh_location_longitude +msgid "Longitude" +msgstr "Longitud" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_user_input_line__value_ans_sh_many2many +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_question__question_type__que_sh_many2many +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_user_input_line__answer_type__ans_sh_many2many +msgid "Many2many" +msgstr "Many2Many" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_user_input_line__value_ans_sh_many2one +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_question__question_type__que_sh_many2one +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_user_input_line__answer_type__ans_sh_many2one +msgid "Many2one" +msgstr "Many2One" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_question__matrix_subtype +msgid "Matrix Type" +msgstr "Tipo de matriz" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_question_answer__sh_matrix_range_max +msgid "Maximum" +msgstr "Máximo" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_question__validation_sh_month_max +msgid "Maximum Month" +msgstr "Mes máximo" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_question__validation_sh_range_max +msgid "Maximum Range" +msgstr "Rango maximo" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_question__validation_sh_time_max +msgid "Maximum Time" +msgstr "Tiempo máximo" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_question__validation_sh_week_max +msgid "Maximum Week" +msgstr "Semana máxima" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_question_answer__sh_matrix_range_min +msgid "Minimum" +msgstr "Mínimo" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_question__validation_sh_month_min +msgid "Minimum Month" +msgstr "Mes mínimo" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_question__validation_sh_range_min +msgid "Minimum Range" +msgstr "Rango mínimo" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_question__validation_sh_time_min +msgid "Minimum Time" +msgstr "Tiempo mínimo" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_question__validation_sh_week_min +msgid "Minimum Week" +msgstr "Semana mínima" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_question__que_sh_many2many_model_id +msgid "Model" +msgstr "Modelo" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_question__que_sh_many2one_model_id +msgid "Model " +msgstr "Modelo" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_user_input_line__value_ans_sh_month +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_question__question_type__que_sh_month +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_question_answer__sh_value_type__que_sh_month +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_user_input_line__answer_type__ans_sh_month +msgid "Month" +msgstr "Mes" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_question__validation_sh_month_step +msgid "Month Step" +msgstr "Paso mensual" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_question_answer__sh_value_type__free_text +msgid "Multiple Lines Text Box" +msgstr "Cuadro de texto de múltiples líneas" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_sh_survmate_settings__name +msgid "Name" +msgstr "Nombre" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_question_answer__sh_value_type__numerical_box +msgid "Numerical Value" +msgstr "Valor numérico" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_user_input_line__value_ans_sh_password +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_question__question_type__que_sh_password +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_question_answer__sh_value_type__que_sh_password +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_user_input_line__answer_type__ans_sh_password +msgid "Password" +msgstr "Clave" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_question__validation_sh_password_maxlen +msgid "Password Maximum Length" +msgstr "Contraseña Longitud máxima" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_question__validation_sh_password_minlen +msgid "Password Minimum Length" +msgstr "Longitud mínima de contraseña" + +#. module: sh_survey_all_in_one +#: model_terms:ir.ui.view,arch_db:sh_survey_all_in_one.sh_survmate_theme_survey_settings_form +msgid "Preview" +msgstr "Avance" + +#. module: sh_survey_all_in_one +#: code:addons/sh_survey_all_in_one/sh_survmate_theme/models/survey.py:0 +#, python-format +msgid "Preview Style" +msgstr "Estilo de vista previa" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_sh_survmate_settings__sh_survmate_theme_primary_color +msgid "Primary Color" +msgstr "Color primario" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_user_input_line__value_ans_sh_qrcode +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_question__question_type__que_sh_qrcode +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_question_answer__sh_value_type__que_sh_qrcode +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_user_input_line__answer_type__ans_sh_qrcode +msgid "QR Code" +msgstr "Código QR" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_sh_survmate_settings__sh_survmate_question_color +msgid "Question Color" +msgstr "Color de preguntas" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_question__question_type +msgid "Question Type" +msgstr "tipo de pregunta" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_sh_survmate_settings__sh_survmate_radio_button_style +msgid "Radio Button Style" +msgstr "Estilo de botón de radio" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_user_input_line__value_ans_sh_range +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_question__question_type__que_sh_range +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_question_answer__sh_value_type__que_sh_range +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_user_input_line__answer_type__ans_sh_range +msgid "Range" +msgstr "Rango" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_question__validation_sh_range_step +msgid "Range Step" +msgstr "Paso de alcance" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_sh_survmate_settings__sh_survmate_theme_secondary_color +msgid "Secondary Color" +msgstr "Color secundario" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_sh_survmate_settings__sh_survmate_section_title_color +msgid "Section Background Color" +msgstr "Color de fondo de sección" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_sh_survmate_settings__sh_survmate_section_title_font_color +msgid "Section Font Color" +msgstr "Color de fuente de sección" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_sh_survmate_settings__sh_survmate_section_style +msgid "Section Style" +msgstr "Estilo de sección" + +#. module: sh_survey_all_in_one +#: model_terms:ir.ui.view,arch_db:sh_survey_all_in_one.tmpl_sh_many2one +msgid "Select..." +msgstr "Seleccione..." + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_sh_survmate_settings__sh_survmate_show_bg_color +msgid "Show Background Color" +msgstr "Mostrar color de fondo" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_question__sh_is_show_city +msgid "Show City Field?" +msgstr "¿Show City Field?" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_question__sh_is_show_country_id +msgid "Show Country Field?" +msgstr "¿Mostrar campo country?" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_question__sh_is_show_state_id +msgid "Show State Field?" +msgstr "¿Mostrar campo estatal?" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_question__sh_is_show_street +msgid "Show Street Field?" +msgstr "¿Show Street Field?" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_question__sh_is_show_street2 +msgid "Show Street2 Field?" +msgstr "Show street2 campo?" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_question__sh_is_show_zip +msgid "Show Zip Field?" +msgstr "¿Mostrar campo ZIP?" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_user_input_line__value_ans_sh_signature +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_question__question_type__que_sh_signature +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_user_input_line__answer_type__ans_sh_signature +msgid "Signature" +msgstr "Firma" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_user_input_line__value_ans_sh_signature_src +msgid "Signature src" +msgstr "Signature SRC" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_question_answer__sh_value_type__textbox +msgid "Single Line Text Box" +msgstr "Cuadro de texto de una sola línea" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_user_input_line__value_ans_sh_state_id +msgid "State" +msgstr "Estado" + +#. module: sh_survey_all_in_one +#: model_terms:ir.ui.view,arch_db:sh_survey_all_in_one.tmpl_sh_address +msgid "State / Province" +msgstr "Provincia del estado" + +#. module: sh_survey_all_in_one +#: model_terms:ir.ui.view,arch_db:sh_survey_all_in_one.tmpl_sh_address +msgid "State / Province..." +msgstr "Provincia del estado..." + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_question_answer__sh_matrix_range_step +msgid "Step" +msgstr "Paso" + +#. module: sh_survey_all_in_one +#: model_terms:ir.ui.view,arch_db:sh_survey_all_in_one.tmpl_sh_address +msgid "Street 2" +msgstr "Calle # 2" + +#. module: sh_survey_all_in_one +#: model_terms:ir.ui.view,arch_db:sh_survey_all_in_one.tmpl_sh_address +msgid "Street and Number" +msgstr "Calle y número " + +#. module: sh_survey_all_in_one +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__sh_survmate_settings__sh_survmate_button_style__style_1 +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__sh_survmate_settings__sh_survmate_checkbox_style__style_1 +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__sh_survmate_settings__sh_survmate_input_style__style_1 +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__sh_survmate_settings__sh_survmate_radio_button_style__style_1 +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__sh_survmate_settings__sh_survmate_section_style__style_1 +msgid "Style 1" +msgstr "Estilo 1" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__sh_survmate_settings__sh_survmate_button_style__style_2 +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__sh_survmate_settings__sh_survmate_checkbox_style__style_2 +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__sh_survmate_settings__sh_survmate_input_style__style_2 +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__sh_survmate_settings__sh_survmate_radio_button_style__style_2 +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__sh_survmate_settings__sh_survmate_section_style__style_2 +msgid "Style 2" +msgstr "Estilo 2" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__sh_survmate_settings__sh_survmate_button_style__style_3 +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__sh_survmate_settings__sh_survmate_checkbox_style__style_3 +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__sh_survmate_settings__sh_survmate_input_style__style_3 +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__sh_survmate_settings__sh_survmate_radio_button_style__style_3 +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__sh_survmate_settings__sh_survmate_section_style__style_3 +msgid "Style 3" +msgstr "Estilo 3" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__sh_survmate_settings__sh_survmate_button_style__style_4 +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__sh_survmate_settings__sh_survmate_checkbox_style__style_4 +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__sh_survmate_settings__sh_survmate_input_style__style_4 +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__sh_survmate_settings__sh_survmate_radio_button_style__style_4 +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__sh_survmate_settings__sh_survmate_section_style__style_4 +msgid "Style 4" +msgstr "Estilo 4" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__sh_survmate_settings__sh_survmate_button_style__style_5 +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__sh_survmate_settings__sh_survmate_checkbox_style__style_5 +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__sh_survmate_settings__sh_survmate_input_style__style_5 +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__sh_survmate_settings__sh_survmate_radio_button_style__style_5 +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__sh_survmate_settings__sh_survmate_section_style__style_5 +msgid "Style 5" +msgstr "Estilo 5" + +#. module: sh_survey_all_in_one +#: model_terms:ir.ui.view,arch_db:sh_survey_all_in_one.sh_survmate_theme_survey_settings_form +msgid "Styles" +msgstr "Estilos" + +#. module: sh_survey_all_in_one +#: model:ir.model,name:sh_survey_all_in_one.model_survey_survey +msgid "Survey" +msgstr "Encuesta" + +#. module: sh_survey_all_in_one +#: model:ir.model,name:sh_survey_all_in_one.model_survey_question_answer +msgid "Survey Label" +msgstr "Etiqueta de encuesta" + +#. module: sh_survey_all_in_one +#: model:ir.model,name:sh_survey_all_in_one.model_survey_user_input_line +msgid "Survey User Input Line for extra fields" +msgstr "Encuesta Línea de entrada del usuario para campos adicionales" + +#. module: sh_survey_all_in_one +#: model:ir.model,name:sh_survey_all_in_one.model_survey_user_input +msgid "Survey User Input for custom matrix" +msgstr "Introducción al usuario de encuesta para matriz personalizada" + +#. module: sh_survey_all_in_one +#: model:ir.actions.act_window,name:sh_survey_all_in_one.sh_survmate_theme_survey_settings_action +#: model:ir.model,name:sh_survey_all_in_one.model_sh_survmate_settings +#: model:ir.ui.menu,name:sh_survey_all_in_one.sh_survmate_theme_survey_settings_menu +msgid "Survmate Settings" +msgstr "Configuración de Survmate" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_survey__sh_survmate_settings_id +#: model_terms:ir.ui.view,arch_db:sh_survey_all_in_one.sh_survmate_theme_survey_form_inherit +msgid "Survmate Theme" +msgstr "Tema de Survmate" + +#. module: sh_survey_all_in_one +#: model:ir.model,name:sh_survey_all_in_one.model_sh_survmate_theme_button_design_wizard +msgid "Survmate Theme Button Design" +msgstr "Diseño del botón del tema del tema de Survmate" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_question__validation_sh_textbox_pattern +msgid "Textbox Pattern" +msgstr "Patrón de cuadro de texto" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_question__validation_sh_textbox_placeholder +msgid "Textbox Placeholder" +msgstr "Marcador de posición del cuadro de texto" + +#. module: sh_survey_all_in_one +#: model_terms:ir.ui.view,arch_db:sh_survey_all_in_one.sh_survmate_theme_button_style_wizard_view +msgid "Theme Preview" +msgstr "Vista previa del tema" + +#. module: sh_survey_all_in_one +#. openerp-web +#: code:addons/sh_survey_all_in_one/static/src/js/extra_addons/sh_survey_extra_fields/survey_form.js:0 +#, python-format +msgid "This answer must be an URL." +msgstr "Esta respuesta debe ser una URL." + +#. module: sh_survey_all_in_one +#. openerp-web +#: code:addons/sh_survey_all_in_one/static/src/js/extra_addons/sh_survey_extra_fields/survey_form.js:0 +#, python-format +msgid "This answer must be an email address." +msgstr "Esta respuesta debe ser una dirección de correo electrónico." + +#. module: sh_survey_all_in_one +#. openerp-web +#: code:addons/sh_survey_all_in_one/static/src/js/extra_addons/sh_survey_extra_fields/survey_form.js:0 +#, python-format +msgid "This is not a date" +msgstr "Esta no es una fecha" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_user_input_line__value_ans_sh_time +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_question__question_type__que_sh_time +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_question_answer__sh_value_type__que_sh_time +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_user_input_line__answer_type__ans_sh_time +msgid "Time" +msgstr "Tiempo" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_question__validation_sh_time_step +msgid "Time Step" +msgstr "Hora de caminar" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_user_input_line__value_ans_sh_url +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_question__question_type__que_sh_url +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_question_answer__sh_value_type__que_sh_url +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_user_input_line__answer_type__ans_sh_url +msgid "URL" +msgstr "Url" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_user_input_line__value_ans_sh_city +msgid "Value Ans Sh City" +msgstr "Valor Ans Sh City" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_user_input_line__value_ans_sh_street +msgid "Value Ans Sh Street" +msgstr "Valor Ans Sh Street" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_user_input_line__value_ans_sh_street2 +msgid "Value Ans Sh Street2" +msgstr "Valor Ans sh street2" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_user_input_line__value_ans_sh_zip +msgid "Value Ans Sh Zip" +msgstr "Valor y zip sh" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_user_input_line__value_ans_sh_week +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_question__question_type__que_sh_week +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_question_answer__sh_value_type__que_sh_week +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_user_input_line__answer_type__ans_sh_week +msgid "Week" +msgstr "Semana" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_question__validation_sh_week_step +msgid "Week Step" +msgstr "Paso de la semana" + +#. module: sh_survey_all_in_one +#: model_terms:ir.ui.view,arch_db:sh_survey_all_in_one.tmpl_sh_address +msgid "Zip Code" +msgstr "Código postal" + +#. module: sh_survey_all_in_one +#: model_terms:ir.ui.view,arch_db:sh_survey_all_in_one.sh_survey_extra_fields_survey_que_form_view +msgid "[0-9]{4}" +msgstr "[0-9] {4}" + +#. module: sh_survey_all_in_one +#: model_terms:ir.ui.view,arch_db:sh_survey_all_in_one.sh_survmate_theme_survey_settings_form +msgid "e.g. Theme Settings for Survey A" +msgstr "p.ej. Configuración del tema para la encuesta a" + +#. module: sh_survey_all_in_one +#: model_terms:ir.ui.view,arch_db:sh_survey_all_in_one.matrix +#: model_terms:ir.ui.view,arch_db:sh_survey_all_in_one.tmpl_sh_email +msgid "example@domain.com" +msgstr "ejemplo@domain.com" + +#. module: sh_survey_all_in_one +#: model_terms:ir.ui.view,arch_db:sh_survey_all_in_one.matrix +#: model_terms:ir.ui.view,arch_db:sh_survey_all_in_one.tmpl_sh_time +#: model_terms:ir.ui.view,arch_db:sh_survey_all_in_one.tmpl_sh_url +msgid "https://example.com" +msgstr "https://example.com" + +#. module: sh_survey_all_in_one +#: model_terms:ir.ui.view,arch_db:sh_survey_all_in_one.sh_survey_extra_fields_survey_que_form_view +msgid "nnnn" +msgstr "nnnn" + +#. module: sh_survey_all_in_one +#: model_terms:ir.ui.view,arch_db:sh_survey_all_in_one.sh_survmate_theme_button_style_wizard_view +msgid "preview image" +msgstr "Vista previa de imagen" diff --git a/sh_survey_all_in_one/i18n/fr.po b/sh_survey_all_in_one/i18n/fr.po new file mode 100644 index 0000000..19514d5 --- /dev/null +++ b/sh_survey_all_in_one/i18n/fr.po @@ -0,0 +1,841 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * sh_survey_all_in_one +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 15.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2022-06-28 07:30+0000\n" +"PO-Revision-Date: 2022-06-28 07:30+0000\n" +"Last-Translator: \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: \n" + +#. module: sh_survey_all_in_one +#: model_terms:ir.ui.view,arch_db:sh_survey_all_in_one.tmpl_sh_textbox_for_pattern +msgid "#{question.validation_sh_textbox_placeholder}" +msgstr "#{question.validation_sh_textbox_placeholder}" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_question__sh_survmate_theme_grid_type__10 +msgid "10" +msgstr "10" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_question__sh_survmate_theme_grid_type__11 +msgid "11" +msgstr "11" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_question__sh_survmate_theme_grid_type__12 +msgid "12" +msgstr "12" + +#. module: sh_survey_all_in_one +#: model_terms:ir.ui.view,arch_db:sh_survey_all_in_one.sh_survey_extra_fields_survey_que_form_view +msgid "18:00" +msgstr "18:00" + +#. module: sh_survey_all_in_one +#: model_terms:ir.ui.view,arch_db:sh_survey_all_in_one.sh_survey_extra_fields_survey_que_form_view +msgid "20" +msgstr "20" + +#. module: sh_survey_all_in_one +#: model_terms:ir.ui.view,arch_db:sh_survey_all_in_one.sh_survey_extra_fields_survey_que_form_view +msgid "2018-03" +msgstr "2018-03" + +#. module: sh_survey_all_in_one +#: model_terms:ir.ui.view,arch_db:sh_survey_all_in_one.sh_survey_extra_fields_survey_que_form_view +msgid "2018-05" +msgstr "2018-05" + +#. module: sh_survey_all_in_one +#: model_terms:ir.ui.view,arch_db:sh_survey_all_in_one.sh_survey_extra_fields_survey_que_form_view +msgid "2018-W18" +msgstr "2018-W18" + +#. module: sh_survey_all_in_one +#: model_terms:ir.ui.view,arch_db:sh_survey_all_in_one.sh_survey_extra_fields_survey_que_form_view +msgid "2018-W26" +msgstr "2018-W26" + +#. module: sh_survey_all_in_one +#: model_terms:ir.ui.view,arch_db:sh_survey_all_in_one.sh_survey_extra_fields_survey_que_form_view +msgid "60 (In seconds)" +msgstr "60 (In seconds)" + +#. module: sh_survey_all_in_one +#: model_terms:ir.ui.view,arch_db:sh_survey_all_in_one.sh_survey_extra_fields_survey_que_form_view +msgid "9:00" +msgstr "9:00" + +#. module: sh_survey_all_in_one +#: model_terms:ir.ui.view,arch_db:sh_survey_all_in_one.survey_page_fill +msgid "" +"Result:\n" +" " +msgstr "" +"Résultat\n" +" " + +#. module: sh_survey_all_in_one +#: model_terms:ir.ui.view,arch_db:sh_survey_all_in_one.survey_page_fill +msgid "Camera" +msgstr "Caméra" + +#. module: sh_survey_all_in_one +#: code:addons/sh_survey_all_in_one/sh_survey_matrix_adv/models/survey.py:0 +#, python-format +msgid "A question is either skipped, either answered. Not both." +msgstr "Une question est sautée, soit répondue. Pas les deux." + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_user_input_line__value_ans_sh_address +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_question__question_type__que_sh_address +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_user_input_line__answer_type__ans_sh_address +msgid "Address" +msgstr "Adresse" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_sh_survmate_settings__sh_survmate_answer_color +msgid "Answer Color" +msgstr "Répondre à la couleur" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_sh_survmate_settings__sh_survmate_section_answer_text_color +msgid "Answer Text Color" +msgstr "Répondre à la couleur du texte" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_user_input_line__answer_type +msgid "Answer Type" +msgstr "Type de réponse" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_sh_survmate_settings__sh_survmate_bg_color +msgid "Background Color" +msgstr "Couleur de l'arrière plan" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_user_input_line__value_ans_sh_barcode +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_question__question_type__que_sh_barcode +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_question_answer__sh_value_type__que_sh_barcode +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_user_input_line__answer_type__ans_sh_barcode +msgid "Barcode" +msgstr "code à barre" + +#. module: sh_survey_all_in_one +#: model_terms:ir.ui.view,arch_db:sh_survey_all_in_one.survey_page_fill +msgid "Barcode Scanner" +msgstr "Scanner de code-barres" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_sh_survmate_settings__sh_survmate_button_style +msgid "Button Style" +msgstr "Style de bouton" + +#. module: sh_survey_all_in_one +#: model_terms:ir.ui.view,arch_db:sh_survey_all_in_one.sh_survmate_theme_button_style_wizard_view +msgid "Cancel" +msgstr "Annuler" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_sh_survmate_settings__sh_survmate_checkbox_style +msgid "Checkbox Style" +msgstr "Style à cocher" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_question_answer__sh_value_type +msgid "Choices Type" +msgstr "Type de choix" + +#. module: sh_survey_all_in_one +#: model_terms:ir.ui.view,arch_db:sh_survey_all_in_one.tmpl_sh_address +msgid "City" +msgstr "Ville" + +#. module: sh_survey_all_in_one +#: model_terms:ir.ui.view,arch_db:sh_survey_all_in_one.tmpl_sh_signature +msgid "Clear" +msgstr "Dégager" + +#. module: sh_survey_all_in_one +#: model_terms:ir.ui.view,arch_db:sh_survey_all_in_one.matrix +#: model_terms:ir.ui.view,arch_db:sh_survey_all_in_one.tmpl_sh_file_print +msgid "Click here to download file" +msgstr "Cliquez ici pour télécharger le fichier" + +#. module: sh_survey_all_in_one +#: model_terms:ir.ui.view,arch_db:sh_survey_all_in_one.survey_page_fill +msgid "Close" +msgstr "proche" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_user_input_line__value_ans_sh_color +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_question__question_type__que_sh_color +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_question_answer__sh_value_type__que_sh_color +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_user_input_line__answer_type__ans_sh_color +msgid "Color" +msgstr "Couleur" + +#. module: sh_survey_all_in_one +#: model_terms:ir.ui.view,arch_db:sh_survey_all_in_one.sh_survmate_theme_survey_settings_form +msgid "Colors" +msgstr "Couleurs" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_user_input_line__value_ans_sh_country_id +#: model_terms:ir.ui.view,arch_db:sh_survey_all_in_one.tmpl_sh_address +msgid "Country" +msgstr "Pays" + +#. module: sh_survey_all_in_one +#: model_terms:ir.ui.view,arch_db:sh_survey_all_in_one.tmpl_sh_address +msgid "Country..." +msgstr "Pays..." + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_sh_survmate_settings__create_uid +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_sh_survmate_theme_button_design_wizard__create_uid +msgid "Created by" +msgstr "Créé par" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_sh_survmate_settings__create_date +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_sh_survmate_theme_button_design_wizard__create_date +msgid "Created on" +msgstr "Créé sur" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_question__matrix_subtype__sh_custom_matrix +msgid "Custom Matrix" +msgstr "Matrice personnalisée" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_question_answer__sh_value_type__date +msgid "Date" +msgstr "Date" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_question_answer__sh_value_type__datetime +msgid "Datetime" +msgstr "DateTime" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_sh_survmate_settings__display_name +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_sh_survmate_theme_button_design_wizard__display_name +msgid "Display Name" +msgstr "Afficher un nom" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_user_input_line__value_ans_sh_email +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_question__question_type__que_sh_email +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_question_answer__sh_value_type__que_sh_email +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_user_input_line__answer_type__ans_sh_email +msgid "E-mail" +msgstr "E-mail" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_user_input_line__value_ans_sh_file +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_question__question_type__que_sh_file +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_question_answer__sh_value_type__que_sh_file +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_user_input_line__answer_type__ans_sh_file +msgid "File" +msgstr "Dossier" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_user_input_line__value_ans_sh_file_fname +msgid "File Name" +msgstr "Nom de fichier" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_question__sh_survmate_theme_grid_type +msgid "Grid" +msgstr "Grille" + +#. module: sh_survey_all_in_one +#: model:ir.model,name:sh_survey_all_in_one.model_ir_http +msgid "HTTP Routing" +msgstr "Routage http" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_sh_survmate_settings__id +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_sh_survmate_theme_button_design_wizard__id +msgid "ID" +msgstr "IDENTIFIANT" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_user_input_line__access_token +msgid "Identification token" +msgstr "Jeton d'identification" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_sh_survmate_theme_button_design_wizard__img_src +msgid "Image Src" +msgstr "Image src" + +#. module: sh_survey_all_in_one +#: model:ir.model,name:sh_survey_all_in_one.model_survey_question +msgid "Inherit Survey Question for extra fields" +msgstr "QUESTION DE L'ENSECTION DES INTROYANTS POUR LES FIELDS SUPPLÉMENT" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_sh_survmate_settings__sh_survmate_input_style +msgid "Input Style" +msgstr "Style d'entrée" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_question__validation_is_sh_textbox_pattern +msgid "Input must be in specified pattern" +msgstr "L'entrée doit être dans un modèle spécifié" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_survey__sh_is_time_fixed +msgid "Is Fixed Timer Position?" +msgstr "La position de la minuterie fixe est-elle?" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_sh_survmate_settings____last_update +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_sh_survmate_theme_button_design_wizard____last_update +msgid "Last Modified on" +msgstr "Dernier modification sur" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_sh_survmate_settings__write_uid +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_sh_survmate_theme_button_design_wizard__write_uid +msgid "Last Updated by" +msgstr "Dernière mise à jour par" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_sh_survmate_settings__write_date +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_sh_survmate_theme_button_design_wizard__write_date +msgid "Last Updated on" +msgstr "Dernière mise à jour le" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_user_input_line__value_sh_location_latitude +msgid "Latitude" +msgstr "Latitude" + +#. module: sh_survey_all_in_one +#: model_terms:ir.ui.view,arch_db:sh_survey_all_in_one.sh_survmate_theme_survey_question_form_inherit +msgid "Layout" +msgstr "Disposition" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_user_input_line__value_ans_sh_location +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_question__question_type__que_sh_location +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_user_input_line__answer_type__ans_sh_location +msgid "Location" +msgstr "Emplacement" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_user_input_line__value_sh_location_longitude +msgid "Longitude" +msgstr "Longitude" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_user_input_line__value_ans_sh_many2many +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_question__question_type__que_sh_many2many +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_user_input_line__answer_type__ans_sh_many2many +msgid "Many2many" +msgstr "Many2Many" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_user_input_line__value_ans_sh_many2one +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_question__question_type__que_sh_many2one +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_user_input_line__answer_type__ans_sh_many2one +msgid "Many2one" +msgstr "Many2one" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_question__matrix_subtype +msgid "Matrix Type" +msgstr "Type de matrice" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_question_answer__sh_matrix_range_max +msgid "Maximum" +msgstr "Maximum" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_question__validation_sh_month_max +msgid "Maximum Month" +msgstr "Mois maximum" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_question__validation_sh_range_max +msgid "Maximum Range" +msgstr "Plage maximale" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_question__validation_sh_time_max +msgid "Maximum Time" +msgstr "Temps maximum" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_question__validation_sh_week_max +msgid "Maximum Week" +msgstr "Semaine maximale" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_question_answer__sh_matrix_range_min +msgid "Minimum" +msgstr "Le minimum" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_question__validation_sh_month_min +msgid "Minimum Month" +msgstr "Mois minimum" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_question__validation_sh_range_min +msgid "Minimum Range" +msgstr "Plage minimale" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_question__validation_sh_time_min +msgid "Minimum Time" +msgstr "Temps minimum" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_question__validation_sh_week_min +msgid "Minimum Week" +msgstr "Semaine minimale" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_question__que_sh_many2many_model_id +msgid "Model" +msgstr "Modèle" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_question__que_sh_many2one_model_id +msgid "Model " +msgstr "Modèle" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_user_input_line__value_ans_sh_month +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_question__question_type__que_sh_month +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_question_answer__sh_value_type__que_sh_month +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_user_input_line__answer_type__ans_sh_month +msgid "Month" +msgstr "Mois" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_question__validation_sh_month_step +msgid "Month Step" +msgstr "Étape du mois" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_question_answer__sh_value_type__free_text +msgid "Multiple Lines Text Box" +msgstr "Zone de texte de plusieurs lignes" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_sh_survmate_settings__name +msgid "Name" +msgstr "Nom" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_question_answer__sh_value_type__numerical_box +msgid "Numerical Value" +msgstr "Valeur numérique" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_user_input_line__value_ans_sh_password +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_question__question_type__que_sh_password +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_question_answer__sh_value_type__que_sh_password +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_user_input_line__answer_type__ans_sh_password +msgid "Password" +msgstr "Mot de passe" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_question__validation_sh_password_maxlen +msgid "Password Maximum Length" +msgstr "Longueur maximale du mot de passe" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_question__validation_sh_password_minlen +msgid "Password Minimum Length" +msgstr "Mot de passe minimum" + +#. module: sh_survey_all_in_one +#: model_terms:ir.ui.view,arch_db:sh_survey_all_in_one.sh_survmate_theme_survey_settings_form +msgid "Preview" +msgstr "Aperçu" + +#. module: sh_survey_all_in_one +#: code:addons/sh_survey_all_in_one/sh_survmate_theme/models/survey.py:0 +#, python-format +msgid "Preview Style" +msgstr "Style d'aperçu" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_sh_survmate_settings__sh_survmate_theme_primary_color +msgid "Primary Color" +msgstr "Couleur primaire" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_user_input_line__value_ans_sh_qrcode +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_question__question_type__que_sh_qrcode +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_question_answer__sh_value_type__que_sh_qrcode +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_user_input_line__answer_type__ans_sh_qrcode +msgid "QR Code" +msgstr "QR Code" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_sh_survmate_settings__sh_survmate_question_color +msgid "Question Color" +msgstr "Question Couleur" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_question__question_type +msgid "Question Type" +msgstr "Type de question" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_sh_survmate_settings__sh_survmate_radio_button_style +msgid "Radio Button Style" +msgstr "Style de bouton radio" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_user_input_line__value_ans_sh_range +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_question__question_type__que_sh_range +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_question_answer__sh_value_type__que_sh_range +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_user_input_line__answer_type__ans_sh_range +msgid "Range" +msgstr "Intervalle" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_question__validation_sh_range_step +msgid "Range Step" +msgstr "Étape de portée" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_sh_survmate_settings__sh_survmate_theme_secondary_color +msgid "Secondary Color" +msgstr "Couleur secondaire" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_sh_survmate_settings__sh_survmate_section_title_color +msgid "Section Background Color" +msgstr "Couleur d'arrière-plan de la section" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_sh_survmate_settings__sh_survmate_section_title_font_color +msgid "Section Font Color" +msgstr "Couleur de police de section" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_sh_survmate_settings__sh_survmate_section_style +msgid "Section Style" +msgstr "Style de section" + +#. module: sh_survey_all_in_one +#: model_terms:ir.ui.view,arch_db:sh_survey_all_in_one.tmpl_sh_many2one +msgid "Select..." +msgstr "Sélectionner..." + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_sh_survmate_settings__sh_survmate_show_bg_color +msgid "Show Background Color" +msgstr "Montrer la couleur d'arrière-plan" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_question__sh_is_show_city +msgid "Show City Field?" +msgstr "Montrer le terrain de la ville?" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_question__sh_is_show_country_id +msgid "Show Country Field?" +msgstr "Montrez le terrain de la campagne?" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_question__sh_is_show_state_id +msgid "Show State Field?" +msgstr "Montrer un champ d'état?" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_question__sh_is_show_street +msgid "Show Street Field?" +msgstr "Montrer le terrain de rue?" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_question__sh_is_show_street2 +msgid "Show Street2 Field?" +msgstr "Afficher le terrain Street2?" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_question__sh_is_show_zip +msgid "Show Zip Field?" +msgstr "Montrer le champ zip?" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_user_input_line__value_ans_sh_signature +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_question__question_type__que_sh_signature +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_user_input_line__answer_type__ans_sh_signature +msgid "Signature" +msgstr "Signature" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_user_input_line__value_ans_sh_signature_src +msgid "Signature src" +msgstr "Src signature" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_question_answer__sh_value_type__textbox +msgid "Single Line Text Box" +msgstr "Zone de texte à ligne unique" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_user_input_line__value_ans_sh_state_id +msgid "State" +msgstr "État" + +#. module: sh_survey_all_in_one +#: model_terms:ir.ui.view,arch_db:sh_survey_all_in_one.tmpl_sh_address +msgid "State / Province" +msgstr "État / province" + +#. module: sh_survey_all_in_one +#: model_terms:ir.ui.view,arch_db:sh_survey_all_in_one.tmpl_sh_address +msgid "State / Province..." +msgstr "État / province ..." + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_question_answer__sh_matrix_range_step +msgid "Step" +msgstr "Marcher" + +#. module: sh_survey_all_in_one +#: model_terms:ir.ui.view,arch_db:sh_survey_all_in_one.tmpl_sh_address +msgid "Street 2" +msgstr "Rue # 2" + +#. module: sh_survey_all_in_one +#: model_terms:ir.ui.view,arch_db:sh_survey_all_in_one.tmpl_sh_address +msgid "Street and Number" +msgstr "Street et numéro " + +#. module: sh_survey_all_in_one +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__sh_survmate_settings__sh_survmate_button_style__style_1 +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__sh_survmate_settings__sh_survmate_checkbox_style__style_1 +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__sh_survmate_settings__sh_survmate_input_style__style_1 +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__sh_survmate_settings__sh_survmate_radio_button_style__style_1 +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__sh_survmate_settings__sh_survmate_section_style__style_1 +msgid "Style 1" +msgstr "Style 1" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__sh_survmate_settings__sh_survmate_button_style__style_2 +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__sh_survmate_settings__sh_survmate_checkbox_style__style_2 +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__sh_survmate_settings__sh_survmate_input_style__style_2 +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__sh_survmate_settings__sh_survmate_radio_button_style__style_2 +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__sh_survmate_settings__sh_survmate_section_style__style_2 +msgid "Style 2" +msgstr "Style 2" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__sh_survmate_settings__sh_survmate_button_style__style_3 +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__sh_survmate_settings__sh_survmate_checkbox_style__style_3 +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__sh_survmate_settings__sh_survmate_input_style__style_3 +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__sh_survmate_settings__sh_survmate_radio_button_style__style_3 +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__sh_survmate_settings__sh_survmate_section_style__style_3 +msgid "Style 3" +msgstr "Style 3" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__sh_survmate_settings__sh_survmate_button_style__style_4 +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__sh_survmate_settings__sh_survmate_checkbox_style__style_4 +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__sh_survmate_settings__sh_survmate_input_style__style_4 +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__sh_survmate_settings__sh_survmate_radio_button_style__style_4 +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__sh_survmate_settings__sh_survmate_section_style__style_4 +msgid "Style 4" +msgstr "Style 4" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__sh_survmate_settings__sh_survmate_button_style__style_5 +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__sh_survmate_settings__sh_survmate_checkbox_style__style_5 +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__sh_survmate_settings__sh_survmate_input_style__style_5 +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__sh_survmate_settings__sh_survmate_radio_button_style__style_5 +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__sh_survmate_settings__sh_survmate_section_style__style_5 +msgid "Style 5" +msgstr "Style 5" + +#. module: sh_survey_all_in_one +#: model_terms:ir.ui.view,arch_db:sh_survey_all_in_one.sh_survmate_theme_survey_settings_form +msgid "Styles" +msgstr "modes" + +#. module: sh_survey_all_in_one +#: model:ir.model,name:sh_survey_all_in_one.model_survey_survey +msgid "Survey" +msgstr "Enquête" + +#. module: sh_survey_all_in_one +#: model:ir.model,name:sh_survey_all_in_one.model_survey_question_answer +msgid "Survey Label" +msgstr "Étiquette d'enquête" + +#. module: sh_survey_all_in_one +#: model:ir.model,name:sh_survey_all_in_one.model_survey_user_input_line +msgid "Survey User Input Line for extra fields" +msgstr "Enquête sur la ligne d'entrée de l'utilisateur pour des champs supplémentaires" + +#. module: sh_survey_all_in_one +#: model:ir.model,name:sh_survey_all_in_one.model_survey_user_input +msgid "Survey User Input for custom matrix" +msgstr "Entrée des utilisateurs de l'enquête pour la matrice personnalisée" + +#. module: sh_survey_all_in_one +#: model:ir.actions.act_window,name:sh_survey_all_in_one.sh_survmate_theme_survey_settings_action +#: model:ir.model,name:sh_survey_all_in_one.model_sh_survmate_settings +#: model:ir.ui.menu,name:sh_survey_all_in_one.sh_survmate_theme_survey_settings_menu +msgid "Survmate Settings" +msgstr "Paramètres des survivants" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_survey__sh_survmate_settings_id +#: model_terms:ir.ui.view,arch_db:sh_survey_all_in_one.sh_survmate_theme_survey_form_inherit +msgid "Survmate Theme" +msgstr "Thème des survivants" + +#. module: sh_survey_all_in_one +#: model:ir.model,name:sh_survey_all_in_one.model_sh_survmate_theme_button_design_wizard +msgid "Survmate Theme Button Design" +msgstr "Conception du bouton de thème de survim" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_question__validation_sh_textbox_pattern +msgid "Textbox Pattern" +msgstr "Modèle de zone de texte" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_question__validation_sh_textbox_placeholder +msgid "Textbox Placeholder" +msgstr "TextBox Payholder" + +#. module: sh_survey_all_in_one +#: model_terms:ir.ui.view,arch_db:sh_survey_all_in_one.sh_survmate_theme_button_style_wizard_view +msgid "Theme Preview" +msgstr "Aperçu du thème" + +#. module: sh_survey_all_in_one +#. openerp-web +#: code:addons/sh_survey_all_in_one/static/src/js/extra_addons/sh_survey_extra_fields/survey_form.js:0 +#, python-format +msgid "This answer must be an URL." +msgstr "Cette réponse doit être une URL." + +#. module: sh_survey_all_in_one +#. openerp-web +#: code:addons/sh_survey_all_in_one/static/src/js/extra_addons/sh_survey_extra_fields/survey_form.js:0 +#, python-format +msgid "This answer must be an email address." +msgstr "Cette réponse doit être une adresse e-mail." + +#. module: sh_survey_all_in_one +#. openerp-web +#: code:addons/sh_survey_all_in_one/static/src/js/extra_addons/sh_survey_extra_fields/survey_form.js:0 +#, python-format +msgid "This is not a date" +msgstr "Ce n'est pas une date" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_user_input_line__value_ans_sh_time +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_question__question_type__que_sh_time +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_question_answer__sh_value_type__que_sh_time +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_user_input_line__answer_type__ans_sh_time +msgid "Time" +msgstr "Temps" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_question__validation_sh_time_step +msgid "Time Step" +msgstr "Pas de temps" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_user_input_line__value_ans_sh_url +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_question__question_type__que_sh_url +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_question_answer__sh_value_type__que_sh_url +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_user_input_line__answer_type__ans_sh_url +msgid "URL" +msgstr "URL" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_user_input_line__value_ans_sh_city +msgid "Value Ans Sh City" +msgstr "Value Ans Sh City" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_user_input_line__value_ans_sh_street +msgid "Value Ans Sh Street" +msgstr "Valeur Ans SH Street" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_user_input_line__value_ans_sh_street2 +msgid "Value Ans Sh Street2" +msgstr "Valeur Ans SH Street2" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_user_input_line__value_ans_sh_zip +msgid "Value Ans Sh Zip" +msgstr "Valeur ANS SH ZIP" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_user_input_line__value_ans_sh_week +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_question__question_type__que_sh_week +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_question_answer__sh_value_type__que_sh_week +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_user_input_line__answer_type__ans_sh_week +msgid "Week" +msgstr "La semaine" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_question__validation_sh_week_step +msgid "Week Step" +msgstr "Pas de semaine" + +#. module: sh_survey_all_in_one +#: model_terms:ir.ui.view,arch_db:sh_survey_all_in_one.tmpl_sh_address +msgid "Zip Code" +msgstr "Code postal" + +#. module: sh_survey_all_in_one +#: model_terms:ir.ui.view,arch_db:sh_survey_all_in_one.sh_survey_extra_fields_survey_que_form_view +msgid "[0-9]{4}" +msgstr "[0-9] {4}" + +#. module: sh_survey_all_in_one +#: model_terms:ir.ui.view,arch_db:sh_survey_all_in_one.sh_survmate_theme_survey_settings_form +msgid "e.g. Theme Settings for Survey A" +msgstr "par exemple. Paramètres de thème pour l'enquête a" + +#. module: sh_survey_all_in_one +#: model_terms:ir.ui.view,arch_db:sh_survey_all_in_one.matrix +#: model_terms:ir.ui.view,arch_db:sh_survey_all_in_one.tmpl_sh_email +msgid "example@domain.com" +msgstr "example@domain.com" + +#. module: sh_survey_all_in_one +#: model_terms:ir.ui.view,arch_db:sh_survey_all_in_one.matrix +#: model_terms:ir.ui.view,arch_db:sh_survey_all_in_one.tmpl_sh_time +#: model_terms:ir.ui.view,arch_db:sh_survey_all_in_one.tmpl_sh_url +msgid "https://example.com" +msgstr "https://example.com" + +#. module: sh_survey_all_in_one +#: model_terms:ir.ui.view,arch_db:sh_survey_all_in_one.sh_survey_extra_fields_survey_que_form_view +msgid "nnnn" +msgstr "nnnn" + +#. module: sh_survey_all_in_one +#: model_terms:ir.ui.view,arch_db:sh_survey_all_in_one.sh_survmate_theme_button_style_wizard_view +msgid "preview image" +msgstr "Aperçu de l'image" diff --git a/sh_survey_all_in_one/i18n/zh_HK.po b/sh_survey_all_in_one/i18n/zh_HK.po new file mode 100644 index 0000000..17ab0f8 --- /dev/null +++ b/sh_survey_all_in_one/i18n/zh_HK.po @@ -0,0 +1,841 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * sh_survey_all_in_one +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 15.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2022-06-28 07:30+0000\n" +"PO-Revision-Date: 2022-06-28 07:30+0000\n" +"Last-Translator: \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: \n" + +#. module: sh_survey_all_in_one +#: model_terms:ir.ui.view,arch_db:sh_survey_all_in_one.tmpl_sh_textbox_for_pattern +msgid "#{question.validation_sh_textbox_placeholder}" +msgstr "#{question.validation_sh_textbox_placeholder}" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_question__sh_survmate_theme_grid_type__10 +msgid "10" +msgstr "10" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_question__sh_survmate_theme_grid_type__11 +msgid "11" +msgstr "11" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_question__sh_survmate_theme_grid_type__12 +msgid "12" +msgstr "12" + +#. module: sh_survey_all_in_one +#: model_terms:ir.ui.view,arch_db:sh_survey_all_in_one.sh_survey_extra_fields_survey_que_form_view +msgid "18:00" +msgstr "18:00" + +#. module: sh_survey_all_in_one +#: model_terms:ir.ui.view,arch_db:sh_survey_all_in_one.sh_survey_extra_fields_survey_que_form_view +msgid "20" +msgstr "20" + +#. module: sh_survey_all_in_one +#: model_terms:ir.ui.view,arch_db:sh_survey_all_in_one.sh_survey_extra_fields_survey_que_form_view +msgid "2018-03" +msgstr "2018-03" + +#. module: sh_survey_all_in_one +#: model_terms:ir.ui.view,arch_db:sh_survey_all_in_one.sh_survey_extra_fields_survey_que_form_view +msgid "2018-05" +msgstr "2018-05" + +#. module: sh_survey_all_in_one +#: model_terms:ir.ui.view,arch_db:sh_survey_all_in_one.sh_survey_extra_fields_survey_que_form_view +msgid "2018-W18" +msgstr "2018-W18" + +#. module: sh_survey_all_in_one +#: model_terms:ir.ui.view,arch_db:sh_survey_all_in_one.sh_survey_extra_fields_survey_que_form_view +msgid "2018-W26" +msgstr "2018-W26" + +#. module: sh_survey_all_in_one +#: model_terms:ir.ui.view,arch_db:sh_survey_all_in_one.sh_survey_extra_fields_survey_que_form_view +msgid "60 (In seconds)" +msgstr "60 (In seconds)" + +#. module: sh_survey_all_in_one +#: model_terms:ir.ui.view,arch_db:sh_survey_all_in_one.sh_survey_extra_fields_survey_que_form_view +msgid "9:00" +msgstr "9:00" + +#. module: sh_survey_all_in_one +#: model_terms:ir.ui.view,arch_db:sh_survey_all_in_one.survey_page_fill +msgid "" +"Result:\n" +" " +msgstr "" +"結果:\n" +" " + +#. module: sh_survey_all_in_one +#: model_terms:ir.ui.view,arch_db:sh_survey_all_in_one.survey_page_fill +msgid "Camera" +msgstr "相機" + +#. module: sh_survey_all_in_one +#: code:addons/sh_survey_all_in_one/sh_survey_matrix_adv/models/survey.py:0 +#, python-format +msgid "A question is either skipped, either answered. Not both." +msgstr "一個問題要么被跳過,要么回答。不是都。" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_user_input_line__value_ans_sh_address +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_question__question_type__que_sh_address +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_user_input_line__answer_type__ans_sh_address +msgid "Address" +msgstr "地址" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_sh_survmate_settings__sh_survmate_answer_color +msgid "Answer Color" +msgstr "回答顏色" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_sh_survmate_settings__sh_survmate_section_answer_text_color +msgid "Answer Text Color" +msgstr "回答文字顏色" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_user_input_line__answer_type +msgid "Answer Type" +msgstr "答案類型" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_sh_survmate_settings__sh_survmate_bg_color +msgid "Background Color" +msgstr "背景顏色" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_user_input_line__value_ans_sh_barcode +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_question__question_type__que_sh_barcode +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_question_answer__sh_value_type__que_sh_barcode +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_user_input_line__answer_type__ans_sh_barcode +msgid "Barcode" +msgstr "條碼" + +#. module: sh_survey_all_in_one +#: model_terms:ir.ui.view,arch_db:sh_survey_all_in_one.survey_page_fill +msgid "Barcode Scanner" +msgstr "條形碼掃描器" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_sh_survmate_settings__sh_survmate_button_style +msgid "Button Style" +msgstr "按鈕樣式" + +#. module: sh_survey_all_in_one +#: model_terms:ir.ui.view,arch_db:sh_survey_all_in_one.sh_survmate_theme_button_style_wizard_view +msgid "Cancel" +msgstr "取消" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_sh_survmate_settings__sh_survmate_checkbox_style +msgid "Checkbox Style" +msgstr "複選框樣式" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_question_answer__sh_value_type +msgid "Choices Type" +msgstr "選擇類型" + +#. module: sh_survey_all_in_one +#: model_terms:ir.ui.view,arch_db:sh_survey_all_in_one.tmpl_sh_address +msgid "City" +msgstr "城市" + +#. module: sh_survey_all_in_one +#: model_terms:ir.ui.view,arch_db:sh_survey_all_in_one.tmpl_sh_signature +msgid "Clear" +msgstr "清除" + +#. module: sh_survey_all_in_one +#: model_terms:ir.ui.view,arch_db:sh_survey_all_in_one.matrix +#: model_terms:ir.ui.view,arch_db:sh_survey_all_in_one.tmpl_sh_file_print +msgid "Click here to download file" +msgstr "單擊此處下載文件" + +#. module: sh_survey_all_in_one +#: model_terms:ir.ui.view,arch_db:sh_survey_all_in_one.survey_page_fill +msgid "Close" +msgstr "關" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_user_input_line__value_ans_sh_color +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_question__question_type__que_sh_color +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_question_answer__sh_value_type__que_sh_color +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_user_input_line__answer_type__ans_sh_color +msgid "Color" +msgstr "顏色" + +#. module: sh_survey_all_in_one +#: model_terms:ir.ui.view,arch_db:sh_survey_all_in_one.sh_survmate_theme_survey_settings_form +msgid "Colors" +msgstr "顏色" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_user_input_line__value_ans_sh_country_id +#: model_terms:ir.ui.view,arch_db:sh_survey_all_in_one.tmpl_sh_address +msgid "Country" +msgstr "國家" + +#. module: sh_survey_all_in_one +#: model_terms:ir.ui.view,arch_db:sh_survey_all_in_one.tmpl_sh_address +msgid "Country..." +msgstr "國家..." + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_sh_survmate_settings__create_uid +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_sh_survmate_theme_button_design_wizard__create_uid +msgid "Created by" +msgstr "由...製作" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_sh_survmate_settings__create_date +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_sh_survmate_theme_button_design_wizard__create_date +msgid "Created on" +msgstr "創建於" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_question__matrix_subtype__sh_custom_matrix +msgid "Custom Matrix" +msgstr "自定義矩陣" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_question_answer__sh_value_type__date +msgid "Date" +msgstr "日期" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_question_answer__sh_value_type__datetime +msgid "Datetime" +msgstr "約會時間" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_sh_survmate_settings__display_name +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_sh_survmate_theme_button_design_wizard__display_name +msgid "Display Name" +msgstr "顯示名稱" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_user_input_line__value_ans_sh_email +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_question__question_type__que_sh_email +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_question_answer__sh_value_type__que_sh_email +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_user_input_line__answer_type__ans_sh_email +msgid "E-mail" +msgstr "電子郵件" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_user_input_line__value_ans_sh_file +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_question__question_type__que_sh_file +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_question_answer__sh_value_type__que_sh_file +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_user_input_line__answer_type__ans_sh_file +msgid "File" +msgstr "文件" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_user_input_line__value_ans_sh_file_fname +msgid "File Name" +msgstr "文件名" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_question__sh_survmate_theme_grid_type +msgid "Grid" +msgstr "網格" + +#. module: sh_survey_all_in_one +#: model:ir.model,name:sh_survey_all_in_one.model_ir_http +msgid "HTTP Routing" +msgstr "HTTP路由" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_sh_survmate_settings__id +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_sh_survmate_theme_button_design_wizard__id +msgid "ID" +msgstr "ID" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_user_input_line__access_token +msgid "Identification token" +msgstr "識別令牌" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_sh_survmate_theme_button_design_wizard__img_src +msgid "Image Src" +msgstr "圖像SRC" + +#. module: sh_survey_all_in_one +#: model:ir.model,name:sh_survey_all_in_one.model_survey_question +msgid "Inherit Survey Question for extra fields" +msgstr "繼承額外領域的調查問題" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_sh_survmate_settings__sh_survmate_input_style +msgid "Input Style" +msgstr "輸入樣式" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_question__validation_is_sh_textbox_pattern +msgid "Input must be in specified pattern" +msgstr "輸入必須採用指定模式" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_survey__sh_is_time_fixed +msgid "Is Fixed Timer Position?" +msgstr "固定計時器位置嗎?" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_sh_survmate_settings____last_update +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_sh_survmate_theme_button_design_wizard____last_update +msgid "Last Modified on" +msgstr "最後修改" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_sh_survmate_settings__write_uid +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_sh_survmate_theme_button_design_wizard__write_uid +msgid "Last Updated by" +msgstr "最後更新" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_sh_survmate_settings__write_date +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_sh_survmate_theme_button_design_wizard__write_date +msgid "Last Updated on" +msgstr "最後更新" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_user_input_line__value_sh_location_latitude +msgid "Latitude" +msgstr "緯度" + +#. module: sh_survey_all_in_one +#: model_terms:ir.ui.view,arch_db:sh_survey_all_in_one.sh_survmate_theme_survey_question_form_inherit +msgid "Layout" +msgstr "佈局" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_user_input_line__value_ans_sh_location +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_question__question_type__que_sh_location +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_user_input_line__answer_type__ans_sh_location +msgid "Location" +msgstr "地點" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_user_input_line__value_sh_location_longitude +msgid "Longitude" +msgstr "經度" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_user_input_line__value_ans_sh_many2many +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_question__question_type__que_sh_many2many +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_user_input_line__answer_type__ans_sh_many2many +msgid "Many2many" +msgstr "許多人" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_user_input_line__value_ans_sh_many2one +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_question__question_type__que_sh_many2one +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_user_input_line__answer_type__ans_sh_many2one +msgid "Many2one" +msgstr "許多2one" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_question__matrix_subtype +msgid "Matrix Type" +msgstr "矩陣類型" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_question_answer__sh_matrix_range_max +msgid "Maximum" +msgstr "最大" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_question__validation_sh_month_max +msgid "Maximum Month" +msgstr "最大月份" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_question__validation_sh_range_max +msgid "Maximum Range" +msgstr "最大範圍" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_question__validation_sh_time_max +msgid "Maximum Time" +msgstr "最大時間" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_question__validation_sh_week_max +msgid "Maximum Week" +msgstr "最高週" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_question_answer__sh_matrix_range_min +msgid "Minimum" +msgstr "最低限度" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_question__validation_sh_month_min +msgid "Minimum Month" +msgstr "最低月" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_question__validation_sh_range_min +msgid "Minimum Range" +msgstr "最小範圍" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_question__validation_sh_time_min +msgid "Minimum Time" +msgstr "最短時間" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_question__validation_sh_week_min +msgid "Minimum Week" +msgstr "至少一周" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_question__que_sh_many2many_model_id +msgid "Model" +msgstr "模型" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_question__que_sh_many2one_model_id +msgid "Model " +msgstr "模型" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_user_input_line__value_ans_sh_month +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_question__question_type__que_sh_month +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_question_answer__sh_value_type__que_sh_month +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_user_input_line__answer_type__ans_sh_month +msgid "Month" +msgstr "月" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_question__validation_sh_month_step +msgid "Month Step" +msgstr "月步" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_question_answer__sh_value_type__free_text +msgid "Multiple Lines Text Box" +msgstr "多行文本框" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_sh_survmate_settings__name +msgid "Name" +msgstr "姓名" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_question_answer__sh_value_type__numerical_box +msgid "Numerical Value" +msgstr "數值" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_user_input_line__value_ans_sh_password +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_question__question_type__que_sh_password +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_question_answer__sh_value_type__que_sh_password +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_user_input_line__answer_type__ans_sh_password +msgid "Password" +msgstr "密碼" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_question__validation_sh_password_maxlen +msgid "Password Maximum Length" +msgstr "密碼最大長度" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_question__validation_sh_password_minlen +msgid "Password Minimum Length" +msgstr "密碼最小長度" + +#. module: sh_survey_all_in_one +#: model_terms:ir.ui.view,arch_db:sh_survey_all_in_one.sh_survmate_theme_survey_settings_form +msgid "Preview" +msgstr "預習" + +#. module: sh_survey_all_in_one +#: code:addons/sh_survey_all_in_one/sh_survmate_theme/models/survey.py:0 +#, python-format +msgid "Preview Style" +msgstr "預覽樣式" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_sh_survmate_settings__sh_survmate_theme_primary_color +msgid "Primary Color" +msgstr "原色" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_user_input_line__value_ans_sh_qrcode +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_question__question_type__que_sh_qrcode +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_question_answer__sh_value_type__que_sh_qrcode +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_user_input_line__answer_type__ans_sh_qrcode +msgid "QR Code" +msgstr "二維碼" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_sh_survmate_settings__sh_survmate_question_color +msgid "Question Color" +msgstr "問題顏色" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_question__question_type +msgid "Question Type" +msgstr "問題類型" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_sh_survmate_settings__sh_survmate_radio_button_style +msgid "Radio Button Style" +msgstr "廣播按鈕樣式" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_user_input_line__value_ans_sh_range +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_question__question_type__que_sh_range +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_question_answer__sh_value_type__que_sh_range +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_user_input_line__answer_type__ans_sh_range +msgid "Range" +msgstr "範圍" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_question__validation_sh_range_step +msgid "Range Step" +msgstr "範圍步驟" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_sh_survmate_settings__sh_survmate_theme_secondary_color +msgid "Secondary Color" +msgstr "次要顏色" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_sh_survmate_settings__sh_survmate_section_title_color +msgid "Section Background Color" +msgstr "部分背景顏色" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_sh_survmate_settings__sh_survmate_section_title_font_color +msgid "Section Font Color" +msgstr "部分字體顏色" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_sh_survmate_settings__sh_survmate_section_style +msgid "Section Style" +msgstr "部分樣式" + +#. module: sh_survey_all_in_one +#: model_terms:ir.ui.view,arch_db:sh_survey_all_in_one.tmpl_sh_many2one +msgid "Select..." +msgstr "選擇..." + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_sh_survmate_settings__sh_survmate_show_bg_color +msgid "Show Background Color" +msgstr "顯示背景顏色" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_question__sh_is_show_city +msgid "Show City Field?" +msgstr "展示城市場?" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_question__sh_is_show_country_id +msgid "Show Country Field?" +msgstr "展示國家領域?" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_question__sh_is_show_state_id +msgid "Show State Field?" +msgstr "展示狀態領域?" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_question__sh_is_show_street +msgid "Show Street Field?" +msgstr "表演街場?" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_question__sh_is_show_street2 +msgid "Show Street2 Field?" +msgstr "Show Street2 Field?" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_question__sh_is_show_zip +msgid "Show Zip Field?" +msgstr "顯示Zip字段?" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_user_input_line__value_ans_sh_signature +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_question__question_type__que_sh_signature +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_user_input_line__answer_type__ans_sh_signature +msgid "Signature" +msgstr "簽名" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_user_input_line__value_ans_sh_signature_src +msgid "Signature src" +msgstr "簽名SRC" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_question_answer__sh_value_type__textbox +msgid "Single Line Text Box" +msgstr "單行文本框" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_user_input_line__value_ans_sh_state_id +msgid "State" +msgstr "狀態" + +#. module: sh_survey_all_in_one +#: model_terms:ir.ui.view,arch_db:sh_survey_all_in_one.tmpl_sh_address +msgid "State / Province" +msgstr "州 /省" + +#. module: sh_survey_all_in_one +#: model_terms:ir.ui.view,arch_db:sh_survey_all_in_one.tmpl_sh_address +msgid "State / Province..." +msgstr "州 /省..." + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_question_answer__sh_matrix_range_step +msgid "Step" +msgstr "步" + +#. module: sh_survey_all_in_one +#: model_terms:ir.ui.view,arch_db:sh_survey_all_in_one.tmpl_sh_address +msgid "Street 2" +msgstr "街2" + +#. module: sh_survey_all_in_one +#: model_terms:ir.ui.view,arch_db:sh_survey_all_in_one.tmpl_sh_address +msgid "Street and Number" +msgstr "街和數字" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__sh_survmate_settings__sh_survmate_button_style__style_1 +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__sh_survmate_settings__sh_survmate_checkbox_style__style_1 +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__sh_survmate_settings__sh_survmate_input_style__style_1 +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__sh_survmate_settings__sh_survmate_radio_button_style__style_1 +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__sh_survmate_settings__sh_survmate_section_style__style_1 +msgid "Style 1" +msgstr "樣式1" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__sh_survmate_settings__sh_survmate_button_style__style_2 +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__sh_survmate_settings__sh_survmate_checkbox_style__style_2 +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__sh_survmate_settings__sh_survmate_input_style__style_2 +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__sh_survmate_settings__sh_survmate_radio_button_style__style_2 +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__sh_survmate_settings__sh_survmate_section_style__style_2 +msgid "Style 2" +msgstr "樣式2" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__sh_survmate_settings__sh_survmate_button_style__style_3 +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__sh_survmate_settings__sh_survmate_checkbox_style__style_3 +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__sh_survmate_settings__sh_survmate_input_style__style_3 +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__sh_survmate_settings__sh_survmate_radio_button_style__style_3 +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__sh_survmate_settings__sh_survmate_section_style__style_3 +msgid "Style 3" +msgstr "樣式3" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__sh_survmate_settings__sh_survmate_button_style__style_4 +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__sh_survmate_settings__sh_survmate_checkbox_style__style_4 +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__sh_survmate_settings__sh_survmate_input_style__style_4 +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__sh_survmate_settings__sh_survmate_radio_button_style__style_4 +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__sh_survmate_settings__sh_survmate_section_style__style_4 +msgid "Style 4" +msgstr "樣式4" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__sh_survmate_settings__sh_survmate_button_style__style_5 +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__sh_survmate_settings__sh_survmate_checkbox_style__style_5 +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__sh_survmate_settings__sh_survmate_input_style__style_5 +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__sh_survmate_settings__sh_survmate_radio_button_style__style_5 +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__sh_survmate_settings__sh_survmate_section_style__style_5 +msgid "Style 5" +msgstr "樣式5" + +#. module: sh_survey_all_in_one +#: model_terms:ir.ui.view,arch_db:sh_survey_all_in_one.sh_survmate_theme_survey_settings_form +msgid "Styles" +msgstr "樣式" + +#. module: sh_survey_all_in_one +#: model:ir.model,name:sh_survey_all_in_one.model_survey_survey +msgid "Survey" +msgstr "民意調查" + +#. module: sh_survey_all_in_one +#: model:ir.model,name:sh_survey_all_in_one.model_survey_question_answer +msgid "Survey Label" +msgstr "調查標籤" + +#. module: sh_survey_all_in_one +#: model:ir.model,name:sh_survey_all_in_one.model_survey_user_input_line +msgid "Survey User Input Line for extra fields" +msgstr "調查用戶輸入線的額外字段" + +#. module: sh_survey_all_in_one +#: model:ir.model,name:sh_survey_all_in_one.model_survey_user_input +msgid "Survey User Input for custom matrix" +msgstr "定制矩陣的調查用戶輸入" + +#. module: sh_survey_all_in_one +#: model:ir.actions.act_window,name:sh_survey_all_in_one.sh_survmate_theme_survey_settings_action +#: model:ir.model,name:sh_survey_all_in_one.model_sh_survmate_settings +#: model:ir.ui.menu,name:sh_survey_all_in_one.sh_survmate_theme_survey_settings_menu +msgid "Survmate Settings" +msgstr "倖存的設置" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_survey__sh_survmate_settings_id +#: model_terms:ir.ui.view,arch_db:sh_survey_all_in_one.sh_survmate_theme_survey_form_inherit +msgid "Survmate Theme" +msgstr "倖存的主題" + +#. module: sh_survey_all_in_one +#: model:ir.model,name:sh_survey_all_in_one.model_sh_survmate_theme_button_design_wizard +msgid "Survmate Theme Button Design" +msgstr "倖存的主題按鈕設計" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_question__validation_sh_textbox_pattern +msgid "Textbox Pattern" +msgstr "文本框圖案" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_question__validation_sh_textbox_placeholder +msgid "Textbox Placeholder" +msgstr "TextBox佔位符" + +#. module: sh_survey_all_in_one +#: model_terms:ir.ui.view,arch_db:sh_survey_all_in_one.sh_survmate_theme_button_style_wizard_view +msgid "Theme Preview" +msgstr "主題預覽" + +#. module: sh_survey_all_in_one +#. openerp-web +#: code:addons/sh_survey_all_in_one/static/src/js/extra_addons/sh_survey_extra_fields/survey_form.js:0 +#, python-format +msgid "This answer must be an URL." +msgstr "這個答案必須是一個URL。" + +#. module: sh_survey_all_in_one +#. openerp-web +#: code:addons/sh_survey_all_in_one/static/src/js/extra_addons/sh_survey_extra_fields/survey_form.js:0 +#, python-format +msgid "This answer must be an email address." +msgstr "此答案必須是電子郵件地址。" + +#. module: sh_survey_all_in_one +#. openerp-web +#: code:addons/sh_survey_all_in_one/static/src/js/extra_addons/sh_survey_extra_fields/survey_form.js:0 +#, python-format +msgid "This is not a date" +msgstr "這不是約會" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_user_input_line__value_ans_sh_time +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_question__question_type__que_sh_time +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_question_answer__sh_value_type__que_sh_time +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_user_input_line__answer_type__ans_sh_time +msgid "Time" +msgstr "時間" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_question__validation_sh_time_step +msgid "Time Step" +msgstr "時間步驟" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_user_input_line__value_ans_sh_url +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_question__question_type__que_sh_url +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_question_answer__sh_value_type__que_sh_url +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_user_input_line__answer_type__ans_sh_url +msgid "URL" +msgstr "URL" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_user_input_line__value_ans_sh_city +msgid "Value Ans Sh City" +msgstr "價值Ans Sh City" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_user_input_line__value_ans_sh_street +msgid "Value Ans Sh Street" +msgstr "價值ANS SH街" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_user_input_line__value_ans_sh_street2 +msgid "Value Ans Sh Street2" +msgstr "價值ANS SH Street2" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_user_input_line__value_ans_sh_zip +msgid "Value Ans Sh Zip" +msgstr "價值Ans SH Zip" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_user_input_line__value_ans_sh_week +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_question__question_type__que_sh_week +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_question_answer__sh_value_type__que_sh_week +#: model:ir.model.fields.selection,name:sh_survey_all_in_one.selection__survey_user_input_line__answer_type__ans_sh_week +msgid "Week" +msgstr "星期" + +#. module: sh_survey_all_in_one +#: model:ir.model.fields,field_description:sh_survey_all_in_one.field_survey_question__validation_sh_week_step +msgid "Week Step" +msgstr "週步" + +#. module: sh_survey_all_in_one +#: model_terms:ir.ui.view,arch_db:sh_survey_all_in_one.tmpl_sh_address +msgid "Zip Code" +msgstr "郵政編碼" + +#. module: sh_survey_all_in_one +#: model_terms:ir.ui.view,arch_db:sh_survey_all_in_one.sh_survey_extra_fields_survey_que_form_view +msgid "[0-9]{4}" +msgstr "[0-9] {4}" + +#. module: sh_survey_all_in_one +#: model_terms:ir.ui.view,arch_db:sh_survey_all_in_one.sh_survmate_theme_survey_settings_form +msgid "e.g. Theme Settings for Survey A" +msgstr "例如調查主題設置" + +#. module: sh_survey_all_in_one +#: model_terms:ir.ui.view,arch_db:sh_survey_all_in_one.matrix +#: model_terms:ir.ui.view,arch_db:sh_survey_all_in_one.tmpl_sh_email +msgid "example@domain.com" +msgstr "示例@domain.com" + +#. module: sh_survey_all_in_one +#: model_terms:ir.ui.view,arch_db:sh_survey_all_in_one.matrix +#: model_terms:ir.ui.view,arch_db:sh_survey_all_in_one.tmpl_sh_time +#: model_terms:ir.ui.view,arch_db:sh_survey_all_in_one.tmpl_sh_url +msgid "https://example.com" +msgstr "https://example.com" + +#. module: sh_survey_all_in_one +#: model_terms:ir.ui.view,arch_db:sh_survey_all_in_one.sh_survey_extra_fields_survey_que_form_view +msgid "nnnn" +msgstr "nnnn" + +#. module: sh_survey_all_in_one +#: model_terms:ir.ui.view,arch_db:sh_survey_all_in_one.sh_survmate_theme_button_style_wizard_view +msgid "preview image" +msgstr "預覽圖像" diff --git a/sh_survey_all_in_one/security/ir.model.access.csv b/sh_survey_all_in_one/security/ir.model.access.csv new file mode 100644 index 0000000..c418497 --- /dev/null +++ b/sh_survey_all_in_one/security/ir.model.access.csv @@ -0,0 +1,3 @@ +id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink +access_survmate_settings_all,access.survmate.settings.all,model_sh_survmate_settings,,1,1,1,1 +access_sh_survmate_theme_button_design_wizard,access.sh.survmate.theme.button.design.wizard,model_sh_survmate_theme_button_design_wizard,,1,1,1,1 diff --git a/sh_survey_all_in_one/sh_survey_extra_fields/__init__.py b/sh_survey_all_in_one/sh_survey_extra_fields/__init__.py new file mode 100644 index 0000000..7659ee9 --- /dev/null +++ b/sh_survey_all_in_one/sh_survey_extra_fields/__init__.py @@ -0,0 +1,4 @@ +# Part of Softhealer Technologies. + +from . import models +from . import controllers diff --git a/sh_survey_all_in_one/sh_survey_extra_fields/__pycache__/__init__.cpython-310.pyc b/sh_survey_all_in_one/sh_survey_extra_fields/__pycache__/__init__.cpython-310.pyc new file mode 100644 index 0000000..e00ba9c Binary files /dev/null and b/sh_survey_all_in_one/sh_survey_extra_fields/__pycache__/__init__.cpython-310.pyc differ diff --git a/sh_survey_all_in_one/sh_survey_extra_fields/controllers/__init__.py b/sh_survey_all_in_one/sh_survey_extra_fields/controllers/__init__.py new file mode 100644 index 0000000..4854c51 --- /dev/null +++ b/sh_survey_all_in_one/sh_survey_extra_fields/controllers/__init__.py @@ -0,0 +1,3 @@ +# Part of Softhealer Technologies. + +from . import sh_survey_extra_fields diff --git a/sh_survey_all_in_one/sh_survey_extra_fields/controllers/__pycache__/__init__.cpython-310.pyc b/sh_survey_all_in_one/sh_survey_extra_fields/controllers/__pycache__/__init__.cpython-310.pyc new file mode 100644 index 0000000..124f426 Binary files /dev/null and b/sh_survey_all_in_one/sh_survey_extra_fields/controllers/__pycache__/__init__.cpython-310.pyc differ diff --git a/sh_survey_all_in_one/sh_survey_extra_fields/controllers/__pycache__/sh_survey_extra_fields.cpython-310.pyc b/sh_survey_all_in_one/sh_survey_extra_fields/controllers/__pycache__/sh_survey_extra_fields.cpython-310.pyc new file mode 100644 index 0000000..1641c24 Binary files /dev/null and b/sh_survey_all_in_one/sh_survey_extra_fields/controllers/__pycache__/sh_survey_extra_fields.cpython-310.pyc differ diff --git a/sh_survey_all_in_one/sh_survey_extra_fields/controllers/sh_survey_extra_fields.py b/sh_survey_all_in_one/sh_survey_extra_fields/controllers/sh_survey_extra_fields.py new file mode 100644 index 0000000..f45fde9 --- /dev/null +++ b/sh_survey_all_in_one/sh_survey_extra_fields/controllers/sh_survey_extra_fields.py @@ -0,0 +1,84 @@ +# Part of Softhealer Technologies. + +from odoo import http +from odoo.http import request + + +class SurveyController(http.Controller): + + @http.route(['/survey/get_many2many_field_data'], type='json', auth="public", methods=['POST']) + def get_many2many_field_data(self, **kw): + records = [] + rec_name = False + if kw.get("model_id",False): + modelRecord = request.env["ir.model"].sudo().search([ + ('id','=',kw.get("model_id") ) + ],limit = 1) + if modelRecord: + modelRecord = modelRecord.sudo(); + rec_name = modelRecord._rec_name + rec_name = 'display_name' + records = request.env[modelRecord.model].sudo().search_read([],fields=[rec_name,'id']) + + # give any rec_name value to name key in record in order to use in js. + if records: + records = [dict(item, name=item.get(rec_name)) for item in records] + return dict( + records = records, + rec_name = rec_name, + ) + + @http.route(['/survey/get_many2one_field_data'], type='json', auth="public", methods=['POST']) + def get_many2one_field_data(self, **kw): + records = [] + rec_name = False + if kw.get("model_id",False): + modelRecord = request.env["ir.model"].sudo().search([ + ('id','=',kw.get("model_id") ) + ],limit = 1) + if modelRecord: + modelRecord = modelRecord.sudo(); + rec_name = modelRecord._rec_name + records = request.env[modelRecord.model].sudo().search_read([],fields=[rec_name,'id']) + + # give any rec_name value to name key in record in order to use in js. + if records: + records = [dict(item, name=item.get(rec_name)) for item in records] + + return dict( + records = records, + rec_name = rec_name, + ) + + @http.route(['/survey/get_countries'], type='json', auth="public", methods=['POST']) + def get_countries(self,**kw): + return dict( + countries = request.env["res.country"].sudo().search_read([],fields=['name','id']), + country_states = request.env["res.country"].state_ids, + ) + + @http.route(['/survey/get_ountry_info/'], type='json', auth="public", methods=['POST']) + def get_ountry_info(self, country,**kw): + return dict( + states=[(st.id, st.name, st.code) for st in country.state_ids], + phone_code=country.phone_code, + zip_required=country.zip_required, + state_required=country.state_required, + ) + + @http.route('/survey/download///', type='http', auth='public', website=True) + def survey_download_file(self, **post): + base_url = request.env['ir.config_parameter'].sudo( + ).get_param('web.base.url') + download_url = base_url + if base_url and post.get('answer_id') and post.get('question_id') and post.get('answer_token'): + input_line_id = request.env['survey.user_input.line'].sudo().search([('user_input_id.access_token', '=', post.get( + 'answer_token')), ('question_id', '=', int(post.get('question_id'))), ('user_input_id', '=', int(post.get('answer_id')))], limit=1) + if input_line_id: + download_url += '/web/content/survey.user_input.line/' + \ + str(input_line_id.id)+'/value_ans_sh_file?download=true&access_token=' + post.get('answer_token') + return request.redirect(download_url) + + + + diff --git a/sh_survey_all_in_one/sh_survey_extra_fields/models/__init__.py b/sh_survey_all_in_one/sh_survey_extra_fields/models/__init__.py new file mode 100644 index 0000000..db191d5 --- /dev/null +++ b/sh_survey_all_in_one/sh_survey_extra_fields/models/__init__.py @@ -0,0 +1,4 @@ +# Part of Softhealer Technologies. + +from . import survey +from . import ir_http diff --git a/sh_survey_all_in_one/sh_survey_extra_fields/models/__pycache__/__init__.cpython-310.pyc b/sh_survey_all_in_one/sh_survey_extra_fields/models/__pycache__/__init__.cpython-310.pyc new file mode 100644 index 0000000..90e3d51 Binary files /dev/null and b/sh_survey_all_in_one/sh_survey_extra_fields/models/__pycache__/__init__.cpython-310.pyc differ diff --git a/sh_survey_all_in_one/sh_survey_extra_fields/models/__pycache__/ir_http.cpython-310.pyc b/sh_survey_all_in_one/sh_survey_extra_fields/models/__pycache__/ir_http.cpython-310.pyc new file mode 100644 index 0000000..857cb65 Binary files /dev/null and b/sh_survey_all_in_one/sh_survey_extra_fields/models/__pycache__/ir_http.cpython-310.pyc differ diff --git a/sh_survey_all_in_one/sh_survey_extra_fields/models/__pycache__/survey.cpython-310.pyc b/sh_survey_all_in_one/sh_survey_extra_fields/models/__pycache__/survey.cpython-310.pyc new file mode 100644 index 0000000..3a28237 Binary files /dev/null and b/sh_survey_all_in_one/sh_survey_extra_fields/models/__pycache__/survey.cpython-310.pyc differ diff --git a/sh_survey_all_in_one/sh_survey_extra_fields/models/ir_http.py b/sh_survey_all_in_one/sh_survey_extra_fields/models/ir_http.py new file mode 100644 index 0000000..9e69722 --- /dev/null +++ b/sh_survey_all_in_one/sh_survey_extra_fields/models/ir_http.py @@ -0,0 +1,34 @@ +# -*- coding: utf-8 -*- + + +from odoo import models + + +class Http(models.AbstractModel): + _inherit = 'ir.http' + + def binary_content(self, xmlid=None, model='ir.attachment', id=None, field='datas', + unique=False, filename=None, filename_field='name', download=False, + mimetype=None, default_mimetype='application/octet-stream', + access_token=None): + + obj = None + if xmlid: + obj = self._xmlid_to_obj(self.env, xmlid) + if id and model == 'survey.user_input.line' and access_token: + obj = self.env[model].browse(int(id)) + if obj and obj.sudo().access_token == access_token: + obj = obj.sudo() + self = self.sudo() + if obj: + obj.check_access_rights('read') + obj.check_access_rule('read') + return super(Http, self).binary_content( + xmlid=xmlid, model=model, id=id, field=field, unique=unique, filename=filename, + filename_field=filename_field, download=download, mimetype=mimetype, + default_mimetype=default_mimetype, access_token=access_token) + + + + + \ No newline at end of file diff --git a/sh_survey_all_in_one/sh_survey_extra_fields/models/survey.py b/sh_survey_all_in_one/sh_survey_extra_fields/models/survey.py new file mode 100644 index 0000000..814efba --- /dev/null +++ b/sh_survey_all_in_one/sh_survey_extra_fields/models/survey.py @@ -0,0 +1,634 @@ +# Part of Softhealer Technologies. + +import base64 +import datetime +import logging +import re +from odoo import api, fields, models +email_validator = re.compile(r"[^@]+@[^@]+\.[^@]+") +_logger = logging.getLogger(__name__) + +from urllib import parse + +class SurveyQuestion(models.Model): + _inherit = 'survey.question' + _description = 'Inherit Survey Question for extra fields' + + def _get_stats_summary_data(self, user_input_lines): + stats = {} + if self.question_type in ['simple_choice', 'multiple_choice','que_sh_many2one','que_sh_many2many']: + stats.update(self._get_stats_summary_data_choice(user_input_lines)) + elif self.question_type == 'numerical_box': + stats.update(self._get_stats_summary_data_numerical(user_input_lines)) + + if self.question_type in ['numerical_box', 'date', 'datetime']: + stats.update(self._get_stats_summary_data_scored(user_input_lines)) + return stats + + def _get_stats_data(self, user_input_lines): + if self.question_type == 'simple_choice': + return self._get_stats_data_answers(user_input_lines) + elif self.question_type == 'que_sh_many2one': + return self._get_stats_data_answers(user_input_lines) + elif self.question_type == 'que_sh_many2many': + table_data, graph_data = self._get_stats_data_answers(user_input_lines) + return table_data, [{'key': self.title, 'values': graph_data}] + + elif self.question_type == 'multiple_choice': + table_data, graph_data = self._get_stats_data_answers(user_input_lines) + return table_data, [{'key': self.title, 'values': graph_data}] + elif self.question_type == 'matrix': + return self._get_stats_graph_data_matrix(user_input_lines) + return [line for line in user_input_lines], [] + validation_sh_time_min = fields.Char('Minimum Time') + validation_sh_time_max = fields.Char('Maximum Time') + validation_sh_time_step = fields.Integer('Time Step', default=60) + + validation_sh_range_min = fields.Integer('Minimum Range') + validation_sh_range_max = fields.Integer('Maximum Range') + validation_sh_range_step = fields.Integer('Range Step') + + validation_sh_week_min = fields.Char('Minimum Week') + validation_sh_week_max = fields.Char('Maximum Week') + validation_sh_week_step = fields.Integer('Week Step', default=1) + + validation_sh_month_min = fields.Char('Minimum Month') + validation_sh_month_max = fields.Char('Maximum Month') + validation_sh_month_step = fields.Integer('Month Step', default=1) + + validation_sh_password_minlen = fields.Integer('Password Minimum Length') + validation_sh_password_maxlen = fields.Integer('Password Maximum Length') + + #for pattern in odoo standard textbox + validation_is_sh_textbox_pattern = fields.Boolean( + 'Input must be in specified pattern') + validation_sh_textbox_pattern = fields.Char('Textbox Pattern') + validation_sh_textbox_placeholder = fields.Char('Textbox Placeholder') + + que_sh_many2one_model_id = fields.Many2one(comodel_name="ir.model", string="Model ") + + que_sh_many2many_model_id = fields.Many2one(comodel_name="ir.model", string="Model") + + # address fields + sh_is_show_street = fields.Boolean(string="Show Street Field?",default = True) + sh_is_show_street2 = fields.Boolean(string="Show Street2 Field?",default = True) + sh_is_show_zip = fields.Boolean(string="Show Zip Field?",default = True) + sh_is_show_city = fields.Boolean(string="Show City Field?",default = True) + sh_is_show_state_id = fields.Boolean(string="Show State Field?",default = True) + sh_is_show_country_id = fields.Boolean(string="Show Country Field?",default = True) + + # address fields labels + sh_is_show_street_label = fields.Char( + string='Street Label', + translate=True + ) + sh_is_show_street2_label = fields.Char( + string='Street 2 Label', + translate=True + ) + sh_is_show_zip_label = fields.Char( + string='Zip Label', + translate=True + ) + sh_is_show_city_label = fields.Char( + string='City Label', + translate=True + ) + sh_is_show_country_id_label = fields.Char( + string='Country Label', + translate=True + ) + sh_is_show_state_id_label = fields.Char( + string='State Label', + translate=True + ) + + question_type = fields.Selection(selection_add=[ + ('que_sh_color', 'Color'), + ('que_sh_email', 'E-mail'), + ('que_sh_url', 'URL'), + ('que_sh_time', 'Time'), + ('que_sh_range', 'Range'), + ('que_sh_week', 'Week'), + ('que_sh_month', 'Month'), + ('que_sh_password', 'Password'), + ('que_sh_file', 'File'), + ('que_sh_signature', 'Signature'), + ('que_sh_many2one', 'Many2one'), + ('que_sh_many2many', 'Many2many'), + ('que_sh_address', 'Address'), + ]) + # ------------------------------------------------------------ + # VALIDATION + # ------------------------------------------------------------ + + def validate_question(self, answer, comment=None): + """ Validate question, depending on question type and parameters + for simple choice, text, date and number, answer is simply the answer of the question. + For other multiple choices questions, answer is a list of answers (the selected choices + or a list of selected answers per question -for matrix type-): + - Simple answer : answer = 'example' or 2 or question_answer_id or 2019/10/10 + - Multiple choice : answer = [question_answer_id1, question_answer_id2, question_answer_id3] + - Matrix: answer = { 'rowId1' : [colId1, colId2,...], 'rowId2' : [colId1, colId3, ...] } + + return dict {question.id (int): error (str)} -> empty dict if no validation error. + """ + self.ensure_one() + if isinstance(answer, str): + answer = answer.strip() + # Empty answer to mandatory question + if self.constr_mandatory and not answer and self.question_type not in ['simple_choice', 'multiple_choice']: + return {self.id: self.constr_error_msg} + + # because in choices question types, comment can count as answer + if answer or self.question_type in ['simple_choice', 'multiple_choice']: + if self.question_type == 'char_box': + return self._validate_char_box(answer) + elif self.question_type == 'numerical_box': + return self._validate_numerical_box(answer) + elif self.question_type in ['date', 'datetime']: + return self._validate_date(answer) + elif self.question_type in ['simple_choice', 'multiple_choice']: + return self._validate_choice(answer, comment) + elif self.question_type == 'matrix': + return self._validate_matrix(answer) + elif self.question_type == 'que_sh_color': + return self.validate_que_sh_color(answer) + elif self.question_type == 'que_sh_email': + return self.validate_que_sh_email(answer) + elif self.question_type == 'que_sh_url': + return self.validate_que_sh_url(answer) + elif self.question_type == 'que_sh_time': + return self.validate_que_sh_time(answer) + elif self.question_type == 'que_sh_range': + return self.validate_que_sh_range(answer) + elif self.question_type == 'que_sh_week': + return self.validate_que_sh_week(answer) + elif self.question_type == 'que_sh_month': + return self.validate_que_sh_month(answer) + elif self.question_type == 'que_sh_password': + return self.validate_que_sh_password(answer) + elif self.question_type == 'que_sh_file': + return self.validate_que_sh_file(answer) + elif self.question_type == 'que_sh_signature': + return self.validate_que_sh_signature(answer) + elif self.question_type == 'que_sh_many2one': + return self.validate_que_sh_many2one(answer) + elif self.question_type == 'que_sh_many2many': + return self.validate_que_sh_many2many(answer) + elif self.question_type == 'que_sh_address': + return self.validate_que_sh_address(answer) + return {} + + # ==================================================================== + #for color field. + # ==================================================================== + + def validate_que_sh_color(self, answer): + if self.constr_mandatory and not answer: + return {self.id: self.constr_error_msg} + return {} + + # ==================================================================== + #for email field. + # ==================================================================== + + def validate_que_sh_email(self, answer): + if self.constr_mandatory and not answer: + return {self.id: self.constr_error_msg} + return {} + + # ==================================================================== + #for url field. + # ==================================================================== + + def validate_que_sh_url(self, answer): + if self.constr_mandatory and not answer: + return {self.id: self.constr_error_msg} + return {} + + # ==================================================================== + #for time field. + # ==================================================================== + + def validate_que_sh_time(self, answer): + isData = self.question_type == 'que_sh_time' + if self.constr_mandatory and not answer: + return {self.id: self.constr_error_msg} + if self.validation_required: + # Check if answer is in the right range + if isData: + min_date = datetime.datetime.strptime( + self.validation_sh_time_min, '%H:%M') + max_date = datetime.datetime.strptime( + self.validation_sh_time_max, '%H:%M') + answer = datetime.datetime.strptime(answer, '%H:%M') + if answer < min_date or answer > max_date: + return {self.id: self.validation_error_msg} + + return {} + + # ==================================================================== + #for Range field. + # ==================================================================== + + def validate_que_sh_range(self, answer): + if self.constr_mandatory and not answer: + return {self.id: self.constr_error_msg} + return {} + + # ==================================================================== + #for Week field. + # ==================================================================== + + def validate_que_sh_week(self, answer): + if self.constr_mandatory and not answer: + return {self.id: self.constr_error_msg} + return {} + + # ==================================================================== + #for Month field. + # ==================================================================== + + def validate_que_sh_month(self, answer): + if self.constr_mandatory and not answer: + return {self.id: self.constr_error_msg} + return {} + + # ==================================================================== + #for Password field. + # ==================================================================== + + def validate_que_sh_password(self, answer): + isData = self.question_type == 'que_sh_password' + if self.constr_mandatory and not answer: + return {self.id: self.constr_error_msg} + if self.validation_required: + # Check if answer is in the right range + if isData: + minlen = self.validation_sh_password_minlen + maxlen = self.validation_sh_password_maxlen + if len(answer) < minlen or len(answer) > maxlen: + return {self.id: self.validation_error_msg} + return {} + + # ==================================================================== + #for File field. + # ==================================================================== + def validate_que_sh_file(self, answer): + if self.constr_mandatory and not answer: + return {self.id: self.constr_error_msg} + return {} + + + # ==================================================================== + #for Signature Field. + # ==================================================================== + def validate_que_sh_signature(self, answer): + if self.constr_mandatory and not answer: + return {self.id: self.constr_error_msg} + return {} + + # ==================================================================== + #for Many2one Field. + # ==================================================================== + def validate_que_sh_many2one(self, answer): + if self.constr_mandatory and not answer: + return {self.id: self.constr_error_msg} + return {} + + + # ==================================================================== + #for Many2many Field. + # ==================================================================== + def validate_que_sh_many2many(self, answer): + if self.constr_mandatory and not answer: + return {self.id: self.constr_error_msg} + return {} + + # ==================================================================== + #for Address Field. + # ==================================================================== + def validate_que_sh_address(self, answer): + if self.constr_mandatory and not answer: + return {self.id: self.constr_error_msg} + return {} + + +class SurveyUserInput(models.Model): + _inherit = 'survey.user_input' + + # def save_lines(self, question, answer, comment=None): + # """ Save answers to questions, depending on question type + # + # If an answer already exists for question and user_input_id, it will be + # overwritten (or deleted for 'choice' questions) (in order to maintain data consistency). + # """ + # old_answers = self.env['survey.user_input.line'].search([ + # ('user_input_id', '=', self.id), + # ('question_id', '=', question.id) + # ]) + # + # if question.question_type in ['char_box', 'text_box', 'numerical_box', 'date', 'datetime']: + # self._save_line_simple_answer(question, old_answers, answer) + # if question.save_as_email and answer: + # self.write({'email': answer}) + # if question.save_as_nickname and answer: + # self.write({'nickname': answer}) + # + # elif question.question_type in ['simple_choice', 'multiple_choice']: + # self._save_line_choice(question, old_answers, answer, comment) + # elif question.question_type == 'matrix': + # self._save_line_matrix(question, old_answers, answer, comment) + # elif question.question_type in ['que_sh_color']: + # self.save_line_que_sh_field( + # question, old_answers, answer, 'ans_sh_color') + # elif question.question_type in ['que_sh_email']: + # self.save_line_que_sh_field( + # question, old_answers, answer, 'ans_sh_email') + # elif question.question_type in ['que_sh_url']: + # self.save_line_que_sh_field( + # question, old_answers, answer, 'ans_sh_url') + # elif question.question_type in ['que_sh_time']: + # self.save_line_que_sh_field( + # question, old_answers, answer, 'ans_sh_time') + # elif question.question_type in ['que_sh_range']: + # self.save_line_que_sh_field( + # question, old_answers, answer, 'ans_sh_range') + # elif question.question_type in ['que_sh_week']: + # self.save_line_que_sh_field( + # question, old_answers, answer, 'ans_sh_week') + # elif question.question_type in ['que_sh_month']: + # self.save_line_que_sh_field( + # question, old_answers, answer, 'ans_sh_month') + # elif question.question_type in ['que_sh_password']: + # self.save_line_que_sh_field( + # question, old_answers, answer, 'ans_sh_password') + # elif question.question_type in ['que_sh_file']: + # self.save_line_que_sh_file( + # question, old_answers, answer, 'ans_sh_file') + # elif question.question_type in ['que_sh_signature']: + # self.save_line_que_sh_signature( + # question, old_answers, answer, 'ans_sh_signature') + # elif question.question_type in ['que_sh_address']: + # self.save_line_que_sh_address( + # question, old_answers, answer, 'ans_sh_address') + # + # elif question.question_type in ['que_sh_many2one']: + # self.save_line_que_sh_many2one( + # question, old_answers, answer, 'ans_sh_many2one') + # + # elif question.question_type in ['que_sh_many2many']: + # self.save_line_que_sh_many2many( + # question, old_answers, answer, 'ans_sh_many2many') + # + # else: + # raise AttributeError(question.question_type + + # ": This type of question has no saving function") + + # ==================================================================== + #for color field. + # ==================================================================== + + @api.model + def save_line_que_sh_field(self, question, old_answers, answer, answer_type): + vals_list = [] + vals = { + 'user_input_id': self.id, + 'question_id': question.id, + 'skipped': False, + 'answer_type': answer_type, + } + + if not answer or (isinstance(answer, str) and not answer.strip()): + vals.update(answer_type=None, skipped=True) + return vals + vals['value_%s' % answer_type] = answer + vals_list.append(vals) + old_answers.sudo().unlink() + return self.env['survey.user_input.line'].create(vals_list) + + @api.model + def save_line_que_sh_file(self, question, old_answers, answer, answer_type): + vals_list = [] + vals = { + 'user_input_id': self.id, + 'question_id': question.id, + 'skipped': False, + 'answer_type': answer_type, + 'value_ans_sh_file': answer, + 'value_ans_sh_file_fname': question.title, + } + if not answer or (isinstance(answer, str) and not answer.strip()): + vals.update(answer_type=None, skipped=True) + return vals + vals['value_%s' % answer_type] = answer + vals_list.append(vals) + old_answers.sudo().unlink() + return self.env['survey.user_input.line'].create(vals_list) + + @api.model + def save_line_que_sh_signature(self, question, old_answers, answer, answer_type): + vals_list = [] + vals = { + 'user_input_id': self.id, + 'question_id': question.id, + 'skipped': False, + 'answer_type': answer_type, + 'value_ans_sh_signature': answer, + 'value_ans_sh_signature_src': answer, + + } + if not answer or (isinstance(answer, str) and not answer.strip()): + vals.update(answer_type=None, skipped=True) + return vals + vals['value_%s' % answer_type] = answer + vals_list.append(vals) + old_answers.sudo().unlink() + return self.env['survey.user_input.line'].create(vals_list) + + # ------------------------------ + # Address Fields. + # ------------------------------ + @api.model + def save_line_que_sh_address(self, question, old_answers, answer, answer_type): + vals_list = [] + vals = { + 'user_input_id': self.id, + 'question_id': question.id, + 'skipped': False, + 'answer_type': answer_type, + } + if not answer or (isinstance(answer, str) and not answer.strip()): + vals.update(answer_type=None, skipped=True) + return vals + # Add individual address fields in vals here + query_dict = dict(parse.parse_qsl(answer)) or {} + vals["value_ans_sh_street"] = query_dict.get('street',False) + vals["value_ans_sh_street2"] = query_dict.get('street2',False) + vals["value_ans_sh_city"] = query_dict.get('city',False) + vals["value_ans_sh_zip"] = query_dict.get('zip',False) + vals["value_ans_sh_state_id"] = query_dict.get('state_id',False) + vals["value_ans_sh_country_id"] = query_dict.get('country_id',False) + # TO AVOID ERROR BELOW IS NECESSARY + street = query_dict.get('street','') + street2 = query_dict.get('street2','') + city = query_dict.get('city','') + zip = query_dict.get('zip','') + state_id = query_dict.get('state_id','') + country_id = query_dict.get('country_id','') + + if street: + street += ' ' + if street2: + street2 += ' ' + if city: + city += ' ' + if zip: + zip += ' ' + if state_id: + integer_state_id = state_id + if type(state_id) != int: + integer_state_id = int(state_id) + state = self.env["res.country.state"].sudo().browse([integer_state_id]) + if state: + state_id = state.name + + state_id += ' ' + if country_id: + + integer_country_id = country_id + if type(country_id) != int: + integer_country_id = int(country_id) + + country = self.env["res.country"].sudo().browse([integer_country_id]) + if country: + country_id = country.name + + country_id += ' ' + + complete_address = street + street2 + city + zip + state_id + country_id + vals["value_ans_sh_address"] = complete_address or False + vals_list.append(vals) + old_answers.sudo().unlink() + return self.env['survey.user_input.line'].create(vals_list) + + @api.model + def save_line_que_sh_many2one(self, question, old_answers, answer, answer_type): + vals_list = [] + vals = { + 'user_input_id': self.id, + 'question_id': question.id, + 'skipped': False, + 'answer_type': 'suggestion', + } + if not answer or (isinstance(answer, str) and not answer.strip()): + vals.update(answer_type=None, skipped=True) + return vals + + # --------------------------------------------------------------- + # To Make Many2one fields like Multiple Choice only one answer. + suggested_answer = self.env["survey.question.answer"].search([ + ('question_id','=',question.id), + ('value','=',answer), + ],limit = 1) + + if not suggested_answer: + suggested_answer = self.env["survey.question.answer"].create({ + 'question_id':question.id, + 'value':answer, + }) + if suggested_answer: + vals['suggested_answer_id'] = suggested_answer.id + + # To Make Many2one fields like Multiple Choice only one answer. + # --------------------------------------------------------------- + vals_list.append(vals) + old_answers.sudo().unlink() + return self.env['survey.user_input.line'].create(vals_list) + + @api.model + def save_line_que_sh_many2many(self, question, old_answers, answers, answer_type): + vals_list = [] + if not (isinstance(answers, list)): + answers = [answers] + for answer in answers: + vals = { + 'user_input_id': self.id, + 'question_id': question.id, + 'skipped': False, + 'answer_type': 'suggestion', + } + if not answer or (isinstance(answer, str) and not answer.strip()): + vals.update(answer_type=None, skipped=True) + return vals + + # --------------------------------------------------------------- + # To Make Many2one fields like Multiple Choice only one answer. + suggested_answer = self.env["survey.question.answer"].search([ + ('question_id','=',question.id), + ('value','=',answer), + ],limit = 1) + + if not suggested_answer: + suggested_answer = self.env["survey.question.answer"].create({ + 'question_id':question.id, + 'value':answer, + }) + if suggested_answer: + vals['suggested_answer_id'] = suggested_answer.id + + # To Make Many2one fields like Multiple Choice only one answer. + # --------------------------------------------------------------- + vals_list.append(vals) + old_answers.sudo().unlink() + return self.env['survey.user_input.line'].create(vals_list) + +class SurveyUserInputLine(models.Model): + _inherit = 'survey.user_input.line' + _description = 'Survey User Input Line for extra fields' + + value_ans_sh_color = fields.Char(string="Color") + value_ans_sh_email = fields.Char(string="E-mail") + value_ans_sh_url = fields.Char(string="URL") + value_ans_sh_time = fields.Char(string="Time") + value_ans_sh_range = fields.Integer(string="Range") + value_ans_sh_week = fields.Char(string="Week") + value_ans_sh_month = fields.Char(string="Month") + value_ans_sh_password = fields.Char(string="Password") + value_ans_sh_file = fields.Binary(string="File") + value_ans_sh_file_fname = fields.Char(string="File Name") + value_ans_sh_signature = fields.Binary(string="Signature") + value_ans_sh_signature_src = fields.Text(string="Signature src") + + value_ans_sh_many2one = fields.Char(string="Many2one") + value_ans_sh_many2many = fields.Char(string="Many2many") + + # address fields + value_ans_sh_street = fields.Char() + value_ans_sh_street2 = fields.Char() + value_ans_sh_zip = fields.Char() + value_ans_sh_city = fields.Char() + value_ans_sh_state_id = fields.Many2one("res.country.state", string='State') + value_ans_sh_country_id = fields.Many2one('res.country', string='Country') + value_ans_sh_address = fields.Text(string ="Address") + + answer_type = fields.Selection(selection_add=[ + ('ans_sh_color', 'Color'), + ('ans_sh_email', 'E-mail'), + ('ans_sh_url', 'URL'), + ('ans_sh_time', 'Time'), + ('ans_sh_range', 'Range'), + ('ans_sh_week', 'Week'), + ('ans_sh_month', 'Month'), + ('ans_sh_password', 'Password'), + ('ans_sh_file', 'File'), + ('ans_sh_signature', 'Signature'), + ('ans_sh_many2one', 'Many2one'), + ('ans_sh_many2many', 'Many2many'), + ('ans_sh_address', 'Address'), + ]) + + access_token = fields.Char('Identification token', + related="user_input_id.access_token", + readonly=False, store= True) diff --git a/sh_survey_all_in_one/sh_survey_extra_fields/views/survey_statistics_templates.xml b/sh_survey_all_in_one/sh_survey_extra_fields/views/survey_statistics_templates.xml new file mode 100644 index 0000000..a3105b8 --- /dev/null +++ b/sh_survey_all_in_one/sh_survey_extra_fields/views/survey_statistics_templates.xml @@ -0,0 +1,20 @@ + + + + + + + + + + \ No newline at end of file diff --git a/sh_survey_all_in_one/sh_survey_extra_fields/views/survey_templates.xml b/sh_survey_all_in_one/sh_survey_extra_fields/views/survey_templates.xml new file mode 100644 index 0000000..e3a96e6 --- /dev/null +++ b/sh_survey_all_in_one/sh_survey_extra_fields/views/survey_templates.xml @@ -0,0 +1,504 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/sh_survey_all_in_one/sh_survey_extra_fields/views/survey_views.xml b/sh_survey_all_in_one/sh_survey_extra_fields/views/survey_views.xml new file mode 100644 index 0000000..748e4e4 --- /dev/null +++ b/sh_survey_all_in_one/sh_survey_extra_fields/views/survey_views.xml @@ -0,0 +1,220 @@ + + + + + sh.survey.extra.fields.survey.que.form.view + survey.question + + + + + + + + + + + + + + + + + {'invisible': [('question_type', 'not in', ['char_box', 'numerical_box', 'date', 'datetime', 'que_sh_time','que_sh_range','que_sh_week','que_sh_month','que_sh_password' ])]} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+
+
+ +
+
+
+
+ +
+ +
+ +
+
+
+
+ +
+ + + +
+ +
+
+
+
+ +
+ + +
+ +
+
+
+
+ +
+ +
+ +
+
+
+
+ +
+ +
+ +
+
+
+
+ +
+ +
+
+ +
+ + +
+ +
+
+ + + + sh.survey.extra.fields.survey.user.input.line.form + survey.user_input.line + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/sh_survey_all_in_one/sh_survey_extra_fields_adv/__init__.py b/sh_survey_all_in_one/sh_survey_extra_fields_adv/__init__.py new file mode 100644 index 0000000..037f754 --- /dev/null +++ b/sh_survey_all_in_one/sh_survey_extra_fields_adv/__init__.py @@ -0,0 +1,3 @@ +# Copyright (C) Softhealer Technologies. + +from . import models diff --git a/sh_survey_all_in_one/sh_survey_extra_fields_adv/__pycache__/__init__.cpython-310.pyc b/sh_survey_all_in_one/sh_survey_extra_fields_adv/__pycache__/__init__.cpython-310.pyc new file mode 100644 index 0000000..c306fa9 Binary files /dev/null and b/sh_survey_all_in_one/sh_survey_extra_fields_adv/__pycache__/__init__.cpython-310.pyc differ diff --git a/sh_survey_all_in_one/sh_survey_extra_fields_adv/models/__init__.py b/sh_survey_all_in_one/sh_survey_extra_fields_adv/models/__init__.py new file mode 100644 index 0000000..3365fd7 --- /dev/null +++ b/sh_survey_all_in_one/sh_survey_extra_fields_adv/models/__init__.py @@ -0,0 +1,3 @@ +# Copyright (C) Softhealer Technologies. + +from . import survey diff --git a/sh_survey_all_in_one/sh_survey_extra_fields_adv/models/__pycache__/__init__.cpython-310.pyc b/sh_survey_all_in_one/sh_survey_extra_fields_adv/models/__pycache__/__init__.cpython-310.pyc new file mode 100644 index 0000000..44fb1e7 Binary files /dev/null and b/sh_survey_all_in_one/sh_survey_extra_fields_adv/models/__pycache__/__init__.cpython-310.pyc differ diff --git a/sh_survey_all_in_one/sh_survey_extra_fields_adv/models/__pycache__/survey.cpython-310.pyc b/sh_survey_all_in_one/sh_survey_extra_fields_adv/models/__pycache__/survey.cpython-310.pyc new file mode 100644 index 0000000..29961ec Binary files /dev/null and b/sh_survey_all_in_one/sh_survey_extra_fields_adv/models/__pycache__/survey.cpython-310.pyc differ diff --git a/sh_survey_all_in_one/sh_survey_extra_fields_adv/models/survey.py b/sh_survey_all_in_one/sh_survey_extra_fields_adv/models/survey.py new file mode 100644 index 0000000..510d8b0 --- /dev/null +++ b/sh_survey_all_in_one/sh_survey_extra_fields_adv/models/survey.py @@ -0,0 +1,347 @@ +# Copyright (C) Softhealer Technologies. + +from datetime import datetime, timedelta +from odoo import api, fields, models + + +class SurveyLabel(models.Model): + """ A suggested answer for a question """ + _inherit = 'survey.question.answer' + + sh_value_type = fields.Selection(selection_add=[ + ('que_sh_qrcode', 'QR Code'), + ('que_sh_barcode', 'Barcode'), + ]) + + +class survey_question(models.Model): + _inherit = 'survey.question' + _description = 'Inherit Survey Question for extra fields' + + question_type = fields.Selection(selection_add=[ + ('que_sh_qrcode', 'QR Code'), + ('que_sh_barcode', 'Barcode'), + ('que_sh_location', 'Location') + ]) + + # ------------------------------------------------------------ + # VALIDATION + # ------------------------------------------------------------ + + def validate_question(self, answer, comment=None): + """ Validate question, depending on question type and parameters + for simple choice, text, date and number, answer is simply the answer of the question. + For other multiple choices questions, answer is a list of answers (the selected choices + or a list of selected answers per question -for matrix type-): + - Simple answer : answer = 'example' or 2 or question_answer_id or 2019/10/10 + - Multiple choice : answer = [question_answer_id1, question_answer_id2, question_answer_id3] + - Matrix: answer = { 'rowId1' : [colId1, colId2,...], 'rowId2' : [colId1, colId3, ...] } + + return dict {question.id (int): error (str)} -> empty dict if no validation error. + """ + self.ensure_one() + if isinstance(answer, str): + answer = answer.strip() + # Empty answer to mandatory question + if self.constr_mandatory and not answer and self.question_type not in ['simple_choice', 'multiple_choice']: + return {self.id: self.constr_error_msg} + + # because in choices question types, comment can count as answer + if answer or self.question_type in ['simple_choice', 'multiple_choice']: + if self.question_type == 'char_box': + return self._validate_char_box(answer) + elif self.question_type == 'numerical_box': + return self._validate_numerical_box(answer) + elif self.question_type in ['date', 'datetime']: + return self._validate_date(answer) + elif self.question_type in ['simple_choice', 'multiple_choice']: + return self._validate_choice(answer, comment) + elif self.question_type == 'matrix': + return self._validate_matrix(answer) + elif self.question_type == 'que_sh_color': + return self.validate_que_sh_color(answer) + elif self.question_type == 'que_sh_email': + return self.validate_que_sh_email(answer) + elif self.question_type == 'que_sh_url': + return self.validate_que_sh_url(answer) + elif self.question_type == 'que_sh_time': + return self.validate_que_sh_time(answer) + elif self.question_type == 'que_sh_range': + return self.validate_que_sh_range(answer) + elif self.question_type == 'que_sh_week': + return self.validate_que_sh_week(answer) + elif self.question_type == 'que_sh_month': + return self.validate_que_sh_month(answer) + elif self.question_type == 'que_sh_password': + return self.validate_que_sh_password(answer) + elif self.question_type == 'que_sh_file': + return self.validate_que_sh_file(answer) + elif self.question_type == 'que_sh_signature': + return self.validate_que_sh_signature(answer) + elif self.question_type == 'que_sh_many2one': + return self.validate_que_sh_many2one(answer) + elif self.question_type == 'que_sh_many2many': + return self.validate_que_sh_many2many(answer) + elif self.question_type == 'que_sh_address': + return self.validate_que_sh_address(answer) + elif self.question_type == 'que_sh_qrcode': + return self.validate_que_sh_qrcode(answer) + elif self.question_type == 'que_sh_barcode': + return self.validate_que_sh_barcode(answer) + elif self.question_type == 'que_sh_location': + return self.validate_que_sh_location(answer) + + return {} + + # ==================================================================== + #for QR field. + # ==================================================================== + + def validate_que_sh_qrcode(self, answer): + if self.constr_mandatory and not answer: + return {self.id: self.constr_error_msg} + return {} + + # ==================================================================== + #for BARCODE field. + # ==================================================================== + + def validate_que_sh_barcode(self, answer): + if self.constr_mandatory and not answer: + return {self.id: self.constr_error_msg} + return {} + # ==================================================================== + #for Location field. + # ==================================================================== + + def validate_que_sh_location(self, answer): + if self.constr_mandatory and not answer: + return {self.id: self.constr_error_msg} + return {} + + + def _validate_matrix(self, answers): + # Validate that each line has been answered + if self.constr_mandatory: + for row in answers: + if answers[row] == ['']: + return {self.id: self.constr_error_msg} + return {} + +class SurveyUserInput(models.Model): + _inherit = 'survey.user_input' + + def _save_line_matrix(self, question, old_answers, answers, comment): + vals_list = [] + if answers: + for row_key, row_answer in answers.items(): + if question.matrix_subtype == 'sh_custom_matrix': + answer = row_key.split('_')[1] + if answer: + for data_value in row_answer: + if question.matrix_subtype == 'sh_custom_matrix': + answer_id = self.env['survey.question.answer'].sudo().browse( + int(answer)) + if answer_id.sh_value_type == 'textbox': + vals = self.sh_get_line_answer_values( + question, answer, data_value, 'text_box') + elif answer_id.sh_value_type == 'free_text': + vals = self.sh_get_line_answer_values( + question, answer, data_value, 'char_box') + elif answer_id.sh_value_type == 'numerical_box': + vals = self.sh_get_line_answer_values( + question, answer, data_value, 'numerical_box') + elif answer_id.sh_value_type == 'date': + if data_value in ['',"",False,None]: + data_value = False + vals = self.sh_get_line_answer_values( + question, answer, data_value, 'date') + elif answer_id.sh_value_type == 'datetime': + if data_value in ['',"",False,None]: + data_value = False + else: + data_value = datetime.strptime( + data_value, '%m/%d/%Y %H:%M:%S').strftime("%Y-%m-%d %H:%M:%S") + # data_value = datetime.strptime( + # data_value, '%m/%d/%Y %H:%M:%S').strftime("%Y-%m-%d %H:%M:%S") + vals = self.sh_get_line_answer_values( + question, answer, data_value, 'datetime') + elif answer_id.sh_value_type == 'que_sh_color': + vals = self.sh_get_line_answer_values( + question, answer, data_value, 'ans_sh_color') + elif answer_id.sh_value_type == 'que_sh_email': + vals = self.sh_get_line_answer_values( + question, answer, data_value, 'ans_sh_email') + elif answer_id.sh_value_type == 'que_sh_url': + vals = self.sh_get_line_answer_values( + question, answer, data_value, 'ans_sh_url') + elif answer_id.sh_value_type == 'que_sh_time': + vals = self.sh_get_line_answer_values( + question, answer, data_value, 'ans_sh_time') + elif answer_id.sh_value_type == 'que_sh_range': + vals = self.sh_get_line_answer_values( + question, answer, data_value, 'ans_sh_range') + elif answer_id.sh_value_type == 'que_sh_week': + vals = self.sh_get_line_answer_values( + question, answer, data_value, 'ans_sh_week') + elif answer_id.sh_value_type == 'que_sh_month': + vals = self.sh_get_line_answer_values( + question, answer, data_value, 'ans_sh_month') + elif answer_id.sh_value_type == 'que_sh_password': + vals = self.sh_get_line_answer_values( + question, answer, data_value, 'ans_sh_password') + elif answer_id.sh_value_type == 'que_sh_file': + vals = self.sh_get_line_answer_values( + question, answer, data_value, 'ans_sh_file') + elif answer_id.sh_value_type == 'que_sh_qrcode': + + vals = self.sh_get_line_answer_values( + question, answer, data_value, 'ans_sh_qrcode') + elif answer_id.sh_value_type == 'que_sh_barcode': + vals = self.sh_get_line_answer_values( + question, answer, data_value, 'ans_sh_barcode') + elif answer_id.sh_value_type == 'que_sh_location': + + vals = self.sh_get_line_answer_values( + question, answer, data_value, 'ans_sh_location') + vals['matrix_row_id'] = int( + row_key.split('_')[0]) + + else: + vals = self.sh_get_line_answer_values( + question, answer, answer, 'suggestion') + vals['matrix_row_id'] = int(answer) + vals_list.append(vals.copy()) + + else: + for answer in row_answer: + vals = self.sh_get_line_answer_values(question, answer, answer, 'suggestion') + vals['matrix_row_id'] = int(row_key) + vals_list.append(vals.copy()) + + if comment: + vals_list.append(self._get_line_comment_values(question, comment)) + + old_answers.sudo().unlink() + print('\n\n CALELD vals_list',vals_list) + return self.env['survey.user_input.line'].create(vals_list) + + def save_lines(self, question, answer, comment=None): + """ Save answers to questions, depending on question type + + If an answer already exists for question and user_input_id, it will be + overwritten (or deleted for 'choice' questions) (in order to maintain data consistency). + """ + old_answers = self.env['survey.user_input.line'].search([ + ('user_input_id', '=', self.id), + ('question_id', '=', question.id) + ]) + if question.question_type in ['char_box', 'text_box', 'numerical_box', 'date', 'datetime']: + self._save_line_simple_answer(question, old_answers, answer) + if question.save_as_email and answer: + self.write({'email': answer}) + if question.save_as_nickname and answer: + self.write({'nickname': answer}) + + elif question.question_type in ['simple_choice', 'multiple_choice']: + self._save_line_choice(question, old_answers, answer, comment) + elif question.question_type == 'matrix': + self._save_line_matrix(question, old_answers, answer, comment) + elif question.question_type in ['que_sh_color']: + self.save_line_que_sh_field( + question, old_answers, answer, 'ans_sh_color') + elif question.question_type in ['que_sh_email']: + self.save_line_que_sh_field( + question, old_answers, answer, 'ans_sh_email') + elif question.question_type in ['que_sh_url']: + self.save_line_que_sh_field( + question, old_answers, answer, 'ans_sh_url') + elif question.question_type in ['que_sh_time']: + self.save_line_que_sh_field( + question, old_answers, answer, 'ans_sh_time') + elif question.question_type in ['que_sh_range']: + self.save_line_que_sh_field( + question, old_answers, answer, 'ans_sh_range') + elif question.question_type in ['que_sh_week']: + self.save_line_que_sh_field( + question, old_answers, answer, 'ans_sh_week') + elif question.question_type in ['que_sh_month']: + self.save_line_que_sh_field( + question, old_answers, answer, 'ans_sh_month') + elif question.question_type in ['que_sh_password']: + self.save_line_que_sh_field( + question, old_answers, answer, 'ans_sh_password') + elif question.question_type in ['que_sh_file']: + self.save_line_que_sh_file( + question, old_answers, answer, 'ans_sh_file') + elif question.question_type in ['que_sh_signature']: + self.save_line_que_sh_signature( + question, old_answers, answer, 'ans_sh_signature') + elif question.question_type in ['que_sh_address']: + self.save_line_que_sh_address( + question, old_answers, answer, 'ans_sh_address') + + elif question.question_type in ['que_sh_many2one']: + self.save_line_que_sh_many2one( + question, old_answers, answer, 'ans_sh_many2one') + + elif question.question_type in ['que_sh_many2many']: + self.save_line_que_sh_many2many( + question, old_answers, answer, 'ans_sh_many2many') + elif question.question_type in ['que_sh_qrcode']: + self.save_line_que_sh_field( + question, old_answers, answer, 'ans_sh_qrcode') + elif question.question_type in ['que_sh_barcode']: + self.save_line_que_sh_field( + question, old_answers, answer, 'ans_sh_barcode') + elif question.question_type in ['que_sh_location']: + self.save_line_que_sh_location( + question, old_answers, answer, 'ans_sh_location') + else: + raise AttributeError(question.question_type + + ": This type of question has no saving function") + + # ==================================================================== + #for color field. + # ==================================================================== + @api.model + def save_line_que_sh_location(self, question, old_answers, answer, answer_type): + vals_list = [] + + vals = { + 'user_input_id': self.id, + 'question_id': question.id, + 'skipped': False, + 'answer_type': answer_type, + } + if not answer or (isinstance(answer, str) and not answer.strip()): + vals.update(answer_type=None, skipped=True) + return vals + vals['value_%s' % answer_type] = answer + if(answer and len(answer.split('&')) > 0): + + vals['value_sh_location_latitude'] = answer.split('&')[0] + vals['value_sh_location_longitude'] = answer.split('&')[1] + vals['value_ans_sh_location'] = answer + + vals_list.append(vals) + old_answers.sudo().unlink() + return self.env['survey.user_input.line'].create(vals_list) + + +class survey_user_input_line(models.Model): + _inherit = 'survey.user_input.line' + _description = 'Survey User Input Line for extra fields' + + value_ans_sh_qrcode = fields.Char(string="QR Code") + value_ans_sh_barcode = fields.Char(string="Barcode") + + value_sh_location_latitude = fields.Char(string="Latitude") + value_sh_location_longitude = fields.Char(string="Longitude") + value_ans_sh_location = fields.Char(string="Location") + + answer_type = fields.Selection(selection_add=[ + ('ans_sh_qrcode', 'QR Code'), + ('ans_sh_barcode', 'Barcode'), + ('ans_sh_location', 'Location') + ]) diff --git a/sh_survey_all_in_one/sh_survey_extra_fields_adv/views/survey_page_fill_templates.xml b/sh_survey_all_in_one/sh_survey_extra_fields_adv/views/survey_page_fill_templates.xml new file mode 100644 index 0000000..cdaab77 --- /dev/null +++ b/sh_survey_all_in_one/sh_survey_extra_fields_adv/views/survey_page_fill_templates.xml @@ -0,0 +1,45 @@ + + + + + + + + + \ No newline at end of file diff --git a/sh_survey_all_in_one/sh_survey_extra_fields_adv/views/survey_templates.xml b/sh_survey_all_in_one/sh_survey_extra_fields_adv/views/survey_templates.xml new file mode 100644 index 0000000..1095472 --- /dev/null +++ b/sh_survey_all_in_one/sh_survey_extra_fields_adv/views/survey_templates.xml @@ -0,0 +1,432 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/sh_survey_all_in_one/sh_survey_extra_fields_adv/views/survey_views.xml b/sh_survey_all_in_one/sh_survey_extra_fields_adv/views/survey_views.xml new file mode 100644 index 0000000..4ba83e4 --- /dev/null +++ b/sh_survey_all_in_one/sh_survey_extra_fields_adv/views/survey_views.xml @@ -0,0 +1,36 @@ + + + + + + + + sh.survey.extra.fields.adv.survey.user.input.line.form + survey.user_input.line + + + + + + + + + + + + + + + diff --git a/sh_survey_all_in_one/sh_survey_matrix_adv/__init__.py b/sh_survey_all_in_one/sh_survey_matrix_adv/__init__.py new file mode 100644 index 0000000..a9769d1 --- /dev/null +++ b/sh_survey_all_in_one/sh_survey_matrix_adv/__init__.py @@ -0,0 +1,4 @@ +# Copyright (C) Softhealer Technologies. + +from . import models +from . import controllers diff --git a/sh_survey_all_in_one/sh_survey_matrix_adv/__pycache__/__init__.cpython-310.pyc b/sh_survey_all_in_one/sh_survey_matrix_adv/__pycache__/__init__.cpython-310.pyc new file mode 100644 index 0000000..c1347b2 Binary files /dev/null and b/sh_survey_all_in_one/sh_survey_matrix_adv/__pycache__/__init__.cpython-310.pyc differ diff --git a/sh_survey_all_in_one/sh_survey_matrix_adv/controllers/__init__.py b/sh_survey_all_in_one/sh_survey_matrix_adv/controllers/__init__.py new file mode 100644 index 0000000..dd50880 --- /dev/null +++ b/sh_survey_all_in_one/sh_survey_matrix_adv/controllers/__init__.py @@ -0,0 +1,3 @@ +# Copyright (C) Softhealer Technologies. + +from . import sh_survey_matrix_adv diff --git a/sh_survey_all_in_one/sh_survey_matrix_adv/controllers/__pycache__/__init__.cpython-310.pyc b/sh_survey_all_in_one/sh_survey_matrix_adv/controllers/__pycache__/__init__.cpython-310.pyc new file mode 100644 index 0000000..f4b847e Binary files /dev/null and b/sh_survey_all_in_one/sh_survey_matrix_adv/controllers/__pycache__/__init__.cpython-310.pyc differ diff --git a/sh_survey_all_in_one/sh_survey_matrix_adv/controllers/__pycache__/sh_survey_matrix_adv.cpython-310.pyc b/sh_survey_all_in_one/sh_survey_matrix_adv/controllers/__pycache__/sh_survey_matrix_adv.cpython-310.pyc new file mode 100644 index 0000000..4cbfac0 Binary files /dev/null and b/sh_survey_all_in_one/sh_survey_matrix_adv/controllers/__pycache__/sh_survey_matrix_adv.cpython-310.pyc differ diff --git a/sh_survey_all_in_one/sh_survey_matrix_adv/controllers/sh_survey_matrix_adv.py b/sh_survey_all_in_one/sh_survey_matrix_adv/controllers/sh_survey_matrix_adv.py new file mode 100644 index 0000000..289e2a7 --- /dev/null +++ b/sh_survey_all_in_one/sh_survey_matrix_adv/controllers/sh_survey_matrix_adv.py @@ -0,0 +1,32 @@ +# Copyright (C) Softhealer Technologies. + +import json +import logging + +from odoo import fields, http +from odoo.http import request +from odoo.addons.survey.controllers.main import Survey + +_logger = logging.getLogger(__name__) + + +class SurveyController(http.Controller): + + @http.route('/survey/matrix/download////', type='http', auth='public', website=True) + def survey_matrix_download_file(self, **post): + base_url = request.env['ir.config_parameter'].sudo( + ).get_param('web.base.url') + download_url = base_url + if base_url and post.get('question_id') and post.get('row_label') and post.get('col_label') and post.get('answer_token'): + input_line_id = request.env['survey.user_input.line'].sudo().search([('user_input_id.access_token', '=', post.get('answer_token')), + ('question_id', '=', int( + post.get('question_id'))), + ('suggested_answer_id', '=', int( + post.get('col_label'))), + ('matrix_row_id', '=', int( + post.get('row_label'))) + ], limit=1) + if input_line_id: + download_url += '/web/content/survey.user_input.line/' + \ + str(input_line_id.id)+'/value_ans_sh_file?download=true' + return request.redirect(download_url) diff --git a/sh_survey_all_in_one/sh_survey_matrix_adv/models/__init__.py b/sh_survey_all_in_one/sh_survey_matrix_adv/models/__init__.py new file mode 100644 index 0000000..3365fd7 --- /dev/null +++ b/sh_survey_all_in_one/sh_survey_matrix_adv/models/__init__.py @@ -0,0 +1,3 @@ +# Copyright (C) Softhealer Technologies. + +from . import survey diff --git a/sh_survey_all_in_one/sh_survey_matrix_adv/models/__pycache__/__init__.cpython-310.pyc b/sh_survey_all_in_one/sh_survey_matrix_adv/models/__pycache__/__init__.cpython-310.pyc new file mode 100644 index 0000000..2649153 Binary files /dev/null and b/sh_survey_all_in_one/sh_survey_matrix_adv/models/__pycache__/__init__.cpython-310.pyc differ diff --git a/sh_survey_all_in_one/sh_survey_matrix_adv/models/__pycache__/survey.cpython-310.pyc b/sh_survey_all_in_one/sh_survey_matrix_adv/models/__pycache__/survey.cpython-310.pyc new file mode 100644 index 0000000..bab77d2 Binary files /dev/null and b/sh_survey_all_in_one/sh_survey_matrix_adv/models/__pycache__/survey.cpython-310.pyc differ diff --git a/sh_survey_all_in_one/sh_survey_matrix_adv/models/survey.py b/sh_survey_all_in_one/sh_survey_matrix_adv/models/survey.py new file mode 100644 index 0000000..bd4a56a --- /dev/null +++ b/sh_survey_all_in_one/sh_survey_matrix_adv/models/survey.py @@ -0,0 +1,161 @@ +# Copyright (C) Softhealer Technologies. + +from odoo import models, fields, api, _ +import base64 +from datetime import datetime +from odoo.exceptions import ValidationError + +class survey_question(models.Model): + _inherit = 'survey.question' + + matrix_subtype = fields.Selection(selection_add=[ + ('sh_custom_matrix', 'Custom Matrix') + ]) + + +class SurveyLabel(models.Model): + """ A suggested answer for a question """ + _inherit = 'survey.question.answer' + + sh_value_type = fields.Selection([ + ('textbox', 'Single Line Text Box'), + ('free_text', 'Multiple Lines Text Box'), + ('numerical_box', 'Numerical Value'), + ('date', 'Date'), + ('datetime', 'Datetime'), + ('que_sh_color', 'Color'), + ('que_sh_email', 'E-mail'), + ('que_sh_url', 'URL'), + ('que_sh_time', 'Time'), + ('que_sh_range', 'Range'), + ('que_sh_week', 'Week'), + ('que_sh_month', 'Month'), + ('que_sh_password', 'Password'), + ('que_sh_file', 'File'), + ], string='Choices Type') + + ## Matrix Range Config + sh_matrix_range_min = fields.Integer(string='Minimum') + sh_matrix_range_max = fields.Integer(string='Maximum') + sh_matrix_range_step = fields.Integer(string='Step') + +class survey_user_input(models.Model): + _inherit = 'survey.user_input' + _description = 'Survey User Input for custom matrix' + + def _save_line_matrix(self, question, old_answers, answers, comment): + vals_list = [] + + if answers: + for row_key, row_answer in answers.items(): + if question.matrix_subtype == 'sh_custom_matrix': + answer = row_key.split('_')[1] + if answer: + for data_value in row_answer: + vals = {} + if not data_value: + data_value = False + if question.matrix_subtype == 'sh_custom_matrix': + answer_id = self.env['survey.question.answer'].sudo().browse( + int(answer)) + if answer_id.sh_value_type == 'textbox': + vals = self.sh_get_line_answer_values( + question, answer, data_value, 'text_box') + elif answer_id.sh_value_type == 'free_text': + vals = self.sh_get_line_answer_values( + question, answer, data_value, 'char_box') + elif answer_id.sh_value_type == 'numerical_box': + vals = self.sh_get_line_answer_values( + question, answer, data_value, 'numerical_box') + elif answer_id.sh_value_type == 'date': + vals = self.sh_get_line_answer_values( + question, answer, data_value, 'date') + elif answer_id.sh_value_type == 'datetime': + if data_value: + data_value = datetime.strptime( + data_value, '%m/%d/%Y %H:%M:%S').strftime("%Y-%m-%d %H:%M:%S") + vals = self.sh_get_line_answer_values( + question, answer, data_value, 'datetime') + elif answer_id.sh_value_type == 'que_sh_color': + vals = self.sh_get_line_answer_values( + question, answer, data_value, 'ans_sh_color') + elif answer_id.sh_value_type == 'que_sh_email': + vals = self.sh_get_line_answer_values( + question, answer, data_value, 'ans_sh_email') + elif answer_id.sh_value_type == 'que_sh_url': + vals = self.sh_get_line_answer_values( + question, answer, data_value, 'ans_sh_url') + elif answer_id.sh_value_type == 'que_sh_time': + vals = self.sh_get_line_answer_values( + question, answer, data_value, 'ans_sh_time') + elif answer_id.sh_value_type == 'que_sh_range': + vals = self.sh_get_line_answer_values( + question, answer, data_value, 'ans_sh_range') + elif answer_id.sh_value_type == 'que_sh_week': + vals = self.sh_get_line_answer_values( + question, answer, data_value, 'ans_sh_week') + elif answer_id.sh_value_type == 'que_sh_month': + vals = self.sh_get_line_answer_values( + question, answer, data_value, 'ans_sh_month') + elif answer_id.sh_value_type == 'que_sh_password': + vals = self.sh_get_line_answer_values( + question, answer, data_value, 'ans_sh_password') + elif answer_id.sh_value_type == 'que_sh_file': + vals = self.sh_get_line_answer_values( + question, answer, data_value, 'ans_sh_file') + vals['matrix_row_id'] = int( + row_key.split('_')[0]) + else: + vals = self.sh_get_line_answer_values( + question, answer, answer, 'suggestion') + vals['matrix_row_id'] = int(answer) + vals_list.append(vals.copy()) + + else: + for answer in row_answer: + vals = self.sh_get_line_answer_values( + question, answer, answer, 'suggestion') + vals['matrix_row_id'] = int(row_key) + vals_list.append(vals.copy()) + + if comment: + vals_list.append(self._get_line_comment_values(question, comment)) + + old_answers.sudo().unlink() + return self.env['survey.user_input.line'].create(vals_list) + + def sh_get_line_answer_values(self, question, answer, data_value, answer_type): + vals = { + 'user_input_id': self.id, + 'question_id': question.id, + 'skipped': False, + 'answer_type': answer_type, + } + if not answer or (isinstance(answer, str) and not answer.strip()): + vals.update(answer_type=None, skipped=True) + return vals + + if answer_type == 'suggestion': + vals['suggested_answer_id'] = int(answer) + else: + vals['value_%s' % answer_type] = data_value + vals['suggested_answer_id'] = int(answer) + return vals + + +class survey_user_input_line(models.Model): + _inherit = 'survey.user_input.line' + _description = 'Survey User Input Line for custom matrix' + + @api.constrains('skipped', 'answer_type') + def _check_answer_type_skipped(self): + for line in self: + if (line.skipped == bool(line.answer_type)): + raise ValidationError( + _('A question is either skipped, either answered. Not both.')) + if line.answer_type == 'suggestion': + field_name = 'suggested_answer_id' + elif line.answer_type: + field_name = 'value_%s' % line.answer_type + else: # skipped + field_name = False diff --git a/sh_survey_all_in_one/sh_survey_matrix_adv/views/survey_templates.xml b/sh_survey_all_in_one/sh_survey_matrix_adv/views/survey_templates.xml new file mode 100644 index 0000000..7fb568e --- /dev/null +++ b/sh_survey_all_in_one/sh_survey_matrix_adv/views/survey_templates.xml @@ -0,0 +1,210 @@ + + + + diff --git a/sh_survey_all_in_one/sh_survey_matrix_adv/views/survey_views.xml b/sh_survey_all_in_one/sh_survey_matrix_adv/views/survey_views.xml new file mode 100644 index 0000000..2e48d99 --- /dev/null +++ b/sh_survey_all_in_one/sh_survey_matrix_adv/views/survey_views.xml @@ -0,0 +1,36 @@ + + + + + sh.survey.matrix.adv.survey.questino.form + survey.question + + + + + + + + + + + + + + + sh.survey.matrix.adv.survey.user.input.line.form + survey.user_input.line + + + + + + + + diff --git a/sh_survey_all_in_one/sh_survmate_theme/__init__.py b/sh_survey_all_in_one/sh_survmate_theme/__init__.py new file mode 100644 index 0000000..40edf95 --- /dev/null +++ b/sh_survey_all_in_one/sh_survmate_theme/__init__.py @@ -0,0 +1,6 @@ +# -*- coding: utf-8 -*- +# Part of Softhealer Technologies. + + +from . import models +from . import wizards diff --git a/sh_survey_all_in_one/sh_survmate_theme/__pycache__/__init__.cpython-310.pyc b/sh_survey_all_in_one/sh_survmate_theme/__pycache__/__init__.cpython-310.pyc new file mode 100644 index 0000000..4896dc0 Binary files /dev/null and b/sh_survey_all_in_one/sh_survmate_theme/__pycache__/__init__.cpython-310.pyc differ diff --git a/sh_survey_all_in_one/sh_survmate_theme/data/survmate_demo.xml b/sh_survey_all_in_one/sh_survmate_theme/data/survmate_demo.xml new file mode 100644 index 0000000..74365ff --- /dev/null +++ b/sh_survey_all_in_one/sh_survmate_theme/data/survmate_demo.xml @@ -0,0 +1,113 @@ + + + + + + + + + Theme 1 + + True + #FFFFFF + #585858 + #0042BC + #FFFFFF + #444444 + #444444 + #0043A8 + #FAFAFA + + style_1 + style_1 + style_1 + style_1 + style_1 + + + + + Theme 2 + + True + #FFFFFF + #474747 + #571839 + #BB377D + #FFFFFF + #1F4037 + #BB377D + #F4F4F4 + + style_2 + style_2 + style_2 + style_2 + style_2 + + + + + + Theme 3 + + True + #FFFFFF + #666666 + #183543 + #FFFFFF + #1B343F + #1F4037 + #337899 + #F4F4F4 + + style_3 + style_3 + style_3 + style_3 + style_3 + + + + + + Theme 4 + + true + #FFFFFF + #474747 + #1F4037 + #01592F + #F5F5F5 + #1F4037 + #01592F + #F4F4F4 + + style_4 + style_4 + style_4 + style_4 + style_4 + + + + + Theme 5 + True + #FFFFFF + #474747 + #61045F + #F1F5F8 + #61045F + #1F4037 + #61045F + #F4F4F4 + style_5 + style_5 + style_5 + style_5 + style_5 + + + + diff --git a/sh_survey_all_in_one/sh_survmate_theme/models/__init__.py b/sh_survey_all_in_one/sh_survmate_theme/models/__init__.py new file mode 100644 index 0000000..20eb152 --- /dev/null +++ b/sh_survey_all_in_one/sh_survmate_theme/models/__init__.py @@ -0,0 +1,5 @@ +# -*- coding: utf-8 -*- +# Part of Softhealer Technologies. + + +from . import survey diff --git a/sh_survey_all_in_one/sh_survmate_theme/models/__pycache__/__init__.cpython-310.pyc b/sh_survey_all_in_one/sh_survmate_theme/models/__pycache__/__init__.cpython-310.pyc new file mode 100644 index 0000000..690f60f Binary files /dev/null and b/sh_survey_all_in_one/sh_survmate_theme/models/__pycache__/__init__.cpython-310.pyc differ diff --git a/sh_survey_all_in_one/sh_survmate_theme/models/__pycache__/survey.cpython-310.pyc b/sh_survey_all_in_one/sh_survmate_theme/models/__pycache__/survey.cpython-310.pyc new file mode 100644 index 0000000..91e3c61 Binary files /dev/null and b/sh_survey_all_in_one/sh_survmate_theme/models/__pycache__/survey.cpython-310.pyc differ diff --git a/sh_survey_all_in_one/sh_survmate_theme/models/survey.py b/sh_survey_all_in_one/sh_survmate_theme/models/survey.py new file mode 100644 index 0000000..d78c353 --- /dev/null +++ b/sh_survey_all_in_one/sh_survmate_theme/models/survey.py @@ -0,0 +1,127 @@ +# -*- coding: utf-8 -*- +# Part of Softhealer Technologies. + +from odoo import models, fields, _ + + +class SurveyQuestion(models.Model): + _inherit = "survey.question" + + sh_survmate_theme_grid_type = fields.Selection([ + ('1', '1'), + ('2', '2'), + ('3', '3'), + ('4', '4'), + ('5', '5'), + ('6', '6'), + ('7', '7'), + ('8', '8'), + ('9', '9'), + ('10', '10'), + ('11', '11'), + ('12', '12'), + ], string="Grid", required=True, default='12') + + +class survey_survey(models.Model): + _inherit = "survey.survey" + + sh_survmate_settings_id = fields.Many2one( + comodel_name="sh.survmate.settings", string="Survmate Theme") + + # timer position fixed + sh_is_time_fixed = fields.Boolean(string="Is Fixed Timer Position?") + + +class sh_survmate_settings(models.Model): + _name = "sh.survmate.settings" + _description = 'Survmate Settings' + _order = "id desc" + + name = fields.Char(string="Name", required=True) + sh_survmate_show_bg_color = fields.Boolean(string="Show Background Color") + sh_survmate_bg_color = fields.Char(string="Background Color") + sh_survmate_question_color = fields.Char(string="Question Color") + sh_survmate_answer_color = fields.Char(string="Answer Color") + sh_survmate_section_title_color = fields.Char( + string="Section Background Color") + sh_survmate_section_title_font_color = fields.Char( + string="Section Font Color") + sh_survmate_section_answer_text_color = fields.Char( + string="Answer Text Color") + + sh_survmate_theme_primary_color = fields.Char(string="Primary Color") + sh_survmate_theme_secondary_color = fields.Char(string="Secondary Color") + + sh_survmate_button_style = fields.Selection([ + ('style_1', 'Style 1'), + ('style_2', 'Style 2'), + ('style_3', 'Style 3'), + ('style_4', 'Style 4'), + ('style_5', 'Style 5'), + ], string="Button Style") + + sh_survmate_input_style = fields.Selection([ + ('style_1', 'Style 1'), + ('style_2', 'Style 2'), + ('style_3', 'Style 3'), + ('style_4', 'Style 4'), + ('style_5', 'Style 5'), + ], string="Input Style") + + sh_survmate_section_style = fields.Selection([ + ('style_1', 'Style 1'), + ('style_2', 'Style 2'), + ('style_3', 'Style 3'), + ('style_4', 'Style 4'), + ('style_5', 'Style 5'), + ], string="Section Style") + + sh_survmate_checkbox_style = fields.Selection([ + ('style_1', 'Style 1'), + ('style_2', 'Style 2'), + ('style_3', 'Style 3'), + ('style_4', 'Style 4'), + ('style_5', 'Style 5'), + ], string="Checkbox Style") + + sh_survmate_radio_button_style = fields.Selection([ + ('style_1', 'Style 1'), + ('style_2', 'Style 2'), + ('style_3', 'Style 3'), + ('style_4', 'Style 4'), + ('style_5', 'Style 5'), + ], string="Radio Button Style") + + def action_preview_theme_style(self): + if self: + + context = dict(self.env.context or {}) + img_src = "" + if context and context.get('which_style', '') == 'button': + img_src = "/sh_survey_all_in_one/static/src/img/extra_addons/sh_survmate_theme/button-style---2.gif" + + if context and context.get('which_style', '') == 'input': + img_src = "/sh_survey_all_in_one/static/src/img/extra_addons/sh_survmate_theme/input_style.png" + + if context and context.get('which_style', '') == 'section': + img_src = "/sh_survey_all_in_one/static/src/img/extra_addons/sh_survmate_theme/section_style.png" + + if context and context.get('which_style', '') == 'checkbox': + img_src = "/sh_survey_all_in_one/static/src/img/extra_addons/sh_survmate_theme/checkbox_style.png" + + if context and context.get('which_style', '') == 'radio': + img_src = "/sh_survey_all_in_one/static/src/img/extra_addons/sh_survmate_theme/radio_button_style.png" + + context['default_img_src'] = img_src + + return { + 'name': _('Preview Style'), + 'view_mode': 'form', + 'res_model': 'sh.survmate.theme.button.design.wizard', + 'view_id': self.env.ref('sh_survey_all_in_one.sh_survmate_theme_button_style_wizard_view').id, + 'type': 'ir.actions.act_window', + 'context': context, + 'target': 'new', + 'flags': {'form': {'action_buttons': False}} + } diff --git a/sh_survey_all_in_one/sh_survmate_theme/views/survey_layout_templates.xml b/sh_survey_all_in_one/sh_survmate_theme/views/survey_layout_templates.xml new file mode 100644 index 0000000..e94f21b --- /dev/null +++ b/sh_survey_all_in_one/sh_survmate_theme/views/survey_layout_templates.xml @@ -0,0 +1,337 @@ + + + + + + + diff --git a/sh_survey_all_in_one/sh_survmate_theme/views/survey_question_matrix_templates.xml b/sh_survey_all_in_one/sh_survmate_theme/views/survey_question_matrix_templates.xml new file mode 100644 index 0000000..fd15369 --- /dev/null +++ b/sh_survey_all_in_one/sh_survmate_theme/views/survey_question_matrix_templates.xml @@ -0,0 +1,8 @@ + + + + \ No newline at end of file diff --git a/sh_survey_all_in_one/sh_survmate_theme/views/survey_question_template.xml b/sh_survey_all_in_one/sh_survmate_theme/views/survey_question_template.xml new file mode 100644 index 0000000..132693a --- /dev/null +++ b/sh_survey_all_in_one/sh_survmate_theme/views/survey_question_template.xml @@ -0,0 +1,98 @@ + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/sh_survey_all_in_one/sh_survmate_theme/views/survey_question_views.xml b/sh_survey_all_in_one/sh_survmate_theme/views/survey_question_views.xml new file mode 100644 index 0000000..7fc05b3 --- /dev/null +++ b/sh_survey_all_in_one/sh_survmate_theme/views/survey_question_views.xml @@ -0,0 +1,18 @@ + + + + + sh.survmate.theme.survey.question.form.inherit + survey.question + + + + + + + + + + + + diff --git a/sh_survey_all_in_one/sh_survmate_theme/views/survey_setting_views.xml b/sh_survey_all_in_one/sh_survmate_theme/views/survey_setting_views.xml new file mode 100644 index 0000000..55de8a2 --- /dev/null +++ b/sh_survey_all_in_one/sh_survmate_theme/views/survey_setting_views.xml @@ -0,0 +1,160 @@ + + + + + + + sh.survmate.theme.survey.settings.form + sh.survmate.settings + +
+ +
+
+ + + + + + + + + + + + + + + + + +
+ +
+
+
+ + + + + sh.survmate.settings.tree + sh.survmate.settings + + + + + + + + + Survmate Settings + ir.actions.act_window + sh.survmate.settings + tree,form + + + + + + + + + +
\ No newline at end of file diff --git a/sh_survey_all_in_one/sh_survmate_theme/views/survey_views.xml b/sh_survey_all_in_one/sh_survmate_theme/views/survey_views.xml new file mode 100644 index 0000000..eb0b8c4 --- /dev/null +++ b/sh_survey_all_in_one/sh_survmate_theme/views/survey_views.xml @@ -0,0 +1,27 @@ + + + + sh.survmate.theme.survey.form.inherit + survey.survey + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/sh_survey_all_in_one/sh_survmate_theme/wizards/__init__.py b/sh_survey_all_in_one/sh_survmate_theme/wizards/__init__.py new file mode 100644 index 0000000..a1c2127 --- /dev/null +++ b/sh_survey_all_in_one/sh_survmate_theme/wizards/__init__.py @@ -0,0 +1,6 @@ +# -*- coding: utf-8 -*- +# Part of Softhealer Technologies. + + +from . import button_style_wizard + diff --git a/sh_survey_all_in_one/sh_survmate_theme/wizards/__pycache__/__init__.cpython-310.pyc b/sh_survey_all_in_one/sh_survmate_theme/wizards/__pycache__/__init__.cpython-310.pyc new file mode 100644 index 0000000..214d07e Binary files /dev/null and b/sh_survey_all_in_one/sh_survmate_theme/wizards/__pycache__/__init__.cpython-310.pyc differ diff --git a/sh_survey_all_in_one/sh_survmate_theme/wizards/__pycache__/button_style_wizard.cpython-310.pyc b/sh_survey_all_in_one/sh_survmate_theme/wizards/__pycache__/button_style_wizard.cpython-310.pyc new file mode 100644 index 0000000..8a59ccb Binary files /dev/null and b/sh_survey_all_in_one/sh_survmate_theme/wizards/__pycache__/button_style_wizard.cpython-310.pyc differ diff --git a/sh_survey_all_in_one/sh_survmate_theme/wizards/button_style_wizard.py b/sh_survey_all_in_one/sh_survmate_theme/wizards/button_style_wizard.py new file mode 100644 index 0000000..5a862b3 --- /dev/null +++ b/sh_survey_all_in_one/sh_survmate_theme/wizards/button_style_wizard.py @@ -0,0 +1,12 @@ +# -*- coding: utf-8 -*- +# Part of Softhealer Technologies. + +from odoo import models, fields + + +class ShSurvmateThemeButtonDesignWizard(models.TransientModel): + _name = 'sh.survmate.theme.button.design.wizard' + _description = 'Survmate Theme Button Design' + _order = "id desc" + + img_src = fields.Char(string = "Image Src") \ No newline at end of file diff --git a/sh_survey_all_in_one/sh_survmate_theme/wizards/button_style_wizard_views.xml b/sh_survey_all_in_one/sh_survmate_theme/wizards/button_style_wizard_views.xml new file mode 100644 index 0000000..2594409 --- /dev/null +++ b/sh_survey_all_in_one/sh_survmate_theme/wizards/button_style_wizard_views.xml @@ -0,0 +1,23 @@ + + + + sh.survmate.theme.button.style.wizard.view + sh.survmate.theme.button.design.wizard + +
+ preview image + + + +
+
+ +
+
+
\ No newline at end of file diff --git a/sh_survey_all_in_one/static/description/1.png b/sh_survey_all_in_one/static/description/1.png new file mode 100644 index 0000000..6f2a105 Binary files /dev/null and b/sh_survey_all_in_one/static/description/1.png differ diff --git a/sh_survey_all_in_one/static/description/10.png b/sh_survey_all_in_one/static/description/10.png new file mode 100644 index 0000000..df780f0 Binary files /dev/null and b/sh_survey_all_in_one/static/description/10.png differ diff --git a/sh_survey_all_in_one/static/description/11.png b/sh_survey_all_in_one/static/description/11.png new file mode 100644 index 0000000..108e23c Binary files /dev/null and b/sh_survey_all_in_one/static/description/11.png differ diff --git a/sh_survey_all_in_one/static/description/2.png b/sh_survey_all_in_one/static/description/2.png new file mode 100644 index 0000000..0b3f898 Binary files /dev/null and b/sh_survey_all_in_one/static/description/2.png differ diff --git a/sh_survey_all_in_one/static/description/3.png b/sh_survey_all_in_one/static/description/3.png new file mode 100644 index 0000000..9723862 Binary files /dev/null and b/sh_survey_all_in_one/static/description/3.png differ diff --git a/sh_survey_all_in_one/static/description/4.png b/sh_survey_all_in_one/static/description/4.png new file mode 100644 index 0000000..b3e504f Binary files /dev/null and b/sh_survey_all_in_one/static/description/4.png differ diff --git a/sh_survey_all_in_one/static/description/5.png b/sh_survey_all_in_one/static/description/5.png new file mode 100644 index 0000000..da458f5 Binary files /dev/null and b/sh_survey_all_in_one/static/description/5.png differ diff --git a/sh_survey_all_in_one/static/description/6.png b/sh_survey_all_in_one/static/description/6.png new file mode 100644 index 0000000..2fa7d84 Binary files /dev/null and b/sh_survey_all_in_one/static/description/6.png differ diff --git a/sh_survey_all_in_one/static/description/7.png b/sh_survey_all_in_one/static/description/7.png new file mode 100644 index 0000000..b305a6c Binary files /dev/null and b/sh_survey_all_in_one/static/description/7.png differ diff --git a/sh_survey_all_in_one/static/description/8.png b/sh_survey_all_in_one/static/description/8.png new file mode 100644 index 0000000..ffe1f06 Binary files /dev/null and b/sh_survey_all_in_one/static/description/8.png differ diff --git a/sh_survey_all_in_one/static/description/9.png b/sh_survey_all_in_one/static/description/9.png new file mode 100644 index 0000000..5543614 Binary files /dev/null and b/sh_survey_all_in_one/static/description/9.png differ diff --git a/sh_survey_all_in_one/static/description/aarab.png b/sh_survey_all_in_one/static/description/aarab.png new file mode 100644 index 0000000..143ffc9 Binary files /dev/null and b/sh_survey_all_in_one/static/description/aarab.png differ diff --git a/sh_survey_all_in_one/static/description/background.gif b/sh_survey_all_in_one/static/description/background.gif new file mode 100644 index 0000000..5507a23 Binary files /dev/null and b/sh_survey_all_in_one/static/description/background.gif differ diff --git a/sh_survey_all_in_one/static/description/barcode_1.png b/sh_survey_all_in_one/static/description/barcode_1.png new file mode 100644 index 0000000..e0acc39 Binary files /dev/null and b/sh_survey_all_in_one/static/description/barcode_1.png differ diff --git a/sh_survey_all_in_one/static/description/barcode_2.png b/sh_survey_all_in_one/static/description/barcode_2.png new file mode 100644 index 0000000..74ea5e9 Binary files /dev/null and b/sh_survey_all_in_one/static/description/barcode_2.png differ diff --git a/sh_survey_all_in_one/static/description/barcode_3.png b/sh_survey_all_in_one/static/description/barcode_3.png new file mode 100644 index 0000000..bbd8796 Binary files /dev/null and b/sh_survey_all_in_one/static/description/barcode_3.png differ diff --git a/sh_survey_all_in_one/static/description/barcode_4.png b/sh_survey_all_in_one/static/description/barcode_4.png new file mode 100644 index 0000000..7439cd4 Binary files /dev/null and b/sh_survey_all_in_one/static/description/barcode_4.png differ diff --git a/sh_survey_all_in_one/static/description/barcode_5.png b/sh_survey_all_in_one/static/description/barcode_5.png new file mode 100644 index 0000000..45f8852 Binary files /dev/null and b/sh_survey_all_in_one/static/description/barcode_5.png differ diff --git a/sh_survey_all_in_one/static/description/center - 2.png b/sh_survey_all_in_one/static/description/center - 2.png new file mode 100644 index 0000000..4d6235a Binary files /dev/null and b/sh_survey_all_in_one/static/description/center - 2.png differ diff --git a/sh_survey_all_in_one/static/description/chinese.png b/sh_survey_all_in_one/static/description/chinese.png new file mode 100644 index 0000000..fcab845 Binary files /dev/null and b/sh_survey_all_in_one/static/description/chinese.png differ diff --git a/sh_survey_all_in_one/static/description/color_1.png b/sh_survey_all_in_one/static/description/color_1.png new file mode 100644 index 0000000..daf3745 Binary files /dev/null and b/sh_survey_all_in_one/static/description/color_1.png differ diff --git a/sh_survey_all_in_one/static/description/color_2.png b/sh_survey_all_in_one/static/description/color_2.png new file mode 100644 index 0000000..992d4b1 Binary files /dev/null and b/sh_survey_all_in_one/static/description/color_2.png differ diff --git a/sh_survey_all_in_one/static/description/color_3.png b/sh_survey_all_in_one/static/description/color_3.png new file mode 100644 index 0000000..a4ff73e Binary files /dev/null and b/sh_survey_all_in_one/static/description/color_3.png differ diff --git a/sh_survey_all_in_one/static/description/color_4.png b/sh_survey_all_in_one/static/description/color_4.png new file mode 100644 index 0000000..45669d1 Binary files /dev/null and b/sh_survey_all_in_one/static/description/color_4.png differ diff --git a/sh_survey_all_in_one/static/description/config_img/1.png b/sh_survey_all_in_one/static/description/config_img/1.png new file mode 100644 index 0000000..2fdb4cf Binary files /dev/null and b/sh_survey_all_in_one/static/description/config_img/1.png differ diff --git a/sh_survey_all_in_one/static/description/config_img/2.png b/sh_survey_all_in_one/static/description/config_img/2.png new file mode 100644 index 0000000..4c4db6d Binary files /dev/null and b/sh_survey_all_in_one/static/description/config_img/2.png differ diff --git a/sh_survey_all_in_one/static/description/config_img/3.png b/sh_survey_all_in_one/static/description/config_img/3.png new file mode 100644 index 0000000..7c5f00a Binary files /dev/null and b/sh_survey_all_in_one/static/description/config_img/3.png differ diff --git a/sh_survey_all_in_one/static/description/config_img/4.png b/sh_survey_all_in_one/static/description/config_img/4.png new file mode 100644 index 0000000..4791db8 Binary files /dev/null and b/sh_survey_all_in_one/static/description/config_img/4.png differ diff --git a/sh_survey_all_in_one/static/description/config_img/5.png b/sh_survey_all_in_one/static/description/config_img/5.png new file mode 100644 index 0000000..9ddd5ec Binary files /dev/null and b/sh_survey_all_in_one/static/description/config_img/5.png differ diff --git a/sh_survey_all_in_one/static/description/config_img/6.png b/sh_survey_all_in_one/static/description/config_img/6.png new file mode 100644 index 0000000..3f923e7 Binary files /dev/null and b/sh_survey_all_in_one/static/description/config_img/6.png differ diff --git a/sh_survey_all_in_one/static/description/config_img/7.png b/sh_survey_all_in_one/static/description/config_img/7.png new file mode 100644 index 0000000..34c4881 Binary files /dev/null and b/sh_survey_all_in_one/static/description/config_img/7.png differ diff --git a/sh_survey_all_in_one/static/description/config_img/8.png b/sh_survey_all_in_one/static/description/config_img/8.png new file mode 100644 index 0000000..e986d9b Binary files /dev/null and b/sh_survey_all_in_one/static/description/config_img/8.png differ diff --git a/sh_survey_all_in_one/static/description/config_img/9.png b/sh_survey_all_in_one/static/description/config_img/9.png new file mode 100644 index 0000000..fca9539 Binary files /dev/null and b/sh_survey_all_in_one/static/description/config_img/9.png differ diff --git a/sh_survey_all_in_one/static/description/config_img/Button Styles.gif b/sh_survey_all_in_one/static/description/config_img/Button Styles.gif new file mode 100644 index 0000000..cf028a4 Binary files /dev/null and b/sh_survey_all_in_one/static/description/config_img/Button Styles.gif differ diff --git a/sh_survey_all_in_one/static/description/config_img/Check Box Styles Survmate.gif b/sh_survey_all_in_one/static/description/config_img/Check Box Styles Survmate.gif new file mode 100644 index 0000000..5d98ba3 Binary files /dev/null and b/sh_survey_all_in_one/static/description/config_img/Check Box Styles Survmate.gif differ diff --git a/sh_survey_all_in_one/static/description/config_img/Grid Gif.gif b/sh_survey_all_in_one/static/description/config_img/Grid Gif.gif new file mode 100644 index 0000000..51128be Binary files /dev/null and b/sh_survey_all_in_one/static/description/config_img/Grid Gif.gif differ diff --git a/sh_survey_all_in_one/static/description/config_img/Radio Buttons Suvmate.gif b/sh_survey_all_in_one/static/description/config_img/Radio Buttons Suvmate.gif new file mode 100644 index 0000000..7c5b713 Binary files /dev/null and b/sh_survey_all_in_one/static/description/config_img/Radio Buttons Suvmate.gif differ diff --git a/sh_survey_all_in_one/static/description/config_img/Section Style Survmate.gif b/sh_survey_all_in_one/static/description/config_img/Section Style Survmate.gif new file mode 100644 index 0000000..d6a0f43 Binary files /dev/null and b/sh_survey_all_in_one/static/description/config_img/Section Style Survmate.gif differ diff --git a/sh_survey_all_in_one/static/description/config_img/Survmate background Gif.gif b/sh_survey_all_in_one/static/description/config_img/Survmate background Gif.gif new file mode 100644 index 0000000..3fe7f4b Binary files /dev/null and b/sh_survey_all_in_one/static/description/config_img/Survmate background Gif.gif differ diff --git a/sh_survey_all_in_one/static/description/config_img/Survmate theme styles.gif b/sh_survey_all_in_one/static/description/config_img/Survmate theme styles.gif new file mode 100644 index 0000000..e99371a Binary files /dev/null and b/sh_survey_all_in_one/static/description/config_img/Survmate theme styles.gif differ diff --git a/sh_survey_all_in_one/static/description/config_img/theme_style.gif b/sh_survey_all_in_one/static/description/config_img/theme_style.gif new file mode 100644 index 0000000..df22d9a Binary files /dev/null and b/sh_survey_all_in_one/static/description/config_img/theme_style.gif differ diff --git a/sh_survey_all_in_one/static/description/d1.png b/sh_survey_all_in_one/static/description/d1.png new file mode 100644 index 0000000..b405fbf Binary files /dev/null and b/sh_survey_all_in_one/static/description/d1.png differ diff --git a/sh_survey_all_in_one/static/description/d2.png b/sh_survey_all_in_one/static/description/d2.png new file mode 100644 index 0000000..f2d4965 Binary files /dev/null and b/sh_survey_all_in_one/static/description/d2.png differ diff --git a/sh_survey_all_in_one/static/description/d3.png b/sh_survey_all_in_one/static/description/d3.png new file mode 100644 index 0000000..13d9aa9 Binary files /dev/null and b/sh_survey_all_in_one/static/description/d3.png differ diff --git a/sh_survey_all_in_one/static/description/d4.png b/sh_survey_all_in_one/static/description/d4.png new file mode 100644 index 0000000..607ef77 Binary files /dev/null and b/sh_survey_all_in_one/static/description/d4.png differ diff --git a/sh_survey_all_in_one/static/description/d5.png b/sh_survey_all_in_one/static/description/d5.png new file mode 100644 index 0000000..5967573 Binary files /dev/null and b/sh_survey_all_in_one/static/description/d5.png differ diff --git a/sh_survey_all_in_one/static/description/d6.png b/sh_survey_all_in_one/static/description/d6.png new file mode 100644 index 0000000..c5b14be Binary files /dev/null and b/sh_survey_all_in_one/static/description/d6.png differ diff --git a/sh_survey_all_in_one/static/description/email_1.png b/sh_survey_all_in_one/static/description/email_1.png new file mode 100644 index 0000000..0158700 Binary files /dev/null and b/sh_survey_all_in_one/static/description/email_1.png differ diff --git a/sh_survey_all_in_one/static/description/email_2.png b/sh_survey_all_in_one/static/description/email_2.png new file mode 100644 index 0000000..d7080e0 Binary files /dev/null and b/sh_survey_all_in_one/static/description/email_2.png differ diff --git a/sh_survey_all_in_one/static/description/email_3.png b/sh_survey_all_in_one/static/description/email_3.png new file mode 100644 index 0000000..daddc69 Binary files /dev/null and b/sh_survey_all_in_one/static/description/email_3.png differ diff --git a/sh_survey_all_in_one/static/description/email_4.png b/sh_survey_all_in_one/static/description/email_4.png new file mode 100644 index 0000000..9a0628c Binary files /dev/null and b/sh_survey_all_in_one/static/description/email_4.png differ diff --git a/sh_survey_all_in_one/static/description/eng.png b/sh_survey_all_in_one/static/description/eng.png new file mode 100644 index 0000000..91ed524 Binary files /dev/null and b/sh_survey_all_in_one/static/description/eng.png differ diff --git a/sh_survey_all_in_one/static/description/file_1.png b/sh_survey_all_in_one/static/description/file_1.png new file mode 100644 index 0000000..8e9e72c Binary files /dev/null and b/sh_survey_all_in_one/static/description/file_1.png differ diff --git a/sh_survey_all_in_one/static/description/file_2.png b/sh_survey_all_in_one/static/description/file_2.png new file mode 100644 index 0000000..abb9112 Binary files /dev/null and b/sh_survey_all_in_one/static/description/file_2.png differ diff --git a/sh_survey_all_in_one/static/description/file_3.png b/sh_survey_all_in_one/static/description/file_3.png new file mode 100644 index 0000000..18b2786 Binary files /dev/null and b/sh_survey_all_in_one/static/description/file_3.png differ diff --git a/sh_survey_all_in_one/static/description/file_4.png b/sh_survey_all_in_one/static/description/file_4.png new file mode 100644 index 0000000..52202bd Binary files /dev/null and b/sh_survey_all_in_one/static/description/file_4.png differ diff --git a/sh_survey_all_in_one/static/description/french.png b/sh_survey_all_in_one/static/description/french.png new file mode 100644 index 0000000..15ac751 Binary files /dev/null and b/sh_survey_all_in_one/static/description/french.png differ diff --git a/sh_survey_all_in_one/static/description/german.png b/sh_survey_all_in_one/static/description/german.png new file mode 100644 index 0000000..13efbe5 Binary files /dev/null and b/sh_survey_all_in_one/static/description/german.png differ diff --git a/sh_survey_all_in_one/static/description/heading.png b/sh_survey_all_in_one/static/description/heading.png new file mode 100644 index 0000000..3474821 Binary files /dev/null and b/sh_survey_all_in_one/static/description/heading.png differ diff --git a/sh_survey_all_in_one/static/description/heading1.png b/sh_survey_all_in_one/static/description/heading1.png new file mode 100644 index 0000000..599eb07 Binary files /dev/null and b/sh_survey_all_in_one/static/description/heading1.png differ diff --git a/sh_survey_all_in_one/static/description/icon.png b/sh_survey_all_in_one/static/description/icon.png new file mode 100644 index 0000000..f16c901 Binary files /dev/null and b/sh_survey_all_in_one/static/description/icon.png differ diff --git a/sh_survey_all_in_one/static/description/image/1.png b/sh_survey_all_in_one/static/description/image/1.png new file mode 100644 index 0000000..af418a4 Binary files /dev/null and b/sh_survey_all_in_one/static/description/image/1.png differ diff --git a/sh_survey_all_in_one/static/description/image/2.png b/sh_survey_all_in_one/static/description/image/2.png new file mode 100644 index 0000000..7269080 Binary files /dev/null and b/sh_survey_all_in_one/static/description/image/2.png differ diff --git a/sh_survey_all_in_one/static/description/image/3.png b/sh_survey_all_in_one/static/description/image/3.png new file mode 100644 index 0000000..0e9575a Binary files /dev/null and b/sh_survey_all_in_one/static/description/image/3.png differ diff --git a/sh_survey_all_in_one/static/description/image/4.png b/sh_survey_all_in_one/static/description/image/4.png new file mode 100644 index 0000000..55eabd7 Binary files /dev/null and b/sh_survey_all_in_one/static/description/image/4.png differ diff --git a/sh_survey_all_in_one/static/description/image/banner.png b/sh_survey_all_in_one/static/description/image/banner.png new file mode 100644 index 0000000..0ffd93f Binary files /dev/null and b/sh_survey_all_in_one/static/description/image/banner.png differ diff --git a/sh_survey_all_in_one/static/description/image/devider.png b/sh_survey_all_in_one/static/description/image/devider.png new file mode 100644 index 0000000..724a13a Binary files /dev/null and b/sh_survey_all_in_one/static/description/image/devider.png differ diff --git a/sh_survey_all_in_one/static/description/image/keyfeatures_1.png b/sh_survey_all_in_one/static/description/image/keyfeatures_1.png new file mode 100644 index 0000000..d821209 Binary files /dev/null and b/sh_survey_all_in_one/static/description/image/keyfeatures_1.png differ diff --git a/sh_survey_all_in_one/static/description/image/keyfeatures_2.png b/sh_survey_all_in_one/static/description/image/keyfeatures_2.png new file mode 100644 index 0000000..5ee998b Binary files /dev/null and b/sh_survey_all_in_one/static/description/image/keyfeatures_2.png differ diff --git a/sh_survey_all_in_one/static/description/image1.png b/sh_survey_all_in_one/static/description/image1.png new file mode 100644 index 0000000..56b5b81 Binary files /dev/null and b/sh_survey_all_in_one/static/description/image1.png differ diff --git a/sh_survey_all_in_one/static/description/image2.png b/sh_survey_all_in_one/static/description/image2.png new file mode 100644 index 0000000..358649a Binary files /dev/null and b/sh_survey_all_in_one/static/description/image2.png differ diff --git a/sh_survey_all_in_one/static/description/image3.png b/sh_survey_all_in_one/static/description/image3.png new file mode 100644 index 0000000..5b697df Binary files /dev/null and b/sh_survey_all_in_one/static/description/image3.png differ diff --git a/sh_survey_all_in_one/static/description/images/theme style 1.png b/sh_survey_all_in_one/static/description/images/theme style 1.png new file mode 100644 index 0000000..5c16469 Binary files /dev/null and b/sh_survey_all_in_one/static/description/images/theme style 1.png differ diff --git a/sh_survey_all_in_one/static/description/images/theme style 2.png b/sh_survey_all_in_one/static/description/images/theme style 2.png new file mode 100644 index 0000000..92fdcbc Binary files /dev/null and b/sh_survey_all_in_one/static/description/images/theme style 2.png differ diff --git a/sh_survey_all_in_one/static/description/images/theme style 3.png b/sh_survey_all_in_one/static/description/images/theme style 3.png new file mode 100644 index 0000000..362512e Binary files /dev/null and b/sh_survey_all_in_one/static/description/images/theme style 3.png differ diff --git a/sh_survey_all_in_one/static/description/images/theme style 4.png b/sh_survey_all_in_one/static/description/images/theme style 4.png new file mode 100644 index 0000000..012010c Binary files /dev/null and b/sh_survey_all_in_one/static/description/images/theme style 4.png differ diff --git a/sh_survey_all_in_one/static/description/images/theme style 5.png b/sh_survey_all_in_one/static/description/images/theme style 5.png new file mode 100644 index 0000000..f7b83da Binary files /dev/null and b/sh_survey_all_in_one/static/description/images/theme style 5.png differ diff --git a/sh_survey_all_in_one/static/description/images/theme style 6.png b/sh_survey_all_in_one/static/description/images/theme style 6.png new file mode 100644 index 0000000..8450f3a Binary files /dev/null and b/sh_survey_all_in_one/static/description/images/theme style 6.png differ diff --git a/sh_survey_all_in_one/static/description/img1.png b/sh_survey_all_in_one/static/description/img1.png new file mode 100644 index 0000000..6c7fbd5 Binary files /dev/null and b/sh_survey_all_in_one/static/description/img1.png differ diff --git a/sh_survey_all_in_one/static/description/img2.png b/sh_survey_all_in_one/static/description/img2.png new file mode 100644 index 0000000..3dd5dac Binary files /dev/null and b/sh_survey_all_in_one/static/description/img2.png differ diff --git a/sh_survey_all_in_one/static/description/img3.png b/sh_survey_all_in_one/static/description/img3.png new file mode 100644 index 0000000..5312361 Binary files /dev/null and b/sh_survey_all_in_one/static/description/img3.png differ diff --git a/sh_survey_all_in_one/static/description/img4.png b/sh_survey_all_in_one/static/description/img4.png new file mode 100644 index 0000000..f80b69f Binary files /dev/null and b/sh_survey_all_in_one/static/description/img4.png differ diff --git a/sh_survey_all_in_one/static/description/index.html b/sh_survey_all_in_one/static/description/index.html new file mode 100644 index 0000000..8072632 --- /dev/null +++ b/sh_survey_all_in_one/static/description/index.html @@ -0,0 +1,2382 @@ + + + + + + + + + + + + + + + + + +
+
+
+
+
+
+ logo +
+
+ Community + Enterprise + Odoo.sh +
+
+
+
+
+
+
+
+ +
+
+
+
+
Email Field
+ +
+
+
File Field
+ +
+
+
URL Field
+ +
+
+
Time Field
+ +
+
+
Range Field
+ +
+
+
Week Field
+ +
+
+
Month Field
+ +
+
+
Password Field
+ +
+
+
Date Field
+ +
+
+
Color Field
+ +
+
+
Single Line Text Box With Pattern
+ +
+
+
Address Field
+ +
+
+
Signature Field
+ +
+
+
Many To Many Field
+ +
+
+
Many To One Field
+ +
+
+
Checkbox Field
+ +
+
+
Radio Button Field
+ +
+
+
Barcode Field
+ +
+
+
QRCode Field
+ +
+
+
Barcode/QRCode With Matrix
+ +
+
+
Location Field
+ +
+
+
+
+
+
+
+
+ +
+
+ +
+
+
+
+
+
+
+
+

+ Hot Features

+ +
+
+
+
+
5 Theme + Styles
+
+
+
+
+
+
+
5 Section + Styles
+
+
+
+
+
+
+
5 Form Input + Styles
+
+
+
+
+
+
+
5 Button + Styles
+
+
+
+
+
+
+
5 Check Box + Styles
+
+
+
+
+
+
+
5 Radio + button style
+
+
+
+
+
+
+
Fully + Responsive
+
+
+
+
+
+
+
Fully + Customizable
+
+
+
+
+
+
+
Material + Design
+
+
+
+
+
+
+
Address For + Survey
+
+
+
+
+
+
+
Signature + For Survey
+
+
+
+
+
+
+
Document For + Survey
+
+
+
+
+
+
+
Many2one + Field
+
+
+
+
+
+
+
Many2many + Field
+
+
+
+
+
+
+
Email For + Survey
+
+
+
+
+
+
+
Color Option + For Survey
+
+
+
+
+
+
+
Password + Option For Survey
+
+
+
+
+
+
+
Range Option + For Survey
+
+
+
+
+
+
+
Date Option + For Survey
+
+
+
+
+
+
+
Month & Week + Option For Survey
+
+
+
+
+
+
+
Print Survey + Answers
+
+
+
+
+
+
+
QR Field For + Survey
+
+
+
+
+
+
+
Location + Field For Survey
+
+
+
+
+
+
+
Custom + Survey Matrix
+
+
+
+
+
+
+
+
+
+
+
+
+

Videos

+ +
+
+
+
+ + + +
+
+
+
+
+
+ + + +
+
+
+
+
+
+ + + +
+
+
+
+
+
+ + + +
+
+
+
+
+
+
+
+
+
+ +
+
+
+ +
+
+ +
+
+ +
+ +
+
+
+

+ Theme Configuration

+
+

+ You can customize your survey form body with + different tools. There is mainly two types of theme + style. That you can easily customization as per + requirement. There are many options for customizing + themes. All options are briefly explained below. +

+
+
+
+
+ +
+
+
+
+

+ Theme Styles

+

+ Here in this theme you have 5 different ready made + theme styles. You can also change it as per your + choice.

+
+
+ +
+ +
+
+
+
+
+
+
+

+ Section Styles

+

+ You can customize your section style from the + configuration settings. We are providing 5 unique + section styles.

+
+
+
+ +
+ +
+
+
+
+
+
+

+ Button Styles

+

+ You can customize your button style from the + configuration settings. here we provide 5 unique + button styles.

+
+
+ +
+ +
+
+
+
+
+
+
+

+ Form Elements Styles

+

+ You can customize your form elements style from the + configuration settings. We are providing 10 unique + form elements styles.

+
+
+
+ +
+ +
+
+
+
+
+
+

+ Radio Button Styles

+

+ You can customize the radio button style from the + configuration settings. Here we providing 10 unique + radio button styles.

+
+
+ +
+ +
+
+
+
+
+
+
+

+ CheckBox Styles

+

+ You can customize the checkbox style from the + configuration settings. Here we provide 10 unique + checkbox styles.

+
+
+
+ +
+ +
+
+
+
+
+
+

+ Background Styles

+

+ You can customize your background style from the + configuration settings. You can set survey form + background image or color

+
+
+ +
+ +
+
+
+
+
+
+
+

+ Bootstrap Grid

+

+ You can customize your Questions and Answers like + bootstrap grid system. This feature will help to + display your survey form more clean and attractive. +

+
+
+
+ +
+ +
+
+
+
+
+
+

+ Primary Color Styles

+

+ You can set your primary and secondary color from as + per theme color so your survey form will look more + attractive.

+
+
+ +
+ +
+
+
+
+ +
+
+ +
+ +
+ +
+

E-mail Field. +

+
+ +
+
+

E-mail Field Front View. +

+
+ +
+
+

E-mail Field in reviewing your answers(submitted answer). +

+
+ +
+
+

E-mail Field in backed. +

+
+ +
+
+
+
+

File Field . +

+
+ +
+
+

File Field Front View. +

+
+ +
+
+

File Field in reviewing your answers(submitted answer). +

+
+ +
+
+

File Field in backed. +

+
+ +
+
+
+
+

URL Field. +

+
+ +
+
+

URL Field Front View. +

+
+ +
+
+

URL Field in reviewing your answers(submitted answer). +

+
+ +
+
+

URL Field in backed. +

+
+ +
+
+
+
+

Time Field. +

+
+ +
+
+

Time Field Front View. +

+
+ +
+
+

Time Field in reviewing your answers(submitted answer). +

+
+ +
+
+

Time Field in backed. +

+
+ +
+
+
+
+

Range Field. +

+
+ +
+
+

Range Field Front View. +

+
+ +
+
+

Range Field in reviewing your answers(submitted answer). +

+
+ +
+
+

Range Field in backed. +

+
+ +
+
+
+
+

Week Field. +

+
+ +
+
+

Week Field Front View. +

+
+ +
+
+

Week Field in reviewing your answers(submitted answer). +

+
+ +
+
+

Week Field in backed. +

+
+ +
+
+
+ +
+

Color Field. +

+
+ +
+
+

Color Field Front View. +

+
+ +
+
+

Color Field in reviewing your answers(submitted answer). +

+
+ +
+
+

Color Field in backed. +

+
+ +
+
+
+
+ + +

Pattern option in single-line text box Field. +

+
+ +
+
+

A single-line text box with a pattern Front View. +

+
+ +
+
+

A single-line text box with a pattern in reviewing your answers(submitted answer). +

+
+ +
+
+

A single-line text box with pattern Field in backed. +

+
+ +
+
+

+ Note : Pls kindly note that textbox pattern not migrated for v14 as of now. +

+
+ +
+
+

+ Note : Pls kindly note that textbox pattern not migrated for v14 as of now. +

+
+ +
+
+
+
+ +

Address option in survey form. +

+
+ +
+
+

Address front view in survey form. +

+
+ +
+
+
+
+

Month Filed +

+
+ +
+
+

Month Field Front View. +

+
+ +
+
+

Month Field in reviewing your answers(submitted answer). +

+
+ +
+
+

Month Field in backed. +

+
+ +
+
+
+
+ +

password filed +

+
+ +
+
+

Password Field Front View. +

+
+ +
+
+

Password Field in reviewing your answers(submitted answer). +

+
+ +
+
+

Password Field in backed. +

+
+ +
+
+
+ + +
+ +

Signature option in survey form. +

+
+ +
+
+

Signature front view in survey form. +

+
+ +
+
+
+
+

Many2one Field. +

+
+ +
+
+

Using Many2one field you can select and search state in survey. +

+
+ +
+
+

Many2one field front view. +

+
+ +
+
+

Many2one field graph view. +

+
+ +
+
+

Many2one field detail view. +

+
+ +
+
+

Many2many Field. +

+
+ +
+
+

Using Many2many field you can select and search partners in survey. +

+
+ +
+
+

Many2many field front view. +

+
+ +
+
+

Many2many field graph view. +

+
+ +
+
+

Many2many field detail view. +

+
+ +
+
+
+
+

+ New question type added: Barcode, it scans Barcode by camera. +

+
+ +
+
+

+ Barcode Field Front View, click that button to scan Barcode. +

+
+ +
+
+

+ Scan Barcode code from wizard after successfully scanning it will automatically close that. +

+
+ +
+
+

+ Barcode Field front view. +

+
+ +
+
+

+ After press "Submit Survey" it stores Barcode in the survey, Barcode Field in backed looks like below. +

+
+ +
+
+
+

+ New question type added: QR code, it scans QR by camera. +

+
+ +
+
+

+ QR Field Front View, click that button to scan QR. +

+
+ +
+
+

+ Scan QR code from wizard after successfully scanning it will automatically close that. +

+
+ +
+
+

+ QR Field front view. +

+
+ +
+
+

+ After press "Submit Survey" it stores QR in the survey, QR Field in backed looks like below. +

+
+ +
+
+
+

+ Location Field in the survey. +

+
+ +
+
+

+ Press "Allow" in the popup to access permission in the location type survey. +

+
+ +
+
+

+ After "Allow" in the popup based on the location it automatically filled the answer. +

+
+ +
+
+

+ After press "Submit Survey" Location Field in backed looks like below. +

+
+ +
+
+ +
+ + +

+ Choose + "Matrix" + in + the + question + type. +

+
+ +
+
+

+ Choose + rows + and + columns + for + the + matrix. + +

+
+ +
+
+

+ Choose + a + matrix + in + the + matrix + type. +

+
+ +
+
+

+ You + can + select + fields + as + per + need. +

+
+ +
+
+

+ The + custom + matrix + in + the + survey + form. +

+
+ +
+

+ The + custom + matrix + in + the + review + answer + page. +

+
+ +
+

+ The + custom + matrix + in + the + answer + list + view. +

+
+ +
+

+ The + question-answer + 1 + form + view. +

+
+ +
+

+ The + question-answer + 2 + form + view. +

+
+ +
+

+ The + question-answer + 3 + form + view. +

+
+ +
+

+ The + custom + matrix + in + the + print. +

+
+ +

+
+ + +
+

+ Barcode/QRCode fields added in the matrix. +

+
+ +
+
+

+ QR/Barcode button in the custom matrix, click that button to scan that. +

+
+ +
+
+

Scan QRCode from wizard after successfully scanning it will automatically close that. +

+
+ +
+
+

Scanned QRCode auto-filled. +

+
+ +
+
+

QRCode answer in the survey matrix. +

+
+ +
+
+

Scan Barcode from wizard after successfully scanning it will automatically close that. +

+
+ +
+
+

Scanned Barcode auto-filled. +

+
+ +
+
+

Barcode answer in the survey matrix. +

+
+ +
+
+

Barcode/QRCode in the review answer page. +

+
+ +
+
+

Barcode/QRCode in the survey answer. +

+
+ +
+
+
+

+ Range input in custom matrix. +

+
+ +
+
+

+ Custom matrix with range. +

+
+ +
+
+
+ + + +
+ + +
+
+
+
+ + +
+
+
+
+
+ +
+
+

+ Yes, this app works perfectly with Odoo Enterprise + (Odoo.sh & Premise) as well as Community.

+
+
+
+
+ + + + + +
+
+ +
+
+

+ We don't give custom fields to survey analytic part + except many2one and many2many fields.

+
+
+
+
+ +
+
+ +
+
+

+ Please Contact Us at sales@softhealer.comto + request customization.

+
+
+
+
+
+
+ +
+
+

+ Yes, we provide free support for 100 days.

+
+
+
+
+
+
+ +
+
+

+ Yes, you will get free update for lifetime.

+
+
+
+
+
+
+ +
+
+

+ No, you don't need to install addition libraries.

+
+
+
+
+
+
+ +
+
+

+ Yes, You have to download module for each version + (13,14,15) except in version 12 or lower.

+
+
+
+
+
+
+ +
+
+

+ No, We do not provide any kind of exchange. +

+
+
+
+
+ +
+
+ +
+
+

+ No, this application is not compatible with odoo.com(odoo saas).

+
+
+
+
+ + +
+
+
+ + +
+ +
+

+ + Version 16.0.5 | Released on : + 05th October 2023 +

+
+
+ + Fixed + + Minor Bug Fixed. +
+
+
+ +
+

+ + Version 16.0.4 | Released on : + 14th September 2023 +

+
+
+ + Fixed + + Minor Bug Fixed. +
+
+
+ + + + + + + +
+

+ + Version 16.0.3 | Released on : + 14th April 2023 +

+
+ +
+ Update + + Required Field Warning Added In Signature, Many2one & Many2many Field.
+
+
+
+

+ + Version 16.0.2 | Released on : + 27th December 2022 +

+
+
+ + Fixed + + Minor Bug Fixed. +
+
+
+
+

+ + Version 16.0.1 | Released on : + 28th October 2022 +

+
+
+ + Initial + + Initial Release. +
+
+
+
+ + + + +
+
+
+
+
+
+
+
+
+
+

+ Multi- Languages

+ +
+
+ We have added predefined + some languages(English, + German / Deutsch, Arabic, + Spanish / Espanol, French + / Francais, Chinese, Portuguese/Portugal) in + module, If you want to + add other language you + can contact us on support@softhealer.com. + We use google translator + tools for multi-languages + so possible translations + can be not accurate. we + accept suggest to make + more accurate + translations also on support@softhealer.com. +

+
+
+
+
+
+ english + germany + arab + spanish + Chinese + French +
+
+
+
+
+
+
+
+
+
+
+
+ + +
+
+
+
+
+
+
+
+
+
+

+ Included Apps

+ + +
+
+
+
+ + + +
+
+
+
+
+
+ + + +
+
+
+
+
+
+ + + +
+
+
+
+
+
+ + + +
+
+
+
+
+
+
+
+
+
+
+
+

+ You May Also Like

+ + +
+
+
+
+ + + +
+
+
+
+
+
+ + + +
+
+
+
+
+
+ + + +
+
+
+
+
+
+
+
+
+
+
+
+

+ Most Demanded Apps

+ + +
+ +
+
+
+ + sh_all_in_one_mbs + +
+
+
+
+
+
+ + sh_activities_management + +
+
+
+
+
+
+ + sh_all_in_one_helpdesk + +
+
+
+
+
+
+ + sh_secondary_unit + +
+
+
+
+
+
+ + sh_barcode_scanner + +
+
+
+ +
+
+
+ + sh_all_in_one_basic_import + +
+
+
+
+
+
+
+
+ +
+
+
+
+
+
+
+ Skype +
+
+ Email +
+
+
+
+
+
+
+
+
+ + + + + \ No newline at end of file diff --git a/sh_survey_all_in_one/static/description/info.png b/sh_survey_all_in_one/static/description/info.png new file mode 100644 index 0000000..2317ee9 Binary files /dev/null and b/sh_survey_all_in_one/static/description/info.png differ diff --git a/sh_survey_all_in_one/static/description/loc_1.png b/sh_survey_all_in_one/static/description/loc_1.png new file mode 100644 index 0000000..f51f2a2 Binary files /dev/null and b/sh_survey_all_in_one/static/description/loc_1.png differ diff --git a/sh_survey_all_in_one/static/description/loc_2.png b/sh_survey_all_in_one/static/description/loc_2.png new file mode 100644 index 0000000..5cfe33d Binary files /dev/null and b/sh_survey_all_in_one/static/description/loc_2.png differ diff --git a/sh_survey_all_in_one/static/description/loc_3.png b/sh_survey_all_in_one/static/description/loc_3.png new file mode 100644 index 0000000..65c96a7 Binary files /dev/null and b/sh_survey_all_in_one/static/description/loc_3.png differ diff --git a/sh_survey_all_in_one/static/description/loc_4.png b/sh_survey_all_in_one/static/description/loc_4.png new file mode 100644 index 0000000..2eb5468 Binary files /dev/null and b/sh_survey_all_in_one/static/description/loc_4.png differ diff --git a/sh_survey_all_in_one/static/description/m1.png b/sh_survey_all_in_one/static/description/m1.png new file mode 100644 index 0000000..28da6f5 Binary files /dev/null and b/sh_survey_all_in_one/static/description/m1.png differ diff --git a/sh_survey_all_in_one/static/description/m2.png b/sh_survey_all_in_one/static/description/m2.png new file mode 100644 index 0000000..8cc95db Binary files /dev/null and b/sh_survey_all_in_one/static/description/m2.png differ diff --git a/sh_survey_all_in_one/static/description/m3_qr_1.png b/sh_survey_all_in_one/static/description/m3_qr_1.png new file mode 100644 index 0000000..a270bec Binary files /dev/null and b/sh_survey_all_in_one/static/description/m3_qr_1.png differ diff --git a/sh_survey_all_in_one/static/description/m3_qr_2.png b/sh_survey_all_in_one/static/description/m3_qr_2.png new file mode 100644 index 0000000..85a1883 Binary files /dev/null and b/sh_survey_all_in_one/static/description/m3_qr_2.png differ diff --git a/sh_survey_all_in_one/static/description/m3_qr_3.png b/sh_survey_all_in_one/static/description/m3_qr_3.png new file mode 100644 index 0000000..238cf7a Binary files /dev/null and b/sh_survey_all_in_one/static/description/m3_qr_3.png differ diff --git a/sh_survey_all_in_one/static/description/m4_br_1.png b/sh_survey_all_in_one/static/description/m4_br_1.png new file mode 100644 index 0000000..fa1844e Binary files /dev/null and b/sh_survey_all_in_one/static/description/m4_br_1.png differ diff --git a/sh_survey_all_in_one/static/description/m4_br_2.png b/sh_survey_all_in_one/static/description/m4_br_2.png new file mode 100644 index 0000000..9359294 Binary files /dev/null and b/sh_survey_all_in_one/static/description/m4_br_2.png differ diff --git a/sh_survey_all_in_one/static/description/m4_br_3.png b/sh_survey_all_in_one/static/description/m4_br_3.png new file mode 100644 index 0000000..ba30c09 Binary files /dev/null and b/sh_survey_all_in_one/static/description/m4_br_3.png differ diff --git a/sh_survey_all_in_one/static/description/m4_br_qr_review.png b/sh_survey_all_in_one/static/description/m4_br_qr_review.png new file mode 100644 index 0000000..0eae979 Binary files /dev/null and b/sh_survey_all_in_one/static/description/m4_br_qr_review.png differ diff --git a/sh_survey_all_in_one/static/description/m6_ans.png b/sh_survey_all_in_one/static/description/m6_ans.png new file mode 100644 index 0000000..7d7b03f Binary files /dev/null and b/sh_survey_all_in_one/static/description/m6_ans.png differ diff --git a/sh_survey_all_in_one/static/description/mobileapp.png b/sh_survey_all_in_one/static/description/mobileapp.png new file mode 100644 index 0000000..cf31da4 Binary files /dev/null and b/sh_survey_all_in_one/static/description/mobileapp.png differ diff --git a/sh_survey_all_in_one/static/description/month_1.png b/sh_survey_all_in_one/static/description/month_1.png new file mode 100644 index 0000000..a1b075c Binary files /dev/null and b/sh_survey_all_in_one/static/description/month_1.png differ diff --git a/sh_survey_all_in_one/static/description/month_2.png b/sh_survey_all_in_one/static/description/month_2.png new file mode 100644 index 0000000..def757f Binary files /dev/null and b/sh_survey_all_in_one/static/description/month_2.png differ diff --git a/sh_survey_all_in_one/static/description/month_3.png b/sh_survey_all_in_one/static/description/month_3.png new file mode 100644 index 0000000..cdaaa2c Binary files /dev/null and b/sh_survey_all_in_one/static/description/month_3.png differ diff --git a/sh_survey_all_in_one/static/description/month_4.png b/sh_survey_all_in_one/static/description/month_4.png new file mode 100644 index 0000000..43a6228 Binary files /dev/null and b/sh_survey_all_in_one/static/description/month_4.png differ diff --git a/sh_survey_all_in_one/static/description/password_1.png b/sh_survey_all_in_one/static/description/password_1.png new file mode 100644 index 0000000..3202a70 Binary files /dev/null and b/sh_survey_all_in_one/static/description/password_1.png differ diff --git a/sh_survey_all_in_one/static/description/password_2.png b/sh_survey_all_in_one/static/description/password_2.png new file mode 100644 index 0000000..9aa21b2 Binary files /dev/null and b/sh_survey_all_in_one/static/description/password_2.png differ diff --git a/sh_survey_all_in_one/static/description/password_3.png b/sh_survey_all_in_one/static/description/password_3.png new file mode 100644 index 0000000..9174517 Binary files /dev/null and b/sh_survey_all_in_one/static/description/password_3.png differ diff --git a/sh_survey_all_in_one/static/description/password_4.png b/sh_survey_all_in_one/static/description/password_4.png new file mode 100644 index 0000000..73546c9 Binary files /dev/null and b/sh_survey_all_in_one/static/description/password_4.png differ diff --git a/sh_survey_all_in_one/static/description/pattern_text_1.png b/sh_survey_all_in_one/static/description/pattern_text_1.png new file mode 100644 index 0000000..e535edf Binary files /dev/null and b/sh_survey_all_in_one/static/description/pattern_text_1.png differ diff --git a/sh_survey_all_in_one/static/description/pattern_text_2.png b/sh_survey_all_in_one/static/description/pattern_text_2.png new file mode 100644 index 0000000..2b2984a Binary files /dev/null and b/sh_survey_all_in_one/static/description/pattern_text_2.png differ diff --git a/sh_survey_all_in_one/static/description/pattern_text_3.png b/sh_survey_all_in_one/static/description/pattern_text_3.png new file mode 100644 index 0000000..7ae349c Binary files /dev/null and b/sh_survey_all_in_one/static/description/pattern_text_3.png differ diff --git a/sh_survey_all_in_one/static/description/pattern_text_4.png b/sh_survey_all_in_one/static/description/pattern_text_4.png new file mode 100644 index 0000000..29fd9bd Binary files /dev/null and b/sh_survey_all_in_one/static/description/pattern_text_4.png differ diff --git a/sh_survey_all_in_one/static/description/print_ans_1.png b/sh_survey_all_in_one/static/description/print_ans_1.png new file mode 100644 index 0000000..6547322 Binary files /dev/null and b/sh_survey_all_in_one/static/description/print_ans_1.png differ diff --git a/sh_survey_all_in_one/static/description/print_survey_1.png b/sh_survey_all_in_one/static/description/print_survey_1.png new file mode 100644 index 0000000..781607c Binary files /dev/null and b/sh_survey_all_in_one/static/description/print_survey_1.png differ diff --git a/sh_survey_all_in_one/static/description/qr_1.png b/sh_survey_all_in_one/static/description/qr_1.png new file mode 100644 index 0000000..6630600 Binary files /dev/null and b/sh_survey_all_in_one/static/description/qr_1.png differ diff --git a/sh_survey_all_in_one/static/description/qr_2.png b/sh_survey_all_in_one/static/description/qr_2.png new file mode 100644 index 0000000..bc31d59 Binary files /dev/null and b/sh_survey_all_in_one/static/description/qr_2.png differ diff --git a/sh_survey_all_in_one/static/description/qr_3.png b/sh_survey_all_in_one/static/description/qr_3.png new file mode 100644 index 0000000..5622134 Binary files /dev/null and b/sh_survey_all_in_one/static/description/qr_3.png differ diff --git a/sh_survey_all_in_one/static/description/qr_4.png b/sh_survey_all_in_one/static/description/qr_4.png new file mode 100644 index 0000000..73973a0 Binary files /dev/null and b/sh_survey_all_in_one/static/description/qr_4.png differ diff --git a/sh_survey_all_in_one/static/description/qr_5.png b/sh_survey_all_in_one/static/description/qr_5.png new file mode 100644 index 0000000..134c22f Binary files /dev/null and b/sh_survey_all_in_one/static/description/qr_5.png differ diff --git a/sh_survey_all_in_one/static/description/range_1.png b/sh_survey_all_in_one/static/description/range_1.png new file mode 100644 index 0000000..d375697 Binary files /dev/null and b/sh_survey_all_in_one/static/description/range_1.png differ diff --git a/sh_survey_all_in_one/static/description/range_2.png b/sh_survey_all_in_one/static/description/range_2.png new file mode 100644 index 0000000..64d5864 Binary files /dev/null and b/sh_survey_all_in_one/static/description/range_2.png differ diff --git a/sh_survey_all_in_one/static/description/range_3.png b/sh_survey_all_in_one/static/description/range_3.png new file mode 100644 index 0000000..c3287e5 Binary files /dev/null and b/sh_survey_all_in_one/static/description/range_3.png differ diff --git a/sh_survey_all_in_one/static/description/range_4.png b/sh_survey_all_in_one/static/description/range_4.png new file mode 100644 index 0000000..1e336f1 Binary files /dev/null and b/sh_survey_all_in_one/static/description/range_4.png differ diff --git a/sh_survey_all_in_one/static/description/s1.png b/sh_survey_all_in_one/static/description/s1.png new file mode 100644 index 0000000..15247e8 Binary files /dev/null and b/sh_survey_all_in_one/static/description/s1.png differ diff --git a/sh_survey_all_in_one/static/description/s10.png b/sh_survey_all_in_one/static/description/s10.png new file mode 100644 index 0000000..b040add Binary files /dev/null and b/sh_survey_all_in_one/static/description/s10.png differ diff --git a/sh_survey_all_in_one/static/description/s11.png b/sh_survey_all_in_one/static/description/s11.png new file mode 100644 index 0000000..8b57681 Binary files /dev/null and b/sh_survey_all_in_one/static/description/s11.png differ diff --git a/sh_survey_all_in_one/static/description/s12.png b/sh_survey_all_in_one/static/description/s12.png new file mode 100644 index 0000000..e837ab5 Binary files /dev/null and b/sh_survey_all_in_one/static/description/s12.png differ diff --git a/sh_survey_all_in_one/static/description/s13.png b/sh_survey_all_in_one/static/description/s13.png new file mode 100644 index 0000000..cf81f67 Binary files /dev/null and b/sh_survey_all_in_one/static/description/s13.png differ diff --git a/sh_survey_all_in_one/static/description/s14.png b/sh_survey_all_in_one/static/description/s14.png new file mode 100644 index 0000000..bd18225 Binary files /dev/null and b/sh_survey_all_in_one/static/description/s14.png differ diff --git a/sh_survey_all_in_one/static/description/s2.png b/sh_survey_all_in_one/static/description/s2.png new file mode 100644 index 0000000..377a902 Binary files /dev/null and b/sh_survey_all_in_one/static/description/s2.png differ diff --git a/sh_survey_all_in_one/static/description/s3.png b/sh_survey_all_in_one/static/description/s3.png new file mode 100644 index 0000000..dc568de Binary files /dev/null and b/sh_survey_all_in_one/static/description/s3.png differ diff --git a/sh_survey_all_in_one/static/description/s4.png b/sh_survey_all_in_one/static/description/s4.png new file mode 100644 index 0000000..a923d54 Binary files /dev/null and b/sh_survey_all_in_one/static/description/s4.png differ diff --git a/sh_survey_all_in_one/static/description/s5.png b/sh_survey_all_in_one/static/description/s5.png new file mode 100644 index 0000000..cb1519e Binary files /dev/null and b/sh_survey_all_in_one/static/description/s5.png differ diff --git a/sh_survey_all_in_one/static/description/s6.png b/sh_survey_all_in_one/static/description/s6.png new file mode 100644 index 0000000..5084036 Binary files /dev/null and b/sh_survey_all_in_one/static/description/s6.png differ diff --git a/sh_survey_all_in_one/static/description/s7.png b/sh_survey_all_in_one/static/description/s7.png new file mode 100644 index 0000000..88257d7 Binary files /dev/null and b/sh_survey_all_in_one/static/description/s7.png differ diff --git a/sh_survey_all_in_one/static/description/s8.png b/sh_survey_all_in_one/static/description/s8.png new file mode 100644 index 0000000..e73cad8 Binary files /dev/null and b/sh_survey_all_in_one/static/description/s8.png differ diff --git a/sh_survey_all_in_one/static/description/s9.png b/sh_survey_all_in_one/static/description/s9.png new file mode 100644 index 0000000..a5cf7cc Binary files /dev/null and b/sh_survey_all_in_one/static/description/s9.png differ diff --git a/sh_survey_all_in_one/static/description/setting.png b/sh_survey_all_in_one/static/description/setting.png new file mode 100644 index 0000000..a7c8508 Binary files /dev/null and b/sh_survey_all_in_one/static/description/setting.png differ diff --git a/sh_survey_all_in_one/static/description/shape.png b/sh_survey_all_in_one/static/description/shape.png new file mode 100644 index 0000000..5063a6b Binary files /dev/null and b/sh_survey_all_in_one/static/description/shape.png differ diff --git a/sh_survey_all_in_one/static/description/single_txt_box.png b/sh_survey_all_in_one/static/description/single_txt_box.png new file mode 100644 index 0000000..41274f1 Binary files /dev/null and b/sh_survey_all_in_one/static/description/single_txt_box.png differ diff --git a/sh_survey_all_in_one/static/description/single_txt_box_patn.png b/sh_survey_all_in_one/static/description/single_txt_box_patn.png new file mode 100644 index 0000000..cb3e9e4 Binary files /dev/null and b/sh_survey_all_in_one/static/description/single_txt_box_patn.png differ diff --git a/sh_survey_all_in_one/static/description/softhealer.png b/sh_survey_all_in_one/static/description/softhealer.png new file mode 100644 index 0000000..17ee128 Binary files /dev/null and b/sh_survey_all_in_one/static/description/softhealer.png differ diff --git a/sh_survey_all_in_one/static/description/spanish.jpg b/sh_survey_all_in_one/static/description/spanish.jpg new file mode 100644 index 0000000..4a6df1f Binary files /dev/null and b/sh_survey_all_in_one/static/description/spanish.jpg differ diff --git a/sh_survey_all_in_one/static/description/ss1.png b/sh_survey_all_in_one/static/description/ss1.png new file mode 100644 index 0000000..0db3c56 Binary files /dev/null and b/sh_survey_all_in_one/static/description/ss1.png differ diff --git a/sh_survey_all_in_one/static/description/ss2.png b/sh_survey_all_in_one/static/description/ss2.png new file mode 100644 index 0000000..06329fc Binary files /dev/null and b/sh_survey_all_in_one/static/description/ss2.png differ diff --git a/sh_survey_all_in_one/static/description/survey config.png b/sh_survey_all_in_one/static/description/survey config.png new file mode 100644 index 0000000..311e857 Binary files /dev/null and b/sh_survey_all_in_one/static/description/survey config.png differ diff --git a/sh_survey_all_in_one/static/description/survmate config.png b/sh_survey_all_in_one/static/description/survmate config.png new file mode 100644 index 0000000..2d0f65a Binary files /dev/null and b/sh_survey_all_in_one/static/description/survmate config.png differ diff --git a/sh_survey_all_in_one/static/description/survmate.gif b/sh_survey_all_in_one/static/description/survmate.gif new file mode 100644 index 0000000..264d1eb Binary files /dev/null and b/sh_survey_all_in_one/static/description/survmate.gif differ diff --git a/sh_survey_all_in_one/static/description/time_1.png b/sh_survey_all_in_one/static/description/time_1.png new file mode 100644 index 0000000..e2e0288 Binary files /dev/null and b/sh_survey_all_in_one/static/description/time_1.png differ diff --git a/sh_survey_all_in_one/static/description/time_2.png b/sh_survey_all_in_one/static/description/time_2.png new file mode 100644 index 0000000..354d44d Binary files /dev/null and b/sh_survey_all_in_one/static/description/time_2.png differ diff --git a/sh_survey_all_in_one/static/description/time_3.png b/sh_survey_all_in_one/static/description/time_3.png new file mode 100644 index 0000000..2e41fb4 Binary files /dev/null and b/sh_survey_all_in_one/static/description/time_3.png differ diff --git a/sh_survey_all_in_one/static/description/time_4.png b/sh_survey_all_in_one/static/description/time_4.png new file mode 100644 index 0000000..05747c1 Binary files /dev/null and b/sh_survey_all_in_one/static/description/time_4.png differ diff --git a/sh_survey_all_in_one/static/description/url_1.png b/sh_survey_all_in_one/static/description/url_1.png new file mode 100644 index 0000000..b021bac Binary files /dev/null and b/sh_survey_all_in_one/static/description/url_1.png differ diff --git a/sh_survey_all_in_one/static/description/url_2.png b/sh_survey_all_in_one/static/description/url_2.png new file mode 100644 index 0000000..590e446 Binary files /dev/null and b/sh_survey_all_in_one/static/description/url_2.png differ diff --git a/sh_survey_all_in_one/static/description/url_3.png b/sh_survey_all_in_one/static/description/url_3.png new file mode 100644 index 0000000..cd59e3e Binary files /dev/null and b/sh_survey_all_in_one/static/description/url_3.png differ diff --git a/sh_survey_all_in_one/static/description/url_4.png b/sh_survey_all_in_one/static/description/url_4.png new file mode 100644 index 0000000..1ffdc4a Binary files /dev/null and b/sh_survey_all_in_one/static/description/url_4.png differ diff --git a/sh_survey_all_in_one/static/description/user.png b/sh_survey_all_in_one/static/description/user.png new file mode 100644 index 0000000..3717e4f Binary files /dev/null and b/sh_survey_all_in_one/static/description/user.png differ diff --git a/sh_survey_all_in_one/static/description/vd_btn.png b/sh_survey_all_in_one/static/description/vd_btn.png new file mode 100644 index 0000000..68a5c4c Binary files /dev/null and b/sh_survey_all_in_one/static/description/vd_btn.png differ diff --git a/sh_survey_all_in_one/static/description/vector icons/1.png b/sh_survey_all_in_one/static/description/vector icons/1.png new file mode 100644 index 0000000..a93c532 Binary files /dev/null and b/sh_survey_all_in_one/static/description/vector icons/1.png differ diff --git a/sh_survey_all_in_one/static/description/vector icons/10.png b/sh_survey_all_in_one/static/description/vector icons/10.png new file mode 100644 index 0000000..73aff59 Binary files /dev/null and b/sh_survey_all_in_one/static/description/vector icons/10.png differ diff --git a/sh_survey_all_in_one/static/description/vector icons/11.png b/sh_survey_all_in_one/static/description/vector icons/11.png new file mode 100644 index 0000000..78afa1e Binary files /dev/null and b/sh_survey_all_in_one/static/description/vector icons/11.png differ diff --git a/sh_survey_all_in_one/static/description/vector icons/12.png b/sh_survey_all_in_one/static/description/vector icons/12.png new file mode 100644 index 0000000..b22ae56 Binary files /dev/null and b/sh_survey_all_in_one/static/description/vector icons/12.png differ diff --git a/sh_survey_all_in_one/static/description/vector icons/13.png b/sh_survey_all_in_one/static/description/vector icons/13.png new file mode 100644 index 0000000..5bda7b3 Binary files /dev/null and b/sh_survey_all_in_one/static/description/vector icons/13.png differ diff --git a/sh_survey_all_in_one/static/description/vector icons/14.png b/sh_survey_all_in_one/static/description/vector icons/14.png new file mode 100644 index 0000000..b7c1a50 Binary files /dev/null and b/sh_survey_all_in_one/static/description/vector icons/14.png differ diff --git a/sh_survey_all_in_one/static/description/vector icons/15.png b/sh_survey_all_in_one/static/description/vector icons/15.png new file mode 100644 index 0000000..cbca63c Binary files /dev/null and b/sh_survey_all_in_one/static/description/vector icons/15.png differ diff --git a/sh_survey_all_in_one/static/description/vector icons/16.png b/sh_survey_all_in_one/static/description/vector icons/16.png new file mode 100644 index 0000000..bf8eebb Binary files /dev/null and b/sh_survey_all_in_one/static/description/vector icons/16.png differ diff --git a/sh_survey_all_in_one/static/description/vector icons/17.png b/sh_survey_all_in_one/static/description/vector icons/17.png new file mode 100644 index 0000000..10366f1 Binary files /dev/null and b/sh_survey_all_in_one/static/description/vector icons/17.png differ diff --git a/sh_survey_all_in_one/static/description/vector icons/18.png b/sh_survey_all_in_one/static/description/vector icons/18.png new file mode 100644 index 0000000..af146a1 Binary files /dev/null and b/sh_survey_all_in_one/static/description/vector icons/18.png differ diff --git a/sh_survey_all_in_one/static/description/vector icons/19.png b/sh_survey_all_in_one/static/description/vector icons/19.png new file mode 100644 index 0000000..b6987bd Binary files /dev/null and b/sh_survey_all_in_one/static/description/vector icons/19.png differ diff --git a/sh_survey_all_in_one/static/description/vector icons/2.png b/sh_survey_all_in_one/static/description/vector icons/2.png new file mode 100644 index 0000000..fdb6fae Binary files /dev/null and b/sh_survey_all_in_one/static/description/vector icons/2.png differ diff --git a/sh_survey_all_in_one/static/description/vector icons/3.png b/sh_survey_all_in_one/static/description/vector icons/3.png new file mode 100644 index 0000000..293bbb3 Binary files /dev/null and b/sh_survey_all_in_one/static/description/vector icons/3.png differ diff --git a/sh_survey_all_in_one/static/description/vector icons/4.png b/sh_survey_all_in_one/static/description/vector icons/4.png new file mode 100644 index 0000000..f803df9 Binary files /dev/null and b/sh_survey_all_in_one/static/description/vector icons/4.png differ diff --git a/sh_survey_all_in_one/static/description/vector icons/5.png b/sh_survey_all_in_one/static/description/vector icons/5.png new file mode 100644 index 0000000..0245b4b Binary files /dev/null and b/sh_survey_all_in_one/static/description/vector icons/5.png differ diff --git a/sh_survey_all_in_one/static/description/vector icons/6.png b/sh_survey_all_in_one/static/description/vector icons/6.png new file mode 100644 index 0000000..14bc417 Binary files /dev/null and b/sh_survey_all_in_one/static/description/vector icons/6.png differ diff --git a/sh_survey_all_in_one/static/description/vector icons/7.png b/sh_survey_all_in_one/static/description/vector icons/7.png new file mode 100644 index 0000000..d50ecaf Binary files /dev/null and b/sh_survey_all_in_one/static/description/vector icons/7.png differ diff --git a/sh_survey_all_in_one/static/description/vector icons/8.png b/sh_survey_all_in_one/static/description/vector icons/8.png new file mode 100644 index 0000000..21ee8f7 Binary files /dev/null and b/sh_survey_all_in_one/static/description/vector icons/8.png differ diff --git a/sh_survey_all_in_one/static/description/vector icons/9.png b/sh_survey_all_in_one/static/description/vector icons/9.png new file mode 100644 index 0000000..58ac27c Binary files /dev/null and b/sh_survey_all_in_one/static/description/vector icons/9.png differ diff --git a/sh_survey_all_in_one/static/description/vector icons/s14.png b/sh_survey_all_in_one/static/description/vector icons/s14.png new file mode 100644 index 0000000..7b6fc51 Binary files /dev/null and b/sh_survey_all_in_one/static/description/vector icons/s14.png differ diff --git a/sh_survey_all_in_one/static/description/vector icons/s15.png b/sh_survey_all_in_one/static/description/vector icons/s15.png new file mode 100644 index 0000000..5a95643 Binary files /dev/null and b/sh_survey_all_in_one/static/description/vector icons/s15.png differ diff --git a/sh_survey_all_in_one/static/description/week_1.png b/sh_survey_all_in_one/static/description/week_1.png new file mode 100644 index 0000000..fe26bdb Binary files /dev/null and b/sh_survey_all_in_one/static/description/week_1.png differ diff --git a/sh_survey_all_in_one/static/description/week_2.png b/sh_survey_all_in_one/static/description/week_2.png new file mode 100644 index 0000000..f29592b Binary files /dev/null and b/sh_survey_all_in_one/static/description/week_2.png differ diff --git a/sh_survey_all_in_one/static/description/week_3.png b/sh_survey_all_in_one/static/description/week_3.png new file mode 100644 index 0000000..e339d3a Binary files /dev/null and b/sh_survey_all_in_one/static/description/week_3.png differ diff --git a/sh_survey_all_in_one/static/description/week_4.png b/sh_survey_all_in_one/static/description/week_4.png new file mode 100644 index 0000000..5ca2def Binary files /dev/null and b/sh_survey_all_in_one/static/description/week_4.png differ diff --git a/sh_survey_all_in_one/static/src/css/extra_addons/sh_survey_extra_fields/filter_multi_select.css b/sh_survey_all_in_one/static/src/css/extra_addons/sh_survey_extra_fields/filter_multi_select.css new file mode 100644 index 0000000..e382aba --- /dev/null +++ b/sh_survey_all_in_one/static/src/css/extra_addons/sh_survey_extra_fields/filter_multi_select.css @@ -0,0 +1,222 @@ +/*! + * Multiple select dropdown with filter jQuery plugin. + * Copyright (C) 2020 Andrew Wagner github.com/andreww1011 + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA + */ +:root { + --fms-badge-text-color: white; + --fms-badge-color: var(--primary) +} + +.filter-multi-select.dropup, .filter-multi-select.dropdown { + position: relative; +} + +.filter-multi-select .dropdown-toggle::after { + all: unset; +} + +.filter-multi-select .dropdown-toggle:empty::after { + all: unset; +} + +.filter-multi-select > .dropdown-toggle::before { + display: inline-block; + margin-right: 0.255em; + vertical-align: middle; + content: ""; + border-top: 0.3em solid; + border-right: 0.3em solid transparent; + border-bottom: 0; + border-left: 0.3em solid transparent; +} + +.filter-multi-select > .dropdown-toggle:empty::before { + margin-right: 0.255em; +} + +.filter-multi-select > .viewbar { + white-space: normal; + font-size: 0.875rem; + font-weight: 400; + height: auto; + cursor: pointer; +} + +.filter-multi-select > .viewbar > .selected-items > .item { + margin: .125rem .25rem .125rem 0; + padding: 2px 0px 2px 8px !important; + display: inline-flex; + height: auto !important; + color: var(--fms-badge-text-color); + background-color: var(--fms-badge-color); + border-radius: 1.1em; + align-items: center; + vertical-align: baseline; +} + +.filter-multi-select > .viewbar > .selected-items > .item > button { + background-color: transparent; + color: var(--fms-badge-text-color); + border: 0; + font-weight: 900; + cursor: pointer; +} + +.filter-multi-select > .viewbar > .selected-items > .item > button:hover { + filter: contrast(50%); +} + +.filter-multi-select > .viewbar > .selected-items > .item.disabled { + display: inline-flex; + padding: 0px .5em 0px .5em; + filter: grayscale(80%) brightness(150%); +} + +.filter-multi-select > .viewbar > .selected-items > .item.disabled > button { + display: none; +} + +.filter-multi-select > .dropdown-menu { + position: absolute; + top: 100%; + left: 0%; + z-index: 1000; + display: none; + float: left; + max-height: 50vh; + min-width: 10rem; + overflow-y: auto; + padding: 0.5rem 0; + margin: 0.125rem 0 0; + font-size: 0.875rem; + text-align: left; + list-style: none; + background-color: #FFFFFF; + background-clip: padding-box; + border: 1px solid rgba(0, 0, 0, 0.15); + border-radius: 0.25rem; +} + +.filter-multi-select > .dropdown-menu.show { + display: block; +} + +.filter-multi-select > .dropdown-menu > .filter > input { + font-size: 0.875rem; +} + +.filter-multi-select > .dropdown-menu > .filter > button { + position: absolute; + border: 0; + background-color: transparent; + font-weight: 900; + color: #ccc; + right: 2rem; + top: 1rem; +} + +.filter-multi-select > .dropdown-menu > .filter > button:hover { + color: #aaa; +} + +.filter-multi-select .dropdown-item { + display: block; + width: 100%; + padding: 0.25rem 1.5rem; + clear: both; + font-weight: 400; + color: #212529; + text-align: inherit; + white-space: nowrap; + background-color: transparent; + border: 0; +} + +.filter-multi-select .dropdown-item.disabled, .filter-multi-select .dropdown-item:disabled { + color: #6c757d; + pointer-events: none; + background-color: transparent; +} + +.filter-multi-select .dropdown-item:hover, .filter-multi-select .dropdown-item:focus { + background-color: inherit; +} + +.filter-multi-select .dropdown-item.active, .filter-multi-select .dropdown-item:active { + color: inherit; +} + +.filter-multi-select .dropdown-item .custom-control-input { + position: absolute; + z-index: -1; + opacity: 0; +} + +.filter-multi-select .dropdown-item .custom-control-label { + position: relative; + margin-bottom: 0; + vertical-align: top; + display: inline-block; +} + +.filter-multi-select .dropdown-item .custom-control-label::before { + border-radius: 0.25rem; + transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; + position: absolute; + top: 0.15625rem; + left: -1.5rem; + display: block; + width: 1rem; + height: 1rem; + pointer-events: none; + content: ""; + background-color: #FFFFFF; + border: #adb5bd solid 1px +} + +.filter-multi-select .dropdown-item .custom-control-label::after { + position: absolute; + top: 0.15625rem; + left: -1.5rem; + display: block; + width: 1rem; + height: 1rem; + content: ""; + background: no-repeat 50% / 50% 50%; +} + +.filter-multi-select .dropdown-item .custom-checkbox:checked ~ .custom-control-label::before, +.filter-multi-select .dropdown-item .custom-checkbox:indeterminate ~ .custom-control-label::before { + border-color: var(--fms-badge-color); + background-color: var(--fms-badge-color); +} + +.filter-multi-select .dropdown-item .custom-checkbox:checked:disabled ~ .custom-control-label::before, +.filter-multi-select .dropdown-item .custom-checkbox:indeterminate:disabled ~ .custom-control-label::before { + border-color: var(--fms-badge-color); + background-color: var(--fms-badge-color); + filter: grayscale(80%) brightness(150%); +} + +.filter-multi-select .dropdown-item .custom-checkbox:checked ~ .custom-control-label::after { + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23FFFFFF' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26 2.974 7.25 8 2.193z'/%3e%3c/svg%3e"); +} + +.filter-multi-select .dropdown-item .custom-checkbox:indeterminate ~ .custom-control-label::after { + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 4'%3e%3cpath stroke='%23FFFFFF' d='M0 2h4'/%3e%3c/svg%3e"); +} \ No newline at end of file diff --git a/sh_survey_all_in_one/static/src/css/extra_addons/sh_survey_extra_fields_adv/sh_survey_extra_fields_adv.css b/sh_survey_all_in_one/static/src/css/extra_addons/sh_survey_extra_fields_adv/sh_survey_extra_fields_adv.css new file mode 100644 index 0000000..016e77d --- /dev/null +++ b/sh_survey_all_in_one/static/src/css/extra_addons/sh_survey_extra_fields_adv/sh_survey_extra_fields_adv.css @@ -0,0 +1,25 @@ +#js_id_sh_survey_extra_fields_adv_loading_msg { + text-align: center; + padding: 40px; + background-color: #eee; +} + +#js_id_sh_survey_extra_fields_adv_canvas { + width: 100%; +} + +#js_id_sh_survey_extra_fields_adv_output { + margin-top: 20px; + background: #eee; + padding: 10px; + padding-bottom: 0; +} + +#js_id_sh_survey_extra_fields_adv_output div { + padding-bottom: 10px; + word-wrap: break-word; +} + +#noQRFound { + text-align: center; +} diff --git a/sh_survey_all_in_one/static/src/css/extra_addons/sh_survey_matrix_adv/survey.css b/sh_survey_all_in_one/static/src/css/extra_addons/sh_survey_matrix_adv/survey.css new file mode 100644 index 0000000..5caf3b1 --- /dev/null +++ b/sh_survey_all_in_one/static/src/css/extra_addons/sh_survey_matrix_adv/survey.css @@ -0,0 +1,27 @@ +.o_survey_form .o_survey_question_matrix td, +.o_survey_print .o_survey_question_matrix td, +.o_survey_session_manage .o_survey_question_matrix td, +.o_survey_quick_access .o_survey_question_matrix td { + min-width: 0px !important; +} + +/* Date time field formatting in matrix field*/ + +/* Chrome, Firefox, Opera, Safari 10.1+ */ +table.o_survey_question_matrix .o_survey_question_datetime::placeholder {color: #212529;font-weight: 400;} +/* Microsoft Edge AND Internet Explorer 10-11 */ +table.o_survey_question_matrix .o_survey_question_datetime::-ms-input-placeholder{color: #212529;font-weight: 400;} + + +table.o_survey_question_matrix i.cls_custom_datetime{ + color: #000; + font-size: 14px; + position: absolute; + top: 50%; + transform: translateY(-50%); + right: 1rem; + font-weight: 500; + cursor: none; + z-index: 5; +} +/* Date time field formatting in matrix field*/ \ No newline at end of file diff --git a/sh_survey_all_in_one/static/src/img/extra_addons/sh_survmate_theme/button-style---2.gif b/sh_survey_all_in_one/static/src/img/extra_addons/sh_survmate_theme/button-style---2.gif new file mode 100644 index 0000000..3d36e62 Binary files /dev/null and b/sh_survey_all_in_one/static/src/img/extra_addons/sh_survmate_theme/button-style---2.gif differ diff --git a/sh_survey_all_in_one/static/src/img/extra_addons/sh_survmate_theme/checkbox_style.png b/sh_survey_all_in_one/static/src/img/extra_addons/sh_survmate_theme/checkbox_style.png new file mode 100644 index 0000000..4028e67 Binary files /dev/null and b/sh_survey_all_in_one/static/src/img/extra_addons/sh_survmate_theme/checkbox_style.png differ diff --git a/sh_survey_all_in_one/static/src/img/extra_addons/sh_survmate_theme/input_style.png b/sh_survey_all_in_one/static/src/img/extra_addons/sh_survmate_theme/input_style.png new file mode 100644 index 0000000..a34b836 Binary files /dev/null and b/sh_survey_all_in_one/static/src/img/extra_addons/sh_survmate_theme/input_style.png differ diff --git a/sh_survey_all_in_one/static/src/img/extra_addons/sh_survmate_theme/radio_button_style.png b/sh_survey_all_in_one/static/src/img/extra_addons/sh_survmate_theme/radio_button_style.png new file mode 100644 index 0000000..c823c08 Binary files /dev/null and b/sh_survey_all_in_one/static/src/img/extra_addons/sh_survmate_theme/radio_button_style.png differ diff --git a/sh_survey_all_in_one/static/src/img/extra_addons/sh_survmate_theme/section_style.png b/sh_survey_all_in_one/static/src/img/extra_addons/sh_survmate_theme/section_style.png new file mode 100644 index 0000000..5d782bd Binary files /dev/null and b/sh_survey_all_in_one/static/src/img/extra_addons/sh_survmate_theme/section_style.png differ diff --git a/sh_survey_all_in_one/static/src/js/extra_addons/sh_survey_extra_fields/bootstrap-multiselect.js b/sh_survey_all_in_one/static/src/js/extra_addons/sh_survey_extra_fields/bootstrap-multiselect.js new file mode 100644 index 0000000..bdd087b --- /dev/null +++ b/sh_survey_all_in_one/static/src/js/extra_addons/sh_survey_extra_fields/bootstrap-multiselect.js @@ -0,0 +1,1776 @@ +/** + * Bootstrap Multiselect (http://davidstutz.de/bootstrap-multiselect/) + * + * Apache License, Version 2.0: + * Copyright (c) 2012 - 2018 David Stutz + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not + * use this file except in compliance with the License. You may obtain a + * copy of the License at http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + * + * BSD 3-Clause License: + * Copyright (c) 2012 - 2018 David Stutz + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * - Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * - Neither the name of David Stutz nor the names of its contributors may be + * used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +(function (root, factory) { + // check to see if 'knockout' AMD module is specified if using requirejs + if (typeof define === 'function' && define.amd && + typeof require === 'function' && typeof require.specified === 'function' && require.specified('knockout')) { + + // AMD. Register as an anonymous module. + define(['jquery', 'knockout'], factory); + } else { + // Browser globals + factory(root.jQuery, root.ko); + } +})(this, function ($, ko) { + "use strict";// jshint ;_; + + if (typeof ko !== 'undefined' && ko.bindingHandlers && !ko.bindingHandlers.multiselect) { + ko.bindingHandlers.multiselect = { + after: ['options', 'value', 'selectedOptions', 'enable', 'disable'], + + init: function (element, valueAccessor, allBindings, viewModel, bindingContext) { + var $element = $(element); + var config = ko.toJS(valueAccessor()); + + $element.multiselect(config); + + if (allBindings.has('options')) { + var options = allBindings.get('options'); + if (ko.isObservable(options)) { + ko.computed({ + read: function () { + options(); + setTimeout(function () { + var ms = $element.data('multiselect'); + if (ms) + ms.updateOriginalOptions();//Not sure how beneficial this is. + $element.multiselect('rebuild'); + }, 1); + }, + disposeWhenNodeIsRemoved: element + }); + } + } + + //value and selectedOptions are two-way, so these will be triggered even by our own actions. + //It needs some way to tell if they are triggered because of us or because of outside change. + //It doesn't loop but it's a waste of processing. + if (allBindings.has('value')) { + var value = allBindings.get('value'); + if (ko.isObservable(value)) { + ko.computed({ + read: function () { + value(); + setTimeout(function () { + $element.multiselect('refresh'); + }, 1); + }, + disposeWhenNodeIsRemoved: element + }).extend({ rateLimit: 100, notifyWhenChangesStop: true }); + } + } + + //Switched from arrayChange subscription to general subscription using 'refresh'. + //Not sure performance is any better using 'select' and 'deselect'. + if (allBindings.has('selectedOptions')) { + var selectedOptions = allBindings.get('selectedOptions'); + if (ko.isObservable(selectedOptions)) { + ko.computed({ + read: function () { + selectedOptions(); + setTimeout(function () { + $element.multiselect('refresh'); + }, 1); + }, + disposeWhenNodeIsRemoved: element + }).extend({ rateLimit: 100, notifyWhenChangesStop: true }); + } + } + + var setEnabled = function (enable) { + setTimeout(function () { + if (enable) + $element.multiselect('enable'); + else + $element.multiselect('disable'); + }); + }; + + if (allBindings.has('enable')) { + var enable = allBindings.get('enable'); + if (ko.isObservable(enable)) { + ko.computed({ + read: function () { + setEnabled(enable()); + }, + disposeWhenNodeIsRemoved: element + }).extend({ rateLimit: 100, notifyWhenChangesStop: true }); + } else { + setEnabled(enable); + } + } + + if (allBindings.has('disable')) { + var disable = allBindings.get('disable'); + if (ko.isObservable(disable)) { + ko.computed({ + read: function () { + setEnabled(!disable()); + }, + disposeWhenNodeIsRemoved: element + }).extend({ rateLimit: 100, notifyWhenChangesStop: true }); + } else { + setEnabled(!disable); + } + } + + ko.utils.domNodeDisposal.addDisposeCallback(element, function () { + $element.multiselect('destroy'); + }); + }, + + update: function (element, valueAccessor, allBindings, viewModel, bindingContext) { + var $element = $(element); + var config = ko.toJS(valueAccessor()); + + $element.multiselect('setOptions', config); + $element.multiselect('rebuild'); + } + }; + } + + function forEach(array, callback) { + for (var index = 0; index < array.length; ++index) { + callback(array[index], index); + } + } + + /** + * Constructor to create a new multiselect using the given select. + * + * @param {jQuery} select + * @param {Object} options + * @returns {Multiselect} + */ + function Multiselect(select, options) { + + this.$select = $(select); + this.options = this.mergeOptions($.extend({}, options, this.$select.data())); + + // Placeholder via data attributes + if (this.$select.attr("data-placeholder")) { + this.options.nonSelectedText = this.$select.data("placeholder"); + } + + // Initialization. + // We have to clone to create a new reference. + this.originalOptions = this.$select.clone()[0].options; + this.query = ''; + this.searchTimeout = null; + this.lastToggledInput = null; + + this.options.multiple = this.$select.attr('multiple') === "multiple"; + this.options.onChange = $.proxy(this.options.onChange, this); + this.options.onSelectAll = $.proxy(this.options.onSelectAll, this); + this.options.onDeselectAll = $.proxy(this.options.onDeselectAll, this); + this.options.onDropdownShow = $.proxy(this.options.onDropdownShow, this); + this.options.onDropdownHide = $.proxy(this.options.onDropdownHide, this); + this.options.onDropdownShown = $.proxy(this.options.onDropdownShown, this); + this.options.onDropdownHidden = $.proxy(this.options.onDropdownHidden, this); + this.options.onInitialized = $.proxy(this.options.onInitialized, this); + this.options.onFiltering = $.proxy(this.options.onFiltering, this); + + // Build select all if enabled. + this.buildContainer(); + this.buildButton(); + this.buildDropdown(); + this.buildReset(); + this.buildSelectAll(); + this.buildDropdownOptions(); + this.buildFilter(); + + this.updateButtonText(); + this.updateSelectAll(true); + + if (this.options.enableClickableOptGroups && this.options.multiple) { + this.updateOptGroups(); + } + + this.options.wasDisabled = this.$select.prop('disabled'); + if (this.options.disableIfEmpty && $('option', this.$select).length <= 0) { + this.disable(); + } + + this.$select.wrap('').after(this.$container); + this.options.onInitialized(this.$select, this.$container); + } + + Multiselect.prototype = { + + defaults: { + /** + * Default text function will either print 'None selected' in case no + * option is selected or a list of the selected options up to a length + * of 3 selected options. + * + * @param {jQuery} options + * @param {jQuery} select + * @returns {String} + */ + buttonText: function (options, select) { + if (this.disabledText.length > 0 + && (select.prop('disabled') || (options.length == 0 && this.disableIfEmpty))) { + + return this.disabledText; + } + else if (options.length === 0) { + return this.nonSelectedText; + } + else if (this.allSelectedText + && options.length === $('option', $(select)).length + && $('option', $(select)).length !== 1 + && this.multiple) { + + if (this.selectAllNumber) { + return this.allSelectedText + ' (' + options.length + ')'; + } + else { + return this.allSelectedText; + } + } + else if (this.numberDisplayed != 0 && options.length > this.numberDisplayed) { + return options.length + ' ' + this.nSelectedText; + } + else { + var selected = ''; + var delimiter = this.delimiterText; + + options.each(function () { + var label = ($(this).attr('label') !== undefined) ? $(this).attr('label') : $(this).text(); + selected += label + delimiter; + }); + + return selected.substr(0, selected.length - this.delimiterText.length); + } + }, + /** + * Updates the title of the button similar to the buttonText function. + * + * @param {jQuery} options + * @param {jQuery} select + * @returns {@exp;selected@call;substr} + */ + buttonTitle: function (options, select) { + if (options.length === 0) { + return this.nonSelectedText; + } + else { + var selected = ''; + var delimiter = this.delimiterText; + + options.each(function () { + var label = ($(this).attr('label') !== undefined) ? $(this).attr('label') : $(this).text(); + selected += label + delimiter; + }); + return selected.substr(0, selected.length - this.delimiterText.length); + } + }, + checkboxName: function (option) { + return false; // no checkbox name + }, + /** + * Create a label. + * + * @param {jQuery} element + * @returns {String} + */ + optionLabel: function (element) { + return $(element).attr('label') || $(element).text(); + }, + /** + * Create a class. + * + * @param {jQuery} element + * @returns {String} + */ + optionClass: function (element) { + return $(element).attr('class') || ''; + }, + /** + * Triggered on change of the multiselect. + * + * Not triggered when selecting/deselecting options manually. + * + * @param {jQuery} option + * @param {Boolean} checked + */ + onChange: function (option, checked) { + + }, + /** + * Triggered when the dropdown is shown. + * + * @param {jQuery} event + */ + onDropdownShow: function (event) { + + }, + /** + * Triggered when the dropdown is hidden. + * + * @param {jQuery} event + */ + onDropdownHide: function (event) { + + }, + /** + * Triggered after the dropdown is shown. + * + * @param {jQuery} event + */ + onDropdownShown: function (event) { + + }, + /** + * Triggered after the dropdown is hidden. + * + * @param {jQuery} event + */ + onDropdownHidden: function (event) { + + }, + /** + * Triggered on select all. + */ + onSelectAll: function () { + + }, + /** + * Triggered on deselect all. + */ + onDeselectAll: function () { + + }, + /** + * Triggered after initializing. + * + * @param {jQuery} $select + * @param {jQuery} $container + */ + onInitialized: function ($select, $container) { + + }, + /** + * Triggered on filtering. + * + * @param {jQuery} $filter + */ + onFiltering: function ($filter) { + + }, + enableHTML: false, + buttonClass: 'btn btn-default', + inheritClass: false, + buttonWidth: 'auto', + buttonContainer: '
', + dropRight: false, + dropUp: false, + selectedClass: 'active', + // Maximum height of the dropdown menu. + // If maximum height is exceeded a scrollbar will be displayed. + maxHeight: false, + includeSelectAllOption: false, + includeSelectAllIfMoreThan: 0, + selectAllText: ' Select all', + selectAllValue: 'multiselect-all', + selectAllName: false, + selectAllNumber: true, + selectAllJustVisible: true, + enableFiltering: false, + enableCaseInsensitiveFiltering: false, + enableFullValueFiltering: false, + enableClickableOptGroups: false, + enableCollapsibleOptGroups: false, + collapseOptGroupsByDefault: false, + filterPlaceholder: 'Search', + // possible options: 'text', 'value', 'both' + filterBehavior: 'text', + includeFilterClearBtn: true, + preventInputChangeEvent: false, + nonSelectedText: 'None selected', + nSelectedText: 'selected', + allSelectedText: 'All selected', + numberDisplayed: 3, + disableIfEmpty: false, + disabledText: '', + delimiterText: ', ', + includeResetOption: false, + includeResetDivider: false, + resetText: 'Reset', + templates: { + button: '', + ul: '', + filter: '
  • ', + filterClearBtn: '', + li: '
  • ', + divider: '
  • ', + liGroup: '
  • ', + resetButton: '
  • ' + } + }, + + constructor: Multiselect, + + /** + * Builds the container of the multiselect. + */ + buildContainer: function () { + this.$container = $(this.options.buttonContainer); + this.$container.on('show.bs.dropdown', this.options.onDropdownShow); + this.$container.on('hide.bs.dropdown', this.options.onDropdownHide); + this.$container.on('shown.bs.dropdown', this.options.onDropdownShown); + this.$container.on('hidden.bs.dropdown', this.options.onDropdownHidden); + }, + + /** + * Builds the button of the multiselect. + */ + buildButton: function () { + this.$button = $(this.options.templates.button).addClass(this.options.buttonClass); + if (this.$select.attr('class') && this.options.inheritClass) { + this.$button.addClass(this.$select.attr('class')); + } + // Adopt active state. + if (this.$select.prop('disabled')) { + this.disable(); + } + else { + this.enable(); + } + + // Manually add button width if set. + if (this.options.buttonWidth && this.options.buttonWidth !== 'auto') { + this.$button.css({ + 'width': '100%', //this.options.buttonWidth, + 'overflow': 'hidden', + 'text-overflow': 'ellipsis' + }); + this.$container.css({ + 'width': this.options.buttonWidth + }); + } + + // Keep the tab index from the select. + var tabindex = this.$select.attr('tabindex'); + if (tabindex) { + this.$button.attr('tabindex', tabindex); + } + + this.$container.prepend(this.$button); + }, + + /** + * Builds the ul representing the dropdown menu. + */ + buildDropdown: function () { + + // Build ul. + this.$ul = $(this.options.templates.ul); + + if (this.options.dropRight) { + this.$ul.addClass('pull-right'); + } + + // Set max height of dropdown menu to activate auto scrollbar. + if (this.options.maxHeight) { + // TODO: Add a class for this option to move the css declarations. + this.$ul.css({ + 'max-height': this.options.maxHeight + 'px', + 'overflow-y': 'auto', + 'overflow-x': 'hidden' + }); + } + + if (this.options.dropUp) { + + var height = Math.min(this.options.maxHeight, $('option[data-role!="divider"]', this.$select).length * 26 + $('option[data-role="divider"]', this.$select).length * 19 + (this.options.includeSelectAllOption ? 26 : 0) + (this.options.enableFiltering || this.options.enableCaseInsensitiveFiltering ? 44 : 0)); + var moveCalc = height + 34; + + this.$ul.css({ + 'max-height': height + 'px', + 'overflow-y': 'auto', + 'overflow-x': 'hidden', + 'margin-top': "-" + moveCalc + 'px' + }); + } + + this.$container.append(this.$ul); + }, + + /** + * Build the dropdown options and binds all necessary events. + * + * Uses createDivider and createOptionValue to create the necessary options. + */ + buildDropdownOptions: function () { + + this.$select.children().each($.proxy(function (index, element) { + + var $element = $(element); + // Support optgroups and options without a group simultaneously. + var tag = $element.prop('tagName') + .toLowerCase(); + + if ($element.prop('value') === this.options.selectAllValue) { + return; + } + + if (tag === 'optgroup') { + this.createOptgroup(element); + } + else if (tag === 'option') { + + if ($element.data('role') === 'divider') { + this.createDivider(); + } + else { + this.createOptionValue(element); + } + + } + + // Other illegal tags will be ignored. + }, this)); + + // Bind the change event on the dropdown elements. + $(this.$ul).off('change', 'li:not(.multiselect-group) input[type="checkbox"], li:not(.multiselect-group) input[type="radio"]'); + $(this.$ul).on('change', 'li:not(.multiselect-group) input[type="checkbox"], li:not(.multiselect-group) input[type="radio"]', $.proxy(function (event) { + var $target = $(event.target); + + var checked = $target.prop('checked') || false; + var isSelectAllOption = $target.val() === this.options.selectAllValue; + + // Apply or unapply the configured selected class. + if (this.options.selectedClass) { + if (checked) { + $target.closest('li') + .addClass(this.options.selectedClass); + } + else { + $target.closest('li') + .removeClass(this.options.selectedClass); + } + } + + // Get the corresponding option. + var value = $target.val(); + var $option = this.getOptionByValue(value); + + var $optionsNotThis = $('option', this.$select).not($option); + var $checkboxesNotThis = $('input', this.$container).not($target); + + if (isSelectAllOption) { + + if (checked) { + this.selectAll(this.options.selectAllJustVisible, true); + } + else { + this.deselectAll(this.options.selectAllJustVisible, true); + } + } + else { + if (checked) { + $option.prop('selected', true); + + if (this.options.multiple) { + // Simply select additional option. + $option.prop('selected', true); + } + else { + // Unselect all other options and corresponding checkboxes. + if (this.options.selectedClass) { + $($checkboxesNotThis).closest('li').removeClass(this.options.selectedClass); + } + + $($checkboxesNotThis).prop('checked', false); + $optionsNotThis.prop('selected', false); + + // It's a single selection, so close. + this.$button.click(); + } + + if (this.options.selectedClass === "active") { + $optionsNotThis.closest("a").css("outline", ""); + } + } + else { + // Unselect option. + $option.prop('selected', false); + } + + // To prevent select all from firing onChange: #575 + this.options.onChange($option, checked); + + // Do not update select all or optgroups on select all change! + this.updateSelectAll(); + + if (this.options.enableClickableOptGroups && this.options.multiple) { + this.updateOptGroups(); + } + } + + this.$select.change(); + this.updateButtonText(); + + if (this.options.preventInputChangeEvent) { + return false; + } + }, this)); + + $('li a', this.$ul).on('mousedown', function (e) { + if (e.shiftKey) { + // Prevent selecting text by Shift+click + return false; + } + }); + + $(this.$ul).on('touchstart click', 'li a', $.proxy(function (event) { + event.stopPropagation(); + + var $target = $(event.target); + + if (event.shiftKey && this.options.multiple) { + if ($target.is("label")) { // Handles checkbox selection manually (see https://github.com/davidstutz/bootstrap-multiselect/issues/431) + event.preventDefault(); + $target = $target.find("input"); + $target.prop("checked", !$target.prop("checked")); + } + var checked = $target.prop('checked') || false; + + if (this.lastToggledInput !== null && this.lastToggledInput !== $target) { // Make sure we actually have a range + var from = this.$ul.find("li:visible").index($target.parents("li")); + var to = this.$ul.find("li:visible").index(this.lastToggledInput.parents("li")); + + if (from > to) { // Swap the indices + var tmp = to; + to = from; + from = tmp; + } + + // Make sure we grab all elements since slice excludes the last index + ++to; + + // Change the checkboxes and underlying options + var range = this.$ul.find("li").not(".multiselect-filter-hidden").slice(from, to).find("input"); + + range.prop('checked', checked); + + if (this.options.selectedClass) { + range.closest('li') + .toggleClass(this.options.selectedClass, checked); + } + + for (var i = 0, j = range.length; i < j; i++) { + var $checkbox = $(range[i]); + + var $option = this.getOptionByValue($checkbox.val()); + + $option.prop('selected', checked); + } + } + + // Trigger the select "change" event + $target.trigger("change"); + } + + // Remembers last clicked option + if ($target.is("input") && !$target.closest("li").is(".multiselect-item")) { + this.lastToggledInput = $target; + } + + $target.blur(); + }, this)); + + // Keyboard support. + this.$container.off('keydown.multiselect').on('keydown.multiselect', $.proxy(function (event) { + if ($('input[type="text"]', this.$container).is(':focus')) { + return; + } + + if (event.keyCode === 9 && this.$container.hasClass('open')) { + this.$button.click(); + } + else { + var $items = $(this.$container).find("li:not(.divider):not(.disabled) a").filter(":visible"); + + if (!$items.length) { + return; + } + + var index = $items.index($items.filter(':focus')); + + // Navigation up. + if (event.keyCode === 38 && index > 0) { + index--; + } + // Navigate down. + else if (event.keyCode === 40 && index < $items.length - 1) { + index++; + } + else if (!~index) { + index = 0; + } + + var $current = $items.eq(index); + $current.focus(); + + if (event.keyCode === 32 || event.keyCode === 13) { + var $checkbox = $current.find('input'); + + $checkbox.prop("checked", !$checkbox.prop("checked")); + $checkbox.change(); + } + + event.stopPropagation(); + event.preventDefault(); + } + }, this)); + + if (this.options.enableClickableOptGroups && this.options.multiple) { + $("li.multiselect-group input", this.$ul).on("change", $.proxy(function (event) { + event.stopPropagation(); + + var $target = $(event.target); + var checked = $target.prop('checked') || false; + + var $li = $(event.target).closest('li'); + var $group = $li.nextUntil("li.multiselect-group") + .not('.multiselect-filter-hidden') + .not('.disabled'); + + var $inputs = $group.find("input"); + + var values = []; + var $options = []; + + if (this.options.selectedClass) { + if (checked) { + $li.addClass(this.options.selectedClass); + } + else { + $li.removeClass(this.options.selectedClass); + } + } + + $.each($inputs, $.proxy(function (index, input) { + var value = $(input).val(); + var $option = this.getOptionByValue(value); + + if (checked) { + $(input).prop('checked', true); + $(input).closest('li') + .addClass(this.options.selectedClass); + + $option.prop('selected', true); + } + else { + $(input).prop('checked', false); + $(input).closest('li') + .removeClass(this.options.selectedClass); + + $option.prop('selected', false); + } + + $options.push(this.getOptionByValue(value)); + }, this)) + + // Cannot use select or deselect here because it would call updateOptGroups again. + + this.options.onChange($options, checked); + + this.$select.change(); + this.updateButtonText(); + this.updateSelectAll(); + }, this)); + } + + if (this.options.enableCollapsibleOptGroups && this.options.multiple) { + $("li.multiselect-group .caret-container", this.$ul).on("click", $.proxy(function (event) { + var $li = $(event.target).closest('li'); + var $inputs = $li.nextUntil("li.multiselect-group") + .not('.multiselect-filter-hidden'); + + var visible = true; + $inputs.each(function () { + visible = visible && !$(this).hasClass('multiselect-collapsible-hidden'); + }); + + if (visible) { + $inputs.hide() + .addClass('multiselect-collapsible-hidden'); + } + else { + $inputs.show() + .removeClass('multiselect-collapsible-hidden'); + } + }, this)); + + $("li.multiselect-all", this.$ul).css('background', '#f3f3f3').css('border-bottom', '1px solid #eaeaea'); + $("li.multiselect-all > a > label.checkbox", this.$ul).css('padding', '3px 20px 3px 35px'); + $("li.multiselect-group > a > input", this.$ul).css('margin', '4px 0px 5px -20px'); + } + }, + + /** + * Create an option using the given select option. + * + * @param {jQuery} element + */ + createOptionValue: function (element) { + var $element = $(element); + if ($element.is(':selected')) { + $element.prop('selected', true); + } + + // Support the label attribute on options. + var label = this.options.optionLabel(element); + var classes = this.options.optionClass(element); + var value = $element.val(); + var inputType = this.options.multiple ? "checkbox" : "radio"; + + var $li = $(this.options.templates.li); + var $label = $('label', $li); + $label.addClass(inputType); + $label.attr("title", label); + $li.addClass(classes); + + // Hide all children items when collapseOptGroupsByDefault is true + if (this.options.collapseOptGroupsByDefault && $(element).parent().prop("tagName").toLowerCase() === "optgroup") { + $li.addClass("multiselect-collapsible-hidden"); + $li.hide(); + } + + if (this.options.enableHTML) { + $label.html(" " + label); + } + else { + $label.text(" " + label); + } + + var $checkbox = $('').attr('type', inputType); + + var name = this.options.checkboxName($element); + if (name) { + $checkbox.attr('name', name); + } + + $label.prepend($checkbox); + + var selected = $element.prop('selected') || false; + $checkbox.val(value); + + if (value === this.options.selectAllValue) { + $li.addClass("multiselect-item multiselect-all"); + $checkbox.parent().parent() + .addClass('multiselect-all'); + } + + $label.attr('title', $element.attr('title')); + + this.$ul.append($li); + + if ($element.is(':disabled')) { + $checkbox.attr('disabled', 'disabled') + .prop('disabled', true) + .closest('a') + .attr("tabindex", "-1") + .closest('li') + .addClass('disabled'); + } + + $checkbox.prop('checked', selected); + + if (selected && this.options.selectedClass) { + $checkbox.closest('li') + .addClass(this.options.selectedClass); + } + }, + + /** + * Creates a divider using the given select option. + * + * @param {jQuery} element + */ + createDivider: function (element) { + var $divider = $(this.options.templates.divider); + this.$ul.append($divider); + }, + + /** + * Creates an optgroup. + * + * @param {jQuery} group + */ + createOptgroup: function (group) { + var label = $(group).attr("label"); + var value = $(group).attr("value"); + var $li = $('
  • '); + + var classes = this.options.optionClass(group); + $li.addClass(classes); + + if (this.options.enableHTML) { + $('label b', $li).html(" " + label); + } + else { + $('label b', $li).text(" " + label); + } + + if (this.options.enableCollapsibleOptGroups && this.options.multiple) { + $('a', $li).append(''); + } + + if (this.options.enableClickableOptGroups && this.options.multiple) { + $('a label', $li).prepend(''); + } + + if ($(group).is(':disabled')) { + $li.addClass('disabled'); + } + + this.$ul.append($li); + + $("option", group).each($.proxy(function ($, group) { + this.createOptionValue(group); + }, this)) + }, + + /** + * Build the reset. + * + */ + buildReset: function () { + if (this.options.includeResetOption) { + + // Check whether to add a divider after the reset. + if (this.options.includeResetDivider) { + this.$ul.prepend($(this.options.templates.divider)); + } + + var $resetButton = $(this.options.templates.resetButton); + + if (this.options.enableHTML) { + $('a', $resetButton).html(this.options.resetText); + } + else { + $('a', $resetButton).text(this.options.resetText); + } + + $('a', $resetButton).click($.proxy(function () { + this.clearSelection(); + }, this)); + + this.$ul.prepend($resetButton); + } + }, + + /** + * Build the select all. + * + * Checks if a select all has already been created. + */ + buildSelectAll: function () { + if (typeof this.options.selectAllValue === 'number') { + this.options.selectAllValue = this.options.selectAllValue.toString(); + } + + var alreadyHasSelectAll = this.hasSelectAll(); + + if (!alreadyHasSelectAll && this.options.includeSelectAllOption && this.options.multiple + && $('option', this.$select).length > this.options.includeSelectAllIfMoreThan) { + + // Check whether to add a divider after the select all. + if (this.options.includeSelectAllDivider) { + this.$ul.prepend($(this.options.templates.divider)); + } + + var $li = $(this.options.templates.li); + $('label', $li).addClass("checkbox"); + + if (this.options.enableHTML) { + $('label', $li).html(" " + this.options.selectAllText); + } + else { + $('label', $li).text(" " + this.options.selectAllText); + } + + if (this.options.selectAllName) { + $('label', $li).prepend(''); + } + else { + $('label', $li).prepend(''); + } + + var $checkbox = $('input', $li); + $checkbox.val(this.options.selectAllValue); + + $li.addClass("multiselect-item multiselect-all"); + $checkbox.parent().parent() + .addClass('multiselect-all'); + + this.$ul.prepend($li); + + $checkbox.prop('checked', false); + } + }, + + /** + * Builds the filter. + */ + buildFilter: function () { + + // Build filter if filtering OR case insensitive filtering is enabled and the number of options exceeds (or equals) enableFilterLength. + if (this.options.enableFiltering || this.options.enableCaseInsensitiveFiltering) { + var enableFilterLength = Math.max(this.options.enableFiltering, this.options.enableCaseInsensitiveFiltering); + + if (this.$select.find('option').length >= enableFilterLength) { + + this.$filter = $(this.options.templates.filter); + $('input', this.$filter).attr('placeholder', this.options.filterPlaceholder); + + // Adds optional filter clear button + if (this.options.includeFilterClearBtn) { + var clearBtn = $(this.options.templates.filterClearBtn); + clearBtn.on('click', $.proxy(function (event) { + clearTimeout(this.searchTimeout); + + this.query = ''; + this.$filter.find('.multiselect-search').val(''); + $('li', this.$ul).show().removeClass('multiselect-filter-hidden'); + + this.updateSelectAll(); + + if (this.options.enableClickableOptGroups && this.options.multiple) { + this.updateOptGroups(); + } + + }, this)); + this.$filter.find('.input-group').append(clearBtn); + } + + this.$ul.prepend(this.$filter); + + this.$filter.val(this.query).on('click', function (event) { + event.stopPropagation(); + }).on('input keydown', $.proxy(function (event) { + // Cancel enter key default behaviour + if (event.which === 13) { + event.preventDefault(); + } + + // This is useful to catch "keydown" events after the browser has updated the control. + clearTimeout(this.searchTimeout); + + this.searchTimeout = this.asyncFunction($.proxy(function () { + + if (this.query !== event.target.value) { + this.query = event.target.value; + + var currentGroup, currentGroupVisible; + $.each($('li', this.$ul), $.proxy(function (index, element) { + var value = $('input', element).length > 0 ? $('input', element).val() : ""; + var text = $('label', element).text(); + + var filterCandidate = ''; + if ((this.options.filterBehavior === 'text')) { + filterCandidate = text; + } + else if ((this.options.filterBehavior === 'value')) { + filterCandidate = value; + } + else if (this.options.filterBehavior === 'both') { + filterCandidate = text + '\n' + value; + } + + if (value !== this.options.selectAllValue && text) { + + // By default lets assume that element is not + // interesting for this search. + var showElement = false; + + if (this.options.enableCaseInsensitiveFiltering) { + filterCandidate = filterCandidate.toLowerCase(); + this.query = this.query.toLowerCase(); + } + + if (this.options.enableFullValueFiltering && this.options.filterBehavior !== 'both') { + var valueToMatch = filterCandidate.trim().substring(0, this.query.length); + if (this.query.indexOf(valueToMatch) > -1) { + showElement = true; + } + } + else if (filterCandidate.indexOf(this.query) > -1) { + showElement = true; + } + + // Toggle current element (group or group item) according to showElement boolean. + if (!showElement) { + $(element).css('display', 'none'); + $(element).addClass('multiselect-filter-hidden'); + } + if (showElement) { + $(element).css('display', 'block'); + $(element).removeClass('multiselect-filter-hidden'); + } + + // Differentiate groups and group items. + if ($(element).hasClass('multiselect-group')) { + // Remember group status. + currentGroup = element; + currentGroupVisible = showElement; + } + else { + // Show group name when at least one of its items is visible. + if (showElement) { + $(currentGroup).show() + .removeClass('multiselect-filter-hidden'); + } + + // Show all group items when group name satisfies filter. + if (!showElement && currentGroupVisible) { + $(element).show() + .removeClass('multiselect-filter-hidden'); + } + } + } + }, this)); + } + + this.updateSelectAll(); + + if (this.options.enableClickableOptGroups && this.options.multiple) { + this.updateOptGroups(); + } + + this.options.onFiltering(event.target); + + }, this), 300, this); + }, this)); + } + } + }, + + /** + * Unbinds the whole plugin. + */ + destroy: function () { + this.$container.remove(); + this.$select.show(); + + // reset original state + this.$select.prop('disabled', this.options.wasDisabled); + + this.$select.data('multiselect', null); + }, + + /** + * Refreshs the multiselect based on the selected options of the select. + */ + refresh: function () { + var inputs = {}; + $('li input', this.$ul).each(function () { + inputs[$(this).val()] = $(this); + }); + + $('option', this.$select).each($.proxy(function (index, element) { + var $elem = $(element); + var $input = inputs[$(element).val()]; + + if ($elem.is(':selected')) { + $input.prop('checked', true); + + if (this.options.selectedClass) { + $input.closest('li') + .addClass(this.options.selectedClass); + } + } + else { + $input.prop('checked', false); + + if (this.options.selectedClass) { + $input.closest('li') + .removeClass(this.options.selectedClass); + } + } + + if ($elem.is(":disabled")) { + $input.attr('disabled', 'disabled') + .prop('disabled', true) + .closest('li') + .addClass('disabled'); + } + else { + $input.prop('disabled', false) + .closest('li') + .removeClass('disabled'); + } + }, this)); + + this.updateButtonText(); + this.updateSelectAll(); + + if (this.options.enableClickableOptGroups && this.options.multiple) { + this.updateOptGroups(); + } + }, + + /** + * Select all options of the given values. + * + * If triggerOnChange is set to true, the on change event is triggered if + * and only if one value is passed. + * + * @param {Array} selectValues + * @param {Boolean} triggerOnChange + */ + select: function (selectValues, triggerOnChange) { + if (!$.isArray(selectValues)) { + selectValues = [selectValues]; + } + + for (var i = 0; i < selectValues.length; i++) { + var value = selectValues[i]; + + if (value === null || value === undefined) { + continue; + } + + var $option = this.getOptionByValue(value); + var $checkbox = this.getInputByValue(value); + + if ($option === undefined || $checkbox === undefined) { + continue; + } + + if (!this.options.multiple) { + this.deselectAll(false); + } + + if (this.options.selectedClass) { + $checkbox.closest('li') + .addClass(this.options.selectedClass); + } + + $checkbox.prop('checked', true); + $option.prop('selected', true); + + if (triggerOnChange) { + this.options.onChange($option, true); + } + } + + this.updateButtonText(); + this.updateSelectAll(); + + if (this.options.enableClickableOptGroups && this.options.multiple) { + this.updateOptGroups(); + } + }, + + /** + * Clears all selected items. + */ + clearSelection: function () { + this.deselectAll(false); + this.updateButtonText(); + this.updateSelectAll(); + + if (this.options.enableClickableOptGroups && this.options.multiple) { + this.updateOptGroups(); + } + }, + + /** + * Deselects all options of the given values. + * + * If triggerOnChange is set to true, the on change event is triggered, if + * and only if one value is passed. + * + * @param {Array} deselectValues + * @param {Boolean} triggerOnChange + */ + deselect: function (deselectValues, triggerOnChange) { + if (!$.isArray(deselectValues)) { + deselectValues = [deselectValues]; + } + + for (var i = 0; i < deselectValues.length; i++) { + var value = deselectValues[i]; + + if (value === null || value === undefined) { + continue; + } + + var $option = this.getOptionByValue(value); + var $checkbox = this.getInputByValue(value); + + if ($option === undefined || $checkbox === undefined) { + continue; + } + + if (this.options.selectedClass) { + $checkbox.closest('li') + .removeClass(this.options.selectedClass); + } + + $checkbox.prop('checked', false); + $option.prop('selected', false); + + if (triggerOnChange) { + this.options.onChange($option, false); + } + } + + this.updateButtonText(); + this.updateSelectAll(); + + if (this.options.enableClickableOptGroups && this.options.multiple) { + this.updateOptGroups(); + } + }, + + /** + * Selects all enabled & visible options. + * + * If justVisible is true or not specified, only visible options are selected. + * + * @param {Boolean} justVisible + * @param {Boolean} triggerOnSelectAll + */ + selectAll: function (justVisible, triggerOnSelectAll) { + + var justVisible = typeof justVisible === 'undefined' ? true : justVisible; + var allLis = $("li:not(.divider):not(.disabled):not(.multiselect-group)", this.$ul); + var visibleLis = $("li:not(.divider):not(.disabled):not(.multiselect-group):not(.multiselect-filter-hidden):not(.multiselect-collapisble-hidden)", this.$ul).filter(':visible'); + + if (justVisible) { + $('input:enabled', visibleLis).prop('checked', true); + visibleLis.addClass(this.options.selectedClass); + + $('input:enabled', visibleLis).each($.proxy(function (index, element) { + var value = $(element).val(); + var option = this.getOptionByValue(value); + $(option).prop('selected', true); + }, this)); + } + else { + $('input:enabled', allLis).prop('checked', true); + allLis.addClass(this.options.selectedClass); + + $('input:enabled', allLis).each($.proxy(function (index, element) { + var value = $(element).val(); + var option = this.getOptionByValue(value); + $(option).prop('selected', true); + }, this)); + } + + $('li input[value="' + this.options.selectAllValue + '"]', this.$ul).prop('checked', true); + + if (this.options.enableClickableOptGroups && this.options.multiple) { + this.updateOptGroups(); + } + + if (triggerOnSelectAll) { + this.options.onSelectAll(); + } + }, + + /** + * Deselects all options. + * + * If justVisible is true or not specified, only visible options are deselected. + * + * @param {Boolean} justVisible + */ + deselectAll: function (justVisible, triggerOnDeselectAll) { + + var justVisible = typeof justVisible === 'undefined' ? true : justVisible; + var allLis = $("li:not(.divider):not(.disabled):not(.multiselect-group)", this.$ul); + var visibleLis = $("li:not(.divider):not(.disabled):not(.multiselect-group):not(.multiselect-filter-hidden):not(.multiselect-collapisble-hidden)", this.$ul).filter(':visible'); + + if (justVisible) { + $('input[type="checkbox"]:enabled', visibleLis).prop('checked', false); + visibleLis.removeClass(this.options.selectedClass); + + $('input[type="checkbox"]:enabled', visibleLis).each($.proxy(function (index, element) { + var value = $(element).val(); + var option = this.getOptionByValue(value); + $(option).prop('selected', false); + }, this)); + } + else { + $('input[type="checkbox"]:enabled', allLis).prop('checked', false); + allLis.removeClass(this.options.selectedClass); + + $('input[type="checkbox"]:enabled', allLis).each($.proxy(function (index, element) { + var value = $(element).val(); + var option = this.getOptionByValue(value); + $(option).prop('selected', false); + }, this)); + } + + $('li input[value="' + this.options.selectAllValue + '"]', this.$ul).prop('checked', false); + + if (this.options.enableClickableOptGroups && this.options.multiple) { + this.updateOptGroups(); + } + + if (triggerOnDeselectAll) { + this.options.onDeselectAll(); + } + }, + + /** + * Rebuild the plugin. + * + * Rebuilds the dropdown, the filter and the select all option. + */ + rebuild: function () { + this.$ul.html(''); + + // Important to distinguish between radios and checkboxes. + this.options.multiple = this.$select.attr('multiple') === "multiple"; + + this.buildSelectAll(); + this.buildDropdownOptions(); + this.buildFilter(); + + this.updateButtonText(); + this.updateSelectAll(true); + + if (this.options.enableClickableOptGroups && this.options.multiple) { + this.updateOptGroups(); + } + + if (this.options.disableIfEmpty && $('option', this.$select).length <= 0) { + this.disable(); + } + else { + this.enable(); + } + + if (this.options.dropRight) { + this.$ul.addClass('pull-right'); + } + }, + + /** + * The provided data will be used to build the dropdown. + */ + dataprovider: function (dataprovider) { + + var groupCounter = 0; + var $select = this.$select.empty(); + + $.each(dataprovider, function (index, option) { + var $tag; + + if ($.isArray(option.children)) { // create optiongroup tag + groupCounter++; + + $tag = $('').attr({ + label: option.label || 'Group ' + groupCounter, + disabled: !!option.disabled, + value: option.value + }); + + forEach(option.children, function (subOption) { // add children option tags + var attributes = { + value: subOption.value, + label: subOption.label || subOption.value, + title: subOption.title, + selected: !!subOption.selected, + disabled: !!subOption.disabled + }; + + //Loop through attributes object and add key-value for each attribute + for (var key in subOption.attributes) { + attributes['data-' + key] = subOption.attributes[key]; + } + //Append original attributes + new data attributes to option + $tag.append($('