Browse Source

Dec 26 : [ADD] Initial Commit 'theme_boec'

pull/313/head
RisvanaCybro 1 year ago
parent
commit
0af5f5ff03
  1. 46
      theme_boec/README.rst
  2. 23
      theme_boec/__init__.py
  3. 87
      theme_boec/__manifest__.py
  4. 23
      theme_boec/controllers/__init__.py
  5. 240
      theme_boec/controllers/brand_filter_controller.py
  6. 62
      theme_boec/controllers/product_snippets.py
  7. 8
      theme_boec/data/boec_config_data.xml
  8. 6
      theme_boec/doc/RELEASE_NOTES.md
  9. 26
      theme_boec/models/__init__.py
  10. 37
      theme_boec/models/boec_config.py
  11. 37
      theme_boec/models/product_brand.py
  12. 37
      theme_boec/models/product_template.py
  13. 53
      theme_boec/models/theme_utils.py
  14. 31
      theme_boec/models/website.py
  15. 3
      theme_boec/security/ir.model.access.csv
  16. BIN
      theme_boec/static/description/banner.png
  17. BIN
      theme_boec/static/description/icon.png
  18. BIN
      theme_boec/static/description/images/1.jpg
  19. BIN
      theme_boec/static/description/images/2.jpg
  20. BIN
      theme_boec/static/description/images/3.jpg
  21. BIN
      theme_boec/static/description/images/4.jpg
  22. BIN
      theme_boec/static/description/images/5.jpg
  23. BIN
      theme_boec/static/description/images/6.jpg
  24. BIN
      theme_boec/static/description/images/Cybrosys.png
  25. BIN
      theme_boec/static/description/images/boec_deal.png
  26. BIN
      theme_boec/static/description/images/boec_hot_sales.png
  27. BIN
      theme_boec/static/description/images/cybro-logo-oca-no-text.png
  28. BIN
      theme_boec/static/description/images/cybro-logo-oca.png
  29. BIN
      theme_boec/static/description/images/demo-1.png
  30. BIN
      theme_boec/static/description/images/demo-2.jpg
  31. BIN
      theme_boec/static/description/images/demo-3.jpg
  32. BIN
      theme_boec/static/description/images/demo-4.jpg
  33. BIN
      theme_boec/static/description/images/demo-5.jpg
  34. BIN
      theme_boec/static/description/images/hero.png
  35. BIN
      theme_boec/static/description/images/laptop-screenshots.jpg
  36. BIN
      theme_boec/static/description/images/new_arrivals.jpg
  37. BIN
      theme_boec/static/description/images/phone-screenshots.jpg
  38. 341
      theme_boec/static/description/index.html
  39. BIN
      theme_boec/static/description/theme.png
  40. 183
      theme_boec/static/src/css/owl_carousel_min.css
  41. 6
      theme_boec/static/src/css/owl_theme_default_min.css
  42. 6055
      theme_boec/static/src/css/style.css
  43. 38
      theme_boec/static/src/css/style.css.map
  44. 127
      theme_boec/static/src/css/style.scss
  45. BIN
      theme_boec/static/src/images/about/about.jpg
  46. BIN
      theme_boec/static/src/images/about/client/1.png
  47. BIN
      theme_boec/static/src/images/about/client/2.png
  48. BIN
      theme_boec/static/src/images/about/client/3.png
  49. BIN
      theme_boec/static/src/images/about/client/4.png
  50. BIN
      theme_boec/static/src/images/about/client/5.png
  51. BIN
      theme_boec/static/src/images/about/client/6.png
  52. BIN
      theme_boec/static/src/images/about/client/7.png
  53. BIN
      theme_boec/static/src/images/about/client/8.png
  54. BIN
      theme_boec/static/src/images/about/p-img.jpg
  55. BIN
      theme_boec/static/src/images/about/team/t-1 (1).jpg
  56. BIN
      theme_boec/static/src/images/about/team/t-1 (2).jpg
  57. BIN
      theme_boec/static/src/images/about/team/t-1 (3).jpg
  58. BIN
      theme_boec/static/src/images/about/team/t-1 (4).jpg
  59. BIN
      theme_boec/static/src/images/about/test-bg.jpg
  60. BIN
      theme_boec/static/src/images/banner/banner1.jpg
  61. BIN
      theme_boec/static/src/images/banner/banner2.jpg
  62. BIN
      theme_boec/static/src/images/banner/banner3.jpg
  63. BIN
      theme_boec/static/src/images/banner/blog-bg.jpg
  64. BIN
      theme_boec/static/src/images/blog/1.jpg
  65. BIN
      theme_boec/static/src/images/blog/2.jpg
  66. BIN
      theme_boec/static/src/images/blog/3.jpg
  67. BIN
      theme_boec/static/src/images/blog/4.jpg
  68. BIN
      theme_boec/static/src/images/blog/5.jpg
  69. BIN
      theme_boec/static/src/images/blog/6.jpg
  70. BIN
      theme_boec/static/src/images/blog/7.jpg
  71. BIN
      theme_boec/static/src/images/blog/8.jpg
  72. BIN
      theme_boec/static/src/images/blog/9.jpg
  73. BIN
      theme_boec/static/src/images/blog/blog-detail.jpg
  74. BIN
      theme_boec/static/src/images/carty/j-kelly-brito-dDLiE0fxEXk-unsplash.jpg
  75. BIN
      theme_boec/static/src/images/carty/kris-gerhard-0BKZfcamvGg-unsplash.jpg
  76. BIN
      theme_boec/static/src/images/carty/w.png
  77. BIN
      theme_boec/static/src/images/deal/deal.jpg
  78. BIN
      theme_boec/static/src/images/deal/deal.png
  79. BIN
      theme_boec/static/src/images/demo-product/dp1.jpg
  80. BIN
      theme_boec/static/src/images/demo-product/dp111.jpg
  81. BIN
      theme_boec/static/src/images/demo-product/dp2.jpg
  82. BIN
      theme_boec/static/src/images/demo-product/dp3.jpg
  83. BIN
      theme_boec/static/src/images/demo-product/light-up-sneakers-women.jpg
  84. BIN
      theme_boec/static/src/images/icons/master.png
  85. BIN
      theme_boec/static/src/images/icons/menu.png
  86. BIN
      theme_boec/static/src/images/icons/payment.png
  87. BIN
      theme_boec/static/src/images/icons/visa.png
  88. BIN
      theme_boec/static/src/images/insta/1 (1).jpg
  89. BIN
      theme_boec/static/src/images/insta/1 (2).jpg
  90. BIN
      theme_boec/static/src/images/insta/1 (3).jpg
  91. BIN
      theme_boec/static/src/images/insta/1 (4).jpg
  92. BIN
      theme_boec/static/src/images/insta/1 (5).jpg
  93. BIN
      theme_boec/static/src/images/insta/1 (6).jpg
  94. BIN
      theme_boec/static/src/images/insta/2 (1).jpg
  95. BIN
      theme_boec/static/src/images/insta/2 (2).jpg
  96. BIN
      theme_boec/static/src/images/insta/2 (3).jpg
  97. BIN
      theme_boec/static/src/images/logo/logo.png
  98. BIN
      theme_boec/static/src/images/product-preview/1 (1).jpg
  99. BIN
      theme_boec/static/src/images/product-preview/1 (2).jpg
  100. BIN
      theme_boec/static/src/images/product-preview/1 (3).jpg

