Unyson - Version 2.2.7

Version Description

  • Option type popup fixes
  • Added "Show/Hide other extensions" button #307
  • fw.soleModal added afterOpen and afterClose callbacks #379
  • Fixed #432, #408
Download this release

Release Info

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

Code changes from version 2.2.6 to 2.2.7

framework/core/components/extensions/manager/class--fw-extensions-manager.php CHANGED
@@ -780,7 +780,7 @@ final class _FW_Extensions_Manager
780
 
781
  echo '<h2>'. sprintf(__('%s Extensions', 'fw'), fw()->manifest->get_name()) .'</h2><br/>';
782
 
783
- echo '<div id="fw-extensions-list-wrapper" style="opacity: 0;">';
784
 
785
  fw_render_view(dirname(__FILE__) .'/views/extensions-page.php', array(
786
  'lists' => &$lists,
780
 
781
  echo '<h2>'. sprintf(__('%s Extensions', 'fw'), fw()->manifest->get_name()) .'</h2><br/>';
782
 
783
+ echo '<div id="fw-extensions-list-wrapper" style="opacity:0;">';
784
 
785
  fw_render_view(dirname(__FILE__) .'/views/extensions-page.php', array(
786
  'lists' => &$lists,
framework/core/components/extensions/manager/static/extensions-page.css CHANGED
@@ -187,4 +187,4 @@
187
  margin-top: -2px;
188
  }
189
 
190
- /* end: form ajax loading */
187
  margin-top: -2px;
188
  }
189
 
190
+ /* end: form ajax loading */
framework/core/components/extensions/manager/views/extension.php CHANGED
@@ -36,8 +36,23 @@ if (isset($lists['available'][$name])) {
36
  $thumbnail = fw_akg('thumbnail', $lists['installed'][$name]['manifest'], $thumbnail);
37
  }
38
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
39
  ?>
40
- <div class="fw-col-xs-12 fw-col-lg-6 fw-extensions-list-item<?php if ($installed_data && !$is_active): ?> disabled<?php endif; ?>" id="fw-ext-<?php echo esc_attr($name) ?>">
41
  <div class="inner">
42
  <div class="fw-extension-list-item-table">
43
  <div class="fw-extension-list-item-table-row">
@@ -81,12 +96,7 @@ if (isset($lists['available'][$name])) {
81
  unset( $_links );
82
  }
83
  ?>
84
- <?php
85
- if (
86
- isset($lists['supported'][$name]) // is listed in the supported extensions list in theme manifest
87
- ||
88
- ($installed_data && $installed_data['is']['theme']) // is located in the theme
89
- ): ?>
90
  <p><em><strong><span class="dashicons dashicons-yes"></span> <?php _e('Compatible', 'fw') ?></strong> <?php _e('with your current theme', 'fw') ?></em></p>
91
  <?php endif; ?>
92
  </div>
36
  $thumbnail = fw_akg('thumbnail', $lists['installed'][$name]['manifest'], $thumbnail);
37
  }
38
  }
39
+
40
+ $is_compatible =
41
+ isset($lists['supported'][$name]) // is listed in the supported extensions list in theme manifest
42
+ ||
43
+ ($installed_data && $installed_data['is']['theme']); // is located in the theme
44
+
45
+ $wrapper_class = 'fw-col-xs-12 fw-col-lg-6 fw-extensions-list-item';
46
+
47
+ if ($installed_data && !$is_active) {
48
+ $wrapper_class .= ' disabled';
49
+ }
50
+
51
+ if (!$installed_data && !$is_compatible) {
52
+ $wrapper_class .= ' not-compatible';
53
+ }
54
  ?>
55
+ <div class="<?php echo esc_attr($wrapper_class) ?>" id="fw-ext-<?php echo esc_attr($name) ?>">
56
  <div class="inner">
57
  <div class="fw-extension-list-item-table">
58
  <div class="fw-extension-list-item-table-row">
96
  unset( $_links );
97
  }
98
  ?>
99
+ <?php if ($is_compatible): ?>
 
 
 
 
 
100
  <p><em><strong><span class="dashicons dashicons-yes"></span> <?php _e('Compatible', 'fw') ?></strong> <?php _e('with your current theme', 'fw') ?></em></p>
