SiteOrigin Widgets Bundle - Version 1.32.0

Version Description

  • 14 March 2022 =
  • Post Carousel: Added a new Autoplay Continuous Scroll setting.
  • Post Carousel: Resolved a potential item tag notice.
  • Widgets Block: Resolve error when trying to use disabled third-party widget.
  • Widgets Block: Accounted for a potential third-party widgets filename conflict.
  • Widgets Block: Added non-SiteOrigin widget author names.
  • Widgets Block: Resolved a potential Undefined index notice if a widget isn't selected.
Download this release

Release Info

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

Code changes from version 1.31.0 to 1.32.0

base/inc/widgets/base-carousel.class.php CHANGED
@@ -254,6 +254,13 @@ abstract class SiteOrigin_Widget_Base_Carousel extends SiteOrigin_Widget {
254
  'label' => __( 'Loop Items', 'so-widgets-bundle' ),
255
  'description' => __( 'Automatically return to the first item after the last item.', 'so-widgets-bundle' ),
256
  'default' => true,
 
 
 
 
 
 
 
257
  ),
258
  'dots' => array(
259
  'type' => 'checkbox',
@@ -265,7 +272,7 @@ abstract class SiteOrigin_Widget_Base_Carousel extends SiteOrigin_Widget {
265
  'nav_dots[show]: val',
266
  'nav_dots[hide]: ! val',
267
  ),
268
- )
269
  ),
270
  'arrows' => array(
271
  'type' => 'checkbox',
@@ -277,7 +284,7 @@ abstract class SiteOrigin_Widget_Base_Carousel extends SiteOrigin_Widget {
277
  'nav_arrows[show]: val',
278
  'nav_arrows[hide]: ! val',
279
  ),
280
- )
281
  ),
282
  'animation' => array(
283
  'type' => 'select',
254
  'label' => __( 'Loop Items', 'so-widgets-bundle' ),
255
  'description' => __( 'Automatically return to the first item after the last item.', 'so-widgets-bundle' ),
256
  'default' => true,
257
+ 'state_emitter' => array(
258
+ 'callback' => 'conditional',
259
+ 'args' => array(
260
+ 'loop_posts[show]: val',
261
+ 'loop_posts[hide]: ! val',
262
+ ),
263
+ ),
264
  ),
265
  'dots' => array(
266
  'type' => 'checkbox',
272
  'nav_dots[show]: val',
273
  'nav_dots[hide]: ! val',
274
  ),
275
+ ),
276
  ),
277
  'arrows' => array(
278
  'type' => 'checkbox',
284
  'nav_arrows[show]: val',
285
  'nav_arrows[hide]: ! val',
286
  ),
287
+ ),
288
  ),
289
  'animation' => array(
290
  'type' => 'select',
base/inc/widgets/tpl/carousel.php CHANGED
@@ -19,15 +19,15 @@
19
  }
20
  ?>
21
  <div class="sow-carousel-wrapper"
22
- data-dir="<?php echo is_rtl() ? 'rtl' : 'ltr'; ?>"
23
- style="opacity: 0;"
24
- <?php
25
- foreach ( $settings['attributes'] as $n => $v ) {
26
- if ( ! empty( $n ) ) {
27
- echo 'data-' . $n . '="' . esc_attr( $v ) . '" ';
28
- }
29
- }
30
- ?>
31
  >
32
  <div
33
  class="sow-carousel-items"
19
  }
20
  ?>
21
  <div class="sow-carousel-wrapper"
22
+ data-dir="<?php echo is_rtl() ? 'rtl' : 'ltr'; ?>"
23
+ style="opacity: 0;"
24
+ <?php
25
+ foreach ( $settings['attributes'] as $n => $v ) {
26
+ if ( ! empty( $n ) ) {
27
+ echo 'data-' . $n . '="' . esc_attr( $v ) . '" ';
28
+ }
29
+ }
30
+ ?>
31
  >
32
  <div
33
  class="sow-carousel-items"
compat/block-editor/widget-block.js CHANGED
@@ -11,15 +11,14 @@
11
  var Spinner = components.Spinner;
12
  var __ = i18n.__;
13
 
14
- var ajaxErrorHandler = function( response ) {
15
  var errorMessage = '';
16
  if ( response.hasOwnProperty( 'responseJSON' ) ) {
17
  errorMessage = response.responseJSON.message;
18
  } else if ( response.hasOwnProperty( 'responseText' ) ) {
19
  errorMessage = response.responseText;
20
  }
21
-
22
- props.setState( { widgetFormHtml: '<div>' + errorMessage + '</div>', } );
23
  }
24
 
25
  registerBlockType( 'sowb/widget-block', {
@@ -114,7 +113,9 @@
114
  } );
115
  wp.data.dispatch( 'core/editor' ).unlockPostSaving();
116
  } )
117
- .fail( ajaxErrorHandler );
 
 
118
  }
119
 
120
  function switchToEditing() {
@@ -188,7 +189,9 @@
188
  .done( function( widgetForm ) {
189
  props.setState( { widgetFormHtml: widgetForm } );
190
  } )
191
- .fail( ajaxErrorHandler );
 
 
192
  }
193
 
194
  var widgetForm = props.widgetFormHtml ? props.widgetFormHtml : '';
11
  var Spinner = components.Spinner;
12
  var __ = i18n.__;
13
 
14
+ var getAjaxErrorMsg = function( response ) {
15
  var errorMessage = '';
16
  if ( response.hasOwnProperty( 'responseJSON' ) ) {
17
  errorMessage = response.responseJSON.message;
18
  } else if ( response.hasOwnProperty( 'responseText' ) ) {
19
  errorMessage = response.responseText;
20
  }
21
+ return errorMessage;
 
22
  }
23
 
24
  registerBlockType( 'sowb/widget-block', {
113
  } );
114
  wp.data.dispatch( 'core/editor' ).unlockPostSaving();
115
  } )
116
+ .fail( function( response ) {
117
+ props.setState( { widgetFormHtml: '<div>' + getAjaxErrorMsg( response ) + '</div>', } );
118
+ } );
119
  }
120
 
121
  function switchToEditing() {
189
  .done( function( widgetForm ) {
190
  props.setState( { widgetFormHtml: widgetForm } );
191
  } )
192
+ .fail( function( response ) {
193
+ props.setState( { widgetFormHtml: '<div>' + getAjaxErrorMsg( response ) + '</div>', } );
194
+ } );
195
  }
196
 
197
  var widgetForm = props.widgetFormHtml ? props.widgetFormHtml : '';
