File: s_blog_posts.xml

package info (click to toggle)
odoo 18.0.0%2Bdfsg-2
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 878,716 kB
  • sloc: javascript: 927,937; python: 685,670; xml: 388,524; sh: 1,033; sql: 415; makefile: 26
file content (218 lines) | stat: -rw-r--r-- 12,274 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<!-- Snippet -->
<template id="s_blog_posts" name="Blog Posts">
    <t t-call="website.s_dynamic_snippet_template">
        <t t-set="snippet_name" t-value="'s_blog_posts'"/>
        <t t-set="snippet_classes" t-value="'s_dynamic_snippet_blog_posts s_blog_post_big_picture s_blog_posts_effect_marley s_blog_posts_post_picture_size_default'"/>
        <t t-set="custom_template_data" t-valuef='{"blog_posts_post_author_active":true, "blog_posts_post_teaser_active":true, "blog_posts_post_date_active":true}'/>
        <t t-call="website_blog.s_dynamic_snippet_blog_posts_preview_data"/>
    </t>
</template>

<!-- Load-time templates (rendered in JS on page load) -->
<!-- List layout -->
<template id="dynamic_filter_template_blog_post_list" name="List">
    <div t-foreach="records" t-as="data" class="s_blog_posts_post border-0 rounded-3 p-3" data-extra-classes="g-3" data-column-classes="col-12 col-sm-6 col-lg-4">
        <t t-set="record" t-value="data['_record']"/>
        <a class="text-decoration-none text-reset" t-att-title="'Read ' + data['name']" t-att-href="data['call_to_action_url']">
            <div class="d-flex align-items-center small">
                <t t-call="website_blog.s_dynamic_snippet_template_author"/>
                <t t-call="website_blog.s_dynamic_snippet_template_date"/>
            </div>
            <h4 class="mt-2">
                <span t-if="is_sample" class="bg-primary text-uppercase">Sample</span>
                <span t-field="record.name"/>
            </h4>
            <t t-call="website_blog.s_dynamic_snippet_template_teaser"/>
        </a>
    </div>
</template>
<!-- Big picture layout -->
<template id="dynamic_filter_template_blog_post_big_picture" name="Big picture">
    <div t-foreach="records" t-as="data" class="s_blog_posts_post position-relative w-100" data-extra-classes="g-3" data-column-classes="col-12 col-sm-6 col-lg-4">
        <t t-set="record" t-value="data['_record']"/>
        <a class="s_blog_posts_post_cover position-relative d-block h-100 rounded shadow-sm overflow-hidden text-decoration-none text-reset ratio ratio-1x1" t-att-title="'Read ' + data['name']" t-att-href="data['call_to_action_url']">
            <t t-call="website.record_cover">
                <t t-set="_record" t-value="record"/>
                <t t-set="use_filters" t-value="True"/>
                <t t-set="additionnal_classes" t-value="'h-100 w-100 bg-600 position-absolute'"/>

                <div class="s_blog_post_big_picture_infos position-absolute top-0 start-0 w-100 h-100 text-white">
                    <div class="s_blog_posts_post_cover_header d-flex flex-column justify-content-end w-100">
                        <div t-if="is_sample" class="h5 o_ribbon_right bg-primary text-uppercase">Sample</div>
                        <h3 class="s_blog_post_big_picture_title m-0 px-4 text-white" t-field="record.name"/>
                    </div>
                    <div class="s_blog_posts_post_cover_hidden h-auto py-2 px-4">
                        <t t-call="website_blog.s_dynamic_snippet_template_author"/>
                        <p class="s_blog_posts_post_subtitle w-100 mt-2 m-0 lead overflow-hidden" t-field="record.subtitle"/>
                    </div>
                </div>
            </t>
        </a>
    </div>
