PluginProbe ʕ •ᴥ•ʔ
Jetpack – WP Security, Backup, Speed, & Growth / 13.9.2
Jetpack – WP Security, Backup, Speed, & Growth v13.9.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 2 years ago
slideshow-shortcode.js
214 lines
1 /* global jetpackSlideshowSettings */
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.setAttribute( 'itemprop', 'image' );
38 img.nopin = 'nopin';
39 var caption = document.createElement( 'div' );
40 caption.className = 'jetpack-slideshow-slide-caption';
41 caption.setAttribute( 'itemprop', 'caption description' );
42 caption.innerHTML = imageInfo.caption;
43 var container = document.createElement( 'div' );
44 container.className = 'jetpack-slideshow-slide';
45 container.setAttribute( 'itemprop', 'associatedMedia' );
46 container.setAttribute( 'itemscope', '' );
47 container.setAttribute( 'itemtype', 'https://schema.org/ImageObject' );
48
49 // Hide loading image once first image has loaded.
50 if ( i === 0 ) {
51 if ( img.complete ) {
52 // IE, image in cache
53 setTimeout( function () {
54 self.finishInit_();
55 }, 1 );
56 } else {
57 img.addEventListener( 'load', function () {
58 self.finishInit_();
59 } );
60 }
61 }
62 container.appendChild( img );
63 // I'm not sure where these were coming from, but IE adds
64 // bad values for width/height for portrait-mode images
65 img.removeAttribute( 'width' );
66 img.removeAttribute( 'height' );
67 container.appendChild( this.makeZeroWidthSpan() );
68 container.appendChild( caption );
69 this.element.append( container );
70 }
71 };
72
73 JetpackSlideshow.prototype.makeZeroWidthSpan = function () {
74 var emptySpan = document.createElement( 'span' );
75 emptySpan.className = 'jetpack-slideshow-line-height-hack';
76 // Having a NBSP makes IE act weird during transitions, but other
77 // browsers ignore a text node with a space in it as whitespace.
78 if ( -1 !== window.navigator.userAgent.indexOf( 'MSIE ' ) ) {
79 emptySpan.appendChild( document.createTextNode( ' ' ) );
80 } else {
81 emptySpan.innerHTML = '&nbsp;';
82 }
83 return emptySpan;
84 };
85
86 JetpackSlideshow.prototype.finishInit_ = function () {
87 this.showLoadingImage( false );
88 this.renderControls_();
89
90 var self = this;
91 if ( this.images.length > 1 ) {
92 // Initialize Cycle instance.
93 jQuery( this.element ).cycle( {
94 fx: this.transition,
95 prev: this.controls.prev,
96 next: this.controls.next,
97 timeout: jetpackSlideshowSettings.speed,
98 slideExpr: '.jetpack-slideshow-slide',
99 onPrevNextEvent: function () {
100 return self.onCyclePrevNextClick_.apply( self, arguments );
101 },
102 } );
103
104 var slideshow = this.element;
105
106 if ( ! this.autostart ) {
107 jQuery( slideshow ).cycle( 'pause' );
108 this.controls.stop.classList.remove( 'running' );
109 this.controls.stop.classList.add( 'paused' );
110 }
111
112 this.controls.stop.addEventListener( 'click', function ( event ) {
113 var button = event.currentTarget;
114
115 if ( button === event.target ) {
116 event.preventDefault();
117
118 if ( ! button.classList.contains( 'paused' ) ) {
119 jQuery( slideshow ).cycle( 'pause' );
120 button.classList.remove( 'running' );
121 button.classList.add( 'paused' );
122 } else {
123 button.classList.add( 'running' );
124 button.classList.remove( 'paused' );
125 jQuery( slideshow ).cycle( 'resume', true );
126 }
127 }
128 } );
129 } else {
130 this.element.children( ':first' ).show();
131 this.element.css( 'position', 'relative' );
132 }
133 this.initialized_ = true;
134 };
135
136 JetpackSlideshow.prototype.renderControls_ = function () {
137 if ( this.controlsDiv_ ) {
138 return;
139 }
140
141 var controlsDiv = document.createElement( 'div' );
142 controlsDiv.className = 'jetpack-slideshow-controls';
143
144 var controls = [ 'prev', 'stop', 'next' ];
145 for ( var i = 0; i < controls.length; i++ ) {
146 var controlName = controls[ i ];
147 var label_name = 'label_' + controlName;
148 var a = document.createElement( 'a' );
149
150 a.href = '#';
151 a.className = 'button-' + controlName;
152 a.setAttribute( 'aria-label', jetpackSlideshowSettings[ label_name ] );
153 a.setAttribute( 'role', 'button' );
154
155 controlsDiv.appendChild( a );
156 this.controls[ controlName ] = a;
157 }
158 this.element.append( controlsDiv );
159 this.controlsDiv_ = controlsDiv;
160 };
161
162 JetpackSlideshow.prototype.onCyclePrevNextClick_ = function ( isNext, i /*, slideElement*/ ) {
163 // If blog_id not present don't track page views
164 if ( ! jetpackSlideshowSettings.blog_id ) {
165 return;
166 }
167
168 var postid = this.images[ i ].id;
169 var stats = new Image();
170 stats.src =
171 document.location.protocol +
172 '//pixel.wp.com/g.gif?host=' +
173 encodeURIComponent( document.location.host ) +
174 '&rand=' +
175 Math.random() +
176 '&blog=' +
177 jetpackSlideshowSettings.blog_id +
178 '&subd=' +
179 jetpackSlideshowSettings.blog_subdomain +
180 '&user_id=' +
181 jetpackSlideshowSettings.user_id +
182 '&post=' +
183 postid +
184 '&ref=' +
185 encodeURIComponent( document.location );
186 };
187
188 ( function () {
189 function jetpack_slideshow_init() {
190 document.querySelectorAll( '.jetpack-slideshow-noscript' ).forEach( function ( element ) {
191 element.remove();
192 } );
193 document.querySelectorAll( '.jetpack-slideshow' ).forEach( function ( container ) {
194 if ( container.dataset.processed === 'true' ) {
195 return;
196 }
197
198 // Extract data attributes manually
199 var transition = container.dataset.trans;
200 var autostart = container.dataset.autostart === 'true';
201 var gallery = JSON.parse( container.dataset.gallery || '[]' );
202
203 var slideshow = new JetpackSlideshow( container, transition, autostart );
204 slideshow.images = gallery;
205 slideshow.init();
206
207 container.dataset.processed = 'true';
208 } );
209 }
210
211 document.addEventListener( 'DOMContentLoaded', jetpack_slideshow_init );
212 document.body.addEventListener( 'post-load', jetpack_slideshow_init );
213 } )();
214