[IMP] website, website_sale: add dynamic snippets

* Implement new snippets that allow the user to choose a filter
  and a template.
  Three snippets have been created:
  - Dynamic Snippet: Displays the data in a grid format
  - Dynamic Carousel: Displays the date in a carousel
  - Dynamic Products: Let the user pick a product category and
                      displays the products in a carousel

task-2276740
PR #53175

Signed-off-by: Jérémy Kersten (jke) <jke@openerp.com>
This commit is contained in:
Laurent Stukkens (LTU)
2020-08-18 17:40:25 +00:00
parent 8b6985eeed
commit 0e7640b5f2
29 changed files with 1092 additions and 2 deletions
+64
View File
@@ -698,6 +698,70 @@
<field name="type">url</field>
<field name="url">/website/static/src/img/snippets_demo/s_popup.jpg</field>
</record>
<!-- Filter for Dynamic Snippet -->
<record id="dynamic_snippet_country_filter" model="ir.filters">
<field name="name">Countries</field>
<field name="model_id">res.country</field>
<field name="user_id" eval="False" />
</record>
<!-- Template for Dynamic Snippet -->
<template id="dynamic_filter_template_image_title_footer" name="Image Title Footer Card">
<t t-foreach="records" t-as="record">
<t t-set="fields" t-value="list(record['fields'].values())"/>
<t t-set="fieldsImg" t-value="list(record['image_fields'].values())"/>
<div class="card h-100" t-att-data-url="record['fields']['call_to_action_url']">
<img t-if="len(fieldsImg) > 0" class="card-img-top p-3" loading="lazy" t-att-src="fieldsImg[0]"/>
<div class="card-body">
<h5 t-if="len(fields) > 0" class="card-title">
<t t-raw="fields[0]"/>
</h5>
<div t-if="len(fields) > 1" class="card-text">
<t t-raw="fields[1]"/>
</div>
</div>
<div class="card-footer d-flex align-items-center">
<div t-if="len(fields) > 2" class="card-text">
<t t-raw="fields[2]"/>
</div>
<a t-if="call_to_action" class="btn btn-primary ml-auto" t-att-href="record['fields']['call_to_action_url']">
<i class="fa fa-fw fa-eye"/>
</a>
</div>
</div>
</t>
</template>
<template id="dynamic_filter_template_header_image_footer_card" name="Header Image Footer Card">
<t t-foreach="records" t-as="record">
<t t-set="fields" t-value="list(record['fields'].values())"/>
<t t-set="fieldsImg" t-value="list(record['image_fields'].values())"/>
<div class="card h-100" t-att-data-url="record['fields']['call_to_action_url']">
<h5 t-if="len(fields) > 0" class="card-header">
<t t-raw="fields[0]"/>
</h5>
<div class="card-body">
<img t-if="len(fieldsImg) > 0" class="card-img-top p-3" loading="lazy" t-att-src="fieldsImg[0]"/>
<div t-if="len(fields) > 1" class="card-text">
<t t-raw="fields[1]"/>
</div>
</div>
<div class="card-footer d-flex align-items-center">
<div t-if="len(fields) > 2" class="card-text">
<t t-raw="fields[2]"/>
</div>
</div>
</div>
</t>
</template>
<!-- Dynamic Snippet Data Source -->
<record id="dynamic_snippet_data_source_country" model="website.snippet.filter">
<field name="field_names">name,code,image,phone_code</field>
<field name="filter_id" ref="website.dynamic_snippet_country_filter"/>
<field name="limit" eval="16"/>
<field name="name">Countries</field>
<field name="website_id" ref="website.default_website"/>
</record>
</data>
<data>
<record id="group_multi_website" model="res.groups">