diff --git a/website_product_search_snippet/README.rst b/website_product_search_snippet/README.rst new file mode 100644 index 000000000..4a5deb4ef --- /dev/null +++ b/website_product_search_snippet/README.rst @@ -0,0 +1,46 @@ +.. image:: https://img.shields.io/badge/license-AGPL--3-blue.svg + :target: https://www.gnu.org/licenses/agpl-3.0-standalone.html + :alt: License: AGPL-3 + +Product Search Snippet +====================== +This module helps to search products in category and all category wise. + +Configuration +============= +* No additional configurations needed + +Company +------- +* `Cybrosys Techno Solutions `__ + +License +------- +General Public License, Version 3 (AGPL v3). +(https://www.gnu.org/licenses/agpl-3.0-standalone.html) + +Credits +------- +* Developer: (V16) Farhana Jahan PT , 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 `__ + +Further information +=================== +HTML Description: ``__ diff --git a/website_product_search_snippet/__init__.py b/website_product_search_snippet/__init__.py new file mode 100644 index 000000000..3ad78aa5f --- /dev/null +++ b/website_product_search_snippet/__init__.py @@ -0,0 +1,23 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2023-TODAY Cybrosys Technologies(). +# Author: Cybrosys Techno Solutions() +# +# 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 . +# +############################################################################# +from . import controllers +from . import models diff --git a/website_product_search_snippet/__manifest__.py b/website_product_search_snippet/__manifest__.py new file mode 100644 index 000000000..3530bf156 --- /dev/null +++ b/website_product_search_snippet/__manifest__.py @@ -0,0 +1,60 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2023-TODAY Cybrosys Technologies(). +# Author: Cybrosys Techno Solutions() +# +# 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 . +# +############################################################################# +{ + 'name': 'Product Search Snippet', + 'version': '16.0.1.0.0', + 'category': 'Website', + 'summary': """Product Search Snippet for Website.""", + 'description': """This module enables users to search for products + within a specific category or across all categories using the search + bar on the website snippet and redirect to its details.""", + 'author': 'Cybrosys Techno Solutions', + 'company': 'Cybrosys Techno Solutions', + 'maintainer': 'Cybrosys Techno Solutions', + 'website': "https://cybrosys.com/", + 'depends': ['website', 'sale_management'], + 'data': ['views/snippets/search_snippet_templates.xml', + 'views/snippets/product_search_templates.xml', + 'views/snippets/product_details_templates.xml', + 'views/snippets/selected_product_from_all_product_templates.xml', + 'views/snippets/product_all_result_templates.xml', + 'views/snippets/category_details_templates.xml', + 'views/snippets/category_selected_product_templates.xml', + 'views/snippets/selected_category_from_all_category_templates.xml', + 'views/snippets/category_all_result_templates.xml', + 'views/snippets/product_select_from_category_templates.xml', + ], + 'assets': { + 'web.assets_frontend': [ + 'website_product_search_snippet/static/src/css/website_product_search_snippet.scss', + 'website_product_search_snippet/static/src/js/website_product_search_snippet.js', + 'website_product_search_snippet/static/src/js/search_bar.js', + 'website_product_search_snippet/static/src/xml/product_templates.xml', + 'website_product_search_snippet/static/src/xml/category_templates.xml', + ] + }, + 'images': ['static/description/banner.jpg'], + 'license': 'AGPL-3', + 'installable': True, + 'auto_install': False, + 'application': False, +} diff --git a/website_product_search_snippet/controllers/__init__.py b/website_product_search_snippet/controllers/__init__.py new file mode 100644 index 000000000..d56918f88 --- /dev/null +++ b/website_product_search_snippet/controllers/__init__.py @@ -0,0 +1,22 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2023-TODAY Cybrosys Technologies(). +# Author: Cybrosys Techno Solutions() +# +# 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 . +# +############################################################################# +from . import website_product_search_snippet diff --git a/website_product_search_snippet/controllers/website_product_search_snippet.py b/website_product_search_snippet/controllers/website_product_search_snippet.py new file mode 100644 index 000000000..31a01e463 --- /dev/null +++ b/website_product_search_snippet/controllers/website_product_search_snippet.py @@ -0,0 +1,143 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2023-TODAY Cybrosys Technologies(). +# Author: Cybrosys Techno Solutions() +# +# 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 . +# +############################################################################# +from odoo import http +from odoo.http import request + + +class WebsiteSnippetPage(http.Controller): + """Controller for setting routes.Pass all categories and + category wise products as array to a template""" + + @http.route('/category/form', type='http', auth='public', + website=True, csrf=False, sitemap=False, cache=300) + def category_page(self, **kw): + """Function for rendering specific category and products of that category into website""" + category = request.env['product.category'].sudo().browse( + int(kw.get('category_id'))) + parent = request.env['product.category'].sudo().browse( + int(kw.get('parent_id'))) + values = { + 'category': category, + 'products': request.env['product.template'].search( + [('categ_id', '=', category.id)]), + 'products_category': request.env['product.template'].search( + [('category_id', '=', parent.id)]) + } + return http.request.render( + 'website_product_search_snippet.category_snippet_img', values) + + @http.route('/selected/category/result', type='http', auth='public', + website=True, csrf=False, sitemap=False, cache=300) + def category_all_page(self, **kw): + """Function for rendering specific category and products of that category into website""" + category = request.env['product.category'].sudo().browse( + int(kw.get('category_id'))) + values = { + 'category': category, + 'products': request.env['product.template'].search( + [('categ_id', '=', category.id)]) + } + return http.request.render( + 'website_product_search_snippet.all_category_snippet_img', values) + + @http.route('/selected/category/from/all_category/result', type='http', auth='public', + website=True, csrf=False, sitemap=False, cache=300) + def category_from_all_category_page(self, **kw): + """Function for rendering specific category and products of that category into website""" + category = request.env['product.category'].sudo().browse( + int(kw.get('category_id'))) + values = { + 'category': category, + 'products': request.env['product.template'].search( + [('categ_id', '=', category.id)]) + } + return http.request.render( + 'website_product_search_snippet.category_from_all_category_snippet_img', values) + + @http.route('/product/form', type='http', auth='public', + website=True, csrf=False, sitemap=False, cache=300) + def product_page(self, **kw): + """Function for rendering specific product into website""" + values = { + 'products': request.env['product.template'].sudo().browse( + int(kw.get('product_id'))) + } + return http.request.render( + 'website_product_search_snippet.products_snippet_img', values) + + @http.route('/selected/product/from/category', type='http', auth='public', + website=True, csrf=False, sitemap=False, cache=300) + def selected_product_page(self, **kw): + """Function for rendering specific product into website""" + values = { + 'products': request.env['product.template'].sudo().browse( + int(kw.get('product_id'))) + } + return http.request.render( + 'website_product_search_snippet.selected_products_from_category_snippet_img', + values) + + @http.route('/all/product/selected/product/details', type='http', + auth='public', + website=True, csrf=False, sitemap=False, cache=300) + def product_all_page(self, **kw): + """Function for rendering specific product into website""" + values = { + 'products': request.env['product.template'].sudo().browse( + int(kw.get('product_id'))) + } + return http.request.render( + 'website_product_search_snippet.all_products_snippet_img', values) + + @http.route('/select/product/from/category', type='http', auth='public', + website=True, csrf=False, sitemap=False, cache=300) + def product_category_all_page(self, **kw): + """Function for rendering specific product into website""" + values = { + 'products': request.env['product.template'].sudo().browse( + int(kw.get('product_id'))) + } + return http.request.render( + 'website_product_search_snippet.products_category_snippet_img', + values) + + @http.route('/product/form/all/results', type='http', auth='public', + website=True, csrf=False, sitemap=False, cache=300) + def product_page_result(self): + """Function for rendering all products into website""" + values = { + 'products': request.env['product.template'].search([]) + } + return http.request.render( + "website_product_search_snippet.product_all_result_template", + values) + + @http.route('/category/form/all/results', type='http', auth='public', + website=True, csrf=False, sitemap=False, cache=300) + def category_page_result(self): + """Function for rendering all categories into website""" + values = {'category': request.env['product.category'].search( + [('id', '!=', request.env.ref('product.product_category_all').id), + ('id', '!=', request.env.ref('product.product_category_1').id)])} + return http.request.render( + "website_product_search_snippet.category_all_result_template", + values) diff --git a/website_product_search_snippet/doc/RELEASE_NOTES.md b/website_product_search_snippet/doc/RELEASE_NOTES.md new file mode 100644 index 000000000..206de76a4 --- /dev/null +++ b/website_product_search_snippet/doc/RELEASE_NOTES.md @@ -0,0 +1,5 @@ +## Module +#### 15.09.2023 +#### Version 16.0.1.0.0 +##### ADD +- Initial commit for Product Search Snippet diff --git a/website_product_search_snippet/models/__init__.py b/website_product_search_snippet/models/__init__.py new file mode 100644 index 000000000..4dcfbb22e --- /dev/null +++ b/website_product_search_snippet/models/__init__.py @@ -0,0 +1,22 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2023-TODAY Cybrosys Technologies(). +# Author: Cybrosys Techno Solutions() +# +# 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 . +# +############################################################################# +from . import product_template diff --git a/website_product_search_snippet/models/product_template.py b/website_product_search_snippet/models/product_template.py new file mode 100644 index 000000000..961608fc6 --- /dev/null +++ b/website_product_search_snippet/models/product_template.py @@ -0,0 +1,59 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2023-TODAY Cybrosys Technologies(). +# Author: Cybrosys Techno Solutions() +# +# 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 . +# +############################################################################# +from odoo import api, fields, models + + +class ProductTemplate(models.Model): + """ Inherit product_template model for fetch products and categories to + frontend""" + _inherit = 'product.template' + + parent_category_id = fields.Many2one("product.category",string="Parent Category") + category_boolean = fields.Boolean(default=True) + category_id = fields.Char(string='Parent Category',compute="_compute_parent_id") + + @api.depends('category_boolean') + def _compute_parent_id(self): + """ Get the parent category of the product""" + self.category_id = self.categ_id.parent_id.id + + @api.model + def search_products(self, qry): + """ Search all products in product.template, + and pass searched products into templates """ + products = self.env['product.template'].search([('name', 'ilike', qry)]) + return [[product.name, product.id, + product.list_price, + '/web/image/product.template/{}/image_512/'.format(product.id), + product.currency_id.symbol, ] + for product in products] + + @api.model + def product_category(self, qry): + """ Search all category in product_category, + and pass category into another template """ + category = self.env['product.category'].search( + [('id', '!=', self.env.ref('product.product_category_all').id), + ('name', 'ilike', qry)]) + return [[category.name, category.id, category.parent_id.name, category.parent_id.id, + category.product_count] + for category in category] diff --git a/website_product_search_snippet/static/description/assets/icons/check.png b/website_product_search_snippet/static/description/assets/icons/check.png new file mode 100644 index 000000000..c8e85f51d Binary files /dev/null and b/website_product_search_snippet/static/description/assets/icons/check.png differ diff --git a/website_product_search_snippet/static/description/assets/icons/chevron.png b/website_product_search_snippet/static/description/assets/icons/chevron.png new file mode 100644 index 000000000..2089293d6 Binary files /dev/null and b/website_product_search_snippet/static/description/assets/icons/chevron.png differ diff --git a/website_product_search_snippet/static/description/assets/icons/cogs.png b/website_product_search_snippet/static/description/assets/icons/cogs.png new file mode 100644 index 000000000..95d0bad62 Binary files /dev/null and b/website_product_search_snippet/static/description/assets/icons/cogs.png differ diff --git a/website_product_search_snippet/static/description/assets/icons/consultation.png b/website_product_search_snippet/static/description/assets/icons/consultation.png new file mode 100644 index 000000000..8319d4baa Binary files /dev/null and b/website_product_search_snippet/static/description/assets/icons/consultation.png differ diff --git a/website_product_search_snippet/static/description/assets/icons/ecom-black.png b/website_product_search_snippet/static/description/assets/icons/ecom-black.png new file mode 100644 index 000000000..a9385ff13 Binary files /dev/null and b/website_product_search_snippet/static/description/assets/icons/ecom-black.png differ diff --git a/website_product_search_snippet/static/description/assets/icons/education-black.png b/website_product_search_snippet/static/description/assets/icons/education-black.png new file mode 100644 index 000000000..3eb09b27b Binary files /dev/null and b/website_product_search_snippet/static/description/assets/icons/education-black.png differ diff --git a/website_product_search_snippet/static/description/assets/icons/hotel-black.png b/website_product_search_snippet/static/description/assets/icons/hotel-black.png new file mode 100644 index 000000000..130f613be Binary files /dev/null and b/website_product_search_snippet/static/description/assets/icons/hotel-black.png differ diff --git a/website_product_search_snippet/static/description/assets/icons/license.png b/website_product_search_snippet/static/description/assets/icons/license.png new file mode 100644 index 000000000..a5869797e Binary files /dev/null and b/website_product_search_snippet/static/description/assets/icons/license.png differ diff --git a/website_product_search_snippet/static/description/assets/icons/lifebuoy.png b/website_product_search_snippet/static/description/assets/icons/lifebuoy.png new file mode 100644 index 000000000..658d56ccc Binary files /dev/null and b/website_product_search_snippet/static/description/assets/icons/lifebuoy.png differ diff --git a/website_product_search_snippet/static/description/assets/icons/manufacturing-black.png b/website_product_search_snippet/static/description/assets/icons/manufacturing-black.png new file mode 100644 index 000000000..697eb0e9f Binary files /dev/null and b/website_product_search_snippet/static/description/assets/icons/manufacturing-black.png differ diff --git a/website_product_search_snippet/static/description/assets/icons/pos-black.png b/website_product_search_snippet/static/description/assets/icons/pos-black.png new file mode 100644 index 000000000..97c0f90c1 Binary files /dev/null and b/website_product_search_snippet/static/description/assets/icons/pos-black.png differ diff --git a/website_product_search_snippet/static/description/assets/icons/puzzle.png b/website_product_search_snippet/static/description/assets/icons/puzzle.png new file mode 100644 index 000000000..65cf854e7 Binary files /dev/null and b/website_product_search_snippet/static/description/assets/icons/puzzle.png differ diff --git a/website_product_search_snippet/static/description/assets/icons/restaurant-black.png b/website_product_search_snippet/static/description/assets/icons/restaurant-black.png new file mode 100644 index 000000000..4a35eb939 Binary files /dev/null and b/website_product_search_snippet/static/description/assets/icons/restaurant-black.png differ diff --git a/website_product_search_snippet/static/description/assets/icons/service-black.png b/website_product_search_snippet/static/description/assets/icons/service-black.png new file mode 100644 index 000000000..301ab51cb Binary files /dev/null and b/website_product_search_snippet/static/description/assets/icons/service-black.png differ diff --git a/website_product_search_snippet/static/description/assets/icons/trading-black.png b/website_product_search_snippet/static/description/assets/icons/trading-black.png new file mode 100644 index 000000000..9398ba2f1 Binary files /dev/null and b/website_product_search_snippet/static/description/assets/icons/trading-black.png differ diff --git a/website_product_search_snippet/static/description/assets/icons/training.png b/website_product_search_snippet/static/description/assets/icons/training.png new file mode 100644 index 000000000..884ca024d Binary files /dev/null and b/website_product_search_snippet/static/description/assets/icons/training.png differ diff --git a/website_product_search_snippet/static/description/assets/icons/update.png b/website_product_search_snippet/static/description/assets/icons/update.png new file mode 100644 index 000000000..ecbc5a01a Binary files /dev/null and b/website_product_search_snippet/static/description/assets/icons/update.png differ diff --git a/website_product_search_snippet/static/description/assets/icons/user.png b/website_product_search_snippet/static/description/assets/icons/user.png new file mode 100644 index 000000000..6ffb23d9f Binary files /dev/null and b/website_product_search_snippet/static/description/assets/icons/user.png differ diff --git a/website_product_search_snippet/static/description/assets/icons/wrench.png b/website_product_search_snippet/static/description/assets/icons/wrench.png new file mode 100644 index 000000000..6c04dea0f Binary files /dev/null and b/website_product_search_snippet/static/description/assets/icons/wrench.png differ diff --git a/website_product_search_snippet/static/description/assets/misc/categories.png b/website_product_search_snippet/static/description/assets/misc/categories.png new file mode 100644 index 000000000..bedf1e0b1 Binary files /dev/null and b/website_product_search_snippet/static/description/assets/misc/categories.png differ diff --git a/website_product_search_snippet/static/description/assets/misc/check-box.png b/website_product_search_snippet/static/description/assets/misc/check-box.png new file mode 100644 index 000000000..42caf24b9 Binary files /dev/null and b/website_product_search_snippet/static/description/assets/misc/check-box.png differ diff --git a/website_product_search_snippet/static/description/assets/misc/compass.png b/website_product_search_snippet/static/description/assets/misc/compass.png new file mode 100644 index 000000000..d5fed8faa Binary files /dev/null and b/website_product_search_snippet/static/description/assets/misc/compass.png differ diff --git a/website_product_search_snippet/static/description/assets/misc/corporate.png b/website_product_search_snippet/static/description/assets/misc/corporate.png new file mode 100644 index 000000000..2eb13edbf Binary files /dev/null and b/website_product_search_snippet/static/description/assets/misc/corporate.png differ diff --git a/website_product_search_snippet/static/description/assets/misc/customer-support.png b/website_product_search_snippet/static/description/assets/misc/customer-support.png new file mode 100644 index 000000000..79efc72ed Binary files /dev/null and b/website_product_search_snippet/static/description/assets/misc/customer-support.png differ diff --git a/website_product_search_snippet/static/description/assets/misc/cybrosys-logo.png b/website_product_search_snippet/static/description/assets/misc/cybrosys-logo.png new file mode 100644 index 000000000..cc3cc0ccf Binary files /dev/null and b/website_product_search_snippet/static/description/assets/misc/cybrosys-logo.png differ diff --git a/website_product_search_snippet/static/description/assets/misc/features.png b/website_product_search_snippet/static/description/assets/misc/features.png new file mode 100644 index 000000000..b41769f77 Binary files /dev/null and b/website_product_search_snippet/static/description/assets/misc/features.png differ diff --git a/website_product_search_snippet/static/description/assets/misc/logo.png b/website_product_search_snippet/static/description/assets/misc/logo.png new file mode 100644 index 000000000..478462d3e Binary files /dev/null and b/website_product_search_snippet/static/description/assets/misc/logo.png differ diff --git a/website_product_search_snippet/static/description/assets/misc/pictures.png b/website_product_search_snippet/static/description/assets/misc/pictures.png new file mode 100644 index 000000000..56d255fe9 Binary files /dev/null and b/website_product_search_snippet/static/description/assets/misc/pictures.png differ diff --git a/website_product_search_snippet/static/description/assets/misc/pie-chart.png b/website_product_search_snippet/static/description/assets/misc/pie-chart.png new file mode 100644 index 000000000..426e05244 Binary files /dev/null and b/website_product_search_snippet/static/description/assets/misc/pie-chart.png differ diff --git a/website_product_search_snippet/static/description/assets/misc/right-arrow.png b/website_product_search_snippet/static/description/assets/misc/right-arrow.png new file mode 100644 index 000000000..730984a06 Binary files /dev/null and b/website_product_search_snippet/static/description/assets/misc/right-arrow.png differ diff --git a/website_product_search_snippet/static/description/assets/misc/star.png b/website_product_search_snippet/static/description/assets/misc/star.png new file mode 100644 index 000000000..2eb9ab29f Binary files /dev/null and b/website_product_search_snippet/static/description/assets/misc/star.png differ diff --git a/website_product_search_snippet/static/description/assets/misc/support.png b/website_product_search_snippet/static/description/assets/misc/support.png new file mode 100644 index 000000000..4f18b8b82 Binary files /dev/null and b/website_product_search_snippet/static/description/assets/misc/support.png differ diff --git a/website_product_search_snippet/static/description/assets/misc/whatsapp.png b/website_product_search_snippet/static/description/assets/misc/whatsapp.png new file mode 100644 index 000000000..d513a5356 Binary files /dev/null and b/website_product_search_snippet/static/description/assets/misc/whatsapp.png differ diff --git a/website_product_search_snippet/static/description/assets/modules/img1.png b/website_product_search_snippet/static/description/assets/modules/img1.png new file mode 100644 index 000000000..e90228872 Binary files /dev/null and b/website_product_search_snippet/static/description/assets/modules/img1.png differ diff --git a/website_product_search_snippet/static/description/assets/modules/img2.jpg b/website_product_search_snippet/static/description/assets/modules/img2.jpg new file mode 100644 index 000000000..157e5a4d4 Binary files /dev/null and b/website_product_search_snippet/static/description/assets/modules/img2.jpg differ diff --git a/website_product_search_snippet/static/description/assets/modules/img3.png b/website_product_search_snippet/static/description/assets/modules/img3.png new file mode 100644 index 000000000..6e487b48c Binary files /dev/null and b/website_product_search_snippet/static/description/assets/modules/img3.png differ diff --git a/website_product_search_snippet/static/description/assets/modules/img4.jpg b/website_product_search_snippet/static/description/assets/modules/img4.jpg new file mode 100644 index 000000000..b4db2b6e8 Binary files /dev/null and b/website_product_search_snippet/static/description/assets/modules/img4.jpg differ diff --git a/website_product_search_snippet/static/description/assets/modules/img5.jpg b/website_product_search_snippet/static/description/assets/modules/img5.jpg new file mode 100644 index 000000000..291635d04 Binary files /dev/null and b/website_product_search_snippet/static/description/assets/modules/img5.jpg differ diff --git a/website_product_search_snippet/static/description/assets/modules/img6.png b/website_product_search_snippet/static/description/assets/modules/img6.png new file mode 100644 index 000000000..fc6659119 Binary files /dev/null and b/website_product_search_snippet/static/description/assets/modules/img6.png differ diff --git a/website_product_search_snippet/static/description/assets/screenshots/hero.gif b/website_product_search_snippet/static/description/assets/screenshots/hero.gif new file mode 100644 index 000000000..c7c305826 Binary files /dev/null and b/website_product_search_snippet/static/description/assets/screenshots/hero.gif differ diff --git a/website_product_search_snippet/static/description/assets/screenshots/product_search_1.png b/website_product_search_snippet/static/description/assets/screenshots/product_search_1.png new file mode 100644 index 000000000..083f387a9 Binary files /dev/null and b/website_product_search_snippet/static/description/assets/screenshots/product_search_1.png differ diff --git a/website_product_search_snippet/static/description/assets/screenshots/product_search_2.png b/website_product_search_snippet/static/description/assets/screenshots/product_search_2.png new file mode 100644 index 000000000..48414b7db Binary files /dev/null and b/website_product_search_snippet/static/description/assets/screenshots/product_search_2.png differ diff --git a/website_product_search_snippet/static/description/assets/screenshots/product_search_3.png b/website_product_search_snippet/static/description/assets/screenshots/product_search_3.png new file mode 100644 index 000000000..75a97e6c7 Binary files /dev/null and b/website_product_search_snippet/static/description/assets/screenshots/product_search_3.png differ diff --git a/website_product_search_snippet/static/description/assets/screenshots/product_search_4.png b/website_product_search_snippet/static/description/assets/screenshots/product_search_4.png new file mode 100644 index 000000000..c857fa3c8 Binary files /dev/null and b/website_product_search_snippet/static/description/assets/screenshots/product_search_4.png differ diff --git a/website_product_search_snippet/static/description/assets/screenshots/product_search_5.png b/website_product_search_snippet/static/description/assets/screenshots/product_search_5.png new file mode 100644 index 000000000..70145169d Binary files /dev/null and b/website_product_search_snippet/static/description/assets/screenshots/product_search_5.png differ diff --git a/website_product_search_snippet/static/description/assets/screenshots/product_search_6.png b/website_product_search_snippet/static/description/assets/screenshots/product_search_6.png new file mode 100644 index 000000000..79d55e770 Binary files /dev/null and b/website_product_search_snippet/static/description/assets/screenshots/product_search_6.png differ diff --git a/website_product_search_snippet/static/description/assets/screenshots/product_search_7.png b/website_product_search_snippet/static/description/assets/screenshots/product_search_7.png new file mode 100644 index 000000000..b32556e1c Binary files /dev/null and b/website_product_search_snippet/static/description/assets/screenshots/product_search_7.png differ diff --git a/website_product_search_snippet/static/description/assets/screenshots/product_search_8.png b/website_product_search_snippet/static/description/assets/screenshots/product_search_8.png new file mode 100644 index 000000000..6af2fa1d6 Binary files /dev/null and b/website_product_search_snippet/static/description/assets/screenshots/product_search_8.png differ diff --git a/website_product_search_snippet/static/description/assets/screenshots/product_search_9.png b/website_product_search_snippet/static/description/assets/screenshots/product_search_9.png new file mode 100644 index 000000000..2a69bbec4 Binary files /dev/null and b/website_product_search_snippet/static/description/assets/screenshots/product_search_9.png differ diff --git a/website_product_search_snippet/static/description/banner.jpg b/website_product_search_snippet/static/description/banner.jpg new file mode 100644 index 000000000..751579cc5 Binary files /dev/null and b/website_product_search_snippet/static/description/banner.jpg differ diff --git a/website_product_search_snippet/static/description/icon.png b/website_product_search_snippet/static/description/icon.png new file mode 100644 index 000000000..06cca8e93 Binary files /dev/null and b/website_product_search_snippet/static/description/icon.png differ diff --git a/website_product_search_snippet/static/description/index.html b/website_product_search_snippet/static/description/index.html new file mode 100644 index 000000000..d340468e7 --- /dev/null +++ b/website_product_search_snippet/static/description/index.html @@ -0,0 +1,696 @@ +
+ +
+ +
+
+ Community +
+
+ Enterprise +
+
+ Odoo.Sh +
+
+
+ +
+
+
+ +

