Explorar el Código

primer commit

edgar hace 6 años
commit
658ff1e65c
Se han modificado 100 ficheros con 3694 adiciones y 0 borrados
  1. 28 0
      LICENSE
  2. BIN
      Odoo Kinfisher Pro Fashion - User Guide.pdf
  3. 5 0
      __init__.py
  4. BIN
      __init__.pyc
  5. 62 0
      __openerp__.py
  6. 4 0
      controllers/__init__.py
  7. BIN
      controllers/__init__.pyc
  8. 361 0
      controllers/main.py
  9. BIN
      controllers/main.pyc
  10. 41 0
      data/data.xml
  11. 277 0
      data/demo_homepage.xml
  12. 80 0
      doc/changelog.rst
  13. 6 0
      models/__init__.py
  14. BIN
      models/__init__.pyc
  15. 177 0
      models/products.py
  16. BIN
      models/products.pyc
  17. 102 0
      models/slider.py
  18. BIN
      models/slider.pyc
  19. 289 0
      models/website.py
  20. BIN
      models/website.pyc
  21. 19 0
      security/ir.model.access.csv
  22. BIN
      static/description/blog.png
  23. BIN
      static/description/brand.png
  24. BIN
      static/description/building-blocks.jpg
  25. BIN
      static/description/categories.png
  26. BIN
      static/description/category-slider.png
  27. BIN
      static/description/falcon_theme.png
  28. BIN
      static/description/features.png
  29. BIN
      static/description/flip-product.png
  30. BIN
      static/description/footer.png
  31. BIN
      static/description/icon.png
  32. BIN
      static/description/icons.png
  33. 419 0
      static/description/index.html
  34. BIN
      static/description/kingfisher-pro-fashion_Banner_1.png
  35. BIN
      static/description/kingfisher.jpg
  36. BIN
      static/description/kingfisher_pro_bicycle.png
  37. BIN
      static/description/mega-menu.png
  38. BIN
      static/description/men-bg-new.png
  39. BIN
      static/description/multiple-products.png
  40. BIN
      static/description/multiple-store-support.png
  41. BIN
      static/description/multiple-views.png
  42. BIN
      static/description/pagination.png
  43. BIN
      static/description/price-slider.png
  44. BIN
      static/description/product-slider.png
  45. BIN
      static/description/products-per-grid.png
  46. BIN
      static/description/promo.png
  47. BIN
      static/description/reviews.png
  48. BIN
      static/description/search.png
  49. BIN
      static/description/selected-filters.png
  50. BIN
      static/description/service-banner.png
  51. BIN
      static/description/service.png
  52. BIN
      static/description/single-slider.png
  53. BIN
      static/description/slider.png
  54. BIN
      static/description/splash-screen.png
  55. BIN
      static/description/splash-screen_screenshot.png
  56. BIN
      static/description/tabs.png
  57. BIN
      static/description/tags.png
  58. BIN
      static/description/testimonials.png
  59. BIN
      static/description/theme-customization.png
  60. 150 0
      static/src/css/ion.rangeSlider.css
  61. 124 0
      static/src/css/ion.rangeSlider.skinHTML5.css
  62. 45 0
      static/src/css/kingfisher_pro.css
  63. 71 0
      static/src/css/owl.carousel.css
  64. 71 0
      static/src/css/owl.carousel2.css
  65. 1354 0
      static/src/css/unite-gallery.css
  66. BIN
      static/src/css/whatsap/icomoon.eot
  67. 9 0
      static/src/css/whatsap/icomoon.svg
  68. BIN
      static/src/css/whatsap/icomoon.ttf
  69. BIN
      static/src/css/whatsap/icomoon.woff
  70. BIN
      static/src/css/whatsap/icomoon1.eot
  71. BIN
      static/src/css/whatsap/iconowhatsap.png
  72. BIN
      static/src/images/1play-button-square.png
  73. BIN
      static/src/images/button-close.png
  74. BIN
      static/src/images/cover-grid.png
  75. BIN
      static/src/images/icon-link32.png
  76. BIN
      static/src/images/icon-play32.png
  77. BIN
      static/src/images/icon-zoom32.png
  78. BIN
      static/src/images/lightbox-arrow-left.png
  79. BIN
      static/src/images/lightbox-arrow-right.png
  80. BIN
      static/src/images/lightbox-icon-close-compact.png
  81. BIN
      static/src/images/lightbox-icon-close-compact2.png
  82. BIN
      static/src/images/lightbox-icon-close.png
  83. BIN
      static/src/images/loader-black1.gif
  84. BIN
      static/src/images/loader-black2.gif
  85. BIN
      static/src/images/loader-black3.gif
  86. BIN
      static/src/images/loader-black4.gif
  87. BIN
      static/src/images/loader-black5.gif
  88. BIN
      static/src/images/loader-black6.gif
  89. BIN
      static/src/images/loader-black7.gif
  90. BIN
      static/src/images/loader-white1.gif
  91. BIN
      static/src/images/loader-white2.gif
  92. BIN
      static/src/images/loader-white3.gif
  93. BIN
      static/src/images/loader-white4.gif
  94. BIN
      static/src/images/loader-white5.gif
  95. BIN
      static/src/images/loader-white6.gif
  96. BIN
      static/src/images/loader-white7.gif
  97. BIN
      static/src/images/loader.gif
  98. BIN
      static/src/images/loader_bright.gif
  99. BIN
      static/src/images/loader_skype_trans.gif
  100. BIN
      static/src/images/not_loaded.png

+ 28 - 0
LICENSE

@@ -0,0 +1,28 @@
+Odoo Proprietary License v1.0
+
+This software and associated files (the "Software") may only be used (executed,
+modified, executed after modifications) if you have purchased a valid license
+from the authors, typically via Odoo Apps, or if you have received a written
+agreement from the authors of the Software (see the COPYRIGHT file).
+
+You may develop Odoo modules that use the Software as a library (typically
+by depending on it, importing it and using its resources), but without copying
+any source code or material from the Software. You may distribute those
+modules under the license of your choice, provided that this license is
+compatible with the terms of the Odoo Proprietary License (For example:
+LGPL, MIT, or proprietary licenses similar to this one).
+
+It is forbidden to publish, distribute, sublicense, or sell copies of the Software
+or modified copies of the Software.
+
+The above copyright notice and this permission notice must be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
+DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+DEALINGS IN THE SOFTWARE.
+

BIN
Odoo Kinfisher Pro Fashion - User Guide.pdf


+ 5 - 0
__init__.py

@@ -0,0 +1,5 @@
+# -*- coding: utf-8 -*-
+# Part of AppJetty. See LICENSE file for full copyright and licensing details.
+
+import models
+import controllers

BIN
__init__.pyc


+ 62 - 0
__openerp__.py

@@ -0,0 +1,62 @@
+# -*- coding: utf-8 -*-
+# Part of AppJetty. See LICENSE file for full copyright and licensing details.
+
+{
+    'name': 'Kingfisher Pro Fashion',
+    'description': '''Theme Kingfisher Pro Fashion
+fashion theme
+fashion
+fashion store
+odoo fashion store
+odoo fashion theme
+apparel store
+apparel theme
+html5 theme
+responsive theme
+ecommerce store
+ecommerce theme
+html5 ecommerce store
+html5 ecommerce theme
+custom theme
+mobile custom theme
+bootstrap theme
+furnishing industry
+odoo 9 theme
+odoo 10 theme
+odoo 11 theme
+custom odoo theme
+    ''',
+    'category': 'Theme/Ecommerce',
+    'version': '8.0.1.0.8',
+    'author': 'AppJetty',
+    'website': 'https://goo.gl/3OCf0g',
+    'depends': [
+        'website_sale',
+        'mass_mailing',
+        'website_less',
+        'website_blog',
+    ],
+    'data': [
+        'views/assets.xml',
+        'security/ir.model.access.csv',
+        'views/slider_view.xml',
+        'views/product_view.xml',
+        'views/snippets.xml',
+        'views/website_config_view.xml',
+        'views/theme_customize.xml',
+        'data/data.xml',
+        'views/theme.xml',
+    ],
+    'demo': [
+        'data/demo_homepage.xml',
+    ],
+    'support': 'support@appjetty.com',
+    'application': True,
+    'live_test_url': 'http://theme-kingfisher-pro-fashion.appjetty.com',
+    'images': [
+        'static/description/splash-screen.png',
+        'static/description/splash-screen_screenshot.png',
+    ],
+    'price': 109.00,
+    'currency': 'EUR',
+}

+ 4 - 0
controllers/__init__.py

@@ -0,0 +1,4 @@
+# -*- coding: utf-8 -*-
+# Part of AppJetty. See LICENSE file for full copyright and licensing details.
+
+import main

BIN
controllers/__init__.pyc


+ 361 - 0
controllers/main.py

@@ -0,0 +1,361 @@
+# -*- coding: utf-8 -*-
+# Part of AppJetty. See LICENSE file for full copyright and licensing details.
+
+import re
+from openerp import http
+from openerp.http import request
+from openerp.addons.website.models.website import slug
+from openerp.addons.website_sale.controllers import main
+from openerp.addons.website_sale.controllers import main as main_shop
+from openerp.addons.website_sale.controllers.main import QueryURL
+from openerp.addons.website_sale.controllers.main import website_sale
+from openerp.addons.website_sale.controllers.main import table_compute
+
+
+class KingfisherProSliderSettings(http.Controller):
+
+    @http.route(['/kingfisher_pro/pro_get_options'], type='json', auth="public", website=True)
+    def get_slider_options(self):
+        slider_options = []
+        option = request.env['product.category.slider.config'].search(
+            [('active', '=', True)], order="name asc")
+        for record in option:
+            slider_options.append({'id': record.id,
+                                   'name': record.name})
+        return slider_options
+
+    @http.route(['/kingfisher_pro/pro_get_dynamic_slider'], type='http', auth='public', website=True)
+    def get_dynamic_slider(self, **post):
+        if post.get('slider-type'):
+            slider_header = request.env['product.category.slider.config'].sudo().search(
+                [('id', '=', int(post.get('slider-type')))])
+            values = {
+                'slider_header': slider_header
+            }
+            if slider_header.prod_cat_type == 'product':
+                values.update({'slider_details': slider_header.collections_product})
+            if slider_header.prod_cat_type == 'category':
+                values.update({'slider_details': slider_header.collections_category})
+            values.update({'slider_type': slider_header.prod_cat_type})
+            return request.website.render("kingfisher_pro.kingfisher_pro_pro_cat_slider_view", values)
+
+    @http.route(['/kingfisher_pro/pro_image_effect_config'], type='json', auth='public', website=True)
+    def product_image_dynamic_slider(self, **post):
+        slider_data = request.env['product.category.slider.config'].search(
+            [('id', '=', int(post.get('slider_type')))])
+        values = {
+            's_id': slider_data.prod_cat_type + str(slider_data.id),
+            'counts': slider_data.no_of_counts,
+            'auto_rotate': slider_data.auto_rotate,
+            'auto_play_time': slider_data.sliding_speed,
+        }
+        return values
+
+    @http.route(['/kingfisher_pro/blog_get_options'], type='json', auth="public", website=True)
+    def king_blog_get_slider_options(self):
+        slider_options = []
+        option = request.env['blog.slider.config'].search(
+            [('active', '=', True)], order="name asc")
+        for record in option:
+            slider_options.append({'id': record.id,
+                                   'name': record.name})
+        return slider_options
+
+    @http.route(['/kingfisher_pro/blog_get_dynamic_slider'], type='http', auth='public', website=True)
+    def king_blog_get_dynamic_slider(self, **post):
+        if post.get('slider-type'):
+            slider_header = request.env['blog.slider.config'].sudo().search(
+                [('id', '=', int(post.get('slider-type')))])
+            values = {
+                'slider_header': slider_header,
+                'blog_slider_details': slider_header.collections_blog_post,
+            }
+            return request.website.render("kingfisher_pro.kingfisher_pro_blog_slider_view", values)
+
+    @http.route(['/kingfisher_pro/blog_image_effect_config'], type='json', auth='public', website=True)
+    def king_blog_product_image_dynamic_slider(self, **post):
+        slider_data = request.env['blog.slider.config'].search(
+            [('id', '=', int(post.get('slider_type')))])
+        values = {
+            's_id': slider_data.no_of_counts + '-' + str(slider_data.id),
+            'counts': slider_data.no_of_counts,
+            'auto_rotate': slider_data.auto_rotate,
+            'auto_play_time': slider_data.sliding_speed,
+        }
+        return values
+
+    # Multi image gallery
+    @http.route(['/kingfisher_pro/multi_image_effect_config'], type='json', auth="public", website=True)
+    def get_multi_image_effect_config(self):
+
+        cur_website = request.website
+        values = {
+            'no_extra_options': cur_website.no_extra_options,
+            'theme_panel_position': cur_website.thumbnail_panel_position,
+            'interval_play': cur_website.interval_play,
+            'enable_disable_text': cur_website.enable_disable_text,
+            'color_opt_thumbnail': cur_website.color_opt_thumbnail,
+            'change_thumbnail_size': cur_website.change_thumbnail_size,
+            'thumb_height': cur_website.thumb_height,
+            'thumb_width': cur_website.thumb_width,
+        }
+        return values
+
+    # For multi product slider
+    @http.route(['/kingfisher_pro/product_multi_get_options'], type='json', auth="public", website=True)
+    def product_multi_get_slider_options(self):
+        slider_options = []
+        option = request.env['multi.slider.config'].search(
+            [('active', '=', True)], order="name asc")
+        for record in option:
+            slider_options.append({'id': record.id,
+                                   'name': record.name})
+        return slider_options
+
+    @http.route(['/kingfisher_pro/product_multi_get_dynamic_slider'], type='http', auth='public', website=True)
+    def product_multi_get_dynamic_slider(self, **post):
+        if post.get('slider-type'):
+            slider_header = request.env['multi.slider.config'].sudo().search(
+                [('id', '=', int(post.get('slider-type')))])
+            values = {
+                'slider_details': slider_header,
+                'slider_header': slider_header
+            }
+            return request.website.render("kingfisher_pro.kingfisher_pro_multi_cat_slider_view", values)
+
+    @http.route(['/kingfisher_pro/product_multi_image_effect_config'], type='json', auth='public', website=True)
+    def product_multi_product_image_dynamic_slider(self, **post):
+        slider_data = request.env['multi.slider.config'].search(
+            [('id', '=', int(post.get('slider_type')))])
+        values = {
+            's_id': slider_data.no_of_collection + '-' + str(slider_data.id),
+            'counts': slider_data.no_of_collection,
+            'auto_rotate': slider_data.auto_rotate,
+            'auto_play_time': slider_data.sliding_speed,
+        }
+        return values
+
+
+class KingfisherProBrandSlider(website_sale):
+
+    @http.route(['/shop/pager_selection/<model("product.per.page.no"):pl_id>'], type='http', auth="public", website=True)
+    def product_page_change(self, pl_id, **post):
+        request.session['default_paging_no'] = pl_id.name
+        main.PPG = pl_id.name
+        return request.redirect('/shop' or request.httprequest.referrer)
+
+    @http.route(['/shop',
+                 '/shop/page/<int:page>',
+                 '/shop/category/<model("product.public.category"):category>',
+                 '/shop/category/<model("product.public.category"):category>/page/<int:page>',
+                 '/shop/brands'],
+                type='http',
+                auth='public',
+                website=True)
+    def shop(self, page=0, category=None, brand=None, search='', ppg=False, **post):
+        cr, uid, context, pool = request.cr, request.uid, request.context, request.registry
+        if brand:
+            request.context.setdefault('brand_id', int(brand))
+        result = super(KingfisherProBrandSlider, self).shop(
+            page=page, category=category, brand=brand, search=search, **post)
+        sort_order = ""
+        cat_id = []
+
+        page_obj = pool.get('product.per.page.no')
+        page_id = page_obj.search(
+            cr, uid, [('set_default_check', '=', True)], context=context)
+        page_no = page_obj.browse(cr, uid, page_id, context=context)
+        if page_no:
+            ppg = page_no.name
+        else:
+            ppg = main_shop.PPG
+
+        product = []
+        newproduct = []
+
+        # product template object
+        product_obj = pool.get('product.template')
+
+        attrib_list = request.httprequest.args.getlist('attrib')
+        attrib_values = [map(int, v.split("-")) for v in attrib_list if v]
+        attributes_ids = set([v[0] for v in attrib_values])
+        attrib_set = set([v[1] for v in attrib_values])
+        domain = request.website.sale_product_domain()
+        domain += self._get_search_domain(search, category, attrib_values)
+        url = "/shop"
+        # For Product tags
+        keep = QueryURL('/shop', category=category and int(category), search=search,
+         attrib=attrib_list, order=post.get('order'))
+        if post:
+            request.session.update(post)
+
+        if search:
+            post["search"] = search
+
+        if attrib_list:
+            post['attrib'] = attrib_list
+
+        prevurl = request.httprequest.referrer
+        if prevurl:
+            if not re.search('/shop', prevurl, re.IGNORECASE):
+                request.session['tag'] = ""
+                request.session['sort_id'] = ""
+                request.session['sortid'] = ""
+                request.session['pricerange'] = ""
+                request.session['min1'] = ""
+                request.session['max1'] = ""
+
+        session = request.session
+        # for category filter
+        if category:
+            category = pool['product.public.category'].browse(
+                cr, uid, int(category), context=context)
+            url = "/shop/category/%s" % slug(category)
+        if category != None:
+            for ids in category:
+                cat_id.append(ids.id)
+            domain += ['|', ('public_categ_ids.id', 'in', cat_id),
+                       ('public_categ_ids.parent_id', 'in', cat_id)]
+        # for tag filter
+        if session.get('tag'):
+            session_tag = session.get('tag')
+            tag = session_tag[0]
+            tags_obj = pool['biztech.product.tags']
+            tags_ids = tags_obj.search(cr, uid, [], context=context)
+            tags = tags_obj.browse(cr, uid, tags_ids, context=context)
+            if tag:
+                tag = pool['biztech.product.tags'].browse(cr, uid, int(tag), context=context)
+                domain += [('tag_ids', '=', int(tag))]
+                request.session["tag"] = [tag.id, tag.name]
+
+        # For Product Sorting
+        if session.get('sort_id'):
+            session_sort = session.get('sort_id')
+            sort = session_sort
+            sorts_obj = pool['biztech.product.sortby']
+            sorts_ids = sorts_obj.search(cr, uid, [], context=context)
+            sorts = sorts_obj.browse(cr, uid, sorts_ids, context=context)
+            sort_field = pool['biztech.product.sortby'].browse(cr, uid, int(sort), context=context)
+            request.session['product_sort_name'] = sort_field.name
+            order_field = sort_field.sort_on.name
+            order_type = sort_field.sort_type
+            sort_order = '%s %s' % (order_field, order_type)
+            if post.get("sort_id"):
+                request.session["sortid"] = [sort, sort_order, sort_field.name, order_type]
+
+        # For Price slider
+        product_slider_ids = product_obj.search(cr, uid, [], context=context)
+        products_slider = product_obj.browse(cr, uid, product_slider_ids, context=context)
+        product_withprice = products_slider._product_template_price(products_slider, domain)
+
+        if product_withprice:
+            if post.get("range1") or post.get("range2") or not post.get("range1") or not post.get("range2"):
+                range1 = min(product_withprice.values())
+                range2 = max(product_withprice.values())
+                result.qcontext['range1'] = range1
+                result.qcontext['range2'] = range2
+
+            if session.get("min1") and session["min1"]:
+                post["min1"] = session["min1"]
+            if session.get("max1") and session["max1"]:
+                post["max1"] = session["max1"]
+            if range1:
+                post["range1"] = range1
+            if range1:
+                post["range2"] = range1
+
+            if request.session.get('min1') or request.session.get('max1'):
+                if request.session.get('min1'):
+                    if request.session['min1'] != None:
+                        for prod_id in product_withprice:
+                            if product_withprice.get(prod_id) >= float(request.session['min1']) and product_withprice.get(prod_id) <= float(request.session['max1']):
+                                product.append(prod_id)
+                        request.session["pricerange"] = str(
+                            request.session['min1'])+"-To-"+str(request.session['max1'])
+                newproduct = product
+                domain += [('id', 'in', newproduct)]
+
+            if session.get('min1') and session['min1']:
+                result.qcontext['min1'] = session["min1"]
+                result.qcontext['max1'] = session["max1"]
+
+        if request.session.get('default_paging_no'):
+            ppg = int(request.session.get('default_paging_no'))
+
+        # For Collascpe category
+        parent_category_ids = []
+        if category:
+            parent_category_ids = [category.id]
+            current_category = category
+            while current_category.parent_id:
+                parent_category_ids.append(current_category.parent_id.id)
+                current_category = current_category.parent_id
+        result.qcontext['parent_category_ids'] = parent_category_ids
+
+        product_count = product_obj.search_count(cr, uid, domain, context=context)
+        pager = request.website.pager(
+            url=url, total=product_count, page=page, step=ppg, scope=7, url_args=post)
+        product_ids = product_obj.search(
+            cr, uid, domain, limit=ppg, offset=pager['offset'], order=sort_order, context=context)
+        products = product_obj.browse(cr, uid, product_ids, context=context)
+
+        result.qcontext.update({'product_count': product_count})
+        result.qcontext.update({'products': products})
+        result.qcontext.update({'category': category})
+        result.qcontext.update({'pager': pager})
+        result.qcontext.update({'keep': keep})
+        result.qcontext.update({'search': search})
+        result.qcontext.update({'bins': table_compute().process(products)})
+
+        result.qcontext['brand'] = brand
+        result.qcontext['brand_obj'] = request.env['product.brands'].search([('id', '=', brand)])
+
+        return result
+
+    @http.route()
+    def cart_update_json(self, product_id, line_id=None, add_qty=None, set_qty=None, display=True):
+        result = super(KingfisherProBrandSlider, self).cart_update_json(
+            product_id=product_id, line_id=line_id, add_qty=add_qty, set_qty=set_qty, display=display)
+        result.update({'kingfisher_pro.hover_total': request.website._render("kingfisher_pro.hover_total", {
+            'website_sale_order': request.website.sale_get_order()
+            })
+        })
+        return result
+
+    @http.route(['/king_pro/get_brand_slider'], type='http', auth='public', website=True)
+    def get_brand_slider(self, **post):
+        keep = QueryURL('/king_pro/get_brand_slider', brand_id=[])
+
+        value = {
+            'website_brands': False,
+            'brand_header': False,
+            'keep': keep
+        }
+
+        if post.get('product_count'):
+            brand_data = request.env['product.brands'].search(
+                [], limit=int(post.get('product_count')))
+            if brand_data:
+                value['website_brands'] = brand_data
+
+        if post.get('product_label'):
+            value['brand_header'] = post.get('product_label')
+
+        return request.website.render("kingfisher_pro.kingfisher_pro_brand_slider_view", value)
+
+    @http.route(['/kingfisher_pro/removeattribute'], type='json', auth='public', website=True)
+    def remove_selected_attribute(self, **post):
+        if post.get("attr_remove"):
+            remove = post.get("attr_remove")
+            if remove == "pricerange":
+                del request.session['min1']
+                del request.session['max1']
+                request.session[remove] = ''
+                return True
+            elif remove == "sortid":
+                request.session[remove] = ''
+                request.session["sort_id"] = ''
+                return True
+            elif remove == "tag":
+                request.session[remove] = ''
+                return True

