SiteOrigin Widgets Bundle - Version 1.22.0

Version Description

  • 15 July 2021 =
  • New Widget! Anything Carousel: Display images, text, or any other content in a carousel.
  • Headline: Added a global Responsive Breakpoint setting at Plugins > SiteOrigin Widgets > Headline: Settings.
  • Headline: Added Mobile Alignment settings for the Headline, Sub Headline, and Divider.
  • Layout Builder: Widget Areas: Prevented the creation of a CSS file for every page.
  • Slider: Disallowed Jetpack Lazy Loading.
  • Developer: Added a preset form field. Store a selected preset. Docs.
  • Developer: Fixed SITEORIGIN_WIDGETS_DEBUG constant. Useful for debugging, bypasses widget CSS cache. Docs.
Download this release

Release Info

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

Code changes from version 1.21.0 to 1.22.0

Files changed (39) hide show
  1. base/inc/fields/builder.class.php +7 -0
  2. base/inc/fields/js/presets-field.js +49 -39
  3. base/inc/fields/js/presets-field.min.js +1 -1
  4. base/inc/fields/presets.class.php +19 -5
  5. base/inc/post-selector.php +7 -1
  6. base/inc/widgets/base-carousel.class.php +276 -0
  7. base/inc/widgets/tpl/carousel.php +41 -0
  8. base/siteorigin-widget.class.php +100 -11
  9. {widgets/post-carousel/js → js}/carousel.js +41 -38
  10. js/carousel.min.js +1 -0
  11. lang/so-widgets-bundle.pot +369 -289
  12. readme.txt +11 -2
  13. so-widgets-bundle.php +6 -3
  14. widgets/anything-carousel/anything-carousel.php +290 -0
  15. widgets/anything-carousel/assets/banner.svg +1 -0
  16. widgets/anything-carousel/css/fonts/carousel-arrows.eot +0 -0
  17. widgets/anything-carousel/css/fonts/carousel-arrows.svg +12 -0
  18. widgets/anything-carousel/css/fonts/carousel-arrows.ttf +0 -0
  19. widgets/anything-carousel/css/fonts/carousel-arrows.woff +0 -0
  20. widgets/anything-carousel/css/style.css +1 -0
  21. widgets/anything-carousel/styles/base.less +112 -0
  22. widgets/anything-carousel/tpl/default.php +4 -0
  23. widgets/anything-carousel/tpl/item.php +12 -0
  24. widgets/features/features.php +3 -2
  25. widgets/headline/headline.php +52 -1
  26. widgets/headline/styles/default.less +17 -0
  27. widgets/hero/hero.php +26 -7
  28. widgets/layout-slider/layout-slider.php +22 -5
  29. widgets/post-carousel/css/style.css +1 -1
  30. widgets/post-carousel/js/carousel.min.js +0 -1
  31. widgets/post-carousel/js/script.js +35 -0
  32. widgets/post-carousel/js/script.min.js +1 -0
  33. widgets/post-carousel/post-carousel.php +66 -136
  34. widgets/post-carousel/tpl/base.php +6 -44
  35. widgets/post-carousel/tpl/carousel-post-loop.php +0 -31
  36. widgets/post-carousel/tpl/item.php +46 -0
  37. widgets/slider/slider.php +21 -8
  38. widgets/video/tpl/default.php +14 -10
  39. widgets/video/video.php +11 -0
base/inc/fields/builder.class.php CHANGED
@@ -66,6 +66,13 @@ class SiteOrigin_Widget_Field_Builder extends SiteOrigin_Widget_Field_Base {
66
  $value['widgets'] = siteorigin_panels_process_raw_widgets( $value['widgets'] );
67
  }
68
 
 
 
 
 
 
 
 
69
  return $value;
70
  }
71
 
66
  $value['widgets'] = siteorigin_panels_process_raw_widgets( $value['widgets'] );
67
  }
68
 
69
+ // Add record of widget being inside of a builder field.
70
+ if ( ! empty( $value['widgets'] ) ) {
71
+ foreach( $value['widgets'] as $widget_id => $widget ) {
72
+ $value['widgets'][ $widget_id ]['panels_info']['builder'] = true;
73
+ }
74
+ }
75
+
76
  return $value;
77
  }
78
 
base/inc/fields/js/presets-field.js CHANGED
@@ -10,57 +10,67 @@
10
 
11
  var $undoLink = $presetSelect.find( '+ .sowb-presets-field-undo' );
12
  $undoLink.hide();
13
-
 
14
  var presets = $presetSelect.data( 'presets' );
15
  $presetSelect.on( 'change', function() {
16
-
17
  var selectedPreset = $presetSelect.val();
18
  if ( selectedPreset && presets.hasOwnProperty( selectedPreset ) ) {
19
-
20
  var presetValues = presets[ selectedPreset ].values;
21
-
22
  var $formContainer = $presetSelect.closest( '.siteorigin-widget-form-main' );
23
- var previousValues = $presetSelect.data( 'previousValues' );
24
- if ( ! previousValues ) {
25
- var presetClone = JSON.parse( JSON.stringify( presetValues ) );
26
- var widgetData = sowbForms.getWidgetFormValues( $formContainer );
27
- var recurseDepth = 0;
28
- var copyValues = function( from, to ) {
29
- if ( ++recurseDepth > 10 ) {
30
- return to;
31
- }
32
- for ( var key in to ) {
33
- if ( from.hasOwnProperty( key ) ) {
34
- var fromItem = from[ key ];
35
- var toItem = to[ key ];
36
- if ( fromItem !== null && toItem !== null && typeof fromItem === 'object' ) {
37
- copyValues( fromItem, toItem );
38
- } else {
39
- to[ key ] = fromItem;
 
 
 
 
40
  }
41
  }
42
- }
43
- return to;
44
- };
45
- // Copy existing widget values for preset properties to allow for undo.
46
- previousValues = copyValues( widgetData, presetClone );
47
- $presetSelect.data( 'previousValues', previousValues );
48
- }
49
- if ( $undoLink.not( ':visible' ) ) {
50
- $undoLink.show();
51
- $undoLink.on( 'click', function ( event ) {
52
- event.preventDefault();
53
- $undoLink.hide();
54
- sowbForms.setWidgetFormValues( $formContainer, previousValues, true );
55
- $presetSelect.removeData( 'previousValues' );
56
- $presetSelect.val( '' );
57
- } );
58
  }
59
-
60
  sowbForms.setWidgetFormValues( $formContainer, presetValues, true );
61
  }
62
  } );
63
-
 
 
 
 
 
 
 
 
64
  $presetSelect.data( 'initialized', true );
65
  } );
66
  })( jQuery );
10
 
11
  var $undoLink = $presetSelect.find( '+ .sowb-presets-field-undo' );
12
  $undoLink.hide();
13
+
14
+ var addingDefault = false;
15
  var presets = $presetSelect.data( 'presets' );
16
  $presetSelect.on( 'change', function() {
 
17
  var selectedPreset = $presetSelect.val();
18
  if ( selectedPreset && presets.hasOwnProperty( selectedPreset ) ) {
 
19
  var presetValues = presets[ selectedPreset ].values;
 
20
  var $formContainer = $presetSelect.closest( '.siteorigin-widget-form-main' );
21
+
22
+ // If we're adding defaults, don't show undo.
23
+ if ( ! addingDefault) {
24
+ var previousValues = $presetSelect.data( 'previousValues' );
25
+ if ( ! previousValues ) {
26
+ var presetClone = JSON.parse( JSON.stringify( presetValues ) );
27
+ var widgetData = sowbForms.getWidgetFormValues( $formContainer );
28
+ var recurseDepth = 0;
29
+ var copyValues = function( from, to ) {
30
+ if ( ++recurseDepth > 10 ) {
31
+ return to;
32
+ }
33
+ for ( var key in to ) {
34
+ if ( from.hasOwnProperty( key ) ) {
35
+ var fromItem = from[ key ];
36
+ var toItem = to[ key ];
37
+ if ( fromItem !== null && toItem !== null && typeof fromItem === 'object' ) {
38
+ copyValues( fromItem, toItem );
39
+ } else {
40
+ to[ key ] = fromItem;
41
+ }
42
  }
43
  }
44
+ return to;
45
+ };
46
+ // Copy existing widget values for preset properties to allow for undo.
47
+ previousValues = copyValues( widgetData, presetClone );
48
+ $presetSelect.data( 'previousValues', previousValues );
49
+ }
50
+ if ( $undoLink.not( ':visible' ) ) {
51
+ $undoLink.show();
52
+ $undoLink.on( 'click', function ( event ) {
53
+ event.preventDefault();
54
+ $undoLink.hide();
55
+ sowbForms.setWidgetFormValues( $formContainer, previousValues, true );
56
+ $presetSelect.removeData( 'previousValues' );
57
+ $presetSelect.val( '' );
58
+ } );
59
+ }
60
  }
61
+
62
  sowbForms.setWidgetFormValues( $formContainer, presetValues, true );
63
  }
64
  } );
65
+
66
+ // If no value is selected, and there's a default preset, load it.
67
+ if ( $presetSelect.val() == 'default' && $presetSelect.data( 'default-preset' ) != '' ) {
68
+ $( this ).find( 'select[class="siteorigin-widget-input"] option[value="default"]' ).remove();
69
+ addingDefault = true;
70
+ $presetSelect.val( $presetSelect.data( 'default-preset' ) );
71
+ $presetSelect.trigger( 'change' );
72
+ }
73
+
74
  $presetSelect.data( 'initialized', true );
75
  } );
76
  })( jQuery );
