SiteOrigin Widgets Bundle - Version 1.6.4

Version Description

  • 21 July 2016 =
  • More settings and customizability for Headline widget.
  • Added FitText to Headline and Hero Image widgets.
  • Fixed Pixabay image importing.
Download this release

Release Info

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

Code changes from version 1.6.3 to 1.6.4

base/base.php CHANGED
@@ -227,21 +227,7 @@ add_action( 'admin_print_styles', 'siteorigin_widgets_tinymce_admin_print_styles
227
  */
228
  function siteorigin_widgets_get_measurements_list() {
229
  $measurements = array(
230
- 'px',
231
- '%',
232
- 'in',
233
- 'cm',
234
- 'mm',
235
- 'em',
236
- 'rem',
237
- 'pt',
238
- 'pc',
239
- 'ex',
240
- 'ch',
241
- 'vw',
242
- 'vh',
243
- 'vmin',
244
- 'vmax',
245
  );
246
 
247
  // Allow themes and plugins to trim or enhance the list.
227
  */
228
  function siteorigin_widgets_get_measurements_list() {
229
  $measurements = array(
230
+ 'px', '%', 'in', 'cm', 'mm', 'em', 'rem', 'pt', 'pc', 'ex', 'ch', 'vw', 'vh', 'vmin', 'vmax',
 
 
 
 
 
 
 
 
 
 
 
 
 
 
231
  );
232
 
233
  // Allow themes and plugins to trim or enhance the list.
base/inc/actions.php CHANGED
@@ -116,9 +116,11 @@ function siteorigin_widget_remote_image_search(){
116
 
117
  if( ! is_wp_error( $result ) ) {
118
  $result = json_decode( $result['body'], true );
119
- foreach( $result as & $r ) {
120
- if( !empty( $r['full_url'] ) ) {
121
- $r['import_signature'] = md5( $r['full_url'] . '::' . NONCE_SALT );
 
 
122
  }
123
  }
124
  }
@@ -142,7 +144,11 @@ function siteorigin_widget_image_import(){
142
  'message' => __( 'Nonce error', 'so-widgets-bundle' ),
143
  );
144
  }
145
- else if( empty( $_GET['import_signature'] ) || empty( $_GET['full_url'] ) || md5( $_GET['full_url'] . '::' . NONCE_SALT ) !== $_GET['import_signature'] ) {
 
 
 
 
146
  $result = array(
147
  'error' => true,
148
  'message' => __( 'Signature error', 'so-widgets-bundle' ),
116
 
117
  if( ! is_wp_error( $result ) ) {
118
  $result = json_decode( $result['body'], true );
119
+ if( !empty( $result['items'] ) ) {
120
+ foreach( $result['items'] as & $r ) {
121
+ if( !empty( $r['full_url'] ) ) {
122
+ $r['import_signature'] = md5( $r['full_url'] . '::' . NONCE_SALT );
123
+ }
124
  }
125
  }
126
  }
144
  'message' => __( 'Nonce error', 'so-widgets-bundle' ),
145
  );
146
  }
147
+ else if(
148
+ empty( $_GET['import_signature'] ) ||
149
+ empty( $_GET['full_url'] ) ||
150
+ md5( $_GET['full_url'] . '::' . NONCE_SALT ) !== $_GET['import_signature']
151
+ ) {
152
  $result = array(
153
  'error' => true,
154
  'message' => __( 'Signature error', 'so-widgets-bundle' ),
base/inc/fields/css/media-field.css CHANGED
@@ -129,14 +129,15 @@
129
  background-color: #fff;
130
  padding: 25px;
131
  overflow-y: scroll;
 
132
  }
133
  #so-widgets-image-search-frame #so-widgets-image-search-form {
134
- display: inline-block;
135
- max-width: 420px;
136
  width: 100%;
137
  position: relative;
138
- padding-right: 48px;
139
  margin-bottom: 2px;
 
140
  }
141
  #so-widgets-image-search-frame #so-widgets-image-search-form .so-widgets-search-input {
142
  padding: 9px 12px;
@@ -152,21 +153,26 @@
152
  font-size: 1.2em;
153
  height: 100%;
154
  top: 0;
155
- right: 0;
156
  border-width: 1px;
157
  box-shadow: none;
158
  }
159
  #so-widgets-image-search-frame #so-widgets-image-search-suggestions {
 
 
 
 
 
 
160
  display: none;
161
- float: right;
162
  font-size: 1.1em;
163
- margin-top: 15px;
164
  }
165
  #so-widgets-image-search-frame #so-widgets-image-search-suggestions strong {
166
- margin-right: 0.5em;
167
  }
168
  #so-widgets-image-search-frame #so-widgets-image-search-suggestions ul {
169
- display: inline-block;
170
  list-style: none;
171
  margin: 0;
172
  padding: 0;
129
  background-color: #fff;
130
  padding: 25px;
131
  overflow-y: scroll;
132
+ overflow-x: hidden;
133
  }
134
  #so-widgets-image-search-frame #so-widgets-image-search-form {
135
+ display: block;
 
136
  width: 100%;
137
  position: relative;
138
+ padding-right: 368px;
139
  margin-bottom: 2px;
140
+ box-sizing: border-box;
141
  }
142
  #so-widgets-image-search-frame #so-widgets-image-search-form .so-widgets-search-input {
143
  padding: 9px 12px;
153
  font-size: 1.2em;
154
  height: 100%;
155
  top: 0;
156
+ right: 320px;
157
  border-width: 1px;
158
  box-shadow: none;
159
  }
160
  #so-widgets-image-search-frame #so-widgets-image-search-suggestions {
161
+ position: absolute;
162
+ right: 0;
163
+ top: 0;
164
+ width: 300px;
165
+ height: 40px;
166
+ text-align: right;
167
  display: none;
 
168
  font-size: 1.1em;
169
+ overflow: hidden;
170
  }
171
  #so-widgets-image-search-frame #so-widgets-image-search-suggestions strong {
172
+ display: block;
173
  }
174
  #so-widgets-image-search-frame #so-widgets-image-search-suggestions ul {
175
+ display: block;
176
  list-style: none;
177
  margin: 0;
178
  padding: 0;
