diff options
| author | Jeremy Kersten <jke@odoo.com> | 2018-08-13 18:41:58 +0200 |
|---|---|---|
| committer | Jeremy Kersten <jke@odoo.com> | 2018-08-13 20:16:34 +0200 |
| commit | 8300155cd6133e0b8496cf4505081a1626e6f0aa (patch) | |
| tree | 7055bfa68dbcfade008b7fa5f4f2df3339691cfc /addons | |
| parent | 62d73253f355fc857cfc6ca11bd5259957a94474 (diff) | |
[IMP] website: res_config_setting make most key website specific
google analytics, google map api key, ... can be set by website
Remove useless duplicated label
Co-authored-by: Derie Romain <rde@odoo.com>
Co-authored-by: Kersten Jérémy <jke@odoo.com>
Diffstat (limited to 'addons')
| -rw-r--r-- | addons/website/models/res_config_settings.py | 20 | ||||
| -rw-r--r-- | addons/website/models/res_partner.py | 2 | ||||
| -rw-r--r-- | addons/website/models/website.py | 11 | ||||
| -rw-r--r-- | addons/website/static/src/scss/website.ui.scss | 2 | ||||
| -rw-r--r-- | addons/website/static/src/xml/website.backend.xml | 8 | ||||
| -rw-r--r-- | addons/website/views/res_config_settings_views.xml | 71 | ||||
| -rw-r--r-- | addons/website_crm_partner_assign/controllers/main.py | 2 | ||||
| -rw-r--r-- | addons/website_customer/controllers/main.py | 2 | ||||
| -rw-r--r-- | addons/website_google_map/controllers/main.py | 2 | ||||
| -rw-r--r-- | addons/website_membership/controllers/main.py | 2 |
10 files changed, 81 insertions, 41 deletions
diff --git a/addons/website/models/res_config_settings.py b/addons/website/models/res_config_settings.py index eaff3cd9434..36ca15c2e58 100644 --- a/addons/website/models/res_config_settings.py +++ b/addons/website/models/res_config_settings.py @@ -28,24 +28,26 @@ class ResConfigSettings(models.TransientModel): website_default_lang_code = fields.Char( 'Default language code', related='website_id.default_lang_code', oldname='default_lang_code') + specific_user_account = fields.Boolean('Specific User Account', config_parameter='website_id.specific_user_account', + help='Are newly created user accounts website specific') + google_analytics_key = fields.Char('Google Analytics Key', related='website_id.google_analytics_key') google_management_client_id = fields.Char('Google Client ID', related='website_id.google_management_client_id') google_management_client_secret = fields.Char('Google Client Secret', related='website_id.google_management_client_secret') - cdn_activated = fields.Boolean('Use a Content Delivery Network (CDN)', related='website_id.cdn_activated') + cdn_activated = fields.Boolean(related='website_id.cdn_activated') cdn_url = fields.Char(related='website_id.cdn_url') cdn_filters = fields.Text(related='website_id.cdn_filters') module_website_version = fields.Boolean("A/B Testing") - module_website_links = fields.Boolean(string="Link Trackers") - auth_signup_uninvited = fields.Selection(string="Customer Account", related='website_id.auth_signup_uninvited') + module_website_links = fields.Boolean("Link Trackers") + auth_signup_uninvited = fields.Selection("Customer Account", related='website_id.auth_signup_uninvited') favicon = fields.Binary('Favicon', related='website_id.favicon') - # Set as global config parameter since methods using it are not website-aware. To be changed - # when multi-website is implemented - google_maps_api_key = fields.Char(string='Google Maps API Key', config_parameter='google_maps_api_key', default='') - has_google_analytics = fields.Boolean("Google Analytics", config_parameter='website.has_google_analytics') - has_google_analytics_dashboard = fields.Boolean("Embedded Google Analytics", config_parameter='website.has_google_analytics_dashboard') - has_google_maps = fields.Boolean("Google Maps", config_parameter='website.has_google_maps') + + google_maps_api_key = fields.Char(related='website_id.google_maps_api_key') + has_google_analytics = fields.Boolean(related='website_id.has_google_analytics') + has_google_analytics_dashboard = fields.Boolean(related='website_id.has_google_analytics_dashboard') + has_google_maps = fields.Boolean(related='website_id.has_google_maps') social_twitter = fields.Char(related='website_id.social_twitter') social_facebook = fields.Char(related='website_id.social_facebook') diff --git a/addons/website/models/res_partner.py b/addons/website/models/res_partner.py index caa3f992335..247804c387b 100644 --- a/addons/website/models/res_partner.py +++ b/addons/website/models/res_partner.py @@ -18,7 +18,7 @@ class Partner(models.Model): @api.multi def google_map_img(self, zoom=8, width=298, height=298): - google_maps_api_key = self.env['ir.config_parameter'].sudo().get_param('google_maps_api_key') + google_maps_api_key = self.env['website'].get_current_website().google_maps_api_key if not google_maps_api_key: return False params = { diff --git a/addons/website/models/website.py b/addons/website/models/website.py index 8fee73ac109..3d2f379e322 100644 --- a/addons/website/models/website.py +++ b/addons/website/models/website.py @@ -74,7 +74,7 @@ class Website(models.Model): company_id = fields.Many2one('res.company', string="Company", default=lambda self: self.env.ref('base.main_company').id) language_ids = fields.Many2many('res.lang', 'website_lang_rel', 'website_id', 'lang_id', 'Languages', default=_active_languages) default_lang_id = fields.Many2one('res.lang', string="Default Language", default=_default_language, required=True) - default_lang_code = fields.Char(related='default_lang_id.code', string="Default language code", store=True) + default_lang_code = fields.Char("Default language code", related='default_lang_id.code', store=True) auto_redirect_lang = fields.Boolean('Autoredirect Language', default=True, help="Should users be redirected to their browser's language") social_twitter = fields.Char('Twitter Account', default=_default_social_twitter) @@ -88,8 +88,13 @@ class Website(models.Model): google_management_client_id = fields.Char('Google Client ID') google_management_client_secret = fields.Char('Google Client Secret') + google_maps_api_key = fields.Char('Google Maps API Key') + has_google_analytics = fields.Boolean("Google Analytics") + has_google_analytics_dashboard = fields.Boolean("Embedded Google Analytics") + has_google_maps = fields.Boolean("Google Maps") + user_id = fields.Many2one('res.users', string='Public User', required=True) - cdn_activated = fields.Boolean('Activate CDN for assets') + cdn_activated = fields.Boolean('Content Delivery Network (CDN)') cdn_url = fields.Char('CDN Base URL', default='') cdn_filters = fields.Text('CDN Filters', default=lambda s: '\n'.join(DEFAULT_CDN_FILTERS), help="URL matching those filters will be rewritten using the CDN Base URL") partner_id = fields.Many2one(related='user_id.partner_id', relation='res.partner', string='Public Partner') @@ -799,7 +804,7 @@ class Page(models.Model): @api.multi def _is_most_specific_page(self, page_to_test): '''This will test if page_to_test is the most specific page in self.''' - pages_for_url = self.filtered(lambda page: page.url == page_to_test.url) + pages_for_url = self.sorted(key=lambda p: not p.website_id).filtered(lambda page: page.url == page_to_test.url) # this works because pages are _order'ed by website_id most_specific_page = pages_for_url[0] diff --git a/addons/website/static/src/scss/website.ui.scss b/addons/website/static/src/scss/website.ui.scss index f146b3de677..eb459ee1503 100644 --- a/addons/website/static/src/scss/website.ui.scss +++ b/addons/website/static/src/scss/website.ui.scss @@ -481,6 +481,6 @@ body .modal { } } .fa-check, .fa-eye-slash { - color: #00a09d; + color: $info; } } diff --git a/addons/website/static/src/xml/website.backend.xml b/addons/website/static/src/xml/website.backend.xml index 5508d4be9d9..b4f2b9c6029 100644 --- a/addons/website/static/src/xml/website.backend.xml +++ b/addons/website/static/src/xml/website.backend.xml @@ -53,12 +53,14 @@ <div t-name="website.ga_dialog_content"> Your Tracking ID: <input type="text" name="ga_analytics_key" placeholder="UA-XXXXXXXX-Y" t-att-value="ga_analytics_key" style="width: 100%"></input> - <a href="https://www.odoo.com/documentation/user/online/website/optimize/google_analytics.html" class="fa fa-arrow-right" target="_blank"> + <a href="https://www.odoo.com/documentation/user/online/website/optimize/google_analytics.html" target="_blank"> + <i class="fa fa-arrow-right"/> How to get my Tracking ID </a> <br/><br/> Your Client ID: <input type="text" name="ga_client_id" t-att-value="ga_key" style="width: 100%"></input> - <a href="https://www.odoo.com/documentation/user/online/website/optimize/google_analytics_dashboard.html" class="fa fa-arrow-right" target="_blank"> + <a href="https://www.odoo.com/documentation/user/online/website/optimize/google_analytics_dashboard.html" target="_blank"> + <i class="fa fa-arrow-right"/> How to get my Client ID </a> </div> @@ -72,7 +74,7 @@ </div> <div class="btn-group pull-right" style="margin-right: 20px;"> <t t-foreach="widget.websites" t-as="website"> - <button t-attf-class="btn btn-default js_website #{website.selected ? 'active' : ''}" + <button t-attf-class="btn btn-secondary js_website #{website.selected ? 'active' : ''}" t-att-data-website-id="website.id"> <t t-esc="website.name"/> </button> diff --git a/addons/website/views/res_config_settings_views.xml b/addons/website/views/res_config_settings_views.xml index 597895debcc..eac57f25ec5 100644 --- a/addons/website/views/res_config_settings_views.xml +++ b/addons/website/views/res_config_settings_views.xml @@ -18,9 +18,8 @@ <div class="text-muted"> Settings on this page will apply to this website </div> - <field name="website_id" options="{'no_open': True, 'no_create_edit': True}"/> - <div> - <button name="website_go_to" type="object" string="Go to website"/> + <div class="mt16"> + <field name="website_id" options="{'no_open': True, 'no_create_edit': True}"/> </div> </div> </div> @@ -63,7 +62,12 @@ <div class="text-muted"> Display this website when users visit this domain </div> - <field name="website_domain"/> + <div class="mt16"> + <field name="website_domain"/> + </div> + <div> + <button name="website_go_to" type="object" string="Go to website" class="btn-link" icon="fa-arrow-right"/> + </div> </div> </div> <div class="col-12 col-lg-6 o_setting_box" id="website_geoip_settings" groups="website.group_multi_website"> @@ -73,7 +77,9 @@ <div class="text-muted"> Display this website for users from these country groups </div> - <field name="website_country_group_ids" widget="many2many_tags"/> + <div class="mt16"> + <field name="website_country_group_ids" widget="many2many_tags"/> + </div> </div> </div> <div class="col-12 col-lg-6 o_setting_box" id="languages_setting"> @@ -117,7 +123,8 @@ </div> <div attrs="{'invisible': [('has_google_analytics', '=', False)]}"> <a href="https://www.odoo.com/documentation/user/11.0/website/optimize/google_analytics.html" - class="oe_link fa fa-arrow-right" target="_blank"> + class="oe_link" target="_blank"> + <i class="fa fa-arrow-right"/> How to get my Tracking ID </a> </div> @@ -129,6 +136,7 @@ </div> <div class="o_setting_right_pane"> <label for="has_google_analytics_dashboard"/> + <span class="fa fa-lg fa-globe" title="Values set here are website-specific." groups="website.group_multi_website"/> <div class="text-muted"> Follow your website traffic in Odoo. </div> @@ -144,7 +152,8 @@ </div> <div attrs="{'invisible': [('has_google_analytics_dashboard', '=', False)]}"> <a href="https://www.odoo.com/documentation/user/online/website/optimize/google_analytics_dashboard.html" - class="oe_link fa fa-arrow-right" target="_blank"> + class="oe_link" target="_blank"> + <i class="fa fa-arrow-right"/> How to get my Client ID </a> </div> @@ -156,6 +165,7 @@ </div> <div class="o_setting_right_pane"> <label for="has_google_maps"/> + <span class="fa fa-lg fa-globe" title="Values set here are website-specific." groups="website.group_multi_website"/> <div class="text-muted"> Show your address on a map in the <a href="/contactus">Contact Us</a> page </div> @@ -166,8 +176,9 @@ </div> </div> <div attrs="{'invisible': [('has_google_maps', '=', False)]}"> - <a role="button" class="btn-link fa fa-arrow-right" target="_blank" + <a role="button" class="btn-link" target="_blank" href="https://console.developers.google.com/flows/enableapi?apiid=maps_backend,static_maps_backend&keyType=CLIENT_SIDE&reusekey=true"> + <i class="fa fa-arrow-right"/> Create a Google Project and Get a Key </a> </div> @@ -184,7 +195,29 @@ </div> </div> </div> - <div class="col-12 col-lg-6 o_setting_box"> + <div class="col-12 col-lg-6 o_setting_box" id="utm_tracker_settings" title="Analyze the efficiency of your marketing campaigns by using trackable UTM trackers (campaigns, medium, sources). Create trackers and follow clicks from the Promote menu of your website. Those trackers can be used in Google Analytics or in Odoo reports where you can see the opportunities and sales revenue generated thanks to your links."> + <div class="o_setting_left_pane"> + <field name="module_website_links"/> + </div> + <div class="o_setting_right_pane"> + <label for="module_website_links"/> + <div class="text-muted"> + Track clicks on UTM links + </div> + </div> + </div> + <div class="col-12 col-lg-6 o_setting_box" groups="website.group_multi_website"> + <div class="o_setting_left_pane"> + <field name="specific_user_account"/> + </div> + <div class="o_setting_right_pane"> + <label for="specific_user_account"/> + <div class="text-muted"> + Force your user to create an account per website + </div> + </div> + </div> + <div class="col-12 col-lg-6 o_setting_box" id="auth_signup_uninvited_setting"> <div class="o_setting_left_pane"> </div> <div class="o_setting_right_pane"> @@ -197,9 +230,7 @@ <field name="auth_signup_uninvited" class="o_light_label" widget="radio" required="True"/> </div> <div class="content-group"> - <div class="mt16"> - <button type="object" name="open_template_user" string="Default Access Rights" icon="fa-arrow-right" class="btn-link"/> - </div> + <button type="object" name="open_template_user" string="Default Access Rights" icon="fa-arrow-right" class="btn-link"/> </div> </div> </div> @@ -212,28 +243,28 @@ Add links to social media on your website </div> <div class="content-group"> - <div class="row"> - <label for="social_twitter" string="Twitter" class="col-md-3 o_light_label"/> + <div class="row mt16"> + <label for="social_twitter" class="col-md-4 o_light_label"/> <field name="social_twitter"/> </div> <div class="row"> - <label for="social_facebook" string="Facebook" class="col-md-3 o_light_label"/> + <label for="social_facebook" class="col-md-4 o_light_label"/> <field name="social_facebook"/> </div> <div class="row"> - <label for="social_github" string="GitHub" class="col-md-3 o_light_label"/> + <label for="social_github" class="col-md-4 o_light_label"/> <field name="social_github"/> </div> <div class="row"> - <label for="social_linkedin" string="LinkedIn" class="col-md-3 o_light_label"/> + <label for="social_linkedin" class="col-md-4 o_light_label"/> <field name="social_linkedin"/> </div> <div class="row"> - <label for="social_youtube" string="YouTube" class="col-md-3 o_light_label"/> + <label for="social_youtube" class="col-md-4 o_light_label"/> <field name="social_youtube"/> </div> <div class="row"> - <label for="social_googleplus" string="Google Plus" class="col-md-3 o_light_label"/> + <label for="social_googleplus" class="col-md-4 o_light_label"/> <field name="social_googleplus"/> </div> </div> @@ -244,7 +275,7 @@ <field name="cdn_activated"/> </div> <div class="o_setting_right_pane"> - <label for="cdn_activated" string="Content Delivery Network (CDN)"/> + <label for="cdn_activated"/> <span class="fa fa-lg fa-globe" title="Values set here are website-specific." groups="website.group_multi_website"/> <div class="text-muted"> Use a CDN to optimize the availability of your website's content diff --git a/addons/website_crm_partner_assign/controllers/main.py b/addons/website_crm_partner_assign/controllers/main.py index ced982eed4a..52f48d58b2a 100644 --- a/addons/website_crm_partner_assign/controllers/main.py +++ b/addons/website_crm_partner_assign/controllers/main.py @@ -296,7 +296,7 @@ class WebsiteCrmPartnerAssign(WebsitePartnerPage): partners = partner_ids.sudo() google_map_partner_ids = ','.join(str(p.id) for p in partners) - google_maps_api_key = request.env['ir.config_parameter'].sudo().get_param('google_maps_api_key') + google_maps_api_key = request.website.google_maps_api_key values = { 'countries': countries, diff --git a/addons/website_customer/controllers/main.py b/addons/website_customer/controllers/main.py index 063d4b9bb5f..4a7a931297d 100644 --- a/addons/website_customer/controllers/main.py +++ b/addons/website_customer/controllers/main.py @@ -116,7 +116,7 @@ class WebsiteCustomer(http.Controller): partners = Partner.sudo().search(domain, offset=pager['offset'], limit=self._references_per_page) google_map_partner_ids = ','.join(str(it) for it in partners.ids) - google_maps_api_key = request.env['ir.config_parameter'].sudo().get_param('google_maps_api_key') + google_maps_api_key = request.website.google_maps_api_key tags = Tag.search([('website_published', '=', True), ('partner_ids', 'in', partners.ids)], order='classname, name ASC') tag = tag_id and Tag.browse(tag_id) or False diff --git a/addons/website_google_map/controllers/main.py b/addons/website_google_map/controllers/main.py index 0781ddf3da1..092fab26a03 100644 --- a/addons/website_google_map/controllers/main.py +++ b/addons/website_google_map/controllers/main.py @@ -52,7 +52,7 @@ class GoogleMap(http.Controller): else: partner_url = '/partners/' - google_maps_api_key = request.env['ir.config_parameter'].sudo().get_param('google_maps_api_key') + google_maps_api_key = request.website.google_maps_api_key values = { 'partner_url': partner_url, 'partner_data': json.dumps(partner_data), diff --git a/addons/website_membership/controllers/main.py b/addons/website_membership/controllers/main.py index 42dcf599220..f0cf843ace9 100644 --- a/addons/website_membership/controllers/main.py +++ b/addons/website_membership/controllers/main.py @@ -134,7 +134,7 @@ class WebsiteMembership(http.Controller): count_members += len(free_partner_ids) google_map_partner_ids = ",".join(str(it) for it in google_map_partner_ids) - google_maps_api_key = request.env['ir.config_parameter'].sudo().get_param('google_maps_api_key') + google_maps_api_key = request.website.google_maps_api_key partners = {p.id: p for p in Partner.sudo().browse(list(page_partner_ids))} |