101
  <?php endif; ?>
102
  </div>
framework/core/components/extensions/manager/views/extensions-page.php CHANGED
@@ -169,11 +169,50 @@ unset($data);
169
  }
170
  ?>
171
  </div>
172
- <?php if (!$something_displayed): ?>
173
- <script type="text/javascript">
174
- jQuery(function($){
175
- $('#fw-extensions-list-available').remove();
176
- });
177
- </script>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
178
  <?php endif; ?>
179
  </div>
169
  }
170
  ?>
171
  </div>
172
+
173
+ <?php if ($something_displayed): ?>
174
+ <!-- show/hide not compatible extensions -->
175
+ <p class="fw-text-center toggle-not-compat-ext-btn-wrapper"><?php
176
+ echo fw_html_tag(
177
+ 'a',
178
+ array(
179
+ 'href' => '#',
180
+ 'onclick' => 'return false;',
181
+ 'class' => 'button toggle-not-compat-ext-btn',
182
+ 'style' => 'box-shadow:none;'
183
+ ),
184
+ '<span class="the-show-text">'. __('Show other extensions', 'fw') .'</span>'.
185
+ '<span class="the-hide-text fw-hidden">'. __('Hide other extensions', 'fw') .'</span>'
186
+ );
187
+ ?></p>
188
+ <script type="text/javascript">
189
+ jQuery(function($){
190
+ if (
191
+ !$('.fw-extensions-list .fw-extensions-list-item.not-compatible').length
192
+ ||
193
+ <?php echo empty($lists['supported']) ? 'true' : 'false' ?>
194
+ ) {
195
+ // disable the show/hide feature
196
+ $('#fw-extensions-list-wrapper .toggle-not-compat-ext-btn-wrapper').addClass('fw-hidden');
197
+ } else {
198
+ $('#fw-extensions-list-wrapper .fw-extensions-list .fw-extensions-list-item.not-compatible').fadeOut('fast');
199
+
200
+ $('#fw-extensions-list-wrapper .toggle-not-compat-ext-btn-wrapper').on('click', function(){
201
+ $('#fw-extensions-list-wrapper .fw-extensions-list .fw-extensions-list-item.not-compatible')[
202
+ $(this).find('.the-hide-text').hasClass('fw-hidden') ? 'fadeIn' : 'fadeOut'
203
+ ]();
204
+
205
+ $(this).find('.the-show-text, .the-hide-text').toggleClass('fw-hidden');
206
+ });
207
+ }
208
+ });
209
+ </script>
210
+ <!-- end: show/hide not compatible extensions -->
211
+ <?php else: ?>
212
+ <script type="text/javascript">
213
+ jQuery(function($){
214
+ $('#fw-extensions-list-available').remove();
215
+ });
216
+ </script>
217
  <?php endif; ?>
218
  </div>
framework/includes/option-types/color-picker/class-fw-option-type-color-picker.php CHANGED
@@ -24,11 +24,12 @@ class FW_Option_Type_Color_Picker extends FW_Option_Type
24
  );
25
 
26
  wp_enqueue_script('wp-color-picker');
 
27
 
28
  wp_enqueue_script(
29
  'fw-option-'. $this->get_type(),
30
  fw_get_framework_directory_uri('/includes/option-types/'. $this->get_type() .'/static/js/scripts.js'),
31
- array('fw-events'),
32
  fw()->manifest->get_version(),
33
  true
34
  );
24
  );
25
 
26
  wp_enqueue_script('wp-color-picker');
27
+ wp_enqueue_script('fw-events');
28
 
29
  wp_enqueue_script(
30
  'fw-option-'. $this->get_type(),
31
  fw_get_framework_directory_uri('/includes/option-types/'. $this->get_type() .'/static/js/scripts.js'),
32
+ array('jquery', 'fw-events'),
33
  fw()->manifest->get_version(),
34
  true
35
  );
framework/includes/option-types/gradient/class-fw-option-type-gradient.php CHANGED
@@ -27,6 +27,9 @@ class FW_Option_Type_Gradient extends FW_Option_Type
27
  array(),