base/inc/fields/css/order-field.css ADDED
@@ -0,0 +1,12 @@
 
 
 
 
 
 
 
 
 
 
 
 
1
+ .siteorigin-widget-field-type-order .siteorigin-widget-order-items .siteorigin-widget-order-item {
2
+ display: block;
3
+ max-width: 200px;
4
+ background-color: #f4f4f4;
5
+ margin-bottom: 2px;
6
+ padding: 4px 6px;
7
+ cursor: move;
8
+ border: 1px solid #e0e0e0;
9
+ }
10
+ .siteorigin-widget-field-type-order .siteorigin-widget-order-items .siteorigin-widget-order-item:last-child {
11
+ margin-bottom: 0;
12
+ }
base/inc/fields/js/order-field.js ADDED
@@ -0,0 +1,22 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ( function($){
2
+
3
+ $(document).on( 'sowsetupform', function(e) {
4
+ var $form = $(e.target);
5
+
6
+
7
+ $form.find( '.siteorigin-widget-field-type-order' ).each( function(){
8
+ var $$ = $( this );
9
+
10
+ $$.find( '.siteorigin-widget-order-items' ).sortable( {
11
+ stop: function(){
12
+ var val = [];
13
+ $$.find( '.siteorigin-widget-order-item' ).each( function( i, el ){
14
+ val.push( $(el).data('value') );
15
+ } );
16
+ $$.find('.siteorigin-widget-input').val( val.join(',') );
17
+ }
18
+ } );
19
+ } );
20
+ });
21
+
22
+ }( jQuery ) );
base/inc/fields/js/order-field.min.js ADDED
@@ -0,0 +1 @@
 
1
+ !function(i){i(document).on("sowsetupform",function(t){var e=i(t.target);e.find(".siteorigin-widget-field-type-order").each(function(){var t=i(this);t.find(".siteorigin-widget-order-items").sortable({stop:function(){var e=[];t.find(".siteorigin-widget-order-item").each(function(t,n){e.push(i(n).data("value"))}),t.find(".siteorigin-widget-input").val(e.join(","))}})})})}(jQuery);
base/inc/fields/media.class.php CHANGED
@@ -177,11 +177,12 @@ class SiteOrigin_Widget_Field_Media extends SiteOrigin_Widget_Field_Base {
177
  <button type="submit" class="button-primary so-widgets-search-button">
178
  <span class="dashicons dashicons-search"></span>
179
  </button>
 
 
 
 
 
180
  </form>
181
- <div id="so-widgets-image-search-suggestions">
182
- <strong><?php esc_html_e( 'Related Searches: ', 'so-widgets-bundle' ) ?></strong>
183
- <ul class="so-keywords-list"></ul>
184
- </div>
185
  <div id="so-widgets-image-search-powered">
186
  <?php
187
  printf(
@@ -224,4 +225,4 @@ class SiteOrigin_Widget_Field_Media extends SiteOrigin_Widget_Field_Base {
224
  </script>
225
  <?php
226
  }
227
- }
177
  <button type="submit" class="button-primary so-widgets-search-button">
178
  <span class="dashicons dashicons-search"></span>
179
  </button>
180
+
181
+ <div id="so-widgets-image-search-suggestions">
182
+ <strong><?php esc_html_e( 'Related Searches: ', 'so-widgets-bundle' ) ?></strong>
183
+ <ul class="so-keywords-list"></ul>
184
+ </div>
185
  </form>
 
 
 
 
186
  <div id="so-widgets-image-search-powered">
187
  <?php
188
  printf(
225
  </script>
226
  <?php
227
  }
228
+ }
base/inc/fields/order.class.php ADDED
@@ -0,0 +1,55 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /**
4
+ * Class SiteOrigin_Widget_Field_Order
5
+ */
6
+ class SiteOrigin_Widget_Field_Order extends SiteOrigin_Widget_Field_Base {
7
+
8
+ protected $options;
9
+
10
+ protected function render_field( $value, $instance ) {
11
+
12
+ if( ! empty( $this->options ) && ! empty( $value ) ) {
13
+ ?><div class="siteorigin-widget-order-items"><?php
14
+ foreach( $value as $key ) {
15
+ ?>
16
+ <div class="siteorigin-widget-order-item" data-value="<?php echo esc_attr( $key ) ?>">
17
+ <?php echo esc_html( $this->options[ $key ] ) ?>
18
+ </div>
19
+ <?php
20
+ }
21
+ ?></div><?php
22
+ }
23
+
24
+ ?>
25
+ <input
26
+ type="hidden"
27
+ name="<?php echo esc_attr( $this->element_name ) ?>"
28
+ id="<?php echo esc_attr( $this->element_id ) ?>"
29
+ class="siteorigin-widget-input"
30
+ value="<?php echo esc_attr( implode( ',', $value ) ) ?>">
31
+ <?php
32
+
33
+ }
34
+
35
+ protected function sanitize_field_input( $value, $instance ) {
36
+ if( ! is_array( $value ) ) {
37
+ $value = explode(',', $value);
38
+ $value = array_map( 'trim', $value );
39
+ }
40
+
41
+ foreach( $value as $i => $k ) {
42
+ if( empty( $this->options[$k] ) ) {
43
+ unset( $value[ $i ] );
44
+ }
45
+ }
46
+
47
+ return $value;
48
+ }
49
+
50
+ public function enqueue_scripts() {
51
+ wp_enqueue_script( 'so-order-field', plugin_dir_url(__FILE__) . 'js/order-field' . SOW_BUNDLE_JS_SUFFIX . '.js', array( 'jquery', 'jquery-ui-sortable' ), SOW_BUNDLE_VERSION );
52
+ wp_enqueue_style( 'so-order-field', plugin_dir_url(__FILE__) . 'css/order-field.css', array( ), SOW_BUNDLE_VERSION );
53
+ }
54
+
55
+ }
base/siteorigin-widget.class.php CHANGED
@@ -62,7 +62,7 @@ abstract class SiteOrigin_Widget extends WP_Widget {
62
  ) );
63
 
64
  $control_options = wp_parse_args($widget_options, array(
65
- 'width' => 600,
66
  ) );
67
 
