[IMP] website: add edit robots.txt in settings

task-2091358
This commit is contained in:
Jeremy Kersten
2019-12-16 11:07:19 +00:00
parent 767f25cc4e
commit ab56c9e464
10 changed files with 94 additions and 1 deletions
+1
View File
@@ -34,6 +34,7 @@
'views/ir_attachment_views.xml',
'views/res_partner_views.xml',
'wizard/base_language_install_views.xml',
'wizard/website_robots.xml',
],
'demo': [
'data/website_demo.xml',
+1 -1
View File
@@ -127,7 +127,7 @@ class Website(Home):
fields = country.get_address_fields()
return dict(fields=fields, states=[(st.id, st.name, st.code) for st in country.state_ids], phone_code=country.phone_code)
@http.route(['/robots.txt'], type='http', auth="public")
@http.route(['/robots.txt'], type='http', auth="public", website=True)
def robots(self, **kwargs):
return request.render('website.robots', {'url_root': request.httprequest.url_root}, mimetype='text/plain')
@@ -159,6 +159,16 @@ class ResConfigSettings(models.TransientModel):
'res_id': False,
}
def action_open_robots(self):
return {
'name': _("Robots.txt"),
'view_mode': 'form',
'res_model': 'website.robots',
'type': 'ir.actions.act_window',
"views": [[False, "form"]],
'target': 'new',
}
def install_theme_on_current_website(self):
self.website_id._force()
action = self.env.ref('website.theme_install_kanban_action').read()[0]
+2
View File
@@ -107,6 +107,8 @@ class Website(models.Model):
menu_id = fields.Many2one('website.menu', compute='_compute_menu', string='Main Menu')
homepage_id = fields.Many2one('website.page', string='Homepage')
robots_txt = fields.Text('Robots.txt', translate=False, groups='website.group_website_designer')
def _default_favicon(self):
img_path = get_resource_path('web', 'static/src/img/favicon.ico')
with tools.file_open(img_path, 'rb') as f:
@@ -309,6 +309,18 @@
<field name="social_default_image" widget="image" class="w-25 mt-2"/>
</div>
</div>
<div class="col-12 col-lg-6 o_setting_box" id="robots_setting">
<div class="o_setting_right_pane">
<span class="o_form_label">Robots.txt</span>
<span class="fa fa-lg fa-globe" title="Values set here are website-specific." groups="website.group_multi_website"/>
<div class="text-muted">
Tells to search engine crawlers which pages or files the crawler can or can't request from your site
</div>
<div class="mt8">
<button type="object" name="action_open_robots" string="Edit robots.txt" class="btn-link" icon="fa-android"/>
</div>
</div>
</div>
</div>
<h2>Features</h2>
@@ -934,6 +934,13 @@
<t t-translation="off">
User-agent: *
Sitemap: <t t-esc="url_root"/>sitemap.xml
##############
# custom #
##############
<t t-raw="request.website.sudo().robots_txt" />
</t>
</template>
+13
View File
@@ -46,6 +46,19 @@
</form>
</field>
</record>
<record id="view_arch_only" model="ir.ui.view">
<field name="name">website.ir_ui_view.arch_only</field>
<field name="model">ir.ui.view</field>
<field name="arch" type="xml">
<form>
<sheet>
<field name="arch"/>
</sheet>
</form>
</field>
</record>
<record id="view_website_form_view_themes_modal" model="ir.ui.view">
<field name="name">website.modal.form</field>
<field name="model">website</field>
+1
View File
@@ -2,3 +2,4 @@
# Part of Odoo. See LICENSE file for full copyright and licensing details.
from . import base_language_install
from . import website_robots
+20
View File
@@ -0,0 +1,20 @@
# -*- encoding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
from odoo import api, fields, models
class WebsiteRobots(models.TransientModel):
_name = "website.robots"
_description = "Robots.txt Editor"
content = fields.Text()
@api.model
def default_get(self, fields):
defaults = super(WebsiteRobots, self).default_get(fields)
defaults['content'] = self.env['website'].get_current_website().robots_txt
return defaults
def action_save(self):
self.env['website'].get_current_website().robots_txt = self.content
return {'type': 'ir.actions.act_window_close'}
+27
View File
@@ -0,0 +1,27 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<record id="view_edit_robots" model="ir.ui.view">
<field name="name">Edit Robots.txt</field>
<field name="model">website.robots</field>
<field name="arch" type="xml">
<form>
<field name="content"/>
<small>
<a role="button" class="btn btn-link" target="_blank" href="https://www.google.com/webmasters/tools/robots-testing-tool">
> Test your robots.txt with Google
</a>
<br/><br/>
Example of rule:<br/>
<code class='ml-4'>Disallow: /web/login</code><br/>
<code class='ml-4'>Allow: *</code>
</small>
<footer>
<button string="Save" name="action_save" type="object" class="oe_highlight"/>
<button string="Cancel" class="btn btn-default" special="cancel"/>
</footer>
</form>
</field>
</record>
</odoo>