Browse Source

Final Commit for website_contract_extend

new file:   website_contact_extend/README.rst
	new file:   website_contact_extend/__init__.py
	new file:   website_contact_extend/__manifest__.py
	new file:   website_contact_extend/controllers/__init__.py
	new file:   website_contact_extend/controllers/contactby.py
	new file:   website_contact_extend/controllers/myfilter.py
	new file:   website_contact_extend/data/email_templates.xml
	new file:   website_contact_extend/i18n/de.po
	new file:   website_contact_extend/i18n/en_US.po
	new file:   website_contact_extend/models/__init__.py
	new file:   website_contact_extend/models/res_partner.py
	new file:   website_contact_extend/readme/CONFIGURE.rst
	new file:   website_contact_extend/readme/DESCRIPTION.rst
	new file:   website_contact_extend/readme/USAGE.rst
	new file:   website_contact_extend/static/description/icon.png
	new file:   website_contact_extend/static/description/index.html
	new file:   website_contact_extend/static/src/js/contactus.js
	new file:   website_contact_extend/views/contact_report.xml
	new file:   website_contact_extend/views/disp_msg_template.xml
	new file:   website_contact_extend/views/email_template.xml
	new file:   website_contact_extend/views/means_of_contact.xml
	new file:   website_contact_extend/views/res_partner.xml
	new file:   website_contact_extend/views/website_contact.xml
pull/36/head
Christopher Lorenz 5 years ago
parent
commit
04f0782696
  1. 74
      website_contact_extend/README.rst
  2. 4
      website_contact_extend/__init__.py
  3. 40
      website_contact_extend/__manifest__.py
  4. 4
      website_contact_extend/controllers/__init__.py
  5. 312
      website_contact_extend/controllers/contactby.py
  6. 346
      website_contact_extend/controllers/myfilter.py
  7. 74
      website_contact_extend/data/email_templates.xml
  8. 300
      website_contact_extend/i18n/de.po
  9. 412
      website_contact_extend/i18n/en_US.po
  10. 3
      website_contact_extend/models/__init__.py
  11. 38
      website_contact_extend/models/res_partner.py
  12. 1
      website_contact_extend/readme/CONFIGURE.rst
  13. 8
      website_contact_extend/readme/DESCRIPTION.rst
  14. 8
      website_contact_extend/readme/USAGE.rst
  15. BIN
      website_contact_extend/static/description/icon.png
  16. 172
      website_contact_extend/static/description/index.html
  17. 42
      website_contact_extend/static/src/js/contactus.js
  18. 164
      website_contact_extend/views/contact_report.xml
  19. 17
      website_contact_extend/views/disp_msg_template.xml
  20. 66
      website_contact_extend/views/email_template.xml
  21. 105
      website_contact_extend/views/means_of_contact.xml
  22. 22
      website_contact_extend/views/res_partner.xml
  23. 146
      website_contact_extend/views/website_contact.xml

74
website_contact_extend/README.rst

@ -0,0 +1,74 @@
======================
Website Contact Extend
======================
Extended Website Contact View to give Customer options on how to be
contacted in the future.
For email verification a verification link will be sent to the email address
entered in the contact view.
* contact mode fields will be added to the website contact view.
* Information requests can be submitted from the contact view
**Table of contents**
.. contents::
:local:
Usage
=====
Customer can verify his email address with a verification link.
The verification link is automatically sent to the email address
entered in the website contact view.
Following that the mode of future contact can be chosen and a GDPR
information request can be submitted.
A preliminary Report is also printable in the contacts view.
Known issues / Roadmap
======================
Bug Tracker
===========
Bugs are tracked on `GitHub Issues <https://github.com/OCA/web/issues>`_.
In case of trouble, please check there if your issue has already been reported.
Do not contact contributors directly about support or help with technical issues.
Credits
=======
Authors
~~~~~~~
* IT IS AG
Contributors
~~~~~~~~~~~~
* Dipak Suthar <dipaks@itis.de>
* Sven Hartmann <svenh@itis.de>
Maintainers
~~~~~~~~~~~
This module is maintained by the OCA.
.. image:: https://odoo-community.org/logo.png
:alt: Odoo Community Association
:target: https://odoo-community.org
OCA, or the Odoo Community Association, is a nonprofit organization whose
mission is to support the collaborative development of Odoo features and
promote its widespread use.
You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.

4
website_contact_extend/__init__.py

@ -0,0 +1,4 @@
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
from . import controllers
from . import models

40
website_contact_extend/__manifest__.py

@ -0,0 +1,40 @@
###################################################################
#
# IT IS AG, software solutions: http://www.itis.de
# License AGPL-3 - See http://www.gnu.org/licenses/agpl-3.0.html
#
###################################################################
{
'name': "Website Contact Form Extend",
'summary': "Extended Website Contact View",
'author': "IT IS AG, Odoo Community Association (OCA)",
'website': "https://github.com/OCA/data-protection",
# Categories can be used to filter modules in modules listing
# Check https://github.com/odoo/odoo/blob/master/openerp/
# addons/base/module/module_data.xml
# for the full list
'version': '12.0.1.0.0',
'license': 'AGPL-3',
'category': 'Data Protection',
'depends': ['base',
'contacts',
'website_crm',
'mail',
'contacts'
],
'data': [
'views/website_contact.xml',
'views/res_partner.xml',
'views/contact_report.xml',
'data/email_templates.xml',
'views/means_of_contact.xml',
'views/disp_msg_template.xml',
'views/email_template.xml'
# 'security/ir.model.access.csv',
],
}

4
website_contact_extend/controllers/__init__.py

@ -0,0 +1,4 @@
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
from . import myfilter
from . import contactby

312
website_contact_extend/controllers/contactby.py

@ -0,0 +1,312 @@
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
from odoo.addons.website_form.controllers import main as parent_controller
from odoo import http
from odoo.http import request
import base64
import json
link_data = {}
class ContactByController(http.Controller):
@http.route('/check_user_exists/', type='json', auth="public",
methods=['POST'], website=True, csrf=False)
def check_user_exists(self, email_from, company_name, **kwargs):
res_part_rec = request.env['res.partner'].sudo().search([
('email', '=', email_from),
('company_name', '=', company_name)])
res_part_email = request.env['res.partner'].sudo().search([
('email', '=', email_from)])
if len(res_part_rec) > 0 or len(res_part_rec) == 0 \
and len(res_part_email) > 0:
# if partner:
return True
return False
@http.route('/contact-us-form-review/',
type='http',
auth="public",
methods=['GET'],
website=True)
def contact_us_form_review(self, **kwargs):
# print(kwargs.get("data"))
# link_data =base64.b64decode(kwargs.get("data")).decode("utf-8") \
# print('FD')
# print(request.session['form_data'])
return http.request.render(
'website_contact_extend.review_form',
{'form_data': request.session['form_data'],
'form_data_dict': request.session['form_data_dict']})
@http.route('/contact_by/<string:data>',
type='http',
auth="public",
methods=['GET'],
website=True)
def contact_by(self, data, **kwargs):
global link_data
# print(kwargs.get("data"))
# link_data =base64.b64decode(kwargs.get("data")).decode("utf-8") \
link_data = data
return http.request.render('website_contact_extend.contactby_form')
# return "<center style='color:red'>You are at the right \
# place</center>"
@http.route('/contact_by_send/<string:model_name>',
type='http',
auth="public",
methods=['POST'],
website=True)
def contact_by_send(self, model_name, **kwargs):
global link_data
# form_contact_name = ""
model_record = request.env['ir.model'].sudo().search([
('model', '=', model_name),
('website_form_access', '=', True)
])
means_of_cont_dict = request.params
if 'letter_contact' in means_of_cont_dict:
letter_name = "True"
else:
letter_name = "False"
if 'email_contact' in means_of_cont_dict:
email_name = "True"
else:
email_name = "False"
if 'phone_contact' in means_of_cont_dict:
phone_name = "True"
else:
phone_name = "False"
if not model_record:
return json.dumps(False)
# print(link_data)
link_data_split = base64.b64decode(
link_data).decode("utf-8").split("####")
# print(link_data_split)
email = link_data_split[0]
contact_name = link_data_split[1]
partner = request.env['res.partner'].sudo().search([
('email', '=', email),
('name', '=', contact_name)
])
if not partner:
partner = request.env['res.partner'].sudo().create(
{'name': contact_name, 'email': email})
if partner:
for part in partner:
part.is_verified = True
part.last_updated = part.write_date
if email_name == "True":
part.email_contact = True
else:
part.email_contact = False
if phone_name == "True":
part.phone_contact = True
else:
part.phone_contact = False
if letter_name == "True":
part.letter_contact = True
else:
part.letter_contact = False
request.session['form_builder_model_model'] = model_record.model
request.session['form_builder_model'] = model_record.name
request.session['form_builder_id'] = partner[0].id
return json.dumps({'id': partner[0].id})
# return http.request.render('website_contact_extend.\
# disp_msg_template', {'message_success': \
# 'Means of contact changed!'})
# return "<p style='color: green'>Means of contact changed!</p>"
# else:
# return http.request.render('website_contact_extend.\
# disp_msg_template', {'message_failure': \
# 'Could not change your means of contact. \
# Please request a new link'})
# return "<p style='color: red'>Could not change your means\
# of contact. Please request a new link</p>"
class FormReview(parent_controller.WebsiteForm):
@http.route('/form_review_send/<string:model_name>',
type='http',
auth="public",
methods=['POST'],
website=True)
def form_review_send(self, model_name, **kwargs):
# model_name = 'crm.lead'
res_partner_data = request.session['form_data_dict']
model_record = request.env['ir.model'].sudo().search([
('model', '=', model_name),
('website_form_access', '=', True)
])
res_part_rec = request.env['res.partner'].sudo().search([
('email', '=', res_partner_data['email_from']),
('company_name', '=', res_partner_data['partner_name'])])
res_part_email = request.env['res.partner'].sudo().search([
('email', '=', res_partner_data['email_from'])], limit=1)
# if len(res_part_rec) == 0 and res_part_email:
# print('Company change detected!')
id_record = self.insert_record(
request,
model_record,
res_partner_data,
'',
''
)
if len(res_part_email) > 0 and len(res_part_rec) == 0 and \
res_part_email[0].is_verified is True:
res_cat = request.env['res.partner.category'].search(
[('name', '=', 'New')])
cat_id = 0
if len(res_cat) == 0:
id_part_res_cat = self.insert_record(
request,
request.env['ir.model'].search(
[('model', '=', 'res.partner.category')]),
{'name': 'New', 'create_uid': request.env.uid},
'',
''
)
cat_id = id_part_res_cat
else:
cat_id = res_cat[0].id
res_partner_dict = {}
res_partner_dict['name'] = res_partner_data['contact_name']
res_partner_dict['display_name'] = res_partner_data['contact_name']
res_partner_dict['email'] = res_partner_data['email_from']
res_partner_dict['company_name'] = res_partner_data['partner_name']
res_partner_dict['category_id'] = [[6, False, [cat_id]]]
# res_partner_dict['parent_id'] = res_part_email[0].id
if 'phone' in res_partner_data:
res_partner_dict['phone'] = res_partner_data['phone']
update_parent_partner = request.env['res.partner'].sudo().search([
('id', '=', res_part_email[0].id)])
if update_parent_partner and len(update_parent_partner) > 0:
update_parent_partner[0].category_id = False
update_parent_partner_comp = \
request.env['res.partner'].sudo().search([
('id', '=', res_part_email[0].parent_id.id)])
if update_parent_partner_comp and \
len(update_parent_partner_comp) > 0:
update_parent_partner_comp[0].category_id = False
res_partner_company_dict = res_partner_dict.copy()
res_partner_company_dict.pop('email')
res_partner_company_dict.pop('company_name')
# res_partner_company_dict.pop('parent_id')
if 'phone' in res_partner_company_dict:
res_partner_company_dict.pop('phone')
res_partner_company_dict['name'] = res_partner_data['partner_name']
res_partner_company_dict['display_name'] = \
res_partner_data['partner_name']
res_partner_company_dict['customer'] = False
res_partner_company_dict['is_company'] = True
res_partner_company_dict['company_type'] = 'company'
# res_partner_dict['parent_id'] = id_record_res_company
id_record_res = self.insert_record(
request,
request.env['ir.model'].search(
[('model', '=', 'res.partner')]),
res_partner_dict,
'',
''
)
res_partner_company_dict['child_ids'] = [
[6, 'virtual_1798', [id_record_res]]]
# id_record_res_company = self.insert_record(
self.insert_record(
request,
request.env['ir.model'].search(
[('model', '=', 'res.partner')]),
res_partner_company_dict,
'',
''
)
if update_parent_partner and len(update_parent_partner) > 0:
update_parent_partner[0].child_ids = [
[6, 'virtual_1798', [id_record_res]]]
id_record = self.insert_record(
request,
model_record,
res_partner_data,
'',
''
)
if id_record:
self.insert_attachment(
model_record,
id_record,
''
)
if id_record and model_name == "crm.lead":
crm_lead_obj = request.env['crm.lead'].sudo().search([
('id', '=', id_record)]
)
email_data = crm_lead_obj.email_from + "####" +\
crm_lead_obj.contact_name + "####" +\
str('') + "####" +\
str('') + "####" +\
str('')+"####" + \
str(res_partner_data['send_mail']) + "####" + \
str(res_partner_data['request_gdpdr']) + "####" + \
str(id_record) + "####" + \
str(crm_lead_obj.create_date)
ency_email = base64.b64encode(email_data.encode()).decode(
"utf-8"
)
action_url = '%s/verify_email/?data=%s' % (
request.env['ir.config_parameter'].
sudo().get_param('web.base.url'),
ency_email,
)
if crm_lead_obj:
crm_lead_obj.email_link = action_url
request.env.ref(
'website_contact_extend.verification_email_template'
).sudo().send_mail(id_record)
request.env.ref('website_contact_extend.\
email_template_onchange_data').sudo(
).send_mail(id_record)
request.session['form_builder_model_model'] = model_record.model
request.session['form_builder_model'] = model_record.name
request.session['form_builder_id'] = id_record
return json.dumps({'id': id_record})