BIN
controllers/main.pyc


+ 41 - 0
data/data.xml

@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="utf-8"?>
+<openerp>
+    <data noupdate="1">
+
+        <record id="record_no_of_product_per_page_no_10" model="product.per.page.no">
+            <field name="name">9</field>
+        </record>
+
+        <record id="record_no_of_product_per_page_no_20" model="product.per.page.no">
+            <field name="name">18</field>
+            <field name="set_default_check">True</field>
+        </record>
+
+        <record id="record_no_of_product_per_page_no_30" model="product.per.page.no">
+            <field name="name">27</field>
+        </record>
+
+        <record id="record_no_of_product_per_page_no_40" model="product.per.page.no">
+            <field name="name">36</field>
+        </record>
+
+        <record id="record_no_of_product_per_page_no_50" model="product.per.page.no">
+            <field name="name">45</field>
+        </record>
+
+        <record id="record_no_of_product_per_page_no_100" model="product.per.page.no">
+            <field name="name">90</field>
+        </record>
+
+        <record id="record_no_of_product_per_page" model="product.per.page" >
+            <field name="name">Mostrar</field>
+            <field name="no_ids" eval="[(6, 0, [ref('record_no_of_product_per_page_no_10'),
+                                               ref('record_no_of_product_per_page_no_20'),
+                                               ref('record_no_of_product_per_page_no_30'),
+                                               ref('record_no_of_product_per_page_no_40'),
+                                               ref('record_no_of_product_per_page_no_50'),
+                                               ref('record_no_of_product_per_page_no_100')])]"/>
+        </record>
+
+    </data>
+</openerp>

+ 277 - 0
data/demo_homepage.xml

@@ -0,0 +1,277 @@
+<?xml version="1.0" encoding="utf-8"?>
+<openerp>
+<data noupdate="1">
+
+    <!-- Home Page -->
+    <template id="homepage_body" inherit_id="website.homepage">
+        <xpath expr="//div" position="inside">
+            <div class="oe_structure">
+            <!-- Home slider -->
+                <section class="theme-home-slider oe_snippet_body">
+                    <div id="myCarousel" class="carousel slide theme-home-slider s_kingfisher_pro_home_slider" data-interval="10000" data-ride="carousel">
+                        <!-- Indicators -->
+                        <ol class="carousel-indicators">
+                            <li data-slide-to="0" data-target="#myCarousel" class="active" />
+                            <li data-slide-to="1" data-target="#myCarousel"/>
+                        </ol>
+                        <!-- Wrapper for slides -->
+                        <div class="carousel-inner">
+                            <div class="item item1 active">
+                                <div class="container">
+                                    <div class="row content">
+                                        <blockquote class="col-md-6 col-sm-6 col-xs-6">
+                                            <p>New Collection</p>
+                                            <h2>Men Blazers</h2>
+                                            <h5>Save <span>20%</span></h5>
+                                            <div class="btn-box">
+                                                <a href="#">Shop now <i class="fa fa-angle-right"/></a>
+                                            </div>
+                                        </blockquote>
+                                        <div class="col-md-6 col-sm-6 col-xs-6">
+                                            <img src="/kingfisher_pro/static/src/img/men-blazer.png"/>
+                                        </div>
+                                    </div>
+                                </div>
+                            </div>
+                            <div class="item item2">
+                                <div class="container">
+                                    <div class="row content">
+                                        <blockquote class="pull-right col-md-6 col-sm-6 sol-xs-6">
+                                            <p>Western Wear</p>
+                                            <h2>Women Tops</h2>
+                                            <h5>Save <span>20%</span></h5>
+                                            <div class="btn-box">
+                                                <a href="#">Shop now <i class="fa fa-angle-right"/></a>
+                                            </div>
+                                        </blockquote>
+                                        <div class="col-md-6 col-sm-6 col-xs-6">
+                                                <img src="/kingfisher_pro/static/src/img/women-top.png"/>
+                                        </div>
+                                    </div>
+                                </div>
+                            </div>
+                        </div>
+                        <!-- Controls -->
+                        <a class="left carousel-control" data-target="#myCarousel" data-slide="prev" role="button">
+                            <span aria-hidden="true" class="previous-icon">
+                                <img src="/kingfisher_pro/static/src/img/prev-slide.png"/>
+                            </span>
+                            <span class="sr-only">Previous</span>
+                        </a>
+                        <a class="right carousel-control" data-slide="next" data-target="#myCarousel" role="button">
+                            <span aria-hidden="true" class="next-icon">
+                                <img src="/kingfisher_pro/static/src/img/next-slide.png"/>
+                            </span>
+                            <span class="sr-only">Next</span>
+                        </a>
+                    </div>
+                </section>
+
+                <!-- Promo snippet -->
+                <section class="ads-section oe_snippet_body">
+                    <div class="container">
+                        <div class="row">
+                            <div class="col-lg-3 col-md-4 col-sm-4 col-xs-12 text-center">
+                                <section class="adsb-inner adsb-inner1 small-banners">
+                                    <div class="inner-content">
+                                        <h5>MEN'S SHOES</h5>
+                                        <section class="image-section">
+                                            <img alt="Shoes" class="img-responsive" src="/kingfisher_pro/static/src/img/snippet/shoes.png" title="Shoes"/>
+                                        </section>
+                                        <div class="btn-box">
+                                            <button>SHOP NOW 
+                                                <i class="fa fa-angle-right"/></button>
+                                        </div>
+                                    </div>
+                                    <a href="#">
+                                        <span class="dark-div">
+                                            <span class="inner-div"/>
+                                        </span>
+                                    </a>
+                                </section>
+                                <section class="adsb-inner adsb-inner4 small-banners">
+                                    <div class="inner-content">
+                                        <h5>MEN'S WATCH</h5>
+                                        <section class="image-section">
+                                            <img alt="Watch" class="img-responsive" src="/kingfisher_pro/static/src/img/snippet/watch.png" title="Watch"/>
+                                        </section>
+                                        <div class="btn-box">
+                                            <button>SHOP NOW 
+                                                <i class="fa fa-angle-right"/></button>
+                                        </div>
+                                    </div>
+                                    <a href="#">
+                                        <span class="dark-div">
+                                            <span class="inner-div"/>
+                                        </span>
+                                    </a>
+                                </section>
+                            </div>
+                            <div class="col-lg-6 col-md-4 col-sm-4 col-xs-12">
+                                <section class="adsb-inner adsb-inner2 middle-banner" style="background:rgba(0,0,0,0) url(/kingfisher_pro/static/src/img/snippet/middle-box-bg.png)no-repeat; background-size:cover">
+                                    <div class="middle-content">
+                                        <a href="#">
+                                            <span class="line1">BIGGEST</span><br/>
+                                            <span class="line2">SALE</span><br/>
+                                            <span class="line3">50%</span>
+                                        </a>
+                                    </div>
+                                </section>
+                            </div>
+                            <div class="col-lg-3 col-md-4 col-sm-4 col-xs-12">
+                                <section class="adsb-inner adsb-inner3 small-banners">
+                                    <div class="inner-content">
+                                        <h5>WOMEN'S GLASSES</h5>
+                                        <section class="image-section">
+                                            <img alt="Spacs" class="img-responsive" src="/kingfisher_pro/static/src/img/snippet/spacs.png" title="Spacs"/>
+                                        </section>
+                                        <div class="btn-box">
+                                            <button>SHOP NOW <i class="fa fa-angle-right"/></button>
+                                        </div>
+                                    </div>
+                                   <a href="#">
+                                        <span class="dark-div">
+                                            <span class="inner-div"/>
+                                        </span>
+                                    </a>
+                                </section>
+                                <section class="adsb-inner adsb-inner3 small-banners">
+                                    <div class="inner-content">
+                                        <h5>WOMEN'S JEWELLARY</h5>
+                                        <section class="image-section">
+                                            <img alt="Jewellary" class="img-responsive" src="/kingfisher_pro/static/src/img/snippet/jewellary.png" title="Jewellary"/>
+                                        </section>
+                                        <div class="btn-box">
+                                            <button>SHOP NOW <i class="fa fa-angle-right"/></button>
+                                        </div>
+                                    </div>
+                                   <a href="#">
+                                        <span class="dark-div">
+                                            <span class="inner-div"/>
+                                        </span>
+                                    </a>
+                                </section>
+                            </div>
+                        </div>
+                    </div>
+                </section>
+
+                <!-- Single banner without slider -->
+                <section class="new-collection" style="background-image:url(/kingfisher_pro/static/src/img/snippet/bg-banner.png)">
+                    <div class="container">
+                        <div class="row">
+                            <div class="col-md-6 col-sm-6 sol-xs-6">
+                                <div class="inner-content">
+                                    <h5 class="">New collection</h5>
+                                    <h3>2016</h3>
+                                    <p>Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse
+                                        <br/>
+                                        molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero
+                                        <br/>
+                                        eros et accumsan et iusto odio dignissim qui blandit praesent luptatum
+                                        <br/>
+                                        zzril delenit augue duis dolore te feugait nulla facilisi.</p>
+                                </div>
+                                <div class="btn-box">
+                                    <a href="#">Shop now <i class="fa fa-angle-right"/></a>
+                                </div>
+                            </div>
+                            <div class="col-md-6 col-sm-6 sol-xs-6">
+                                <img alt="Bag" src="/kingfisher_pro/static/src/img/snippet/bag.png" title="Bag"/>
+                            </div>
+                        </div>
+                    </div>
+                </section>
+
+                <!-- Testimonals -->
+                <section class="testimonials oe_snippet_body" style="background-image:url(/kingfisher_pro/static/src/img/snippet/testimonial-bg.png)" data-scroll-background-ratio="0.3">
+                    <div class="container">
+                        <div class="row">
+                            <div class="col-md-3 col-sm-12">
+                                <div class="pf-page-title">
+                                    <h4 class="">Testimonials</h4>
+                                </div>
+                            </div>
+                            <div class="col-md-9 col-sm-12 slider">
+
+                                <div id="myQuoteCarousel" class="psb-inner carousel quotecarousel slide">
+                                    <div class="carousel-inner">
+                                        <div class="item text_only active">
+                                            <div class="container">
+                                                <div class="row content">
+                                                    <blockquote>
+                                                        <p>
+                                                            Write a quote here from one of your customers. Quotes are a
+                                                            great way to build confidence in your products or services.
+                                                        </p>
+                                                        <p class="author">John Warner</p>
+                                                        <p class="designation">CEO, ABC company</p>
+                                                    </blockquote>
+                                                </div>
+                                            </div>
+                                        </div>
+                                        <div class="item text_only">
+                                            <div class="container">
+                                                <div class="row content">
+                                                    <blockquote>
+                                                        <p>
+                                                            Odoo provides essential platform for our project management.
+                                                            Things are better organized and more visible with it.
+                                                        </p>
+                                                        <p class="author">John Warner</p>
+                                                        <p class="designation">CEO, ABC company</p>
+                                                    </blockquote>
+                                                </div>
+                                            </div>
+                                        </div>
+                                    </div>
+                                    <a class= "carousel-control left" href= "#myQuoteCarousel" data-slide= "prev"><i class='fa fa-arrow-left'/></a>
+                                    <a class= "carousel-control right" href= "#myQuoteCarousel" data-slide= "next"><i class='fa fa-arrow-right'/></a>
+                                </div>
+                            </div>
+                        </div>
+                    </div>
+                </section>
+
+                <!-- Service snippet -->
+                <section class="services text-center s_kingfisher_pro_service_snippet">
+                    <div class="container">
+                        <div class="row">
+                            <div class="col-sm-4">
+                                <a href="#">
+                                     <i class="fa fa-shopping-cart" aria-hidden="true" alt="Free Shipping"></i>
+                                </a>
+                                <h4 class="">
+                                    <b>FREE SHIPPING WORLDWIDE</b>
+                                </h4>
+                                <h5 class="">FREE SHIPPING WORLDWIDE</h5>
+                            </div>
+                            <div class="col-sm-4">
+                                <a href="#">
+                                    <i class="fa fa-phone" aria-hidden="true" Title="Customer Service" alt="Customer Service"></i>
+                                </a>
+                                <h4 class="">
+                                    <b>24/7 CUSTOMER SERVICE</b>
+                                </h4>
+                                <h5 class="">SERVICE SUPPORT 24/7</h5>
+                            </div>
+                            <div class="col-sm-4">
+                                <a href="#">
+                                    <i class="fa fa-money" aria-hidden="true" Title="Money Back" alt="Money Back"></i>
+                                </a>
+                                <h4 class="">
+                                    <b>MONEY BACK GUARANTEE !</b>
+                                </h4>
+                                <h5 class="">100% MONEY BACK - 30 DAYS</h5>
+                            </div>
+                        </div>
+                    </div>
+                </section>
+
+            </div>
+
+        </xpath>
+    </template>
+
+</data>
+</openerp>