</template>
<!-- Horizontal layout -->
<template id="dynamic_filter_template_blog_post_horizontal" name="Horizontal">
    <div t-foreach="records" t-as="data" class="s_blog_posts_post w-100" data-number-of-elements="1">
        <t t-set="record" t-value="data['_record']"/>
        <div t-attf-class="pb-4 {{record_last and 'border-0' or 'border-bottom'}}">
            <div class="row flex-md-nowrap">
                <div class="s_blog_posts_post_cover_col col mb-2 mb-md-0">
                    <a class="d-block h-100 text-decoration-none" t-att-href="data['call_to_action_url']" t-att-title="'Read ' + data['name']">
                        <div class="s_blog_posts_post_cover h-100">
                            <t t-call="website.record_cover">
                                <t t-set="_record" t-value="record"/>
                                <t t-set="additionnal_classes" t-value="'h-100 rounded-3 overflow-hidden'"/>
                            </t>
                        </div>
                    </a>
                </div>
                <div class="col-12 col-md d-flex flex-column justify-content-between">
                    <a class="mb-2 mb-md-5 text-decoration-none text-reset" t-att-href="data['call_to_action_url']" t-att-title="'Read ' + data['name']">
                        <div t-if="is_sample" class="h5 o_ribbon_right bg-primary text-uppercase">Sample</div>
                        <h4 class="mb-2 mt-0" t-field="record.name"/>
                        <t t-call="website_blog.s_dynamic_snippet_template_date"/>
                        <p class="s_blog_posts_post_subtitle mt-1 mb-0 lead overflow-hidden" t-field="record.subtitle"/>
                    </a>
                    <div class="d-flex justify-content-between small">
                        <t t-call="website_blog.s_dynamic_snippet_template_author"/>
                        <span class="text-muted">In <a class="fw-bold" t-field="record.blog_id.name" t-att-href="'/blog/%s' % record.blog_id.id" />
                            <a t-if="is_sample" class="fw-bold" href="#">Sample</a>
                        </span>
                    </div>
                </div>
            </div>
        </div>
    </div>
</template>
<!-- Card layout -->
<template id="dynamic_filter_template_blog_post_card" name="Card">
    <div t-foreach="records" t-as="data" class="s_blog_posts_post w-100" data-extra-classes="g-3" data-column-classes="col-12 col-sm-6 col-lg-4 col-xxl-3">
        <t t-set="record" t-value="data['_record']"/>
        <div class="card h-100">
            <a class="text-decoration-none text-reset" t-att-href="data['call_to_action_url']" t-att-title="'Read ' + data['name']">
                <div class="s_blog_posts_post_cover o_not_editable card-img-top ratio ratio-16x9">
                    <t t-call="website.record_cover">
                        <t t-set="_record" t-value="record"/>
                        <t t-set="additionnal_classes" t-value="'position-absolute w-100 h-100 bg-600'"/>
                    </t>
                </div>
                <div class="card-body">
                    <div t-if="is_sample" class="h5 o_ribbon_right bg-primary text-uppercase">Sample</div>
                    <h5 class="text-truncate" t-field="record.name"/>
                    <t t-call="website_blog.s_dynamic_snippet_template_date"/>
                    <t t-call="website_blog.s_dynamic_snippet_template_teaser"/>
                </div>
            </a>
            <div class="card-footer d-flex justify-content-between mt-auto border-0 p-3 pt-0 bg-transparent small">
                <t t-call="website_blog.s_dynamic_snippet_template_author"/>
                <span class="text-muted">In <a class="fw-bold" t-field="record.blog_id.name" t-att-href="'/blog/%s' % record.blog_id.id" />
                    <a t-if="is_sample" class="fw-bold" href="#">Sample</a>
                </span>
            </div>
        </div>
    </div>
</template>

<!-- Blog Post Author (optional) -->
<template id="website_blog.s_dynamic_snippet_template_author" name="Blog Post Author">
    <div t-if="blog_posts_post_author_active" class="s_blog_posts_post_author d-inline-flex align-items-center">
        <img class="o_avatar me-2 rounded-pill" t-attf-src="data:image/png;base64,{{record.author_avatar}}"/>
        <span t-field="record.author_id.name"/>
    </div>
</template>

<!-- Blog Post Teaser (optional for Card and List layouts) -->
<template id="website_blog.s_dynamic_snippet_template_teaser" name="Blog Post Teaser">
    <p t-if="blog_posts_post_teaser_active" class="s_blog_posts_post_teaser my-1 overflow-hidden" t-field="record.teaser"/>
</template>