346
website_contact_extend/controllers/myfilter.py

@ -0,0 +1,346 @@
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
from odoo.addons.website_form.controllers import main as parent_controller
from odoo import http
from odoo.http import request
from odoo.exceptions import ValidationError
from psycopg2 import IntegrityError
import base64
import json
class VerifyController(http.Controller):
@http.route('/verify_email',
type='http',
auth="public",
methods=['GET'],
website=True)
def verify_email(self, **kwargs):
if kwargs:
contact_url = '%s/contact_by/%s' % (
request.env['ir.config_parameter'].
sudo().get_param('web.base.url'),
kwargs.get("data"))
link_data = base64.b64decode(kwargs.get("data")).decode("utf-8")\
.split("####")
email = link_data[0]
contact_name = link_data[1]
email_name = link_data[2]
phone_name = link_data[3]
letter_name = link_data[4]
personal_data = link_data[5]
request_gdpdr = link_data[6]
crm_id = link_data[7]
link_date = link_data[8]
link_date = link_date.split(" ")[0].replace("-", "")
import datetime
today = datetime.date.today()
link = datetime.datetime.strptime(link_date, "%Y%m%d").date()
diff = today - link
if diff.days > 5 or diff.days < 0:
return "<center style='color:red'>Not valid!<br/>"\
"The link you entered is either not valid or expired."\
"<br/>Please request a new link.</center>"
partner = request.env['res.partner'].sudo().search([
('email', '=', email),
('name', '=', contact_name)
])
if not partner:
partner = request.env['res.partner'].sudo().create(
{'name': contact_name, 'email': email})
if partner:
for part in partner:
part.is_verified = True
part.last_updated = part.write_date
if email_name == "True":
part.email_contact = True
else:
part.email_contact = False
if phone_name == "True":
part.phone_contact = True
else:
part.phone_contact = False
if letter_name == "True":
part.letter_contact = True
else:
part.letter_contact = False
request.env.ref(
'website_contact_extend.confirmation_email_template'
).sudo().send_mail(part.id)
page_render_html = "<center style='color:green'>"\
"Thank You! Your email address has been verified!"\
"</center>"
# print(request_gdpdr)
if request_gdpdr == "True":
# print("Hit")
page_render_html = page_render_html + "<br/>"\
"<div style='text-align: center'>"\
"Click <a href='" + contact_url + \
"'>here</a> to choose how you"\
" want to be contacted</div>"
if personal_data == "True":
request.env.ref(
'website_contact_extend.\
email_template_information_request'
).sudo().send_mail(int(crm_id))
request.env.ref(
'website_contact_extend.requested_info_email_template'
).sudo().send_mail(int(crm_id))
return page_render_html
else:
return "<center style='color:red'>Not valid!<br/>"\
"The link you entered is either not valid or expired."\
"<br/>Please request a new link.</center>"
class MyFilter(parent_controller.WebsiteForm):
@http.route('/website_form/<string:model_name>',
type='http',
auth="public",
methods=['POST'],
website=True)
def website_form(self, model_name, **kwargs):
model_record = request.env['ir.model'].sudo().search([
('model', '=', model_name),
('website_form_access', '=', True)
])
request.session['review_form'] = ""
request.session['form_data'] = ""
request.session['form_data_dict'] = ""
# request.clear_caches()
if not model_record:
return json.dumps(False)
# need_send_email = False
try:
data = self.extract_data(model_record, request.params)
# contact_type = False
phone_contact = False
letter_contact = False
email_contact = False
send_mail = False
request_gdpdr = False
index = 0
for field_name, field_value in request.params.items():
# if field_name == "contact_type":
# contact_type = field_value
if field_name == "send_mail" and field_value == "send_mail":
send_mail = True
if field_name == "phone_contact" \
and field_value == "phone_contact":
phone_contact = True
if field_name == "letter_contact" \
and field_value == "letter_contact":
letter_contact = True
if field_name == "email_contact" \
and field_value == "email_contact":
email_contact = True
if field_name == "send_mail" \
and field_value == "send_mail":
send_mail = True
index += 1
# contact_name = data.get("record").get("contact_name")
# email_from = data.get("record").get("email_from")
# If we encounter an issue while extracting data
except ValidationError as e:
# I couldn't find a cleaner way to pass data to an exception
return json.dumps({'error_fields': e.args[0]})
res_partner_data = data['record']
try:
# contact_name = data.get("record").get("contact_name")
email = data.get("record").get("email_from")
company = data.get("record").get("partner_name")
res_part_rec = request.env['res.partner'].sudo().search([
('email', '=', email),
('company_name', '=', company)])
# ('name', '=', contact_name)])
# ('company_name', '=', company)
res_part_email = request.env['res.partner'].sudo().search([
('email', '=', email)])
if len(res_part_rec) > 0 or len(res_part_rec) == 0 \
and len(res_part_email) > 0:
request.session['review_form'] = "/contact-us-form-review"
for chkbx_val_out in data['custom'].split('\n'):
if chkbx_val_out != '':
for chkbx_val_in in chkbx_val_out.split(':'):
if chkbx_val_in.strip() == "request_gdpdr":
request_gdpdr = True
break
id_record = res_part_email[0].id
rec_form = data.get('record')
# if 'phone' not in data.get('record'):
# rec_form['phone'] = ""
lst_form_rec = []
lst_form_rec.append(rec_form['email_from'])
lst_form_rec.append(rec_form['name'])
lst_form_rec.append(rec_form['partner_name'])
lst_form_rec.append(rec_form['medium_id'])
lst_form_rec.append(rec_form['contact_name'])
lst_form_rec.append(rec_form['team_id'])
lst_form_rec.append(rec_form['description'])
lst_form_rec.append(rec_form['user_id'])
lst_form_rec.append(request_gdpdr)
lst_form_rec.append(send_mail)
rec_form['send_mail'] = send_mail
rec_form['request_gdpdr'] = request_gdpdr
if 'phone' in rec_form:
lst_form_rec.append(rec_form['phone'])
else:
lst_form_rec.append('')
request.session['form_data'] = lst_form_rec
request.session['form_data_dict'] = rec_form
# Some fields have additional SQL constraints
# that we can't check generically
# Ex: crm.lead.probability which is a float between 0 and 1
# TODO: How to get the name of the erroneous field ?
else:
# code for adding new customer
request.session['review_form'] = "/contactus-thank-you"
res_cat = request.env['res.partner.category'].search(
[('name', '=', 'New')])
cat_id = 0
if len(res_cat) == 0:
id_part_res_cat = self.insert_record(
request,
request.env['ir.model'].search(
[('model', '=', 'res.partner.category')]),
{'name': 'New', 'create_uid': request.env.uid},
'',
''
)
cat_id = id_part_res_cat
else:
cat_id = res_cat[0].id
res_partner_dict = {}
# if 'phone' not in res_partner_data:
# res_partner_data['phone'] = ""
res_partner_dict['name'] = res_partner_data['contact_name']
res_partner_dict['display_name'] = \
res_partner_data['contact_name']
res_partner_dict['email'] = res_partner_data['email_from']
if 'phone' in res_partner_data:
res_partner_dict['phone'] = res_partner_data['phone']
res_partner_dict['company_name'] = \
res_partner_data['partner_name']
res_partner_dict['category_id'] = [[6, False, [cat_id]]]
res_partner_company_dict = res_partner_dict.copy()
res_partner_company_dict.pop('email')
res_partner_company_dict.pop('company_name')
if 'phone' in res_partner_company_dict:
res_partner_company_dict.pop('phone')
res_partner_company_dict['name'] = \
res_partner_data['partner_name']
res_partner_company_dict['display_name'] = \
res_partner_data['partner_name']
res_partner_company_dict['customer'] = False
res_partner_company_dict['is_company'] = True
res_partner_company_dict['company_type'] = 'company'
id_record_res_company = self.insert_record(
request,
request.env['ir.model'].search(
[('model', '=', 'res.partner')]),
res_partner_company_dict,
'',
data.get('meta')
)
res_partner_dict['parent_id'] = id_record_res_company
self.insert_record(
request,
request.env['ir.model'].search(
[('model', '=', 'res.partner')]),
res_partner_dict,
'',
data.get('meta')
)
id_record = self.insert_record(
request,
model_record,
data['record'],
data['custom'],
data.get('meta')
)
if id_record:
self.insert_attachment(
model_record,
id_record,
data['attachments']
)
for chkbx_val_out in data['custom'].split('\n'):
if chkbx_val_out != '':
for chkbx_val_in in chkbx_val_out.split(':'):
if chkbx_val_in.strip() == "request_gdpdr":
request_gdpdr = True
break
# if request_gdpdr == True:
if request_gdpdr is True or send_mail is True:
if id_record and model_name == "crm.lead":
crm_lead_obj = request.env['crm.lead'].sudo().search([
('id', '=', id_record)]
)
email_data = crm_lead_obj.email_from + "####" + \
crm_lead_obj.contact_name + "####" + \
str(email_contact) + "####" + \
str(phone_contact) + "####" + \
str(letter_contact) + "####" + \
str(send_mail) + "####" + \
str(request_gdpdr) + "####" + \
str(id_record) + "####" + \
str(crm_lead_obj.create_date)
ency_email = base64.b64encode(email_data.encode())\
.decode("utf-8")
action_url = '%s/verify_email/?data=%s' % (
request.env['ir.config_parameter'].
sudo().get_param('web.base.url'),
ency_email,
)
if crm_lead_obj:
crm_lead_obj.email_link = action_url
request.env.ref(
'website_contact_extend.\
verification_email_template'
).sudo().send_mail(id_record)
except IntegrityError:
return json.dumps(False)
request.session['form_builder_model_model'] = model_record.model
request.session['form_builder_model'] = model_record.name
request.session['form_builder_id'] = id_record
return json.dumps({'id': id_record})