+ 80 - 0
doc/changelog.rst

@@ -0,0 +1,80 @@
+========================
+``Kingfisher Pro Theme`` changelog
+========================
+
+*****
+
+Added translations file and make fields translatable
+
+*****
+
+1/. Added translation file for French(BE).
+
+2/. Make char fields translatable.
+
+*****
+
+Fixed the category paging issue
+
+*****
+
+1/. Fixed the issue which occured while switching pages into categories on website.
+
+
+*****
+
+Fixed paging issue
+
+*****
+
+1/. Fixed default paging issue
+
+
+*****
+
+Updated xpath for Product Quantity template
+
+*****
+
+1. Updated xpath for Product Quantity template
+
+
+*****
+
+Updated multi image slider for variant image support
+
+*****
+
+1. Updated multi image slider for variant image support
+
+
+*****
+
+Editing image was not possible when you create product using website
+
+*****
+
+1. Editing image was not possible when you create product using website.
+
+
+******************************************
+
+Provided access rights for theme features
+
+******************************************
+
+Provided access rights for the features like Multi image, sliders, tags and etc.
+
+
+******************************************
+Add some new features
+******************************************
+- Single product attribute will be visible on product detail page.
+- Fixed search issue with paging.
+- Removed "#0" and replaced it with "#" on the button to top.
+
+*****************************************
+Bug Fixes
+******************************************
+- Replace xrange function with range function.
+- Some minor bug fixes.

+ 6 - 0
models/__init__.py

@@ -0,0 +1,6 @@
+# -*- coding: utf-8 -*-
+# Part of AppJetty. See LICENSE file for full copyright and licensing details.
+
+import slider
+import products
+import website

BIN
models/__init__.pyc


+ 177 - 0
models/products.py

@@ -0,0 +1,177 @@
+# -*- coding: utf-8 -*-
+# Part of Biztech Consultancy. See LICENSE file for full copyright and licensing details.
+
+from openerp import api, fields, models, _
+from openerp.exceptions import Warning
+from openerp.addons.website_sale.controllers import main
+
+
+class Brands(models.Model):
+    _name = 'product.brands'
+
+    name = fields.Char(string='Nombre de Marca', required=True, translate=True)
+    brand_description = fields.Html(string='Descripción', translate=True)
+    brand_logo = fields.Binary(string='Logo de Marca')
+    brand_cover = fields.Binary(string='Logo Producto')
+    product_ids = fields.One2many(
+        'product.template',
+        'product_brand_id',
+        string='Marcas de Productos',
+    )
+    products_count = fields.Integer(
+        string='Numero de Productos',
+        compute='_get_products_count',
+    )
+
+    @api.one
+    @api.depends('product_ids')
+    def _get_products_count(self):
+        self.products_count = len(self.product_ids)
+
+
+class ProductStyleTags(models.Model):
+    _name = 'biztech.product.style.tag'
+
+    name = fields.Char(string='Nombre de Etiqueta', required=True, translate=True)
+    color = fields.Selection(
+        [('red', 'Rojo'), ('new', 'Verde'), ('sale', 'Naranja')], string="Color")
+    product_ids = fields.One2many(
+        'product.template',
+        'product_style_tag_id',
+        string='Etiqueta de Productos',
+    )
+
+
+class KingProductImages(models.Model):
+    _name = 'biztech.product.images'
+    _description = "Add Multiple Image in Product"
+
+    name = fields.Char(string='Titulo', translate=True)
+    alt = fields.Char(string='Alt', translate=True)
+    attach_type = fields.Selection([('image', 'Image'), ('video', 'Video')],
+                                   default='image',
+                                   string="Tipo")
+    image = fields.Binary(string='Imagen')
+    video_type = fields.Selection([('youtube', 'Youtube'),
+                                   ('vimeo', 'Vimeo'),
+                                   ('html5video', 'Html5 Video')],
+                                  default='youtube',
+                                  string="Video media player")
+    cover_image = fields.Binary(string='Imagen de Tapa',
+                                # required=True,
+                                help="Sera visto antes que el video cargue.")
+    video_id = fields.Char(string='Video ID')
+    video_ogv = fields.Char(string='Video OGV', help="Link for ogv format video")
+    video_webm = fields.Char(string='Video WEBM', help="Link for webm format video")
+    video_mp4 = fields.Char(string='Video MP4', help="Link for mp4 format video")
+    sequence = fields.Integer(string='Orden de clasificación')
+    product_tmpl_id = fields.Many2one('product.template', string='Producto')
+    more_view_exclude = fields.Boolean(string="Excluir Ver más ")
+
+
+class ProductTemplate(models.Model):
+    _inherit = 'product.template'
+
+    product_brand_id = fields.Many2one(
+        'product.brands',
+        string='Marca',
+        help='Seleccionar Marca para éste Producto'
+    )
+    images = fields.One2many('biztech.product.images', 'product_tmpl_id',
+                             string='Imagenes')
+    multi_image = fields.Boolean(string="Agregar Imagenes Multiples?")
+    tag_ids = fields.Many2many('biztech.product.tags', string="Etiquetas")
+    is_flip_image = fields. Boolean(
+        string="Agregar Imagen Cambiante", help="Habilita la opción de que se vea la imagen de atras, giro de imagen.")
+    flip_image = fields.Binary(string='Flip imagen',
+                               help="el giro de imagen se mostrará cuando el ratón pase por el producto específico.")
+    product_style_tag_id = fields.Many2one(
+        'biztech.product.style.tag',
+        string='Etiquetas',
+        help='Elija una Etiqueta para este producto'
+    )
+
+
+class ProductTags(models.Model):
+    _name = 'biztech.product.tags'
+    _order = "sequence"
+
+    name = fields.Char(string="Nombre de Etiqueta", help="Tag Name", required=True, translate=True)
+    active = fields.Boolean(
+        string="Activo", help="Habilitar o desabilitar etiquetas en el sitio web", default=True)
+    sequence = fields.Integer(
+        string='Sequencia', help="You can define sequence of tags you want to show tags")
+    product_ids = fields.Many2many('product.template', string='Productos', required=True)
+
+    _sql_constraints = [('unique_tag_name', 'unique(name)', 'Etiqueta debe ser unico..!'), ]
+
+
+class ProductSortBy(models.Model):
+    _name = 'biztech.product.sortby'
+
+    name = fields.Char(string="Nombre", help='Name for sorting option', translate=True,
+                       required=True)
+    sort_type = fields.Selection(
+        [('asc', 'Ascendiente'), ('desc', 'Descendiente')], string="Tipo", default='asc')
+    sort_on = fields.Many2one('ir.model.fields', string='Ordenar por',
+                              help='Select field on which you want to apply sorting',
+                              domain=[('model', '=', 'product.template'), ('ttype', 'in', ('char', 'float', 'integer', 'datetime', 'date'))])
+
+
+class ProductCategory(models.Model):
+    _inherit = 'product.public.category'
+
+    include_in_megamenu = fields.Boolean(
+        string="Incluir en el Mega Menu", help="Incluye en el menu")
+    menu_id = fields.Many2one('website.menu', string="Menu Principal")
+    description = fields.Text(string="Descripción",
+                              help="Breve descripción que será visible por debajo de la categoría.")
+
+
+class ProductPerPageNo(models.Model):
+    _name = "product.per.page.no"
+    _order = 'name asc'
+
+    name = fields.Integer(string='Productos por Página')
+    set_default_check = fields.Boolean(string="Colocar como Predeterminado")
+    prod_page_id = fields.Many2one('product.per.page')
+
+    @api.model
+    def create(self, vals):
+        res = super(ProductPerPageNo, self).create(vals)
+        if vals.get('name') == 0:
+            raise Warning(_("Warning! You cannot set 'zero' for product page."))
+        if vals.get('set_default_check'):
+            true_records = self.search(
+                [('set_default_check', '=', True), ('id', '!=', res.id)])
+            true_records.write({'set_default_check': False})
+        return res
+
+    @api.multi
+    def write(self, vals):
+        res = super(ProductPerPageNo, self).write(vals)
+        if vals.get('name') == 0:
+            raise Warning(_("Warning! You cannot set 'zero' for product page."))
+        if vals.get('set_default_check'):
+            true_records = self.search(
+                [('set_default_check', '=', True), ('id', '!=', self.id)])
+            true_records.write({'set_default_check': False})
+        return res
+
+
+class ProductPerPage(models.Model):
+    _name = "product.per.page"
+
+    name = fields.Char(string="Nombre de Etiqueta", translate=True)
+    no_ids = fields.One2many(
+        'product.per.page.no', 'prod_page_id', string="Nº de productos a mostrar")
+
+    @api.multi
+    def write(self, vals):
+        res = super(ProductPerPage, self).write(vals)
+        default_pg = self.env['product.per.page.no'].search([('set_default_check', '=', True)])
+        if default_pg.name:
+            main.PPG = int(default_pg.name)
+        else:
+            raise Warning(_("Warning! You have to set atleast one default value."))
+        return res

BIN
models/products.pyc


+ 102 - 0
models/slider.py

@@ -0,0 +1,102 @@
+# -*- coding: utf-8 -*-
+# Part of Biztech Consultancy. See LICENSE file for full copyright and licensing details.
+
+from openerp import api, fields, models
+
+
+class ProductCategorySlider(models.Model):
+    _name = 'product.category.slider.config'
+
+    name = fields.Char(string="Nombre del Slider", default='Ultimas Tendencias de la Moda', required=True,
+                       translate=True,
+                       help="Nombre del Titulo que sera mostrado en la página web...")
+    active = fields.Boolean(string="Activo", default=True)
+    no_of_counts = fields.Selection([('3', '3'), ('4', '4'), ('5', '5'), ('6', '6')], string="Cantidad",
+                                    default='4', required=True,
+                                    help="Cantidad de Productos que seran mostrados en el slide.")
+    prod_cat_type = fields.Selection([('product', 'Producto'), ('category', 'Categoria')],
+                                     string="Tipo de Slider", default='product', required=True,
+                                     help="Elija Producto o Categoira para mostrar en este slider.")
+    auto_rotate = fields.Boolean(string='Auto Rotar Slider', default=True)
+    sliding_speed = fields.Integer(string="Velocidad del Slider", default='5000',
+                                   help='Velocidad del Slide en milisegundos.')
+    collections_product = fields.Many2many('product.template', 'king_pro_product_slider_rel', 'slider_id',
+                                           'prod_id', string="Colecciones de Productos")
+    collections_category = fields.Many2many('product.public.category', 'king_pro_category_slider_rel',
+                                            'slider_id', 'cat_id', string="Colecciones de Categorias")
+
+
+class BlogSlider(models.Model):
+
+    _name = 'blog.slider.config'
+
+    name = fields.Char(string="Nombre de Slider", default='Blogs', translate=True,
+                       help="Nombre del Slide que sera mostrado en la página web..",
+                       required=True)
+    active = fields.Boolean(string="Activo", default=True)
+    no_of_counts = fields.Selection([('1', '1'), ('2', '2'), ('3', '3')], string="Cantidad",
+                                    default='3', help="Cantidad de Blogs que seran mostrados en la página web.", required=True)
+    auto_rotate = fields.Boolean(string='Auto Rotar Slider', default=True)
+    sliding_speed = fields.Integer(string="Velocidad del Slider", default='5000',
+                                   help='Velocidad del Slider en milisegundos.')
+    collections_blog_post = fields.Many2many('blog.post', 'blogpost_slider_rel', 'slider_id',
+                                             'post_id', string="Colecciones de publicaciones del blog", required=True)
+
+
+class MultiSlider(models.Model):
+    _name = 'multi.slider.config'
+
+    name = fields.Char(string="Nombre del Slider", default='Lanzamientos',
+                       required=True, translate=True,
+                       help="Slider title to be displayed on website like Best products, Latest and etc...")
+    active = fields.Boolean(string="Activo", default=True)
+
+    auto_rotate = fields.Boolean(string='Auto-rotar Slide', default=True)
+    sliding_speed = fields.Integer(string="Velocidad de deslizamiento", default='5000',
+                                   help='Velocidad del Slider en milisegundos.')
+
+    no_of_collection = fields.Selection([('2', '2'), ('3', '3'), ('4', '4'), ('5', '5')],
+                                        string="No. de Pestañas a Mostrar", default='2',
+                                        required=True,
+                                        help="Numero de Colecciones a mostrar.")
+
+    label_collection_1 = fields.Char(string="1er pestaña a Motrar", default='Primera Colección',
+                                     required=True, translate=True,
+                                     help="Collection label to be displayed in website like Men, Women, Kids, etc...")
+    collection_1_ids = fields.Many2many('product.template', 'product_slider_collection_1_rel', 'slider_id',
+                                        'prod_id',
+                                        required=True,
+                                        string="1ro Seleccionar Productos")
+
+    label_collection_2 = fields.Char(string="2da pestaña a Motrar", default='Segunda Colección',
+                                     required=True, translate=True,
+                                     help="Collection label to be displayed in website like Men, Women, Kids, etc...")
+    collection_2_ids = fields.Many2many('product.template', 'product_slider_collection_2_rel', 'slider_id',
+                                        'prod_id',
+                                        required=True,
+                                        string="2do Seleccionar Productos")
+
+    label_collection_3 = fields.Char(string="3ra pestaña a Motrar", default='Tercera Colección',
+                                     translate=True,
+                                     # required=True,
+                                     help="Collection label to be displayed in website like Men, Women, Kids, etc...")
+    collection_3_ids = fields.Many2many('product.template', 'product_slider_collection_3_rel', 'slider_id',
+                                        'prod_id',
+                                        # required=True,
+                                        string="3ro. Seleccionar Productos")
+
+    label_collection_4 = fields.Char(string="4th pestaña a Motrar", default='Cuarta Colección', translate=True,
+                                     # required=True,
+                                     help="Collection label to be displayed in website like Men, Women, Kids, etc...")
+    collection_4_ids = fields.Many2many('product.template', 'product_slider_collection_4_rel', 'slider_id',
+                                        'prod_id',
+                                        # required=True,
+                                        string="4to Seleccionar Productos")
+
+    label_collection_5 = fields.Char(string="5th pestaña a Motrar", default='Quita Colección', translate=True,
+                                     # required=True,
+                                     help="Collection label to be displayed in website like Men, Women, Kids, etc...")
+    collection_5_ids = fields.Many2many('product.template', 'product_slider_collection_5_rel', 'slider_id',
+                                        'prod_id',
+                                        # required=True,
+                                        string="5to Seleccionar Productos")

BIN
models/slider.pyc


+ 289 - 0
models/website.py

