Somehow, having theses 2 new `website.page` records created separately from their `ir.ui.view` would throw an error in dev-xml when installing website module. A task has been created in website team to track the origin of this bug. In the meantime, this commit will avoid the traceback by creating the view inside the page record. As the page's view is not intented to be inherited, it is the best way to write it anyway. Step to reproduce: - Start odoo in dev xml - Install website app Related to #27199 closes odoo/odoo#27210
536 lines
31 KiB
XML
536 lines
31 KiB
XML
<?xml version="1.0" encoding="utf-8"?>
|
|
<odoo>
|
|
<data>
|
|
|
|
<record id="base.main_company" model="res.company">
|
|
<field name="social_twitter">https://twitter.com/Odoo</field>
|
|
<field name="social_facebook">https://www.facebook.com/Odoo</field>
|
|
<field name="social_googleplus">https://plus.google.com/+Odooapps</field>
|
|
<field name="social_linkedin">https://www.linkedin.com/company/odoo</field>
|
|
</record>
|
|
|
|
</data>
|
|
|
|
<data noupdate="1">
|
|
<!--
|
|
Some demo data for front-end server action generating templates
|
|
-->
|
|
<template id="template_partner_post" name="Partner Post and Thanks (Website Server Action Demo)">
|
|
<t t-call="website.layout">
|
|
<t t-set="additional_title">Partner Detail</t>
|
|
<div id="wrap">
|
|
<div class="oe_structure">
|
|
<section>
|
|
<div class="container">
|
|
<div class="row">
|
|
<div class="col-md-12">
|
|
<h2>Thank you for posting a message !</h2>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</section>
|
|
</div>
|
|
</div>
|
|
</t>
|
|
</template>
|
|
|
|
<record id="action_partner_post" model="ir.actions.server">
|
|
<field name="name">Website: Partner Post and Thanks Demo</field>
|
|
<field name="website_published" eval="True"/>
|
|
<field name="website_path">partner_thanks</field>
|
|
<field name="model_id" ref="base.model_res_partner"/>
|
|
<field name="code">
|
|
partner = model
|
|
post_partner_id = request.params.get('partner_id')
|
|
post_body = request.params.get('body')
|
|
if post_partner_id:
|
|
try:
|
|
post_partner_id = int(post_partner_id)
|
|
except:
|
|
post_partner_id = False
|
|
if post_partner_id:
|
|
partner = model.browse(post_partner_id).exists()
|
|
if partner and post_body:
|
|
message = partner.message_post(body=post_body, subtype='mail.mt_comment')
|
|
values = {
|
|
'partner': partner,
|
|
}
|
|
response = request.website.render("website.template_partner_post", {'partner': partner})
|
|
</field>
|
|
<field name="state">code</field>
|
|
<field name="type">ir.actions.server</field>
|
|
</record>
|
|
|
|
<template id="template_partner_comment" name="Partner Comment (Website Server Action Demo)">
|
|
<t t-call="website.layout">
|
|
<t t-set="additional_title">Partners</t>
|
|
<div id="wrap">
|
|
<div class="oe_structure">
|
|
<section>
|
|
<div class="container">
|
|
<div class="row">
|
|
<div class="col-md-12">
|
|
<h1 class="text-center">Send a Message to our Partners</h1>
|
|
<h3 class="text-muted text-center">Discuss and Comments</h3>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</section>
|
|
</div>
|
|
<div class="container">
|
|
<div class="row">
|
|
<form class="form-horizontal" action="/website/action/website.action_partner_post" method="post">
|
|
<input type="hidden" name="csrf_token" t-att-value="request.csrf_token()"/>
|
|
<div class="form-group">
|
|
<label class="col-sm-2 control-label">Recipient</label>
|
|
<div class="col-sm-10">
|
|
<select t-if="partners" name="partner_id" class="form-control">
|
|
<t t-foreach="partners" t-as="partner"><option t-att-value="partner.id" t-esc="partner.name"/></t>
|
|
</select>
|
|
</div>
|
|
</div>
|
|
<div class="form-group">
|
|
<label class="col-sm-2 control-label">Message</label>
|
|
<div class="col-sm-10">
|
|
<textarea name="body" rows="10" class="form-control"/>
|
|
</div>
|
|
</div>
|
|
<div class="form-group">
|
|
<div class="col-sm-offset-2 col-sm-10">
|
|
<button type="submit" class="btn btn-primary">
|
|
Send <span class="fa fa-long-arrow-right"/>
|
|
</button>
|
|
</div>
|
|
</div>
|
|
</form>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</t>
|
|
</template>
|
|
|
|
<record id="action_partner_comment" model="ir.actions.server">
|
|
<field name="name">Website: Partners Comment Form</field>
|
|
<field name="website_published" eval="True"/>
|
|
<field name="website_path">partner_comment</field>
|
|
<field name="model_id" ref="base.model_res_partner"/>
|
|
<field name="code">
|
|
response = request.render("website.template_partner_comment", {
|
|
'partners': model.search([('customer', '=', True)]),
|
|
})
|
|
</field>
|
|
<field name="state">code</field>
|
|
<field name="type">ir.actions.server</field>
|
|
</record>
|
|
|
|
<record id="default_website" model="website">
|
|
<field name="name">Website localhost</field>
|
|
</record>
|
|
<record id="website2" model="website">
|
|
<field name="name">Website 0.0.0.0</field>
|
|
<field name="domain">0.0.0.0</field>
|
|
</record>
|
|
|
|
<record id="website2_homepage" model="ir.ui.view">
|
|
<field name="name">Home</field>
|
|
<field name="type">qweb</field>
|
|
<field name="key">website2.homepage</field>
|
|
<field name="arch" type="xml">
|
|
<t name="Home" priority="29" t-name="website2.homepage">
|
|
<t t-call="website.layout">
|
|
<div id="wrap" class="oe_structure oe_empty">
|
|
<div class="carousel slide mb32" id="myCarousel0" style="height: 320px;">
|
|
<ol class="carousel-indicators hidden">
|
|
<li class="active" data-slide-to="0" data-target="#myCarousel0"/>
|
|
</ol>
|
|
<div class="carousel-inner">
|
|
<div class="item image_text oe_img_bg active" style="background-image: url(http://0.0.0.0:8069/web/image/website.s_background_image_11);">
|
|
<div class="container">
|
|
<div class="row content">
|
|
<div class="carousel-content col-md-6 col-sm-12">
|
|
<h2>Homepage 0.0.0.0</h2>
|
|
<h3>Click to customize this text</h3>
|
|
<p>
|
|
<a class="btn btn-success btn-large" href="/contactus">Contact us</a>
|
|
</p>
|
|
</div>
|
|
<span class="carousel-img col-md-6 hidden-sm hidden-xs"> </span>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="carousel-control left hidden" data-slide="prev" data-target="#myCarousel0" href="#myCarousel0" style="width: 10%">
|
|
<i class="fa fa-chevron-left"/>
|
|
</div>
|
|
<div class="carousel-control right hidden" data-slide="next" data-target="#myCarousel0" href="#myCarousel0" style="width: 10%">
|
|
<i class="fa fa-chevron-right"/>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</t>
|
|
</t>
|
|
</field>
|
|
</record>
|
|
<record id="website2_homepage_page" model="website.page">
|
|
<field name="website_published">True</field>
|
|
<field name="url">/</field>
|
|
<field name="view_id" ref="website2_homepage" />
|
|
<field name="website_ids" eval="[(4, ref('website2'))]" />
|
|
</record>
|
|
|
|
<record id="website2_contactus" model="ir.ui.view">
|
|
<field name="name">Contact Us</field>
|
|
<field name="type">qweb</field>
|
|
<field name="key">website2.contactus</field>
|
|
<field name="arch" type="xml">
|
|
<t name="Contact Us" t-name="website2.contactus">
|
|
<t t-call="website.layout">
|
|
<div id="wrap">
|
|
<div class="oe_structure"/>
|
|
<div class="container">
|
|
<h1>Contact us</h1>
|
|
<div class="row">
|
|
<div class="col-md-8">
|
|
<div class="oe_structure">
|
|
<div>
|
|
<p>Contact us about anything related to our company or services.</p>
|
|
<p>We'll do our best to get back to you as soon as possible.</p>
|
|
</div>
|
|
</div>
|
|
<div class="text-center mt64" name="mail_button">
|
|
<a t-attf-href="mailto:{{ res_company.email }}" class="btn btn-primary" id="o_contact_mail">Send us an email</a>
|
|
</div>
|
|
</div>
|
|
<div class="col-md-4 mb32">
|
|
<t t-call="website.company_description"/>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="oe_structure"/>
|
|
</div>
|
|
</t>
|
|
</t>
|
|
</field>
|
|
</record>
|
|
<record id="website2_contactus_page" model="website.page">
|
|
<field name="website_published">True</field>
|
|
<field name="url">/contactus</field>
|
|
<field name="view_id" ref="website2_contactus" />
|
|
<field name="website_ids" eval="[(4, ref('website2'))]" />
|
|
</record>
|
|
|
|
<!-- Menu & Homepage -->
|
|
<record id="website2" model="website">
|
|
<field name="homepage_id" ref="website2_homepage_page" />
|
|
</record>
|
|
<record id="website2_main_menu" model="website.menu">
|
|
<field name="name">Top Menu</field>
|
|
<field name="website_id" ref="website2"/>
|
|
</record>
|
|
<record id="website2_menu_homepage" model="website.menu">
|
|
<field name="name">Home</field>
|
|
<field name="url">/</field>
|
|
<field name="parent_id" ref="website.website2_main_menu"/>
|
|
<field name="sequence" type="int">10</field>
|
|
<field name="website_id" ref="website2"/>
|
|
<field name="page_id" ref="website2_homepage_page" />
|
|
</record>
|
|
<record id="website2_menu_contactus" model="website.menu">
|
|
<field name="name">Contact us</field>
|
|
<field name="url">/contactus</field>
|
|
<field name="parent_id" ref="website.website2_main_menu"/>
|
|
<field name="sequence" type="int">60</field>
|
|
<field name="website_id" ref="website2"/>
|
|
<field name="page_id" ref="website2_contactus_page" />
|
|
</record>
|
|
|
|
<!-- BS Debug Page -->
|
|
<!-- Showcase all (most?) BS components and utilities -->
|
|
<record id="bs_debug_page" model="website.page">
|
|
<field name="name">BS Debug</field>
|
|
<field name="url">/website/demo/bootstrap</field>
|
|
<field name="website_published">False</field>
|
|
<field name="type">qweb</field>
|
|
<field name="key">website.bs_debug_page_view</field>
|
|
<field name="arch" type="xml">
|
|
<t name="Debug" t-name="website.bs_debug_page_view">
|
|
<t t-call="website.layout">
|
|
<t t-set="odoo_theme_colors" t-value="[['alpha', 'Alpha'], ['beta', 'Beta'], ['gamma', 'Gamma'], ['delta', 'Delta'], ['epsilon', 'Epsilon']]"/>
|
|
<t t-set="bs_basic_colors" t-value="[['primary', 'Primary'], ['default', 'Default']]"/>
|
|
<t t-set="bs_state_colors" t-value="[['success', 'Success'], ['info', 'Info'], ['warning', 'Warning'], ['danger', 'Danger']]"/>
|
|
<t t-set="bs_theme_colors" t-value="bs_basic_colors + bs_state_colors"/>
|
|
<t t-set="bs_gray_colors" t-value="[['white', 'White'], ['gray-lighter', 'Gray Lighter'], ['gray-light', 'Gray Light'], ['gray', 'Gray'], ['gray-dark', 'Gray Dark'], ['gray-darker', 'Gray Darker'], ['black', 'Black']]"/>
|
|
<div id="wrap oe_structure">
|
|
<section class="py-2">
|
|
<div class="container">
|
|
<h1>Components</h1>
|
|
<div class="row">
|
|
<div class="col-md-9">
|
|
<h2>Badge</h2>
|
|
<span class="badge mb4">This is a badge</span>
|
|
|
|
<h2 class="mt8">Label</h2>
|
|
<t t-foreach="bs_theme_colors" t-as="color">
|
|
<span t-attf-class="label mb4 label-#{color[0]}"><t t-esc="color[1]"/></span>
|
|
</t>
|
|
<h3 class="mt8 h5">Link</h3>
|
|
<t t-foreach="bs_theme_colors" t-as="color">
|
|
<a href="#" t-attf-class="label mb4 label-#{color[0]}"><t t-esc="color[1]"/></a>
|
|
</t>
|
|
<h3 class="mt8 h5">Autosizing</h3>
|
|
<div class="mt0 h3">
|
|
<t t-foreach="bs_theme_colors" t-as="color">
|
|
<span t-attf-class="label mb4 label-#{color[0]}"><t t-esc="color[1]"/></span>
|
|
</t>
|
|
</div>
|
|
|
|
<h2 class="mt16">Button</h2>
|
|
<t t-foreach="odoo_theme_colors" t-as="color">
|
|
<button type="button" t-attf-class="btn mb4 btn-#{color[0]}"><t t-esc="color[1]"/></button>
|
|
</t>
|
|
<br/>
|
|
<t t-foreach="bs_theme_colors" t-as="color">
|
|
<button type="button" t-attf-class="btn mb4 btn-#{color[0]}"><t t-esc="color[1]"/></button>
|
|
</t>
|
|
<h3 class="mt8 h6">Extra Small</h3>
|
|
<t t-foreach="odoo_theme_colors" t-as="color">
|
|
<button type="button" t-attf-class="btn mb4 btn-xs btn-#{color[0]}"><t t-esc="color[1]"/></button>
|
|
</t>
|
|
<br/>
|
|
<t t-foreach="bs_theme_colors" t-as="color">
|
|
<button type="button" t-attf-class="btn mb4 btn-xs btn-#{color[0]}"><t t-esc="color[1]"/></button>
|
|
</t>
|
|
<h3 class="mt8 h5">Small</h3>
|
|
<t t-foreach="odoo_theme_colors" t-as="color">
|
|
<button type="button" t-attf-class="btn mb4 btn-sm btn-#{color[0]}"><t t-esc="color[1]"/></button>
|
|
</t>
|
|
<br/>
|
|
<t t-foreach="bs_theme_colors" t-as="color">
|
|
<button type="button" t-attf-class="btn mb4 btn-sm btn-#{color[0]}"><t t-esc="color[1]"/></button>
|
|
</t>
|
|
<h3 class="mt8 h5">Large</h3>
|
|
<t t-foreach="odoo_theme_colors" t-as="color">
|
|
<button type="button" t-attf-class="btn mb4 btn-lg btn-#{color[0]}"><t t-esc="color[1]"/></button>
|
|
</t>
|
|
<br/>
|
|
<t t-foreach="bs_theme_colors" t-as="color">
|
|
<button type="button" t-attf-class="btn mb4 btn-lg btn-#{color[0]}"><t t-esc="color[1]"/></button>
|
|
</t>
|
|
|
|
<h2 class="mt16">Dropdown</h2>
|
|
<div class="dropdown">
|
|
<button type="button" class="btn btn-primary dropdown-toggle" data-toggle="dropdown">Toggle <span class="caret"/></button>
|
|
<ul class="dropdown-menu">
|
|
<li class="dropdown-header">Header</li>
|
|
<li><a href="#">Action</a></li>
|
|
<li><a href="#">Something else here</a></li>
|
|
<li class="divider"/>
|
|
<li><a href="#">Separated link</a></li>
|
|
</ul>
|
|
</div>
|
|
|
|
<h2 class="mt16">Navbar</h2>
|
|
<nav class="navbar navbar-default">
|
|
<div class="navbar-header">
|
|
<a class="navbar-brand" href="#">Navbar</a>
|
|
<button class="navbar-toggle collapsed" type="button" data-toggle="collapse" data-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
|
|
<span class="sr-only">Toggle navigation</span>
|
|
<span class="icon-bar"></span>
|
|
<span class="icon-bar"></span>
|
|
<span class="icon-bar"></span>
|
|
</button>
|
|
</div>
|
|
|
|
<div class="collapse navbar-collapse" id="navbarSupportedContent">
|
|
<ul class="nav navbar-nav">
|
|
<li class="active">
|
|
<a href="#">Home <span class="sr-only">(current)</span></a>
|
|
</li>
|
|
<li>
|
|
<a href="#">Link</a>
|
|
</li>
|
|
<li>
|
|
<a class="disabled" href="#">Disabled</a>
|
|
</li>
|
|
</ul>
|
|
<form class="navbar-form navbar-right">
|
|
<input class="form-control" type="search" placeholder="Search" aria-label="Search"/>
|
|
<button class="btn btn-success" type="submit">Search</button>
|
|
</form>
|
|
</div>
|
|
</nav>
|
|
|
|
<h2 class="mt16">Form</h2>
|
|
<form>
|
|
<div class="form-group">
|
|
<label for="exampleInputEmail1">Email address</label>
|
|
<input type="email" class="form-control" id="exampleInputEmail1" aria-describedby="emailHelp" placeholder="Enter email"/>
|
|
<small id="emailHelp" class="help-block text-muted">We'll never share your email with anyone else.</small>
|
|
</div>
|
|
</form>
|
|
|
|
<h2 class="mt16">Pagination</h2>
|
|
<nav>
|
|
<ul class="pagination">
|
|
<li class="disabled">
|
|
<a href="#" tabindex="-1">Previous</a>
|
|
</li>
|
|
<li>
|
|
<a href="#">1</a>
|
|
</li>
|
|
<li class="active">
|
|
<a href="#">2 <span class="sr-only">(current)</span></a>
|
|
</li>
|
|
<li>
|
|
<a href="#">3</a>
|
|
</li>
|
|
<li>
|
|
<a href="#">Next</a>
|
|
</li>
|
|
</ul>
|
|
</nav>
|
|
</div>
|
|
<div class="col-md-3">
|
|
<h2>Alert</h2>
|
|
<t t-foreach="bs_state_colors" t-as="color">
|
|
<div t-attf-class="alert alert-#{color[0]}">
|
|
This is a "<t t-esc="color[1]"/>" alert with a <a href="#" class="alert-link">link</a>.
|
|
</div>
|
|
</t>
|
|
|
|
<h2 class="mt16">Breadcrumb</h2>
|
|
<nav aria-label="breadcrumb">
|
|
<ol class="breadcrumb">
|
|
<li><a href="#">Home</a></li>
|
|
<li><a href="#">Library</a></li>
|
|
<li class="active" aria-current="page">Data</li>
|
|
</ol>
|
|
</nav>
|
|
|
|
<h2 class="mt16">Card</h2>
|
|
<div class="panel panel-default">
|
|
<div class="panel-heading">
|
|
Card Header
|
|
</div>
|
|
<div class="panel-body">
|
|
Card Body
|
|
</div>
|
|
<ul class="list-group">
|
|
<li class="list-group-item">Item 1</li>
|
|
<li class="list-group-item">Item 2</li>
|
|
</ul>
|
|
<div class="panel-footer">
|
|
Card Footer
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</section>
|
|
<section class="py-2">
|
|
<div class="container">
|
|
<h1>Utilities & Typography</h1>
|
|
<div class="row">
|
|
<div class="col-md-9">
|
|
<div>
|
|
<t t-foreach="odoo_theme_colors" t-as="color">
|
|
<div t-attf-class="bg-#{color[0]}" style="display: inline-block; padding: 4px 12px;">
|
|
<t t-esc="color[1]"/>
|
|
</div>
|
|
</t>
|
|
</div>
|
|
<div class="mt8">
|
|
<t t-foreach="bs_theme_colors" t-as="color">
|
|
<div t-attf-class="bg-#{color[0]}" style="display: inline-block; padding: 4px 12px;">
|
|
<t t-esc="color[1]"/>
|
|
</div>
|
|
</t>
|
|
</div>
|
|
<div class="mt8">
|
|
<t t-foreach="bs_gray_colors" t-as="color">
|
|
<div t-attf-class="bg-#{color[0]}" style="display: inline-block; padding: 4px 12px;">
|
|
<t t-esc="color[1]"/>
|
|
</div>
|
|
</t>
|
|
</div>
|
|
<div class="mt16">
|
|
<t t-foreach="odoo_theme_colors" t-as="color">
|
|
<div t-attf-class="text-#{color[0]}" style="display: inline-block; padding: 4px 12px;">
|
|
<t t-esc="color[1]"/>
|
|
</div>
|
|
</t>
|
|
</div>
|
|
<div class="mt8">
|
|
<t t-foreach="bs_theme_colors" t-as="color">
|
|
<div t-attf-class="text-#{color[0]}" style="display: inline-block; padding: 4px 12px;">
|
|
<t t-esc="color[1]"/>
|
|
</div>
|
|
</t>
|
|
</div>
|
|
<div class="mt8">
|
|
<t t-foreach="bs_gray_colors" t-as="color">
|
|
<div t-attf-class="text-#{color[0]}" style="display: inline-block; padding: 4px 12px;">
|
|
<t t-esc="color[1]"/>
|
|
</div>
|
|
</t>
|
|
</div>
|
|
</div>
|
|
<div class="col-md-3">
|
|
<h1>Headings 1</h1>
|
|
<h2>Headings 2</h2>
|
|
<h3>Headings 3</h3>
|
|
<h4>Headings 4</h4>
|
|
<h5>Headings 5</h5>
|
|
<h6>Headings 6</h6>
|
|
<p>Paragraph with <strong>bold</strong>, <span class="text-muted">muted</span> and <em>italic</em> texts</p>
|
|
<p><a href="#">Link</a></p>
|
|
<p><button type="button" class="btn btn-link">Link button</button></p>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</section>
|
|
</div>
|
|
</t>
|
|
</t>
|
|
</field>
|
|
</record>
|
|
|
|
<!-- Snippet Debug Page -->
|
|
<!-- Showcase all snippets -->
|
|
<record id="snippets_debug_page" model="website.page">
|
|
<field name="name">Snippet Debug</field>
|
|
<field name="url">/website/demo/snippets</field>
|
|
<field name="website_published">False</field>
|
|
<field name="type">qweb</field>
|
|
<field name="key">website.snippets_debug_page_view</field>
|
|
<field name="arch" type="xml">
|
|
<t name="Debug" t-name="website.snippets_debug_page_view">
|
|
<t t-call="website.layout">
|
|
<style>
|
|
#snippets_menu, #o_scroll > .o_panel > .o_panel_header {
|
|
display: none !important;
|
|
}
|
|
[data-oe-type="snippet"]:not([data-module-id])::before {
|
|
content: attr(name);
|
|
display: block;
|
|
padding: 16px;
|
|
background-color: lightgray;
|
|
color: black;
|
|
font-size: 24px;
|
|
}
|
|
[data-oe-type="snippet"]:not([data-module-id])::after {
|
|
content: "";
|
|
display: table;
|
|
clear: both;
|
|
}
|
|
</style>
|
|
<div id="wrap oe_structure">
|
|
<t t-call="website.snippets"/>
|
|
</div>
|
|
</t>
|
|
</t>
|
|
</field>
|
|
</record>
|
|
</data>
|
|
</odoo>
|