74
website_contact_extend/data/email_templates.xml

@ -0,0 +1,74 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<record id="verification_email_template" model="mail.template">
<field name="name">Email verification link</field>
<field name="subject">mail verification link</field>
<field name="email_to">${(not object.partner_id and object.email_from)|safe}</field>
<field name="model_id" ref="crm.model_crm_lead"/>
<field name="auto_delete" eval="True"/>
<field name="body_html"><![CDATA[
<p>
% if object.partner_id
Dear <strong>${object.partner_id.name}</strong>,<br/>
% endif
% if not object.partner_id
Dear <strong>${object.email_from}</strong>,<br/>
% endif
Please click on below link to verify your email address <strong>${object.email_link}</strong>.<br/>
Thank you.
</p>
]]>
</field>
</record>
<record id="confirmation_email_template" model="mail.template">
<field name="name">Email confirmation</field>
<field name="subject">Verified Email</field>
<field name="email_to">${user.email|safe}</field>
<field name="model_id" ref="base.model_res_partner"/>
<field name="auto_delete" eval="True"/>
<field name="body_html"><![CDATA[
<p>
Dear <strong>${user.partner_id.name}</strong>,<br/>
This email address <strong> ${object.email}</strong> has been verified by user.<br/>
Thank you.
</p>
]]>
</field>
</record>
<record id="requested_info_email_template" model="mail.template">
<field name="name">Requested Information</field>
<field name="subject">Requested Information</field>
<field name="email_to">${object.email_from|safe}</field>
<field name="model_id" ref="crm.model_crm_lead"/>
<field name="auto_delete" eval="True"/>
<field name="body_html"><![CDATA[
<p>
Dear <strong>${object.contact_name}</strong>,<br/><br/>
Thank you very much for your contact. Your request:
<table class="table">
<tbody>
<tr>
<td><strong>Subject</strong></td><td>${object.name}</td>
</tr>
<tr>
<td><strong>Question</strong></td><td>${object.description[:-50]}</td>
</tr>
<tr>We will come back to you shortly.</tr>
</tbody>
</table>
<br/><br/>
Thank you.
</p>
]]>
</field>
</record>
</odoo>

300
website_contact_extend/i18n/de.po

