WooCommerce Checkout Manager - Version 4.6.5

Version Description

  • Fix: premium compatibility
  • Fix: duplicated names after reorder
  • Fix: order fields by id after reorder
  • Fix: missing order on modal change
  • Fix: saved names in the multicheckbox
  • Fix: conditional parent multicheckbox
  • Improvement: colorpicker behaviour
  • Improvement: select for checkbox status in admin modal
Download this release

Release Info

Developer quadlayers
Plugin Icon 128x128 WooCommerce Checkout Manager
Version 4.6.5
Comparing to
See all releases

Code changes from version 4.6.4 to 4.6.5

assets/frontend/css/wooccm.css CHANGED
@@ -9,6 +9,15 @@
9
  .woocommerce form .wooccm-conditional-child {
10
  display: none;
11
  }
 
 
 
 
 
 
 
 
 
12
  .button.fileinput-button {
13
  position: relative;
14
  overflow: hidden!important;
9
  .woocommerce form .wooccm-conditional-child {
10
  display: none;
11
  }
12
+ .woocommerce form .wooccm-type-radio .woocommerce-radio-wrapper label {
13
+ display: inline-block;
14
+ }
15
+ .woocommerce form .wooccm-colorpicker-iris .iris-picker {
16
+ display: none;
17
+ }
18
+ .woocommerce form .wooccm-colorpicker-iris.active .iris-picker {
19
+ display: block;
20
+ }
21
  .button.fileinput-button {
22
  position: relative;
23
  overflow: hidden!important;
assets/frontend/css/wooccm.css.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../../less/wooccm.less"],"names":[],"mappings":"AAKI,YALS,KAEX,iBAGG;AACC,YANO,KAEX,iBAIK;EACD,SAAQ,EAAR;EACA,cAAA;;AAEF,YAVS,KAEX,iBAQG;EACC,WAAA;;AAXN,YAAa,KAeX;EACE,aAAA;;AAMF,OAAC;EACC,kBAAA;EACA,0BAAA;;AAFF,OAAC,iBAIC;EACE,kBAAA;EACA,MAAA;EACA,QAAA;EACA,SAAA;EACA,UAAA;EACA,YAAW,kBAAX;EACA,gBAAA;EACA,cAAA;EACA,eAAA;;AAMN;EACE,cAAA;EACA,UAAA;EACA,aAAA;EACA,eAAA;EACA,mBAAA;EACA,sBAAA;;AANF,iBAQE;EACE,aAAA;EACA,uBAAA;EACA,oBAAA;EACA,sBAAA;EACA,uBAAA;EACA,UAAA;EAEA,kBAAA;;AAhBJ,iBAQE,kBAWE;EACE,UAAA;EACA,kBAAA;EACA,QAAA;EACA,WAAA;EACA,WAAA;EACA,YAAA;EACA,sBAAA;EACA,cAAA;EACA,iBAAA;EACA,kBAAA;EACA,cAAA;EACA,gBAAA;EACA,kBAAA;EACA,eAAA;EACA,eAAA;EACA,iBAAA;EACA,+BAAA;;AApCN,iBAQE,kBA+BE;EACE,WAAA;EACA,gBAAA;;AAzCN,iBAQE,kBAoCE;EACE,aAAA;EACA,uBAAA;EACA,mBAAA;EACA,gBAAA;EACA,WAAA;EACA,iBAAA;EACA,kBAAA;EACA,gBAAA;;AApDN,iBAQE,kBAoCE,kCAUE;EACE,gBAAA;EACA,iBAAA;EACA,kBAAA;EACA,QAAA;EACA,YAAA;EACA,WAAA;EACA,YAAA;;AAEA,iBAvDN,kBAoCE,kCAUE,MASG;EACC,MAAA;EACA,SAAA;EACA,OAAA;EACA,QAAA;EAEA,gBAAA;EACA,YAAA;EACA,WAAA","file":"wooccm.css"}
1
+ {"version":3,"sources":["../../less/wooccm.less"],"names":[],"mappings":"AAGM,YAFJ,KACE,iBACG;AACC,YAHN,KACE,iBAEK;EACD,SAAQ,EAAR;EACA,cAAA;;AAEF,YAPJ,KACE,iBAMG;EACC,WAAA;;AATR,YACE,KAYE;EACE,aAAA;;AAdN,YACE,KAgBE,mBAEE,2BAEE;EACE,qBAAA;;AAtBV,YACE,KA2BE,yBACE;EACE,aAAA;;AAGF,YAhCJ,KA2BE,yBAKG,OACC;EACE,cAAA;;AASR,OAAC;EACC,kBAAA;EACA,0BAAA;;AAFF,OAAC,iBAIC;EACE,kBAAA;EACA,MAAA;EACA,QAAA;EACA,SAAA;EACA,UAAA;EACA,YAAW,kBAAX;EACA,gBAAA;EACA,cAAA;EACA,eAAA;;AAMN;EACE,cAAA;EACA,UAAA;EACA,aAAA;EACA,eAAA;EACA,mBAAA;EACA,sBAAA;;AANF,iBAQE;EACE,aAAA;EACA,uBAAA;EACA,oBAAA;EACA,sBAAA;EACA,uBAAA;EACA,UAAA;EAEA,kBAAA;;AAhBJ,iBAQE,kBAWE;EACE,UAAA;EACA,kBAAA;EACA,QAAA;EACA,WAAA;EACA,WAAA;EACA,YAAA;EACA,sBAAA;EACA,cAAA;EACA,iBAAA;EACA,kBAAA;EACA,cAAA;EACA,gBAAA;EACA,kBAAA;EACA,eAAA;EACA,eAAA;EACA,iBAAA;EACA,+BAAA;;AApCN,iBAQE,kBA+BE;EACE,WAAA;EACA,gBAAA;;AAzCN,iBAQE,kBAoCE;EACE,aAAA;EACA,uBAAA;EACA,mBAAA;EACA,gBAAA;EACA,WAAA;EACA,iBAAA;EACA,kBAAA;EACA,gBAAA;;AApDN,iBAQE,kBAoCE,kCAUE;EACE,gBAAA;EACA,iBAAA;EACA,kBAAA;EACA,QAAA;EACA,YAAA;EACA,WAAA;EACA,YAAA;;AAEA,iBAvDN,kBAoCE,kCAUE,MASG;EACC,MAAA;EACA,SAAA;EACA,OAAA;EACA,QAAA;EAEA,gBAAA;EACA,YAAA;EACA,WAAA","file":"wooccm.css"}
assets/frontend/js/wooccm-checkout.js CHANGED
@@ -14,11 +14,9 @@
14
  });
15
  }
16
  };
