SiteOrigin Widgets Bundle - Version 1.25.1

Version Description

  • 30 October 2021 =
  • Google Maps: Resolved an unexpected content error when previewing in the Block Editor.
  • Hero: Migrated Text Shadow setting from a 0-1 to a 0-100 range.
  • Sliders: Added a Background video opacity setting for self-hosted and external videos.
  • Video Player: Removed Related Videos setting.
Download this release

Release Info

Developer SiteOrigin
Plugin Icon 128x128 SiteOrigin Widgets Bundle
Version 1.25.1
Comparing to
See all releases

Code changes from version 1.25.0 to 1.25.1

base/inc/video.php CHANGED
@@ -28,11 +28,11 @@ class SiteOrigin_Video {
28
  *
29
  * @param string $src The URL of the video.
30
  * @param bool $autoplay Whether to start playing the video automatically once loaded. ( YouTube only )
31
- * @param bool $related_videos Whether to show related videos after the video has finished playing. ( YouTube only )
32
  *
33
  * @return false|mixed|null|string|string[]
34
  */
35
- function get_video_oembed( $src, $autoplay = false, $related_videos = true, $loop = false ) {
36
  if ( empty( $src ) ) {
37
  return '';
38
  }
@@ -69,13 +69,6 @@ class SiteOrigin_Video {
69
  ), $html );
70
  }
71
 
72
- if ( empty( $related_videos ) ) {
73
- $html = preg_replace_callback( '/src=["\'](http[^"\']*)["\']/', array(
74
- $this,
75
- 'remove_related_videos'
76
- ), $html );
77
- }
78
-
79
  if ( ! empty( $html ) ) {
80
  set_transient( 'sow-vid-embed[' . $hash . ']', $html, 30 * 86400 );
81
  }
@@ -126,15 +119,4 @@ class SiteOrigin_Video {
126
  );
127
  return str_replace( $match[1], $new_url, $match[0] );
128
  }
129
-
130
- /**
131
- * The preg_replace callback that adds the rel param for YouTube videos.
132
- *
133
- * @param $match
134
- *
135
- * @return mixed
136
- */
137
- function remove_related_videos( $match ) {
138
- return str_replace( $match[1], add_query_arg( 'rel', 0, $match[1] ), $match[0] );
139
- }
140
  }
28
  *
29
  * @param string $src The URL of the video.
30
  * @param bool $autoplay Whether to start playing the video automatically once loaded. ( YouTube only )
31
+ * @param bool $related_videos Deprecated.
32
  *
33
  * @return false|mixed|null|string|string[]
34
  */
35
+ function get_video_oembed( $src, $autoplay = false, $related_videos = false, $loop = false ) {
36
  if ( empty( $src ) ) {
37
  return '';
38
  }
69
  ), $html );
70
  }
71
 
 
 
 
 
 
 
 
72
  if ( ! empty( $html ) ) {
73
  set_transient( 'sow-vid-embed[' . $hash . ']', $html, 30 * 86400 );
74
  }
119
  );
120
  return str_replace( $match[1], $new_url, $match[0] );
121
  }
 
 
 
 
 
 
 
 
 
 
 
122
  }
base/inc/widgets/base-slider.class.php CHANGED
@@ -258,6 +258,14 @@ abstract class SiteOrigin_Widget_Base_Slider extends SiteOrigin_Widget {
258
  'label' => __( 'Loop slide background videos', 'so-widgets-bundle' ),
259
  'default' => false,
260
  );
 
 
 
 
 
 
 
 
261
  if ( isset( $form_options['frames']['fields']['background_videos'] ) ) {
262
  // Add setting to SiteOrigin Slider widget.
263
  siteorigin_widgets_array_insert(
@@ -265,11 +273,13 @@ abstract class SiteOrigin_Widget_Base_Slider extends SiteOrigin_Widget {
265
  'background_image',
266
  array(
267
  'loop_background_videos' => $loop_setting,
 
268
  )
269
  );
270
  } elseif ( isset( $form_options['frames']['fields']['background'] ) ) {
271
  // Add setting to all other slider widgets.
272
  $form_options['frames']['fields']['background']['fields']['loop_background_videos'] = $loop_setting;
 
273
  }
274
  }
275
  return $form_options;
@@ -331,6 +341,10 @@ abstract class SiteOrigin_Widget_Base_Slider extends SiteOrigin_Widget {
331
  ),
332
  );
333
 
 
 
 
 