@ -0,0 +1,300 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * website_contact_extend
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 11.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2018-07-02 12:18+0000\n"
"PO-Revision-Date: 2018-07-02 12:18+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: website_contact_extend
#: model:mail.template,body_html:website_contact_extend.verification_email_template
msgid "\n"
" <p>\n"
" % if object.partner_id\n"
" Dear <strong>${object.partner_id.name}</strong>,<br/>\n"
" % endif\n"
" % if not object.partner_id\n"
" Dear <strong>${object.email_from}</strong>,<br/>\n"
" % endif\n"
"\n"
" Please click on below link to verify your email address <strong>${object.email_link}</strong>.<br/>\n"
"\n"
" Thank you.\n"
" </p>\n"
" \n"
" "
msgstr "\n"
" <p>\n"
" % if object.partner_id\n"
" Dear <strong>${object.partner_id.name}</strong>,<br/>\n"
" % endif\n"
" % if not object.partner_id\n"
" Dear <strong>${object.email_from}</strong>,<br/>\n"
" % endif\n"
"\n"
" Please click on below link to verify your email address <strong>${object.email_link}</strong>.<br/>\n"
"\n"
" Thank you.\n"
" </p>\n"
" \n"
" "
#. module: website_contact_extend
#: model:mail.template,body_html:website_contact_extend.confirmation_email_template
msgid "\n"
" <p>\n"
" Dear <strong>${user.partner_id.name}</strong>,<br/>\n"
"\n"
" This email address <strong> ${object.email}</strong> has been verified by user.<br/>\n"
"\n"
" Thank you.\n"
" </p>\n"
" \n"
" "
msgstr "\n"
" <p>\n"
" Dear <strong>${user.partner_id.name}</strong>,<br/>\n"
"\n"
" This email address <strong> ${object.email}</strong> has been verified by user.<br/>\n"
"\n"
" Thank you.\n"
" </p>\n"
" \n"
" "
#. module: website_contact_extend
#: model:ir.ui.view,arch_db:website_contact_extend.report_contact_document
msgid "(2) <span class=\"T2\">□ </span><span class=\"T7\">Die </span>personenbezogene Daten <span class=\"T7\">werden nicht </span>an ein Drittland oder an eine internationale Organisation übermittelt"
msgstr "(2) <span class=\"T2\">□ </span><span class=\"T7\">Die </span>personenbezogene Daten <span class=\"T7\">werden nicht </span>an ein Drittland oder an eine internationale Organisation übermittelt"
#. module: website_contact_extend
#: model:ir.ui.view,arch_db:website_contact_extend.report_contact_document
msgid "(3) Der Verantwortliche stellt eine Kopie der personenbezogenen Daten, die Gegenstand der Verarbeitung sind, zur Verfügung:"
msgstr "(3) Der Verantwortliche stellt eine Kopie der personenbezogenen Daten, die Gegenstand der Verarbeitung sind, zur Verfügung:"
#. module: website_contact_extend
#: model:ir.ui.view,arch_db:website_contact_extend.report_contact_document
msgid "(4) Das Recht auf Erhalt einer Kopie gemäß Absatz 3 darf die Rechte und Freiheiten anderer<br/>Personen nicht beeinträchtigen."
msgstr "(4) Das Recht auf Erhalt einer Kopie gemäß Absatz 3 darf die Rechte und Freiheiten anderer<br/>Personen nicht beeinträchtigen."
#. module: website_contact_extend
#: model:ir.ui.view,arch_db:website_contact_extend.report_contact_document
msgid "<span class=\"T2\"> □ </span><span class=\"T1\">bis zum __. __. ____</span> <span> <span class=\"T1\"> </span><span class=\"T2\">□ Bis zu ____ Jahre □ </span><span class=\"T3\">Gesetzl. Aufbewahrungfrist</span></span>"
msgstr "<span class=\"T2\"> □ </span><span class=\"T1\">bis zum __. __. ____</span> <span> <span class=\"T1\"> </span><span class=\"T2\">□ Bis zu ____ Jahre □ </span><span class=\"T3\">Gesetzl. Aufbewahrungfrist</span></span>"
#. module: website_contact_extend
#: model:ir.ui.view,arch_db:website_contact_extend.report_contact_document
msgid "<span class=\"T2\">oder □ </span>Widerspruchsrecht gegen diese Verarbeitung <span class=\"T1\">besteht</span>;"
msgstr "<span class=\"T2\">oder □ </span>Widerspruchsrecht gegen diese Verarbeitung <span class=\"T1\">besteht</span>;"
#. module: website_contact_extend
#: model:ir.ui.view,arch_db:website_contact_extend.report_contact_document
msgid "<span class=\"T2\">□ </span><span class=\"T4\">Wenn doch: Die Daten werden</span><span class=\"T7\"> nach folgender Art ausgewertet und gruppiert _______________ </span>"
msgstr "<span class=\"T2\">□ </span><span class=\"T4\">Wenn doch: Die Daten werden</span><span class=\"T7\"> nach folgender Art ausgewertet und gruppiert _______________ </span>"
#. module: website_contact_extend
#: model:ir.ui.view,arch_db:website_contact_extend.report_contact_document
msgid "<span class=\"T6\">Grund</span><span> <span class=\"T2\">□ Kontakt ____ mal nicht erreicht □ Systemwechsel </span></span>"
msgstr "<span class=\"T6\">Grund</span><span> <span class=\"T2\">□ Kontakt ____ mal nicht erreicht □ Systemwechsel </span></span>"
#. module: website_contact_extend
#: model:ir.ui.view,arch_db:website_contact_extend.report_contact_document
msgid "Adresse:"
msgstr "Adresse:"
#. module: website_contact_extend
#: model:ir.ui.view,arch_db:website_contact_extend.report_contact_document
msgid "Auskunft für:"
msgstr "Auskunft für:"
#. module: website_contact_extend
#: model:ir.ui.view,arch_db:website_contact_extend.report_contact_document
msgid "Auskunft n<span class=\"T1\">ach Artikel 15 DS-GVO</span>"
msgstr "Auskunft n<span class=\"T1\">ach Artikel 15 DS-GVO</span>"
#. module: website_contact_extend
#: model:ir.ui.view,arch_db:website_contact_extend.report_contact_document
msgid "Auskunftsgeber:"
msgstr "Auskunftsgeber:"
#. module: website_contact_extend
#: model:ir.model,name:website_contact_extend.model_res_partner
msgid "Contact"
msgstr "Kontakt"
#. module: website_contact_extend
#: model:ir.actions.report,name:website_contact_extend.report_contact
msgid "Contact Report"
msgstr "Kontakt Report"
#. module: website_contact_extend
#: model:ir.model.fields,field_description:website_contact_extend.field_res_partner_contact_type
#: model:ir.model.fields,field_description:website_contact_extend.field_res_users_contact_type
msgid "Contact Type"
msgstr "Art des Kontakts"
#. module: website_contact_extend
#: model:ir.ui.view,arch_db:website_contact_extend.contactus_form_inherited
msgid "Contact by E-Mail"
msgstr "Kontakt per E-Mail"
#. module: website_contact_extend
#: model:ir.ui.view,arch_db:website_contact_extend.contactus_form_inherited
msgid "Contact by Letter"
msgstr "Kontakt per Post"
#. module: website_contact_extend
#: model:ir.ui.view,arch_db:website_contact_extend.contactus_form_inherited
msgid "Contact by Phone"
msgstr "Kontakt per Telefon"
#. module: website_contact_extend
#: model:ir.ui.view,arch_db:website_contact_extend.report_contact_document
msgid "Die betroffene Person hat das Recht, von dem Verantwortlichen eine Bestätigung darüber zu verlangen, ob sie betreffende personenbezogene Daten verarbeitet werden; ist dies der Fall, so hat sie ein Recht auf Auskunft über diese personenbezogenen Daten und auf folgende Informationen:"
msgstr "Die betroffene Person hat das Recht, von dem Verantwortlichen eine Bestätigung darüber zu verlangen, ob sie betreffende personenbezogene Daten verarbeitet werden; ist dies der Fall, so hat sie ein Recht auf Auskunft über diese personenbezogenen Daten und auf folgende Informationen:"
#. module: website_contact_extend
#: model:ir.model.fields,field_description:website_contact_extend.field_res_partner_email_contact
#: model:ir.model.fields,field_description:website_contact_extend.field_res_users_email_contact
msgid "Email Contact"
msgstr "Email Kontakt"
#. module: website_contact_extend
#: model:ir.model.fields,field_description:website_contact_extend.field_crm_lead_email_link
msgid "Email verification link"
msgstr "Email verifikations Link"
#. module: website_contact_extend
#: model:ir.ui.view,arch_db:website_contact_extend.report_contact_document
msgid "Email:"
msgstr "E-Mail:"
#. module: website_contact_extend
#: selection:res.partner,contact_type:0
msgid "I do not want to be contacted."
msgstr "Ich möchte nicht kontaktiert werden."
#. module: website_contact_extend
#: selection:res.partner,contact_type:0
msgid "I only want to be contacted by Email."
msgstr "Ich möchte nur per Email kontaktiert werden."
#. module: website_contact_extend
#: selection:res.partner,contact_type:0
msgid "I only want to be contacted by Phone."
msgstr "Ich möchte nur per Telefon kontaktiert werden."
#. module: website_contact_extend
#: model:ir.ui.view,arch_db:website_contact_extend.contactus_form_inherited
msgid "In the future I want to be contacted by"
msgstr "In Zukunft möchte ich nur kontaktiert werden durch:"
#. module: website_contact_extend
#: model:ir.ui.view,arch_db:website_contact_extend.contactus_form_inherited
msgid "Information request concerning data about the personally"
msgstr "Persönliche Informationsauskunft:"
#. module: website_contact_extend
#: model:ir.model,name:website_contact_extend.model_crm_lead
msgid "Lead/Opportunity"
msgstr "Interessent / Chance"
#. module: website_contact_extend
#: model:ir.model.fields,field_description:website_contact_extend.field_res_partner_letter_contact
#: model:ir.model.fields,field_description:website_contact_extend.field_res_users_letter_contact
msgid "Letter Contact"
msgstr "Brief Kontakt"
#. module: website_contact_extend
#: model:ir.model.fields,field_description:website_contact_extend.field_res_partner_last_updated
#: model:ir.model.fields,field_description:website_contact_extend.field_res_users_last_updated
msgid "Letzte Aktualisierung"
msgstr "Letzte Aktualisierung"
#. module: website_contact_extend
#: model:ir.ui.view,arch_db:website_contact_extend.report_contact_document
msgid "Name:"
msgstr "Name:"
#. module: website_contact_extend
#: model:ir.model.fields,field_description:website_contact_extend.field_res_partner_phone_contact
#: model:ir.model.fields,field_description:website_contact_extend.field_res_users_phone_contact
msgid "Phone Contact"
msgstr "Telefon Kontakt"
#. module: website_contact_extend
#: model:ir.ui.view,arch_db:website_contact_extend.report_contact_document
msgid "Phone:"
msgstr "Telefon:"
#. module: website_contact_extend
#: model:ir.model.fields,field_description:website_contact_extend.field_res_partner_is_verified
#: model:mail.template,subject:website_contact_extend.confirmation_email_template
msgid "Verified Email"
msgstr "Verifizierte Email"
#. module: website_contact_extend
#: model:ir.model.fields,help:website_contact_extend.field_res_partner_contact_type
#: model:ir.model.fields,help:website_contact_extend.field_res_users_contact_type
msgid "Which way user want to be contacted."
msgstr "Art der Kontaktierung"
#. module: website_contact_extend
#: selection:res.partner,contact_type:0
msgid "You can contact me by Email or Phone."
msgstr "Ich kann per Email oder Telefon kontaktiert werden."
#. module: website_contact_extend
#: model:ir.ui.view,arch_db:website_contact_extend.report_contact_document
msgid "a) <span class=\"T1\">d</span>ie Verarbeitungszwecke:<span class=\"T1\"> </span><span class=\"T2\">□ </span><span class=\"T1\">Kontaktaufnahme; </span><span class=\"T2\">□ </span><span class=\"T3\">Geschäftsvorgänge</span><span class=\"T1\">; </span><span class=\"T2\">□ </span><span class=\"T3\">S</span><span class=\"T1\">onstiges; </span>"
msgstr "a) <span class=\"T1\">d</span>ie Verarbeitungszwecke:<span class=\"T1\"> </span><span class=\"T2\">□ </span><span class=\"T1\">Kontaktaufnahme; </span><span class=\"T2\">□ </span><span class=\"T3\">Geschäftsvorgänge</span><span class=\"T1\">; </span><span class=\"T2\">□ </span><span class=\"T3\">S</span><span class=\"T1\">onstiges; </span>"
#. module: website_contact_extend
#: model:ir.ui.view,arch_db:website_contact_extend.report_contact_document
msgid "b) die Kategorien personenbezogener Daten, die verarbeitet werden: <span class=\"T1\"> <br/></span><span class=\"T2\">□ </span><span class=\"T1\">Kundendaten, </span><span class=\"T2\">□ </span><span class=\"T1\">Lieferantendaten, </span><span class=\"T2\">□ </span><span class=\"T1\">Interessentendaten, </span><span class=\"T2\">□ </span><span class=\"T1\">Personaldaten</span>"
msgstr "b) die Kategorien personenbezogener Daten, die verarbeitet werden: <span class=\"T1\"> <br/></span><span class=\"T2\">□ </span><span class=\"T1\">Kundendaten, </span><span class=\"T2\">□ </span><span class=\"T1\">Lieferantendaten, </span><span class=\"T2\">□ </span><span class=\"T1\">Interessentendaten, </span><span class=\"T2\">□ </span><span class=\"T1\">Personaldaten</span>"
#. module: website_contact_extend
#: model:ir.ui.view,arch_db:website_contact_extend.report_contact_document
msgid "c) die Empfänger oder Kategorien von Empfängern, gegenüber denen die personenbezogenen Daten offengelegt worden sind oder noch offengelegt werden, insbesondere bei Empfängern in Drittländern oder bei internationalen Organisationen: <span class=\"T1\"> </span><span class=\"T2\">□ </span>_______________________________<br/> <span class=\"T6\">oder</span> <span class=\"T1\"> </span><span class=\"T2\">□ </span><span class=\"T3\">keine</span><span class=\"T1\"> Offenlegung gegenüber Dritten beabsichtigt, </span><span class=\"T2\">□ </span><span class=\"T1\">Nicht bekannt</span>"
msgstr "c) die Empfänger oder Kategorien von Empfängern, gegenüber denen die personenbezogenen Daten offengelegt worden sind oder noch offengelegt werden, insbesondere bei Empfängern in Drittländern oder bei internationalen Organisationen: <span class=\"T1\"> </span><span class=\"T2\">□ </span>_______________________________<br/> <span class=\"T6\">oder</span> <span class=\"T1\"> </span><span class=\"T2\">□ </span><span class=\"T3\">keine</span><span class=\"T1\"> Offenlegung gegenüber Dritten beabsichtigt, </span><span class=\"T2\">□ </span><span class=\"T1\">Nicht bekannt</span>"
#. module: website_contact_extend
#: model:ir.ui.view,arch_db:website_contact_extend.report_contact_document
msgid "d) geplante Dauer, für die die personenbezogenen Daten gespeichert werden: <span class=\"T1\"> </span>"
msgstr "d) geplante Dauer, für die die personenbezogenen Daten gespeichert werden: <span class=\"T1\"> </span>"
#. module: website_contact_extend
#: model:ir.ui.view,arch_db:website_contact_extend.report_contact_document
msgid "e) <span> <span class=\"T2\">□ </span>Recht auf Berichtigung oder Löschung der betreffenden personenbezogenen Daten <span class=\"T1\">besteht oder </span><span class=\"T2\">□ </span>Einschränkung der Verarbeitung durch den Verantwortlichen </span>"
msgstr "e) <span> <span class=\"T2\">□ </span>Recht auf Berichtigung oder Löschung der betreffenden personenbezogenen Daten <span class=\"T1\">besteht oder </span><span class=\"T2\">□ </span>Einschränkung der Verarbeitung durch den Verantwortlichen </span>"
#. module: website_contact_extend
#: model:ir.ui.view,arch_db:website_contact_extend.report_contact_document
msgid "f) <span> <span class=\"T2\">□ </span>das Bestehen eines Beschwerderechts bei einer Aufsichtsbehörde <span class=\"T5\">besteht</span></span>"
msgstr "f) <span> <span class=\"T2\">□ </span>das Bestehen eines Beschwerderechts bei einer Aufsichtsbehörde <span class=\"T5\">besteht</span></span>"
#. module: website_contact_extend
#: model:ir.ui.view,arch_db:website_contact_extend.report_contact_document
msgid "g) die Herkunft der Daten <span class=\"T7\">ist von </span><span class=\"T2\">□ </span><span class=\"T4\">eigener Recherche, </span><span class=\"T2\">□ </span><span class=\"T4\">Auskunftei</span>"
msgstr "g) die Herkunft der Daten <span class=\"T7\">ist von </span><span class=\"T2\">□ </span><span class=\"T4\">eigener Recherche, </span><span class=\"T2\">□ </span><span class=\"T4\">Auskunftei</span>"
#. module: website_contact_extend
#: model:ir.ui.view,arch_db:website_contact_extend.report_contact_document
msgid "h) <span class=\"T2\">□ </span>eine automatisierte Entscheidungsfindung <span class=\"T7\">mit diesen Daten findet nicht statt. </span>"
msgstr "h) <span class=\"T2\">□ </span>eine automatisierte Entscheidungsfindung <span class=\"T7\">mit diesen Daten findet nicht statt. </span>"
#. module: website_contact_extend
#: model:mail.template,subject:website_contact_extend.verification_email_template
msgid "mail verification link"
msgstr "mail verification link"

