1( function( $ ) { 2 $.fn.DiviTestimonialExtendedPagination = function( $options = {} ) { 3 let $defaults = { 4 paginationClass: 'el_md_testimonial_pagination', 5 hideOnlyOnePage: true, 6 totalPages: 1, 7 visiblePages: 10, 8 startPage: 1, 9 initiateStartPageClick: false, 10 first: false, 11 last: false, 12 prev: false, 13 next: false, 14 }, 15 $pagination = this; 16 17 $options = $.extend({}, $defaults, $options); 18 $pagination.twbsPagination($options); 19 } 20} ( jQuery ) ); 21 22jQuery(document).ready( function($) { 23 if ( $('body').find( '.el_md_testimonial_extended' ).length > 0 ) { 24 $( '.el_md_testimonial_extended' ).each( function() { 25 let $this = $(this); 26 dte_init_testimonial_slider( $this ); 27 dte_init_testimonial_grid( $this ); 28 } ); 29 } 30} ); 31 32/** 33 * Init the slider for testimonial. 34 */ 35function dte_init_testimonial_slider( $wrapObj ) { 36 if ( $wrapObj.find( '.swiper-container' ).length < 1 || $wrapObj.find( '.swiper-slide' ).length < 1 ) { 37 return; 38 } 39 40 let $orderClass = $wrapObj.prop('class').match(/(el_md_testimonial_extended\_[^\s]*)/)[0], 41 $orderNumber = $orderClass.replace( 'el_md_testimonial_extended_', '' ), 42 43 $slidesPerGroup = 1, 44 $slidesPerGroupIpad = 1, 45 $slidesPerGroupMobile = 1, 46 $slidesPerGroupSkip = 0, 47 $slidesPerGroupSkipIpad = 0, 48 $slidesPerGroupSkipMobile = 0, 49 $testimonials_per_view = 1, 50 $testimonials_per_view_ipad = 1, 51 $testimonials_per_view_mobile = 1, 52 $testimonials_space_between = 0, 53 $testimonials_space_between_ipad = 0, 54 $testimonials_space_between_mobile = 0; 55 56 const dataObj = $wrapObj.find( '.el-testimonial-layout' ); 57 let settings = { 58 'slide_effect' : dataObj.attr( 'data-slide_effect' ), 59 'show_arrow' : dataObj.attr( 'data-show_arrow' ), 60 'show_control' : dataObj.attr( 'data-show_control' ), 61 'loop' : dataObj.attr( 'data-loop' ), 62 'autoplay' : dataObj.attr( 'data-autoplay' ), 63 'autoplay_speed' : dataObj.attr( 'data-autoplay_speed' ), 64 'transition_duration' : dataObj.attr( 'data-transition_duration' ), 65 'pause_on_hover' : dataObj.attr( 'data-pause_on_hover' ), 66 'auto_height_slider' : dataObj.attr( 'data-auto_height_slider' ), 67 'enable_coverflow_shadow' : dataObj.attr( 'data-enable_coverflow_shadow' ), 68 'coverflow_rotate' : dataObj.attr( 'data-coverflow_rotate' ), 69 'coverflow_depth' : dataObj.attr( 'data-coverflow_depth' ), 70 'dynamic_bullets' : dataObj.attr( 'data-dynamic_bullets' ), 71 'per_view' : dataObj.attr( 'data-per_view' ), 72 'per_view_tablet' : dataObj.attr( 'data-per_view_tablet' ), 73 'per_view_phone' : dataObj.attr( 'data-per_view_phone' ), 74 'per_group' : dataObj.attr( 'data-per_group' ), 75 'per_group_tablet' : dataObj.attr( 'data-per_group_tablet' ), 76 'per_group_phone' : dataObj.attr( 'data-per_group_phone' ), 77 'space_between_slides' : dataObj.attr( 'data-space_between_slides' ), 78 'space_between_slides_tablet' : dataObj.attr( 'data-space_between_slides_tablet' ), 79 'space_between_slides_phone' : dataObj.attr( 'data-space_between_slides_phone' ), 80 }; 81 82 let slideEffect = ( settings.slide_effect ) ?? 'slide'; 83 if ( 'slide' === slideEffect || 'coverflow' === slideEffect ) { 84 85 $testimonials_per_view = ( settings?.per_view ) ? settings.per_view : '1'; 86 $testimonials_per_view_ipad = ( settings?.per_view_tablet ) ? settings.per_view_tablet : $testimonials_per_view; 87 $testimonials_per_view_mobile = ( settings?.per_view_phone ) ? settings.per_view_phone : $testimonials_per_view_ipad; 88 89 $testimonials_space_between = ( settings?.space_between_slides ) ? settings.space_between_slides : '20px'; 90 $testimonials_space_between_ipad = ( settings?.space_between_slides_tablet ) ? settings.space_between_slides_tablet : $testimonials_space_between; 91 $testimonials_space_between_mobile = ( settings?.space_between_slides_phone ) ? settings.space_between_slides_phone : $testimonials_space_between_ipad; 92 93 $slidesPerGroup = ( settings?.per_group ) ? settings.per_group : '1'; 94 $slidesPerGroupIpad = ( settings?.per_group_tablet ) ? settings.per_group_tablet : $slidesPerGroup; 95 $slidesPerGroupMobile = ( settings?.per_group_phone ) ? settings.per_group_phone : $slidesPerGroupIpad; 96 97 if ( $testimonials_per_view > $slidesPerGroup && 1 !== $slidesPerGroup ) { 98 $slidesPerGroupSkip = parseInt( $testimonials_per_view ) - parseInt( $slidesPerGroup ); 99 } 100 if ( $testimonials_per_view_ipad > $slidesPerGroupIpad && 1 !== $slidesPerGroupIpad ) { 101 $slidesPerGroupSkipIpad = parseInt( $testimonials_per_view_ipad ) - parseInt( $slidesPerGroupIpad ); 102 } 103 if ( $testimonials_per_view_mobile > $slidesPerGroupMobile && 1 !== $slidesPerGroupMobile ) { 104 $slidesPerGroupSkipMobile = parseInt( $testimonials_per_view_mobile ) - parseInt( $slidesPerGroupMobile ); 105 } 106 } 107 108 let autoplay_speed = ( settings?.autoplay_speed ) ?? 3000, 109 pause_on_hover = ( settings?.pause_on_hover ) ?? 'on', 110 transition_duration = ( settings?.transition_duration ) ?? 1000, 111 loop_param = ( 'on' === settings?.loop ) ? true : false, 112 dynamic_bullets = ( 'on' === settings?.dynamic_bullets ) ? true : false;
113 114 let $show_arrow = 'false'; 115 if ( 'on' === settings?.show_arrow ) { 116 $show_arrow = { 117 nextEl: '.' + $orderClass + ' .swiper-button-next.arrow-' + $orderNumber, 118 prevEl: '.' + $orderClass + ' .swiper-button-prev.arrow-' + $orderNumber, 119 }; 120 } 121 122 let $show_control = false; 123 if ( 'on' === settings?.show_control ) { 124 $show_control = { 125 el: '.' + $orderClass + ' .swiper-pagination.paged-' + $orderNumber, 126 dynamicBullets: dynamic_bullets, 127 clickable: true, 128 } 129 } 130 let $autoplay_param = 0; 131 if ( 'on' === settings?.autoplay ) { 132 $autoplay_param = { 133 delay: parseInt( autoplay_speed ), 134 disableOnInteraction: ( 'on' === pause_on_hover ) ? true : false, 135 }; 136 } 137 let $slide_setting_cube = false; 138 if ( 'cube' === slideEffect ) { 139 $slide_setting_cube = { 140 shadow: false, 141 slideShadows: false, 142 }; 143 } 144 let $slide_setting_coverflow = false; 145 if ( 'coverflow' === slideEffect ) { 146 $slide_setting_coverflow = { 147 rotate: ( settings?.coverflow_rotate ) ?? 40, 148 stretch: 0, 149 depth: ( settings?.coverflow_depth ) ?? 100, 150 modifier: 1, 151 slideShadows : ( settings?.enable_coverflow_shadow ) ?? false, 152 }; 153 loop_param = true; 154 } 155 156 let $fade = false;
157 if ( 'fade' === slideEffect ) { 158 $fade = { crossFade: true }; 159 } 160 161 // if ( $wrapObj.hasClass( 'dte-slider-initialized' ) ) { 162 // jQuery( '.' + $orderClass + ' .swiper-container' ).destroy(); 163 // $wrapObj.removeClass( 'dte-slider-initialized' ); 164 // } 165 166 // Remove the pagination clases. 167 if ( $wrapObj.find( '.swiper-pagination' ).hasClass( 'swiper-pagination-bullets-dynamic' ) ) { 168 $wrapObj.find( '.swiper-pagination' ).removeClass( 'swiper-pagination-bullets-dynamic' ).css( 'width', 'auto' ); 169 } 170 171 var sliderInstance = document.querySelector( '.' + $orderClass + ' .swiper-container' ).swiper; 172 if ( sliderInstance ) { 173 sliderInstance.destroy(); 174 } 175 176 var swipperSlider = new Swiper( '.' + $orderClass + ' .swiper-container', { 177 slidesPerView: parseInt( $testimonials_per_view ), 178 autoplay: $autoplay_param, 179 spaceBetween: parseInt( $testimonials_space_between ), 180 slidesPerGroup: parseInt( $slidesPerGroup ), 181 slidesPerGroupSkip: parseInt( $slidesPerGroupSkip ), 182 effect: slideEffect, 183 cubeEffect: $slide_setting_cube, 184 coverflowEffect: $slide_setting_coverflow, 185 fadeEffect: $fade, 186 autoHeight: ( 'on' === settings?.auto_height_slider ) ? true : false, 187 speed: parseInt( transition_duration ), 188 loop: loop_param, 189 pagination: $show_control, 190 navigation: $show_arrow, 191 grabCursor: true, 192 breakpoints: { 193 1080: { 194 slidesPerView: parseInt( $testimonials_per_view ), 195 spaceBetween: parseInt( $testimonials_space_between ), 196 slidesPerGroup: parseInt( $slidesPerGroup ), 197 slidesPerGroupSkip: parseInt( $slidesPerGroupSkip ), 198 }, 199 767: { 200 slidesPerView: parseInt( $testimonials_per_view_ipad ), 201 spaceBetween: parseInt( $testimonials_space_between_ipad ), 202 slidesPerGroup: parseInt( $slidesPerGroupIpad ), 203 slidesPerGroupSkip: parseInt( $slidesPerGroupSkipIpad ), 204 }, 205 0: { 206 slidesPerView: parseInt( $testimonials_per_view_mobile ), 207 spaceBetween: parseInt( $testimonials_space_between_mobile ), 208 slidesPerGroup: parseInt( $slidesPerGroupMobile ), 209 slidesPerGroupSkip: parseInt( $slidesPerGroupSkipMobile ), 210 } 211 } 212 } ); 213 214 $wrapObj.addClass( 'dte-slider-initialized' ); 215 if ( 'on' === pause_on_hover && 'on' === settings?.autoplay ) { 216 jQuery( '.' + $orderClass + ' .swiper-container' ).on( 'mouseleave', function(e) { 217 if ( typeof swipperSlider?.autoplay?.stop === "function" ) { 218 swipperSlider.autoplay.stop(); 219 } 220 } ); 221 jQuery( '.' + $orderClass + ' .swiper-container' ).on( 'mouseenter', function(e) { 222 if ( typeof swipperSlider?.autoplay?.start === "function" ) { 223 swipperSlider.autoplay.start(); 224 } 225 } ); 226 } 227 228 if ( 'on' !== settings?.loop ) { 229 swipperSlider.on( 'reachEnd', function() { 230 swipperSlider.autoplay = false; 231 } ); 232 } 233} 234 235/** 236 * Init grid. 237 */ 238function dte_init_testimonial_grid( $wrapObj ) { 239 let $masonry = ''; 240 if ( $wrapObj.find('.el-testimonial-isotope-container').length > 0 ) { 241 $masonry = $wrapObj.find('.el-testimonial-isotope-container').isotope( { 242 itemSelector: '.el-testimonial-isotope-item', 243 layoutMode: 'masonry', 244 percentPosition: true, 245 resize: true, 246 } ); 247 248 $masonry.imagesLoaded( function() { 249 $masonry.isotope( 'layout' ); 250 } ); 251 252 // $wrapObj.find( '.el-testimonial-isotope-container' ).isotope( 'reloadItems' ); 253 // $wrapObj.find( '.el-testimonial-isotope-container' ).isotope( 'layout' ); 254 } 255 256 // Pagination. 257 if ( $wrapObj.find('.el_md_testimonial_pagination_wrapper').length > 0 ) { 258 let $wrapper = $wrapObj.find( '.el-testimonial-layout' ), 259 $pagination_wrapper = $wrapObj.find('.el_md_testimonial_pagination_wrapper'), 260 $pagination = $pagination_wrapper.find('ul'), 261 $perPage = isNaN( $pagination_wrapper.data('testimonial_number') ) || 0 === parseInt( $pagination_wrapper.data('testimonial_number') ) ? -1 : parseInt( $pagination_wrapper.data('testimonial_number') ), 262 $totalPages = isNaN( $pagination_wrapper.data('total_pages') ) || 0 === parseInt( $pagination_wrapper.data('total_pages') ) ? 1 : parseInt( $pagination_wrapper.data('total_pages') ), 263 $options = { 264 totalPages: $totalPages, 265 onPageClick: function (event, page) { 266 let $props = $pagination_wrapper.data(); 267 $props['page'] = page; 268 $wrapper.fadeTo( '100', 0.2 ); 269 jQuery.ajax( { 270 type: 'POST', 271 url: DiviTestimonialExtendedFrontendData.ajaxurl, 272 data: { 273 action: 'el_get_testimonials', 274 testimonial_extended_nonce: DiviTestimonialExtendedFrontendData.ajaxnonce, 275 props: $props 276 }, 277 success: function( response ) { 278 // console.log(response); 279 if ( response.success ) { 280 let $elements = jQuery( response.items ); 281 if ( $wrapObj.find('.el-testimonial-isotope-container').length > 0 ) { 282 $masonry.append( $elements ).isotope( 'appended', $elements ); 283 $wrapper.find( '.el-single-testimonial-card:not(.el-single-testimonial-item-page-' + page + ')' ).each( function() { 284 jQuery(this).closest('.el-testimonial-isotope-item').detach(); 285 } ); 286 $masonry.isotope( { 287 filter: function() { 288 if ( jQuery(this).find('.el-single-testimonial-card').hasClass('el-single-testimonial-item-page-'+page) ) { 289 return jQuery(this); 290 } 291 } 292 } ).isotope( 'revealItemElements', $wrapper.find('.el-single-testimonial-item-page-'+page).closest('.el-testimonial-isotope-item') ).isotope('layout'); 293 $wrapObj.find( '.el-testimonial-isotope-container' ).isotope( 'reloadItems' ); 294 $masonry.imagesLoaded( function() { 295 $masonry.isotope( 'layout' ); 296 } ); 297 } else { 298 $wrapper.append( $elements ); 299 $wrapper.find('.el-single-testimonial-card:not(.el-single-testimonial-item-page-' + page + ')').detach(); 300 } 301 $wrapper.fadeTo( '100', 1 ); 302 } 303 } 304 } ); 305 306 let topHeaderHeight = 0, 307 mainHeaderHeight = 0, 308 tbHeaderHeight = 0; 309 310 if ( jQuery('body').find('#top-header').length > 0 && jQuery('body').hasClass('et_fixed_nav') ) { 311 topHeaderHeight = parseFloat( jQuery('#top-header').innerHeight() ); 312 } 313 if ( jQuery('body').find('#main-header').length > 0 && jQuery('body').hasClass('et_fixed_nav') ) { 314 mainHeaderHeight = parseFloat( jQuery('#main-header').innerHeight() ); 315 } 316 if ( jQuery('body').find('.et-l--header').length > 0 && jQuery('body').find('.et-l--header .et_builder_inner_content').hasClass('has_et_pb_sticky') ) { 317 tbHeaderHeight = parseFloat( jQuery('.et-l--header').innerHeight() ); 318 } 319 let headerHeight = topHeaderHeight + mainHeaderHeight + tbHeaderHeight + 50; 320 jQuery( 'html, body' ).animate( { 321 scrollTop: ( $wrapObj.offset().top - headerHeight ) 322 } ); 323 } 324 }; 325 326 if ( 'on' === $pagination_wrapper.data('show_prev_next') ) { 327 $options.prev = $pagination_wrapper.data('prev_text'); 328 $options.next = $pagination_wrapper.data('next_text'); 329 } 330 331 $pagination.DiviTestimonialExtendedPagination( $options ); 332 } 333 334 // Load more content. 335 $wrapObj.on( 'click', '.el-testimonial-desc .el-testimonial-readmore-btn.el-action-show-content', function(e) { 336 e.preventDefault(); 337 338 jQuery( this ).parents( '.el-testimonial-desc' ).find( '.el-more-dots' ).hide(); 339 jQuery( this ).parents( '.el-testimonial-desc' ).find( '.el-more-text' ).fadeIn(); 340 jQuery( this ).next( '.el-testimonial-readless-btn' ).show(); 341 jQuery( this ).hide() 342 343 return false;
344 } ); 345 346 // Load less content. 347 $wrapObj.on( 'click', '.el-testimonial-desc .el-testimonial-readless-btn', function(e) { 348 e.preventDefault(); 349 350 jQuery( this ).parents( '.el-testimonial-desc' ).find( '.el-more-dots' ).fadeIn(); 351 jQuery( this ).parents( '.el-testimonial-desc' ).find( '.el-more-text' ).hide(); 352 jQuery( this ).prev( '.el-testimonial-readmore-btn' ).show(); 353 jQuery( this ).hide() 354 355 return false; 356 } ); 357}
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.