+ Product Search Snippet

+

+ This App Allows to Search Products in Category With the Help of Snippet

+ + +
+
+
+
+ + +
+
+ +
+

+ Explore This + Module

+
+ + + + +
+
+ +
+

+ Overview +

+
+
+
+ This module allows users to search for products + either within a particular category or across all categories by + utilizing the search bar on the website snippet. + Subsequently, users can be redirected to view the details of the + chosen product. +
+
+ + + +
+
+ +
+

+ Features +

+
+
+
+
+ + Community,Enterprise and Odoo.sh Support. +
+
+ + + Search for Products based on specific Categories as well as across All Categories. + +
+
+ + + Filtering can be applied during the search process, either based on a specific Category or across All Categories. + +
+
+ + + Product details can be viewed by clicking on the respective Products. + +
+
+
+ + + +
+
+ +
+

+ Screenshots +

+
+
+
+
+

Drag the Product + Search Snippet and save it.

+ +
+
+
+
+

When selecting + "All Categories," the system should be able to display All + Products as users type in the Search Bar, and users should have + the option to choose a specific Product.

+ +
+
+
+
+

Upon selecting a + Product, the system should direct users to the details of that + Product. Within the product details page, there should be an + option available for users to navigate Back to the previous + page. +

+ +
+
+
+
+