412
website_contact_extend/i18n/en_US.po

@ -0,0 +1,412 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * website_contact_extend
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 11.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2018-07-02 12:18+0000\n"
"PO-Revision-Date: 2018-07-02 14:26+0100\n"
"Last-Translator: <>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Poedit 1.5.4\n"
"Language: en_US\n"
#. module: website_contact_extend
#: model:mail.template,body_html:website_contact_extend.verification_email_template
msgid ""
"\n"
" <p>\n"
" % if object.partner_id\n"
" Dear <strong>${object.partner_id.name}</strong>,<br/>\n"
" % endif\n"
" % if not object.partner_id\n"
" Dear <strong>${object.email_from}</strong>,<br/>\n"
" % endif\n"
"\n"
" Please click on below link to verify your email address <strong>"
"${object.email_link}</strong>.<br/>\n"
"\n"
" Thank you.\n"
" </p>\n"
" \n"
" "
msgstr ""
"\n"
" <p>\n"
" % if object.partner_id\n"
" Dear <strong>${object.partner_id.name}</strong>,<br/>\n"
" % endif\n"
" % if not object.partner_id\n"
" Dear <strong>${object.email_from}</strong>,<br/>\n"
" % endif\n"
"\n"
" Please click on below link to verify your email address <strong>"
"${object.email_link}</strong>.<br/>\n"
"\n"
" Thank you.\n"
" </p>\n"
" \n"
" "
#. module: website_contact_extend
#: model:mail.template,body_html:website_contact_extend.confirmation_email_template
msgid ""
"\n"
" <p>\n"
" Dear <strong>${user.partner_id.name}</strong>,<br/>\n"
"\n"
" This email address <strong> ${object.email}</strong> has been "
"verified by user.<br/>\n"
"\n"
" Thank you.\n"
" </p>\n"
" \n"
" "
msgstr ""
"\n"
" <p>\n"
" Dear <strong>${user.partner_id.name}</strong>,<br/>\n"
"\n"
" This email address <strong> ${object.email}</strong> has been "
"verified by user.<br/>\n"
"\n"
" Thank you.\n"
" </p>\n"
" \n"
" "
#. module: website_contact_extend
#: model:ir.ui.view,arch_db:website_contact_extend.report_contact_document
msgid ""
"(2) <span class=\"T2\">□ </span><span class=\"T7\">Die </"
"span>personenbezogene Daten <span class=\"T7\">werden nicht </span>an ein "
"Drittland oder an eine internationale Organisation übermittelt"
msgstr ""
"(2) <span class=\"T2\">□ </span>The personal data will not be transmitted to "
"a third country or an international organization"
#. module: website_contact_extend
#: model:ir.ui.view,arch_db:website_contact_extend.report_contact_document
msgid ""
"(3) Der Verantwortliche stellt eine Kopie der personenbezogenen Daten, "
"die Gegenstand der Verarbeitung sind, zur Verfügung:"
msgstr ""
"(3) The responsible person provides a copy of the personal data that is the "
"subject of the processing:"
#. module: website_contact_extend
#: model:ir.ui.view,arch_db:website_contact_extend.report_contact_document
msgid ""
"(4) Das Recht auf Erhalt einer Kopie gemäß Absatz 3 darf die Rechte und "
"Freiheiten anderer<br/>Personen nicht beeinträchtigen."
msgstr ""
"(4) The right to receive a copy under paragraph 3 must not affect the rights "
"and freedoms of other persons."
#. module: website_contact_extend
#: model:ir.ui.view,arch_db:website_contact_extend.report_contact_document
msgid ""
"<span class=\"T2\"> □ </span><span class=\"T1\">bis zum __. __. ____</"
"span> <span> <span class=\"T1\"> </span><span class=\"T2\">□ Bis zu ____ "
"Jahre □ </span><span class=\"T3\">Gesetzl. Aufbewahrungfrist</span></"
"span>"
msgstr ""
"<span class=\"T2\"> □ </span><span class=\"T1\">Until the __. __. "
"____</span> <span> <span class=\"T1\"> </span><span class=\"T2\">□ Up to "
"____ years □ </span><span class=\"T3\">Storage period by law</span></"
"span>"
#. module: website_contact_extend
#: model:ir.ui.view,arch_db:website_contact_extend.report_contact_document
msgid ""
"<span class=\"T2\">oder □ </span>Widerspruchsrecht gegen diese "
"Verarbeitung <span class=\"T1\">besteht</span>;"
msgstr ""
"<span class=\"T2\">or □ </span>Right to object to this processing,"
#. module: website_contact_extend
#: model:ir.ui.view,arch_db:website_contact_extend.report_contact_document
msgid ""
"<span class=\"T2\">□ </span><span class=\"T4\">Wenn doch: Die Daten werden</"
"span><span class=\"T7\"> nach folgender Art ausgewertet und gruppiert "
"_______________ </span>"
msgstr ""
"<span class=\"T2\">□ </span>If so: The data is evaluated and grouped in the "
"following way_______________ "
#. module: website_contact_extend
#: model:ir.ui.view,arch_db:website_contact_extend.report_contact_document
msgid ""
"<span class=\"T6\">Grund</span><span> <span class=\"T2\">□ Kontakt ____ mal "
"nicht erreicht □ Systemwechsel </span></span>"
msgstr ""
"<span class=\"T6\">Reason:</span> □ Contact ____ not reached □ System "
"change </span>"
#. module: website_contact_extend
#: model:ir.ui.view,arch_db:website_contact_extend.report_contact_document
msgid "Adresse:"
msgstr "Address:"
#. module: website_contact_extend
#: model:ir.ui.view,arch_db:website_contact_extend.report_contact_document
msgid "Auskunft für:"
msgstr "Information for:"
#. module: website_contact_extend
#: model:ir.ui.view,arch_db:website_contact_extend.report_contact_document
msgid "Auskunft n<span class=\"T1\">ach Artikel 15 DS-GVO</span>"
msgstr ""
"Information <span class=\"T1\">according to Article 15 of the GDPR</span>"
#. module: website_contact_extend
#: model:ir.ui.view,arch_db:website_contact_extend.report_contact_document
msgid "Auskunftsgeber:"
msgstr "Information giver:"
#. module: website_contact_extend
#: model:ir.model,name:website_contact_extend.model_res_partner
msgid "Contact"
msgstr "Contact"
#. module: website_contact_extend
#: model:ir.actions.report,name:website_contact_extend.report_contact
msgid "Contact Report"
msgstr "Contact Report"
#. module: website_contact_extend
#: model:ir.model.fields,field_description:website_contact_extend.field_res_partner_contact_type
#: model:ir.model.fields,field_description:website_contact_extend.field_res_users_contact_type
msgid "Contact Type"
msgstr "Contact Type"
#. module: website_contact_extend
#: model:ir.ui.view,arch_db:website_contact_extend.contactus_form_inherited
msgid "Contact by E-Mail"
msgstr "Contact by E-Mail"
#. module: website_contact_extend
#: model:ir.ui.view,arch_db:website_contact_extend.contactus_form_inherited
msgid "Contact by Letter"
msgstr "Contact by Letter"
#. module: website_contact_extend
#: model:ir.ui.view,arch_db:website_contact_extend.contactus_form_inherited
msgid "Contact by Phone"
msgstr "Contact by Phone"
#. module: website_contact_extend
#: model:ir.ui.view,arch_db:website_contact_extend.report_contact_document
msgid ""
"Die betroffene Person hat das Recht, von dem Verantwortlichen eine "
"Bestätigung darüber zu verlangen, ob sie betreffende personenbezogene Daten "
"verarbeitet werden; ist dies der Fall, so hat sie ein Recht auf Auskunft "
"über diese personenbezogenen Daten und auf folgende Informationen:"
msgstr ""
"The data subject has the right to ask the person responsible for "
"confirmation of the processing of the personal data concerned; if this is "
"the case, it has a right to information about such personal data and to the "
"following information:"
#. module: website_contact_extend
#: model:ir.model.fields,field_description:website_contact_extend.field_res_partner_email_contact
#: model:ir.model.fields,field_description:website_contact_extend.field_res_users_email_contact
msgid "Email Contact"
msgstr "Email Contact"
#. module: website_contact_extend
#: model:ir.model.fields,field_description:website_contact_extend.field_crm_lead_email_link
msgid "Email verification link"
msgstr "Email verification link"
#. module: website_contact_extend
#: model:ir.ui.view,arch_db:website_contact_extend.report_contact_document
msgid "Email:"
msgstr "Email:"
#. module: website_contact_extend
#: selection:res.partner,contact_type:0
msgid "I do not want to be contacted."
msgstr "I do not want to be contacted."
#. module: website_contact_extend
#: selection:res.partner,contact_type:0
msgid "I only want to be contacted by Email."
msgstr "I only want to be contacted by Email."
#. module: website_contact_extend
#: selection:res.partner,contact_type:0
msgid "I only want to be contacted by Phone."
msgstr "I only want to be contacted by Phone."
#. module: website_contact_extend
#: model:ir.ui.view,arch_db:website_contact_extend.contactus_form_inherited
msgid "In the future I want to be contacted by"
msgstr "In the future I want to be contacted by"
#. module: website_contact_extend
#: model:ir.ui.view,arch_db:website_contact_extend.contactus_form_inherited
msgid "Information request concerning data about the personally"
msgstr "Information request concerning data about personal Information"
#. module: website_contact_extend
#: model:ir.model,name:website_contact_extend.model_crm_lead
msgid "Lead/Opportunity"
msgstr "Lead/Opportunity"
#. module: website_contact_extend
#: model:ir.model.fields,field_description:website_contact_extend.field_res_partner_letter_contact
#: model:ir.model.fields,field_description:website_contact_extend.field_res_users_letter_contact
msgid "Letter Contact"
msgstr "Letter Contact"
#. module: website_contact_extend
#: model:ir.model.fields,field_description:website_contact_extend.field_res_partner_last_updated
#: model:ir.model.fields,field_description:website_contact_extend.field_res_users_last_updated
msgid "Letzte Aktualisierung"
msgstr "Last Updated on"
#. module: website_contact_extend
#: model:ir.ui.view,arch_db:website_contact_extend.report_contact_document
msgid "Name:"
msgstr "Name:"
#. module: website_contact_extend
#: model:ir.model.fields,field_description:website_contact_extend.field_res_partner_phone_contact
#: model:ir.model.fields,field_description:website_contact_extend.field_res_users_phone_contact
msgid "Phone Contact"
msgstr "Phone Contact"
#. module: website_contact_extend
#: model:ir.ui.view,arch_db:website_contact_extend.report_contact_document
msgid "Phone:"
msgstr "Phone:"
#. module: website_contact_extend
#: model:ir.model.fields,field_description:website_contact_extend.field_res_partner_is_verified
#: model:mail.template,subject:website_contact_extend.confirmation_email_template
msgid "Verified Email"
msgstr "Verified Email"
#. module: website_contact_extend
#: model:ir.model.fields,help:website_contact_extend.field_res_partner_contact_type
#: model:ir.model.fields,help:website_contact_extend.field_res_users_contact_type
msgid "Which way user want to be contacted."
msgstr "Which way user want to be contacted."
#. module: website_contact_extend
#: selection:res.partner,contact_type:0
msgid "You can contact me by Email or Phone."
msgstr "You can contact me by Email or Phone."
#. module: website_contact_extend
#: model:ir.ui.view,arch_db:website_contact_extend.report_contact_document
msgid ""
"a) <span class=\"T1\">d</span>ie Verarbeitungszwecke:<span class=\"T1\"> </"
"span><span class=\"T2\">□ </span><span class=\"T1\">Kontaktaufnahme; </"
"span><span class=\"T2\">□ </span><span class=\"T3\">Geschäftsvorgänge</"
"span><span class=\"T1\">; </span><span class=\"T2\">□ </span><span class="
"\"T3\">S</span><span class=\"T1\">onstiges; </span>"
msgstr ""
"a) The processing purposes:<span class=\"T1\"> </span><span class=\"T2\">□ "
"</span><span class=\"T1\">Contact, </span><span class=\"T2\">□ </span><span "
"class=\"T3\">Transactions</span><span class=\"T1\">, </span><span class="
"\"T2\">□ </span><span class=\"T1\">Other </span>"
#. module: website_contact_extend
#: model:ir.ui.view,arch_db:website_contact_extend.report_contact_document
msgid ""
"b) die Kategorien personenbezogener Daten, die verarbeitet werden: <span "
"class=\"T1\"> <br/></span><span class=\"T2\">□ </span><span class="
"\"T1\">Kundendaten, </span><span class=\"T2\">□ </span><span class="
"\"T1\">Lieferantendaten, </span><span class=\"T2\">□ </span><span class="
"\"T1\">Interessentendaten, </span><span class=\"T2\">□ </span><span class="
"\"T1\">Personaldaten</span>"
msgstr ""
"b) The categories of personal data being processed: <span class=\"T1\"> <br/"
"></span><span class=\"T2\">□ </span><span class=\"T1\">Customer data, </"
"span><span class=\"T2\">□ </span><span class=\"T1\">Supplier data, </"
"span><span class=\"T2\">□ </span><span class=\"T1\">Prospect data, </"
"span><span class=\"T2\">□ </span><span class=\"T1\">Personal data</span>"
#. module: website_contact_extend
#: model:ir.ui.view,arch_db:website_contact_extend.report_contact_document
msgid ""
"c) die Empfänger oder Kategorien von Empfängern, gegenüber denen die "
"personenbezogenen Daten offengelegt worden sind oder noch offengelegt "
"werden, insbesondere bei Empfängern in Drittländern oder bei internationalen "
"Organisationen: <span class=\"T1\"> </span><span class=\"T2\">□ </"
"span>_______________________________<br/> <span class=\"T6\">oder</span> "
"<span class=\"T1\"> </span><span class=\"T2\">□ </span><span class="
"\"T3\">keine</span><span class=\"T1\"> Offenlegung gegenüber Dritten "
"beabsichtigt, </span><span class=\"T2\">□ </span><span class=\"T1\">Nicht "
"bekannt</span>"
msgstr ""
"c) The recipients or categories of recipients to whom the personal data have "
"been disclosed or are yet to be disclosed, in particular to recipients in "
"third countries or to international organizations: <span class=\"T1\"> </"
"span><span class=\"T2\">□ </span>_______________________________<br/> <span "
"class=\"T6\">or</span> <span class=\"T1\"> </span><span class=\"T2\">□ </"
"span><span class=\"T3\">No</span><span class=\"T1\"> disclosure to third "
"parties, </span><span class=\"T2\">□ </span><span class=\"T1\">Not known</"
"span>"
#. module: website_contact_extend
#: model:ir.ui.view,arch_db:website_contact_extend.report_contact_document
msgid ""
"d) geplante Dauer, für die die personenbezogenen Daten gespeichert "
"werden: <span class=\"T1\"> </span>"
msgstr ""
"d) Planned duration for which the personal data is stored: <span class="
"\"T1\"> </span>"
#. module: website_contact_extend
#: model:ir.ui.view,arch_db:website_contact_extend.report_contact_document
msgid ""
"e) <span> <span class=\"T2\">□ </span>Recht auf Berichtigung oder Löschung "
"der betreffenden personenbezogenen Daten <span class=\"T1\">besteht "
"oder </span><span class=\"T2\">□ </span>Einschränkung der "
"Verarbeitung durch den Verantwortlichen </span>"
msgstr ""
"e)<span> <span class=\"T2\">□ </span>Right to rectification or deletion of "
"personal data concerned, or <span class=\"T2\">□ </span>Restriction of "
"processing by the controller , or </span>"
#. module: website_contact_extend
#: model:ir.ui.view,arch_db:website_contact_extend.report_contact_document
msgid ""
"f) <span> <span class=\"T2\">□ </span>das Bestehen eines Beschwerderechts "
"bei einer Aufsichtsbehörde <span class=\"T5\">besteht</span></span>"
msgstr ""
"f)<span> <span class=\"T2\">□ </span>The existence of a right to complain to "
"a supervisory authority</span>"
#. module: website_contact_extend
#: model:ir.ui.view,arch_db:website_contact_extend.report_contact_document
msgid ""
"g) die Herkunft der Daten <span class=\"T7\">ist von </span><span class="
"\"T2\">□ </span><span class=\"T4\">eigener Recherche, </span><span class="
"\"T2\">□ </span><span class=\"T4\">Auskunftei</span>"
msgstr ""
"g) The origin of the data is from <span class=\"T2\">□ </span><span class="
"\"T4\">Own research, </span><span class=\"T2\">□ </span><span class="
"\"T4\">Credit reference agency</span>"
#. module: website_contact_extend
#: model:ir.ui.view,arch_db:website_contact_extend.report_contact_document
msgid ""
"h) <span class=\"T2\">□ </span>eine automatisierte Entscheidungsfindung "
"<span class=\"T7\">mit diesen Daten findet nicht statt. </span>"
msgstr ""
"h) <span class=\"T2\">□ </span>An automated decision-making with this data "
"does not take place."
#. module: website_contact_extend
#: model:mail.template,subject:website_contact_extend.verification_email_template
msgid "mail verification link"
msgstr "mail verification link"

