SiteOrigin Widgets Bundle - Version 1.41.0

Version Description

  • 13 September 2022 =
  • Blog: Adjusted article tag CSS to ensure priority over theme styling.
  • Blog: Removed featured image center alignment for the Alternate template.
  • Blog: Added featured image image sizes for the Grid, Alternate, and Portfolio templates.
  • Features: Added a new setting Bottom align More link text.
  • Google Maps: Only setup consent if Google Maps not already setup.
  • LiteSpeed Cache: Ensured purge header isn't set if headers already sent.
  • Post Carousel: Resolved Overlay Theme Slides to Scroll incorrect count.
  • Developer: Added siteorigin_widgets_blog_excerpt_trim filter.
  • Developer: Added siteorigin_widgets_blog_image_sizes filter.
Download this release

Release Info

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

Code changes from version 1.40.2 to 1.41.0

compat/compat.php CHANGED
@@ -131,7 +131,7 @@ class SiteOrigin_Widgets_Bundle_Compatibility {
131
  Breeze_PurgeCache::breeze_cache_flush();
132
  }
133
 
134
- if ( function_exists( 'run_litespeed_cache' ) ) {
135
  header( 'x-litespeed-purge: *' );
136
  }
137
  }
131
  Breeze_PurgeCache::breeze_cache_flush();
132
  }
133
 
134
+ if ( function_exists( 'run_litespeed_cache' ) && ! headers_sent() ) {
135
  header( 'x-litespeed-purge: *' );
136
  }
137
  }
js/carousel.js CHANGED
@@ -164,7 +164,7 @@ jQuery( function ( $ ) {
164
  $items.slick( 'slickGoTo', 0 );
165
  }
166
  // If slidesToScroll is higher than the the number of visible items, go to the last item.
167
- } else if ( $$.data( 'widget' ) == 'post' && slidesToScroll >= numVisibleItemsFloor ) {
168
  // There's more slides than items, update Slick settings to allow for scrolling of partially visible items.
169
  $items.slick( 'slickSetOption', 'slidesToShow', numVisibleItemsFloor );
170
  $items.slick( 'slickSetOption', 'slidesToScroll', numVisibleItemsFloor );
164
  $items.slick( 'slickGoTo', 0 );
165
  }
166
  // If slidesToScroll is higher than the the number of visible items, go to the last item.