@@ -0,0 +1,289 @@
+# -*- coding: utf-8 -*-
+# Part of AppJetty. See LICENSE file for full copyright and licensing details.
+
+import math
+import werkzeug
+from openerp import api, fields, models, _
+from openerp.http import request
+from openerp.addons.website_sale.controllers import main
+
+PPG = 18
+
+
+class WebsiteMenu(models.Model):
+    _inherit = "website.menu"
+
+    is_megamenu = fields.Boolean(string='Es Megamenú...?')
+    megamenu_type = fields.Selection([('2_col', '2 Columnas'),
+                                      ('3_col', '3 Columnas'),
+                                      ('4_col', '4 Columnas')],
+                                     default='3_col',
+                                     string="Tipo de Mega Menu")
+    megamenu_bg = fields.Boolean(string='Colocar Fondo al Megamenu', default=False)
+    megamenu_bg_img_color = fields.Selection([('bg_img', 'Imágen de Fondo'),
+                                              ('bg_color', 'Color de Fondo')],
+                                             default='bg_img',
+                                             string="Seleccionar Fondo para el Mega Menu")
+    megamenu_bg_image = fields.Binary(string="Imágen de Fondo para el Mega Menú")
+    megamenu_bg_color = fields.Char(string="Color de Fondo para el Mega Menú",
+                                    default='#ccc',
+                                    help="Background color for megamenu, for setting background color you have to pass hexacode here.")
+    category_slider = fields.Boolean(string='Mostrar Slider de Categorias en el Menú', default=False)
+    carousel_header_name = fields.Char(string="Título el Slider",
+                                       default="Lanzamientos", translate=True,
+                                       help="Nombre que se Mostrara en el Encabezado del Slider de Categorias")
+    category_slider_position = fields.Selection([('left', 'Izquierda'), ('right', 'Derecha')],
+                                                default='left', string="Posición del Slider")
+    menu_icon = fields.Boolean(string='Mostrar Icono en el Menu', default=False)
+    menu_icon_image = fields.Binary(string="Icono del Menu ", help="Icono para tu menu")
+
+    display_menu_footer = fields.Boolean(string="Mostrar pie de página para tu menu", default=False,
+                                         help="Para Mostrar pie de página en el megamenu")
+    menu_footer = fields.Html(string="Contenido del Pie de Página",
+                              help="Nombre del Píe de Página para el meganenu")
+    customize_menu_colors = fields.Boolean(string='Personalizar Colores del Menu', default=False)
+    main_category_color = fields.Char(string='Color Principal de la Categoria',
+                                      help="Colocar color para la categoria principal del menu")
+    sub_category_color = fields.Char(string='Color para la Sub Categoria',
+                                     help="Colocar color para la subcategoria")
+
+
+class website(models.Model):
+    _inherit = 'website'
+
+    # For Multi image
+    thumbnail_panel_position = fields.Selection([
+        ('left', 'Izquierda'),
+        ('right', 'Derecha'),
+        ('bottom', 'Fondo'),
+    ], default='left',
+        string='Posición del Panel de Miniaturas',
+        help="Seleccione la posición en la que desea mostrar el panel de miniaturas de multi-imagenes.")
+    interval_play = fields.Char(string='Intervalo de Imágenes del Slide', default='5000',
+                                help='Con este campo se puede establecer el tiempo o intervalo entre dos imágenes.')
+    enable_disable_text = fields.Boolean(string='Activar el panel de texto',
+                                         default=True,
+                                         help='Activar/Desactivar el texto que aparece en la imagen en imagen de varias.')
+    color_opt_thumbnail = fields.Selection([
+        ('default', 'Predeterminado'),
+        ('b_n_w', 'Blanco y Negro'),
+        ('sepia', 'Sepia'),
+        ('blur', 'Desenfoque'), ],
+        default='default',
+        string="Efecto sobre las miniaturas")
+    no_extra_options = fields.Boolean(string='Efectos sobre Sliders',
+                                      default=True,
+                                      help="Slider con todas las opciones para la siguiente, anterior, reproducción, pausa, pantalla completa, ocultar / mostrar el panel de miniaturas.")
+    change_thumbnail_size = fields.Boolean(string="Cambiar Tamaño de Miniaturas", default=False)
+    thumb_height = fields.Char(string='Altura de Imágen', default=50)
+    thumb_width = fields.Char(string='Ancho de Imágen', default=88)
+
+    # For Sort By
+    enable_sort_by = fields.Boolean(string='Habilitar opción de clasificación de productos',
+                                    help='Para habilitar la característica de ordenación del producto en el sitio web.',
+                                    default=True)
+
+    # For first last pager
+    enable_first_last_pager = fields.Boolean(string="Habilitar primera y ultima paginación", default=True,
+                                             help="Activar esta casilla para mostrar el boton 'Primera' y el botón 'Última' en el paginador en el sitio web.")
+    # Product per grid
+    product_display_grid = fields.Selection([('2', '2'), ('3', '3'), ('4', '4')],
+                                            default='3', string='Producto por cuadrícula', help="Mostrar Nro. de productos por línea en el sitio web de la red de productos.")
+
+    # For first last pager
+    def get_pager_selection(self):
+        prod_per_page = self.env['product.per.page'].search([])
+        prod_per_page_no = self.env['product.per.page.no'].search([])
+        values = {
+            'name': prod_per_page.name,
+            'page_no': prod_per_page_no,
+        }
+        return values
+
+    def get_current_pager_selection(self):
+        if request.session.get('default_paging_no'):
+            return int(request.session.get('default_paging_no'))
+        else:
+            return PPG
+
+    def pager(self, cr, uid, ids, url, total, page=1, step=30, scope=5, url_args=None, context=None):
+        res = super(website, self). pager(cr, uid, ids, url=url,
+                                          total=total,
+                                          page=page,
+                                          step=step,
+                                          scope=scope,
+                                          url_args=url_args,
+                                          context=context)
+        # Compute Pager
+        page_count = int(math.ceil(float(total) / step))
+
+        page = max(1, min(int(page if str(page).isdigit() else 1), page_count))
+        scope -= 1
+
+        pmin = max(page - int(math.floor(scope/2)), 1)
+        pmax = min(pmin + scope, page_count)
+
+        if pmax - pmin < scope:
+            pmin = pmax - scope if pmax - scope > 0 else 1
+
+        def get_url(page):
+            _url = "%s/page/%s" % (url, page) if page > 1 else url
+            if url_args:
+                if url_args.get('tag'):
+                    del url_args['tag']
+                if url_args.get('range1'):
+                    del url_args['range1']
+                if url_args.get('range2'):
+                    del url_args['range2']
+                if url_args.get('max1'):
+                    del url_args['max1']
+                if url_args.get('min1'):
+                    del url_args['min1']
+                if url_args.get('sort_id'):
+                    del url_args['sort_id']
+                if not url_args.get('tag') and not url_args.get('range1') and not url_args.get('range2') and not url_args.get('max1') and not url_args.get('min1') and not url_args.get('sort_id'):
+                    _url = "%s?%s" % (_url, werkzeug.url_encode(url_args))
+            return _url
+        res.update({
+            # Overrite existing
+            "page_start": {
+                'url': get_url(pmin),
+                'num': pmin
+            },
+            "page_previous": {
+                'url': get_url(max(pmin, page - 1)),
+                'num': max(pmin, page - 1)
+            },
+            "page_next": {
+                'url': get_url(min(pmax, page + 1)),
+                'num': min(pmax, page + 1)
+            },
+            "page_end": {
+                'url': get_url(pmax),
+                'num': pmax
+            },
+            'page_first': {
+                'url': get_url(1),
+                'num': 1
+            },
+            'page_last': {
+                'url': get_url(int(res['page_count'])),
+                'num': int(res['page_count'])
+            },
+            'pages': [
+                {'url': get_url(page), 'num': page}
+                for page in range(pmin, pmax+1)
+            ]
+        })
+        return res
+
+    # For multi image
+    @api.multi
+    def get_multiple_images(self, product_id=None):
+        product_img_data = False
+        if product_id:
+            self.env.cr.execute(
+                "select id from biztech_product_images where product_tmpl_id=%s and more_view_exclude IS NOT TRUE order by sequence", ([product_id]))
+            product_ids = map(lambda x: x[0], self.env.cr.fetchall())
+            if product_ids:
+                product_img_data = self.env['biztech.product.images'].browse(
+                    product_ids)
+        return product_img_data
+
+    # For brands
+    def sale_product_domain(self, cr, uid, ids, context=None):
+        domain = super(website, self).sale_product_domain(cr, uid, ids=ids,
+                                                          context=context)
+        if 'brand_id' in request.context:
+            domain.append(
+                ('product_brand_id', '=', request.context['brand_id']))
+        return domain
+
+    # For product tags feature
+    def get_product_tags(self):
+        product_tags = self.env['biztech.product.tags'].search([])
+        return product_tags
+
+    # For Sorting products
+    def get_sort_by_data(self):
+        request.session['product_sort_name'] = ''
+        sort_by = self.env['biztech.product.sortby'].search([])
+        return sort_by
+
+    # For setting current sort list
+    def set_current_sorting_data(self):
+        sort_name = request.session.get('product_sort_name')
+        return sort_name
+
+    # For megamenu
+    @api.multi
+    def get_public_product_category(self, submenu):
+        categories = self.env['product.public.category'].search([('parent_id', '=', False),
+                                                                 ('include_in_megamenu',
+                                                                  '!=', False),
+                                                                 ('menu_id', '=', submenu.id)],
+                                                                order="sequence")
+        return categories
+
+    def get_public_product_child_category(self, children):
+        child_categories = []
+        for child in children:
+            categories = self.env['product.public.category'].search([
+                ('id', '=', child.id),
+                ('include_in_megamenu', '!=', False)], order="sequence")
+            if categories:
+                child_categories.append(categories)
+        return child_categories
+
+
+class WebsiteConfigSettings(models.TransientModel):
+
+    _inherit = 'website.config.settings'
+
+    # For multi image
+    thumbnail_panel_position = fields.Selection([
+        ('left', 'Izquierda'),
+        ('right', 'Derecha'),
+        ('bottom', 'Fondo')],
+        string='Posición del Panel de Miniaturas',
+        related='website_id.thumbnail_panel_position',
+        help="Select the position where you want to display the thumbnail panel in multi image.")
+    interval_play = fields.Char(string='Intervalo de Desplazamiento del Slide',
+                                related='website_id.interval_play',
+                                help='Con este campo se puede establecer el tiempo de intervalo entre dos imágenes.')
+    enable_disable_text = fields.Boolean(string='Activar Panel de Texto',
+                                         related='website_id.enable_disable_text',
+                                         help='Activar/Desactivar el texto que aparecera en el sitio web en multi-imagenes.')
+    color_opt_thumbnail = fields.Selection([
+        ('default', 'Default'),
+        ('b_n_w', 'Blanco y Negro'),
+        ('sepia', 'Sepia'),
+        ('blur', 'Desenfoque')],
+        related='website_id.color_opt_thumbnail',
+        string="Efectos sobre las Miniaturas")
+    no_extra_options = fields.Boolean(string='Efectos del Slider',
+                                      # default=True,
+                                      related='website_id.no_extra_options',
+                                      help="Slider con las opciones para  siguiente, anterior, reproducción, pausa, pantalla completa, ocultar/mostrar el panel de miniaturas.")
+    change_thumbnail_size = fields.Boolean(string="Cambiar Tamaño de las Miniaturas",
+                                           related="website_id.change_thumbnail_size"
+                                           )
+    thumb_height = fields.Char(string='Altura de Miniatura',
+                               related="website_id.thumb_height"
+                               )
+    thumb_width = fields.Char(string='Ancho de Miniatura',
+                              related="website_id.thumb_width"
+                              )
+
+    # For Sort By
+    enable_sort_by = fields.Boolean(related="website_id.enable_sort_by", string='Habilitar opción de clasificación de productos',
+                                    help='For enabling product sorting feature in website.',
+                                    default=True)
+
+    # For first last pager
+    enable_first_last_pager = fields.Boolean(related='website_id.enable_first_last_pager',
+                                             string="Habilitar boton Primera y boton Ultima Página", default=True,
+                                             help="Activar este checkbox para el boton 'Primero' y boton'Ultimo' en el sitio web.")
+    # Product per grid
+    product_display_grid = fields.Selection(related='website_id.product_display_grid',
+                                            default='3', string='Producto por cuadrícula', help="Muestra el Nro. de productos por línea en el sitio web de la red de productos.")

BIN
models/website.pyc


+ 19 - 0
security/ir.model.access.csv

@@ -0,0 +1,19 @@
+id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
+access_product_category_slider_config,access_product_category_slider_config,model_product_category_slider_config,,1,0,0,0
+access_product_brands,access_product_brands,model_product_brands,,1,0,0,0
+access_blog_slider_config,access_blog_slider_config,model_blog_slider_config,,1,0,0,0
+access_biztech_product_images,access_biztech_product_images,model_biztech_product_images,,1,0,0,0
+access_biztech_product_tags,access_biztech_product_tags,model_biztech_product_tags,,1,0,0,0
+access_biztech_product_sortby,access_biztech_product_sortby,model_biztech_product_sortby,,1,0,0,0
+access_multi_slider_config,access_multi_slider_config,model_multi_slider_config,,1,0,0,0
+access_product_per_page_no,access_product_per_page_no,model_product_per_page_no,,1,0,0,0
+access_product_per_page,access_product_per_page,model_product_per_page,,1,0,0,0
+access_biztech_product_style_tag,access_biztech_product_style_tag,model_biztech_product_style_tag,,1,0,0,0
+access_biztech_product_brand,access_biztech_product_brand,model_product_brands,base.group_website_designer,1,1,1,1
+access_biztech_product_catagory_slider,access_biztech_product_catagory_slider,model_product_category_slider_config,base.group_website_designer,1,1,1,1
+access_biztech_multi_product_slider,access_biztech_multi_product_slider,model_multi_slider_config,base.group_website_designer,1,1,1,1
+access_biztech_custom_product_style_tag,access_biztech_custom_product_style_tag,model_biztech_product_style_tag,base.group_website_designer,1,1,1,1
+access_biztech_product_sorting,access_biztech_product_sorting,model_biztech_product_sortby,base.group_website_designer,1,1,1,1
+access_biztech_custom_product_tags,access_biztech_custom_product_tags,model_biztech_product_tags,base.group_website_designer,1,1,1,1
+access_biztech_product_multiple_images,access_biztech_product_multiple_images,model_biztech_product_images,base.group_website_designer,1,1,1,1
+access_biztech_website_product_paging,access_biztech_website_product_paging,model_product_per_page,base.group_website_designer,1,1,1,1

BIN
static/description/blog.png


BIN
static/description/brand.png


BIN
static/description/building-blocks.jpg


BIN
static/description/categories.png


BIN
static/description/category-slider.png


BIN
static/description/falcon_theme.png


BIN
static/description/features.png


BIN
static/description/flip-product.png


BIN
static/description/footer.png


BIN
static/description/icon.png


BIN
static/description/icons.png


+ 419 - 0
static/description/index.html