28
  fw()->manifest->get_version()
29
  );
 
 
 
30
  wp_enqueue_script(
31
  'fw-option-' . $this->get_type(),
32
  fw_get_framework_directory_uri('/includes/option-types/' . $this->get_type() . '/static/js/scripts.js'),
27
  array(),
28
  fw()->manifest->get_version()
29
  );
30
+
31
+ fw()->backend->option_type('color-picker')->enqueue_static();
32
+
33
  wp_enqueue_script(
34
  'fw-option-' . $this->get_type(),
35
  fw_get_framework_directory_uri('/includes/option-types/' . $this->get_type() . '/static/js/scripts.js'),
framework/includes/option-types/init.php CHANGED
@@ -20,7 +20,6 @@ require $dir . '/date-picker/class-fw-option-type-wp-date-picker.php';
20
  require $dir . '/addable-option/class-fw-option-type-addable-option.php';
21
  require $dir . '/addable-box/class-fw-option-type-addable-box.php';
22
  require $dir . '/addable-popup/class-fw-option-type-addable-popup.php';
23
- require $dir . '/multi-select/class-fw-option-type-multi-select.php';
24
  require $dir . '/map/class-fw-option-type-map.php';
25
  require $dir . '/datetime-range/class-fw-option-type-datetime-range.php';
26
  require $dir . '/datetime-picker/class-fw-option-type-datetime-picker.php';
@@ -29,3 +28,6 @@ require $dir . '/popup/class-fw-option-type-popup.php';
29
  require $dir . '/slider/class-fw-option-type-slider.php';
30
  require $dir . '/range-slider/class-fw-option-type-range-slider.php';
31
  require $dir . '/rgba-color-picker/class-fw-option-type-rgba-color-picker.php';
 
 
 
20
  require $dir . '/addable-option/class-fw-option-type-addable-option.php';
21
  require $dir . '/addable-box/class-fw-option-type-addable-box.php';
22
  require $dir . '/addable-popup/class-fw-option-type-addable-popup.php';
 
23
  require $dir . '/map/class-fw-option-type-map.php';
24
  require $dir . '/datetime-range/class-fw-option-type-datetime-range.php';
25
  require $dir . '/datetime-picker/class-fw-option-type-datetime-picker.php';
28
  require $dir . '/slider/class-fw-option-type-slider.php';
29
  require $dir . '/range-slider/class-fw-option-type-range-slider.php';
30
  require $dir . '/rgba-color-picker/class-fw-option-type-rgba-color-picker.php';
31
+ if (!class_exists('FW_Option_Type_Multi_Select')) {
32
+ require $dir . '/multi-select/class-fw-option-type-multi-select.php';
33
+ }
framework/includes/option-types/popup/class-fw-option-type-popup.php CHANGED
@@ -2,6 +2,11 @@
2
  die( 'Forbidden' );
3
  }