68
  if( empty( $this->widget_class ) ) {
@@ -126,7 +126,7 @@ abstract class SiteOrigin_Widget extends WP_Widget {
126
  $this->form_options = $this->initialize_form();
127
  }
128
 
129
- $instance = $this->modify_instance($instance);
130
 
131
  // Filter the instance
132
  $instance = apply_filters( 'siteorigin_widgets_instance', $instance, $this );
@@ -185,8 +185,16 @@ abstract class SiteOrigin_Widget extends WP_Widget {
185
  $template_html = $this->get_html_content( $instance, $args, $template_vars, $css_name );
186
  }
187
 
 
 
 
 
 
 
 
 
188
  echo $args['before_widget'];
189
- echo '<div class="so-widget-'.$this->id_base.' so-widget-'.$css_name.'">';
190
  echo $template_html;
191
  echo '</div>';
192
  echo $args['after_widget'];
@@ -667,8 +675,8 @@ abstract class SiteOrigin_Widget extends WP_Widget {
667
  $vars = $this->get_less_variables($instance);
668
  if( !empty( $vars ) ){
669
  foreach($vars as $name => $value) {
670
- // Ignore empty string
671
- if( $value === '' || $value === false ) continue;
672
 
673
  $less = preg_replace('/\@'.preg_quote($name).' *\:.*?;/', '@'.$name.': '.$value.';', $less);
674
  }
@@ -887,6 +895,8 @@ abstract class SiteOrigin_Widget extends WP_Widget {
887
  *
888
  * @param $markdown
889
  * @return string The HTML
 
 
890
  */
891
  function parse_markdown( $markdown ){
892
  if( !class_exists('Markdown_Parser') ) include plugin_dir_path(__FILE__).'inc/markdown.php';
62
  ) );
63
 
64
  $control_options = wp_parse_args($widget_options, array(
65
+ 'width' => 800,
66
  ) );
67
 
68
  if( empty( $this->widget_class ) ) {
126
  $this->form_options = $this->initialize_form();
127
  }
128
 
129
+ $instance = $this->modify_instance( $instance );
130
 
131
  // Filter the instance
132
  $instance = apply_filters( 'siteorigin_widgets_instance', $instance, $this );
185
  $template_html = $this->get_html_content( $instance, $args, $template_vars, $css_name );
186
  }
187
 
188
+ $wrapper_classes = apply_filters(
189
+ 'siteorigin_widgets_wrapper_classes_' . $this->id_base,
190
+ array( 'so-widget-' . $this->id_base, 'so-widget-'.$css_name ),
191
+ $instance,
192
+ $this
193
+ );
194
+ $wrapper_classes = array_map( 'sanitize_html_class', $wrapper_classes );
195
+
196
  echo $args['before_widget'];
197
+ echo '<div class="' . esc_attr( implode( ' ', $wrapper_classes ) ) . '">';
198
  echo $template_html;
199
  echo '</div>';
200
  echo $args['after_widget'];
675
  $vars = $this->get_less_variables($instance);
676
  if( !empty( $vars ) ){
677
  foreach($vars as $name => $value) {
678
+ // Ignore empty string, false and null values (but keep '0')
679
+ if( $value === '' || $value === false || $value === null ) continue;
680
 
681
  $less = preg_replace('/\@'.preg_quote($name).' *\:.*?;/', '@'.$name.': '.$value.';', $less);
682
  }
895
  *
896
  * @param $markdown
897
  * @return string The HTML
898
+ *
899
+ * @deprecated Will be removed in version 2.0
900
  */
901
  function parse_markdown( $markdown ){
902
  if( !class_exists('Markdown_Parser') ) include plugin_dir_path(__FILE__).'inc/markdown.php';
js/sow.jquery.fittext.js ADDED
@@ -0,0 +1,51 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /*global jQuery */
2
+ /*!
3
+ * FitText.js 1.2
4
+ *
5
+ * Copyright 2011, Dave Rupert http://daverupert.com
6
+ * Released under the WTFPL license
7
+ * http://sam.zoy.org/wtfpl/
8
+ *
9
+ * Date: Thu May 05 14:23:00 2011 -0600
10
+ */
11
+
12
+ (function ($) {
13
+
14
+ $.fn.fitText = function (kompressor, options) {
15
+
16
+ // Setup options
17
+ var compressor = kompressor || 1,
18
+ settings = $.extend({
19
+ 'minFontSize': Number.NEGATIVE_INFINITY,
20
+ 'maxFontSize': Number.POSITIVE_INFINITY
21
+ }, options);
22
+
23
+ return this.each(function () {
24
+
25
+ // Store the object
26
+ var $this = $(this);
27
+
28
+ // Resizer() resizes items based on the object width divided by the compressor * 10
29
+ var resizer = function () {
30
+ $this.css('font-size', Math.max(Math.min($this.width() / (compressor * 10), parseFloat(settings.maxFontSize)), parseFloat(settings.minFontSize)));
31
+ };
32
+
33
+ // Call once to set.
34
+ resizer();
35
+
36
+ // Call on resize. Opera debounces their resize by default.
37
+ $(window).on('resize.fittext orientationchange.fittext', resizer);
38
+
39
+ });
40
+ };
41
+ })(jQuery);
42
+
43
+ jQuery( function( $ ){
44
+ // Apply FitText to all Widgets Bundle FitText wrappers
45
+ $('.so-widget-fittext-wrapper').find( 'h1,h2,h3,h4,h5,h6' ).each( function(){
46
+ var $$ = $(this);
47
+ $$.fitText( 0.85, {
48
+ maxFontSize: $$.css('font-size')
49
+ } );
50
+ } );
51
+ } );
js/sow.jquery.fittext.min.js ADDED
@@ -0,0 +1 @@
 
1
+ !function(t){t.fn.fitText=function(i,n){var e=i||1,o=t.extend({minFontSize:Number.NEGATIVE_INFINITY,maxFontSize:Number.POSITIVE_INFINITY},n);return this.each(function(){var i=t(this),n=function(){i.css("font-size",Math.max(Math.min(i.width()/(10*e),parseFloat(o.maxFontSize)),parseFloat(o.minFontSize)))};n(),t(window).on("resize.fittext orientationchange.fittext",n)})}}(jQuery),jQuery(function(t){t(".so-widget-fittext-wrapper").find("h1,h2,h3,h4,h5,h6").each(function(){var i=t(this);i.fitText(.85,{maxFontSize:i.css("font-size")})})});
readme.txt CHANGED
@@ -2,8 +2,8 @@
2
  Tags: bundle, widget, button, slider, image, carousel, price table, google maps, tinymce, social links
3
  Requires at least: 3.9
4
  Tested up to: 4.5.3
5
- Stable tag: 1.6.3
6
- Build time: 2016-07-19T11:22:48+02:00
7
  License: GPLv3 or later
8
  Contributors: gpriday, braam-genis
9
 
@@ -51,6 +51,11 @@ The SiteOrigin Widgets Bundle is the perfect platform to build widgets for your
51
 
52
  == Changelog ==
53
 
 
 
 
 
 
54
  = 1.6.3 - 19 July 2016 =
55
  * Added image search functionality to media field.
56
  * Moved actions into their own file.
2
  Tags: bundle, widget, button, slider, image, carousel, price table, google maps, tinymce, social links
3
  Requires at least: 3.9
4
  Tested up to: 4.5.3
5
+ Stable tag: 1.6.4
6
+ Build time: 2016-07-21T09:52:32+02:00
7
  License: GPLv3 or later
8
  Contributors: gpriday, braam-genis
9
 
51
 
52
  == Changelog ==
53
 
54
+ = 1.6.4 - 21 July 2016 =
55
+ * More settings and customizability for Headline widget.
56
+ * Added FitText to Headline and Hero Image widgets.
57
+ * Fixed Pixabay image importing.
58
+
59
  = 1.6.3 - 19 July 2016 =
60
  * Added image search functionality to media field.
61
  * Moved actions into their own file.
so-widgets-bundle.php CHANGED
@@ -2,7 +2,7 @@
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.6.3
6
  Text Domain: so-widgets-bundle
7
  Domain Path: /languages
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.6.3');
16
  define('SOW_BUNDLE_BASE_FILE', __FILE__);
17
 
18
  // Allow JS suffix to be pre-set
@@ -70,6 +70,7 @@ class SiteOrigin_Widgets_Bundle {
70
  add_filter( 'siteorigin_panels_prebuilt_layout', array($this, 'load_missing_widgets') );
71
  add_filter( 'siteorigin_panels_widget_object', array($this, 'load_missing_widget'), 10, 2 );
72
 
 
73
  add_filter( 'wp_enqueue_scripts', array($this, 'enqueue_active_widgets_scripts') );
74
  }
75
 
@@ -606,6 +607,10 @@ class SiteOrigin_Widgets_Bundle {
606
  return $links;
607
  }
608
 
 
 
 
 
609
  /**
610
  * Ensure active widgets' scripts are enqueued at the right time.
611
  */
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.6.4
6
  Text Domain: so-widgets-bundle
7
  Domain Path: /languages
8
  Author: SiteOrigin
12
  License URI: https://www.gnu.org/licenses/gpl-3.0.txt
13
  */
14
 
15
+ define('SOW_BUNDLE_VERSION', '1.6.4');
16
  define('SOW_BUNDLE_BASE_FILE', __FILE__);
17
 
18
  // Allow JS suffix to be pre-set
70
  add_filter( 'siteorigin_panels_prebuilt_layout', array($this, 'load_missing_widgets') );
71
  add_filter( 'siteorigin_panels_widget_object', array($this, 'load_missing_widget'), 10, 2 );
72
 
73
+ add_filter( 'wp_enqueue_scripts', array($this, 'register_general_scripts') );
74
  add_filter( 'wp_enqueue_scripts', array($this, 'enqueue_active_widgets_scripts') );
75
  }
76
 
607
  return $links;
608
  }
609
 
610
+ function register_general_scripts(){
611
+ wp_register_script( 'sow-fittext', plugin_dir_url( __FILE__ ) . 'js/sow.jquery.fittext' . SOW_BUNDLE_JS_SUFFIX . '.js', array( 'jquery' ), '1.2', true );
612
+ }
613
+
614
  /**
615
  * Ensure active widgets' scripts are enqueued at the right time.
616
  */
widgets/headline/headline.php CHANGED
@@ -23,6 +23,10 @@ class SiteOrigin_Widget_Headline_Widget extends SiteOrigin_Widget {
23
  );
24
  }
25
 
 
 
 
 
26
  function initialize_form(){
27
  return array(
28
  'headline' => array(
@@ -36,7 +40,7 @@ class SiteOrigin_Widget_Headline_Widget extends SiteOrigin_Widget {
36
  ),
37
  'tag' => array(
38
  'type' => 'select',
39
- 'label' => __( 'H Tag', 'so-widgets-bundle' ),
40
  'default' => 'h1',
41
  'options' => array(
42
  'h1' => __( 'H1', 'so-widgets-bundle' ),
@@ -45,20 +49,25 @@ class SiteOrigin_Widget_Headline_Widget extends SiteOrigin_Widget {
45
  'h4' => __( 'H4', 'so-widgets-bundle' ),
46
  'h5' => __( 'H5', 'so-widgets-bundle' ),
47
  'h6' => __( 'H6', 'so-widgets-bundle' ),
 
48
  )
49
  ),
 
 
 
 
50
  'font' => array(
51
  'type' => 'font',
52
  'label' => __( 'Font', 'so-widgets-bundle' ),
53
  'default' => 'default'
54
  ),
55
- 'color' => array(
56
- 'type' => 'color',
57
- 'label' => __('Color', 'so-widgets-bundle'),
58
  ),
59
  'align' => array(
60
  'type' => 'select',
61
- 'label' => __( 'Align', 'so-widgets-bundle' ),
62
  'default' => 'center',
63
  'options' => array(
64
  'center' => __( 'Center', 'so-widgets-bundle' ),
@@ -66,7 +75,16 @@ class SiteOrigin_Widget_Headline_Widget extends SiteOrigin_Widget {
66
  'right' => __( 'Right', 'so-widgets-bundle' ),
67
  'justify' => __( 'Justify', 'so-widgets-bundle' )
68
  )
69
- )
 
 
 
 
 
 
 
 
 
70
  )
71
  ),
72
  'sub_headline' => array(
@@ -80,7 +98,7 @@ class SiteOrigin_Widget_Headline_Widget extends SiteOrigin_Widget {
80
  ),
81
  'tag' => array(
82
  'type' => 'select',
83
- 'label' => __( 'H Tag', 'so-widgets-bundle' ),
84
  'default' => 'h3',
85
  'options' => array(
86
  'h1' => __( 'H1', 'so-widgets-bundle' ),
@@ -89,20 +107,25 @@ class SiteOrigin_Widget_Headline_Widget extends SiteOrigin_Widget {
89
  'h4' => __( 'H4', 'so-widgets-bundle' ),
90
  'h5' => __( 'H5', 'so-widgets-bundle' ),
91
  'h6' => __( 'H6', 'so-widgets-bundle' ),
 
92
  )
93
  ),
 
 
 
 
94
  'font' => array(
95
  'type' => 'font',
96
  'label' => __( 'Font', 'so-widgets-bundle' ),
97
  'default' => 'default'
98
  ),
99
- 'color' => array(
100
- 'type' => 'color',
101
- 'label' => __('Color', 'so-widgets-bundle'),
102
  ),
103
  'align' => array(
104
  'type' => 'select',
105
- 'label' => __( 'Align', 'so-widgets-bundle' ),
106
  'default' => 'center',
107
  'options' => array(
108
  'center' => __( 'Center', 'so-widgets-bundle' ),
@@ -110,7 +133,16 @@ class SiteOrigin_Widget_Headline_Widget extends SiteOrigin_Widget {
110
  'right' => __( 'Right', 'so-widgets-bundle' ),
111
  'justify' => __( 'Justify', 'so-widgets-bundle' )
112
  )
113
- )
 
 
 
 
 
 
 
 
 
114
  )
115
  ),
116
  'divider' => array(
@@ -134,32 +166,57 @@ class SiteOrigin_Widget_Headline_Widget extends SiteOrigin_Widget {
134
  'outset' => __('Outset', 'so-widgets-bundle'),
135
  )
136
  ),
137
- 'weight' => array(
138
- 'type' => 'select',
139
- 'label' => __( 'Weight', 'so-widgets-bundle' ),
140
- 'default' => 'thin',
141
- 'options' => array(
142
- 'thin' => __( 'Thin', 'so-widgets-bundle' ),
143
- 'medium' => __( 'Medium', 'so-widgets-bundle' ),
144
- 'thick' => __( 'Thick', 'so-widgets-bundle' ),
145
- )
146
- ),
147
  'color' => array(
148
  'type' => 'color',
149
  'label' => __('Color', 'so-widgets-bundle'),
150
  'default' => '#EEEEEE'
151
  ),
152
- 'side_margin' => array(
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
153
  'type' => 'measurement',
154
- 'label' => __('Side Margin', 'so-widgets-bundle'),
155
- 'default' => '60px',
156
  ),
157
- 'top_margin' => array(
158
  'type' => 'measurement',
159
- 'label' => __('Top/Bottom Margin', 'so-widgets-bundle'),
160
- 'default' => '20px',
161
- )
162
  )
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
163
  )
164
  );
165
  }
@@ -167,77 +224,51 @@ class SiteOrigin_Widget_Headline_Widget extends SiteOrigin_Widget {
167
  function get_less_variables( $instance ) {
168
  $less_vars = array();
169
 
170
- if ( ! empty( $instance['headline'] ) ) {
171
- $headline_styles = $instance['headline'];
172
- if ( ! empty( $headline_styles['tag'] ) ) {
173
- $less_vars['headline_tag'] = $headline_styles['tag'];
174
- }
175
- if ( ! empty( $headline_styles['align'] ) ) {
176
- $less_vars['headline_align'] = $headline_styles['align'];
177
- }
178
- if ( ! empty( $headline_styles['color'] ) ) {
179
- $less_vars['headline_color'] = $headline_styles['color'];
180
- }
181
- if ( ! empty( $headline_styles['font'] ) ) {
182
- $font = siteorigin_widget_get_font( $headline_styles['font'] );
183
- $less_vars['headline_font'] = $font['family'];
184
- if ( ! empty( $font['weight'] ) ) {
185
- $less_vars['headline_font_weight'] = $font['weight'];
186
- }
187
- }
188
- }
189
 
190
- if ( ! empty( $instance['sub_headline'] ) ) {
191
- $sub_headline_styles = $instance['sub_headline'];
192
- if ( ! empty( $sub_headline_styles['align'] ) ) {
193
- $less_vars['sub_headline_align'] = $sub_headline_styles['align'];
194
- }
195
- if ( ! empty( $sub_headline_styles['tag'] ) ) {
196
- $less_vars['sub_headline_tag'] = $sub_headline_styles['tag'];
197
- }
198
- if ( ! empty( $sub_headline_styles['color'] ) ) {
199
- $less_vars['sub_headline_color'] = $sub_headline_styles['color'];
200
- }
201
- if ( ! empty( $sub_headline_styles['font'] ) ) {
202
- $font = siteorigin_widget_get_font( $sub_headline_styles['font'] );
203
- $less_vars['sub_headline_font'] = $font['family'];
204
- if ( ! empty( $font['weight'] ) ) {
205
- $less_vars['sub_headline_font_weight'] = $font['weight'];
206
- }
207
  }
208
  }
209
 
210
- if ( ! empty( $instance['divider'] ) ) {
211
- $divider_styles = $instance['divider'];
212
-
213
- if ( ! empty( $divider_styles['style'] ) ) {
214
- $less_vars['divider_style'] = $divider_styles['style'];
215
- }
216
-
217
- if ( ! empty( $divider_styles['weight'] ) ) {
218
- $less_vars['divider_weight'] = $divider_styles['weight'];
219
- }
220
-
221
- if ( ! empty( $divider_styles['color'] ) ) {
222
- $less_vars['divider_color'] = $divider_styles['color'];
223
- }
224
 
225
- if ( !empty( $divider_styles['top_margin'] ) ) {
226
- $less_vars['divider_top_margin'] = $divider_styles['top_margin'];
 
 
 
 
227
  }
228
-
229
- if ( !empty( $divider_styles['side_margin'] ) ) {
230
- $less_vars['divider_side_margin'] = $divider_styles['side_margin'];
231
- }
232
-
233
-
234
  }
235
 
 
 
 
 
 
 
 
236
  return $less_vars;
237
  }
238
 
239
  function get_google_font_fields( $instance ) {
240
-
241
  return array(
242
  $instance['headline']['font'],
243
  $instance['sub_headline']['font'],
@@ -260,9 +291,71 @@ class SiteOrigin_Widget_Headline_Widget extends SiteOrigin_Widget {
260
  'headline_tag' => $instance['headline']['tag'],
261
  'sub_headline' => $instance['sub_headline']['text'],
262
  'sub_headline_tag' => $instance['sub_headline']['tag'],
 
263
  'has_divider' => ! empty( $instance['divider'] ) && $instance['divider']['style'] != 'none'
264
  );
265
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
266
  }
267
 
268
  siteorigin_widget_register('sow-headline', __FILE__, 'SiteOrigin_Widget_Headline_Widget');
23
  );
24
  }
25
 
26
+ function initialize(){
27
+ add_filter( 'siteorigin_widgets_wrapper_classes_' . $this->id_base, array( $this, 'wrapper_class_filter' ), 10, 2 );
28
+ }
29
+
30
  function initialize_form(){
31
  return array(
32
  'headline' => array(
40
  ),
41
  'tag' => array(
42
  'type' => 'select',
43
+ 'label' => __( 'HTML Tag', 'so-widgets-bundle' ),
44
  'default' => 'h1',
45
  'options' => array(
46
  'h1' => __( 'H1', 'so-widgets-bundle' ),
49
  'h4' => __( 'H4', 'so-widgets-bundle' ),
50
  'h5' => __( 'H5', 'so-widgets-bundle' ),
51
  'h6' => __( 'H6', 'so-widgets-bundle' ),
52
+ 'p' => __( 'Paragraph', 'so-widgets-bundle' ),
53
  )
54
  ),
55
+ 'color' => array(
56
+ 'type' => 'color',
57
+ 'label' => __('Color', 'so-widgets-bundle'),
58
+ ),
59
  'font' => array(
60
  'type' => 'font',
61
  'label' => __( 'Font', 'so-widgets-bundle' ),
62
  'default' => 'default'
63
  ),
64
+ 'font_size' => array(
65
+ 'type' => 'measurement',
66
+ 'label' => __('Font Size', 'so-widgets-bundle')
67
  ),
68
  'align' => array(
69
  'type' => 'select',
70
+ 'label' => __( 'Alignment', 'so-widgets-bundle' ),
71
  'default' => 'center',
72
  'options' => array(
73
  'center' => __( 'Center', 'so-widgets-bundle' ),
75
  'right' => __( 'Right', 'so-widgets-bundle' ),
76
  'justify' => __( 'Justify', 'so-widgets-bundle' )
77
  )
78
+ ),
79
+ 'line_height' => array(
80
+ 'type' => 'measurement',
81
+ 'label' => __('Line Height', 'so-widgets-bundle')
82
+ ),
83
+ 'margin' => array(
84
+ 'type' => 'measurement',
85
+ 'label' => __('Top and Bottom Margin', 'so-widgets-bundle'),
86
+ 'default' => '',
87
+ ),
88
  )
89
  ),
90
  'sub_headline' => array(
98
  ),
99
  'tag' => array(
100
  'type' => 'select',
101
+ 'label' => __( 'HTML Tag', 'so-widgets-bundle' ),
102
  'default' => 'h3',
103
  'options' => array(
104
  'h1' => __( 'H1', 'so-widgets-bundle' ),
107
  'h4' => __( 'H4', 'so-widgets-bundle' ),
108
  'h5' => __( 'H5', 'so-widgets-bundle' ),
109
  'h6' => __( 'H6', 'so-widgets-bundle' ),
110
+ 'p' => __( 'Paragraph', 'so-widgets-bundle' ),
111
  )
112
  ),
113
+ 'color' => array(
114
+ 'type' => 'color',
115
+ 'label' => __('Color', 'so-widgets-bundle'),
116
+ ),
117
  'font' => array(
118
  'type' => 'font',
119
  'label' => __( 'Font', 'so-widgets-bundle' ),
120
  'default' => 'default'
121
  ),
122
+ 'font_size' => array(
123
+ 'type' => 'measurement',
124
+ 'label' => __('Font Size', 'so-widgets-bundle')
125
  ),
126
  'align' => array(
127
  'type' => 'select',
128
+ 'label' => __( 'Alignment', 'so-widgets-bundle' ),
129
  'default' => 'center',
130
  'options' => array(
131
  'center' => __( 'Center', 'so-widgets-bundle' ),
133
  'right' => __( 'Right', 'so-widgets-bundle' ),
134
  'justify' => __( 'Justify', 'so-widgets-bundle' )
135
  )
136
+ ),
137
+ 'line_height' => array(
138
+ 'type' => 'measurement',
139
+ 'label' => __('Line Height', 'so-widgets-bundle')
140
+ ),
141
+ 'margin' => array(
142
+ 'type' => 'measurement',
143
+ 'label' => __('Top and Bottom Margin', 'so-widgets-bundle'),
144
+ 'default' => '',
145
+ ),
146
  )
