A co-op can run the plain shop on one website and the group orders on another, but routes are registered process-wide: every /eskaera page answered on every website of the database, and Odoo had already copied the Eskaera menu to all of them. `website.eskaera_enabled` decides which websites serve it, on by default so installing changes nothing. It reaches the settings screen through `website_id`, so it follows the website selector there. Where it is off the routes raise NotFound and the menu is hidden. The menu is hidden rather than deleted, by extending `_compute_visible`. That keeps the record and any manual rename or reordering, so switching the feature back on restores it as it was. Note that a JSON route reports the 404 inside the JSON-RPC payload and still answers HTTP 200; that is the transport, not a hole in the guard, and a test pins it so the next reader does not take it for one. The three remaining settings (lazy loading, products per page, low stock threshold) are still `config_parameter`, so they stay global to the database. Two websites share their values. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
73 lines
3.8 KiB
XML
73 lines
3.8 KiB
XML
<?xml version="1.0" encoding="utf-8"?>
|
|
<odoo>
|
|
<record id="res_config_settings_view_form" model="ir.ui.view">
|
|
<field name="name">res.config.settings.view.form.inherit.aplicoop</field>
|
|
<field name="model">res.config.settings</field>
|
|
<field name="inherit_id" ref="website.res_config_settings_view_form"/>
|
|
<field name="arch" type="xml">
|
|
<xpath expr="//block[@id='website_info_settings']" position="after">
|
|
<h2>Eskaera</h2>
|
|
<div class="row mt16 o_settings_container" id="eskaera_website_settings">
|
|
<div class="col-12 col-lg-6 o_setting_box">
|
|
<div class="o_setting_left_pane">
|
|
<field name="eskaera_enabled"/>
|
|
</div>
|
|
<div class="o_setting_right_pane">
|
|
<label for="eskaera_enabled" string="Eskaera Group Orders"/>
|
|
<div class="text-muted">
|
|
Serve the collaborative purchasing pages on this
|
|
website. Turn it off on a website that only runs
|
|
the regular shop.
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<h2>Shop Performance</h2>
|
|
<div class="row mt16 o_settings_container" id="eskaera_shop_settings">
|
|
<div class="col-12 col-lg-6 o_setting_box">
|
|
<div class="o_setting_left_pane"/>
|
|
<div class="o_setting_right_pane">
|
|
<label for="eskaera_lazy_loading_enabled" string="Enable Lazy Loading"/>
|
|
<div class="text-muted">
|
|
Load products in pages instead of all at once
|
|
</div>
|
|
<div class="content-group">
|
|
<div class="mt16">
|
|
<field name="eskaera_lazy_loading_enabled" class="oe_inline"/>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="col-12 col-lg-6 o_setting_box">
|
|
<div class="o_setting_left_pane"/>
|
|
<div class="o_setting_right_pane">
|
|
<label for="eskaera_products_per_page" string="Products Per Page"/>
|
|
<div class="text-muted">
|
|
Number of products to load on initial page
|
|
</div>
|
|
<div class="content-group">
|
|
<div class="mt16">
|
|
<field name="eskaera_products_per_page" class="oe_inline"/>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="col-12 col-lg-6 o_setting_box">
|
|
<div class="o_setting_left_pane"/>
|
|
<div class="o_setting_right_pane">
|
|
<label for="low_stock_threshold" string="Low Stock Threshold"/>
|
|
<div class="text-muted">
|
|
Products with stock ≤ this value show "Low Stock" ribbon. Stock = 0 shows "Out of Stock" ribbon.
|
|
</div>
|
|
<div class="content-group">
|
|
<div class="mt16">
|
|
<field name="low_stock_threshold" class="oe_inline"/>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</xpath>
|
|
</field>
|
|
</record>
|
|
</odoo>
|