Upon selecting + "Category", the Search Bar should be filtered according to the + chosen Category. This allows users to narrow down their search, + and they should be able to select a Category from there. + If no products are available in the selected Category, the color + red will be displayed. Additionally, a button labeled + "See All + Category" will be provided to users.

+ +
+
+
+
+

Get all Product + Categories. Additionally, utilize red and blue colors to + signify the product count within each category.

+ +
+
+
+
+

Clicking on a + Category should lead users to a dedicated page that displays + Products falling under that specific Category.There also + contains a Search Bar for search products

+ +
+
+
+
+

When there are No + Products Available under the selected Category, the system + should display the following message.

+ +
+
+
+ + + +
+
+ +
+

+ Related + Products +

+
+
+
+ +
+
+ + + + +
+
+ +
+

+ Our Services +

+
+ +
+
+
+
+ +
+
+ Odoo + Customization
+
+ +
+
+ +
+
+ Odoo + Implementation
+
+ +
+
+ +
+
+ Odoo + Support
+
+ + +
+
+ +
+
+ Hire + Odoo + Developer
+
+ +
+
+ +
+
+ Odoo + Integration
+
+ +
+
+ +
+
+ Odoo + Migration
+
+ + +
+
+ +
+
+ Odoo + Consultancy
+
+ +
+
+ +
+
+ Odoo + Implementation
+
+ +
+
+ +
+
+ Odoo + Licensing Consultancy
+
+
+ +
+ + + + +
+
+ +
+

