Note: the reordering will be done in upcoming days. Part of https://github.com/odoo/odoo/pull/49142 task-2229551 Co-authored-by: qsm-odoo <qsm@odoo.com>
1170 lines
61 KiB
XML
1170 lines
61 KiB
XML
<?xml version="1.0" encoding="utf-8"?>
|
||
<odoo>
|
||
|
||
<template id="submenu" name="Submenu">
|
||
<t t-set="has_visible_submenu" t-value="(submenu.is_mega_menu and submenu.is_visible) or submenu.child_id.filtered(lambda menu: menu.is_visible)"/>
|
||
<li t-if="submenu.is_visible and not has_visible_submenu" t-attf-class="#{item_class or ''}">
|
||
<a t-att-href="submenu.clean_url()"
|
||
t-attf-class="#{link_class or ''} #{'active' if submenu.clean_url() and unslug_url(request.httprequest.path) == unslug_url(submenu.clean_url()) else ''}"
|
||
role="menuitem"
|
||
t-ignore="true"
|
||
t-att-target="'_blank' if submenu.new_window else None">
|
||
<span t-field="submenu.name"/>
|
||
</a>
|
||
</li>
|
||
<li t-if="has_visible_submenu" t-attf-class="#{item_class or ''} dropdown #{
|
||
(submenu.clean_url() and submenu.clean_url() != '/' and any([request.httprequest.path == child.url for child in submenu.child_id if child.url]) or
|
||
(submenu.clean_url() and request.httprequest.path == submenu.clean_url())) and 'active'
|
||
} #{submenu.is_mega_menu and 'position-static'}">
|
||
<a t-attf-class="#{link_class or ''} dropdown-toggle #{submenu.is_mega_menu and 'o_mega_menu_toggle'}" data-toggle="dropdown" href="#">
|
||
<span t-field="submenu.name"/>
|
||
</a>
|
||
<div t-if="submenu.is_mega_menu"
|
||
t-attf-class="dropdown-menu o_mega_menu #{submenu.mega_menu_classes}"
|
||
data-name="Mega Menu"
|
||
t-field="submenu.mega_menu_content"/>
|
||
<ul t-else="" class="dropdown-menu" role="menu">
|
||
<t t-foreach="submenu.child_id" t-as="submenu">
|
||
<t t-call="website.submenu">
|
||
<t t-set="item_class" t-value="None"/>
|
||
<t t-set="link_class" t-value="'dropdown-item'"/>
|
||
</t>
|
||
</t>
|
||
</ul>
|
||
</li>
|
||
</template>
|
||
|
||
<template id="layout" name="Main layout" inherit_id="portal.frontend_layout">
|
||
<xpath expr="//html" position="before">
|
||
<t t-set="html_data" t-value="{
|
||
'lang': lang and lang.replace('_', '-'),
|
||
'data-website-id': website.id if website else None,
|
||
'data-editable': '1' if editable else None,
|
||
'data-translatable': '1' if translatable else None,
|
||
'data-edit_translations': '1' if edit_translations else None,
|
||
'data-view-xmlid': xmlid if editable or translatable else None,
|
||
'data-viewid': viewid if editable or translatable else None,
|
||
'data-main-object': repr(main_object) if editable or translatable else None,
|
||
'data-seo-object': repr(seo_object) if seo_object else None,
|
||
'data-oe-company-name': res_company.name,
|
||
}"/>
|
||
</xpath>
|
||
<xpath expr="//head" position="before">
|
||
<t t-if="not title">
|
||
<t t-if="not additional_title and main_object and 'name' in main_object">
|
||
<t t-set="additional_title" t-value="main_object.name"/>
|
||
</t>
|
||
<t t-set="default_title"> <t t-if="additional_title"><t t-raw="additional_title"/> | </t><t t-raw="(website or res_company).name"/> </t>
|
||
<t t-set="seo_object" t-value="seo_object or main_object"/>
|
||
<t t-if="seo_object and 'website_meta_title' in seo_object and seo_object.website_meta_title">
|
||
<t t-set="title" t-value="seo_object.website_meta_title"/>
|
||
</t>
|
||
<t t-else="">
|
||
<t t-set="title" t-value="default_title"></t>
|
||
</t>
|
||
</t>
|
||
<t t-set="x_icon" t-value="website.image_url(website, 'favicon')"/>
|
||
</xpath>
|
||
<xpath expr="//head/meta[last()]" position="after">
|
||
<meta name="generator" content="Odoo"/>
|
||
<t t-set="website_meta" t-value="seo_object and seo_object.get_website_meta() or {}"/>
|
||
<meta name="default_title" t-att-content="default_title" groups="website.group_website_designer"/>
|
||
<meta t-if="main_object and 'website_indexed' in main_object
|
||
and not main_object.website_indexed" name="robots" content="noindex"/>
|
||
<t t-set="seo_object" t-value="seo_object or main_object"/>
|
||
<t t-set="meta_description" t-value="seo_object and 'website_meta_description' in seo_object
|
||
and seo_object.website_meta_description or website_meta_description or website_meta.get('meta_description', '')"/>
|
||
<t t-set="meta_keywords" t-value="seo_object and 'website_meta_keywords' in seo_object
|
||
and seo_object.website_meta_keywords or website_meta_keywords"/>
|
||
<meta t-if="meta_description or editable" name="description" t-att-content="meta_description"/>
|
||
<meta t-if="meta_keywords or editable" name="keywords" t-att-content="meta_keywords"/>
|
||
<t t-if="seo_object">
|
||
<meta name="default_description" t-att-content="website_meta_description or website_meta.get('meta_description')" groups="website.group_website_designer"/>
|
||
<!-- OpenGraph tags for Facebook sharing -->
|
||
<t t-set="opengraph_meta" t-value="website_meta.get('opengraph_meta')"/>
|
||
<t t-if="opengraph_meta">
|
||
<t t-foreach="opengraph_meta" t-as="property">
|
||
<t t-if="isinstance(opengraph_meta[property], list)">
|
||
<t t-foreach="opengraph_meta[property]" t-as="meta_content">
|
||
<meta t-att-property="property" t-att-content="meta_content"/>
|
||
</t>
|
||
</t>
|
||
<t t-else="">
|
||
<meta t-att-property="property" t-att-content="opengraph_meta[property]"/>
|
||
</t>
|
||
</t>
|
||
</t>
|
||
<!-- Twitter tags for sharing -->
|
||
<t t-set="twitter_meta" t-value="website_meta.get('twitter_meta')"/>
|
||
<t t-if="opengraph_meta">
|
||
<t t-foreach="twitter_meta" t-as="t_meta">
|
||
<meta t-att-name="t_meta" t-att-content="twitter_meta[t_meta]"/>
|
||
</t>
|
||
</t>
|
||
</t>
|
||
|
||
<t t-if="request and request.is_frontend_multilang and website">
|
||
<t t-set="alternate_languages" t-value="website._get_alternate_languages(canonical_params=canonical_params)"/>
|
||
<t t-foreach="alternate_languages" t-as="lg">
|
||
<link rel="alternate" t-att-hreflang="lg['hreflang']" t-att-href="lg['href']"/>
|
||
</t>
|
||
</t>
|
||
<link t-if="request and website" rel="canonical" t-att-href="website._get_canonical_url(canonical_params=canonical_params)"/>
|
||
|
||
<link rel="preconnect" href="https://fonts.gstatic.com/" crossorigin=""/>
|
||
</xpath>
|
||
|
||
<xpath expr="//head/t[@t-js='false'][last()]" position="after">
|
||
<t t-call-assets="website.assets_editor" t-js="false" groups="website.group_website_publisher"/>
|
||
</xpath>
|
||
<xpath expr="//head/t[@t-css='false'][last()]" position="after">
|
||
<t t-call-assets="website.assets_editor" t-css="false" groups="website.group_website_publisher" lazy_load="True"/>
|
||
</xpath>
|
||
|
||
<xpath expr="//header" position="attributes">
|
||
<attribute name="data-name">Header</attribute>
|
||
</xpath>
|
||
<xpath expr="//header/nav" position="attributes">
|
||
<!-- Background now controlled by css configuration, using color combinations -->
|
||
<attribute name="class" add="o_colored_level o_cc" remove="bg-light" separator=" "/>
|
||
</xpath>
|
||
<xpath expr="//header//ul[@id='top_menu']" position="attributes">
|
||
<attribute name="class" separator=" " add="o_menu_loading"/>
|
||
</xpath>
|
||
<xpath expr="//header//ul[@id='top_menu']/li[hasclass('divider')]" position="attributes">
|
||
<attribute name="t-if">website.user_id != user_id</attribute>
|
||
</xpath>
|
||
<xpath expr="//header//ul[@id='top_menu']/li[hasclass('dropdown')]" position="attributes">
|
||
<attribute name="t-if">website.user_id != user_id</attribute>
|
||
</xpath>
|
||
<xpath expr="//header//ul[@id='top_menu']/li[hasclass('divider')]" position="before">
|
||
<t t-foreach="website.menu_id.child_id" t-as="submenu">
|
||
<t t-call="website.submenu">
|
||
<t t-set="item_class" t-value="'nav-item'"/>
|
||
<t t-set="link_class" t-value="'nav-link'"/>
|
||
</t>
|
||
</t>
|
||
</xpath>
|
||
|
||
<xpath expr="//footer" position="attributes">
|
||
<attribute name="data-name">Footer</attribute>
|
||
<!-- Background now controlled by css configuration, using color combinations -->
|
||
<attribute name="t-attf-class" add="o_colored_level o_cc" remove="bg-light" separator=" "/>
|
||
</xpath>
|
||
<xpath expr="//div[hasclass('o_footer_copyright')]" position="attributes">
|
||
<attribute name="data-name">Copyright</attribute>
|
||
<!-- Background now controlled by css configuration, using color combinations -->
|
||
<attribute name="class" add="o_colored_level o_cc" separator=" "/>
|
||
</xpath>
|
||
<xpath expr="//div[hasclass('o_footer_copyright')]//span[hasclass('o_footer_copyright_name')]" position="after">
|
||
<t t-call="website.language_selector"/>
|
||
</xpath>
|
||
<xpath expr="//t[@t-call='web.brand_promotion']/.." position="attributes">
|
||
<attribute name="class" add="o_not_editable" separator=" "/>
|
||
<attribute name="t-if">not editable</attribute>
|
||
</xpath>
|
||
|
||
<xpath expr="//div[@id='wrapwrap']" position="after">
|
||
<script id='tracking_code' t-if="website and website.google_analytics_key and not editable">
|
||
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
|
||
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
|
||
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
|
||
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
|
||
|
||
ga('create', '<t t-esc="website.google_analytics_key"/>'.trim(), 'auto');
|
||
ga('send','pageview');
|
||
</script>
|
||
</xpath>
|
||
|
||
<!-- Page options -->
|
||
<xpath expr="//div[@id='wrapwrap']" position="before">
|
||
<t groups="website.group_website_publisher">
|
||
<t t-foreach="['header_overlay', 'header_color', 'header_visible', 'footer_visible']" t-as="optionName">
|
||
<input t-if="optionName in main_object" type="hidden" class="o_page_option_data" t-att-name="optionName" t-att-value="main_object[optionName]"/>
|
||
</t>
|
||
</t>
|
||
</xpath>
|
||
<xpath expr="//div[@id='wrapwrap']" position="attributes">
|
||
<attribute name="t-attf-class" add="#{'o_header_overlay' if 'header_overlay' in main_object and main_object.header_overlay else ''}" separator=" "/>
|
||
</xpath>
|
||
<xpath expr="//header" position="attributes">
|
||
<attribute name="t-attf-class" add="#{main_object.header_color if 'header_color' in main_object else ''}" separator=" "/>
|
||
</xpath>
|
||
<xpath expr="//header" position="attributes">
|
||
<attribute name="t-attf-class" add="#{'d-none o_snippet_invisible' if 'header_visible' in main_object and not main_object.header_visible else ''}" separator=" "/>
|
||
</xpath>
|
||
<xpath expr="//footer[@id='bottom']" position="attributes">
|
||
<attribute name="t-attf-class" add="#{'d-none o_snippet_invisible' if 'footer_visible' in main_object and not main_object.footer_visible else ''}" separator=" "/>
|
||
</xpath>
|
||
</template>
|
||
|
||
<template id="custom_code_layout" name="Custom Code Layout" inherit_id="website.layout" priority="55">
|
||
<xpath expr="//head" position="inside">
|
||
<t t-raw="website.custom_code_head"/>
|
||
</xpath>
|
||
<xpath expr="//body" position="inside">
|
||
<t t-raw="website.custom_code_footer"/>
|
||
</xpath>
|
||
</template>
|
||
|
||
<template id="website_name" inherit_id="website.layout" name="Website Name" active="False">
|
||
<xpath expr="//header//a[hasclass('navbar-brand')]" position="replace">
|
||
<a class="navbar-brand" href="/">My Website</a>
|
||
</xpath>
|
||
</template>
|
||
|
||
<template id="brand_promotion" inherit_id="web.brand_promotion" name="Brand Promotion">
|
||
<xpath expr="//t[@t-call='web.brand_promotion_message']" position="replace">
|
||
<t t-call="web.brand_promotion_message">
|
||
<t t-set="_message">
|
||
Create a <a target="_blank" href="http://www.odoo.com/page/website-builder?utm_source=db&utm_medium=website">free website</a>
|
||
</t>
|
||
<t t-set="_utm_medium" t-valuef="website"/>
|
||
</t>
|
||
</xpath>
|
||
</template>
|
||
|
||
<!-- Header templates -->
|
||
<template id="template_header_hamburger" inherit_id="website.layout" name="Template Header Logo Hamburger" active="False">
|
||
<xpath expr="//header//nav[hasclass('navbar')]" position="attributes">
|
||
<attribute name="class" remove="navbar-expand-md" separator=" "/>
|
||
</xpath>
|
||
<xpath expr="//header//button[hasclass('navbar-toggler')]" position="replace">
|
||
<div class="o_navbar_toggler_container">$0</div>
|
||
</xpath>
|
||
</template>
|
||
|
||
<template id="template_header_navbar_text_center" inherit_id="website.layout" name="Template Header Navbar Text Center" active="False">
|
||
<xpath expr="//header//ul[hasclass('nav')]" position="attributes">
|
||
<attribute name="class" remove="text-right" add="text-center" separator=" "/>
|
||
</xpath>
|
||
</template>
|
||
|
||
<template id="template_header_hamburger_left" inherit_id="website.layout" name="Template Header Hamburger" active="False">
|
||
<xpath expr="//header//a[hasclass('navbar-brand')]" position="before">
|
||
<div class="o_navbar_toggler_container o_not_editable"></div>
|
||
</xpath>
|
||
<xpath expr="//div[hasclass('o_navbar_toggler_container')]" position="inside">
|
||
<xpath expr="//header//button[hasclass('navbar-toggler')]" position="move"/>
|
||
</xpath>
|
||
<xpath expr="//header//ul[hasclass('nav')]" position="attributes">
|
||
<attribute name="class" remove="text-right" add="text-left" separator=" "/>
|
||
</xpath>
|
||
</template>
|
||
|
||
<!-- Header options -->
|
||
<template id="option_layout_hide_header" inherit_id="website.layout" active="False">
|
||
<xpath expr="//header" position="before">
|
||
<t t-set="no_header" t-value="True"/>
|
||
</xpath>
|
||
</template>
|
||
|
||
<template id="layout_logo_show" inherit_id="website.layout" name="Show Logo">
|
||
<xpath expr="//header//a[hasclass('navbar-brand')]" position="replace">
|
||
<a href="/" class="navbar-brand logo">
|
||
<span t-field="website.logo" t-options="{'widget': 'image'}" role="img" t-att-aria-label="'Logo of %s' % website.name" t-att-title="website.name" />
|
||
</a>
|
||
</xpath>
|
||
</template>
|
||
|
||
<template id="header_logo_none" inherit_id="website.layout" name="No Logo" active="False">
|
||
<xpath expr="//header//a[hasclass('navbar-brand')]" position="replace">
|
||
<a href="/" class="navbar-brand d-none"/>
|
||
</xpath>
|
||
</template>
|
||
|
||
<template id="header_visibility_standard" inherit_id="website.layout" name="Header Effect Standard">
|
||
<xpath expr="//header" position="attributes">
|
||
<attribute name="t-attf-class" add="o_header_standard o_top_fixed_element" separator=" "/>
|
||
</xpath>
|
||
</template>
|
||
|
||
<template id="header_visibility_fixed" inherit_id="website.layout" name="Header Effect Fixed" active="False">
|
||
<xpath expr="//header" position="attributes">
|
||
<attribute name="t-attf-class" add="o_header_fixed o_top_fixed_element" separator=" "/>
|
||
</xpath>
|
||
</template>
|
||
|
||
<template id="header_visibility_disappears" inherit_id="website.layout" name="Header Effect Disappears" active="False">
|
||
<xpath expr="//header" position="attributes">
|
||
<attribute name="t-attf-class" add="o_header_disappears o_top_fixed_element" separator=" "/>
|
||
</xpath>
|
||
</template>
|
||
|
||
<template id="header_visibility_fade_out" inherit_id="website.layout" name="Header Effect Fade Out" active="False">
|
||
<xpath expr="//header" position="attributes">
|
||
<attribute name="t-attf-class" add="o_header_fade_out o_top_fixed_element" separator=" "/>
|
||
</xpath>
|
||
</template>
|
||
|
||
<template id="no_autohide_menu" inherit_id="website.layout" active="False">
|
||
<xpath expr="//header" position="attributes">
|
||
<attribute name="t-attf-class" add="#{'o_no_autohide_menu'}" separator=" "/>
|
||
</xpath>
|
||
</template>
|
||
|
||
<template id="header_shadow" inherit_id="website.layout" name="Header Shadow" active="False">
|
||
<xpath expr="//header" position="attributes">
|
||
<attribute name="t-attf-class" add="shadow" separator=" "/>
|
||
</xpath>
|
||
</template>
|
||
|
||
<template id="header_hoverable_dropdown" inherit_id="website.layout" name="Header Hoverable Dropdown" active="False">
|
||
<xpath expr="//header" position="attributes">
|
||
<attribute name="t-attf-class" add="o_hoverable_dropdown" separator=" "/>
|
||
</xpath>
|
||
</template>
|
||
|
||
<template id="header_button" inherit_id="website.layout" name="Header Button" active="False">
|
||
<xpath expr="//ul[@id='top_menu']" position="inside">
|
||
<li class="nav-item align-self-md-center ml-1 o_header_menu_button">
|
||
<a href="/contactus" class="btn btn-primary">Contact us</a>
|
||
</li>
|
||
</xpath>
|
||
</template>
|
||
|
||
<!-- Features template -->
|
||
<template id="login_layout" inherit_id="web.login_layout" name="Website Login Layout" priority="20">
|
||
<xpath expr="t" position="replace">
|
||
<t t-call="website.layout">
|
||
<div class="oe_website_login_container" t-raw="0"/>
|
||
</t>
|
||
</xpath>
|
||
</template>
|
||
|
||
<!-- Footer options -->
|
||
<template id="footer_custom" inherit_id="website.layout" name="Footer">
|
||
<xpath expr="//div[@id='footer']" position="replace">
|
||
<div id="footer" class="oe_structure oe_structure_solo" t-ignore="true" t-if="not no_footer">
|
||
<section class="s_text_block pt16 pb8" data-snippet="s_text_block">
|
||
<div class="container">
|
||
<div class="row">
|
||
<div class="col-lg-4">
|
||
<h5>Our Products & Services</h5>
|
||
<ul class="list-unstyled">
|
||
<li><a href="/">Home</a></li>
|
||
</ul>
|
||
</div>
|
||
<div class="col-lg-4" id="connect">
|
||
<h5>Connect with us</h5>
|
||
<ul class="list-unstyled">
|
||
<li><a href="/contactus">Contact us</a></li>
|
||
<li><i class="fa fa-phone fa-fw"/> <span class="o_force_ltr"><a href="tel:1 (650) 691-3277">1 (650) 691-3277</a></span></li>
|
||
<li><i class="fa fa-envelope fa-fw"/> <span><a href="mailto:info@yourcompany.example.com">info@yourcompany.example.com</a></span></li>
|
||
</ul>
|
||
<p class="o_footer_social_media_links">
|
||
<a href="/website/social/facebook" class="btn btn-sm btn-link" target="_blank"><i class="fa fa-2x fa-facebook-square"/></a>
|
||
<a href="/website/social/twitter" class="btn btn-sm btn-link" target="_blank"><i class="fa fa-2x fa-twitter"/></a>
|
||
<a href="/website/social/linkedin" class="btn btn-sm btn-link" target="_blank"><i class="fa fa-2x fa-linkedin"/></a>
|
||
<a href="/website/social/youtube" class="btn btn-sm btn-link" target="_blank"><i class="fa fa-2x fa-youtube-play"/></a>
|
||
<a href="/website/social/github" class="btn btn-sm btn-link" target="_blank"><i class="fa fa-2x fa-github"/></a>
|
||
<a href="/website/social/instagram" class="btn btn-sm btn-link" target="_blank"><i class="fa fa-2x fa-instagram"/></a>
|
||
</p>
|
||
</div>
|
||
<div class="col-lg-4">
|
||
<div class="o_footer_about_us">
|
||
<h5>
|
||
<span>YourCompany</span>
|
||
</h5>
|
||
<p>
|
||
We are a team of passionate people whose goal is to improve everyone's
|
||
life through disruptive products. We build great products to solve your
|
||
business problems.
|
||
</p>
|
||
<p>
|
||
Our products are designed for small to medium size companies willing to optimize
|
||
their performance.
|
||
</p>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</section>
|
||
</div>
|
||
</xpath>
|
||
</template>
|
||
|
||
<!-- Logo - About us (below)-->
|
||
<template id="template_footer_logo_about_us_below" inherit_id="website.layout" name="Template Footer Logo About Us Below" active="False">
|
||
<xpath expr="//div[@id='footer']" position="replace">
|
||
<div id="footer" class="oe_structure oe_structure_solo" t-ignore="true" t-if="not no_footer">
|
||
<section class="s_text_block pt16 pb8">
|
||
<div class="container">
|
||
<div class="row">
|
||
<div class="col-md-5 o_footer_logo">
|
||
<a href="/" class="footer-brand logo">
|
||
<img src="/website/static/src/img/website_logo.png" class="img-fluid" aria-label="Logo of MyCompany" title="MyCompany" role="img" style="width: 50%;"/>
|
||
</a>
|
||
</div>
|
||
</div>
|
||
<div class="row">
|
||
<div class="col-lg-5">
|
||
<div class="o_footer_about_us">
|
||
<h5>
|
||
<span>YourCompany</span>
|
||
</h5>
|
||
<p>
|
||
We are a team of passionate people whose goal is to improve everyone's
|
||
life through disruptive products. We build great products to solve your
|
||
business problems.
|
||
</p>
|
||
<p>
|
||
Our products are designed for small to medium size companies willing to optimize
|
||
their performance.
|
||
</p>
|
||
</div>
|
||
</div>
|
||
<div class="col-lg-7 text-lg-right">
|
||
<p class="o_footer_social_media_links text-lg-right">
|
||
<a href="/website/social/facebook" class="btn btn-sm btn-link" target="_blank"><i class="fa fa-2x fa-facebook-square"/></a>
|
||
<a href="/website/social/twitter" class="btn btn-sm btn-link" target="_blank"><i class="fa fa-2x fa-twitter"/></a>
|
||
<a href="/website/social/linkedin" class="btn btn-sm btn-link" target="_blank"><i class="fa fa-2x fa-linkedin"/></a>
|
||
<a href="/website/social/youtube" class="btn btn-sm btn-link" target="_blank"><i class="fa fa-2x fa-youtube-play"/></a>
|
||
<a href="/website/social/github" class="btn btn-sm btn-link" target="_blank"><i class="fa fa-2x fa-github"/></a>
|
||
<a href="/website/social/instagram" class="btn btn-sm btn-link" target="_blank"><i class="fa fa-2x fa-instagram"/></a>
|
||
</p>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</section>
|
||
</div>
|
||
</xpath>
|
||
</template>
|
||
|
||
<!-- Links - Address - Logo-->
|
||
<template id="template_footer_links_address_logo" inherit_id="website.layout" name="Template Footer Links Address Logo" active="False">
|
||
<xpath expr="//div[@id='footer']" position="replace">
|
||
<div id="footer" class="oe_structure oe_structure_solo" t-ignore="true" t-if="not no_footer">
|
||
<section class="s_text_block pt16 pb8">
|
||
<div class="container">
|
||
<p class="o_footer_social_media_links">
|
||
<a href="/website/social/facebook" class="btn btn-sm btn-link" target="_blank"><i class="fa fa-2x fa-facebook-square"/></a>
|
||
<a href="/website/social/twitter" class="btn btn-sm btn-link" target="_blank"><i class="fa fa-2x fa-twitter"/></a>
|
||
<a href="/website/social/linkedin" class="btn btn-sm btn-link" target="_blank"><i class="fa fa-2x fa-linkedin"/></a>
|
||
<a href="/website/social/youtube" class="btn btn-sm btn-link" target="_blank"><i class="fa fa-2x fa-youtube-play"/></a>
|
||
<a href="/website/social/github" class="btn btn-sm btn-link" target="_blank"><i class="fa fa-2x fa-github"/></a>
|
||
<a href="/website/social/instagram" class="btn btn-sm btn-link" target="_blank"><i class="fa fa-2x fa-instagram"/></a>
|
||
</p>
|
||
<ul class="list-inline">
|
||
<li class="list-inline-item"><a href="/">Home</a></li>
|
||
<li class="list-inline-item"><a href="/contactus">Contact us</a></li>
|
||
</ul>
|
||
<div class="o_footer_address">
|
||
250 Executive Park Blvd, Suite 3400<br/>San Francisco CA 94134<br/>United States
|
||
</div>
|
||
<div class="row s_nb_column_fixed">
|
||
<div class="offset-md-3 col-md-6 o_footer_logo">
|
||
<a href="/" class="footer-brand logo">
|
||
<img src="/website/static/src/img/website_logo.png" class="img-fluid" aria-label="Logo of MyCompany" title="MyCompany" role="img" style="width: 50%;"/>
|
||
</a>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</section>
|
||
</div>
|
||
</xpath>
|
||
</template>
|
||
|
||
<!-- Website name - Logo - (below) Links - About us-->
|
||
<template id="template_footer_name_logo_links_about_us" inherit_id="website.layout" name="Template Footer Name Logo Links About us" active="False">
|
||
<xpath expr="//div[@id='footer']" position="replace">
|
||
<div id="footer" class="oe_structure oe_structure_solo" t-ignore="true" t-if="not no_footer">
|
||
<section class="s_text_block pt16 pb8">
|
||
<div class="container">
|
||
<div class="row mt-2 mb-4">
|
||
<div class="col-lg-6 mb-3 mb-lg-0">
|
||
<h3><a href="/" class="text-decoration-none">YourCompany</a></h3>
|
||
</div>
|
||
<div class="col-lg-6 o_footer_logo text-center text-lg-right">
|
||
<a href="/" class="footer-brand logo">
|
||
<img src="/website/static/src/img/website_logo.png" class="img-fluid" aria-label="Logo of MyCompany" title="MyCompany" role="img" style="width: 50%;"/>
|
||
</a>
|
||
</div>
|
||
</div>
|
||
<div class="row">
|
||
<div class="col-lg-6">
|
||
<ul class="list-inline">
|
||
<li class="list-inline-item"><a href="/">Home</a></li>
|
||
<li class="list-inline-item"><a href="/contactus">Contact us</a></li>
|
||
</ul>
|
||
</div>
|
||
<div class="col-lg-6 text-lg-right">
|
||
<p>
|
||
We are a team of passionate people whose goal is to improve everyone's
|
||
life through disruptive products. We build great products to solve your
|
||
business problems. Our products are designed for small to medium size
|
||
companies willing to optimize their performance.
|
||
</p>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</section>
|
||
</div>
|
||
</xpath>
|
||
</template>
|
||
|
||
<!-- Logo only-->
|
||
<template id="template_footer_logo_only" inherit_id="website.layout" name="Template Footer Logo Only" active="False">
|
||
<xpath expr="//div[@id='footer']" position="replace">
|
||
<div id="footer" class="oe_structure oe_structure_solo" t-ignore="true" t-if="not no_footer">
|
||
<section class="s_text_block pt16 pb8">
|
||
<div class="container">
|
||
<div class="row s_nb_column_fixed">
|
||
<div class="offset-md-3 col-md-6 o_footer_logo text-center my-3">
|
||
<a href="/" class="footer-brand logo">
|
||
<img src="/website/static/src/img/website_logo.png" class="img-fluid" aria-label="Logo of MyCompany" title="MyCompany" role="img" style="width: 50%;"/>
|
||
</a>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</section>
|
||
</div>
|
||
</xpath>
|
||
</template>
|
||
|
||
<!-- Address - Logo (below)-->
|
||
<template id="template_footer_address_logo" inherit_id="website.layout" name="Template Footer Address Logo" active="False">
|
||
<xpath expr="//div[@id='footer']" position="replace">
|
||
<div id="footer" class="oe_structure oe_structure_solo" t-ignore="true" t-if="not no_footer">
|
||
<section class="s_text_block pt16 pb8 text-center">
|
||
<div class="container">
|
||
<div class="m-4">
|
||
YourCompany, 250 Executive Park Blvd, Suite 3400,<br/>
|
||
San Francisco CA 94134, United States<br/>
|
||
<a href="tel:+1 (650) 691-3277">+1 (650) 691-3277</a> - <a href="mailto:info@yourcompany.example.com">info@yourcompany.example.com</a>
|
||
</div>
|
||
<div class="row">
|
||
<div class="offset-lg-3 col-lg-6 o_footer_logo my-4">
|
||
<a href="/" class="footer-brand logo">
|
||
<img src="/website/static/src/img/website_logo.png" class="img-fluid" aria-label="Logo of MyCompany" title="MyCompany" role="img" style="width: 50%;"/>
|
||
</a>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</section>
|
||
</div>
|
||
</xpath>
|
||
</template>
|
||
|
||
<!-- slideout effect -->
|
||
<template id="template_footer_slideout" inherit_id="website.layout" name="Template Footer Slideout" active="False">
|
||
<xpath expr="//footer[@id='bottom']" position="attributes">
|
||
<attribute name="t-attf-class" add="o_footer_slideout" separator=" "/>
|
||
</xpath>
|
||
</template>
|
||
|
||
<!-- Hide Copyright -->
|
||
<template id="footer_no_copyright" inherit_id="website.layout" name="Footer No Copyright" active="False">
|
||
<xpath expr="//div[hasclass('o_footer_copyright')]" position="before">
|
||
<t t-set="no_copyright" t-value="True"/>
|
||
</xpath>
|
||
</template>
|
||
|
||
<template id="cookies_bar" inherit_id="website.footer_custom" name="Cookies Bar">
|
||
<xpath expr="//footer" position="after">
|
||
<div id="website_cookies_bar" t-if="website.cookies_bar" class="s_popup o_snippet_invisible" data-name="Cookies Bar" data-vcss="001" data-invisible="1">
|
||
<div class="modal s_popup_bottom s_popup_no_backdrop o_cookies_discrete"
|
||
data-show-after="500"
|
||
data-display="afterDelay"
|
||
data-consents-duration="999"
|
||
data-focus="false"
|
||
data-backdrop="false"
|
||
data-keyboard="false"
|
||
tabindex="-1"
|
||
role="dialog">
|
||
<div class="modal-dialog d-flex s_popup_size_full">
|
||
<div class="modal-content oe_structure">
|
||
<section class="o_colored_level o_cc o_cc1">
|
||
<div class="container">
|
||
<div class="row">
|
||
<div class="col-lg-8 pt16">
|
||
<p>We use cookies to provide you a better user experience.</p>
|
||
</div>
|
||
<div class="col-lg-4 pt16 text-right">
|
||
<a href="/cookie-policy" class="o_cookies_bar_text_policy btn btn-link btn-sm">Cookie Policy</a>
|
||
<a href="#" role="button" class="js_close_popup o_cookies_bar_text_button btn btn-primary btn-sm">I agree</a>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</section>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</xpath>
|
||
</template>
|
||
|
||
<template id="language_selector" name="Language Selector">
|
||
<ul class="js_language_selector mb0 list-inline" t-if="(request and request.is_frontend_multilang and len(languages) > 1) or (website and (editable or translatable))">
|
||
<li class="list-inline-item">
|
||
<div class="dropup">
|
||
<button class="btn btn-sm btn-secondary dropdown-toggle" type="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="true">
|
||
<span t-esc="list(filter(lambda lg : lg[0] == lang, languages))[0][2].split('/').pop()"/>
|
||
<span class="caret ml4"/>
|
||
</button>
|
||
<div class="dropdown-menu" role="menu">
|
||
<t t-foreach="languages" t-as="lg">
|
||
<a t-att-href="url_for(request.httprequest.path + '?' + keep_query(), lang_code=lg[0])"
|
||
class="dropdown-item js_change_lang"
|
||
t-att-data-url_code="lg[1]">
|
||
<t t-esc="lg[2].split('/').pop()"/>
|
||
</a>
|
||
</t>
|
||
</div>
|
||
</div>
|
||
</li>
|
||
<li groups="website.group_website_publisher" class="list-inline-item">
|
||
<t t-set="url_return" t-value="quote_plus(url_for('', '[lang]') + '?' + keep_query())"/>
|
||
<a class="d-none d-sm-block" t-attf-href="/web#action=base.action_view_base_language_install&website_id=#{website.id if website else ''}&url_return=#{url_return}">
|
||
<i class="fa fa-plus-circle"/>
|
||
Add a language...
|
||
</a>
|
||
</li>
|
||
</ul>
|
||
</template>
|
||
|
||
<template id="record_cover">
|
||
<t t-set="_cp" t-value="_cp or json.loads(_record.cover_properties)"/>
|
||
<t t-set="default_cover_name">Cover</t>
|
||
<div t-att-data-name="display_opt_name or default_cover_name"
|
||
t-att-style="_cp.get('background_color_style')"
|
||
t-att-data-use_size="use_size"
|
||
t-att-data-use_filters="use_filters"
|
||
t-att-data-use_text_align="use_text_align"
|
||
t-att-data-res-model="request.env.user.has_group('website.group_website_publisher') and _record._name"
|
||
t-att-data-res-id="request.env.user.has_group('website.group_website_publisher') and _record.id"
|
||
t-attf-class="o_record_cover_container d-flex flex-column h-100 o_colored_level o_cc #{_cp.get('background_color_class')} #{use_size and _cp.get('resize_class')} #{use_text_align and _cp.get('text_align_class')} #{additionnal_classes}">
|
||
<div t-attf-class="o_record_cover_component o_record_cover_image #{snippet_autofocus and 'o_we_snippet_autofocus'}" t-attf-style="background-image: #{_cp.get('background-image')};"/>
|
||
<div t-if="use_filters" t-attf-class="o_record_cover_component o_record_cover_filter oe_black" t-attf-style="opacity: #{_cp.get('opacity', 0.0)};"/>
|
||
<t t-raw="0"/>
|
||
</div>
|
||
</template>
|
||
|
||
<!-- Util template -->
|
||
<template id="publish_management">
|
||
<div groups="website.group_website_publisher" t-ignore="true" class="float-right css_editable_mode_hidden" t-att-style="style or None">
|
||
<div t-attf-class="btn-group #{btn_class} js_publish_management #{object.website_published and 'css_published' or 'css_unpublished'}" t-att-data-id="object.id" t-att-data-object="object._name" t-att-data-description="env['ir.model']._get(object._name).display_name" t-att-data-controller="publish_controller">
|
||
<button class="btn btn-danger js_publish_btn">Unpublished</button>
|
||
<button class="btn btn-success js_publish_btn">Published</button>
|
||
<button type="button" t-attf-class="btn btn-default dropdown-toggle dropdown-toggle-split" t-att-id="'dopprod-%s' % object.id" data-toggle="dropdown"/>
|
||
<div class="dropdown-menu" role="menu" t-att-aria-labelledby="'dopprod-%s' % object.id">
|
||
<t t-raw="0"/>
|
||
<a role="menuitem" t-attf-href="/web#view_type=form&model=#{object._name}&id=#{object.id}&action=#{action}&menu_id=#{menu or object.env.ref('website.menu_website_configuration').id}"
|
||
title='Edit in backend' class="dropdown-item" t-if="publish_edit">Edit</a>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</template>
|
||
|
||
<template id="publish_short">
|
||
<t groups="website.group_website_publisher" t-ignore="true">
|
||
<div t-attf-class="float-right js_publish_management #{object.website_published and 'css_published' or 'css_unpublished'}" t-att-data-id="object.id" t-att-data-object="object._name" t-att-data-description="env['ir.model']._get(object._name).display_name" t-att-data-controller="publish_controller">
|
||
<button t-attf-class="btn btn-danger js_publish_btn #{additionnal_btn_classes or ''}">Unpublished</button>
|
||
<button t-attf-class="btn btn-success js_publish_btn #{additionnal_btn_classes or ''}">Published</button>
|
||
</div>
|
||
</t>
|
||
</template>
|
||
|
||
<template id="pager" name="Pager" inherit_id="portal.pager">
|
||
</template>
|
||
|
||
<!-- Layout options -->
|
||
<template id="option_layout_boxed_variables" inherit_id="website._assets_primary_variables" active="False">
|
||
<xpath expr="//link[last()]" position="after">
|
||
<link rel="stylesheet" type="text/scss" href="/website/static/src/scss/options/layout/option_layout_boxed_variables.scss"/>
|
||
</xpath>
|
||
</template>
|
||
|
||
<template id="option_custom_body_image" inherit_id="website.assets_frontend" active="False">
|
||
<xpath expr="//link[last()]" position="after">
|
||
<style>
|
||
<!-- Patched by JS option -->
|
||
</style>
|
||
</xpath>
|
||
</template>
|
||
|
||
<template id="option_custom_body_pattern" inherit_id="website.assets_frontend" active="False">
|
||
<xpath expr="//link[last()]" position="after">
|
||
<link rel="stylesheet" type="text/scss" href="/website/static/src/scss/options/layout/option_custom_body_pattern.scss"/>
|
||
</xpath>
|
||
</template>
|
||
|
||
<template id="kanban">
|
||
<t t-set="step"><t t-esc="step or 0"/></t>
|
||
<t t-set="scope"><t t-esc="scope or 0"/></t>
|
||
<t t-set="orderby"><t t-esc="orderby or 'name'"/></t>
|
||
<t t-raw="website.kanban(model, domain, column, template, step=step, scope=scope, orderby=orderby)"/>
|
||
</template>
|
||
|
||
<template id="kanban_contain">
|
||
<table class="table js_kanban">
|
||
<thead>
|
||
<tr>
|
||
<t t-set="width" t-valuef="{{ round(100.0 / (len(objects) if objects else 1), 2) }}%"/>
|
||
<t t-foreach="objects" t-as="obj">
|
||
<th t-att-width="width">
|
||
<div t-field="obj['column_id'].name" class="text-center"></div>
|
||
</th>
|
||
</t>
|
||
</tr>
|
||
</thead>
|
||
<tbody>
|
||
<tr>
|
||
<t t-foreach="objects" t-as="obj">
|
||
<td class="js_kanban_col" t-att-data-template="template"
|
||
t-att-data-domain="obj['domain']"
|
||
t-att-data-page_count="obj['page_count']"
|
||
t-att-data-model="obj['model']"
|
||
t-att-data-step="obj['step']"
|
||
t-att-data-orderby="obj['orderby']">
|
||
<t t-foreach="obj['object_ids']" t-as="object_id">
|
||
<t t-call="#{ template }"></t>
|
||
</t>
|
||
<!-- pager -->
|
||
<div t-if="1 != obj['page_end']" class="pagination pagination-centered"><!-- FIXME -->
|
||
<ul>
|
||
<li t-attf-class="prev #{'active' if obj['page'] == 1 else '' }">
|
||
<a t-att-href=" '%s,%s-%s' % (obj['kanban_url'], obj['column_id'].id, (obj['page'] > 1 and obj['page']-1 or 1)) ">Prev</a></li>
|
||
<t t-foreach="range(obj['page_start'], obj['page_end']+1)" t-as="p">
|
||
<li t-att-class=" 'active' if obj['page'] == p else None ">
|
||
<a t-att-href=" '%s,%s-%s' % (obj['kanban_url'], obj['column_id'].id, p)" t-esc="p"></a></li>
|
||
</t>
|
||
<li t-attf-class="next #{'active' if obj['page'] == obj['page_end'] else '' }">
|
||
<a t-att-href=" '%s,%s-%s' % (obj['kanban_url'], obj['column_id'].id, (obj['page'] < obj['page_end'] and obj['page']+1 or obj['page_end']) )">Next</a></li>
|
||
</ul>
|
||
</div>
|
||
</td>
|
||
</t>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
</template>
|
||
|
||
<!-- Error and special pages -->
|
||
<template id="website_info" name="Odoo Information">
|
||
<t t-call="website.layout">
|
||
<div id="wrap"/>
|
||
</t>
|
||
</template>
|
||
|
||
<template id="show_website_info" inherit_id="website.website_info" customize_show="True" name="Show Odoo Information">
|
||
<xpath expr="//div[@id='wrap']" position="inside">
|
||
<div class="oe_structure">
|
||
<section class="container">
|
||
<t t-if="not version">
|
||
<meta http-equiv="refresh" content="0;URL='/website/info'" />
|
||
</t>
|
||
<t t-if="version">
|
||
<h1><t t-esc="res_company.name"/>
|
||
<small>Odoo Version <t t-raw="version.get('server_version')"/></small>
|
||
</h1>
|
||
<p>
|
||
Information about the <t t-esc="res_company.name"/> instance of Odoo, the <a target="_blank" href="https://www.odoo.com">Open Source ERP</a>.
|
||
</p>
|
||
|
||
<div class="alert alert-warning alert-dismissable mt16" groups="website.group_website_publisher" role="status">
|
||
<button type="button" class="close" data-dismiss="alert" aria-label="Close">&times;</button>
|
||
<p>
|
||
Note: To hide this page, uncheck it from the top Customize menu.
|
||
</p>
|
||
</div>
|
||
<h2>Installed Applications</h2>
|
||
<dl class="dl-horizontal" t-foreach="apps" t-as="app">
|
||
<dt>
|
||
<a t-att-href="app.website" t-if="app.website">
|
||
<t t-raw="app.shortdesc"/>
|
||
</a>
|
||
<span t-raw="app.shortdesc" t-if="not app.website"/>
|
||
</dt>
|
||
<dd>
|
||
<span t-raw="app.summary"/>
|
||
</dd><dd class="text-muted" groups='base.group_no_one'>
|
||
Technical name: <span t-field="app.name"/>, author: <span t-field="app.author"/>
|
||
</dd>
|
||
</dl>
|
||
|
||
<div t-if="l10n">
|
||
<h2 class='mt32'>Installed Localizations / Account Charts</h2>
|
||
<dl class="dl-horizontal" t-foreach="l10n" t-as="app">
|
||
<dt>
|
||
<a t-attf-href="https://www.odoo.com/page/accounting/#{app.name}">
|
||
<t t-raw="app.shortdesc"/>
|
||
</a>
|
||
</dt>
|
||
<dd>
|
||
<span t-raw="app.summary"/>
|
||
</dd><dd class="text-muted" groups='base.group_no_one'>
|
||
Technical name: <span t-field="app.name"/>, author: <span t-field="app.author"/>
|
||
</dd>
|
||
</dl>
|
||
</div>
|
||
</t>
|
||
</section>
|
||
</div>
|
||
</xpath>
|
||
</template>
|
||
|
||
<template id="default_page">
|
||
<t t-call="website.layout">
|
||
<div id="wrap" class="oe_structure oe_empty"/>
|
||
</t>
|
||
</template>
|
||
|
||
<template id="default_js">
|
||
<script type="text/javascript">
|
||
if (0 > 1) {
|
||
let it_cant_be = false;
|
||
}
|
||
</script>
|
||
</template>
|
||
<template id="default_xml">
|
||
<?xml version="1.0" encoding="utf-8"?>
|
||
</template>
|
||
<template id="default_css">
|
||
<style type="text/css">
|
||
div#wrap div > h1{
|
||
color: #875A7B;
|
||
}
|
||
</style>
|
||
</template>
|
||
<template id="default_less">
|
||
<style type="text/less">
|
||
div#wrap div > h1 {
|
||
color: @o-brand-odoo;
|
||
}
|
||
</style>
|
||
</template>
|
||
<template id="default_scss">
|
||
<style type="text/scss">
|
||
div#wrap div > h1 {
|
||
color: $o-brand-odoo;
|
||
}
|
||
</style>
|
||
</template>
|
||
<template id="default_csv">
|
||
1,2,3
|
||
</template>
|
||
|
||
<template id="page_404" name="Page Not Found">
|
||
<t t-call="http_routing.404">
|
||
<div class="container o_not_editable">
|
||
<div class="alert alert-info mt32">
|
||
<p>This page does not exist, but you can create it as you are administrator of this site.</p>
|
||
<a role="button" class="btn btn-primary js_disable_on_click post_link" t-attf-href="/website/add/#{ path }#{ from_template and '?template=%s' % from_template }">Create Page</a>
|
||
</div>
|
||
<div class="text-center text-muted">Edit the content below this line to adapt the default "page not found" page.</div>
|
||
</div>
|
||
<hr/>
|
||
</t>
|
||
</template>
|
||
|
||
<template id="protected_403" name="Page Protected">
|
||
<t t-call="website.login_layout">
|
||
<div class="container">
|
||
<div class='row'>
|
||
<form class="offset-md-3 col-md-6" method="POST">
|
||
<div class="alert alert-info mt32" t-if="not request.params.get('visibility_password')">
|
||
<div class="h5 text-center">
|
||
<i class="fa fa-lock fa-2x"/><br/>
|
||
<span class="mt-1">A password is required to access this page.</span>
|
||
</div>
|
||
</div>
|
||
<div class="alert alert-warning mt32" t-else="">
|
||
<div class="h5 text-center">
|
||
<i class="fa fa-lock fa-2x"/><br/>
|
||
<span class="mt-1">Wrong password</span>
|
||
</div>
|
||
</div>
|
||
<div class="form-group">
|
||
<div class="input-group">
|
||
<input type="hidden" name="url" t-att-value="path" />
|
||
<input type="hidden" name="csrf_token" t-att-value="request.csrf_token()" />
|
||
<input type="password" id="password" class="form-control" required="required" name="visibility_password" />
|
||
<div class="input-group-append">
|
||
<button class="btn btn-secondary" type="button" id="showPass">
|
||
<i class="fa fa-eye"></i>
|
||
</button>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<button type="submit" class="h4 btn btn-primary btn-block">Access to this page</button>
|
||
</form>
|
||
</div>
|
||
</div>
|
||
</t>
|
||
</template>
|
||
|
||
<template id="qweb_500" inherit_id="http_routing.500">
|
||
<!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
|
||
<!-- This template should not use any variable except those provided by website.ir_http._handle_exception -->
|
||
<!-- no request.crsf_token, no theme style, no assets, ... cursor can be broken during rendering ! -->
|
||
<!-- see test_05_reset_specific_view_controller_broken_request -->
|
||
<!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
|
||
<xpath expr="//script[last()]" position="before">
|
||
<script type="text/javascript" src="/web/static/lib/bootstrap/js/modal.js"/>
|
||
</xpath>
|
||
<xpath expr="//style" position="after">
|
||
<t t-if='view'>
|
||
<script>
|
||
$(document).ready(function() {
|
||
var button = $('.reset_templates_button');
|
||
button.click(function() {
|
||
$('#reset_templates_mode').val($(this).data('mode'));
|
||
var dialog = $('#reset_template_confirmation').modal('show');
|
||
var input = dialog.find('input[type="text"]').val('').focus();
|
||
var dialog_form = dialog.find('form');
|
||
dialog_form.submit(function() {
|
||
if (input.val() == dialog.find('.confirm_word').text()) {
|
||
dialog.modal('hide');
|
||
button.prop('disabled', true).text('Working...');
|
||
$('#reset_templates_form').attr('action', '/website/reset_template');
|
||
$('#reset_templates_form').trigger('submit');
|
||
} else {
|
||
input.val('').focus();
|
||
}
|
||
return false;
|
||
});
|
||
return false;
|
||
});
|
||
});
|
||
</script>
|
||
</t>
|
||
</xpath>
|
||
<xpath expr="//div[@id='wrapwrap']" position="before">
|
||
<div t-if="view" role="dialog" id="reset_template_confirmation" class="modal" tabindex="-1" t-ignore="true">
|
||
<div class="modal-dialog">
|
||
<form role="form">
|
||
<div class="modal-content">
|
||
<header class="modal-header">
|
||
<h4 class="modal-title">Reset templates</h4>
|
||
<button type="button" class="close" data-dismiss="modal" aria-label="Close">×</button>
|
||
</header>
|
||
<main class="modal-body">
|
||
<div class="form-group row mb0">
|
||
<label for="page-name" class="col-md-12 col-form-label">
|
||
<p>The selected templates will be reset to their factory settings.</p>
|
||
</label>
|
||
</div>
|
||
<div class="form-group row mb0">
|
||
<label for="page-name" class="col-md-9 col-form-label">
|
||
<p>Type '<i class="confirm_word">yes</i>' in the box below if you want to confirm.</p>
|
||
</label>
|
||
<div class="col-md-3 mt16">
|
||
<input type="text" id="page-name" class="form-control" required="required" placeholder="yes"/>
|
||
</div>
|
||
</div>
|
||
</main>
|
||
<footer class="modal-footer">
|
||
<button type="button" class="btn" data-dismiss="modal" aria-label="Cancel">Cancel</button>
|
||
<input type="submit" value="Confirm" class="btn btn-primary"/>
|
||
</footer>
|
||
</div>
|
||
</form>
|
||
</div>
|
||
</div>
|
||
</xpath>
|
||
<xpath expr="//div[@id='error_message']" position="after">
|
||
<div class="container" t-if="view and editable">
|
||
<div class="alert alert-danger" t-if="debug" role="alert">
|
||
<h4>Template fallback</h4>
|
||
<p>An error occured while rendering the template <code t-esc="qweb_exception.name"/>.</p>
|
||
<p>If this error is caused by a change of yours in the templates, you have the possibility to reset the template to its <strong>factory settings</strong>.</p>
|
||
<form action="#" method="post" id="reset_templates_form">
|
||
<ul>
|
||
<li>
|
||
<label>
|
||
<t t-esc="view.name"/>
|
||
</label>
|
||
</li>
|
||
</ul>
|
||
<input type="hidden" name="redirect" t-att-value="request.httprequest.path"/>
|
||
<input type="hidden" id="reset_templates_view_id" name="view_id" t-att-value="view.id"/>
|
||
<input type="hidden" id="reset_templates_mode" name="mode"/>
|
||
<button data-mode="soft" class="reset_templates_button btn btn-info">Restore previous version (soft reset).</button>
|
||
<button t-if="view.arch_fs" data-mode="hard" class="reset_templates_button btn btn-outline-danger">Reset to initial version (hard reset).</button>
|
||
</form>
|
||
</div>
|
||
</div>
|
||
</xpath>
|
||
</template>
|
||
|
||
<template id="robots">
|
||
<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>
|
||
|
||
<template id="sitemap_locs">
|
||
<url t-foreach="locs" t-as="page">
|
||
<loc><t t-esc="url_root"/><t t-esc="page['loc']"/></loc><t t-if="page.get('lastmod', False)">
|
||
<lastmod t-esc="page['lastmod']"/></t><t t-if="page.get('priority', False)">
|
||
<priority t-esc="page['priority']"/></t><t t-if="page.get('changefreq', False)">
|
||
<changefreq t-esc="page['changefreq']"/></t>
|
||
</url>
|
||
</template>
|
||
|
||
<template id="sitemap_xml"><?xml version="1.0" encoding="UTF-8"?>
|
||
<urlset t-attf-xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
|
||
<t t-raw="content"/>
|
||
</urlset>
|
||
</template>
|
||
|
||
<template id="sitemap_index_xml"><?xml version="1.0" encoding="UTF-8"?>
|
||
<sitemapindex t-attf-xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
|
||
<sitemap t-translation="off" t-foreach="pages" t-as="page">
|
||
<loc><t t-esc="url_root"/>sitemap-<t t-esc="page"/>.xml</loc>
|
||
</sitemap>
|
||
</sitemapindex>
|
||
</template>
|
||
|
||
<template id="company_description" name="Company Description">
|
||
<address itemscope="itemscope" itemtype="http://schema.org/Organization">
|
||
<!-- TODO widget contact must add itemprop attributes -->
|
||
<div t-field="res_company.partner_id" t-options='{
|
||
"widget": "contact",
|
||
"fields": ["name", "address", "phone", "mobile", "email"]}'/>
|
||
<t t-if="not res_company.google_map_img()">
|
||
<span class="fa fa-map-marker fa-fw mt16" role="img" aria-label="Address" title="Address"/> <a t-att-href="res_company.google_map_link()" target="_BLANK"> Google Maps</a>
|
||
</t>
|
||
</address>
|
||
<t t-if="res_company.google_map_img()">
|
||
<a t-att-href="res_company.google_map_link()" target="_BLANK">
|
||
<img class="img-fluid" t-att-src="res_company.google_map_img()" alt="Google Maps"/>
|
||
</a>
|
||
</t>
|
||
</template>
|
||
|
||
<template id="website_search_box" name="Website Searchbox">
|
||
<div t-attf-class="input-group #{_classes}" role="search">
|
||
<input type="text" name="search" class="search-query form-control oe_search_box" placeholder="Search..." t-att-value="search"/>
|
||
<div class="input-group-append">
|
||
<button type="submit" class="btn btn-primary oe_search_button" aria-label="Search" title="Search"><i class="fa fa-search"/></button>
|
||
</div>
|
||
</div>
|
||
</template>
|
||
|
||
<template id="index_management">
|
||
<t groups="website.group_website_publisher" t-ignore="true">
|
||
<div t-attf-class="float-right js_index_management #{object.website_indexed and 'css_published' or 'css_unpublished'}" t-att-data-id="object.id" t-att-data-object="object._name">
|
||
<button class="btn btn-danger js_index_btn">Unindexed</button>
|
||
<button class="btn btn-success js_index_btn">Indexed</button>
|
||
</div>
|
||
</t>
|
||
</template>
|
||
|
||
<template id="list_website_pages" name="Website Pages Management">
|
||
<t t-call="website.layout">
|
||
<div id="wrap">
|
||
<div class="container" id="list_website_pages">
|
||
<form class="mt8 float-right" role="search" t-attf-action="/website/pages" method="get">
|
||
<t t-call="website.website_search_box"/>
|
||
</form>
|
||
<div t-if="searchbar_sortings" class="dropdown float-right mt8 mr8">
|
||
<button class="btn btn-secondary dropdown-toggle" type="button" data-toggle="dropdown">
|
||
<span class="fa fa-sort fa-lg" role="img" aria-label="Sort" title="Sort"/>
|
||
<span class="d-none d-xl-inline" t-esc="searchbar_sortings[sortby].get('label', 'Newest')"/>
|
||
</button>
|
||
<div class="dropdown-menu" aria-labelledby="portal_searchbar_sortby" role="menu">
|
||
<t t-foreach="searchbar_sortings" t-as="option">
|
||
<a role="menuitem"
|
||
t-att-href="request.httprequest.path + '?' + keep_query('*', sortby=option)"
|
||
t-attf-class="dropdown-item#{sortby == option and ' active' or ''}">
|
||
<span t-esc="searchbar_sortings[option].get('label')"/>
|
||
</a>
|
||
</t>
|
||
</div>
|
||
</div>
|
||
<h3 class="mt16">Manage Your Pages</h3>
|
||
<t t-if="not pages">
|
||
<div t-if="search" class="alert alert-warning mt8" role="alert">
|
||
Your search '<t t-esc="search" />' did not match any pages.
|
||
</div>
|
||
<div t-else="" class="alert alert-warning mt8" role="alert">
|
||
There are currently no pages for your website.
|
||
</div>
|
||
</t>
|
||
<div t-if="pages" class="table-responsive">
|
||
<table class="table table-hover">
|
||
<thead>
|
||
<tr>
|
||
<th>Name</th>
|
||
<th>Url</th>
|
||
<th class="text-center"><i title="Is the page included in the main menu?" class="fa fa-thumb-tack"></i></th>
|
||
<th class="text-center"><i title="Is the page published?" class="fa fa-eye"></i></th>
|
||
<th class="text-center"><i title="Is the page indexed by search engines?" class="fa fa-globe"></i></th>
|
||
<th class="text-center"><i title="Is the page SEO optimized?" class="fa fa-search"></i></th>
|
||
<th></th>
|
||
</tr>
|
||
</thead>
|
||
<t t-set='prev_page' t-value='False' />
|
||
<t t-set='page' t-value='pages[0]' />
|
||
<t t-foreach="pages[1:]" t-as="next_page">
|
||
<t t-call='website.one_page_line'/>
|
||
<t t-set='prev_page' t-value='page' />
|
||
<t t-set='page' t-value='next_page' />
|
||
</t>
|
||
|
||
<t t-set='next_page' t-value='False'/>
|
||
<t t-call='website.one_page_line' />
|
||
</table>
|
||
</div>
|
||
<div t-if="pager" class="o_portal_pager text-center">
|
||
<t t-call="website.pager"/>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</t>
|
||
</template>
|
||
|
||
<template id="one_page_line">
|
||
<t t-set='specific_page' t-value="page.website_id"/>
|
||
<t t-set='final_page' t-value="(next_page and page.url != next_page.url) or not next_page or specific_page"/>
|
||
<tr t-att-style='not final_page and "color:#999"'>
|
||
<td>
|
||
<t groups="website.group_multi_website">
|
||
<i t-if='specific_page and prev_page and prev_page.url == page.url and not prev_page.website_id' class="fa fa-level-up fa-rotate-90 ml32 mr4"/>
|
||
<i t-else="1" class="fa fa-globe mr4" t-att-style="'visibility:hidden;' if specific_page else ''"/>
|
||
</t>
|
||
<i t-if="page.is_homepage" class="fa fa-home" title="Home"/> <span t-esc="page.name"/>
|
||
</td>
|
||
<td>
|
||
<a t-if='final_page' t-att-href="page.url"><t t-esc="page.url"/></a>
|
||
</td>
|
||
<td class="text-center">
|
||
<i t-if="page.menu_ids" class="fa fa-check" title="In main menu"/>
|
||
<i t-else="" class="fa fa-times text-muted" title="Not in main menu"/>
|
||
</td>
|
||
<td class="text-center">
|
||
<t t-set='date_formatted'><t t-options='{"widget": "date"}' t-esc="page.date_publish"/></t>
|
||
<i t-if="page.is_visible" class="fa fa-check" title="Published"/>
|
||
<i t-elif="page.website_published" class="fa fa-eye-slash" t-attf-title="This page will be published on {{ date_formatted }}"/>
|
||
<i t-else="" class="fa fa-times text-muted" title="Not published"/>
|
||
</td>
|
||
<td class="text-center">
|
||
<i t-if="page.website_indexed" class="fa fa-check" title="Indexed"/>
|
||
<i t-else="" class="fa fa-times text-muted" title="Not indexed"/>
|
||
</td>
|
||
<td class="text-center">
|
||
<i t-if="page.is_seo_optimized" class="fa fa-check" title="SEO optimized"/>
|
||
<i t-else="" class="fa fa-times text-muted" title="Not SEO optimized"/>
|
||
</td>
|
||
<td class="text-right" style="white-space:nowrap;">
|
||
<a class="mr4 fa fa-cog js_page_properties" href="#" t-att-data-id="page.id" title="Manage this page"/>
|
||
<a class="mr4 fa fa-search" t-attf-href="{{ page.url}}?enable_seo" title="Optimize SEO of this page"/>
|
||
<a groups="base.group_no_one" class="mr4 fa fa-bug" t-attf-href="/web#id=#{page.view_id.id}&view_type=form&model=ir.ui.view" title="Edit code in backend"/>
|
||
<a class="mr4 fa fa-clone js_clone_page" t-att-data-id="page.id" href="#" title="Clone this page"/>
|
||
<a class="fa fa-trash js_delete_page" t-att-data-id="page.id" href="#" title="Delete this page"/>
|
||
</td>
|
||
</tr>
|
||
</template>
|
||
|
||
</odoo>
|