147
  ),
148
  'divider' => array(
166
  'outset' => __('Outset', 'so-widgets-bundle'),
167
  )
168
  ),
 
 
 
 
 
 
 
 
 
 
169
  'color' => array(
170
  'type' => 'color',
171
  'label' => __('Color', 'so-widgets-bundle'),
172
  'default' => '#EEEEEE'
173
  ),
174
+ 'thickness' => array(
175
+ 'type' => 'slider',
176
+ 'label' => __( 'Thickness', 'so-widgets-bundle' ),
177
+ 'min' => 0,
178
+ 'max' => 20,
179
+ 'default' => 1
180
+ ),
181
+ 'align' => array(
182
+ 'type' => 'select',
183
+ 'label' => __('Alignment', 'so-widgets-bundle'),
184
+ 'default' => 'center',
185
+ 'options' => array(
186
+ 'center' => __( 'Center', 'so-widgets-bundle' ),
187
+ 'left' => __( 'Left', 'so-widgets-bundle' ),
188
+ 'right' => __( 'Right', 'so-widgets-bundle' ),
189
+ ),
190
+ ),
191
+ 'width' => array(
192
  'type' => 'measurement',
193
+ 'label' => __('Divider Width', 'so-widgets-bundle'),
194
+ 'default' => '80%',
195
  ),