+ Our + Industries +

+
+ +
+
+
+
+ +
+ Trading +
+

+ Easily procure + and + sell your products

+
+
+ +
+
+ +
+ POS +
+

+ Easy + configuration + and convivial experience

+
+
+ +
+
+ +
+ Education +
+

+ A platform for + educational management

+
+
+ +
+
+ +
+ Manufacturing +
+

+ Plan, track and + schedule your operations

+
+
+ +
+
+ +
+ E-commerce & Website +
+

+ Mobile + friendly, + awe-inspiring product pages

+
+
+ +
+
+ +
+ Service Management +
+

+ Keep track of + services and invoice

+
+
+ +
+
+ +
+ Restaurant +
+

+ Run your bar or + restaurant methodically

+
+
+ +
+
+ +
+ Hotel Management +
+

+ An + all-inclusive + hotel management application

+
+
+
+
+ + + + +
+
+ +
+

+ Support +

+
+
+
+
+
+
+ +
+
+

Need Help?

+

Got questions or need help? + Get in touch.

+ +

+ odoo@cybrosys.com

+
+
+
+
+
+
+
+ +
+
+

WhatsApp

+

Say hi to us on WhatsApp!

+ +

+ +91 86068 + 27707

+
+
+
+
+
+
+
+ +
+
+
+ \ No newline at end of file diff --git a/website_product_search_snippet/static/src/css/website_product_search_snippet.scss b/website_product_search_snippet/static/src/css/website_product_search_snippet.scss new file mode 100644 index 000000000..4e5ec1e35 --- /dev/null +++ b/website_product_search_snippet/static/src/css/website_product_search_snippet.scss @@ -0,0 +1,25 @@ +.heading{ + color: #fff6f8; + background: #575758; + font-size: 47px; + font-weight: bold; +} +.search_bar{ + margin-left: 47px; + border-radius: 15px; +} +.search_container{ + background: #9c9a9a +} +#sub_temp{ + background: #e9e9f1; +} +#category_template{ + background: #e9e9f1; +} +#table_header { + background-color: #bababa; + color: white; +} +#table_row:nth-child(even){background-color: #ededed} +#category_table:nth-child(even){background-color: #c3c3c3} \ No newline at end of file diff --git a/website_product_search_snippet/static/src/img/icon.png b/website_product_search_snippet/static/src/img/icon.png new file mode 100644 index 000000000..06cca8e93 Binary files /dev/null and b/website_product_search_snippet/static/src/img/icon.png differ diff --git a/website_product_search_snippet/static/src/js/search_bar.js b/website_product_search_snippet/static/src/js/search_bar.js new file mode 100644 index 000000000..19d4e9269 --- /dev/null +++ b/website_product_search_snippet/static/src/js/search_bar.js @@ -0,0 +1,41 @@ +odoo.define('website_product_search_snippet.search', function(require) { + "use strict"; + + var publicWidget = require('web.public.widget'); + var rpc = require('web.rpc'); + + + publicWidget.registry.portalDetails = publicWidget.Widget.extend({ + /** + * Retrieve all the data from the table. + */ + selector: '.product_search_bar', + events: { + 'keyup .search_product_bar': '_onKeyUp', + }, + //Function to start a website. + start: function() { + this._super.apply(this, arguments); + }, + //Function to search table datas. + _onKeyUp: function() { + var input, filter, table, tr, td, i, txtValue; + input = this.$el.find("#searchBarInput")[0]; + filter = input.value.toUpperCase(); + table = this.$el.find("#category_table") + tr = table[0].children.category_table_body.children; + for (i = 0; i < tr.length; i++) { + td = tr[i].children; + for (var j = 0; j < td.length; j++) { + txtValue = td[j].textContent || td[j].innerText; + if (txtValue.toUpperCase().indexOf(filter) > -1) { + tr[i].style.display = ""; + break; + } else { + tr[i].style.display = "none"; + } + } + } + }, + }); +}); diff --git a/website_product_search_snippet/static/src/js/website_product_search_snippet.js b/website_product_search_snippet/static/src/js/website_product_search_snippet.js new file mode 100644 index 000000000..1a9840cf3 --- /dev/null +++ b/website_product_search_snippet/static/src/js/website_product_search_snippet.js @@ -0,0 +1,50 @@ +odoo.define('website_product_search_snippet.dynamic', function(require) { + var PublicWidget = require('web.public.widget'); + var rpc = require('web.rpc'); + var core = require('web.core'); + var Qweb = core.qweb; + var Dynamic = PublicWidget.Widget.extend({ + selector: '.dynamic_search_snippet', + events: { + 'click .search_container': '_onClick', + 'keyup .search_bar': '_onKeyUp', + }, + // When click on search bar, products/categories will displays.otherwise products/categories will not be displayed + _onClick: function() { + this.$el.find('#searchInput').val(""); + }, + // Call rpc query to keyup function for display all products under all category filter + _onKeyUp: async function(ev) { + category = this.$el.find(".category_options").find(":selected").text(); + var qry = $(ev.currentTarget).val() + if (category === "All Categories") { + await rpc.query({ + model: 'product.template', + method: 'search_products', + args: [qry], + }).then(function(result) { + console.log(result) + this.$('.qweb_product_id').html(""); + this.$('.qweb_product_id').append(Qweb.render('website_product_search_snippet.product_template', { + result + })); + }); + } + // Call rpc query to keyup function for display all category under category filter + if (category === "Category") { + await rpc.query({ + model: 'product.template', + method: 'product_category', + args: [qry], + }).then(function(result) { + this.$('.qweb_product_id').html(""); + this.$('.qweb_product_id').append(Qweb.render('website_product_search_snippet.product_category', { + result + })); + }); + } + }, + }); + PublicWidget.registry.dynamic_search_snippet = Dynamic; + return Dynamic; +}); diff --git a/website_product_search_snippet/static/src/xml/category_templates.xml b/website_product_search_snippet/static/src/xml/category_templates.xml new file mode 100644 index 000000000..dde25f154 --- /dev/null +++ b/website_product_search_snippet/static/src/xml/category_templates.xml @@ -0,0 +1,60 @@ + + + + +
+
+
+
+
+

Categories

+
+ +

No results found. Please try another search.

+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Parent CategoryCategory
+ See All Categories + +
+
+
+ + diff --git a/website_product_search_snippet/static/src/xml/product_templates.xml b/website_product_search_snippet/static/src/xml/product_templates.xml new file mode 100644 index 000000000..4d981322f --- /dev/null +++ b/website_product_search_snippet/static/src/xml/product_templates.xml @@ -0,0 +1,61 @@ + + + + +
+
+
+
+
+

Products

+
+ +

No results found. Please try another search.

+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ImageProduct Price
+ See All Products + +
+
+
+ + diff --git a/website_product_search_snippet/views/snippets/category_all_result_templates.xml b/website_product_search_snippet/views/snippets/category_all_result_templates.xml new file mode 100644 index 000000000..733ca35d8 --- /dev/null +++ b/website_product_search_snippet/views/snippets/category_all_result_templates.xml @@ -0,0 +1,73 @@ + + + + + diff --git a/website_product_search_snippet/views/snippets/category_details_templates.xml b/website_product_search_snippet/views/snippets/category_details_templates.xml new file mode 100644 index 000000000..6dea613fa --- /dev/null +++ b/website_product_search_snippet/views/snippets/category_details_templates.xml @@ -0,0 +1,213 @@ + + + + + diff --git a/website_product_search_snippet/views/snippets/category_selected_product_templates.xml b/website_product_search_snippet/views/snippets/category_selected_product_templates.xml new file mode 100644 index 000000000..01dedf24b --- /dev/null +++ b/website_product_search_snippet/views/snippets/category_selected_product_templates.xml @@ -0,0 +1,136 @@ + + + + + diff --git a/website_product_search_snippet/views/snippets/product_all_result_templates.xml b/website_product_search_snippet/views/snippets/product_all_result_templates.xml new file mode 100644 index 000000000..595736f2e --- /dev/null +++ b/website_product_search_snippet/views/snippets/product_all_result_templates.xml @@ -0,0 +1,73 @@ + + + + + diff --git a/website_product_search_snippet/views/snippets/product_details_templates.xml b/website_product_search_snippet/views/snippets/product_details_templates.xml new file mode 100644 index 000000000..6a5fa6918 --- /dev/null +++ b/website_product_search_snippet/views/snippets/product_details_templates.xml @@ -0,0 +1,136 @@ + + + + + diff --git a/website_product_search_snippet/views/snippets/product_search_templates.xml b/website_product_search_snippet/views/snippets/product_search_templates.xml new file mode 100644 index 000000000..dc3955b2e --- /dev/null +++ b/website_product_search_snippet/views/snippets/product_search_templates.xml @@ -0,0 +1,36 @@ + + + + + diff --git a/website_product_search_snippet/views/snippets/product_select_from_category_templates.xml b/website_product_search_snippet/views/snippets/product_select_from_category_templates.xml new file mode 100644 index 000000000..7a80c4adc --- /dev/null +++ b/website_product_search_snippet/views/snippets/product_select_from_category_templates.xml @@ -0,0 +1,136 @@ + + + + + diff --git a/website_product_search_snippet/views/snippets/search_snippet_templates.xml b/website_product_search_snippet/views/snippets/search_snippet_templates.xml new file mode 100644 index 000000000..f02f6adee --- /dev/null +++ b/website_product_search_snippet/views/snippets/search_snippet_templates.xml @@ -0,0 +1,12 @@ + + + + + diff --git a/website_product_search_snippet/views/snippets/selected_category_from_all_category_templates.xml b/website_product_search_snippet/views/snippets/selected_category_from_all_category_templates.xml new file mode 100644 index 000000000..c789f8d43 --- /dev/null +++ b/website_product_search_snippet/views/snippets/selected_category_from_all_category_templates.xml @@ -0,0 +1,214 @@ + + + + + diff --git a/website_product_search_snippet/views/snippets/selected_product_from_all_product_templates.xml b/website_product_search_snippet/views/snippets/selected_product_from_all_product_templates.xml new file mode 100644 index 000000000..137c1a06c --- /dev/null +++ b/website_product_search_snippet/views/snippets/selected_product_from_all_product_templates.xml @@ -0,0 +1,136 @@ + + + + +