base/inc/fields/js/presets-field.min.js CHANGED
@@ -1 +1 @@
1
- !function(e){e(document).on("sowsetupformfield",".siteorigin-widget-field-type-presets",(function(i){var t=e(this).find('select[class="siteorigin-widget-input"]');if(!t.data("initialized")){var s=t.find("+ .sowb-presets-field-undo");s.hide();var r=t.data("presets");t.on("change",(function(){var e=t.val();if(e&&r.hasOwnProperty(e)){var i=r[e].values,a=t.closest(".siteorigin-widget-form-main"),o=t.data("previousValues");if(!o){var n=JSON.parse(JSON.stringify(i)),u=sowbForms.getWidgetFormValues(a),l=0,d=function(e,i){if(++l>10)return i;for(var t in i)if(e.hasOwnProperty(t)){var s=e[t],r=i[t];null!==s&&null!==r&&"object"==typeof s?d(s,r):i[t]=s}return i};o=d(u,n),t.data("previousValues",o)}s.not(":visible")&&(s.show(),s.on("click",(function(e){e.preventDefault(),s.hide(),sowbForms.setWidgetFormValues(a,o,!0),t.removeData("previousValues"),t.val("")}))),sowbForms.setWidgetFormValues(a,i,!0)}})),t.data("initialized",!0)}}))}(jQuery);
1
+ !function(e){e(document).on("sowsetupformfield",".siteorigin-widget-field-type-presets",(function(i){var t=e(this).find('select[class="siteorigin-widget-input"]');if(!t.data("initialized")){var a=t.find("+ .sowb-presets-field-undo");a.hide();var s=!1,r=t.data("presets");t.on("change",(function(){var e=t.val();if(e&&r.hasOwnProperty(e)){var i=r[e].values,o=t.closest(".siteorigin-widget-form-main");if(!s){var n=t.data("previousValues");if(!n){var l=JSON.parse(JSON.stringify(i)),u=sowbForms.getWidgetFormValues(o),d=0,f=function(e,i){if(++d>10)return i;for(var t in i)if(e.hasOwnProperty(t)){var a=e[t],s=i[t];null!==a&&null!==s&&"object"==typeof a?f(a,s):i[t]=a}return i};n=f(u,l),t.data("previousValues",n)}a.not(":visible")&&(a.show(),a.on("click",(function(e){e.preventDefault(),a.hide(),sowbForms.setWidgetFormValues(o,n,!0),t.removeData("previousValues"),t.val("")})))}sowbForms.setWidgetFormValues(o,i,!0)}})),"default"==t.val()&&""!=t.data("default-preset")&&(e(this).find('select[class="siteorigin-widget-input"] option[value="default"]').remove(),s=!0,t.val(t.data("default-preset")),t.trigger("change")),t.data("initialized",!0)}}))}(jQuery);
base/inc/fields/presets.class.php CHANGED
@@ -12,6 +12,14 @@ class SiteOrigin_Widget_Field_Presets extends SiteOrigin_Widget_Field_Base {
12
  * @var array
13
  */
14
  protected $options;
 
 
 
 
 
 
 
 
15
 
16
  protected function get_default_options() {
17
  return array(
@@ -21,16 +29,22 @@ class SiteOrigin_Widget_Field_Presets extends SiteOrigin_Widget_Field_Base {
21
 
22
 
23
  protected function render_field( $value, $instance ) {
24
-
25
  $preset_options = array();
26
  foreach ( $this->options as $name => $preset ) {
27
  $preset_options[ $name ] = $preset['label'];
28
  }
29
-
30
  ?>
31
- <select id="<?php echo esc_attr( $this->element_id ) ?>"
32
- class="siteorigin-widget-input"
33
- data-presets="<?php echo esc_attr( json_encode( $this->options ) ) ?>">
 
 
 
 
 
 
 
34
  <option value="default"></option>
35
  <?php if( ! empty( $preset_options ) ) : ?>
36
  <?php foreach( $preset_options as $key => $val ) : ?>
12
  * @var array
13
  */
14
  protected $options;
15
+
16
+ /**
17
+ * The default preset. If empty, a blank field will be used.
18
+ *
19
+ * @access protected
20
+ * @var string
21
+ */
22
+ protected $default_preset;
23
 
24
  protected function get_default_options() {
25
  return array(
29
 
30
 
31
  protected function render_field( $value, $instance ) {
 
32
  $preset_options = array();
33
  foreach ( $this->options as $name => $preset ) {
34
  $preset_options[ $name ] = $preset['label'];
35
  }
36
+
37
  ?>
38
+ <select
39
+ name="<?php echo esc_attr( $this->element_name ); ?>"
40
+ id="<?php echo esc_attr( $this->element_id ); ?>"
41
+ class="siteorigin-widget-input"
42
+ data-presets="<?php echo esc_attr( json_encode( $this->options ) ); ?>"
43
+ <?php if ( ! empty( $this->default_preset ) ) : ?>
44
+ data-default-preset="<?php echo esc_attr( $this->default_preset ); ?>"
45
+ <?php endif; ?>
46
+ >
47
+
48
  <option value="default"></option>
49
  <?php if( ! empty( $preset_options ) ) : ?>
50
  <?php foreach( $preset_options as $key => $val ) : ?>
base/inc/post-selector.php CHANGED
@@ -36,7 +36,13 @@ function siteorigin_widget_post_selector_process_query( $query, $exclude_current
36
  $query['tax_query'] = array();
37
  $query['tax_query']['relation'] = isset( $query['tax_query_relation'] ) ? $query['tax_query_relation'] : 'OR';
38
  foreach($tax_queries as $tq) {
39
- list($tax, $term) = explode(':', $tq);
 
 
 
 
 
 
40
 
41
  if( empty($tax) || empty($term) ) continue;
42
  $query['tax_query'][] = array(
36
  $query['tax_query'] = array();
37
  $query['tax_query']['relation'] = isset( $query['tax_query_relation'] ) ? $query['tax_query_relation'] : 'OR';
38
  foreach($tax_queries as $tq) {
39
+ if ( strpos( $tq, ':' ) !== false ) {
40
+ list( $tax, $term ) = explode( ':', $tq );
41
+ } else {
42
+ // There's no separator, try using the previous $tax.
43
+ $tax = empty( $tax ) ? 'category' : $tax;
44
+ $term = $tq;
45
+ }
46
 
47
  if( empty($tax) || empty($term) ) continue;
48
  $query['tax_query'][] = array(
base/inc/widgets/base-carousel.class.php ADDED
@@ -0,0 +1,276 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ abstract class SiteOrigin_Widget_Base_Carousel extends SiteOrigin_Widget {
4
+
5
+ /**
6
+ * Register all the frontend scripts and styles for the base carousel.
7
+ */
8
+ function initialize() {
9
+ $this->register_frontend_scripts(
10
+ array(
11
+ array(
12
+ 'slick',
13
+ plugin_dir_url( SOW_BUNDLE_BASE_FILE ) . 'js/lib/slick' . SOW_BUNDLE_JS_SUFFIX . '.js',
14
+ array( 'jquery' ),
15
+ '1.8.1'
16
+ ),
17
+ array(
18
+ 'sow-carousel',
19
+ plugin_dir_url( SOW_BUNDLE_BASE_FILE ) . 'js/carousel' . SOW_BUNDLE_JS_SUFFIX . '.js',
20
+ array( 'jquery', 'slick' ),
21
+ SOW_BUNDLE_VERSION,
22
+ true
23
+ ),
24
+ )
25
+ );
26
+
27
+ $this->register_frontend_styles(
28
+ array(
29
+ array(
30
+ 'slick',
31
+ plugin_dir_url( SOW_BUNDLE_BASE_FILE ) . 'css/lib/slick.css',
32
+ array(),
33
+ '1.8.1'
34
+ ),
35
+ )
36
+ );
37
+
38
+ }
39
+
40
+ /**
41
+ * Allow widgets to override settings.
42
+ *
43
+ * @return array If overridden, an array is expected.
44
+ */
45
+ function override_carousel_settings() {
46
+ // Intentionally left blank.
47
+ }
48
+
49
+ /**
50
+ * Handle carousel specific settings and defaults.
51
+ *
52
+ * @return array
53
+ */
54
+ private function get_carousel_settings() {
55
+ return wp_parse_args(
56
+ $this->override_carousel_settings(),
57
+ array(
58
+ 'breakpoints' => array(
59
+ 'tablet_landscape' => 1366,
60
+ 'tablet_portrait' => 1025,
61
+ 'mobile' => 480,
62
+ ),
63
+ 'slides_to_scroll' => array(
64
+ 'desktop' => 3,
65
+ 'tablet_landscape' => 3,
66
+ 'tablet_portrait' => 2,
67
+ 'mobile' => 1,
68
+ ),
69
+ 'slides_to_scroll_text' => array(
70
+ 'label' => __( 'Slides to scroll', 'so-widgets-bundle' ),
71
+ 'description' => __( 'Set the number of slides to scroll per navigation click or swipe on %s', 'so-widgets-bundle' ),
72
+ ),
73
+ )
74
+ );
75
+ }
76
+
77
+ /**
78
+ * Utility method for adding section groups.
79
+ *
80
+ * @param array $field Field data
81
+ * @param string $value_type Whether the field is a placeholder or standard field. This controls whether the field data is stored by default.
82
+ *
83
+ * @return array The structured section group.
84
+ */
85
+ private function add_section_group( $field, $value_type ) {
86
+ $carousel_settings = $this->get_carousel_settings();
87
+
88
+ $section = array(
89
+ 'type' => 'section',
90
+ 'label' => $field['label'],
91
+ 'hide' => true,
92
+ 'fields' => array(),
93
+ );
94
+
95
+ if ( isset( $field['fields'] ) ) {
96
+ foreach ( $field['fields'] as $sub_field_key => $sub_field ) {
97
+ $section['fields'][ $sub_field_key ] = $this->add_section_group( $sub_field, $value_type );
98
+ }
99
+ } else {
100
+ $section['fields']['slides_to_scroll'] = array(
101
+ 'type' => 'number',
102
+ 'label' => $carousel_settings['slides_to_scroll_text']['label'],
103
+ 'description' => sprintf(
104
+ $carousel_settings['slides_to_scroll_text']['description'],
105
+ strtolower( $field['label'] )
106
+ ),
107
+ $value_type => $field['value'],
108
+ );
109
+
110
+ if ( isset( $field['breakpoint'] ) ) {
111
+ $section['fields']['breakpoint'] = array(
112
+ 'type' => 'number',
113
+ 'label' => __( 'Breakpoint', 'so-widgets-bundle' ),
114
+ $value_type => $field['breakpoint'],
115
+ );
116
+ }
117
+ }
118
+
119
+ return $section;
120
+
121
+ }
122
+
123
+ function responsive_form_fields( $context = 'widget' ) {
124
+ $carousel_settings = $this->get_carousel_settings();
125
+
126
+ // If the context is a widget, the global values are displayed using a
127
+ // placeholder to prevent the values from being stored.
128
+ $value_type = $context == 'widget' ? 'placeholder' : 'default';
129
+ $fields = array(
130
+ 'desktop' => array(
131
+ 'label' => __( 'Desktop', 'so-widgets-bundle' ),
132
+ 'value' => $carousel_settings['slides_to_scroll']['desktop'],
133
+ ),
134
+ 'tablet' => array(
135
+ 'label' => __( 'Tablet', 'so-widgets-bundle' ),
136
+ 'fields' => array(
137
+ 'landscape' => array(
138
+ 'label' => __( 'Landscape', 'so-widgets-bundle' ),
139
+ 'breakpoint' => $carousel_settings['breakpoints']['tablet_landscape'],
140
+ 'value' => $carousel_settings['slides_to_scroll']['tablet_landscape'],
141
+ ),
142
+ 'portrait' => array(
143
+ 'label' => __( 'Portrait', 'so-widgets-bundle' ),
144
+ 'breakpoint' => $carousel_settings['breakpoints']['tablet_portrait'],
145
+ 'value' => $carousel_settings['slides_to_scroll']['tablet_portrait'],
146
+ ),
147
+ ),
148
+ ),
149
+ 'mobile' => array(
150
+ 'label' => __( 'Mobile', 'so-widgets-bundle' ),
151
+ 'breakpoint' => $carousel_settings['breakpoints']['mobile'],
152
+ 'value' => $carousel_settings['slides_to_scroll']['mobile'],
153
+ ),
154
+ );
155
+
156
+ $generated_fields = array();
157
+ foreach ( $fields as $field_key => $field ) {
158
+ $generated_fields[ $field_key ] = $this->add_section_group( $field, $value_type );
159
+ }
160
+
161
+ return array(
162
+ 'type' => 'section',
163
+ 'label' => __( 'Responsive', 'so-widgets-bundle' ),
164
+ 'hide' => $context == 'widget',
165
+ 'fields' => $generated_fields,
166
+ );
167
+ }
168
+
169
+ function carousel_settings_form_fields() {
170
+ return array(
171
+ 'type' => 'section',
172
+ 'label' => __( 'Carousel Settings', 'so-widgets-bundle' ),
173
+ 'hide' => true,
174
+ 'fields' => array(
175
+ 'loop' => array(
176
+ 'type' => 'checkbox',
177
+ 'label' => __( 'Loop Items', 'so-widgets-bundle' ),
178
+ 'description' => __( 'Automatically return to the first item after the last item.', 'so-widgets-bundle' ),
179
+ 'default' => true,
180
+ ),
181
+ 'dots' => array(
182
+ 'type' => 'checkbox',
183
+ 'label' => __( 'Navigation dots', 'so-widgets-bundle' ),
184
+ ),
185
+ 'animation_speed' => array(
186
+ 'type' => 'number',
187
+ 'label' => __( 'Animation speed', 'so-widgets-bundle' ),
188
+ 'default' => 800,
189
+ ),
190
+ 'autoplay' => array(
191
+ 'type' => 'checkbox',
192
+ 'label' => __( 'Autoplay', 'so-widgets-bundle' ),
193
+ 'state_emitter' => array(
194
+ 'callback' => 'conditional',
195
+ 'args' => array(
196
+ 'autoplay[show]: val',
197
+ 'autoplay[hide]: ! val',
198
+ ),
199
+ )
200
+ ),
201
+ 'autoplay_pause_hover' => array(
202
+ 'type' => 'checkbox',
203
+ 'label' => __( 'Autoplay pause on hover', 'so-widgets-bundle' ),
204
+ 'state_handler' => array(
205
+ 'autoplay[show]' => array( 'show' ),
206
+ 'autoplay[hide]' => array( 'hide' ),
207
+ ),
208
+ ),
209
+
210
+ 'timeout' => array(
211
+ 'type' => 'number',
212
+ 'label' => __( 'Timeout', 'so-widgets-bundle' ),
213
+ 'default' => 8000,
214
+ 'state_handler' => array(
215
+ 'autoplay[show]' => array( 'show' ),
216
+ 'autoplay[hide]' => array( 'hide' ),
217
+ ),
218
+ ),
219
+ ),
220
+ );
221
+ }
222
+
223
+ function get_settings_form() {
224
+ return array(
225
+ 'responsive' => $this->responsive_form_fields( 'global' ),
226
+ );
227
+ }
228
+
229
+ function responsive_template_variables( $responsive, $encode = true ) {
230
+ $carousel_settings = $this->get_carousel_settings();
231
+
232
+ $variables = array(
233
+ 'desktop_slides' => ! empty( $responsive['desktop']['slides_to_scroll'] ) ? $responsive['desktop']['slides_to_scroll'] : $carousel_settings['slides_to_scroll']['desktop'],
234
+ 'tablet_landscape_breakpoint' => ! empty( $responsive['tablet']['landscape']['breakpoint'] ) ? $responsive['tablet']['landscape']['breakpoint'] : $carousel_settings['breakpoints']['tablet_landscape'],
235
+ 'tablet_landscape_slides' => ! empty( $responsive['tablet']['landscape']['slides_to_scroll'] ) ? $responsive['tablet']['landscape']['slides_to_scroll'] : $carousel_settings['slides_to_scroll']['tablet_landscape'],
236
+ 'tablet_portrait_breakpoint' => ! empty( $responsive['tablet']['portrait']['breakpoint'] ) ? $responsive['tablet']['portrait']['breakpoint'] : $carousel_settings['breakpoints']['tablet_portrait'],
237
+ 'tablet_portrait_slides' => ! empty( $responsive['tablet']['portrait']['slides_to_scroll'] ) ? $responsive['tablet']['portrait']['slides_to_scroll'] : $carousel_settings['slides_to_scroll']['tablet_portrait'],
238
+ 'mobile_breakpoint' => ! empty( $responsive['mobile']['breakpoint'] ) ? $responsive['mobile']['breakpoint'] : $carousel_settings['breakpoints']['mobile'],
239
+ 'mobile_slides' => ! empty( $responsive['mobile']['slides_to_scroll'] ) ? $responsive['mobile']['slides_to_scroll'] : $carousel_settings['slides_to_scroll']['mobile'],
240
+ );
241
+
242
+ return $encode ? json_encode( $variables ) : $variables;
243
+ }
244
+
245
+ function carousel_settings_template_variables( $settings, $encode = true ) {
246
+ $variables = array(
247
+ 'loop' => isset( $settings['loop'] ) ? $settings['loop'] : true,
248
+ 'dots' => isset( $settings['dots'] ) ? $settings['dots'] : true,
249
+ 'animation_speed' => ! empty( $settings['animation_speed'] ) ? $settings['animation_speed'] : 800,
250
+ 'autoplay' => isset( $settings['autoplay'] ) ? $settings['autoplay'] : false,
251
+ 'pauseOnHover' => isset( $settings['autoplay_pause_hover'] ) ? $settings['autoplay_pause_hover'] : false,
252
+ 'autoplaySpeed' => ! empty( $settings['timeout'] ) ? $settings['timeout'] : 8000,
253
+ );
254
+
255
+ return $encode ? json_encode( $variables ) : $variables;
256
+ }
257
+
258
+ function render_template( $settings, $args ) {
259
+ include plugin_dir_path( __FILE__ ) . 'tpl/carousel.php';
260
+ }
261
+
262
+ function render_navigation( $nav ) {
263
+ if ( $nav == 'next' || $nav == 'both' ) {
264
+ ?>
265
+ <a href="#" class="sow-carousel-next" title="<?php esc_attr_e( 'Next', 'so-widgets-bundle' ); ?>" aria-label="<?php esc_attr_e( 'Next Posts', 'so-widgets-bundle' ); ?>" role="button"></a>
266
+ <?php
267
+ }
268
+
269
+ if ( $nav == 'prev' || $nav == 'both' ) {
270
+ ?>
271
+ <a href="#" class="sow-carousel-previous" title="<?php esc_attr_e( 'Previous', 'so-widgets-bundle' ); ?>" aria-label="<?php esc_attr_e( 'Previous Posts', 'so-widgets-bundle' ); ?>" role="button"></a>
272
+ <?php
273
+ }
274
+ }
275
+
276
+ }
base/inc/widgets/tpl/carousel.php ADDED
@@ -0,0 +1,41 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <div class="sow-carousel-title<?php if ( ! empty( $settings['title'] ) ) echo ' has-title'; ?>">
2
+ <?php
3
+ if ( ! empty( $settings['title'] ) ) {
4
+ echo $args['before_title'] . esc_html( $settings['title'] ) . $args['after_title'];
5
+ }
6
+
7
+ if ( $settings['navigation'] == 'title' ) {
8
+ ?>
9
+ <div class="sow-carousel-navigation">
10
+ <?php $this->render_navigation( 'both' ); ?>
11
+ </div>
12
+ <?php } ?>
13
+ </div>
14
+
15
+ <div class="sow-carousel-container <?php echo ! empty( $container_classes ) ? esc_attr( $container_classes ) : ''; ?>">
16
+ <?php
17
+ if ( $settings['navigation'] == 'side' ) {
18
+ $this->render_navigation( 'prev' );
19
+ }
20
+ ?>
21
+ <div class="sow-carousel-wrapper"
22
+ data-dir="<?php echo is_rtl() ? 'rtl' : 'ltr'; ?>"
23
+ <?php
24
+ foreach ( $settings['attributes'] as $n => $v ) {
25
+ if ( ! empty( $n ) ) {
26
+ echo 'data-' . $n . '="' . esc_attr( $v ) . '" ';
27
+ }
28
+ }
29
+ ?>
30
+ >
31
+ <div class="sow-carousel-items">
32
+ <?php include $settings['item_template']; ?>
33
+ </div>
34
+ </div>
35
+
36
+ <?php
37
+ if ( $settings['navigation'] == 'side' ) {
38
+ $this->render_navigation( 'next' );
39
+ }
40
+ ?>
41
+ </div>
base/siteorigin-widget.class.php CHANGED
@@ -295,16 +295,15 @@ abstract class SiteOrigin_Widget extends WP_Widget {
295
 
296
  if( !empty($style) ) {
297
  $hash = $this->get_style_hash( $instance );
298
- $css_name = $this->id_base . '-' . $style . '-' . $hash . ( ! empty( $instance['panels_info'] ) ? '-' . get_the_id() : '' );
299
 
300
  //Ensure styles aren't generated and enqueued more than once.
301
  $in_preview = $this->is_preview( $instance ) || ( isset( $_POST['action'] ) && $_POST['action'] == 'so_widgets_preview' );
302
  if ( ! in_array( $css_name, $this->generated_css ) || $in_preview ) {
303
- if( $in_preview ) {
304
  siteorigin_widget_add_inline_css( $this->get_instance_css( $instance ) );
305
- }
306
- else {
307
- if( !file_exists( $upload_dir['basedir'] . '/siteorigin-widgets/' . $css_name .'.css' ) || ( defined('SITEORIGIN_WIDGETS_DEBUG') && SITEORIGIN_WIDGETS_DEBUG ) ) {
308
  // Attempt to recreate the CSS
309
  $this->save_css( $instance );
310
  }
@@ -316,8 +315,7 @@ abstract class SiteOrigin_Widget extends WP_Widget {
316
  set_url_scheme($upload_dir['baseurl'] . '/siteorigin-widgets/' . $css_name .'.css')
317
  );
318
  }
319
- }
320
- else {
321
  // Fall back to using inline CSS if we can't find the cached CSS file.
322
  // Try get the cached value.
323
  $css = wp_cache_get( $css_name, 'siteorigin_widgets' );
@@ -751,7 +749,7 @@ abstract class SiteOrigin_Widget extends WP_Widget {
751
 
752
  $style = $this->get_style_name($instance);
753
  $hash = $this->get_style_hash( $instance );
754
- $name = $this->id_base . '-' . $style . '-' . $hash . ( ! empty( $instance['panels_info'] ) ? '-' . get_the_id() : '' ) . '.css';
755
 
756
  $css = $this->get_instance_css($instance);
757
 
@@ -803,7 +801,7 @@ abstract class SiteOrigin_Widget extends WP_Widget {
803
 
804
  $style = $this->get_style_name($instance);
805
  $hash = $this->get_style_hash( $instance );
806
- $name = $this->id_base . '-' . $style . '-' . $hash . ( ! empty( $instance['panels_info'] ) ? '-' . get_the_id() : '' );
807
 
808
  $wp_filesystem->delete($upload_dir['basedir'] . '/siteorigin-widgets/' . $name . '.css');
809
  if ( in_array( $name, $this->generated_css ) ) {
@@ -882,7 +880,7 @@ abstract class SiteOrigin_Widget extends WP_Widget {
882
  if( ! empty( $less ) ) {
883
  $style = $this->get_style_name( $instance );
884
  $hash = $this->get_style_hash( $instance );
885
- $css_name = $this->id_base . '-' . $style . '-' . $hash . ( ! empty( $instance['panels_info'] ) ? '-' . get_the_id() : '' );
886
 
887
  //we assume that any remaining @imports are plain css imports and should be kept outside selectors
888
  $css_imports = '';
@@ -904,7 +902,7 @@ abstract class SiteOrigin_Widget extends WP_Widget {
904
  }
905
  }
906
  catch ( Exception $e ) {
907
- if( defined( 'SITEORIGIN_WIDGETS_DEBUG' ) && SITEORIGIN_WIDGETS_DEBUG ) {
908
  throw $e;
909
  }
910
  }
@@ -1350,4 +1348,95 @@ abstract class SiteOrigin_Widget extends WP_Widget {
1350
 
1351
  return $values;
1352
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1353
  }
295
 
296
  if( !empty($style) ) {
297
  $hash = $this->get_style_hash( $instance );
298
+ $css_name = $this->id_base . '-' . $style . '-' . $hash . ( ! empty( $instance['panels_info'] ) && ! isset( $instance['panels_info']['builder'] ) ? '-' . get_the_id() : '' );
299
 
300
  //Ensure styles aren't generated and enqueued more than once.
301
  $in_preview = $this->is_preview( $instance ) || ( isset( $_POST['action'] ) && $_POST['action'] == 'so_widgets_preview' );
302
  if ( ! in_array( $css_name, $this->generated_css ) || $in_preview ) {
303
+ if ( $in_preview || ( defined( 'SITEORIGIN_WIDGETS_DEBUG' ) && SITEORIGIN_WIDGETS_DEBUG ) ) {
304
  siteorigin_widget_add_inline_css( $this->get_instance_css( $instance ) );
305
+ } else {
306
+ if ( ! file_exists( $upload_dir['basedir'] . '/siteorigin-widgets/' . $css_name .'.css' ) ) {
 
307
  // Attempt to recreate the CSS
308
  $this->save_css( $instance );
309
  }
315
  set_url_scheme($upload_dir['baseurl'] . '/siteorigin-widgets/' . $css_name .'.css')
316
  );
317
  }
318
+ } else {
 
319
  // Fall back to using inline CSS if we can't find the cached CSS file.
320
  // Try get the cached value.
321
  $css = wp_cache_get( $css_name, 'siteorigin_widgets' );
749
 
750
  $style = $this->get_style_name($instance);
751
  $hash = $this->get_style_hash( $instance );
752
+ $name = $this->id_base . '-' . $style . '-' . $hash . ( ! empty( $instance['panels_info'] ) && ! isset( $instance['panels_info']['builder'] ) ? '-' . get_the_id() : '' ) . '.css';
753
 
754
  $css = $this->get_instance_css($instance);
755
 
801
 
802
  $style = $this->get_style_name($instance);
803
  $hash = $this->get_style_hash( $instance );
804
+ $name = $this->id_base . '-' . $style . '-' . $hash . ( ! empty( $instance['panels_info'] ) && ! isset( $instance['panels_info']['builder'] ) ? '-' . get_the_id() : '' );
805
 
806
  $wp_filesystem->delete($upload_dir['basedir'] . '/siteorigin-widgets/' . $name . '.css');
807
  if ( in_array( $name, $this->generated_css ) ) {
880
  if( ! empty( $less ) ) {
881
  $style = $this->get_style_name( $instance );
882
  $hash = $this->get_style_hash( $instance );
883
+ $css_name = $this->id_base . '-' . $style . '-' . $hash . ( ! empty( $instance['panels_info'] ) && ! isset( $instance['panels_info']['builder'] ) ? '-' . get_the_id() : '' );
884
 
885
  //we assume that any remaining @imports are plain css imports and should be kept outside selectors
886
  $css_imports = '';
902
  }
903
  }
904
  catch ( Exception $e ) {
905
+ if ( defined( 'SITEORIGIN_WIDGETS_DEBUG' ) && SITEORIGIN_WIDGETS_DEBUG ) {
906
  throw $e;
907
  }
908
  }
1348
 
1349
  return $values;
1350
  }
1351
+
1352
+ /**
1353
+ * Add state_handler for fields based on how they're adjusted by preset data.
1354
+ *
1355
+ * @param string $state_name
1356
+ * @param array $preset_data
1357
+ * @param array $fields The fields to apply state handlers too.
1358
+ *
1359
+ * @return array $fields with any state_handler's applied.
1360
+ */
1361
+ protected function dynamic_preset_state_handler( $state_name, $preset_data, $fields ) {
1362
+ // Build an array of all the adjusted fields by the preset data, and note which presets adjust them.
1363
+ $adjusted_fields = array();
1364
+ foreach ( $preset_data as $preset_id => $preset ) {
1365
+ $adjusted_fields = array_merge_recursive(
1366
+ $this->dynamic_preset_extract_fields(
1367
+ $preset['values'],
1368
+ $preset_id
1369
+ ),
1370
+ $adjusted_fields
1371
+ );
1372
+ }
1373
+
1374
+ // Apply state handlers to fields.
1375
+ return $this->dynamic_preset_add_state_handler(
1376
+ $state_name,
1377
+ $adjusted_fields,
1378
+ $fields
1379
+ );
1380
+ }
1381
+
1382
+ /**
1383
+ * Build an array of all of fields adjusted by the preset data, and note which presets adjust them.
1384
+ *
1385
+ * @param array $fields The fields to extract preset usage from.
1386
+ * @param array $preset_id
1387
+ *
1388
+ * @return array An array containing extracted fields.
1389
+ */
1390
+ private function dynamic_preset_extract_fields( $fields, $preset_id ) {
1391
+ $extracted_fields = array();
1392
+ foreach ( $fields as $field_key => $field ) {
1393
+ // Does this field have sub fields?
1394
+ if ( is_array( $field ) ) {
1395
+ $extracted_fields[ $field_key ] = $this->dynamic_preset_extract_fields( $field, $preset_id );
1396
+ } else {
1397
+ $extracted_fields[ $field_key ][] = $preset_id;
1398
+ }
1399
+ }
1400
+
1401
+ return $extracted_fields;
1402
+ }
1403
+
1404
+
1405
+ /**
1406
+ * Add state_handler to fields based on preset adjusted fields.
1407
+ *
1408
+ * @param string $state_name
1409
+ * @param array $preset_adjusted_fields
1410
+ * @param array $fields The fields to apply state handlers too.
1411
+ *
1412
+ * @return array $fields with any state_handler's applied.
1413
+ */
1414
+ private function dynamic_preset_add_state_handler( $state_name, $adjusted_fields, $fields ) {
1415
+ foreach ( $adjusted_fields as $field => $field_value ) {
1416
+ // Skip field if it's not adjusted by of the presets, or if the field has a state_handler already.
1417
+ if (
1418
+ ! isset( $fields[ $field ] ) ||
1419
+ isset( $fields[ $field ]['state_handler'] )
1420
+ ) {
1421
+ continue;
1422
+ }
1423
+
1424
+ // If this is a section field, we need to apply the state handlers for sub fields.
1425
+ if ( $fields[ $field ]['type'] == 'section' ) {
1426
+ $fields[ $field ]['fields'] = $this->dynamic_preset_add_state_handler(
1427
+ $state_name,
1428
+ $field_value,
1429
+ $fields[ $field ]['fields']
1430
+ );
1431
+ } else {
1432
+ $used_by = implode( ',', $field_value );
1433
+ $fields[ $field ]['state_handler'] = array(
1434
+ $state_name . '[' . $used_by . ']' => array( 'show' ),
1435
+ '_else[' . $state_name . ']' => array( 'hide' ),
1436
+ );
1437
+ }
1438
+ }
1439
+
1440
+ return $fields;
1441
+ }
1442
  }
{widgets/post-carousel/js → js}/carousel.js RENAMED
@@ -22,16 +22,22 @@ jQuery( function ( $ ) {
22
  $( '.sow-carousel-wrapper' ).each( function () {
23
  var $$ = $( this ),
24
  $items = $$.find( '.sow-carousel-items' ),
25
- responsiveSettings = $$.data( 'responsive' );
 
26
 
27
  $items.not( '.slick-initialized' ).slick( {
28
  arrows: false,
29
- infinite: false,
30
  rows: 0,
31
  rtl: $$.data( 'dir' ) == 'rtl',
32
  touchThreshold: 20,
33
- variableWidth: true,
 
34
  accessibility: false,
 
 
 
 
35
  slidesToScroll: responsiveSettings.desktop_slides,
36
  slidesToShow: responsiveSettings.desktop_slides,
37
  responsive: [
@@ -61,47 +67,22 @@ jQuery( function ( $ ) {
61
  // due to the inability to stop a slide from changing from those events
62
  $$.parent().parent().find( '.sow-carousel-previous, .sow-carousel-next' ).on( 'click touchend', function( e, refocus ) {
63
  e.preventDefault();
 
64
  var $items = $$.find( '.sow-carousel-items' ),
65
  numItems = $items.find( '.sow-carousel-item' ).length,
66
- complete = numItems >= $$.data( 'post-count' ),
67
  numVisibleItems = Math.ceil( $items.outerWidth() / $items.find( '.sow-carousel-item' ).outerWidth( true ) ),
68
  lastPosition = numItems - numVisibleItems + 1,
69
  slidesToScroll = $items.slick( 'slickGetOption', 'slidesToScroll' );
70
 
71
- // Check if all posts are displayed
72
  if ( ! complete ) {
73
- // Check if we need to fetch the next batch of posts
74
  if (
75
  $items.slick( 'slickCurrentSlide' ) + numVisibleItems >= numItems - 1 ||
76
  $items.slick( 'slickCurrentSlide' ) + slidesToScroll > lastPosition - 1
77
  ) {
78
-
79
- if ( ! $$.data( 'fetching' ) ) {
80
- // Fetch the next batch
81
- $$.data( 'fetching', true );
82
- var page = $$.data( 'page' ) + 1;
83
-
84
- $items.slick( 'slickAdd', '<div class="sow-carousel-item sow-carousel-loading"></div>' );
85
- $.get(
86
- $$.data( 'ajax-url' ),
87
- {
88
- action: 'sow_carousel_load',
89
- paged: page,
90
- instance_hash: $$.parent().parent().find( 'input[name="instance_hash"]' ).val()
91
- },
92
- function ( data, status ) {
93
- $items.find( '.sow-carousel-loading' ).remove();
94
- $items.slick( 'slickAdd', data.html );
95
- numItems = $$.find( '.sow-carousel-item' ).length;
96
- $$.data( 'fetching', false );
97
- $$.data( 'page', page );
98
-
99
- if ( refocus ) {
100
- $items.find( '.sow-carousel-item[tabindex="0"]' ).trigger( 'focus' );
101
- }
102
- }
103
- );
104
- }
105
  }
106
  }
107
 
@@ -118,7 +99,7 @@ jQuery( function ( $ ) {
118
  complete &&
119
  $items.slick( 'slickCurrentSlide' ) >= lastPosition
120
  ) {
121
- if ( $$.data( 'loop-posts-enabled' ) ) {
122
  $items.slick( 'slickGoTo', 0 );
123
  }
124
  // Check if the number of slides to scroll exceeds lastPosition, go to the last slide.
@@ -128,7 +109,7 @@ jQuery( function ( $ ) {
128
  $items.slick( 'slickNext' );
129
  }
130
  } else if ( $( this ).hasClass( 'sow-carousel-previous' ) ) {
131
- if ( $$.data( 'loop-posts-enabled' ) && $items.slick( 'slickCurrentSlide' ) == 0 ) {
132
  $items.slick( 'slickGoTo', lastPosition );
133
  } else {
134
  $items.slick( 'slickPrev' );
@@ -136,6 +117,28 @@ jQuery( function ( $ ) {
136
  }
137
  } );
138
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
139
  } );
140
 
141
  // Keyboard Navigation of carousel navigation.
@@ -163,7 +166,7 @@ jQuery( function ( $ ) {
163
  $items = $wrapper.find( '.sow-carousel-items' ),
164
  numItems = $items.find( '.sow-carousel-item' ).length,
165
  itemIndex = $( this ).data( 'slick-index' ),
166
- lastPosition = numItems - ( numItems === $wrapper.data( 'post-count' ) ? 0 : 1 );
167
 
168
  if ( e.keyCode == 37 ) {
169
  itemIndex--;
@@ -174,7 +177,7 @@ jQuery( function ( $ ) {
174
  itemIndex++;
175
  if ( itemIndex >= lastPosition ) {
176
  if ( $wrapper.data( 'fetching' ) ) {
177
- return; // Currently loading new post
178
  }
179
 
180
  $wrapper.parent().find( '.sow-carousel-next' ).trigger( 'click', true );
@@ -195,7 +198,7 @@ jQuery( function ( $ ) {
195
  numVisibleItems = Math.ceil( $items.outerWidth() / $items.find( '.sow-carousel-item' ).outerWidth( true ) ),
196
  navigation = currentCarousel.parent().parent().find( '.sow-carousel-navigation' );
197
 
198
- if ( numVisibleItems >= currentCarousel.data( 'post-count' ) ) {
199
  navigation.hide();
200
  $items.slick( 'slickSetOption', 'touchMove', false );
201
  $items.slick( 'slickSetOption', 'draggable', false );
22
  $( '.sow-carousel-wrapper' ).each( function () {
23
  var $$ = $( this ),
24
  $items = $$.find( '.sow-carousel-items' ),
25
+ responsiveSettings = $$.data( 'responsive' ),
26
+ carouselSettings = $$.data( 'carousel_settings' );
27
 
28
  $items.not( '.slick-initialized' ).slick( {
29
  arrows: false,
30
+ dots: carouselSettings.dots,
31
  rows: 0,
32
  rtl: $$.data( 'dir' ) == 'rtl',
33
  touchThreshold: 20,
34
+ infinite: ! $$.data( 'ajax-url' )&& $$.data( 'carousel_settings' ).loop,
35
+ variableWidth: $$.data( 'variable_width' ),
36
  accessibility: false,
37
+ speed: carouselSettings.animation_speed,
38
+ autoplay: carouselSettings.autoplay,
39
+ autoplaySpeed: carouselSettings.autoplaySpeed,
40
+ pauseOnHover: carouselSettings.pauseOnHover,
41
  slidesToScroll: responsiveSettings.desktop_slides,
42
  slidesToShow: responsiveSettings.desktop_slides,
43
  responsive: [
67
  // due to the inability to stop a slide from changing from those events
68
  $$.parent().parent().find( '.sow-carousel-previous, .sow-carousel-next' ).on( 'click touchend', function( e, refocus ) {
69
  e.preventDefault();
70
+
71
  var $items = $$.find( '.sow-carousel-items' ),
72
  numItems = $items.find( '.sow-carousel-item' ).length,
73
+ complete = numItems >= $$.data( 'item_count' ),
74
  numVisibleItems = Math.ceil( $items.outerWidth() / $items.find( '.sow-carousel-item' ).outerWidth( true ) ),
75
  lastPosition = numItems - numVisibleItems + 1,
76
  slidesToScroll = $items.slick( 'slickGetOption', 'slidesToScroll' );
77
 
78
+ // Check if all items are displayed
79
  if ( ! complete ) {
80
+ // For Ajax Carousels, check if we need to fetch the next batch of items.
81
  if (
82
  $items.slick( 'slickCurrentSlide' ) + numVisibleItems >= numItems - 1 ||
83
  $items.slick( 'slickCurrentSlide' ) + slidesToScroll > lastPosition - 1
84
  ) {
85
+ $( sowb ).trigger( 'carousel_load_new_items', [ $$, $items, refocus ] );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
86
  }
87
  }
88
 
99
  complete &&
100
  $items.slick( 'slickCurrentSlide' ) >= lastPosition
101
  ) {
102
+ if ( $$.data( 'carousel_settings' ).loop ) {
103
  $items.slick( 'slickGoTo', 0 );
104
  }
105
  // Check if the number of slides to scroll exceeds lastPosition, go to the last slide.
109
  $items.slick( 'slickNext' );
110
  }
111
  } else if ( $( this ).hasClass( 'sow-carousel-previous' ) ) {
112
+ if ( $$.data( 'carousel_settings' ).loop && $items.slick( 'slickCurrentSlide' ) == 0 ) {
113
  $items.slick( 'slickGoTo', lastPosition );
114
  } else {
115
  $items.slick( 'slickPrev' );
117
  }
118
  } );
119
 
120
+ if ( carouselSettings.dots && $$.data( 'variable_width' ) ) {
121
+ // Unbind base Slick Dot Navigation as we use a custom event to prevent blank spaces.
122
+ $$.find( '.slick-dots li' ).off( 'click.slick' );
123
+ $$.find( '.slick-dots li' ).on( 'click touchend', function() {
124
+ var targetItem = $( this ).index(),
125
+ numItems = $items.find( '.sow-carousel-item' ).length,
126
+ numVisibleItems = Math.ceil( $items.outerWidth() / $items.find( '.sow-carousel-item' ).outerWidth( true ) ),
127
+ lastPosition = numItems - numVisibleItems;
128
+
129
+ // Check if navigating to the selected item would result in a blank space.
130
+ if ( targetItem + numVisibleItems >= numItems ) {
131
+ // Blank spacing would occur, let's go to the last possible item
132
+ // make it appear as though we navigated to the selected item.
133
+ $items.slick( 'slickGoTo', lastPosition );
134
+ $dots = $( this ).parent();
135
+ $dots.find( '.slick-active' ).removeClass( 'slick-active' );
136
+ $dots.children().eq( targetItem ).addClass( 'slick-active' );
137
+ } else {
138
+ $items.slick( 'slickGoTo', targetItem );
139
+ }
140
+ } );
141
+ }
142
  } );
143
 
144
  // Keyboard Navigation of carousel navigation.
166
  $items = $wrapper.find( '.sow-carousel-items' ),
167
  numItems = $items.find( '.sow-carousel-item' ).length,
168
  itemIndex = $( this ).data( 'slick-index' ),
169
+ lastPosition = numItems - ( numItems === $wrapper.data( 'item_count' ) ? 0 : 1 );
170
 
171
  if ( e.keyCode == 37 ) {
172
  itemIndex--;
177
  itemIndex++;
178
  if ( itemIndex >= lastPosition ) {
179
  if ( $wrapper.data( 'fetching' ) ) {
180
+ return; // Currently loading new items.
181
  }
182
 
183
  $wrapper.parent().find( '.sow-carousel-next' ).trigger( 'click', true );
198
  numVisibleItems = Math.ceil( $items.outerWidth() / $items.find( '.sow-carousel-item' ).outerWidth( true ) ),
199
  navigation = currentCarousel.parent().parent().find( '.sow-carousel-navigation' );
200
 
201
+ if ( numVisibleItems >= currentCarousel.data( 'item_count' ) ) {
202
  navigation.hide();
203
  $items.slick( 'slickSetOption', 'touchMove', false );
204
  $items.slick( 'slickSetOption', 'draggable', false );
js/carousel.min.js ADDED
@@ -0,0 +1 @@
 
1
+ var sowb=window.sowb||{};jQuery((function(i){sowb.setupCarousel=function(){i.fn.setSlideTo=function(e){$item=i(this);var s=$item.slick("slickGetOption","slidesToShow"),t=$item.slick("slickGetOption","slidesToScroll");$item.slick("slickSetOption","slidesToShow",1),$item.slick("slickSetOption","slidesToScroll",1),$item.slick("slickGoTo",e),$item.slick("slickSetOption","slidesToShow",s),$item.slick("slickSetOption","slidesToScroll",t)},i(".sow-carousel-wrapper").each((function(){var e=i(this),s=e.find(".sow-carousel-items"),t=e.data("responsive"),o=e.data("carousel_settings");s.not(".slick-initialized").slick({arrows:!1,dots:o.dots,rows:0,rtl:"rtl"==e.data("dir"),touchThreshold:20,infinite:!e.data("ajax-url")&&e.data("carousel_settings").loop,variableWidth:e.data("variable_width"),accessibility:!1,speed:o.animation_speed,autoplay:o.autoplay,autoplaySpeed:o.autoplaySpeed,pauseOnHover:o.pauseOnHover,slidesToScroll:t.desktop_slides,slidesToShow:t.desktop_slides,responsive:[{breakpoint:t.tablet_portrait_breakpoint,settings:{slidesToScroll:t.tablet_portrait_slides,slidesToShow:t.tablet_portrait_slides}},{breakpoint:t.mobile_breakpoint,settings:{slidesToScroll:t.mobile_slides,slidesToShow:t.mobile_slides}}]}),s.on("swipe",(function(i,s,t){e.parent().parent().find(".sow-carousel-"+("left"==t?"next":"prev")).trigger("touchend")})),e.parent().parent().find(".sow-carousel-previous, .sow-carousel-next").on("click touchend",(function(s,t){s.preventDefault();var o=e.find(".sow-carousel-items"),l=o.find(".sow-carousel-item").length,a=l>=e.data("item_count"),c=Math.ceil(o.outerWidth()/o.find(".sow-carousel-item").outerWidth(!0)),n=l-c+1,r=o.slick("slickGetOption","slidesToScroll");a||(o.slick("slickCurrentSlide")+c>=l-1||o.slick("slickCurrentSlide")+r>n-1)&&i(sowb).trigger("carousel_load_new_items",[e,o,t]),i(this).hasClass("sow-carousel-next")?a&&o.slick("slickCurrentSlide")>=n?e.data("carousel_settings").loop&&o.slick("slickGoTo",0):o.slick("slickCurrentSlide")+r>n-1?o.setSlideTo(n):o.slick("slickNext"):i(this).hasClass("sow-carousel-previous")&&(e.data("carousel_settings").loop&&0==o.slick("slickCurrentSlide")?o.slick("slickGoTo",n):o.slick("slickPrev"))})),o.dots&&e.data("variable_width")&&(e.find(".slick-dots li").off("click.slick"),e.find(".slick-dots li").on("click touchend",(function(){var e=i(this).index(),t=s.find(".sow-carousel-item").length,o=Math.ceil(s.outerWidth()/s.find(".sow-carousel-item").outerWidth(!0)),l=t-o;e+o>=t?(s.slick("slickGoTo",l),$dots=i(this).parent(),$dots.find(".slick-active").removeClass("slick-active"),$dots.children().eq(e).addClass("slick-active")):s.slick("slickGoTo",e)})))})),i(document).on("keydown",".sow-carousel-navigation a",(function(e){13!=e.keyCode&&32!=e.keyCode||(e.preventDefault(),i(this).trigger("click"))})),i(document).on("keyup",".sow-carousel-item",(function(e){if(13==e.keyCode&&i(this).find("h3 a")[0].click(),37==e.keyCode||39==e.keyCode){var s=i(this).parents(".sow-carousel-wrapper"),t=s.find(".sow-carousel-items"),o=t.find(".sow-carousel-item").length,l=i(this).data("slick-index"),a=o-(o===s.data("item_count")?0:1);if(37==e.keyCode)--l<0&&(l=a);else if(39==e.keyCode&&++l>=a){if(s.data("fetching"))return;s.parent().find(".sow-carousel-next").trigger("click",!0)}t.slick("slickGoTo",l,!0),s.find(".sow-carousel-item").prop("tabindex",-1),s.find('.sow-carousel-item[data-slick-index="'+l+'"]').trigger("focus").prop("tabindex",0)}})),i(window).on("resize load",(function(){i(".sow-carousel-wrapper").each((function(){var e=i(this),s=e.find(".sow-carousel-items.slick-initialized"),t=Math.ceil(s.outerWidth()/s.find(".sow-carousel-item").outerWidth(!0)),o=e.parent().parent().find(".sow-carousel-navigation");t>=e.data("item_count")?(o.hide(),s.slick("slickSetOption","touchMove",!1),s.slick("slickSetOption","draggable",!1)):o.not(":visible")&&(o.show(),s.slick("slickSetOption","touchMove",!0),s.slick("slickSetOption","draggable",!0));var l=e.data("responsive");window.matchMedia("(min-width: "+l.tablet_portrait_breakpoint+"px) and (max-width: "+l.tablet_landscape_breakpoint+"px) and (orientation: landscape)").matches&&(s.slick("slickSetOption","slidesToShow",l.tablet_landscape_slides),s.slick("slickSetOption","slidesToScroll",l.tablet_landscape_slides))})),i(".sow-carousel-item:first-of-type").prop("tabindex",0)}))},sowb.setupCarousel(),i(sowb).on("setup_widgets",sowb.setupCarousel)})),window.sowb=sowb;
lang/so-widgets-bundle.pot CHANGED
@@ -21,14 +21,14 @@ msgid "SiteOrigin Widgets Bundle"
21
  msgstr ""
22
 
23
  #: so-widgets-bundle.php:4
24
- msgid "A collection of all widgets, neatly bundled into a single plugin. It's also a framework to code your own widgets on top of."
25
  msgstr ""
26
 
27
- #: so-widgets-bundle.php:8, widgets/accordion/accordion.php:5, widgets/button/button.php:5, widgets/contact/contact.php:5, widgets/cta/cta.php:5, widgets/editor/editor.php:5, widgets/features/features.php:5, widgets/google-map/google-map.php:5, widgets/headline/headline.php:5, widgets/hero/hero.php:5, widgets/icon/icon.php:5, widgets/image/image.php:5, widgets/image-grid/image-grid.php:5, widgets/layout-slider/layout-slider.php:5, widgets/post-carousel/post-carousel.php:5, widgets/price-table/price-table.php:5, widgets/simple-masonry/simple-masonry.php:5, widgets/slider/slider.php:5, widgets/social-media-buttons/social-media-buttons.php:5, widgets/tabs/tabs.php:5, widgets/taxonomy/taxonomy.php:5, widgets/testimonial/testimonial.php:5, widgets/video/video.php:5
28
  msgid "SiteOrigin"
29
  msgstr ""
30
 
31
- #: so-widgets-bundle.php:9, widgets/accordion/accordion.php:6, widgets/button/button.php:6, widgets/contact/contact.php:6, widgets/cta/cta.php:6, widgets/editor/editor.php:6, widgets/features/features.php:6, widgets/google-map/google-map.php:6, widgets/headline/headline.php:6, widgets/hero/hero.php:6, widgets/icon/icon.php:6, widgets/image/image.php:6, widgets/image-grid/image-grid.php:6, widgets/layout-slider/layout-slider.php:6, widgets/post-carousel/post-carousel.php:6, widgets/price-table/price-table.php:6, widgets/simple-masonry/simple-masonry.php:6, widgets/slider/slider.php:6, widgets/social-media-buttons/social-media-buttons.php:6, widgets/tabs/tabs.php:6, widgets/taxonomy/taxonomy.php:6, widgets/testimonial/testimonial.php:6, widgets/video/video.php:6
32
  msgid "https://siteorigin.com"
33
  msgstr ""
34
 
@@ -72,43 +72,47 @@ msgstr ""
72
  msgid "Support"
73
  msgstr ""
74
 
75
- #: base/siteorigin-widget.class.php:511
 
 
 
 
76
  msgid "Preview"
77
  msgstr ""
78
 
79
- #: base/siteorigin-widget.class.php:516
80
  msgid "Help"
81
  msgstr ""
82
 
83
- #: base/siteorigin-widget.class.php:582
84
  msgid "This widget has scripts and styles that need to be loaded before you can use it. Please save and reload your current page."
85
  msgstr ""
86
 
87
- #: base/siteorigin-widget.class.php:583
88
  msgid "You will only need to do this once."
89
  msgstr ""
90
 
91
- #: base/siteorigin-widget.class.php:610
92
  msgid "Are you sure?"
93
  msgstr ""
94
 
95
- #: base/siteorigin-widget.class.php:612
96
  msgid "There is a newer version of this widget's content available."
97
  msgstr ""
98
 
99
- #: base/siteorigin-widget.class.php:613, base/siteorigin-widget.class.php:617
100
  msgid "Restore"
101
  msgstr ""
102
 
103
- #: base/siteorigin-widget.class.php:614
104
  msgid "Dismiss"
105
  msgstr ""
106
 
107
- #: base/siteorigin-widget.class.php:616
108
  msgid "Clicking %s will replace the current widget contents. You can revert by refreshing the page before updating."
109
  msgstr ""
110
 
111
- #: base/siteorigin-widget.class.php:667, base/inc/actions.php:53
112
  msgid "Widget Preview"
113
  msgstr ""
114
 
@@ -268,7 +272,7 @@ msgstr ""
268
  msgid "Regular"
269
  msgstr ""
270
 
271
- #: icons/fontawesome/filter.php:1472, widgets/contact/contact.php:365, widgets/contact/contact.php:487, widgets/contact/contact.php:595, widgets/contact/contact.php:673, widgets/headline/headline.php:189
272
  msgid "Solid"
273
  msgstr ""
274
 
@@ -292,7 +296,7 @@ msgstr ""
292
  msgid "When opening the panel, scroll the user to the top of the panel."
293
  msgstr ""
294
 
295
- #: widgets/accordion/accordion.php:71, widgets/accordion/accordion.php:84, widgets/contact/contact.php:48, widgets/cta/cta.php:64, widgets/editor/editor.php:35, widgets/features/features.php:136, widgets/icon/icon.php:68, widgets/post-carousel/post-carousel.php:159, 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
296
  msgid "Title"
297
  msgstr ""
298
 
@@ -300,7 +304,7 @@ msgstr ""
300
  msgid "Panels"
301
  msgstr ""
302
 
303
- #: widgets/accordion/accordion.php:88, widgets/hero/hero.php:62, widgets/layout-slider/layout-slider.php:58, widgets/tabs/tabs.php:88
304
  msgid "Content"
305
  msgstr ""
306
 
@@ -324,7 +328,7 @@ msgstr ""
324
  msgid "Closed"
325
  msgstr ""
326
 
327
- #: widgets/accordion/accordion.php:110, widgets/contact/contact.php:328, widgets/cta/cta.php:74, widgets/post-carousel/post-carousel.php:207, widgets/slider/slider.php:121, widgets/tabs/tabs.php:100, widgets/testimonial/testimonial.php:184
328
  msgid "Design"
329
  msgstr ""
330
 
@@ -332,7 +336,7 @@ msgstr ""
332
  msgid "Headings"
333
  msgstr ""
334
 
335
- #: widgets/accordion/accordion.php:120, widgets/accordion/accordion.php:158, widgets/contact/contact.php:338, widgets/contact/contact.php:576, widgets/cta/cta.php:78, widgets/hero/hero.php:122, widgets/layout-slider/layout-slider.php:92, widgets/social-media-buttons/social-media-buttons.php:86, widgets/tabs/tabs.php:110, widgets/tabs/tabs.php:130, widgets/tabs/tabs.php:174
336
  msgid "Background color"
337
  msgstr ""
338
 
@@ -364,7 +368,7 @@ msgstr ""
364
  msgid "Font color"
365
  msgstr ""
366
 
367
- #: widgets/accordion/accordion.php:175
368
  msgid "Bottom margin"
369
  msgstr ""
370
 
@@ -372,6 +376,138 @@ msgstr ""
372
  msgid "Get more customization options and the ability to use widgets and layouts as your accordion content with %sSiteOrigin Premium%s"
373
  msgstr ""
374
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
375
  #: widgets/button/button.php:4, widgets/button/button.php:17
376
  msgid "A powerful yet simple button widget for your sidebars or Page Builder pages."
377
  msgstr ""
@@ -380,7 +516,7 @@ msgstr ""
380
  msgid "SiteOrigin Button"
381
  msgstr ""
382
 
383
- #: widgets/button/button.php:33, widgets/contact/contact.php:801, widgets/features/features.php:321, widgets/social-media-buttons/social-media-buttons.php:33, base/inc/widgets/base-slider.class.php:194
384
  msgid "Responsive Breakpoint"
385
  msgstr ""
386
 
@@ -392,11 +528,11 @@ msgstr ""
392
  msgid "Button text"
393
  msgstr ""
394
 
395
- #: widgets/button/button.php:62, widgets/google-map/google-map.php:103, widgets/headline/headline.php:47, widgets/headline/headline.php:118, widgets/hero/hero.php:128, widgets/icon/icon.php:57, widgets/image/image.php:90, widgets/layout-slider/layout-slider.php:98, widgets/simple-masonry/simple-masonry.php:89, widgets/slider/slider.php:103
396
  msgid "Destination URL"
397
  msgstr ""
398
 
399
- #: widgets/button/button.php:69, widgets/google-map/google-map.php:114, widgets/headline/headline.php:52, widgets/headline/headline.php:123, widgets/icon/icon.php:63, widgets/simple-masonry/simple-masonry.php:94, widgets/social-media-buttons/social-media-buttons.php:97, widgets/taxonomy/taxonomy.php:65, widgets/testimonial/testimonial.php:94
400
  msgid "Open in a new window"
401
  msgstr ""
402
 
@@ -408,11 +544,11 @@ msgstr ""
408
  msgid "The Destination URL will be downloaded when a user clicks on the button."
409
  msgstr ""
410
 
411
- #: widgets/button/button.php:81, widgets/button/button.php:85, widgets/features/features.php:78, widgets/icon/icon.php:31, widgets/price-table/price-table.php:119
412
  msgid "Icon"
413
  msgstr ""
414
 
415
- #: widgets/button/button.php:90, widgets/features/features.php:88, widgets/price-table/price-table.php:123, widgets/social-media-buttons/social-media-buttons.php:82
416
  msgid "Icon color"
417
  msgstr ""
418
 
@@ -428,22 +564,6 @@ msgstr ""
428
  msgid "Icon Placement"
429
  msgstr ""
430
 
431
- #: widgets/button/button.php:104, widgets/features/features.php:66, widgets/image-grid/image-grid.php:120, widgets/image-grid/image-grid.php:140
432
- msgid "Top"
433
- msgstr ""
434
-
435
- #: widgets/button/button.php:105, widgets/button/button.php:131, widgets/button/button.php:142, widgets/contact/contact.php:403, widgets/contact/contact.php:418, widgets/contact/contact.php:647, widgets/cta/cta.php:103, widgets/features/features.php:67, widgets/headline/headline.php:92, widgets/headline/headline.php:163, widgets/headline/headline.php:218, widgets/icon/icon.php:50, widgets/image/image.php:50, widgets/image/image.php:62, widgets/image-grid/image-grid.php:123, widgets/image-grid/image-grid.php:153, widgets/simple-masonry/simple-masonry.php:216, widgets/social-media-buttons/social-media-buttons.php:153, widgets/social-media-buttons/social-media-buttons.php:164, widgets/testimonial/testimonial.php:256
436
- msgid "Right"
437
- msgstr ""
438
-
439
- #: widgets/button/button.php:106, widgets/features/features.php:68, widgets/image-grid/image-grid.php:126, widgets/image-grid/image-grid.php:142
440
- msgid "Bottom"
441
- msgstr ""
442
-
443
- #: widgets/button/button.php:107, widgets/button/button.php:130, widgets/button/button.php:141, widgets/contact/contact.php:402, widgets/contact/contact.php:417, widgets/contact/contact.php:646, widgets/cta/cta.php:102, widgets/features/features.php:69, widgets/headline/headline.php:91, widgets/headline/headline.php:162, widgets/headline/headline.php:217, widgets/icon/icon.php:49, widgets/image/image.php:49, widgets/image/image.php:61, widgets/image-grid/image-grid.php:129, widgets/image-grid/image-grid.php:151, widgets/simple-masonry/simple-masonry.php:215, widgets/social-media-buttons/social-media-buttons.php:152, widgets/social-media-buttons/social-media-buttons.php:163, widgets/testimonial/testimonial.php:255
444
- msgid "Left"
445
- msgstr ""
446
-
447
  #: widgets/button/button.php:115, widgets/social-media-buttons/social-media-buttons.php:92
448
  msgid "Design and layout"
449
  msgstr ""
@@ -460,11 +580,11 @@ msgstr ""
460
  msgid "Align"
461
  msgstr ""
462
 
463
- #: widgets/button/button.php:132, widgets/button/button.php:143, widgets/contact/contact.php:419, widgets/contact/contact.php:648, widgets/headline/headline.php:90, widgets/headline/headline.php:161, widgets/headline/headline.php:216, widgets/icon/icon.php:48, widgets/image/image.php:51, widgets/image/image.php:63, widgets/image-grid/image-grid.php:141, widgets/image-grid/image-grid.php:152, widgets/social-media-buttons/social-media-buttons.php:154, widgets/social-media-buttons/social-media-buttons.php:165
464
  msgid "Center"
465
  msgstr ""
466
 
467
- #: widgets/button/button.php:133, widgets/button/button.php:144, widgets/contact/contact.php:420, widgets/headline/headline.php:93, widgets/headline/headline.php:164, widgets/social-media-buttons/social-media-buttons.php:155, widgets/social-media-buttons/social-media-buttons.php:166
468
  msgid "Justify"
469
  msgstr ""
470
 
@@ -492,10 +612,6 @@ msgstr ""
492
  msgid "Button color"
493
  msgstr ""
494
 
495
- #: widgets/button/button.php:166, widgets/contact/contact.php:441, widgets/contact/contact.php:614, widgets/hero/hero.php:261, widgets/layout-slider/layout-slider.php:208, widgets/testimonial/testimonial.php:227
496
- msgid "Text color"
497
- msgstr ""
498
-
499
  #: widgets/button/button.php:172, widgets/social-media-buttons/social-media-buttons.php:112
500
  msgid "Use hover effects"
501
  msgstr ""
@@ -508,14 +624,6 @@ msgstr ""
508
  msgid "Hover text color"
509
  msgstr ""
510
 
511
- #: widgets/button/button.php:203, widgets/contact/contact.php:382, widgets/contact/contact.php:432, widgets/features/features.php:141, widgets/features/features.php:162, widgets/features/features.php:183, widgets/headline/headline.php:78, widgets/headline/headline.php:149
512
- msgid "Font"
513
- msgstr ""
514
-
515
- #: widgets/button/button.php:209, widgets/contact/contact.php:387, widgets/contact/contact.php:437, widgets/contact/contact.php:619
516
- msgid "Font size"
517
- msgstr ""
518
-
519
  #: widgets/button/button.php:211, widgets/contact/contact.php:291, widgets/contact/contact.php:525, widgets/contact/contact.php:627, widgets/social-media-buttons/social-media-buttons.php:119
520
  msgid "Normal"
521
  msgstr ""
@@ -536,7 +644,7 @@ msgstr ""
536
  msgid "Rounding"
537
  msgstr ""
538
 
539
- #: widgets/button/button.php:223, widgets/contact/contact.php:361, widgets/contact/contact.php:483, widgets/contact/contact.php:594, widgets/contact/contact.php:679, widgets/google-map/google-map.php:158, widgets/headline/headline.php:188, widgets/social-media-buttons/social-media-buttons.php:130
540
  msgid "None"
541
  msgstr ""
542
 
@@ -740,7 +848,7 @@ msgstr ""
740
  msgid "Subject"
741
  msgstr ""
742
 
743
- #: widgets/contact/contact.php:154, widgets/features/features.php:114, widgets/features/features.php:157, widgets/headline/headline.php:43, widgets/headline/headline.php:114, widgets/price-table/price-table.php:111, widgets/taxonomy/taxonomy.php:51, widgets/testimonial/testimonial.php:83
744
  msgid "Text"
745
  msgstr ""
746
 
@@ -852,10 +960,6 @@ msgstr ""
852
  msgid "Audio"
853
  msgstr ""
854
 
855
- #: widgets/contact/contact.php:288, widgets/contact/contact.php:511, widgets/features/features.php:146, widgets/features/features.php:167, widgets/features/features.php:188, widgets/icon/icon.php:41
856
- msgid "Size"
857
- msgstr ""
858
-
859
  #: widgets/contact/contact.php:292
860
  msgid "Compact"
861
  msgstr ""
@@ -896,31 +1000,31 @@ msgstr ""
896
  msgid "Hidden"
897
  msgstr ""
898
 
899
- #: widgets/contact/contact.php:363, widgets/contact/contact.php:485, widgets/contact/contact.php:596, widgets/contact/contact.php:671, widgets/headline/headline.php:190
900
  msgid "Dotted"
901
  msgstr ""
902
 
903
- #: widgets/contact/contact.php:364, widgets/contact/contact.php:486, widgets/contact/contact.php:597, widgets/contact/contact.php:672, widgets/headline/headline.php:191
904
  msgid "Dashed"
905
  msgstr ""
906
 
907
- #: widgets/contact/contact.php:366, widgets/contact/contact.php:488, widgets/contact/contact.php:674, widgets/headline/headline.php:192
908
  msgid "Double"
909
  msgstr ""
910
 
911
- #: widgets/contact/contact.php:367, widgets/contact/contact.php:489, widgets/contact/contact.php:675, widgets/headline/headline.php:193
912
  msgid "Groove"
913
  msgstr ""
914
 
915
- #: widgets/contact/contact.php:368, widgets/contact/contact.php:490, widgets/contact/contact.php:676, widgets/headline/headline.php:194
916
  msgid "Ridge"
917
  msgstr ""
918
 
919
- #: widgets/contact/contact.php:369, widgets/contact/contact.php:491, widgets/contact/contact.php:677, widgets/headline/headline.php:195
920
  msgid "Inset"
921
  msgstr ""
922
 
923
- #: widgets/contact/contact.php:370, widgets/contact/contact.php:492, widgets/contact/contact.php:678, widgets/headline/headline.php:196
924
  msgid "Outset"
925
  msgstr ""
926
 
@@ -928,10 +1032,6 @@ msgstr ""
928
  msgid "Field labels"
929
  msgstr ""
930
 
931
- #: widgets/contact/contact.php:392, widgets/contact/contact.php:516, widgets/contact/contact.php:685, widgets/features/features.php:150, widgets/features/features.php:171, widgets/features/features.php:192, widgets/google-map/google-map.php:368, widgets/headline/headline.php:70, widgets/headline/headline.php:141, widgets/headline/headline.php:201, widgets/icon/icon.php:36, widgets/taxonomy/taxonomy.php:56
932
- msgid "Color"
933
- msgstr ""
934
-
935
  #: widgets/contact/contact.php:397
936
  msgid "Position"
937
  msgstr ""
@@ -948,15 +1048,11 @@ msgstr ""
948
  msgid "Inside"
949
  msgstr ""
950
 
951
- #: widgets/contact/contact.php:445, widgets/social-media-buttons/social-media-buttons.php:171
952
- msgid "Margin"
953
- msgstr ""
954
-
955
  #: widgets/contact/contact.php:453
956
  msgid "Max width"
957
  msgstr ""
958
 
959
- #: widgets/contact/contact.php:458, widgets/google-map/google-map.php:98, widgets/hero/hero.php:165, widgets/layout-slider/layout-slider.php:135, widgets/slider/slider.php:129, base/inc/fields/image-size.class.php:64
960
  msgid "Height"
961
  msgstr ""
962
 
@@ -964,7 +1060,7 @@ msgstr ""
964
  msgid "Text area height"
965
  msgstr ""
966
 
967
- #: widgets/contact/contact.php:466, widgets/hero/hero.php:89, widgets/layout-slider/layout-slider.php:63
968
  msgid "Background"
969
  msgstr ""
970
 
@@ -980,7 +1076,7 @@ msgstr ""
980
  msgid "Field descriptions"
981
  msgstr ""
982
 
983
- #: widgets/contact/contact.php:521, widgets/contact/contact.php:668, widgets/google-map/google-map.php:321, widgets/headline/headline.php:185
984
  msgid "Style"
985
  msgstr ""
986
 
@@ -1157,7 +1253,7 @@ msgstr ""
1157
  msgid "Button align"
1158
  msgstr ""
1159
 
1160
- #: widgets/cta/cta.php:112, widgets/google-map/google-map.php:498, widgets/hero/hero.php:68, widgets/hero/hero.php:80
1161
  msgid "Button"
1162
  msgstr ""
1163
 
@@ -1189,123 +1285,99 @@ msgstr ""
1189
  msgid "SiteOrigin Features"
1190
  msgstr ""
1191
 
1192
- #: widgets/features/features.php:43, widgets/price-table/price-table.php:101
1193
  msgid "Features"
1194
  msgstr ""
1195
 
1196
- #: widgets/features/features.php:44, widgets/price-table/price-table.php:102
1197
  msgid "Feature"
1198
  msgstr ""
1199
 
1200
- #: widgets/features/features.php:56
1201
  msgid "Icon container color"
1202
  msgstr ""
1203
 
1204
- #: widgets/features/features.php:64
1205
  msgid "Icon container position"
1206
  msgstr ""
1207
 
1208
- #: widgets/features/features.php:83, widgets/social-media-buttons/social-media-buttons.php:78
1209
  msgid "Icon title"
1210
  msgstr ""
1211
 
1212
- #: widgets/features/features.php:95
1213
  msgid "Icon image"
1214
  msgstr ""
1215
 
1216
- #: widgets/features/features.php:96
1217
  msgid "Use your own icon image."
1218
  msgstr ""
1219
 
1220
- #: widgets/features/features.php:102
1221
  msgid "Icon image size"
1222
  msgstr ""
1223
 
1224
- #: widgets/features/features.php:109, widgets/image/image.php:69
1225
  msgid "Title text"
1226
  msgstr ""
1227
 
1228
- #: widgets/features/features.php:119
1229
  msgid "More link text"
1230
  msgstr ""
1231
 
1232
- #: widgets/features/features.php:124
1233
  msgid "More link URL"
1234
  msgstr ""
1235
 
1236
- #: widgets/features/features.php:131
1237
  msgid "Font Design"
1238
  msgstr ""
1239
 
1240
- #: widgets/features/features.php:178
1241
  msgid "More Link"
1242
  msgstr ""
1243
 
1244
- #: widgets/features/features.php:201
1245
  msgid "Icon container shape"
1246
  msgstr ""
1247
 
1248
- #: widgets/features/features.php:208
1249
  msgid "Icon container size"
1250
  msgstr ""
1251
 
1252
- #: widgets/features/features.php:214, widgets/social-media-buttons/social-media-buttons.php:117
1253
  msgid "Icon size"
1254
  msgstr ""
1255
 
1256
- #: widgets/features/features.php:220
1257
  msgid "Use icon size for custom icon"
1258
  msgstr ""
1259
 
1260
- #: widgets/features/features.php:226
1261
  msgid "Title text HTML tag"
1262
  msgstr ""
1263
 
1264
- #: widgets/features/features.php:229, widgets/headline/headline.php:59, widgets/headline/headline.php:130
1265
- msgid "H1"
1266
- msgstr ""
1267
-
1268
- #: widgets/features/features.php:230, widgets/headline/headline.php:60, widgets/headline/headline.php:131
1269
- msgid "H2"
1270
- msgstr ""
1271
-
1272
- #: widgets/features/features.php:231, widgets/headline/headline.php:61, widgets/headline/headline.php:132
1273
- msgid "H3"
1274
- msgstr ""
1275
-
1276
- #: widgets/features/features.php:232, widgets/headline/headline.php:62, widgets/headline/headline.php:133
1277
- msgid "H4"
1278
- msgstr ""
1279
-
1280
- #: widgets/features/features.php:233, widgets/headline/headline.php:63, widgets/headline/headline.php:134
1281
- msgid "H5"
1282
- msgstr ""
1283
-
1284
- #: widgets/features/features.php:234, widgets/headline/headline.php:64, widgets/headline/headline.php:135
1285
- msgid "H6"
1286
- msgstr ""
1287
-
1288
- #: widgets/features/features.php:240
1289
  msgid "Features per row"
1290
  msgstr ""
1291
 
1292
- #: widgets/features/features.php:246
1293
  msgid "Responsive layout"
1294
  msgstr ""
1295
 
1296
- #: widgets/features/features.php:252
1297
  msgid "Link feature title to more URL"
1298
  msgstr ""
1299
 
1300
- #: widgets/features/features.php:258
1301
  msgid "Link icon to more URL"
1302
  msgstr ""
1303
 
1304
- #: widgets/features/features.php:264
1305
  msgid "Open more URL in a new window"
1306
  msgstr ""
1307
 
1308
- #: widgets/features/features.php:323
1309
  msgid "This setting controls when the features widget will collapse for mobile devices. The default value is 520px"
1310
  msgstr ""
1311
 
@@ -1776,75 +1848,75 @@ msgstr ""
1776
  msgid "SiteOrigin Headline"
1777
  msgstr ""
1778
 
1779
- #: widgets/headline/headline.php:38, widgets/headline/headline.php:238
1780
- msgid "Headline"
1781
- msgstr ""
1782
-
1783
- #: widgets/headline/headline.php:56, widgets/headline/headline.php:127
1784
- msgid "HTML Tag"
1785
  msgstr ""
1786
 
1787
- #: widgets/headline/headline.php:65, widgets/headline/headline.php:136
1788
- msgid "Paragraph"
1789
  msgstr ""
1790
 
1791
- #: widgets/headline/headline.php:74, widgets/headline/headline.php:145
1792
  msgid "Hover Color"
1793
  msgstr ""
1794
 
1795
- #: widgets/headline/headline.php:83, widgets/headline/headline.php:154
1796
  msgid "Font Size"
1797
  msgstr ""
1798
 
1799
- #: widgets/headline/headline.php:87, widgets/headline/headline.php:158, widgets/headline/headline.php:213, widgets/icon/icon.php:46
1800
  msgid "Alignment"
1801
  msgstr ""
1802
 
1803
- #: widgets/headline/headline.php:98, widgets/headline/headline.php:169
 
 
 
 
1804
  msgid "Line Height"
1805
  msgstr ""
1806
 
1807
- #: widgets/headline/headline.php:102, widgets/headline/headline.php:173, widgets/headline/headline.php:228
1808
  msgid "Top and Bottom Margin"
1809
  msgstr ""
1810
 
1811
- #: widgets/headline/headline.php:109
1812
  msgid "Sub headline"
1813
  msgstr ""
1814
 
1815
- #: widgets/headline/headline.php:180, widgets/headline/headline.php:239
1816
  msgid "Divider"
1817
  msgstr ""
1818
 
1819
- #: widgets/headline/headline.php:206
1820
  msgid "Thickness"
1821
  msgstr ""
1822
 
1823
- #: widgets/headline/headline.php:223
1824
  msgid "Divider Width"
1825
  msgstr ""
1826
 
1827
- #: widgets/headline/headline.php:236
1828
  msgid "Element Order"
1829
  msgstr ""
1830
 
1831
- #: widgets/headline/headline.php:240
1832
  msgid "Sub Headline"
1833
  msgstr ""
1834
 
1835
- #: widgets/headline/headline.php:247, widgets/hero/hero.php:227
1836
  msgid "Use FitText"
1837
  msgstr ""
1838
 
1839
- #: widgets/headline/headline.php:248, widgets/hero/hero.php:228
1840
  msgid "Dynamically adjust your heading font size based on screen size."
1841
  msgstr ""
1842
 
1843
- #: widgets/headline/headline.php:261
1844
  msgid "FitText Compressor Strength"
1845
  msgstr ""
1846
 
1847
- #: widgets/headline/headline.php:262, widgets/hero/hero.php:242
1848
  msgid "The higher the value, the more your headings will be scaled down. Values above 1 are allowed."
1849
  msgstr ""
1850
 
@@ -1864,127 +1936,127 @@ msgstr ""
1864
  msgid "Frame"
1865
  msgstr ""
1866
 
1867
- #: widgets/hero/hero.php:67, widgets/taxonomy/taxonomy.php:50
1868
  msgid "Buttons"
1869
  msgstr ""
1870
 
1871
- #: widgets/hero/hero.php:69
1872
  msgid "Add [buttons] shortcode to the content to insert these buttons."
1873
  msgstr ""
1874
 
1875
- #: widgets/hero/hero.php:93, widgets/layout-slider/layout-slider.php:67, widgets/slider/slider.php:68
1876
  msgid "Background image"
1877
  msgstr ""
1878
 
1879
- #: widgets/hero/hero.php:100, widgets/image/image.php:39, widgets/image-grid/image-grid.php:98, widgets/testimonial/testimonial.php:132, widgets/testimonial/testimonial.php:161, widgets/testimonial/testimonial.php:203
1880
  msgid "Image size"
1881
  msgstr ""
1882
 
1883
- #: widgets/hero/hero.php:105, widgets/layout-slider/layout-slider.php:74, widgets/slider/slider.php:79
1884
  msgid "Background image type"
1885
  msgstr ""
1886
 
1887
- #: widgets/hero/hero.php:107, widgets/slider/slider.php:81
1888
  msgid "Cover"
1889
  msgstr ""
1890
 
1891
- #: widgets/hero/hero.php:113, widgets/layout-slider/layout-slider.php:83
1892
  msgid "Background image opacity"
1893
  msgstr ""
1894
 
1895
- #: widgets/hero/hero.php:133, widgets/layout-slider/layout-slider.php:103
1896
  msgid "Open URL in a new window"
1897
  msgstr ""
1898
 
1899
- #: widgets/hero/hero.php:138, widgets/layout-slider/layout-slider.php:108, widgets/slider/slider.php:55
1900
  msgid "Video"
1901
  msgstr ""
1902
 
1903
- #: widgets/hero/hero.php:139, widgets/layout-slider/layout-slider.php:109, widgets/slider/slider.php:56
1904
  msgid "Background videos"
1905
  msgstr ""
1906
 
1907
- #: widgets/hero/hero.php:154, widgets/layout-slider/layout-slider.php:124
1908
  msgid "Slider Controls"
1909
  msgstr ""
1910
 
1911
- #: widgets/hero/hero.php:160, widgets/layout-slider/layout-slider.php:130
1912
  msgid "Design and Layout"
1913
  msgstr ""
1914
 
1915
- #: widgets/hero/hero.php:171, widgets/layout-slider/layout-slider.php:140, widgets/slider/slider.php:134
1916
  msgid "Responsive Height"
1917
  msgstr ""
1918
 
1919
- #: widgets/hero/hero.php:177, widgets/layout-slider/layout-slider.php:145
1920
  msgid "Vertically center align slide contents"
1921
  msgstr ""
1922
 
1923
- #: widgets/hero/hero.php:178, widgets/layout-slider/layout-slider.php:146
1924
  msgid "For perfect centering, consider setting the Extra top padding setting to 0 when enabling this setting."
1925
  msgstr ""
1926
 
1927
- #: widgets/hero/hero.php:183, widgets/layout-slider/layout-slider.php:151
1928
  msgid "Top and bottom padding"
1929
  msgstr ""
1930
 
1931
- #: widgets/hero/hero.php:189, widgets/layout-slider/layout-slider.php:157
1932
  msgid "Extra top padding"
1933
  msgstr ""
1934
 
1935
- #: widgets/hero/hero.php:190, widgets/layout-slider/layout-slider.php:158
1936
  msgid "Additional padding added to the top of the slider"
1937
  msgstr ""
1938
 
1939
- #: widgets/hero/hero.php:196, widgets/layout-slider/layout-slider.php:164
1940
  msgid "Side padding"
1941
  msgstr ""
1942
 
1943
- #: widgets/hero/hero.php:202, widgets/layout-slider/layout-slider.php:170
1944
  msgid "Maximum container width"
1945
  msgstr ""
1946
 
1947
- #: widgets/hero/hero.php:208
1948
  msgid "Heading font"
1949
  msgstr ""
1950
 
1951
- #: widgets/hero/hero.php:214, widgets/layout-slider/layout-slider.php:176
1952
  msgid "Heading color"
1953
  msgstr ""
1954
 
1955
- #: widgets/hero/hero.php:220
1956
  msgid "Heading size"
1957
  msgstr ""
1958
 
1959
- #: widgets/hero/hero.php:221
1960
  msgid "Enter the h1 font size. h2 - h6 will be proportionally sized based on this value."
1961
  msgstr ""
1962
 
1963
- #: widgets/hero/hero.php:241
1964
  msgid "FitText compressor strength"
1965
  msgstr ""
1966
 
1967
- #: widgets/hero/hero.php:253, widgets/layout-slider/layout-slider.php:190
1968
  msgid "Heading shadow intensity"
1969
  msgstr ""
1970
 
1971
- #: widgets/hero/hero.php:266, widgets/layout-slider/layout-slider.php:200
1972
  msgid "Text size"
1973
  msgstr ""
1974
 
1975
- #: widgets/hero/hero.php:271
1976
  msgid "Text font"
1977
  msgstr ""
1978
 
1979
- #: widgets/hero/hero.php:276
1980
  msgid "Text shadow intensity"
1981
  msgstr ""
1982
 
1983
- #: widgets/hero/hero.php:285
1984
  msgid "Link color"
1985
  msgstr ""
1986
 
1987
- #: widgets/hero/hero.php:290
1988
  msgid "Link hover color"
1989
  msgstr ""
1990
 
@@ -2032,7 +2104,7 @@ msgstr ""
2032
  msgid "Link title to URL"
2033
  msgstr ""
2034
 
2035
- #: widgets/image/image.php:102, widgets/image-grid/image-grid.php:88, widgets/slider/slider.php:108
2036
  msgid "Open in new window"
2037
  msgstr ""
2038
 
@@ -2116,162 +2188,118 @@ msgstr ""
2116
  msgid "Slider frames"
2117
  msgstr ""
2118
 
2119
- #: widgets/layout-slider/layout-slider.php:77, widgets/slider/slider.php:82
2120
  msgid "Tile"
2121
  msgstr ""
2122
 
2123
- #: widgets/layout-slider/layout-slider.php:225
2124
  msgid "This widget requires: "
2125
  msgstr ""
2126
 
2127
- #: widgets/layout-slider/layout-slider.php:226, base/inc/fields/builder.class.php:43
2128
  msgid "SiteOrigin Page Builder"
2129
  msgstr ""
2130
 
2131
- #: widgets/layout-slider/layout-slider.php:297
2132
  msgid "Show slide %d"
2133
  msgstr ""
2134
 
2135
- #: widgets/layout-slider/layout-slider.php:310
2136
  msgid "%s slide"
2137
  msgstr ""
2138
 
2139
- #: widgets/layout-slider/layout-slider.php:312
2140
  msgid "Slide control shortcode error: invalid slide value."
2141
  msgstr ""
2142
 
2143
- #: widgets/layout-slider/layout-slider.php:341
2144
  msgid "This widget requires Page Builder."
2145
  msgstr ""
2146
 
2147
- #: widgets/post-carousel/post-carousel.php:4, widgets/post-carousel/post-carousel.php:93
2148
  msgid "Gives you a widget to display your posts as a carousel."
2149
  msgstr ""
2150
 
2151
- #: widgets/post-carousel/post-carousel.php:91
2152
  msgid "SiteOrigin Post Carousel"
2153
  msgstr ""
2154
 
2155
- #: widgets/post-carousel/post-carousel.php:165
2156
  msgid "Default Thumbnail"
2157
  msgstr ""
2158
 
2159
- #: widgets/post-carousel/post-carousel.php:166
2160
  msgid "Choose Thumbnail"
2161
  msgstr ""
2162
 
2163
- #: widgets/post-carousel/post-carousel.php:167
2164
  msgid "Set Thumbnail"
2165
  msgstr ""
2166
 
2167
- #: widgets/post-carousel/post-carousel.php:173
2168
  msgid "Featured Image size"
2169
  msgstr ""
2170
 
2171
- #: widgets/post-carousel/post-carousel.php:179
2172
  msgid "Link target"
2173
  msgstr ""
2174
 
2175
- #: widgets/post-carousel/post-carousel.php:180
2176
  msgid "Choose where to open each carousel item."
2177
  msgstr ""
2178
 
2179
- #: widgets/post-carousel/post-carousel.php:182
2180
  msgid "Same window "
2181
  msgstr ""
2182
 
2183
- #: widgets/post-carousel/post-carousel.php:183
2184
  msgid "New window "
2185
  msgstr ""
2186
 
2187
- #: widgets/post-carousel/post-carousel.php:188
2188
  msgid "Loop posts"
2189
  msgstr ""
2190
 
2191
- #: widgets/post-carousel/post-carousel.php:189
2192
  msgid "Automatically return to the first post after the last post."
2193
  msgstr ""
2194
 
2195
- #: widgets/post-carousel/post-carousel.php:195
2196
  msgid "Posts query"
2197
  msgstr ""
2198
 
2199
- #: widgets/post-carousel/post-carousel.php:199
2200
  msgid "Posts per load"
2201
  msgstr ""
2202
 
2203
- #: widgets/post-carousel/post-carousel.php:200
2204
  msgid "Set the number of posts preloaded in the background when clicking next. The default is 10."
2205
  msgstr ""
2206
 
2207
- #: widgets/post-carousel/post-carousel.php:212
2208
  msgid "Thumbnail overlay hover color"
2209
  msgstr ""
2210
 
2211
- #: widgets/post-carousel/post-carousel.php:217
2212
  msgid "Thumbnail overlay hover opacity"
2213
  msgstr ""
2214
 
2215
- #: widgets/post-carousel/post-carousel.php:225
2216
  msgid "Navigation arrow color"
2217
  msgstr ""
2218
 
2219
- #: widgets/post-carousel/post-carousel.php:230
2220
  msgid "Navigation arrow hover color"
2221
  msgstr ""
2222
 
2223
- #: widgets/post-carousel/post-carousel.php:234
2224
  msgid "Navigation background"
2225
  msgstr ""
2226
 
2227
- #: widgets/post-carousel/post-carousel.php:239
2228
  msgid "Navigation hover background"
2229
  msgstr ""
2230
 
2231
- #: widgets/post-carousel/post-carousel.php:246, widgets/testimonial/testimonial.php:115
2232
- msgid "Responsive"
2233
- msgstr ""
2234
-
2235
- #: widgets/post-carousel/post-carousel.php:251
2236
- msgid "Desktop"
2237
- msgstr ""
2238
-
2239
- #: widgets/post-carousel/post-carousel.php:256, widgets/post-carousel/post-carousel.php:279, widgets/post-carousel/post-carousel.php:297, widgets/post-carousel/post-carousel.php:317
2240
- msgid "Slides to scroll"
2241
- msgstr ""
2242
-
2243
- #: widgets/post-carousel/post-carousel.php:257
2244
- msgid "Set the number of slides to scroll per navigation click or swipe on desktop."
2245
- msgstr ""
2246
-
2247
- #: widgets/post-carousel/post-carousel.php:264, widgets/testimonial/testimonial.php:120
2248
- msgid "Tablet"
2249
- msgstr ""
2250
-
2251
- #: widgets/post-carousel/post-carousel.php:269
2252
- msgid "Landscape"
2253
- msgstr ""
2254
-
2255
- #: widgets/post-carousel/post-carousel.php:274, widgets/post-carousel/post-carousel.php:292, widgets/post-carousel/post-carousel.php:312
2256
- msgid "Breakpoint"
2257
- msgstr ""
2258
-
2259
- #: widgets/post-carousel/post-carousel.php:280, widgets/post-carousel/post-carousel.php:298
2260
- msgid "Set the number of slides to scroll per navigation click or swipe on tablet devices."
2261
- msgstr ""
2262
-
2263
- #: widgets/post-carousel/post-carousel.php:287
2264
- msgid "Portrait"
2265
- msgstr ""
2266
-
2267
- #: widgets/post-carousel/post-carousel.php:307
2268
- msgid "Mobile"
2269
- msgstr ""
2270
-
2271
- #: widgets/post-carousel/post-carousel.php:318
2272
- msgid " Set the number of slides to scroll per navigation click or swipe on mobile devices."
2273
- msgstr ""
2274
-
2275
  #: widgets/price-table/price-table.php:4, widgets/price-table/price-table.php:17
2276
  msgid "A powerful yet simple price table widget for your sidebars or Page Builder pages."
2277
  msgstr ""
@@ -2444,19 +2472,19 @@ msgstr ""
2444
  msgid "SiteOrigin Slider"
2445
  msgstr ""
2446
 
2447
- #: widgets/slider/slider.php:74
2448
  msgid "Background Color"
2449
  msgstr ""
2450
 
2451
- #: widgets/slider/slider.php:90
2452
  msgid "Foreground image"
2453
  msgstr ""
2454
 
2455
- #: widgets/slider/slider.php:115
2456
  msgid "Controls"
2457
  msgstr ""
2458
 
2459
- #: widgets/slider/slider.php:336
2460
  msgid "Add a Lightbox to your image slides with %sSiteOrigin Premium%s"
2461
  msgstr ""
2462
 
@@ -2592,6 +2620,14 @@ msgstr ""
2592
  msgid "Testimonials per row"
2593
  msgstr ""
2594
 
 
 
 
 
 
 
 
 
2595
  #: widgets/testimonial/testimonial.php:140, widgets/testimonial/testimonial.php:169
2596
  msgid "Resolution"
2597
  msgstr ""
@@ -2708,7 +2744,7 @@ msgstr ""
2708
  msgid "Video Playback"
2709
  msgstr ""
2710
 
2711
- #: widgets/video/video.php:101, base/inc/widgets/base-slider.class.php:57, base/inc/widgets/base-slider.class.php:173
2712
  msgid "Autoplay"
2713
  msgstr ""
2714
 
@@ -2740,6 +2776,10 @@ msgstr ""
2740
  msgid "If the external host supports it."
2741
  msgstr ""
2742
 
 
 
 
 
2743
  #: base/inc/fields/autocomplete.class.php:46
2744
  msgid "Search"
2745
  msgstr ""
@@ -3029,18 +3069,14 @@ msgstr ""
3029
  msgid "Additional query arguments. See <a href=\"https://developer.wordpress.org/reference/functions/query_posts/\" target=\"_blank\" rel=\"noopener noreferrer\">query_posts</a>."
3030
  msgstr ""
3031
 
3032
- #: base/inc/fields/presets.class.php:18
3033
  msgid "Warning! This will override some or all of the current form values."
3034
  msgstr ""
3035
 
3036
- #: base/inc/fields/presets.class.php:48
3037
  msgid "Undo"
3038
  msgstr ""
3039
 
3040
- #: base/inc/fields/repeater.class.php:54
3041
- msgid "Item"
3042
- msgstr ""
3043
-
3044
  #: base/inc/fields/repeater.class.php:93
3045
  msgid "Add"
3046
  msgstr ""
@@ -3053,26 +3089,86 @@ msgstr ""
3053
  msgid "%s is not a SiteOrigin Widget"
3054
  msgstr ""
3055
 
3056
- #: base/inc/widgets/base-slider.class.php:58
3057
- msgid "Change slides automatically without user interaction."
3058
  msgstr ""
3059
 
3060
- #: base/inc/widgets/base-slider.class.php:71
3061
- msgid "Autoplay pause on hover"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3062
  msgstr ""
3063
 
3064
- #: base/inc/widgets/base-slider.class.php:80
 
 
 
 
 
 
 
 
 
 
 
 
3065
  msgid "Animation speed"
3066
  msgstr ""
3067
 
3068
- #: base/inc/widgets/base-slider.class.php:81
3069
- msgid "Animation speed in milliseconds."
3070
  msgstr ""
3071
 
3072
- #: base/inc/widgets/base-slider.class.php:87
3073
  msgid "Timeout"
3074
  msgstr ""
3075
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3076
  #: base/inc/widgets/base-slider.class.php:88
3077
  msgid "How long each frame is displayed for in milliseconds."
3078
  msgstr ""
@@ -3193,22 +3289,6 @@ msgstr ""
3193
  msgid "Go to Google Maps Widget settings"
3194
  msgstr ""
3195
 
3196
- #: widgets/post-carousel/tpl/base.php:18, widgets/post-carousel/tpl/base.php:28
3197
- msgid "Next"
3198
- msgstr ""
3199
-
3200
- #: widgets/post-carousel/tpl/base.php:18, widgets/post-carousel/tpl/base.php:28
3201
- msgid "Next Posts"
3202
- msgstr ""
3203
-
3204
- #: widgets/post-carousel/tpl/base.php:19, widgets/post-carousel/tpl/base.php:26
3205
- msgid "Previous"
3206
- msgstr ""
3207
-
3208
- #: widgets/post-carousel/tpl/base.php:19, widgets/post-carousel/tpl/base.php:26
3209
- msgid "Previous Posts"
3210
- msgstr ""
3211
-
3212
  #: widgets/social-media-buttons/data/networks.php:5
3213
  msgid "Facebook"
3214
  msgstr ""
21
  msgstr ""
22
 
23
  #: so-widgets-bundle.php:4
24
+ msgid "A highly customizable collection of widgets, ready to be used anywhere, neatly bundled into a single plugin."
25
  msgstr ""
26
 
27
+ #: so-widgets-bundle.php:8, widgets/accordion/accordion.php:5, widgets/anything-carousel/anything-carousel.php:5, widgets/button/button.php:5, widgets/contact/contact.php:5, widgets/cta/cta.php:5, widgets/editor/editor.php:5, widgets/features/features.php:5, widgets/google-map/google-map.php:5, widgets/headline/headline.php:5, widgets/hero/hero.php:5, widgets/icon/icon.php:5, widgets/image/image.php:5, widgets/image-grid/image-grid.php:5, widgets/layout-slider/layout-slider.php:5, widgets/post-carousel/post-carousel.php:5, widgets/price-table/price-table.php:5, widgets/simple-masonry/simple-masonry.php:5, widgets/slider/slider.php:5, widgets/social-media-buttons/social-media-buttons.php:5, widgets/tabs/tabs.php:5, widgets/taxonomy/taxonomy.php:5, widgets/testimonial/testimonial.php:5, widgets/video/video.php:5
28
  msgid "SiteOrigin"
29
  msgstr ""
30
 
31
+ #: so-widgets-bundle.php:9, widgets/accordion/accordion.php:6, widgets/anything-carousel/anything-carousel.php:6, widgets/button/button.php:6, widgets/contact/contact.php:6, widgets/cta/cta.php:6, widgets/editor/editor.php:6, widgets/features/features.php:6, widgets/google-map/google-map.php:6, widgets/headline/headline.php:6, widgets/hero/hero.php:6, widgets/icon/icon.php:6, widgets/image/image.php:6, widgets/image-grid/image-grid.php:6, widgets/layout-slider/layout-slider.php:6, widgets/post-carousel/post-carousel.php:6, widgets/price-table/price-table.php:6, widgets/simple-masonry/simple-masonry.php:6, widgets/slider/slider.php:6, widgets/social-media-buttons/social-media-buttons.php:6, widgets/tabs/tabs.php:6, widgets/taxonomy/taxonomy.php:6, widgets/testimonial/testimonial.php:6, widgets/video/video.php:6
32
  msgid "https://siteorigin.com"
33
  msgstr ""
34
 
72
  msgid "Support"
73
  msgstr ""
74
 
75
+ #: so-widgets-bundle.php:776
76
+ msgid "Addons"
77
+ msgstr ""
78
+
79
+ #: base/siteorigin-widget.class.php:509
80
  msgid "Preview"
81
  msgstr ""
82
 
83
+ #: base/siteorigin-widget.class.php:514
84
  msgid "Help"
85
  msgstr ""
86
 
87
+ #: base/siteorigin-widget.class.php:580
88
  msgid "This widget has scripts and styles that need to be loaded before you can use it. Please save and reload your current page."
89
  msgstr ""
90
 
91
+ #: base/siteorigin-widget.class.php:581
92
  msgid "You will only need to do this once."
93
  msgstr ""
94
 
95
+ #: base/siteorigin-widget.class.php:608
96
  msgid "Are you sure?"
97
  msgstr ""
98
 
99
+ #: base/siteorigin-widget.class.php:610
100
  msgid "There is a newer version of this widget's content available."
101
  msgstr ""
102
 
103
+ #: base/siteorigin-widget.class.php:611, base/siteorigin-widget.class.php:615
104
  msgid "Restore"
105
  msgstr ""
106
 
107
+ #: base/siteorigin-widget.class.php:612
108
  msgid "Dismiss"
109
  msgstr ""
110
 
111
+ #: base/siteorigin-widget.class.php:614
112
  msgid "Clicking %s will replace the current widget contents. You can revert by refreshing the page before updating."
113
  msgstr ""
114
 
115
+ #: base/siteorigin-widget.class.php:665, base/inc/actions.php:53
116
  msgid "Widget Preview"
117
  msgstr ""
118
 
272
  msgid "Regular"
273
  msgstr ""
274
 
275
+ #: icons/fontawesome/filter.php:1472, widgets/contact/contact.php:365, widgets/contact/contact.php:487, widgets/contact/contact.php:595, widgets/contact/contact.php:673, widgets/headline/headline.php:220
276
  msgid "Solid"
277
  msgstr ""
278
 
296
  msgid "When opening the panel, scroll the user to the top of the panel."
297
  msgstr ""
298
 
299
+ #: widgets/accordion/accordion.php:71, widgets/accordion/accordion.php:84, widgets/anything-carousel/anything-carousel.php:61, widgets/anything-carousel/anything-carousel.php:77, widgets/contact/contact.php:48, widgets/cta/cta.php:64, widgets/editor/editor.php:35, widgets/features/features.php:137, widgets/icon/icon.php:68, widgets/post-carousel/post-carousel.php:160, 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
 
304
  msgid "Panels"
305
  msgstr ""
306
 
307
+ #: widgets/accordion/accordion.php:88, widgets/anything-carousel/anything-carousel.php:81, widgets/hero/hero.php:73, widgets/layout-slider/layout-slider.php:67, widgets/tabs/tabs.php:88
308
  msgid "Content"
309
  msgstr ""
310
 
328
  msgid "Closed"
329
  msgstr ""
330
 
331
+ #: widgets/accordion/accordion.php:110, widgets/anything-carousel/anything-carousel.php:88, widgets/contact/contact.php:328, widgets/cta/cta.php:74, widgets/post-carousel/post-carousel.php:208, widgets/slider/slider.php:134, widgets/tabs/tabs.php:100, widgets/testimonial/testimonial.php:184
332
  msgid "Design"
333
  msgstr ""
334
 
336
  msgid "Headings"
337
  msgstr ""
338
 
339
+ #: widgets/accordion/accordion.php:120, widgets/accordion/accordion.php:158, widgets/contact/contact.php:338, widgets/contact/contact.php:576, widgets/cta/cta.php:78, widgets/hero/hero.php:133, widgets/layout-slider/layout-slider.php:101, widgets/social-media-buttons/social-media-buttons.php:86, widgets/tabs/tabs.php:110, widgets/tabs/tabs.php:130, widgets/tabs/tabs.php:174
340
  msgid "Background color"
341
  msgstr ""
342
 
368
  msgid "Font color"
369
  msgstr ""
370
 
371
+ #: widgets/accordion/accordion.php:175, widgets/anything-carousel/anything-carousel.php:124
372
  msgid "Bottom margin"
373
  msgstr ""
374
 
376
  msgid "Get more customization options and the ability to use widgets and layouts as your accordion content with %sSiteOrigin Premium%s"
377
  msgstr ""
378
 
379
+ #: widgets/anything-carousel/anything-carousel.php:4, widgets/anything-carousel/anything-carousel.php:20
380
+ msgid "Display images, text, or any other content in a carousel."
381
+ msgstr ""
382
+
383
+ #: widgets/anything-carousel/anything-carousel.php:18
384
+ msgid "SiteOrigin Anything Carousel"
385
+ msgstr ""
386
+
387
+ #: widgets/anything-carousel/anything-carousel.php:46
388
+ msgid "Slides to show "
389
+ msgstr ""
390
+
391
+ #: widgets/anything-carousel/anything-carousel.php:47
392
+ msgid "The number of slides to show on %s."
393
+ msgstr ""
394
+
395
+ #: widgets/anything-carousel/anything-carousel.php:66
396
+ msgid "Items"
397
+ msgstr ""
398
+
399
+ #: widgets/anything-carousel/anything-carousel.php:67, widgets/anything-carousel/anything-carousel.php:131, base/inc/fields/repeater.class.php:54
400
+ msgid "Item"
401
+ msgstr ""
402
+
403
+ #: widgets/anything-carousel/anything-carousel.php:93
404
+ msgid "Item title"
405
+ msgstr ""
406
+
407
+ #: widgets/anything-carousel/anything-carousel.php:98, widgets/headline/headline.php:67, widgets/headline/headline.php:148
408
+ msgid "HTML Tag"
409
+ msgstr ""
410
+
411
+ #: widgets/anything-carousel/anything-carousel.php:101, widgets/features/features.php:230, widgets/headline/headline.php:70, widgets/headline/headline.php:151
412
+ msgid "H1"
413
+ msgstr ""
414
+
415
+ #: widgets/anything-carousel/anything-carousel.php:102, widgets/features/features.php:231, widgets/headline/headline.php:71, widgets/headline/headline.php:152
416
+ msgid "H2"
417
+ msgstr ""
418
+
419
+ #: widgets/anything-carousel/anything-carousel.php:103, widgets/features/features.php:232, widgets/headline/headline.php:72, widgets/headline/headline.php:153
420
+ msgid "H3"
421
+ msgstr ""
422
+
423
+ #: widgets/anything-carousel/anything-carousel.php:104, widgets/features/features.php:233, widgets/headline/headline.php:73, widgets/headline/headline.php:154
424
+ msgid "H4"
425
+ msgstr ""
426
+
427
+ #: widgets/anything-carousel/anything-carousel.php:105, widgets/features/features.php:234, widgets/headline/headline.php:74, widgets/headline/headline.php:155
428
+ msgid "H5"
429
+ msgstr ""
430
+
431
+ #: widgets/anything-carousel/anything-carousel.php:106, widgets/features/features.php:235, widgets/headline/headline.php:75, widgets/headline/headline.php:156
432
+ msgid "H6"
433
+ msgstr ""
434
+
435
+ #: widgets/anything-carousel/anything-carousel.php:107, widgets/headline/headline.php:76, widgets/headline/headline.php:157
436
+ msgid "Paragraph"
437
+ msgstr ""
438
+
439
+ #: widgets/anything-carousel/anything-carousel.php:112, widgets/anything-carousel/anything-carousel.php:136, widgets/button/button.php:203, widgets/contact/contact.php:382, widgets/contact/contact.php:432, widgets/features/features.php:142, widgets/features/features.php:163, widgets/features/features.php:184, widgets/headline/headline.php:89, widgets/headline/headline.php:170
440
+ msgid "Font"
441
+ msgstr ""
442
+
443
+ #: widgets/anything-carousel/anything-carousel.php:116, widgets/contact/contact.php:288, widgets/contact/contact.php:511, widgets/features/features.php:147, widgets/features/features.php:168, widgets/features/features.php:189, widgets/icon/icon.php:41
444
+ msgid "Size"
445
+ msgstr ""
446
+
447
+ #: widgets/anything-carousel/anything-carousel.php:120, widgets/button/button.php:166, widgets/contact/contact.php:441, widgets/contact/contact.php:614, widgets/hero/hero.php:280, widgets/layout-slider/layout-slider.php:225, widgets/testimonial/testimonial.php:227
448
+ msgid "Text color"
449
+ msgstr ""
450
+
451
+ #: widgets/anything-carousel/anything-carousel.php:140, widgets/button/button.php:209, widgets/contact/contact.php:387, widgets/contact/contact.php:437, widgets/contact/contact.php:619
452
+ msgid "Font size"
453
+ msgstr ""
454
+
455
+ #: widgets/anything-carousel/anything-carousel.php:144, widgets/contact/contact.php:392, widgets/contact/contact.php:516, widgets/contact/contact.php:685, widgets/features/features.php:151, widgets/features/features.php:172, widgets/features/features.php:193, widgets/google-map/google-map.php:368, widgets/headline/headline.php:81, widgets/headline/headline.php:162, widgets/headline/headline.php:232, widgets/icon/icon.php:36, widgets/taxonomy/taxonomy.php:56
456
+ msgid "Color"
457
+ msgstr ""
458
+
459
+ #: widgets/anything-carousel/anything-carousel.php:148, widgets/contact/contact.php:445, widgets/social-media-buttons/social-media-buttons.php:171
460
+ msgid "Margin"
461
+ msgstr ""
462
+
463
+ #: widgets/anything-carousel/anything-carousel.php:153, widgets/button/button.php:104, widgets/features/features.php:67, widgets/image-grid/image-grid.php:120, widgets/image-grid/image-grid.php:140
464
+ msgid "Top"
465
+ msgstr ""
466
+
467
+ #: widgets/anything-carousel/anything-carousel.php:157, widgets/button/button.php:105, widgets/button/button.php:131, widgets/button/button.php:142, widgets/contact/contact.php:403, widgets/contact/contact.php:418, widgets/contact/contact.php:647, widgets/cta/cta.php:103, widgets/features/features.php:68, widgets/headline/headline.php:103, widgets/headline/headline.php:113, widgets/headline/headline.php:184, widgets/headline/headline.php:194, widgets/headline/headline.php:249, widgets/headline/headline.php:258, widgets/icon/icon.php:50, widgets/image/image.php:50, widgets/image/image.php:62, widgets/image-grid/image-grid.php:123, widgets/image-grid/image-grid.php:153, widgets/simple-masonry/simple-masonry.php:216, widgets/social-media-buttons/social-media-buttons.php:153, widgets/social-media-buttons/social-media-buttons.php:164, widgets/testimonial/testimonial.php:256
468
+ msgid "Right"
469
+ msgstr ""
470
+
471
+ #: widgets/anything-carousel/anything-carousel.php:161, widgets/button/button.php:106, widgets/features/features.php:69, widgets/image-grid/image-grid.php:126, widgets/image-grid/image-grid.php:142
472
+ msgid "Bottom"
473
+ msgstr ""
474
+
475
+ #: widgets/anything-carousel/anything-carousel.php:165, widgets/button/button.php:107, widgets/button/button.php:130, widgets/button/button.php:141, widgets/contact/contact.php:402, widgets/contact/contact.php:417, widgets/contact/contact.php:646, widgets/cta/cta.php:102, widgets/features/features.php:70, widgets/headline/headline.php:102, widgets/headline/headline.php:112, widgets/headline/headline.php:183, widgets/headline/headline.php:193, widgets/headline/headline.php:248, widgets/headline/headline.php:257, widgets/icon/icon.php:49, widgets/image/image.php:49, widgets/image/image.php:61, widgets/image-grid/image-grid.php:129, widgets/image-grid/image-grid.php:151, widgets/simple-masonry/simple-masonry.php:215, widgets/social-media-buttons/social-media-buttons.php:152, widgets/social-media-buttons/social-media-buttons.php:163, widgets/testimonial/testimonial.php:255
476
+ msgid "Left"
477
+ msgstr ""
478
+
479
+ #: widgets/anything-carousel/anything-carousel.php:174
480
+ msgid "Navigation"
481
+ msgstr ""
482
+
483
+ #: widgets/anything-carousel/anything-carousel.php:179
484
+ msgid "Arrows color"
485
+ msgstr ""
486
+
487
+ #: widgets/anything-carousel/anything-carousel.php:184
488
+ msgid "Arrows hover color"
489
+ msgstr ""
490
+
491
+ #: widgets/anything-carousel/anything-carousel.php:189
492
+ msgid "Arrows margin"
493
+ msgstr ""
494
+
495
+ #: widgets/anything-carousel/anything-carousel.php:190
496
+ msgid "The space between the navigation arrows and items."
497
+ msgstr ""
498
+
499
+ #: widgets/anything-carousel/anything-carousel.php:194
500
+ msgid "Dots color"
501
+ msgstr ""
502
+
503
+ #: widgets/anything-carousel/anything-carousel.php:199
504
+ msgid "Dots selected and hover color"
505
+ msgstr ""
506
+
507
+ #: widgets/anything-carousel/anything-carousel.php:283
508
+ msgid "Add widgets and layouts to your carousel items with %sSiteOrigin Premium%s."
509
+ msgstr ""
510
+
511
  #: widgets/button/button.php:4, widgets/button/button.php:17
512
  msgid "A powerful yet simple button widget for your sidebars or Page Builder pages."
513
  msgstr ""
516
  msgid "SiteOrigin Button"
517
  msgstr ""
518
 
519
+ #: widgets/button/button.php:33, widgets/contact/contact.php:801, widgets/features/features.php:322, widgets/headline/headline.php:38, widgets/social-media-buttons/social-media-buttons.php:33, base/inc/widgets/base-slider.class.php:194
520
  msgid "Responsive Breakpoint"
521
  msgstr ""
522
 
528
  msgid "Button text"
529
  msgstr ""
530
 
531
+ #: widgets/button/button.php:62, widgets/google-map/google-map.php:103, widgets/headline/headline.php:58, widgets/headline/headline.php:139, widgets/hero/hero.php:139, widgets/icon/icon.php:57, widgets/image/image.php:90, widgets/layout-slider/layout-slider.php:107, widgets/simple-masonry/simple-masonry.php:89, widgets/slider/slider.php:116
532
  msgid "Destination URL"
533
  msgstr ""
534
 
535
+ #: widgets/button/button.php:69, widgets/google-map/google-map.php:114, widgets/headline/headline.php:63, widgets/headline/headline.php:144, widgets/icon/icon.php:63, widgets/simple-masonry/simple-masonry.php:94, widgets/social-media-buttons/social-media-buttons.php:97, widgets/taxonomy/taxonomy.php:65, widgets/testimonial/testimonial.php:94
536
  msgid "Open in a new window"
537
  msgstr ""
538
 
544
  msgid "The Destination URL will be downloaded when a user clicks on the button."
545
  msgstr ""
546
 
547
+ #: widgets/button/button.php:81, widgets/button/button.php:85, widgets/features/features.php:79, widgets/icon/icon.php:31, widgets/price-table/price-table.php:119
548
  msgid "Icon"
549
  msgstr ""
550
 
551
+ #: widgets/button/button.php:90, widgets/features/features.php:89, widgets/price-table/price-table.php:123, widgets/social-media-buttons/social-media-buttons.php:82
552
  msgid "Icon color"
553
  msgstr ""
554
 
564
  msgid "Icon Placement"
565
  msgstr ""
566
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
567
  #: widgets/button/button.php:115, widgets/social-media-buttons/social-media-buttons.php:92
568
  msgid "Design and layout"
569
  msgstr ""
580
  msgid "Align"
581
  msgstr ""
582
 
583
+ #: widgets/button/button.php:132, widgets/button/button.php:143, widgets/contact/contact.php:419, widgets/contact/contact.php:648, widgets/headline/headline.php:101, widgets/headline/headline.php:111, widgets/headline/headline.php:182, widgets/headline/headline.php:192, widgets/headline/headline.php:247, widgets/headline/headline.php:256, widgets/icon/icon.php:48, widgets/image/image.php:51, widgets/image/image.php:63, widgets/image-grid/image-grid.php:141, widgets/image-grid/image-grid.php:152, widgets/social-media-buttons/social-media-buttons.php:154, widgets/social-media-buttons/social-media-buttons.php:165
584
  msgid "Center"
585
  msgstr ""
586
 
587
+ #: widgets/button/button.php:133, widgets/button/button.php:144, widgets/contact/contact.php:420, widgets/headline/headline.php:104, widgets/headline/headline.php:114, widgets/headline/headline.php:185, widgets/headline/headline.php:195, widgets/social-media-buttons/social-media-buttons.php:155, widgets/social-media-buttons/social-media-buttons.php:166
588
  msgid "Justify"
589
  msgstr ""
590
 
612
  msgid "Button color"
613
  msgstr ""
614
 
 
 
 
 
615
  #: widgets/button/button.php:172, widgets/social-media-buttons/social-media-buttons.php:112
616
  msgid "Use hover effects"
617
  msgstr ""
624
  msgid "Hover text color"
625
  msgstr ""
626
 
 
 
 
 
 
 
 
 
627
  #: widgets/button/button.php:211, widgets/contact/contact.php:291, widgets/contact/contact.php:525, widgets/contact/contact.php:627, widgets/social-media-buttons/social-media-buttons.php:119
628
  msgid "Normal"
629
  msgstr ""
644
  msgid "Rounding"
645
  msgstr ""
646
 
647
+ #: widgets/button/button.php:223, widgets/contact/contact.php:361, widgets/contact/contact.php:483, widgets/contact/contact.php:594, widgets/contact/contact.php:679, widgets/google-map/google-map.php:158, widgets/headline/headline.php:219, widgets/social-media-buttons/social-media-buttons.php:130
648
  msgid "None"
649
  msgstr ""
650
 
848
  msgid "Subject"
849
  msgstr ""
850
 
851
+ #: widgets/contact/contact.php:154, widgets/features/features.php:115, widgets/features/features.php:158, widgets/headline/headline.php:54, widgets/headline/headline.php:135, widgets/price-table/price-table.php:111, widgets/taxonomy/taxonomy.php:51, widgets/testimonial/testimonial.php:83
852
  msgid "Text"
853
  msgstr ""
854
 
960
  msgid "Audio"
961
  msgstr ""
962
 
 
 
 
 
963
  #: widgets/contact/contact.php:292
964
  msgid "Compact"
965
  msgstr ""
1000
  msgid "Hidden"
1001
  msgstr ""
1002
 
1003
+ #: widgets/contact/contact.php:363, widgets/contact/contact.php:485, widgets/contact/contact.php:596, widgets/contact/contact.php:671, widgets/headline/headline.php:221
1004
  msgid "Dotted"
1005
  msgstr ""
1006
 
1007
+ #: widgets/contact/contact.php:364, widgets/contact/contact.php:486, widgets/contact/contact.php:597, widgets/contact/contact.php:672, widgets/headline/headline.php:222
1008
  msgid "Dashed"
1009
  msgstr ""
1010
 
1011
+ #: widgets/contact/contact.php:366, widgets/contact/contact.php:488, widgets/contact/contact.php:674, widgets/headline/headline.php:223
1012
  msgid "Double"
1013
  msgstr ""
1014
 
1015
+ #: widgets/contact/contact.php:367, widgets/contact/contact.php:489, widgets/contact/contact.php:675, widgets/headline/headline.php:224
1016
  msgid "Groove"
1017
  msgstr ""
1018
 
1019
+ #: widgets/contact/contact.php:368, widgets/contact/contact.php:490, widgets/contact/contact.php:676, widgets/headline/headline.php:225
1020
  msgid "Ridge"
1021
  msgstr ""
1022
 
1023
+ #: widgets/contact/contact.php:369, widgets/contact/contact.php:491, widgets/contact/contact.php:677, widgets/headline/headline.php:226
1024
  msgid "Inset"
1025
  msgstr ""
1026
 
1027
+ #: widgets/contact/contact.php:370, widgets/contact/contact.php:492, widgets/contact/contact.php:678, widgets/headline/headline.php:227
1028
  msgid "Outset"
1029
  msgstr ""
1030
 
1032
  msgid "Field labels"
1033
  msgstr ""
1034
 
 
 
 
 
1035
  #: widgets/contact/contact.php:397
1036
  msgid "Position"
1037
  msgstr ""
1048
  msgid "Inside"
1049
  msgstr ""
1050
 
 
 
 
 
1051
  #: widgets/contact/contact.php:453
1052
  msgid "Max width"
1053
  msgstr ""
1054
 
1055
+ #: widgets/contact/contact.php:458, widgets/google-map/google-map.php:98, widgets/hero/hero.php:184, widgets/layout-slider/layout-slider.php:152, widgets/slider/slider.php:142, base/inc/fields/image-size.class.php:64
1056
  msgid "Height"
1057
  msgstr ""
1058
 
1060
  msgid "Text area height"
1061
  msgstr ""
1062
 
1063
+ #: widgets/contact/contact.php:466, widgets/hero/hero.php:100, widgets/layout-slider/layout-slider.php:72
1064
  msgid "Background"
1065
  msgstr ""
1066
 
1076
  msgid "Field descriptions"
1077
  msgstr ""
1078
 
1079
+ #: widgets/contact/contact.php:521, widgets/contact/contact.php:668, widgets/google-map/google-map.php:321, widgets/headline/headline.php:216
1080
  msgid "Style"
1081
  msgstr ""
1082
 
1253
  msgid "Button align"
1254
  msgstr ""
1255
 
1256
+ #: widgets/cta/cta.php:112, widgets/google-map/google-map.php:498, widgets/hero/hero.php:79, widgets/hero/hero.php:91
1257
  msgid "Button"
1258
  msgstr ""
1259
 
1285
  msgid "SiteOrigin Features"
1286
  msgstr ""
1287
 
1288
+ #: widgets/features/features.php:44, widgets/price-table/price-table.php:101
1289
  msgid "Features"
1290
  msgstr ""
1291
 
1292
+ #: widgets/features/features.php:45, widgets/price-table/price-table.php:102
1293
  msgid "Feature"
1294
  msgstr ""
1295
 
1296
+ #: widgets/features/features.php:57
1297
  msgid "Icon container color"
1298
  msgstr ""
1299
 
1300
+ #: widgets/features/features.php:65
1301
  msgid "Icon container position"
1302
  msgstr ""
1303
 
1304
+ #: widgets/features/features.php:84, widgets/social-media-buttons/social-media-buttons.php:78
1305
  msgid "Icon title"
1306
  msgstr ""
1307
 
1308
+ #: widgets/features/features.php:96
1309
  msgid "Icon image"
1310
  msgstr ""
1311
 
1312
+ #: widgets/features/features.php:97
1313
  msgid "Use your own icon image."
1314
  msgstr ""
1315
 
1316
+ #: widgets/features/features.php:103
1317
  msgid "Icon image size"
1318
  msgstr ""
1319
 
1320
+ #: widgets/features/features.php:110, widgets/image/image.php:69
1321
  msgid "Title text"
1322
  msgstr ""
1323
 
1324
+ #: widgets/features/features.php:120
1325
  msgid "More link text"
1326
  msgstr ""
1327
 
1328
+ #: widgets/features/features.php:125
1329
  msgid "More link URL"
1330
  msgstr ""
1331
 
1332
+ #: widgets/features/features.php:132
1333
  msgid "Font Design"
1334
  msgstr ""
1335
 
1336
+ #: widgets/features/features.php:179
1337
  msgid "More Link"
1338
  msgstr ""
1339
 
1340
+ #: widgets/features/features.php:202
1341
  msgid "Icon container shape"
1342
  msgstr ""
1343
 
1344
+ #: widgets/features/features.php:209
1345
  msgid "Icon container size"
1346
  msgstr ""
1347
 
1348
+ #: widgets/features/features.php:215, widgets/social-media-buttons/social-media-buttons.php:117
1349
  msgid "Icon size"
1350
  msgstr ""
1351
 
1352
+ #: widgets/features/features.php:221
1353
  msgid "Use icon size for custom icon"
1354
  msgstr ""
1355
 
1356
+ #: widgets/features/features.php:227
1357
  msgid "Title text HTML tag"
1358
  msgstr ""
1359
 
1360
+ #: widgets/features/features.php:241
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1361
  msgid "Features per row"
1362
  msgstr ""
1363
 
1364
+ #: widgets/features/features.php:247
1365
  msgid "Responsive layout"
1366
  msgstr ""
1367
 
1368
+ #: widgets/features/features.php:253
1369
  msgid "Link feature title to more URL"
1370
  msgstr ""
1371
 
1372
+ #: widgets/features/features.php:259
1373
  msgid "Link icon to more URL"
1374
  msgstr ""
1375
 
1376
+ #: widgets/features/features.php:265
1377
  msgid "Open more URL in a new window"
1378
  msgstr ""
1379
 
1380
+ #: widgets/features/features.php:324
1381
  msgid "This setting controls when the features widget will collapse for mobile devices. The default value is 520px"
1382
  msgstr ""
1383
 
1848
  msgid "SiteOrigin Headline"
1849
  msgstr ""
1850
 
1851
+ #: widgets/headline/headline.php:40
1852
+ msgid "The pixel resolution when the mobile alignment settings will be applied."
 
 
 
 
1853
  msgstr ""
1854
 
1855
+ #: widgets/headline/headline.php:49, widgets/headline/headline.php:278
1856
+ msgid "Headline"
1857
  msgstr ""
1858
 
1859
+ #: widgets/headline/headline.php:85, widgets/headline/headline.php:166
1860
  msgid "Hover Color"
1861
  msgstr ""
1862
 
1863
+ #: widgets/headline/headline.php:94, widgets/headline/headline.php:175
1864
  msgid "Font Size"
1865
  msgstr ""
1866
 
1867
+ #: widgets/headline/headline.php:98, widgets/headline/headline.php:179, widgets/headline/headline.php:244, widgets/icon/icon.php:46
1868
  msgid "Alignment"
1869
  msgstr ""
1870
 
1871
+ #: widgets/headline/headline.php:109, widgets/headline/headline.php:190, widgets/headline/headline.php:254
1872
+ msgid "Mobile alignment"
1873
+ msgstr ""
1874
+
1875
+ #: widgets/headline/headline.php:119, widgets/headline/headline.php:200
1876
  msgid "Line Height"
1877
  msgstr ""
1878
 
1879
+ #: widgets/headline/headline.php:123, widgets/headline/headline.php:204, widgets/headline/headline.php:268
1880
  msgid "Top and Bottom Margin"
1881
  msgstr ""
1882
 
1883
+ #: widgets/headline/headline.php:130
1884
  msgid "Sub headline"
1885
  msgstr ""
1886
 
1887
+ #: widgets/headline/headline.php:211, widgets/headline/headline.php:279
1888
  msgid "Divider"
1889
  msgstr ""
1890
 
1891
+ #: widgets/headline/headline.php:237
1892
  msgid "Thickness"
1893
  msgstr ""
1894
 
1895
+ #: widgets/headline/headline.php:263
1896
  msgid "Divider Width"
1897
  msgstr ""
1898
 
1899
+ #: widgets/headline/headline.php:276
1900
  msgid "Element Order"
1901
  msgstr ""
1902
 
1903
+ #: widgets/headline/headline.php:280
1904
  msgid "Sub Headline"
1905
  msgstr ""
1906
 
1907
+ #: widgets/headline/headline.php:287, widgets/hero/hero.php:246
1908
  msgid "Use FitText"
1909
  msgstr ""
1910
 
1911
+ #: widgets/headline/headline.php:288, widgets/hero/hero.php:247
1912
  msgid "Dynamically adjust your heading font size based on screen size."
1913
  msgstr ""
1914
 
1915
+ #: widgets/headline/headline.php:301
1916
  msgid "FitText Compressor Strength"
1917
  msgstr ""
1918
 
1919
+ #: widgets/headline/headline.php:302, widgets/hero/hero.php:261
1920
  msgid "The higher the value, the more your headings will be scaled down. Values above 1 are allowed."
1921
  msgstr ""
1922
 
1936
  msgid "Frame"
1937
  msgstr ""
1938
 
1939
+ #: widgets/hero/hero.php:78, widgets/taxonomy/taxonomy.php:50
1940
  msgid "Buttons"
1941
  msgstr ""
1942
 
1943
+ #: widgets/hero/hero.php:80
1944
  msgid "Add [buttons] shortcode to the content to insert these buttons."
1945
  msgstr ""
1946
 
1947
+ #: widgets/hero/hero.php:104, widgets/layout-slider/layout-slider.php:76, widgets/slider/slider.php:81
1948
  msgid "Background image"
1949
  msgstr ""
1950
 
1951
+ #: widgets/hero/hero.php:111, widgets/image/image.php:39, widgets/image-grid/image-grid.php:98, widgets/testimonial/testimonial.php:132, widgets/testimonial/testimonial.php:161, widgets/testimonial/testimonial.php:203
1952
  msgid "Image size"
1953
  msgstr ""
1954
 
1955
+ #: widgets/hero/hero.php:116, widgets/layout-slider/layout-slider.php:83, widgets/slider/slider.php:92
1956
  msgid "Background image type"
1957
  msgstr ""
1958
 
1959
+ #: widgets/hero/hero.php:118, widgets/slider/slider.php:94
1960
  msgid "Cover"
1961
  msgstr ""
1962
 
1963
+ #: widgets/hero/hero.php:124, widgets/layout-slider/layout-slider.php:92
1964
  msgid "Background image opacity"
1965
  msgstr ""
1966
 
1967
+ #: widgets/hero/hero.php:144, widgets/layout-slider/layout-slider.php:112
1968
  msgid "Open URL in a new window"
1969
  msgstr ""
1970
 
1971
+ #: widgets/hero/hero.php:149, widgets/layout-slider/layout-slider.php:117, widgets/slider/slider.php:60
1972
  msgid "Video"
1973
  msgstr ""
1974
 
1975
+ #: widgets/hero/hero.php:150, widgets/layout-slider/layout-slider.php:118, widgets/slider/slider.php:61
1976
  msgid "Background videos"
1977
  msgstr ""
1978
 
1979
+ #: widgets/hero/hero.php:173, widgets/layout-slider/layout-slider.php:141
1980
  msgid "Slider Controls"
1981
  msgstr ""
1982
 
1983
+ #: widgets/hero/hero.php:179, widgets/layout-slider/layout-slider.php:147
1984
  msgid "Design and Layout"
1985
  msgstr ""
1986
 
1987
+ #: widgets/hero/hero.php:190, widgets/layout-slider/layout-slider.php:157, widgets/slider/slider.php:147
1988
  msgid "Responsive Height"
1989
  msgstr ""
1990
 
1991
+ #: widgets/hero/hero.php:196, widgets/layout-slider/layout-slider.php:162
1992
  msgid "Vertically center align slide contents"
1993
  msgstr ""
1994
 
1995
+ #: widgets/hero/hero.php:197, widgets/layout-slider/layout-slider.php:163
1996
  msgid "For perfect centering, consider setting the Extra top padding setting to 0 when enabling this setting."
1997
  msgstr ""
1998
 
1999
+ #: widgets/hero/hero.php:202, widgets/layout-slider/layout-slider.php:168
2000
  msgid "Top and bottom padding"
2001
  msgstr ""
2002
 
2003
+ #: widgets/hero/hero.php:208, widgets/layout-slider/layout-slider.php:174
2004
  msgid "Extra top padding"
2005
  msgstr ""
2006
 
2007
+ #: widgets/hero/hero.php:209, widgets/layout-slider/layout-slider.php:175
2008
  msgid "Additional padding added to the top of the slider"
2009
  msgstr ""
2010
 
2011
+ #: widgets/hero/hero.php:215, widgets/layout-slider/layout-slider.php:181
2012
  msgid "Side padding"
2013
  msgstr ""
2014
 
2015
+ #: widgets/hero/hero.php:221, widgets/layout-slider/layout-slider.php:187
2016
  msgid "Maximum container width"
2017
  msgstr ""
2018
 
2019
+ #: widgets/hero/hero.php:227
2020
  msgid "Heading font"
2021
  msgstr ""
2022
 
2023
+ #: widgets/hero/hero.php:233, widgets/layout-slider/layout-slider.php:193
2024
  msgid "Heading color"
2025
  msgstr ""
2026
 
2027
+ #: widgets/hero/hero.php:239
2028
  msgid "Heading size"
2029
  msgstr ""
2030
 
2031
+ #: widgets/hero/hero.php:240
2032
  msgid "Enter the h1 font size. h2 - h6 will be proportionally sized based on this value."
2033
  msgstr ""
2034
 
2035
+ #: widgets/hero/hero.php:260
2036
  msgid "FitText compressor strength"
2037
  msgstr ""
2038
 
2039
+ #: widgets/hero/hero.php:272, widgets/layout-slider/layout-slider.php:207
2040
  msgid "Heading shadow intensity"
2041
  msgstr ""
2042
 
2043
+ #: widgets/hero/hero.php:285, widgets/layout-slider/layout-slider.php:217
2044
  msgid "Text size"
2045
  msgstr ""
2046
 
2047
+ #: widgets/hero/hero.php:290
2048
  msgid "Text font"
2049
  msgstr ""
2050
 
2051
+ #: widgets/hero/hero.php:295
2052
  msgid "Text shadow intensity"
2053
  msgstr ""
2054
 
2055
+ #: widgets/hero/hero.php:304
2056
  msgid "Link color"
2057
  msgstr ""
2058
 
2059
+ #: widgets/hero/hero.php:309
2060
  msgid "Link hover color"
2061
  msgstr ""
2062
 
2104
  msgid "Link title to URL"
2105
  msgstr ""
2106
 
2107
+ #: widgets/image/image.php:102, widgets/image-grid/image-grid.php:88, widgets/slider/slider.php:121
2108
  msgid "Open in new window"
2109
  msgstr ""
2110
 
2188
  msgid "Slider frames"
2189
  msgstr ""
2190
 
2191
+ #: widgets/layout-slider/layout-slider.php:86, widgets/slider/slider.php:95
2192
  msgid "Tile"
2193
  msgstr ""
2194
 
2195
+ #: widgets/layout-slider/layout-slider.php:242
2196
  msgid "This widget requires: "
2197
  msgstr ""
2198
 
2199
+ #: widgets/layout-slider/layout-slider.php:243, base/inc/fields/builder.class.php:43
2200
  msgid "SiteOrigin Page Builder"
2201
  msgstr ""
2202
 
2203
+ #: widgets/layout-slider/layout-slider.php:314
2204
  msgid "Show slide %d"
2205
  msgstr ""
2206
 
2207
+ #: widgets/layout-slider/layout-slider.php:327
2208
  msgid "%s slide"
2209
  msgstr ""
2210
 
2211
+ #: widgets/layout-slider/layout-slider.php:329
2212
  msgid "Slide control shortcode error: invalid slide value."
2213
  msgstr ""
2214
 
2215
+ #: widgets/layout-slider/layout-slider.php:358
2216
  msgid "This widget requires Page Builder."
2217
  msgstr ""
2218
 
2219
+ #: widgets/post-carousel/post-carousel.php:4, widgets/post-carousel/post-carousel.php:99
2220
  msgid "Gives you a widget to display your posts as a carousel."
2221
  msgstr ""
2222
 
2223
+ #: widgets/post-carousel/post-carousel.php:97
2224
  msgid "SiteOrigin Post Carousel"
2225
  msgstr ""
2226
 
2227
+ #: widgets/post-carousel/post-carousel.php:166
2228
  msgid "Default Thumbnail"
2229
  msgstr ""
2230
 
2231
+ #: widgets/post-carousel/post-carousel.php:167
2232
  msgid "Choose Thumbnail"
2233
  msgstr ""
2234
 
2235
+ #: widgets/post-carousel/post-carousel.php:168
2236
  msgid "Set Thumbnail"
2237
  msgstr ""
2238
 
2239
+ #: widgets/post-carousel/post-carousel.php:174
2240
  msgid "Featured Image size"
2241
  msgstr ""
2242
 
2243
+ #: widgets/post-carousel/post-carousel.php:180
2244
  msgid "Link target"
2245
  msgstr ""
2246
 
2247
+ #: widgets/post-carousel/post-carousel.php:181
2248
  msgid "Choose where to open each carousel item."
2249
  msgstr ""
2250
 
2251
+ #: widgets/post-carousel/post-carousel.php:183
2252
  msgid "Same window "
2253
  msgstr ""
2254
 
2255
+ #: widgets/post-carousel/post-carousel.php:184
2256
  msgid "New window "
2257
  msgstr ""
2258
 
2259
+ #: widgets/post-carousel/post-carousel.php:189
2260
  msgid "Loop posts"
2261
  msgstr ""
2262
 
2263
+ #: widgets/post-carousel/post-carousel.php:190
2264
  msgid "Automatically return to the first post after the last post."
2265
  msgstr ""
2266
 
2267
+ #: widgets/post-carousel/post-carousel.php:196
2268
  msgid "Posts query"
2269
  msgstr ""
2270
 
2271
+ #: widgets/post-carousel/post-carousel.php:200
2272
  msgid "Posts per load"
2273
  msgstr ""
2274
 
2275
+ #: widgets/post-carousel/post-carousel.php:201
2276
  msgid "Set the number of posts preloaded in the background when clicking next. The default is 10."
2277
  msgstr ""
2278
 
2279
+ #: widgets/post-carousel/post-carousel.php:213
2280
  msgid "Thumbnail overlay hover color"
2281
  msgstr ""
2282
 
2283
+ #: widgets/post-carousel/post-carousel.php:218
2284
  msgid "Thumbnail overlay hover opacity"
2285
  msgstr ""
2286
 
2287
+ #: widgets/post-carousel/post-carousel.php:226
2288
  msgid "Navigation arrow color"
2289
  msgstr ""
2290
 
2291
+ #: widgets/post-carousel/post-carousel.php:231
2292
  msgid "Navigation arrow hover color"
2293
  msgstr ""
2294
 
2295
+ #: widgets/post-carousel/post-carousel.php:235
2296
  msgid "Navigation background"
2297
  msgstr ""
2298
 
2299
+ #: widgets/post-carousel/post-carousel.php:240
2300
  msgid "Navigation hover background"
2301
  msgstr ""
2302
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2303
  #: widgets/price-table/price-table.php:4, widgets/price-table/price-table.php:17
2304
  msgid "A powerful yet simple price table widget for your sidebars or Page Builder pages."
2305
  msgstr ""
2472
  msgid "SiteOrigin Slider"
2473
  msgstr ""
2474
 
2475
+ #: widgets/slider/slider.php:87
2476
  msgid "Background Color"
2477
  msgstr ""
2478
 
2479
+ #: widgets/slider/slider.php:103
2480
  msgid "Foreground image"
2481
  msgstr ""
2482
 
2483
+ #: widgets/slider/slider.php:128, widgets/video/video.php:137
2484
  msgid "Controls"
2485
  msgstr ""
2486
 
2487
+ #: widgets/slider/slider.php:349
2488
  msgid "Add a Lightbox to your image slides with %sSiteOrigin Premium%s"
2489
  msgstr ""
2490
 
2620
  msgid "Testimonials per row"
2621
  msgstr ""
2622
 
2623
+ #: widgets/testimonial/testimonial.php:115, base/inc/widgets/base-carousel.class.php:163
2624
+ msgid "Responsive"
2625
+ msgstr ""
2626
+
2627
+ #: widgets/testimonial/testimonial.php:120, base/inc/widgets/base-carousel.class.php:135
2628
+ msgid "Tablet"
2629
+ msgstr ""
2630
+
2631
  #: widgets/testimonial/testimonial.php:140, widgets/testimonial/testimonial.php:169
2632
  msgid "Resolution"
2633
  msgstr ""
2744
  msgid "Video Playback"
2745
  msgstr ""
2746
 
2747
+ #: widgets/video/video.php:101, base/inc/widgets/base-carousel.class.php:192, base/inc/widgets/base-slider.class.php:57, base/inc/widgets/base-slider.class.php:173
2748
  msgid "Autoplay"
2749
  msgstr ""
2750
 
2776
  msgid "If the external host supports it."
2777
  msgstr ""
2778
 
2779
+ #: widgets/video/video.php:138
2780
+ msgid "Enable browser video controls."
2781
+ msgstr ""
2782
+
2783
  #: base/inc/fields/autocomplete.class.php:46
2784
  msgid "Search"
2785
  msgstr ""
3069
  msgid "Additional query arguments. See <a href=\"https://developer.wordpress.org/reference/functions/query_posts/\" target=\"_blank\" rel=\"noopener noreferrer\">query_posts</a>."
3070
  msgstr ""
3071
 
3072
+ #: base/inc/fields/presets.class.php:26
3073
  msgid "Warning! This will override some or all of the current form values."
3074
  msgstr ""
3075
 
3076
+ #: base/inc/fields/presets.class.php:62
3077
  msgid "Undo"
3078
  msgstr ""
3079
 
 
 
 
 
3080
  #: base/inc/fields/repeater.class.php:93
3081
  msgid "Add"
3082
  msgstr ""
3089
  msgid "%s is not a SiteOrigin Widget"
3090
  msgstr ""
3091
 
3092
+ #: base/inc/widgets/base-carousel.class.php:70
3093
+ msgid "Slides to scroll"
3094
  msgstr ""
3095
 
3096
+ #: base/inc/widgets/base-carousel.class.php:71
3097
+ msgid "Set the number of slides to scroll per navigation click or swipe on %s"
3098
+ msgstr ""
3099
+
3100
+ #: base/inc/widgets/base-carousel.class.php:113
3101
+ msgid "Breakpoint"
3102
+ msgstr ""
3103
+
3104
+ #: base/inc/widgets/base-carousel.class.php:131
3105
+ msgid "Desktop"
3106
+ msgstr ""
3107
+
3108
+ #: base/inc/widgets/base-carousel.class.php:138
3109
+ msgid "Landscape"
3110
+ msgstr ""
3111
+
3112
+ #: base/inc/widgets/base-carousel.class.php:143
3113
+ msgid "Portrait"
3114
+ msgstr ""
3115
+
3116
+ #: base/inc/widgets/base-carousel.class.php:150
3117
+ msgid "Mobile"
3118
+ msgstr ""
3119
+
3120
+ #: base/inc/widgets/base-carousel.class.php:172
3121
+ msgid "Carousel Settings"
3122
  msgstr ""
3123
 
3124
+ #: base/inc/widgets/base-carousel.class.php:177
3125
+ msgid "Loop Items"
3126
+ msgstr ""
3127
+
3128
+ #: base/inc/widgets/base-carousel.class.php:178
3129
+ msgid "Automatically return to the first item after the last item."
3130
+ msgstr ""
3131
+
3132
+ #: base/inc/widgets/base-carousel.class.php:183
3133
+ msgid "Navigation dots"
3134
+ msgstr ""
3135
+
3136
+ #: base/inc/widgets/base-carousel.class.php:187, base/inc/widgets/base-slider.class.php:80
3137
  msgid "Animation speed"
3138
  msgstr ""
3139
 
3140
+ #: base/inc/widgets/base-carousel.class.php:203, base/inc/widgets/base-slider.class.php:71
3141
+ msgid "Autoplay pause on hover"
3142
  msgstr ""
3143
 
3144
+ #: base/inc/widgets/base-carousel.class.php:212, base/inc/widgets/base-slider.class.php:87
3145
  msgid "Timeout"
3146
  msgstr ""
3147
 
3148
+ #: base/inc/widgets/base-carousel.class.php:265
3149
+ msgid "Next"
3150
+ msgstr ""
3151
+
3152
+ #: base/inc/widgets/base-carousel.class.php:265
3153
+ msgid "Next Posts"
3154
+ msgstr ""
3155
+
3156
+ #: base/inc/widgets/base-carousel.class.php:271
3157
+ msgid "Previous"
3158
+ msgstr ""
3159
+
3160
+ #: base/inc/widgets/base-carousel.class.php:271
3161
+ msgid "Previous Posts"
3162
+ msgstr ""
3163
+
3164
+ #: base/inc/widgets/base-slider.class.php:58
3165
+ msgid "Change slides automatically without user interaction."
3166
+ msgstr ""
3167
+
3168
+ #: base/inc/widgets/base-slider.class.php:81
3169
+ msgid "Animation speed in milliseconds."
3170
+ msgstr ""
3171
+
3172
  #: base/inc/widgets/base-slider.class.php:88
3173
  msgid "How long each frame is displayed for in milliseconds."
3174
  msgstr ""
3289
  msgid "Go to Google Maps Widget settings"
3290
  msgstr ""
3291
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3292
  #: widgets/social-media-buttons/data/networks.php:5
3293
  msgid "Facebook"
3294
  msgstr ""
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.7
5
  Requires PHP: 5.6.20
6
- Stable tag: 1.21.0
7
- Build time: 2021-06-24T10:37:45+02:00
8
  License: GPLv3 or later
9
  Contributors: gpriday, braam-genis, alexgso
10
  Donate link: https://siteorigin.com/downloads/premium/
@@ -99,6 +99,15 @@ The Widgets Bundle global interface is available at Plugins > SiteOrigin Widgets
99
 
100
  == Changelog ==
101
 
 
 
 
 
 
 
 
 
 
102
  = 1.21.0 - 24 June 2021 =
103
  * Google Maps: Prevented a jump on load when Info Windows is set to always display.
104
  * Google Fonts: Ensured all weights and styles are imported.
3
  Requires at least: 4.2
4
  Tested up to: 5.7
5
  Requires PHP: 5.6.20
6
+ Stable tag: 1.22.0
7
+ Build time: 2021-07-15T20:51:19+02:00
8
  License: GPLv3 or later
9
  Contributors: gpriday, braam-genis, alexgso
10
  Donate link: https://siteorigin.com/downloads/premium/
99
 
100
  == Changelog ==
101
 
102
+ = 1.22.0 - 15 July 2021 =
103
+ * New Widget! Anything Carousel: Display images, text, or any other content in a carousel.
104
+ * Headline: Added a global Responsive Breakpoint setting at Plugins > SiteOrigin Widgets > Headline: Settings.
105
+ * Headline: Added Mobile Alignment settings for the Headline, Sub Headline, and Divider.
106
+ * Layout Builder: Widget Areas: Prevented the creation of a CSS file for every page.
107
+ * Slider: Disallowed Jetpack Lazy Loading.
108
+ * Developer: Added a preset form field. Store a selected preset. [Docs](https://siteorigin.com/docs/widgets-bundle/form-building/presets/).
109
+ * Developer: Fixed `SITEORIGIN_WIDGETS_DEBUG` constant. Useful for debugging, bypasses widget CSS cache. [Docs](https://siteorigin.com/docs/widgets-bundle/templating/less-stylesheets/).
110
+
111
  = 1.21.0 - 24 June 2021 =
112
  * Google Maps: Prevented a jump on load when Info Windows is set to always display.
113
  * Google Fonts: Ensured all weights and styles are imported.
so-widgets-bundle.php CHANGED
@@ -1,8 +1,8 @@
1
  <?php
2
  /*
3
  Plugin Name: SiteOrigin Widgets Bundle
4
- Description: A collection of all widgets, neatly bundled into a single plugin. It's also a framework to code your own widgets on top of.
5
- Version: 1.21.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.21.0');
16
  define('SOW_BUNDLE_BASE_FILE', __FILE__);
17
 
18
  // Allow JS suffix to be pre-set
@@ -772,6 +772,9 @@ class SiteOrigin_Widgets_Bundle {
772
  }
773
  $links['manage'] = '<a href="' . admin_url('plugins.php?page=so-widgets-plugins') . '">'.__('Manage Widgets', 'so-widgets-bundle').'</a>';
774
  $links['support'] = '<a href="https://siteorigin.com/thread/" target="_blank" rel="noopener noreferrer">'.__('Support', 'so-widgets-bundle').'</a>';
 
 
 
775
  return $links;
776
  }
777
 
1
  <?php
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.22.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.22.0');
16
  define('SOW_BUNDLE_BASE_FILE', __FILE__);
17
 
18
  // Allow JS suffix to be pre-set
772
  }
773
  $links['manage'] = '<a href="' . admin_url('plugins.php?page=so-widgets-plugins') . '">'.__('Manage Widgets', 'so-widgets-bundle').'</a>';
774
  $links['support'] = '<a href="https://siteorigin.com/thread/" target="_blank" rel="noopener noreferrer">'.__('Support', 'so-widgets-bundle').'</a>';
775
+ if ( apply_filters( 'siteorigin_premium_upgrade_teaser', true ) && ! defined( 'SITEORIGIN_PREMIUM_VERSION' ) ) {
776
+ $links['addons'] = '<a href="https://siteorigin.com/downloads/premium/?featured_plugin=so-widgets-bundle" style="color: #3db634" target="_blank" rel="noopener noreferrer">' . __( 'Addons', 'so-widgets-bundle' ) . '</a>';
777
+ }
778
  return $links;
779
  }
780
 
widgets/anything-carousel/anything-carousel.php ADDED
@@ -0,0 +1,290 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /*
3
+ Widget Name: Anything Carousel
4
+ Description: Display images, text, or any other content in a carousel.
5
+ Author: SiteOrigin
6
+ Author URI: https://siteorigin.com
7
+ Documentation: https://siteorigin.com/widgets-bundle/anything-carousel-widget/
8
+ */
9
+
10
+ if ( ! class_exists( 'SiteOrigin_Widget_Base_Carousel' ) ) {
11
+ include_once plugin_dir_path( SOW_BUNDLE_BASE_FILE ) . '/base/inc/widgets/base-carousel.class.php';
12
+ }
13
+
14
+ class SiteOrigin_Widget_Anything_Carousel_Widget extends SiteOrigin_Widget_Base_Carousel {
15
+ function __construct() {
16
+ parent::__construct(
17
+ 'sow-anything-carousel',
18
+ __( 'SiteOrigin Anything Carousel', 'so-widgets-bundle' ),
19
+ array(
20
+ 'description' => __( 'Display images, text, or any other content in a carousel.', 'so-widgets-bundle' ),
21
+ 'help' => 'https://siteorigin.com/widgets-bundle/anything-carousel-widget/'
22
+ ),
23
+ array(),
24
+ false,
25
+ plugin_dir_path( __FILE__ )
26
+ );
27
+ }
28
+
29
+ function initialize() {
30
+ // Let the carousel base class do its initialization.
31
+ parent::initialize();
32
+
33
+ $this->register_frontend_styles(
34
+ array(
35
+ array(
36
+ 'sow-anything-carousel',
37
+ plugin_dir_url( __FILE__ ) . 'css/style.css',
38
+ ),
39
+ )
40
+ );
41
+ }
42
+
43
+ function override_carousel_settings() {
44
+ return array(
45
+ 'slides_to_scroll_text' => array(
46
+ 'label' => __( 'Slides to show ', 'so-widgets-bundle' ),
47
+ 'description' => __( 'The number of slides to show on %s.', 'so-widgets-bundle' ),
48
+ ),
49
+ );
50
+ }
51
+
52
+ function get_widget_form() {
53
+ $useable_units = array(
54
+ 'px',
55
+ '%',
56
+ );
57
+
58
+ return array(
59
+ 'title' => array(
60
+ 'type' => 'text',
61
+ 'label' => __( 'Title', 'so-widgets-bundle' ),
62
+ ),
63
+
64
+ 'items' => array(
65
+ 'type' => 'repeater',
66
+ 'label' => __( 'Items', 'so-widgets-bundle' ),
67
+ 'item_name' => __( 'Item', 'so-widgets-bundle' ),
68
+ 'item_label' => array(
69
+ 'selector' => "[id*='title']",
70
+ 'update_event' => 'change',
71
+ 'value_method' => 'val'
72
+ ),
73
+
74
+ 'fields' => array(
75
+ 'title' => array(
76
+ 'type' => 'text',
77
+ 'label' => __( 'Title', 'so-widgets-bundle' ),
78
+ ),
79
+ 'content_text' => array(
80
+ 'type' => 'tinymce',
81
+ 'label' => __( 'Content', 'so-widgets-bundle' ),
82
+ ),
83
+ ),
84
+ ),
85
+ 'carousel_settings' => $this->carousel_settings_form_fields(),
86
+ 'design' => array(
87
+ 'type' => 'section',
88
+ 'label' => __( 'Design', 'so-widgets-bundle' ),
89
+ 'hide' => true,
90
+ 'fields' => array(
91
+ 'item_title' => array(
92
+ 'type' => 'section',
93
+ 'label' => __( 'Item title', 'so-widgets-bundle' ),
94
+ 'hide' => true,
95
+ 'fields' => array(
96
+ 'tag' => array(
97
+ 'type' => 'select',
98
+ 'label' => __( 'HTML Tag', 'so-widgets-bundle' ),
99
+ 'default' => 'h4',
100
+ 'options' => array(
101
+ 'h1' => __( 'H1', 'so-widgets-bundle' ),
102
+ 'h2' => __( 'H2', 'so-widgets-bundle' ),
103
+ 'h3' => __( 'H3', 'so-widgets-bundle' ),
104
+ 'h4' => __( 'H4', 'so-widgets-bundle' ),
105
+ 'h5' => __( 'H5', 'so-widgets-bundle' ),
106
+ 'h6' => __( 'H6', 'so-widgets-bundle' ),
107
+ 'p' => __( 'Paragraph', 'so-widgets-bundle' ),
108
+ ),
109
+ ),
110
+ 'font' => array(
111
+ 'type' => 'font',
112
+ 'label' => __( 'Font', 'so-widgets-bundle' ),
113
+ ),
114
+ 'size' => array(
115
+ 'type' => 'measurement',
116
+ 'label' => __( 'Size', 'so-widgets-bundle' ),
117
+ ),
118
+ 'color' => array(
119
+ 'type' => 'color',
120
+ 'label' => __( 'Text color', 'so-widgets-bundle' ),
121
+ ),
122
+ 'bottom_margin' => array(
123
+ 'type' => 'measurement',
124
+ 'label' => __( 'Bottom margin', 'so-widgets-bundle' ),
125
+ 'default' => '24px',
126
+ ),
127
+ ),
128
+ ),
129
+ 'item' => array(
130
+ 'type' => 'section',
131
+ 'label' => __( 'Item', 'so-widgets-bundle' ),
132
+ 'hide' => true,
133
+ 'fields' => array(
134
+ 'font' => array(
135
+ 'type' => 'font',
136
+ 'label' => __( 'Font', 'so-widgets-bundle' ),
137
+ ),
138
+ 'size' => array(
139
+ 'type' => 'measurement',
140
+ 'label' => __( 'Font size', 'so-widgets-bundle' ),
141
+ ),
142
+ 'color' => array(
143
+ 'type' => 'color',
144
+ 'label' => __( 'Color', 'so-widgets-bundle' ),
145
+ ),
146
+ 'margin' => array(
147
+ 'type' => 'multi-measurement',
148
+ 'label' => __( 'Margin', 'so-widgets-bundle' ),
149
+ 'autofill' => true,
150
+ 'default' => '0 12px 64px 12px',
151
+ 'measurements' => array(
152
+ 'top' => array(
153
+ 'label' => __( 'Top', 'so-widgets-bundle' ),
154
+ 'units' => $useable_units,
155
+ ),
156
+ 'right' => array(
157
+ 'label' => __( 'Right', 'so-widgets-bundle' ),
158
+ 'units' => $useable_units,
159
+ ),
160
+ 'bottom' => array(
161
+ 'label' => __( 'Bottom', 'so-widgets-bundle' ),
162
+ 'units' => $useable_units,
163
+ ),
164
+ 'left' => array(
165
+ 'label' => __( 'Left', 'so-widgets-bundle' ),
166
+ 'units' => $useable_units,
167
+ ),
168
+ ),
169
+ ),
170
+ ),
171
+ ),
172
+ 'navigation' => array(
173
+ 'type' => 'section',
174
+ 'label' => __( 'Navigation', 'so-widgets-bundle' ),
175
+ 'hide' => true,
176
+ 'fields' => array(
177
+ 'arrow_color' => array(
178
+ 'type' => 'color',
179
+ 'label' => __( 'Arrows color', 'so-widgets-bundle' ),
180
+ 'default' => '#626262',
181
+ ),
182
+ 'arrow_color_hover' => array(
183
+ 'type' => 'color',
184
+ 'label' => __( 'Arrows hover color', 'so-widgets-bundle' ),
185
+ 'default' => '#000',
186
+ ),
187
+ 'arrow_margin' => array(
188
+ 'type' => 'measurement',
189
+ 'label' => __( 'Arrows margin', 'so-widgets-bundle' ),
190
+ 'description' => __( 'The space between the navigation arrows and items.', 'so-widgets-bundle' ),
191
+ ),
192
+ 'dots_color' => array(
193
+ 'type' => 'color',
194
+ 'label' => __( 'Dots color', 'so-widgets-bundle' ),
195
+ 'default' => '#bebebe',
196
+ ),
197
+ 'dots_color_hover' => array(
198
+ 'type' => 'color',
199
+ 'label' => __( 'Dots selected and hover color', 'so-widgets-bundle' ),
200
+ 'default' => '#f14e4e',
201
+ ),
202
+
203
+ ),
204
+ ),
205
+ ),
206
+ ),
207
+ 'responsive' => $this->responsive_form_fields(),
208
+ );
209
+ }
210
+
211
+ function get_style_name( $instance ) {
212
+ return empty( $instance['design']['theme'] ) ? 'base' : $instance['design']['theme'];
213
+ }
214
+
215
+ function get_less_variables( $instance ) {
216
+ if ( empty( $instance ) ) {
217
+ return array();
218
+ }
219
+
220
+ $less_vars = array(
221
+ 'item_title_tag' => $instance['design']['item_title']['tag'],
222
+ 'item_title_font_size' => $instance['design']['item_title']['size'],
223
+ 'item_title_color' => $instance['design']['item_title']['color'],
224
+ 'bottom_margin' => $instance['design']['item_title']['bottom_margin'],
225
+
226
+ 'item_size' => $instance['design']['item']['size'],
227
+ 'item_color' => $instance['design']['item']['color'],
228
+ 'item_margin' => $instance['design']['item']['margin'],
229
+
230
+ 'navigation_arrow_color' => $instance['design']['navigation']['arrow_color'],
231
+ 'navigation_arrow_color_hover' => $instance['design']['navigation']['arrow_color_hover'],
232
+ 'navigation_arrow_margin' => $instance['design']['navigation']['arrow_margin'],
233
+ 'navigation_dots_color' => $instance['design']['navigation']['dots_color'],
234
+ 'navigation_dots_color_hover' => $instance['design']['navigation']['dots_color_hover'],
235
+ );
236
+
237
+ $item_title_font = siteorigin_widget_get_font( $instance['design']['item_title']['font'] );
238
+ $less_vars['item_title_font'] = $item_title_font['family'];
239
+ if ( ! empty( $item_title_font['weight'] ) ) {
240
+ $less_vars['item_title_font_style'] = $item_title_font['style'];
241
+ $less_vars['item_title_font_weight'] = $item_title_font['weight_raw'];
242
+ }
243
+
244
+ $item_font = siteorigin_widget_get_font( $instance['design']['item']['font'] );
245
+ $less_vars['item_font'] = $item_font['family'];
246
+ if ( ! empty( $item_font['weight'] ) ) {
247
+ $less_vars['item_font_style'] = $item_font['style'];
248
+ $less_vars['item_font_weight'] = $item_font['weight_raw'];
249
+ }
250
+
251
+ return $less_vars;
252
+ }
253
+
254
+ public function get_template_variables( $instance, $args ) {
255
+ return array(
256
+ 'settings' => array(
257
+ 'title' => $instance['title'],
258
+ 'item_template' => plugin_dir_path( __FILE__ ) . 'tpl/item.php',
259
+ 'navigation' => 'side',
260
+ 'item_title_tag' => $instance['design']['item_title']['tag'],
261
+ 'items' => ! empty( $instance['items'] ) ? $instance['items'] : array(),
262
+ 'attributes' => array(
263
+ 'widget' => 'anything',
264
+ 'item_count' => ! empty( $instance['items'] ) ? count( $instance['items'] ) : 0,
265
+ 'loop' => ! empty( $instance['loop_posts'] ),
266
+ 'carousel_settings' => $this->carousel_settings_template_variables( $instance['carousel_settings'] ),
267
+ 'responsive' => $this->responsive_template_variables( $instance['responsive'] ),
268
+ ),
269
+ ),
270
+ );
271
+ }
272
+
273
+ function render_item_content( $item, $instance ) {
274
+ echo apply_filters( 'siteorigin_widgets_anything_carousel_render_item_content', $item['content_text'], $item, $instance );
275
+ }
276
+
277
+ function get_form_teaser() {
278
+ if ( class_exists( 'SiteOrigin_Premium' ) ) {
279
+ return false;
280
+ }
281
+
282
+ return sprintf(
283
+ __( 'Add widgets and layouts to your carousel items with %sSiteOrigin Premium%s.', 'so-widgets-bundle' ),
284
+ '<a href="https://siteorigin.com/downloads/premium/?featured_addon=plugin/carousel" target="_blank" rel="noopener noreferrer">',
285
+ '</a>'
286
+ );
287
+ }
288
+ }
289
+
290
+ siteorigin_widget_register( 'sow-anything-carousel', __FILE__, 'SiteOrigin_Widget_Anything_Carousel_Widget' );
widgets/anything-carousel/assets/banner.svg ADDED
@@ -0,0 +1 @@
 
1
+ <svg enable-background="new 0 0 120 120" viewBox="0 0 120 120" xmlns="http://www.w3.org/2000/svg"><path d="m0 0h120v120h-120z" fill="#1880b6"/><g stroke="#324249" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"><path d="m35 43h50v34h-50z" fill="#86d7f2"/><path d="m43 37h34v46h-34z" fill="#f0eed5"/><path d="m43 37h34v24h-34z" fill="#86d7f2"/><path d="m62.2 47.8-13.2 13.2h28v-4l-9.2-9.2c-1.5-1.5-4.1-1.5-5.6 0z" fill="#f0eed5"/><circle cx="52" cy="46" fill="#f0eed5" r="3"/><path d="m49 69h22" fill="none"/><path d="m49 75h18" fill="none"/></g></svg>
widgets/anything-carousel/css/fonts/carousel-arrows.eot ADDED
Binary file
widgets/anything-carousel/css/fonts/carousel-arrows.svg ADDED
@@ -0,0 +1,12 @@
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0" standalone="no"?>
2
+ <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
3
+ <svg xmlns="http://www.w3.org/2000/svg">
4
+ <metadata>Generated by IcoMoon</metadata>
5
+ <defs>
6
+ <font id="icomoon" horiz-adv-x="1024">
7
+ <font-face units-per-em="1024" ascent="960" descent="-64" />
8
+ <missing-glyph horiz-adv-x="1024" />
9
+ <glyph unicode="&#x20;" horiz-adv-x="512" d="" />
10
+ <glyph unicode="&#xe600;" glyph-name="Arrow-left" horiz-adv-x="658" d="M615.44 861.758l-413.707-413.707 413.707-413.81-103.44-103.44-517.198 517.198 517.198 517.198z" />
11
+ <glyph unicode="&#xe601;" glyph-name="Arrow-right" horiz-adv-x="640" d="M59.452 85.961l361.993 361.993-361.993 362.084 90.51 90.51 452.548-452.548-452.548-452.548z" />
12
+ </font></defs></svg>
widgets/anything-carousel/css/fonts/carousel-arrows.ttf ADDED
Binary file
widgets/anything-carousel/css/fonts/carousel-arrows.woff ADDED
Binary file
widgets/anything-carousel/css/style.css ADDED
@@ -0,0 +1 @@
 
1
+ @font-face{font-family:'anything-carousel-arrows';src:url('fonts/carousel-arrows.eot?-95vnmw');src:url('fonts/carousel-arrows.eot?#iefix-95vnmw') format('embedded-opentype'),url('fonts/carousel-arrows.woff?-95vnmw') format('woff'),url('fonts/carousel-arrows.ttf?-95vnmw') format('truetype'),url('fonts/carousel-arrows.svg?-95vnmw#carousel-arrows') format('svg');font-weight:normal;font-style:normal;font-display:block}.so-widget-sow-anything-carousel .sow-carousel-container{align-items:center;display:flex;justify-content:center}body.rtl .so-widget-sow-anything-carousel .sow-carousel-container{flex-direction:row-reverse}.so-widget-sow-anything-carousel .sow-carousel-container a.sow-carousel-next,.so-widget-sow-anything-carousel .sow-carousel-container a.sow-carousel-previous{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:'anything-carousel-arrows';font-style:normal;font-variant:normal;font-weight:normal;text-align:center;text-decoration:none;text-transform:none}.so-widget-sow-anything-carousel .sow-carousel-container .sow-carousel-wrapper{left:0;overflow:hidden;position:relative;right:0}.so-widget-sow-anything-carousel .sow-carousel-container .sow-carousel-wrapper .sow-carousel-items{zoom:1;margin:0;padding:0;transition:all .45s ease}.so-widget-sow-anything-carousel .sow-carousel-container .sow-carousel-wrapper .sow-carousel-items:before{content:'';display:block}.so-widget-sow-anything-carousel .sow-carousel-container .sow-carousel-wrapper .sow-carousel-items:after{clear:both;content:'';display:table}.so-widget-sow-anything-carousel .sow-carousel-container .sow-carousel-wrapper .sow-carousel-items .sow-carousel-item{display:block}.so-widget-sow-anything-carousel .sow-carousel-container .sow-carousel-wrapper .slick-dots{display:block;line-height:0;list-style:none;margin:0;padding:0;text-align:center;width:100%}.so-widget-sow-anything-carousel .sow-carousel-container .sow-carousel-wrapper .slick-dots li{cursor:pointer;display:inline-block;margin:0;padding:0;position:relative}.so-widget-sow-anything-carousel .sow-carousel-container .sow-carousel-wrapper .slick-dots li button{background:transparent;border:0;color:transparent;cursor:pointer;display:block;font-size:0;font-style:normal;letter-spacing:normal;line-height:0;margin:0;outline:none;padding:0}.so-widget-sow-anything-carousel .sow-carousel-container .sow-carousel-wrapper .slick-dots li button:active,.so-widget-sow-anything-carousel .sow-carousel-container .sow-carousel-wrapper .slick-dots li button:hover,.so-widget-sow-anything-carousel .sow-carousel-container .sow-carousel-wrapper .slick-dots li button:focus{box-shadow:none;outline:none}.so-widget-sow-anything-carousel .sow-carousel-container .sow-carousel-wrapper .slick-dots li button:before{content:'•';display:block;font-family:initial;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;position:relative;text-align:center}.so-widget-sow-anything-carousel .sow-carousel-container .sow-carousel-wrapper .slick-dots li.slick-active button:before{opacity:1}
widgets/anything-carousel/styles/base.less ADDED
@@ -0,0 +1,112 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ @import "../../../base/less/mixins";
2
+
3
+ @item_title_tag: h3;
4
+ @item_title_font: default;
5
+ @item_title_font_weight: default;
6
+ @item_title_font_size: default;
7
+ @item_title_font_style: default;
8
+ @item_title_color: default;
9
+ @bottom_margin: default;
10
+
11
+ @item_font: default;
12
+ @item_font_weight: default;
13
+ @item_font_size: default;
14
+ @item_font_style: default;
15
+ @item_color: default;
16
+ @item_margin: 0 12px 64px 12px;
17
+
18
+ @navigation_arrow_color: #626262;
19
+ @navigation_arrow_color_hover: #000;
20
+ @navigation_arrow_margin: default;
21
+ @navigation_dots_color: #bebebe;
22
+ @navigation_dots_color_hover: #f14e4e;
23
+
24
+ .sow-carousel-container {
25
+ a.sow-carousel-next {
26
+ margin-left: @navigation_arrow_margin;
27
+
28
+ &:after {
29
+ content: "\e601";
30
+ }
31
+ }
32
+
33
+ a.sow-carousel-previous {
34
+ margin-right: @navigation_arrow_margin;
35
+
36
+ &:before {
37
+ content: "\e600";
38
+ }
39
+ }
40
+
41
+ a.sow-carousel-previous,
42
+ a.sow-carousel-next {
43
+ align-items: center;
44
+ border-radius: 16px;
45
+ border: 1px solid @navigation_arrow_color;
46
+ color: @navigation_arrow_color;
47
+ display: flex;
48
+ font-size: 14px;
49
+ height: 32px;
50
+ justify-content: center;
51
+ min-width: 32px; // FF may ignore width due to the parent being a flexbox. It won't ignore min-width.
52
+ width: 32px;
53
+
54
+ &:focus,
55
+ &:hover {
56
+ color: @navigation_arrow_color_hover;
57
+ border-color: @navigation_arrow_color_hover;
58
+ }
59
+ }
60
+
61
+ .sow-carousel-wrapper {
62
+ .sow-carousel-items {
63
+ .sow-carousel-item {
64
+ margin: @item_margin;
65
+
66
+ &,
67
+ & p {
68
+ color: @item_color;
69
+ .font(@item_font, @item_font_weight);
70
+ font-size: @item_font_size;
71
+ font-style: @item_font_style;
72
+ }
73
+
74
+ @{item_title_tag}.sow-carousel-item-title {
75
+ color: @item_title_color;
76
+ .font(@item_title_font, @item_title_font_weight);
77
+ font-size: @item_title_font_size;
78
+ font-style: @item_title_font_style;
79
+ margin: 0;
80
+ margin-bottom: @bottom_margin;
81
+ }
82
+ }
83
+ }
84
+
85
+ .slick-dots {
86
+ li {
87
+
88
+ &.slick-active button:before {
89
+ color: @navigation_dots_color_hover;
90
+ }
91
+
92
+ button {
93
+ height: 12px;
94
+
95
+ &:before {
96
+ color: @navigation_dots_color;
97
+ font-size: 41px;
98
+ margin-right: 5px;
99
+ }
100
+
101
+ &:hover:before {
102
+ color: @navigation_dots_color_hover;
103
+ }
104
+ }
105
+
106
+ &:last-of-type button:before {
107
+ margin-right: 0;
108
+ }
109
+ }
110
+ }
111
+ }
112
+ }
widgets/anything-carousel/tpl/default.php ADDED
@@ -0,0 +1,4 @@
 
 
 
 
1
+ <?php
2
+ if ( ! empty( $settings['items'] ) ) {
3
+ $this->render_template( $settings, $args );
4
+ }
widgets/anything-carousel/tpl/item.php ADDED
@@ -0,0 +1,12 @@
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php foreach ( $settings['items'] as $item ) : ?>
2
+ <div class="sow-carousel-item" tabindex="-1">
3
+ <?php if ( ! empty( $item['title'] ) ) : ?>
4
+ <<?php echo esc_attr( $settings['item_title_tag'] ); ?> class="sow-carousel-item-title"><?php echo esc_html( $item['title'] ); ?></<?php echo esc_attr( $settings['item_title_tag'] ); ?>>
5
+ <?php endif; ?>
6
+
7
+ <div class="sow-carousel-content">
8
+ <?php $this->render_item_content( $item, $instance ); ?>
9
+ </div>
10
+ </div>
11
+ <?php
12
+ endforeach;
widgets/features/features.php CHANGED
@@ -13,8 +13,9 @@ class SiteOrigin_Widget_Features_Widget extends SiteOrigin_Widget {
13
  'sow-features',
14
  __( 'SiteOrigin Features', 'so-widgets-bundle' ),
15
  array(
16
- 'description' => __( 'Displays a block of features with icons.', 'so-widgets-bundle' ),
17
- 'help' => 'https://siteorigin.com/widgets-bundle/features-widget-documentation/'
 
18
  ),
19
  array(),
20
  false,
13
  'sow-features',
14
  __( 'SiteOrigin Features', 'so-widgets-bundle' ),
15
  array(
16
+ 'description' => __( 'Displays a block of features with icons.', 'so-widgets-bundle' ),
17
+ 'help' => 'https://siteorigin.com/widgets-bundle/features-widget-documentation/',
18
+ 'panels_title' => false,
19
  ),
20
  array(),
21
  false,
widgets/headline/headline.php CHANGED
@@ -31,6 +31,17 @@ class SiteOrigin_Widget_Headline_Widget extends SiteOrigin_Widget {
31
  add_filter( 'siteorigin_widgets_wrapper_data_' . $this->id_base, array( $this, 'wrapper_data_filter' ), 10, 2 );
32
  }
33
 
 
 
 
 
 
 
 
 
 
 
 
34
  function get_widget_form(){
35
  return array(
36
  'headline' => array(
@@ -93,6 +104,16 @@ class SiteOrigin_Widget_Headline_Widget extends SiteOrigin_Widget {
93
  'justify' => __( 'Justify', 'so-widgets-bundle' )
94
  )
95
  ),
 
 
 
 
 
 
 
 
 
 
96
  'line_height' => array(
97
  'type' => 'measurement',
98
  'label' => __('Line Height', 'so-widgets-bundle')
@@ -164,6 +185,16 @@ class SiteOrigin_Widget_Headline_Widget extends SiteOrigin_Widget {
164
  'justify' => __( 'Justify', 'so-widgets-bundle' )
165
  )
166
  ),
 
 
 
 
 
 
 
 
 
 
167
  'line_height' => array(
168
  'type' => 'measurement',
169
  'label' => __('Line Height', 'so-widgets-bundle')
@@ -218,6 +249,15 @@ class SiteOrigin_Widget_Headline_Widget extends SiteOrigin_Widget {
218
  'right' => __( 'Right', 'so-widgets-bundle' ),
219
  ),
220
  ),
 
 
 
 
 
 
 
 
 
221
  'width' => array(
222
  'type' => 'measurement',
223
  'label' => __('Divider Width', 'so-widgets-bundle'),
@@ -271,12 +311,15 @@ class SiteOrigin_Widget_Headline_Widget extends SiteOrigin_Widget {
271
  }
272
 
273
  function get_less_variables( $instance ) {
274
- $less_vars = array();
 
 
275
 
276
  // All the headline attributes
277
  $less_vars['headline_tag'] = isset( $instance['headline']['tag'] ) ? $instance['headline']['tag'] : false;
278
  $less_vars['headline_hover_color'] = isset( $instance['headline']['hover_color'] ) ? $instance['headline']['hover_color'] : false;
279
  $less_vars['headline_align'] = isset( $instance['headline']['align'] ) ? $instance['headline']['align'] : false;
 
280
  $less_vars['headline_color'] = isset( $instance['headline']['color'] ) ? $instance['headline']['color'] : false;
281
  $less_vars['headline_font_size'] = isset( $instance['headline']['font_size'] ) ? $instance['headline']['font_size'] : false;
282
  $less_vars['headline_line_height'] = isset( $instance['headline']['line_height'] ) ? $instance['headline']['line_height'] : false;
@@ -294,6 +337,7 @@ class SiteOrigin_Widget_Headline_Widget extends SiteOrigin_Widget {
294
 
295
  // Set the sub headline attributes
296
  $less_vars['sub_headline_align'] = isset( $instance['sub_headline']['align'] ) ? $instance['sub_headline']['align'] : false;
 
297
  $less_vars['sub_headline_hover_color'] = isset( $instance['sub_headline']['hover_color'] ) ? $instance['sub_headline']['hover_color'] : false;
298
  $less_vars['sub_headline_tag'] = isset( $instance['sub_headline']['tag'] ) ? $instance['sub_headline']['tag'] : false;
299
  $less_vars['sub_headline_color'] = isset( $instance['sub_headline']['color'] ) ? $instance['sub_headline']['color'] : false;
@@ -315,6 +359,7 @@ class SiteOrigin_Widget_Headline_Widget extends SiteOrigin_Widget {
315
  $less_vars['divider_width'] = isset( $instance['divider']['width'] ) ? $instance['divider']['width'] : false;
316
  $less_vars['divider_thickness'] = isset( $instance['divider']['thickness'] ) ? (int) $instance['divider']['thickness'] . 'px' : false;
317
  $less_vars['divider_align'] = isset( $instance['divider']['align'] ) ? $instance['divider']['align'] : false;
 
318
  $less_vars['divider_color'] = isset( $instance['divider']['color'] ) ? $instance['divider']['color'] : false;
319
  $less_vars['divider_margin'] = isset( $instance['divider']['margin'] ) ? $instance['divider']['margin'] : false;
320
 
@@ -415,6 +460,12 @@ class SiteOrigin_Widget_Headline_Widget extends SiteOrigin_Widget {
415
  $instance['divider']['bottom_margin'] = $instance['divider']['top_margin'];
416
  $instance['divider']['bottom_margin_unit'] = $instance['divider']['top_margin_unit'];
417
  }
 
 
 
 
 
 
418
 
419
  return $instance;
420
  }
31
  add_filter( 'siteorigin_widgets_wrapper_data_' . $this->id_base, array( $this, 'wrapper_data_filter' ), 10, 2 );
32
  }
33
 
34
+ function get_settings_form() {
35
+ return array(
36
+ 'responsive_breakpoint' => array(
37
+ 'type' => 'measurement',
38
+ 'label' => __( 'Responsive Breakpoint', 'so-widgets-bundle' ),
39
+ 'default' => '780px',
40
+ 'description' => __( 'The pixel resolution when the mobile alignment settings will be applied.', 'so-widgets-bundle' ),
41
+ ),
42
+ );
43
+ }
44
+
45
  function get_widget_form(){
46
  return array(
47
  'headline' => array(
104
  'justify' => __( 'Justify', 'so-widgets-bundle' )
105
  )
106
  ),
107
+ 'mobile_align' => array(
108
+ 'type' => 'select',
109
+ 'label' => __( 'Mobile alignment', 'so-widgets-bundle' ),
110
+ 'options' => array(
111
+ 'center' => __( 'Center', 'so-widgets-bundle' ),
112
+ 'left' => __( 'Left', 'so-widgets-bundle' ),
113
+ 'right' => __( 'Right', 'so-widgets-bundle' ),
114
+ 'justify' => __( 'Justify', 'so-widgets-bundle' ),
115
+ ),
116
+ ),
117
  'line_height' => array(
118
  'type' => 'measurement',
119
  'label' => __('Line Height', 'so-widgets-bundle')
185
  'justify' => __( 'Justify', 'so-widgets-bundle' )
186
  )
187
  ),
188
+ 'mobile_align' => array(
189
+ 'type' => 'select',
190
+ 'label' => __( 'Mobile alignment', 'so-widgets-bundle' ),
191
+ 'options' => array(
192
+ 'center' => __( 'Center', 'so-widgets-bundle' ),
193
+ 'left' => __( 'Left', 'so-widgets-bundle' ),
194
+ 'right' => __( 'Right', 'so-widgets-bundle' ),
195
+ 'justify' => __( 'Justify', 'so-widgets-bundle' ),
196
+ ),
197
+ ),
198
  'line_height' => array(
199
  'type' => 'measurement',
200
  'label' => __('Line Height', 'so-widgets-bundle')
249
  'right' => __( 'Right', 'so-widgets-bundle' ),
250
  ),
251
  ),
252
+ 'mobile_align' => array(
253
+ 'type' => 'select',
254
+ 'label' => __( 'Mobile alignment', 'so-widgets-bundle' ),
255
+ 'options' => array(
256
+ 'center' => __( 'Center', 'so-widgets-bundle' ),
257
+ 'left' => __( 'Left', 'so-widgets-bundle' ),
258
+ 'right' => __( 'Right', 'so-widgets-bundle' ),
259
+ ),
260
+ ),
261
  'width' => array(
262
  'type' => 'measurement',
263
  'label' => __('Divider Width', 'so-widgets-bundle'),
311
  }
312
 
313
  function get_less_variables( $instance ) {
314
+ $less_vars = array(
315
+ 'responsive_breakpoint' => $this->get_global_settings( 'responsive_breakpoint' ),
316
+ );
317
 
318
  // All the headline attributes
319
  $less_vars['headline_tag'] = isset( $instance['headline']['tag'] ) ? $instance['headline']['tag'] : false;
320
  $less_vars['headline_hover_color'] = isset( $instance['headline']['hover_color'] ) ? $instance['headline']['hover_color'] : false;
321
  $less_vars['headline_align'] = isset( $instance['headline']['align'] ) ? $instance['headline']['align'] : false;
322
+ $less_vars['headline_mobile_align'] = isset( $instance['headline']['mobile_align'] ) ? $instance['headline']['mobile_align'] : false;
323
  $less_vars['headline_color'] = isset( $instance['headline']['color'] ) ? $instance['headline']['color'] : false;
324
  $less_vars['headline_font_size'] = isset( $instance['headline']['font_size'] ) ? $instance['headline']['font_size'] : false;
325
  $less_vars['headline_line_height'] = isset( $instance['headline']['line_height'] ) ? $instance['headline']['line_height'] : false;
337
 
338
  // Set the sub headline attributes
339
  $less_vars['sub_headline_align'] = isset( $instance['sub_headline']['align'] ) ? $instance['sub_headline']['align'] : false;
340
+ $less_vars['sub_headline_mobile_align'] = isset( $instance['sub_headline']['mobile_align'] ) ? $instance['sub_headline']['mobile_align'] : false;
341
  $less_vars['sub_headline_hover_color'] = isset( $instance['sub_headline']['hover_color'] ) ? $instance['sub_headline']['hover_color'] : false;
342
  $less_vars['sub_headline_tag'] = isset( $instance['sub_headline']['tag'] ) ? $instance['sub_headline']['tag'] : false;
343
  $less_vars['sub_headline_color'] = isset( $instance['sub_headline']['color'] ) ? $instance['sub_headline']['color'] : false;
359
  $less_vars['divider_width'] = isset( $instance['divider']['width'] ) ? $instance['divider']['width'] : false;
360
  $less_vars['divider_thickness'] = isset( $instance['divider']['thickness'] ) ? (int) $instance['divider']['thickness'] . 'px' : false;
361
  $less_vars['divider_align'] = isset( $instance['divider']['align'] ) ? $instance['divider']['align'] : false;
362
+ $less_vars['divider_mobile_align'] = isset( $instance['divider']['mobile_align'] ) ? $instance['divider']['mobile_align'] : false;
363
  $less_vars['divider_color'] = isset( $instance['divider']['color'] ) ? $instance['divider']['color'] : false;
364
  $less_vars['divider_margin'] = isset( $instance['divider']['margin'] ) ? $instance['divider']['margin'] : false;
365
 
460
  $instance['divider']['bottom_margin'] = $instance['divider']['top_margin'];
461
  $instance['divider']['bottom_margin_unit'] = $instance['divider']['top_margin_unit'];
462
  }
463
+ // Set Mobile alignment settings to same value as the Alignment for existing widgets
464
+ if ( ! empty( $instance['headline']['align'] ) && empty( $instance['headline']['mobile_align'] ) ) {
465
+ $instance['headline']['mobile_align'] = $instance['headline']['align'];
466
+ $instance['sub_headline']['mobile_align'] = $instance['sub_headline']['align'];
467
+ $instance['divider']['mobile_align'] = $instance['divider']['align'];
468
+ }
469
 
470
  return $instance;
471
  }
widgets/headline/styles/default.less CHANGED
@@ -1,5 +1,7 @@
1
  @import "../../../base/less/mixins";
2
 
 
 
3
  @headline_tag: h1;
4
  @headline_font: default;
5
  @headline_font_weight: 400;
@@ -8,6 +10,7 @@
8
  @headline_line_height: 1.4em;
9
  @headline_margin: default;
10
  @headline_align: center;
 
11
  @headline_color: default;
12
  @headline_hover_color: default;
13
 
@@ -19,6 +22,7 @@
19
  @sub_headline_line_height: 1.4em;
20
  @sub_headline_margin: default;
21
  @sub_headline_align: center;
 
22
  @sub_headline_color: default;
23
  @sub_headline_hover_color: default;
24
 
@@ -28,6 +32,7 @@
28
  @divider_color: #EEEEEE;
29
  @divider_margin: 20px;
30
  @divider_align: center;
 
31
 
32
  .sow-headline-container {
33
 
@@ -42,6 +47,10 @@
42
  margin-top: @headline_margin;
43
  margin-bottom: @headline_margin;
44
 
 
 
 
 
45
  & a {
46
  color: @headline_color;
47
  &:hover {
@@ -61,6 +70,10 @@
61
  margin-top: @sub_headline_margin;
62
  margin-bottom: @sub_headline_margin;
63
 
 
 
 
 
64
  & a {
65
  color: @sub_headline_color;
66
  &:hover {
@@ -76,6 +89,10 @@
76
  margin-top: @divider_margin;
77
  margin-bottom: @divider_margin;
78
 
 
 
 
 
79
  .decoration-inside {
80
  height: 1px;
81
  display: inline-block;
1
  @import "../../../base/less/mixins";
2
 
3
+ @responsive_breakpoint: 780px;
4
+
5
  @headline_tag: h1;
6
  @headline_font: default;
7
  @headline_font_weight: 400;
10
  @headline_line_height: 1.4em;
11
  @headline_margin: default;
12
  @headline_align: center;
13
+ @headline_mobile_align: center;
14
  @headline_color: default;
15
  @headline_hover_color: default;
16
 
22
  @sub_headline_line_height: 1.4em;
23
  @sub_headline_margin: default;
24
  @sub_headline_align: center;
25
+ @sub_headline_mobile_align: center;
26
  @sub_headline_color: default;
27
  @sub_headline_hover_color: default;
28
 
32
  @divider_color: #EEEEEE;
33
  @divider_margin: 20px;
34
  @divider_align: center;
35
+ @divider_mobile_align: center;
36
 
37
  .sow-headline-container {
38
 
47
  margin-top: @headline_margin;
48
  margin-bottom: @headline_margin;
49
 
50
+ @media (max-width: @responsive_breakpoint) {
51
+ text-align: @headline_mobile_align;
52
+ }
53
+
54
  & a {
55
  color: @headline_color;
56
  &:hover {
70
  margin-top: @sub_headline_margin;
71
  margin-bottom: @sub_headline_margin;
72
 
73
+ @media (max-width: @responsive_breakpoint) {
74
+ text-align: @sub_headline_mobile_align;
75
+ }
76
+
77
  & a {
78
  color: @sub_headline_color;
79
  &:hover {
89
  margin-top: @divider_margin;
90
  margin-bottom: @divider_margin;
91
 
92
+ @media (max-width: @responsive_breakpoint) {
93
+ text-align: @divider_mobile_align;
94
+ }
95
+
96
  .decoration-inside {
97
  height: 1px;
98
  display: inline-block;
widgets/hero/hero.php CHANGED
@@ -50,11 +50,22 @@ class SiteOrigin_Widget_Hero_Widget extends SiteOrigin_Widget_Base_Slider {
50
  'label' => __('Hero frames', 'so-widgets-bundle'),
51
  'item_name' => __('Frame', 'so-widgets-bundle'),
52
  'item_label' => array(
53
- 'selector' => "[id*='frames-title']",
54
- 'update_event' => 'change',
55
- 'value_method' => 'val'
 
 
 
 
 
 
 
 
 
 
 
 
56
  ),
57
-
58
  'fields' => array(
59
 
60
  'content' => array(
@@ -138,9 +149,17 @@ class SiteOrigin_Widget_Hero_Widget extends SiteOrigin_Widget_Base_Slider {
138
  'item_name' => __('Video', 'so-widgets-bundle'),
139
  'label' => __('Background videos', 'so-widgets-bundle'),
140
  'item_label' => array(
141
- 'selector' => "[id*='frames-background_videos-url']",
142
- 'update_event' => 'change',
143
- 'value_method' => 'val'
 
 
 
 
 
 
 
 
144
  ),
145
  'fields' => $this->video_form_fields(),
146
  ),
50
  'label' => __('Hero frames', 'so-widgets-bundle'),
51
  'item_name' => __('Frame', 'so-widgets-bundle'),
52
  'item_label' => array(
53
+ 'selectorArray' => array(
54
+ array(
55
+ 'selector' => '.siteorigin-widget-field-background .media-field-wrapper .current .title',
56
+ 'valueMethod' => 'html',
57
+ ),
58
+ array(
59
+ 'selector' => '.siteorigin-widget-field-videos .siteorigin-widget-field-repeater-items .media-field-wrapper .current .title',
60
+ 'valueMethod' => 'html',
61
+ ),
62
+ array(
63
+ 'selector' => ".siteorigin-widget-field-videos [id*='url']",
64
+ 'update_event' => 'change',
65
+ 'value_method' => 'val',
66
+ ),
67
+ ),
68
  ),
 
69
  'fields' => array(
70
 
71
  'content' => array(
149
  'item_name' => __('Video', 'so-widgets-bundle'),
150
  'label' => __('Background videos', 'so-widgets-bundle'),
151
  'item_label' => array(
152
+ 'selectorArray' => array(
153
+ array(
154
+ 'selector' => "[id*='url']",
155
+ 'update_event' => 'change',
156
+ 'value_method' => 'val',
157
+ ),
158
+ array(
159
+ 'selector' => '.siteorigin-widget-field-file .media-field-wrapper .current .title',
160
+ 'valueMethod' => 'html',
161
+ ),
162
+ ),
163
  ),
164
  'fields' => $this->video_form_fields(),
165
  ),
widgets/layout-slider/layout-slider.php CHANGED
@@ -41,11 +41,20 @@ class SiteOrigin_Widget_LayoutSlider_Widget extends SiteOrigin_Widget_Base_Slide
41
  'selectorArray' => array(
42
  array(
43
  'selector' => '.siteorigin-widget-field-image .media-field-wrapper .current .title',
44
- 'valueMethod' => 'html'
45
  ),
46
  array(
47
  'selector' => '.siteorigin-widget-field-videos .siteorigin-widget-field-repeater-items .media-field-wrapper .current .title',
48
- 'valueMethod' => 'html'
 
 
 
 
 
 
 
 
 
49
  ),
50
  ),
51
  ),
@@ -108,9 +117,17 @@ class SiteOrigin_Widget_LayoutSlider_Widget extends SiteOrigin_Widget_Base_Slide
108
  'item_name' => __('Video', 'so-widgets-bundle'),
109
  'label' => __('Background videos', 'so-widgets-bundle'),
110
  'item_label' => array(
111
- 'selector' => "[id*='frames-background_videos-url']",
112
- 'update_event' => 'change',
113
- 'value_method' => 'val'
 
 
 
 
 
 
 
 
114
  ),
115
  'fields' => $this->video_form_fields(),
116
  ),
41
  'selectorArray' => array(
42
  array(
43
  'selector' => '.siteorigin-widget-field-image .media-field-wrapper .current .title',
44
+ 'valueMethod' => 'html',
45
  ),
46
  array(
47
  'selector' => '.siteorigin-widget-field-videos .siteorigin-widget-field-repeater-items .media-field-wrapper .current .title',
48
+ 'valueMethod' => 'html',
49
+ ),
50
+ array(
51
+ 'selector' => '.siteorigin-widget-field-videos .siteorigin-widget-field-repeater-items .media-field-wrapper .current .title',
52
+ 'valueMethod' => 'html',
53
+ ),
54
+ array(
55
+ 'selector' => ".siteorigin-widget-field-videos [id*='url']",
56
+ 'update_event' => 'change',
57
+ 'value_method' => 'val',
58
  ),
59
  ),
60
  ),
117
  'item_name' => __('Video', 'so-widgets-bundle'),
118
  'label' => __('Background videos', 'so-widgets-bundle'),
119
  'item_label' => array(
120
+ 'selectorArray' => array(
121
+ array(
122
+ 'selector' => '.siteorigin-widget-field-file .media-field-wrapper .current .title',
123
+ 'valueMethod' => 'html',
124
+ ),
125
+ array(
126
+ 'selector' => "[id*='url']",
127
+ 'update_event' => 'change',
128
+ 'value_method' => 'val',
129
+ ),
130
+ ),
131
  ),
132
  'fields' => $this->video_form_fields(),
133
  ),
widgets/post-carousel/css/style.css CHANGED
@@ -1 +1 @@
1
- @font-face{font-family:'carousel-arrows';src:url('fonts/carousel-arrows.eot?-95vnmw');src:url('fonts/carousel-arrows.eot?#iefix-95vnmw') format('embedded-opentype'),url('fonts/carousel-arrows.woff?-95vnmw') format('woff'),url('fonts/carousel-arrows.ttf?-95vnmw') format('truetype'),url('fonts/carousel-arrows.svg?-95vnmw#carousel-arrows') format('svg');font-weight:normal;font-style:normal;font-display:block}.sow-carousel-title.has-title{align-items:baseline;display:flex}.sow-carousel-title.has-title .sow-carousel-navigation{margin-left:auto}body.rtl .sow-carousel-title.has-title .sow-carousel-navigation{margin-right:auto;margin-left:initial}.sow-carousel-title .widget-title{display:inline-block;padding-right:15px}.sow-carousel-title .sow-carousel-navigation{float:right}body.rtl .sow-carousel-title .sow-carousel-navigation{float:left}body.rtl .sow-carousel-title .sow-carousel-navigation a{margin-left:0;margin-right:2px}.sow-carousel-title a.sow-carousel-next,.sow-carousel-title a.sow-carousel-previous{font-family:'carousel-arrows';speak:none;display:block;float:right;overflow:hidden;margin-left:2px;margin-top:3px;font-style:normal;font-weight:normal;font-variant:normal;text-transform:none;font-size:8px;line-height:18px;width:18px;text-align:center;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-decoration:none;border-radius:2px}.sow-carousel-title a.sow-carousel-next:before{content:"\e601"}.sow-carousel-title a.sow-carousel-previous:before{content:"\e600"}@media screen and (max-width:600px){.sow-carousel-title a.sow-carousel-previous{display:none}.sow-carousel-title a.sow-carousel-next{display:none}}.widget_sow-carousel{overflow-x:hidden;overflow-y:hidden}.sow-carousel-wrapper{overflow:hidden;position:relative;left:0;right:0}.sow-carousel-wrapper .sow-carousel-items{-webkit-transition:all .45s ease;-moz-transition:all .45s ease;-o-transition:all .45s ease;transition:all .45s ease;margin:0;padding:0;zoom:1}.sow-carousel-wrapper .sow-carousel-items:before{content:'';display:block}.sow-carousel-wrapper .sow-carousel-items:after{content:'';display:table;clear:both}.sow-carousel-wrapper .sow-carousel-items .sow-carousel-item{display:block;margin-right:15px}.sow-carousel-wrapper .sow-carousel-items .sow-carousel-item .sow-carousel-thumbnail{line-height:0}.sow-carousel-wrapper .sow-carousel-items .sow-carousel-item .sow-carousel-thumbnail:focus{outline:none}.sow-carousel-wrapper .sow-carousel-items .sow-carousel-item .sow-carousel-thumbnail a{display:block;background-position:center center}.sow-carousel-wrapper .sow-carousel-items .sow-carousel-item .sow-carousel-thumbnail a,.sow-carousel-wrapper .sow-carousel-items .sow-carousel-item .sow-carousel-thumbnail a span.overlay{-webkit-transition:all .35s ease;-moz-transition:all .35s ease;-o-transition:all .35s ease;transition:all .35s ease}.sow-carousel-wrapper .sow-carousel-items .sow-carousel-item .sow-carousel-thumbnail a span.overlay{display:block;width:100%;height:100%;opacity:0;position:static}.sow-carousel-wrapper .sow-carousel-items .sow-carousel-item .sow-carousel-default-thumbnail{display:block;background:#E8E8E8;background:-webkit-gradient(linear, left bottom, left top, color-stop(0, #E0E0E0), color-stop(1, #E8E8E8));background:-ms-linear-gradient(bottom, #E0E0E0, #E8E8E8);background:-moz-linear-gradient(center bottom, #E0E0E0 0%, #E8E8E8 100%);background:-o-linear-gradient(#E8E8E8, #E0E0E0)}.sow-carousel-wrapper .sow-carousel-items .sow-carousel-item h3{font-size:15px;text-align:center;font-weight:500;color:#474747;margin:10px 0 0 0}.sow-carousel-wrapper .sow-carousel-items .sow-carousel-item h3 a{text-decoration:none;color:inherit}.sow-carousel-wrapper .sow-carousel-items .sow-carousel-loading{display:block;background:url(images/carousel-loader.gif) #F6F6F6 center center no-repeat;margin:0}a.sow-carousel-previous{display:none}a.sow-carousel-next{display:none}
1
+ @font-face{font-family:'post-carousel-arrows';src:url('fonts/carousel-arrows.eot?-95vnmw');src:url('fonts/carousel-arrows.eot?#iefix-95vnmw') format('embedded-opentype'),url('fonts/carousel-arrows.woff?-95vnmw') format('woff'),url('fonts/carousel-arrows.ttf?-95vnmw') format('truetype'),url('fonts/carousel-arrows.svg?-95vnmw#carousel-arrows') format('svg');font-weight:normal;font-style:normal;font-display:block}.so-widget-sow-post-carousel .sow-carousel-title.has-title{align-items:baseline;display:flex}.so-widget-sow-post-carousel .sow-carousel-title.has-title .sow-carousel-navigation{margin-left:auto}body.rtl .so-widget-sow-post-carousel .sow-carousel-title.has-title .sow-carousel-navigation{margin-right:auto;margin-left:initial}.so-widget-sow-post-carousel .sow-carousel-title .widget-title{display:inline-block;padding-right:15px}.so-widget-sow-post-carousel .sow-carousel-title .sow-carousel-navigation{float:right}body.rtl .so-widget-sow-post-carousel .sow-carousel-title .sow-carousel-navigation{float:left}body.rtl .so-widget-sow-post-carousel .sow-carousel-title .sow-carousel-navigation a{margin-left:0;margin-right:2px}.so-widget-sow-post-carousel .sow-carousel-title a.sow-carousel-next,.so-widget-sow-post-carousel .sow-carousel-title a.sow-carousel-previous{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;border-radius:2px;display:block;float:right;font-family:'post-carousel-arrows';font-size:8px;font-style:normal;font-variant:normal;font-weight:normal;line-height:18px;margin-left:2px;margin-top:3px;text-align:center;text-decoration:none;text-transform:none;width:18px}@media screen and (max-width:600px){.so-widget-sow-post-carousel .sow-carousel-title a.sow-carousel-next a.sow-carousel-previous,.so-widget-sow-post-carousel .sow-carousel-title a.sow-carousel-previous a.sow-carousel-previous{display:none}.so-widget-sow-post-carousel .sow-carousel-title a.sow-carousel-next a.sow-carousel-next,.so-widget-sow-post-carousel .sow-carousel-title a.sow-carousel-previous a.sow-carousel-next{display:none}}.so-widget-sow-post-carousel .sow-carousel-title a.sow-carousel-previous:before{content:"\e600"}.so-widget-sow-post-carousel .sow-carousel-title a.sow-carousel-next:before{content:"\e601"}.so-widget-sow-post-carousel .sow-carousel-wrapper{left:0;overflow:hidden;position:relative;right:0}.so-widget-sow-post-carousel .sow-carousel-wrapper .sow-carousel-items{zoom:1;margin:0;padding:0;transition:all .45s ease}.so-widget-sow-post-carousel .sow-carousel-wrapper .sow-carousel-items:before{content:'';display:block}.so-widget-sow-post-carousel .sow-carousel-wrapper .sow-carousel-items:after{clear:both;content:'';display:table}.so-widget-sow-post-carousel .sow-carousel-wrapper .sow-carousel-items .sow-carousel-item{display:block;margin-right:15px}.so-widget-sow-post-carousel .sow-carousel-wrapper .sow-carousel-items .sow-carousel-item .sow-carousel-thumbnail{line-height:0}.so-widget-sow-post-carousel .sow-carousel-wrapper .sow-carousel-items .sow-carousel-item .sow-carousel-thumbnail:focus{outline:none}.so-widget-sow-post-carousel .sow-carousel-wrapper .sow-carousel-items .sow-carousel-item .sow-carousel-thumbnail a{display:block;background-position:center center}.so-widget-sow-post-carousel .sow-carousel-wrapper .sow-carousel-items .sow-carousel-item .sow-carousel-thumbnail a,.so-widget-sow-post-carousel .sow-carousel-wrapper .sow-carousel-items .sow-carousel-item .sow-carousel-thumbnail a span.overlay{transition:all .35s ease}.so-widget-sow-post-carousel .sow-carousel-wrapper .sow-carousel-items .sow-carousel-item .sow-carousel-thumbnail a span.overlay{display:block;width:100%;height:100%;opacity:0;position:static}.so-widget-sow-post-carousel .sow-carousel-wrapper .sow-carousel-items .sow-carousel-item .sow-carousel-default-thumbnail{display:block;background:#E8E8E8;background:-webkit-gradient(linear, left bottom, left top, color-stop(0, #E0E0E0), color-stop(1, #E8E8E8));background:-ms-linear-gradient(bottom, #E0E0E0, #E8E8E8);background:-moz-linear-gradient(center bottom, #E0E0E0 0%, #E8E8E8 100%);background:-o-linear-gradient(#E8E8E8, #E0E0E0)}.so-widget-sow-post-carousel .sow-carousel-wrapper .sow-carousel-items .sow-carousel-item h3{font-size:15px;text-align:center;font-weight:500;color:#474747;margin:10px 0 0 0}.so-widget-sow-post-carousel .sow-carousel-wrapper .sow-carousel-items .sow-carousel-item h3 a{text-decoration:none;color:inherit}.so-widget-sow-post-carousel .sow-carousel-wrapper .sow-carousel-items .sow-carousel-loading{display:block;background:url(images/carousel-loader.gif) #F6F6F6 center center no-repeat;margin:0}
widgets/post-carousel/js/carousel.min.js DELETED
@@ -1 +0,0 @@
1
- var sowb=window.sowb||{};jQuery((function(i){sowb.setupCarousel=function(){i.fn.setSlideTo=function(e){$item=i(this);var s=$item.slick("slickGetOption","slidesToShow"),t=$item.slick("slickGetOption","slidesToScroll");$item.slick("slickSetOption","slidesToShow",1),$item.slick("slickSetOption","slidesToScroll",1),$item.slick("slickGoTo",e),$item.slick("slickSetOption","slidesToShow",s),$item.slick("slickSetOption","slidesToScroll",t)},i(".sow-carousel-wrapper").each((function(){var e=i(this),s=e.find(".sow-carousel-items"),t=e.data("responsive");s.not(".slick-initialized").slick({arrows:!1,infinite:!1,rows:0,rtl:"rtl"==e.data("dir"),touchThreshold:20,variableWidth:!0,accessibility:!1,slidesToScroll:t.desktop_slides,slidesToShow:t.desktop_slides,responsive:[{breakpoint:t.tablet_portrait_breakpoint,settings:{slidesToScroll:t.tablet_portrait_slides,slidesToShow:t.tablet_portrait_slides}},{breakpoint:t.mobile_breakpoint,settings:{slidesToScroll:t.mobile_slides,slidesToShow:t.mobile_slides}}]}),s.on("swipe",(function(i,s,t){e.parent().parent().find(".sow-carousel-"+("left"==t?"next":"prev")).trigger("touchend")})),e.parent().parent().find(".sow-carousel-previous, .sow-carousel-next").on("click touchend",(function(s,t){s.preventDefault();var o=e.find(".sow-carousel-items"),l=o.find(".sow-carousel-item").length,a=l>=e.data("post-count"),n=Math.ceil(o.outerWidth()/o.find(".sow-carousel-item").outerWidth(!0)),c=l-n+1,r=o.slick("slickGetOption","slidesToScroll");if(!a&&(o.slick("slickCurrentSlide")+n>=l-1||o.slick("slickCurrentSlide")+r>c-1)&&!e.data("fetching")){e.data("fetching",!0);var d=e.data("page")+1;o.slick("slickAdd",'<div class="sow-carousel-item sow-carousel-loading"></div>'),i.get(e.data("ajax-url"),{action:"sow_carousel_load",paged:d,instance_hash:e.parent().parent().find('input[name="instance_hash"]').val()},(function(i,s){o.find(".sow-carousel-loading").remove(),o.slick("slickAdd",i.html),l=e.find(".sow-carousel-item").length,e.data("fetching",!1),e.data("page",d),t&&o.find('.sow-carousel-item[tabindex="0"]').trigger("focus")}))}i(this).hasClass("sow-carousel-next")?a&&o.slick("slickCurrentSlide")>=c?e.data("loop-posts-enabled")&&o.slick("slickGoTo",0):o.slick("slickCurrentSlide")+r>c-1?o.setSlideTo(c):o.slick("slickNext"):i(this).hasClass("sow-carousel-previous")&&(e.data("loop-posts-enabled")&&0==o.slick("slickCurrentSlide")?o.slick("slickGoTo",c):o.slick("slickPrev"))}))})),i(document).on("keydown",".sow-carousel-navigation a",(function(e){13!=e.keyCode&&32!=e.keyCode||(e.preventDefault(),i(this).trigger("click"))})),i(document).on("keyup",".sow-carousel-item",(function(e){if(13==e.keyCode&&i(this).find("h3 a")[0].click(),37==e.keyCode||39==e.keyCode){var s=i(this).parents(".sow-carousel-wrapper"),t=s.find(".sow-carousel-items"),o=t.find(".sow-carousel-item").length,l=i(this).data("slick-index"),a=o-(o===s.data("post-count")?0:1);if(37==e.keyCode)--l<0&&(l=a);else if(39==e.keyCode&&++l>=a){if(s.data("fetching"))return;s.parent().find(".sow-carousel-next").trigger("click",!0)}t.slick("slickGoTo",l,!0),s.find(".sow-carousel-item").prop("tabindex",-1),s.find('.sow-carousel-item[data-slick-index="'+l+'"]').trigger("focus").prop("tabindex",0)}})),i(window).on("resize load",(function(){i(".sow-carousel-wrapper").each((function(){var e=i(this),s=e.find(".sow-carousel-items.slick-initialized"),t=Math.ceil(s.outerWidth()/s.find(".sow-carousel-item").outerWidth(!0)),o=e.parent().parent().find(".sow-carousel-navigation");t>=e.data("post-count")?(o.hide(),s.slick("slickSetOption","touchMove",!1),s.slick("slickSetOption","draggable",!1)):o.not(":visible")&&(o.show(),s.slick("slickSetOption","touchMove",!0),s.slick("slickSetOption","draggable",!0));var l=e.data("responsive");window.matchMedia("(min-width: "+l.tablet_portrait_breakpoint+"px) and (max-width: "+l.tablet_landscape_breakpoint+"px) and (orientation: landscape)").matches&&(s.slick("slickSetOption","slidesToShow",l.tablet_landscape_slides),s.slick("slickSetOption","slidesToScroll",l.tablet_landscape_slides))})),i(".sow-carousel-item:first-of-type").prop("tabindex",0)}))},sowb.setupCarousel(),i(sowb).on("setup_widgets",sowb.setupCarousel)})),window.sowb=sowb;
 
widgets/post-carousel/js/script.js ADDED
@@ -0,0 +1,35 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /* globals jQuery, sowb */
2
+
3
+ var sowb = window.sowb || {};
4
+
5
+ jQuery( function ( $ ) {
6
+ $( sowb ).on( 'carousel_load_new_items', function( e, carousel, $items, refocus ) {
7
+ if ( carousel.data( 'widget' ) == 'post' && ! carousel.data( 'fetching' ) ) {
8
+ // Fetch the next batch
9
+ carousel.data( 'fetching', true );
10
+ var page = carousel.data( 'page' ) + 1;
11
+
12
+ $items.slick( 'slickAdd', '<div class="sow-carousel-item sow-carousel-loading"></div>' );
13
+ $.get(
14
+ carousel.data( 'ajax-url' ),
15
+ {
16
+ action: 'sow_carousel_load',
17
+ paged: page,
18
+ instance_hash: carousel.parent().parent().find( 'input[name="instance_hash"]' ).val()
19
+ },
20
+ function ( data ) {
21
+ $items.find( '.sow-carousel-loading' ).remove();
22
+ $items.slick( 'slickAdd', data.html );
23
+ carousel.data( 'fetching', false );
24
+ carousel.data( 'page', page );
25
+
26
+ if ( refocus ) {
27
+ $items.find( '.sow-carousel-item[tabindex="0"]' ).trigger( 'focus' );
28
+ }
29
+ }
30
+ );
31
+ }
32
+ } );
33
+ } );
34
+
35
+ window.sowb = sowb;
widgets/post-carousel/js/script.min.js ADDED
@@ -0,0 +1 @@
 
1
+ var sowb=window.sowb||{};jQuery((function(a){a(sowb).on("carousel_load_new_items",(function(i,o,s,e){if("post"==o.data("widget")&&!o.data("fetching")){o.data("fetching",!0);var n=o.data("page")+1;s.slick("slickAdd",'<div class="sow-carousel-item sow-carousel-loading"></div>'),a.get(o.data("ajax-url"),{action:"sow_carousel_load",paged:n,instance_hash:o.parent().parent().find('input[name="instance_hash"]').val()},(function(a){s.find(".sow-carousel-loading").remove(),s.slick("slickAdd",a.html),o.data("fetching",!1),o.data("page",n),e&&s.find('.sow-carousel-item[tabindex="0"]').trigger("focus")}))}}))})),window.sowb=sowb;
widgets/post-carousel/post-carousel.php CHANGED
@@ -54,26 +54,28 @@ function sow_carousel_get_next_posts_page() {
54
  if ( ! empty( $_GET['instance_hash'] ) ) {
55
  $instance_hash = $_GET['instance_hash'];
56
  global $wp_widget_factory;
57
- /** @var SiteOrigin_Widget $widget */
58
  $widget = ! empty ( $wp_widget_factory->widgets['SiteOrigin_Widget_PostCarousel_Widget'] ) ?
59
- $wp_widget_factory->widgets['SiteOrigin_Widget_PostCarousel_Widget'] : null;
60
  if ( ! empty( $widget ) ) {
61
  $instance = $widget->get_stored_instance( $instance_hash );
62
  $instance['paged'] = (int) $_GET['paged'];
63
  $template_vars = $widget->get_template_variables( $instance, array() );
 
 
 
64
 
65
- $template_vars['posts'] = sow_carousel_handle_post_limit(
66
- $template_vars['posts'],
67
  $instance['paged']
68
  );
69
  }
70
  }
71
 
72
  // Don't output anything if there are no posts to return;
73
- if ( ! empty( $template_vars['posts']->posts ) ) {
74
  ob_start();
75
- extract( $template_vars );
76
- include 'tpl/carousel-post-loop.php';
77
  $result = array( 'html' => ob_get_clean() );
78
  header( 'content-type: application/json' );
79
  echo json_encode( $result );
@@ -84,7 +86,11 @@ function sow_carousel_get_next_posts_page() {
84
  add_action( 'wp_ajax_sow_carousel_load', 'sow_carousel_get_next_posts_page' );
85
  add_action( 'wp_ajax_nopriv_sow_carousel_load', 'sow_carousel_get_next_posts_page' );
86
 
87
- class SiteOrigin_Widget_PostCarousel_Widget extends SiteOrigin_Widget {
 
 
 
 
88
  function __construct() {
89
  parent::__construct(
90
  'sow-post-carousel',
@@ -103,21 +109,18 @@ class SiteOrigin_Widget_PostCarousel_Widget extends SiteOrigin_Widget {
103
  }
104
 
105
  function initialize() {
 
 
 
106
  $this->register_frontend_scripts(
107
  array(
108
  array(
109
- 'slick',
110
- plugin_dir_url( SOW_BUNDLE_BASE_FILE ) . 'js/lib/slick' . SOW_BUNDLE_JS_SUFFIX . '.js',
111
- array( 'jquery' ),
112
- '1.8.1'
113
- ),
114
- array(
115
- 'sow-carousel-basic',
116
- plugin_dir_url(__FILE__) . 'js/carousel' . SOW_BUNDLE_JS_SUFFIX . '.js',
117
  array( 'jquery', 'slick' ),
118
  SOW_BUNDLE_VERSION,
119
- true
120
- )
121
  )
122
  );
123
 
@@ -125,34 +128,32 @@ class SiteOrigin_Widget_PostCarousel_Widget extends SiteOrigin_Widget {
125
  array(
126
  array(
127
  'sow-carousel-basic',
128
- plugin_dir_url(__FILE__) . 'css/style.css',
129
- array(),
130
- SOW_BUNDLE_VERSION
131
  ),
132
- array(
133
- 'slick',
134
- plugin_dir_url( SOW_BUNDLE_BASE_FILE ) . 'css/lib/slick.css',
135
- array(),
136
- '1.8.1'
137
- )
138
  )
139
  );
140
  }
141
 
142
- private function get_breakpoints() {
143
- return apply_filters(
144
- 'siteorigin_widgets_post_carousel_breakpoints',
145
- array(
146
- 'tablet_landscape' => 1366,
147
- 'tablet_portrait' => 1025,
148
- 'mobile' => 480,
149
- )
 
 
 
 
 
 
 
 
150
  );
151
  }
152
 
153
- function get_widget_form(){
154
- $breakpoints = $this->get_breakpoints();
155
-
156
  return array(
157
  'title' => array(
158
  'type' => 'text',
@@ -241,87 +242,7 @@ class SiteOrigin_Widget_PostCarousel_Widget extends SiteOrigin_Widget {
241
  ),
242
  ),
243
  ),
244
- 'responsive' => array(
245
- 'type' => 'section',
246
- 'label' => __( 'Responsive', 'so-widgets-bundle' ),
247
- 'hide' => true,
248
- 'fields' => array(
249
- 'desktop' => array(
250
- 'type' => 'section',
251
- 'label' => __( 'Desktop', 'so-widgets-bundle' ),
252
- 'hide' => true,
253
- 'fields' => array(
254
- 'slides_to_scroll' => array(
255
- 'type' => 'number',
256
- 'label' => __( 'Slides to scroll', 'so-widgets-bundle' ),
257
- 'description' => __( 'Set the number of slides to scroll per navigation click or swipe on desktop.', 'so-widgets-bundle' ),
258
- 'default' => 1,
259
- ),
260
- ),
261
- ),
262
- 'tablet' => array(
263
- 'type' => 'section',
264
- 'label' => __( 'Tablet', 'so-widgets-bundle' ),
265
- 'hide' => true,
266
- 'fields' => array(
267
- 'landscape' => array(
268
- 'type' => 'section',
269
- 'label' => __( 'Landscape', 'so-widgets-bundle' ),
270
- 'hide' => true,
271
- 'fields' => array(
272
- 'breakpoint' => array(
273
- 'type' => 'number',
274
- 'label' => __( 'Breakpoint', 'so-widgets-bundle' ),
275
- 'default' => $breakpoints['tablet_landscape'],
276
- ),
277
- 'slides_to_scroll' => array(
278
- 'type' => 'number',
279
- 'label' => __( 'Slides to scroll', 'so-widgets-bundle' ),
280
- 'description' => __( 'Set the number of slides to scroll per navigation click or swipe on tablet devices.', 'so-widgets-bundle' ),
281
- 'default' => 2,
282
- ),
283
- ),
284
- ),
285
- 'portrait' => array(
286
- 'type' => 'section',
287
- 'label' => __( 'Portrait', 'so-widgets-bundle' ),
288
- 'hide' => true,
289
- 'fields' => array(
290
- 'breakpoint' => array(
291
- 'type' => 'number',
292
- 'label' => __( 'Breakpoint', 'so-widgets-bundle' ),
293
- 'default' => $breakpoints['tablet_portrait'],
294
- ),
295
- 'slides_to_scroll' => array(
296
- 'type' => 'number',
297
- 'label' => __( 'Slides to scroll', 'so-widgets-bundle' ),
298
- 'description' => __( 'Set the number of slides to scroll per navigation click or swipe on tablet devices.', 'so-widgets-bundle' ),
299
- 'default' => 2,
300
- ),
301
- ),
302
- ),
303
- ),
304
- ),
305
- 'mobile' => array(
306
- 'type' => 'section',
307
- 'label' => __( 'Mobile', 'so-widgets-bundle' ),
308
- 'hide' => true,
309
- 'fields' => array(
310
- 'breakpoint' => array(
311
- 'type' => 'number',
312
- 'label' => __( 'Breakpoint', 'so-widgets-bundle' ),
313
- 'default' => $breakpoints['mobile'],
314
- ),
315
- 'slides_to_scroll' => array(
316
- 'type' => 'number',
317
- 'label' => __( 'Slides to scroll', 'so-widgets-bundle' ),
318
- 'description' => __( ' Set the number of slides to scroll per navigation click or swipe on mobile devices.', 'so-widgets-bundle' ),
319
- 'default' => 1,
320
- ),
321
- ),
322
- ),
323
- ),
324
- ),
325
  );
326
  }
327
 
@@ -370,24 +291,33 @@ class SiteOrigin_Widget_PostCarousel_Widget extends SiteOrigin_Widget {
370
  ) );
371
  $posts = new WP_Query( $query );
372
 
373
- $breakpoints = $this->get_breakpoints();
374
- $responsive_settings = array(
375
- 'desktop_slides' => ! empty ( $instance['responsive']['desktop']['slides_to_scroll'] ) ? $instance['responsive']['desktop']['slides_to_scroll'] : 1,
376
- 'tablet_portrait_slides' => ! empty ( $instance['responsive']['tablet']['portrait']['slides_to_scroll'] ) ? $instance['responsive']['tablet']['portrait']['slides_to_scroll'] : 2,
377
- 'tablet_portrait_breakpoint' => ! empty ( $instance['responsive']['tablet']['portrait']['breakpoint'] ) ? $instance['responsive']['tablet']['portrait']['breakpoint'] : $breakpoints['tablet_portrait'],
378
- 'tablet_landscape_slides' => ! empty ( $instance['responsive']['tablet']['landscape']['slides_to_scroll'] ) ? $instance['responsive']['tablet']['landscape']['slides_to_scroll'] : 2,
379
- 'tablet_landscape_breakpoint' => ! empty ( $instance['responsive']['tablet']['landscape']['breakpoint'] ) ? $instance['responsive']['tablet']['landscape']['breakpoint'] : $breakpoints['tablet_landscape'],
380
- 'mobile_breakpoint' => ! empty ( $instance['responsive']['mobile']['breakpoint'] ) ? $instance['responsive']['mobile']['breakpoint'] : $breakpoints['mobile'],
381
- 'mobile_slides' => ! empty ( $instance['responsive']['mobile']['slides_to_scroll'] ) ? $instance['responsive']['mobile']['slides_to_scroll'] : 1,
382
- );
383
-
384
  return array(
385
- 'title' => $instance['title'],
386
- 'posts' => sow_carousel_handle_post_limit( $posts ),
387
- 'default_thumbnail' => ! empty( $default_thumbnail ) ? $default_thumbnail[0] : '',
388
- 'loop_posts' => ! empty( $instance['loop_posts'] ),
389
- 'link_target' => ! empty( $instance['link_target'] ) ? $instance['link_target'] : 'same',
390
- 'responsive_settings' => $responsive_settings,
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
391
  );
392
  }
393
 
54
  if ( ! empty( $_GET['instance_hash'] ) ) {
55
  $instance_hash = $_GET['instance_hash'];
56
  global $wp_widget_factory;
57
+ /** @var SiteOrigin_Widget $widget */
58
  $widget = ! empty ( $wp_widget_factory->widgets['SiteOrigin_Widget_PostCarousel_Widget'] ) ?
59
+ $wp_widget_factory->widgets['SiteOrigin_Widget_PostCarousel_Widget'] : null;
60
  if ( ! empty( $widget ) ) {
61
  $instance = $widget->get_stored_instance( $instance_hash );
62
  $instance['paged'] = (int) $_GET['paged'];
63
  $template_vars = $widget->get_template_variables( $instance, array() );
64
+ if ( ! empty( $template_vars ) ) {
65
+ $settings = $template_vars['settings'];
66
+ }
67
 
68
+ $settings['posts'] = sow_carousel_handle_post_limit(
69
+ $settings['posts'],
70
  $instance['paged']
71
  );
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 'tpl/item.php';
 
79
  $result = array( 'html' => ob_get_clean() );
80
  header( 'content-type: application/json' );
81
  echo json_encode( $result );
86
  add_action( 'wp_ajax_sow_carousel_load', 'sow_carousel_get_next_posts_page' );
87
  add_action( 'wp_ajax_nopriv_sow_carousel_load', 'sow_carousel_get_next_posts_page' );
88
 
89
+ if ( ! class_exists( 'SiteOrigin_Widget_Base_Carousel' ) ) {
90
+ include_once plugin_dir_path(SOW_BUNDLE_BASE_FILE) . '/base/inc/widgets/base-carousel.class.php';
91
+ }
92
+
93
+ class SiteOrigin_Widget_PostCarousel_Widget extends SiteOrigin_Widget_Base_Carousel {
94
  function __construct() {
95
  parent::__construct(
96
  'sow-post-carousel',
109
  }
110
 
111
  function initialize() {
112
+ // Let the carousel base class do its initialization.
113
+ parent::initialize();
114
+
115
  $this->register_frontend_scripts(
116
  array(
117
  array(
118
+ 'sow-post-carousel',
119
+ plugin_dir_url( __FILE__ ) . 'js/script' . SOW_BUNDLE_JS_SUFFIX . '.js',
 
 
 
 
 
 
120
  array( 'jquery', 'slick' ),
121
  SOW_BUNDLE_VERSION,
122
+ true,
123
+ ),
124
  )
125
  );
126
 
128
  array(
129
  array(
130
  'sow-carousel-basic',
131
+ plugin_dir_url( __FILE__ ) . 'css/style.css',
 
 
132
  ),
 
 
 
 
 
 
133
  )
134
  );
135
  }
136
 
137
+ function override_carousel_settings() {
138
+ return array(
139
+ 'breakpoints' => apply_filters(
140
+ 'siteorigin_widgets_post_carousel_breakpoints',
141
+ array(
142
+ 'tablet_landscape' => 1366,
143
+ 'tablet_portrait' => 1025,
144
+ 'mobile' => 480,
145
+ )
146
+ ),
147
+ 'slides_to_scroll' => array(
148
+ 'desktop' => 1,
149
+ 'tablet_landscape' => 2,
150
+ 'tablet_portrait' => 2,
151
+ 'mobile' => 1,
152
+ ),
153
  );
154
  }
155
 
156
+ function get_widget_form() {
 
 
157
  return array(
158
  'title' => array(
159
  'type' => 'text',
242
  ),
243
  ),
244
  ),
245
+ 'responsive' => $this->responsive_form_fields(),
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
246
  );
247
  }
248
 
291
  ) );
292
  $posts = new WP_Query( $query );
293
 
 
 
 
 
 
 
 
 
 
 
 
294
  return array(
295
+ 'settings' => array(
296
+ 'args' => $args,
297
+ 'title' => $instance['title'],
298
+ 'posts' => sow_carousel_handle_post_limit( $posts ),
299
+ 'default_thumbnail' => ! empty( $default_thumbnail ) ? $default_thumbnail[0] : '',
300
+ 'image_size' => $instance['image_size'],
301
+ 'link_target' => ! empty( $instance['link_target'] ) ? $instance['link_target'] : 'same',
302
+ 'item_template' => plugin_dir_path( __FILE__ ) . 'tpl/item.php',
303
+ 'navigation' => 'title',
304
+ 'attributes' => array(
305
+ 'widget' => 'post',
306
+ 'fetching' => 'false',
307
+ 'page' => 1,
308
+ 'ajax-url' => sow_esc_url( wp_nonce_url( admin_url('admin-ajax.php'), 'widgets_action', '_widgets_nonce' ) ),
309
+
310
+ // Base carousel specific settings.
311
+ 'item_count' => get_query_var( 'sow-total_posts' ),
312
+ 'carousel_settings' => json_encode(
313
+ array(
314
+ 'loop' => ! empty( $instance['loop_posts'] ),
315
+ )
316
+ ),
317
+ 'responsive' => $this->responsive_template_variables( $instance['responsive'] ),
318
+ 'variable_width' => 'true',
319
+ ),
320
+ ),
321
  );
322
  }
323
 
widgets/post-carousel/tpl/base.php CHANGED
@@ -1,45 +1,7 @@
1
  <?php
2
- /**
3
- * @var array $args
4
- * @var string $title
5
- * @var WP_Query $posts
6
- * @var string $default_thumbnail
7
- * @var boolean $loop_posts
8
- * @var string $storage_hash
9
- */
10
-
11
- ?>
12
-
13
- <?php if(! empty( $posts ) && $posts->have_posts() ) : ?>
14
- <div class="sow-carousel-title<?php if ( ! empty( $title ) ) echo ' has-title'; ?>">
15
- <?php if( ! empty( $title ) ) echo $args['before_title'] . esc_html( $title ) . $args['after_title'] ?>
16
-
17
- <div class="sow-carousel-navigation">
18
- <a href="#" class="sow-carousel-next" title="<?php esc_attr_e('Next', 'so-widgets-bundle') ?>" aria-label="<?php esc_attr_e( 'Next Posts', 'so-widgets-bundle') ?>" role="button"></a>
19
- <a href="#" class="sow-carousel-previous" title="<?php esc_attr_e('Previous', 'so-widgets-bundle') ?>" aria-label="<?php esc_attr_e( 'Previous Posts', 'so-widgets-bundle') ?>" role="button"></a>
20
- </div>
21
-
22
- </div>
23
-
24
- <div class="sow-carousel-container">
25
-
26
- <a href="#" class="sow-carousel-previous" title="<?php esc_attr_e('Previous', 'so-widgets-bundle') ?>" aria-label="<?php esc_attr_e( 'Previous Posts', 'so-widgets-bundle') ?>" role="button"></a>
27
-
28
- <a href="#" class="sow-carousel-next" title="<?php esc_attr_e('Next', 'so-widgets-bundle') ?>" aria-label="<?php esc_attr_e( 'Next Posts', 'so-widgets-bundle') ?>" role="button"></a>
29
-
30
- <div class="sow-carousel-wrapper"
31
- data-post-count="<?php echo esc_attr( get_query_var( 'sow-total_posts' ) ); ?>"
32
- data-loop-posts-enabled="<?php echo esc_attr( $loop_posts ) ?>"
33
- data-ajax-url="<?php echo sow_esc_url( wp_nonce_url( admin_url('admin-ajax.php'), 'widgets_action', '_widgets_nonce' ) ) ?>"
34
- data-page="1"
35
- data-fetching="false"
36
- data-dir="<?php echo is_rtl() ? 'rtl' : 'ltr'; ?>"
37
- data-responsive="<?php echo esc_attr( json_encode( $responsive_settings ) ); ?>"
38
- >
39
- <div class="sow-carousel-items">
40
- <?php include plugin_dir_path( __FILE__ ) . 'carousel-post-loop.php' ?>
41
- </div>
42
- </div>
43
- </div>
44
- <input type="hidden" name="instance_hash" value="<?php echo esc_attr( $storage_hash ) ?>"/>
45
- <?php endif; ?>
1
  <?php
2
+ if ( ! empty( $settings['posts'] ) && $settings['posts']->have_posts() ) :
3
+ $this->render_template( $settings, $args );
4
+ ?>
5
+ <input type="hidden" name="instance_hash" value="<?php echo esc_attr( $storage_hash ); ?>"/>
6
+ <?php
7
+ endif;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
widgets/post-carousel/tpl/carousel-post-loop.php DELETED
@@ -1,31 +0,0 @@
1
- <?php
2
- /**
3
- * @var WP_Query $posts
4
- * @var string $default_thumbnail
5
- */
6
- while($posts->have_posts()) : $posts->the_post(); ?>
7
- <div class="sow-carousel-item" tabindex="-1">
8
- <div class="sow-carousel-thumbnail">
9
- <?php if ( has_post_thumbnail() ) : $img = wp_get_attachment_image_src( get_post_thumbnail_id(), $instance['image_size'] ); ?>
10
- <a href="<?php the_permalink() ?>"
11
- <?php echo $link_target == 'new' ? 'target="_blank" rel="noopener noreferrer"' : '' ?>
12
- style="background-image: url( <?php echo sow_esc_url( $img[0] ); ?> )"
13
- aria-labelledby="sow-carousel-id-<?php echo the_ID(); ?>"
14
- tabindex="-1">
15
- <span class="overlay"></span>
16
- </a>
17
- <?php else : ?>
18
- <a href="<?php the_permalink() ?>"
19
- class="sow-carousel-default-thumbnail"
20
- <?php echo $link_target == 'new' ? 'target="_blank" rel="noopener noreferrer"': ''; ?>
21
- <?php echo ! empty( $default_thumbnail ) ?
22
- 'style="background-image: url(' . sow_esc_url( $default_thumbnail ) . ')"' : ''; ?>
23
- aria-labelledby="sow-carousel-id-<?php echo the_ID(); ?>"
24
- tabindex="-1">
25
- <span class="overlay"></span>
26
- </a>
27
- <?php endif; ?>
28
- </div>
29
- <h3><a href="<?php the_permalink() ?>" id="sow-carousel-id-<?php echo the_ID(); ?>" <?php echo $link_target == 'new' ? 'target="_blank" rel="noopener noreferrer"': ''; ?> tabindex="-1"><?php the_title() ?></a></h3>
30
- </div>
31
- <?php endwhile; wp_reset_postdata(); ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
widgets/post-carousel/tpl/item.php ADDED
@@ -0,0 +1,46 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ while( $settings['posts']->have_posts() ) :
3
+ $settings['posts']->the_post();
4
+ ?>
5
+ <div class="sow-carousel-item" tabindex="-1">
6
+ <div class="sow-carousel-thumbnail">
7
+ <?php
8
+ if ( has_post_thumbnail() ) :
9
+ $img = wp_get_attachment_image_src( get_post_thumbnail_id(), $settings['image_size'] );
10
+ ?>
11
+ <a
12
+ href="<?php the_permalink() ?>"
13
+ <?php echo $settings['link_target'] == 'new' ? 'target="_blank" rel="noopener noreferrer"' : '' ?>
14
+ style="background-image: url( <?php echo sow_esc_url( $img[0] ); ?> )"
15
+ aria-labelledby="sow-carousel-id-<?php echo the_ID(); ?>"
16
+ tabindex="-1"
17
+ >
18
+ <span class="overlay"></span>
19
+ </a>
20
+ <?php else : ?>
21
+ <a
22
+ href="<?php the_permalink() ?>"
23
+ class="sow-carousel-default-thumbnail"
24
+ <?php echo $settings['link_target'] == 'new' ? 'target="_blank" rel="noopener noreferrer"': ''; ?>
25
+ <?php echo ! empty( $settings['default_thumbnail'] ) ?'style="background-image: url(' . sow_esc_url( $settings['default_thumbnail'] ) . ')"' : ''; ?>
26
+ aria-labelledby="sow-carousel-id-<?php echo the_ID(); ?>"
27
+ tabindex="-1"
28
+ >
29
+ <span class="overlay"></span>
30
+ </a>
31
+ <?php endif; ?>
32
+ </div>
33
+ <h3>
34
+ <a
35
+ href="<?php the_permalink(); ?>"
36
+ id="sow-carousel-id-<?php echo the_ID(); ?>"
37
+ <?php echo $settings['link_target'] == 'new' ? 'target="_blank" rel="noopener noreferrer"': ''; ?>
38
+ tabindex="-1"
39
+ >
40
+ <?php the_title(); ?>
41
+ </a>
42
+ </h3>
43
+ </div>
44
+ <?php
45
+ endwhile;
46
+ wp_reset_postdata();
widgets/slider/slider.php CHANGED
@@ -37,15 +37,20 @@ class SiteOrigin_Widget_Slider_Widget extends SiteOrigin_Widget_Base_Slider {
37
  'selectorArray' => array(
38
  array(
39
  'selector' => '.siteorigin-widget-field-background_image .media-field-wrapper .current .title',
40
- 'valueMethod' => 'html'
41
  ),
42
  array(
43
  'selector' => '.siteorigin-widget-field-background_videos .siteorigin-widget-field-repeater-items .media-field-wrapper .current .title',
44
- 'valueMethod' => 'html'
 
 
 
 
 
45
  ),
46
  array(
47
  'selector' => '.siteorigin-widget-field-foreground_image .media-field-wrapper .current .title',
48
- 'valueMethod' => 'html'
49
  ),
50
  ),
51
  ),
@@ -55,9 +60,17 @@ class SiteOrigin_Widget_Slider_Widget extends SiteOrigin_Widget_Base_Slider {
55
  'item_name' => __('Video', 'so-widgets-bundle'),
56
  'label' => __('Background videos', 'so-widgets-bundle'),
57
  'item_label' => array(
58
- 'selector' => "[id*='frames-background_videos-url']",
59
- 'update_event' => 'change',
60
- 'value_method' => 'val'
 
 
 
 
 
 
 
 
61
  ),
62
  'fields' => $this->video_form_fields(),
63
  ),
@@ -204,7 +217,7 @@ class SiteOrigin_Widget_Slider_Widget extends SiteOrigin_Widget_Base_Slider {
204
  'full',
205
  ! empty( $frame['foreground_image_fallback'] ) ? $frame['foreground_image_fallback'] : '',
206
  array(
207
- 'class' => 'sow-slider-foreground-image',
208
  'loading' => 'eager',
209
  'style' => ! empty( $foreground_style_attr ) ? $foreground_style_attr : '',
210
  )
@@ -236,7 +249,7 @@ class SiteOrigin_Widget_Slider_Widget extends SiteOrigin_Widget_Base_Slider {
236
  'full',
237
  !empty( $frame['background_image_fallback'] ) ? $frame['background_image_fallback'] : '',
238
  array(
239
- 'class' => 'sow-slider-background-image',
240
  'loading' => 'eager',
241
  )
242
  );
37
  'selectorArray' => array(
38
  array(
39
  'selector' => '.siteorigin-widget-field-background_image .media-field-wrapper .current .title',
40
+ 'valueMethod' => 'html',
41
  ),
42
  array(
43
  'selector' => '.siteorigin-widget-field-background_videos .siteorigin-widget-field-repeater-items .media-field-wrapper .current .title',
44
+ 'valueMethod' => 'html',
45
+ ),
46
+ array(
47
+ 'selector' => ".siteorigin-widget-field-background_videos [id*='url']",
48
+ 'update_event' => 'change',
49
+ 'value_method' => 'val',
50
  ),
51
  array(
52
  'selector' => '.siteorigin-widget-field-foreground_image .media-field-wrapper .current .title',
53
+ 'valueMethod' => 'html',
54
  ),
55
  ),
56
  ),
60
  'item_name' => __('Video', 'so-widgets-bundle'),
61
  'label' => __('Background videos', 'so-widgets-bundle'),
62
  'item_label' => array(
63
+ 'selectorArray' => array(
64
+ array(
65
+ 'selector' => '.siteorigin-widget-field-file .media-field-wrapper .current .title',
66
+ 'valueMethod' => 'html',
67
+ ),
68
+ array(
69
+ 'selector' => "[id*='url']",
70
+ 'update_event' => 'change',
71
+ 'value_method' => 'val',
72
+ ),
73
+ ),
74
  ),
75
  'fields' => $this->video_form_fields(),
76
  ),
217
  'full',
218
  ! empty( $frame['foreground_image_fallback'] ) ? $frame['foreground_image_fallback'] : '',
219
  array(
220
+ 'class' => 'sow-slider-foreground-image skip-lazy',
221
  'loading' => 'eager',
222
  'style' => ! empty( $foreground_style_attr ) ? $foreground_style_attr : '',
223
  )
249
  'full',
250
  !empty( $frame['background_image_fallback'] ) ? $frame['background_image_fallback'] : '',
251
  array(
252
+ 'class' => 'sow-slider-background-image skip-lazy',
253
  'loading' => 'eager',
254
  )
255
  );
widgets/video/tpl/default.php CHANGED
@@ -5,6 +5,7 @@
5
  * @var $player_id
6
  * @var $autoplay
7
  * @var $related_videos
 
8
  * @var $skin_class
9
  * @var $is_skinnable_video_host
10
  * @var $sources
@@ -48,17 +49,20 @@ do_action( 'siteorigin_widgets_sow-video_before_video', $instance );
48
 
49
  <div class="sow-video-wrapper<?php if ( $fitvids ) echo ' use-fitvids'; ?>">
50
  <?php if ( $is_skinnable_video_host ) : ?>
51
- <video
52
- <?php foreach ( $video_args as $k => $v ) : ?>
53
- <?php echo $k . '="' . $v . '" '; ?>
54
- <?php endforeach; ?>
55
- >
56
- <?php foreach ( $sources as $source ) : ?>
57
- <source type="<?php echo esc_attr( $source['video_type'] ) ?>" src="<?php echo esc_url( $source['src'] ) ?>"/>
58
- <?php endforeach; ?>
59
- </video>
 
 
 
60
  <?php else : ?>
61
- <?php echo $so_video->get_video_oembed( $src, $autoplay, $related_videos, $loop ); ?>
62
  <?php endif; ?>
63
  </div>
64
  <?php do_action( 'siteorigin_widgets_sow-video_after_video', $instance ); ?>
5
  * @var $player_id
6
  * @var $autoplay
7
  * @var $related_videos
8
+ * @var $controls
9
  * @var $skin_class
10
  * @var $is_skinnable_video_host
11
  * @var $sources
49
 
50
  <div class="sow-video-wrapper<?php if ( $fitvids ) echo ' use-fitvids'; ?>">
51
  <?php if ( $is_skinnable_video_host ) : ?>
52
+ <video
53
+ <?php foreach ( $video_args as $k => $v ) : ?>
54
+ <?php echo $k . '="' . $v . '" '; ?>
55
+ <?php endforeach; ?>
56
+ <?php if ( ! empty( $controls ) ): ?>
57
+ <?php echo 'controls'; ?>
58
+ <?php endif; ?>
59
+ >
60
+ <?php foreach ( $sources as $source ) : ?>
61
+ <source type="<?php echo esc_attr( $source['video_type'] ) ?>" src="<?php echo esc_url( $source['src'] ) ?>"/>
62
+ <?php endforeach; ?>
63
+ </video>
64
  <?php else : ?>
65
+ <?php echo $so_video->get_video_oembed( $src, $autoplay, $related_videos, $loop ); ?>
66
  <?php endif; ?>
67
  </div>
68
  <?php do_action( 'siteorigin_widgets_sow-video_after_video', $instance ); ?>
widgets/video/video.php CHANGED
@@ -131,6 +131,16 @@ class SiteOrigin_Widget_Video_Widget extends SiteOrigin_Widget {
131
  'video_type[self]' => array( 'hide' ),
132
  )
133
  ),
 
 
 
 
 
 
 
 
 
 
134
  ),
135
  ),
136
  );
@@ -228,6 +238,7 @@ class SiteOrigin_Widget_Video_Widget extends SiteOrigin_Widget {
228
  'autoplay' => ! empty( $instance['playback']['autoplay'] ),
229
  'loop' => ! empty( $instance['playback']['loop'] ),
230
  'related_videos' => ! empty( $instance['playback']['related_videos'] ),
 
231
  'skin_class' => 'default',
232
  'fitvids' => ! empty( $instance['playback']['fitvids'] ),
233
  );
131
  'video_type[self]' => array( 'hide' ),
132
  )
133
  ),
134
+ 'controls' => array(
135
+ 'type' => 'checkbox',
136
+ 'default' => false,
137
+ 'label' => __( 'Controls', 'so-widgets-bundle' ),
138
+ 'description' => __( 'Enable browser video controls.', 'so-widgets-bundle' ),
139
+ 'state_handler' => array(
140
+ 'video_type[self]' => array( 'show' ),
141
+ 'video_type[external]' => array( 'hide' ),
142
+ )
143
+ ),
144
  ),
145
  ),
146
  );
238
  'autoplay' => ! empty( $instance['playback']['autoplay'] ),
239
  'loop' => ! empty( $instance['playback']['loop'] ),
240
  'related_videos' => ! empty( $instance['playback']['related_videos'] ),
241
+ 'controls' => ! empty( $instance['playback']['controls'] ),
242
  'skin_class' => 'default',
243
  'fitvids' => ! empty( $instance['playback']['fitvids'] ),
244
  );