You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

320 lines
19 KiB

<?xml version="1.0" encoding="UTF-8" ?>
<odoo>
<template id="splash_blog" name="Splash Blog"
inherit_id="website_blog.blog_post_short">
<!-- Inherits from "website_blog.blog_post_short" and replaces two elements with a banner section and -->
<!-- a custom blog view. It also includes a pager element for navigating through blog posts.-->
<xpath expr="//div[@id='o_wblog_blog_top']" position="replace">
<div style="display:none;">
<div id="o_wblog_blog_top_droppable"/>
</div>
<section class="banner_about">
<div class="container">
<h3 class="b_head">
Blog
</h3>
</div>
</section>
</xpath>
<xpath expr="//div[@id='o_wblog_posts_loop_container']" position="replace">
<t t-call="theme_splash.splash_blog_view">
<t t-if="not blog" t-set="posts_list_show_parent_blog" t-value="True"/>
</t>
<t t-call="website.pager">
<t t-set="classname" t-valuef="justify-content-center"/>
<t t-set="extraLinkClass" t-valuef="post_link"/>
</t>
</xpath>
</template>
<template id="splash_blog_view" name="Splash Blog View" inherit_id="website_blog.posts_loop">
<xpath expr="//div[@id='o_wblog_posts_loop']" position="replace">
<div class="container">
<div class="row">
<div class="col-md-8">
<div id="o_wblog_posts_loop"
t-att-class="'o_wblog_list_view' if opt_blog_list_view else ''">
<!-- Allow to filter post by published state. Visible only in edit-mode
and if both published/unpublished number is > 0 -->
<t t-if="state_info" t-set="state"
t-value="state_info['state']"/>
<!-- Check for active options -->
<t t-set="opt_posts_loop_show_cover"
t-value="is_view_active('website_blog.opt_posts_loop_show_cover')"/>
<div groups="website.group_website_designer"
t-if="state_info and (state_info['published'] > 0 and state_info['unpublished'] > 0)">
<div class="bg-200 py-2 mb-4 alert alert-dismissable">
<button type="button" class="close" data-dismiss="alert"
aria-label="Close">&#215;
</button>
<span class="mr-1">Show:</span>
<div class="btn-group btn-group-sm">
<a t-attf-class="btn #{state == 'published' and 'btn-success' or 'btn-default bg-white border'}"
t-attf-href="#{state == 'published' and blog_url(state='') or blog_url(state='published')}">
<i t-attf-class="fa mr-1 #{state == 'published' and 'fa-check-square-o' or 'fa-square-o'}"/>
Published (<t t-esc="state_info['published']"/>)
</a>
<a t-attf-class="btn #{state == 'unpublished' and 'btn-success' or 'btn-default bg-white border'}"
t-attf-href="#{state == 'unpublished' and blog_url(state='') or blog_url(state='unpublished')}">
<i t-attf-class="fa mr-1 #{state == 'unpublished' and 'fa-check-square-o' or 'fa-square-o'}"/>
Unpublished (<t
t-esc="state_info['unpublished']"/>)
</a>
</div>
<div class="pt-1 font-italic small">This box will not be
visible to your visitors
</div>
</div>
</div>
<div t-attf-class="row #{posts and not opt_blog_readable and 'mx-n2'}">
<!-- Filters -->
<div t-if="tag or date_begin or search" class="col-12 mb-3">
<div t-if="posts" class="h4 mb-3">
<t t-esc="len(posts)"/>
<t t-if="len(posts) &lt; 2">Article</t>
<t t-else="">Articles</t>
</div>
<span t-if="search"
class="align-items-baseline border d-inline-flex pl-2 rounded mb-2">
<i class="fa fa-search mr-2 text-muted"/>
<t t-esc="search"/>
<a t-att-href="blog_url(search=False, tag=tag)"
class="btn border-0 py-1 post_link">&#215;
</a>
</span>
<t t-if="tag">
<!-- Show active tags with a category set -->
<t t-foreach="tag_category" t-as="nav_tag_category">
<t t-call="website_blog.tags_list">
<t t-set='tags'
t-value='nav_tag_category.tag_ids'/>
<t t-set='dismissibleBtn' t-value="True"/>
</t>
</t>
<!-- Show active tags without a category set -->
<t t-call="website_blog.tags_list">
<t t-set='tags' t-value='other_tags'/>
<t t-set='dismissibleBtn' t-value="True"/>
</t>
</t>
<span t-if="date_begin"
class="align-items-baseline border d-inline-flex pl-2 rounded mb-2">
<i class="fa fa-calendar-o mr-2 text-muted"/>
<t t-esc="date_begin"
t-options="{'widget': 'date', 'format': 'MMM yyyy'}"/>
<a t-attf-href="#{blog_url(date_begin=False, date_end=False)}"
class="btn border-0 py-1">&#215;
</a>
</span>
<hr class="mt-2"/>
</div>
<!-- No blog post yet -->
<div t-if="not posts" class="col">
<t t-set="no_results_str">No results for "%s".</t>
<h2 t-if="search" t-esc="no_results_str % search"
class="font-weight-bold"/>
<h2 t-else="">No blog post yet.</h2>
<div class="alert alert-info"
groups="website.group_website_designer">
Click on "<b>New</b>" in the top-right corner to
write your first blog post.
</div>
</div>
<!-- Posts -->
<!-- Define 'colWidth' qWeb variable, to be assigned later.
Adjust accordingly if sidebar and/or readability modes are active. -->
<t t-if="not opt_blog_list_view">
<t t-if="opt_blog_readable">
<t t-if="opt_blog_sidebar_show" t-set="colWidth"
t-value="'col-md-6'"/>
<t t-else="" t-set="colWidth"
t-value="'col-md-6 col-xl-4'"/>
</t>
<t t-else="">
<t t-if="opt_blog_sidebar_show" t-set="colWidth"
t-value="'px-2 col-md-6 col-xl-4'"/>
<t t-else="" t-set="colWidth"
t-value="'px-2 col-sm-6 col-lg-4 col-xl-3'"/>
</t>
</t>
<!-- Loop through posts: exclude the first one if already displayed as top banner -->
<t t-foreach="posts" t-as="blog_post">
<div t-attf-class="pb-4 col-12 #{colWidth}">
<article
t-attf-class="o_wblog_post position-relative #{'card h-100' if opt_blog_cards_design else ''}"
name="blog_post">
<!-- Assign 'colWidth': 'col-12' is default for List-View and mobile -->
<t t-if="opt_blog_list_view">
<div class="Blog">
<div class="b_left_single">
<div t-if="opt_posts_loop_show_cover"
class="blog_img">
<t t-call="website_blog.post_cover_image"/>
<div class="blog_date">
14 Sep
</div>
</div>
<div class="wrapper">
<a class="blog_link">
<h4>
<t t-call="website_blog.post_heading"/>
</h4>
</a>
<div class="comment">
<span class="fa fa-user">
<a t-esc="blog_post.author_id.name"/>
</span>
<span t-if="posts_list_show_parent_blog"
class=" fa fa-folder-open text-muted">
<a t-attf-href="/blog/#{slug(blog_post.blog_id)}"
t-field="blog_post.blog_id"/>
</span>
</div>
<div class="blog_details">
<p class="para">
<t t-call="website_blog.post_teaser"/>
</p>
<a t-attf-href="/blog/#{slug(blog_post.blog_id)}/#{slug(blog_post)}"
class="btn btn-primary">
Read more
<i class="fa fa-chevron-right ml-2"/>
</a>
</div>
</div>
</div>
</div>
</t>
</article>
</div>
<!-- List-View Design -->
<!-- Grid-View Design -->
<t t-if="not opt_blog_list_view">
<t t-if="opt_posts_loop_show_cover"
t-call="website_blog.post_cover_image"/>
<div t-att-class="opt_blog_cards_design and 'card-body px-2 py-0 mb-2'">
<t t-call="website_blog.post_heading"/>
<div t-if="is_view_active('website_blog.opt_posts_loop_show_teaser')">
<t t-call="website_blog.post_teaser"/>
</div>
</div>
<div t-attf-class="o_wblog_normalize_font #{'card-footer px-2 pb-2' if opt_blog_cards_design else 'pr-2 pb-2'}">
<t t-call="website_blog.post_info"/>
</div>
</t>
<!-- Add 'unpublished' badge -->
<span t-if="not blog_post.website_published"
class="bg-danger small py-1 px-2 position-absolute o_not_editable"
style="top:0; right:0">unpublished
</span>
<!-- List-View Design, add <hr> after post -->
<div t-if="opt_blog_list_view and not blog_post_last"
class="col-12 mt-2 mb-5 px-2">
<hr/>
</div>
</t>
</div>
</div>
</div>
<div class="col-md-4">
<div class="blog_right">
<div class="sidebar">
<div class="sidebar_content">
<h4>
Search
</h4>
<form id="o_wblog_post_search"
class="m-auto w-100"
role="search"
t-att-action="blog_url(tag=tag,search=search)"
method="get">
<t t-call="website.website_search_box">
<t t-set="_classes" t-valuef="w-100"/>
</t>
</form>
</div>
<div class="sidebar_content">
<h4>
<a>
Categories
</a>
</h4>
<h6 class="all_categories">
<a href="/blog"
t-attf-class="nav-link font-weight-bold #{(not blog) and 'active'}">
All
</a>
</h6>
<ul class="all_categories" t-foreach="blogs"
t-as="nav_blog">
<a t-attf-href="/blog/#{slug(nav_blog)}">
<li t-attf-class="nav-link #{(blog and nav_blog.id == blog.id) and 'active' or ''}">
<b t-field="nav_blog.name"/>
</li>
</a>
</ul>
</div>
<div class="sidebar_content">
<h4>
Recent Posts
</h4>
<t t-foreach="posts_recent" t-as="p">
<div class="recent_wrapper">
<a t-attf-href="/blog/#{p.blog_id.id}/#{p.id}">
<div class="img_wrapper">
<t t-call="website.record_cover">
<t t-set="_record" t-value="p"/>
<t t-set="use_size"
t-value="img_wrap"/>
<t t-set="additionnal_classes"
t-value="'img_wrap'"/>
</t>
</div>
<div class="rec_post_info">
<a t-attf-href="/blog/#{p.blog_id.id}/#{p.id}">
<h4>
<t t-esc="p.name"/>
</h4>
</a>
<p>
<t t-esc="p.published_date"
t-options="{'widget': 'date', 'format': 'MMM dd yyyy'}"/>
</p>
</div>
</a>
</div>
</t>
</div>
<div t-if="other_tags or tag_category" class="sidebar_content">
<h4>
Popular Tags
</h4>
<div class="pop_wrapper">
<t t-call="website_blog.tags_list">
<t t-set='tags' t-value='other_tags'/>
<t t-set="showInactive" t-value="True"/>
</t>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</xpath>
</template>
<template id="splash_blog_search" name="Splash Blog Search"
inherit_id="website_blog.blogs_nav">
<xpath expr="//div" position="replace"/>
</template>
</odoo>