196
+ 'margin' => array(
197
  'type' => 'measurement',
198
+ 'label' => __('Top and Bottom Margin', 'so-widgets-bundle'),
199
+ 'default' => '',
200
+ ),
201
  )
202
+ ),
203
+
204
+ 'order' => array(
205
+ 'type' => 'order',
206
+ 'label' => __( 'Element Order', 'so-widgets-bundle' ),
207
+ 'options' => array(
208
+ 'headline' => __( 'Headline', 'so-widgets-bundle' ),
209
+ 'divider' => __( 'Divider', 'so-widgets-bundle' ),
210
+ 'sub_headline' => __( 'Sub Headline', 'so-widgets-bundle' ),
211
+ ),
212
+ 'default' => array( 'headline', 'divider', 'sub_headline' ),
213
+ ),
214
+
215
+ 'fittext' => array(
216
+ 'type' => 'checkbox',
217
+ 'label' => __( 'Use FitText', 'so-widgets-bundle' ),
218
+ 'description' => __( 'Dynamically adjust your heading font size based on screen size.', 'so-widgets-bundle' ),
219
+ 'default' => false,
220
  )
221
  );
222
  }
224
  function get_less_variables( $instance ) {
225
  $less_vars = array();
226
 
227
+ // All the headline attributes
228
+ $less_vars['headline_tag'] = isset( $instance['headline']['tag'] ) ? $instance['headline']['tag'] : false;
229
+ $less_vars['headline_align'] = isset( $instance['headline']['align'] ) ? $instance['headline']['align'] : false;
230
+ $less_vars['headline_color'] = isset( $instance['headline']['color'] ) ? $instance['headline']['color'] : false;
231
+ $less_vars['headline_font_size'] = isset( $instance['headline']['font_size'] ) ? $instance['headline']['font_size'] : false;
232
+ $less_vars['headline_line_height'] = isset( $instance['headline']['line_height'] ) ? $instance['headline']['line_height'] : false;
233
+ $less_vars['headline_margin'] = isset( $instance['headline']['margin'] ) ? $instance['headline']['margin'] : false;
 
 
 
 
 
 
 
 
 
 
 
 
234
 
235
+ // Headline font family and weight
236
+ if ( ! empty( $instance['headline']['font'] ) ) {
237
+ $font = siteorigin_widget_get_font( $instance['headline']['font'] );
238
+ $less_vars['headline_font'] = $font['family'];
239
+ if ( ! empty( $font['weight'] ) ) {
240
+ $less_vars['headline_font_weight'] = $font['weight'];
 
 
 
 
 
 
 
 
 
 
 
241
  }
242
  }
243
 
244
+ // Set the sub headline attributes
245
+ $less_vars['sub_headline_align'] = isset( $instance['sub_headline']['align'] ) ? $instance['sub_headline']['align'] : false;
246
+ $less_vars['sub_headline_tag'] = isset( $instance['sub_headline']['tag'] ) ? $instance['sub_headline']['tag'] : false;
247
+ $less_vars['sub_headline_color'] = isset( $instance['sub_headline']['color'] ) ? $instance['sub_headline']['color'] : false;
248
+ $less_vars['sub_headline_font_size'] = isset( $instance['sub_headline']['font_size'] ) ? $instance['sub_headline']['font_size'] : false;
249
+ $less_vars['sub_headline_line_height'] = isset( $instance['sub_headline']['line_height'] ) ? $instance['sub_headline']['line_height'] : false;
250
+ $less_vars['sub_headline_margin'] = isset( $instance['sub_headline']['margin'] ) ? $instance['sub_headline']['margin'] : false;
 
 
 
 
 
 
 
251
 
252
+ // Sub headline font family and weight
253
+ if ( ! empty( $instance['sub_headline']['font'] ) ) {
254
+ $font = siteorigin_widget_get_font( $instance['sub_headline']['font'] );
255
+ $less_vars['sub_headline_font'] = $font['family'];
256
+ if ( ! empty( $font['weight'] ) ) {
257
+ $less_vars['sub_headline_font_weight'] = $font['weight'];
258
  }
 
 
 
 
 
 
259
  }
260
 
261
+ $less_vars['divider_style'] = isset( $instance['divider']['style'] ) ? $instance['divider']['style'] : false;
262
+ $less_vars['divider_width'] = isset( $instance['divider']['width'] ) ? $instance['divider']['width'] : false;
263
+ $less_vars['divider_thickness'] = isset( $instance['divider']['thickness'] ) ? intval( $instance['divider']['thickness'] ) . 'px' : false;
264
+ $less_vars['divider_align'] = isset( $instance['divider']['align'] ) ? $instance['divider']['align'] : false;
265
+ $less_vars['divider_color'] = isset( $instance['divider']['color'] ) ? $instance['divider']['color'] : false;
266
+ $less_vars['divider_margin'] = isset( $instance['divider']['margin'] ) ? $instance['divider']['margin'] : false;
267
+
268
  return $less_vars;
269
  }
