├── Helper └── Data.php ├── README.md ├── composer.json ├── etc ├── acl.xml ├── adminhtml │ └── system.xml ├── config.xml └── module.xml ├── registration.php └── view └── frontend ├── layout ├── catalog_category_layered.xml ├── catalog_category_view.xml ├── catalogsearch_advanced_result.xml ├── catalogsearch_result_index.xml └── tag_product_list.xml ├── templates └── ajaxscroll │ └── ajaxscroll.phtml └── web ├── css └── ajaxscroll │ └── ajaxscroll.css ├── js └── ajaxscroll │ ├── easing.js │ ├── images │ └── loader.gif │ ├── jquery-1.7.2.min.js │ ├── jquery-noconflict.js │ ├── jquery.ajaxscroll.min.bk.js │ ├── jquery.ajaxscroll.min.js │ ├── jquery.ajaxscroll.minbk.js │ ├── jquery.ui.totop.js │ └── jquery.ui.totop.min.js └── media └── ajaxscroll └── default ├── loader.gif ├── loading_bar.gif ├── ui.totop.black.png ├── ui.totop.blue.png └── ui.totop.white.png /Helper/Data.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /etc/adminhtml/system.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | emizen 10 | Emizen_Ajaxscroll::system_config 11 | 12 | 13 | 14 | 15 | Magento\Config\Model\Config\Source\Yesno 16 | 17 | 18 | 19 | Magento\Config\Model\Config\Source\Yesno 20 | 21 | 22 | 23 | Magento\Config\Model\Config\Backend\Image 24 | emizen/ajaxscroll 25 | emizen/ajaxscroll 26 | 27 | 28 | 29 | Magento\Config\Model\Config\Backend\Image 30 | emizen/ajaxscroll 31 | emizen/ajaxscroll 32 | 33 | 34 | 35 | Magento\Config\Model\Config\Backend\Image 36 | emizen/ajaxscroll 37 | emizen/ajaxscroll 38 | 39 | 40 |
41 |
42 |
-------------------------------------------------------------------------------- /etc/config.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 1 7 | 1 8 | default/ui.totop.black.png 9 | default/loading_bar.gif 10 | default/loader.gif 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /etc/module.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /registration.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 48 | 49 | 66 | 67 | 68 | -------------------------------------------------------------------------------- /view/frontend/web/css/ajaxscroll/ajaxscroll.css: -------------------------------------------------------------------------------- 1 | @CHARSET "UTF-8"; 2 | 3 | .ajaxscroll_loader { 4 | text-align:center; 5 | margin: 5px 0; 6 | } 7 | #toTop { 8 | display:none; 9 | text-decoration:none; 10 | position:fixed; 11 | bottom:10px; 12 | right:10px; 13 | overflow:hidden; 14 | width:51px; 15 | height:51px; 16 | border:none; 17 | text-indent:100%; 18 | z-index: 999; 19 | /* background:url(../img/ui.totop.png) no-repeat left top; */ 20 | } 21 | 22 | #toTopHover { 23 | /* background:url(../img/ui.totop.png) no-repeat left -51px; */ 24 | width:51px; 25 | height:51px; 26 | display:block; 27 | overflow:hidden; 28 | float:left; 29 | opacity: 0; 30 | -moz-opacity: 0; 31 | filter:alpha(opacity=0); 32 | } 33 | 34 | #toTop:active, #toTop:focus { 35 | outline:none; 36 | } -------------------------------------------------------------------------------- /view/frontend/web/js/ajaxscroll/easing.js: -------------------------------------------------------------------------------- 1 | /* 2 | * sh EasIng v1.1.2 - http://gsgd.co.uk/sandbox/sh.easIng.php 3 | * 4 | * Uses the built In easIng capabilities added In sh 1.1 5 | * to offer multiple easIng options 6 | * 7 | * Copyright (c) 2007 George Smith 8 | * Licensed under the MIT License: 9 | * http://www.opensource.org/licenses/mit-license.php 10 | */ 11 | 12 | // t: current time, b: begInnIng value, c: change In value, d: duration 13 | 14 | sh.extend( sh.easing, 15 | { 16 | easeInQuad: function (x, t, b, c, d) { 17 | return c*(t/=d)*t + b; 18 | }, 19 | easeOutQuad: function (x, t, b, c, d) { 20 | return -c *(t/=d)*(t-2) + b; 21 | }, 22 | easeInOutQuad: function (x, t, b, c, d) { 23 | if ((t/=d/2) < 1) return c/2*t*t + b; 24 | return -c/2 * ((--t)*(t-2) - 1) + b; 25 | }, 26 | easeInCubic: function (x, t, b, c, d) { 27 | return c*(t/=d)*t*t + b; 28 | }, 29 | easeOutCubic: function (x, t, b, c, d) { 30 | return c*((t=t/d-1)*t*t + 1) + b; 31 | }, 32 | easeInOutCubic: function (x, t, b, c, d) { 33 | if ((t/=d/2) < 1) return c/2*t*t*t + b; 34 | return c/2*((t-=2)*t*t + 2) + b; 35 | }, 36 | easeInQuart: function (x, t, b, c, d) { 37 | return c*(t/=d)*t*t*t + b; 38 | }, 39 | easeOutQuart: function (x, t, b, c, d) { 40 | return -c * ((t=t/d-1)*t*t*t - 1) + b; 41 | }, 42 | easeInOutQuart: function (x, t, b, c, d) { 43 | if ((t/=d/2) < 1) return c/2*t*t*t*t + b; 44 | return -c/2 * ((t-=2)*t*t*t - 2) + b; 45 | }, 46 | easeInQuint: function (x, t, b, c, d) { 47 | return c*(t/=d)*t*t*t*t + b; 48 | }, 49 | easeOutQuint: function (x, t, b, c, d) { 50 | return c*((t=t/d-1)*t*t*t*t + 1) + b; 51 | }, 52 | easeInOutQuint: function (x, t, b, c, d) { 53 | if ((t/=d/2) < 1) return c/2*t*t*t*t*t + b; 54 | return c/2*((t-=2)*t*t*t*t + 2) + b; 55 | }, 56 | easeInSine: function (x, t, b, c, d) { 57 | return -c * Math.cos(t/d * (Math.PI/2)) + c + b; 58 | }, 59 | easeOutSine: function (x, t, b, c, d) { 60 | return c * Math.sin(t/d * (Math.PI/2)) + b; 61 | }, 62 | easeInOutSine: function (x, t, b, c, d) { 63 | return -c/2 * (Math.cos(Math.PI*t/d) - 1) + b; 64 | }, 65 | easeInExpo: function (x, t, b, c, d) { 66 | return (t==0) ? b : c * Math.pow(2, 10 * (t/d - 1)) + b; 67 | }, 68 | easeOutExpo: function (x, t, b, c, d) { 69 | return (t==d) ? b+c : c * (-Math.pow(2, -10 * t/d) + 1) + b; 70 | }, 71 | easeInOutExpo: function (x, t, b, c, d) { 72 | if (t==0) return b; 73 | if (t==d) return b+c; 74 | if ((t/=d/2) < 1) return c/2 * Math.pow(2, 10 * (t - 1)) + b; 75 | return c/2 * (-Math.pow(2, -10 * --t) + 2) + b; 76 | }, 77 | easeInCirc: function (x, t, b, c, d) { 78 | return -c * (Math.sqrt(1 - (t/=d)*t) - 1) + b; 79 | }, 80 | easeOutCirc: function (x, t, b, c, d) { 81 | return c * Math.sqrt(1 - (t=t/d-1)*t) + b; 82 | }, 83 | easeInOutCirc: function (x, t, b, c, d) { 84 | if ((t/=d/2) < 1) return -c/2 * (Math.sqrt(1 - t*t) - 1) + b; 85 | return c/2 * (Math.sqrt(1 - (t-=2)*t) + 1) + b; 86 | }, 87 | easeInElastic: function (x, t, b, c, d) { 88 | var s=1.70158;var p=0;var a=c; 89 | if (t==0) return b; if ((t/=d)==1) return b+c; if (!p) p=d*.3; 90 | if (a < Math.abs(c)) { a=c; var s=p/4; } 91 | else var s = p/(2*Math.PI) * Math.asin (c/a); 92 | return -(a*Math.pow(2,10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )) + b; 93 | }, 94 | easeOutElastic: function (x, t, b, c, d) { 95 | var s=1.70158;var p=0;var a=c; 96 | if (t==0) return b; if ((t/=d)==1) return b+c; if (!p) p=d*.3; 97 | if (a < Math.abs(c)) { a=c; var s=p/4; } 98 | else var s = p/(2*Math.PI) * Math.asin (c/a); 99 | return a*Math.pow(2,-10*t) * Math.sin( (t*d-s)*(2*Math.PI)/p ) + c + b; 100 | }, 101 | easeInOutElastic: function (x, t, b, c, d) { 102 | var s=1.70158;var p=0;var a=c; 103 | if (t==0) return b; if ((t/=d/2)==2) return b+c; if (!p) p=d*(.3*1.5); 104 | if (a < Math.abs(c)) { a=c; var s=p/4; } 105 | else var s = p/(2*Math.PI) * Math.asin (c/a); 106 | if (t < 1) return -.5*(a*Math.pow(2,10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )) + b; 107 | return a*Math.pow(2,-10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )*.5 + c + b; 108 | }, 109 | easeInBack: function (x, t, b, c, d, s) { 110 | if (s == undefined) s = 1.70158; 111 | return c*(t/=d)*t*((s+1)*t - s) + b; 112 | }, 113 | easeOutBack: function (x, t, b, c, d, s) { 114 | if (s == undefined) s = 1.70158; 115 | return c*((t=t/d-1)*t*((s+1)*t + s) + 1) + b; 116 | }, 117 | easeInOutBack: function (x, t, b, c, d, s) { 118 | if (s == undefined) s = 1.70158; 119 | if ((t/=d/2) < 1) return c/2*(t*t*(((s*=(1.525))+1)*t - s)) + b; 120 | return c/2*((t-=2)*t*(((s*=(1.525))+1)*t + s) + 2) + b; 121 | }, 122 | easeInBounce: function (x, t, b, c, d) { 123 | return c - sh.easing.easeOutBounce (x, d-t, 0, c, d) + b; 124 | }, 125 | easeOutBounce: function (x, t, b, c, d) { 126 | if ((t/=d) < (1/2.75)) { 127 | return c*(7.5625*t*t) + b; 128 | } else if (t < (2/2.75)) { 129 | return c*(7.5625*(t-=(1.5/2.75))*t + .75) + b; 130 | } else if (t < (2.5/2.75)) { 131 | return c*(7.5625*(t-=(2.25/2.75))*t + .9375) + b; 132 | } else { 133 | return c*(7.5625*(t-=(2.625/2.75))*t + .984375) + b; 134 | } 135 | }, 136 | easeInOutBounce: function (x, t, b, c, d) { 137 | if (t < d/2) return sh.easing.easeInBounce (x, t*2, 0, c, d) * .5 + b; 138 | return sh.easing.easeOutBounce (x, t*2-d, 0, c, d) * .5 + c*.5 + b; 139 | } 140 | }); 141 | 142 | -------------------------------------------------------------------------------- /view/frontend/web/js/ajaxscroll/images/loader.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emizentech/magento2-infinite-ajax-scroll/d3398b98a7693bd65ec242ee1fef2dc9c78d266f/view/frontend/web/js/ajaxscroll/images/loader.gif -------------------------------------------------------------------------------- /view/frontend/web/js/ajaxscroll/jquery-1.7.2.min.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emizentech/magento2-infinite-ajax-scroll/d3398b98a7693bd65ec242ee1fef2dc9c78d266f/view/frontend/web/js/ajaxscroll/jquery-1.7.2.min.js -------------------------------------------------------------------------------- /view/frontend/web/js/ajaxscroll/jquery-noconflict.js: -------------------------------------------------------------------------------- 1 | jQuery.noConflict(); -------------------------------------------------------------------------------- /view/frontend/web/js/ajaxscroll/jquery.ajaxscroll.min.bk.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * Infinite Ajax Scroll, a jQuery plugin 3 | * Version v0.1.5 4 | * http://webcreate.nl/ 5 | * 6 | * Copyright (c) 2011 Jeroen Fiege 7 | * Licensed under the MIT License: 8 | * http://webcreate.nl/license 9 | */ 10 | (function(b){b.ajaxscroll=function(d){var m=b.extend({},b.ajaxscroll.defaults,d);var c=new b.ajaxscroll.util();var j=new b.ajaxscroll.paging();var h=(m.history?new b.ajaxscroll.history():false);var f=this;r();function r(){j.onChangePage(function(x,v,w){if(h){h.setPage(x,w)}m.onPageChange.call(this,x,w,v)});s();if(h&&h.havePage()){q();pageNum=h.getPage();c.forceScrollTop(function(){if(pageNum>1){l(pageNum);curTreshold=p(true);b("html,body").scrollTop(curTreshold)}else{s()}})}return f}function s(){n();b(window).scroll(g)}function g(){scrTop=b(window).scrollTop();wndHeight=b(window).height();curScrOffset=scrTop+wndHeight;if(curScrOffset>=p()){t(curScrOffset)}}function q(){b(window).unbind("scroll",g)}function n(){b(m.pagination).hide()}function p(v){el=b(m.container).find(m.item).last();if(el.size()==0){return 0}treshold=el.offset().top+el.height();if(!v){treshold+=m.tresholdMargin}return treshold}function t(w,v){urlNextPage=b(m.next).attr("href");if(!urlNextPage){return q()}j.pushPages(w,urlNextPage);q();o();e(urlNextPage,function(y,x){result=m.onLoadItems.call(this,x);if(result!==false){b(x).hide();curLastItem=b(m.container).find(m.item).last();curLastItem.after(x);b(x).fadeIn()}b(m.pagination).replaceWith(b(m.pagination,y));k();s();m.onRenderComplete.call(this,x);if(v){v.call(this)}})}function e(w,x){var v=[];b.get(w,null,function(y){b(m.container,y).find(m.item).each(function(){v.push(this)});if(x){x.call(this,y,v)}},"html")}function l(v){curTreshold=p(true);if(curTreshold>0){t(curTreshold,function(){q();if((j.getCurPageNum(curTreshold)+1)"+m.loader+"");loader.hide()}return loader}function o(v){loader=u();el=b(m.container).find(m.item).last();el.after(loader);loader.fadeIn()}function k(){loader=u();loader.remove()}};function a(c){if(window.console&&window.console.log){window.console.log(c)}}b.ajaxscroll.defaults={container:"#container",item:".item",pagination:"#pagination",next:".next",loader:'',tresholdMargin:0,history:true,onPageChange:function(){},onLoadItems:function(){},onRenderComplete:function(){},};b.ajaxscroll.util=function(){var d=false;var f=false;var c=this;e();function e(){b(window).load(function(){d=true})}this.forceScrollTop=function(g){b("html,body").scrollTop(0);if(!f){if(!d){setTimeout(function(){c.forceScrollTop(g)},1)}else{g.call();f=true}}}};b.ajaxscroll.paging=function(){var e=[[0,document.location.toString()]];var h=function(){};var d=1;j();function j(){b(window).scroll(g)}function g(){scrTop=b(window).scrollTop();wndHeight=b(window).height();curScrOffset=scrTop+wndHeight;curPageNum=c(curScrOffset);curPagebreak=f(curScrOffset);if(d!=curPageNum){h.call(this,curPageNum,curPagebreak[0],curPagebreak[1])}d=curPageNum}function c(k){for(i=(e.length-1);i>0;i--){if(k>e[i][0]){return i+1}}return 1}this.getCurPageNum=function(k){return c(k)};function f(k){for(i=(e.length-1);i>=0;i--){if(k>e[i][0]){return e[i]}}return null}this.onChangePage=function(k){h=k};this.pushPages=function(k,l){e.push([k,l])}};b.ajaxscroll.history=function(){var d=false;var c=false;e();function e(){c=!!(window.history&&history.pushState&&history.replaceState);c=false}this.setPage=function(g,f){this.updateState({page:g},"",f)};this.havePage=function(){return(this.getState()!=false)};this.getPage=function(){if(this.havePage()){stateObj=this.getState();return stateObj.page}return 1};this.getState=function(){if(c){stateObj=history.state;if(stateObj&&stateObj.ajaxscroll){return stateObj.ajaxscroll}}else{haveState=(window.location.hash.substring(0,7)=="#/page/");if(haveState){pageNum=parseInt(window.location.hash.replace("#/page/",""));return{page:pageNum}}}return false};this.updateState=function(g,h,f){if(d){this.replaceState(g,h,f)}else{this.pushState(g,h,f)}};this.pushState=function(g,h,f){if(c){history.pushState({ajaxscroll:g},h,f)}else{hash=(g.page>0?"#/page/"+g.page:"");window.location.hash=hash}d=true};this.replaceState=function(g,h,f){if(c){history.replaceState({ajaxscroll:g},h,f)}else{this.pushState(g,h,f)}}}})(jQuery); -------------------------------------------------------------------------------- /view/frontend/web/js/ajaxscroll/jquery.ajaxscroll.min.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * Infinite Ajax Scroll, a sh plugin 3 | * Version v0.1.5 4 | * http://webcreate.nl/ 5 | * 6 | * Copyright (c) 2011 Jeroen Fiege 7 | * Licensed under the MIT License: 8 | * http://webcreate.nl/license 9 | */ 10 | (function (b) { 11 | 12 | b.ajaxscroll = function (d) { 13 | var m = b.extend({}, b.ajaxscroll.defaults, d); 14 | var c = new b.ajaxscroll.util(); 15 | var j = new b.ajaxscroll.paging(); 16 | var h = (m.history ? new b.ajaxscroll.history() : false); 17 | var f = this; 18 | r(); 19 | 20 | function r() { 21 | j.onChangePage(function (x, v, w) { 22 | if (h) { 23 | h.setPage(x, w) 24 | } 25 | m.onPageChange.call(this, x, w, v) 26 | }); 27 | s(); 28 | if (h && h.havePage()) { 29 | q(); 30 | pageNum = h.getPage(); 31 | c.forceScrollTop(function () { 32 | if (pageNum > 1) { 33 | l(pageNum); 34 | curTreshold = p(true); 35 | b("html,body").scrollTop(curTreshold) 36 | } else { 37 | s() 38 | } 39 | }) 40 | } 41 | return f 42 | } 43 | 44 | function s() { 45 | n(); 46 | b(window).scroll(g) 47 | } 48 | 49 | function g() { 50 | scrTop = b(window).scrollTop(); 51 | wndHeight = b(window).height(); 52 | curScrOffset = scrTop + wndHeight; 53 | if (curScrOffset >= p()) { 54 | t(curScrOffset) 55 | }else{ 56 | // alert(1) 57 | // alert(curScrOffset); 58 | // alert(p()); 59 | // alert(sh(window).height()); 60 | } 61 | } 62 | 63 | function q() { 64 | b(window).unbind("scroll", g) 65 | } 66 | 67 | function n() { 68 | b(m.pagination).hide() 69 | } 70 | 71 | function p(v) { 72 | 73 | el = b(m.container).find(m.item).last(); 74 | if (el.size() == 0) { 75 | return 0 76 | } 77 | 78 | treshold = el.offset().top + el.height(); 79 | 80 | if (!v) { 81 | treshold = treshold*1 + m.tresholdMargin*1; 82 | } 83 | 84 | return treshold 85 | } 86 | 87 | function t(w, v) { 88 | var kl = sh('.category-products '+m.item+' .product-image').length; 89 | urlNextPage = b(m.next).attr("href"); 90 | if (!urlNextPage) { 91 | return q() 92 | } 93 | j.pushPages(w, urlNextPage); 94 | q(); 95 | o(); 96 | e(urlNextPage, function (y, x) { 97 | result = m.onLoadItems.call(this, x); 98 | if (result !== false) { 99 | b(x).hide(); 100 | curLastItem = b(m.container).find(m.item).last(); 101 | curLastItem.after(x); 102 | b(x).fadeIn() 103 | } 104 | 105 | b(m.pagination).replaceWith(b(m.pagination, y)); 106 | var km = sh('.category-products '+m.item+' .product-image').length; 107 | k(); 108 | s(); 109 | ft=ft+1; 110 | 111 | sh(''+m.item+' li .product-image img').slice(kl).hide(); 112 | sh(''+m.item+' li .product-image').slice(kl).prepend(img); 113 | setTimeout(function() {sh('.scroll_loading').remove();}, 1500); 114 | setTimeout(function() { sh(''+m.item+' li .product-image img').slice(kl).show();}, 1600); 115 | m.onRenderComplete.call(this, x); 116 | if(typeof EM != 'undefined'){ 117 | sh(function(sh) { 118 | var myhref,qsbtt; 119 | 120 | // base function 121 | 122 | //get IE version 123 | function ieVersion(){ 124 | var rv = -1; // Return value assumes failure. 125 | if (navigator.appName == 'Microsoft Internet Explorer'){ 126 | var ua = navigator.userAgent; 127 | var re = new RegExp("MSIE ([0-9]{1,}[\.0-9]{0,})"); 128 | if (re.exec(ua) != null) 129 | rv = parseFloat( RegExp.$1 ); 130 | } 131 | return rv; 132 | } 133 | 134 | //read href attr in a tag 135 | function readHref(){ 136 | var mypath = arguments[0]; 137 | var patt = /\/[^\/]{0,}$/ig; 138 | if(mypath[mypath.length-1]=="/"){ 139 | mypath = mypath.substring(0,mypath.length-1); 140 | return (mypath.match(patt)+"/"); 141 | } 142 | return mypath.match(patt); 143 | } 144 | 145 | 146 | //string trim 147 | function strTrim(){ 148 | return arguments[0].replace(/^\s+|\s+$/g,""); 149 | } 150 | 151 | function _qsJnit(){ 152 | 153 | 154 | 155 | var selectorObj = arguments[0]; 156 | //selector chon tat ca cac li chua san pham tren luoi 157 | var listprod = sh(selectorObj.itemClass); 158 | var qsImg; 159 | var mypath = 'quickview/index/view'; 160 | // alert(EM.Quickview.BASE_URL); 161 | // if(EM.Quickview.BASE_URL.indexOf('index.php') == -1){ 162 | // mypath = 'quickview/index/view'; 163 | // }else{ 164 | // mypath = 'index.php/quickview/index/view'; 165 | // } 166 | var baseUrl = EM.Quickview.BASE_URL + mypath; 167 | 168 | var _qsHref = "\"quickview\""; 169 | sh(document.body).append(_qsHref); 170 | 171 | var qsHandlerImg = sh('#md_quickview_handler img'); 172 | 173 | sh.each(listprod, function(index, value) { 174 | var reloadurl = baseUrl; 175 | 176 | //get reload url 177 | myhref = sh(value).children(selectorObj.aClass ); 178 | var prodHref = readHref(myhref.attr('href'))[0]; 179 | prodHref[0] == "\/" ? prodHref = prodHref.substring(1,prodHref.length) : prodHref; 180 | prodHref=strTrim(prodHref); 181 | 182 | reloadurl = baseUrl+"/path/"+prodHref; 183 | version = ieVersion(); 184 | if(version < 8.0 && version > -1){ 185 | reloadurl = baseUrl+"/path"+prodHref; 186 | } 187 | //end reload url 188 | 189 | 190 | sh(selectorObj.imgClass, this).bind('mouseover', function() { 191 | var o = sh(this).offset(); 192 | sh('#md_quickview_handler').attr('href',reloadurl).show() 193 | .css({ 194 | 'top': o.top+(sh(this).height() - qsHandlerImg.height())/2+'px', 195 | 'left': o.left+(sh(this).width() - qsHandlerImg.width())/2+'px', 196 | 'visibility': 'visible' 197 | }); 198 | }); 199 | sh(value).bind('mouseout', function() { 200 | sh('#md_quickview_handler').hide(); 201 | }); 202 | }); 203 | 204 | //fix bug image disapper when hover 205 | sh('#md_quickview_handler') 206 | .bind('mouseover', function() { 207 | sh(this).show(); 208 | }) 209 | .bind('click', function() { 210 | sh(this).hide(); 211 | }); 212 | //insert quickview popup 213 | 214 | sh('#md_quickview_handler').fancybox({ 215 | 'titleShow' : false, 216 | 'width' : EM.Quickview.QS_FRM_WIDTH, 217 | 'height' : 'auto',//EM.Quickview.QS_FRM_HEIGHT, 218 | 'autoScale' : false, 219 | 'transitionIn' : 'none', 220 | 'transitionOut' : 'none', 221 | 'autoDimensions' : false, 222 | 'scrolling' : 'no', 223 | 'padding' :0, 224 | 'margin' :0, 225 | 'type' : 'ajax', 226 | 'overlayColor' : EM.Quickview.OVERLAYCOLOR 227 | 228 | }); 229 | 230 | 231 | 232 | 233 | } 234 | 235 | //end base function 236 | 237 | 238 | _qsJnit({ 239 | itemClass : '.products-grid li.item', //selector for each items in catalog product list,use to insert quickview image 240 | aClass : 'a.product-image', //selector for each a tag in product items,give us href for one product 241 | imgClass: '.product-image img' //class for quickview href product-collateral 242 | }); 243 | }); 244 | } 245 | if (v) { 246 | v.call(this) 247 | } 248 | }) 249 | } 250 | function e(w, x) { 251 | var v = []; 252 | b.get(w, null, function (y) { 253 | b(m.container, y).find(m.item).each(function () { 254 | v.push(this) 255 | }); 256 | if (x) { 257 | x.call(this, y, v) 258 | } 259 | }, "html") 260 | } 261 | 262 | function l(v) { 263 | curTreshold = p(true); 264 | if (curTreshold > 0) { 265 | t(curTreshold, function () { 266 | q(); 267 | if ((j.getCurPageNum(curTreshold) + 1) < v) { 268 | l(v); 269 | b("html,body").animate({scrollTop:curTreshold}, 400, "swing") 270 | } else { 271 | b("html,body").animate({scrollTop:curTreshold}, 1000, "swing"); 272 | s() 273 | } 274 | }) 275 | } 276 | } 277 | 278 | function u() { 279 | loader = b(".ajaxscroll_loader"); 280 | if (loader.size() == 0) { 281 | loader = b("
" + m.loader + "
"); 282 | loader.hide() 283 | } 284 | return loader 285 | } 286 | 287 | function o(v) { 288 | loader = u(); 289 | el = b(m.container).find(m.item).last(); 290 | el.after(loader); 291 | loader.fadeIn() 292 | } 293 | 294 | function k() { 295 | loader = u(); 296 | loader.remove(); 297 | } 298 | }; 299 | function a(c) { 300 | if (window.console && window.console.log) { 301 | window.console.log(c) 302 | } 303 | } 304 | 305 | b.ajaxscroll.defaults = {container:"#container", item:".item", pagination:"#pagination", next:".next", loader:'', tresholdMargin:'0', history:true, onPageChange:function () { 306 | }, onLoadItems:function () { 307 | }, onRenderComplete:function () { 308 | } }; 309 | b.ajaxscroll.util = function () { 310 | var d = false; 311 | var f = false; 312 | var c = this; 313 | e(); 314 | function e() { 315 | b(window).load(function () { 316 | d = true 317 | }) 318 | } 319 | 320 | this.forceScrollTop = function (g) { 321 | b("html,body").scrollTop(0); 322 | if (!f) { 323 | if (!d) { 324 | setTimeout(function () { 325 | c.forceScrollTop(g) 326 | }, 1) 327 | } else { 328 | g.call(); 329 | f = true 330 | } 331 | } 332 | } 333 | }; 334 | b.ajaxscroll.paging = function () { 335 | var e = [ 336 | [0, document.location.toString()] 337 | ]; 338 | var h = function () { 339 | }; 340 | var d = 1; 341 | j(); 342 | function j() { 343 | b(window).scroll(g) 344 | } 345 | 346 | function g() { 347 | scrTop = b(window).scrollTop(); 348 | wndHeight = b(window).height(); 349 | curScrOffset = scrTop + wndHeight; 350 | curPageNum = c(curScrOffset); 351 | curPagebreak = f(curScrOffset); 352 | if (d != curPageNum) { 353 | h.call(this, curPageNum, curPagebreak[0], curPagebreak[1]) 354 | } 355 | d = curPageNum 356 | } 357 | 358 | function c(k) { 359 | for (i = (e.length - 1); i > 0; i--) { 360 | if (k > e[i][0]) { 361 | return i + 1 362 | } 363 | } 364 | return 1 365 | } 366 | 367 | this.getCurPageNum = function (k) { 368 | return c(k) 369 | }; 370 | function f(k) { 371 | for (i = (e.length - 1); i >= 0; i--) { 372 | if (k > e[i][0]) { 373 | return e[i] 374 | } 375 | } 376 | return null 377 | } 378 | 379 | this.onChangePage = function (k) { 380 | h = k 381 | }; 382 | this.pushPages = function (k, l) { 383 | e.push([k, l]) 384 | } 385 | }; 386 | b.ajaxscroll.history = function () { 387 | var d = false; 388 | var c = false; 389 | e(); 390 | function e() { 391 | c = !!(window.history && history.pushState && history.replaceState); 392 | c = false 393 | } 394 | 395 | this.setPage = function (g, f) { 396 | this.updateState({page:g}, "", f) 397 | }; 398 | this.havePage = function () { 399 | return(this.getState() != false) 400 | }; 401 | this.getPage = function () { 402 | if (this.havePage()) { 403 | stateObj = this.getState(); 404 | return stateObj.page 405 | } 406 | return 1 407 | }; 408 | this.getState = function () { 409 | if (c) { 410 | stateObj = history.state; 411 | if (stateObj && stateObj.ajaxscroll) { 412 | return stateObj.ajaxscroll 413 | } 414 | } else { 415 | haveState = (window.location.hash.substring(0, 7) == "#/page/"); 416 | if (haveState) { 417 | pageNum = parseInt(window.location.hash.replace("#/page/", "")); 418 | return{page:pageNum} 419 | } 420 | } 421 | return false 422 | }; 423 | this.updateState = function (g, h, f) { 424 | if (d) { 425 | this.replaceState(g, h, f) 426 | } else { 427 | this.pushState(g, h, f) 428 | } 429 | }; 430 | this.pushState = function (g, h, f) { 431 | if (c) { 432 | history.pushState({ajaxscroll:g}, h, f) 433 | } else { 434 | hash = (g.page > 0 ? "#/page/" + g.page : ""); 435 | window.location.hash = hash 436 | } 437 | d = true 438 | }; 439 | this.replaceState = function (g, h, f) { 440 | if (c) { 441 | history.replaceState({ajaxscroll:g}, h, f) 442 | } else { 443 | this.pushState(g, h, f) 444 | } 445 | } 446 | } 447 | })(sh); -------------------------------------------------------------------------------- /view/frontend/web/js/ajaxscroll/jquery.ajaxscroll.minbk.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * Infinite Ajax Scroll, a jQuery plugin 3 | * Version v0.1.5 4 | * http://webcreate.nl/ 5 | * 6 | * Copyright (c) 2011 Jeroen Fiege 7 | * Licensed under the MIT License: 8 | * http://webcreate.nl/license 9 | */ 10 | (function (b) { 11 | 12 | b.ajaxscroll = function (d) { 13 | var m = b.extend({}, b.ajaxscroll.defaults, d); 14 | var c = new b.ajaxscroll.util(); 15 | var j = new b.ajaxscroll.paging(); 16 | var h = (m.history ? new b.ajaxscroll.history() : false); 17 | var f = this; 18 | r(); 19 | 20 | function r() { 21 | j.onChangePage(function (x, v, w) { 22 | if (h) { 23 | h.setPage(x, w) 24 | } 25 | m.onPageChange.call(this, x, w, v) 26 | }); 27 | s(); 28 | if (h && h.havePage()) { 29 | q(); 30 | pageNum = h.getPage(); 31 | c.forceScrollTop(function () { 32 | if (pageNum > 1) { 33 | l(pageNum); 34 | curTreshold = p(true); 35 | b("html,body").scrollTop(curTreshold) 36 | } else { 37 | s() 38 | } 39 | }) 40 | } 41 | return f 42 | } 43 | 44 | function s() { 45 | n(); 46 | b(window).scroll(g) 47 | } 48 | 49 | function g() { 50 | scrTop = b(window).scrollTop(); 51 | wndHeight = b(window).height(); 52 | curScrOffset = scrTop + wndHeight; 53 | if (curScrOffset >= p()) { 54 | t(curScrOffset) 55 | }else{ 56 | // alert(1) 57 | // alert(curScrOffset); 58 | // alert(p()); 59 | // alert(jQuery(window).height()); 60 | } 61 | } 62 | 63 | function q() { 64 | b(window).unbind("scroll", g) 65 | } 66 | 67 | function n() { 68 | b(m.pagination).hide() 69 | } 70 | 71 | function p(v) { 72 | 73 | el = b(m.container).find(m.item).last(); 74 | if (el.size() == 0) { 75 | return 0 76 | } 77 | 78 | treshold = el.offset().top + el.height(); 79 | 80 | if (!v) { 81 | treshold = treshold*1 + m.tresholdMargin*1; 82 | } 83 | 84 | return treshold 85 | } 86 | 87 | function t(w, v) { 88 | var kl = jQuery('.category-products '+m.item+' .product-image').length; 89 | urlNextPage = b(m.next).attr("href"); 90 | if (!urlNextPage) { 91 | return q() 92 | } 93 | j.pushPages(w, urlNextPage); 94 | q(); 95 | o(); 96 | e(urlNextPage, function (y, x) { 97 | result = m.onLoadItems.call(this, x); 98 | if (result !== false) { 99 | b(x).hide(); 100 | curLastItem = b(m.container).find(m.item).last(); 101 | curLastItem.after(x); 102 | b(x).fadeIn() 103 | } 104 | 105 | b(m.pagination).replaceWith(b(m.pagination, y)); 106 | var km = jQuery('.category-products '+m.item+' .product-image').length; 107 | k(); 108 | s(); 109 | ft=ft+1; 110 | 111 | jQuery(''+m.item+' li .product-image img').slice(kl).hide(); 112 | jQuery(''+m.item+' li .product-image').slice(kl).prepend(img); 113 | setTimeout(function() {jQuery('.scroll_loading').remove();}, 1500); 114 | setTimeout(function() { jQuery(''+m.item+' li .product-image img').slice(kl).show();}, 1600); 115 | m.onRenderComplete.call(this, x); 116 | if (v) { 117 | v.call(this) 118 | } 119 | }) 120 | } 121 | function e(w, x) { 122 | var v = []; 123 | b.get(w, null, function (y) { 124 | b(m.container, y).find(m.item).each(function () { 125 | v.push(this) 126 | }); 127 | if (x) { 128 | x.call(this, y, v) 129 | } 130 | }, "html") 131 | } 132 | 133 | function l(v) { 134 | curTreshold = p(true); 135 | if (curTreshold > 0) { 136 | t(curTreshold, function () { 137 | q(); 138 | if ((j.getCurPageNum(curTreshold) + 1) < v) { 139 | l(v); 140 | b("html,body").animate({scrollTop:curTreshold}, 400, "swing") 141 | } else { 142 | b("html,body").animate({scrollTop:curTreshold}, 1000, "swing"); 143 | s() 144 | } 145 | }) 146 | } 147 | } 148 | 149 | function u() { 150 | loader = b(".ajaxscroll_loader"); 151 | if (loader.size() == 0) { 152 | loader = b("
" + m.loader + "
"); 153 | loader.hide() 154 | } 155 | return loader 156 | } 157 | 158 | function o(v) { 159 | loader = u(); 160 | el = b(m.container).find(m.item).last(); 161 | el.after(loader); 162 | loader.fadeIn() 163 | } 164 | 165 | function k() { 166 | loader = u(); 167 | loader.remove(); 168 | } 169 | }; 170 | function a(c) { 171 | if (window.console && window.console.log) { 172 | window.console.log(c) 173 | } 174 | } 175 | 176 | b.ajaxscroll.defaults = {container:"#container", item:".item", pagination:"#pagination", next:".next", loader:'', tresholdMargin:'0', history:true, onPageChange:function () { 177 | }, onLoadItems:function () { 178 | }, onRenderComplete:function () { 179 | } }; 180 | b.ajaxscroll.util = function () { 181 | var d = false; 182 | var f = false; 183 | var c = this; 184 | e(); 185 | function e() { 186 | b(window).load(function () { 187 | d = true 188 | }) 189 | } 190 | 191 | this.forceScrollTop = function (g) { 192 | b("html,body").scrollTop(0); 193 | if (!f) { 194 | if (!d) { 195 | setTimeout(function () { 196 | c.forceScrollTop(g) 197 | }, 1) 198 | } else { 199 | g.call(); 200 | f = true 201 | } 202 | } 203 | } 204 | }; 205 | b.ajaxscroll.paging = function () { 206 | var e = [ 207 | [0, document.location.toString()] 208 | ]; 209 | var h = function () { 210 | }; 211 | var d = 1; 212 | j(); 213 | function j() { 214 | b(window).scroll(g) 215 | } 216 | 217 | function g() { 218 | scrTop = b(window).scrollTop(); 219 | wndHeight = b(window).height(); 220 | curScrOffset = scrTop + wndHeight; 221 | curPageNum = c(curScrOffset); 222 | curPagebreak = f(curScrOffset); 223 | if (d != curPageNum) { 224 | h.call(this, curPageNum, curPagebreak[0], curPagebreak[1]) 225 | } 226 | d = curPageNum 227 | } 228 | 229 | function c(k) { 230 | for (i = (e.length - 1); i > 0; i--) { 231 | if (k > e[i][0]) { 232 | return i + 1 233 | } 234 | } 235 | return 1 236 | } 237 | 238 | this.getCurPageNum = function (k) { 239 | return c(k) 240 | }; 241 | function f(k) { 242 | for (i = (e.length - 1); i >= 0; i--) { 243 | if (k > e[i][0]) { 244 | return e[i] 245 | } 246 | } 247 | return null 248 | } 249 | 250 | this.onChangePage = function (k) { 251 | h = k 252 | }; 253 | this.pushPages = function (k, l) { 254 | e.push([k, l]) 255 | } 256 | }; 257 | b.ajaxscroll.history = function () { 258 | var d = false; 259 | var c = false; 260 | e(); 261 | function e() { 262 | c = !!(window.history && history.pushState && history.replaceState); 263 | c = false 264 | } 265 | 266 | this.setPage = function (g, f) { 267 | this.updateState({page:g}, "", f) 268 | }; 269 | this.havePage = function () { 270 | return(this.getState() != false) 271 | }; 272 | this.getPage = function () { 273 | if (this.havePage()) { 274 | stateObj = this.getState(); 275 | return stateObj.page 276 | } 277 | return 1 278 | }; 279 | this.getState = function () { 280 | if (c) { 281 | stateObj = history.state; 282 | if (stateObj && stateObj.ajaxscroll) { 283 | return stateObj.ajaxscroll 284 | } 285 | } else { 286 | haveState = (window.location.hash.substring(0, 7) == "#/page/"); 287 | if (haveState) { 288 | pageNum = parseInt(window.location.hash.replace("#/page/", "")); 289 | return{page:pageNum} 290 | } 291 | } 292 | return false 293 | }; 294 | this.updateState = function (g, h, f) { 295 | if (d) { 296 | this.replaceState(g, h, f) 297 | } else { 298 | this.pushState(g, h, f) 299 | } 300 | }; 301 | this.pushState = function (g, h, f) { 302 | if (c) { 303 | history.pushState({ajaxscroll:g}, h, f) 304 | } else { 305 | hash = (g.page > 0 ? "#/page/" + g.page : ""); 306 | window.location.hash = hash 307 | } 308 | d = true 309 | }; 310 | this.replaceState = function (g, h, f) { 311 | if (c) { 312 | history.replaceState({ajaxscroll:g}, h, f) 313 | } else { 314 | this.pushState(g, h, f) 315 | } 316 | } 317 | } 318 | })(jQuery); -------------------------------------------------------------------------------- /view/frontend/web/js/ajaxscroll/jquery.ui.totop.js: -------------------------------------------------------------------------------- 1 | /* 2 | |-------------------------------------------------------------------------- 3 | | UItoTop sh Plugin 1.2 by Matt Varone 4 | | http://www.mattvarone.com/web-design/uitotop-sh-plugin/ 5 | |-------------------------------------------------------------------------- 6 | */ 7 | (function($){ 8 | $.fn.UItoTop = function(options) { 9 | 10 | var defaults = { 11 | text: 'To Top', 12 | min: 200, 13 | inDelay:600, 14 | outDelay:400, 15 | containerID: 'toTop', 16 | containerHoverID: 'toTopHover', 17 | scrollSpeed: 1200, 18 | easingType: 'linear' 19 | }, 20 | settings = $.extend(defaults, options), 21 | containerIDhash = '#' + settings.containerID, 22 | containerHoverIDHash = '#'+settings.containerHoverID; 23 | 24 | $('body').append(''+settings.text+''); 25 | $(containerIDhash).hide().on('click.UItoTop',function(){ 26 | $('html, body').animate({scrollTop:0}, settings.scrollSpeed, settings.easingType); 27 | $('#'+settings.containerHoverID, this).stop().animate({'opacity': 0 }, settings.inDelay, settings.easingType); 28 | return false; 29 | }) 30 | .prepend('') 31 | .hover(function() { 32 | $(containerHoverIDHash, this).stop().animate({ 33 | 'opacity': 1 34 | }, 600, 'linear'); 35 | }, function() { 36 | $(containerHoverIDHash, this).stop().animate({ 37 | 'opacity': 0 38 | }, 700, 'linear'); 39 | }); 40 | 41 | $(window).scroll(function() { 42 | var sd = $(window).scrollTop(); 43 | if(typeof document.body.style.maxHeight === "undefined") { 44 | $(containerIDhash).css({ 45 | 'position': 'absolute', 46 | 'top': sd + $(window).height() - 50 47 | }); 48 | } 49 | if ( sd > settings.min ) 50 | $(containerIDhash).fadeIn(settings.inDelay); 51 | else 52 | $(containerIDhash).fadeOut(settings.Outdelay); 53 | }); 54 | }; 55 | })(sh); -------------------------------------------------------------------------------- /view/frontend/web/js/ajaxscroll/jquery.ui.totop.min.js: -------------------------------------------------------------------------------- 1 | /* UItoTop jQuery Plugin 1.2 | Matt Varone | http://www.mattvarone.com/web-design/uitotop-jquery-plugin */ 2 | (function($){$.fn.UItoTop=function(options){var defaults={text:'To Top',min:200,inDelay:600,outDelay:400,containerID:'toTop',containerHoverID:'toTopHover',scrollSpeed:1200,easingType:'linear'},settings=$.extend(defaults,options),containerIDhash='#'+settings.containerID,containerHoverIDHash='#'+settings.containerHoverID;$('body').append(''+settings.text+'');$(containerIDhash).hide().on('click.UItoTop',function(){$('html, body').animate({scrollTop:0},settings.scrollSpeed,settings.easingType);$('#'+settings.containerHoverID,this).stop().animate({'opacity':0},settings.inDelay,settings.easingType);return false;}).prepend('').hover(function(){$(containerHoverIDHash,this).stop().animate({'opacity':1},600,'linear');},function(){$(containerHoverIDHash,this).stop().animate({'opacity':0},700,'linear');});$(window).scroll(function(){var sd=$(window).scrollTop();if(typeof document.body.style.maxHeight==="undefined"){$(containerIDhash).css({'position':'absolute','top':sd+$(window).height()-50});} 3 | if(sd>settings.min) 4 | $(containerIDhash).fadeIn(settings.inDelay);else 5 | $(containerIDhash).fadeOut(settings.Outdelay);});};})(jQuery); -------------------------------------------------------------------------------- /view/frontend/web/media/ajaxscroll/default/loader.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emizentech/magento2-infinite-ajax-scroll/d3398b98a7693bd65ec242ee1fef2dc9c78d266f/view/frontend/web/media/ajaxscroll/default/loader.gif -------------------------------------------------------------------------------- /view/frontend/web/media/ajaxscroll/default/loading_bar.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emizentech/magento2-infinite-ajax-scroll/d3398b98a7693bd65ec242ee1fef2dc9c78d266f/view/frontend/web/media/ajaxscroll/default/loading_bar.gif -------------------------------------------------------------------------------- /view/frontend/web/media/ajaxscroll/default/ui.totop.black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emizentech/magento2-infinite-ajax-scroll/d3398b98a7693bd65ec242ee1fef2dc9c78d266f/view/frontend/web/media/ajaxscroll/default/ui.totop.black.png -------------------------------------------------------------------------------- /view/frontend/web/media/ajaxscroll/default/ui.totop.blue.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emizentech/magento2-infinite-ajax-scroll/d3398b98a7693bd65ec242ee1fef2dc9c78d266f/view/frontend/web/media/ajaxscroll/default/ui.totop.blue.png -------------------------------------------------------------------------------- /view/frontend/web/media/ajaxscroll/default/ui.totop.white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emizentech/magento2-infinite-ajax-scroll/d3398b98a7693bd65ec242ee1fef2dc9c78d266f/view/frontend/web/media/ajaxscroll/default/ui.totop.white.png --------------------------------------------------------------------------------