Unyson - Version 2.1.20

Version Description

  • Added warning on Theme Settings reset ^
  • FW_Form: Form attributes can be changed in the render method
  • Option type slider and range-slider fixes #210
  • Option type typography: Added filter on standard fonts #212
  • Option type radio and checkboxes: Added inline parameter #216
  • Minor internal fixes
Download this release

Release Info

Developer Unyson
Plugin Icon 128x128 Unyson
Version 2.1.20
Comparing to
See all releases

Code changes from version 2.1.19 to 2.1.20

README.md CHANGED
@@ -15,6 +15,7 @@ If you are not a developer, please use the [Unyson plugin page](https://wordpres
15
  * [Documentation](#documentation)
16
  * [Copyright and license](#copyright-and-license)
17
  * [Contributing to Unyson](#contributing)
 
18
 
19
  ## Installation
20
 
@@ -58,3 +59,29 @@ Translators can contribute new languages to Unyson through [Transifex](https://w
58
  If you have an idea for Unyson, see the [Trello board](https://trello.com/b/Xm9TxasH/unyson-development).
59
 
60
  Theme developers can test the compatibility of their themes with new extensions updates before they are going to be released on [Unyson Extensions Approval](https://github.com/ThemeFuse/Unyson-Extensions-Approval).
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
15
  * [Documentation](#documentation)
16
  * [Copyright and license](#copyright-and-license)
17
  * [Contributing to Unyson](#contributing)
18
+ * [Extensions](#extensions)
19
 
20
  ## Installation
21
 
59
  If you have an idea for Unyson, see the [Trello board](https://trello.com/b/Xm9TxasH/unyson-development).
60
 
61
  Theme developers can test the compatibility of their themes with new extensions updates before they are going to be released on [Unyson Extensions Approval](https://github.com/ThemeFuse/Unyson-Extensions-Approval).
62
+
63
+ ## Extensions
64
+
65
+ If you have a bug report or feature request related to a specific extension, follow one of the links below:
66
+
67
+ * [Page Builder](https://github.com/ThemeFuse/Unyson-PageBuilder-Extension)
68
+ * [Shortcodes](https://github.com/ThemeFuse/Unyson-Shortcodes-Extension)
69
+ * [Mega Menu](https://github.com/ThemeFuse/Unyson-MegaMenu-Extension)
70
+ * [Sidebars](https://github.com/ThemeFuse/Unyson-Sidebars-Extension)
71
+ * [Sliders](https://github.com/ThemeFuse/Unyson-Sliders-Extension)
72
+ * [Portfolio](https://github.com/ThemeFuse/Unyson-Portfolio-Extension)
73
+ * [SEO](https://github.com/ThemeFuse/Unyson-SEO-Extension)
74
+ * [Forms](https://github.com/ThemeFuse/Unyson-Forms-Extension)
75
+ * [Styling](https://github.com/ThemeFuse/Unyson-Styling-Extension)
76
+ * [Feedback](https://github.com/ThemeFuse/Unyson-Feedback-Extension)
77
+ * [Backup](https://github.com/ThemeFuse/Unyson-Backup-Extension)
78
+ * [Breadcrumbs](https://github.com/ThemeFuse/Unyson-Breadcrumbs-Extension)
79
+ * [Learning](https://github.com/ThemeFuse/Unyson-Learning-Extension)
80
+ * [Events](https://github.com/ThemeFuse/Unyson-Events-Extension)
81
+ * [Update](https://github.com/ThemeFuse/Unyson-Update-Extension)
82
+ * [Analytics](https://github.com/ThemeFuse/Unyson-Analytics-Extension)
83
+ * [Builder](https://github.com/ThemeFuse/Unyson-Builder-Extension)
84
+ * [Mailer](https://github.com/ThemeFuse/Unyson-Mailer-Extension)
85
+ * [Social](https://github.com/ThemeFuse/Unyson-Social-Extension)
86
+ * [Population Methods](https://github.com/ThemeFuse/Unyson-PopulationMethods-Extension)
87
+ * [Blog Posts](https://github.com/ThemeFuse/Unyson-Blog-Extension)
framework/core/class-fw-manifest.php CHANGED
@@ -324,10 +324,17 @@ abstract class FW_Manifest
324
  $extension->manifest->get_name(), $extension->manifest->get_version(), $requirement
325
  );
326
  } else {
327
- $requirement = sprintf(
328
- __('%s extension is required (%s)', 'fw'),
329
- ucfirst($this->not_met_requirement['extension']), $requirement
330
- );
 
 
 
 
 
 
 
331
  }
332
  break;
333
  default:
324
  $extension->manifest->get_name(), $extension->manifest->get_version(), $requirement
325
  );
326
  } else {
327
+ if (empty($requirement)) {
328
+ $requirement = sprintf(
329
+ __('%s extension is required', 'fw'),
330
+ ucfirst($this->not_met_requirement['extension'])
331
+ );
332
+ } else {
333
+ $requirement = sprintf(
334
+ __('%s extension is required (%s)', 'fw'),
335
+ ucfirst($this->not_met_requirement['extension']), $requirement
336
+ );
337
+ }
338
  }
339
  break;
340
  default:
framework/core/components/backend.php CHANGED
@@ -824,9 +824,22 @@ final class _FW_Component_Backend
824
  echo fw()->backend->render_options($options, $values);
825
 
826
  $data['submit']['html'] =
827
- '<input type="submit" name="_fw_save_options" value="'. esc_attr__('Save', 'fw') .'" class="button-primary button-large" />' .
 
 
 
 
 
828
  ' &nbsp;&nbsp; ' .
829
- '<input type="submit" name="_fw_reset_options" value="'. esc_attr__('Reset', 'fw') .'" class="button-secondary button-large" />';
 
 
 
 
 
 
 
 
830
 
831
  {
832
  $focus_tab_input_name = '_focus_tab';
824
  echo fw()->backend->render_options($options, $values);
825
 
826
  $data['submit']['html'] =
827
+ fw_html_tag('input', array(
828
+ 'type' => 'submit',
829
+ 'name' => '_fw_save_options',
830
+ 'value' => __('Save', 'fw'),
831
+ 'class' => 'button-primary button-large',
832
+ )) .
833
  ' &nbsp;&nbsp; ' .
834
+ fw_html_tag('input', array(
835
+ 'type' => 'submit',
836
+ 'name' => '_fw_reset_options',
837
+ 'value' => __('Reset', 'fw'),
838
+ 'class' => 'button-secondary button-large',
839
+ 'onclick' => "if (!confirm('". esc_js(
840
+ __("Click OK to reset.\nAll settings will be lost and replaced with default settings!", 'fw')
841
+ ) ."')) return false;"
842
+ ));
843
 
844
  {
845
  $focus_tab_input_name = '_focus_tab';
framework/helpers/class-fw-flash-messages.php CHANGED
@@ -23,7 +23,7 @@ class FW_Flash_Messages
23
  {
24
  $messages = FW_Session::get(self::$session_key);
25
 
26
- if (!is_array($messages)) {
27
  $messages = array_fill_keys(array_keys(self::$available_types), array());
28
  }
29
 
@@ -186,6 +186,19 @@ class FW_Flash_Messages
186
  {
187
  return self::$frontend_printed;
188
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
189
  }
190
 
191
  if (is_admin()) {
23
  {
24
  $messages = FW_Session::get(self::$session_key);
25
 
26
+ if (empty($messages) || !is_array($messages)) {
27
  $messages = array_fill_keys(array_keys(self::$available_types), array());
28
  }
29
 
186
  {
187
  return self::$frontend_printed;
188
  }
189
+
190
+ public static function _get_messages($clear = false)
191
+ {
192
+ self::process_pending_remove_ids();
193
+
194
+ $messages = self::get_messages();
195
+
196
+ if ($clear) {
197
+ self::set_messages(array());
198
+ }
199
+
200
+ return $messages;
201
+ }
202
  }
203
 
204
  if (is_admin()) {
framework/helpers/class-fw-form.php CHANGED
@@ -90,6 +90,9 @@ class FW_Form {
90
  $data['attr'] = array();
91
  }
92
 
 
 
 
93
  $data['attr']['class'] = 'fw_form_' . $this->id;
94
 
95
  if ( isset( $data['attr']['method'] ) ) {
@@ -234,7 +237,9 @@ class FW_Form {
234
  if ( $this->is_valid() ) {
235
  $this->save();
236
 
237
- wp_send_json_success();
 
 
238
  } else {
239
  wp_send_json_error( array(
240
  'errors' => $this->get_errors()
@@ -279,31 +284,6 @@ class FW_Form {
279
  * @param array $data
280
  */
281
  public function render( $data = array() ) {
282
- ?>
283
- <form <?php echo fw_attr_to_html( $this->attr ) ?> ><?php
284
-
285
- if ( ! empty( $this->attr['action'] ) && $this->attr['method'] == 'get' ) {
286
- /**
287
- * Add query vars from action attribute url to hidden inputs to not loose them
288
- * For cases when get_search_link() will return '.../?s=~',
289
- * the 's' will be lost after submit and no search page will be shown
290
- */
291
-
292
- parse_str( parse_url( $this->attr['action'], PHP_URL_QUERY ), $query_vars );
293
-
294
- if ( ! empty( $query_vars ) ) {
295
- foreach ( $query_vars as $var_name => $var_value ) {
296
- ?><input type="hidden" name="<?php print esc_attr( $var_name ) ?>"
297
- value="<?php print fw_htmlspecialchars( $var_value ) ?>" /><?php
298
- }
299
- }
300
- }
301
-
302
- ?><input type="hidden" name="<?php print self::$id_input_name; ?>" value="<?php print $this->id ?>" /><?php
303
- if ( $this->attr['method'] == 'post' ) {
304
- wp_nonce_field( 'submit_fwf', '_nonce_' . md5( $this->id ) );
305
- }
306
-
307
  $render_data = array(
308
  'submit' => array(
309
  'value' => __( 'Submit', 'fw' ),
@@ -313,14 +293,18 @@ class FW_Form {
313
  */
314
  'html' => null,
315
  ),
316
- 'data' => $data,
317
- 'attr' => $this->attr,
318
  );
319
 
320
  unset( $data );
321
 
322
  if ( $this->callbacks['render'] ) {
323
- $data = call_user_func_array( $this->callbacks['render'], array( $render_data ) );
 
 
 
 
324
 
325
  if ( empty( $data ) ) {
326
  // fix if returned wrong data from callback
@@ -332,14 +316,49 @@ class FW_Form {
332
  unset( $data );
333
  }
334
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
335
  // In filter can be defined custom html for submit button
336
- if ( isset( $render_data['submit']['html'] ) ):
337
- print $render_data['submit']['html'];
338
- else:
339
- ?><input type="submit" value="<?php print $render_data['submit']['value'] ?>"><?php
340
- endif;
 
 
 
341
 
342
- ?></form><?php
343
  }
344
 
345
  /**
90
  $data['attr'] = array();
91
  }
92
 
93
+ $data['attr']['data-fw-form-id'] = $this->id;
94
+
95
+ /** @deprecated */
96
  $data['attr']['class'] = 'fw_form_' . $this->id;
97
 
98
  if ( isset( $data['attr']['method'] ) ) {
237
  if ( $this->is_valid() ) {
238
  $this->save();
239
 
240
+ wp_send_json_success( array(
241
+ 'flash_messages' => FW_Flash_Messages::_get_messages(true)
242
+ ) );
243
  } else {
244
  wp_send_json_error( array(
245
  'errors' => $this->get_errors()
284
  * @param array $data
285
  */
286
  public function render( $data = array() ) {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
287
  $render_data = array(
288
  'submit' => array(
289
  'value' => __( 'Submit', 'fw' ),
293
  */
294
  'html' => null,
295
  ),
296
+ 'data' => $data,
297
+ 'attr' => $this->attr,
298
  );
299
 
300
  unset( $data );
301
 
302
  if ( $this->callbacks['render'] ) {
303
+ ob_start();
304
+
305
+ $data = call_user_func_array( $this->callbacks['render'], array( $render_data, $this ) );
306
+
307
+ $html = ob_get_clean();
308
 
309
  if ( empty( $data ) ) {
310
  // fix if returned wrong data from callback
316
  unset( $data );
317
  }
318
 
319
+ echo '<form '. fw_attr_to_html( $render_data['attr'] ) .' >';
320
+
321
+ echo fw_html_tag('input', array(
322
+ 'type' => 'hidden',
323
+ 'name' => self::$id_input_name,
324
+ 'value' => $this->id,
325
+ ));
326
+
327
+ if ( $render_data['attr']['method'] == 'post' ) {
328
+ wp_nonce_field( 'submit_fwf', '_nonce_' . md5( $this->id ) );
329
+ }
330
+
331
+ if ( ! empty( $render_data['attr']['action'] ) && $render_data['attr']['method'] == 'get' ) {
332
+ /**
333
+ * Add query vars from the action attribute url to hidden inputs to not loose them
334
+ */
335
+
336
+ parse_str( parse_url( $render_data['attr']['action'], PHP_URL_QUERY ), $query_vars );
337
+
338
+ if ( ! empty( $query_vars ) ) {
339
+ foreach ( $query_vars as $var_name => $var_value ) {
340
+ echo fw_html_tag('input', array(
341
+ 'type' => 'hidden',
342
+ 'name' => $var_name,
343
+ 'value' => $var_value,
344
+ ));
345
+ }
346
+ }
347
+ }
348
+
349
+ echo $html;
350
+
351
  // In filter can be defined custom html for submit button
352
+ if ( isset( $render_data['submit']['html'] ) ) {
353
+ echo $render_data['submit']['html'];
354
+ } else {
355
+ echo fw_html_tag('input', array(
356
+ 'type' => 'submit',
357
+ 'value' => $render_data['submit']['value']
358
+ ));
359
+ }
360
 
361
+ echo '</form>';
362
  }
363
 
364
  /**
framework/helpers/database.php CHANGED
@@ -21,7 +21,7 @@
21
 
22
  if ( is_null( $value ) ) {
23
  /**
24
- * Maybe the options was never saved or the given option id does not exists
25
  * Extract the default values from the options array and try to find there the option id
26
  */
27
 
21
 
22
  if ( is_null( $value ) ) {
23
  /**
24
+ * Maybe the options was never saved or the given option id does not exist
25
  * Extract the default values from the options array and try to find there the option id
26
  */
27
 
framework/includes/option-types.php CHANGED
@@ -417,6 +417,10 @@ class FW_Option_Type_Checkboxes extends FW_Option_Type
417
  unset($div_attr['name']);
418
  unset($div_attr['value']);
419
 
 
 
 
 
420
  $html = '<div '. fw_attr_to_html($div_attr) .'>';
421
 
422
  $html .= '<input type="checkbox" name="'. esc_attr($option['attr']['name']) .'[]" value="" checked="checked" style="display: none">'.
@@ -480,6 +484,7 @@ class FW_Option_Type_Checkboxes extends FW_Option_Type
480
  protected function _get_defaults()
481
  {
482
  return array(
 
483
  'value' => array(),
484
  'choices' => array()
485
  );
@@ -514,6 +519,10 @@ class FW_Option_Type_Radio extends FW_Option_Type
514
  unset($div_attr['name']);
515
  unset($div_attr['value']);
516
 
 
 
 
 
517
  $html = '<div '. fw_attr_to_html($div_attr) .'>';
518
 
519
  foreach ($option['choices'] as $value => $text) {
@@ -570,6 +579,7 @@ class FW_Option_Type_Radio extends FW_Option_Type
570
  protected function _get_defaults()
571
  {
572
  return array(
 
573
  'value' => '',
574
  'choices' => array()
575
  );
417
  unset($div_attr['name']);
418
  unset($div_attr['value']);
419
 
420
+ if ( $option['inline'] ) {
421
+ $div_attr['class'] .= ' fw-option-type-checkboxes-inline fw-clearfix';
422
+ }
423
+
424
  $html = '<div '. fw_attr_to_html($div_attr) .'>';
425
 
426
  $html .= '<input type="checkbox" name="'. esc_attr($option['attr']['name']) .'[]" value="" checked="checked" style="display: none">'.
484
  protected function _get_defaults()
485
  {
486
  return array(
487
+ 'inline' => false, // Set this parameter to true in case you want all checkbox inputs to be rendered inline
488
  'value' => array(),
489
  'choices' => array()
490
  );
519
  unset($div_attr['name']);
520
  unset($div_attr['value']);
521
 
522
+ if ( $option['inline'] ) {
523
+ $div_attr['class'] .= ' fw-option-type-radio-inline fw-clearfix';
524
+ }
525
+
526
  $html = '<div '. fw_attr_to_html($div_attr) .'>';
527
 
528
  foreach ($option['choices'] as $value => $text) {
579
  protected function _get_defaults()
580
  {
581
  return array(
582
+ 'inline' => false, // Set this parameter to true in case you want all radio inputs to be rendered inline
583
  'value' => '',
584
  'choices' => array()
585
  );
framework/includes/option-types/range-slider/class-fw-option-type-range-slider.php CHANGED
@@ -17,14 +17,14 @@ class FW_Option_Type_Range_Slider extends FW_Option_Type {
17
  wp_enqueue_style(
18
  'fw-option-' . $this->get_type() . 'ion-range-slider',
19
  fw_get_framework_directory_uri( '/includes/option-types/' . $this->get_type() . '/static/libs/ion-range-slider/ion.rangeSlider.css' ),
20
- fw()->manifest->get_version()
21
  );
22
 
23
  wp_enqueue_script(
24
  'fw-option-' . $this->get_type() . 'ion-range-slider',
25
  fw_get_framework_directory_uri( '/includes/option-types/' . $this->get_type() . '/static/libs/ion-range-slider/ion.rangeSlider.min.js' ),
26
  array( 'jquery', 'fw-moment' ),
27
- fw()->manifest->get_version()
28
  );
29
  }
30
 
@@ -37,7 +37,7 @@ class FW_Option_Type_Range_Slider extends FW_Option_Type {
37
  wp_enqueue_script(
38
  'fw-option-' . $this->get_type(),
39
  fw_get_framework_directory_uri( '/includes/option-types/' . $this->get_type() . '/static/js/scripts.js' ),
40
- array( 'jquery', 'underscore', 'fw-option-' . $this->get_type() . 'ion-range-slider' ),
41
  fw()->manifest->get_version()
42
  );
43
  }
17
  wp_enqueue_style(
18
  'fw-option-' . $this->get_type() . 'ion-range-slider',
19
  fw_get_framework_directory_uri( '/includes/option-types/' . $this->get_type() . '/static/libs/ion-range-slider/ion.rangeSlider.css' ),
20
+ '2.0.3'
21
  );
22
 
23
  wp_enqueue_script(
24
  'fw-option-' . $this->get_type() . 'ion-range-slider',
25
  fw_get_framework_directory_uri( '/includes/option-types/' . $this->get_type() . '/static/libs/ion-range-slider/ion.rangeSlider.min.js' ),
26
  array( 'jquery', 'fw-moment' ),
27
+ '2.0.3'
28
  );
29
  }
30
 
37
  wp_enqueue_script(
38
  'fw-option-' . $this->get_type(),
39
  fw_get_framework_directory_uri( '/includes/option-types/' . $this->get_type() . '/static/js/scripts.js' ),
40
+ array( 'jquery', 'fw-events', 'underscore', 'fw-option-' . $this->get_type() . 'ion-range-slider' ),
41
  fw()->manifest->get_version()
42
  );
43
  }
framework/includes/option-types/range-slider/static/js/scripts.js CHANGED
@@ -1,4 +1,4 @@
1
- (function ($) {
2
  var defaults = {
3
  onChange: function (data) {
4
  data.input.next('.fw-irs-range-slider-hidden-input').val(data.from + ';' + data.to);
@@ -19,4 +19,4 @@
19
  });
20
  });
21
 
22
- })(jQuery);
1
+ (function ($, fwEvents) {
2
  var defaults = {
3
  onChange: function (data) {
4
  data.input.next('.fw-irs-range-slider-hidden-input').val(data.from + ';' + data.to);
19
  });
20
  });
21
 
22
+ })(jQuery, fwEvents);
framework/includes/option-types/slider/class-fw-option-type-slider.php CHANGED
@@ -17,14 +17,14 @@ class FW_Option_Type_Slider extends FW_Option_Type {
17
  wp_enqueue_style(
18
  'fw-option-' . $this->get_type() . 'ion-range-slider',
19
  fw_get_framework_directory_uri( '/includes/option-types/' . $this->get_type() . '/static/libs/ion-range-slider/ion.rangeSlider.css' ),
20
- fw()->manifest->get_version()
21
  );
22
 
23
  wp_enqueue_script(
24
  'fw-option-' . $this->get_type() . 'ion-range-slider',
25
  fw_get_framework_directory_uri( '/includes/option-types/' . $this->get_type() . '/static/libs/ion-range-slider/ion.rangeSlider.min.js' ),
26
  array( 'jquery', 'fw-moment' ),
27
- fw()->manifest->get_version()
28
  );
29
  }
30
 
@@ -37,7 +37,7 @@ class FW_Option_Type_Slider extends FW_Option_Type {
37
  wp_enqueue_script(
38
  'fw-option-' . $this->get_type(),
39
  fw_get_framework_directory_uri( '/includes/option-types/' . $this->get_type() . '/static/js/scripts.js' ),
40
- array( 'jquery', 'underscore', 'fw-option-' . $this->get_type() . 'ion-range-slider' ),
41
  fw()->manifest->get_version()
42
  );
43
  }
17
  wp_enqueue_style(
18
  'fw-option-' . $this->get_type() . 'ion-range-slider',
19
  fw_get_framework_directory_uri( '/includes/option-types/' . $this->get_type() . '/static/libs/ion-range-slider/ion.rangeSlider.css' ),
20
+ '2.0.3'
21
  );
22
 
23
  wp_enqueue_script(
24
  'fw-option-' . $this->get_type() . 'ion-range-slider',
25
  fw_get_framework_directory_uri( '/includes/option-types/' . $this->get_type() . '/static/libs/ion-range-slider/ion.rangeSlider.min.js' ),
26
  array( 'jquery', 'fw-moment' ),
27
+ '2.0.3'
28
  );
29
  }
30
 
37
  wp_enqueue_script(
38
  'fw-option-' . $this->get_type(),
39
  fw_get_framework_directory_uri( '/includes/option-types/' . $this->get_type() . '/static/js/scripts.js' ),
40
+ array( 'jquery', 'fw-events', 'underscore', 'fw-option-' . $this->get_type() . 'ion-range-slider' ),
41
  fw()->manifest->get_version()
42
  );
43
  }
framework/includes/option-types/slider/static/js/scripts.js CHANGED
@@ -1,4 +1,4 @@
1
- (function ($) {
2
  var defaults = {
3
  onChange: function (data) {
4
  data.input.next('.fw-irs-range-slider-hidden-input').val(data.from + ';' + data.to);
@@ -18,4 +18,4 @@
18
  });
19
  });
20
 
21
- })(jQuery);
1
+ (function ($, fwEvents) {
2
  var defaults = {
3
  onChange: function (data) {
4
  data.input.next('.fw-irs-range-slider-hidden-input').val(data.from + ';' + data.to);
18
  });
19
  });
20
 
21
+ })(jQuery, fwEvents);
framework/includes/option-types/typography/class-fw-option-type-typography.php CHANGED
@@ -20,13 +20,13 @@ class FW_Option_Type_Typography extends FW_Option_Type
20
  {
21
  if($this->fonts === null) {
22
  $this->fonts = array(
23
- 'standard' => array(
24
  "Arial",
25
  "Verdana",
26
  "Trebuchet",
27
  "Georgia",
28
  "Times New Roman",
29
- "Tohama",
30
  "Palatino",
31
  "Helvetica",
32
  "Calibri",
@@ -37,7 +37,7 @@ class FW_Option_Type_Typography extends FW_Option_Type
37
  "Geneva",
38
  "Impact",
39
  "Serif"
40
- ),
41
  'google' => fw_get_google_fonts()
42
  );
43
  }
20
  {
21
  if($this->fonts === null) {
22
  $this->fonts = array(
23
+ 'standard' => apply_filters('fw_option_type_typography_standard_fonts', array(
24
  "Arial",
25
  "Verdana",
26
  "Trebuchet",
27
  "Georgia",
28
  "Times New Roman",
29
+ "Tahoma",
30
  "Palatino",
31
  "Helvetica",
32
  "Calibri",
37
  "Geneva",
38
  "Impact",
39
  "Serif"
40
+ )),
41
  'google' => fw_get_google_fonts()
42
  );
43
  }
framework/manifest.php CHANGED
@@ -4,4 +4,4 @@ $manifest = array();
4
 
5
  $manifest['name'] = __('Unyson', 'fw');
6
 
7
- $manifest['version'] = '2.1.19';
4
 
5
  $manifest['name'] = __('Unyson', 'fw');
6
 
7
+ $manifest['version'] = '2.1.20';
framework/static/css/option-types.css CHANGED
@@ -78,6 +78,20 @@ textarea.fw-option-type-textarea {
78
  width: 100px !important;
79
  }
80
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
81
 
82
  /* modal fixes */
83
 
78
  width: 100px !important;
79
  }
80
 
81
+ /* Radio amd Checkboxes inline */
82
+
83
+ .fw-option-type-checkboxes.fw-option-type-checkboxes-inline > div,
84
+ .fw-option-type-radio.fw-option-type-radio-inline > div {
85
+ float: left;
86
+ margin-right: 10px;
87
+ }
88
+
89
+ .fw-option-type-checkboxes.fw-option-type-checkboxes-inline > div:last-child,
90
+ .fw-option-type-radio.fw-option-type-radio-inline > div:last-child {
91
+ margin-right: 0;
92
+ }
93
+
94
+ /* end: Radio amd Checkboxes inline */
95
 
96
  /* modal fixes */
97
 
framework/static/js/backend-options.js CHANGED
@@ -74,7 +74,7 @@ jQuery(document).ready(function($){
74
  });
75
 
76
  setTimeout(function(){
77
- $elements.fadeTo('fast', 1);
78
  }, 50);
79
  }
80
  });
74
  });
75
 
76
  setTimeout(function(){
77
+ $elements.fadeTo('fast', 1, function(){ $(this).css('opacity', ''); });
78
  }, 50);
79
  }
80
  });
framework/views/backend-option-design-default.php CHANGED
@@ -6,11 +6,13 @@
6
  */
7
 
8
  {
9
- if (!isset($option['label']))
10
- $option['label'] = $id;
 
11
 
12
- if (!isset($option['desc']))
13
  $option['desc'] = '';
 
14
  }
15
 
16
  {
6
  */
7
 
8
  {
9
+ if (!isset($option['label'])) {
10
+ $option['label'] = fw_id_to_title($id);
11
+ }
12
 
13
+ if (!isset($option['desc'])) {
14
  $option['desc'] = '';
15
+ }
16
  }
17
 
18
  {
framework/views/backend-option-design-taxonomy.php CHANGED
@@ -6,11 +6,13 @@
6
  */
7
 
8
  {
9
- if (!isset($option['label']))
10
- $option['label'] = $id;
 
11
 
12
- if (!isset($option['desc']))
13
  $option['desc'] = '';
 
14
  }
15
 
16
  {
6
  */
7
 
8
  {
9
+ if (!isset($option['label'])) {
10
+ $option['label'] = fw_id_to_title($id);
11
+ }
12
 
13
+ if (!isset($option['desc'])) {
14
  $option['desc'] = '';
15
+ }
16
  }
17
 
18
  {
readme.txt CHANGED
@@ -3,7 +3,7 @@ Contributors: unyson, themefusecom
3
  Tags: page builder, cms, grid, layout, responsive, back up, backup, db backup, dump, migrate, schedule, search engine optimization, seo, media, slideshow, shortcode, slide, slideshare, slideshow, google sitemaps, sitemaps, analytics, google analytics, calendar, event, events, google maps, learning, lessons, sidebars, breadcrumbs, review, portfolio
4
  Requires at least: 4.0.0
5
  Tested up to: 4.1
6
- Stable tag: 2.1.19
7
  License: GPLv2 or later
8
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
9
 
@@ -86,6 +86,14 @@ Yes; Unyson will work with any theme.
86
 
87
  == Changelog ==
88
 
 
 
 
 
 
 
 
 
89
  = 2.1.19 =
90
  * Option type `icon`: Updated Font Awesome to 4.3.0
91
  * Option type `typography` fixes [#195](https://github.com/ThemeFuse/Unyson/issues/195)
3
  Tags: page builder, cms, grid, layout, responsive, back up, backup, db backup, dump, migrate, schedule, search engine optimization, seo, media, slideshow, shortcode, slide, slideshare, slideshow, google sitemaps, sitemaps, analytics, google analytics, calendar, event, events, google maps, learning, lessons, sidebars, breadcrumbs, review, portfolio
4
  Requires at least: 4.0.0
5
  Tested up to: 4.1
6
+ Stable tag: 2.1.20
7
  License: GPLv2 or later
8
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
9
 
86
 
87
  == Changelog ==
88
 
89
+ = 2.1.20 =
90
+ * Added warning on Theme Settings reset [^](http://static.md/0fcf01628eddab75fdbedb3a24784db3.png)
91
+ * `FW_Form`: Form attributes can be changed in the render method
92
+ * Option type `slider` and `range-slider` fixes [#210](https://github.com/ThemeFuse/Unyson/issues/210)
93
+ * Option type `typography`: Added filter on standard fonts [#212](https://github.com/ThemeFuse/Unyson/issues/212)
94
+ * Option type `radio` and `checkboxes`: Added `inline` parameter [#216](https://github.com/ThemeFuse/Unyson/issues/216)
95
+ * Minor internal fixes
96
+
97
  = 2.1.19 =
98
  * Option type `icon`: Updated Font Awesome to 4.3.0
99
  * Option type `typography` fixes [#195](https://github.com/ThemeFuse/Unyson/issues/195)
unyson.php CHANGED
@@ -3,7 +3,7 @@
3
  * Plugin Name: Unyson
4
  * Plugin URI: http://unyson.themefuse.com/
5
  * Description: A free drag & drop framework that comes with a bunch of built in extensions that will help you develop premium themes fast & easy.
6
- * Version: 2.1.19
7
  * Author: ThemeFuse
8
  * Author URI: http://themefuse.com
9
  * License: GPL2+
3
  * Plugin Name: Unyson
4
  * Plugin URI: http://unyson.themefuse.com/
5
  * Description: A free drag & drop framework that comes with a bunch of built in extensions that will help you develop premium themes fast & easy.
6
+ * Version: 2.1.20
7
  * Author: ThemeFuse
8
  * Author URI: http://themefuse.com
9
  * License: GPL2+