46
theme_boec/README.rst

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

23
theme_boec/__init__.py

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

87
theme_boec/__manifest__.py

@ -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&amp;family=Montserrat&amp;display=swap"
],
},
'images': [
'static/description/banner.png',
'static/description/theme.png',
],
'license': 'AGPL-3',
'installable': True,
'auto_install': False,
'application': False,
}

23
theme_boec/controllers/__init__.py

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

240
theme_boec/controllers/brand_filter_controller.py

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

62
theme_boec/controllers/product_snippets.py

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

8
theme_boec/data/boec_config_data.xml

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

6
theme_boec/doc/RELEASE_NOTES.md

@ -0,0 +1,6 @@
## Module <theme_boec>
#### 26.12.2023
#### Version 17.0.1.0.0
#### ADD
- Initial commit for Theme Boec

26
theme_boec/models/__init__.py

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

37
theme_boec/models/boec_config.py

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

37
theme_boec/models/product_brand.py

@ -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.')

37
theme_boec/models/product_template.py

@ -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.')

53
theme_boec/models/theme_utils.py

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

31
theme_boec/models/website.py

@ -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([])

3
theme_boec/security/ir.model.access.csv

@ -0,0 +1,3 @@
id,name,model_id/id,group_id/id,perm_read,perm_write,perm_create,perm_unlink
access_product_brand_user,access.product.brand.user,model_product_brand,,1,1,1,1
access_boec_config_user,access.boec.config.user,model_boec_config,base.group_user,1,1,1,1
1 id name model_id/id group_id/id perm_read perm_write perm_create perm_unlink
2 access_product_brand_user access.product.brand.user model_product_brand 1 1 1 1
3 access_boec_config_user access.boec.config.user model_boec_config base.group_user 1 1 1 1