compat/block-editor/widget-block.min.js CHANGED
@@ -1 +1 @@
1
- !function(e,t,i,o,n,s,d){var a=o.createElement,r=t.registerBlockType,l=d.BlockControls,w=n.ComboboxControl,g=s.withState,c=n.Toolbar,u=n.ToolbarButton,m=n.Placeholder,b=n.Spinner,p=i.__,v=function(e){var t="";e.hasOwnProperty("responseJSON")?t=e.responseJSON.message:e.hasOwnProperty("responseText")&&(t=e.responseText),props.setState({widgetFormHtml:"<div>"+t+"</div>"})};r("sowb/widget-block",{title:p("SiteOrigin Widget","so-widgets-bundle"),description:p("Select a SiteOrigin widget from the dropdown.","so-widgets-bundle"),icon:function(){return a("span",{className:"widget-icon so-widget-icon so-block-editor-icon"})},category:"widgets",keywords:[sowbBlockEditorAdmin.widgets.reduce((function(e,t){return e.length>0&&(e+=","),e+t.name}),"")],supports:{html:!1},attributes:{widgetClass:{type:"string"},widgetData:{type:"object"},widgetHtml:{type:"string"},widgetIcons:{type:"array"}},edit:g({editing:!1,formInitialized:!1,previewInitialized:!1,widgetFormHtml:"",widgetSettingsChanged:!1,widgetPreviewHtml:""})((function(e){function t(t=!1){wp.data.dispatch("core/editor").lockPostSaving(),jQuery.post({url:sowbBlockEditorAdmin.restUrl+"sowb/v1/widgets/previews",beforeSend:function(e){e.setRequestHeader("X-WP-Nonce",sowbBlockEditorAdmin.nonce)},data:{widgetClass:e.attributes.widgetClass,widgetData:t||(e.attributes.widgetData||{})}}).done((function(t){e.setState({widgetPreviewHtml:t.html,previewInitialized:!1}),e.setAttributes({widgetHtml:t.html,widgetIcons:t.icons}),wp.data.dispatch("core/editor").unlockPostSaving()})).fail(v)}function i(){e.setState({editing:!1,previewInitialized:!1})}if(!e.editing&&e.attributes.widgetClass&&e.attributes.widgetData){var o=!e.loadingWidgets&&!e.editing&&!e.widgetPreviewHtml&&e.attributes.widgetClass&&e.attributes.widgetData;o&&(e.setAttributes({widgetHtml:null,widgetIcons:null}),t());var n=e.widgetPreviewHtml?e.widgetPreviewHtml:"";return[a(l,{key:"controls"},a(c,{label:p("Preview widget.","so-widgets-bundle")},a(u,{className:"components-icon-button components-toolbar__control",label:p("Edit widget.","so-widgets-bundle"),onClick:function(){e.setState({editing:!0,formInitialized:!1})},icon:"edit"}))),a("div",{key:"preview",className:"so-widget-preview-container"},o?a("div",{className:"so-widgets-spinner-container"},a("span",null,a(b))):a("div",{dangerouslySetInnerHTML:{__html:n},ref:function(){e.previewInitialized||(jQuery(window.sowb).trigger("setup_widgets",{preview:!0}),e.setState({previewInitialized:!0}))}}))]}var s=[];sowbBlockEditorAdmin.widgets&&(s=sowbBlockEditorAdmin.widgets.map((function(e){return{value:e.class,label:e.name}})));var d=e.attributes.widgetClass&&!e.widgetFormHtml;d&&jQuery.post({url:sowbBlockEditorAdmin.restUrl+"sowb/v1/widgets/forms",beforeSend:function(e){e.setRequestHeader("X-WP-Nonce",sowbBlockEditorAdmin.nonce)},data:{widgetClass:e.attributes.widgetClass,widgetData:e.attributes.widgetData}}).done((function(t){e.setState({widgetFormHtml:t})})).fail(v);var r=e.widgetFormHtml?e.widgetFormHtml:"";return[!!r&&a(l,{key:"controls"},a(c,{label:p("Preview widget.","so-widgets-bundle")},a(u,{className:"components-icon-button components-toolbar__control",label:p("Preview widget.","so-widgets-bundle"),onClick:i,icon:"visibility"}))),a(m,{key:"placeholder",className:"so-widget-placeholder",label:p("SiteOrigin Widget","so-widgets-bundle"),instructions:p("Select the type of widget you want to use:","so-widgets-bundle")},e.loadingWidgets||d?a(b):a("div",{className:"so-widget-block-container"},a(w,{className:"so-widget-autocomplete-field",label:p("Widget type","so-widgets-bundle"),value:e.attributes.widgetClass,onFilterValueChange:function(e){},onChange:function(t){if(""!==t){if(e.widgetSettingsChanged&&!confirm(sowbBlockEditorAdmin.confirmChangeWidget))return!1;e.setAttributes({widgetClass:t,widgetData:null}),e.setState({editing:!0,widgetFormHtml:null,formInitialized:!1,widgetSettingsChanged:!1,widgetPreviewHtml:null,previewInitialized:!1})}},options:s}),a("div",{className:"so-widget-block-form-container",dangerouslySetInnerHTML:{__html:r},ref:function(o){var n=jQuery(o).find(".siteorigin-widget-form-main");n.length>0&&!e.formInitialized&&(n.siblings(".siteorigin-widget-preview").find("> a").on("click",(function(e){e.stopImmediatePropagation(),i()})),n.data("backupDisabled",!0),n.sowSetupForm(),e.attributes.widgetData?sowbForms.setWidgetFormValues(n,e.attributes.widgetData):e.setAttributes({widgetData:sowbForms.getWidgetFormValues(n)}),n.on("change",(function(){e.setState({widgetSettingsChanged:!0,widgetPreviewHtml:null,previewInitialized:!1});var i=sowbForms.getWidgetFormValues(n);e.setAttributes({widgetData:i}),t(i)})),e.setState({formInitialized:!0}))}})))]})),save:function(e){return null}})}(window.wp.editor,window.wp.blocks,window.wp.i18n,window.wp.element,window.wp.components,window.wp.compose,window.wp.blockEditor);
1
+ !function(t,e,i,o,n,s,d){var r=o.createElement,a=e.registerBlockType,l=d.BlockControls,w=n.ComboboxControl,g=s.withState,c=n.Toolbar,u=n.ToolbarButton,m=n.Placeholder,b=n.Spinner,p=i.__,v=function(t){var e="";return t.hasOwnProperty("responseJSON")?e=t.responseJSON.message:t.hasOwnProperty("responseText")&&(e=t.responseText),e};a("sowb/widget-block",{title:p("SiteOrigin Widget","so-widgets-bundle"),description:p("Select a SiteOrigin widget from the dropdown.","so-widgets-bundle"),icon:function(){return r("span",{className:"widget-icon so-widget-icon so-block-editor-icon"})},category:"widgets",keywords:[sowbBlockEditorAdmin.widgets.reduce((function(t,e){return t.length>0&&(t+=","),t+e.name}),"")],supports:{html:!1},attributes:{widgetClass:{type:"string"},widgetData:{type:"object"},widgetHtml:{type:"string"},widgetIcons:{type:"array"}},edit:g({editing:!1,formInitialized:!1,previewInitialized:!1,widgetFormHtml:"",widgetSettingsChanged:!1,widgetPreviewHtml:""})((function(t){function e(e=!1){wp.data.dispatch("core/editor").lockPostSaving(),jQuery.post({url:sowbBlockEditorAdmin.restUrl+"sowb/v1/widgets/previews",beforeSend:function(t){t.setRequestHeader("X-WP-Nonce",sowbBlockEditorAdmin.nonce)},data:{widgetClass:t.attributes.widgetClass,widgetData:e||(t.attributes.widgetData||{})}}).done((function(e){t.setState({widgetPreviewHtml:e.html,previewInitialized:!1}),t.setAttributes({widgetHtml:e.html,widgetIcons:e.icons}),wp.data.dispatch("core/editor").unlockPostSaving()})).fail((function(e){t.setState({widgetFormHtml:"<div>"+v(e)+"</div>"})}))}function i(){t.setState({editing:!1,previewInitialized:!1})}if(!t.editing&&t.attributes.widgetClass&&t.attributes.widgetData){var o=!t.loadingWidgets&&!t.editing&&!t.widgetPreviewHtml&&t.attributes.widgetClass&&t.attributes.widgetData;o&&(t.setAttributes({widgetHtml:null,widgetIcons:null}),e());var n=t.widgetPreviewHtml?t.widgetPreviewHtml:"";return[r(l,{key:"controls"},r(c,{label:p("Preview widget.","so-widgets-bundle")},r(u,{className:"components-icon-button components-toolbar__control",label:p("Edit widget.","so-widgets-bundle"),onClick:function(){t.setState({editing:!0,formInitialized:!1})},icon:"edit"}))),r("div",{key:"preview",className:"so-widget-preview-container"},o?r("div",{className:"so-widgets-spinner-container"},r("span",null,r(b))):r("div",{dangerouslySetInnerHTML:{__html:n},ref:function(){t.previewInitialized||(jQuery(window.sowb).trigger("setup_widgets",{preview:!0}),t.setState({previewInitialized:!0}))}}))]}var s=[];sowbBlockEditorAdmin.widgets&&(s=sowbBlockEditorAdmin.widgets.map((function(t){return{value:t.class,label:t.name}})));var d=t.attributes.widgetClass&&!t.widgetFormHtml;d&&jQuery.post({url:sowbBlockEditorAdmin.restUrl+"sowb/v1/widgets/forms",beforeSend:function(t){t.setRequestHeader("X-WP-Nonce",sowbBlockEditorAdmin.nonce)},data:{widgetClass:t.attributes.widgetClass,widgetData:t.attributes.widgetData}}).done((function(e){t.setState({widgetFormHtml:e})})).fail((function(e){t.setState({widgetFormHtml:"<div>"+v(e)+"</div>"})}));var a=t.widgetFormHtml?t.widgetFormHtml:"";return[!!a&&r(l,{key:"controls"},r(c,{label:p("Preview widget.","so-widgets-bundle")},r(u,{className:"components-icon-button components-toolbar__control",label:p("Preview widget.","so-widgets-bundle"),onClick:i,icon:"visibility"}))),r(m,{key:"placeholder",className:"so-widget-placeholder",label:p("SiteOrigin Widget","so-widgets-bundle"),instructions:p("Select the type of widget you want to use:","so-widgets-bundle")},t.loadingWidgets||d?r(b):r("div",{className:"so-widget-block-container"},r(w,{className:"so-widget-autocomplete-field",label:p("Widget type","so-widgets-bundle"),value:t.attributes.widgetClass,onFilterValueChange:function(t){},onChange:function(e){if(""!==e){if(t.widgetSettingsChanged&&!confirm(sowbBlockEditorAdmin.confirmChangeWidget))return!1;t.setAttributes({widgetClass:e,widgetData:null}),t.setState({editing:!0,widgetFormHtml:null,formInitialized:!1,widgetSettingsChanged:!1,widgetPreviewHtml:null,previewInitialized:!1})}},options:s}),r("div",{className:"so-widget-block-form-container",dangerouslySetInnerHTML:{__html:a},ref:function(o){var n=jQuery(o).find(".siteorigin-widget-form-main");n.length>0&&!t.formInitialized&&(n.siblings(".siteorigin-widget-preview").find("> a").on("click",(function(t){t.stopImmediatePropagation(),i()})),n.data("backupDisabled",!0),n.sowSetupForm(),t.attributes.widgetData?sowbForms.setWidgetFormValues(n,t.attributes.widgetData):t.setAttributes({widgetData:sowbForms.getWidgetFormValues(n)}),n.on("change",(function(){t.setState({widgetSettingsChanged:!0,widgetPreviewHtml:null,previewInitialized:!1});var i=sowbForms.getWidgetFormValues(n);t.setAttributes({widgetData:i}),e(i)})),t.setState({formInitialized:!0}))}})))]})),save:function(t){return null}})}(window.wp.editor,window.wp.blocks,window.wp.i18n,window.wp.element,window.wp.components,window.wp.compose,window.wp.blockEditor);
compat/block-editor/widget-block.php CHANGED
@@ -56,9 +56,16 @@ class SiteOrigin_Widgets_Bundle_Widget_Block {
56
  // The last class will always be from the widget file we just loaded.
57
  $classes = get_declared_classes();
58
  $widget_class = end( $classes );
 
 
 
 
 
 
 
59
 
60
  $so_widgets[] = array(
61
- 'name' => $widget['Name'],
62
  'class' => $widget_class,
63
  );
64
  }