3
website_contact_extend/models/__init__.py

@ -0,0 +1,3 @@
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
from . import res_partner

38
website_contact_extend/models/res_partner.py

@ -0,0 +1,38 @@
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
from odoo import fields, models, api
class ResContacts(models.Model):
_inherit = "res.partner"
contact_type = fields.Selection([
('no_contact', 'I do not want to be contacted.'),
('email_contact', 'I only want to be contacted by Email.'),
('phone_contact', 'I only want to be contacted by Phone.'),
('email_phone_contact', 'You can contact me by Email or Phone.')
],
string='Contact Type',
default='email_contact',
help="Which way user want to be contacted.")
letter_contact = fields.Boolean("Letter Contact")
phone_contact = fields.Boolean("Phone Contact")
email_contact = fields.Boolean("Email Contact")
is_verified = fields.Boolean("Verified Email")
last_updated = fields.Datetime("Letzte Aktualisierung")
request_gdpdr = fields.Boolean("Request GDPDR")
# s
@api.multi
def write(self, vals):
return super(ResContacts, self).write(vals)
@api.model
def create(self, vals):
return super(ResContacts, self).create(vals)
class CrmLead(models.Model):
_inherit = "crm.lead"
email_link = fields.Char("Email verification link")

1
website_contact_extend/readme/CONFIGURE.rst

@ -0,0 +1 @@
The contact mode fields will be added to the Contact Site automatically.

8
website_contact_extend/readme/DESCRIPTION.rst

@ -0,0 +1,8 @@
Extended Website Contact View to give Customer options on how to be
contacted in the future.
For email verification a verification link will be sent to the email address
entered in the contact view.
* contact mode fields will be added to the website contact view.
* Information requests can be submitted from the contact view

8
website_contact_extend/readme/USAGE.rst

@ -0,0 +1,8 @@
Customer can verify his email address with a verification link.
The verification link is automatically sent to the email address
entered in the website contact view.
Following that the mode of future contact can be chosen and a GDPR
information request can be submitted.
A preliminary Report is also printable in the contacts view.

BIN
website_contact_extend/static/description/icon.png

After

Width: 128  |  Height: 128  |  Size: 9.2 KiB

172
website_contact_extend/static/description/index.html
File diff suppressed because it is too large
View File

42
website_contact_extend/static/src/js/contactus.js

