Software: Apache. PHP/5.6.40-67+ubuntu20.04.1+deb.sury.org+1 uname -a: Linux hosting1.erectacloud.it 5.4.0-182-generic #202-Ubuntu SMP Fri Apr 26 12:29:36 UTC uid=5229(web473) gid=5117(client172) groups=5117(client172),5002(sshusers) Safe-mode: OFF (not secure) /var/www/clients/client172/web473/web/OLD_WP/wp-content/plugins/gallery-images/assets/js/ drwxr-xr-x |
Viewing file: elastic_grid.js (33.63 KB) -rw-r--r-- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) | /* * This is a fork of jQuery Elastic Grid library which is licensed under the MIT license * * latest version and complete README available on Github: * https://github.com/louisremi/jquery-smartresize/blob/master/jquery.debouncedresize.js */ var $event = jQuery.event, $special, resizeTimeout; $special = $event.special.debouncedresize = { setup: function() { jQuery( this ).on( "resize", $special.handler ); }, teardown: function() { jQuery( this ).off( "resize", $special.handler ); }, handler: function( event, execAsap ) { var previewWrapperWidth = jQuery('.og-fullimg').width(); jQuery('.og-fullimg').find('iframe:first').height(previewWrapperWidth*9/16); // Save the context /*var context = this, args = arguments, dispatch = function() { // set correct event type event.type = "debouncedresize"; $event.dispatch.apply( context, args ); }; if ( resizeTimeout ) { clearTimeout( resizeTimeout ); } execAsap ? dispatch() : resizeTimeout = setTimeout( dispatch, $special.threshold );*/ jQuery('.og-expander').height('auto'); var ogExpanderHeight = jQuery('.og-expander').height(); var elementHeight = jQuery('.og-expanded').find('a:first').height(); var bigElementHeigh = ogExpanderHeight + elementHeight + parseInt(elements_margin); jQuery('.og-expanded').height(bigElementHeigh); }, threshold: 250 }; // ======================= imagesLoaded Plugin =============================== // https://github.com/desandro/$ // jQuery('#my-container').imagesLoaded(myFunction) // execute a callback when all images have loaded. // needed because .load() doesn't work on cached images // callback function gets image collection as argument // this is the container // original: MIT license. Paul Irish. 2010. // contributors: Oren Solomianik, David DeSandro, Yiannis Chatzikonstantinou // blank image data-uri bypasses webkit log warning (thx doug jones) var BLANK = 'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///ywAAAAAAQABAAACAUwAOw=='; jQuery.fn.imagesLoaded = function( callback ) { var $this = this, deferred = jQuery.isFunction(jQuery.Deferred) ? jQuery.Deferred() : 0, hasNotify = jQuery.isFunction(deferred.notify), $images = $this.find('img').add( $this.filter('img') ), loaded = [], proper = [], broken = []; // Register deferred callbacks if (jQuery.isPlainObject(callback)) { jQuery.each(callback, function (key, value) { if (key === 'callback') { callback = value; } else if (deferred) { deferred[key](value); } }); } function doneLoading() { var $proper = jQuery(proper), $broken = jQuery(broken); if ( deferred ) { if ( broken.length ) { deferred.reject( $images, $proper, $broken ); } else { deferred.resolve( $images ); } } if ( jQuery.isFunction( callback ) ) { callback.call( $this, $images, $proper, $broken ); } } function imgLoaded( img, isBroken ) { // don't proceed if BLANK image, or image is already loaded if ( img.src === BLANK || jQuery.inArray( img, loaded ) !== -1 ) { return; } // store element in loaded images array loaded.push( img ); // keep track of broken and properly loaded images if ( isBroken ) { broken.push( img ); } else { proper.push( img ); } // cache image and its state for future calls jQuery.data( img, 'imagesLoaded', { isBroken: isBroken, src: img.src } ); // trigger deferred progress method if present if ( hasNotify ) { deferred.notifyWith( jQuery(img), [ isBroken, $images, jQuery(proper), jQuery(broken) ] ); } // call doneLoading and clean listeners if all images are loaded if ( $images.length === loaded.length ){ setTimeout( doneLoading ); $images.unbind( '.imagesLoaded' ); } } // if no images, trigger immediately if ( !$images.length ) { doneLoading(); } else { $images.bind( 'load.imagesLoaded error.imagesLoaded', function( event ){ // trigger imgLoaded imgLoaded( event.target, event.type === 'error' ); }).each( function( i, el ) { var src = el.src; // find out if this image has been already checked for status // if it was, and src has not changed, call imgLoaded on it var cached = jQuery.data( el, 'imagesLoaded' ); if ( cached && cached.src === src ) { imgLoaded( el, cached.isBroken ); return; } // if complete is true and browser supports natural sizes, try // to check for image status manually if ( el.complete && el.naturalWidth !== undefined ) { imgLoaded( el, el.naturalWidth === 0 || el.naturalHeight === 0 ); return; } // cached images don't fire load sometimes, so we reset src, but only when // dealing with IE, or image is complete (loaded) and failed manual check // webkit hack from http://groups.google.com/group/jquery-dev/browse_thread/thread/eee6ab7b2da50e1f if ( el.readyState || el.complete ) { el.src = BLANK; el.src = src; } }); } return deferred ? deferred.promise( $this ) : $this; }; /** * jquery elastic_grid * * Copyright 2013, vukhanhtruong * http://www.bonchen.net */ jQuery(function() { jQuery.elastic_grid = { version: '1.0' }; jQuery.fn.elastic_grid = function(config){ config = jQuery.extend({}, { items: null, filterEffect: '', hoverDirection: true, hoverDelay: 0, hoverInverse: false, expandingHeight: 500, expandingSpeed: 300, callback: function() {} }, config); // initial container object var container = jQuery(this); // number of questions var numOfItems = config.items.length; if(numOfItems == 0){ return false; } //initial filter nav container.html('<div class="wagwep-container"><nav id="porfolio-nav" class="clearfix"><ul id="portfolio-filter" class="nav nav-tabs clearfix"></ul></nav></div>'); //initial items var gridContent = ""; var ulObject = jQuery('<ul id="og-grid" class="og-grid"></ul>'); for (itemIdx = 0; itemIdx < numOfItems; itemIdx++) { if(config.items[itemIdx] != undefined){ var item = config.items[itemIdx]; //initial new li liObject = jQuery('<li></li>'); //get tags tags = item.tags; strTag = ""; for (var i = tags.length - 1; i >= 0; i--) { strTag += ","+tags[i]; }; strTag = strTag.substring(1); liObject.attr('data-tags', strTag); //initial a object aObject = jQuery('<a></a>'); aObject.attr('href', 'javascript:;;'); //initial default photo imgObject = jQuery('<img/>'); imgObject.attr('src', item.thumbnail[0]); if(galleryImgYoutubeParser(item.large[0]) == false) { imgObject.attr('data-largesrc', item.large[0]); } else{ imgObject.attr('data-video', item.large[0]); } //initial hover direction spanObject = jQuery('<span></span>'); spanObject.html(item.title.replace(/__5_5_5__/g,'%')); figureObject = jQuery('<figure></figure>'); figureObject.append(spanObject); imgObject.appendTo(aObject); figureObject.appendTo(aObject); aObject.appendTo(liObject); liObject.appendTo(ulObject); } } if(config.filterEffect == ''){ config.filterEffect = 'moveup'; } ulObject.addClass('effect-'+config.filterEffect); ulObject.appendTo(container); /************************************************************************** * HOVER DIR ***************************************************************************/ if(config.hoverDirection == true){ ulObject.find('li').each( function() { jQuery(this).hoverdir({ hoverDelay : config.hoverDelay, inverse : config.hoverInverse }); } ); } /************************************************************************** * Tags to filter ***************************************************************************/ var porfolio_filter = container.find('#portfolio-filter'); var items = ulObject.find('li'), itemsByTags = {}; numOfTag = 0; // Looping though all the li items: items.each(function(i){ var elem = jQuery(this), tags = elem.data('tags').split(','); // Adding a data-id attribute. Required by the Quicksand plugin: elem.attr('data-id',i); elem.addClass('all'); jQuery.each(tags,function(key,value){ // Removing extra whitespace: value = jQuery.trim(value); //add class tags to li elem.addClass(value.toLowerCase().replace(' ','-')); if(!(value in itemsByTags)){ // Create an empty array to hold this item: itemsByTags[value] = []; numOfTag++; } // Each item is added to one array per tag: itemsByTags[value].push(elem); }); }); if(numOfTag > 1){ // Creating the "Everything" option in the menu: if(show_filter_all_text == 'on' || config.showAllText) { createList(config.showAllText); } // Looping though the arrays in itemsByTags: jQuery.each(itemsByTags,function(k,v){ createList(k); }); }else{ porfolio_filter.remove(); } porfolio_filter.find('a').bind('click',function(e){ //close expanding preview $grid.find('li.og-expanded').find('a').trigger('click'); $grid.find('.og-close').trigger('click'); $this = jQuery(this); $this.css('outline','none'); porfolio_filter.find('.current').removeClass('current'); $this.parent().addClass('current'); //var filterVal = $this.text().toLowerCase().replace(' ','-'); var filterVal = $this.attr('data-filter').slice(1); var count = numOfItems; ulObject.find('li').each( function(i, el) { classie.remove( el, 'hidden' ); classie.remove( el, 'animate' ); if(!--count){ setTimeout( function() { doAnimateItems(ulObject.find('li'), filterVal); }, 1); } }); return false; }); function doAnimateItems(objectLi, filterVal){ objectLi.each(function(i, el) { if(classie.has( el, filterVal ) ) { classie.toggle( el, 'animate' ); classie.remove( el, 'hidden' ); }else{ classie.add( el, 'hidden' ); classie.remove( el, 'animate' ); } }); } porfolio_filter.find('li:first').addClass('current'); function createList(text){ var filter = text.toLowerCase().replace(' ','-'); // This is a helper function that takes the // text of a menu button and array of li items if(text != ''){ text = text.replace(/_/g,' '); var li = jQuery('<li>'); var a = jQuery('<a>',{ html: text, 'data-filter': '.'+filter, href:'#', 'class':'filter', }).appendTo(li); li.appendTo(porfolio_filter); } } /************************************************************************** * EXPANDING ***************************************************************************/ // list of items var $grid = ulObject, // the items $items = $grid.children( 'li' ), // current expanded item's index current = -1, // position (top) of the expanded item // used to know if the preview will expand in a different row previewPos = -1, // extra amount of pixels to scroll the window scrollExtra = 0, // extra margin when expanded (between preview overlay and the next items) marginExpanded = 10, $window = jQuery( window ), winsize, $body = jQuery( 'html, body' ), // transitionend events transEndEventNames = { 'WebkitTransition' : 'webkitTransitionEnd', 'MozTransition' : 'transitionend', 'OTransition' : 'oTransitionEnd', 'msTransition' : 'MSTransitionEnd', 'transition' : 'transitionend' }, transEndEventName = transEndEventNames[ Modernizr.prefixed( 'transition' ) ], // support for csstransitions support = Modernizr.csstransitions, // default settings settings = { minHeight : config.expandingHeight, speed : config.expandingSpeed, easing : 'ease' }; // add more items to the grid. // the new items need to appended to the grid. // after that call Grid.addItems(theItems); function addItems( $newitems ) { $items = $items.add( $newitems ); $newitems.each( function() { var $item = jQuery( this ); $item.data( { offsetTop : $item.offset().top, height : $item.height() } ); } ); initItemsEvents( $newitems ); } // saves the item´s offset top and height (if saveheight is true) function saveItemInfo( saveheight ) { $items.each( function() { var $item = jQuery( this ); $item.data( 'offsetTop', $item.offset().top ); if( saveheight ) { $item.data( 'height', $item.height() ); } } ); } function initEvents() { // when clicking an item, show the preview with the item´s info and large image. // close the item if already expanded. // also close if clicking on the item´s cross initItemsEvents( $items ); // on window resize get the window´s size again // reset some values.. $window.on( 'debouncedresize', function() { scrollExtra = 0; previewPos = -1; // save item´s offset saveItemInfo(); getWinSize(); var preview = jQuery.data( this, 'preview' ); if( typeof preview != 'undefined' ) { hidePreview(); } } ); } function initItemsEvents( $items ) { $items.on( 'click', 'span.og-close', function() { hidePreview(); return false; } ).children( 'a' ).on( 'click', function(e) { var $item = jQuery( this ).parent(); //jQuery(this).addClass('unhoverdir'); //remove animate class $item.removeClass('animate'); // check if item already opened current === $item.index() ? hidePreview(jQuery(this)) : showPreview( $item ); return false; } ); } function getWinSize() { winsize = { width : $window.width(), height : $window.height() }; } function showPreview( $item ) { hidePreview(); var preview = jQuery.data( this, 'preview' ), // item´s offset top position = $item.data( 'offsetTop' ); scrollExtra = 0; // if a preview exists and previewPos is different (different row) from item´s top then close it if( typeof preview != 'undefined' ) { // not in the same row if( previewPos !== position ) { // if position > previewPos then we need to take te current preview´s height in consideration when scrolling the window if( position > previewPos ) { scrollExtra = preview.height; } hidePreview(); } // same row else { preview.update( $item ); return false; } } // update previewPos previewPos = position; // initialize new preview for the clicked item preview = jQuery.data( this, 'preview', new Preview( $item ) ); // expand preview overlay preview.open(); } function hidePreview() { //hide pointer $items.find('.og-pointer').remove(); current = -1; var preview = jQuery.data( this, 'preview' ); if(typeof preview == "undefined"){ //do nothing }else{ preview.close(); } jQuery.removeData( this, 'preview' ); } // the preview obj / overlay function Preview( $item ) { this.$item = $item; this.expandedIdx = this.$item.index(); this.create(); this.update(); } Preview.prototype = { create : function() { // create Preview structure: this.$title = jQuery( '<h3></h3>' ); this.$description = jQuery( '<p></p>' ); this.$href = jQuery( '<a href="#">Visit website</a>' ); this.$detailButtonList = jQuery( '<span class="buttons-list"></span>' ); this.$details = jQuery( '<div class="og-details"></div>' ).append( this.$title, this.$description, this.$detailButtonList ); this.$loading = jQuery( '<div class="og-loading"></div>' ); this.$fullimage = jQuery( '<div class="og-fullimg"></div>' ).append( this.$loading ); this.$closePreview = jQuery( '<span class="og-close"></span>' ); this.$previewInner = jQuery( '<div class="og-expander-inner"></div>' ).append( this.$closePreview, this.$fullimage, this.$details ); this.$previewEl = jQuery( '<div class="og-expander"></div>' ).append( this.$previewInner ); // append preview element to the item this.$item.append( jQuery('<div class="og-pointer"></div>') ); this.$item.append( this.getEl() ); // set the transitions for the preview and the item if( support ) { this.setTransition(); } }, update : function( $item ) { if( $item ) { this.$item = $item; } // if already expanded remove class "og-expanded" from current item and add it to new item if( current !== -1 ) { var $currentItem = $items.eq( current ); $currentItem.removeClass( 'og-expanded' ); this.$item.addClass( 'og-expanded' ); // position the preview correctly this.positionPreview(); } // update current value current = this.$item.index(); // update preview´s content if(typeof config.items[current] === "undefined"){ //nothing happen }else{ eldata = config.items[current]; this.$title.html( eldata.title.replace(/__5_5_5__/g,'%') ); this.$description.html( eldata.description.replace(/__5_5_5__/g,'%') ); //clear current button list this.$detailButtonList.html(""); urlList = eldata.button_list; if(urlList.length > 0) { for (i = 0; i < urlList.length; i++) { var linkTarget = (urlList[i]['new_window']) ? '_blank' : '_self'; var ObjA = jQuery('<a target="'+linkTarget+'"></a>'); ObjA.addClass('link-button'); if(i==0){ ObjA.addClass('first'); } ObjA.attr("href", urlList[i]['url']); ObjA.html( urlList[i]['title']); if((urlList[i]['url'])) { this.$detailButtonList.append(ObjA); } } } var self = this; // remove the current image in the preview if( typeof self.$largeImg != 'undefined' ) { self.$largeImg.remove(); } //relate photo glarge = eldata.large; gthumbs = eldata.thumbnail; if(glarge.length == gthumbs.length && glarge.length > 0){ var ObjUl = jQuery('<ul></ul>'); for (i = 0; i < gthumbs.length; i++) { var Objli = jQuery('<li></li>'); var ObjA = jQuery('<a href="javascript:;;"></a>'); var ObjImg = jQuery('<img/>'); ObjImg.addClass('related_photo'); if(i==0){ ObjImg.addClass('selected'); } ObjImg.attr("src", gthumbs[i]); if(galleryImgYoutubeParser(glarge[i]) == false) { ObjImg.attr("data-large", glarge[i]); } else{ ObjImg.attr("data-video", glarge[i]); } ObjA.append(ObjImg); Objli.append(ObjA); ObjUl.append(Objli); } //On thumbnail click counting expanded element block height, which is sum of element height and expanded block height function resizeExpander(){ self.$fullimage.parents('.og-expander').height('auto'); var ogExpanderHeight = self.$fullimage.parents('.og-expander').height(); var elementHeight = self.$fullimage.parents('.og-expanded').find('a:first').height(); var bigElementHeigh = ogExpanderHeight + elementHeight + parseInt(elements_margin); self.$fullimage.parents('.og-expanded').height(bigElementHeigh); } // ObjUl.addClass("og-grid-small"); ObjUl.addClass("elastislide-list"); ObjUl.elastislide(); var carousel = jQuery('<div class="elastislide-wrapper elastislide-horizontal"></div>'); self.$details.append('<div class="infosep"></div>'); //self.$details.append(carousel); }else{ self.$details.find('.infosep, .og-grid-small').remove(); } // preload large image and add it to the preview // for smaller screens we don´t display the large image (the media query will hide the fullimage wrapper) self.setInitialHeights(); self.$loading.show(); if( self.$fullimage.is( ':visible' ) ) { jQuery( '<img/>' ).load( function() { var $img = jQuery( this ); if( $img.attr( 'src' ) === self.$item.children('a').find('img').data( 'largesrc' ) ) { self.$loading.hide(); self.$fullimage.find( 'img' ).remove(); self.$largeImg = $img.fadeIn( 350 ); self.$fullimage.append( self.$largeImg ); if(galleryImgDisableRightClickElastic == 'on') { self.$largeImg.bind('contextmenu', function () { return false; }); } } self.setHeights(); } ).attr( 'src', eldata.large[0] ); } if( self.$item.children('a').find('img').data( 'video' )) { self.$loading.show(); var iframeSrc = self.$item.children('a').find('img').data( 'video' ); var iframe = jQuery('<iframe allowfullscreen>').attr( 'src', iframeSrc); self.$fullimage.find( 'img' ).remove(); self.$largeImg = iframe.fadeIn( 350 ); self.$fullimage.append( iframe ); self.$fullimage.find('iframe').on('load',function(){ self.$loading.hide(); }); self.setHeights(); var previewWrapperWidth = self.$fullimage.width(); self.$fullimage.find('iframe:first').height(previewWrapperWidth*9/16); } } }, open : function() { //this.setHeights(); }, close : function() { var self = this, onEndFn = function() { if( support ) { jQuery( this ).off( transEndEventName ); } self.$item.removeClass( 'og-expanded' ); self.$previewEl.remove(); }; setTimeout( jQuery.proxy( function() { if( typeof this.$largeImg !== 'undefined' ) { this.$largeImg.fadeOut( 'fast' ); } this.$previewEl.css( 'height', 0 ); // the current expanded item (might be different from this.$item) var $expandedItem = $items.eq( this.expandedIdx ); $expandedItem.css( 'height', $expandedItem.data( 'height' ) ).on( transEndEventName, onEndFn ); if( !support ) { onEndFn.call(); } }, this ), 25 ); return false; }, calcHeight : function() { var heightPreview = winsize.height - this.$item.data( 'height' ) - marginExpanded, itemHeight = winsize.height; if( heightPreview < settings.minHeight ) { heightPreview = settings.minHeight; itemHeight = settings.minHeight + this.$item.data( 'height' ) + marginExpanded; } this.height = heightPreview; this.itemHeight = itemHeight; }, setHeights : function() { var self = this, onEndFn = function() { if( support ) { self.$item.off( transEndEventName ); } self.$item.addClass( 'og-expanded' ); self.$fullimage.find('img').css('width','100%'); }; this.calcHeight(); var detailsHeight = self.$previewEl.find('.og-details').outerHeight(); var imgRatio = self.$fullimage.find('img').prop('naturalHeight')/self.$fullimage.find('img').prop('naturalWidth'); var imgHeight = ( self.$fullimage.find('img').length )?self.$fullimage.width()*imgRatio:self.$fullimage.find('iframe').width()*9/16; var blockHeight = Math.max(detailsHeight,imgHeight); if(jQuery(window).width() > 767){ self.$previewEl.css( 'height', blockHeight+60); self.itemHeight = self.$item.data( 'height' ) + blockHeight + 90; } else{ self.$previewEl.css( 'height', detailsHeight+imgHeight+60); self.itemHeight = self.$item.data( 'height' ) + detailsHeight+imgHeight + 90; } self.$item.css( 'height', self.itemHeight ).on( transEndEventName, onEndFn ); if( !support ) { onEndFn.call(); } }, setInitialHeights : function() { var self = this, onEndFn = function() { if( support ) { self.$item.off( transEndEventName ); } self.$item.addClass( 'og-expanded' ); }; self.$previewEl.css( 'height', config.expandingHeight); self.positionPreview(); self.itemHeight = self.$item.data( 'height' ) + config.expandingHeight + parseInt(elements_margin); self.$item.css( 'height', self.itemHeight ).on( transEndEventName, onEndFn ); if( !support ) { onEndFn.call(); } }, positionPreview : function() { // scroll page // case 1 : preview height + item height fits in window´s height // case 2 : preview height + item height does not fit in window´s height and preview height is smaller than window´s height // case 3 : preview height + item height does not fit in window´s height and preview height is bigger than window´s height var position = this.$item.data( 'offsetTop' ), previewOffsetT = this.$previewEl.offset().top - scrollExtra, //scrollVal = this.height + this.$item.data( 'height' ) + marginExpanded <= winsize.height ? position : this.height < winsize.height ? previewOffsetT - ( winsize.height - this.height ) : previewOffsetT; scrollVal = this.$previewEl.height() + this.$item.data( 'height' ) + marginExpanded <= winsize.height ? position : this.height < winsize.height ? previewOffsetT - ( winsize.height - this.height ) : previewOffsetT; $body.animate( { scrollTop : scrollVal }, settings.speed ); }, setTransition : function() { this.$previewEl.css( 'transition', 'height ' + settings.speed + 'ms ' + settings.easing ); this.$item.css( 'transition', 'height ' + settings.speed + 'ms ' + settings.easing ); }, getEl : function() { return this.$previewEl; } } // return { // init : init, // addItems : addItems // }; $grid.imagesLoaded( function() { // save item´s size and offset saveItemInfo( true ); // get window´s size getWinSize(); // initialize some events initEvents(); } ); } jQuery(window).trigger('elastic-grid:ready'); }) function galleryImgYoutubeParser(url) { var regExp = /^.*((youtu.be\/)|(v\/)|(\/u\/\w\/)|(embed\/)|(watch\?))\??v?=?([^#\&\?]*).*/; var match = url.match(regExp); var match_vimeo = /vimeo.*\/(\d+)/i.exec(url); if (match && match[7].length == 11) { return match[7]; } else if (match_vimeo) { return match_vimeo[1]; } else { return false; } } |
:: Command execute :: | |
--[ c99shell v.2.1 [PHP 7 Update] [1.12.2019] maintained by KaizenLouie and updated by cermmik | C99Shell Github (MySQL update) | Generation time: 0.0084 ]-- |