17
-
18
  var unblock = function ($node) {
19
  $node.removeClass('processing').unblock();
20
  };
21
-
22
  var append_image = function (list, i, source, name, filetype) {
23
 
24
  var $field_list = $(list),
@@ -63,7 +61,6 @@
63
  if (is_required) {
64
  field.find('label .optional').remove();
65
  field.addClass('validate-required');
66
-
67
  if (field.find('label .required').length === 0) {
68
  field.find('label').append(
69
  '&nbsp;<abbr class="required" title="' +
@@ -74,7 +71,6 @@
74
  } else {
75
  field.find('label .required').remove();
76
  field.removeClass('validate-required woocommerce-invalid woocommerce-invalid-required-field');
77
-
78
  if (field.find('label .optional').length === 0) {
79
  field.find('label').append('&nbsp;<span class="optional">(' + wc_address_i18n_params.i18n_optional_text + ')</span>');
80
  }
@@ -85,17 +81,13 @@
85
  $(document).on('country_to_state_changing', function (event, country, wrapper) {
86
 
87
  var thisform = wrapper, thislocale;
88
-
89
  var locale_fields = $.parseJSON(wc_address_i18n_params.locale_fields);
90
-
91
  $.each(locale_fields, function (key, value) {
92
 
93
  var field = thisform.find(value),
94
  required = field.find('[data-required]').data('required') || 0;
95
-
96
  field_is_required(field, required);
97
  });
98
-
99
  });
100
  // Field
101
  // ---------------------------------------------------------------------------
@@ -275,7 +267,6 @@
275
  $(document).on('change', '.wooccm-add-price', function (e) {
276
  $('body').trigger('update_checkout');
277
  });
278
-
279
  // Conditional
280
  // ---------------------------------------------------------------------------
281
 
@@ -284,21 +275,27 @@
284
  var $field = $(field),
285
  $parent = $('#' + $field.find('[data-conditional-parent]').data('conditional-parent') + '_field'),
286
  show_if_value = $field.find('[data-conditional-parent-value]').data('conditional-parent-value').toString();
287
-
288
  if ($parent.length) {
289
 
290
  $parent.on('wooccm_change change keyup', function (e) {
291
 
292
  var $this = $(e.target),
293
  value = $this.val();
294
-
295
  // fix for select2 search
296
  if ($this.hasClass('select2-selection')) {
297
  return;
298
  }
299
 
 
300
  if ($this.prop('type') == 'checkbox') {
301
- value = $this.is(':checked');
 
 
 
 
 
 
 
302
  }
303
 
304
  if (show_if_value == value || ($.isArray(value) && value.indexOf(show_if_value) > -1)) {
@@ -310,9 +307,7 @@
310
  $this.off('wooccm_change');
311
  $this.off('change');
312
  $this.off('keyup');
313
-
314
  });
315
-
316
  // dont use change event because trigger update_checkout event
317
  $parent.find('select:first').trigger('wooccm_change');
318
  $parent.find('textarea:first').trigger('wooccm_change');
@@ -338,13 +333,11 @@
338
  $parent.find('input[type=time]:first').trigger('wooccm_change');
339
  $parent.find('input[type=url]:first').trigger('wooccm_change');
340
  $parent.find('input[type=week]:first').trigger('wooccm_change');
341
-
342
  } else {
343
  $field.show();
344
  }
345
 
346
  });
347
-
348
  // Datepicker fields
349
  // ---------------------------------------------------------------------------
350
 
@@ -352,7 +345,6 @@
352
 
353
  var $field = $(field),
354
  $input = $field.find('input[type=text]');
355
-
356
  if ($.isFunction($.fn.datepicker)) {
357
 
358
  $input.datepicker({
@@ -362,7 +354,6 @@
362
  beforeShowDay: function (date) {
363
  var day = date.getDay(),
364
  disable = $input.data('disable') || false;
365
-
366
  if (!disable) {
367
  return [true]
368
  } else {
@@ -373,7 +364,6 @@
373
  }
374
 
375
  });
376
-
377
  // Timepicker fields
378
  // ---------------------------------------------------------------------------
379
 
@@ -381,7 +371,6 @@
381
 
382
  var $field = $(field),
383
  $input = $field.find('input[type=text]');
384
-
385
  if ($.isFunction($.fn.timepicker)) {
386
  $input.timepicker({
387
  showPeriod: true,
@@ -392,7 +381,6 @@
392
  }
393
 
394
  });
395
-
396
  // Color fields
397
  // ---------------------------------------------------------------------------
398
 
@@ -401,39 +389,102 @@
401
  var $field = $(field),
402
  $input = $field.find('input[type=text]'),
403
  $container = $field.find('.wooccmcolorpicker_container');
404
-
405
  $input.hide();
406
-
407
  if ($.isFunction($.fn.farbtastic)) {
408
 
409
  $container.farbtastic('#' + $input.attr('id'));
410
-
411
  $container.on('click', function (e) {
412
  $input.fadeIn();
413
  });
414
-
415
  }
416
 
417
  });
418
-
419
  $('.wooccm-colorpicker-iris').each(function (i, field) {
420
 
421
  var $field = $(field),
422
- $input = $field.find('input[type=text]');//,
423
- //$container = $field.find('.wooccmcolorpicker_container');
424
-
425
- $input.css('color', '#fff').css('background', $input.val()).hide();
426
 
 
 
427
  $input.iris({
428
  class: $input.attr('id'),
429
  palettes: true,
430
  color: '',
431
  hide: false,
432
  change: function (event, ui) {
433
- $input.css('color', '#000').css('background', ui.color.toString()).fadeIn();
434
  }
435
  });
436
-
437
- //$input.wpColorPicker();
438
  });
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
439
  })(jQuery);
14
  });
15
  }
16
  };
 
17
  var unblock = function ($node) {
18
  $node.removeClass('processing').unblock();
19
  };
 
