PluginProbe ʕ •ᴥ•ʔ
Jetpack – WP Security, Backup, Speed, & Growth / 16.0-beta
Jetpack – WP Security, Backup, Speed, & Growth v16.0-beta
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 5 years ago dependencies.js 7 months ago main.js 7 months ago quiz.js 4 years ago recipes.js 5 years ago slideshow-shortcode.js 7 months ago
slideshow-shortcode.js
215 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
89 var self = this;
90 if ( this.images.length > 1 ) {
91 this.renderControls_();
92
93 // Initialize Cycle instance.
94 jQuery( 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 jQuery( slideshow ).cycle( 'pause' );
109 this.controls.stop.classList.remove( 'running' );
110 this.controls.stop.classList.add( 'paused' );
111 }
112
113 this.controls.stop.addEventListener( 'click', function ( event ) {
114 var button = event.currentTarget;
115
116 if ( button === event.target ) {
117 event.preventDefault();
118
119 if ( ! button.classList.contains( 'paused' ) ) {
120 jQuery( slideshow ).cycle( 'pause' );
121 button.classList.remove( 'running' );
122 button.classList.add( 'paused' );
123 } else {
124 button.classList.add( 'running' );
125 button.classList.remove( 'paused' );
126 jQuery( slideshow ).cycle( 'resume', true );
127 }
128 }
129 } );
130 } else if ( this.element.children.length ) {
131 this.element.children[ 0 ].style.display = 'block';
132 this.element.style.position = 'relative';
133 }
134 this.initialized_ = true;
135 };
136
137 JetpackSlideshow.prototype.renderControls_ = function () {
138 if ( this.controlsDiv_ ) {
139 return;
140 }
141
142 var controlsDiv = document.createElement( 'div' );
143 controlsDiv.className = 'jetpack-slideshow-controls';
144
145 var controls = [ 'prev', 'stop', 'next' ];
146 for ( var i = 0; i < controls.length; i++ ) {
147 var controlName = controls[ i ];
148 var label_name = 'label_' + controlName;
149 var a = document.createElement( 'a' );
150
151 a.href = '#';
152 a.className = 'button-' + controlName;
153 a.setAttribute( 'aria-label', jetpackSlideshowSettings[ label_name ] );
154 a.setAttribute( 'role', 'button' );
155
156 controlsDiv.appendChild( a );
157 this.controls[ controlName ] = a;
158 }
159 this.element.append( controlsDiv );
160 this.controlsDiv_ = controlsDiv;
161 };
162
163 JetpackSlideshow.prototype.onCyclePrevNextClick_ = function ( isNext, i /*, slideElement*/ ) {
164 // If blog_id not present don't track page views
165 if ( ! jetpackSlideshowSettings.blog_id ) {
166 return;
167 }
168
169 var postid = this.images[ i ].id;
170 var stats = new Image();
171 stats.src =
172 document.location.protocol +
173 '//pixel.wp.com/g.gif?host=' +
174 encodeURIComponent( document.location.host ) +
175 '&rand=' +
176 Math.random() +
177 '&blog=' +
178 jetpackSlideshowSettings.blog_id +
179 '&subd=' +
180 jetpackSlideshowSettings.blog_subdomain +
181 '&user_id=' +
182 jetpackSlideshowSettings.user_id +
183 '&post=' +
184 postid +
185 '&ref=' +
186 encodeURIComponent( document.location );
187 };
188
189 ( function () {
190 function jetpack_slideshow_init() {
191 document.querySelectorAll( '.jetpack-slideshow-noscript' ).forEach( function ( element ) {
192 element.remove();
193 } );
194 document.querySelectorAll( '.jetpack-slideshow' ).forEach( function ( container ) {
195 if ( container.dataset.processed === 'true' ) {
196 return;
197 }
198
199 // Extract data attributes manually
200 var transition = container.dataset.trans;
201 var autostart = container.dataset.autostart === 'true';
202 var gallery = JSON.parse( container.dataset.gallery || '[]' );
203
204 var slideshow = new JetpackSlideshow( container, transition, autostart );
205 slideshow.images = gallery;
206 slideshow.init();
207
208 container.dataset.processed = 'true';
209 } );
210 }
211
212 document.addEventListener( 'DOMContentLoaded', jetpack_slideshow_init );
213 document.body.addEventListener( 'post-load', jetpack_slideshow_init );
214 } )();
215