diff --git a/ext/3rd-party-addons/clarico_404/__init__.py b/ext/3rd-party-addons/clarico_404/__init__.py new file mode 100755 index 00000000..e69de29b diff --git a/ext/3rd-party-addons/clarico_404/__manifest__.py b/ext/3rd-party-addons/clarico_404/__manifest__.py new file mode 100755 index 00000000..68c93d2c --- /dev/null +++ b/ext/3rd-party-addons/clarico_404/__manifest__.py @@ -0,0 +1,26 @@ +{ + # Theme information + 'name' : 'Clarico 404', + 'category' : 'Website', + 'version' : '1.0', + 'summary': 'Redirect to 404 Page when Targeted Page is not Found', + 'description': """""", + + # Dependencies + 'depends': [ + 'clarico_base' + ], + + # Views + 'data': [ + 'templates/template.xml', + 'templates/assets.xml', + ], + + # Author + 'author': 'Emipro Technologies Pvt. Ltd.', + 'website': 'http://www.emiprotechnologies.com', + + # Technical + 'installable': True, +} diff --git a/ext/3rd-party-addons/clarico_404/static/description/icon.png b/ext/3rd-party-addons/clarico_404/static/description/icon.png new file mode 100755 index 00000000..09fd34ab Binary files /dev/null and b/ext/3rd-party-addons/clarico_404/static/description/icon.png differ diff --git a/ext/3rd-party-addons/clarico_404/static/src/img/2.jpg b/ext/3rd-party-addons/clarico_404/static/src/img/2.jpg new file mode 100755 index 00000000..d4903e60 Binary files /dev/null and b/ext/3rd-party-addons/clarico_404/static/src/img/2.jpg differ diff --git a/ext/3rd-party-addons/clarico_404/static/src/less/clarico_404.less b/ext/3rd-party-addons/clarico_404/static/src/less/clarico_404.less new file mode 100755 index 00000000..c6a56e61 --- /dev/null +++ b/ext/3rd-party-addons/clarico_404/static/src/less/clarico_404.less @@ -0,0 +1,56 @@ +.clarico_404_comman +{ + .common-div; +} +.clarico_404_right{ + width:60%; + display:block; + .left(); + .center(); + .mt(0); + .mb(0); + .ml(auto); + .mr(auto); + img{ + max-width:90%; + + } +} +.clarico_404_left{ + width:40%; + .left(); + .mt(12%); +} +.clarico_404_font +{ + .size(100px); + .muli-bold; + color:#2b2b2b; + .center; + .mt(0); + .mb(0); + .ml(auto); + .mr(auto); +} +.clarico_404_page +{ + color: #2b2b2b; + .size(14px); + .center(); + .mt(15px); + .mb(15px); + .ml(auto); + .mr(auto); +} +.clarico_404_ul +{ + .center; + .size(13px); + color: @theme-color; +} +.clarico_404_li +{ + list-style-type: none; + .mt(30px); +} + diff --git a/ext/3rd-party-addons/clarico_404/static/src/less/responsive.less b/ext/3rd-party-addons/clarico_404/static/src/less/responsive.less new file mode 100755 index 00000000..e8b5241c --- /dev/null +++ b/ext/3rd-party-addons/clarico_404/static/src/less/responsive.less @@ -0,0 +1,11 @@ +@media (max-width:800px){ + .clarico_404_left{ + float:none; + width:100%; + .mb(10%); + } + .clarico_404_right{ + width:100%; + float:none; + } +} \ No newline at end of file diff --git a/ext/3rd-party-addons/clarico_404/templates/assets.xml b/ext/3rd-party-addons/clarico_404/templates/assets.xml new file mode 100755 index 00000000..1c3b92a0 --- /dev/null +++ b/ext/3rd-party-addons/clarico_404/templates/assets.xml @@ -0,0 +1,9 @@ + + + + \ No newline at end of file diff --git a/ext/3rd-party-addons/clarico_404/templates/template.xml b/ext/3rd-party-addons/clarico_404/templates/template.xml new file mode 100755 index 00000000..aa055741 --- /dev/null +++ b/ext/3rd-party-addons/clarico_404/templates/template.xml @@ -0,0 +1,27 @@ + + + + diff --git a/ext/3rd-party-addons/clarico_account/__init__.py b/ext/3rd-party-addons/clarico_account/__init__.py new file mode 100755 index 00000000..e69de29b diff --git a/ext/3rd-party-addons/clarico_account/__manifest__.py b/ext/3rd-party-addons/clarico_account/__manifest__.py new file mode 100755 index 00000000..e1ceab93 --- /dev/null +++ b/ext/3rd-party-addons/clarico_account/__manifest__.py @@ -0,0 +1,26 @@ +{ + # Theme information + 'name' : 'Clarico Account', + 'category' : 'Website', + 'version' : '1.0', + 'summary': 'View Orders, Invoices, Account Details at Frontend', + 'description': """""", + + # Dependencies + 'depends': [ + 'clarico_layout','website_quote','sale','portal' + ], + + # Views + 'data': [ + 'templates/template.xml', + 'templates/assets.xml' + ], + + # Author + 'author': 'Emipro Technologies Pvt. Ltd.', + 'website': 'http://www.emiprotechnologies.com', + + # Technical + 'installable': True, +} diff --git a/ext/3rd-party-addons/clarico_account/static/description/icon.png b/ext/3rd-party-addons/clarico_account/static/description/icon.png new file mode 100755 index 00000000..09fd34ab Binary files /dev/null and b/ext/3rd-party-addons/clarico_account/static/description/icon.png differ diff --git a/ext/3rd-party-addons/clarico_account/static/src/js/portal_sale_address.js b/ext/3rd-party-addons/clarico_account/static/src/js/portal_sale_address.js new file mode 100755 index 00000000..c985255e --- /dev/null +++ b/ext/3rd-party-addons/clarico_account/static/src/js/portal_sale_address.js @@ -0,0 +1,5 @@ +var my_account_address_el = document.querySelector('.div_class_my_account_address > address > div > div > i.fa-map-marker + span'); +my_account_address_el.innerHTML = my_account_address_el.innerHTML.replace(/ /g,''); + + + diff --git a/ext/3rd-party-addons/clarico_account/static/src/less/account.less b/ext/3rd-party-addons/clarico_account/static/src/less/account.less new file mode 100755 index 00000000..2ab74199 --- /dev/null +++ b/ext/3rd-party-addons/clarico_account/static/src/less/account.less @@ -0,0 +1,153 @@ +.container{ + .block; +} +/* Home */ +.account_home{ + & .clarico_portal_docs{ + + & .list-group-item{ + border: none; + border-bottom : 1px solid #dddddd; + margin-bottom: 0; + padding: 15px 15px 5px 15px; + + & span.badge{ + background: unset; + color: gray; + + &:after{ + content:" )"; + } + &:before{ + content:"( "; + } + } + } + } +} + +.my_details_div{ + + & .your_details{ + .muli-regular; + .pb(5%); + + & .your_details_change_btn{ + .muli-regular; + .size(11px); + .ml(10px); + border: 1px solid @theme-color; + padding: 2px 5px 2px 5px; + border-radius: 2px; + color : @theme-color; + + &:hover{ + background: @theme-color; + color: #fff; + transition:0.5s; + } + } + } + + & address span{ + line-height:185%; + } +} + +/* Quotation */ + +.quotation_table{ + + & thead{ + & tr th{ + background-color : #000 !important; + color:#fff; + .muli-regular; + .size(14px); + font-weight: normal; + padding : 15px 10px; + border-bottom : 2px solid #000; + } + } + + & tbody{ + & tr td{ + .muli-regular; + .size(14px); + padding : 10px 10px; + } + } +} +.order_details_div{ + .pt(2%); +} + +.clarico_panel_main{ + .mt(2%); + + & .panel-heading{ + background-color: #000; + + & h4{ + color: #fff; + } + + & #o_portal_order_actions{ + & a i{ + color : #fff; + } + } + } + & .address-div{ + .pt(2%); + + } +} +.order-details_div{ + .pt(1%); + .pb(1%); +} +.clarico_portal_details{ + + & label.control-label{ + font-weight: normal; + } + + & input,select{ + border-radius: 0; + height: 40px; + } +} + +.clarico_website_quote{ + + & .bs-sidebar{ + background-color: #eceaea !important; + border-radius: 0 !important; + + & a.btn{ + border-radius: 0 !important; + } + + & .bs-sidenav{ + + & li.active{ + & a{ + color : @theme-color; + border-right: 2px solid @theme-color; + } + } + } + } +} +.quotation-order-heading{ + font-size: 28px; + .muli-semibold(); + text-transform: uppercase; + margin-bottom: 3%; + color: #6c6b6b; + + & small{ + .capitalize; + } +} diff --git a/ext/3rd-party-addons/clarico_account/static/src/less/account_responsive.less b/ext/3rd-party-addons/clarico_account/static/src/less/account_responsive.less new file mode 100755 index 00000000..a10f3baf --- /dev/null +++ b/ext/3rd-party-addons/clarico_account/static/src/less/account_responsive.less @@ -0,0 +1,37 @@ +@media (max-width:900px){ + .clarico_container, .section_quote{ + overflow-y: hidden; + } + .section_quote{ + & #quote_header_2{ + padding:0; + } + } + .clarico_panel_main, .table_quote{ + overflow-x: auto; + max-width: 800px; + width: 800px; + margin: 0px; + } + .quotation-order-heading{ + + & .css_editable_mode_hidden{ + .common-div; + .pt(2%); + .pb(2%); + } + } + #introduction{ + border-bottom : none !important; + } + .full_width{ + .common-div; + .pt(2%); + .pb(4%); + + & .row{ + .pt(2%); + .pb(2%); + } + } +} \ No newline at end of file diff --git a/ext/3rd-party-addons/clarico_account/templates/assets.xml b/ext/3rd-party-addons/clarico_account/templates/assets.xml new file mode 100755 index 00000000..b303d100 --- /dev/null +++ b/ext/3rd-party-addons/clarico_account/templates/assets.xml @@ -0,0 +1,9 @@ + + + + \ No newline at end of file diff --git a/ext/3rd-party-addons/clarico_account/templates/template.xml b/ext/3rd-party-addons/clarico_account/templates/template.xml new file mode 100755 index 00000000..7719071a --- /dev/null +++ b/ext/3rd-party-addons/clarico_account/templates/template.xml @@ -0,0 +1,146 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ext/3rd-party-addons/clarico_attribute_filter/__init__.py b/ext/3rd-party-addons/clarico_attribute_filter/__init__.py new file mode 100755 index 00000000..f331cf7c --- /dev/null +++ b/ext/3rd-party-addons/clarico_attribute_filter/__init__.py @@ -0,0 +1,2 @@ +# -*- encoding: utf-8 -*- +# Part of Odoo. See LICENSE file for full copyright and licensing details. diff --git a/ext/3rd-party-addons/clarico_attribute_filter/__manifest__.py b/ext/3rd-party-addons/clarico_attribute_filter/__manifest__.py new file mode 100755 index 00000000..f1d38721 --- /dev/null +++ b/ext/3rd-party-addons/clarico_attribute_filter/__manifest__.py @@ -0,0 +1,26 @@ +{ + # Theme information + 'name' : 'Clarico Attribute Filter', + 'category' : 'Website', + 'version' : '1.0', + 'summary': 'Show Selected Attributes in Applied Filter Section', + 'description': """""", + + # Dependencies + 'depends': [ + 'clarico_shop' + ], + + # Views + 'data': [ + 'template/assets.xml', + 'template/template.xml', + ], + + # Author + 'author': 'Emipro Technologies Pvt. Ltd.', + 'website': 'http://www.emiprotechnologies.com', + + # Technical + 'installable': True, +} diff --git a/ext/3rd-party-addons/clarico_attribute_filter/static/description/icon.png b/ext/3rd-party-addons/clarico_attribute_filter/static/description/icon.png new file mode 100755 index 00000000..09fd34ab Binary files /dev/null and b/ext/3rd-party-addons/clarico_attribute_filter/static/description/icon.png differ diff --git a/ext/3rd-party-addons/clarico_attribute_filter/static/src/js/filter.js b/ext/3rd-party-addons/clarico_attribute_filter/static/src/js/filter.js new file mode 100755 index 00000000..33ed928f --- /dev/null +++ b/ext/3rd-party-addons/clarico_attribute_filter/static/src/js/filter.js @@ -0,0 +1,124 @@ +$(document).ready(function() +{ + /*view filter click */ + $(".apply-filter").click(function(){ + //$("#products_grid_before").css({"width":"0px","transition":"0.5s"}); + //$("#wrapwrap").css({"margin-left":"0px","transition":"0.5s"}); + $(".main-header-maxW").removeClass("transparent"); + $(".filter-main-div").css("display","block").addClass("zoom-fadein"); + }); + /*close button of view filter*/ + $(".filter-option-close-btn").click(function(){ + $(".filter-main-div").css("display","none"); + }) + + /* filter-option class set center of screen */ + var winH = $(window).height(); + var winW = $(window).width(); + var $filter_option = $(".filter-option"); + $filter_option.css('top', winH/2-$filter_option.height()/2); + $filter_option.css('left', winW/2-$filter_option.width()/2); + + $("form.js_attributes input").each(function(){ + var curr=$(this) + var curr_parent=curr.parent(); + var status=this.checked + var val=this.value; + if(status==true){ + $(".no-any-variant").css("display","none"); + $(".clear-all-filter").css("display","block"); + + var curr_att=curr_parent.find("label").html() + if(curr_att){ + $(".filter-option").append("
" + curr_att + "X
") + } + if(!curr_att){ + val_name=$(this).attr("title") + $(".filter-option").append("
" + val_name + "X
") + } + } + }); + + // Pricefilter Attribute + var p_filter = "" + if($("input[name='min_val']").val()) + { + p_filter = $("input[name='min_val']").val() + if($("input[name='max_val']").val()) + { + p_filter += "-"+$("input[name='max_val']").val(); + + $(".no-any-variant").css("display","none"); + $(".clear-all-filter").css("display","block"); + $(".apply-filter").css("display","block"); + $(".clear-pricefilter").css("display","block"); + $(".filter-option").append("
" + p_filter + "X
") + } + } + //clear price filter + $(".clear-pricefilter").click(function(){ + $("input[name='min_val']").val(""); + $("input[name='max_val']").val(""); + $("form.js_attributes input").closest("form").submit(); + }) + + /* clear particular selected attribute */ + $(".close-btn").click(function(){ + var id=$(this).attr("data-id") + if(id){ + if(id == 'price') + { + $("input[name='min_val']").val("") + $("input[name='max_val']").val("") + $("form.js_attributes input").closest("form").submit(); + } + else + { + $("form.js_attributes input[value="+id+"]").removeAttr("checked"); + $("form.js_attributes input").closest("form").submit(); + } + + } + if(!id){ + var id=$(this).attr("data-value") + $("form.js_attributes input[value="+id+"]").removeAttr("checked"); + $("form.js_attributes input").closest("form").submit(); + } + }); + /*Clear all selected attribute*/ + $(".clear-all-filter").click(function(){ + $("form.js_attributes input").each(function(){ + var curr=$(this) + var status=this.checked + if(status==true) { + curr.removeAttr("checked"); + + } + }); + $("input[name='min_val']").val("") + $("input[name='max_val']").val("") + $(".clear-all-filter").css("display","none"); + $("form.js_attributes input").closest("form").submit(); + $(".no-any-variant").css("display","block"); + }); + +}); +$(window).load(function(){ + $("form.js_attributes input").each(function(){ + var curr=$(this) + var curr_parent=curr.parent(); + var status=this.checked + var val=this.value; + if(status==true){ + $(".apply-filter").css("display","block"); + }else{ + $(".apply-filter").css("display","none;"); + } + }); +}); +/*esc close box*/ +$(document).on( 'keydown', function(e){ + if(e.keyCode === 27) { + $(".filter-main-div").css("display","none"); + } +}); diff --git a/ext/3rd-party-addons/clarico_attribute_filter/static/src/less/filter.less b/ext/3rd-party-addons/clarico_attribute_filter/static/src/less/filter.less new file mode 100755 index 00000000..b01c3904 --- /dev/null +++ b/ext/3rd-party-addons/clarico_attribute_filter/static/src/less/filter.less @@ -0,0 +1,88 @@ +.filter-main-div{ + width: 100%; + position: fixed; + z-index: 9999; + height: 100%; + top: 0; + left: 0; + bottom: 0; + right: 0; + background: rgba(255, 255, 255, 0.95) !important; + display: none; + + + .filter-div-maxW{ + width: 60%; + max-width: 1400px; + .center; + + + .filter-option{ + transition: opacity 1s; + height: 300px; + position: fixed; + width: 700px; + + + .clear-all-filter{ + .right; + .mr(10px); + .size(12px); + color: black; + border-bottom: 1px solid; + display:none; + + & span{ + .size(13px); + } + } + .filter-option-h2{ + .size(30px); + color: #222; + .uppercase(); + line-height: 169%; + .oswald-light(); + letter-spacing: 2px; + word-spacing: 1px; + .pb(10%); + margin:0; + width:100%; + text-align:left; + } + + .attribute{ + padding:4px 0px 4px 0px; + .size(13px); + .muli-regular; + margin: 0 20px 10px 0; + .capitalize; + display: inline-block; + border-bottom: 1px solid @theme-color; + .left; + + & a{ + .right; + padding: 0; + margin: 0; + .ml(9px); + .size(9px); + .pt(4px); + cursor:pointer; + } + } + } + } +} + +.zoom-fadein { + -webkit-animation:animatezoomfade 0.6s; + animation:animatezoomfade 0.6s +} +@-webkit-keyframes animatezoomfade{ + from{-webkit-transform:scale(0); opacity:0;} + to{-webkit-transform:scale(1); opacity:1;} +} +@keyframes animatezoomfade{ + from{transform:scale(0); opacity:0;} + to{transform:scale(1); opacity:1;} +} diff --git a/ext/3rd-party-addons/clarico_attribute_filter/template/assets.xml b/ext/3rd-party-addons/clarico_attribute_filter/template/assets.xml new file mode 100755 index 00000000..0eb6300d --- /dev/null +++ b/ext/3rd-party-addons/clarico_attribute_filter/template/assets.xml @@ -0,0 +1,9 @@ + + + + diff --git a/ext/3rd-party-addons/clarico_attribute_filter/template/template.xml b/ext/3rd-party-addons/clarico_attribute_filter/template/template.xml new file mode 100755 index 00000000..0dd2dbb2 --- /dev/null +++ b/ext/3rd-party-addons/clarico_attribute_filter/template/template.xml @@ -0,0 +1,16 @@ + + + + diff --git a/ext/3rd-party-addons/clarico_base/__init__.py b/ext/3rd-party-addons/clarico_base/__init__.py new file mode 100755 index 00000000..40a96afc --- /dev/null +++ b/ext/3rd-party-addons/clarico_base/__init__.py @@ -0,0 +1 @@ +# -*- coding: utf-8 -*- diff --git a/ext/3rd-party-addons/clarico_base/__manifest__.py b/ext/3rd-party-addons/clarico_base/__manifest__.py new file mode 100755 index 00000000..1f474b10 --- /dev/null +++ b/ext/3rd-party-addons/clarico_base/__manifest__.py @@ -0,0 +1,26 @@ +{ + # Theme information + 'name' : 'Clarico Base', + 'category' : 'Website', + 'version' : '1.0', + 'summary': 'Contains Common Design Styles for Theme Clarico', + 'description': """""", + + # Dependencies + 'depends': [ + 'website_sale','website_blog', 'auth_signup', + ], + + # Views + 'data': [ + 'template/assets.xml', + ], + + # Author + 'author': 'Emipro Technologies Pvt. Ltd.', + 'website': 'http://www.emiprotechnologies.com', + + # Technical + 'installable': True, + 'application': False, +} diff --git a/ext/3rd-party-addons/clarico_base/static/description/icon.png b/ext/3rd-party-addons/clarico_base/static/description/icon.png new file mode 100755 index 00000000..09fd34ab Binary files /dev/null and b/ext/3rd-party-addons/clarico_base/static/description/icon.png differ diff --git a/ext/3rd-party-addons/clarico_base/static/src/font/BarlowSemiCondensed-Bold.ttf b/ext/3rd-party-addons/clarico_base/static/src/font/BarlowSemiCondensed-Bold.ttf new file mode 100755 index 00000000..35b5a372 Binary files /dev/null and b/ext/3rd-party-addons/clarico_base/static/src/font/BarlowSemiCondensed-Bold.ttf differ diff --git a/ext/3rd-party-addons/clarico_base/static/src/font/BarlowSemiCondensed-Light.ttf b/ext/3rd-party-addons/clarico_base/static/src/font/BarlowSemiCondensed-Light.ttf new file mode 100755 index 00000000..f97d02f3 Binary files /dev/null and b/ext/3rd-party-addons/clarico_base/static/src/font/BarlowSemiCondensed-Light.ttf differ diff --git a/ext/3rd-party-addons/clarico_base/static/src/font/BarlowSemiCondensed-Medium.ttf b/ext/3rd-party-addons/clarico_base/static/src/font/BarlowSemiCondensed-Medium.ttf new file mode 100755 index 00000000..ae3f2907 Binary files /dev/null and b/ext/3rd-party-addons/clarico_base/static/src/font/BarlowSemiCondensed-Medium.ttf differ diff --git a/ext/3rd-party-addons/clarico_base/static/src/font/BarlowSemiCondensed-Regular.ttf b/ext/3rd-party-addons/clarico_base/static/src/font/BarlowSemiCondensed-Regular.ttf new file mode 100755 index 00000000..ccdebedc Binary files /dev/null and b/ext/3rd-party-addons/clarico_base/static/src/font/BarlowSemiCondensed-Regular.ttf differ diff --git a/ext/3rd-party-addons/clarico_base/static/src/font/BarlowSemiCondensed-SemiBold.ttf b/ext/3rd-party-addons/clarico_base/static/src/font/BarlowSemiCondensed-SemiBold.ttf new file mode 100755 index 00000000..660b4025 Binary files /dev/null and b/ext/3rd-party-addons/clarico_base/static/src/font/BarlowSemiCondensed-SemiBold.ttf differ diff --git a/ext/3rd-party-addons/clarico_base/static/src/font/BarlowSemiCondensed-Thin.ttf b/ext/3rd-party-addons/clarico_base/static/src/font/BarlowSemiCondensed-Thin.ttf new file mode 100755 index 00000000..42ba8327 Binary files /dev/null and b/ext/3rd-party-addons/clarico_base/static/src/font/BarlowSemiCondensed-Thin.ttf differ diff --git a/ext/3rd-party-addons/clarico_base/static/src/font/Oswald-Bold.ttf b/ext/3rd-party-addons/clarico_base/static/src/font/Oswald-Bold.ttf new file mode 100755 index 00000000..acfd6634 Binary files /dev/null and b/ext/3rd-party-addons/clarico_base/static/src/font/Oswald-Bold.ttf differ diff --git a/ext/3rd-party-addons/clarico_base/static/src/font/Oswald-ExtraLight.ttf b/ext/3rd-party-addons/clarico_base/static/src/font/Oswald-ExtraLight.ttf new file mode 100755 index 00000000..ff1a7e45 Binary files /dev/null and b/ext/3rd-party-addons/clarico_base/static/src/font/Oswald-ExtraLight.ttf differ diff --git a/ext/3rd-party-addons/clarico_base/static/src/font/Oswald-Light.ttf b/ext/3rd-party-addons/clarico_base/static/src/font/Oswald-Light.ttf new file mode 100755 index 00000000..528f462a Binary files /dev/null and b/ext/3rd-party-addons/clarico_base/static/src/font/Oswald-Light.ttf differ diff --git a/ext/3rd-party-addons/clarico_base/static/src/font/Oswald-Medium.ttf b/ext/3rd-party-addons/clarico_base/static/src/font/Oswald-Medium.ttf new file mode 100755 index 00000000..eb4bffab Binary files /dev/null and b/ext/3rd-party-addons/clarico_base/static/src/font/Oswald-Medium.ttf differ diff --git a/ext/3rd-party-addons/clarico_base/static/src/font/Oswald-Regular.ttf b/ext/3rd-party-addons/clarico_base/static/src/font/Oswald-Regular.ttf new file mode 100755 index 00000000..c749cfac Binary files /dev/null and b/ext/3rd-party-addons/clarico_base/static/src/font/Oswald-Regular.ttf differ diff --git a/ext/3rd-party-addons/clarico_base/static/src/font/Oswald-SemiBold.ttf b/ext/3rd-party-addons/clarico_base/static/src/font/Oswald-SemiBold.ttf new file mode 100755 index 00000000..80c48856 Binary files /dev/null and b/ext/3rd-party-addons/clarico_base/static/src/font/Oswald-SemiBold.ttf differ diff --git a/ext/3rd-party-addons/clarico_base/static/src/font/Poppins-Bold.ttf b/ext/3rd-party-addons/clarico_base/static/src/font/Poppins-Bold.ttf new file mode 100755 index 00000000..44313ca4 Binary files /dev/null and b/ext/3rd-party-addons/clarico_base/static/src/font/Poppins-Bold.ttf differ diff --git a/ext/3rd-party-addons/clarico_base/static/src/font/Poppins-ExtraLight.ttf b/ext/3rd-party-addons/clarico_base/static/src/font/Poppins-ExtraLight.ttf new file mode 100755 index 00000000..4620a421 Binary files /dev/null and b/ext/3rd-party-addons/clarico_base/static/src/font/Poppins-ExtraLight.ttf differ diff --git a/ext/3rd-party-addons/clarico_base/static/src/font/Poppins-Italic.ttf b/ext/3rd-party-addons/clarico_base/static/src/font/Poppins-Italic.ttf new file mode 100755 index 00000000..8efebbf6 Binary files /dev/null and b/ext/3rd-party-addons/clarico_base/static/src/font/Poppins-Italic.ttf differ diff --git a/ext/3rd-party-addons/clarico_base/static/src/font/Poppins-Light.ttf b/ext/3rd-party-addons/clarico_base/static/src/font/Poppins-Light.ttf new file mode 100755 index 00000000..8a6ac685 Binary files /dev/null and b/ext/3rd-party-addons/clarico_base/static/src/font/Poppins-Light.ttf differ diff --git a/ext/3rd-party-addons/clarico_base/static/src/font/Poppins-Medium.ttf b/ext/3rd-party-addons/clarico_base/static/src/font/Poppins-Medium.ttf new file mode 100755 index 00000000..5b46f198 Binary files /dev/null and b/ext/3rd-party-addons/clarico_base/static/src/font/Poppins-Medium.ttf differ diff --git a/ext/3rd-party-addons/clarico_base/static/src/font/Poppins-Regular.ttf b/ext/3rd-party-addons/clarico_base/static/src/font/Poppins-Regular.ttf new file mode 100755 index 00000000..246a861a Binary files /dev/null and b/ext/3rd-party-addons/clarico_base/static/src/font/Poppins-Regular.ttf differ diff --git a/ext/3rd-party-addons/clarico_base/static/src/font/Poppins-SemiBold.ttf b/ext/3rd-party-addons/clarico_base/static/src/font/Poppins-SemiBold.ttf new file mode 100755 index 00000000..3bbad2a8 Binary files /dev/null and b/ext/3rd-party-addons/clarico_base/static/src/font/Poppins-SemiBold.ttf differ diff --git a/ext/3rd-party-addons/clarico_base/static/src/js/owl.carousel.js b/ext/3rd-party-addons/clarico_base/static/src/js/owl.carousel.js new file mode 100755 index 00000000..5e833490 --- /dev/null +++ b/ext/3rd-party-addons/clarico_base/static/src/js/owl.carousel.js @@ -0,0 +1,3275 @@ +/** + * Owl Carousel v2.2.1 + * Copyright 2013-2017 David Deutsch + * Licensed under () + */ +/** + * Owl carousel + * @version 2.1.6 + * @author Bartosz Wojciechowski + * @author David Deutsch + * @license The MIT License (MIT) + * @todo Lazy Load Icon + * @todo prevent animationend bubling + * @todo itemsScaleUp + * @todo Test Zepto + * @todo stagePadding calculate wrong active classes + */ +;(function($, window, document, undefined) { + + /** + * Creates a carousel. + * @class The Owl Carousel. + * @public + * @param {HTMLElement|jQuery} element - The element to create the carousel for. + * @param {Object} [options] - The options + */ + function Owl(element, options) { + + /** + * Current settings for the carousel. + * @public + */ + this.settings = null; + + /** + * Current options set by the caller including defaults. + * @public + */ + this.options = $.extend({}, Owl.Defaults, options); + + /** + * Plugin element. + * @public + */ + this.$element = $(element); + + /** + * Proxied event handlers. + * @protected + */ + this._handlers = {}; + + /** + * References to the running plugins of this carousel. + * @protected + */ + this._plugins = {}; + + /** + * Currently suppressed events to prevent them from beeing retriggered. + * @protected + */ + this._supress = {}; + + /** + * Absolute current position. + * @protected + */ + this._current = null; + + /** + * Animation speed in milliseconds. + * @protected + */ + this._speed = null; + + /** + * Coordinates of all items in pixel. + * @todo The name of this member is missleading. + * @protected + */ + this._coordinates = []; + + /** + * Current breakpoint. + * @todo Real media queries would be nice. + * @protected + */ + this._breakpoint = null; + + /** + * Current width of the plugin element. + */ + this._width = null; + + /** + * All real items. + * @protected + */ + this._items = []; + + /** + * All cloned items. + * @protected + */ + this._clones = []; + + /** + * Merge values of all items. + * @todo Maybe this could be part of a plugin. + * @protected + */ + this._mergers = []; + + /** + * Widths of all items. + */ + this._widths = []; + + /** + * Invalidated parts within the update process. + * @protected + */ + this._invalidated = {}; + + /** + * Ordered list of workers for the update process. + * @protected + */ + this._pipe = []; + + /** + * Current state information for the drag operation. + * @todo #261 + * @protected + */ + this._drag = { + time: null, + target: null, + pointer: null, + stage: { + start: null, + current: null + }, + direction: null + }; + + /** + * Current state information and their tags. + * @type {Object} + * @protected + */ + this._states = { + current: {}, + tags: { + 'initializing': [ 'busy' ], + 'animating': [ 'busy' ], + 'dragging': [ 'interacting' ] + } + }; + + $.each([ 'onResize', 'onThrottledResize' ], $.proxy(function(i, handler) { + this._handlers[handler] = $.proxy(this[handler], this); + }, this)); + + $.each(Owl.Plugins, $.proxy(function(key, plugin) { + this._plugins[key.charAt(0).toLowerCase() + key.slice(1)] + = new plugin(this); + }, this)); + + $.each(Owl.Workers, $.proxy(function(priority, worker) { + this._pipe.push({ + 'filter': worker.filter, + 'run': $.proxy(worker.run, this) + }); + }, this)); + + this.setup(); + this.initialize(); + } + + /** + * Default options for the carousel. + * @public + */ + Owl.Defaults = { + items: 3, + loop: false, + center: false, + rewind: false, + + mouseDrag: true, + touchDrag: true, + pullDrag: true, + freeDrag: false, + + margin: 0, + stagePadding: 0, + + merge: false, + mergeFit: true, + autoWidth: false, + + startPosition: 0, + rtl: false, + + smartSpeed: 250, + fluidSpeed: false, + dragEndSpeed: false, + + responsive: {}, + responsiveRefreshRate: 200, + responsiveBaseElement: window, + + fallbackEasing: 'swing', + + info: false, + + nestedItemSelector: false, + itemElement: 'div', + stageElement: 'div', + + refreshClass: 'owl-refresh', + loadedClass: 'owl-loaded', + loadingClass: 'owl-loading', + rtlClass: 'owl-rtl', + responsiveClass: 'owl-responsive', + dragClass: 'owl-drag', + itemClass: 'owl-item', + stageClass: 'owl-stage', + stageOuterClass: 'owl-stage-outer', + grabClass: 'owl-grab' + }; + + /** + * Enumeration for width. + * @public + * @readonly + * @enum {String} + */ + Owl.Width = { + Default: 'default', + Inner: 'inner', + Outer: 'outer' + }; + + /** + * Enumeration for types. + * @public + * @readonly + * @enum {String} + */ + Owl.Type = { + Event: 'event', + State: 'state' + }; + + /** + * Contains all registered plugins. + * @public + */ + Owl.Plugins = {}; + + /** + * List of workers involved in the update process. + */ + Owl.Workers = [ { + filter: [ 'width', 'settings' ], + run: function() { + this._width = this.$element.width(); + } + }, { + filter: [ 'width', 'items', 'settings' ], + run: function(cache) { + cache.current = this._items && this._items[this.relative(this._current)]; + } + }, { + filter: [ 'items', 'settings' ], + run: function() { + this.$stage.children('.cloned').remove(); + } + }, { + filter: [ 'width', 'items', 'settings' ], + run: function(cache) { + var margin = this.settings.margin || '', + grid = !this.settings.autoWidth, + rtl = this.settings.rtl, + css = { + 'width': 'auto', + 'margin-left': rtl ? margin : '', + 'margin-right': rtl ? '' : margin + }; + + !grid && this.$stage.children().css(css); + + cache.css = css; + } + }, { + filter: [ 'width', 'items', 'settings' ], + run: function(cache) { + var width = (this.width() / this.settings.items).toFixed(3) - this.settings.margin, + merge = null, + iterator = this._items.length, + grid = !this.settings.autoWidth, + widths = []; + + cache.items = { + merge: false, + width: width + }; + + while (iterator--) { + merge = this._mergers[iterator]; + merge = this.settings.mergeFit && Math.min(merge, this.settings.items) || merge; + + cache.items.merge = merge > 1 || cache.items.merge; + + widths[iterator] = !grid ? this._items[iterator].width() : width * merge; + } + + this._widths = widths; + } + }, { + filter: [ 'items', 'settings' ], + run: function() { + var clones = [], + items = this._items, + settings = this.settings, + // TODO: Should be computed from number of min width items in stage + view = Math.max(settings.items * 2, 4), + size = Math.ceil(items.length / 2) * 2, + repeat = settings.loop && items.length ? settings.rewind ? view : Math.max(view, size) : 0, + append = '', + prepend = ''; + + repeat /= 2; + + while (repeat--) { + // Switch to only using appended clones + clones.push(this.normalize(clones.length / 2, true)); + append = append + items[clones[clones.length - 1]][0].outerHTML; + clones.push(this.normalize(items.length - 1 - (clones.length - 1) / 2, true)); + prepend = items[clones[clones.length - 1]][0].outerHTML + prepend; + } + + this._clones = clones; + + $(append).addClass('cloned').appendTo(this.$stage); + $(prepend).addClass('cloned').prependTo(this.$stage); + } + }, { + filter: [ 'width', 'items', 'settings' ], + run: function() { + var rtl = this.settings.rtl ? 1 : -1, + size = this._clones.length + this._items.length, + iterator = -1, + previous = 0, + current = 0, + coordinates = []; + + while (++iterator < size) { + previous = coordinates[iterator - 1] || 0; + current = this._widths[this.relative(iterator)] + this.settings.margin; + coordinates.push(previous + current * rtl); + } + + this._coordinates = coordinates; + } + }, { + filter: [ 'width', 'items', 'settings' ], + run: function() { + var padding = this.settings.stagePadding, + coordinates = this._coordinates, + css = { + 'width': Math.ceil(Math.abs(coordinates[coordinates.length - 1])) + padding * 2, + 'padding-left': padding || '', + 'padding-right': padding || '' + }; + + this.$stage.css(css); + } + }, { + filter: [ 'width', 'items', 'settings' ], + run: function(cache) { + var iterator = this._coordinates.length, + grid = !this.settings.autoWidth, + items = this.$stage.children(); + + if (grid && cache.items.merge) { + while (iterator--) { + cache.css.width = this._widths[this.relative(iterator)]; + items.eq(iterator).css(cache.css); + } + } else if (grid) { + cache.css.width = cache.items.width; + items.css(cache.css); + } + } + }, { + filter: [ 'items' ], + run: function() { + this._coordinates.length < 1 && this.$stage.removeAttr('style'); + } + }, { + filter: [ 'width', 'items', 'settings' ], + run: function(cache) { + cache.current = cache.current ? this.$stage.children().index(cache.current) : 0; + cache.current = Math.max(this.minimum(), Math.min(this.maximum(), cache.current)); + this.reset(cache.current); + } + }, { + filter: [ 'position' ], + run: function() { + this.animate(this.coordinates(this._current)); + } + }, { + filter: [ 'width', 'position', 'items', 'settings' ], + run: function() { + var rtl = this.settings.rtl ? 1 : -1, + padding = this.settings.stagePadding * 2, + begin = this.coordinates(this.current()) + padding, + end = begin + this.width() * rtl, + inner, outer, matches = [], i, n; + + for (i = 0, n = this._coordinates.length; i < n; i++) { + inner = this._coordinates[i - 1] || 0; + outer = Math.abs(this._coordinates[i]) + padding * rtl; + + if ((this.op(inner, '<=', begin) && (this.op(inner, '>', end))) + || (this.op(outer, '<', begin) && this.op(outer, '>', end))) { + matches.push(i); + } + } + + this.$stage.children('.active').removeClass('active'); + this.$stage.children(':eq(' + matches.join('), :eq(') + ')').addClass('active'); + + if (this.settings.center) { + this.$stage.children('.center').removeClass('center'); + this.$stage.children().eq(this.current()).addClass('center'); + } + } + } ]; + + /** + * Initializes the carousel. + * @protected + */ + Owl.prototype.initialize = function() { + this.enter('initializing'); + this.trigger('initialize'); + + this.$element.toggleClass(this.settings.rtlClass, this.settings.rtl); + + if (this.settings.autoWidth && !this.is('pre-loading')) { + var imgs, nestedSelector, width; + imgs = this.$element.find('img'); + nestedSelector = this.settings.nestedItemSelector ? '.' + this.settings.nestedItemSelector : undefined; + width = this.$element.children(nestedSelector).width(); + + if (imgs.length && width <= 0) { + this.preloadAutoWidthImages(imgs); + } + } + + this.$element.addClass(this.options.loadingClass); + + // create stage + this.$stage = $('<' + this.settings.stageElement + ' class="' + this.settings.stageClass + '"/>') + .wrap('
'); + + // append stage + this.$element.append(this.$stage.parent()); + + // append content + this.replace(this.$element.children().not(this.$stage.parent())); + + // check visibility + if (this.$element.is(':visible')) { + // update view + this.refresh(); + } else { + // invalidate width + this.invalidate('width'); + } + + this.$element + .removeClass(this.options.loadingClass) + .addClass(this.options.loadedClass); + + // register event handlers + this.registerEventHandlers(); + + this.leave('initializing'); + this.trigger('initialized'); + }; + + /** + * Setups the current settings. + * @todo Remove responsive classes. Why should adaptive designs be brought into IE8? + * @todo Support for media queries by using `matchMedia` would be nice. + * @public + */ + Owl.prototype.setup = function() { + var viewport = this.viewport(), + overwrites = this.options.responsive, + match = -1, + settings = null; + + if (!overwrites) { + settings = $.extend({}, this.options); + } else { + $.each(overwrites, function(breakpoint) { + if (breakpoint <= viewport && breakpoint > match) { + match = Number(breakpoint); + } + }); + + settings = $.extend({}, this.options, overwrites[match]); + if (typeof settings.stagePadding === 'function') { + settings.stagePadding = settings.stagePadding(); + } + delete settings.responsive; + + // responsive class + if (settings.responsiveClass) { + this.$element.attr('class', + this.$element.attr('class').replace(new RegExp('(' + this.options.responsiveClass + '-)\\S+\\s', 'g'), '$1' + match) + ); + } + } + + this.trigger('change', { property: { name: 'settings', value: settings } }); + this._breakpoint = match; + this.settings = settings; + this.invalidate('settings'); + this.trigger('changed', { property: { name: 'settings', value: this.settings } }); + }; + + /** + * Updates option logic if necessery. + * @protected + */ + Owl.prototype.optionsLogic = function() { + if (this.settings.autoWidth) { + this.settings.stagePadding = false; + this.settings.merge = false; + } + }; + + /** + * Prepares an item before add. + * @todo Rename event parameter `content` to `item`. + * @protected + * @returns {jQuery|HTMLElement} - The item container. + */ + Owl.prototype.prepare = function(item) { + var event = this.trigger('prepare', { content: item }); + + if (!event.data) { + event.data = $('<' + this.settings.itemElement + '/>') + .addClass(this.options.itemClass).append(item) + } + + this.trigger('prepared', { content: event.data }); + + return event.data; + }; + + /** + * Updates the view. + * @public + */ + Owl.prototype.update = function() { + var i = 0, + n = this._pipe.length, + filter = $.proxy(function(p) { return this[p] }, this._invalidated), + cache = {}; + + while (i < n) { + if (this._invalidated.all || $.grep(this._pipe[i].filter, filter).length > 0) { + this._pipe[i].run(cache); + } + i++; + } + + this._invalidated = {}; + + !this.is('valid') && this.enter('valid'); + }; + + /** + * Gets the width of the view. + * @public + * @param {Owl.Width} [dimension=Owl.Width.Default] - The dimension to return. + * @returns {Number} - The width of the view in pixel. + */ + Owl.prototype.width = function(dimension) { + dimension = dimension || Owl.Width.Default; + switch (dimension) { + case Owl.Width.Inner: + case Owl.Width.Outer: + return this._width; + default: + return this._width - this.settings.stagePadding * 2 + this.settings.margin; + } + }; + + /** + * Refreshes the carousel primarily for adaptive purposes. + * @public + */ + Owl.prototype.refresh = function() { + this.enter('refreshing'); + this.trigger('refresh'); + + this.setup(); + + this.optionsLogic(); + + this.$element.addClass(this.options.refreshClass); + + this.update(); + + this.$element.removeClass(this.options.refreshClass); + + this.leave('refreshing'); + this.trigger('refreshed'); + }; + + /** + * Checks window `resize` event. + * @protected + */ + Owl.prototype.onThrottledResize = function() { + window.clearTimeout(this.resizeTimer); + this.resizeTimer = window.setTimeout(this._handlers.onResize, this.settings.responsiveRefreshRate); + }; + + /** + * Checks window `resize` event. + * @protected + */ + Owl.prototype.onResize = function() { + if (!this._items.length) { + return false; + } + + if (this._width === this.$element.width()) { + return false; + } + + if (!this.$element.is(':visible')) { + return false; + } + + this.enter('resizing'); + + if (this.trigger('resize').isDefaultPrevented()) { + this.leave('resizing'); + return false; + } + + this.invalidate('width'); + + this.refresh(); + + this.leave('resizing'); + this.trigger('resized'); + }; + + /** + * Registers event handlers. + * @todo Check `msPointerEnabled` + * @todo #261 + * @protected + */ + Owl.prototype.registerEventHandlers = function() { + if ($.support.transition) { + this.$stage.on($.support.transition.end + '.owl.core', $.proxy(this.onTransitionEnd, this)); + } + + if (this.settings.responsive !== false) { + this.on(window, 'resize', this._handlers.onThrottledResize); + } + + if (this.settings.mouseDrag) { + this.$element.addClass(this.options.dragClass); + this.$stage.on('mousedown.owl.core', $.proxy(this.onDragStart, this)); + this.$stage.on('dragstart.owl.core selectstart.owl.core', function() { return false }); + } + + if (this.settings.touchDrag){ + this.$stage.on('touchstart.owl.core', $.proxy(this.onDragStart, this)); + this.$stage.on('touchcancel.owl.core', $.proxy(this.onDragEnd, this)); + } + }; + + /** + * Handles `touchstart` and `mousedown` events. + * @todo Horizontal swipe threshold as option + * @todo #261 + * @protected + * @param {Event} event - The event arguments. + */ + Owl.prototype.onDragStart = function(event) { + var stage = null; + + if (event.which === 3) { + return; + } + + if ($.support.transform) { + stage = this.$stage.css('transform').replace(/.*\(|\)| /g, '').split(','); + stage = { + x: stage[stage.length === 16 ? 12 : 4], + y: stage[stage.length === 16 ? 13 : 5] + }; + } else { + stage = this.$stage.position(); + stage = { + x: this.settings.rtl ? + stage.left + this.$stage.width() - this.width() + this.settings.margin : + stage.left, + y: stage.top + }; + } + + if (this.is('animating')) { + $.support.transform ? this.animate(stage.x) : this.$stage.stop() + this.invalidate('position'); + } + + this.$element.toggleClass(this.options.grabClass, event.type === 'mousedown'); + + this.speed(0); + + this._drag.time = new Date().getTime(); + this._drag.target = $(event.target); + this._drag.stage.start = stage; + this._drag.stage.current = stage; + this._drag.pointer = this.pointer(event); + + $(document).on('mouseup.owl.core touchend.owl.core', $.proxy(this.onDragEnd, this)); + + $(document).one('mousemove.owl.core touchmove.owl.core', $.proxy(function(event) { + var delta = this.difference(this._drag.pointer, this.pointer(event)); + + $(document).on('mousemove.owl.core touchmove.owl.core', $.proxy(this.onDragMove, this)); + + if (Math.abs(delta.x) < Math.abs(delta.y) && this.is('valid')) { + return; + } + + event.preventDefault(); + + this.enter('dragging'); + this.trigger('drag'); + }, this)); + }; + + /** + * Handles the `touchmove` and `mousemove` events. + * @todo #261 + * @protected + * @param {Event} event - The event arguments. + */ + Owl.prototype.onDragMove = function(event) { + var minimum = null, + maximum = null, + pull = null, + delta = this.difference(this._drag.pointer, this.pointer(event)), + stage = this.difference(this._drag.stage.start, delta); + + if (!this.is('dragging')) { + return; + } + + event.preventDefault(); + + if (this.settings.loop) { + minimum = this.coordinates(this.minimum()); + maximum = this.coordinates(this.maximum() + 1) - minimum; + stage.x = (((stage.x - minimum) % maximum + maximum) % maximum) + minimum; + } else { + minimum = this.settings.rtl ? this.coordinates(this.maximum()) : this.coordinates(this.minimum()); + maximum = this.settings.rtl ? this.coordinates(this.minimum()) : this.coordinates(this.maximum()); + pull = this.settings.pullDrag ? -1 * delta.x / 5 : 0; + stage.x = Math.max(Math.min(stage.x, minimum + pull), maximum + pull); + } + + this._drag.stage.current = stage; + + this.animate(stage.x); + }; + + /** + * Handles the `touchend` and `mouseup` events. + * @todo #261 + * @todo Threshold for click event + * @protected + * @param {Event} event - The event arguments. + */ + Owl.prototype.onDragEnd = function(event) { + var delta = this.difference(this._drag.pointer, this.pointer(event)), + stage = this._drag.stage.current, + direction = delta.x > 0 ^ this.settings.rtl ? 'left' : 'right'; + + $(document).off('.owl.core'); + + this.$element.removeClass(this.options.grabClass); + + if (delta.x !== 0 && this.is('dragging') || !this.is('valid')) { + this.speed(this.settings.dragEndSpeed || this.settings.smartSpeed); + this.current(this.closest(stage.x, delta.x !== 0 ? direction : this._drag.direction)); + this.invalidate('position'); + this.update(); + + this._drag.direction = direction; + + if (Math.abs(delta.x) > 3 || new Date().getTime() - this._drag.time > 300) { + this._drag.target.one('click.owl.core', function() { return false; }); + } + } + + if (!this.is('dragging')) { + return; + } + + this.leave('dragging'); + this.trigger('dragged'); + }; + + /** + * Gets absolute position of the closest item for a coordinate. + * @todo Setting `freeDrag` makes `closest` not reusable. See #165. + * @protected + * @param {Number} coordinate - The coordinate in pixel. + * @param {String} direction - The direction to check for the closest item. Ether `left` or `right`. + * @return {Number} - The absolute position of the closest item. + */ + Owl.prototype.closest = function(coordinate, direction) { + var position = -1, + pull = 30, + width = this.width(), + coordinates = this.coordinates(); + + if (!this.settings.freeDrag) { + // check closest item + $.each(coordinates, $.proxy(function(index, value) { + // on a left pull, check on current index + if (direction === 'left' && coordinate > value - pull && coordinate < value + pull) { + position = index; + // on a right pull, check on previous index + // to do so, subtract width from value and set position = index + 1 + } else if (direction === 'right' && coordinate > value - width - pull && coordinate < value - width + pull) { + position = index + 1; + } else if (this.op(coordinate, '<', value) + && this.op(coordinate, '>', coordinates[index + 1] || value - width)) { + position = direction === 'left' ? index + 1 : index; + } + return position === -1; + }, this)); + } + + if (!this.settings.loop) { + // non loop boundries + if (this.op(coordinate, '>', coordinates[this.minimum()])) { + position = coordinate = this.minimum(); + } else if (this.op(coordinate, '<', coordinates[this.maximum()])) { + position = coordinate = this.maximum(); + } + } + + return position; + }; + + /** + * Animates the stage. + * @todo #270 + * @public + * @param {Number} coordinate - The coordinate in pixels. + */ + Owl.prototype.animate = function(coordinate) { + var animate = this.speed() > 0; + + this.is('animating') && this.onTransitionEnd(); + + if (animate) { + this.enter('animating'); + this.trigger('translate'); + } + + if ($.support.transform3d && $.support.transition) { + this.$stage.css({ + transform: 'translate3d(' + coordinate + 'px,0px,0px)', + transition: (this.speed() / 1000) + 's' + }); + } else if (animate) { + this.$stage.animate({ + left: coordinate + 'px' + }, this.speed(), this.settings.fallbackEasing, $.proxy(this.onTransitionEnd, this)); + } else { + this.$stage.css({ + left: coordinate + 'px' + }); + } + }; + + /** + * Checks whether the carousel is in a specific state or not. + * @param {String} state - The state to check. + * @returns {Boolean} - The flag which indicates if the carousel is busy. + */ + Owl.prototype.is = function(state) { + return this._states.current[state] && this._states.current[state] > 0; + }; + + /** + * Sets the absolute position of the current item. + * @public + * @param {Number} [position] - The new absolute position or nothing to leave it unchanged. + * @returns {Number} - The absolute position of the current item. + */ + Owl.prototype.current = function(position) { + if (position === undefined) { + return this._current; + } + + if (this._items.length === 0) { + return undefined; + } + + position = this.normalize(position); + + if (this._current !== position) { + var event = this.trigger('change', { property: { name: 'position', value: position } }); + + if (event.data !== undefined) { + position = this.normalize(event.data); + } + + this._current = position; + + this.invalidate('position'); + + this.trigger('changed', { property: { name: 'position', value: this._current } }); + } + + return this._current; + }; + + /** + * Invalidates the given part of the update routine. + * @param {String} [part] - The part to invalidate. + * @returns {Array.} - The invalidated parts. + */ + Owl.prototype.invalidate = function(part) { + if ($.type(part) === 'string') { + this._invalidated[part] = true; + this.is('valid') && this.leave('valid'); + } + return $.map(this._invalidated, function(v, i) { return i }); + }; + + /** + * Resets the absolute position of the current item. + * @public + * @param {Number} position - The absolute position of the new item. + */ + Owl.prototype.reset = function(position) { + position = this.normalize(position); + + if (position === undefined) { + return; + } + + this._speed = 0; + this._current = position; + + this.suppress([ 'translate', 'translated' ]); + + this.animate(this.coordinates(position)); + + this.release([ 'translate', 'translated' ]); + }; + + /** + * Normalizes an absolute or a relative position of an item. + * @public + * @param {Number} position - The absolute or relative position to normalize. + * @param {Boolean} [relative=false] - Whether the given position is relative or not. + * @returns {Number} - The normalized position. + */ + Owl.prototype.normalize = function(position, relative) { + var n = this._items.length, + m = relative ? 0 : this._clones.length; + + if (!this.isNumeric(position) || n < 1) { + position = undefined; + } else if (position < 0 || position >= n + m) { + position = ((position - m / 2) % n + n) % n + m / 2; + } + + return position; + }; + + /** + * Converts an absolute position of an item into a relative one. + * @public + * @param {Number} position - The absolute position to convert. + * @returns {Number} - The converted position. + */ + Owl.prototype.relative = function(position) { + position -= this._clones.length / 2; + return this.normalize(position, true); + }; + + /** + * Gets the maximum position for the current item. + * @public + * @param {Boolean} [relative=false] - Whether to return an absolute position or a relative position. + * @returns {Number} + */ + Owl.prototype.maximum = function(relative) { + var settings = this.settings, + maximum = this._coordinates.length, + iterator, + reciprocalItemsWidth, + elementWidth; + + if (settings.loop) { + maximum = this._clones.length / 2 + this._items.length - 1; + } else if (settings.autoWidth || settings.merge) { + iterator = this._items.length; + reciprocalItemsWidth = this._items[--iterator].width(); + elementWidth = this.$element.width(); + while (iterator--) { + reciprocalItemsWidth += this._items[iterator].width() + this.settings.margin; + if (reciprocalItemsWidth > elementWidth) { + break; + } + } + maximum = iterator + 1; + } else if (settings.center) { + maximum = this._items.length - 1; + } else { + maximum = this._items.length - settings.items; + } + + if (relative) { + maximum -= this._clones.length / 2; + } + + return Math.max(maximum, 0); + }; + + /** + * Gets the minimum position for the current item. + * @public + * @param {Boolean} [relative=false] - Whether to return an absolute position or a relative position. + * @returns {Number} + */ + Owl.prototype.minimum = function(relative) { + return relative ? 0 : this._clones.length / 2; + }; + + /** + * Gets an item at the specified relative position. + * @public + * @param {Number} [position] - The relative position of the item. + * @return {jQuery|Array.} - The item at the given position or all items if no position was given. + */ + Owl.prototype.items = function(position) { + if (position === undefined) { + return this._items.slice(); + } + + position = this.normalize(position, true); + return this._items[position]; + }; + + /** + * Gets an item at the specified relative position. + * @public + * @param {Number} [position] - The relative position of the item. + * @return {jQuery|Array.} - The item at the given position or all items if no position was given. + */ + Owl.prototype.mergers = function(position) { + if (position === undefined) { + return this._mergers.slice(); + } + + position = this.normalize(position, true); + return this._mergers[position]; + }; + + /** + * Gets the absolute positions of clones for an item. + * @public + * @param {Number} [position] - The relative position of the item. + * @returns {Array.} - The absolute positions of clones for the item or all if no position was given. + */ + Owl.prototype.clones = function(position) { + var odd = this._clones.length / 2, + even = odd + this._items.length, + map = function(index) { return index % 2 === 0 ? even + index / 2 : odd - (index + 1) / 2 }; + + if (position === undefined) { + return $.map(this._clones, function(v, i) { return map(i) }); + } + + return $.map(this._clones, function(v, i) { return v === position ? map(i) : null }); + }; + + /** + * Sets the current animation speed. + * @public + * @param {Number} [speed] - The animation speed in milliseconds or nothing to leave it unchanged. + * @returns {Number} - The current animation speed in milliseconds. + */ + Owl.prototype.speed = function(speed) { + if (speed !== undefined) { + this._speed = speed; + } + + return this._speed; + }; + + /** + * Gets the coordinate of an item. + * @todo The name of this method is missleanding. + * @public + * @param {Number} position - The absolute position of the item within `minimum()` and `maximum()`. + * @returns {Number|Array.} - The coordinate of the item in pixel or all coordinates. + */ + Owl.prototype.coordinates = function(position) { + var multiplier = 1, + newPosition = position - 1, + coordinate; + + if (position === undefined) { + return $.map(this._coordinates, $.proxy(function(coordinate, index) { + return this.coordinates(index); + }, this)); + } + + if (this.settings.center) { + if (this.settings.rtl) { + multiplier = -1; + newPosition = position + 1; + } + + coordinate = this._coordinates[position]; + coordinate += (this.width() - coordinate + (this._coordinates[newPosition] || 0)) / 2 * multiplier; + } else { + coordinate = this._coordinates[newPosition] || 0; + } + + coordinate = Math.ceil(coordinate); + + return coordinate; + }; + + /** + * Calculates the speed for a translation. + * @protected + * @param {Number} from - The absolute position of the start item. + * @param {Number} to - The absolute position of the target item. + * @param {Number} [factor=undefined] - The time factor in milliseconds. + * @returns {Number} - The time in milliseconds for the translation. + */ + Owl.prototype.duration = function(from, to, factor) { + if (factor === 0) { + return 0; + } + + return Math.min(Math.max(Math.abs(to - from), 1), 6) * Math.abs((factor || this.settings.smartSpeed)); + }; + + /** + * Slides to the specified item. + * @public + * @param {Number} position - The position of the item. + * @param {Number} [speed] - The time in milliseconds for the transition. + */ + Owl.prototype.to = function(position, speed) { + var current = this.current(), + revert = null, + distance = position - this.relative(current), + direction = (distance > 0) - (distance < 0), + items = this._items.length, + minimum = this.minimum(), + maximum = this.maximum(); + + if (this.settings.loop) { + if (!this.settings.rewind && Math.abs(distance) > items / 2) { + distance += direction * -1 * items; + } + + position = current + distance; + revert = ((position - minimum) % items + items) % items + minimum; + + if (revert !== position && revert - distance <= maximum && revert - distance > 0) { + current = revert - distance; + position = revert; + this.reset(current); + } + } else if (this.settings.rewind) { + maximum += 1; + position = (position % maximum + maximum) % maximum; + } else { + position = Math.max(minimum, Math.min(maximum, position)); + } + + this.speed(this.duration(current, position, speed)); + this.current(position); + + if (this.$element.is(':visible')) { + this.update(); + } + }; + + /** + * Slides to the next item. + * @public + * @param {Number} [speed] - The time in milliseconds for the transition. + */ + Owl.prototype.next = function(speed) { + speed = speed || false; + this.to(this.relative(this.current()) + 1, speed); + }; + + /** + * Slides to the previous item. + * @public + * @param {Number} [speed] - The time in milliseconds for the transition. + */ + Owl.prototype.prev = function(speed) { + speed = speed || false; + this.to(this.relative(this.current()) - 1, speed); + }; + + /** + * Handles the end of an animation. + * @protected + * @param {Event} event - The event arguments. + */ + Owl.prototype.onTransitionEnd = function(event) { + + // if css2 animation then event object is undefined + if (event !== undefined) { + event.stopPropagation(); + + // Catch only owl-stage transitionEnd event + if ((event.target || event.srcElement || event.originalTarget) !== this.$stage.get(0)) { + return false; + } + } + + this.leave('animating'); + this.trigger('translated'); + }; + + /** + * Gets viewport width. + * @protected + * @return {Number} - The width in pixel. + */ + Owl.prototype.viewport = function() { + var width; + if (this.options.responsiveBaseElement !== window) { + width = $(this.options.responsiveBaseElement).width(); + } else if (window.innerWidth) { + width = window.innerWidth; + } else if (document.documentElement && document.documentElement.clientWidth) { + width = document.documentElement.clientWidth; + } else { + console.warn('Can not detect viewport width.'); + } + return width; + }; + + /** + * Replaces the current content. + * @public + * @param {HTMLElement|jQuery|String} content - The new content. + */ + Owl.prototype.replace = function(content) { + this.$stage.empty(); + this._items = []; + + if (content) { + content = (content instanceof jQuery) ? content : $(content); + } + + if (this.settings.nestedItemSelector) { + content = content.find('.' + this.settings.nestedItemSelector); + } + + content.filter(function() { + return this.nodeType === 1; + }).each($.proxy(function(index, item) { + item = this.prepare(item); + this.$stage.append(item); + this._items.push(item); + this._mergers.push(item.find('[data-merge]').addBack('[data-merge]').attr('data-merge') * 1 || 1); + }, this)); + + this.reset(this.isNumeric(this.settings.startPosition) ? this.settings.startPosition : 0); + + this.invalidate('items'); + }; + + /** + * Adds an item. + * @todo Use `item` instead of `content` for the event arguments. + * @public + * @param {HTMLElement|jQuery|String} content - The item content to add. + * @param {Number} [position] - The relative position at which to insert the item otherwise the item will be added to the end. + */ + Owl.prototype.add = function(content, position) { + var current = this.relative(this._current); + + position = position === undefined ? this._items.length : this.normalize(position, true); + content = content instanceof jQuery ? content : $(content); + + this.trigger('add', { content: content, position: position }); + + content = this.prepare(content); + + if (this._items.length === 0 || position === this._items.length) { + this._items.length === 0 && this.$stage.append(content); + this._items.length !== 0 && this._items[position - 1].after(content); + this._items.push(content); + this._mergers.push(content.find('[data-merge]').addBack('[data-merge]').attr('data-merge') * 1 || 1); + } else { + this._items[position].before(content); + this._items.splice(position, 0, content); + this._mergers.splice(position, 0, content.find('[data-merge]').addBack('[data-merge]').attr('data-merge') * 1 || 1); + } + + this._items[current] && this.reset(this._items[current].index()); + + this.invalidate('items'); + + this.trigger('added', { content: content, position: position }); + }; + + /** + * Removes an item by its position. + * @todo Use `item` instead of `content` for the event arguments. + * @public + * @param {Number} position - The relative position of the item to remove. + */ + Owl.prototype.remove = function(position) { + position = this.normalize(position, true); + + if (position === undefined) { + return; + } + + this.trigger('remove', { content: this._items[position], position: position }); + + this._items[position].remove(); + this._items.splice(position, 1); + this._mergers.splice(position, 1); + + this.invalidate('items'); + + this.trigger('removed', { content: null, position: position }); + }; + + /** + * Preloads images with auto width. + * @todo Replace by a more generic approach + * @protected + */ + Owl.prototype.preloadAutoWidthImages = function(images) { + images.each($.proxy(function(i, element) { + this.enter('pre-loading'); + element = $(element); + $(new Image()).one('load', $.proxy(function(e) { + element.attr('src', e.target.src); + element.css('opacity', 1); + this.leave('pre-loading'); + !this.is('pre-loading') && !this.is('initializing') && this.refresh(); + }, this)).attr('src', element.attr('src') || element.attr('data-src') || element.attr('data-src-retina')); + }, this)); + }; + + /** + * Destroys the carousel. + * @public + */ + Owl.prototype.destroy = function() { + + this.$element.off('.owl.core'); + this.$stage.off('.owl.core'); + $(document).off('.owl.core'); + + if (this.settings.responsive !== false) { + window.clearTimeout(this.resizeTimer); + this.off(window, 'resize', this._handlers.onThrottledResize); + } + + for (var i in this._plugins) { + this._plugins[i].destroy(); + } + + this.$stage.children('.cloned').remove(); + + this.$stage.unwrap(); + this.$stage.children().contents().unwrap(); + this.$stage.children().unwrap(); + + this.$element + .removeClass(this.options.refreshClass) + .removeClass(this.options.loadingClass) + .removeClass(this.options.loadedClass) + .removeClass(this.options.rtlClass) + .removeClass(this.options.dragClass) + .removeClass(this.options.grabClass) + .attr('class', this.$element.attr('class').replace(new RegExp(this.options.responsiveClass + '-\\S+\\s', 'g'), '')) + .removeData('owl.carousel'); + }; + + /** + * Operators to calculate right-to-left and left-to-right. + * @protected + * @param {Number} [a] - The left side operand. + * @param {String} [o] - The operator. + * @param {Number} [b] - The right side operand. + */ + Owl.prototype.op = function(a, o, b) { + var rtl = this.settings.rtl; + switch (o) { + case '<': + return rtl ? a > b : a < b; + case '>': + return rtl ? a < b : a > b; + case '>=': + return rtl ? a <= b : a >= b; + case '<=': + return rtl ? a >= b : a <= b; + default: + break; + } + }; + + /** + * Attaches to an internal event. + * @protected + * @param {HTMLElement} element - The event source. + * @param {String} event - The event name. + * @param {Function} listener - The event handler to attach. + * @param {Boolean} capture - Wether the event should be handled at the capturing phase or not. + */ + Owl.prototype.on = function(element, event, listener, capture) { + if (element.addEventListener) { + element.addEventListener(event, listener, capture); + } else if (element.attachEvent) { + element.attachEvent('on' + event, listener); + } + }; + + /** + * Detaches from an internal event. + * @protected + * @param {HTMLElement} element - The event source. + * @param {String} event - The event name. + * @param {Function} listener - The attached event handler to detach. + * @param {Boolean} capture - Wether the attached event handler was registered as a capturing listener or not. + */ + Owl.prototype.off = function(element, event, listener, capture) { + if (element.removeEventListener) { + element.removeEventListener(event, listener, capture); + } else if (element.detachEvent) { + element.detachEvent('on' + event, listener); + } + }; + + /** + * Triggers a public event. + * @todo Remove `status`, `relatedTarget` should be used instead. + * @protected + * @param {String} name - The event name. + * @param {*} [data=null] - The event data. + * @param {String} [namespace=carousel] - The event namespace. + * @param {String} [state] - The state which is associated with the event. + * @param {Boolean} [enter=false] - Indicates if the call enters the specified state or not. + * @returns {Event} - The event arguments. + */ + Owl.prototype.trigger = function(name, data, namespace, state, enter) { + var status = { + item: { count: this._items.length, index: this.current() } + }, handler = $.camelCase( + $.grep([ 'on', name, namespace ], function(v) { return v }) + .join('-').toLowerCase() + ), event = $.Event( + [ name, 'owl', namespace || 'carousel' ].join('.').toLowerCase(), + $.extend({ relatedTarget: this }, status, data) + ); + + if (!this._supress[name]) { + $.each(this._plugins, function(name, plugin) { + if (plugin.onTrigger) { + plugin.onTrigger(event); + } + }); + + this.register({ type: Owl.Type.Event, name: name }); + this.$element.trigger(event); + + if (this.settings && typeof this.settings[handler] === 'function') { + this.settings[handler].call(this, event); + } + } + + return event; + }; + + /** + * Enters a state. + * @param name - The state name. + */ + Owl.prototype.enter = function(name) { + $.each([ name ].concat(this._states.tags[name] || []), $.proxy(function(i, name) { + if (this._states.current[name] === undefined) { + this._states.current[name] = 0; + } + + this._states.current[name]++; + }, this)); + }; + + /** + * Leaves a state. + * @param name - The state name. + */ + Owl.prototype.leave = function(name) { + $.each([ name ].concat(this._states.tags[name] || []), $.proxy(function(i, name) { + this._states.current[name]--; + }, this)); + }; + + /** + * Registers an event or state. + * @public + * @param {Object} object - The event or state to register. + */ + Owl.prototype.register = function(object) { + if (object.type === Owl.Type.Event) { + if (!$.event.special[object.name]) { + $.event.special[object.name] = {}; + } + + if (!$.event.special[object.name].owl) { + var _default = $.event.special[object.name]._default; + $.event.special[object.name]._default = function(e) { + if (_default && _default.apply && (!e.namespace || e.namespace.indexOf('owl') === -1)) { + return _default.apply(this, arguments); + } + return e.namespace && e.namespace.indexOf('owl') > -1; + }; + $.event.special[object.name].owl = true; + } + } else if (object.type === Owl.Type.State) { + if (!this._states.tags[object.name]) { + this._states.tags[object.name] = object.tags; + } else { + this._states.tags[object.name] = this._states.tags[object.name].concat(object.tags); + } + + this._states.tags[object.name] = $.grep(this._states.tags[object.name], $.proxy(function(tag, i) { + return $.inArray(tag, this._states.tags[object.name]) === i; + }, this)); + } + }; + + /** + * Suppresses events. + * @protected + * @param {Array.} events - The events to suppress. + */ + Owl.prototype.suppress = function(events) { + $.each(events, $.proxy(function(index, event) { + this._supress[event] = true; + }, this)); + }; + + /** + * Releases suppressed events. + * @protected + * @param {Array.} events - The events to release. + */ + Owl.prototype.release = function(events) { + $.each(events, $.proxy(function(index, event) { + delete this._supress[event]; + }, this)); + }; + + /** + * Gets unified pointer coordinates from event. + * @todo #261 + * @protected + * @param {Event} - The `mousedown` or `touchstart` event. + * @returns {Object} - Contains `x` and `y` coordinates of current pointer position. + */ + Owl.prototype.pointer = function(event) { + var result = { x: null, y: null }; + + event = event.originalEvent || event || window.event; + + event = event.touches && event.touches.length ? + event.touches[0] : event.changedTouches && event.changedTouches.length ? + event.changedTouches[0] : event; + + if (event.pageX) { + result.x = event.pageX; + result.y = event.pageY; + } else { + result.x = event.clientX; + result.y = event.clientY; + } + + return result; + }; + + /** + * Determines if the input is a Number or something that can be coerced to a Number + * @protected + * @param {Number|String|Object|Array|Boolean|RegExp|Function|Symbol} - The input to be tested + * @returns {Boolean} - An indication if the input is a Number or can be coerced to a Number + */ + Owl.prototype.isNumeric = function(number) { + return !isNaN(parseFloat(number)); + }; + + /** + * Gets the difference of two vectors. + * @todo #261 + * @protected + * @param {Object} - The first vector. + * @param {Object} - The second vector. + * @returns {Object} - The difference. + */ + Owl.prototype.difference = function(first, second) { + return { + x: first.x - second.x, + y: first.y - second.y + }; + }; + + /** + * The jQuery Plugin for the Owl Carousel + * @todo Navigation plugin `next` and `prev` + * @public + */ + $.fn.owlCarousel = function(option) { + var args = Array.prototype.slice.call(arguments, 1); + + return this.each(function() { + var $this = $(this), + data = $this.data('owl.carousel'); + + if (!data) { + data = new Owl(this, typeof option == 'object' && option); + $this.data('owl.carousel', data); + + $.each([ + 'next', 'prev', 'to', 'destroy', 'refresh', 'replace', 'add', 'remove' + ], function(i, event) { + data.register({ type: Owl.Type.Event, name: event }); + data.$element.on(event + '.owl.carousel.core', $.proxy(function(e) { + if (e.namespace && e.relatedTarget !== this) { + this.suppress([ event ]); + data[event].apply(this, [].slice.call(arguments, 1)); + this.release([ event ]); + } + }, data)); + }); + } + + if (typeof option == 'string' && option.charAt(0) !== '_') { + data[option].apply(data, args); + } + }); + }; + + /** + * The constructor for the jQuery Plugin + * @public + */ + $.fn.owlCarousel.Constructor = Owl; + +})(window.Zepto || window.jQuery, window, document); + +/** + * AutoRefresh Plugin + * @version 2.1.0 + * @author Artus Kolanowski + * @author David Deutsch + * @license The MIT License (MIT) + */ +;(function($, window, document, undefined) { + + /** + * Creates the auto refresh plugin. + * @class The Auto Refresh Plugin + * @param {Owl} carousel - The Owl Carousel + */ + var AutoRefresh = function(carousel) { + /** + * Reference to the core. + * @protected + * @type {Owl} + */ + this._core = carousel; + + /** + * Refresh interval. + * @protected + * @type {number} + */ + this._interval = null; + + /** + * Whether the element is currently visible or not. + * @protected + * @type {Boolean} + */ + this._visible = null; + + /** + * All event handlers. + * @protected + * @type {Object} + */ + this._handlers = { + 'initialized.owl.carousel': $.proxy(function(e) { + if (e.namespace && this._core.settings.autoRefresh) { + this.watch(); + } + }, this) + }; + + // set default options + this._core.options = $.extend({}, AutoRefresh.Defaults, this._core.options); + + // register event handlers + this._core.$element.on(this._handlers); + }; + + /** + * Default options. + * @public + */ + AutoRefresh.Defaults = { + autoRefresh: true, + autoRefreshInterval: 500 + }; + + /** + * Watches the element. + */ + AutoRefresh.prototype.watch = function() { + if (this._interval) { + return; + } + + this._visible = this._core.$element.is(':visible'); + this._interval = window.setInterval($.proxy(this.refresh, this), this._core.settings.autoRefreshInterval); + }; + + /** + * Refreshes the element. + */ + AutoRefresh.prototype.refresh = function() { + if (this._core.$element.is(':visible') === this._visible) { + return; + } + + this._visible = !this._visible; + + this._core.$element.toggleClass('owl-hidden', !this._visible); + + this._visible && (this._core.invalidate('width') && this._core.refresh()); + }; + + /** + * Destroys the plugin. + */ + AutoRefresh.prototype.destroy = function() { + var handler, property; + + window.clearInterval(this._interval); + + for (handler in this._handlers) { + this._core.$element.off(handler, this._handlers[handler]); + } + for (property in Object.getOwnPropertyNames(this)) { + typeof this[property] != 'function' && (this[property] = null); + } + }; + + $.fn.owlCarousel.Constructor.Plugins.AutoRefresh = AutoRefresh; + +})(window.Zepto || window.jQuery, window, document); + +/** + * Lazy Plugin + * @version 2.1.0 + * @author Bartosz Wojciechowski + * @author David Deutsch + * @license The MIT License (MIT) + */ +;(function($, window, document, undefined) { + + /** + * Creates the lazy plugin. + * @class The Lazy Plugin + * @param {Owl} carousel - The Owl Carousel + */ + var Lazy = function(carousel) { + + /** + * Reference to the core. + * @protected + * @type {Owl} + */ + this._core = carousel; + + /** + * Already loaded items. + * @protected + * @type {Array.} + */ + this._loaded = []; + + /** + * Event handlers. + * @protected + * @type {Object} + */ + this._handlers = { + 'initialized.owl.carousel change.owl.carousel resized.owl.carousel': $.proxy(function(e) { + if (!e.namespace) { + return; + } + + if (!this._core.settings || !this._core.settings.lazyLoad) { + return; + } + + if ((e.property && e.property.name == 'position') || e.type == 'initialized') { + var settings = this._core.settings, + n = (settings.center && Math.ceil(settings.items / 2) || settings.items), + i = ((settings.center && n * -1) || 0), + position = (e.property && e.property.value !== undefined ? e.property.value : this._core.current()) + i, + clones = this._core.clones().length, + load = $.proxy(function(i, v) { this.load(v) }, this); + + while (i++ < n) { + this.load(clones / 2 + this._core.relative(position)); + clones && $.each(this._core.clones(this._core.relative(position)), load); + position++; + } + } + }, this) + }; + + // set the default options + this._core.options = $.extend({}, Lazy.Defaults, this._core.options); + + // register event handler + this._core.$element.on(this._handlers); + }; + + /** + * Default options. + * @public + */ + Lazy.Defaults = { + lazyLoad: false + }; + + /** + * Loads all resources of an item at the specified position. + * @param {Number} position - The absolute position of the item. + * @protected + */ + Lazy.prototype.load = function(position) { + var $item = this._core.$stage.children().eq(position), + $elements = $item && $item.find('.owl-lazy'); + + if (!$elements || $.inArray($item.get(0), this._loaded) > -1) { + return; + } + + $elements.each($.proxy(function(index, element) { + var $element = $(element), image, + url = (window.devicePixelRatio > 1 && $element.attr('data-src-retina')) || $element.attr('data-src'); + + this._core.trigger('load', { element: $element, url: url }, 'lazy'); + + if ($element.is('img')) { + $element.one('load.owl.lazy', $.proxy(function() { + $element.css('opacity', 1); + this._core.trigger('loaded', { element: $element, url: url }, 'lazy'); + }, this)).attr('src', url); + } else { + image = new Image(); + image.onload = $.proxy(function() { + $element.css({ + 'background-image': 'url("' + url + '")', + 'opacity': '1' + }); + this._core.trigger('loaded', { element: $element, url: url }, 'lazy'); + }, this); + image.src = url; + } + }, this)); + + this._loaded.push($item.get(0)); + }; + + /** + * Destroys the plugin. + * @public + */ + Lazy.prototype.destroy = function() { + var handler, property; + + for (handler in this.handlers) { + this._core.$element.off(handler, this.handlers[handler]); + } + for (property in Object.getOwnPropertyNames(this)) { + typeof this[property] != 'function' && (this[property] = null); + } + }; + + $.fn.owlCarousel.Constructor.Plugins.Lazy = Lazy; + +})(window.Zepto || window.jQuery, window, document); + +/** + * AutoHeight Plugin + * @version 2.1.0 + * @author Bartosz Wojciechowski + * @author David Deutsch + * @license The MIT License (MIT) + */ +;(function($, window, document, undefined) { + + /** + * Creates the auto height plugin. + * @class The Auto Height Plugin + * @param {Owl} carousel - The Owl Carousel + */ + var AutoHeight = function(carousel) { + /** + * Reference to the core. + * @protected + * @type {Owl} + */ + this._core = carousel; + + /** + * All event handlers. + * @protected + * @type {Object} + */ + this._handlers = { + 'initialized.owl.carousel refreshed.owl.carousel': $.proxy(function(e) { + if (e.namespace && this._core.settings.autoHeight) { + this.update(); + } + }, this), + 'changed.owl.carousel': $.proxy(function(e) { + if (e.namespace && this._core.settings.autoHeight && e.property.name == 'position'){ + this.update(); + } + }, this), + 'loaded.owl.lazy': $.proxy(function(e) { + if (e.namespace && this._core.settings.autoHeight + && e.element.closest('.' + this._core.settings.itemClass).index() === this._core.current()) { + this.update(); + } + }, this) + }; + + // set default options + this._core.options = $.extend({}, AutoHeight.Defaults, this._core.options); + + // register event handlers + this._core.$element.on(this._handlers); + }; + + /** + * Default options. + * @public + */ + AutoHeight.Defaults = { + autoHeight: false, + autoHeightClass: 'owl-height' + }; + + /** + * Updates the view. + */ + AutoHeight.prototype.update = function() { + var start = this._core._current, + end = start + this._core.settings.items, + visible = this._core.$stage.children().toArray().slice(start, end), + heights = [], + maxheight = 0; + + $.each(visible, function(index, item) { + heights.push($(item).height()); + }); + + maxheight = Math.max.apply(null, heights); + + this._core.$stage.parent() + .height(maxheight) + .addClass(this._core.settings.autoHeightClass); + }; + + AutoHeight.prototype.destroy = function() { + var handler, property; + + for (handler in this._handlers) { + this._core.$element.off(handler, this._handlers[handler]); + } + for (property in Object.getOwnPropertyNames(this)) { + typeof this[property] != 'function' && (this[property] = null); + } + }; + + $.fn.owlCarousel.Constructor.Plugins.AutoHeight = AutoHeight; + +})(window.Zepto || window.jQuery, window, document); + +/** + * Video Plugin + * @version 2.1.0 + * @author Bartosz Wojciechowski + * @author David Deutsch + * @license The MIT License (MIT) + */ +;(function($, window, document, undefined) { + + /** + * Creates the video plugin. + * @class The Video Plugin + * @param {Owl} carousel - The Owl Carousel + */ + var Video = function(carousel) { + /** + * Reference to the core. + * @protected + * @type {Owl} + */ + this._core = carousel; + + /** + * Cache all video URLs. + * @protected + * @type {Object} + */ + this._videos = {}; + + /** + * Current playing item. + * @protected + * @type {jQuery} + */ + this._playing = null; + + /** + * All event handlers. + * @todo The cloned content removale is too late + * @protected + * @type {Object} + */ + this._handlers = { + 'initialized.owl.carousel': $.proxy(function(e) { + if (e.namespace) { + this._core.register({ type: 'state', name: 'playing', tags: [ 'interacting' ] }); + } + }, this), + 'resize.owl.carousel': $.proxy(function(e) { + if (e.namespace && this._core.settings.video && this.isInFullScreen()) { + e.preventDefault(); + } + }, this), + 'refreshed.owl.carousel': $.proxy(function(e) { + if (e.namespace && this._core.is('resizing')) { + this._core.$stage.find('.cloned .owl-video-frame').remove(); + } + }, this), + 'changed.owl.carousel': $.proxy(function(e) { + if (e.namespace && e.property.name === 'position' && this._playing) { + this.stop(); + } + }, this), + 'prepared.owl.carousel': $.proxy(function(e) { + if (!e.namespace) { + return; + } + + var $element = $(e.content).find('.owl-video'); + + if ($element.length) { + $element.css('display', 'none'); + this.fetch($element, $(e.content)); + } + }, this) + }; + + // set default options + this._core.options = $.extend({}, Video.Defaults, this._core.options); + + // register event handlers + this._core.$element.on(this._handlers); + + this._core.$element.on('click.owl.video', '.owl-video-play-icon', $.proxy(function(e) { + this.play(e); + }, this)); + }; + + /** + * Default options. + * @public + */ + Video.Defaults = { + video: false, + videoHeight: false, + videoWidth: false + }; + + /** + * Gets the video ID and the type (YouTube/Vimeo/vzaar only). + * @protected + * @param {jQuery} target - The target containing the video data. + * @param {jQuery} item - The item containing the video. + */ + Video.prototype.fetch = function(target, item) { + var type = (function() { + if (target.attr('data-vimeo-id')) { + return 'vimeo'; + } else if (target.attr('data-vzaar-id')) { + return 'vzaar' + } else { + return 'youtube'; + } + })(), + id = target.attr('data-vimeo-id') || target.attr('data-youtube-id') || target.attr('data-vzaar-id'), + width = target.attr('data-width') || this._core.settings.videoWidth, + height = target.attr('data-height') || this._core.settings.videoHeight, + url = target.attr('href'); + + if (url) { + + /* + Parses the id's out of the following urls (and probably more): + https://www.youtube.com/watch?v=:id + https://youtu.be/:id + https://vimeo.com/:id + https://vimeo.com/channels/:channel/:id + https://vimeo.com/groups/:group/videos/:id + https://app.vzaar.com/videos/:id + + Visual example: https://regexper.com/#(http%3A%7Chttps%3A%7C)%5C%2F%5C%2F(player.%7Cwww.%7Capp.)%3F(vimeo%5C.com%7Cyoutu(be%5C.com%7C%5C.be%7Cbe%5C.googleapis%5C.com)%7Cvzaar%5C.com)%5C%2F(video%5C%2F%7Cvideos%5C%2F%7Cembed%5C%2F%7Cchannels%5C%2F.%2B%5C%2F%7Cgroups%5C%2F.%2B%5C%2F%7Cwatch%5C%3Fv%3D%7Cv%5C%2F)%3F(%5BA-Za-z0-9._%25-%5D*)(%5C%26%5CS%2B)%3F + */ + + id = url.match(/(http:|https:|)\/\/(player.|www.|app.)?(vimeo\.com|youtu(be\.com|\.be|be\.googleapis\.com)|vzaar\.com)\/(video\/|videos\/|embed\/|channels\/.+\/|groups\/.+\/|watch\?v=|v\/)?([A-Za-z0-9._%-]*)(\&\S+)?/); + + if (id[3].indexOf('youtu') > -1) { + type = 'youtube'; + } else if (id[3].indexOf('vimeo') > -1) { + type = 'vimeo'; + } else if (id[3].indexOf('vzaar') > -1) { + type = 'vzaar'; + } else { + throw new Error('Video URL not supported.'); + } + id = id[6]; + } else { + throw new Error('Missing video URL.'); + } + + this._videos[url] = { + type: type, + id: id, + width: width, + height: height + }; + + item.attr('data-video', url); + + this.thumbnail(target, this._videos[url]); + }; + + /** + * Creates video thumbnail. + * @protected + * @param {jQuery} target - The target containing the video data. + * @param {Object} info - The video info object. + * @see `fetch` + */ + Video.prototype.thumbnail = function(target, video) { + var tnLink, + icon, + path, + dimensions = video.width && video.height ? 'style="width:' + video.width + 'px;height:' + video.height + 'px;"' : '', + customTn = target.find('img'), + srcType = 'src', + lazyClass = '', + settings = this._core.settings, + create = function(path) { + icon = '
'; + + if (settings.lazyLoad) { + tnLink = '
'; + } else { + tnLink = '
'; + } + target.after(tnLink); + target.after(icon); + }; + + // wrap video content into owl-video-wrapper div + target.wrap('
'); + + if (this._core.settings.lazyLoad) { + srcType = 'data-src'; + lazyClass = 'owl-lazy'; + } + + // custom thumbnail + if (customTn.length) { + create(customTn.attr(srcType)); + customTn.remove(); + return false; + } + + if (video.type === 'youtube') { + path = "//img.youtube.com/vi/" + video.id + "/hqdefault.jpg"; + create(path); + } else if (video.type === 'vimeo') { + $.ajax({ + type: 'GET', + url: '//vimeo.com/api/v2/video/' + video.id + '.json', + jsonp: 'callback', + dataType: 'jsonp', + success: function(data) { + path = data[0].thumbnail_large; + create(path); + } + }); + } else if (video.type === 'vzaar') { + $.ajax({ + type: 'GET', + url: '//vzaar.com/api/videos/' + video.id + '.json', + jsonp: 'callback', + dataType: 'jsonp', + success: function(data) { + path = data.framegrab_url; + create(path); + } + }); + } + }; + + /** + * Stops the current video. + * @public + */ + Video.prototype.stop = function() { + this._core.trigger('stop', null, 'video'); + this._playing.find('.owl-video-frame').remove(); + this._playing.removeClass('owl-video-playing'); + this._playing = null; + this._core.leave('playing'); + this._core.trigger('stopped', null, 'video'); + }; + + /** + * Starts the current video. + * @public + * @param {Event} event - The event arguments. + */ + Video.prototype.play = function(event) { + var target = $(event.target), + item = target.closest('.' + this._core.settings.itemClass), + video = this._videos[item.attr('data-video')], + width = video.width || '100%', + height = video.height || this._core.$stage.height(), + html; + + if (this._playing) { + return; + } + + this._core.enter('playing'); + this._core.trigger('play', null, 'video'); + + item = this._core.items(this._core.relative(item.index())); + + this._core.reset(item.index()); + + if (video.type === 'youtube') { + html = ''; + } else if (video.type === 'vimeo') { + html = ''; + } else if (video.type === 'vzaar') { + html = ''; + } + + $('
' + html + '
').insertAfter(item.find('.owl-video')); + + this._playing = item.addClass('owl-video-playing'); + }; + + /** + * Checks whether an video is currently in full screen mode or not. + * @todo Bad style because looks like a readonly method but changes members. + * @protected + * @returns {Boolean} + */ + Video.prototype.isInFullScreen = function() { + var element = document.fullscreenElement || document.mozFullScreenElement || + document.webkitFullscreenElement; + + return element && $(element).parent().hasClass('owl-video-frame'); + }; + + /** + * Destroys the plugin. + */ + Video.prototype.destroy = function() { + var handler, property; + + this._core.$element.off('click.owl.video'); + + for (handler in this._handlers) { + this._core.$element.off(handler, this._handlers[handler]); + } + for (property in Object.getOwnPropertyNames(this)) { + typeof this[property] != 'function' && (this[property] = null); + } + }; + + $.fn.owlCarousel.Constructor.Plugins.Video = Video; + +})(window.Zepto || window.jQuery, window, document); + +/** + * Animate Plugin + * @version 2.1.0 + * @author Bartosz Wojciechowski + * @author David Deutsch + * @license The MIT License (MIT) + */ +;(function($, window, document, undefined) { + + /** + * Creates the animate plugin. + * @class The Navigation Plugin + * @param {Owl} scope - The Owl Carousel + */ + var Animate = function(scope) { + this.core = scope; + this.core.options = $.extend({}, Animate.Defaults, this.core.options); + this.swapping = true; + this.previous = undefined; + this.next = undefined; + + this.handlers = { + 'change.owl.carousel': $.proxy(function(e) { + if (e.namespace && e.property.name == 'position') { + this.previous = this.core.current(); + this.next = e.property.value; + } + }, this), + 'drag.owl.carousel dragged.owl.carousel translated.owl.carousel': $.proxy(function(e) { + if (e.namespace) { + this.swapping = e.type == 'translated'; + } + }, this), + 'translate.owl.carousel': $.proxy(function(e) { + if (e.namespace && this.swapping && (this.core.options.animateOut || this.core.options.animateIn)) { + this.swap(); + } + }, this) + }; + + this.core.$element.on(this.handlers); + }; + + /** + * Default options. + * @public + */ + Animate.Defaults = { + animateOut: false, + animateIn: false + }; + + /** + * Toggles the animation classes whenever an translations starts. + * @protected + * @returns {Boolean|undefined} + */ + Animate.prototype.swap = function() { + + if (this.core.settings.items !== 1) { + return; + } + + if (!$.support.animation || !$.support.transition) { + return; + } + + this.core.speed(0); + + var left, + clear = $.proxy(this.clear, this), + previous = this.core.$stage.children().eq(this.previous), + next = this.core.$stage.children().eq(this.next), + incoming = this.core.settings.animateIn, + outgoing = this.core.settings.animateOut; + + if (this.core.current() === this.previous) { + return; + } + + if (outgoing) { + left = this.core.coordinates(this.previous) - this.core.coordinates(this.next); + previous.one($.support.animation.end, clear) + .css( { 'left': left + 'px' } ) + .addClass('animated owl-animated-out') + .addClass(outgoing); + } + + if (incoming) { + next.one($.support.animation.end, clear) + .addClass('animated owl-animated-in') + .addClass(incoming); + } + }; + + Animate.prototype.clear = function(e) { + $(e.target).css( { 'left': '' } ) + .removeClass('animated owl-animated-out owl-animated-in') + .removeClass(this.core.settings.animateIn) + .removeClass(this.core.settings.animateOut); + this.core.onTransitionEnd(); + }; + + /** + * Destroys the plugin. + * @public + */ + Animate.prototype.destroy = function() { + var handler, property; + + for (handler in this.handlers) { + this.core.$element.off(handler, this.handlers[handler]); + } + for (property in Object.getOwnPropertyNames(this)) { + typeof this[property] != 'function' && (this[property] = null); + } + }; + + $.fn.owlCarousel.Constructor.Plugins.Animate = Animate; + +})(window.Zepto || window.jQuery, window, document); + +/** + * Autoplay Plugin + * @version 2.1.0 + * @author Bartosz Wojciechowski + * @author Artus Kolanowski + * @author David Deutsch + * @license The MIT License (MIT) + */ +;(function($, window, document, undefined) { + + /** + * Creates the autoplay plugin. + * @class The Autoplay Plugin + * @param {Owl} scope - The Owl Carousel + */ + var Autoplay = function(carousel) { + /** + * Reference to the core. + * @protected + * @type {Owl} + */ + this._core = carousel; + + /** + * The autoplay timeout. + * @type {Timeout} + */ + this._timeout = null; + + /** + * Indicates whenever the autoplay is paused. + * @type {Boolean} + */ + this._paused = false; + + /** + * All event handlers. + * @protected + * @type {Object} + */ + this._handlers = { + 'changed.owl.carousel': $.proxy(function(e) { + if (e.namespace && e.property.name === 'settings') { + if (this._core.settings.autoplay) { + this.play(); + } else { + this.stop(); + } + } else if (e.namespace && e.property.name === 'position') { + //console.log('play?', e); + if (this._core.settings.autoplay) { + this._setAutoPlayInterval(); + } + } + }, this), + 'initialized.owl.carousel': $.proxy(function(e) { + if (e.namespace && this._core.settings.autoplay) { + this.play(); + } + }, this), + 'play.owl.autoplay': $.proxy(function(e, t, s) { + if (e.namespace) { + this.play(t, s); + } + }, this), + 'stop.owl.autoplay': $.proxy(function(e) { + if (e.namespace) { + this.stop(); + } + }, this), + 'mouseover.owl.autoplay': $.proxy(function() { + if (this._core.settings.autoplayHoverPause && this._core.is('rotating')) { + this.pause(); + } + }, this), + 'mouseleave.owl.autoplay': $.proxy(function() { + if (this._core.settings.autoplayHoverPause && this._core.is('rotating')) { + this.play(); + } + }, this), + 'touchstart.owl.core': $.proxy(function() { + if (this._core.settings.autoplayHoverPause && this._core.is('rotating')) { + this.pause(); + } + }, this), + 'touchend.owl.core': $.proxy(function() { + if (this._core.settings.autoplayHoverPause) { + this.play(); + } + }, this) + }; + + // register event handlers + this._core.$element.on(this._handlers); + + // set default options + this._core.options = $.extend({}, Autoplay.Defaults, this._core.options); + }; + + /** + * Default options. + * @public + */ + Autoplay.Defaults = { + autoplay: false, + autoplayTimeout: 5000, + autoplayHoverPause: false, + autoplaySpeed: false + }; + + /** + * Starts the autoplay. + * @public + * @param {Number} [timeout] - The interval before the next animation starts. + * @param {Number} [speed] - The animation speed for the animations. + */ + Autoplay.prototype.play = function(timeout, speed) { + this._paused = false; + + if (this._core.is('rotating')) { + return; + } + + this._core.enter('rotating'); + + this._setAutoPlayInterval(); + }; + + /** + * Gets a new timeout + * @private + * @param {Number} [timeout] - The interval before the next animation starts. + * @param {Number} [speed] - The animation speed for the animations. + * @return {Timeout} + */ + Autoplay.prototype._getNextTimeout = function(timeout, speed) { + if ( this._timeout ) { + window.clearTimeout(this._timeout); + } + return window.setTimeout($.proxy(function() { + if (this._paused || this._core.is('busy') || this._core.is('interacting') || document.hidden) { + return; + } + this._core.next(speed || this._core.settings.autoplaySpeed); + }, this), timeout || this._core.settings.autoplayTimeout); + }; + + /** + * Sets autoplay in motion. + * @private + */ + Autoplay.prototype._setAutoPlayInterval = function() { + this._timeout = this._getNextTimeout(); + }; + + /** + * Stops the autoplay. + * @public + */ + Autoplay.prototype.stop = function() { + if (!this._core.is('rotating')) { + return; + } + + window.clearTimeout(this._timeout); + this._core.leave('rotating'); + }; + + /** + * Stops the autoplay. + * @public + */ + Autoplay.prototype.pause = function() { + if (!this._core.is('rotating')) { + return; + } + + this._paused = true; + }; + + /** + * Destroys the plugin. + */ + Autoplay.prototype.destroy = function() { + var handler, property; + + this.stop(); + + for (handler in this._handlers) { + this._core.$element.off(handler, this._handlers[handler]); + } + for (property in Object.getOwnPropertyNames(this)) { + typeof this[property] != 'function' && (this[property] = null); + } + }; + + $.fn.owlCarousel.Constructor.Plugins.autoplay = Autoplay; + +})(window.Zepto || window.jQuery, window, document); + +/** + * Navigation Plugin + * @version 2.1.0 + * @author Artus Kolanowski + * @author David Deutsch + * @license The MIT License (MIT) + */ +;(function($, window, document, undefined) { + 'use strict'; + + /** + * Creates the navigation plugin. + * @class The Navigation Plugin + * @param {Owl} carousel - The Owl Carousel. + */ + var Navigation = function(carousel) { + /** + * Reference to the core. + * @protected + * @type {Owl} + */ + this._core = carousel; + + /** + * Indicates whether the plugin is initialized or not. + * @protected + * @type {Boolean} + */ + this._initialized = false; + + /** + * The current paging indexes. + * @protected + * @type {Array} + */ + this._pages = []; + + /** + * All DOM elements of the user interface. + * @protected + * @type {Object} + */ + this._controls = {}; + + /** + * Markup for an indicator. + * @protected + * @type {Array.} + */ + this._templates = []; + + /** + * The carousel element. + * @type {jQuery} + */ + this.$element = this._core.$element; + + /** + * Overridden methods of the carousel. + * @protected + * @type {Object} + */ + this._overrides = { + next: this._core.next, + prev: this._core.prev, + to: this._core.to + }; + + /** + * All event handlers. + * @protected + * @type {Object} + */ + this._handlers = { + 'prepared.owl.carousel': $.proxy(function(e) { + if (e.namespace && this._core.settings.dotsData) { + this._templates.push('
' + + $(e.content).find('[data-dot]').addBack('[data-dot]').attr('data-dot') + '
'); + } + }, this), + 'added.owl.carousel': $.proxy(function(e) { + if (e.namespace && this._core.settings.dotsData) { + this._templates.splice(e.position, 0, this._templates.pop()); + } + }, this), + 'remove.owl.carousel': $.proxy(function(e) { + if (e.namespace && this._core.settings.dotsData) { + this._templates.splice(e.position, 1); + } + }, this), + 'changed.owl.carousel': $.proxy(function(e) { + if (e.namespace && e.property.name == 'position') { + this.draw(); + } + }, this), + 'initialized.owl.carousel': $.proxy(function(e) { + if (e.namespace && !this._initialized) { + this._core.trigger('initialize', null, 'navigation'); + this.initialize(); + this.update(); + this.draw(); + this._initialized = true; + this._core.trigger('initialized', null, 'navigation'); + } + }, this), + 'refreshed.owl.carousel': $.proxy(function(e) { + if (e.namespace && this._initialized) { + this._core.trigger('refresh', null, 'navigation'); + this.update(); + this.draw(); + this._core.trigger('refreshed', null, 'navigation'); + } + }, this) + }; + + // set default options + this._core.options = $.extend({}, Navigation.Defaults, this._core.options); + + // register event handlers + this.$element.on(this._handlers); + }; + + /** + * Default options. + * @public + * @todo Rename `slideBy` to `navBy` + */ + Navigation.Defaults = { + nav: false, + navText: [ '<', '>' ], + navSpeed: false, + navElement: 'div', + navContainer: false, + navContainerClass: 'owl-nav', + navClass: [ 'owl-prev', 'owl-next' ], + slideBy: 1, + dotClass: 'owl-dot', + dotsClass: 'owl-dots', + dots: true, + dotsEach: false, + dotsData: false, + dotsSpeed: false, + dotsContainer: false + }; + + /** + * Initializes the layout of the plugin and extends the carousel. + * @protected + */ + Navigation.prototype.initialize = function() { + var override, + settings = this._core.settings; + + // create DOM structure for relative navigation + this._controls.$relative = (settings.navContainer ? $(settings.navContainer) + : $('
').addClass(settings.navContainerClass).appendTo(this.$element)).addClass('disabled'); + + this._controls.$previous = $('<' + settings.navElement + '>') + .addClass(settings.navClass[0]) + .html(settings.navText[0]) + .prependTo(this._controls.$relative) + .on('click', $.proxy(function(e) { + this.prev(settings.navSpeed); + }, this)); + this._controls.$next = $('<' + settings.navElement + '>') + .addClass(settings.navClass[1]) + .html(settings.navText[1]) + .appendTo(this._controls.$relative) + .on('click', $.proxy(function(e) { + this.next(settings.navSpeed); + }, this)); + + // create DOM structure for absolute navigation + if (!settings.dotsData) { + this._templates = [ $('
') + .addClass(settings.dotClass) + .append($('')) + .prop('outerHTML') ]; + } + + this._controls.$absolute = (settings.dotsContainer ? $(settings.dotsContainer) + : $('
').addClass(settings.dotsClass).appendTo(this.$element)).addClass('disabled'); + + this._controls.$absolute.on('click', 'div', $.proxy(function(e) { + var index = $(e.target).parent().is(this._controls.$absolute) + ? $(e.target).index() : $(e.target).parent().index(); + + e.preventDefault(); + + this.to(index, settings.dotsSpeed); + }, this)); + + // override public methods of the carousel + for (override in this._overrides) { + this._core[override] = $.proxy(this[override], this); + } + }; + + /** + * Destroys the plugin. + * @protected + */ + Navigation.prototype.destroy = function() { + var handler, control, property, override; + + for (handler in this._handlers) { + this.$element.off(handler, this._handlers[handler]); + } + for (control in this._controls) { + this._controls[control].remove(); + } + for (override in this.overides) { + this._core[override] = this._overrides[override]; + } + for (property in Object.getOwnPropertyNames(this)) { + typeof this[property] != 'function' && (this[property] = null); + } + }; + + /** + * Updates the internal state. + * @protected + */ + Navigation.prototype.update = function() { + var i, j, k, + lower = this._core.clones().length / 2, + upper = lower + this._core.items().length, + maximum = this._core.maximum(true), + settings = this._core.settings, + size = settings.center || settings.autoWidth || settings.dotsData + ? 1 : settings.dotsEach || settings.items; + + if (settings.slideBy !== 'page') { + settings.slideBy = Math.min(settings.slideBy, settings.items); + } + + if (settings.dots || settings.slideBy == 'page') { + this._pages = []; + + for (i = lower, j = 0, k = 0; i < upper; i++) { + if (j >= size || j === 0) { + this._pages.push({ + start: Math.min(maximum, i - lower), + end: i - lower + size - 1 + }); + if (Math.min(maximum, i - lower) === maximum) { + break; + } + j = 0, ++k; + } + j += this._core.mergers(this._core.relative(i)); + } + } + }; + + /** + * Draws the user interface. + * @todo The option `dotsData` wont work. + * @protected + */ + Navigation.prototype.draw = function() { + var difference, + settings = this._core.settings, + disabled = this._core.items().length <= settings.items, + index = this._core.relative(this._core.current()), + loop = settings.loop || settings.rewind; + + this._controls.$relative.toggleClass('disabled', !settings.nav || disabled); + + if (settings.nav) { + this._controls.$previous.toggleClass('disabled', !loop && index <= this._core.minimum(true)); + this._controls.$next.toggleClass('disabled', !loop && index >= this._core.maximum(true)); + } + + this._controls.$absolute.toggleClass('disabled', !settings.dots || disabled); + + if (settings.dots) { + difference = this._pages.length - this._controls.$absolute.children().length; + + if (settings.dotsData && difference !== 0) { + this._controls.$absolute.html(this._templates.join('')); + } else if (difference > 0) { + this._controls.$absolute.append(new Array(difference + 1).join(this._templates[0])); + } else if (difference < 0) { + this._controls.$absolute.children().slice(difference).remove(); + } + + this._controls.$absolute.find('.active').removeClass('active'); + this._controls.$absolute.children().eq($.inArray(this.current(), this._pages)).addClass('active'); + } + }; + + /** + * Extends event data. + * @protected + * @param {Event} event - The event object which gets thrown. + */ + Navigation.prototype.onTrigger = function(event) { + var settings = this._core.settings; + + event.page = { + index: $.inArray(this.current(), this._pages), + count: this._pages.length, + size: settings && (settings.center || settings.autoWidth || settings.dotsData + ? 1 : settings.dotsEach || settings.items) + }; + }; + + /** + * Gets the current page position of the carousel. + * @protected + * @returns {Number} + */ + Navigation.prototype.current = function() { + var current = this._core.relative(this._core.current()); + return $.grep(this._pages, $.proxy(function(page, index) { + return page.start <= current && page.end >= current; + }, this)).pop(); + }; + + /** + * Gets the current succesor/predecessor position. + * @protected + * @returns {Number} + */ + Navigation.prototype.getPosition = function(successor) { + var position, length, + settings = this._core.settings; + + if (settings.slideBy == 'page') { + position = $.inArray(this.current(), this._pages); + length = this._pages.length; + successor ? ++position : --position; + position = this._pages[((position % length) + length) % length].start; + } else { + position = this._core.relative(this._core.current()); + length = this._core.items().length; + successor ? position += settings.slideBy : position -= settings.slideBy; + } + + return position; + }; + + /** + * Slides to the next item or page. + * @public + * @param {Number} [speed=false] - The time in milliseconds for the transition. + */ + Navigation.prototype.next = function(speed) { + $.proxy(this._overrides.to, this._core)(this.getPosition(true), speed); + }; + + /** + * Slides to the previous item or page. + * @public + * @param {Number} [speed=false] - The time in milliseconds for the transition. + */ + Navigation.prototype.prev = function(speed) { + $.proxy(this._overrides.to, this._core)(this.getPosition(false), speed); + }; + + /** + * Slides to the specified item or page. + * @public + * @param {Number} position - The position of the item or page. + * @param {Number} [speed] - The time in milliseconds for the transition. + * @param {Boolean} [standard=false] - Whether to use the standard behaviour or not. + */ + Navigation.prototype.to = function(position, speed, standard) { + var length; + + if (!standard && this._pages.length) { + length = this._pages.length; + $.proxy(this._overrides.to, this._core)(this._pages[((position % length) + length) % length].start, speed); + } else { + $.proxy(this._overrides.to, this._core)(position, speed); + } + }; + + $.fn.owlCarousel.Constructor.Plugins.Navigation = Navigation; + +})(window.Zepto || window.jQuery, window, document); + +/** + * Hash Plugin + * @version 2.1.0 + * @author Artus Kolanowski + * @author David Deutsch + * @license The MIT License (MIT) + */ +;(function($, window, document, undefined) { + 'use strict'; + + /** + * Creates the hash plugin. + * @class The Hash Plugin + * @param {Owl} carousel - The Owl Carousel + */ + var Hash = function(carousel) { + /** + * Reference to the core. + * @protected + * @type {Owl} + */ + this._core = carousel; + + /** + * Hash index for the items. + * @protected + * @type {Object} + */ + this._hashes = {}; + + /** + * The carousel element. + * @type {jQuery} + */ + this.$element = this._core.$element; + + /** + * All event handlers. + * @protected + * @type {Object} + */ + this._handlers = { + 'initialized.owl.carousel': $.proxy(function(e) { + if (e.namespace && this._core.settings.startPosition === 'URLHash') { + $(window).trigger('hashchange.owl.navigation'); + } + }, this), + 'prepared.owl.carousel': $.proxy(function(e) { + if (e.namespace) { + var hash = $(e.content).find('[data-hash]').addBack('[data-hash]').attr('data-hash'); + + if (!hash) { + return; + } + + this._hashes[hash] = e.content; + } + }, this), + 'changed.owl.carousel': $.proxy(function(e) { + if (e.namespace && e.property.name === 'position') { + var current = this._core.items(this._core.relative(this._core.current())), + hash = $.map(this._hashes, function(item, hash) { + return item === current ? hash : null; + }).join(); + + if (!hash || window.location.hash.slice(1) === hash) { + return; + } + + window.location.hash = hash; + } + }, this) + }; + + // set default options + this._core.options = $.extend({}, Hash.Defaults, this._core.options); + + // register the event handlers + this.$element.on(this._handlers); + + // register event listener for hash navigation + $(window).on('hashchange.owl.navigation', $.proxy(function(e) { + var hash = window.location.hash.substring(1), + items = this._core.$stage.children(), + position = this._hashes[hash] && items.index(this._hashes[hash]); + + if (position === undefined || position === this._core.current()) { + return; + } + + this._core.to(this._core.relative(position), false, true); + }, this)); + }; + + /** + * Default options. + * @public + */ + Hash.Defaults = { + URLhashListener: false + }; + + /** + * Destroys the plugin. + * @public + */ + Hash.prototype.destroy = function() { + var handler, property; + + $(window).off('hashchange.owl.navigation'); + + for (handler in this._handlers) { + this._core.$element.off(handler, this._handlers[handler]); + } + for (property in Object.getOwnPropertyNames(this)) { + typeof this[property] != 'function' && (this[property] = null); + } + }; + + $.fn.owlCarousel.Constructor.Plugins.Hash = Hash; + +})(window.Zepto || window.jQuery, window, document); + +/** + * Support Plugin + * + * @version 2.1.0 + * @author Vivid Planet Software GmbH + * @author Artus Kolanowski + * @author David Deutsch + * @license The MIT License (MIT) + */ +;(function($, window, document, undefined) { + + var style = $('').get(0).style, + prefixes = 'Webkit Moz O ms'.split(' '), + events = { + transition: { + end: { + WebkitTransition: 'webkitTransitionEnd', + MozTransition: 'transitionend', + OTransition: 'oTransitionEnd', + transition: 'transitionend' + } + }, + animation: { + end: { + WebkitAnimation: 'webkitAnimationEnd', + MozAnimation: 'animationend', + OAnimation: 'oAnimationEnd', + animation: 'animationend' + } + } + }, + tests = { + csstransforms: function() { + return !!test('transform'); + }, + csstransforms3d: function() { + return !!test('perspective'); + }, + csstransitions: function() { + return !!test('transition'); + }, + cssanimations: function() { + return !!test('animation'); + } + }; + + function test(property, prefixed) { + var result = false, + upper = property.charAt(0).toUpperCase() + property.slice(1); + + $.each((property + ' ' + prefixes.join(upper + ' ') + upper).split(' '), function(i, property) { + if (style[property] !== undefined) { + result = prefixed ? property : true; + return false; + } + }); + + return result; + } + + function prefixed(property) { + return test(property, true); + } + + if (tests.csstransitions()) { + /* jshint -W053 */ + $.support.transition = new String(prefixed('transition')) + $.support.transition.end = events.transition.end[ $.support.transition ]; + } + + if (tests.cssanimations()) { + /* jshint -W053 */ + $.support.animation = new String(prefixed('animation')) + $.support.animation.end = events.animation.end[ $.support.animation ]; + } + + if (tests.csstransforms()) { + /* jshint -W053 */ + $.support.transform = new String(prefixed('transform')); + $.support.transform3d = tests.csstransforms3d(); + } + +})(window.Zepto || window.jQuery, window, document); diff --git a/ext/3rd-party-addons/clarico_base/static/src/less/fonts.less b/ext/3rd-party-addons/clarico_base/static/src/less/fonts.less new file mode 100755 index 00000000..edde5938 --- /dev/null +++ b/ext/3rd-party-addons/clarico_base/static/src/less/fonts.less @@ -0,0 +1,37 @@ +/* +@font-face { + font-family: muli-Bold; + src: url(https://fonts.gstatic.com/s/poppins/v5/pxiByp8kv8JHgFVrLCz7Z1xlFQ.woff2); +} +@font-face { + + font-family: muli-Regular; + src: url(https://fonts.gstatic.com/s/poppins/v5/pxiEyp8kv8JHgFVrJJfecg.woff2 ); +} +@font-face { + font-family: muli-semibold; + src: url(https://fonts.gstatic.com/s/poppins/v5/pxiByp8kv8JHgFVrLEj6Z1xlFQ.woff2); +} +@font-face { + font-family: muli-light; + src: url(https://fonts.gstatic.com/s/poppins/v5/pxiByp8kv8JHgFVrLDz8Z1xlFQ.woff2); +} + + +@font-face { + font-family: oswald-bold; + src: url(https://fonts.gstatic.com/s/barlowcondensed/v1/HTxwL3I-JCGChYJ8VI-L6OO_au7B46r2z3bWuQ.woff2); +} +@font-face { + font-family: oswald-light; + src: url(https://fonts.gstatic.com/s/barlowcondensed/v1/HTxwL3I-JCGChYJ8VI-L6OO_au7B47rxz3bWuQ.woff2); +} +@font-face { + font-family: oswald-regular; + src: url(https://fonts.gstatic.com/s/barlowcondensed/v1/HTx3L3I-JCGChYJ8VI-L6OO_au7B6xHT2g.woff2); +} +@font-face { + font-family: oswald-semibold; + src: url(https://fonts.gstatic.com/s/barlowcondensed/v1/HTxwL3I-JCGChYJ8VI-L6OO_au7B4873z3bWuQ.woff2); +} +*/ \ No newline at end of file diff --git a/ext/3rd-party-addons/clarico_base/static/src/less/mixin.less b/ext/3rd-party-addons/clarico_base/static/src/less/mixin.less new file mode 100755 index 00000000..a60e8803 --- /dev/null +++ b/ext/3rd-party-addons/clarico_base/static/src/less/mixin.less @@ -0,0 +1,401 @@ +@font-face { + font-family: muli-Bold; + src: url(/clarico_base/static/src/font/Poppins-Bold.ttf); +} +@font-face { + font-family: muli-Regular; + src: url(/clarico_base/static/src/font/Poppins-Regular.ttf); +} +@font-face { + font-family: muli-semibold; + src: url(/clarico_base/static/src/font/Poppins-SemiBold.ttf); +} +@font-face { + font-family: muli-light; + src: url(/clarico_base/static/src/font/Poppins-Light.ttf); +} + + +@font-face { + font-family: oswald-bold; + src: url(/clarico_base/static/src/font/BarlowSemiCondensed-Bold.ttf); +} +@font-face { + font-family: oswald-extralight; + src: url(/clarico_base/static/src/font/BarlowSemiCondensed-Thin.ttf); +} + +@font-face { + font-family: oswald-light; + src: url(/clarico_base/static/src/font/BarlowSemiCondensed-Light.ttf); +} +@font-face { + font-family: oswald-medium; + src: url(/clarico_base/static/src/font/BarlowSemiCondensed-Medium.ttf); +} +@font-face { + font-family: oswald-regular; + src: url(/clarico_base/static/src/font/BarlowSemiCondensed-Regular.ttf); +} +@font-face { + font-family: oswald-semibold; + src: url(/clarico_base/static/src/font/BarlowSemiCondensed-SemiBold.ttf); +} + + +.shop_now_button +{ + display: inline-block; + .size(14px); + line-height: 46px; + height: 46px; + letter-spacing: 1px; + padding: 0 30px; + text-align:center; + .uppercase; + background: @theme-color; + border-radius: 25px; + border: none; + color: #fff; + transition: all 300ms; + text-decoration: none; + .oswald-regular; + cursor: pointer; + + &:hover + { + background:black; + color:#fff !important; + } +} + +.maxW{ + width:90%; + max-width:1400px; + display:block; + margin:0px auto; +} + + +.oswald-regular() +{ + font-family:oswald-regular; +} +.oswald-light() +{ + font-family:oswald-light; + +} +.oswald-semibold() +{ + font-family:oswald-semibold; + +} +.oswald-bold() + +{ + font-family:oswald-bold; +} + + +.muli-regular(){ + font-family:Muli-Regular; +} +.muli-bold(){ + font-family:Muli-Bold; +} +.muli-light(){ + font-family:muli-light; +} +.muli-semibold(){ + font-family:muli-semibold; +} +.size(@font_size){ + font-size:@font_size; +} +@m-regular:'muli-regular'; +@m-light:'muli-light'; +@m-semibold:'muli-semibold'; +@m-bold:'muli-bold'; + + +@color-black :black; + + +body +{ + .muli-regular(); + +} + + +p +{ + margin:0; +} + + + + +.block +{ + width:90%; + display:block; + margin:0px auto; + max-width:1400px; +} +.center +{ + display:block; + margin:0px auto; +} +.common-div +{ + display:inline-block; + width:100%; +} +.capitalize(){ + text-transform:capitalize; +} +.uppercase(){ + text-transform:uppercase; +} +.center(){ + text-align:center; +} +.left(){ + float: left; +} +.p(@padding) +{ + padding:@padding; +} +.right(){ + float:right; +} +.pt(@top) +{ + padding-top:@top; +} +.pb(@bottom) +{ + padding-bottom:@bottom; +} +.mt(@top) +{ + margin-top:@top; +} +.mb(@bottom) +{ + margin-bottom:@bottom; +} + + +.ml(@left) +{ + margin-left:@left; +} +.mr(@right) +{ + margin-right:@right; +} +.pl(@left) +{ + padding-left:@left; +} +.pr(@right) +{ + padding-right:@right; +} +/*-=-= POSITION =-=-*/ + + + +.pos(@val){ + position:@val; +} +.left(@val){ + left:@val; +} +.right(@val){ + right:@val; + +} +.top(@val){ + top:@val; +} +.bott(@val){ + bottom:@val; +} + + + + +@color-black :black; +@theme-color: #be4978; +@theme-btn-color :#be4978; + +.btn-link +{ + color:@theme-color; +} +.btn-primary +{ + .bg(@theme-color) !important; +} +.dropdown-menu > .active > a, .dropdown-menu > .active > a:hover, .dropdown-menu > .active > a:focus +{ + .bg(@theme-color); +} + +/* +button.btn,a.btn{ + border-color:transparent !important; + transition: all 0.3s ease-in-out; + // opacity: 0.85 !important; + color: #fff !important; + // border-radius: unset; + .bg(@theme-color); + .oswald-regular; + text-transform: uppercase; + letter-spacing: 2px; + + + &:hover{ + .bg(#000) !important; + color:#fff !important; + } +} +*/ +.btn{ + border-color:transparent !important; + transition: opacity 0.3s ease-in-out; + opacity: 0.85 !important; + color: #fff; + border-radius: unset; + .bg(@theme-color); + + + &:hover{ + opacity: 1.0 !important; + color: #fff !important; + } +} + + +.chs_heading +{ + .size(30px); + color:#222; + .transform(uppercase); + line-height: 169%; + .oswald-regular(); + letter-spacing: 2px; + word-spacing: 1px; +} +.common-close-btn +{ + position: absolute; + z-index: 2; + top: 6px; + right: 15px; + height: 34px; + width: 34px; + background-color: #fff; + box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.15); + border: solid 1px rgba(0, 0, 0, 0.06); + border-radius: 50%; + font-size: 15px; + line-height: 32px; + color: #878787; + display: block; + margin: 0px auto; + text-align: center; + cursor: pointer; +} +.bg(@color) +{ + background-color:@color; +} +.transform(@text) +{ + text-transform:@text; +} + + +/* Overflow ellipsis */ +.ellipsis(){ + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + max-width: 175px; + display: block; +} +a{ + color: @color-black; + cursor:pointer; + + &:hover{ + text-decoration:none !important; + color: @color-black; + color: @color-black; + } + &:active{ + text-decoration:none; + } + +} + + +/*------for owl-slider navigation------------*/ + + +.owl-next +{ + .size(25px); + position: absolute; + top: 45%; + right: -15px; + .oswald-light(); +} +.owl-prev +{ + .size(25px); + position: absolute; + top: 45%; + left: -15px; + .oswald-light(); +} + + + + +/*----------common image class ----------------*/ + + +.s_image_common +{ + display:block; + width:auto; + max-width:100%; + margin:0px auto; +} + + +/*-------- heading media-query ----------*/ + + +@media (max-width:600px){ + + + .chs_heading,.content_title + { + .size(20px) !important; + } +} + + + + + + diff --git a/ext/3rd-party-addons/clarico_base/static/src/less/owl.carousel.min.css b/ext/3rd-party-addons/clarico_base/static/src/less/owl.carousel.min.css new file mode 100755 index 00000000..1ece042a --- /dev/null +++ b/ext/3rd-party-addons/clarico_base/static/src/less/owl.carousel.min.css @@ -0,0 +1,6 @@ +/** + * Owl Carousel v2.2.1 + * Copyright 2013-2017 David Deutsch + * Licensed under () + */ +.owl-carousel,.owl-carousel .owl-item{-webkit-tap-highlight-color:transparent;position:relative}.owl-carousel{display:none;width:100%;z-index:1}.owl-carousel .owl-stage{position:relative;-ms-touch-action:pan-Y;-moz-backface-visibility:hidden}.owl-carousel .owl-stage:after{content:".";display:block;clear:both;visibility:hidden;line-height:0;height:0}.owl-carousel .owl-stage-outer{position:relative;overflow:hidden;-webkit-transform:translate3d(0,0,0)}.owl-carousel .owl-item,.owl-carousel .owl-wrapper{-webkit-backface-visibility:hidden;-moz-backface-visibility:hidden;-ms-backface-visibility:hidden;-webkit-transform:translate3d(0,0,0);-moz-transform:translate3d(0,0,0);-ms-transform:translate3d(0,0,0)}.owl-carousel .owl-item{min-height:1px;float:left;-webkit-backface-visibility:hidden;-webkit-touch-callout:none}.owl-carousel .owl-item img{display:block;width:100%}.owl-carousel .owl-dots.disabled,.owl-carousel .owl-nav.disabled{display:none}.no-js .owl-carousel,.owl-carousel.owl-loaded{display:block}.owl-carousel .owl-dot,.owl-carousel .owl-nav .owl-next,.owl-carousel .owl-nav .owl-prev{cursor:pointer;cursor:hand;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.owl-carousel.owl-loading{opacity:0;display:block}.owl-carousel.owl-hidden{opacity:0}.owl-carousel.owl-refresh .owl-item{visibility:hidden}.owl-carousel.owl-drag .owl-item{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.owl-carousel.owl-grab{cursor:move;cursor:grab}.owl-carousel.owl-rtl{direction:rtl}.owl-carousel.owl-rtl .owl-item{float:right}.owl-carousel .animated{animation-duration:1s;animation-fill-mode:both}.owl-carousel .owl-animated-in{z-index:0}.owl-carousel .owl-animated-out{z-index:1}.owl-carousel .fadeOut{animation-name:fadeOut}@keyframes fadeOut{0%{opacity:1}100%{opacity:0}}.owl-height{transition:height .5s ease-in-out}.owl-carousel .owl-item .owl-lazy{opacity:0;transition:opacity .4s ease}.owl-carousel .owl-item img.owl-lazy{transform-style:preserve-3d}.owl-carousel .owl-video-wrapper{position:relative;height:100%;background:#000}.owl-carousel .owl-video-play-icon{position:absolute;height:80px;width:80px;left:50%;top:50%;margin-left:-40px;margin-top:-40px;background:url(owl.video.play.png) no-repeat;cursor:pointer;z-index:1;-webkit-backface-visibility:hidden;transition:transform .1s ease}.owl-carousel .owl-video-play-icon:hover{-ms-transform:scale(1.3,1.3);transform:scale(1.3,1.3)}.owl-carousel .owl-video-playing .owl-video-play-icon,.owl-carousel .owl-video-playing .owl-video-tn{display:none}.owl-carousel .owl-video-tn{opacity:0;height:100%;background-position:center center;background-repeat:no-repeat;background-size:contain;transition:opacity .4s ease}.owl-carousel .owl-video-frame{position:relative;z-index:1;height:100%;width:100%} \ No newline at end of file diff --git a/ext/3rd-party-addons/clarico_base/static/src/less/owl.theme.default.min.css b/ext/3rd-party-addons/clarico_base/static/src/less/owl.theme.default.min.css new file mode 100755 index 00000000..59836030 --- /dev/null +++ b/ext/3rd-party-addons/clarico_base/static/src/less/owl.theme.default.min.css @@ -0,0 +1,6 @@ +/** + * Owl Carousel v2.2.1 + * Copyright 2013-2017 David Deutsch + * Licensed under () + */ +.owl-theme .owl-dots,.owl-theme .owl-nav{text-align:center;-webkit-tap-highlight-color:transparent}.owl-theme .owl-nav{margin-top:10px}.owl-theme .owl-nav [class*=owl-]{color:#FFF;font-size:14px;margin:5px;padding:4px 7px;background:#D6D6D6;display:inline-block;cursor:pointer;border-radius:3px}.owl-theme .owl-nav [class*=owl-]:hover{background:#869791;color:#FFF;text-decoration:none}.owl-theme .owl-nav .disabled{opacity:.5;cursor:default}.owl-theme .owl-nav.disabled+.owl-dots{margin-top:10px}.owl-theme .owl-dots .owl-dot{display:inline-block;zoom:1}.owl-theme .owl-dots .owl-dot span{width:10px;height:10px;margin:5px 7px;background:#D6D6D6;display:block;-webkit-backface-visibility:visible;transition:opacity .2s ease;border-radius:30px}.owl-theme .owl-dots .owl-dot.active span,.owl-theme .owl-dots .owl-dot:hover span{background:#869791} \ No newline at end of file diff --git a/ext/3rd-party-addons/clarico_base/template/assets.xml b/ext/3rd-party-addons/clarico_base/template/assets.xml new file mode 100755 index 00000000..6350c582 --- /dev/null +++ b/ext/3rd-party-addons/clarico_base/template/assets.xml @@ -0,0 +1,21 @@ + + + + \ No newline at end of file diff --git a/ext/3rd-party-addons/clarico_blog/__init__.py b/ext/3rd-party-addons/clarico_blog/__init__.py new file mode 100755 index 00000000..e69de29b diff --git a/ext/3rd-party-addons/clarico_blog/__manifest__.py b/ext/3rd-party-addons/clarico_blog/__manifest__.py new file mode 100755 index 00000000..a6e21037 --- /dev/null +++ b/ext/3rd-party-addons/clarico_blog/__manifest__.py @@ -0,0 +1,26 @@ +{ + # Theme information + 'name' : 'Clarico Blog', + 'category' : 'Website', + 'version' : '1.0', + 'summary': 'Easy & User Friendly Blogging Platform for your Online Store', + 'description': """""", + + # Dependencies + 'depends': [ + 'clarico_layout' + ], + + # Views + 'data': [ + 'templates/template.xml', + 'templates/assets.xml', + ], + + # Author + 'author': 'Emipro Technologies Pvt. Ltd.', + 'website': 'http://www.emiprotechnologies.com', + + # Technical + 'installable': True, +} diff --git a/ext/3rd-party-addons/clarico_blog/static/description/icon.png b/ext/3rd-party-addons/clarico_blog/static/description/icon.png new file mode 100755 index 00000000..09fd34ab Binary files /dev/null and b/ext/3rd-party-addons/clarico_blog/static/description/icon.png differ diff --git a/ext/3rd-party-addons/clarico_blog/static/src/less/clarico_blog.less b/ext/3rd-party-addons/clarico_blog/static/src/less/clarico_blog.less new file mode 100755 index 00000000..da9c3360 --- /dev/null +++ b/ext/3rd-party-addons/clarico_blog/static/src/less/clarico_blog.less @@ -0,0 +1,338 @@ +.full-width +{ + background-color: #f5f5f5; + + .breadcrumb + { + margin-bottom: 0; + padding: 15px 15px; + } + +} +.catg_title_main_blog +{ + .mb(10px); + .oswald-light(); + .pb(1%); + .mt(0); +} +.tag_margin +{ + .mt(10px); + .mb(10px); +} +.fa-tags::before + { + .size(11px); + color:@theme-color; + } + .lb_keywords,.l_blog_comments + { + width:100%; +} + +.blogpost_left_main +{ + width:70%; + display:inline-block; + .left(); +} +.blogpost_right_main +{ + width:25%; + display:inline-block; + float:right; +} + +.ctg_subtitle_main +{ + .muli-light(); + .size(16px); + margin:0; + color:#777; +} + + +.website_blog .o_blog_post_title{ + .size(20px) !important; + .muli-regular; + color: #000; + .capitalize(); +} +.blog_post_div{ + .pb(6%); +} +.blog_post_div{ + .pb(6%); +} +.blog_post_data_more{ + .pt(1%); + + & .blog_post_tabs_a{ + .mr(10px); + color: @theme-color; + .size(12px); + border-left: 1px solid; + .pl(7px); + } + + & .seprater{ + .ml(5px); + .mr(5px); + } + + & .blog_post_date{ + .size(12px); + } + + & .blog_post_author-static{ + color:@color-black; + .size(12px); + + & .blog_post_author{ + color: @theme-color !important; + .ml(3px); + } + } +} +.blog-post-image-div{ + width: auto!important; + height: 250px!important; +} +.blog-post-subtitle-div{ + .pt(2%); + + & .blog-post-subtitle{ + .size(14px); + color:#777; + } +} +.o_sharing_links{ + .mt(15px) !important; + + & a{ + color:black !important; + .size(15px) !important; + } +} +.tagline_hr{ + padding: 0; + .mb(0); + .mt(10px); +} +.blog_post_tags .nav-pills > li.active > a{ + color:@theme-color; + background-color:white; + border-radius: 2px; + + &:hover{ + color:@theme-color; + } +} +.blog_post_tags .nav-pills{ + .pt(2%); + .pl(10px); +} +.blog_post_tags .nav-pills > li > a{ + .size(12px); + padding: 2px 12px 2px 12px !important; +} +.website_blog .o_blog_cover_container.cover > .blog_title, .website_blog .o_blog_cover_container.cover_footer > .blog_title { + color: white; + position: absolute; + top: 20%; + left: 30px; + bottom: auto; + right: 30px; +} +.blog_post_tags .nav-pills > li { + display:inline-block; + border: 1px solid #ccc; + margin:10px 2px 0 2px; + + &:hover{ + border: 1px solid @theme-color; + } + + &.active{ + border: 1px solid @theme-color; + } + + & a:hover{ + background-color:white; + color:@theme-color; + } + + &.active > a{ + color:@theme-color; + background-color:white; + border-radius: 2px; + + &:hover{ + color:@theme-color; + } + } +} +.blog_post_catge .nav-pills > li > a:hover{ + background-color:white; + color:@theme-color; +} +.blog_post_catge{ + .pt(1%); + + & .nav-pills > li{ + .mt(5px); + + & a{ + .size(14px); + padding: 2px 15px !important; + + } + } + + & .nav-pills > li.active > a{ + color:@theme-color; + background-color:white; + border-radius: 2px; + .capitalize(); + + &:hover{ + color:@theme-color; + } + } +} +.blog_complete_tag_icon +{ + color:#fff; +} +.blog_complete_tag +{ + .bg(@theme-color); + + &:hover + { + .bg(@theme-color); + } +} +.blog_complete_subtitle,.read_next_blog_subtitle +{ + max-width: 800px; + .size(16px); + .center(); + .center; + .mt(2%); + .oswald-light(); + line-height: 190%; + letter-spacing: 1px; + .mb(2%); +} +.blog_complete_name,.read_next_blog_name +{ + max-width: 800px; + .center; + .oswald-regular(); + line-height:160%; +} +.blog_share_icons +{ + .o_sharing_links + { + position: fixed; + top: 50%; + right: 1%; + + a + { + display: block; + box-shadow: 0px 4px 8px 0px rgba(0, 0, 0, 0.1); + background: #FFF; + border-radius: 100%; + .center(); + .pt(10px); + margin: 10px 0 !important; + width: 38px; + height: 38px; + + >i + { + color:#555 !important; + transition: color 0.3s ease-in-out; + .size(17px); + vertical-align: middle; + + &:hover + { + color:@theme-color !important; + } + } + } + } +} +.blog_share_icons .o_sharing_links +{ + >a::before + { + content: ""; + } +} +.blog_read_next_link +{ + color:@theme-color; +} +.blog_complete_max_width +{ + max-width:1000px !important; + .block; +} +.participate_social a{ + .size(15px); + .mr(5px); +} +.stay-update input.js_follow_email{ + height: 40px; + border-radius: 0; +} + +.status-ul{ + & li a{ + padding: 4px 15px !important; + .size(13px) !important; + + &:hover{ + background : unset !important; + color : @theme-color !important; + } + } + & li.active > a{ + background : unset !important; + color : @theme-color !important; + } +} +.archives-ul{ + padding: 4px 15px !important; + + & li{ + width: auto; + display: inline-block; + + & a{ + .size(13px) !important; + + &:hover{ + background : unset !important; + color : @theme-color !important; + } + } + } + & li.active > a{ + background : unset !important; + color : @theme-color !important; + } +} +.lb_name +{ + .capitalize(); +} +.ch_h1_class_new{ + .mb(0) !important; +} \ No newline at end of file diff --git a/ext/3rd-party-addons/clarico_blog/static/src/less/responsive_blog.less b/ext/3rd-party-addons/clarico_blog/static/src/less/responsive_blog.less new file mode 100755 index 00000000..5714a5db --- /dev/null +++ b/ext/3rd-party-addons/clarico_blog/static/src/less/responsive_blog.less @@ -0,0 +1,59 @@ +@media (min-width: 900px) and (max-width: 1199px) { + #main_column{ + width:80% !important; + } + #blog_right_column{ + width:20% !important; + } + .blog_post_catge{ + .pl(0); + + & ul.nav-stacked > li > a{ + padding: 2px 0; + .size(13px); + } + } + .blog_post_tags{ + .nav-stacked > li + li{ + .mt(5px); + } + .nav > li > a{ + .size(13px); + } + } + .website_blog .o_blog_post_title + { + .size(18px); + } +} +@media (max-width: 900px) +{ + #main_column,#blog_right_column + { + width:100%; + float:none; + } +} +@media (max-width: 800px) +{ + #main_column,#blog_right_column + { + width:100%; + float:none; + } +} +@media (max-width: 600px) +{ + .website_blog .o_blog_post_title { + .size(16px) !important; + line-height: 160%; + } + .blog-post-subtitle-div .blog-post-subtitle { + .size(13px); + line-height: 170%; + } + .cc_content_class { + + .size(13px) !important; + } +} diff --git a/ext/3rd-party-addons/clarico_blog/templates/assets.xml b/ext/3rd-party-addons/clarico_blog/templates/assets.xml new file mode 100755 index 00000000..4e80f566 --- /dev/null +++ b/ext/3rd-party-addons/clarico_blog/templates/assets.xml @@ -0,0 +1,9 @@ + + + + diff --git a/ext/3rd-party-addons/clarico_blog/templates/template.xml b/ext/3rd-party-addons/clarico_blog/templates/template.xml new file mode 100755 index 00000000..0fdee98e --- /dev/null +++ b/ext/3rd-party-addons/clarico_blog/templates/template.xml @@ -0,0 +1,237 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ext/3rd-party-addons/clarico_brand/__init__.py b/ext/3rd-party-addons/clarico_brand/__init__.py new file mode 100755 index 00000000..440b82d8 --- /dev/null +++ b/ext/3rd-party-addons/clarico_brand/__init__.py @@ -0,0 +1,2 @@ +from . import controller +from . import model diff --git a/ext/3rd-party-addons/clarico_brand/__manifest__.py b/ext/3rd-party-addons/clarico_brand/__manifest__.py new file mode 100755 index 00000000..30770814 --- /dev/null +++ b/ext/3rd-party-addons/clarico_brand/__manifest__.py @@ -0,0 +1,28 @@ +{ + # Theme information + 'name' : 'Clarico Brand', + 'category' : 'Website', + 'version' : '1.0', + 'summary': 'Filter Products By Brand at Category Page', + 'description': """""", + + # Dependencies + 'depends': [ + 'clarico_shop' + ], + + # Views + 'data': [ + 'security/ir.model.access.csv', + 'template/template.xml', + 'view/product_template_brand.xml', + 'view/brand.xml', + ], + + # Author + 'author': 'Emipro Technologies Pvt. Ltd.', + 'website': 'http://www.emiprotechnologies.com', + + # Technical + 'installable': True, +} diff --git a/ext/3rd-party-addons/clarico_brand/controller/__init__.py b/ext/3rd-party-addons/clarico_brand/controller/__init__.py new file mode 100755 index 00000000..deec4a8b --- /dev/null +++ b/ext/3rd-party-addons/clarico_brand/controller/__init__.py @@ -0,0 +1 @@ +from . import main \ No newline at end of file diff --git a/ext/3rd-party-addons/clarico_brand/controller/main.py b/ext/3rd-party-addons/clarico_brand/controller/main.py new file mode 100755 index 00000000..4a474035 --- /dev/null +++ b/ext/3rd-party-addons/clarico_brand/controller/main.py @@ -0,0 +1,56 @@ +import odoo +from odoo import http +from odoo import fields +from odoo.http import request +from odoo.addons.clarico_shop.controllers.main import claricoShop + +class claricoBrand(claricoShop): + + def _get_search_domain(self, search, category, attrib_values, price_vals = {}): + domain = request.website.sale_product_domain() + if search: + for srch in search.split(" "): + domain += [ + '|', '|', '|','|', ('name', 'ilike', srch), ('description', 'ilike', srch), + ('description_sale', 'ilike', srch), ('product_variant_ids.default_code', 'ilike', srch), + ('brand_ept_id.name','ilike', srch)] + + if category: + domain += [('public_categ_ids', 'child_of', int(category))] + + if price_vals : + #if price_vals & (int(price_vals.get('min_val',0)) != 0 & int(price_vals.get('max_val',0)) !=0) : + domain += [('list_price','>=',price_vals.get('min_val')),('list_price','<=',price_vals.get('max_val'))] + + if attrib_values: + attrib = None + ids = [] + for value in attrib_values: + if value[0] == 0 : + ids.append(value[1]) + domain += [('brand_ept_id.id', 'in', ids)] + elif not attrib: + attrib = value[0] + ids.append(value[1]) + elif value[0] == attrib: + ids.append(value[1]) + else: + domain += [('attribute_line_ids.value_ids', 'in', ids)] + attrib = value[0] + ids = [value[1]] + if attrib: + domain += [('attribute_line_ids.value_ids', 'in', ids)] + return domain + + @http.route([ + '/shop', + '/shop/page/', + '/shop/category/', + '/shop/category//page/' + ], type='http', auth="public", website=True) + def shop(self, page=0, category=None, search='', ppg=False, **post): + response = super(claricoBrand, self).shop(page=page, category=category, search=search,ppg=ppg, **post) + brand_object = request.env['brand'] + brand_rec=brand_object.sudo().search([('is_website_publish','=',True)]) + response.qcontext['brand_list'] = brand_rec + return response diff --git a/ext/3rd-party-addons/clarico_brand/model/__init__.py b/ext/3rd-party-addons/clarico_brand/model/__init__.py new file mode 100755 index 00000000..f57bef88 --- /dev/null +++ b/ext/3rd-party-addons/clarico_brand/model/__init__.py @@ -0,0 +1,2 @@ +from . import product_template +from . import brand diff --git a/ext/3rd-party-addons/clarico_brand/model/brand.py b/ext/3rd-party-addons/clarico_brand/model/brand.py new file mode 100755 index 00000000..2c206b3f --- /dev/null +++ b/ext/3rd-party-addons/clarico_brand/model/brand.py @@ -0,0 +1,8 @@ +from odoo import fields, models + +class Brand(models.Model): + _name="brand" + + name=fields.Char("Brand Name",required=True) + brand_image=fields.Binary("brand_image", attachment=True) + is_website_publish=fields.Boolean("is_website_publish") \ No newline at end of file diff --git a/ext/3rd-party-addons/clarico_brand/model/product_template.py b/ext/3rd-party-addons/clarico_brand/model/product_template.py new file mode 100755 index 00000000..75fd45b9 --- /dev/null +++ b/ext/3rd-party-addons/clarico_brand/model/product_template.py @@ -0,0 +1,6 @@ +from odoo import api, fields, models + +class product_template(models.Model): + _inherit = ["product.template"] + + brand_ept_id=fields.Many2one("brand","Sale Brand",ondelete='cascade') diff --git a/ext/3rd-party-addons/clarico_brand/security/ir.model.access.csv b/ext/3rd-party-addons/clarico_brand/security/ir.model.access.csv new file mode 100755 index 00000000..0187f819 --- /dev/null +++ b/ext/3rd-party-addons/clarico_brand/security/ir.model.access.csv @@ -0,0 +1,2 @@ +id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink +access_brand,brand,model_brand,,1,0,0,0 \ No newline at end of file diff --git a/ext/3rd-party-addons/clarico_brand/static/description/icon.png b/ext/3rd-party-addons/clarico_brand/static/description/icon.png new file mode 100755 index 00000000..09fd34ab Binary files /dev/null and b/ext/3rd-party-addons/clarico_brand/static/description/icon.png differ diff --git a/ext/3rd-party-addons/clarico_brand/template/template.xml b/ext/3rd-party-addons/clarico_brand/template/template.xml new file mode 100755 index 00000000..ec723b53 --- /dev/null +++ b/ext/3rd-party-addons/clarico_brand/template/template.xml @@ -0,0 +1,39 @@ + + + + \ No newline at end of file diff --git a/ext/3rd-party-addons/clarico_brand/view/brand.xml b/ext/3rd-party-addons/clarico_brand/view/brand.xml new file mode 100755 index 00000000..a09b4680 --- /dev/null +++ b/ext/3rd-party-addons/clarico_brand/view/brand.xml @@ -0,0 +1,43 @@ + + + + + brand.tree.view + brand + + + + + + + + + + brand.from.view + brand + +
+ + + + + + + +
+
+
+ + + + Brand + ir.actions.act_window + brand + tree,form + + + + +
+
\ No newline at end of file diff --git a/ext/3rd-party-addons/clarico_brand/view/product_template_brand.xml b/ext/3rd-party-addons/clarico_brand/view/product_template_brand.xml new file mode 100755 index 00000000..42f726ba --- /dev/null +++ b/ext/3rd-party-addons/clarico_brand/view/product_template_brand.xml @@ -0,0 +1,18 @@ + + + + + + productbrand.form.view + product.template + + + + + + + + + + + diff --git a/ext/3rd-party-addons/clarico_business_carousel/__init__.py b/ext/3rd-party-addons/clarico_business_carousel/__init__.py new file mode 100755 index 00000000..e69de29b diff --git a/ext/3rd-party-addons/clarico_business_carousel/__manifest__.py b/ext/3rd-party-addons/clarico_business_carousel/__manifest__.py new file mode 100755 index 00000000..ed830311 --- /dev/null +++ b/ext/3rd-party-addons/clarico_business_carousel/__manifest__.py @@ -0,0 +1,23 @@ +{ + # Theme information + 'name' : 'Clarico Business Carousel', + 'category' : 'Website', + 'version' : '1.0', + 'summary': 'Contains Employee,Customer and Portfolio Carousels', + 'description': """""", + + # Dependencies + 'depends': [ + 'clarico_employee_carousel', + 'clarico_customer_carousel', + ], + + + # Author + 'author': 'Emipro Technologies Pvt. Ltd.', + 'website': 'http://www.emiprotechnologies.com', + + # Technical + 'installable': True, +} + diff --git a/ext/3rd-party-addons/clarico_business_carousel/static/description/icon.png b/ext/3rd-party-addons/clarico_business_carousel/static/description/icon.png new file mode 100755 index 00000000..09fd34ab Binary files /dev/null and b/ext/3rd-party-addons/clarico_business_carousel/static/description/icon.png differ diff --git a/ext/3rd-party-addons/clarico_carousel/__init__.py b/ext/3rd-party-addons/clarico_carousel/__init__.py new file mode 100755 index 00000000..e69de29b diff --git a/ext/3rd-party-addons/clarico_carousel/__manifest__.py b/ext/3rd-party-addons/clarico_carousel/__manifest__.py new file mode 100755 index 00000000..9a0bb47a --- /dev/null +++ b/ext/3rd-party-addons/clarico_carousel/__manifest__.py @@ -0,0 +1,25 @@ +{ + # Theme information + 'name' : 'Clarico Carousel Editor', + 'category' : 'Website', + 'version' : '1.0', + 'summary': 'Carousel RTE Editor', + 'description': """""", + + # Dependencies + 'depends': [ + 'clarico_snippets', + ], + + # Views + 'data': [ + 'templates/assets.xml', + ], + + # Author + 'author': 'Emipro Technologies Pvt. Ltd.', + 'website': 'http://www.emiprotechnologies.com', + + # Technical + 'installable': True, +} diff --git a/ext/3rd-party-addons/clarico_carousel/static/description/icon.png b/ext/3rd-party-addons/clarico_carousel/static/description/icon.png new file mode 100755 index 00000000..09fd34ab Binary files /dev/null and b/ext/3rd-party-addons/clarico_carousel/static/description/icon.png differ diff --git a/ext/3rd-party-addons/clarico_carousel/static/src/js/rte_widget.js b/ext/3rd-party-addons/clarico_carousel/static/src/js/rte_widget.js new file mode 100755 index 00000000..0ddb0e93 --- /dev/null +++ b/ext/3rd-party-addons/clarico_carousel/static/src/js/rte_widget.js @@ -0,0 +1,82 @@ +odoo.define('clarico_carousel.editor', function (require) { +"use strict"; +var core = require('web.core'); +var weContext = require('web_editor.context'); +var v11_rte = require('web_editor.rte'); + + +/*----------- Emipro Ept Rte ----------*/ +var rteEPT = v11_rte.Class.include({ + + _saveElement: function ($el, context, withLang) { + var tag = this._getEscapedElement($el).prop('outerHTML'); + var $tag = $(tag); + $tag.find("[data-isemipro='true']").empty(); + tag = $tag[0].outerHTML; + return this._rpc({ + model: 'ir.ui.view', + method: 'save', + args: [ + $el.data('oe-id'), + tag, + $el.data('oe-xpath') || null, + withLang ? context : _.omit(context, 'lang') + ], + }); + }, + + save : function (context) { + var self = this; + var $dirty = $('.o_dirty'); + $dirty + .removeAttr('contentEditable') + .removeClass('o_dirty oe_carlos_danger o_is_inline_editable'); + var defs = _.map($dirty, function (el) { + var $el = $(el); + $el.find('[class]').filter(function () { + if (!this.className.match(/\S/)) { + this.removeAttribute('class'); + } + }); + + // TODO: Add a queue with concurrency limit in webclient + // https://github.com/medikoo/deferred/blob/master/lib/ext/function/gate.js + return self.saving_mutex.exec(function () { + return self._saveElement($el, context || weContext.get()) + .then(function () { + $el.removeClass('o_dirty'); + }, function (response) { + // because ckeditor regenerates all the dom, we can't just + // setup the popover here as everything will be destroyed by + // the DOM regeneration. Add markings instead, and returns a + // new rejection with all relevant info + var id = _.uniqueId('carlos_danger_'); + $el.addClass('o_dirty oe_carlos_danger ' + id); + var html = (response.data.exception_type === 'except_osv'); + if (html) { + var msg = $('
', {text: response.data.message}).html(); + var data = msg.substring(3, msg.length -2).split(/', u'/); + response.data.message = '' + data[0] + '' + data[1]; + } + $('.o_editable.' + id) + .removeClass(id) + .popover({ + html: html, + trigger: 'hover', + content: response.data.message, + placement: 'auto top', + }) + .popover('show'); + }); + }); + }); + return $.when.apply($, defs).then(function () { + window.onbeforeunload = null; + }, function (failed) { + ret.cancel(); + ret.start(); + }); + +} +}); +}); diff --git a/ext/3rd-party-addons/clarico_carousel/templates/assets.xml b/ext/3rd-party-addons/clarico_carousel/templates/assets.xml new file mode 100755 index 00000000..fd015697 --- /dev/null +++ b/ext/3rd-party-addons/clarico_carousel/templates/assets.xml @@ -0,0 +1,8 @@ + + + + diff --git a/ext/3rd-party-addons/clarico_cart/__init__.py b/ext/3rd-party-addons/clarico_cart/__init__.py new file mode 100755 index 00000000..a03bfd09 --- /dev/null +++ b/ext/3rd-party-addons/clarico_cart/__init__.py @@ -0,0 +1 @@ +from . import controllers \ No newline at end of file diff --git a/ext/3rd-party-addons/clarico_cart/__manifest__.py b/ext/3rd-party-addons/clarico_cart/__manifest__.py new file mode 100755 index 00000000..280b1eba --- /dev/null +++ b/ext/3rd-party-addons/clarico_cart/__manifest__.py @@ -0,0 +1,26 @@ +{ + # Theme information + 'name' : 'Clarico Cart', + 'category' : 'Website', + 'version' : '1.0', + 'summary': 'Total Number of Products added to Cart', + 'description': """""", + + # Dependencies + 'depends': [ + 'clarico_account','website_sale_delivery','website_sale_options','clarico_shop' + ], + + # Views + 'data': [ + 'templates/template.xml', + 'templates/assets.xml', + ], + + # Author + 'author': 'Emipro Technologies Pvt. Ltd.', + 'website': 'http://www.emiprotechnologies.com', + + # Technical + 'installable': True, +} diff --git a/ext/3rd-party-addons/clarico_cart/controllers/__init__.py b/ext/3rd-party-addons/clarico_cart/controllers/__init__.py new file mode 100755 index 00000000..deec4a8b --- /dev/null +++ b/ext/3rd-party-addons/clarico_cart/controllers/__init__.py @@ -0,0 +1 @@ +from . import main \ No newline at end of file diff --git a/ext/3rd-party-addons/clarico_cart/controllers/main.py b/ext/3rd-party-addons/clarico_cart/controllers/main.py new file mode 100755 index 00000000..b397a52b --- /dev/null +++ b/ext/3rd-party-addons/clarico_cart/controllers/main.py @@ -0,0 +1,29 @@ +from odoo import http +from odoo.http import request +from odoo import SUPERUSER_ID +from odoo import models, fields, api + + +class ClearCart(http.Controller): + + @http.route(['/shop/clear_cart'], type='json', auth="public", methods=['POST'], website=True) + def clear_cart(self, **kw): + order = request.website.sale_get_order(force_create=1) + order_line = request.env['sale.order.line'].sudo() + line_ids = order_line.search([('order_id','=',order.id)]) + for line in line_ids : + line_obj = order_line.browse([int(line)]) + if line_obj : + line_obj.unlink() + + @http.route(['/shop/cart/total_count'], type='json', auth="public", methods=['POST'], website=True, csrf=False) + def cart_total_count(self): + + order=request.website.sale_get_order() + values={ + 'cart_qty_total' : order.cart_quantity, + 'cart_total_amount' : order.amount_total, + 'cart_subtotal_amount' : order.amount_untaxed, + 'currency_symbol': order.currency_id.symbol + } + return values \ No newline at end of file diff --git a/ext/3rd-party-addons/clarico_cart/static/description/icon.png b/ext/3rd-party-addons/clarico_cart/static/description/icon.png new file mode 100755 index 00000000..09fd34ab Binary files /dev/null and b/ext/3rd-party-addons/clarico_cart/static/description/icon.png differ diff --git a/ext/3rd-party-addons/clarico_cart/static/src/img/cart_cover.jpg b/ext/3rd-party-addons/clarico_cart/static/src/img/cart_cover.jpg new file mode 100755 index 00000000..5c1da585 Binary files /dev/null and b/ext/3rd-party-addons/clarico_cart/static/src/img/cart_cover.jpg differ diff --git a/ext/3rd-party-addons/clarico_cart/static/src/js/clarico_cart.js b/ext/3rd-party-addons/clarico_cart/static/src/js/clarico_cart.js new file mode 100755 index 00000000..810a6780 --- /dev/null +++ b/ext/3rd-party-addons/clarico_cart/static/src/js/clarico_cart.js @@ -0,0 +1,144 @@ +odoo.define('clarico_cart.cart', function (require) { + "use strict"; + + require('web.dom_ready'); + var core = require('web.core'); + var ajax = require('web.ajax'); + var _t = core._t; + + if ($(window).width() > 1200) { + var shopping_cart_link = $('.cart_style_2, .cart-update-icon'); + var shopping_cart_link_counter; + shopping_cart_link.popover({ + trigger: 'manual', + animation: true, + html: true, + title: function () { + return _t("My Cart"); + }, + container: 'body', + placement: 'auto', + template: '' + }).on("mouseenter",function () { + var self = this; + clearTimeout(shopping_cart_link_counter); + shopping_cart_link.not(self).popover('hide'); + shopping_cart_link_counter = setTimeout(function(){ + if($(self).is(':hover') && !$(".mycart-popover:visible").length) + { + $.get("/shop/cart", {'type': 'popover'}) + .then(function (data) { + $(self).data("bs.popover").options.content = data; + $(self).popover("show"); + $(".popover").on("mouseleave", function () { + $(self).trigger('mouseleave'); + }); + + //Remove product + $(".remove-product-popover").click(function(){ + var order_id = $(this).attr("data-order"); + var product_id = $(this).attr("data-product"); + $('.cus_theme_loader_layout').removeClass('hidden'); + + ajax.jsonRpc("/shop/cart/update_json", 'call', { + 'line_id': parseInt(order_id,10), + 'product_id': parseInt(product_id, 10), + 'set_qty': 0 + }).then(function (data){ + $(".row.cart_line[data-id='"+product_id+"']").css("display","none"); + $('.cus_theme_loader_layout').addClass('hidden'); + + //cart total count json + ajax.jsonRpc("/shop/cart/total_count", 'call', { + }).then(function (values){ + if (values.cart_qty_total){ + var total_amount=values.cart_total_amount; + var subtotal_amount = values.cart_subtotal_amount; + if($(".cart-update-text").length > 0){ + var total_amount = values.cart_total_amount; + $(".my_cart_quantity").replaceWith(''+values.cart_qty_total+''); + $(".cart-header-total").replaceWith(''+total_amount.toFixed(2)+' '+ values.currency_symbol +''); + $("#order_total_untaxed span.oe_currency_value").replaceWith(''+subtotal_amount.toFixed(2)+''); + $("#order_total span.oe_currency_value").replaceWith(''+total_amount.toFixed(2)+''); + $(".view-cart-btn").replaceWith('View Cart ('+ values.cart_qty_total +' items)'); + } + } + else{ + $(".my_cart_quantity").replaceWith(' 0 '); + $(".cart-header-total").replaceWith('0.00 '+ values.currency_symbol +''); + $(".popover-content").replaceWith('
Your cart is empty!
'); + } + }); + }) + }); + }) + } + }, 100); + }).on("mouseleave", function () { + var self = this; + setTimeout(function () { + if (!$(".popover:hover").length) { + if(!$(self).is(':hover')) { +// $(self).popover('hide'); + } + } + }, 1000); + }) + } + + + /*var total_cartId = $('#cart_total'); + var cartBox = $('#cart_total').parent('.js_cart_lines'); + if($("#cart_total").parent('.js_cart_lines').length > 0) + { + var x = cartBox.offset(); + var navPos = x.top; + if(total_cartId) + { + $(window).scroll(function() { + var scrollPosition = $(this).scrollTop(); + if (scrollPosition >= navPos) { + cartBox.addClass("header-stick"); + cartBox.css({"right":"5%","float":"right","z-index":"9999","background":"#fff"}); + } else { + cartBox.removeClass("header-stick"); + $('.navbar-brand img').removeClass("logo-stick"); + cartBox.css({"margin-top":"10px"}); + } + }); + }else{ + cartBox.css({"top": "0"}); + } + }*/ +}); + +odoo.define('website_sale.clear_cart', function (require) { + "use strict"; + + require('web.dom_ready'); + var ajax = require('web.ajax'); + + $(".clear_shopping_cart").click(function (event) { + event.preventDefault(); + ajax.jsonRpc("/shop/clear_cart", 'call', {}) + .then(function (data) { + window.location.reload(true); + }); + }); + + if($('#hiddencount').val() == "0"){ + $("#cart_total, .cart-total-heading").css("display","none"); + $("#right_column").css("display","none"); + $(".wizard-main-ul").css("display","none"); + $('.cart_margin_class').css("margin-top","0px"); + } + $('#cart_total').removeClass('col-sm-4 col-sm-offset-8 col-xs-12'); + $('button.btn-primary').addClass('common-btn'); + //$('button.btn-primary > span').css('font-family','oswald-regular'); + $('#cart_total').removeClass('col-sm-4 col-sm-offset-8 col-xs-12'); + + if($('div').hasClass('extra-step-option')){ + $("#step40").find(".step_no").replaceWith('4'); + $("#step50").find(".step_no").replaceWith('5'); + } +}); diff --git a/ext/3rd-party-addons/clarico_cart/static/src/less/cart_responsive.less b/ext/3rd-party-addons/clarico_cart/static/src/less/cart_responsive.less new file mode 100755 index 00000000..af037211 --- /dev/null +++ b/ext/3rd-party-addons/clarico_cart/static/src/less/cart_responsive.less @@ -0,0 +1,256 @@ +@media (max-width:1000px){ + .div-full-width{ + width:100%; + } +} +@media (max-width:1000px){ + .cart-total-heading{ + text-align: left; + } + #cart_total{ + + & div.row{ + & span:first-child{ + text-align: left !important; + } + } + } + .cart-thead-th-detail + { + min-width: 300px !important; + } + #coupon_box { + + .right(); + text-align:right; + + form + { + .right(); + } + } + .suggested-product-table{ + display: block; + overflow-x: auto; + padding-top: 10%; + max-width: unset; + + .td-product_name + { + min-width: 250px; + } + td + { + min-width:150px; + } + } + .cart-product-table + { + display: block; + overflow-x: auto; + } + + & .cart-thead-tr , .confirmation-thead-tr{ + //loat: none !important; + //display: inline-flex !important; + + & th{ + min-width: 150px; + } + } + .oe_website_sale .td-qty { + max-width: unset !important; + width:auto; + } + + .cart-product-table td + { + //min-width:150px; + //padding:25px 5px 25px 5px !important; + } + .cart-product-table td:last-child + { + border-right:none ; + } + + + /*& .cart-tbody-tr , .confirmation-tbody-tr{ + float: none !important; + display: inline-flex !important; + + & td{ + border-top-style: none !important; + border-top-width: 0 !important; + min-width: 144px !important; + padding:25px 0 0 0 !important; + } + & td:first-child{ + display:block !important; + } + & .thumbnail-img{ + display:block !important; + + & img{ + width:100px !important; + } + } + }*/ + .order-table-main-div , .confirmation-bill-ship-div , .payment-table-main-div , #right_column , .address-row-main-div{ + width:100%; + float:none; + } + .address-main-div{ + width:100%; + } + .oe_website_sale .td-img { + display:table-cell !important; + } + .shopping-cart-table + { + tr + { + float: none !important; + display: inline-flex !important; + } + } + .cart-empty-msg + { + .size(22px); + padding:5%; + } + .div_class_whole_recent_view_product + { + overflow:hidden; + } +} +@media (max-width:800px){ + + #cart_products , .order-detail-table{ + display: block; + overflow-x: auto; + } + .cart-thead-th-img,.sugg-thead-th-img + { + min-width:100px !important; + } + #modal_optional_products + { + table > thead{ + display: none; + } + } + #modal_optional_products td.td-price + { + text-align: left; + padding: 0 10px; + margin-top: 2%; + .mb(3%); + } + #product_confirmation .td-product_name strong + { + margin-bottom: 2%; + display: inline-block; + } + + #products_grid table, #products_grid tbody, #products_grid tr, #products_grid td + { + float: left; + width: 100%; + display: inline-block; + text-align:left; + } + #products_grid table #product_confirmation .td-qty .css_quantity + { + margin:unset; + .mt(2%); + } +} +@media (max-width:600px){ + #cart_total + { + width: 100%; + margin: 5% 0; + } + .cont_shop_btn + { + .size(12px); + } + .cart_suggested_main_section .suggested-product-table .td-product_name .sugg_name strong + { + .size(13px); + } + .cart-product-table .cart_product_name a,.cart-product-table .remove-cart-product-icon + { + .size(13px); + } + .cart-product-table .td-price span, .cart-product-table #td-price span + { + .size(14px); + } + .suggested-product-table + { + .pt(3%); + } + .cart_suggested_main_section + { + .mt(5%); + } + .cart_suggested_main_section .cart_sugg_name + { + .size(15px); + } +} + +@media (max-width:500px){ + .wizard-main-ul{ + & li.text-primary{ + &:after{ + right:-15px; + } + } + } + .order-detail-table tbody{ + & td:nth-child(2){ + border-top-width:1px !important; + } + } + .payment-information-tbody-tr{ + & td:first-child{ + display:block !important; + } + & td:nth-child(2){ + border-top-width:1px !important; + } + } + .wizard-main-ul .text-primary{ + color: @theme-color !important; + background: none !important; + + &:before{ + display:none; + } + &:after{ + display:none; + } + } + .cart-empty-msg + { + .size(20px); + padding:10%; + } + .cart-thead-tr th + { + padding: 10px 10px !important; + } + .cont_shop_btn + { + padding: 10px 15px; + } + #cart_products + { + thead{ + display: table-header-group; + } + + } +} diff --git a/ext/3rd-party-addons/clarico_cart/static/src/less/clarico_cart.less b/ext/3rd-party-addons/clarico_cart/static/src/less/clarico_cart.less new file mode 100755 index 00000000..40c62ca9 --- /dev/null +++ b/ext/3rd-party-addons/clarico_cart/static/src/less/clarico_cart.less @@ -0,0 +1,1308 @@ +.cart_style_2 +{ + display:none; +} +.cart-update{ + border: 1px solid #E1E1E1; + border-right: none; + padding: 5px 0 5px 15px; + width: 230px; + height:40px; + + & .cart-update-text{ + .size(14px); + .muli-regular; + vertical-align: unset; + + & .my_cart_quantity{ + .size(13px); + .muli-regular(); + color :#000; + padding: 0; + font-weight: normal; + .pr(2px); + } + + & .cart-header-total{ + .pl(2px); + .size(13px); + } + } + + & .cart-update-icon{ + background: @theme-color; + float: right; + padding: 9px 13px; + .mt(-5px); + + & i{ + color: #fff; + } + + & sup.label{ + padding:0; + background: unset; + } + } +} + + +.clarico_container{ + .block; + + & .row{ + margin:0; + } +} +.shopping-cart{ + + .mt(32px); +} +.cart-cover-img-div{ + .common-div; + .pb(4%); + + & .cart-cover-img{ + display: block; + width:auto; + max-width:100%; + margin: 0px auto; + } +} +.sub-heading{ + .size(17px); + color:#222; + .transform(uppercase); + line-height: 169%; + .oswald-light; + letter-spacing: 2px; + word-spacing: 1px; +} + +#cart_products{ +// border:1px solid #dddddd; +} +.order-table-main-div{ + width:70%; + .left; + .mr(10px); +} + +.cart-thead-tr{ + + & th{ + .muli-regular; + .size(13px); + font-weight: normal; + .uppercase; + letter-spacing: 1px; + //text-align: center; + border-bottom:none !important; + padding:25px 10px !important; + border-right: none !important; + } +} +.cart-main-div-full{ + .common-div; + .mb(5%); + + & .o_website_sale_rightfit{ + + padding-right: 15px; + + & h2.common_heading{ + .mb(0); + } + } +} +.div-full-width{ + .common-div; +} +.suggested_accessories{ + .pt(4%); + //.pb(2%); +} +.shopping-cart-table{ + border :1px solid #dddddd; +} + +.shopping-cart-table tbody tr{ + & td{ + vertical-align: middle !important; + .size(14px); + text-align: center; + border-top:0; + .muli-regular; + + padding:1% !important; + border-right: 1px solid #dddddd !important; + + & strong{ + font-weight: normal; + } + & img{ + margin:0px auto; + width:80px; + } + & .input-group-addon{ + border-radius:0px; + .bg(white); + } + & .remove-cart-product-icon{ + + &:hover{ + color:@theme-color; + } + } + } + & .td-qty > div{ + width: 100px; + margin: 0px auto; + } +} + +.payment-page-table{ + & th, td{ + padding:15px !important; + } +} +.bill-ship-heading{ + background-color:@theme-color !important; + color:white !important; + border-radius:0; +} +.bill-panel,.ship-panel{ + border-color:@theme-color !important; + border-radius:0; +} +.confirmation-thead-tr{ + + & th{ + .muli-regular; + .size(13px); + font-weight: normal; + .uppercase; + letter-spacing: 1px; + text-align: center; + } +} +.para_attrib_class_name{ + display: inline-block; + max-width:90%; +} +.attr-bracket{ + display:inline-block; +} +.product-attr-p{ + text-align:left; + .size(11px); + + .product-attr-span{ + .muli-light; + .size(13px); + font-weight: normal; + .capitalize; + } +} +.confirmation-tbody-tr{ + & td{ + vertical-align: middle !important; + .size(13px); + text-align: center; + + & strong{ + font-weight: normal; + } + } +} +.payment-information-tbody-tr{ + & td > strong{ + font-weight: normal; + } +} +.payment-table-main-div{ + width:70%; + .left; + .pr(20px); +} +.wizard-main-ul{ + box-shadow:none !important; + width:100%; + .center; + background : unset !important; + position: relative; + + &:before{ + top: 14px; + bottom: 0; + position: absolute; + content: " "; + width: 50%; + height: 1px; + background-color: #ccc; + z-order: 0; + left: 25%; + } + + + & li{ + float:none !important; + display:inline; + border:0 !important; + background:none !important; + padding: 10px 15px 10px 15px !important; + line-height: unset !important; + + & span.chevron{ + display:none !important; + } + .stepwizard-step { + display: table-cell; + text-align: center; + position: relative; + + p { + margin-top: 10px; + } + } + } + + & li:last-child{ + &:after{ + right:-14px; + } + } + .text-primary{ + right: 0px; + + a{ + width: 30px; + height: 30px; + text-align: center; + padding: 6px 0; + background-color: @theme-color !important; + font-size: 12px; + line-height: 1.428571429; + border-radius: 50% !important; + display: inline-block; + color: white !important; + } + } + .text-muted + { + a{ + width: 30px; + height: 30px; + text-align: center; + padding: 6px 0; + background-color: #fff; + border:1px solid #ccc; + font-size: 12px; + line-height: 1.428571429; + border-radius: 50% !important; + display: inline-block; + } + } +} +.coupon-code-text{ + .muli-regular; + .size(14px); +} +.coupon-code-textbox{ + + border-radius:0; + border: 1px solid #333; + height: 45px; + border-right: 0; + + &:focus + { + box-shadow:none; + border-color:#333; + } +} +.a-submit.coupon_code_submit +{ + height: 45px; + background: transparent; + color: #555; + border: 1px solid #333 !important; + border-left: 0 !important; + + span + { + padding: 9px 0px; + transition: all 0.4s ease; + } + + &:hover + { + .bg(transparent) !important; + color:#000 !important; + } + &:hover >span + { + transform: translate(5px, 0); + -webkit-transform: translate(5px, 0); + -o-transform: translate(5px, 0); + -moz-transform: translate(5px, 0); + } +} +.clear_shopping_cart{ + .size(12px); + color:@theme-color; + display:inline-block; +} +.cart-total-heading{ + text-align: right; +} +#cart_total{ + .right; + margin: 0; + padding: 0 0 3% 0; + width: 30%; + left:0; + + & div.row{ + .pt(8px); + .pb(8px); + .ml(0); + .mr(0); + + & span.col-xs-6{ + .pl(0); + .pr(0); + } + } + .final-total{ + .size(18px); + color:#000; + .muli-semibold(); + } +} +.subtotal_span_right,.subtotal_span_left +{ + .muli-semibold(); + .size(15px); +} + +#right_column{ + width:25%; +} +.oe_currency_value{ + float:none !important; +} +.cart-empty-msg{ + border: 0; + box-shadow: none; + background: white; + .size(25px); + text-align: center; +} +.checkout-row-main{ + .block; + width:100%; + + .js_edit_address{ + background: @theme-color; + color: #fff; + padding: 10px; + } +} +.address-main-div{ + width:49.5%; + .pr(10px); + display : inline-block; + vertical-align: top; + + & div.border_primary{ + border: 1px solid @theme-color; + border-radius: 0; + } + & div.panel-default{ + border: 1px solid @theme-color; + border-radius: 0; + } +} +.your-order{ + display:none; +} +.address-row-main-div{ + width:100%; + display: inline-block; + + .checkout_autoformat + { + width:75%; + } + + .wizard-main-ul + { + .mb(5%); + } + .form-group { + width: 50%; + margin-bottom: 25px; + } + + & label.control-label{ + font-weight:normal; + .size(15px); + } + & input.form-control , select.form-control , #country_id{ + border-radius: 0; + height: 40px; + } + & .col-md-12{ + width:50%; + } +} +.extra-step-div{ + & label.control-label{ + .left; + font-weight: normal; + } +} +.extra-step-form{ + padding:0; +} +.cart-product-table{ + + .mt(3%); + + & tr:nth-of-type(2n+1){ + background: #fff; + } + & .suggested-product{ + font-weight:normal; + .pt(5%); + .pb(1%); + } + + & td{ + vertical-align: middle !important; + .size(14px); + //text-align: left; + .muli-regular; + //border-right: 1px solid #dddddd !important; + padding:25px 10px !important; + border-top: 1px solid #f0f0f0 !important; + + & strong{ + font-weight: normal; + } + & img{ + // margin:0px auto; + width: 90px; + border-radius:0; + } + } + .td-img + { + text-align: left; + width: 70px; + } + #td-price + { + text-align: right; + } + .td-price + { + text-align: left; + } + .td-price,#td-price + { + span + { + .muli-semibold(); + .size(15px); + color:#555; + } + } + .cart_product_name + { + a + { + .muli-semibold(); + .size(14px); + color:#333; + .capitalize(); + line-height: 170%; + } + } + .remove-cart-product-icon + { + color:#999; + border-bottom: 1px solid #999; + padding: 2px 0; + } + .cart_product_attr_main,.cart_product_name + { + .mb(2%); + } +} +.coupon_cont_shopping_section +{ + border-top: 1px solid #f0f0f0; + padding: 3% 0; + + .cont_shopping_main + { + display:inline-block; + width:49%; + text-align:left; + vertical-align: top; + } + .coupon_code_main + { + display:inline-block; + width:49%; + text-align:right; + vertical-align: top; + + #coupon_box + { + float:right; + } + } +} +.cont_shop_btn +{ + padding: 12px 20px; + border: 1px solid #333; + color:#555; + .muli-semibold(); + display:inline-block; +} +#coupon_box +{ + width: 100%; + display:inline-block; + text-align: right; + padding: 3% 0 !important; + border-top: 1px solid #f0f0f0; + + form + { + float:right; + } +} +.cart_suggested_main_section +{ + .cart_sugg_name + { + .muli-semibold(); + color:#333; + .uppercase(); + .size(17px); + .mb(1%); + } + .suggested-product-table + { + .cart-thead-tr { + // border-bottom: 1px solid #f0f0f0; + } + + td + { + border:none; + padding: 25px 0; + border-top: 1px solid #f0f0f0; + vertical-align: middle; + } + + .td-img + { + img + { + max-width: 90px; + border-radius: 0; + } + } + .td-price + { + width: 20%; + } + .td-product_name + { + .sugg_name + { + padding: 0 5%; + + strong + { + font-weight: normal; + .muli-semibold(); + font-size: 14px; + color: #555; + line-height: 170%; + } + } + } + .sugg_add2cart_link + { + .muli-regular(); + color:#555; + border-bottom: 1px solid #999; + padding: 3px 0; + .capitalize(); + + strong + { + font-weight:normal + } + } + } + +} +.confirmation_table_total +{ + border:1px solid #dddddd; +} + +.order-detail-table{ + border:1px solid #dddddd; + .mb(0); + + & thead th{ + border-bottom:1px solid #dddddd !important; + padding:15px !important; + border-right: 1px solid #dddddd !important; + } + & tbody td{ + padding:10px !important; + border-right: 1px solid #dddddd !important; + } +} + + +.panel-body address span{ + line-height: 185%; +} +.payment-main-div{ + .common-div; +} +.payment-confirmation-status-div{ + color: #fff !important; + background-color: #000 !important; + border-color: #000 !important; +} +.extra-step-form{ + & label.control-label{ + font-weight: normal; + } + & input.form-control.o_website_form_input{ + border-radius: 0; + } + & textarea.form-control.o_website_form_input{ + border-radius: 0; + height: 100px; + } +} +.cart-tbody-tr{ + & td{ + vertical-align: middle !important; + .size(14px); + //text-align: center; + border-top:0; + .muli-regular; + padding:25px !important; + //border-right: 1px solid #dddddd !important; + + & strong{ + font-weight: normal; + } + & img{ + // margin:0px auto; + width:80px; + } + & .input-group-addon{ + border-radius:0px; + .bg(white); + } + & .remove-cart-product-icon{ + + + &:hover{ + color:@theme-color; + } + } + } + & #td-qty > div{ + width: 100px; + margin: 0px auto; + } +} +.checkout_cart_total{ + .pt(5%); + width: auto; +} +.checkout_heading +{ + .size(17px); +} +#coupon_box{ + + padding:0; + & p{ + .pb(5px); + } + & .bg-warning{ + background-color: unset; + color: #FF0808; + .pt(5px); + .pb(5px); + } +} +.coupon-code-div{ + & .coupon-code-text{ + .pb(5%); + } + & .bg-warning{ + background-color: unset; + color: #FF0808; + .pb(5px); + } +} + + +.cart-update{ + border: 1px solid #E1E1E1; + border-right: none; + padding : 10px 0 10px 15px; + width: 230px; + + & .cart-update-text{ + .size(14px); + .muli-regular; + + & .my_cart_quantity{ + .size(13px); + .muli-regular; + color : #444; + padding: 0; + font-weight: normal; + .pr(2px); + } + + & .cart-header-total{ + .pl(2px); + .size(13px); + } + } + + & .cart-update-icon{ + background: @theme-color; + float: right; + padding: 10px 14px 10px 14px; + .mt(-10px); + + & i{ + color: #fff; + } + + & sup.label{ + padding:0; + background: unset; + } + } +} + +/* popover */ +/*.popover{ + & .popover-title{ + .block; + background-color:white; + } + & .cart-total-heading{ + text-align:left; + } + #cart_total{ + .left !important; + + & div.row > span{ + text-align:left; + } + } +} +*/ +.cart-popover-view-btn{ + width:100%; +} +.strick-price +{ + color:#b8b8b8; +} +.cart_price +{ + .strick-price + { + .size(12px); + } + .cart_p_original_price + { + .size(14px); + .muli-semibold(); + color:@theme-color; + + span + { + .size(14px); + } + } +} +.mycart-popover{ + border-radius: 0px !important; + border:none; + //border-top : 0.5px solid #ccc; + z-index : 1000; + max-height: 500px; + min-width: 380px; + overflow-y: auto; + box-shadow: 0 6px 12px rgba(0,0,0,.175); + right:10px; + + & .popover-content{ + //padding: 20px 14px 9px 14px; + padding: 25px 30px; + } + & .popover-img-div{ + padding : 0; + width: 25%; + //.pl(10px); + .left; + + & img{ + padding:0; + max-height:70px; + border-radius:0; + } + } + & .popover-title{ + .block; + .bg(#fff); + .oswald-light(); + .size(18px); + .uppercase(); + letter-spacing:1px; + + } + & .well.well-lg{ + .size(18px); + color: #868383; + background-color : #fff; + border : 0; + box-shadow : unset; + } + & .popover-name-a{ + display: inline-block; + width:100%; + //.mb(2%); + //.pb(5px); + + & span{ + .size(14px); + color: #555; + .muli-semibold(); + display: block; + .capitalize(); + width: 100%; + line-height:165%; + transition: all 0.4s ease; + margin: 5px 0; + + + &:hover + { + color:@theme-color; + } + + } + } + & small{ + .size(14px); + .muli-semibold(); + display: inline-block; + } + & .remove-product-popover{ + cursor: pointer; + .pl(10px); + .size(13px); + color: red; + } + & .cart_price + { + display: inline-block; + } + & .cart_line{ + .pb(15px); + .mb(15px); + border-bottom: 1px #f7f7f7 solid; + } + & .cart-total-heading{ + .pt(0); + .mt(0); + text-align:left; + } + & .view-cart-btn{ + width: 100%; + .muli-semibold; + .pb(8px); + .size(14px); + letter-spacing: 0.3px; + } + & #cart_total{ + .left !important; + + & div.row > span{ + text-align:left; + } + } +} +.cp_goto_product { + display: inline-block; + padding: 5px 0; + color: #666; + + + i + { + transition: all 0.4s ease; + } +} +.cart_line +{ + &:hover .cp_goto_product i + { + transform: translate(5px,0); + -webkit-transform: translate(5px,0); /** Chrome & Safari **/ + -o-transform: translate(5px,0); /** Opera **/ + -moz-transform: translate(5px,0); /** Firefox **/ + color:@theme-color; + } +} + +.cart_popver_total +{ + .common-div; + + .cp_total_left + { + display:inline-block; + width:100%; + text-align:left; + margin: 5% 0; + + .cp_total_text { + .size(17px); + .muli-semibold(); + + span + { + color:@theme-color; + padding: 0 5px; + } + } + } + .cart_redirect_right + { + display:inline-block; + width:100%; + text-align: right; + } +} +.modal_th_style +{ + .muli-light(); + .uppercase(); + .size(13px); +} + +#product_confirmation td +{ + vertical-align: middle; + + .product_id + { + span + { + .oswald-semibold(); + .size(15px); + } + } + .oe_price + { + .oswald-semibold(); + .size(15px); + } +} +#product_confirmation +{ + .td-product_name + { + padding:0 10px; + + strong + { + .muli-light(); + } + } +} +.td-product_name +{ + .media-heading + { + .muli-light(); + } +} +.oe_website_sale .td-img + { + //width: 130px !important; + } +.oe_website_sale .td-qty + { + max-width:130px !important; + + .css_quantity + { + float:none !important; + margin:0px auto; + } + } +.oe_website_sale .td-price + { + //width:200px !important; + } + +.select_heding +{ + .muli-semibold(); + .uppercase(); + .size(13px); + .mt(5%); +} +.cart_p_desc +{ + line-height: 176%; + margin-top: 10px; + padding: 0 5% 0 0; +} +#modal_optional_products +{ + span.oe_optional + { + display: inline-block; + .mr(5px); + color: #999; + .size(13px); + } + .oe_striked_price + { + display: inline-block; + .mr(5px); + color: #999; + .size(13px); + } + td.td-price + { + .pb(3%); + + span.oe_price + { + .muli-regular(); + .size(14px); + + span + { + .muli-regular(); + .size(14px); + } + } + } + +} +.td-price del{ + color: #B8B8B8 !important; +} + +#delivery_carrier +{ + #delivery_method + { + border:0; + + ul >li.list-group-item + { + border-radius: 0; + border: 1px solid #ddd; + } + } + +} +#payment_method +{ + .o_payment_form + { + div.panel-default + { + border-radius: 0; + border: 1px solid #ddd; + } + } + +} +.chs_heading >span +{ + .size(30px); + color: #222; + text-transform: uppercase; + line-height: 169%; + .oswald-light(); + letter-spacing: 2px; + word-spacing: 1px; + +} +.oe_cart +{ + .oe_website_sale_tx_status + { + .panel-info + { + border-color:#000; + } + } + +} + + +.checkout_autoformat +{ + .form-group + { + .mb(5%); + + + label + { + text-align: left; + color: #646464; + .size(13px); + .uppercase(); + padding: 0; + .mb(10px); + } + + input.form-control + { + border-radius: 0; + border: none; + box-shadow: unset; + border-bottom: 1px solid #777; + + &:focus{ + border-bottom: 1px solid #ccc; + } + } + + textarea.form-control + { + border-radius: 0; + } + } +} + + +.ts_button +{ + border: 2px solid #000; + display:inline-block; + position:relative; + overflow: hidden; + vertical-align: middle; + padding: 0 20px; + .size(12px); + line-height: 40px; + .uppercase(); + border-radius: 4px; + transition:color .25s cubic-bezier(.25,.46,.45,.94),background-color .25s cubic-bezier(.25,.46,.45,.94),border-color .25s cubic-bezier(.25,.46,.45,.94); + + .ts_btn_span_txt + { + display: inline-block; + -webkit-transition: -webkit-transform .15s ease-out,opacity .15s; + transition: transform .15s ease-out,opacity .15s; + letter-spacing:1px; + } + + &:hover + { + .bg(black); + color:#fff; + border-color:black; + } +} +.ts_button +{ + &:hover >.ts_btn_span_txt + { + opacity: 0; + -webkit-transform: translateY(-50%); + -moz-transform: translateY(-50%); + transform: translateY(-50%); + } + &:hover .ts-btn-text-flip + { + opacity: 1; + -webkit-transform: translateY(0); + -moz-transform: translateY(0); + transform: translateY(0); + } + &:hover .cart_qty_container + { + color:#fff; + } + &:hover .my_cart_quantity + { + color:#fff; + background-color: transparent; + } +} + +.ts-btn-text-flip +{ + position: absolute; + top: 0; + left: 0; + height: 100%; + width: 100%; + text-align: center; + -webkit-transform: translateY(50%); + -moz-transform: translateY(50%); + transform: translateY(50%); + opacity: 0; + -webkit-transition: -webkit-transform .15s ease-out,opacity .15s; + transition: transform .15s ease-out,opacity .15s; + + .ts_btn_span_txt + { + color:#fff; + letter-spacing:1px; + } +} +.cart_qty_container +{ + display:inline; + .size(12px); +} +.main-header-right-new +{ + #header-social{ + a:first-child{ + display: none; + } + } +} +.cart_suggested_main_section +{ + .mt(5%); +} diff --git a/ext/3rd-party-addons/clarico_cart/templates/assets.xml b/ext/3rd-party-addons/clarico_cart/templates/assets.xml new file mode 100755 index 00000000..2007b7e6 --- /dev/null +++ b/ext/3rd-party-addons/clarico_cart/templates/assets.xml @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/ext/3rd-party-addons/clarico_cart/templates/template.xml b/ext/3rd-party-addons/clarico_cart/templates/template.xml new file mode 100755 index 00000000..97f3ec8b --- /dev/null +++ b/ext/3rd-party-addons/clarico_cart/templates/template.xml @@ -0,0 +1,679 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ext/3rd-party-addons/clarico_category/__init__.py b/ext/3rd-party-addons/clarico_category/__init__.py new file mode 100755 index 00000000..e046e49f --- /dev/null +++ b/ext/3rd-party-addons/clarico_category/__init__.py @@ -0,0 +1 @@ +from . import controllers diff --git a/ext/3rd-party-addons/clarico_category/__manifest__.py b/ext/3rd-party-addons/clarico_category/__manifest__.py new file mode 100755 index 00000000..a0627ce9 --- /dev/null +++ b/ext/3rd-party-addons/clarico_category/__manifest__.py @@ -0,0 +1,26 @@ +{ + # Theme information + 'name' : 'Clarico Category', + 'category' : 'Website', + 'version' : '1.0', + 'summary': 'Website Category Carousel', + 'description': """""", + + # Dependencies + 'depends': [ + 'clarico_carousel' + ], + + # Views + 'data': [ + 'template/assets.xml', + 'template/template.xml', + ], + + # Author + 'author': 'Emipro Technologies Pvt. Ltd.', + 'website': 'http://www.emiprotechnologies.com', + + # Technical + 'installable': True, +} diff --git a/ext/3rd-party-addons/clarico_category/controllers/__init__.py b/ext/3rd-party-addons/clarico_category/controllers/__init__.py new file mode 100755 index 00000000..deec4a8b --- /dev/null +++ b/ext/3rd-party-addons/clarico_category/controllers/__init__.py @@ -0,0 +1 @@ +from . import main \ No newline at end of file diff --git a/ext/3rd-party-addons/clarico_category/controllers/main.py b/ext/3rd-party-addons/clarico_category/controllers/main.py new file mode 100755 index 00000000..a7e90bb9 --- /dev/null +++ b/ext/3rd-party-addons/clarico_category/controllers/main.py @@ -0,0 +1,28 @@ +from odoo import http +from odoo.http import request + +class claricoCategory(http.Controller): + + @http.route(['/showcase_data'],type='json', auth='public', website=True , csrf=False, cache=30) + def category_data(self,template,limit=10): + data=request.env['product.public.category'].search([['parent_id','=',False]],limit=limit) + values = {'object':data} + return request.env.ref(template).render(values) + + + + + + + + + + + + + + + + + + diff --git a/ext/3rd-party-addons/clarico_category/static/description/icon.png b/ext/3rd-party-addons/clarico_category/static/description/icon.png new file mode 100755 index 00000000..09fd34ab Binary files /dev/null and b/ext/3rd-party-addons/clarico_category/static/description/icon.png differ diff --git a/ext/3rd-party-addons/clarico_category/static/src/img/clarico_category.jpg b/ext/3rd-party-addons/clarico_category/static/src/img/clarico_category.jpg new file mode 100755 index 00000000..c067a19b Binary files /dev/null and b/ext/3rd-party-addons/clarico_category/static/src/img/clarico_category.jpg differ diff --git a/ext/3rd-party-addons/clarico_category/static/src/js/showcase_snippet_editor.js b/ext/3rd-party-addons/clarico_category/static/src/js/showcase_snippet_editor.js new file mode 100755 index 00000000..fe641fb6 --- /dev/null +++ b/ext/3rd-party-addons/clarico_category/static/src/js/showcase_snippet_editor.js @@ -0,0 +1,26 @@ +odoo.define('clarico_category.snippets.editor', function (require) { +'use strict'; + +var animation = require('website.content.snippets.animation'); +var options = require('web_editor.snippets.options'); +var snippet_editor = require('web_editor.snippet.editor'); +var website = require('website.website'); + +snippet_editor.Class.include({ + _get_snippet_url: function () { + return '/website/snippets'; + } +}); + + options.registry.js_get_category = options.Class.extend({ + drop_and_build_snippet: function(){ + var self = this; + if (!self.$target.data('snippet-view')) { + this.$target.data("snippet-view", new website.snippet.animationRegistry.js_get_category(this.$target)); + } + }, + clean_for_save:function(){ + this.$target.empty(); + } +}); +}); diff --git a/ext/3rd-party-addons/clarico_category/static/src/js/showcase_snippet_frontend.js b/ext/3rd-party-addons/clarico_category/static/src/js/showcase_snippet_frontend.js new file mode 100755 index 00000000..6145aedf --- /dev/null +++ b/ext/3rd-party-addons/clarico_category/static/src/js/showcase_snippet_frontend.js @@ -0,0 +1,50 @@ +odoo.define('clarico_category.snippets.animation', function (require) { +'use strict'; +var ajax = require('web.ajax'); +var base = require('web_editor.base'); +var animation = require('website.content.snippets.animation'); +var no_of_product; + +animation.registry.js_get_category = animation.Class.extend({ + selector : ".js_get_category", + + start: function(){ + this.redrow(); + }, + stop: function(){ + this.clean(); + }, + + redrow: function(debug){ + this.clean(debug); + this.build(debug); + }, + + clean:function(debug){ + this.$target.empty(); + }, + + build: function(debug) + { + var self = this, + limit = self.$target.data("objects_limit"), + template = self.$target.data("template"); + if(!template) template="category_image_showcase_snippent.clarico_category_category_showcase"; + if(!limit)limit = 10; + var rpc_end_point = '/showcase_data'; + ajax.jsonRpc(rpc_end_point, 'call', { + 'template': template, + 'limit': limit, + }).then(function(data) + { + $(data).appendTo(self.$target); + }).then(function() + { + + }).fail(function(e) { + return; + }); + }, +}); + +}); diff --git a/ext/3rd-party-addons/clarico_category/static/src/less/showcase_snippet.less b/ext/3rd-party-addons/clarico_category/static/src/less/showcase_snippet.less new file mode 100755 index 00000000..e3f6a742 --- /dev/null +++ b/ext/3rd-party-addons/clarico_category/static/src/less/showcase_snippet.less @@ -0,0 +1,81 @@ +.ss_container{ + .block; + .center(); +} +.ss_inline +{ + display:inline-block; + text-align:center; + width:85%; +} +.cat_showcase_heading +{ +.common-div; +.center(); + + .cat_title + { + .size(30px); + color: #222; + .uppercase(); + line-height: 169%; + .oswald-light(); + letter-spacing: 2px; + word-spacing: 1px + } +} +.cat_name +{ + .center(); + .pt(20%); + .pb(20%); + border-bottom: 3px solid transparent; +} +.c_pc_image +{ + display: inline-block; + margin:1%; + padding:1%; + + img + { + max-height: 100px; + margin:0px auto; + } + + &:hover + { + .cat_name + { + border-bottom: 3px solid @theme-color; + } + } +} +@media (max-width: 800px) { + + .cat_showcase_heading .cat_title + { + .size(28px) !important; + } + + } +@media (max-width: 600px) { + + .cat_showcase_heading .cat_title + { + .size(20px) !important; + } + .product_carousel_slider a + { + .size(11px) !important; + } + .c_pc_image:hover .cat_name { + border-bottom: 2px solid @theme-color !important; + } + .c_pc_image { + + margin: 2% !important; + padding: 3% !important; + } + +} diff --git a/ext/3rd-party-addons/clarico_category/template/assets.xml b/ext/3rd-party-addons/clarico_category/template/assets.xml new file mode 100755 index 00000000..78ddf810 --- /dev/null +++ b/ext/3rd-party-addons/clarico_category/template/assets.xml @@ -0,0 +1,26 @@ + + + + + + + + + \ No newline at end of file diff --git a/ext/3rd-party-addons/clarico_category/template/template.xml b/ext/3rd-party-addons/clarico_category/template/template.xml new file mode 100755 index 00000000..37c641a7 --- /dev/null +++ b/ext/3rd-party-addons/clarico_category/template/template.xml @@ -0,0 +1,50 @@ + + + + + + + + + + diff --git a/ext/3rd-party-addons/clarico_category_attribute/__init__.py b/ext/3rd-party-addons/clarico_category_attribute/__init__.py new file mode 100755 index 00000000..9186ee3a --- /dev/null +++ b/ext/3rd-party-addons/clarico_category_attribute/__init__.py @@ -0,0 +1 @@ +from . import model diff --git a/ext/3rd-party-addons/clarico_category_attribute/__manifest__.py b/ext/3rd-party-addons/clarico_category_attribute/__manifest__.py new file mode 100755 index 00000000..9bba3980 --- /dev/null +++ b/ext/3rd-party-addons/clarico_category_attribute/__manifest__.py @@ -0,0 +1,27 @@ +{ + # Theme information + 'name' : 'Clarico Category Attribute', + 'category' : 'Website', + 'version' : '1.0', + 'summary': 'Show Main Attribute for a Product in Category Page', + 'description': """""", + + # Dependencies + 'depends': [ + 'clarico_shop' + ], + + # Views + 'data': [ + 'view/view.xml', + 'templates/template.xml', + 'templates/assets.xml', + ], + + # Author + 'author': 'Emipro Technologies Pvt. Ltd.', + 'website': 'http://www.emiprotechnologies.com', + + # Technical + 'installable': True, +} diff --git a/ext/3rd-party-addons/clarico_category_attribute/model/__init__.py b/ext/3rd-party-addons/clarico_category_attribute/model/__init__.py new file mode 100755 index 00000000..0a91ef28 --- /dev/null +++ b/ext/3rd-party-addons/clarico_category_attribute/model/__init__.py @@ -0,0 +1 @@ +from . import product_public_category diff --git a/ext/3rd-party-addons/clarico_category_attribute/model/product_public_category.py b/ext/3rd-party-addons/clarico_category_attribute/model/product_public_category.py new file mode 100755 index 00000000..703a2066 --- /dev/null +++ b/ext/3rd-party-addons/clarico_category_attribute/model/product_public_category.py @@ -0,0 +1,6 @@ +from odoo import api, fields, models + +class product_public_category(models.Model): + _inherit = ["product.public.category"] + + attribute_select = fields.Many2one('product.attribute', 'Select Attribute') diff --git a/ext/3rd-party-addons/clarico_category_attribute/static/description/icon.png b/ext/3rd-party-addons/clarico_category_attribute/static/description/icon.png new file mode 100755 index 00000000..09fd34ab Binary files /dev/null and b/ext/3rd-party-addons/clarico_category_attribute/static/description/icon.png differ diff --git a/ext/3rd-party-addons/clarico_category_attribute/static/src/less/attribute_select.less b/ext/3rd-party-addons/clarico_category_attribute/static/src/less/attribute_select.less new file mode 100755 index 00000000..01acbf6b --- /dev/null +++ b/ext/3rd-party-addons/clarico_category_attribute/static/src/less/attribute_select.less @@ -0,0 +1,38 @@ +.color(@color){ + color:@color; +} +.div_class_categ_attribute_name{ + .left(); +} +.div_class_categ_attrib_class_sub_class{ + .left(); + display: block; + width: 100%; +} +.border-color-top{ + border-top: 1px solid #eee; + .mb(12px); +} +.a_class_categ_attribute_name{ + .muli-regular; + .color(black); + + &:hover{ + text-decoration:none; + .color(black); + } +} + +.div_class_attr_value_div label { + margin: 7px 6px 0px 0px !important; + width: 9px !important; + height: 9px !important; +} +.div_class_attr_value_div{ + .mt(1px) !important; + .left; + .ml(10px); +} +.para_class_attr_value_name{ + .size(12px); +} diff --git a/ext/3rd-party-addons/clarico_category_attribute/templates/assets.xml b/ext/3rd-party-addons/clarico_category_attribute/templates/assets.xml new file mode 100755 index 00000000..eb22449f --- /dev/null +++ b/ext/3rd-party-addons/clarico_category_attribute/templates/assets.xml @@ -0,0 +1,9 @@ + + + + \ No newline at end of file diff --git a/ext/3rd-party-addons/clarico_category_attribute/templates/template.xml b/ext/3rd-party-addons/clarico_category_attribute/templates/template.xml new file mode 100755 index 00000000..2e30fd75 --- /dev/null +++ b/ext/3rd-party-addons/clarico_category_attribute/templates/template.xml @@ -0,0 +1,37 @@ + + + + diff --git a/ext/3rd-party-addons/clarico_category_attribute/view/view.xml b/ext/3rd-party-addons/clarico_category_attribute/view/view.xml new file mode 100755 index 00000000..812893ad --- /dev/null +++ b/ext/3rd-party-addons/clarico_category_attribute/view/view.xml @@ -0,0 +1,14 @@ + + + + attribute.select.public.category + product.public.category + + + + + + + + + \ No newline at end of file diff --git a/ext/3rd-party-addons/clarico_category_description/__init__.py b/ext/3rd-party-addons/clarico_category_description/__init__.py new file mode 100755 index 00000000..36ec7207 --- /dev/null +++ b/ext/3rd-party-addons/clarico_category_description/__init__.py @@ -0,0 +1 @@ +from . import model \ No newline at end of file diff --git a/ext/3rd-party-addons/clarico_category_description/__manifest__.py b/ext/3rd-party-addons/clarico_category_description/__manifest__.py new file mode 100755 index 00000000..776e93cd --- /dev/null +++ b/ext/3rd-party-addons/clarico_category_description/__manifest__.py @@ -0,0 +1,27 @@ +{ + # Theme information + 'name' : 'Clarico Category Description', + 'category' : 'Website', + 'version' : '1.0', + 'summary': '', + 'description': """""", + + # Dependencies + 'depends': [ + 'clarico_shop' + ], + + # Views + 'data': [ + 'view/product_category.xml', + 'templates/template.xml', + 'templates/assets.xml', + ], + + # Author + 'author': 'Emipro Technologies Pvt. Ltd.', + 'website': 'http://www.emiprotechnologies.com', + + # Technical + 'installable': True, +} diff --git a/ext/3rd-party-addons/clarico_category_description/model/__init__.py b/ext/3rd-party-addons/clarico_category_description/model/__init__.py new file mode 100755 index 00000000..c1dcd8ec --- /dev/null +++ b/ext/3rd-party-addons/clarico_category_description/model/__init__.py @@ -0,0 +1 @@ +from . import category_content \ No newline at end of file diff --git a/ext/3rd-party-addons/clarico_category_description/model/category_content.py b/ext/3rd-party-addons/clarico_category_description/model/category_content.py new file mode 100755 index 00000000..fab9ca39 --- /dev/null +++ b/ext/3rd-party-addons/clarico_category_description/model/category_content.py @@ -0,0 +1,10 @@ +from odoo import api, fields, models +from odoo.tools.translate import html_translate + + +class product_category(models.Model): + + _inherit = ["product.public.category"] + + content = fields.Html('Content', translate=html_translate) + category_image = fields.Binary('Category Image') \ No newline at end of file diff --git a/ext/3rd-party-addons/clarico_category_description/static/description/icon.png b/ext/3rd-party-addons/clarico_category_description/static/description/icon.png new file mode 100755 index 00000000..09fd34ab Binary files /dev/null and b/ext/3rd-party-addons/clarico_category_description/static/description/icon.png differ diff --git a/ext/3rd-party-addons/clarico_category_description/static/src/less/catg_desc.less b/ext/3rd-party-addons/clarico_category_description/static/src/less/catg_desc.less new file mode 100755 index 00000000..2bad232d --- /dev/null +++ b/ext/3rd-party-addons/clarico_category_description/static/src/less/catg_desc.less @@ -0,0 +1,8 @@ +body.editor_enable +{ + .shop_ctg_desc_main + { + background-color:#ceceed; + + } +} diff --git a/ext/3rd-party-addons/clarico_category_description/templates/assets.xml b/ext/3rd-party-addons/clarico_category_description/templates/assets.xml new file mode 100755 index 00000000..34b914ca --- /dev/null +++ b/ext/3rd-party-addons/clarico_category_description/templates/assets.xml @@ -0,0 +1,9 @@ + + + + diff --git a/ext/3rd-party-addons/clarico_category_description/templates/template.xml b/ext/3rd-party-addons/clarico_category_description/templates/template.xml new file mode 100755 index 00000000..474a0a65 --- /dev/null +++ b/ext/3rd-party-addons/clarico_category_description/templates/template.xml @@ -0,0 +1,24 @@ + + + + \ No newline at end of file diff --git a/ext/3rd-party-addons/clarico_category_description/view/product_category.xml b/ext/3rd-party-addons/clarico_category_description/view/product_category.xml new file mode 100755 index 00000000..bb8551e3 --- /dev/null +++ b/ext/3rd-party-addons/clarico_category_description/view/product_category.xml @@ -0,0 +1,16 @@ + + + + + public.category.form + product.public.category + + + + + + + + + + diff --git a/ext/3rd-party-addons/clarico_cms_blocks/__init__.py b/ext/3rd-party-addons/clarico_cms_blocks/__init__.py new file mode 100755 index 00000000..e69de29b diff --git a/ext/3rd-party-addons/clarico_cms_blocks/__manifest__.py b/ext/3rd-party-addons/clarico_cms_blocks/__manifest__.py new file mode 100755 index 00000000..57c73564 --- /dev/null +++ b/ext/3rd-party-addons/clarico_cms_blocks/__manifest__.py @@ -0,0 +1,57 @@ +{ + # Theme information + 'name' : 'Clarico CMS Blocks', + 'category' : 'Website', + 'version' : '1.0', + 'summary': '14 CMS Building Blocks', + 'description': """""", + + # Dependencies + 'depends': [ + 'snippet_style_1', + 'snippet_style_2', + 'snippet_style_3', + 'snippet_style_4', + 'snippet_style_5', + 'snippet_style_6', + 'snippet_style_7', + 'snippet_style_8', + 'snippet_style_9', + 'snippet_style_10', + 'snippet_style_11', + 'snippet_style_12', + 'snippet_style_13', + 'snippet_style_14', + 'snippet_style_15', + 'snippet_style_16', + 'snippet_style_17', + 'snippet_style_18', + 'clarico_snippet_style_4', + 'clarico_snippet_style_7', + 'clarico_snippet_style_9', + 'clarico_snippet_style_10', + 'clarico_snippet_style_11', + 'clarico_snippet_style_12', + 'clarico_snippet_style_13', + 'clarico_snippet_style_15', + 'clarico_snippet_style_16', + 'clarico_snippet_style_17', + 'clarico_snippet_style_18', + 'clarico_snippet_style_19', + 'clarico_slider_style_1', + 'clarico_slider_style_2', + 'clarico_slider_style_3', + 'clarico_slider_style_4', + 'clarico_slider_style_5', + + ], + + + # Author + 'author': 'Emipro Technologies Pvt. Ltd.', + 'website': 'http://www.emiprotechnologies.com', + + # Technical + 'installable': True, +} + diff --git a/ext/3rd-party-addons/clarico_cms_blocks/static/description/icon.png b/ext/3rd-party-addons/clarico_cms_blocks/static/description/icon.png new file mode 100755 index 00000000..bfafc926 Binary files /dev/null and b/ext/3rd-party-addons/clarico_cms_blocks/static/description/icon.png differ diff --git a/ext/3rd-party-addons/clarico_compare/__init__.py b/ext/3rd-party-addons/clarico_compare/__init__.py new file mode 100755 index 00000000..a03bfd09 --- /dev/null +++ b/ext/3rd-party-addons/clarico_compare/__init__.py @@ -0,0 +1 @@ +from . import controllers \ No newline at end of file diff --git a/ext/3rd-party-addons/clarico_compare/__manifest__.py b/ext/3rd-party-addons/clarico_compare/__manifest__.py new file mode 100755 index 00000000..c93abca1 --- /dev/null +++ b/ext/3rd-party-addons/clarico_compare/__manifest__.py @@ -0,0 +1,26 @@ +{ + # Theme information + 'name' : 'Clarico Compare', + 'category' : 'Website', + 'version' : '1.0', + 'summary': 'Add Products into Compare from Category & Product Page', + 'description': """""", + + # Dependencies + 'depends': [ + 'website_sale_comparison','clarico_shop','clarico_product','clarico_product_multi_carousel', + ], + + # Views + 'data': [ + 'templates/assets.xml', + 'templates/template.xml', + ], + + # Author + 'author': 'Emipro Technologies Pvt. Ltd.', + 'website': 'http://www.emiprotechnologies.com', + + # Technical + 'installable': True, +} diff --git a/ext/3rd-party-addons/clarico_compare/controllers/__init__.py b/ext/3rd-party-addons/clarico_compare/controllers/__init__.py new file mode 100755 index 00000000..deec4a8b --- /dev/null +++ b/ext/3rd-party-addons/clarico_compare/controllers/__init__.py @@ -0,0 +1 @@ +from . import main \ No newline at end of file diff --git a/ext/3rd-party-addons/clarico_compare/controllers/main.py b/ext/3rd-party-addons/clarico_compare/controllers/main.py new file mode 100755 index 00000000..fc308096 --- /dev/null +++ b/ext/3rd-party-addons/clarico_compare/controllers/main.py @@ -0,0 +1,32 @@ +from odoo import http, _ +from odoo.http import request +from odoo.addons.clarico_shop.controllers.main import claricoShop +import json + +class Claricoproductcomparison(claricoShop): + + @http.route('/shop/compare/', type='http', auth="public", website=True) + def product_compare(self, **post): + values = {} + product_ids = [int(i) for i in post.get('products', '').split(',') if i.isdigit()] + if not product_ids: + return request.redirect("/shop") + # use search to check read access on each record/ids + products = request.env['product.product'].search([('id', 'in', product_ids)]) + values['products'] = products.with_context(display_default_code=False) + + res = {} + for num, product in enumerate(products): + for var in product.attribute_line_ids: + cat_name = var.attribute_id.category_id.name or _('Uncategorized') + att_name = var.attribute_id.name + if not product.attribute_value_ids: # create_variant = False + continue + res.setdefault(cat_name, {}).setdefault(att_name, [' - '] * len(products)) + val = product.attribute_value_ids.filtered(lambda x: x.attribute_id == var.attribute_id) + if val: + res[cat_name][att_name][num] = val[0].name + values['specs'] = res + + values['compute_currency'] = self._get_compute_currency_and_context()[0] + return request.render("website_sale_comparison.product_compare", values) \ No newline at end of file diff --git a/ext/3rd-party-addons/clarico_compare/static/description/icon.png b/ext/3rd-party-addons/clarico_compare/static/description/icon.png new file mode 100755 index 00000000..09fd34ab Binary files /dev/null and b/ext/3rd-party-addons/clarico_compare/static/description/icon.png differ diff --git a/ext/3rd-party-addons/clarico_compare/static/src/img/slider_controls_left.png b/ext/3rd-party-addons/clarico_compare/static/src/img/slider_controls_left.png new file mode 100755 index 00000000..c022a2f8 Binary files /dev/null and b/ext/3rd-party-addons/clarico_compare/static/src/img/slider_controls_left.png differ diff --git a/ext/3rd-party-addons/clarico_compare/static/src/img/slider_controls_right.png b/ext/3rd-party-addons/clarico_compare/static/src/img/slider_controls_right.png new file mode 100755 index 00000000..57103947 Binary files /dev/null and b/ext/3rd-party-addons/clarico_compare/static/src/img/slider_controls_right.png differ diff --git a/ext/3rd-party-addons/clarico_compare/static/src/js/compare.js b/ext/3rd-party-addons/clarico_compare/static/src/js/compare.js new file mode 100755 index 00000000..9cbd21f3 --- /dev/null +++ b/ext/3rd-party-addons/clarico_compare/static/src/js/compare.js @@ -0,0 +1,54 @@ +odoo.define('clarico_compare.compare', function (require) { +"use strict"; + +require('web.dom_ready') +var ajax = require('web.ajax'); +var core = require('web.core'); +var utils = require('web.utils'); +var Widget = require('web.Widget'); +var website = require('web_editor.base'); +var website_sale_utils = require('website_sale.utils'); +var _t = core._t; + +var comparelist_product_ids = JSON.parse(utils.get_cookie('comparelist_product_ids') || '[]'); + +function dispcompare() +{ + comparelist_product_ids = JSON.parse(utils.get_cookie('comparelist_product_ids') || '[]'); + var count = comparelist_product_ids.length; + $('.o_product_circle').text(comparelist_product_ids.length) + $('.o_compare').attr('href', '/shop/compare/?products='+comparelist_product_ids.toString()); + $('.cus_theme_loader_layout').addClass('hidden'); + if(count > 0){ + $('.o_product_circle').text(comparelist_product_ids.length) + }else if(count == 0){ + $('.o_product_circle').text(""); + } +} +dispcompare() + + +$('.oe_website_sale .o_add_compare, .oe_website_sale .o_add_compare_dyn').click(function (e){ + $.getScript('/website_sale_comparison/static/src/js/website_sale_comparison.js', function(data, textStatus,jqxhr ) { + $('.cus_theme_loader_layout').removeClass('hidden'); + var count = comparelist_product_ids.length; + if(count >= 4){ + $(".compare_max_limit").css("visibility","visible"); + setTimeout(function(){ + $(".compare_max_limit").css("visibility","hidden"); + }, 2000); + } + dispcompare() + }); +}) +$('.compare_remove').click(function (e){ + $('.cus_theme_loader_layout').removeClass('hidden'); + console.log(comparelist_product_ids) + comparelist_product_ids = _.without(comparelist_product_ids, $(this).data('product_product_id')); + console.log(comparelist_product_ids) + document.cookie = 'comparelist_product_ids=' + JSON.stringify(comparelist_product_ids) + '; path=/'; + if(comparelist_product_ids.length == 0) + window.location.href = '/shop' + window.location.href = '/shop/compare/?products='+comparelist_product_ids.toString() +}) +}); diff --git a/ext/3rd-party-addons/clarico_compare/static/src/js/compare_script.js b/ext/3rd-party-addons/clarico_compare/static/src/js/compare_script.js new file mode 100755 index 00000000..731fb825 --- /dev/null +++ b/ext/3rd-party-addons/clarico_compare/static/src/js/compare_script.js @@ -0,0 +1,77 @@ +odoo.define('clarico_compare.wish', function(require) { + "use strict"; + require('web.dom_ready'); + var base = require('web_editor.base'); + var ajax = require('web.ajax'); + var utils = require('web.utils'); + var core = require('web.core'); + var _t = core._t; + var url="" + + + $(".wish_icon_wrap[disabled]").each(function(){ + $(this).find("i").removeClass("fa fa-heart-o").addClass("fa fa-heart inwish") + }) + $(".wish_icon_wrap,.disabled").click(function(){ + $(this).find("i").removeClass("fa fa-heart-o").addClass("fa fa-heart inwish") + }) + +}) + + +$(window).load(function(){ + var compare_count_span = $(".compare-count-span").html(); + + if(compare_count_span > 3){ + $('.compare_slider_main > .owl-carousel').owlCarousel({ + loop:true, + margin:10, + nav:true, + autoplay:false, + autoplayTimeout:3000, + autoplayHoverPause:true, + responsiveClass:true, + + responsive:{ + 0:{ + items:1 + }, + 700:{ + items:2 + }, + 1000:{ + items:3 + } + } + }); + }else{ + if ($(window).width() > 800) { + $(".owl-carousel").css("display","block"); + $(".compare_main").addClass("non-carousel"); + }else{ + $(".compare_main").removeClass("non-carousel"); + $('.compare_slider_main > .owl-carousel').owlCarousel({ + loop:true, + margin:10, + nav:true, + autoplay:false, + autoplayTimeout:3000, + autoplayHoverPause:true, + responsiveClass:true, + + responsive:{ + 0:{ + items:1 + }, + 700:{ + items:2 + }, + 1000:{ + items:3 + } + } + }); + } + + } +}) diff --git a/ext/3rd-party-addons/clarico_compare/static/src/less/compare.less b/ext/3rd-party-addons/clarico_compare/static/src/less/compare.less new file mode 100755 index 00000000..169b025d --- /dev/null +++ b/ext/3rd-party-addons/clarico_compare/static/src/less/compare.less @@ -0,0 +1,440 @@ +#compare_shop{ + + & .o_add_compare{ + background: unset !important; + color: #ccc !important; + .size(14px); + padding:0; + } +} +.compare_slider_main{ + & .owl-nav .owl-prev{ + top: -32px; + right: 35px; + left: auto; + } + & .owl-nav .owl-next{ + top: -32px; + right: 15px; + } +} +.compare_main{ + width:95%; + + & .parent{ + background: #fff; + position : relative; + } + & .compare_remove{ + position: absolute; + z-index: 2; + top: 6px; + right: 10px; + height: 34px; + width: 34px; + background-color: #fff; + box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.15); + border: solid 1px rgba(0, 0, 0, 0.06); + border-radius: 50%; + font-size: 15px; + line-height: 32px; + color: #878787; + display: block; + margin: 0px auto; + text-align: center; + cursor: pointer; + } +} + +/* Compare */ + +.compare_static +{ + .common-div; + span + { + color:#777; + } +} + +.theme_color_class +{ + color:@theme-color !important; +} + +.compare_slider{ + padding:5% 0 5% 0; + background: #F2EFEF; + width:95% !important; +} + +.compare_product_heading_left_div{ + .left; + width:20%; +} +.compare_product_heading_right_div{ + .left; + width:80%; +} +.compare_product_div{ + & .chs_heading{ + .size(20px); + .center + } +} +.compare_img_div{ + width:100%; + position:relative; + + & img{ + width:auto; + max-width:100%; + } + &:hover{ + opacity:0.3; + transition: 1s; + } +} + +.compare_product_price{ + + & .orignal-price{ + .size(14px); + + & .oe_currency_value{ + .size(14px); + } + } +} +.sale-div{ + position: absolute; + top: 10px; + left: 10px; + + & .sale-btn{ + border-radius: 3px; + right: 0; + left: 10px; + top: 20px; + padding: 3.5px 12px; + color: #fff; + background-color: #be4978; + font: bold 10px 'muli-regular'; + transform: unset !important; + -ms-transform: unset !important; + -o-transform: unset !important; + text-transform: uppercase; + width: auto; + display:inline-block; + + &:after{ + content: ''; + position: absolute; + right: 8px; + bottom: -7px; + border-top: 2px solid transparent; + border-bottom: 9px solid transparent; + border-right: 9px solid #be4978; + transform: rotate(-23deg); + } + } +} + +.compare_product_description{ + .pt(7%) !important; + max-height:150px; + min-height:150px; + overflow: auto; + + & span{ + .size(12px); + } +} + +.contentmaxW{ + .center; + max-width: 90%; + position: relative; +} +.product_description{ + padding:5px 0 5px 0; + .common-div(); + text-align: left; + margin:0px auto; + + & .c_product_name{ + .size(15px) !important; + text-overflow: ellipsis; + width: 80%; + overflow: hidden; + white-space: nowrap; + display:block; + } + & .in-stock{ + padding: 4px 10px 4px 10px; + background: #008000; + color:white; + width:auto; + + & #available{ + .muli-bold; + } + } + & .warning{ + + background-color: #D5B91D; + color: #FFF; + padding: 4px 10px 4px 10px; + width:auto; + + & #available{ + .muli-bold; + } + } + + + & .label_class_attr_color_div{ + width: 10px; + height: 10px; + .left; + padding: 6px; + .mr(10px); + border-radius: 50%; + } + & .color_name_heading{ + .left; + .size(14px); + margin: 0px 6px 12px 0px; + clear: both; + font-weight: normal !important; + .muli-regular; + color: #484848 !important; + } + & .label_comma{ + .left; + .mr(6px); + } + & .label_class_attr_color_div{ + .left; + .mt(5px); + } + & .other_variant{ + .left; + .size(13px); + .mr(10px); + .pt(1px); + } + +} +.compare_product_variant{ + .pb(9%) !important; + .pt(5%); +} + +.compare_function_main_div{ + .common-div(); + .pb(10%) !important; + + & .compare_add_to_cart_div{ + & .add2cart{ + .center; + } + } + & .compare_wishlist_div{ + position: absolute; + top: 14px; + right: 0; + } +} +.compare_product_name{ + display:block; + .pt(5%); +} + +#compare_wishlist_div_id{ + & .wish_icon_wrap span{ + padding: 0 !important; + border: none !important; + } + + & .inwish{ + color : @theme-color; + } + & .wish_icon_wrap{ + cursor: pointer; + } + & .wish_icon_wrap.disabled, .wish_icon_wrap[disabled]{ + cursor:not-allowed !important; + } +} + +.compare_icon_wrap{ + & span{ + padding: 11px 11px; + border: 1px solid #ccc; + } +} + +#compare_rating{ + .common-div; + .pt(2%); + + & .shop_rating{ + .mb(0) !important; + } + & .rating-star-div{ + .left; + } +} + +.suggest-product-heading{ + display: inline-block; + width: auto; + color: #777; + .size(13px); +} +/* compare popover */ + +.o_product_feature_panel{ + border-radius: 0; + border: 2px solid @theme-color; +} +#comparelist{ + + & .o_product_panel_header{ + + & .o_product_icon{ + color: @theme-color; + } + + & .o_product_text{ + .size(13px); + color: @theme-color; + .muli-semibold; + } + + & .o_product_circle{ + background-color: unset !important; + color: #000; + } + } +} +.comparator-popover{ + border-radius : 0; + max-width : 350px; + border : none; + + & .o_comparelist_products + { + .mb(5%); + } + + + & .popover-title{ + .muli-semibold; + padding: 10px 0; + width: 90%; + margin: 0px auto; + .size(16px); + .bg(#fff); + } + + & .o_product_row{ + + & h5{ + .size(13px); + .mt(0); + .mb(5px); + line-height: 145%; + + & strong{ + font-weight: normal !important; + } + } + & a.o_remove + { + vertical-align: sub; + color: #555; + } + } + & .text-danger + { + color:#B8B8B8 ; + } +} +.specification_table_section{ + width: 95% !important; + .left(); +} +.non-carousel{ + max-width: 300px; + display: inline-block; + .mr(10px); + vertical-align: top; +} +@media (min-width:800px){ + .non-carousel{ + & .compare_main{ + max-width: 300px; + display: inline-block; + .mr(10px); + vertical-align: top; + } + } +} +@media (max-width:800px){ + .compare_product_heading_left_div{ + float: unset !important; + width: 100%; + .pb(5%); + } + .compare_product_heading_right_div{ + float: unset !important; + width: 95%; + max-width: 100%; + margin: 0px auto; + } +} + +/* Specification table */ + +.specification_table_section{ + + & table{ + display: inline-block; + } + + & table tr td{ + border-top: unset !important; + .size(12px); + .mb(0); + .capitalize(); + line-height: 179%; + width : 25%; + .pl(2%); + } + & table tr td:first-child + { + color:#8F8F8F; + .uppercase(); + } +} +.o_product_feature_panel{ + display : none !important; +} +.compare_max_limit{ + visibility: hidden; + position : fixed; + bottom : 10px; + right : 10%; + background : @theme-color; + color : #fff; + .size(14px); + z-index : 100; + padding : 10px 15px; + + & i{ + color : #fff; + .pr(10px); + } +} diff --git a/ext/3rd-party-addons/clarico_compare/templates/assets.xml b/ext/3rd-party-addons/clarico_compare/templates/assets.xml new file mode 100755 index 00000000..c495065d --- /dev/null +++ b/ext/3rd-party-addons/clarico_compare/templates/assets.xml @@ -0,0 +1,12 @@ + + + + \ No newline at end of file diff --git a/ext/3rd-party-addons/clarico_compare/templates/template.xml b/ext/3rd-party-addons/clarico_compare/templates/template.xml new file mode 100755 index 00000000..893304fb --- /dev/null +++ b/ext/3rd-party-addons/clarico_compare/templates/template.xml @@ -0,0 +1,296 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ext/3rd-party-addons/clarico_compare_wishlist/__init__.py b/ext/3rd-party-addons/clarico_compare_wishlist/__init__.py new file mode 100755 index 00000000..e69de29b diff --git a/ext/3rd-party-addons/clarico_compare_wishlist/__manifest__.py b/ext/3rd-party-addons/clarico_compare_wishlist/__manifest__.py new file mode 100755 index 00000000..e4556170 --- /dev/null +++ b/ext/3rd-party-addons/clarico_compare_wishlist/__manifest__.py @@ -0,0 +1,25 @@ +{ + # Theme information + 'name' : 'Clarico Compare Wishlist', + 'category' : 'Website', + 'version' : '1.0', + 'summary': 'Add Products into Wishlist from Compare Page', + 'description': """""", + + # Dependencies + 'depends': [ + 'clarico_compare','clarico_wishlist', + ], + + # Views + 'data': [ + 'template/compare_theme_wishlist_template.xml', + ], + + # Author + 'author': 'Emipro Technologies Pvt. Ltd.', + 'website': 'http://www.emiprotechnologies.com', + + # Technical + 'installable': True, +} diff --git a/ext/3rd-party-addons/clarico_compare_wishlist/static/description/icon.png b/ext/3rd-party-addons/clarico_compare_wishlist/static/description/icon.png new file mode 100755 index 00000000..09fd34ab Binary files /dev/null and b/ext/3rd-party-addons/clarico_compare_wishlist/static/description/icon.png differ diff --git a/ext/3rd-party-addons/clarico_compare_wishlist/template/compare_theme_wishlist_template.xml b/ext/3rd-party-addons/clarico_compare_wishlist/template/compare_theme_wishlist_template.xml new file mode 100755 index 00000000..38d7aad7 --- /dev/null +++ b/ext/3rd-party-addons/clarico_compare_wishlist/template/compare_theme_wishlist_template.xml @@ -0,0 +1,24 @@ + + + + + + diff --git a/ext/3rd-party-addons/clarico_contact/__init__.py b/ext/3rd-party-addons/clarico_contact/__init__.py new file mode 100755 index 00000000..8b137891 --- /dev/null +++ b/ext/3rd-party-addons/clarico_contact/__init__.py @@ -0,0 +1 @@ + diff --git a/ext/3rd-party-addons/clarico_contact/__manifest__.py b/ext/3rd-party-addons/clarico_contact/__manifest__.py new file mode 100755 index 00000000..0daf4cda --- /dev/null +++ b/ext/3rd-party-addons/clarico_contact/__manifest__.py @@ -0,0 +1,26 @@ +{ + # Theme information + 'name' : 'Clarico Contact', + 'category' : 'Website', + 'version' : '1.0', + 'summary': 'Contact us Page', + 'description': """""", + + # Dependencies + 'depends': [ + 'website_crm','clarico_layout' + ], + + # Views + 'data': [ + 'template/template.xml', + 'template/assets.xml' + ], + + # Author + 'author': 'Emipro Technologies Pvt. Ltd.', + 'website': 'http://www.emiprotechnologies.com', + + # Technical + 'installable': True, +} diff --git a/ext/3rd-party-addons/clarico_contact/static/description/icon.png b/ext/3rd-party-addons/clarico_contact/static/description/icon.png new file mode 100755 index 00000000..09fd34ab Binary files /dev/null and b/ext/3rd-party-addons/clarico_contact/static/description/icon.png differ diff --git a/ext/3rd-party-addons/clarico_contact/static/src/less/contact.less b/ext/3rd-party-addons/clarico_contact/static/src/less/contact.less new file mode 100755 index 00000000..de8d24a3 --- /dev/null +++ b/ext/3rd-party-addons/clarico_contact/static/src/less/contact.less @@ -0,0 +1,101 @@ +.clarico_row{ + .common-div(); + + & .clarico_row_maxW{ + .block; + + & div.row{ + .ml(0px); + .mr(0px); + } + } + & form.container-fluid{ + .pl(0px); + .pr(0px); + } +} +.contact_summary +{ + p{ + line-height: 158%; + color: #8b8b8b; + } +} +.clabel{ + text-align:left !important; +} +.cinput{ + border-radius:0px !important +} +.col-md-4{ + .address{ + .div{ + .address{ + .div{ + .mb(4%); + } + } + } + } +} +.clarico_margin{ + .mt(12px); +} + +.s_website_form +{ + div{ + .pl(0); + .pr(0); + } + .form-group + { + .mb(5%); + .mr(0%); + .ml(0%); + + + label + { + text-align: left; + color: #646464; + .size(13px); + .uppercase(); + padding: 0; + .mt(10px); + .pt(5px); + } + + input.form-control,textarea.form-control + { + border-radius: 0; + border: none; + box-shadow: unset; + border-bottom: 1px solid #777; + + &:focus{ + border-bottom: 1px solid #ccc; + } + } + + textarea.form-control + { + border-radius: 0; + .p(0); + + &:focus{ + border-bottom: 1px solid #ccc; + } + } + } +} + + +@media (max-width:600px) +{ + .ch_padding + { + .size(22px); + } + +} diff --git a/ext/3rd-party-addons/clarico_contact/template/assets.xml b/ext/3rd-party-addons/clarico_contact/template/assets.xml new file mode 100755 index 00000000..59404c5a --- /dev/null +++ b/ext/3rd-party-addons/clarico_contact/template/assets.xml @@ -0,0 +1,9 @@ + + + + \ No newline at end of file diff --git a/ext/3rd-party-addons/clarico_contact/template/template.xml b/ext/3rd-party-addons/clarico_contact/template/template.xml new file mode 100755 index 00000000..358fde99 --- /dev/null +++ b/ext/3rd-party-addons/clarico_contact/template/template.xml @@ -0,0 +1,120 @@ + + + + + + + + + diff --git a/ext/3rd-party-addons/clarico_customer_carousel/__init__.py b/ext/3rd-party-addons/clarico_customer_carousel/__init__.py new file mode 100755 index 00000000..29981cd4 --- /dev/null +++ b/ext/3rd-party-addons/clarico_customer_carousel/__init__.py @@ -0,0 +1,2 @@ +from . import controllers +from . import model diff --git a/ext/3rd-party-addons/clarico_customer_carousel/__manifest__.py b/ext/3rd-party-addons/clarico_customer_carousel/__manifest__.py new file mode 100755 index 00000000..fc405b40 --- /dev/null +++ b/ext/3rd-party-addons/clarico_customer_carousel/__manifest__.py @@ -0,0 +1,28 @@ +{ + # Theme information + 'name' : 'Clarico Customer Carousel', + 'category' : 'Website', + 'version' : '1.0', + 'summary': 'Showcase your Customers using clarico Customer Carousel', + 'description': """""", + + # Dependencies + 'depends': [ + 'clarico_carousel','clarico_snippets' + ], + + # Views + 'data': [ + 'templates/assets.xml', + 'templates/customer_carousel_snippet.xml', + 'templates/customer_carousel_snippent_option.xml', + 'view/res_partner.xml' + ], + + # Author + 'author': 'Emipro Technologies Pvt. Ltd.', + 'website': 'http://www.emiprotechnologies.com', + + # Technical + 'installable': True, +} diff --git a/ext/3rd-party-addons/clarico_customer_carousel/controllers/__init__.py b/ext/3rd-party-addons/clarico_customer_carousel/controllers/__init__.py new file mode 100755 index 00000000..deec4a8b --- /dev/null +++ b/ext/3rd-party-addons/clarico_customer_carousel/controllers/__init__.py @@ -0,0 +1 @@ +from . import main \ No newline at end of file diff --git a/ext/3rd-party-addons/clarico_customer_carousel/controllers/main.py b/ext/3rd-party-addons/clarico_customer_carousel/controllers/main.py new file mode 100755 index 00000000..605ab73d --- /dev/null +++ b/ext/3rd-party-addons/clarico_customer_carousel/controllers/main.py @@ -0,0 +1,16 @@ +from odoo import http +from odoo.http import request +from odoo import SUPERUSER_ID +from odoo.tools.safe_eval import safe_eval + +class claricoCustomerCarousel(http.Controller): + + @http.route(['/customer_carousel_snippets/render'], type='json', auth='public', website=True) + def render_customer_carousel(self,template=None): + if template: + customer_rc = request.env['res.partner'].sudo().search([('is_website_published','=',True)]) + values={ + 'objects':customer_rc, + } + return request.env.ref(template).render(values) + diff --git a/ext/3rd-party-addons/clarico_customer_carousel/model/__init__.py b/ext/3rd-party-addons/clarico_customer_carousel/model/__init__.py new file mode 100755 index 00000000..91fed54d --- /dev/null +++ b/ext/3rd-party-addons/clarico_customer_carousel/model/__init__.py @@ -0,0 +1 @@ +from . import res_partner diff --git a/ext/3rd-party-addons/clarico_customer_carousel/model/res_partner.py b/ext/3rd-party-addons/clarico_customer_carousel/model/res_partner.py new file mode 100755 index 00000000..5cfce5fe --- /dev/null +++ b/ext/3rd-party-addons/clarico_customer_carousel/model/res_partner.py @@ -0,0 +1,7 @@ +from odoo import models, fields, api, _ + +class ResPartner(models.Model): + _inherit="res.partner" + + review=fields.Text("Review") + is_website_published=fields.Boolean("Website Published") diff --git a/ext/3rd-party-addons/clarico_customer_carousel/static/description/icon.png b/ext/3rd-party-addons/clarico_customer_carousel/static/description/icon.png new file mode 100755 index 00000000..09fd34ab Binary files /dev/null and b/ext/3rd-party-addons/clarico_customer_carousel/static/description/icon.png differ diff --git a/ext/3rd-party-addons/clarico_customer_carousel/static/src/img/slider_controls_left.png b/ext/3rd-party-addons/clarico_customer_carousel/static/src/img/slider_controls_left.png new file mode 100755 index 00000000..c022a2f8 Binary files /dev/null and b/ext/3rd-party-addons/clarico_customer_carousel/static/src/img/slider_controls_left.png differ diff --git a/ext/3rd-party-addons/clarico_customer_carousel/static/src/img/slider_controls_right.png b/ext/3rd-party-addons/clarico_customer_carousel/static/src/img/slider_controls_right.png new file mode 100755 index 00000000..57103947 Binary files /dev/null and b/ext/3rd-party-addons/clarico_customer_carousel/static/src/img/slider_controls_right.png differ diff --git a/ext/3rd-party-addons/clarico_customer_carousel/static/src/img/snippet.jpg b/ext/3rd-party-addons/clarico_customer_carousel/static/src/img/snippet.jpg new file mode 100755 index 00000000..a11b43d8 Binary files /dev/null and b/ext/3rd-party-addons/clarico_customer_carousel/static/src/img/snippet.jpg differ diff --git a/ext/3rd-party-addons/clarico_customer_carousel/static/src/js/customer_carousel_snippet_backendend.js b/ext/3rd-party-addons/clarico_customer_carousel/static/src/js/customer_carousel_snippet_backendend.js new file mode 100755 index 00000000..3ba74385 --- /dev/null +++ b/ext/3rd-party-addons/clarico_customer_carousel/static/src/js/customer_carousel_snippet_backendend.js @@ -0,0 +1,62 @@ +odoo.define('website.snippets.options', function (require) { +'use strict'; +require('web.dom_ready') +var ajax = require("web.ajax"); +var core = require("web.core"); +var Dialog = require("web.Dialog"); +var editor = require("web_editor.editor"); +var options = require('web_editor.snippets.options'); +var snippet_editor = require('web_editor.snippet.editor'); +var website = require('website.website'); + + +var _t = core._t; +var qweb = core.qweb; + +snippet_editor.Class.include({ + _get_snippet_url: function () { + return '/website/snippets'; + } +}); + +options.registry.js_get_customer = options.Class.extend({ + drop_and_build_snippet: function(){ + var self = this; + + if (!self.$target.data('snippet-view')) { + this.$target.data("snippet-view", new website.snippet.animationRegistry.js_get_customer(this.$target)); + } + }, + clean_for_save:function(){ + this.$target.empty(); + } +}); + +options.registry.js_get_style = options.Class.extend({ + start:function(){ + var self = this; + setTimeout(function(){ + var ul = self.$overlay.find(".snippet-option-js_get_style > ul"); + if (self.$target.attr("data-style")) { + var limit = self.$target.attr("data-style"); + ul.find('li[data-style="' + limit + '"]').addClass("active"); + } else { + ul.find('li[data-style="1"]').addClass("active"); + } + },100) + }, + style:function(previewMode, value){ + console.log("customer") + var self = this + var value = parseInt(value); + this.$target.attr("data-style",value) + .data("style",value) + .data('snippet-view').redrow(true); + }, + _setActive: function () { + this.$el.find('li[data-style]').removeClass('active') + .filter('li[data-style=' + this.$target.attr('data-style') + ']').addClass('active'); + } +}); + +}) diff --git a/ext/3rd-party-addons/clarico_customer_carousel/static/src/js/customer_carousel_snippet_frontend.js b/ext/3rd-party-addons/clarico_customer_carousel/static/src/js/customer_carousel_snippet_frontend.js new file mode 100755 index 00000000..28e2c65f --- /dev/null +++ b/ext/3rd-party-addons/clarico_customer_carousel/static/src/js/customer_carousel_snippet_frontend.js @@ -0,0 +1,76 @@ +odoo.define('customer.snippets.animation', function (require) { +'use strict'; +// First Execute +var ajax = require('web.ajax'); +var core = require('web.core'); +var base = require('web_editor.base'); +var animation = require('website.content.snippets.animation'); +var qweb = core.qweb; +/*-------------------------------------------------------------------------*/ +animation.registry.js_get_customer = animation.Class.extend({ + selector : ".js_get_customer", + + start: function(){ + this.redrow(); + }, + stop: function(){ + this.clean(); + }, + + redrow: function(debug){ + this.clean(debug); + this.build(debug); + }, + + clean:function(debug){ + this.$target.empty(); + }, + + build: function(debug) + { + var self = this, + style = self.$target.data("style"); + self.$target.attr("contenteditable","False"); + var json_url = '/customer_carousel_snippets/render'; + var template = "clarico_customer_carousel.customer_carousel_snippet_data_style_1"; + if(style == 1) + { + template = "clarico_customer_carousel.customer_carousel_snippet_data_style_1"; + } + else if(style == 2) + { + template = "clarico_customer_carousel.customer_carousel_snippet_data_style_2"; + } + else if(style == 3) + { + template = "clarico_customer_carousel.customer_carousel_snippet_data_style_3"; + } + else if(style == 4) + { + template = "clarico_customer_carousel.customer_carousel_snippet_data_style_4"; + } + else if(style == 5) + { + template = "clarico_customer_carousel.customer_carousel_snippet_data_style_5"; + } + else + { + template = "clarico_customer_carousel.customer_carousel_snippet_data_style_1"; + } + + ajax.jsonRpc(json_url, 'call', {'template':template}).then(function(objects) { + $(objects).appendTo(self.$target); + customer_carousel(); + }).then(function(){ + self.loading(debug); + }).fail(function(e) { + return; + }); + }, + + loading: function(debug){ + //function to hook things up after build + } +}); + +}); diff --git a/ext/3rd-party-addons/clarico_customer_carousel/static/src/js/slider_custom.js b/ext/3rd-party-addons/clarico_customer_carousel/static/src/js/slider_custom.js new file mode 100755 index 00000000..051e35c9 --- /dev/null +++ b/ext/3rd-party-addons/clarico_customer_carousel/static/src/js/slider_custom.js @@ -0,0 +1,106 @@ +function customer_carousel(){ + $('.customer_1_subdiv > .owl-carousel').owlCarousel({ + margin:10, + nav:true, + autoplay:true, + autoplayTimeout:3000, + responsiveClass:true, + + responsive:{ + 0:{ + items:1 + }, + 600:{ + items:2 + }, + 1000:{ + items:3 + } + } + }); + $('.customer_2_sub > .owl-carousel').owlCarousel({ + loop:true, + margin:10, + nav:true, + autoplay:true, + autoplayTimeout:3000, + responsiveClass:true, + + + responsive:{ + 0:{ + items:1 + }, + 600:{ + items:1 + }, + 1000:{ + items:1 + } + } + }); + $('.customer3_max_width > .owl-carousel').owlCarousel({ + loop:true, + margin:10, + nav:true, + autoplay:true, + autoplayTimeout:3000, + responsiveClass:true, + + responsive:{ + 0:{ + items:1 + }, + 600:{ + items:1 + }, + 1000:{ + items:1 + } + } + }); + + $('.customer_4_main_div > .owl-carousel').owlCarousel({ + loop:true, + margin:10, + nav:true, + autoplay:true, + autoplayTimeout:3000, + responsiveClass:true, + + responsive:{ + 0:{ + items:1 + }, + 600:{ + items:2 + }, + 1000:{ + items:2 + } + } + }); + $('.ts5_review_ind > .owl-carousel').owlCarousel({ + loop:true, + margin:10, + nav:true, + autoplay:true, + autoplayTimeout:3000, + responsiveClass:true, + + responsive:{ + 0:{ + items:1 + }, + 600:{ + items:1 + }, + 1000:{ + items:1 + } + } + }); +} + + + diff --git a/ext/3rd-party-addons/clarico_customer_carousel/static/src/less/customer.less b/ext/3rd-party-addons/clarico_customer_carousel/static/src/less/customer.less new file mode 100755 index 00000000..28b7bf85 --- /dev/null +++ b/ext/3rd-party-addons/clarico_customer_carousel/static/src/less/customer.less @@ -0,0 +1,487 @@ +.customer_img +{ + width:auto !important; + max-height: 170px; +} + +/*--------------customer review style 1-----------------------*/ + +.mb5pc +{ + .mb(5%); +} + +.c_review_ind +{ + display:block; + text-align:center; + border:1px solid #e5e5e5; + padding:15px; + margin:2%; +} + +.customer_img_div +{ + text-align:center; + + img + { + width:auto !important; + max-height:110px; + border-radius:100%; + } +} +.customer_name +{ + text-align:center; + + span + { + .muli-bold(); + .uppercase(); + .size(15px); + letter-spacing:1px; + color:#5f5f5f; + + } +} +.customer_job_profile +{ + text-align:right; + .capitalize(); + color:#5f5f5f; +} +.company_img +{ + display:inline-block; + width:auto; + vertical-align: bottom; + + img + { + display: block; + width: auto; + max-width: 50px; + } +} +.company_name,.company_city +{ + display: inline-block; + width: auto; + vertical-align: super; + color:#5f5f5f; + + span + { + .capitalize(); + color:#5f5f5f; + .pl(5px); + } +} +.company_data +{ + text-align:left; +} +/*-----------------customer review style 2 --------------------*/ +.customer_2_review_block_main +{ + .bg(#f7f7f7); + padding: 5% 0; +} +.customer_detail_left +{ + display:inline-block; + width:39%; +} +.customer_review_text_right +{ + display:inline-block; + width:60%; + vertical-align: top; + .mt(5%); +} +.customer_2_img_div +{ + width:39%; + display:inline-block; +} +.customer_2_name_job_div +{ + width:60%; + display:inline-block; + vertical-align: top; + margin-top: 25px; + padding: 5%; + + .c2_name + { + .size(25px); + line-height: 140%; + .mb(5px); + display: block; + color: @theme-color; + .muli-semibold(); + .capitalize(); + } +} +.c2_job { + font-size: 15px; + color: #666; + .capitalize(); +} +.c2_quote_icon +{ + font-size: 45px; + color: #e1e1e1; + display: inline-block; + width: 7%; + vertical-align: top; + position: relative; + top: -20px; + .mr(10px); +} +.cust2_review_span +{ + .muli-light(); + .size(14px); + color: #525252; + line-height: 176%; + display: inline-block; + width: 90%; +} +/*--------------customer review style 3-----------------------*/ + +.customer3_max_width +{ + display: block; + max-width: 800px; + margin: 0px auto; + width: 70%; + .mb(7%); +} +.cust_review_span +{ + .muli-light(); + .size(14px); + color: #525252; + text-align: center; + line-height: 176%; + +} +.customer_review_2 +{ + .mb(10px); + display:inline-block; + width:93%; +} +.customer_name_ts2 +{ + .capitalize(); + .size(15px); + color: #5f5f5f; + display:inline-block; + width:95%; + .right(); + + span + { + .pl(5px); + } +} +.quote_left +{ + .size(25px); + color:#e1e1e1; + display:block; + .left(); + width:7%; + + i + { + vertical-align: text-top; + } +} + +/*--------------customer review style 4-----------------------*/ + +.customer_4_review_block_main +{ + margin: 0 auto 20px; + padding: 20px; + position: relative; + text-align: center; +} +.customer_review_4 +{ + background: #f7f7f7; + font-size: 16px; + font-weight: 300; + margin: 0 0 23px; + padding: 20px; + position: relative; + +} +.customer_review_4::before +{ + border-left: 31px solid rgba(0, 0, 0, 0); + border-right: 30px solid rgba(0, 0, 0, 0); + border-top: 45px solid #f7f7f7; + bottom: -24px; + content: ""; + height: 0; + left: 20px; + position: absolute; + width: 0; +} +.c4_customer_info_main +{ + .common-div; + text-align: left; + .mt(3%); +} +.c4_img_div +{ + display: inline-block; + width: auto; + padding: 0 15px; +} +.c4_info_div +{ + display: inline-block; + width: auto; + vertical-align: top; + padding: 0 15px; + .mt(5%); +} +.c4_name +{ + .muli-semibold(); + color:@theme-color; + .size(18px); + .capitalize(); + line-height: 185%; +} +.c4_job +{ + color: #666; + .capitalize(); +} +.border_style.top.left +{ + left: 0px; +} +.border_style.top { + top: 0; +} +.border_style { + position: absolute; + + span { + display: block; + position: relative; + } +} +.border_style.top.right +{ + right: 2px; +} +.border_style.bottom { + bottom: -1px; +} +.border_style.bottom.left { + left: 0px; +} +.border_style.bottom.right { + right: 2px; +} +.border_style span::before, .border_style span::after { + background-color: @theme-color; + content: ""; + display: block; + height: 1px; + position: absolute; + width: 20px; +} +.border_style span::after { + height: 20px; + left: 0; + width: 1px; +} +.border_style span::before { + top: 0px; +} +.border_style.bottom.right span::after { + bottom: 0; +} +.border_style.bottom.left span::after { + bottom: 0; +} +.border_style.top.right span::before { + left: -20px; +} +.border_style.bottom.right span::before { + right: 0; +} +/*--------------customer review style 5-----------------------*/ +.customer_name_ts4 +{ + .capitalize(); + .size(14px); + color: #5f5f5f; + .mb(5px); + + span + { + .pl(5px); + } +} +.customer_company_ts4 +{ + .capitalize(); + .size(13px); + color: #5f5f5f; +} +.ts4_comment_heading +{ + .size(16px); + color: #575757; + .muli-semibold(); + line-height:24px; + .uppercase(); + margin:0; +} +.s4_para_detail +{ + color:#727272; + line-height: 176%; + text-align:left; +} + +.ts5_review_img_left +{ + display:block; + float:left; + width:20%; + +} +.ts5_name_n_company +{ + display:inline-block; + width:auto; + vertical-align:middle; +} +.ts5_customer_img +{ + display:inline-block; + width:auto; + vertical-align:middle; + + .customer_img_div + { + text-align:center; + + img + { + width:auto !important; + max-height:60px; + border-radius:100%; + } + } +} +.ts5_review_text_right +{ + //display:block; + //margin:0px auto; + //width:80%; +} +.ts5_review_ind +{ + display:block; + width:90%; + max-width:900px; + margin:0px auto; +} + +.ts5_quote_left + { + display:inline-block; + position:absolute; + .size(30px); + color:#e5e5e5; + top:10px; + left:5%; + z-index:-1; + } + .review_main_right + { + display:inline-block; + width:90%; + text-align:left; + .right(); + } +.ts5_customer_detail_section { + width: 90% !important; + float: right; +} + + + + +@media (max-width: 1000px) +{ + .customer_2_img_div + { + width: 100%; + } + .customer_2_name_job_div + { + width: 100%; + text-align: center; + } +} +@media(max-width:800px) +{ + .customer_2_name_job_div { + width: 59%; + } + .customer_2_img_div { + width: 40%; + } + .customer_detail_left { + width:100%; + } + .customer_review_text_right { + + width:100%; + } + +} +@media(max-width:600px) +{ + + .cust2_review_span + { + float:right; + } + .c2_quote_icon + { + .size(35px); + .mr(0); + } + +} + +@media(max-width:500px) +{ + .customer_2_name_job_div { + width: 100%; + } + .customer_2_img_div { + width: 100%; + } + .c2_quote_icon + { + .size(25px); + } + +} diff --git a/ext/3rd-party-addons/clarico_customer_carousel/templates/assets.xml b/ext/3rd-party-addons/clarico_customer_carousel/templates/assets.xml new file mode 100755 index 00000000..e0f73547 --- /dev/null +++ b/ext/3rd-party-addons/clarico_customer_carousel/templates/assets.xml @@ -0,0 +1,26 @@ + + + + + diff --git a/ext/3rd-party-addons/clarico_customer_carousel/templates/customer_carousel_snippent_option.xml b/ext/3rd-party-addons/clarico_customer_carousel/templates/customer_carousel_snippent_option.xml new file mode 100755 index 00000000..8ce1145d --- /dev/null +++ b/ext/3rd-party-addons/clarico_customer_carousel/templates/customer_carousel_snippent_option.xml @@ -0,0 +1,33 @@ + + + + diff --git a/ext/3rd-party-addons/clarico_customer_carousel/templates/customer_carousel_snippet.xml b/ext/3rd-party-addons/clarico_customer_carousel/templates/customer_carousel_snippet.xml new file mode 100755 index 00000000..f3998278 --- /dev/null +++ b/ext/3rd-party-addons/clarico_customer_carousel/templates/customer_carousel_snippet.xml @@ -0,0 +1,230 @@ + + + + + + + + + + + + + + + + + + diff --git a/ext/3rd-party-addons/clarico_customer_carousel/view/res_partner.xml b/ext/3rd-party-addons/clarico_customer_carousel/view/res_partner.xml new file mode 100755 index 00000000..66b316ee --- /dev/null +++ b/ext/3rd-party-addons/clarico_customer_carousel/view/res_partner.xml @@ -0,0 +1,15 @@ + + + + res.partner.form.review.inherit + res.partner + + + + + + + + + + diff --git a/ext/3rd-party-addons/clarico_customize_color/__init__.py b/ext/3rd-party-addons/clarico_customize_color/__init__.py new file mode 100755 index 00000000..7c68785e --- /dev/null +++ b/ext/3rd-party-addons/clarico_customize_color/__init__.py @@ -0,0 +1 @@ +# -*- coding: utf-8 -*- \ No newline at end of file diff --git a/ext/3rd-party-addons/clarico_customize_color/__manifest__.py b/ext/3rd-party-addons/clarico_customize_color/__manifest__.py new file mode 100755 index 00000000..8db80f6a --- /dev/null +++ b/ext/3rd-party-addons/clarico_customize_color/__manifest__.py @@ -0,0 +1,32 @@ +{ + # Theme information + + 'name': 'Clarico Customize Color', + 'version': '11.0', + 'category': 'website', + 'summary': 'Custom Background Color to any section', + 'description': """""", + + # Dependencies + + 'depends': ['clarico_layout'], + + # Views + + 'data': [ + 'template/assets.xml', + 'template/template.xml', + ], + + # Author + + 'author': 'Emipro Technologies Pvt. Ltd.', + 'website': 'http://www.emiprotechnologies.com', + 'maintainer': 'Emipro Technologies Pvt. Ltd.', + + + # Technical + + 'installable': True, + 'auto_install': False, +} diff --git a/ext/3rd-party-addons/clarico_customize_color/static/description/icon.png b/ext/3rd-party-addons/clarico_customize_color/static/description/icon.png new file mode 100755 index 00000000..09fd34ab Binary files /dev/null and b/ext/3rd-party-addons/clarico_customize_color/static/description/icon.png differ diff --git a/ext/3rd-party-addons/clarico_customize_color/static/src/img/color_icon.png b/ext/3rd-party-addons/clarico_customize_color/static/src/img/color_icon.png new file mode 100755 index 00000000..e7ab14d9 Binary files /dev/null and b/ext/3rd-party-addons/clarico_customize_color/static/src/img/color_icon.png differ diff --git a/ext/3rd-party-addons/clarico_customize_color/static/src/js/snippet_bg_color_js.js b/ext/3rd-party-addons/clarico_customize_color/static/src/js/snippet_bg_color_js.js new file mode 100755 index 00000000..c81ffe0f --- /dev/null +++ b/ext/3rd-party-addons/clarico_customize_color/static/src/js/snippet_bg_color_js.js @@ -0,0 +1,75 @@ +odoo.define('clarico_customize_color.snippet_bg_color_js',function(require) { +'use strict'; + + var core = require('web.core'); + var options = require('web_editor.snippets.options'); + var wUtils = require('website.utils'); + var Utils = require('web.utils'); + var qweb = core.qweb; + var _t = core._t; + var ajax = require("web.ajax"); + + var color_global; + +options.registry.set_custom_color = options.Class.extend({ + + popup_template_id: "editor_new_snippet_background_color", + popup_title: _t("Set Background Color"), + + start: function(){ + var self = this; + + }, + set_color: function(type,value) { + var self = this; + + var def = wUtils.prompt({ + 'id': this.popup_template_id, + 'window_title': this.popup_title, + 'input': "Add Color", + 'init': function (color,dialog) { + var $group = this.$dialog.find('div.form-group'); + $group.find('input').attr({ + "placeholder":"Format : #000000 or rgb(0,0,0)", + }) + $group.after("
") + var $clr_div = this.$dialog.find('div.color_before'); + var cs = document.cookie.split(';'); + for(var i=0;i") + + } + } + dialog.on('click', '.btn-final', function () { + $group.find('input').val($(this).attr('data-color')) + }) + } + }); + def.then(function (color,$dialog) { + + var isValidColor = /^(#[0-9a-f]{3}|#(?:[0-9a-f]{2}){2,4}|(rgb|hsl)a?\((-?\d+%?[,\s]+){2,3}\s*[\d\.]+%?\))/i.test(color) + + if(isValidColor){ + color_global = color; + self.$target.addClass('custom') + Utils.set_cookie('ept'+color,color,60*60*24) + + }else{ + alert("Invalid Color Code! Please enter correct format.") + self.set_color('click'); + } + + + }) + return def; + }, + cleanForSave:function(){ + this.$target.closest('.custom').css('background-color',color_global) + } + }); +}); + diff --git a/ext/3rd-party-addons/clarico_customize_color/static/src/less/snippet_bg_color.less b/ext/3rd-party-addons/clarico_customize_color/static/src/less/snippet_bg_color.less new file mode 100755 index 00000000..3dda13e4 --- /dev/null +++ b/ext/3rd-party-addons/clarico_customize_color/static/src/less/snippet_bg_color.less @@ -0,0 +1,7 @@ +.colors_container +{ + display:block; + width:90%; + margin:0px auto; + padding:20px; +} \ No newline at end of file diff --git a/ext/3rd-party-addons/clarico_customize_color/template/assets.xml b/ext/3rd-party-addons/clarico_customize_color/template/assets.xml new file mode 100755 index 00000000..13e1aace --- /dev/null +++ b/ext/3rd-party-addons/clarico_customize_color/template/assets.xml @@ -0,0 +1,16 @@ + + + + + + + + diff --git a/ext/3rd-party-addons/clarico_employee_carousel/templates/employee_carousel_option.xml b/ext/3rd-party-addons/clarico_employee_carousel/templates/employee_carousel_option.xml new file mode 100755 index 00000000..c8907cac --- /dev/null +++ b/ext/3rd-party-addons/clarico_employee_carousel/templates/employee_carousel_option.xml @@ -0,0 +1,30 @@ + + + + + diff --git a/ext/3rd-party-addons/clarico_employee_carousel/templates/employee_carousel_snippet.xml b/ext/3rd-party-addons/clarico_employee_carousel/templates/employee_carousel_snippet.xml new file mode 100755 index 00000000..4e1fd985 --- /dev/null +++ b/ext/3rd-party-addons/clarico_employee_carousel/templates/employee_carousel_snippet.xml @@ -0,0 +1,178 @@ + + + + + + + + + + + + diff --git a/ext/3rd-party-addons/clarico_employee_carousel/view/hr_employee.xml b/ext/3rd-party-addons/clarico_employee_carousel/view/hr_employee.xml new file mode 100755 index 00000000..7be11a9f --- /dev/null +++ b/ext/3rd-party-addons/clarico_employee_carousel/view/hr_employee.xml @@ -0,0 +1,22 @@ + + + + hr.employee.form.inherit_accounts + hr.employee + + + + + + + + + + + + + + + + + diff --git a/ext/3rd-party-addons/clarico_expertise/__init__.py b/ext/3rd-party-addons/clarico_expertise/__init__.py new file mode 100755 index 00000000..0650744f --- /dev/null +++ b/ext/3rd-party-addons/clarico_expertise/__init__.py @@ -0,0 +1 @@ +from . import models diff --git a/ext/3rd-party-addons/clarico_expertise/__manifest__.py b/ext/3rd-party-addons/clarico_expertise/__manifest__.py new file mode 100755 index 00000000..eccc9ea8 --- /dev/null +++ b/ext/3rd-party-addons/clarico_expertise/__manifest__.py @@ -0,0 +1,29 @@ +{ + # Theme information + 'name' : 'clarico Expertise', + 'category' : 'Website', + 'version' : '1.0', + 'summary': 'Expertise Snippet for Landing Pages', + 'description': """""", + + # Dependencies + 'depends': [ + 'website_hr' + ], + + # Views + 'data': [ + 'security/ir.model.access.csv', + 'templates/template.xml', + 'templates/assets.xml', + 'views/res_company.xml', + ], + + # Author + 'author': 'Emipro Technologies Pvt. Ltd.', + 'website': 'http://www.emiprotechnologies.com', + + # Technical + 'installable': True, +} + diff --git a/ext/3rd-party-addons/clarico_expertise/models/__init__.py b/ext/3rd-party-addons/clarico_expertise/models/__init__.py new file mode 100755 index 00000000..3fa444ee --- /dev/null +++ b/ext/3rd-party-addons/clarico_expertise/models/__init__.py @@ -0,0 +1,3 @@ +from . import website_expertise +from . import res_company + diff --git a/ext/3rd-party-addons/clarico_expertise/models/res_company.py b/ext/3rd-party-addons/clarico_expertise/models/res_company.py new file mode 100755 index 00000000..c0391b98 --- /dev/null +++ b/ext/3rd-party-addons/clarico_expertise/models/res_company.py @@ -0,0 +1,6 @@ +from odoo import models,fields + +class ResCompany(models.Model): + _inherit="res.company" + + expertise_ids=fields.One2many('website.expertise','company_id','Expertise ids') \ No newline at end of file diff --git a/ext/3rd-party-addons/clarico_expertise/models/website_expertise.py b/ext/3rd-party-addons/clarico_expertise/models/website_expertise.py new file mode 100755 index 00000000..dc2e5e77 --- /dev/null +++ b/ext/3rd-party-addons/clarico_expertise/models/website_expertise.py @@ -0,0 +1,8 @@ +from odoo import models,fields + +class ModumExpertise(models.Model): + _name = "website.expertise" + + name=fields.Char("Name") + expertise=fields.Integer("Expertise") + company_id=fields.Many2one('res.company', 'Company') \ No newline at end of file diff --git a/ext/3rd-party-addons/clarico_expertise/security/ir.model.access.csv b/ext/3rd-party-addons/clarico_expertise/security/ir.model.access.csv new file mode 100755 index 00000000..42d2d762 --- /dev/null +++ b/ext/3rd-party-addons/clarico_expertise/security/ir.model.access.csv @@ -0,0 +1,3 @@ +id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink +read_access_website_expertise,model_website_expertise,model_website_expertise,,1,1,1,1 + diff --git a/ext/3rd-party-addons/clarico_expertise/static/description/icon.png b/ext/3rd-party-addons/clarico_expertise/static/description/icon.png new file mode 100755 index 00000000..09fd34ab Binary files /dev/null and b/ext/3rd-party-addons/clarico_expertise/static/description/icon.png differ diff --git a/ext/3rd-party-addons/clarico_expertise/static/src/img/bcp6.jpg b/ext/3rd-party-addons/clarico_expertise/static/src/img/bcp6.jpg new file mode 100755 index 00000000..10df734b Binary files /dev/null and b/ext/3rd-party-addons/clarico_expertise/static/src/img/bcp6.jpg differ diff --git a/ext/3rd-party-addons/clarico_expertise/static/src/js/custom.js b/ext/3rd-party-addons/clarico_expertise/static/src/js/custom.js new file mode 100755 index 00000000..5b4b779e --- /dev/null +++ b/ext/3rd-party-addons/clarico_expertise/static/src/js/custom.js @@ -0,0 +1,11 @@ +$(document).ready(function(){ + + $('.progressbar2').progressBar({ + shadow : true, + percentage : true, + animation : true, + barColor : "#000000", + }); + + +}); diff --git a/ext/3rd-party-addons/clarico_expertise/static/src/js/modernizr.js b/ext/3rd-party-addons/clarico_expertise/static/src/js/modernizr.js new file mode 100755 index 00000000..49a636a4 --- /dev/null +++ b/ext/3rd-party-addons/clarico_expertise/static/src/js/modernizr.js @@ -0,0 +1,4 @@ +/* Modernizr 2.8.3 (Custom Build) | MIT & BSD + * Build: http://modernizr.com/download/#-fontface-backgroundsize-borderimage-borderradius-boxshadow-flexbox-hsla-multiplebgs-opacity-rgba-textshadow-cssanimations-csscolumns-generatedcontent-cssgradients-cssreflections-csstransforms-csstransforms3d-csstransitions-applicationcache-canvas-canvastext-draganddrop-hashchange-history-audio-video-indexeddb-input-inputtypes-localstorage-postmessage-sessionstorage-websockets-websqldatabase-webworkers-geolocation-inlinesvg-smil-svg-svgclippaths-touch-webgl-shiv-cssclasses-addtest-prefixed-teststyles-testprop-testallprops-hasevent-prefixes-domprefixes-load + */ +;window.Modernizr=function(a,b,c){function C(a){j.cssText=a}function D(a,b){return C(n.join(a+";")+(b||""))}function E(a,b){return typeof a===b}function F(a,b){return!!~(""+a).indexOf(b)}function G(a,b){for(var d in a){var e=a[d];if(!F(e,"-")&&j[e]!==c)return b=="pfx"?e:!0}return!1}function H(a,b,d){for(var e in a){var f=b[a[e]];if(f!==c)return d===!1?a[e]:E(f,"function")?f.bind(d||b):f}return!1}function I(a,b,c){var d=a.charAt(0).toUpperCase()+a.slice(1),e=(a+" "+p.join(d+" ")+d).split(" ");return E(b,"string")||E(b,"undefined")?G(e,b):(e=(a+" "+q.join(d+" ")+d).split(" "),H(e,b,c))}function J(){e.input=function(c){for(var d=0,e=c.length;d',a,""].join(""),l.id=h,(m?l:n).innerHTML+=f,n.appendChild(l),m||(n.style.background="",n.style.overflow="hidden",k=g.style.overflow,g.style.overflow="hidden",g.appendChild(n)),i=c(l,a),m?l.parentNode.removeChild(l):(n.parentNode.removeChild(n),g.style.overflow=k),!!i},z=function(){function d(d,e){e=e||b.createElement(a[d]||"div"),d="on"+d;var f=d in e;return f||(e.setAttribute||(e=b.createElement("div")),e.setAttribute&&e.removeAttribute&&(e.setAttribute(d,""),f=E(e[d],"function"),E(e[d],"undefined")||(e[d]=c),e.removeAttribute(d))),e=null,f}var a={select:"input",change:"input",submit:"form",reset:"form",error:"img",load:"img",abort:"img"};return d}(),A={}.hasOwnProperty,B;!E(A,"undefined")&&!E(A.call,"undefined")?B=function(a,b){return A.call(a,b)}:B=function(a,b){return b in a&&E(a.constructor.prototype[b],"undefined")},Function.prototype.bind||(Function.prototype.bind=function(b){var c=this;if(typeof c!="function")throw new TypeError;var d=w.call(arguments,1),e=function(){if(this instanceof e){var a=function(){};a.prototype=c.prototype;var f=new a,g=c.apply(f,d.concat(w.call(arguments)));return Object(g)===g?g:f}return c.apply(b,d.concat(w.call(arguments)))};return e}),s.flexbox=function(){return I("flexWrap")},s.canvas=function(){var a=b.createElement("canvas");return!!a.getContext&&!!a.getContext("2d")},s.canvastext=function(){return!!e.canvas&&!!E(b.createElement("canvas").getContext("2d").fillText,"function")},s.webgl=function(){return!!a.WebGLRenderingContext},s.touch=function(){var c;return"ontouchstart"in a||a.DocumentTouch&&b instanceof DocumentTouch?c=!0:y(["@media (",n.join("touch-enabled),("),h,")","{#modernizr{top:9px;position:absolute}}"].join(""),function(a){c=a.offsetTop===9}),c},s.geolocation=function(){return"geolocation"in navigator},s.postmessage=function(){return!!a.postMessage},s.websqldatabase=function(){return!!a.openDatabase},s.indexedDB=function(){return!!I("indexedDB",a)},s.hashchange=function(){return z("hashchange",a)&&(b.documentMode===c||b.documentMode>7)},s.history=function(){return!!a.history&&!!history.pushState},s.draganddrop=function(){var a=b.createElement("div");return"draggable"in a||"ondragstart"in a&&"ondrop"in a},s.websockets=function(){return"WebSocket"in a||"MozWebSocket"in a},s.rgba=function(){return C("background-color:rgba(150,255,150,.5)"),F(j.backgroundColor,"rgba")},s.hsla=function(){return C("background-color:hsla(120,40%,100%,.5)"),F(j.backgroundColor,"rgba")||F(j.backgroundColor,"hsla")},s.multiplebgs=function(){return C("background:url(https://),url(https://),red url(https://)"),/(url\s*\(.*?){3}/.test(j.background)},s.backgroundsize=function(){return I("backgroundSize")},s.borderimage=function(){return I("borderImage")},s.borderradius=function(){return I("borderRadius")},s.boxshadow=function(){return I("boxShadow")},s.textshadow=function(){return b.createElement("div").style.textShadow===""},s.opacity=function(){return D("opacity:.55"),/^0.55$/.test(j.opacity)},s.cssanimations=function(){return I("animationName")},s.csscolumns=function(){return I("columnCount")},s.cssgradients=function(){var a="background-image:",b="gradient(linear,left top,right bottom,from(#9f9),to(white));",c="linear-gradient(left top,#9f9, white);";return C((a+"-webkit- ".split(" ").join(b+a)+n.join(c+a)).slice(0,-a.length)),F(j.backgroundImage,"gradient")},s.cssreflections=function(){return I("boxReflect")},s.csstransforms=function(){return!!I("transform")},s.csstransforms3d=function(){var a=!!I("perspective");return a&&"webkitPerspective"in g.style&&y("@media (transform-3d),(-webkit-transform-3d){#modernizr{left:9px;position:absolute;height:3px;}}",function(b,c){a=b.offsetLeft===9&&b.offsetHeight===3}),a},s.csstransitions=function(){return I("transition")},s.fontface=function(){var a;return y('@font-face {font-family:"font";src:url("https://")}',function(c,d){var e=b.getElementById("smodernizr"),f=e.sheet||e.styleSheet,g=f?f.cssRules&&f.cssRules[0]?f.cssRules[0].cssText:f.cssText||"":"";a=/src/i.test(g)&&g.indexOf(d.split(" ")[0])===0}),a},s.generatedcontent=function(){var a;return y(["#",h,"{font:0/0 a}#",h,':after{content:"',l,'";visibility:hidden;font:3px/1 a}'].join(""),function(b){a=b.offsetHeight>=3}),a},s.video=function(){var a=b.createElement("video"),c=!1;try{if(c=!!a.canPlayType)c=new Boolean(c),c.ogg=a.canPlayType('video/ogg; codecs="theora"').replace(/^no$/,""),c.h264=a.canPlayType('video/mp4; codecs="avc1.42E01E"').replace(/^no$/,""),c.webm=a.canPlayType('video/webm; codecs="vp8, vorbis"').replace(/^no$/,"")}catch(d){}return c},s.audio=function(){var a=b.createElement("audio"),c=!1;try{if(c=!!a.canPlayType)c=new Boolean(c),c.ogg=a.canPlayType('audio/ogg; codecs="vorbis"').replace(/^no$/,""),c.mp3=a.canPlayType("audio/mpeg;").replace(/^no$/,""),c.wav=a.canPlayType('audio/wav; codecs="1"').replace(/^no$/,""),c.m4a=(a.canPlayType("audio/x-m4a;")||a.canPlayType("audio/aac;")).replace(/^no$/,"")}catch(d){}return c},s.localstorage=function(){try{return localStorage.setItem(h,h),localStorage.removeItem(h),!0}catch(a){return!1}},s.sessionstorage=function(){try{return sessionStorage.setItem(h,h),sessionStorage.removeItem(h),!0}catch(a){return!1}},s.webworkers=function(){return!!a.Worker},s.applicationcache=function(){return!!a.applicationCache},s.svg=function(){return!!b.createElementNS&&!!b.createElementNS(r.svg,"svg").createSVGRect},s.inlinesvg=function(){var a=b.createElement("div");return a.innerHTML="",(a.firstChild&&a.firstChild.namespaceURI)==r.svg},s.smil=function(){return!!b.createElementNS&&/SVGAnimate/.test(m.call(b.createElementNS(r.svg,"animate")))},s.svgclippaths=function(){return!!b.createElementNS&&/SVGClipPath/.test(m.call(b.createElementNS(r.svg,"clipPath")))};for(var K in s)B(s,K)&&(x=K.toLowerCase(),e[x]=s[K](),v.push((e[x]?"":"no-")+x));return e.input||J(),e.addTest=function(a,b){if(typeof a=="object")for(var d in a)B(a,d)&&e.addTest(d,a[d]);else{a=a.toLowerCase();if(e[a]!==c)return e;b=typeof b=="function"?b():b,typeof f!="undefined"&&f&&(g.className+=" "+(b?"":"no-")+a),e[a]=b}return e},C(""),i=k=null,function(a,b){function l(a,b){var c=a.createElement("p"),d=a.getElementsByTagName("head")[0]||a.documentElement;return c.innerHTML="x",d.insertBefore(c.lastChild,d.firstChild)}function m(){var a=s.elements;return typeof a=="string"?a.split(" "):a}function n(a){var b=j[a[h]];return b||(b={},i++,a[h]=i,j[i]=b),b}function o(a,c,d){c||(c=b);if(k)return c.createElement(a);d||(d=n(c));var g;return d.cache[a]?g=d.cache[a].cloneNode():f.test(a)?g=(d.cache[a]=d.createElem(a)).cloneNode():g=d.createElem(a),g.canHaveChildren&&!e.test(a)&&!g.tagUrn?d.frag.appendChild(g):g}function p(a,c){a||(a=b);if(k)return a.createDocumentFragment();c=c||n(a);var d=c.frag.cloneNode(),e=0,f=m(),g=f.length;for(;e",g="hidden"in a,k=a.childNodes.length==1||function(){b.createElement("a");var a=b.createDocumentFragment();return typeof a.cloneNode=="undefined"||typeof a.createDocumentFragment=="undefined"||typeof a.createElement=="undefined"}()}catch(c){g=!0,k=!0}})();var s={elements:d.elements||"abbr article aside audio bdi canvas data datalist details dialog figcaption figure footer header hgroup main mark meter nav output progress section summary template time video",version:c,shivCSS:d.shivCSS!==!1,supportsUnknownElements:k,shivMethods:d.shivMethods!==!1,type:"default",shivDocument:r,createElement:o,createDocumentFragment:p};a.html5=s,r(b)}(this,b),e._version=d,e._prefixes=n,e._domPrefixes=q,e._cssomPrefixes=p,e.hasEvent=z,e.testProp=function(a){return G([a])},e.testAllProps=I,e.testStyles=y,e.prefixed=function(a,b,c){return b?I(a,b,c):I(a,"pfx")},g.className=g.className.replace(/(^|\s)no-js(\s|$)/,"$1$2")+(f?" js "+v.join(" "):""),e}(this,this.document),function(a,b,c){function d(a){return"[object Function]"==o.call(a)}function e(a){return"string"==typeof a}function f(){}function g(a){return!a||"loaded"==a||"complete"==a||"uninitialized"==a}function h(){var a=p.shift();q=1,a?a.t?m(function(){("c"==a.t?B.injectCss:B.injectJs)(a.s,0,a.a,a.x,a.e,1)},0):(a(),h()):q=0}function i(a,c,d,e,f,i,j){function k(b){if(!o&&g(l.readyState)&&(u.r=o=1,!q&&h(),l.onload=l.onreadystatechange=null,b)){"img"!=a&&m(function(){t.removeChild(l)},50);for(var d in y[c])y[c].hasOwnProperty(d)&&y[c][d].onload()}}var j=j||B.errorTimeout,l=b.createElement(a),o=0,r=0,u={t:d,s:c,e:f,a:i,x:j};1===y[c]&&(r=1,y[c]=[]),"object"==a?l.data=c:(l.src=c,l.type=a),l.width=l.height="0",l.onerror=l.onload=l.onreadystatechange=function(){k.call(this,r)},p.splice(e,0,u),"img"!=a&&(r||2===y[c]?(t.insertBefore(l,s?null:n),m(k,j)):y[c].push(l))}function j(a,b,c,d,f){return q=0,b=b||"j",e(a)?i("c"==b?v:u,a,b,this.i++,c,d,f):(p.splice(this.i++,0,a),1==p.length&&h()),this}function k(){var a=B;return a.loader={load:j,i:0},a}var l=b.documentElement,m=a.setTimeout,n=b.getElementsByTagName("script")[0],o={}.toString,p=[],q=0,r="MozAppearance"in l.style,s=r&&!!b.createRange().compareNode,t=s?l:n.parentNode,l=a.opera&&"[object Opera]"==o.call(a.opera),l=!!b.attachEvent&&!l,u=r?"object":l?"script":"img",v=l?"script":u,w=Array.isArray||function(a){return"[object Array]"==o.call(a)},x=[],y={},z={timeout:function(a,b){return b.length&&(a.timeout=b[0]),a}},A,B;B=function(a){function b(a){var a=a.split("!"),b=x.length,c=a.pop(),d=a.length,c={url:c,origUrl:c,prefixes:a},e,f,g;for(f=0;f'; + overlay += '

' + skill + '

'; + overlay += '
'; + + // Render the progress bar background + overlay += ''; + + // Display target bar only if set + if ( target ) { + if ( settings.animateTarget ) { + overlay += ''; + } + else { + overlay += ''; + } + } + + // Render the progress bar + if ( settings.animation ) { + overlay += ''; + } + else { + overlay += ''; + } + + // Render the percentage if enabled + if ( settings.percentage ) { + overlay += '' + progress + '%'; + } + + // End + overlay += '
'; + + // Render the progress bar on the page + $( item ).replaceWith( overlay ); + + }; + + var animate = function() { + + var doc_height = $(window).height(); + + $( '.sonny_progressbar.animate' ).each( function() { + var position = $( this ).offset().top; + + if ( ( $(window).scrollTop() + doc_height - 60 ) > position ) { + var progress = $( this ).data( 'width' ) + "%"; + + $( this ).removeClass( 'animate' ); + $( this ).find( '.bar' ).css('opacity', '0.1'); + + $( this ).find( '.bar' ).animate({ + width : progress, + opacity : 1 + }, 3000 ); + } + + }); + + }; + + // Looking for an animation element in the view + $(window).scroll(function() { + + if ( $( '.sonny_progressbar.animate' ).length < 1 ) { + return; + } + + // If there is an animate element visible on the page, trigger the animation + animate(); + + }); + + +})(jQuery); + diff --git a/ext/3rd-party-addons/clarico_expertise/static/src/less/expertise.less b/ext/3rd-party-addons/clarico_expertise/static/src/less/expertise.less new file mode 100755 index 00000000..24b08db9 --- /dev/null +++ b/ext/3rd-party-addons/clarico_expertise/static/src/less/expertise.less @@ -0,0 +1,163 @@ +.div_whole_about_us,.about_us_image_div +{ + display:block; + width:50%; + float:left; +} +.abt_h1_margin +{ + .mt(3%); + .mb(15px); +} +.about_content_sub +{ + .common-div; + text-align:left; + + .sep_span_hr + { + float:left; + .mt(10px); + } + .chs_para + { + .common-div; + font-size: 15px; + line-height: 180%; + margin-bottom: 41px !important; + color: #898383; + .muli-light(); + margin-top: 25px; + max-width: 500px; + } +} +.abt_us_subheading +{ + .muli-regular(); +} +.skills +{ + padding:0; +} +.sonny_progressbar { + .mb(20px); +} +.sup_class_about_us +{ +.size(19px); +top: -2.5em; +} +.sonny_progressbar p.title { + .size(16px); + line-height: 20px; + margin: 0; + padding: 5px 0; +} +.sonny_progressbar .bar-container { + position: relative; + height: 40px; +} + +.sonny_progressbar .backgroundBar { + position: absolute; + bottom: 0; + top: 0; + left: 0; + right: 0; +} +.sonny_progressbar .bar { + position: absolute; + top: 0; + left: 0; + height: 100%; +} +.sonny_progressbar .targetBar { + position: absolute; + top: 0; + left: 0; + height: 100%; + -webkit-animation: Animation 2s infinite ease-in-out; + -moz-animation: Animation 2s infinite ease-in-out; + animation: Animation 2s infinite ease-in-out; +} +.sonny_progressbar .targetBar.loader { + -webkit-animation: AnimationB 4s infinite ease-in-out; + -moz-animation: AnimationB 4s infinite ease-in-out; + animation: AnimationB 4s infinite ease-in-out; + background-image: url('animated-overlay.gif'); +} +.sonny_progressbar .bar-container.border .bar, .sonny_progressbar .bar-container.border .targetBar, .sonny_progressbar .bar-container.border .backgroundBar { + border-bottom: 3px solid rgba(0,0,0,.2); +} +.sonny_progressbar .progress-percent { + font-size: 16px; + position: absolute; + right: 15px; + top:-14px; +} + +@keyframes Animation { + 0% { opacity:.4; } + 50% { opacity:1; } + 100% { opacity:.4; } +} +@-moz-keyframes Animation{ + 0% { opacity:.4; } + 50% { opacity:1; } + 100% { opacity:.4; } +} +@-webkit-keyframes Animation{ + 0% { opacity:.4; } + 50% { opacity:1; } + 100% { opacity:.4; } +} +@keyframes AnimationB { + 0% { opacity:.01; } + 50% { opacity:.1; } + 100% { opacity:.01; } +} +@-moz-keyframes AnimationB { + 0% { opacity:.01; } + 50% { opacity:.1; } + 100% { opacity:.01; } +} +@-webkit-keyframes AnimationB { + 0% { opacity:.01; } + 50% { opacity:.1; } + 100% { opacity:.01; } +} + + +@media(max-width:800px) +{ + .div_whole_about_us, .about_us_image_div + { + width:100%; + } + .about_content_sub + { + text-align:center; + + .ch_h1_class + { + text-align:center; + } + .chs_para + { + text-align:center; + display:block; + } + } + .div_whole_about_us + { + .mt(10%); + + .left_side_snapshot_div + { + width: 100%; + margin: 0px auto; + } + } +} + + diff --git a/ext/3rd-party-addons/clarico_expertise/templates/assets.xml b/ext/3rd-party-addons/clarico_expertise/templates/assets.xml new file mode 100755 index 00000000..4a895e7d --- /dev/null +++ b/ext/3rd-party-addons/clarico_expertise/templates/assets.xml @@ -0,0 +1,16 @@ + + + + diff --git a/ext/3rd-party-addons/clarico_expertise/templates/template.xml b/ext/3rd-party-addons/clarico_expertise/templates/template.xml new file mode 100755 index 00000000..ce0051f0 --- /dev/null +++ b/ext/3rd-party-addons/clarico_expertise/templates/template.xml @@ -0,0 +1,60 @@ + + + + + + + diff --git a/ext/3rd-party-addons/clarico_expertise/views/res_company.xml b/ext/3rd-party-addons/clarico_expertise/views/res_company.xml new file mode 100755 index 00000000..4c857abd --- /dev/null +++ b/ext/3rd-party-addons/clarico_expertise/views/res_company.xml @@ -0,0 +1,22 @@ + + + + res.company.form.expertise.inherit + res.company + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/ext/3rd-party-addons/clarico_latest_blogs/__init__.py b/ext/3rd-party-addons/clarico_latest_blogs/__init__.py new file mode 100755 index 00000000..e046e49f --- /dev/null +++ b/ext/3rd-party-addons/clarico_latest_blogs/__init__.py @@ -0,0 +1 @@ +from . import controllers diff --git a/ext/3rd-party-addons/clarico_latest_blogs/__manifest__.py b/ext/3rd-party-addons/clarico_latest_blogs/__manifest__.py new file mode 100755 index 00000000..cd08238f --- /dev/null +++ b/ext/3rd-party-addons/clarico_latest_blogs/__manifest__.py @@ -0,0 +1,26 @@ +{ + # Theme information + 'name' : 'clarico Latest Blogs', + 'category' : 'Website', + 'version' : '1.0', + 'summary': 'Website Blogs Carousel', + 'description': """""", + + # Dependencies + 'depends': [ + 'clarico_blog', + ], + + # Views + 'data': [ + 'template/assets.xml', + 'template/template.xml', + ], + + # Author + 'author': 'Emipro Technologies Pvt. Ltd.', + 'website': 'http://www.emiprotechnologies.com', + + # Technical + 'installable': True, +} diff --git a/ext/3rd-party-addons/clarico_latest_blogs/controllers/__init__.py b/ext/3rd-party-addons/clarico_latest_blogs/controllers/__init__.py new file mode 100755 index 00000000..deec4a8b --- /dev/null +++ b/ext/3rd-party-addons/clarico_latest_blogs/controllers/__init__.py @@ -0,0 +1 @@ +from . import main \ No newline at end of file diff --git a/ext/3rd-party-addons/clarico_latest_blogs/controllers/main.py b/ext/3rd-party-addons/clarico_latest_blogs/controllers/main.py new file mode 100755 index 00000000..981aff5c --- /dev/null +++ b/ext/3rd-party-addons/clarico_latest_blogs/controllers/main.py @@ -0,0 +1,29 @@ +from odoo import http +from odoo.http import request + +class bellusblog(http.Controller): + + @http.route(['/blog_data'],type='json', auth='public', website=True , csrf=False, cache=30) + def category_data(self,template): + data=request.env['blog.post'].search([('website_published','=',True)],order='post_date desc',limit=3) + values = {'object':data} + + return request.env.ref(template).render(values) + + + + + + + + + + + + + + + + + + diff --git a/ext/3rd-party-addons/clarico_latest_blogs/static/description/icon.png b/ext/3rd-party-addons/clarico_latest_blogs/static/description/icon.png new file mode 100755 index 00000000..09fd34ab Binary files /dev/null and b/ext/3rd-party-addons/clarico_latest_blogs/static/description/icon.png differ diff --git a/ext/3rd-party-addons/clarico_latest_blogs/static/src/img/blog.jpg b/ext/3rd-party-addons/clarico_latest_blogs/static/src/img/blog.jpg new file mode 100755 index 00000000..18dd74f0 Binary files /dev/null and b/ext/3rd-party-addons/clarico_latest_blogs/static/src/img/blog.jpg differ diff --git a/ext/3rd-party-addons/clarico_latest_blogs/static/src/js/blog_snippet_editor.js b/ext/3rd-party-addons/clarico_latest_blogs/static/src/js/blog_snippet_editor.js new file mode 100755 index 00000000..f6fe67a4 --- /dev/null +++ b/ext/3rd-party-addons/clarico_latest_blogs/static/src/js/blog_snippet_editor.js @@ -0,0 +1,57 @@ +odoo.define('blog.snippets.editor', function (require) { +'use strict'; + require('web.dom_ready'); + + var ajax = require("web.ajax"); + var core = require("web.core"); + var Dialog = require("web.Dialog"); + var editor = require("web_editor.editor"); + var animation = require('website.content.snippets.animation'); + var options = require('web_editor.snippets.options'); + var snippet_editor = require('web_editor.snippet.editor'); + + var _t = core._t; + + snippet_editor.Class.include({ + _get_snippet_url: function () { + return '/website/snippets'; + } + }); + + options.registry.js_get_blog = options.Class.extend({ + drop_and_build_snippet: function(){ + var self = this; + if (!self.$target.data('snippet-view')) { + this.$target.data("snippet-view", new website.snippet.animationRegistry.js_get_blog(this.$target)); + } + }, + clean_for_save:function(){ + this.$target.empty(); + } + }); + options.registry.js_get_blog_style = options.Class.extend({ + start:function(){ + var self = this; + setTimeout(function(){ + var ul = self.$overlay.find(".snippet-option-js_get_blog_style > ul"); + if (self.$target.attr("data-style")) { + var limit = self.$target.attr("data-style"); + ul.find('li[data-style="' + limit + '"]').addClass("active"); + } else { + ul.find('li[data-style="1"]').addClass("active"); + } + },100) + }, + style:function(previewMode, value){ + var self = this + var value = parseInt(value); + this.$target.attr("data-style",value) + .data("style",value) + .data('snippet-view').redrow(true); + }, + _setActive: function () { + this.$el.find('li[data-style]').removeClass('active') + .filter('li[data-style=' + this.$target.attr('data-style') + ']').addClass('active'); + } + }); +}); diff --git a/ext/3rd-party-addons/clarico_latest_blogs/static/src/js/blog_snippet_frontend.js b/ext/3rd-party-addons/clarico_latest_blogs/static/src/js/blog_snippet_frontend.js new file mode 100755 index 00000000..830fb202 --- /dev/null +++ b/ext/3rd-party-addons/clarico_latest_blogs/static/src/js/blog_snippet_frontend.js @@ -0,0 +1,68 @@ +odoo.define('blog.snippets.animation', function (require) { + 'use strict'; + + var ajax = require('web.ajax'); + var core = require('web.core'); + var base = require('web_editor.base'); + var animation = require('website.content.snippets.animation'); + var no_of_product; + var qweb = core.qweb; + + animation.registry.js_get_blog = animation.Class.extend({ + selector : ".js_get_blog", + + start: function(){ + this.redrow(); + }, + stop: function(){ + this.clean(); + }, + + redrow: function(debug){ + this.clean(debug); + this.build(debug); + }, + + clean:function(debug){ + this.$target.empty(); + }, + + build: function(debug) + { + var self = this, + style = self.$target.data("style"); + template = self.$target.data("template"); + + var template="clarico_latest_blogs.blog_showcase"; + if(!style)style = 1; + if(style == 1) + { + template = "clarico_latest_blogs.blog_showcase"; + } + else if(style == 2) + { + template = "clarico_latest_blogs.blog_showcase_slider"; + } + else + { + template = "clarico_latest_blogs.blog_showcase"; + } + + ajax.jsonRpc('/blog_data', 'call', {'template': template}).then(function(data) + { + $(data).appendTo(self.$target); + blog_carousel() + }) + .then(function() + { + + }) + .fail(function(e) + { + console.log("Something is wrong") + return; + }); + }, + }); + +}); diff --git a/ext/3rd-party-addons/clarico_latest_blogs/static/src/js/slider_custom.js b/ext/3rd-party-addons/clarico_latest_blogs/static/src/js/slider_custom.js new file mode 100755 index 00000000..4de5efed --- /dev/null +++ b/ext/3rd-party-addons/clarico_latest_blogs/static/src/js/slider_custom.js @@ -0,0 +1,24 @@ +function blog_carousel(){ + $('.blogs_subdiv > .owl-carousel').owlCarousel({ + margin:10, + nav:true, + autoplay:true, + autoplayTimeout:3000, + responsiveClass:true, + + responsive:{ + 0:{ + items:1 + }, + 600:{ + items:2 + }, + 1000:{ + items:2 + } + } + }); +} + + + diff --git a/ext/3rd-party-addons/clarico_latest_blogs/static/src/less/blog.less b/ext/3rd-party-addons/clarico_latest_blogs/static/src/less/blog.less new file mode 100755 index 00000000..c89dd05b --- /dev/null +++ b/ext/3rd-party-addons/clarico_latest_blogs/static/src/less/blog.less @@ -0,0 +1,324 @@ +.blog_image +{ + width:50%; + .left(); + div + { + div.image_blog + { + padding: 33%; + background-size: cover; + background-repeat: no-repeat; + } + } +} +.blog_carousel +{ + .common-div; +} +.blog_sub_carousel +{ + .maxW(); +} +.div_sub_image_content_class +{ + width:90%; + display:block; + margin:0px auto; + position:relative; +} +.blog_name +{ + position: absolute; + bottom: 0px; + left: 0px; + .bg(white); + box-shadow: 0 8px 35px -10px rgba(0, 0, 0, 0.3); + + padding: 4% !important; + + max-width: 400px; + p.p_blog + { + .size(19px); + .muli-regular(); + line-height: 150%; + color: #000; + } + p.p_read>a + { + .muli-regular(); + line-height: 150%; + color:#000; + } +} +.blog_date +{ + position: absolute; + top: 0px; + left: 0px; + .bg(@theme-color); + color: #FFF; + padding: 4%; + max-width: 200px; + .size(19px); + .muli-regular(); + padding-top: 1%; + padding-bottom: 2%; +} +.blog_date_day +{ + .muli-regular(); + margin:0; + .size(28px); +} +.blog_date_month +{ + .muli-regular(); + margin:0; + text-transform:uppercase; + .size(23px); + line-height: 23px; +} +.blog_date_year +{ + .muli-regular(); + margin:0; + .size(14px); +} +.read_more +{ + .common-div; + text-align:center; +} + +#latest_post_img_div_style_2 +{ + + width:100%; + display:inline-block; + vertical-align:top; + padding: 2%; + + .latest_blog_2_sub_main + { + border:1px solid #eee; + + .image_blog_homepage + { + padding:30% 50%; + background-position: center; + + } + .l_Blog_detail { + padding: 3% !important; + position:relative; + text-align:left; + .mt(0); + } + .l-blog-name + { + text-align:left; + } + .octra_product_name + { + color:#444; + .muli-semibold(); + .size(16px); + } + .l-blog-date { + display: inline-block; + color: #fff; + background: @theme-color; + padding: 5px 15px; + border-radius: 4px; + position: absolute; + top: -20px; + } + .lb_subtitle + { + .mb(3%); + color:#888; + line-height:170%; + } + .readmore_arrow + { + .common-div; + + #l_blog_readmore + { + .muli-semibold(); + color:@theme-color; + .size(13px); + float: right; + margin: 0; + } + } + } +} + +@media (max-width: 800px) +{ + .blog_image + { + width: 100%; + .mb(5%); + } +} +@media (max-width: 600px) +{ + .blog_date_day + { + .size(25px); + } + .blog_date_month + { + .size(19px); + } + .blog_date_year + { + .size(13px); + } + .blog_name p.p_blog + { + .size(14px); + color:#000; + } + .blog_name p.p_read > a + { + .size(12px); + color:#000; + } + .blog_name + { + position: relative; + .bg(transparent); + } +} + +#latest_post_img_div +{ + display: block; + .left(); + width: 33.33%; + padding:1%; + + .col-md-4 + { + .common-div; + padding:3% !important; + } +} +.even_image_blog_homepage +{ + padding: 30%; + .pb(90%); + background-repeat: no-repeat; + background-size: cover; + +} +.image_blog_homepage +{ + padding: 30%; + background-repeat: no-repeat; + background-size: cover; +} +.latest-post-heading +{ + .size(30px); + color: #252525; + .uppercase(); + letter-spacing: 0.1em; + .mb(5%); + .muli-light(); +} +.l-blog-name +{ + .size(16px); + line-height: 148%; + text-align: center; + .mb(6px); + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; +} +.l-blog-date +{ + .size(11px); + color: #676767; + text-align: center !important; +} +#l_blog_readmore +{ + .size(12px); + .muli-bold; + .uppercase(); + .mt(15px); + color: #717171; + margin:0px auto; + float:none; + .center(); + .pt(8px); + .pb(8px); + + &:hover + { + color: @theme-color; + transition: background-color linear 0.5s; + + } +} +.l_Blog_detail +{ + padding:0 !important; + text-align: center; + .mt(5%); +} + +.l_before_hr +{ + border: 1px solid @theme-color; + .mt(18px) !important; + width: 55px; + .mb(0px); + color: @theme-color; + margin:0px auto; +} + +.readmore_arrow:hover i { + transform: translateX(5px); + transition-delay: 0.2s; + transition-timing-function: ease-in; + -webkit-transform: translateX(5px); +} +/* Media Query for latest blogs */ +@media(max-width:800px) +{ + #latest_post_img_div + { + float: none; + width: 60%; + .pr(0%); + .mb(10%) !important; + .mt(10%) !important; + margin:0px auto; + } + .latest-post-heading + { + .size(28px); + } +} +@media(max-width:600px) +{ + #latest_post_img_div + { + width:90%; + } + + .latest-post-heading + { + .size(20px); + } +} + + diff --git a/ext/3rd-party-addons/clarico_latest_blogs/template/assets.xml b/ext/3rd-party-addons/clarico_latest_blogs/template/assets.xml new file mode 100755 index 00000000..b06d0e4b --- /dev/null +++ b/ext/3rd-party-addons/clarico_latest_blogs/template/assets.xml @@ -0,0 +1,23 @@ + + + + + + + + \ No newline at end of file diff --git a/ext/3rd-party-addons/clarico_latest_blogs/template/template.xml b/ext/3rd-party-addons/clarico_latest_blogs/template/template.xml new file mode 100755 index 00000000..4a8942b0 --- /dev/null +++ b/ext/3rd-party-addons/clarico_latest_blogs/template/template.xml @@ -0,0 +1,129 @@ + + + + + + + + + + + diff --git a/ext/3rd-party-addons/clarico_layout/__init__.py b/ext/3rd-party-addons/clarico_layout/__init__.py new file mode 100755 index 00000000..591a48cb --- /dev/null +++ b/ext/3rd-party-addons/clarico_layout/__init__.py @@ -0,0 +1,2 @@ +from . import model +from . import controllers \ No newline at end of file diff --git a/ext/3rd-party-addons/clarico_layout/__manifest__.py b/ext/3rd-party-addons/clarico_layout/__manifest__.py new file mode 100755 index 00000000..15a15af7 --- /dev/null +++ b/ext/3rd-party-addons/clarico_layout/__manifest__.py @@ -0,0 +1,30 @@ +{ + # Theme information + 'name' : 'Clarico Layout', + 'category' : 'Website', + 'version' : '1.0', + 'summary': 'Navigate Online Store with 3 Unique Mega Menu Styles', + 'description': """""", + + # Dependencies + 'depends': [ + 'clarico_base' + ], + + # Views + 'data': [ + 'template/template.xml', + 'template/assets.xml', + 'view/clarico_header.xml', + 'view/website_product_category.xml', + 'view/header_style.xml', + 'data/data.xml', + ], + + # Author + 'author': 'Emipro Technologies Pvt. Ltd.', + 'website': 'http://www.emiprotechnologies.com', + + # Technical + 'installable': True, +} diff --git a/ext/3rd-party-addons/clarico_layout/controllers/__init__.py b/ext/3rd-party-addons/clarico_layout/controllers/__init__.py new file mode 100755 index 00000000..deec4a8b --- /dev/null +++ b/ext/3rd-party-addons/clarico_layout/controllers/__init__.py @@ -0,0 +1 @@ +from . import main \ No newline at end of file diff --git a/ext/3rd-party-addons/clarico_layout/controllers/main.py b/ext/3rd-party-addons/clarico_layout/controllers/main.py new file mode 100755 index 00000000..8e728ccb --- /dev/null +++ b/ext/3rd-party-addons/clarico_layout/controllers/main.py @@ -0,0 +1,17 @@ +from odoo import http +from odoo.http import request + +class claricoLayout(http.Controller): + + @http.route('/menu_html_builder', type='http', auth="user", website=True) + def menu_builder(self, model=False, id=False, **kw): + if id and model: + id = int(id) + record = request.env[model].browse(id) + values = { + 'record': record, + 'model': model, + 'id': id, + } + return request.render("clarico_layout.website_menu_edit",values) + return ("/") \ No newline at end of file diff --git a/ext/3rd-party-addons/clarico_layout/data/data.xml b/ext/3rd-party-addons/clarico_layout/data/data.xml new file mode 100755 index 00000000..ff24cf2c --- /dev/null +++ b/ext/3rd-party-addons/clarico_layout/data/data.xml @@ -0,0 +1,202 @@ + + + + + Categories + + + 61 + + + + Storage + + + + + +
+ + ]]> + + 62 + + + + Home Accessories + + + + +
+ +
+
+ ]]> + + 63 + + + diff --git a/ext/3rd-party-addons/clarico_layout/model/__init__.py b/ext/3rd-party-addons/clarico_layout/model/__init__.py new file mode 100755 index 00000000..a38380fd --- /dev/null +++ b/ext/3rd-party-addons/clarico_layout/model/__init__.py @@ -0,0 +1,4 @@ +from . import product_public_category +from . import website +from . import res_config_settings +from . import website_menu diff --git a/ext/3rd-party-addons/clarico_layout/model/product_public_category.py b/ext/3rd-party-addons/clarico_layout/model/product_public_category.py new file mode 100755 index 00000000..177f9512 --- /dev/null +++ b/ext/3rd-party-addons/clarico_layout/model/product_public_category.py @@ -0,0 +1,10 @@ +# -*- coding: utf-8 -*- +from odoo import api, fields, models + +class product_public_category(models.Model): + _inherit = ["product.public.category"] + + website_published = fields.Boolean("Website Published",default=True) + + + diff --git a/ext/3rd-party-addons/clarico_layout/model/res_config_settings.py b/ext/3rd-party-addons/clarico_layout/model/res_config_settings.py new file mode 100755 index 00000000..b60219a2 --- /dev/null +++ b/ext/3rd-party-addons/clarico_layout/model/res_config_settings.py @@ -0,0 +1,9 @@ +# -*- coding: utf-8 -*- +from odoo import api, fields, models + +class res_config_setting(models.TransientModel): + _inherit = 'res.config.settings' + + clarico_header_style_one = fields.Char('Clarico header style1',related='website_id.clarico_header_style_one') + clarico_header_style_two = fields.Char("Clarico header style2",related='website_id.clarico_header_style_two') + clarico_header_style_three = fields.Char("Clarico header style3",related='website_id.clarico_header_style_three') diff --git a/ext/3rd-party-addons/clarico_layout/model/website.py b/ext/3rd-party-addons/clarico_layout/model/website.py new file mode 100755 index 00000000..6b24aabb --- /dev/null +++ b/ext/3rd-party-addons/clarico_layout/model/website.py @@ -0,0 +1,28 @@ +from odoo import api, fields, models +from odoo.tools.translate import _ +from odoo.http import request + +class website(models.Model): + + _inherit = "website" + + clarico_header_style_one = fields.Char('CLarico Heading') + clarico_header_style_two = fields.Char("Clarico header style2") + clarico_header_style_three = fields.Char("Clarico header style3") + + def category_check(self,filter=[]): + + if filter: + filter.extend([('website_published','=',True)]) + else: + filter=([('website_published','=',True)]) + + return self.env['product.public.category'].sudo().search(filter) + + def get_res_lang(self): + + current_lang= request.env.lang + + res_lang = self.env['res.lang'].search([('code','=',current_lang)]) + + return res_lang \ No newline at end of file diff --git a/ext/3rd-party-addons/clarico_layout/model/website_menu.py b/ext/3rd-party-addons/clarico_layout/model/website_menu.py new file mode 100755 index 00000000..ce87dbe2 --- /dev/null +++ b/ext/3rd-party-addons/clarico_layout/model/website_menu.py @@ -0,0 +1,20 @@ +from odoo import fields, models +from odoo.tools.translate import _ + +class SubMenuContent(models.Model): + _inherit = 'website.menu' + + menu_html =fields.Html('Menu Html',sanitize=True,translate=True) + dynamic_menu = fields.Boolean("Dynamic menu",default=False) + + def action_edit_menu(self, context=None): + if not len(self.ids) == 1: + raise ValueError('One and only one ID allowed for this action') + + url = '/menu_html_builder?model=website.menu&id=%d&enable_editor=1' % (self.id) + return { + 'name': _('Edit Template'), + 'type': 'ir.actions.act_url', + 'url': url, + 'target': 'self', + } diff --git a/ext/3rd-party-addons/clarico_layout/static/description/icon.png b/ext/3rd-party-addons/clarico_layout/static/description/icon.png new file mode 100755 index 00000000..09fd34ab Binary files /dev/null and b/ext/3rd-party-addons/clarico_layout/static/description/icon.png differ diff --git a/ext/3rd-party-addons/clarico_layout/static/src/img/1.jpg b/ext/3rd-party-addons/clarico_layout/static/src/img/1.jpg new file mode 100755 index 00000000..c8f27051 Binary files /dev/null and b/ext/3rd-party-addons/clarico_layout/static/src/img/1.jpg differ diff --git a/ext/3rd-party-addons/clarico_layout/static/src/img/2.jpg b/ext/3rd-party-addons/clarico_layout/static/src/img/2.jpg new file mode 100755 index 00000000..6a74e64f Binary files /dev/null and b/ext/3rd-party-addons/clarico_layout/static/src/img/2.jpg differ diff --git a/ext/3rd-party-addons/clarico_layout/static/src/img/3.jpg b/ext/3rd-party-addons/clarico_layout/static/src/img/3.jpg new file mode 100755 index 00000000..e778f9a9 Binary files /dev/null and b/ext/3rd-party-addons/clarico_layout/static/src/img/3.jpg differ diff --git a/ext/3rd-party-addons/clarico_layout/static/src/img/4.jpg b/ext/3rd-party-addons/clarico_layout/static/src/img/4.jpg new file mode 100755 index 00000000..717622c1 Binary files /dev/null and b/ext/3rd-party-addons/clarico_layout/static/src/img/4.jpg differ diff --git a/ext/3rd-party-addons/clarico_layout/static/src/img/close.png b/ext/3rd-party-addons/clarico_layout/static/src/img/close.png new file mode 100755 index 00000000..faa28a37 Binary files /dev/null and b/ext/3rd-party-addons/clarico_layout/static/src/img/close.png differ diff --git a/ext/3rd-party-addons/clarico_layout/static/src/img/logo.png b/ext/3rd-party-addons/clarico_layout/static/src/img/logo.png new file mode 100755 index 00000000..f2856167 Binary files /dev/null and b/ext/3rd-party-addons/clarico_layout/static/src/img/logo.png differ diff --git a/ext/3rd-party-addons/clarico_layout/static/src/img/payment.png b/ext/3rd-party-addons/clarico_layout/static/src/img/payment.png new file mode 100755 index 00000000..34d6a172 Binary files /dev/null and b/ext/3rd-party-addons/clarico_layout/static/src/img/payment.png differ diff --git a/ext/3rd-party-addons/clarico_layout/static/src/img/payment2.png b/ext/3rd-party-addons/clarico_layout/static/src/img/payment2.png new file mode 100755 index 00000000..280c6415 Binary files /dev/null and b/ext/3rd-party-addons/clarico_layout/static/src/img/payment2.png differ diff --git a/ext/3rd-party-addons/clarico_layout/static/src/img/static_menu.jpg b/ext/3rd-party-addons/clarico_layout/static/src/img/static_menu.jpg new file mode 100755 index 00000000..ede2b7f0 Binary files /dev/null and b/ext/3rd-party-addons/clarico_layout/static/src/img/static_menu.jpg differ diff --git a/ext/3rd-party-addons/clarico_layout/static/src/js/custom_header.js b/ext/3rd-party-addons/clarico_layout/static/src/js/custom_header.js new file mode 100755 index 00000000..ac44fb09 --- /dev/null +++ b/ext/3rd-party-addons/clarico_layout/static/src/js/custom_header.js @@ -0,0 +1,230 @@ +$(document).ready(function(){ + if ($(window).width() > 1200) { + + $('#top_menu > li > a').mouseenter(function(){ + if ($(this).next().hasClass('custom-menu-inside-div')){ + $(this).next('.custom-menu-inside-div').css("display","block"); + var first_li = $('.first-level-category-li').first('li'); + first_li.find('.first-level-left-div').addClass('active-li'); + first_li.find('.toggel_div').find('.menu_1_div').css("display","block"); + first_li.find('.toggel_div').css("display","block"); + + } + else{ + $(this).parent().find('ul').css("display","block"); + } + }); + $('#top_menu > li > a').mouseleave(function(){ + if ($(this).next().hasClass('custom-menu-inside-div')){ + $(this).next('.custom-menu-inside-div').css("display","none"); + } + else{ + $(this).parent().find('ul').css("display","none"); + } + }); + $('.custom-menu-inside-div, #top_menu > li > a + ul').mouseenter(function(){ + $(this).css("display","block"); + }); + $('.custom-menu-inside-div, #top_menu > li > a + ul').mouseleave(function(){ + $(this).css("display","none"); + }); + + // Dynamic category hover + $('.first-level-category-li').mouseenter(function(){ + var self =$(this) + var first_div = $(self).find('.first-level-left-div'); + first_div.addClass("active-li"); + self.find('.toggel_div').css("display","block"); + self.find('.toggel_div').find('.menu_1_div').css("display","block"); + }); + $('.first-level-category-li').mouseleave(function(){ + var self =$(this) + var first_div = $(self).find('.first-level-left-div') + first_div.removeClass("active-li"); + self.find('.toggel_div').find('.menu_1_div').css("display","none"); + self.find('.toggel_div').css("display","none"); + }); + + //active first category + $('.first-level-category').mouseleave(function(){ + var first_li = $('.first-level-category-li').first('li').find('.first-level-left-div').addClass('active-li'); + first_li.next('.toggel_div').find('.menu_1_div').css("display","block"); + first_li.next('.toggel_div').css("display","block"); + }); + $('.custom-menu-inside-div').addClass('block-none'); + $('.mobile-view-static-menu').css("display","none"); + $('.top-custom-menu').removeClass("dropdown"); + $('.fisrt_li').addClass('first-level-category'); + $('.fisrt_li').removeClass('category-mobile-view'); + $('.first-level-li ').find('ul.sub_menu').removeClass('second_level-ul dropdown-menu'); + $('.sub-menu-ul-heading ').find('ul.third-level-ul').addClass('dropdown-menu'); + $('.category-heading-div').removeClass('dropdown-submenu'); + $('.expand-div').removeClass('dropdown-submenu'); + $('.submenu-a').removeClass('fa fa-chevron-right'); + $('.sub_menu').removeClass('dropdown-menu'); + $('.third-level-ul').removeClass('dropdown-menu'); + + + // Header Stick + var login_class = $('#oe_main_menu_navbar'); + var navbarheight = $('#oe_main_menu_navbar').height(); + var rightBox = $('.navbar-top-collapse'); + if($(".navbar-top-collapse").length > 0) + { + var x = rightBox.offset(); + var navPos = x.top; + if(login_class) + { + $(window).scroll(function() { + var scrollPosition = $(this).scrollTop(); + if (scrollPosition >= navPos) { + rightBox.addClass("header-stick"); + rightBox.css("top", + navbarheight); + rightBox.css({"margin-top":"0px"}); + $('.navbar-brand img').addClass("logo-stick"); + $('.navbar-brand img').css("top", + navbarheight); + } else { + rightBox.removeClass("header-stick"); + $('.navbar-brand img').removeClass("logo-stick"); + //rightBox.css({"margin-top":"10px"}); + } + }); + }else{ + rightBox.css({"top": "0"}); + } + } + } + else{ + $('.category-mobile-view').removeClass('first-level-category'); + $('.first-level-li ').find('ul.sub_menu').addClass('second_level-ul dropdown-menu'); + $('.sub-menu-ul-heading ').find('ul.third-level-ul').addClass('dropdown-menu'); + $('.category-heading-div').addClass('dropdown-submenu'); + $('.expand-div').addClass('dropdown-submenu'); + $('.fisrt_li').removeClass('first-level-category'); + $('.fisrt_li').addClass('category-mobile-view'); + $('.submenu-a').addClass('fa fa-chevron-right'); + $('.first-level-left-div').removeClass('first-level-left-div'); + $('.toggel_div').removeClass('toggel_div'); + $('.menu_expand').removeClass('menu_1_div'); + $('.menu_expand_overflow').removeClass('menu_1_column_div'); + $('.second_level-ul').removeClass('sub_menu'); + $('.toggel-div-effect').addClass('dropdown-menu').css("position","unset"); + $('.submenu_expand').removeClass('dropdown-menu second_level-ul'); + $('.first-level-category-a').removeClass('dropdown-toggle').removeAttr("data-toggle", "dropdown"); + $('.second-level-a').removeClass('dropdown-toggle').removeAttr("data-toggle", "dropdown"); + $('.sub_menu_list').removeClass('dropdown-toggle').removeAttr("data-toggle", "dropdown"); + } + + + /* Search box effect */ + $('.srch_icon').click(function () { + $(this).css({"display":"none"}); + $('.anim-search').css({"visibility":"visible"}); + $('.close_icon').css({"display":"block"}); + }); + $('.close_icon').click(function () { + $(this).css({"display":"none"}); + $('.anim-search').css({"visibility":"hidden"}); + $('.srch_icon').css({"display":"block"}); + }); + //First Static Menu in header + $(".cat-column").mouseenter(function(){ + var self = $(this); + self.addClass('opacity-full'); + var button_cat = $(self).find('a.button_cat'); + button_cat.addClass('menu-cate-hover'); + $('.cat-column').addClass('opacity'); + }); + + $(".cat-column").mouseleave(function(){ + var self = $(this); + var button_cat = $(self).find('a.button_cat'); + button_cat.removeClass('menu-cate-hover'); + $('.cat-column').removeClass('opacity'); + self.removeClass('opacity-full'); + }); + + //Scroll up + $(window).scroll(function(){ + if ($(this).scrollTop() > 300) { + $('.scrollup-div').fadeIn(); + } else { + $('.scrollup-div').fadeOut(); + } + }); + + $('.scrollup-div').click(function(){ + $("html, body").animate({ scrollTop: 0 }, 1000); + }); + + // Dropdown manu + $('.dropdown-submenu span.submenu-a').on("click", function(e){ + $(this).next('ul').toggle(); + $(this).next('div.toggel-div-effect').toggle(); + e.stopPropagation(); + e.preventDefault(); + + var clicks = $(this).data('clicks'); + if (clicks) { + $(this).removeClass("fa-chevron-down").addClass("fa-chevron-right"); + } else { + $(this).removeClass("fa-chevron-right").addClass("fa-chevron-down"); + } + $(this).data("clicks", !clicks); + }); + /*Remove a Sub-menu Html Field Empty Div*/ + $('.custom-menu-inside-div').each(function(){ + if ($(this).length && $(this).text().trim().length == 0 ){ + $(this).remove(); + } + }); + + $('#top_menu li:has("ul.custom-menu-inside-div")').addClass("dropdown"); + $('#top_menu li:has("ul.custom-menu-inside-div")').find("a:first").addClass("dropdown-toggle"); + $('#top_menu li:has("ul.custom-menu-inside-div")').find("a:first").attr("data-toggle", "dropdown"); + $('#top_menu li:has("div.custom-menu-inside-div")').addClass("dropdown"); + $('#top_menu li:has("div.custom-menu-inside-div")').find("a:first").addClass("dropdown-toggle"); + $('#top_menu li:has("div.custom-menu-inside-div")').find("a:first").attr("data-toggle", "dropdown"); + + $('.main-header a.clarico_close').click(function(){ + $('body').css('position','relative') + $(".main-header-maxW").removeClass("transparentbg"); + $(".clarico_close").css("display","none"); + $(".anim-search").css("display","none"); + $(".main-header-left").css("display","block"); + $(".company-phone-div").css("display","block"); + $("body").removeClass("scroll_remove"); + }) +}); + +// Show first category by default on load the window +$(window).load(function(){ + var first_li = $('.first-level-category-li').first('li'); + first_li.find('.first-level-left-div').addClass('active-li'); + first_li.find('.toggel_div').find('.menu_1_div').css("display","block"); + first_li.find('.toggel_div').css("display","block"); + + $("div.custom-menu-inside-div , ul.custom-menu-inside-div").closest("li").removeClass("active"); + //$("div.custom-menu-inside-div , ul.custom-menu-inside-div").closest("li").find("a:first").removeAttr("data-toggle href"); +}) +//for searching +$(document).keyup(function(e) { + if (e.which == 27) { + $('body').css('position','relative') + $(".main-header-maxW").removeClass("transparentbg"); + $(".clarico_close").css("display","none"); + $(".anim-search").css("display","none"); + $(".main-header-left").css("display","block"); + //$(".offer-center").css("display","block"); + $(".company-phone-div").css("display","block"); + $("body").removeClass("scroll_remove"); + } +}); + + + + + + + + diff --git a/ext/3rd-party-addons/clarico_layout/static/src/less/clarico_footer.less b/ext/3rd-party-addons/clarico_layout/static/src/less/clarico_footer.less new file mode 100755 index 00000000..85707eef --- /dev/null +++ b/ext/3rd-party-addons/clarico_layout/static/src/less/clarico_footer.less @@ -0,0 +1,357 @@ +/* ============ Footer ============ */ +footer +{ + margin-top:10% !important; + .bg(transparent) !important; +} +.ftr_main +{ + .bg(#F8F8F8); + .mt(5%); +} + +.logo_name_container +{ + font-size:35px; +} + +.common_footer_content_details_div +{ + display:inline-block; + width:100%; + .pb(3%); + + .payment_method_list + { + img + { + max-width: 39px; + } + } +} +.ftr_logo_span +{ + img + { + max-height:60px; + float:left; + } +} +.theme_icon_and_social_container +{ + .common-div; + .mt(3%); + .mb(3%); + + .clarico_logo_footer + { + width:20%; + display:block; + .left(); + + .logo_container + { + width: 70%; + display:block; + .left(); + + img + { + max-width:100%; + } + } + + } + + .search_bar_footer + { + display:block; + width:74%; + .right; + .pt(1%); + + + + .lbl_div_container + { + display:block; + .right; + width:100%; + + .newsltr_lbl + { + .size(19px); + .capitalize(); + color:#222; + .muli-semibold(); + .pt(5px); + .center(); + display: block; + .left(); + .mr(3%); + } + + .input-group + { + width: 40%; + + .btn-primary + { + .bg(@theme-color); + } + + } + } + + + + + } +} +.company_details_footer +{ + display: block; + width: 25%; + .left(); + .mt(15px); + + + .customer-contact-ul + { + list-style-type: none; + margin: 0; + padding: 0; + + .contact_detail_para + { + .size(13px); + line-height: 235%; + color:#444; + font-family:@m-light; + display: inline-flex; + + .span_lbl + { + .muli-bold(); + .uppercase(); + .pr(5px); + color:@theme-color; + } + .field_padding + { + .pl(5px); + } + } + + } + +} +.footer_payment_heading +{ + .mt(4%); + .size(20px); + .capitalize(); + display:block; + padding-bottom: 5%; +} +.payment_img_footer +{ + display:block; + + img + { + max-width:100%; + width:auto; + margin:0px auto; + + } + +} +.social_icons_footer + { + width:100%; + display:block; + .left(); + .pt(2%); + + .footer-social-icon + { + margin-top: 2%; + + a + { + display: block; + line-height: 29px; + text-align: center; + .left(); + .mr(15px); + .size(17px); + -webkit-transform: scale(1); + -webkit-transition: all .25s ease-out 0s; + + &:hover + { + -webkit-transition: all .25s ease-out 0s; + -webkit-transform: scale(1.25); + } + + i + { + vertical-align: middle; + .pb(6px); + + } + } + + } + + } + + + + +.footer-heading{ + .mt(0%); + + & .customer-service-ul{ + list-style: none; + padding: 0; + + & li { + + & a{ + color: #444; + .size(13px); + line-height: 170%; + padding: 2px 0; + display: block; + transition: padding .5s ease 0s; + .capitalize(); + font-family:@m-light; + .mt(12px); + + &:hover + { + color:@theme-color; + padding-left:10px; + } + } + } + } +} +.footer-heading{ + + & .help-ul{ + list-style: none; + padding: 0; + + & li { + + + & a{ + color: #444; + .size(13px); + line-height: 170%; + padding: 2px 0; + display: block; + transition: padding .5s ease 0s; + .capitalize(); + font-family:@m-light; + .mt(12px); + + &:hover + { + color:@theme-color; + padding-left:10px; + } + } + } + } +} +.footer-heading{ + + & .security-ul{ + list-style: none; + padding: 0; + + & li { + + + & a{ + color: #444; + .size(13px); + line-height: 170%; + padding: 2px 0; + display: block; + transition: padding .5s ease 0s; + .capitalize(); + font-family:@m-light; + .mt(12px); + + &:hover + { + color:@theme-color; + padding-left:10px; + } + } + } + } +} +.pull-center +{ + float:none; + .center(); + .pb(2%); +} +.footer-heading-h2-social{ + .size(13px); + .muli-regular; + .uppercase; + color:@color-black; +} + +.endfooter_list +{ + display:inline-block; + width:100%; + text-align:center; + .pt(2%); + + ul + { + list-style: none; + padding: 0; + + li + { + text-align: left; + padding: 0; + margin: 0; + display:inline; + + + section + { + + display: inline-block; + + a + { + color: #666666; + padding: 15px 10px; + .size(13px); + .capitalize(); + font-family:@m-light; + + &:hover + { + color:@theme-color; + + } + } + } + } + + } + +} diff --git a/ext/3rd-party-addons/clarico_layout/static/src/less/clarico_header.less b/ext/3rd-party-addons/clarico_layout/static/src/less/clarico_header.less new file mode 100755 index 00000000..76f5cf16 --- /dev/null +++ b/ext/3rd-party-addons/clarico_layout/static/src/less/clarico_header.less @@ -0,0 +1,1748 @@ +.navbar-static-top +{ + .common-div; + .mt(10px); + .container + { + .block; + .mt(10px); + } +} +#header-social{ + .left; + + & li{ + .left; + margin: 0 10px 0 5px; + width:auto; + text-align: center; + } +} +.navbar-default{ + + .bg(#fff); + border-color: transparent; +} +.navbar-default .navbar-nav > li > a{ + color: #000; + background-color: transparent; + .size(14px); + .oswald-regular(); + .uppercase(); + letter-spacing:1px; + + span + { + .oswald-regular(); + } +} +.navbar-default .navbar-nav > .active > a{ + color: black; + background-color: #fff; +} +.header-main-signin{ + .mt(-4px) !important; + .pt(10px); + letter-spacing: 1px; +} +.main-header{ + width:100%; + display:inline-block !important; + .muli-regular; + background-color: #fff; + .pt(15px); + //.mb(10px); + + & .main-header-maxW{ + .maxW(); + + & .main-header-left{ + width: 30%; + .left; + .pt(4px); + } + & .main-header-right{ + position: relative; + + } + + } +} +.offer-center{ + + width:auto; + margin:0px auto; +} +.offer-p{ + .center(); +} +.header_pera_offer + { + /*.left;*/ + .mt(6px); + color:gray; + .oswald-light(); + .pr(8px); + font-weight: normal; + } + & .header_pera_offer_pipe{ + border-left: 1px solid gray; + .pl(8px); + .pr(8px); + } + .ph-no + { + display: block; + .left(); + .pl(2%); + .pt(8px); + font-weight: bold; + .size(13px); + + } + + + + & .main-header-right{ + width:35%; + .right; + position: relative; + padding: 20px 0; + + & .company-phone-div{ + display: block; + float: right; + + & li{ + list-style: none; + text-decoration:unset; + & a{ + color:#464646; + + & span{ + + } + } + & a:focus{ + text-decoration:none; + } + } + + & .wish-menu{ + & :hover + { + color:#B1793A; + } + + } + + + & .header-main-signin{ + margin: 0; + padding: 0; + .left; + //.pr(15px); + .pt(4px); + + #login_user_name + { + .pr(10px); + } + + + & li a b{ + font-weight: normal !important; + .size(14px) !important; + .oswald-regular(); + color:#5a5a5a; + .transform(capitalize); + letter-spacing: 0px; + } + + & ul{ + z-index: 9999 !important; + .mt(10px); + } + } + + & .dropdown .dropdown-toggle b span{ + font-weight: normal !important; + .size(14px) !important; + .oswald-regular; + text-decoration:unset; + } + } + } + +.navbar +{ + + & .navbar-top-collapse{ + + width:100%; + .left(); + //padding: 17px 0 5px 0; + text-align: center; + /*overflow: hidden !important;*/ + display:inline-block; + + & ul.navbar-right{ + + float: none !important; + width: auto; + display: inline-block; + text-align: left; + + & .divider{ + display: none !important; + } + + & li.active{ + color:black; + + &:before{ + content: ""; + display: block; + width: 100%; + height: 0; + position: absolute; + top: 2px; + z-index: 9999; + } + & a:hover{ + background-color: transparent; + color:black; + } + } + + & .top-custom-menu{ + position: inherit; + + & .category-main-div{ + display:none; + position: absolute; + width: 200px; + background: white; + margin:0; + padding:0; + top:115%; + + ul{ + margin: 0; + padding: 0; + list-style: none; + width:200px; + + li{ + position: relative; + margin: 0; + padding: 10px 0px 5px 15px; + height: 35px; + width:100%; + + & a{ + color:black; + .size(13px); + white-space: nowrap; + max-width: 180px; + overflow: hidden; + text-overflow: ellipsis; + width:100%; + .oswald-light(); + } + + &:hover{ + background:@theme-color; + padding-left: 25px; + transition:0.5s; + } + } + ul{ + display:none; + position: relative; + top: -27px; + left: 100%; + padding: 0; + list-style: none; + background: white; + + li{ + float:none; + width:100%; + } + ul{ + top: -27px; + left: 100%; + position: relative; + background: white; + } + } + } + } + } + & .custom-menu-inside-div{ + position: relative; + background: white; + z-index:9999; + box-shadow: 0 0 5px 0 #ddd; + + & .custom-menu-inside-left-div{ + width:60%; + .left; + padding: 0% 0 2% 2%; + + & .category-heading-div{ + width: 32%; + .left; + padding: 15px 20px 0 20px; + display: table; + + & .category-heading-center{ + display: table-cell; + + & a{ + .size(14px); + .muli-regular; + color:@theme-color; + letter-spacing: 1px; + } + & p{ + .size(14px); + color:@theme-color; + } + + & .category-heading-p-hr{ + padding: 0; + .mb(15px); + .mt(5px); + width: 100px; + .left; + border-top: 1px solid @theme-color; + } + + & h4{ + clear:both; + + & a{ + color:black; + .size(13px); + .muli-regular; + color: gray; + + &:hover{ + color:black; + } + } + } + } + } + + & li{ + width: 50%; + } + + } + & .custom-menu-inside-right-div{ + width:40%; + .left; + + & .menu-right-side-img-div{ + width:100%; + + & .menu-right-side-img{ + width:auto; + max-width:100% + } + } + + + } + + & .custom-menu-inside-footer{ + width:100%; + display: inline-block; + .pt(1%); + + & .custom-menu-inside-footer-center{ + text-align: center; + + & .footer-image-div{ + width:33%; + .left; + + & img{ + width: auto; + max-width: 45%; + .left; + } + + & a{ + .size(13px); + .muli-regular; + float: left; + white-space: nowrap; + width: 150px; + overflow: hidden; + text-overflow: ellipsis; + .mt(20%); + margin-left: 10px; + color:black; + } + } + } + } + } + } + } +} +.custom-menu-inside-maxW figure { + margin: 0 !important; +} +.navbar-brand +{ + height: 65px; + .center; + float:none !important; + padding:0; + + img + { + max-height:65px !important; + height: auto !important; + width: auto; + max-width: 100%; + margin-top: unset; + .center; + } +} + +.header-stick #nth-menu{ + top: 80% !important; +} +#nth-menu{ + display:none; + position: absolute; + width: 80%; + top: 92%; + left:50%; + background: white; + z-index:9999; + box-shadow: 0 0 5px 0 #ddd; + +} +.static-custom-menu-inside-maxW{ + width:100% !important; +} +.dropdown-menu +{ + min-width: 120px !important; + z-index: 9999 !important; + color:@theme-color !important; +} +.custom-menu-inside-maxW{ + display:block; + margin:0px auto; +} +.wish_no_count +{ + .oswald-regular(); + + .my_wish_quantity + { + .oswald-regular(); + } +} +.wish_count{ + background: transparent; + color:#fff; + padding:0; + .oswald-regular(); +} +.my_cart_quantity{ + background: white; + color: #464646; + font-weight:normal; + padding:0; +} + + +/*Animation*/ + +.top-animation{ + -webkit-animation:animateright 0.3s; + animation:animatetop 0.3s; + transition:0.3s; +} +@-webkit-keyframes animatetop{ + from{top:-20px;opacity:0;} + to{top:100%;opacity:1;} +} +@keyframes animatetop{ + from{top:-20px;opacity:0;} + to{top:100%;opacity:1;} +} + +/*Left to right*/ +.left-to-animation{ + -webkit-animation:animateright 1s; + animation:animateleftright 1s; + transition:1s; +} +@-webkit-keyframes animateleftright{ + from{width:0px;} + to{width:100%;} +} +@keyframes animateleftright{ + from{width:0px;} + to{width:100%;} +} +.main-header-right-bottom +{ + display:inline-block; + .left; + + & #header-cart-li{ + float: right; + padding-right: 10px; + .size(12px); + + & :hover + { + color:@color-black; + } + } + & .mr-common{ + + .pr(9px); + .pl(5px); + .left; + .oswald-light(); + color:@color-black; + .size(13px); + } + & li{ + list-style: none; + + } +} + +.header_language_selector{ + width:50%; + .left; +} +.header_dropdown_language{ + float: left; + width: auto; + .mr(3%); +} +.header_curency_selector{ + width: auto; + .mr(2%); + .left; +} +.header_admin_border{ + padding-left:10px; +} +.header_btn_style{ + border:none !important; + background-color:white !important; + color: black !important; + .oswald-regular(); + text-transform: capitalize; + color:#5a5a5a; +} +.container{ + width:90% !important; + padding-left: unset; + padding-right: unset; + max-width: 1400px !important; +} +.header_search_box +{ + + box-sizing: border-box; + border: 0.5px solid gray; + .size(16px); + background-color: white; + background-position: 10px 10px; + background-repeat: no-repeat; + padding:10px; + position: relative; + width: 250px; +} +.btn-srch +{ + border-radius: unset; + border: 1px solid transparent; + position: absolute; + top: 11px; + background: transparent; + right: 5px; +} +.header_form{ + padding-left: 10px; + +} + +.custom-menu-inside-div-nth-child{ + width: 1200px !important; + + + & .custom-menu-inside-maxW-nth-child{ + width:100% !important; + } +} + +.first-level-category{ + width:100%; + display:inline-block; + .left; + + + .first-level-category-li{ + width: 100%; + /*.pl(20px); + background:#eee; + border-bottom:1px solid #CCC;*/ + + & .first-level-left-div{ + width:30%; + background: white; + border-bottom: 1px solid #E4E4E4; + border-right: 1px solid #E4E4E4; + padding: 5px 0 5px 0; + + + & .first-level-category-image{ + .left; + .pl(30px); + width:30%; + + & img{ + height: 50px; + width: 50px; + } + } + & .first-level-category-a{ + color: @color-black; + .size(14px); + padding: 15px 0 15px 30px; + display: inline-block; + width: 60%; + position: relative; + .oswald-light(); + .uppercase(); + letter-spacing: 1px; + } + } + .second-level-category{ + position: absolute; + left: 25%; + top:10%; + display:none; + } + } + +} +.header-search-li +{ + display: block; + font-size: 11px; + float:right; + .pr(0px) !important; + .pl(10px); + .mt(1px); +} +.active-li{ + border-right: 5px solid @theme-color !important; + .pl(25px) !important; + transition: 0.8s; +} +.header-stick .custom-menu-inside-div{ + top:90% !important; +} +.custom-menu-nth-div{ + width: 70% !important; + left: 15% !important; +} + +.toggel_div{ + position: absolute; + right: 0; + top: 0%; + width:70%; + height:0; + + & .toggel-inside-div{ + width: 100%; + display: inline-block; + padding: 0% 0 0 3%; + background:white; + } +} +.col_1{ + width: 35%; +} +.col_1 .sub_menu{ + float: none; + .mt(1%); +} +.menu_1_div{ + width: 100%; + display:none; + min-height:420px; + max-height:420px; + padding:5% 5% 5% 0; +} +.menu_1_column_div{ + max-width: 100%; + overflow-x: auto; +} +.sub_menu{ + list-style-type: none; + padding:0; + padding:0 15px 10px 0; + width:180px; + max-height: 380px; + display: flex !important; + flex-direction: column; + flex-wrap: wrap; +} +.sub-menu-ul-heading:last-child{ + .pb(15px) !important; +} +.sub-menu-ul-heading{ + .pr(20px); + width:180px; + .pb(5px); +} + +.sub_menu .menu_heading{ + .size(14px); + color:@theme-color; + .pb(15px); + .muli-semibold(); + .ellipsis(); + + &:hover{ + color: @theme-color; + } +} +.third-level-ul{ + list-style: none; + .pl(0px); +} +.third-level-li{ + padding: 0px 0px 12px 5px; + + & .sub_menu_list{ + color:gray; + .size(13px); + .ellipsis(); + + &:hover{ + color:black; + } + } +} + + +.header-stick{ + position: fixed; + top:0px; + background:#fff; + left:0; + transition: 0.3s; + border-bottom: 1px solid #eee; + padding: 17px 0 5px 0; +} +.navbar-static-top .navbar-header .navbar-brand .logo-stick{ + position: fixed; + top: 0px; + z-index: 1; + max-height: 39px !important; + .mt(15px) !important; + left: 5%; + max-height:40px !important; +} + +.transparentbg{ + background: rgba(255, 255, 255, 0.9) !important; + z-index: 9999; + position: absolute; + top: 0px; + bottom: 0; + width: 100% !important; + height: 100% !important; + transition: opacity 1s; + max-width:100% !important; + .pt(15px); +} + +.anim-search +{ + transition: all 0.3s ease 0s; + width: auto; + max-width:250px; + box-shadow: 0 10px 12px rgba(0,0,0,.175); + position: absolute; + top: 100%; + left:-5%; + z-index: 9999; + display: block; + background-color: #fff; + visibility: hidden; + + .input-group + { + position:relative; + + .oe_search_button + { + background-color: transparent; + border-color: transparent !important; + color: #222; + position: absolute !important; + top: 0 !important; + right: 0 !important; + z-index: 99999; + height: 45px; + transition: all 0.3s ease 0s; + } + .form-control + { + border-bottom: 2px solid #222 !important; + background: transparent; + box-shadow: unset !important; + border-radius: 0 !important; + transition: all 0.3s ease 0s; + height: 45px; + width:100%; + } + + } +} +.clarico_search_border +{ + border-bottom: 1px solid #222 !important; + border-top: unset !important; + border-left: unset !important; + border-right: unset !important; + .left(); +} +.clarico_close{ + display:none; + position:absolute; + top: -380%; + right: -120%; + z-index: 2; + height: 34px; + width: 34px; + background-color: #fff; + box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.15); + border: solid 1px rgba(0, 0, 0, 0.06); + border-radius: 50%; + font-size: 15px; + line-height: 32px; + color: #878787; + text-align: center; + cursor: pointer; +} + + +.clarico_popup +{ + transition: all 200ms ease-in; + transform: scale(1); +} +.zoom-animation { + -webkit-animation:animatezoom 0.6s; + animation:animatezoom 0.6s +} +.fa_icon_search +{ + .left(); +} + +.scroll_remove +{ + overflow: hidden; +} + +sup{ + top: -0.8em; +} + + + +.account-ul{ + width:200px; + border-radius: 0; + + & li{ + padding: 12px 6px 6px 6px; + + & .fa_common_style_header{ + padding: 3px 5px 0 15px; + color:@theme-color; + .size(12px); + } + + & .ul_class_admin_name{ + + & a{ + color:gray; + .muli-regular; + .size(13px); + letter-spacing: 0; + } + } + } + & #o_logout{ + padding: 10px 40px 10px 40px; + .mt(14px); + .mb(0px); + width: 100%; + .pl(9px); + .pr(9px); + .pb(4px); + + a + { + color:#fff; + + &:hover + { + .bg(@theme-color); + } + } + + } +} + +.nav > li > a { + position: relative; + display: block; + padding: 10px 14px !important; +} + +.top_menu{ + display:none; +} + +/*Click to scroll top*/ +.scrollup-div{ + position: fixed; + right: 15px; + bottom: 15px; + background: black; + width: 35px; + height: 35px; + border-radius: 100%; + display:none; + cursor: pointer; + transition:0.3s; + z-index:9999; + + &:hover{ + background:@theme-color; + } + + .scrollup-i{ + padding: 6px 0px 0 10px; + .size(21px); + color: white; + font-weight: 900; + width: 35px; + height: 35px; + transition:0.3s; + } +} + + +/*New Static Menu*/ + + +.content-cat{ + width: 92%; + display: block; + .center; + margin: 0px auto; + .pt(10px); + + & .title_cat{ + .size(14px); + font-family:@m-semibold; + .capitalize; + letter-spacing: 2px; + margin: 10px 0 0 0; + color:gray; + } + & .count_cat{ + color:gray; + .size(12px); + } +} + + +.column-main{ + + & .cat-column{ + width:25%; + padding:2% 1%; + .left; + position: relative; + } +} +.thumb{ + + width: 100%; + + & .menu-cate-image{ + width: 100%; + max-width:100%; + max-height: 100%; + max-width: 1400px; + display: block; + margin: 0px auto; + } +} +.block-cate{ + .pt(8%); + border-top: none !important; + + .button_cat{ + position: absolute; + top: 5%; + width: 92%; + padding: 10px 10px 10px 10px; + .center; + .size(12px); + .muli-bold; + .uppercase; + letter-spacing: 1px; + border:1px solid @theme-color; + + &:before{ + content: ''; + position: absolute; + top: auto; + left: 47%; + border-bottom-width: 7px; + border-bottom-style: solid; + border-bottom-color: #fff; + border-top-style: solid; + border-top-color: #fff; + border-left: 4px solid transparent; + border-right: 4px solid transparent; + z-index: 2; + border-bottom: 0; + border-top-width: 8px; + bottom: -6px; + } + + &:after{ + content: ''; + position: absolute; + top: auto; + left: 47%; + border-top-width: 7px; + border-bottom-style: solid; + border-bottom-color: @theme-color; + border-top-style: solid; + border-top-color: @theme-color; + border-left: 4px solid transparent; + border-right: 4px solid transparent; + z-index: 1; + border-bottom: 0; + bottom: -7px; + } + } +} +.block-cate-down{ + + border-top: none !important; + + .button_cat{ + position: absolute; + bottom: -33px; + width: 92%; + padding: 10px 10px 10px 10px; + .center; + .size(12px); + .muli-bold; + .uppercase; + letter-spacing: 1px; + border:1px solid @theme-color; + + &:before{ + content: ''; + position: absolute; + top: -6px; + left: 47%; + border-bottom-width: 7px; + border-bottom-style: solid; + border-bottom-color: #fff; + border-top-width: 0; + border-top-style: solid; + border-top-color: #fff; + border-left: 4px solid transparent; + border-right: 4px solid transparent; + z-index: 2; + } + + &:after{ + content: ''; + position: absolute; + top: -7px; + left: 47%; + border-bottom-width: 7px; + border-bottom-style: solid; + border-bottom-color: @theme-color; + border-top-style: solid; + border-top-color: @theme-color; + border-left: 4px solid transparent; + border-right: 4px solid transparent; + z-index: 1; + border-top: none; + } + } + + + & .content-cat{ + .center; + width: 92%; + display: block; + .pb(6%); + margin: 0px auto; + + & .title_cat{ + .size(14px); + font-family:@m-semibold; + .capitalize; + letter-spacing: 2px; + margin: 0 0 0px 0; + color:gray; + + & .count_cat{ + color:gray; + .size(12px); + } + } + } +} + +.menu-cate-hover{ + background:@theme-color; + border:2px solid @theme-color !important; + color: white !important; + + &:before{ + border-bottom-color: @theme-color !important; + border-top-color: @theme-color !important; + } + &:after{ + border-bottom-color: @theme-color !important; + border-top-color: @theme-color !important; + } + +} +.opacity-full{ + opacity: 1 !important; + transition: opacity 0.8s; + +} +.opacity{ + opacity:0.3; + transition: 0.3s ease-in; +} +.clarico_search_border +{ + border-bottom: 1px solid #222 !important; + border-top: unset !important; + border-left: unset !important; + border-right: unset !important; + .left(); +} + + + +.clarico_popup +{ +transition: all 200ms ease-in; + transform: scale(1); +} +.zoom-animation { + -webkit-animation:animatezoom 0.6s; + animation:animatezoom 0.6s +} +.fa_icon_search +{ + .left(); +} + +.scroll_remove +{ + overflow: hidden; +} + +/*Compare Error*/ + +.comparelist_error{ + .muli-regular; + .size(15px); + position: fixed; + bottom:3%; + right:10%; + z-index:9999; + background:@theme-color; + padding:1%; + color:white; + display:none; +} + +.block-none{ + display:none; + position: absolute !important; + width: 80%; + left: 10% !important; + top: 92%; +} +.static_menu_mobile_view{ + display:none; +} + + +/* Load icon style in Layout */ +.cus_theme_loader_layout svg path, +.cus_theme_loader_layout svg rect{ + fill: @theme-color; +} +.cus_theme_loader_layout svg{ +.center; +} +.cus_theme_loader_layout{ + position: fixed; + top: 0; + bottom: 0; + left:0; + right:0; + width: 100%; + background: rgba(0,0,0,0.7); + z-index: 9999; +} +.cus_theme_loader_div_layout{ + .mt(29%); +.common-div; +} +.oe_login_buttons +{ + width: 50%; + float: left; +} + +.login_modle { + position: fixed; + width: 100%; + top: 0; + left: 0; + bottom: 0; + right: 0; + height: 100vh; + z-index: 9999; + visibility: hidden; + background: rgba(255,255,255,0.7); + + .login-main + { + max-width:800px; + display:block; + margin: 0px auto; + + .login-form-left { + + width: 100%; + padding: 10px; + box-shadow: 0px 0px 5px #ccc; + z-index: 9999; + background: white; + .mt(10%); + display:inline-block; + .pb(5%); + border-bottom: 4px solid @theme-color; + + + & .left-cnt{ + margin-left: 3%; + position: relative; + + & .close-btn{ + position: absolute; + z-index: 2; + top: 0; + right: 15px; + height: 34px; + width: 34px; + background-color: #fff; + box-shadow: 0 1px 2px 0 rgba(0, 0, 0, .15); + border: solid 1px rgba(0, 0, 0, .06); + border-radius: 50%; + font-size: 15px; + line-height: 32px; + color: #878787; + text-align: center; + cursor: pointer; + } + + /*& .login-form-left-h2{ + + } + + + + & .email-label-wishlist , .password-label-wishlist{ + .muli-regular; + .size(13px); + font-weight: normal; + + & .mandatory{ + color:red; + } + }*/ + + & #login , #password{ + width: 70%; + height: 40px; + border-radius: 0; + border: 0; + padding-left: 10px; + border-bottom: 1px solid #000 !important; + + &:focus{ + border-bottom: 1px solid @theme-color !important; + border:0; + box-shadow:0; + } + } + + } + } + } +} + +.login-form-left-content +{ + display:block; + width: 60%; + float:left; +} +.wish_login_img_div +{ + display:block; + width:40%; + float:left; + + img + { + width:auto; + max-width:100%; + display:block; + margin:0px auto; + } +} + +.login-form-left-h2{ + .mb(10px); +} +.login-form-hr +{ + .mt(0); +} +.email-label-wishlist , .password-label-wishlist{ + .muli-regular; + .size(13px); + font-weight: normal; + + & .mandatory{ + color:red; + } +} +ul#top_menu{ + + > li.active{ + border-top:2px solid @theme-color; + .mt(-2px); + } + > li{ + position: static; + } +} + +.active_menu +{ + border-top:2px solid @theme-color; + .mt(-2px); +} +.category-mobile-view{ + display:none; +} +.fa .fa-chevron-right{ + display:none; +} +.expand-div{ + padding:0; +} +#top_menu ul.dropdown-menu{ + right:auto; + top: 90%; +// width:100%; + + & .active > a{ + background-color : @theme-color !important; + } +} + +.header-stick #top_menu ul.dropdown-menu{ + top:90% !important; +} +.js_searchBox +{ + display: block; + .right(); + .pr(5px); + .pt(2px); + a { + font-size: 14px; + position: relative; + z-index: 15; + display: inline-block; + color:#464646; + + &:focus{ + text-decoration: none; + color: #464646; + } + + i{ + .size(14px); + } + } + .close_icon + { + display: none; + } + +} + + +/* Header Style One */ +.main-header-new +{ + .main-header-left + { + display: none; + } + .company-phone-div{ + .mt(0) !important; + .h_style_searchbox{ + opacity: 1 !important; + width: 350px !important; + transition: unset !important; + .left() !important; + .p(0); + } + .header-social-new{ + .mt(10px); + } + } +} + + +.container-style-new +{ + // compare icon + .header_newstyle_icon + { + display: inline-block; + width: 30%; + .pt(3%); + .right(); + + li{ + list-style: none; + text-decoration: unset; + } + } + // header right section + .main-header-right-new + { + display: inline-block; + width: 30%; + .right(); + .pt(2%); + + .login_acc_new_style { + .right(); + .mt(15px); + .mr(10px); + ul{ + .p(0); + li{ + list-style: none; + text-decoration: unset; + + .header_admin_border{ + .p(0); + } + } + } + } + .header_newstyle_icon + { + .right() !important; + .p(0) !important; + } + .pricelist_right{ + .right(); + .mt(5px); + } + #header-social + { + width: unset !important; + } + } + .navbar-top-collapse{ + .mt(0); + } +} + +/* Footer new style */ +.footer_new_style{ + .company_details{ + width:30%; + .left(); + + .span_lbl{ + display: inline-block; + } + } + .footer_page_new{ + width:40%; + .left(); + } + .news_letter + { + width:30%; + .left(); + } +} + + + +#top_menu .dropdown +{ + ul.dropdown-menu >li >a + { + padding: 7px 20px; + + span + { + .oswald-regular(); + text-transform: uppercase; + font-size: 13px; + letter-spacing: 1px; + } + + } + ul.dropdown-menu >li.active >a + { + &:hover + { + color:#fff; + } + } +} + +.navbar-header-container,.navbar-top-collapse-container +{ + .block; +} +.main-header-before +{ + display: inline-block !important; + width: 100%; + .mt(15px); +} +.main-header-before-maxW +{ + .block; +} +.company_logo_main +{ + display: block; +float: right; +width: 30%; +} +.pricelist_contact_conatiner +{ + display:block; + width:35%; + float:right; + padding: 20px 0; +} + +.company_pricelist +{ + display: inline-block; + + .company_pricelist_container + { + padding: 1px 7px; + } + + a.header_btn_style + { + padding:0; + .bg(transparent) !important; + } +} +.header_style_logo_stick +{ + display:none; +} +.header-stick .header_style_logo_stick +{ + position: fixed; + top: 0px; + z-index: 1; + max-height: 39px !important; + .mt(15px) !important; + left: 5%; + max-height:40px !important; +} + +.mr-common +{ + display:inline-block; +} +.navbar-header +{ + .navbar-brand.logo + { + display:none; + } +} +.company_logo +{ + display: block; + margin: 0px auto; + text-align: center; + float: none !important; + height: 65px; + + img + { + max-height: 70px !important; + height: auto !important; + width: auto; + max-width: 100%; + margin:0px auto; + } +} + +.header_cart_default +{ + .cart-update + { + display:none; + } + .cart_style_2 { + display: inline-block; + a + { + color:#464646; + } + } +} +#header-wishlist +{ + display:none; +} +#user_sign_in +{ + padding: 0 7px; +} +.company_language +{ + .ul_margin + { + .btn-group + { + >ul + { + border-radius: 0; + box-shadow: unset; + + > li >a + { + .oswald-regular(); + line-height: 180% !important; + color: #666 !important; + + } + } + + } + } +} +.header_curency_selector +{ + ul + { + border-radius: 0; + box-shadow: unset; + + >li>a>span + { + .oswald-regular(); + line-height: 180% !important; + color: #666 !important; + } + } +} +.btn-group .dropdown-toggle:active, .btn-group.open .dropdown-toggle { + outline: 0; + text-decoration:none; +} + + + + + + +//default_check_box + +.s_website_form{ + & .radio label, .checkbox label{ + padding:0; + } + & input[type="radio"], input[type="checkbox"]{ + margin: 8px 0 0; + } + & label > input[type="checkbox"]{ + vertical-align: top; + padding: 0 5px; + } + + & .radio input[type="radio"], .radio-inline input[type="radio"], .checkbox input[type="checkbox"], .checkbox-inline input[type="checkbox"]{ + position: relative; + margin-top: 2px; + } +} + + + + + + + diff --git a/ext/3rd-party-addons/clarico_layout/static/src/less/header_responsive.less b/ext/3rd-party-addons/clarico_layout/static/src/less/header_responsive.less new file mode 100755 index 00000000..3122b646 --- /dev/null +++ b/ext/3rd-party-addons/clarico_layout/static/src/less/header_responsive.less @@ -0,0 +1,681 @@ +@media (max-width: 1200px) { + .navbar .navbar-top-collapse ul.navbar-right { + float: none !important; + width: 100%; + .left; + .mr(0px) !important; + } + .main_header_default + { + display:none !important; + } + .navbar-static-top .container + { + .mt(0); + } + #top_menu ul.dropdown-menu{ + right:0; + top: 90%; + width:100%; +} + #top_menu ul.dropdown-menu .active > a{ + + background-color: unset !important; + color: #444; + &:hover{ + color: #000 !important; + } + } + .navbar-top-collapse + { + border-top:none !important; + } + .container > .navbar-header, .container-fluid > .navbar-header, .container > .navbar-collapse, .container-fluid > .navbar-collapse { + .mr(0px); + .ml(0px); + + } + .container > .navbar-header + { + max-width: 100%; + } + .navbar .navbar-header .navbar-brand img + { + .left(); + max-height: 50px !important; + } + + .navbar-header { + float: none; + } + .navbar-left,.navbar-right { + float: none !important; + } + .navbar-toggle { + display: block; + float:left; + } + .navbar-collapse { + border-top: 1px solid transparent; + box-shadow: inset 0 1px 0 rgba(255,255,255,0.1); + } + .navbar-fixed-top { + top: 0; + border-width: 0 0 1px; + } + .navbar-collapse.collapse { + // display: none!important; + } + .navbar-nav { + float: none!important; + margin-top: 7.5px; + } + .navbar-nav>li { + float: none; + } + .navbar-nav>li>a { + padding-top: 10px; + padding-bottom: 10px; + } + .content-cat .title_cat{ + .size(12px); + letter-spacing:1px; + + } + .collapse.in{ + display:block !important; + } + .custom-menu-inside-div{ + width:100%; + display:none; + padding:0; + } + .column-main{ + .pb(2%) !important; + display: inline-block; + } + .button_cat, .thumb{ + display:none !important; + } + .cat-column{ + width:100% !important; + } + .block-cate { + .pt(0px) !important; + + & > div{ + height:0 !important; + } + } + .content-cat{ + text-align: left !important; + .pb(0px) !important; + } + .title_cat{ + .size(13px) !important; + } + .static_menu_mobile_view{ + display:block; + + & li:first-child{ + .pt(0px) !important; + } + & li:last-child{ + .pb(10px) !important; + } + .category-heading-p-hr{ + .pb(10px) !important; + } + + & a{ + .muli-regular !important; + letter-spacing:0px !important; + color:black !important; + } + } + .expand-plus-icon{ + cursor: pointer; + .right; + .mt(10px); + } + .mobile-view-static-menu{ + display:block; + .mb(10px); + + & hr{ + padding: 0; + .mt(15px); + .mb(0); + } + } + + .content-cat{ + text-align: left; + + &:last-child{ + .pb(10px); + } + } + .custom-menu-inside-right-div{ + display:none; + } + .custom-menu-inside-left-div{ + width:100% !important; + .pb(7%) !important; + } + .category-heading-div{ + width:90% !important; + text-align:left; + padding: 10px 0 10px 20px !important; + } + .expand-div{ + width:100%; + position: relative; + border: 0; + box-shadow: none; + display:none; + } + + .category-mobile-view{ + display:block; + .ml(10px); + + + & .first-level-li{ + width: 100%; + display: inline-block; + } + + & span.caret{ + cursor:pointer; + z-index:9999; + .mt(10px); + } + + } + + & .first-level-category-image{ + width:50px; + .left; + .mr(10px); + + & img{ + width: auto; + max-width: 100%; + } + } + & .first-level-category-a{ + .left; + .pt(10px); + } + + & .second_level-ul{ + width: 91%; + clear: both; + display:none; + .mr(2px); + border: 0; + box-shadow: none; + position: relative; + .right; + + & .second-level-a{ + width: 90%; + display: inline-block; + padding: 7px 0 7px 0; + + &:hover{ + background-color:white; + } + } + } + + .navbar-default .navbar-nav > .open > a{ + background-color : white; + + &:hover{ + background-color : white; + } + } + .first-level-category{ + display:none; + } + .third-level-ul{ + display:none; + list-style: none; + .ml(15px); + position: relative; + border: 0; + box-shadow: none; + + & li{ + padding: 2px 0 2px 0; + } + } + .category-heading-p-hr{ + display:none; + } + ul#top_menu{ + + > li:hover{ + border-top:0; + .mt(0); + } + > li.active{ + border-top:0; + .mt(0); + } + li ul.dropdown-menu{ + position:relative; + } + } + #top_menu{ + margin:0; + .left !important; + display:none; + } + + .second_level-ul > li{ + width:90%; + } + + span.submenu-a{ + position: absolute; + right: 3%; + cursor: pointer; + } + + .category-mobile-view{ + display:block; + } + .first-level-left-div{ + display:none; + } + .fa .fa-chevron-right{ + display:none; + } + .first-level-category-li{ + .common-div; + .pt(5px); + .pb(5px); + } + .submenu_expand{ + position: static; + .left; + list-style: none; + .pt(10px); + width:100%; + } + .toggel-div-effect{ + width: 90%; + box-shadow: unset; + border: 0; + .ml(20px); + } + .sub-menu-ul-heading, .third-level-li{ + .pt(10px); + .pb(10px); + } + .category-heading-center a{ + color:black !important; + .size(13px) !important; + } + .second-level-category-caret{ + .mt(-15px) !important; + } + .category-heading-center h4 a{ + color:#777777 !important; + } + .expand-div{ + padding:0px 20px 0px 20px; + } +} +@media (max-width:980px){ + .main-header-left{ + width: 13% !important; + } + .offer-center { + width: 55%; + } + .nav > li > a { + padding: 10px 9px !important; + } + .header_pera_offer + { + font-size: 13px; + } + .navbar-default .navbar-nav > li > a { + font-size: 12px; + } + .company_details_footer + { + width:100%; + float:none; + } + .social_icons_footer + { width: 100%; + display: inline-block; + float: none; + .pt(2%); + .pb(2%); + } + .theme_icon_and_social_container .search_bar_footer + { + display: inline-block; + width: 100%; + float: none; + .pt(2%); + } +} +@media (max-width:895px) +{ + .nav > li > a { + padding: 10px 8px !important; + } +} +@media (max-width:800px) +{ + .anim-search + { + left:auto; + right:0; + } + .navbar.navbar-static-top + { + .mt(0); + } + .cart_style_2 + { + a + { + .size(12px); + } + } + + + .main-header-left{ + width: 7% !important; + } + .offer-center { + width: 61%; + } + + .nav > li > a { + padding: 10px 8px !important; + } + + .main-header-left{ + width: 25% !important; + } + .offer-center { + width: 61%; + } + .header_pera_offer { + display: inline-block; + padding-right: 2px; + font-size:13px; + } + .header_pera_offer_pipe { + padding-left: 5px; + padding-right: 2px; + } + .main-header-right { + width: auto !important; + } + .company_logo_main + { + float: left; + + img + { + float:left; + max-height: 55px !important; + } + } + .main-header-right + { + .company-phone-div + { + float: left; + } + .js_searchBox + { + padding:0 5px; + .pt(0); + + a i + { + .size(12px); + .pt(2px); + vertical-align: top; + } + + } + + } + .pricelist_contact_conatiner + { + width: auto; + padding: 13px 0px; + } + .header-main-signin{ + //padding-right: 10px !important; + padding-top: 2px !important; + } + .mr-common { + padding-right: 3px !important; + padding-left: 5px !important; + } + .offer-p { + padding-left: 3%; + } + .header-right .company-phone-div .dropdown .dropdown-toggle b span { + font-size: 11px !important; + } + .navbar-default .navbar-nav > li > a { + font-size: 12px; + } + .nav navbar-nav navbar-right + { + float: right !important; + .mr(10px); + } + .navbar .navbar-top-collapse ul.navbar-right { + /*float: right !important;*/ + width: auto; + display: inline-block; + text-align: left; + .mr(20px); + } + .logo_name_container + { + .size(20px); + } + .theme_icon_and_social_container .search_bar_footer .lbl_div_container .newsltr_lbl + { + .size(15px); + } + #header-social + { + li { + margin: 0 3px 0 3px; + .size(12px); + } + .header_cart_main + { + .size(12px); + vertical-align: top; + } + } + + .div_img{ + height: auto !important; + .mb(10%); + } + + .clarico_close { + top: -100%; + right: -30px; + } + .main_header_default + { + display:none !important; + } + .main-header-before + { + .mt(10px); + } + .company_logo + { + height:60px; + } + +} + +@media (max-width:768px){ + .main-header-right + { + padding: 15px 0; + } + .main-header-right .company-phone-div .header-main-signin { + padding-right: unset; + } + .anim-search + { + + width: 239px; + } + .btn { + font-size: 13px; + } + .header_pera_offer + { + font-size: 12px; + } + .main-header-right .company-phone-div li a span { + font-size: 11px !important; + } + + + .header-right .company-phone-div .dropdown .dropdown-toggle b span + { + font-size: 10px !important; + } + .navbar-brand img { + max-height: 60px !important; + } + .navbar .navbar-top-collapse ul.navbar-right { + float: left !important; + width: auto; + text-align: left; + margin-left: 20px; + } + .navbar-default .navbar-nav > li > a { + font-size: 12px; + } + .nav > li > a { + padding: 10px 9px !important; + } + .navbar-brand img { + max-height: 50px !important; + } + .first-level-category-caret{ + .mt(15px) !important; + } + & .second_level-ul{ + width: 97%; + clear: both; + display:none; + .ml(35px); + border: 0; + box-shadow: none; + position: relative; + + & .second-level-a{ + width: 100%; + display: inline-block; + padding: 10px 0 10px 0 !important; + } + + } + .third-level-ul{ + display:none; + list-style: none; + .ml(15px); + + & li{ + padding: 10px 0 10px 0; + } + } +} + +@media (max-width: 500px) { + + .company_logo_main + { + display:none; + } + .navbar-brand { + height: 50px; + } + .js_searchBox .header_right_search_icon_link + { + vertical-align: top; + } + .company_logo_main img + { + max-height: 40px !important; + } + .navbar-header .navbar-brand.logo + { + display: block; + } + .navbar-toggle + { + float:right; + } + .navbar-static-top .container + { + .mt(0); + } + .navbar .navbar-header .navbar-brand img + { + max-height: 40px !important; + } + .first-level-category-image{ + width:40px !important; + } + .first-level-category-a , .second-level-a , .third-level-ul li a{ + .size(14px); + } + .third-level-ul li a{ + line-height:5px; + } + .wish_login_img_div{ + display:none; + } + .login-form-left-content{ + width:100%; + } + .ul_class_admin_name a{ + .size(12px) !important; + } + .theme_icon_and_social_container .search_bar_footer .lbl_div_container .input-group { + width: 80%; + } + .theme_icon_and_social_container .search_bar_footer .lbl_div_container .newsltr_lbl { + + margin: 0 3% 15px auto; + } + .anim-search { + width: 220px; + right: 0; + + .input-group{ + margin: 0 auto; + } + } +} + + + diff --git a/ext/3rd-party-addons/clarico_layout/template/assets.xml b/ext/3rd-party-addons/clarico_layout/template/assets.xml new file mode 100755 index 00000000..d5a26bf8 --- /dev/null +++ b/ext/3rd-party-addons/clarico_layout/template/assets.xml @@ -0,0 +1,15 @@ + + + + \ No newline at end of file diff --git a/ext/3rd-party-addons/clarico_layout/template/template.xml b/ext/3rd-party-addons/clarico_layout/template/template.xml new file mode 100755 index 00000000..d50d3b6f --- /dev/null +++ b/ext/3rd-party-addons/clarico_layout/template/template.xml @@ -0,0 +1,517 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ext/3rd-party-addons/clarico_layout/view/clarico_header.xml b/ext/3rd-party-addons/clarico_layout/view/clarico_header.xml new file mode 100755 index 00000000..970345df --- /dev/null +++ b/ext/3rd-party-addons/clarico_layout/view/clarico_header.xml @@ -0,0 +1,72 @@ + + + + Website Menu + website.menu + form + tree,form,list + {'search_default_my_websites':1} + + + + website.menu.tree + website.menu + child_id + + + + + + + + + + + + + + website.menu.form + website.menu + +
+ +
+ +
+ + + + + + + + + + +
+
+
+
+ + + Website Menu Configuration + ir.actions.act_window + website.menu + tree,form + + +

+ Click to define a new Website Carousel filter. +

+ website Carousel filter are used to browse your products through the + touchscreen interface. +

+
+
+ + +
diff --git a/ext/3rd-party-addons/clarico_layout/view/header_style.xml b/ext/3rd-party-addons/clarico_layout/view/header_style.xml new file mode 100755 index 00000000..e60b2a87 --- /dev/null +++ b/ext/3rd-party-addons/clarico_layout/view/header_style.xml @@ -0,0 +1,33 @@ + + + + res.config.settings.view.form.inherit.clarico.layout + res.config.settings + + +
+

Header

+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file diff --git a/ext/3rd-party-addons/clarico_layout/view/website_product_category.xml b/ext/3rd-party-addons/clarico_layout/view/website_product_category.xml new file mode 100755 index 00000000..e2cea1a5 --- /dev/null +++ b/ext/3rd-party-addons/clarico_layout/view/website_product_category.xml @@ -0,0 +1,15 @@ + + + + + public.category.form + product.public.category + + + + + + + + + diff --git a/ext/3rd-party-addons/clarico_layout2/__init__.py b/ext/3rd-party-addons/clarico_layout2/__init__.py new file mode 100755 index 00000000..8b137891 --- /dev/null +++ b/ext/3rd-party-addons/clarico_layout2/__init__.py @@ -0,0 +1 @@ + diff --git a/ext/3rd-party-addons/clarico_layout2/__manifest__.py b/ext/3rd-party-addons/clarico_layout2/__manifest__.py new file mode 100755 index 00000000..bb5f6d6a --- /dev/null +++ b/ext/3rd-party-addons/clarico_layout2/__manifest__.py @@ -0,0 +1,25 @@ +{ + # Theme information + 'name' : 'Clarico Landing Page Layout1', + 'category' : 'Website', + 'version' : '1.0', + 'summary': 'Landing Page Style 1', + 'description': """""", + + # Dependencies + 'depends': [ + 'clarico_cms_blocks' + ], + + # Views + 'data': [ + 'templates/template.xml', + ], + + # Author + 'author': 'Emipro Technologies Pvt. Ltd.', + 'website': 'http://www.emiprotechnologies.com', + + # Technical + 'installable': True, +} diff --git a/ext/3rd-party-addons/clarico_layout2/static/description/icon.png b/ext/3rd-party-addons/clarico_layout2/static/description/icon.png new file mode 100755 index 00000000..09fd34ab Binary files /dev/null and b/ext/3rd-party-addons/clarico_layout2/static/description/icon.png differ diff --git a/ext/3rd-party-addons/clarico_layout2/templates/template.xml b/ext/3rd-party-addons/clarico_layout2/templates/template.xml new file mode 100755 index 00000000..a458f226 --- /dev/null +++ b/ext/3rd-party-addons/clarico_layout2/templates/template.xml @@ -0,0 +1,327 @@ + + + + diff --git a/ext/3rd-party-addons/clarico_pricefilter/__init__.py b/ext/3rd-party-addons/clarico_pricefilter/__init__.py new file mode 100755 index 00000000..5397a569 --- /dev/null +++ b/ext/3rd-party-addons/clarico_pricefilter/__init__.py @@ -0,0 +1 @@ +from . import controller diff --git a/ext/3rd-party-addons/clarico_pricefilter/__manifest__.py b/ext/3rd-party-addons/clarico_pricefilter/__manifest__.py new file mode 100755 index 00000000..4f160883 --- /dev/null +++ b/ext/3rd-party-addons/clarico_pricefilter/__manifest__.py @@ -0,0 +1,26 @@ +{ + # Theme information + 'name' : 'Clarico Price Filter', + 'category' : 'Website', + 'version' : '1.0', + 'summary': 'Filter Products by Price Range', + 'description': """""", + + # Dependencies + 'depends': [ + 'clarico_shop' + ], + + # Views + 'data': [ + 'templates/template.xml', + 'templates/assets.xml', + ], + + # Author + 'author': 'Emipro Technologies Pvt. Ltd.', + 'website': 'http://www.emiprotechnologies.com', + + # Technical + 'installable': True, +} diff --git a/ext/3rd-party-addons/clarico_pricefilter/controller/__init__.py b/ext/3rd-party-addons/clarico_pricefilter/controller/__init__.py new file mode 100755 index 00000000..12a7e529 --- /dev/null +++ b/ext/3rd-party-addons/clarico_pricefilter/controller/__init__.py @@ -0,0 +1 @@ +from . import main diff --git a/ext/3rd-party-addons/clarico_pricefilter/controller/main.py b/ext/3rd-party-addons/clarico_pricefilter/controller/main.py new file mode 100755 index 00000000..2b8107c3 --- /dev/null +++ b/ext/3rd-party-addons/clarico_pricefilter/controller/main.py @@ -0,0 +1,84 @@ +import odoo +from odoo import http +from odoo import fields +from odoo.http import request +from odoo.addons.clarico_shop.controllers.main import claricoShop + + +class claricoPriceFilter(claricoShop): + + def _get_search_domain(self, search, category, attrib_values, price_vals = {}): + domain = request.website.sale_product_domain() + if search: + for srch in search.split(" "): + domain += [ + '|', '|', '|','|', ('name', 'ilike', srch), ('description', 'ilike', srch), + ('description_sale', 'ilike', srch), ('product_variant_ids.default_code', 'ilike', srch), + ('brand_ept_id.name','ilike', srch)] + if category: + domain += [('public_categ_ids', 'child_of', int(category))] + + if price_vals : + domain += [('list_price','>=',price_vals.get('min_val')),('list_price','<=',price_vals.get('max_val'))] + + if attrib_values: + attrib = None + ids = [] + for value in attrib_values: + if value[0] == 0 : + ids.append(value[1]) + domain += [('brand_ept_id.id', 'in', ids)] + elif not attrib: + attrib = value[0] + ids.append(value[1]) + elif value[0] == attrib: + ids.append(value[1]) + else: + domain += [('attribute_line_ids.value_ids', 'in', ids)] + attrib = value[0] + ids = [value[1]] + if attrib: + domain += [('attribute_line_ids.value_ids', 'in', ids)] + return domain + + @http.route([ + '/shop', + '/shop/page/', + '/shop/category/', + '/shop/category//page/' + ], type='http', auth="public", website=True) + def shop(self, page=0, category=None, search='', ppg=False, **post): + request.cr.execute( 'select min(list_price),max(list_price) from product_template where sale_ok=True and active=True and website_published=True') + min_max_vals = request.cr.fetchall() + min_val = min_max_vals[0][0] or 0 + if int(min_val) == 0: + min_val = 0 + max_val = min_max_vals[0][1] or 1 + + custom_min_val = custom_max_val = 0 + product_price_search_vals = {} + if request.httprequest.args.getlist('min_val') and request.httprequest.args.getlist('max_val'): + custom_min_val = float(request.httprequest.args.getlist('min_val')[0]) + custom_max_val = float(request.httprequest.args.getlist('max_val')[0]) + if custom_min_val > custom_max_val: + tmp = custom_max_val + custom_max_val = custom_min_val + custom_min_val = tmp + product_price_search_vals.update({'min_val':custom_min_val,'max_val':custom_max_val}) + post.update({'attrib_price':'%s-%s'%(custom_min_val,custom_max_val)}) + + else : + post.update({'attrib_price':'%s-%s'%(min_val,max_val)}) + + + + response = super(claricoPriceFilter, self).shop(page=page, category=category, search=search,ppg=ppg, **post) + response.qcontext['custom_min_val'] = custom_min_val + response.qcontext['custom_max_val'] = custom_max_val + response.qcontext['min_val'] = min_val + response.qcontext['max_val'] = max_val + return response + + + + diff --git a/ext/3rd-party-addons/clarico_pricefilter/static/description/icon.png b/ext/3rd-party-addons/clarico_pricefilter/static/description/icon.png new file mode 100755 index 00000000..09fd34ab Binary files /dev/null and b/ext/3rd-party-addons/clarico_pricefilter/static/description/icon.png differ diff --git a/ext/3rd-party-addons/clarico_pricefilter/static/src/js/ion.rangeSlider.js b/ext/3rd-party-addons/clarico_pricefilter/static/src/js/ion.rangeSlider.js new file mode 100755 index 00000000..2fe2c8dd --- /dev/null +++ b/ext/3rd-party-addons/clarico_pricefilter/static/src/js/ion.rangeSlider.js @@ -0,0 +1,2450 @@ +// Ion.RangeSlider +// version 2.2.0 Build: 380 +// © Denis Ineshin, 2017 +// https://github.com/IonDen +// +// Project page: http://ionden.com/a/plugins/ion.rangeSlider/en.html +// GitHub page: https://github.com/IonDen/ion.rangeSlider +// +// Released under MIT licence: +// http://ionden.com/a/plugins/licence-en.html +// ===================================================================================================================== + +;(function(factory) { + if (typeof define === "function" && define.amd) { + define(["jquery"], function (jQuery) { + return factory(jQuery, document, window, navigator); + }); + } else if (typeof exports === "object") { + factory(require("jquery"), document, window, navigator); + } else { + factory(jQuery, document, window, navigator); + } +} (function ($, document, window, navigator, undefined) { + "use strict"; + + // ================================================================================================================= + // Service + + var plugin_count = 0; + + // IE8 fix + var is_old_ie = (function () { + var n = navigator.userAgent, + r = /msie\s\d+/i, + v; + if (n.search(r) > 0) { + v = r.exec(n).toString(); + v = v.split(" ")[1]; + if (v < 9) { + $("html").addClass("lt-ie9"); + return true; + } + } + return false; + } ()); + if (!Function.prototype.bind) { + Function.prototype.bind = function bind(that) { + + var target = this; + var slice = [].slice; + + if (typeof target != "function") { + throw new TypeError(); + } + + var args = slice.call(arguments, 1), + bound = function () { + + if (this instanceof bound) { + + var F = function(){}; + F.prototype = target.prototype; + var self = new F(); + + var result = target.apply( + self, + args.concat(slice.call(arguments)) + ); + if (Object(result) === result) { + return result; + } + return self; + + } else { + + return target.apply( + that, + args.concat(slice.call(arguments)) + ); + + } + + }; + + return bound; + }; + } + if (!Array.prototype.indexOf) { + Array.prototype.indexOf = function(searchElement, fromIndex) { + var k; + if (this == null) { + throw new TypeError('"this" is null or not defined'); + } + var O = Object(this); + var len = O.length >>> 0; + if (len === 0) { + return -1; + } + var n = +fromIndex || 0; + if (Math.abs(n) === Infinity) { + n = 0; + } + if (n >= len) { + return -1; + } + k = Math.max(n >= 0 ? n : len - Math.abs(n), 0); + while (k < len) { + if (k in O && O[k] === searchElement) { + return k; + } + k++; + } + return -1; + }; + } + + + + // ================================================================================================================= + // Template + + var base_html = + '' + + '' + + '01' + + '000' + + '' + + '' + + ''; + + var single_html = + '' + + '' + + ''; + + var double_html = + '' + + '' + + '' + + ''; + + var disable_html = + ''; + + + + // ================================================================================================================= + // Core + + /** + * Main plugin constructor + * + * @param input {Object} link to base input element + * @param options {Object} slider config + * @param plugin_count {Number} + * @constructor + */ + var IonRangeSlider = function (input, options, plugin_count) { + this.VERSION = "2.2.0"; + this.input = input; + this.plugin_count = plugin_count; + this.current_plugin = 0; + this.calc_count = 0; + this.update_tm = 0; + this.old_from = 0; + this.old_to = 0; + this.old_min_interval = null; + this.raf_id = null; + this.dragging = false; + this.force_redraw = false; + this.no_diapason = false; + this.has_tab_index = true; + this.is_key = false; + this.is_update = false; + this.is_start = true; + this.is_finish = false; + this.is_active = false; + this.is_resize = false; + this.is_click = false; + + options = options || {}; + + // cache for links to all DOM elements + this.$cache = { + win: $(window), + body: $(document.body), + input: $(input), + cont: null, + rs: null, + min: null, + max: null, + from: null, + to: null, + single: null, + bar: null, + line: null, + s_single: null, + s_from: null, + s_to: null, + shad_single: null, + shad_from: null, + shad_to: null, + edge: null, + grid: null, + grid_labels: [] + }; + + // storage for measure variables + this.coords = { + // left + x_gap: 0, + x_pointer: 0, + + // width + w_rs: 0, + w_rs_old: 0, + w_handle: 0, + + // percents + p_gap: 0, + p_gap_left: 0, + p_gap_right: 0, + p_step: 0, + p_pointer: 0, + p_handle: 0, + p_single_fake: 0, + p_single_real: 0, + p_from_fake: 0, + p_from_real: 0, + p_to_fake: 0, + p_to_real: 0, + p_bar_x: 0, + p_bar_w: 0, + + // grid + grid_gap: 0, + big_num: 0, + big: [], + big_w: [], + big_p: [], + big_x: [] + }; + + // storage for labels measure variables + this.labels = { + // width + w_min: 0, + w_max: 0, + w_from: 0, + w_to: 0, + w_single: 0, + + // percents + p_min: 0, + p_max: 0, + p_from_fake: 0, + p_from_left: 0, + p_to_fake: 0, + p_to_left: 0, + p_single_fake: 0, + p_single_left: 0 + }; + + + + /** + * get and validate config + */ + var $inp = this.$cache.input, + val = $inp.prop("value"), + config, config_from_data, prop; + + // default config + config = { + type: "single", + + min: 10, + max: 100, + from: null, + to: null, + step: 1, + + min_interval: 0, + max_interval: 0, + drag_interval: false, + + values: [], + p_values: [], + + from_fixed: false, + from_min: null, + from_max: null, + from_shadow: false, + + to_fixed: false, + to_min: null, + to_max: null, + to_shadow: false, + + prettify_enabled: true, + prettify_separator: " ", + prettify: null, + + force_edges: false, + + keyboard: true, + + grid: false, + grid_margin: true, + grid_num: 4, + grid_snap: false, + + hide_min_max: false, + hide_from_to: false, + + prefix: "", + postfix: "", + max_postfix: "", + decorate_both: true, + values_separator: " — ", + + input_values_separator: ";", + + disable: false, + block: false, + + extra_classes: "", + + scope: null, + onStart: null, + onChange: null, + onFinish: null, + onUpdate: null + }; + + + // check if base element is input + if ($inp[0].nodeName !== "INPUT") { + console && console.warn && console.warn("Base element should be !", $inp[0]); + } + + + // config from data-attributes extends js config + config_from_data = { + type: $inp.data("type"), + + min: $inp.data("min"), + max: $inp.data("max"), + from: $inp.data("from"), + to: $inp.data("to"), + step: $inp.data("step"), + + min_interval: $inp.data("minInterval"), + max_interval: $inp.data("maxInterval"), + drag_interval: $inp.data("dragInterval"), + + values: $inp.data("values"), + + from_fixed: $inp.data("fromFixed"), + from_min: $inp.data("fromMin"), + from_max: $inp.data("fromMax"), + from_shadow: $inp.data("fromShadow"), + + to_fixed: $inp.data("toFixed"), + to_min: $inp.data("toMin"), + to_max: $inp.data("toMax"), + to_shadow: $inp.data("toShadow"), + + prettify_enabled: $inp.data("prettifyEnabled"), + prettify_separator: $inp.data("prettifySeparator"), + + force_edges: $inp.data("forceEdges"), + + keyboard: $inp.data("keyboard"), + + grid: $inp.data("grid"), + grid_margin: $inp.data("gridMargin"), + grid_num: $inp.data("gridNum"), + grid_snap: $inp.data("gridSnap"), + + hide_min_max: $inp.data("hideMinMax"), + hide_from_to: $inp.data("hideFromTo"), + + prefix: $inp.data("prefix"), + postfix: $inp.data("postfix"), + max_postfix: $inp.data("maxPostfix"), + decorate_both: $inp.data("decorateBoth"), + values_separator: $inp.data("valuesSeparator"), + + input_values_separator: $inp.data("inputValuesSeparator"), + + disable: $inp.data("disable"), + block: $inp.data("block"), + + extra_classes: $inp.data("extraClasses"), + }; + config_from_data.values = config_from_data.values && config_from_data.values.split(","); + + for (prop in config_from_data) { + if (config_from_data.hasOwnProperty(prop)) { + if (config_from_data[prop] === undefined || config_from_data[prop] === "") { + delete config_from_data[prop]; + } + } + } + + + // input value extends default config + if (val !== undefined && val !== "") { + val = val.split(config_from_data.input_values_separator || options.input_values_separator || ";"); + + if (val[0] && val[0] == +val[0]) { + val[0] = +val[0]; + } + if (val[1] && val[1] == +val[1]) { + val[1] = +val[1]; + } + + if (options && options.values && options.values.length) { + config.from = val[0] && options.values.indexOf(val[0]); + config.to = val[1] && options.values.indexOf(val[1]); + } else { + config.from = val[0] && +val[0]; + config.to = val[1] && +val[1]; + } + } + + + + // js config extends default config + $.extend(config, options); + + + // data config extends config + $.extend(config, config_from_data); + this.options = config; + + + + // validate config, to be sure that all data types are correct + this.update_check = {}; + this.validate(); + + + + // default result object, returned to callbacks + this.result = { + input: this.$cache.input, + slider: null, + + min: this.options.min, + max: this.options.max, + + from: this.options.from, + from_percent: 0, + from_value: null, + + to: this.options.to, + to_percent: 0, + to_value: null + }; + + + + this.init(); + }; + + IonRangeSlider.prototype = { + + /** + * Starts or updates the plugin instance + * + * @param [is_update] {boolean} + */ + init: function (is_update) { + this.no_diapason = false; + this.coords.p_step = this.convertToPercent(this.options.step, true); + + this.target = "base"; + + this.toggleInput(); + this.append(); + this.setMinMax(); + + if (is_update) { + this.force_redraw = true; + this.calc(true); + + // callbacks called + this.callOnUpdate(); + } else { + this.force_redraw = true; + this.calc(true); + + // callbacks called + this.callOnStart(); + } + + this.updateScene(); + }, + + /** + * Appends slider template to a DOM + */ + append: function () { + var container_html = ''; + this.$cache.input.before(container_html); + this.$cache.input.prop("readonly", true); + this.$cache.cont = this.$cache.input.prev(); + this.result.slider = this.$cache.cont; + + this.$cache.cont.html(base_html); + this.$cache.rs = this.$cache.cont.find(".irs"); + this.$cache.min = this.$cache.cont.find(".irs-min"); + this.$cache.max = this.$cache.cont.find(".irs-max"); + this.$cache.from = this.$cache.cont.find(".irs-from"); + this.$cache.to = this.$cache.cont.find(".irs-to"); + this.$cache.single = this.$cache.cont.find(".irs-single"); + this.$cache.bar = this.$cache.cont.find(".irs-bar"); + this.$cache.line = this.$cache.cont.find(".irs-line"); + this.$cache.grid = this.$cache.cont.find(".irs-grid"); + + if (this.options.type === "single") { + this.$cache.cont.append(single_html); + this.$cache.edge = this.$cache.cont.find(".irs-bar-edge"); + this.$cache.s_single = this.$cache.cont.find(".single"); + this.$cache.from[0].style.visibility = "hidden"; + this.$cache.to[0].style.visibility = "hidden"; + this.$cache.shad_single = this.$cache.cont.find(".shadow-single"); + } else { + this.$cache.cont.append(double_html); + this.$cache.s_from = this.$cache.cont.find(".from"); + this.$cache.s_to = this.$cache.cont.find(".to"); + this.$cache.shad_from = this.$cache.cont.find(".shadow-from"); + this.$cache.shad_to = this.$cache.cont.find(".shadow-to"); + + this.setTopHandler(); + } + + if (this.options.hide_from_to) { + this.$cache.from[0].style.display = "none"; + this.$cache.to[0].style.display = "none"; + this.$cache.single[0].style.display = "none"; + } + + this.appendGrid(); + + if (this.options.disable) { + this.appendDisableMask(); + this.$cache.input[0].disabled = true; + } else { + this.$cache.input[0].disabled = false; + this.removeDisableMask(); + this.bindEvents(); + } + + // block only if not disabled + if (!this.options.disable) { + if (this.options.block) { + this.appendDisableMask(); + } else { + this.removeDisableMask(); + } + } + + if (this.options.drag_interval) { + this.$cache.bar[0].style.cursor = "ew-resize"; + } + }, + + /** + * Determine which handler has a priority + * works only for double slider type + */ + setTopHandler: function () { + var min = this.options.min, + max = this.options.max, + from = this.options.from, + to = this.options.to; + + if (from > min && to === max) { + this.$cache.s_from.addClass("type_last"); + } else if (to < max) { + this.$cache.s_to.addClass("type_last"); + } + }, + + /** + * Determine which handles was clicked last + * and which handler should have hover effect + * + * @param target {String} + */ + changeLevel: function (target) { + switch (target) { + case "single": + this.coords.p_gap = this.toFixed(this.coords.p_pointer - this.coords.p_single_fake); + this.$cache.s_single.addClass("state_hover"); + break; + case "from": + this.coords.p_gap = this.toFixed(this.coords.p_pointer - this.coords.p_from_fake); + this.$cache.s_from.addClass("state_hover"); + this.$cache.s_from.addClass("type_last"); + this.$cache.s_to.removeClass("type_last"); + break; + case "to": + this.coords.p_gap = this.toFixed(this.coords.p_pointer - this.coords.p_to_fake); + this.$cache.s_to.addClass("state_hover"); + this.$cache.s_to.addClass("type_last"); + this.$cache.s_from.removeClass("type_last"); + break; + case "both": + this.coords.p_gap_left = this.toFixed(this.coords.p_pointer - this.coords.p_from_fake); + this.coords.p_gap_right = this.toFixed(this.coords.p_to_fake - this.coords.p_pointer); + this.$cache.s_to.removeClass("type_last"); + this.$cache.s_from.removeClass("type_last"); + break; + } + }, + + /** + * Then slider is disabled + * appends extra layer with opacity + */ + appendDisableMask: function () { + this.$cache.cont.append(disable_html); + this.$cache.cont.addClass("irs-disabled"); + }, + + /** + * Then slider is not disabled + * remove disable mask + */ + removeDisableMask: function () { + this.$cache.cont.remove(".irs-disable-mask"); + this.$cache.cont.removeClass("irs-disabled"); + }, + + /** + * Remove slider instance + * and unbind all events + */ + remove: function () { + this.$cache.cont.remove(); + this.$cache.cont = null; + + this.$cache.line.off("keydown.irs_" + this.plugin_count); + + this.$cache.body.off("touchmove.irs_" + this.plugin_count); + this.$cache.body.off("mousemove.irs_" + this.plugin_count); + + this.$cache.win.off("touchend.irs_" + this.plugin_count); + this.$cache.win.off("mouseup.irs_" + this.plugin_count); + + if (is_old_ie) { + this.$cache.body.off("mouseup.irs_" + this.plugin_count); + this.$cache.body.off("mouseleave.irs_" + this.plugin_count); + } + + this.$cache.grid_labels = []; + this.coords.big = []; + this.coords.big_w = []; + this.coords.big_p = []; + this.coords.big_x = []; + + cancelAnimationFrame(this.raf_id); + }, + + /** + * bind all slider events + */ + bindEvents: function () { + if (this.no_diapason) { + return; + } + + this.$cache.body.on("touchmove.irs_" + this.plugin_count, this.pointerMove.bind(this)); + this.$cache.body.on("mousemove.irs_" + this.plugin_count, this.pointerMove.bind(this)); + + this.$cache.win.on("touchend.irs_" + this.plugin_count, this.pointerUp.bind(this)); + this.$cache.win.on("mouseup.irs_" + this.plugin_count, this.pointerUp.bind(this)); + + this.$cache.line.on("touchstart.irs_" + this.plugin_count, this.pointerClick.bind(this, "click")); + this.$cache.line.on("mousedown.irs_" + this.plugin_count, this.pointerClick.bind(this, "click")); + + this.$cache.line.on("focus.irs_" + this.plugin_count, this.pointerFocus.bind(this)); + + if (this.options.drag_interval && this.options.type === "double") { + this.$cache.bar.on("touchstart.irs_" + this.plugin_count, this.pointerDown.bind(this, "both")); + this.$cache.bar.on("mousedown.irs_" + this.plugin_count, this.pointerDown.bind(this, "both")); + } else { + this.$cache.bar.on("touchstart.irs_" + this.plugin_count, this.pointerClick.bind(this, "click")); + this.$cache.bar.on("mousedown.irs_" + this.plugin_count, this.pointerClick.bind(this, "click")); + } + + if (this.options.type === "single") { + this.$cache.single.on("touchstart.irs_" + this.plugin_count, this.pointerDown.bind(this, "single")); + this.$cache.s_single.on("touchstart.irs_" + this.plugin_count, this.pointerDown.bind(this, "single")); + this.$cache.shad_single.on("touchstart.irs_" + this.plugin_count, this.pointerClick.bind(this, "click")); + + this.$cache.single.on("mousedown.irs_" + this.plugin_count, this.pointerDown.bind(this, "single")); + this.$cache.s_single.on("mousedown.irs_" + this.plugin_count, this.pointerDown.bind(this, "single")); + this.$cache.edge.on("mousedown.irs_" + this.plugin_count, this.pointerClick.bind(this, "click")); + this.$cache.shad_single.on("mousedown.irs_" + this.plugin_count, this.pointerClick.bind(this, "click")); + } else { + this.$cache.single.on("touchstart.irs_" + this.plugin_count, this.pointerDown.bind(this, null)); + this.$cache.single.on("mousedown.irs_" + this.plugin_count, this.pointerDown.bind(this, null)); + + this.$cache.from.on("touchstart.irs_" + this.plugin_count, this.pointerDown.bind(this, "from")); + this.$cache.s_from.on("touchstart.irs_" + this.plugin_count, this.pointerDown.bind(this, "from")); + this.$cache.to.on("touchstart.irs_" + this.plugin_count, this.pointerDown.bind(this, "to")); + this.$cache.s_to.on("touchstart.irs_" + this.plugin_count, this.pointerDown.bind(this, "to")); + this.$cache.shad_from.on("touchstart.irs_" + this.plugin_count, this.pointerClick.bind(this, "click")); + this.$cache.shad_to.on("touchstart.irs_" + this.plugin_count, this.pointerClick.bind(this, "click")); + + this.$cache.from.on("mousedown.irs_" + this.plugin_count, this.pointerDown.bind(this, "from")); + this.$cache.s_from.on("mousedown.irs_" + this.plugin_count, this.pointerDown.bind(this, "from")); + this.$cache.to.on("mousedown.irs_" + this.plugin_count, this.pointerDown.bind(this, "to")); + this.$cache.s_to.on("mousedown.irs_" + this.plugin_count, this.pointerDown.bind(this, "to")); + this.$cache.shad_from.on("mousedown.irs_" + this.plugin_count, this.pointerClick.bind(this, "click")); + this.$cache.shad_to.on("mousedown.irs_" + this.plugin_count, this.pointerClick.bind(this, "click")); + } + + if (this.options.keyboard) { + this.$cache.line.on("keydown.irs_" + this.plugin_count, this.key.bind(this, "keyboard")); + } + + if (is_old_ie) { + this.$cache.body.on("mouseup.irs_" + this.plugin_count, this.pointerUp.bind(this)); + this.$cache.body.on("mouseleave.irs_" + this.plugin_count, this.pointerUp.bind(this)); + } + }, + + /** + * Focus with tabIndex + * + * @param e {Object} event object + */ + pointerFocus: function (e) { + if (!this.target) { + var x; + var $handle; + + if (this.options.type === "single") { + $handle = this.$cache.single; + } else { + $handle = this.$cache.from; + } + + x = $handle.offset().left; + x += ($handle.width() / 2) - 1; + + this.pointerClick("single", {preventDefault: function () {}, pageX: x}); + } + }, + + /** + * Mousemove or touchmove + * only for handlers + * + * @param e {Object} event object + */ + pointerMove: function (e) { + if (!this.dragging) { + return; + } + + var x = e.pageX || e.originalEvent.touches && e.originalEvent.touches[0].pageX; + this.coords.x_pointer = x - this.coords.x_gap; + + this.calc(); + }, + + /** + * Mouseup or touchend + * only for handlers + * + * @param e {Object} event object + */ + pointerUp: function (e) { + if (this.current_plugin !== this.plugin_count) { + return; + } + + if (this.is_active) { + this.is_active = false; + } else { + return; + } + + this.$cache.cont.find(".state_hover").removeClass("state_hover"); + + this.force_redraw = true; + + if (is_old_ie) { + $("*").prop("unselectable", false); + } + + this.updateScene(); + this.restoreOriginalMinInterval(); + + // callbacks call + if ($.contains(this.$cache.cont[0], e.target) || this.dragging) { + this.callOnFinish(); + } + + this.dragging = false; + }, + + /** + * Mousedown or touchstart + * only for handlers + * + * @param target {String|null} + * @param e {Object} event object + */ + pointerDown: function (target, e) { + e.preventDefault(); + var x = e.pageX || e.originalEvent.touches && e.originalEvent.touches[0].pageX; + if (e.button === 2) { + return; + } + + if (target === "both") { + this.setTempMinInterval(); + } + + if (!target) { + target = this.target || "from"; + } + + this.current_plugin = this.plugin_count; + this.target = target; + + this.is_active = true; + this.dragging = true; + + this.coords.x_gap = this.$cache.rs.offset().left; + this.coords.x_pointer = x - this.coords.x_gap; + + this.calcPointerPercent(); + this.changeLevel(target); + + if (is_old_ie) { + $("*").prop("unselectable", true); + } + + this.$cache.line.trigger("focus"); + + this.updateScene(); + }, + + /** + * Mousedown or touchstart + * for other slider elements, like diapason line + * + * @param target {String} + * @param e {Object} event object + */ + pointerClick: function (target, e) { + e.preventDefault(); + var x = e.pageX || e.originalEvent.touches && e.originalEvent.touches[0].pageX; + if (e.button === 2) { + return; + } + + this.current_plugin = this.plugin_count; + this.target = target; + + this.is_click = true; + this.coords.x_gap = this.$cache.rs.offset().left; + this.coords.x_pointer = +(x - this.coords.x_gap).toFixed(); + + this.force_redraw = true; + this.calc(); + + this.$cache.line.trigger("focus"); + }, + + /** + * Keyborard controls for focused slider + * + * @param target {String} + * @param e {Object} event object + * @returns {boolean|undefined} + */ + key: function (target, e) { + if (this.current_plugin !== this.plugin_count || e.altKey || e.ctrlKey || e.shiftKey || e.metaKey) { + return; + } + + switch (e.which) { + case 83: // W + case 65: // A + case 40: // DOWN + case 37: // LEFT + e.preventDefault(); + this.moveByKey(false); + break; + + case 87: // S + case 68: // D + case 38: // UP + case 39: // RIGHT + e.preventDefault(); + this.moveByKey(true); + break; + } + + return true; + }, + + /** + * Move by key + * + * @param right {boolean} direction to move + */ + moveByKey: function (right) { + var p = this.coords.p_pointer; + var p_step = (this.options.max - this.options.min) / 100; + p_step = this.options.step / p_step; + + if (right) { + p += p_step; + } else { + p -= p_step; + } + + this.coords.x_pointer = this.toFixed(this.coords.w_rs / 100 * p); + this.is_key = true; + this.calc(); + }, + + /** + * Set visibility and content + * of Min and Max labels + */ + setMinMax: function () { + if (!this.options) { + return; + } + + if (this.options.hide_min_max) { + this.$cache.min[0].style.display = "none"; + this.$cache.max[0].style.display = "none"; + return; + } + + if (this.options.values.length) { + this.$cache.min.html(this.decorate(this.options.p_values[this.options.min])); + this.$cache.max.html(this.decorate(this.options.p_values[this.options.max])); + } else { + var min_pretty = this._prettify(this.options.min); + var max_pretty = this._prettify(this.options.max); + + this.result.min_pretty = min_pretty; + this.result.max_pretty = max_pretty; + + this.$cache.min.html(this.decorate(min_pretty, this.options.min)); + this.$cache.max.html(this.decorate(max_pretty, this.options.max)); + } + + this.labels.w_min = this.$cache.min.outerWidth(false); + this.labels.w_max = this.$cache.max.outerWidth(false); + }, + + /** + * Then dragging interval, prevent interval collapsing + * using min_interval option + */ + setTempMinInterval: function () { + var interval = this.result.to - this.result.from; + + if (this.old_min_interval === null) { + this.old_min_interval = this.options.min_interval; + } + + this.options.min_interval = interval; + }, + + /** + * Restore min_interval option to original + */ + restoreOriginalMinInterval: function () { + if (this.old_min_interval !== null) { + this.options.min_interval = this.old_min_interval; + this.old_min_interval = null; + } + }, + + + + // ============================================================================================================= + // Calculations + + /** + * All calculations and measures start here + * + * @param update {boolean=} + */ + calc: function (update) { + if (!this.options) { + return; + } + + this.calc_count++; + + if (this.calc_count === 10 || update) { + this.calc_count = 0; + this.coords.w_rs = this.$cache.rs.outerWidth(false); + + this.calcHandlePercent(); + } + + if (!this.coords.w_rs) { + return; + } + + this.calcPointerPercent(); + var handle_x = this.getHandleX(); + + + if (this.target === "both") { + this.coords.p_gap = 0; + handle_x = this.getHandleX(); + } + + if (this.target === "click") { + this.coords.p_gap = this.coords.p_handle / 2; + handle_x = this.getHandleX(); + + if (this.options.drag_interval) { + this.target = "both_one"; + } else { + this.target = this.chooseHandle(handle_x); + } + } + + switch (this.target) { + case "base": + var w = (this.options.max - this.options.min) / 100, + f = (this.result.from - this.options.min) / w, + t = (this.result.to - this.options.min) / w; + + this.coords.p_single_real = this.toFixed(f); + this.coords.p_from_real = this.toFixed(f); + this.coords.p_to_real = this.toFixed(t); + + this.coords.p_single_real = this.checkDiapason(this.coords.p_single_real, this.options.from_min, this.options.from_max); + this.coords.p_from_real = this.checkDiapason(this.coords.p_from_real, this.options.from_min, this.options.from_max); + this.coords.p_to_real = this.checkDiapason(this.coords.p_to_real, this.options.to_min, this.options.to_max); + + this.coords.p_single_fake = this.convertToFakePercent(this.coords.p_single_real); + this.coords.p_from_fake = this.convertToFakePercent(this.coords.p_from_real); + this.coords.p_to_fake = this.convertToFakePercent(this.coords.p_to_real); + + this.target = null; + + break; + + case "single": + if (this.options.from_fixed) { + break; + } + + this.coords.p_single_real = this.convertToRealPercent(handle_x); + this.coords.p_single_real = this.calcWithStep(this.coords.p_single_real); + this.coords.p_single_real = this.checkDiapason(this.coords.p_single_real, this.options.from_min, this.options.from_max); + + this.coords.p_single_fake = this.convertToFakePercent(this.coords.p_single_real); + + break; + + case "from": + if (this.options.from_fixed) { + break; + } + + this.coords.p_from_real = this.convertToRealPercent(handle_x); + this.coords.p_from_real = this.calcWithStep(this.coords.p_from_real); + if (this.coords.p_from_real > this.coords.p_to_real) { + this.coords.p_from_real = this.coords.p_to_real; + } + this.coords.p_from_real = this.checkDiapason(this.coords.p_from_real, this.options.from_min, this.options.from_max); + this.coords.p_from_real = this.checkMinInterval(this.coords.p_from_real, this.coords.p_to_real, "from"); + this.coords.p_from_real = this.checkMaxInterval(this.coords.p_from_real, this.coords.p_to_real, "from"); + + this.coords.p_from_fake = this.convertToFakePercent(this.coords.p_from_real); + + break; + + case "to": + if (this.options.to_fixed) { + break; + } + + this.coords.p_to_real = this.convertToRealPercent(handle_x); + this.coords.p_to_real = this.calcWithStep(this.coords.p_to_real); + if (this.coords.p_to_real < this.coords.p_from_real) { + this.coords.p_to_real = this.coords.p_from_real; + } + this.coords.p_to_real = this.checkDiapason(this.coords.p_to_real, this.options.to_min, this.options.to_max); + this.coords.p_to_real = this.checkMinInterval(this.coords.p_to_real, this.coords.p_from_real, "to"); + this.coords.p_to_real = this.checkMaxInterval(this.coords.p_to_real, this.coords.p_from_real, "to"); + + this.coords.p_to_fake = this.convertToFakePercent(this.coords.p_to_real); + + break; + + case "both": + if (this.options.from_fixed || this.options.to_fixed) { + break; + } + + handle_x = this.toFixed(handle_x + (this.coords.p_handle * 0.001)); + + this.coords.p_from_real = this.convertToRealPercent(handle_x) - this.coords.p_gap_left; + this.coords.p_from_real = this.calcWithStep(this.coords.p_from_real); + this.coords.p_from_real = this.checkDiapason(this.coords.p_from_real, this.options.from_min, this.options.from_max); + this.coords.p_from_real = this.checkMinInterval(this.coords.p_from_real, this.coords.p_to_real, "from"); + this.coords.p_from_fake = this.convertToFakePercent(this.coords.p_from_real); + + this.coords.p_to_real = this.convertToRealPercent(handle_x) + this.coords.p_gap_right; + this.coords.p_to_real = this.calcWithStep(this.coords.p_to_real); + this.coords.p_to_real = this.checkDiapason(this.coords.p_to_real, this.options.to_min, this.options.to_max); + this.coords.p_to_real = this.checkMinInterval(this.coords.p_to_real, this.coords.p_from_real, "to"); + this.coords.p_to_fake = this.convertToFakePercent(this.coords.p_to_real); + + break; + + case "both_one": + if (this.options.from_fixed || this.options.to_fixed) { + break; + } + + var real_x = this.convertToRealPercent(handle_x), + from = this.result.from_percent, + to = this.result.to_percent, + full = to - from, + half = full / 2, + new_from = real_x - half, + new_to = real_x + half; + + if (new_from < 0) { + new_from = 0; + new_to = new_from + full; + } + + if (new_to > 100) { + new_to = 100; + new_from = new_to - full; + } + + this.coords.p_from_real = this.calcWithStep(new_from); + this.coords.p_from_real = this.checkDiapason(this.coords.p_from_real, this.options.from_min, this.options.from_max); + this.coords.p_from_fake = this.convertToFakePercent(this.coords.p_from_real); + + this.coords.p_to_real = this.calcWithStep(new_to); + this.coords.p_to_real = this.checkDiapason(this.coords.p_to_real, this.options.to_min, this.options.to_max); + this.coords.p_to_fake = this.convertToFakePercent(this.coords.p_to_real); + + break; + } + + if (this.options.type === "single") { + this.coords.p_bar_x = (this.coords.p_handle / 2); + this.coords.p_bar_w = this.coords.p_single_fake; + + this.result.from_percent = this.coords.p_single_real; + this.result.from = this.convertToValue(this.coords.p_single_real); + this.result.from_pretty = this._prettify(this.result.from); + + if (this.options.values.length) { + this.result.from_value = this.options.values[this.result.from]; + } + } else { + this.coords.p_bar_x = this.toFixed(this.coords.p_from_fake + (this.coords.p_handle / 2)); + this.coords.p_bar_w = this.toFixed(this.coords.p_to_fake - this.coords.p_from_fake); + + this.result.from_percent = this.coords.p_from_real; + this.result.from = this.convertToValue(this.coords.p_from_real); + this.result.from_pretty = this._prettify(this.result.from); + this.result.to_percent = this.coords.p_to_real; + this.result.to = this.convertToValue(this.coords.p_to_real); + this.result.to_pretty = this._prettify(this.result.to); + + if (this.options.values.length) { + this.result.from_value = this.options.values[this.result.from]; + this.result.to_value = this.options.values[this.result.to]; + } + } + + this.calcMinMax(); + this.calcLabels(); + }, + + + /** + * calculates pointer X in percent + */ + calcPointerPercent: function () { + if (!this.coords.w_rs) { + this.coords.p_pointer = 0; + return; + } + + if (this.coords.x_pointer < 0 || isNaN(this.coords.x_pointer) ) { + this.coords.x_pointer = 0; + } else if (this.coords.x_pointer > this.coords.w_rs) { + this.coords.x_pointer = this.coords.w_rs; + } + + this.coords.p_pointer = this.toFixed(this.coords.x_pointer / this.coords.w_rs * 100); + }, + + convertToRealPercent: function (fake) { + var full = 100 - this.coords.p_handle; + return fake / full * 100; + }, + + convertToFakePercent: function (real) { + var full = 100 - this.coords.p_handle; + return real / 100 * full; + }, + + getHandleX: function () { + var max = 100 - this.coords.p_handle, + x = this.toFixed(this.coords.p_pointer - this.coords.p_gap); + + if (x < 0) { + x = 0; + } else if (x > max) { + x = max; + } + + return x; + }, + + calcHandlePercent: function () { + if (this.options.type === "single") { + this.coords.w_handle = this.$cache.s_single.outerWidth(false); + } else { + this.coords.w_handle = this.$cache.s_from.outerWidth(false); + } + + this.coords.p_handle = this.toFixed(this.coords.w_handle / this.coords.w_rs * 100); + }, + + /** + * Find closest handle to pointer click + * + * @param real_x {Number} + * @returns {String} + */ + chooseHandle: function (real_x) { + if (this.options.type === "single") { + return "single"; + } else { + var m_point = this.coords.p_from_real + ((this.coords.p_to_real - this.coords.p_from_real) / 2); + if (real_x >= m_point) { + return this.options.to_fixed ? "from" : "to"; + } else { + return this.options.from_fixed ? "to" : "from"; + } + } + }, + + /** + * Measure Min and Max labels width in percent + */ + calcMinMax: function () { + if (!this.coords.w_rs) { + return; + } + + this.labels.p_min = this.labels.w_min / this.coords.w_rs * 100; + this.labels.p_max = this.labels.w_max / this.coords.w_rs * 100; + }, + + /** + * Measure labels width and X in percent + */ + calcLabels: function () { + if (!this.coords.w_rs || this.options.hide_from_to) { + return; + } + + if (this.options.type === "single") { + + this.labels.w_single = this.$cache.single.outerWidth(false); + this.labels.p_single_fake = this.labels.w_single / this.coords.w_rs * 100; + this.labels.p_single_left = this.coords.p_single_fake + (this.coords.p_handle / 2) - (this.labels.p_single_fake / 2); + this.labels.p_single_left = this.checkEdges(this.labels.p_single_left, this.labels.p_single_fake); + + } else { + + this.labels.w_from = this.$cache.from.outerWidth(false); + this.labels.p_from_fake = this.labels.w_from / this.coords.w_rs * 100; + this.labels.p_from_left = this.coords.p_from_fake + (this.coords.p_handle / 2) - (this.labels.p_from_fake / 2); + this.labels.p_from_left = this.toFixed(this.labels.p_from_left); + this.labels.p_from_left = this.checkEdges(this.labels.p_from_left, this.labels.p_from_fake); + + this.labels.w_to = this.$cache.to.outerWidth(false); + this.labels.p_to_fake = this.labels.w_to / this.coords.w_rs * 100; + this.labels.p_to_left = this.coords.p_to_fake + (this.coords.p_handle / 2) - (this.labels.p_to_fake / 2); + this.labels.p_to_left = this.toFixed(this.labels.p_to_left); + this.labels.p_to_left = this.checkEdges(this.labels.p_to_left, this.labels.p_to_fake); + + this.labels.w_single = this.$cache.single.outerWidth(false); + this.labels.p_single_fake = this.labels.w_single / this.coords.w_rs * 100; + this.labels.p_single_left = ((this.labels.p_from_left + this.labels.p_to_left + this.labels.p_to_fake) / 2) - (this.labels.p_single_fake / 2); + this.labels.p_single_left = this.toFixed(this.labels.p_single_left); + this.labels.p_single_left = this.checkEdges(this.labels.p_single_left, this.labels.p_single_fake); + + } + }, + + + + // ============================================================================================================= + // Drawings + + /** + * Main function called in request animation frame + * to update everything + */ + updateScene: function () { + if (this.raf_id) { + cancelAnimationFrame(this.raf_id); + this.raf_id = null; + } + + clearTimeout(this.update_tm); + this.update_tm = null; + + if (!this.options) { + return; + } + + this.drawHandles(); + + if (this.is_active) { + this.raf_id = requestAnimationFrame(this.updateScene.bind(this)); + } else { + this.update_tm = setTimeout(this.updateScene.bind(this), 300); + } + }, + + /** + * Draw handles + */ + drawHandles: function () { + this.coords.w_rs = this.$cache.rs.outerWidth(false); + + if (!this.coords.w_rs) { + return; + } + + if (this.coords.w_rs !== this.coords.w_rs_old) { + this.target = "base"; + this.is_resize = true; + } + + if (this.coords.w_rs !== this.coords.w_rs_old || this.force_redraw) { + this.setMinMax(); + this.calc(true); + this.drawLabels(); + if (this.options.grid) { + this.calcGridMargin(); + this.calcGridLabels(); + } + this.force_redraw = true; + this.coords.w_rs_old = this.coords.w_rs; + this.drawShadow(); + } + + if (!this.coords.w_rs) { + return; + } + + if (!this.dragging && !this.force_redraw && !this.is_key) { + return; + } + + if (this.old_from !== this.result.from || this.old_to !== this.result.to || this.force_redraw || this.is_key) { + + this.drawLabels(); + + this.$cache.bar[0].style.left = this.coords.p_bar_x + "%"; + this.$cache.bar[0].style.width = this.coords.p_bar_w + "%"; + + if (this.options.type === "single") { + this.$cache.s_single[0].style.left = this.coords.p_single_fake + "%"; + + this.$cache.single[0].style.left = this.labels.p_single_left + "%"; + } else { + this.$cache.s_from[0].style.left = this.coords.p_from_fake + "%"; + this.$cache.s_to[0].style.left = this.coords.p_to_fake + "%"; + + if (this.old_from !== this.result.from || this.force_redraw) { + this.$cache.from[0].style.left = this.labels.p_from_left + "%"; + } + if (this.old_to !== this.result.to || this.force_redraw) { + this.$cache.to[0].style.left = this.labels.p_to_left + "%"; + } + + this.$cache.single[0].style.left = this.labels.p_single_left + "%"; + } + + this.writeToInput(); + + if ((this.old_from !== this.result.from || this.old_to !== this.result.to) && !this.is_start) { + this.$cache.input.trigger("change"); + this.$cache.input.trigger("input"); + } + + this.old_from = this.result.from; + this.old_to = this.result.to; + + // callbacks call + if (!this.is_resize && !this.is_update && !this.is_start && !this.is_finish) { + this.callOnChange(); + } + if (this.is_key || this.is_click) { + this.is_key = false; + this.is_click = false; + this.callOnFinish(); + } + + this.is_update = false; + this.is_resize = false; + this.is_finish = false; + } + + this.is_start = false; + this.is_key = false; + this.is_click = false; + this.force_redraw = false; + }, + + /** + * Draw labels + * measure labels collisions + * collapse close labels + */ + drawLabels: function () { + if (!this.options) { + return; + } + + var values_num = this.options.values.length; + var p_values = this.options.p_values; + var text_single; + var text_from; + var text_to; + var from_pretty; + var to_pretty; + + if (this.options.hide_from_to) { + return; + } + + if (this.options.type === "single") { + + if (values_num) { + text_single = this.decorate(p_values[this.result.from]); + this.$cache.single.html(text_single); + } else { + from_pretty = this._prettify(this.result.from); + + text_single = this.decorate(from_pretty, this.result.from); + this.$cache.single.html(text_single); + } + + this.calcLabels(); + + if (this.labels.p_single_left < this.labels.p_min + 1) { + this.$cache.min[0].style.visibility = "hidden"; + } else { + this.$cache.min[0].style.visibility = "visible"; + } + + if (this.labels.p_single_left + this.labels.p_single_fake > 100 - this.labels.p_max - 1) { + this.$cache.max[0].style.visibility = "hidden"; + } else { + this.$cache.max[0].style.visibility = "visible"; + } + + } else { + + if (values_num) { + + if (this.options.decorate_both) { + text_single = this.decorate(p_values[this.result.from]); + text_single += this.options.values_separator; + text_single += this.decorate(p_values[this.result.to]); + } else { + text_single = this.decorate(p_values[this.result.from] + this.options.values_separator + p_values[this.result.to]); + } + text_from = this.decorate(p_values[this.result.from]); + text_to = this.decorate(p_values[this.result.to]); + + this.$cache.single.html(text_single); + this.$cache.from.html(text_from); + this.$cache.to.html(text_to); + + } else { + from_pretty = this._prettify(this.result.from); + to_pretty = this._prettify(this.result.to); + + if (this.options.decorate_both) { + text_single = this.decorate(from_pretty, this.result.from); + text_single += this.options.values_separator; + text_single += this.decorate(to_pretty, this.result.to); + } else { + text_single = this.decorate(from_pretty + this.options.values_separator + to_pretty, this.result.to); + } + text_from = this.decorate(from_pretty, this.result.from); + text_to = this.decorate(to_pretty, this.result.to); + + this.$cache.single.html(text_single); + this.$cache.from.html(text_from); + this.$cache.to.html(text_to); + + } + + this.calcLabels(); + + var min = Math.min(this.labels.p_single_left, this.labels.p_from_left), + single_left = this.labels.p_single_left + this.labels.p_single_fake, + to_left = this.labels.p_to_left + this.labels.p_to_fake, + max = Math.max(single_left, to_left); + + if (this.labels.p_from_left + this.labels.p_from_fake >= this.labels.p_to_left) { + this.$cache.from[0].style.visibility = "hidden"; + this.$cache.to[0].style.visibility = "hidden"; + this.$cache.single[0].style.visibility = "visible"; + + if (this.result.from === this.result.to) { + if (this.target === "from") { + this.$cache.from[0].style.visibility = "visible"; + } else if (this.target === "to") { + this.$cache.to[0].style.visibility = "visible"; + } else if (!this.target) { + this.$cache.from[0].style.visibility = "visible"; + } + this.$cache.single[0].style.visibility = "hidden"; + max = to_left; + } else { + this.$cache.from[0].style.visibility = "hidden"; + this.$cache.to[0].style.visibility = "hidden"; + this.$cache.single[0].style.visibility = "visible"; + max = Math.max(single_left, to_left); + } + } else { + this.$cache.from[0].style.visibility = "visible"; + this.$cache.to[0].style.visibility = "visible"; + this.$cache.single[0].style.visibility = "hidden"; + } + + if (min < this.labels.p_min + 1) { + this.$cache.min[0].style.visibility = "hidden"; + } else { + this.$cache.min[0].style.visibility = "visible"; + } + + if (max > 100 - this.labels.p_max - 1) { + this.$cache.max[0].style.visibility = "hidden"; + } else { + this.$cache.max[0].style.visibility = "visible"; + } + + } + }, + + /** + * Draw shadow intervals + */ + drawShadow: function () { + var o = this.options, + c = this.$cache, + + is_from_min = typeof o.from_min === "number" && !isNaN(o.from_min), + is_from_max = typeof o.from_max === "number" && !isNaN(o.from_max), + is_to_min = typeof o.to_min === "number" && !isNaN(o.to_min), + is_to_max = typeof o.to_max === "number" && !isNaN(o.to_max), + + from_min, + from_max, + to_min, + to_max; + + if (o.type === "single") { + if (o.from_shadow && (is_from_min || is_from_max)) { + from_min = this.convertToPercent(is_from_min ? o.from_min : o.min); + from_max = this.convertToPercent(is_from_max ? o.from_max : o.max) - from_min; + from_min = this.toFixed(from_min - (this.coords.p_handle / 100 * from_min)); + from_max = this.toFixed(from_max - (this.coords.p_handle / 100 * from_max)); + from_min = from_min + (this.coords.p_handle / 2); + + c.shad_single[0].style.display = "block"; + c.shad_single[0].style.left = from_min + "%"; + c.shad_single[0].style.width = from_max + "%"; + } else { + c.shad_single[0].style.display = "none"; + } + } else { + if (o.from_shadow && (is_from_min || is_from_max)) { + from_min = this.convertToPercent(is_from_min ? o.from_min : o.min); + from_max = this.convertToPercent(is_from_max ? o.from_max : o.max) - from_min; + from_min = this.toFixed(from_min - (this.coords.p_handle / 100 * from_min)); + from_max = this.toFixed(from_max - (this.coords.p_handle / 100 * from_max)); + from_min = from_min + (this.coords.p_handle / 2); + + c.shad_from[0].style.display = "block"; + c.shad_from[0].style.left = from_min + "%"; + c.shad_from[0].style.width = from_max + "%"; + } else { + c.shad_from[0].style.display = "none"; + } + + if (o.to_shadow && (is_to_min || is_to_max)) { + to_min = this.convertToPercent(is_to_min ? o.to_min : o.min); + to_max = this.convertToPercent(is_to_max ? o.to_max : o.max) - to_min; + to_min = this.toFixed(to_min - (this.coords.p_handle / 100 * to_min)); + to_max = this.toFixed(to_max - (this.coords.p_handle / 100 * to_max)); + to_min = to_min + (this.coords.p_handle / 2); + + c.shad_to[0].style.display = "block"; + c.shad_to[0].style.left = to_min + "%"; + c.shad_to[0].style.width = to_max + "%"; + } else { + c.shad_to[0].style.display = "none"; + } + } + }, + + + + /** + * Write values to input element + */ + writeToInput: function () { + if (this.options.type === "single") { + if (this.options.values.length) { + this.$cache.input.prop("value", this.result.from_value); + } else { + this.$cache.input.prop("value", this.result.from); + } + this.$cache.input.data("from", this.result.from); + } else { + if (this.options.values.length) { + this.$cache.input.prop("value", this.result.from_value + this.options.input_values_separator + this.result.to_value); + } else { + this.$cache.input.prop("value", this.result.from + this.options.input_values_separator + this.result.to); + } + this.$cache.input.data("from", this.result.from); + this.$cache.input.data("to", this.result.to); + } + }, + + + + // ============================================================================================================= + // Callbacks + + callOnStart: function () { + this.writeToInput(); + + if (this.options.onStart && typeof this.options.onStart === "function") { + if (this.options.scope) { + this.options.onStart.call(this.options.scope, this.result); + } else { + this.options.onStart(this.result); + } + } + }, + callOnChange: function () { + this.writeToInput(); + + if (this.options.onChange && typeof this.options.onChange === "function") { + if (this.options.scope) { + this.options.onChange.call(this.options.scope, this.result); + } else { + this.options.onChange(this.result); + } + } + }, + callOnFinish: function () { + this.writeToInput(); + + if (this.options.onFinish && typeof this.options.onFinish === "function") { + if (this.options.scope) { + this.options.onFinish.call(this.options.scope, this.result); + } else { + this.options.onFinish(this.result); + } + } + }, + callOnUpdate: function () { + this.writeToInput(); + + if (this.options.onUpdate && typeof this.options.onUpdate === "function") { + if (this.options.scope) { + this.options.onUpdate.call(this.options.scope, this.result); + } else { + this.options.onUpdate(this.result); + } + } + }, + + + + + // ============================================================================================================= + // Service methods + + toggleInput: function () { + this.$cache.input.toggleClass("irs-hidden-input"); + + if (this.has_tab_index) { + this.$cache.input.prop("tabindex", -1); + } else { + this.$cache.input.removeProp("tabindex"); + } + + this.has_tab_index = !this.has_tab_index; + }, + + /** + * Convert real value to percent + * + * @param value {Number} X in real + * @param no_min {boolean=} don't use min value + * @returns {Number} X in percent + */ + convertToPercent: function (value, no_min) { + var diapason = this.options.max - this.options.min, + one_percent = diapason / 100, + val, percent; + + if (!diapason) { + this.no_diapason = true; + return 0; + } + + if (no_min) { + val = value; + } else { + val = value - this.options.min; + } + + percent = val / one_percent; + + return this.toFixed(percent); + }, + + /** + * Convert percent to real values + * + * @param percent {Number} X in percent + * @returns {Number} X in real + */ + convertToValue: function (percent) { + var min = this.options.min, + max = this.options.max, + min_decimals = min.toString().split(".")[1], + max_decimals = max.toString().split(".")[1], + min_length, max_length, + avg_decimals = 0, + abs = 0; + + if (percent === 0) { + return this.options.min; + } + if (percent === 100) { + return this.options.max; + } + + + if (min_decimals) { + min_length = min_decimals.length; + avg_decimals = min_length; + } + if (max_decimals) { + max_length = max_decimals.length; + avg_decimals = max_length; + } + if (min_length && max_length) { + avg_decimals = (min_length >= max_length) ? min_length : max_length; + } + + if (min < 0) { + abs = Math.abs(min); + min = +(min + abs).toFixed(avg_decimals); + max = +(max + abs).toFixed(avg_decimals); + } + + var number = ((max - min) / 100 * percent) + min, + string = this.options.step.toString().split(".")[1], + result; + + if (string) { + number = +number.toFixed(string.length); + } else { + number = number / this.options.step; + number = number * this.options.step; + + number = +number.toFixed(0); + } + + if (abs) { + number -= abs; + } + + if (string) { + result = +number.toFixed(string.length); + } else { + result = this.toFixed(number); + } + + if (result < this.options.min) { + result = this.options.min; + } else if (result > this.options.max) { + result = this.options.max; + } + + return result; + }, + + /** + * Round percent value with step + * + * @param percent {Number} + * @returns percent {Number} rounded + */ + calcWithStep: function (percent) { + var rounded = Math.round(percent / this.coords.p_step) * this.coords.p_step; + + if (rounded > 100) { + rounded = 100; + } + if (percent === 100) { + rounded = 100; + } + + return this.toFixed(rounded); + }, + + checkMinInterval: function (p_current, p_next, type) { + var o = this.options, + current, + next; + + if (!o.min_interval) { + return p_current; + } + + current = this.convertToValue(p_current); + next = this.convertToValue(p_next); + + if (type === "from") { + + if (next - current < o.min_interval) { + current = next - o.min_interval; + } + + } else { + + if (current - next < o.min_interval) { + current = next + o.min_interval; + } + + } + + return this.convertToPercent(current); + }, + + checkMaxInterval: function (p_current, p_next, type) { + var o = this.options, + current, + next; + + if (!o.max_interval) { + return p_current; + } + + current = this.convertToValue(p_current); + next = this.convertToValue(p_next); + + if (type === "from") { + + if (next - current > o.max_interval) { + current = next - o.max_interval; + } + + } else { + + if (current - next > o.max_interval) { + current = next + o.max_interval; + } + + } + + return this.convertToPercent(current); + }, + + checkDiapason: function (p_num, min, max) { + var num = this.convertToValue(p_num), + o = this.options; + + if (typeof min !== "number") { + min = o.min; + } + + if (typeof max !== "number") { + max = o.max; + } + + if (num < min) { + num = min; + } + + if (num > max) { + num = max; + } + + return this.convertToPercent(num); + }, + + toFixed: function (num) { + num = num.toFixed(20); + return +num; + }, + + _prettify: function (num) { + if (!this.options.prettify_enabled) { + return num; + } + + if (this.options.prettify && typeof this.options.prettify === "function") { + return this.options.prettify(num); + } else { + return this.prettify(num); + } + }, + + prettify: function (num) { + var n = num.toString(); + return n.replace(/(\d{1,3}(?=(?:\d\d\d)+(?!\d)))/g, "$1" + this.options.prettify_separator); + }, + + checkEdges: function (left, width) { + if (!this.options.force_edges) { + return this.toFixed(left); + } + + if (left < 0) { + left = 0; + } else if (left > 100 - width) { + left = 100 - width; + } + + return this.toFixed(left); + }, + + validate: function () { + var o = this.options, + r = this.result, + v = o.values, + vl = v.length, + value, + i; + + if (typeof o.min === "string") o.min = +o.min; + if (typeof o.max === "string") o.max = +o.max; + if (typeof o.from === "string") o.from = +o.from; + if (typeof o.to === "string") o.to = +o.to; + if (typeof o.step === "string") o.step = +o.step; + + if (typeof o.from_min === "string") o.from_min = +o.from_min; + if (typeof o.from_max === "string") o.from_max = +o.from_max; + if (typeof o.to_min === "string") o.to_min = +o.to_min; + if (typeof o.to_max === "string") o.to_max = +o.to_max; + + if (typeof o.grid_num === "string") o.grid_num = +o.grid_num; + + if (o.max < o.min) { + o.max = o.min; + } + + if (vl) { + o.p_values = []; + o.min = 0; + o.max = vl - 1; + o.step = 1; + o.grid_num = o.max; + o.grid_snap = true; + + for (i = 0; i < vl; i++) { + value = +v[i]; + + if (!isNaN(value)) { + v[i] = value; + value = this._prettify(value); + } else { + value = v[i]; + } + + o.p_values.push(value); + } + } + + if (typeof o.from !== "number" || isNaN(o.from)) { + o.from = o.min; + } + + if (typeof o.to !== "number" || isNaN(o.to)) { + o.to = o.max; + } + + if (o.type === "single") { + + if (o.from < o.min) o.from = o.min; + if (o.from > o.max) o.from = o.max; + + } else { + + if (o.from < o.min) o.from = o.min; + if (o.from > o.max) o.from = o.max; + + if (o.to < o.min) o.to = o.min; + if (o.to > o.max) o.to = o.max; + + if (this.update_check.from) { + + if (this.update_check.from !== o.from) { + if (o.from > o.to) o.from = o.to; + } + if (this.update_check.to !== o.to) { + if (o.to < o.from) o.to = o.from; + } + + } + + if (o.from > o.to) o.from = o.to; + if (o.to < o.from) o.to = o.from; + + } + + if (typeof o.step !== "number" || isNaN(o.step) || !o.step || o.step < 0) { + o.step = 1; + } + + if (typeof o.from_min === "number" && o.from < o.from_min) { + o.from = o.from_min; + } + + if (typeof o.from_max === "number" && o.from > o.from_max) { + o.from = o.from_max; + } + + if (typeof o.to_min === "number" && o.to < o.to_min) { + o.to = o.to_min; + } + + if (typeof o.to_max === "number" && o.from > o.to_max) { + o.to = o.to_max; + } + + if (r) { + if (r.min !== o.min) { + r.min = o.min; + } + + if (r.max !== o.max) { + r.max = o.max; + } + + if (r.from < r.min || r.from > r.max) { + r.from = o.from; + } + + if (r.to < r.min || r.to > r.max) { + r.to = o.to; + } + } + + if (typeof o.min_interval !== "number" || isNaN(o.min_interval) || !o.min_interval || o.min_interval < 0) { + o.min_interval = 0; + } + + if (typeof o.max_interval !== "number" || isNaN(o.max_interval) || !o.max_interval || o.max_interval < 0) { + o.max_interval = 0; + } + + if (o.min_interval && o.min_interval > o.max - o.min) { + o.min_interval = o.max - o.min; + } + + if (o.max_interval && o.max_interval > o.max - o.min) { + o.max_interval = o.max - o.min; + } + }, + + decorate: function (num, original) { + var decorated = "", + o = this.options; + + if (o.prefix) { + decorated += o.prefix; + } + + decorated += num; + + if (o.max_postfix) { + if (o.values.length && num === o.p_values[o.max]) { + decorated += o.max_postfix; + if (o.postfix) { + decorated += " "; + } + } else if (original === o.max) { + decorated += o.max_postfix; + if (o.postfix) { + decorated += " "; + } + } + } + + if (o.postfix) { + decorated += o.postfix; + } + + return decorated; + }, + + updateFrom: function () { + this.result.from = this.options.from; + this.result.from_percent = this.convertToPercent(this.result.from); + this.result.from_pretty = this._prettify(this.result.from); + if (this.options.values) { + this.result.from_value = this.options.values[this.result.from]; + } + }, + + updateTo: function () { + this.result.to = this.options.to; + this.result.to_percent = this.convertToPercent(this.result.to); + this.result.to_pretty = this._prettify(this.result.to); + if (this.options.values) { + this.result.to_value = this.options.values[this.result.to]; + } + }, + + updateResult: function () { + this.result.min = this.options.min; + this.result.max = this.options.max; + this.updateFrom(); + this.updateTo(); + }, + + + // ============================================================================================================= + // Grid + + appendGrid: function () { + if (!this.options.grid) { + return; + } + + var o = this.options, + i, z, + + total = o.max - o.min, + big_num = o.grid_num, + big_p = 0, + big_w = 0, + + small_max = 4, + local_small_max, + small_p, + small_w = 0, + + result, + html = ''; + + + + this.calcGridMargin(); + + if (o.grid_snap) { + + if (total > 50) { + big_num = 50 / o.step; + big_p = this.toFixed(o.step / 0.5); + } else { + big_num = total / o.step; + big_p = this.toFixed(o.step / (total / 100)); + } + + } else { + big_p = this.toFixed(100 / big_num); + } + + if (big_num > 4) { + small_max = 3; + } + if (big_num > 7) { + small_max = 2; + } + if (big_num > 14) { + small_max = 1; + } + if (big_num > 28) { + small_max = 0; + } + + for (i = 0; i < big_num + 1; i++) { + local_small_max = small_max; + + big_w = this.toFixed(big_p * i); + + if (big_w > 100) { + big_w = 100; + } + this.coords.big[i] = big_w; + + small_p = (big_w - (big_p * (i - 1))) / (local_small_max + 1); + + for (z = 1; z <= local_small_max; z++) { + if (big_w === 0) { + break; + } + + small_w = this.toFixed(big_w - (small_p * z)); + + html += ''; + } + + html += ''; + + result = this.convertToValue(big_w); + if (o.values.length) { + result = o.p_values[result]; + } else { + result = this._prettify(result); + } + + html += '' + result + ''; + } + this.coords.big_num = Math.ceil(big_num + 1); + + + + this.$cache.cont.addClass("irs-with-grid"); + this.$cache.grid.html(html); + this.cacheGridLabels(); + }, + + cacheGridLabels: function () { + var $label, i, + num = this.coords.big_num; + + for (i = 0; i < num; i++) { + $label = this.$cache.grid.find(".js-grid-text-" + i); + this.$cache.grid_labels.push($label); + } + + this.calcGridLabels(); + }, + + calcGridLabels: function () { + var i, label, start = [], finish = [], + num = this.coords.big_num; + + for (i = 0; i < num; i++) { + this.coords.big_w[i] = this.$cache.grid_labels[i].outerWidth(false); + this.coords.big_p[i] = this.toFixed(this.coords.big_w[i] / this.coords.w_rs * 100); + this.coords.big_x[i] = this.toFixed(this.coords.big_p[i] / 2); + + start[i] = this.toFixed(this.coords.big[i] - this.coords.big_x[i]); + finish[i] = this.toFixed(start[i] + this.coords.big_p[i]); + } + + if (this.options.force_edges) { + if (start[0] < -this.coords.grid_gap) { + start[0] = -this.coords.grid_gap; + finish[0] = this.toFixed(start[0] + this.coords.big_p[0]); + + this.coords.big_x[0] = this.coords.grid_gap; + } + + if (finish[num - 1] > 100 + this.coords.grid_gap) { + finish[num - 1] = 100 + this.coords.grid_gap; + start[num - 1] = this.toFixed(finish[num - 1] - this.coords.big_p[num - 1]); + + this.coords.big_x[num - 1] = this.toFixed(this.coords.big_p[num - 1] - this.coords.grid_gap); + } + } + + this.calcGridCollision(2, start, finish); + this.calcGridCollision(4, start, finish); + + for (i = 0; i < num; i++) { + label = this.$cache.grid_labels[i][0]; + + if (this.coords.big_x[i] !== Number.POSITIVE_INFINITY) { + label.style.marginLeft = -this.coords.big_x[i] + "%"; + } + } + }, + + // Collisions Calc Beta + // TODO: Refactor then have plenty of time + calcGridCollision: function (step, start, finish) { + var i, next_i, label, + num = this.coords.big_num; + + for (i = 0; i < num; i += step) { + next_i = i + (step / 2); + if (next_i >= num) { + break; + } + + label = this.$cache.grid_labels[next_i][0]; + + if (finish[i] <= start[next_i]) { + label.style.visibility = "visible"; + } else { + label.style.visibility = "hidden"; + } + } + }, + + calcGridMargin: function () { + if (!this.options.grid_margin) { + return; + } + + this.coords.w_rs = this.$cache.rs.outerWidth(false); + if (!this.coords.w_rs) { + return; + } + + if (this.options.type === "single") { + this.coords.w_handle = this.$cache.s_single.outerWidth(false); + } else { + this.coords.w_handle = this.$cache.s_from.outerWidth(false); + } + this.coords.p_handle = this.toFixed(this.coords.w_handle / this.coords.w_rs * 100); + this.coords.grid_gap = this.toFixed((this.coords.p_handle / 2) - 0.1); + + this.$cache.grid[0].style.width = this.toFixed(100 - this.coords.p_handle) + "%"; + this.$cache.grid[0].style.left = this.coords.grid_gap + "%"; + }, + + + + // ============================================================================================================= + // Public methods + + update: function (options) { + if (!this.input) { + return; + } + + this.is_update = true; + + this.options.from = this.result.from; + this.options.to = this.result.to; + this.update_check.from = this.result.from; + this.update_check.to = this.result.to; + + this.options = $.extend(this.options, options); + this.validate(); + this.updateResult(options); + + this.toggleInput(); + this.remove(); + this.init(true); + }, + + reset: function () { + if (!this.input) { + return; + } + + this.updateResult(); + this.update(); + }, + + destroy: function () { + if (!this.input) { + return; + } + + this.toggleInput(); + this.$cache.input.prop("readonly", false); + $.data(this.input, "ionRangeSlider", null); + + this.remove(); + this.input = null; + this.options = null; + } + }; + + $.fn.ionRangeSlider = function (options) { + return this.each(function() { + if (!$.data(this, "ionRangeSlider")) { + $.data(this, "ionRangeSlider", new IonRangeSlider(this, options, plugin_count++)); + } + }); + }; + + + + // ================================================================================================================= + // http://paulirish.com/2011/requestanimationframe-for-smart-animating/ + // http://my.opera.com/emoller/blog/2011/12/20/requestanimationframe-for-smart-er-animating + + // requestAnimationFrame polyfill by Erik Möller. fixes from Paul Irish and Tino Zijdel + + // MIT license + + (function() { + var lastTime = 0; + var vendors = ['ms', 'moz', 'webkit', 'o']; + for(var x = 0; x < vendors.length && !window.requestAnimationFrame; ++x) { + window.requestAnimationFrame = window[vendors[x]+'RequestAnimationFrame']; + window.cancelAnimationFrame = window[vendors[x]+'CancelAnimationFrame'] + || window[vendors[x]+'CancelRequestAnimationFrame']; + } + + if (!window.requestAnimationFrame) + window.requestAnimationFrame = function(callback, element) { + var currTime = new Date().getTime(); + var timeToCall = Math.max(0, 16 - (currTime - lastTime)); + var id = window.setTimeout(function() { callback(currTime + timeToCall); }, + timeToCall); + lastTime = currTime + timeToCall; + return id; + }; + + if (!window.cancelAnimationFrame) + window.cancelAnimationFrame = function(id) { + clearTimeout(id); + }; + }()); + +})); diff --git a/ext/3rd-party-addons/clarico_pricefilter/static/src/js/price_filter_slider.js b/ext/3rd-party-addons/clarico_pricefilter/static/src/js/price_filter_slider.js new file mode 100755 index 00000000..f91292ff --- /dev/null +++ b/ext/3rd-party-addons/clarico_pricefilter/static/src/js/price_filter_slider.js @@ -0,0 +1,78 @@ +odoo.define('pricefilter.filter', function(require) { + "use strict"; + require('web.dom_ready'); + $('form.js_attributes').submit(function(){ + $(this).find('input[name], select[name]').each(function(){ + if (!$(this).val()){ + $(this).removeAttr('name'); + } + }); + }); + + if($("#price_range_max_value").val() && $("#price_range_min_value").val() == "") + { + $("#price_range_min_value").val('0') + } + + + var price_slider_min = $("#price_slider_min").val(); + var price_sldier_max = $("#price_slider_max").val(); + var price_from = $("#price_range_min_value").val(); + if (price_from ==""){price_from=price_slider_min} + var price_to = $("#price_range_max_value").val(); + if (price_to ==""){price_to=price_sldier_max} + $("#range").ionRangeSlider({ + hide_min_max: true, + keyboard: true, + min: price_slider_min, + max: price_sldier_max, + from:price_from, + to: price_to, + type: 'double', + step: 1, + grid: false, + + onChange: function (data) { + $("#price_range_min_value").val(data.from) + $("#price_range_max_value").val(data.to) + }, + }); + + + $("#price_range_min_value").keypress(function(e) { + if (e.which != 8 && e.which != 0 && (e.which < 48 || e.which > 57)) { + return false; + } + }); + $("#price_range_max_value").keypress(function(e) { + if (e.which != 8 && e.which != 0 && (e.which < 48 || e.which > 57)) { + return false; + } + }); + + $("#price_slider_form").click(function() { + if ($("#price_range_min_value").val() == "") + return false + else if ($("#price_range_max_value").val() == "") + return false + else + return true + }); + + $("#price_range_min_value").change(function() { + + var min = parseInt($(this).attr('min')); + + if ($(this).val() < min) { + $(this).val(min); + } + }); + + $("#price_range_max_value").change(function() { + var max = parseInt($(this).attr('max')); + if ($(this).val() > max) { + $(this).val(max); + } + + }); +}) \ No newline at end of file diff --git a/ext/3rd-party-addons/clarico_pricefilter/static/src/less/ion.rangeSlider.css b/ext/3rd-party-addons/clarico_pricefilter/static/src/less/ion.rangeSlider.css new file mode 100755 index 00000000..2b2b328f --- /dev/null +++ b/ext/3rd-party-addons/clarico_pricefilter/static/src/less/ion.rangeSlider.css @@ -0,0 +1,146 @@ +/* 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; +} +.irs-disabled { + opacity: 0.4; +} +.lt-ie9 .irs-disabled { + filter: alpha(opacity=40); +} + + +.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; + outline: none !important; + z-index: -9999 !important; + background: none !important; + border-style: solid !important; + border-color: transparent !important; +} diff --git a/ext/3rd-party-addons/clarico_pricefilter/static/src/less/ion.rangeSlider.skinHTML5.css b/ext/3rd-party-addons/clarico_pricefilter/static/src/less/ion.rangeSlider.skinHTML5.css new file mode 100755 index 00000000..c8e7e87c --- /dev/null +++ b/ext/3rd-party-addons/clarico_pricefilter/static/src/less/ion.rangeSlider.skinHTML5.css @@ -0,0 +1,121 @@ +/* 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: 5px; 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: 5px; top: 33px; + border-top: 1px solid #000; + border-bottom: 1px solid #000; + background: #000; + background: linear-gradient(to top, rgba(0,0,0,1) 0%,rgba(0,0,0,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: 27px; + width: 15px; height: 16px; + 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: #000; + font-size: 12px; + text-shadow: none; + padding: 1px 10px; +} +.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 { +} diff --git a/ext/3rd-party-addons/clarico_pricefilter/static/src/less/normalize.css b/ext/3rd-party-addons/clarico_pricefilter/static/src/less/normalize.css new file mode 100755 index 00000000..46f646a5 --- /dev/null +++ b/ext/3rd-party-addons/clarico_pricefilter/static/src/less/normalize.css @@ -0,0 +1,427 @@ +/*! normalize.css v3.0.2 | MIT License | git.io/normalize */ + +/** + * 1. Set default font family to sans-serif. + * 2. Prevent iOS text size adjust after orientation change, without disabling + * user zoom. + */ + +html { + font-family: sans-serif; /* 1 */ + -ms-text-size-adjust: 100%; /* 2 */ + -webkit-text-size-adjust: 100%; /* 2 */ +} + +/** + * Remove default margin. + */ + +body { + margin: 0; +} + +/* HTML5 display definitions + ========================================================================== */ + +/** + * Correct `block` display not defined for any HTML5 element in IE 8/9. + * Correct `block` display not defined for `details` or `summary` in IE 10/11 + * and Firefox. + * Correct `block` display not defined for `main` in IE 11. + */ + +article, +aside, +details, +figcaption, +figure, +footer, +header, +hgroup, +main, +menu, +nav, +section, +summary { + display: block; +} + +/** + * 1. Correct `inline-block` display not defined in IE 8/9. + * 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera. + */ + +audio, +canvas, +progress, +video { + display: inline-block; /* 1 */ + vertical-align: baseline; /* 2 */ +} + +/** + * Prevent modern browsers from displaying `audio` without controls. + * Remove excess height in iOS 5 devices. + */ + +audio:not([controls]) { + display: none; + height: 0; +} + +/** + * Address `[hidden]` styling not present in IE 8/9/10. + * Hide the `template` element in IE 8/9/11, Safari, and Firefox < 22. + */ + +[hidden], +template { + display: none; +} + +/* Links + ========================================================================== */ + +/** + * Remove the gray background color from active links in IE 10. + */ + +a { + background-color: transparent; +} + +/** + * Improve readability when focused and also mouse hovered in all browsers. + */ + +a:active, +a:hover { + outline: 0; +} + +/* Text-level semantics + ========================================================================== */ + +/** + * Address styling not present in IE 8/9/10/11, Safari, and Chrome. + */ + +abbr[title] { + border-bottom: 1px dotted; +} + +/** + * Address style set to `bolder` in Firefox 4+, Safari, and Chrome. + */ + +b, +strong { + font-weight: bold; +} + +/** + * Address styling not present in Safari and Chrome. + */ + +dfn { + font-style: italic; +} + +/** + * Address variable `h1` font-size and margin within `section` and `article` + * contexts in Firefox 4+, Safari, and Chrome. + */ + +h1 { + font-size: 2em; + margin: 0.67em 0; +} + +/** + * Address styling not present in IE 8/9. + */ + +mark { + background: #ff0; + color: #000; +} + +/** + * Address inconsistent and variable font size in all browsers. + */ + +small { + font-size: 80%; +} + +/** + * Prevent `sub` and `sup` affecting `line-height` in all browsers. + */ + +sub, +sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline; +} + +sup { + top: -0.5em; +} + +sub { + bottom: -0.25em; +} + +/* Embedded content + ========================================================================== */ + +/** + * Remove border when inside `a` element in IE 8/9/10. + */ + +img { + border: 0; +} + +/** + * Correct overflow not hidden in IE 9/10/11. + */ + +svg:not(:root) { + overflow: hidden; +} + +/* Grouping content + ========================================================================== */ + +/** + * Address margin not present in IE 8/9 and Safari. + */ + +figure { + margin: 1em 40px; +} + +/** + * Address differences between Firefox and other browsers. + */ + +hr { + -moz-box-sizing: content-box; + box-sizing: content-box; + height: 0; +} + +/** + * Contain overflow in all browsers. + */ + +pre { + overflow: auto; +} + +/** + * Address odd `em`-unit font size rendering in all browsers. + */ + +code, +kbd, +pre, +samp { + font-family: monospace, monospace; + font-size: 1em; +} + +/* Forms + ========================================================================== */ + +/** + * Known limitation: by default, Chrome and Safari on OS X allow very limited + * styling of `select`, unless a `border` property is set. + */ + +/** + * 1. Correct color not being inherited. + * Known issue: affects color of disabled elements. + * 2. Correct font properties not being inherited. + * 3. Address margins set differently in Firefox 4+, Safari, and Chrome. + */ + +button, +input, +optgroup, +select, +textarea { + color: inherit; /* 1 */ + font: inherit; /* 2 */ + margin: 0; /* 3 */ +} + +/** + * Address `overflow` set to `hidden` in IE 8/9/10/11. + */ + +button { + overflow: visible; +} + +/** + * Address inconsistent `text-transform` inheritance for `button` and `select`. + * All other form control elements do not inherit `text-transform` values. + * Correct `button` style inheritance in Firefox, IE 8/9/10/11, and Opera. + * Correct `select` style inheritance in Firefox. + */ + +button, +select { + text-transform: none; +} + +/** + * 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio` + * and `video` controls. + * 2. Correct inability to style clickable `input` types in iOS. + * 3. Improve usability and consistency of cursor style between image-type + * `input` and others. + */ + +button, +html input[type="button"], /* 1 */ +input[type="reset"], +input[type="submit"] { + -webkit-appearance: button; /* 2 */ + cursor: pointer; /* 3 */ +} + +/** + * Re-set default cursor for disabled elements. + */ + +button[disabled], +html input[disabled] { + cursor: default; +} + +/** + * Remove inner padding and border in Firefox 4+. + */ + +button::-moz-focus-inner, +input::-moz-focus-inner { + border: 0; + padding: 0; +} + +/** + * Address Firefox 4+ setting `line-height` on `input` using `!important` in + * the UA stylesheet. + */ + +input { + line-height: normal; +} + +/** + * It's recommended that you don't attempt to style these elements. + * Firefox's implementation doesn't respect box-sizing, padding, or width. + * + * 1. Address box sizing set to `content-box` in IE 8/9/10. + * 2. Remove excess padding in IE 8/9/10. + */ + +input[type="checkbox"], +input[type="radio"] { + box-sizing: border-box; /* 1 */ + padding: 0; /* 2 */ +} + +/** + * Fix the cursor style for Chrome's increment/decrement buttons. For certain + * `font-size` values of the `input`, it causes the cursor style of the + * decrement button to change from `default` to `text`. + */ + +input[type="number"]::-webkit-inner-spin-button, +input[type="number"]::-webkit-outer-spin-button { + height: auto; +} + +/** + * 1. Address `appearance` set to `searchfield` in Safari and Chrome. + * 2. Address `box-sizing` set to `border-box` in Safari and Chrome + * (include `-moz` to future-proof). + */ + +input[type="search"] { + -webkit-appearance: textfield; /* 1 */ + -moz-box-sizing: content-box; + -webkit-box-sizing: content-box; /* 2 */ + box-sizing: content-box; +} + +/** + * Remove inner padding and search cancel button in Safari and Chrome on OS X. + * Safari (but not Chrome) clips the cancel button when the search input has + * padding (and `textfield` appearance). + */ + +input[type="search"]::-webkit-search-cancel-button, +input[type="search"]::-webkit-search-decoration { + -webkit-appearance: none; +} + +/** + * Define consistent border, margin, and padding. + */ + +fieldset { + border: 1px solid #c0c0c0; + margin: 0 2px; + padding: 0.35em 0.625em 0.75em; +} + +/** + * 1. Correct `color` not being inherited in IE 8/9/10/11. + * 2. Remove padding so people aren't caught out if they zero out fieldsets. + */ + +legend { + border: 0; /* 1 */ + padding: 0; /* 2 */ +} + +/** + * Remove default vertical scrollbar in IE 8/9/10/11. + */ + +textarea { + overflow: auto; +} + +/** + * Don't inherit the `font-weight` (applied by a rule above). + * NOTE: the default cannot safely be changed in Chrome and Safari on OS X. + */ + +optgroup { + font-weight: bold; +} + +/* Tables + ========================================================================== */ + +/** + * Remove most spacing between table cells. + */ + +table { + border-collapse: collapse; + border-spacing: 0; +} + +td, +th { + padding: 0; +} diff --git a/ext/3rd-party-addons/clarico_pricefilter/static/src/less/price_filter_style.less b/ext/3rd-party-addons/clarico_pricefilter/static/src/less/price_filter_style.less new file mode 100755 index 00000000..53748ad8 --- /dev/null +++ b/ext/3rd-party-addons/clarico_pricefilter/static/src/less/price_filter_style.less @@ -0,0 +1,53 @@ +.price_filter_main +{ + text-align:center; + + .clear-all-variant + { + display:block; + } +} +#price_slider_form { + width: auto; + height: 23px; + margin-top: 5px; + margin-right: 5px; + font-size: 12px; + letter-spacing: 1px; + margin-left: 1px; + float: right; + background-color: @theme-color; + color: #ffffff; + border: 0; +} +.div_class_whole_filter +{ + display:inline-block; + width:90%; +} +#price_range_max_value,#price_range_min_value { + display: inline-block; + width: 30%; + border: 0; + border-bottom-width: 0px; + border-bottom-style: none; + border-bottom-color: currentcolor; + border-bottom: 1px solid #ccc; + padding-left: 7px; +} +.span_class_currency_symbol { + display: inline-block; + padding: 7px 5px 0 0; +} + + +@media (max-width:1000px){ + .irs { + display:none; + } + .div_class_whole_filter{ + padding:3% 0; + .mb(3%); + } +} + diff --git a/ext/3rd-party-addons/clarico_pricefilter/templates/assets.xml b/ext/3rd-party-addons/clarico_pricefilter/templates/assets.xml new file mode 100755 index 00000000..7e09fae8 --- /dev/null +++ b/ext/3rd-party-addons/clarico_pricefilter/templates/assets.xml @@ -0,0 +1,13 @@ + + + + diff --git a/ext/3rd-party-addons/clarico_pricefilter/templates/template.xml b/ext/3rd-party-addons/clarico_pricefilter/templates/template.xml new file mode 100755 index 00000000..87ab854f --- /dev/null +++ b/ext/3rd-party-addons/clarico_pricefilter/templates/template.xml @@ -0,0 +1,46 @@ + + + + diff --git a/ext/3rd-party-addons/clarico_product/__init__.py b/ext/3rd-party-addons/clarico_product/__init__.py new file mode 100755 index 00000000..36ec7207 --- /dev/null +++ b/ext/3rd-party-addons/clarico_product/__init__.py @@ -0,0 +1 @@ +from . import model \ No newline at end of file diff --git a/ext/3rd-party-addons/clarico_product/__manifest__.py b/ext/3rd-party-addons/clarico_product/__manifest__.py new file mode 100755 index 00000000..387f5c1d --- /dev/null +++ b/ext/3rd-party-addons/clarico_product/__manifest__.py @@ -0,0 +1,28 @@ +{ + # Theme information + 'name' : 'Clarico Product', + 'category' : 'Website', + 'version' : '1.0', + 'summary': 'View Complete Product Information', + 'description': """""", + + # Dependencies + 'depends': [ + 'clarico_base' + ], + + # Views + 'data': [ + 'templates/template.xml', + 'templates/assets.xml', + 'view/product_video.xml', + 'view/product_short_description.xml' + ], + + # Author + 'author': 'Emipro Technologies Pvt. Ltd.', + 'website': 'http://www.emiprotechnologies.com', + + # Technical + 'installable': True, +} diff --git a/ext/3rd-party-addons/clarico_product/model/__init__.py b/ext/3rd-party-addons/clarico_product/model/__init__.py new file mode 100755 index 00000000..510f3bdc --- /dev/null +++ b/ext/3rd-party-addons/clarico_product/model/__init__.py @@ -0,0 +1 @@ +from . import product_template \ No newline at end of file diff --git a/ext/3rd-party-addons/clarico_product/model/product_template.py b/ext/3rd-party-addons/clarico_product/model/product_template.py new file mode 100755 index 00000000..7e642771 --- /dev/null +++ b/ext/3rd-party-addons/clarico_product/model/product_template.py @@ -0,0 +1,9 @@ +from odoo import fields, models + +class product_template(models.Model): + _inherit = "product.template" + + pif_video = fields.Boolean(string='Product Video Available?') + p_video_url = fields.Char(string='YouTube Url') + product_sort_description = fields.Text('Short Description') + product_description = fields.Html('Product Description',translate=True) \ No newline at end of file diff --git a/ext/3rd-party-addons/clarico_product/static/description/icon.png b/ext/3rd-party-addons/clarico_product/static/description/icon.png new file mode 100755 index 00000000..09fd34ab Binary files /dev/null and b/ext/3rd-party-addons/clarico_product/static/description/icon.png differ diff --git a/ext/3rd-party-addons/clarico_product/static/src/js/clarico_product.js b/ext/3rd-party-addons/clarico_product/static/src/js/clarico_product.js new file mode 100755 index 00000000..2e4a6285 --- /dev/null +++ b/ext/3rd-party-addons/clarico_product/static/src/js/clarico_product.js @@ -0,0 +1,92 @@ + +$(window).load(function() { + //zooming effect of video icon + var animDuration = 500; + $(".pvideo_link").addClass("i-zoom-animation"); + setTimeout(function(){ + $(".pvideo_link").removeClass("i-zoom-animation"); + }, animDuration + ); +}); + +$(document).ready(function() { + + $('.click_effects').click(function(){ + $('html, body').animate({ + scrollTop: $( $(this).attr('href') ).offset().top + }, 1000); + return false; + }); + var video_url=$('.popup_iframe_url').attr('src'); + $(".pvideo_link").click(function(){ + $('.product_video_popup_main').css("display","block"); + $("iframe.popup_iframe_url").attr('src',video_url); + $("iframe.popup_iframe_url").attr('src', $("iframe.popup_iframe_url").attr('src') + "?autoplay=1&controls=0&loop=1&rel=0&showinfo=0"); + $('body').css("overflow","hidden"); + }) + $(".popup-close").click(function(){ + $('.product_video_popup_main').css("display","none"); + $('body').css("overflow","visible"); + $('.popup_iframe_url').attr('src', ''); + }) +}) + + +$(document).on( 'keydown', function(e){ + if(e.keyCode === 27) { + $('.product_video_popup_main').css("display","none"); + $('body').css("overflow","visible"); + $('.popup_iframe_url').attr('src', ''); + } +}); + + + + +$(window).load(function(){ + var suggest_count = $('.suggest_count').html(); + + $('#suggested_item_product > .owl-carousel').owlCarousel({ + margin:10, + nav:true, + autoplay:true, + autoplayTimeout:3000, + autoplayHoverPause:true, + responsiveClass:true, + + responsive:{ + 0:{ + items:1 + }, + 500:{ + items:2 + }, + 1000:{ + items:2 + } + } + }); + + var acce_count = $('.acce_count').html(); + + $('#acce_item_product > .owl-carousel').owlCarousel({ + margin:10, + nav:true, + autoplay:true, + autoplayTimeout:3000, + autoplayHoverPause:true, + responsiveClass:true, + + responsive:{ + 0:{ + items:1 + }, + 500:{ + items:2 + }, + 1000:{ + items:2 + } + } + }); +}) diff --git a/ext/3rd-party-addons/clarico_product/static/src/js/image_zoom.js b/ext/3rd-party-addons/clarico_product/static/src/js/image_zoom.js new file mode 100755 index 00000000..9de5ebf4 --- /dev/null +++ b/ext/3rd-party-addons/clarico_product/static/src/js/image_zoom.js @@ -0,0 +1,59 @@ +$(".zoomed_image_on_screen").css("display","none") +if($(window).width() < 1200) +{ + $("body").removeClass("image_zoom"); +} +else +{ +setTimeout(function(){ + $(".image_zoom").click(function(){ + $('body').css('position','fixed') + $(".zoomed_image_on_screen").css("display","block") + $('.zooming_image_screen').attr('src', $(this).children("img").attr('src')); + var a = $(window).height(); + $(".zooming_image_screen_o").css({"position":"relative","overflow":"hidden","white-space":"nowrap","height":a}) + var $gal = $(".zooming_image_screen_o"), + galW = $gal.outerHeight(true), + galSW = $gal[0].scrollHeight, + wDiff = (galSW/galW)-1, // widths difference ratio + mPadd = 10, // Mousemove Padding + damp = 20, // Mousemove response softness + mX = 0, // Real mouse positionm + X2 = 0, // Modified mouse position + posX = 0, + mmAA = galW-(mPadd*1), // The mousemove available area + mmAAr = (galW/mmAA); // get available mousemove fidderence ratio + $gal.mousemove(function(e) { + mX = e.pageY - $(this).parent().offset().top - this.offsetTop; + mX2 = Math.min( Math.max(0, mX-mPadd), mmAA ) * mmAAr; + }); + setInterval(function(){ + posX += (mX2 - posX) / damp; // zeno's paradox equation "catching delay" + $gal.scrollTop(posX*wDiff); + },10); + }); + + $(".p_class_cross_image").click(function(){ + $('body').css('position','relative') + $(".zoomed_image_on_screen").css("display","none"); + }); + $(document).keyup(function(e) { + if (e.which == 27) { + $('body').css('position','relative') + $(".zoomed_image_on_screen").css("display","none"); + } + }); + $(".ref_imgs").click(function(){ + var image_class = $(this).parents('.div_parent_zoom_class').children('.zooming_image_screen_o'); + image_class = this + $('.zooming_image_screen').attr('src', $(this).children("img").attr('src')); + }); + +},1000) + + } + + + + + diff --git a/ext/3rd-party-addons/clarico_product/static/src/less/clarico_product.less b/ext/3rd-party-addons/clarico_product/static/src/less/clarico_product.less new file mode 100755 index 00000000..e96d9d07 --- /dev/null +++ b/ext/3rd-party-addons/clarico_product/static/src/less/clarico_product.less @@ -0,0 +1,1151 @@ +.css_not_available.js_product > :nth-child(4) > * { + display: block !important; +} + +.clarico_product_breadcrumb +{ + width:100%; + background-color: #f5f5f5; + display: inline-block; + z-index:999; + .pt(1%); + .pb(1%); + + + .sub_breadcrumb + { + .block; + + .clarico_breadcrumb + { + width: 65%; + line-height: 30px; + margin: 0; + padding:0px; + display: inline-block; + background-color: transparent; + } + } +} +.p_des_container +{ + .block; +} +.res_product_img, #product_details{ + .pt(4%) !important; + + .o_rating_star_card + { + .mb(2%); + } + .product_price + { + .mb(3%); + } + .list-unstyled + { + display:block; + + + >li + { + .mb(5%); + .mt(3%); + } + + } + .availability_messages >div + { + .muli-bold(); + .mt(0) !important; + .mb(3%); + } +} +.p_static_desc_para +{ + .common-div; + line-height: 175%; + + .text-muted + { + color: #999; + } +} +#product_detail +{ + .block; +} +#product_attributes_simple +{ + span + { + display:inline-block; + .mb(3px); + } +} + +#hr_product_attributes_simple { + margin: 10px 0; + padding: 0; +} +.p_zoom_link +{ + color:#555; + .size(12px); + position:absolute; + bottom:15%; + max-width:120px; +} + + + + .col-sm-7 + { + width:63%; + padding:0; + + #o-carousel-product #indicators + { + height:450px !important; + width:115px !important; + position:absolute; + left:0; + overflow-x:hidden; + top:0; + + } + #o-carousel-product .carousel-indicators li + { + display:block !important; + width: 80px !important; + height: 80px !important; + .mb(10px) !important; + } + #o-carousel-product .carousel-indicators li img { + + opacity: 1.0; + } + + #o-carousel-product .carousel-inner div.item { + height: 650px !important; + } + .carousel-outer .inner-slider + { + width: 85%; + float:right; + position:relative; + } + .carousel .carousel-control.left { + left: 15% !important; + } + .carousel .carousel-control.right { + + right: 0 !important; + } + .carousel-control + { width:5%; + } + } + +#product_details +{ + position: relative; + float: right; + width:34%; + padding:0; + + .o_add_wishlist_dyn,.o_add_compare_dyn,.product_wish_wo_signin + { + display: inline-block; + width: auto; + padding: 10px; + vertical-align: top; + margin-top: 2%; + } +} +.col-lg-offset-1 +{ + .ml(0); +} +.product_name_rating +{ + width:100%; + display:inline-block; + .mb(0%); +} +.c_product_name +{ + .size(20px); + display:block; + float:left; +} +.res_review_box +{ + padding:0; + .ml(0); +} +.product_avg_rating +{ + display:inline-block; + float:left; + width:100%; + .mb(3%); +} +.product_price +{ + float:none !important; + + .p-orignal-price + { + .size(19px); + color:#222; + } + .strike-price + { + color: #777 !important; + display: block !important; + text-decoration: line-through; + float: left; + .pr(2%); + .pt(4px) !important; + .size(15px); + } +} +.js_add_cart_variants strong{ + font-weight: normal !important; +} +.oe_price_h4 +{ + >.text-danger + { + color: #777; + text-decoration: line-through; + float: left; + .pr(10px); + .pt(5px); + .size(13px); + } +} +.clear_attr +{ + color:@theme-color; +} +.alert +{ + margin: 1% 0% 1% 0%; +} + +.clear_attr_container +{ + display:block; +} +.product_available +{ display: inline-block; + width: 30%; + float: right; + line-height:30px; + + .alert-success + { + .bg(unset); + border-color:transparent; + color:gray; + margin: 0; + padding: 10px 15px; + text-align: right; + } + .alert-warning + { + background-color: unset; + border-color: transparent; + margin: 0; + padding: 10px 15px; + text-align: right; + + span + { + font-family: @m-bold; + } + } +} + +.stars +{ + color:@theme-color; + .size(11px) !important; +} +#comments +{ + color:#777; + &:hover + { + color:@theme-color; + text-decoration:none; + } +} +.well +{ + .bg(unset); + border:none; + .mb(0px); + box-shadow: unset; +} +.well-sm +{ + padding: 0px; +} +.o_rating_card +{ + >.text-center + { + text-align:unset; + } +} +.rating +{ + >.fa-user + { + display:none; + } +} + +/*product varients*/ + +#all_att +{ + .mt(25px); +} + +#chevron-down_icon +{ + .pt(15px); + color:#222; +} +.select_wrap +{ + position:relative; + .bg(#fff); +} +li >.list-inline +{ + .ml(0) !important; + .mt(10px); + >li + { + .pl(0); + .mb(5px); + } +} +li >.list-unstyled +{ + .ml(0) !important; + .mt(10px); +} +.nav-stacked >li + li +{ + //.mt(20px); +} +select.form-control +{ + .mt(10px); + border-radius: unset; + font-family: @m-bold; +} +.extra_price_lbl +{ + display: inline-block; + min-width: 10px; + padding: 0px 5px; + color: #777; + line-height: 1; + white-space: nowrap; + text-align: center; + +} +/* product Quantity */ +.product_quantity +{ + display: inline-block; + width: auto; + + +} + + + +.css_quantity +{ + float:left; + > a + { + border-radius:unset; + .bg(unset); + &:hover + { + color:@theme-color; + } + } +} +.product_wish_compare +{ + width: 30%; + display: inline-block; + +} +#wishicon_div +{ + float: left; + + .o_add_wishlist + { + .left(); + .size(15px); + display:block; + padding: 6px 10px; + .bg(transparent); + .mr(2%); + cursor:pointer; + + >span + { + color:#555; + .size(13px); + transition:color 0.4s ease-in-out; + + } + } +} +.compare_btn +{ + .left(); + + & .comparelist{ + width:35px; + height: 35px; + vertical-align: middle; + .left; + padding: 6px 10px; + + + >i + { + color:#555; + .size(13px); + + &:hover + + { + color:@theme-color; + } + } + } + + +} +.ctg_class +{ + width:100%; + display:inline-block; + >.category_label + { + float: left; + margin-right: 2%; + font-family: @m-bold; + color:#666; + + span + { + color:#777; + } + } +} + +.review_count +{ + float: left; + .mr(3%); + + color:#777; +} +.review_lbl +{ + color:#777; +} +.div_class_whole_product_features +{ + .mt(5%); +} +.product_share +{ + position: fixed; + top: 50%; + right: 1%; + z-index:999; + + a + { + display: block; + box-shadow: 0px 4px 8px 0px rgba(0, 0, 0, 0.1); + background: #FFF; + border-radius: 100%; + text-align: center; + padding-top: 8px; + margin: 10px 0; + width: 38px; + height: 38px; + .size(17px); + >i + { + color:#555 !important; + transition: color 0.3s ease-in-out; + &:hover + { + color:@theme-color !important; + } + } + } +} +#product_colors +{ + width:13px; + height:13px; + +} +.prod_des +{ + .mb(3%); + line-height: 170%; +} +.cart_quantity_combo +{ + .common-div; +} +.p_ad2cart{ + .common-div; + + #add_to_cart{ + max-width: 200px !important; + float: left; + text-transform: uppercase; + font-size: 16px; + letter-spacing: 1px; + display: inline-block; + .bg(@theme-color); + width: 100%; + .oswald-regular(); + } +} +.c_attr_heading +{ + .transform(uppercase); + .size(12px); + +} + +/* product comments */ + +.comment_heading +{ + text-align: center; + display: inline-block; + width: 100%; + + h1 + { + .size(20px); + display:inline-block; + text-align: center; + width: 100%; + } + p + { + text-align: center; + display: inline; + } +} + +.tot_review_heading +{ + display: block; + width: auto; + margin: 0px auto; + text-align: center; + //border-top: 3px solid @theme-color; + padding: 2% 0%; + margin-top: 2%; + + p + { + font-family: @m-bold; + .transform(uppercase) + } +} +.media-list +{ + .mb(8%); + .mt(8%); +} +.media-body +{ + .media-heading + { + width: 70%; + float: left; + + span + { + font-family:@m-bold; + color:#777; + } + } + .o_rating_star_card + { + width:30%; + } + .message_body + { + display: inline-block; + width: 70%; + } + +} +.add_cmt_lbl +{ + font-family:@m-bold; + .mb(2%); +} +.ur_rating_lbl +{ + font-family: @m-bold; + text-transform: uppercase; + font-size: 14px; + color: #545454; +} +.pull-left +{ + .stars + { + .size(14px) !important; + } + .form-control + { + .mb(2%); + } + #review_submit_btn + { + padding: 14px 80px; + text-transform: uppercase; + font-family: @m-bold; + .size(13px); + .bg(@theme-color); + opacity:0.8 !important; + + &:hover + { + color: #fff; + opacity: 1.0 !important; + transition: opacity linear 0.5s; + transform: unset !important; + } + } + +} +.text-cmt-heading +{ + .mt(7%); +} +.totus_product_specification_div +{ + .common-div; +} +.product_specification_div +{ + tr.breadcrumb + { + th + { + .pl(2%); + .muli-light(); + .size(13px); + .pt(11px); + .pb(11px); + } + } + tr{ + td{ + .pt(11px) !important; + .pb(11px) !important; + } + } +} + + .o_website_rating_static + { + color:@theme-color; + } +.o_website_rating_card_container table.o_website_rating_progress_table .o_website_rating_table_progress .o_rating_progressbar +{ + .bg(@theme-color); +} +/*-------------------------product zoom effect style-------------------------------*/ + .zoomed_image_on_screen + { + position: fixed; + width: 100%; + height: 100%; + display: none; + left: 0px; + overflow-y: hidden; + .bg(#FFF); + z-index: 9999; + top: 0px; + cursor: move; + } + + + .zooming_image_screen + { + .center; + width: 62%; + } + .div_cross_zoomed_image + { + width:22px; + .ml(10px); + } + .image_zoom + { + cursor:zoom-in; + } + .clarico_slide + { + position:fixed; + left:0; + width:100%; + text-align:center; + .bg(#fff); + + .carousel-indicators + { + height:500px; + width:140px; + .ml(30px); + .mb(100px); + overflow-x:hidden; + left:0; + + li + { + width:90px !important; + height:90px !important; + border: none; + display:block; + .mb(10px); + + >img + { + border: 4px solid #ccc; + } + } + } + } + .div_parent_zoom_class + { + position:relative; + } +/*------------------alternative products--------------------------*/ +.column-right_p_alternative +{ + width:45%; + display:block; + float:right; + +} +.alt_prod_details +{ + width:100%; + display: block; + margin: 17px 0 0; + text-align: left; + max-width:200px; + + .alt_prod_product_name + { + .center; + text-align:left; + + p + { + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + color:#717171; + .size(14px); + .mb(10px); + } + + } + .alt_prod_product_price + { + .common-div; + .size(13px); + font-weight:700; + + p + { + .mb(10px); + } + } +} +.alt_prod_deatil_hr +{ + border-color: @theme-color; + border-width: 2px; + width: 37px; + .ml(0px); + .mt(7px); +} + + + +.alternate_recent_product_whole_div_class +{ + margin-bottom: 2%; + border-left: 1px solid #E0DEDE; + position: relative; + width:100%; + display:inline-block; + padding:0 5%; + +} +.alternate_product_heading_para_class +{ + .size(14px); + font-family:@m-bold; + .uppercase(); + .mb(7%); + .mt(0); +} +.alt_prod_name +{ + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; +} +.hr_class_Sep +{ + width: 100%; + border-width: 1px; + border-color: #E0DEDE; + margin-top: 30px; + display:inline-block; + +} +.container_class +{ + width:100%; + display:block; + margin:0px auto; + +} +.alternet_common +{ + //.left(); +} +.carousel-indicators .active +{ +width:auto !important; +height:auto !important; +} + +#product_page_recently_view{ + .common-div; +} +.clarico_product_sku +{ + display: inline-block; + width: 100%; + //.mt(5%); + .mb(2%); + + p{ + .size(13px); + + } +} + +#suggested_item_product .recently_view_product_name { + + & a{ + .ellipsis; + max-width:200px; + } +} + + +/* product video popup */ + +.product_video_popup_main +{ + display:none; + width:100%; + margin:0px auto; + .bg(#000); + position:fixed; + top:0; + z-index:9999; + height:100%; + left:0; + right:0; +} +.product_video_popup_wrap +{ + .common-div; + position:relative; + + .product_video_subpopup + { + .block; + } +} + +.iframe_product_video +{ + .block; + + iframe + { + width:700px; + height:600px; + display:block; + margin:0px auto; + border:0; + } +} +.pvideo_link +{ + width: 38px; + height: 38px; + border-radius: 100%; + .bg(@theme-color); + color: #fff; + text-align: center; + position: absolute; + bottom: 15%; + left:20px; + .size(17px); + + i + { + padding:10px; + vertical-align: text-bottom; + } + +} +.i-zoom-animation { + -webkit-animation:animzoom 0.6s; + animation:animzoom 0.6s +} +@-webkit-keyframes animzoom{ + from{-webkit-transform:scale(0)} + to{-webkit-transform:scale(1.5)} +} +@keyframes animzoom{ + from{transform:scale(0)} + to{transform:scale(1.5)} +} + +.cart-quantity-div{ + display:inline-block; + width:auto; + .pt(3%); + .pb(2%); + + & .o_add_compare_dyn{ + padding: 5px 20px 6px 20px; + display: inline-block; + } +} +.product_info_heading_para_class{ + .size(14px); + .uppercase(); + color: black; + .muli-bold(); + .mt(5px); + .mb(5%); + line-height:170%; + } + + +.sort_description_div_main +{ + .mb(5%); + + .sort_description_p + { + color: #777; + line-height: 170%; + } +} +.product_specification_left +{ + width:55%; + display:inline-block; +} + + + +/* product comments */ + +.comment_heading +{ + text-align: center; + display: inline-block; + width: 100%; + + h1 + { + .size(20px); + display:inline-block; + text-align: center; + width: 100%; + .mb(5%); + } + p + { + text-align: center; + display: inline; + } +} + +.tot_review_heading +{ + display: block; + width: auto; + margin: 0px auto; + text-align: center; + //border-top: 3px solid @theme-color; + padding: 2% 0%; + margin-top: 2%; + + p + { + font-family: muli-bold; + .transform(uppercase) + } +} +.media-list +{ + .mb(8%); + .mt(8%); +} +.media-body +{ + .media-heading + { + width: 70%; + float: left; + + span + { + font-family:@m-bold; + color:#777; + } + } + .o_rating_star_card + { + width:30%; + } + .message_body + { + display: inline-block; + width: 70%; + } + +} +.add_cmt_lbl +{ + font-family:@m-bold; + .mb(2%); +} +.ur_rating_lbl +{ + font-family: muli-bold; + text-transform: uppercase; + font-size: 14px; + color: #545454; +} +.pull-left +{ + .stars + { + .size(14px) !important; + } + .form-control + { + .mb(2%); + } + #review_submit_btn + { + padding: 14px 80px; + text-transform: uppercase; + font-family: @m-bold; + .size(13px); + .bg(@theme-color); + opacity:0.8 !important; + + &:hover + { + color: #fff; + opacity: 1.0 !important; + transition: opacity linear 0.5s; + transform: unset !important; + } + } + +} +.text-cmt-heading +{ + .mt(7%); +} +#discussion{ + .col-md-offset-2{ + p{ + text-align: center; + } + } + .o_message_counter + { + .mt(8px); + } + .o_portal_chatter_composer{ + textarea{ + .mt(4px); + border-radius: 0px; + } + } + .o_portal_chatter_message_title + { + p{ + display: inline-block; + } + } + .o_website_rating_table_reset + { + .pl(15px); + } + .media-body + { + .o_website_rating_static + { + i{ + .size(11px); + } + } + } + + .o_website_rating_table_star_num + { + min-width: 60px; + } +} diff --git a/ext/3rd-party-addons/clarico_product/static/src/less/product_responsive.less b/ext/3rd-party-addons/clarico_product/static/src/less/product_responsive.less new file mode 100755 index 00000000..6747e482 --- /dev/null +++ b/ext/3rd-party-addons/clarico_product/static/src/less/product_responsive.less @@ -0,0 +1,475 @@ +@media (max-width:1400px){ + .row { + .ml(unset) !important; + .mr(unset) !important; + } + #div_comb_img_detail .col-sm-7 #o-carousel-product .carousel-inner div.item + { + height:auto !important; + } +} + + +@media (max-width:1000px){ + + .product_info_style_padding + { + width:100%; + } + .alternate_recent_product_whole_div_class { + width: 100%; + border-left: none; + .mt(5%); + padding:0; + } + + .alternate_product_heading_para_class { + margin-top: 3%; + } + + .div_class_product_features { + padding-top: unset; + } + + + .col-md-offset-1 { + margin-left:unset; + } + .product_available{ + width:auto; + } + .clarico_breadcrumb { + width: auto !important; + } + .strike-through + { + margin-bottom:3%; + + span{ + text-decoration: line-through; + } + } + #div_comb_img_detail .col-sm-7 #o-carousel-product .carousel-inner div.item + { + height:auto !important; + } + .iframe_product_video iframe { + width: 600px; + height: 500px; + } +} + +@media (max-width:900px){ + .res_product_img{ + width:100% !important; + } + #product_details{ + width:100%; + } + .r_v_deatil_hr + { + display:none; + } + .div_class_product_features { + width: 90%; + } + .css_editable_mode_hidden + { + .left(); + .size(15px); + } + .clarico_breadcrumb { + width: auto !important; + } + .comment_heading{ + text-align: unset !important; + } + .comment_heading h1{ + text-align: unset !important; + .size(16px); + } + .res_review_box + { + .pl(unset); + } + .product_info_style_padding + { + .pl(unset); + .pr(unset); + } + .product_sort_description_div_class { + .pl(0px); + } + .clarico_breadcrumb + { + .size(12px); + } + .js_publish_btn + { + .size(12px); + } + .c_product_name { + .size(18px); + } + .res_pera_description + { + .size(13px); + } + .text-muted + { + .size(13px); + } + .product_price .strike-price { + .size(13px); + } + + .div_class_product_features .div_sub_class_product_features .product_info_style_padding .product_sort_description_div_class .product_info_heading_para_class { + font-size: 13px; + } + .add_cmt_lbl + { + .size(13px); + } + .ur_rating_lbl { + .size(11px); + } + .alternate_product_heading_para_class { + .size(13px); + } + .tot_review_heading { + .size(10px); + } + #add_to_cart { + .mb(0px); + } + .div_main_class_desc .product_sort_description_para_class { + .size(13px); + } + .product_features_attribute_name_para_class + { + .size(11px); + } + .product_features_value_para_class + { + .size(11px); + } + .recently_viwed_details .recently_view_product_name p { + .size(12px); + } + #indicators + { + display:none; + } + .col-sm-7 .carousel-outer .inner-slider { + width: 100% !important; + } + .col-sm-7 #o-carousel-product .carousel-inner div.item { + height: auto !important; + } + .col-sm-7 .carousel .carousel-control.right { + right: 10px !important; + } + .col-sm-7 .carousel .carousel-control.left { + left: 10px !important; + } + + .css_editable_mode_hidden { + width: 100%; + } + .oe_currency_value { + .left(); + } + .product_price .strike-price { + padding-top: unset; + } + .fa-star-o + { + .size(11px) !important; + } + .clarico_product_breadcrumb #website_published_button{ + position: relative; + } + .product_specification_left + { + width:100%; + } + .column-right_p_alternative + { + width:100%; + } + #product_details .list-unstyled > li + { + .mt(0); + .mb(2%); + } + .cart-quantity-div + { + .pt(1%); + .pb(0); + } + #product_details .o_add_wishlist_dyn, #product_details .o_add_compare_dyn,#product_details .product_wish_wo_signin { + .mt(0); + } + .specification_table_section table tr td + { + width:49% !important; + display:inline-block; + } + #product_details .availability_messages > div { + margin-top: 8px !important; + .mb(2%); + } + .res_product_img .product_price, #product_details .product_price { + margin-top: 0 !important; + } + .prod_des { + margin-bottom: 2%; + } +} + + +@media (max-width:600px){ + #product_detail + { + & #modal_optional_products{ + & .table{ + & .td-img, .td-product_name, .td-price{ + width: 100p% !important; + float:left !important; + } + } + } + } + #indicators + { + display:none; + } + #div_comb_img_detail .col-sm-7 .carousel-outer .inner-slider { + width: 100%; + } + .carousel .carousel-control.left , .carousel .carousel-control.right{ + top: 40% !important; + } + #div_comb_img_detail .col-sm-7 .carousel .carousel-control.right { + right: 10% !important; + } + #div_comb_img_detail .col-sm-7 .carousel .carousel-control.left { + left: 10% !important; + } + .res_next_class, .res_prev_class + { + top:10% !important; + } + .clarico_breadcrumb + { + .size(10px) !important; + li + { + a + { + .size(10px) !important; + } + .active{ + .size(10px) !important; + } + + } + } + .css_editable_mode_hidden + { + .size(13px); + } + .product_wish_compare + { + width: 35% !important; + } + .instock_text + { + .size(10px) !important; + } + #product_details + { + width:98%; + .mt(15px); + } + .prod_des + { + .size(14px) !important; + } + .product_sort_description_para_class + { + .size(12px) !important; + } + .product_features_attribute_name_para_class , .product_features_value_para_class + { + .size(10px) !important; + } + #div_comb_img_detail .col-sm-7 #o-carousel-product .carousel-inner div.item + { + height:auto !important; + } + .product_features_attribute_value_div_class{ + .common-div; + } + .product_name_rating { + .mb(1%); + } + .res_pera_description{ + .mb(0px); + } + .product_price + { + float:none; + .mb(5%); + } + .product_share + { + position:relative; + .mb(5%); + .mt(5%); + + a + { + display: inline-block !important; + margin: 10px 5px !important; + } + } + .tot_review_heading { + width: 25%; + border-top: 2px solid @theme-color; + } + .tot_review_heading + { + .size(10px); + } + .comment_heading h1{ + .size(13px); + width: 90%; + text-align: center !important; + line-height: 170%; + display: block; + margin: 0px auto; + } + .media-heading + { + .size(12px); + } + .js_publish_btn + { + .size(9px); + } + .add_cmt_lbl + { + .size(16px); + } + .ur_rating_lbl { + .size(11px); + margin: 8px 0 0; + } + .form-control + { + .size(13px); + } + .pull-left #review_submit_btn { + padding: 12px 70px; + .size(12px); + } + .c_product_name { + .size(17px); + } + .cart-quantity-div + { + .pb(0); + } + #product_details .availability_messages > div + { + .size(13px); + } + #product_details .list-unstyled > li + { + .mb(2%); + } + #add_to_cart { + .mt(0) !important; + } + .recently_viwed_details .recently_view_product_name p { + .size(12px); + } + .price_comman_sub_class + { + .oe_currency_value { + .size(16px); + } + } + recently_viewed_lbl { + .size(12px); + } + #indicators + { + display:none; + } + .div_class_product_features { + width: 87%; + } + .media-body + { + .o_rating_star_card + { + .mb(10px); + .stars i + { + .size(0px) !important; + vertical-align: top; + } + } + } + + .iframe_product_video iframe { + width: 325px; + height: 285px; + } + + .product_available .alert-warning{ + padding: 0; + .size(12px); + line-height: 0; + } + .ctg_class + { + .mt(5%); + } + .alternate_recent_product_whole_div_class + { + padding-left:0%; + } + .div_class_whole_product_features + { + .mb(5%); + } + .oe_price_h4 + { + >.text-danger + { + .pt(0); + } + } + .o_website_rating_card_container table.o_website_rating_progress_table { + width: 100%; + overflow: hidden; + display: block; + } + + #product_details + { + tr#product_confirmation + { + width:100%; + display:grid; + } + td.td-price + { + padding:10px !important; + .common-div; + } + } +} diff --git a/ext/3rd-party-addons/clarico_product/templates/assets.xml b/ext/3rd-party-addons/clarico_product/templates/assets.xml new file mode 100755 index 00000000..aefd503d --- /dev/null +++ b/ext/3rd-party-addons/clarico_product/templates/assets.xml @@ -0,0 +1,13 @@ + + + + diff --git a/ext/3rd-party-addons/clarico_product/templates/template.xml b/ext/3rd-party-addons/clarico_product/templates/template.xml new file mode 100755 index 00000000..1854df7b --- /dev/null +++ b/ext/3rd-party-addons/clarico_product/templates/template.xml @@ -0,0 +1,432 @@ + + + + 23 + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ext/3rd-party-addons/clarico_product/view/product_short_description.xml b/ext/3rd-party-addons/clarico_product/view/product_short_description.xml new file mode 100755 index 00000000..590ebb22 --- /dev/null +++ b/ext/3rd-party-addons/clarico_product/view/product_short_description.xml @@ -0,0 +1,22 @@ + + + + productemp.form.view + product.template + + + + + + + + + + + + + + + + + diff --git a/ext/3rd-party-addons/clarico_product/view/product_video.xml b/ext/3rd-party-addons/clarico_product/view/product_video.xml new file mode 100755 index 00000000..dd8761aa --- /dev/null +++ b/ext/3rd-party-addons/clarico_product/view/product_video.xml @@ -0,0 +1,42 @@ + + + + product.template.product.website.form + product.template + + + + +
+ +
+ + + +
+
STEPS:
+

1) Go to Youtube and open the video of your product. +

+

+ 2) Click on + Share + and select + embed + from the popup. +

+

+ 3) Copy source of iframe tag and paste here in + Youtube Url +

+

Demo URL: + https://www.youtube.com/embed/Lx9GlGnHM7g +

+
+
+
+
+
+
diff --git a/ext/3rd-party-addons/clarico_product_carousel/__init__.py b/ext/3rd-party-addons/clarico_product_carousel/__init__.py new file mode 100755 index 00000000..b924a1c7 --- /dev/null +++ b/ext/3rd-party-addons/clarico_product_carousel/__init__.py @@ -0,0 +1,2 @@ +from . import controllers +from . import models \ No newline at end of file diff --git a/ext/3rd-party-addons/clarico_product_carousel/__manifest__.py b/ext/3rd-party-addons/clarico_product_carousel/__manifest__.py new file mode 100755 index 00000000..2685351e --- /dev/null +++ b/ext/3rd-party-addons/clarico_product_carousel/__manifest__.py @@ -0,0 +1,32 @@ +{ + # Theme information + 'name' : 'Clarico Product Carousel', + 'category' : 'Website', + 'version' : '1.0', + 'summary': 'Website Product Carousel', + 'description': """""", + + # Dependencies + 'depends': [ + 'clarico_carousel' + ], + + # Views + 'data': [ + 'security/ir.model.access.csv', + 'data/product_carousel_filter_demo_data.xml', + 'data/product_carousel.xml', + 'views/website_filter_ept_view.xml', + 'templates/assets.xml', + 'templates/ecommerce_product_carousel_snippet.xml', + 'templates/snippet_options.xml', + + ], + + # Author + 'author': 'Emipro Technologies Pvt. Ltd.', + 'website': 'http://www.emiprotechnologies.com', + + # Technical + 'installable': True, +} diff --git a/ext/3rd-party-addons/clarico_product_carousel/controllers/__init__.py b/ext/3rd-party-addons/clarico_product_carousel/controllers/__init__.py new file mode 100755 index 00000000..deec4a8b --- /dev/null +++ b/ext/3rd-party-addons/clarico_product_carousel/controllers/__init__.py @@ -0,0 +1 @@ +from . import main \ No newline at end of file diff --git a/ext/3rd-party-addons/clarico_product_carousel/controllers/main.py b/ext/3rd-party-addons/clarico_product_carousel/controllers/main.py new file mode 100755 index 00000000..694abc72 --- /dev/null +++ b/ext/3rd-party-addons/clarico_product_carousel/controllers/main.py @@ -0,0 +1,46 @@ +from odoo import http +from odoo.http import request +from odoo import SUPERUSER_ID +from odoo.tools.safe_eval import safe_eval +from odoo.addons.website_sale.controllers.main import QueryURL + +class claricoCarousel(http.Controller): + + + @http.route(['/ecommerce_product_carousel_snippets/render'], type='json', auth='public', website=True , csrf=False, cache=300) + def render_product_carousel_slider(self, template, filter_id=False, objects_in_slide=4, limit=10, object_name=False): + context = request.context + res = request.env['ecommerce.product.carousel.data'].get_product_for_carousel_slider(filter_id=filter_id, object_name=object_name, limit=limit, context=context) + values = {} + values['objects'] = res['objects'] + values['title'] = res['name'] + + Rating = request.env['rating.rating'] + rating_templates = {} + for product_t in res['objects']: + product = request.env['product.template'].browse(product_t.id) + ratings = Rating.search([('message_id', 'in', product.website_message_ids.ids)]) + rating_message_values = dict([(record.message_id.id, record.rating) for record in ratings]) + rating_product = product.rating_get_stats([('website_published', '=', True)]) + rating_templates[product.id] = rating_product + values['rating_product'] = rating_templates + + + pricelist_context = dict(request.env.context) + if not pricelist_context.get('pricelist'): + pricelist = request.website.get_current_pricelist() + pricelist_context['pricelist'] = pricelist.id + else: + pricelist = request.env['product.pricelist'].browse(pricelist_context['pricelist']) + from_currency = request.env.user.company_id.currency_id + to_currency = pricelist.currency_id + compute_currency = lambda price: from_currency.compute(price, to_currency) + values['compute_currency'] = compute_currency + return request.env.ref(template).render(values) + + @http.route(['/ecommerce_product_carousel_snippets/render/product.template'], type='json', auth='public', website=True , cache=300) + def ecommerce_product_carousel_snippets(self, template, filter_id=16, objects_in_slide=4, limit=10, object_name="product.template"): + cr, uid, context, pool = request.cr, request.uid, request.context, request.registry + res = self.render_product_carousel_slider(template, filter_id=filter_id, objects_in_slide=objects_in_slide, limit=limit, + object_name=object_name) + return res \ No newline at end of file diff --git a/ext/3rd-party-addons/clarico_product_carousel/data/product_carousel.xml b/ext/3rd-party-addons/clarico_product_carousel/data/product_carousel.xml new file mode 100755 index 00000000..c148dbb2 --- /dev/null +++ b/ext/3rd-party-addons/clarico_product_carousel/data/product_carousel.xml @@ -0,0 +1,15 @@ + + + + + Manage Carousel + + + + ir.filter: portal/public + + ['|',('user_id', '=', user.id),('user_id', '=', False)] + + + + diff --git a/ext/3rd-party-addons/clarico_product_carousel/data/product_carousel_filter_demo_data.xml b/ext/3rd-party-addons/clarico_product_carousel/data/product_carousel_filter_demo_data.xml new file mode 100755 index 00000000..2b10326e --- /dev/null +++ b/ext/3rd-party-addons/clarico_product_carousel/data/product_carousel_filter_demo_data.xml @@ -0,0 +1,48 @@ + + + + + + Service Products + product.template + [[u'type', u'=', 'service']] + + {} + + + + Sellable Products + product.template + [[u'sale_ok', u'=', 1]] + + {} + + + + + Featured Products + product.template + [[u'sale_ok', u'=', 1]] + + {} + + + + service + + + + + + Sellable + + + + + + Featured Products + + + + + diff --git a/ext/3rd-party-addons/clarico_product_carousel/models/__init__.py b/ext/3rd-party-addons/clarico_product_carousel/models/__init__.py new file mode 100755 index 00000000..3713281f --- /dev/null +++ b/ext/3rd-party-addons/clarico_product_carousel/models/__init__.py @@ -0,0 +1,3 @@ +from . import ecommerce_product_carousel_data +from . import website_filter_ept +from . import filter_ept \ No newline at end of file diff --git a/ext/3rd-party-addons/clarico_product_carousel/models/ecommerce_product_carousel_data.py b/ext/3rd-party-addons/clarico_product_carousel/models/ecommerce_product_carousel_data.py new file mode 100755 index 00000000..7a687566 --- /dev/null +++ b/ext/3rd-party-addons/clarico_product_carousel/models/ecommerce_product_carousel_data.py @@ -0,0 +1,34 @@ +from odoo import SUPERUSER_ID +from odoo.osv import osv +from odoo.http import request +from odoo.tools.safe_eval import safe_eval +from odoo import api, fields, models, _,tools + +class ecommerce_product_carousel_data(osv.osv): + _name = 'ecommerce.product.carousel.data' + _carousel_data = True + + + def get_product_carousel_slider_filter_data(self,filter_id,object_name,context=None): + res={} + if context is None: + context={} + res={} + + if filter_id: + res = {'domain':[],'model':self._name,'order':False} + filter_data = request.env['website.filter.ept'].browse(filter_id) + localdict = {'uid':request.uid} + res['domain'] = safe_eval(filter_data.filter_id.domain,localdict) + res['model'] = filter_data.filter_id.model_id + res['name']=filter_data.name + else: + res = {'domain':[],'model':'product.template','order':False} + return res + + def get_product_for_carousel_slider(self,filter_id,object_name,limit,context=None): + filter_data = self.get_product_carousel_slider_filter_data(filter_id,object_name, context) + if filter_data: + object_ids = request.env[filter_data['model']].search(filter_data['domain'],limit=limit, order=filter_data['order']) + return {'objects':object_ids,'name':'name' in filter_data and filter_data['name'] or _("All")} + diff --git a/ext/3rd-party-addons/clarico_product_carousel/models/ecommerce_product_carousel_data.py.save b/ext/3rd-party-addons/clarico_product_carousel/models/ecommerce_product_carousel_data.py.save new file mode 100755 index 00000000..03f0220b --- /dev/null +++ b/ext/3rd-party-addons/clarico_product_carousel/models/ecommerce_product_carousel_data.py.save @@ -0,0 +1,31 @@ +from odoo import SUPERUSER_ID from odoo.osv import osv from odoo.http import request from odoo.tools.safe_eval import +safe_eval from odoo import api, fields, models, _,tools + +class ecommerce_product_carousel_data(osv.osv): + _name = 'ecommerce.product.carousel.data' + _carousel_data = True + + + def get_product_carousel_slider_filter_data(self,filter_id,object_name,context=None): + res={} + if context is None: + context={} + res={} + + if filter_id: + res = {'domain':[],'model':self._name,'order':False} + filter_data = request.env['website.filter.ept'].browse(filter_id) + localdict = {'uid':request.uid} + res['domain'] = safe_eval(filter_data.filter_id.domain,localdict) + res['model'] = filter_data.filter_id.model_id + res['name']=filter_data.name + else: + res = {'domain':[],'model':'product.template','order':False} + return res + + def get_product_for_carousel_slider(self,filter_id,object_name,limit,context=None): + filter_data = self.get_product_carousel_slider_filter_data(filter_id,object_name, context) + if filter_data: + object_ids = request.env[filter_data['model']].search(filter_data['domain'],limit=limit, order=filter_data['order']) + return {'objects':object_ids,'name':'name' in filter_data and filter_data['name'] or _("All")} + diff --git a/ext/3rd-party-addons/clarico_product_carousel/models/filter_ept.py b/ext/3rd-party-addons/clarico_product_carousel/models/filter_ept.py new file mode 100755 index 00000000..3b2f16bd --- /dev/null +++ b/ext/3rd-party-addons/clarico_product_carousel/models/filter_ept.py @@ -0,0 +1,8 @@ +from openerp import models, fields, api + +class filter_ept(models.Model): + _name="filter.ept" + + fid=fields.Integer("FID") + fname=fields.Char("Filter name") + filter_ept_id=fields.Many2one("website.filter.ept",required=True,ondelete='cascade') \ No newline at end of file diff --git a/ext/3rd-party-addons/clarico_product_carousel/models/website_filter_ept.py b/ext/3rd-party-addons/clarico_product_carousel/models/website_filter_ept.py new file mode 100755 index 00000000..49cbfaab --- /dev/null +++ b/ext/3rd-party-addons/clarico_product_carousel/models/website_filter_ept.py @@ -0,0 +1,10 @@ +from openerp import models, fields, api + +class website_filter_ept(models.Model): + _name="website.filter.ept" + _rec_name="name" + + name=fields.Char("Filter Name") + filter_id=fields.Many2one("ir.filters","Select Filter") + website_published=fields.Boolean("Website Published") + diff --git a/ext/3rd-party-addons/clarico_product_carousel/security/ir.model.access.csv b/ext/3rd-party-addons/clarico_product_carousel/security/ir.model.access.csv new file mode 100755 index 00000000..9bc729dc --- /dev/null +++ b/ext/3rd-party-addons/clarico_product_carousel/security/ir.model.access.csv @@ -0,0 +1,7 @@ +id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink +access_s_ecommerce_product_carousel_data,ecommerce.product.carousel.data,model_ecommerce_product_carousel_data,sales_team.group_sale_manager,1,1,1,0 +access_s_website_filter_ept,website.filter.ept,model_website_filter_ept,sales_team.group_sale_manager,1,1,1,0 +access_s_filter_ept,filter.ept,model_filter_ept,sales_team.group_sale_manager,1,1,1,0 +access_ecommerce_product_carousel_data,ecommerce.product.carousel.data,model_ecommerce_product_carousel_data,,1,1,1,0 +access_website_filter_ept,website.filter.ept,model_website_filter_ept,,1,1,1,0 +access_filter_ept,filter.ept,model_filter_ept,,1,1,1,0 \ No newline at end of file diff --git a/ext/3rd-party-addons/clarico_product_carousel/static/description/icon.png b/ext/3rd-party-addons/clarico_product_carousel/static/description/icon.png new file mode 100755 index 00000000..09fd34ab Binary files /dev/null and b/ext/3rd-party-addons/clarico_product_carousel/static/description/icon.png differ diff --git a/ext/3rd-party-addons/clarico_product_carousel/static/src/img/slider_controls_left.png b/ext/3rd-party-addons/clarico_product_carousel/static/src/img/slider_controls_left.png new file mode 100755 index 00000000..c022a2f8 Binary files /dev/null and b/ext/3rd-party-addons/clarico_product_carousel/static/src/img/slider_controls_left.png differ diff --git a/ext/3rd-party-addons/clarico_product_carousel/static/src/img/slider_controls_right.png b/ext/3rd-party-addons/clarico_product_carousel/static/src/img/slider_controls_right.png new file mode 100755 index 00000000..57103947 Binary files /dev/null and b/ext/3rd-party-addons/clarico_product_carousel/static/src/img/slider_controls_right.png differ diff --git a/ext/3rd-party-addons/clarico_product_carousel/static/src/img/style_6.jpeg b/ext/3rd-party-addons/clarico_product_carousel/static/src/img/style_6.jpeg new file mode 100755 index 00000000..0af70039 Binary files /dev/null and b/ext/3rd-party-addons/clarico_product_carousel/static/src/img/style_6.jpeg differ diff --git a/ext/3rd-party-addons/clarico_product_carousel/static/src/js/ecommerce_product_carousel_snippet_editor.js b/ext/3rd-party-addons/clarico_product_carousel/static/src/js/ecommerce_product_carousel_snippet_editor.js new file mode 100755 index 00000000..eb1352b1 --- /dev/null +++ b/ext/3rd-party-addons/clarico_product_carousel/static/src/js/ecommerce_product_carousel_snippet_editor.js @@ -0,0 +1,221 @@ +odoo.define('clarico_product_carousel.snippets.editor', function (require) { +'use strict'; +var ajax = require("web.ajax"); +var core = require("web.core"); +var rpc = require('web.rpc'); +var Dialog = require("web.Dialog"); +var editor = require("web_editor.editor"); +var animation = require('website.content.snippets.animation'); +var options = require('web_editor.snippets.options'); +var snippet_editor = require('web_editor.snippet.editor'); +var website = require('website.website'); + +var _t = core._t; + +snippet_editor.Class.include({ + _get_snippet_url: function () { + return '/website/snippets'; + } +}); + +options.registry.js_get_objects = options.Class.extend({ + drop_and_build_snippet: function(){ + var self = this; + + if (!self.$target.data('snippet-view')) { + this.$target.data("snippet-view", new website.snippet.animationRegistry.js_get_objects(this.$target)); + } + }, + clean_for_save:function(){ + this.$target.empty(); + }, + onBuilt: function () { + this.id = 'pcarousel' + new Date().getTime(); + this.$target.attr('id', this.id); + } +}); + +options.registry.js_get_selectFilter = options.Class.extend({ + start: function() { + this._super(); + var self = this; + rpc.query({ + model: 'website.filter.ept', + method: 'search_read', + args: [[['website_published','=',true],['filter_id.model_id','=','product.template']],['name','filter_id','id']], + }).then(function(filters){ + self.createwebsitefiltersList(filters) + }) + .fail(function (e) { + var Error_heading = _t("Problem Loading Slider"), + Error_msg = $("

"+ Error_heading +"

"+ e.data.message + "
" ); + self.$target.append(Error_msg) + return; + }); + }, + + createwebsitefiltersList: function(filters) + { + var self = this; + var ul = null; + setTimeout(function(){ + ul = self.$overlay.find(".snippet-option-js_get_selectFilter > ul"); + $(filters).each(function(){ + var filter = $(this); + + var li = $('
  • ' + filter[0].name+ '
  • '); + ul.append(li); + }); + if (self.$target.attr("data-filter_by_filter_id")) { + var id = self.$target.attr("data-filter_by_filter_id"); + ul.find("li[data-filter_by_filter_id=" + id + "]").addClass("active"); + } + },100) + }, + filter_by_filter_id:function(previewMode, value){ + var self = this + var value = parseInt(value); + this.$target.attr("data-filter_by_filter_id",value) + .data("filter_by_filter_id",value) + .data('snippet-view').redrow(true); + }, + _setActive: function () { + this.$el.find('li[data-filter_by_filter_id]').removeClass('active') + .filter('li[data-filter_by_filter_id=' + this.$target.attr('data-filter_by_filter_id') + ']').addClass('active'); + } + }); + +options.registry.js_get_filter_products_limit = options.Class.extend({ + start:function(){ + var self = this; + setTimeout(function(){ + var ul = self.$overlay.find(".snippet-option-js_get_filter_products_limit > ul"); + if (self.$target.attr("data-objects_limit")) { + var limit = self.$target.attr("data-objects_limit"); + ul.find('li[data-objects_limit="' + limit + '"]').addClass("active"); + } else { + ul.find('li[data-objects_limit="10"]').addClass("active"); + } + },100) + }, + objects_limit:function(previewMode, value){ + var self = this + var value = parseInt(value); + this.$target.attr("data-objects_limit",value) + .data("objects_limit",value) + .data('snippet-view').redrow(true); + }, + _setActive: function () { + this.$el.find('li[data-objects_limit]').removeClass('active') + .filter('li[data-objects_limit=' + this.$target.attr('data-objects_limit') + ']').addClass('active'); + }, +}); + +options.registry.js_get_type = options.Class.extend({ + start:function(){ + var self = this; + setTimeout(function(){ + var ul = self.$overlay.find(".snippet-option-js_get_type > ul"); + if (self.$target.attr("data-c_type")) { + var limit = self.$target.attr("data-c_type"); + ul.find('li[data-c_type="' + limit + '"]').addClass("active"); + } else { + ul.find('li[data-c_type="1"]').addClass("active"); + } + },100) + }, + c_type:function(previewMode, value){ + var self = this + var value = parseInt(value); + this.$target.attr("data-c_type",value) + .data("c_type",value) + .data('snippet-view').redrow(true); + }, + _setActive: function () { + this.$el.find('li[data-c_type]').removeClass('active') + .filter('li[data-c_type=' + this.$target.attr('data-c_type') + ']').addClass('active'); + } +}); +options.registry.js_get_product_in_slidesToShow = options.Class.extend({ + start:function(){ + var self = this; + setTimeout(function(){ + var ul = self.$overlay.find(".snippet-option-js_get_product_in_slidesToShow > ul"); + if (self.$target.attr("data-objects_in_slide")) { + var prd_limit = self.$target.attr("data-objects_in_slide"); + ul.find('li[data-objects_in_slide="' + prd_limit + '"]').addClass("active"); + } else { + ul.find('li[data-objects_in_slide="4"]').addClass("active"); + } + },100); + }, + objects_in_slide:function(previewMode, value){ + var self = this + var value = parseInt(value); + this.$target.attr("data-objects_in_slide",value) + .data("objects_in_slide",value) + .data('snippet-view').redrow(true); + }, + _setActive: function () { + this.$el.find('li[data-objects_in_slide]').removeClass('active') + .filter('li[data-objects_in_slide=' + this.$target.attr('data-objects_in_slide') + ']').addClass('active'); + } +}); + +options.registry.js_get_label = options.Class.extend({ + start:function(){ + var self = this; + setTimeout(function(){ + var ul = self.$overlay.find(".snippet-option-js_get_label > ul"); + if (self.$target.attr("data-sale_label")) { + var limit = self.$target.attr("data-sale_label"); + ul.find('li[data-sale_label="' + limit + '"]').addClass("active"); + } else { + ul.find('li[data-sale_label="0"]').addClass("active"); + } + },100) + }, + sale_label:function(previewMode, value){ + var self = this + var value = parseInt(value); + this.$target.attr("data-sale_label",value) + .data("sale_label",value) + .data('snippet-view').redrow(true); + }, + _setActive: function () { + this.$el.find('li[data-sale_label]').removeClass('active') + .filter('li[data-sale_label=' + this.$target.attr('data-sale_label') + ']').addClass('active'); + } + +}); + +options.registry.js_get_rating = options.Class.extend({ + start:function(){ + var self = this; + setTimeout(function(){ + var ul = self.$overlay.find(".snippet-option-js_get_rating > ul"); + if (self.$target.attr("data-get_rating")) { + var limit = self.$target.attr("data-get_rating"); + ul.find('li[data-get_rating="' + limit + '"]').addClass("active"); + } + else { + ul.find('li[data-get_rating="0"]').addClass("active"); + } + + },100) + }, + get_rating:function(previewMode, value){ + var self = this + var value = parseInt(value); + this.$target.attr("data-get_rating",value) + .data("get_rating",value) + .data('snippet-view').redrow(true); + }, + _setActive: function () { + this.$el.find('li[data-get_rating]').removeClass('active') + .filter('li[data-get_rating=' + this.$target.attr('data-get_rating') + ']').addClass('active'); + } +}); + + +}); diff --git a/ext/3rd-party-addons/clarico_product_carousel/static/src/js/ecommerce_product_carousel_snippet_frontend.js b/ext/3rd-party-addons/clarico_product_carousel/static/src/js/ecommerce_product_carousel_snippet_frontend.js new file mode 100755 index 00000000..ff749b2a --- /dev/null +++ b/ext/3rd-party-addons/clarico_product_carousel/static/src/js/ecommerce_product_carousel_snippet_frontend.js @@ -0,0 +1,333 @@ +odoo.define('clarico_product_carousel.snippets.animation', function (require) { +'use strict'; +// First Execute +var ajax = require('web.ajax'); +var core = require('web.core'); +var base = require('web_editor.base'); +var utils = require('web.utils'); +var animation = require('website.content.snippets.animation'); +var website_sale_utils = require('website_sale.utils'); +var no_of_product; +var qweb = core.qweb; +/*-------------------------------------------------------------------------*/ +animation.registry.js_get_objects = animation.Class.extend({ + selector : ".js_get_objects", + + start: function(){ + this.redrow(); + }, + stop: function(){ + this.clean(); + }, + + redrow: function(debug){ + this.clean(debug); + this.build(debug); + }, + + clean:function(debug){ + this.$target.empty(); + }, + + + apply_bxslider:function(debug,objects_in_slide,loop){ + var self = this; + var bxsliderCount = 0; + + $(".product_carousel_slider").each(function () { + + create_slider(objects_in_slide,loop) + bxsliderCount++; + }); + }, + + build: function(debug) + { + //$('.cus_theme_loader_layout').removeClass('hidden'); + var self = this, + limit = self.$target.data("objects_limit"), + filter_id = self.$target.data("filter_by_filter_id"), + objects_in_slide = self.$target.data("objects_in_slide"), + c_type = self.$target.data("c_type"), + sale_label = self.$target.data("sale_label"), + get_rating = self.$target.data("get_rating"), + object_name = self.$target.data("object_name"), + custom_controller = self.$target.data("custom_controller"), + template = self.$target.data("template"); + $("#wait").css("display", "block"); + self.$target.attr("contenteditable","False"); + if(!objects_in_slide)objects_in_slide = 4; + if(!c_type)c_type = 0; + if(!sale_label)sale_label = 0; + if(!get_rating)get_rating = 0; + if(!limit)limit = 10; + if(!filter_id)filter_id = false; + if(!template) template = 'clarico_product_carousel.product_carousel_snippet_heading'; + var rpc_end_point = '/ecommerce_product_carousel_snippets/render'; + if (custom_controller == '1'){ + rpc_end_point='/ecommerce_product_carousel_snippets/render/' + object_name; + }; + + var comparelist_product_ids = JSON.parse(utils.get_cookie('comparelist_product_ids') || '[]'); + function dispcompare() + { + comparelist_product_ids = JSON.parse(utils.get_cookie('comparelist_product_ids') || '[]'); + var count = comparelist_product_ids.length; + $('.o_product_circle').text(comparelist_product_ids.length) + $('.o_compare').attr('href', '/shop/compare/?products='+comparelist_product_ids.toString()); + $('.cus_theme_loader_layout').addClass('hidden'); + if(count > 0){ + $('.o_product_circle').text(comparelist_product_ids.length) + }else if(count == 0){ + $('.o_product_circle').text(""); + } + } + + function ratingEnable() + { + if($( "div" ).hasClass( "product_carousel_rating" )) + { var rating_script=document.createElement('script'); + rating_script.type='text/javascript'; + rating_script.src="/clarico_rating/static/src/js/rating_script.js"; + $("head").append(rating_script); + } + } + + function addcode() + { + // for rating + if(get_rating==0) + { + self.$target.find('.product_carousel_rating').css("display","none") + } + + else + { + if($('script[src="/clarico_rating/static/src/js/rating_script.js"]').length > 0) + { + $("script[src='/clarico_rating/static/src/js/rating_script.js']").remove() + } + ratingEnable() + self.$target.find('.product_carousel_rating').css("display","block") + } + + // for label + if(sale_label==0) + self.$target.find('.label-block').css("display","none") + else + self.$target.find('.label-block').css("display","block") + + + if($("body").find(".quick-view-a")) + { + var qview = self.$target.find(".quick-view-a") + qview.click(function() { + $('.cus_theme_loader_layout').removeClass('hidden'); + var pid = $(this).attr('data-id'); + ajax.jsonRpc('/productdata', 'call', {'product_id':pid}).then(function(data) + { + $(".mask_cover").append(data) + $(".mask").fadeIn(); + $('.cus_theme_loader_layout').addClass('hidden'); + $(".mask_cover").css("display","block"); + + var sale_script=document.createElement('script'); + sale_script.type='text/javascript'; + sale_script.src="/website_sale/static/src/js/website_sale.js"; + $("script[src='/website_sale/static/src/js/website_sale.js']").remove() + $("head").append(sale_script); + + if($(".product_quick_view_class").find(".o_add_wishlist_dyn")) + { + var wishlist_product_ids = "" + $.get('/shop/wishlist', {'count': 1}).then(function(res) { + wishlist_product_ids = JSON.parse(res); + }); + $('.oe_website_sale').on('change', 'input.js_variant_change, select.js_variant_change, ul[data-attribute_value_ids]', function(ev) { + var $ul = $(ev.target).closest('.js_add_cart_variants'); + var $parent = $ul.closest('.js_product'); + var $product_id = $parent.find('.product_id').first(); + var $el = $parent.find("[data-action='o_wishlist']"); + if (!_.contains(wishlist_product_ids, parseInt($product_id.val(), 10))) { + $el.prop("disabled", false).removeClass('disabled').removeAttr('disabled'); + } + else { + $el.prop("disabled", true).addClass('disabled').attr('disabled', 'disabled'); + } + }); + var id = self.$target.attr('id') + $(".product_quick_view_class .o_add_wishlist_dyn").click(function() { + var url =location.pathname; + var log_Status = $("#o_logout").length + if(log_Status == 0) + { + window.location.href = '/web/login?redirect='+url + } + else + { + var curr_obj = $(this) + var pid = parseInt(curr_obj.parent().find('.product_id').val()) + if (!_.contains(wishlist_product_ids, pid)) { + ajax.jsonRpc('/shop/wishlist/add', 'call', {'product_id': pid}).then(function () + { + website_sale_utils.animate_clone($('#my_wish'), curr_obj.closest('form'), 25, 40); + wishlist_product_ids.push(pid); + curr_obj.prop("disabled", true).addClass('disabled'); + $.get('/shop/wishlist', {'count': 1}).then(function(res) { + $('#my_wish').show(); + var wishlist_product_ids = JSON.parse(res); + $('.my_wish_quantity').text(wishlist_product_ids.length); + }); + }); + } + } + }); + } + if($("body").find(".o_add_compare")) + { + var compare_script=document.createElement('script'); + compare_script.type='text/javascript'; + compare_script.src="/website_sale_comparison/static/src/js/website_sale_comparison.js"; + $("script[src='/website_sale_comparison/static/src/js/website_sale_comparison.js']").remove() + $("head").append(compare_script); + + dispcompare() + + $(".oe_website_sale .o_add_compare,.oe_website_sale .o_add_compare_dyn").click(function (e){ + $.getScript('/website_sale_comparison/static/src/js/website_sale_comparison.js', function(data, textStatus,jqxhr ) { + $('.cus_theme_loader_layout').removeClass('hidden'); + var count = comparelist_product_ids.length; + if(count >= 4) + $(".compare_max_limit").css("visibility","visible"); + setTimeout(function(){ + $(".compare_max_limit").css("visibility","hidden"); + }, 2000); + dispcompare() + }); + }); + } + $(".close_btn").click(function() + { + //close_quickview() + $('.mask_cover').empty(data); + }); + $(document).on('keydown', function(e) + { + if(e.keyCode === 27) + { + if(data) + { + //close_quickview() + $('.mask_cover').empty(data); + } + } + }); + + }) + }) + } + + // wishlist + if($("body").find(".o_add_wishlist")) + { + var wish = self.$target.find(".o_add_wishlist") + wish.click(function() { + var url =location.pathname; + var log_Status = $("#o_logout").length + if(log_Status == 0) + { + window.location.href = '/web/login?redirect='+url + } + else + { + var curr_obj = $(this) + + var pid = parseInt($(this).attr('data-product-product-id'),10); + ajax.jsonRpc('/shop/wishlist/add', 'call', { + 'product_id': pid + }).then(function () { + website_sale_utils.animate_clone($('#my_wish'), curr_obj.closest('form'), 25, 40); + curr_obj.off("click"); + curr_obj.css("display","none") + $("body").find(".o_add_wishlist_inwish[data-product-product-id='" + pid + "']").css("display","block") + $("body").find("a.o_add_wishlist[data-product-product-id='" + pid + "']").css("display","none") + $.get('/shop/wishlist', {'count': 1}).then(function(res) { + $('#my_wish').show(); + var wishlist_product_ids = JSON.parse(res); + $('.my_wish_quantity').text(wishlist_product_ids.length); + }); + }); + } + }); + } + if($("body").find(".o_add_compare")) + { + + dispcompare() + + var compare = self.$target.find(".o_add_compare") + compare.click(function (e){ + $.getScript('/website_sale_comparison/static/src/js/website_sale_comparison.js', function(data, textStatus,jqxhr ) { + $('.cus_theme_loader_layout').removeClass('hidden'); + var count = comparelist_product_ids.length; + if(count >= 4) + $(".compare_max_limit").css("visibility","visible"); + setTimeout(function(){ + $(".compare_max_limit").css("visibility","hidden"); + }, 2000); + dispcompare() + }); + }); + } + + + } + ajax.jsonRpc(rpc_end_point, 'call', { + 'template': template, + 'filter_id': filter_id, + 'objects_in_slide' : objects_in_slide, + 'limit': limit, + 'object_name':object_name, + }).then(function(objects) { + $(objects).appendTo(self.$target); + if(c_type == 1) + { + // For apply bxslider + // self.apply_bxslider(objects,objects_in_slide); + + var count = $(objects).find("input[name='product_count']").val() + var loop = true + if(count < 4) + loop = false + // For apply bxslider + + self.apply_bxslider(objects,objects_in_slide,loop); + + + // For display block as option selection + addcode() + + } + // For Non - slider = Remove fun_slider_class & add non + if(c_type == 0) + { + // For remove bxSlide class and add non + self.$target.find("div[class='owl-carousel']").removeClass("owl-carousel").addClass('product_non_slider'); + + // For display block as option selection + addcode() + + } + }).then(function(){ + self.loading(debug); + }).fail(function(e) { + return; + }); + }, + + loading: function(debug){ + //function to hook things up after build + } +}); + +}); diff --git a/ext/3rd-party-addons/clarico_product_carousel/static/src/js/slider_custom.js b/ext/3rd-party-addons/clarico_product_carousel/static/src/js/slider_custom.js new file mode 100755 index 00000000..91b5238e --- /dev/null +++ b/ext/3rd-party-addons/clarico_product_carousel/static/src/js/slider_custom.js @@ -0,0 +1,33 @@ +function create_slider(slider_slide,loop){ + + var slide_int_val=parseInt(slider_slide); + $('.product_carousel_slider > .owl-carousel').owlCarousel({ + loop:loop, + margin:10, + nav:true, + autoplay:true, + autoplayTimeout:3000, + responsiveClass:true, + autoplayHoverPause:true, + + responsive:{ + 0:{ + items:1 + }, + 600:{ + + items:2 + }, + 800:{ + items:3 + }, + 1000:{ + items:slide_int_val + } + } + }); +} + + + + diff --git a/ext/3rd-party-addons/clarico_product_carousel/static/src/less/product_carousel_slider.less b/ext/3rd-party-addons/clarico_product_carousel/static/src/less/product_carousel_slider.less new file mode 100755 index 00000000..b114b3c1 --- /dev/null +++ b/ext/3rd-party-addons/clarico_product_carousel/static/src/less/product_carousel_slider.less @@ -0,0 +1,279 @@ +.s_product_carousel +{ + .pl(10px); + .pr(10px); + + .sale-div + { + //display:none; + } +} +.product_carousel_slider .div_c_product_discount{ + width: auto; + display: inline-block; +} +.product_carousel_slider +{ + display:inline-block; + width:100%; +} +.headline{ + .mb(6px); + .common-div; + + + + .snippet_heading { + + .size(15px); + .mb(8px); + .mt(0px); + text-align: left; + + } +} +.section_c_cs_product_desc +{ + padding:5%; +} +.para_c_cs_product_name +{ + font-weight: normal; + white-space: nowrap; + max-width:90%; + overflow: hidden; + text-overflow: ellipsis; + .capitalize(); + .size(14px); + text-align: left; + width:100%; + .muli-regular(); + + a + { + color: #717171; + + + } +} +.product_carousel_rating +{ + text-align:left; +} +.product_non_slider .pc_individual +{ + width:23%; + display:inline-block; + margin: 0 0.5% 1% 0.5%; + +} +.pc_individual +{ + position:relative; + border:1px solid #f2eeee; + + &:hover .product-carousel-icons{ + width:100%; + display:block; + opacity:1; + } +} +.div_main_c_cs_product_price +{ + text-align:left; + + .span_c_product_price + { + .muli-regular(); + color:#000; + font-weight: normal; + + span + { + .muli-regular(); + color:#000; + font-weight: normal; + } + } + .strick-price + { + color:#b8b8b8; + .muli-regular(); + .size(13px); + font-weight:normal; + } +} +.div_c_sub_pc_image{ + position:relative; + overflow:hidden; + + & .ribbon-wrapper{ + left: 10px; + top: 10px; + } +} +#pc_wishlist,#pc_similar_product,#pc_compare,#pc_quick_view{ + display : inline-block; +} +.hover-cnt{ + + & i,span{ + color: black; + font-size: 12px; + padding: 13px; + } +} +/*#pc_wishlist,#pc_similar_product,#pc_compare,#pc_quick_view +{ + width: 25%; + display: block; + float: left; + border-left: 1px solid #f2eeee; + height: 45px; + padding: 9px 12px; + text-align: center; + + i + { + color:#777; + vertical-align:middle; + } +}*/ +/*---------------------New Style of Carousel---------------------------*/ +/*.div_main_class_carousel +{ +width:31%; +margin:1%; +.left(); +.mt(25px); +} +.div_carousel_image +{ +width:37%; +.left(); +img +{ +width:auto; +max-width:100%; +.center; +} +} +.section_content_class +{ +width:58%; +.right(); +.mt(6px); +} +.para_c_cs_product_name_static +{ + color: #434242; + + a + { + font-weight: normal; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + display: block; + max-width: 200px; + .capitalize(); + .muli-regular(); + .size(12px); + text-align:left; + } +} +.align_left +{ +text-align:left; +} +.span_c_product_price span +{ +.muli-semibold(); +color: #757575; +}*/ +.new_section +{ + +} +.div_c_sub_pc_image .product-carousel-icons +{ + position: absolute; + bottom: 0; + width: 0; + left: 0; + display: none; + border-bottom: 1px solid #f2eeee; + opacity: 0; + z-index: 10; + + .hover-cnt:first-child + { + border-left:none !important; + } + + #pc_quick_view,#pc_wishlist,#pc_compare + { + display:block; + text-align: center; + vertical-align: bottom; + width: 33.33%; + float:left; + border-left:1px solid #f2eeee; + + span,i + { + color:#000; + vertical-align: bottom; + .size(14px); + } + } + +} + +.p-bottom-hide{ + -webkit-animation:animatebottom 1s; + animation:animatebottom 1s; + transition:1s ease 0s; + bottom:0; + background: #fff; +} +@-webkit-keyframes animatebottom{ + from{bottom:-10px;opacity:0;} + to{bottom:0px;opacity:1;} +} +@keyframes animatebottom{ + from{bottom:-10px;opacity:0;} + to{bottom:0px;opacity:1;} +} + + + +@media(max-width:1000px) +{ + .product_non_slider .pc_individual { + width: 32%; + } +} + + +@media (max-width:800px){ + + + .div_c_sub_pc_image .product-carousel-icons { + width: 100%; + display: block; + opacity: 1; + } + + .product_non_slider .pc_individual { + width: 48%; + } +} +@media(max-width:500px) +{ + .product_non_slider .pc_individual + { + width: 100%; + margin: 3% 0; + } +} diff --git a/ext/3rd-party-addons/clarico_product_carousel/templates/assets.xml b/ext/3rd-party-addons/clarico_product_carousel/templates/assets.xml new file mode 100755 index 00000000..85a3ca7e --- /dev/null +++ b/ext/3rd-party-addons/clarico_product_carousel/templates/assets.xml @@ -0,0 +1,26 @@ + + + + + diff --git a/ext/3rd-party-addons/clarico_product_carousel/templates/ecommerce_product_carousel_snippet.xml b/ext/3rd-party-addons/clarico_product_carousel/templates/ecommerce_product_carousel_snippet.xml new file mode 100755 index 00000000..443b6b9b --- /dev/null +++ b/ext/3rd-party-addons/clarico_product_carousel/templates/ecommerce_product_carousel_snippet.xml @@ -0,0 +1,88 @@ + + + + + + + + + + + + + + + diff --git a/ext/3rd-party-addons/clarico_product_carousel/templates/snippet_options.xml b/ext/3rd-party-addons/clarico_product_carousel/templates/snippet_options.xml new file mode 100755 index 00000000..c4b14194 --- /dev/null +++ b/ext/3rd-party-addons/clarico_product_carousel/templates/snippet_options.xml @@ -0,0 +1,228 @@ + + + + + + \ No newline at end of file diff --git a/ext/3rd-party-addons/clarico_product_carousel/views/website_filter_ept_view.xml b/ext/3rd-party-addons/clarico_product_carousel/views/website_filter_ept_view.xml new file mode 100755 index 00000000..a1efa7b4 --- /dev/null +++ b/ext/3rd-party-addons/clarico_product_carousel/views/website_filter_ept_view.xml @@ -0,0 +1,55 @@ + + + + Website Filter Form + website.filter.ept + +
    + +
    + + + + + + + +
    +
    +
    +
    +
    + + Website Filter Tree + website.filter.ept + + + + + + + + + + + + + Website Carousel Filter + ir.actions.act_window + website.filter.ept + tree,form + + +

    + Click to define a new Website Carousel filter. +

    + website Carousel filter are used to browse your products through the + touchscreen interface. +

    +
    +
    + + + + +
    diff --git a/ext/3rd-party-addons/clarico_product_carousel_wishlist/__init__.py b/ext/3rd-party-addons/clarico_product_carousel_wishlist/__init__.py new file mode 100755 index 00000000..e69de29b diff --git a/ext/3rd-party-addons/clarico_product_carousel_wishlist/__manifest__.py b/ext/3rd-party-addons/clarico_product_carousel_wishlist/__manifest__.py new file mode 100755 index 00000000..0c0bb355 --- /dev/null +++ b/ext/3rd-party-addons/clarico_product_carousel_wishlist/__manifest__.py @@ -0,0 +1,25 @@ +{ + # Theme information + 'name' : 'Clarico Product Carousel Wishlist', + 'category' : 'Website', + 'version' : '1.0', + 'summary': 'Add Product to Wishlist from Carousel', + 'description': """""", + + # Dependencies + 'depends': [ + 'clarico_product_multi_carousel', 'clarico_wishlist' + ], + + # Views + 'data': [ + 'templates/template.xml', + ], + + # Author + 'author': 'Emipro Technologies Pvt. Ltd.', + 'website': 'http://www.emiprotechnologies.com', + + # Technical + 'installable': True, +} diff --git a/ext/3rd-party-addons/clarico_product_carousel_wishlist/static/description/icon.png b/ext/3rd-party-addons/clarico_product_carousel_wishlist/static/description/icon.png new file mode 100755 index 00000000..09fd34ab Binary files /dev/null and b/ext/3rd-party-addons/clarico_product_carousel_wishlist/static/description/icon.png differ diff --git a/ext/3rd-party-addons/clarico_product_carousel_wishlist/templates/template.xml b/ext/3rd-party-addons/clarico_product_carousel_wishlist/templates/template.xml new file mode 100755 index 00000000..42c7e2e0 --- /dev/null +++ b/ext/3rd-party-addons/clarico_product_carousel_wishlist/templates/template.xml @@ -0,0 +1,25 @@ + + + + + + + + + diff --git a/ext/3rd-party-addons/clarico_product_multi_carousel/__init__.py b/ext/3rd-party-addons/clarico_product_multi_carousel/__init__.py new file mode 100755 index 00000000..b924a1c7 --- /dev/null +++ b/ext/3rd-party-addons/clarico_product_multi_carousel/__init__.py @@ -0,0 +1,2 @@ +from . import controllers +from . import models \ No newline at end of file diff --git a/ext/3rd-party-addons/clarico_product_multi_carousel/__manifest__.py b/ext/3rd-party-addons/clarico_product_multi_carousel/__manifest__.py new file mode 100755 index 00000000..5b535146 --- /dev/null +++ b/ext/3rd-party-addons/clarico_product_multi_carousel/__manifest__.py @@ -0,0 +1,29 @@ +{ + # Theme information + 'name' : 'Clarico Product Multi Carousel', + 'category' : 'Website', + 'version' : '1.0', + 'summary': 'Website Product Carousel', + 'description': """""", + + # Dependencies + 'depends': [ + 'clarico_product_carousel', + ], + + # Views + 'data': [ + 'security/ir.model.access.csv', + 'templates/assets.xml', + 'templates/product_static_carousel.xml', + 'templates/product_static_carousel_option.xml', + 'views/website_multi_filter_ept_view.xml', + ], + + # Author + 'author': 'Emipro Technologies Pvt. Ltd.', + 'website': 'http://www.emiprotechnologies.com', + + # Technical + 'installable': True, +} diff --git a/ext/3rd-party-addons/clarico_product_multi_carousel/controllers/__init__.py b/ext/3rd-party-addons/clarico_product_multi_carousel/controllers/__init__.py new file mode 100755 index 00000000..deec4a8b --- /dev/null +++ b/ext/3rd-party-addons/clarico_product_multi_carousel/controllers/__init__.py @@ -0,0 +1 @@ +from . import main \ No newline at end of file diff --git a/ext/3rd-party-addons/clarico_product_multi_carousel/controllers/main.py b/ext/3rd-party-addons/clarico_product_multi_carousel/controllers/main.py new file mode 100755 index 00000000..6b70f75d --- /dev/null +++ b/ext/3rd-party-addons/clarico_product_multi_carousel/controllers/main.py @@ -0,0 +1,71 @@ +from odoo import http +from odoo.http import request +from odoo import SUPERUSER_ID +from odoo.tools.safe_eval import safe_eval + +class ClaricoStaticCarousel(http.Controller): + @http.route(['/ecommerce_static_product_carousel_snippets/render'], type='json', auth='public', website=True , cache=300) + def ecommerce_product_static_carousel_snippets(self, template,filter_id=False): + values = {} + if filter_id : + res = request.env['website.multi.filter.ept'].sudo().search([('id', '=',filter_id)]) + if res: + values['title'] = res + else : + res = request.env['website.multi.filter.ept'].sudo().search([]) + if res: + values['title'] = res[0] + + return request.env.ref(template).render(values) + + + @http.route(['/static_product_data'], type='json', auth='public', website=True , cache=300) + def ecommerce_product_data(self, template,temp_filter_id=False): + values = {} + if temp_filter_id: + cr, uid, context = request.cr, request.uid, request.context + Rating = request.env['rating.rating'] + filter_data=request.env['website.filter.ept'].search([('id', '=',temp_filter_id)]) + data={} + localdict = {'uid':uid} + data['domain'] = safe_eval(filter_data.filter_id.domain,localdict) + + data_pro = request.env['product.template'].search(data['domain'],limit=4) + values = {} + + + rating_templates = {} + for product_t in data_pro: + product = request.env['product.template'].browse(product_t.id) + ratings = Rating.search([('message_id', 'in', product.website_message_ids.ids)]) + rating_message_values = dict([(record.message_id.id, record.rating) for record in ratings]) + rating_product = product.rating_get_stats([('website_published', '=', True)]) + rating_templates[product.id] = rating_product + values['rating_product'] = rating_templates + + pricelist_context = dict(request.env.context) + if not pricelist_context.get('pricelist'): + pricelist = request.website.get_current_pricelist() + pricelist_context['pricelist'] = pricelist.id + else: + pricelist = request.env['product.pricelist'].browse(pricelist_context['pricelist']) + from_currency = request.env.user.company_id.currency_id + to_currency = pricelist.currency_id + compute_currency = lambda price: from_currency.compute(price, to_currency) + values['compute_currency'] = compute_currency + values['objects'] = data_pro + return request.env.ref("clarico_product_multi_carousel.clarico_product_multi_carousel_static_carousel_snippet_content").render(values) + + + + + + + + + + + + + + diff --git a/ext/3rd-party-addons/clarico_product_multi_carousel/models/__init__.py b/ext/3rd-party-addons/clarico_product_multi_carousel/models/__init__.py new file mode 100755 index 00000000..64e81ffb --- /dev/null +++ b/ext/3rd-party-addons/clarico_product_multi_carousel/models/__init__.py @@ -0,0 +1 @@ +from . import website_multi_filter_ept \ No newline at end of file diff --git a/ext/3rd-party-addons/clarico_product_multi_carousel/models/website_multi_filter_ept.py b/ext/3rd-party-addons/clarico_product_multi_carousel/models/website_multi_filter_ept.py new file mode 100755 index 00000000..66247aa6 --- /dev/null +++ b/ext/3rd-party-addons/clarico_product_multi_carousel/models/website_multi_filter_ept.py @@ -0,0 +1,8 @@ +from openerp import models, fields, api + +class website_multi_filter_ept(models.Model): + _name="website.multi.filter.ept" + + name=fields.Char("Filter Name") + website_published=fields.Boolean("Website Published") + filter_ids=fields.One2many("filter.ept","fname","Select Filters") diff --git a/ext/3rd-party-addons/clarico_product_multi_carousel/security/ir.model.access.csv b/ext/3rd-party-addons/clarico_product_multi_carousel/security/ir.model.access.csv new file mode 100755 index 00000000..837b0b24 --- /dev/null +++ b/ext/3rd-party-addons/clarico_product_multi_carousel/security/ir.model.access.csv @@ -0,0 +1,3 @@ +id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink +access_s_website_multi_filter_ept,website.multi.filter.ept,model_website_multi_filter_ept,sales_team.group_sale_manager,1,1,1,0 +access_website_multi_filter_ept,website.multi.filter.ept,model_website_multi_filter_ept,,1,1,1,0 diff --git a/ext/3rd-party-addons/clarico_product_multi_carousel/static/description/icon.png b/ext/3rd-party-addons/clarico_product_multi_carousel/static/description/icon.png new file mode 100755 index 00000000..09fd34ab Binary files /dev/null and b/ext/3rd-party-addons/clarico_product_multi_carousel/static/description/icon.png differ diff --git a/ext/3rd-party-addons/clarico_product_multi_carousel/static/src/img/Style_4.jpg b/ext/3rd-party-addons/clarico_product_multi_carousel/static/src/img/Style_4.jpg new file mode 100755 index 00000000..9109ba4d Binary files /dev/null and b/ext/3rd-party-addons/clarico_product_multi_carousel/static/src/img/Style_4.jpg differ diff --git a/ext/3rd-party-addons/clarico_product_multi_carousel/static/src/img/Style_6.jpg b/ext/3rd-party-addons/clarico_product_multi_carousel/static/src/img/Style_6.jpg new file mode 100755 index 00000000..0af70039 Binary files /dev/null and b/ext/3rd-party-addons/clarico_product_multi_carousel/static/src/img/Style_6.jpg differ diff --git a/ext/3rd-party-addons/clarico_product_multi_carousel/static/src/img/slider_controls_left.png b/ext/3rd-party-addons/clarico_product_multi_carousel/static/src/img/slider_controls_left.png new file mode 100755 index 00000000..c022a2f8 Binary files /dev/null and b/ext/3rd-party-addons/clarico_product_multi_carousel/static/src/img/slider_controls_left.png differ diff --git a/ext/3rd-party-addons/clarico_product_multi_carousel/static/src/img/slider_controls_right.png b/ext/3rd-party-addons/clarico_product_multi_carousel/static/src/img/slider_controls_right.png new file mode 100755 index 00000000..57103947 Binary files /dev/null and b/ext/3rd-party-addons/clarico_product_multi_carousel/static/src/img/slider_controls_right.png differ diff --git a/ext/3rd-party-addons/clarico_product_multi_carousel/static/src/js/static_product_carousel_snippent_editor.js b/ext/3rd-party-addons/clarico_product_multi_carousel/static/src/js/static_product_carousel_snippent_editor.js new file mode 100755 index 00000000..ed1bcb7f --- /dev/null +++ b/ext/3rd-party-addons/clarico_product_multi_carousel/static/src/js/static_product_carousel_snippent_editor.js @@ -0,0 +1,145 @@ +odoo.define('product_static_carousel.snippets.editor', function (require) { +'use strict'; +var ajax = require("web.ajax"); +var core = require("web.core"); +var Dialog = require("web.Dialog"); +var rpc = require('web.rpc'); +var editor = require("web_editor.editor"); +var animation = require('website.content.snippets.animation'); +var options = require('web_editor.snippets.options'); +var snippet_editor = require('web_editor.snippet.editor'); +var website = require('website.website'); +var _t = core._t; + +snippet_editor.Class.include({ + _get_snippet_url: function () { + return '/website/snippets'; + } +}); + +options.registry.js_get_static_objects = options.Class.extend({ + drop_and_build_snippet: function(){ + var self = this; + if (!self.$target.data('snippet-view')) { + this.$target.data("snippet-view", new website.snippet.animationRegistry.js_get_static_objects(this.$target)); + + } + }, + clean_for_save:function(){ + this.$target.empty(); + }, + onBuilt: function () { + this.id = 'mcarousel' + new Date().getTime(); + this.$target.attr('id', this.id); + } + }); + +options.registry.js_get_static_selectFilter = options.Class.extend({ + start: function() { + this._super(); + var self = this; + rpc.query({ + model: 'website.multi.filter.ept', + method: 'search_read', + args: [[['website_published','=',true]],['name','filter_ids','id']], + }).then(function(filters){ + self.createwebsitefiltersList(filters) + }) + .fail(function (e) { + var Error_heading = _t("Problem Loading Slider"), + Error_msg = $("

    "+ Error_heading +"

    "+ e.data.message + "
    " ); + self.$target.append(Error_msg) + return; + }); + }, + + createwebsitefiltersList: function(filters) + { + var self = this; + var ul = null; + ul = self.$overlay.find(".snippet-option-js_get_static_selectFilter > ul"); + setTimeout(function(){ + $(filters).each(function(){ + var filter = $(this); + var li = $('
  • ' + filter[0].name+ '
  • '); + ul.append(li); + }); + },100) + if (self.$target.attr("data-filter_static_by_filter_id")) { + var id = self.$target.attr("data-filter_static_by_filter_id"); + console.log(id) + console.log(ul.find("li[data-filter_by_filter_id=" + id + "]")) + ul.find("li[data-filter_by_filter_id=" + id + "]").addClass("active"); + } + else + { + ul.find("li:first").addClass("active"); + } + }, + filter_static_by_filter_id:function(previewMode, value){ + var self = this + var value = parseInt(value); + this.$target.attr("data-filter_static_by_filter_id",value) + .data("filter_static_by_filter_id",value) + .data('snippet-view').redrow(true); + }, + _setActive: function () { + this.$el.find('li[data-filter_static_by_filter_id]').removeClass('active') + .filter('li[data-filter_static_by_filter_id=' + this.$target.attr('data-filter_static_by_filter_id') + ']').addClass('active'); + } + }); + options.registry.js_get_static_label = options.Class.extend({ + start:function(){ + var self = this; + setTimeout(function(){ + var ul = self.$overlay.find(".snippet-option-js_get_static_label > ul"); + if (self.$target.attr("data-sale_label")) { + var limit = self.$target.attr("data-sale_label"); + ul.find('li[data-sale_label="' + limit + '"]').addClass("active"); + } else { + ul.find('li[data-sale_label="0"]').addClass("active"); + } + },100) + }, + sale_label:function(previewMode, value){ + var self = this + var value = parseInt(value); + this.$target.attr("data-sale_label",value) + .data("sale_label",value) + .data('snippet-view').redrow(true); + }, + _setActive: function () { + this.$el.find('li[data-sale_label]').removeClass('active') + .filter('li[data-sale_label=' + this.$target.attr('data-sale_label') + ']').addClass('active'); + } + + }); + + options.registry.js_get_static_rating = options.Class.extend({ + start:function(){ + var self = this; + setTimeout(function(){ + var ul = self.$overlay.find(".snippet-option-js_get_static_rating > ul"); + if (self.$target.attr("data-get_rating")) { + var limit = self.$target.attr("data-get_rating"); + ul.find('li[data-get_rating="' + limit + '"]').addClass("active"); + } + else { + ul.find('li[data-get_rating="0"]').addClass("active"); + } + + },100) + }, + get_rating:function(previewMode, value){ + var self = this + var value = parseInt(value); + this.$target.attr("data-get_rating",value) + .data("get_rating",value) + .data('snippet-view').redrow(true); + }, + _setActive: function () { + this.$el.find('li[data-get_rating]').removeClass('active') + .filter('li[data-get_rating=' + this.$target.attr('data-get_rating') + ']').addClass('active'); + } + }); +}); diff --git a/ext/3rd-party-addons/clarico_product_multi_carousel/static/src/js/static_product_carousel_snippent_frontend.js b/ext/3rd-party-addons/clarico_product_multi_carousel/static/src/js/static_product_carousel_snippent_frontend.js new file mode 100755 index 00000000..23ecdb1b --- /dev/null +++ b/ext/3rd-party-addons/clarico_product_multi_carousel/static/src/js/static_product_carousel_snippent_frontend.js @@ -0,0 +1,309 @@ +odoo.define('product_static_carousel.snippets.animation', function (require) +{ +'use strict'; +var ajax = require('web.ajax'); +var core = require('web.core'); +var base = require('web_editor.base'); +var utils = require('web.utils'); +var animation = require('website.content.snippets.animation'); +var website_sale_utils = require('website_sale.utils'); +var no_of_product; +var qweb = core.qweb; + +animation.registry.js_get_static_objects = animation.Class.extend +({ + selector : ".js_get_static_objects", + start: function() + { + this.redrow(); + }, + stop: function(){ + this.clean(); + }, + + redrow: function(debug) + { + this.clean(debug); + this.build(debug); + }, + + clean:function(debug){ + this.$target.empty(); + }, + + build: function(debug) + { + + var self = this, + filter_id = self.$target.data("filter_static_by_filter_id"), + sale_label = self.$target.data("sale_label"), + get_rating = self.$target.data("get_rating"), + template = self.$target.data("template"); + $("#wait").css("display", "block"); + if(!template) template = 'clarico_product_multi_carousel.clarico_product_multi_carousel_static_carousel_snippet_heading'; + if(!sale_label)sale_label = 0; + if(!get_rating)get_rating = 0; + if(!filter_id)filter_id = false; + var rpc_end_point = '/ecommerce_static_product_carousel_snippets/render'; + + function ratingEnable() + { + if($( "div" ).hasClass( "product_carousel_rating" )) + { var rating_script=document.createElement('script'); + rating_script.type='text/javascript'; + rating_script.src="/clarico_rating/static/src/js/rating_script.js"; + $("head").append(rating_script); + } + } + + var comparelist_product_ids = JSON.parse(utils.get_cookie('comparelist_product_ids') || '[]'); + function dispcompare() + { + comparelist_product_ids = JSON.parse(utils.get_cookie('comparelist_product_ids') || '[]'); + var count = comparelist_product_ids.length; + $('.o_product_circle').text(comparelist_product_ids.length) + $('.o_compare').attr('href', '/shop/compare/?products='+comparelist_product_ids.toString()); + $('.cus_theme_loader_layout').addClass('hidden'); + if(count > 0){ + $('.o_product_circle').text(comparelist_product_ids.length) + }else if(count == 0){ + $('.o_product_circle').text(""); + } + } + function addScript() + { + + if(get_rating==0) + { + self.$target.find('.product_carousel_rating').css("display","none") + } + + else + { + if($('script[src="/clarico_rating/static/src/js/rating_script.js"]').length > 0) + { console.log('rating script is already added') + $("script[src='/clarico_rating/static/src/js/rating_script.js']").remove() + } + ratingEnable() + self.$target.find('.product_carousel_rating').css("display","block") + } + + // for label + if(sale_label==0) + self.$target.find('.label-block').css("display","none") + else + self.$target.find('.label-block').css("display","block") + + + if($("body").find(".quick-view-a")) + { + var qview = self.$target.find(".quick-view-a") + qview.click(function() { + $('.cus_theme_loader_layout').removeClass('hidden'); + var pid = $(this).attr('data-id'); + ajax.jsonRpc('/productdata', 'call', {'product_id':pid}).then(function(data) + { + $(".mask_cover").append(data) + $(".mask").fadeIn(); + $('.cus_theme_loader_layout').addClass('hidden'); + $(".mask_cover").css("display","block"); + + var sale_script=document.createElement('script'); + sale_script.type='text/javascript'; + sale_script.src="/website_sale/static/src/js/website_sale.js"; + $("script[src='/website_sale/static/src/js/website_sale.js']").remove() + $("head").append(sale_script); + + if($(".product_quick_view_class").find(".o_add_wishlist_dyn")) + { + var wishlist_product_ids = "" + $.get('/shop/wishlist', {'count': 1}).then(function(res) { + wishlist_product_ids = JSON.parse(res); + }); + $('.oe_website_sale').on('change', 'input.js_variant_change, select.js_variant_change, ul[data-attribute_value_ids]', function(ev) { + var $ul = $(ev.target).closest('.js_add_cart_variants'); + var $parent = $ul.closest('.js_product'); + var $product_id = $parent.find('.product_id').first(); + var $el = $parent.find("[data-action='o_wishlist']"); + if (!_.contains(wishlist_product_ids, parseInt($product_id.val(), 10))) { + $el.prop("disabled", false).removeClass('disabled').removeAttr('disabled'); + } + else { + $el.prop("disabled", true).addClass('disabled').attr('disabled', 'disabled'); + } + }); + var id = self.$target.attr('id') + $(".product_quick_view_class .o_add_wishlist_dyn").click(function() { + var url =location.pathname; + var log_Status = $("#o_logout").length + if(log_Status == 0) + { + window.location.href = '/web/login?redirect='+url + } + else + { + var curr_obj = $(this) + var pid = parseInt(curr_obj.parent().find('.product_id').val()) + if (!_.contains(wishlist_product_ids, pid)) { + ajax.jsonRpc('/shop/wishlist/add', 'call', {'product_id': pid}).then(function () + { + website_sale_utils.animate_clone($('#my_wish'), curr_obj.closest('form'), 25, 40); + wishlist_product_ids.push(pid); + curr_obj.prop("disabled", true).addClass('disabled'); + $.get('/shop/wishlist', {'count': 1}).then(function(res) { + $('#my_wish').show(); + var wishlist_product_ids = JSON.parse(res); + $('.my_wish_quantity').text(wishlist_product_ids.length); + }); + }); + } + } + }); + } + if($("body").find(".o_add_compare")) + { + var compare_script=document.createElement('script'); + compare_script.type='text/javascript'; + compare_script.src="/website_sale_comparison/static/src/js/website_sale_comparison.js"; + $("script[src='/website_sale_comparison/static/src/js/website_sale_comparison.js']").remove() + $("head").append(compare_script); + + dispcompare() + + $(".oe_website_sale .o_add_compare,.oe_website_sale .o_add_compare_dyn").click(function (e){ + $.getScript('/website_sale_comparison/static/src/js/website_sale_comparison.js', function(data, textStatus,jqxhr ) { + $('.cus_theme_loader_layout').removeClass('hidden'); + var count = comparelist_product_ids.length; + if(count >= 4) + $(".compare_max_limit").css("visibility","visible"); + setTimeout(function(){ + $(".compare_max_limit").css("visibility","hidden"); + }, 2000); + dispcompare() + }); + }); + } + $(".close_btn").click(function() + { + //close_quickview() + $('.mask_cover').empty(data); + }); + $(document).on('keydown', function(e) + { + if(e.keyCode === 27) + { + if(data) + { + //close_quickview() + $('.mask_cover').empty(data); + } + } + }); + }) + }) + } + + if($("body").find(".o_add_wishlist")) + { + // for wish + var wish = self.$target.find(".o_add_wishlist") + wish.click(function() { + var url =location.pathname; + var log_Status = $("#o_logout").length + if(log_Status == 0) + { + window.location.href = '/web/login?redirect='+url + } + else + { + var curr_obj = $(this) + website_sale_utils.animate_clone($('#my_wish'), curr_obj.closest('form'), 25, 40); + var pid = parseInt($(this).attr('data-product-product-id'),10); + ajax.jsonRpc('/shop/wishlist/add', 'call', { + 'product_id': pid + }).then(function () { + curr_obj.off("click"); + curr_obj.css("display","none") + $("body").find(".o_add_wishlist_inwish[data-product-product-id='" + pid + "']").css("display","block") + $("body").find("a.o_add_wishlist[data-product-product-id='" + pid + "']").css("display","none") + $.get('/shop/wishlist', {'count': 1}).then(function(res) { + $('#my_wish').show(); + var wishlist_product_ids = JSON.parse(res); + $('.my_wish_quantity').text(wishlist_product_ids.length); + }); + }); + } + }); + } + // for compare + if($("body").find(".o_add_compare")) + { + dispcompare() + + var compare = self.$target.find(".o_add_compare") + compare.click(function (e){ + $.getScript('/website_sale_comparison/static/src/js/website_sale_comparison.js', function(data, textStatus,jqxhr ) { + $('.cus_theme_loader_layout').removeClass('hidden'); + var count = comparelist_product_ids.length; + if(count >= 4) + $(".compare_max_limit").css("visibility","visible"); + setTimeout(function(){ + $(".compare_max_limit").css("visibility","hidden"); + }, 2000); + dispcompare() + }); + }); + } + } + + + + + ajax.jsonRpc(rpc_end_point, 'call', {'template': template,'filter_id': filter_id,}).then(function(objects) + { + $(objects).appendTo(self.$target); + self.$target.find(".filter_static_title:first").addClass("active_tab") + var temp_id=self.$target.find(".filter_static_title:first").attr("data-id") + if(!temp_id)temp_id = false; + ajax.jsonRpc('/static_product_data', 'call', {'template': template,'temp_filter_id': temp_id,}).then(function(data) + { + var cont_tab=(self.$target).find(".contenttab") + $(cont_tab).html(data); + addScript() + $('.cus_theme_loader_layout').addClass('hidden'); + self.$target.find("div[class='fun_slide_class']").removeClass("fun_slide_class").addClass('non') + }) + $(".filter_static_title").click(function() + { + $('.cus_theme_loader_layout').removeClass('hidden'); + var curr_tag=$(this); + var curr_tag_id=curr_tag.attr("data-id"); + $(".filter_static_title").removeClass("active_tab") + curr_tag.addClass("active_tab") + ajax.jsonRpc('/static_product_data', 'call', {'template': template,'temp_filter_id': curr_tag_id}).then(function(data) + { + + $('.cus_theme_loader_layout').addClass('hidden'); + var cont_tab=(self.$target).find(".contenttab") + $(cont_tab).html(data); + addScript() + self.$target.find("div[class='fun_slide_class']").removeClass("fun_slide_class").addClass('non'); + $(".non").addClass("zoom-animation"); + setTimeout(function(){ + $(".non").removeClass("zoom-animation"); + },500); + + }) + }) + }).then(function(){ + self.loading(debug); + }).fail(function(e) { + + }); + }, + loading: function(debug){ + //function to hook things up after build + } + + }); +}); \ No newline at end of file diff --git a/ext/3rd-party-addons/clarico_product_multi_carousel/static/src/less/product_carousel_slider.less b/ext/3rd-party-addons/clarico_product_multi_carousel/static/src/less/product_carousel_slider.less new file mode 100755 index 00000000..e2a759f8 --- /dev/null +++ b/ext/3rd-party-addons/clarico_product_multi_carousel/static/src/less/product_carousel_slider.less @@ -0,0 +1,90 @@ +.headline_tab +{ + text-align: left; + .common-div; + //border-bottom: 1px solid #d6d2d2; + .mb(3%); + text-align:center; + + .filter_static_title + { + display: inline-block; + width: auto; + .mr(3%); + .pb(8px); + text-align: center; + + p + { + .size(14px); + .mb(1%); + .mt(0px); + text-align: left; + .muli-semibold(); + .uppercase(); + color: #6c6b6b; + } + } + .filter_static_title.active_tab + { + border-bottom: 2px solid @theme-color; + .mb(-1px); + + p + { + color: @theme-color; + } + } +} +.product_carousel_static_main +{ + .common-div; + .mb(0px); +} +.non +{ + width: 24.7%; + display: inline-block; + vertical-align: top; + border:1px solid #f2eeee; + + + &:hover .product-carousel-icons{ + width:100%; + display:block; + opacity:1; + } +} +.js_wish_mulc.disabled, .js_wish_mulc[disabled]{ + cursor: not-allowed; + color: @theme-color !important; + display:none; +} + +@media (max-width:1200px){ + + .non + { + width: 24.5%; + } +} +@media (max-width:900px){ + .non + { + width: 49.5%; + .mb(2%); + } + +} +@media (max-width:500px){ + .non + { + width: 90%; + .mb(5%) !important; + margin: 0px auto; + display: block; + } + .headline_tab .filter_static_title p { + .size(12px); + } +} diff --git a/ext/3rd-party-addons/clarico_product_multi_carousel/templates/assets.xml b/ext/3rd-party-addons/clarico_product_multi_carousel/templates/assets.xml new file mode 100755 index 00000000..6f05281b --- /dev/null +++ b/ext/3rd-party-addons/clarico_product_multi_carousel/templates/assets.xml @@ -0,0 +1,25 @@ + + + + + + diff --git a/ext/3rd-party-addons/clarico_product_multi_carousel/templates/product_static_carousel.xml b/ext/3rd-party-addons/clarico_product_multi_carousel/templates/product_static_carousel.xml new file mode 100755 index 00000000..7b403661 --- /dev/null +++ b/ext/3rd-party-addons/clarico_product_multi_carousel/templates/product_static_carousel.xml @@ -0,0 +1,219 @@ + + + + + + + + + + + + + + + + + + + diff --git a/ext/3rd-party-addons/clarico_product_multi_carousel/templates/product_static_carousel_option.xml b/ext/3rd-party-addons/clarico_product_multi_carousel/templates/product_static_carousel_option.xml new file mode 100755 index 00000000..112bd557 --- /dev/null +++ b/ext/3rd-party-addons/clarico_product_multi_carousel/templates/product_static_carousel_option.xml @@ -0,0 +1,51 @@ + + + + + diff --git a/ext/3rd-party-addons/clarico_product_multi_carousel/views/website_filter_ept_view.xml b/ext/3rd-party-addons/clarico_product_multi_carousel/views/website_filter_ept_view.xml new file mode 100755 index 00000000..32e617e8 --- /dev/null +++ b/ext/3rd-party-addons/clarico_product_multi_carousel/views/website_filter_ept_view.xml @@ -0,0 +1,52 @@ + + + + Website Filter Form + website.filter.ept + +
    + +
    + + + + + + +
    +
    +
    +
    +
    + + Website Filter Tree + website.filter.ept + + + + + + + + + + + + + + Website Carousel Filter + ir.actions.act_window + website.filter.ept + tree,form + + +

    + Click to define a new Website Carousel filter. +

    + website Carousel filter are used to browse your products through the + touchscreen interface. +

    +
    +
    + +
    diff --git a/ext/3rd-party-addons/clarico_product_multi_carousel/views/website_multi_filter_ept_view.xml b/ext/3rd-party-addons/clarico_product_multi_carousel/views/website_multi_filter_ept_view.xml new file mode 100755 index 00000000..db2ebe11 --- /dev/null +++ b/ext/3rd-party-addons/clarico_product_multi_carousel/views/website_multi_filter_ept_view.xml @@ -0,0 +1,60 @@ + + + + Website Filter Form + website.multi.filter.ept + +
    + +
    + + + + + + + + + +
    +
    +
    +
    +
    + + Website Filter Tree + website.multi.filter.ept + + + + + + + + + + + + + + Website Carousel Multi Filter + ir.actions.act_window + website.multi.filter.ept + tree,form + + +

    + Click to define a new Website Carousel filter. +

    +

    + website Carousel filter are used to browse your products through + the + touchscreen interface. +

    +
    +
    + + +
    diff --git a/ext/3rd-party-addons/clarico_quick_view/__init__.py b/ext/3rd-party-addons/clarico_quick_view/__init__.py new file mode 100755 index 00000000..72f4562d --- /dev/null +++ b/ext/3rd-party-addons/clarico_quick_view/__init__.py @@ -0,0 +1 @@ +from . import controller \ No newline at end of file diff --git a/ext/3rd-party-addons/clarico_quick_view/__manifest__.py b/ext/3rd-party-addons/clarico_quick_view/__manifest__.py new file mode 100755 index 00000000..b22b3897 --- /dev/null +++ b/ext/3rd-party-addons/clarico_quick_view/__manifest__.py @@ -0,0 +1,26 @@ +{ + # Theme information + 'name' : 'Clarico Quick View', + 'category' : 'Website', + 'version' : '1.0', + 'summary': 'View Complete Information about any Product in Lightbox', + 'description': """""", + + # Dependencies + 'depends': [ + 'clarico_shop' + ], + + # Views + 'data': [ + 'templates/template.xml', + 'templates/assets.xml' + ], + + # Author + 'author': 'Emipro Technologies Pvt. Ltd.', + 'website': 'http://www.emiprotechnologies.com', + + # Technical + 'installable': True, +} diff --git a/ext/3rd-party-addons/clarico_quick_view/controller/__init__.py b/ext/3rd-party-addons/clarico_quick_view/controller/__init__.py new file mode 100755 index 00000000..deec4a8b --- /dev/null +++ b/ext/3rd-party-addons/clarico_quick_view/controller/__init__.py @@ -0,0 +1 @@ +from . import main \ No newline at end of file diff --git a/ext/3rd-party-addons/clarico_quick_view/controller/main.py b/ext/3rd-party-addons/clarico_quick_view/controller/main.py new file mode 100755 index 00000000..99f9fa54 --- /dev/null +++ b/ext/3rd-party-addons/clarico_quick_view/controller/main.py @@ -0,0 +1,58 @@ +import odoo +from odoo import http +from odoo.http import request +from odoo.addons.http_routing.models.ir_http import slug + + +class claricoQuickView(http.Controller): + + @http.route(['/productdata'], type='json', auth="public", website=True) + def fetchProduct(self,product_id=None, **kwargs): + if product_id : + product_record = request.env['product.template'].search([['id','=',product_id]]) + Rating = request.env['rating.rating'] + + pricelist = request.website.get_current_pricelist() + + from_currency = request.env.user.company_id.currency_id + to_currency = pricelist.currency_id + compute_currency = lambda price: from_currency.compute(price, to_currency) + + values={ + 'product':product_record, + 'get_attribute_value_ids': self.get_attribute_value_ids, + 'compute_currency': compute_currency, + } + + rating_templates = {} + product = request.env['product.template'].search([['id','=',product_id]]) + ratings = Rating.search([('message_id', 'in', product.website_message_ids.ids)])# rating_message_values = dict([(record.message_id.id, record.rating) for record in ratings]) + rating_product = product.rating_get_stats([('website_published', '=', True)]) + rating_templates[product.id] = rating_product + + values['rating_product'] = rating_templates + response = http.Response(template="clarico_quick_view.clarico_quick_view_fetch-record",qcontext=values) + return response.render() + + + def get_attribute_value_ids(self, product): + product = product.with_context(quantity=1) + + visible_attrs_ids = product.attribute_line_ids.filtered(lambda l: len(l.value_ids) > 1).mapped('attribute_id').ids + to_currency = request.website.get_current_pricelist().currency_id + attribute_value_ids = [] + for variant in product.product_variant_ids: + if to_currency != product.currency_id: + price = variant.currency_id.compute(variant.website_public_price, to_currency) + else: + price = variant.website_public_price + visible_attribute_ids = [v.id for v in variant.attribute_value_ids if v.attribute_id.id in visible_attrs_ids] + attribute_value_ids.append([variant.id, visible_attribute_ids, variant.website_price, price]) + return attribute_value_ids + + + + + + + diff --git a/ext/3rd-party-addons/clarico_quick_view/static/description/icon.png b/ext/3rd-party-addons/clarico_quick_view/static/description/icon.png new file mode 100755 index 00000000..09fd34ab Binary files /dev/null and b/ext/3rd-party-addons/clarico_quick_view/static/description/icon.png differ diff --git a/ext/3rd-party-addons/clarico_quick_view/static/src/js/quick_view.js b/ext/3rd-party-addons/clarico_quick_view/static/src/js/quick_view.js new file mode 100755 index 00000000..17a658f5 --- /dev/null +++ b/ext/3rd-party-addons/clarico_quick_view/static/src/js/quick_view.js @@ -0,0 +1,153 @@ +odoo.define('quickview.gets_product', function(require) { + "use strict"; + + var ajax = require('web.ajax'); + var utils = require('web.utils'); + var website_sale_utils = require('website_sale.utils'); + + // add website_sale & wishlist , compare and rating script for quick view + function addScript() + { + var scriptsale=document.createElement('script'); + scriptsale.type='text/javascript'; + scriptsale.src="/website_sale/static/src/js/website_sale.js"; + var scriptwish=document.createElement('script'); + + $("head").append(scriptsale) + } + + function close_quickview() + { + $("script[src='/website_sale/static/src/js/website_sale.js']").remove() + $("script[src='/clarico_rating/static/src/js/rating_script.js']").remove() + } + + var comparelist_product_ids = JSON.parse(utils.get_cookie('comparelist_product_ids') || '[]'); + function dispcompare() + { + comparelist_product_ids = JSON.parse(utils.get_cookie('comparelist_product_ids') || '[]'); + $('.o_product_circle').text(comparelist_product_ids.length) + $('.o_compare').attr('href', '/shop/compare/?products='+comparelist_product_ids.toString()); + $('.cus_theme_loader_layout').addClass('hidden'); + } + + function get_quickview(pid) + { + pid=pid; + ajax.jsonRpc('/productdata', 'call', {'product_id':pid}).then(function(data) + { + + $(".mask_cover").append(data) + $(".mask").fadeIn(); + $('.cus_theme_loader_layout').addClass('hidden'); + $(".mask_cover").css("display","block"); + addScript(); + var compare_script=document.createElement('script'); + compare_script.type='text/javascript'; + compare_script.src="/website_sale_comparison/static/src/js/website_sale_comparison.js"; + $("script[src='/website_sale_comparison/static/src/js/website_sale_comparison.js']").remove() + $("head").append(compare_script); + + // rating + if($( ".product_quick_view_class" ).find( "q_rating-block" )) + { var rating_script=document.createElement('script'); + rating_script.type='text/javascript'; + rating_script.src="/clarico_rating/static/src/js/rating_script.js"; + $("head").append(rating_script); + } + // for compare + + if($(".product_quick_view_class").find(".o_add_compare_dyn")) { + dispcompare() + + $('.oe_website_sale .o_add_compare, .oe_website_sale .o_add_compare_dyn').click(function (e) { + $.getScript('/website_sale_comparison/static/src/js/website_sale_comparison.js', function (data, textStatus, jqxhr) { + $('.cus_theme_loader_layout').removeClass('hidden'); + var count = comparelist_product_ids.length; + if (count >= 4) + $(".compare_max_limit").css({"visibility": "visible", "z-index": "9999"}); + setTimeout(function () { + $(".compare_max_limit").css("visibility", "hidden"); + }, 2000); + + dispcompare() + }); + }) + } + + $(".close_btn").click(function() + { + close_quickview() + $('.mask_cover').empty(data); + }); + $(document).on('keydown', function(e) + { + if(e.keyCode === 27) + { + if(data) + { + close_quickview() + $('.mask_cover').empty(data); + } + } + }); + + if($(".product_quick_view_class").find(".o_add_wishlist_dyn")) + { + var wishlist_product_ids = "" + $.get('/shop/wishlist', {'count': 1}).then(function(res) { + wishlist_product_ids = JSON.parse(res); + }); + $('.oe_website_sale').on('change', 'input.js_variant_change, select.js_variant_change, ul[data-attribute_value_ids]', function(ev) { + var $ul = $(ev.target).closest('.js_add_cart_variants'); + var $parent = $ul.closest('.js_product'); + var $product_id = $parent.find('.product_id').first(); + var $el = $parent.find("[data-action='o_wishlist']"); + if (!_.contains(wishlist_product_ids, parseInt($product_id.val(), 10))) { + $el.prop("disabled", false).removeClass('disabled').removeAttr('disabled'); + } + else { + $el.prop("disabled", true).addClass('disabled').attr('disabled', 'disabled'); + } + }); + $(".product_quick_view_class .o_add_wishlist_dyn").click(function() { + var url =location.pathname; + var log_Status = $("#o_logout").length + if(log_Status == 0) + { + window.location.href = '/web/login?redirect='+url + } + else + { + var curr_obj = $(this) + var pid = parseInt(curr_obj.parent().find('.product_id').val()) + if (!_.contains(wishlist_product_ids, pid)) { + ajax.jsonRpc('/shop/wishlist/add', 'call', {'product_id': pid}).then(function () + { + website_sale_utils.animate_clone($('#my_wish'), curr_obj.closest('form'), 25, 40); + wishlist_product_ids.push(pid); + curr_obj.prop("disabled", true).addClass('disabled'); + $.get('/shop/wishlist', {'count': 1}).then(function(res) { + $('#my_wish').show(); + var wishlist_product_ids = JSON.parse(res); + $('.my_wish_quantity').text(wishlist_product_ids.length); + }); + }); + } + } + }); + } + + }); + } + $(".quick-view-a").click(function(){ + $('.cus_theme_loader_layout').removeClass('hidden'); + var pid = $(this).attr('data-id'); + get_quickview(pid) + + }); + + return{ + get_quickview:get_quickview + }; +}) diff --git a/ext/3rd-party-addons/clarico_quick_view/static/src/js/quickview_script.js b/ext/3rd-party-addons/clarico_quick_view/static/src/js/quickview_script.js new file mode 100755 index 00000000..1268bbdb --- /dev/null +++ b/ext/3rd-party-addons/clarico_quick_view/static/src/js/quickview_script.js @@ -0,0 +1,12 @@ +odoo.define('quickview.quickview', function(require) { + "use strict"; + + require('web.dom_ready'); + var qview = require('quickview.gets_product'); + $(".quick-view-a").click(function(){ + $('.cus_theme_loader_layout').removeClass('hidden'); + var pid = $(this).attr('data-id'); + qview.get_quickview(pid) + + }); +}) diff --git a/ext/3rd-party-addons/clarico_quick_view/static/src/less/quick_view.less b/ext/3rd-party-addons/clarico_quick_view/static/src/less/quick_view.less new file mode 100755 index 00000000..73aab2cf --- /dev/null +++ b/ext/3rd-party-addons/clarico_quick_view/static/src/less/quick_view.less @@ -0,0 +1,459 @@ +.mask +{ + background-color: #fff; + left: 0; + position: fixed; + top: 0; + width: 100%; + height:100%; + display: none; + z-index: 9990; + opacity: 0.6; +} +.model-main-div{ + position: fixed; + width: 100%; + height:100%; + top: 0; + left: 0; + bottom: 0; + right: 0; + z-index: 9991; + background: rgba(255,255,255,0.5); +} + +.product_quick_view_class +{ + width:100%; + top:0; + left:0; + position:fixed; + background-color:#fff; + z-index:9997; + border-bottom: 4px solid @theme-color; + overflow:auto; + max-height:100%; +} +.product_quick_view_subclass +{ + .maxW; + text-align: left; + color:#000; +} +.sku_container +{ + display:inline-block; + width:100%; + text-align:left; + .mb(8px); +} + +.quick_view_img_div_container{ + width:50%; + display:block; + .left(); + .quick_view_image_div{ + width:100%; + + >img + { + max-width:100%; + width:auto; + margin:0px auto; + max-height: 600px; + } + } +} +.quick_view_product_details +{ + width:45%; + display:block; + .left(); + .mt(5%); + + .quick_view_p_name + { + color: #333; + .transform(capitalize); + .size(18px); + line-height: 100%; + position: relative; + .mb(2%); + .mt(0); + + & a{ + padding: 0 !important; + } + } + .before_hr + { + border: 1px solid @theme-color; + width: 35px; + .mt(0px); + color: @theme-color; + } + + .product_wish_compare + { + margin:0; + } + .price + { + .mb(1%); + + .old_price + { + .left(); + .size(15px); + .pt(7px); + .mr(10px); + color: #777; + } + .new_price + { + .size(18px); + color:#333; + font-family:@m-bold; + .pt(3px); + + span + { + font-family:@m-bold; + } + } + } + .product_avail + { + .size(14px); + .in-stock + { + .mb(1%); + width: 100%; + + span + { + color: #008000; + .size(12px); + width: 30%; + .left(); + font-family:@m-bold; + background: transparent; + .ml(0px); + padding: 0; + } + .warning + { + color:#D5B91D; + } + } + } + .qv_ad2cart + { + display:inline-block; + width:100%; + .mt(3%); + + + #add_to_cart{ + max-width: 200px !important; + float: left; + text-transform: uppercase; + font-size: 16px; + .oswald-regular(); + letter-spacing: 1px; + display: inline-block; + .bg(@theme-color); + width: 100%; + opacity: 0.8 !important; + } + } +} +.quick_view_product_sub_details +{ + .block; + + .prod_des + { + line-height: 170%; + .mb(16px); + } + .product_price + { + h4 + { + .mt(0); + .mb(3%); + } + } + ul.js_add_cart_variants + { + display:block; + + + >li + { + .mb(5%); + .mt(2%); + } + } + + .o_add_wishlist_quick{ + padding: 7px !important; + } + .o_add_wishlist_quick_inwish{ + cursor : not-allowed; + padding: 7px !important; + color : @theme-color; + } + .o_add_wishlist_dyn,.o_add_compare_dyn + { + display: inline-block; + width: auto; + padding: 10px; + vertical-align: top; + .left; + + span + { + vertical-align:top; + } + } + .price_comman_sub_class + { + .text-danger + { + color: #777; + text-decoration: line-through; + float: left; + padding-right: 10px; + padding-top: 5px; + font-size: 13px; + + } + } +} +#hr_style +{ + .mt(10px); + .mb(10px); + .common-div; + margin: 0px; +} +.q_rating-block +{ + .common-div; + + .o_rating_star_card + { + .mb(2%); + + /*color: @theme-color !important;*/ + i + { + .mr(-1px); + } + } +} +#all_att { + .pt(10px); +} +.select_wrapp +{ + position:relative; + width: 173px; + margin-left: 0; + + .arrow_s{ + position: absolute; + display: inline-block; + top: 2px; + right: 1px; + pointer-events: none; + background: #fff; + width: 20px; + height: 42px; + .size(9px); + + i + { + color: #898383 !important; + } + } +} +#attr_select +{ + font-family:@m-regular; + color:#898383; + .mt(7px) !important; + height:45px; + .size(13px); +} +#quick_view_ul +{ + .mt(0px); +} +#attr_ul +{ + .mt(10px); +} + +.attr_name,#attr_font +{ + .size(13px); +} +#wishlist_icon_div_quick_view +{ + + .add2wish + { + .left(); + .size(15px); + display:block; + padding: 6px 10px; + .bg(transparent); + .mr(10px); + + >i + { + color:#555; + .size(13px); + transition: background-color 0.4s ease-in-out; + } + &:hover + { + >i + { + color:@theme-color!important; + } + } + } + .in2wish + { + .left(); + .size(15px); + color:@theme-color; + display: none; + padding: 7px 10px; + background:transparent; + .mr(10px); + + } +} +.quick-view-a +{ + width: 47%; + float: right; + display: block; + .size(13px); + color:#fff; + opacity:1.0 !important; + padding: 7px 12px; + + &:hover + { + transform:scale(1.0) !important; + color:#fff ; + opacity:0.85 !important; + } +} + +.css_attribute_color.active{ + border: 1px ridge @theme-color; +} +.variant-name-strong{ + font-weight: normal !important; + .size(14px); + .oswald-regular(); + color: #484848 !important; + letter-spacing: 1px; + .common-div; +} +#clr_li_style .css_attribute_color{ + margin: 7px 10px 0px 0 !important; + .ml(4px) !important; + + & span{ + .size(14px); + .capitalize(); + .muli-regular(); + } +} +#all_att .list-inline{ + .mb(15px); +} +#all_att .list-unstyled{ + .mb(15px); +} + .list-unstyled { + .pl(0px); + list-style: none; + .common-div; +} +.list-unstyled .control-label{ + + & span{ + .size(14px); + .capitalize(); + .muli-regular(); + } +} +.quickview-btn{ + width:100% !important; + padding: 10px 15px !important; +} + +.quick_view_product_details{ + .mt(1%) !important; +} +.Quick_product_wish_compare +{ +} +.quick_product_quantity +{ + display: inline-block; + width: auto; + .left(); + .mb(3%); + .mr(3%); +} +.view_details_link +{ + color:@theme-color; + .size(14px); + .common-div; + vertical-align: middle; +} +#wait{ + display:none; + width:69px; + height:89px; + z-index: 9999; + position:absolute; + top:50%; + left:50%; + padding:2px; +} + +.mask_cover +{ + width:100%; + display:block; + position:fixed; + top:0; + z-index:9993; +} +.o_add_wishlist_quick.disabled{ + cursor : not-allowed; + color : @theme-color !important; +} +#o-carousel-product { + .carousel-inner { + div.item { + height: auto !important; + img{ + max-height: none; + } + } + } +} + diff --git a/ext/3rd-party-addons/clarico_quick_view/static/src/less/responsive_quick_view.less b/ext/3rd-party-addons/clarico_quick_view/static/src/less/responsive_quick_view.less new file mode 100755 index 00000000..25b139df --- /dev/null +++ b/ext/3rd-party-addons/clarico_quick_view/static/src/less/responsive_quick_view.less @@ -0,0 +1,118 @@ +@media (max-width: 1200px) { + + .quick_view_img_div_container .quick_view_image_div > img + { + max-height: 500px !important; + } + .quick_view_product_details .quick_view_p_name + { + .size(13px); + line-height: 150%; + } + .price_comman_sub_class + { + b + { + .size(13px); + } + } + .quick_view_product_sub_details product_price { + .mb(0); + .mt(0) !important; + } + .quick_view_product_details #add_to_cart + { + max-width: 180px !important; + .size(15px); + + } + .quick_view_product_details .qv_ad2cart + { + .mb(3%); + } + +} +@media (max-width: 800px) { + + .quick_view_img_div_container .quick_view_image_div > img + { + max-height: 400px !important; + } + .quick_view_img_div_container { + width: 100%; + display: block; + float: none; + } + .quick_view_product_details { + width:100%; + .mt(5%) !important; + } + .quick_view_product_sub_details + { + width:100%; + } + .Quick_product_wish_compare { + width: 50%; + } + .quick_view_product_details .product_avail + { + .common-div; + + } + .quick_view_product_details .quick_view_p_name + { + .mb(1%); + } + .q_rating-block .o_rating_star_card { + .mb(1%); + } + .quick_view_product_sub_details .prod_des + { + .mb(2%); + } + .price_comman_sub_class .product_price { + .mb(0); + .mt(0) !important; + } + .quick_view_product_sub_details .price_comman_sub_class .text-danger + { + .pt(0); + } + .quick_view_product_sub_details ul.js_add_cart_variants > li + { + .mb(2%); + } + .quick_view_product_details .qv_ad2cart + { + .mt(0); + .mb(2%); + } + .quick_view_product_sub_details .product_price h4 + { + .mb(2%); + } +} +@media (max-width: 500px) +{ + .quick_view_img_div_container .quick_view_image_div > img + { + max-height: 300px !important; + } + .quick_view_img_div_container { + width: 100%; + display: block; + float: none; + } + .quick_view_product_details { + + width:100%; + + } + .price_comman_class{ + .pt(15px); + } + .quick_view_product_sub_details .price_comman_sub_class .text-danger { + padding-top: 2px; + } + +} diff --git a/ext/3rd-party-addons/clarico_quick_view/templates/assets.xml b/ext/3rd-party-addons/clarico_quick_view/templates/assets.xml new file mode 100755 index 00000000..46f6f6ab --- /dev/null +++ b/ext/3rd-party-addons/clarico_quick_view/templates/assets.xml @@ -0,0 +1,13 @@ + + + + \ No newline at end of file diff --git a/ext/3rd-party-addons/clarico_quick_view/templates/template.xml b/ext/3rd-party-addons/clarico_quick_view/templates/template.xml new file mode 100755 index 00000000..9539cb2d --- /dev/null +++ b/ext/3rd-party-addons/clarico_quick_view/templates/template.xml @@ -0,0 +1,275 @@ + + + + + + + + + + + + + + + + diff --git a/ext/3rd-party-addons/clarico_quick_view_carousel/__init__.py b/ext/3rd-party-addons/clarico_quick_view_carousel/__init__.py new file mode 100755 index 00000000..e69de29b diff --git a/ext/3rd-party-addons/clarico_quick_view_carousel/__manifest__.py b/ext/3rd-party-addons/clarico_quick_view_carousel/__manifest__.py new file mode 100755 index 00000000..a5f4e22c --- /dev/null +++ b/ext/3rd-party-addons/clarico_quick_view_carousel/__manifest__.py @@ -0,0 +1,25 @@ +{ + # Theme information + 'name' : 'Clarico Quick View Carousel', + 'category' : 'Website', + 'version' : '1.0', + 'summary': 'Add Product to Carousel from Quick View', + 'description': """""", + + # Dependencies + 'depends': [ + 'clarico_quick_view','clarico_product_multi_carousel' + ], + + # Views + 'data': [ + 'template/template.xml', + ], + + # Author + 'author': 'Emipro Technologies Pvt. Ltd.', + 'website': 'http://www.emiprotechnologies.com', + + # Technical + 'installable': True, +} diff --git a/ext/3rd-party-addons/clarico_quick_view_carousel/static/description/icon.png b/ext/3rd-party-addons/clarico_quick_view_carousel/static/description/icon.png new file mode 100755 index 00000000..09fd34ab Binary files /dev/null and b/ext/3rd-party-addons/clarico_quick_view_carousel/static/description/icon.png differ diff --git a/ext/3rd-party-addons/clarico_quick_view_carousel/template/template.xml b/ext/3rd-party-addons/clarico_quick_view_carousel/template/template.xml new file mode 100755 index 00000000..30fb134b --- /dev/null +++ b/ext/3rd-party-addons/clarico_quick_view_carousel/template/template.xml @@ -0,0 +1,20 @@ + + + + + + + + diff --git a/ext/3rd-party-addons/clarico_quick_view_compare/__init__.py b/ext/3rd-party-addons/clarico_quick_view_compare/__init__.py new file mode 100755 index 00000000..e69de29b diff --git a/ext/3rd-party-addons/clarico_quick_view_compare/__manifest__.py b/ext/3rd-party-addons/clarico_quick_view_compare/__manifest__.py new file mode 100755 index 00000000..671aa409 --- /dev/null +++ b/ext/3rd-party-addons/clarico_quick_view_compare/__manifest__.py @@ -0,0 +1,25 @@ +{ + # Theme information + 'name' : 'Clarico Quick View Compare', + 'category' : 'Website', + 'version' : '1.0', + 'summary': 'Add Product to Compare from Quick View', + 'description': """""", + + # Dependencies + 'depends': [ + 'clarico_quick_view','clarico_compare' + ], + + # Views + 'data': [ + 'template/template.xml', + ], + + # Author + 'author': 'Emipro Technologies Pvt. Ltd.', + 'website': 'http://www.emiprotechnologies.com', + + # Technical + 'installable': True, +} diff --git a/ext/3rd-party-addons/clarico_quick_view_compare/static/description/icon.png b/ext/3rd-party-addons/clarico_quick_view_compare/static/description/icon.png new file mode 100755 index 00000000..09fd34ab Binary files /dev/null and b/ext/3rd-party-addons/clarico_quick_view_compare/static/description/icon.png differ diff --git a/ext/3rd-party-addons/clarico_quick_view_compare/template/template.xml b/ext/3rd-party-addons/clarico_quick_view_compare/template/template.xml new file mode 100755 index 00000000..cb3d6ed4 --- /dev/null +++ b/ext/3rd-party-addons/clarico_quick_view_compare/template/template.xml @@ -0,0 +1,12 @@ + + + + + diff --git a/ext/3rd-party-addons/clarico_quick_view_wishlist/__init__.py b/ext/3rd-party-addons/clarico_quick_view_wishlist/__init__.py new file mode 100755 index 00000000..e69de29b diff --git a/ext/3rd-party-addons/clarico_quick_view_wishlist/__manifest__.py b/ext/3rd-party-addons/clarico_quick_view_wishlist/__manifest__.py new file mode 100755 index 00000000..8e0c267f --- /dev/null +++ b/ext/3rd-party-addons/clarico_quick_view_wishlist/__manifest__.py @@ -0,0 +1,25 @@ +{ + # Theme information + 'name' : 'Clarico Quick View Wishlist', + 'category' : 'Website', + 'version' : '1.0', + 'summary': 'Add Product to Compare from Wishlist', + 'description': """""", + + # Dependencies + 'depends': [ + 'clarico_quick_view','clarico_wishlist' + ], + + # Views + 'data': [ + 'templates/template.xml' + ], + + # Author + 'author': 'Emipro Technologies Pvt. Ltd.', + 'website': 'http://www.emiprotechnologies.com', + + # Technical + 'installable': True, +} diff --git a/ext/3rd-party-addons/clarico_quick_view_wishlist/static/description/icon.png b/ext/3rd-party-addons/clarico_quick_view_wishlist/static/description/icon.png new file mode 100755 index 00000000..09fd34ab Binary files /dev/null and b/ext/3rd-party-addons/clarico_quick_view_wishlist/static/description/icon.png differ diff --git a/ext/3rd-party-addons/clarico_quick_view_wishlist/templates/template.xml b/ext/3rd-party-addons/clarico_quick_view_wishlist/templates/template.xml new file mode 100755 index 00000000..9c7f2213 --- /dev/null +++ b/ext/3rd-party-addons/clarico_quick_view_wishlist/templates/template.xml @@ -0,0 +1,14 @@ + + + + + + diff --git a/ext/3rd-party-addons/clarico_rating/__init__.py b/ext/3rd-party-addons/clarico_rating/__init__.py new file mode 100755 index 00000000..72f4562d --- /dev/null +++ b/ext/3rd-party-addons/clarico_rating/__init__.py @@ -0,0 +1 @@ +from . import controller \ No newline at end of file diff --git a/ext/3rd-party-addons/clarico_rating/__manifest__.py b/ext/3rd-party-addons/clarico_rating/__manifest__.py new file mode 100755 index 00000000..8b409bb1 --- /dev/null +++ b/ext/3rd-party-addons/clarico_rating/__manifest__.py @@ -0,0 +1,26 @@ +{ + # Theme information + 'name' : 'Clarico Rating', + 'category' : 'Website', + 'version' : '1.0', + 'summary': 'Show Product Rating in Category Page', + 'description': """""", + + # Dependencies + 'depends': [ + 'website_rating','clarico_wishlist','clarico_product_multi_carousel','clarico_quick_view','clarico_product','clarico_compare', + ], + + # Views + 'data': [ + 'templates/template.xml', + 'templates/assets.xml', + ], + + # Author + 'author': 'Emipro Technologies Pvt. Ltd.', + 'website': 'http://www.emiprotechnologies.com', + + # Technical + 'installable': True, +} diff --git a/ext/3rd-party-addons/clarico_rating/controller/__init__.py b/ext/3rd-party-addons/clarico_rating/controller/__init__.py new file mode 100755 index 00000000..deec4a8b --- /dev/null +++ b/ext/3rd-party-addons/clarico_rating/controller/__init__.py @@ -0,0 +1 @@ +from . import main \ No newline at end of file diff --git a/ext/3rd-party-addons/clarico_rating/controller/main.py b/ext/3rd-party-addons/clarico_rating/controller/main.py new file mode 100755 index 00000000..32960321 --- /dev/null +++ b/ext/3rd-party-addons/clarico_rating/controller/main.py @@ -0,0 +1,55 @@ +from odoo import http, _ +from odoo.http import request +from odoo.addons.clarico_shop.controllers.main import claricoShop +from odoo.addons.website_sale.controllers.main import WebsiteSale +from odoo.addons.clarico_compare.controllers.main import Claricoproductcomparison + +class claricoRating(claricoShop): + + @http.route([ + '/shop', + '/shop/page/', + '/shop/category/', + '/shop/category//page/' + ], type='http', auth="public", website=True) + def shop(self, page=0, category=None, search='', ppg=False, **post): + response = super(claricoRating, self).shop(page=page, category=category, search=search, **post) + Rating = request.env['rating.rating'] + products = response.qcontext['products'] + rating_templates = {} + for product in products : + ratings = Rating.search([('message_id', 'in', product.website_message_ids.ids)])# rating_message_values = dict([(record.message_id.id, record.rating) for record in ratings]) + rating_product = product.rating_get_stats([('website_published', '=', True)]) + rating_templates[product.id] = rating_product + response.qcontext['rating_product'] = rating_templates + return response + +class claricoProductRating(WebsiteSale): + + @http.route(['/shop/product/'], type='http', auth="public", website=True) + def product(self, product, category='', search='', **kwargs): + response = super(claricoProductRating, self).product(product=product, category=category, search=search, **kwargs) + Rating = request.env['rating.rating'] + rating_templates = {} + ratings = Rating.search([('message_id', 'in', product.website_message_ids.ids)])# rating_message_values = dict([(record.message_id.id, record.rating) for record in ratings]) + rating_product = product.rating_get_stats([('website_published', '=', True)]) + rating_templates[product.id] = rating_product + response.qcontext['rating_product'] = rating_templates + return response + +class claricoCompareRating(Claricoproductcomparison): + + @http.route('/shop/compare/', type='http', auth="public", website=True) + def product_compare(self, **post): + response = super(claricoCompareRating, self).product_compare(**post) + Rating = request.env['rating.rating'] + rating_templates = {} + products = response.qcontext.get('products') or None + if products: + for product in products : + ratings = Rating.search([('message_id', 'in', product.product_tmpl_id.website_message_ids.ids)])# rating_message_values = dict([(record.message_id.id, record.rating) for record in ratings]) + rating_product = product.product_tmpl_id.rating_get_stats([('website_published', '=', True)]) + rating_templates[product.id] = rating_product + response.qcontext['rating_product'] = rating_templates + return response + diff --git a/ext/3rd-party-addons/clarico_rating/static/description/icon.png b/ext/3rd-party-addons/clarico_rating/static/description/icon.png new file mode 100755 index 00000000..09fd34ab Binary files /dev/null and b/ext/3rd-party-addons/clarico_rating/static/description/icon.png differ diff --git a/ext/3rd-party-addons/clarico_rating/static/src/js/rating.js b/ext/3rd-party-addons/clarico_rating/static/src/js/rating.js new file mode 100755 index 00000000..d6e1e0f7 --- /dev/null +++ b/ext/3rd-party-addons/clarico_rating/static/src/js/rating.js @@ -0,0 +1,7 @@ + odoo.define('rate.rating', function(require) { + "use strict"; + + require('web.dom_ready') + var rate = require('rate.getrate'); + rate.get_stars() +}) diff --git a/ext/3rd-party-addons/clarico_rating/static/src/js/rating_script.js b/ext/3rd-party-addons/clarico_rating/static/src/js/rating_script.js new file mode 100755 index 00000000..74b75478 --- /dev/null +++ b/ext/3rd-party-addons/clarico_rating/static/src/js/rating_script.js @@ -0,0 +1,31 @@ + odoo.define('rate.getrate', function(require) { + "use strict"; + + //require('web.dom_ready') + var base = require('web_editor.base'); + var ajax = require('web.ajax'); + var utils = require('web.utils'); + var core = require('web.core'); + var _t = core._t; + + function get_stars() + { + var val_ele = $("input[name='rating']"); + $(val_ele).each(function() + { + var curr_ele=$(this); + var val=curr_ele.attr('data-default'); + var index = Math.floor(val); + var decimal = val - index; + parent=curr_ele.parent() + parent.find('.stars').find("i:lt("+index+")").removeClass('fa-star-o fa-star-half-o').addClass('fa-star'); + if(decimal){ + parent.find('.stars').find("i:eq("+(index)+")").removeClass('fa-star-o fa-star fa-star-half-o').addClass('fa-star-half-o'); + } + }); + } + get_stars() + return { + get_stars:get_stars + }; +}) diff --git a/ext/3rd-party-addons/clarico_rating/static/src/less/product_rating.less b/ext/3rd-party-addons/clarico_rating/static/src/less/product_rating.less new file mode 100755 index 00000000..73a9288b --- /dev/null +++ b/ext/3rd-party-addons/clarico_rating/static/src/less/product_rating.less @@ -0,0 +1,39 @@ +.o_rating_star_card{ + + margin:0 2px; + + i{ + .size(11px); + margin:-2px; + color: @theme-color; + .mr(0) !important; + } +} +.style_3_rating +{ + .rating-star-div + { + text-align:center; + } +} +/*---------------------Rating in wishlist--------------------------*/ +#wish_rating +{ + width: 100%; + .right(); + max-width: 75%; + .shop_rating + { + .mt(6px); + } +} +.click_effects +{ + transition: 0.3s; + display: inline-block; +} +#comment_id +{ + transition:0.3s; +} + diff --git a/ext/3rd-party-addons/clarico_rating/templates/assets.xml b/ext/3rd-party-addons/clarico_rating/templates/assets.xml new file mode 100755 index 00000000..4d5868fc --- /dev/null +++ b/ext/3rd-party-addons/clarico_rating/templates/assets.xml @@ -0,0 +1,12 @@ + + + + \ No newline at end of file diff --git a/ext/3rd-party-addons/clarico_rating/templates/template.xml b/ext/3rd-party-addons/clarico_rating/templates/template.xml new file mode 100755 index 00000000..d1b12fb4 --- /dev/null +++ b/ext/3rd-party-addons/clarico_rating/templates/template.xml @@ -0,0 +1,103 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ext/3rd-party-addons/clarico_recently_viewed/__init__.py b/ext/3rd-party-addons/clarico_recently_viewed/__init__.py new file mode 100755 index 00000000..a03bfd09 --- /dev/null +++ b/ext/3rd-party-addons/clarico_recently_viewed/__init__.py @@ -0,0 +1 @@ +from . import controllers \ No newline at end of file diff --git a/ext/3rd-party-addons/clarico_recently_viewed/__manifest__.py b/ext/3rd-party-addons/clarico_recently_viewed/__manifest__.py new file mode 100755 index 00000000..9a523425 --- /dev/null +++ b/ext/3rd-party-addons/clarico_recently_viewed/__manifest__.py @@ -0,0 +1,26 @@ +{ + # Theme information + 'name' : 'Clarico Recently Viewed', + 'category' : 'Website', + 'version' : '1.0', + 'summary': 'Recently Viewed Products', + 'description': """""", + + # Dependencies + 'depends': [ + 'clarico_wishlist','clarico_product','clarico_cart' + ], + + # Views + 'data': [ + 'templates/template.xml', + 'templates/assets.xml' + ], + + # Author + 'author': 'Emipro Technologies Pvt. Ltd.', + 'website': 'http://www.emiprotechnologies.com', + + # Technical + 'installable': True, +} diff --git a/ext/3rd-party-addons/clarico_recently_viewed/controllers/__init__.py b/ext/3rd-party-addons/clarico_recently_viewed/controllers/__init__.py new file mode 100755 index 00000000..deec4a8b --- /dev/null +++ b/ext/3rd-party-addons/clarico_recently_viewed/controllers/__init__.py @@ -0,0 +1 @@ +from . import main \ No newline at end of file diff --git a/ext/3rd-party-addons/clarico_recently_viewed/controllers/main.py b/ext/3rd-party-addons/clarico_recently_viewed/controllers/main.py new file mode 100755 index 00000000..4b61dd5f --- /dev/null +++ b/ext/3rd-party-addons/clarico_recently_viewed/controllers/main.py @@ -0,0 +1,73 @@ +import odoo +from odoo import http +from odoo import fields +from odoo.http import request +from odoo.addons.website_sale.controllers.main import WebsiteSale +from odoo.addons.website_sale_wishlist.controllers.main import WebsiteSaleWishlist + +class claricoRecentlyViewed(WebsiteSale): + + @http.route(['/shop/product/'], type='http', auth="public", website=True) + def product(self, product, category='', search='', **post): + response = super(claricoRecentlyViewed, self).product(product=product, category=category, search=search, **post) + recently_viewed_product_ids = self.update_recently_viewed_items(product.id) + response.qcontext.update(active_id=product.id) + if request.session['recently_viewed_product_ids'] : + product = request.env['product.template'].search([('id','in',request.session['recently_viewed_product_ids'])]) + response.qcontext['recently_viewed_product'] = product + return response + + @http.route(['/shop/cart'], type='http', auth="public", website=True) + def cart(self, **post): + response = super(claricoRecentlyViewed, self).cart(**post) + recently_viewed_product_ids = request.session.get( 'recently_viewed_product_ids', False) + if recently_viewed_product_ids : + product = request.env['product.template'].search([('id','in',request.session['recently_viewed_product_ids'])]) + response.qcontext['recently_viewed_product'] = product + return response + + + def update_recently_viewed_items(self,product_id): + recently_viewed_product_ids = request.session.get( 'recently_viewed_product_ids', False) + if recently_viewed_product_ids : + if product_id not in request.session['recently_viewed_product_ids'] : + tmp = recently_viewed_product_ids + tmp.append(product_id) + request.session['recently_viewed_product_ids'] = tmp + else : + request.session['recently_viewed_product_ids'] = [product_id] + return request.session['recently_viewed_product_ids'] + + + +class claricoWishlist_RecentlyViewed(WebsiteSaleWishlist): + def _get_compute_currency_and_context(self): + pricelist_context = dict(request.env.context) + pricelist = False + if not pricelist_context.get('pricelist'): + pricelist = request.website.get_current_pricelist() + pricelist_context['pricelist'] = pricelist.id + else: + pricelist = request.env['product.pricelist'].browse(pricelist_context['pricelist']) + + from_currency = request.env.user.company_id.currency_id + to_currency = pricelist.currency_id + compute_currency = lambda price: from_currency.compute(price, to_currency) + + return compute_currency, pricelist_context, pricelist + + @http.route(['/shop/wishlist'], type='http', auth="public", website=True) + def get_wishlist(self, count=False, **kw): + response = super(claricoWishlist_RecentlyViewed, self).get_wishlist(count=count,**kw) + recently_viewed_product_ids = request.session.get('recently_viewed_product_ids', False) + compute_currency, pricelist_context, pricelist = self._get_compute_currency_and_context() + if recently_viewed_product_ids : + product = request.env['product.template'].search([('id','in',request.session['recently_viewed_product_ids'])]) + response.qcontext['recently_viewed_product'] = product + response.qcontext['compute_currency'] = compute_currency + response.qcontext['pricelist'] = pricelist + return response + + + + diff --git a/ext/3rd-party-addons/clarico_recently_viewed/static/description/icon.png b/ext/3rd-party-addons/clarico_recently_viewed/static/description/icon.png new file mode 100755 index 00000000..09fd34ab Binary files /dev/null and b/ext/3rd-party-addons/clarico_recently_viewed/static/description/icon.png differ diff --git a/ext/3rd-party-addons/clarico_recently_viewed/static/src/js/recently_viewed.js b/ext/3rd-party-addons/clarico_recently_viewed/static/src/js/recently_viewed.js new file mode 100755 index 00000000..7ae9213b --- /dev/null +++ b/ext/3rd-party-addons/clarico_recently_viewed/static/src/js/recently_viewed.js @@ -0,0 +1,28 @@ +$(document).ready(function(){ + $('.owl-carousel.recentbx').owlCarousel({ + + loop:false, + margin:10, + nav:true, + autoplay:true, + autoplayTimeout:3000, + autoplayHoverPause:true, + + responsive:{ + 0:{ + items:1 + }, + 500:{ + items:2 + }, + 800:{ + items:3 + }, + 1000:{ + items:4 + } + } + }); + +}); + diff --git a/ext/3rd-party-addons/clarico_recently_viewed/static/src/less/recently_viewed.less b/ext/3rd-party-addons/clarico_recently_viewed/static/src/less/recently_viewed.less new file mode 100755 index 00000000..9aba6577 --- /dev/null +++ b/ext/3rd-party-addons/clarico_recently_viewed/static/src/less/recently_viewed.less @@ -0,0 +1,110 @@ +.div_class_whole_recent_view_product +{ + .common-div; +} +.div_sub_class_recent_view_product +{ + .common-div; +} +.div_class_recent_view_product +{ + .block; + +} + +.recently_viewed_container +{ + width:100%; + .left(); + position: relative; + min-height: 1px; +} + +.parent +{ + .center(); + .center; +} +.recently_viewed_header +{ + .mb(4%); +} +.recently_viewed_lbl +{ + .transform(uppercase); + .size(14px); + font-family:@m-bold; + margin:0; + text-align:left; +} +.recently_viewed_img_div +{ + img + { + width:auto; + max-width:100%; + .center; + + } +} +.recently_viwed_details +{ + width:100%; + display: block; + margin: 17px auto 0px; + text-align: left; + //max-width:300px; + + .recently_view_product_name + { + .center; + text-align:left; + + p + { + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + color:#717171; + .size(14px); + .mb(10px); + } + + } + .recently_view_product_price + { + .common-div; + .size(13px); + font-weight:700; + + p + { + + } + } +} +.r_v_deatil_hr +{ + border-color: @theme-color; + border-width: 2px; + width: 37px; + .ml(0px); + .mt(7px); +} + + + +@media (max-width: 800px) +{ + .recently_viwed_details + { + width:100% !important; + + } +} +@media (max-width: 600px) { + .parent + { + .ml(5px); + } +} diff --git a/ext/3rd-party-addons/clarico_recently_viewed/templates/assets.xml b/ext/3rd-party-addons/clarico_recently_viewed/templates/assets.xml new file mode 100755 index 00000000..b40e6c13 --- /dev/null +++ b/ext/3rd-party-addons/clarico_recently_viewed/templates/assets.xml @@ -0,0 +1,10 @@ + + + + diff --git a/ext/3rd-party-addons/clarico_recently_viewed/templates/template.xml b/ext/3rd-party-addons/clarico_recently_viewed/templates/template.xml new file mode 100755 index 00000000..a969660e --- /dev/null +++ b/ext/3rd-party-addons/clarico_recently_viewed/templates/template.xml @@ -0,0 +1,177 @@ + + + + + + + + diff --git a/ext/3rd-party-addons/clarico_reset_password/__init__.py b/ext/3rd-party-addons/clarico_reset_password/__init__.py new file mode 100755 index 00000000..e046e49f --- /dev/null +++ b/ext/3rd-party-addons/clarico_reset_password/__init__.py @@ -0,0 +1 @@ +from . import controllers diff --git a/ext/3rd-party-addons/clarico_reset_password/__manifest__.py b/ext/3rd-party-addons/clarico_reset_password/__manifest__.py new file mode 100755 index 00000000..1527463b --- /dev/null +++ b/ext/3rd-party-addons/clarico_reset_password/__manifest__.py @@ -0,0 +1,25 @@ +{ + # Theme information + 'name' : 'Clarico Reset Password', + 'category' : 'Website', + 'version' : '1.0', + 'summary': 'Reset Password from Frontend', + 'description': """""", + + # Dependencies + 'depends': [ + 'clarico_account' + ], + + # Views + 'data': [ + 'templates/template.xml', + ], + + # Author + 'author': 'Emipro Technologies Pvt. Ltd.', + 'website': 'http://www.emiprotechnologies.com', + + # Technical + 'installable': True, +} diff --git a/ext/3rd-party-addons/clarico_reset_password/controllers/__init__.py b/ext/3rd-party-addons/clarico_reset_password/controllers/__init__.py new file mode 100755 index 00000000..deec4a8b --- /dev/null +++ b/ext/3rd-party-addons/clarico_reset_password/controllers/__init__.py @@ -0,0 +1 @@ +from . import main \ No newline at end of file diff --git a/ext/3rd-party-addons/clarico_reset_password/controllers/main.py b/ext/3rd-party-addons/clarico_reset_password/controllers/main.py new file mode 100755 index 00000000..55c873b7 --- /dev/null +++ b/ext/3rd-party-addons/clarico_reset_password/controllers/main.py @@ -0,0 +1,81 @@ +from odoo.http import request, route +from odoo.addons.portal.controllers.portal import CustomerPortal + +class my_details(CustomerPortal): + + @route(['/my/account'], type='http', auth='user', website=True) + def account(self, redirect=None, **post): + values = self._prepare_portal_layout_values() + partner = request.env.user.partner_id + values.update({ + 'error': {}, + 'error_message': [], + }) + + if post: + reset_password_fields=['old_pwd','new_password','confirm_pwd'] + reset_password_fields_vals = {} + + for index in reset_password_fields: + if index in post: + reset_password_fields_vals.update({index: post.get(index,0)}) + post.pop(index) + + error, error_message = self.details_form_validate(post) + + if reset_password_fields_vals: + old_password=reset_password_fields_vals.get('old_pwd',None) + new_password=reset_password_fields_vals.get('new_password',None) + confirm_password=reset_password_fields_vals.get('confirm_pwd',None) + + if old_password or new_password or confirm_password: + # Validation + for field_name in reset_password_fields: + if not reset_password_fields_vals.get(field_name): + error[field_name] = 'missing' + + # error message for empty required fields + if [err for err in list(error.values()) if err == 'missing']: + if 'Some required fields are empty.' not in error_message: + error_message.append('Some required fields are empty.') + + # error message for compare a old_password and new_password + if new_password != confirm_password: + error['new_password']= 'error' + error['confirm_pwd']= 'error' + error_message.append('The new password and its confirmation must be identical.') + elif not error: + try: + if request.env['res.users'].change_password(old_password, new_password.strip()): + print("password change") + except Exception: + #error message for old_password wrong + error['old_pwd']= 'error' + error_message.append('The old password you provided is incorrect, your password was not changed.') + + values.update({'error': error, 'error_message': error_message}) + values.update(post) + if not error: + values = {key: post[key] for key in self.MANDATORY_BILLING_FIELDS} + values.update({key: post[key] for key in self.OPTIONAL_BILLING_FIELDS if key in post}) + values.update({'zip': values.pop('zipcode', '')}) + partner.sudo().write(values) + if redirect: + return request.redirect(redirect) + return request.redirect('/my/home') + + countries = request.env['res.country'].sudo().search([]) + states = request.env['res.country.state'].sudo().search([]) + + values.update({ + 'partner': partner, + 'countries': countries, + 'states': states, + 'has_check_vat': hasattr(request.env['res.partner'], 'check_vat'), + 'redirect': redirect, + 'page_name': 'my_details', + }) + + response = request.render("portal.portal_my_details", values) + response.headers['X-Frame-Options'] = 'DENY' + return response diff --git a/ext/3rd-party-addons/clarico_reset_password/static/description/icon.png b/ext/3rd-party-addons/clarico_reset_password/static/description/icon.png new file mode 100755 index 00000000..09fd34ab Binary files /dev/null and b/ext/3rd-party-addons/clarico_reset_password/static/description/icon.png differ diff --git a/ext/3rd-party-addons/clarico_reset_password/templates/template.xml b/ext/3rd-party-addons/clarico_reset_password/templates/template.xml new file mode 100755 index 00000000..43d2c486 --- /dev/null +++ b/ext/3rd-party-addons/clarico_reset_password/templates/template.xml @@ -0,0 +1,23 @@ + + + + diff --git a/ext/3rd-party-addons/clarico_shop/__init__.py b/ext/3rd-party-addons/clarico_shop/__init__.py new file mode 100755 index 00000000..3882f994 --- /dev/null +++ b/ext/3rd-party-addons/clarico_shop/__init__.py @@ -0,0 +1,3 @@ +from . import controllers +from . import model +from . import tools \ No newline at end of file diff --git a/ext/3rd-party-addons/clarico_shop/__manifest__.py b/ext/3rd-party-addons/clarico_shop/__manifest__.py new file mode 100755 index 00000000..677bfd7d --- /dev/null +++ b/ext/3rd-party-addons/clarico_shop/__manifest__.py @@ -0,0 +1,29 @@ +{ + # Theme information + 'name' : 'Clarico Shop', + 'category' : 'Website', + 'version' : '1.0', + 'summary': 'Showcase Products in Unique Style at your Online Store', + 'description': """""", + + # Dependencies + 'depends': [ + 'clarico_layout' + ], + + # Views + 'data': [ + 'security/ir.model.access.csv', + 'templates/template.xml', + 'view/product_template.xml', + 'view/product_label.xml', + 'templates/assets.xml', + ], + + # Author + 'author': 'Emipro Technologies Pvt. Ltd.', + 'website': 'http://www.emiprotechnologies.com', + + # Technical + 'installable': True, +} diff --git a/ext/3rd-party-addons/clarico_shop/controllers/__init__.py b/ext/3rd-party-addons/clarico_shop/controllers/__init__.py new file mode 100755 index 00000000..12a7e529 --- /dev/null +++ b/ext/3rd-party-addons/clarico_shop/controllers/__init__.py @@ -0,0 +1 @@ +from . import main diff --git a/ext/3rd-party-addons/clarico_shop/controllers/main.py b/ext/3rd-party-addons/clarico_shop/controllers/main.py new file mode 100755 index 00000000..f1b1d585 --- /dev/null +++ b/ext/3rd-party-addons/clarico_shop/controllers/main.py @@ -0,0 +1,308 @@ +import odoo +from odoo import http +from odoo.http import request +import json +from odoo.addons.base.ir.ir_qweb.fields import nl2br +from odoo.addons.http_routing.models.ir_http import slug +from odoo.addons.website.controllers.main import QueryURL +from odoo.exceptions import ValidationError +from odoo.addons.website_form.controllers.main import WebsiteForm +from operator import pos + +PPG = 20 # Products Per Page +PPR = 4 # Products Per Row + +class TableCompute(object): + + def __init__(self): + self.table = {} + + def _check_place(self, posx, posy, sizex, sizey): + res = True + for y in range(sizey): + for x in range(sizex): + if posx + x >= PPR: + res = False + break + row = self.table.setdefault(posy + y, {}) + if row.setdefault(posx + x) is not None: + res = False + break + for x in range(PPR): + self.table[posy + y].setdefault(x, None) + return res + + def process(self, products, ppg=PPG): + # Compute products positions on the grid + minpos = 0 + index = 0 + maxy = 0 + x = 0 + for p in products: + x = min(max(p.website_size_x, 1), PPR) + y = min(max(p.website_size_y, 1), PPR) + if index >= ppg: + x = y = 1 + + pos = minpos + while not self._check_place(pos % PPR, pos // PPR, x, y): + pos += 1 + # if 21st products (index 20) and the last line is full (PPR products in it), break + # (pos + 1.0) / PPR is the line where the product would be inserted + # maxy is the number of existing lines + # + 1.0 is because pos begins at 0, thus pos 20 is actually the 21st block + # and to force python to not round the division operation + if index >= ppg and ((pos + 1.0) // PPR) > maxy: + break + + if x == 1 and y == 1: # simple heuristic for CPU optimization + minpos = pos // PPR + + for y2 in range(y): + for x2 in range(x): + self.table[(pos // PPR) + y2][(pos % PPR) + x2] = False + self.table[pos // PPR][pos % PPR] = { + 'product': p, 'x': x, 'y': y, + 'class': " ".join(x.html_class for x in p.website_style_ids if x.html_class) + } + if index <= ppg: + maxy = max(maxy, y + (pos // PPR)) + index += 1 + + # Format table according to HTML needs + rows = sorted(self.table.items()) + rows = [r[1] for r in rows] + for col in range(len(rows)): + cols = sorted(rows[col].items()) + x += len(cols) + rows[col] = [r[1] for r in cols if r[1]] + + return rows + + # TODO keep with input type hidden + + +class WebsiteSaleForm(WebsiteForm): + + @http.route('/website_form/shop.sale.order', type='http', auth="public", methods=['POST'], website=True) + def website_form_saleorder(self, **kwargs): + model_record = request.env.ref('sale.model_sale_order') + try: + data = self.extract_data(model_record, kwargs) + except ValidationError as e: + return json.dumps({'error_fields': e.args[0]}) + + order = request.website.sale_get_order() + if data['record']: + order.write(data['record']) + + if data['custom']: + values = { + 'body': nl2br(data['custom']), + 'model': 'sale.order', + 'message_type': 'comment', + 'no_auto_thread': False, + 'res_id': order.id, + } + request.env['mail.message'].sudo().create(values) + + if data['attachments']: + self.insert_attachment(model_record, order.id, data['attachments']) + + return json.dumps({'id': order.id}) + +class claricoShop(http.Controller): + + def _get_compute_currency_and_context(self): + pricelist_context = dict(request.env.context) + pricelist = False + if not pricelist_context.get('pricelist'): + pricelist = request.website.get_current_pricelist() + pricelist_context['pricelist'] = pricelist.id + else: + pricelist = request.env['product.pricelist'].browse(pricelist_context['pricelist']) + + from_currency = request.env.user.company_id.currency_id + to_currency = pricelist.currency_id + compute_currency = lambda price: from_currency.compute(price, to_currency) + + return compute_currency, pricelist_context, pricelist + + def get_attribute_value_ids(self, product): + product = product.with_context(quantity=1) + + visible_attrs_ids = product.attribute_line_ids.filtered(lambda l: len(l.value_ids) > 1).mapped('attribute_id').ids + to_currency = request.website.get_current_pricelist().currency_id + attribute_value_ids = [] + for variant in product.product_variant_ids: + if to_currency != product.currency_id: + price = variant.currency_id.compute(variant.website_public_price, to_currency) + else: + price = variant.website_public_price + visible_attribute_ids = [v.id for v in variant.attribute_value_ids if v.attribute_id.id in visible_attrs_ids] + attribute_value_ids.append([variant.id, visible_attribute_ids, variant.website_price, price]) + return attribute_value_ids + + def _get_search_order(self, post): + return 'website_published desc,%s , id desc' % post.get('order', 'website_sequence desc') + + def _get_search_domain(self, search, category, attrib_values, price_vals = {}): + domain = request.website.sale_product_domain() + if search: + for srch in search.split(" "): + domain += [ + '|', '|', '|','|', ('name', 'ilike', srch), ('description', 'ilike', srch), + ('description_sale', 'ilike', srch), ('product_variant_ids.default_code', 'ilike', srch), + ('brand_ept_id.name','ilike', srch)] + + if category: + domain += [('public_categ_ids', 'child_of', int(category))] + + if price_vals : + domain += [('list_price','>=',price_vals.get('min_val')),('list_price','<=',price_vals.get('max_val'))] + + if attrib_values: + attrib = None + ids = [] + for value in attrib_values: + if value[0] == 0 : + ids.append(value[1]) + domain += [('brand_ept_id.id', 'in', ids)] + elif not attrib: + attrib = value[0] + ids.append(value[1]) + elif value[0] == attrib: + ids.append(value[1]) + else: + domain += [('attribute_line_ids.value_ids', 'in', ids)] + attrib = value[0] + ids = [value[1]] + if attrib: + domain += [('attribute_line_ids.value_ids', 'in', ids)] + return domain + + @http.route([ + '/shop', + '/shop/page/', + '/shop/category/', + '/shop/category//page/' + ], type='http', auth="public", website=True) + def shop(self, page=0, category=None, search='', ppg=False, **post): + + if 'ppg' in request.httprequest.args: + ppg = request.httprequest.args['ppg'] + if ppg: + try: + ppg = int(ppg) + except ValueError: + ppg = PPG + post["ppg"] = ppg + else: + ppg = PPG + + + attrib_list = request.httprequest.args.getlist('attrib') + attrib_values = [[int(x) for x in v.split("-")] for v in attrib_list if v] + attributes_ids = {v[0] for v in attrib_values} + attrib_set = {v[1] for v in attrib_values} + + + request.cr.execute( 'select min(list_price),max(list_price) from product_template where sale_ok=True and active=True and website_published=True') + min_max_vals = request.cr.fetchall() + min_val = min_max_vals[0][0] or 0 + if int(min_val) == 0: + min_val = 1 + max_val = min_max_vals[0][1] or 1 + + product_price_search_vals = {} + attrib_price=post.get("attrib_price",'%s-%s'%(min_val,max_val)) + product_price_search_vals.update({'min_val':attrib_price.split("-")[0],'max_val':attrib_price.split("-")[1]}) + domain = self._get_search_domain(search, category, attrib_values , product_price_search_vals) + + min_max_price='%s-%s'%(min_val,max_val) + if attrib_price == min_max_price: + attrib_price="" + # del post["attrib_price"] + + + keep = QueryURL('/shop', category=category and int(category), search=search, attrib=attrib_list, order=post.get('order')) + compute_currency, pricelist_context, pricelist = self._get_compute_currency_and_context() + + request.context = dict(request.context, pricelist=pricelist.id, partner=request.env.user.partner_id) + + url = "/shop" + if search: + post["search"] = search + if category: + category = request.env['product.public.category'].browse(int(category)) + url = "/shop/category/%s" % slug(category) + + if attrib_list: + post['attrib'] = attrib_list + + categs = request.env['product.public.category'].search([('parent_id', '=', False)]) + Product = request.env['product.template'] + + 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 + + product_count = Product.search_count(domain) + pager = request.website.pager(url=url, total=product_count, page=page, step=ppg, scope=7, url_args=post) + products = Product.search(domain, limit=ppg, offset=pager['offset'], order=self._get_search_order(post)) + products_count = Product.search_count(domain) + + ProductAttribute = request.env['product.attribute'] + if products: + attributes = ProductAttribute.search([('attribute_line_ids.product_tmpl_id', 'in', products.ids)]) + else: + attributes = ProductAttribute.browse(attributes_ids) + + values = { + 'search': search, + 'category': category, + 'attrib_values': attrib_values, + 'attrib_set': attrib_set, + 'pager': pager, + 'pricelist': pricelist, + 'products': products, + 'search_count': product_count, + 'bins': TableCompute().process(products, ppg), + 'rows': PPR, + 'categories': categs, + 'attributes': attributes, + 'compute_currency': compute_currency, + 'keep': keep, + 'parent_category_ids': parent_category_ids, + 'products_count':products_count, + + } + if category: + values['main_object'] = category + return request.render("website_sale.products", values) + + +class getProduct(http.Controller): + @http.route(['/productdata'], type='json', auth="public", website=True) + def fetchProduct(self,product_id=None, **kwargs): + if product_id : + product_record = request.env['product.template'].search([['id','=',product_id]]) + + values={ + 'product':product_record, + } + response = http.Response(template="clarico_shop.fetch-record",qcontext=values) + return response.render() + +class clricoShopLogin(http.Controller): + @http.route(['/shoplogin'], type='json', auth="public", website=True) + def wlist(self,product_id=None, **kwargs): + if request.env.user.id: + user_id = request.env['website'].search_count([['user_id.id','=',request.env.user.id]]) + if not user_id: + return {'user':False}; + return {'user':True}; \ No newline at end of file diff --git a/ext/3rd-party-addons/clarico_shop/model/__init__.py b/ext/3rd-party-addons/clarico_shop/model/__init__.py new file mode 100755 index 00000000..bed6893c --- /dev/null +++ b/ext/3rd-party-addons/clarico_shop/model/__init__.py @@ -0,0 +1,2 @@ +from . import product_label +from . import product_template diff --git a/ext/3rd-party-addons/clarico_shop/model/product_label.py b/ext/3rd-party-addons/clarico_shop/model/product_label.py new file mode 100755 index 00000000..95ceec19 --- /dev/null +++ b/ext/3rd-party-addons/clarico_shop/model/product_label.py @@ -0,0 +1,8 @@ +from openerp import models, fields, api + +class product_label(models.Model): + _name="product.label" + _rec_name="lname" + + lname=fields.Char("Name") + diff --git a/ext/3rd-party-addons/clarico_shop/model/product_template.py b/ext/3rd-party-addons/clarico_shop/model/product_template.py new file mode 100755 index 00000000..27d250cf --- /dev/null +++ b/ext/3rd-party-addons/clarico_shop/model/product_template.py @@ -0,0 +1,7 @@ +from odoo import api, fields, models + +class product_template(models.Model): + _inherit = ["product.template"] + + label_ept_id=fields.Many2one("product.label","Sale Label",ondelete='cascade') + diff --git a/ext/3rd-party-addons/clarico_shop/security/ir.model.access.csv b/ext/3rd-party-addons/clarico_shop/security/ir.model.access.csv new file mode 100755 index 00000000..04d36168 --- /dev/null +++ b/ext/3rd-party-addons/clarico_shop/security/ir.model.access.csv @@ -0,0 +1,3 @@ +id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink +access_s_product_label,product.label,model_product_label,sales_team.group_sale_manager,1,0,0,0 +access_product_label,product.label,model_product_label,,1,0,0,0 \ No newline at end of file diff --git a/ext/3rd-party-addons/clarico_shop/static/description/icon.png b/ext/3rd-party-addons/clarico_shop/static/description/icon.png new file mode 100755 index 00000000..09fd34ab Binary files /dev/null and b/ext/3rd-party-addons/clarico_shop/static/description/icon.png differ diff --git a/ext/3rd-party-addons/clarico_shop/static/src/img/product_not.jpg b/ext/3rd-party-addons/clarico_shop/static/src/img/product_not.jpg new file mode 100755 index 00000000..2e2d40b1 Binary files /dev/null and b/ext/3rd-party-addons/clarico_shop/static/src/img/product_not.jpg differ diff --git a/ext/3rd-party-addons/clarico_shop/static/src/img/shop.jpeg b/ext/3rd-party-addons/clarico_shop/static/src/img/shop.jpeg new file mode 100755 index 00000000..47bc59f2 Binary files /dev/null and b/ext/3rd-party-addons/clarico_shop/static/src/img/shop.jpeg differ diff --git a/ext/3rd-party-addons/clarico_shop/static/src/js/clarico_shop.js b/ext/3rd-party-addons/clarico_shop/static/src/js/clarico_shop.js new file mode 100755 index 00000000..66020bd6 --- /dev/null +++ b/ext/3rd-party-addons/clarico_shop/static/src/js/clarico_shop.js @@ -0,0 +1,206 @@ +$(document).ready(function(){ + //Hover on product + if ($(window).width() > 1000) { + $(".itemscope-main").mouseenter(function(){ + $(this).children(".product-des").css("display", "block"); + $(this).children(".oe_product_image").css({"opacity":"0.2","transition":"1s"}); + $(this).children(".product-des").addClass("right-animation"); + }); + $(".itemscope-main").mouseleave(function(){ + $(this).children(".product-des").css("display", "none"); + $(this).children(".oe_product_image").css("opacity","1"); + $(this).children(".product-des").removeClass("right-animation").css('transition','2s'); + }); + + } + + // for show tab + var p_c=$(".p_Count").attr("data-id"); + if(p_c<20) + { + $(".filter-show").addClass("show_inactive") + } + $(".ppg_show").click(function() + { + var show_ppg=$(this).attr("data-id"); + var url =document.URL + if((url.indexOf("ppg=16") >= 0)) + { + var url = url.replace("ppg=16", ""); + } + else if((url.indexOf("ppg=20") >= 0)) + { + var url = url.replace("ppg=20", ""); + } + if (url.indexOf('?') == -1) + window.location.href = url+"?ppg="+show_ppg; + if (!(url.indexOf('?') == -1)) + window.location.href = url+"&ppg="+show_ppg; + }); + + //Push toggle for filter option + $('.menu-filter').click(function(){ + $("#products_grid_before").css({"width":"300px","transition":"0.5s"}); + $("#wrapwrap").css({"margin-left":"300px","transition":"0.5s"}); + $('body').css("overflow-x","hidden"); + $(".main-header-maxW").addClass("transparent"); + $('.header_btn_style').css('opacity','0.1 !important'); + }); + $('.mobile-view-filter-close-btn').click(function(){ + $("#products_grid_before").css({"width":"0px","transition":"0.5s"}); + $("#wrapwrap").css({"margin-left":"0px","transition":"0.5s"}); + $(".main-header-maxW").removeClass("transparent"); + $('.header_btn_style').css('opacity','1'); + }); + + // Breadcrumb in category page + $( ".all-category-div ul li" ).each(function() { + var current_li= $(this); + if ( current_li.hasClass( "active" ) ) { + /*var c = current_li.find("a:first-child");*/ + var c = current_li.find("a"); + if(c.html() == "All Products"){ + $(".select-nevigation-home").html("Home"); + } + else{ + $(".select-nevigation-home").html("Home"); + $(".select-nevigation-span").html("/"); + $(".select-nevigation-child").html(c.html()); + } + } + }); + + /* changing the sequence of clikcked checkbox of attribute to first level*/ + $("form.js_attributes input:checked").each(function(){ + var self=$(this) + var curr_parent=self.parent(); + var curr_att=curr_parent.find("label"); + var curr_main_parent = $(curr_att).closest("ul"); + var first_li = $(curr_main_parent).find("li").first(); + + + //Move li + var curr_att_li = $(curr_att).closest( "li" ); + $(first_li).before(curr_att_li); + + //For color selection + var self_color=$(curr_parent).closest("div").parents().first(); + var self_main_div = $(self_color).closest("div").parents().eq(0).closest("div").find("div").first(); + + $(self_main_div).before(self_color); + }); + + // Show clear all link when any attribute is selected + var $new_class_variant = $(".clear-all-variant") + if($new_class_variant){ + $(".clear-all-variant").click(function(){ + var self=$(this) + var curent_div = $(self).next("div"); + + $(curent_div).find("input:checked").each(function(){ + $(this).removeAttr("checked"); + }); + $("form.js_attributes input").closest("form").submit(); + }); + } + //Stick Filter view section + var login_class = $('#oe_main_menu_navbar'); + var login_class_height = login_class.height(); + var navBox = $('.navbar-top-collapse').height(); + var total_height = login_class_height + navBox; + + if(login_class) + { + $rightBox = $('.view-as'); + //var navPos = parseInt($rightBox.offset().top); + var navPos; + $(window).scroll(function() { + var scrollPos = $(this).scrollTop(); + if (scrollPos >= navPos) { + $('.view-as').css("top", + total_height); + $('.view-as').css("padding-top","20px"); + $('.view-as').addClass("filter-stick"); + } + else { + $('.view-as').removeClass("filter-stick"); + $('.view-as-maxW').css("padding-top","6px"); + } + }); + } +}); + +/* on clicking at any portion of document the filter section will be closed*/ +$(document).mouseup(function (e){ + var container = $("#products_grid_before"); + if (!container.is(e.target) && container.has(e.target).length === 0){ + if( $("#products_grid_before").css('width') == '300px' || $("#products_grid_before").css('width') == '250px') { + $("#products_grid_before").css({"width":"0px","transition":"0.5s"}); + $("#wrapwrap").css({"margin-left":"0px","transition":"0.5s"}); + $(".main-header-maxW").removeClass("transparent"); + $('.header_btn_style').css('opacity','1'); + } + } +}); + +/* Odoo Base js for replacing category collapsable icon from '>' to '+'*/ +odoo.define('website_sale.website_sale_category', function (require) { + "use strict"; + + var base = require('web_editor.base'); + + if(!$('#o_shop_collapse_category').length) { + return $.Deferred().reject("DOM doesn't contain '#o_shop_collapse_category'"); + } + + $('#o_shop_collapse_category').on('click', '.fa-plus',function(){ + $(this).parent().siblings().find('.fa-minus:first').click(); + $(this).parents('li').find('ul:first').show('normal'); + $(this).toggleClass('fa-minus fa-plus'); + }); + + $('#o_shop_collapse_category').on('click', '.fa-minus',function(){ + $(this).parent().find('ul:first').hide('normal'); + $(this).toggleClass('fa-minus fa-plus'); + }); +}); + +// Show clear all link when any attribute is selected on load +$(window).load(function(){ + $("form.js_attributes input:checked").each(function(){ + var self=$(this) + var curr_parent=self.parent(); + var curr_att=curr_parent.find("label"); + var curr_main_parent = $(curr_att).closest("li").parents().eq(1).find('a.clear-all-variant');; + + //For Checkbox + var first_li = $(curr_main_parent).find("a.clear-all-variant"); + + //For Color + var self_color = $(curr_parent).closest("div").parents().eq(2).find('a.clear-all-variant'); + first_li.css("display","block"); + self_color.css("display","block"); + }); + + //hide view filter option in list, left and right sidebar + $(".main_listid").parent().find(".main_list").find(".apply-filter").addClass("filter_none"); + $(".main_left_grid").parent().find(".main_left").find(".apply-filter").addClass("filter_none"); + $(".main_right_grid").parent().find(".main_right").find(".apply-filter").addClass("filter_none"); +}); + +//Added Custom Scrollbar Js +if($(window).width() > 1000) +{ + var script=document.createElement('script'); + script.type='text/javascript'; + script.src="/clarico_shop/static/src/js/jquery.mCustomScrollbar.concat.min.js"; + $("head").append(script); +} + + + + + + + + + diff --git a/ext/3rd-party-addons/clarico_shop/static/src/js/clarico_shop_json.js b/ext/3rd-party-addons/clarico_shop/static/src/js/clarico_shop_json.js new file mode 100755 index 00000000..73b4391c --- /dev/null +++ b/ext/3rd-party-addons/clarico_shop/static/src/js/clarico_shop_json.js @@ -0,0 +1,24 @@ +odoo.define('clarico_shop.stick', function(require) { + "use strict"; + + require('web.dom_ready'); + var ajax = require('web.ajax'); + + $(".quick-view-a").click(function(){ + $(".view-popup-main-div").css("display","block"); + + var pid = $(this).attr('data-id'); + ajax.jsonRpc('/productdata', 'call', {'product_id':pid}).then(function(data) { + $(".view-popup-sub-div").html(data) + + }); + $(document).on( 'keydown', function(e){ + if(e.keyCode === 27) { + $(".view-popup-main-div").css("display","none"); + } + }); + + + }); +}) + diff --git a/ext/3rd-party-addons/clarico_shop/static/src/js/jquery.mCustomScrollbar.concat.min.js b/ext/3rd-party-addons/clarico_shop/static/src/js/jquery.mCustomScrollbar.concat.min.js new file mode 100755 index 00000000..61180865 --- /dev/null +++ b/ext/3rd-party-addons/clarico_shop/static/src/js/jquery.mCustomScrollbar.concat.min.js @@ -0,0 +1,5 @@ +/* == jquery mousewheel plugin == Version: 3.1.13, License: MIT License (MIT) */ +!function(a){"function"==typeof define&&define.amd?define(["jquery"],a):"object"==typeof exports?module.exports=a:a(jQuery)}(function(a){function b(b){var g=b||window.event,h=i.call(arguments,1),j=0,l=0,m=0,n=0,o=0,p=0;if(b=a.event.fix(g),b.type="mousewheel","detail"in g&&(m=-1*g.detail),"wheelDelta"in g&&(m=g.wheelDelta),"wheelDeltaY"in g&&(m=g.wheelDeltaY),"wheelDeltaX"in g&&(l=-1*g.wheelDeltaX),"axis"in g&&g.axis===g.HORIZONTAL_AXIS&&(l=-1*m,m=0),j=0===m?l:m,"deltaY"in g&&(m=-1*g.deltaY,j=m),"deltaX"in g&&(l=g.deltaX,0===m&&(j=-1*l)),0!==m||0!==l){if(1===g.deltaMode){var q=a.data(this,"mousewheel-line-height");j*=q,m*=q,l*=q}else if(2===g.deltaMode){var r=a.data(this,"mousewheel-page-height");j*=r,m*=r,l*=r}if(n=Math.max(Math.abs(m),Math.abs(l)),(!f||f>n)&&(f=n,d(g,n)&&(f/=40)),d(g,n)&&(j/=40,l/=40,m/=40),j=Math[j>=1?"floor":"ceil"](j/f),l=Math[l>=1?"floor":"ceil"](l/f),m=Math[m>=1?"floor":"ceil"](m/f),k.settings.normalizeOffset&&this.getBoundingClientRect){var s=this.getBoundingClientRect();o=b.clientX-s.left,p=b.clientY-s.top}return b.deltaX=l,b.deltaY=m,b.deltaFactor=f,b.offsetX=o,b.offsetY=p,b.deltaMode=0,h.unshift(b,j,l,m),e&&clearTimeout(e),e=setTimeout(c,200),(a.event.dispatch||a.event.handle).apply(this,h)}}function c(){f=null}function d(a,b){return k.settings.adjustOldDeltas&&"mousewheel"===a.type&&b%120===0}var e,f,g=["wheel","mousewheel","DOMMouseScroll","MozMousePixelScroll"],h="onwheel"in document||document.documentMode>=9?["wheel"]:["mousewheel","DomMouseScroll","MozMousePixelScroll"],i=Array.prototype.slice;if(a.event.fixHooks)for(var j=g.length;j;)a.event.fixHooks[g[--j]]=a.event.mouseHooks;var k=a.event.special.mousewheel={version:"3.1.12",setup:function(){if(this.addEventListener)for(var c=h.length;c;)this.addEventListener(h[--c],b,!1);else this.onmousewheel=b;a.data(this,"mousewheel-line-height",k.getLineHeight(this)),a.data(this,"mousewheel-page-height",k.getPageHeight(this))},teardown:function(){if(this.removeEventListener)for(var c=h.length;c;)this.removeEventListener(h[--c],b,!1);else this.onmousewheel=null;a.removeData(this,"mousewheel-line-height"),a.removeData(this,"mousewheel-page-height")},getLineHeight:function(b){var c=a(b),d=c["offsetParent"in a.fn?"offsetParent":"parent"]();return d.length||(d=a("body")),parseInt(d.css("fontSize"),10)||parseInt(c.css("fontSize"),10)||16},getPageHeight:function(b){return a(b).height()},settings:{adjustOldDeltas:!0,normalizeOffset:!0}};a.fn.extend({mousewheel:function(a){return a?this.bind("mousewheel",a):this.trigger("mousewheel")},unmousewheel:function(a){return this.unbind("mousewheel",a)}})});!function(a){"function"==typeof define&&define.amd?define(["jquery"],a):"object"==typeof exports?module.exports=a:a(jQuery)}(function(a){function b(b){var g=b||window.event,h=i.call(arguments,1),j=0,l=0,m=0,n=0,o=0,p=0;if(b=a.event.fix(g),b.type="mousewheel","detail"in g&&(m=-1*g.detail),"wheelDelta"in g&&(m=g.wheelDelta),"wheelDeltaY"in g&&(m=g.wheelDeltaY),"wheelDeltaX"in g&&(l=-1*g.wheelDeltaX),"axis"in g&&g.axis===g.HORIZONTAL_AXIS&&(l=-1*m,m=0),j=0===m?l:m,"deltaY"in g&&(m=-1*g.deltaY,j=m),"deltaX"in g&&(l=g.deltaX,0===m&&(j=-1*l)),0!==m||0!==l){if(1===g.deltaMode){var q=a.data(this,"mousewheel-line-height");j*=q,m*=q,l*=q}else if(2===g.deltaMode){var r=a.data(this,"mousewheel-page-height");j*=r,m*=r,l*=r}if(n=Math.max(Math.abs(m),Math.abs(l)),(!f||f>n)&&(f=n,d(g,n)&&(f/=40)),d(g,n)&&(j/=40,l/=40,m/=40),j=Math[j>=1?"floor":"ceil"](j/f),l=Math[l>=1?"floor":"ceil"](l/f),m=Math[m>=1?"floor":"ceil"](m/f),k.settings.normalizeOffset&&this.getBoundingClientRect){var s=this.getBoundingClientRect();o=b.clientX-s.left,p=b.clientY-s.top}return b.deltaX=l,b.deltaY=m,b.deltaFactor=f,b.offsetX=o,b.offsetY=p,b.deltaMode=0,h.unshift(b,j,l,m),e&&clearTimeout(e),e=setTimeout(c,200),(a.event.dispatch||a.event.handle).apply(this,h)}}function c(){f=null}function d(a,b){return k.settings.adjustOldDeltas&&"mousewheel"===a.type&&b%120===0}var e,f,g=["wheel","mousewheel","DOMMouseScroll","MozMousePixelScroll"],h="onwheel"in document||document.documentMode>=9?["wheel"]:["mousewheel","DomMouseScroll","MozMousePixelScroll"],i=Array.prototype.slice;if(a.event.fixHooks)for(var j=g.length;j;)a.event.fixHooks[g[--j]]=a.event.mouseHooks;var k=a.event.special.mousewheel={version:"3.1.12",setup:function(){if(this.addEventListener)for(var c=h.length;c;)this.addEventListener(h[--c],b,!1);else this.onmousewheel=b;a.data(this,"mousewheel-line-height",k.getLineHeight(this)),a.data(this,"mousewheel-page-height",k.getPageHeight(this))},teardown:function(){if(this.removeEventListener)for(var c=h.length;c;)this.removeEventListener(h[--c],b,!1);else this.onmousewheel=null;a.removeData(this,"mousewheel-line-height"),a.removeData(this,"mousewheel-page-height")},getLineHeight:function(b){var c=a(b),d=c["offsetParent"in a.fn?"offsetParent":"parent"]();return d.length||(d=a("body")),parseInt(d.css("fontSize"),10)||parseInt(c.css("fontSize"),10)||16},getPageHeight:function(b){return a(b).height()},settings:{adjustOldDeltas:!0,normalizeOffset:!0}};a.fn.extend({mousewheel:function(a){return a?this.bind("mousewheel",a):this.trigger("mousewheel")},unmousewheel:function(a){return this.unbind("mousewheel",a)}})}); +/* == malihu jquery custom scrollbar plugin == Version: 3.1.5, License: MIT License (MIT) */ +!function(e){"function"==typeof define&&define.amd?define(["jquery"],e):"undefined"!=typeof module&&module.exports?module.exports=e:e(jQuery,window,document)}(function(e){!function(t){var o="function"==typeof define&&define.amd,a="undefined"!=typeof module&&module.exports,n="https:"==document.location.protocol?"https:":"http:",i="cdnjs.cloudflare.com/ajax/libs/jquery-mousewheel/3.1.13/jquery.mousewheel.min.js";o||(a?require("jquery-mousewheel")(e):e.event.special.mousewheel||e("head").append(decodeURI("%3Cscript src="+n+"//"+i+"%3E%3C/script%3E"))),t()}(function(){var t,o="mCustomScrollbar",a="mCS",n=".mCustomScrollbar",i={setTop:0,setLeft:0,axis:"y",scrollbarPosition:"inside",scrollInertia:950,autoDraggerLength:!0,alwaysShowScrollbar:0,snapOffset:0,mouseWheel:{enable:!0,scrollAmount:"auto",axis:"y",deltaFactor:"auto",disableOver:["select","option","keygen","datalist","textarea"]},scrollButtons:{scrollType:"stepless",scrollAmount:"auto"},keyboard:{enable:!0,scrollType:"stepless",scrollAmount:"auto"},contentTouchScroll:25,documentTouchScroll:!0,advanced:{autoScrollOnFocus:"input,textarea,select,button,datalist,keygen,a[tabindex],area,object,[contenteditable='true']",updateOnContentResize:!0,updateOnImageLoad:"auto",autoUpdateTimeout:60},theme:"light",callbacks:{onTotalScrollOffset:0,onTotalScrollBackOffset:0,alwaysTriggerOffsets:!0}},r=0,l={},s=window.attachEvent&&!window.addEventListener?1:0,c=!1,d=["mCSB_dragger_onDrag","mCSB_scrollTools_onDrag","mCS_img_loaded","mCS_disabled","mCS_destroyed","mCS_no_scrollbar","mCS-autoHide","mCS-dir-rtl","mCS_no_scrollbar_y","mCS_no_scrollbar_x","mCS_y_hidden","mCS_x_hidden","mCSB_draggerContainer","mCSB_buttonUp","mCSB_buttonDown","mCSB_buttonLeft","mCSB_buttonRight"],u={init:function(t){var t=e.extend(!0,{},i,t),o=f.call(this);if(t.live){var s=t.liveSelector||this.selector||n,c=e(s);if("off"===t.live)return void m(s);l[s]=setTimeout(function(){c.mCustomScrollbar(t),"once"===t.live&&c.length&&m(s)},500)}else m(s);return t.setWidth=t.set_width?t.set_width:t.setWidth,t.setHeight=t.set_height?t.set_height:t.setHeight,t.axis=t.horizontalScroll?"x":p(t.axis),t.scrollInertia=t.scrollInertia>0&&t.scrollInertia<17?17:t.scrollInertia,"object"!=typeof t.mouseWheel&&1==t.mouseWheel&&(t.mouseWheel={enable:!0,scrollAmount:"auto",axis:"y",preventDefault:!1,deltaFactor:"auto",normalizeDelta:!1,invert:!1}),t.mouseWheel.scrollAmount=t.mouseWheelPixels?t.mouseWheelPixels:t.mouseWheel.scrollAmount,t.mouseWheel.normalizeDelta=t.advanced.normalizeMouseWheelDelta?t.advanced.normalizeMouseWheelDelta:t.mouseWheel.normalizeDelta,t.scrollButtons.scrollType=g(t.scrollButtons.scrollType),h(t),e(o).each(function(){var o=e(this);if(!o.data(a)){o.data(a,{idx:++r,opt:t,scrollRatio:{y:null,x:null},overflowed:null,contentReset:{y:null,x:null},bindEvents:!1,tweenRunning:!1,sequential:{},langDir:o.css("direction"),cbOffsets:null,trigger:null,poll:{size:{o:0,n:0},img:{o:0,n:0},change:{o:0,n:0}}});var n=o.data(a),i=n.opt,l=o.data("mcs-axis"),s=o.data("mcs-scrollbar-position"),c=o.data("mcs-theme");l&&(i.axis=l),s&&(i.scrollbarPosition=s),c&&(i.theme=c,h(i)),v.call(this),n&&i.callbacks.onCreate&&"function"==typeof i.callbacks.onCreate&&i.callbacks.onCreate.call(this),e("#mCSB_"+n.idx+"_container img:not(."+d[2]+")").addClass(d[2]),u.update.call(null,o)}})},update:function(t,o){var n=t||f.call(this);return e(n).each(function(){var t=e(this);if(t.data(a)){var n=t.data(a),i=n.opt,r=e("#mCSB_"+n.idx+"_container"),l=e("#mCSB_"+n.idx),s=[e("#mCSB_"+n.idx+"_dragger_vertical"),e("#mCSB_"+n.idx+"_dragger_horizontal")];if(!r.length)return;n.tweenRunning&&Q(t),o&&n&&i.callbacks.onBeforeUpdate&&"function"==typeof i.callbacks.onBeforeUpdate&&i.callbacks.onBeforeUpdate.call(this),t.hasClass(d[3])&&t.removeClass(d[3]),t.hasClass(d[4])&&t.removeClass(d[4]),l.css("max-height","none"),l.height()!==t.height()&&l.css("max-height",t.height()),_.call(this),"y"===i.axis||i.advanced.autoExpandHorizontalScroll||r.css("width",x(r)),n.overflowed=y.call(this),M.call(this),i.autoDraggerLength&&S.call(this),b.call(this),T.call(this);var c=[Math.abs(r[0].offsetTop),Math.abs(r[0].offsetLeft)];"x"!==i.axis&&(n.overflowed[0]?s[0].height()>s[0].parent().height()?B.call(this):(G(t,c[0].toString(),{dir:"y",dur:0,overwrite:"none"}),n.contentReset.y=null):(B.call(this),"y"===i.axis?k.call(this):"yx"===i.axis&&n.overflowed[1]&&G(t,c[1].toString(),{dir:"x",dur:0,overwrite:"none"}))),"y"!==i.axis&&(n.overflowed[1]?s[1].width()>s[1].parent().width()?B.call(this):(G(t,c[1].toString(),{dir:"x",dur:0,overwrite:"none"}),n.contentReset.x=null):(B.call(this),"x"===i.axis?k.call(this):"yx"===i.axis&&n.overflowed[0]&&G(t,c[0].toString(),{dir:"y",dur:0,overwrite:"none"}))),o&&n&&(2===o&&i.callbacks.onImageLoad&&"function"==typeof i.callbacks.onImageLoad?i.callbacks.onImageLoad.call(this):3===o&&i.callbacks.onSelectorChange&&"function"==typeof i.callbacks.onSelectorChange?i.callbacks.onSelectorChange.call(this):i.callbacks.onUpdate&&"function"==typeof i.callbacks.onUpdate&&i.callbacks.onUpdate.call(this)),N.call(this)}})},scrollTo:function(t,o){if("undefined"!=typeof t&&null!=t){var n=f.call(this);return e(n).each(function(){var n=e(this);if(n.data(a)){var i=n.data(a),r=i.opt,l={trigger:"external",scrollInertia:r.scrollInertia,scrollEasing:"mcsEaseInOut",moveDragger:!1,timeout:60,callbacks:!0,onStart:!0,onUpdate:!0,onComplete:!0},s=e.extend(!0,{},l,o),c=Y.call(this,t),d=s.scrollInertia>0&&s.scrollInertia<17?17:s.scrollInertia;c[0]=X.call(this,c[0],"y"),c[1]=X.call(this,c[1],"x"),s.moveDragger&&(c[0]*=i.scrollRatio.y,c[1]*=i.scrollRatio.x),s.dur=ne()?0:d,setTimeout(function(){null!==c[0]&&"undefined"!=typeof c[0]&&"x"!==r.axis&&i.overflowed[0]&&(s.dir="y",s.overwrite="all",G(n,c[0].toString(),s)),null!==c[1]&&"undefined"!=typeof c[1]&&"y"!==r.axis&&i.overflowed[1]&&(s.dir="x",s.overwrite="none",G(n,c[1].toString(),s))},s.timeout)}})}},stop:function(){var t=f.call(this);return e(t).each(function(){var t=e(this);t.data(a)&&Q(t)})},disable:function(t){var o=f.call(this);return e(o).each(function(){var o=e(this);if(o.data(a)){o.data(a);N.call(this,"remove"),k.call(this),t&&B.call(this),M.call(this,!0),o.addClass(d[3])}})},destroy:function(){var t=f.call(this);return e(t).each(function(){var n=e(this);if(n.data(a)){var i=n.data(a),r=i.opt,l=e("#mCSB_"+i.idx),s=e("#mCSB_"+i.idx+"_container"),c=e(".mCSB_"+i.idx+"_scrollbar");r.live&&m(r.liveSelector||e(t).selector),N.call(this,"remove"),k.call(this),B.call(this),n.removeData(a),$(this,"mcs"),c.remove(),s.find("img."+d[2]).removeClass(d[2]),l.replaceWith(s.contents()),n.removeClass(o+" _"+a+"_"+i.idx+" "+d[6]+" "+d[7]+" "+d[5]+" "+d[3]).addClass(d[4])}})}},f=function(){return"object"!=typeof e(this)||e(this).length<1?n:this},h=function(t){var o=["rounded","rounded-dark","rounded-dots","rounded-dots-dark"],a=["rounded-dots","rounded-dots-dark","3d","3d-dark","3d-thick","3d-thick-dark","inset","inset-dark","inset-2","inset-2-dark","inset-3","inset-3-dark"],n=["minimal","minimal-dark"],i=["minimal","minimal-dark"],r=["minimal","minimal-dark"];t.autoDraggerLength=e.inArray(t.theme,o)>-1?!1:t.autoDraggerLength,t.autoExpandScrollbar=e.inArray(t.theme,a)>-1?!1:t.autoExpandScrollbar,t.scrollButtons.enable=e.inArray(t.theme,n)>-1?!1:t.scrollButtons.enable,t.autoHideScrollbar=e.inArray(t.theme,i)>-1?!0:t.autoHideScrollbar,t.scrollbarPosition=e.inArray(t.theme,r)>-1?"outside":t.scrollbarPosition},m=function(e){l[e]&&(clearTimeout(l[e]),$(l,e))},p=function(e){return"yx"===e||"xy"===e||"auto"===e?"yx":"x"===e||"horizontal"===e?"x":"y"},g=function(e){return"stepped"===e||"pixels"===e||"step"===e||"click"===e?"stepped":"stepless"},v=function(){var t=e(this),n=t.data(a),i=n.opt,r=i.autoExpandScrollbar?" "+d[1]+"_expand":"",l=["
    ","
    "],s="yx"===i.axis?"mCSB_vertical_horizontal":"x"===i.axis?"mCSB_horizontal":"mCSB_vertical",c="yx"===i.axis?l[0]+l[1]:"x"===i.axis?l[1]:l[0],u="yx"===i.axis?"
    ":"",f=i.autoHideScrollbar?" "+d[6]:"",h="x"!==i.axis&&"rtl"===n.langDir?" "+d[7]:"";i.setWidth&&t.css("width",i.setWidth),i.setHeight&&t.css("height",i.setHeight),i.setLeft="y"!==i.axis&&"rtl"===n.langDir?"989999px":i.setLeft,t.addClass(o+" _"+a+"_"+n.idx+f+h).wrapInner("
    ");var m=e("#mCSB_"+n.idx),p=e("#mCSB_"+n.idx+"_container");"y"===i.axis||i.advanced.autoExpandHorizontalScroll||p.css("width",x(p)),"outside"===i.scrollbarPosition?("static"===t.css("position")&&t.css("position","relative"),t.css("overflow","visible"),m.addClass("mCSB_outside").after(c)):(m.addClass("mCSB_inside").append(c),p.wrap(u)),w.call(this);var g=[e("#mCSB_"+n.idx+"_dragger_vertical"),e("#mCSB_"+n.idx+"_dragger_horizontal")];g[0].css("min-height",g[0].height()),g[1].css("min-width",g[1].width())},x=function(t){var o=[t[0].scrollWidth,Math.max.apply(Math,t.children().map(function(){return e(this).outerWidth(!0)}).get())],a=t.parent().width();return o[0]>a?o[0]:o[1]>a?o[1]:"100%"},_=function(){var t=e(this),o=t.data(a),n=o.opt,i=e("#mCSB_"+o.idx+"_container");if(n.advanced.autoExpandHorizontalScroll&&"y"!==n.axis){i.css({width:"auto","min-width":0,"overflow-x":"scroll"});var r=Math.ceil(i[0].scrollWidth);3===n.advanced.autoExpandHorizontalScroll||2!==n.advanced.autoExpandHorizontalScroll&&r>i.parent().width()?i.css({width:r,"min-width":"100%","overflow-x":"inherit"}):i.css({"overflow-x":"inherit",position:"absolute"}).wrap("
    ").css({width:Math.ceil(i[0].getBoundingClientRect().right+.4)-Math.floor(i[0].getBoundingClientRect().left),"min-width":"100%",position:"relative"}).unwrap()}},w=function(){var t=e(this),o=t.data(a),n=o.opt,i=e(".mCSB_"+o.idx+"_scrollbar:first"),r=oe(n.scrollButtons.tabindex)?"tabindex='"+n.scrollButtons.tabindex+"'":"",l=["","","",""],s=["x"===n.axis?l[2]:l[0],"x"===n.axis?l[3]:l[1],l[2],l[3]];n.scrollButtons.enable&&i.prepend(s[0]).append(s[1]).next(".mCSB_scrollTools").prepend(s[2]).append(s[3])},S=function(){var t=e(this),o=t.data(a),n=e("#mCSB_"+o.idx),i=e("#mCSB_"+o.idx+"_container"),r=[e("#mCSB_"+o.idx+"_dragger_vertical"),e("#mCSB_"+o.idx+"_dragger_horizontal")],l=[n.height()/i.outerHeight(!1),n.width()/i.outerWidth(!1)],c=[parseInt(r[0].css("min-height")),Math.round(l[0]*r[0].parent().height()),parseInt(r[1].css("min-width")),Math.round(l[1]*r[1].parent().width())],d=s&&c[1]r&&(r=s),c>l&&(l=c),[r>n.height(),l>n.width()]},B=function(){var t=e(this),o=t.data(a),n=o.opt,i=e("#mCSB_"+o.idx),r=e("#mCSB_"+o.idx+"_container"),l=[e("#mCSB_"+o.idx+"_dragger_vertical"),e("#mCSB_"+o.idx+"_dragger_horizontal")];if(Q(t),("x"!==n.axis&&!o.overflowed[0]||"y"===n.axis&&o.overflowed[0])&&(l[0].add(r).css("top",0),G(t,"_resetY")),"y"!==n.axis&&!o.overflowed[1]||"x"===n.axis&&o.overflowed[1]){var s=dx=0;"rtl"===o.langDir&&(s=i.width()-r.outerWidth(!1),dx=Math.abs(s/o.scrollRatio.x)),r.css("left",s),l[1].css("left",dx),G(t,"_resetX")}},T=function(){function t(){r=setTimeout(function(){e.event.special.mousewheel?(clearTimeout(r),W.call(o[0])):t()},100)}var o=e(this),n=o.data(a),i=n.opt;if(!n.bindEvents){if(I.call(this),i.contentTouchScroll&&D.call(this),E.call(this),i.mouseWheel.enable){var r;t()}P.call(this),U.call(this),i.advanced.autoScrollOnFocus&&H.call(this),i.scrollButtons.enable&&F.call(this),i.keyboard.enable&&q.call(this),n.bindEvents=!0}},k=function(){var t=e(this),o=t.data(a),n=o.opt,i=a+"_"+o.idx,r=".mCSB_"+o.idx+"_scrollbar",l=e("#mCSB_"+o.idx+",#mCSB_"+o.idx+"_container,#mCSB_"+o.idx+"_container_wrapper,"+r+" ."+d[12]+",#mCSB_"+o.idx+"_dragger_vertical,#mCSB_"+o.idx+"_dragger_horizontal,"+r+">a"),s=e("#mCSB_"+o.idx+"_container");n.advanced.releaseDraggableSelectors&&l.add(e(n.advanced.releaseDraggableSelectors)),n.advanced.extraDraggableSelectors&&l.add(e(n.advanced.extraDraggableSelectors)),o.bindEvents&&(e(document).add(e(!A()||top.document)).unbind("."+i),l.each(function(){e(this).unbind("."+i)}),clearTimeout(t[0]._focusTimeout),$(t[0],"_focusTimeout"),clearTimeout(o.sequential.step),$(o.sequential,"step"),clearTimeout(s[0].onCompleteTimeout),$(s[0],"onCompleteTimeout"),o.bindEvents=!1)},M=function(t){var o=e(this),n=o.data(a),i=n.opt,r=e("#mCSB_"+n.idx+"_container_wrapper"),l=r.length?r:e("#mCSB_"+n.idx+"_container"),s=[e("#mCSB_"+n.idx+"_scrollbar_vertical"),e("#mCSB_"+n.idx+"_scrollbar_horizontal")],c=[s[0].find(".mCSB_dragger"),s[1].find(".mCSB_dragger")];"x"!==i.axis&&(n.overflowed[0]&&!t?(s[0].add(c[0]).add(s[0].children("a")).css("display","block"),l.removeClass(d[8]+" "+d[10])):(i.alwaysShowScrollbar?(2!==i.alwaysShowScrollbar&&c[0].css("display","none"),l.removeClass(d[10])):(s[0].css("display","none"),l.addClass(d[10])),l.addClass(d[8]))),"y"!==i.axis&&(n.overflowed[1]&&!t?(s[1].add(c[1]).add(s[1].children("a")).css("display","block"),l.removeClass(d[9]+" "+d[11])):(i.alwaysShowScrollbar?(2!==i.alwaysShowScrollbar&&c[1].css("display","none"),l.removeClass(d[11])):(s[1].css("display","none"),l.addClass(d[11])),l.addClass(d[9]))),n.overflowed[0]||n.overflowed[1]?o.removeClass(d[5]):o.addClass(d[5])},O=function(t){var o=t.type,a=t.target.ownerDocument!==document&&null!==frameElement?[e(frameElement).offset().top,e(frameElement).offset().left]:null,n=A()&&t.target.ownerDocument!==top.document&&null!==frameElement?[e(t.view.frameElement).offset().top,e(t.view.frameElement).offset().left]:[0,0];switch(o){case"pointerdown":case"MSPointerDown":case"pointermove":case"MSPointerMove":case"pointerup":case"MSPointerUp":return a?[t.originalEvent.pageY-a[0]+n[0],t.originalEvent.pageX-a[1]+n[1],!1]:[t.originalEvent.pageY,t.originalEvent.pageX,!1];case"touchstart":case"touchmove":case"touchend":var i=t.originalEvent.touches[0]||t.originalEvent.changedTouches[0],r=t.originalEvent.touches.length||t.originalEvent.changedTouches.length;return t.target.ownerDocument!==document?[i.screenY,i.screenX,r>1]:[i.pageY,i.pageX,r>1];default:return a?[t.pageY-a[0]+n[0],t.pageX-a[1]+n[1],!1]:[t.pageY,t.pageX,!1]}},I=function(){function t(e,t,a,n){if(h[0].idleTimer=d.scrollInertia<233?250:0,o.attr("id")===f[1])var i="x",s=(o[0].offsetLeft-t+n)*l.scrollRatio.x;else var i="y",s=(o[0].offsetTop-e+a)*l.scrollRatio.y;G(r,s.toString(),{dir:i,drag:!0})}var o,n,i,r=e(this),l=r.data(a),d=l.opt,u=a+"_"+l.idx,f=["mCSB_"+l.idx+"_dragger_vertical","mCSB_"+l.idx+"_dragger_horizontal"],h=e("#mCSB_"+l.idx+"_container"),m=e("#"+f[0]+",#"+f[1]),p=d.advanced.releaseDraggableSelectors?m.add(e(d.advanced.releaseDraggableSelectors)):m,g=d.advanced.extraDraggableSelectors?e(!A()||top.document).add(e(d.advanced.extraDraggableSelectors)):e(!A()||top.document);m.bind("contextmenu."+u,function(e){e.preventDefault()}).bind("mousedown."+u+" touchstart."+u+" pointerdown."+u+" MSPointerDown."+u,function(t){if(t.stopImmediatePropagation(),t.preventDefault(),ee(t)){c=!0,s&&(document.onselectstart=function(){return!1}),L.call(h,!1),Q(r),o=e(this);var a=o.offset(),l=O(t)[0]-a.top,u=O(t)[1]-a.left,f=o.height()+a.top,m=o.width()+a.left;f>l&&l>0&&m>u&&u>0&&(n=l,i=u),C(o,"active",d.autoExpandScrollbar)}}).bind("touchmove."+u,function(e){e.stopImmediatePropagation(),e.preventDefault();var a=o.offset(),r=O(e)[0]-a.top,l=O(e)[1]-a.left;t(n,i,r,l)}),e(document).add(g).bind("mousemove."+u+" pointermove."+u+" MSPointerMove."+u,function(e){if(o){var a=o.offset(),r=O(e)[0]-a.top,l=O(e)[1]-a.left;if(n===r&&i===l)return;t(n,i,r,l)}}).add(p).bind("mouseup."+u+" touchend."+u+" pointerup."+u+" MSPointerUp."+u,function(){o&&(C(o,"active",d.autoExpandScrollbar),o=null),c=!1,s&&(document.onselectstart=null),L.call(h,!0)})},D=function(){function o(e){if(!te(e)||c||O(e)[2])return void(t=0);t=1,b=0,C=0,d=1,y.removeClass("mCS_touch_action");var o=I.offset();u=O(e)[0]-o.top,f=O(e)[1]-o.left,z=[O(e)[0],O(e)[1]]}function n(e){if(te(e)&&!c&&!O(e)[2]&&(T.documentTouchScroll||e.preventDefault(),e.stopImmediatePropagation(),(!C||b)&&d)){g=K();var t=M.offset(),o=O(e)[0]-t.top,a=O(e)[1]-t.left,n="mcsLinearOut";if(E.push(o),W.push(a),z[2]=Math.abs(O(e)[0]-z[0]),z[3]=Math.abs(O(e)[1]-z[1]),B.overflowed[0])var i=D[0].parent().height()-D[0].height(),r=u-o>0&&o-u>-(i*B.scrollRatio.y)&&(2*z[3]0&&a-f>-(l*B.scrollRatio.x)&&(2*z[2]30)){_=1e3/(v-p);var n="mcsEaseOut",i=2.5>_,r=i?[E[E.length-2],W[W.length-2]]:[0,0];x=i?[o-r[0],a-r[1]]:[o-h,a-m];var u=[Math.abs(x[0]),Math.abs(x[1])];_=i?[Math.abs(x[0]/4),Math.abs(x[1]/4)]:[_,_];var f=[Math.abs(I[0].offsetTop)-x[0]*l(u[0]/_[0],_[0]),Math.abs(I[0].offsetLeft)-x[1]*l(u[1]/_[1],_[1])];w="yx"===T.axis?[f[0],f[1]]:"x"===T.axis?[null,f[1]]:[f[0],null],S=[4*u[0]+T.scrollInertia,4*u[1]+T.scrollInertia];var y=parseInt(T.contentTouchScroll)||0;w[0]=u[0]>y?w[0]:0,w[1]=u[1]>y?w[1]:0,B.overflowed[0]&&s(w[0],S[0],n,"y",L,!1),B.overflowed[1]&&s(w[1],S[1],n,"x",L,!1)}}}function l(e,t){var o=[1.5*t,2*t,t/1.5,t/2];return e>90?t>4?o[0]:o[3]:e>60?t>3?o[3]:o[2]:e>30?t>8?o[1]:t>6?o[0]:t>4?t:o[2]:t>8?t:o[3]}function s(e,t,o,a,n,i){e&&G(y,e.toString(),{dur:t,scrollEasing:o,dir:a,overwrite:n,drag:i})}var d,u,f,h,m,p,g,v,x,_,w,S,b,C,y=e(this),B=y.data(a),T=B.opt,k=a+"_"+B.idx,M=e("#mCSB_"+B.idx),I=e("#mCSB_"+B.idx+"_container"),D=[e("#mCSB_"+B.idx+"_dragger_vertical"),e("#mCSB_"+B.idx+"_dragger_horizontal")],E=[],W=[],R=0,L="yx"===T.axis?"none":"all",z=[],P=I.find("iframe"),H=["touchstart."+k+" pointerdown."+k+" MSPointerDown."+k,"touchmove."+k+" pointermove."+k+" MSPointerMove."+k,"touchend."+k+" pointerup."+k+" MSPointerUp."+k],U=void 0!==document.body.style.touchAction&&""!==document.body.style.touchAction;I.bind(H[0],function(e){o(e)}).bind(H[1],function(e){n(e)}),M.bind(H[0],function(e){i(e)}).bind(H[2],function(e){r(e)}),P.length&&P.each(function(){e(this).bind("load",function(){A(this)&&e(this.contentDocument||this.contentWindow.document).bind(H[0],function(e){o(e),i(e)}).bind(H[1],function(e){n(e)}).bind(H[2],function(e){r(e)})})})},E=function(){function o(){return window.getSelection?window.getSelection().toString():document.selection&&"Control"!=document.selection.type?document.selection.createRange().text:0}function n(e,t,o){d.type=o&&i?"stepped":"stepless",d.scrollAmount=10,j(r,e,t,"mcsLinearOut",o?60:null)}var i,r=e(this),l=r.data(a),s=l.opt,d=l.sequential,u=a+"_"+l.idx,f=e("#mCSB_"+l.idx+"_container"),h=f.parent();f.bind("mousedown."+u,function(){t||i||(i=1,c=!0)}).add(document).bind("mousemove."+u,function(e){if(!t&&i&&o()){var a=f.offset(),r=O(e)[0]-a.top+f[0].offsetTop,c=O(e)[1]-a.left+f[0].offsetLeft;r>0&&r0&&cr?n("on",38):r>h.height()&&n("on",40)),"y"!==s.axis&&l.overflowed[1]&&(0>c?n("on",37):c>h.width()&&n("on",39)))}}).bind("mouseup."+u+" dragend."+u,function(){t||(i&&(i=0,n("off",null)),c=!1)})},W=function(){function t(t,a){if(Q(o),!z(o,t.target)){var r="auto"!==i.mouseWheel.deltaFactor?parseInt(i.mouseWheel.deltaFactor):s&&t.deltaFactor<100?100:t.deltaFactor||100,d=i.scrollInertia;if("x"===i.axis||"x"===i.mouseWheel.axis)var u="x",f=[Math.round(r*n.scrollRatio.x),parseInt(i.mouseWheel.scrollAmount)],h="auto"!==i.mouseWheel.scrollAmount?f[1]:f[0]>=l.width()?.9*l.width():f[0],m=Math.abs(e("#mCSB_"+n.idx+"_container")[0].offsetLeft),p=c[1][0].offsetLeft,g=c[1].parent().width()-c[1].width(),v="y"===i.mouseWheel.axis?t.deltaY||a:t.deltaX;else var u="y",f=[Math.round(r*n.scrollRatio.y),parseInt(i.mouseWheel.scrollAmount)],h="auto"!==i.mouseWheel.scrollAmount?f[1]:f[0]>=l.height()?.9*l.height():f[0],m=Math.abs(e("#mCSB_"+n.idx+"_container")[0].offsetTop),p=c[0][0].offsetTop,g=c[0].parent().height()-c[0].height(),v=t.deltaY||a;"y"===u&&!n.overflowed[0]||"x"===u&&!n.overflowed[1]||((i.mouseWheel.invert||t.webkitDirectionInvertedFromDevice)&&(v=-v),i.mouseWheel.normalizeDelta&&(v=0>v?-1:1),(v>0&&0!==p||0>v&&p!==g||i.mouseWheel.preventDefault)&&(t.stopImmediatePropagation(),t.preventDefault()),t.deltaFactor<5&&!i.mouseWheel.normalizeDelta&&(h=t.deltaFactor,d=17),G(o,(m-v*h).toString(),{dir:u,dur:d}))}}if(e(this).data(a)){var o=e(this),n=o.data(a),i=n.opt,r=a+"_"+n.idx,l=e("#mCSB_"+n.idx),c=[e("#mCSB_"+n.idx+"_dragger_vertical"),e("#mCSB_"+n.idx+"_dragger_horizontal")],d=e("#mCSB_"+n.idx+"_container").find("iframe");d.length&&d.each(function(){e(this).bind("load",function(){A(this)&&e(this.contentDocument||this.contentWindow.document).bind("mousewheel."+r,function(e,o){t(e,o)})})}),l.bind("mousewheel."+r,function(e,o){t(e,o)})}},R=new Object,A=function(t){var o=!1,a=!1,n=null;if(void 0===t?a="#empty":void 0!==e(t).attr("id")&&(a=e(t).attr("id")),a!==!1&&void 0!==R[a])return R[a];if(t){try{var i=t.contentDocument||t.contentWindow.document;n=i.body.innerHTML}catch(r){}o=null!==n}else{try{var i=top.document;n=i.body.innerHTML}catch(r){}o=null!==n}return a!==!1&&(R[a]=o),o},L=function(e){var t=this.find("iframe");if(t.length){var o=e?"auto":"none";t.css("pointer-events",o)}},z=function(t,o){var n=o.nodeName.toLowerCase(),i=t.data(a).opt.mouseWheel.disableOver,r=["select","textarea"];return e.inArray(n,i)>-1&&!(e.inArray(n,r)>-1&&!e(o).is(":focus"))},P=function(){var t,o=e(this),n=o.data(a),i=a+"_"+n.idx,r=e("#mCSB_"+n.idx+"_container"),l=r.parent(),s=e(".mCSB_"+n.idx+"_scrollbar ."+d[12]);s.bind("mousedown."+i+" touchstart."+i+" pointerdown."+i+" MSPointerDown."+i,function(o){c=!0,e(o.target).hasClass("mCSB_dragger")||(t=1)}).bind("touchend."+i+" pointerup."+i+" MSPointerUp."+i,function(){c=!1}).bind("click."+i,function(a){if(t&&(t=0,e(a.target).hasClass(d[12])||e(a.target).hasClass("mCSB_draggerRail"))){Q(o);var i=e(this),s=i.find(".mCSB_dragger");if(i.parent(".mCSB_scrollTools_horizontal").length>0){if(!n.overflowed[1])return;var c="x",u=a.pageX>s.offset().left?-1:1,f=Math.abs(r[0].offsetLeft)-u*(.9*l.width())}else{if(!n.overflowed[0])return;var c="y",u=a.pageY>s.offset().top?-1:1,f=Math.abs(r[0].offsetTop)-u*(.9*l.height())}G(o,f.toString(),{dir:c,scrollEasing:"mcsEaseInOut"})}})},H=function(){var t=e(this),o=t.data(a),n=o.opt,i=a+"_"+o.idx,r=e("#mCSB_"+o.idx+"_container"),l=r.parent();r.bind("focusin."+i,function(){var o=e(document.activeElement),a=r.find(".mCustomScrollBox").length,i=0;o.is(n.advanced.autoScrollOnFocus)&&(Q(t),clearTimeout(t[0]._focusTimeout),t[0]._focusTimer=a?(i+17)*a:0,t[0]._focusTimeout=setTimeout(function(){var e=[ae(o)[0],ae(o)[1]],a=[r[0].offsetTop,r[0].offsetLeft],s=[a[0]+e[0]>=0&&a[0]+e[0]=0&&a[0]+e[1]a");s.bind("contextmenu."+r,function(e){e.preventDefault()}).bind("mousedown."+r+" touchstart."+r+" pointerdown."+r+" MSPointerDown."+r+" mouseup."+r+" touchend."+r+" pointerup."+r+" MSPointerUp."+r+" mouseout."+r+" pointerout."+r+" MSPointerOut."+r+" click."+r,function(a){function r(e,o){i.scrollAmount=n.scrollButtons.scrollAmount,j(t,e,o)}if(a.preventDefault(),ee(a)){var l=e(this).attr("class");switch(i.type=n.scrollButtons.scrollType,a.type){case"mousedown":case"touchstart":case"pointerdown":case"MSPointerDown":if("stepped"===i.type)return;c=!0,o.tweenRunning=!1,r("on",l);break;case"mouseup":case"touchend":case"pointerup":case"MSPointerUp":case"mouseout":case"pointerout":case"MSPointerOut":if("stepped"===i.type)return;c=!1,i.dir&&r("off",l);break;case"click":if("stepped"!==i.type||o.tweenRunning)return;r("on",l)}}})},q=function(){function t(t){function a(e,t){r.type=i.keyboard.scrollType,r.scrollAmount=i.keyboard.scrollAmount,"stepped"===r.type&&n.tweenRunning||j(o,e,t)}switch(t.type){case"blur":n.tweenRunning&&r.dir&&a("off",null);break;case"keydown":case"keyup":var l=t.keyCode?t.keyCode:t.which,s="on";if("x"!==i.axis&&(38===l||40===l)||"y"!==i.axis&&(37===l||39===l)){if((38===l||40===l)&&!n.overflowed[0]||(37===l||39===l)&&!n.overflowed[1])return;"keyup"===t.type&&(s="off"),e(document.activeElement).is(u)||(t.preventDefault(),t.stopImmediatePropagation(),a(s,l))}else if(33===l||34===l){if((n.overflowed[0]||n.overflowed[1])&&(t.preventDefault(),t.stopImmediatePropagation()),"keyup"===t.type){Q(o);var f=34===l?-1:1;if("x"===i.axis||"yx"===i.axis&&n.overflowed[1]&&!n.overflowed[0])var h="x",m=Math.abs(c[0].offsetLeft)-f*(.9*d.width());else var h="y",m=Math.abs(c[0].offsetTop)-f*(.9*d.height());G(o,m.toString(),{dir:h,scrollEasing:"mcsEaseInOut"})}}else if((35===l||36===l)&&!e(document.activeElement).is(u)&&((n.overflowed[0]||n.overflowed[1])&&(t.preventDefault(),t.stopImmediatePropagation()),"keyup"===t.type)){if("x"===i.axis||"yx"===i.axis&&n.overflowed[1]&&!n.overflowed[0])var h="x",m=35===l?Math.abs(d.width()-c.outerWidth(!1)):0;else var h="y",m=35===l?Math.abs(d.height()-c.outerHeight(!1)):0;G(o,m.toString(),{dir:h,scrollEasing:"mcsEaseInOut"})}}}var o=e(this),n=o.data(a),i=n.opt,r=n.sequential,l=a+"_"+n.idx,s=e("#mCSB_"+n.idx),c=e("#mCSB_"+n.idx+"_container"),d=c.parent(),u="input,textarea,select,datalist,keygen,[contenteditable='true']",f=c.find("iframe"),h=["blur."+l+" keydown."+l+" keyup."+l];f.length&&f.each(function(){e(this).bind("load",function(){A(this)&&e(this.contentDocument||this.contentWindow.document).bind(h[0],function(e){t(e)})})}),s.attr("tabindex","0").bind(h[0],function(e){t(e)})},j=function(t,o,n,i,r){function l(e){u.snapAmount&&(f.scrollAmount=u.snapAmount instanceof Array?"x"===f.dir[0]?u.snapAmount[1]:u.snapAmount[0]:u.snapAmount);var o="stepped"!==f.type,a=r?r:e?o?p/1.5:g:1e3/60,n=e?o?7.5:40:2.5,s=[Math.abs(h[0].offsetTop),Math.abs(h[0].offsetLeft)],d=[c.scrollRatio.y>10?10:c.scrollRatio.y,c.scrollRatio.x>10?10:c.scrollRatio.x],m="x"===f.dir[0]?s[1]+f.dir[1]*(d[1]*n):s[0]+f.dir[1]*(d[0]*n),v="x"===f.dir[0]?s[1]+f.dir[1]*parseInt(f.scrollAmount):s[0]+f.dir[1]*parseInt(f.scrollAmount),x="auto"!==f.scrollAmount?v:m,_=i?i:e?o?"mcsLinearOut":"mcsEaseInOut":"mcsLinear",w=!!e;return e&&17>a&&(x="x"===f.dir[0]?s[1]:s[0]),G(t,x.toString(),{dir:f.dir[0],scrollEasing:_,dur:a,onComplete:w}),e?void(f.dir=!1):(clearTimeout(f.step),void(f.step=setTimeout(function(){l()},a)))}function s(){clearTimeout(f.step),$(f,"step"),Q(t)}var c=t.data(a),u=c.opt,f=c.sequential,h=e("#mCSB_"+c.idx+"_container"),m="stepped"===f.type,p=u.scrollInertia<26?26:u.scrollInertia,g=u.scrollInertia<1?17:u.scrollInertia;switch(o){case"on":if(f.dir=[n===d[16]||n===d[15]||39===n||37===n?"x":"y",n===d[13]||n===d[15]||38===n||37===n?-1:1],Q(t),oe(n)&&"stepped"===f.type)return;l(m);break;case"off":s(),(m||c.tweenRunning&&f.dir)&&l(!0)}},Y=function(t){var o=e(this).data(a).opt,n=[];return"function"==typeof t&&(t=t()),t instanceof Array?n=t.length>1?[t[0],t[1]]:"x"===o.axis?[null,t[0]]:[t[0],null]:(n[0]=t.y?t.y:t.x||"x"===o.axis?null:t,n[1]=t.x?t.x:t.y||"y"===o.axis?null:t),"function"==typeof n[0]&&(n[0]=n[0]()),"function"==typeof n[1]&&(n[1]=n[1]()),n},X=function(t,o){if(null!=t&&"undefined"!=typeof t){var n=e(this),i=n.data(a),r=i.opt,l=e("#mCSB_"+i.idx+"_container"),s=l.parent(),c=typeof t;o||(o="x"===r.axis?"x":"y");var d="x"===o?l.outerWidth(!1)-s.width():l.outerHeight(!1)-s.height(),f="x"===o?l[0].offsetLeft:l[0].offsetTop,h="x"===o?"left":"top";switch(c){case"function":return t();case"object":var m=t.jquery?t:e(t);if(!m.length)return;return"x"===o?ae(m)[1]:ae(m)[0];case"string":case"number":if(oe(t))return Math.abs(t);if(-1!==t.indexOf("%"))return Math.abs(d*parseInt(t)/100);if(-1!==t.indexOf("-="))return Math.abs(f-parseInt(t.split("-=")[1]));if(-1!==t.indexOf("+=")){var p=f+parseInt(t.split("+=")[1]);return p>=0?0:Math.abs(p)}if(-1!==t.indexOf("px")&&oe(t.split("px")[0]))return Math.abs(t.split("px")[0]);if("top"===t||"left"===t)return 0;if("bottom"===t)return Math.abs(s.height()-l.outerHeight(!1));if("right"===t)return Math.abs(s.width()-l.outerWidth(!1));if("first"===t||"last"===t){var m=l.find(":"+t);return"x"===o?ae(m)[1]:ae(m)[0]}return e(t).length?"x"===o?ae(e(t))[1]:ae(e(t))[0]:(l.css(h,t),void u.update.call(null,n[0]))}}},N=function(t){function o(){return clearTimeout(f[0].autoUpdate),0===l.parents("html").length?void(l=null):void(f[0].autoUpdate=setTimeout(function(){return c.advanced.updateOnSelectorChange&&(s.poll.change.n=i(),s.poll.change.n!==s.poll.change.o)?(s.poll.change.o=s.poll.change.n,void r(3)):c.advanced.updateOnContentResize&&(s.poll.size.n=l[0].scrollHeight+l[0].scrollWidth+f[0].offsetHeight+l[0].offsetHeight+l[0].offsetWidth,s.poll.size.n!==s.poll.size.o)?(s.poll.size.o=s.poll.size.n,void r(1)):!c.advanced.updateOnImageLoad||"auto"===c.advanced.updateOnImageLoad&&"y"===c.axis||(s.poll.img.n=f.find("img").length,s.poll.img.n===s.poll.img.o)?void((c.advanced.updateOnSelectorChange||c.advanced.updateOnContentResize||c.advanced.updateOnImageLoad)&&o()):(s.poll.img.o=s.poll.img.n,void f.find("img").each(function(){n(this)}))},c.advanced.autoUpdateTimeout))}function n(t){function o(e,t){return function(){ +return t.apply(e,arguments)}}function a(){this.onload=null,e(t).addClass(d[2]),r(2)}if(e(t).hasClass(d[2]))return void r();var n=new Image;n.onload=o(n,a),n.src=t.src}function i(){c.advanced.updateOnSelectorChange===!0&&(c.advanced.updateOnSelectorChange="*");var e=0,t=f.find(c.advanced.updateOnSelectorChange);return c.advanced.updateOnSelectorChange&&t.length>0&&t.each(function(){e+=this.offsetHeight+this.offsetWidth}),e}function r(e){clearTimeout(f[0].autoUpdate),u.update.call(null,l[0],e)}var l=e(this),s=l.data(a),c=s.opt,f=e("#mCSB_"+s.idx+"_container");return t?(clearTimeout(f[0].autoUpdate),void $(f[0],"autoUpdate")):void o()},V=function(e,t,o){return Math.round(e/t)*t-o},Q=function(t){var o=t.data(a),n=e("#mCSB_"+o.idx+"_container,#mCSB_"+o.idx+"_container_wrapper,#mCSB_"+o.idx+"_dragger_vertical,#mCSB_"+o.idx+"_dragger_horizontal");n.each(function(){Z.call(this)})},G=function(t,o,n){function i(e){return s&&c.callbacks[e]&&"function"==typeof c.callbacks[e]}function r(){return[c.callbacks.alwaysTriggerOffsets||w>=S[0]+y,c.callbacks.alwaysTriggerOffsets||-B>=w]}function l(){var e=[h[0].offsetTop,h[0].offsetLeft],o=[x[0].offsetTop,x[0].offsetLeft],a=[h.outerHeight(!1),h.outerWidth(!1)],i=[f.height(),f.width()];t[0].mcs={content:h,top:e[0],left:e[1],draggerTop:o[0],draggerLeft:o[1],topPct:Math.round(100*Math.abs(e[0])/(Math.abs(a[0])-i[0])),leftPct:Math.round(100*Math.abs(e[1])/(Math.abs(a[1])-i[1])),direction:n.dir}}var s=t.data(a),c=s.opt,d={trigger:"internal",dir:"y",scrollEasing:"mcsEaseOut",drag:!1,dur:c.scrollInertia,overwrite:"all",callbacks:!0,onStart:!0,onUpdate:!0,onComplete:!0},n=e.extend(d,n),u=[n.dur,n.drag?0:n.dur],f=e("#mCSB_"+s.idx),h=e("#mCSB_"+s.idx+"_container"),m=h.parent(),p=c.callbacks.onTotalScrollOffset?Y.call(t,c.callbacks.onTotalScrollOffset):[0,0],g=c.callbacks.onTotalScrollBackOffset?Y.call(t,c.callbacks.onTotalScrollBackOffset):[0,0];if(s.trigger=n.trigger,0===m.scrollTop()&&0===m.scrollLeft()||(e(".mCSB_"+s.idx+"_scrollbar").css("visibility","visible"),m.scrollTop(0).scrollLeft(0)),"_resetY"!==o||s.contentReset.y||(i("onOverflowYNone")&&c.callbacks.onOverflowYNone.call(t[0]),s.contentReset.y=1),"_resetX"!==o||s.contentReset.x||(i("onOverflowXNone")&&c.callbacks.onOverflowXNone.call(t[0]),s.contentReset.x=1),"_resetY"!==o&&"_resetX"!==o){if(!s.contentReset.y&&t[0].mcs||!s.overflowed[0]||(i("onOverflowY")&&c.callbacks.onOverflowY.call(t[0]),s.contentReset.x=null),!s.contentReset.x&&t[0].mcs||!s.overflowed[1]||(i("onOverflowX")&&c.callbacks.onOverflowX.call(t[0]),s.contentReset.x=null),c.snapAmount){var v=c.snapAmount instanceof Array?"x"===n.dir?c.snapAmount[1]:c.snapAmount[0]:c.snapAmount;o=V(o,v,c.snapOffset)}switch(n.dir){case"x":var x=e("#mCSB_"+s.idx+"_dragger_horizontal"),_="left",w=h[0].offsetLeft,S=[f.width()-h.outerWidth(!1),x.parent().width()-x.width()],b=[o,0===o?0:o/s.scrollRatio.x],y=p[1],B=g[1],T=y>0?y/s.scrollRatio.x:0,k=B>0?B/s.scrollRatio.x:0;break;case"y":var x=e("#mCSB_"+s.idx+"_dragger_vertical"),_="top",w=h[0].offsetTop,S=[f.height()-h.outerHeight(!1),x.parent().height()-x.height()],b=[o,0===o?0:o/s.scrollRatio.y],y=p[0],B=g[0],T=y>0?y/s.scrollRatio.y:0,k=B>0?B/s.scrollRatio.y:0}b[1]<0||0===b[0]&&0===b[1]?b=[0,0]:b[1]>=S[1]?b=[S[0],S[1]]:b[0]=-b[0],t[0].mcs||(l(),i("onInit")&&c.callbacks.onInit.call(t[0])),clearTimeout(h[0].onCompleteTimeout),J(x[0],_,Math.round(b[1]),u[1],n.scrollEasing),!s.tweenRunning&&(0===w&&b[0]>=0||w===S[0]&&b[0]<=S[0])||J(h[0],_,Math.round(b[0]),u[0],n.scrollEasing,n.overwrite,{onStart:function(){n.callbacks&&n.onStart&&!s.tweenRunning&&(i("onScrollStart")&&(l(),c.callbacks.onScrollStart.call(t[0])),s.tweenRunning=!0,C(x),s.cbOffsets=r())},onUpdate:function(){n.callbacks&&n.onUpdate&&i("whileScrolling")&&(l(),c.callbacks.whileScrolling.call(t[0]))},onComplete:function(){if(n.callbacks&&n.onComplete){"yx"===c.axis&&clearTimeout(h[0].onCompleteTimeout);var e=h[0].idleTimer||0;h[0].onCompleteTimeout=setTimeout(function(){i("onScroll")&&(l(),c.callbacks.onScroll.call(t[0])),i("onTotalScroll")&&b[1]>=S[1]-T&&s.cbOffsets[0]&&(l(),c.callbacks.onTotalScroll.call(t[0])),i("onTotalScrollBack")&&b[1]<=k&&s.cbOffsets[1]&&(l(),c.callbacks.onTotalScrollBack.call(t[0])),s.tweenRunning=!1,h[0].idleTimer=0,C(x,"hide")},e)}}})}},J=function(e,t,o,a,n,i,r){function l(){S.stop||(x||m.call(),x=K()-v,s(),x>=S.time&&(S.time=x>S.time?x+f-(x-S.time):x+f-1,S.time0?(S.currVal=u(S.time,_,b,a,n),w[t]=Math.round(S.currVal)+"px"):w[t]=o+"px",p.call()}function c(){f=1e3/60,S.time=x+f,h=window.requestAnimationFrame?window.requestAnimationFrame:function(e){return s(),setTimeout(e,.01)},S.id=h(l)}function d(){null!=S.id&&(window.requestAnimationFrame?window.cancelAnimationFrame(S.id):clearTimeout(S.id),S.id=null)}function u(e,t,o,a,n){switch(n){case"linear":case"mcsLinear":return o*e/a+t;case"mcsLinearOut":return e/=a,e--,o*Math.sqrt(1-e*e)+t;case"easeInOutSmooth":return e/=a/2,1>e?o/2*e*e+t:(e--,-o/2*(e*(e-2)-1)+t);case"easeInOutStrong":return e/=a/2,1>e?o/2*Math.pow(2,10*(e-1))+t:(e--,o/2*(-Math.pow(2,-10*e)+2)+t);case"easeInOut":case"mcsEaseInOut":return e/=a/2,1>e?o/2*e*e*e+t:(e-=2,o/2*(e*e*e+2)+t);case"easeOutSmooth":return e/=a,e--,-o*(e*e*e*e-1)+t;case"easeOutStrong":return o*(-Math.pow(2,-10*e/a)+1)+t;case"easeOut":case"mcsEaseOut":default:var i=(e/=a)*e,r=i*e;return t+o*(.499999999999997*r*i+-2.5*i*i+5.5*r+-6.5*i+4*e)}}e._mTween||(e._mTween={top:{},left:{}});var f,h,r=r||{},m=r.onStart||function(){},p=r.onUpdate||function(){},g=r.onComplete||function(){},v=K(),x=0,_=e.offsetTop,w=e.style,S=e._mTween[t];"left"===t&&(_=e.offsetLeft);var b=o-_;S.stop=0,"none"!==i&&d(),c()},K=function(){return window.performance&&window.performance.now?window.performance.now():window.performance&&window.performance.webkitNow?window.performance.webkitNow():Date.now?Date.now():(new Date).getTime()},Z=function(){var e=this;e._mTween||(e._mTween={top:{},left:{}});for(var t=["top","left"],o=0;o=0&&a[0]+ae(n)[0]=0&&a[1]+ae(n)[1]=0&&r[1]-i[1]*l[1][0]<0&&r[1]+n[1]-i[1]*l[1][1]>=0},mcsOverflow:e.expr[":"].mcsOverflow||function(t){var o=e(t).data(a);if(o)return o.overflowed[0]||o.overflowed[1]}})})})}); \ No newline at end of file diff --git a/ext/3rd-party-addons/clarico_shop/static/src/less/clarico_shop.less b/ext/3rd-party-addons/clarico_shop/static/src/less/clarico_shop.less new file mode 100755 index 00000000..6c4d77ee --- /dev/null +++ b/ext/3rd-party-addons/clarico_shop/static/src/less/clarico_shop.less @@ -0,0 +1,1202 @@ +.product-grid-div +{ + width:19.5%; + display:inline-block; + vertical-align:top; + .mb(2%); + + a{ + cursor:pointer; + + &:hover{ + text-decoration:none; + } + &:active{ + text-decoration:none; + } + } +} +.shop-page-breadcrumb{ + & .sub_breadcrumb{ + max-width:2000px !important; + } +} +.shop_product_breadcrumb +{ + width: 100%; + background-color: #f5f5f5; + display: inline-block; + margin-bottom: 1%; + .pt(15px); + .pb(15px); + + .sub_breadcrumb + { + .block; + + .clarico_breadcrumb + { + width: 65%; + line-height: 30px; + margin: 0; + padding: 10px 15px; + display: inline-block; + background-color: transparent; + } + } + +} +.shop_rating +{ + .mb(5px); +} +#shop_pager +{ + width:auto; + .right; + display: inline-block; +} +.bottom_pager +{ + .mt(3%); +} +.pagination +{ + margin:0; +} + +.pagination > .active > a{ + .bg(transparent); + color:black; + border-color: #ddd; + + &:hover{ + color: black; + .bg(transparent); + border-color: #ddd; + } +} +.pagination > .disabled > a +{ + .bg(transparent); + + &:hover + { + .bg(transparent); + + } +} +.pagination > li:last-child > a +{ + border-radius:0; +} +.pagination > li > a{ + color:@color-black; + .bg(transparent); + border:unset; + padding: 0px 12px; + border-right:1px solid #ddd; + .size(12px); + .muli-bold; + color: #a1a1a1; + + &:hover{ + color: @theme-color; + } +} +.shop_cover_img_container +{ + .common-div; + + img + { + max-width:100%; + display: block; + margin: 0px auto; + } + +} + +#products_grid_before{ + height: 100%; + width: 0; + position: fixed; + z-index: 9999; + top: 0; + left: 0; + background-color: white; + overflow-x: hidden; + transition: 0.5s; + .pt(2%); +} + +.products_grid_before_maxW{ + padding-left:10%; +} +.transparent{ + background: rgba(0, 0, 0, 0.4) !important; + z-index: 9998; + position: absolute; + top: 0px; + left: 0; + right: 0; + bottom: 0; + width: 100% !important; + height: 100% !important; + transition: opacity 1s; + max-width:100% !important; +} +.right-cnt-main{ + width: 100%; + display: inline-block; + .pt(2%); +} +.right-cnt-maxW{ + width:90%; + max-width:2000px; + display:block; + margin:0px auto; +} + +.dropdown-toggle-btn(){ + width: 110px; + float: none; + color: #505050 !important; + background: #fff !important; + line-height: 34px; + padding: 0 0 0 0; + position: relative; + .capitalize; + text-overflow: ellipsis; + white-space: nowrap; + overflow: hidden; + border-radius: 0; + border:none !important; +} +.dropdown-menu-ul{ + min-width: 110px; + left: auto; + position: absolute; + background-color: #fff !important; + background-clip: padding-box; + top:auto; +} +.btn-group.open .dropdown-toggle{ + box-shadow:none; +} + +.menu-filter-div{ + .left; + .pt(6px); +} +.nav-view +{ + width: auto; + display: inline-block; + + .nav-selection-div{ + .left; + + + .select-nevigation-home, .select-nevigation-child + { + color:#909090; + .size(13px); + .muli-bold; + .left; + } + .home-icon + { + .left; + color:#909090; + } + .select-nevigation-span + { + .pr(10px); + .pl(10px); + .left; + } +} + +} +.view-as-div{ + .left; + display:none; +} +.view-label{ + .muli-regular; + .size(12px); + padding: 0px 10px; + color:#909090; + margin:0; + vertical-align: middle; +} +.grid-view i{ + color:#909090; + .size(12px); + .pt(2px); +} +.list-view i{ + color:#909090; + .size(12px); + padding: 0px 10px; + vertical-align: middle; + .pt(2px); +} + +.view-as-two-col{ + .size(13px); + color:#909090; + .mr(10px); + vertical-align: middle; +} +.view-as-three-col{ + .size(13px); + color:#909090; + vertical-align: middle; +} +.mobile-view-filter-close-btn{ + display:none; + position: absolute; + right: 5%; + top: 0%; + .size(17px); + cursor:pointer; +} +.filter-stick{ + position: fixed; + background:white; + z-index:999; + left:0; + height:70px; + transition: 1s; +} + +.filter-stick > .view-as-maxW{ + width: 90%; + max-width: 1400px; + margin: 0px auto; + display: block; + .pt(6px); +} + +.view-as{ + width:100%; + display:inline-block !important; + .uppercase; + color: #3c3c3c; + .size(11px); + .muli-regular; + + .view-mode{ + .left; + + .menu-filter{ + .size(14px); + color:black; + .muli-bold; + .left; + .mr(12px); + .mt(5px); + + & i{ + color:black; + .mr(5px); + } + } + } + + .view-as-right-cnt{ + display: inline-block; + .right; + .mr(10px); + + .filter-show{ + .left; + .mr(5px); + + .filter-show-label{ + .muli-regular; + .size(13px); + } + .dropdown-toggle{ + .dropdown-toggle-btn; + display: inline-block; + vertical-align: text-top; + + &:before { + border-top-color: transparent; + border-bottom-color: #000; + .mt(-5px); + position: absolute; + right: 14px; + top: 21px; + width: 0; + height: 0; + border: 4px solid transparent; + border-top-color: #000; + content: ""; + } + + &:after{ + content: ""; + width: 36px; + height: 35px; + position: absolute; + right: 0; + top: 0; + } + } + .dropdown-menu{ + .dropdown-menu-ul; + .ml(0px); + + .active a{ + background-color: #f5f5f5; + color: #66787f; + } + } + } + .filter-sort-by{ + .left; + .size(13px); + + .filter-sortby-label{ + .muli-regular; + .size(12px); + padding: 16px 0px; + margin: 0 20px 0 0; + } + .dropdown-toggle{ + .dropdown-toggle-btn; + width:110px; + display: inline-block; + text-align: center; + vertical-align: text-top; + + + &:before { + border-top-color: transparent; + border-bottom-color: #000; + .mt(-5px); + position: absolute; + right: 14px; + top: 21px; + width: 0; + height: 0; + border: 4px solid transparent; + border-top-color: #000; + content: ""; + } + + &:after{ + content: ""; + width: 36px; + height: 35px; + + position: absolute; + right: 0; + top: 0; + } + } + .dropdown-menu{ + .dropdown-menu-ul; + min-width:110px; + border:none !important; + + .active a{ + background-color: #f5f5f5; + color: #66787f; + } + } + } + } +} +.attribut-main-div .nav-pills { + .mt(0%) !important; +} +#products_grid{ + .pt(2%); + .pl(0); + .pr(0); + z-index:1; +} +.oe_product .oe_product_image{ + position:relative !important; +} +.oe_product .oe_product_image img{ + position:relative !important; +} +.product-image{ + width:100% !important; + left: 0 !important; + right: 0 !important; + top: 0 !important; + bottom: 0 !important; + margin: 0px auto; +} +.in-wishlist-heart a{ + display: none; + position: absolute; + top: 2%; + z-index: 999; + right: 4%; + .size(11px); +} + +.dropdown-menu > li > a{ + .capitalize; +} + +.deleted_price_responsive{ + .left; +} +.strike-through{ + color: #B8B8B8 !important; + .muli-regular; + .size(13px); + font-weight:normal; + + & span.oe_currency_value{ + .size(13px); + } +} + +.orignal-price{ + color: #000 !important; + .muli-regular; + font-weight:normal; + + & span.oe_currency_value{ + .size(13px); + } +} + +.in2wish i{ + + color:@theme-color !important; +} +.refined-by-hr{ + padding: 0; + .mt(0px); + display:block; + clear:both; +} +.product-hover-hr{ + clear:both; + .mt(2px) !important; + .mb(2px) !important; + padding:0px !important; +} +.details{ + width:100%; + display: inline-block; + .mb(-6px); +} +.in-stock{ + color: #008000; + .size(12px); + width:30%; + .left; + .muli-regular; + + & span{ + .right; + background-color: #008000; + color: #FFF; + padding: 3px 10px 3px 9px; + .size(11px); + border-radius: 1px; + } +} +.warning{ + width:30%; + .left; + color:red; + .muli-regular; + .size(12px); + + & span{ + .right; + background-color: #D5B91D; + color: #FFF; + padding: 3px 10px 3px 9px; + .size(11px); + border-radius: 1px; + } +} +.oe_grid .production-description{ + .pt(3%); +} +.product-des{ + position: absolute; + text-align: center; + top: 0; + right: 0; + width: 40px; + display:none; + background-color: white; + + .hover-cnt{ + display: inline-block; + width: 100%; + .mt(4px); + .mb(2px); + z-index:100; + + .wishlist{ + width: 27px; + height: 27px; + display: inline-block; + padding: 0; + position: relative; + z-index: 2; + } + a.wishlist{ + position: absolute; + } + .star-rating-main-div{ + width: 100%; + display: block; + .pt(9%); + + .star-rating-div{ + + & i{ + color: @theme-color; + } + } + } + } + .quick-view-btn{ + background:@theme-color; + color:black; + .muli-regular; + padding: 10px 0px 10px; + position: absolute; + left: 4px; + bottom:25%; + -webkit-margin-top: 13%; + -moz-margin-top: 16%; + width:97%; + z-index:100; + } + + #addtocart_shop{ + & a{ + padding:0; + } + } +} +.hover-cnt i{ + color: black; + .size(12px); + padding:13px; +} +.itemscope-main{ + position: relative; + margin: 0 10px 0px 0; + border: 1px solid #f2eeee; +} +.ribbon-wrapper{ + position: absolute; + left:0; + + .sale-btn{ + border-radius: 3px; + right: 0; + left: 10px; + top: 20px; + padding: 3.5px 12px; + color:#fff; + .bg(@theme-color); + font: bold 10px @m-regular; + transform: unset !important; + -ms-transform: unset !important; + -o-transform: unset !important; + .uppercase; + width:auto; + display:inline-block; + } +} +.sale-btn::after +{ + content: ''; + position: absolute; + right: 8px; + bottom: -7px; + border-top: 2px solid transparent; + border-bottom: 9px solid transparent; + border-right: 9px solid @theme-color; + transform: rotate(-23deg); +} +.product-name-h5{ + .left; + margin: 0; + width: 70%; + .pt(3px); + .pb(5px); + + & label{ + display: block; + font-weight: normal !important; + .mb(0px) !important; + + & a{ + color: #717171; + font-weight: normal; + max-width: 90%; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + display: block; + .capitalize; + width: 100%; + .muli-regular; + .size(14px); + } + + & a:hover{ + text-decoration:none; + } + } +} +#products_grid .product_price{ + .left; + clear:both; + padding: 0 !important; + position: relative !important; + .mb(12px); +} +.discount-price{ + text-decoration: line-through; + color: #969696; + .mr(10px); +} + +.oe_product{ + width: 100%; + height: 100% !important; + border: 0px !important; +} +.oe_product section{ + position: relative !important; + padding: 0px 10px 0px 10px !important; + width:100%; +} +.oe_product .ribbon-wrapper{ + display:block !important; + width:150px !important; +} + +/*Category Grid Before*/ + +.refined-by-h5{ + .muli-bold; + .size(17px); + .uppercase; + .pt(10%); +} +.refined-by-dynamic{ + .ml(4px); + .mr(12px); +} + +.up-arrow{ + .left; + .size(20px); + margin: -3px 7px 0 0px; + cursor:pointer; + display:none; +} +.down-arrow { + .left; + .size(12px); + margin: 0px 7px 0 0px; + cursor:pointer; + color: #717171; +} +.clear-all-variant{ + .size(10px); + .pt(2px); + color: @theme-color; + display:none; + + &:hover{ + color: @theme-color; + } +} +.refined-by-attr{ + .muli-bold; + .size(14px); + cursor:pointer; + .mb(5%) !important; + .mt(0) !important; + .left; +} +.category-heading{ + width:100%; + display:inline-block; +} +.category{ + .muli-regular; + .size(14px); + .uppercase; +} +.apply-filter{ + .size(12px); + color:black; + display:none; +} +.apply-filter-in-page{ + .left; + .capitalize; + .size(13px); + .pt(4px); + .mr(12px); +} +.attr-val{ + width: 95%; + display: inline-block; + max-height:130px; + overflow-y:auto; + +} +.shop_view_popup_link_btn +{ + .size(12px); + height: 30px; + letter-spacing: 2px; + padding: 6px 20px; + text-align: center; + text-transform: uppercase; + .bg(@theme-color); + border-radius: 25px; + border: none; + color: #fff; + transition: all 300ms; + text-decoration: none; + .oswald-regular(); + + &:hover + { + .bg(#000); + color:#fff; + } +} +.text-primary +{ + position: absolute; + right: 10%; + color: rgba(84, 84, 84, 0.8) !important; +} +.css_attribute_color { + margin: 4px 11px 0px 0px; + margin-left:0; + border:0px !important; + border-radius: 100%; + .left; + width: 12px; + height:12px; +} +.css_attribute_color.active{ + border: 2px solid @theme-color !important; +} +.css_attribute_color input{ + margin:0px !important; + cursor:pointer; +} +.color-with-name-divmaxW{ + .ml(8px); +} +.color-with-name-div{ + width:100%; + .left; +} +.color-name{ + .capitalize; + .muli-regular; + .size(13px); + color:#7d7d7d; + .pb(10px); +} +.div_class_categ_attrib_class_sub_class{ + .pb(12px) !important; +} +.a_class_categ_attribute_name { + .muli-regular !important; + color: #7D7D7D !important; + .size(12px) !important; +} + + + +.nav-stacked-div{ + width:100%; + .left; + .capitalize; + .mb(4px); + + & .type-checkbox{ + + & label{ + .size(13px); + display: block; + white-space: nowrap; + text-overflow: ellipsis; + overflow: hidden; + width: 100%; + color: rgba(84, 84, 84, 0.8); + } + } +} + +.type-radio{ + .ml(0px) !important; +} +.nav-stacked-div > label{ + margin:0 !important; +} +.nav > li > a{ + .muli-regular; + .size(15px); + color:black; + .capitalize; + cursor:pointer; +} +.all-category-div .nav-stacked > li + li { + .mt(11px) !important; +} +.attr-val .nav-stacked > li + li{ + .mt(0px); +} +.all-category-div ul.nav-stacked > li > a { + padding: 0px 0px !important; + color: rgba(84,84,84,0.8) !important; + + &:before{ + content:''; + display:block; + width: 12px; + height: 12px; + -moz-border-radius: 50%; + -webkit-border-radius: 50%; + border-radius: 50%; + border:1px solid rgba(84,84,84,0.8); + .left; + margin: 3px 10px 0 0; + } +} +.all-category-div .nav-pills{ + .mt(5%) !important; +} +.all-category-div .nav-pills > li.active > a{ + .muli-regular; + .size(14px); + border:none; + width: 80%; + color: #000 !important; + font-weight: bold; + background:white; + + &:hover{ + color:#000 !important; + } + + &:before{ + content:''; + display:block; + width: 12px; + height: 12px; + background: rgba(84,84,84,0.8); + -moz-border-radius: 50%; + -webkit-border-radius: 50%; + border-radius: 50%; + border:1px solid rgba(84,84,84,0.8); + .left; + margin: 3px 10px 0 0; + .muli-regular; + } +} +.all-category-div ul li a{ + .size(14px); +} +.all-category-div ul > li > ul > li > a{ + white-space: nowrap; + max-width: 180px !important; + overflow: hidden; + text-overflow: ellipsis; + .size(13px); +} +.all-category-div ul > li > ul > li > ul > li a{ + .size(12px); +} +.attribut-main-div{ + [type="checkbox"]:not(:checked), + [type="checkbox"]:checked { + position: absolute; + left: 5px; + top: auto; + -moz-appearance: none; + width: 17px; + height: 17px; + opacity: 0.001; + cursor:pointer; + z-index: 9999; + } + [type="checkbox"]:not(:checked) + label, + [type="checkbox"]:checked + label { + position: relative; + padding-left: 2.30em; + cursor: pointer; + } + + /* checkbox aspect */ + [type="checkbox"]:not(:checked) + label:before, + [type="checkbox"]:checked + label:before { + content: ''; + position: absolute; + left: 7px; + top: 3px; + width: 13px; + height: 13px; + border: 1px solid #ccc; + background: #fff; + border-radius: 1px; + } + /* checked mark aspect */ + [type="checkbox"]:not(:checked) + label:after, + [type="checkbox"]:checked + label:after { + content: '✔'; + position: absolute; + top:5px; + left:9px; + font-size:11px; + line-height: 0.8; + color: @theme-color; + transition: all .2s; + + } + /* checked mark aspect changes */ + [type="checkbox"]:not(:checked) + label:after { + opacity: 0; + transform: scale(0); + } + [type="checkbox"]:checked + label:after { + opacity: 1; + transform: scale(1); + } +} + +#products_grid.col-md-9 .oe-height-6{ + height:auto !important; +} +.oe_product .oe_product_cart{ + .mb(9%); +} + +/*List View*/ + +.oe_list .product-image-list-view{ + width:100px !important; + .left !important; +} +.oe_list .list-view-section{ + .left !important; +} +.oe_product.oe_list .oe_product_image{ + width:125px !important; + .left !important; + min-height: 150px; + .mt(10px); +} + +.oe_list .text-info {display:none;} +.oe_list{ + + & hr.product-hover-hr{ + display:none !important; + } + + & .div_class_categ_attrib_class_sub_class{ + .pt(1%) !important; + } + & .product_price{ + .mb(12px) !important; + } +} + +.product-grid-div .oe_list .oe_product_cart .itemscope-main > section > .details{ + + & .warning{ + .pt(30px); + } + & .in-stock{ + .pt(30px); + } +} +.oe_product.oe_list .product-des{ + width:0px !important; + display:none !important; +} +.oe_product.oe_list{ + padding-left:0px !important; + height:160px !important; +} +.oe_product.oe_list .itemscope-main{ + height: 150px; +} + +.oe_product.oe_list .div_class_categ_attrib_class_sub_class{ + .pt(2%) !important; +} +.oe_list .in-wishlist-heart > a{ + top: 40% !important; + right: 3% !important; + font-size: 12px !important; +} + +.right-animation{ + -webkit-animation:animateright 1s; + animation:animateright 1s; + transition:5s; +} +@-webkit-keyframes animateright{ + from{right:-20px;opacity:0;} + to{right:0px;opacity:1;} +} +@keyframes animateright{ + from{right:-20px;opacity:0;} + to{right:0px;opacity:1;} +} +.o_rating_star_card .stars{ + color: @theme-color; + text-align: center; + .size(12px); + + i + { + .mr(-1px); + } +} +.o_rating_star_card{ + .pt(0px) !important; +} +.oe_product .oe_subdescription{ + .mb(0px) !important; + overflow: unset !important; + display:none; + color:#717171; + +} +.grid-active{ + color:gray !important; + pointer-events: none; + cursor:no-drop !important; +} + +/* Column View 2 - 3 */ +.two-column-view{ + width:50% !important; +} +.two-column-view .product-image{ + max-height: 430px !important; + min-height: 430px !important; + .mb(4%) !important; +} +.zoom-animation { + -webkit-animation:animatezoom 0.6s; + animation:animatezoom 0.6s +} +@-webkit-keyframes animatezoom{ + from{-webkit-transform:scale(0)} + to{-webkit-transform:scale(1)} +} +@keyframes animatezoom{ + from{transform:scale(0)} + to{transform:scale(1)} +} + +/*Quick View*/ +.quick-view-a { + width: 0 !important; + float: none !important; + display: inline !important; + color: #fff; + opacity: 1.0 !important; + padding: 0 !important; +} + +.not_defined{ + width: 100% !important; + max-width: 800px !important; + .maxW; + + .left_class{ + width: 30%; + .left; + } + .right_class{ + width:60%; + .right; + + & img{ + max-height:245px; + display:block; + max-width:100%; + width:auto; + margin:0px auto; + } + } + h3.css_editable_display{ + .size(29px); + .pt(14%); + .oswald-light; + .pb(10%); + } +} +ul.custom-menu-inside-div{ + list-style: none; + padding: 0px; +} +.show_inactive{ + display:none; +} + + +/* Breadcrumb */ +.select-nevigation-child{ + .pt(2px); +} +#sub_header_row +{ + .clarico_product_breadcrumb + { + .mt(-5px); + } +} + +#in-wishlist-shop > .wishlist-heart{ + position: absolute; + top: 2%; + right: 2%; + z-index: 100; + .size(12px); +} + +.filter_none{ + display: none !important; +} +.filter_select_box{ + display: inline-block; + width: 92%; + .mt(-10px) !important; +} +.search_found{ + .size(15px); + color: #727272; + .oswald-bold(); + .left(); + margin-right: 12px; + margin-top: 5px; +} diff --git a/ext/3rd-party-addons/clarico_shop/static/src/less/compare_wishlist_common.less b/ext/3rd-party-addons/clarico_shop/static/src/less/compare_wishlist_common.less new file mode 100755 index 00000000..f01c20eb --- /dev/null +++ b/ext/3rd-party-addons/clarico_shop/static/src/less/compare_wishlist_common.less @@ -0,0 +1,130 @@ +/* Compare popover */ + +.popover_common_wrap +{ + .common-div; + .mt(5%); +} +.popover_common_container +{ + .block; +} +.popover_each_product_div +{ + width:16%; + display:block; + .left; + .mr(0); + .mb(5%); + + .product_img_popover + { + width:100%; + a{ + padding : 0 !important; + } + img + { + width:auto; + max-width:90%; + .center; + max-height: 200px; + } + + } + .product_name_popover + { + display:block; + width:100%; + + a + { + .capitalize(); + .size(14px); + font-family:@m-light; + white-space:nowrap; + text-overflow: ellipsis; + overflow:hidden; + max-width: 75%; + text-align: center; + .center; + .mt(16px); + color:#717171; + padding: 0 !important; + } + } + .product_price_popover + { + display:block; + width:90%; + .center(); + padding: 6px 0 6px 0; + + .wishlist-price-p{ + .size(13px); + } + .compare-price-pop + { + color: #777; + .size(12px); + } + & .product_price p{ + color : #000; + } + } +} + +.view_common{ + position: fixed; + right: 5%; + bottom: 4%; + + & a{ + padding: 10px 15px 10px 15px !important; + } +} +.zoom-fadein { + -webkit-animation: animatezoomfade 0.6s; + animation: animatezoomfade 0.6s; +} +.common-main-div{ + width: 100%; + position: fixed; + z-index: 9999; + height: 100%; + top: 0; + left: 0; + bottom: 0; + right: 0; + background: rgba(255, 255, 255, 0.95) !important; + display:none; + overflow:auto; +} + + +//Responsive +@media (max-width:1000px){ + .popover_each_product_div{ + width:24%; + } +} +@media (max-width:800px){ + .popover_each_product_div{ + width:33%; + + & .product_price_popover{ + + & .oe_price ,.oe_currency_value , .wishlist-price-p{ + .size(12px); + } + } + } + .css_editable_mode_hidden{ + float:none; + } +} +@media (max-width:600px){ + .popover_each_product_div{ + width:50%; + } +} diff --git a/ext/3rd-party-addons/clarico_shop/static/src/less/jquery.mCustomScrollbar.css b/ext/3rd-party-addons/clarico_shop/static/src/less/jquery.mCustomScrollbar.css new file mode 100755 index 00000000..97ac152e --- /dev/null +++ b/ext/3rd-party-addons/clarico_shop/static/src/less/jquery.mCustomScrollbar.css @@ -0,0 +1,1268 @@ +/* +== malihu jquery custom scrollbar plugin == +Plugin URI: http://manos.malihu.gr/jquery-custom-content-scroller +*/ + + + +/* +CONTENTS: + 1. BASIC STYLE - Plugin's basic/essential CSS properties (normally, should not be edited). + 2. VERTICAL SCROLLBAR - Positioning and dimensions of vertical scrollbar. + 3. HORIZONTAL SCROLLBAR - Positioning and dimensions of horizontal scrollbar. + 4. VERTICAL AND HORIZONTAL SCROLLBARS - Positioning and dimensions of 2-axis scrollbars. + 5. TRANSITIONS - CSS3 transitions for hover events, auto-expanded and auto-hidden scrollbars. + 6. SCROLLBAR COLORS, OPACITY AND BACKGROUNDS + 6.1 THEMES - Scrollbar colors, opacity, dimensions, backgrounds etc. via ready-to-use themes. +*/ + + + +/* +------------------------------------------------------------------------------------------------------------------------ +1. BASIC STYLE +------------------------------------------------------------------------------------------------------------------------ +*/ + + .mCustomScrollbar{ -ms-touch-action: pinch-zoom; touch-action: pinch-zoom; /* direct pointer events to js */ } + .mCustomScrollbar.mCS_no_scrollbar, .mCustomScrollbar.mCS_touch_action{ -ms-touch-action: auto; touch-action: auto; } + + .mCustomScrollBox{ /* contains plugin's markup */ + position: relative; + overflow: hidden; + height: 100%; + max-width: 100%; + outline: none; + direction: ltr; + } + + .mCSB_container{ /* contains the original content */ + overflow: hidden; + width: auto; + height: auto; + } + + + +/* +------------------------------------------------------------------------------------------------------------------------ +2. VERTICAL SCROLLBAR +y-axis +------------------------------------------------------------------------------------------------------------------------ +*/ + + .mCSB_inside > .mCSB_container{ margin-right: 15px; } + + .mCSB_container.mCS_no_scrollbar_y.mCS_y_hidden{ margin-right: 0; } /* non-visible scrollbar */ + + .mCS-dir-rtl > .mCSB_inside > .mCSB_container{ /* RTL direction/left-side scrollbar */ + margin-right: 0; + margin-left: 30px; + } + + .mCS-dir-rtl > .mCSB_inside > .mCSB_container.mCS_no_scrollbar_y.mCS_y_hidden{ margin-left: 0; } /* RTL direction/left-side scrollbar */ + + .mCSB_scrollTools{ /* contains scrollbar markup (draggable element, dragger rail, buttons etc.) */ + position: absolute; + width: 16px; + height: auto; + left: auto; + top: 0; + right: 0; + bottom: 0; + } + + .mCSB_outside + .mCSB_scrollTools{ right: -26px; } /* scrollbar position: outside */ + + .mCS-dir-rtl > .mCSB_inside > .mCSB_scrollTools, + .mCS-dir-rtl > .mCSB_outside + .mCSB_scrollTools{ /* RTL direction/left-side scrollbar */ + right: auto; + left: 0; + } + + .mCS-dir-rtl > .mCSB_outside + .mCSB_scrollTools{ left: -26px; } /* RTL direction/left-side scrollbar (scrollbar position: outside) */ + + .mCSB_scrollTools .mCSB_draggerContainer{ /* contains the draggable element and dragger rail markup */ + position: absolute; + top: 0; + left: 0; + bottom: 0; + right: 0; + height: auto; + } + + .mCSB_scrollTools a + .mCSB_draggerContainer{ margin: 20px 0; } + + .mCSB_scrollTools .mCSB_draggerRail{ + width: 2px; + height: 100%; + margin: 0 auto; + -webkit-border-radius: 16px; -moz-border-radius: 16px; border-radius: 16px; + } + + .mCSB_scrollTools .mCSB_dragger{ /* the draggable element */ + cursor: pointer; + width: 100%; + height: 30px; /* minimum dragger height */ + z-index: 1; + } + + .mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{ /* the dragger element */ + position: relative; + width: 4px; + height: 100%; + margin: 0 auto; + -webkit-border-radius: 16px; -moz-border-radius: 16px; border-radius: 16px; + text-align: center; + } + + .mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_dragger.mCSB_dragger_onDrag_expanded .mCSB_dragger_bar, + .mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_draggerContainer:hover .mCSB_dragger .mCSB_dragger_bar{ width: 12px; /* auto-expanded scrollbar */ } + + .mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_dragger.mCSB_dragger_onDrag_expanded + .mCSB_draggerRail, + .mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_draggerContainer:hover .mCSB_draggerRail{ width: 8px; /* auto-expanded scrollbar */ } + + .mCSB_scrollTools .mCSB_buttonUp, + .mCSB_scrollTools .mCSB_buttonDown{ + display: block; + position: absolute; + height: 20px; + width: 100%; + overflow: hidden; + margin: 0 auto; + cursor: pointer; + } + + .mCSB_scrollTools .mCSB_buttonDown{ bottom: 0; } + + + +/* +------------------------------------------------------------------------------------------------------------------------ +3. HORIZONTAL SCROLLBAR +x-axis +------------------------------------------------------------------------------------------------------------------------ +*/ + + .mCSB_horizontal.mCSB_inside > .mCSB_container{ + margin-right: 0; + margin-bottom: 30px; + } + + .mCSB_horizontal.mCSB_outside > .mCSB_container{ min-height: 100%; } + + .mCSB_horizontal > .mCSB_container.mCS_no_scrollbar_x.mCS_x_hidden{ margin-bottom: 0; } /* non-visible scrollbar */ + + .mCSB_scrollTools.mCSB_scrollTools_horizontal{ + width: auto; + height: 16px; + top: auto; + right: 0; + bottom: 0; + left: 0; + } + + .mCustomScrollBox + .mCSB_scrollTools.mCSB_scrollTools_horizontal, + .mCustomScrollBox + .mCSB_scrollTools + .mCSB_scrollTools.mCSB_scrollTools_horizontal{ bottom: -26px; } /* scrollbar position: outside */ + + .mCSB_scrollTools.mCSB_scrollTools_horizontal a + .mCSB_draggerContainer{ margin: 0 20px; } + + .mCSB_scrollTools.mCSB_scrollTools_horizontal .mCSB_draggerRail{ + width: 100%; + height: 2px; + margin: 7px 0; + } + + .mCSB_scrollTools.mCSB_scrollTools_horizontal .mCSB_dragger{ + width: 30px; /* minimum dragger width */ + height: 100%; + left: 0; + } + + .mCSB_scrollTools.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar{ + width: 100%; + height: 4px; + margin: 6px auto; + } + + .mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_dragger.mCSB_dragger_onDrag_expanded .mCSB_dragger_bar, + .mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_draggerContainer:hover .mCSB_dragger .mCSB_dragger_bar{ + height: 12px; /* auto-expanded scrollbar */ + margin: 2px auto; + } + + .mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_dragger.mCSB_dragger_onDrag_expanded + .mCSB_draggerRail, + .mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_draggerContainer:hover .mCSB_draggerRail{ + height: 8px; /* auto-expanded scrollbar */ + margin: 4px 0; + } + + .mCSB_scrollTools.mCSB_scrollTools_horizontal .mCSB_buttonLeft, + .mCSB_scrollTools.mCSB_scrollTools_horizontal .mCSB_buttonRight{ + display: block; + position: absolute; + width: 20px; + height: 100%; + overflow: hidden; + margin: 0 auto; + cursor: pointer; + } + + .mCSB_scrollTools.mCSB_scrollTools_horizontal .mCSB_buttonLeft{ left: 0; } + + .mCSB_scrollTools.mCSB_scrollTools_horizontal .mCSB_buttonRight{ right: 0; } + + + +/* +------------------------------------------------------------------------------------------------------------------------ +4. VERTICAL AND HORIZONTAL SCROLLBARS +yx-axis +------------------------------------------------------------------------------------------------------------------------ +*/ + + .mCSB_container_wrapper{ + position: absolute; + height: auto; + width: auto; + overflow: hidden; + top: 0; + left: 0; + right: 0; + bottom: 0; + margin-right: 30px; + margin-bottom: 30px; + } + + .mCSB_container_wrapper > .mCSB_container{ + padding-right: 30px; + padding-bottom: 30px; + -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; + } + + .mCSB_vertical_horizontal > .mCSB_scrollTools.mCSB_scrollTools_vertical{ bottom: 20px; } + + .mCSB_vertical_horizontal > .mCSB_scrollTools.mCSB_scrollTools_horizontal{ right: 20px; } + + /* non-visible horizontal scrollbar */ + .mCSB_container_wrapper.mCS_no_scrollbar_x.mCS_x_hidden + .mCSB_scrollTools.mCSB_scrollTools_vertical{ bottom: 0; } + + /* non-visible vertical scrollbar/RTL direction/left-side scrollbar */ + .mCSB_container_wrapper.mCS_no_scrollbar_y.mCS_y_hidden + .mCSB_scrollTools ~ .mCSB_scrollTools.mCSB_scrollTools_horizontal, + .mCS-dir-rtl > .mCustomScrollBox.mCSB_vertical_horizontal.mCSB_inside > .mCSB_scrollTools.mCSB_scrollTools_horizontal{ right: 0; } + + /* RTL direction/left-side scrollbar */ + .mCS-dir-rtl > .mCustomScrollBox.mCSB_vertical_horizontal.mCSB_inside > .mCSB_scrollTools.mCSB_scrollTools_horizontal{ left: 20px; } + + /* non-visible scrollbar/RTL direction/left-side scrollbar */ + .mCS-dir-rtl > .mCustomScrollBox.mCSB_vertical_horizontal.mCSB_inside > .mCSB_container_wrapper.mCS_no_scrollbar_y.mCS_y_hidden + .mCSB_scrollTools ~ .mCSB_scrollTools.mCSB_scrollTools_horizontal{ left: 0; } + + .mCS-dir-rtl > .mCSB_inside > .mCSB_container_wrapper{ /* RTL direction/left-side scrollbar */ + margin-right: 0; + margin-left: 30px; + } + + .mCSB_container_wrapper.mCS_no_scrollbar_y.mCS_y_hidden > .mCSB_container{ padding-right: 0; } + + .mCSB_container_wrapper.mCS_no_scrollbar_x.mCS_x_hidden > .mCSB_container{ padding-bottom: 0; } + + .mCustomScrollBox.mCSB_vertical_horizontal.mCSB_inside > .mCSB_container_wrapper.mCS_no_scrollbar_y.mCS_y_hidden{ + margin-right: 0; /* non-visible scrollbar */ + margin-left: 0; + } + + /* non-visible horizontal scrollbar */ + .mCustomScrollBox.mCSB_vertical_horizontal.mCSB_inside > .mCSB_container_wrapper.mCS_no_scrollbar_x.mCS_x_hidden{ margin-bottom: 0; } + + + +/* +------------------------------------------------------------------------------------------------------------------------ +5. TRANSITIONS +------------------------------------------------------------------------------------------------------------------------ +*/ + + .mCSB_scrollTools, + .mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar, + .mCSB_scrollTools .mCSB_buttonUp, + .mCSB_scrollTools .mCSB_buttonDown, + .mCSB_scrollTools .mCSB_buttonLeft, + .mCSB_scrollTools .mCSB_buttonRight{ + -webkit-transition: opacity .2s ease-in-out, background-color .2s ease-in-out; + -moz-transition: opacity .2s ease-in-out, background-color .2s ease-in-out; + -o-transition: opacity .2s ease-in-out, background-color .2s ease-in-out; + transition: opacity .2s ease-in-out, background-color .2s ease-in-out; + } + + .mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_dragger_bar, /* auto-expanded scrollbar */ + .mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_draggerRail, + .mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_dragger_bar, + .mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_draggerRail{ + -webkit-transition: width .2s ease-out .2s, height .2s ease-out .2s, + margin-left .2s ease-out .2s, margin-right .2s ease-out .2s, + margin-top .2s ease-out .2s, margin-bottom .2s ease-out .2s, + opacity .2s ease-in-out, background-color .2s ease-in-out; + -moz-transition: width .2s ease-out .2s, height .2s ease-out .2s, + margin-left .2s ease-out .2s, margin-right .2s ease-out .2s, + margin-top .2s ease-out .2s, margin-bottom .2s ease-out .2s, + opacity .2s ease-in-out, background-color .2s ease-in-out; + -o-transition: width .2s ease-out .2s, height .2s ease-out .2s, + margin-left .2s ease-out .2s, margin-right .2s ease-out .2s, + margin-top .2s ease-out .2s, margin-bottom .2s ease-out .2s, + opacity .2s ease-in-out, background-color .2s ease-in-out; + transition: width .2s ease-out .2s, height .2s ease-out .2s, + margin-left .2s ease-out .2s, margin-right .2s ease-out .2s, + margin-top .2s ease-out .2s, margin-bottom .2s ease-out .2s, + opacity .2s ease-in-out, background-color .2s ease-in-out; + } + + + +/* +------------------------------------------------------------------------------------------------------------------------ +6. SCROLLBAR COLORS, OPACITY AND BACKGROUNDS +------------------------------------------------------------------------------------------------------------------------ +*/ + + /* + ---------------------------------------- + 6.1 THEMES + ---------------------------------------- + */ + + /* default theme ("light") */ + + .mCSB_scrollTools{ opacity: 0.75; filter: "alpha(opacity=75)"; -ms-filter: "alpha(opacity=75)"; } + + .mCS-autoHide > .mCustomScrollBox > .mCSB_scrollTools, + .mCS-autoHide > .mCustomScrollBox ~ .mCSB_scrollTools{ opacity: 0; filter: "alpha(opacity=0)"; -ms-filter: "alpha(opacity=0)"; } + + .mCustomScrollbar > .mCustomScrollBox > .mCSB_scrollTools.mCSB_scrollTools_onDrag, + .mCustomScrollbar > .mCustomScrollBox ~ .mCSB_scrollTools.mCSB_scrollTools_onDrag, + .mCustomScrollBox:hover > .mCSB_scrollTools, + .mCustomScrollBox:hover ~ .mCSB_scrollTools, + .mCS-autoHide:hover > .mCustomScrollBox > .mCSB_scrollTools, + .mCS-autoHide:hover > .mCustomScrollBox ~ .mCSB_scrollTools{ opacity: 1; filter: "alpha(opacity=100)"; -ms-filter: "alpha(opacity=100)"; } + + .mCSB_scrollTools .mCSB_draggerRail{ + background-color: #000; background-color: rgba(0,0,0,0.4); + filter: "alpha(opacity=40)"; -ms-filter: "alpha(opacity=40)"; + } + + .mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{ + background-color: #fff; background-color: rgba(255,255,255,0.75); + filter: "alpha(opacity=75)"; -ms-filter: "alpha(opacity=75)"; + } + + .mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar{ + background-color: #fff; background-color: rgba(255,255,255,0.85); + filter: "alpha(opacity=85)"; -ms-filter: "alpha(opacity=85)"; + } + .mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar, + .mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar{ + background-color: #fff; background-color: rgba(255,255,255,0.9); + filter: "alpha(opacity=90)"; -ms-filter: "alpha(opacity=90)"; + } + + .mCSB_scrollTools .mCSB_buttonUp, + .mCSB_scrollTools .mCSB_buttonDown, + .mCSB_scrollTools .mCSB_buttonLeft, + .mCSB_scrollTools .mCSB_buttonRight{ + background-image: url(mCSB_buttons.png); /* css sprites */ + background-repeat: no-repeat; + opacity: 0.4; filter: "alpha(opacity=40)"; -ms-filter: "alpha(opacity=40)"; + } + + .mCSB_scrollTools .mCSB_buttonUp{ + background-position: 0 0; + /* + sprites locations + light: 0 0, -16px 0, -32px 0, -48px 0, 0 -72px, -16px -72px, -32px -72px + dark: -80px 0, -96px 0, -112px 0, -128px 0, -80px -72px, -96px -72px, -112px -72px + */ + } + + .mCSB_scrollTools .mCSB_buttonDown{ + background-position: 0 -20px; + /* + sprites locations + light: 0 -20px, -16px -20px, -32px -20px, -48px -20px, 0 -92px, -16px -92px, -32px -92px + dark: -80px -20px, -96px -20px, -112px -20px, -128px -20px, -80px -92px, -96px -92px, -112 -92px + */ + } + + .mCSB_scrollTools .mCSB_buttonLeft{ + background-position: 0 -40px; + /* + sprites locations + light: 0 -40px, -20px -40px, -40px -40px, -60px -40px, 0 -112px, -20px -112px, -40px -112px + dark: -80px -40px, -100px -40px, -120px -40px, -140px -40px, -80px -112px, -100px -112px, -120px -112px + */ + } + + .mCSB_scrollTools .mCSB_buttonRight{ + background-position: 0 -56px; + /* + sprites locations + light: 0 -56px, -20px -56px, -40px -56px, -60px -56px, 0 -128px, -20px -128px, -40px -128px + dark: -80px -56px, -100px -56px, -120px -56px, -140px -56px, -80px -128px, -100px -128px, -120px -128px + */ + } + + .mCSB_scrollTools .mCSB_buttonUp:hover, + .mCSB_scrollTools .mCSB_buttonDown:hover, + .mCSB_scrollTools .mCSB_buttonLeft:hover, + .mCSB_scrollTools .mCSB_buttonRight:hover{ opacity: 0.75; filter: "alpha(opacity=75)"; -ms-filter: "alpha(opacity=75)"; } + + .mCSB_scrollTools .mCSB_buttonUp:active, + .mCSB_scrollTools .mCSB_buttonDown:active, + .mCSB_scrollTools .mCSB_buttonLeft:active, + .mCSB_scrollTools .mCSB_buttonRight:active{ opacity: 0.9; filter: "alpha(opacity=90)"; -ms-filter: "alpha(opacity=90)"; } + + + + /* theme: "dark" */ + + .mCS-dark.mCSB_scrollTools .mCSB_draggerRail{ background-color: #000; background-color: rgba(0,0,0,0.15); } + + .mCS-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{ background-color: #000; background-color: #eee; } + + .mCS-dark.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar{ background-color: rgba(206, 206, 206, 0.8); } + + .mCS-dark.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar, + .mCS-dark.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar{ background-color: rgba(206, 206, 206, 0.8); } + + .mCS-dark.mCSB_scrollTools .mCSB_buttonUp{ background-position: -80px 0; } + + .mCS-dark.mCSB_scrollTools .mCSB_buttonDown{ background-position: -80px -20px; } + + .mCS-dark.mCSB_scrollTools .mCSB_buttonLeft{ background-position: -80px -40px; } + + .mCS-dark.mCSB_scrollTools .mCSB_buttonRight{ background-position: -80px -56px; } + + /* ---------------------------------------- */ + + + + /* theme: "light-2", "dark-2" */ + + .mCS-light-2.mCSB_scrollTools .mCSB_draggerRail, + .mCS-dark-2.mCSB_scrollTools .mCSB_draggerRail{ + width: 4px; + background-color: #fff; background-color: rgba(255,255,255,0.1); + -webkit-border-radius: 1px; -moz-border-radius: 1px; border-radius: 1px; + } + + .mCS-light-2.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar, + .mCS-dark-2.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{ + width: 4px; + background-color: #fff; background-color: rgba(255,255,255,0.75); + -webkit-border-radius: 1px; -moz-border-radius: 1px; border-radius: 1px; + } + + .mCS-light-2.mCSB_scrollTools_horizontal .mCSB_draggerRail, + .mCS-dark-2.mCSB_scrollTools_horizontal .mCSB_draggerRail, + .mCS-light-2.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar, + .mCS-dark-2.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar{ + width: 100%; + height: 4px; + margin: 6px auto; + } + + .mCS-light-2.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar{ background-color: #fff; background-color: rgba(255,255,255,0.85); } + + .mCS-light-2.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar, + .mCS-light-2.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar{ background-color: #fff; background-color: rgba(255,255,255,0.9); } + + .mCS-light-2.mCSB_scrollTools .mCSB_buttonUp{ background-position: -32px 0; } + + .mCS-light-2.mCSB_scrollTools .mCSB_buttonDown{ background-position: -32px -20px; } + + .mCS-light-2.mCSB_scrollTools .mCSB_buttonLeft{ background-position: -40px -40px; } + + .mCS-light-2.mCSB_scrollTools .mCSB_buttonRight{ background-position: -40px -56px; } + + + /* theme: "dark-2" */ + + .mCS-dark-2.mCSB_scrollTools .mCSB_draggerRail{ + background-color: #000; background-color: rgba(0,0,0,0.1); + -webkit-border-radius: 1px; -moz-border-radius: 1px; border-radius: 1px; + } + + .mCS-dark-2.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{ + background-color: #000; background-color: rgba(0,0,0,0.75); + -webkit-border-radius: 1px; -moz-border-radius: 1px; border-radius: 1px; + } + + .mCS-dark-2.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar{ background-color: #000; background-color: rgba(0,0,0,0.85); } + + .mCS-dark-2.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar, + .mCS-dark-2.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar{ background-color: #000; background-color: rgba(0,0,0,0.9); } + + .mCS-dark-2.mCSB_scrollTools .mCSB_buttonUp{ background-position: -112px 0; } + + .mCS-dark-2.mCSB_scrollTools .mCSB_buttonDown{ background-position: -112px -20px; } + + .mCS-dark-2.mCSB_scrollTools .mCSB_buttonLeft{ background-position: -120px -40px; } + + .mCS-dark-2.mCSB_scrollTools .mCSB_buttonRight{ background-position: -120px -56px; } + + /* ---------------------------------------- */ + + + + /* theme: "light-thick", "dark-thick" */ + + .mCS-light-thick.mCSB_scrollTools .mCSB_draggerRail, + .mCS-dark-thick.mCSB_scrollTools .mCSB_draggerRail{ + width: 4px; + background-color: #fff; background-color: rgba(255,255,255,0.1); + -webkit-border-radius: 2px; -moz-border-radius: 2px; border-radius: 2px; + } + + .mCS-light-thick.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar, + .mCS-dark-thick.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{ + width: 6px; + background-color: #fff; background-color: rgba(255,255,255,0.75); + -webkit-border-radius: 2px; -moz-border-radius: 2px; border-radius: 2px; + } + + .mCS-light-thick.mCSB_scrollTools_horizontal .mCSB_draggerRail, + .mCS-dark-thick.mCSB_scrollTools_horizontal .mCSB_draggerRail{ + width: 100%; + height: 4px; + margin: 6px 0; + } + + .mCS-light-thick.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar, + .mCS-dark-thick.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar{ + width: 100%; + height: 6px; + margin: 5px auto; + } + + .mCS-light-thick.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar{ background-color: #fff; background-color: rgba(255,255,255,0.85); } + + .mCS-light-thick.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar, + .mCS-light-thick.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar{ background-color: #fff; background-color: rgba(255,255,255,0.9); } + + .mCS-light-thick.mCSB_scrollTools .mCSB_buttonUp{ background-position: -16px 0; } + + .mCS-light-thick.mCSB_scrollTools .mCSB_buttonDown{ background-position: -16px -20px; } + + .mCS-light-thick.mCSB_scrollTools .mCSB_buttonLeft{ background-position: -20px -40px; } + + .mCS-light-thick.mCSB_scrollTools .mCSB_buttonRight{ background-position: -20px -56px; } + + + /* theme: "dark-thick" */ + + .mCS-dark-thick.mCSB_scrollTools .mCSB_draggerRail{ + background-color: #000; background-color: rgba(0,0,0,0.1); + -webkit-border-radius: 2px; -moz-border-radius: 2px; border-radius: 2px; + } + + .mCS-dark-thick.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{ + background-color: #000; background-color: rgba(0,0,0,0.75); + -webkit-border-radius: 2px; -moz-border-radius: 2px; border-radius: 2px; + } + + .mCS-dark-thick.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar{ background-color: #000; background-color: rgba(0,0,0,0.85); } + + .mCS-dark-thick.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar, + .mCS-dark-thick.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar{ background-color: #000; background-color: rgba(0,0,0,0.9); } + + .mCS-dark-thick.mCSB_scrollTools .mCSB_buttonUp{ background-position: -96px 0; } + + .mCS-dark-thick.mCSB_scrollTools .mCSB_buttonDown{ background-position: -96px -20px; } + + .mCS-dark-thick.mCSB_scrollTools .mCSB_buttonLeft{ background-position: -100px -40px; } + + .mCS-dark-thick.mCSB_scrollTools .mCSB_buttonRight{ background-position: -100px -56px; } + + /* ---------------------------------------- */ + + + + /* theme: "light-thin", "dark-thin" */ + + .mCS-light-thin.mCSB_scrollTools .mCSB_draggerRail{ background-color: #fff; background-color: rgba(255,255,255,0.1); } + + .mCS-light-thin.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar, + .mCS-dark-thin.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{ width: 2px; } + + .mCS-light-thin.mCSB_scrollTools_horizontal .mCSB_draggerRail, + .mCS-dark-thin.mCSB_scrollTools_horizontal .mCSB_draggerRail{ width: 100%; } + + .mCS-light-thin.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar, + .mCS-dark-thin.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar{ + width: 100%; + height: 2px; + margin: 7px auto; + } + + + /* theme "dark-thin" */ + + .mCS-dark-thin.mCSB_scrollTools .mCSB_draggerRail{ background-color: #000; background-color: rgba(0,0,0,0.15); } + + .mCS-dark-thin.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{ background-color: #000; background-color: rgba(0,0,0,0.75); } + + .mCS-dark-thin.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar{ background-color: #000; background-color: rgba(0,0,0,0.85); } + + .mCS-dark-thin.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar, + .mCS-dark-thin.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar{ background-color: #000; background-color: rgba(0,0,0,0.9); } + + .mCS-dark-thin.mCSB_scrollTools .mCSB_buttonUp{ background-position: -80px 0; } + + .mCS-dark-thin.mCSB_scrollTools .mCSB_buttonDown{ background-position: -80px -20px; } + + .mCS-dark-thin.mCSB_scrollTools .mCSB_buttonLeft{ background-position: -80px -40px; } + + .mCS-dark-thin.mCSB_scrollTools .mCSB_buttonRight{ background-position: -80px -56px; } + + /* ---------------------------------------- */ + + + + /* theme "rounded", "rounded-dark", "rounded-dots", "rounded-dots-dark" */ + + .mCS-rounded.mCSB_scrollTools .mCSB_draggerRail{ background-color: #fff; background-color: rgba(255,255,255,0.15); } + + .mCS-rounded.mCSB_scrollTools .mCSB_dragger, + .mCS-rounded-dark.mCSB_scrollTools .mCSB_dragger, + .mCS-rounded-dots.mCSB_scrollTools .mCSB_dragger, + .mCS-rounded-dots-dark.mCSB_scrollTools .mCSB_dragger{ height: 14px; } + + .mCS-rounded.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar, + .mCS-rounded-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar, + .mCS-rounded-dots.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar, + .mCS-rounded-dots-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{ + width: 14px; + margin: 0 1px; + } + + .mCS-rounded.mCSB_scrollTools_horizontal .mCSB_dragger, + .mCS-rounded-dark.mCSB_scrollTools_horizontal .mCSB_dragger, + .mCS-rounded-dots.mCSB_scrollTools_horizontal .mCSB_dragger, + .mCS-rounded-dots-dark.mCSB_scrollTools_horizontal .mCSB_dragger{ width: 14px; } + + .mCS-rounded.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar, + .mCS-rounded-dark.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar, + .mCS-rounded-dots.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar, + .mCS-rounded-dots-dark.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar{ + height: 14px; + margin: 1px 0; + } + + .mCS-rounded.mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_dragger.mCSB_dragger_onDrag_expanded .mCSB_dragger_bar, + .mCS-rounded.mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_draggerContainer:hover .mCSB_dragger .mCSB_dragger_bar, + .mCS-rounded-dark.mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_dragger.mCSB_dragger_onDrag_expanded .mCSB_dragger_bar, + .mCS-rounded-dark.mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_draggerContainer:hover .mCSB_dragger .mCSB_dragger_bar{ + width: 16px; /* auto-expanded scrollbar */ + height: 16px; + margin: -1px 0; + } + + .mCS-rounded.mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_dragger.mCSB_dragger_onDrag_expanded + .mCSB_draggerRail, + .mCS-rounded.mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_draggerContainer:hover .mCSB_draggerRail, + .mCS-rounded-dark.mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_dragger.mCSB_dragger_onDrag_expanded + .mCSB_draggerRail, + .mCS-rounded-dark.mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_draggerContainer:hover .mCSB_draggerRail{ width: 4px; /* auto-expanded scrollbar */ } + + .mCS-rounded.mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_dragger.mCSB_dragger_onDrag_expanded .mCSB_dragger_bar, + .mCS-rounded.mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_draggerContainer:hover .mCSB_dragger .mCSB_dragger_bar, + .mCS-rounded-dark.mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_dragger.mCSB_dragger_onDrag_expanded .mCSB_dragger_bar, + .mCS-rounded-dark.mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_draggerContainer:hover .mCSB_dragger .mCSB_dragger_bar{ + height: 16px; /* auto-expanded scrollbar */ + width: 16px; + margin: 0 -1px; + } + + .mCS-rounded.mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_dragger.mCSB_dragger_onDrag_expanded + .mCSB_draggerRail, + .mCS-rounded.mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_draggerContainer:hover .mCSB_draggerRail, + .mCS-rounded-dark.mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_dragger.mCSB_dragger_onDrag_expanded + .mCSB_draggerRail, + .mCS-rounded-dark.mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_draggerContainer:hover .mCSB_draggerRail{ + height: 4px; /* auto-expanded scrollbar */ + margin: 6px 0; + } + + .mCS-rounded.mCSB_scrollTools .mCSB_buttonUp{ background-position: 0 -72px; } + + .mCS-rounded.mCSB_scrollTools .mCSB_buttonDown{ background-position: 0 -92px; } + + .mCS-rounded.mCSB_scrollTools .mCSB_buttonLeft{ background-position: 0 -112px; } + + .mCS-rounded.mCSB_scrollTools .mCSB_buttonRight{ background-position: 0 -128px; } + + + /* theme "rounded-dark", "rounded-dots-dark" */ + + .mCS-rounded-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar, + .mCS-rounded-dots-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{ background-color: #000; background-color: rgba(0,0,0,0.75); } + + .mCS-rounded-dark.mCSB_scrollTools .mCSB_draggerRail{ background-color: #000; background-color: rgba(0,0,0,0.15); } + + .mCS-rounded-dark.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar, + .mCS-rounded-dots-dark.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar{ background-color: #000; background-color: rgba(0,0,0,0.85); } + + .mCS-rounded-dark.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar, + .mCS-rounded-dark.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar, + .mCS-rounded-dots-dark.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar, + .mCS-rounded-dots-dark.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar{ background-color: #000; background-color: rgba(0,0,0,0.9); } + + .mCS-rounded-dark.mCSB_scrollTools .mCSB_buttonUp{ background-position: -80px -72px; } + + .mCS-rounded-dark.mCSB_scrollTools .mCSB_buttonDown{ background-position: -80px -92px; } + + .mCS-rounded-dark.mCSB_scrollTools .mCSB_buttonLeft{ background-position: -80px -112px; } + + .mCS-rounded-dark.mCSB_scrollTools .mCSB_buttonRight{ background-position: -80px -128px; } + + + /* theme "rounded-dots", "rounded-dots-dark" */ + + .mCS-rounded-dots.mCSB_scrollTools_vertical .mCSB_draggerRail, + .mCS-rounded-dots-dark.mCSB_scrollTools_vertical .mCSB_draggerRail{ width: 4px; } + + .mCS-rounded-dots.mCSB_scrollTools .mCSB_draggerRail, + .mCS-rounded-dots-dark.mCSB_scrollTools .mCSB_draggerRail, + .mCS-rounded-dots.mCSB_scrollTools_horizontal .mCSB_draggerRail, + .mCS-rounded-dots-dark.mCSB_scrollTools_horizontal .mCSB_draggerRail{ + background-color: transparent; + background-position: center; + } + + .mCS-rounded-dots.mCSB_scrollTools .mCSB_draggerRail, + .mCS-rounded-dots-dark.mCSB_scrollTools .mCSB_draggerRail{ + background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAICAYAAADED76LAAAANElEQVQYV2NkIAAYiVbw//9/Y6DiM1ANJoyMjGdBbLgJQAX/kU0DKgDLkaQAvxW4HEvQFwCRcxIJK1XznAAAAABJRU5ErkJggg=="); + background-repeat: repeat-y; + opacity: 0.3; + filter: "alpha(opacity=30)"; -ms-filter: "alpha(opacity=30)"; + } + + .mCS-rounded-dots.mCSB_scrollTools_horizontal .mCSB_draggerRail, + .mCS-rounded-dots-dark.mCSB_scrollTools_horizontal .mCSB_draggerRail{ + height: 4px; + margin: 6px 0; + background-repeat: repeat-x; + } + + .mCS-rounded-dots.mCSB_scrollTools .mCSB_buttonUp{ background-position: -16px -72px; } + + .mCS-rounded-dots.mCSB_scrollTools .mCSB_buttonDown{ background-position: -16px -92px; } + + .mCS-rounded-dots.mCSB_scrollTools .mCSB_buttonLeft{ background-position: -20px -112px; } + + .mCS-rounded-dots.mCSB_scrollTools .mCSB_buttonRight{ background-position: -20px -128px; } + + + /* theme "rounded-dots-dark" */ + + .mCS-rounded-dots-dark.mCSB_scrollTools .mCSB_draggerRail{ + background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAICAYAAADED76LAAAALElEQVQYV2NkIAAYSVFgDFR8BqrBBEifBbGRTfiPZhpYjiQFBK3A6l6CvgAAE9kGCd1mvgEAAAAASUVORK5CYII="); + } + + .mCS-rounded-dots-dark.mCSB_scrollTools .mCSB_buttonUp{ background-position: -96px -72px; } + + .mCS-rounded-dots-dark.mCSB_scrollTools .mCSB_buttonDown{ background-position: -96px -92px; } + + .mCS-rounded-dots-dark.mCSB_scrollTools .mCSB_buttonLeft{ background-position: -100px -112px; } + + .mCS-rounded-dots-dark.mCSB_scrollTools .mCSB_buttonRight{ background-position: -100px -128px; } + + /* ---------------------------------------- */ + + + + /* theme "3d", "3d-dark", "3d-thick", "3d-thick-dark" */ + + .mCS-3d.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar, + .mCS-3d-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar, + .mCS-3d-thick.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar, + .mCS-3d-thick-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{ + background-repeat: repeat-y; + background-image: -moz-linear-gradient(left, rgba(255,255,255,0.5) 0%, rgba(255,255,255,0) 100%); + background-image: -webkit-gradient(linear, left top, right top, color-stop(0%,rgba(255,255,255,0.5)), color-stop(100%,rgba(255,255,255,0))); + background-image: -webkit-linear-gradient(left, rgba(255,255,255,0.5) 0%,rgba(255,255,255,0) 100%); + background-image: -o-linear-gradient(left, rgba(255,255,255,0.5) 0%,rgba(255,255,255,0) 100%); + background-image: -ms-linear-gradient(left, rgba(255,255,255,0.5) 0%,rgba(255,255,255,0) 100%); + background-image: linear-gradient(to right, rgba(255,255,255,0.5) 0%,rgba(255,255,255,0) 100%); + } + + .mCS-3d.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar, + .mCS-3d-dark.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar, + .mCS-3d-thick.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar, + .mCS-3d-thick-dark.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar{ + background-repeat: repeat-x; + background-image: -moz-linear-gradient(top, rgba(255,255,255,0.5) 0%, rgba(255,255,255,0) 100%); + background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%,rgba(255,255,255,0.5)), color-stop(100%,rgba(255,255,255,0))); + background-image: -webkit-linear-gradient(top, rgba(255,255,255,0.5) 0%,rgba(255,255,255,0) 100%); + background-image: -o-linear-gradient(top, rgba(255,255,255,0.5) 0%,rgba(255,255,255,0) 100%); + background-image: -ms-linear-gradient(top, rgba(255,255,255,0.5) 0%,rgba(255,255,255,0) 100%); + background-image: linear-gradient(to bottom, rgba(255,255,255,0.5) 0%,rgba(255,255,255,0) 100%); + } + + + /* theme "3d", "3d-dark" */ + + .mCS-3d.mCSB_scrollTools_vertical .mCSB_dragger, + .mCS-3d-dark.mCSB_scrollTools_vertical .mCSB_dragger{ height: 70px; } + + .mCS-3d.mCSB_scrollTools_horizontal .mCSB_dragger, + .mCS-3d-dark.mCSB_scrollTools_horizontal .mCSB_dragger{ width: 70px; } + + .mCS-3d.mCSB_scrollTools, + .mCS-3d-dark.mCSB_scrollTools{ + opacity: 1; + filter: "alpha(opacity=30)"; -ms-filter: "alpha(opacity=30)"; + } + + .mCS-3d.mCSB_scrollTools .mCSB_draggerRail, + .mCS-3d.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar, + .mCS-3d-dark.mCSB_scrollTools .mCSB_draggerRail, + .mCS-3d-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{ -webkit-border-radius: 16px; -moz-border-radius: 16px; border-radius: 16px; } + + .mCS-3d.mCSB_scrollTools .mCSB_draggerRail, + .mCS-3d-dark.mCSB_scrollTools .mCSB_draggerRail{ + width: 8px; + background-color: #000; background-color: rgba(0,0,0,0.2); + box-shadow: inset 1px 0 1px rgba(0,0,0,0.5), inset -1px 0 1px rgba(255,255,255,0.2); + } + + .mCS-3d.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar, + .mCS-3d.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar, + .mCS-3d.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar, + .mCS-3d.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar, + .mCS-3d-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar, + .mCS-3d-dark.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar, + .mCS-3d-dark.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar, + .mCS-3d-dark.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar{ background-color: #555; } + + .mCS-3d.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar, + .mCS-3d-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{ width: 8px; } + + .mCS-3d.mCSB_scrollTools_horizontal .mCSB_draggerRail, + .mCS-3d-dark.mCSB_scrollTools_horizontal .mCSB_draggerRail{ + width: 100%; + height: 8px; + margin: 4px 0; + box-shadow: inset 0 1px 1px rgba(0,0,0,0.5), inset 0 -1px 1px rgba(255,255,255,0.2); + } + + .mCS-3d.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar, + .mCS-3d-dark.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar{ + width: 100%; + height: 8px; + margin: 4px auto; + } + + .mCS-3d.mCSB_scrollTools .mCSB_buttonUp{ background-position: -32px -72px; } + + .mCS-3d.mCSB_scrollTools .mCSB_buttonDown{ background-position: -32px -92px; } + + .mCS-3d.mCSB_scrollTools .mCSB_buttonLeft{ background-position: -40px -112px; } + + .mCS-3d.mCSB_scrollTools .mCSB_buttonRight{ background-position: -40px -128px; } + + + /* theme "3d-dark" */ + + .mCS-3d-dark.mCSB_scrollTools .mCSB_draggerRail{ + background-color: #000; background-color: rgba(0,0,0,0.1); + box-shadow: inset 1px 0 1px rgba(0,0,0,0.1); + } + + .mCS-3d-dark.mCSB_scrollTools_horizontal .mCSB_draggerRail{ box-shadow: inset 0 1px 1px rgba(0,0,0,0.1); } + + .mCS-3d-dark.mCSB_scrollTools .mCSB_buttonUp{ background-position: -112px -72px; } + + .mCS-3d-dark.mCSB_scrollTools .mCSB_buttonDown{ background-position: -112px -92px; } + + .mCS-3d-dark.mCSB_scrollTools .mCSB_buttonLeft{ background-position: -120px -112px; } + + .mCS-3d-dark.mCSB_scrollTools .mCSB_buttonRight{ background-position: -120px -128px; } + + /* ---------------------------------------- */ + + + + /* theme: "3d-thick", "3d-thick-dark" */ + + .mCS-3d-thick.mCSB_scrollTools, + .mCS-3d-thick-dark.mCSB_scrollTools{ + opacity: 1; + filter: "alpha(opacity=30)"; -ms-filter: "alpha(opacity=30)"; + } + + .mCS-3d-thick.mCSB_scrollTools, + .mCS-3d-thick-dark.mCSB_scrollTools, + .mCS-3d-thick.mCSB_scrollTools .mCSB_draggerContainer, + .mCS-3d-thick-dark.mCSB_scrollTools .mCSB_draggerContainer{ -webkit-border-radius: 7px; -moz-border-radius: 7px; border-radius: 7px; } + + .mCS-3d-thick.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar, + .mCS-3d-thick-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{ -webkit-border-radius: 5px; -moz-border-radius: 5px; border-radius: 5px; } + + .mCSB_inside + .mCS-3d-thick.mCSB_scrollTools_vertical, + .mCSB_inside + .mCS-3d-thick-dark.mCSB_scrollTools_vertical{ right: 1px; } + + .mCS-3d-thick.mCSB_scrollTools_vertical, + .mCS-3d-thick-dark.mCSB_scrollTools_vertical{ box-shadow: inset 1px 0 1px rgba(0,0,0,0.1), inset 0 0 14px rgba(0,0,0,0.5); } + + .mCS-3d-thick.mCSB_scrollTools_horizontal, + .mCS-3d-thick-dark.mCSB_scrollTools_horizontal{ + bottom: 1px; + box-shadow: inset 0 1px 1px rgba(0,0,0,0.1), inset 0 0 14px rgba(0,0,0,0.5); + } + + .mCS-3d-thick.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar, + .mCS-3d-thick-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{ + box-shadow: inset 1px 0 0 rgba(255,255,255,0.4); + width: 12px; + margin: 2px; + position: absolute; + height: auto; + top: 0; + bottom: 0; + left: 0; + right: 0; + } + + .mCS-3d-thick.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar, + .mCS-3d-thick-dark.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar{ box-shadow: inset 0 1px 0 rgba(255,255,255,0.4); } + + .mCS-3d-thick.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar, + .mCS-3d-thick.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar, + .mCS-3d-thick.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar, + .mCS-3d-thick.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar{ background-color: #555; } + + .mCS-3d-thick.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar, + .mCS-3d-thick-dark.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar{ + height: 12px; + width: auto; + } + + .mCS-3d-thick.mCSB_scrollTools .mCSB_draggerContainer{ + background-color: #000; background-color: rgba(0,0,0,0.05); + box-shadow: inset 1px 1px 16px rgba(0,0,0,0.1); + } + + .mCS-3d-thick.mCSB_scrollTools .mCSB_draggerRail{ background-color: transparent; } + + .mCS-3d-thick.mCSB_scrollTools .mCSB_buttonUp{ background-position: -32px -72px; } + + .mCS-3d-thick.mCSB_scrollTools .mCSB_buttonDown{ background-position: -32px -92px; } + + .mCS-3d-thick.mCSB_scrollTools .mCSB_buttonLeft{ background-position: -40px -112px; } + + .mCS-3d-thick.mCSB_scrollTools .mCSB_buttonRight{ background-position: -40px -128px; } + + + /* theme: "3d-thick-dark" */ + + .mCS-3d-thick-dark.mCSB_scrollTools{ box-shadow: inset 0 0 14px rgba(0,0,0,0.2); } + + .mCS-3d-thick-dark.mCSB_scrollTools_horizontal{ box-shadow: inset 0 1px 1px rgba(0,0,0,0.1), inset 0 0 14px rgba(0,0,0,0.2); } + + .mCS-3d-thick-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{ box-shadow: inset 1px 0 0 rgba(255,255,255,0.4), inset -1px 0 0 rgba(0,0,0,0.2); } + + .mCS-3d-thick-dark.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar{ box-shadow: inset 0 1px 0 rgba(255,255,255,0.4), inset 0 -1px 0 rgba(0,0,0,0.2); } + + .mCS-3d-thick-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar, + .mCS-3d-thick-dark.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar, + .mCS-3d-thick-dark.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar, + .mCS-3d-thick-dark.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar{ background-color: #777; } + + .mCS-3d-thick-dark.mCSB_scrollTools .mCSB_draggerContainer{ + background-color: #fff; background-color: rgba(0,0,0,0.05); + box-shadow: inset 1px 1px 16px rgba(0,0,0,0.1); + } + + .mCS-3d-thick-dark.mCSB_scrollTools .mCSB_draggerRail{ background-color: transparent; } + + .mCS-3d-thick-dark.mCSB_scrollTools .mCSB_buttonUp{ background-position: -112px -72px; } + + .mCS-3d-thick-dark.mCSB_scrollTools .mCSB_buttonDown{ background-position: -112px -92px; } + + .mCS-3d-thick-dark.mCSB_scrollTools .mCSB_buttonLeft{ background-position: -120px -112px; } + + .mCS-3d-thick-dark.mCSB_scrollTools .mCSB_buttonRight{ background-position: -120px -128px; } + + /* ---------------------------------------- */ + + + + /* theme: "minimal", "minimal-dark" */ + + .mCSB_outside + .mCS-minimal.mCSB_scrollTools_vertical, + .mCSB_outside + .mCS-minimal-dark.mCSB_scrollTools_vertical{ + right: 0; + margin: 12px 0; + } + + .mCustomScrollBox.mCS-minimal + .mCSB_scrollTools.mCSB_scrollTools_horizontal, + .mCustomScrollBox.mCS-minimal + .mCSB_scrollTools + .mCSB_scrollTools.mCSB_scrollTools_horizontal, + .mCustomScrollBox.mCS-minimal-dark + .mCSB_scrollTools.mCSB_scrollTools_horizontal, + .mCustomScrollBox.mCS-minimal-dark + .mCSB_scrollTools + .mCSB_scrollTools.mCSB_scrollTools_horizontal{ + bottom: 0; + margin: 0 12px; + } + + /* RTL direction/left-side scrollbar */ + .mCS-dir-rtl > .mCSB_outside + .mCS-minimal.mCSB_scrollTools_vertical, + .mCS-dir-rtl > .mCSB_outside + .mCS-minimal-dark.mCSB_scrollTools_vertical{ + left: 0; + right: auto; + } + + .mCS-minimal.mCSB_scrollTools .mCSB_draggerRail, + .mCS-minimal-dark.mCSB_scrollTools .mCSB_draggerRail{ background-color: transparent; } + + .mCS-minimal.mCSB_scrollTools_vertical .mCSB_dragger, + .mCS-minimal-dark.mCSB_scrollTools_vertical .mCSB_dragger{ height: 50px; } + + .mCS-minimal.mCSB_scrollTools_horizontal .mCSB_dragger, + .mCS-minimal-dark.mCSB_scrollTools_horizontal .mCSB_dragger{ width: 50px; } + + .mCS-minimal.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{ + background-color: #fff; background-color: rgba(255,255,255,0.2); + filter: "alpha(opacity=20)"; -ms-filter: "alpha(opacity=20)"; + } + + .mCS-minimal.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar, + .mCS-minimal.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar{ + background-color: #fff; background-color: rgba(255,255,255,0.5); + filter: "alpha(opacity=50)"; -ms-filter: "alpha(opacity=50)"; + } + + + /* theme: "minimal-dark" */ + + .mCS-minimal-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{ + background-color: #000; background-color: rgba(0,0,0,0.2); + filter: "alpha(opacity=20)"; -ms-filter: "alpha(opacity=20)"; + } + + .mCS-minimal-dark.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar, + .mCS-minimal-dark.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar{ + background-color: #000; background-color: rgba(0,0,0,0.5); + filter: "alpha(opacity=50)"; -ms-filter: "alpha(opacity=50)"; + } + + /* ---------------------------------------- */ + + + + /* theme "light-3", "dark-3" */ + + .mCS-light-3.mCSB_scrollTools .mCSB_draggerRail, + .mCS-dark-3.mCSB_scrollTools .mCSB_draggerRail{ + width: 6px; + background-color: #000; background-color: rgba(0,0,0,0.2); + } + + .mCS-light-3.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar, + .mCS-dark-3.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{ width: 6px; } + + .mCS-light-3.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar, + .mCS-dark-3.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar, + .mCS-light-3.mCSB_scrollTools_horizontal .mCSB_draggerRail, + .mCS-dark-3.mCSB_scrollTools_horizontal .mCSB_draggerRail{ + width: 100%; + height: 6px; + margin: 5px 0; + } + + .mCS-light-3.mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_dragger.mCSB_dragger_onDrag_expanded + .mCSB_draggerRail, + .mCS-light-3.mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_draggerContainer:hover .mCSB_draggerRail, + .mCS-dark-3.mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_dragger.mCSB_dragger_onDrag_expanded + .mCSB_draggerRail, + .mCS-dark-3.mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_draggerContainer:hover .mCSB_draggerRail{ + width: 12px; + } + + .mCS-light-3.mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_dragger.mCSB_dragger_onDrag_expanded + .mCSB_draggerRail, + .mCS-light-3.mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_draggerContainer:hover .mCSB_draggerRail, + .mCS-dark-3.mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_dragger.mCSB_dragger_onDrag_expanded + .mCSB_draggerRail, + .mCS-dark-3.mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_draggerContainer:hover .mCSB_draggerRail{ + height: 12px; + margin: 2px 0; + } + + .mCS-light-3.mCSB_scrollTools .mCSB_buttonUp{ background-position: -32px -72px; } + + .mCS-light-3.mCSB_scrollTools .mCSB_buttonDown{ background-position: -32px -92px; } + + .mCS-light-3.mCSB_scrollTools .mCSB_buttonLeft{ background-position: -40px -112px; } + + .mCS-light-3.mCSB_scrollTools .mCSB_buttonRight{ background-position: -40px -128px; } + + + /* theme "dark-3" */ + + .mCS-dark-3.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{ background-color: #000; background-color: rgba(0,0,0,0.75); } + + .mCS-dark-3.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar{ background-color: #000; background-color: rgba(0,0,0,0.85); } + + .mCS-dark-3.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar, + .mCS-dark-3.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar{ background-color: #000; background-color: rgba(0,0,0,0.9); } + + .mCS-dark-3.mCSB_scrollTools .mCSB_draggerRail{ background-color: #000; background-color: rgba(0,0,0,0.1); } + + .mCS-dark-3.mCSB_scrollTools .mCSB_buttonUp{ background-position: -112px -72px; } + + .mCS-dark-3.mCSB_scrollTools .mCSB_buttonDown{ background-position: -112px -92px; } + + .mCS-dark-3.mCSB_scrollTools .mCSB_buttonLeft{ background-position: -120px -112px; } + + .mCS-dark-3.mCSB_scrollTools .mCSB_buttonRight{ background-position: -120px -128px; } + + /* ---------------------------------------- */ + + + + /* theme "inset", "inset-dark", "inset-2", "inset-2-dark", "inset-3", "inset-3-dark" */ + + .mCS-inset.mCSB_scrollTools .mCSB_draggerRail, + .mCS-inset-dark.mCSB_scrollTools .mCSB_draggerRail, + .mCS-inset-2.mCSB_scrollTools .mCSB_draggerRail, + .mCS-inset-2-dark.mCSB_scrollTools .mCSB_draggerRail, + .mCS-inset-3.mCSB_scrollTools .mCSB_draggerRail, + .mCS-inset-3-dark.mCSB_scrollTools .mCSB_draggerRail{ + width: 12px; + background-color: #000; background-color: rgba(0,0,0,0.2); + } + + .mCS-inset.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar, + .mCS-inset-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar, + .mCS-inset-2.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar, + .mCS-inset-2-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar, + .mCS-inset-3.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar, + .mCS-inset-3-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{ + width: 6px; + margin: 3px 5px; + position: absolute; + height: auto; + top: 0; + bottom: 0; + left: 0; + right: 0; + } + + .mCS-inset.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar, + .mCS-inset-dark.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar, + .mCS-inset-2.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar, + .mCS-inset-2-dark.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar, + .mCS-inset-3.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar, + .mCS-inset-3-dark.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar{ + height: 6px; + margin: 5px 3px; + position: absolute; + width: auto; + top: 0; + bottom: 0; + left: 0; + right: 0; + } + + .mCS-inset.mCSB_scrollTools_horizontal .mCSB_draggerRail, + .mCS-inset-dark.mCSB_scrollTools_horizontal .mCSB_draggerRail, + .mCS-inset-2.mCSB_scrollTools_horizontal .mCSB_draggerRail, + .mCS-inset-2-dark.mCSB_scrollTools_horizontal .mCSB_draggerRail, + .mCS-inset-3.mCSB_scrollTools_horizontal .mCSB_draggerRail, + .mCS-inset-3-dark.mCSB_scrollTools_horizontal .mCSB_draggerRail{ + width: 100%; + height: 12px; + margin: 2px 0; + } + + .mCS-inset.mCSB_scrollTools .mCSB_buttonUp, + .mCS-inset-2.mCSB_scrollTools .mCSB_buttonUp, + .mCS-inset-3.mCSB_scrollTools .mCSB_buttonUp{ background-position: -32px -72px; } + + .mCS-inset.mCSB_scrollTools .mCSB_buttonDown, + .mCS-inset-2.mCSB_scrollTools .mCSB_buttonDown, + .mCS-inset-3.mCSB_scrollTools .mCSB_buttonDown{ background-position: -32px -92px; } + + .mCS-inset.mCSB_scrollTools .mCSB_buttonLeft, + .mCS-inset-2.mCSB_scrollTools .mCSB_buttonLeft, + .mCS-inset-3.mCSB_scrollTools .mCSB_buttonLeft{ background-position: -40px -112px; } + + .mCS-inset.mCSB_scrollTools .mCSB_buttonRight, + .mCS-inset-2.mCSB_scrollTools .mCSB_buttonRight, + .mCS-inset-3.mCSB_scrollTools .mCSB_buttonRight{ background-position: -40px -128px; } + + + /* theme "inset-dark", "inset-2-dark", "inset-3-dark" */ + + .mCS-inset-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar, + .mCS-inset-2-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar, + .mCS-inset-3-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{ background-color: #000; background-color: rgba(0,0,0,0.75); } + + .mCS-inset-dark.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar, + .mCS-inset-2-dark.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar, + .mCS-inset-3-dark.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar{ background-color: #000; background-color: rgba(0,0,0,0.85); } + + .mCS-inset-dark.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar, + .mCS-inset-dark.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar, + .mCS-inset-2-dark.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar, + .mCS-inset-2-dark.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar, + .mCS-inset-3-dark.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar, + .mCS-inset-3-dark.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar{ background-color: #000; background-color: rgba(0,0,0,0.9); } + + .mCS-inset-dark.mCSB_scrollTools .mCSB_draggerRail, + .mCS-inset-2-dark.mCSB_scrollTools .mCSB_draggerRail, + .mCS-inset-3-dark.mCSB_scrollTools .mCSB_draggerRail{ background-color: #000; background-color: rgba(0,0,0,0.1); } + + .mCS-inset-dark.mCSB_scrollTools .mCSB_buttonUp, + .mCS-inset-2-dark.mCSB_scrollTools .mCSB_buttonUp, + .mCS-inset-3-dark.mCSB_scrollTools .mCSB_buttonUp{ background-position: -112px -72px; } + + .mCS-inset-dark.mCSB_scrollTools .mCSB_buttonDown, + .mCS-inset-2-dark.mCSB_scrollTools .mCSB_buttonDown, + .mCS-inset-3-dark.mCSB_scrollTools .mCSB_buttonDown{ background-position: -112px -92px; } + + .mCS-inset-dark.mCSB_scrollTools .mCSB_buttonLeft, + .mCS-inset-2-dark.mCSB_scrollTools .mCSB_buttonLeft, + .mCS-inset-3-dark.mCSB_scrollTools .mCSB_buttonLeft{ background-position: -120px -112px; } + + .mCS-inset-dark.mCSB_scrollTools .mCSB_buttonRight, + .mCS-inset-2-dark.mCSB_scrollTools .mCSB_buttonRight, + .mCS-inset-3-dark.mCSB_scrollTools .mCSB_buttonRight{ background-position: -120px -128px; } + + + /* theme "inset-2", "inset-2-dark" */ + + .mCS-inset-2.mCSB_scrollTools .mCSB_draggerRail, + .mCS-inset-2-dark.mCSB_scrollTools .mCSB_draggerRail{ + background-color: transparent; + border-width: 1px; + border-style: solid; + border-color: #fff; + border-color: rgba(255,255,255,0.2); + -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; + } + + .mCS-inset-2-dark.mCSB_scrollTools .mCSB_draggerRail{ border-color: #000; border-color: rgba(0,0,0,0.2); } + + + /* theme "inset-3", "inset-3-dark" */ + + .mCS-inset-3.mCSB_scrollTools .mCSB_draggerRail{ background-color: #fff; background-color: rgba(255,255,255,0.6); } + + .mCS-inset-3-dark.mCSB_scrollTools .mCSB_draggerRail{ background-color: #000; background-color: rgba(0,0,0,0.6); } + + .mCS-inset-3.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{ background-color: #000; background-color: rgba(0,0,0,0.75); } + + .mCS-inset-3.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar{ background-color: #000; background-color: rgba(0,0,0,0.85); } + + .mCS-inset-3.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar, + .mCS-inset-3.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar{ background-color: #000; background-color: rgba(0,0,0,0.9); } + + .mCS-inset-3-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{ background-color: #fff; background-color: rgba(255,255,255,0.75); } + + .mCS-inset-3-dark.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar{ background-color: #fff; background-color: rgba(255,255,255,0.85); } + + .mCS-inset-3-dark.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar, + .mCS-inset-3-dark.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar{ background-color: #fff; background-color: rgba(255,255,255,0.9); } + + /* ---------------------------------------- */ diff --git a/ext/3rd-party-addons/clarico_shop/static/src/less/responsive_shop.less b/ext/3rd-party-addons/clarico_shop/static/src/less/responsive_shop.less new file mode 100755 index 00000000..d229e7d4 --- /dev/null +++ b/ext/3rd-party-addons/clarico_shop/static/src/less/responsive_shop.less @@ -0,0 +1,253 @@ +@maxScreen: ~"only screen and (max-width: 1400px) and (min-width: 1100px)"; +@minScreen: ~"only screen and (max-width: 1100px)"; +@TabletScreen: ~"only screen and (max-width: 900px)"; +@mobile: ~"only screen and (max-width: 768px)"; +@mobile-small: ~"only screen and (max-width: 500px)"; + +@media (max-width:1400px){ + .product-grid-div{ + width:24.5%; + } +} +@media @maxScreen { + .oe_list{ + width:100%; + } +} + +@media @minScreen { + .product-grid-div{ + width:33%; + } + .oe_list{ + width:100% !important; + } +} + +@media @TabletScreen { + .product-grid-div{ + width:49.5%; + } + .oe_list{ + width:100% !important; + } + + #products_grid .oe_product.oe_grid section { + background: rgba(255, 255, 255, 0.75) !important; + .pt(2%) !important; + } + .clarico_product_breadcrumb{ + .pt(3%); + .pb(3%); + } + .main { + .pt(5%); + } + .right-cnt-maxW{ + width: 100% !important; + } + .view-as-div{ + display:none; + } + .view-as .view-as-right-cnt .filter-sort-by .dropdown-toggle{ + padding: 0px 25px 0 0 !important; + } + .view-as .view-as-right-cnt .filter-show .filter-show-label{ + padding: 0px 25px 0 0 !important; + } + .dropdown_sorty_by, .filter-show{ + border:1px solid black; + .mr(5px); + } + .view-mode{ + .ml(10px); + } + .itemscope-main{ + margin: 0px 10px 0px 10px !important; + } + .oe_grid .production-description + { + .pt(3%); + display: block; + width: 100%; + margin: 0px auto; + } + .strike-through{ + + & span.oe_currency_value{ + .size(12px); + } + } + + .deleted_price_responsive + { + width: auto; + display: block; + .left; + } + + .product-des + { + display: -webkit-inline-flex !important; + + .hover-cnt + { + .bg(#fff); + .mt(0); + } + } + .clear-all-variant{ + clear:both; + .mb(7%); + } +} +@media @mobile { + .product-grid-div{ + width:49.5% !important; + } + .view-as-maxW{ + .pt(0px); + } + + .filter-stick > .view-as-maxW{ + width:100%; + } + .filter-show .dropdown-toggle ,.filter-sort-by .dropdown-toggle{ + width:100px !important; + } + .view-mode .menu-filter{ + .size(12px) !important; + width:100%; + .pb(7%); + .pt(3%); + } + .apply-filter{ + .ml(0) !important; + } + .view-as .view-as-right-cnt .filter-show .filter-show-label + { + .size(12px); + } + .filter-show-label + { + .size(12px); + } + .nav-selection-div{ + .pt(7px) !important; + } + .select-nevigation-home,.select-nevigation-span,.select-nevigation-child{ + .size(10px) !important; + } + .all-category-div ul li a{ + .size(14px) !important; + } + .all-category-div ul > li > ul > li > a,.color-name{ + .size(14px) !important; + } + .nav-stacked-div .type-checkbox label{ + .size(13px) !important; + } + .all-category-div .nav-pills > li.active > a{ + .size(14px) !important; + } + .category,.refined-by-color{ + .size(13px) !important; + } + .apply-filter{ + position: relative; + .ml(5px); + } + .mobile-view-filter-close-btn{ + display:block; + } + .product-image img{ + .left !important; + } + .left_class{ + width:100% !important; + } + .right_class{ + width:100% !important; + .pt(10%) !important; + } + .not_defined h3.css_editable_display{ + .pt(5%); + .pb(5%); + } + .select-nevigation-span{ + .pt(3px); + } + .select-nevigation-child{ + .pt(4px); + } +} +@media @mobile-small { + .product-grid-div{ + width:100% !important; + } + .oe_product{ + width:100% !important; + } + + .filter-option{ + width:90% !important; + top: 10% !important; + left: 5% !important; + } + .nav-selection-div { + .pt(4px) !important; + } + .filter-show .dropdown-toggle ,.filter-sort-by .dropdown-toggle{ + width:140px !important; + } + .view-as-right-cnt{ + .pt(5%); + width:100% !important; + .pl(18px); + .pb(10px); + } + .filter-sort-by{ + .right !important; + } + .dropdown-menu{ + min-width: 140px !important; + } + .filter-stick{ + position: relative; + height: 100px !important; + top:0 !important; + } + .apply-filter-in-page{ + .mt(15px); + } + .menu-filter-div{ + .pb(6px); + } + .production-description{ + width:100% !important; + } + .orignal-price{ + & span.oe_currency_value{ + .size(12px); + } + } + .responsive_price + { + width: auto; + display: block; + } + .product-name-a{ + .pt(5px); + } + .second-level-a , third-level-ul li a{ + .ellipsis; + max-width:200px; + } + .div_c_sub_pc_image .sale-btn::after + { + display:none; + } + + +} + diff --git a/ext/3rd-party-addons/clarico_shop/templates/assets.xml b/ext/3rd-party-addons/clarico_shop/templates/assets.xml new file mode 100755 index 00000000..41183e4f --- /dev/null +++ b/ext/3rd-party-addons/clarico_shop/templates/assets.xml @@ -0,0 +1,24 @@ + + + + diff --git a/ext/3rd-party-addons/clarico_shop/templates/template.xml b/ext/3rd-party-addons/clarico_shop/templates/template.xml new file mode 100755 index 00000000..1fb1d029 --- /dev/null +++ b/ext/3rd-party-addons/clarico_shop/templates/template.xml @@ -0,0 +1,418 @@ + + + + + 17 + + + + 24 + + + + + + + + + + + + + + + + + + + + diff --git a/ext/3rd-party-addons/clarico_shop/tools/__init__.py b/ext/3rd-party-addons/clarico_shop/tools/__init__.py new file mode 100755 index 00000000..086c1dce --- /dev/null +++ b/ext/3rd-party-addons/clarico_shop/tools/__init__.py @@ -0,0 +1 @@ +from . import image \ No newline at end of file diff --git a/ext/3rd-party-addons/clarico_shop/tools/image.py b/ext/3rd-party-addons/clarico_shop/tools/image.py new file mode 100755 index 00000000..4d64d045 --- /dev/null +++ b/ext/3rd-party-addons/clarico_shop/tools/image.py @@ -0,0 +1,53 @@ +from odoo import api, fields, models, tools, _ +import base64 +import codecs +import io +import logging +from PIL import Image +from PIL import ImageEnhance +from random import randrange + +Image.preinit() +Image._initialized = 2 + +_logger = logging.getLogger(__name__) + +from odoo.tools import pycompat +from odoo.tools import image as toolsImage + +def image_get_resized_images(base64_source, return_big=False, return_medium=True, return_small=True, + big_name='image', medium_name='image_medium', small_name='image_small', + avoid_resize_big=True, avoid_resize_medium=False, avoid_resize_small=False): + """ Standard tool function that returns a dictionary containing the + big, medium and small versions of the source image. This function + is meant to be used for the methods of functional fields for + models using images. + + Default parameters are given to be used for the getter of functional + image fields, for example with res.users or res.partner. It returns + only image_medium and image_small values, to update those fields. + + :param base64_source: base64-encoded version of the source + image; if False, all returnes values will be False + :param return_{..}: if set, computes and return the related resizing + of the image + :param {..}_name: key of the resized image in the return dictionary; + 'image', 'image_medium' and 'image_small' by default. + :param avoid_resize_[..]: see avoid_if_small parameter + :return return_dict: dictionary with resized images, depending on + previous parameters. + """ + return_dict = dict() + if isinstance(base64_source, pycompat.text_type): + base64_source = base64_source.encode('ascii') + if return_big: + return_dict[big_name] = toolsImage.image_resize_image_big(base64_source,size=(1024, 1024), avoid_if_small=avoid_resize_big) + if return_medium: + return_dict[medium_name] = toolsImage.image_resize_image_medium(base64_source,size=(600, 600), avoid_if_small=avoid_resize_medium) + if return_small: + return_dict[small_name] = toolsImage.image_resize_image_small(base64_source,size=(150, 150), avoid_if_small=avoid_resize_small) + return return_dict + +toolsImage.image_get_resized_images = image_get_resized_images +tools.image_get_resized_images = image_get_resized_images + diff --git a/ext/3rd-party-addons/clarico_shop/view/product_label.xml b/ext/3rd-party-addons/clarico_shop/view/product_label.xml new file mode 100755 index 00000000..e194fd13 --- /dev/null +++ b/ext/3rd-party-addons/clarico_shop/view/product_label.xml @@ -0,0 +1,55 @@ + + + + + + productlabel.form.view + product.template + + + + + + + + + + + + + label.form.view + product.label + +
    + +
    + + + +
    +
    +
    +
    +
    + + + + Product Label + ir.actions.act_window + product.label + tree,form + + + + +
    +
    diff --git a/ext/3rd-party-addons/clarico_shop/view/product_template.xml b/ext/3rd-party-addons/clarico_shop/view/product_template.xml new file mode 100755 index 00000000..272e27fc --- /dev/null +++ b/ext/3rd-party-addons/clarico_shop/view/product_template.xml @@ -0,0 +1,13 @@ + + + + product.template.common.form_clarico + product.template + + + + + + + + diff --git a/ext/3rd-party-addons/clarico_shop_left_sidebar/__init__.py b/ext/3rd-party-addons/clarico_shop_left_sidebar/__init__.py new file mode 100755 index 00000000..e69de29b diff --git a/ext/3rd-party-addons/clarico_shop_left_sidebar/__manifest__.py b/ext/3rd-party-addons/clarico_shop_left_sidebar/__manifest__.py new file mode 100755 index 00000000..662a3f27 --- /dev/null +++ b/ext/3rd-party-addons/clarico_shop_left_sidebar/__manifest__.py @@ -0,0 +1,26 @@ +{ + # Theme information + 'name' : 'Clarico Shop Left Side Bar', + 'category' : 'Website', + 'version' : '1.0', + 'summary': 'Category Page - Filters at Left', + 'description': """""", + + # Dependencies + 'depends': [ + 'clarico_shop' + ], + + # Views + 'data': [ + 'templates/template.xml', + 'templates/assets.xml', + ], + + # Author + 'author': 'Emipro Technologies Pvt. Ltd.', + 'website': 'http://www.emiprotechnologies.com', + + # Technical + 'installable': True, +} diff --git a/ext/3rd-party-addons/clarico_shop_left_sidebar/static/description/icon.png b/ext/3rd-party-addons/clarico_shop_left_sidebar/static/description/icon.png new file mode 100755 index 00000000..09fd34ab Binary files /dev/null and b/ext/3rd-party-addons/clarico_shop_left_sidebar/static/description/icon.png differ diff --git a/ext/3rd-party-addons/clarico_shop_left_sidebar/static/src/js/shop_left_categ.js b/ext/3rd-party-addons/clarico_shop_left_sidebar/static/src/js/shop_left_categ.js new file mode 100755 index 00000000..3260b5ef --- /dev/null +++ b/ext/3rd-party-addons/clarico_shop_left_sidebar/static/src/js/shop_left_categ.js @@ -0,0 +1,67 @@ +$(document).ready(function(){ + //var find_var = $('body').find('.oe_shop_left'); + if($('div').hasClass('oe_shop_left')) + { + $("div").find(".main").addClass("main_left"); + $("div").find("#products_grid").addClass("main_left_grid"); + $("div").find(".right-cnt-maxW").addClass("right-cnt-maxW_left"); + //$("div").find(".products-grid-main").removeClass("main_left_grid"); + $(".menu-filter").unbind("click"); + $('.menu-filter').css("display","none"); + $("div").find(".right-cnt-maxW").removeClass("right-cnt-maxW"); + if ($(window).width() > 900) { + $('#products_grid_before').removeClass('mCustomScrollbar').removeAttr('data-mcs-theme'); + } + } + + //screen 900 to hide filter + + if ($(window).width() < 900) { + $('.menu-filter').css("display","block"); + $('#products_grid_before').css("display","none"); + $('.main_left_grid').css("cssText", "width: 100% !important;"); + } + if( $(".css_editable_display").css('display') == 'block') { + $('.view-as').css('display','none'); + } +}) + +$(window).load(function(){ + var filter_label = $('.main_left').parent().find('.view-as-div').css("margin-left","0px"); + var filter_label = $('.main_left').parent().find('label.view-label').addClass('filter-label-alignment'); +}) + +//Push toggle for filter option +$(document).ready(function() { + $('.menu-filter').click(function(){ + $("#products_grid_before").addClass('left_products_grid_before'); + $("#products_grid_before").css({"width":"300px","transition":"0.5s"}); + $("#wrapwrap").css({"margin-left":"300px","transition":"0.5s"}); + $('body').css("overflow-x","hidden"); + $(".main-header-maxW").addClass("transparent"); + $('.header_btn_style').css('opacity','0.1 !important'); + $('#products_grid_before').css("display","block"); + }); + $('.mobile-view-filter-close-btn').click(function(){ + $("#products_grid_before").removeClass('left_products_grid_before'); + $("#products_grid_before").css({"width":"0px","transition":"0.5s"}); + $("#wrapwrap").css({"margin-left":"0px","transition":"0.5s"}); + $(".main-header-maxW").removeClass("transparent"); + $('.header_btn_style').css('opacity','1'); + $('#products_grid_before').css("display","none"); + }); +}); +$(document).mouseup(function (e){ + var container = $("#products_grid_before"); + if (!container.is(e.target) && container.has(e.target).length === 0){ + if( $("#products_grid_before").css('width') == '300px' || $("#products_grid_before").css('width') == '250px') { + $("#products_grid_before").removeClass('left_products_grid_before'); + $("#products_grid_before").css({"width":"0px","transition":"0.5s"}); + $("#wrapwrap").css({"margin-left":"0px","transition":"0.5s"}); + $(".main-header-maxW").removeClass("transparent"); + $('.header_btn_style').css('opacity','1'); + $('#products_grid_before').css("display","none"); + } + } + +}); diff --git a/ext/3rd-party-addons/clarico_shop_left_sidebar/static/src/less/shop_left_categ.less b/ext/3rd-party-addons/clarico_shop_left_sidebar/static/src/less/shop_left_categ.less new file mode 100755 index 00000000..c06880c6 --- /dev/null +++ b/ext/3rd-party-addons/clarico_shop_left_sidebar/static/src/less/shop_left_categ.less @@ -0,0 +1,56 @@ +.main_left +{ + .pt(2%); + + #products_grid_before + { + width:23%; + position: relative; + background-color: transparent; + .left; + z-index:100; + } + .left_products_grid_before{ + height: 100%; + width: 0; + position: fixed !important; + z-index: 9999 !important; + top: 0; + left: 0; + background-color: white !important; + overflow-x: hidden; + transition: 0.5s !important; + .pt(6%); + + & .products_grid_before_maxW{ + .pl(10%) !important; + max-width: 100%; + } + } + .products_grid_before_maxW { + .pl(0%) !important; + } +} +.main_left_grid +{ + width: 75% !important; + .right; + + .deleted_price_responsive{ + .left; + } +} +.right-cnt-maxW_left{ + .maxW; +} + +.oe_shop_left{ + width:33% !important; + .pb(2%); + display: inline-block; +} + +.filter-label-alignment{ + padding: 10px 0 !important; + .mr(15px) !important; +} diff --git a/ext/3rd-party-addons/clarico_shop_left_sidebar/static/src/less/shop_left_responsive.less b/ext/3rd-party-addons/clarico_shop_left_sidebar/static/src/less/shop_left_responsive.less new file mode 100755 index 00000000..2a82e842 --- /dev/null +++ b/ext/3rd-party-addons/clarico_shop_left_sidebar/static/src/less/shop_left_responsive.less @@ -0,0 +1,10 @@ +@media (max-width:1200px){ + .oe_shop_left{ + width: 49.5% !important; + } +} +@media (max-width:600px){ + .oe_shop_left{ + width: 100% !important; + } +} \ No newline at end of file diff --git a/ext/3rd-party-addons/clarico_shop_left_sidebar/templates/assets.xml b/ext/3rd-party-addons/clarico_shop_left_sidebar/templates/assets.xml new file mode 100755 index 00000000..18c5b533 --- /dev/null +++ b/ext/3rd-party-addons/clarico_shop_left_sidebar/templates/assets.xml @@ -0,0 +1,13 @@ + + + + \ No newline at end of file diff --git a/ext/3rd-party-addons/clarico_shop_left_sidebar/templates/template.xml b/ext/3rd-party-addons/clarico_shop_left_sidebar/templates/template.xml new file mode 100755 index 00000000..be89f517 --- /dev/null +++ b/ext/3rd-party-addons/clarico_shop_left_sidebar/templates/template.xml @@ -0,0 +1,26 @@ + + + + + diff --git a/ext/3rd-party-addons/clarico_shop_list/__init__.py b/ext/3rd-party-addons/clarico_shop_list/__init__.py new file mode 100755 index 00000000..e69de29b diff --git a/ext/3rd-party-addons/clarico_shop_list/__manifest__.py b/ext/3rd-party-addons/clarico_shop_list/__manifest__.py new file mode 100755 index 00000000..1a94b1aa --- /dev/null +++ b/ext/3rd-party-addons/clarico_shop_list/__manifest__.py @@ -0,0 +1,26 @@ +{ + # Theme information + 'name' : 'Clarico Shop List', + 'category' : 'Website', + 'version' : '1.0', + 'summary': 'Category Page - Showcase Products in List ', + 'description': """""", + + # Dependencies + 'depends': [ + 'clarico_shop' + ], + + # Views + 'data': [ + 'templates/template.xml', + 'templates/assets.xml', + ], + + # Author + 'author': 'Emipro Technologies Pvt. Ltd.', + 'website': 'http://www.emiprotechnologies.com', + + # Technical + 'installable': True, +} diff --git a/ext/3rd-party-addons/clarico_shop_list/static/description/icon.png b/ext/3rd-party-addons/clarico_shop_list/static/description/icon.png new file mode 100755 index 00000000..09fd34ab Binary files /dev/null and b/ext/3rd-party-addons/clarico_shop_list/static/description/icon.png differ diff --git a/ext/3rd-party-addons/clarico_shop_list/static/src/js/shop_list_categ.js b/ext/3rd-party-addons/clarico_shop_list/static/src/js/shop_list_categ.js new file mode 100755 index 00000000..e7299eae --- /dev/null +++ b/ext/3rd-party-addons/clarico_shop_list/static/src/js/shop_list_categ.js @@ -0,0 +1,70 @@ +$(document).ready(function(){ + + if($('div').hasClass('oe_list')) + { + $("div").find(".main").addClass("main_list"); + $("div").find("#products_grid").addClass("main_listid"); + $("div").find(".right-cnt-maxW").addClass("right-cnt-maxW_list"); + // $("div").find(".products-grid-main").removeClass("main_list_grid"); + $("div").find(".in-stock").addClass("in_stock_list"); + $("div").find(".warning").addClass("warning_list"); + $("div").find(".product-name-h5").addClass("product-name-h5_list"); + $("div").find(".product-des").addClass("product-des_list"); + $("div").find(".oe_subdescription").addClass("oe_subdescription_list") + $(".menu-filter").unbind("click"); + $('.menu-filter').css("display","none"); + if ($(window).width() > 900) { + $('#products_grid_before').removeClass('mCustomScrollbar').removeAttr('data-mcs-theme'); + } + //Off product hover effect in list view + $(".itemscope-main").children(".product-des").removeClass("right-animation"); + $(".itemscope-main").off('mouseenter'); + $(".itemscope-main").off('mouseleave'); + } + //screen 900 to hide filter + + if ($(window).width() < 900) { + $('.menu-filter').css("display","block"); + $('#products_grid_before').css("display","none"); + $('.main_listid').css("cssText", "width: 100% !important;"); + } + +//Push toggle for filter option + + $('.menu-filter').click(function(){ + $("#products_grid_before").addClass('list_products_grid_before'); + $("#products_grid_before").css({"width":"300px","transition":"0.5s"}); + $("#wrapwrap").css({"margin-left":"300px","transition":"0.5s"}); + $('body').css("overflow-x","hidden"); + $(".main-header-maxW").addClass("transparent"); + $('.header_btn_style').css('opacity','0.1 !important'); + $('#products_grid_before').css("display","block"); + }); + $('.mobile-view-filter-close-btn').click(function(){ + $("#products_grid_before").removeClass('list_products_grid_before'); + $("#products_grid_before").css({"width":"0px","transition":"0.5s"}); + $("#wrapwrap").css({"margin-left":"0px","transition":"0.5s"}); + $(".main-header-maxW").removeClass("transparent"); + $('.header_btn_style').css('opacity','1'); + $('#products_grid_before').css("display","none"); + }); +}); + +$(window).load(function(){ + var filter_label = $('.main_list').parent().find('.view-as-div').css("margin-left","0px"); + var filter_label = $('.main_list').parent().find('label.view-label').addClass('filter-label-alignment'); +}) +$(document).mouseup(function (e){ + var container = $("#products_grid_before"); + if (!container.is(e.target) && container.has(e.target).length === 0){ + if( $("#products_grid_before").css('width') == '300px' || $("#products_grid_before").css('width') == '250px') { + $("#products_grid_before").removeClass('list_products_grid_before'); + $("#products_grid_before").css({"width":"0px","transition":"0.5s"}); + $("#wrapwrap").css({"margin-left":"0px","transition":"0.5s"}); + $(".main-header-maxW").removeClass("transparent"); + $('.header_btn_style').css('opacity','1'); + $('#products_grid_before').css("display","none"); + } + } + +}); diff --git a/ext/3rd-party-addons/clarico_shop_list/static/src/less/shop_list_categ.less b/ext/3rd-party-addons/clarico_shop_list/static/src/less/shop_list_categ.less new file mode 100755 index 00000000..57fc01c4 --- /dev/null +++ b/ext/3rd-party-addons/clarico_shop_list/static/src/less/shop_list_categ.less @@ -0,0 +1,127 @@ +.main_list +{ + + #products_grid_before + { + width:23%; + position: relative; + background-color: transparent; + .left; + z-index:100; + } + .list_products_grid_before{ + height: 100%; + width: 0; + position: fixed !important; + z-index: 9999 !important; + top: 0; + left: 0; + background-color: white !important; + overflow-x: hidden; + transition: 0.5s !important; + .pt(6%); + + & .products_grid_before_maxW{ + .pl(10%) !important; + } + } + .products_grid_before_maxW { + .pl(0%) !important; + } +} +.main_listid +{ + width: 75% !important; + .right; +} +.right-cnt-maxW_list +{ + width: 90%; + max-width: 1400px !important; + display: block; + margin: 0px auto; +} + +.oe_subdescription_list +{ + display:block !important; + div + { + .muli-regular(); + color: #949494; + line-height: 170%; + .size(13px); + .mb(10px); + text-align: left; + max-width:500px; + } +} + +.oe_product.oe_list { + .pb(5%) !important; + min-height: auto !important; + height:auto !important; + display : inline-block !important; +} +.oe_product.oe_list .itemscope-main { + height: auto; +} +.oe_product.oe_list .oe_product_image { + width: 30% !important; + margin-top:0px; +} +.in_stock_list +{ + float: none; + width: 100%; + .mt(10px); + .mb(14px); + color: green; + span + { + float: none; + } +} +.warning_list{ + float: none; + width: 100%; + .mt(10px); + .mb(14px); + span{ + float: none; + } +} +.oe_list .itemscope-main{ + border:none !important; +} +.product-name-h5_list +{ + float: none; + width:100%; +} +.oe_product.oe_list .product-des +{ + display: block !important; + position: relative; + width: 68% !important; + .right; + .pl(5px); +} +.product-des_list{ + div{ + + & #wishlist_shop, #compare_shop, #quick_view_shop, #addtocart_shop{ + width:auto; + .left; + padding: 0 !important; + } + } +} +.oe_product.oe_list section { + padding: 1px 0px 0px 35px !important; + width:auto; +} + +.product-des_list #compare_shop, .product-des_list #quick_view_shop{ + padding: 0 !important; +} diff --git a/ext/3rd-party-addons/clarico_shop_list/static/src/less/shop_list_responsive.less b/ext/3rd-party-addons/clarico_shop_list/static/src/less/shop_list_responsive.less new file mode 100755 index 00000000..9d4029e9 --- /dev/null +++ b/ext/3rd-party-addons/clarico_shop_list/static/src/less/shop_list_responsive.less @@ -0,0 +1,31 @@ +@media only screen and (max-device-width : 800px) { + #website_published_button{ + position: absolute; + right: 0; + z-index: 9999; + } + .main_listid > .oe_product.oe_list{ + width:100% !important; + } + .oe_list .in-wishlist-heart > a{ + top: 20% !important; + right: 1% !important; + } +} +@media (max-width:600px){ + .oe_list{ + & section{ + width:100% !important; + padding : 0 !important; + background:white !important; + + & .production-description{ + .pt(15px); + } + } + & .product-image{ + min-height: auto !important; + } + } + +} \ No newline at end of file diff --git a/ext/3rd-party-addons/clarico_shop_list/templates/assets.xml b/ext/3rd-party-addons/clarico_shop_list/templates/assets.xml new file mode 100755 index 00000000..5e626266 --- /dev/null +++ b/ext/3rd-party-addons/clarico_shop_list/templates/assets.xml @@ -0,0 +1,13 @@ + + + + \ No newline at end of file diff --git a/ext/3rd-party-addons/clarico_shop_list/templates/template.xml b/ext/3rd-party-addons/clarico_shop_list/templates/template.xml new file mode 100755 index 00000000..b0ddef5e --- /dev/null +++ b/ext/3rd-party-addons/clarico_shop_list/templates/template.xml @@ -0,0 +1,40 @@ + + + + diff --git a/ext/3rd-party-addons/clarico_shop_right_sidebar/__init__.py b/ext/3rd-party-addons/clarico_shop_right_sidebar/__init__.py new file mode 100755 index 00000000..e69de29b diff --git a/ext/3rd-party-addons/clarico_shop_right_sidebar/__manifest__.py b/ext/3rd-party-addons/clarico_shop_right_sidebar/__manifest__.py new file mode 100755 index 00000000..17e8d440 --- /dev/null +++ b/ext/3rd-party-addons/clarico_shop_right_sidebar/__manifest__.py @@ -0,0 +1,26 @@ +{ + # Theme information + 'name' : 'Clarico Shop Right Side Bar', + 'category' : 'Website', + 'version' : '1.0', + 'summary': 'Category Page - Filters at Right', + 'description': """""", + + # Dependencies + 'depends': [ + 'clarico_shop' + ], + + # Views + 'data': [ + 'templates/template.xml', + 'templates/assets.xml', + ], + + # Author + 'author': 'Emipro Technologies Pvt. Ltd.', + 'website': 'http://www.emiprotechnologies.com', + + # Technical + 'installable': True, +} diff --git a/ext/3rd-party-addons/clarico_shop_right_sidebar/static/description/icon.png b/ext/3rd-party-addons/clarico_shop_right_sidebar/static/description/icon.png new file mode 100755 index 00000000..09fd34ab Binary files /dev/null and b/ext/3rd-party-addons/clarico_shop_right_sidebar/static/description/icon.png differ diff --git a/ext/3rd-party-addons/clarico_shop_right_sidebar/static/src/js/shop_right_categ.js b/ext/3rd-party-addons/clarico_shop_right_sidebar/static/src/js/shop_right_categ.js new file mode 100755 index 00000000..74b6f983 --- /dev/null +++ b/ext/3rd-party-addons/clarico_shop_right_sidebar/static/src/js/shop_right_categ.js @@ -0,0 +1,65 @@ +$(document).ready(function(){ + if($('div').hasClass('oe_shop_right')) + { + $("div").find(".main").addClass("main_right"); + $("div").find("#products_grid").addClass("main_right_grid"); + $("div").find(".right-cnt-maxW").addClass("right-cnt-maxW_right"); + // $("div").find(".products-grid-main").removeClass("main_right_grid"); + $(".menu-filter").unbind("click"); + $('.menu-filter').css("display","none"); + $("div").find(".right-cnt-maxW").removeClass("right-cnt-maxW"); + if ($(window).width() > 900) { + $('#products_grid_before').removeClass('mCustomScrollbar').removeAttr('data-mcs-theme'); + } + } + + //screen 900 to hide filter + if ($(window).width() < 900) { + $('.menu-filter').css("display","block"); + $('#products_grid_before').css("display","none"); + $('.main_right_grid').css("cssText", "width: 100% !important;"); + } + + if( $(".css_editable_display").css('display') == 'block') { + $('.view-as').css('display','none'); + } +}) +$(window).load(function(){ + //var filter_label = $('.main_right').parent().find('.view-as-div').css("margin-left","0px"); + var filter_label = $('.main_right').parent().find('label.view-label').addClass('filter-label-alignment'); + +}) +//Push toggle for filter option +$(document).ready(function() { + $('.menu-filter').click(function(){ + $("#products_grid_before").addClass('right_products_grid_before'); + $("#products_grid_before").css({"width":"300px","transition":"0.5s"}); + $("#wrapwrap").css({"margin-left":"300px","transition":"0.5s"}); + $('body').css("overflow-x","hidden"); + $(".main-header-maxW").addClass("transparent"); + $('.header_btn_style').css('opacity','0.1 !important'); + $('#products_grid_before').css("display","block"); + }); + $('.mobile-view-filter-close-btn').click(function(){ + $("#products_grid_before").removeClass('right_products_grid_before'); + $("#products_grid_before").css({"width":"0px","transition":"0.5s"}); + $("#wrapwrap").css({"margin-left":"0px","transition":"0.5s"}); + $(".main-header-maxW").removeClass("transparent"); + $('.header_btn_style').css('opacity','1'); + $('#products_grid_before').css("display","none"); + }); +}); +$(document).mouseup(function (e){ + var container = $("#products_grid_before"); + if (!container.is(e.target) && container.has(e.target).length === 0){ + if( $("#products_grid_before").css('width') == '300px' || $("#products_grid_before").css('width') == '250px') { + $("#products_grid_before").removeClass('right_products_grid_before'); + $("#products_grid_before").css({"width":"0px","transition":"0.5s"}); + $("#wrapwrap").css({"margin-left":"0px","transition":"0.5s"}); + $(".main-header-maxW").removeClass("transparent"); + $('.header_btn_style').css('opacity','1'); + $('#products_grid_before').css("display","none"); + } + } + +}); diff --git a/ext/3rd-party-addons/clarico_shop_right_sidebar/static/src/less/shop_right_categ.less b/ext/3rd-party-addons/clarico_shop_right_sidebar/static/src/less/shop_right_categ.less new file mode 100755 index 00000000..c241fc62 --- /dev/null +++ b/ext/3rd-party-addons/clarico_shop_right_sidebar/static/src/less/shop_right_categ.less @@ -0,0 +1,56 @@ +.main_right +{ + .pt(2%); + + #products_grid_before + { + width:23%; + position: relative; + background-color: transparent; + .right; + z-index:100; + } + .right_products_grid_before{ + height: 100%; + width: 0; + position: fixed !important; + z-index: 9999 !important; + top: 0; + left: 0; + background-color: white !important; + overflow-x: hidden; + transition: 0.5s !important; + .pt(6%); + + & .products_grid_before_maxW{ + + } + } +} +.main_right_grid{ + width: 75% !important; + .right; + } + .right-cnt-maxW_right{ + width: 90%; + max-width: 1400px !important; + display: block; + margin: 0px auto; + } + .oe_shop_right{ + width:33% !important; + .pb(2%); + display : inline-block; + + div { + + } + .deleted_price_responsive{ + .left; + } + } +.oe_subdescription +{ + shopdisplay:none; +} + diff --git a/ext/3rd-party-addons/clarico_shop_right_sidebar/static/src/less/shop_right_responsive.less b/ext/3rd-party-addons/clarico_shop_right_sidebar/static/src/less/shop_right_responsive.less new file mode 100755 index 00000000..b1d00060 --- /dev/null +++ b/ext/3rd-party-addons/clarico_shop_right_sidebar/static/src/less/shop_right_responsive.less @@ -0,0 +1,10 @@ +@media (max-width:1200px){ + .oe_shop_right{ + width: 49.5% !important; + } +} +@media (max-width:600px){ + .oe_shop_right{ + width: 100% !important; + } +} \ No newline at end of file diff --git a/ext/3rd-party-addons/clarico_shop_right_sidebar/templates/assets.xml b/ext/3rd-party-addons/clarico_shop_right_sidebar/templates/assets.xml new file mode 100755 index 00000000..7dc088b7 --- /dev/null +++ b/ext/3rd-party-addons/clarico_shop_right_sidebar/templates/assets.xml @@ -0,0 +1,13 @@ + + + + \ No newline at end of file diff --git a/ext/3rd-party-addons/clarico_shop_right_sidebar/templates/template.xml b/ext/3rd-party-addons/clarico_shop_right_sidebar/templates/template.xml new file mode 100755 index 00000000..bef732d0 --- /dev/null +++ b/ext/3rd-party-addons/clarico_shop_right_sidebar/templates/template.xml @@ -0,0 +1,25 @@ + + + + diff --git a/ext/3rd-party-addons/clarico_signin/__init__.py b/ext/3rd-party-addons/clarico_signin/__init__.py new file mode 100755 index 00000000..9186ee3a --- /dev/null +++ b/ext/3rd-party-addons/clarico_signin/__init__.py @@ -0,0 +1 @@ +from . import model diff --git a/ext/3rd-party-addons/clarico_signin/__manifest__.py b/ext/3rd-party-addons/clarico_signin/__manifest__.py new file mode 100755 index 00000000..d278de5a --- /dev/null +++ b/ext/3rd-party-addons/clarico_signin/__manifest__.py @@ -0,0 +1,27 @@ +{ + # Theme information + 'name' : 'Clarico SignIn', + 'category' : 'Website', + 'version' : '1.0', + 'summary': 'User Sign In Page', + 'description': """""", + + # Dependencies + 'depends': [ + 'clarico_layout' + ], + + # Views + 'data': [ + 'templates/template.xml', + 'templates/assets.xml', + 'view/signin_img.xml', + ], + + # Author + 'author': 'Emipro Technologies Pvt. Ltd.', + 'website': 'http://www.emiprotechnologies.com', + + # Technical + 'installable': True, +} diff --git a/ext/3rd-party-addons/clarico_signin/model/__init__.py b/ext/3rd-party-addons/clarico_signin/model/__init__.py new file mode 100755 index 00000000..ba62e141 --- /dev/null +++ b/ext/3rd-party-addons/clarico_signin/model/__init__.py @@ -0,0 +1,2 @@ +from . import res_config_settings +from . import website diff --git a/ext/3rd-party-addons/clarico_signin/model/res_config_settings.py b/ext/3rd-party-addons/clarico_signin/model/res_config_settings.py new file mode 100755 index 00000000..ff711102 --- /dev/null +++ b/ext/3rd-party-addons/clarico_signin/model/res_config_settings.py @@ -0,0 +1,27 @@ +from odoo import api, fields, models + +class BaseConfigSettings(models.TransientModel): + _inherit = 'res.config.settings' + + signin_bg_image_id = fields.Many2one('ir.attachment') + + @api.model + def get_values(self): + res = super(BaseConfigSettings, self).get_values() + params = self.env['ir.config_parameter'].sudo() + signin_bg_image_id = params.get_param('clarico_signin.signin_bg_image_id', default=False) + if str(signin_bg_image_id) != "False": + res.update(signin_bg_image_id= int(signin_bg_image_id),) + else: + res.update(signin_bg_image_id= False,) + return res + + @api.multi + def set_values(self): + self.ensure_one() + super(BaseConfigSettings, self).set_values() + self.env['ir.config_parameter'].sudo().set_param("clarico_signin.signin_bg_image_id", repr(self.signin_bg_image_id.id)) + + + + diff --git a/ext/3rd-party-addons/clarico_signin/model/website.py b/ext/3rd-party-addons/clarico_signin/model/website.py new file mode 100755 index 00000000..6dbf21c0 --- /dev/null +++ b/ext/3rd-party-addons/clarico_signin/model/website.py @@ -0,0 +1,19 @@ +from odoo import api, fields, models +from odoo.tools import pycompat + +class website(models.Model): + + _inherit = "website" + + def get_bgimage(self): + IrConfigParam = self.env['ir.config_parameter'] + attachment_id = IrConfigParam.sudo().get_param('clarico_signin.signin_bg_image_id',False) + if str(attachment_id) != "False": + signin_bg_image = 0 + if attachment_id : + signin_bg_image = self.env['ir.attachment'].sudo().browse(int(attachment_id)).datas or False + if signin_bg_image : + return signin_bg_image + return False + + diff --git a/ext/3rd-party-addons/clarico_signin/static/description/icon.png b/ext/3rd-party-addons/clarico_signin/static/description/icon.png new file mode 100755 index 00000000..09fd34ab Binary files /dev/null and b/ext/3rd-party-addons/clarico_signin/static/description/icon.png differ diff --git a/ext/3rd-party-addons/clarico_signin/static/src/img/login.jpeg b/ext/3rd-party-addons/clarico_signin/static/src/img/login.jpeg new file mode 100755 index 00000000..290772c8 Binary files /dev/null and b/ext/3rd-party-addons/clarico_signin/static/src/img/login.jpeg differ diff --git a/ext/3rd-party-addons/clarico_signin/static/src/img/signin.jpeg b/ext/3rd-party-addons/clarico_signin/static/src/img/signin.jpeg new file mode 100755 index 00000000..0db25b46 Binary files /dev/null and b/ext/3rd-party-addons/clarico_signin/static/src/img/signin.jpeg differ diff --git a/ext/3rd-party-addons/clarico_signin/static/src/less/clarico_signin.less b/ext/3rd-party-addons/clarico_signin/static/src/less/clarico_signin.less new file mode 100755 index 00000000..7bdbd229 --- /dev/null +++ b/ext/3rd-party-addons/clarico_signin/static/src/less/clarico_signin.less @@ -0,0 +1,147 @@ +.signin_main_div{ + max-width: 1400px; + display: block; + margin: 0px auto; + width:90%; +} +.c-login-input +{ + border: none; + border-bottom: 1px solid #CCC; + border-radius: 0; + box-shadow: unset; + .mb(10%); + background: transparent; + position:relative; + display:inline-block; + + &:focus + { + border-bottom: 2px solid cornflowerblue; + box-shadow: unset; + transition:width 0.5s linear; + } +} + + +.login_btn_main,.db_btn +{ + .bg(@theme-color); + + &:hover + { + .bg(@theme-color); + } +} +.signup_main +{ + background-color:@theme-color !important; + margin-left: 20px; + display: inline-block; + + &:hover + { + text-decoration:none; + } +} +.reset_pw_main +{ + color:@theme-color; + bottom: 5%; + position: absolute; + right: 0; + padding: 0; + .bg(transparent); + + &:hover + { + color:@theme-color; + } +} +.login_btn_main +{ + .left(); +} +.all_login_btns +{ + width:100% !important; + + .pull-right + { + //.common-div; + //float:none !important; + + a:first-child + { + color:@theme-color; + padding: 2px 12px; + display:block; + width:auto; + .left(); + .mb(10px); + .pl(0); + .bg(transparent); + } + } +} + +.login_area +{ + display: block; + margin:0px auto !important; + max-width: 400px !important; +} +.login_area_container +{ + width:30%; + display:block; + float:left; + padding: 18px; + border: 1px solid #ccc; + box-shadow: 1px 1px 9px 0px #ccc; + background-color: white; +} +.login_img_cont +{ + background-image:url('/clarico_signin/static/src/img/login.jpeg'); + width:100%; + background-size:cover; + padding:25%; + background-position: center; +} +.back_home_icon_div{ + position: fixed; + left: 27px; + top: 53px; + .size(30px); + color: white; + width: 60px; + .pt(5px); + .pb(5px); + + & a{ + color:@theme-color; + } +} +.c_reset_login_btns{ + & .pull-right > div > a.btn{ + background:transparent; + } +} +/*.animation_move +{ + -webkit-animation: mymove 2s infinite; + animation: mymove 2s infinite; +} +@-webkit-keyframes mymove { + 0% {left: 0px;} + 50% {left: 30px;} +100%{left:0px;} +} + +@keyframes mymove { + 0% {left: 0px;} + 50% {left: 30px;} +100%{left:0px;} +} +*/ diff --git a/ext/3rd-party-addons/clarico_signin/static/src/less/responsive.less b/ext/3rd-party-addons/clarico_signin/static/src/less/responsive.less new file mode 100755 index 00000000..3767313d --- /dev/null +++ b/ext/3rd-party-addons/clarico_signin/static/src/less/responsive.less @@ -0,0 +1,91 @@ +@media(max-width:1200px) +{ + .login_img_cont { + padding: 32%; + } + .login_area_container + { + width:45% !important; + } +} +@media(max-width:1000px) +{ + + .login_area_container + { + width:90% !important; + } +} + +@media(max-width:800px) +{ + + + .login_area,.clarico_signup,.oe_reset_password_form { + + .mt(30px) !important; + .ml(5%) !important; + + label + { + .size(13px); + } + input#db + { + height: 30px; + } + } + .c-login-input,.c_reset_input { + + .mb(5%); + } + .c_signup_input + { + .mb(0%); + } + .oe_login_buttons .pull-right { + + .mt(5%); + } + .login_img_cont + { + background-image:unset; + + } + .reset_pw_main + { + + bottom: 0; + + } + +} + +@media(max-width:600px) +{ + .login_img_cont + { + background-image:unset; + + } + .oe_login_buttons + { + .mt(10%); + } + .reset_pw_main + { + + bottom: -15%; + + } + .c-login-input,.c_signup_input,.c_reset_input { + .mb(0); + } + .login_area,.clarico_signup,.oe_reset_password_form + { + label + { + .size(12px); + } + } +} diff --git a/ext/3rd-party-addons/clarico_signin/templates/assets.xml b/ext/3rd-party-addons/clarico_signin/templates/assets.xml new file mode 100755 index 00000000..becb6fd5 --- /dev/null +++ b/ext/3rd-party-addons/clarico_signin/templates/assets.xml @@ -0,0 +1,9 @@ + + + + \ No newline at end of file diff --git a/ext/3rd-party-addons/clarico_signin/templates/template.xml b/ext/3rd-party-addons/clarico_signin/templates/template.xml new file mode 100755 index 00000000..d391dd8c --- /dev/null +++ b/ext/3rd-party-addons/clarico_signin/templates/template.xml @@ -0,0 +1,78 @@ + + + + + diff --git a/ext/3rd-party-addons/clarico_signin/view/signin_img.xml b/ext/3rd-party-addons/clarico_signin/view/signin_img.xml new file mode 100755 index 00000000..a625c765 --- /dev/null +++ b/ext/3rd-party-addons/clarico_signin/view/signin_img.xml @@ -0,0 +1,18 @@ + + + + + res.config.settings.inherit.signin + res.config.settings + + + +
    +
    +
    +
    +
    +
    +
    diff --git a/ext/3rd-party-addons/clarico_signup/__init__.py b/ext/3rd-party-addons/clarico_signup/__init__.py new file mode 100755 index 00000000..6ffe5cbb --- /dev/null +++ b/ext/3rd-party-addons/clarico_signup/__init__.py @@ -0,0 +1,2 @@ +from . import model +from . import controllers diff --git a/ext/3rd-party-addons/clarico_signup/__manifest__.py b/ext/3rd-party-addons/clarico_signup/__manifest__.py new file mode 100755 index 00000000..223b1469 --- /dev/null +++ b/ext/3rd-party-addons/clarico_signup/__manifest__.py @@ -0,0 +1,27 @@ +{ + # Theme information + 'name' : 'Clarico SignUp', + 'category' : 'Website', + 'version' : '1.0', + 'summary': 'User Sign Up Page', + 'description': """""", + + # Dependencies + 'depends': [ + 'clarico_layout' + ], + + # Views + 'data': [ + 'templates/template.xml', + 'templates/assets.xml', + 'view/signup_img.xml' + ], + + # Author + 'author': 'Emipro Technologies Pvt. Ltd.', + 'website': 'http://www.emiprotechnologies.com', + + # Technical + 'installable': True, +} diff --git a/ext/3rd-party-addons/clarico_signup/controllers/__init__.py b/ext/3rd-party-addons/clarico_signup/controllers/__init__.py new file mode 100755 index 00000000..757b12a1 --- /dev/null +++ b/ext/3rd-party-addons/clarico_signup/controllers/__init__.py @@ -0,0 +1,2 @@ +# -*- coding: utf-8 -*- +from . import main diff --git a/ext/3rd-party-addons/clarico_signup/controllers/main.py b/ext/3rd-party-addons/clarico_signup/controllers/main.py new file mode 100755 index 00000000..d703bd84 --- /dev/null +++ b/ext/3rd-party-addons/clarico_signup/controllers/main.py @@ -0,0 +1,25 @@ +import logging +import werkzeug +from odoo import http +from odoo.addons.auth_signup.controllers.main import AuthSignupHome +from odoo.http import request + +_logger = logging.getLogger(__name__) + +class claricoSignUp(AuthSignupHome): + + def get_auth_signup_config(self): + res = super(claricoSignUp,self).get_auth_signup_config() + IrConfigParam = request.env['ir.config_parameter'] + attachment_id = IrConfigParam.sudo().get_param('clarico_signup.signup_bg_image_id',False) + if str(attachment_id) != "False": + signup_bg_image = False + if attachment_id : + signup_bg_image = request.env['ir.attachment'].sudo().browse(int(attachment_id)).datas or False + if signup_bg_image : + res.update({'signup_bg_image':signup_bg_image }) + return res + + + + diff --git a/ext/3rd-party-addons/clarico_signup/model/__init__.py b/ext/3rd-party-addons/clarico_signup/model/__init__.py new file mode 100755 index 00000000..0deb68c4 --- /dev/null +++ b/ext/3rd-party-addons/clarico_signup/model/__init__.py @@ -0,0 +1 @@ +from . import res_config_settings diff --git a/ext/3rd-party-addons/clarico_signup/model/res_config_settings.py b/ext/3rd-party-addons/clarico_signup/model/res_config_settings.py new file mode 100755 index 00000000..b005d120 --- /dev/null +++ b/ext/3rd-party-addons/clarico_signup/model/res_config_settings.py @@ -0,0 +1,26 @@ +from odoo import api, fields, models + +class BaseConfigSettings(models.TransientModel): + _inherit = 'res.config.settings' + + signup_bg_image_id = fields.Many2one('ir.attachment') + + @api.model + def get_values(self): + res = super(BaseConfigSettings, self).get_values() + params = self.env['ir.config_parameter'].sudo() + signup_bg_image_id = params.get_param('clarico_signup.signup_bg_image_id', default=False) + if str(signup_bg_image_id) != "False": + res.update(signup_bg_image_id= int(signup_bg_image_id),) + else: + res.update(signup_bg_image_id= False,) + return res + + @api.multi + def set_values(self): + self.ensure_one() + super(BaseConfigSettings, self).set_values() + self.env['ir.config_parameter'].sudo().set_param("clarico_signup.signup_bg_image_id", repr(self.signup_bg_image_id.id)) + + + diff --git a/ext/3rd-party-addons/clarico_signup/static/description/icon.png b/ext/3rd-party-addons/clarico_signup/static/description/icon.png new file mode 100755 index 00000000..09fd34ab Binary files /dev/null and b/ext/3rd-party-addons/clarico_signup/static/description/icon.png differ diff --git a/ext/3rd-party-addons/clarico_signup/static/src/img/signup.jpeg b/ext/3rd-party-addons/clarico_signup/static/src/img/signup.jpeg new file mode 100755 index 00000000..46befe3f Binary files /dev/null and b/ext/3rd-party-addons/clarico_signup/static/src/img/signup.jpeg differ diff --git a/ext/3rd-party-addons/clarico_signup/static/src/less/signup.less b/ext/3rd-party-addons/clarico_signup/static/src/less/signup.less new file mode 100755 index 00000000..1a9b89f3 --- /dev/null +++ b/ext/3rd-party-addons/clarico_signup/static/src/less/signup.less @@ -0,0 +1,121 @@ +.c_signup_link_btn a.btn{ + background: transparent; +} + + +.clarico_signup,.oe_reset_password_form +{ + max-width:400px !important; + display:block; + margin:0px auto; + + + #name + { + .mb(12%); + } +} + + +.c_signup_input,.c_reset_input +{ + border: none; + border-bottom: 1px solid #CCC; + border-radius: 0; + box-shadow: unset; + .mb(5%); + background: transparent; + position:relative; + display:inline-block; + + + &:focus + { + border-bottom: 2px solid cornflowerblue; + box-shadow: unset; + transition:width 0.5s linear; + } +} +.c_signup_btn,.reset_submit_btn +{ + background-color:@theme-color !important; + + &:hover + { + .bg(@theme-color); + } +} +.back_to_login_text,.c_reset_backtologin +{ + color:@theme-color; + padding:10px; + float: left !important; + .bg(transparent); + margin:0 10px !important; + .oswald-regular(); + .uppercase(); + letter-spacing: 1px; + + &:hover + { + color:@theme-color; + .bg(transparent); + } +} +.c_reset_login_btns,.oe_login_buttons +{ + .pull-right + { + //.common-div; + //float:none !important; + + a:first-child + { + color:@theme-color; + padding: 2px 12px; + display:block; + width:auto; + .left(); + .mb(10px); + .pl(0); + } + } + +} +.c_signup_link_btn,.c_reset_login_btns +{ + width:100% !important; + +} +.signup_img_cont +{ + background-image:url('/clarico_signup/static/src/img/signup.jpeg'); + width:100%; + background-size:cover; + padding:25%; + background-position: center; +} +.image_signup_class +{ + img + { + width: 100%; + display: block; + margin: 0px auto; + } +} +.oe_website_login_container +{ + position: fixed; + background-color: #FFF; + z-index: 9999; + top: 0px; + left: 0px; + width: 100%; + height: 100%; + overflow: auto; +} +.login_area_container +{ + position: absolute; +} diff --git a/ext/3rd-party-addons/clarico_signup/templates/assets.xml b/ext/3rd-party-addons/clarico_signup/templates/assets.xml new file mode 100755 index 00000000..7954c09c --- /dev/null +++ b/ext/3rd-party-addons/clarico_signup/templates/assets.xml @@ -0,0 +1,8 @@ + + + + \ No newline at end of file diff --git a/ext/3rd-party-addons/clarico_signup/templates/template.xml b/ext/3rd-party-addons/clarico_signup/templates/template.xml new file mode 100755 index 00000000..d5bbab9b --- /dev/null +++ b/ext/3rd-party-addons/clarico_signup/templates/template.xml @@ -0,0 +1,74 @@ + + + + + + diff --git a/ext/3rd-party-addons/clarico_signup/view/signup_img.xml b/ext/3rd-party-addons/clarico_signup/view/signup_img.xml new file mode 100755 index 00000000..b30ecdfb --- /dev/null +++ b/ext/3rd-party-addons/clarico_signup/view/signup_img.xml @@ -0,0 +1,18 @@ + + + + + res.config.settings.inherit.signup + res.config.settings + + + +
    +
    +
    +
    +
    +
    +
    diff --git a/ext/3rd-party-addons/clarico_similar_product/__init__.py b/ext/3rd-party-addons/clarico_similar_product/__init__.py new file mode 100755 index 00000000..cce2e10e --- /dev/null +++ b/ext/3rd-party-addons/clarico_similar_product/__init__.py @@ -0,0 +1,3 @@ +from . import controller +# -*- encoding: utf-8 -*- +# Part of Odoo. See LICENSE file for full copyright and licensing details. diff --git a/ext/3rd-party-addons/clarico_similar_product/__manifest__.py b/ext/3rd-party-addons/clarico_similar_product/__manifest__.py new file mode 100755 index 00000000..80446d82 --- /dev/null +++ b/ext/3rd-party-addons/clarico_similar_product/__manifest__.py @@ -0,0 +1,26 @@ +{ + # Theme information + 'name' : 'Clarico Similar Product', + 'category' : 'Website', + 'version' : '1.0', + 'summary': 'Show Similar Products', + 'description': """""", + + # Dependencies + 'depends': [ + 'clarico_shop' + ], + + # Views + 'data': [ + 'template/assets.xml', + 'template/template.xml', + ], + + # Author + 'author': 'Emipro Technologies Pvt. Ltd.', + 'website': 'http://www.emiprotechnologies.com', + + # Technical + 'installable': True, +} diff --git a/ext/3rd-party-addons/clarico_similar_product/controller/__init__.py b/ext/3rd-party-addons/clarico_similar_product/controller/__init__.py new file mode 100755 index 00000000..deec4a8b --- /dev/null +++ b/ext/3rd-party-addons/clarico_similar_product/controller/__init__.py @@ -0,0 +1 @@ +from . import main \ No newline at end of file diff --git a/ext/3rd-party-addons/clarico_similar_product/controller/main.py b/ext/3rd-party-addons/clarico_similar_product/controller/main.py new file mode 100755 index 00000000..6e62a140 --- /dev/null +++ b/ext/3rd-party-addons/clarico_similar_product/controller/main.py @@ -0,0 +1,44 @@ +import odoo +from odoo import http +from odoo.http import request + + +class claricoSimilarProduct(http.Controller): + @http.route(['/suggest_product'], type='json', auth="public", website=True) + def fetchProduct(self,product_id=None, **kwargs): + Rating = request.env['rating.rating'] + pricelist_context = dict(request.env.context) + if not pricelist_context.get('pricelist'): + pricelist = request.website.get_current_pricelist() + pricelist_context['pricelist'] = pricelist.id + else: + pricelist = request.env['product.pricelist'].browse(pricelist_context['pricelist']) + + request.context = dict(request.context, pricelist=pricelist.id, partner=request.env.user.partner_id) + + rating_templates = {} + compute_currency="" + if product_id : + product_record = request.env['product.template'].search([['id','=',product_id]]) + values = {} + for product_t in product_record.alternative_product_ids: + products = request.env['product.template'].browse(product_t.id) + ratings = Rating.search([('message_id', 'in', products.website_message_ids.ids)]) + rating_message_values = dict([(record.message_id.id, record.rating) for record in ratings]) + rating_product = products.rating_get_stats([('website_published', '=', True)]) + rating_templates[products.id] = rating_product + + from_currency = request.env.user.company_id.currency_id + to_currency = pricelist.currency_id + compute_currency = lambda price: from_currency.compute(price, to_currency) + + if product_record.alternative_product_ids: + values={ + 'product':product_record, + 'rating_product': rating_templates, + 'compute_currency': compute_currency, + 'pricelist': pricelist, + } + response = http.Response(template="clarico_similar_product.clarico_similar_product_record",qcontext=values) + return response.render() + diff --git a/ext/3rd-party-addons/clarico_similar_product/static/description/icon.png b/ext/3rd-party-addons/clarico_similar_product/static/description/icon.png new file mode 100755 index 00000000..09fd34ab Binary files /dev/null and b/ext/3rd-party-addons/clarico_similar_product/static/description/icon.png differ diff --git a/ext/3rd-party-addons/clarico_similar_product/static/src/js/similar_product.js b/ext/3rd-party-addons/clarico_similar_product/static/src/js/similar_product.js new file mode 100755 index 00000000..64c67a9a --- /dev/null +++ b/ext/3rd-party-addons/clarico_similar_product/static/src/js/similar_product.js @@ -0,0 +1,58 @@ + odoo.define('clarico_similar_product.similar_product', function(require) { + "use strict"; + //require('web.dom_ready') + var base = require('web_editor.base'); + var ajax = require('web.ajax'); + var utils = require('web.utils'); + var core = require('web.core'); + var _t = core._t; + + require('web.dom_ready'); + + $(".similar_product").click(function() + { + $('.cus_theme_loader_layout').removeClass('hidden'); + var pid = $(this).attr('data-id'); + ajax.jsonRpc('/suggest_product', 'call', {'product_id':pid}).then(function(data) { + $(".similar_product_popover").css("display","block").addClass("zoom-fadein"); + $('.cus_theme_loader_layout').addClass('hidden'); + $('.similar_product_main-div').html(data); + + //Rating + /*var val_ele = $("input[name='rating']"); + $(val_ele).each(function() + { + var curr_ele=$(this); + var val=curr_ele.attr('data-default'); + var index = Math.floor(val); + var decimal = val - index; + parent=curr_ele.parent() + parent.find('.stars').find("i:lt("+index+")").removeClass('fa-star-o fa-star-half-o').addClass('fa-star'); + if(decimal){ + parent.find('.stars').find("i:eq("+(index)+")").removeClass('fa-star-o fa-star fa-star-half-o').addClass('fa-star-half-o'); + } + });*/ + + //Total similar product - products + var similar_total = $('.similar_total_product').html(); + + if(similar_total > 1){ + $('.similar_product_found').html(similar_total+ " Similar Products Found"); + } + else if(similar_total == 1){ + $('.similar_product_found').html(similar_total+ " Similar Product Found"); + } + }) + }); + + $(".common-close-btn").click(function(){ + $(".similar_product_popover").css("display","none"); + }); + + $(document).on( 'keydown', function(e){ + if(e.keyCode === 27) { + $(".similar_product_popover").css("display","none"); + } + }); +}); + diff --git a/ext/3rd-party-addons/clarico_similar_product/static/src/less/responsive.less b/ext/3rd-party-addons/clarico_similar_product/static/src/less/responsive.less new file mode 100755 index 00000000..e418d0ec --- /dev/null +++ b/ext/3rd-party-addons/clarico_similar_product/static/src/less/responsive.less @@ -0,0 +1,40 @@ + +@media (max-width:1000px){ + .similar_product_div{ + width:23%; + } + .similar_main_product_name{ + width:70% !important; + } +} +@media (max-width:800px){ + .similar_product_div{ + width:31%; + } +} +@media (max-width:600px) { + .similar_product_div { + .similar_product_name { + .size(13px); + } + + } + +.similar_product_div{ + width:48%; + .mb(5%); + } + .similar_main_product_img_div{ + width:15% !important; + .mt(10px); + } + .similar_main_product_name{ + .size(16px) !important; + } + .similar_product_found{ + .size(13px) !important; + } + .no-similar-product-found{ + left:25% !important; + } +} diff --git a/ext/3rd-party-addons/clarico_similar_product/static/src/less/similar_product.less b/ext/3rd-party-addons/clarico_similar_product/static/src/less/similar_product.less new file mode 100755 index 00000000..23fb6625 --- /dev/null +++ b/ext/3rd-party-addons/clarico_similar_product/static/src/less/similar_product.less @@ -0,0 +1,110 @@ +.similar_product{ + display: block; + .size(14px); + color: #000; + opacity: 1.0 !important; + .left(); +} + +.similar_product_popover{ + width: 100%; + position: fixed; + z-index: 9999; + height: 100%; + top: 0; + left: 0; + bottom: 0; + right: 0; + background: rgba(255, 255, 255, 0.95) !important; + display:none; + overflow:auto; + + .filter-div-maxW + { + .bg(#fff); + } +} +.similar_main{ + .pt(3%); + .common-div; + + & .similar_main_product_img_div{ + width:6%; + .left; + .mr(20px); + + & img{ + width:auto; + max-width:100%; + } + } + & .similar_main_product_name{ + .left; + .size(20px); + .muli-regular; + .ml(10px); + width:90%; + line-height: 158%; + } + & .similar_product_found{ + .size(15px); + .muli-regular; + color: #717171; + .left; + .ml(10px); + + & p{ + .left; + } + } +} +.similar_product_main-div{ + .block; +} +.similar_product_details{ + .pt(5%); +} +.similar_product_div{ + width:18%; + .left; + margin:1%; + + .similar_product_img{ + width:100%; + border: 1px solid #ccc; + + & img{ + width:auto; + max-width:100%; + } + } + .similar_product_name{ + .capitalize; + .size(14px); + .muli-regular; + + & a{ + color: #717171; + .ellipsis; + max-width:90%; + } + } + .similar_product_price{ + .size(13px); + .common-div; + + & p{ + margin:0; + } + } +} +.no-similar-product-found{ + transition: opacity 1s; + position: fixed; + width: 90%; + .size(19px); + .muli-regular; + top:45%; + left:40%; +} + diff --git a/ext/3rd-party-addons/clarico_similar_product/template/assets.xml b/ext/3rd-party-addons/clarico_similar_product/template/assets.xml new file mode 100755 index 00000000..cb34d2ed --- /dev/null +++ b/ext/3rd-party-addons/clarico_similar_product/template/assets.xml @@ -0,0 +1,11 @@ + + + + diff --git a/ext/3rd-party-addons/clarico_similar_product/template/template.xml b/ext/3rd-party-addons/clarico_similar_product/template/template.xml new file mode 100755 index 00000000..8c8fd6eb --- /dev/null +++ b/ext/3rd-party-addons/clarico_similar_product/template/template.xml @@ -0,0 +1,83 @@ + + + + + + + + diff --git a/ext/3rd-party-addons/clarico_slider_style_1/__init__.py b/ext/3rd-party-addons/clarico_slider_style_1/__init__.py new file mode 100755 index 00000000..e69de29b diff --git a/ext/3rd-party-addons/clarico_slider_style_1/__manifest__.py b/ext/3rd-party-addons/clarico_slider_style_1/__manifest__.py new file mode 100755 index 00000000..0a944944 --- /dev/null +++ b/ext/3rd-party-addons/clarico_slider_style_1/__manifest__.py @@ -0,0 +1,27 @@ +{ + # Theme information + 'name' : 'Clarico Slider Style 1', + 'category' : 'Website', + 'version' : '1.0', + 'summary': 'CMS Building Blocks', + 'description': """""", + + # Dependencies + 'depends': [ + 'clarico_snippets' + ], + + # Views + 'data': [ + 'templates/template.xml', + 'templates/assets.xml', + ], + + # Author + 'author': 'Emipro Technologies Pvt. Ltd.', + 'website': 'http://www.emiprotechnologies.com', + + # Technical + 'installable': True, +} + diff --git a/ext/3rd-party-addons/clarico_slider_style_1/static/description/icon.png b/ext/3rd-party-addons/clarico_slider_style_1/static/description/icon.png new file mode 100755 index 00000000..bfafc926 Binary files /dev/null and b/ext/3rd-party-addons/clarico_slider_style_1/static/description/icon.png differ diff --git a/ext/3rd-party-addons/clarico_slider_style_1/static/src/img/banner-1.jpg b/ext/3rd-party-addons/clarico_slider_style_1/static/src/img/banner-1.jpg new file mode 100755 index 00000000..ad154d14 Binary files /dev/null and b/ext/3rd-party-addons/clarico_slider_style_1/static/src/img/banner-1.jpg differ diff --git a/ext/3rd-party-addons/clarico_slider_style_1/static/src/img/snippet_icon.jpg b/ext/3rd-party-addons/clarico_slider_style_1/static/src/img/snippet_icon.jpg new file mode 100755 index 00000000..33c4dc8a Binary files /dev/null and b/ext/3rd-party-addons/clarico_slider_style_1/static/src/img/snippet_icon.jpg differ diff --git a/ext/3rd-party-addons/clarico_slider_style_1/static/src/less/slider_1.less b/ext/3rd-party-addons/clarico_slider_style_1/static/src/less/slider_1.less new file mode 100755 index 00000000..8e829e9b --- /dev/null +++ b/ext/3rd-party-addons/clarico_slider_style_1/static/src/less/slider_1.less @@ -0,0 +1,140 @@ +.slider_section{ + .common-div(); +} +.slider_wrapper_ic{ + .common-div(); + & .layer_caption { + top: 0; + color: #fff; + position: absolute; + width: 100%; + height: 100%; + padding: 20px; + } + + .carousel-inner + { + .item + { + padding: 20%; + background-repeat: no-repeat; + background-position: center; + } + } + + & .carousel-indicators + { + .mb(0); + + li{ + border-radius:0; + transform: rotate(45deg); + margin: 0 3px; + border:1px solid black; + box-shadow:none !important; + width: 10px !important; + height: 10px !important; + vertical-align:middle; + + &.active{ + border:2px solid black !important; + .bg(#2b2b2b) !important; + } + } + } + & .ic_carousel_caption{ + left: 3%; + padding: 35px; + border: none; + position: absolute; + width: 50%; + max-width: 100%; + text-align: left; + margin: 0; + + & h2{ + margin:0; + padding:20px 0px; + .size(50px); + } + & p{ + margin:0; + padding:10px 0px; + .size(16px); + } + & .caption_btn_wrapper{ + .pt(40px); + } + + & .btn_read_more{ + height: 50px; + border: 2px solid transparent; + padding: 0 25px; + font-size: 14px; + text-transform: uppercase; + display: inline-block; + .bg(#2196F3); + &:hover{ + .bg(transparent); + color:#2196F3; + border: 1px solid #2196F3; + } + } + } + .carousel-control{ + height: 50px; + width: 50px !important; + top: 0; + bottom: 0; + margin: auto; + background: #000; + opacity:1 !important; + &.right{ + .right(20px); + } + &.left{ + .left(20px); + } + & i{ + .top(8px) !important; + .left(20px) !important; + .size(30px); + } + } +} + + +@media (max-width:1000px) +{ + .slider_wrapper_ic .carousel-control + { + height: 40px; + width: 40px !important; + + i + { + top: 6px !important; + left: 14px !important; + .size(26px); + } + } + +} + +@media (max-width:600px) +{ + .slider_wrapper_ic .carousel-control + { + height: 25px; + width: 25px !important; + + i + { + top: 3px !important; + left: 8px !important; + .size(18px); + } + } + +} + diff --git a/ext/3rd-party-addons/clarico_slider_style_1/templates/assets.xml b/ext/3rd-party-addons/clarico_slider_style_1/templates/assets.xml new file mode 100755 index 00000000..35758651 --- /dev/null +++ b/ext/3rd-party-addons/clarico_slider_style_1/templates/assets.xml @@ -0,0 +1,11 @@ + + + + + + \ No newline at end of file diff --git a/ext/3rd-party-addons/clarico_slider_style_1/templates/template.xml b/ext/3rd-party-addons/clarico_slider_style_1/templates/template.xml new file mode 100755 index 00000000..075b2403 --- /dev/null +++ b/ext/3rd-party-addons/clarico_slider_style_1/templates/template.xml @@ -0,0 +1,42 @@ + + + + + + + \ No newline at end of file diff --git a/ext/3rd-party-addons/clarico_slider_style_2/__init__.py b/ext/3rd-party-addons/clarico_slider_style_2/__init__.py new file mode 100755 index 00000000..e69de29b diff --git a/ext/3rd-party-addons/clarico_slider_style_2/__manifest__.py b/ext/3rd-party-addons/clarico_slider_style_2/__manifest__.py new file mode 100755 index 00000000..d8ad5336 --- /dev/null +++ b/ext/3rd-party-addons/clarico_slider_style_2/__manifest__.py @@ -0,0 +1,27 @@ +{ + # Theme information + 'name' : 'Clarico Slider Style 2', + 'category' : 'Website', + 'version' : '1.0', + 'summary': 'CMS Building Blocks', + 'description': """""", + + # Dependencies + 'depends': [ + 'clarico_snippets' + ], + + # Views + 'data': [ + 'templates/template.xml', + 'templates/assets.xml', + ], + + # Author + 'author': 'Emipro Technologies Pvt. Ltd.', + 'website': 'http://www.emiprotechnologies.com', + + # Technical + 'installable': True, +} + diff --git a/ext/3rd-party-addons/clarico_slider_style_2/static/description/icon.png b/ext/3rd-party-addons/clarico_slider_style_2/static/description/icon.png new file mode 100755 index 00000000..bfafc926 Binary files /dev/null and b/ext/3rd-party-addons/clarico_slider_style_2/static/description/icon.png differ diff --git a/ext/3rd-party-addons/clarico_slider_style_2/static/src/img/banner-1.jpg b/ext/3rd-party-addons/clarico_slider_style_2/static/src/img/banner-1.jpg new file mode 100755 index 00000000..4751778c Binary files /dev/null and b/ext/3rd-party-addons/clarico_slider_style_2/static/src/img/banner-1.jpg differ diff --git a/ext/3rd-party-addons/clarico_slider_style_2/static/src/img/slider_2.jpg b/ext/3rd-party-addons/clarico_slider_style_2/static/src/img/slider_2.jpg new file mode 100755 index 00000000..1b59b8c7 Binary files /dev/null and b/ext/3rd-party-addons/clarico_slider_style_2/static/src/img/slider_2.jpg differ diff --git a/ext/3rd-party-addons/clarico_slider_style_2/static/src/less/slider_2.less b/ext/3rd-party-addons/clarico_slider_style_2/static/src/less/slider_2.less new file mode 100755 index 00000000..6564c771 --- /dev/null +++ b/ext/3rd-party-addons/clarico_slider_style_2/static/src/less/slider_2.less @@ -0,0 +1,157 @@ +.slider_section{ + .common-div(); +} +.slider_wrapper_lc{ + .common-div(); + & .layer_caption { + top: 0; + color: #fff; + position: absolute; + width: 100%; + height: 100%; + background-color: rgba(121,130,145, 0.7); + } + & .carousel-indicators + { + .mb(0); + + li{ + border-radius:0; + transform: rotate(45deg); + margin: 0 3px; + width: 10px !important; + height: 10px !important; + vertical-align:middle; + } + } + .carousel-inner + { + .item + { + padding: 25%; + background-repeat: no-repeat; + background-position: center; + } + } + & .lc_carousel_caption{ + position: absolute; + top: 10%; + left: 3%; + background: rgba(255,255,255,0.6); + padding: 35px; + border: none; + width: 40%; + animation: zoom-out 0.8s ease-in; + + + @keyframes zoom-out{ + from{transform:scale(0.1)} + to{transform:scale(1)} + } + + + & h2{ + margin:0; + padding:20px 0px; + .size(45px); + .muli-semibold(); + color: #444; + line-height: 140%; + .uppercase(); + } + .lc_caption_para + { + .mb(5%); + } + & p{ + margin:0; + padding:10px 0px; + .size(15px); + color: #555; + line-height: 175%; + } + } + .carousel-control{ + height: 90px; + width: 65px !important; + top: 0; + bottom: 0; + margin: auto; + background: #ffffff; + color: #2196F3; + text-shadow: none; + line-height: 90px; + font-size: 38px; + opacity: 1; + & i{ + .top(25px) !important; + .left(25px) !important; + } + } +} + + +@media (max-width:1200px) +{ + .slider_wrapper_lc .lc_carousel_caption h2 + { + .size(40px); + } + .slider_wrapper_lc .lc_carousel_caption p + { + .size(14px); + } +} + +@media (max-width:1000px) +{ + .slider_wrapper_lc .lc_carousel_caption h2 + { + .size(30px); + } + .slider_wrapper_lc .lc_carousel_caption + { + width: 50%; + padding: 20px; + } +} +@media (max-width:800px) +{ + .slider_wrapper_lc .lc_carousel_caption { + width: 90%; + padding: 20px; + left: 5%; + } + .slider_wrapper_lc .lc_carousel_caption h2 { + .size(25px); + padding: 10px 0px; + } + .slider_wrapper_lc .lc_carousel_caption .lc_caption_para { + .mb(3%); + + } +} +@media (max-width:600px) +{ + .slider_wrapper_lc .lc_carousel_caption p { + .size(13px); + } + .slider_wrapper_lc .lc_carousel_caption h2 { + .size(20px); + padding: 5px 0px; + } + .slider_wrapper_lc .lc_carousel_caption { + width: 95%; + padding: 15px; + left: 2.5%; + top: 5%; + } + +} +@media (max-width:500px) +{ + .slider_wrapper_lc .lc_carousel_caption { + display:none; + } + +} diff --git a/ext/3rd-party-addons/clarico_slider_style_2/templates/assets.xml b/ext/3rd-party-addons/clarico_slider_style_2/templates/assets.xml new file mode 100755 index 00000000..45c1840c --- /dev/null +++ b/ext/3rd-party-addons/clarico_slider_style_2/templates/assets.xml @@ -0,0 +1,12 @@ + + + + + + \ No newline at end of file diff --git a/ext/3rd-party-addons/clarico_slider_style_2/templates/template.xml b/ext/3rd-party-addons/clarico_slider_style_2/templates/template.xml new file mode 100755 index 00000000..7e0ae203 --- /dev/null +++ b/ext/3rd-party-addons/clarico_slider_style_2/templates/template.xml @@ -0,0 +1,48 @@ + + + + + + + \ No newline at end of file diff --git a/ext/3rd-party-addons/clarico_slider_style_3/__init__.py b/ext/3rd-party-addons/clarico_slider_style_3/__init__.py new file mode 100755 index 00000000..e69de29b diff --git a/ext/3rd-party-addons/clarico_slider_style_3/__manifest__.py b/ext/3rd-party-addons/clarico_slider_style_3/__manifest__.py new file mode 100755 index 00000000..029c9389 --- /dev/null +++ b/ext/3rd-party-addons/clarico_slider_style_3/__manifest__.py @@ -0,0 +1,27 @@ +{ + # Theme information + 'name' : 'Clarico Slider Style 3', + 'category' : 'Website', + 'version' : '1.0', + 'summary': 'CMS Building Blocks', + 'description': """""", + + # Dependencies + 'depends': [ + 'clarico_snippets' + ], + + # Views + 'data': [ + 'templates/template.xml', + 'templates/assets.xml', + ], + + # Author + 'author': 'Emipro Technologies Pvt. Ltd.', + 'website': 'http://www.emiprotechnologies.com', + + # Technical + 'installable': True, +} + diff --git a/ext/3rd-party-addons/clarico_slider_style_3/static/description/icon.png b/ext/3rd-party-addons/clarico_slider_style_3/static/description/icon.png new file mode 100755 index 00000000..bfafc926 Binary files /dev/null and b/ext/3rd-party-addons/clarico_slider_style_3/static/description/icon.png differ diff --git a/ext/3rd-party-addons/clarico_slider_style_3/static/src/img/banner-1.jpeg b/ext/3rd-party-addons/clarico_slider_style_3/static/src/img/banner-1.jpeg new file mode 100755 index 00000000..1158f09e Binary files /dev/null and b/ext/3rd-party-addons/clarico_slider_style_3/static/src/img/banner-1.jpeg differ diff --git a/ext/3rd-party-addons/clarico_slider_style_3/static/src/img/slider_3.jpg b/ext/3rd-party-addons/clarico_slider_style_3/static/src/img/slider_3.jpg new file mode 100755 index 00000000..82c3198b Binary files /dev/null and b/ext/3rd-party-addons/clarico_slider_style_3/static/src/img/slider_3.jpg differ diff --git a/ext/3rd-party-addons/clarico_slider_style_3/static/src/less/slider_3.less b/ext/3rd-party-addons/clarico_slider_style_3/static/src/less/slider_3.less new file mode 100755 index 00000000..6074cd76 --- /dev/null +++ b/ext/3rd-party-addons/clarico_slider_style_3/static/src/less/slider_3.less @@ -0,0 +1,243 @@ +.slider_section{ + .common-div(); +} +.slider_wrapper_lc2{ + .common-div(); + & .layer_caption { + top: 0; + color: #fff; + position: absolute; + width: 100%; + height: 100%; + padding: 20px; + } + & .carousel-indicators li{ + border-radius:0; + transform: rotate(45deg); + margin: 0 3px; + width: 10px !important; + height: 10px !important; + } + .carousel-inner + { + .item + { + padding: 25%; + background-repeat: no-repeat; + background-position: center; + } + } + & .lc2_carousel_caption{ + top: 20%; + left:5%; + padding: 35px; + border: none; + position: absolute; + width: 60%; + max-width: 100%; + text-align: left; + margin: 0; + + + & h2{ + margin:0; + padding:20px 0px; + .size(45px); + .muli-semibold(); + color:#fff; + .uppercase(); + + } + .lc_caption_para + { + .mb(5%); + } + & p{ + margin:0; + padding:10px 0px; + .size(15px); + color:#ddd; + max-width: 480px; + line-height: 165%; + } + } + + & .carousel-control.left, .carousel-control.right{ + background-image : none; + } + & .carousel-control.right{ + width: 40px; + right : 16px; + + & i{ + top : 45%; + .bg(rgba(0,0,0,0.5)); + .p(40px 10px 40px 12px); + } + } + & .carousel-control.left{ + width: 40px; + left : 15px; + + & i{ + top : 45%; + .bg(rgba(0,0,0,0.5)); + .p(40px 12px 40px 10px); + } + } + & .carousel-indicators{ + + .mb(0); + + & li{ + width: 14px; + height: 14px; + .mr(4px); + vertical-align:middle; + } + & li.active{ + width: 14px; + height: 14px; + } + } +} +/* Animation Zoom */ +.animate_effect{ + .opacity(0); + animation: animatezoom 0.8s ease-in both; + animation-delay: 1s; +} +@keyframes animatezoom{ + from{ + transform:scale(0); + opacity:0; + } + to{ + transform:scale(1); + opacity:1; + } +} + + +.carousel-fade .carousel-inner .item { + .opacity(0); + transition-property: opacity; + -webkit-transition-property: opacity; + -moz-transition-property: opacity; +} + +.carousel-fade .carousel-inner .active { + .opacity(1); +} + +.carousel-fade .carousel-inner .active.left, +.carousel-fade .carousel-inner .active.right { + left: 0; + .opacity(0); + z-index: 1; +} + +.carousel-fade .carousel-inner .next.left, +.carousel-fade .carousel-inner .prev.right { + .opacity(1); +} + +.carousel-fade .carousel-control { + z-index: 2; +} + +@media all and (transform-3d), (-webkit-transform-3d) { + .carousel-fade .carousel-inner > .item.next, + .carousel-fade .carousel-inner > .item.active.right { + .opacity(0); + .transition(all 0.8s ease); + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } + + .carousel-fade .carousel-inner > .item.prev, + .carousel-fade .carousel-inner > .item.active.left { + .opacity(0); + .transition(all 0.8s ease); + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } + .carousel-fade .carousel-inner > .item.next.left, + .carousel-fade .carousel-inner > .item.prev.right, + .carousel-fade .carousel-inner > .item.active { + .opacity(1); + .transition(all 1.5s ease-in-out); + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } +} + + + +@media (max-width:1000px) +{ + + .slider_wrapper_lc2 .lc2_carousel_caption + { + top: 10%; + padding: 25px; + } + .slider_wrapper_lc2 .lc2_carousel_caption h2 + { + .size(35px); + } + +} +@media (max-width:800px) +{ + .slider_wrapper_lc2 .lc2_carousel_caption p { + .size(14px); + } + .slider_wrapper_lc2 .lc2_carousel_caption h2 { + .size(30px); + } + .slider_wrapper_lc2 .lc2_carousel_caption + { + top: 5%; + width: 70%; + } +} +@media (max-width:600px) +{ + .slider_wrapper_lc2 .lc2_carousel_caption h2 + { + .size(25px); + padding:10px 0; + } + .slider_wrapper_lc2 .lc2_carousel_caption p { + .size(12px); + } + .slider_wrapper_lc2 .lc2_carousel_caption { + width: 90%; + } + .slider_wrapper_lc2 .lc2_carousel_caption + { + top: 5%; + padding: 2%; + } + + .slider_wrapper_lc2 .lc2_carousel_caption h2 { + + .size(20px); + padding: 5px 0; + } + .slider_wrapper_lc2 .lc2_carousel_caption .lc_caption_para { + .mb(2%); + } + .slider_wrapper_lc2 .carousel-control.right i,.slider_wrapper_lc2 .carousel-control.left i + { + top: 28%; + } +} +@media (max-width:400px) +{ + .slider_wrapper_lc2 .lc2_carousel_caption { + display:none; + } + +} diff --git a/ext/3rd-party-addons/clarico_slider_style_3/templates/assets.xml b/ext/3rd-party-addons/clarico_slider_style_3/templates/assets.xml new file mode 100755 index 00000000..47367f38 --- /dev/null +++ b/ext/3rd-party-addons/clarico_slider_style_3/templates/assets.xml @@ -0,0 +1,11 @@ + + + + + + \ No newline at end of file diff --git a/ext/3rd-party-addons/clarico_slider_style_3/templates/template.xml b/ext/3rd-party-addons/clarico_slider_style_3/templates/template.xml new file mode 100755 index 00000000..01e10799 --- /dev/null +++ b/ext/3rd-party-addons/clarico_slider_style_3/templates/template.xml @@ -0,0 +1,47 @@ + + + + + + + \ No newline at end of file diff --git a/ext/3rd-party-addons/clarico_slider_style_4/__init__.py b/ext/3rd-party-addons/clarico_slider_style_4/__init__.py new file mode 100755 index 00000000..e69de29b diff --git a/ext/3rd-party-addons/clarico_slider_style_4/__manifest__.py b/ext/3rd-party-addons/clarico_slider_style_4/__manifest__.py new file mode 100755 index 00000000..86acf31b --- /dev/null +++ b/ext/3rd-party-addons/clarico_slider_style_4/__manifest__.py @@ -0,0 +1,27 @@ +{ + # Theme information + 'name' : 'Clarico Slider Style 4', + 'category' : 'Website', + 'version' : '1.0', + 'summary': 'CMS Building Blocks', + 'description': """""", + + # Dependencies + 'depends': [ + 'clarico_snippets' + ], + + # Views + 'data': [ + 'templates/template.xml', + 'templates/assets.xml', + ], + + # Author + 'author': 'Emipro Technologies Pvt. Ltd.', + 'website': 'http://www.emiprotechnologies.com', + + # Technical + 'installable': True, +} + diff --git a/ext/3rd-party-addons/clarico_slider_style_4/static/description/icon.png b/ext/3rd-party-addons/clarico_slider_style_4/static/description/icon.png new file mode 100755 index 00000000..bfafc926 Binary files /dev/null and b/ext/3rd-party-addons/clarico_slider_style_4/static/description/icon.png differ diff --git a/ext/3rd-party-addons/clarico_slider_style_4/static/src/img/slider_4.jpg b/ext/3rd-party-addons/clarico_slider_style_4/static/src/img/slider_4.jpg new file mode 100755 index 00000000..61179bda Binary files /dev/null and b/ext/3rd-party-addons/clarico_slider_style_4/static/src/img/slider_4.jpg differ diff --git a/ext/3rd-party-addons/clarico_slider_style_4/static/src/img/slider_4_img_1.png b/ext/3rd-party-addons/clarico_slider_style_4/static/src/img/slider_4_img_1.png new file mode 100755 index 00000000..aaa4620b Binary files /dev/null and b/ext/3rd-party-addons/clarico_slider_style_4/static/src/img/slider_4_img_1.png differ diff --git a/ext/3rd-party-addons/clarico_slider_style_4/static/src/img/slider_4_img_2.png b/ext/3rd-party-addons/clarico_slider_style_4/static/src/img/slider_4_img_2.png new file mode 100755 index 00000000..1ad71df8 Binary files /dev/null and b/ext/3rd-party-addons/clarico_slider_style_4/static/src/img/slider_4_img_2.png differ diff --git a/ext/3rd-party-addons/clarico_slider_style_4/static/src/less/slider_4.less b/ext/3rd-party-addons/clarico_slider_style_4/static/src/less/slider_4.less new file mode 100755 index 00000000..28941354 --- /dev/null +++ b/ext/3rd-party-addons/clarico_slider_style_4/static/src/less/slider_4.less @@ -0,0 +1,168 @@ +.slider_section{ + .common-div(); + +} +.slider_wrapper_wo{ + .common-div(); + + + + & .carousel-inner{ + background-color:#8fb7d7; + .lc_caption_para + { + .mb(5%); + } + + & img{ + max-width:50%; + padding:50px; + .right(); + max-height:600px; + } + } + & .carousel-indicators li{ + border-radius:0; + transform: rotate(45deg); + margin: 0 3px; + width: 10px !important; + height: 10px !important; + } + & .wo_carousel_caption{ + left:auto; + padding: 35px; + border: none; + position: absolute; + width: 50%; + max-width: 100%; + text-align: left; + margin: 0; + top:100px; + color:#fff; + + & h2{ + margin:0; + padding:20px 0px; + .size(50px); + .muli-bold(); + } + & p{ + margin:0; + padding:10px 0px; + .size(16px); + max-width: 480px; + line-height: 165%; + } + } + .carousel-control{ + height: 90px; + width: 65px !important; + top: 0; + bottom: 0; + margin: auto; + background: #ffffff; + color: #2196F3; + text-shadow: none; + line-height: 90px; + font-size: 38px; + opacity: 1; + & i{ + .top(25px) !important; + .left(25px) !important; + } + } +} + + + + +@media (max-width:1100px) +{ + .slider_wrapper_wo .wo_carousel_caption + { + top: 60px; + } + .slider_wrapper_wo .wo_carousel_caption h2 + { + .size(45px); + } + +} +@media (max-width:1000px) +{ + .slider_wrapper_wo .wo_carousel_caption h2 { + .size(35px); + line-height: 140%; + padding: 10px 0; + } + .slider_wrapper_wo .wo_carousel_caption { + top: 15px; + } + .slider_wrapper_wo .carousel-control + { + width: 50px !important; + .size(30px); + + i + { + top: 30px !important; + left: 20px !important; + } + } +} +@media (max-width:800px) +{ + .slider_wrapper_wo .wo_carousel_caption h2 { + + .size(20px); + padding: 5px 0; + } + .slider_wrapper_wo .wo_carousel_caption p + { + .size(14px); + } + .slider_wrapper_wo .wo_carousel_caption { + top: 0; + padding:25px; + } + .slider_wrapper_wo .carousel-control + { + width: 35px !important; + .size(25px); + height: 60px; + line-height: 60px; + + i + { + top: 15px !important; + left: 14px !important; + } + } +} +@media (max-width:600px) +{ + .slider_wrapper_wo .wo_carousel_caption p + { + display:none; + } + .slider_wrapper_wo .wo_carousel_caption + { + padding: 10px; + } + .slider_wrapper_wo .carousel-inner img + { + padding:10px; + } + +} +@media (max-width:400px) +{ + .slider_wrapper_wo .wo_carousel_caption h2 + { + .size(15px); + } + +} + + + diff --git a/ext/3rd-party-addons/clarico_slider_style_4/templates/assets.xml b/ext/3rd-party-addons/clarico_slider_style_4/templates/assets.xml new file mode 100755 index 00000000..9e04c744 --- /dev/null +++ b/ext/3rd-party-addons/clarico_slider_style_4/templates/assets.xml @@ -0,0 +1,11 @@ + + + + + + \ No newline at end of file diff --git a/ext/3rd-party-addons/clarico_slider_style_4/templates/template.xml b/ext/3rd-party-addons/clarico_slider_style_4/templates/template.xml new file mode 100755 index 00000000..1e13b269 --- /dev/null +++ b/ext/3rd-party-addons/clarico_slider_style_4/templates/template.xml @@ -0,0 +1,52 @@ + + + + + + + \ No newline at end of file diff --git a/ext/3rd-party-addons/clarico_slider_style_5/__init__.py b/ext/3rd-party-addons/clarico_slider_style_5/__init__.py new file mode 100755 index 00000000..e69de29b diff --git a/ext/3rd-party-addons/clarico_slider_style_5/__manifest__.py b/ext/3rd-party-addons/clarico_slider_style_5/__manifest__.py new file mode 100755 index 00000000..87e44e9d --- /dev/null +++ b/ext/3rd-party-addons/clarico_slider_style_5/__manifest__.py @@ -0,0 +1,27 @@ +{ + # Theme information + 'name' : 'Clarico Slider Style 5', + 'category' : 'Website', + 'version' : '1.0', + 'summary': 'CMS Building Blocks', + 'description': """""", + + # Dependencies + 'depends': [ + 'clarico_snippets' + ], + + # Views + 'data': [ + 'templates/template.xml', + 'templates/assets.xml', + ], + + # Author + 'author': 'Emipro Technologies Pvt. Ltd.', + 'website': 'http://www.emiprotechnologies.com', + + # Technical + 'installable': True, +} + diff --git a/ext/3rd-party-addons/clarico_slider_style_5/static/description/icon.png b/ext/3rd-party-addons/clarico_slider_style_5/static/description/icon.png new file mode 100755 index 00000000..bfafc926 Binary files /dev/null and b/ext/3rd-party-addons/clarico_slider_style_5/static/description/icon.png differ diff --git a/ext/3rd-party-addons/clarico_slider_style_5/static/src/img/banner-1.jpg b/ext/3rd-party-addons/clarico_slider_style_5/static/src/img/banner-1.jpg new file mode 100755 index 00000000..d7c36168 Binary files /dev/null and b/ext/3rd-party-addons/clarico_slider_style_5/static/src/img/banner-1.jpg differ diff --git a/ext/3rd-party-addons/clarico_slider_style_5/static/src/img/slider_5.jpg b/ext/3rd-party-addons/clarico_slider_style_5/static/src/img/slider_5.jpg new file mode 100755 index 00000000..971e4b9d Binary files /dev/null and b/ext/3rd-party-addons/clarico_slider_style_5/static/src/img/slider_5.jpg differ diff --git a/ext/3rd-party-addons/clarico_slider_style_5/static/src/js/cust_slider.js b/ext/3rd-party-addons/clarico_slider_style_5/static/src/js/cust_slider.js new file mode 100755 index 00000000..2ed3563b --- /dev/null +++ b/ext/3rd-party-addons/clarico_slider_style_5/static/src/js/cust_slider.js @@ -0,0 +1,161 @@ +odoo.define('clarico_slider_style_5.cust_slider', function (require) { +'use strict'; + +var options = require('web_editor.snippets.options'); +var slider_built_id; + +options.registry.clarico_slider_style_5_carousel = options.Class.extend({ + + start: function () { + var self = this; + this.$target.carousel({interval: false}); + this.id = this.$target.attr('id'); + this.$inner = this.$target.find('.carousel-inner'); + this.$indicators = this.$target.find('.carousel-indicators'); + this.$target.carousel('pause'); + + this.slider_built_id = slider_built_id; + this._rebindEvents(); + + var def = this._super.apply(this, arguments); + + // set background and prepare to clean for save + this.$target.on('slid.bs.carousel', function () { + self.$target.carousel('pause'); + self.trigger_up('option_update', { + optionNames: ['background', 'background_position', 'colorpicker'], + name: 'target', + data: self.$target.find('.item.active'), + }); + }); + this.$target.trigger('slid.bs.carousel'); + + return def; + }, + +//Associates unique ID on slider elements. + + onBuilt: function () { + var slider_parent = this.$target.parents('.slider_wrapper_mtb') + slider_parent = this.$target.parents('#slider_wrapper_mtb').attr('id','slider_wrapper_mtb' + new Date().getTime()); + + this.id = 'myCarousel' + new Date().getTime(); + this.$target.attr('id', this.id); + this.$target.find('[data-slide]').attr('data-cke-saved-href', '#' + this.id); + this.$target.find('[data-target]').attr('data-target', '#' + this.id); + + this._rebindEvents(); + + }, + +//Associates unique ID on cloned slider elements. + + onClone: function () { + var slider_parent = this.$target.parents('.slider_wrapper_mtb') + this.$target.parents('#slider_wrapper_mtb').attr('id','slider_wrapper_mtb' + new Date().getTime()); + var id = 'myCarousel' + new Date().getTime(); + this.$target.attr('id', id); + this.$target.find('[data-slide]').attr('href', '#' + id); + this.$target.find('[data-slide-to]').attr('data-target', '#' + id); + }, + + cleanForSave: function () { +// var slider_parent = this.$target.parents('.slider_wrapper_mtb') + + this._super.apply(this, arguments); + this.$target.find('.item').removeClass('next prev left right active') + .first().addClass('active'); + this.$target.find('.carousel-indicators').find('li').removeClass('active') + .first().addClass('active'); + this.$target.removeClass('oe_img_bg ' + this._class).css('background-image', ''); + }, + +//Adds a slide. + + addSlide: function (previewMode) { + var self = this; + var cycle = this.$inner.find('.item').length; + var $active = this.$inner.find('.item.active, .item.prev, .item.next').first(); + var index = $active.index(); + this.$('.carousel-control, .carousel-indicators').removeClass('hidden'); + this.$indicators.append('
  • '); + + var $clone = this.$('.item:first').clone(true); + $clone.removeClass('active').insertAfter($active); + _.defer(function () { + self.$target.carousel().carousel(++index); + self._rebindEvents(); + }); + }, + +//Removes the current slide. + + removeSlide: function (previewMode) { + if (this.remove_process) { + return; + } + + var self = this; + + var $items = this.$inner.find('.item'); + var cycle = $items.length - 1; + var $active = $items.filter('.active'); + var index = $active.index(); + if (cycle > 0) { + this.remove_process = true; + this.$target.on('slid.bs.carousel.slide_removal', function (event) { + $active.remove(); + self.$indicators.find('li:last').remove(); + self.$target.off('slid.bs.carousel.slide_removal'); + self._rebindEvents(); + self.remove_process = false; + if (cycle === 1) { + self.$target.find('.carousel-control, .carousel-indicators').addClass('hidden'); + } + }); + _.defer(function () { + self.$target.carousel(index > 0 ? --index : cycle); + }); + } + }, + +//Changes the interval for autoplay. + + interval: function (previewMode, value) { + this.$target.attr('data-interval', value); + }, + + _setActive: function () { + this.$el.find('li[data-interval]').removeClass('active') + .filter('li[data-interval=' + this.$target.attr('data-interval') + ']').addClass('active'); + }, + +//Rebinds carousel events on indicators. + + _rebindEvents: function () { + var self = this; + this.$target.find('.carousel-control').off('click').on('click', function () { + self.$target.carousel($(this).data('slide')); + }); + this.$target.find('.carousel-indicators [data-slide-to]').off('click').on('click', function () { + self.$target.carousel(+$(this).data('slide-to')); + }); + + /* Fix: backward compatibility saas-3 */ + this.$target.find('.item.text_image, .item.image_text, .item.text_only').find('.container > .carousel-caption > div, .container > img.carousel-image').attr('contentEditable', 'true'); + + }, +}); +}); + +$(document).ready(function(){ + + /*$('.carousel').on('slide.bs.carousel', function (e) { + var slideFrom = $(this).parents('.slider_wrapper_mtb').find('.clarico_slider_style_5_list_item.active').index(); + var slideTo = $(e.relatedTarget).index(); + $(this).parents('.slider_wrapper_mtb').find('.list-group-item.clarico_slider_style_5_list_item').eq(slideFrom).removeClass('active'); + $(this).parents('.slider_wrapper_mtb').find('.list-group-item.clarico_slider_style_5_list_item').eq(slideTo).addClass('active'); + });*/ + + +}); \ No newline at end of file diff --git a/ext/3rd-party-addons/clarico_slider_style_5/static/src/less/slider_5.less b/ext/3rd-party-addons/clarico_slider_style_5/static/src/less/slider_5.less new file mode 100755 index 00000000..c0ca3d47 --- /dev/null +++ b/ext/3rd-party-addons/clarico_slider_style_5/static/src/less/slider_5.less @@ -0,0 +1,233 @@ +.slider_section +{ + .style_1_carousel + { + display:inline-block; + width:100% !important; + .pt(0) !important; + } + +} + +.slider_section{ + .common-div(); +} +.slider_wrapper_mtb{ + .common-div(); + & .layer_caption { + top: 0; + color: #fff; + position: absolute; + width: 100%; + height: 100%; + background-color: rgba(37,139,223, 0.7); + } + & .carousel-indicators li{ + border-radius:0; + transform: rotate(45deg); + margin: 0 3px; + width: 10px !important; + height: 10px !important; + vertical-align: middle; + } + .carousel-inner + { + .item + { + padding: 20%; + background-repeat: no-repeat; + background-position: center; + } + } + & .mtb_carousel_caption{ + text-align: center; + margin: 0 auto; + position: absolute; + top: 25%; + left: 5%; + width: 90%; + & h2{ + margin:0; + padding:20px 0px; + .size(50px); + .muli-semibold(); + animation: fadeIn_left 1s ease-in both; + } + & p{ + margin:0; + padding:10px 0px; + .size(15px); + color:#666; + animation: fadeIn_right 1s ease-in both; + max-width: 650px; + margin: 0px auto; + line-height: 170%; + } + } + .carousel-control{ + height: 90px; + width: 65px !important; + top: 0; + bottom: 0; + margin: auto; + background: #ffffff; + color: #2196F3; + text-shadow: none; + line-height: 90px; + font-size: 38px; + opacity: 1; + & i{ + .top(25px) !important; + .left(25px) !important; + } + } +} +.caption_btn_wrapper +{ + .mt(2%); + animation: fadeIn 1s ease-in both; + animation-delay: 1s; +} +.double_btns +{ + display:inline-block; +} + + @keyframes fadeIn { + from { + opacity: 0; + transform: translate3d(0, -30%, 0); + } + to { + opacity: 1; + transform: translate3d(0, 0, 0); + } +} + @keyframes fadeIn_left { + from { + opacity: 0; + transform: translate3d(-30%, 0, 0); + } + to { + opacity: 1; + transform: translate3d(0, 0, 0); + } +} +@keyframes fadeIn_right { + from { + opacity: 0; + transform: translate3d(30%, 0, 0); + } + to { + opacity: 1; + transform: translate3d(0, 0, 0); + } +} + + + + + + + + +@media (max-width:1100px) +{ + .slider_wrapper_mtb .mtb_carousel_caption h2 + { + .size(40px); + } + .slider_wrapper_mtb .mtb_carousel_caption p + { + .size(14px); + } + .slider_wrapper_mtb .mtb_carousel_caption + { + top: 20%; + } +} +@media (max-width:1000px) +{ + .slider_wrapper_mtb .mtb_carousel_caption h2 + { + .size(35px); + } + .slider_wrapper_mtb .mtb_carousel_caption + { + top: 15%; + } + +} +@media (max-width:800px) +{ + .slider_wrapper_mtb .mtb_carousel_caption h2 + { + .size(30px); + } + .slider_wrapper_mtb .mtb_carousel_caption p + { + max-width:500px; + } + .slider_wrapper_mtb .mtb_carousel_caption + { + top: 5%; + } + .slider_wrapper_mtb .carousel-control + { + height: 70px; + width: 40px !important; + line-height: 70px; + .size(30px); + + i + { + top: 20px !important; + left: 15px !important; + } + } +} +@media (max-width:600px) +{ + .slider_wrapper_mtb .mtb_carousel_caption + { + top: 15%; + } + .slider_wrapper_mtb .mtb_carousel_caption p + { + display:none; + } + .slider_wrapper_mtb .mtb_carousel_caption h2 + { + padding:15px 0; + } + .slider_wrapper_mtb .mtb_carousel_caption h2 + { + .size(25px); + } + .slider_wrapper_mtb .carousel-control { + height: 60px; + width: 35px !important; + line-height: 60px; + font-size: 25px; + + i + { + top: 18px !important; + left: 14px !important; + } + } +} +@media (max-width:400px) +{ + .slider_wrapper_mtb .mtb_carousel_caption h2 + { + .size(18px); + } + .slider_wrapper_mtb .mtb_carousel_caption h2 + { + padding:10px 0; + } + +} + + diff --git a/ext/3rd-party-addons/clarico_slider_style_5/templates/assets.xml b/ext/3rd-party-addons/clarico_slider_style_5/templates/assets.xml new file mode 100755 index 00000000..45bba77d --- /dev/null +++ b/ext/3rd-party-addons/clarico_slider_style_5/templates/assets.xml @@ -0,0 +1,11 @@ + + + + + + \ No newline at end of file diff --git a/ext/3rd-party-addons/clarico_slider_style_5/templates/template.xml b/ext/3rd-party-addons/clarico_slider_style_5/templates/template.xml new file mode 100755 index 00000000..ccbe7361 --- /dev/null +++ b/ext/3rd-party-addons/clarico_slider_style_5/templates/template.xml @@ -0,0 +1,54 @@ + + + + + + + \ No newline at end of file diff --git a/ext/3rd-party-addons/clarico_snippet_style_10/__init__.py b/ext/3rd-party-addons/clarico_snippet_style_10/__init__.py new file mode 100755 index 00000000..e69de29b diff --git a/ext/3rd-party-addons/clarico_snippet_style_10/__manifest__.py b/ext/3rd-party-addons/clarico_snippet_style_10/__manifest__.py new file mode 100755 index 00000000..49bf99fa --- /dev/null +++ b/ext/3rd-party-addons/clarico_snippet_style_10/__manifest__.py @@ -0,0 +1,26 @@ +{ + # Theme information + 'name' : 'clarico Snippet Style 10', + 'category' : 'Website', + 'version' : '1.0', + 'summary': 'CMS Building Blocks', + 'description': """""", + + # Dependencies + 'depends': [ + 'clarico_snippets' + ], + + # Views + 'data': [ + 'templates/snippet_14.xml', + 'templates/assets.xml', + ], + + # Author + 'author': 'Emipro Technologies Pvt. Ltd.', + 'website': 'http://www.emiprotechnologies.com', + + # Technical + 'installable': True, +} diff --git a/ext/3rd-party-addons/clarico_snippet_style_10/static/description/icon.png b/ext/3rd-party-addons/clarico_snippet_style_10/static/description/icon.png new file mode 100755 index 00000000..bfafc926 Binary files /dev/null and b/ext/3rd-party-addons/clarico_snippet_style_10/static/description/icon.png differ diff --git a/ext/3rd-party-addons/clarico_snippet_style_10/static/src/img/snippet_10.jpg b/ext/3rd-party-addons/clarico_snippet_style_10/static/src/img/snippet_10.jpg new file mode 100755 index 00000000..41f2dd1d Binary files /dev/null and b/ext/3rd-party-addons/clarico_snippet_style_10/static/src/img/snippet_10.jpg differ diff --git a/ext/3rd-party-addons/clarico_snippet_style_10/static/src/img/style_14_bg.jpg b/ext/3rd-party-addons/clarico_snippet_style_10/static/src/img/style_14_bg.jpg new file mode 100755 index 00000000..62ff69c9 Binary files /dev/null and b/ext/3rd-party-addons/clarico_snippet_style_10/static/src/img/style_14_bg.jpg differ diff --git a/ext/3rd-party-addons/clarico_snippet_style_10/static/src/img/style_14_img_1.png b/ext/3rd-party-addons/clarico_snippet_style_10/static/src/img/style_14_img_1.png new file mode 100755 index 00000000..43004427 Binary files /dev/null and b/ext/3rd-party-addons/clarico_snippet_style_10/static/src/img/style_14_img_1.png differ diff --git a/ext/3rd-party-addons/clarico_snippet_style_10/static/src/img/style_14_img_11.png b/ext/3rd-party-addons/clarico_snippet_style_10/static/src/img/style_14_img_11.png new file mode 100755 index 00000000..bbe47c33 Binary files /dev/null and b/ext/3rd-party-addons/clarico_snippet_style_10/static/src/img/style_14_img_11.png differ diff --git a/ext/3rd-party-addons/clarico_snippet_style_10/static/src/img/style_14_img_2.png b/ext/3rd-party-addons/clarico_snippet_style_10/static/src/img/style_14_img_2.png new file mode 100755 index 00000000..d7572e69 Binary files /dev/null and b/ext/3rd-party-addons/clarico_snippet_style_10/static/src/img/style_14_img_2.png differ diff --git a/ext/3rd-party-addons/clarico_snippet_style_10/static/src/less/style_14.less b/ext/3rd-party-addons/clarico_snippet_style_10/static/src/less/style_14.less new file mode 100755 index 00000000..e5cd93eb --- /dev/null +++ b/ext/3rd-party-addons/clarico_snippet_style_10/static/src/less/style_14.less @@ -0,0 +1,224 @@ +.b_ic_slider_design{ + .common-div(); +} +.clarico_comman_class{ + .common-div(); + +} +.clarico_sub_comman_class{ + display:block; + margin:0px auto; + width:100%; +} +.b_comman_wrapper_class{ + .common-div(); + background-position:center; + background-size:cover; + background-repeat: repeat-x; +} +.b_slider_wrapper_div_left{ + width:55%; + .left(); + .bg(#fff); + .pt(0%); + .mt(7%); + .mb(7%); + position:relative; +} +.b_wrapper_full_class{ + + .common-div; + .mt(5%); + .mb(10%); + + .b_slider_back_img_center + { + /*display: flex; + justify-content: center; + align-items: center; */ + } + .b_left_content + { + display:block; + width:65%; + .center(); + + .b_left_content_color + { + color:#000; + .size(40px); + margin: 0px auto; + .pt(10%); + .mb(20px); + text-align:left; + .muli-light(); + letter-spacing: 2px; + .uppercase(); + + } + .b_left_content_pera + { + margin: 0px auto; + .center(); + .mb(36px); + line-height:180%; + text-align:left; + color:#898383; + .size(15px); + .muli-light(); + } + } + .b_h6_max_width + { + max-width:80%; + margin:0px auto; + } + } +.b_slider_wrapper_div_right{ + width:41%; + .right(); +} +.b_slider_back_color_black +{ + width:100%; + +} +.clarico_style_6_img_div +{ + width:100%; + .mb(3%); + .mt(3%); + + img + { + max-height:850px; + } +} +.style_6_btn_div +{ + .common-div; + text-align:left; +} +.style6_left_bottom_content_container +{ + display:block; + width:100%; + .mt(5%); +} +.s6_left_bottom_left_img +{ + display:block; + width:55%; + float:left; + .mb(2%); + + img + { + max-height:650px; + } +} +.s6_left_botton_right_content +{ + display:block; + width:45%; + float:left; + .pt(5%); +} +.b_fashion_subheading +{ + color:#898383; + line-height:180%; + text-align:left; + .mb(36px); + .size(15px); + .muli-light(); +} +.b_text-block +{ + width: 85%; + display: block; + margin: 0px auto; + max-width: 1400px; +} + + + +@media (max-width: 900px) { + .b_slider_back_color_black { + width: 100%; + .pb(5%); + } +} +@media (max-width: 800px) { + .b_wrapper_full_class .b_left_content .b_left_content_color { + .size(30px); + .pt(10%) !important; + } + .b_slider_back_color_black { + .pb(10%); + height:auto !important; + } + .b_slider_wrapper_div_left { + width: 100% !important; + } + .b_slider_wrapper_div_right { + width: 100% !important; + .center(); + margin: 0px auto; + display: block; + .mt(5%); + } + .b_wrapper_full_class .b_div_img .b_product_image { + max-width: 65%; + } + .clarico_style_6_img_div + { + .mt(0); + .mb(0); + + img { + max-height: 450px; + } + } + .b_wrapper_full_class + { + .mb(0); + .mt(0); + } + .b_slider_wrapper_div_left { + + .mb(0); + } + + } + +@media (max-width: 600px) +{ + .b_wrapper_full_class .b_left_content .b_left_content_color,.b_chs_heading{ + .size(20px) !important; + } + .b_slider_wrapper_div_right { + .mt(5%); + } + .b_wrapper_full_class .b_left_content .b_left_content_pera,.b_fashion_subheading { + .size(12px); + } + .s6_left_botton_right_content + { + width:100%; + + .chs_heading + { + .size(23px); + } + } + .s6_left_bottom_left_img + { + width:100%; + } + .clarico_style_6_img_div img + { + max-height: 600px; + } + +} diff --git a/ext/3rd-party-addons/clarico_snippet_style_10/templates/assets.xml b/ext/3rd-party-addons/clarico_snippet_style_10/templates/assets.xml new file mode 100755 index 00000000..1238c0f7 --- /dev/null +++ b/ext/3rd-party-addons/clarico_snippet_style_10/templates/assets.xml @@ -0,0 +1,9 @@ + + + + diff --git a/ext/3rd-party-addons/clarico_snippet_style_10/templates/snippet_14.xml b/ext/3rd-party-addons/clarico_snippet_style_10/templates/snippet_14.xml new file mode 100755 index 00000000..b3464a2a --- /dev/null +++ b/ext/3rd-party-addons/clarico_snippet_style_10/templates/snippet_14.xml @@ -0,0 +1,60 @@ + + + + + + + diff --git a/ext/3rd-party-addons/clarico_snippet_style_11/__init__.py b/ext/3rd-party-addons/clarico_snippet_style_11/__init__.py new file mode 100755 index 00000000..e69de29b diff --git a/ext/3rd-party-addons/clarico_snippet_style_11/__manifest__.py b/ext/3rd-party-addons/clarico_snippet_style_11/__manifest__.py new file mode 100755 index 00000000..f89542ca --- /dev/null +++ b/ext/3rd-party-addons/clarico_snippet_style_11/__manifest__.py @@ -0,0 +1,26 @@ +{ + # Theme information + 'name' : 'Clarico Snippet Style 11', + 'category' : 'Website', + 'version' : '1.0', + 'summary': 'CMS Building Blocks', + 'description': """""", + + # Dependencies + 'depends': [ + 'clarico_snippets' + ], + + # Views + 'data': [ + 'templates/snippet_10.xml', + 'templates/assets.xml', + ], + + # Author + 'author': 'Emipro Technologies Pvt. Ltd.', + 'website': 'http://www.emiprotechnologies.com', + + # Technical + 'installable': True, +} diff --git a/ext/3rd-party-addons/clarico_snippet_style_11/static/description/icon.png b/ext/3rd-party-addons/clarico_snippet_style_11/static/description/icon.png new file mode 100755 index 00000000..bfafc926 Binary files /dev/null and b/ext/3rd-party-addons/clarico_snippet_style_11/static/description/icon.png differ diff --git a/ext/3rd-party-addons/clarico_snippet_style_11/static/src/img/snippet_11.jpg b/ext/3rd-party-addons/clarico_snippet_style_11/static/src/img/snippet_11.jpg new file mode 100755 index 00000000..500af139 Binary files /dev/null and b/ext/3rd-party-addons/clarico_snippet_style_11/static/src/img/snippet_11.jpg differ diff --git a/ext/3rd-party-addons/clarico_snippet_style_11/static/src/img/style_10_img_1.png b/ext/3rd-party-addons/clarico_snippet_style_11/static/src/img/style_10_img_1.png new file mode 100755 index 00000000..19e20d4e Binary files /dev/null and b/ext/3rd-party-addons/clarico_snippet_style_11/static/src/img/style_10_img_1.png differ diff --git a/ext/3rd-party-addons/clarico_snippet_style_11/static/src/img/style_10_img_2.png b/ext/3rd-party-addons/clarico_snippet_style_11/static/src/img/style_10_img_2.png new file mode 100755 index 00000000..c9c5b2ae Binary files /dev/null and b/ext/3rd-party-addons/clarico_snippet_style_11/static/src/img/style_10_img_2.png differ diff --git a/ext/3rd-party-addons/clarico_snippet_style_11/static/src/img/style_10_img_3.png b/ext/3rd-party-addons/clarico_snippet_style_11/static/src/img/style_10_img_3.png new file mode 100755 index 00000000..cac0ca05 Binary files /dev/null and b/ext/3rd-party-addons/clarico_snippet_style_11/static/src/img/style_10_img_3.png differ diff --git a/ext/3rd-party-addons/clarico_snippet_style_11/static/src/img/style_10_img_4.png b/ext/3rd-party-addons/clarico_snippet_style_11/static/src/img/style_10_img_4.png new file mode 100755 index 00000000..eb0eed3a Binary files /dev/null and b/ext/3rd-party-addons/clarico_snippet_style_11/static/src/img/style_10_img_4.png differ diff --git a/ext/3rd-party-addons/clarico_snippet_style_11/static/src/less/style_10.less b/ext/3rd-party-addons/clarico_snippet_style_11/static/src/less/style_10.less new file mode 100755 index 00000000..a729f5e4 --- /dev/null +++ b/ext/3rd-party-addons/clarico_snippet_style_11/static/src/less/style_10.less @@ -0,0 +1,116 @@ +.ts10_ind_div +{ + width:25%; + display:block; + float:left; + //min-height:320px; + + + &:hover .ts10_inside_div + { + transform: translateY(-30%); + } +} +.ts10_sub_div +{ + width:80%; + display:block; + margin:0px auto; + text-align:center; + .pt(20%); + .pb(20%); +} +.ts10_inside_div +{ + position:relative; + display:inline-block; + top:50%; + padding:0 20px; + transition: all 0.5s ease; +} +.ts10_img_icon +{ + max-height:40px; + opacity:0.6; +} +.ts10_text_div +{ + .mt(20px); + + .p-text + { + .size(16px); + .uppercase(); + .muli-bold(); + color:rgb(87,87,87); + } +} +.ts10_numb_div +{ + .mt(20px); + + .p-text + { + .size(35px); + .muli-bold(); + } +} +.ts_10_bg_1 +{ + .bg(#F2F5F8); +} +.ts_10_bg_2 +{ + .bg(#EDF0F2); +} + + + +@media (max-width: 1100px){ + + .ts10_ind_div + { +// min-height: 350px; + } + .ts10_img_icon + { + //max-height: 150px; + } + .ts10_sub_div + { + width:90%; + } + .ts10_text_div .p-text + { + .size(14px); + } + +} + +@media (max-width: 800px){ + + .m_float_swap + { + float:right; + } + .ts10_ind_div + { + width:50%; + } + .ts10_img_icon + { + // max-height:200px; + } +} +@media (max-width: 400px){ + + .ts10_img_icon { + // max-height: 150px; + } + .ts10_ind_div { + min-height: 300px; + width:100%; + } + +} + diff --git a/ext/3rd-party-addons/clarico_snippet_style_11/templates/assets.xml b/ext/3rd-party-addons/clarico_snippet_style_11/templates/assets.xml new file mode 100755 index 00000000..e336a4a9 --- /dev/null +++ b/ext/3rd-party-addons/clarico_snippet_style_11/templates/assets.xml @@ -0,0 +1,9 @@ + + + + diff --git a/ext/3rd-party-addons/clarico_snippet_style_11/templates/snippet_10.xml b/ext/3rd-party-addons/clarico_snippet_style_11/templates/snippet_10.xml new file mode 100755 index 00000000..c82ebe61 --- /dev/null +++ b/ext/3rd-party-addons/clarico_snippet_style_11/templates/snippet_10.xml @@ -0,0 +1,99 @@ + + + + + diff --git a/ext/3rd-party-addons/clarico_snippet_style_12/__init__.py b/ext/3rd-party-addons/clarico_snippet_style_12/__init__.py new file mode 100755 index 00000000..e69de29b diff --git a/ext/3rd-party-addons/clarico_snippet_style_12/__manifest__.py b/ext/3rd-party-addons/clarico_snippet_style_12/__manifest__.py new file mode 100755 index 00000000..0d360957 --- /dev/null +++ b/ext/3rd-party-addons/clarico_snippet_style_12/__manifest__.py @@ -0,0 +1,26 @@ +{ + # Theme information + 'name' : 'Clarico Snippet Style 12', + 'category' : 'Website', + 'version' : '1.0', + 'summary': 'CMS Building Blocks', + 'description': """""", + + # Dependencies + 'depends': [ + 'clarico_snippets' + ], + + # Views + 'data': [ + 'templates/snippet_16.xml', + 'templates/assets.xml', + ], + + # Author + 'author': 'Emipro Technologies Pvt. Ltd.', + 'website': 'http://www.emiprotechnologies.com', + + # Technical + 'installable': True, +} diff --git a/ext/3rd-party-addons/clarico_snippet_style_12/static/description/icon.png b/ext/3rd-party-addons/clarico_snippet_style_12/static/description/icon.png new file mode 100755 index 00000000..bfafc926 Binary files /dev/null and b/ext/3rd-party-addons/clarico_snippet_style_12/static/description/icon.png differ diff --git a/ext/3rd-party-addons/clarico_snippet_style_12/static/src/img/snippet_12.jpg b/ext/3rd-party-addons/clarico_snippet_style_12/static/src/img/snippet_12.jpg new file mode 100755 index 00000000..1c1844e9 Binary files /dev/null and b/ext/3rd-party-addons/clarico_snippet_style_12/static/src/img/snippet_12.jpg differ diff --git a/ext/3rd-party-addons/clarico_snippet_style_12/static/src/img/style_16_img_1.jpeg b/ext/3rd-party-addons/clarico_snippet_style_12/static/src/img/style_16_img_1.jpeg new file mode 100755 index 00000000..0cbe08e8 Binary files /dev/null and b/ext/3rd-party-addons/clarico_snippet_style_12/static/src/img/style_16_img_1.jpeg differ diff --git a/ext/3rd-party-addons/clarico_snippet_style_12/static/src/less/style_16.less b/ext/3rd-party-addons/clarico_snippet_style_12/static/src/less/style_16.less new file mode 100755 index 00000000..3884f8ec --- /dev/null +++ b/ext/3rd-party-addons/clarico_snippet_style_12/static/src/less/style_16.less @@ -0,0 +1,15 @@ +/*------------- only image banner ---------------------*/ + +.img_banner_snippet +{ + .common-div; +} +.img_banner_snippet_img_div +{ + width:100%; + + img + { + //max-height:600px; + } +} diff --git a/ext/3rd-party-addons/clarico_snippet_style_12/templates/assets.xml b/ext/3rd-party-addons/clarico_snippet_style_12/templates/assets.xml new file mode 100755 index 00000000..34faa7f6 --- /dev/null +++ b/ext/3rd-party-addons/clarico_snippet_style_12/templates/assets.xml @@ -0,0 +1,9 @@ + + + + diff --git a/ext/3rd-party-addons/clarico_snippet_style_12/templates/snippet_16.xml b/ext/3rd-party-addons/clarico_snippet_style_12/templates/snippet_16.xml new file mode 100755 index 00000000..4b0511fd --- /dev/null +++ b/ext/3rd-party-addons/clarico_snippet_style_12/templates/snippet_16.xml @@ -0,0 +1,22 @@ + + + + + + + \ No newline at end of file diff --git a/ext/3rd-party-addons/clarico_snippet_style_13/__init__.py b/ext/3rd-party-addons/clarico_snippet_style_13/__init__.py new file mode 100755 index 00000000..e69de29b diff --git a/ext/3rd-party-addons/clarico_snippet_style_13/__manifest__.py b/ext/3rd-party-addons/clarico_snippet_style_13/__manifest__.py new file mode 100755 index 00000000..b6924552 --- /dev/null +++ b/ext/3rd-party-addons/clarico_snippet_style_13/__manifest__.py @@ -0,0 +1,26 @@ +{ + # Theme information + 'name' : 'clarico Business Snippet Style 11', + 'category' : 'Website', + 'version' : '1.0', + 'summary': 'CMS Building Blocks', + 'description': """""", + + # Dependencies + 'depends': [ + 'clarico_snippets' + ], + + # Views + 'data': [ + 'templates/snippet_11.xml', + 'templates/assets.xml', + ], + + # Author + 'author': 'Emipro Technologies Pvt. Ltd.', + 'website': 'http://www.emiprotechnologies.com', + + # Technical + 'installable': True, +} diff --git a/ext/3rd-party-addons/clarico_snippet_style_13/static/description/icon.png b/ext/3rd-party-addons/clarico_snippet_style_13/static/description/icon.png new file mode 100755 index 00000000..bfafc926 Binary files /dev/null and b/ext/3rd-party-addons/clarico_snippet_style_13/static/description/icon.png differ diff --git a/ext/3rd-party-addons/clarico_snippet_style_13/static/src/img/snippet_13.jpg b/ext/3rd-party-addons/clarico_snippet_style_13/static/src/img/snippet_13.jpg new file mode 100755 index 00000000..002b45e6 Binary files /dev/null and b/ext/3rd-party-addons/clarico_snippet_style_13/static/src/img/snippet_13.jpg differ diff --git a/ext/3rd-party-addons/clarico_snippet_style_13/static/src/less/style_11.less b/ext/3rd-party-addons/clarico_snippet_style_13/static/src/less/style_11.less new file mode 100755 index 00000000..1647d807 --- /dev/null +++ b/ext/3rd-party-addons/clarico_snippet_style_13/static/src/less/style_11.less @@ -0,0 +1,310 @@ +.font-IrisBlue +{ + color:@theme-color; +} +.font-black +{ + color:#000; +} +.font-white +{ + color:#fff; +} +.bg-IrisBlue +{ + .bg(@theme-color); +} +.bg-white-hover +{ + .bg(#fff); +} +.border-white +{ + border-color:#fff; +} + +.pricing_whole_div_calss{ + .common-div; + position: relative; +} +.div_sub_main_pricing{ + width: 80%; + .center; + .pl(15px); + .pr(15px); +} +.div_heading_pricing{ + .mt(3%); + .mb(3%); + .common-div; +} +.heading_h1_pricing{ + font-size: 5.5rem; + .center(); +} +.hr_class_common_pricing{ + border-width: 2px; + color: black; + .mt(13px); + width: 87px; + border-color:@theme-color; +} +.para_pricing_content{ + .size(16px); + line-height: 161%; + .center(); + color:#555; +} +.div_main_pricing_content{ +.common-div; + margin: 0px auto; + position: relative; +} +.div_sub_main_pricing_content{ +.common-div; + margin: 0px auto; +} +.div_pricing_content{ + .pl(1em); + .pr(1em); + position: relative; + display: block; +} +.mt_0{ + .mt(0px); +} +.div_pricing_content_row{ + width: 100%; + border:1px solid #ddd; + margin-bottom: 30px; + overflow: hidden; + //padding: 22px; + .center(); +} +.div_pricing_content_row_premium{ + width: 100%; + border-width: 1px; + border-style: solid ; + margin-bottom: 30px; + overflow: hidden; + // padding: 22px; + .center(); +} +.div_pricing_content_row_text{ + width: 100%; +} +.pricing_content_title{ + margin: 0; + padding: 20px 0px; + .size(18px); + .bg(#ccc); + color:#fff; + .muli-semibold(); + .uppercase(); +} +.premium_title_bg +{ + .bg(@theme-color) !important; +} +.pricing_content_title_premium{ + margin: 0; + padding: 20px 0px; +} +.para_pracing_best_value{ +.center(); +font-size: 16px; +border: 1px solid #FFF; +width: 139px; +.pt(10px); +.pb(10px); +border-radius: 100px; +display: block; +margin: 16px auto 0px; +.mb(35px); +} +.hr_line_white{ + margin: 22px 0px; + display: block; +} +.hr_line{ + margin: 22px 0px; + display: block; + border-color: rgb(120, 116, 116); +} +.ul_pricing_text{ + list-style: none; + padding: 10%; +} +.li_pricing_text{ + .size(15px); + .center(); + padding:10px 0; + color: #777; + border-bottom: 1px dotted #e0e0e0; +} +.li_pricing_text_premium{ + .size(18px); + .center(); + .mb(12px); +} +.div_price{ + width: 100%; + display: block; + padding:30px 20px; + border-bottom: 2px solid #f5f5f5; +} +.div_price_premium +{ + width: 100%; + display: block; + padding:30px 20px; + border-bottom: 2px solid @theme-color; +} +.heading_h1_price{ + .size(60px); + .center(); + margin: 0px; + .muli-regular(); +} +.dollar{ + font-size: 22px; + position: relative; + bottom: 28px; + .pr(2px); +} +.dollar_premium{ + .size(23px); + position: relative; + bottom: 30px; + .pr(2px); +} +.terms{ + .size(16px); + font-style: italic; + font-weight: normal; + .pl(2px); +} +.div_pricing_btn{ + display: inline-block; + margin:0px auto; + .mb(10%); +} + +.anchor_pricing_enquire{ + border-color: transparent; + text-decoration: none; + font-size: 12px; + padding: 7px 22px 7px 22px; + display: block; + text-transform: uppercase; + letter-spacing: 1px!important; + color: #fff; + background: @theme-color; + transition: opacity 0.3s ease-in-out; + opacity: 0.85 !important; + + &:hover,&:focus{ + color: #fff; + //background: darken(@theme-color,10%); + //border-color: darken(@theme-color,10%); + opacity: 1.0 !important; + background: @theme-color; + border-color: transparent; + } +} +.anchor_pricing_premium_enquire{ + cursor: pointer; + text-decoration: none; + border-width: 1px; + border-style: solid; + border-color: transparent; + display: block; + text-transform: uppercase; + letter-spacing: 1px!important; + padding: 7px 22px 7px 22px; + font-size: 14px; + transition: opacity 0.3s ease-in-out; + opacity: 0.85 !important; + + + &:hover,&:focus{ + color: @theme-color; + //background: darken(@white,10%); + //border-color: darken(@white,10%); + opacity: 1.0 !important; + background: #fff; + border-color: transparent; + } +} + +.pricing_per_month_text +{ + color:#999; + text-align:center; + .uppercase(); + letter-spacing:2px; + .mt(10px); +} + + + + +@media (max-width: 1200px) { + + .div_sub_main_pricing + { + width:90%; + } + +} +@media (max-width:1000px){ + + .div_pricing_content + { + .mt(25px) !important; + } + .heading_h1_pricing + { + // .size(40px); + } + .div_pricing_content_row + { + width:60%; + } +} +@media (max-width:800px){ + + .pricing_content_title + { + // .size(28px) + } + .li_pricing_text + { + // .size(15px); + } + .heading_h1_price + { + // .size(60px); + } + .pricing_content_title_premium + { + // .size(30px); + } + .li_pricing_text_premium + { + //.size(16px); + } + .heading_h1_price_premium + { + //.size(60px); + } +} +@media(max-width:600px) +{ + .div_pricing_content_row { + width: 90%; + } + + + +} diff --git a/ext/3rd-party-addons/clarico_snippet_style_13/templates/assets.xml b/ext/3rd-party-addons/clarico_snippet_style_13/templates/assets.xml new file mode 100755 index 00000000..f41f95c5 --- /dev/null +++ b/ext/3rd-party-addons/clarico_snippet_style_13/templates/assets.xml @@ -0,0 +1,9 @@ + + + + diff --git a/ext/3rd-party-addons/clarico_snippet_style_13/templates/snippet_11.xml b/ext/3rd-party-addons/clarico_snippet_style_13/templates/snippet_11.xml new file mode 100755 index 00000000..d2f5c2f6 --- /dev/null +++ b/ext/3rd-party-addons/clarico_snippet_style_13/templates/snippet_11.xml @@ -0,0 +1,106 @@ + + + + + diff --git a/ext/3rd-party-addons/clarico_snippet_style_15/__init__.py b/ext/3rd-party-addons/clarico_snippet_style_15/__init__.py new file mode 100755 index 00000000..e69de29b diff --git a/ext/3rd-party-addons/clarico_snippet_style_15/__manifest__.py b/ext/3rd-party-addons/clarico_snippet_style_15/__manifest__.py new file mode 100755 index 00000000..029d9e82 --- /dev/null +++ b/ext/3rd-party-addons/clarico_snippet_style_15/__manifest__.py @@ -0,0 +1,26 @@ +{ + # Theme information + 'name' : 'clarico Snippet Style 15', + 'category' : 'Website', + 'version' : '1.0', + 'summary': 'CMS Building Blocks', + 'description': """""", + + # Dependencies + 'depends': [ + 'clarico_snippets', + ], + + # Views + 'data': [ + 'templates/snippet_20.xml', + 'templates/assets.xml', + ], + + # Author + 'author': 'Emipro Technologies Pvt. Ltd.', + 'website': 'http://www.emiprotechnologies.com', + + # Technical + 'installable': True, +} diff --git a/ext/3rd-party-addons/clarico_snippet_style_15/static/description/icon.png b/ext/3rd-party-addons/clarico_snippet_style_15/static/description/icon.png new file mode 100755 index 00000000..bfafc926 Binary files /dev/null and b/ext/3rd-party-addons/clarico_snippet_style_15/static/description/icon.png differ diff --git a/ext/3rd-party-addons/clarico_snippet_style_15/static/src/img/snippet_15.jpg b/ext/3rd-party-addons/clarico_snippet_style_15/static/src/img/snippet_15.jpg new file mode 100755 index 00000000..44408376 Binary files /dev/null and b/ext/3rd-party-addons/clarico_snippet_style_15/static/src/img/snippet_15.jpg differ diff --git a/ext/3rd-party-addons/clarico_snippet_style_15/static/src/img/style_20_img_1.png b/ext/3rd-party-addons/clarico_snippet_style_15/static/src/img/style_20_img_1.png new file mode 100755 index 00000000..6b5d5746 Binary files /dev/null and b/ext/3rd-party-addons/clarico_snippet_style_15/static/src/img/style_20_img_1.png differ diff --git a/ext/3rd-party-addons/clarico_snippet_style_15/static/src/img/style_20_img_2.png b/ext/3rd-party-addons/clarico_snippet_style_15/static/src/img/style_20_img_2.png new file mode 100755 index 00000000..75cc7d9b Binary files /dev/null and b/ext/3rd-party-addons/clarico_snippet_style_15/static/src/img/style_20_img_2.png differ diff --git a/ext/3rd-party-addons/clarico_snippet_style_15/static/src/img/style_20_img_3.png b/ext/3rd-party-addons/clarico_snippet_style_15/static/src/img/style_20_img_3.png new file mode 100755 index 00000000..a7bc7866 Binary files /dev/null and b/ext/3rd-party-addons/clarico_snippet_style_15/static/src/img/style_20_img_3.png differ diff --git a/ext/3rd-party-addons/clarico_snippet_style_15/static/src/less/style_20.less b/ext/3rd-party-addons/clarico_snippet_style_15/static/src/less/style_20.less new file mode 100755 index 00000000..3ab86a27 --- /dev/null +++ b/ext/3rd-party-addons/clarico_snippet_style_15/static/src/less/style_20.less @@ -0,0 +1,191 @@ +/*--------------- fashion snippet ----------------*/ + +.clarico_fashion_snippet_wrap +{ + .common-div; +} +.clarico_fasion_snippet_container +{ + .block; +} + +.b_fashion_part_one,.b_fashion_part_two,.b_fashion_part_three +{ + display:block; + width:31.33%; + float:left; + transition: all 0.3s; + + &:hover + { + box-shadow: 0 8px 35px -10px rgba(0, 0, 0, 0.3); + } +} +.b_fashion_part_three +{ + .mt(1%); + .mb(1%); +} +.b_fashion_part_one,.b_fashion_part_two +{ + .mr(3%); + .mt(1%); + .mb(1%); +} +.b_fashion_part_img_div +{ + width:100%; + + img + { + max-height:265px; + } +} + +.b_fashion_catg_info +{ + padding:10px; + .bg(#fff); + +} +.bf_text-row +{ + .common-div; + text-align:center; +} +.b_fashion_catg_heading +{ + color:#e6e6e6; + .size(50px); + .uppercase(); + .muli-bold(); +} +.b_s20_heading +{ + + .size(15px); + color: #575757; + .muli-bold(); + line-height: 24px; + padding: 18px 0 8px; + .uppercase(); +} +.b_fashion_sub_heading +{ + text-transform: uppercase; + .size(18px); + color: #000; + .muli-regular(); + line-height: 24px; + padding: 18px 0 8px; + letter-spacing: 0.05em; +} +.b_fashion_para +{ + max-width: 85%; + display: block; + margin: 0px auto; + color: #7b7f83; + text-align: center; + .size(13px); + line-height: 24px; +} +.b_fashion_btn +{ + display: inline-block; + .size(14px); + line-height: 35px; + height: 40px; + letter-spacing: 2px; + padding: 0 25px; + text-align: center; + text-transform: uppercase; + opacity:1; + border:2px solid @theme-color; + color: #000; + transition: all 0.3s ease-in-out; + .muli-regular(); + border-radius:25px; + + &:hover + { + color:#fff; + .bg(@theme-color); + } +} +.f_btn_margin +{ + .mt(10%); + .mb(10%); +} +.part_one_bg +{ + .bg(rgb(233,233,233)); +} +.part_two_bg +{ + .bg(rgb(239,239,239)); +} +.part_three_bg +{ + .bg(rgb(235,235,235)); +} +@media(max-width:1000px) +{ + .b_fashion_catg_heading + { + .size(40px); + } + .b_fashion_sub_heading + { + .size(30px); + } + .b_fashion_para + { + max-width: 90%; + .size(13px); + } +} +@media(max-width:900px) +{ + .b_fashion_part_one, .b_fashion_part_two, .b_fashion_part_three { + + width: 100%; + .mr(0); + .mb(5%); + } + .b_fashion_part_img_div { + width: 48%; + float: left; + .mr(4%); + } + .b_fashion_catg_info { + + width: 48%; + float: left; + + } + .b_fashion_part_one, .b_fashion_part_two, .b_fashion_part_three { + + height:auto; + } + +} +@media(max-width:600px) +{ + .b_fashion_part_img_div { + width: 100%; + } + .b_fashion_catg_info { + width: 100%; + .mt(5%); + } + .b_fashion_btn + { + .size(12px); + line-height: 30px; + height: 35px; + padding: 0 20px; + } + +} diff --git a/ext/3rd-party-addons/clarico_snippet_style_15/templates/assets.xml b/ext/3rd-party-addons/clarico_snippet_style_15/templates/assets.xml new file mode 100755 index 00000000..2df85e52 --- /dev/null +++ b/ext/3rd-party-addons/clarico_snippet_style_15/templates/assets.xml @@ -0,0 +1,9 @@ + + + + \ No newline at end of file diff --git a/ext/3rd-party-addons/clarico_snippet_style_15/templates/snippet_20.xml b/ext/3rd-party-addons/clarico_snippet_style_15/templates/snippet_20.xml new file mode 100755 index 00000000..07b86d5c --- /dev/null +++ b/ext/3rd-party-addons/clarico_snippet_style_15/templates/snippet_20.xml @@ -0,0 +1,103 @@ + + + + + + + \ No newline at end of file diff --git a/ext/3rd-party-addons/clarico_snippet_style_16/__init__.py b/ext/3rd-party-addons/clarico_snippet_style_16/__init__.py new file mode 100755 index 00000000..e69de29b diff --git a/ext/3rd-party-addons/clarico_snippet_style_16/__manifest__.py b/ext/3rd-party-addons/clarico_snippet_style_16/__manifest__.py new file mode 100755 index 00000000..76b3204b --- /dev/null +++ b/ext/3rd-party-addons/clarico_snippet_style_16/__manifest__.py @@ -0,0 +1,26 @@ +{ + # Theme information + 'name' : 'clarico Snippet Style 15', + 'category' : 'Website', + 'version' : '1.0', + 'summary': 'CMS Building Blocks', + 'description': """""", + + # Dependencies + 'depends': [ + 'clarico_snippets' + ], + + # Views + 'data': [ + 'templates/snippet_15.xml', + 'templates/assets.xml', + ], + + # Author + 'author': 'Emipro Technologies Pvt. Ltd.', + 'website': 'http://www.emiprotechnologies.com', + + # Technical + 'installable': True, +} diff --git a/ext/3rd-party-addons/clarico_snippet_style_16/static/description/icon.png b/ext/3rd-party-addons/clarico_snippet_style_16/static/description/icon.png new file mode 100755 index 00000000..bfafc926 Binary files /dev/null and b/ext/3rd-party-addons/clarico_snippet_style_16/static/description/icon.png differ diff --git a/ext/3rd-party-addons/clarico_snippet_style_16/static/src/img/style_15_img_1.png b/ext/3rd-party-addons/clarico_snippet_style_16/static/src/img/style_15_img_1.png new file mode 100755 index 00000000..c543d7bc Binary files /dev/null and b/ext/3rd-party-addons/clarico_snippet_style_16/static/src/img/style_15_img_1.png differ diff --git a/ext/3rd-party-addons/clarico_snippet_style_16/static/src/img/style_15_img_2.png b/ext/3rd-party-addons/clarico_snippet_style_16/static/src/img/style_15_img_2.png new file mode 100755 index 00000000..0b2b7117 Binary files /dev/null and b/ext/3rd-party-addons/clarico_snippet_style_16/static/src/img/style_15_img_2.png differ diff --git a/ext/3rd-party-addons/clarico_snippet_style_16/static/src/img/style_15_img_3.png b/ext/3rd-party-addons/clarico_snippet_style_16/static/src/img/style_15_img_3.png new file mode 100755 index 00000000..d11f84dd Binary files /dev/null and b/ext/3rd-party-addons/clarico_snippet_style_16/static/src/img/style_15_img_3.png differ diff --git a/ext/3rd-party-addons/clarico_snippet_style_16/static/src/img/style_16.jpg b/ext/3rd-party-addons/clarico_snippet_style_16/static/src/img/style_16.jpg new file mode 100755 index 00000000..515fe374 Binary files /dev/null and b/ext/3rd-party-addons/clarico_snippet_style_16/static/src/img/style_16.jpg differ diff --git a/ext/3rd-party-addons/clarico_snippet_style_16/static/src/less/style_15.less b/ext/3rd-party-addons/clarico_snippet_style_16/static/src/less/style_15.less new file mode 100755 index 00000000..9815c534 --- /dev/null +++ b/ext/3rd-party-addons/clarico_snippet_style_16/static/src/less/style_15.less @@ -0,0 +1,149 @@ +/*------------- big catg snippet with discount------------------ */ +.clarico_big_catg_snippet_wrap +{ + .common-div; + .bg(#fff); +} +.clarico_big_catg_container +{ + .block; +} +.big_catg_top,.big_catg_bottom,big_price_common_middle +{ + display:inline-block; + width:100%; + text-align:center; + position:relative; +} +.big_catg_bottom_left,.big_catg_bottom_right +{ + width:50%; + display:block; + float:left; +} +.big_catg_img_one,.big_catg_img_two,.big_catg_img_three +{ + img + { + max-height:350px; + } + +} +.big_img_one_container +{ + display:block; + width:70%; + float:right; +} + +.big_price_left +{ + p{ + height:160px; + text-align:left; + } +} +.big_price_right +{ + p{ + height:160px; + text-align:right; + } +} + +.product_info +{ + .common-div; + text-align:center; + .mt(5%); + + .product_title + { + .size(45px); + display: block; + color: #222; + margin: 0; + .oswald-bold(); + text-transform: uppercase; + } + .product_sub-title + { + .size(15px); + color: #969696; + line-height: 20px; + display: block; + .mt(2px); + .mb(3%); + } +} +.big_price +{ + .oswald-bold(); + color:#eaeaea; + .size(130px); + margin: 0; +} +.center_big_price +{ + position: absolute; + left: 25%; + top: 20%; +} + +@media(max-width:1000px) +{ + .center_big_price + { + left: 15%; + } + .big_price { + .size(110px); + } +} +@media(max-width:800px) +{ + .center_big_price { + left: 5%; + top:0%; + } + .big_price { + .size(100px); + } + .big_catg_bottom_left, .big_catg_bottom_right { + width:100%; + } + .big_price_left p + { + text-align: right; + } + .big_price_right p + { + text-align: left; + } +} +@media(max-width:600px) +{ + .big_price { + .size(60px); + } + .center_big_price + { + left:0; + } + .product_info .product_title + { + .size(30px); + } + .product_info .product_sub-title { + .size(14px); + } + .big_price_right p,.big_price_left p{ + height: 80px; + } + .big_catg_top,.big_catg_bottom_left + { + .mb(10%); + } + + +} \ No newline at end of file diff --git a/ext/3rd-party-addons/clarico_snippet_style_16/templates/assets.xml b/ext/3rd-party-addons/clarico_snippet_style_16/templates/assets.xml new file mode 100755 index 00000000..31fdc014 --- /dev/null +++ b/ext/3rd-party-addons/clarico_snippet_style_16/templates/assets.xml @@ -0,0 +1,9 @@ + + + + diff --git a/ext/3rd-party-addons/clarico_snippet_style_16/templates/snippet_15.xml b/ext/3rd-party-addons/clarico_snippet_style_16/templates/snippet_15.xml new file mode 100755 index 00000000..c672f692 --- /dev/null +++ b/ext/3rd-party-addons/clarico_snippet_style_16/templates/snippet_15.xml @@ -0,0 +1,80 @@ + + + + + + + \ No newline at end of file diff --git a/ext/3rd-party-addons/clarico_snippet_style_17/__init__.py b/ext/3rd-party-addons/clarico_snippet_style_17/__init__.py new file mode 100755 index 00000000..e69de29b diff --git a/ext/3rd-party-addons/clarico_snippet_style_17/__manifest__.py b/ext/3rd-party-addons/clarico_snippet_style_17/__manifest__.py new file mode 100755 index 00000000..6296368a --- /dev/null +++ b/ext/3rd-party-addons/clarico_snippet_style_17/__manifest__.py @@ -0,0 +1,26 @@ +{ + # Theme information + 'name' : 'Clarico Snippet Style 17', + 'category' : 'Website', + 'version' : '1.0', + 'summary': 'CMS Building Blocks', + 'description': """""", + + # Dependencies + 'depends': [ + 'clarico_snippets','clarico_expertise' + ], + + # Views + 'data': [ + 'templates/snippet_17.xml', + 'templates/assets.xml', + ], + + # Author + 'author': 'Emipro Technologies Pvt. Ltd.', + 'website': 'http://www.emiprotechnologies.com', + + # Technical + 'installable': True, +} diff --git a/ext/3rd-party-addons/clarico_snippet_style_17/static/description/icon.png b/ext/3rd-party-addons/clarico_snippet_style_17/static/description/icon.png new file mode 100755 index 00000000..09fd34ab Binary files /dev/null and b/ext/3rd-party-addons/clarico_snippet_style_17/static/description/icon.png differ diff --git a/ext/3rd-party-addons/clarico_snippet_style_17/static/src/img/snippet_17.jpg b/ext/3rd-party-addons/clarico_snippet_style_17/static/src/img/snippet_17.jpg new file mode 100755 index 00000000..ff48bb74 Binary files /dev/null and b/ext/3rd-party-addons/clarico_snippet_style_17/static/src/img/snippet_17.jpg differ diff --git a/ext/3rd-party-addons/clarico_snippet_style_17/static/src/img/style_3_img_1.jpg b/ext/3rd-party-addons/clarico_snippet_style_17/static/src/img/style_3_img_1.jpg new file mode 100755 index 00000000..9c7bad14 Binary files /dev/null and b/ext/3rd-party-addons/clarico_snippet_style_17/static/src/img/style_3_img_1.jpg differ diff --git a/ext/3rd-party-addons/clarico_snippet_style_17/static/src/img/style_3_img_2.png b/ext/3rd-party-addons/clarico_snippet_style_17/static/src/img/style_3_img_2.png new file mode 100755 index 00000000..81f4f0a3 Binary files /dev/null and b/ext/3rd-party-addons/clarico_snippet_style_17/static/src/img/style_3_img_2.png differ diff --git a/ext/3rd-party-addons/clarico_snippet_style_17/static/src/img/style_3_img_3.png b/ext/3rd-party-addons/clarico_snippet_style_17/static/src/img/style_3_img_3.png new file mode 100755 index 00000000..df7e1718 Binary files /dev/null and b/ext/3rd-party-addons/clarico_snippet_style_17/static/src/img/style_3_img_3.png differ diff --git a/ext/3rd-party-addons/clarico_snippet_style_17/static/src/less/style_17.less b/ext/3rd-party-addons/clarico_snippet_style_17/static/src/less/style_17.less new file mode 100755 index 00000000..e69de29b diff --git a/ext/3rd-party-addons/clarico_snippet_style_17/templates/assets.xml b/ext/3rd-party-addons/clarico_snippet_style_17/templates/assets.xml new file mode 100755 index 00000000..193eb44f --- /dev/null +++ b/ext/3rd-party-addons/clarico_snippet_style_17/templates/assets.xml @@ -0,0 +1,9 @@ + + + + diff --git a/ext/3rd-party-addons/clarico_snippet_style_17/templates/snippet_17.xml b/ext/3rd-party-addons/clarico_snippet_style_17/templates/snippet_17.xml new file mode 100755 index 00000000..504b41fe --- /dev/null +++ b/ext/3rd-party-addons/clarico_snippet_style_17/templates/snippet_17.xml @@ -0,0 +1,60 @@ + + + + + diff --git a/ext/3rd-party-addons/clarico_snippet_style_18/__init__.py b/ext/3rd-party-addons/clarico_snippet_style_18/__init__.py new file mode 100755 index 00000000..e69de29b diff --git a/ext/3rd-party-addons/clarico_snippet_style_18/__manifest__.py b/ext/3rd-party-addons/clarico_snippet_style_18/__manifest__.py new file mode 100755 index 00000000..c172ea6b --- /dev/null +++ b/ext/3rd-party-addons/clarico_snippet_style_18/__manifest__.py @@ -0,0 +1,26 @@ +{ + # Theme information + 'name' : 'Clarico Snippet Style 18', + 'category' : 'Website', + 'version' : '1.0', + 'summary': 'CMS Building Blocks', + 'description': """""", + + # Dependencies + 'depends': [ + 'clarico_snippets' + ], + + # Views + 'data': [ + 'templates/snippet_18.xml', + 'templates/assets.xml', + ], + + # Author + 'author': 'Emipro Technologies Pvt. Ltd.', + 'website': 'http://www.emiprotechnologies.com', + + # Technical + 'installable': True, +} diff --git a/ext/3rd-party-addons/clarico_snippet_style_18/static/description/icon.png b/ext/3rd-party-addons/clarico_snippet_style_18/static/description/icon.png new file mode 100755 index 00000000..bfafc926 Binary files /dev/null and b/ext/3rd-party-addons/clarico_snippet_style_18/static/description/icon.png differ diff --git a/ext/3rd-party-addons/clarico_snippet_style_18/static/src/img/snippet.jpg b/ext/3rd-party-addons/clarico_snippet_style_18/static/src/img/snippet.jpg new file mode 100755 index 00000000..73783a0d Binary files /dev/null and b/ext/3rd-party-addons/clarico_snippet_style_18/static/src/img/snippet.jpg differ diff --git a/ext/3rd-party-addons/clarico_snippet_style_18/static/src/less/style_18.less b/ext/3rd-party-addons/clarico_snippet_style_18/static/src/less/style_18.less new file mode 100755 index 00000000..8c1c6a1d --- /dev/null +++ b/ext/3rd-party-addons/clarico_snippet_style_18/static/src/less/style_18.less @@ -0,0 +1,28 @@ +.pricing2_content_title{ + margin: 0; + padding: 20px 0px; + .size(18px); + .bg(#fff); + color:#555; + .muli-semibold(); + .uppercase(); + border-bottom: 1px solid #ddd; + +} + +.div_price2_premium +{ + width: 100%; + display: block; + padding:30px 20px; + border-bottom: 2px solid #f5f5f5; +} +.div_sub_main_pricing2 +{ + width: 90%; + display: block; + margin: 0px auto; + text-align: center; + padding-left: 15px; + padding-right: 15px; +} diff --git a/ext/3rd-party-addons/clarico_snippet_style_18/templates/assets.xml b/ext/3rd-party-addons/clarico_snippet_style_18/templates/assets.xml new file mode 100755 index 00000000..0efb84e3 --- /dev/null +++ b/ext/3rd-party-addons/clarico_snippet_style_18/templates/assets.xml @@ -0,0 +1,9 @@ + + + + diff --git a/ext/3rd-party-addons/clarico_snippet_style_18/templates/snippet_18.xml b/ext/3rd-party-addons/clarico_snippet_style_18/templates/snippet_18.xml new file mode 100755 index 00000000..af5cef0b --- /dev/null +++ b/ext/3rd-party-addons/clarico_snippet_style_18/templates/snippet_18.xml @@ -0,0 +1,129 @@ + + + + + diff --git a/ext/3rd-party-addons/clarico_snippet_style_19/__init__.py b/ext/3rd-party-addons/clarico_snippet_style_19/__init__.py new file mode 100755 index 00000000..e69de29b diff --git a/ext/3rd-party-addons/clarico_snippet_style_19/__manifest__.py b/ext/3rd-party-addons/clarico_snippet_style_19/__manifest__.py new file mode 100755 index 00000000..da2d920a --- /dev/null +++ b/ext/3rd-party-addons/clarico_snippet_style_19/__manifest__.py @@ -0,0 +1,26 @@ +{ + # Theme information + 'name' : 'Clarico Snippet Style 19', + 'category' : 'Website', + 'version' : '1.0', + 'summary': 'CMS Building Blocks', + 'description': """""", + + # Dependencies + 'depends': [ + 'clarico_snippets' + ], + + # Views + 'data': [ + 'templates/snippet_19.xml', + 'templates/assets.xml', + ], + + # Author + 'author': 'Emipro Technologies Pvt. Ltd.', + 'website': 'http://www.emiprotechnologies.com', + + # Technical + 'installable': True, +} diff --git a/ext/3rd-party-addons/clarico_snippet_style_19/static/description/icon.png b/ext/3rd-party-addons/clarico_snippet_style_19/static/description/icon.png new file mode 100755 index 00000000..bfafc926 Binary files /dev/null and b/ext/3rd-party-addons/clarico_snippet_style_19/static/description/icon.png differ diff --git a/ext/3rd-party-addons/clarico_snippet_style_19/static/src/img/style.jpg b/ext/3rd-party-addons/clarico_snippet_style_19/static/src/img/style.jpg new file mode 100644 index 00000000..d2cb20b8 Binary files /dev/null and b/ext/3rd-party-addons/clarico_snippet_style_19/static/src/img/style.jpg differ diff --git a/ext/3rd-party-addons/clarico_snippet_style_19/static/src/less/style_19.less b/ext/3rd-party-addons/clarico_snippet_style_19/static/src/less/style_19.less new file mode 100755 index 00000000..1957c0c1 --- /dev/null +++ b/ext/3rd-party-addons/clarico_snippet_style_19/static/src/less/style_19.less @@ -0,0 +1,28 @@ +.pricing2_content_title{ + margin: 0; + padding: 20px 0px; + .size(19px); + .bg(#fff); + color:#555; + .muli-semibold(); + .uppercase(); + border-bottom: 1px solid #ddd; + +} + +.div_price2_premium +{ + width: 100%; + display: block; + padding:30px 20px; + border-bottom: 2px solid #f5f5f5; +} +.div_sub_main_pricing2 +{ + width: 90%; + display: block; + margin: 0px auto; + text-align: center; + padding-left: 15px; + padding-right: 15px; +} diff --git a/ext/3rd-party-addons/clarico_snippet_style_19/templates/assets.xml b/ext/3rd-party-addons/clarico_snippet_style_19/templates/assets.xml new file mode 100755 index 00000000..26c8a641 --- /dev/null +++ b/ext/3rd-party-addons/clarico_snippet_style_19/templates/assets.xml @@ -0,0 +1,9 @@ + + + + diff --git a/ext/3rd-party-addons/clarico_snippet_style_19/templates/snippet_19.xml b/ext/3rd-party-addons/clarico_snippet_style_19/templates/snippet_19.xml new file mode 100755 index 00000000..c011cca3 --- /dev/null +++ b/ext/3rd-party-addons/clarico_snippet_style_19/templates/snippet_19.xml @@ -0,0 +1,16 @@ + + + + + diff --git a/ext/3rd-party-addons/clarico_snippet_style_4/__init__.py b/ext/3rd-party-addons/clarico_snippet_style_4/__init__.py new file mode 100755 index 00000000..e69de29b diff --git a/ext/3rd-party-addons/clarico_snippet_style_4/__manifest__.py b/ext/3rd-party-addons/clarico_snippet_style_4/__manifest__.py new file mode 100755 index 00000000..6540060c --- /dev/null +++ b/ext/3rd-party-addons/clarico_snippet_style_4/__manifest__.py @@ -0,0 +1,26 @@ +{ + # Theme information + 'name' : 'Clarico Snippet Style 4', + 'category' : 'Website', + 'version' : '1.0', + 'summary': 'CMS Building Blocks', + 'description': """""", + + # Dependencies + 'depends': [ + 'clarico_snippets' + ], + + # Views + 'data': [ + 'templates/style_4.xml', + 'templates/assets.xml', + ], + + # Author + 'author': 'Emipro Technologies Pvt. Ltd.', + 'website': 'http://www.emiprotechnologies.com', + + # Technical + 'installable': True, +} diff --git a/ext/3rd-party-addons/clarico_snippet_style_4/static/description/icon.png b/ext/3rd-party-addons/clarico_snippet_style_4/static/description/icon.png new file mode 100755 index 00000000..bfafc926 Binary files /dev/null and b/ext/3rd-party-addons/clarico_snippet_style_4/static/description/icon.png differ diff --git a/ext/3rd-party-addons/clarico_snippet_style_4/static/src/img/snippet_4.jpg b/ext/3rd-party-addons/clarico_snippet_style_4/static/src/img/snippet_4.jpg new file mode 100755 index 00000000..dc17c383 Binary files /dev/null and b/ext/3rd-party-addons/clarico_snippet_style_4/static/src/img/snippet_4.jpg differ diff --git a/ext/3rd-party-addons/clarico_snippet_style_4/static/src/less/style_4.less b/ext/3rd-party-addons/clarico_snippet_style_4/static/src/less/style_4.less new file mode 100755 index 00000000..de0d9276 --- /dev/null +++ b/ext/3rd-party-addons/clarico_snippet_style_4/static/src/less/style_4.less @@ -0,0 +1,112 @@ +.s_clarico_section +{ +width:29%; +display:inline-block; +margin:2%; +vertical-align:top; +position:relative; +.bg(#F7F7F7); +.mb(5%); +} +.s_content_right +{ + display:inline-block; + text-align:center; + .pt(10%;); +} +.s_clarico_3_content_sub +{ + max-width:1170px !important; + .pt(5%); +} +.s_clarico_h +{ +.size(18px); +.muli-semibold(); +line-height:18%; +display:inline-block; +.mt(10%); +} +.s_content_p +{ +.size(15px); +font-family:@m-light; +line-height:186%; +.mt(5%); +color: #707070; +text-align:center; +max-width:350px; +padding: 8%; +padding-top: 0; +} +.s_licon +{ + position: absolute; + top: -40px; + left: 50%; + width: 80px; + height: 80px; + margin-left: -40px; + text-align: center; + border-radius: 50%; + background: #fff; + box-shadow: 0 0 0 5px #f6f6f6; + line-height: 80px; + +i +{ +vertical-align:middle; +.size(30px); +color:@theme-color; +} +} + +@media (max-width: 1000px){ + + .s_clarico_section + { + width:45%; + } +} +@media (max-width: 800px){ + + .s_clarico_section + { + width:90%; + margin:0px auto; + text-align:center; + display:block; + .mb(10%); + } + .s_content_p + { + text-align: center; + max-width: 90%; + margin: 0px auto; + } + .s_clarico_h + { + .mt(0); + } + .s_content_p + { + max-width:unset; + } +} + +@media (max-width:600px) +{ + .s_clarico_section + { + .mb(20%); + } + .s_content_right + { + .pt(20%); + } + .s_clarico_3_content_sub + { + .pt(20%); + } + +} \ No newline at end of file diff --git a/ext/3rd-party-addons/clarico_snippet_style_4/templates/assets.xml b/ext/3rd-party-addons/clarico_snippet_style_4/templates/assets.xml new file mode 100755 index 00000000..41b85199 --- /dev/null +++ b/ext/3rd-party-addons/clarico_snippet_style_4/templates/assets.xml @@ -0,0 +1,9 @@ + + + + diff --git a/ext/3rd-party-addons/clarico_snippet_style_4/templates/style_4.xml b/ext/3rd-party-addons/clarico_snippet_style_4/templates/style_4.xml new file mode 100755 index 00000000..43c1921f --- /dev/null +++ b/ext/3rd-party-addons/clarico_snippet_style_4/templates/style_4.xml @@ -0,0 +1,151 @@ + + + + + diff --git a/ext/3rd-party-addons/clarico_snippet_style_7/__init__.py b/ext/3rd-party-addons/clarico_snippet_style_7/__init__.py new file mode 100755 index 00000000..e69de29b diff --git a/ext/3rd-party-addons/clarico_snippet_style_7/__manifest__.py b/ext/3rd-party-addons/clarico_snippet_style_7/__manifest__.py new file mode 100755 index 00000000..ef66b623 --- /dev/null +++ b/ext/3rd-party-addons/clarico_snippet_style_7/__manifest__.py @@ -0,0 +1,26 @@ +{ + # Theme information + 'name' : 'clarico Snippet Style 7', + 'category' : 'Website', + 'version' : '1.0', + 'summary': 'CMS Building Block', + 'description': """""", + + # Dependencies + 'depends': [ + 'clarico_snippets' + ], + + # Views + 'data': [ + 'templates/snippet_7.xml', + 'templates/assets.xml', + ], + + # Author + 'author': 'Emipro Technologies Pvt. Ltd.', + 'website': 'http://www.emiprotechnologies.com', + + # Technical + 'installable': True, +} diff --git a/ext/3rd-party-addons/clarico_snippet_style_7/static/description/icon.png b/ext/3rd-party-addons/clarico_snippet_style_7/static/description/icon.png new file mode 100755 index 00000000..bfafc926 Binary files /dev/null and b/ext/3rd-party-addons/clarico_snippet_style_7/static/description/icon.png differ diff --git a/ext/3rd-party-addons/clarico_snippet_style_7/static/src/img/slider_bg.jpg b/ext/3rd-party-addons/clarico_snippet_style_7/static/src/img/slider_bg.jpg new file mode 100755 index 00000000..92b5ef7b Binary files /dev/null and b/ext/3rd-party-addons/clarico_snippet_style_7/static/src/img/slider_bg.jpg differ diff --git a/ext/3rd-party-addons/clarico_snippet_style_7/static/src/img/slider_img_1.png b/ext/3rd-party-addons/clarico_snippet_style_7/static/src/img/slider_img_1.png new file mode 100755 index 00000000..52d7867c Binary files /dev/null and b/ext/3rd-party-addons/clarico_snippet_style_7/static/src/img/slider_img_1.png differ diff --git a/ext/3rd-party-addons/clarico_snippet_style_7/static/src/img/slider_img_2.png b/ext/3rd-party-addons/clarico_snippet_style_7/static/src/img/slider_img_2.png new file mode 100755 index 00000000..89246e13 Binary files /dev/null and b/ext/3rd-party-addons/clarico_snippet_style_7/static/src/img/slider_img_2.png differ diff --git a/ext/3rd-party-addons/clarico_snippet_style_7/static/src/img/snippet_7.jpg b/ext/3rd-party-addons/clarico_snippet_style_7/static/src/img/snippet_7.jpg new file mode 100755 index 00000000..065272cd Binary files /dev/null and b/ext/3rd-party-addons/clarico_snippet_style_7/static/src/img/snippet_7.jpg differ diff --git a/ext/3rd-party-addons/clarico_snippet_style_7/static/src/img/style_7_bg.png b/ext/3rd-party-addons/clarico_snippet_style_7/static/src/img/style_7_bg.png new file mode 100755 index 00000000..57d8d1f2 Binary files /dev/null and b/ext/3rd-party-addons/clarico_snippet_style_7/static/src/img/style_7_bg.png differ diff --git a/ext/3rd-party-addons/clarico_snippet_style_7/static/src/js/style_7.js b/ext/3rd-party-addons/clarico_snippet_style_7/static/src/js/style_7.js new file mode 100755 index 00000000..b80a516b --- /dev/null +++ b/ext/3rd-party-addons/clarico_snippet_style_7/static/src/js/style_7.js @@ -0,0 +1,8 @@ +/*$(document).ready(function() { + + $(".ts7_s-lvl_heading").fadeTo("1000",1.0).css("transform","translate(0,1em)"); + $(".ts7_f-lvl_heading").fadeTo("slow",1.0).css("transform","translate(0,2em)"); + $(".ts7_sub_title").fadeTo("1000",1.0).css("transform","translate(0,3em)"); + $(".ts7_btn_wrap").fadeTo("1000",1.0).css("transform","translate(0,3em)"); + $(".ts7_hr").fadeTo("1000",1.0).css("transform","translate(0,1em)"); +});*/ diff --git a/ext/3rd-party-addons/clarico_snippet_style_7/static/src/less/style_7.less b/ext/3rd-party-addons/clarico_snippet_style_7/static/src/less/style_7.less new file mode 100755 index 00000000..38e92082 --- /dev/null +++ b/ext/3rd-party-addons/clarico_snippet_style_7/static/src/less/style_7.less @@ -0,0 +1,150 @@ +.txt-white +{ + color:#fff; +} +.slider_img_height +{ + max-height:600px; + position:absolute; + bottom:0; +} +.slider_img_div +{ + width:55%; + float:left; +} + +.ts7_main_wrap +{ + padding:11%; + +} +.ts7_left_img_div +{ + display:block; + float:left; + width:60%; +} +.ts7_bg +{ + background-size:cover; + background-position:right center; + background-repeat: no-repeat; +} + +.ts7_content_wrap +{ + .common-div; + text-align:left; + + .sep_span_hr + { + float: left; + } +} +.ts7_sub_main +{ + display:block; + width:90%; + max-width:700px; +} +.ts7_f-lvl_heading +{ + .capitalize(); + .size(20px); + .muli-light(); +} +.ts7_s-lvl_heading +{ + .uppercase(); + .muli-bold(); + text-align:left; + .size(50px); + .mb(5px); + color:rgb(87,87,87); +} +.ts7_sub_title +{ + .capitalize(); + .muli-light(); + .size(14px); + max-width:400px; + .mb(3%) !important; + display:block; + .mt(0px); + .mr(auto); + .ml(auto); + line-height:179%; + .mt(3%); + .left(); +} +.ts7_btn_wrap +{ + //transition: 1s ease 0s; + .pt(5%); +} +.ts7sep_span_hr +{ + width: 75px; +border-top: 2px solid #000000; +float:left; +} +#list_ul li +{ + float:none; + opacity: 0; + display:block; + animation: fadeIn 1s ease-in both; +} +#list_ul li:nth-child(2) { + animation-delay: 1s; +} +#list_ul li:nth-child(3) { + animation-delay: 1s; +} +#list_ul li:nth-child(4) { + animation-delay: 2s; +} +#list_ul li:nth-child(5) { + animation-delay: 3s; +} + + @keyframes fadeIn { + from { + opacity: 0; + transform: translate3d(0, -30%, 0); + } + to { + opacity: 1; + transform: translate3d(0, 0, 0); + } +} +@media (max-width: 800px){ + .ts7_s-lvl_heading + { + .size(45px) + } +} +@media (max-width: 800px){ + + .ts7_s-lvl_heading + { + .size(60px); + } + +} +@media (max-width: 600px){ + + .ts7_s-lvl_heading + { + .size(35px); + } + .ts7_f-lvl_heading + { + .size(18px); + } + .ts7_sub_title + { + .size(13px); + } +} diff --git a/ext/3rd-party-addons/clarico_snippet_style_7/templates/assets.xml b/ext/3rd-party-addons/clarico_snippet_style_7/templates/assets.xml new file mode 100755 index 00000000..a178e725 --- /dev/null +++ b/ext/3rd-party-addons/clarico_snippet_style_7/templates/assets.xml @@ -0,0 +1,11 @@ + + + + diff --git a/ext/3rd-party-addons/clarico_snippet_style_7/templates/snippet_7.xml b/ext/3rd-party-addons/clarico_snippet_style_7/templates/snippet_7.xml new file mode 100755 index 00000000..5f74f9ea --- /dev/null +++ b/ext/3rd-party-addons/clarico_snippet_style_7/templates/snippet_7.xml @@ -0,0 +1,30 @@ + + + + + diff --git a/ext/3rd-party-addons/clarico_snippet_style_9/__init__.py b/ext/3rd-party-addons/clarico_snippet_style_9/__init__.py new file mode 100755 index 00000000..e69de29b diff --git a/ext/3rd-party-addons/clarico_snippet_style_9/__manifest__.py b/ext/3rd-party-addons/clarico_snippet_style_9/__manifest__.py new file mode 100755 index 00000000..d5f85f1b --- /dev/null +++ b/ext/3rd-party-addons/clarico_snippet_style_9/__manifest__.py @@ -0,0 +1,26 @@ +{ + # Theme information + 'name' : 'clarico Snippet Style 9', + 'category' : 'Website', + 'version' : '1.0', + 'summary': 'CMS Building Blocks', + 'description': """""", + + # Dependencies + 'depends': [ + 'clarico_snippets' + ], + + # Views + 'data': [ + 'templates/snippet_15.xml', + 'templates/assets.xml', + ], + + # Author + 'author': 'Emipro Technologies Pvt. Ltd.', + 'website': 'http://www.emiprotechnologies.com', + + # Technical + 'installable': True, +} diff --git a/ext/3rd-party-addons/clarico_snippet_style_9/static/description/icon.png b/ext/3rd-party-addons/clarico_snippet_style_9/static/description/icon.png new file mode 100755 index 00000000..bfafc926 Binary files /dev/null and b/ext/3rd-party-addons/clarico_snippet_style_9/static/description/icon.png differ diff --git a/ext/3rd-party-addons/clarico_snippet_style_9/static/src/img/snippet_9.jpg b/ext/3rd-party-addons/clarico_snippet_style_9/static/src/img/snippet_9.jpg new file mode 100755 index 00000000..065272cd Binary files /dev/null and b/ext/3rd-party-addons/clarico_snippet_style_9/static/src/img/snippet_9.jpg differ diff --git a/ext/3rd-party-addons/clarico_snippet_style_9/static/src/img/style_15_img_1.png b/ext/3rd-party-addons/clarico_snippet_style_9/static/src/img/style_15_img_1.png new file mode 100755 index 00000000..b5be5e36 Binary files /dev/null and b/ext/3rd-party-addons/clarico_snippet_style_9/static/src/img/style_15_img_1.png differ diff --git a/ext/3rd-party-addons/clarico_snippet_style_9/static/src/img/style_15_img_2.png b/ext/3rd-party-addons/clarico_snippet_style_9/static/src/img/style_15_img_2.png new file mode 100755 index 00000000..909a35e9 Binary files /dev/null and b/ext/3rd-party-addons/clarico_snippet_style_9/static/src/img/style_15_img_2.png differ diff --git a/ext/3rd-party-addons/clarico_snippet_style_9/static/src/less/style_15.less b/ext/3rd-party-addons/clarico_snippet_style_9/static/src/less/style_15.less new file mode 100755 index 00000000..1a6c0326 --- /dev/null +++ b/ext/3rd-party-addons/clarico_snippet_style_9/static/src/less/style_15.less @@ -0,0 +1,146 @@ +.ts_banner + { + height:570px; + } + +.carousel-control.left,.carousel-control.right +{ + background-image:unset !important; +} + +.s_banner_img_text_fade_container +{ + + + .text_area_div + { + width:30%; + .left; + .pt(15%); + .pb(5%); + .pl(5%); + transition: 2s ease-in-out; + opacity:0; + } + .fade_img_container + { + width:70%; + display:block; + .left; + .pt(10%); + } + .slide1_img1_div + { + width:100%; + display:block; + margin: 0px auto; + transition: 2s ease-in-out; + opacity:0; + + img + { + max-height:500px; + } + } + .img_text_fade_text_heading +{ + .muli-bold; + .size(35px); + color: #9c9c9c; + .uppercase; + margin: 0; +} +.img_text_fade_text_heading_small +{ + color: #bcb6b6; + .size(16px); + .muli-light(); + .capitalize; + padding: 0; + .mt(6px) !important; +} +.discount_title +{ + .size(57px); + color: #545353; + .muli-semibold; + .uppercase; + .mb(10%); +} +} +.img_text_fade_text_para +{ + max-width:400px; +} +.bg-gray-lighter +{ + background-position:center; +} + +@media(max-width:1100px) +{ + .s_banner_img_text_fade_container + { + .img_text_fade_text_heading + { + .size(32px); + } + .img_text_fade_text_heading_small { + .size(14px); + } + .discount_title{ + .size(50px); + } + .fade_img_container + { + width:65%; + } + .text_area_div + { + width:35%; + } + } + .ts_banner + { + height:500px; + } +} +@media(max-width:800px) +{ + .ts_banner + { + height:auto; + } + .s_banner_img_text_fade_container + { + .text_area_div + { + .pt(5%); + text-align: center; + width: 100%; + } + .fade_img_container { + .pt(5%); + width: 100%; + } + .slide1_img1_div img { + max-height: 400px; + } + + } +} +@media(max-width:600px) +{ + .s_banner_img_text_fade_container .text_area_div{ + transition: none; + padding-left: 0% !important; + opacity: 1 !important; + transform: unset !important; + } + .s_banner_img_text_fade_container .fade_img_container { + padding-top: 10%; + } +} + + + diff --git a/ext/3rd-party-addons/clarico_snippet_style_9/templates/assets.xml b/ext/3rd-party-addons/clarico_snippet_style_9/templates/assets.xml new file mode 100755 index 00000000..93e27d98 --- /dev/null +++ b/ext/3rd-party-addons/clarico_snippet_style_9/templates/assets.xml @@ -0,0 +1,9 @@ + + + + diff --git a/ext/3rd-party-addons/clarico_snippet_style_9/templates/snippet_15.xml b/ext/3rd-party-addons/clarico_snippet_style_9/templates/snippet_15.xml new file mode 100755 index 00000000..9baa009c --- /dev/null +++ b/ext/3rd-party-addons/clarico_snippet_style_9/templates/snippet_15.xml @@ -0,0 +1,75 @@ + + + + + + + diff --git a/ext/3rd-party-addons/clarico_snippets/__init__.py b/ext/3rd-party-addons/clarico_snippets/__init__.py new file mode 100755 index 00000000..e69de29b diff --git a/ext/3rd-party-addons/clarico_snippets/__manifest__.py b/ext/3rd-party-addons/clarico_snippets/__manifest__.py new file mode 100755 index 00000000..dd967f54 --- /dev/null +++ b/ext/3rd-party-addons/clarico_snippets/__manifest__.py @@ -0,0 +1,25 @@ +{ + # Theme information + 'name' : 'Clarico Snippets', + 'category' : 'Website', + 'version' : '1.0', + 'summary': 'All Custom CMS Block Builders', + 'description': """""", + + # Dependencies + 'depends': [ + 'clarico_layout' + ], + + # Views + 'data': [ + 'templates/snippets.xml', + ], + + # Author + 'author': 'Emipro Technologies Pvt. Ltd.', + 'website': 'http://www.emiprotechnologies.com', + + # Technical + 'installable': True, +} diff --git a/ext/3rd-party-addons/clarico_snippets/static/description/icon.png b/ext/3rd-party-addons/clarico_snippets/static/description/icon.png new file mode 100755 index 00000000..09fd34ab Binary files /dev/null and b/ext/3rd-party-addons/clarico_snippets/static/description/icon.png differ diff --git a/ext/3rd-party-addons/clarico_snippets/templates/snippets.xml b/ext/3rd-party-addons/clarico_snippets/templates/snippets.xml new file mode 100755 index 00000000..9012370b --- /dev/null +++ b/ext/3rd-party-addons/clarico_snippets/templates/snippets.xml @@ -0,0 +1,122 @@ + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/ext/3rd-party-addons/clarico_wishlist/__init__.py b/ext/3rd-party-addons/clarico_wishlist/__init__.py new file mode 100755 index 00000000..f130ee60 --- /dev/null +++ b/ext/3rd-party-addons/clarico_wishlist/__init__.py @@ -0,0 +1,3 @@ +# -*- encoding: utf-8 -*- +# Part of Odoo. See LICENSE file for full copyright and licensing details. +from . import controller diff --git a/ext/3rd-party-addons/clarico_wishlist/__manifest__.py b/ext/3rd-party-addons/clarico_wishlist/__manifest__.py new file mode 100755 index 00000000..500908af --- /dev/null +++ b/ext/3rd-party-addons/clarico_wishlist/__manifest__.py @@ -0,0 +1,27 @@ +{ + # Theme information + 'name' : 'Clarico Wishlist', + 'category' : 'Website', + 'version' : '1.0', + 'summary': 'View List of Products added to Wishlist', + 'description': """""", + + # Dependencies + 'depends': [ + 'website_sale_wishlist','clarico_shop', 'clarico_product','clarico_account', + ], + + # Views + 'data': [ + 'template/theme_template.xml', + 'template/assets.xml', + 'template/wishlist_list_popout.xml', + ], + + # Author + 'author': 'Emipro Technologies Pvt. Ltd.', + 'website': 'http://www.emiprotechnologies.com', + + # Technical + 'installable': True, +} diff --git a/ext/3rd-party-addons/clarico_wishlist/controller/__init__.py b/ext/3rd-party-addons/clarico_wishlist/controller/__init__.py new file mode 100755 index 00000000..12a7e529 --- /dev/null +++ b/ext/3rd-party-addons/clarico_wishlist/controller/__init__.py @@ -0,0 +1 @@ +from . import main diff --git a/ext/3rd-party-addons/clarico_wishlist/controller/main.py b/ext/3rd-party-addons/clarico_wishlist/controller/main.py new file mode 100755 index 00000000..6357b0f4 --- /dev/null +++ b/ext/3rd-party-addons/clarico_wishlist/controller/main.py @@ -0,0 +1,48 @@ +import odoo +from odoo import http +from odoo import fields +from odoo.http import request +from odoo.addons.website_sale_wishlist.controllers.main import WebsiteSaleWishlist +from itertools import product + +class claricoWishlist(WebsiteSaleWishlist): + + @http.route(['/shop/wishlist'], type='http', auth="public", website=True) + def get_wishlist(self, count=False, **kw): + response = super(claricoWishlist, self).get_wishlist(count=count,**kw) + Rating = request.env['rating.rating'] + products = request.env['product.wishlist'].with_context(display_default_code=False).current() + rating_templates = {} + if products: + for product in products : + ratings = Rating.search([('message_id', 'in', product.product_id.product_tmpl_id.website_message_ids.ids)]) + rating_product = product.product_id.product_tmpl_id.rating_get_stats([('website_published', '=', True)]) + rating_templates[product.id] = rating_product + response.qcontext['rating_product'] = rating_templates + return response + + + @http.route(['/wishlist_products_popout'], type='json', auth="public", website=True) + def wishpopout(self, **kwargs): + product = request.env['product.wishlist'].sudo().with_context(display_default_code=False).search([("partner_id", "=", request.env.user.partner_id.id)]) + + pricelist = request.website.get_current_pricelist() + + from_currency = request.env.user.company_id.currency_id + to_currency = pricelist.currency_id + compute_currency = lambda price: from_currency.compute(price, to_currency) + products={ + 'object': product, + 'compute_currency': compute_currency, + } + response = http.Response(template="clarico_wishlist.clarico_wishlist_popover_data",qcontext=products) + return response.render() + + @http.route(['/clear_wishlist'], type='json', auth="public", website=True) + def clear_wishlist(self, wish=False,**kwargs): + wishlist = request.env['product.wishlist'].sudo() + if wish: + wishlist_ids =wishlist.search([('id', '=', wish)]) + wishlist_ids.write({'active': False}) + return True + return False diff --git a/ext/3rd-party-addons/clarico_wishlist/static/description/icon.png b/ext/3rd-party-addons/clarico_wishlist/static/description/icon.png new file mode 100755 index 00000000..09fd34ab Binary files /dev/null and b/ext/3rd-party-addons/clarico_wishlist/static/description/icon.png differ diff --git a/ext/3rd-party-addons/clarico_wishlist/static/src/img/demo_wait.gif b/ext/3rd-party-addons/clarico_wishlist/static/src/img/demo_wait.gif new file mode 100755 index 00000000..ee35dda3 Binary files /dev/null and b/ext/3rd-party-addons/clarico_wishlist/static/src/img/demo_wait.gif differ diff --git a/ext/3rd-party-addons/clarico_wishlist/static/src/img/h1-slide1-img.png b/ext/3rd-party-addons/clarico_wishlist/static/src/img/h1-slide1-img.png new file mode 100755 index 00000000..85f1831a Binary files /dev/null and b/ext/3rd-party-addons/clarico_wishlist/static/src/img/h1-slide1-img.png differ diff --git a/ext/3rd-party-addons/clarico_wishlist/static/src/img/icon_empty_wishlist.jpg b/ext/3rd-party-addons/clarico_wishlist/static/src/img/icon_empty_wishlist.jpg new file mode 100755 index 00000000..ef191e6e Binary files /dev/null and b/ext/3rd-party-addons/clarico_wishlist/static/src/img/icon_empty_wishlist.jpg differ diff --git a/ext/3rd-party-addons/clarico_wishlist/static/src/img/wish-login.jpg b/ext/3rd-party-addons/clarico_wishlist/static/src/img/wish-login.jpg new file mode 100755 index 00000000..56bd07f9 Binary files /dev/null and b/ext/3rd-party-addons/clarico_wishlist/static/src/img/wish-login.jpg differ diff --git a/ext/3rd-party-addons/clarico_wishlist/static/src/img/wishlist.jpg b/ext/3rd-party-addons/clarico_wishlist/static/src/img/wishlist.jpg new file mode 100755 index 00000000..5c1da585 Binary files /dev/null and b/ext/3rd-party-addons/clarico_wishlist/static/src/img/wishlist.jpg differ diff --git a/ext/3rd-party-addons/clarico_wishlist/static/src/js/custom.js b/ext/3rd-party-addons/clarico_wishlist/static/src/js/custom.js new file mode 100755 index 00000000..beeccd71 --- /dev/null +++ b/ext/3rd-party-addons/clarico_wishlist/static/src/js/custom.js @@ -0,0 +1,120 @@ +odoo.define('wishlist.wishscript', function(require) { +"use strict"; +require('web.dom_ready'); +var base = require('web_editor.base'); +var ajax = require('web.ajax'); +var rpc = require('web.rpc'); +var utils = require('web.utils'); +var core = require('web.core'); +var _t = core._t; + + var remove_product_ids =[]; + $(".remove2wish").click(function() + { + var current=$(this); + var pid = current.attr('data-id'); + + // Browser + navigator.sayswho= (function(){ + var ua= navigator.userAgent, tem, + M= ua.match(/(opera|chrome|safari|firefox|msie|trident(?=\/))\/?\s*(\d+)/i) || []; + if(/trident/i.test(M[1])){ + tem= /\brv[ :]+(\d+)/g.exec(ua) || []; + return 'IE '+(tem[1] || ''); + } + if(M[1]=== 'Chrome'){ + tem= ua.match(/\b(OPR|Edge)\/(\d+)/); + if(tem!= null) return tem.slice(1).join(' ').replace('OPR', 'Opera'); + } + M= M[2]? [M[1], M[2]]: [navigator.appName, navigator.appVersion, '-?']; + if((tem= ua.match(/version\/(\d+)/i))!= null) M.splice(1, 1, tem[1]); + return M.join(' '); + })(); + + var name= navigator.sayswho + var bnm=name.toLowerCase().split('safari') + if(name.toLowerCase() == "ie 11") + { + ajax.jsonRpc('/remove_wishlist_product', 'call', {'product_id' : pid}).then(function(data) + { + + $('.product[data-id='+pid+']').css("display","none") + if(data.wishcount==0) + $(".wish_count").css("display","none !important"); + else + $(".wish_count").css("display","inline-block"); + $('.wish_count').html(data.wishcount) + + }); + } + if(bnm.length > 1) + { + ajax.jsonRpc('/remove_wishlist_product', 'call', {'product_id' : pid}).then(function(data) + { + + $('.product[data-id='+pid+']').css("display","none") + if(data.wishcount==0) + $(".wish_count").css("display","none !important"); + else + $(".wish_count").css("display","inline-block"); + $('.wish_count').html(data.wishcount) + + }); + } + else + { + var current_product_name=current.attr('data-name'); + + remove_product_ids.push(pid); + var self_undo = $(".undo[data-id='" + pid + "']"); + self_undo.css("visibility","visible").after().html(' Undo   ' + ' " ' + current_product_name + ' " ' ); + $(".remove2wish[data-id='" + pid + "']").css("display","none"); + $(".add-to-cart[data-id='" + pid + "']").css("display","none"); + $(".undo_opacity[data-id='" + pid + "']").css("opacity","0.3") + } + + + }); + $(window).bind('beforeunload', function(){ + if(remove_product_ids.length > 0){ + + ajax.jsonRpc('/remove_wishlist_product', 'call', {'product_id' : remove_product_ids}).then(function(data) + { + + + + }); + } + }); + + $(".clear_wishlist").click(function(e){ + var wish = []; + $('.o_comparelist_table tr').each(function(){ + var tr= $(this); + if(tr.data('wish-id')){ + wish.push(tr.data('wish-id')) + } + }); + rpc.query({ + model: 'product.wishlist', + method: 'write', + args: [wish, { active: false }], + }) + .then(function(){ + window.location.reload() + }); + }); + + $(".undo").click(function() + { + var current=$(this); + var pid = current.attr('data-id'); + remove_product_ids.splice($.inArray(pid, remove_product_ids),1); + + $(".undo[data-id='" + pid + "']").css("visibility","hidden"); + $(".remove2wish[data-id='" + pid + "']").css("display","block"); + $(".add-to-cart[data-id='" + pid + "']").css("display","block"); + $(".undo_opacity[data-id='" + pid + "']").css("opacity","1") + }); + +}); diff --git a/ext/3rd-party-addons/clarico_wishlist/static/src/js/wishlist_script.js b/ext/3rd-party-addons/clarico_wishlist/static/src/js/wishlist_script.js new file mode 100755 index 00000000..79c321cb --- /dev/null +++ b/ext/3rd-party-addons/clarico_wishlist/static/src/js/wishlist_script.js @@ -0,0 +1,73 @@ +odoo.define('wishlist.wish', function(require) { + "use strict"; + require('web.dom_ready'); + var base = require('web_editor.base'); + var ajax = require('web.ajax'); + var rpc = require('web.rpc'); + var utils = require('web.utils'); + var core = require('web.core'); + var _t = core._t; + var url="" + + $(".wish_shop_a[disabled]").each(function(){ + $(this).find("i").removeClass("fa fa-heart-o").addClass("fa fa-heart inwish"); + }) + $(".wish_shop_a,.disabled").click(function(){ + $(this).find("i").removeClass("fa fa-heart-o").addClass("fa fa-heart inwish"); + $(this).parents(".itemscope-main").find(".added-wish-item").find(".fa-heart-o").removeClass("fa fa-heart-o").addClass("fa fa-heart inwish"); + }) + + // shop popout + + $(".apply-wishlist").click(function(e) + { + e.preventDefault(); + $('.cus_theme_loader_layout').removeClass('hidden'); + ajax.jsonRpc('/wishlist_products_popout', 'call', {}).then(function(data) + { + $(".common-continer").html(data); + $(".common-main-div").css("display","block").addClass("zoom-fadein"); + $('.cus_theme_loader_layout').addClass('hidden'); + }) + + }); + + + + $(".common-close-btn").click(function(){ + $(".common-continer").html(""); + $(".common-main-div").css("display","none"); + }) + + + + $(document).on( 'keydown', function(e){ + if(e.keyCode === 27) { + $(".common-continer").html(""); + $(".common-main-div").css("display","none"); + } + }); + + //Claer Wishlist + $(".clear_wishlist").click(function(e){ + var wish = []; + $('.table-comparator tr').each(function(){ + var tr= $(this); + if(tr.data('wish-id')){ + wish.push(tr.data('wish-id')) + } + }); + ajax.jsonRpc('/clear_wishlist', 'call', {'wish': wish}).then(function () {window.location.reload();}); + }); + + + /*$('.my_wish_quantity').on('change', function() { + var wish_count = $(".my_wish_quantity").html(); + console.log(wish_count) + if(wish_count > 0){ + console.log($(".my_wish_quantity").html()); + $(".apply-wishlist").css("display","block"); + } + })*/ +}) + diff --git a/ext/3rd-party-addons/clarico_wishlist/static/src/less/wishlist_responsive.less b/ext/3rd-party-addons/clarico_wishlist/static/src/less/wishlist_responsive.less new file mode 100755 index 00000000..580b4714 --- /dev/null +++ b/ext/3rd-party-addons/clarico_wishlist/static/src/less/wishlist_responsive.less @@ -0,0 +1,13 @@ +@media (max-width:1000px){ + & .tr_clarico{ + width:100%; + } +} +@media (max-width:500px){ + & .tr_clarico{ + .pb(5%); + } + & .a_clarico_wish_text{ + .size(14px); + } +} \ No newline at end of file diff --git a/ext/3rd-party-addons/clarico_wishlist/static/src/less/wishlist_style.less b/ext/3rd-party-addons/clarico_wishlist/static/src/less/wishlist_style.less new file mode 100755 index 00000000..738a36f0 --- /dev/null +++ b/ext/3rd-party-addons/clarico_wishlist/static/src/less/wishlist_style.less @@ -0,0 +1,171 @@ + +.main-div-W100{ + + .main-div-maxW{ + width:90%; + display:block; + margin:0px auto; + max-width:1400px; + .pt(3%); + + } +} +.wishlist-cover-img +{ +width:auto; +max-width:100%; +.center; +} + +/*------------------main wishlist-------------*/ +.td_clarico_img +{ +width:22%; +.left(); +} +.tr_clarico +{ +width:50%; +.left(); +.mt(5%); +&:hover +{ +.bg(transparent); +} +} +.table-striped > tbody > tr:nth-of-type(2n+1) +{ +.bg(rgb(255,255,255)) +} +.clarico_table > tbody > tr > td +{ +border:0px none; +padding:0; +display:block; +} +.clarico_table +{ +border:0px none; +} +.td_clarico_text +{ +.muli-regular; +.size(15px); +color: #717171; +width: 100%; +display: block; +.ellipsis; +max-width: 75%; +.right(); +} +.a_clarico_wish_text +{ +.muli-regular; +.size(15px); +color: #717171; +width: 100%; +display: block; +.mb(8px); +.ellipsis; +max-width: 100%; +.right(); +width:100%; +} +.price_td{ +max-width: 75%; +.right(); +text-align:left; +width: 100% !important; +.size(13px); +.text-danger +{ +color: #B8B8B8 !important; +.size(12px); +.mr(2px); +} +} +.clarico_wish_cart +{ +width: 100% !important; +max-width: 75%; +.right(); +text-align:left; +.mt(4px); +} +.wish_clarico_add,.wish_clarico_rm +{ +.size(12px); +.mr(10px); +color: #717171; +} +.wish_clarico_rm +{ +.size(13px); +} +.table-hover > tbody > tr:hover { + .bg(transparent); +} +#wishlist_shop{ + .disabled{ + i + { + color: @theme-color; + } + } + .inwish{ + color: @theme-color !important; + } +} +.o_add_wishlist_dyn.disabled >span, .o_add_wishlist_dyn[disabled] > span, fieldset[disabled] .o_add_wishlist >span, .wish_shop_a.disabled, .wish_shop_a[disabled], fieldset[disabled] .wish_shop_a { + cursor: not-allowed; + color: @theme-color !important; +} + +#in-wishlist-shop{ + position: absolute; + top: 5px; + right: 7px; + z-index: 10; + font-size: 12px; + + & .inwish{ + .size(12px); + color : @theme-color !important; + } + + & .fa-heart-o{ + display : none; + } +} +.wish-add-cart-checkbox{ + & .type-checkbox{ + .pl(0) !important; + } + & .checkbox-custom{ + left:26px !important; + } +} + +.wishlist_temp_heading +{ + display:inline-block; +} +.clear_wishlist +{ + .size(11px); + color:@theme-color; + display:inline-block; +} +.js_wish_simc_inwish,.js_wish_mulc_inwish +{ + i + { + color:@theme-color !important; + } +} +.js_wish_simc.disabled >i, .js_wish_simc[disabled] >i,.js_wish_mulc.disabled >i, .js_wish_mulc[disabled] >i{ + cursor: not-allowed; + color: @theme-color !important; +} + + diff --git a/ext/3rd-party-addons/clarico_wishlist/template/assets.xml b/ext/3rd-party-addons/clarico_wishlist/template/assets.xml new file mode 100755 index 00000000..99c290e0 --- /dev/null +++ b/ext/3rd-party-addons/clarico_wishlist/template/assets.xml @@ -0,0 +1,17 @@ + + + + + diff --git a/ext/3rd-party-addons/clarico_wishlist/template/theme_template.xml b/ext/3rd-party-addons/clarico_wishlist/template/theme_template.xml new file mode 100755 index 00000000..452cbc8b --- /dev/null +++ b/ext/3rd-party-addons/clarico_wishlist/template/theme_template.xml @@ -0,0 +1,225 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ext/3rd-party-addons/clarico_wishlist/template/wishlist_list_popout.xml b/ext/3rd-party-addons/clarico_wishlist/template/wishlist_list_popout.xml new file mode 100755 index 00000000..392cb0a2 --- /dev/null +++ b/ext/3rd-party-addons/clarico_wishlist/template/wishlist_list_popout.xml @@ -0,0 +1,60 @@ + + + + + diff --git a/ext/3rd-party-addons/customize_theme/__init__.py b/ext/3rd-party-addons/customize_theme/__init__.py new file mode 100755 index 00000000..19240f4e --- /dev/null +++ b/ext/3rd-party-addons/customize_theme/__init__.py @@ -0,0 +1,2 @@ +from . import controllers +from . import models \ No newline at end of file diff --git a/ext/3rd-party-addons/customize_theme/__manifest__.py b/ext/3rd-party-addons/customize_theme/__manifest__.py new file mode 100755 index 00000000..a2bcc05f --- /dev/null +++ b/ext/3rd-party-addons/customize_theme/__manifest__.py @@ -0,0 +1,30 @@ +{ + # Theme information + 'name' : 'Customize Theme', + 'category' : 'Website', + 'version' : '1.0', + 'summary': '6 Preset Color Options to Cutomize Your Store', + 'description': """ +Using Customize Theme To change Primary Color + """, + + # Dependencies + 'depends': [ + 'clarico_layout' + ], + + #Views + 'data': [ + 'templates/assets.xml', + 'templates/templates.xml' + ], + + # Author + 'author': 'Emipro', + 'website': 'http://www.emiprotechnologies.com', + + # Technical + 'installable': True, + 'auto_install': False, + 'application': False, +} diff --git a/ext/3rd-party-addons/customize_theme/controllers/__init__.py b/ext/3rd-party-addons/customize_theme/controllers/__init__.py new file mode 100755 index 00000000..deec4a8b --- /dev/null +++ b/ext/3rd-party-addons/customize_theme/controllers/__init__.py @@ -0,0 +1 @@ +from . import main \ No newline at end of file diff --git a/ext/3rd-party-addons/customize_theme/controllers/main.py b/ext/3rd-party-addons/customize_theme/controllers/main.py new file mode 100755 index 00000000..4d7ca9ae --- /dev/null +++ b/ext/3rd-party-addons/customize_theme/controllers/main.py @@ -0,0 +1,109 @@ +from odoo import http +from odoo.http import request +import os + +class themeColor(http.Controller): + + @http.route('/theme_color_change', type='json', auth="user", website=True) + def color(self, theme_color=False, **kw): + colorObj = request.env['ir.config_parameter'] + + if theme_color: + request.env['ir.config_parameter'].sudo().set_param("customize_theme.theme_color", + repr(theme_color)) + + path = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) + path = path + "/static/src/less/custom_color.less" + + #...write file + f = open(path, "w") + f.write("@theme-color:"+theme_color+';') + f.close() + + @http.route('/theme_color_store', type='json', auth="user", website=True) + def color_store(self, theme_color=False, **kw): + colorObj = request.env['ir.config_parameter'] + color_id = colorObj.sudo().get_param('customize_theme.theme_color') + if color_id: + color_id = color_id.replace("'", "") + + return color_id + + +# @http.route(['/fontbox'], type='json', auth="public", methods=['POST'], website=True,csrf=False) +# def fontbox(self, **post): +# response = http.Response(template="customize_theme.font_box_template",qcontext=post) +# return response.render() +# +# @http.route(['/change_font'], type='json', auth="public", methods=['POST'], website=True,csrf=False) +# def change_font(self, **post): +# path = os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) +# path = path + "/clarico_base/static/src/less/fonts.less" +# fin = open(path, 'r') +# linelist = fin.readlines() +# fin.close() +# fout = open(path, 'w') +# flag='' +# for line in linelist: +# if flag=='muli-Bold': +# ln=line.replace(line,' src: url('+post['bold_type']+');\n') +# fout.write(ln) +# flag='' +# elif flag=='muli-Regular': +# ln=line.replace(line,' src: url('+post['regular_type']+');\n') +# fout.write(ln) +# flag='' +# elif flag=='muli-semibold': +# ln=line.replace(line,' src: url('+post['semibold_type']+');\n') +# fout.write(ln) +# flag='' +# elif flag=='muli-light': +# ln=line.replace(line,' src: url('+post['light_type']+');\n') +# fout.write(ln) +# flag='' +# elif 'font-family: muli-Bold' in line: +# flag='muli-Bold'; +# fout.write(line) +# elif 'font-family: muli-Regular' in line: +# flag='muli-Regular'; +# fout.write(line) +# elif 'font-family: muli-semibold' in line: +# flag='muli-semibold'; +# fout.write(line) +# elif 'font-family: muli-light' in line: +# flag='muli-light'; +# fout.write(line) +# elif flag=='oswald-bold': +# ln=line.replace(line,' src: url('+post['f2_bold_type']+');\n') +# fout.write(ln) +# flag='' +# elif flag=='oswald-regular': +# ln=line.replace(line,' src: url('+post['f2_regular_type']+');\n') +# fout.write(ln) +# flag='' +# elif flag=='oswald-semibold': +# ln=line.replace(line,' src: url('+post['f2_semibold_type']+');\n') +# fout.write(ln) +# flag='' +# elif flag=='oswald-light': +# ln=line.replace(line,' src: url('+post['f2_light_type']+');\n') +# fout.write(ln) +# flag='' +# elif 'font-family: oswald-bold' in line: +# flag='oswald-bold'; +# fout.write(line) +# elif 'font-family: oswald-regular' in line: +# flag='oswald-regular'; +# fout.write(line) +# elif 'font-family: oswald-semibold' in line: +# flag='oswald-semibold'; +# fout.write(line) +# elif 'font-family: oswald-light' in line: +# flag='oswald-light'; +# fout.write(line) +# else: +# flag=''; +# fout.write(line) +# fout.close() +# return True +# diff --git a/ext/3rd-party-addons/customize_theme/models/__init__.py b/ext/3rd-party-addons/customize_theme/models/__init__.py new file mode 100755 index 00000000..5cb91a6d --- /dev/null +++ b/ext/3rd-party-addons/customize_theme/models/__init__.py @@ -0,0 +1 @@ +# from . import res_config_settings \ No newline at end of file diff --git a/ext/3rd-party-addons/customize_theme/models/res_config_settings.py b/ext/3rd-party-addons/customize_theme/models/res_config_settings.py new file mode 100755 index 00000000..dd4d8589 --- /dev/null +++ b/ext/3rd-party-addons/customize_theme/models/res_config_settings.py @@ -0,0 +1,29 @@ +# -*- coding: utf-8 -*- +from odoo import api, fields, models + +class BaseConfigSettings(models.TransientModel): + _inherit = 'res.config.settings' + + theme_color = fields.Char('Theme Color') +# theme_btn_color = fields.Char('Button Color') + + @api.model + def get_values(self): + res = super(BaseConfigSettings, self).get_values() + params = self.env['ir.config_parameter'].sudo() + theme_color = params.get_param('customize_theme.theme_color', default=False) + if theme_color: + res.update(theme_color= theme_color.replace("'", "")) + else: + res.update(theme_color=False) + return res + + + @api.multi + def set_values(self): + self.ensure_one() + super(BaseConfigSettings, self).set_values() + self.env['ir.config_parameter'].sudo().set_param("customize_theme.theme_color", + repr(self.theme_color)) + + diff --git a/ext/3rd-party-addons/customize_theme/static/description/icon.png b/ext/3rd-party-addons/customize_theme/static/description/icon.png new file mode 100755 index 00000000..09fd34ab Binary files /dev/null and b/ext/3rd-party-addons/customize_theme/static/description/icon.png differ diff --git a/ext/3rd-party-addons/customize_theme/static/src/img/Header_1.jpg b/ext/3rd-party-addons/customize_theme/static/src/img/Header_1.jpg new file mode 100644 index 00000000..480032d2 Binary files /dev/null and b/ext/3rd-party-addons/customize_theme/static/src/img/Header_1.jpg differ diff --git a/ext/3rd-party-addons/customize_theme/static/src/img/Header_2.jpg b/ext/3rd-party-addons/customize_theme/static/src/img/Header_2.jpg new file mode 100644 index 00000000..296ba09b Binary files /dev/null and b/ext/3rd-party-addons/customize_theme/static/src/img/Header_2.jpg differ diff --git a/ext/3rd-party-addons/customize_theme/static/src/img/Header_3.jpg b/ext/3rd-party-addons/customize_theme/static/src/img/Header_3.jpg new file mode 100644 index 00000000..3a0987da Binary files /dev/null and b/ext/3rd-party-addons/customize_theme/static/src/img/Header_3.jpg differ diff --git a/ext/3rd-party-addons/customize_theme/static/src/img/Header_4.jpg b/ext/3rd-party-addons/customize_theme/static/src/img/Header_4.jpg new file mode 100644 index 00000000..622aa933 Binary files /dev/null and b/ext/3rd-party-addons/customize_theme/static/src/img/Header_4.jpg differ diff --git a/ext/3rd-party-addons/customize_theme/static/src/img/Header_5.jpg b/ext/3rd-party-addons/customize_theme/static/src/img/Header_5.jpg new file mode 100644 index 00000000..2674adaa Binary files /dev/null and b/ext/3rd-party-addons/customize_theme/static/src/img/Header_5.jpg differ diff --git a/ext/3rd-party-addons/customize_theme/static/src/img/Header_6.jpg b/ext/3rd-party-addons/customize_theme/static/src/img/Header_6.jpg new file mode 100644 index 00000000..3c85e1ce Binary files /dev/null and b/ext/3rd-party-addons/customize_theme/static/src/img/Header_6.jpg differ diff --git a/ext/3rd-party-addons/customize_theme/static/src/img/footer_1.jpg b/ext/3rd-party-addons/customize_theme/static/src/img/footer_1.jpg new file mode 100644 index 00000000..30574f13 Binary files /dev/null and b/ext/3rd-party-addons/customize_theme/static/src/img/footer_1.jpg differ diff --git a/ext/3rd-party-addons/customize_theme/static/src/img/footer_2.jpg b/ext/3rd-party-addons/customize_theme/static/src/img/footer_2.jpg new file mode 100644 index 00000000..3fc37e9c Binary files /dev/null and b/ext/3rd-party-addons/customize_theme/static/src/img/footer_2.jpg differ diff --git a/ext/3rd-party-addons/customize_theme/static/src/img/footer_3.jpg b/ext/3rd-party-addons/customize_theme/static/src/img/footer_3.jpg new file mode 100644 index 00000000..725005af Binary files /dev/null and b/ext/3rd-party-addons/customize_theme/static/src/img/footer_3.jpg differ diff --git a/ext/3rd-party-addons/customize_theme/static/src/js/customize_font.js b/ext/3rd-party-addons/customize_theme/static/src/js/customize_font.js new file mode 100755 index 00000000..80e60646 --- /dev/null +++ b/ext/3rd-party-addons/customize_theme/static/src/js/customize_font.js @@ -0,0 +1,66 @@ +odoo.define('customize_theme.FontBox', function (require) { +"use strict"; + +var ajax = require('web.ajax'); + +$(document).ready(function() { +/* $("#font_box").click(function(e){ + ajax.jsonRpc('/fontbox', 'call', {}).then(function (data) { + $(data).appendTo(document.body); + $('body').addClass('modal-open'); + $(".close-popup").click(function(e){ + $("#fontbox").remove(); + $('.modal-backdrop').remove(); + $('body').removeClass('modal-open'); + }); + $("#apply_font").click(function(e){ + if ($('#bold_type').val() ==='' || $('#regular_type').val() ==='' || $('#semibold_type').val() ==='' ||$('#light_type').val() ==='' ||$('#f2_light_type').val() ==='' ||$('#f2_regular_type').val() ==='' ||$('#f2_semibold_type').val() ==='' ||$('#f2_bold_type').val() ==='') { + alert("fill all the font type.") + } + else{ + ajax.jsonRpc('/change_font','call',{ + bold_type:$('#bold_type').val(),regular_type:$('#regular_type').val(),semibold_type:$('#semibold_type').val(),light_type:$('#light_type').val(), + f2_light_type:$('#f2_light_type').val(),f2_regular_type:$('#f2_regular_type').val(),f2_semibold_type:$('#f2_semibold_type').val(),f2_bold_type:$('#f2_bold_type').val(), + }).then(function (data){ + window.location.reload('true'); + }) + } + + }); + $(".font_reset_a").click(function(e){ + + $('#light_type').val('https://fonts.gstatic.com/s/poppins/v5/pxiByp8kv8JHgFVrLDz8Z1xlFQ.woff2'); + $('#regular_type').val('https://fonts.gstatic.com/s/poppins/v5/pxiEyp8kv8JHgFVrJJfecg.woff2 '); + $('#semibold_type').val('https://fonts.gstatic.com/s/poppins/v5/pxiByp8kv8JHgFVrLEj6Z1xlFQ.woff2'); + $('#bold_type').val('https://fonts.gstatic.com/s/poppins/v5/pxiByp8kv8JHgFVrLCz7Z1xlFQ.woff2'); + $('#f2_light_type').val('https://fonts.gstatic.com/s/barlowcondensed/v1/HTxwL3I-JCGChYJ8VI-L6OO_au7B47rxz3bWuQ.woff2'); + $('#f2_regular_type').val('https://fonts.gstatic.com/s/barlowcondensed/v1/HTx3L3I-JCGChYJ8VI-L6OO_au7B6xHT2g.woff2'); + $('#f2_semibold_type').val('https://fonts.gstatic.com/s/barlowcondensed/v1/HTxwL3I-JCGChYJ8VI-L6OO_au7B4873z3bWuQ.woff2'); + $('#f2_bold_type').val('https://fonts.gstatic.com/s/barlowcondensed/v1/HTxwL3I-JCGChYJ8VI-L6OO_au7B46r2z3bWuQ.woff2'); + + }) + + }); + });*/ + + + + /*------ customize toggle ---------*/ + + $('.more_custom_icon').click(function(){ + var $parent_box = $(this).closest('.b_btm'); + // $parent_box.siblings().find('.expand_main_div').hide(); + $parent_box.find('.expand_main_div').toggle("slow" , function() { + if ($(this).is(':visible')) + $(this).css('display','inline-block'); + }); + // $(this).find('i').removeClass("fa fa-plus-circle"); + // $(this).find('i').addClass("fa fa-minus-circle"); + /* $parent_box.siblings().find('i').removeClass("fa fa-minus-circle"); + $parent_box.siblings().find('i').addClass("fa fa-plus-circle");*/ + $("i", this).toggleClass("fa fa-plus-circle fa fa-minus-circle"); + }); + + +}); +}); diff --git a/ext/3rd-party-addons/customize_theme/static/src/js/customize_header.js b/ext/3rd-party-addons/customize_theme/static/src/js/customize_header.js new file mode 100755 index 00000000..f12f5b82 --- /dev/null +++ b/ext/3rd-party-addons/customize_theme/static/src/js/customize_header.js @@ -0,0 +1,17 @@ +$(document).ready(function(){ + // Search Animation + $(".search_menu").click(function(){ + $(".header_main_center").addClass("search_animate"); + $(".search_menu_sub_div input").css("width","80%"); + setTimeout(function(){ + $(".search_menu_div").css("display","block"); + }, 500); + }) + $(".search_close").click(function(){ + $(".header_main_center").removeClass("search_animate"); + $(".search_menu_div").css("display","none"); + $(".search_menu_sub_div input").css("width","0%"); + }) + + +}) \ No newline at end of file diff --git a/ext/3rd-party-addons/customize_theme/static/src/js/website.theme.js b/ext/3rd-party-addons/customize_theme/static/src/js/website.theme.js new file mode 100755 index 00000000..e46c0d40 --- /dev/null +++ b/ext/3rd-party-addons/customize_theme/static/src/js/website.theme.js @@ -0,0 +1,189 @@ +odoo.define('clarico_layout.clarico_themecolor', function (require) { + 'use strict'; + + var ajax = require('web.ajax'); + var core = require('web.core'); + var session = require('web.session'); + var Widget = require('web.Widget'); + var QWeb = core.qweb; + + var clarico_themecolor = require('website.theme'); + + clarico_themecolor.include({ + + active_select_tags: function () { + /* Data store using json*/ + var theme = [] + ajax.jsonRpc('/theme_color_store', 'call', { + theme_color: theme + }).then(function (data) { + if(data){ + $('#input_color').val(data); + } + }); + + + + /* Apply theme color using json */ + + $(".select_theme_color").click(function () { + var theme_color = $('#input_color').val(); + if (theme_color != '') { + if (theme_color.match(/rgb\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*\)$/) || theme_color.match(/^\#([a-fA-F0-9]{6}|[a-fA-F0-9]{3})$/)) { + ajax.jsonRpc('/theme_color_change', 'call', { + theme_color: theme_color + }).then(function (data) { + }); + } + else { + $('.select_theme_color').find("input").remove(); + $('#theme_customize_modal').find('.cus_theme_loader').css('display', 'none'); + alert("Not a Valid Color"); + $('#theme_customize_modal').removeClass('in'); + $('#theme_customize_modal').addClass('out'); + } + } + }); + }, + + + get_xml_ids: function ($inputs) { + var xml_ids = []; + $inputs.each(function () { + if ($(this).data('xmlid') && $(this).data('xmlid').length) { + xml_ids = xml_ids.concat($(this).data('xmlid').split(/\s*,\s*/)); + } + if ($(this).data('tmp_xmlid') && $(this).data('tmp_xmlid').length) { + xml_ids = xml_ids.concat($(this).data('tmp_xmlid').split(/\s*,\s*/)); + } + }); + return xml_ids; + }, + update_style: function (enable, disable, reload) { + if (this.$el.hasClass('loading')) { + return; + } + this.$el.addClass('loading'); + + if (this.$el.find('.cus_theme_loader').hasClass("hidden")) { + this.$el.find('.cus_theme_loader').removeClass('hidden'); + } + + if (!reload && session.debug !== 'assets') { + var self = this; + return this._rpc({ + route: '/website/theme_customize', + params: { + enable: enable, + disable: disable, + get_bundle: true, + }, + }).then(function (bundleHTML) { + var $links = $('link[href*=".assets_frontend"]'); + var $newLinks = $(bundleHTML).filter('link'); + + var linksLoaded = $.Deferred(); + var nbLoaded = 0; + $newLinks.on('load', function (e) { + if (++nbLoaded >= $newLinks.length) { + linksLoaded.resolve(); + } + }); + $newLinks.on('error', function (e) { + linksLoaded.reject(); + window.location.hash = 'theme=true'; + window.location.reload(); + }); + + $links.last().after($newLinks); + return linksLoaded.then(function () { + $links.remove(); + self.$el.removeClass('loading'); + self.$el.find('.cus_theme_loader').addClass('hidden'); + }); + }); + } else { + var href = '/website/theme_customize_reload'+ + '?href='+encodeURIComponent(window.location.href)+ + '&enable='+encodeURIComponent(enable.join(','))+ + '&disable='+encodeURIComponent(disable.join(',')); + window.location.href = href; + return $.Deferred(); + } + }, + change_selection: function (event, init_mode) { + var self = this; + clearTimeout(this.time_select); + + if (this.$el.hasClass('loading')) return; // prevent to change selection when css is loading + + var $option = $(event.target).is('input') ? $(event.target) : $('input', event.target), + $options = $option, + checked = $option.prop('checked'); + + if (checked) { + var $inputs; + if ($option.data('enable')) { + $inputs = this.get_inputs($option.data('enable')); + $options = $options.add($inputs.filter(':not(:checked)')); + this.enable_disable($inputs, true); + } + if ($option.data('disable')) { + $inputs = this.get_inputs($option.data('disable')); + $options = $options.add($inputs.filter(':checked')); + this.enable_disable($inputs, false); + } + $option.closest('label').addClass('checked'); + } else { + $option.closest('label').removeClass('checked'); + } + + var $enable = this.$inputs.filter('[data-xmlid]:checked'); + $enable.closest('label').addClass('checked'); + var $disable = this.$inputs.filter('[data-xmlid]:not(:checked)'); + $disable.closest('label').removeClass('checked'); + + var $sets = this.$inputs.filter('input[data-enable]:not([data-xmlid]), input[data-disable]:not([data-xmlid])'); + $sets.each(function () { + var $set = $(this); + var checked = true; + if ($set.data('enable')) { + self.get_inputs($(this).data('enable')).each(function () { + if (!$(this).prop('checked')) checked = false; + }); + } + if ($set.data('disable')) { + self.get_inputs($(this).data('disable')).each(function () { + if ($(this).prop('checked')) checked = false; + }); + } + if (checked) { + $set.prop('checked', true).closest('label').addClass('checked'); + } else { + $set.prop('checked', false).closest('label').removeClass('checked'); + } + $set.trigger('update'); + }); + + if (this.flag && $option.data('reload') && document.location.href.match(new RegExp( $option.data('reload') ))) { + this.reload = true; + } + + clearTimeout(this.timer); + if (this.flag) { + this.timer = _.defer(function () { + if (!init_mode) self.on_select($options, event); + self.update_style(self.get_xml_ids($enable), self.get_xml_ids($disable), self.reload); + self.reload = true; + }); + } else { + this.timer = _.defer(function () { + if (!init_mode) self.on_select($options, event); + self.reload = true; + }); + } + }, + }); +}); + + diff --git a/ext/3rd-party-addons/customize_theme/static/src/less/button_styles/button_style_1.less b/ext/3rd-party-addons/customize_theme/static/src/less/button_styles/button_style_1.less new file mode 100755 index 00000000..e4c866f6 --- /dev/null +++ b/ext/3rd-party-addons/customize_theme/static/src/less/button_styles/button_style_1.less @@ -0,0 +1,25 @@ +.shop_now_button +{ + display: inline-block; + .size(14px); + line-height: 46px; + height: 46px; + letter-spacing: 1px; + padding: 0 30px; + text-align:center; + .uppercase; + background: @theme-color; + border-radius: 25px; + border: none; + color: #fff; + transition: all 300ms; + text-decoration: none; + .oswald-regular; + cursor: pointer; + + &:hover + { + background:black; + color:#fff !important; + } +} \ No newline at end of file diff --git a/ext/3rd-party-addons/customize_theme/static/src/less/button_styles/button_style_2.less b/ext/3rd-party-addons/customize_theme/static/src/less/button_styles/button_style_2.less new file mode 100755 index 00000000..a744e59b --- /dev/null +++ b/ext/3rd-party-addons/customize_theme/static/src/less/button_styles/button_style_2.less @@ -0,0 +1,94 @@ +.shop_now_button,.offer_detail_div_btn,shop_view_popup_link_btn +{ + color:@theme-color; + border: 2px solid @theme-color; + z-index: 1; + .oswald-regular(); + .bg(transparent); + outline: none !important; + cursor: pointer; + transition: all 0.3s ease; + position: relative; + display: inline-block; + border-radius:0; + line-height: 40px; + padding: 0px 20px; + .capitalize(); + letter-spacing:0; + .size(14px); + + &:hover + { + color: #fff; + border: 2px solid @theme-color !important; + .bg(@theme-color) !important; + } + &:hover:after + { + top: 0; + height: 100% !important; + } + &:active + { + top: 2px; + } +} +/*button.btn,a.btn +{ + color:@theme-color !important; + border: 2px solid @theme-color !important; + .bg(transparent); + z-index: 1; + position: relative; + display: inline-block; + .capitalize(); + border-radius:0; + letter-spacing:0; + .size(14px); + transition: all 0.3s ease; + + &:hover + { + color: #fff; + border: 2px solid @theme-color !important; + .bg(@theme-color) !important; + } + &:hover:after + { + top: 0; + height: 100% !important; + } + &:active + { + top: 2px; + } +}*/ +.shop_now_button:after,.offer_detail_div_btn:after,shop_view_popup_link_btn:after,button.btn:after,a.btn:after +{ + position: absolute; + content: "" !important; + width: 100% !important; + height: 0 !important; + bottom: 0; + left: 0; + z-index: -1; + background: @theme-color; + transition: all 0.3s ease; +} + + + +@media (max-width: 600px) { + + .shop_now_button,.offer_detail_div_btn,shop_view_popup_link_btn + { + .size(13px); + line-height: 33px; + height: 35px; + padding: 0 20px; + } + /*button.btn,a.btn + { + .size(13px); + }*/ +} diff --git a/ext/3rd-party-addons/customize_theme/static/src/less/button_styles/button_style_3.less b/ext/3rd-party-addons/customize_theme/static/src/less/button_styles/button_style_3.less new file mode 100755 index 00000000..3e7c8a39 --- /dev/null +++ b/ext/3rd-party-addons/customize_theme/static/src/less/button_styles/button_style_3.less @@ -0,0 +1,117 @@ +.shop_now_button,.offer_detail_div_btn +{ + color:#fff; + -webkit-transition: all 0.5s; + -moz-transition: all 0.5s; + -o-transition: all 0.5s; + transition: all 0.5s; + position: relative; + text-decoration: none; + border-radius:0; + border: 1px solid transparent; + opacity: 1 !important; + + &:hover::before + { + opacity: 0 ; + -webkit-transform: scale(0.5,0.5); + transform: scale(0.5,0.5); + } + + &:hover::after + { + opacity: 1; + -webkit-transform: scale(1,1); + transform: scale(1,1); + } + &:hover + { + .bg(transparent); + color:@theme-color !important; + border: 1px solid @theme-color; + } +} +/*button.btn,a.btn +{ + -webkit-transition: all 0.5s; + -moz-transition: all 0.5s; + -o-transition: all 0.5s; + transition: all 0.5s; + position: relative; + text-decoration: none; + border-radius:0; + border: 1px solid transparent; + + &:hover::before + { + opacity: 0 ; + -webkit-transform: scale(0.5,0.5); + transform: scale(0.5,0.5); + } + + &:hover::after + { + opacity: 1; + -webkit-transform: scale(1,1); + transform: scale(1,1); + } + &:hover + { + .bg(transparent) !important; + color:@theme-color !important; + border: 1px solid @theme-color !important; + } +}*/ +.shop_now_button::before,.offer_detail_div_btn::before +{ + content: ''; + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + z-index: 1; + background-color: rgba(255,255,255,0.25); + -webkit-transition: all 0.3s; + -moz-transition: all 0.3s; + -o-transition: all 0.3s; + transition: all 0.3s; + +} + +.shop_now_button:after,.offer_detail_div_btn:after +{ + content: ''; + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + z-index: 1; + opacity: 0; + -webkit-transition: all 0.3s; + -moz-transition: all 0.3s; + -o-transition: all 0.3s; + transition: all 0.3s; + border: 1px solid rgba(255,255,255,0.5); + -webkit-transform: scale(1.2,1.2); + transform: scale(1.2,1.2); +} + + + +@media (max-width: 600px) { + + .shop_now_button,.offer_detail_div_btn,shop_view_popup_link_btn + { + .size(12px); + line-height: 33px; + height: 35px; + padding: 0 20px; + } +/* button.btn,a.btn + { + .size(12px); + }*/ +} + diff --git a/ext/3rd-party-addons/customize_theme/static/src/less/button_styles/button_style_4.less b/ext/3rd-party-addons/customize_theme/static/src/less/button_styles/button_style_4.less new file mode 100755 index 00000000..3bef1f46 --- /dev/null +++ b/ext/3rd-party-addons/customize_theme/static/src/less/button_styles/button_style_4.less @@ -0,0 +1,57 @@ +.shop_now_button,.offer_detail_div_btn +{ + border-color: transparent !important; + transition: opacity 0.3s ease-in-out; + opacity: 0.8 !important; + color: #fff; + .bg(@theme-color); + .uppercase(); + .size(12px); + .muli-semibold(); + border-radius: 4px; + vertical-align: middle; + padding: 15px 25px; + display: inline-block; + height:auto; + line-height: unset !important; + letter-spacing: 0; + + &:hover + { + opacity: 1.0 !important; + color:#fff; + .bg(@theme-color) !important; + } +} +/*button.btn,a.btn +{ + border-color: transparent !important; + transition: opacity 0.3s ease-in-out; + opacity: 0.8 !important; + color: #fff; + .muli-semibold(); + border-radius: 4px; + letter-spacing: 0; + + &:hover + { + opacity: 1.0 !important; + color:#fff; + .bg(@theme-color) !important; + } +}*/ + + + +@media (max-width: 600px) { + + .shop_now_button,.offer_detail_div_btn,shop_view_popup_link_btn + { + .size(12px); + padding: 10px 20px; + } + /*button.btn,a.btn + { + .size(12px); + }*/ +} diff --git a/ext/3rd-party-addons/customize_theme/static/src/less/button_styles/button_style_5.less b/ext/3rd-party-addons/customize_theme/static/src/less/button_styles/button_style_5.less new file mode 100755 index 00000000..eb9d2eeb --- /dev/null +++ b/ext/3rd-party-addons/customize_theme/static/src/less/button_styles/button_style_5.less @@ -0,0 +1,57 @@ +.shop_now_button,.offer_detail_div_btn +{ + border:2px solid @theme-color; + color: @theme-color; + .bg(transparent); + .uppercase(); + .size(12px); + .muli-semibold(); + border-radius: 4px; + vertical-align: middle; + padding: 15px 25px; + display: inline-block; + height:auto; + line-height: unset !important; + letter-spacing: 0; + transition: all 0.5s; + + &:hover + { + color:#000 !important; + .bg(transparent); + border:2px solid #000; + } +} +/*button.btn,a.btn +{ + border:2px solid @theme-color !important; + color: @theme-color !important; + .bg(transparent); + .uppercase() !important; + .size(12px); + border-radius: 4px; + vertical-align: middle; + letter-spacing: 0; + transition: all 0.5s; + .muli-semibold(); + + &:hover + { + color:#000 !important; + .bg(transparent) !important; + border:2px solid #000 !important; + } +}*/ +@media (max-width: 600px) { + + .shop_now_button,.offer_detail_div_btn,shop_view_popup_link_btn + { + .size(12px); + padding: 10px 20px; + } + /*button.btn,a.btn + { + .size(12px); + }*/ +} + diff --git a/ext/3rd-party-addons/customize_theme/static/src/less/button_styles/button_style_6.less b/ext/3rd-party-addons/customize_theme/static/src/less/button_styles/button_style_6.less new file mode 100755 index 00000000..8a9acebf --- /dev/null +++ b/ext/3rd-party-addons/customize_theme/static/src/less/button_styles/button_style_6.less @@ -0,0 +1,52 @@ +.shop_now_button,.offer_detail_div_btn{ + + transition: all 0.3s ease-in-out; + color: @theme-color !important; + .bg(transparent); + border:2px solid @theme-color !important; + .oswald-regular; + .uppercase(); + letter-spacing: 1px; + border-radius: 25px; + .size(14px); + padding:10px 25px; + height: auto; + line-height: normal; + + &:hover{ + .bg(@theme-color) !important; + color:#fff !important; + border:2px solid @theme-color !important; + } +} +/*button.btn,a.btn +{ + color: @theme-color !important; + .bg(transparent); + border:2px solid @theme-color !important; + .oswald-regular; + .uppercase(); + letter-spacing: 1px; + border-radius: 25px; + .size(14px); + + &:hover{ + .bg(@theme-color) !important; + color:#fff !important; + border:2px solid @theme-color !important; + } +} +*/ +@media (max-width: 600px) { + + .shop_now_button,.offer_detail_div_btn,shop_view_popup_link_btn + { + .size(12px); + padding: 10px 20px; + } + /*button.btn,a.btn + { + .size(12px); + }*/ +} + diff --git a/ext/3rd-party-addons/customize_theme/static/src/less/custom_color.less b/ext/3rd-party-addons/customize_theme/static/src/less/custom_color.less new file mode 100755 index 00000000..d02426e8 --- /dev/null +++ b/ext/3rd-party-addons/customize_theme/static/src/less/custom_color.less @@ -0,0 +1 @@ +@theme-color:#000; \ No newline at end of file diff --git a/ext/3rd-party-addons/customize_theme/static/src/less/customize_btn.less b/ext/3rd-party-addons/customize_theme/static/src/less/customize_btn.less new file mode 100755 index 00000000..580214f4 --- /dev/null +++ b/ext/3rd-party-addons/customize_theme/static/src/less/customize_btn.less @@ -0,0 +1,249 @@ +.btn.no_btn_style +{ + color: #444 !important; + transition:unset !important; + + &:hover + { + .bg(transparent) !important; + color: #444 !important; + + } +} + +/*---------- demo buttons ---------------*/ + +.btn.shop_now_button1 +{ + display: inline-block; + .size(14px) !important; + line-height: 40px !important; + height: 40px !important; + letter-spacing: 1px; + padding: 0 30px !important; + text-align:center; + .uppercase !important; + background: @theme-color !important; + border-radius: 25px !important; + border: none !important; + color: #fff !important; + transition: all 300ms; + text-decoration: none; + .oswald-regular !important; + float: none !important; + + &:hover + { + background:black !important; + color:#fff !important; + } + + +} + +.btn.shop_now_button2 +{ + color:@theme-color !important; + border: 2px solid @theme-color !important; + z-index: 1; + .oswald-regular() !important; + background: transparent !important; + outline: none !important; + cursor: pointer; + transition: all 0.3s ease; + position: relative; + display: inline-block; + border-radius:0 !important; + line-height: 35px !important; + .capitalize() !important; + letter-spacing:0 !important; + .size(16px) !important; + text-decoration: none; + font-weight: normal; + height: 40px; + + &:hover + { + color: #fff !important; + border: 2px solid @theme-color !important; + } + &:hover:after + { + top: 0; + height: 100% !important; + } + &:active + { + top: 2px; + } +} +.btn.shop_now_button2:after +{ + position: absolute; + content: "" !important; + width: 100% !important; + height: 0 !important; + bottom: 0; + left: 0; + z-index: -1; + background: @theme-color; + transition: all 0.3s ease; +} + + +.btn.shop_now_button3 +{ + .bg(@theme-color) !important; + display: inline-block; + .size(13px) !important; + line-height: 39px; + height: 40px !important; + color:#fff !important; + -webkit-transition: all 0.5s; + -moz-transition: all 0.5s; + -o-transition: all 0.5s; + transition: all 0.5s; + position: relative; + text-decoration: none; + border-radius:0 !important; + border: 1px solid transparent !important; + float:none !important; + .uppercase() !important; + + &:hover::before + { + opacity: 0 ; + -webkit-transform: scale(0.5,0.5); + transform: scale(0.5,0.5); + } + + &:hover::after + { + opacity: 1; + -webkit-transform: scale(1,1); + transform: scale(1,1); + } + &:hover + { + .bg(transparent) !important; + color:@theme-color !important; + border: 1px solid @theme-color !important; + } +} +.btn.shop_now_button3::before +{ + content: ''; + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + z-index: 1; + background-color: rgba(255,255,255,0.25); + -webkit-transition: all 0.3s; + -moz-transition: all 0.3s; + -o-transition: all 0.3s; + transition: all 0.3s; + +} + +.btn.shop_now_button3:after +{ + content: ''; + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + z-index: 1; + opacity: 0; + -webkit-transition: all 0.3s; + -moz-transition: all 0.3s; + -o-transition: all 0.3s; + transition: all 0.3s; + border: 1px solid rgba(255,255,255,0.5); + -webkit-transform: scale(1.2,1.2); + transform: scale(1.2,1.2); +} + + + + +.btn.shop_now_button4 +{ + border-color: transparent !important; + transition: opacity 0.3s ease-in-out; + opacity: 0.8 !important; + color: #fff !important; + .bg(@theme-color) !important; + .uppercase() !important; + .size(13px) !important; + .muli-semibold() !important; + border-radius: 4px !important; + vertical-align: middle; + padding: 0 !important; + display: inline-block; + height:40px; + line-height: 40px !important; + letter-spacing: 0 !important; + float: none !important; + //margin: 3% 1% auto !important; + + + &:hover + { + opacity: 1.0 !important; + color:#fff !important; + .bg(@theme-color) !important; + border-color: transparent !important; + } + +} +.btn.shop_now_button5 +{ + border:2px solid @theme-color !important; + color: @theme-color !important ; + .bg(transparent) !important; + .uppercase() !important; + .size(13px) !important; + .muli-semibold() !important; + border-radius: 4px !important; + vertical-align: middle; + //padding: 12px 19px; + display: inline-block; + height:40px !important; + line-height: 38px !important; + letter-spacing: 0 !important; + float: none !important; + //margin: 3% 1% auto !important; + + + &:hover + { + color:#000 !important; + .bg(transparent) !important; + border:2px solid #000 !important; + } + +} +.btn.shop_now_button6 +{ + transition: all 0.3s ease-in-out; + color: @theme-color !important; + .bg(transparent); + border:2px solid @theme-color !important; + .oswald-regular; + .uppercase(); + letter-spacing: 1px; + border-radius: 25px !important; + .size(14px); + height: 40px; + line-height: 35px; + + &:hover{ + .bg(@theme-color) !important; + color:#fff !important; + border:2px solid @theme-color !important; + } + +} diff --git a/ext/3rd-party-addons/customize_theme/static/src/less/customize_theme_ui.less b/ext/3rd-party-addons/customize_theme/static/src/less/customize_theme_ui.less new file mode 100755 index 00000000..5837198e --- /dev/null +++ b/ext/3rd-party-addons/customize_theme/static/src/less/customize_theme_ui.less @@ -0,0 +1,405 @@ +/******************************* +* MODAL AS LEFT SIDEBAR +*******************************/ +#theme_customize_modal.modal.left, +#theme_customize_modal.modal.right { + .modal-dialog{ + position: fixed; + width: 320px; + top: 34px; + height: 100%; + -webkit-transform: translate3d(0%, 0, 0); + -ms-transform: translate3d(0%, 0, 0); + -o-transform: translate3d(0%, 0, 0); + transform: translate3d(0%, 0, 0); + } + .modal-content{ + height: 100%; + overflow-y: auto; + } + .modal-body { + padding: 15px 15px 80px; + display:inline-block; + } +} +/*Left*/ +#theme_customize_modal.modal.left.fade .modal-dialog{ + left: -320px; + -webkit-transition: opacity 0.3s linear, left 0.3s ease-out; + -moz-transition: opacity 0.3s linear, left 0.3s ease-out; + -o-transition: opacity 0.3s linear, left 0.3s ease-out; + transition: opacity 0.3s linear, left 0.3s ease-out; +} +#theme_customize_modal.modal.left.fade.in .modal-dialog{ + left: 0; + + h5 + { + .muli-semibold(); + .size(14px); + color: #5c5c5c; + } +} + +/*Right*/ +#theme_customize_modal.modal.right.fade .modal-dialog { + right: -320px; + -webkit-transition: opacity 0.3s linear, right 0.3s ease-out; + -moz-transition: opacity 0.3s linear, right 0.3s ease-out; + -o-transition: opacity 0.3s linear, right 0.3s ease-out; + transition: opacity 0.3s linear, right 0.3s ease-out; +} + +#theme_customize_modal.modal.right.fade.in .modal-dialog { + right: 0; +} + +/* ----- MODAL STYLE ----- */ +#theme_customize_modal .modal-content { + border-radius: 0; + border: none; + hr{ + color: @theme-color; + width: 35px; + display: none; + margin: 0px auto; + border-top: 2px solid; + float: left; + } +} +.b_btm +{ + border-bottom: 1px solid #eee; +} +#theme_customize_modal .modal-dialog +{ +.muli-regular(); +} +#theme_customize_modal .modal-header { + border-bottom-color: #d4d4d4; + background-color: #fff; + color: @theme-color; + button.close{ + opacity: 1; + font-size: 20px; + } + .modal-title + { + .size(16px); + .uppercase(); + .muli-semibold(); + } +} + +.btn-main { + color: #ffffff; + background-color:#000000 !important; + border-color:#000000; +} +.btn-main:active, .btn-main.active, .open > .dropdown-toggle.btn-main{ + color: #ffffff; + background-color: #bc3e60; + border-color: #bc3e60; +} + +/******************************* +* Color Radio Button +*******************************/ +#theme_customize_modal label.btn{ + border-radius: 0; + margin: 5px; + padding: 5px 12px; +} +#theme_customize_modal .btn span.fa { + opacity: 0; + .size(12px); +} +#theme_customize_modal .btn.checked span.fa { + opacity: 1; +} +#theme_customize_modal .btn-default span.fa { + color: #000; +} +#theme_customize_modal label.cbtn.btn{ + margin: 3% 0; + width: 70%; + display: inline-block; + vertical-align: top; + padding:0; +} +#theme_customize_modal .cbtn.btn span.fa { + opacity: 0; + .size(12px); +} +#theme_customize_modal .cbtn.btn.checked span.fa { + opacity: 1; +} + +/******************************* +* Set the color&style of the svg loader +*******************************/ +.cus_theme_loader svg path, +.cus_theme_loader svg rect{ + fill: @theme-color; +} +.cus_theme_loader svg{ + display: block; + margin: 0px auto; +} +.cus_theme_loader{ + position: absolute; + top: 0; + bottom: 0; + width: 100%; + height:100%; + background: rgba(0,0,0,0.7); + z-index: 10; +} +.cus_theme_loader_div{ + margin-top: 49%; + width: 100%; + display: inline-block; +} + +/*Button Style*/ +#theme_customize_modal .btn-success{ + border-color: #4cae4c !important; + background: #4cae4c; +} +#theme_customize_modal .btn-primary{ + border-color: #2e6da4 !important; + background: #2e6da4 !important; +} +#theme_customize_modal .btn-info{ + border-color: #46b8da !important; + background: #46b8da; +} +#theme_customize_modal .btn-default{ + border-color: #cccccc !important; + background: #cccccc; +} +#theme_customize_modal .btn-warning{ + border-color: #eea236 !important; + background: #eea236; +} +#theme_customize_modal .btn-danger{ + border-color:#be4978 !important; + background: #be4978 ; +} + +#theme_customize_modal .btn-new1{ + border-color:#83BB2B !important; + background: #83BB2B ; +} +#theme_customize_modal .btn-new2{ + border-color:#1FC0A0 !important; + background: #1FC0A0; +} +#theme_customize_modal .btn-new3{ + border-color:#F2776C !important; + background: #F2776C ; + +} +#theme_customize_modal .btn-new4{ + border-color:#C1A38B !important; + background: #C1A38B ; +} +#theme_customize_modal .btn-new5{ + border-color:#424378 !important; + background: #424378 ; +} + + +#theme_customize_modal .btn-comman{ + background: none; + color: #444 !important; + border: 1px solid #ccc !important; + border-radius: 0 !important; + .muli-regular(); + letter-spacing: 0; + .capitalize(); + +} + +/* Multi Color code less */ +.multi_color,.btn_multi_color{ + display: inline-block !important; + width:100%; + //margin: 6px; + //.mt(10%); + p{ + margin-bottom: 6%; + .muli-regular(); + font-size: 18px; + } + label{ + color: #fff !important; + background-color: @theme-color !important; + display: inline-block !important; + margin: 0 !important; + + &:hover{ + background-color: @theme-color !important; + } + } + #input_color,#btn_input_color{ + display: inline-block !important; + .p(5px 12px); + border: 1px solid @theme-color !important; + } +} + + +/* font style */ +.open_font_main +{ + width:100%; +} +#font_box +{ + padding: 6px 10px; +} +#fontbox +{ + .modal-dialog + { + max-width: 1000px; + display:block; + width:80%; + + .modal-content + { + border-radius: 0; + box-shadow: unset; + border: 0; + padding: 0 5%; + + .modal-body + { + display:inline-block; + width:49%; + + + .font_input_grp + { + .common-div; + .mb(3%); + + input + { + border: 0; + border-bottom: 1px solid #ccc; + width: 100%; + .bg(#fff); + } + .light_font_h5 + { + .muli-light(); + } + .regular_font_h5 + { + .muli-regular(); + } + .semibold_font_h5 + { + .muli-semibold(); + } + .bold_font_h5 + { + .muli-bold(); + } + } + } + .modal-footer + { + border:0; + text-align:left; + } + .modal-header + { + border-bottom: 1px solid @theme-color; + padding: 15px 0; + + h4 + { + .muli-semibold(); + .uppercase(); + } + } + } + + } +} +.font_reset_a +{ + padding:6px 10px; + color:@theme-color; +} +.f_bg_light +{ + .bg(#f4f4f4); + margin:3% 0; + + .font_style_sub-heading + { + color: #666; + width: auto; + display:inline-block; + padding: 5px 0; + .size(16px); + } +} +.more_custom_icon +{ + float:right; + color:@theme-color; + .size(14px); +} +.ct_btn_styles_main +{ + display:none; + text-align:left; + + .btn-group + { + width: 100%; + } +} +.expand_main_div +{ + display:none; + padding: 16px 0 32px 0; +} +.expand_main_div_first.expand_main_div +{ + + display:block; +} + +#theme_customize_modal .header_style_label,#theme_customize_modal .footer_style_label +{ + background: transparent; + padding: 0 !important; + display:inline-block; + width:46%; + margin: 2% !important; + + img + { + width:auto; + height:auto; + margin:0px auto; + box-shadow: unset !important; + } + + &:active + { + box-shadow: unset; + outline-offset: 0; + } +} +#theme_customize_modal .header_style_label.checked > img,#theme_customize_modal .footer_style_label.checked > img +{ + border: 1px solid @theme-color; +// margin: 0px; +} diff --git a/ext/3rd-party-addons/customize_theme/static/src/less/footer_styles/footer_style_1.less b/ext/3rd-party-addons/customize_theme/static/src/less/footer_styles/footer_style_1.less new file mode 100755 index 00000000..f5a1f15f --- /dev/null +++ b/ext/3rd-party-addons/customize_theme/static/src/less/footer_styles/footer_style_1.less @@ -0,0 +1,3 @@ +footer{ + background-color: lightgrey; +} \ No newline at end of file diff --git a/ext/3rd-party-addons/customize_theme/static/src/less/footer_styles/footer_style_2.less b/ext/3rd-party-addons/customize_theme/static/src/less/footer_styles/footer_style_2.less new file mode 100755 index 00000000..29bf03af --- /dev/null +++ b/ext/3rd-party-addons/customize_theme/static/src/less/footer_styles/footer_style_2.less @@ -0,0 +1,369 @@ +footer #footer +{ + .pt(0); +} +.endfooter_list +{ + display:none; +} +.copyright_endftr +{ + display:none; +} +.sign_up_newsletter +{ + display:inline-block; + width:64%; + text-align:center; + padding:1% 0; + vertical-align: top; + + .newsltr_lbl + { + display:block; + width: 40%; + .size(18px); + .muli-semibold(); + padding:0 2%; + float: left; + } + .js_subscribe + { + float:left; + width:60%; + + input.js_subscribe_email + { + border-radius: 0; + box-shadow: none; + + &:focus + { + border-color:#ccc; + } + } + + } +} +.copyright_payment_section +{ + .common-div; + + .ef_copyright_left + { + display:inline-block; + width:49%; + text-align:left; + } + .ef_payment_right + { + display:inline-block; + width:49%; + text-align:right; + + img + { + float:right; + } + + .payment_method_list + { + .mb(0); + display:block; + + li img + { + max-width: 39px; + } + } + } +} +.ef_sub_div +{ + padding:10px 0; +} +.company_info_section_main +{ + .common-div; + + + .ftr_company_detail + { + display:inline-block; + width:33%; + padding: 2% 0 1% 0; + vertical-align: top; + + span + { + display:inline-block; + width:15%; + max-width: 40px; + vertical-align: top; + + i + { + .bg(@theme-color); + color: #fff; + border-radius: 50%; + .size(15px); + .pt(10px); + width:35px; + height:35px; + text-align:center; + } + + } + + .field_padding + { + display:inline-block; + width:80%; + padding: 0 3%; + color:#555; + vertical-align: top; + line-height: 170%; + } + } + +} +.ftr_menu_section +{ + .common-div; + padding: 2% 0; + border-bottom: 1px solid #ccc; +} +.ftr_logo_social_section +{ + .common-div; + padding: 1% 0; +} +.ftr_logo_span +{ + .common-div; + + img + { + max-height:55px; + float:none; + } +} + +.ftr_inline-menu +{ + .common-div; + text-align:center; + margin: 1% 0; + + ul + { + list-style: none; + padding: 0; + margin:0; + + li + { + text-align: left; + padding: 0; + margin: 0; + display:inline; + border-right: 1px solid #ccc; + + section + { + display: inline-block; + + a + { + color: #666666; + padding: 15px 10px; + .size(13px); + .capitalize(); + font-family:@m-light; + + + &:hover + { + color:@theme-color; + } + } + + } + } + li:last-child + { + border-right: 1px solid transparent; + } + + } +} + +.ftr_social_icons_main +{ + .common-div; + text-align:center; + + .footer-social-icon + { + display:inline-block; + + + a { + display: block; + line-height: 29px; + text-align: center; + float: left; + margin-right: 15px; + font-size: 17px; + -webkit-transform: scale(1); + -webkit-transition: all 0.25s ease-out 0s; + } + } +} +.ftr_language +{ + display:inline-block; + width:35%; + + .js_language_selector + { + >li >a + { + .muli-light(); + color:#555; + line-height: 170%; + } + } +} + + + + + + + +@media (max-width:1000px) +{ + #footer + { + padding: 3% 0 !important; + } + .sign_up_newsletter + { + text-align: left; + } + .sign_up_newsletter .newsltr_lbl + { + .size(18px); + width: 30%; + padding:0; + } + .sign_up_newsletter .js_subscribe { + width: 55%; + } + .company_info_section_main .ftr_company_detail { + width: 100%; + } + .company_info_section_main .ftr_company_detail .field_padding + { + padding: 0 1%; + } + .ftr_language + { + width:100%; + } + .sign_up_newsletter + { + width:100%; + } + .ftr_logo_span img + { + float: left; + padding: 1% 0; + } + .ftr_inline-menu,.ftr_social_icons_main + { + text-align: left; + } + .ftr_inline-menu ul li:first-child section a + { + padding-left:0; + } + +} + +@media (max-width:800px) +{ + .sign_up_newsletter .newsltr_lbl + { + width: 40%; + } + .copyright_payment_section .ef_copyright_left { + width:100%; + } + .copyright_payment_section .ef_payment_right + { + width:100%; + .mt(2%); + + img + { + float:left; + } + } +} +@media (max-width:600px) +{ + .company_info_section_main .ftr_company_detail + { + padding: 5% 0 1% 0; + } + .sign_up_newsletter .newsltr_lbl { + width: 100%; + .mb(5%); + .size(16px); + } + .ftr_menu_section + { + padding: 5% 0; + } + .ftr_inline-menu ul li + { + display: inline-block; + margin: 5px 0; + border-right:none; + width: 100%; + + a + { + padding: 15px 0px !important; + line-height: 170%; + } + } + .sign_up_newsletter .js_subscribe + { + width:100%; + } + .company_info_section_main .ftr_company_detail .field_padding { + .size(13px); + } + .ftr_logo_social_section + { + padding: 5% 0; + } + .copyright_payment_section .ef_copyright_left { + margin: 5% 0; + } + .ftr_language .js_language_selector > li > a { + .size(13px); + } +} + + + + + + + + + diff --git a/ext/3rd-party-addons/customize_theme/static/src/less/footer_styles/footer_style_3.less b/ext/3rd-party-addons/customize_theme/static/src/less/footer_styles/footer_style_3.less new file mode 100755 index 00000000..94418464 --- /dev/null +++ b/ext/3rd-party-addons/customize_theme/static/src/less/footer_styles/footer_style_3.less @@ -0,0 +1,376 @@ +footer #footer +{ + .pt(0); +} +.endfooter_list +{ + display:none; +} +.copyright_endftr +{ + display:none; +} +.ftr_main +{ + .bg(#363A42); +} +.sign_up_newsletter +{ + .common-div; + text-align:center; + padding:2% 0; + + .newsltr_lbl + { + display: inline-block; + width: auto; + .size(20px); + .muli-semibold(); + padding:0 2%; + color:#fff; + } + .js_subscribe + { + display: inline-flex; + } +} +.footer_company_logo_left +{ + display:inline-block; + width:35%; + vertical-align:top; + .bg(#31353D); + padding: 5%; + + .ftr_logo_span + { + .common-div; + + img + { + float:left; + max-height:55px; + } + } + .lbl_div_container + { + .common-div; + margin:5% 0; + + .js_subscribe + { + .mt(15px); + .mb(15px); + + input.js_subscribe_email + { + border-radius: 0; + min-height: 40px; + } + a.js_subscribe_btn + { + padding: 9.3px; + } + } + } + .company_tagline + { + color: #ddd; + margin: 5% 0; + line-height: 165%; + } + .ftr_language_main + { + .js_language_selector + { + .mt(0) !important; + + >li >a + { + color: #999; + line-height: 185%; + } + } + } + .ftr_social_icons_main + { + .common-div; + .mt(8%); + + .footer-social-icon + { + display:inline-block; + width:100%; + text-align: left; + + a { + display: block; + line-height: 29px; + text-align: center; + float: left; + color:#fff; + .bg(#535353); + width: 30px; + height: 30px; + border-radius:50%; + margin-right: 10px; + font-size: 14px; + -webkit-transform: scale(1); + -webkit-transition: all 0.25s ease-out 0s; + + &:hover + { + color:@theme-color; + } + } + } +} + +} +.footer_menu_and_contact_right +{ + display:inline-block; + width:64%; + vertical-align:top; + padding: 5% 3%; + + .ftr_menu_list + { + display:inline-block; + width:64%; + vertical-align:top; + + + + .footer-heading .customer-service-ul li a + { + color:#888; + } + .footer-heading .security-ul li a + { + color:#888; + } + + .col-md-4.col-lg-6 { + padding: 0; + } + } + .ftr_contact_company + { + display:inline-block; + width:35%; + vertical-align:top; + + .customer-contact-ul + { + padding:0; + .mt(10%); + + li + { + list-style: none; + } + } + + .contact_detail_para + { + margin: 15px 0; + + span + { + display: inline-block; + width: 10%; + vertical-align: top; + color:#888; + } + p + { + color:#888; + display: inline-block; + width: 88%; + line-height: 165%; + } + } + } +} +.ftr_list_title + { + color:#fff; + .uppercase(); + .muli-bold(); + letter-spacing: 1px; + .size(14px); + line-height: 170%; + } + +.copyright_payment_section +{ + .common-div; + + .ef_copyright_left + { + display:inline-block; + width:49%; + text-align:left; + } + .ef_payment_right + { + display:inline-block; + width:49%; + text-align:right; + + + img + { + float:right; + } + .payment_method_list + { + .mb(0); + display:block; + + li img + { + max-width: 39px; + } + } + } +} +.ef_sub_div +{ + padding:10px 0; +} + + + + + +@media (max-width:1200px) +{ + .footer_company_logo_left + { + width:100%; + padding:5% 3%; + } + .clarico_logo_footer + { + display: inline-block; + width: 25%; + } + .footer_company_logo_left .lbl_div_container { + display: inline-block; + width: 74%; + margin: 0; + + .ftr_list_title + { + display: block; + float: left; + padding: 0 2%; + } + } + + .footer_company_logo_left .lbl_div_container .js_subscribe { + .mt(0); + } + .ftr_language_main + { + margin: 2% 0; + } + .footer_company_logo_left .ftr_social_icons_main + { + .mt(0); + } + .footer_menu_and_contact_right + { + width:100%; + padding:3%; + } + +} + +@media (max-width:1000px) +{ + .footer_menu_and_contact_right .ftr_menu_list { + width:40%; + } + .footer_menu_and_contact_right .ftr_contact_company + { + width: 59%; + } + .footer_menu_and_contact_right .ftr_contact_company .customer-contact-ul + { + .mt(5%); + } + .clarico_logo_footer + { + width:20%; + } + .footer_company_logo_left .lbl_div_container + { + width:79%; + } +} +@media (max-width:800px) +{ + .clarico_logo_footer + { + vertical-align: top; + .pt(3%); + } + .footer_company_logo_left .lbl_div_container .ftr_list_title + { + float: none; + padding: 0; + } + .clarico_logo_footer + { + width: 25%; + padding: 3% 0; + } + .footer_company_logo_left .lbl_div_container { + width: 74%; + } +} +@media (max-width:600px) +{ + .clarico_logo_footer + { + width:100%; + } + .footer_company_logo_left .lbl_div_container { + width: 100%; + } + .footer_menu_and_contact_right .ftr_menu_list { + width: 100%; + } + .footer_menu_and_contact_right .ftr_contact_company { + width: 100%; + } + .copyright_payment_section .ef_copyright_left { + width: 100%; + } + .copyright_payment_section .ef_payment_right { + width: 100%; + .mt(3%); + } + .copyright_payment_section .ef_payment_right img { + float: left; + } + .footer_company_logo_left .lbl_div_container .js_subscribe a.js_subscribe_btn { + padding: 10.3px; + } + .footer_company_logo_left .ftr_social_icons_main .footer-social-icon a + { + .mr(8px); + } + .footer_company_logo_left .ftr_logo_span img { + max-height: 45px; + } +} + + + + + + diff --git a/ext/3rd-party-addons/customize_theme/static/src/less/header_styles/header_style_1.less b/ext/3rd-party-addons/customize_theme/static/src/less/header_styles/header_style_1.less new file mode 100755 index 00000000..e69de29b diff --git a/ext/3rd-party-addons/customize_theme/static/src/less/header_styles/header_style_2.less b/ext/3rd-party-addons/customize_theme/static/src/less/header_styles/header_style_2.less new file mode 100755 index 00000000..021ec07a --- /dev/null +++ b/ext/3rd-party-addons/customize_theme/static/src/less/header_styles/header_style_2.less @@ -0,0 +1,527 @@ +.offer-left_header +{ + display:inline-block; + width:35%; +} +.pricelist_lang_conatiner +{ + display:inline-block; + width:29%; + text-align:center; +} +.pricelist_contact_conatiner +{ + display: inline-block; + width: 29%; + text-align: center; + float: none; + vertical-align:super; +} +.company_language +{ + float:left; + padding: 0 7px; + + .ul_margin + { + .mb(0); + .ml(0); + vertical-align: super; + + span + { + .oswald-regular(); + color:#fff; + } + .dropdown-menu + { + li>a + { + color:#444; + } + } + } +} +.header_curency_selector +{ + .dropdown-menu + { + >li>a + { + color:#444 !important; + } + } +} +.main-header-right .company-phone-div .header-main-signin li a b +{ + color:#fff; + letter-spacing: 0; + + i + { + .size(11px); + padding: 0 3px; + } +} +.main-header-right .company-phone-div li a +{ + color:#fff; + vertical-align: super; +} +.company_pricelist +{ + padding: 0 7px; + float: left; +} +.company_pricelist a.header_btn_style +{ + display: inline-block; + float: none; + color: #fff !important; + opacity: 1 !important; +} +#user_sign_in i{ + color: #fff; + .size(11px); +} +.header-stick +{ + padding:0; +} +.header-stick #top_menu +{ + text-align: center; + display: block; + margin: 0px auto; + width: 90%; + max-width:1400px; +} +.main-header .main-header-maxW .main-header-left +{ + .pt(0); +} + +.header-search +{ + display:inline-block; + width:35%; + padding: 10px 0; + //margin: 0 3%; + + .search_group + { + + .form-control:focus + { + border-color: #ccc; + box-shadow: none; + } + .oe_search_button + { + padding: 9px 14px; + position: relative; + border: none; + color:#fff; + .size(14px); + .bg(@theme-color); + } + + .oe_search_box + { + border-color:#e1e1e1; + height: 40px; + } + } +} +.cart_srch_combo_right +{ + display: inline-block; + width: 70%; + float:none; +} +.company_logo_main +{ + display: inline-block; + width: 29%; + float:none; + + >a + { + display:inline-block; + width:auto; + } +} +.header_3_cart +{ + display:inline-block; + width:35%; + padding: 10px 0; + + .header_cart_main + { + float:right; + margin: 0 3%; + } +} +.main-header-right +{ + padding:0; + display:inline-block; + float:none; + vertical-align: middle; +} +.navbar-static-top .container +{ + display: grid !important; + margin-top: 0; + +} +header +{ +// display:grid !important; +} +.navbar.navbar-static-top { + border: 1px solid #e1e1e1; + margin-top: 0; + min-height: auto; + vertical-align:top; +} +ul#top_menu > li { + border-left: 1px solid #e1e1e1; + + &:hover + { + >a + { + .bg(@theme-color); + + span + { + color:#fff; + } + } + } +} +ul#top_menu > li.active { + border-top: unset; + margin-top: 0; + } + .navbar-default .navbar-nav > li.active > a span + { + color:@theme-color; + } +.main-header-before +{ + margin: 10px 0; +} +.navbar-default .navbar-nav > li > a +{ + padding: 12px 18px !important; +} +.main-header +{ + .mb(0); + padding:0; + .bg(@theme-color); +} +.header_pera_offer +{ + color: #fff; +} +.header_pera_offer_pipe +{ + border-left: 1px solid #fff; +} +.main-header .main-header-maxW +{ + padding: 5px 0; +} +#header-social +{ + float:right; + padding: 5px 0px; +} +#header-social li +{ + margin: 0px 3px 0 3px; + + a + { + color:@theme-color; + + sup + { + color:#444; + } + } +} +.cart-update-text +{ + vertical-align: sub; +} +.offer-p +{ + text-align: left; +} +.main-header-right .company-phone-div .header-main-signin +{ + margin-top: 0 !important; + padding-top: 0 !important; +} +.main-header-left +{ + display:inline-block; + width:auto; +} +#header-social li +{ + display: inline-block; + vertical-align: sub; + float:none; +} +.main-header-right .company-phone-div .header-main-signin +{ + .pr(0px); +} +.company_logo img +{ + float:left; + max-height: 65px !important; +} +.navbar .navbar-top-collapse +{ + text-align:left; + //display: grid !important; +} +#top_menu ul.dropdown-menu { + top: 95%; +} +ul.navbar-right{ + display:block !important; + } +.header-stick #top_menu ul.dropdown-menu { + top: 100% !important; +} +.header-stick .custom-menu-inside-div { + top: 100% !important; +} +.block-none +{ + top: 100%; +} +#top_menu ul.dropdown-menu { + top: 100%; +} +.navbar-default .navbar-nav > li > a span +{ + .muli-regular(); + .size(12px); + color:#444; +} +.account-ul li .ul_class_admin_name a +{ + color: gray !important; + vertical-align: unset !important; +} +.main-header-right .company-phone-div .header-main-signin ul +{ + right: 0; + left: auto; +} +#header-wishlist +{ + display:none !important; +} +.company_pricelist .company_pricelist_container { + padding: 0px 7px; +} + + +/*----------------media query ----------------------*/ + + + +@media (max-width: 1200px) { + ul.navbar-right{ + display:none !important; + } + + + + ul#top_menu > li { + &:hover + { + >a + { + background:none; + + span + { + color:#000; + } + } + } + + } + .navbar-default { + .navbar-nav { + > li.active { + > a + { + span{ + color:#444; + } + } + } + } + } + #top_menu ul.dropdown-menu .active > a{ + + background-color: unset !important; + color: #444; + &:hover{ + color: #000 !important; + } + } + ul#top_menu > li:hover{ + .bg(none); + } + .navbar.navbar-static-top + { + border:none; + } + ul#top_menu > li + { + border-left:none; + } + .navbar .navbar-top-collapse + { + overflow:hidden !important; + } + .offer-left_header + { + width: 60%; + } + .pricelist_lang_conatiner + { + display:none; + } + .main-header-right + { + width:39%; + } +} +@media (max-width: 900px) { + .company_logo_main + { + display:none; + } + .header-search { + .search_group { + .oe_search_button{ + padding:9.5px 14px; + } + } + } + .navbar-header .navbar-brand.logo { + display: block; + } + .navbar-toggle + { + float:right; + } + .header-search + { + width:49%; + } + .header_3_cart + { + width: 50%; + float: right; + } + +} +@media (max-width:800px) +{ + .main-header .main-header-maxW .main-header-right + { + float: right; + } + .header_3_cart + { + width: 60%; + } + .mr-common + { + padding:0 !important; + } + + .header-search { + width: 40%; + } + .header_3_cart + { + .cart-update + { + width:200px; + } + } + .cart-update .cart-update-text { + font-size: 13px; + } + +} +@media (max-width:600px) +{ + .header-search .search_group .oe_search_button{ + padding:9.5px 14px; + } + .header-search .search_group .oe_search_box + { + .size(13px); + } + .offer-left_header + { + display:none; + } + .header_3_cart + { + .cart-update + { + display:none; + } + .cart_style_2 + { + display:inline-block; + padding: 6px 0; + + a + { + color:@theme-color; + + sup + { + color:#444; + } + } + } + } + .header_3_cart .header_cart_main { + margin: 0 5px; + } + #header-social li { + margin: 0px 5px 0 5px; +} + .header_3_cart { + width: 40%; + } + .header-search { + width: 60%; + } + .main-header-before { + margin: 5px 0; + } + +} + + diff --git a/ext/3rd-party-addons/customize_theme/static/src/less/header_styles/header_style_3.less b/ext/3rd-party-addons/customize_theme/static/src/less/header_styles/header_style_3.less new file mode 100755 index 00000000..3634f387 --- /dev/null +++ b/ext/3rd-party-addons/customize_theme/static/src/less/header_styles/header_style_3.less @@ -0,0 +1,312 @@ +.offer-left_header +{ + display:inline-block; + width:50%; +} +.block-none +{ + top: 100%; +} +header +{ + //display:grid !important; +} +.btn-group.open .dropdown-toggle{ + color:#464646 !important; +} +.btn .caret{ +margin-left: 2px; +} +.header-stick #top_menu { + max-width:1400px; +} +#header-wishlist +{ + display:none !important; +} +.company_language +{ + float:left; + padding: 0 7px; + + .ul_margin + { + .mb(0); + .ml(0); + vertical-align: super; + + span + { + .oswald-regular(); + color:#5a5a5a; + } + } +} +.company_pricelist .company_pricelist_container { + padding: 0px 7px; +} +.company_pricelist +{ + padding: 0px 7px !important; +} +.header-stick #top_menu ul.dropdown-menu { + top: 92% !important; +} +.header-stick .custom-menu-inside-div { + top: 92% !important; +} +.company_pricelist +{ + padding: 1px 7px; + float: left; +} +.main-header .main-header-maxW .main-header-left +{ + .pt(0); +} +.main-header-right .company-phone-div .header-main-signin #login_user_name { + padding-right: 5px; +} +.navbar-static-top +{ + .bg(@theme-color); + vertical-align:top; +} +.header-search +{ + display:inline-block; + width:35%; + padding: 10px 0; + //margin: 0 3%; + + .search_group + { + width:70%; + + .form-control:focus + { + border-color: #ccc; + box-shadow: none; + } + .oe_search_button + { + padding: 9px 14px; + position: relative; + border: none; + color:#fff; + .size(14px); + .bg(@theme-color); + } + + .oe_search_box + { + border-color:#e1e1e1; + height: 40px; + } + } +} +.company_logo_main +{ + display: inline-block; + width: 29%; + float:none; +} +.header_3_cart +{ + display: inline-block; + width: 35%; + padding: 10px 0; + + .header_cart_main + { + float:right; + } + .cart_style_2 a{ + color:@theme-color; + } +} +.navbar-default .navbar-nav > li > a span +{ + .oswald-semibold(); + color:#fff; +} +.navbar-default .header-stick .navbar-nav > li > a span{ + color:#000; +} +#top_menu li.active a +{ + .bg(transparent); + + span + { + opacity: 0.8; + } +} +.main-header-right +{ + padding:0; + display:inline-block; + float:none; + vertical-align: middle; + width:49%; +} +#header-social +{ + float:right; +} +.navbar-static-top .container +{ + .mt(5px); +} +.main-header-before +{ + margin: 10px 0; +} +.main-header +{ + .mb(0); + padding:0; +} +.main-header .main-header-maxW +{ + padding: 5px 0; +} +.navbar.navbar-static-top +{ + .mt(0); +} +#header-social li +{ + margin: 0px 3px 0 3px; +} +.offer-p +{ + text-align: left; +} +.main-header-right .company-phone-div .header-main-signin +{ + margin-top: 0 !important; + padding-top: 0 !important; +} +.main-header-left +{ + display:inline-block; + width:auto; +} +#header-social li +{ + display: inline-block; + vertical-align: sub; + float:none; +} +.main-header-right .company-phone-div .header-main-signin +{ + .pr(8px); +} + + +/*---======== Media Query =======---*/ + +@media (max-width:1200px) +{ + .navbar-static-top{ + .bg(#fff); + } + .navbar-default .navbar-toggle + { + border-color: #dddddd; + + .icon-bar + { + .bg(#fff); + } + } + + .navbar-default .navbar-toggle .icon-bar { + .bg(#888); + } + .navbar-default .navbar-nav > li > a span{ + color:#000; + } + +} +@media (max-width:800px) +{ + .company_logo_main + { + float:left; + } + .header_3_cart + { + + width: 10%; + padding: 20px 0; + float: right; + text-align: center; + + .header_cart_main { + float:none; + } + + .cart-update + { + display:none; + } + .cart_style_2 + { + display:inline-block; + } + } + .header-search + { + width: 50%; + float:right; + + .search_group + { + width: 100%; + } + } + .offer-left_header + { + display:none; + } + .main-header .main-header-maxW .main-header-right + { + width: auto !important; + float: right; + } + .header-search .search_group .oe_search_box { + .size(13px); + } + .main-header-before { + margin: 5px 0; + } +} +@media (max-width:500px) +{ + .company_logo_main { + display: none; + } + .header-search + { + width:88%; + float:left; + } + .navbar-default .navbar-toggle { + border-color: #ddd; + } + + .navbar.navbar-static-top + { + .bg(transparent); + } + .navbar-default .navbar-nav > li > a span + { + color:#444; + } + .company_pricelist{ + padding:1px 7px; + } +} + diff --git a/ext/3rd-party-addons/customize_theme/static/src/less/header_styles/header_style_4.less b/ext/3rd-party-addons/customize_theme/static/src/less/header_styles/header_style_4.less new file mode 100755 index 00000000..229240c2 --- /dev/null +++ b/ext/3rd-party-addons/customize_theme/static/src/less/header_styles/header_style_4.less @@ -0,0 +1,374 @@ +.navbar.navbar-static-top +{ + .bg(@theme-color); + vertical-align:top; +} +.navbar-default .navbar-nav > li > a span +{ + .oswald-semibold(); + color:#fff; +} + +.navbar-default .header-stick .navbar-nav > li > a span{ + color:#000; +} +#top_menu li.active a +{ + .bg(transparent); + + span + { + opacity: 0.8; + } +} +header +{ + //display:grid !important; +} +.navbar-static-top .container +{ + .mt(5px); +} +.company_logo_main { + display: inline-block; + float: none; + width: 30%; + + >a + { + display:inline-block; + width:auto; + } + img + { + float:left; + } +} +.header_all_info_right +{ + display: inline-block; + width: 69%; + vertical-align: top; + + .main-header-right + { + width: 100%; + float: none; + display: inline-block; + } +} +.offer-left_header +{ + display: inline-block; + width: 50%; + vertical-align: top; + + .offer-p + { + text-align:left; + } +} +.header-search +{ + width: 49%; + display: inline-block; + + .search_group + { + width:60%; + float:right; + + .search-query.form-control.oe_search_box + { + border-radius: 25px; + height: 40px; + } + .input-group-btn + { + position: absolute; + right: 35px; + display: inline-block; + top:2px; + + .oe_search_button + { + .bg(transparent); + color:#777; + .size(14px); + position: relative; + padding: 8px; + border: none; + z-index: 10; + } + } + .form-control:focus + { + border-color: #ccc; + box-shadow: none; + } + + } +} +.company_language +{ + float:left; + padding: 0 7px; + + .ul_margin + { + .mb(0); + .ml(0); + vertical-align: super; + + span + { + .oswald-regular(); + color:#5a5a5a; + } + } +} +.cart_style_4 +{ + + + .cart-update + { + display:none; + } + .cart_style_2 + { + display:block; + } +} +.main-header-right .company-phone-div +{ + float: none; + text-align: right; +} +.company_language { + float: none; + display: inline-block; + vertical-align: top; + +} + +.main-header-right .company-phone-div .header-main-signin +{ + display: inline-block; + float: none; + .pt(0) !important; + vertical-align: top; + .mt(0) !important; + .pr(7px); +} +#header-social { + float: none; + display: inline-block; + + li + { + margin: 0 7px 0 7px; + } +} +.cart_style_4 +{ + display: inline-block; + vertical-align:top; + a{ + color:#464646; + vertical-align:top; + } +} +.header-stick #top_menu { + max-width:1400px; +} +.company_pricelist { + padding: 0 7px; +} +.company_logo img{ + + max-height:65px !important; +} +.header_curency_selector +{ + float:none; + display: inline-block; + vertical-align: inherit; +} + +.header-stick #top_menu ul.dropdown-menu { + top: 92% !important; +} +.header-stick .custom-menu-inside-div { + top: 92% !important; +} +.company_pricelist +{ + padding: 0px !important; +} + + + +@media (max-width:1200px) +{ + .navbar-default .navbar-toggle + { + border-color: #fff; + + .icon-bar + { + .bg(#fff); + } + } + #top_menu .dropdown ul.dropdown-menu > li > a span + { + color:#fff; + } + .navbar-nav .open .dropdown-menu { + position: static; + float: none; + width: auto; + margin-top: 0; + background-color: #fff; + border: 0; + box-shadow: none; + } + .navbar-default .navbar-nav > .open > a{ + + background: #e7e7e7; + + span + { + color:#444; + } + + &:hover + { + background: #e7e7e7; + + span + { + color:#444; + } + } + } + #top_menu .dropdown ul.dropdown-menu > li > a span { + color: #777; + } + .navbar .navbar-top-collapse ul.navbar-right .custom-menu-inside-div .custom-menu-inside-left-div + { + .bg(#fff); + .pb(2%) !important; + } +} +@media (max-width:800px) +{ + .offer-left_header + { + display:none; + } + .navbar.navbar-static-top { + .mt(10px); + } + .header_all_info_right .main-header-right + { + width:100% !important; + } + .header-search + { + width: 70%; + float: right; + } + .main-header + { + .mb(0); + } + .header-search .search_group .oe_search_box { + .size(13px); + } + .company_logo img { + max-height: 60px !important; + } + #top_menu li.active a span + { + //color:#fff !important; + } + .cart_style_4 a + { + vertical-align:top; + + i{ + + vertical-align:top; + } + } +} + +@media(max-width:600px) +{ + .header-search .search_group { + width: 100%; + } + .header-search { + width: 60%; + } + .header_all_info_right + { + width:100%; + float:right; + } + .company_logo img { + max-height: 50px !important; + } + + .company_logo_main + { + position: absolute; + top: 10px; + } + .navbar-header .navbar-brand.logo { + display: none; + } + + + +} +@media(max-width:350px) +{ + .navbar.navbar-static-top { + .mt(5px); + } + .main-header-right { + padding: 0px 0; + } + #header-social + { + width: 80%; + text-align: right; + margin-top: 10px; + + li + { + float:right; + } + } + .cart_style_4 + { + + margin:0; + width: auto; + margin-top: 10px; + + } + .main-header-right .company-phone-div .header-main-signin + { + .pr(0) !important; + } + .header_curency_selector { + vertical-align: text-bottom; + } +} + + + + diff --git a/ext/3rd-party-addons/customize_theme/static/src/less/header_styles/header_style_5.less b/ext/3rd-party-addons/customize_theme/static/src/less/header_styles/header_style_5.less new file mode 100755 index 00000000..79794576 --- /dev/null +++ b/ext/3rd-party-addons/customize_theme/static/src/less/header_styles/header_style_5.less @@ -0,0 +1,404 @@ + +.navbar-header +{ + display:inline-block; + width:24%; + float:none; + + .navbar-brand.logo + { + display:inline-block; + width:auto; + + img + { + float:left; + padding:5px 0; + } + } +} +.navbar .navbar-top-collapse +{ + width: 75%; + float: none; + text-align: right; + display: inline-block !important; + vertical-align: text-bottom; +} +.navbar-static-top .container +{ + .mt(0); +} +.navbar-static-top +{ + .mt(0); + .mb(10px) !important; +} +.navbar-static-top .navbar-header .navbar-brand .logo-stick +{ + display:none; +} +.navbar-top-collapse.header-stick +{ + width:100% !important; + .pt(10px); + .pb(5px); + + #top_menu + { + width: 90%; + margin: 0px auto; + float: none !important; + text-align: center; + display: block; + max-width:1400px; + } +} +.header-stick #top_menu ul.dropdown-menu { + top: 88% !important; +} +.header-stick #top_menu ul.dropdown-menu { + top: 93% !important; +} +.header-stick .custom-menu-inside-div { + top: 93% !important; +} +.header-stick .navbar-nav > li.active > a span { + color: #fff !important; +} +.main-header-right,.pricelist_contact_conatiner +{ + padding:0; + +} + +.main-header-before +{ + .pt(10px); +} + +//search + + +.header_two_search_left +{ + display: inline-block; + width: 70%; + vertical-align: top; + float:right; + padding: 0 20px; +} +.header-search +{ + + .search_group + { + border: 1px solid #ddd; + border-radius: 25px; + + .oe_search_button + { + color: #000; + background: transparent; + padding: 10px 15px; + position: relative; + .size(13px); + border: navajowhite; + } + .oe_search_box + { + background: transparent; + border: none; + box-shadow: unset; + .oswald-regular(); + letter-spacing: 1px; + height:40px; + } + + } +} + + + +//pricelist and language + + +.company_pricelist .company_pricelist_container { + border-right: 1px solid #ddd; + display: inline-block; +} + +.pricelist_contact_conatiner +{ + display: inline-block; + width: 29%; + text-align: center; + float: none; + vertical-align:super; +} +.company_language +{ + display:inline-block; + vertical-align: top; + padding: 0 7px; + border-right:1px solid #ddd; + + .ul_margin + { + .mb(0); + .ml(0); + + span + { + .oswald-regular(); + color:#5a5a5a; + } + } +} + + + +.header_main_left +{ + display: inline-block; + width: 39%; + float:right; +} +.main-header-right +{ + float: none; + display: inline-block; + width: 60%; + vertical-align: top; + padding: 8px 0; +} +.main-header-before +{ + .mb(10px); +} + +.header-main-signin +{ + .pr(0); +} +.cart_style_5 +{ + float: right; + padding: 7px 20px; + border-left: 1px solid #e1e1e1; + + .cart-update + { + display:none; + } + .cart_style_2 + { + display:inline-block; + color: #5a5a5a; + } +} +.main-header-right .company-phone-div +{ + display: inline-block; + float: none; + vertical-align: top; +} +#header-social +{ + display:none; +} +.main-header-right .company-phone-div .header-main-signin +{ + float:none; + display:inline-block; + vertical-align: middle; +} +.cart-update .cart-update-text +{ + .oswald-regular(); + .capitalize(); +} + + +//header social share + +.header_style_share +{ + display: inline-block; + vertical-align: top; + + section + { + display:inline-block; + padding: 0 10px; + border-right: 1px solid #ddd; + + a + { + color: #5a5a5a;; + } + } +} +.company_call_us +{ + display:inline-block; + vertical-align: top; + padding: 0 7px; +border-right: 1px solid #ddd; + + + .header_call_icon + { + display: inline-block; + padding: 0 5px; + color: #5a5a5a; + } + .call_us_text + { + display: inline-block; + letter-spacing: 1px; + .oswald-regular(); + color: #5a5a5a; + } +} +ul#top_menu +{ + >li.active + { + border-top:0; + + >a + { + + color: #fff; + border-radius: 25px 0 25px 0; + .bg(@theme-color); + } + } + >li + { + margin: 0 5px; + >a + { + line-height: 30px; + } + + + &:hover + { + >a + { + color: #fff; + border-radius: 25px 0 25px 0; + .bg(@theme-color); + } + } + } + +} + + +@media (max-width:1200px) +{ + .container > .navbar-header { + width: 100%; + } + .navbar .navbar-header .navbar-brand img { + + max-height: 65px !important; + } + .navbar-toggle { + float:right; + margin: 20px 0 0 0; + } + + .navbar .navbar-top-collapse + { + display:block !important; + } +} + +@media (max-width:1100px) +{ + .main-header-right + { + width: 100%; + .mb(10px); + text-align:center; + } + .main-header-before { + .mb(0); + } + .header_main_left + { + width:50%; + float:right; + } +} + +@media (max-width:800px) +{ + .main-header-right { + width: 100% !important; + text-align:right; + } + .header_main_left + { + width: 70%; + } + .cart_style_5 .cart_style_2 { + margin: 0 10px; + + } + .main-header-right .company-phone-div .header-main-signin ul + { + left:auto; + right:0; + } + .company_pricelist .company_pricelist_container + { + vertical-align: text-bottom; + } +} + +@media(max-width:600px) +{ + .navbar-static-top + { + .mb(5px) !important; + } + .main-header-before + { + .pt(0); + .mt(0); + } + .header_style_share + { + display:none; + } + .header_main_left + { + width: 100%; + .mt(3%); + } + .header_two_search_left + { + width: 88%; + } + .cart_style_5 + { + width:10%; + } + .header-search .search_group .oe_search_box { + .size(13px); + } +} + +@media (max-width:400px) +{ + .company_call_us + { + display:none; + } + +} \ No newline at end of file diff --git a/ext/3rd-party-addons/customize_theme/static/src/less/header_styles/header_style_6.less b/ext/3rd-party-addons/customize_theme/static/src/less/header_styles/header_style_6.less new file mode 100755 index 00000000..8e31ea68 --- /dev/null +++ b/ext/3rd-party-addons/customize_theme/static/src/less/header_styles/header_style_6.less @@ -0,0 +1,505 @@ +.main-header +{ + display:none !important; +} + +.cart_style_6 +{ + display:none; +} +.company_pricelist +{ + display:none; +} +#header-social +{ + display:none; +} +//header social share + +.header_style_share +{ + display: inline-block; + vertical-align: top; + + section + { + display:inline-block; + padding: 0 7px; + + a + { + color: #fff; + } + } +} +.navbar-header +{ + display:inline-block; + width:24%; + float:none; + + .navbar-brand.logo + { + display:inline-block; + width:auto; + + img + { + float:left; + padding:5px 0; + } + } +} +.navbar .navbar-top-collapse +{ + width: 75%; + float: none; + text-align: right; + display: inline-block !important; + vertical-align: text-bottom; +} +.main-header-right +{ + width: 40%; + float: left; + padding: 10px 0; + display:block; +} +.header_main_center +{ + width:59%; + display:block; + text-align: right; + position: relative; + float:right; + padding: 10px 0; +} +#logout_ul +{ + .mb(0); + margin-top: 0 !important; +} +.header-main-signin +{ + margin-top: 0; + padding-top: 0; + letter-spacing: 0; + list-style: none; + + + + #login_user_name + { + + .header_admin_border + { + float: right; + } + + .account-ul + { + right: 0; + left: auto; + top: 20px; + + } + a b span + { + font-weight: normal; + .oswald-regular(); + color: #fff; + } + } +} +.navbar .navbar-top-collapse.header-stick +{ + width:100%; +} +.header-stick #top_menu { + display: block; + width: 90%; + margin: 0px auto; + max-width:1400px; +} +.header-stick .custom-menu-inside-div { + top: 100% !important; +} +.header-stick #top_menu ul.dropdown-menu { + top: 100% !important; +} +.logo-stick + { + display:none !important; + } + .company-phone-div + { + display: inline-block; + float: right; + + #logout_ul + { + .pl(0); + + + #user_sign_in + { + b { + text-transform: capitalize; + font-weight: normal; + color: #fff; + .oswald-regular(); + } + } + } + } +.company_call_us +{ + display:inline-block; + vertical-align: top; + padding: 0 7px; + border-left: 1px solid #fff; + + .header_call_icon + { + display: inline-block; + padding: 0 5px; + color: #fff; + } + .call_us_text + { + display: inline-block; + letter-spacing: 1px; + .oswald-regular(); + color: #fff; + } +} +.company_language +{ + + display:inline-block; + border-left: 1px solid #fff; + padding: 0 7px; + + .ul_margin + { + .mb(0); + .ml(0); + + span + { + .oswald-regular(); + color:#fff; + } + } +} +.js_searchBox a i { + font-size: 13px; + color: #fff; +} +.anim-search +{ + right:0; + left:auto; +} +.main-header-before +{ + padding:5px 0; + .bg(@theme-color); + position:relative; + margin:0; + min-height:44px; +} +.static_menu_ind { + display: inline-block; + padding: 0 10px; + border-right: 1px solid #fff; + + a + { + .oswald-regular(); + color:#fff; + + &:hover + { + color:#000; + } + } +} +.static_menu_ind:last-child { + border-right: unset; +} +.navbar-static-top .container +{ + .mt(0); +} + + +// Search Animation +.search_menu{ + cursor: pointer; + list-style: none; + display: inline-block; + padding: 0 10px; + + a + { + color:#fff; + } +} +.g_search +{ + display: block; + float: right; +} +.search_class +{ + display: block; + float: right; +} +.search_animate{ + +} +.search_animate{ + .transition(all 0.5s ease-in-out); + .mt(-10em); +} +.search_menu_div{ + display:none; + float:right; + width: 30%; + + & .search_menu_sub_div{ + .common-div; + position: relative; + + & .search_icon{ + .size(18px); + color : #fff; + .pr(10px); + display:inline-block; + border: 0; + margin-top: 5px; + padding-left: 5%; + .bg(transparent); + } + & input,.hs6_srch_input{ + border:0; + border-bottom: 1px solid #fff; + outline:0; + display:inline-block; + float:right; + width:0%; + height:34px; + background: transparent; + color:#fff; + box-shadow: none; + } + .search_close{ + .size(20px); + color:#fff; + cursor: pointer; + display: inline-block; + float:right; + .pl(5px); + .mt(5px); + } + } +} +.search_menu_sub_div{ + position:relative; + animation:animatebottom 0.2s +} +@keyframes animatebottom{ + from{bottom:-100px;opacity:0} + to{bottom:0;opacity:1} +} +.search_menu_sub_div input{ + animation: animateinput 0.4s ease-in both; + -ms-animation: animateinput 0.4s ease-in both; + animation-delay: 0.3s; + opacity:1; +} +@keyframes animateinput{ + from{ + opacity:0; + width:0; + } + to{ + opacity:1; + width:80%; + } +} +@-ms-keyframes animateinput{ + from{ + opacity:0; + width:0; + } + to{ + opacity:1; + width:80%; + } +} + +.clarico_hs6_toggle +{ + display:none; + +} +.hs_6_search_res +{ + display:none; +} +.static_menus_main +{ + display:inline-block; + +} + + + + +@media (max-width:1200px) +{ + .container > .navbar-header { + width: 100%; + } + .navbar .navbar-header .navbar-brand img { + + max-height: 65px !important; + } + .navbar-toggle { + float:right; + margin: 20px 0 0 0; + } + + .navbar .navbar-top-collapse + { + display:block !important; + } + .navbar-nav .open .dropdown-menu { + position: static; + float: none; + width: auto; + margin-top: 0; + background-color: transparent; + border: 0; + box-shadow: none; + } + .navbar-static-top + { + .mt(5px); + } + .navbar .navbar-top-collapse + { + width:100%; + } +} +@media (max-width:1100px) +{ + .header_main_center,.main-header-right + { + width: 100%; + text-align: center; + } + .company-phone-div { + float: none; + vertical-align: top; + } + .search_menu_div + { + float: none; + width: 300px; + margin: 0px auto; + } +} + +@media (max-width:800px) +{ + .clarico_hs6_toggle + { + display:inline-block; + float:right; + margin-left: 15px; + + .navbar-toggle + { + border: 1px solid #fff; + margin-top: 10px; + border-radius: unset; + padding: 5px; + + .icon-bar { + background: #fff; + height:1px; + } + } + } + .hs_6_search_res + { + display: inline-block; + float: right; + margin: 10px 0; + } + .header_main_center + { + display:none; + } + .main-header-right + { + width:100% !important; + text-align:right; + float: right; + } + .search_menu + { + display:none; + } + .static_menu_ind + { + display: block; + text-align: right; + line-height: 200%; + border:none; + } + .company-phone-div + { + float: right; + } + .static_menus_main + { + display:inline-block; + width:100%; + } +} +@media (max-width:500px) +{ + .header_style_share + { + display:none; + } + .company_call_us + { + border:none; + } + .js_searchBox .header_right_search_icon_link + { + vertical-align: middle; + } + .main-header-right + { + width:auto !important; + float:left; + + .company_language + { + border:none; + } + } + .navbar .navbar-header .navbar-brand img { + max-height: 50px !important; + } +} + + + diff --git a/ext/3rd-party-addons/customize_theme/static/src/less/main_color.less b/ext/3rd-party-addons/customize_theme/static/src/less/main_color.less new file mode 100755 index 00000000..e70cd6c9 --- /dev/null +++ b/ext/3rd-party-addons/customize_theme/static/src/less/main_color.less @@ -0,0 +1 @@ +@theme-color:#000000; diff --git a/ext/3rd-party-addons/customize_theme/static/src/less/main_color1.less b/ext/3rd-party-addons/customize_theme/static/src/less/main_color1.less new file mode 100755 index 00000000..bd4d0a97 --- /dev/null +++ b/ext/3rd-party-addons/customize_theme/static/src/less/main_color1.less @@ -0,0 +1 @@ +@theme-color: #398439; \ No newline at end of file diff --git a/ext/3rd-party-addons/customize_theme/static/src/less/main_color10.less b/ext/3rd-party-addons/customize_theme/static/src/less/main_color10.less new file mode 100755 index 00000000..2754132c --- /dev/null +++ b/ext/3rd-party-addons/customize_theme/static/src/less/main_color10.less @@ -0,0 +1 @@ +@theme-color:#C1A38B; \ No newline at end of file diff --git a/ext/3rd-party-addons/customize_theme/static/src/less/main_color11.less b/ext/3rd-party-addons/customize_theme/static/src/less/main_color11.less new file mode 100755 index 00000000..4720d5a4 --- /dev/null +++ b/ext/3rd-party-addons/customize_theme/static/src/less/main_color11.less @@ -0,0 +1 @@ +@theme-color:#be4978; \ No newline at end of file diff --git a/ext/3rd-party-addons/customize_theme/static/src/less/main_color2.less b/ext/3rd-party-addons/customize_theme/static/src/less/main_color2.less new file mode 100755 index 00000000..0b67df82 --- /dev/null +++ b/ext/3rd-party-addons/customize_theme/static/src/less/main_color2.less @@ -0,0 +1 @@ +@theme-color: #2e6da4; \ No newline at end of file diff --git a/ext/3rd-party-addons/customize_theme/static/src/less/main_color3.less b/ext/3rd-party-addons/customize_theme/static/src/less/main_color3.less new file mode 100755 index 00000000..0f40dd8d --- /dev/null +++ b/ext/3rd-party-addons/customize_theme/static/src/less/main_color3.less @@ -0,0 +1 @@ +@theme-color: #46b8da; \ No newline at end of file diff --git a/ext/3rd-party-addons/customize_theme/static/src/less/main_color4.less b/ext/3rd-party-addons/customize_theme/static/src/less/main_color4.less new file mode 100755 index 00000000..9dd939e0 --- /dev/null +++ b/ext/3rd-party-addons/customize_theme/static/src/less/main_color4.less @@ -0,0 +1 @@ +@theme-color: #cccccc; \ No newline at end of file diff --git a/ext/3rd-party-addons/customize_theme/static/src/less/main_color5.less b/ext/3rd-party-addons/customize_theme/static/src/less/main_color5.less new file mode 100755 index 00000000..3cd1b7de --- /dev/null +++ b/ext/3rd-party-addons/customize_theme/static/src/less/main_color5.less @@ -0,0 +1 @@ +@theme-color: #eea236; \ No newline at end of file diff --git a/ext/3rd-party-addons/customize_theme/static/src/less/main_color6.less b/ext/3rd-party-addons/customize_theme/static/src/less/main_color6.less new file mode 100755 index 00000000..fcb34b68 --- /dev/null +++ b/ext/3rd-party-addons/customize_theme/static/src/less/main_color6.less @@ -0,0 +1 @@ +@theme-color: #424378; diff --git a/ext/3rd-party-addons/customize_theme/static/src/less/main_color7.less b/ext/3rd-party-addons/customize_theme/static/src/less/main_color7.less new file mode 100755 index 00000000..1535c016 --- /dev/null +++ b/ext/3rd-party-addons/customize_theme/static/src/less/main_color7.less @@ -0,0 +1 @@ +@theme-color: #83BB2B; \ No newline at end of file diff --git a/ext/3rd-party-addons/customize_theme/static/src/less/main_color8.less b/ext/3rd-party-addons/customize_theme/static/src/less/main_color8.less new file mode 100755 index 00000000..4da87662 --- /dev/null +++ b/ext/3rd-party-addons/customize_theme/static/src/less/main_color8.less @@ -0,0 +1 @@ +@theme-color:#1FC0A0; \ No newline at end of file diff --git a/ext/3rd-party-addons/customize_theme/static/src/less/main_color9.less b/ext/3rd-party-addons/customize_theme/static/src/less/main_color9.less new file mode 100755 index 00000000..697c084c --- /dev/null +++ b/ext/3rd-party-addons/customize_theme/static/src/less/main_color9.less @@ -0,0 +1 @@ +@theme-color:#F2776C; \ No newline at end of file diff --git a/ext/3rd-party-addons/customize_theme/templates/assets.xml b/ext/3rd-party-addons/customize_theme/templates/assets.xml new file mode 100755 index 00000000..a4434a77 --- /dev/null +++ b/ext/3rd-party-addons/customize_theme/templates/assets.xml @@ -0,0 +1,26 @@ + + + + + + + diff --git a/ext/3rd-party-addons/customize_theme/templates/templates.xml b/ext/3rd-party-addons/customize_theme/templates/templates.xml new file mode 100755 index 00000000..92034dd7 --- /dev/null +++ b/ext/3rd-party-addons/customize_theme/templates/templates.xml @@ -0,0 +1,1975 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ext/3rd-party-addons/snippet_style_1/__init__.py b/ext/3rd-party-addons/snippet_style_1/__init__.py new file mode 100755 index 00000000..e69de29b diff --git a/ext/3rd-party-addons/snippet_style_1/__manifest__.py b/ext/3rd-party-addons/snippet_style_1/__manifest__.py new file mode 100755 index 00000000..2e774696 --- /dev/null +++ b/ext/3rd-party-addons/snippet_style_1/__manifest__.py @@ -0,0 +1,26 @@ +{ + # Theme information + 'name' : 'Snippet Style 1', + 'category' : 'Website', + 'version' : '1.0', + 'summary': 'CMS Building Blocks', + 'description': """""", + + # Dependencies + 'depends': [ + 'clarico_snippets' + ], + + # Views + 'data': [ + 'templates/style_1.xml', + 'templates/assets.xml', + ], + + # Author + 'author': 'Emipro Technologies Pvt. Ltd.', + 'website': 'http://www.emiprotechnologies.com', + + # Technical + 'installable': True, +} diff --git a/ext/3rd-party-addons/snippet_style_1/static/description/icon.png b/ext/3rd-party-addons/snippet_style_1/static/description/icon.png new file mode 100755 index 00000000..bfafc926 Binary files /dev/null and b/ext/3rd-party-addons/snippet_style_1/static/description/icon.png differ diff --git a/ext/3rd-party-addons/snippet_style_1/static/src/img/style1.jpg b/ext/3rd-party-addons/snippet_style_1/static/src/img/style1.jpg new file mode 100755 index 00000000..e5628ebe Binary files /dev/null and b/ext/3rd-party-addons/snippet_style_1/static/src/img/style1.jpg differ diff --git a/ext/3rd-party-addons/snippet_style_1/static/src/less/style_1.less b/ext/3rd-party-addons/snippet_style_1/static/src/less/style_1.less new file mode 100755 index 00000000..5cbe41f3 --- /dev/null +++ b/ext/3rd-party-addons/snippet_style_1/static/src/less/style_1.less @@ -0,0 +1,30 @@ +@media (max-width: 800px) { + + .ch_h1_class + { + font-size: 25px !important; + } + } + +@media (max-width: 600px) { + .ch_h1_class { + .size(20px) !important; + } +} +.ch_h1_class +{ + .size(30px); + color: #252525; + text-transform: uppercase; + letter-spacing: 0.1em; + .mb(2%); + .oswald-light(); + word-spacing: 1px; + line-height: 169%; +} +.common_margin +{ + display:inline-block; + width:100%; + .mt(40px); +} diff --git a/ext/3rd-party-addons/snippet_style_1/templates/assets.xml b/ext/3rd-party-addons/snippet_style_1/templates/assets.xml new file mode 100755 index 00000000..f06e7d91 --- /dev/null +++ b/ext/3rd-party-addons/snippet_style_1/templates/assets.xml @@ -0,0 +1,9 @@ + + + + \ No newline at end of file diff --git a/ext/3rd-party-addons/snippet_style_1/templates/style_1.xml b/ext/3rd-party-addons/snippet_style_1/templates/style_1.xml new file mode 100755 index 00000000..94e9ece6 --- /dev/null +++ b/ext/3rd-party-addons/snippet_style_1/templates/style_1.xml @@ -0,0 +1,20 @@ + + + + + diff --git a/ext/3rd-party-addons/snippet_style_10/__init__.py b/ext/3rd-party-addons/snippet_style_10/__init__.py new file mode 100755 index 00000000..e69de29b diff --git a/ext/3rd-party-addons/snippet_style_10/__manifest__.py b/ext/3rd-party-addons/snippet_style_10/__manifest__.py new file mode 100755 index 00000000..faaa320c --- /dev/null +++ b/ext/3rd-party-addons/snippet_style_10/__manifest__.py @@ -0,0 +1,26 @@ +{ + # Theme information + 'name' : 'Snippet Style 10', + 'category' : 'Website', + 'version' : '1.0', + 'summary': 'CMS Building Blocks', + 'description': """""", + + # Dependencies + 'depends': [ + 'clarico_snippets' + ], + + # Views + 'data': [ + 'templates/style_10.xml', + 'templates/assets.xml', + ], + + # Author + 'author': 'Emipro Technologies Pvt. Ltd.', + 'website': 'http://www.emiprotechnologies.com', + + # Technical + 'installable': True, +} diff --git a/ext/3rd-party-addons/snippet_style_10/static/description/icon.png b/ext/3rd-party-addons/snippet_style_10/static/description/icon.png new file mode 100755 index 00000000..bfafc926 Binary files /dev/null and b/ext/3rd-party-addons/snippet_style_10/static/description/icon.png differ diff --git a/ext/3rd-party-addons/snippet_style_10/static/src/img/style_10.jpg b/ext/3rd-party-addons/snippet_style_10/static/src/img/style_10.jpg new file mode 100755 index 00000000..8c662cdc Binary files /dev/null and b/ext/3rd-party-addons/snippet_style_10/static/src/img/style_10.jpg differ diff --git a/ext/3rd-party-addons/snippet_style_10/static/src/img/style_10_img_1.jpeg b/ext/3rd-party-addons/snippet_style_10/static/src/img/style_10_img_1.jpeg new file mode 100755 index 00000000..844403b7 Binary files /dev/null and b/ext/3rd-party-addons/snippet_style_10/static/src/img/style_10_img_1.jpeg differ diff --git a/ext/3rd-party-addons/snippet_style_10/static/src/img/style_10_img_2.jpeg b/ext/3rd-party-addons/snippet_style_10/static/src/img/style_10_img_2.jpeg new file mode 100755 index 00000000..24583ebc Binary files /dev/null and b/ext/3rd-party-addons/snippet_style_10/static/src/img/style_10_img_2.jpeg differ diff --git a/ext/3rd-party-addons/snippet_style_10/static/src/img/style_10_img_3.jpeg b/ext/3rd-party-addons/snippet_style_10/static/src/img/style_10_img_3.jpeg new file mode 100755 index 00000000..a14649d3 Binary files /dev/null and b/ext/3rd-party-addons/snippet_style_10/static/src/img/style_10_img_3.jpeg differ diff --git a/ext/3rd-party-addons/snippet_style_10/static/src/img/style_10_img_4.jpeg b/ext/3rd-party-addons/snippet_style_10/static/src/img/style_10_img_4.jpeg new file mode 100755 index 00000000..618c0f3d Binary files /dev/null and b/ext/3rd-party-addons/snippet_style_10/static/src/img/style_10_img_4.jpeg differ diff --git a/ext/3rd-party-addons/snippet_style_10/static/src/img/style_10_img_5.jpeg b/ext/3rd-party-addons/snippet_style_10/static/src/img/style_10_img_5.jpeg new file mode 100755 index 00000000..6bea0966 Binary files /dev/null and b/ext/3rd-party-addons/snippet_style_10/static/src/img/style_10_img_5.jpeg differ diff --git a/ext/3rd-party-addons/snippet_style_10/static/src/less/style_10.less b/ext/3rd-party-addons/snippet_style_10/static/src/less/style_10.less new file mode 100755 index 00000000..a706f81b --- /dev/null +++ b/ext/3rd-party-addons/snippet_style_10/static/src/less/style_10.less @@ -0,0 +1,156 @@ +/* offer new snippet */ + +.main_offer_banner_section +{ + display:inline-block; + width:100%; + + .homepage_offers_snippet_container + { + display:block; + width:90%; + max-width:1200px; + margin:0px auto; + } +} +.offer_images_first_div,.offer_images_second_div,.offer_images_third_div +{ + display:block; + width:32%; + .left; + .mr(10px); +} +.div_offer_img +{ + display:block; + width:100%; + + img + { + max-width:100%; + width:auto; + margin:0px auto; + display:block; + + &:hover + { + opacity: 0.7; + transition: all 1.5s ease; + } + } +} +.offer_detail_div +{ + max-height:270px; + display:block; + width:100%; + padding: 14px 30px 14px; + text-align: center; + .mb(10px); + + .offer_snippet_second_div_detail_heading + { + color: rgb(0, 0, 0); + .oswald-light(); + .oswald-light(); + .uppercase; + .size(25px); + font-size:25px; + letter-spacing: 2px; + .center; + word-spacing: 0; + width: 90%; + max-width: 1400px; + display: block; + margin: 0px auto; + .mb(25px); + } + + .second_div_detail_para + { + .size(15px); + color: #898383; + line-height: 180%; + .muli-light(); + .center; + .mb(27px); + max-height: 109px; + min-height: 109px; + display:block; + overflow:hidden; + } + .offer_detail_div_btn + { + display: inline-block; + .size(14px); + line-height: 46px; + height: 46px; + letter-spacing: 2px; + padding: 0 30px; + .center; + .uppercase; + background:@theme-color; + border-radius: 25px; + border: none; + color: #fff; + transition: all 300ms; + text-decoration: none; + .oswald-regular(); + cursor: pointer; + + &:hover + { + background: #333; + color:#fff; + transition: background-color linear 0.5s; + } + } + +} +.first_div_img_one_height +{ + max-height:500px; + margin-bottom:10px; +} +.first_div_img_two_height +{ + max-height:270px; +} +.second_div_img_height +{ + max-height:500px; +} +.third_div_img_one_height +{ + max-height:385px; + margin-bottom:10px; +} +.third_div_img_two_height +{ + max-height:385px; +} + + +@media (max-width: 800px) { + + .offer_images_first_div, .offer_images_second_div, .offer_images_third_div + { + + width: 100% !important; + float: none !important; + } + .offer_detail_div + { + .mb(10%) !important; + .mt(10%) !important; + } +} + + + + + + + + + diff --git a/ext/3rd-party-addons/snippet_style_10/templates/assets.xml b/ext/3rd-party-addons/snippet_style_10/templates/assets.xml new file mode 100755 index 00000000..0e17f388 --- /dev/null +++ b/ext/3rd-party-addons/snippet_style_10/templates/assets.xml @@ -0,0 +1,9 @@ + + + + \ No newline at end of file diff --git a/ext/3rd-party-addons/snippet_style_10/templates/style_10.xml b/ext/3rd-party-addons/snippet_style_10/templates/style_10.xml new file mode 100755 index 00000000..7cfc1464 --- /dev/null +++ b/ext/3rd-party-addons/snippet_style_10/templates/style_10.xml @@ -0,0 +1,66 @@ + + + + + + \ No newline at end of file diff --git a/ext/3rd-party-addons/snippet_style_11/__init__.py b/ext/3rd-party-addons/snippet_style_11/__init__.py new file mode 100755 index 00000000..e69de29b diff --git a/ext/3rd-party-addons/snippet_style_11/__manifest__.py b/ext/3rd-party-addons/snippet_style_11/__manifest__.py new file mode 100755 index 00000000..5a389bf1 --- /dev/null +++ b/ext/3rd-party-addons/snippet_style_11/__manifest__.py @@ -0,0 +1,26 @@ +{ + # Theme information + 'name' : 'Snippet Style 11', + 'category' : 'Website', + 'version' : '1.0', + 'summary': 'CMS Building Blocks', + 'description': """""", + + # Dependencies + 'depends': [ + 'clarico_snippets' + ], + + # Views + 'data': [ + 'templates/style_11.xml', + 'templates/assets.xml', + ], + + # Author + 'author': 'Emipro Technologies Pvt. Ltd.', + 'website': 'http://www.emiprotechnologies.com', + + # Technical + 'installable': True, +} diff --git a/ext/3rd-party-addons/snippet_style_11/static/description/icon.png b/ext/3rd-party-addons/snippet_style_11/static/description/icon.png new file mode 100755 index 00000000..bfafc926 Binary files /dev/null and b/ext/3rd-party-addons/snippet_style_11/static/description/icon.png differ diff --git a/ext/3rd-party-addons/snippet_style_11/static/src/img/.jpg.jpg b/ext/3rd-party-addons/snippet_style_11/static/src/img/.jpg.jpg new file mode 100755 index 00000000..b322fa3a Binary files /dev/null and b/ext/3rd-party-addons/snippet_style_11/static/src/img/.jpg.jpg differ diff --git a/ext/3rd-party-addons/snippet_style_11/static/src/img/style_11.jpg b/ext/3rd-party-addons/snippet_style_11/static/src/img/style_11.jpg new file mode 100755 index 00000000..7d210494 Binary files /dev/null and b/ext/3rd-party-addons/snippet_style_11/static/src/img/style_11.jpg differ diff --git a/ext/3rd-party-addons/snippet_style_11/static/src/img/style_11_img_1.jpg b/ext/3rd-party-addons/snippet_style_11/static/src/img/style_11_img_1.jpg new file mode 100755 index 00000000..e7f2fee5 Binary files /dev/null and b/ext/3rd-party-addons/snippet_style_11/static/src/img/style_11_img_1.jpg differ diff --git a/ext/3rd-party-addons/snippet_style_11/static/src/img/style_11_img_2.jpg b/ext/3rd-party-addons/snippet_style_11/static/src/img/style_11_img_2.jpg new file mode 100755 index 00000000..d62e3872 Binary files /dev/null and b/ext/3rd-party-addons/snippet_style_11/static/src/img/style_11_img_2.jpg differ diff --git a/ext/3rd-party-addons/snippet_style_11/static/src/img/style_11_img_3.jpg b/ext/3rd-party-addons/snippet_style_11/static/src/img/style_11_img_3.jpg new file mode 100755 index 00000000..a23d5579 Binary files /dev/null and b/ext/3rd-party-addons/snippet_style_11/static/src/img/style_11_img_3.jpg differ diff --git a/ext/3rd-party-addons/snippet_style_11/static/src/img/style_11_img_4.jpg b/ext/3rd-party-addons/snippet_style_11/static/src/img/style_11_img_4.jpg new file mode 100755 index 00000000..1b03047a Binary files /dev/null and b/ext/3rd-party-addons/snippet_style_11/static/src/img/style_11_img_4.jpg differ diff --git a/ext/3rd-party-addons/snippet_style_11/static/src/less/style_11.less b/ext/3rd-party-addons/snippet_style_11/static/src/less/style_11.less new file mode 100755 index 00000000..98504c0a --- /dev/null +++ b/ext/3rd-party-addons/snippet_style_11/static/src/less/style_11.less @@ -0,0 +1,94 @@ +/*exclusive offers */ +@media (max-width: 800px) { + + .second_middle_offer_banner_section + { + width: 100%; + } + } +@media (max-width: 600px) { + .second_middle_offer_banner_section { + width: 100% !important; + } +} + +.section_class_heading_class + { + width: 100%; + display: inline-block; + .pb(5%); + .pt(3%); + + h1 + { + color: rgb(0, 0, 0); + .oswald-light(); + text-transform: uppercase; + .size(30px); + letter-spacing: 2px; + text-align: center; + word-spacing: 0; + width: 90%; + max-width: 1400px; + display: block; + margin: 0px auto; + } +} + +.main_offer_banner_section { + width: 100%; + display: inline-block; +} + +.sub_offers_section_banner_section_class { + display: block; + margin: 0 auto; + max-width: 1300px; + width: 90%; +} +.mian_banner_images_class_section { + width: 100%; + display: inline-block; +} + +.second_middle_offer_banner_section { + display: inline-block; + float: left; + width: 49%; + margin: 0.4%; +} +/*.main_class_div_second_banner,.image_class_offer_main_image,.div_class_image_second_image_banner, + { + height: 100%; + cursor: pointer; +} */ +.div_class_image_second_image_banner { + transition: all 1.5s ease; + opacity: 1; +} +.div_class_image_margin_luceat_offer_banner { + margin-bottom: 1.7%; +} +.ind_height_first_block { + max-height: 215px; +} +.ind_height_second_block { + max-height: 602px; +} +.ind_height_third_block { + max-height: 602px; +} +.image_class_offer_main_image { + width: auto; + max-width: 100%; + display: block; + margin: 0px auto; +} +.ind_height_fourth_block { + max-height: 215px; +} +.div_class_image_second_image_banner:hover img { + opacity: 0.7; + transition: all 1.5s ease; +} + diff --git a/ext/3rd-party-addons/snippet_style_11/templates/assets.xml b/ext/3rd-party-addons/snippet_style_11/templates/assets.xml new file mode 100755 index 00000000..5db27eb1 --- /dev/null +++ b/ext/3rd-party-addons/snippet_style_11/templates/assets.xml @@ -0,0 +1,9 @@ + + + + \ No newline at end of file diff --git a/ext/3rd-party-addons/snippet_style_11/templates/style_11.xml b/ext/3rd-party-addons/snippet_style_11/templates/style_11.xml new file mode 100755 index 00000000..1e53bb99 --- /dev/null +++ b/ext/3rd-party-addons/snippet_style_11/templates/style_11.xml @@ -0,0 +1,65 @@ + + + + + + \ No newline at end of file diff --git a/ext/3rd-party-addons/snippet_style_12/__init__.py b/ext/3rd-party-addons/snippet_style_12/__init__.py new file mode 100755 index 00000000..e69de29b diff --git a/ext/3rd-party-addons/snippet_style_12/__manifest__.py b/ext/3rd-party-addons/snippet_style_12/__manifest__.py new file mode 100755 index 00000000..9d33185f --- /dev/null +++ b/ext/3rd-party-addons/snippet_style_12/__manifest__.py @@ -0,0 +1,25 @@ +{ + # Theme information + 'name' : 'Snippet Style 12', + 'category' : 'Website', + 'version' : '1.0', + 'summary': 'CMS Building Blocks', + 'description': """""", + + # Dependencies + 'depends': [ + 'clarico_snippets' + ], + + # Views + 'data': [ + 'templates/blank_space.xml', + ], + + # Author + 'author': 'Emipro Technologies Pvt. Ltd.', + 'website': 'http://www.emiprotechnologies.com', + + # Technical + 'installable': True, +} diff --git a/ext/3rd-party-addons/snippet_style_12/static/description/icon.png b/ext/3rd-party-addons/snippet_style_12/static/description/icon.png new file mode 100755 index 00000000..bfafc926 Binary files /dev/null and b/ext/3rd-party-addons/snippet_style_12/static/description/icon.png differ diff --git a/ext/3rd-party-addons/snippet_style_12/static/src/img/style12.jpeg b/ext/3rd-party-addons/snippet_style_12/static/src/img/style12.jpeg new file mode 100755 index 00000000..1c56db1c Binary files /dev/null and b/ext/3rd-party-addons/snippet_style_12/static/src/img/style12.jpeg differ diff --git a/ext/3rd-party-addons/snippet_style_12/static/src/img/style12.jpg b/ext/3rd-party-addons/snippet_style_12/static/src/img/style12.jpg new file mode 100755 index 00000000..e689fa28 Binary files /dev/null and b/ext/3rd-party-addons/snippet_style_12/static/src/img/style12.jpg differ diff --git a/ext/3rd-party-addons/snippet_style_12/templates/blank_space.xml b/ext/3rd-party-addons/snippet_style_12/templates/blank_space.xml new file mode 100755 index 00000000..73c8daf3 --- /dev/null +++ b/ext/3rd-party-addons/snippet_style_12/templates/blank_space.xml @@ -0,0 +1,20 @@ + + + + + + + + diff --git a/ext/3rd-party-addons/snippet_style_13/__init__.py b/ext/3rd-party-addons/snippet_style_13/__init__.py new file mode 100755 index 00000000..e69de29b diff --git a/ext/3rd-party-addons/snippet_style_13/__manifest__.py b/ext/3rd-party-addons/snippet_style_13/__manifest__.py new file mode 100755 index 00000000..d7bef359 --- /dev/null +++ b/ext/3rd-party-addons/snippet_style_13/__manifest__.py @@ -0,0 +1,26 @@ +{ + # Theme information + 'name' : 'Snippet Style 13', + 'category' : 'Website', + 'version' : '1.0', + 'summary': 'CMS Building Blocks', + 'description': """""", + + # Dependencies + 'depends': [ + 'clarico_snippets' + ], + + # Views + 'data': [ + 'templates/snippet_13.xml', + 'templates/assets.xml', + ], + + # Author + 'author': 'Emipro Technologies Pvt. Ltd.', + 'website': 'http://www.emiprotechnologies.com', + + # Technical + 'installable': True, +} diff --git a/ext/3rd-party-addons/snippet_style_13/static/description/icon.png b/ext/3rd-party-addons/snippet_style_13/static/description/icon.png new file mode 100755 index 00000000..bfafc926 Binary files /dev/null and b/ext/3rd-party-addons/snippet_style_13/static/description/icon.png differ diff --git a/ext/3rd-party-addons/snippet_style_13/static/src/img/style13_img1.svg b/ext/3rd-party-addons/snippet_style_13/static/src/img/style13_img1.svg new file mode 100755 index 00000000..c3d5b6fe --- /dev/null +++ b/ext/3rd-party-addons/snippet_style_13/static/src/img/style13_img1.svg @@ -0,0 +1,11 @@ + + + + + + + diff --git a/ext/3rd-party-addons/snippet_style_13/static/src/img/style13_img2.svg b/ext/3rd-party-addons/snippet_style_13/static/src/img/style13_img2.svg new file mode 100755 index 00000000..655681cc --- /dev/null +++ b/ext/3rd-party-addons/snippet_style_13/static/src/img/style13_img2.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + diff --git a/ext/3rd-party-addons/snippet_style_13/static/src/img/style13_img3.svg b/ext/3rd-party-addons/snippet_style_13/static/src/img/style13_img3.svg new file mode 100755 index 00000000..b2b6b890 --- /dev/null +++ b/ext/3rd-party-addons/snippet_style_13/static/src/img/style13_img3.svg @@ -0,0 +1,11 @@ + + + + + + + diff --git a/ext/3rd-party-addons/snippet_style_13/static/src/img/style_13.jpg b/ext/3rd-party-addons/snippet_style_13/static/src/img/style_13.jpg new file mode 100755 index 00000000..7442e0a0 Binary files /dev/null and b/ext/3rd-party-addons/snippet_style_13/static/src/img/style_13.jpg differ diff --git a/ext/3rd-party-addons/snippet_style_13/static/src/less/style_13.less b/ext/3rd-party-addons/snippet_style_13/static/src/less/style_13.less new file mode 100755 index 00000000..62ca181a --- /dev/null +++ b/ext/3rd-party-addons/snippet_style_13/static/src/less/style_13.less @@ -0,0 +1,92 @@ +.three_Column_snippet_wrap +{ + display:inline-block; + width:100%; + margin-top:5%; +} +.three_column_snippet_container +{ + display:block; + width:90%; + max-width:1400px; + margin:0px auto; +} +.tcs_column1,.tcs_column2,.tcs_column3 +{ + display:block; + width:33%; + float:left; + padding: 0 15px; + .mb(3%); +} +.tcs_icon_wrap,.tcs_bold_text_wrap,.tcs_normal_text_wrap +{ + display:inline-block; + width:100%; + text-align:center; +} +.tcs_bold +{ + margin-top:10px; + margin-bottom:5px; + cursor:pointer; + + a + { + font-family:@m-bold; + text-transform:uppercase; + font-size:16px; + color:#4c5462; + + + &:hover + { + color:@theme-color; + } + } +} +.tcs_normal_text_wrap +{ + text-transform: capitalize; + color: #8b93a1; + font-family:@m-semibold; + font-size:15px; +} + + + +/* -----Media Query---- */ + + +@media (max-width: 800px) { + + .tcs_icon_wrap + { + img + { + width:40px; + } + } + .tcs_bold + { + font-size:13px; + } + .tcs_normal_text_wrap + { + font-size:13px; + } +} +@media (max-width: 600px) { + +.tcs_column1,.tcs_column2,.tcs_column3 +{ + width:100%; + margin:10% 0; + +} +.tcs_normal_text_wrap + { + font-size:12px; + } +} + diff --git a/ext/3rd-party-addons/snippet_style_13/templates/assets.xml b/ext/3rd-party-addons/snippet_style_13/templates/assets.xml new file mode 100755 index 00000000..0054815c --- /dev/null +++ b/ext/3rd-party-addons/snippet_style_13/templates/assets.xml @@ -0,0 +1,9 @@ + + + + diff --git a/ext/3rd-party-addons/snippet_style_13/templates/snippet_13.xml b/ext/3rd-party-addons/snippet_style_13/templates/snippet_13.xml new file mode 100755 index 00000000..5f949936 --- /dev/null +++ b/ext/3rd-party-addons/snippet_style_13/templates/snippet_13.xml @@ -0,0 +1,54 @@ + + + + + + + diff --git a/ext/3rd-party-addons/snippet_style_14/__init__.py b/ext/3rd-party-addons/snippet_style_14/__init__.py new file mode 100755 index 00000000..e69de29b diff --git a/ext/3rd-party-addons/snippet_style_14/__manifest__.py b/ext/3rd-party-addons/snippet_style_14/__manifest__.py new file mode 100755 index 00000000..27594dd0 --- /dev/null +++ b/ext/3rd-party-addons/snippet_style_14/__manifest__.py @@ -0,0 +1,27 @@ +{ + # Theme information + 'name' : 'Snippet Style 14', + 'category' : 'Website', + 'version' : '1.0', + 'summary': 'CMS Building Blocks', + 'description': """""", + + # Dependencies + 'depends': [ + 'clarico_snippets' + ], + + # Views + 'data': [ + 'templates/style_1_template.xml', + 'templates/assets.xml', + ], + + # Author + 'author': 'Emipro Technologies Pvt. Ltd.', + 'website': 'http://www.emiprotechnologies.com', + + # Technical + 'installable': True, +} + diff --git a/ext/3rd-party-addons/snippet_style_14/static/description/icon.png b/ext/3rd-party-addons/snippet_style_14/static/description/icon.png new file mode 100755 index 00000000..bfafc926 Binary files /dev/null and b/ext/3rd-party-addons/snippet_style_14/static/description/icon.png differ diff --git a/ext/3rd-party-addons/snippet_style_14/static/src/img/3.jpg b/ext/3rd-party-addons/snippet_style_14/static/src/img/3.jpg new file mode 100755 index 00000000..f5285a82 Binary files /dev/null and b/ext/3rd-party-addons/snippet_style_14/static/src/img/3.jpg differ diff --git a/ext/3rd-party-addons/snippet_style_14/static/src/img/4.jpg b/ext/3rd-party-addons/snippet_style_14/static/src/img/4.jpg new file mode 100755 index 00000000..3e517720 Binary files /dev/null and b/ext/3rd-party-addons/snippet_style_14/static/src/img/4.jpg differ diff --git a/ext/3rd-party-addons/snippet_style_14/static/src/img/slider_1.png b/ext/3rd-party-addons/snippet_style_14/static/src/img/slider_1.png new file mode 100755 index 00000000..e5c15cf6 Binary files /dev/null and b/ext/3rd-party-addons/snippet_style_14/static/src/img/slider_1.png differ diff --git a/ext/3rd-party-addons/snippet_style_14/static/src/img/slider_2.png b/ext/3rd-party-addons/snippet_style_14/static/src/img/slider_2.png new file mode 100755 index 00000000..d7572e69 Binary files /dev/null and b/ext/3rd-party-addons/snippet_style_14/static/src/img/slider_2.png differ diff --git a/ext/3rd-party-addons/snippet_style_14/static/src/img/snippet_icon.jpg b/ext/3rd-party-addons/snippet_style_14/static/src/img/snippet_icon.jpg new file mode 100755 index 00000000..304f1cd1 Binary files /dev/null and b/ext/3rd-party-addons/snippet_style_14/static/src/img/snippet_icon.jpg differ diff --git a/ext/3rd-party-addons/snippet_style_14/static/src/js/style_1.js b/ext/3rd-party-addons/snippet_style_14/static/src/js/style_1.js new file mode 100755 index 00000000..aec804b6 --- /dev/null +++ b/ext/3rd-party-addons/snippet_style_14/static/src/js/style_1.js @@ -0,0 +1,151 @@ +odoo.define('style_1.cust_slider', function (require) { +'use strict'; + +var options = require('web_editor.snippets.options'); + +options.registry.style_1_carousel = options.Class.extend({ + + start: function () { + var self = this; + this.$target.carousel({interval: false}); + this.id = this.$target.attr('id'); + this.$inner = this.$target.find('.carousel-inner'); + this.$indicators = this.$target.find('.carousel-indicators'); + this.$target.carousel('pause'); + this._rebindEvents(); + + // var def = this._super.apply(this, arguments); + + // set background and prepare to clean for save + this.$target.on('slid.bs.carousel', function () { + self.$target.carousel('pause'); + self.trigger_up('option_update', { + optionNames: ['background', 'background_position', 'colorpicker'], + name: 'target', + data: self.$target.find('.item.active'), + }); + }); + this.$target.trigger('slid.bs.carousel'); + + // return def; + }, + +//Slider effects. + + fade: function(){ + this.$target.addClass('carousel_fade') + this._rebindEvents(); + }, + sliding:function(){ + this.$target.attr('class','carousel slide cust_carousel style_1_carousel') + }, + +//Associates unique ID on slider elements. + + onBuilt: function () { + + this.id = 'style_1_myCarousel' + new Date().getTime(); + this.$target.attr('id', this.id); + this.$target.find('[data-slide]').attr('data-cke-saved-href', '#' + this.id); + this.$target.find('[data-target]').attr('data-target', '#' + this.id); + this._rebindEvents(); + }, + +//Associates unique ID on cloned slider elements. + + onClone: function () { + var id = 'style_1_myCarousel' + new Date().getTime(); + this.$target.attr('id', id); + this.$target.find('[data-slide]').attr('href', '#' + id); + this.$target.find('[data-slide-to]').attr('data-target', '#' + id); + }, + + cleanForSave: function () { + // this._super.apply(this, arguments); + this.$target.find('.item').removeClass('next prev left right active') + .first().addClass('active'); + this.$target.find('.carousel-indicators').find('li').removeClass('active') + .first().addClass('active'); + this.$target.removeClass('oe_img_bg ' + this._class).css('background-image', ''); + }, + +//Adds a slide. + + addSlide: function (previewMode) { + + var self = this; + var cycle = this.$inner.find('.item').length; + var $active = this.$inner.find('.item.active, .item.prev, .item.next').first(); + var index = $active.index(); + this.$('.carousel-control, .carousel-indicators').removeClass('hidden'); + this.$indicators.append('
  • '); + + var $clone = this.$('.item:first').clone(true); + $clone.removeClass('active').insertAfter($active); + + _.defer(function () { + self.$target.carousel().carousel(++index); + self._rebindEvents(); + }); + + }, + +//Removes the current slide. + + removeSlide: function (previewMode) { + if (this.remove_process) { + return; + } + + var self = this; + + var $items = this.$inner.find('.item'); + var cycle = $items.length - 1; + var $active = $items.filter('.active'); + var index = $active.index(); + if (cycle > 0) { + this.remove_process = true; + this.$target.on('slid.bs.carousel.slide_removal', function (event) { + $active.remove(); + self.$indicators.find('li:last').remove(); + self.$target.off('slid.bs.carousel.slide_removal'); + self._rebindEvents(); + self.remove_process = false; + if (cycle === 1) { + self.$target.find('.carousel-control, .carousel-indicators').addClass('hidden'); + } + }); + _.defer(function () { + self.$target.carousel(index > 0 ? --index : cycle); + }); + } + }, + +//Changes the interval for autoplay. + + interval: function (previewMode, value) { + this.$target.attr('data-interval', value); + }, + + _setActive: function () { + this.$el.find('li[data-interval]').removeClass('active') + .filter('li[data-interval=' + this.$target.attr('data-interval') + ']').addClass('active'); + }, + +//Rebinds carousel events on indicators. + + _rebindEvents: function () { + var self = this; + this.$target.find('.carousel-control').off('click').on('click', function () { + self.$target.carousel($(this).data('slide')); + }); + this.$target.find('.carousel-indicators [data-slide-to]').off('click').on('click', function () { + self.$target.carousel(+$(this).data('slide-to')); + }); + + /* Fix: backward compatibility saas-3 */ + this.$target.find('.item.text_image, .item.image_text, .item.text_only').find('.container > .carousel-caption > div, .container > img.carousel-image').attr('contentEditable', 'true'); + + }, +}); +}); diff --git a/ext/3rd-party-addons/snippet_style_14/static/src/less/style_1.less b/ext/3rd-party-addons/snippet_style_14/static/src/less/style_1.less new file mode 100755 index 00000000..4de5c6d9 --- /dev/null +++ b/ext/3rd-party-addons/snippet_style_14/static/src/less/style_1.less @@ -0,0 +1,152 @@ +.slider_wrapper_div_left +{ + display:inline-block; + width:30%; + vertical-align:top; +} +.style_1_carousel +{ + display:inline-block; + width:69%; + .pt(2%); + + .carousel-indicators + { + display:none; + } +} +.slider_wrapper_div_right_new +{ + display:inline-block; + width:49%; +} + +.product_image_new +{ + width: auto; + max-width: 90%; + max-height: 500px; + display: block; + margin: 0px auto; +} + +.left_content_pera_new +{ + .size(15px); + color:#898383; + line-height: 180%; + .mb(10%); + .muli-light(); + text-align: left; +} +.slider_left_bg_content +{ + display: block; + width: 90%; + margin: 0px auto; + + .chs_heading + { + .mb(5%); + line-height: 160%; + } +} +.left_content { + display: inline-block; + .pt(5%); + + .chs_heading{ + text-align: left; + } + .clarico_new_btn,.chs_heading,.left_content_pera_new{ + text-align: left; + } +} + +.style_1_comman_class{ + .carousel-control.left,.carousel-control.right{ + background-image:none !important; + } +} +.div_img_new{ + background-size:cover; + display:block; + width:98%; + margin:0px auto; +} +//==>For_fadding_effect + +.carousel_fade { + .carousel-inner { + .item { + opacity:0; + transition: opacity 3s; + transition-timing-function: ease-out; + } + .item.active { + opacity:1; + transition: opacity 2s; + } + + .active.left, + .active.right { + left:0; + opacity:0; + z-index:1; + } + + .next.left, + .prev.right { + opacity:1; + } + } + + .carousel-control { + z-index:2; + } +} + + + +@media (max-width: 1000px) { + + .slider_wrapper_div_left + { + width: 100% !important; + + .left_content + { + text-align: center; + } + } + .slider_left_bg_content .chs_heading { + .mb(3%); + } + .left_content_pera_new + { + .mb(5%); + } + .style_1_carousel + { + width:100%; + .pt(5%); + } +} +@media (max-width: 600px) { + + .slider_wrapper_div_right + { + width: 100%; + } + .product_image_new + { + max-height: 250px; + } + .left_content_pera_new + { + .size(13px); + } + +} + + diff --git a/ext/3rd-party-addons/snippet_style_14/templates/assets.xml b/ext/3rd-party-addons/snippet_style_14/templates/assets.xml new file mode 100755 index 00000000..8a2237e3 --- /dev/null +++ b/ext/3rd-party-addons/snippet_style_14/templates/assets.xml @@ -0,0 +1,16 @@ + + + + + + + diff --git a/ext/3rd-party-addons/snippet_style_2/template/style_2.xml b/ext/3rd-party-addons/snippet_style_2/template/style_2.xml new file mode 100755 index 00000000..1eb290c6 --- /dev/null +++ b/ext/3rd-party-addons/snippet_style_2/template/style_2.xml @@ -0,0 +1,79 @@ + + + + + + + + + + + diff --git a/ext/3rd-party-addons/snippet_style_3/__init__.py b/ext/3rd-party-addons/snippet_style_3/__init__.py new file mode 100755 index 00000000..e69de29b diff --git a/ext/3rd-party-addons/snippet_style_3/__manifest__.py b/ext/3rd-party-addons/snippet_style_3/__manifest__.py new file mode 100755 index 00000000..db3118c9 --- /dev/null +++ b/ext/3rd-party-addons/snippet_style_3/__manifest__.py @@ -0,0 +1,26 @@ +{ + # Theme information + 'name' : 'Snippet Style 3', + 'category' : 'Website', + 'version' : '1.0', + 'summary': 'CMS Building Blocks', + 'description': """""", + + # Dependencies + 'depends': [ + 'clarico_snippets' + ], + + # Views + 'data': [ + 'templates/style_3.xml', + 'templates/assets.xml', + ], + + # Author + 'author': 'Emipro Technologies Pvt. Ltd.', + 'website': 'http://www.emiprotechnologies.com', + + # Technical + 'installable': True, +} diff --git a/ext/3rd-party-addons/snippet_style_3/static/description/icon.png b/ext/3rd-party-addons/snippet_style_3/static/description/icon.png new file mode 100755 index 00000000..bfafc926 Binary files /dev/null and b/ext/3rd-party-addons/snippet_style_3/static/description/icon.png differ diff --git a/ext/3rd-party-addons/snippet_style_3/static/src/img/style_3.jpg b/ext/3rd-party-addons/snippet_style_3/static/src/img/style_3.jpg new file mode 100755 index 00000000..6e222c2a Binary files /dev/null and b/ext/3rd-party-addons/snippet_style_3/static/src/img/style_3.jpg differ diff --git a/ext/3rd-party-addons/snippet_style_3/static/src/less/style_3.less b/ext/3rd-party-addons/snippet_style_3/static/src/less/style_3.less new file mode 100755 index 00000000..0c2533d3 --- /dev/null +++ b/ext/3rd-party-addons/snippet_style_3/static/src/less/style_3.less @@ -0,0 +1,7 @@ +.cc_content_class +{ + .size(15px); + line-height: 180%; + color: #898383; + .muli-light(); +} \ No newline at end of file diff --git a/ext/3rd-party-addons/snippet_style_3/templates/assets.xml b/ext/3rd-party-addons/snippet_style_3/templates/assets.xml new file mode 100755 index 00000000..13e40ecb --- /dev/null +++ b/ext/3rd-party-addons/snippet_style_3/templates/assets.xml @@ -0,0 +1,9 @@ + + + + diff --git a/ext/3rd-party-addons/snippet_style_3/templates/style_3.xml b/ext/3rd-party-addons/snippet_style_3/templates/style_3.xml new file mode 100755 index 00000000..92e06241 --- /dev/null +++ b/ext/3rd-party-addons/snippet_style_3/templates/style_3.xml @@ -0,0 +1,17 @@ + + + + + \ No newline at end of file diff --git a/ext/3rd-party-addons/snippet_style_4/__init__.py b/ext/3rd-party-addons/snippet_style_4/__init__.py new file mode 100755 index 00000000..e69de29b diff --git a/ext/3rd-party-addons/snippet_style_4/__manifest__.py b/ext/3rd-party-addons/snippet_style_4/__manifest__.py new file mode 100755 index 00000000..c67d8074 --- /dev/null +++ b/ext/3rd-party-addons/snippet_style_4/__manifest__.py @@ -0,0 +1,27 @@ +{ + # Theme information + 'name' : 'Snippet Style 4', + 'category' : 'Website', + 'version' : '1.0', + 'summary': 'CMS Building Blocks', + 'description': """""", + + # Dependencies + 'depends': [ + 'clarico_snippets' + ], + + # Views + 'data': [ + 'templates/style_4.xml', + 'templates/assets.xml', + ], + + # Author + 'author': 'Emipro Technologies Pvt. Ltd.', + 'website': 'http://www.emiprotechnologies.com', + + # Technical + 'installable': True, +} + diff --git a/ext/3rd-party-addons/snippet_style_4/static/description/icon.png b/ext/3rd-party-addons/snippet_style_4/static/description/icon.png new file mode 100755 index 00000000..bfafc926 Binary files /dev/null and b/ext/3rd-party-addons/snippet_style_4/static/description/icon.png differ diff --git a/ext/3rd-party-addons/snippet_style_4/static/src/img/style_4.jpg b/ext/3rd-party-addons/snippet_style_4/static/src/img/style_4.jpg new file mode 100755 index 00000000..1c1844e9 Binary files /dev/null and b/ext/3rd-party-addons/snippet_style_4/static/src/img/style_4.jpg differ diff --git a/ext/3rd-party-addons/snippet_style_4/static/src/img/style_4_img_1.jpeg b/ext/3rd-party-addons/snippet_style_4/static/src/img/style_4_img_1.jpeg new file mode 100755 index 00000000..769fac6a Binary files /dev/null and b/ext/3rd-party-addons/snippet_style_4/static/src/img/style_4_img_1.jpeg differ diff --git a/ext/3rd-party-addons/snippet_style_4/static/src/less/style_4.less b/ext/3rd-party-addons/snippet_style_4/static/src/less/style_4.less new file mode 100755 index 00000000..2503d33a --- /dev/null +++ b/ext/3rd-party-addons/snippet_style_4/static/src/less/style_4.less @@ -0,0 +1,30 @@ +/*home big image only */ + +.home_big_image_container +{ + display:inline-block; + width:100%; + + + .home_big_image + { + display:block; + width:90%; + margin:0px auto; + + img + { + max-width:100%; + display:block; + margin:0px auto; + } + } +} + +@media (max-width: 400px) { + + .home_big_image_container + { + .mt(5%); + } +} \ No newline at end of file diff --git a/ext/3rd-party-addons/snippet_style_4/templates/assets.xml b/ext/3rd-party-addons/snippet_style_4/templates/assets.xml new file mode 100755 index 00000000..0737c605 --- /dev/null +++ b/ext/3rd-party-addons/snippet_style_4/templates/assets.xml @@ -0,0 +1,9 @@ + + + + \ No newline at end of file diff --git a/ext/3rd-party-addons/snippet_style_4/templates/style_4.xml b/ext/3rd-party-addons/snippet_style_4/templates/style_4.xml new file mode 100755 index 00000000..3b18fbdf --- /dev/null +++ b/ext/3rd-party-addons/snippet_style_4/templates/style_4.xml @@ -0,0 +1,25 @@ + + + + + + + \ No newline at end of file diff --git a/ext/3rd-party-addons/snippet_style_5/__init__.py b/ext/3rd-party-addons/snippet_style_5/__init__.py new file mode 100755 index 00000000..e69de29b diff --git a/ext/3rd-party-addons/snippet_style_5/__manifest__.py b/ext/3rd-party-addons/snippet_style_5/__manifest__.py new file mode 100755 index 00000000..f96a5661 --- /dev/null +++ b/ext/3rd-party-addons/snippet_style_5/__manifest__.py @@ -0,0 +1,26 @@ +{ + # Theme information + 'name' : 'Snippet Style 5', + 'category' : 'Website', + 'version' : '1.0', + 'summary': 'CMS Building Blocks', + 'description': """""", + + # Dependencies + 'depends': [ + 'clarico_snippets' + ], + + # Views + 'data': [ + 'templates/style_5.xml', + 'templates/assets.xml', + ], + + # Author + 'author': 'Emipro Technologies Pvt. Ltd.', + 'website': 'http://www.emiprotechnologies.com', + + # Technical + 'installable': True, +} diff --git a/ext/3rd-party-addons/snippet_style_5/static/description/icon.png b/ext/3rd-party-addons/snippet_style_5/static/description/icon.png new file mode 100755 index 00000000..bfafc926 Binary files /dev/null and b/ext/3rd-party-addons/snippet_style_5/static/description/icon.png differ diff --git a/ext/3rd-party-addons/snippet_style_5/static/src/img/style_5.jpg b/ext/3rd-party-addons/snippet_style_5/static/src/img/style_5.jpg new file mode 100755 index 00000000..49621853 Binary files /dev/null and b/ext/3rd-party-addons/snippet_style_5/static/src/img/style_5.jpg differ diff --git a/ext/3rd-party-addons/snippet_style_5/static/src/img/style_5_img_1.jpeg b/ext/3rd-party-addons/snippet_style_5/static/src/img/style_5_img_1.jpeg new file mode 100755 index 00000000..915caf62 Binary files /dev/null and b/ext/3rd-party-addons/snippet_style_5/static/src/img/style_5_img_1.jpeg differ diff --git a/ext/3rd-party-addons/snippet_style_5/static/src/img/style_5_img_2.jpeg b/ext/3rd-party-addons/snippet_style_5/static/src/img/style_5_img_2.jpeg new file mode 100755 index 00000000..53f7bb34 Binary files /dev/null and b/ext/3rd-party-addons/snippet_style_5/static/src/img/style_5_img_2.jpeg differ diff --git a/ext/3rd-party-addons/snippet_style_5/static/src/less/style_5.less b/ext/3rd-party-addons/snippet_style_5/static/src/less/style_5.less new file mode 100755 index 00000000..bf140a01 --- /dev/null +++ b/ext/3rd-party-addons/snippet_style_5/static/src/less/style_5.less @@ -0,0 +1,162 @@ +/*products with section */ + +.products_with_section_div +{ + display:inline-block; + width:100%; + + + .products_with_section_sub_div + { + display:block; + width:90%; + margin:0px auto; + max-width:1400px; + + .home_three_products + { + display:block; + width:60%; + .left; + + .product_main_div + { + width:40%; + display:block; + .left; + margin:1%; + + .product_img_div + { + width:100%; + + img + { + max-width:100%; + display:block; + margin:0px auto; + max-height:350px; + } + } + } + } +} + .static_home_section + { + display:block; + width:40%; + .right; + + .small_heading_text + { + text-transform:uppercase; + color:#222; + .size(14px); + } + .static_section_heading + { + color:#222; + .size(30px); + line-height: 170%; + .mb(30px); + .muli-regular; + } + } +} + +.product_detail_div +{ + .mt(14px); + + .product_name + { + text-align:center; + color: #444 !important; + .size(14px); + + &:hover + { + color:@theme-color; + } + } + .product_add_cart_link + { + .center; + .muli-bold; + .uppercase; + .mt(15px); + color: @theme-color; + .size(13px); + .pb(8px); + display:block; + + &:hover + { + i { + transform: translateX(5px); + transition-delay: 0.2s; + transition-timing-function: ease-in; + } + + color:#717171; + transition: color linear 0.5s + } + } +} +#arrow_ri8 +{ + .pl(10px); +} + +.desc_para { + .size(15px); + color: #898383; + line-height: 180%; + .mb(60px); + .muli-light(); +} +.content_title +{ + .size(35px); + color: #252525; + .uppercase; + letter-spacing: 0.1em; + .mb(5%); + .oswald-light(); +} + + +@media (max-width: 600px) { + + .shop_now_button + { + .size(12px); + line-height: 38px; + height: 38px; + padding: 0 25px; + } + + .product_detail_div + { + .product_name + { + .size(12px) !important; + } + .product_add_cart_link + { + .size(11px) !important; + } + } + .static_home_section { + width: 95% !important; + .mt(5%) !important; + } + .home_three_products + { + width: 100% !important; + + .product_main_div { + width: 48% !important; + } + } +} diff --git a/ext/3rd-party-addons/snippet_style_5/templates/assets.xml b/ext/3rd-party-addons/snippet_style_5/templates/assets.xml new file mode 100755 index 00000000..90cd64a6 --- /dev/null +++ b/ext/3rd-party-addons/snippet_style_5/templates/assets.xml @@ -0,0 +1,9 @@ + + + + \ No newline at end of file diff --git a/ext/3rd-party-addons/snippet_style_5/templates/style_5.xml b/ext/3rd-party-addons/snippet_style_5/templates/style_5.xml new file mode 100755 index 00000000..992bfb07 --- /dev/null +++ b/ext/3rd-party-addons/snippet_style_5/templates/style_5.xml @@ -0,0 +1,74 @@ + + + + + + \ No newline at end of file diff --git a/ext/3rd-party-addons/snippet_style_6/__init__.py b/ext/3rd-party-addons/snippet_style_6/__init__.py new file mode 100755 index 00000000..e69de29b diff --git a/ext/3rd-party-addons/snippet_style_6/__manifest__.py b/ext/3rd-party-addons/snippet_style_6/__manifest__.py new file mode 100755 index 00000000..2b754ab8 --- /dev/null +++ b/ext/3rd-party-addons/snippet_style_6/__manifest__.py @@ -0,0 +1,27 @@ +{ + # Theme information + 'name' : 'Snippet Style 6', + 'category' : 'Website', + 'version' : '1.0', + 'summary': 'CMS Building Blocks', + 'description': """""", + + # Dependencies + 'depends': [ + 'clarico_snippets' + ], + + # Views + 'data': [ + 'templates/style_6.xml', + 'templates/assets.xml', + ], + + # Author + 'author': 'Emipro Technologies Pvt. Ltd.', + 'website': 'http://www.emiprotechnologies.com', + + # Technical + 'installable': True, +} + diff --git a/ext/3rd-party-addons/snippet_style_6/static/description/icon.png b/ext/3rd-party-addons/snippet_style_6/static/description/icon.png new file mode 100755 index 00000000..bfafc926 Binary files /dev/null and b/ext/3rd-party-addons/snippet_style_6/static/description/icon.png differ diff --git a/ext/3rd-party-addons/snippet_style_6/static/src/img/style6.jpg b/ext/3rd-party-addons/snippet_style_6/static/src/img/style6.jpg new file mode 100755 index 00000000..95998c0e Binary files /dev/null and b/ext/3rd-party-addons/snippet_style_6/static/src/img/style6.jpg differ diff --git a/ext/3rd-party-addons/snippet_style_6/static/src/img/style_6_img_1.jpeg b/ext/3rd-party-addons/snippet_style_6/static/src/img/style_6_img_1.jpeg new file mode 100755 index 00000000..5b2faeac Binary files /dev/null and b/ext/3rd-party-addons/snippet_style_6/static/src/img/style_6_img_1.jpeg differ diff --git a/ext/3rd-party-addons/snippet_style_6/static/src/img/style_6_img_2.jpg b/ext/3rd-party-addons/snippet_style_6/static/src/img/style_6_img_2.jpg new file mode 100755 index 00000000..4f453ac4 Binary files /dev/null and b/ext/3rd-party-addons/snippet_style_6/static/src/img/style_6_img_2.jpg differ diff --git a/ext/3rd-party-addons/snippet_style_6/static/src/js/clarico_slider.js b/ext/3rd-party-addons/snippet_style_6/static/src/js/clarico_slider.js new file mode 100755 index 00000000..02493dba --- /dev/null +++ b/ext/3rd-party-addons/snippet_style_6/static/src/js/clarico_slider.js @@ -0,0 +1,13 @@ + +$(window).load(function(){ + var k=$(window).height(); + var header=$("header").height(); + var n1 = k-header; + + $('.slider_back_image').css('height', n1+'px'); + $('.div_img').css('height', n1+'px'); + + var final=(n1*10)/100; + $('.product_image').css('padding-top', final+'px'); + +}); diff --git a/ext/3rd-party-addons/snippet_style_6/static/src/less/style_6.less b/ext/3rd-party-addons/snippet_style_6/static/src/less/style_6.less new file mode 100755 index 00000000..6aed3b1d --- /dev/null +++ b/ext/3rd-party-addons/snippet_style_6/static/src/less/style_6.less @@ -0,0 +1,137 @@ +.ic_slider_design{ + .common-div(); +} +.clarico_comman_class{ + .common-div(); +} +.clarico_sub_comman_class{ + display:block; + margin:0px auto; + width:100%; +} +.comman_wrapper_class{ + .common-div(); +} +.slider_wrapper_div_left{ + width:30%; + .left(); + background-color:balck; +} +#myCarousel{ + height:auto !important; +} +.wrapper_full_class{ + width:100%; + display:inline-block; + .slider_back_img_center + { + /*display: flex; + justify-content: center; + align-items: center; */ + + } + .left_content + { + .center(); + .left_content_color + { + color: white; + .size(60px); + margin: 0px auto; + .pt(20%); + .center(); + .mb(20px); + .oswald-light(); + letter-spacing: 2px; + } + .left_content_pera + { + max-width: 73%; + margin: 0px auto; + .center(); + .mb(36px); + line-height:180%; + } + } + .h6_max_width + { + max-width:80%; + margin:0px auto; + } + .div_img + { + .left(); + width:50% !important; + background-size:cover; + + .product_image + { + width: auto; + max-width: 90%; + max-height: 95%; + display: block; + margin: 0px auto; + } + } +} +.slider_wrapper_div_right{ + width:70% !important; + .right(); +} +.slider_back_color_black +{ + width:100%; +} +.color_change{ + background-color:black; +} + + +@media (max-width: 900px) { + .slider_back_color_black { + width: 100%; + .pb(5%); + } +} +@media (max-width: 800px) { + .wrapper_full_class .left_content .left_content_color { + color: white; + .size(35px); + max-width: 80%; + .pt(10%) !important; + } + .slider_back_color_black { + .pb(10%); + height:auto !important; + } + .slider_wrapper_div_left { + width: 100% !important; + } + .slider_wrapper_div_right { + width: 100% !important; + .center(); + margin: 0px auto; + display: block; + .mt(5%); + } + .wrapper_full_class .div_img .product_image { + max-width: 65%; + } + .wrapper_full_class .left_content .left_content_color { + .size(48px) !important; + } + + } + +@media (max-width: 600px) +{ + .wrapper_full_class .left_content .left_content_color { + .size(26px) !important; + } + .slider_wrapper_div_right { + .mt(5%); + } + .wrapper_full_class .left_content .left_content_pera { + .size(12px); + } + } diff --git a/ext/3rd-party-addons/snippet_style_6/templates/assets.xml b/ext/3rd-party-addons/snippet_style_6/templates/assets.xml new file mode 100755 index 00000000..9f205a8f --- /dev/null +++ b/ext/3rd-party-addons/snippet_style_6/templates/assets.xml @@ -0,0 +1,11 @@ + + + + \ No newline at end of file diff --git a/ext/3rd-party-addons/snippet_style_6/templates/style_6.xml b/ext/3rd-party-addons/snippet_style_6/templates/style_6.xml new file mode 100755 index 00000000..77f41a62 --- /dev/null +++ b/ext/3rd-party-addons/snippet_style_6/templates/style_6.xml @@ -0,0 +1,72 @@ + + + + + + \ No newline at end of file diff --git a/ext/3rd-party-addons/snippet_style_7/__init__.py b/ext/3rd-party-addons/snippet_style_7/__init__.py new file mode 100755 index 00000000..e69de29b diff --git a/ext/3rd-party-addons/snippet_style_7/__manifest__.py b/ext/3rd-party-addons/snippet_style_7/__manifest__.py new file mode 100755 index 00000000..6d1698c9 --- /dev/null +++ b/ext/3rd-party-addons/snippet_style_7/__manifest__.py @@ -0,0 +1,27 @@ +{ + # Theme information + 'name' : 'Snippet Style 7', + 'category' : 'Website', + 'version' : '1.0', + 'summary': 'CMS Building Blocks', + 'description': """""", + + # Dependencies + 'depends': [ + 'clarico_snippets' + ], + + # Views + 'data': [ + 'templates/style_7.xml', + 'templates/assets.xml', + ], + + # Author + 'author': 'Emipro Technologies Pvt. Ltd.', + 'website': 'http://www.emiprotechnologies.com', + + # Technical + 'installable': True, +} + diff --git a/ext/3rd-party-addons/snippet_style_7/static/description/icon.png b/ext/3rd-party-addons/snippet_style_7/static/description/icon.png new file mode 100755 index 00000000..bfafc926 Binary files /dev/null and b/ext/3rd-party-addons/snippet_style_7/static/description/icon.png differ diff --git a/ext/3rd-party-addons/snippet_style_7/static/src/img/Style_7.jpg b/ext/3rd-party-addons/snippet_style_7/static/src/img/Style_7.jpg new file mode 100755 index 00000000..48ea67c8 Binary files /dev/null and b/ext/3rd-party-addons/snippet_style_7/static/src/img/Style_7.jpg differ diff --git a/ext/3rd-party-addons/snippet_style_7/static/src/img/style_7_img_1.jpeg b/ext/3rd-party-addons/snippet_style_7/static/src/img/style_7_img_1.jpeg new file mode 100755 index 00000000..6f4cd1ed Binary files /dev/null and b/ext/3rd-party-addons/snippet_style_7/static/src/img/style_7_img_1.jpeg differ diff --git a/ext/3rd-party-addons/snippet_style_7/static/src/less/style_7.less b/ext/3rd-party-addons/snippet_style_7/static/src/less/style_7.less new file mode 100755 index 00000000..ccaa55ef --- /dev/null +++ b/ext/3rd-party-addons/snippet_style_7/static/src/less/style_7.less @@ -0,0 +1,80 @@ + +.clarico_home_second_section +{ + display:inline-block; + width:100%; + + .clarico_home_second_sub_section + { + display:block; + width:90%; + margin:0px auto; + max-width:1400px; + + .chs_img_container + { + width:50%; + display:block; + .left; + + img + { + max-width:100%; + } + } + .chs_detail_container + { + width:50%; + display:block; + .right; + .mt(5%); + + .chs_para + { + .size(15px); + line-height: 180%; + .mb(41px) !important; + color: #898383; + .muli-light(); + .mt(25px); + } + + } + } + +} +@media (max-width: 800px) { + .clarico_home_second_section .clarico_home_second_sub_section .chs_img_container { + width: 90%; + .center; + } + .clarico_home_second_section .clarico_home_second_sub_section .chs_detail_container { + width: 100%; + .center; + } + .clarico_home_second_section .clarico_home_second_sub_section .chs_detail_container .chs_heading { + .size(28px); + .center; + } + .clarico_home_second_section .clarico_home_second_sub_section .chs_detail_container .chs_para { + .size(14px); + .center; + } + .clarico_home_second_section .clarico_home_second_sub_section .chs_img_container img { + max-width: 80%; + } +} +@media (max-width: 600px) { + .clarico_home_second_section .clarico_home_second_sub_section .chs_img_container img { + max-width: 90%; + } + .clarico_home_second_section .clarico_home_second_sub_section .chs_detail_container .chs_heading { + .size(20px) !important; + } + .clarico_home_second_section .clarico_home_second_sub_section .chs_detail_container .chs_para { + .size(13px); + .mb(21px); + .mt(9px); + } +} + diff --git a/ext/3rd-party-addons/snippet_style_7/templates/assets.xml b/ext/3rd-party-addons/snippet_style_7/templates/assets.xml new file mode 100755 index 00000000..ead076a5 --- /dev/null +++ b/ext/3rd-party-addons/snippet_style_7/templates/assets.xml @@ -0,0 +1,9 @@ + + + + \ No newline at end of file diff --git a/ext/3rd-party-addons/snippet_style_7/templates/style_7.xml b/ext/3rd-party-addons/snippet_style_7/templates/style_7.xml new file mode 100755 index 00000000..bcbc38ae --- /dev/null +++ b/ext/3rd-party-addons/snippet_style_7/templates/style_7.xml @@ -0,0 +1,40 @@ + + + + + \ No newline at end of file diff --git a/ext/3rd-party-addons/snippet_style_8/__init__.py b/ext/3rd-party-addons/snippet_style_8/__init__.py new file mode 100755 index 00000000..e69de29b diff --git a/ext/3rd-party-addons/snippet_style_8/__manifest__.py b/ext/3rd-party-addons/snippet_style_8/__manifest__.py new file mode 100755 index 00000000..04d3e58a --- /dev/null +++ b/ext/3rd-party-addons/snippet_style_8/__manifest__.py @@ -0,0 +1,27 @@ +{ + # Theme information + 'name' : 'Snippet Style 8', + 'category' : 'Website', + 'version' : '1.0', + 'summary': 'CMS Building Blocks', + 'description': """""", + + # Dependencies + 'depends': [ + 'clarico_snippets' + ], + + # Views + 'data': [ + 'templates/style_8.xml', + 'templates/assets.xml', + ], + + # Author + 'author': 'Emipro Technologies Pvt. Ltd.', + 'website': 'http://www.emiprotechnologies.com', + + # Technical + 'installable': True, +} + diff --git a/ext/3rd-party-addons/snippet_style_8/static/description/icon.png b/ext/3rd-party-addons/snippet_style_8/static/description/icon.png new file mode 100755 index 00000000..bfafc926 Binary files /dev/null and b/ext/3rd-party-addons/snippet_style_8/static/description/icon.png differ diff --git a/ext/3rd-party-addons/snippet_style_8/static/src/img/style_8.jpg b/ext/3rd-party-addons/snippet_style_8/static/src/img/style_8.jpg new file mode 100755 index 00000000..1b5acb5c Binary files /dev/null and b/ext/3rd-party-addons/snippet_style_8/static/src/img/style_8.jpg differ diff --git a/ext/3rd-party-addons/snippet_style_8/static/src/img/style_8_img_1.png b/ext/3rd-party-addons/snippet_style_8/static/src/img/style_8_img_1.png new file mode 100755 index 00000000..8a1e2dca Binary files /dev/null and b/ext/3rd-party-addons/snippet_style_8/static/src/img/style_8_img_1.png differ diff --git a/ext/3rd-party-addons/snippet_style_8/static/src/js/style_8.js b/ext/3rd-party-addons/snippet_style_8/static/src/js/style_8.js new file mode 100755 index 00000000..c7ff47e4 --- /dev/null +++ b/ext/3rd-party-addons/snippet_style_8/static/src/js/style_8.js @@ -0,0 +1,5 @@ +/*$(window).load(function() { + $(".text_area_div").fadeTo('slow',1.0).css("transform","translate(-3em,0)"); + $(".slide1_img1_div").fadeTo('slow',1.0).css("transform","translate(0,-3em)"); +}); +*/ \ No newline at end of file diff --git a/ext/3rd-party-addons/snippet_style_8/static/src/less/style_8.less b/ext/3rd-party-addons/snippet_style_8/static/src/less/style_8.less new file mode 100755 index 00000000..15e81366 --- /dev/null +++ b/ext/3rd-party-addons/snippet_style_8/static/src/less/style_8.less @@ -0,0 +1,170 @@ +/* replaced fade section */ + +.second_layout_img_text_fade_wrap +{ + display:inline-block; + width:100%; + background-color: rgb(243, 243, 243); + background-repeat: no-repeat; + background-size: cover; + background-position: center center; + opacity: 1; + min-height:600px; +} +.second_layout_img_text_fade_container +{ + display:block; + width:90%; + margin:0px auto; + max-width:1400px; + + .text_area_div + { + width:30%; + .left; + .pt(12%); + .pb(5%); + .pl(5%); + transition: 2s ease-in-out; + //transform:translate(0px,0px); + // opacity:0; + animation: fadeIn_left 2s ease-in both; + } + .fade_img_container + { + width:70%; + display:block; + .left; + .pt(10%); + } + .slide1_img1_div + { + width:100%; + display:block; + margin: 0px auto; + transition: 2s ease-in-out; + //transform:translate(0px,0px); + //opacity:0; + max-height: 600px; + animation: fadeIn_right 2s ease-in both; + } +} +.img_text_fade_text_para +{ + max-width:400px; +} +.img_all +{ + display:block; + width:auto; + max-width:100%; + margin:0px auto; +} +.li_number_span + { + position: absolute; + left: -25px; + top: -10px; + .size(16px); + font-weight: 600; + color: #999; + transition: color .2s; +} +.img_text_fade_text_heading +{ + .oswald-bold; + .size(35px); + color: #9c9c9c; + .uppercase; + margin: 0; +} +.img_text_fade_text_heading_small +{ + color: #bcb6b6; + .size(20px); + .oswald-light(); + .capitalize; + padding: 0; + .mt(6px) !important; +} +.discount_title +{ + .size(57px); + color: #545353; + .oswald-semibold; + .uppercase; + .mb(10%); +} + + @keyframes fadeIn_left { + from { + opacity: 0; + transform: translate3d(-20%, 0, 0); + } + to { + opacity: 1; + transform: translate3d(0, 0, 0); + } +} +@keyframes fadeIn_right { + from { + opacity: 0; + transform: translate3d(0, -10%, 0); + } + to { + opacity: 1; + transform: translate3d(0, 0, 0); + } +} + + + +@media (max-width: 1000px) { + + .second_layout_img_text_fade_container .text_area_div + { float: none !important; + width: 100% !important; + display: block; + margin: 0px auto; + padding-left: 10%; //because of transition left effect + .center; + } + .second_layout_img_text_fade_container .fade_img_container + { + display: block !important; + float: none !important; + width: 100% !important; + } +} +@media (max-width: 900px) { + .second_layout_img_text_fade_wrap + { + min-height: 450px !important; + } +} +@media (max-width: 600px) +{ + .img_text_fade_text_heading + { + .size(23px) !important; + } + .img_text_fade_text_heading_small + { + .size(15px) !important; + } + .discount_title + { + .size(33px) !important; + } + .second_layout_img_text_fade_container .slide1_img1_div + { + .mt(15%) !important; + } + .second_layout_img_text_fade_container .text_area_div + { + transition: none; + .pl(0%) !important; + opacity:1 !important; + transform: unset !important; + } +} diff --git a/ext/3rd-party-addons/snippet_style_8/templates/assets.xml b/ext/3rd-party-addons/snippet_style_8/templates/assets.xml new file mode 100755 index 00000000..08b77a51 --- /dev/null +++ b/ext/3rd-party-addons/snippet_style_8/templates/assets.xml @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/ext/3rd-party-addons/snippet_style_8/templates/style_8.xml b/ext/3rd-party-addons/snippet_style_8/templates/style_8.xml new file mode 100755 index 00000000..2c1a3fc4 --- /dev/null +++ b/ext/3rd-party-addons/snippet_style_8/templates/style_8.xml @@ -0,0 +1,36 @@ + + + + + + diff --git a/ext/3rd-party-addons/snippet_style_9/__init__.py b/ext/3rd-party-addons/snippet_style_9/__init__.py new file mode 100755 index 00000000..e69de29b diff --git a/ext/3rd-party-addons/snippet_style_9/__manifest__.py b/ext/3rd-party-addons/snippet_style_9/__manifest__.py new file mode 100755 index 00000000..269805f5 --- /dev/null +++ b/ext/3rd-party-addons/snippet_style_9/__manifest__.py @@ -0,0 +1,27 @@ +{ + # Theme information + 'name' : 'Snippet Style 9', + 'category' : 'Website', + 'version' : '1.0', + 'summary': 'CMS Building Blocks', + 'description': """""", + + # Dependencies + 'depends': [ + 'clarico_snippets' + ], + + # Views + 'data': [ + 'templates/style_9.xml', + 'templates/assets.xml', + ], + + # Author + 'author': 'Emipro Technologies Pvt. Ltd.', + 'website': 'http://www.emiprotechnologies.com', + + # Technical + 'installable': True, +} + diff --git a/ext/3rd-party-addons/snippet_style_9/static/description/icon.png b/ext/3rd-party-addons/snippet_style_9/static/description/icon.png new file mode 100755 index 00000000..bfafc926 Binary files /dev/null and b/ext/3rd-party-addons/snippet_style_9/static/description/icon.png differ diff --git a/ext/3rd-party-addons/snippet_style_9/static/src/img/c1.jpg b/ext/3rd-party-addons/snippet_style_9/static/src/img/c1.jpg new file mode 100755 index 00000000..704a333b Binary files /dev/null and b/ext/3rd-party-addons/snippet_style_9/static/src/img/c1.jpg differ diff --git a/ext/3rd-party-addons/snippet_style_9/static/src/img/c2.jpg b/ext/3rd-party-addons/snippet_style_9/static/src/img/c2.jpg new file mode 100755 index 00000000..b4e3713c Binary files /dev/null and b/ext/3rd-party-addons/snippet_style_9/static/src/img/c2.jpg differ diff --git a/ext/3rd-party-addons/snippet_style_9/static/src/img/c3.jpg b/ext/3rd-party-addons/snippet_style_9/static/src/img/c3.jpg new file mode 100755 index 00000000..724596dd Binary files /dev/null and b/ext/3rd-party-addons/snippet_style_9/static/src/img/c3.jpg differ diff --git a/ext/3rd-party-addons/snippet_style_9/static/src/img/c4.jpg b/ext/3rd-party-addons/snippet_style_9/static/src/img/c4.jpg new file mode 100755 index 00000000..1a6381ec Binary files /dev/null and b/ext/3rd-party-addons/snippet_style_9/static/src/img/c4.jpg differ diff --git a/ext/3rd-party-addons/snippet_style_9/static/src/img/c5.jpg b/ext/3rd-party-addons/snippet_style_9/static/src/img/c5.jpg new file mode 100755 index 00000000..9dbfc277 Binary files /dev/null and b/ext/3rd-party-addons/snippet_style_9/static/src/img/c5.jpg differ diff --git a/ext/3rd-party-addons/snippet_style_9/static/src/img/c6.jpg b/ext/3rd-party-addons/snippet_style_9/static/src/img/c6.jpg new file mode 100755 index 00000000..0ec8a504 Binary files /dev/null and b/ext/3rd-party-addons/snippet_style_9/static/src/img/c6.jpg differ diff --git a/ext/3rd-party-addons/snippet_style_9/static/src/img/c7.jpg b/ext/3rd-party-addons/snippet_style_9/static/src/img/c7.jpg new file mode 100755 index 00000000..88d44ef8 Binary files /dev/null and b/ext/3rd-party-addons/snippet_style_9/static/src/img/c7.jpg differ diff --git a/ext/3rd-party-addons/snippet_style_9/static/src/img/c8.jpg b/ext/3rd-party-addons/snippet_style_9/static/src/img/c8.jpg new file mode 100755 index 00000000..39c3addf Binary files /dev/null and b/ext/3rd-party-addons/snippet_style_9/static/src/img/c8.jpg differ diff --git a/ext/3rd-party-addons/snippet_style_9/static/src/img/c9.jpg b/ext/3rd-party-addons/snippet_style_9/static/src/img/c9.jpg new file mode 100755 index 00000000..ebf56dbc Binary files /dev/null and b/ext/3rd-party-addons/snippet_style_9/static/src/img/c9.jpg differ diff --git a/ext/3rd-party-addons/snippet_style_9/static/src/img/style_9.jpg b/ext/3rd-party-addons/snippet_style_9/static/src/img/style_9.jpg new file mode 100755 index 00000000..9eecf63a Binary files /dev/null and b/ext/3rd-party-addons/snippet_style_9/static/src/img/style_9.jpg differ diff --git a/ext/3rd-party-addons/snippet_style_9/static/src/img/style_9_img_1.jpeg b/ext/3rd-party-addons/snippet_style_9/static/src/img/style_9_img_1.jpeg new file mode 100755 index 00000000..66b9ed06 Binary files /dev/null and b/ext/3rd-party-addons/snippet_style_9/static/src/img/style_9_img_1.jpeg differ diff --git a/ext/3rd-party-addons/snippet_style_9/static/src/less/style_9.less b/ext/3rd-party-addons/snippet_style_9/static/src/less/style_9.less new file mode 100755 index 00000000..48deb0c4 --- /dev/null +++ b/ext/3rd-party-addons/snippet_style_9/static/src/less/style_9.less @@ -0,0 +1,180 @@ +/* daily deals */ + +.cat_img_content_snippet_wrap +{ + display:inline-block; + width:100%; + + + .cat_img_content_snippet_container + { + display:block; + width:90%; + margin:0px auto; + max-width:1400px; + } +} + +.daily_deals_img_section +{ + display:block; + width:25%; + .left; + max-height: 400px; + + img + { + width:auto; + max-width:100%; + display:block; + margin:0px auto; + } +} +.daily_deals_content_class +{ + display:block; + width:35%; + .left; + .pl(10px); + + .hr_before_heading + { + border: 2px solid @theme-color; + .mt(35px); + width: 85px; + .mb(0px); + } + + .content_heading + { + .size(30px); + color:#000; + .mt(43px); + letter-spacing: 2px; + .mb(18px); + .uppercase; + letter-spacing: 0.1em; + .oswald-light; + .mt(8%); + + } + .daily_deals_para + { + .size(15px); + color: #898383; + line-height: 180%; + .mb(7%); + .muli-light; + } +} +.daily_deals_snippet_category +{ + display:block; + width:40%; + .left; + + .category_row + { + display:inline-block; + width:100%; + .pt(5%); + + .category + { + width:30%; + display:block; + .left; + .mr(5px); + + .cat_img_div + { + width:100%; + + img + { + width:auto; + max-width:100%; + display:block; + margin:0px auto; + } + } + .category_name + { + .size(13px); + .capitalize; + .center; + display:block; + padding: 5px 25px; + cursor:pointer; + + &:hover + { + color:@theme-color; + } + } + } + } +} + +@media (max-width: 1000px) { + + .daily_deals_img_section + { + width: 100% !important; + float: none !important; + max-height: 400px !important; + } + .daily_deals_content_class + { + float: none !important; + .pl(0%) !important; + width: 100% !important; + max-width: 600px; + margin: 0px auto; + .mt(10%); + text-align:center; + } + + .daily_deals_snippet_category + { + float: none !important; + width: 100% !important; + max-width: 600px; + margin: 0px auto; + .mt(7%); + } + .daily_deals_content_class .hr_before_heading { + margin:0px auto; + } +} + +@media (max-width: 900px) { + + .daily_deals_snippet_category .category_row .category .category_name { + padding: 5px 20px !important; + } +} +@media (max-width: 600px) +{ + .daily_deals_content_class .content_heading + { + .size(20px) !important; + } + .daily_deals_content_class .daily_deals_para + { + .size(13px) !important; + } + + .daily_deals_img_section img + { + max-width: 80% !important; + } +} + + + + + + + + diff --git a/ext/3rd-party-addons/snippet_style_9/templates/assets.xml b/ext/3rd-party-addons/snippet_style_9/templates/assets.xml new file mode 100755 index 00000000..62bd1ab7 --- /dev/null +++ b/ext/3rd-party-addons/snippet_style_9/templates/assets.xml @@ -0,0 +1,9 @@ + + + + \ No newline at end of file diff --git a/ext/3rd-party-addons/snippet_style_9/templates/style_9.xml b/ext/3rd-party-addons/snippet_style_9/templates/style_9.xml new file mode 100755 index 00000000..ff902993 --- /dev/null +++ b/ext/3rd-party-addons/snippet_style_9/templates/style_9.xml @@ -0,0 +1,137 @@ + + + + + +