@@ -0,0 +1,419 @@
+<section class="oe_container">
+    <div class="oe_row oe_spaced">
+        <div class="oe_span12">
+            <h2 class="oe_slogan" style="color:#FF5D5D;">A Fashion Online Store With Outstanding Elements</h2>
+            <p class=" text-center text-muted" style=" font-size:20px">Are you looking for a dedicated theme on fashion industry for your e-commerce store? Well, AppJetty has come up with specialized theme for fashion industry with kingfisher brand naming Kingfisher Pro Fashion that is dedicatedly made for widely growing E-Commerce Fashion Industry. With the help of multiple snippets provided by the Theme admin can customize the store with elegant looks. Kingfisher Pro Fashion has support for apps like Advance Mega Menu &amp; Custom Product Image Gallery, so admin can represent the products and its categories &amp; subcategories effectively.</p>
+        </div>
+    </div>
+    <div class="container-fluid" style="background-color:#E8E8E8; padding:20px 0px 90px 0px">
+        <div class="oe_row oe_spaced">
+            <h2 class="oe_slogan" style="color:#FF5D5D;">Why Kingfisher Pro Fashion</h2>
+        </div>
+        <div class="container" style="line-height:32px;">
+            <div class="col-md-12 text-center">
+                <img src="icons.png" class="img-responsive" />
+            </div>
+        </div>
+    </div>
+    <div class="container" style="border-bottom: 1px solid rgba(225, 225, 225, 0.57); padding:20px 0px">
+        <div class="oe_row oe_spaced">
+            <h2 class="oe_slogan" style="color:#FF5D5D;">Building Blocks</h2>
+            <p class=" text-muted text-center" style="font-size:20px">Odoo Kingfisher Pro Fashion imparts great benefits in the form of stellar design. Get the store speed optimized with Less CSS. It is a professional responsive theme which helps enhance the look and feel of your fashion store. 
+            </p>
+        </div>
+        <div class="container">
+            <div class="col-md-12 text-center">
+                <img src="building-blocks.jpg" class="img-responsive" />
+            </div>
+        </div>
+    </div>
+</section>
+<section class="oe_container " style="padding:20px 0px">
+    <div class="oe_row oe_spaced">
+        <h2 class="oe_slogan" style="color:#FF5D5D; margin-bottom:0px;">Significant Features</h2>
+    </div>
+    <div class="oe_row oe_spaced">
+        <div class="oe_span12">
+            <p class="text-muted text-center" style="font-size:20px">Pick this handy tool to customize your store in a simple way. By implementing its prominent features, you can create an exquisite fashion store with a better output. </p>
+        </div>
+    </div>
+    <section class="container oe_dark" style="padding: 20px 5px 0px; margin-bottom:50px">
+        <div class="container">
+            <div class="col-md-6">
+                <img class="img-border img-responsive thumbnail" src="slider.png" />
+            </div>
+            <div class="col-md-6">
+                <h3 style="color:#FF5D5D;">Banner Slider Snippet</h3>
+                <p class="text-muted text-left">With the Brand Slider Snippet display all the highly engaging brands from your store. Customize content and images for exclusive look &amp; feel of the banner.
+            </p>
+            </div>
+        </div>
+    </section>
+    <section class="container oe_dark" style="padding: 20px 5px 0px; margin-bottom:50px">
+        <div class="container">
+            <div class="col-md-6">
+                <h3 class="text-left" style="color:#FF5D5D;">Product Slider snippet</h3>
+                <ul style="list-style-type:none; padding-left:0">
+                    <li>
+                        <p class="text-muted">Add a snippet to your E-Commerce store containing exclusive products from product list.</p>
+                    </li>
+                    <li>
+                        <p class="text-muted">From this snippet your customer can directly add product to the cart and can also see ratings of the added product.</p>
+                    </li>
+                    <li>
+                        <p class="text-muted">Product Slider snippet supports two different widths:
+                </p>
+                        <ul style="list-style-type:disc; padding: 13px;">
+                            <li>
+                                <p class="text-muted">Full Page Width Slider</p>
+                            </li>
+                            <li>
+                                <p class="text-muted">Box Width Slider</p>
+                            </li>
+                        </ul>
+                    </li>
+                </ul>
+            </div>
+            <div class="col-md-6">
+                <img class="img-border img-responsive thumbnail" src="product-slider.png" />
+            </div>
+        </div>
+    </section>
+    <section class="container oe_dark" style="padding: 20px 5px 0px; margin-bottom:50px">
+        <div class="container">
+            <div class="col-md-6">
+                <img class="img-border img-responsive thumbnail" src="category-slider.png" />
+            </div>
+            <div class="col-md-6">
+                <h3 class="text-left" style="color:#FF5D5D;">Category Slider snippet</h3>
+                <ul style="list-style-type:none; padding-left:0">
+                    <li>
+                        <p class="text-muted">Add a snippet to your E-Commerce store containing exclusive products from product Categories. List Multiple Product Categories and add products to them.</p>
+                    </li>
+                    <li>
+                        <p class="text-muted">Category Slider snippet supports two different widths:</p>
+                    </li>
+                    <ul>
+                        <li>
+                            <p class="text-muted">Full Page Width Slider</p>
+                        </li>
+                        <li>
+                            <p class="text-muted">Box Width Slider</p>
+                        </li>
+                    </ul>
+                </ul>
+            </div>
+        </div>
+    </section>
+    <section class="container oe_dark" style="padding: 20px 5px 0px; margin-bottom:50px">
+        <div class="container">
+            <div class="col-md-6">
+                <h3 class="text-left" style="color:#FF5D5D;">Multi Products Tab SliderSnippet</h3>
+                <p class="text-muted">You can add products of multiple types into one single slider. There will be switchable tabs to display the products. You can add as many products as you want in that slider in numerous tabs.</p>
+            </div>
+            <div class="col-md-6">
+                <img class="img-border img-responsive thumbnail" src="tabs.png" />
+            </div>
+        </div>
+    </section>
+    <section class="container oe_dark" style="padding: 20px 5px 0px; margin-bottom:50px">
+        <div class="container">
+            <div class="col-md-6">
+                <img class="img-border img-responsive thumbnail" src="promo.png" />
+            </div>
+            <div class="col-md-6">
+                <h3 class="text-left" style="color:#FF5D5D;">Promo Snippet</h3>
+                <ul style="list-style-type:none; padding-left:0">
+                    <li>
+                        <p class="text-muted">Add promo products in your store with editable advertisements. Customer can directly shop for that product from the Promo snippet.</p>
+                    </li>
+                    <li>
+                        <p class="text-muted">You can also add URL for the text and set styles accordingly.</p>
+                    </li>
+                </ul>
+            </div>
+        </div>
+    </section>
+    <section class="container oe_dark" style="padding: 20px 5px 0px; margin-bottom:50px">
+        <div class="container">
+            <div class="col-md-6">
+                <h3 class="text-left" style="color:#FF5D5D;">Brand Snippet</h3>
+                <p class="text-muted">Display all the high profile brands’ products that your store endorses. Customer can directly shop for products of the presented brands from the brand slider.</p>
+            </div>
+            <div class="col-md-6">
+                <img class="img-border img-responsive thumbnail" src="brand.png" />
+            </div>
+        </div>
+    </section>
+    <section class="container oe_dark" style="padding: 20px 5px 0px; margin-bottom:50px">
+        <div class="container">
+            <div class="col-md-6">
+                <img class="img-border img-responsive thumbnail" src="single-slider.png" />
+            </div>
+            <div class="col-md-6">
+                <h3 class="text-left" style="color:#FF5D5D;">Single Banner Without Slider</h3>
+                <p class="text-muted">Display the most elite collection of your store with the single banner and highlight it for the store customers.
+            </p>
+            </div>
+        </div>
+    </section>
+    <section class="container oe_dark" style="padding: 20px 5px 0px; margin-bottom:50px">
+        <div class="container">
+            <div class="col-md-6">
+                <h3 class="text-left" style="color:#FF5D5D;">Blog Slider snippet</h3>
+                <p class="text-muted">Display the latest blogs posted by your site or related to your products with Blog Slider Snippet provided by the theme. </p>
+            </div>
+            <div class="col-md-6">
+                <img class="img-border img-responsive thumbnail" src="blog.png" />
+            </div>
+        </div>
+    </section>
+    <section class="container oe_dark" style="padding: 20px 5px 0px; margin-bottom:50px">
+        <div class="container">
+            <div class="col-md-6">
+                <img class="img-border img-responsive thumbnail" src="testimonials.png" />
+            </div>
+            <div class="col-md-6">
+                <h3 class="text-left" style="color:#FF5D5D;">Testimonials Slider snippet</h3>
+                <p class="text-muted">Show the world what people have to say about your e-commerce store with the Testimonial Slider Snippet.</p>
+            </div>
+        </div>
+    </section>
+    <section class="container oe_dark" style="padding: 20px 5px 0px; margin-bottom:50px">
+        <div class="container">
+            <div class="col-md-6">
+                <h3 class="text-left" style="color:#FF5D5D;">Services snippet</h3>
+                <p class="text-muted">Demonstrate extra – ordinary services that you provide for your customers with Kingfisher Pro Fashion’s Service Snippet.</p>
+            </div>
+            <div class="col-md-6">
+                <img class="img-border img-responsive thumbnail" src="service.png" />
+            </div>
+        </div>
+    </section>
+    <section class="container oe_dark" style="padding: 20px 5px 0px; margin-bottom:50px">
+        <div class="container">
+            <div class="col-md-6">
+                <img class="img-border img-responsive thumbnail" src="reviews.png" />
+            </div>
+            <div class="col-md-6">
+                <h3 class="text-left" style="color:#FF5D5D;">Managing Product Reviews</h3>
+                <p class="text-muted">Manage the reviews of the products provided by the users. Option to publish, unpublish and edit the reviews.</p>
+            </div>
+        </div>
+    </section>
+    <section class="container oe_dark" style="padding: 20px 5px 0px; margin-bottom:50px">
+        <div class="container">
+            <div class="col-md-6">
+                <h3 class="text-left" style="color:#FF5D5D;">Advance Mega Menu</h3>
+                <p class="text-muted">Make your simple menu mega menu with the help of Advance Mega Menu available in Kingfisher Pro Fashion Theme. Display all the product categories and sub categories in mega menu for easy and better navigation.</p>
+            </div>
+            <div class="col-md-6">
+                <img class="img-border img-responsive thumbnail" src="mega-menu.png" />
+            </div>
+        </div>
+    </section>
+    <section class="container oe_dark" style="padding: 20px 5px 0px; margin-bottom:50px">
+        <div class="container">
+            <div class="col-md-6">
+                <img class="img-border img-responsive thumbnail" src="multiple-products.png" />
+            </div>
+            <div class="col-md-6">
+                <h3 class="text-left" style="color:#FF5D5D;">Product Multiple Image Gallery</h3>
+                <p class="text-muted">The Kingfisher Pro Fashion theme has a support for Product multiple image galleries with image zoom in/out, image full screen and video support.</p>
+            </div>
+        </div>
+    </section>
+    <section class="container oe_dark" style="padding: 20px 5px 0px; margin-bottom:50px">
+        <div class="container">
+            <div class="col-md-6">
+                <h3 class="text-left" style="color:#FF5D5D;">Theme Customization</h3>
+                <p class="text-muted">You can customize the theme the way you want. You can change the theme layout, Theme’s main color &amp; Theme’s font combination.</p>
+            </div>
+            <div class="col-md-6">
+                <img class="img-border img-responsive thumbnail" src="theme-customization.png" />
+            </div>
+        </div>
+    </section>
+    <section class="container oe_dark" style="padding: 20px 5px 0px; margin-bottom:50px">
+        <div class="container">
+            <div class="col-md-6">
+                <img class="img-border img-responsive thumbnail" src="footer.png" />
+            </div>
+            <div class="col-md-6">
+                <h3 class="text-left" style="color:#FF5D5D;">Customizable Header &amp; Footer</h3>
+                <p class="text-muted">You can customize the header &amp; footer as per your requirements for fascinating looks. You can add / delete in from the header and footer as per the needs as it is totally customizable block. You can also add links to header &amp; footer content for speedy navigation.</p>
+            </div>
+        </div>
+    </section>
+    <section class="container oe_dark" style="padding: 20px 5px 0px; margin-bottom:50px">
+        <div class="container">
+            <div class="col-md-6">
+                <h3 class="text-left" style="color:#FF5D5D;">Multiple Product Views</h3>
+                <p class="text-muted">Customers can view the products in a grid view or a list view as per their likes.</p>
+                <p>
+                    <b>NOTE: To use this feature do not enable Default List View provided by Odoo.</b>
+                </p>
+            </div>
+            <div class="col-md-6">
+                <img class="img-border img-responsive thumbnail" src="multiple-views.png" />
+            </div>
+        </div>
+    </section>
+    <section class="container oe_dark" style="padding: 20px 5px 0px; margin-bottom:50px">
+        <div class="container">
+            <div class="col-md-6">
+                <img class="img-border img-responsive thumbnail" src="categories.png" />
+            </div>
+            <div class="col-md-6">
+                <h3 class="text-left" style="color:#FF5D5D;">Categorized Product List</h3>
+                <p class="text-muted">Manage product category list as per your choice. You can make the category list collapsible to save space and make the look of the site more compact from Customize menu of the website.</p>
+            </div>
+        </div>
+    </section>
+    <section class="container oe_dark" style="padding: 20px 5px 0px; margin-bottom:50px">
+        <div class="container">
+            <div class="col-md-6">
+                <h3 class="text-left" style="color:#FF5D5D;">Product Sorting with Price Slider</h3>
+                <p class="text-muted">Customer can sort the products on all the product attributes provided by the admin at the time of product configurations. Price Slider can be to the website from Customize option in website.</p>
+            </div>
+            <div class="col-md-6">
+                <img class="img-border img-responsive thumbnail" src="price-slider.png" />
+            </div>
+        </div>
+    </section>
+    <section class="container oe_dark" style="padding: 20px 5px 0px; margin-bottom:50px">
+        <div class="container">
+            <div class="col-md-6">
+                <img class="img-border img-responsive thumbnail" src="tags.png" />
+            </div>
+            <div class="col-md-6">
+                <h3 class="text-left" style="color:#FF5D5D;">Product Sorting with Product Tags</h3>
+                <p class="text-muted">Customer can sort the products on Product Tags provided by admin for Sorting.</p>
+            </div>
+        </div>
+    </section>
+    <section class="container oe_dark" style="padding: 20px 5px 0px; margin-bottom:50px">
+        <div class="container">
+            <div class="col-md-6">
+                <h3 class="text-left" style="color:#FF5D5D;">Product Pagination</h3>
+                <p class="text-muted">Admin can set Pagination for the shop page from back end and let customers decide products to display from given options.</p>
+            </div>
+            <div class="col-md-6">
+                <img class="img-border img-responsive thumbnail" src="pagination.png" />
+            </div>
+        </div>
+    </section>
+    <section class="container oe_dark" style="padding: 20px 5px 0px; margin-bottom:50px">
+        <div class="container">
+            <div class="col-md-6">
+                <img class="img-border img-responsive thumbnail" src="flip-product.png" />
+            </div>
+            <div class="col-md-6">
+                <h3 class="text-left" style="color:#FF5D5D;">Flipping Product Display Image</h3>
+                <p class="text-muted">Customer can see front &amp; back view of product. By hovering on the product image customer can see back side of product.</p>
+            </div>
+        </div>
+    </section>
+    <section class="container oe_dark" style="padding: 20px 5px 0px; margin-bottom:50px">
+        <div class="container">
+            <div class="col-md-6">
+                <h3 class="text-left" style="color:#FF5D5D;">Products Per Grid</h3>
+                <p class="text-muted">Admin can set product numbers which can be seen on the shop page in one grid.</p>
+            </div>
+            <div class="col-md-6">
+                <img class="img-border img-responsive thumbnail" src="products-per-grid.png" />
+            </div>
+        </div>
+    </section>
+    <section class="container oe_dark" style="padding: 20px 5px 0px; margin-bottom:50px">
+        <div class="container">
+            <div class="col-md-6">
+                <img class="img-border img-responsive thumbnail" src="selected-filters.png" />
+            </div>
+            <div class="col-md-6">
+                <h3 class="text-left" style="color:#FF5D5D;">Selected Filters</h3>
+                <p class="text-muted">Customers can see all the filters they have applied to the shop page in the Selected Filters Section. They can directly remove that filter from the section also.</p>
+            </div>
+        </div>
+    </section>
+    <section class="container oe_dark" style="padding: 20px 5px 0px; margin-bottom:50px">
+        <div class="container">
+            <div class="col-md-6">
+                <h3 class="text-left" style="color:#FF5D5D;">Multiple Store Support</h3>
+                <p class="text-muted">Admin can add multiple languages for the store and can also add currencies for it accordingly.</p>
+            </div>
+            <div class="col-md-6">
+                <img class="img-border img-responsive thumbnail" src="multiple-store-support.png" />
+            </div>
+        </div>
+    </section>
+    <section class="container oe_dark" style="padding: 20px 5px 0px; margin-bottom:50px">
+        <div class="container">
+            <div class="col-md-6">
+                <img class="img-border img-responsive thumbnail" src="search.png" />
+            </div>
+            <div class="col-md-6">
+                <h3 class="text-left" style="color:#FF5D5D;">Global Product Search</h3>
+                <p class="text-muted">User can search for product from any page of the website. The Search option is given in the Header Sticky menu for more powerful search.</p>
+            </div>
+        </div>
+    </section>
+   <!--  <section class="container oe_dark">
+        <div class="container">
+            <div class="col-md-12">
+                <h3 class="text-left" style="color:#FF5D5D;">Customizing Store Shop Page</h3>
+                <p class="text-muted">Admin can configure store shop page as per requirement by adding or removing things that are needed.</p>
+            </div>
+        </div>
+    </section> -->
+
+    <section class="oe_container " style="padding:20px 0px">
+        <div class="oe_row oe_spaced">
+            <h2 class="oe_slogan" style="color:#FF5D5D; margin-bottom:0px;">You may also like</h2>
+        </div>
+        <div class="container">
+            <div class="col-md-4">
+                <a href="https://www.odoo.com/apps/themes/9.0/kingfisher">
+                    <img class="img-border img-responsive thumbnail" src="kingfisher.jpg" />
+                </a>
+            </div>
+            <div class="col-md-4">
+                <a href="https://www.odoo.com/apps/themes/9.0/falcon_backend_theme">
+                    <img class="img-border img-responsive thumbnail" src="falcon_theme.png" />
+                </a>
+            </div>
+            <div class="col-md-4">
+                <a href="https://www.odoo.com/apps/themes/9.0/kingfisher_pro_bicycle">
+                    <img class="img-border img-responsive thumbnail" src="kingfisher_pro_bicycle.png" />
+                </a>
+            </div>
+        </div>
+    </section>
+    <section class="oe_container">
+        <div class="oe_row oe_spaced">
+            <div class="col-md-6 img-content">
+                <h3>Our Odoo Services</h3>
+            </div>
+            <div class="bc-span col-md-12">
+                <div class="inner-span">
+                    <a target="_blank" href="https://goo.gl/3OCf0g">
+                        <img class="img-border img-responsive thumbnail" src="service-banner.png" />
+                    </a>
+                </div>
+            </div>
+        </div>
+    </section>
+    <section class="oe_container">
+        <div class="oe_row oe_spaced">
+            <div class="col-md-12 img-content text-center">
+                <h2>Technical Help &amp; Support</h2>
+                <p style="margin: 30px 0px;">We offer extremely convenient and quick support service to all your technical help &amp; support requests. As our support <br /> service is the parameter defining the success of our business and earning us the brand name.       <br />    Please feel free to contact us</p>
+                <div class="text-center">
+                    <a style="color: rgb(255, 255, 255); border-color: rgb(49, 91, 143); position: relative; overflow: hidden; background: none 0% 0% repeat scroll rgb(49, 91, 143);" class="btn btn-success btn-lg" rel="nofollow" href="mailto:support@appjetty.com">
+                        <i class="fa fa-envelope"></i>  support@appjetty.com </a>
+                </div>
+                <br />
+            </div>
+        </div>
+    </section>
+</section>

BIN
static/description/kingfisher-pro-fashion_Banner_1.png


BIN
static/description/kingfisher.jpg


BIN
static/description/kingfisher_pro_bicycle.png


BIN
static/description/mega-menu.png


BIN
static/description/men-bg-new.png


BIN
static/description/multiple-products.png


BIN
static/description/multiple-store-support.png


BIN
static/description/multiple-views.png


BIN
static/description/pagination.png


BIN
static/description/price-slider.png


BIN
static/description/product-slider.png


BIN
static/description/products-per-grid.png


BIN
static/description/promo.png


BIN
static/description/reviews.png


BIN
static/description/search.png


BIN
static/description/selected-filters.png


BIN
static/description/service-banner.png


BIN
static/description/service.png


BIN
static/description/single-slider.png


BIN
static/description/slider.png


BIN
static/description/splash-screen.png


BIN
static/description/splash-screen_screenshot.png


BIN
static/description/tabs.png


BIN
static/description/tags.png


BIN
static/description/testimonials.png


BIN
static/description/theme-customization.png


+ 150 - 0
static/src/css/ion.rangeSlider.css

@@ -0,0 +1,150 @@
+/* Ion.RangeSlider
+// css version 2.0.3
+// © 2013-2014 Denis Ineshin | IonDen.com
+// ===================================================================================================================*/
+
+/* =====================================================================================================================
+// RangeSlider */
+
+.irs {
+    position: relative; display: block;
+    -webkit-touch-callout: none;
+    -webkit-user-select: none;
+     -khtml-user-select: none;
+       -moz-user-select: none;
+        -ms-user-select: none;
+            user-select: none;
+}
+    .irs-line {
+        position: relative; display: block;
+        overflow: hidden;
+        outline: none !important;
+    }
+        .irs-line-left, .irs-line-mid, .irs-line-right {
+            position: absolute; display: block;
+            top: 0;
+        }
+        .irs-line-left {
+            left: 0; width: 11%;
+        }
+        .irs-line-mid {
+            left: 9%; width: 82%;
+        }
+        .irs-line-right {
+            right: 0; width: 11%;
+        }
+
+    .irs-bar {
+        position: absolute; display: block;
+        left: 0; width: 0;
+    }
+        .irs-bar-edge {
+            position: absolute; display: block;
+            top: 0; left: 0;
+        }
+
+    .irs-shadow {
+        position: absolute; display: none;
+        left: 0; width: 0;
+    }
+
+    .irs-slider {
+        position: absolute; display: block;
+        cursor: default;
+        z-index: 1;
+    }
+        .irs-slider.single {
+
+        }
+        .irs-slider.from {
+
+        }
+        .irs-slider.to {
+
+        }
+        .irs-slider.type_last {
+            z-index: 2;
+        }
+
+    .irs-min {
+        position: absolute; display: block;
+        left: 0;
+        cursor: default;
+    }
+    .irs-max {
+        position: absolute; display: block;
+        right: 0;
+        cursor: default;
+    }
+
+    .irs-from, .irs-to, .irs-single {
+        position: absolute; display: block;
+        top: 0; left: 0;
+        cursor: default;
+        white-space: nowrap;
+    }
+
+.irs-grid {
+    position: absolute; display: none;
+    bottom: 0; left: 0;
+    width: 100%; height: 20px;
+}
+.irs-with-grid .irs-grid {
+    display: block;
+}
+    .irs-grid-pol {
+        position: absolute;
+        top: 0; left: 0;
+        width: 1px; height: 8px;
+        background: #000;
+    }
+    .irs-grid-pol.small {
+        height: 4px;
+    }
+    .irs-grid-text {
+        position: absolute;
+        bottom: 0; left: 0;
+        white-space: nowrap;
+        text-align: center;
+        font-size: 9px; line-height: 9px;
+        padding: 0 3px;
+        color: #000;
+    }
+
+.irs-disable-mask {
+    position: absolute; display: block;
+    top: 0; left: -1%;
+    width: 102%; height: 100%;
+    cursor: default;
+    background: rgba(0,0,0,0.0);
+    z-index: 2;
+}
+.lt-ie9 .irs-disable-mask {
+    background: #000;
+    filter: alpha(opacity=0);
+    cursor: not-allowed;
+}
+
+.irs-disabled {
+    opacity: 0.4;
+}
+
+
+.irs-hidden-input {
+    position: absolute !important;
+    display: block !important;
+    top: 0 !important;
+    left: 0 !important;
+    width: 0 !important;
+    height: 0 !important;
+    font-size: 0 !important;
+    line-height: 0 !important;
+    padding: 0 !important;
+    margin: 0 !important;
+    overflow: hidden;
+    outline: none !important;
+    z-index: -9999 !important;
+    background: none !important;
+    border-style: solid !important;
+    border-color: transparent !important;
+}