20
  var append_image = function (list, i, source, name, filetype) {
21
 
22
  var $field_list = $(list),
61
  if (is_required) {
62
  field.find('label .optional').remove();
63
  field.addClass('validate-required');
 
64
  if (field.find('label .required').length === 0) {
65
  field.find('label').append(
66
  '&nbsp;<abbr class="required" title="' +
71
  } else {
72
  field.find('label .required').remove();
73
  field.removeClass('validate-required woocommerce-invalid woocommerce-invalid-required-field');
 
74
  if (field.find('label .optional').length === 0) {
75
  field.find('label').append('&nbsp;<span class="optional">(' + wc_address_i18n_params.i18n_optional_text + ')</span>');
76
  }
81
  $(document).on('country_to_state_changing', function (event, country, wrapper) {
82
 
83
  var thisform = wrapper, thislocale;
 
84
  var locale_fields = $.parseJSON(wc_address_i18n_params.locale_fields);
 
85
  $.each(locale_fields, function (key, value) {
86
 
87
  var field = thisform.find(value),
88
  required = field.find('[data-required]').data('required') || 0;
 
89
  field_is_required(field, required);
90
  });
 
91
  });
92
  // Field
93
  // ---------------------------------------------------------------------------
267
  $(document).on('change', '.wooccm-add-price', function (e) {
268
  $('body').trigger('update_checkout');
269
  });
 
270
  // Conditional
271
  // ---------------------------------------------------------------------------
272
 
275
  var $field = $(field),
276
  $parent = $('#' + $field.find('[data-conditional-parent]').data('conditional-parent') + '_field'),
277
  show_if_value = $field.find('[data-conditional-parent-value]').data('conditional-parent-value').toString();
 
278
  if ($parent.length) {
279
 
280
  $parent.on('wooccm_change change keyup', function (e) {
281
 
282
  var $this = $(e.target),
283
  value = $this.val();
 
284
  // fix for select2 search
285
  if ($this.hasClass('select2-selection')) {
286
  return;
287
  }
288
 
289
+ //make sure its a single checkbox otherwise return value
290
  if ($this.prop('type') == 'checkbox') {
291
+ // fix for multicheckbox
292
+ if ($this.attr('name').indexOf('[]') !== -1) {
293
+ value = $parent.find('input:checked').map(function (i, e) {
294
+ return e.value
295
+ }).toArray();
296
+ } else {
297
+ value = $this.is(':checked');
298
+ }
299
  }
300
 
301
  if (show_if_value == value || ($.isArray(value) && value.indexOf(show_if_value) > -1)) {
307
  $this.off('wooccm_change');
308
  $this.off('change');
309
  $this.off('keyup');
 
310
  });
 
311
  // dont use change event because trigger update_checkout event
312
  $parent.find('select:first').trigger('wooccm_change');
313
  $parent.find('textarea:first').trigger('wooccm_change');
333
  $parent.find('input[type=time]:first').trigger('wooccm_change');
334
  $parent.find('input[type=url]:first').trigger('wooccm_change');
335
  $parent.find('input[type=week]:first').trigger('wooccm_change');
 
336
  } else {
337
  $field.show();
338
  }
339
 
340
  });
 
341
  // Datepicker fields
342
  // ---------------------------------------------------------------------------
343
 
345
 
346
  var $field = $(field),
347
  $input = $field.find('input[type=text]');
 
348
  if ($.isFunction($.fn.datepicker)) {
349
 
350
  $input.datepicker({
354
  beforeShowDay: function (date) {
355
  var day = date.getDay(),
356
  disable = $input.data('disable') || false;
 
357
  if (!disable) {
358
  return [true]
359
  } else {
364
  }
365
 
366
  });
 
367
  // Timepicker fields
368
  // ---------------------------------------------------------------------------
369
 
371
 
372
  var $field = $(field),
373
  $input = $field.find('input[type=text]');
 
374
  if ($.isFunction($.fn.timepicker)) {
375
  $input.timepicker({
376
  showPeriod: true,
381
  }
382
 
383
  });
 
384
  // Color fields
385
  // ---------------------------------------------------------------------------
386
 
389
  var $field = $(field),
390
  $input = $field.find('input[type=text]'),
391
  $container = $field.find('.wooccmcolorpicker_container');
 
392
  $input.hide();
 
393
  if ($.isFunction($.fn.farbtastic)) {
394
 
395
  $container.farbtastic('#' + $input.attr('id'));
 
396
  $container.on('click', function (e) {
397
  $input.fadeIn();
398
  });
 
399
  }
400
 
401
  });
 
402
  $('.wooccm-colorpicker-iris').each(function (i, field) {
403
 
404
  var $field = $(field),
405
+ $input = $field.find('input[type=text]');
406
+ $input.css('background', $input.val());
407
+ $input.on('click', function (e) {
 
408
 
409
+ $field.toggleClass('active');
410
+ });
411
  $input.iris({
412
  class: $input.attr('id'),
413
  palettes: true,
414
  color: '',
415
  hide: false,
416
  change: function (event, ui) {
417
+ $input.css('background', ui.color.toString()).fadeIn();
418
  }
419
  });
 
 
420
  });
421
+ $(document).on('click', function (e) {
422
+ if ($(e.target).closest('.iris-picker').length === 0) {
423
+ $('.wooccm-colorpicker-iris').removeClass('active');
424
+ }
425
+ });
426
+
427
+ if (typeof wc_country_select_params === 'undefined') {
428
+ return false;
429
+ }
430
+
431
+ if ($().selectWoo) {
432
+ var getEnhancedSelectFormatString = function () {
433
+ return {
434
+ 'language': {
435
+ errorLoading: function () {
436
+ return wc_country_select_params.i18n_searching;
437
+ },
438
+ inputTooLong: function (args) {
439
+ var overChars = args.input.length - args.maximum;
440
+ if (1 === overChars) {
441
+ return wc_country_select_params.i18n_input_too_long_1;
442
+ }
443
+
444
+ return wc_country_select_params.i18n_input_too_long_n.replace('%qty%', overChars);
445
+ },
446
+ inputTooShort: function (args) {
447
+ var remainingChars = args.minimum - args.input.length;
448
+ if (1 === remainingChars) {
449
+ return wc_country_select_params.i18n_input_too_short_1;
450
+ }
451
+
452
+ return wc_country_select_params.i18n_input_too_short_n.replace('%qty%', remainingChars);
453
+ },
454
+ loadingMore: function () {
455
+ return wc_country_select_params.i18n_load_more;
456
+ },
457
+ maximumSelected: function (args) {
458
+ if (args.maximum === 1) {
459
+ return wc_country_select_params.i18n_selection_too_long_1;
460
+ }
461
+ return wc_country_select_params.i18n_selection_too_long_n.replace('%qty%', args.maximum);
462
+ },
463
+ noResults: function () {
464
+ return wc_country_select_params.i18n_no_matches;
465
+ },
466
+ searching: function () {
467
+ return wc_country_select_params.i18n_searching;
468
+ }
469
+ }
470
+ };
471
+ };
472
+
473
+ var wooccm_enhanced_select = function () {
474
+ $('select.wooccm-enhanced-select:visible').each(function () {
475
+ var select2_args = $.extend({
476
+ placeholder: $(this).attr('data-placeholder') || '',
477
+ width: '100%',
478
+ forceAbove: true
479
+ }, getEnhancedSelectFormatString());
480
+ $(this).on('select2:select', function () {
481
+ $(this).focus();
482
+ }).selectWoo(select2_args);
483
+ });
484
+ };
485
+
486
+ wooccm_enhanced_select();
487
+
488
+ }
489
+
490
  })(jQuery);
includes/class-wooccm-notices.php CHANGED
@@ -46,7 +46,7 @@ class WOOCCM_Notices {
46
  </div>
47
  <div class="notice-content" style="margin-left: 15px;">
48
  <p>
49
- <h3>Hello! the new admin panel is here!</h3>
50
  </p>
51
  <p>
52
  As you know, we've recently acquired this plugin and we've been working very hard to bring you a quality product.
@@ -83,32 +83,33 @@ class WOOCCM_Notices {
83
  <?php
84
  }
85
 
86
- if (!get_transient('wooccm-first-rating') && !get_user_meta(get_current_user_id(), 'wooccm-user-rating', true)) {
87
  ?>
88
  <div id="wooccm-admin-rating" class="wooccm-notice notice is-dismissible" data-notice_id="wooccm-user-rating">
89
- <div class="notice-container" style="padding-top: 10px; padding-bottom: 10px; display: flex; justify-content: left; align-items: center;">
90
- <div class="notice-image">
91
- <img style="border-radius:50%;max-width: 90px;" src="<?php echo plugins_url('/assets/backend/img/logo.jpg', WOOCCM_PLUGIN_FILE); ?>" alt="<?php echo esc_html(WOOCCM_PLUGIN_NAME); ?>>">
92
- </div>
93
- <div class="notice-content" style="margin-left: 15px;">
94
- <p>
95
- <?php printf(esc_html__('Hello! We\'ve recently acquired this plugin!', 'woocommerce-checkout-manager'), WOOCCM_PLUGIN_NAME); ?>
96
- <br/>
97
- <?php esc_html_e('We will do our best to improve it and include new features gradually. Please be patient and let us know about the issues and improvements that you want to see in this plugin.', 'woocommerce-checkout-manager'); ?>
98
- </p>
99
- <a href="<?php echo esc_url(WOOCCM_GROUP_URL); ?>" class="button-primary" target="_blank">
100
- <?php esc_html_e('Join Community!', 'woocommerce-checkout-manager'); ?>
101
- </a>
102
- <a href="<?php echo esc_url(WOOCCM_SUPPORT_URL); ?>" class="button-secondary" target="_blank">
103
- <?php esc_html_e('Report a bug', 'woocommerce-checkout-manager'); ?>
104
- </a>
105
- <a style="margin-left: 10px;" href="https://quadlayers.com/?utm_source=wooccm_admin" target="_blank">
106
- <?php esc_html_e('About us', 'woocommerce-checkout-manager'); ?>
107
- </a>
108
- </div>
109
- </div>
110
  </div>
111
- <?php } ?>
 
112
  <script>
113
  (function ($) {
114
  $('.wooccm-notice').on('click', '.notice-dismiss', function (e) {
46
  </div>
47
  <div class="notice-content" style="margin-left: 15px;">
48
  <p>
49
+ <h3>Hello! the new admin panel is here!</h3>
50
  </p>
51
  <p>
52
  As you know, we've recently acquired this plugin and we've been working very hard to bring you a quality product.
83
  <?php
84
  }
85
 
86
+ /* elseif (!get_transient('wooccm-first-rating') && !get_user_meta(get_current_user_id(), 'wooccm-user-rating', true)) {
87
  ?>
88
  <div id="wooccm-admin-rating" class="wooccm-notice notice is-dismissible" data-notice_id="wooccm-user-rating">
89
+ <div class="notice-container" style="padding-top: 10px; padding-bottom: 10px; display: flex; justify-content: left; align-items: center;">
90
+ <div class="notice-image">
91
+ <img style="border-radius:50%;max-width: 90px;" src="<?php echo plugins_url('/assets/backend/img/logo.jpg', WOOCCM_PLUGIN_FILE); ?>" alt="<?php echo esc_html(WOOCCM_PLUGIN_NAME); ?>>">
92
+ </div>
93
+ <div class="notice-content" style="margin-left: 15px;">
94
+ <p>
95
+ <?php printf(esc_html__('Hello! We\'ve recently acquired this plugin!', 'woocommerce-checkout-manager'), WOOCCM_PLUGIN_NAME); ?>
96
+ <br/>
97
+ <?php esc_html_e('We will do our best to improve it and include new features gradually. Please be patient and let us know about the issues and improvements that you want to see in this plugin.', 'woocommerce-checkout-manager'); ?>
98
+ </p>
99
+ <a href="<?php echo esc_url(WOOCCM_GROUP_URL); ?>" class="button-primary" target="_blank">
100
+ <?php esc_html_e('Join Community!', 'woocommerce-checkout-manager'); ?>
101
+ </a>
102
+ <a href="<?php echo esc_url(WOOCCM_SUPPORT_URL); ?>" class="button-secondary" target="_blank">
103
+ <?php esc_html_e('Report a bug', 'woocommerce-checkout-manager'); ?>
104
+ </a>
105
+ <a style="margin-left: 10px;" href="https://quadlayers.com/?utm_source=wooccm_admin" target="_blank">
106
+ <?php esc_html_e('About us', 'woocommerce-checkout-manager'); ?>
107
+ </a>
108
+ </div>
109
+ </div>
110
  </div>
111
+ <?php } */
112
+ ?>
113
  <script>
114
  (function ($) {
115
  $('.wooccm-notice').on('click', '.notice-dismiss', function (e) {
includes/controller/class-wooccm-advanced.php CHANGED
@@ -62,6 +62,13 @@ class WOOCCM_Checkout_Advanced_Controller {
62
  // Admin
63
  // -------------------------------------------------------------------------
64
 
 
 
 
 
 
 
 
65
  public function add_section() {
66
 
67
  global $current_section;
@@ -91,10 +98,7 @@ class WOOCCM_Checkout_Advanced_Controller {
91
 
92
  public function init() {
93
 
94
- // global $wooccm_sections;
95
- //
96
- // $wooccm_sections['advanced'] = esc_html__('Advanced', 'woocommerce-checkout-manager');
97
-
98
  add_action('woocommerce_sections_' . WOOCCM_PREFIX, array($this, 'add_section'));
99
  add_action('woocommerce_settings_save_' . WOOCCM_PREFIX, array($this, 'save_settings'));
100
 
62
  // Admin
63
  // -------------------------------------------------------------------------
64
 
65
+ public function add_header() {
66
+ global $current_section;
67
+ ?>
68
+ <li><a href="<?php echo admin_url('admin.php?page=wc-settings&tab=wooccm&section=advanced'); ?>" class="<?php echo ( $current_section == 'advanced' ? 'current' : '' ); ?>"><?php esc_html_e('Advanced', 'woocommerce-checkout-manager'); ?></a> | </li>
69
+ <?php
70
+ }
71
+
72
  public function add_section() {
73
 
74
  global $current_section;
98
 
99
  public function init() {
100
 
101
+ add_action('wooccm_sections_header', array($this, 'add_header'));
 
 
 
102
  add_action('woocommerce_sections_' . WOOCCM_PREFIX, array($this, 'add_section'));
103
  add_action('woocommerce_settings_save_' . WOOCCM_PREFIX, array($this, 'save_settings'));
104
 
includes/controller/class-wooccm-checkout.php CHANGED
@@ -73,7 +73,6 @@ class WOOCCM_Checkout_Controller {
73
  }
74
  </style>
75
  <?php
76
-
77
  }
78
 
79
  if (get_option('wooccm_checkout_force_create_account', 'no') == 'yes') {
@@ -89,7 +88,6 @@ class WOOCCM_Checkout_Controller {
89
  });
90
  </script>
91
  <?php
92
-
93
  }
94
  }
95
 
@@ -252,6 +250,13 @@ class WOOCCM_Checkout_Controller {
252
  );
253
  }
254
 
 
 
 
 
 
 
 
255
  public function add_section() {
256
 
257
  global $current_section;
@@ -355,6 +360,7 @@ class WOOCCM_Checkout_Controller {
355
  public function init() {
356
 
357
  add_action('wp_enqueue_scripts', array($this, 'enqueue_scripts'));
 
358
  add_action('woocommerce_sections_' . WOOCCM_PREFIX, array($this, 'add_section'), 99);
359
  add_action('woocommerce_settings_save_' . WOOCCM_PREFIX, array($this, 'save_settings'));
360
 
73
  }
74
  </style>
75
  <?php
 
76
  }
77
 
78
  if (get_option('wooccm_checkout_force_create_account', 'no') == 'yes') {
88
  });
89
  </script>
90
  <?php
 
91
  }
92
  }
93
 
250
  );
251
  }
252
 
253
+ public function add_header() {
254
+ global $current_section;
255
+ ?>
256
+ <li><a href="<?php echo admin_url('admin.php?page=wc-settings&tab=wooccm&section'); ?>" class="<?php echo ( $current_section == '' ? 'current' : '' ); ?>"><?php esc_html_e('Checkout', 'woocommerce-checkout-manager'); ?></a> | </li>
257
+ <?php
258
+ }
259
+
260
  public function add_section() {
261
 
262
  global $current_section;
360
  public function init() {
361
 
362
  add_action('wp_enqueue_scripts', array($this, 'enqueue_scripts'));
363
+ add_action('wooccm_sections_header', array($this, 'add_header'));
364
  add_action('woocommerce_sections_' . WOOCCM_PREFIX, array($this, 'add_section'), 99);
365
  add_action('woocommerce_settings_save_' . WOOCCM_PREFIX, array($this, 'save_settings'));
366
 
includes/controller/class-wooccm-field.php CHANGED
@@ -278,6 +278,7 @@ class WOOCCM_Field_Controller {
278
  // fix unchecked checkboxes
279
  $field_data = wp_parse_args($field_data, WOOCCM()->$section->get_args());
280
 
 
281
  unset($field_data['required']);
282
  unset($field_data['position']);
283
  unset($field_data['disabled']);
@@ -508,6 +509,27 @@ class WOOCCM_Field_Controller {
508
  }
509
  }
510
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
511
  public function add_section_shipping() {
512
 
513
  global $current_section, $wp_roles, $wp_locale;
@@ -579,6 +601,10 @@ class WOOCCM_Field_Controller {
579
  add_action('woocommerce_admin_order_data_after_shipping_address', array($this, 'add_order_shipping_data'));
580
  add_action('woocommerce_admin_order_data_after_shipping_address', array($this, 'add_order_additional_data'));
581
 
 
 
 
 
582
  add_action('woocommerce_sections_' . WOOCCM_PREFIX, array($this, 'add_section_billing'), 99);
583
  add_action('woocommerce_sections_' . WOOCCM_PREFIX, array($this, 'add_section_shipping'), 99);
584
  add_action('woocommerce_sections_' . WOOCCM_PREFIX, array($this, 'add_section_additional'), 99);
278
  // fix unchecked checkboxes
279
  $field_data = wp_parse_args($field_data, WOOCCM()->$section->get_args());
280
 
281
+ unset($field_data['order']);
282
  unset($field_data['required']);
283
  unset($field_data['position']);
284
  unset($field_data['disabled']);
509
  }
510
  }
511
 
512
+ public function add_header_billing() {
513
+ global $current_section;
514
+ ?>
515
+ <li><a href="<?php echo admin_url('admin.php?page=wc-settings&tab=wooccm&section=billing'); ?>" class="<?php echo ( $current_section == 'billing' ? 'current' : '' ); ?>"><?php esc_html_e('Billing', 'woocommerce-checkout-manager'); ?></a> | </li>
516
+ <?php
517
+ }
518
+
519
+ public function add_header_shipping() {
520
+ global $current_section;
521
+ ?>
522
+ <li><a href="<?php echo admin_url('admin.php?page=wc-settings&tab=wooccm&section=shipping'); ?>" class="<?php echo ( $current_section == 'shipping' ? 'current' : '' ); ?>"><?php esc_html_e('Shipping', 'woocommerce-checkout-manager'); ?></a> | </li>
523
+ <?php
524
+ }
525
+
526
+ public function add_header_additional() {
527
+ global $current_section;
528
+ ?>
529
+ <li><a href="<?php echo admin_url('admin.php?page=wc-settings&tab=wooccm&section=additional'); ?>" class="<?php echo ( $current_section == 'additional' ? 'current' : '' ); ?>"><?php esc_html_e('Additional', 'woocommerce-checkout-manager'); ?></a> | </li>
530
+ <?php
531
+ }
532
+
533
  public function add_section_shipping() {
534
 
535
  global $current_section, $wp_roles, $wp_locale;
601
  add_action('woocommerce_admin_order_data_after_shipping_address', array($this, 'add_order_shipping_data'));
602
  add_action('woocommerce_admin_order_data_after_shipping_address', array($this, 'add_order_additional_data'));
603
 
604
+
605
+ add_action('wooccm_sections_header', array($this, 'add_header_billing'));
606
+ add_action('wooccm_sections_header', array($this, 'add_header_shipping'));
607
+ add_action('wooccm_sections_header', array($this, 'add_header_additional'));
608
  add_action('woocommerce_sections_' . WOOCCM_PREFIX, array($this, 'add_section_billing'), 99);
609
  add_action('woocommerce_sections_' . WOOCCM_PREFIX, array($this, 'add_section_shipping'), 99);
610
  add_action('woocommerce_sections_' . WOOCCM_PREFIX, array($this, 'add_section_additional'), 99);
includes/controller/class-wooccm-order.php CHANGED
@@ -232,6 +232,13 @@ class WOOCCM_Order_Controller extends WOOCCM_Upload {
232
  );
233
  }
234
 
 
 
 
 
 
 
 
235
  public function add_section() {
236
 
237
  global $current_section;
@@ -296,6 +303,7 @@ class WOOCCM_Order_Controller extends WOOCCM_Upload {
296
 
297
  // Panel
298
  // -------------------------------------------------------------------------
 
299
  add_action('woocommerce_sections_' . WOOCCM_PREFIX, array($this, 'add_section'), 99);
300
  add_action('woocommerce_settings_save_' . WOOCCM_PREFIX, array($this, 'save_settings'));
301
 
232
  );
233
  }
234
 
235
+ public function add_header() {
236
+ global $current_section;
237
+ ?>
238
+ <li><a href="<?php echo admin_url('admin.php?page=wc-settings&tab=wooccm&section=order'); ?>" class="<?php echo ( $current_section == 'order' ? 'current' : '' ); ?>"><?php esc_html_e('Order', 'woocommerce-checkout-manager'); ?></a> | </li>
239
+ <?php
240
+ }
241
+
242
  public function add_section() {
243
 
244
  global $current_section;
303
 
304
  // Panel
305
  // -------------------------------------------------------------------------
306
+ add_action('wooccm_sections_header', array($this, 'add_header'));
307
  add_action('woocommerce_sections_' . WOOCCM_PREFIX, array($this, 'add_section'), 99);
308
  add_action('woocommerce_settings_save_' . WOOCCM_PREFIX, array($this, 'save_settings'));
309
 
includes/model/class-wooccm-field.php CHANGED
@@ -29,10 +29,17 @@ class WOOCCM_Field {
29
  }
30
  }
31
  }
 
 
32
  }
33
 
34
  public function get_id($fields) {
35
- return absint(key(array_slice($fields, -1, 1, true))) + 1;
 
 
 
 
 
36
  }
37
 
38
  public function get_name($field_id) {
@@ -357,6 +364,9 @@ class WOOCCM_Field {
357
  }
358
  }
359
 
 
 
 
360
  if ($this->update_option($fields)) {
361
  return $fields;
362
  }
29
  }
30
  }
31
  }
32
+
33
+ return false;
34
  }
35
 
36
  public function get_id($fields) {
37
+
38
+ if (count($fields)) {
39
+ return max(array_keys($fields)) + 1;
40
+ }
41
+
42
+ return 0;
43
  }
44
 
45
  public function get_name($field_id) {
364
  }
365
  }
366
 
367
+ //reorder array based on ids
368
+ ksort($fields);
369
+
370
  if ($this->update_option($fields)) {
371
  return $fields;
372
  }
includes/view/backend/pages/modals/parts/panel-general.php CHANGED
@@ -6,7 +6,7 @@
6
  <span class="woocommerce-help-tip" data-tip="<?php esc_html_e('You can\'t change the slug of default fields.', 'woocommerce-checkout-manager'); ?>"></span>
7
  <input class="short" type="text" name="name" placeholder="<?php esc_html_e('myfield', 'woocommerce-checkout-manager'); ?>" value="{{data.name}}" readonly="readonly">
8
  <# } else { #>
9
- <span class="woocommerce-help-tip" data-tip="<?php esc_html_e('Currently is not possible to change the name of the fields.', 'woocommerce-checkout-manager'); ?><?php //esc_html_e('To edit Abbreviations open General > Switches > Editing Of Abbreviation Fields.', 'woocommerce-checkout-manager'); ?>"></span>
10
  <input class="short" type="text" name="name" placeholder="<?php esc_html_e('myfield', 'woocommerce-checkout-manager'); ?>" value="{{data.name}}" readonly="readonly" <?php /* if (empty($options['checkness']['abbreviation'])) { ?>readonly="readonly"<?php } */ ?>>
11
  <# } #>
12
  </p>
@@ -62,7 +62,14 @@
62
  <div class="options_group">
63
  <p class="form-field">
64
  <label><?php esc_html_e('Default', 'woocommerce-checkout-manager'); ?></label>
 
 
 
 
 
 
65
  <input class="short" type="text" name="default" placeholder="<?php esc_html_e('Enter a default value (optional)', 'woocommerce-checkout-manager'); ?>" value="{{data.default}}">
 
66
  <span span class="woocommerce-help-tip" data-tip="<?php esc_html_e('Default value of the checkout field.', 'woocommerce-checkout-manager'); ?>"></span>
67
  </p>
68
  </div>
@@ -76,7 +83,7 @@
76
  <p class="form-field">
77
  <select class="wooccm-enhanced-select" name="file_types" multiple="multiple" data-placeholder="<?php esc_attr_e('Choose the allowed types&hellip;', 'woocommerce-checkout-manager'); ?>" data-allow_clear="true" >
78
  <?php foreach (wp_get_mime_types() as $type => $name) : ?>
79
- <option <# if ( _.contains(data.file_types, '<?php echo esc_attr($type); ?>') ) { #>selected="selected"<# } #> value="<?php echo esc_attr($type); ?>"><?php echo esc_html($type); ?></option>
80
  <?php endforeach; ?>
81
  </select>
82
  </p>
6
  <span class="woocommerce-help-tip" data-tip="<?php esc_html_e('You can\'t change the slug of default fields.', 'woocommerce-checkout-manager'); ?>"></span>
7
  <input class="short" type="text" name="name" placeholder="<?php esc_html_e('myfield', 'woocommerce-checkout-manager'); ?>" value="{{data.name}}" readonly="readonly">
8
  <# } else { #>
9
+ <span class="woocommerce-help-tip" data-tip="<?php esc_html_e('Currently is not possible to change the name of the fields.', 'woocommerce-checkout-manager'); ?><?php //esc_html_e('To edit Abbreviations open General > Switches > Editing Of Abbreviation Fields.', 'woocommerce-checkout-manager'); ?>"></span>
10
  <input class="short" type="text" name="name" placeholder="<?php esc_html_e('myfield', 'woocommerce-checkout-manager'); ?>" value="{{data.name}}" readonly="readonly" <?php /* if (empty($options['checkness']['abbreviation'])) { ?>readonly="readonly"<?php } */ ?>>
11
  <# } #>
12
  </p>
62
  <div class="options_group">
63
  <p class="form-field">
64
  <label><?php esc_html_e('Default', 'woocommerce-checkout-manager'); ?></label>
65
+ <# if (data.type == 'checkbox') { #>
66
+ <select class="wooccm-enhanced-select" name="default">
67
+ <option <# if ( 1 == data.default ) { #>selected="selected"<# } #> value="1"><?php esc_html_e('Yes'); ?></option>
68
+ <option <# if ( 0 == data.default ) { #>selected="selected"<# } #> value="0"><?php esc_html_e('No'); ?></option>
69
+ </select>
70
+ <# } else { #>
71
  <input class="short" type="text" name="default" placeholder="<?php esc_html_e('Enter a default value (optional)', 'woocommerce-checkout-manager'); ?>" value="{{data.default}}">
72
+ <# } #>
73
  <span span class="woocommerce-help-tip" data-tip="<?php esc_html_e('Default value of the checkout field.', 'woocommerce-checkout-manager'); ?>"></span>
74
  </p>
75
  </div>
83
  <p class="form-field">
84
  <select class="wooccm-enhanced-select" name="file_types" multiple="multiple" data-placeholder="<?php esc_attr_e('Choose the allowed types&hellip;', 'woocommerce-checkout-manager'); ?>" data-allow_clear="true" >
85
  <?php foreach (wp_get_mime_types() as $type => $name) : ?>
86
+ <option <# if ( _.contains(data.file_types, '<?php echo esc_attr($type); ?>') ) { #>selected="selected"<# } #> value="<?php echo esc_attr($type); ?>"><?php echo esc_html($type); ?></option>
87
  <?php endforeach; ?>
88
  </select>
89
  </p>
includes/view/backend/pages/parts/header.php CHANGED
@@ -1,23 +1,8 @@
1
- <?php
2
- $sections = array();
3
- $sections[''] = esc_html__('Checkout', 'woocommerce-checkout-manager');
4
- $sections['billing'] = esc_html__('Billing', 'woocommerce-checkout-manager');
5
- $sections['shipping'] = esc_html__('Shipping', 'woocommerce-checkout-manager');
6
- $sections['additional'] = esc_html__('Additional', 'woocommerce-checkout-manager');
7
- $sections['order'] = esc_html__('Order', 'woocommerce-checkout-manager');
8
- //$sections['email'] = esc_html__('Email', 'woocommerce-checkout-manager');
9
- $sections['advanced'] = esc_html__('Advanced', 'woocommerce-checkout-manager');
10
-
11
- echo '<ul class="subsubsub">';
12
-
13
- $array_keys = array_keys($sections);
14
-
15
- foreach ($sections as $id => $label) {
16
- echo '<li><a href="' . admin_url('admin.php?page=wc-settings&tab=wooccm&section=' . sanitize_title($id)) . '" class="' . ( $current_section == $id ? 'current' : '' ) . '">' . $label . '</a> | </li>';
17
- }
18
-
19
- echo '<li><a target="_blank" href="' . WOOCCM_DOCUMENTATION_URL . '">' . esc_html__('Documentation', 'woocommerce-checkout-manager') . '</a> | </li>';
20
- echo '<li><a target="_blank" href="' . WOOCCM_SUPPORT_URL . '">' . esc_html__('Report a bug', 'woocommerce-checkout-manager') . '</a></li>';
21
-
22
- echo '</ul><br class="clear" />';
23
 
1
+ <ul class="subsubsub">
2
+ <?php do_action('wooccm_sections_header'); ?>
3
+ <li><a target="_blank" href="<?php echo WOOCCM_PURCHASE_URL; ?>"><?php echo esc_html__('Premium', 'woocommerce-checkout-manager'); ?></a> | </li>
4
+ <li><a target="_blank" href="<?php echo WOOCCM_DOCUMENTATION_URL; ?>"><?php echo esc_html__('Documentation', 'woocommerce-checkout-manager'); ?></a> | </li>
5
+ <li><a target="_blank" href="<?php echo WOOCCM_SUPPORT_URL; ?>"><?php echo esc_html__('Report a bug', 'woocommerce-checkout-manager'); ?></a></li>
6
+ </ul>
7
+ <br class="clear" />
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
8
 
includes/view/frontend/class-wooccm-fields-filters.php CHANGED
@@ -102,12 +102,6 @@ class WOOCCM_Fields_Filter {
102
  $field .= '<option value="" disabled="disabled" selected="selected">' . esc_attr($args['placeholder']) . '</option>';
103
  }
104
  foreach ($args['options'] as $option_key => $option_text) {
105
- // if ('' === $option_key) {
106
- // if (empty($args['placeholder'])) {
107
- // $args['placeholder'] = $option_text ? $option_text : __('Choose an option', 'woocommerce-checkout-manager');
108
- // }
109
- // $custom_attributes[] = 'data-allow_clear="true"';
110
- // }
111
  $field .= '<option value="' . esc_attr($option_key) . '" ' . selected($value, $option_key, false) . '>' . esc_attr($option_text) . '</option>';
112
  }
113
  $field .= '</select>';
@@ -142,7 +136,8 @@ class WOOCCM_Fields_Filter {
142
  $field .= ' <span class="woocommerce-multicheckbox-wrapper" ' . implode(' ', $custom_attributes) . '>';
143
 
144
  foreach ($args['options'] as $option_key => $option_text) {
145
- $field .='<label><input type="checkbox" name="' . esc_attr($key) . '[]" value="' . esc_attr($option_text) . '"' . checked(in_array($option_key, $value), 1, false) . ' /> ' . esc_attr($option_text) . '</label>';
 
146
  }
147
 
148
  $field .= '</span>';
@@ -230,36 +225,6 @@ class WOOCCM_Fields_Filter {
230
  return $field;
231
  }
232
 
233
- // Datepicker
234
- // ---------------------------------------------------------------------------
235
- public function datepicker_field($field = '', $key, $args, $value) {
236
-
237
- $args['type'] = 'text';
238
-
239
- ob_start();
240
-
241
- woocommerce_form_field($key, $args, $value);
242
-
243
- $field = ob_get_clean();
244
-
245
- return $field;
246
- }
247
-
248
- // Timepicker
249
- // ---------------------------------------------------------------------------
250
- public function timepicker_field($field = '', $key, $args, $value) {
251
-
252
- $args['type'] = 'text';
253
-
254
- ob_start();
255
-
256
- woocommerce_form_field($key, $args, $value);
257
-
258
- $field = ob_get_clean();
259
-
260
- return $field;
261
- }
262
-
263
  // Country
264
  // ---------------------------------------------------------------------------
265
  public function country_field($field = '', $key, $args, $value) {
@@ -318,8 +283,6 @@ class WOOCCM_Fields_Filter {
318
  add_filter('woocommerce_form_field_file', array($this, 'custom_field'), 10, 4);
319
  add_filter('woocommerce_form_field_heading', array($this, 'heading_field'), 10, 4);
320
  add_filter('woocommerce_form_field_colorpicker', array($this, 'colorpicker_field'), 10, 4);
321
- add_filter('woocommerce_form_field_datepicker', array($this, 'datepicker_field'), 10, 4);
322
- add_filter('woocommerce_form_field_timepicker', array($this, 'timepicker_field'), 10, 4);
323
  add_filter('woocommerce_form_field_country', array($this, 'country_field'), 10, 4);
324
  add_filter('woocommerce_form_field_state', array($this, 'state_field'), 10, 4);
325
  }
102
  $field .= '<option value="" disabled="disabled" selected="selected">' . esc_attr($args['placeholder']) . '</option>';
103
  }
104
  foreach ($args['options'] as $option_key => $option_text) {
 
 
 
 
 
 
105
  $field .= '<option value="' . esc_attr($option_key) . '" ' . selected($value, $option_key, false) . '>' . esc_attr($option_text) . '</option>';
106
  }
107
  $field .= '</select>';
136
  $field .= ' <span class="woocommerce-multicheckbox-wrapper" ' . implode(' ', $custom_attributes) . '>';
137
 
138
  foreach ($args['options'] as $option_key => $option_text) {
139
+ //$field .='<label><input type="checkbox" name="' . esc_attr($key) . '[]" value="1"' . checked(in_array($option_key, $value), 1, false) . ' /> ' . esc_attr($option_text) . '</label>';
140
+ $field .='<label><input type="checkbox" name="' . esc_attr($key) . '[]" value="' . esc_attr($option_key) . '"' . checked(in_array($option_key, $value), 1, false) . ' /> ' . esc_attr($option_text) . '</label>';
141
  }
142
 
143
  $field .= '</span>';
225
  return $field;
226
  }
227
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
228
  // Country
229
  // ---------------------------------------------------------------------------
230
  public function country_field($field = '', $key, $args, $value) {
283
  add_filter('woocommerce_form_field_file', array($this, 'custom_field'), 10, 4);
284
  add_filter('woocommerce_form_field_heading', array($this, 'heading_field'), 10, 4);
285
  add_filter('woocommerce_form_field_colorpicker', array($this, 'colorpicker_field'), 10, 4);
 
 
286
  add_filter('woocommerce_form_field_country', array($this, 'country_field'), 10, 4);
287
  add_filter('woocommerce_form_field_state', array($this, 'state_field'), 10, 4);
288
  }
includes/view/frontend/class-wooccm-fields-handler.php CHANGED
@@ -28,9 +28,10 @@ class WOOCCM_Fields_Handler {
28
  case 'multiselect':
29
  case 'multicheckbox':
30
 
31
- if (isset($data[$key]) && is_array($field['options'])) {
32
 
33
- if ($values = (array) explode(',', str_replace(' ', '', ($data[$key])))) {
 
34
 
35
  $names = array();
36
 
@@ -49,7 +50,7 @@ class WOOCCM_Fields_Handler {
49
  }
50
  }
51
  }
52
-
53
  return $data;
54
  }
55
 
28
  case 'multiselect':
29
  case 'multicheckbox':
30
 
31
+ if (isset($_POST[$key]) && is_array($field['options'])) {
32
 
33
+ // use $_POST because $data is converted to string only in multiselect
34
+ if ($values = (array) $_POST[$key]) {
35
 
36
  $names = array();
37
 
50
  }
51
  }
52
  }
53
+
54
  return $data;
55
  }
