@ -0,0 +1,24 @@ |
|||||
|
# -*- coding: utf-8 -*- |
||||
|
############################################################################# |
||||
|
# |
||||
|
# Cybrosys Technologies Pvt. Ltd. |
||||
|
# |
||||
|
# Copyright (C) 2021-TODAY Cybrosys Technologies(<https://www.cybrosys.com>) |
||||
|
# Author: Cybrosys Techno Solutions(<https://www.cybrosys.com>) |
||||
|
# |
||||
|
# You can modify it under the terms of the GNU LESSER |
||||
|
# GENERAL PUBLIC LICENSE (LGPL 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 LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details. |
||||
|
# |
||||
|
# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE |
||||
|
# (LGPL v3) along with this program. |
||||
|
# If not, see <http://www.gnu.org/licenses/>. |
||||
|
# |
||||
|
############################################################################# |
||||
|
|
||||
|
from . import controller |
||||
|
from . import models |
@ -0,0 +1,69 @@ |
|||||
|
# -*- coding: utf-8 -*- |
||||
|
############################################################################# |
||||
|
# |
||||
|
# Cybrosys Technologies Pvt. Ltd. |
||||
|
# |
||||
|
# Copyright (C) 2021-TODAY Cybrosys Technologies(<https://www.cybrosys.com>) |
||||
|
# Author: Cybrosys Techno Solutions(<https://www.cybrosys.com>) |
||||
|
# |
||||
|
# You can modify it under the terms of the GNU LESSER |
||||
|
# GENERAL PUBLIC LICENSE (LGPL 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 LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details. |
||||
|
# |
||||
|
# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE |
||||
|
# (LGPL v3) along with this program. |
||||
|
# If not, see <http://www.gnu.org/licenses/>. |
||||
|
# |
||||
|
############################################################################# |
||||
|
|
||||
|
{ |
||||
|
'name': 'Theme Classic Store', |
||||
|
'description': 'Theme Classic Store for Odoo Website and e-Commerce', |
||||
|
'summary': 'Theme Classic Store is an attractive eCommerce Website theme. ' |
||||
|
'The theme comes with many useful and stylish snippets', |
||||
|
'version': '14.0.1.0.0', |
||||
|
'author': 'Cybrosys Techno Solutions', |
||||
|
'company': 'Cybrosys Techno Solutions', |
||||
|
'maintainer': 'Cybrosys Techno Solutions', |
||||
|
'website': 'https://www.cybrosys.com', |
||||
|
'category': 'Theme/eCommerce', |
||||
|
'depends': ['website_blog', 'website_sale_wishlist', 'website_sale_comparison'], |
||||
|
'data': [ |
||||
|
'views/classic_store_config.xml', |
||||
|
'data/classic_store_config_data.xml', |
||||
|
'security/ir.model.access.csv', |
||||
|
'views/layout.xml', |
||||
|
'views/assets.xml', |
||||
|
'views/footer.xml', |
||||
|
'views/header.xml', |
||||
|
'views/contact_us.xml', |
||||
|
'views/blog.xml', |
||||
|
'views/shop.xml', |
||||
|
'views/shop_sidebar.xml', |
||||
|
'views/404.xml', |
||||
|
'views/product_view.xml', |
||||
|
'views/product_view_inherits.xml', |
||||
|
'views/snippets/about.xml', |
||||
|
'views/snippets/banner.xml', |
||||
|
'views/snippets/categories.xml', |
||||
|
'views/snippets/listing.xml', |
||||
|
'views/snippets/package.xml', |
||||
|
'views/snippets/team.xml', |
||||
|
'views/snippets/counter.xml', |
||||
|
'views/snippets/sub_header.xml', |
||||
|
'views/snippets/search.xml', |
||||
|
'views/snippets/trending.xml', |
||||
|
], |
||||
|
'images': [ |
||||
|
'static/description/banner.png', |
||||
|
'static/description/theme_screenshot.png', |
||||
|
], |
||||
|
'license': 'LGPL-3', |
||||
|
'installable': True, |
||||
|
'application': False, |
||||
|
'auto_install': False, |
||||
|
} |
@ -0,0 +1,25 @@ |
|||||
|
# -*- coding: utf-8 -*- |
||||
|
############################################################################# |
||||
|
# |
||||
|
# Cybrosys Technologies Pvt. Ltd. |
||||
|
# |
||||
|
# Copyright (C) 2021-TODAY Cybrosys Technologies(<https://www.cybrosys.com>) |
||||
|
# Author: Cybrosys Techno Solutions(<https://www.cybrosys.com>) |
||||
|
# |
||||
|
# You can modify it under the terms of the GNU LESSER |
||||
|
# GENERAL PUBLIC LICENSE (LGPL 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 LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details. |
||||
|
# |
||||
|
# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE |
||||
|
# (LGPL v3) along with this program. |
||||
|
# If not, see <http://www.gnu.org/licenses/>. |
||||
|
# |
||||
|
############################################################################# |
||||
|
|
||||
|
from . import s_category |
||||
|
from . import price_filter |
||||
|
from . import s_trending |
@ -0,0 +1,161 @@ |
|||||
|
# -*- coding: utf-8 -*- |
||||
|
############################################################################# |
||||
|
# |
||||
|
# Cybrosys Technologies Pvt. Ltd. |
||||
|
# |
||||
|
# Copyright (C) 2021-TODAY Cybrosys Technologies(<https://www.cybrosys.com>) |
||||
|
# Author: Cybrosys Techno Solutions(<https://www.cybrosys.com>) |
||||
|
# |
||||
|
# You can modify it under the terms of the GNU LESSER |
||||
|
# GENERAL PUBLIC LICENSE (LGPL 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 LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details. |
||||
|
# |
||||
|
# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE |
||||
|
# (LGPL v3) along with this program. |
||||
|
# If not, see <http://www.gnu.org/licenses/>. |
||||
|
# |
||||
|
############################################################################# |
||||
|
|
||||
|
from werkzeug.exceptions import NotFound |
||||
|
from odoo.addons.http_routing.models.ir_http import slug |
||||
|
from odoo.addons.website.controllers.main import QueryURL |
||||
|
from odoo.addons.website_sale.controllers.main import TableCompute, WebsiteSale |
||||
|
from odoo import http |
||||
|
from odoo.http import request |
||||
|
|
||||
|
|
||||
|
class PriceFilter(WebsiteSale): |
||||
|
|
||||
|
@http.route() |
||||
|
def shop(self, page=0, category=None, search='', ppg=False, **post): |
||||
|
"""Override WebsiteSale shop for Price Filter""" |
||||
|
maximum = minimum = 0 |
||||
|
add_qty = int(post.get('add_qty', 1)) |
||||
|
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 |
||||
|
|
||||
|
if ppg: |
||||
|
try: |
||||
|
ppg = int(ppg) |
||||
|
post['ppg'] = ppg |
||||
|
except ValueError: |
||||
|
ppg = False |
||||
|
if not ppg: |
||||
|
ppg = request.env['website'].get_current_website().shop_ppg or 20 |
||||
|
|
||||
|
ppr = request.env['website'].get_current_website().shop_ppr or 4 |
||||
|
|
||||
|
product_ids = request.env['product.template'].search( |
||||
|
['&', ('sale_ok', '=', True), ('active', '=', True)]) |
||||
|
|
||||
|
if product_ids and product_ids.ids: |
||||
|
request.cr.execute( |
||||
|
'select min(list_price),max(list_price) from product_template where id in %s', |
||||
|
(tuple(product_ids.ids),)) |
||||
|
list_prices = request.cr.fetchall() |
||||
|
|
||||
|
minimum = list_prices[0][0] |
||||
|
maximum = list_prices[0][1] |
||||
|
|
||||
|
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} |
||||
|
|
||||
|
domain = self._get_search_domain(search, category, attrib_values) |
||||
|
|
||||
|
if post.get('minimum') and post.get('maximum'): |
||||
|
domain = domain + [('list_price', '>=', float(post.get('minimum'))), |
||||
|
('list_price', '<=', float(post.get('maximum')))] |
||||
|
|
||||
|
keep = QueryURL('/shop', category=category and int(category), |
||||
|
search=search, attrib=attrib_list, |
||||
|
order=post.get('order'), minimum=post.get('minimum'), |
||||
|
maximum=post.get('maximum')) |
||||
|
|
||||
|
pricelist_context, pricelist = self._get_pricelist_context() |
||||
|
|
||||
|
request.context = dict(request.context, pricelist=pricelist.id, |
||||
|
partner=request.env.user.partner_id) |
||||
|
|
||||
|
url = "/shop" |
||||
|
if search: |
||||
|
post["search"] = search |
||||
|
if attrib_list: |
||||
|
post['attrib'] = attrib_list |
||||
|
|
||||
|
Product = request.env['product.template'].with_context(bin_size=True) |
||||
|
|
||||
|
search_product = Product.search(domain, |
||||
|
order=self._get_search_order(post)) |
||||
|
website_domain = request.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 = Category.search(categs_domain) |
||||
|
|
||||
|
if category: |
||||
|
url = "/shop/category/%s" % slug(category) |
||||
|
|
||||
|
product_count = len(search_product) |
||||
|
pager = request.website.pager(url=url, total=product_count, page=page, |
||||
|
step=ppg, scope=7, url_args=post) |
||||
|
offset = pager['offset'] |
||||
|
products = search_product[offset: offset + ppg] |
||||
|
|
||||
|
ProductAttribute = request.env['product.attribute'] |
||||
|
if products: |
||||
|
# get all products without limit |
||||
|
attributes = ProductAttribute.search( |
||||
|
[('product_tmpl_ids', 'in', search_product.ids)]) |
||||
|
else: |
||||
|
attributes = ProductAttribute.browse(attributes_ids) |
||||
|
|
||||
|
layout_mode = request.session.get('website_sale_shop_layout_mode') |
||||
|
if not layout_mode: |
||||
|
if request.website.viewref( |
||||
|
'website_sale.products_list_view').active: |
||||
|
layout_mode = 'list' |
||||
|
else: |
||||
|
layout_mode = 'grid' |
||||
|
|
||||
|
values = { |
||||
|
'search': search, |
||||
|
'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': 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, |
||||
|
'minimum': minimum, |
||||
|
'maximum': maximum, |
||||
|
|
||||
|
} |
||||
|
if category: |
||||
|
values['main_object'] = category |
||||
|
return request.render("website_sale.products", values) |
@ -0,0 +1,60 @@ |
|||||
|
# -*- coding: utf-8 -*- |
||||
|
############################################################################# |
||||
|
# |
||||
|
# Cybrosys Technologies Pvt. Ltd. |
||||
|
# |
||||
|
# Copyright (C) 2021-TODAY Cybrosys Technologies(<https://www.cybrosys.com>) |
||||
|
# Author: Cybrosys Techno Solutions(<https://www.cybrosys.com>) |
||||
|
# |
||||
|
# You can modify it under the terms of the GNU LESSER |
||||
|
# GENERAL PUBLIC LICENSE (LGPL 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 LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details. |
||||
|
# |
||||
|
# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE |
||||
|
# (LGPL v3) along with this program. |
||||
|
# If not, see <http://www.gnu.org/licenses/>. |
||||
|
# |
||||
|
############################################################################# |
||||
|
|
||||
|
from odoo import http |
||||
|
from odoo.http import request |
||||
|
|
||||
|
|
||||
|
class WebsiteClassicCategory(http.Controller): |
||||
|
|
||||
|
@http.route('/classic_product_category', auth="public", type='json', |
||||
|
website=True) |
||||
|
def get_product_categories(self): |
||||
|
product_ids = request.env['product.template'].sudo().search( |
||||
|
[('website_published', '=', True)]) |
||||
|
|
||||
|
product_category_ids = request.env[ |
||||
|
'product.public.category'].sudo().search([]) |
||||
|
|
||||
|
product_categories_main_list = [] |
||||
|
for rec in product_category_ids: |
||||
|
if rec.child_id: |
||||
|
product_categories_main_list.append(rec) |
||||
|
|
||||
|
category_counter = {} |
||||
|
for rec in product_category_ids: |
||||
|
category_counter[rec] = 0 |
||||
|
|
||||
|
for rec in product_ids: |
||||
|
for cat in rec.public_categ_ids: |
||||
|
if cat in product_category_ids: |
||||
|
category_counter[cat] += 1 |
||||
|
|
||||
|
values = { |
||||
|
'product_categories_main': product_categories_main_list, |
||||
|
'counter': category_counter |
||||
|
} |
||||
|
|
||||
|
response = http.Response( |
||||
|
template='theme_classic_store.s_classic_store_categories', |
||||
|
qcontext=values) |
||||
|
return response.render() |
@ -0,0 +1,64 @@ |
|||||
|
# -*- coding: utf-8 -*- |
||||
|
############################################################################# |
||||
|
# |
||||
|
# Cybrosys Technologies Pvt. Ltd. |
||||
|
# |
||||
|
# Copyright (C) 2021-TODAY Cybrosys Technologies(<https://www.cybrosys.com>) |
||||
|
# Author: Cybrosys Techno Solutions(<https://www.cybrosys.com>) |
||||
|
# |
||||
|
# You can modify it under the terms of the GNU LESSER |
||||
|
# GENERAL PUBLIC LICENSE (LGPL 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 LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details. |
||||
|
# |
||||
|
# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE |
||||
|
# (LGPL v3) along with this program. |
||||
|
# If not, see <http://www.gnu.org/licenses/>. |
||||
|
# |
||||
|
############################################################################# |
||||
|
|
||||
|
from odoo import http, fields |
||||
|
from odoo.http import request |
||||
|
import datetime |
||||
|
|
||||
|
|
||||
|
class WebsiteClassicTrending(http.Controller): |
||||
|
|
||||
|
@http.route('/classic_product_trending', auth="public", type='json', |
||||
|
website=True) |
||||
|
def get_trending_products(self): |
||||
|
|
||||
|
classic_config = request.env[ |
||||
|
'classic_store.config'].sudo().search([]) |
||||
|
trending_products = classic_config.trending_product_ids |
||||
|
|
||||
|
if not trending_products: |
||||
|
products = request.env['product.template'].sudo().search([]) |
||||
|
for each in products: |
||||
|
each.views = 0 |
||||
|
each.most_viewed = False |
||||
|
date = fields.Datetime.now() |
||||
|
date_before = date - datetime.timedelta(days=7) |
||||
|
products = request.env['website.track'].sudo().search( |
||||
|
[('visit_datetime', '<=', date), |
||||
|
('visit_datetime', '>=', date_before), |
||||
|
('product_id', '!=', False)]) |
||||
|
for pro in products: |
||||
|
pro.product_id.views = pro.product_id.views + 1 |
||||
|
|
||||
|
trending_products = request.env['product.template'].sudo().search( |
||||
|
[('is_published', '=', True), |
||||
|
('views', '!=', 0)], |
||||
|
order='views desc', limit=4) |
||||
|
|
||||
|
values = { |
||||
|
'trending_products': trending_products |
||||
|
} |
||||
|
|
||||
|
response = http.Response( |
||||
|
template='theme_classic_store.s_classic_store_trending', |
||||
|
qcontext=values) |
||||
|
return response.render() |
@ -0,0 +1,9 @@ |
|||||
|
<?xml version="1.0" encoding="UTF-8" ?> |
||||
|
<odoo> |
||||
|
<data noupdate="1"> |
||||
|
<record id="classic_store_config_data" model="classic_store.config"> |
||||
|
<field name="name">Classic Store Configuration</field> |
||||
|
<field name="max_price">100000</field> |
||||
|
</record> |
||||
|
</data> |
||||
|
</odoo> |
@ -0,0 +1,24 @@ |
|||||
|
# -*- coding: utf-8 -*- |
||||
|
############################################################################# |
||||
|
# |
||||
|
# Cybrosys Technologies Pvt. Ltd. |
||||
|
# |
||||
|
# Copyright (C) 2021-TODAY Cybrosys Technologies(<https://www.cybrosys.com>) |
||||
|
# Author: Cybrosys Techno Solutions(<https://www.cybrosys.com>) |
||||
|
# |
||||
|
# You can modify it under the terms of the GNU LESSER |
||||
|
# GENERAL PUBLIC LICENSE (LGPL 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 LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details. |
||||
|
# |
||||
|
# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE |
||||
|
# (LGPL v3) along with this program. |
||||
|
# If not, see <http://www.gnu.org/licenses/>. |
||||
|
# |
||||
|
############################################################################# |
||||
|
|
||||
|
from . import product_category |
||||
|
from . import classic_store_config |
@ -0,0 +1,67 @@ |
|||||
|
# -*- coding: utf-8 -*- |
||||
|
############################################################################# |
||||
|
# |
||||
|
# Cybrosys Technologies Pvt. Ltd. |
||||
|
# |
||||
|
# Copyright (C) 2021-TODAY Cybrosys Technologies(<https://www.cybrosys.com>) |
||||
|
# Author: Cybrosys Techno Solutions(<https://www.cybrosys.com>) |
||||
|
# |
||||
|
# You can modify it under the terms of the GNU LESSER |
||||
|
# GENERAL PUBLIC LICENSE (LGPL 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 LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details. |
||||
|
# |
||||
|
# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE |
||||
|
# (LGPL v3) along with this program. |
||||
|
# If not, see <http://www.gnu.org/licenses/>. |
||||
|
# |
||||
|
############################################################################# |
||||
|
|
||||
|
from odoo import models, fields |
||||
|
|
||||
|
|
||||
|
class ClassicStoreConfig(models.Model): |
||||
|
_name = 'classic_store.config' |
||||
|
|
||||
|
name = fields.Char('Name') |
||||
|
max_price = fields.Integer(string="Maximum Price", default=100000, |
||||
|
help="Maximum amount to apply in product filter.") |
||||
|
|
||||
|
trending_product_ids = fields.Many2many('product.template', |
||||
|
string="Trending Products", |
||||
|
help="Manually enter trending " |
||||
|
"products or leave the field " |
||||
|
"blank to automatically " |
||||
|
"add the trending products.", |
||||
|
domain=[ |
||||
|
('is_published', '=', True)]) |
||||
|
|
||||
|
|
||||
|
class ThemeClassicStore(models.AbstractModel): |
||||
|
_inherit = 'theme.utils' |
||||
|
|
||||
|
def _theme_classic_store(self, mod): |
||||
|
self.disable_view('website_sale_comparison.add_to_compare') |
||||
|
self.disable_view('website_sale_comparison.product_attributes_body') |
||||
|
self.disable_view('website_sale.add_grid_or_list_option') |
||||
|
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_images_full') |
||||
|
self.disable_view('website_sale.products_list_view') |
||||
|
self.disable_view('website_sale.recommended_products') |
||||
|
self.disable_view('website_sale.product_picture_magnify_auto') |
||||
|
self.disable_view('website_sale.product_buy_now') |
||||
|
self.disable_view('website_sale.product_comment') |
||||
|
self.disable_view('website_sale.product_picture_magnify') |
||||
|
self.disable_view('website_sale.product_variants') |
||||
|
self.disable_view('website_sale_comparison.product_attributes_body') |
||||
|
self.disable_view('website_sale.recently_viewed_products_product') |
||||
|
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') |
@ -0,0 +1,47 @@ |
|||||
|
# -*- coding: utf-8 -*- |
||||
|
############################################################################# |
||||
|
# |
||||
|
# Cybrosys Technologies Pvt. Ltd. |
||||
|
# |
||||
|
# Copyright (C) 2021-TODAY Cybrosys Technologies(<https://www.cybrosys.com>) |
||||
|
# Author: Cybrosys Techno Solutions(<https://www.cybrosys.com>) |
||||
|
# |
||||
|
# You can modify it under the terms of the GNU LESSER |
||||
|
# GENERAL PUBLIC LICENSE (LGPL 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 LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details. |
||||
|
# |
||||
|
# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE |
||||
|
# (LGPL v3) along with this program. |
||||
|
# If not, see <http://www.gnu.org/licenses/>. |
||||
|
# |
||||
|
############################################################################# |
||||
|
|
||||
|
from odoo import models, fields |
||||
|
|
||||
|
|
||||
|
class ProductPublicCategory(models.Model): |
||||
|
_inherit = 'product.public.category' |
||||
|
|
||||
|
category_count = fields.Integer("Count", compute="_compute_category_count") |
||||
|
|
||||
|
def _compute_category_count(self): |
||||
|
for ct in self: |
||||
|
product_ids = self.env['product.template'].search( |
||||
|
[('website_published', '=', True)]) |
||||
|
count = 0 |
||||
|
for rec in product_ids: |
||||
|
for cat in rec.public_categ_ids: |
||||
|
if cat in ct: |
||||
|
count += 1 |
||||
|
ct.category_count = count |
||||
|
|
||||
|
|
||||
|
class Product(models.Model): |
||||
|
_inherit = 'product.template' |
||||
|
|
||||
|
views = fields.Integer('Views') |
||||
|
most_viewed = fields.Boolean('Most Viewed') |
|
After Width: | Height: | Size: 138 KiB |
After Width: | Height: | Size: 24 KiB |
After Width: | Height: | Size: 322 KiB |
After Width: | Height: | Size: 342 KiB |
After Width: | Height: | Size: 440 KiB |
After Width: | Height: | Size: 274 KiB |
After Width: | Height: | Size: 363 KiB |
After Width: | Height: | Size: 383 KiB |
After Width: | Height: | Size: 51 KiB |
After Width: | Height: | Size: 76 KiB |
After Width: | Height: | Size: 10 KiB |
After Width: | Height: | Size: 28 KiB |
After Width: | Height: | Size: 244 KiB |
After Width: | Height: | Size: 360 KiB |
After Width: | Height: | Size: 265 KiB |
After Width: | Height: | Size: 204 KiB |
After Width: | Height: | Size: 267 KiB |
After Width: | Height: | Size: 361 KiB |
After Width: | Height: | Size: 522 KiB |
After Width: | Height: | Size: 636 KiB |
@ -0,0 +1,295 @@ |
|||||
|
<!-- Hero Section --> |
||||
|
<div class="container pt-4 mt-4 rounded" style="background-color: #f0f2f4; 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 Classic Store</h1> |
||||
|
<p class="lead mb-4" style="max-width: 700px; margin: 0 auto;"> |
||||
|
Theme Classic Store is an attractive and unique front-end theme mainly suitable for eCommerce website. Many |
||||
|
custom designed snippets facilitates to add better user experience. Contains Categories Snippet with subcategories and its product count, Shop categories sidebar with product count, Shop price filter. This theme fully customized the eCommerce website, shop view, custom categories view, product view, contact-us page...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"> |
||||
|
Attractive webpages with elegant desktop view. User friendly and Modern looking theme makes your page more Stylish and Beautiful. |
||||
|
</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"> |
||||
|
The webpages are Stylish, Attractive and Easy to use in mobile view also. |
||||
|
</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"> |
||||
|
Stylish Home page which is easily customizable. Simple and attractive header with |
||||
|
page menus that has animated styles. |
||||
|
</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"> |
||||
|
Shop Page with additional features like Category sidebar with product counts and Price filter. |
||||
|
</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"> |
||||
|
Theme Classic Store is a simple and elegant theme for your odoo website. It is easy to customize and use. It comes with customizable snippets that can be dragged and dropped to make attractive webpages. |
||||
|
Simple and stylish header, footer and page banners. |
||||
|
</p> |
||||
|
</div> |
||||
|
</div> |
||||
|
<!-- End of One Column Section --> |
||||
|
|
||||
|
<!-- Categories Section --> |
||||
|
<div class="row p-4"> |
||||
|
<div class="col-lg-6" style="padding-top: 100px;"> |
||||
|
<h2>Categories</h2> |
||||
|
<p class="lead"> |
||||
|
Categories Snippet which shows all the main categories of the e-commerce shop with its sub categories and corresponding product count. The sequence of apperance, image and count is dynamically updated from backend data. |
||||
|
</p> |
||||
|
</div> |
||||
|
<div class="col-lg-6"> |
||||
|
<img style="border-radius: 0.5em;" src="images/categories.jpg" width="90%" height="auto" |
||||
|
class="mb-4 shadow-sm" alt="Theme Screenshot"> |
||||
|
</div> |
||||
|
</div> |
||||
|
<!-- End of Categories Section --> |
||||
|
|
||||
|
<!-- Two 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">Product Preview</h2> |
||||
|
<p class="lead text-center"> |
||||
|
Product preview page with simple and stylish display features and additional Product Details, Specification and Review Tabs. |
||||
|
</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</h2> |
||||
|
<p class="lead text-center"> |
||||
|
Blog Page with stylish banner and list view. |
||||
|
</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">About Us</h2> |
||||
|
<p class="lead text-center"> |
||||
|
About Us page which can be easily created and customized using snippets. |
||||
|
</p> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
<!-- End of Column 4 --> |
||||
|
</div> |
||||
|
<!-- End of Two Columns Section --> |
||||
|
|
||||
|
<!-- 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.jpg" 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-3.jpg" width="300px" height="auto"> |
||||
|
<h6 class="text-center my-3">Shop</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-2.jpg" width="300px" height="auto"> |
||||
|
<h6 class="text-center my-3">Blog</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">Product Preview</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 Us 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:info@cybrosys.com" target="_blank" |
||||
|
style="color: #050505; text-decoration: none;"><i |
||||
|
class="fa fa-envelope mr-2"></i>info@cybrosys.com</a></h6> |
||||
|
</div> |
||||
|
<div class="col-lg-4 d-flex justify-content-end" style="position: relative;"> |
||||
|
<h6><a href="mailto:info@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> |
After Width: | Height: | Size: 480 KiB |
@ -0,0 +1,29 @@ |
|||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
.page-link { |
||||
|
position: relative; |
||||
|
display: block; |
||||
|
padding: .5rem .75rem; |
||||
|
margin-left: -1px; |
||||
|
line-height: 1.25; |
||||
|
color: #763242 !important; |
||||
|
background-color: #fff; |
||||
|
border: 1px solid #dee2e6; |
||||
|
} |
||||
|
|
||||
|
.page-item.active .page-link { |
||||
|
z-index: 3; |
||||
|
color: #fff; |
||||
|
background-color: #c09f7f !important; |
||||
|
border-color: #c09f7f !important; |
||||
|
} |
||||
|
|
||||
|
.page-link:hover { |
||||
|
z-index: 2; |
||||
|
color: #0056b3; |
||||
|
text-decoration: none; |
||||
|
background-color: #763242 !important; |
||||
|
border-color: #dee2e6; |
||||
|
} |
@ -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-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 .5s ease-in-out}.owl-carousel .owl-item .owl-lazy{opacity:0;transition:opacity .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%;top: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 .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 .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} |
After Width: | Height: | Size: 304 KiB |
After Width: | Height: | Size: 491 KiB |
After Width: | Height: | Size: 1.9 MiB |
After Width: | Height: | Size: 19 KiB |
After Width: | Height: | Size: 3.3 KiB |
After Width: | Height: | Size: 4.0 KiB |
After Width: | Height: | Size: 2.1 MiB |
After Width: | Height: | Size: 3.6 MiB |
After Width: | Height: | Size: 2.6 MiB |
After Width: | Height: | Size: 670 KiB |
After Width: | Height: | Size: 812 KiB |
After Width: | Height: | Size: 2.7 MiB |
After Width: | Height: | Size: 2.7 KiB |
After Width: | Height: | Size: 3.8 MiB |
After Width: | Height: | Size: 43 KiB |
After Width: | Height: | Size: 211 KiB |
After Width: | Height: | Size: 272 KiB |
After Width: | Height: | Size: 1.4 MiB |
After Width: | Height: | Size: 1.2 MiB |
After Width: | Height: | Size: 635 KiB |
After Width: | Height: | Size: 5.5 MiB |
After Width: | Height: | Size: 1.7 MiB |
After Width: | Height: | Size: 4.6 MiB |
After Width: | Height: | Size: 1.2 KiB |
After Width: | Height: | Size: 1.5 KiB |
After Width: | Height: | Size: 1.5 KiB |
After Width: | Height: | Size: 6.2 KiB |
After Width: | Height: | Size: 8.4 KiB |
After Width: | Height: | Size: 5.6 KiB |
After Width: | Height: | Size: 11 KiB |
After Width: | Height: | Size: 458 KiB |
After Width: | Height: | Size: 161 KiB |
After Width: | Height: | Size: 235 KiB |
After Width: | Height: | Size: 299 KiB |
After Width: | Height: | Size: 26 KiB |
After Width: | Height: | Size: 28 KiB |
After Width: | Height: | Size: 25 KiB |
After Width: | Height: | Size: 20 KiB |
After Width: | Height: | Size: 21 KiB |
After Width: | Height: | Size: 27 KiB |
After Width: | Height: | Size: 18 KiB |
After Width: | Height: | Size: 17 KiB |
After Width: | Height: | Size: 32 KiB |
After Width: | Height: | Size: 32 KiB |
After Width: | Height: | Size: 718 KiB |
After Width: | Height: | Size: 2.0 MiB |
After Width: | Height: | Size: 23 KiB |
After Width: | Height: | Size: 17 KiB |
After Width: | Height: | Size: 18 KiB |
After Width: | Height: | Size: 50 KiB |
@ -0,0 +1,25 @@ |
|||||
|
odoo.define('theme_classic_store.price_filter', function (require) { |
||||
|
"use strict"; |
||||
|
|
||||
|
$(document).on("click", "#products_grid_before .price_filter_button", function(event){ |
||||
|
event.preventDefault(); |
||||
|
|
||||
|
var amounts = $("#amount").val().split("-"); |
||||
|
var min = amounts[0]; |
||||
|
var max = amounts[1]; |
||||
|
var max_amount = $("#classic_store_max_price").val(); |
||||
|
|
||||
|
if ((min == max_amount) && (max == max_amount)) { |
||||
|
$('#minimum').val(amounts[0]); |
||||
|
$('#maximum').val(amounts[1]); |
||||
|
} else if (min == max_amount){ |
||||
|
$('#minimum').val(0); |
||||
|
$('#maximum').val(max_amount); |
||||
|
} else { |
||||
|
$('#minimum').val(amounts[0]); |
||||
|
$('#maximum').val(amounts[1]); |
||||
|
} |
||||
|
|
||||
|
$("#products_grid_before form.js_attributes").submit(); |
||||
|
}); |
||||
|
}) |
@ -0,0 +1,18 @@ |
|||||
|
odoo.define('theme_classic_store.categories', function(require){ |
||||
|
'use strict'; |
||||
|
var Animation = require('website.content.snippets.animation'); |
||||
|
var ajax = require('web.ajax'); |
||||
|
|
||||
|
Animation.registry.categories = Animation.Class.extend({ |
||||
|
selector : '.categories', |
||||
|
start: function(){ |
||||
|
var self = this; |
||||
|
ajax.jsonRpc('/classic_product_category', 'call', {}) |
||||
|
.then(function (data) { |
||||
|
if(data){ |
||||
|
self.$target.empty().append(data); |
||||
|
} |
||||
|
}); |
||||
|
} |
||||
|
}); |
||||
|
}); |
@ -0,0 +1,63 @@ |
|||||
|
odoo.define('theme_classic_store.trending', function(require){ |
||||
|
'use strict'; |
||||
|
var Animation = require('website.content.snippets.animation'); |
||||
|
var ajax = require('web.ajax'); |
||||
|
|
||||
|
Animation.registry.trending = Animation.Class.extend({ |
||||
|
selector : '.trending', |
||||
|
start: function(){ |
||||
|
var self = this; |
||||
|
ajax.jsonRpc('/classic_product_trending', 'call', {}) |
||||
|
.then(function (data) { |
||||
|
if(data){ |
||||
|
self.$target.empty().append(data); |
||||
|
self.product_carousel(); |
||||
|
} |
||||
|
}); |
||||
|
}, |
||||
|
|
||||
|
product_carousel: function (autoplay=false, items=4, slider_timing=5000) { |
||||
|
var self= this; |
||||
|
$(".owl-carousel").owlCarousel( |
||||
|
{ |
||||
|
// animateOut: 'slideOutDown',
|
||||
|
// animateIn: 'flipInX',
|
||||
|
items: 3, |
||||
|
loop: true, |
||||
|
margin: 30, |
||||
|
stagePadding: 30, |
||||
|
smartSpeed: 450, |
||||
|
autoplay: true, |
||||
|
autoPlaySpeed: 1000, |
||||
|
autoPlayTimeout: 1000, |
||||
|
autoplayHoverPause: true, |
||||
|
onInitialized: self.counter(), |
||||
|
dots: true, |
||||
|
nav: true, |
||||
|
responsiveClass: true, |
||||
|
responsive: { |
||||
|
0: { |
||||
|
items: 1, |
||||
|
nav: true |
||||
|
}, |
||||
|
600: { |
||||
|
items: 2, |
||||
|
nav: false |
||||
|
}, |
||||
|
1000: { |
||||
|
items: 3, |
||||
|
nav: true, |
||||
|
loop: true |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
); |
||||
|
}, |
||||
|
counter: function() { |
||||
|
var buttons = $('.owl-dots button'); |
||||
|
buttons.each(function (index, item) { |
||||
|
$(item).find('span').text(index + 1); |
||||
|
}); |
||||
|
} |
||||
|
}); |
||||
|
}); |
@ -0,0 +1,38 @@ |
|||||
|
*:focus { |
||||
|
outline: 0 !important; |
||||
|
box-shadow: none !important; |
||||
|
} |
||||
|
|
||||
|
button:focus { |
||||
|
border: none; |
||||
|
outline: none; |
||||
|
} |
||||
|
button:active { |
||||
|
border: none; |
||||
|
outline: none; |
||||
|
box-shadow: none; |
||||
|
} |
||||
|
|
||||
|
*{ |
||||
|
list-style-type:none; |
||||
|
|
||||
|
font-family: $font-default; |
||||
|
font-size: 14px; |
||||
|
&:focus,&:active{ |
||||
|
outline: none !important; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
*:hover{ |
||||
|
-webkit-transition: 0.5s; |
||||
|
transition: 0.5s; |
||||
|
} |
||||
|
|
||||
|
h3{ |
||||
|
color: $color-brand2; |
||||
|
font-weight: 700; |
||||
|
font-size: $font-sub-heading; |
||||
|
letter-spacing: 0.05em; |
||||
|
text-align: center; |
||||
|
|
||||
|
} |
@ -0,0 +1,352 @@ |
|||||
|
/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */ |
||||
|
|
||||
|
/* Document |
||||
|
========================================================================== */ |
||||
|
|
||||
|
/** |
||||
|
* 1. Correct the line height in all browsers. |
||||
|
* 2. Prevent adjustments of font size after orientation changes in iOS. |
||||
|
*/ |
||||
|
|
||||
|
html { |
||||
|
line-height: 1.15; /* 1 */ |
||||
|
-webkit-text-size-adjust: 100%; /* 2 */ |
||||
|
} |
||||
|
|
||||
|
/* Sections |
||||
|
========================================================================== */ |
||||
|
|
||||
|
/** |
||||
|
* Remove the margin in all browsers. |
||||
|
*/ |
||||
|
|
||||
|
body { |
||||
|
margin: 0; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Render the `main` element consistently in IE. |
||||
|
*/ |
||||
|
|
||||
|
main { |
||||
|
display: block; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Correct the font size and margin on `h1` elements within `section` and |
||||
|
* `article` contexts in Chrome, Firefox, and Safari. |
||||
|
*/ |
||||
|
|
||||
|
h1 { |
||||
|
font-size: 2em; |
||||
|
margin: 0.67em 0; |
||||
|
} |
||||
|
|
||||
|
/* Grouping content |
||||
|
========================================================================== */ |
||||
|
|
||||
|
/** |
||||
|
* 1. Add the correct box sizing in Firefox. |
||||
|
* 2. Show the overflow in Edge and IE. |
||||
|
*/ |
||||
|
|
||||
|
hr { |
||||
|
box-sizing: content-box; /* 1 */ |
||||
|
height: 0; /* 1 */ |
||||
|
overflow: visible; /* 2 */ |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* 1. Correct the inheritance and scaling of font size in all browsers. |
||||
|
* 2. Correct the odd `em` font sizing in all browsers. |
||||
|
*/ |
||||
|
|
||||
|
pre { |
||||
|
font-family: monospace, monospace; /* 1 */ |
||||
|
font-size: 1em; /* 2 */ |
||||
|
} |
||||
|
|
||||
|
/* Text-level semantics |
||||
|
========================================================================== */ |
||||
|
|
||||
|
/** |
||||
|
* Remove the gray background on active links in IE 10. |
||||
|
*/ |
||||
|
|
||||
|
a { |
||||
|
background-color: transparent; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* 1. Remove the bottom border in Chrome 57- |
||||
|
* 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari. |
||||
|
*/ |
||||
|
|
||||
|
abbr[title] { |
||||
|
border-bottom: none; /* 1 */ |
||||
|
text-decoration: underline; /* 2 */ |
||||
|
text-decoration: underline dotted; /* 2 */ |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Add the correct font weight in Chrome, Edge, and Safari. |
||||
|
*/ |
||||
|
|
||||
|
b, |
||||
|
strong { |
||||
|
font-weight: bolder; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* 1. Correct the inheritance and scaling of font size in all browsers. |
||||
|
* 2. Correct the odd `em` font sizing in all browsers. |
||||
|
*/ |
||||
|
|
||||
|
code, |
||||
|
kbd, |
||||
|
samp { |
||||
|
font-family: monospace, monospace; /* 1 */ |
||||
|
font-size: 1em; /* 2 */ |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Add the correct font size in all browsers. |
||||
|
*/ |
||||
|
|
||||
|
small { |
||||
|
font-size: 80%; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Prevent `sub` and `sup` elements from affecting the line height in |
||||
|
* all browsers. |
||||
|
*/ |
||||
|
|
||||
|
sub, |
||||
|
sup { |
||||
|
font-size: 75%; |
||||
|
line-height: 0; |
||||
|
position: relative; |
||||
|
vertical-align: baseline; |
||||
|
} |
||||
|
|
||||
|
sub { |
||||
|
bottom: -0.25em; |
||||
|
} |
||||
|
|
||||
|
sup { |
||||
|
top: -0.5em; |
||||
|
} |
||||
|
|
||||
|
/* Embedded content |
||||
|
========================================================================== */ |
||||
|
|
||||
|
/** |
||||
|
* Remove the border on images inside links in IE 10. |
||||
|
*/ |
||||
|
|
||||
|
img { |
||||
|
border-style: none; |
||||
|
} |
||||
|
|
||||
|
/* Forms |
||||
|
========================================================================== */ |
||||
|
|
||||
|
/** |
||||
|
* 1. Change the font styles in all browsers. |
||||
|
* 2. Remove the margin in Firefox and Safari. |
||||
|
*/ |
||||
|
|
||||
|
button, |
||||
|
input, |
||||
|
optgroup, |
||||
|
select, |
||||
|
textarea { |
||||
|
font-family: inherit; /* 1 */ |
||||
|
font-size: 100%; /* 1 */ |
||||
|
line-height: 1.15; /* 1 */ |
||||
|
margin: 0; /* 2 */ |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Show the overflow in IE. |
||||
|
* 1. Show the overflow in Edge. |
||||
|
*/ |
||||
|
|
||||
|
button, |
||||
|
input { /* 1 */ |
||||
|
overflow: visible; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Remove the inheritance of text transform in Edge, Firefox, and IE. |
||||
|
* 1. Remove the inheritance of text transform in Firefox. |
||||
|
*/ |
||||
|
|
||||
|
button, |
||||
|
select { /* 1 */ |
||||
|
text-transform: none; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Correct the inability to style clickable types in iOS and Safari. |
||||
|
*/ |
||||
|
|
||||
|
button, |
||||
|
[type="button"], |
||||
|
[type="reset"], |
||||
|
[type="submit"] { |
||||
|
-webkit-appearance: button; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Remove the inner border and padding in Firefox. |
||||
|
*/ |
||||
|
|
||||
|
button::-moz-focus-inner, |
||||
|
[type="button"]::-moz-focus-inner, |
||||
|
[type="reset"]::-moz-focus-inner, |
||||
|
[type="submit"]::-moz-focus-inner { |
||||
|
border-style: none; |
||||
|
padding: 0; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Restore the focus styles unset by the previous rule. |
||||
|
*/ |
||||
|
|
||||
|
button:-moz-focusring, |
||||
|
[type="button"]:-moz-focusring, |
||||
|
[type="reset"]:-moz-focusring, |
||||
|
[type="submit"]:-moz-focusring { |
||||
|
outline: 1px dotted ButtonText; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Correct the padding in Firefox. |
||||
|
*/ |
||||
|
|
||||
|
fieldset { |
||||
|
padding: 0.35em 0.75em 0.625em; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* 1. Correct the text wrapping in Edge and IE. |
||||
|
* 2. Correct the color inheritance from `fieldset` elements in IE. |
||||
|
* 3. Remove the padding so developers are not caught out when they zero out |
||||
|
* `fieldset` elements in all browsers. |
||||
|
*/ |
||||
|
|
||||
|
legend { |
||||
|
box-sizing: border-box; /* 1 */ |
||||
|
color: inherit; /* 2 */ |
||||
|
display: table; /* 1 */ |
||||
|
max-width: 100%; /* 1 */ |
||||
|
padding: 0; /* 3 */ |
||||
|
white-space: normal; /* 1 */ |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Add the correct vertical alignment in Chrome, Firefox, and Opera. |
||||
|
*/ |
||||
|
|
||||
|
progress { |
||||
|
vertical-align: baseline; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Remove the default vertical scrollbar in IE 10+. |
||||
|
*/ |
||||
|
|
||||
|
textarea { |
||||
|
overflow: auto; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* 1. Add the correct box sizing in IE 10. |
||||
|
* 2. Remove the padding in IE 10. |
||||
|
*/ |
||||
|
|
||||
|
[type="checkbox"], |
||||
|
[type="radio"] { |
||||
|
box-sizing: border-box; /* 1 */ |
||||
|
padding: 0; /* 2 */ |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Correct the cursor style of increment and decrement buttons in Chrome. |
||||
|
*/ |
||||
|
|
||||
|
[type="number"]::-webkit-inner-spin-button, |
||||
|
[type="number"]::-webkit-outer-spin-button { |
||||
|
height: auto; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* 1. Correct the odd appearance in Chrome and Safari. |
||||
|
* 2. Correct the outline style in Safari. |
||||
|
*/ |
||||
|
|
||||
|
[type="search"] { |
||||
|
-webkit-appearance: textfield; /* 1 */ |
||||
|
outline-offset: -2px; /* 2 */ |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Remove the inner padding in Chrome and Safari on macOS. |
||||
|
*/ |
||||
|
|
||||
|
[type="search"]::-webkit-search-decoration { |
||||
|
-webkit-appearance: none; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* 1. Correct the inability to style clickable types in iOS and Safari. |
||||
|
* 2. Change font properties to `inherit` in Safari. |
||||
|
*/ |
||||
|
|
||||
|
::-webkit-file-upload-button { |
||||
|
-webkit-appearance: button; /* 1 */ |
||||
|
font: inherit; /* 2 */ |
||||
|
} |
||||
|
|
||||
|
/* Interactive |
||||
|
=========================================== |
||||
|
=============================== */ |
||||
|
|
||||
|
/* |
||||
|
* Add the correct display in Edge, IE 10+, and Firefox. |
||||
|
*/ |
||||
|
|
||||
|
details { |
||||
|
display: block; |
||||
|
} |
||||
|
|
||||
|
/* |
||||
|
* Add the correct display in all browsers. |
||||
|
*/ |
||||
|
|
||||
|
summary { |
||||
|
display: list-item; |
||||
|
} |
||||
|
|
||||
|
/* Misc |
||||
|
========================================================================== */ |
||||
|
|
||||
|
/** |
||||
|
* Add the correct display in IE 10+. |
||||
|
*/ |
||||
|
|
||||
|
template { |
||||
|
display: none; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Add the correct display in IE 10. |
||||
|
*/ |
||||
|
|
||||
|
[hidden] { |
||||
|
display: none; |
||||
|
} |
||||
|
|
||||
|
|
@ -0,0 +1,38 @@ |
|||||
|
//font |
||||
|
$font-default:'Mulish', sans-serif; |
||||
|
$font-offer: 'Roboto', sans-serif; |
||||
|
|
||||
|
|
||||
|
//colors |
||||
|
|
||||
|
|
||||
|
$color-brand: #763242; |
||||
|
$color-brand2: #565656; |
||||
|
$color-black:#000000; |
||||
|
$color-white:#fff; |
||||
|
$color-font:#797979; |
||||
|
$color-font2:#535353; |
||||
|
$color-green:#d8ceca; |
||||
|
$color-button:#c09f7f; |
||||
|
$color-footer:#121725; |
||||
|
$color-grey:#6c6a74; |
||||
|
$color-hover:#e9c939; |
||||
|
$color-border:#dedede; |
||||
|
|
||||
|
$select-border-color: #ccc; |
||||
|
$select-focus-color: green; |
||||
|
|
||||
|
//font-size |
||||
|
|
||||
|
|
||||
|
$font-h1:36px; |
||||
|
$font-h2: 18px; |
||||
|
$font-h3:36px; |
||||
|
$font-h4: 25px; |
||||
|
$font-h5:19px; |
||||
|
$font-h6: 18px; |
||||
|
$font-p:18px; |
||||
|
$font-size-banner:60px; |
||||
|
$font-heading:46px; |
||||
|
$font-sub-heading:30px; |
||||
|
$font-text:14px; |
@ -0,0 +1,360 @@ |
|||||
|
//font |
||||
|
$font-default:'Mulish', sans-serif; |
||||
|
$font-offer: 'Roboto', sans-serif; |
||||
|
|
||||
|
|
||||
|
//colors |
||||
|
|
||||
|
|
||||
|
$color-brand: #763242 !important; |
||||
|
$color-brand2: #565656; |
||||
|
$color-black:#000000; |
||||
|
$color-white:#fff; |
||||
|
$color-font:#797979; |
||||
|
$color-font2:#535353; |
||||
|
$color-green:#d8ceca; |
||||
|
$color-button:#c09f7f; |
||||
|
$color-footer:#121725; |
||||
|
$color-grey:#6c6a74; |
||||
|
$color-hover:#e9c939; |
||||
|
$color-border:#dedede; |
||||
|
|
||||
|
$select-border-color: #ccc; |
||||
|
$select-focus-color: green; |
||||
|
|
||||
|
//font-size |
||||
|
|
||||
|
|
||||
|
$font-h1:36px; |
||||
|
$font-h2: 18px; |
||||
|
$font-h3:36px; |
||||
|
$font-h4: 25px; |
||||
|
$font-h5:19px; |
||||
|
$font-h6: 18px; |
||||
|
$font-p:18px; |
||||
|
$font-size-banner:60px; |
||||
|
$font-heading:46px; |
||||
|
$font-sub-heading:30px; |
||||
|
$font-text:14px; |
||||
|
|
||||
|
|
||||
|
.products_pager { |
||||
|
padding: 10px 0; |
||||
|
margin-bottom: 0; |
||||
|
border: 0; |
||||
|
border-bottom: 1px solid #eee; |
||||
|
.dropdown-menu { |
||||
|
font-size: 13px; |
||||
|
line-height: 20px; |
||||
|
} |
||||
|
|
||||
|
.o_wsale_products_searchbar_form { |
||||
|
.input-group { |
||||
|
.form-control { |
||||
|
font-size: 14px; |
||||
|
padding-top: 0; |
||||
|
padding-bottom: 0; |
||||
|
} |
||||
|
} |
||||
|
.btn { |
||||
|
padding-bottom: 0; |
||||
|
padding-top: 0; |
||||
|
font-weight: 500; |
||||
|
font-size: 13px; |
||||
|
} |
||||
|
.input-group-append { |
||||
|
.btn { |
||||
|
|
||||
|
border-radius: 0; |
||||
|
letter-spacing: 0; |
||||
|
font-size: 16px; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
&.mt-3 { |
||||
|
margin: 0; |
||||
|
padding: 0; |
||||
|
border: 0; |
||||
|
} |
||||
|
|
||||
|
.o_website_sale_search { |
||||
|
display: none; |
||||
|
|
||||
|
.input-group-append { |
||||
|
.btn { |
||||
|
background: $primary; |
||||
|
padding-top: 0; |
||||
|
padding-bottom: 0; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
.dropdown { |
||||
|
.dropdown-menu { |
||||
|
font-size: 12px; |
||||
|
} |
||||
|
.dropdown-toggle { |
||||
|
&.btn-secondary { |
||||
|
background: none; |
||||
|
color: #333; |
||||
|
padding: 0 20px; |
||||
|
height: 35px; |
||||
|
line-height: 35px; |
||||
|
min-width: 125px; |
||||
|
border: 1px solid #999; |
||||
|
font-size: 14px; |
||||
|
font-weight: 500; |
||||
|
letter-spacing: 0; |
||||
|
border-radius: 0; |
||||
|
&:focus { |
||||
|
background: none; |
||||
|
box-shadow: none; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
.dropdown-item { |
||||
|
padding: 5px 10px; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
&.justify-content-center { |
||||
|
justify-content: center !important; |
||||
|
.pagination { |
||||
|
margin: 0 auto !important; |
||||
|
text-align: center; |
||||
|
} |
||||
|
} |
||||
|
.btn-group-toggle { |
||||
|
.btn { |
||||
|
padding: 10px; |
||||
|
font-size: 13px; |
||||
|
border-radius: 0 !important; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
.btn-primary { |
||||
|
background-color: #763242 !important; |
||||
|
border-color: #c09f7f !important; |
||||
|
padding: 14px 31px; |
||||
|
color: #fff !important; |
||||
|
font-size: 16px; |
||||
|
font-weight: 600; |
||||
|
border-radius: 3px; |
||||
|
letter-spacing: 1px; |
||||
|
} |
||||
|
|
||||
|
.btn-secondary { |
||||
|
background-color: #fff !important; |
||||
|
color: #763242 !important; |
||||
|
border-color: #000000 !important; |
||||
|
} |
||||
|
|
||||
|
|
||||
|
.categories { |
||||
|
margin-top: 90px; |
||||
|
padding-bottom: 90px; |
||||
|
.top_heading2 { |
||||
|
margin-bottom: 60px; |
||||
|
position: relative; |
||||
|
h3 { |
||||
|
color: $color-brand2; |
||||
|
font-weight: 700; |
||||
|
font-size: $font-sub-heading; |
||||
|
letter-spacing: 0.05em; |
||||
|
text-align: center; |
||||
|
} |
||||
|
p { |
||||
|
color: $color-font; |
||||
|
font-size: $font-p; |
||||
|
margin-top: 12px; |
||||
|
} |
||||
|
.bottom_line { |
||||
|
&:before { |
||||
|
content: " "; |
||||
|
display: block; |
||||
|
margin: 0 auto; |
||||
|
position: absolute; |
||||
|
bottom: -30px; |
||||
|
left: 0; |
||||
|
right: 0; |
||||
|
width: 127px; |
||||
|
height: 2px; |
||||
|
background-color: #e0e0e0; |
||||
|
} |
||||
|
&:after { |
||||
|
content: " "; |
||||
|
display: block; |
||||
|
margin: 0 auto; |
||||
|
position: absolute; |
||||
|
bottom: -30px; |
||||
|
left: 0; |
||||
|
right: 0; |
||||
|
width: 50px; |
||||
|
height: 4px; |
||||
|
background-color: $color-brand; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
.wrapper { |
||||
|
padding-top: 40px; |
||||
|
.c_wrapper{ |
||||
|
|
||||
|
-webkit-box-shadow: 0px 7px 7px 4px rgba(240,240,240,1); |
||||
|
-moz-box-shadow: 0px 7px 7px 4px rgba(240,240,240,1); |
||||
|
box-shadow: 0px 7px 7px 4px rgba(240,240,240,1); |
||||
|
&:hover{ |
||||
|
background-color: #eeeee6a8; |
||||
|
} |
||||
|
.categories_single { |
||||
|
text-align: center !important; |
||||
|
padding-bottom: 10px; |
||||
|
.icon { |
||||
|
color: $color-white; |
||||
|
background-color: #ccdb38; |
||||
|
height: 40px; |
||||
|
width: 40px; |
||||
|
padding-top: 13px; |
||||
|
border-radius: 50%; |
||||
|
font-size: 14px; |
||||
|
-webkit-box-shadow: 0 0 0px 4px #b4b87659; |
||||
|
-moz-box-shadow: 0 0 0px 4px #b4b87659; |
||||
|
box-shadow: 0 0 0px 4px #b4b87659; |
||||
|
margin-bottom: 15px; |
||||
|
} |
||||
|
.c_img{ |
||||
|
height: 80px; |
||||
|
width: 80px; |
||||
|
padding-top: 0; |
||||
|
border-radius: 50%; |
||||
|
margin: auto; |
||||
|
-webkit-box-shadow: 0 0 0px 4px #b4b87659; |
||||
|
-moz-box-shadow: 0 0 0px 4px #b4b87659; |
||||
|
box-shadow: 0 0 0px 4px #b4b87659; |
||||
|
margin-bottom: 15px; |
||||
|
|
||||
|
img{ |
||||
|
width: 100%; |
||||
|
border-radius: 50%; |
||||
|
} |
||||
|
} |
||||
|
.fa-apple { |
||||
|
background-color: #d346bb; |
||||
|
-webkit-box-shadow: 0 0 0px 4px #d346bb88; |
||||
|
-moz-box-shadow: 0 0 0px 4px #d346bb88; |
||||
|
box-shadow: 0 0 0px 4px #d346bb88; |
||||
|
} |
||||
|
.fa-home { |
||||
|
background-color: #8f46d3; |
||||
|
-webkit-box-shadow: 0 0 0px 4px #8f46d367; |
||||
|
-moz-box-shadow: 0 0 0px 4px #8f46d367; |
||||
|
box-shadow: 0 0 0px 4px #8f46d367; |
||||
|
} |
||||
|
.fa-shopping-basket { |
||||
|
background-color: #46a6d3; |
||||
|
-webkit-box-shadow: 0 0 0px 4px #46a6d359; |
||||
|
-moz-box-shadow: 0 0 0px 4px #46a6d359; |
||||
|
box-shadow: 0 0 0px 4px #46a6d359; |
||||
|
} |
||||
|
.fa-briefcase { |
||||
|
background-color: #095775; |
||||
|
-webkit-box-shadow: 0 0 0px 4px#09567563; |
||||
|
-moz-box-shadow: 0 0 0px 4px#09567563; |
||||
|
box-shadow: 0 0 0px 4px#09567563; |
||||
|
} |
||||
|
.fa-car { |
||||
|
background-color: #539b51; |
||||
|
-webkit-box-shadow: 0 0 0px 4px #549b5169; |
||||
|
-moz-box-shadow: 0 0 0px 4px #549b5169; |
||||
|
box-shadow: 0 0 0px 4px #549b5169; |
||||
|
} |
||||
|
.fa-paw { |
||||
|
background-color: #d3ad46; |
||||
|
-webkit-box-shadow: 0 0 0px 4px #d3ad4675; |
||||
|
-moz-box-shadow: 0 0 0px 4px #d3ad4675; |
||||
|
box-shadow: 0 0 0px 4px #d3ad4675; |
||||
|
} |
||||
|
h5 { |
||||
|
color: $color-brand2; |
||||
|
font-weight: 700; |
||||
|
font-size: $font-h5; |
||||
|
} |
||||
|
} |
||||
|
.categories_list { |
||||
|
margin-top: 20px; |
||||
|
padding: 0 20px; |
||||
|
margin-bottom: 40px; |
||||
|
li { |
||||
|
display: flex; |
||||
|
justify-content: space-between; |
||||
|
color: $color-font; |
||||
|
padding-bottom: 20px; |
||||
|
align-items: center; |
||||
|
@media screen and(max-width:996px) { |
||||
|
justify-content: space-around; |
||||
|
} |
||||
|
a { |
||||
|
color: $color-font; |
||||
|
} |
||||
|
|
||||
|
span{ |
||||
|
background-color: $color-brand; |
||||
|
padding: 5px; |
||||
|
border-radius: 50%; |
||||
|
height: 35px; |
||||
|
width: 35px; |
||||
|
text-align: center; |
||||
|
color: white; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
} |
||||
|
} |
||||
|
|
||||
|
.ct_buttons .btn-cta { |
||||
|
background-color: #763242 !important; |
||||
|
padding: 14px 34px; |
||||
|
color: #fff !important; |
||||
|
font-size: 16px; |
||||
|
font-weight: 600; |
||||
|
border-radius: 3px; |
||||
|
letter-spacing: 0.05em; |
||||
|
margin-right: 10px; |
||||
|
} |
||||
|
|
||||
|
.ct_buttons .btn-cta:hover { |
||||
|
color: #fff !important; |
||||
|
background: #c09f7f !important; |
||||
|
} |
||||
|
|
||||
|
.ct_buttons .btn-ctb { |
||||
|
background-color: #fff !important; |
||||
|
padding: 14px 31px; |
||||
|
color: #000000 !important; |
||||
|
font-size: 16px; |
||||
|
font-weight: 600; |
||||
|
border-radius: 3px; |
||||
|
letter-spacing: 0.05em; |
||||
|
border: 1px solid; |
||||
|
border-color: #fff; |
||||
|
margin-right: 10px; |
||||
|
} |
||||
|
|
||||
|
.ct_buttons .btn-ctb:hover { |
||||
|
border: 1px solid !important; |
||||
|
border-color: #fff !important; |
||||
|
color: #fff !important; |
||||
|
background: #763242 !important; |
||||
|
} |
||||
|
|
||||
|
.ctaa { |
||||
|
background-image: linear-gradient( |
||||
|
9deg |
||||
|
, rgba(0, 0, 0, 0.548), rgba(0, 0, 0, 0.65)), url(./../images/call-to-action/cta-background.jpg); |
||||
|
text-align: center; |
||||
|
padding: 100PX 0; |
||||
|
} |
||||
|
|
@ -0,0 +1,121 @@ |
|||||
|
.banner{ |
||||
|
background-image:linear-gradient(9deg, rgba(0, 0, 0, 0.82), rgba(0, 0, 0, 0.65)), url(./../images/banner/hero.jpg); |
||||
|
|
||||
|
width: 100%; |
||||
|
// background-position: center; |
||||
|
background-size: cover; |
||||
|
background-repeat: no-repeat; |
||||
|
|
||||
|
@media screen and(max-width:768px) { |
||||
|
height: 820px; |
||||
|
} |
||||
|
|
||||
|
|
||||
|
.card{background: transparent; |
||||
|
border: none; |
||||
|
padding: 100px 0 25px 0; |
||||
|
.card-body{ |
||||
|
background: transparent; |
||||
|
text-align: center; |
||||
|
.card-title{ |
||||
|
|
||||
|
font-size: 65px; |
||||
|
font-weight: bold; |
||||
|
letter-spacing: 0.05em; |
||||
|
margin-bottom: 15px; |
||||
|
color: $color-brand; |
||||
|
|
||||
|
@media screen and(max-width:768px) { |
||||
|
font-size: 50px; |
||||
|
} |
||||
|
} |
||||
|
.card-text{ |
||||
|
font-size: 20px; |
||||
|
font-weight: 500; |
||||
|
color: $color-white; |
||||
|
@media screen and(max-width:768px) { |
||||
|
font-size: 16px; |
||||
|
font-weight: normal; |
||||
|
} |
||||
|
|
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
.populor{ |
||||
|
|
||||
|
|
||||
|
padding-bottom: 180px; |
||||
|
h4{color: $color-white; |
||||
|
font-size: 16px; |
||||
|
font-weight: bolder; |
||||
|
margin-bottom: 30px; |
||||
|
|
||||
|
|
||||
|
@media screen and(max-width:768px) { |
||||
|
|
||||
|
} |
||||
|
} |
||||
|
|
||||
|
.populor-buttons{ |
||||
|
|
||||
|
a{ |
||||
|
margin: 0 7px; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
} |
||||
|
.search{ |
||||
|
.wrapper{ |
||||
|
background-color: $color-white; |
||||
|
-webkit-box-shadow: 1px 25px 19px -16px #c4c4c4; |
||||
|
-moz-box-shadow: 1px 25px 19px -16px #c4c4c4; |
||||
|
box-shadow: 1px 25px 19px -16px #c4c4c4; |
||||
|
border-radius: 3px; |
||||
|
padding: 35px 15px; |
||||
|
margin-top: -95px; |
||||
|
|
||||
|
@media screen and(max-width:768px) { |
||||
|
margin-top: -276px; |
||||
|
} |
||||
|
|
||||
|
.form-group{ |
||||
|
input{ |
||||
|
padding: 25px 5px; |
||||
|
} |
||||
|
select{ |
||||
|
// padding: 25px 5px; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
|
||||
|
} |
||||
|
|
||||
|
|
||||
|
} |
||||
|
|
||||
|
.banner_about{ |
||||
|
background-color: $color-brand; |
||||
|
width: 100%; |
||||
|
text-align: center; |
||||
|
h3{ |
||||
|
color: $color-white; |
||||
|
font-weight: bold; |
||||
|
font-size: 42px; |
||||
|
padding: 40px 0; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
|
||||
|
.banner_search{ |
||||
|
background-color: $color-brand; |
||||
|
width: 100%; |
||||
|
text-align: center; |
||||
|
|
||||
|
} |
@ -0,0 +1,224 @@ |
|||||
|
.btn { |
||||
|
border: none !important; |
||||
|
outline: 0 !important; |
||||
|
box-shadow: none !important; |
||||
|
-webkit-transition: 0.5s; |
||||
|
transition: 0.5s; |
||||
|
color: $color-button; |
||||
|
&-primary { |
||||
|
background-color:$color-button !important; |
||||
|
border-color: $color-button; |
||||
|
padding: 14px 31px; |
||||
|
color: $color-white !important; |
||||
|
font-size: 16px; |
||||
|
font-weight: 600; |
||||
|
border-radius:3px; |
||||
|
letter-spacing: 1px; |
||||
|
|
||||
|
&:hover { |
||||
|
|
||||
|
color: $color-white !important; |
||||
|
background-color: lighten($color-button, 5%) !important; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
&-primary-s{ |
||||
|
background-color:$color-button !important; |
||||
|
border-color: $color-button; |
||||
|
padding: 14px 31px; |
||||
|
color: $color-white !important; |
||||
|
font-size: 16px; |
||||
|
font-weight: 600; |
||||
|
border-radius:3px; |
||||
|
|
||||
|
|
||||
|
&:hover { |
||||
|
|
||||
|
color: $color-white !important; |
||||
|
background-color: lighten($color-button, 5%) !important; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
&-login { |
||||
|
background-color: transparent !important; |
||||
|
|
||||
|
padding: 4px 18px; |
||||
|
color: $color-black !important; |
||||
|
font-size: 14px; |
||||
|
font-weight: 600; |
||||
|
border-radius:0; |
||||
|
border:1px solid !important; |
||||
|
border-color: 2px solid #dedede !important; |
||||
|
margin-left: 10px; |
||||
|
&:hover { |
||||
|
|
||||
|
|
||||
|
color: $color-white !important; |
||||
|
background-color: darken($color-button, 5%) !important; |
||||
|
} |
||||
|
} |
||||
|
&-listing { |
||||
|
background-color: $color-green !important; |
||||
|
|
||||
|
padding: 5px 18px; |
||||
|
color: $color-white !important; |
||||
|
font-size: 14px; |
||||
|
font-weight: 600; |
||||
|
border-radius:0; |
||||
|
border:1px solid !important; |
||||
|
|
||||
|
&:hover { |
||||
|
|
||||
|
|
||||
|
color: $color-white !important; |
||||
|
background-color: darken($color-green, 5%) !important; |
||||
|
border: none; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
&-pop { |
||||
|
background-color: transparent !important; |
||||
|
|
||||
|
padding: 4px 14px; |
||||
|
color: $color-white !important; |
||||
|
font-size: 12px; |
||||
|
font-weight: 600; |
||||
|
border-radius:0; |
||||
|
border:1px solid #404040 !important; |
||||
|
span{ |
||||
|
padding-right: 5px; |
||||
|
} |
||||
|
|
||||
|
&:hover { |
||||
|
|
||||
|
|
||||
|
color: $color-white !important; |
||||
|
|
||||
|
|
||||
|
} |
||||
|
} |
||||
|
&-cta { |
||||
|
background-color:$color-brand !important; |
||||
|
|
||||
|
padding: 14px 34px; |
||||
|
color: $color-white !important; |
||||
|
font-size: 16px; |
||||
|
font-weight: 600; |
||||
|
border-radius:3px; |
||||
|
letter-spacing: 0.05em; |
||||
|
margin-right: 10px; |
||||
|
&:hover { |
||||
|
|
||||
|
|
||||
|
color: $color-white !important; |
||||
|
background: $color-button !important; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
&-ctb { |
||||
|
background-color:$color-white !important; |
||||
|
padding: 14px 31px; |
||||
|
color: $color-black !important; |
||||
|
font-size: 16px; |
||||
|
font-weight: 600; |
||||
|
border-radius:3px; |
||||
|
letter-spacing: 0.05em; |
||||
|
border: 1px solid; |
||||
|
border-color: $color-white; |
||||
|
margin-right: 10px; |
||||
|
&:hover { |
||||
|
|
||||
|
border: 1px solid !important; |
||||
|
border-color: $color-white !important; |
||||
|
color: $color-white !important; |
||||
|
background: $color-brand !important; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
&-profile { |
||||
|
background-color: $color-brand !important; |
||||
|
padding: 5px 18px; |
||||
|
color: $color-white !important; |
||||
|
font-size: 14px; |
||||
|
font-weight: 400; |
||||
|
border-radius:5px; |
||||
|
|
||||
|
|
||||
|
&:hover { |
||||
|
|
||||
|
color: $color-white !important; |
||||
|
background-color: darken($color-brand, 5%) !important; |
||||
|
border: none; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
&-delete { |
||||
|
background-color:#d43d3d !important; |
||||
|
border-color: $color-button; |
||||
|
padding: 14px 31px; |
||||
|
color: $color-white !important; |
||||
|
font-size: 16px; |
||||
|
font-weight: 600; |
||||
|
border-radius:3px; |
||||
|
|
||||
|
&:hover { |
||||
|
|
||||
|
color: $color-white !important; |
||||
|
background:#eb2424 !important; |
||||
|
} |
||||
|
} |
||||
|
&-transparent { |
||||
|
background-color:transparent !important; |
||||
|
border-color: $color-button; |
||||
|
padding: 14px 31px; |
||||
|
color: $color-button !important; |
||||
|
font-size: 16px; |
||||
|
font-weight: 600; |
||||
|
border-radius:3px; |
||||
|
border:1px solid !important; |
||||
|
margin-top: 20px; |
||||
|
&:hover { |
||||
|
|
||||
|
color: $color-white !important; |
||||
|
background: $color-button !important; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
&-transparent2 { |
||||
|
background-color:transparent !important; |
||||
|
border-color: $color-white; |
||||
|
padding: 14px 31px; |
||||
|
color: $color-white !important; |
||||
|
font-size: 16px; |
||||
|
font-weight: 600; |
||||
|
border-radius:3px; |
||||
|
border:1px solid !important; |
||||
|
margin-top: 20px; |
||||
|
&:hover { |
||||
|
|
||||
|
color: $color-font !important; |
||||
|
background: $color-white !important; |
||||
|
border: none !important; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
&-primaryc { |
||||
|
background-color:$color-button !important; |
||||
|
border-color: $color-button; |
||||
|
padding: 14px 31px; |
||||
|
color: $color-white !important; |
||||
|
font-size: 16px; |
||||
|
font-weight: 600; |
||||
|
border-radius:5px; |
||||
|
letter-spacing: 1px; |
||||
|
width: 55%; |
||||
|
|
||||
|
|
||||
|
&:hover { |
||||
|
|
||||
|
color: $color-white !important; |
||||
|
background-color: lighten($color-button, 5%) !important; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
} |