@ -0,0 +1,42 @@
odoo.define('website_contact_extend.success_page', function (require) {
"use strict";
var ajax = require("web.ajax");
$(document).on('blur', '.input_email_from', function (ev) {
console.log(ev);
var email_from = $('.input_email_from').val();
var company_name = $('.input_company').val();
return ajax.jsonRpc('/check_user_exists', 'call', {
email_from: email_from,
company_name: company_name,
}).then(function (res) {
var contactus_page = "/contactus-thank-you";
if (res) {
contactus_page = "/contact-us-form-review";
}
var formaction_webform = 'form[action="/website_form/"]';
$(formaction_webform).attr('data-success_page', contactus_page);
});
});
$(document).on('blur', '.input_company', function (ev) {
console.log(ev);
var email_from = $('.input_email_from').val();
var company_name = $('.input_company').val();
return ajax.jsonRpc('/check_user_exists', 'call', {
email_from: email_from,
company_name: company_name,
}).then(function (res) {
var contactus_page = "/contactus-thank-you";
if (res) {
contactus_page = "/contact-us-form-review";
}
var formaction_webform = 'form[action="/website_form/"]';
$(formaction_webform).attr('data-success_page', contactus_page);
});
});
});

164
website_contact_extend/views/contact_report.xml

@ -0,0 +1,164 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data>
<report
id="report_contact"
string="Contact Report"
model="res.partner"
report_type="qweb-pdf"
file="website_contact_extend.contact_report"
name="website_contact_extend.contact_report"
/>
<template id="contact_report">
<t t-call="web.html_container">
<t t-foreach="docs" t-as="doc">
<t t-call="website_contact_extend.report_contact_document" t-lang="doc.lang"/>
</t>
</t>
</template>
<template id="report_contact_document">
<t t-call="web.external_layout">
<div class="page">
<div class="oe_structure"/>
<h2 class="P8">
<a id="a__Auskunft_nach_Artikel_15_DS-GVO">
<span/>
</a>
Auskunft n
<span class="T1">ach Artikel 15 DS-GVO</span>
</h2>
<p class="Text_20_body"/>
<p class="P1">Auskunft für:
<span class="T8">
<span t-field="doc.name"/>
</span>
</p>
<p class="Text_20_body">Die betroffene Person hat das Recht, von dem Verantwortlichen eine
Bestätigung darüber zu verlangen, ob sie betreffende personenbezogene Daten verarbeitet werden;
ist dies der Fall, so hat sie ein Recht auf Auskunft über diese personenbezogenen Daten und auf
folgende Informationen:
</p>
<p class="P4">a) die Verarbeitungszwecke:
<span class="T1"></span>
<span class="T2"></span>
<span class="T1">Kontaktaufnahme;</span>
<span class="T2"></span>
<span class="T3">Geschäftsvorgänge;</span>
<span class="T2"></span>
<span class="T3">Sonstiges;</span>
</p>
<p class="P2">b) die Kategorien personenbezogener Daten, die verarbeitet werden:
<span class="T1">
<br/>
</span>
<span class="T2"></span>
<span class="T1">Kundendaten,</span>
<span class="T2"></span>
<span class="T1">Lieferantendaten,</span>
<span class="T2"></span>
<span class="T1">Interessentendaten,</span>
<span class="T2"></span>
<span class="T1">Personaldaten</span>
</p>
<p class="P2">c) die Empfänger oder Kategorien von Empfängern, gegenüber denen die personenbezogenen
Daten offengelegt worden sind oder noch offengelegt werden, insbesondere bei Empfängern in
Drittländern oder bei internationalen Organisationen:
<span class="T2"></span>_______________________________
<br/>
<span class="T6">oder</span>
<span class="T2"></span>
<span class="T3">keine Offenlegung gegenüber Dritten beabsichtigt,</span>
<span class="T2"></span>
<span class="T1">Nicht bekannt</span>
</p>
<p class="P2">d) geplante Dauer, für die die personenbezogenen Daten gespeichert werden:
</p>
<p class="P4">
<span class="T2">□ bis zum __. __. ____</span>
<span class="T2">□ Bis zu ____ Jahre</span>
<span class="T3">□ Gesetzl. Aufbewahrungfrist</span>
</p>
<p class="P2">
<span class="T6">Grund</span>
<span class="T2">□ Kontakt ____ mal nicht erreicht □ Systemwechsel</span>
</p>
<p class="P2">e)
<span>□ Recht auf Berichtigung oder Löschung der betreffenden
personenbezogenen Daten besteht oder
</span>
<span>□ Einschränkung der Verarbeitung durch den Verantwortlichen
</span>
</p>
<p class="P2"><span>oder □ Widerspruchsrecht gegen diese Verarbeitung besteht;</span>
</p>
<p class="P3">f)
<span>□ das Bestehen eines Beschwerderechts bei einer Aufsichtsbehörde besteht
</span>
</p>
<p class="P5">g) die Herkunft der Daten
<span class="T7">ist von</span>
<span class="T2"></span>
<span class="T4">eigener Recherche,</span>
<span class="T2"></span>
<span class="T4">Auskunftei</span>
</p>
<p class="P5">h)<span class="T2"></span>eine automatisierte Entscheidungsfindung
<span class="T7">mit diesen Daten findet nicht statt.</span>
</p>
<p class="P5">
<span class="T2"></span>
<span class="T4">Wenn doch: Die Daten werden</span>
<span class="T7">nach folgender Art ausgewertet und gruppiert _______________</span>
</p>
<p class="P5">(2)
<span class="T2"></span>
<span class="T7">Die</span>personenbezogene Daten<span class="T7">werden nicht</span>an ein
Drittland oder an eine internationale Organisation übermittelt
</p>
<p class="Text_20_body">(3) Der Verantwortliche stellt eine Kopie der personenbezogenen Daten, die
Gegenstand der Verarbeitung sind, zur Verfügung:
</p>
<p class="P6">
<p t-if="doc.name">
Name:
<span t-field="doc.name"/>
</p>
<p t-if="doc.email">
Email:
<span t-field="doc.email"/>
</p>
<p t-if="doc.phone">
Phone:
<span t-field="doc.phone"/>
</p>
</p>
<p class="P6">
Adresse:
<span t-field="doc.street"/>
<span t-field="doc.zip"/>
<span t-field="doc.city"/>
<span t-field="doc.country_id.name"/>
</p>
<p class="Text_20_body">(4) Das Recht auf Erhalt einer Kopie gemäß Absatz 3 darf die Rechte und
Freiheiten anderer<br/>Personen nicht beeinträchtigen.
</p>
<p class="Text_20_body"></p>
<p class="P7">Auskunftsgeber:
<span class="T8">
<span t-field="doc.user_id.name"/>,
<span t-field="doc.user_id.company_id.name"/>,
<span t-field="doc.user_id.company_id.street"/>,
<span t-field="doc.user_id.company_id.zip"/>
<span t-field="doc.user_id.company_id.city"/>
</span>
</p>
</div>
</t>
</template>
</data>
</odoo>

17
website_contact_extend/views/disp_msg_template.xml

@ -0,0 +1,17 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<template id="disp_msg_template">
<t t-call="website.layout">
<div class="oe_structure">
<div class="container">
<div class="page">
<div class="row">
<p id="message_success" style="color: green;"></p>
<p id="message_failure" style="color: red;"></p>
</div>
</div>
</div>
</div>
</t>
</template>
</odoo>

66
website_contact_extend/views/email_template.xml

@ -0,0 +1,66 @@
<?xml version="1.0" encoding="UTF-8" ?>
<odoo>
<data noupdate="1">
<record id="email_template_onchange_data" model="mail.template">
<field name="name">Data Change Email Template</field>
<field name="subject">Change has been made</field>
<field name="model_id" ref="crm.model_crm_lead"/>
<field name="auto_delete" eval="True"/>
<field name="body_html">
<![CDATA[
<p>Dear Sir/Madam,<br/><br/>
User ${(object.contact_name)} with the ID ${(object.id)} the has made a change in the record.<br/><p>
<p>Please find the user and his/her details below.<br/></p>
<table class="table table-striped">
<tbody>
<tr>
<td>Name</td><td>${object.contact_name}</td>
</tr>
<tr>
<td>Company</td><td>${object.partner_name}</td>
</tr>
<tr>
<td>Email</td><td>${object.email_from}</td>
</tr>
<tr>
<td>Phone</td><td>${object.phone}</td>
</tr>
</tbody>
</table>
<br/><br/>
Thank you.
]]>
</field>
</record>
<record id="email_template_information_request" model="mail.template">
<field name="name">Information Request Template</field>
<field name="subject">Information request on stored data for user ${object.email_from} from contact form</field>
<field name="model_id" ref="crm.model_crm_lead"/>
<field name="auto_delete" eval="True"/>
<field name="body_html">
<![CDATA[
<p>Dear colleagues,<br/><br/>
<p>following customer has requested an information about personal data stored in odoo:<br/></p>
<table class="table">
<tbody>
<tr>
<td>Name</td><td>${object.contact_name}</td>
</tr>
<tr>
<td>Company</td><td>${object.partner_name}</td>
</tr>
<tr>
<td>Notes:</td><td><strong>${object.name}</strong></td>
<td></td><td>${object.description[:-50]}</td>
</tr>
</tbody>
</table>
<br/><br/>
Thank you.
]]>
</field>
</record>
</data>
</odoo>

105
website_contact_extend/views/means_of_contact.xml