270
 
271
  function get_google_font_fields( $instance ) {
 
272
  return array(
273
  $instance['headline']['font'],
274
  $instance['sub_headline']['font'],
291
  'headline_tag' => $instance['headline']['tag'],
292
  'sub_headline' => $instance['sub_headline']['text'],
293
  'sub_headline_tag' => $instance['sub_headline']['tag'],
294
+ 'order' => $instance['order'],
295
  'has_divider' => ! empty( $instance['divider'] ) && $instance['divider']['style'] != 'none'
296
  );
297
  }
298
+
299
+ function wrapper_class_filter( $classes, $instance ){
300
+ if( $instance[ 'fittext' ] ) {
301
+ $classes[] = 'so-widget-fittext-wrapper';
302
+ wp_enqueue_script( 'sow-fittext' );
303
+ }
304
+ return $classes;
305
+ }
306
+
307
+ function modify_instance( $instance ) {
308
+ // Change the old divider weight into a divider thickness
309
+ if( isset( $instance['divider']['weight'] ) && ! isset( $instance['divider']['thickness'] ) ) {
310
+ switch( $instance['divider']['weight'] ) {
311
+ case 'medium':
312
+ $instance['divider']['thickness'] = 3;
313
+ break;
314
+ case 'thick':
315
+ $instance['divider']['thickness'] = 5;
316
+ break;
317
+ case 'thin' :
318
+ default :
319
+ $instance['divider']['thickness'] = 1;
320
+ break;
321
+ }
322
+ unset( $instance['divider']['weight'] );
323
+ }
324
+
325
+ // Change the old divider side margin into overall width
326
+ if( isset( $instance['divider']['side_margin'] ) && ! isset( $instance['divider']['width'] ) ) {
327
+ global $content_width;
328
+ $value = floatval( $instance['divider']['side_margin'] );
329
+
330
+ switch( $instance['divider']['side_margin_unit'] ) {
331
+ case 'px' :
332
+ $instance['divider']['width'] = ( ( !empty( $content_width ) ? $content_width : 960 ) - ( 2 * $value ) ) . 'px';
333
+ $instance['divider']['width_unit'] = 'px';
334
+ break;
335
+
336
+ case '%' :
337
+ $instance['divider']['width'] = ( 100 - (2 * $value) ) . '%';
338
+ $instance['divider']['width_unit'] = '%';
339
+ break;
340
+
341
+ default :
342
+ $instance['divider']['width'] = '80%';
343
+ $instance['divider']['width_unit'] = '%';
344
+ break;
345
+ }
346
+
347
+ unset( $instance['divider']['side_margin'] );
348
+ unset( $instance['divider']['side_margin_unit'] );
349
+ }
350
+
351
+ // Copy top margin over to bottom margin
352
+ if( isset( $instance['divider']['top_margin'] ) && ! isset( $instance['divider']['bottom_margin'] ) ) {
353
+ $instance['divider']['bottom_margin'] = $instance['divider']['top_margin'];
354
+ $instance['divider']['bottom_margin_unit'] = $instance['divider']['top_margin_unit'];
355
+ }
356
+
357
+ return $instance;
358
+ }
359
  }