<!-- Blog Post Date (optional for Card, Horizontal and List layouts) -->
<template id="website_blog.s_dynamic_snippet_template_date" name="Blog Post Date">
    <small t-if="blog_posts_post_date_active" class="s_blog_posts_post_date text-muted" t-field="record.post_date" t-options='{"format": "MMM d, yyyy"}' />
</template>

<!-- Options -->
<template id="s_blog_posts_options" inherit_id="website.snippet_options">
    <xpath expr="." position="inside">
        <t t-call="website_blog.s_dynamic_snippet_options_template">
            <t t-set="snippet_name" t-value="'dynamic_snippet_blog_posts'"/>
            <t t-set="snippet_selector" t-value="'.s_dynamic_snippet_blog_posts'"/>
        </t>
    </xpath>
</template>

<template id="s_dynamic_snippet_options_template" inherit_id="website.s_dynamic_snippet_options_template">
    <xpath expr="//we-select[@data-name='filter_opt']" position="after">
        <we-select t-if="snippet_name == 'dynamic_snippet_blog_posts'"
            string="Blog"
            data-no-preview="true"
            data-name="blog_opt"
            data-attribute-name="filterByBlogId">
            <we-button data-select-data-attribute="-1">All blogs</we-button>
            <!-- the blog list will be generated in js -->
        </we-select>
    </xpath>
    <xpath expr="//we-select[@data-name='template_opt']" position="after">
        <we-select t-if="snippet_name == 'dynamic_snippet_blog_posts'"
            string="Hover Effect"
            class="o_we_sublevel_1 o_we_inline"
            data-no-widget-refresh="true"
            data-name="hover_effect_opt">
            <we-button data-select-class="">None</we-button>
            <we-button data-select-class="s_blog_posts_effect_marley">Marley</we-button>
            <we-button data-select-class="s_blog_posts_effect_dexter">Dexter</we-button>
            <we-button data-select-class="s_blog_posts_effect_chico">Silly-Chico</we-button>
        </we-select>
    </xpath>
    <xpath expr="//we-select[@data-name='template_opt']" position="after">
        <we-checkbox t-if="snippet_name == 'dynamic_snippet_blog_posts'"
            data-name="author_opt"
            string="Author"
            class="o_we_sublevel_1"
            data-no-preview="true"
            data-customize-template-key="blog_posts_post_author_active"
            data-customize-template-values="false|true"/>
        <we-checkbox t-if="snippet_name == 'dynamic_snippet_blog_posts'"
            data-name="teaser_opt"
            string="Teaser"
            class="o_we_sublevel_1"
            data-no-preview="true"
            data-customize-template-key="blog_posts_post_teaser_active"
            data-customize-template-values="false|true"/>
        <we-checkbox t-if="snippet_name == 'dynamic_snippet_blog_posts'"
            data-name="date_opt"
            string="Date"
            class="o_we_sublevel_1"
            data-no-preview="true"
            data-customize-template-key="blog_posts_post_date_active"
            data-customize-template-values="false|true"/>
    </xpath>
    <xpath expr="//we-select[@data-name='template_opt']" position="after">
        <we-button-group t-if="snippet_name == 'dynamic_snippet_blog_posts'"
            class="o_we_sublevel_1 o_we_inline"
            string="Picture size"
            data-no-widget-refresh="true"
            data-no-preview="true"
            data-name="picture_size_opt">
            <we-button data-select-class="s_blog_posts_post_picture_size_small" title="Smaller picture">Smaller</we-button>
            <we-button data-select-class="s_blog_posts_post_picture_size_default" title="Normal picture">Normal</we-button>
        </we-button-group>
    </xpath>
</template>

<!-- Assets -->
<record id="website_blog.s_blog_posts_000_scss" model="ir.asset">
    <field name="name">Blog posts 000 SCSS</field>
    <field name="bundle">web.assets_frontend</field>
    <field name="path">website_blog/static/src/snippets/s_blog_posts/000.scss</field>
</record>

<record id="website_blog.s_blog_posts_000_js" model="ir.asset">
    <field name="name">Blog posts 000 JS</field>
    <field name="bundle">web.assets_frontend</field>
    <field name="path">website_blog/static/src/snippets/s_blog_posts/000.js</field>
</record>

</odoo>