@ -0,0 +1,3 @@ |
|||
# -*- coding: utf-8 -*- |
|||
|
|||
import models |
@ -0,0 +1,56 @@ |
|||
# -*- coding: utf-8 -*- |
|||
############################################################################## |
|||
# |
|||
# Cybrosys Technologies Pvt. Ltd. |
|||
# Copyright (C) 2017-TODAY Cybrosys Technologies(<http://www.cybrosys.com>). |
|||
# Author: Hilar AK(<hilar@cybrosys.in>) |
|||
# you can modify it under the terms of the GNU LESSER |
|||
# GENERAL PUBLIC LICENSE (LGPL v3), Version 3. |
|||
# |
|||
# It is forbidden to publish, distribute, sublicense, or sell copies |
|||
# of the Software or modified copies of the Software. |
|||
# |
|||
# This program is distributed in the hope that it will be useful, |
|||
# but WITHOUT ANY WARRANTY; without even the implied warranty of |
|||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|||
# GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details. |
|||
# |
|||
# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE |
|||
# GENERAL PUBLIC LICENSE (LGPL v3) along with this program. |
|||
# If not, see <http://www.gnu.org/licenses/>. |
|||
# |
|||
############################################################################## |
|||
|
|||
{ |
|||
'name': "E-commerce Product Gallery & Zoom", |
|||
'version': '9.0.1.0.0', |
|||
'summary': """ |
|||
Odoo e-commerce Product Gallery and Zoom.""", |
|||
|
|||
'description': """ |
|||
Odoo e-commerce Product Gallery and Zoom. |
|||
""", |
|||
|
|||
'author': 'Cybrosys Techno Solutions', |
|||
'company': 'Cybrosys Techno Solutions', |
|||
'website': "http://cybrosys.com/", |
|||
'category': 'eCommerce', |
|||
'depends': ['base', |
|||
'website', |
|||
'website_sale', |
|||
], |
|||
'data': [ |
|||
'security/ir.model.access.csv', |
|||
'views/product_view.xml', |
|||
'views/product_template.xml', |
|||
'views/assets.xml' |
|||
], |
|||
# only loaded in demonstration mode |
|||
'demo': [ |
|||
# 'demo/demo.xml', |
|||
], |
|||
'images': ['static/description/banner.jpg'], |
|||
'license': 'LGPL-3', |
|||
'installable': True, |
|||
'application': True |
|||
} |
@ -0,0 +1,3 @@ |
|||
# -*- coding: utf-8 -*- |
|||
|
|||
import product |
@ -0,0 +1,28 @@ |
|||
# -*- coding: utf-8 -*- |
|||
|
|||
from openerp import fields, models |
|||
|
|||
class MultiProductImagesRel(models.Model): |
|||
_name = 'product.images' |
|||
_description = "Add Multiple Images in Product" |
|||
|
|||
sequence = fields.Integer('Sequence') |
|||
name = fields.Char('Name') |
|||
image = fields.Binary( |
|||
'Image', |
|||
attachment=True, |
|||
) |
|||
product_id_rel = fields.Many2one( |
|||
'product.template', |
|||
'Product', |
|||
) |
|||
|
|||
class Product(models.Model): |
|||
_inherit = 'product.template' |
|||
_description = "Images Gallery For Products" |
|||
|
|||
product_multi_images = fields.One2many( |
|||
'product.images', |
|||
'product_id_rel', |
|||
string='Gallery', |
|||
) |
@ -0,0 +1,33 @@ |
|||
# Ecommerce Product Gallery & Zoom |
|||
|
|||
Ecommerce Product Gallery & Zoom is an odoo e-commerse based addon, which Extends the product description view by |
|||
including the Products Multiple Images as a Gallery and also enabling The Zoom. |
|||
|
|||
- E-commerce Product Gallery |
|||
- E-commerce Product Image Zoom |
|||
- Set Product Images on Backend |
|||
- First Five Images will be taken for image Gallery form backend Image list |
|||
|
|||
### Depends |
|||
Ecommerce Product Gallery & Zoom addon depends on Odoo website and website_sale |
|||
### Tech |
|||
|
|||
* [jQuery] - Zoom xZoom v1.0.5, (c) 2013 by Azat Ahmedov & Elman Guseynov, https://github.com/payalord |
|||
* [Python] - Models |
|||
* [XML] - Odoo website templates |
|||
|
|||
### Installation |
|||
- www.odoo.com/documentation/9.0/setup/install.html |
|||
- Install our custom addon, which also installs its depends [website, website_sale] |
|||
|
|||
### Usage |
|||
> Create Gallery Images on product backend, sales -> products -> product form -> page Image Gallery |
|||
> First Install our custom addon, then go to website and open product description page. |
|||
|
|||
License |
|||
---- |
|||
GNU LESSER GENERAL PUBLIC LICENSE, Version 3 (LGPLv3) |
|||
(http://www.gnu.org/licenses/agpl.html) |
|||
|
|||
|
|||
|
|
After Width: | Height: | Size: 119 KiB |
After Width: | Height: | Size: 53 KiB |
After Width: | Height: | Size: 50 KiB |
After Width: | Height: | Size: 15 KiB |
@ -0,0 +1,114 @@ |
|||
<section class="oe_container oe_dark"> |
|||
<h2 class="oe_slogan" style="margin-top:20px;" >E-commerce Product Gallery & Zoom</h2> |
|||
</section> |
|||
<section class="oe_container"> |
|||
<div class="oe_row oe_spaced"> |
|||
<h2 class="oe_slogan" style="color:#875A7B;">Multiple Images for products and Zoom Plugin</h2> |
|||
<h3 class="oe_slogan"> |
|||
Responsive Gallery and Zoom Functionality |
|||
</h3> |
|||
<!--<div class="oe_demo oe_picture oe_screenshot"> |
|||
<img class="trans-300-out" src="screenshot.gif"> |
|||
</div>--> |
|||
</div> |
|||
|
|||
<div class="oe_container oe_dark"> |
|||
<div class="row mt32 o_animate o_animate_in_children o_animate_offset_min" |
|||
style="animation-name: none; visibility: hidden; animation-play-state: paused;"> |
|||
|
|||
<div class="col-md-5 col-md-offset-1" style="transition-delay: 0ms;"> |
|||
<h2 class=" mt32 mb16"><b>Image Configuration On Back-end</b></h2> |
|||
</div> |
|||
<div class="col-md-6" style="transition-delay: 500ms;"> |
|||
<div class=" oe_demo oe_picture oe_screenshot"> |
|||
<img style="max-width: 100%;-moz-transform: scale(1.2);-webkit-transform: scale(1.2); -o-transform: scale(1.2); -ms-transform: scale(1.2); transform: scale(1.2);" |
|||
src="backend.png"> |
|||
</div> |
|||
</div> |
|||
|
|||
</div> |
|||
</div> |
|||
<div class="oe_container"> |
|||
<div class="row mt32 o_animate o_animate_in_children o_animate_offset_min" |
|||
style="animation-name: none; visibility: hidden; animation-play-state: paused;"> |
|||
|
|||
<div class="col-md-5 col-md-offset-1" style="transition-delay: 0ms;"> |
|||
<h2 class=" mt32 mb16"><b>Product Gallery On Shop Product Description Page</b></h2> |
|||
|
|||
</div> |
|||
<div class="col-md-6" style="transition-delay: 500ms;"> |
|||
<div class=" oe_demo oe_picture oe_screenshot"> |
|||
<img style="max-width: 100%;-moz-transform: scale(1.2);-webkit-transform: scale(1.2); -o-transform: scale(1.2); -ms-transform: scale(1.2); transform: scale(1.2);" |
|||
src="tgallery.png"> |
|||
</div> |
|||
</div> |
|||
|
|||
</div> |
|||
</div> |
|||
<div class="oe_container"> |
|||
<div class="row mt32 o_animate o_animate_in_children o_animate_offset_min" |
|||
style="animation-name: none; visibility: hidden; animation-play-state: paused;"> |
|||
|
|||
<div class="col-md-5 col-md-offset-1" style="transition-delay: 0ms;"> |
|||
<h2 class=" mt32 mb16"><b>Hover on Product Gallery Thumbs to change the Images Preview</b></h2> |
|||
|
|||
</div> |
|||
<div class="col-md-6" style="transition-delay: 500ms;"> |
|||
<div class=" oe_demo oe_picture oe_screenshot"> |
|||
<img style="max-width: 100%;-moz-transform: scale(1.2);-webkit-transform: scale(1.2); -o-transform: scale(1.2); -ms-transform: scale(1.2); transform: scale(1.2);" |
|||
src="thover.png"> |
|||
</div> |
|||
</div> |
|||
|
|||
</div> |
|||
</div> |
|||
<div class="oe_container"> |
|||
<div class="row mt32 o_animate o_animate_in_children o_animate_offset_min" |
|||
style="animation-name: none; visibility: hidden; animation-play-state: paused;"> |
|||
|
|||
<div class="col-md-5 col-md-offset-1" style="transition-delay: 0ms;"> |
|||
<h2 class=" mt32 mb16"><b>Hover on Image to Zoom</b></h2> |
|||
|
|||
</div> |
|||
<div class="col-md-6" style="transition-delay: 500ms;"> |
|||
<div class=" oe_demo oe_picture oe_screenshot"> |
|||
<img style="max-width: 100%;-moz-transform: scale(1.2);-webkit-transform: scale(1.2); -o-transform: scale(1.2); -ms-transform: scale(1.2); transform: scale(1.2);" |
|||
src="tzoom.png"> |
|||
</div> |
|||
</div> |
|||
|
|||
</div> |
|||
</div> |
|||
<div class="oe_container"> |
|||
<div class="row mt32 o_animate o_animate_in_children o_animate_offset_min" |
|||
style="animation-name: none; visibility: hidden; animation-play-state: paused;"> |
|||
|
|||
<div class="col-md-5 col-md-offset-1" style="transition-delay: 0ms;"> |
|||
<h2 class=" mt32 mb16"><b>Scroll on Image to Zoom in and out</b></h2> |
|||
|
|||
</div> |
|||
<div class="col-md-6" style="transition-delay: 500ms;"> |
|||
<div class=" oe_demo oe_picture oe_screenshot"> |
|||
<img style="max-width: 100%;-moz-transform: scale(1.2);-webkit-transform: scale(1.2); -o-transform: scale(1.2); -ms-transform: scale(1.2); transform: scale(1.2);" |
|||
src="tzoom2.png"> |
|||
</div> |
|||
</div> |
|||
|
|||
</div> |
|||
</div> |
|||
</section> |
|||
<section class="oe_container oe_dark"> |
|||
<h2 class="oe_slogan" style="margin-top:20px;" >Need Any Help?</h2> |
|||
<div class="oe_slogan" style="margin-top:10px !important;"> |
|||
<a class="btn btn-primary btn-lg mt8" |
|||
style="color: #FFFFFF !important;border-radius: 0;" href="http://www.cybrosys.com"><i |
|||
class="fa fa-envelope"></i> Email </a> <a |
|||
class="btn btn-primary btn-lg mt8" style="color: #FFFFFF !important;border-radius: 0;" |
|||
href="http://www.cybrosys.com/contact/"><i |
|||
class="fa fa-phone"></i> Contact Us </a> <a |
|||
class="btn btn-primary btn-lg mt8" style="color: #FFFFFF !important;border-radius: 0;" |
|||
href="http://www.cybrosys.com/odoo-customization-and-installation/"><i |
|||
class="fa fa-check-square"></i> Request Customization </a> |
|||
</div> |
|||
<img src="cybro_logo.png" style="width: 190px; margin-bottom: 20px;" class="center-block"> |
|||
</section> |
After Width: | Height: | Size: 465 KiB |
After Width: | Height: | Size: 711 KiB |
After Width: | Height: | Size: 419 KiB |
After Width: | Height: | Size: 589 KiB |
After Width: | Height: | Size: 155 KiB |
After Width: | Height: | Size: 32 KiB |
@ -0,0 +1,103 @@ |
|||
/* Compatibility styles for frameworks like bootstrap, foundation e.t.c */ |
|||
.xzoom-source img, .xzoom-preview img, .xzoom-lens img { |
|||
display: block; |
|||
max-width: none; |
|||
max-height: none; |
|||
-webkit-transition: none; |
|||
-moz-transition: none; |
|||
-o-transition: none; |
|||
transition: none; |
|||
} |
|||
/* --------------- */ |
|||
|
|||
/* xZoom Styles below */ |
|||
.xzoom-container { |
|||
display: inline-block; |
|||
} |
|||
|
|||
.xzoom-thumbs { |
|||
text-align: center; |
|||
margin-bottom: 10px; |
|||
} |
|||
|
|||
.xzoom { |
|||
-webkit-box-shadow: 0px 0px 5px 0px rgba(0,0,0,0.5); |
|||
-moz-box-shadow: 0px 0px 5px 0px rgba(0,0,0,0.5); |
|||
box-shadow: 0px 0px 5px 0px rgba(0,0,0,0.5); |
|||
} |
|||
.xzoom2, .xzoom3, .xzoom4, .xzoom5 { |
|||
-webkit-box-shadow: 0px 0px 5px 0px rgba(0,0,0,0.5); |
|||
-moz-box-shadow: 0px 0px 5px 0px rgba(0,0,0,0.5); |
|||
box-shadow: 0px 0px 5px 0px rgba(0,0,0,0.5); |
|||
} |
|||
|
|||
/* Thumbs */ |
|||
.xzoom-gallery, .xzoom-gallery2, .xzoom-gallery3, .xzoom-gallery4, .xzoom-gallery5 { |
|||
border: 1px solid #cecece; |
|||
margin-left: 5px; |
|||
margin-bottom: 10px; |
|||
} |
|||
|
|||
.xzoom-source, .xzoom-hidden { |
|||
display: block; |
|||
position: static; |
|||
float: none; |
|||
clear: both; |
|||
} |
|||
|
|||
/* Everything out of border is hidden */ |
|||
.xzoom-hidden { |
|||
overflow: hidden; |
|||
} |
|||
|
|||
/* Preview */ |
|||
.xzoom-preview { |
|||
border: 1px solid #888; |
|||
background: #2f4f4f; |
|||
box-shadow: -0px -0px 10px rgba(0,0,0,0.50); |
|||
} |
|||
|
|||
/* Lens */ |
|||
.xzoom-lens { |
|||
border: 1px solid #555; |
|||
box-shadow: -0px -0px 10px rgba(0,0,0,0.50); |
|||
cursor: crosshair; |
|||
} |
|||
|
|||
/* Loading */ |
|||
.xzoom-loading { |
|||
background-position: center center; |
|||
background-repeat: no-repeat; |
|||
border-radius: 100%; |
|||
opacity: .7; |
|||
background: url(../images/xloading.gif); |
|||
width: 48px; |
|||
height: 48px; |
|||
} |
|||
|
|||
/* Additional class that applied to thumb when it is active */ |
|||
.xactive { |
|||
-webkit-box-shadow: 0px 0px 3px 0px rgba(74,169,210,1); |
|||
-moz-box-shadow: 0px 0px 3px 0px rgba(74,169,210,1); |
|||
box-shadow: 0px 0px 3px 0px rgba(74,169,210,1); |
|||
border: 1px solid #4aaad2; |
|||
} |
|||
|
|||
/* Caption */ |
|||
.xzoom-caption { |
|||
position: absolute; |
|||
bottom: -43px; |
|||
left: 0; |
|||
background: #000; |
|||
width: 100%; |
|||
text-align: left; |
|||
} |
|||
|
|||
.xzoom-caption span { |
|||
color: #fff; |
|||
font-family: Arial, sans-serif; |
|||
display: block; |
|||
font-size: 0.75em; |
|||
font-weight: bold; |
|||
padding: 10px; |
|||
} |
@ -0,0 +1,16 @@ |
|||
(function ($) { |
|||
$(document).ready(function() { |
|||
$('.xzoom, .xzoom-gallery').xzoom({ |
|||
zoomWidth: '250', |
|||
zoomHeight: '250', |
|||
title: false, |
|||
tint: '#333', |
|||
Xoffset: 15, |
|||
scroll: true, |
|||
fadeTrans: true, |
|||
position: 'lens', |
|||
lensShape: 'square', |
|||
sourceClass: 'xzoom-hidden', |
|||
hover: true, |
|||
}); |
|||
});})(jQuery); |
@ -0,0 +1,18 @@ |
|||
<odoo> |
|||
<template id="assets_frontend_zoom" |
|||
inherit_id="website.assets_frontend" |
|||
name="zoom"> |
|||
<xpath expr="." position="inside"> |
|||
<script type="text/javascript" |
|||
src="/website_sale_product_gallery_zoom/static/lib/xzoom.min.js" |
|||
/> |
|||
<script type="text/javascript" |
|||
src="/website_sale_product_gallery_zoom/static/src/js/setup.js" |
|||
/> |
|||
<link href="/website_sale_product_gallery_zoom/static/src/css/xzoom.css" |
|||
rel="stylesheet" |
|||
type="text/css" |
|||
/> |
|||
</xpath> |
|||
</template> |
|||
</odoo> |
@ -0,0 +1,57 @@ |
|||
<odoo> |
|||
|
|||
<template inherit_id="website_sale.product" id="product" name="Zoom & Gallery"> |
|||
<xpath expr="//div[@class='row']/div[@class='col-sm-7 col-md-7 col-lg-7']" position="replace"> |
|||
<div class="col-sm-7 col-md-7 col-lg-7"> |
|||
<!--<span id="xzoom-default"--> |
|||
<!--itemprop="image"--> |
|||
<!--t-field="product.image"--> |
|||
<!--t-if="not product.product_multi_images"--> |
|||
<!--t-field-options='{"widget": "image", "class": "product_detail_img", "alt-field": "name"}'--> |
|||
<!--t-att-src="'data:image/png;base64,'+product.image if product.image else ''"--> |
|||
<!--t-att-xoriginal="'data:image/png;base64,'+product.image if product.image else ''"--> |
|||
<!--/>--> |
|||
<section id="default" class="padding-top0"> |
|||
<div class="row"> |
|||
<div class="large-12 column"></div> |
|||
<div class="large-5 column"> |
|||
<div class="xzoom-container"> |
|||
<img class="xzoom" |
|||
id="xzoom-default" |
|||
t-att-src="'data:image/png;base64,'+product.image if product.image else ''" |
|||
t-att-xoriginal="'data:image/png;base64,'+product.image if product.image else ''" |
|||
height="550" width="550" |
|||
/> |
|||
<div class="xzoom-thumbs" t-if="product.product_multi_images"> |
|||
<a t-att-href="'data:image/png;base64,'+product.image if product.image else ''"> |
|||
<img class="xzoom-gallery" |
|||
t-att-src="'data:image/png;base64,'+product.image if product.image else ''" |
|||
t-att-xpreview="'data:image/png;base64,'+product.image if product.image else ''" |
|||
width="80" |
|||
/> |
|||
</a> |
|||
<!--Here we limits the gallery thumbs upto 5, ie takes only first five images from |
|||
Image list on product backend--> |
|||
<t t-set="count" t-value="1"/> |
|||
<t t-foreach="product.product_multi_images" t-as="images"> |
|||
<t t-if="count <= 5"> |
|||
<a t-att-href="'data:image/png;base64,'+images.image"> |
|||
<img class="xzoom-gallery" |
|||
t-att-src="'data:image/png;base64,'+images.image" |
|||
t-att-xpreview="'data:image/png;base64,'+images.image" |
|||
width="80" |
|||
/> |
|||
</a> |
|||
</t> |
|||
<t t-set="count" t-value="count+1"/> |
|||
</t> |
|||
</div> |
|||
</div> |
|||
</div> |
|||
<div class="large-7 column"></div> |
|||
</div> |
|||
</section> |
|||
</div> |
|||
</xpath> |
|||
</template> |
|||
</odoo> |
@ -0,0 +1,35 @@ |
|||
<odoo> |
|||
<record id="product_image_multi" model="ir.ui.view"> |
|||
<field name="name">Image Gallery Of Products</field> |
|||
<field name="model">product.template</field> |
|||
<field name="inherit_id" ref="product.product_template_only_form_view"/> |
|||
<field name="arch" type="xml"> |
|||
<xpath expr="//page[last()]" position="after"> |
|||
<page name="muliple_images" string="Image Gallery"> |
|||
<field name="product_multi_images"> |
|||
<tree string="Image Gallery" editable="bottom"> |
|||
<field name="sequence" widget="handle"/> |
|||
<field name="name"/> |
|||
<field name="image" |
|||
widget='image' |
|||
class="oe_avatar"/> |
|||
</tree> |
|||
<form> |
|||
<group> |
|||
<group> |
|||
<field name="name"/> |
|||
<field name="image" |
|||
widget='image' |
|||
class="oe_avatar oe_left" |
|||
colspan="2" |
|||
options='{"preview_image": "image_thumb"}' |
|||
/> |
|||
</group> |
|||
</group> |
|||
</form> |
|||
</field> |
|||
</page> |
|||
</xpath> |
|||
</field> |
|||
</record> |
|||
</odoo> |