56
 
readme.txt CHANGED
@@ -4,7 +4,7 @@ Donate link: https://quadlayers.com/
4
  Tags: woocommerce, woocommerce checkout, field manager, checkout editor, checkout field, shipping field, billing field, order field, additional field
5
  Requires at least: 3.0
6
  Tested up to: 5.2.4
7
- Stable tag: 4.6.4
8
  License: GPLv2 or later
9
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
10
 
@@ -137,6 +137,16 @@ Example:
137
 
138
  == Changelog ==
139
 
 
 
 
 
 
 
 
 
 
 
140
  = 4.6.4 =
141
  * Fix: upload files in additional fields
142
 
4
  Tags: woocommerce, woocommerce checkout, field manager, checkout editor, checkout field, shipping field, billing field, order field, additional field
5
  Requires at least: 3.0
6
  Tested up to: 5.2.4
7
+ Stable tag: 4.6.5
8
  License: GPLv2 or later
9
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
10
 
137
 
138
  == Changelog ==
139
 
140
+ = 4.6.5 =
141
+ * Fix: premium compatibility
142
+ * Fix: duplicated names after reorder
143
+ * Fix: order fields by id after reorder
144
+ * Fix: missing order on modal change
145
+ * Fix: saved names in the multicheckbox
146
+ * Fix: conditional parent multicheckbox
147
+ * Improvement: colorpicker behaviour
148
+ * Improvement: select for checkbox status in admin modal
149
+
150
  = 4.6.4 =
