Files
odoo_source/addons/website/views/website_templates.xml
T

933 lines
48 KiB
XML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<!-- Assets -->
<template id="assets_backend" inherit_id="web.assets_backend" name="Website Backend Assets (used in backend interface)">
<xpath expr="//link[last()]" position="after">
<link rel="stylesheet" type="text/scss" href="/website/static/src/scss/website.backend.scss"/>
</xpath>
<xpath expr="//script[last()]" position="after">
<script type="text/javascript" src="/website/static/src/js/backend/button.js"/>
<script type="text/javascript" src="/website/static/src/js/backend/dashboard.js"/>
<script type="text/javascript" src="/website/static/src/js/tours/rte.js"/>
</xpath>
</template>
<template id="qunit_suite" inherit_id="web.qunit_suite">
<xpath expr="//script[last()]" position="after">
<script type="text/javascript" src="/website/static/tests/website_tests.js"/>
</xpath>
</template>
<template id="assets_frontend" inherit_id="web.assets_frontend" name="Website Assets">
<xpath expr="//link[last()]" position="after">
<link rel="stylesheet" type="text/scss" href="/website/static/src/scss/website.scss"/>
<link rel="stylesheet" type="text/scss" href="/website/static/src/scss/website.ui.scss"/>
<link rel="stylesheet" type="text/scss" href="/website/static/src/scss/website.zoomodoo.scss"/>
</xpath>
<xpath expr="//script[last()]" position="after">
<script type="text/javascript" src="/website/static/src/js/utils.js"/>
<script type="text/javascript" src="/website/static/src/js/website.js"/>
<script type="text/javascript" src="/website/static/src/js/content/compatibility.js"/>
<script type="text/javascript" src="/website/static/src/js/content/lazy_template_call.js"/>
<script type="text/javascript" src="/website/static/src/js/content/menu.js"/>
<script type="text/javascript" src="/website/static/src/js/content/snippets.animation.js"/>
<script type="text/javascript" src="/website/static/src/js/content/website_root.js"/>
<script type="text/javascript" src="/website/static/src/js/content/zoomodoo.js"/>
<script type="text/javascript" src="/website/static/src/js/menu/navbar.js"/>
</xpath>
</template>
<template id="website.assets_editor" name="Website Editor Assets (used in website editor)">
<t t-call="web._assets_helpers"/>
<link rel="stylesheet" type="text/scss" href="/website/static/src/scss/website.edit_mode.scss"/>
<script type="text/javascript" src="/website/static/lib/jQuery.transfo.js"/>
<script type="text/javascript" src="/website/static/src/js/editor/editor.js"/>
<script type="text/javascript" src="/website/static/src/js/editor/rte.summernote.js"/>
<script type="text/javascript" src="/website/static/src/js/editor/snippets.options.js"/>
<script type="text/javascript" src="/website/static/src/js/menu/content.js"/>
<script type="text/javascript" src="/website/static/src/js/menu/customize.js"/>
<script type="text/javascript" src="/website/static/src/js/menu/edit.js"/>
<script type="text/javascript" src="/website/static/src/js/menu/mobile_view.js"/>
<script type="text/javascript" src="/website/static/src/js/menu/new_content.js"/>
<script type="text/javascript" src="/website/static/src/js/menu/seo.js"/>
<script type="text/javascript" src="/website/static/src/js/menu/translate.js"/>
<script type="text/javascript" src="/website/static/src/js/tours/banner.js"/>
<script type="text/javascript" src="/website/static/src/js/tours/rte.js"/>
<script type="text/javascript" src="/website/static/src/js/widgets/ace.js"/>
<script type="text/javascript" src="/website/static/src/js/widgets/theme.js"/>
</template>
<!-- Layout -->
<template id="submenu" name="Submenu">
<li t-if="submenu.is_visible and not submenu.child_id.filtered(lambda menu: menu.is_visible)" class="nav-item">
<a t-att-href="submenu.clean_url()"
t-attf-class="nav-link#{' 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="submenu.child_id.filtered(lambda menu: menu.is_visible)" t-attf-class="#{('%s-item ' % submenu_type) if submenu_type else ''}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'
}">
<a t-attf-class="#{('%s-link ' % submenu_type) if submenu_type else ''}dropdown-toggle" data-toggle="dropdown" href="#">
<span t-field="submenu.name"/>
</a>
<ul class="dropdown-menu" role="menu">
<t t-foreach="submenu.child_id" t-as="submenu">
<t t-call="website.submenu">
<t t-set="submenu_type" t-value="'dropdown'"/>
</t>
</t>
</ul>
</li>
</template>
<template id="layout" name="Main layout" inherit_id="portal.frontend_layout">
<xpath expr="//t[@t-set='head_website']" 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-oe-company-name': res_company.name
}"/>
<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-if="main_object and 'website_meta_title' in main_object and main_object.website_meta_title">
<t t-set="title" t-value="main_object.website_meta_title"/>
</t>
<t t-else="">
<t t-set="title"><t t-if="additional_title"><t t-raw="additional_title"/> | </t><t t-raw="(website or res_company).name"/></t>
</t>
</t>
<t t-set="x_icon" t-value="'/web/image/website/%s/favicon/' % website.id"/>
</xpath>
<xpath expr="//t[@t-set='head_website']" position="replace">
<t t-set="head_website">
<meta name="generator" content="Odoo"/>
<meta t-if="main_object and 'website_indexed' in main_object
and not main_object.website_indexed" name="robots" content="noindex"/>
<t t-set="meta_description" t-value="main_object and 'website_meta_description' in main_object
and main_object.website_meta_description or website_meta_description"/>
<t t-set="meta_keywords" t-value="main_object and 'website_meta_keywords' in main_object
and main_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"/>
<!-- OpenGraph tags for Facebook sharing -->
<meta property="og:title" t-att-content="additional_title" />
<meta property="og:site_name" t-att-content="res_company.name" />
<t t-if="main_object and 'plain_content' in main_object and main_object.plain_content">
<t t-set="og_description" t-value="main_object.plain_content[0:500]"/>
<meta property="og:description" t-att-content="og_description" />
<meta property='og:image' t-att-content="request.httprequest.url_root+'logo.png'"/>
<meta property='og:url' t-att-content="request.httprequest.url_root+request.httprequest.path[1:end]"/>
</t>
<t t-set="languages" t-value="website.get_languages() if website else None"/>
<t t-if="request and request.is_frontend_multilang and website">
<t t-foreach="website.get_alternate_languages(request.httprequest)" t-as="lg">
<link rel="alternate" t-att-hreflang="lg['hreflang']" t-att-href="lg['href']"/>
</t>
</t>
<script type="text/javascript">
<t groups="website.group_website_publisher">
odoo.snippetsURL = '/website/snippets';
</t>
odoo.session_info = {
is_superuser: <t t-esc="json.dumps(request.env.user._is_superuser())"/>,
is_system: <t t-esc="json.dumps(request.env.user._is_system())"/>,
is_frontend: true,
translationURL: '/website/translations',
is_website_user: <t t-esc="json.dumps(request.env.user.id == request.website.user_id.id)" />,
user_id: <t t-esc="json.dumps(request.env.user.id)" />
};
</script>
<t t-call-assets="web.assets_common" t-js="false"/>
<t t-call-assets="web.assets_frontend" t-js="false"/>
<t t-call-assets="web_editor.summernote" t-js="false" groups="website.group_website_publisher"/>
<t t-call-assets="web_editor.assets_editor" t-js="false" groups="website.group_website_publisher"/>
<t t-call-assets="website.assets_editor" t-js="false" groups="website.group_website_publisher"/>
<t t-call-assets="web.assets_common" t-css="false"/>
<t t-call-assets="web.assets_frontend" t-css="false"/>
<t t-call-assets="web_editor.summernote" t-css="false" groups="website.group_website_publisher"/>
<t t-call-assets="web_editor.assets_editor" t-css="false" groups="website.group_website_publisher"/>
<t t-call-assets="website.assets_editor" t-css="false" groups="website.group_website_publisher"/>
</t>
</xpath>
<xpath expr="//header//a[hasclass('navbar-brand')]" position="replace">
<a class="navbar-brand" href="/" t-if="website" t-field="website.name">My Website</a>
</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="submenu_type" t-value="'nav'"/>
</t>
</t>
</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', _.str.trim('<t t-esc="website.google_analytics_key"/>'), 'auto');
ga('send','pageview');
</script>
</xpath>
</template>
<template id="layout_footer_copyright" inherit_id="website.layout" name="Footer Copyright">
<xpath expr="//footer" position="inside">
<div class="container o_footer_copyright">
<div class="row">
<div class="col-lg-6 text-muted text-center-xs">
<span>Copyright &amp;copy;</span> <span t-field="res_company.name" itemprop="name">Company name</span>
<t t-call="website.language_selector"/>
</div>
<div class="col-lg-6 text-right o_not_editable" t-if="not editable">
<t t-call="website.brand_promotion"/>
</div>
</div>
</div>
</xpath>
</template>
<template id="brand_promotion" name="Brand Promotion">
<div class="o_brand_promotion">
Create a <a target="_blank" href="http://www.odoo.com/page/website-builder?utm_source=db&amp;utm_medium=website">free website</a> with
<a target="_blank" class="badge badge-danger" href="http://www.odoo.com/page/website-builder?utm_source=db&amp;utm_medium=website">Odoo</a>
</div>
</template>
<template id="layout_logo_show" inherit_id="website.layout" customize_show="True" name="Show Logo">
<xpath expr="//header//a[hasclass('navbar-brand')]" position="replace">
<a href="/" class="navbar-brand logo">
<span t-field="res_company.logo" t-options="{'widget': 'image'}" role="img" t-att-aria-label="'Logo of %s' % res_company.name" t-att-title="res_company.name" />
</a>
</xpath>
</template>
<template id="affix_top_menu" inherit_id="website.layout" customize_show="True" name="Affix Top Menu">
<xpath expr="//header" position="attributes">
<attribute name="t-attf-class" add="#{'o_affix_enabled'}" 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>
<record id="portal.portal_show_sign_in" model="ir.ui.view">
<field name="customize_show" eval="True"/>
</record>
<!-- Features template -->
<template id="login_layout" inherit_id="web.login_layout" name="Website Login Layout">
<xpath expr="t" position="replace">
<t t-call="website.layout">
<div class="oe_website_login_container" t-raw="0"/>
</t>
</xpath>
</template>
<template id="footer_custom" inherit_id="website.layout" name="Footer">
<xpath expr="//div[@id='footer']" position="replace">
<div id="footer" class="oe_structure" t-ignore="true" t-if="not no_footer">
<section class="s_text_block pt16 pb8">
<div class="container">
<div class="row">
<div class="col-lg-4">
<h4>Our Products &amp; Services</h4>
<ul class="list-unstyled">
<li><a href="/">Home</a></li>
</ul>
</div>
<div class="col-lg-4" id="connect">
<h4>Connect with us</h4>
<ul class="list-unstyled">
<li><a href="/contactus">Contact us</a></li>
<li><i class="fa fa-phone"/> <span t-field="res_company.phone"/></li>
<li><i class="fa fa-envelope"/> <span t-field="res_company.email"/></li>
</ul>
<div class="btn-group">
<a t-if="website.social_facebook" t-att-href="website.social_facebook" class="btn btn-sm btn-link"><i class="fa fa-2x fa-facebook-square"/></a>
<a t-if="website.social_twitter" t-att-href="website.social_twitter" class="btn btn-sm btn-link"><i class="fa fa-2x fa-twitter"/></a>
<a t-if="website.social_linkedin" t-att-href="website.social_linkedin" class="btn btn-sm btn-link"><i class="fa fa-2x fa-linkedin"/></a>
<a t-if="website.social_youtube" t-att-href="website.social_youtube" class="btn btn-sm btn-link"><i class="fa fa-2x fa-youtube-play"/></a>
<a t-if="website.social_googleplus" t-att-href="website.social_googleplus" class="btn btn-sm btn-link" rel="publisher"><i class="fa fa-2x fa-google-plus-square"/></a>
<a t-if="website.social_github" t-att-href="website.social_github" class="btn btn-sm btn-link"><i class="fa fa-2x fa-github"/></a>
</div>
</div>
<div class="col-lg-4">
<h4>
<span t-field="res_company.name"/>
<small> - <a href="/aboutus">About us</a></small>
</h4>
<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>
</section>
</div>
</xpath>
</template>
<template id="language_selector">
<ul class="js_language_selector mb0 list-inline" t-if="(request and request.is_frontend_multilang and len(languages) &gt; 1) or (website and (editable or translatable))">
<li class="list-inline-item">
<div class="dropup">
<button class="btn 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][1].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=lg[0])"
class="dropdown-item js_change_lang"
t-att-data-default-lang="(editable or translatable) and 'true' if website and lg[0] == website.default_lang_code else None"
t-att-data-lang="lg[0]">
<t t-esc="lg[1].split('/').pop()"/>
</a>
</t>
</div>
</div>
</li>
<li groups="website.group_website_publisher" class="list-inline-item">
<t t-set="url_return" t-value="url_for('', '[lang]') + '?' + keep_query()"/>
<a t-attf-href="/web#action=base.action_view_base_language_install&amp;website_id=#{website.id if website else ''}&amp;url_return=#{url_return}">
<i class="fa fa-plus-circle"/>
Add a language...
</a>
</li>
</ul>
</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-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-secondary 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#return_label=Website&amp;view_type=form&amp;model=#{object._name}&amp;id=#{object.id}&amp;action=#{action}"
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-controller="publish_controller">
<button class="btn btn-danger js_publish_btn">Unpublished</button>
<button class="btn btn-success js_publish_btn">Published</button>
</div>
</t>
</template>
<template id="pager" name="Pager" inherit_id="portal.pager">
</template>
<!--
Customize Themes
Use INPUT type 'checkbox' or 'radio' or use OPTION in select box
'data-xmlid' (optional) xml id of the template to add if the input is checked.
You can set a list of xml id separate by comma (all template is enable or
disable in same time)
'data-enable' (optional) to checked one or more HTML ids, or list separate by comma
'data-disable' (optional) to unchecked one or more HTML ids, or list separate by comma
'data-reload="/"' (optional) force the reloading of the page if the url match with
the string ( = regexp).
Otherwise, only the '/web/content/web.assets_frontend' is reloaded
For the sets (data-enable and/or data-disable without data-xmlid), the set is
automatically checked if:
- all related fields are enabled for data-enable
- all related fields are disabled for data-disable
else unchecked
HTML apply classes:
- 'checked': on the parent label when input is checked
- 'in': on the container (e.g.: bootstrap modal) after added in DOM (removed together
out is added)
- 'out': on the container 1 second before removed from ths DOM
- 'loading': on the container/modal when the new css is loading
-->
<template id="website.theme_customize" name="Theme Modal for Customization">
<div role="dialog" id="theme_customize_modal" class="modal fade">
<div class="modal-dialog">
<div class="modal-content">
<header class="modal-header text-center">
<h4 class="modal-title">Please install a theme in order to customize your website.</h4>
</header>
</div>
</div>
</div>
</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'] &gt; 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'] &lt; 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">&amp;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"/>, updated: <span t-field="app.write_date"/>, author: <span t-field="app.author"/>
</dd>
</dl>
<div groups='base.group_no_one'>
<h2>Installed Modules</h2>
<dl class="dl-horizontal">
<t t-foreach="modules" t-as="app">
<dt>
<span t-raw="app.shortdesc"/>
</dt>
<dd t-if="app.summary">
<span t-raw="app.summary"/>
</dd><dd>
Technical name: <span t-field="app.name"/>,
updated: <span t-field="app.write_date"/>
<t t-if="app.author">
, author: <span t-field="app.author"/>
</t>
</dd>
</t>
</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 &gt; 1) {
let it_cant_be = false;
}
</script>
</template>
<template id="default_xml">
&lt;?xml version="1.0" encoding="utf-8"?&gt;
</template>
<template id="default_css">
<style type="text/css">
div#wrap div &gt; h1{
color: #875A7B;
}
</style>
</template>
<template id="default_less">
<style type="text/less">
div#wrap div &gt; h1 {
color: @o-brand-odoo;
}
</style>
</template>
<template id="default_scss">
<style type="text/scss">
div#wrap div &gt; h1 {
color: $o-brand-odoo;
}
</style>
</template>
<template id="default_csv">
1,2,3
</template>
<template id="page_404">
<t t-call="website.404">
<div class="container">
<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" 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="http_error">
<t t-call="website.layout">
<div id="wrap">
<div class="oe_structure">
<h1 class="container mt32"><t t-esc="status_code"/>: <t t-esc="status_message"/></h1>
</div>
<t t-if="editable or request.debug">
<t t-call="website.http_error_debug"/>
</t>
</div>
</t>
</template>
<template id="http_error_debug">
<div class="container accordion mb32 mt32" id="debug_infos">
<div class="card" t-if="exception">
<h4 class="card-header">
<a data-toggle="collapse" data-parent="#debug_infos" href="#error_main">Error</a>
</h4>
<div id="error_main" class="collapse in">
<div class="card-body">
<p t-if="website_controller">The following error was raised in the website controller <code t-esc="website_controller"/></p>
<p>
<strong>Error message:</strong>
<pre t-esc="exception"/>
</p>
</div>
</div>
</div>
<div class="card" t-if="qweb_exception">
<h4 class="card-header">
<a data-toggle="collapse" data-parent="#adebug_infos" href="#error_qweb">QWeb</a>
</h4>
<div id="error_qweb" class="collapse">
<div class="card-body">
<p t-if="exception.qweb.get('message')">
<strong>Error message:</strong>
<pre t-esc="exception.qweb.get('message')"/>
</p>
<p>
The error occured while rendering the template <code t-esc="qweb_exception.qweb.get('template')"/>
<t t-if="'expression' in qweb_exception.qweb">and evaluating the following expression: <code t-esc="qweb_exception.qweb['expression']"/></t>
</p>
<t t-if="'node' in qweb_exception.qweb">
<pre id="exception_node" t-esc="qweb_exception.pretty_xml()"/>
</t>
</div>
</div>
</div>
<div class="card" t-if="traceback">
<h4 class="card-header">
<a data-toggle="collapse" data-parent="#adebug_infos" href="#error_traceback">Traceback</a>
</h4>
<div id="error_traceback" class="collapse">
<div class="card-body">
<pre id="exception_traceback" t-esc="traceback"/>
</div>
</div>
</div>
</div>
</template>
<template id="403">
<t t-call="website.layout">
<div id="wrap">
<div class="container">
<h1 class="mt32">403: Forbidden</h1>
<p>The page you were looking for could not be authorized.</p>
<p>Maybe you were looking for one of these popular pages ?</p>
<ul>
<li><a href="/">Homepage</a></li>
<li><a href="/contactus">Contact Us</a></li>
</ul>
</div>
<t t-if="editable or request.debug">
<t t-call="website.http_error_debug"/>
</t>
</div>
</t>
</template>
<template id="404">
<t t-call="website.layout">
<div id="wrap">
<t t-raw="0"/>
<div class="oe_structure oe_empty">
<div class="container">
<h1 class="mt32">404: Page not found!</h1>
<p>
The page you were looking for could not be found; it is possible you have
typed the address incorrectly, but it has most probably been removed due
to the recent website reorganisation.
</p>
<p>Maybe you were looking for one of these popular pages ?</p>
<ul>
<li><a href="/">Homepage</a></li>
<li><a href="/contactus">Contact Us</a></li>
</ul>
</div>
</div>
<t t-if="request.debug">
<t t-call="website.http_error_debug"/>
</t>
</div>
</t>
</template>
<template id="500">
<!-- This template should not use any variable except those provided by website.ir_http._handle_exception -->
<html>
<head>
<title t-esc="status_message">Internal Server Error</title>
<t t-set="debug" t-value="True"/>
<t t-call-assets="web.assets_common" t-js="false"/>
<t t-call-assets="web.assets_frontend" t-js="false"/>
<t t-call-assets="web.assets_common" t-css="false"/>
<t t-call-assets="web.assets_frontend" t-css="false"/>
<script>
$(document).ready(function() {
var button = $('#reset_templates_button');
button.click(function() {
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').trigger('submit');
} else {
input.val('').focus();
}
return false;
});
return false;
});
});
</script>
</head>
<body>
<div 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">
<h3 class="modal-title">Reset templates</h3>
<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-9 col-form-label">
<p>The selected templates will be reset to their factory settings.</p>
<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" class="form-control" required="required" placeholder="yes"/>
</div>
</div>
</main>
<footer class="modal-footer">
<input type="submit" value="Confirm" class="btn btn-primary"/>
<button type="button" class="btn" data-dismiss="modal" aria-label="Cancel">Cancel</button>
</footer>
</div>
</form>
</div>
</div>
<div id="wrapwrap">
<header>
<div class="navbar navbar-expand-md navbar-light bg-light">
<div class="container">
<div class="collapse navbar-collapse navbar-top-collapse">
<ul class="navbar-nav ml-auto" id="top_menu">
<li class="nav-item"><a href="/" class="nav-link">Home</a></li>
<li class="nav-item"><a href="javascript: window.history.back()" class="nav-link">Back</a></li>
</ul>
</div>
</div>
</div>
</header>
<main>
<div class="oe_structure">
<h1 class="container mt32"><t t-esc="status_code"/>: <t t-esc="status_message"/></h1>
</div>
<div class="container" t-if="views">
<div class="alert alert-danger" t-if="qweb_exception and editable" role="alert">
<h4>Template fallback</h4>
<p>An error occured while rendering the template <code t-esc="qweb_exception.qweb['template']"/>.</p>
<p>If this error is caused by a change of yours in the templates, you have the possibility to reset one or more templates to their <strong>factory settings</strong>.</p>
<form action="/website/reset_templates" method="post" id="reset_templates_form">
<input type="hidden" name="csrf_token" t-att-value="request.csrf_token()"/>
<ul class="oe_template_fallback">
<li t-foreach="views" t-as="view">
<label>
<input type="checkbox" name="templates" t-att-value="view.id" t-att-checked="'checked' if view_first else None"/>
<t t-esc="view.name"/>
</label>
</li>
</ul>
<input type="hidden" name="redirect" t-att-value="request.httprequest.path"/>
<button id="reset_templates_button">Reset selected templates</button>
</form>
</div>
</div>
<t t-if="editable or request.debug">
<t t-call="website.http_error_debug"/>
</t>
</main>
</div>
</body>
</html>
</template>
<template id="robots">
User-agent: *
Sitemap: <t t-esc="url_root"/>sitemap.xml
</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">&lt;?xml version="1.0" encoding="UTF-8"?&gt;
<urlset t-attf-xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<t t-raw="content"/>
</urlset>
</template>
<template id="sitemap_index_xml">&lt;?xml version="1.0" encoding="UTF-8"?&gt;
<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 class="input-group">
<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-secondary 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="edit_website_pages" name="Website Pages Management">
<t t-call="website.layout">
<div id="wrap">
<div class="container" id="edit_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 o_my_status_table">
<thead>
<tr class="active">
<th>Name</th>
<th>Url</th>
<th class="col-lg-1 text-center"><i title="Is the page included in the main menu?" role="img" aria-label="Is the page included in the main menu?" class="fa fa-thumb-tack"></i></th>
<th class="col-lg-1 text-center"><i title="Is the page published?" role="img" aria-label="Is the page published?" class="fa fa-eye"></i></th>
<th class="col-lg-1 text-center"><i title="Is the page indexed by search engines?" role="img" aria-label="Is the page indexed by search engines?" class="fa fa-globe"></i></th>
<th class="col-md-3 col-lg-2"></th>
</tr>
</thead>
<t t-foreach="pages" t-as="page">
<tr>
<td><i t-if="page.is_homepage" class="fa fa-home" role="img" aria-label="Home" title="Home"></i> <span style="word-break: break-all;" t-esc="page.name"/></td>
<td><a style="word-break: break-all;" t-attf-href="{{page.url}}"><t t-esc="page.url"/></a></td>
<td class="text-center"><i t-att-class="'fa fa-check' if page.menu_ids else 'fa fa-times text-muted'" role="img" t-att-aria-label="'Checked' if page.menu_ids else 'Not checked'" t-att-title="'Checked' if page.menu_ids else 'Not checked'"></i></td>
<t t-set='date_formatted'><t t-options='{"widget": "date"}' t-esc="page.date_publish"/></t>
<td class="text-center"><i t-att-title="not page.is_visible and page.website_published and 'This page will be visible on ' + date_formatted" role="img" t-att-aria-label="not page.is_visible and page.website_published and 'This page will be visible on ' + date_formatted" t-att-class="'fa fa-check' if page.is_visible and page.website_published else 'fa fa-eye-slash' if not page.is_visible and page.website_published else 'fa fa-times text-muted'"></i></td>
<td class="text-center"><i t-att-class="'fa fa-check' if page.website_indexed else 'fa fa-times text-muted'" role="img" t-att-aria-label="'Checked' if page.website_indexed else 'Not checked'" t-att-title="'Checked' if page.website_indexed else 'Not checked'"></i></td>
<td class="text-right">
<a class="mr4 fa fa-cog js_page_properties" t-att-data-id="page.id" href="#" title="Manage this page" aria-label="Manage this page"></a>
<a class="mr4 fa fa-pencil-square-o" t-attf-href="/web#id=#{page.view_id.id}&amp;view_type=form&amp;model=ir.ui.view" title="Edit code in backend" aria-label="Edit code in backend"></a>
<a class="mr4 fa fa-clone js_clone_page" t-att-data-id="page.id" href="#" title="Clone this page" aria-label="Clone this page"></a>
<a class="fa fa-trash js_delete_page" t-att-data-id="page.id" href="#" title="Delete this page" aria-label="Delete this page"></a>
</td>
</tr>
</t>
</table>
</div>
<div t-if="pager" class="o_portal_pager text-center">
<t t-call="website.pager"/>
</div>
</div>
</div>
</t>
</template>
</odoo>