Rémi FRANÇOIS
5 years ago
18 changed files with 625 additions and 0 deletions
-
2survey_attachment/__init__.py
-
35survey_attachment/__manifest__.py
-
2survey_attachment/controllers/__init__.py
-
40survey_attachment/controllers/main.py
-
139survey_attachment/i18n/fr.po
-
139survey_attachment/i18n/survey_attachment.pot
-
2survey_attachment/models/__init__.py
-
20survey_attachment/models/survey_question.py
-
58survey_attachment/models/survey_user_input_line.py
-
BINsurvey_attachment/static/description/icon.png
-
BINsurvey_attachment/static/description/image_2.png
-
BINsurvey_attachment/static/description/imge_1.png
-
21survey_attachment/static/description/index.html
-
BINsurvey_attachment/static/description/survey.jpg
-
57survey_attachment/templates/page.xml
-
49survey_attachment/templates/survey_print.xml
-
44survey_attachment/templates/upload_file.xml
-
17survey_attachment/views/survey_user_input_line.xml
@ -0,0 +1,2 @@ |
|||||
|
from . import controllers |
||||
|
from . import models |
@ -0,0 +1,35 @@ |
|||||
|
# -*- coding: utf-8 -*- |
||||
|
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). |
||||
|
{ |
||||
|
'name': 'Survey Attachment', |
||||
|
'version': '1.0.0', |
||||
|
'summary': """ |
||||
|
This module provides a new type of question in surveys, that allows to join a file as answer. |
||||
|
""", |
||||
|
'description': """ """, |
||||
|
'author': 'Fogits Solutions', |
||||
|
'website': 'https://www.fogits.com/', |
||||
|
'license': 'AGPL-3', |
||||
|
'category': 'Marketing', |
||||
|
'depends': [ |
||||
|
'survey', |
||||
|
], |
||||
|
'data': [ |
||||
|
'templates/upload_file.xml', |
||||
|
'templates/page.xml', |
||||
|
'templates/survey_print.xml', |
||||
|
'views/survey_user_input_line.xml', |
||||
|
], |
||||
|
'demo': [], |
||||
|
'auto_install': False, |
||||
|
'external_dependencies': [], |
||||
|
'application': False, |
||||
|
'css': [], |
||||
|
'images': ['static/description/survey.jpg'], |
||||
|
'js': [], |
||||
|
'installable': True, |
||||
|
'maintainer': 'Fogits Solutions, Sudokeys', |
||||
|
'pre_init_hook': '', |
||||
|
'post_init_hook': '', |
||||
|
'uninstall_hook': '', |
||||
|
} |
@ -0,0 +1,2 @@ |
|||||
|
# -*- coding: utf-8 -*- |
||||
|
from . import main |
@ -0,0 +1,40 @@ |
|||||
|
# -*- coding: utf-8 -*- |
||||
|
from odoo import fields, http, SUPERUSER_ID |
||||
|
from odoo.http import request |
||||
|
from odoo.addons.survey.controllers.main import Survey |
||||
|
import logging |
||||
|
|
||||
|
_logger = logging.getLogger(__name__) |
||||
|
|
||||
|
|
||||
|
class SurveyAttachment(Survey): |
||||
|
# Printing routes |
||||
|
@http.route(['/survey/print/<model("survey.survey"):survey>', |
||||
|
'/survey/print/<model("survey.survey"):survey>/<string:token>'], |
||||
|
type='http', auth='public', website=True) |
||||
|
def print_survey(self, survey, token=None, **post): |
||||
|
'''Display an survey in printable view; if <token> is set, it will |
||||
|
grab the answers of the user_input_id that has <token>.''' |
||||
|
|
||||
|
survey_question = request.env['survey.question'] |
||||
|
user_input = request.env['survey.user_input'] |
||||
|
user_input_line = request.env['survey.user_input_line'] |
||||
|
|
||||
|
question_ids = survey_question.sudo().search([('type', '=', 'upload_file'), ('survey_id', '=', survey.id)]) |
||||
|
user_input_id = user_input.sudo().search([('token', '=', token), ('survey_id', '=', survey.id)]) |
||||
|
|
||||
|
user_input_line_upload_file = [] |
||||
|
for question in question_ids: |
||||
|
user_input_line = user_input_line.search([ |
||||
|
('user_input_id', '=', user_input_id.id), |
||||
|
('survey_id', '=', survey.id), |
||||
|
('question_id', '=', question.id), |
||||
|
('answer_type', '=', 'upload_file') |
||||
|
]) |
||||
|
user_input_line_upload_file.append(user_input_line) |
||||
|
return request.render('survey.survey_print', |
||||
|
{'survey': survey, |
||||
|
'token': token, |
||||
|
'page_nr': 0, |
||||
|
'quizz_correction': True if survey.quizz_mode and token else False, |
||||
|
'user_input_line_upload_file': user_input_line_upload_file}) |
@ -0,0 +1,139 @@ |
|||||
|
# Translation of Odoo Server. |
||||
|
# This file contains the translation of the following modules: |
||||
|
# * survey_attachment |
||||
|
# |
||||
|
msgid "" |
||||
|
msgstr "" |
||||
|
"Project-Id-Version: Odoo Server 12.0+e\n" |
||||
|
"Report-Msgid-Bugs-To: \n" |
||||
|
"POT-Creation-Date: 2020-03-31 13:31+0000\n" |
||||
|
"PO-Revision-Date: 2020-03-31 13:31+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: survey_attachment |
||||
|
#: model:ir.model.fields,field_description:survey_attachment.field_survey_user_input_line__answer_type |
||||
|
msgid "Answer Type" |
||||
|
msgstr "Type de réponse" |
||||
|
|
||||
|
#. module: survey_attachment |
||||
|
#: code:addons/survey_attachment/models/survey_question.py:9 |
||||
|
#: selection:survey.question,type:0 |
||||
|
#: selection:survey.user_input_line,answer_type:0 |
||||
|
#, python-format |
||||
|
msgid "Attachment" |
||||
|
msgstr " jointe" |
||||
|
|
||||
|
#. module: survey_attachment |
||||
|
#: code:addons/survey_attachment/models/survey_question.py:8 |
||||
|
#: selection:survey.question,type:0 |
||||
|
#: selection:survey.user_input_line,answer_type:0 |
||||
|
#, python-format |
||||
|
msgid "Date" |
||||
|
msgstr "Date" |
||||
|
|
||||
|
#. module: survey_attachment |
||||
|
#: model_terms:ir.ui.view,arch_db:survey_attachment.upload_file |
||||
|
msgid "Download" |
||||
|
msgstr "Télécharger" |
||||
|
|
||||
|
#. module: survey_attachment |
||||
|
#: model:ir.model.fields,field_description:survey_attachment.field_survey_user_input_line__file_type |
||||
|
msgid "File type" |
||||
|
msgstr "Type de fichier" |
||||
|
|
||||
|
#. module: survey_attachment |
||||
|
#: code:addons/survey_attachment/models/survey_user_input_line.py:7 |
||||
|
#: selection:survey.user_input_line,file_type:0 |
||||
|
#, python-format |
||||
|
msgid "Image" |
||||
|
msgstr "Image" |
||||
|
|
||||
|
#. module: survey_attachment |
||||
|
#: model:ir.model.fields,field_description:survey_attachment.field_survey_question__question_attachment |
||||
|
msgid "Joined attachment" |
||||
|
msgstr "Pièce jointe" |
||||
|
|
||||
|
#. module: survey_attachment |
||||
|
#: code:addons/survey_attachment/models/survey_question.py:12 |
||||
|
#: selection:survey.question,type:0 |
||||
|
#: selection:survey.user_input_line,answer_type:0 |
||||
|
#, python-format |
||||
|
msgid "Matrix" |
||||
|
msgstr "Matrice" |
||||
|
|
||||
|
#. module: survey_attachment |
||||
|
#: code:addons/survey_attachment/models/survey_question.py:5 |
||||
|
#: selection:survey.question,type:0 |
||||
|
#: selection:survey.user_input_line,answer_type:0 |
||||
|
#, python-format |
||||
|
msgid "Multiple Lines Text Box" |
||||
|
msgstr "Plusieurs lignes de champ de texte" |
||||
|
|
||||
|
#. module: survey_attachment |
||||
|
#: code:addons/survey_attachment/models/survey_question.py:11 |
||||
|
#: selection:survey.question,type:0 |
||||
|
#: selection:survey.user_input_line,answer_type:0 |
||||
|
#, python-format |
||||
|
msgid "Multiple choice: multiple answers allowed" |
||||
|
msgstr "Choix multiples : réponses multiples" |
||||
|
|
||||
|
#. module: survey_attachment |
||||
|
#: code:addons/survey_attachment/models/survey_question.py:10 |
||||
|
#: selection:survey.question,type:0 |
||||
|
#: selection:survey.user_input_line,answer_type:0 |
||||
|
#, python-format |
||||
|
msgid "Multiple choice: only one answer" |
||||
|
msgstr "Choix multiples : une seule réponse possible" |
||||
|
|
||||
|
#. module: survey_attachment |
||||
|
#: code:addons/survey_attachment/models/survey_question.py:7 |
||||
|
#: selection:survey.question,type:0 |
||||
|
#: selection:survey.user_input_line,answer_type:0 |
||||
|
#, python-format |
||||
|
msgid "Numerical Value" |
||||
|
msgstr "Valeur numérique" |
||||
|
|
||||
|
#. module: survey_attachment |
||||
|
#: code:addons/survey_attachment/models/survey_user_input_line.py:8 |
||||
|
#: selection:survey.user_input_line,file_type:0 |
||||
|
#, python-format |
||||
|
msgid "PDF file" |
||||
|
msgstr "Fichier PDF" |
||||
|
|
||||
|
#. module: survey_attachment |
||||
|
#: code:addons/survey_attachment/models/survey_question.py:6 |
||||
|
#: selection:survey.question,type:0 |
||||
|
#: selection:survey.user_input_line,answer_type:0 |
||||
|
#, python-format |
||||
|
msgid "Single Line Text Box" |
||||
|
msgstr "Ligne de texte unique" |
||||
|
|
||||
|
#. module: survey_attachment |
||||
|
#: model:ir.model,name:survey_attachment.model_survey_question |
||||
|
msgid "Survey Question" |
||||
|
msgstr "Question du sondage" |
||||
|
|
||||
|
#. module: survey_attachment |
||||
|
#: model:ir.model,name:survey_attachment.model_survey_user_input_line |
||||
|
msgid "Survey User Input Line" |
||||
|
msgstr "Ligne de saisie pour l'utilisateur du sondage" |
||||
|
|
||||
|
#. module: survey_attachment |
||||
|
#: model:ir.model.fields,field_description:survey_attachment.field_survey_question__type |
||||
|
msgid "Type of Question" |
||||
|
msgstr "Type de question" |
||||
|
|
||||
|
#. module: survey_attachment |
||||
|
#: model:ir.model.fields,field_description:survey_attachment.field_survey_user_input_line__file |
||||
|
msgid "Uploaded file" |
||||
|
msgstr "Fichier joint" |
||||
|
|
||||
|
#. module: survey_attachment |
||||
|
#: model:ir.model.fields,field_description:survey_attachment.field_survey_user_input_line__filename |
||||
|
msgid "Uploaded file name" |
||||
|
msgstr "Nom du fichier joint" |
@ -0,0 +1,139 @@ |
|||||
|
# Translation of Odoo Server. |
||||
|
# This file contains the translation of the following modules: |
||||
|
# * survey_attachment |
||||
|
# |
||||
|
msgid "" |
||||
|
msgstr "" |
||||
|
"Project-Id-Version: Odoo Server 12.0+e\n" |
||||
|
"Report-Msgid-Bugs-To: \n" |
||||
|
"POT-Creation-Date: 2020-03-31 13:32+0000\n" |
||||
|
"PO-Revision-Date: 2020-03-31 13:32+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: survey_attachment |
||||
|
#: model:ir.model.fields,field_description:survey_attachment.field_survey_user_input_line__answer_type |
||||
|
msgid "Answer Type" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: survey_attachment |
||||
|
#: code:addons/survey_attachment/models/survey_question.py:9 |
||||
|
#: selection:survey.question,type:0 |
||||
|
#: selection:survey.user_input_line,answer_type:0 |
||||
|
#, python-format |
||||
|
msgid "Attachment" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: survey_attachment |
||||
|
#: code:addons/survey_attachment/models/survey_question.py:8 |
||||
|
#: selection:survey.question,type:0 |
||||
|
#: selection:survey.user_input_line,answer_type:0 |
||||
|
#, python-format |
||||
|
msgid "Date" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: survey_attachment |
||||
|
#: model_terms:ir.ui.view,arch_db:survey_attachment.upload_file |
||||
|
msgid "Download" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: survey_attachment |
||||
|
#: model:ir.model.fields,field_description:survey_attachment.field_survey_user_input_line__file_type |
||||
|
msgid "File type" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: survey_attachment |
||||
|
#: code:addons/survey_attachment/models/survey_user_input_line.py:7 |
||||
|
#: selection:survey.user_input_line,file_type:0 |
||||
|
#, python-format |
||||
|
msgid "Image" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: survey_attachment |
||||
|
#: model:ir.model.fields,field_description:survey_attachment.field_survey_question__question_attachment |
||||
|
msgid "Joined attachment" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: survey_attachment |
||||
|
#: code:addons/survey_attachment/models/survey_question.py:12 |
||||
|
#: selection:survey.question,type:0 |
||||
|
#: selection:survey.user_input_line,answer_type:0 |
||||
|
#, python-format |
||||
|
msgid "Matrix" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: survey_attachment |
||||
|
#: code:addons/survey_attachment/models/survey_question.py:5 |
||||
|
#: selection:survey.question,type:0 |
||||
|
#: selection:survey.user_input_line,answer_type:0 |
||||
|
#, python-format |
||||
|
msgid "Multiple Lines Text Box" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: survey_attachment |
||||
|
#: code:addons/survey_attachment/models/survey_question.py:11 |
||||
|
#: selection:survey.question,type:0 |
||||
|
#: selection:survey.user_input_line,answer_type:0 |
||||
|
#, python-format |
||||
|
msgid "Multiple choice: multiple answers allowed" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: survey_attachment |
||||
|
#: code:addons/survey_attachment/models/survey_question.py:10 |
||||
|
#: selection:survey.question,type:0 |
||||
|
#: selection:survey.user_input_line,answer_type:0 |
||||
|
#, python-format |
||||
|
msgid "Multiple choice: only one answer" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: survey_attachment |
||||
|
#: code:addons/survey_attachment/models/survey_question.py:7 |
||||
|
#: selection:survey.question,type:0 |
||||
|
#: selection:survey.user_input_line,answer_type:0 |
||||
|
#, python-format |
||||
|
msgid "Numerical Value" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: survey_attachment |
||||
|
#: code:addons/survey_attachment/models/survey_user_input_line.py:8 |
||||
|
#: selection:survey.user_input_line,file_type:0 |
||||
|
#, python-format |
||||
|
msgid "PDF file" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: survey_attachment |
||||
|
#: code:addons/survey_attachment/models/survey_question.py:6 |
||||
|
#: selection:survey.question,type:0 |
||||
|
#: selection:survey.user_input_line,answer_type:0 |
||||
|
#, python-format |
||||
|
msgid "Single Line Text Box" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: survey_attachment |
||||
|
#: model:ir.model,name:survey_attachment.model_survey_question |
||||
|
msgid "Survey Question" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: survey_attachment |
||||
|
#: model:ir.model,name:survey_attachment.model_survey_user_input_line |
||||
|
msgid "Survey User Input Line" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: survey_attachment |
||||
|
#: model:ir.model.fields,field_description:survey_attachment.field_survey_question__type |
||||
|
msgid "Type of Question" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: survey_attachment |
||||
|
#: model:ir.model.fields,field_description:survey_attachment.field_survey_user_input_line__file |
||||
|
msgid "Uploaded file" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: survey_attachment |
||||
|
#: model:ir.model.fields,field_description:survey_attachment.field_survey_user_input_line__filename |
||||
|
msgid "Uploaded file name" |
||||
|
msgstr "" |
@ -0,0 +1,2 @@ |
|||||
|
from . import survey_question |
||||
|
from . import survey_user_input_line |
@ -0,0 +1,20 @@ |
|||||
|
# -*- coding: utf-8 -*- |
||||
|
from odoo import models, fields, _ |
||||
|
|
||||
|
TYPES = [ |
||||
|
('free_text', _('Multiple Lines Text Box')), |
||||
|
('textbox', _('Single Line Text Box')), |
||||
|
('numerical_box', _('Numerical Value')), |
||||
|
('date', _('Date')), |
||||
|
('upload_file', _('Attachment')), |
||||
|
('simple_choice', _('Multiple choice: only one answer')), |
||||
|
('multiple_choice', _('Multiple choice: multiple answers allowed')), |
||||
|
('matrix', _('Matrix')), |
||||
|
] |
||||
|
|
||||
|
|
||||
|
class SurveyQuestion(models.Model): |
||||
|
_inherit = 'survey.question' |
||||
|
|
||||
|
question_attachment = fields.Binary(string="Joined attachment") |
||||
|
type = fields.Selection(selection=TYPES) |
@ -0,0 +1,58 @@ |
|||||
|
# -*- coding: utf-8 -*- |
||||
|
import base64 |
||||
|
from odoo import models, fields, api, _ |
||||
|
from .survey_question import TYPES |
||||
|
|
||||
|
FILE_TYPES = [ |
||||
|
('image', _('Image')), |
||||
|
('pdf', _('PDF file')), |
||||
|
] |
||||
|
|
||||
|
|
||||
|
class SurveyUserInputLine(models.Model): |
||||
|
_inherit = 'survey.user_input_line' |
||||
|
|
||||
|
answer_type = fields.Selection(selection=TYPES) |
||||
|
file = fields.Binary(string='Uploaded file') |
||||
|
filename = fields.Char(string='Uploaded file name') |
||||
|
file_type = fields.Selection(selection=FILE_TYPES, string="File type") |
||||
|
|
||||
|
@api.model |
||||
|
def save_line_upload_file(self, user_input_id, question, post, answer_tag): |
||||
|
vals = { |
||||
|
'user_input_id': user_input_id, |
||||
|
'question_id': question.id, |
||||
|
'survey_id': question.survey_id.id, |
||||
|
'skipped': False |
||||
|
} |
||||
|
if question.constr_mandatory: |
||||
|
file = base64.encodebytes(post[answer_tag].read()) |
||||
|
else: |
||||
|
file = base64.encodebytes(post[answer_tag].read()) if post[answer_tag] else None |
||||
|
if answer_tag in post: |
||||
|
vals.update({ |
||||
|
'answer_type': 'upload_file', |
||||
|
'file': file, |
||||
|
'filename': post[answer_tag].filename, |
||||
|
}) |
||||
|
if post[answer_tag].content_type == 'application/pdf': |
||||
|
vals.update({'file_type': 'pdf'}) |
||||
|
if 'image/' in post[answer_tag].content_type: |
||||
|
vals.update({'file_type': 'image'}) |
||||
|
else: |
||||
|
vals.update({ |
||||
|
'answer_type': None, |
||||
|
'file': False, |
||||
|
'filename': False, |
||||
|
'skipped': True, |
||||
|
}) |
||||
|
old_uil = self.search([ |
||||
|
('user_input_id', '=', user_input_id), |
||||
|
('survey_id', '=', question.survey_id.id), |
||||
|
('question_id', '=', question.id) |
||||
|
]) |
||||
|
if old_uil: |
||||
|
old_uil.write(vals) |
||||
|
else: |
||||
|
old_uil.create(vals) |
||||
|
return True |
After Width: 320 | Height: 320 | Size: 11 KiB |
After Width: 1767 | Height: 868 | Size: 57 KiB |
After Width: 1881 | Height: 903 | Size: 74 KiB |
@ -0,0 +1,21 @@ |
|||||
|
<section class="oe_container app" style="border: 3px solid #c4d335;border-radius: 4px;box-shadow: 5px 10px 18px 6px#666666;"> |
||||
|
<div class="oe_row oe_spaced" style="max-width: 95%;"> |
||||
|
<div class="oe_span12"> |
||||
|
<h2 class="oe_slogan" style="font-weight: bold;">Survey Attachment </h2> |
||||
|
<div class="oe_demo" style="font-weight: bold; margin: 30px auto 0; padding: 0 15px 0 0; border:none; width: 96%;"> |
||||
|
<h3>This module allows you to upload file to survey ! </h3> |
||||
|
<br/> |
||||
|
<h3>Choose Type of question upload file</h3> |
||||
|
<img style="border: 2px solid #c4d335;" src="imge_1.png"/> |
||||
|
<br/> |
||||
|
<h3>Upload File here</h3> |
||||
|
<br/> |
||||
|
<img style="border: 2px solid #c4d335;" src="image_2.png"/> |
||||
|
<br/> |
||||
|
|
||||
|
<br/> |
||||
|
|
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
</section> |
After Width: 540 | Height: 270 | Size: 14 KiB |
@ -0,0 +1,57 @@ |
|||||
|
<?xml version="1.0" encoding="utf-8"?> |
||||
|
<odoo> |
||||
|
|
||||
|
<template id="survey.page" name="Page"> |
||||
|
<div class="page-header"> |
||||
|
<p class="pull-right">Page <span t-raw='page_nr + 1'/> of <span t-raw="len(survey.page_ids)"/></p> |
||||
|
<h1 t-field='page.title' /> |
||||
|
<div t-field='page.description' class="oe_no_empty"/> |
||||
|
</div> |
||||
|
|
||||
|
<form role="form" method="post" class="js_surveyform" t-att-name="'%s_%s' % (survey.id, page.id)" t-att-action="'/survey/fill/%s/%s' % (slug(survey), token)" t-att-data-prefill="'/survey/prefill/%s/%s/%s' % (slug(survey), token, slug(page))" t-att-data-validate="'/survey/validate/%s' % (slug(survey))" t-att-data-submit="'/survey/submit/%s' % (slug(survey))"> |
||||
|
<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"> |
||||
|
<h2> |
||||
|
<span t-field='question.question' /> |
||||
|
<span t-if="question.constr_mandatory" class="text-danger">*</span> |
||||
|
</h2> |
||||
|
<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> |
||||
|
<t t-if="question.type == 'upload_file'"><t t-call="survey_attachment.upload_file"/></t> |
||||
|
<div class="js_errzone alert alert-danger" style="display:none;"></div> |
||||
|
</div> |
||||
|
</t> |
||||
|
<div class="text-center mt16 mb16"> |
||||
|
<button t-if="survey.users_can_go_back and page_nr > 0" type="submit" class="btn btn-default" name="button_submit" value="previous">Previous page</button> |
||||
|
<button t-if="not last" type="submit" class="btn btn-primary" name="button_submit" value="next">Next page</button> |
||||
|
<button t-if="last" type="submit" class="btn btn-primary" name="button_submit" value="finish">Submit survey</button> |
||||
|
</div> |
||||
|
</form> |
||||
|
|
||||
|
<!-- Modal used to display error message, i.c.o. ajax error --> |
||||
|
<div class="modal fade" id="AJAXErrorModal" role="dialog" aria-labelledby="AJAXErrorModal" aria-hidden="true" > |
||||
|
<div class="modal-dialog"> |
||||
|
<div class="modal-content"> |
||||
|
<div class="modal-header"> |
||||
|
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button> |
||||
|
<h4 class="modal-title">A problem has occured</h4> |
||||
|
</div> |
||||
|
<div class="modal-body"><p>Something went wrong while contacting survey server. <strong class="text-danger">Your answers have probably not been recorded.</strong> Try refreshing.</p></div> |
||||
|
<div class="modal-footer"><button type="button" class="btn btn-primary" data-dismiss="modal">Close</button></div> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
|
||||
|
</template> |
||||
|
|
||||
|
</odoo> |
@ -0,0 +1,49 @@ |
|||||
|
<?xml version="1.0" encoding="utf-8"?> |
||||
|
<odoo> |
||||
|
|
||||
|
<template id="survey.survey_print" name="Survey"> |
||||
|
<t t-call="survey.layout"> |
||||
|
<div class="wrap"> |
||||
|
<div class="container"> |
||||
|
<t t-call="survey.back" /> |
||||
|
<div class="row"> |
||||
|
<div class='jumbotron mt32' style="width:100%;"> |
||||
|
<h1><span t-field='survey.title'/></h1> |
||||
|
<t t-if="survey.description"><div t-field='survey.description' class="oe_no_empty"/></t> |
||||
|
</div> |
||||
|
<div role="form" class="js_surveyform" t-att-name="'%s' % (survey.id)" t-att-data-prefill="'/survey/prefill/%s/%s' % (slug(survey), token)" style="width: -moz-available;"> |
||||
|
<t t-foreach="survey.page_ids" t-as="page"> |
||||
|
<div class="page-header"> |
||||
|
<h1 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" t-att-data-score-question="question.id"></span> |
||||
|
</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> |
||||
|
<t t-if="question.type == 'upload_file'"><t t-call="survey_attachment.upload_file"/></t> |
||||
|
<div class="js_errzone alert alert-danger" style="display:none;"></div> |
||||
|
</div> |
||||
|
</t> |
||||
|
<hr/> |
||||
|
</t> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
</t> |
||||
|
</template> |
||||
|
|
||||
|
</odoo> |
@ -0,0 +1,44 @@ |
|||||
|
<?xml version="1.0" encoding="utf-8"?> |
||||
|
<odoo> |
||||
|
|
||||
|
<template id="upload_file" name="Upload a file"> |
||||
|
<div class="input-file-container"> |
||||
|
<t t-if="user_input_line_upload_file"> |
||||
|
<t t-foreach="user_input_line_upload_file" t-as="upload_file" t-if="upload_file.question_id.id == question.id"> |
||||
|
<t t-if="upload_file.file_type == 'pdf'"> |
||||
|
<a width="100px" height="100px" t-att-href="'data:application/pdf;base64,%s' % to_text(upload_file.file)" target="_blank">Download</a> |
||||
|
</t> |
||||
|
<t t-if="upload_file.file_type == 'image'"> |
||||
|
<img width="100px" style="height: 100px;" class="img-thumbnail" t-att-src="'data:image/*;base64,%s' % to_text(upload_file.file)"/> |
||||
|
</t> |
||||
|
</t> |
||||
|
</t> |
||||
|
<t t-else=""> |
||||
|
<div class="file-field" > |
||||
|
<input class="input-file" id="my-file" type="file" accept="image/*,application/pdf" t-att-name="prefix"/> |
||||
|
</div> |
||||
|
<br/> |
||||
|
</t> |
||||
|
</div> |
||||
|
<script> |
||||
|
$(document).ready(function(){ |
||||
|
$(".img-thumbnail").click(function(){ |
||||
|
if ( $(this).height() == 240) { |
||||
|
$(this).animate({ |
||||
|
opacity: '0.8', |
||||
|
height: '100px', |
||||
|
width: '100px', |
||||
|
}, "slow"); |
||||
|
} else { |
||||
|
$(this).animate({ |
||||
|
opacity: '0.8', |
||||
|
height: '250px', |
||||
|
width: '250px', |
||||
|
}, "slow"); |
||||
|
} |
||||
|
}); |
||||
|
}); |
||||
|
</script> |
||||
|
</template> |
||||
|
|
||||
|
</odoo> |
@ -0,0 +1,17 @@ |
|||||
|
<?xml version="1.0" encoding="utf-8"?> |
||||
|
<odoo> |
||||
|
|
||||
|
<record id="survey_user_input_line_form" model="ir.ui.view"> |
||||
|
<field name="name">survey_attachment survey.user_input_line form</field> |
||||
|
<field name="model">survey.user_input_line</field> |
||||
|
<field name="inherit_id" ref="survey.survey_user_input_line_form"/> |
||||
|
<field name="priority">20</field> |
||||
|
<field name="arch" type="xml"> |
||||
|
<xpath expr="//field[@name='answer_type']" position="after"> |
||||
|
<field name="file" filename="filename" attrs="{'invisible': [('answer_type','!=','upload_file')]}"/> |
||||
|
<field name="filename" invisible="1"/> |
||||
|
</xpath> |
||||
|
</field> |
||||
|
</record> |
||||
|
|
||||
|
</odoo> |
Write
Preview
Loading…
Cancel
Save
Reference in new issue