151
  * Fix: upload files in additional fields
152
 
woocommerce-checkout-manager.php CHANGED
@@ -3,7 +3,7 @@
3
  /**
4
  * Plugin Name: WooCommerce Checkout Manager
5
  * Description: Manages WooCommerce Checkout, the advanced way.
6
- * Version: 4.6.4
7
  * Author: QuadLayers
8
  * Author URI: https://www.quadlayers.com
9
  * Copyright: 2019 QuadLayers (https://www.quadlayers.com)
@@ -17,7 +17,7 @@ if (!defined('WOOCCM_PLUGIN_NAME')) {
17
  define('WOOCCM_PLUGIN_NAME', 'WooCommerce Checkout Manager');
18
  }
19
  if (!defined('WOOCCM_PLUGIN_VERSION')) {
20
- define('WOOCCM_PLUGIN_VERSION', '4.6.4');
21
  }
22
  if (!defined('WOOCCM_PLUGIN_FILE')) {
23
  define('WOOCCM_PLUGIN_FILE', __FILE__);
3
  /**
4
  * Plugin Name: WooCommerce Checkout Manager
5
  * Description: Manages WooCommerce Checkout, the advanced way.
6
+ * Version: 4.6.5
7
  * Author: QuadLayers
8
  * Author URI: https://www.quadlayers.com
9
  * Copyright: 2019 QuadLayers (https://www.quadlayers.com)
17
  define('WOOCCM_PLUGIN_NAME', 'WooCommerce Checkout Manager');
18
  }
19
  if (!defined('WOOCCM_PLUGIN_VERSION')) {
20
+ define('WOOCCM_PLUGIN_VERSION', '4.6.5');
21
  }
22
  if (!defined('WOOCCM_PLUGIN_FILE')) {
23
  define('WOOCCM_PLUGIN_FILE', __FILE__);