4
 
 
 
 
 
 
5
  class FW_Option_Type_Popup extends FW_Option_Type {
6
  public function _get_backend_width_type() {
7
  return 'fixed';
@@ -11,17 +16,16 @@ class FW_Option_Type_Popup extends FW_Option_Type {
11
  * @internal
12
  * {@inheritdoc}
13
  */
14
- protected function _enqueue_static($id, $option, $data)
15
- {
16
  wp_enqueue_style(
17
  'fw-option-' . $this->get_type(),
18
- fw_get_framework_directory_uri('/includes/option-types/' . $this->get_type() . '/static/css/styles.css'),
19
  array( 'fw' )
20
  );
21
 
22
  wp_enqueue_script(
23
  'fw-option-' . $this->get_type(),
24
- fw_get_framework_directory_uri('/includes/option-types/' . $this->get_type() . '/static/js/' . $this->get_type() . '.js'),
25
  array( 'underscore', 'fw-events', 'jquery-ui-sortable', 'fw' ),
26
  false,
27
  true
@@ -45,30 +49,27 @@ class FW_Option_Type_Popup extends FW_Option_Type {
45
  protected function _render( $id, $option, $data ) {
46
  unset( $option['attr']['name'], $option['attr']['value'] );
47
 
48
- $option['attr']['data-for-js'] = json_encode(array(
49
- 'title' => ( $option['popup-title'] ) ? $option['popup-title'] : $option['label'],
50
  'options' => $this->transform_options( $option['popup-options'] ),
51
- 'button' => $option['button']
52
- ));
 
53
 
54
- if (!empty($data['value'])) {
55
- if (is_array($data['value'])) {
56
- $data['value'] = json_encode($data['value']);
57
  }
58
  } else {
59
  $data['value'] = '';
60
  }
61
 
62
- $sortable_image = fw_get_framework_directory_uri('/static/img/sort-vertically.png');
63
 
64
- return fw_render_view( fw_get_framework_directory('/includes/option-types/' . $this->get_type() . '/views/view.php' ), compact( 'id', 'option', 'data', 'sortable_image' ) );
 
65
  }
66
 
67
- /*
68
- * Puts each option into a separate array
69
- * to keep it's order inside the modal dialog
70
- */
71
-
72
  /**
73
  * Option's unique type, used in option array in 'type' key
74
  * @return string
@@ -80,7 +81,7 @@ class FW_Option_Type_Popup extends FW_Option_Type {
80
  private function transform_options( $options ) {
81
  $new_options = array();
82
  foreach ( $options as $id => $option ) {
83
- if (is_int($id)) {
84
  /**
85
  * this happens when in options array are loaded external options using fw()->theme->get_options()
86
  * and the array looks like this
@@ -91,7 +92,7 @@ class FW_Option_Type_Popup extends FW_Option_Type {
91
  */
92
  $new_options[] = $option;
93
  } else {
94
- $new_options[] = array($id => $option);
95
  }
96
  }
97
 
@@ -109,7 +110,21 @@ class FW_Option_Type_Popup extends FW_Option_Type {
109
  * @internal
110
  */
111
  protected function _get_value_from_input( $option, $input_value ) {
112
- $values = json_decode( $input_value, true );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
113
  return $values;
114
  }
115
 
@@ -129,9 +144,22 @@ class FW_Option_Type_Popup extends FW_Option_Type {
129
  */
130
  protected function _get_defaults() {
131
  return array(
 
 
 
 
 
 
 
 
 
 
 
132
  'popup-options' => array(),
133
- 'button' => __( 'Edit', 'fw' ),
134
- 'value' => ''
 
 
135
  );
136
  }
137
 
2
  die( 'Forbidden' );
3
  }
4
 
5
+ /**
6
+ * Unyson option type that allows to group option in a popup window
7
+ *
8
+ * Class FW_Option_Type_Popup
9
+ */
10
  class FW_Option_Type_Popup extends FW_Option_Type {
11
  public function _get_backend_width_type() {
12
  return 'fixed';
16
  * @internal
17
  * {@inheritdoc}
18
  */
19
+ protected function _enqueue_static( $id, $option, $data ) {
 
20
  wp_enqueue_style(
21
  'fw-option-' . $this->get_type(),
22
+ fw_get_framework_directory_uri( '/includes/option-types/' . $this->get_type() . '/static/css/styles.css' ),
23
  array( 'fw' )
24
  );
25
 
26
  wp_enqueue_script(
27
  'fw-option-' . $this->get_type(),
28
+ fw_get_framework_directory_uri( '/includes/option-types/' . $this->get_type() . '/static/js/' . $this->get_type() . '.js' ),
29
  array( 'underscore', 'fw-events', 'jquery-ui-sortable', 'fw' ),
30
  false,
31
  true
49
  protected function _render( $id, $option, $data ) {
50
  unset( $option['attr']['name'], $option['attr']['value'] );
51
 
52
+ $option['attr']['data-for-js'] = json_encode( array(
53
+ 'title' => ( isset( $option['popup-title'] ) ) ? $option['popup-title'] : ( string ) $option['label'],
54
  'options' => $this->transform_options( $option['popup-options'] ),
55
+ 'button' => $option['button'],
56
+ 'size' => $option['size']
57
+ ) );
58
 
59
+ if ( ! empty( $data['value'] ) ) {
60
+ if ( is_array( $data['value'] ) ) {
61
+ $data['value'] = json_encode( $data['value'] );
62
  }
63
  } else {
64
  $data['value'] = '';
65
  }
66
 
67
+ $sortable_image = fw_get_framework_directory_uri( '/static/img/sort-vertically.png' );
68
 
69
+ return fw_render_view( fw_get_framework_directory( '/includes/option-types/' . $this->get_type() . '/views/view.php' ),
70
+ compact( 'id', 'option', 'data', 'sortable_image' ) );
71
  }
72
 
 
 
 
 
 
73
  /**
74
  * Option's unique type, used in option array in 'type' key
75
  * @return string
81
  private function transform_options( $options ) {
82
  $new_options = array();
83
  foreach ( $options as $id => $option ) {
84
+ if ( is_int( $id ) ) {
85
  /**
86
  * this happens when in options array are loaded external options using fw()->theme->get_options()
87
  * and the array looks like this
92
  */
93
  $new_options[] = $option;
94
  } else {
95
+ $new_options[] = array( $id => $option );
96
  }
97
  }
98
 
110
  * @internal
111
  */
112
  protected function _get_value_from_input( $option, $input_value ) {
113
+ if ( empty( $input_value ) ) {
114
+ $values = array();
115
+
116
+ if ( ! isset( $option['popup-options'] ) ) {
117
+ return array();
118
+ }
119
+
120
+ foreach ( $option['popup-options'] as $key => $op ) {
121
+ $values[ $key ] = isset( $op['value'] ) ? $op['value'] : null;
122
+ }
123
+
124
+ } else {
125
+ $values = json_decode( $input_value, true );
126
+ }
127
+
128
  return $values;
129
  }
130
 
144
  */
145
  protected function _get_defaults() {
146
  return array(
147
+ /*
148
+ * Popup button text
149
+ */
150
+ 'button' => __( 'Edit', 'fw' ),
151
+ /*
152
+ * Title text that will appear in popup header
153
+ */
154
+ 'popup-title' => null,
155
+ /*
156
+ * Array of options that you need to add in the popup
157
+ */
158
  'popup-options' => array(),
159
+ /*
160
+ * Array of default values for the popup options
161
+ */
162
+ 'value' => array()
163
  );
164
  }
165
 
framework/includes/option-types/popup/static/js/popup.js CHANGED
@@ -15,7 +15,8 @@
15
  utils = {
16
  modal: new fw.OptionsModal({
17
  title: data.title,
18
- options: data.options
 
19
  }),
20
  editItem: function (item, values) {
21
  item.find('input').val( JSON.stringify( values ) );
15
  utils = {
16
  modal: new fw.OptionsModal({
17
  title: data.title,
18
+ options: data.options,
19
+ size : data.size
20
  }),
21
  editItem: function (item, values) {
22
  item.find('input').val( JSON.stringify( values ) );
framework/includes/option-types/wp-editor/class-fw-option-type-wp-editor.php CHANGED
@@ -48,6 +48,7 @@ class FW_Option_Type_Wp_Editor extends FW_Option_Type {
48
  */
49
  'value' => '',
50
  /**
 
51
  * string
52
  */
53
  'size' => 'small' // small, large
48
  */
49
  'value' => '',
50
  /**
51
+ * Set the editor size: small - small box, large - full size
52
  * string
53
  */
54
  'size' => 'small' // small, large
framework/manifest.php CHANGED
@@ -4,4 +4,4 @@ $manifest = array();
4
 
5
  $manifest['name'] = __('Unyson', 'fw');
6
 
7
- $manifest['version'] = '2.2.6';
4
 
5
  $manifest['name'] = __('Unyson', 'fw');
6
 
7
+ $manifest['version'] = '2.2.7';
framework/static/js/fw.js CHANGED
@@ -1213,6 +1213,8 @@ fw.soleModal = (function(){
1213
  width: 350
1214
  height: 200
1215
  hidePrevious: false // just replace the modal content or hide the previous modal and open it again with new content
 
 
1216
  }
1217
  */
1218
  ],
@@ -1324,7 +1326,9 @@ fw.soleModal = (function(){
1324
  showCloseButton: true,
1325
  width: 350,
1326
  height: 200,
1327
- hidePrevious: false
 
 
1328
  }, opts || {});
1329
 
1330
  // hide close button if close is not allowed
@@ -1386,6 +1390,8 @@ fw.soleModal = (function(){
1386
  }
1387
 
1388
  this.currentMethodTimeoutId = setTimeout(_.bind(function() {
 
 
1389
  this.currentMethod = '';
1390
 
1391
  if (this.runPendingMethod()) {
@@ -1441,6 +1447,8 @@ fw.soleModal = (function(){
1441
  if (this.queue.length && !this.queue[0].hidePrevious) {
1442
  // replace content
1443
  this.$getContent().fadeOut('fast', _.bind(function(){
 
 
1444
  this.currentMethod = '';
1445
  this.current = null;
1446
  this.show();
@@ -1453,6 +1461,8 @@ fw.soleModal = (function(){
1453
  this.$modal.addClass('fw-modal-closing');
1454
 
1455
  this.currentMethodTimeoutId = setTimeout(_.bind(function(){
 
 
1456
  this.currentMethod = '';
1457
 
1458
  this.$modal.css('display', 'none');
1213
  width: 350
1214
  height: 200
1215
  hidePrevious: false // just replace the modal content or hide the previous modal and open it again with new content
1216
+ afterOpen: function(){}
1217
+ afterClose: function(){}
1218
  }
1219
  */
1220
  ],
1326
  showCloseButton: true,
1327
  width: 350,
1328
  height: 200,
1329
+ hidePrevious: false,
1330
+ afterOpen: function(){},
1331
+ afterClose: function(){}
1332
  }, opts || {});
1333
 
1334
  // hide close button if close is not allowed
1390
  }
1391
 
1392
  this.currentMethodTimeoutId = setTimeout(_.bind(function() {
1393
+ this.current.afterOpen();
1394
+
1395
  this.currentMethod = '';
1396
 
1397
  if (this.runPendingMethod()) {
1447
  if (this.queue.length && !this.queue[0].hidePrevious) {
1448
  // replace content
1449
  this.$getContent().fadeOut('fast', _.bind(function(){
1450
+ this.current.afterClose();
1451
+
1452
  this.currentMethod = '';
1453
  this.current = null;
1454
  this.show();
1461
  this.$modal.addClass('fw-modal-closing');
1462
 
1463
  this.currentMethodTimeoutId = setTimeout(_.bind(function(){
1464
+ this.current.afterClose();
1465
+
1466
  this.currentMethod = '';
1467
 
1468
  this.$modal.css('display', 'none');
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, framework
4
  Requires at least: 4.0.0
5
  Tested up to: 4.1
6
- Stable tag: 2.2.6
7
  License: GPLv2 or later
8
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
9
 
@@ -86,6 +86,12 @@ Yes; Unyson will work with any theme.
86
 
87
  == Changelog ==
88
 
 
 
 
 
 
 
89
  = 2.2.6 =
90
  * Fixed [#404](https://github.com/ThemeFuse/Unyson/issues/404)
91
  * Added the Translation extension in Available Extensions list
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, framework
4
  Requires at least: 4.0.0
5
  Tested up to: 4.1
6
+ Stable tag: 2.2.7
7
  License: GPLv2 or later
8
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
9
 
86
 
87
  == Changelog ==
88
 
89
+ = 2.2.7 =
90
+ * Option type `popup` fixes
91
+ * Added "Show/Hide other extensions" button [#307](https://github.com/ThemeFuse/Unyson/issues/307)
92
+ * `fw.soleModal` added `afterOpen` and `afterClose` callbacks [#379](https://github.com/ThemeFuse/Unyson/issues/379)
93
+ * Fixed [#432](https://github.com/ThemeFuse/Unyson/issues/432), [#408](https://github.com/ThemeFuse/Unyson/issues/408)
94
+
95
  = 2.2.6 =
96
  * Fixed [#404](https://github.com/ThemeFuse/Unyson/issues/404)
97
  * Added the Translation extension in Available Extensions list
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.2.6
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.2.7
7
  * Author: ThemeFuse
8
  * Author URI: http://themefuse.com
9
  * License: GPL2+