+ 124 - 0
static/src/css/ion.rangeSlider.skinHTML5.css

@@ -0,0 +1,124 @@
+/* Ion.RangeSlider, Simple Skin
+// css version 2.0.3
+// © Denis Ineshin, 2014    https://github.com/IonDen
+// © guybowden, 2014        https://github.com/guybowden
+// ===================================================================================================================*/
+
+/* =====================================================================================================================
+// Skin details */
+
+.irs {
+    height: 55px;
+}
+.irs-with-grid {
+    height: 75px;
+}
+.irs-line {
+    height: 10px; top: 33px;
+    background: #EEE;
+    background: linear-gradient(to bottom, #DDD -50%, #FFF 150%); /* W3C */
+    border: 1px solid #CCC;
+    border-radius: 16px;
+    -moz-border-radius: 16px;
+}
+    .irs-line-left {
+        height: 8px;
+    }
+    .irs-line-mid {
+        height: 8px;
+    }
+    .irs-line-right {
+        height: 8px;
+    }
+
+.irs-bar {
+    height: 10px; top: 33px;
+    border-top: 1px solid #428bca;
+    border-bottom: 1px solid #428bca;
+    background: #428bca;
+    background: linear-gradient(to top, rgba(66,139,202,1) 0%,rgba(127,195,232,1) 100%); /* W3C */
+}
+    .irs-bar-edge {
+        height: 10px; top: 33px;
+        width: 14px;
+        border: 1px solid #428bca;
+        border-right: 0;
+        background: #428bca;
+        background: linear-gradient(to top, rgba(66,139,202,1) 0%,rgba(127,195,232,1) 100%); /* W3C */
+        border-radius: 16px 0 0 16px;
+        -moz-border-radius: 16px 0 0 16px;
+    }
+
+.irs-shadow {
+    height: 2px; top: 38px;
+    background: #000;
+    opacity: 0.3;
+    border-radius: 5px;
+    -moz-border-radius: 5px;
+}
+.lt-ie9 .irs-shadow {
+    filter: alpha(opacity=30);
+}
+
+.irs-slider {
+    top: 25px;
+    width: 27px; height: 27px;
+    border: 1px solid #AAA;
+    background: #DDD;
+    background: linear-gradient(to bottom, rgba(255,255,255,1) 0%,rgba(220,220,220,1) 20%,rgba(255,255,255,1) 100%); /* W3C */
+    border-radius: 27px;
+    -moz-border-radius: 27px;
+    box-shadow: 1px 1px 3px rgba(0,0,0,0.3);
+    cursor: pointer;
+}
+
+.irs-slider.state_hover, .irs-slider:hover {
+    background: #FFF;
+}
+
+.irs-min, .irs-max {
+    color: #333;
+    font-size: 12px; line-height: 1.333;
+    text-shadow: none;
+    top: 0;
+    padding: 1px 5px;
+    background: rgba(0,0,0,0.1);
+    border-radius: 3px;
+    -moz-border-radius: 3px;
+}
+
+.lt-ie9 .irs-min, .lt-ie9 .irs-max {
+    background: #ccc;
+}
+
+.irs-from, .irs-to, .irs-single {
+    color: #fff;
+    font-size: 14px; line-height: 1.333;
+    text-shadow: none;
+    padding: 1px 5px;
+    background: #428bca;
+    border-radius: 3px;
+    -moz-border-radius: 3px;
+}
+.lt-ie9 .irs-from, .lt-ie9 .irs-to, .lt-ie9 .irs-single {
+    background: #999;
+}
+
+.irs-grid {
+    height: 27px;
+}
+.irs-grid-pol {
+    opacity: 0.5;
+    background: #428bca;
+}
+.irs-grid-pol.small {
+    background: #999;
+}
+
+.irs-grid-text {
+    bottom: 5px;
+    color: #99a4ac;
+}
+
+.irs-disabled {
+}

+ 45 - 0
static/src/css/kingfisher_pro.css

@@ -0,0 +1,45 @@
+.ug-gallery-wrapper .ug-slider-wrapper {
+    background-color: rgb(245, 245, 245);
+    overflow: hidden;
+    position: absolute;
+    z-index: 1;
+}
+.ug-gallery-wrapper .ug-strip-panel {
+    background-color: rgb(245, 245, 245);
+    position: absolute;
+    z-index: 2;
+}
+#o_shop_collapse_category li a {
+  display: inline-block;
+  width: 80%;
+  padding-left: 3px; }
+#o_shop_collapse_category li i.fa {
+  cursor: pointer; }
+
+@font-face {
+	font-family: 'icomoon';
+	src: url('whatsap/icomoon.eot?o0ssr6');
+	src: url('whatsap/icomoon1.eot?o0ssr6#iefix') format('embedded-opentype'), url('whatsap/icomoon.ttf?o0ssr6') format('truetype'), url('whatsap/icomoon.woff?o0ssr6') format('woff'), url('whatsap/icomoon.svg?o0ssr6#icomoon') format('svg');
+	font-weight: normal;
+	font-style: normal
+}
+[class^="icon-"], [class*=" icon-"] {
+	font-family: 'icomoon' !important;
+	speak: none;
+	font-style: normal;
+	font-weight: normal;
+	font-variant: normal;
+	text-transform: none;
+	line-height: 1;
+	-webkit-font-smoothing: antialiased;
+	-moz-osx-font-smoothing: grayscale
+}
+.icon-ecommerce:before {
+	content: "\e900"
+}
+.icon-tecnologia:before {
+	content: "\e901"
+}
+.icon-whatsapp:before {
+	content: "\e902"
+}

+ 71 - 0
static/src/css/owl.carousel.css

@@ -0,0 +1,71 @@
+/* 
+ * 	Core Owl Carousel CSS File
+ *	v1.3.3
+ */
+
+/* clearfix */
+.owl-carousel .owl-wrapper:after {
+	content: ".";
+	display: block;
+	clear: both;
+	visibility: hidden;
+	line-height: 0;
+	height: 0;
+}
+/* display none until init */
+.owl-carousel{
+	display: none;
+	position: relative;
+	width: 100%;
+	-ms-touch-action: pan-y;
+}
+.owl-carousel .owl-wrapper{
+	display: none;
+	position: relative;
+	-webkit-transform: translate3d(0px, 0px, 0px);
+}
+.owl-carousel .owl-wrapper-outer{
+	overflow: hidden;
+	position: relative;
+	width: 100%;
+}
+.owl-carousel .owl-wrapper-outer.autoHeight{
+	-webkit-transition: height 500ms ease-in-out;
+	-moz-transition: height 500ms ease-in-out;
+	-ms-transition: height 500ms ease-in-out;
+	-o-transition: height 500ms ease-in-out;
+	transition: height 500ms ease-in-out;
+}
+	
+.owl-carousel .owl-item{
+	float: left;
+}
+.owl-controls .owl-page,
+.owl-controls .owl-buttons div{
+	cursor: pointer;
+}
+.owl-controls {
+	-webkit-user-select: none;
+	-khtml-user-select: none;
+	-moz-user-select: none;
+	-ms-user-select: none;
+	user-select: none;
+	-webkit-tap-highlight-color: rgba(0, 0, 0, 0);
+}
+
+/* mouse grab icon */
+.grabbing { 
+    cursor:url(grabbing.png) 8 8, move;
+}
+
+/* fix */
+.owl-carousel  .owl-wrapper,
+.owl-carousel  .owl-item{
+	-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);
+}
+

+ 71 - 0
static/src/css/owl.carousel2.css

@@ -0,0 +1,71 @@
+/* 
+ * 	Core Owl Carousel CSS File
+ *	v1.3.3
+ */
+
+/* clearfix */
+.owl-carousel .owl-wrapper:after {
+	content: ".";
+	display: block;
+	clear: both;
+	visibility: hidden;
+	line-height: 0;
+	height: 0;
+}
+/* display none until init */
+.owl-carousel{
+	display: none;
+	position: relative;
+	width: 100%;
+	-ms-touch-action: pan-y;
+}
+.owl-carousel .owl-wrapper{
+	display: none;
+	position: relative;
+	-webkit-transform: translate3d(0px, 0px, 0px);
+}
+.owl-carousel .owl-wrapper-outer{
+	overflow: hidden;
+	position: relative;
+	width: 100%;
+}
+.owl-carousel .owl-wrapper-outer.autoHeight{
+	-webkit-transition: height 500ms ease-in-out;
+	-moz-transition: height 500ms ease-in-out;
+	-ms-transition: height 500ms ease-in-out;
+	-o-transition: height 500ms ease-in-out;
+	transition: height 500ms ease-in-out;
+}
+	
+.owl-carousel .owl-item{
+	float: left;
+}
+.owl-controls .owl-page,
+.owl-controls .owl-buttons div{
+	cursor: pointer;
+}
+.owl-controls {
+	-webkit-user-select: none;
+	-khtml-user-select: none;
+	-moz-user-select: none;
+	-ms-user-select: none;
+	user-select: none;
+	-webkit-tap-highlight-color: rgba(0, 0, 0, 0);
+}
+
+/* mouse grab icon */
+.grabbing { 
+    cursor:url(grabbing.png) 8 8, move;
+}
+
+/* fix */
+.owl-carousel  .owl-wrapper,
+.owl-carousel  .owl-item{
+	-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);
+}
+

+ 1354 - 0
static/src/css/unite-gallery.css

