| @ -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> | ||||