PluginProbe ʕ •ᴥ•ʔ
Jetpack – WP Security, Backup, Speed, & Growth / 12.5.2
Jetpack – WP Security, Backup, Speed, & Growth v12.5.2
12.0.3 12.1.3 12.2.3 12.3.2 12.4.2 12.5.2 12.6.4 12.7.3 12.8.3 12.9.5 13.0.2 13.1.5 13.2.4 13.3.3 13.4.5 13.5.2 13.6.2 13.7.2 13.8.3 13.9.2 14.0.1 14.1.1 14.2.2 14.3.1 14.4.2 14.5.1 14.6.1 14.7.1 14.8.1 14.9.2 15.0.3 15.1.2 15.2.1 15.3.2 15.4.1 15.5.1 15.6.1 15.7.2 15.8.1 15.9.2 16.0.2 16.1.3 16.2-a.5 16.2-a.3 16.1.2 16.2-a.1 16.1.1 16.1 16.1-beta 16.1-beta.2 16.1-beta.3 16.1-a.5 16.1-a.3 16.0.1 16.1-a.1 16.0 16.0-beta 16.0-a.7 16.0-a.5 15.9.1 16.0-a.3 16.0-a.1 15.9 15.9-beta 15.9-a.7 15.9-a.5 15.9-a.3 15.9-a.1 15.8 15.8-beta 15.8-a.7 15.8-a.5 5.2.5 5.3.4 5.4.4 5.5.5 5.6.5 5.7.5 5.8.4 5.9.4 6.0.4 6.1 6.1.1 6.1.2 6.1.3 6.1.4 6.1.5 6.2 6.2.1 6.2.2 6.2.3 6.2.4 6.2.5 6.3 6.3.1 6.3.2 6.3.3 6.3.4 6.3.5 6.3.6 6.3.7 6.4 6.4.1 6.4.2 6.4.3 6.4.4 6.4.5 6.4.6 6.5 6.5.1 6.5.2 6.5.3 6.5.4 6.6 6.6.1 6.6.2 6.6.3 6.6.4 6.6.5 6.7 6.7.1 6.7.2 6.7.3 6.7.4 6.8 6.8.1 6.8.2 6.8.3 6.8.4 6.8.5 6.9 6.9.1 6.9.2 6.9.3 6.9.4 7.0 7.0.1 7.0.2 7.0.3 7.0.4 7.0.5 7.1 7.1.1 7.1.2 7.1.3 7.1.4 7.1.5 7.2 7.2.1 7.2.1.1 7.2.2 7.2.3 7.2.4 7.2.5 7.3 7.3.0.1 7.3.1 7.3.1.1 7.3.2 7.3.3 7.3.4 7.3.5 7.4 7.4.1 7.4.2 7.4.3 7.4.4 7.4.5 7.5 7.5.0.1 7.5.1 7.5.2 7.5.3 7.5.4 7.5.5 7.5.6 7.5.7 7.6 7.6.1 7.6.2 7.6.3 7.6.4 7.7 7.7.1 7.7.2 7.7.3 7.7.4 7.7.5 7.7.6 7.8 7.8.1 7.8.2 7.8.3 7.8.4 7.9 7.9.1 7.9.2 7.9.3 7.9.4 8.0 8.0.1 8.0.2 8.0.3 8.1 8.1.1 8.1.2 8.1.3 8.1.4 8.2 8.2.0.1 8.2.1 8.2.2 8.2.3 8.2.4 8.2.5 8.2.6 8.3 8.3.1 8.3.2 8.3.3 8.4 8.4.1 8.4.2 8.4.3 8.4.4 8.4.5 8.5 8.5.1 8.5.2 8.5.3 8.6 8.6.1 8.6.2 8.6.3 8.6.4 8.7 8.7.0.1 8.7.1 8.7.2 8.7.3 8.7.4 8.8 8.8.1 8.8.2 8.8.3 8.8.4 8.8.5 8.9 8.9.1 8.9.2 8.9.3 8.9.4 9.0 9.0.1 9.0.2 9.0.3 9.0.4 9.0.5 9.1 9.1.1 9.1.2 9.1.3 9.2 9.2.1 9.2.2 9.2.3 9.2.4 9.3 9.3.1 9.3.2 9.3.3 9.3.4 9.3.5 9.4 9.4.1 9.4.2 9.4.3 9.4.4 9.5 9.5.1 9.5.2 9.5.3 9.5.4 9.5.5 9.6 9.6.1 9.6.2 9.6.3 9.6.4 9.7 9.7.1 9.7.2 15.7-beta.2 9.7.3 15.7.1 9.8 15.8-a.1 9.8.1 15.8-a.3 9.8.2 2.0.9 9.8.3 2.1.7 9.9 2.2.10 9.9.1 2.3.10 9.9.2 2.4.7 9.9.3 2.5.5 2.6.6 2.7.5 2.8.5 2.9.6 3.0.6 3.1.5 3.2.5 3.3.6 3.4.6 3.5.6 3.6.4 3.7.5 3.8.5 3.9.10 4.0.7 4.1.4 4.2.5 4.3.5 4.4.5 4.5.3 4.6.3 4.7.4 4.8.5 4.9.3 5.0.3 5.1.4 trunk 10.0 10.0.1 10.0.2 10.1 10.1.1 10.1.2 10.2 10.2.1 10.2.2 10.2.3 10.3 10.3.1 10.3.2 10.4 10.4.1 10.4.2 10.5 10.5.1 10.5.2 10.5.3 10.6 10.6.1 10.6.2 10.7 10.7.1 10.7.2 10.8 10.8.1 10.8.2 10.9 10.9.1 10.9.2 10.9.3 11.0 11.0.1 11.0.2 11.1 11.1.1 11.1.2 11.1.3 11.1.4 11.2 11.2.1 11.2.2 11.3 11.3.1 11.3.2 11.3.3 11.3.4 11.4 11.4.1 11.4.2 11.5 11.5.1 11.5.2 11.5.3 11.6 11.6.1 11.6.2 11.7 11.7.1 11.7.2 11.7.3 11.8 11.8.3 11.8.4 11.8.5 11.8.6 11.9 11.9.1 11.9.2 11.9.3 12.0 12.0.1 12.0.2 12.1 12.1.1 12.1.2 12.2 12.2.1 12.2.2 12.3 12.3.1 12.4 12.4.1 12.5 12.5.1 12.6 12.6.1 12.6.2 12.6.3 12.7 12.7.1 12.7.2 12.8 12.8.1 12.8.2 12.9 12.9.1 12.9.2 12.9.3 12.9.4 13.0 13.0.1 13.1 13.1.1 13.1.2 13.1.3 13.1.4 13.2 13.2.1 13.2.2 13.2.3 13.3 13.3.1 13.3.2 13.4 13.4.1 13.4.2 13.4.3 13.4.4 13.5 13.5.1 13.6 13.6.1 13.7 13.7.1 13.8 13.8.1 13.8.2 13.9 13.9.1 14.0 14.1 14.2 14.2.1 14.3 14.4 14.4.1 14.5 14.6 14.7 14.8 14.9 14.9.1 15.0 15.0.1 15.0.2 15.1 15.1.1 15.2 15.3 15.3.1 15.4 15.5 15.6 15.7 15.7-a.1 15.7-a.3 15.7-a.5 15.7-a.7 15.7-beta
jetpack / modules / shortcodes / js / slideshow-shortcode.js
jetpack / modules / shortcodes / js Last commit date
brightcove.js 6 years ago jmpress.js 6 years ago jquery.cycle.min.js 9 years ago main.js 6 years ago quiz.js 5 years ago recipes-printthis.js 4 years ago recipes.js 6 years ago slideshow-shortcode.js 4 years ago
slideshow-shortcode.js
211 lines
1 /* global jetpackSlideshowSettings, escape */
2
3 function JetpackSlideshow( element, transition, autostart ) {
4 this.element = element;
5 this.images = [];
6 this.controls = {};
7 this.transition = transition || 'fade';
8 this.autostart = autostart;
9 }
10
11 JetpackSlideshow.prototype.showLoadingImage = function ( toggle ) {
12 if ( toggle ) {
13 this.loadingImage_ = document.createElement( 'div' );
14 this.loadingImage_.className = 'jetpack-slideshow-loading';
15 var img = document.createElement( 'img' );
16 img.src = jetpackSlideshowSettings.spinner;
17 this.loadingImage_.appendChild( img );
18 this.loadingImage_.appendChild( this.makeZeroWidthSpan() );
19 this.element.append( this.loadingImage_ );
20 } else if ( this.loadingImage_ ) {
21 this.loadingImage_.parentNode.removeChild( this.loadingImage_ );
22 this.loadingImage_ = null;
23 }
24 };
25
26 JetpackSlideshow.prototype.init = function () {
27 this.showLoadingImage( true );
28
29 var self = this;
30 // Set up DOM.
31 for ( var i = 0; i < this.images.length; i++ ) {
32 var imageInfo = this.images[ i ];
33 var img = document.createElement( 'img' );
34 img.src = imageInfo.src;
35 img.title = typeof imageInfo.title !== 'undefined' ? imageInfo.title : '';
36 img.alt = typeof imageInfo.alt !== 'undefined' ? imageInfo.alt : '';
37 img.align = 'middle';
38 img.setAttribute( 'itemprop', 'image' );
39 img.nopin = 'nopin';
40 var caption = document.createElement( 'div' );
41 caption.className = 'jetpack-slideshow-slide-caption';
42 caption.setAttribute( 'itemprop', 'caption description' );
43 caption.innerHTML = imageInfo.caption;
44 var container = document.createElement( 'div' );
45 container.className = 'jetpack-slideshow-slide';
46 container.setAttribute( 'itemprop', 'associatedMedia' );
47 container.setAttribute( 'itemscope', '' );
48 container.setAttribute( 'itemtype', 'https://schema.org/ImageObject' );
49
50 // Hide loading image once first image has loaded.
51 if ( i === 0 ) {
52 if ( img.complete ) {
53 // IE, image in cache
54 setTimeout( function () {
55 self.finishInit_();
56 }, 1 );
57 } else {
58 jQuery( img ).load( function () {
59 self.finishInit_();
60 } );
61 }
62 }
63 container.appendChild( img );
64 // I'm not sure where these were coming from, but IE adds
65 // bad values for width/height for portrait-mode images
66 img.removeAttribute( 'width' );
67 img.removeAttribute( 'height' );
68 container.appendChild( this.makeZeroWidthSpan() );
69 container.appendChild( caption );
70 this.element.append( container );
71 }
72 };
73
74 JetpackSlideshow.prototype.makeZeroWidthSpan = function () {
75 var emptySpan = document.createElement( 'span' );
76 emptySpan.className = 'jetpack-slideshow-line-height-hack';
77 // Having a NBSP makes IE act weird during transitions, but other
78 // browsers ignore a text node with a space in it as whitespace.
79 if ( -1 !== window.navigator.userAgent.indexOf( 'MSIE ' ) ) {
80 emptySpan.appendChild( document.createTextNode( ' ' ) );
81 } else {
82 emptySpan.innerHTML = '&nbsp;';
83 }
84 return emptySpan;
85 };
86
87 JetpackSlideshow.prototype.finishInit_ = function () {
88 this.showLoadingImage( false );
89 this.renderControls_();
90
91 var self = this;
92 if ( this.images.length > 1 ) {
93 // Initialize Cycle instance.
94 this.element.cycle( {
95 fx: this.transition,
96 prev: this.controls.prev,
97 next: this.controls.next,
98 timeout: jetpackSlideshowSettings.speed,
99 slideExpr: '.jetpack-slideshow-slide',
100 onPrevNextEvent: function () {
101 return self.onCyclePrevNextClick_.apply( self, arguments );
102 },
103 } );
104
105 var slideshow = this.element;
106
107 if ( ! this.autostart ) {
108 slideshow.cycle( 'pause' );
109 jQuery( this.controls.stop ).removeClass( 'running' );
110 jQuery( this.controls.stop ).addClass( 'paused' );
111 }
112
113 jQuery( this.controls.stop ).click( function () {
114 var button = jQuery( this );
115 if ( ! button.hasClass( 'paused' ) ) {
116 slideshow.cycle( 'pause' );
117 button.removeClass( 'running' );
118 button.addClass( 'paused' );
119 } else {
120 button.addClass( 'running' );
121 button.removeClass( 'paused' );
122 slideshow.cycle( 'resume', true );
123 }
124 return false;
125 } );
126 } else {
127 this.element.children( ':first' ).show();
128 this.element.css( 'position', 'relative' );
129 }
130 this.initialized_ = true;
131 };
132
133 JetpackSlideshow.prototype.renderControls_ = function () {
134 if ( this.controlsDiv_ ) {
135 return;
136 }
137
138 var controlsDiv = document.createElement( 'div' );
139 controlsDiv.className = 'jetpack-slideshow-controls';
140
141 var controls = [ 'prev', 'stop', 'next' ];
142 for ( var i = 0; i < controls.length; i++ ) {
143 var controlName = controls[ i ];
144 var label_name = 'label_' + controlName;
145 var a = document.createElement( 'a' );
146
147 a.href = '#';
148 a.className = 'button-' + controlName;
149 a.setAttribute( 'aria-label', jetpackSlideshowSettings[ label_name ] );
150 a.setAttribute( 'role', 'button' );
151
152 controlsDiv.appendChild( a );
153 this.controls[ controlName ] = a;
154 }
155 this.element.append( controlsDiv );
156 this.controlsDiv_ = controlsDiv;
157 };
158
159 JetpackSlideshow.prototype.onCyclePrevNextClick_ = function ( isNext, i /*, slideElement*/ ) {
160 // If blog_id not present don't track page views
161 if ( ! jetpackSlideshowSettings.blog_id ) {
162 return;
163 }
164
165 var postid = this.images[ i ].id;
166 var stats = new Image();
167 stats.src =
168 document.location.protocol +
169 '//pixel.wp.com/g.gif?host=' +
170 escape( document.location.host ) +
171 '&rand=' +
172 Math.random() +
173 '&blog=' +
174 jetpackSlideshowSettings.blog_id +
175 '&subd=' +
176 jetpackSlideshowSettings.blog_subdomain +
177 '&user_id=' +
178 jetpackSlideshowSettings.user_id +
179 '&post=' +
180 postid +
181 '&ref=' +
182 escape( document.location );
183 };
184
185 ( function ( $ ) {
186 function jetpack_slideshow_init() {
187 $( '.jetpack-slideshow-noscript' ).remove();
188
189 $( '.jetpack-slideshow' ).each( function () {
190 var container = $( this );
191
192 if ( container.data( 'processed' ) ) {
193 return;
194 }
195
196 var slideshow = new JetpackSlideshow(
197 container,
198 container.data( 'trans' ),
199 container.data( 'autostart' )
200 );
201 slideshow.images = container.data( 'gallery' );
202 slideshow.init();
203
204 container.data( 'processed', true );
205 } );
206 }
207
208 $( document ).ready( jetpack_slideshow_init );
209 $( 'body' ).on( 'post-load', jetpack_slideshow_init );
210 } )( jQuery );
211