@@ -0,0 +1,1354 @@
+.---------Protection--------{}
+
+.ug-gallery-wrapper, 
+.ug-gallery-wrapper *{
+	transition: all !important;
+	-o-transition: all !important;
+	-webkit-transition: all;
+	-moz-transition: all !important;
+	-ms-transition: all !important;
+	max-width:none;
+}
+
+.ug-gallery-wrapper{
+	z-index:0;
+} 
+
+.ug-item-wrapper img{
+	width:auto;
+	max-width:none;
+}
+
+.---------General_Styles--------{}
+
+.ug-rtl{
+	direction:rtl;
+}
+
+.ug-gallery-wrapper{
+	overflow:hidden;
+	position:relative;
+	font-family:Arial, Helvetica, sans-serif;
+}
+
+.ug-error-message{
+	text-align:center;
+	padding-top:30px;
+	padding-bottom:30px;
+	font-size:20px;
+	color:#F30D0D;
+}
+
+.ug-error-message-wrapper{
+	width:100%;
+	height:100%;
+	border:1px solid black;
+}
+
+.ug-gallery-wrapper .ug-canvas-pie{
+	position:absolute;
+	z-index:4;
+}
+
+.ug-gallery-wrapper .ug-progress-bar{
+	position:absolute;
+	overflow:hidden;
+	z-index:4;
+}
+
+.ug-gallery-wrapper .ug-progress-bar-inner{
+	xposition:absolute;
+}
+
+.ug-gallery-wrapper.ug-fullscreen{
+	height: 100% !important;
+	width: 100% !important;
+	max-width:none !important;
+	max-height:none !important;
+}
+
+.ug-gallery-wrapper.ug-fake-fullscreen{
+	position: fixed !important;
+	height: auto !important;
+	width: auto !important;
+	max-width:none !important;
+	max-height:none !important;
+	margin: 0px !important;
+	padding: 0px !important;
+	top: 0px !important;
+	left: 0px !important;
+	bottom: 0px !important;
+	right: 0px !important;
+	z-index: 999999 !important;
+}
+
+.ug-body-fullscreen{
+	overflow: hidden !important;
+	height: 100% !important;
+	width: 100% !important;
+	margin:0px !important;
+	padding:0px !important;	
+}
+
+.ug-gallery-wrapper .ug-preloader-trans{
+	display:block;
+	height:35px;
+	width:32px;
+	height:32px;
+	background-image:url('../images/loader_skype_trans.gif');
+	background-repeat:no-repeat;
+}
+
+
+.--------------SLIDER------------------{}
+
+.ug-gallery-wrapper .ug-slider-wrapper{
+	position:absolute;
+	overflow:hidden;
+	z-index:1;
+	background-color:#000000;
+}
+
+
+.ug-slider-wrapper .ug-slide-wrapper{
+	position:absolute;
+}
+
+.ug-slide-wrapper.ug-slide-clickable{
+	cursor:pointer;
+}
+
+.ug-slider-wrapper .ug-slider-inner{
+	position:absolute;
+	z-index:0;
+}
+
+.ug-slider-wrapper .ug-item-wrapper{
+	position:absolute;
+	overflow:hidden;
+}
+
+.ug-slider-wrapper,
+.ug-item-wrapper img{
+	
+	-webkit-user-select: none;	/* make unselectable */         
+	-moz-user-select: none; 
+	-ms-user-select: none;	
+	max-width:none !important;
+	box-sizing:border-box;
+}
+
+.ug-slider-wrapper .ug-slider-preloader{
+	position:absolute;
+	z-index:1;
+	border:2px solid #ffffff;
+	border-radius:6px;
+	background-color:#ffffff;
+	background-position:center center;
+	background-repeat:no-repeat;
+}
+
+.ug-slider-preloader.ug-loader1{
+	width:30px;
+	height:30px;
+	background-image:url('../images/loader-white1.gif');
+}
+
+.ug-slider-preloader.ug-loader1.ug-loader-black{
+	background-image:url('../images/loader-black1.gif');	
+}
+	
+.ug-slider-preloader.ug-loader2{
+	width:32px;
+	height:32px;
+	background-image:url('../images/loader-white2.gif');
+}
+
+.ug-slider-preloader.ug-loader2.ug-loader-black{
+	background-image:url('../images/loader-black2.gif');	
+}
+
+.ug-slider-preloader.ug-loader3{
+	width:38px;
+	height:38px;
+	background-image:url('../images/loader-white3.gif');
+}
+
+.ug-slider-preloader.ug-loader3.ug-loader-black{
+	background-image:url('../images/loader-black3.gif');	
+}
+
+.ug-slider-preloader.ug-loader4{
+	width:32px;
+	height:32px;
+	background-image:url('../images/loader-white4.gif');
+	background-color:white;
+}
+
+.ug-slider-preloader.ug-loader4.ug-loader-black{
+	background-image:url('../images/loader-black4.gif');	
+}
+
+.ug-slider-preloader.ug-loader5{
+	width:60px;
+	height:8px;
+	background-image:url('../images/loader-white5.gif');
+	background-color:white;
+	border:none;
+	border-radius:0px;
+}
+
+.ug-slider-preloader.ug-loader5.ug-loader-black{
+	background-image:url('../images/loader-black5.gif');
+	border:2px solid #000000;
+}
+
+.ug-slider-preloader.ug-loader6{
+	width:32px;
+	height:32px;
+	background-image:url('../images/loader-white6.gif');
+}
+
+.ug-slider-preloader.ug-loader6.ug-loader-black{
+	background-image:url('../images/loader-black6.gif');	
+}
+
+.ug-slider-preloader.ug-loader7{
+	width:32px;
+	height:10px;
+	background-image:url('../images/loader-white7.gif');
+	border-width:3px;
+	border-radius:3px;
+}
+
+.ug-slider-preloader.ug-loader7.ug-loader-black{
+	background-image:url('../images/loader-black7.gif');	
+}
+
+.ug-slider-preloader.ug-loader-black{
+	border-color:#000000;
+	background-color:#000000;
+}
+
+.ug-slider-preloader.ug-loader-nobg{
+	background-color:transparent;
+}
+
+.ug-slider-wrapper .ug-button-videoplay{
+	position:absolute;
+	z-index:2;
+	cursor:pointer;	
+}
+
+.ug-slider-wrapper .ug-button-videoplay.ug-type-square{	
+	width:86px;
+	height:66px;
+	background-image:url('../images/play-button-square.png');
+	background-position:0px -66px;
+}
+
+.ug-slider-wrapper .ug-button-videoplay.ug-type-square.ug-button-hover{
+	background-position:0px 0px;
+}
+
+
+.ug-slider-wrapper .ug-button-videoplay.ug-type-round{	
+	width:76px;
+	height:76px;
+	background-image:url('../images/play-button-round.png');
+	opacity:0.9;
+	filter: alpha(opacity = 90);
+	transition: all 0.3s ease 0s !important;
+}
+
+
+.ug-slider-wrapper .ug-button-videoplay.ug-type-round.ug-button-hover{
+	opacity:1;
+	filter: alpha(opacity = 100);
+	transition: all 0.3s ease 0s !important;
+}
+
+
+.--------------VIDEO_PLAYER------------------{}
+
+.ug-gallery-wrapper .ug-videoplayer{
+	position:absolute;
+	z-index:100;	
+	background-color:#000000;
+	background-image:url('../images/loader-black1.gif');	
+	background-repeat:no-repeat;
+	background-position:center center;
+	box-sizing:border-box;
+	-moz-box-sizing:border-box;
+}
+
+.ug-videoplayer .ug-videoplayer-wrapper{
+	width:100%;
+	height:100%;
+	background-color:#000000;
+	background-image:url('../images/loader-black1.gif');	
+	background-repeat:no-repeat;
+	background-position:center center;
+}
+
+
+.ug-videoplayer .ug-videoplayer-button-close{
+	position:absolute;
+	height:64px;
+	width:64px;
+	background-image:url('../images/button-close.png');
+	cursor:pointer;
+	z-index:1000;
+}
+
+
+.ug-videoplayer .ug-videoplayer-button-close:hover{
+	background-position: 0px -64px;
+}
+
+.--------------THUMBS_STRIP------------------{}
+
+
+.ug-gallery-wrapper .ug-thumbs-strip,
+.ug-gallery-wrapper .ug-thumbs-grid{
+	position:absolute;
+	overflow:hidden;
+	
+	-webkit-user-select: none;	/* make unselectable */         
+	-moz-user-select: none; 
+	-ms-user-select: none;
+	
+	xbackground-color:green;
+	z-index:10;
+}
+
+.ug-thumbs-strip.ug-dragging{
+	xcursor: -webkit-grab;
+	xcursor: -moz-grab;
+}
+
+.ug-gallery-wrapper .ug-thumbs-strip-inner,
+.ug-gallery-wrapper .ug-thumbs-grid-inner{
+	position:absolute;
+}
+
+.ug-thumb-wrapper.ug-thumb-generated{
+	position:absolute;
+	overflow:hidden;
+	
+	-webkit-user-select: none;	/* make unselectable */         
+	-moz-user-select: none; 
+	-ms-user-select: none;
+	
+	box-sizing:border-box;
+	-moz-box-sizing:border-box;
+}
+
+
+.ug-thumb-wrapper.ug-thumb-generated .ug-thumb-loader,
+.ug-thumb-wrapper.ug-thumb-generated .ug-thumb-error{
+	position:absolute;
+	top:0px;
+	left:0px;
+	background-repeat:no-repeat;
+	background-position:center center;
+}
+
+.ug-thumb-wrapper .ug-thumb-border-overlay{
+	position:absolute;
+	top:0px;
+	left:0px;
+	z-index:4;
+	box-sizing:border-box;
+	-moz-box-sizing:border-box;
+	border-style:solid;
+}
+
+.ug-thumb-wrapper .ug-thumb-overlay{
+	position:absolute;
+	top:0px;
+	left:0px;
+	z-index:3;
+}
+
+.ug-thumb-wrapper.ug-thumb-generated .ug-thumb-loader-dark{
+	background-image:url('../images/loader.gif');
+}
+
+.ug-thumb-wrapper.ug-thumb-generated .ug-thumb-loader-bright{
+	background-image:url('../images/loader_bright.gif');
+}
+
+.ug-thumb-wrapper.ug-thumb-generated .ug-thumb-error{
+	background-image:url('../images/not_loaded.png');
+}
+
+.ug-thumb-wrapper.ug-thumb-generated img{
+	position:absolute;
+	z-index:1;
+	max-width:none !important;
+}
+
+.ug-thumb-wrapper.ug-thumb-generated img.ug-thumb-image-overlay{
+	position:absolute;
+	z-index:2;
+	max-width:none !important;
+}
+
+
+/* bw desaturate effect lightweight */
+img.ug-bw-effect{
+	-webkit-filter: grayscale(1); 
+	-webkit-filter: grayscale(100%); 
+	-moz-filter: grayscale(100%);
+	filter: gray; 
+	filter: grayscale(100%);
+    filter: url("data:image/svg+xml;utf8,<svg xmlns=\'http://www.w3.org/2000/svg\'><filter id=\'grayscale\'><feColorMatrix type=\'matrix\' values=\'0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0 0 0 1 0\'/></filter></svg>#grayscale"); /* Firefox 10+, Firefox on Android */	
+}
+
+/* blur effect desaturate effect lightweight */
+img.ug-blur-effect{
+	
+	filter: blur(0.8px); 
+	-webkit-filter: blur(0.8px);
+	-moz-filter: blur(0.8px);
+	-o-filter: blur(0.8px);
+	-ms-filter: blur(0.8px);    
+    filter: url("data:image/svg+xml;utf8,<svg xmlns=\'http://www.w3.org/2000/svg\'><filter id='blur'><feGaussianBlur stdDeviation=\'0.8\' /></filter></svg>#blur"); /* Firefox 10+, Firefox on Android */
+	filter:progid:DXImageTransform.Microsoft.Blur(PixelRadius='0.8');
+}
+
+img.ug-sepia-effect{
+	-webkit-filter: sepia(1);
+	-webkit-filter: sepia(100%); -moz-filter: sepia(100%);
+	-ms-filter: sepia(100%); -o-filter: sepia(100%);
+	filter: url("data:image/svg+xml;utf8,<svg xmlns=\'http://www.w3.org/2000/svg\'><filter id=\'sepia\'><feColorMatrix values=\'0.14 0.45 0.05 0 0 0.12 0.39 0.04 0 0 0.08 0.28 0.03 0 0 0 0 0 1 0\' /></filter></svg>#sepia"); /* Firefox 10+, Firefox on Android */
+	filter: sepia(100%);
+	background-color: #5E2612;
+	filter: alpha(opacity = 50);
+	zoom:1;
+}
+
+
+.--------------BULLETS------------------{}
+
+
+.ug-gallery-wrapper .ug-bullets{
+	position: absolute;
+	top:0px;
+	left:0px;
+	margin:0px;
+	padding:0px;
+}
+
+.ug-gallery-wrapper .ug-bullets .ug-bullet{
+	background-repeat:no-repeat;
+	cursor:pointer;
+	display:block;
+	float:left;
+	z-index:2;
+}
+
+.ug-gallery-wrapper .ug-bullets .ug-bullet:first-child{
+	margin-left:0px;
+}
+
+
+.--------------TEXT_PANEL------------------{}
+
+.ug-gallery-wrapper .ug-textpanel{
+	position:absolute;
+	overflow:hidden;
+}
+
+.ug-slider-wrapper .ug-textpanel{
+	z-index:2;
+}
+
+.ug-gallery-wrapper .ug-textpanel-bg,
+.ug-gallery-wrapper .ug-textpanel-title,
+.ug-gallery-wrapper .ug-textpanel-description{
+	display:block;
+	position:absolute;
+	margin:0px;
+	padding:0px;
+}
+
+
+.ug-gallery-wrapper .ug-textpanel-bg{
+	background-color:#000000;
+	opacity:0.4;
+	filter: alpha(opacity = 40);
+	z-index:1;
+}
+
+.ug-textpanel-textwrapper{
+	overflow:hidden;
+}
+
+.ug-gallery-wrapper .ug-textpanel-title{
+	font-size:16px;
+	font-weight:bold;
+	color:white;
+	text-align:left;
+	z-index:2;	
+}
+
+.ug-gallery-wrapper .ug-textpanel-description{
+	font-size:14px;
+	color:white;
+	text-align:left;
+	z-index:3;
+}
+
+
+.--------------ZOOM_PANEL------------------{}
+
+.ug-slider-wrapper .ug-zoompanel{
+	position:absolute;
+	top:200px;
+	left:100px;
+}
+
+.ug-zoompanel .ug-zoompanel-button{
+    background-repeat: no-repeat;
+    cursor:pointer;
+    display:block;
+}
+
+
+.--------------ZOOM_PANEL_BUTTONS------------------{}
+
+.ug-gallery-wrapper .ug-arrow-left{
+	position:absolute;	
+	background-repeat:no-repeat;
+	display:block;
+	cursor:pointer;
+}
+
+.ug-gallery-wrapper .ug-arrow-right{
+	position:absolute;
+	background-repeat:no-repeat;
+	cursor:pointer;
+}
+
+
+.--------------GRID_PANEL_AND_ARROWS------------------{}
+
+
+.ug-gallery-wrapper .ug-grid-panel{
+	position:absolute;
+    background-color: #000000;
+    xbackground-color: blue;
+
+    z-index:2;
+}
+
+
+.ug-gallery-wrapper .ug-grid-panel .grid-arrow{
+	position:absolute;
+	background-repeat:no-repeat;
+	cursor:pointer;
+	z-index:11;
+}
+
+.ug-gallery-wrapper .ug-grid-panel .grid-arrow.ug-button-disabled{
+	cursor:default;	
+}
+
+
+/* handle tip */
+.ug-gallery-wrapper .ug-panel-handle-tip{
+	position:absolute;
+	z-index:13;
+	cursor:pointer;
+}
+
+.ug-gallery-wrapper .ug-overlay-disabled{
+	position:absolute;
+	z-index:100;
+	width:100%;
+	height:100%;
+	background-color:#000000;
+	opacity: 0.3;
+    filter: alpha(opacity=30);	
+	background-image:url('../images/cover-grid.png');
+}
+
+
+.--------------STRIP_PANEL------------------{}
+
+.ug-gallery-wrapper .ug-strip-panel{
+	position:absolute;
+	background-color:#000000;
+	z-index:2;
+}
+
+.ug-strip-panel .ug-strip-arrow{
+	position:absolute;	
+	cursor:pointer;
+}
+
+.ug-strip-panel .ug-strip-arrow.ug-button-disabled{
+	cursor:default;
+}
+
+
+.ug-strip-panel .ug-strip-arrow-tip{
+	position:absolute;
+}
+
+.--------------TILES------------------{}
+
+.ug-thumb-wrapper.ug-tile{
+	display:block;
+	position:absolute;
+	box-sizing:border-box;
+	-moz-box-sizing:border-box;
+	overflow:hidden;
+	padding:0px;
+	margin:0px;
+}
+
+.ug-tile .ug-tile-cloneswrapper{
+	position:absolute;
+	width:0px;
+	height:0px;
+	top:0px;
+	left:0px;
+	overflow:hidden;
+	opacity:0;
+	filter: alpha(opacity = 90);
+}
+
+
+/* transit something */
+/* transit fixed size items */
+/* transit image overlay */
+
+.ug-tiles-transit.ug-tiles-transition-active .ug-thumb-wrapper.ug-tile,
+.ug-tiles-transit.ug-tiles-transition-active .ug-thumb-wrapper.ug-tile .ug-trans-enabled{
+	transition: left 0.7s ease 0s, top 0.7s ease 0s, width 0.7s ease 0s, height 0.7s ease 0s !important;
+}
+
+
+.ug-thumb-wrapper.ug-tile.ug-tile-clickable{
+	cursor: pointer;
+}
+
+.ug-thumb-wrapper.ug-tile .ug-image-container{
+	position:absolute;
+	overflow:hidden;
+	z-index:1;
+	top:0px;
+	left:0px;
+}
+
+.ug-thumb-wrapper.ug-tile img.ug-thumb-image{
+
+	-webkit-user-select: none;	/* make unselectable */         
+	-moz-user-select: none; 
+	-ms-user-select: none;	
+	max-width:none !important;
+	max-height:none !important;
+
+	display:block;	
+	border:none;
+	padding:0px !important;
+	margin:0px !important;
+	
+	width:auto;
+	height:auto;
+	position:absolute;
+}
+
+
+.ug-thumb-wrapper.ug-tile .ug-tile-image-overlay{
+	position:absolute;
+	overflow:hidden;
+	z-index:2;
+	top:0px;
+	left:0px;
+}
+
+.ug-thumb-wrapper.ug-tile .ug-tile-image-overlay img{
+	width:100%;
+	max-width:none !important;	
+}
+
+.ug-tiletype-justified .ug-thumb-wrapper.ug-tile .ug-tile-image-overlay img{
+	height:100%;
+	max-width:none !important;	
+}
+
+.ug-thumb-wrapper.ug-tile .ug-tile-icon{
+	position:absolute;
+	width:38px;
+	height:38px;
+	background-repeat:no-repeat;
+	background-position:0 0;
+	xbackground-color:green;
+	z-index:6;
+	top:1px;
+	left:1px;
+	cursor:pointer;
+}
+
+.ug-thumb-wrapper.ug-tile .ug-tile-icon.ug-icon-link{
+	background-image:url('../images/icon-link32.png');	
+}
+
+.ug-thumb-wrapper.ug-tile .ug-tile-icon.ug-icon-zoom{
+	background-image:url('../images/icon-zoom32.png');	
+}
+
+.ug-thumb-wrapper.ug-tile .ug-tile-icon.ug-icon-play{
+	background-image:url('../images/icon-play32.png');	
+}
+
+.ug-thumb-wrapper.ug-tile .ug-tile-icon:hover{
+	background-position:0 -38px;
+}
+
+
+.ug-thumbs-grid .ug-tile-image-overlay img{
+	width:auto;
+	height:auto;
+	position:absolute;
+	max-width:none !important;
+}
+
+/* text panel on tiles*/
+
+.ug-tile .ug-textpanel{
+	z-index: 5;
+	cursor:default;
+}
+
+.ug-tile.ug-tile-clickable .ug-textpanel{
+	cursor:pointer;
+}
+
+.ug-tile .ug-textpanel-title{
+	font-size:14px;
+	font-weight:bold;
+}
+
+.--------------CAROUSEL------------------{}
+
+.ug-gallery-wrapper .ug-carousel-wrapper{
+	position:absolute;
+	overflow:hidden;
+}
+
+.ug-gallery-wrapper .ug-carousel-inner{
+	position:absolute;
+}
+
+
+.------------------LIGHTBOX---------------------{}
+
+.ug-gallery-wrapper.ug-lightbox{
+	display: none;
+	position: fixed;
+    border: none;
+    padding:0px;
+    margin:0px;
+    outline: invert none medium;
+    overflow: hidden;
+    top: 0;
+    left: 0;
+	width: 100%;
+    height: 100%;
+	max-width:none !important;
+	max-height:none !important;
+    z-index: 999999;
+}
+
+.ug-lightbox .ug-lightbox-top-panel{
+	position:absolute;
+	z-index:2;
+}
+
+.ug-lightbox .ug-lightbox-top-panel-overlay{
+	width:100%;
+	height:100%;
+	position:absolute;
+	background-color:#000000;
+	opacity:0.4;
+	filter: alpha(opacity=40);
+}
+
+
+.ug-lightbox .ug-lightbox-overlay{
+	z-index:1;
+	width:100%;
+	height:100%;
+    background-color:#000000;
+    opacity:1;
+}
+
+.ug-lightbox .ug-slider-wrapper{
+	z-index:1;
+	xbackground-color:green;
+	background-color:transparent !important;
+}
+
+.ug-lightbox .ug-textpanel{
+	z-index: 2;
+}
+
+
+.ug-lightbox .ug-lightbox-arrow-left,
+.ug-lightbox .ug-lightbox-arrow-right{
+	position:absolute;
+	width:50px;
+	height:55px;
+	background-repeat:no-repeat;
+	background-image:url('../images/lightbox-arrow-left.png');
+	background-position:0px 0px;
+	z-index:3;
+	cursor:pointer;
+}
+
+.ug-lightbox .ug-lightbox-arrow-right{
+	background-image:url('../images/lightbox-arrow-right.png');
+}
+
+.ug-lightbox .ug-lightbox-button-close{
+	position:absolute;
+	width:36px;
+	height:36px;
+	background-repeat:no-repeat;
+	background-image:url('../images/lightbox-icon-close.png');
+	background-position:0px 0px;
+	z-index:4;
+	cursor:pointer;
+}
+
+
+.ug-lightbox-compact .ug-lightbox-button-close{
+	width:45px;
+	height:41px;
+	background-image:url('../images/lightbox-icon-close-compact2.png');
+}
+
+
+.ug-lightbox .ug-lightbox-arrow-left.ug-arrow-hover,
+.ug-lightbox .ug-lightbox-arrow-right.ug-arrow-hover{
+	background-position:0px -55px;	
+}
+
+.ug-lightbox .ug-lightbox-button-close.ug-button-hover{
+	background-position:0px -35px;
+}
+
+.ug-lightbox-compact .ug-lightbox-button-close.ug-button-hover{
+	background-position:0px -40px;
+}
+
+.ug-lightbox .ug-lightbox-numbers{
+	position:absolute;
+	color:#e5e5e5;
+	font-size:12px;
+	top:14px;
+	left:8px;
+	z-index:3;
+}
+
+.ug-lightbox-compact .ug-lightbox-numbers{
+	font-size: 14px;
+	padding-right:5px;
+	padding-top:7px;
+}
+
+.ug-lightbox .ug-textpanel-title,
+.ug-lightbox .ug-textpanel-description{
+	font-size: 14px;
+	font-weight: normal;
+	color: #e5e5e5;
+}
+
+.ug-lightbox-compact .ug-textpanel-title,
+.ug-lightbox-compact .ug-textpanel-description{
+	color:#F3F3F3;
+	font-size: 16px;
+}
+
+.------------------CATEGORY_TABS---------------------{}
+
+	.ug-tabs-wrapper{
+		margin-top:0px;
+		margin-bottom:20px;
+		text-align:center;
+	}
+
+	.ug-tabs-wrapper a.ug-tab{
+	    display: inline-block;
+		cursor:pointer;
+		text-decoration:none;
+		color:#ffffff;
+		padding-left:8px;
+		padding-right:8px;
+		padding-top:6px;
+		padding-bottom:6px;
+		margin-left:5px;
+		background-color:#333333;
+		border-radius:3px;
+		font-size:12px;
+		font-weight:normal;
+		
+		border: 1px solid #969696;
+	}
+	
+	.ug-tabs-wrapper a.ug-tab:hover{
+		background-color: #707070 !important;
+	}
+
+	.ug-tabs-wrapper a.ug-tab.ug-tab-selected,
+	.ug-tabs-wrapper a.ug-tab.ug-tab-selected:hover{
+		background-color: #2077A2 !important;
+		cursor:default !important;
+	}
+
+	.ug-tabs-wrapper a.ug-tab:first-child{
+		margin-left:0px !important;
+	}
+
+
+.------------------DEFAULT_SKIN---------------------{}
+
+/* --- arrows -- */
+
+.ug-arrow-left.ug-skin-default,
+.ug-arrow-right.ug-skin-default{
+	width:15px;
+	height:30px;
+	background-image:url('../skins/default/slider_arrow_left.png');
+	background-position:0px 0px;
+}
+
+.ug-arrow-right.ug-skin-default{
+	background-image:url('../skins/default/slider_arrow_right.png');
+}
+
+.ug-arrow-left.ug-skin-default.ug-arrow-hover,
+.ug-arrow-right.ug-skin-default.ug-arrow-hover{
+	background-position:0px -30px;
+}
+
+.ug-arrow-left.ug-skin-default.ug-arrow-disabled,
+.ug-arrow-right.ug-skin-default.ug-arrow-disabled{
+	background-position:0px -60px;
+}
+
+/* --- bullets -- */
+
+.ug-bullets.ug-skin-default .ug-bullet{
+	width:15px;
+	height:15px;
+	background-image:url('../skins/default/slider_bullets.png');
+	background-position:top left;
+	margin-left:5px;
+}
+
+.ug-bullets.ug-skin-default .ug-bullet.ug-bullet-active{
+	background-position:bottom left;
+}
+
+.ug-bullets.ug-skin-default.ug-bullets-gray .ug-bullet{ 
+	background-image:url('../skins/default/tile_bullets_gray.png');
+}
+
+.ug-bullets.ug-skin-default.ug-bullets-blue .ug-bullet{ 
+	background-image:url('../skins/default/tile_bullets_blue.png');
+}
+
+.ug-bullets.ug-skin-default.ug-bullets-brown .ug-bullet{ 
+	background-image:url('../skins/default/tile_bullets_brown.png');
+}
+
+.ug-bullets.ug-skin-default.ug-bullets-green .ug-bullet{ 
+	background-image:url('../skins/default/tile_bullets_green.png');
+}
+
+.ug-bullets.ug-skin-default.ug-bullets-red .ug-bullet{ 
+	background-image:url('../skins/default/tile_bullets_red.png');
+}
+
+.ug-button-tile-navigation{
+	width:36px;
+	height:36px;
+	background-position:top left;
+	cursor:pointer;
+	float:left;
+}
+
+.ug-button-tile-navigation.ug-button-tile-left{
+	background-image:url('../skins/default/tile_button_left.png');
+}
+
+.ug-button-tile-navigation.ug-button-tile-right{
+	background-image:url('../skins/default/tile_button_right.png');
+}
+
+.ug-button-tile-navigation:hover{
+	background-position:bottom left;
+}
+
+.ug-button-tile-navigation.ug-button-disabled{
+	opacity:0.6;
+}
+
+.ug-button-tile-navigation.ug-button-disabled:hover{
+	background-position:top left;	
+}
+
+.ug-button-tile-navigation.ug-button-tile-play{
+	background-image:url('../skins/default/tile_button_play_pause.png');
+	width:35px;
+} 
+
+.ug-button-tile-navigation.ug-button-tile-play.ug-pause-icon{
+	background-position:bottom left;
+} 
+
+.ug-button-tile-navigation.ug-button-tile-play:hover{
+	background-position:top left;
+} 
+
+.ug-button-tile-navigation.ug-button-tile-play.ug-pause-icon:hover{
+	background-position:bottom left;
+} 
+
+
+/* --- play button -- */
+
+.ug-button-play.ug-skin-default{
+	position:absolute;
+	background-image:url('../skins/default/button_playpause.png');
+    width:14px;
+    height:17px;
+    cursor:pointer;
+	background-position:0px 0px;
+}
+
+.ug-button-play.ug-skin-default.ug-button-hover{
+	background-position:0px -17px;	
+}
+
+.ug-button-play.ug-skin-default.ug-stop-mode{
+	background-position:0px -34px;
+}
+
+.ug-button-play.ug-skin-default.ug-stop-mode.ug-button-hover{
+	background-position:0px -51px;
+}
+
+/* --- fullscreen button -- */
+
+.ug-button-fullscreen.ug-skin-default{
+	position:absolute;
+	background-image:url('../skins/default/button_fullscreen.png');
+    width:16px;
+    height:16px;
+    cursor:pointer;
+	background-position:0px 0px;
+}
+
+.ug-button-fullscreen.ug-skin-default.ug-button-hover{
+	background-position:0px -16px;	
+}
+
+.ug-button-fullscreen.ug-skin-default.ug-fullscreenmode{
+	background-position:0px -32px;
+}
+
+.ug-button-fullscreen.ug-skin-default.ug-fullscreenmode.ug-button-hover{
+	background-position:0px -48px;
+}
+
+
+/* --- zoom panel --- */
+
+.ug-zoompanel.ug-skin-default .ug-zoompanel-button{
+    background-repeat: no-repeat;
+    cursor:pointer;
+    height: 23px;
+    width: 23px;
+    margin-top:5px;
+    background-position: 0px 0px;	
+}
+
+.ug-zoompanel.ug-skin-default .ug-zoompanel-plus{
+	margin-top:0px;
+}
+
+.ug-zoompanel.ug-skin-default .ug-zoompanel-plus{
+	background-image:url('../skins/default/icon_zoom_plus.png');
+}
+
+.ug-zoompanel.ug-skin-default .ug-zoompanel-minus{
+	background-image:url('../skins/default/icon_zoom_minus.png');
+}
+
+.ug-zoompanel.ug-skin-default .ug-zoompanel-return{
+	background-image:url('../skins/default/icon_zoom_back.png');
+}
+
+.ug-zoompanel.ug-skin-default .ug-zoompanel-button.ug-button-hover{
+    background-position: 0px -23px;
+}
+
+.ug-zoompanel.ug-skin-default .ug-zoompanel-button-disabled,
+.ug-zoompanel.ug-skin-default .ug-zoompanel-button.ug-button-hover.ug-zoompanel-button-disabled{
+    background-position: 0px -46px;
+    cursor:default;
+}
+
+
+/* --- Grid Panel Arrows -- */
+
+/*--- down arrow ---*/
+
+.ug-gallery-wrapper .ug-grid-panel .grid-arrow-down.ug-skin-default{
+	width:30px;
+	height:15px;
+	background-position:0px 0px;	
+	background-image:url('../skins/default/arrow_grid_down.png');
+}
+
+.ug-gallery-wrapper .ug-grid-panel .grid-arrow-down.ug-skin-default.ug-button-hover{
+	background-position:0px -15px;
+}
+
+.ug-gallery-wrapper .ug-grid-panel .grid-arrow-down.ug-skin-default.ug-button-hover.ug-button-disabled,
+.ug-gallery-wrapper .ug-grid-panel .grid-arrow-down.ug-skin-default.ug-button-disabled{
+	background-position:0px -30px;
+}
+
+
+/*--- up arrow ---*/
+
+.ug-gallery-wrapper .ug-grid-panel .grid-arrow-up.ug-skin-default{
+	width:30px;
+	height:15px;
+	background-position:0px 0px;	
+	background-image:url('../skins/default/arrow_grid_up.png');
+}
+
+.ug-gallery-wrapper .ug-grid-panel .grid-arrow-up.ug-skin-default.ug-button-hover{
+	background-position:0px -15px;	
+}
+
+.ug-gallery-wrapper .ug-grid-panel .grid-arrow-up.ug-skin-default.ug-button-hover.ug-button-disabled,
+.ug-gallery-wrapper .ug-grid-panel .grid-arrow-up.ug-skin-default.ug-button-disabled{
+	background-position:0px -30px;
+}
+
+/*--- left arrow ---*/
+
+.ug-gallery-wrapper .ug-grid-panel .grid-arrow-left.ug-skin-default{
+	width:40px;
+	height:40px;
+	background-position:0px -40px;
+	background-image:url('../skins/default/grid_arrow_left.png');
+}
+
+.ug-gallery-wrapper .ug-grid-panel .grid-arrow-left.ug-skin-default.ug-button-hover{
+	background-position:0px -0px;
+}
+
+.ug-gallery-wrapper .ug-grid-panel .grid-arrow-left.ug-skin-default.ug-button-hover.ug-button-disabled,
+.ug-gallery-wrapper .ug-grid-panel .grid-arrow-left.ug-skin-default.ug-button-disabled{
+	background-position:0px -80px;
+}
+
+/*--- right arrow ---*/
+
+.ug-gallery-wrapper .ug-grid-panel .grid-arrow-right.ug-skin-default{
+	width:40px;
+	height:40px;
+	background-position:0px -40px;	
+	background-image:url('../skins/default/grid_arrow_right.png');
+}
+
+.ug-gallery-wrapper .ug-grid-panel .grid-arrow-right.ug-skin-default.ug-button-hover{
+	background-position:0px -0px;
+}
+
+.ug-gallery-wrapper .ug-grid-panel .grid-arrow-right.ug-skin-default.ug-button-hover.ug-button-disabled,
+.ug-gallery-wrapper .ug-grid-panel .grid-arrow-right.ug-skin-default.ug-button-disabled{
+	background-position:0px -80px;
+}
+
+/*--- left arrow - horizontal panel type ---*/
+
+.ug-gallery-wrapper .ug-grid-panel .grid-arrow-left-hortype.ug-skin-default{
+	width:15px;
+	height:30px;
+	background-image:url('../skins/default/slider_arrow_left.png');
+	background-position:0px 0px;
+}
+
+.ug-gallery-wrapper .ug-grid-panel .grid-arrow-left-hortype.ug-skin-default.ug-button-hover{
+	background-position:0px -30px;
+}
+
+.ug-gallery-wrapper .ug-grid-panel .grid-arrow-left-hortype.ug-skin-default.ug-button-hover.ug-button-disabled,
+.ug-gallery-wrapper .ug-grid-panel .grid-arrow-left-hortype.ug-skin-default.ug-button-disabled{
+	background-position:0px -60px;
+}
+
+
+/*--- right arrow - horizontal panel type ---*/
+
+.ug-gallery-wrapper .ug-grid-panel .grid-arrow-right-hortype.ug-skin-default{
+	width:15px;
+	height:30px;
+	background-image:url('../skins/default/slider_arrow_right.png');
+	background-position:0px 0px;
+}
+
+.ug-gallery-wrapper .ug-grid-panel .grid-arrow-right-hortype.ug-skin-default.ug-button-hover{
+	background-position:0px -30px;
+}
+
+.ug-gallery-wrapper .ug-grid-panel .grid-arrow-right-hortype.ug-skin-default.ug-button-hover.ug-button-disabled,
+.ug-gallery-wrapper .ug-grid-panel .grid-arrow-right-hortype.ug-skin-default.ug-button-disabled{
+	background-position:0px -60px;
+}
+
+
+/* --- Strip Panel Arrows -- */
+
+/* left and right arrows */
+
+.ug-strip-panel .ug-strip-arrow-left.ug-skin-default,
+.ug-strip-panel .ug-strip-arrow-right.ug-skin-default{
+	width:25px;
+	height:50px;
+}
+
+.ug-strip-panel .ug-strip-arrow-left.ug-skin-default .ug-strip-arrow-tip,
+.ug-strip-panel .ug-strip-arrow-right.ug-skin-default .ug-strip-arrow-tip{
+	background-position:0px 0px;
+	background-repeat:no-repeat;
+	width:4px;
+	height:7px;
+}
+
+.ug-strip-panel .ug-strip-arrow-left.ug-skin-default .ug-strip-arrow-tip{
+	background-image:url('../skins/default/arrows_strip_left.png');
+}
+
+.ug-strip-panel .ug-strip-arrow-right.ug-skin-default .ug-strip-arrow-tip{
+	background-image:url('../skins/default/arrows_strip_right.png');	
+}
+
+.ug-strip-panel .ug-strip-arrow-left.ug-skin-default.ug-button-hover .ug-strip-arrow-tip,
+.ug-strip-panel .ug-strip-arrow-right.ug-skin-default.ug-button-hover .ug-strip-arrow-tip{
+	background-position:0px -7px;
+}
+
+
+/* up and down arrows */
+
+.ug-strip-panel .ug-strip-arrow-up.ug-skin-default,
+.ug-strip-panel .ug-strip-arrow-down.ug-skin-default{
+	height:25px;
+	width:50px;
+}
+
+.ug-strip-panel .ug-strip-arrow-up.ug-skin-default .ug-strip-arrow-tip,
+.ug-strip-panel .ug-strip-arrow-down.ug-skin-default .ug-strip-arrow-tip{
+	background-position:0px 0px;
+	background-repeat:no-repeat;
+	width:7px;
+	height:4px;
+}
+
+.ug-strip-panel .ug-strip-arrow-up.ug-skin-default .ug-strip-arrow-tip{
+	background-image:url('../skins/default/arrows_strip_up.png');
+}
+
+.ug-strip-panel .ug-strip-arrow-down.ug-skin-default .ug-strip-arrow-tip{
+	background-image:url('../skins/default/arrows_strip_down.png');	
+}
+
+.ug-strip-panel .ug-strip-arrow-up.ug-skin-default.ug-button-hover .ug-strip-arrow-tip,
+.ug-strip-panel .ug-strip-arrow-down.ug-skin-default.ug-button-hover .ug-strip-arrow-tip{
+	background-position:-7px 0px;
+}
+
+.ug-strip-panel .ug-strip-arrow.ug-skin-default.ug-button-disabled .ug-strip-arrow-tip{
+	background-position:0px 0px;
+	opacity:0.5;
+	filter: alpha(opacity = 50);
+}
+
+
+/* --- Panel Handle Tip -- */
+
+/* left and right handle */
+.ug-gallery-wrapper .ug-handle-tip-left.ug-skin-default,
+.ug-gallery-wrapper .ug-handle-tip-right.ug-skin-default{
+	width:22px;
+	height:36px;
+	background-image:url('../skins/default/grid_handle_black_left.png');
+	background-repeat:no-repeat;
+	background-position:0px -36px;
+}
+
+.ug-gallery-wrapper .ug-handle-tip-right.ug-skin-default{
+	background-image:url('../skins/default/grid_handle_black_right.png');
+	background-position:0px -36px;
+}
+
+.ug-gallery-wrapper .ug-handle-tip-left.ug-button-hover.ug-skin-default,
+.ug-gallery-wrapper .ug-handle-tip-right.ug-button-hover.ug-skin-default{
+	background-position:0px -0px;	
+}
+
+.ug-gallery-wrapper .ug-handle-tip-left.ug-skin-default.ug-button-closed,
+.ug-gallery-wrapper .ug-handle-tip-right.ug-skin-default.ug-button-closed{
+	background-position:0px -108px;
+}
+
+.ug-gallery-wrapper .ug-handle-tip-left.ug-skin-default.ug-button-closed.ug-button-hover,
+.ug-gallery-wrapper .ug-handle-tip-right.ug-skin-default.ug-button-closed.ug-button-hover{
+	background-position:0px -72px;
+}
+
+
+/* top and bottom handle */
+
+.ug-gallery-wrapper .ug-handle-tip-top.ug-skin-default,
+.ug-gallery-wrapper .ug-handle-tip-bottom.ug-skin-default{	
+	width:36px;
+	height:22px;
+	background-image:url('../skins/default/grid_handle_black_top.png');
+	background-repeat:no-repeat;
+	background-position:-36px 0px;
+}
+
+.ug-gallery-wrapper .ug-handle-tip-bottom.ug-skin-default{
+	background-image:url('../skins/default/grid_handle_black_bottom.png');
+	background-position:-36px 0px;
+}
+
+.ug-gallery-wrapper .ug-handle-tip-top.ug-skin-default.ug-button-hover,
+.ug-gallery-wrapper .ug-handle-tip-bottom.ug-skin-default.ug-button-hover{
+	background-position:0px 0px;	
+}
+
+.ug-gallery-wrapper .ug-handle-tip-top.ug-skin-default.ug-button-closed,
+.ug-gallery-wrapper .ug-handle-tip-bottom.ug-skin-default.ug-button-closed{
+	background-position:-108px 0px;
+}
+
+.ug-gallery-wrapper .ug-handle-tip-top.ug-skin-default.ug-button-closed.ug-button-hover,
+.ug-gallery-wrapper .ug-handle-tip-bottom.ug-skin-default.ug-button-closed.ug-button-hover{
+	background-position:-72px 0px;
+}
+