360
 
361
  siteorigin_widget_register('sow-headline', __FILE__, 'SiteOrigin_Widget_Headline_Widget');
widgets/headline/styles/default.less CHANGED
@@ -5,41 +5,73 @@
5
  @headline_tag: h1;
6
  @headline_font: default;
7
  @headline_font_weight: 400;
 
 
 
8
  @headline_align: center;
9
  @headline_color: default;
10
 
11
  @sub_headline_tag: h3;
12
  @sub_headline_font: default;
13
  @sub_headline_font_weight: 400;
 
 
 
14
  @sub_headline_align: center;
15
  @sub_headline_color: default;
16
 
17
- @divider_weight: thin;
18
  @divider_style: solid;
 
 
19
  @divider_color: #EEEEEE;
20
- @divider_top_margin: 20px;
21
- @divider_side_margin: 60px;
22
 
23
- #sow-headline-container.sow-headline {
24
 
25
- @{headline_tag} {
26
  .font(@headline_font, @headline_font_weight);
27
  text-align: @headline_align;
28
  color: @headline_color;
29
- line-height: 1.4;
 
 
 
 
30
  }
31
 
32
- @{sub_headline_tag} {
33
  .font(@sub_headline_font, @sub_headline_font_weight);
34
  text-align: @sub_headline_align;
35
  color: @sub_headline_color;
36
- line-height: 1.4;
 
 
 
 
37
  }
38
 
39
  .decoration {
40
- border-top: @divider_weight @divider_style @divider_color;
41
- position: relative;
42
- height: 1px;
43
- margin: @divider_top_margin @divider_side_margin;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
44
  }
45
  }
5
  @headline_tag: h1;
6
  @headline_font: default;
7
  @headline_font_weight: 400;
8
+ @headline_font_size: default;
9
+ @headline_line_height: 1.4em;
10
+ @headline_margin: default;
11
  @headline_align: center;
