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.
 
 
 
 
 

514 lines
39 KiB

<?xml version="1.0" encoding="UTF-8" ?>
<odoo>
<template id="boec_tic" inherit_id="sale.variants">
<xpath expr="//label[contains(@t-attf-class, 'css_attribute_color')]" position="inside">
<span>
<img src="https://s3-us-west-2.amazonaws.com/s.cdpn.io/242518/check-icn.svg" alt="Checked Icon"/>
</span>
</xpath>
</template>
<template id="boec_radio_variant" inherit_id="sale.variants">
<xpath expr="//li[hasclass('js_attribute_value')]" position="replace">
<li class="list-inline-item" style="margin: 0;">
<label class="col-form-label">
<div>
<div class="btn btn-size">
<input type="radio"
t-attf-class="js_variant_change radio_input #{ptal.attribute_id.create_variant}"
t-att-checked="ptav in combination"
t-att-name="'ptal-%s' % ptal.id"
t-att-value="ptav.id"
t-att-data-value_id="ptav.id"
t-att-data-value_name="ptav.name"
t-att-data-attribute_name="ptav.attribute_id.name"
t-att-data-is_custom="ptav.is_custom"
t-att-data-is_single_and_custom="single_and_custom"/>
<span t-field="ptav.name"/>
<span class="badge badge-pill badge-secondary" t-if="ptav.price_extra">
<!-- see note above about price_extra -->
<t t-esc="ptav.price_extra > 0 and '+' or '-'"/>
<span t-esc="abs(ptav.price_extra)" class="variant_price_extra"
style="white-space: nowrap;"
t-options='{
"widget": "monetary",
"from_currency": product.currency_id,
"display_currency": (pricelist or product).currency_id
}'/>
</span>
</div>
</div>
</label>
</li>
</xpath>
</template>
<template id="boec_arrow" inherit_id="website_sale.shop_product_carousel">
<xpath expr="//span[hasclass('fa-chevron-left')]" position="replace">
<svg width="15%" height="15%" viewBox="0 0 11 20">
<path style="fill:none;stroke-width: 1px;stroke: #000;" d="M9.554,1.001l-8.607,8.607l8.607,8.606"/>
</svg>
</xpath>
<xpath expr="//span[hasclass('fa-chevron-right')]" position="replace">
<svg width="15%" height="15%" viewBox="0 0 11 20" version="1.1">
<path style="fill:none;stroke-width: 1px;stroke: #000;" d="M1.054,18.214l8.606,-8.606l-8.606,-8.607"/>
</svg>
</xpath>
</template>
<template id="boec_product_view" name="Boec Product View" inherit_id="website_sale.product">
<xpath expr="//section[@id='product_detail']" position="replace">
<section
t-attf-class="container py-4 oe_website_sale #{'discount' if combination_info['has_discounted_price'] else ''}"
id="product_detail"
t-att-data-view-track="view_track and '1' or '0'"
t-att-data-product-tracking-info="json.dumps(request.env['product.template'].get_google_analytics_data(combination_info))">
<section class="Shop_details">
<div class="wrapper gap3">
<div class="container">
<div class="row">
<nav aria-label="breadcrumb " class="brd">
<ol class="breadcrumb">
<li class="breadcrumb-item">
<a href="/">Home</a>
</li>
<i class="material-icons">&#xe315;</i>
<li class="breadcrumb-item">
<a href="/shop">Shop</a>
</li>
<i class="material-icons">&#xe315;</i>
<li class="breadcrumb-item active" aria-current="page">
<span t-field="product.name"/>
</li>
</ol>
</nav>
</div>
<div class="ff">
<div class="container">
<div class="slider">
<t t-set="product_images"
t-value="product_variant._get_images() if product_variant else product._get_images()"/>
<div id="o-carousel-product" class="carousel slide" data-ride="carousel"
data-interval="0">
<div class="carousel-outer position-relative">
<div class="carousel-inner h-100">
<t t-foreach="product_images" t-as="product_image">
<div t-attf-class="carousel-item h-100#{' active' if product_image_first else ''}">
<div t-if="product_image._name == 'product.image' and product_image.embed_code"
class="d-flex align-items-center justify-content-center h-100 embed-responsive embed-responsive-16by9">
<t t-raw="product_image.embed_code"/>
</div>
<div t-else="" t-field="product_image.image_1920"
class="d-flex align-items-center justify-content-center h-100"
t-options='{"widget": "image", "preview_image": "image_1024", "class": "product_detail_img mh-100", "alt-field": "name", "zoom": product_image.can_image_1024_be_zoomed and "image_1920", "itemprop": "image"}'/>
</div>
</t>
</div>
<t t-if="len(product_images) > 1">
<a class="carousel-control-prev" href="#o-carousel-product"
role="button" data-slide="prev">
<svg width="15%" height="15%" viewBox="0 0 11 20">
<path style="fill:none;stroke-width: 1px;stroke: #000;"
d="M9.554,1.001l-8.607,8.607l8.607,8.606"/>
</svg>
</a>
<a class="carousel-control-next" href="#o-carousel-product"
role="button" data-slide="next">
<svg width="15%" height="15%" viewBox="0 0 11 20" version="1.1">
<path style="fill:none;stroke-width: 1px;stroke: #000;"
d="M1.054,18.214l8.606,-8.606l-8.606,-8.607"/>
</svg>
</a>
</t>
</div>
<div t-ignore="True" class="sync2 d-md-block text-center">
<ol t-if="len(product_images) > 1"
class="carousel-indicators d-inline-block position-static mx-auto my-0">
<t t-foreach="product_images" t-as="product_image">
<li t-attf-class="d-inline-block m-1 align-top {{'active' if product_image_first else ''}}"
data-target="#o-carousel-product"
t-att-data-slide-to="str(product_image_index)">
<div class="item" t-field="product_image.image_128"
t-options='{"widget": "image", "qweb_img_responsive": False, "class": "o_image_64_contain", "alt-field": "name"}'/>
<i t-if="product_image._name == 'product.image' and product_image.embed_code"
class="fa fa-2x fa-play-circle-o o_product_video_thumb"/>
</li>
</t>
</ol>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</section>
<section class="preview_details">
<div class="container">
<div class="wrapper">
<h3 class="p_head">
<span t-field="product.name"/>
</h3>
<span itemprop="url" style="display:none;" t-esc="product.website_url"/>
<form t-if="product._is_add_to_cart_possible()" action="/shop/cart/update" method="POST">
<input type="hidden" name="csrf_token" t-att-value="request.csrf_token()"/>
<div class="nw">
<div class="price">
<t t-call="website_sale.product_price"/>
</div>
</div>
<p t-field="product.description_sale" class="abt"
placeholder="A short description that will also appear on documents."/>
<div class="p_c" style="text-align: center;">
<div class="js_product js_main_product mb-3">
<t t-placeholder="select">
<input type="hidden" class="product_id" name="product_id"
t-att-value="product_variant.id"/>
<input type="hidden" class="product_template_id" name="product_template_id"
t-att-value="product.id"/>
<input t-if="product.public_categ_ids.ids" type="hidden"
class="product_category_id"
name="product_category_id"
t-att-value="product.public_categ_ids.ids[0]"/>
<input t-if="product.product_tag_ids.ids" type="hidden"
class="product_tag_id"
name="product_tag_id" t-att-value="product.product_tag_ids.ids[0]"/>
<t t-if="combination" t-call="sale.variants">
<t t-set="ul_class" t-valuef="flex-column"/>
<t t-set="parent_combination" t-value="None"/>
</t>
<t t-else="">
<ul class="d-none js_add_cart_variants mb-0"
t-att-data-attribute_exclusions="{'exclusions: []'}"/>
</t>
</t>
<p t-if="True" class="css_not_available_msg alert alert-warning">This
combination does
not exist.
</p>
<div id="o_wsale_cta_wrapper" class="d-flex flex-wrap align-items-center">
<t t-set="hasQuantities" t-value="false"/>
<t t-set="hasBuyNow" t-value="false"/>
<t t-set="ctaSizeBig" t-value="not hasQuantities or not hasBuyNow"/>
<div id="add_to_cart_wrap"
t-attf-class="{{'d-none' if combination_info['prevent_zero_price_sale'] else 'd-inline-flex'}} align-items-center mb-2 me-auto">
<div class="css_quantity input-group" contenteditable="false">
<div class="input-group-prepend">
<a t-attf-href="#" class="btn btn-minus js_add_cart_json"
aria-label="Remove one" title="Remove one">
<i class="fa fa-minus"/>
</a>
</div>
<input type="text" class="form-control input-number" data-min="1"
name="add_qty" t-att-value="add_qty or 1"
style="border: 0px;"/>
<div class="input-group-append">
<a t-attf-href="#"
class="btn btn-minus float_left js_add_cart_json"
aria-label="Add one" title="Add one">
<i class="fa fa-plus"/>
</a>
</div>
</div>
<a role="button" id="add_to_cart"
t-attf-class="btn btn-primary js_check_product a-submit flex-grow-1 #{'btn-lg' if ctaSizeBig else ''}"
href="#">
<i class="fa fa-shopping-cart me-2"/>
<span style="font-weight: bold">Add To Cart</span>
</a>
</div>
<div id="product_option_block" class="d-flex flex-wrap w-100"/>
</div>
<div id="contact_us_wrapper"
t-attf-class="{{'d-flex' if combination_info['prevent_zero_price_sale'] else 'd-none'}} oe_structure oe_structure_solo #{_div_classes}">
<section class="s_text_block" data-snippet="s_text_block" data-name="Text">
<div class="container">
<a t-att-href="website.contact_us_button_url"
class="btn btn-primary btn_cta">Contact Us
</a>
</div>
</section>
</div>
</div>
<!-- <t t-placeholder="select">-->
<!-- <input type="hidden" class="product_id" name="product_id"-->
<!-- t-att-value="product_variant.id"/>-->
<!-- <input type="hidden" class="product_template_id" name="product_template_id"-->
<!-- t-att-value="product.id"/>-->
<!-- <input t-if="product.public_categ_ids.ids" type="hidden"-->
<!-- class="product_category_id"-->
<!-- name="product_category_id"-->
<!-- t-att-value="product.public_categ_ids.ids[0]"/>-->
<!-- <input t-if="product.product_tag_ids.ids" type="hidden" class="product_tag_id"-->
<!-- name="product_tag_id" t-att-value="product.product_tag_ids.ids[0]"/>-->
<!-- <t t-if="combination" t-call="sale.variants">-->
<!-- <t t-set="ul_class" t-valuef="flex-column"/>-->
<!-- <t t-set="parent_combination" t-value="None"/>-->
<!-- </t>-->
<!-- <t t-else="">-->
<!-- <ul class="d-none js_add_cart_variants mb-0"-->
<!-- t-att-data-attribute_exclusions="{'exclusions: []'}"/>-->
<!-- </t>-->
<!-- </t>-->
</div>
<div class="add_to" style="text-align: center;">
<!--Wish List-->
<t t-set="product_variant"
t-value="product_variant or product._create_first_product_variant()"/>
<t t-set="in_wish" t-value="product_variant and product_variant._is_in_wishlist()"/>
<button t-if="product_variant" type="button" role="button"
class="btn btn-link mt16 o_add_wishlist_dyn"
t-att-disabled='in_wish or None'
t-att-data-product-template-id="product.id"
t-att-data-product-product-id="product_variant.id"
data-action="o_wishlist">
<span class="fa fa-heart" role="img" aria-label="Add to wishlist"/>
Add to Wishlist
</button>
<!--Comparison-->
<t t-set="product_variant"
t-value="product_variant or product._create_first_product_variant()"/>
<button t-if="product_variant" type="button" role="button"
class="d-none d-md-inline-block btn btn-link mt16 o_add_compare_dyn"
aria-label="Compare" t-att-data-product-product-id="product_variant.id"
data-action="o_comparelist">
<span class="fas fa-exchange-alt"/>
Add to Compare
</button>
</div>
<!-- <div class="qnty">-->
<!-- &lt;!&ndash;Quantity&ndash;&gt;-->
<!-- <div class="css_quantity input-group" contenteditable="false">-->
<!-- <div class="input-group-prepend">-->
<!-- <a t-attf-href="#" class="btn btn-minus js_add_cart_json"-->
<!-- aria-label="Remove one" title="Remove one">-->
<!-- <i class="fa fa-minus"/>-->
<!-- </a>-->
<!-- </div>-->
<!-- <input type="text" class="form-control input-number" data-min="1" name="add_qty"-->
<!-- t-att-value="add_qty or 1" style="border: 0px;"/>-->
<!-- <div class="input-group-append">-->
<!-- <a t-attf-href="#" class="btn btn-minus float_left js_add_cart_json"-->
<!-- aria-label="Add one" title="Add one">-->
<!-- <i class="fa fa-plus"/>-->
<!-- </a>-->
<!-- </div>-->
<!-- </div>-->
<!-- <t t-set="hasQuantities" t-value="false"/>-->
<!-- <t t-set="hasBuyNow" t-value="false"/>-->
<!-- <t t-set="ctaSizeBig" t-value="not hasQuantities or not hasBuyNow"/>-->
<!-- <a role="button" id="add_to_cart"-->
<!-- t-attf-class="btn btn-add js_check_product a-submit flex-grow-1 #{'btn-sm' if ctaSizeBig else ''}"-->
<!-- href="#">-->
<!-- <i class="fa fa-shopping-cart me-2"/>-->
<!-- <span style="font-weight: bold">ADD TO CART</span>-->
<!-- </a>-->
<!-- <div id="product_option_block" class="d-flex flex-wrap w-100"/>-->
<!-- </div>-->
<!-- <div class="add_to">-->
<!-- &lt;!&ndash;Wish List&ndash;&gt;-->
<!-- <t t-set="product_variant"-->
<!-- t-value="product_variant or product._create_first_product_variant()"/>-->
<!-- <t t-set="in_wish" t-value="product_variant and product_variant._is_in_wishlist()"/>-->
<!-- <button t-if="product_variant" type="button" role="button"-->
<!-- class="btn btn-link mt16 o_add_wishlist_dyn"-->
<!-- t-att-disabled='in_wish or None'-->
<!-- t-att-data-product-template-id="product.id"-->
<!-- t-att-data-product-product-id="product_variant.id"-->
<!-- data-action="o_wishlist">-->
<!-- <span class="fa fa-heart" role="img" aria-label="Add to wishlist"/>-->
<!-- Add to Wishlist-->
<!-- </button>-->
<!-- &lt;!&ndash;Comparison&ndash;&gt;-->
<!-- <t t-set="product_variant"-->
<!-- t-value="product_variant or product._create_first_product_variant()"/>-->
<!-- <button t-if="product_variant" type="button" role="button"-->
<!-- class="d-none d-md-inline-block btn btn-link mt16 o_add_compare_dyn"-->
<!-- aria-label="Compare" t-att-data-product-product-id="product_variant.id"-->
<!-- data-action="o_comparelist">-->
<!-- <span class="fas fa-exchange-alt"/>-->
<!-- Add to Compare-->
<!-- </button>-->
<!-- </div>-->
</form>
<p t-elif="not product.active" class="alert alert-warning">This product is no longer
available.
</p>
<p t-else="" class="alert alert-warning">This product has no valid combination.</p>
</div>
</div>
</section>
<div class="container" style="text-align: center;">
<div>
<div id="product_attributes_simple">
<hr t-if="sum([(1 if len(l.value_ids)==1 else 0) for l in product.attribute_line_ids])"/>
<p class="text-muted">
<t t-set="single_value_attributes"
t-value="product.valid_product_template_attribute_line_ids._prepare_single_value_for_display()"/>
<t t-foreach="single_value_attributes" t-as="attribute">
<span t-field="attribute.name"/>:
<t t-foreach="single_value_attributes[attribute]" t-as="ptal">
<span t-field="ptal.product_template_value_ids._only_active().name"/>
<t t-if="not ptal_last">,</t>
</t>
<br/>
</t>
</p>
</div>
</div>
<div class="types">
<ul>
<t t-if="product.public_categ_ids">
<li>Categories:
<span t-esc="product.public_categ_ids.name"/>
</li>
</t>
</ul>
</div>
<div class="description">
<nav>
<div class="nav nav-tabs" id="nav-tab" role="tablist">
<button class="nav-link active" id="nav-home-tab" data-bs-toggle="tab"
data-bs-target="#nav-home"
type="button" role="tab" aria-controls="nav-home" aria-selected="true">
Description
</button>
<button class="nav-link" id="nav-profile-tab" data-bs-toggle="tab"
data-bs-target="#nav-profile"
type="button" role="tab" aria-controls="nav-profile"
aria-selected="false">Customer Reviews
</button>
<button class="nav-link" id="nav-contact-tab" data-bs-toggle="tab"
data-bs-target="#nav-contact"
type="button" role="tab" aria-controls="nav-contact"
aria-selected="false">Additional
information
</button>
</div>
</nav>
<div class="tab-content" id="nav-tabContent">
<div class="tab-pane fade show active" id="nav-home" role="tabpanel"
aria-labelledby="nav-home-tab">
<div class="bt">
<section id="product_full_spec">
<t t-set="categories"
t-value="product.valid_product_template_attribute_line_ids._prepare_categories_for_display()"/>
<t t-if="categories">
<h3 class="text-center mb32">Specifications for
<t t-esc="product.name"/>
</h3>
<div class="row">
<div class='col-lg-8 offset-lg-2' id='product_specifications'>
<table class='table table-striped table-sm table-hover'>
<t t-foreach="categories" t-as="category">
<t t-if="len(categories) > 1">
<tr class="clickable" data-toggle="collapse"
t-att-data-target="'.o_ws_category_%d' % category.id">
<th class="text-left" t-att-colspan="2">
<span t-if="category"
t-field="category.name"/>
<span t-else="">Uncategorized</span>
</th>
</tr>
</t>
<tr t-foreach="categories[category].filtered(lambda l: len(l.value_ids) > 1)"
t-as="ptal"
t-att-class="'collapse show o_ws_category_%d' % category.id">
<td>
<span t-field="ptal.attribute_id.name"/>
</td>
<td>
<t t-foreach="ptal.value_ids" t-as="pav">
<span t-field="pav.name"/>
<t t-if="not pav_last"> or </t>
</t>
</td>
</tr>
<t t-set="single_value_attributes"
t-value="categories[category]._prepare_single_value_for_display()"/>
<tr t-foreach="single_value_attributes"
t-as="attribute"
t-att-class="'collapse show o_ws_category_%d' % category.id">
<td>
<span t-field="attribute.name"/>
</td>
<td>
<t t-foreach="single_value_attributes[attribute]"
t-as="ptal">
<span t-field="ptal.product_template_value_ids._only_active().name"/>
<t t-if="not ptal_last">,</t>
</t>
</td>
</tr>
</t>
</table>
</div>
</div>
</t>
</section>
</div>
</div>
<div class="tab-pane fade" id="nav-profile" role="tabpanel"
aria-labelledby="nav-profile-tab">
<div class="top">
<div class="o_shop_discussion_rating">
<section class="container mt16 mb16">
<div class="row">
<div class="col-lg-8 offset-lg-2">
<t t-call="portal.message_thread">
<t t-set="object" t-value="product"/>
<t t-set="display_rating" t-value="True"/>
</t>
</div>
</div>
</section>
</div>
</div>
</div>
<div class="tab-pane fade" id="nav-contact" role="tabpanel"
aria-labelledby="nav-contact-tab">
<p class="top">
Terms and Conditions
</p>
<div class="bt">
30-day money-back guarantee
<br/>
Shipping: 2-3 Business Days
<br/>
<a class="text-muted" href="/shop/terms">Read more...</a>
</div>
</div>
</div>
</div>
</div>
<div class="row" id="product_detail_main" data-name="Product Page"
t-att-data-image_width="website.product_page_image_width"
t-att-data-image_layout="website.product_page_image_layout">
<t t-set="image_cols" t-value="website._get_product_page_proportions()"/>
<div t-attf-class="col-lg-#{image_cols[1]} mt-md-4" id="product_details">
<div id="o_product_terms_and_share"
class="d-flex justify-content-between flex-column flex-md-row align-items-md-end mb-3">
</div>
</div>
</div>
</section>
</xpath>
</template>
</odoo>