diff --git a/__init__.py b/__init__.py index 1f90ce8bb254acffbe315b3751a57e77c6ac026f..4f121fde31e31b188e0b2a3b97a8e451341cf955 100644 --- a/__init__.py +++ b/__init__.py @@ -1,2 +1,4 @@ # © 2020 Le Filament (<http://www.le-filament.com>) # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + +from . import models diff --git a/__manifest__.py b/__manifest__.py index 88ae57ace23a0333bb0afedbdb203839b6c72300..ad049afc390cafcaa3c2f9b58b05bf863b99bd1d 100644 --- a/__manifest__.py +++ b/__manifest__.py @@ -9,5 +9,6 @@ 'data': [ 'templates/assets.xml', 'templates/layout.xml', + 'views/survey_views.xml', ], } diff --git a/models/__init__.py b/models/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..5c6fcf676f42a6f0357e22543c97555933cd110e --- /dev/null +++ b/models/__init__.py @@ -0,0 +1,4 @@ +# © 2020 Le Filament (<http://www.le-filament.com>) +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + +from . import survey_survey diff --git a/models/survey_survey.py b/models/survey_survey.py new file mode 100644 index 0000000000000000000000000000000000000000..118e4748cee71bc176a9464b2149f04598d9e24f --- /dev/null +++ b/models/survey_survey.py @@ -0,0 +1,10 @@ +# © 2020 Le Filament (<https://www.le-filament.com>) +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + +from odoo import fields, models + + +class SurveyBackendReadable(models.Model): + _inherit = "survey.survey" + + background_image = fields.Binary('Image de fond') diff --git a/templates/layout.xml b/templates/layout.xml index d86b217cc6caf777557f44578b6505c048649657..08dfe674aaef807353e1d8d85a32867802b2f776 100644 --- a/templates/layout.xml +++ b/templates/layout.xml @@ -7,10 +7,10 @@ <!-- remplace le body pour supprimer le header et ajouter le footer --> <xpath expr="//body" position="replace"> - <body class="ethikis-body"> + <body> <header> </header> - <main class="ethikis-survey"> + <main> <t t-set="title">Longtime | Ethikis</t> <t t-raw="0"/> </main> @@ -66,7 +66,7 @@ <template id="ethikis_survey_header"> <div class="row"> <div class="col-6 my-auto"> - <img src="/ethikis_survey/static/src/css/logo_horizontal.png" class="float-left" width="200px" alt=""/> + <img src="/ethikis_survey/static/src/img/logo_horizontal.png" class="float-left" width="200px" alt=""/> </div> <div class="col-6 text-right my-auto"> <h3>ESPACE ENQUÊTE</h3> @@ -78,7 +78,7 @@ <!-- SURVEY INIT --> <template id="ethikis_survey_init" inherit_id="survey.survey_init"> <xpath expr="//div[@class='wrap']" position="replace"> - <div class="wrap"> + <div class="ethikis-survey wrap" t-attf-style="background-image: url(data:image/*;base64,{{survey.background_image}})"> <div class="container"> <div class='jumbotron mt32 ethikis-jumbo shadow-lg'> <t t-call="ethikis_survey.ethikis_survey_header"/> @@ -97,7 +97,7 @@ </div> </div> <div class="col-3 my-auto"> - <img id="ethikis-etiquette-jumbo" src="/ethikis_survey/static/src/css/etiquette.png" class="float-right" margin-right="-2rem" width="250px" alt=""/> + <img id="ethikis-etiquette-jumbo" src="/ethikis_survey/static/src/img/etiquette.png" class="float-right" margin-right="-2rem" width="250px" alt=""/> </div> </div> </div> @@ -111,7 +111,7 @@ <!-- SURVEY STRUCTURE PAGES QUESIONS --> <template id="ethikis_survey_survey" inherit_id="survey.survey"> <xpath expr="//div[@class='wrap']" position="replace"> - <div class="wrap"> + <div class="ethikis-survey wrap" t-attf-style="background-image: url(data:image/*;base64,{{survey.background_image}})"> <div class="container"> <div class='jumbotron mt32 ethikis-jumbo shadow-lg'> <t t-call="ethikis_survey.ethikis_survey_header"/> @@ -122,7 +122,7 @@ </xpath> </template> - + <!-- SURVEY PAGE --> <template id="ethikis_survey_page" inherit_id="survey.page"> <xpath expr="//div[@class='o_page_header']" position="replace"> @@ -137,25 +137,29 @@ <input type="hidden" name="csrf_token" t-att-value="request.csrf_token()"/> <input type="hidden" name="page_id" t-att-value="page.id" /> <input type="hidden" name="token" t-att-value="token" /> - <t t-foreach='page.question_ids' t-as='question'> - <t t-set="prefix" t-value="'%s_%s_%s' % (survey.id, page.id, question.id)" /> - <div class="js_question-wrapper" t-att-id="prefix"> - <h4> - <span t-field='question.question' /> - <span t-if="question.constr_mandatory" class="text-danger">*</span> - </h4> - <div t-field='question.description' class="text-muted oe_no_empty"/> - <t t-if="question.type == 'free_text'"><t t-call="survey.free_text"/></t> - <t t-if="question.type == 'textbox'"><t t-call="survey.textbox"/></t> - <t t-if="question.type == 'numerical_box'"><t t-call="survey.numerical_box"/></t> - <t t-if="question.type == 'date'"><t t-call="survey.date"/></t> - <t t-if="question.type == 'simple_choice'"><t t-call="survey.simple_choice"/></t> - <t t-if="question.type == 'multiple_choice'"><t t-call="survey.multiple_choice"/></t> - <t t-if="question.type == 'matrix'"><t t-call="survey.matrix"/></t> - <div class="js_errzone alert alert-danger" style="display:none;" role="alert"/> + <div class="row"> + <div class="col-9"> + <t t-foreach='page.question_ids' t-as='question'> + <t t-set="prefix" t-value="'%s_%s_%s' % (survey.id, page.id, question.id)" /> + <div class="js_question-wrapper" t-att-id="prefix"> + <h4> + <span t-field='question.question' /> + <span t-if="question.constr_mandatory" class="text-danger">*</span> + </h4> + <div t-field='question.description' class="text-muted oe_no_empty"/> + <t t-if="question.type == 'free_text'"><t t-call="survey.free_text"/></t> + <t t-if="question.type == 'textbox'"><t t-call="survey.textbox"/></t> + <t t-if="question.type == 'numerical_box'"><t t-call="survey.numerical_box"/></t> + <t t-if="question.type == 'date'"><t t-call="survey.date"/></t> + <t t-if="question.type == 'simple_choice'"><t t-call="survey.simple_choice"/></t> + <t t-if="question.type == 'multiple_choice'"><t t-call="survey.multiple_choice"/></t> + <t t-if="question.type == 'matrix'"><t t-call="survey.matrix"/></t> + <div class="js_errzone alert alert-danger" style="display:none;" role="alert"/> + </div> + </t> </div> - </t> - <div class="text-right mt16 mb16"> + </div> + <div class="text-right mt16 mb16 mr32"> <button t-if="survey.users_can_go_back and page_nr > 0" type="submit" class="btn ethikis-btn-green" name="button_submit" value="previous">Previous page</button> <button t-if="not last" type="submit" class="btn ethikis-btn-blue" name="button_submit" value="next">Save or continue</button> <button t-if="last" type="submit" class="btn ethikis-btn-blue" name="button_submit" value="finish">Submit survey</button> @@ -170,7 +174,7 @@ <!-- THANKS PAGE --> <template id="ethikis_survey_thanks_page" inherit_id="survey.sfinished"> <xpath expr="//div[@class='wrap']" position="replace"> - <div class="wrap"> + <div class="ethikis-survey wrap" t-attf-style="background-image: url(data:image/*;base64,{{survey.background_image}})"> <div class="container"> <t t-call="survey.back" /> <div class="jumbotron ethikis-jumbo mt32"> @@ -179,8 +183,8 @@ <div t-field="survey.thank_you_message" class="oe_no_empty pt32" /> <div t-if='survey.quizz_mode'>You scored <t t-esc="user_input.quizz_score" /> points.</div> <div><a t-att-href="'/survey/print/%s/%s' % (slug(survey), token)">Check answers</a></div> - <div><a href="https://longtimelabel.com/quest-ce-que-longtime/">Know more about LONGTIME</a></div> - <div><a href="https://longtimelabel.com/diag-longtime/">Our ethical tools</a></div> + <div><a href="https://longtimelabel.com">Know more about LONGTIME</a></div> + <div><a href="https://ethikis.com">Our ethical tools</a></div> </div> </div> </div> @@ -190,40 +194,42 @@ <!-- PRINTABLE VIEW OF A SURVEY --> <template id="ethikis_survey_print" inherit_id="survey.survey_print"> - <xpath expr="//div[@class='container']" position="replace"> - <div class="container"> - <t t-call="survey.back" /> - <div class='jumbotron ethikis-jumbo mt32'> - <h1><span t-field='survey.title'/></h1> - <t t-if="survey.description"><div t-field='survey.description' class="oe_no_empty"/></t> - <div role="form" class="js_surveyform" t-att-name="'%s' % (survey.id)" t-att-data-prefill="'/survey/prefill/%s/%s' % (slug(survey), token)"> - <t t-foreach="survey.page_ids" t-as="page"> - <div class="o_page_header"> - <h2 t-field='page.title' /> - <t t-if="page.description"><div t-field='page.description' class="oe_no_empty"/></t> - </div> - <t t-foreach='page.question_ids' t-as='question'> - <t t-set="prefix" t-value="'%s_%s_%s' % (survey.id, page.id, question.id)" /> - <div class="js_question-wrapper" t-att-id="prefix"> - <h2> - <span t-field='question.question' /> - <span t-if="question.constr_mandatory" class="text-danger">*</span> - <span t-if="quizz_correction" class="badge badge-pill" - t-att-data-score-question="question.id"/> - </h2> - <t t-if="question.description"><div class="text-muted oe_no_empty" t-field='question.description'/></t> - <t t-if="question.type == 'free_text'"><t t-call="survey.free_text"/></t> - <t t-if="question.type == 'textbox'"><t t-call="survey.textbox"/></t> - <t t-if="question.type == 'numerical_box'"><t t-call="survey.numerical_box"/></t> - <t t-if="question.type == 'date'"><t t-call="survey.date"/></t> - <t t-if="question.type == 'simple_choice'"><t t-call="survey.simple_choice"/></t> - <t t-if="question.type == 'multiple_choice'"><t t-call="survey.multiple_choice"/></t> - <t t-if="question.type == 'matrix'"><t t-call="survey.matrix"/></t> - <div class="js_errzone alert alert-danger" style="display:none;" role="alert"/> + <xpath expr="//div[@class='wrap']" position="replace"> + <div class="ethikis-survey wrap" t-attf-style="background-image: url(data:image/*;base64,{{survey.background_image}})"> + <div class="container"> + <t t-call="survey.back" /> + <div class='jumbotron ethikis-jumbo mt32'> + <h1><span t-field='survey.title'/></h1> + <t t-if="survey.description"><div t-field='survey.description' class="oe_no_empty"/></t> + <div role="form" class="js_surveyform" t-att-name="'%s' % (survey.id)" t-att-data-prefill="'/survey/prefill/%s/%s' % (slug(survey), token)"> + <t t-foreach="survey.page_ids" t-as="page"> + <div class="o_page_header"> + <h2 t-field='page.title' /> + <t t-if="page.description"><div t-field='page.description' class="oe_no_empty"/></t> </div> + <t t-foreach='page.question_ids' t-as='question'> + <t t-set="prefix" t-value="'%s_%s_%s' % (survey.id, page.id, question.id)" /> + <div class="js_question-wrapper" t-att-id="prefix"> + <h2> + <span t-field='question.question' /> + <span t-if="question.constr_mandatory" class="text-danger">*</span> + <span t-if="quizz_correction" class="badge badge-pill" + t-att-data-score-question="question.id"/> + </h2> + <t t-if="question.description"><div class="text-muted oe_no_empty" t-field='question.description'/></t> + <t t-if="question.type == 'free_text'"><t t-call="survey.free_text"/></t> + <t t-if="question.type == 'textbox'"><t t-call="survey.textbox"/></t> + <t t-if="question.type == 'numerical_box'"><t t-call="survey.numerical_box"/></t> + <t t-if="question.type == 'date'"><t t-call="survey.date"/></t> + <t t-if="question.type == 'simple_choice'"><t t-call="survey.simple_choice"/></t> + <t t-if="question.type == 'multiple_choice'"><t t-call="survey.multiple_choice"/></t> + <t t-if="question.type == 'matrix'"><t t-call="survey.matrix"/></t> + <div class="js_errzone alert alert-danger" style="display:none;" role="alert"/> + </div> + </t> + <hr/> </t> - <hr/> - </t> + </div> </div> </div> </div> diff --git a/views/survey_views.xml b/views/survey_views.xml new file mode 100644 index 0000000000000000000000000000000000000000..64f8f79b2aeb5a983b65969dcd3bb5238b2a61fa --- /dev/null +++ b/views/survey_views.xml @@ -0,0 +1,20 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Copyright 2020 Le Filament (<https://le-filament.com>) + License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). --> + +<odoo> + + <record model="ir.ui.view" id="ethikis_survey_form_view"> + <field name="name">ethikis_survey_form_view</field> + <field name="model">survey.survey</field> + <field name="inherit_id" ref="survey.survey_form"/> + <field name="arch" type="xml"> + <xpath expr="//notebook" position="inside"> + <page string="Background"> + <field name="background_image" widget="image"/> + </page> + </xpath> + </field> + </record> + +</odoo> \ No newline at end of file