BIN
theme_boec/static/description/banner.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 204 KiB

BIN
theme_boec/static/description/icon.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

BIN
theme_boec/static/description/images/1.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 323 KiB

BIN
theme_boec/static/description/images/2.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 277 KiB

BIN
theme_boec/static/description/images/3.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 MiB

BIN
theme_boec/static/description/images/4.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 146 KiB

BIN
theme_boec/static/description/images/5.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 272 KiB

BIN
theme_boec/static/description/images/6.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 236 KiB

BIN
theme_boec/static/description/images/Cybrosys.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 51 KiB

BIN
theme_boec/static/description/images/boec_deal.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 361 KiB

BIN
theme_boec/static/description/images/boec_hot_sales.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 596 KiB

BIN
theme_boec/static/description/images/cybro-logo-oca-no-text.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

BIN
theme_boec/static/description/images/cybro-logo-oca.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

BIN
theme_boec/static/description/images/demo-1.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 MiB

BIN
theme_boec/static/description/images/demo-2.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 348 KiB

BIN
theme_boec/static/description/images/demo-3.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 231 KiB

BIN
theme_boec/static/description/images/demo-4.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 386 KiB

BIN
theme_boec/static/description/images/demo-5.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 360 KiB

BIN
theme_boec/static/description/images/hero.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 380 KiB

BIN
theme_boec/static/description/images/laptop-screenshots.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 542 KiB

BIN
theme_boec/static/description/images/new_arrivals.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 323 KiB

BIN
theme_boec/static/description/images/phone-screenshots.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 632 KiB

341
theme_boec/static/description/index.html

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

BIN
theme_boec/static/description/theme.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 463 KiB

183
theme_boec/static/src/css/owl_carousel_min.css

@ -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%;
}

6
theme_boec/static/src/css/owl_theme_default_min.css

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

6055
theme_boec/static/src/css/style.css

File diff suppressed because it is too large

38
theme_boec/static/src/css/style.css.map

File diff suppressed because one or more lines are too long

127
theme_boec/static/src/css/style.scss

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

BIN
theme_boec/static/src/images/about/about.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 280 KiB

BIN
theme_boec/static/src/images/about/client/1.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 67 KiB

BIN
theme_boec/static/src/images/about/client/2.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 147 KiB

BIN
theme_boec/static/src/images/about/client/3.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 114 KiB

BIN
theme_boec/static/src/images/about/client/4.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 104 KiB

BIN
theme_boec/static/src/images/about/client/5.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 114 KiB

BIN
theme_boec/static/src/images/about/client/6.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

BIN
theme_boec/static/src/images/about/client/7.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