@@ -72,8 +79,7 @@ class SiteOrigin_Widgets_Bundle_Widget_Block {
72
  $author = '';
73
  // Try to find a widget's author from its file metadata, by matching the filename to the ID (which is derived from the filename).
74
  foreach ( $widgets_metadata_list as $widget_metadata ) {
75
- $filename = $widgets_manager->get_widget_filename( $widget_obj->id_base );
76
- if ( $widget_metadata['ID'] == $filename ) {
77
  $author = $widget_metadata['Author'];
78
  break;
79
  }
@@ -138,8 +144,6 @@ class SiteOrigin_Widgets_Bundle_Widget_Block {
138
  $widget = SiteOrigin_Widgets_Bundle::single()->load_missing_widget( false, $widget_class );
139
  }
140
 
141
- $instance = $attributes['widgetData'];
142
-
143
  // Support for Additional CSS classes.
144
  $add_custom_class_name = function( $class_names ) use ( $attributes ) {
145
  if ( ! empty( $attributes['className'] ) ) {
@@ -150,6 +154,7 @@ class SiteOrigin_Widgets_Bundle_Widget_Block {
150
 
151
  if ( ! empty( $widget ) && is_object( $widget ) && is_subclass_of( $widget, 'SiteOrigin_Widget' ) ) {
152
  $GLOBALS['SITEORIGIN_WIDGET_BLOCK_RENDER'] = true;
 
153
  add_filter( 'siteorigin_widgets_wrapper_classes_' . $widget->id_base, $add_custom_class_name );
154
  ob_start();
155
 
56
  // The last class will always be from the widget file we just loaded.
57
  $classes = get_declared_classes();
58
  $widget_class = end( $classes );
59
+ // For SiteOrigin widgets, just display the widget's name. For third party widgets, display the Author
60
+ // to try avoid confusion when the widgets have the same name.
61
+ if ( $widget['Author'] != 'SiteOrigin' && strpos( $widget['Name'], $widget['Author'] ) === false ) {
62
+ $widget_name = sprintf( __( '%s by %s', 'so-widgets-bundle' ), $widget['Name'], $widget['Author'] );
63
+ } else {
64
+ $widget_name = $widget['Name'];
65
+ }
66
 
67
  $so_widgets[] = array(
68
+ 'name' => $widget_name,
69
  'class' => $widget_class,
70
  );
71
  }
79
  $author = '';
80
  // Try to find a widget's author from its file metadata, by matching the filename to the ID (which is derived from the filename).
81
  foreach ( $widgets_metadata_list as $widget_metadata ) {
82
+ if ( $widgets_manager->get_class_from_path( wp_normalize_path( $widget_metadata['File'] ) ) == $class ) {
 
83
  $author = $widget_metadata['Author'];
84
  break;
85
  }
144
  $widget = SiteOrigin_Widgets_Bundle::single()->load_missing_widget( false, $widget_class );
145
  }
146
 
 
 
147
  // Support for Additional CSS classes.
148
  $add_custom_class_name = function( $class_names ) use ( $attributes ) {
149
  if ( ! empty( $attributes['className'] ) ) {
154
 
155
  if ( ! empty( $widget ) && is_object( $widget ) && is_subclass_of( $widget, 'SiteOrigin_Widget' ) ) {
156
  $GLOBALS['SITEORIGIN_WIDGET_BLOCK_RENDER'] = true;
157
+ $instance = $attributes['widgetData'];
158
  add_filter( 'siteorigin_widgets_wrapper_classes_' . $widget->id_base, $add_custom_class_name );
159
  ob_start();
160
 
js/carousel.js CHANGED
@@ -36,14 +36,20 @@ jQuery( function ( $ ) {
36
  rows: 0,
37
  rtl: $$.data( 'dir' ) == 'rtl',
38
  touchThreshold: 20,
39
- infinite: ! $$.data( 'ajax-url' )&& $$.data( 'carousel_settings' ).loop,
 
 
 
 
 
 
 
 
 
40
  variableWidth: $$.data( 'variable_width' ),
41
  accessibility: false,
42
  cssEase: carouselSettings.animation,
43
  speed: carouselSettings.animation_speed,
44
- autoplay: carouselSettings.autoplay,
45
- autoplaySpeed: carouselSettings.autoplaySpeed,
46
- pauseOnHover: carouselSettings.pauseOnHover,
47
  slidesToScroll: responsiveSettings.desktop_slides_to_scroll,
48
  slidesToShow: typeof responsiveSettings.desktop_slides_to_show == 'undefined'
49
  ? responsiveSettings.desktop_slides_to_scroll
@@ -81,6 +87,28 @@ jQuery( function ( $ ) {
81
  $$.parent().parent().find( '.sow-carousel-' + ( direction == 'left' ? 'next' : 'prev' ) ).trigger( 'touchend' );
82
  } );
83
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
84
  // click is used rather than Slick's beforeChange or afterChange
85
  // due to the inability to stop a slide from changing from those events
86
  $$.parent().parent().find( '.sow-carousel-previous, .sow-carousel-next' ).on( 'click touchend', function( e, refocus ) {
36
  rows: 0,
37
  rtl: $$.data( 'dir' ) == 'rtl',
38
  touchThreshold: 20,
39
+ infinite:
40
+ carouselSettings.loop &&
41
+ (
42
+ ! $$.data( 'ajax-url' ) ||
43
+ (
44
+ $$.data( 'ajax-url' ) &&
45
+ carouselSettings.autoplay_continuous_scroll &&
46
+ carouselSettings.autoplay
47
+ )
48
+ ),
49
  variableWidth: $$.data( 'variable_width' ),
50
  accessibility: false,
51
  cssEase: carouselSettings.animation,
52
  speed: carouselSettings.animation_speed,
 
 
 
53
  slidesToScroll: responsiveSettings.desktop_slides_to_scroll,
54
  slidesToShow: typeof responsiveSettings.desktop_slides_to_show == 'undefined'
55
  ? responsiveSettings.desktop_slides_to_scroll
87
  $$.parent().parent().find( '.sow-carousel-' + ( direction == 'left' ? 'next' : 'prev' ) ).trigger( 'touchend' );
88
  } );
89
 
90
+ // Set up Autoplay. We use a custom autoplay rather than the Slick
91
+ // autoplay to account for the (sometimes) non-standard nature of our
92
+ // navigation that Slick has trouble accounting for.
93
+ if ( carouselSettings.autoplay ) {
94
+ var interrupted = false;
95
+ var autoplayNav = $$.parent().parent().find( '.sow-carousel-' + ( $$.data( 'dir' ) == 'ltr' ? 'next' : 'prev' ) );
96
+ setInterval( function() {
97
+ if ( ! interrupted ) {
98
+ autoplayNav.trigger( 'click' );
99
+ }
100
+ }, carouselSettings.autoplaySpeed );
101
+
102
+ if ( carouselSettings.pauseOnHover ) {
103
+ $items.on('mouseenter.slick', function() {
104
+ interrupted = true;
105
+ } );
106
+ $items.on( 'mouseleave.slick', function() {
107
+ interrupted = false;
108
+ } );
109
+ }
110
+ }
111
+
112
  // click is used rather than Slick's beforeChange or afterChange
113
  // due to the inability to stop a slide from changing from those events
114
  $$.parent().parent().find( '.sow-carousel-previous, .sow-carousel-next' ).on( 'click touchend', function( e, refocus ) {
js/carousel.min.js CHANGED
@@ -1 +1 @@
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:!i.data("ajax-url")&&i.data("carousel_settings").loop,variableWidth:i.data("variable_width"),accessibility:!1,cssEase:o.animation,speed:o.animation_speed,autoplay:o.autoplay,autoplaySpeed:o.autoplaySpeed,pauseOnHover:o.pauseOnHover,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")})),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=l.slick("slickGetOption","slidesToScroll"),r=a-d,u=!1;"post"==i.data("widget")&&"undefined"!=i.data("carousel_settings").theme&&c&&r++,c||(l.slick("slickCurrentSlide")+d>=a-1||l.slick("slickCurrentSlide")+n>r)&&(s(sowb).trigger("carousel_load_new_items",[i,l,t]),u=!0),s(this).hasClass("sow-carousel-next")&&!u?c&&l.slick("slickCurrentSlide")>=r?i.data("carousel_settings").loop&&l.slick("slickGoTo",0):l.slick("slickCurrentSlide")+n>r?l.setSlideTo(r):l.slick("slickNext"):s(this).hasClass("sow-carousel-previous")&&(i.data("carousel_settings").loop&&0==l.slick("slickCurrentSlide")?l.slick("slickGoTo",r):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(s(".sow-carousel-items").slick("slickCurrentSlide")/n)).addClass("slick-active"))})),o.dots&&(i.data("variable_width")||i.data("carousel_settings").theme)){i.find(".slick-dots li").off("click.slick");var l=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",l),s(sowb).on("carousel_posts_added",(function(){i.find(".slick-dots li").on("click touchend",l)}))}})),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=Math.ceil(e.outerWidth()/e.find(".sow-carousel-item").outerWidth(!0)),o=i.parent().parent().find(".sow-carousel-navigation");t>=i.data("item_count")?(o.hide(),e.slick("slickSetOption","touchMove",!1),e.slick("slickSetOption","draggable",!1)):o.not(":visible")&&(o.show(),e.slick("slickSetOption","touchMove",!0),e.slick("slickSetOption","draggable",!0));var l=i.data("responsive");window.matchMedia("(min-width: "+l.tablet_portrait_breakpoint+"px) and (max-width: "+l.tablet_landscape_breakpoint+"px) and (orientation: landscape)").matches&&(e.slick("slickSetOption","slidesToShow",l.tablet_landscape_slides_to_show),e.slick("slickSetOption","slidesToScroll",l.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;
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,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"),n=Math.ceil(l.outerWidth()/l.find(".sow-carousel-item").outerWidth(!0)),r=l.slick("slickGetOption","slidesToScroll"),d=a-n,u=!1;"post"==s.data("widget")&&"undefined"!=s.data("carousel_settings").theme&&c&&d++,c||(l.slick("slickCurrentSlide")+n>=a-1||l.slick("slickCurrentSlide")+r>d)&&(i(sowb).trigger("carousel_load_new_items",[s,l,t]),u=!0),i(this).hasClass("sow-carousel-next")&&!u?c&&l.slick("slickCurrentSlide")>=d?s.data("carousel_settings").loop&&l.slick("slickGoTo",0):l.slick("slickCurrentSlide")+r>d?l.setSlideTo(d):l.slick("slickNext"):i(this).hasClass("sow-carousel-previous")&&(s.data("carousel_settings").loop&&0==l.slick("slickCurrentSlide")?l.slick("slickGoTo",d):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(i(".sow-carousel-items").slick("slickCurrentSlide")/r)).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=Math.ceil(e.outerWidth()/e.find(".sow-carousel-item").outerWidth(!0)),o=s.parent().parent().find(".sow-carousel-navigation");t>=s.data("item_count")?(o.hide(),e.slick("slickSetOption","touchMove",!1),e.slick("slickSetOption","draggable",!1)):o.not(":visible")&&(o.show(),e.slick("slickSetOption","touchMove",!0),e.slick("slickSetOption","draggable",!0));var l=s.data("responsive");window.matchMedia("(min-width: "+l.tablet_portrait_breakpoint+"px) and (max-width: "+l.tablet_landscape_breakpoint+"px) and (orientation: landscape)").matches&&(e.slick("slickSetOption","slidesToShow",l.tablet_landscape_slides_to_show),e.slick("slickSetOption","slidesToScroll",l.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;
lang/so-widgets-bundle.pot CHANGED
@@ -244,19 +244,19 @@ msgstr ""
244
  msgid "Current Color"
245
  msgstr ""
246
 
247
- #: compat/block-editor/widget-block.php:91
248
  msgid "%s by %s"
249
  msgstr ""
250
 
251
- #: compat/block-editor/widget-block.php:111, compat/visual-composer/visual-composer.php:77
252
  msgid "Selecting a different widget will revert any changes. Continue?"
253
  msgstr ""
254
 
255
- #: compat/block-editor/widget-block.php:127
256
  msgid "You need to select a widget type before you'll see anything here. :)"
257
  msgstr ""
258
 
259
- #: compat/block-editor/widget-block.php:211
260
  msgid "Invalid widget class %s. Please make sure the widget has been activated in %sSiteOrigin Widgets%s."
261
  msgstr ""
262
 
@@ -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:52, widgets/anything-carousel/anything-carousel.php:68, widgets/contact/contact.php:48, widgets/cta/cta.php:64, widgets/editor/editor.php:35, widgets/features/features.php:140, widgets/icon/icon.php:68, widgets/post-carousel/post-carousel.php:245, 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:54, widgets/tabs/tabs.php:71, widgets/tabs/tabs.php:84, 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/contact/contact.php:336, 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:100, widgets/testimonial/testimonial.php:184, base/inc/widgets/base-carousel.class.php:343
332
  msgid "Design"
333
  msgstr ""
334
 
@@ -396,15 +396,15 @@ msgstr ""
396
  msgid "Item"
397
  msgstr ""
398
 
399
- #: widgets/anything-carousel/anything-carousel.php:95, widgets/button/button.php:203, widgets/contact/contact.php:390, widgets/contact/contact.php:440, widgets/features/features.php:145, widgets/features/features.php:166, widgets/features/features.php:187, widgets/headline/headline.php:88, widgets/headline/headline.php:169, base/inc/widgets/base-carousel.class.php:367
400
  msgid "Font"
401
  msgstr ""
402
 
403
- #: widgets/anything-carousel/anything-carousel.php:99, widgets/button/button.php:209, widgets/contact/contact.php:395, widgets/contact/contact.php:445, widgets/contact/contact.php:627, base/inc/widgets/base-carousel.class.php:371
404
  msgid "Font size"
405
  msgstr ""
406
 
407
- #: widgets/anything-carousel/anything-carousel.php:103, widgets/contact/contact.php:400, widgets/contact/contact.php:524, widgets/contact/contact.php:693, widgets/features/features.php:154, widgets/features/features.php:175, widgets/features/features.php:196, widgets/google-map/google-map.php:368, 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:375
408
  msgid "Color"
409
  msgstr ""
410
 
@@ -457,7 +457,7 @@ msgid "Dots selected and hover color"
457
  msgstr ""
458
 
459
  #: widgets/anything-carousel/anything-carousel.php:265
460
- msgid "Add widgets and layouts to your carousel items with %sSiteOrigin Premium%s."
461
  msgstr ""
462
 
463
  #: widgets/button/button.php:4, widgets/button/button.php:17
@@ -1020,7 +1020,7 @@ msgstr ""
1020
  msgid "Text area height"
1021
  msgstr ""
1022
 
1023
- #: widgets/contact/contact.php:474, widgets/hero/hero.php:100, widgets/layout-slider/layout-slider.php:72
1024
  msgid "Background"
1025
  msgstr ""
1026
 
@@ -1313,27 +1313,27 @@ msgstr ""
1313
  msgid "Title text HTML tag"
1314
  msgstr ""
1315
 
1316
- #: widgets/features/features.php:233, widgets/headline/headline.php:69, widgets/headline/headline.php:150, base/inc/widgets/base-carousel.class.php:356
1317
  msgid "H1"
1318
  msgstr ""
1319
 
1320
- #: widgets/features/features.php:234, widgets/headline/headline.php:70, widgets/headline/headline.php:151, base/inc/widgets/base-carousel.class.php:357
1321
  msgid "H2"
1322
  msgstr ""
1323
 
1324
- #: widgets/features/features.php:235, widgets/headline/headline.php:71, widgets/headline/headline.php:152, base/inc/widgets/base-carousel.class.php:358
1325
  msgid "H3"
1326
  msgstr ""
1327
 
1328
- #: widgets/features/features.php:236, widgets/headline/headline.php:72, widgets/headline/headline.php:153, base/inc/widgets/base-carousel.class.php:359
1329
  msgid "H4"
1330
  msgstr ""
1331
 
1332
- #: widgets/features/features.php:237, widgets/headline/headline.php:73, widgets/headline/headline.php:154, base/inc/widgets/base-carousel.class.php:360
1333
  msgid "H5"
1334
  msgstr ""
1335
 
1336
- #: widgets/features/features.php:238, widgets/headline/headline.php:74, widgets/headline/headline.php:155, base/inc/widgets/base-carousel.class.php:361
1337
  msgid "H6"
1338
  msgstr ""
1339
 
@@ -1852,11 +1852,11 @@ msgstr ""
1852
  msgid "Headline"
1853
  msgstr ""
1854
 
1855
- #: widgets/headline/headline.php:66, widgets/headline/headline.php:147, base/inc/widgets/base-carousel.class.php:353
1856
  msgid "HTML Tag"
1857
  msgstr ""
1858
 
1859
- #: widgets/headline/headline.php:75, widgets/headline/headline.php:156, base/inc/widgets/base-carousel.class.php:362
1860
  msgid "Paragraph"
1861
  msgstr ""
1862
 
@@ -2273,19 +2273,15 @@ msgid "SiteOrigin Post Carousel"
2273
  msgstr ""
2274
 
2275
  #: widgets/post-carousel/post-carousel.php:185
2276
- msgid "Navigation arrow color"
2277
  msgstr ""
2278
 
2279
  #: widgets/post-carousel/post-carousel.php:190
2280
- msgid "Navigation arrow hover color"
2281
- msgstr ""
2282
-
2283
- #: widgets/post-carousel/post-carousel.php:194
2284
- msgid "Navigation background"
2285
  msgstr ""
2286
 
2287
  #: widgets/post-carousel/post-carousel.php:199
2288
- msgid "Navigation hover background"
2289
  msgstr ""
2290
 
2291
  #: widgets/post-carousel/post-carousel.php:208
@@ -2308,50 +2304,58 @@ msgstr ""
2308
  msgid "Automatically return to the first post after the last post."
2309
  msgstr ""
2310
 
2311
- #: widgets/post-carousel/post-carousel.php:251
 
 
 
 
2312
  msgid "Default Thumbnail"
2313
  msgstr ""
2314
 
2315
- #: widgets/post-carousel/post-carousel.php:252
2316
  msgid "Choose Thumbnail"
2317
  msgstr ""
2318
 
2319
- #: widgets/post-carousel/post-carousel.php:253
2320
  msgid "Set Thumbnail"
2321
  msgstr ""
2322
 
2323
- #: widgets/post-carousel/post-carousel.php:259
2324
  msgid "Featured Image size"
2325
  msgstr ""
2326
 
2327
- #: widgets/post-carousel/post-carousel.php:265
2328
  msgid "Link target"
2329
  msgstr ""
2330
 
2331
- #: widgets/post-carousel/post-carousel.php:266
2332
  msgid "Choose where to open each carousel item."
2333
  msgstr ""
2334
 
2335
- #: widgets/post-carousel/post-carousel.php:268
2336
  msgid "Same window "
2337
  msgstr ""
2338
 
2339
- #: widgets/post-carousel/post-carousel.php:269
2340
  msgid "New window "
2341
  msgstr ""
2342
 
2343
- #: widgets/post-carousel/post-carousel.php:277
2344
  msgid "Posts query"
2345
  msgstr ""
2346
 
2347
- #: widgets/post-carousel/post-carousel.php:281
2348
  msgid "Posts per load"
2349
  msgstr ""
2350
 
2351
- #: widgets/post-carousel/post-carousel.php:282
2352
  msgid "Set the number of posts preloaded in the background when clicking next. The default is 10."
2353
  msgstr ""
2354
 
 
 
 
 
2355
  #: widgets/price-table/price-table.php:4, widgets/price-table/price-table.php:17
2356
  msgid "A powerful yet simple price table widget for your sidebars or Page Builder pages."
2357
  msgstr ""
@@ -2832,7 +2836,7 @@ msgstr ""
2832
  msgid "Video Playback"
2833
  msgstr ""
2834
 
2835
- #: widgets/video/video.php:101, base/inc/widgets/base-carousel.class.php:298, base/inc/widgets/base-slider.class.php:61, base/inc/widgets/base-slider.class.php:201
2836
  msgid "Autoplay"
2837
  msgstr ""
2838
 
@@ -3165,11 +3169,11 @@ msgstr ""
3165
  msgid "%s is not a SiteOrigin Widget"
3166
  msgstr ""
3167
 
3168
- #: base/inc/widgets/base-carousel.class.php:89, base/inc/widgets/base-carousel.class.php:272
3169
  msgid "Navigation arrows"
3170
  msgstr ""
3171
 
3172
- #: base/inc/widgets/base-carousel.class.php:96, base/inc/widgets/base-carousel.class.php:260
3173
  msgid "Navigation dots"
3174
  msgstr ""
3175
 
@@ -3209,47 +3213,47 @@ msgstr ""
3209
  msgid "Automatically return to the first item after the last item."
3210
  msgstr ""
3211
 
3212
- #: base/inc/widgets/base-carousel.class.php:284
3213
  msgid "Animation"
3214
  msgstr ""
3215
 
3216
- #: base/inc/widgets/base-carousel.class.php:287
3217
  msgid "Ease"
3218
  msgstr ""
3219
 
3220
- #: base/inc/widgets/base-carousel.class.php:288
3221
  msgid "Linear"
3222
  msgstr ""
3223
 
3224
- #: base/inc/widgets/base-carousel.class.php:293, base/inc/widgets/base-slider.class.php:84
3225
  msgid "Animation speed"
3226
  msgstr ""
3227
 
3228
- #: base/inc/widgets/base-carousel.class.php:309, base/inc/widgets/base-slider.class.php:75
3229
  msgid "Autoplay pause on hover"
3230
  msgstr ""
3231
 
3232
- #: base/inc/widgets/base-carousel.class.php:318, base/inc/widgets/base-slider.class.php:91
3233
  msgid "Timeout"
3234
  msgstr ""
3235
 
3236
- #: base/inc/widgets/base-carousel.class.php:348
3237
  msgid "Item title"
3238
  msgstr ""
3239
 
3240
- #: base/inc/widgets/base-carousel.class.php:463
3241
  msgid "Next"
3242
  msgstr ""
3243
 
3244
- #: base/inc/widgets/base-carousel.class.php:463
3245
  msgid "Next Posts"
3246
  msgstr ""
3247
 
3248
- #: base/inc/widgets/base-carousel.class.php:469
3249
  msgid "Previous"
3250
  msgstr ""
3251
 
3252
- #: base/inc/widgets/base-carousel.class.php:469
3253
  msgid "Previous Posts"
3254
  msgstr ""
3255
 
244
  msgid "Current Color"
245
  msgstr ""
246
 
247
+ #: compat/block-editor/widget-block.php:62, compat/block-editor/widget-block.php:97
248
  msgid "%s by %s"
249
  msgstr ""
250
 
251
+ #: compat/block-editor/widget-block.php:117, compat/visual-composer/visual-composer.php:77
252
  msgid "Selecting a different widget will revert any changes. Continue?"
253
  msgstr ""
254
 
255
+ #: compat/block-editor/widget-block.php:133
256
  msgid "You need to select a widget type before you'll see anything here. :)"
257
  msgstr ""
258
 
259
+ #: compat/block-editor/widget-block.php:216
260
  msgid "Invalid widget class %s. Please make sure the widget has been activated in %sSiteOrigin Widgets%s."
261
  msgstr ""
262
 
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:52, widgets/anything-carousel/anything-carousel.php:68, widgets/contact/contact.php:48, widgets/cta/cta.php:64, widgets/editor/editor.php:35, 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:54, widgets/tabs/tabs.php:71, widgets/tabs/tabs.php:84, 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/contact/contact.php:336, 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:100, widgets/testimonial/testimonial.php:184, base/inc/widgets/base-carousel.class.php:350
332
  msgid "Design"
333
  msgstr ""
334
 
396
  msgid "Item"
397
  msgstr ""
398
 
399
+ #: widgets/anything-carousel/anything-carousel.php:95, widgets/button/button.php:203, widgets/contact/contact.php:390, widgets/contact/contact.php:440, widgets/features/features.php:145, widgets/features/features.php:166, widgets/features/features.php:187, widgets/headline/headline.php:88, widgets/headline/headline.php:169, base/inc/widgets/base-carousel.class.php:374
400
  msgid "Font"
401
  msgstr ""
402
 
403
+ #: widgets/anything-carousel/anything-carousel.php:99, widgets/button/button.php:209, widgets/contact/contact.php:395, widgets/contact/contact.php:445, widgets/contact/contact.php:627, base/inc/widgets/base-carousel.class.php:378
404
  msgid "Font size"
405
  msgstr ""
406
 
407
+ #: widgets/anything-carousel/anything-carousel.php:103, widgets/contact/contact.php:400, widgets/contact/contact.php:524, widgets/contact/contact.php:693, widgets/features/features.php:154, widgets/features/features.php:175, widgets/features/features.php:196, widgets/google-map/google-map.php:368, 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
408
  msgid "Color"
409
  msgstr ""
410
 
457
  msgstr ""
458
 
459
  #: widgets/anything-carousel/anything-carousel.php:265
460
+ msgid "Add widgets and layouts to your carousel items with %sSiteOrigin Premium%s"
461
  msgstr ""
462
 
463
  #: widgets/button/button.php:4, widgets/button/button.php:17
1020
  msgid "Text area height"
1021
  msgstr ""
1022
 
1023
+ #: widgets/contact/contact.php:474, widgets/hero/hero.php:100, widgets/layout-slider/layout-slider.php:72, widgets/post-carousel/post-carousel.php:194
1024
  msgid "Background"
1025
  msgstr ""
1026
 
1313
  msgid "Title text HTML tag"
1314
  msgstr ""
1315
 
1316
+ #: widgets/features/features.php:233, widgets/headline/headline.php:69, widgets/headline/headline.php:150, base/inc/widgets/base-carousel.class.php:363
1317
  msgid "H1"
1318
  msgstr ""
1319
 
1320
+ #: widgets/features/features.php:234, widgets/headline/headline.php:70, widgets/headline/headline.php:151, base/inc/widgets/base-carousel.class.php:364
1321
  msgid "H2"
1322
  msgstr ""
1323
 
1324
+ #: widgets/features/features.php:235, widgets/headline/headline.php:71, widgets/headline/headline.php:152, base/inc/widgets/base-carousel.class.php:365
1325
  msgid "H3"
1326
  msgstr ""
1327
 
1328
+ #: widgets/features/features.php:236, widgets/headline/headline.php:72, widgets/headline/headline.php:153, base/inc/widgets/base-carousel.class.php:366
1329
  msgid "H4"
1330
  msgstr ""
1331
 
1332
+ #: widgets/features/features.php:237, widgets/headline/headline.php:73, widgets/headline/headline.php:154, base/inc/widgets/base-carousel.class.php:367
1333
  msgid "H5"
1334
  msgstr ""
1335
 
1336
+ #: widgets/features/features.php:238, widgets/headline/headline.php:74, widgets/headline/headline.php:155, base/inc/widgets/base-carousel.class.php:368
1337
  msgid "H6"
1338
  msgstr ""
1339
 
1852
  msgid "Headline"
1853
  msgstr ""
1854
 
1855
+ #: widgets/headline/headline.php:66, widgets/headline/headline.php:147, base/inc/widgets/base-carousel.class.php:360
1856
  msgid "HTML Tag"
1857
  msgstr ""
1858
 
1859
+ #: widgets/headline/headline.php:75, widgets/headline/headline.php:156, base/inc/widgets/base-carousel.class.php:369
1860
  msgid "Paragraph"
1861
  msgstr ""
1862
 
2273
  msgstr ""
2274
 
2275
  #: widgets/post-carousel/post-carousel.php:185
2276
+ msgid "Arrow color"
2277
  msgstr ""
2278
 
2279
  #: widgets/post-carousel/post-carousel.php:190
2280
+ msgid "Arrow hover color"
 
 
 
 
2281
  msgstr ""
2282
 
2283
  #: widgets/post-carousel/post-carousel.php:199
2284
+ msgid "Hover background"
2285
  msgstr ""
2286
 
2287
  #: widgets/post-carousel/post-carousel.php:208
2304
  msgid "Automatically return to the first post after the last post."
2305
  msgstr ""
2306
 
2307
+ #: widgets/post-carousel/post-carousel.php:248
2308
+ msgid "Autoplay continuous scroll"
2309
+ msgstr ""
2310
+
2311
+ #: widgets/post-carousel/post-carousel.php:266
2312
  msgid "Default Thumbnail"
2313
  msgstr ""
2314
 
2315
+ #: widgets/post-carousel/post-carousel.php:267
2316
  msgid "Choose Thumbnail"
2317
  msgstr ""
2318
 
2319
+ #: widgets/post-carousel/post-carousel.php:268
2320
  msgid "Set Thumbnail"
2321
  msgstr ""
2322
 
2323
+ #: widgets/post-carousel/post-carousel.php:274
2324
  msgid "Featured Image size"
2325
  msgstr ""
2326
 
2327
+ #: widgets/post-carousel/post-carousel.php:280
2328
  msgid "Link target"
2329
  msgstr ""
2330
 
2331
+ #: widgets/post-carousel/post-carousel.php:281
2332
  msgid "Choose where to open each carousel item."
2333
  msgstr ""
2334
 
2335
+ #: widgets/post-carousel/post-carousel.php:283
2336
  msgid "Same window "
2337
  msgstr ""
2338
 
2339
+ #: widgets/post-carousel/post-carousel.php:284
2340
  msgid "New window "
2341
  msgstr ""
2342
 
2343
+ #: widgets/post-carousel/post-carousel.php:292
2344
  msgid "Posts query"
2345
  msgstr ""
2346
 
2347
+ #: widgets/post-carousel/post-carousel.php:296
2348
  msgid "Posts per load"
2349
  msgstr ""
2350
 
2351
+ #: widgets/post-carousel/post-carousel.php:297
2352
  msgid "Set the number of posts preloaded in the background when clicking next. The default is 10."
2353
  msgstr ""
2354
 
2355
+ #: widgets/post-carousel/post-carousel.php:447
2356
+ msgid "Get access to additional carousel themes with %sSiteOrigin Premium%s"
2357
+ msgstr ""
2358
+
2359
  #: widgets/price-table/price-table.php:4, widgets/price-table/price-table.php:17
2360
  msgid "A powerful yet simple price table widget for your sidebars or Page Builder pages."
2361
  msgstr ""
2836
  msgid "Video Playback"
2837
  msgstr ""
2838
 
2839
+ #: widgets/video/video.php:101, base/inc/widgets/base-carousel.class.php:305, base/inc/widgets/base-slider.class.php:61, base/inc/widgets/base-slider.class.php:201
2840
  msgid "Autoplay"
2841
  msgstr ""
2842
 
3169
  msgid "%s is not a SiteOrigin Widget"
3170
  msgstr ""
3171
 
3172
+ #: base/inc/widgets/base-carousel.class.php:89, base/inc/widgets/base-carousel.class.php:279
3173
  msgid "Navigation arrows"
3174
  msgstr ""
3175
 
3176
+ #: base/inc/widgets/base-carousel.class.php:96, base/inc/widgets/base-carousel.class.php:267
3177
  msgid "Navigation dots"
3178
  msgstr ""
3179
 
3213
  msgid "Automatically return to the first item after the last item."
3214
  msgstr ""
3215
 
3216
+ #: base/inc/widgets/base-carousel.class.php:291
3217
  msgid "Animation"
3218
  msgstr ""
3219
 
3220
+ #: base/inc/widgets/base-carousel.class.php:294
3221
  msgid "Ease"
3222
  msgstr ""
3223
 
3224
+ #: base/inc/widgets/base-carousel.class.php:295
3225
  msgid "Linear"
3226
  msgstr ""
3227
 
3228
+ #: base/inc/widgets/base-carousel.class.php:300, base/inc/widgets/base-slider.class.php:84
3229
  msgid "Animation speed"
3230
  msgstr ""
3231
 
3232
+ #: base/inc/widgets/base-carousel.class.php:316, base/inc/widgets/base-slider.class.php:75
3233
  msgid "Autoplay pause on hover"
3234
  msgstr ""
3235
 
3236
+ #: base/inc/widgets/base-carousel.class.php:325, base/inc/widgets/base-slider.class.php:91
3237
  msgid "Timeout"
3238
  msgstr ""
3239
 
3240
+ #: base/inc/widgets/base-carousel.class.php:355
3241
  msgid "Item title"
3242
  msgstr ""
3243
 
3244
+ #: base/inc/widgets/base-carousel.class.php:470
3245
  msgid "Next"
3246
  msgstr ""
3247
 
3248
+ #: base/inc/widgets/base-carousel.class.php:470
3249
  msgid "Next Posts"
3250
  msgstr ""
3251
 
3252
+ #: base/inc/widgets/base-carousel.class.php:476
3253
  msgid "Previous"
3254
  msgstr ""
3255
 
3256
+ #: base/inc/widgets/base-carousel.class.php:476
3257
  msgid "Previous Posts"
3258
  msgstr ""
3259
 
readme.txt CHANGED
@@ -3,8 +3,8 @@ Tags: widget, button, slider, hero, google maps, image, carousel, features, icon
3
  Requires at least: 4.2
4
  Tested up to: 5.9
5
  Requires PHP: 5.6.20
6
- Stable tag: 1.31.0
7
- Build time: 2022-03-05T14:48:12+02:00
8
  License: GPLv3 or later
9
  Contributors: gpriday, braam-genis, alexgso
10
  Donate link: https://siteorigin.com/downloads/premium/
@@ -100,6 +100,14 @@ The Widgets Bundle global interface is available at Plugins > SiteOrigin Widgets
100
 
101
  == Changelog ==
102
 
 
 
 
 
 
 
 
 
103
  = 1.31.0 - 05 March 2022 =
104
  * Post Carousel: Updates to allow for themes to be added.
105
  * Post Carousel: Fixed `Responsive > Tablet > Landscape` settings.
3
  Requires at least: 4.2
4
  Tested up to: 5.9
5
  Requires PHP: 5.6.20
6
+ Stable tag: 1.32.0
7
+ Build time: 2022-03-14T15:27:37+02:00
8
  License: GPLv3 or later
9
  Contributors: gpriday, braam-genis, alexgso
10
  Donate link: https://siteorigin.com/downloads/premium/
100
 
101
  == Changelog ==
102
 
103
+ = 1.32.0 - 14 March 2022 =
104
+ * Post Carousel: Added a new `Autoplay Continuous Scroll` setting.
105
+ * Post Carousel: Resolved a potential item tag notice.
106
+ * Widgets Block: Resolve error when trying to use disabled third-party widget.
107
+ * Widgets Block: Accounted for a potential third-party widgets filename conflict.
108
+ * Widgets Block: Added non-SiteOrigin widget author names.
109
+ * Widgets Block: Resolved a potential `Undefined index` notice if a widget isn't selected.
110
+
111
  = 1.31.0 - 05 March 2022 =
112
  * Post Carousel: Updates to allow for themes to be added.
113
  * Post Carousel: Fixed `Responsive > Tablet > Landscape` settings.
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.31.0
6
  Text Domain: so-widgets-bundle
7
  Domain Path: /lang
8
  Author: SiteOrigin
@@ -12,7 +12,7 @@ License: GPL3
12
  License URI: https://www.gnu.org/licenses/gpl-3.0.txt
13
  */
14
 
15
- define( 'SOW_BUNDLE_VERSION', '1.31.0' );
16
  define( 'SOW_BUNDLE_BASE_FILE', __FILE__ );
17
 
18
  // Allow JS suffix to be pre-set.
2
  /*
3
  Plugin Name: SiteOrigin Widgets Bundle
4
  Description: A highly customizable collection of widgets, ready to be used anywhere, neatly bundled into a single plugin.
5
+ Version: 1.32.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.32.0' );
16
  define( 'SOW_BUNDLE_BASE_FILE', __FILE__ );
17
 
18
  // Allow JS suffix to be pre-set.
widgets/accordion/accordion.php CHANGED
@@ -124,12 +124,12 @@ class SiteOrigin_Widget_Accordion_Widget extends SiteOrigin_Widget {
124
  'background_hover_color' => array(
125
  'type' => 'color',
126
  'label' => __( 'Background hover color', 'so-widgets-bundle' ),
127
- 'default' => '#8C8C8C',
128
  ),
129
  'title_color' => array(
130
  'type' => 'color',
131
  'label' => __( 'Title color', 'so-widgets-bundle' ),
132
- 'default' => '#FFFFFF',
133
  ),
134
  'title_hover_color' => array(
135
  'type' => 'color',
@@ -157,7 +157,7 @@ class SiteOrigin_Widget_Accordion_Widget extends SiteOrigin_Widget {
157
  'background_color' => array(
158
  'type' => 'color',
159
  'label' => __( 'Background color', 'so-widgets-bundle' ),
160
- 'default' => '#F9F9F9',
161
  ),
162
  'font_color' => array(
163
  'type' => 'color',
124
  'background_hover_color' => array(
125
  'type' => 'color',
126
  'label' => __( 'Background hover color', 'so-widgets-bundle' ),
127
+ 'default' => '#8c8c8c',
128
  ),
129
  'title_color' => array(
130
  'type' => 'color',
131
  'label' => __( 'Title color', 'so-widgets-bundle' ),
132
+ 'default' => '#fff',
133
  ),
134
  'title_hover_color' => array(
135
  'type' => 'color',
157
  'background_color' => array(
158
  'type' => 'color',
159
  'label' => __( 'Background color', 'so-widgets-bundle' ),
160
+ 'default' => '#f9f9f9',
161
  ),
162
  'font_color' => array(
163
  'type' => 'color',
widgets/anything-carousel/anything-carousel.php CHANGED
@@ -262,7 +262,7 @@ class SiteOrigin_Widget_Anything_Carousel_Widget extends SiteOrigin_Widget_Base_
262
  }
263
 
264
  return sprintf(
265
- __( 'Add widgets and layouts to your carousel items with %sSiteOrigin Premium%s.', 'so-widgets-bundle' ),
266
  '<a href="https://siteorigin.com/downloads/premium/?featured_addon=plugin/carousel" target="_blank" rel="noopener noreferrer">',
267
  '</a>'
268
  );
262
  }
263
 
264
  return sprintf(
265
+ __( 'Add widgets and layouts to your carousel items with %sSiteOrigin Premium%s', 'so-widgets-bundle' ),
266
  '<a href="https://siteorigin.com/downloads/premium/?featured_addon=plugin/carousel" target="_blank" rel="noopener noreferrer">',
267
  '</a>'
268
  );
widgets/cta/cta.php CHANGED
@@ -76,12 +76,12 @@ class SiteOrigin_Widget_Cta_Widget extends SiteOrigin_Widget {
76
  'background_color' => array(
77
  'type' => 'color',
78
  'label' => __( 'Background color', 'so-widgets-bundle' ),
79
- 'default' => '#F8F8F8'
80
  ),
81
  'border_color' => array(
82
  'type' => 'color',
83
  'label' => __( 'Border color', 'so-widgets-bundle' ),
84
- 'default' => '#E3E3E3',
85
  ),
86
  'title_color' => array(
87
  'type' => 'color',
76
  'background_color' => array(
77
  'type' => 'color',
78
  'label' => __( 'Background color', 'so-widgets-bundle' ),
79
+ 'default' => '#f8f8f8'
80
  ),
81
  'border_color' => array(
82
  'type' => 'color',
83
  'label' => __( 'Border color', 'so-widgets-bundle' ),
84
+ 'default' => '#e3e3e3',
85
  ),
86
  'title_color' => array(
87
  'type' => 'color',
widgets/features/features.php CHANGED
@@ -91,7 +91,7 @@ class SiteOrigin_Widget_Features_Widget extends SiteOrigin_Widget {
91
  'icon_color' => array(
92
  'type' => 'color',
93
  'label' => __( 'Icon color', 'so-widgets-bundle' ),
94
- 'default' => '#FFFFFF',
95
  ),
96
 
97
  'icon_image' => array(
91
  'icon_color' => array(
92
  'type' => 'color',
93
  'label' => __( 'Icon color', 'so-widgets-bundle' ),
94
+ 'default' => '#fff',
95
  ),
96
 
97
  'icon_image' => array(
widgets/headline/headline.php CHANGED
@@ -229,7 +229,7 @@ class SiteOrigin_Widget_Headline_Widget extends SiteOrigin_Widget {
229
  'color' => array(
230
  'type' => 'color',
231
  'label' => __('Color', 'so-widgets-bundle'),
232
- 'default' => '#EEEEEE'
233
  ),
234
  'thickness' => array(
235
  'type' => 'slider',
229
  'color' => array(
230
  'type' => 'color',
231
  'label' => __('Color', 'so-widgets-bundle'),
232
+ 'default' => '#eee'
233
  ),
234
  'thickness' => array(
235
  'type' => 'slider',
widgets/hero/hero.php CHANGED
@@ -262,7 +262,7 @@ class SiteOrigin_Widget_Hero_Widget extends SiteOrigin_Widget_Base_Slider {
262
  'heading_color' => array(
263
  'type' => 'color',
264
  'label' => __('Heading color', 'so-widgets-bundle'),
265
- 'default' => '#FFFFFF',
266
  ),
267
 
268
  'heading_size' => array(
@@ -309,7 +309,7 @@ class SiteOrigin_Widget_Hero_Widget extends SiteOrigin_Widget_Base_Slider {
309
  'text_color' => array(
310
  'type' => 'color',
311
  'label' => __( 'Text color', 'so-widgets-bundle' ),
312
- 'default' => '#F6F6F6',
313
  ),
314
  'text_size' => array(
315
  'type' => 'measurement',
262
  'heading_color' => array(
263
  'type' => 'color',
264
  'label' => __('Heading color', 'so-widgets-bundle'),
265
+ 'default' => '#fff',
266
  ),
267
 
268
  'heading_size' => array(
309
  'text_color' => array(
310
  'type' => 'color',
311
  'label' => __( 'Text color', 'so-widgets-bundle' ),
312
+ 'default' => '#f6f6f6',
313
  ),
314
  'text_size' => array(
315
  'type' => 'measurement',
widgets/post-carousel/post-carousel.php CHANGED
@@ -35,7 +35,7 @@ function sow_carousel_handle_post_limit( $posts, $paged = 0 ) {
35
  if ( $current + 1 > $post_limit + $posts_per_page ) {
36
  $posts->posts = null;
37
  } else {
38
- // Work out how many posts we need to return
39
  $posts->post_count = $post_limit % $posts_per_page;
40
  $posts->posts = array_slice( $posts->posts, $current % $posts_per_page, $posts->post_count );
41
  }
@@ -72,7 +72,7 @@ function sow_carousel_get_next_posts_page() {
72
  }
73
  }
74
 
75
- // Don't output anything if there are no posts to return;
76
  if ( ! empty( $settings['posts']->posts ) ) {
77
  ob_start();
78
  include apply_filters( 'siteorigin_post_carousel_ajax_item_template', 'tpl/item.php', $instance );
@@ -182,21 +182,21 @@ class SiteOrigin_Widget_PostCarousel_Widget extends SiteOrigin_Widget_Base_Carou
182
  'fields' => array(
183
  'navigation_color' => array(
184
  'type' => 'color',
185
- 'label' => __( 'Navigation arrow color', 'so-widgets-bundle' ),
186
  'default' => '#fff',
187
  ),
188
  'navigation_color_hover' => array(
189
  'type' => 'color',
190
- 'label' => __( 'Navigation arrow hover color', 'so-widgets-bundle' ),
191
  ),
192
  'navigation_background' => array(
193
  'type' => 'color',
194
- 'label' => __( 'Navigation background', 'so-widgets-bundle' ),
195
  'default' => '#333',
196
  ),
197
  'navigation_hover_background' => array(
198
  'type' => 'color',
199
- 'label' => __( 'Navigation hover background', 'so-widgets-bundle' ),
200
  'default' => '#444',
201
  ),
202
  ),
@@ -219,7 +219,7 @@ class SiteOrigin_Widget_PostCarousel_Widget extends SiteOrigin_Widget_Base_Carou
219
  'thumbnail_overlay_hover_color' => array(
220
  'type' => 'color',
221
  'label' => __( 'Thumbnail overlay hover color', 'so-widgets-bundle' ),
222
- 'default' => '#3279BB',
223
  ),
224
  'thumbnail_overlay_hover_opacity' => array(
225
  'type' => 'slider',
@@ -239,6 +239,21 @@ class SiteOrigin_Widget_PostCarousel_Widget extends SiteOrigin_Widget_Base_Carou
239
  $carousel_settings['fields']['loop']['description'] = __( 'Automatically return to the first post after the last post.', 'so-widgets-bundle' );
240
  unset( $carousel_settings['fields']['animation'] );
241
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
242
  return array(
243
  'title' => array(
244
  'type' => 'text',
@@ -345,7 +360,7 @@ class SiteOrigin_Widget_PostCarousel_Widget extends SiteOrigin_Widget_Base_Carou
345
  'navigation_color_hover' => ! empty ( $instance['design']['navigation']['navigation_color_hover'] ) ? $instance['design']['navigation']['navigation_color_hover'] : '',
346
  'navigation_background' => ! empty ( $instance['design']['navigation']['navigation_background'] ) ? $instance['design']['navigation']['navigation_background'] : '',
347
  'navigation_hover_background' => ! empty ( $instance['design']['navigation']['navigation_hover_background'] ) ? $instance['design']['navigation']['navigation_hover_background'] : '',
348
- 'item_title_tag' => $instance['design']['item_title']['tag'],
349
  'item_title_font_size' => ! empty( $instance['design']['item_title']['size'] ) ? $instance['design']['item_title']['size'] : '',
350
  'item_title_color' => ! empty( $instance['design']['item_title']['color'] ) ? $instance['design']['item_title']['color'] : '',
351
  );
@@ -360,6 +375,7 @@ class SiteOrigin_Widget_PostCarousel_Widget extends SiteOrigin_Widget_Base_Carou
360
 
361
  public function get_template_variables( $instance, $args ) {
362
  $theme = self::get_theme( $instance );
 
363
  if (
364
  ! empty( $instance['default_thumbnail'] ) ||
365
  ! empty( $instance['default_thumbnail_fallback'] )
@@ -376,6 +392,7 @@ class SiteOrigin_Widget_PostCarousel_Widget extends SiteOrigin_Widget_Base_Carou
376
  $posts = new WP_Query( $query );
377
 
378
  $carousel_settings = $this->carousel_settings_template_variables( $instance['carousel_settings'], false );
 
379
  // The base theme doesn't support dot noviation so let's remove it.
380
  if ( $theme == 'base' ) {
381
  unset( $carousel_settings['dots'] );
@@ -420,6 +437,18 @@ class SiteOrigin_Widget_PostCarousel_Widget extends SiteOrigin_Widget_Base_Carou
420
  function get_template_name($instance){
421
  return 'base';
422
  }
 
 
 
 
 
 
 
 
 
 
 
 
423
  }
424
 
425
  siteorigin_widget_register('sow-post-carousel', __FILE__, 'SiteOrigin_Widget_PostCarousel_Widget');
35
  if ( $current + 1 > $post_limit + $posts_per_page ) {
36
  $posts->posts = null;
37
  } else {
38
+ // Work out how many posts we need to return.
39
  $posts->post_count = $post_limit % $posts_per_page;
40
  $posts->posts = array_slice( $posts->posts, $current % $posts_per_page, $posts->post_count );
41
  }
72
  }
73
  }
74
 
75
+ // Don't output anything if there are no posts to return.
76
  if ( ! empty( $settings['posts']->posts ) ) {
77
  ob_start();
78
  include apply_filters( 'siteorigin_post_carousel_ajax_item_template', 'tpl/item.php', $instance );
182
  'fields' => array(
183
  'navigation_color' => array(
184
  'type' => 'color',
185
+ 'label' => __( 'Arrow color', 'so-widgets-bundle' ),
186
  'default' => '#fff',
187
  ),
188
  'navigation_color_hover' => array(
189
  'type' => 'color',
190
+ 'label' => __( 'Arrow hover color', 'so-widgets-bundle' ),
191
  ),
192
  'navigation_background' => array(
193
  'type' => 'color',
194
+ 'label' => __( 'Background', 'so-widgets-bundle' ),
195
  'default' => '#333',
196
  ),
197
  'navigation_hover_background' => array(
198
  'type' => 'color',
199
+ 'label' => __( 'Hover background', 'so-widgets-bundle' ),
200
  'default' => '#444',
201
  ),
202
  ),
219
  'thumbnail_overlay_hover_color' => array(
220
  'type' => 'color',
221
  'label' => __( 'Thumbnail overlay hover color', 'so-widgets-bundle' ),
222
+ 'default' => '#3279bb',
223
  ),
224
  'thumbnail_overlay_hover_opacity' => array(
225
  'type' => 'slider',
239
  $carousel_settings['fields']['loop']['description'] = __( 'Automatically return to the first post after the last post.', 'so-widgets-bundle' );
240
  unset( $carousel_settings['fields']['animation'] );
241
 
242
+ siteorigin_widgets_array_insert(
243
+ $carousel_settings['fields'],
244
+ 'autoplay_pause_hover',
245
+ array(
246
+ 'autoplay_continuous_scroll' => array(
247
+ 'type' => 'checkbox',
248
+ 'label' => __( 'Autoplay continuous scroll', 'so-widgets-bundle' ),
249
+ 'state_handler' => array(
250
+ 'loop_posts[show]' => array( 'show' ),
251
+ 'loop_posts[hide]' => array( 'hide' ),
252
+ ),
253
+ ),
254
+ )
255
+ );
256
+
257
  return array(
258
  'title' => array(
259
  'type' => 'text',
360
  'navigation_color_hover' => ! empty ( $instance['design']['navigation']['navigation_color_hover'] ) ? $instance['design']['navigation']['navigation_color_hover'] : '',
361
  'navigation_background' => ! empty ( $instance['design']['navigation']['navigation_background'] ) ? $instance['design']['navigation']['navigation_background'] : '',
362
  'navigation_hover_background' => ! empty ( $instance['design']['navigation']['navigation_hover_background'] ) ? $instance['design']['navigation']['navigation_hover_background'] : '',
363
+ 'item_title_tag' => ! empty( $instance['design']['item_title']['tag'] ) ? $instance['design']['item_title']['tag'] : '',
364
  'item_title_font_size' => ! empty( $instance['design']['item_title']['size'] ) ? $instance['design']['item_title']['size'] : '',
365
  'item_title_color' => ! empty( $instance['design']['item_title']['color'] ) ? $instance['design']['item_title']['color'] : '',
366
  );
375
 
376
  public function get_template_variables( $instance, $args ) {
377
  $theme = self::get_theme( $instance );
378
+
379
  if (
380
  ! empty( $instance['default_thumbnail'] ) ||
381
  ! empty( $instance['default_thumbnail_fallback'] )
392
  $posts = new WP_Query( $query );
393
 
394
  $carousel_settings = $this->carousel_settings_template_variables( $instance['carousel_settings'], false );
395
+ $carousel_settings['autoplay_continuous_scroll'] = ! empty( $instance['carousel_settings']['autoplay_continuous_scroll'] ) ? $instance['carousel_settings']['autoplay_continuous_scroll'] : false;
396
  // The base theme doesn't support dot noviation so let's remove it.
397
  if ( $theme == 'base' ) {
398
  unset( $carousel_settings['dots'] );
437
  function get_template_name($instance){
438
  return 'base';
439
  }
440
+
441
+ function get_form_teaser() {
442
+ if ( class_exists( 'SiteOrigin_Premium' ) ) {
443
+ return false;
444
+ }
445
+
446
+ return sprintf(
447
+ __( 'Get access to additional carousel themes with %sSiteOrigin Premium%s', 'so-widgets-bundle' ),
448
+ '<a href="https://siteorigin.com/downloads/premium/?featured_addon=plugin/carousel" target="_blank" rel="noopener noreferrer">',
449
+ '</a>'
450
+ );
451
+ }
452
  }
453
 
454
  siteorigin_widget_register('sow-post-carousel', __FILE__, 'SiteOrigin_Widget_PostCarousel_Widget');
widgets/tabs/tabs.php CHANGED
@@ -132,17 +132,17 @@ class SiteOrigin_Widget_Tabs_Widget extends SiteOrigin_Widget {
132
  'background_hover_color' => array(
133
  'type' => 'color',
134
  'label' => __( 'Background hover color', 'so-widgets-bundle' ),
135
- 'default' => '#F9F9F9',
136
  ),
137
  'title_color' => array(
138
  'type' => 'color',
139
  'label' => __( 'Title color', 'so-widgets-bundle' ),
140
- 'default' => '#FFFFFF',
141
  ),
142
  'title_hover_color' => array(
143
  'type' => 'color',
144
  'label' => __( 'Title hover color', 'so-widgets-bundle' ),
145
- 'default' => '#2D2D2D',
146
  ),
147
  'border_color' => array(
148
  'type' => 'color',
@@ -152,7 +152,7 @@ class SiteOrigin_Widget_Tabs_Widget extends SiteOrigin_Widget {
152
  'border_hover_color' => array(
153
  'type' => 'color',
154
  'label' => __( 'Border hover color', 'so-widgets-bundle' ),
155
- 'default' => '#F9F9F9',
156
  ),
157
  'border_width' => array(
158
  'type' => 'measurement',
@@ -172,7 +172,7 @@ class SiteOrigin_Widget_Tabs_Widget extends SiteOrigin_Widget {
172
  'background_color' => array(
173
  'type' => 'color',
174
  'label' => __( 'Background color', 'so-widgets-bundle' ),
175
- 'default' => '#F9F9F9',
176
  ),
177
  'font_color' => array(
178
  'type' => 'color',
132
  'background_hover_color' => array(
133
  'type' => 'color',
134
  'label' => __( 'Background hover color', 'so-widgets-bundle' ),
135
+ 'default' => '#f9f9f9',
136
  ),
137
  'title_color' => array(
138
  'type' => 'color',
139
  'label' => __( 'Title color', 'so-widgets-bundle' ),
140
+ 'default' => '#fff',
141
  ),
142
  'title_hover_color' => array(
143
  'type' => 'color',
144
  'label' => __( 'Title hover color', 'so-widgets-bundle' ),
145
+ 'default' => '#2d2d2d',
146
  ),
147
  'border_color' => array(
148
  'type' => 'color',
152
  'border_hover_color' => array(
153
  'type' => 'color',
154
  'label' => __( 'Border hover color', 'so-widgets-bundle' ),
155
+ 'default' => '#f9f9f9',
156
  ),
157
  'border_width' => array(
158
  'type' => 'measurement',
172
  'background_color' => array(
173
  'type' => 'color',
174
  'label' => __( 'Background color', 'so-widgets-bundle' ),
175
+ 'default' => '#f9f9f9',
176
  ),
177
  'font_color' => array(
178
  'type' => 'color',