@ -0,0 +1,46 @@ | 
				
			|||||
 | 
					.. image:: https://img.shields.io/badge/licence-AGPL--3-blue.svg | 
				
			||||
 | 
					    :target: https://www.gnu.org/licenses/agpl-3.0-standalone.html | 
				
			||||
 | 
					    :alt: License: AGPL-3 | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					Theme Boec | 
				
			||||
 | 
					========================= | 
				
			||||
 | 
					* Attractive and modern eCommerce Website theme for Odoo 17 | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					Configuration | 
				
			||||
 | 
					============= | 
				
			||||
 | 
					* No need of additional configuration. | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					License | 
				
			||||
 | 
					------- | 
				
			||||
 | 
					Affero General Public License, Version 3 (AGPL-3). | 
				
			||||
 | 
					(https://www.gnu.org/licenses/agpl-3.0.en.html) | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					Company | 
				
			||||
 | 
					------- | 
				
			||||
 | 
					* `Cybrosys Techno Solutions <https://cybrosys.com/>`__ | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					Credits | 
				
			||||
 | 
					======= | 
				
			||||
 | 
					* Developer: (v17) Ammu Raj, Contact: odoo@cybrosys.com | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					Contacts | 
				
			||||
 | 
					-------- | 
				
			||||
 | 
					* Mail Contact : odoo@cybrosys.com | 
				
			||||
 | 
					* Website : https://cybrosys.com | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					Bug Tracker | 
				
			||||
 | 
					----------- | 
				
			||||
 | 
					Bugs are tracked on GitHub Issues. In case of trouble, please check there if your issue has already been reported. | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					Maintainer | 
				
			||||
 | 
					========== | 
				
			||||
 | 
					.. image:: https://cybrosys.com/images/logo.png | 
				
			||||
 | 
					   :target: https://cybrosys.com | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					This module is maintained by Cybrosys Technologies. | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					For support and more information, please visit `Our Website <https://cybrosys.com/>`__ | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					Further information | 
				
			||||
 | 
					=================== | 
				
			||||
 | 
					HTML Description: `<static/description/index.html>`__ | 
				
			||||
@ -0,0 +1,23 @@ | 
				
			|||||
 | 
					# -*- coding: utf-8 -*- | 
				
			||||
 | 
					################################################################################ | 
				
			||||
 | 
					# | 
				
			||||
 | 
					#    Cybrosys Technologies Pvt. Ltd. | 
				
			||||
 | 
					# | 
				
			||||
 | 
					#    Copyright (C) 2023-TODAY Cybrosys Technologies(<https://www.cybrosys.com>). | 
				
			||||
 | 
					#    Author: Ammu Raj (odoo@cybrosys.com) | 
				
			||||
 | 
					# | 
				
			||||
 | 
					#    You can modify it under the terms of the GNU AFFERO | 
				
			||||
 | 
					#    GENERAL PUBLIC LICENSE (AGPL v3), Version 3. | 
				
			||||
 | 
					# | 
				
			||||
 | 
					#    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 AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. | 
				
			||||
 | 
					# | 
				
			||||
 | 
					#    You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE | 
				
			||||
 | 
					#    (AGPL v3) along with this program. | 
				
			||||
 | 
					#    If not, see <http://www.gnu.org/licenses/>. | 
				
			||||
 | 
					# | 
				
			||||
 | 
					################################################################################ | 
				
			||||
 | 
					from . import models | 
				
			||||
 | 
					from . import controllers | 
				
			||||
@ -0,0 +1,87 @@ | 
				
			|||||
 | 
					# -*- coding: utf-8 -*- | 
				
			||||
 | 
					################################################################################ | 
				
			||||
 | 
					# | 
				
			||||
 | 
					#    Cybrosys Technologies Pvt. Ltd. | 
				
			||||
 | 
					# | 
				
			||||
 | 
					#    Copyright (C) 2023-TODAY Cybrosys Technologies(<https://www.cybrosys.com>). | 
				
			||||
 | 
					#    Author: Ammu Raj (odoo@cybrosys.com) | 
				
			||||
 | 
					# | 
				
			||||
 | 
					#    You can modify it under the terms of the GNU AFFERO | 
				
			||||
 | 
					#    GENERAL PUBLIC LICENSE (AGPL v3), Version 3. | 
				
			||||
 | 
					# | 
				
			||||
 | 
					#    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 AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. | 
				
			||||
 | 
					# | 
				
			||||
 | 
					#    You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE | 
				
			||||
 | 
					#    (AGPL v3) along with this program. | 
				
			||||
 | 
					#    If not, see <http://www.gnu.org/licenses/>. | 
				
			||||
 | 
					# | 
				
			||||
 | 
					################################################################################ | 
				
			||||
 | 
					{ | 
				
			||||
 | 
					    'name': 'Theme Boec', | 
				
			||||
 | 
					    'version': '17.0.1.0.0', | 
				
			||||
 | 
					    'category': 'Theme/eCommerce', | 
				
			||||
 | 
					    'summary': "Theme Boec is an attractive and modern eCommerce Website " | 
				
			||||
 | 
					               "theme", | 
				
			||||
 | 
					    'description': "Theme Boec is new kind of Theme.The theme is very user-friendly" | 
				
			||||
 | 
					                   "and suitable for your eCommerce website with blog", | 
				
			||||
 | 
					    'author': 'Cybrosys Techno Solutions', | 
				
			||||
 | 
					    'company': 'Cybrosys Techno Solutions', | 
				
			||||
 | 
					    'maintainer': 'Cybrosys Techno Solutions', | 
				
			||||
 | 
					    'website': "https://www.cybrosys.com", | 
				
			||||
 | 
					    'depends': ['website_blog', 'website_sale_wishlist', 'website_sale', | 
				
			||||
 | 
					                'website_sale_comparison'], | 
				
			||||
 | 
					    'data': [ | 
				
			||||
 | 
					        'security/ir.model.access.csv', | 
				
			||||
 | 
					        'data/boec_config_data.xml', | 
				
			||||
 | 
					        'views/about.xml', | 
				
			||||
 | 
					        'views/blog_templates.xml', | 
				
			||||
 | 
					        'views/blog_preview_templates.xml', | 
				
			||||
 | 
					        'views/cart_templates.xml', | 
				
			||||
 | 
					        'views/contact_us_templates.xml', | 
				
			||||
 | 
					        'views/footer_templates.xml', | 
				
			||||
 | 
					        'views/header_templates.xml', | 
				
			||||
 | 
					        'views/layout_templates.xml', | 
				
			||||
 | 
					        'views/page_top_templates.xml', | 
				
			||||
 | 
					        'views/product_view_templates.xml', | 
				
			||||
 | 
					        'views/shop_templates.xml', | 
				
			||||
 | 
					        'views/boec_config_views.xml', | 
				
			||||
 | 
					        'views/product_brand_views.xml', | 
				
			||||
 | 
					        'views/product_template_views.xml', | 
				
			||||
 | 
					        'views/sidebar_shop_templates.xml', | 
				
			||||
 | 
					        'views/snippets/banner.xml', | 
				
			||||
 | 
					        'views/snippets/blog_latest.xml', | 
				
			||||
 | 
					        'views/snippets/deal_week.xml', | 
				
			||||
 | 
					        'views/snippets/demo_product.xml', | 
				
			||||
 | 
					        'views/snippets/insta_feed.xml', | 
				
			||||
 | 
					        'views/snippets/product_tab.xml', | 
				
			||||
 | 
					        'views/snippets/product_tab_demo.xml', | 
				
			||||
 | 
					    ], | 
				
			||||
 | 
					    'assets': { | 
				
			||||
 | 
					        'web.assets_frontend': [ | 
				
			||||
 | 
					            'theme_boec/static/src/js/sale_utils.js', | 
				
			||||
 | 
					            "/theme_boec/static/src/css/style.css", | 
				
			||||
 | 
					            "/theme_boec/static/src/css/style.css.map", | 
				
			||||
 | 
					            "/theme_boec/static/src/css/style.scss", | 
				
			||||
 | 
					            "/theme_boec/static/src/css/owl_carousel_min.css", | 
				
			||||
 | 
					            "/theme_boec/static/src/css/owl_theme_default_min.css", | 
				
			||||
 | 
					            "/theme_boec/static/src/js/owl.carousel.js", | 
				
			||||
 | 
					            "/theme_boec/static/src/js/owl.carousel.min.js", | 
				
			||||
 | 
					            "/theme_boec/static/src/js/jquery.countdown.min.js", | 
				
			||||
 | 
					            "/theme_boec/static/src/js/deal_week.js", | 
				
			||||
 | 
					            "/theme_boec/static/src/js/product_tab.js", | 
				
			||||
 | 
					            "/theme_boec/static/src/js/custom.js", | 
				
			||||
 | 
					            "https://fonts.googleapis.com/css2?family=Karla:ital,wght@0,200;0,300;0,400;0,500;0,600;0,700;0,800;1,300;1,500&family=Montserrat&display=swap" | 
				
			||||
 | 
					        ], | 
				
			||||
 | 
					    }, | 
				
			||||
 | 
					    'images': [ | 
				
			||||
 | 
					        'static/description/banner.png', | 
				
			||||
 | 
					        'static/description/theme.png', | 
				
			||||
 | 
					    ], | 
				
			||||
 | 
					    'license': 'AGPL-3', | 
				
			||||
 | 
					    'installable': True, | 
				
			||||
 | 
					    'auto_install': False, | 
				
			||||
 | 
					    'application': False, | 
				
			||||
 | 
					} | 
				
			||||
@ -0,0 +1,23 @@ | 
				
			|||||
 | 
					# -*- coding: utf-8 -*- | 
				
			||||
 | 
					################################################################################ | 
				
			||||
 | 
					# | 
				
			||||
 | 
					#    Cybrosys Technologies Pvt. Ltd. | 
				
			||||
 | 
					# | 
				
			||||
 | 
					#    Copyright (C) 2023-TODAY Cybrosys Technologies(<https://www.cybrosys.com>). | 
				
			||||
 | 
					#    Author: Ammu Raj (odoo@cybrosys.com) | 
				
			||||
 | 
					# | 
				
			||||
 | 
					#    You can modify it under the terms of the GNU AFFERO | 
				
			||||
 | 
					#    GENERAL PUBLIC LICENSE (AGPL v3), Version 3. | 
				
			||||
 | 
					# | 
				
			||||
 | 
					#    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 AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. | 
				
			||||
 | 
					# | 
				
			||||
 | 
					#    You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE | 
				
			||||
 | 
					#    (AGPL v3) along with this program. | 
				
			||||
 | 
					#    If not, see <http://www.gnu.org/licenses/>. | 
				
			||||
 | 
					# | 
				
			||||
 | 
					################################################################################ | 
				
			||||
 | 
					from . import brand_filter_controller | 
				
			||||
 | 
					from . import product_snippets | 
				
			||||
@ -0,0 +1,240 @@ | 
				
			|||||
 | 
					# -*- coding: utf-8 -*- | 
				
			||||
 | 
					################################################################################ | 
				
			||||
 | 
					# | 
				
			||||
 | 
					#    Cybrosys Technologies Pvt. Ltd. | 
				
			||||
 | 
					# | 
				
			||||
 | 
					#    Copyright (C) 2023-TODAY Cybrosys Technologies(<https://www.cybrosys.com>). | 
				
			||||
 | 
					#    Author: Ammu Raj (odoo@cybrosys.com) | 
				
			||||
 | 
					# | 
				
			||||
 | 
					#    You can modify it under the terms of the GNU AFFERO | 
				
			||||
 | 
					#    GENERAL PUBLIC LICENSE (AGPL v3), Version 3. | 
				
			||||
 | 
					# | 
				
			||||
 | 
					#    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 AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. | 
				
			||||
 | 
					# | 
				
			||||
 | 
					#    You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE | 
				
			||||
 | 
					#    (AGPL v3) along with this program. | 
				
			||||
 | 
					#    If not, see <http://www.gnu.org/licenses/>. | 
				
			||||
 | 
					# | 
				
			||||
 | 
					################################################################################ | 
				
			||||
 | 
					from datetime import datetime | 
				
			||||
 | 
					from werkzeug.exceptions import NotFound | 
				
			||||
 | 
					from odoo import fields, http, tools | 
				
			||||
 | 
					from odoo.http import request | 
				
			||||
 | 
					from odoo.tools import lazy | 
				
			||||
 | 
					from odoo.addons.http_routing.models.ir_http import slug | 
				
			||||
 | 
					from odoo.addons.website.models.ir_http import sitemap_qs2dom | 
				
			||||
 | 
					from odoo.addons.website.controllers.main import QueryURL | 
				
			||||
 | 
					from odoo.addons.website_sale.controllers.main import TableCompute, WebsiteSale | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					class ProductBrand(WebsiteSale): | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    def sitemap_shop(env, rule, qs): | 
				
			||||
 | 
					        """Required function for shop""" | 
				
			||||
 | 
					        if not qs or qs.lower() in '/shop': | 
				
			||||
 | 
					            yield {'loc': '/shop'} | 
				
			||||
 | 
					        Category = env['product.public.category'] | 
				
			||||
 | 
					        dom = sitemap_qs2dom(qs, '/shop/category', Category._rec_name) | 
				
			||||
 | 
					        dom += env['website'].get_current_website().website_domain() | 
				
			||||
 | 
					        for cat in Category.search(dom): | 
				
			||||
 | 
					            loc = '/shop/category/%s' % slug(cat) | 
				
			||||
 | 
					            if not qs or qs.lower() in loc: | 
				
			||||
 | 
					                yield {'loc': loc} | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    @http.route([ | 
				
			||||
 | 
					        '/shop', | 
				
			||||
 | 
					        '/shop/page/<int:page>', | 
				
			||||
 | 
					        '/shop/category/<model("product.public.category"):category>', | 
				
			||||
 | 
					        '/shop/category/<model("product.public.category"):category>/page/<int:page>', | 
				
			||||
 | 
					        '/shop/brand/<model("product.brand"):brand>' | 
				
			||||
 | 
					    ], type='http', auth="public", website=True, sitemap=sitemap_shop) | 
				
			||||
 | 
					    def shop(self, brand=None, page=0, category=None, search='', min_price=0.0, | 
				
			||||
 | 
					             max_price=0.0, ppg=False, **post): | 
				
			||||
 | 
					        """Adding the feature Brand in shop.""" | 
				
			||||
 | 
					        add_qty = int(post.get('add_qty', 1)) | 
				
			||||
 | 
					        try: | 
				
			||||
 | 
					            min_price = float(min_price) | 
				
			||||
 | 
					        except ValueError: | 
				
			||||
 | 
					            min_price = 0 | 
				
			||||
 | 
					        try: | 
				
			||||
 | 
					            max_price = float(max_price) | 
				
			||||
 | 
					        except ValueError: | 
				
			||||
 | 
					            max_price = 0 | 
				
			||||
 | 
					        Category = request.env['product.public.category'] | 
				
			||||
 | 
					        if category: | 
				
			||||
 | 
					            category = Category.search([('id', '=', int(category))], limit=1) | 
				
			||||
 | 
					            if not category or not category.can_access_from_current_website(): | 
				
			||||
 | 
					                raise NotFound() | 
				
			||||
 | 
					        else: | 
				
			||||
 | 
					            category = Category | 
				
			||||
 | 
					        website = request.env['website'].get_current_website() | 
				
			||||
 | 
					        if ppg: | 
				
			||||
 | 
					            try: | 
				
			||||
 | 
					                ppg = int(ppg) | 
				
			||||
 | 
					                post['ppg'] = ppg | 
				
			||||
 | 
					            except ValueError: | 
				
			||||
 | 
					                ppg = False | 
				
			||||
 | 
					        if not ppg: | 
				
			||||
 | 
					            ppg = website.shop_ppg or 20 | 
				
			||||
 | 
					        ppr = website.shop_ppr or 4 | 
				
			||||
 | 
					        attrib_list = request.httprequest.args.getlist('attrib') | 
				
			||||
 | 
					        attrib_values = [[int(x) for x in v.split("-")] for v in attrib_list if | 
				
			||||
 | 
					                         v] | 
				
			||||
 | 
					        attributes_ids = {v[0] for v in attrib_values} | 
				
			||||
 | 
					        attrib_set = {v[1] for v in attrib_values} | 
				
			||||
 | 
					        if not brand: | 
				
			||||
 | 
					            keep = QueryURL('/shop', | 
				
			||||
 | 
					                            **self._shop_get_query_url_kwargs( | 
				
			||||
 | 
					                                category and int(category), search, min_price, | 
				
			||||
 | 
					                                max_price, | 
				
			||||
 | 
					                                **post)) | 
				
			||||
 | 
					        else: | 
				
			||||
 | 
					            keep = QueryURL('shop/brand') | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					        now = datetime.timestamp(datetime.now()) | 
				
			||||
 | 
					        pricelist = request.env['product.pricelist'].browse( | 
				
			||||
 | 
					            request.session.get('website_sale_current_pl')) | 
				
			||||
 | 
					        if not pricelist or request.session.get('website_sale_pricelist_time', | 
				
			||||
 | 
					                                                0) < now - 60 * 60: | 
				
			||||
 | 
					            pricelist = website.pricelist_id | 
				
			||||
 | 
					            request.session['website_sale_pricelist_time'] = now | 
				
			||||
 | 
					            request.session['website_sale_current_pl'] = pricelist.id | 
				
			||||
 | 
					        request.update_context(pricelist=pricelist.id, | 
				
			||||
 | 
					                               partner=request.env.user.partner_id) | 
				
			||||
 | 
					        filter_by_price_enabled = website.is_view_active( | 
				
			||||
 | 
					            'website_sale.filter_products_price') | 
				
			||||
 | 
					        if filter_by_price_enabled: | 
				
			||||
 | 
					            company_currency = website.company_id.currency_id | 
				
			||||
 | 
					            conversion_rate = request.env['res.currency']._get_conversion_rate( | 
				
			||||
 | 
					                company_currency, pricelist.currency_id, | 
				
			||||
 | 
					                request.website.company_id, fields.Date.today()) | 
				
			||||
 | 
					        else: | 
				
			||||
 | 
					            conversion_rate = 1 | 
				
			||||
 | 
					        url = "/shop" | 
				
			||||
 | 
					        if search: | 
				
			||||
 | 
					            post["search"] = search | 
				
			||||
 | 
					        if attrib_list: | 
				
			||||
 | 
					            post['attrib'] = attrib_list | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					        options = self._get_search_options( | 
				
			||||
 | 
					            category=category, | 
				
			||||
 | 
					            attrib_values=attrib_values, | 
				
			||||
 | 
					            pricelist=pricelist, | 
				
			||||
 | 
					            min_price=min_price, | 
				
			||||
 | 
					            max_price=max_price, | 
				
			||||
 | 
					            conversion_rate=conversion_rate, | 
				
			||||
 | 
					            **post | 
				
			||||
 | 
					        ) | 
				
			||||
 | 
					        fuzzy_search_term, product_count, search_product = self._shop_lookup_products( | 
				
			||||
 | 
					            attrib_set, options, post, search, | 
				
			||||
 | 
					            website) | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					        filter_by_price_enabled = website.is_view_active( | 
				
			||||
 | 
					            'website_sale.filter_products_price') | 
				
			||||
 | 
					        if filter_by_price_enabled: | 
				
			||||
 | 
					            # TODO Find an alternative way to obtain the domain through the | 
				
			||||
 | 
					            #  search metadata. | 
				
			||||
 | 
					            Product = request.env['product.template'].with_context( | 
				
			||||
 | 
					                bin_size=True) | 
				
			||||
 | 
					            domain = self._get_shop_domain(search, category, attrib_values) | 
				
			||||
 | 
					            # This is ~4 times more efficient than a search for the cheapest and | 
				
			||||
 | 
					            # most expensive products | 
				
			||||
 | 
					            from_clause, where_clause, where_params = Product._where_calc( | 
				
			||||
 | 
					                domain).get_sql() | 
				
			||||
 | 
					            query = f""" | 
				
			||||
 | 
					                SELECT COALESCE(MIN(list_price), 0) * {conversion_rate}, COALESCE(MAX(list_price), 0) * {conversion_rate} | 
				
			||||
 | 
					                  FROM {from_clause} | 
				
			||||
 | 
					                 WHERE {where_clause} | 
				
			||||
 | 
					            """ | 
				
			||||
 | 
					            request.env.cr.execute(query, where_params) | 
				
			||||
 | 
					            available_min_price, available_max_price = request.env.cr.fetchone() | 
				
			||||
 | 
					            if min_price or max_price: | 
				
			||||
 | 
					                if min_price: | 
				
			||||
 | 
					                    min_price = min_price if min_price <= available_max_price else available_min_price | 
				
			||||
 | 
					                    post['min_price'] = min_price | 
				
			||||
 | 
					                if max_price: | 
				
			||||
 | 
					                    max_price = max_price if max_price >= available_min_price else available_max_price | 
				
			||||
 | 
					                    post['max_price'] = max_price | 
				
			||||
 | 
					        website_domain = website.website_domain() | 
				
			||||
 | 
					        categs_domain = [('parent_id', '=', False)] + website_domain | 
				
			||||
 | 
					        if search: | 
				
			||||
 | 
					            search_categories = Category.search( | 
				
			||||
 | 
					                [( | 
				
			||||
 | 
					                    'product_tmpl_ids', 'in', | 
				
			||||
 | 
					                    search_product.ids)] + website_domain | 
				
			||||
 | 
					            ).parents_and_self | 
				
			||||
 | 
					            categs_domain.append(('id', 'in', search_categories.ids)) | 
				
			||||
 | 
					        else: | 
				
			||||
 | 
					            search_categories = Category | 
				
			||||
 | 
					        categs = lazy(lambda: Category.search(categs_domain)) | 
				
			||||
 | 
					        if category: | 
				
			||||
 | 
					            url = "/shop/category/%s" % slug(category) | 
				
			||||
 | 
					        pager = website.pager(url=url, total=product_count, page=page, step=ppg, | 
				
			||||
 | 
					                              scope=7, url_args=post) | 
				
			||||
 | 
					        offset = pager['offset'] | 
				
			||||
 | 
					        if not brand: | 
				
			||||
 | 
					            products = search_product[offset:offset + ppg] | 
				
			||||
 | 
					        else: | 
				
			||||
 | 
					            products = request.env['product.template'].sudo().search( | 
				
			||||
 | 
					                [('brand_id', '=', brand.id), | 
				
			||||
 | 
					                 ('website_published', '=', True)], | 
				
			||||
 | 
					                order="id desc", | 
				
			||||
 | 
					                offset=pager['offset']) | 
				
			||||
 | 
					        ProductAttribute = request.env['product.attribute'] | 
				
			||||
 | 
					        if products: | 
				
			||||
 | 
					            attributes = lazy(lambda: ProductAttribute.search([ | 
				
			||||
 | 
					                ('product_tmpl_ids', 'in', search_product.ids), | 
				
			||||
 | 
					                ('visibility', '=', 'visible'), | 
				
			||||
 | 
					            ])) | 
				
			||||
 | 
					        else: | 
				
			||||
 | 
					            attributes = lazy(lambda: ProductAttribute.browse(attributes_ids)) | 
				
			||||
 | 
					        layout_mode = request.session.get('website_sale_shop_layout_mode') | 
				
			||||
 | 
					        if not layout_mode: | 
				
			||||
 | 
					            if website.viewref('website_sale.products_list_view').active: | 
				
			||||
 | 
					                layout_mode = 'list' | 
				
			||||
 | 
					            else: | 
				
			||||
 | 
					                layout_mode = 'grid' | 
				
			||||
 | 
					            request.session['website_sale_shop_layout_mode'] = layout_mode | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					        fiscal_position_sudo = website.fiscal_position_id.sudo() | 
				
			||||
 | 
					        products_prices = lazy( | 
				
			||||
 | 
					            lambda: products._get_sales_prices(pricelist, fiscal_position_sudo)) | 
				
			||||
 | 
					        values = { | 
				
			||||
 | 
					            'search': fuzzy_search_term or search, | 
				
			||||
 | 
					            'original_search': fuzzy_search_term and search, | 
				
			||||
 | 
					            'order': post.get('order', ''), | 
				
			||||
 | 
					            'category': category, | 
				
			||||
 | 
					            'attrib_values': attrib_values, | 
				
			||||
 | 
					            'attrib_set': attrib_set, | 
				
			||||
 | 
					            'pager': pager, | 
				
			||||
 | 
					            'pricelist': pricelist, | 
				
			||||
 | 
					            'add_qty': add_qty, | 
				
			||||
 | 
					            'products': products, | 
				
			||||
 | 
					            'search_count': product_count,  # common for all searchbox | 
				
			||||
 | 
					            'bins': lazy(lambda: TableCompute().process(products, ppg, ppr)), | 
				
			||||
 | 
					            'ppg': ppg, | 
				
			||||
 | 
					            'ppr': ppr, | 
				
			||||
 | 
					            'categories': categs, | 
				
			||||
 | 
					            'attributes': attributes, | 
				
			||||
 | 
					            'keep': keep, | 
				
			||||
 | 
					            'search_categories_ids': search_categories.ids, | 
				
			||||
 | 
					            'layout_mode': layout_mode, | 
				
			||||
 | 
					            'products_prices': products_prices, | 
				
			||||
 | 
					            'get_product_prices': lambda product: lazy( | 
				
			||||
 | 
					                lambda: products_prices[product.id]), | 
				
			||||
 | 
					            'float_round': tools.float_round, | 
				
			||||
 | 
					        } | 
				
			||||
 | 
					        if filter_by_price_enabled: | 
				
			||||
 | 
					            values['min_price'] = min_price or available_min_price | 
				
			||||
 | 
					            values['max_price'] = max_price or available_max_price | 
				
			||||
 | 
					            values['available_min_price'] = tools.float_round( | 
				
			||||
 | 
					                available_min_price, 2) | 
				
			||||
 | 
					            values['available_max_price'] = tools.float_round( | 
				
			||||
 | 
					                available_max_price, 2) | 
				
			||||
 | 
					        if category: | 
				
			||||
 | 
					            values['main_object'] = category | 
				
			||||
 | 
					        values.update(self._get_additional_shop_values(values)) | 
				
			||||
 | 
					        return request.render("website_sale.products", values) | 
				
			||||
@ -0,0 +1,62 @@ | 
				
			|||||
 | 
					# -*- coding: utf-8 -*- | 
				
			||||
 | 
					################################################################################ | 
				
			||||
 | 
					# | 
				
			||||
 | 
					#    Cybrosys Technologies Pvt. Ltd. | 
				
			||||
 | 
					# | 
				
			||||
 | 
					#    Copyright (C) 2023-TODAY Cybrosys Technologies(<https://www.cybrosys.com>). | 
				
			||||
 | 
					#    Author: Ammu Raj (odoo@cybrosys.com) | 
				
			||||
 | 
					# | 
				
			||||
 | 
					#    You can modify it under the terms of the GNU AFFERO | 
				
			||||
 | 
					#    GENERAL PUBLIC LICENSE (AGPL v3), Version 3. | 
				
			||||
 | 
					# | 
				
			||||
 | 
					#    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 AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. | 
				
			||||
 | 
					# | 
				
			||||
 | 
					#    You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE | 
				
			||||
 | 
					#    (AGPL v3) along with this program. | 
				
			||||
 | 
					#    If not, see <http://www.gnu.org/licenses/>. | 
				
			||||
 | 
					# | 
				
			||||
 | 
					################################################################################ | 
				
			||||
 | 
					from odoo import http | 
				
			||||
 | 
					from odoo.http import request | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					class WebsiteProduct(http.Controller): | 
				
			||||
 | 
					    @http.route('/get_product_tab', auth="public", type='json', website=True) | 
				
			||||
 | 
					    def get_product_tab(self): | 
				
			||||
 | 
					        """Get the website published products for snippet""" | 
				
			||||
 | 
					        new_arrivals = request.env['product.template'].sudo().search( | 
				
			||||
 | 
					            [('website_published', '=', True)], | 
				
			||||
 | 
					            order='create_date desc', limit=12) | 
				
			||||
 | 
					        hot_deals = request.env['product.template'].sudo().search( | 
				
			||||
 | 
					            [('website_published', '=', True), | 
				
			||||
 | 
					             ('hot_deals', '=', True)], limit=12) | 
				
			||||
 | 
					        values = { | 
				
			||||
 | 
					            'new_arrivals': new_arrivals, | 
				
			||||
 | 
					            'hot_deals': hot_deals | 
				
			||||
 | 
					        } | 
				
			||||
 | 
					        response = http.Response(template='theme_boec.product_tab', | 
				
			||||
 | 
					                                 qcontext=values) | 
				
			||||
 | 
					        return response.render() | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					class DealWeek(http.Controller): | 
				
			||||
 | 
					    @http.route('/get_product', auth='public', type='json', website=True) | 
				
			||||
 | 
					    def get_products(self, **kwargs): | 
				
			||||
 | 
					        """Allows to get deal of the week product.""" | 
				
			||||
 | 
					        boec_configuration = request.env.ref('theme_boec.boec_config_data') | 
				
			||||
 | 
					        product_id = boec_configuration.deal_week_product_id | 
				
			||||
 | 
					        values = {'product_id': product_id} | 
				
			||||
 | 
					        response = http.Response(template='theme_boec.deal_week', | 
				
			||||
 | 
					                                 qcontext=values) | 
				
			||||
 | 
					        return response.render() | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    @http.route('/get_countdown', auth='public', type='json', website=True) | 
				
			||||
 | 
					    def get_countdown(self, **kwargs): | 
				
			||||
 | 
					        """End date for the deal""" | 
				
			||||
 | 
					        boec_configuration = request.env.ref('theme_boec.boec_config_data') | 
				
			||||
 | 
					        end_date = boec_configuration.date_end | 
				
			||||
 | 
					        return end_date | 
				
			||||
 | 
					
 | 
				
			||||
@ -0,0 +1,8 @@ | 
				
			|||||
 | 
					<?xml version="1.0" encoding="UTF-8" ?> | 
				
			||||
 | 
					<odoo> | 
				
			||||
 | 
					    <data noupdate="1"> | 
				
			||||
 | 
					        <record id="boec_config_data" model="boec.config"> | 
				
			||||
 | 
					            <field name="name">Boec Config</field> | 
				
			||||
 | 
					        </record> | 
				
			||||
 | 
					    </data> | 
				
			||||
 | 
					</odoo> | 
				
			||||
@ -0,0 +1,6 @@ | 
				
			|||||
 | 
					## Module <theme_boec> | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					#### 26.12.2023 | 
				
			||||
 | 
					#### Version 17.0.1.0.0 | 
				
			||||
 | 
					#### ADD | 
				
			||||
 | 
					- Initial commit for Theme Boec | 
				
			||||
@ -0,0 +1,26 @@ | 
				
			|||||
 | 
					# -*- coding: utf-8 -*- | 
				
			||||
 | 
					################################################################################ | 
				
			||||
 | 
					# | 
				
			||||
 | 
					#    Cybrosys Technologies Pvt. Ltd. | 
				
			||||
 | 
					# | 
				
			||||
 | 
					#    Copyright (C) 2023-TODAY Cybrosys Technologies(<https://www.cybrosys.com>). | 
				
			||||
 | 
					#    Author: Ammu Raj (odoo@cybrosys.com) | 
				
			||||
 | 
					# | 
				
			||||
 | 
					#    You can modify it under the terms of the GNU AFFERO | 
				
			||||
 | 
					#    GENERAL PUBLIC LICENSE (AGPL v3), Version 3. | 
				
			||||
 | 
					# | 
				
			||||
 | 
					#    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 AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. | 
				
			||||
 | 
					# | 
				
			||||
 | 
					#    You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE | 
				
			||||
 | 
					#    (AGPL v3) along with this program. | 
				
			||||
 | 
					#    If not, see <http://www.gnu.org/licenses/>. | 
				
			||||
 | 
					# | 
				
			||||
 | 
					################################################################################ | 
				
			||||
 | 
					from . import boec_config | 
				
			||||
 | 
					from . import product_brand | 
				
			||||
 | 
					from . import product_template | 
				
			||||
 | 
					from . import theme_utils | 
				
			||||
 | 
					from . import website | 
				
			||||
@ -0,0 +1,37 @@ | 
				
			|||||
 | 
					# -*- coding: utf-8 -*- | 
				
			||||
 | 
					################################################################################ | 
				
			||||
 | 
					# | 
				
			||||
 | 
					#    Cybrosys Technologies Pvt. Ltd. | 
				
			||||
 | 
					# | 
				
			||||
 | 
					#    Copyright (C) 2023-TODAY Cybrosys Technologies(<https://www.cybrosys.com>). | 
				
			||||
 | 
					#    Author: Ammu Raj (odoo@cybrosys.com) | 
				
			||||
 | 
					# | 
				
			||||
 | 
					#    You can modify it under the terms of the GNU AFFERO | 
				
			||||
 | 
					#    GENERAL PUBLIC LICENSE (AGPL v3), Version 3. | 
				
			||||
 | 
					# | 
				
			||||
 | 
					#    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 AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. | 
				
			||||
 | 
					# | 
				
			||||
 | 
					#    You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE | 
				
			||||
 | 
					#    (AGPL v3) along with this program. | 
				
			||||
 | 
					#    If not, see <http://www.gnu.org/licenses/>. | 
				
			||||
 | 
					# | 
				
			||||
 | 
					################################################################################ | 
				
			||||
 | 
					from odoo import fields, models | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					class BoecConfig(models.Model): | 
				
			||||
 | 
					    """Allows to set a product that will deal of the week. It is a snippet""" | 
				
			||||
 | 
					    _name = 'boec.config' | 
				
			||||
 | 
					    _description = 'Boec Config' | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    name = fields.Char(string='Name', help='Name of the Deal') | 
				
			||||
 | 
					    deal_week_product_id = fields.Many2one('product.product', | 
				
			||||
 | 
					                                           domain=[('is_published', '=', True)], | 
				
			||||
 | 
					                                           string='Deal of the Week Product', | 
				
			||||
 | 
					                                           help='This product will be the deal' | 
				
			||||
 | 
					                                                'of the week') | 
				
			||||
 | 
					    date_end = fields.Datetime(string='Counter End Date', help='End date of' | 
				
			||||
 | 
					                                                               'this offer') | 
				
			||||
@ -0,0 +1,37 @@ | 
				
			|||||
 | 
					# -*- coding: utf-8 -*- | 
				
			||||
 | 
					################################################################################ | 
				
			||||
 | 
					# | 
				
			||||
 | 
					#    Cybrosys Technologies Pvt. Ltd. | 
				
			||||
 | 
					# | 
				
			||||
 | 
					#    Copyright (C) 2023-TODAY Cybrosys Technologies(<https://www.cybrosys.com>). | 
				
			||||
 | 
					#    Author: Ammu Raj (odoo@cybrosys.com) | 
				
			||||
 | 
					# | 
				
			||||
 | 
					#    You can modify it under the terms of the GNU AFFERO | 
				
			||||
 | 
					#    GENERAL PUBLIC LICENSE (AGPL v3), Version 3. | 
				
			||||
 | 
					# | 
				
			||||
 | 
					#    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 AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. | 
				
			||||
 | 
					# | 
				
			||||
 | 
					#    You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE | 
				
			||||
 | 
					#    (AGPL v3) along with this program. | 
				
			||||
 | 
					#    If not, see <http://www.gnu.org/licenses/>. | 
				
			||||
 | 
					# | 
				
			||||
 | 
					################################################################################ | 
				
			||||
 | 
					from odoo import fields, models | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					class ProductBrand(models.Model): | 
				
			||||
 | 
					    """Model for creating Brands for products.""" | 
				
			||||
 | 
					    _name = 'product.brand' | 
				
			||||
 | 
					    _description = "Product Brand" | 
				
			||||
 | 
					    _rec_name = 'brand_name' | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    brand_name = fields.Char(required=True, string='Name', help='Name of the' | 
				
			||||
 | 
					                                                                'brand.') | 
				
			||||
 | 
					    sequence_no = fields.Integer(string="Sequence no", help='Sequence number of' | 
				
			||||
 | 
					                                                            'brand.') | 
				
			||||
 | 
					    parent_id = fields.Many2one('product.brand', string='Parent Brand', | 
				
			||||
 | 
					                                index=True, help='Select the parent brand of' | 
				
			||||
 | 
					                                                 'the brand.') | 
				
			||||
@ -0,0 +1,37 @@ | 
				
			|||||
 | 
					# -*- coding: utf-8 -*- | 
				
			||||
 | 
					################################################################################ | 
				
			||||
 | 
					# | 
				
			||||
 | 
					#    Cybrosys Technologies Pvt. Ltd. | 
				
			||||
 | 
					# | 
				
			||||
 | 
					#    Copyright (C) 2023-TODAY Cybrosys Technologies(<https://www.cybrosys.com>). | 
				
			||||
 | 
					#    Author: Ammu Raj (odoo@cybrosys.com) | 
				
			||||
 | 
					# | 
				
			||||
 | 
					#    You can modify it under the terms of the GNU AFFERO | 
				
			||||
 | 
					#    GENERAL PUBLIC LICENSE (AGPL v3), Version 3. | 
				
			||||
 | 
					# | 
				
			||||
 | 
					#    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 AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. | 
				
			||||
 | 
					# | 
				
			||||
 | 
					#    You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE | 
				
			||||
 | 
					#    (AGPL v3) along with this program. | 
				
			||||
 | 
					#    If not, see <http://www.gnu.org/licenses/>. | 
				
			||||
 | 
					# | 
				
			||||
 | 
					################################################################################ | 
				
			||||
 | 
					from odoo import fields, models | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					class ProductTemplate(models.Model): | 
				
			||||
 | 
					    """Inherited product template for adding the field Hot Sale and Product | 
				
			||||
 | 
					    Brand. While using the snippet  'Product Tab', the product with enabled | 
				
			||||
 | 
					    Hot Sale will be display.""" | 
				
			||||
 | 
					    _inherit = "product.template" | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    hot_deals = fields.Boolean(string="Hot Sale", help='The product or services' | 
				
			||||
 | 
					                                                       'which are high in' | 
				
			||||
 | 
					                                                       'demand at a particular' | 
				
			||||
 | 
					                                                       'time or period') | 
				
			||||
 | 
					    brand_id = fields.Many2one('product.brand', string="Product Brand", | 
				
			||||
 | 
					                               help='Enabled product can filter from website' | 
				
			||||
 | 
					                                    'by brand.') | 
				
			||||
@ -0,0 +1,53 @@ | 
				
			|||||
 | 
					# -*- coding: utf-8 -*- | 
				
			||||
 | 
					################################################################################ | 
				
			||||
 | 
					# | 
				
			||||
 | 
					#    Cybrosys Technologies Pvt. Ltd. | 
				
			||||
 | 
					# | 
				
			||||
 | 
					#    Copyright (C) 2023-TODAY Cybrosys Technologies(<https://www.cybrosys.com>). | 
				
			||||
 | 
					#    Author: Ammu Raj (odoo@cybrosys.com) | 
				
			||||
 | 
					# | 
				
			||||
 | 
					#    You can modify it under the terms of the GNU AFFERO | 
				
			||||
 | 
					#    GENERAL PUBLIC LICENSE (AGPL v3), Version 3. | 
				
			||||
 | 
					# | 
				
			||||
 | 
					#    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 AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. | 
				
			||||
 | 
					# | 
				
			||||
 | 
					#    You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE | 
				
			||||
 | 
					#    (AGPL v3) along with this program. | 
				
			||||
 | 
					#    If not, see <http://www.gnu.org/licenses/>. | 
				
			||||
 | 
					# | 
				
			||||
 | 
					################################################################################ | 
				
			||||
 | 
					from odoo import models | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					class ThemeUtils(models.AbstractModel): | 
				
			||||
 | 
					    _inherit = 'theme.utils' | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    def _theme_boec_post_copy(self, mod): | 
				
			||||
 | 
					        self.enable_view('theme_boec.boec_header') | 
				
			||||
 | 
					        self.disable_view('website_sale.products_add_to_cart') | 
				
			||||
 | 
					        self.disable_view('website_sale_comparison.add_to_compare') | 
				
			||||
 | 
					        self.disable_view('website_sale.product_buy_now') | 
				
			||||
 | 
					        self.disable_view('website_sale_wishlist.add_to_wishlist') | 
				
			||||
 | 
					        self.disable_view('website_sale.add_grid_or_list_option') | 
				
			||||
 | 
					        self.disable_view('website_sale.products_list_view') | 
				
			||||
 | 
					        self.disable_view('website_sale.alternative_products') | 
				
			||||
 | 
					        self.disable_view('website_sale.product_buy_now') | 
				
			||||
 | 
					        self.disable_view('website_sale.product_comment') | 
				
			||||
 | 
					        self.disable_view('website_sale.product_picture_magnify_both') | 
				
			||||
 | 
					        self.disable_view('website_sale.product_variants') | 
				
			||||
 | 
					        self.disable_view('website_sale_comparison.product_attributes_body') | 
				
			||||
 | 
					        self.disable_view('website_sale.ecom_show_extra_fields') | 
				
			||||
 | 
					        self.disable_view('website_sale.product_custom_text') | 
				
			||||
 | 
					        self.disable_view('website_sale_wishlist.product_add_to_wishlist') | 
				
			||||
 | 
					        self.disable_view('website_blog.opt_posts_loop_show_author') | 
				
			||||
 | 
					        self.disable_view('website_blog.opt_posts_loop_show_stats') | 
				
			||||
 | 
					        self.disable_view('website_blog.opt_posts_loop_show_stats') | 
				
			||||
 | 
					        self.disable_view('website_blog.opt_blog_list_view') | 
				
			||||
 | 
					        self.disable_view('website_blog.opt_blog_cards_design') | 
				
			||||
 | 
					        self.disable_view('website_blog.opt_blog_cover_post') | 
				
			||||
 | 
					        self.disable_view('website_blog.opt_blog_cover_post_fullwidth_design') | 
				
			||||
 | 
					        self.disable_view('website_blog.opt_blog_post_breadcrumb') | 
				
			||||
 | 
					        self.disable_view('website_blog.opt_blog_post_sidebar') | 
				
			||||
@ -0,0 +1,31 @@ | 
				
			|||||
 | 
					# -*- coding: utf-8 -*- | 
				
			||||
 | 
					################################################################################ | 
				
			||||
 | 
					# | 
				
			||||
 | 
					#    Cybrosys Technologies Pvt. Ltd. | 
				
			||||
 | 
					# | 
				
			||||
 | 
					#    Copyright (C) 2023-TODAY Cybrosys Technologies(<https://www.cybrosys.com>). | 
				
			||||
 | 
					#    Author: Ammu Raj (odoo@cybrosys.com) | 
				
			||||
 | 
					# | 
				
			||||
 | 
					#    You can modify it under the terms of the GNU AFFERO | 
				
			||||
 | 
					#    GENERAL PUBLIC LICENSE (AGPL v3), Version 3. | 
				
			||||
 | 
					# | 
				
			||||
 | 
					#    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 AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. | 
				
			||||
 | 
					# | 
				
			||||
 | 
					#    You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE | 
				
			||||
 | 
					#    (AGPL v3) along with this program. | 
				
			||||
 | 
					#    If not, see <http://www.gnu.org/licenses/>. | 
				
			||||
 | 
					# | 
				
			||||
 | 
					################################################################################ | 
				
			||||
 | 
					from odoo import models | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					class Website(models.Model): | 
				
			||||
 | 
					    """Inherited website fo apply brand feature.""" | 
				
			||||
 | 
					    _inherit = "website" | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    def get_brands(self): | 
				
			||||
 | 
					        """Returning all brands""" | 
				
			||||
 | 
					        return self.env['product.brand'].search([]) | 
				
			||||
		
		
			
  | 
| 
		 After Width: | Height: | Size: 204 KiB  | 
| 
		 After Width: | Height: | Size: 19 KiB  | 
| 
		 After Width: | Height: | Size: 323 KiB  | 
| 
		 After Width: | Height: | Size: 277 KiB  | 
| 
		 After Width: | Height: | Size: 2.0 MiB  | 
| 
		 After Width: | Height: | Size: 146 KiB  | 
| 
		 After Width: | Height: | Size: 272 KiB  | 
| 
		 After Width: | Height: | Size: 236 KiB  | 
| 
		 After Width: | Height: | Size: 51 KiB  | 
| 
		 After Width: | Height: | Size: 361 KiB  | 
| 
		 After Width: | Height: | Size: 596 KiB  | 
| 
		 After Width: | Height: | Size: 10 KiB  | 
| 
		 After Width: | Height: | Size: 28 KiB  | 
| 
		 After Width: | Height: | Size: 1.1 MiB  | 
| 
		 After Width: | Height: | Size: 348 KiB  | 
| 
		 After Width: | Height: | Size: 231 KiB  | 
| 
		 After Width: | Height: | Size: 386 KiB  | 
| 
		 After Width: | Height: | Size: 360 KiB  | 
| 
		 After Width: | Height: | Size: 380 KiB  | 
| 
		 After Width: | Height: | Size: 542 KiB  | 
| 
		 After Width: | Height: | Size: 323 KiB  | 
| 
		 After Width: | Height: | Size: 632 KiB  | 
@ -0,0 +1,341 @@ | 
				
			|||||
 | 
					<div class="oe_styling_v8"> | 
				
			||||
 | 
					    <!-- Hero Section --> | 
				
			||||
 | 
					    <div class="container pt-4 mt-4 rounded" style="background-color: #fff; font-family: Montserrat, 'sans-serif';"> | 
				
			||||
 | 
					        <div class="row"> | 
				
			||||
 | 
					            <div class="col-lg-12 mb-4"> | 
				
			||||
 | 
					                <img src="images/Cybrosys.png" alt="Cybrosys Logo" style="width: 120px; height: auto;"> | 
				
			||||
 | 
					                <hr style="border-color: #e1e5e9;" /> | 
				
			||||
 | 
					            </div> | 
				
			||||
 | 
					        </div> | 
				
			||||
 | 
					        <div class="row"> | 
				
			||||
 | 
					            <div class="col-lg-12 text-center"> | 
				
			||||
 | 
					                <img src="images/hero.png" width=60% height="auto" class="mb-4" alt="Theme Screenshot"> | 
				
			||||
 | 
					            </div> | 
				
			||||
 | 
					            <div class="col-lg-12 text-center"> | 
				
			||||
 | 
					                <h1 class="mt-4">Theme Boec</h1> | 
				
			||||
 | 
					                <p class="lead mb-4" style="max-width: 700px; margin: 0 auto;"> | 
				
			||||
 | 
					                    Theme Boec is a new kind of Theme. The theme is a very user-friendly and is suitable for your | 
				
			||||
 | 
					                    eCommerce website with blog. | 
				
			||||
 | 
					                    It is the most powerful, easy to use theme. Many custom designed snippets facilitates to add | 
				
			||||
 | 
					                    better | 
				
			||||
 | 
					                    user experience. | 
				
			||||
 | 
					                    Contains Hot sales, New arrival and Deal of the week with Counter snippets that are configured | 
				
			||||
 | 
					                    from | 
				
			||||
 | 
					                    the backend. | 
				
			||||
 | 
					                    It has instagram feed snippet and deal of the week snippet with counter. | 
				
			||||
 | 
					                    It is a fully Responsive Theme with a premium design and attractive front-end theme. | 
				
			||||
 | 
					                    it contains price filter and brand filter options by default, and it easily configures from | 
				
			||||
 | 
					                    backend. | 
				
			||||
 | 
					                    This theme is a perfect choice for your online store you are looking for. This theme is fully | 
				
			||||
 | 
					                    customized | 
				
			||||
 | 
					                    the eCommerce website, shop view, custom categories view, product view, contact us page, cart, | 
				
			||||
 | 
					                    blog, | 
				
			||||
 | 
					                    blog preview...etc. | 
				
			||||
 | 
					                </p> | 
				
			||||
 | 
					            </div> | 
				
			||||
 | 
					        </div> | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					        <!-- End of Hero Section --> | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					        <!-- Alternate Section --> | 
				
			||||
 | 
					        <div class="row p-4"> | 
				
			||||
 | 
					            <div class="col-lg-6 px-4" style="margin-top: 100px;"> | 
				
			||||
 | 
					                <h2>Desktop View</h2> | 
				
			||||
 | 
					                <p class="lead"> | 
				
			||||
 | 
					                    It is easy to customize and use. Just drag and drop the building blocks to make attractive | 
				
			||||
 | 
					                    webpages. | 
				
			||||
 | 
					                </p> | 
				
			||||
 | 
					            </div> | 
				
			||||
 | 
					            <div class="col-lg-6 px-4"> | 
				
			||||
 | 
					                <img style="border-radius: 0.5em;" src="images/laptop-screenshots.jpg" width="90%" height="auto" | 
				
			||||
 | 
					                     class="mb-4 shadow-sm" alt="Theme Screenshot"> | 
				
			||||
 | 
					            </div> | 
				
			||||
 | 
					        </div> | 
				
			||||
 | 
					        <div class="row p-4"> | 
				
			||||
 | 
					            <div class="col-lg-6 px-4"> | 
				
			||||
 | 
					                <img style="border-radius: 0.5em;" src="images/phone-screenshots.jpg" width="90%" height="auto" | 
				
			||||
 | 
					                     class="mb-4 shadow-sm" alt="Theme Screenshot"> | 
				
			||||
 | 
					            </div> | 
				
			||||
 | 
					            <div class="col-lg-6 px-4" style="margin-top: 100px;"> | 
				
			||||
 | 
					                <h2>Mobile View</h2> | 
				
			||||
 | 
					                <p class="lead"> | 
				
			||||
 | 
					                    User friendly and modern looking theme makes your page more Stylish And Beautiful. | 
				
			||||
 | 
					                </p> | 
				
			||||
 | 
					            </div> | 
				
			||||
 | 
					        </div> | 
				
			||||
 | 
					        <!-- End of Alternate Section --> | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					        <!-- Two Columns Section --> | 
				
			||||
 | 
					        <div class="row p-4"> | 
				
			||||
 | 
					            <!-- Column 1 --> | 
				
			||||
 | 
					            <div class="col-lg-6"> | 
				
			||||
 | 
					                <div class="row"> | 
				
			||||
 | 
					                    <div class="col-lg-12"> | 
				
			||||
 | 
					                        <img style="border-radius: 0.5em;" src="images/1.jpg" width="100%" height="auto" | 
				
			||||
 | 
					                             class="mb-4 shadow-sm" alt="Theme Screenshot"> | 
				
			||||
 | 
					                    </div> | 
				
			||||
 | 
					                    <div class="col-lg-12 mt-4"> | 
				
			||||
 | 
					                        <h2 class="text-center">Home Page</h2> | 
				
			||||
 | 
					                        <p class="lead text-center"> | 
				
			||||
 | 
					                            It is easy to customize and use. Just drag and drop the building blocks to make | 
				
			||||
 | 
					                            attractive | 
				
			||||
 | 
					                            webpages.Customizable building blocks in home page design helps you to edit them as per | 
				
			||||
 | 
					                            needs. </p> | 
				
			||||
 | 
					                    </div> | 
				
			||||
 | 
					                </div> | 
				
			||||
 | 
					            </div> | 
				
			||||
 | 
					            <!-- End of Column 1 --> | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					            <!-- Column 2 --> | 
				
			||||
 | 
					            <div class="col-lg-6"> | 
				
			||||
 | 
					                <div class="row"> | 
				
			||||
 | 
					                    <div class="col-lg-12"> | 
				
			||||
 | 
					                        <img style="border-radius: 0.5em;" src="images/2.jpg" width="100%" height="auto" | 
				
			||||
 | 
					                             class="mb-4 shadow-sm" alt="Theme Screenshot"> | 
				
			||||
 | 
					                    </div> | 
				
			||||
 | 
					                    <div class="col-lg-12 mt-4"> | 
				
			||||
 | 
					                        <h2 class="text-center">Shop Page</h2> | 
				
			||||
 | 
					                        <p class="lead text-center"> | 
				
			||||
 | 
					                            The shop display you products in a stylish way. It is displaying 3 products in a row, and it | 
				
			||||
 | 
					                            will attract your customers. | 
				
			||||
 | 
					                            Also, the Category side are customized in collapsible style. Display high quality images | 
				
			||||
 | 
					                            for | 
				
			||||
 | 
					                            your products | 
				
			||||
 | 
					                        </p> | 
				
			||||
 | 
					                    </div> | 
				
			||||
 | 
					                </div> | 
				
			||||
 | 
					            </div> | 
				
			||||
 | 
					            <!-- End of Column 2 --> | 
				
			||||
 | 
					        </div> | 
				
			||||
 | 
					        <!-- End of Two Columns Section --> | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					        <!-- One Column Section --> | 
				
			||||
 | 
					        <div class="row p-4"> | 
				
			||||
 | 
					            <div class="col-lg-6"> | 
				
			||||
 | 
					                <img style="border-radius: 0.5em;" src="images/3.jpg" width="90%" height="auto" class="mb-4 shadow-sm" | 
				
			||||
 | 
					                     alt="Theme Screenshot"> | 
				
			||||
 | 
					            </div> | 
				
			||||
 | 
					            <div class="col-lg-6" style="padding-top: 100px;"> | 
				
			||||
 | 
					                <h2>Overview</h2> | 
				
			||||
 | 
					                <p class="lead"> | 
				
			||||
 | 
					                    It is an attractive and modern eCommerce Website theme. It makes your eCommerce website is | 
				
			||||
 | 
					                    attractive. | 
				
			||||
 | 
					                    Just drag & drop the building blocks you need to easily build your layout. | 
				
			||||
 | 
					                    Theme Boec is a perfect choice for your online store you are looking for. | 
				
			||||
 | 
					                </p> | 
				
			||||
 | 
					            </div> | 
				
			||||
 | 
					        </div> | 
				
			||||
 | 
					        <!-- End of One Columns Section --> | 
				
			||||
 | 
					        <!-- New Arrivals Section --> | 
				
			||||
 | 
					        <div class="row p-4"> | 
				
			||||
 | 
					            <div class="col-lg-6" style="padding-top: 100px;"> | 
				
			||||
 | 
					                <h2>Hot Sales and New Arrivals</h2> | 
				
			||||
 | 
					                <p class="lead"> | 
				
			||||
 | 
					                    Hot sales and New arrivals are the snippets that are configured from the backend. You can easily add products | 
				
			||||
 | 
					                    to the Hot sales. New arrivals are automatically taken the newly arrived products. | 
				
			||||
 | 
					                </p> | 
				
			||||
 | 
					            </div> | 
				
			||||
 | 
					            <div class="col-lg-6"> | 
				
			||||
 | 
					                <img style="border-radius: 0.5em;" src="images/new_arrivals.jpg" width="90%" height="auto" | 
				
			||||
 | 
					                     class="mb-4 shadow-sm" alt="Theme Screenshot"> | 
				
			||||
 | 
					            </div> | 
				
			||||
 | 
					        </div> | 
				
			||||
 | 
					        <!-- End of New Section --> | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					        <!-- Deal Section --> | 
				
			||||
 | 
					        <div class="row p-4"> | 
				
			||||
 | 
					            <div class="col-lg-12 px-4"> | 
				
			||||
 | 
					                <img class="shadow" style="border-radius: 0.5rem;" src="images/boec_deal.png" width="100%" | 
				
			||||
 | 
					                     height="auto"> | 
				
			||||
 | 
					            </div> | 
				
			||||
 | 
					            <div class="col-lg-12 my-4 d-flex flex-column justify-content-center align-items-center"> | 
				
			||||
 | 
					                <h2 class="mt-4">Deal of the Week</h2> | 
				
			||||
 | 
					                <p class="lead text-center"> | 
				
			||||
 | 
					                    Deal of the week snippet have Counter for giving a premium look the deal of the week product and its counter | 
				
			||||
 | 
					                    are easily configurable from the backend. | 
				
			||||
 | 
					                </p> | 
				
			||||
 | 
					            </div> | 
				
			||||
 | 
					        </div> | 
				
			||||
 | 
					        <!-- End of Deal Section --> | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					        <!-- Three Columns Section --> | 
				
			||||
 | 
					        <div class="row p-4"> | 
				
			||||
 | 
					            <!-- Column 1 --> | 
				
			||||
 | 
					            <div class="col-lg-4"> | 
				
			||||
 | 
					                <div class="row"> | 
				
			||||
 | 
					                    <div class="col-lg-12"> | 
				
			||||
 | 
					                        <img style="border-radius: 0.5em;" src="images/4.jpg" width="100%" height="auto" | 
				
			||||
 | 
					                             class="mb-4 shadow-sm" alt="Theme Screenshot"> | 
				
			||||
 | 
					                    </div> | 
				
			||||
 | 
					                    <div class="col-lg-12 mt-4"> | 
				
			||||
 | 
					                        <h2 class="text-center">Cart</h2> | 
				
			||||
 | 
					                        <p class="lead text-center"> | 
				
			||||
 | 
					                            The cart display your products in a stylish way. it will display the all needed details | 
				
			||||
 | 
					                            of | 
				
			||||
 | 
					                            the product | 
				
			||||
 | 
					                        </p> | 
				
			||||
 | 
					                    </div> | 
				
			||||
 | 
					                </div> | 
				
			||||
 | 
					            </div> | 
				
			||||
 | 
					            <!-- End of Column 1 --> | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					            <!-- Column 2 --> | 
				
			||||
 | 
					            <div class="col-lg-4"> | 
				
			||||
 | 
					                <div class="row"> | 
				
			||||
 | 
					                    <div class="col-lg-12"> | 
				
			||||
 | 
					                        <img style="border-radius: 0.5em;" src="images/5.jpg" width="100%" height="auto" | 
				
			||||
 | 
					                             class="mb-4 shadow-sm" alt="Theme Screenshot"> | 
				
			||||
 | 
					                    </div> | 
				
			||||
 | 
					                    <div class="col-lg-12 mt-4"> | 
				
			||||
 | 
					                        <h2 class="text-center">Blog Preview</h2> | 
				
			||||
 | 
					                        <p class="lead text-center"> | 
				
			||||
 | 
					                            Theme Boec have a fully customized blog preview with big cover image of the blog with | 
				
			||||
 | 
					                            share | 
				
			||||
 | 
					                            buttons. | 
				
			||||
 | 
					                        </p> | 
				
			||||
 | 
					                    </div> | 
				
			||||
 | 
					                </div> | 
				
			||||
 | 
					            </div> | 
				
			||||
 | 
					            <!-- End of Column 2 --> | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					            <!-- Column 4 --> | 
				
			||||
 | 
					            <div class="col-lg-4"> | 
				
			||||
 | 
					                <div class="row"> | 
				
			||||
 | 
					                    <div class="col-lg-12"> | 
				
			||||
 | 
					                        <img style="border-radius: 0.5em;" src="images/6.jpg" width="100%" height="auto" | 
				
			||||
 | 
					                             class="mb-4 shadow-sm" alt="Theme Screenshot"> | 
				
			||||
 | 
					                    </div> | 
				
			||||
 | 
					                    <div class="col-lg-12 mt-4"> | 
				
			||||
 | 
					                        <h2 class="text-center">Product Preview</h2> | 
				
			||||
 | 
					                        <p class="lead text-center"> | 
				
			||||
 | 
					                            It has a fully customized Product preview with full details of the product with an | 
				
			||||
 | 
					                            attractive design. | 
				
			||||
 | 
					                        </p> | 
				
			||||
 | 
					                    </div> | 
				
			||||
 | 
					                </div> | 
				
			||||
 | 
					            </div> | 
				
			||||
 | 
					            <!-- End of Column 4 --> | 
				
			||||
 | 
					        </div> | 
				
			||||
 | 
					        <!-- Demo Pages --> | 
				
			||||
 | 
					        <section class="oe_container"> | 
				
			||||
 | 
					            <div class="row" style="margin: 60px auto -30px;"> | 
				
			||||
 | 
					                <div class="col-lg-12 text-center"> | 
				
			||||
 | 
					                    <h4 class="mt-4">Demo Pages</h4> | 
				
			||||
 | 
					                    <hr style="border-width: 3px; border-color: #0984e3; width: 100px;"> | 
				
			||||
 | 
					                </div> | 
				
			||||
 | 
					            </div> | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					            <div class="row" style="margin: 40px auto; border-radius: 15px; padding: 38px;"> | 
				
			||||
 | 
					                <div class="col-sm-6 col-md-4 px-2"> | 
				
			||||
 | 
					                    <div class="bg-white shadow overflow-hidden mb32" | 
				
			||||
 | 
					                         style="border-radius: 15px; width: 300px; padding-bottom: 0; margin-right: 30px;"> | 
				
			||||
 | 
					                        <img src="./images/demo-1.png" width="300px" height="auto"> | 
				
			||||
 | 
					                        <h6 class="text-center my-3">Home</h6> | 
				
			||||
 | 
					                        <hr style="border-width: 5px; border-color: #0984e3; width: 150px; margin-bottom: 0;"> | 
				
			||||
 | 
					                    </div> | 
				
			||||
 | 
					                </div> | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					                <div class="col-sm-6 col-md-4 px-2"> | 
				
			||||
 | 
					                    <div class="bg-white shadow overflow-hidden mb32" | 
				
			||||
 | 
					                         style="border-radius: 15px; width: 300px; padding-bottom: 0;"> | 
				
			||||
 | 
					                        <img src="./images/demo-2.jpg" width="300px" height="auto"> | 
				
			||||
 | 
					                        <h6 class="text-center my-3">Blog Preview</h6> | 
				
			||||
 | 
					                        <hr style="border-width: 5px; border-color: #05c46b; width: 150px; margin-bottom: 0;"> | 
				
			||||
 | 
					                    </div> | 
				
			||||
 | 
					                </div> | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					                <div class="col-sm-6 col-md-4 px-2"> | 
				
			||||
 | 
					                    <div class="bg-white shadow overflow-hidden mb32" | 
				
			||||
 | 
					                         style="border-radius: 15px; width: 300px; padding-bottom: 0;"> | 
				
			||||
 | 
					                        <img src="./images/demo-3.jpg" width="300px" height="auto"> | 
				
			||||
 | 
					                        <h6 class="text-center my-3">Shop Page</h6> | 
				
			||||
 | 
					                        <hr style="border-width: 5px; border-color: #f44f52; width: 150px; margin-bottom: 0;"> | 
				
			||||
 | 
					                    </div> | 
				
			||||
 | 
					                </div> | 
				
			||||
 | 
					            </div> | 
				
			||||
 | 
					            <div class="row d-flex justify-content-center" | 
				
			||||
 | 
					                 style="margin: 40px auto; border-radius: 15px; padding: 38px;"> | 
				
			||||
 | 
					                <div class="col-sm-6 col-md-4 px-2"> | 
				
			||||
 | 
					                    <div class="bg-white shadow overflow-hidden mb32" | 
				
			||||
 | 
					                         style="border-radius: 15px; width: 300px; padding-bottom: 0;"> | 
				
			||||
 | 
					                        <img src="./images/demo-4.jpg" width="300px" height="auto"> | 
				
			||||
 | 
					                        <h6 class="text-center my-3">Blog Page</h6> | 
				
			||||
 | 
					                        <hr style="border-width: 5px; border-color: #ffa801; width: 150px; margin-bottom: 0;"> | 
				
			||||
 | 
					                    </div> | 
				
			||||
 | 
					                </div> | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					                <div class="col-sm-6 col-md-4 px-2"> | 
				
			||||
 | 
					                    <div class="bg-white shadow overflow-hidden mb32" | 
				
			||||
 | 
					                         style="border-radius: 15px; width: 300px; padding-bottom: 0;"> | 
				
			||||
 | 
					                        <img src="./images/demo-5.jpg" width="300px" height="auto"> | 
				
			||||
 | 
					                        <h6 class="text-center my-3">About Page</h6> | 
				
			||||
 | 
					                        <hr style="border-width: 5px; border-color: #3c40c6; width: 150px; margin-bottom: 0;"> | 
				
			||||
 | 
					                    </div> | 
				
			||||
 | 
					                </div> | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					            </div> | 
				
			||||
 | 
					        </section> | 
				
			||||
 | 
					        <!-- End of Demo Pages --> | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					        <!-- Footer --> | 
				
			||||
 | 
					        <div class="row" style="margin-top: 4rem;"> | 
				
			||||
 | 
					            <div class="col-lg-12 text-center"> | 
				
			||||
 | 
					                <h2>Get Help</h2> | 
				
			||||
 | 
					                <hr style=" border: 2px solid #b22126; margin-top: 2px;" width="40px"> | 
				
			||||
 | 
					                <p class="text-center" style="max-width: 650px; margin: 0 auto;">If you have anything to share with | 
				
			||||
 | 
					                    us | 
				
			||||
 | 
					                    based | 
				
			||||
 | 
					                    on | 
				
			||||
 | 
					                    your use of this module, please let us know. We are ready to offer our support.</p> | 
				
			||||
 | 
					            </div> | 
				
			||||
 | 
					        </div> | 
				
			||||
 | 
					        <div class="row"> | 
				
			||||
 | 
					            <div class="col px-4 pt-3 pb-2 shadow-sm" | 
				
			||||
 | 
					                 style="background-color: #fff; max-width: 450px; border-radius: 0.5em; margin: 1em auto;"> | 
				
			||||
 | 
					                <div class="row"> | 
				
			||||
 | 
					                    <div class="col-lg-8"> | 
				
			||||
 | 
					                        <h6><a href="mailto:odoo@cybrosys.com" target="_blank" | 
				
			||||
 | 
					                               style="color: #050505; text-decoration: none;"><i | 
				
			||||
 | 
					                                class="fa fa-envelope mr-2"></i>odoo@cybrosys.com</a></h6> | 
				
			||||
 | 
					                    </div> | 
				
			||||
 | 
					                    <div class="col-lg-4 d-flex justify-content-end" style="position: relative;"> | 
				
			||||
 | 
					                        <h6><a href="mailto:odoo@cybrosys.com" target="_blank" | 
				
			||||
 | 
					                               style="color: #050505; text-decoration: none;"><i class="fa fa-chevron-right"></i></a> | 
				
			||||
 | 
					                        </h6> | 
				
			||||
 | 
					                    </div> | 
				
			||||
 | 
					                </div> | 
				
			||||
 | 
					            </div> | 
				
			||||
 | 
					        </div> | 
				
			||||
 | 
					        <div class="row"> | 
				
			||||
 | 
					            <div class="col px-4 pt-3 pb-2 shadow-sm" | 
				
			||||
 | 
					                 style="background-color: #fff; max-width: 450px; border-radius: 0.5em; margin: 1em auto;"> | 
				
			||||
 | 
					                <div class="row"> | 
				
			||||
 | 
					                    <div class="col-lg-8"> | 
				
			||||
 | 
					                        <h6><a href="https://www.cybrosys.com" target="_blank" | 
				
			||||
 | 
					                               style="color: #050505; text-decoration: none;"><i | 
				
			||||
 | 
					                                class="fa fa-globe mr-2"></i>www.cybrosys.com</a></h6> | 
				
			||||
 | 
					                    </div> | 
				
			||||
 | 
					                    <div class="col-lg-4 d-flex justify-content-end" style="position: relative;"> | 
				
			||||
 | 
					                        <h6><a href="https://www.cybrosys.com" target="_blank" | 
				
			||||
 | 
					                               style="color: #050505; text-decoration: none;"><i class="fa fa-chevron-right"></i></a> | 
				
			||||
 | 
					                        </h6> | 
				
			||||
 | 
					                    </div> | 
				
			||||
 | 
					                </div> | 
				
			||||
 | 
					            </div> | 
				
			||||
 | 
					        </div> | 
				
			||||
 | 
					        <div class="row"> | 
				
			||||
 | 
					            <div class="col-lg-12 mt-4 mb-2 text-center"> | 
				
			||||
 | 
					                <p style="font-weight: bold">A Quality Theme From</p> | 
				
			||||
 | 
					            </div> | 
				
			||||
 | 
					            <div class="col-lg-12 text-center"> | 
				
			||||
 | 
					                <img src="images/cybro-logo-oca.png" width="80px" height="auto"> | 
				
			||||
 | 
					            </div> | 
				
			||||
 | 
					        </div> | 
				
			||||
 | 
					        <!-- End of Footer --> | 
				
			||||
 | 
					    </div> | 
				
			||||
 | 
					</div> | 
				
			||||
| 
		 After Width: | Height: | Size: 463 KiB  | 
@ -0,0 +1,183 @@ | 
				
			|||||
 | 
					/** | 
				
			||||
 | 
					 * Owl Carousel v2.3.4 | 
				
			||||
 | 
					 * Copyright 2013-2018 David Deutsch | 
				
			||||
 | 
					 * Licensed under: SEE LICENSE IN https://github.com/OwlCarousel2/OwlCarousel2/blob/master/LICENSE | 
				
			||||
 | 
					 */ | 
				
			||||
 | 
					.owl-carousel, | 
				
			||||
 | 
					.owl-carousel .owl-item { | 
				
			||||
 | 
					    -webkit-tap-highlight-color: transparent; | 
				
			||||
 | 
					    position: relative; | 
				
			||||
 | 
					} | 
				
			||||
 | 
					.owl-carousel { | 
				
			||||
 | 
					    display: none; | 
				
			||||
 | 
					    width: 100%; | 
				
			||||
 | 
					    z-index: 1; | 
				
			||||
 | 
					} | 
				
			||||
 | 
					.owl-carousel .owl-stage { | 
				
			||||
 | 
					    position: relative; | 
				
			||||
 | 
					    -ms-touch-action: pan-Y; | 
				
			||||
 | 
					    touch-action: manipulation; | 
				
			||||
 | 
					    -moz-backface-visibility: hidden; | 
				
			||||
 | 
					} | 
				
			||||
 | 
					.owl-carousel .owl-stage:after { | 
				
			||||
 | 
					    content: "."; | 
				
			||||
 | 
					    display: block; | 
				
			||||
 | 
					    clear: both; | 
				
			||||
 | 
					    visibility: hidden; | 
				
			||||
 | 
					    line-height: 0; | 
				
			||||
 | 
					    height: 0; | 
				
			||||
 | 
					} | 
				
			||||
 | 
					.owl-carousel .owl-stage-outer { | 
				
			||||
 | 
					    position: relative; | 
				
			||||
 | 
					    overflow: hidden; | 
				
			||||
 | 
					    -webkit-transform: translate3d(0, 0, 0); | 
				
			||||
 | 
					} | 
				
			||||
 | 
					.owl-carousel .owl-item, | 
				
			||||
 | 
					.owl-carousel .owl-wrapper { | 
				
			||||
 | 
					    -webkit-backface-visibility: hidden; | 
				
			||||
 | 
					    -moz-backface-visibility: hidden; | 
				
			||||
 | 
					    -ms-backface-visibility: hidden; | 
				
			||||
 | 
					    -webkit-transform: translate3d(0, 0, 0); | 
				
			||||
 | 
					    -moz-transform: translate3d(0, 0, 0); | 
				
			||||
 | 
					    -ms-transform: translate3d(0, 0, 0); | 
				
			||||
 | 
					} | 
				
			||||
 | 
					.owl-carousel .owl-item { | 
				
			||||
 | 
					    min-height: 1px; | 
				
			||||
 | 
					    float: left; | 
				
			||||
 | 
					    -webkit-backface-visibility: hidden; | 
				
			||||
 | 
					    -webkit-touch-callout: none; | 
				
			||||
 | 
					} | 
				
			||||
 | 
					.owl-carousel .owl-item img { | 
				
			||||
 | 
					    display: block; | 
				
			||||
 | 
					    width: 100%; | 
				
			||||
 | 
					} | 
				
			||||
 | 
					.owl-carousel .owl-dots.disabled, | 
				
			||||
 | 
					.owl-carousel .owl-nav.disabled { | 
				
			||||
 | 
					    display: none; | 
				
			||||
 | 
					} | 
				
			||||
 | 
					.no-js .owl-carousel, | 
				
			||||
 | 
					.owl-carousel.owl-loaded { | 
				
			||||
 | 
					    display: block; | 
				
			||||
 | 
					} | 
				
			||||
 | 
					.owl-carousel .owl-dot, | 
				
			||||
 | 
					.owl-carousel .owl-nav .owl-next, | 
				
			||||
 | 
					.owl-carousel .owl-nav .owl-prev { | 
				
			||||
 | 
					    cursor: pointer; | 
				
			||||
 | 
					    -webkit-user-select: none; | 
				
			||||
 | 
					    -khtml-user-select: none; | 
				
			||||
 | 
					    -moz-user-select: none; | 
				
			||||
 | 
					    -ms-user-select: none; | 
				
			||||
 | 
					    user-select: none; | 
				
			||||
 | 
					} | 
				
			||||
 | 
					.owl-carousel .owl-nav button.owl-next, | 
				
			||||
 | 
					.owl-carousel .owl-nav button.owl-prev, | 
				
			||||
 | 
					.owl-carousel button.owl-dot { | 
				
			||||
 | 
					    background: 0 0; | 
				
			||||
 | 
					    color: inherit; | 
				
			||||
 | 
					    border: none; | 
				
			||||
 | 
					    padding: 0 !important; | 
				
			||||
 | 
					    font: inherit; | 
				
			||||
 | 
					} | 
				
			||||
 | 
					.owl-carousel.owl-loading { | 
				
			||||
 | 
					    opacity: 0; | 
				
			||||
 | 
					    display: block; | 
				
			||||
 | 
					} | 
				
			||||
 | 
					.owl-carousel.owl-hidden { | 
				
			||||
 | 
					    opacity: 0; | 
				
			||||
 | 
					} | 
				
			||||
 | 
					.owl-carousel.owl-refresh .owl-item { | 
				
			||||
 | 
					    visibility: hidden; | 
				
			||||
 | 
					} | 
				
			||||
 | 
					.owl-carousel.owl-drag .owl-item { | 
				
			||||
 | 
					    -ms-touch-action: pan-y; | 
				
			||||
 | 
					    touch-action: pan-y; | 
				
			||||
 | 
					    -webkit-user-select: none; | 
				
			||||
 | 
					    -moz-user-select: none; | 
				
			||||
 | 
					    -ms-user-select: none; | 
				
			||||
 | 
					    user-select: none; | 
				
			||||
 | 
					} | 
				
			||||
 | 
					.owl-carousel.owl-grab { | 
				
			||||
 | 
					    cursor: move; | 
				
			||||
 | 
					    cursor: grab; | 
				
			||||
 | 
					} | 
				
			||||
 | 
					.owl-carousel.owl-rtl { | 
				
			||||
 | 
					    direction: rtl; | 
				
			||||
 | 
					} | 
				
			||||
 | 
					.owl-carousel.owl-rtl .owl-item { | 
				
			||||
 | 
					    float: right; | 
				
			||||
 | 
					} | 
				
			||||
 | 
					.owl-carousel .animated { | 
				
			||||
 | 
					    animation-duration: 1s; | 
				
			||||
 | 
					    animation-fill-mode: both; | 
				
			||||
 | 
					} | 
				
			||||
 | 
					.owl-carousel .owl-animated-in { | 
				
			||||
 | 
					    z-index: 0; | 
				
			||||
 | 
					} | 
				
			||||
 | 
					.owl-carousel .owl-animated-out { | 
				
			||||
 | 
					    z-index: 1; | 
				
			||||
 | 
					} | 
				
			||||
 | 
					.owl-carousel .fadeOut { | 
				
			||||
 | 
					    animation-name: fadeOut; | 
				
			||||
 | 
					} | 
				
			||||
 | 
					@keyframes fadeOut { | 
				
			||||
 | 
					    0% { | 
				
			||||
 | 
					        opacity: 1; | 
				
			||||
 | 
					    } | 
				
			||||
 | 
					    100% { | 
				
			||||
 | 
					        opacity: 0; | 
				
			||||
 | 
					    } | 
				
			||||
 | 
					} | 
				
			||||
 | 
					.owl-height { | 
				
			||||
 | 
					    transition: height 0.5s ease-in-out; | 
				
			||||
 | 
					} | 
				
			||||
 | 
					.owl-carousel .owl-item .owl-lazy { | 
				
			||||
 | 
					    opacity: 0; | 
				
			||||
 | 
					    transition: opacity 0.4s ease; | 
				
			||||
 | 
					} | 
				
			||||
 | 
					.owl-carousel .owl-item .owl-lazy:not([src]), | 
				
			||||
 | 
					.owl-carousel .owl-item .owl-lazy[src^=""] { | 
				
			||||
 | 
					    max-height: 0; | 
				
			||||
 | 
					} | 
				
			||||
 | 
					.owl-carousel .owl-item img.owl-lazy { | 
				
			||||
 | 
					    transform-style: preserve-3d; | 
				
			||||
 | 
					} | 
				
			||||
 | 
					.owl-carousel .owl-video-wrapper { | 
				
			||||
 | 
					    position: relative; | 
				
			||||
 | 
					    height: 100%; | 
				
			||||
 | 
					    background: #000; | 
				
			||||
 | 
					} | 
				
			||||
 | 
					.owl-carousel .owl-video-play-icon { | 
				
			||||
 | 
					    position: absolute; | 
				
			||||
 | 
					    height: 80px; | 
				
			||||
 | 
					    width: 80px; | 
				
			||||
 | 
					    left: 50%; | 
				
			||||
 | 
					    margin-left: -40px; | 
				
			||||
 | 
					    margin-top: -40px; | 
				
			||||
 | 
					    background: url(owl.video.play.png) no-repeat; | 
				
			||||
 | 
					    cursor: pointer; | 
				
			||||
 | 
					    z-index: 1; | 
				
			||||
 | 
					    -webkit-backface-visibility: hidden; | 
				
			||||
 | 
					    transition: transform 0.1s ease; | 
				
			||||
 | 
					} | 
				
			||||
 | 
					.owl-carousel .owl-video-play-icon:hover { | 
				
			||||
 | 
					    -ms-transform: scale(1.3, 1.3); | 
				
			||||
 | 
					    transform: scale(1.3, 1.3); | 
				
			||||
 | 
					} | 
				
			||||
 | 
					.owl-carousel .owl-video-playing .owl-video-play-icon, | 
				
			||||
 | 
					.owl-carousel .owl-video-playing .owl-video-tn { | 
				
			||||
 | 
					    display: none; | 
				
			||||
 | 
					} | 
				
			||||
 | 
					.owl-carousel .owl-video-tn { | 
				
			||||
 | 
					    opacity: 0; | 
				
			||||
 | 
					    height: 100%; | 
				
			||||
 | 
					    background-position: center center; | 
				
			||||
 | 
					    background-repeat: no-repeat; | 
				
			||||
 | 
					    background-size: contain; | 
				
			||||
 | 
					    transition: opacity 0.4s ease; | 
				
			||||
 | 
					} | 
				
			||||
 | 
					.owl-carousel .owl-video-frame { | 
				
			||||
 | 
					    position: relative; | 
				
			||||
 | 
					    z-index: 1; | 
				
			||||
 | 
					    height: 100%; | 
				
			||||
 | 
					    width: 100%; | 
				
			||||
 | 
					} | 
				
			||||
@ -0,0 +1,6 @@ | 
				
			|||||
 | 
					/** | 
				
			||||
 | 
					 * Owl Carousel v2.3.4 | 
				
			||||
 | 
					 * Copyright 2013-2018 David Deutsch | 
				
			||||
 | 
					 * Licensed under: SEE LICENSE IN https://github.com/OwlCarousel2/OwlCarousel2/blob/master/LICENSE | 
				
			||||
 | 
					 */ | 
				
			||||
 | 
					.owl-theme .owl-dots,.owl-theme .owl-nav{text-align:center;-webkit-tap-highlight-color:transparent}.owl-theme .owl-nav{margin-top:10px}.owl-theme .owl-nav [class*=owl-]{color:#FFF;font-size:14px;margin:5px;padding:4px 7px;background:#D6D6D6;display:inline-block;cursor:pointer;border-radius:3px}.owl-theme .owl-nav [class*=owl-]:hover{background:#869791;color:#FFF;text-decoration:none}.owl-theme .owl-nav .disabled{opacity:.5;cursor:default}.owl-theme .owl-nav.disabled+.owl-dots{margin-top:10px}.owl-theme .owl-dots .owl-dot{display:inline-block;zoom:1}.owl-theme .owl-dots .owl-dot span{width:10px;height:10px;margin:5px 7px;background:#D6D6D6;display:block;-webkit-backface-visibility:visible;transition:opacity .2s ease;border-radius:30px}.owl-theme .owl-dots .owl-dot.active span,.owl-theme .owl-dots .owl-dot:hover span{background:#869791} | 
				
			||||
@ -0,0 +1,127 @@ | 
				
			|||||
 | 
					body { | 
				
			||||
 | 
					    background-color: #f1f1f1; | 
				
			||||
 | 
					    padding-top: 20px; | 
				
			||||
 | 
					} | 
				
			||||
 | 
					.young-passion-gradient { | 
				
			||||
 | 
					    background: linear-gradient(40deg, #b12a5b, #ff8177); | 
				
			||||
 | 
					} | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					.title h1 { | 
				
			||||
 | 
					    text-align: left; | 
				
			||||
 | 
					    color: #353535; | 
				
			||||
 | 
					    font-size: 35px; | 
				
			||||
 | 
					} | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					.hero { | 
				
			||||
 | 
					    color: white; | 
				
			||||
 | 
					    padding: 39px 5px; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    a button{ | 
				
			||||
 | 
					        font-size: 17px; | 
				
			||||
 | 
					        color: #fff; | 
				
			||||
 | 
					        padding: 7px; | 
				
			||||
 | 
					        border-radius: 9px; | 
				
			||||
 | 
					        border: 2px solid #fff; | 
				
			||||
 | 
					        background-color: #ffffff00; | 
				
			||||
 | 
					        font-weight: 700; | 
				
			||||
 | 
					        margin: 30px 0; | 
				
			||||
 | 
					    } | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    #counters_hero { | 
				
			||||
 | 
					        display: flex; | 
				
			||||
 | 
					        justify-content: space-between; | 
				
			||||
 | 
					        vertical-align: middle; | 
				
			||||
 | 
					        height: 100%; | 
				
			||||
 | 
					        .cont { | 
				
			||||
 | 
					            margin: auto; | 
				
			||||
 | 
					            .label { | 
				
			||||
 | 
					                text-align: center; | 
				
			||||
 | 
					                height: 49px; | 
				
			||||
 | 
					                line-height: 1.4; | 
				
			||||
 | 
					                font-size: 14px; | 
				
			||||
 | 
					            } | 
				
			||||
 | 
					        } | 
				
			||||
 | 
					    } | 
				
			||||
 | 
					} | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					.circle { | 
				
			||||
 | 
					    width: 99px; | 
				
			||||
 | 
					    height: 99px; | 
				
			||||
 | 
					    background: #cfcfcfb9; | 
				
			||||
 | 
					    border-radius: 78px; | 
				
			||||
 | 
					    margin: auto; | 
				
			||||
 | 
					    .counter { | 
				
			||||
 | 
					        font-size: 20px; | 
				
			||||
 | 
					        text-align: center; | 
				
			||||
 | 
					        color: white; | 
				
			||||
 | 
					        line-height: 4.6; | 
				
			||||
 | 
					        width: auto; | 
				
			||||
 | 
					    } | 
				
			||||
 | 
					} | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					.description { | 
				
			||||
 | 
					    background-color: #e0e0e0; | 
				
			||||
 | 
					    padding: 15px; | 
				
			||||
 | 
					    color: #3c3c3c; | 
				
			||||
 | 
					    p { | 
				
			||||
 | 
					        font-weight: 700; | 
				
			||||
 | 
					    } | 
				
			||||
 | 
					} | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					#counters_1, | 
				
			||||
 | 
					#counters_2, | 
				
			||||
 | 
					#counters_3 { | 
				
			||||
 | 
					    display: flex; | 
				
			||||
 | 
					    justify-content: space-around; | 
				
			||||
 | 
					    padding: 33px; | 
				
			||||
 | 
					    .counter { | 
				
			||||
 | 
					        font-size: 33px; | 
				
			||||
 | 
					        font-weight: 600; | 
				
			||||
 | 
					        color: #000; | 
				
			||||
 | 
					        width: auto; | 
				
			||||
 | 
					    } | 
				
			||||
 | 
					    p { | 
				
			||||
 | 
					        margin-bottom: 0; | 
				
			||||
 | 
					        width: 20px; | 
				
			||||
 | 
					        float: left; | 
				
			||||
 | 
					        color: #04884c; | 
				
			||||
 | 
					        font-size: 29px; | 
				
			||||
 | 
					        line-height: 1.6; | 
				
			||||
 | 
					    } | 
				
			||||
 | 
					    .text { | 
				
			||||
 | 
					        width: 100px; | 
				
			||||
 | 
					        text-align: center; | 
				
			||||
 | 
					        text-transform: uppercase; | 
				
			||||
 | 
					        font-size: 12px; | 
				
			||||
 | 
					        color: #616161; | 
				
			||||
 | 
					    } | 
				
			||||
 | 
					    .cont .row { | 
				
			||||
 | 
					        justify-content: center; | 
				
			||||
 | 
					    } | 
				
			||||
 | 
					    @media (max-width: 480px) { | 
				
			||||
 | 
					        .counter { | 
				
			||||
 | 
					            font-size: 25px; | 
				
			||||
 | 
					        } | 
				
			||||
 | 
					        p { | 
				
			||||
 | 
					            font-size: 24px; | 
				
			||||
 | 
					            line-height: 1.5; | 
				
			||||
 | 
					        } | 
				
			||||
 | 
					        .text{ | 
				
			||||
 | 
					            font-size: 10px; | 
				
			||||
 | 
					        } | 
				
			||||
 | 
					    } | 
				
			||||
 | 
					} | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					.distance{ | 
				
			||||
 | 
					    margin: 88px 0 160px 0; | 
				
			||||
 | 
					    text-align: center; | 
				
			||||
 | 
					    font-size: 41px; | 
				
			||||
 | 
					    color: #04884c; | 
				
			||||
 | 
					    font-weight: 400; | 
				
			||||
 | 
					} | 
				
			||||
 | 
					.o_wsale_product_information .o_wsale_product_information_text h6 a { | 
				
			||||
 | 
					    color: #000 !important; | 
				
			||||
 | 
					    text-decoration: none; | 
				
			||||
 | 
					    font-size: 14px !important; | 
				
			||||
 | 
					    font-family: 'Poppins', sans-serif !important; | 
				
			||||
 | 
					} | 
				
			||||
| 
		 After Width: | Height: | Size: 280 KiB  | 
| 
		 After Width: | Height: | Size: 67 KiB  | 
| 
		 After Width: | Height: | Size: 147 KiB  | 
| 
		 After Width: | Height: | Size: 114 KiB  | 
| 
		 After Width: | Height: | Size: 104 KiB  | 
| 
		 After Width: | Height: | Size: 114 KiB  | 
| 
		 After Width: | Height: | Size: 42 KiB  | 
| 
		 After Width: | Height: | Size: 38 KiB  | 
| 
		 After Width: | Height: | Size: 138 KiB  | 
| 
		 After Width: | Height: | Size: 85 KiB  | 
| 
		 After Width: | Height: | Size: 87 KiB  | 
| 
		 After Width: | Height: | Size: 161 KiB  | 
| 
		 After Width: | Height: | Size: 87 KiB  | 
| 
		 After Width: | Height: | Size: 708 KiB  | 
| 
		 After Width: | Height: | Size: 1.5 MiB  | 
| 
		 After Width: | Height: | Size: 287 KiB  | 
| 
		 After Width: | Height: | Size: 304 KiB  | 
| 
		 After Width: | Height: | Size: 267 KiB  | 
| 
		 After Width: | Height: | Size: 201 KiB  | 
| 
		 After Width: | Height: | Size: 175 KiB  | 
| 
		 After Width: | Height: | Size: 136 KiB  | 
| 
		 After Width: | Height: | Size: 114 KiB  | 
| 
		 After Width: | Height: | Size: 185 KiB  | 
| 
		 After Width: | Height: | Size: 169 KiB  | 
| 
		 After Width: | Height: | Size: 163 KiB  | 
| 
		 After Width: | Height: | Size: 118 KiB  | 
| 
		 After Width: | Height: | Size: 209 KiB  | 
| 
		 After Width: | Height: | Size: 149 KiB  | 
| 
		 After Width: | Height: | Size: 608 KiB  | 
| 
		 After Width: | Height: | Size: 71 KiB  | 
| 
		 After Width: | Height: | Size: 142 KiB  | 
| 
		 After Width: | Height: | Size: 168 KiB  | 
| 
		 After Width: | Height: | Size: 198 KiB  | 
| 
		 After Width: | Height: | Size: 1006 KiB  | 
| 
		 After Width: | Height: | Size: 53 KiB  | 
| 
		 After Width: | Height: | Size: 150 KiB  | 
| 
		 After Width: | Height: | Size: 123 KiB  | 
| 
		 After Width: | Height: | Size: 100 KiB  | 
| 
		 After Width: | Height: | Size: 53 KiB  | 
| 
		 After Width: | Height: | Size: 32 KiB  | 
| 
		 After Width: | Height: | Size: 2.3 KiB  | 
| 
		 After Width: | Height: | Size: 133 KiB  | 
| 
		 After Width: | Height: | Size: 16 KiB  | 
| 
		 After Width: | Height: | Size: 149 KiB  | 
| 
		 After Width: | Height: | Size: 221 KiB  | 
| 
		 After Width: | Height: | Size: 530 KiB  | 
| 
		 After Width: | Height: | Size: 110 KiB  | 
| 
		 After Width: | Height: | Size: 93 KiB  | 
| 
		 After Width: | Height: | Size: 98 KiB  | 
| 
		 After Width: | Height: | Size: 236 KiB  | 
| 
		 After Width: | Height: | Size: 121 KiB  | 
| 
		 After Width: | Height: | Size: 161 KiB  | 
| 
		 After Width: | Height: | Size: 18 KiB  | 
| 
		 After Width: | Height: | Size: 1.5 MiB  | 
| 
		 After Width: | Height: | Size: 1.5 MiB  | 
| 
		 After Width: | Height: | Size: 1.5 MiB  |