BIN
theme_boec/static/src/images/about/client/8.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 138 KiB

BIN
theme_boec/static/src/images/about/p-img.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 85 KiB

BIN
theme_boec/static/src/images/about/team/t-1 (1).jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 87 KiB

BIN
theme_boec/static/src/images/about/team/t-1 (2).jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 161 KiB

BIN
theme_boec/static/src/images/about/team/t-1 (3).jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 87 KiB

BIN
theme_boec/static/src/images/about/team/t-1 (4).jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 708 KiB

BIN
theme_boec/static/src/images/about/test-bg.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 MiB

BIN
theme_boec/static/src/images/banner/banner1.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 287 KiB

BIN
theme_boec/static/src/images/banner/banner2.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 304 KiB

BIN
theme_boec/static/src/images/banner/banner3.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 267 KiB

BIN
theme_boec/static/src/images/banner/blog-bg.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 201 KiB

BIN
theme_boec/static/src/images/blog/1.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 175 KiB

BIN
theme_boec/static/src/images/blog/2.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 136 KiB

BIN
theme_boec/static/src/images/blog/3.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 114 KiB

BIN
theme_boec/static/src/images/blog/4.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 185 KiB

BIN
theme_boec/static/src/images/blog/5.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 169 KiB

BIN
theme_boec/static/src/images/blog/6.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 163 KiB

BIN
theme_boec/static/src/images/blog/7.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 118 KiB

BIN
theme_boec/static/src/images/blog/8.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 209 KiB

BIN
theme_boec/static/src/images/blog/9.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 149 KiB

BIN
theme_boec/static/src/images/blog/blog-detail.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 608 KiB

BIN
theme_boec/static/src/images/carty/j-kelly-brito-dDLiE0fxEXk-unsplash.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 71 KiB

BIN
theme_boec/static/src/images/carty/kris-gerhard-0BKZfcamvGg-unsplash.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 142 KiB

BIN
theme_boec/static/src/images/carty/w.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 168 KiB

BIN
theme_boec/static/src/images/deal/deal.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 198 KiB

BIN
theme_boec/static/src/images/deal/deal.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1006 KiB

BIN
theme_boec/static/src/images/demo-product/dp1.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 53 KiB

BIN
theme_boec/static/src/images/demo-product/dp111.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 150 KiB

BIN
theme_boec/static/src/images/demo-product/dp2.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 123 KiB

BIN
theme_boec/static/src/images/demo-product/dp3.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 100 KiB

BIN
theme_boec/static/src/images/demo-product/light-up-sneakers-women.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 53 KiB

BIN
theme_boec/static/src/images/icons/master.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

BIN
theme_boec/static/src/images/icons/menu.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

BIN
theme_boec/static/src/images/icons/payment.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 133 KiB

BIN
theme_boec/static/src/images/icons/visa.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

BIN
theme_boec/static/src/images/insta/1 (1).jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 149 KiB

BIN
theme_boec/static/src/images/insta/1 (2).jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 221 KiB

BIN
theme_boec/static/src/images/insta/1 (3).jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 530 KiB

BIN
theme_boec/static/src/images/insta/1 (4).jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 110 KiB

BIN
theme_boec/static/src/images/insta/1 (5).jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 93 KiB

BIN
theme_boec/static/src/images/insta/1 (6).jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 98 KiB

BIN
theme_boec/static/src/images/insta/2 (1).jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 236 KiB

BIN
theme_boec/static/src/images/insta/2 (2).jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 121 KiB

BIN
theme_boec/static/src/images/insta/2 (3).jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 161 KiB

BIN
theme_boec/static/src/images/logo/logo.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

BIN
theme_boec/static/src/images/product-preview/1 (1).jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 MiB

BIN
theme_boec/static/src/images/product-preview/1 (2).jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 MiB

BIN
theme_boec/static/src/images/product-preview/1 (3).jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 MiB

Some files were not shown because too many files changed in this diff

Loading…
Cancel
Save