12
  @headline_color: default;
13
 
14
  @sub_headline_tag: h3;
15
  @sub_headline_font: default;
16
  @sub_headline_font_weight: 400;
17
+ @sub_headline_font_size: default;
18
+ @sub_headline_line_height: 1.4em;
19
+ @sub_headline_margin: default;
20
  @sub_headline_align: center;
21
  @sub_headline_color: default;
22
 
 
23
  @divider_style: solid;
24
+ @divider_width: 80%;
25
+ @divider_thickness: 1px;
26
  @divider_color: #EEEEEE;
27
+ @divider_margin: 20px;
28
+ @divider_align: center;
29
 
30
+ .sow-headline-container {
31
 
32
+ @{headline_tag}.sow-headline {
33
  .font(@headline_font, @headline_font_weight);
34
  text-align: @headline_align;
35
  color: @headline_color;
36
+ line-height: @headline_line_height;
37
+ font-size: @headline_font_size;
38
+
39
+ margin-top: @headline_margin;
40
+ margin-bottom: @headline_margin;
41
  }
42
 
43
+ @{sub_headline_tag}.sow-sub-headline {
44
  .font(@sub_headline_font, @sub_headline_font_weight);
45
  text-align: @sub_headline_align;
46
  color: @sub_headline_color;
47
+ line-height: @sub_headline_line_height;
48
+ font-size: @sub_headline_font_size;
49
+
50
+ margin-top: @sub_headline_margin;
51
+ margin-bottom: @sub_headline_margin;
52
  }
53
 
54
  .decoration {
55
+ line-height: 0em;
56
+ text-align: @divider_align;
57
+
58
+ margin-top: @divider_margin;
59
+ margin-bottom: @divider_margin;
60
+
61
+ .decoration-inside {
62
+ height: 1px;
63
+ display: inline-block;
64
+ border-top: @divider_thickness @divider_style @divider_color;
65
+ width: 100%;
66
+ max-width: @divider_width;
67
+ }
68
+ }
69
+
70
+ *:first-child {
71
+ margin-top: 0 !important;
72
+ }
73
+
74
+ *:last-child {
75
+ margin-bottom: 0 !important;
76
  }
77
  }
widgets/headline/tpl/default.php CHANGED
@@ -1,17 +1,29 @@
1
- <div id="sow-headline-container" class="sow-headline">
 
 
 
 
 
 
 
 
2
 
3
- <?php if ( !empty( $headline ) ) : ?>
4
- <<?php echo $headline_tag ?>><?php echo $headline ?></<?php echo $headline_tag ?>>
5
- <?php endif; ?>
6
-
7
- <?php if ( $has_divider ) : ?>
8
- <div class="decoration">
9
- <div class="decoration-inside"></div>
10
- </div>
11
- <?php endif; ?>
12
-
13
- <?php if ( !empty( $sub_headline ) ) : ?>
14
- <<?php echo $sub_headline_tag ?>><?php echo $sub_headline ?></<?php echo $sub_headline_tag ?>>
15
- <?php endif; ?>
16
 
 
 
 
 
 
 
 
 
17
  </div>
1
+ <div class="sow-headline-container <?php if( $instance['fittext'] ) ?>">
2
+ <?php
3
+ foreach( $order as $item ) {
4
+ switch( $item ) {
5
+ case 'headline' :
6
+ if( !empty( $headline ) ) {
7
+ echo '<' . $headline_tag . ' class="sow-headline">' . wp_kses_post( $headline ) . '</' . $headline_tag . '>';
8
+ }
9
+ break;
10
 
11
+ case 'divider' :
12
+ if( $has_divider ) {
13
+ ?>
14
+ <div class="decoration">
15
+ <div class="decoration-inside"></div>
16
+ </div>
17
+ <?php
18
+ }
19
+ break;
 
 
 
 
20
 
21
+ case 'sub_headline' :
22
+ if( !empty( $sub_headline ) ) {
23
+ echo '<' . $sub_headline_tag . ' class="sow-sub-headline">' . wp_kses_post( $sub_headline ) . '</' . $sub_headline_tag . '>';
24
+ }
25
+ break;
26
+ }
27
+ }
28
+ ?>
29
  </div>
widgets/hero/hero.php CHANGED
@@ -33,6 +33,8 @@ class SiteOrigin_Widget_Hero_Widget extends SiteOrigin_Widget_Base_Slider {
33
  SiteOrigin_Widgets_Bundle::single()->include_widget( 'button' );
34
  }
35
 
 
 
36
  // Let the slider base class do its initialization
37
  parent::initialize();
38
  }
@@ -197,6 +199,13 @@ class SiteOrigin_Widget_Hero_Widget extends SiteOrigin_Widget_Base_Slider {
197
  'default' => '38px',
198
  ),
199
 
 
 
 
 
 
 
 
200
  'heading_shadow' => array(
201
  'type' => 'slider',
202
  'label' => __('Heading shadow intensity', 'so-widgets-bundle'),
@@ -358,6 +367,14 @@ class SiteOrigin_Widget_Hero_Widget extends SiteOrigin_Widget_Base_Slider {
358
  }
359
  }
360
 
 
 
 
 
 
 
 
 
361
  }
362
 
363
  siteorigin_widget_register('sow-hero', __FILE__, 'SiteOrigin_Widget_Hero_Widget');
33
  SiteOrigin_Widgets_Bundle::single()->include_widget( 'button' );
34
  }
35
 
36
+ add_filter( 'siteorigin_widgets_wrapper_classes_' . $this->id_base, array( $this, 'wrapper_class_filter' ), 10, 2 );
37
+
38
  // Let the slider base class do its initialization
39
  parent::initialize();
40
  }
199
  'default' => '38px',
200
  ),
201
 
202
+ 'fittext' => array(
203
+ 'type' => 'checkbox',
204
+ 'label' => __( 'Use FitText', 'so-widgets-bundle' ),
205
+ 'description' => __( 'Dynamically adjust your heading font size based on screen size.', 'so-widgets-bundle' ),
206
+ 'default' => true,
207
+ ),
208
+
209
  'heading_shadow' => array(
210
  'type' => 'slider',
211
  'label' => __('Heading shadow intensity', 'so-widgets-bundle'),
367
  }
368
  }
369
 
370
+ function wrapper_class_filter( $classes, $instance ){
371
+ if( $instance['design']['fittext'] ) {
372
+ $classes[] = 'so-widget-fittext-wrapper';
373
+ wp_enqueue_script( 'sow-fittext' );
374
+ }
375
+ return $classes;
376
+ }
377
+
378
  }
379
 
380
  siteorigin_widget_register('sow-hero', __FILE__, 'SiteOrigin_Widget_Hero_Widget');