@ -0,0 +1,105 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<template id="contactby_form">
<t t-call="website.layout">
<div class="oe_structure">
<div class="container">
<form action="/contact_by_send/" method="post" data-model_name="crm.lead" data-success_page="/contactus-thank-you"
class="s_website_form container-fluid mt32" enctype="multipart/form-data"
data-editable-form="false">
<div class="form-group row form-field o_website_form_required_custom">
<label class="col-lg-3 col-md-4 col-form-label" for="contact_type">In the future I want to
be
contacted
by
</label>
<div class="col-lg-7 col-md-8">
<div class="checkbox">
<label>
<input type="checkbox" name="letter_contact" value="letter_contact"/>
Contact by Letter
</label>
</div>
<div class="checkbox">
<label>
<input type="checkbox" name="email_contact" value="email_contact"/>
Contact by E-Mail
</label>
</div>
<div class="checkbox">
<label>
<input type="checkbox" name="phone_contact" value="phone_contact"/>
Contact by Phone
</label>
</div>
<div>
<a href="#" role="button" class="btn btn-primary btn-lg o_website_form_send">Send</a>
<!--<button name="Send" class="btn btn-primary btn-lg o_website_form_send" type="submit">Send</button>-->
</div>
</div>
</div>
</form>
</div>
</div>
</t>
</template>
<template id="review_form">
<t t-call="website.layout">
<div class="oe_structure">
<div class="container">
<form action="/form_review_send/" method="post"
data-success_page="/contactus-thank-you" data-model_name="crm.lead"
class="s_website_form container-fluid mt32">
<div class="form-group row form-field">
<label class="col-lg-3 col-md-4 col-form-label" for="email_from">Email</label>
<div class="col-lg-7 col-md-8">
<input class="form-control o_website_form_input" type="text" name="email_from" t-att-value="form_data[0]" disabled="true"/></div>
</div>
<div class="form-group row form-field">
<label class="col-lg-3 col-md-4 col-form-label" for="contact_name">Your Name</label>
<div class="col-lg-7 col-md-8">
<input class="form-control o_website_form_input" type="text" name="contact_name" t-att-value="form_data[4]" disabled="true"/></div>
</div>
<div class="form-group row form-field">
<label class="col-lg-3 col-md-4 col-form-label" for="company_name">Your Company</label>
<div class="col-lg-7 col-md-8">
<input class="form-control o_website_form_input" type="text" name="company_name" t-att-value="form_data[2]" disabled="true"/></div>
</div>
<div class="form-group row form-field">
<label class="col-lg-3 col-md-4 col-form-label" for="phone">Phone</label>
<div class="col-lg-7 col-md-8">
<input class="form-control o_website_form_input" type="text" name="phone" t-att-value="form_data[10]" disabled="true"/></div>
</div>
<div class="form-group row form-field">
<label class="col-lg-3 col-md-4 col-form-label" for="name">Subject</label>
<div class="col-lg-7 col-md-8">
<input class="form-control o_website_form_input" type="text" name="name" t-att-value="form_data[1]" disabled="true"/></div>
</div>
<div class="form-group row form-field">
<label class="col-lg-3 col-md-4 col-form-label" for="description">Your Question</label>
<div class="col-lg-7 col-md-8">
<textarea class="form-control o_website_form_input" type="text" name="description" disabled="disabled"><t t-esc="form_data[6]"/></textarea></div>
</div>
<div class="form-group row form-field">
<label class="col-lg-3 col-md-4 col-form-label" for="request_gdpdr">Set contact channel</label>
<div class="col-lg-7 col-md-8">
<input type="checkbox" name="request_gdpdr" t-att-checked="form_data[8]" disabled="true"/></div>
</div>
<div class="form-group row form-field">
<label class="col-lg-3 col-md-4 col-form-label" for="send_mail">Information request about personal data</label>
<div class="col-lg-7 col-md-8">
<input type="checkbox" name="send_mail" t-att-checked="form_data[9]" disabled="true"/></div>
</div>
<div>
<div class="offset-lg-3 offset-md-4 col-md-8 col-lg-7">
<a href="#" role="button" class="btn btn-primary btn-lg o_website_form_send">Confirm</a>
<a href="/contactus" class="btn btn-primary btn-lg" style="margin-left: 1%;">Cancel</a>
</div>
</div>
</form>
</div>
</div>
</t>
</template>
</odoo>

22
website_contact_extend/views/res_partner.xml

@ -0,0 +1,22 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<record id="view_partner_form_gdpr_inherit" model="ir.ui.view">
<field name="name">res.partner.form</field>
<field name="model">res.partner</field>
<field eval="1" name="priority"/>
<field name="inherit_id" ref="base.view_partner_form"/>
<field name="arch" type="xml">
<field name="website" position="after">
<!--<field name="contact_type" />-->
<field name="phone_contact" readonly="True" />
<field name="email_contact" readonly="True" />
<field name="letter_contact" readonly="True" />
<field name="is_verified" readonly="True" />
<field name="last_updated" readonly="True" />
</field>
</field>
</record>
</odoo>

146
website_contact_extend/views/website_contact.xml

@ -0,0 +1,146 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<template id="assets_frontend" inherit_id="website.assets_frontend" name="Website Support Assets">
<xpath expr="//script[last()]" position="after">
<script type="text/javascript" src="/website_contact_extend/static/src/js/contactus.js"/>
</xpath>
</template>
<!--<template id="contactus_form_inherited" name="Contact Form" inherit_id="website_crm.contactus_form" customize_show="True">-->
<!--<xpath expr="//div[@class='form-group row form-field o_website_form_required_custom'][last()]" position="after">-->
<!--<div class="form-group row form-field o_website_form_required_custom">-->
<!--<label class="col-lg-3 col-md-4 col-form-label" for="contact_type">Request GDPDR</label>-->
<!--<div class="col-lg-7 col-md-8">-->
<!--<div class="checkbox>"><label><input type="checkbox" name="request_gdpdr" value="request_gdpdr"/></label></div>-->
<!--&lt;!&ndash;<div class="checkbox>"><label><input type="checkbox" name="letter_contact" value="letter_contact"/> Contact by Letter </label></div>&ndash;&gt;-->
<!--&lt;!&ndash;<div class="checkbox>"><label><input type="checkbox" name="email_contact" value="email_contact"/> Contact by E-Mail </label></div>&ndash;&gt;-->
<!--&lt;!&ndash;<div class="checkbox>"><label><input type="checkbox" name="phone_contact" value="phone_contact"/> Contact by Phone </label></div>&ndash;&gt;-->
<!--&lt;!&ndash;<select class="form-control" name="contact_type" id="contact_type">-->
<!--<option value="no_contact">I do not want to be contacted.</option>-->
<!--<option value="email_contact">I only want to be contacted by Email.</option>-->
<!--<option value="phone_contact">I only want to be contacted by Phone.</option>-->
<!--<option value="email_phone_contact">You can contact me by Email or Phone.</option>-->
<!--</select>&ndash;&gt;-->
<!--</div>-->
<!--</div>-->
<!--<div class="form-group row form-field">-->
<!--<label class="col-lg-3 col-md-4 col-form-label" for="contact_type">Information request concerning data about the personally</label>-->
<!--<div class="col-lg-7 col-md-8">-->
<!--<input type="checkbox" name="send_mail" value="send_mail"/>-->
<!--</div>-->
<!--</div>-->
<!--</xpath>-->
<!--</template>-->
<!--t-attf="http.request.session.review_form ? '/contact-us-form-review' : '/contactus-thank-you'"-->
<template id="contactus_form_inherited" name="Contact Form" inherit_id="website_crm.contactus_form"
customize_show="True">
<xpath expr="//div" position="replace">
<div class="container">
<form action="/website_form/" method="post" data-model_name="crm.lead"
data-success_page="/contactus-thank-you"
class="s_website_form container-fluid mt32" enctype="multipart/form-data"
data-editable-form="false">
<div class="form-group row form-field o_website_form_required_custom">
<label class="col-lg-3 col-md-4 col-form-label" for="contact_name">Your Name</label>
<div class="col-lg-7 col-md-8">
<input type="text" class="form-control o_website_form_input" name="contact_name"
t-att-value="request.params.get('contact_name', '')" required=""/>
</div>
</div>
<div class="form-group row form-field">
<label class="col-lg-3 col-md-4 col-form-label" for="phone">Phone Number</label>
<div class="col-lg-7 col-md-8">
<input type="text" class="form-control o_website_form_input" name="phone"
t-att-value="request.params.get('phone', '')"/>
</div>
</div>
<div class="form-group row form-field o_website_form_required_custom">
<label class="col-lg-3 col-md-4 col-form-label" for="email_from">Email</label>
<div class="col-lg-7 col-md-8">
<input type="text" class="form-control o_website_form_input input_email_from" name="email_from" required=""
t-att-value="request.params.get('email_from', '')"/>
</div>
</div>
<div class="form-group row form-field o_website_form_required_custom">
<label class="col-lg-3 col-md-4 col-form-label" for="partner_name">Your Company</label>
<div class="col-lg-7 col-md-8">
<input type="text" class="form-control o_website_form_input input_company" name="partner_name" required=""
t-att-value="request.params.get('partner_name', '')"/>
</div>
</div>
<div class="form-group row form-field o_website_form_required">
<label class="col-lg-3 col-md-4 col-form-label" for="name">Subject</label>
<div class="col-lg-7 col-md-8">
<input type="text" class="form-control o_website_form_input" name="name" required=""
t-att-value="request.params.get('name', '')"/>
</div>
</div>
<div class="form-group row form-field o_website_form_required_custom">
<label class="col-lg-3 col-md-4 col-form-label" for="description">Your Question</label>
<div class="col-lg-7 col-md-8">
<textarea class="form-control o_website_form_input" name="description" required="">
<t t-esc="request.params.get('description', '')"/>
</textarea>
</div>
</div>
<div class="form-group row form-field">
<label class="col-lg-3 col-md-4 col-form-label" for="request_gdpdr">Set contact channel</label>
<div class="col-lg-7 col-md-8">
<div class="checkbox>">
<label>
<input type="checkbox" name="request_gdpdr" value="request_gdpdr"/>
</label>
</div>
</div>
</div>
<div class="form-group row form-field">
<label class="col-lg-3 col-md-4 col-form-label" for="send_mail">Information request about personal data
</label>
<div class="col-lg-7 col-md-8">
<input type="checkbox" name="send_mail" value="send_mail"/>
</div>
</div>
<div class="form-group row">
<div class="offset-lg-3 offset-md-4 col-md-8 col-lg-7">
<a href="#" role="button" class="btn btn-primary btn-lg o_website_form_send">Send</a>
<span id="o_website_form_result"></span>
</div>
</div>
</form>
</div>
</xpath>
</template>
<!--<record id="contactus_thanks_override" model="website.page">-->
<!--<field name="inherit_id" ref="website_crm.contactus_thanks_ir_ui_view"></field>-->
<!--&lt;!&ndash;<field name="key">website_crm.contactus_thanks</field>&ndash;&gt;-->
<!--<field name="arch" type="xml">-->
<!--<xpath expr="//t/t/div[@id='wrap']" position="replace">-->
<!--<body>-->
<!--<div>Hello</div>-->
<!--</body>-->
<!--</xpath>-->
<!--</field>-->
<!--</record>-->
<!--<record id="contactus_form_review" model="website.page">-->
<!--<field name="name">Review Form</field>-->
<!--<field name="type">qweb</field>-->
<!--<field name="url">/contact-us-form-review</field>-->
<!--<field name="website_published">True</field>-->
<!--<field name="key">website_contact_extend.contactus_form_review</field>-->
<!--<field name="arch" type="xml">-->
<!--<body>-->
<!--<div>Hello from Review</div>-->
<!--</body>-->
<!--</field>-->
<!--</record>-->
</odoo>
Loading…
Cancel
Save