334
  foreach ( $migrate_layout_settings as $setting => $sub_section ) {
335
  if ( is_array( $sub_section ) ) {
336
  foreach ( $sub_section as $responsive_setting ) {
@@ -492,6 +506,16 @@ abstract class SiteOrigin_Widget_Base_Slider extends SiteOrigin_Widget {
492
  // All other slider widgets.
493
  $controls['loop_background_videos'] = $frame['background']['loop_background_videos'];
494
  }
 
 
 
 
 
 
 
 
 
 
495
  $this->video_code( $background['videos'], $classes, $controls );
496
  }
497
 
@@ -534,8 +558,9 @@ abstract class SiteOrigin_Widget_Base_Slider extends SiteOrigin_Widget {
534
  function video_code( $videos, $classes = array(), $controls = array() ){
535
  if( empty( $videos ) ) return;
536
  $loop = ! empty( $controls['loop_background_videos'] ) && $controls['loop_background_videos'] ? 'loop' : '';
 
537
 
538
- $video_element = '<video class="' . esc_attr( implode( ' ', $classes ) ) . '" autoplay ' . $loop . ' muted playsinline>';
539
  $so_video = new SiteOrigin_Video();
540
  foreach( $videos as $video ) {
541
  if( empty( $video['file'] ) && empty ( $video['url'] ) ) continue;
@@ -548,7 +573,9 @@ abstract class SiteOrigin_Widget_Base_Slider extends SiteOrigin_Widget {
548
  if( ! $can_oembed ) {
549
  $video_file = sow_esc_url( $video['url'] );
550
  } else {
551
- echo $so_video->get_video_oembed( $video['url'], ! empty( $video['autoplay'] ), false, $loop );
 
 
552
  continue;
553
  }
554
  }
258
  'label' => __( 'Loop slide background videos', 'so-widgets-bundle' ),
259
  'default' => false,
260
  );
261
+ $video_opacity = array(
262
+ 'label' => __( 'Background video opacity', 'so-widgets-bundle' ),
263
+ 'type' => 'slider',
264
+ 'min' => 0,
265
+ 'max' => 100,
266
+ 'default' => 100,
267
+ );
268
+
269
  if ( isset( $form_options['frames']['fields']['background_videos'] ) ) {
270
  // Add setting to SiteOrigin Slider widget.
271
  siteorigin_widgets_array_insert(
273
  'background_image',
274
  array(
275
  'loop_background_videos' => $loop_setting,
276
+ 'background_video_opacity' => $video_opacity,
277
  )
278
  );
279
  } elseif ( isset( $form_options['frames']['fields']['background'] ) ) {
280
  // Add setting to all other slider widgets.
281
  $form_options['frames']['fields']['background']['fields']['loop_background_videos'] = $loop_setting;
282
+ $form_options['frames']['fields']['background']['fields']['background_video_opacity'] = $video_opacity;
283
  }
284
  }
285
  return $form_options;
341
  ),
342
  );
343
 
344
+ $instance['layout'] = array();
345
+ $instance['layout']['desktop'] = array();
346
+ $instance['layout']['mobile'] = array();
347
+
348
  foreach ( $migrate_layout_settings as $setting => $sub_section ) {
349
  if ( is_array( $sub_section ) ) {
350
  foreach ( $sub_section as $responsive_setting ) {
506
  // All other slider widgets.
507
  $controls['loop_background_videos'] = $frame['background']['loop_background_videos'];
508
  }
509
+
510
+ // If loop_background_videos is present, pass it to the video embed as a control.
511
+ if ( isset( $frame['background_video_opacity'] ) ) {
512
+ // SiteOrigin Slider Widget.
513
+ $controls['opacity'] = $frame['background_video_opacity'];
514
+ } elseif ( isset( $frame['background']['loop_background_videos'] ) ) {
515
+ // All other slider widgets.
516
+ $controls['opacity'] = $frame['background']['background_video_opacity'];
517
+ }
518
+
519
  $this->video_code( $background['videos'], $classes, $controls );
520
  }
521
 
558
  function video_code( $videos, $classes = array(), $controls = array() ){
559
  if( empty( $videos ) ) return;
560
  $loop = ! empty( $controls['loop_background_videos'] ) && $controls['loop_background_videos'] ? 'loop' : '';
561
+ $opacity = isset( $controls['opacity'] ) ? 'style="opacity: ' . ( $controls['opacity'] / 100 ) . '"' : '';
562
 
563
+ $video_element = '<video class="' . esc_attr( implode( ' ', $classes ) ) . '" autoplay ' . $loop . ' ' . $opacity . ' muted playsinline>';
564
  $so_video = new SiteOrigin_Video();
565
  foreach( $videos as $video ) {
566
  if( empty( $video['file'] ) && empty ( $video['url'] ) ) continue;
573
  if( ! $can_oembed ) {
574
  $video_file = sow_esc_url( $video['url'] );
575
  } else {
576
+ echo '<div class="sow-slide-video-oembed" ' . $opacity . '>';
577
+ echo $so_video->get_video_oembed( $video['url'], ! empty( $video['autoplay'] ), false, $loop, $opacity );
578
+ echo '</div>';
579
  continue;
580
  }
581
  }
js/sow.google-map.js CHANGED
@@ -508,7 +508,7 @@ jQuery(function ($) {
508
  if (
509
  $( '#sow-google-maps-js' ).length &&
510
  (
511
- forceLoad
512
  (
513
  typeof sowb.googleMapsData.ApiError !== 'undefined' &&
514
  sowb.googleMapsData.ApiError
508
  if (
509
  $( '#sow-google-maps-js' ).length &&
510
  (
511
+ forceLoad ||
512
  (
513
  typeof sowb.googleMapsData.ApiError !== 'undefined' &&
514
  sowb.googleMapsData.ApiError
js/sow.google-map.min.js CHANGED
@@ -1 +1 @@
1
- function soGoogleMapInitialize(){new sowb.SiteOriginGoogleMap(jQuery).initMaps()}window.sowb=window.sowb||{},sowb.SiteOriginGoogleMapInstances=[],sowb.SiteOriginGoogleMap=function(o){return{DEFAULT_LOCATIONS:["Addo Elephant National Park, R335, Addo","Cape Town, Western Cape, South Africa","San Francisco Bay Area, CA, United States","New York, NY, United States"],showMap:function(o,e,t){var a=Number(t.zoom);a||(a=14),window.matchMedia("(max-width: "+t.breakpoint+"px)").matches&&(a=t.mobileZoom);var i,s={zoom:a,gestureHandling:t.gestureHandling,disableDefaultUI:t.disableUi,zoomControl:t.zoomControl,panControl:t.panControl,center:e,mapTypeControlOptions:{mapTypeIds:[google.maps.MapTypeId.ROADMAP,google.maps.MapTypeId.SATELLITE,"user_map_style"]}},n=new google.maps.Map(o,s),r={name:t.mapName},l=t.mapStyles;if(l){var g=new google.maps.StyledMapType(l,r);n.mapTypes.set("user_map_style",g),n.setMapTypeId("user_map_style")}(t.markerAtCenter&&(this.centerMarker=new google.maps.Marker({position:e,map:n,draggable:t.markersDraggable,icon:t.markerIcon,title:""}),n.centerMarker=this.centerMarker),t.keepCentered)&&(google.maps.event.addDomListener(n,"idle",(function(){i=n.getCenter()})),google.maps.event.addDomListener(window,"resize",(function(){n.setCenter(i)})));this.linkAutocompleteField(t.autocomplete,t.autocompleteElement,n,t),this.showMarkers(t.markerPositions,n,t),this.showDirections(t.directions,n,t),sowb.SiteOriginGoogleMapInstances.push(n)},linkAutocompleteField:function(e,t,a,i){if(e&&t){var s=function(o){this.inputAddress!==o&&(this.inputAddress=o,this.getLocation(this.inputAddress).done(function(o){a.setZoom(15),a.setCenter(o),this.centerMarker&&(this.centerMarker.setPosition(o),this.centerMarker.setTitle(this.inputAddress))}.bind(this)))}.bind(this),n=o(t);e.addListener("place_changed",function(){var o=e.getPlace();a.setZoom(15),o.geometry&&(a.setCenter(o.geometry.location),this.centerMarker&&this.centerMarker.setPosition(o.geometry.location))}.bind(this)),google.maps.event.addDomListener(t,"keypress",(function(o){"13"===(o.keyCode||o.which)&&o.preventDefault()})),n.on("focusin",function(){if(!this.resultsObserver){var e=document.querySelector(".pac-container");this.resultsObserver=new MutationObserver((function(){var e=o(o(".pac-item").get(0)),t=e.find(".pac-item-query").text(),a=e.find("span").not("[class]").text(),i=t+(a?", "+a:"");i&&s(i)}));this.resultsObserver.observe(e,{attributes:!0,childList:!0,characterData:!0})}}.bind(this));var r=function(o){this.getGeocoder().geocode({location:o},function(e,t){if(t===google.maps.GeocoderStatus.OK&&e.length>0){var a=e[0].formatted_address;n.val(a),this.centerMarker&&(this.centerMarker.setPosition(o),this.centerMarker.setTitle(a))}}.bind(this))}.bind(this);a.addListener("click",(function(o){r(o.latLng)})),this.centerMarker.addListener("dragend",(function(o){r(o.latLng)}))}},showMarkers:function(o,e,t){if(o&&o.length){this.infoWindows=[];for(var a=[],i=0;i<o.length;i++){var s=parseInt(i/10);a.length===s&&(a[s]=[]),a[s][i%10]=o[i]}var n=function(o){var a=o.customMarkerIcon,i=o.hasOwnProperty("info")?o.info:null,s=o.hasOwnProperty("infoMaxWidth")?o.infoMaxWidth:null;return this.getLocation(o.place).done(function(o){var n=t.markerIcon;a&&(n=a);var r=new google.maps.Marker({position:o,map:e,draggable:t.markersDraggable,icon:n,title:""});if(i){var l={content:i};s&&(l.maxWidth=s);var g=t.markerInfoDisplay;l.disableAutoPan="always"===g;var p=new google.maps.InfoWindow(l);this.infoWindows.push(p);var c=g;"always"===g&&(c="click",p.open({map:e,anchor:r,shouldFocus:!1})),r.addListener(c,function(){p.open(e,r),"always"===g||t.markerInfoMultiple||this.infoWindows.forEach((function(o){o!==p&&o.close()}))}.bind(this)),"mouseover"===g&&r.addListener("mouseout",(function(){setTimeout((function(){p.close()}),100)}))}}.bind(this)).fail((function(o){r=o===google.maps.GeocoderStatus.OVER_QUERY_LIMIT,console.log(o)}))}.bind(this),r=!1,l=function(o,e){for(var t=0,a=0;a<o.length&&!r;a++)n(o[a]).then((function(){++t===o.length&&e.length&&l(e.shift(),e)}))}.bind(this);l(a.shift(),a)}},showDirections:function(o,e){if(o){o.waypoints&&o.waypoints.length&&o.waypoints.map((function(o){o.stopover=Boolean(o.stopover)}));var t=new google.maps.DirectionsRenderer;t.setMap(e),(new google.maps.DirectionsService).route({origin:o.origin,destination:o.destination,travelMode:o.travelMode.toUpperCase(),avoidHighways:o.avoidHighways,avoidTolls:o.avoidTolls,waypoints:o.waypoints,optimizeWaypoints:o.optimizeWaypoints},(function(e,a){a===google.maps.DirectionsStatus.OK&&(t.setOptions({preserveViewport:o.preserveViewport}),t.setDirections(e))}))}},initMaps:function(){var e=o(".sow-google-map-autocomplete"),t=new o.Deferred;0===e.length?t.resolve():e.each(function(e,a){if(void 0!==google.maps.places){var i=new google.maps.places.Autocomplete(a),s=o(a).siblings(".sow-google-map-canvas");if(s.length>0){var n=s.data("options");n.autocomplete=i,n.autocompleteElement=a,this.getLocation(n.address).done(function(o){this.showMap(s.get(0),o,n),s.data("initialized",!0),t.resolve()}.bind(this)).fail((function(){s.append("<div><p><strong>"+soWidgetsGoogleMap.geocode.noResults+"</strong></p></div>"),t.reject()}))}}else t.reject('Sorry, we couldn\'t load the "places" library due to another plugin, so the autocomplete feature is not available.')}.bind(this)),t.always(function(){o(".sow-google-map-canvas").each(function(e,t){var a=o(t);if(a.data("initialized"))return!0;var i=a.data("options"),s=i.address;if(!s){var n=i.markerPositions;n&&n.length&&(s=n[0].place)}this.getLocation(s).done(function(o){this.showMap(a.get(0),o,i),a.data("initialized",!0)}.bind(this)).fail((function(){a.append("<div><p><strong>"+soWidgetsGoogleMap.geocode.noResults+"</strong></p></div>")}))}.bind(this))}.bind(this)).fail((function(o){console.log(o)})).done((function(){o(sowb).trigger("maps_loaded")}))},getGeocoder:function(){return this._geocoder||(this._geocoder=new google.maps.Geocoder),this._geocoder},getLocation:function(e){var t,a=new o.Deferred,i={address:e};if(e&&e.indexOf(",")>-1){var s=e.replace(/[\(\)]/g,"").split(",");s&&2===s.length&&(t=new google.maps.LatLng(s[0],s[1]),isNaN(t.lat())||isNaN(t.lng())||(i={location:{lat:t.lat(),lng:t.lng()}}))}if(i.hasOwnProperty("location"))a.resolve(i.location);else if(i.hasOwnProperty("address")){if(!i.address){var n=parseInt(Math.random()*this.DEFAULT_LOCATIONS.length);i.address=this.DEFAULT_LOCATIONS[n]}var r=0,l=function(o,e){e===google.maps.GeocoderStatus.OK?a.resolve(o[0].geometry.location):e===google.maps.GeocoderStatus.OVER_QUERY_LIMIT?++r<3?setTimeout(function(){this.getGeocoder().geocode.call(this,i,l)}.bind(this),1e3):a.reject(e):e!==google.maps.GeocoderStatus.ZERO_RESULTS&&e!==google.maps.GeocoderStatus.OVER_DAILY_LIMIT||a.reject(e)}.bind(this);this.getGeocoder().geocode(i,l)}return a}}},jQuery((function(o){sowb.googleMapsData=[],sowb.googleMapsData.libraries=[],sowb.setupGoogleMaps=function(e,t=!1){var a=o(".sow-google-map-canvas");a.length&&(a.each((function(e,t){var a=o(t);if(a.data("apiInitialized"))return a;var i=a.data("options");i&&(void 0!==i.libraries&&null!==i.libraries&&(sowb.googleMapsData.libraries=sowb.googleMapsData.libraries.concat(i.libraries)),!sowb.googleMapsData.apiKey&&i.apiKey&&(sowb.googleMapsData.apiKey=i.apiKey)),a.data("apiInitialized",!0)})),void 0===window.google&&(window.google={}),(t||void 0===window.google||void 0===window.google.maps)&&(sowb.loadGoogleMapsAPI(t),sowb.googleMapsData.timer=setInterval((function(){var o=!1;sowb.googleMapsData.ApiError=!0,void 0!==sowb.googleMapsData.ApiError&&sowb.googleMapsData.ApiError&&(o=!0),o||void 0===window.google||void 0===window.google.maps||(o=!0,soGoogleMapInitialize()),o&&clearInterval(sowb.googleMapsData.timer)}),250)))},sowb.loadGoogleMapsAPI=function(e=!1){o("#sow-google-maps-js").length&&e(void 0!==sowb.googleMapsData.ApiError&&sowb.googleMapsData.ApiError)&&o("#sow-google-maps-js").remove(),sowb.googleMapsData.apiKey||console.warn("SiteOrigin Google Maps: Could not find API key. Google Maps API key is required.");var t="https://maps.googleapis.com/maps/api/js?key="+sowb.googleMapsData.apiKey+"&callback=soGoogleMapInitialize";if(sowb.googleMapsData.libraries&&sowb.googleMapsData.libraries.length&&(t+="&libraries="+sowb.googleMapsData.libraries.join(",")),window.console&&window.console.error){var a=window.console.error;sowb.googleMapsData.ApiError=!1,sowb.onLoadMapsApiError=function(e){var t;"string"==typeof e&&(t=e.match(/^Google Maps API (error|warning): ([^\s]*)\s([^\s]*)(?:\s(.*))?/)),t&&t.length&&t[0]&&(o(".sow-google-map-canvas").each((function(e,t){var a=o(t);if(a.data("fallbackImage")){var i=a.data("fallbackImage");i.hasOwnProperty("img")&&a.append(i.img)}})),sowb.googleMapsData.ApiError=!0),a.apply(window.console,arguments)},window.console.error=sowb.onLoadMapsApiError}soWidgetsGoogleMap.map_consent?(e&&o(".sow-google-map-consent button").off("click"),o(".sow-google-map-consent button").on("click",(function(){o(".sow-google-map-consent").remove(),o(".sow-google-map-canvas").show(),o("body").append('<script async type="text/javascript" id="sow-google-maps-js" src="'+t+'">'),sowb.mapsApiInitialized=!0}))):(o("body").append('<script async type="text/javascript" id="sow-google-maps-js" src="'+t+'">'),sowb.mapsApiInitialized=!0)},sowb.setupGoogleMaps(),o(sowb).on("setup_widgets",sowb.setupGoogleMaps)}));
1
+ function soGoogleMapInitialize(){new sowb.SiteOriginGoogleMap(jQuery).initMaps()}window.sowb=window.sowb||{},sowb.SiteOriginGoogleMapInstances=[],sowb.SiteOriginGoogleMap=function(o){return{DEFAULT_LOCATIONS:["Addo Elephant National Park, R335, Addo","Cape Town, Western Cape, South Africa","San Francisco Bay Area, CA, United States","New York, NY, United States"],showMap:function(o,e,t){var a=Number(t.zoom);a||(a=14),window.matchMedia("(max-width: "+t.breakpoint+"px)").matches&&(a=t.mobileZoom);var i,s={zoom:a,gestureHandling:t.gestureHandling,disableDefaultUI:t.disableUi,zoomControl:t.zoomControl,panControl:t.panControl,center:e,mapTypeControlOptions:{mapTypeIds:[google.maps.MapTypeId.ROADMAP,google.maps.MapTypeId.SATELLITE,"user_map_style"]}},n=new google.maps.Map(o,s),r={name:t.mapName},l=t.mapStyles;if(l){var g=new google.maps.StyledMapType(l,r);n.mapTypes.set("user_map_style",g),n.setMapTypeId("user_map_style")}(t.markerAtCenter&&(this.centerMarker=new google.maps.Marker({position:e,map:n,draggable:t.markersDraggable,icon:t.markerIcon,title:""}),n.centerMarker=this.centerMarker),t.keepCentered)&&(google.maps.event.addDomListener(n,"idle",(function(){i=n.getCenter()})),google.maps.event.addDomListener(window,"resize",(function(){n.setCenter(i)})));this.linkAutocompleteField(t.autocomplete,t.autocompleteElement,n,t),this.showMarkers(t.markerPositions,n,t),this.showDirections(t.directions,n,t),sowb.SiteOriginGoogleMapInstances.push(n)},linkAutocompleteField:function(e,t,a,i){if(e&&t){var s=function(o){this.inputAddress!==o&&(this.inputAddress=o,this.getLocation(this.inputAddress).done(function(o){a.setZoom(15),a.setCenter(o),this.centerMarker&&(this.centerMarker.setPosition(o),this.centerMarker.setTitle(this.inputAddress))}.bind(this)))}.bind(this),n=o(t);e.addListener("place_changed",function(){var o=e.getPlace();a.setZoom(15),o.geometry&&(a.setCenter(o.geometry.location),this.centerMarker&&this.centerMarker.setPosition(o.geometry.location))}.bind(this)),google.maps.event.addDomListener(t,"keypress",(function(o){"13"===(o.keyCode||o.which)&&o.preventDefault()})),n.on("focusin",function(){if(!this.resultsObserver){var e=document.querySelector(".pac-container");this.resultsObserver=new MutationObserver((function(){var e=o(o(".pac-item").get(0)),t=e.find(".pac-item-query").text(),a=e.find("span").not("[class]").text(),i=t+(a?", "+a:"");i&&s(i)}));this.resultsObserver.observe(e,{attributes:!0,childList:!0,characterData:!0})}}.bind(this));var r=function(o){this.getGeocoder().geocode({location:o},function(e,t){if(t===google.maps.GeocoderStatus.OK&&e.length>0){var a=e[0].formatted_address;n.val(a),this.centerMarker&&(this.centerMarker.setPosition(o),this.centerMarker.setTitle(a))}}.bind(this))}.bind(this);a.addListener("click",(function(o){r(o.latLng)})),this.centerMarker.addListener("dragend",(function(o){r(o.latLng)}))}},showMarkers:function(o,e,t){if(o&&o.length){this.infoWindows=[];for(var a=[],i=0;i<o.length;i++){var s=parseInt(i/10);a.length===s&&(a[s]=[]),a[s][i%10]=o[i]}var n=function(o){var a=o.customMarkerIcon,i=o.hasOwnProperty("info")?o.info:null,s=o.hasOwnProperty("infoMaxWidth")?o.infoMaxWidth:null;return this.getLocation(o.place).done(function(o){var n=t.markerIcon;a&&(n=a);var r=new google.maps.Marker({position:o,map:e,draggable:t.markersDraggable,icon:n,title:""});if(i){var l={content:i};s&&(l.maxWidth=s);var g=t.markerInfoDisplay;l.disableAutoPan="always"===g;var p=new google.maps.InfoWindow(l);this.infoWindows.push(p);var c=g;"always"===g&&(c="click",p.open({map:e,anchor:r,shouldFocus:!1})),r.addListener(c,function(){p.open(e,r),"always"===g||t.markerInfoMultiple||this.infoWindows.forEach((function(o){o!==p&&o.close()}))}.bind(this)),"mouseover"===g&&r.addListener("mouseout",(function(){setTimeout((function(){p.close()}),100)}))}}.bind(this)).fail((function(o){r=o===google.maps.GeocoderStatus.OVER_QUERY_LIMIT,console.log(o)}))}.bind(this),r=!1,l=function(o,e){for(var t=0,a=0;a<o.length&&!r;a++)n(o[a]).then((function(){++t===o.length&&e.length&&l(e.shift(),e)}))}.bind(this);l(a.shift(),a)}},showDirections:function(o,e){if(o){o.waypoints&&o.waypoints.length&&o.waypoints.map((function(o){o.stopover=Boolean(o.stopover)}));var t=new google.maps.DirectionsRenderer;t.setMap(e),(new google.maps.DirectionsService).route({origin:o.origin,destination:o.destination,travelMode:o.travelMode.toUpperCase(),avoidHighways:o.avoidHighways,avoidTolls:o.avoidTolls,waypoints:o.waypoints,optimizeWaypoints:o.optimizeWaypoints},(function(e,a){a===google.maps.DirectionsStatus.OK&&(t.setOptions({preserveViewport:o.preserveViewport}),t.setDirections(e))}))}},initMaps:function(){var e=o(".sow-google-map-autocomplete"),t=new o.Deferred;0===e.length?t.resolve():e.each(function(e,a){if(void 0!==google.maps.places){var i=new google.maps.places.Autocomplete(a),s=o(a).siblings(".sow-google-map-canvas");if(s.length>0){var n=s.data("options");n.autocomplete=i,n.autocompleteElement=a,this.getLocation(n.address).done(function(o){this.showMap(s.get(0),o,n),s.data("initialized",!0),t.resolve()}.bind(this)).fail((function(){s.append("<div><p><strong>"+soWidgetsGoogleMap.geocode.noResults+"</strong></p></div>"),t.reject()}))}}else t.reject('Sorry, we couldn\'t load the "places" library due to another plugin, so the autocomplete feature is not available.')}.bind(this)),t.always(function(){o(".sow-google-map-canvas").each(function(e,t){var a=o(t);if(a.data("initialized"))return!0;var i=a.data("options"),s=i.address;if(!s){var n=i.markerPositions;n&&n.length&&(s=n[0].place)}this.getLocation(s).done(function(o){this.showMap(a.get(0),o,i),a.data("initialized",!0)}.bind(this)).fail((function(){a.append("<div><p><strong>"+soWidgetsGoogleMap.geocode.noResults+"</strong></p></div>")}))}.bind(this))}.bind(this)).fail((function(o){console.log(o)})).done((function(){o(sowb).trigger("maps_loaded")}))},getGeocoder:function(){return this._geocoder||(this._geocoder=new google.maps.Geocoder),this._geocoder},getLocation:function(e){var t,a=new o.Deferred,i={address:e};if(e&&e.indexOf(",")>-1){var s=e.replace(/[\(\)]/g,"").split(",");s&&2===s.length&&(t=new google.maps.LatLng(s[0],s[1]),isNaN(t.lat())||isNaN(t.lng())||(i={location:{lat:t.lat(),lng:t.lng()}}))}if(i.hasOwnProperty("location"))a.resolve(i.location);else if(i.hasOwnProperty("address")){if(!i.address){var n=parseInt(Math.random()*this.DEFAULT_LOCATIONS.length);i.address=this.DEFAULT_LOCATIONS[n]}var r=0,l=function(o,e){e===google.maps.GeocoderStatus.OK?a.resolve(o[0].geometry.location):e===google.maps.GeocoderStatus.OVER_QUERY_LIMIT?++r<3?setTimeout(function(){this.getGeocoder().geocode.call(this,i,l)}.bind(this),1e3):a.reject(e):e!==google.maps.GeocoderStatus.ZERO_RESULTS&&e!==google.maps.GeocoderStatus.OVER_DAILY_LIMIT||a.reject(e)}.bind(this);this.getGeocoder().geocode(i,l)}return a}}},jQuery((function(o){sowb.googleMapsData=[],sowb.googleMapsData.libraries=[],sowb.setupGoogleMaps=function(e,t=!1){var a=o(".sow-google-map-canvas");a.length&&(a.each((function(e,t){var a=o(t);if(a.data("apiInitialized"))return a;var i=a.data("options");i&&(void 0!==i.libraries&&null!==i.libraries&&(sowb.googleMapsData.libraries=sowb.googleMapsData.libraries.concat(i.libraries)),!sowb.googleMapsData.apiKey&&i.apiKey&&(sowb.googleMapsData.apiKey=i.apiKey)),a.data("apiInitialized",!0)})),void 0===window.google&&(window.google={}),(t||void 0===window.google||void 0===window.google.maps)&&(sowb.loadGoogleMapsAPI(t),sowb.googleMapsData.timer=setInterval((function(){var o=!1;sowb.googleMapsData.ApiError=!0,void 0!==sowb.googleMapsData.ApiError&&sowb.googleMapsData.ApiError&&(o=!0),o||void 0===window.google||void 0===window.google.maps||(o=!0,soGoogleMapInitialize()),o&&clearInterval(sowb.googleMapsData.timer)}),250)))},sowb.loadGoogleMapsAPI=function(e=!1){o("#sow-google-maps-js").length&&(e||void 0!==sowb.googleMapsData.ApiError&&sowb.googleMapsData.ApiError)&&o("#sow-google-maps-js").remove(),sowb.googleMapsData.apiKey||console.warn("SiteOrigin Google Maps: Could not find API key. Google Maps API key is required.");var t="https://maps.googleapis.com/maps/api/js?key="+sowb.googleMapsData.apiKey+"&callback=soGoogleMapInitialize";if(sowb.googleMapsData.libraries&&sowb.googleMapsData.libraries.length&&(t+="&libraries="+sowb.googleMapsData.libraries.join(",")),window.console&&window.console.error){var a=window.console.error;sowb.googleMapsData.ApiError=!1,sowb.onLoadMapsApiError=function(e){var t;"string"==typeof e&&(t=e.match(/^Google Maps API (error|warning): ([^\s]*)\s([^\s]*)(?:\s(.*))?/)),t&&t.length&&t[0]&&(o(".sow-google-map-canvas").each((function(e,t){var a=o(t);if(a.data("fallbackImage")){var i=a.data("fallbackImage");i.hasOwnProperty("img")&&a.append(i.img)}})),sowb.googleMapsData.ApiError=!0),a.apply(window.console,arguments)},window.console.error=sowb.onLoadMapsApiError}soWidgetsGoogleMap.map_consent?(e&&o(".sow-google-map-consent button").off("click"),o(".sow-google-map-consent button").on("click",(function(){o(".sow-google-map-consent").remove(),o(".sow-google-map-canvas").show(),o("body").append('<script async type="text/javascript" id="sow-google-maps-js" src="'+t+'">'),sowb.mapsApiInitialized=!0}))):(o("body").append('<script async type="text/javascript" id="sow-google-maps-js" src="'+t+'">'),sowb.mapsApiInitialized=!0)},sowb.setupGoogleMaps(),o(sowb).on("setup_widgets",sowb.setupGoogleMaps)}));
lang/so-widgets-bundle.pot CHANGED
@@ -2056,11 +2056,11 @@ msgstr ""
2056
  msgid "Text shadow intensity"
2057
  msgstr ""
2058
 
2059
- #: widgets/hero/hero.php:335
2060
  msgid "Link color"
2061
  msgstr ""
2062
 
2063
- #: widgets/hero/hero.php:340
2064
  msgid "Link hover color"
2065
  msgstr ""
2066
 
@@ -2788,14 +2788,6 @@ msgstr ""
2788
  msgid "Always use the embedded video rather than the MediaElement player."
2789
  msgstr ""
2790
 
2791
- #: widgets/video/video.php:127
2792
- msgid "Show related videos."
2793
- msgstr ""
2794
-
2795
- #: widgets/video/video.php:128
2796
- msgid "If the external host supports it."
2797
- msgstr ""
2798
-
2799
  #: base/inc/fields/autocomplete.class.php:46
2800
  msgid "Search"
2801
  msgstr ""
@@ -3313,15 +3305,19 @@ msgstr ""
3313
  msgid "Loop slide background videos"
3314
  msgstr ""
3315
 
3316
- #: base/inc/widgets/base-slider.class.php:387
 
 
 
 
3317
  msgid "display slide %s"
3318
  msgstr ""
3319
 
3320
- #: base/inc/widgets/base-slider.class.php:392
3321
  msgid "next slide"
3322
  msgstr ""
3323
 
3324
- #: base/inc/widgets/base-slider.class.php:398
3325
  msgid "previous slide"
3326
  msgstr ""
3327
 
2056
  msgid "Text shadow intensity"
2057
  msgstr ""
2058
 
2059
+ #: widgets/hero/hero.php:334
2060
  msgid "Link color"
2061
  msgstr ""
2062
 
2063
+ #: widgets/hero/hero.php:339
2064
  msgid "Link hover color"
2065
  msgstr ""
2066
 
2788
  msgid "Always use the embedded video rather than the MediaElement player."
2789
  msgstr ""
2790
 
 
 
 
 
 
 
 
 
2791
  #: base/inc/fields/autocomplete.class.php:46
2792
  msgid "Search"
2793
  msgstr ""
3305
  msgid "Loop slide background videos"
3306
  msgstr ""
3307
 
3308
+ #: base/inc/widgets/base-slider.class.php:262
3309
+ msgid "Background video opacity"
3310
+ msgstr ""
3311
+
3312
+ #: base/inc/widgets/base-slider.class.php:401
3313
  msgid "display slide %s"
3314
  msgstr ""
3315
 
3316
+ #: base/inc/widgets/base-slider.class.php:406
3317
  msgid "next slide"
3318
  msgstr ""
3319
 
3320
+ #: base/inc/widgets/base-slider.class.php:412
3321
  msgid "previous slide"
3322
  msgstr ""
3323
 
readme.txt CHANGED
@@ -3,8 +3,8 @@ Tags: widget, button, slider, hero, google maps, image, carousel, features, icon
3
  Requires at least: 4.2
4
  Tested up to: 5.8
5
  Requires PHP: 5.6.20
6
- Stable tag: 1.25.0
7
- Build time: 2021-10-21T21:08:23+02:00
8
  License: GPLv3 or later
9
  Contributors: gpriday, braam-genis, alexgso
10
  Donate link: https://siteorigin.com/downloads/premium/
@@ -100,6 +100,12 @@ The Widgets Bundle global interface is available at Plugins > SiteOrigin Widgets
100
 
101
  == Changelog ==
102
 
 
 
 
 
 
 
103
  = 1.25.0 - 21 October 2021 =
104
  * Features: Added a `Link feature column to more URL` setting.
105
  * Hero and Layout Slider: Moved Layout settings to dedicated section.
3
  Requires at least: 4.2
4
  Tested up to: 5.8
5
  Requires PHP: 5.6.20
6
+ Stable tag: 1.25.1
7
+ Build time: 2021-10-30T11:24:37+02:00
8
  License: GPLv3 or later
9
  Contributors: gpriday, braam-genis, alexgso
10
  Donate link: https://siteorigin.com/downloads/premium/
100
 
101
  == Changelog ==
102
 
103
+ = 1.25.1 - 30 October 2021 =
104
+ * Google Maps: Resolved an unexpected content error when previewing in the Block Editor.
105
+ * Hero: Migrated Text Shadow setting from a 0-1 to a 0-100 range.
106
+ * Sliders: Added a Background video opacity setting for self-hosted and external videos.
107
+ * Video Player: Removed Related Videos setting.
108
+
109
  = 1.25.0 - 21 October 2021 =
110
  * Features: Added a `Link feature column to more URL` setting.
111
  * Hero and Layout Slider: Moved Layout settings to dedicated section.
so-widgets-bundle.php CHANGED
@@ -2,7 +2,7 @@
2
  /*
3
  Plugin Name: SiteOrigin Widgets Bundle
4
  Description: A highly customizable collection of widgets, ready to be used anywhere, neatly bundled into a single plugin.
5
- Version: 1.25.0
6
  Text Domain: so-widgets-bundle
7
  Domain Path: /lang
8
  Author: SiteOrigin
@@ -12,7 +12,7 @@ License: GPL3
12
  License URI: https://www.gnu.org/licenses/gpl-3.0.txt
13
  */
14
 
15
- define('SOW_BUNDLE_VERSION', '1.25.0');
16
  define('SOW_BUNDLE_BASE_FILE', __FILE__);
17
 
18
  // Allow JS suffix to be pre-set
2
  /*
3
  Plugin Name: SiteOrigin Widgets Bundle
4
  Description: A highly customizable collection of widgets, ready to be used anywhere, neatly bundled into a single plugin.
5
+ Version: 1.25.1
6
  Text Domain: so-widgets-bundle
7
  Domain Path: /lang
8
  Author: SiteOrigin
12
  License URI: https://www.gnu.org/licenses/gpl-3.0.txt
13
  */
14
 
15
+ define('SOW_BUNDLE_VERSION', '1.25.1');
16
  define('SOW_BUNDLE_BASE_FILE', __FILE__);
17
 
18
  // Allow JS suffix to be pre-set
widgets/anything-carousel/assets/banner.svg CHANGED
@@ -1 +1 @@
1
- <svg enable-background="new 0 0 120 120" viewBox="0 0 120 120" xmlns="http://www.w3.org/2000/svg"><path d="m0 0h120v120h-120z" fill="#1880b6"/><g stroke="#324249" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"><path d="m33 43h54v34h-54z" fill="#86d7f2"/><path d="m43 37h34v46h-34z" fill="#f0eed5"/><path d="m43 37h34v24h-34z" fill="#86d7f2"/><path d="m62.2 47.8-13.2 13.2h28v-4l-9.2-9.2c-1.5-1.5-4.1-1.5-5.6 0z" fill="#f0eed5"/><circle cx="52" cy="46" fill="#f0eed5" r="3"/><path d="m49 69h22" fill="none"/><path d="m49 75h18" fill="none"/></g></svg>
1
+ <svg enable-background="new 0 0 120 120" viewBox="0 0 120 120" xmlns="http://www.w3.org/2000/svg"><path d="m0 0h120v120h-120z" fill="#1880b6"/><g stroke="#324249" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"><path d="m29 40.5h62v39h-62z" fill="#86d7f2"/><path d="m40.5 33.6h39v52.8h-39z" fill="#f0eed5"/><path d="m40.5 33.6h39v27.6h-39z" fill="#86d7f2"/><path d="m62.5 46-15.1 15.1h32.1v-4.6l-10.5-10.5c-1.8-1.7-4.8-1.7-6.5 0z" fill="#f0eed5"/><circle cx="50.8" cy="43.9" fill="#f0eed5" r="3.4"/><path d="m47.4 70.3h25.3" fill="none"/><path d="m47.4 77.2h20.6" fill="none"/></g></svg>
widgets/hero/hero.php CHANGED
@@ -324,10 +324,9 @@ class SiteOrigin_Widget_Hero_Widget extends SiteOrigin_Widget_Base_Slider {
324
  'text_shadow' => array(
325
  'type' => 'slider',
326
  'label' => __( 'Text shadow intensity', 'so-widgets-bundle' ),
327
- 'max' => 1,
328
  'min' => 0,
329
- 'step' => 0.01,
330
- 'default' => 0.25,
331
  ),
332
 
333
  'link_color' => array(
@@ -426,6 +425,30 @@ class SiteOrigin_Widget_Hero_Widget extends SiteOrigin_Widget_Base_Slider {
426
  return apply_filters( 'siteorigin_hero_frame_content', $content, $frame );
427
  }
428
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
429
  /**
430
  * The less variables to control the design of the slider
431
  *
@@ -483,7 +506,7 @@ class SiteOrigin_Widget_Hero_Widget extends SiteOrigin_Widget_Base_Slider {
483
 
484
  $less['heading_shadow'] = (int) $instance['design']['heading_shadow'];
485
  $less['heading_color'] = $instance['design']['heading_color'];
486
- $less['text_shadow'] = isset( $instance['design']['text_shadow'] ) ? (float) $instance['design']['text_shadow'] : 0.25;
487
  $less['text_color'] = $instance['design']['text_color'];
488
 
489
 
324
  'text_shadow' => array(
325
  'type' => 'slider',
326
  'label' => __( 'Text shadow intensity', 'so-widgets-bundle' ),
327
+ 'max' => 100,
328
  'min' => 0,
329
+ 'default' => 25,
 
330
  ),
331
 
332
  'link_color' => array(
425
  return apply_filters( 'siteorigin_hero_frame_content', $content, $frame );
426
  }
427
 
428
+ /**
429
+ * Migrate Slider settings.
430
+ *
431
+ * @param $instance
432
+ *
433
+ * @return mixed
434
+ */
435
+ function modify_instance( $instance ) {
436
+ if ( empty( $instance ) ) {
437
+ return array();
438
+ }
439
+
440
+ // Migrate Text shadow intensity setting to the 0 - 100 range.
441
+ if (
442
+ ! empty( $instance['design'] ) &&
443
+ ! empty( $instance['design']['text_shadow'] ) &&
444
+ (int) $instance['design']['text_shadow'] != $instance['design']['text_shadow']
445
+ ) {
446
+ $instance['design']['text_shadow'] *= 100;
447
+ }
448
+
449
+ return parent::modify_instance( $instance );
450
+ }
451
+
452
  /**
453
  * The less variables to control the design of the slider
454
  *
506
 
507
  $less['heading_shadow'] = (int) $instance['design']['heading_shadow'];
508
  $less['heading_color'] = $instance['design']['heading_color'];
509
+ $less['text_shadow'] = isset( $instance['design']['text_shadow'] ) ? (float) $instance['design']['text_shadow'] : 25;
510
  $less['text_color'] = $instance['design']['text_color'];
511
 
512
 
widgets/hero/styles/default.less CHANGED
@@ -130,7 +130,7 @@
130
  p {
131
  color: @text_color;
132
  & when not ( @text_shadow = 0 ) {
133
- text-shadow: 0 2px 2px rgba( 0, 0, 0, @text_shadow );
134
  }
135
  margin: 1em 0;
136
  font-size: @text_size;
130
  p {
131
  color: @text_color;
132
  & when not ( @text_shadow = 0 ) {
133
+ text-shadow: 0 2px 2px rgba( 0, 0, 0, @text_shadow / 100 );
134
  }
135
  margin: 1em 0;
136
  font-size: @text_size;
widgets/video/tpl/default.php CHANGED
@@ -4,7 +4,6 @@
4
  * @var $args
5
  * @var $player_id
6
  * @var $autoplay
7
- * @var $related_videos
8
  * @var $skin_class
9
  * @var $is_skinnable_video_host
10
  * @var $sources
@@ -61,7 +60,7 @@ do_action( 'siteorigin_widgets_sow-video_before_video', $instance );
61
  <?php endforeach; ?>
62
  </video>
63
  <?php else : ?>
64
- <?php echo $so_video->get_video_oembed( $src, $autoplay, $related_videos, $loop ); ?>
65
  <?php endif; ?>
66
  </div>
67
  <?php do_action( 'siteorigin_widgets_sow-video_after_video', $instance ); ?>
4
  * @var $args
5
  * @var $player_id
6
  * @var $autoplay
 
7
  * @var $skin_class
8
  * @var $is_skinnable_video_host
9
  * @var $sources
60
  <?php endforeach; ?>
61
  </video>
62
  <?php else : ?>
63
+ <?php echo $so_video->get_video_oembed( $src, $autoplay, false, $loop ); ?>
64
  <?php endif; ?>
65
  </div>
66
  <?php do_action( 'siteorigin_widgets_sow-video_after_video', $instance ); ?>
widgets/video/video.php CHANGED
@@ -121,16 +121,6 @@ class SiteOrigin_Widget_Video_Widget extends SiteOrigin_Widget {
121
  'video_type[self]' => array( 'hide' ),
122
  )
123
  ),
124
- 'related_videos' => array(
125
- 'type' => 'checkbox',
126
- 'default' => true,
127
- 'label' => __( 'Show related videos.', 'so-widgets-bundle' ),
128
- 'description' => __( 'If the external host supports it.', 'so-widgets-bundle' ),
129
- 'state_handler' => array(
130
- 'video_type[external]' => array( 'show' ),
131
- 'video_type[self]' => array( 'hide' ),
132
- )
133
- ),
134
  ),
135
  ),
136
  );
@@ -235,7 +225,6 @@ class SiteOrigin_Widget_Video_Widget extends SiteOrigin_Widget {
235
  'poster' => $poster,
236
  'autoplay' => ! empty( $instance['playback']['autoplay'] ),
237
  'loop' => ! empty( $instance['playback']['loop'] ),
238
- 'related_videos' => ! empty( $instance['playback']['related_videos'] ),
239
  'skin_class' => 'default',
240
  'fitvids' => ! empty( $instance['playback']['fitvids'] ),
241
  );
121
  'video_type[self]' => array( 'hide' ),
122
  )
123
  ),
 
 
 
 
 
 
 
 
 
 
124
  ),
125
  ),
126
  );
225
  'poster' => $poster,
226
  'autoplay' => ! empty( $instance['playback']['autoplay'] ),
227
  'loop' => ! empty( $instance['playback']['loop'] ),
 
228
  'skin_class' => 'default',
229
  'fitvids' => ! empty( $instance['playback']['fitvids'] ),
230
  );