BIN
static/src/css/whatsap/icomoon.eot


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 9 - 0
static/src/css/whatsap/icomoon.svg


BIN
static/src/css/whatsap/icomoon.ttf


BIN
static/src/css/whatsap/icomoon.woff


BIN
static/src/css/whatsap/icomoon1.eot


BIN
static/src/css/whatsap/iconowhatsap.png


BIN
static/src/images/1play-button-square.png


BIN
static/src/images/button-close.png


BIN
static/src/images/cover-grid.png


BIN
static/src/images/icon-link32.png


BIN
static/src/images/icon-play32.png


BIN
static/src/images/icon-zoom32.png


BIN
static/src/images/lightbox-arrow-left.png


BIN
static/src/images/lightbox-arrow-right.png


BIN
static/src/images/lightbox-icon-close-compact.png


BIN
static/src/images/lightbox-icon-close-compact2.png


BIN
static/src/images/lightbox-icon-close.png


BIN
static/src/images/loader-black1.gif


BIN
static/src/images/loader-black2.gif


BIN
static/src/images/loader-black3.gif


BIN
static/src/images/loader-black4.gif


BIN
static/src/images/loader-black5.gif


BIN
static/src/images/loader-black6.gif


BIN
static/src/images/loader-black7.gif


BIN
static/src/images/loader-white1.gif


BIN
static/src/images/loader-white2.gif


BIN
static/src/images/loader-white3.gif


BIN
static/src/images/loader-white4.gif


BIN
static/src/images/loader-white5.gif


BIN
static/src/images/loader-white6.gif


BIN
static/src/images/loader-white7.gif


BIN
static/src/images/loader.gif


BIN
static/src/images/loader_bright.gif


BIN
static/src/images/loader_skype_trans.gif


BIN
static/src/images/not_loaded.png


Algunos archivos no se mostraron porque demasiados archivos cambiaron en este cambio