167
+ } else if ( $$.data( 'widget' ) == 'post' && $$.data( 'carousel_settings' ).theme == 'undefined' && slidesToScroll >= numVisibleItemsFloor ) {
168
  // There's more slides than items, update Slick settings to allow for scrolling of partially visible items.
169
  $items.slick( 'slickSetOption', 'slidesToShow', numVisibleItemsFloor );
170
  $items.slick( 'slickSetOption', 'slidesToScroll', numVisibleItemsFloor );
js/carousel.min.js CHANGED
@@ -1 +1 @@
1
- var sowb=window.sowb||{};jQuery((function(i){sowb.setupCarousel=function(){i.fn.setSlideTo=function(s){$item=i(this);var e=$item.slick("slickGetOption","slidesToShow"),t=$item.slick("slickGetOption","slidesToScroll");$item.slick("slickSetOption","slidesToShow",1),$item.slick("slickSetOption","slidesToScroll",1),$item.slick("slickGoTo",s),$item.slick("slickSetOption","slidesToShow",e),$item.slick("slickSetOption","slidesToScroll",t)},i(".sow-carousel-wrapper").on("init",(function(s,e){i(this).css("opacity",1)})),i(".sow-carousel-wrapper").each((function(){var s=i(this),e=s.find(".sow-carousel-items"),t=s.data("responsive"),o=s.data("carousel_settings");if(e.not(".slick-initialized").slick({arrows:!1,dots:o.dots,appendDots:o.appendDots?s.find(".sow-carousel-nav"):s,rows:0,rtl:"rtl"==s.data("dir"),touchThreshold:20,infinite:o.loop&&(!s.data("ajax-url")||s.data("ajax-url")&&o.autoplay_continuous_scroll&&o.autoplay),variableWidth:s.data("variable_width"),accessibility:!1,adaptiveHeight:o.adaptive_height,cssEase:o.animation,speed:o.animation_speed,slidesToScroll:t.desktop_slides_to_scroll,slidesToShow:void 0===t.desktop_slides_to_show?t.desktop_slides_to_scroll:t.desktop_slides_to_show,responsive:[{breakpoint:t.tablet_portrait_breakpoint,settings:{slidesToScroll:t.tablet_portrait_slides_to_scroll,slidesToShow:void 0===t.tablet_portrait_slides_to_show?t.tablet_portrait_slides_to_scroll:t.tablet_portrait_slides_to_show}},{breakpoint:t.mobile_breakpoint,settings:{slidesToScroll:t.mobile_slides_to_scroll,slidesToShow:void 0===t.mobile_slides_to_show?t.mobile_slides_to_scroll:t.mobile_slides_to_show}}]}),o.item_overflow&&(e.css("width",""),e.css("opacity","")),e.on("swipe",(function(i,e,t){s.parent().parent().find(".sow-carousel-"+("left"==t?"next":"prev")).trigger("touchend")})),o.autoplay){var l=!1,a=s.parent().parent().find(".sow-carousel-"+("ltr"==s.data("dir")?"next":"prev"));setInterval((function(){l||a.trigger("click")}),o.autoplaySpeed),o.pauseOnHover&&(e.on("mouseenter.slick",(function(){l=!0})),e.on("mouseleave.slick",(function(){l=!1})))}if(s.parent().parent().find(".sow-carousel-previous, .sow-carousel-next").on("click touchend",(function(e,t){e.preventDefault();var l=s.find(".sow-carousel-items"),a=l.find(".sow-carousel-item").length,c=a>=s.data("item_count"),d=Math.ceil(l.outerWidth()/l.find(".sow-carousel-item").outerWidth(!0)),r=Math.floor(l.outerWidth()/l.find(".sow-carousel-item").outerWidth(!0)),n=l.slick("slickGetOption","slidesToScroll"),k=a-d,u=!1;"post"==s.data("widget")&&"undefined"!=s.data("carousel_settings").theme&&c&&k++,c||(l.slick("slickCurrentSlide")+d>=a-1||l.slick("slickCurrentSlide")+n>k)&&(i(sowb).trigger("carousel_load_new_items",[s,l,t]),u=!0),i(this).hasClass("sow-carousel-next")&&!u?c&&l.slick("slickCurrentSlide")>=k?s.data("carousel_settings").loop&&l.slick("slickGoTo",0):"post"==s.data("widget")&&n>=r?(l.slick("slickSetOption","slidesToShow",r),l.slick("slickSetOption","slidesToScroll",r),l.slick("slickNext")):l.slick("slickCurrentSlide")+n>k?l.setSlideTo(k):l.slick("slickNext"):i(this).hasClass("sow-carousel-previous")&&(s.data("carousel_settings").loop&&0==l.slick("slickCurrentSlide")?l.slick("slickGoTo",k):"post"==s.data("widget")&&l.slick("slickCurrentSlide")<=n?l.slick("slickGoTo",0):l.slick("slickPrev")),o.dots&&"post"==s.data("widget")&&(s.find("li.slick-active").removeClass("slick-active"),s.find(".slick-dots li").eq(Math.ceil(s.find(".sow-carousel-items").slick("slickCurrentSlide")/n)).addClass("slick-active"))})),o.dots&&(s.data("variable_width")||s.data("carousel_settings").theme)){s.find(".slick-dots li").off("click.slick");var c=function(){e=s.find(".sow-carousel-items");var t=i(this).index(),o=e.slick("slickGetOption","slidesToScroll"),l=e.find(".sow-carousel-item").length,a=Math.ceil(e.outerWidth()/e.find(".sow-carousel-item").outerWidth(!0)),c=l-a;(t+a>=l?(e.slick("slickGoTo",c),$dots=i(this).parent(),$dots.find(".slick-active").removeClass("slick-active"),$dots.children().eq(t).addClass("slick-active")):("post"==s.data("widget")&&(t=Math.ceil(i(this).index()*o)),e.slick("slickGoTo",t)),"post"==s.data("widget"))&&(l>=s.data("item_count")||(e.slick("slickCurrentSlide")+a>=l-1||e.slick("slickCurrentSlide")+o>c)&&i(sowb).trigger("carousel_load_new_items",[s,e,!1]))};s.find(".slick-dots li").on("click touchend",c),i(sowb).on("carousel_posts_added",(function(){s.find(".slick-dots li").on("click touchend",c)}))}})),i(sowb).trigger("carousel_setup"),i(document).on("keydown",".sow-carousel-navigation a",(function(s){13!=s.keyCode&&32!=s.keyCode||(s.preventDefault(),i(this).trigger("click"))})),i(document).on("keyup",".sow-carousel-item",(function(s){if(13==s.keyCode&&i(this).find("h3 a")[0].click(),37==s.keyCode||39==s.keyCode){var e=i(this).parents(".sow-carousel-wrapper"),t=e.find(".sow-carousel-items"),o=t.find(".sow-carousel-item").length,l=i(this).data("slick-index"),a=o-(o===e.data("item_count")?0:1);if(37==s.keyCode)--l<0&&(l=a);else if(39==s.keyCode&&++l>=a){if(e.data("fetching"))return;e.parent().find(".sow-carousel-next").trigger("click",!0)}t.slick("slickGoTo",l,!0),e.find(".sow-carousel-item").prop("tabindex",-1),e.find('.sow-carousel-item[data-slick-index="'+l+'"]').trigger("focus").prop("tabindex",0)}}));var s=function(){i(".sow-carousel-wrapper").each((function(){var s=i(this),e=s.find(".sow-carousel-items.slick-initialized"),t=s.data("responsive");window.matchMedia("(min-width: "+t.tablet_portrait_breakpoint+"px) and (max-width: "+t.tablet_landscape_breakpoint+"px) and (orientation: landscape)").matches&&(e.slick("slickSetOption","slidesToShow",t.tablet_landscape_slides_to_show),e.slick("slickSetOption","slidesToScroll",t.tablet_landscape_slides_to_scroll))})),i(".sow-carousel-item:first-of-type").prop("tabindex",0)};s(),i(window).on("resize load",s)},sowb.setupCarousel(),i(sowb).on("setup_widgets",sowb.setupCarousel)})),window.sowb=sowb;
1
+ var sowb=window.sowb||{};jQuery((function(s){sowb.setupCarousel=function(){s.fn.setSlideTo=function(i){$item=s(this);var e=$item.slick("slickGetOption","slidesToShow"),t=$item.slick("slickGetOption","slidesToScroll");$item.slick("slickSetOption","slidesToShow",1),$item.slick("slickSetOption","slidesToScroll",1),$item.slick("slickGoTo",i),$item.slick("slickSetOption","slidesToShow",e),$item.slick("slickSetOption","slidesToScroll",t)},s(".sow-carousel-wrapper").on("init",(function(i,e){s(this).css("opacity",1)})),s(".sow-carousel-wrapper").each((function(){var i=s(this),e=i.find(".sow-carousel-items"),t=i.data("responsive"),o=i.data("carousel_settings");if(e.not(".slick-initialized").slick({arrows:!1,dots:o.dots,appendDots:o.appendDots?i.find(".sow-carousel-nav"):i,rows:0,rtl:"rtl"==i.data("dir"),touchThreshold:20,infinite:o.loop&&(!i.data("ajax-url")||i.data("ajax-url")&&o.autoplay_continuous_scroll&&o.autoplay),variableWidth:i.data("variable_width"),accessibility:!1,adaptiveHeight:o.adaptive_height,cssEase:o.animation,speed:o.animation_speed,slidesToScroll:t.desktop_slides_to_scroll,slidesToShow:void 0===t.desktop_slides_to_show?t.desktop_slides_to_scroll:t.desktop_slides_to_show,responsive:[{breakpoint:t.tablet_portrait_breakpoint,settings:{slidesToScroll:t.tablet_portrait_slides_to_scroll,slidesToShow:void 0===t.tablet_portrait_slides_to_show?t.tablet_portrait_slides_to_scroll:t.tablet_portrait_slides_to_show}},{breakpoint:t.mobile_breakpoint,settings:{slidesToScroll:t.mobile_slides_to_scroll,slidesToShow:void 0===t.mobile_slides_to_show?t.mobile_slides_to_scroll:t.mobile_slides_to_show}}]}),o.item_overflow&&(e.css("width",""),e.css("opacity","")),e.on("swipe",(function(s,e,t){i.parent().parent().find(".sow-carousel-"+("left"==t?"next":"prev")).trigger("touchend")})),o.autoplay){var l=!1,a=i.parent().parent().find(".sow-carousel-"+("ltr"==i.data("dir")?"next":"prev"));setInterval((function(){l||a.trigger("click")}),o.autoplaySpeed),o.pauseOnHover&&(e.on("mouseenter.slick",(function(){l=!0})),e.on("mouseleave.slick",(function(){l=!1})))}if(i.parent().parent().find(".sow-carousel-previous, .sow-carousel-next").on("click touchend",(function(e,t){e.preventDefault();var l=i.find(".sow-carousel-items"),a=l.find(".sow-carousel-item").length,c=a>=i.data("item_count"),d=Math.ceil(l.outerWidth()/l.find(".sow-carousel-item").outerWidth(!0)),n=Math.floor(l.outerWidth()/l.find(".sow-carousel-item").outerWidth(!0)),r=l.slick("slickGetOption","slidesToScroll"),u=a-d,k=!1;"post"==i.data("widget")&&"undefined"!=i.data("carousel_settings").theme&&c&&u++,c||(l.slick("slickCurrentSlide")+d>=a-1||l.slick("slickCurrentSlide")+r>u)&&(s(sowb).trigger("carousel_load_new_items",[i,l,t]),k=!0),s(this).hasClass("sow-carousel-next")&&!k?c&&l.slick("slickCurrentSlide")>=u?i.data("carousel_settings").loop&&l.slick("slickGoTo",0):"post"==i.data("widget")&&"undefined"==i.data("carousel_settings").theme&&r>=n?(l.slick("slickSetOption","slidesToShow",n),l.slick("slickSetOption","slidesToScroll",n),l.slick("slickNext")):l.slick("slickCurrentSlide")+r>u?l.setSlideTo(u):l.slick("slickNext"):s(this).hasClass("sow-carousel-previous")&&(i.data("carousel_settings").loop&&0==l.slick("slickCurrentSlide")?l.slick("slickGoTo",u):"post"==i.data("widget")&&l.slick("slickCurrentSlide")<=r?l.slick("slickGoTo",0):l.slick("slickPrev")),o.dots&&"post"==i.data("widget")&&(i.find("li.slick-active").removeClass("slick-active"),i.find(".slick-dots li").eq(Math.ceil(i.find(".sow-carousel-items").slick("slickCurrentSlide")/r)).addClass("slick-active"))})),o.dots&&(i.data("variable_width")||i.data("carousel_settings").theme)){i.find(".slick-dots li").off("click.slick");var c=function(){e=i.find(".sow-carousel-items");var t=s(this).index(),o=e.slick("slickGetOption","slidesToScroll"),l=e.find(".sow-carousel-item").length,a=Math.ceil(e.outerWidth()/e.find(".sow-carousel-item").outerWidth(!0)),c=l-a;(t+a>=l?(e.slick("slickGoTo",c),$dots=s(this).parent(),$dots.find(".slick-active").removeClass("slick-active"),$dots.children().eq(t).addClass("slick-active")):("post"==i.data("widget")&&(t=Math.ceil(s(this).index()*o)),e.slick("slickGoTo",t)),"post"==i.data("widget"))&&(l>=i.data("item_count")||(e.slick("slickCurrentSlide")+a>=l-1||e.slick("slickCurrentSlide")+o>c)&&s(sowb).trigger("carousel_load_new_items",[i,e,!1]))};i.find(".slick-dots li").on("click touchend",c),s(sowb).on("carousel_posts_added",(function(){i.find(".slick-dots li").on("click touchend",c)}))}})),s(sowb).trigger("carousel_setup"),s(document).on("keydown",".sow-carousel-navigation a",(function(i){13!=i.keyCode&&32!=i.keyCode||(i.preventDefault(),s(this).trigger("click"))})),s(document).on("keyup",".sow-carousel-item",(function(i){if(13==i.keyCode&&s(this).find("h3 a")[0].click(),37==i.keyCode||39==i.keyCode){var e=s(this).parents(".sow-carousel-wrapper"),t=e.find(".sow-carousel-items"),o=t.find(".sow-carousel-item").length,l=s(this).data("slick-index"),a=o-(o===e.data("item_count")?0:1);if(37==i.keyCode)--l<0&&(l=a);else if(39==i.keyCode&&++l>=a){if(e.data("fetching"))return;e.parent().find(".sow-carousel-next").trigger("click",!0)}t.slick("slickGoTo",l,!0),e.find(".sow-carousel-item").prop("tabindex",-1),e.find('.sow-carousel-item[data-slick-index="'+l+'"]').trigger("focus").prop("tabindex",0)}}));var i=function(){s(".sow-carousel-wrapper").each((function(){var i=s(this),e=i.find(".sow-carousel-items.slick-initialized"),t=i.data("responsive");window.matchMedia("(min-width: "+t.tablet_portrait_breakpoint+"px) and (max-width: "+t.tablet_landscape_breakpoint+"px) and (orientation: landscape)").matches&&(e.slick("slickSetOption","slidesToShow",t.tablet_landscape_slides_to_show),e.slick("slickSetOption","slidesToScroll",t.tablet_landscape_slides_to_scroll))})),s(".sow-carousel-item:first-of-type").prop("tabindex",0)};i(),s(window).on("resize load",i)},sowb.setupCarousel(),s(sowb).on("setup_widgets",sowb.setupCarousel)})),window.sowb=sowb;
js/sow.google-map.js CHANGED
@@ -448,7 +448,7 @@ jQuery( window.sowb ).on( 'sow-google-map-loaded', function() {
448
  jQuery(function ($) {
449
  sowb.googleMapsData = [];
450
  sowb.googleMapsData.libraries = [];
451
- sowb.setupGoogleMaps = function( e, forceLoad = false ) {
452
  var $mapCanvas = $( '.sow-google-map-canvas' );
453
  if ( ! $mapCanvas.length ) {
454
  return;
@@ -584,8 +584,10 @@ jQuery(function ($) {
584
  $( '.sow-google-map-consent button' ).on( 'click', function() {
585
  $( '.sow-google-map-consent' ).remove();
586
  $( '.sow-google-map-canvas' ).show();
587
- $( 'body' ).append( '<script async type="text/javascript" id="sow-google-maps-js" src="' + apiUrl + '">' );
588
- sowb.mapsApiInitialized = true;
 
 
589
  } );
590
  } else {
591
  $( 'body' ).append( '<script async type="text/javascript" id="sow-google-maps-js" src="' + apiUrl + '">' );
448
  jQuery(function ($) {
449
  sowb.googleMapsData = [];
450
  sowb.googleMapsData.libraries = [];
451
+ sowb.setupGoogleMaps = function( e, forceLoad = false ) {
452
  var $mapCanvas = $( '.sow-google-map-canvas' );
453
  if ( ! $mapCanvas.length ) {
454
  return;
584
  $( '.sow-google-map-consent button' ).on( 'click', function() {
585
  $( '.sow-google-map-consent' ).remove();
586
  $( '.sow-google-map-canvas' ).show();
587
+ if ( ! sowb.mapsApiInitialized ) {
588
+ $( 'body' ).append( '<script async type="text/javascript" id="sow-google-maps-js" src="' + apiUrl + '">' );
589
+ sowb.mapsApiInitialized = true;
590
+ }
591
  } );
592
  } else {
593
  $( 'body' ).append( '<script async type="text/javascript" id="sow-google-maps-js" src="' + apiUrl + '">' );
js/sow.google-map.min.js CHANGED
@@ -1 +1 @@
1
- function soGoogleMapInitialize(){jQuery(window.sowb).trigger("sow-google-map-loaded")}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,a){var t=Number(a.zoom);t||(t=14),window.matchMedia("(max-width: "+a.breakpoint+"px)").matches&&(t=a.mobileZoom);var i,n={zoom:t,gestureHandling:a.gestureHandling,disableDefaultUI:a.disableUi,zoomControl:a.zoomControl,panControl:a.panControl,center:e,mapTypeControlOptions:{mapTypeIds:[window.google.maps.MapTypeId.ROADMAP,window.google.maps.MapTypeId.SATELLITE,"user_map_style"]}},s=new window.google.maps.Map(o,n),r={name:a.mapName},l=a.mapStyles;if(l){var g=new window.google.maps.StyledMapType(l,r);s.mapTypes.set("user_map_style",g),s.setMapTypeId("user_map_style")}(a.markerAtCenter&&(this.centerMarker=new window.google.maps.Marker({position:e,map:s,draggable:a.markersDraggable,icon:a.markerIcon,title:""}),s.centerMarker=this.centerMarker),a.keepCentered)&&(window.google.maps.event.addDomListener(s,"idle",(function(){i=s.getCenter()})),window.google.maps.event.addDomListener(window,"resize",(function(){s.setCenter(i)})));this.linkAutocompleteField(a.autocomplete,a.autocompleteElement,s,a),this.showMarkers(a.markerPositions,s,a),this.showDirections(a.directions,s,a),sowb.SiteOriginGoogleMapInstances.push(s)},linkAutocompleteField:function(e,a,t,i){if(e&&a){var n=function(o){this.inputAddress!==o&&(this.inputAddress=o,this.getLocation(this.inputAddress).done(function(o){t.setZoom(15),t.setCenter(o),this.centerMarker&&(this.centerMarker.setPosition(o),this.centerMarker.setTitle(this.inputAddress))}.bind(this)))}.bind(this),s=o(a);e.addListener("place_changed",function(){var o=e.getPlace();t.setZoom(15),o.geometry&&(t.setCenter(o.geometry.location),this.centerMarker&&this.centerMarker.setPosition(o.geometry.location))}.bind(this)),window.google.maps.event.addDomListener(a,"keypress",(function(o){"13"===(o.keyCode||o.which)&&o.preventDefault()})),s.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)),a=e.find(".pac-item-query").text(),t=e.find("span").not("[class]").text(),i=a+(t?", "+t:"");i&&n(i)}));this.resultsObserver.observe(e,{attributes:!0,childList:!0,characterData:!0})}}.bind(this));var r=function(o){this.getGeocoder().geocode({location:o},function(e,a){if(a===window.google.maps.GeocoderStatus.OK&&e.length>0){var t=e[0].formatted_address;s.val(t),this.centerMarker&&(this.centerMarker.setPosition(o),this.centerMarker.setTitle(t))}}.bind(this))}.bind(this);t.addListener("click",(function(o){r(o.latLng)})),this.centerMarker.addListener("dragend",(function(o){r(o.latLng)}))}},showMarkers:function(o,e,a){if(o&&o.length){this.infoWindows=[];for(var t=[],i=0;i<o.length;i++){var n=parseInt(i/10);t.length===n&&(t[n]=[]),t[n][i%10]=o[i]}var s=function(o){var t=o.customMarkerIcon,i=o.hasOwnProperty("info")?o.info:null,n=o.hasOwnProperty("infoMaxWidth")?o.infoMaxWidth:null;return this.getLocation(o.place).done(function(o){var s=a.markerIcon;t&&(s=t);var r=new window.google.maps.Marker({position:o,map:e,draggable:a.markersDraggable,icon:s,title:""});if(i){var l={content:i};n&&(l.maxWidth=n);var g=a.markerInfoDisplay;l.disableAutoPan="always"===g;var p=new window.google.maps.InfoWindow(l);this.infoWindows.push(p);var d=g;"always"===g&&(d="click",p.open({map:e,anchor:r,shouldFocus:!1})),r.addListener(d,function(){p.open(e,r),"always"===g||a.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===window.google.maps.GeocoderStatus.OVER_QUERY_LIMIT,console.log(o)}))}.bind(this),r=!1,l=function(o,e){for(var a=0,t=0;t<o.length&&!r;t++)s(o[t]).then((function(){++a===o.length&&e.length&&l(e.shift(),e)}))}.bind(this);l(t.shift(),t)}},showDirections:function(o,e){if(o){o.waypoints&&o.waypoints.length&&o.waypoints.map((function(o){o.stopover=Boolean(o.stopover)}));var a=new window.google.maps.DirectionsRenderer;a.setMap(e),(new window.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,t){t===window.google.maps.DirectionsStatus.OK&&(a.setOptions({preserveViewport:o.preserveViewport}),a.setDirections(e))}))}},initMaps:function(){var e=o(".sow-google-map-autocomplete"),a=new o.Deferred;0===e.length?a.resolve():e.each(function(e,t){if(void 0!==window.google.maps.places){var i=new window.google.maps.places.Autocomplete(t),n=o(t).siblings(".sow-google-map-canvas");if(n.length>0){var s=n.data("options");s.autocomplete=i,s.autocompleteElement=t,this.getLocation(s.address).done(function(o){this.showMap(n.get(0),o,s),n.data("initialized",!0),a.resolve()}.bind(this)).fail((function(){n.append("<div><p><strong>"+soWidgetsGoogleMap.geocode.noResults+"</strong></p></div>"),a.reject()}))}}else a.reject('Sorry, we couldn\'t load the "places" library due to another plugin, so the autocomplete feature is not available.')}.bind(this)),a.always(function(){o(".sow-google-map-canvas").each(function(e,a){var t=o(a);if(t.data("initialized"))return!0;var i=t.data("options"),n=i.address;if(!n){var s=i.markerPositions;s&&s.length&&(n=s[0].place)}this.getLocation(n).done(function(o){this.showMap(t.get(0),o,i),t.data("initialized",!0)}.bind(this)).fail((function(){t.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 window.google.maps.Geocoder),this._geocoder},getLocation:function(e){var a,t=new o.Deferred,i={address:e};if(e&&e.indexOf(",")>-1){var n=e.replace(/[\(\)]/g,"").split(",");n&&2===n.length&&(a=new window.google.maps.LatLng(n[0],n[1]),isNaN(a.lat())||isNaN(a.lng())||(i={location:{lat:a.lat(),lng:a.lng()}}))}if(i.hasOwnProperty("location"))t.resolve(i.location);else if(i.hasOwnProperty("address")){if(!i.address){var s=parseInt(Math.random()*this.DEFAULT_LOCATIONS.length);i.address=this.DEFAULT_LOCATIONS[s]}var r=0,l=function(o,e){e===window.google.maps.GeocoderStatus.OK?t.resolve(o[0].geometry.location):e===window.google.maps.GeocoderStatus.OVER_QUERY_LIMIT?++r<3?setTimeout(function(){this.getGeocoder().geocode.call(this,i,l)}.bind(this),1e3):t.reject(e):e!==window.google.maps.GeocoderStatus.ZERO_RESULTS&&e!==window.google.maps.GeocoderStatus.OVER_DAILY_LIMIT||t.reject(e)}.bind(this);this.getGeocoder().geocode(i,l)}return t}}},jQuery(window.sowb).on("sow-google-map-loaded",(function(){new sowb.SiteOriginGoogleMap(jQuery).initMaps()})),jQuery((function(o){sowb.googleMapsData=[],sowb.googleMapsData.libraries=[],sowb.setupGoogleMaps=function(e,a=!1){var t=o(".sow-google-map-canvas");t.length&&(o("body.wp-admin").length&&sowb.googleMapsData.libraries.push("places"),t.each((function(e,a){var t=o(a);if(t.data("apiInitialized"))return t;var i=t.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)),t.data("apiInitialized",!0)})),void 0===window.google&&(window.google={}),(a||void 0===window.google.maps)&&(o("body.wp-admin").length&&o("#sow-google-maps-js").length?setTimeout((function(){soGoogleMapInitialize()}),250):(sowb.loadGoogleMapsAPI(a),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.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 a="https://maps.googleapis.com/maps/api/js?key="+sowb.googleMapsData.apiKey+"&callback=soGoogleMapInitialize";if(sowb.googleMapsData.libraries&&sowb.googleMapsData.libraries.length&&(a+="&libraries="+sowb.googleMapsData.libraries.join(",")),window.console&&window.console.error){var t=window.console.error;sowb.googleMapsData.ApiError=!1,sowb.onLoadMapsApiError=function(e){var a;"string"==typeof e&&(a=e.match(/^Google Maps API (error|warning): ([^\s]*)\s([^\s]*)(?:\s(.*))?/)),a&&a.length&&a[0]&&(o(".sow-google-map-canvas").each((function(e,a){var t=o(a);if(t.data("fallbackImage")){var i=t.data("fallbackImage");i.hasOwnProperty("img")&&t.append(i.img)}})),sowb.googleMapsData.ApiError=!0),t.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="'+a+'">'),sowb.mapsApiInitialized=!0}))):(o("body").append('<script async type="text/javascript" id="sow-google-maps-js" src="'+a+'">'),sowb.mapsApiInitialized=!0)},sowb.setupGoogleMaps(),o(sowb).on("setup_widgets",sowb.setupGoogleMaps)}));
1
+ function soGoogleMapInitialize(){jQuery(window.sowb).trigger("sow-google-map-loaded")}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,a){var t=Number(a.zoom);t||(t=14),window.matchMedia("(max-width: "+a.breakpoint+"px)").matches&&(t=a.mobileZoom);var i,n={zoom:t,gestureHandling:a.gestureHandling,disableDefaultUI:a.disableUi,zoomControl:a.zoomControl,panControl:a.panControl,center:e,mapTypeControlOptions:{mapTypeIds:[window.google.maps.MapTypeId.ROADMAP,window.google.maps.MapTypeId.SATELLITE,"user_map_style"]}},s=new window.google.maps.Map(o,n),r={name:a.mapName},l=a.mapStyles;if(l){var g=new window.google.maps.StyledMapType(l,r);s.mapTypes.set("user_map_style",g),s.setMapTypeId("user_map_style")}(a.markerAtCenter&&(this.centerMarker=new window.google.maps.Marker({position:e,map:s,draggable:a.markersDraggable,icon:a.markerIcon,title:""}),s.centerMarker=this.centerMarker),a.keepCentered)&&(window.google.maps.event.addDomListener(s,"idle",(function(){i=s.getCenter()})),window.google.maps.event.addDomListener(window,"resize",(function(){s.setCenter(i)})));this.linkAutocompleteField(a.autocomplete,a.autocompleteElement,s,a),this.showMarkers(a.markerPositions,s,a),this.showDirections(a.directions,s,a),sowb.SiteOriginGoogleMapInstances.push(s)},linkAutocompleteField:function(e,a,t,i){if(e&&a){var n=function(o){this.inputAddress!==o&&(this.inputAddress=o,this.getLocation(this.inputAddress).done(function(o){t.setZoom(15),t.setCenter(o),this.centerMarker&&(this.centerMarker.setPosition(o),this.centerMarker.setTitle(this.inputAddress))}.bind(this)))}.bind(this),s=o(a);e.addListener("place_changed",function(){var o=e.getPlace();t.setZoom(15),o.geometry&&(t.setCenter(o.geometry.location),this.centerMarker&&this.centerMarker.setPosition(o.geometry.location))}.bind(this)),window.google.maps.event.addDomListener(a,"keypress",(function(o){"13"===(o.keyCode||o.which)&&o.preventDefault()})),s.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)),a=e.find(".pac-item-query").text(),t=e.find("span").not("[class]").text(),i=a+(t?", "+t:"");i&&n(i)}));this.resultsObserver.observe(e,{attributes:!0,childList:!0,characterData:!0})}}.bind(this));var r=function(o){this.getGeocoder().geocode({location:o},function(e,a){if(a===window.google.maps.GeocoderStatus.OK&&e.length>0){var t=e[0].formatted_address;s.val(t),this.centerMarker&&(this.centerMarker.setPosition(o),this.centerMarker.setTitle(t))}}.bind(this))}.bind(this);t.addListener("click",(function(o){r(o.latLng)})),this.centerMarker.addListener("dragend",(function(o){r(o.latLng)}))}},showMarkers:function(o,e,a){if(o&&o.length){this.infoWindows=[];for(var t=[],i=0;i<o.length;i++){var n=parseInt(i/10);t.length===n&&(t[n]=[]),t[n][i%10]=o[i]}var s=function(o){var t=o.customMarkerIcon,i=o.hasOwnProperty("info")?o.info:null,n=o.hasOwnProperty("infoMaxWidth")?o.infoMaxWidth:null;return this.getLocation(o.place).done(function(o){var s=a.markerIcon;t&&(s=t);var r=new window.google.maps.Marker({position:o,map:e,draggable:a.markersDraggable,icon:s,title:""});if(i){var l={content:i};n&&(l.maxWidth=n);var g=a.markerInfoDisplay;l.disableAutoPan="always"===g;var p=new window.google.maps.InfoWindow(l);this.infoWindows.push(p);var d=g;"always"===g&&(d="click",p.open({map:e,anchor:r,shouldFocus:!1})),r.addListener(d,function(){p.open(e,r),"always"===g||a.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===window.google.maps.GeocoderStatus.OVER_QUERY_LIMIT,console.log(o)}))}.bind(this),r=!1,l=function(o,e){for(var a=0,t=0;t<o.length&&!r;t++)s(o[t]).then((function(){++a===o.length&&e.length&&l(e.shift(),e)}))}.bind(this);l(t.shift(),t)}},showDirections:function(o,e){if(o){o.waypoints&&o.waypoints.length&&o.waypoints.map((function(o){o.stopover=Boolean(o.stopover)}));var a=new window.google.maps.DirectionsRenderer;a.setMap(e),(new window.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,t){t===window.google.maps.DirectionsStatus.OK&&(a.setOptions({preserveViewport:o.preserveViewport}),a.setDirections(e))}))}},initMaps:function(){var e=o(".sow-google-map-autocomplete"),a=new o.Deferred;0===e.length?a.resolve():e.each(function(e,t){if(void 0!==window.google.maps.places){var i=new window.google.maps.places.Autocomplete(t),n=o(t).siblings(".sow-google-map-canvas");if(n.length>0){var s=n.data("options");s.autocomplete=i,s.autocompleteElement=t,this.getLocation(s.address).done(function(o){this.showMap(n.get(0),o,s),n.data("initialized",!0),a.resolve()}.bind(this)).fail((function(){n.append("<div><p><strong>"+soWidgetsGoogleMap.geocode.noResults+"</strong></p></div>"),a.reject()}))}}else a.reject('Sorry, we couldn\'t load the "places" library due to another plugin, so the autocomplete feature is not available.')}.bind(this)),a.always(function(){o(".sow-google-map-canvas").each(function(e,a){var t=o(a);if(t.data("initialized"))return!0;var i=t.data("options"),n=i.address;if(!n){var s=i.markerPositions;s&&s.length&&(n=s[0].place)}this.getLocation(n).done(function(o){this.showMap(t.get(0),o,i),t.data("initialized",!0)}.bind(this)).fail((function(){t.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 window.google.maps.Geocoder),this._geocoder},getLocation:function(e){var a,t=new o.Deferred,i={address:e};if(e&&e.indexOf(",")>-1){var n=e.replace(/[\(\)]/g,"").split(",");n&&2===n.length&&(a=new window.google.maps.LatLng(n[0],n[1]),isNaN(a.lat())||isNaN(a.lng())||(i={location:{lat:a.lat(),lng:a.lng()}}))}if(i.hasOwnProperty("location"))t.resolve(i.location);else if(i.hasOwnProperty("address")){if(!i.address){var s=parseInt(Math.random()*this.DEFAULT_LOCATIONS.length);i.address=this.DEFAULT_LOCATIONS[s]}var r=0,l=function(o,e){e===window.google.maps.GeocoderStatus.OK?t.resolve(o[0].geometry.location):e===window.google.maps.GeocoderStatus.OVER_QUERY_LIMIT?++r<3?setTimeout(function(){this.getGeocoder().geocode.call(this,i,l)}.bind(this),1e3):t.reject(e):e!==window.google.maps.GeocoderStatus.ZERO_RESULTS&&e!==window.google.maps.GeocoderStatus.OVER_DAILY_LIMIT||t.reject(e)}.bind(this);this.getGeocoder().geocode(i,l)}return t}}},jQuery(window.sowb).on("sow-google-map-loaded",(function(){new sowb.SiteOriginGoogleMap(jQuery).initMaps()})),jQuery((function(o){sowb.googleMapsData=[],sowb.googleMapsData.libraries=[],sowb.setupGoogleMaps=function(e,a=!1){var t=o(".sow-google-map-canvas");t.length&&(o("body.wp-admin").length&&sowb.googleMapsData.libraries.push("places"),t.each((function(e,a){var t=o(a);if(t.data("apiInitialized"))return t;var i=t.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)),t.data("apiInitialized",!0)})),void 0===window.google&&(window.google={}),(a||void 0===window.google.maps)&&(o("body.wp-admin").length&&o("#sow-google-maps-js").length?setTimeout((function(){soGoogleMapInitialize()}),250):(sowb.loadGoogleMapsAPI(a),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.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 a="https://maps.googleapis.com/maps/api/js?key="+sowb.googleMapsData.apiKey+"&callback=soGoogleMapInitialize";if(sowb.googleMapsData.libraries&&sowb.googleMapsData.libraries.length&&(a+="&libraries="+sowb.googleMapsData.libraries.join(",")),window.console&&window.console.error){var t=window.console.error;sowb.googleMapsData.ApiError=!1,sowb.onLoadMapsApiError=function(e){var a;"string"==typeof e&&(a=e.match(/^Google Maps API (error|warning): ([^\s]*)\s([^\s]*)(?:\s(.*))?/)),a&&a.length&&a[0]&&(o(".sow-google-map-canvas").each((function(e,a){var t=o(a);if(t.data("fallbackImage")){var i=t.data("fallbackImage");i.hasOwnProperty("img")&&t.append(i.img)}})),sowb.googleMapsData.ApiError=!0),t.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(),sowb.mapsApiInitialized||(o("body").append('<script async type="text/javascript" id="sow-google-maps-js" src="'+a+'">'),sowb.mapsApiInitialized=!0)}))):(o("body").append('<script async type="text/javascript" id="sow-google-maps-js" src="'+a+'">'),sowb.mapsApiInitialized=!0)},sowb.setupGoogleMaps(),o(sowb).on("setup_widgets",sowb.setupGoogleMaps)}));
lang/so-widgets-bundle.pot CHANGED
@@ -180,7 +180,7 @@ msgstr ""
180
  msgid "Deactivate"
181
  msgstr ""
182
 
183
- #: admin/tpl/admin.php:90, widgets/blog/blog.php:67, widgets/contact/contact.php:59, widgets/google-map/google-map.php:60, widgets/image-grid/image-grid.php:96, widgets/testimonial/testimonial.php:101, base/inc/widgets/base-carousel.class.php:249
184
  msgid "Settings"
185
  msgstr ""
186
 
@@ -296,7 +296,7 @@ msgstr ""
296
  msgid "When opening the panel, scroll the user to the top of the panel."
297
  msgstr ""
298
 
299
- #: widgets/accordion/accordion.php:72, widgets/accordion/accordion.php:85, widgets/anything-carousel/anything-carousel.php:65, widgets/anything-carousel/anything-carousel.php:81, widgets/blog/blog.php:53, widgets/contact/contact.php:48, widgets/cta/cta.php:64, widgets/editor/editor.php:34, widgets/features/features.php:140, widgets/icon/icon.php:68, widgets/post-carousel/post-carousel.php:260, widgets/price-table/price-table.php:42, widgets/price-table/price-table.php:61, widgets/simple-masonry/simple-masonry.php:44, widgets/simple-masonry/simple-masonry.php:85, widgets/social-media-buttons/social-media-buttons.php:53, widgets/tabs/tabs.php:72, widgets/tabs/tabs.php:85, widgets/taxonomy/taxonomy.php:34, widgets/testimonial/testimonial.php:41, widgets/video/video.php:33, base/inc/fields/posts.class.php:108
300
  msgid "Title"
301
  msgstr ""
302
 
@@ -328,7 +328,7 @@ msgstr ""
328
  msgid "Closed"
329
  msgstr ""
330
 
331
- #: widgets/accordion/accordion.php:111, widgets/blog/blog.php:152, widgets/contact/contact.php:405, widgets/cta/cta.php:74, widgets/hero/hero.php:254, widgets/layout-slider/layout-slider.php:222, widgets/slider/slider.php:134, widgets/tabs/tabs.php:101, widgets/testimonial/testimonial.php:184, base/inc/widgets/base-carousel.class.php:350
332
  msgid "Design"
333
  msgstr ""
334
 
@@ -400,7 +400,7 @@ msgstr ""
400
  msgid "Item"
401
  msgstr ""
402
 
403
- #: widgets/anything-carousel/anything-carousel.php:108, widgets/blog/blog.php:179, widgets/blog/blog.php:206, widgets/blog/blog.php:233, widgets/blog/blog.php:270, widgets/blog/blog.php:323, widgets/blog/blog.php:355, widgets/blog/blog.php:529, widgets/button/button.php:201, widgets/contact/contact.php:459, widgets/contact/contact.php:509, widgets/features/features.php:158, widgets/features/features.php:179, widgets/features/features.php:200, widgets/headline/headline.php:88, widgets/headline/headline.php:169, base/inc/widgets/base-carousel.class.php:374
404
  msgid "Font"
405
  msgstr ""
406
 
@@ -408,7 +408,7 @@ msgstr ""
408
  msgid "Font size"
409
  msgstr ""
410
 
411
- #: widgets/anything-carousel/anything-carousel.php:116, widgets/blog/blog.php:188, widgets/blog/blog.php:215, widgets/blog/blog.php:242, widgets/blog/blog.php:279, widgets/blog/blog.php:332, widgets/blog/blog.php:381, widgets/contact/contact.php:469, widgets/contact/contact.php:593, widgets/contact/contact.php:762, widgets/features/features.php:167, widgets/features/features.php:188, widgets/features/features.php:209, widgets/google-map/google-map.php:376, widgets/headline/headline.php:80, widgets/headline/headline.php:161, widgets/headline/headline.php:231, widgets/icon/icon.php:36, widgets/taxonomy/taxonomy.php:56, base/inc/widgets/base-carousel.class.php:382
412
  msgid "Color"
413
  msgstr ""
414
 
@@ -472,276 +472,276 @@ msgstr ""
472
  msgid "SiteOrigin Blog"
473
  msgstr ""
474
 
475
- #: widgets/blog/blog.php:57
476
  msgid "Template"
477
  msgstr ""
478
 
479
- #: widgets/blog/blog.php:72
480
  msgid "Column Count"
481
  msgstr ""
482
 
483
- #: widgets/blog/blog.php:76, widgets/blog/blog.php:420
484
  msgid "Featured Image"
485
  msgstr ""
486
 
487
- #: widgets/blog/blog.php:81
488
  msgid "Post Content "
489
  msgstr ""
490
 
491
- #: widgets/blog/blog.php:82
492
  msgid "Choose how to display your post content. Select Full Post Content if using the \"more\" quicktag."
493
  msgstr ""
494
 
495
- #: widgets/blog/blog.php:85
496
  msgid "Post Excerpt"
497
  msgstr ""
498
 
499
- #: widgets/blog/blog.php:86
500
  msgid "Full Post Content"
501
  msgstr ""
502
 
503
- #: widgets/blog/blog.php:99
504
  msgid "Post Excerpt Read More Link"
505
  msgstr ""
506
 
507
- #: widgets/blog/blog.php:100
508
  msgid "Display the Read More link below the post excerpt."
509
  msgstr ""
510
 
511
- #: widgets/blog/blog.php:108
512
  msgid "Excerpt Length"
513
  msgstr ""
514
 
515
- #: widgets/blog/blog.php:117
516
  msgid "Post Date"
517
  msgstr ""
518
 
519
- #: widgets/blog/blog.php:122
520
  msgid "Post Author"
521
  msgstr ""
522
 
523
- #: widgets/blog/blog.php:127
524
  msgid "Filter Categories "
525
  msgstr ""
526
 
527
- #: widgets/blog/blog.php:139
528
  msgid "Post Categories"
529
  msgstr ""
530
 
531
- #: widgets/blog/blog.php:144
532
  msgid "Post Comment Count"
533
  msgstr ""
534
 
535
- #: widgets/blog/blog.php:157
536
  msgid "Post"
537
  msgstr ""
538
 
539
- #: widgets/blog/blog.php:162, widgets/blog/blog.php:425, widgets/blog/blog.php:504
540
  msgid "Border Color"
541
  msgstr ""
542
 
543
- #: widgets/blog/blog.php:167
544
  msgid "Background Color"
545
  msgstr ""
546
 
547
- #: widgets/blog/blog.php:174
548
  msgid "Post Title"
549
  msgstr ""
550
 
551
- #: widgets/blog/blog.php:183, widgets/blog/blog.php:210, widgets/blog/blog.php:237, widgets/blog/blog.php:274, widgets/blog/blog.php:327, widgets/blog/blog.php:363, widgets/blog/blog.php:533, widgets/button/button.php:207, widgets/headline/headline.php:93, widgets/headline/headline.php:174
552
  msgid "Font Size"
553
  msgstr ""
554
 
555
- #: widgets/blog/blog.php:193, widgets/blog/blog.php:220, widgets/blog/blog.php:284, widgets/blog/blog.php:390, widgets/headline/headline.php:84, widgets/headline/headline.php:165
556
  msgid "Hover Color"
557
  msgstr ""
558
 
559
- #: widgets/blog/blog.php:201
560
  msgid "Post Meta"
561
  msgstr ""
562
 
563
- #: widgets/blog/blog.php:228
564
  msgid "Offset Post Meta"
565
  msgstr ""
566
 
567
- #: widgets/blog/blog.php:247, widgets/blog/blog.php:337, widgets/blog/blog.php:538
568
  msgid "Link Color"
569
  msgstr ""
570
 
571
- #: widgets/blog/blog.php:252
572
  msgid "Link Color Hover"
573
  msgstr ""
574
 
575
- #: widgets/blog/blog.php:257
576
  msgid "Link Font Size"
577
  msgstr ""
578
 
579
- #: widgets/blog/blog.php:265
580
  msgid "Overlay Post Category"
581
  msgstr ""
582
 
583
- #: widgets/blog/blog.php:289, widgets/blog/blog.php:514, widgets/contact/contact.php:543, widgets/hero/hero.php:100, widgets/layout-slider/layout-slider.php:72, widgets/post-carousel/post-carousel.php:194
584
  msgid "Background"
585
  msgstr ""
586
 
587
- #: widgets/blog/blog.php:294, widgets/blog/blog.php:518
588
  msgid "Hover Background"
589
  msgstr ""
590
 
591
- #: widgets/blog/blog.php:299
592
  msgid "Background Opacity"
593
  msgstr ""
594
 
595
- #: widgets/blog/blog.php:307
596
  msgid "Background Hover Opacity"
597
  msgstr ""
598
 
599
- #: widgets/blog/blog.php:318
600
  msgid "Post Content"
601
  msgstr ""
602
 
603
- #: widgets/blog/blog.php:342, widgets/blog/blog.php:543
604
  msgid "Link Hover Color"
605
  msgstr ""
606
 
607
- #: widgets/blog/blog.php:350
608
  msgid "Filter Categories"
609
  msgstr ""
610
 
611
- #: widgets/blog/blog.php:372
612
  msgid "Capitalize Categories"
613
  msgstr ""
614
 
615
- #: widgets/blog/blog.php:399
616
  msgid "Selected Border Color"
617
  msgstr ""
618
 
619
- #: widgets/blog/blog.php:408
620
  msgid "Selected Border Thickness"
621
  msgstr ""
622
 
623
- #: widgets/blog/blog.php:430
624
  msgid "Hover Overlay Color"
625
  msgstr ""
626
 
627
- #: widgets/blog/blog.php:434
628
  msgid "Hover Overlay Opacity"
629
  msgstr ""
630
 
631
- #: widgets/blog/blog.php:443
632
  msgid "Post Title Font"
633
  msgstr ""
634
 
635
- #: widgets/blog/blog.php:447
636
  msgid "Post Title Font Size"
637
  msgstr ""
638
 
639
- #: widgets/blog/blog.php:452
640
  msgid "Post Title Color"
641
  msgstr ""
642
 
643
- #: widgets/blog/blog.php:457
644
  msgid "Divider Border Color"
645
  msgstr ""
646
 
647
- #: widgets/blog/blog.php:462
648
  msgid "Divider Border Thickness"
649
  msgstr ""
650
 
651
- #: widgets/blog/blog.php:467
652
  msgid "Divider Border Margin"
653
  msgstr ""
654
 
655
- #: widgets/blog/blog.php:472
656
  msgid "Post Meta Font"
657
  msgstr ""
658
 
659
- #: widgets/blog/blog.php:476
660
  msgid "Post Meta Font Size"
661
  msgstr ""
662
 
663
- #: widgets/blog/blog.php:481
664
  msgid "Post Meta Color"
665
  msgstr ""
666
 
667
- #: widgets/blog/blog.php:489
668
  msgid "Pagination"
669
  msgstr ""
670
 
671
- #: widgets/blog/blog.php:494
672
  msgid "Top Margin"
673
  msgstr ""
674
 
675
- #: widgets/blog/blog.php:499
676
  msgid "Link Margin"
677
  msgstr ""
678
 
679
- #: widgets/blog/blog.php:509
680
  msgid "Border Hover Color"
681
  msgstr ""
682
 
683
- #: widgets/blog/blog.php:522
684
  msgid "Border Radius"
685
  msgstr ""
686
 
687
- #: widgets/blog/blog.php:548
688
  msgid "Dots Color"
689
  msgstr ""
690
 
691
- #: widgets/blog/blog.php:553, widgets/button/button.php:121, widgets/contact/contact.php:486, widgets/contact/contact.php:716, widgets/contact/contact.php:767, widgets/google-map/google-map.php:94, base/inc/fields/image-size.class.php:69
692
  msgid "Width"
693
  msgstr ""
694
 
695
- #: widgets/blog/blog.php:559, widgets/contact/contact.php:535, widgets/google-map/google-map.php:98, widgets/hero/hero.php:187, widgets/hero/hero.php:223, widgets/layout-slider/layout-slider.php:155, widgets/layout-slider/layout-slider.php:191, widgets/slider/slider.php:142, base/inc/fields/image-size.class.php:76
696
  msgid "Height"
697
  msgstr ""
698
 
699
- #: widgets/blog/blog.php:570
700
  msgid "Posts Query"
701
  msgstr ""
702
 
703
- #: widgets/blog/blog.php:581, widgets/button/button.php:33, widgets/contact/contact.php:962, widgets/features/features.php:381, widgets/headline/headline.php:37, widgets/social-media-buttons/social-media-buttons.php:32, base/inc/widgets/base-slider.class.php:222
704
  msgid "Responsive Breakpoint"
705
  msgstr ""
706
 
707
- #: widgets/blog/blog.php:583
708
  msgid "Device width, in pixels, to collapse into a mobile view."
709
  msgstr ""
710
 
711
- #: widgets/blog/blog.php:912
712
  msgid "Sticky"
713
  msgstr ""
714
 
715
  #. translators: used between list items, there is a space after the comma
716
- #: widgets/blog/blog.php:949
717
  msgid ", "
718
  msgstr ""
719
 
720
- #: widgets/blog/blog.php:958
721
  msgid "Leave a comment"
722
  msgstr ""
723
 
724
- #: widgets/blog/blog.php:959
725
  msgid "One Comment"
726
  msgstr ""
727
 
728
- #: widgets/blog/blog.php:960, widgets/blog/tpl/offset.php:48
729
  msgid "% Comments"
730
  msgstr ""
731
 
732
- #: widgets/blog/blog.php:996, widgets/blog/blog.php:1030
733
  msgid "Continue reading"
734
  msgstr ""
735
 
736
- #: widgets/blog/blog.php:1078
737
  msgid "Post navigation"
738
  msgstr ""
739
 
740
- #: widgets/blog/blog.php:1091
741
  msgid "Get more pagination themes and Ajax reloading with %sSiteOrigin Premium%s"
742
  msgstr ""
743
 
744
- #: widgets/blog/blog.php:1096
745
  msgid "Adjust the post Read More link text and choose a custom post date format with %sSiteOrigin Premium%s"
746
  msgstr ""
747
 
@@ -1647,30 +1647,34 @@ msgid "Responsive layout"
1647
  msgstr ""
1648
 
1649
  #: widgets/features/features.php:255
 
 
 
 
1650
  msgid "Link feature title to more URL"
1651
  msgstr ""
1652
 
1653
- #: widgets/features/features.php:265
1654
  msgid "Link icon to more URL"
1655
  msgstr ""
1656
 
1657
- #: widgets/features/features.php:275
1658
  msgid "Link feature column to more URL"
1659
  msgstr ""
1660
 
1661
- #: widgets/features/features.php:287
1662
  msgid "Open more URL in a new window"
1663
  msgstr ""
1664
 
1665
- #: widgets/features/features.php:383
1666
  msgid "This setting controls when the features widget will collapse for mobile devices. The default value is 520px"
1667
  msgstr ""
1668
 
1669
- #: widgets/features/features.php:392
1670
  msgid "Add an feature icon title tooltip with %sSiteOrigin Premium%s"
1671
  msgstr ""
1672
 
1673
- #: widgets/features/features.php:397
1674
  msgid "Use Google Fonts right inside the Features Widget with %sSiteOrigin Premium%s"
1675
  msgstr ""
1676
 
180
  msgid "Deactivate"
181
  msgstr ""
182
 
183
+ #: admin/tpl/admin.php:90, widgets/blog/blog.php:84, widgets/contact/contact.php:59, widgets/google-map/google-map.php:60, widgets/image-grid/image-grid.php:96, widgets/testimonial/testimonial.php:101, base/inc/widgets/base-carousel.class.php:249
184
  msgid "Settings"
185
  msgstr ""
186
 
296
  msgid "When opening the panel, scroll the user to the top of the panel."
297
  msgstr ""
298
 
299
+ #: widgets/accordion/accordion.php:72, widgets/accordion/accordion.php:85, widgets/anything-carousel/anything-carousel.php:65, widgets/anything-carousel/anything-carousel.php:81, widgets/blog/blog.php:70, widgets/contact/contact.php:48, widgets/cta/cta.php:64, widgets/editor/editor.php:34, widgets/features/features.php:140, widgets/icon/icon.php:68, widgets/post-carousel/post-carousel.php:260, widgets/price-table/price-table.php:42, widgets/price-table/price-table.php:61, widgets/simple-masonry/simple-masonry.php:44, widgets/simple-masonry/simple-masonry.php:85, widgets/social-media-buttons/social-media-buttons.php:53, widgets/tabs/tabs.php:72, widgets/tabs/tabs.php:85, widgets/taxonomy/taxonomy.php:34, widgets/testimonial/testimonial.php:41, widgets/video/video.php:33, base/inc/fields/posts.class.php:108
300
  msgid "Title"
301
  msgstr ""
302
 
328
  msgid "Closed"
329
  msgstr ""
330
 
331
+ #: widgets/accordion/accordion.php:111, widgets/blog/blog.php:169, widgets/contact/contact.php:405, widgets/cta/cta.php:74, widgets/hero/hero.php:254, widgets/layout-slider/layout-slider.php:222, widgets/slider/slider.php:134, widgets/tabs/tabs.php:101, widgets/testimonial/testimonial.php:184, base/inc/widgets/base-carousel.class.php:350
332
  msgid "Design"
333
  msgstr ""
334
 
400
  msgid "Item"
401
  msgstr ""
402
 
403
+ #: widgets/anything-carousel/anything-carousel.php:108, widgets/blog/blog.php:196, widgets/blog/blog.php:223, widgets/blog/blog.php:250, widgets/blog/blog.php:287, widgets/blog/blog.php:340, widgets/blog/blog.php:372, widgets/blog/blog.php:546, widgets/button/button.php:201, widgets/contact/contact.php:459, widgets/contact/contact.php:509, widgets/features/features.php:158, widgets/features/features.php:179, widgets/features/features.php:200, widgets/headline/headline.php:88, widgets/headline/headline.php:169, base/inc/widgets/base-carousel.class.php:374
404
  msgid "Font"
405
  msgstr ""
406
 
408
  msgid "Font size"
409
  msgstr ""
410
 
411
+ #: widgets/anything-carousel/anything-carousel.php:116, widgets/blog/blog.php:205, widgets/blog/blog.php:232, widgets/blog/blog.php:259, widgets/blog/blog.php:296, widgets/blog/blog.php:349, widgets/blog/blog.php:398, widgets/contact/contact.php:469, widgets/contact/contact.php:593, widgets/contact/contact.php:762, widgets/features/features.php:167, widgets/features/features.php:188, widgets/features/features.php:209, widgets/google-map/google-map.php:376, widgets/headline/headline.php:80, widgets/headline/headline.php:161, widgets/headline/headline.php:231, widgets/icon/icon.php:36, widgets/taxonomy/taxonomy.php:56, base/inc/widgets/base-carousel.class.php:382
412
  msgid "Color"
413
  msgstr ""
414
 
472
  msgid "SiteOrigin Blog"
473
  msgstr ""
474
 
475
+ #: widgets/blog/blog.php:74
476
  msgid "Template"
477
  msgstr ""
478
 
479
+ #: widgets/blog/blog.php:89
480
  msgid "Column Count"
481
  msgstr ""
482
 
483
+ #: widgets/blog/blog.php:93, widgets/blog/blog.php:437
484
  msgid "Featured Image"
485
  msgstr ""
486
 
487
+ #: widgets/blog/blog.php:98
488
  msgid "Post Content "
489
  msgstr ""
490
 
491
+ #: widgets/blog/blog.php:99
492
  msgid "Choose how to display your post content. Select Full Post Content if using the \"more\" quicktag."
493
  msgstr ""
494
 
495
+ #: widgets/blog/blog.php:102
496
  msgid "Post Excerpt"
497
  msgstr ""
498
 
499
+ #: widgets/blog/blog.php:103
500
  msgid "Full Post Content"
501
  msgstr ""
502
 
503
+ #: widgets/blog/blog.php:116
504
  msgid "Post Excerpt Read More Link"
505
  msgstr ""
506
 
507
+ #: widgets/blog/blog.php:117
508
  msgid "Display the Read More link below the post excerpt."
509
  msgstr ""
510
 
511
+ #: widgets/blog/blog.php:125
512
  msgid "Excerpt Length"
513
  msgstr ""
514
 
515
+ #: widgets/blog/blog.php:134
516
  msgid "Post Date"
517
  msgstr ""
518
 
519
+ #: widgets/blog/blog.php:139
520
  msgid "Post Author"
521
  msgstr ""
522
 
523
+ #: widgets/blog/blog.php:144
524
  msgid "Filter Categories "
525
  msgstr ""
526
 
527
+ #: widgets/blog/blog.php:156
528
  msgid "Post Categories"
529
  msgstr ""
530
 
531
+ #: widgets/blog/blog.php:161
532
  msgid "Post Comment Count"
533
  msgstr ""
534
 
535
+ #: widgets/blog/blog.php:174
536
  msgid "Post"
537
  msgstr ""
538
 
539
+ #: widgets/blog/blog.php:179, widgets/blog/blog.php:442, widgets/blog/blog.php:521
540
  msgid "Border Color"
541
  msgstr ""
542
 
543
+ #: widgets/blog/blog.php:184
544
  msgid "Background Color"
545
  msgstr ""
546
 
547
+ #: widgets/blog/blog.php:191
548
  msgid "Post Title"
549
  msgstr ""
550
 
551
+ #: widgets/blog/blog.php:200, widgets/blog/blog.php:227, widgets/blog/blog.php:254, widgets/blog/blog.php:291, widgets/blog/blog.php:344, widgets/blog/blog.php:380, widgets/blog/blog.php:550, widgets/button/button.php:207, widgets/headline/headline.php:93, widgets/headline/headline.php:174
552
  msgid "Font Size"
553
  msgstr ""
554
 
555
+ #: widgets/blog/blog.php:210, widgets/blog/blog.php:237, widgets/blog/blog.php:301, widgets/blog/blog.php:407, widgets/headline/headline.php:84, widgets/headline/headline.php:165
556
  msgid "Hover Color"
557
  msgstr ""
558
 
559
+ #: widgets/blog/blog.php:218
560
  msgid "Post Meta"
561
  msgstr ""
562
 
563
+ #: widgets/blog/blog.php:245
564
  msgid "Offset Post Meta"
565
  msgstr ""
566
 
567
+ #: widgets/blog/blog.php:264, widgets/blog/blog.php:354, widgets/blog/blog.php:555
568
  msgid "Link Color"
569
  msgstr ""
570
 
571
+ #: widgets/blog/blog.php:269
572
  msgid "Link Color Hover"
573
  msgstr ""
574
 
575
+ #: widgets/blog/blog.php:274
576
  msgid "Link Font Size"
577
  msgstr ""
578
 
579
+ #: widgets/blog/blog.php:282
580
  msgid "Overlay Post Category"
581
  msgstr ""
582
 
583
+ #: widgets/blog/blog.php:306, widgets/blog/blog.php:531, widgets/contact/contact.php:543, widgets/hero/hero.php:100, widgets/layout-slider/layout-slider.php:72, widgets/post-carousel/post-carousel.php:194
584
  msgid "Background"
585
  msgstr ""
586
 
587
+ #: widgets/blog/blog.php:311, widgets/blog/blog.php:535
588
  msgid "Hover Background"
589
  msgstr ""
590
 
591
+ #: widgets/blog/blog.php:316
592
  msgid "Background Opacity"
593
  msgstr ""
594
 
595
+ #: widgets/blog/blog.php:324
596
  msgid "Background Hover Opacity"
597
  msgstr ""
598
 
599
+ #: widgets/blog/blog.php:335
600
  msgid "Post Content"
601
  msgstr ""
602
 
603
+ #: widgets/blog/blog.php:359, widgets/blog/blog.php:560
604
  msgid "Link Hover Color"
605
  msgstr ""
606
 
607
+ #: widgets/blog/blog.php:367
608
  msgid "Filter Categories"
609
  msgstr ""
610
 
611
+ #: widgets/blog/blog.php:389
612
  msgid "Capitalize Categories"
613
  msgstr ""
614
 
615
+ #: widgets/blog/blog.php:416
616
  msgid "Selected Border Color"
617
  msgstr ""
618
 
619
+ #: widgets/blog/blog.php:425
620
  msgid "Selected Border Thickness"
621
  msgstr ""
622
 
623
+ #: widgets/blog/blog.php:447
624
  msgid "Hover Overlay Color"
625
  msgstr ""
626
 
627
+ #: widgets/blog/blog.php:451
628
  msgid "Hover Overlay Opacity"
629
  msgstr ""
630
 
631
+ #: widgets/blog/blog.php:460
632
  msgid "Post Title Font"
633
  msgstr ""
634
 
635
+ #: widgets/blog/blog.php:464
636
  msgid "Post Title Font Size"
637
  msgstr ""
638
 
639
+ #: widgets/blog/blog.php:469
640
  msgid "Post Title Color"
641
  msgstr ""
642
 
643
+ #: widgets/blog/blog.php:474
644
  msgid "Divider Border Color"
645
  msgstr ""
646
 
647
+ #: widgets/blog/blog.php:479
648
  msgid "Divider Border Thickness"
649
  msgstr ""
650
 
651
+ #: widgets/blog/blog.php:484
652
  msgid "Divider Border Margin"
653
  msgstr ""
654
 
655
+ #: widgets/blog/blog.php:489
656
  msgid "Post Meta Font"
657
  msgstr ""
658
 
659
+ #: widgets/blog/blog.php:493
660
  msgid "Post Meta Font Size"
661
  msgstr ""
662
 
663
+ #: widgets/blog/blog.php:498
664
  msgid "Post Meta Color"
665
  msgstr ""
666
 
667
+ #: widgets/blog/blog.php:506
668
  msgid "Pagination"
669
  msgstr ""
670
 
671
+ #: widgets/blog/blog.php:511
672
  msgid "Top Margin"
673
  msgstr ""
674
 
675
+ #: widgets/blog/blog.php:516
676
  msgid "Link Margin"
677
  msgstr ""
678
 
679
+ #: widgets/blog/blog.php:526
680
  msgid "Border Hover Color"
681
  msgstr ""
682
 
683
+ #: widgets/blog/blog.php:539
684
  msgid "Border Radius"
685
  msgstr ""
686
 
687
+ #: widgets/blog/blog.php:565
688
  msgid "Dots Color"
689
  msgstr ""
690
 
691
+ #: widgets/blog/blog.php:570, widgets/button/button.php:121, widgets/contact/contact.php:486, widgets/contact/contact.php:716, widgets/contact/contact.php:767, widgets/google-map/google-map.php:94, base/inc/fields/image-size.class.php:69
692
  msgid "Width"
693
  msgstr ""
694
 
695
+ #: widgets/blog/blog.php:576, widgets/contact/contact.php:535, widgets/google-map/google-map.php:98, widgets/hero/hero.php:187, widgets/hero/hero.php:223, widgets/layout-slider/layout-slider.php:155, widgets/layout-slider/layout-slider.php:191, widgets/slider/slider.php:142, base/inc/fields/image-size.class.php:76
696
  msgid "Height"
697
  msgstr ""
698
 
699
+ #: widgets/blog/blog.php:587
700
  msgid "Posts Query"
701
  msgstr ""
702
 
703
+ #: widgets/blog/blog.php:598, widgets/button/button.php:33, widgets/contact/contact.php:962, widgets/features/features.php:387, widgets/headline/headline.php:37, widgets/social-media-buttons/social-media-buttons.php:32, base/inc/widgets/base-slider.class.php:222
704
  msgid "Responsive Breakpoint"
705
  msgstr ""
706
 
707
+ #: widgets/blog/blog.php:600
708
  msgid "Device width, in pixels, to collapse into a mobile view."
709
  msgstr ""
710
 
711
+ #: widgets/blog/blog.php:932
712
  msgid "Sticky"
713
  msgstr ""
714
 
715
  #. translators: used between list items, there is a space after the comma
716
+ #: widgets/blog/blog.php:969
717
  msgid ", "
718
  msgstr ""
719
 
720
+ #: widgets/blog/blog.php:978
721
  msgid "Leave a comment"
722
  msgstr ""
723
 
724
+ #: widgets/blog/blog.php:979
725
  msgid "One Comment"
726
  msgstr ""
727
 
728
+ #: widgets/blog/blog.php:980, widgets/blog/tpl/offset.php:48
729
  msgid "% Comments"
730
  msgstr ""
731
 
732
+ #: widgets/blog/blog.php:1020, widgets/blog/blog.php:1054
733
  msgid "Continue reading"
734
  msgstr ""
735
 
736
+ #: widgets/blog/blog.php:1106
737
  msgid "Post navigation"
738
  msgstr ""
739
 
740
+ #: widgets/blog/blog.php:1119
741
  msgid "Get more pagination themes and Ajax reloading with %sSiteOrigin Premium%s"
742
  msgstr ""
743
 
744
+ #: widgets/blog/blog.php:1124
745
  msgid "Adjust the post Read More link text and choose a custom post date format with %sSiteOrigin Premium%s"
746
  msgstr ""
747
 
1647
  msgstr ""
1648
 
1649
  #: widgets/features/features.php:255
1650
+ msgid "Bottom align More link text"
1651
+ msgstr ""
1652
+
1653
+ #: widgets/features/features.php:260
1654
  msgid "Link feature title to more URL"
1655
  msgstr ""
1656
 
1657
+ #: widgets/features/features.php:270
1658
  msgid "Link icon to more URL"
1659
  msgstr ""
1660
 
1661
+ #: widgets/features/features.php:280
1662
  msgid "Link feature column to more URL"
1663
  msgstr ""
1664
 
1665
+ #: widgets/features/features.php:292
1666
  msgid "Open more URL in a new window"
1667
  msgstr ""
1668
 
1669
+ #: widgets/features/features.php:389
1670
  msgid "This setting controls when the features widget will collapse for mobile devices. The default value is 520px"
1671
  msgstr ""
1672
 
1673
+ #: widgets/features/features.php:398
1674
  msgid "Add an feature icon title tooltip with %sSiteOrigin Premium%s"
1675
  msgstr ""
1676
 
1677
+ #: widgets/features/features.php:403
1678
  msgid "Use Google Fonts right inside the Features Widget with %sSiteOrigin Premium%s"
1679
  msgstr ""
1680
 
readme.txt CHANGED
@@ -3,8 +3,8 @@ Tags: widget, button, slider, hero, google maps, image, carousel, lottie, featur
3
  Requires at least: 4.2
4
  Tested up to: 6.0
5
  Requires PHP: 5.6.20
6
- Stable tag: 1.40.2
7
- Build time: 2022-09-03T15:28:23+02:00
8
  License: GPLv3 or later
9
  Contributors: gpriday, braam-genis, alexgso
10
  Donate link: https://siteorigin.com/downloads/premium/
@@ -106,6 +106,17 @@ The Widgets Bundle global interface is available at Plugins > SiteOrigin Widgets
106
 
107
  == Changelog ==
108
 
 
 
 
 
 
 
 
 
 
 
 
109
  = 1.40.2 - 03 September 2022 =
110
  * Blog: Added SiteOrigin Premium Blog Addon CTA.
111
 
3
  Requires at least: 4.2
4
  Tested up to: 6.0
5
  Requires PHP: 5.6.20
6
+ Stable tag: 1.41.0
7
+ Build time: 2022-09-13T20:32:07+02:00
8
  License: GPLv3 or later
9
  Contributors: gpriday, braam-genis, alexgso
10
  Donate link: https://siteorigin.com/downloads/premium/
106
 
107
  == Changelog ==
108
 
109
+ = 1.41.0 - 13 September 2022 =
110
+ * Blog: Adjusted `article` tag CSS to ensure priority over theme styling.
111
+ * Blog: Removed featured image center alignment for the Alternate template.
112
+ * Blog: Added featured image image sizes for the Grid, Alternate, and Portfolio templates.
113
+ * Features: Added a new setting `Bottom align More link text.`
114
+ * Google Maps: Only setup consent if Google Maps not already setup.
115
+ * LiteSpeed Cache: Ensured purge header isn't set if headers already sent.
116
+ * Post Carousel: Resolved Overlay Theme `Slides to Scroll` incorrect count.
117
+ * Developer: Added `siteorigin_widgets_blog_excerpt_trim` filter.
118
+ * Developer: Added `siteorigin_widgets_blog_image_sizes` filter.
119
+
120
  = 1.40.2 - 03 September 2022 =
121
  * Blog: Added SiteOrigin Premium Blog Addon CTA.
122
 
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.40.2
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.40.2' );
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.41.0
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.41.0' );
16
  define( 'SOW_BUNDLE_BASE_FILE', __FILE__ );
17
 
18
  // Allow JS suffix to be pre-set.
widgets/anything-carousel/styles/base.less CHANGED
@@ -35,7 +35,8 @@
35
  @navigation_dots_mobile: default;
36
 
37
  .sow-carousel-container {
38
- .sow-carousel-navigation-next {
 
39
  margin-left: @navigation_arrow_margin;
40
  }
41
 
@@ -43,7 +44,7 @@
43
  content: "\e601";
44
  }
45
 
46
- .sow-carousel-navigation-prev {
47
  margin-right: @navigation_arrow_margin;
48
  }
49
 
@@ -108,7 +109,9 @@
108
  }
109
 
110
  .sow-carousel-wrapper {
 
111
  .sow-carousel-items {
 
112
  .sow-carousel-item {
113
  margin: @item_margin;
114
 
@@ -132,6 +135,7 @@
132
  }
133
 
134
  .slick-dots {
 
135
  & when not ( isnumber( @navigation_dots_desktop ) ) {
136
  @media (min-width: @breakpoint_tablet_landscape) {
137
  display: none !important;
@@ -155,7 +159,8 @@
155
  display: none !important;
156
  }
157
  }
158
- li {
 
159
 
160
  &.slick-active button:before {
161
  color: @navigation_dots_color_hover;
35
  @navigation_dots_mobile: default;
36
 
37
  .sow-carousel-container {
38
+
39
+ .sow-carousel-navigation-next {
40
  margin-left: @navigation_arrow_margin;
41
  }
42
 
44
  content: "\e601";
45
  }
46
 
47
+ .sow-carousel-navigation-prev {
48
  margin-right: @navigation_arrow_margin;
49
  }
50
 
109
  }
110
 
111
  .sow-carousel-wrapper {
112
+
113
  .sow-carousel-items {
114
+
115
  .sow-carousel-item {
116
  margin: @item_margin;
117
 
135
  }
136
 
137
  .slick-dots {
138
+
139
  & when not ( isnumber( @navigation_dots_desktop ) ) {
140
  @media (min-width: @breakpoint_tablet_landscape) {
141
  display: none !important;
159
  display: none !important;
160
  }
161
  }
162
+
163
+ li {
164
 
165
  &.slick-active button:before {
166
  color: @navigation_dots_color_hover;
widgets/blog/blog.php CHANGED
@@ -35,10 +35,27 @@ class SiteOrigin_Widget_Blog_Widget extends SiteOrigin_Widget {
35
  )
36
  );
37
  add_action( 'wp_enqueue_scripts', array( $this, 'register_template_assets' ) );
 
38
  }
39
 
40
  function register_image_sizes() {
41
- add_image_size( 'sow-blog-portfolio', 375, 375, true );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
42
  }
43
 
44
  function get_widget_form() {
@@ -898,6 +915,9 @@ class SiteOrigin_Widget_Blog_Widget extends SiteOrigin_Widget {
898
  $template_settings['filter_categories'] = ! empty( $instance['settings']['filter_categories'] );
899
  }
900
 
 
 
 
901
  return array(
902
  'title' => $instance['title'],
903
  'settings' => $instance['settings'],
@@ -964,18 +984,22 @@ class SiteOrigin_Widget_Blog_Widget extends SiteOrigin_Widget {
964
  <?php endif;
965
  }
966
 
967
- static public function post_featured_image( $settings, $categories = false, $size = 'post-thumbnail' ) {
968
  if ( $settings['featured_image'] && has_post_thumbnail() ) : ?>
969
  <div class="sow-entry-thumbnail">
970
  <?php if ( $categories && $settings['categories'] && has_category() ) : ?>
971
  <div class="sow-thumbnail-meta">
972
- <?php
973
- echo get_the_category_list();
974
- ?>
975
  </div>
976
  <?php endif; ?>
977
  <a href="<?php the_permalink(); ?>">
978
- <?php the_post_thumbnail( $size ); ?>
 
 
 
 
 
 
979
  </a>
980
  </div>
981
  <?php
@@ -1018,7 +1042,7 @@ class SiteOrigin_Widget_Blog_Widget extends SiteOrigin_Widget {
1018
  }
1019
 
1020
  function alter_excerpt_more_indicator( $indicator ) {
1021
- return '...';
1022
  }
1023
 
1024
  function alter_excerpt_length( $length = 55 ) {
@@ -1036,7 +1060,11 @@ class SiteOrigin_Widget_Blog_Widget extends SiteOrigin_Widget {
1036
  $excerpt = get_the_excerpt();
1037
  $excerpt_add_read_more = str_word_count( $excerpt, 0, '0..9' ) >= $length;
1038
  if ( ! has_excerpt() ) {
1039
- $excerpt = wp_trim_words( $excerpt, $length, '...' );
 
 
 
 
1040
  }
1041
 
1042
  if ( $settings['read_more'] && ( has_excerpt() || $excerpt_add_read_more ) ) {
35
  )
36
  );
37
  add_action( 'wp_enqueue_scripts', array( $this, 'register_template_assets' ) );
38
+
39
  }
40
 
41
  function register_image_sizes() {
42
+ $image_sizes = apply_filters( 'siteorigin_widgets_blog_image_sizes', array(
43
+ 'portfolio' => array(
44
+ 375,
45
+ 375
46
+ ),
47
+ 'grid' => array(
48
+ 720,
49
+ 480
50
+ ),
51
+ 'alternate' => array(
52
+ 475,
53
+ 315
54
+ )
55
+ ) );
56
+ foreach ( $image_sizes as $k => $size ) {
57
+ add_image_size( 'sow-blog-' . $k, (int) $size[0], (int) $size[1], true );
58
+ }
59
  }
60
 
61
  function get_widget_form() {
915
  $template_settings['filter_categories'] = ! empty( $instance['settings']['filter_categories'] );
916
  }
917
 
918
+ // Add the current template to the settings array to allow for easier referencing.
919
+ $instance['settings']['template'] = $instance['template'];
920
+
921
  return array(
922
  'title' => $instance['title'],
923
  'settings' => $instance['settings'],
984
  <?php endif;
985
  }
986
 
987
+ public function post_featured_image( $settings, $categories = false, $size = 'post-thumbnail' ) {
988
  if ( $settings['featured_image'] && has_post_thumbnail() ) : ?>
989
  <div class="sow-entry-thumbnail">
990
  <?php if ( $categories && $settings['categories'] && has_category() ) : ?>
991
  <div class="sow-thumbnail-meta">
992
+ <?php echo get_the_category_list(); ?>
 
 
993
  </div>
994
  <?php endif; ?>
995
  <a href="<?php the_permalink(); ?>">
996
+ <?php
997
+ // Check if this template has a different default image size.
998
+ if ( $size == 'post-thumbnail' && has_image_size( 'sow-blog-' . $settings['template'] ) ) {
999
+ $size = 'sow-blog-' . $settings['template'];
1000
+ }
1001
+ the_post_thumbnail( $size );
1002
+ ?>
1003
  </a>
1004
  </div>
1005
  <?php
1042
  }
1043
 
1044
  function alter_excerpt_more_indicator( $indicator ) {
1045
+ return apply_filters( 'siteorigin_widgets_blog_excerpt_trim', '...' );
1046
  }
1047
 
1048
  function alter_excerpt_length( $length = 55 ) {
1060
  $excerpt = get_the_excerpt();
1061
  $excerpt_add_read_more = str_word_count( $excerpt, 0, '0..9' ) >= $length;
1062
  if ( ! has_excerpt() ) {
1063
+ $excerpt = wp_trim_words(
1064
+ $excerpt,
1065
+ $length,
1066
+ apply_filters( 'siteorigin_widgets_blog_excerpt_trim', '...' )
1067
+ );
1068
  }
1069
 
1070
  if ( $settings['read_more'] && ( has_excerpt() || $excerpt_add_read_more ) ) {
widgets/blog/css/style.css CHANGED
@@ -1 +1 @@
1
- .sow-blog.sow-blog-layout-alternate .sow-blog-posts,.sow-blog.sow-blog-layout-masonry .sow-blog-posts{display:flex;flex-wrap:wrap;justify-content:space-between}.sow-blog article{border:none;box-sizing:border-box;margin:0;padding:0}.sow-blog article .sow-entry-thumbnail a{display:block;line-height:0;text-align:center}.sow-blog article .sow-entry-header .sow-entry-title{font-weight:600;line-height:normal}.sow-blog article .sow-entry-header .sow-entry-title a{text-decoration:none}.sow-blog article .sow-entry-meta{line-height:normal}.sow-blog article .sow-entry-meta span a{text-decoration:none}.sow-blog article .sow-entry-meta span:not(:last-child)::after{content:"\007c";padding:0 2px;vertical-align:top}.sow-blog article .sow-entry-meta .updated:not(.published){display:none}.sow-blog article .sow-blog-content-wrapper{overflow:auto}.sow-blog article p:last-child,.sow-blog article p:only-child{margin-bottom:0}.sow-blog article .sow-more-link{padding:0}.sow-blog article .sow-more-link.excerpt{background:none;border:none;box-shadow:none;display:block;float:none;font-size:1em;font-weight:normal;margin-top:26px}.sow-blog article .sow-more-link .more-text{display:block}.sow-blog article .sow-more-link .more-text span{display:inline-block;padding-left:3px;vertical-align:middle}.sow-blog article .sow-more-link .sow-more-link-arrow{display:inline-block;font-size:1.1em;padding-bottom:2px;padding-left:4px;vertical-align:middle}.sow-blog .sow-post-navigation{clear:both;width:100%}.sow-blog .sow-post-navigation .sow-nav-links{display:flex;flex-direction:row;justify-content:center}.sow-blog .sow-post-navigation .page-numbers,.sow-blog .sow-post-navigation .current{display:inline-block;line-height:normal;margin-bottom:4px;text-decoration:none;transition:.3s;vertical-align:top}.sow-blog .sow-post-navigation .page-numbers .prev,.sow-blog .sow-post-navigation .page-numbers .next{line-height:1;padding-left:14px;padding-right:14px}.sow-blog .sow-post-navigation .dots{border:none;line-height:normal;transition:.3s;vertical-align:top}.sow-blog .sow-post-navigation .dots:hover{background:none;color:inherit}.sow-blog.sow-blog-layout-standard article .sow-entry-thumbnail{margin-bottom:-1px}.sow-blog.sow-blog-layout-grid article .sow-entry-thumbnail{margin:-1px}.sow-blog.sow-blog-layout-offset article .sow-blog-entry-offset div{margin-bottom:12px}.sow-blog.sow-blog-layout-offset article .sow-blog-entry-offset span{display:block;line-height:normal;margin-bottom:2px}.sow-blog.sow-blog-layout-offset article .sow-entry-thumbnail{margin-bottom:-1px}.sow-blog.sow-blog-layout-alternate article .sow-entry-thumbnail a{margin:-1px}.sow-blog.sow-blog-layout-alternate article .sow-blog-content-wrapper{box-sizing:border-box;padding:25px 30px 33px}.sow-blog.sow-blog-layout-alternate article .sow-blog-content-wrapper .sow-entry-content p:last-of-type{margin:0}.sow-blog.sow-blog-layout-alternate article .sow-blog-content-wrapper .sow-entry-content p:only-of-type{margin:0}.sow-blog.sow-blog-layout-alternate article.sow-no-thumbnail .sow-blog-content-wrapper{width:100%}.sow-blog.sow-blog-layout-masonry .sow-blog-posts{clear:both;margin:0 -15px}.sow-blog.sow-blog-layout-masonry .sow-blog-posts article{margin-bottom:30px;padding:0 15px}.sow-blog.sow-blog-layout-masonry .sow-blog-posts article .sow-entry-thumbnail{margin-bottom:-1px;position:relative}.sow-blog.sow-blog-layout-portfolio .sow-blog-posts{margin-left:-1.1667%;margin-right:-1.1667%}.sow-blog.sow-blog-layout-portfolio .sow-portfolio-filter-terms button{cursor:pointer}.sow-blog.sow-blog-layout-portfolio .sow-portfolio-filter-terms:hover,.sow-blog.sow-blog-layout-portfolio .sow-portfolio-filter-terms:focus{background:transparent}.sow-blog.sow-blog-layout-portfolio article .sow-entry-thumbnail{align-items:center;display:flex;justify-content:center;position:relative;text-align:center}.sow-blog.sow-blog-layout-portfolio article .sow-entry-thumbnail:hover .sow-entry-content{opacity:1;visibility:visible}.sow-blog.sow-blog-layout-portfolio article .sow-entry-thumbnail .sow-entry-link-overlay{bottom:0;left:0;position:absolute;right:0;text-decoration:none;top:0;z-index:1}.sow-blog.sow-blog-layout-portfolio article .sow-entry-thumbnail .sow-entry-overlay{height:100%;position:absolute;transition:.3s;width:100%;z-index:0}.sow-blog.sow-blog-layout-portfolio article .sow-entry-thumbnail .sow-entry-content{align-items:center;display:flex;flex-direction:column;opacity:0;position:absolute;transition:.3s;visibility:hidden;width:100%}.sow-blog.sow-blog-layout-portfolio article .sow-entry-thumbnail .sow-entry-content .sow-entry-title{line-height:normal;text-align:center;width:100%}.sow-blog.sow-blog-layout-portfolio article .sow-entry-thumbnail .sow-entry-content .sow-entry-title a{position:relative;z-index:2}.sow-blog.sow-blog-layout-portfolio article .sow-entry-thumbnail .sow-entry-content .sow-entry-divider{width:30px}.sow-blog.sow-blog-layout-portfolio article .sow-entry-thumbnail .sow-entry-content .sow-entry-project-type{display:block;text-align:center;width:100%}.sow-blog.sow-blog-layout-portfolio article .sow-entry-thumbnail .wp-post-image{border:0;box-shadow:none;height:auto;max-width:100%;width:100%}
1
+ .sow-blog.sow-blog-layout-alternate .sow-blog-posts,.sow-blog.sow-blog-layout-masonry .sow-blog-posts{display:flex;flex-wrap:wrap;justify-content:space-between}.sow-blog .sow-blog-posts article{border:none;box-sizing:border-box;margin:0;padding:0}.sow-blog article .sow-entry-thumbnail a{display:block;line-height:0;text-align:center}.sow-blog article .sow-entry-header .sow-entry-title{font-weight:600;line-height:normal}.sow-blog article .sow-entry-header .sow-entry-title a{text-decoration:none}.sow-blog article .sow-entry-meta{line-height:normal}.sow-blog article .sow-entry-meta span a{text-decoration:none}.sow-blog article .sow-entry-meta span:not(:last-child)::after{content:"\007c";padding:0 2px;vertical-align:top}.sow-blog article .sow-entry-meta .updated:not(.published){display:none}.sow-blog article .sow-blog-content-wrapper{overflow:auto}.sow-blog article p:last-child,.sow-blog article p:only-child{margin-bottom:0}.sow-blog article .sow-more-link{padding:0}.sow-blog article .sow-more-link.excerpt{background:none;border:none;box-shadow:none;display:block;float:none;font-size:1em;font-weight:normal;margin-top:26px}.sow-blog article .sow-more-link .more-text{display:block}.sow-blog article .sow-more-link .more-text span{display:inline-block;padding-left:3px;vertical-align:middle}.sow-blog article .sow-more-link .sow-more-link-arrow{display:inline-block;font-size:1.1em;padding-bottom:2px;padding-left:4px;vertical-align:middle}.sow-blog .sow-post-navigation{clear:both;width:100%}.sow-blog .sow-post-navigation .sow-nav-links{display:flex;flex-direction:row;justify-content:center}.sow-blog .sow-post-navigation .page-numbers,.sow-blog .sow-post-navigation .current{display:inline-block;line-height:normal;margin-bottom:4px;text-decoration:none;transition:.3s;vertical-align:top}.sow-blog .sow-post-navigation .page-numbers .prev,.sow-blog .sow-post-navigation .page-numbers .next{line-height:1;padding-left:14px;padding-right:14px}.sow-blog .sow-post-navigation .dots{border:none;line-height:normal;transition:.3s;vertical-align:top}.sow-blog .sow-post-navigation .dots:hover{background:none;color:inherit}.sow-blog.sow-blog-layout-standard article .sow-entry-thumbnail{margin-bottom:-1px}.sow-blog.sow-blog-layout-grid article .sow-entry-thumbnail{margin:-1px}.sow-blog.sow-blog-layout-offset article .sow-blog-entry-offset div{margin-bottom:12px}.sow-blog.sow-blog-layout-offset article .sow-blog-entry-offset span{display:block;line-height:normal;margin-bottom:2px}.sow-blog.sow-blog-layout-offset article .sow-entry-thumbnail{margin-bottom:-1px}.sow-blog.sow-blog-layout-alternate article .sow-entry-thumbnail a{margin:-1px}.sow-blog.sow-blog-layout-alternate article .sow-blog-content-wrapper{box-sizing:border-box;padding:25px 30px 33px}.sow-blog.sow-blog-layout-alternate article .sow-blog-content-wrapper .sow-entry-content p:last-of-type{margin:0}.sow-blog.sow-blog-layout-alternate article .sow-blog-content-wrapper .sow-entry-content p:only-of-type{margin:0}.sow-blog.sow-blog-layout-alternate article.sow-no-thumbnail .sow-blog-content-wrapper{width:100%}.sow-blog.sow-blog-layout-masonry .sow-blog-posts{clear:both;margin:0 -15px}.sow-blog.sow-blog-layout-masonry .sow-blog-posts article{margin-bottom:30px;padding:0 15px}.sow-blog.sow-blog-layout-masonry .sow-blog-posts article .sow-entry-thumbnail{margin-bottom:-1px;position:relative}.sow-blog.sow-blog-layout-portfolio .sow-blog-posts{margin-left:-1.1667%;margin-right:-1.1667%}.sow-blog.sow-blog-layout-portfolio .sow-portfolio-filter-terms button{cursor:pointer}.sow-blog.sow-blog-layout-portfolio .sow-portfolio-filter-terms:hover,.sow-blog.sow-blog-layout-portfolio .sow-portfolio-filter-terms:focus{background:transparent}.sow-blog.sow-blog-layout-portfolio article .sow-entry-thumbnail{align-items:center;display:flex;justify-content:center;position:relative;text-align:center}.sow-blog.sow-blog-layout-portfolio article .sow-entry-thumbnail:hover .sow-entry-content{opacity:1;visibility:visible}.sow-blog.sow-blog-layout-portfolio article .sow-entry-thumbnail .sow-entry-link-overlay{bottom:0;left:0;position:absolute;right:0;text-decoration:none;top:0;z-index:1}.sow-blog.sow-blog-layout-portfolio article .sow-entry-thumbnail .sow-entry-overlay{height:100%;position:absolute;transition:.3s;width:100%;z-index:0}.sow-blog.sow-blog-layout-portfolio article .sow-entry-thumbnail .sow-entry-content{align-items:center;display:flex;flex-direction:column;opacity:0;position:absolute;transition:.3s;visibility:hidden;width:100%}.sow-blog.sow-blog-layout-portfolio article .sow-entry-thumbnail .sow-entry-content .sow-entry-title{line-height:normal;text-align:center;width:100%}.sow-blog.sow-blog-layout-portfolio article .sow-entry-thumbnail .sow-entry-content .sow-entry-title a{position:relative;z-index:2}.sow-blog.sow-blog-layout-portfolio article .sow-entry-thumbnail .sow-entry-content .sow-entry-divider{width:30px}.sow-blog.sow-blog-layout-portfolio article .sow-entry-thumbnail .sow-entry-content .sow-entry-project-type{display:block;text-align:center;width:100%}.sow-blog.sow-blog-layout-portfolio article .sow-entry-thumbnail .wp-post-image{border:0;box-shadow:none;height:auto;max-width:100%;width:100%}
widgets/blog/styles/alternate.less CHANGED
@@ -50,6 +50,11 @@
50
 
51
  .sow-blog-layout-alternate {
52
 
 
 
 
 
 
53
  article {
54
  background: @post_background;
55
  border: 1px solid @post_border_color;
@@ -58,34 +63,26 @@
58
  margin-top: 0;
59
  width: 100%;
60
 
 
 
 
 
61
  // Alternating featured image alignment.
62
  @media (min-width: @responsive_breakpoint) {
 
 
63
 
64
- &:nth-of-type(2n) {
65
- flex-direction: row-reverse;
 
66
  }
67
 
68
  &:nth-of-type(2n) {
69
-
70
- .sow-entry-thumbnail a {
71
- text-align: right;
72
- }
73
  }
74
- }
75
 
76
- @media (max-width: @responsive_breakpoint) {
77
- width: 100%;
78
- }
79
-
80
- .sow-entry-thumbnail {
81
- width: 41.5006%;
82
-
83
- @media (max-width: @responsive_breakpoint) {
84
- width: 100%;
85
-
86
- a {
87
- text-align: left;
88
- }
89
  }
90
  }
91
 
50
 
51
  .sow-blog-layout-alternate {
52
 
53
+ .sow-blog-posts article {
54
+ background: @post_background;
55
+ border: 1px solid @post_border_color;
56
+ }
57
+
58
  article {
59
  background: @post_background;
60
  border: 1px solid @post_border_color;
63
  margin-top: 0;
64
  width: 100%;
65
 
66
+ .sow-entry-thumbnail {
67
+ width: 100%;
68
+ }
69
+
70
  // Alternating featured image alignment.
71
  @media (min-width: @responsive_breakpoint) {
72
+ .sow-entry-thumbnail {
73
+ width: 41.5006%;
74
 
75
+ a {
76
+ text-align: left;
77
+ }
78
  }
79
 
80
  &:nth-of-type(2n) {
81
+ flex-direction: row-reverse;
 
 
 
82
  }
 
83
 
84
+ &:nth-of-type(2n) .sow-entry-thumbnail a {
85
+ text-align: right;
 
 
 
 
 
 
 
 
 
 
 
86
  }
87
  }
88
 
widgets/blog/styles/grid.less CHANGED
@@ -56,15 +56,18 @@
56
  column-gap: @column_spacing;
57
  display: grid;
58
  grid-template-columns: repeat( @columns, 1fr );
59
- }
60
 
61
- article {
62
- background: @post_background;
63
- border: 1px solid @post_border_color;
64
 
65
- @media (max-width: @responsive_breakpoint) {
66
- width: 100%;
 
67
  }
 
 
 
68
 
69
  .sow-entry-header {
70
 
56
  column-gap: @column_spacing;
57
  display: grid;
58
  grid-template-columns: repeat( @columns, 1fr );
 
59
 
60
+ article {
61
+ background: @post_background;
62
+ border: 1px solid @post_border_color;
63
 
64
+ @media (max-width: @responsive_breakpoint) {
65
+ width: 100%;
66
+ }
67
  }
68
+ }
69
+
70
+ article {
71
 
72
  .sow-entry-header {
73
 
widgets/blog/tpl/alternate.php CHANGED
@@ -1,6 +1,6 @@
1
  <?php $thumbnail_class = ! $settings['featured_image'] || ! has_post_thumbnail() ? 'sow-no-thumbnail' : ''; ?>
2
  <article id="post-<?php the_ID(); ?>" <?php post_class( "sow-blog-columns $thumbnail_class" ); ?> style="display: flex; flex-wrap: wrap; justify-content: space-between; margin-bottom: 30px;">
3
- <?php SiteOrigin_Widget_Blog_Widget::post_featured_image( $settings ); ?>
4
  <div class="sow-blog-content-wrapper">
5
  <header class="sow-entry-header" style="margin-bottom: 18px;">
6
  <?php SiteOrigin_Widget_Blog_Widget::generate_post_title(); ?>
1
  <?php $thumbnail_class = ! $settings['featured_image'] || ! has_post_thumbnail() ? 'sow-no-thumbnail' : ''; ?>
2
  <article id="post-<?php the_ID(); ?>" <?php post_class( "sow-blog-columns $thumbnail_class" ); ?> style="display: flex; flex-wrap: wrap; justify-content: space-between; margin-bottom: 30px;">
3
+ <?php $this->post_featured_image( $settings ); ?>
4
  <div class="sow-blog-content-wrapper">
5
  <header class="sow-entry-header" style="margin-bottom: 18px;">
6
  <?php SiteOrigin_Widget_Blog_Widget::generate_post_title(); ?>
widgets/blog/tpl/grid.php CHANGED
@@ -1,5 +1,5 @@
1
  <article id="post-<?php the_ID(); ?>" <?php post_class(); ?> style="margin: 0 0 30px;">
2
- <?php SiteOrigin_Widget_Blog_Widget::post_featured_image( $settings ); ?>
3
  <div class="sow-blog-content-wrapper" style="padding: 25px 30px 33px;">
4
  <header class="sow-entry-header" style="margin-bottom: 20px;">
5
  <?php SiteOrigin_Widget_Blog_Widget::generate_post_title(); ?>
1
  <article id="post-<?php the_ID(); ?>" <?php post_class(); ?> style="margin: 0 0 30px;">
2
+ <?php $this->post_featured_image( $settings ); ?>
3
  <div class="sow-blog-content-wrapper" style="padding: 25px 30px 33px;">
4
  <header class="sow-entry-header" style="margin-bottom: 20px;">
5
  <?php SiteOrigin_Widget_Blog_Widget::generate_post_title(); ?>
widgets/blog/tpl/masonry.php CHANGED
@@ -1,5 +1,5 @@
1
  <article id="post-<?php the_ID(); ?>" <?php post_class( 'sow-masonry-item' ); ?>>
2
- <?php SiteOrigin_Widget_Blog_Widget::post_featured_image( $settings, true ); ?>
3
  <div class="sow-blog-content-wrapper" style="padding: 25px 30px 33px;">
4
  <header class="sow-entry-header" style="margin-bottom: 20px;">
5
  <?php SiteOrigin_Widget_Blog_Widget::generate_post_title(); ?>
1
  <article id="post-<?php the_ID(); ?>" <?php post_class( 'sow-masonry-item' ); ?>>
2
+ <?php $this->post_featured_image( $settings, true ); ?>
3
  <div class="sow-blog-content-wrapper" style="padding: 25px 30px 33px;">
4
  <header class="sow-entry-header" style="margin-bottom: 20px;">
5
  <?php SiteOrigin_Widget_Blog_Widget::generate_post_title(); ?>
widgets/blog/tpl/offset.php CHANGED
@@ -52,7 +52,7 @@
52
  <?php endif; ?>
53
  </div>
54
  <div class="sow-blog-entry" style="width: 78%;">
55
- <?php SiteOrigin_Widget_Blog_Widget::post_featured_image( $settings ); ?>
56
  <div class="sow-blog-content-wrapper" style="padding: 25px 30px 33px;">
57
  <header class="sow-entry-header" style="margin-bottom: 20px;">
58
  <?php
52
  <?php endif; ?>
53
  </div>
54
  <div class="sow-blog-entry" style="width: 78%;">
55
+ <?php $this->post_featured_image( $settings ); ?>
56
  <div class="sow-blog-content-wrapper" style="padding: 25px 30px 33px;">
57
  <header class="sow-entry-header" style="margin-bottom: 20px;">
58
  <?php
widgets/blog/tpl/standard.php CHANGED
@@ -1,5 +1,5 @@
1
  <article id="post-<?php the_ID(); ?>" <?php post_class(); ?> style="margin: 0 0 40px">
2
- <?php SiteOrigin_Widget_Blog_Widget::post_featured_image( $settings ); ?>
3
  <div class="sow-blog-content-wrapper" style="padding: 25px 30px 38px;">
4
  <header class="sow-entry-header" style="margin-bottom: 20px;">
5
  <?php SiteOrigin_Widget_Blog_Widget::generate_post_title(); ?>
1
  <article id="post-<?php the_ID(); ?>" <?php post_class(); ?> style="margin: 0 0 40px">
2
+ <?php $this->post_featured_image( $settings ); ?>
3
  <div class="sow-blog-content-wrapper" style="padding: 25px 30px 38px;">
4
  <header class="sow-entry-header" style="margin-bottom: 20px;">
5
  <?php SiteOrigin_Widget_Blog_Widget::generate_post_title(); ?>
widgets/features/features.php CHANGED
@@ -250,6 +250,11 @@ class SiteOrigin_Widget_Features_Widget extends SiteOrigin_Widget {
250
  'default' => true,
251
  ),
252
 
 
 
 
 
 
253
  'title_link' => array(
254
  'type' => 'checkbox',
255
  'label' => __( 'Link feature title to more URL', 'so-widgets-bundle' ),
@@ -342,6 +347,7 @@ class SiteOrigin_Widget_Features_Widget extends SiteOrigin_Widget {
342
  $less_vars['per_row'] = $instance['per_row'];
343
  $less_vars['use_icon_size'] = empty( $instance['icon_size_custom'] ) ? 'false' : 'true';
344
  $less_vars['link_feature'] = ! empty( $instance['link_feature'] );
 
345
 
346
  $global_settings = $this->get_global_settings();
347
 
@@ -352,7 +358,7 @@ class SiteOrigin_Widget_Features_Widget extends SiteOrigin_Widget {
352
  return $less_vars;
353
  }
354
 
355
- function get_feature_flex_direction( $position ) {
356
  switch ( $position ) {
357
  case 'top':
358
  $style = 'column';
@@ -363,7 +369,7 @@ class SiteOrigin_Widget_Features_Widget extends SiteOrigin_Widget {
363
  break;
364
 
365
  case 'bottom':
366
- $style = 'column-reverse';
367
  break;
368
 
369
  case 'left':
250
  'default' => true,
251
  ),
252
 
253
+ 'more_text_bottom_align' => array(
254
+ 'type' => 'checkbox',
255
+ 'label' => __( 'Bottom align More link text', 'so-widgets-bundle' ),
256
+ ),
257
+
258
  'title_link' => array(
259
  'type' => 'checkbox',
260
  'label' => __( 'Link feature title to more URL', 'so-widgets-bundle' ),
347
  $less_vars['per_row'] = $instance['per_row'];
348
  $less_vars['use_icon_size'] = empty( $instance['icon_size_custom'] ) ? 'false' : 'true';
349
  $less_vars['link_feature'] = ! empty( $instance['link_feature'] );
350
+ $less_vars['more_text_bottom_align'] = ! empty( $instance['more_text_bottom_align'] ) ? 'true' : 'false';
351
 
352
  $global_settings = $this->get_global_settings();
353
 
358
  return $less_vars;
359
  }
360
 
361
+ function get_feature_flex_direction( $position, $more_text_bottom_align = false ) {
362
  switch ( $position ) {
363
  case 'top':
364
  $style = 'column';
369
  break;
370
 
371
  case 'bottom':
372
+ $style = $more_text_bottom_align ? 'column' : 'column-reverse';
373
  break;
374
 
375
  case 'left':
widgets/features/styles/default.less CHANGED
@@ -24,16 +24,27 @@
24
  @icon_size: 24px;
25
  @use_icon_size: false;
26
  @link_feature: default;
 
27
 
28
  @responsive_breakpoint: 520px;
29
 
30
  .sow-features-list {
31
  .clearfix();
 
 
 
 
 
32
 
33
  .sow-features-feature {
34
  .box-sizing(border-box);
35
  padding: 0 25px;
36
  position: relative;
 
 
 
 
 
37
 
38
  @media (min-width: @responsive_breakpoint) {
39
  &:nth-of-type(@{per_row}n+1) {
@@ -46,6 +57,11 @@
46
  }
47
  }
48
 
 
 
 
 
 
49
  &.sow-icon-container-position-top {
50
  text-align: center;
51
 
@@ -81,7 +97,12 @@
81
  & when ( @per_row = 1 ) {
82
  &.sow-icon-container-position-top, &.sow-icon-container-position-bottom {
83
  .sow-icon-container {
84
- margin: auto;
 
 
 
 
 
85
  }
86
  }
87
  }
@@ -162,7 +183,13 @@
162
  color: @text_color;
163
  font-size: @text_size;
164
  font-style: @text_font_style;
165
- margin: auto;
 
 
 
 
 
 
166
 
167
  > @{title_tag} {
168
  .font(@title_font, @title_font_weight);
@@ -170,12 +197,43 @@
170
  font-size: @title_size;
171
  font-style: @title_font_style;
172
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
173
 
174
- > p.sow-more-text {
175
- .font(@more_text_font, @more_text_font_weight);
176
- color: @more_text_color;
177
- font-size: @more_text_size;
178
- font-style: @more_text_font_style;
 
 
 
179
  }
180
  }
181
 
24
  @icon_size: 24px;
25
  @use_icon_size: false;
26
  @link_feature: default;
27
+ @more_text_bottom_align: default;
28
 
29
  @responsive_breakpoint: 520px;
30
 
31
  .sow-features-list {
32
  .clearfix();
33
+ & when ( @more_text_bottom_align = true ) {
34
+ align-items: stretch;
35
+ display: flex;
36
+ flex-wrap: wrap;
37
+ }
38
 
39
  .sow-features-feature {
40
  .box-sizing(border-box);
41
  padding: 0 25px;
42
  position: relative;
43
+ & when ( @more_text_bottom_align = true ) {
44
+ display: flex;
45
+ flex-direction: column;
46
+ justify-content: space-between;
47
+ }
48
 
49
  @media (min-width: @responsive_breakpoint) {
50
  &:nth-of-type(@{per_row}n+1) {
57
  }
58
  }
59
 
60
+ & when ( @more_text_bottom_align = true ) {
61
+ .sow-icon-container {
62
+ margin: auto;
63
+ }
64
+ }
65
  &.sow-icon-container-position-top {
66
  text-align: center;
67
 
97
  & when ( @per_row = 1 ) {
98
  &.sow-icon-container-position-top, &.sow-icon-container-position-bottom {
99
  .sow-icon-container {
100
+ & when ( @more_text_bottom_align = true ) {
101
+ margin: 0 auto;
102
+ }
103
+ & when not ( @more_text_bottom_align = true ) {
104
+ margin: auto;
105
+ }
106
  }
107
  }
108
  }
183
  color: @text_color;
184
  font-size: @text_size;
185
  font-style: @text_font_style;
186
+ & when ( @more_text_bottom_align = true ) {
187
+ height: 100%;
188
+ }
189
+
190
+ & when not ( @more_text_bottom_align = true ) {
191
+ margin: auto;
192
+ }
193
 
194
  > @{title_tag} {
195
  .font(@title_font, @title_font_weight);
197
  font-size: @title_size;
198
  font-style: @title_font_style;
199
  }
200
+ }
201
+
202
+ & when ( @more_text_bottom_align = true ) {
203
+ .sow-features-feature-right-left-container {
204
+ display: flex;
205
+ flex-direction: inherit;
206
+ }
207
+
208
+ &.sow-icon-container-position-right,
209
+ &.sow-icon-container-position-left {
210
+ align-items: baseline;
211
+ .textwidget {
212
+ display: flex;
213
+ flex-direction: column;
214
+ justify-content: space-between;
215
+ }
216
+ }
217
+
218
+ &.sow-icon-container-position-bottom .sow-icon-container {
219
+ order: 3;
220
+ }
221
+ }
222
+
223
+ p.sow-more-text {
224
+ .font(@more_text_font, @more_text_font_weight);
225
+ color: @more_text_color;
226
+ font-size: @more_text_size;
227
+ font-style: @more_text_font_style;
228
 
229
+ a {
230
+ color: inherit;
231
+ font-weight: 500;
232
+ text-decoration: none;
233
+
234
+ &:hover {
235
+ text-decoration: underline;
236
+ }
237
  }
238
  }
239
 
widgets/features/tpl/default.php CHANGED
@@ -1,18 +1,30 @@
1
  <?php
2
- $per_row = ! empty( $instance['per_row'] ) ? $instance['per_row'] : 3;
3
  if ( ! empty( $instance['features'] ) ) {
4
- $last_row = floor( ( count( $instance['features'] ) - 1 ) / $per_row );
5
  }
6
  ?>
7
 
8
  <div class="sow-features-list <?php if( $instance['responsive'] ) echo 'sow-features-responsive'; ?>">
9
 
10
- <?php if( isset( $instance['features'] ) ) : ?>
11
  <?php foreach( $instance['features'] as $i => $feature ) : ?>
 
 
 
 
 
 
 
 
 
 
12
  <div
13
- class="sow-features-feature sow-icon-container-position-<?php echo esc_attr( $feature['container_position'] ) ?> <?php if ( floor( $i / $per_row ) == $last_row ) echo 'sow-features-feature-last-row'; ?>"
14
- style="display: flex; flex-direction: <?php echo $this->get_feature_flex_direction( $feature['container_position'] ); ?>; float: left; width: <?php echo round( 100 / $per_row, 3 ); ?>%;"
15
  >
 
 
 
16
 
17
  <?php if ( ! empty( $feature['more_url'] ) && $instance['icon_link'] && empty( $instance['link_feature'] ) ) : ?>
18
  <a
@@ -22,8 +34,8 @@ if ( ! empty( $instance['features'] ) ) {
22
  <?php endif; ?>
23
  <div
24
  class="sow-icon-container <?php echo !empty($instance['container_shape']) ? 'sow-container-' . esc_attr($instance['container_shape']) : 'sow-container-none'?>"
25
- style="color: <?php echo esc_attr($feature['container_color']) ?>; "
26
- <?php echo ( ! empty( $feature['icon_title'] ) ? 'title="' . esc_attr( $feature['icon_title'] ) . '"' : '' ); ?>>
27
  <?php
28
  $icon_styles = array();
29
  if( !empty($feature['icon_image']) || !empty($feature['icon_image_fallback']) ) {
@@ -58,6 +70,10 @@ if ( ! empty( $instance['features'] ) ) {
58
  <?php endif; ?>
59
 
60
  <div class="textwidget">
 
 
 
 
61
  <?php if(!empty($feature['title'])) : ?>
62
  <<?php echo esc_html( $instance['fonts']['title_options']['tag'] ); ?>>
63
  <?php if ( ! empty( $feature['more_url'] ) && $instance['title_link'] && empty( $instance['link_feature'] ) ) : ?>
@@ -78,14 +94,33 @@ if ( ! empty( $instance['features'] ) ) {
78
  <?php echo do_shortcode( $feature['text'] ); ?>
79
  <?php endif; ?>
80
 
81
- <?php if(!empty($feature['more_text'])) : ?>
 
82
  <p class="sow-more-text">
83
- <?php if( !empty( $feature['more_url'] ) ) echo '<a href="' . sow_esc_url( $feature['more_url'] ) . '" ' . ( $instance['new_window'] ? 'target="_blank" rel="noopener noreferrer"' : '' ) . '>'; ?>
84
- <?php echo wp_kses_post( $feature['more_text'] ) ?>
85
- <?php if( !empty( $feature['more_url'] ) ) echo '</a>'; ?>
86
  </p>
87
  <?php endif; ?>
88
  </div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
89
  <?php if ( ! empty( $instance['link_feature'] ) && ! empty( $feature['more_url'] ) ) : ?>
90
  <a
91
  href="<?php echo sow_esc_url( $feature['more_url'] ); ?>"
1
  <?php
 
2
  if ( ! empty( $instance['features'] ) ) {
3
+ $last_row = floor( ( count( $instance['features'] ) - 1 ) / $instance['per_row'] );
4
  }
5
  ?>
6
 
7
  <div class="sow-features-list <?php if( $instance['responsive'] ) echo 'sow-features-responsive'; ?>">
8
 
9
+ <?php if ( isset( $instance['features'] ) ) : ?>
10
  <?php foreach( $instance['features'] as $i => $feature ) : ?>
11
+ <?php
12
+ $right_left_read_more = ! empty( $feature['more_text'] ) &&
13
+ (
14
+ empty( $instance['more_text_bottom_align'] ) ||
15
+ (
16
+ $feature['container_position'] == 'right' ||
17
+ $feature['container_position'] == 'left'
18
+ )
19
+ );
20
+ ?>
21
  <div
22
+ class="sow-features-feature sow-icon-container-position-<?php echo esc_attr( $feature['container_position'] ); ?> <?php if ( floor( $i / $instance['per_row'] ) == $last_row ) echo 'sow-features-feature-last-row'; ?>"
23
+ style="display: flex; flex-direction: <?php echo $this->get_feature_flex_direction( $feature['container_position'], ! empty( $instance['more_text_bottom_align'] ) ); ?>; float: left; width: <?php echo round( 100 / $instance['per_row'], 3 ); ?>%;"
24
  >
25
+ <?php if ( $right_left_read_more ) : ?>
26
+ <div class="sow-features-feature-right-left-container" style="display: flex; flex-direction: inherit;">
27
+ <?php endif; ?>
28
 
29
  <?php if ( ! empty( $feature['more_url'] ) && $instance['icon_link'] && empty( $instance['link_feature'] ) ) : ?>
30
  <a
34
  <?php endif; ?>
35
  <div
36
  class="sow-icon-container <?php echo !empty($instance['container_shape']) ? 'sow-container-' . esc_attr($instance['container_shape']) : 'sow-container-none'?>"
37
+ style="color: <?php echo esc_attr( $feature['container_color'] ); ?>; "
38
+ <?php echo ( ! empty( $feature['icon_title'] ) ? 'title="' . esc_attr( $feature['icon_title'] ) . '"' : '' ); ?>>
39
  <?php
40
  $icon_styles = array();
41
  if( !empty($feature['icon_image']) || !empty($feature['icon_image_fallback']) ) {
70
  <?php endif; ?>
71
 
72
  <div class="textwidget">
73
+ <?php if ( $right_left_read_more ) : ?>
74
+ <div class="sow-features-feature-content">
75
+ <?php endif; ?>
76
+
77
  <?php if(!empty($feature['title'])) : ?>
78
  <<?php echo esc_html( $instance['fonts']['title_options']['tag'] ); ?>>
79
  <?php if ( ! empty( $feature['more_url'] ) && $instance['title_link'] && empty( $instance['link_feature'] ) ) : ?>
94
  <?php echo do_shortcode( $feature['text'] ); ?>
95
  <?php endif; ?>
96
 
97
+ <?php if ( $right_left_read_more ) : ?>
98
+ </div>
99
  <p class="sow-more-text">
100
+ <?php if( ! empty( $feature['more_url'] ) ) echo '<a href="' . sow_esc_url( $feature['more_url'] ) . '" ' . ( $instance['new_window'] ? 'target="_blank" rel="noopener noreferrer"' : '' ) . '>'; ?>
101
+ <?php echo wp_kses_post( $feature['more_text'] ); ?>
102
+ <?php if ( ! empty( $feature['more_url'] ) ) echo '</a>'; ?>
103
  </p>
104
  <?php endif; ?>
105
  </div>
106
+ <?php if ( $right_left_read_more ) : ?>
107
+ </div>
108
+ <?php endif; ?>
109
+ <?php if (
110
+ ! empty( $feature['more_text'] ) &&
111
+ ! empty( $instance['more_text_bottom_align'] ) &&
112
+ (
113
+ $feature['container_position'] == 'top' ||
114
+ $feature['container_position'] == 'bottom'
115
+ )
116
+ ) : ?>
117
+ <p class="sow-more-text">
118
+ <?php if ( ! empty( $feature['more_url'] ) ) echo '<a href="' . sow_esc_url( $feature['more_url'] ) . '" ' . ( $instance['new_window'] ? 'target="_blank" rel="noopener noreferrer"' : '' ) . '>'; ?>
119
+ <?php echo wp_kses_post( $feature['more_text'] ); ?>
120
+ <?php if ( ! empty( $feature['more_url'] ) ) echo '</a>'; ?>
121
+ </p>
122
+ <?php endif; ?>
123
+
124
  <?php if ( ! empty( $instance['link_feature'] ) && ! empty( $feature['more_url'] ) ) : ?>
125
  <a
126
  href="<?php echo sow_esc_url( $feature['more_url'] ); ?>"