This is basically reverting commit [1] which was done a few years ago as improvement to [2], but it was a bit overkill IMHO. Indeed, there is a sort of hack when creating a page with special extension like "my-page.js" that will actually create a special page with special arch. The goal is for such pages to be `t-call`ed later. That's commit [2]. On top of that, when deleting such a special page, we introduced a mechanism to show the views and pages that would possibly `t-call` the that page which is requested to be deleted. That's commit [1]. It basically is mimicking what was already done when you change the URL of a normal page, we tell the user where that url is actually possibly used. But since the recent improvement in Odoo 16 done at [3], the page manager is now a backend list view. It means that multi delete is now a thing. Thus, the page dependencies behaviors (key and url) need to be refactored to handle multiple given URL/Key and not just one. We choose to remove the key dependencies part (only used for those special pages) instead of adapting it: - That 'hack' is probably almost never used - It's some code to maintain, eg now we need to refactor it - We would need some extra code to make it only triggered for website pages and not all records, unlike the url dependencies screen which concerns all records - That's an advanced feature (special pages), if you are using it, you probably knows how to handle a website and you don't need us to remind you where this special page's view is used. [1]: https://github.com/odoo/odoo/commit/a91a3a563338e746d6d23cd57551af30e322e367 [2]: https://github.com/odoo/odoo/commit/727d461e1d2bcec4571665b90b6d1630f671a0a3 [3]: https://github.com/odoo/odoo/commit/31cc10b91dc7762e23b4bde9b945be0c4ce3fe3b X-original-commit: 77f03abc56b147171eeba66bc55df5ee92c8af1a Part-of: odoo/odoo#103136
219 lines
10 KiB
XML
219 lines
10 KiB
XML
<?xml version="1.0"?>
|
|
<odoo>
|
|
|
|
<record id="website_pages_form_view" model="ir.ui.view">
|
|
<field name="name">website.page.form</field>
|
|
<field name="model">website.page</field>
|
|
<field name="arch" type="xml">
|
|
<form string="Website Page Settings">
|
|
<sheet>
|
|
<group>
|
|
<group>
|
|
<field name="name"/>
|
|
<field name="url"/>
|
|
<field name="view_id" context="{'display_website': True}" options="{'always_reload': True}"/>
|
|
<field name="website_id" options="{'no_create': True}" groups="website.group_multi_website"/>
|
|
<field name="track"/>
|
|
</group>
|
|
<group>
|
|
<field name="website_indexed"/>
|
|
<field name="is_published"/>
|
|
<field name="date_publish"/>
|
|
</group>
|
|
</group>
|
|
<label for="menu_ids" string="Related Menu Items"/>
|
|
<field name="menu_ids"/>
|
|
</sheet>
|
|
</form>
|
|
</field>
|
|
</record>
|
|
|
|
<record id="website_page_properties_view_form" model="ir.ui.view">
|
|
<field name="name">website.page.properties.form.view</field>
|
|
<field name="model">website.page</field>
|
|
<field name="arch" type="xml">
|
|
<form>
|
|
<notebook>
|
|
<page string="Name">
|
|
<group class="mt-4">
|
|
<field name="name" string="Page Name" placeholder="e.g. Home Page"/>
|
|
<field name="website_id" invisible="1"/>
|
|
<field name="url" string="Page URL" widget="page_url"/>
|
|
</group>
|
|
</page>
|
|
<page string="Publish">
|
|
<group class="mt-4">
|
|
<field name="is_in_menu" string="Show in Top Menu" widget="boolean_toggle"/>
|
|
<field name="is_homepage" string="Use as Homepage" widget="boolean_toggle"/>
|
|
<field name="website_indexed" string="Indexed" widget="boolean_toggle" help="Hide this page from search results"/>
|
|
<field name="is_published" string="Published" widget="boolean_toggle"/>
|
|
<field name="date_publish" widget="datetime"/>
|
|
<field name="visibility"/>
|
|
<field name="visibility_password_display" attrs="{'invisible': [('visibility', '!=', 'password')], 'required': [('visibility', '=', 'password')]}" password="True" string="Password"/>
|
|
<field name="groups_id" attrs="{'invisible': [('visibility', '!=', 'restricted_group')]}" string="Authorized Groups" widget="many2many_tags"/>
|
|
</group>
|
|
</page>
|
|
</notebook>
|
|
</form>
|
|
</field>
|
|
</record>
|
|
|
|
<record id="website_pages_tree_view" model="ir.ui.view">
|
|
<field name="name">website.page.list</field>
|
|
<field name="model">website.page</field>
|
|
<field name="priority">99</field>
|
|
<field name="arch" type="xml">
|
|
<tree js_class="website_pages_list" type="object" action="open_website_url" multi_edit="1" default_order="url asc, id asc">
|
|
<field name="is_homepage" invisible="1"/>
|
|
<field name="name" string="Page Title"/>
|
|
<field name="website_url" string="Page URL"/>
|
|
<field name="view_id" invisible="1"/>
|
|
|
|
<field name="website_indexed"/>
|
|
<field name="is_in_menu" string="Is In Main Menu"/>
|
|
<field name="is_seo_optimized"/>
|
|
<field name="is_published"/>
|
|
|
|
<field name="create_uid" invisible="1"/>
|
|
<field name="write_uid" widget="many2one_avatar" optional="hide"/>
|
|
<field name="write_date" optional="hide"/>
|
|
<field name="track" optional="hide"/>
|
|
|
|
<field name="website_id" groups="website.group_multi_website"/>
|
|
<button name="action_page_debug_view" type="object" title="Settings" icon="fa-bug fa-lg" groups="base.group_no_one"/>
|
|
</tree>
|
|
</field>
|
|
</record>
|
|
|
|
<record id="website_pages_kanban_view" model="ir.ui.view">
|
|
<field name="name">website.page.kanban</field>
|
|
<field name="model">website.page</field>
|
|
<field name="priority">99</field>
|
|
<field name="arch" type="xml">
|
|
<kanban js_class="website_pages_kanban" action="open_website_url" type="object" sample="1">
|
|
<field name="name"/>
|
|
<field name="is_homepage"/>
|
|
<field name="website_url"/>
|
|
<templates>
|
|
<t t-name="kanban-box">
|
|
<div class="d-flex flex-column">
|
|
<div class="o_text_overflow fw-bold mb-auto">
|
|
<span class="fs-3">
|
|
<i t-if="record.is_homepage.raw_value" class="fa fa-home pe-2"
|
|
title="Home page of the current website"/>
|
|
<t t-esc="record.name.value"/>
|
|
</span>
|
|
<div class="text-muted">
|
|
<t t-if="record.website_id.value">
|
|
<i class="fa fa-globe me-1" title="Website"/>
|
|
<field name="website_id" groups="website.group_multi_website"/>
|
|
</t>
|
|
</div>
|
|
<span class="text-primary" t-esc="record.website_url.value"/>
|
|
</div>
|
|
<div><field name="is_in_menu" widget="boolean"/> In Main Menu</div>
|
|
<div><field name="is_seo_optimized" widget="boolean"/> SEO Optimized</div>
|
|
<div class="border-top mt-2 pt-2">
|
|
<field name="is_published" widget="boolean_toggle"/>
|
|
<t t-if="record.is_published.raw_value">Published</t>
|
|
<t t-else="">Not Published</t>
|
|
<button
|
|
class="btn-link float-end p-0"
|
|
name="action_page_debug_view"
|
|
groups="base.group_no_one"
|
|
title="Settings"
|
|
type="object"
|
|
icon="fa-bug"
|
|
/>
|
|
</div>
|
|
</div>
|
|
</t>
|
|
</templates>
|
|
</kanban>
|
|
</field>
|
|
</record>
|
|
|
|
<record id="website_pages_view_search" model="ir.ui.view">
|
|
<field name="name">website.page.view.search</field>
|
|
<field name="model">website.page</field>
|
|
<field name="arch" type="xml">
|
|
<search string="Website Pages" >
|
|
<field name="url"/>
|
|
<filter string="Published" name="published" domain="[('website_published', '=', True)]"/>
|
|
<filter string="Not published" name="not_published" domain="[('website_published', '=', False)]"/>
|
|
<separator/>
|
|
<filter string="Tracked" name="tracked" domain="[('track', '=', True)]"/>
|
|
<filter string="Not tracked" name="not_tracked" domain="[('track', '=', False)]"/>
|
|
</search>
|
|
</field>
|
|
</record>
|
|
|
|
<record id="action_website_pages_list" model="ir.actions.act_window">
|
|
<field name="name">Website Pages</field>
|
|
<field name="res_model">website.page</field>
|
|
<field name="view_mode">tree,kanban</field>
|
|
<field name="view_ids" eval="[(5, 0, 0),
|
|
(0, 0, {'view_mode': 'tree', 'view_id': ref('website_pages_tree_view')}),
|
|
(0, 0, {'view_mode': 'kanban', 'view_id': ref('website_pages_kanban_view')}),
|
|
]"/>
|
|
</record>
|
|
|
|
<menuitem id="menu_website_pages_list"
|
|
parent="menu_content"
|
|
sequence="10"
|
|
name="Pages"
|
|
action="action_website_pages_list"/>
|
|
|
|
<!-- Extension of views for ir.ui.view and link with the page manager -->
|
|
|
|
<record id="view_view_form_extend" model="ir.ui.view">
|
|
<field name="model">ir.ui.view</field>
|
|
<field name="inherit_id" ref="base.view_view_form"/>
|
|
<field name="arch" type="xml">
|
|
<field name="inherit_id" position="attributes">
|
|
<attribute name="context">{'display_website': True}</attribute>
|
|
<attribute name="options">{'always_reload': True}</attribute>
|
|
</field>
|
|
<field name="model" position="before">
|
|
<field name="website_id" options="{'no_create': True}" groups="website.group_multi_website"/>
|
|
<label for="key"/>
|
|
<div class='o_row'>
|
|
<field name="key"/>
|
|
<button title="Show site map" attrs="{'invisible': [('type', '!=', 'qweb')]}" name="website.action_show_viewhierarchy" icon="fa-sitemap" type="action" class="btn btn-link"/>
|
|
</div>
|
|
<field name="page_ids" invisible="1" />
|
|
<field name="first_page_id" attrs="{'invisible': [('page_ids', '=', [])]}" />
|
|
<field name="visibility" attrs="{'invisible': [('type', '!=', 'qweb')]}" />
|
|
<field name="visibility_password_display" attrs="{'invisible': [('visibility', '!=', 'password')]}" password="True" string="Visibility Password" />
|
|
</field>
|
|
<sheet position="before">
|
|
<header>
|
|
<button type="action" name="website.action_website_pages_list"
|
|
string="Go to Page Manager" attrs="{'invisible': [('page_ids', '=', [])]}"/>
|
|
</header>
|
|
</sheet>
|
|
<field name="active" position="after">
|
|
<field name="track" attrs="{'invisible': [('type', '!=', 'qweb')]}" widget="boolean_toggle"/>
|
|
</field>
|
|
</field>
|
|
</record>
|
|
|
|
<record id="view_view_tree_inherit_website" model="ir.ui.view">
|
|
<field name="model">ir.ui.view</field>
|
|
<field name="inherit_id" ref="base.view_view_tree"/>
|
|
<field name="arch" type="xml">
|
|
<tree position="attributes">
|
|
<attribute name="decoration-muted">not active</attribute>
|
|
</tree>
|
|
<field name="name" position="after">
|
|
<field name="active" invisible="1"/>
|
|
<field name="website_id" groups="website.group_multi_website"/>
|
|
</field>
|
|
<field name="xml_id" position="before">
|
|
<field name="key" groups="website.group_multi_website"/>
|
|
</field>
|
|
</field>
|
|
</record>
|
|
|
|
</odoo>
|