Catch IDs - Version 2.4

Version Description

(Released: September 15, 2021) = * Bug Fixed: Security issue on ajax calls

Download this release

Release Info

Developer catchthemes
Plugin Icon 128x128 Catch IDs
Version 2.4
Comparing to
See all releases

Code changes from version 2.3 to 2.4

catch-ids.php CHANGED
@@ -15,7 +15,7 @@
15
  * Plugin Name: Catch IDs
16
  * Plugin URI: https://catchplugins.com/plugins/catch-ids/
17
  * Description: Catch IDs is a simple and light weight plugin to show the Post ID, Page ID, Media ID, Links ID, Category ID, Tag ID and User ID in the Admin Section Table. This plugin was initially develop to support our themes features slider. Then we thought that this will be helpful to all the WordPress Admin Users. Just activate and catch IDs in your page, post, category, tag and media pages.
18
- * Version: 2.3
19
  * Author: Catch Plugins
20
  * Author URI: catchplugins.com
21
  * License: GPL-3.0+
@@ -53,7 +53,7 @@ if ( ! defined( 'ABSPATH' ) ) {
53
 
54
 
55
  // Define Version
56
- define( 'CATCH_IDS_VERSION', '2.3' );
57
 
58
  // The URL of the directory that contains the plugin
59
  if ( ! defined( 'CATCH_IDS_URL' ) ) {
@@ -346,20 +346,26 @@ add_action( 'admin_enqueue_scripts', 'catchids_enqueue_scripts' );
346
  add_action( 'wp_ajax_catchids_switch', 'catchids_switch' );
347
  if ( ! function_exists( 'catchids_switch' ) ) :
348
  function catchids_switch() {
349
- $value = ( 'true' == $_POST['value'] ) ? 1 : 0;
 
 
 
 
 
 
350
 
351
- $option_name = $_POST['option_name'];
352
 
353
- $option_value = catchids_get_options( 'catchids_options' );
354
 
355
- $option_value[ $option_name ] = $value;
356
 
357
- if ( update_option( 'catchids_options', $option_value ) ) {
358
- echo $value;
359
- } else {
360
- esc_html_e( 'Connection Error. Please try again.', 'catch-ids' );
 
361
  }
362
-
363
  wp_die(); // this is required to terminate immediately and return a proper response
364
  }
365
  endif; // catchids_switch
@@ -367,20 +373,26 @@ endif; // catchids_switch
367
  add_action( 'wp_ajax_ctp_switch', 'ctp_switch' );
368
  if ( ! function_exists( 'ctp_switch' ) ) :
369
  function ctp_switch() {
370
- $value = ( 'true' == $_POST['value'] ) ? 1 : 0;
 
 
 
 
 
 
371
 
372
- $option_name = $_POST['option_name'];
373
 
374
- $option_value = catchids_get_options( 'catchids_options' );
375
 
376
- $option_value[ $option_name ] = $value;
377
 
378
- if ( update_option( 'catchids_options', $option_value ) ) {
379
- echo $value;
380
- } else {
381
- esc_html_e( 'Connection Error. Please try again.', 'catch-ids' );
 
382
  }
383
-
384
  wp_die(); // this is required to terminate immediately and return a proper response
385
  }
386
  endif; // catchids_switch
15
  * Plugin Name: Catch IDs
16
  * Plugin URI: https://catchplugins.com/plugins/catch-ids/
17
  * Description: Catch IDs is a simple and light weight plugin to show the Post ID, Page ID, Media ID, Links ID, Category ID, Tag ID and User ID in the Admin Section Table. This plugin was initially develop to support our themes features slider. Then we thought that this will be helpful to all the WordPress Admin Users. Just activate and catch IDs in your page, post, category, tag and media pages.
18
+ * Version: 2.4
19
  * Author: Catch Plugins
20
  * Author URI: catchplugins.com
21
  * License: GPL-3.0+
53
 
54
 
55
  // Define Version
56
+ define( 'CATCH_IDS_VERSION', '2.4' );
57
 
58
  // The URL of the directory that contains the plugin
59
  if ( ! defined( 'CATCH_IDS_URL' ) ) {
346
  add_action( 'wp_ajax_catchids_switch', 'catchids_switch' );
347
  if ( ! function_exists( 'catchids_switch' ) ) :
348
  function catchids_switch() {
349
+ if ( ! wp_verify_nonce( $_POST['security'], 'catch_ids_nonce' ) ) {
350
+ wp_die( esc_html__( 'Unauthorized access!', 'catch-ids' ) );
351
+ } else {
352
+ if ( ! current_user_can( 'manage_options' ) ) {
353
+ wp_die( esc_html__( 'Permission denied!', 'catch-ids' ) );
354
+ }
355
+ $value = ( 'true' == $_POST['value'] ) ? 1 : 0;
356
 
357
+ $option_name = $_POST['option_name'];
358
 
359
+ $option_value = catchids_get_options( 'catchids_options' );
360
 
361
+ $option_value[ $option_name ] = $value;
362
 
363
+ if ( update_option( 'catchids_options', $option_value ) ) {
364
+ echo $value;
365
+ } else {
366
+ esc_html_e( 'Connection Error. Please try again.', 'catch-ids' );
367
+ }
368
  }
 
369
  wp_die(); // this is required to terminate immediately and return a proper response
370
  }
371
  endif; // catchids_switch
373
  add_action( 'wp_ajax_ctp_switch', 'ctp_switch' );
374
  if ( ! function_exists( 'ctp_switch' ) ) :
375
  function ctp_switch() {
376
+ if ( ! wp_verify_nonce( $_POST['security'], 'catch_ids_tabs_nonce' ) ) {
377
+ wp_die( esc_html__( 'Unauthorized access!', 'catch-ids' ) );
378
+ } else {
379
+ if ( ! current_user_can( 'manage_options' ) ) {
380
+ wp_die( esc_html__( 'Permission denied!', 'catch-ids' ) );
381
+ }
382
+ $value = ( 'true' == $_POST['value'] ) ? 1 : 0;
383
 
384
+ $option_name = $_POST['option_name'];
385
 
386
+ $option_value = catchids_get_options( 'catchids_options' );
387
 
388
+ $option_value[ $option_name ] = $value;
389
 
390
+ if ( update_option( 'catchids_options', $option_value ) ) {
391
+ echo $value;
392
+ } else {
393
+ esc_html_e( 'Connection Error. Please try again.', 'catch-ids' );
394
+ }
395
  }
 
396
  wp_die(); // this is required to terminate immediately and return a proper response
397
  }
398
  endif; // catchids_switch
js/catch-ids.js CHANGED
@@ -1,63 +1,66 @@
1
- (function( $ ) {
2
  'use strict';
3
 
4
- $(function() {
5
-
6
  /* For Input Switch */
7
- $( '.catchids-input-switch' ).on( 'click', function() {
8
- var loader = $( this ).parent().next();
9
-
10
  loader.show();
11
-
12
- var main_control = $( this );
 
13
  var data = {
14
- 'action' : 'catchids_switch',
15
- 'value' : this.checked,
16
- 'option_name' : main_control.attr( 'rel' )
 
17
  };
18
 
19
- $.post( ajaxurl, data, function( response ) {
20
- response = $.trim( response );
21
 
22
- if ( '1' == response ) {
23
- main_control.parent().parent().addClass( 'active' );
24
- main_control.parent().parent().removeClass( 'inactive' );
25
- } else if( '0' == response ) {
26
- main_control.parent().parent().addClass( 'inactive' );
27
- main_control.parent().parent().removeClass( 'active' );
28
  } else {
29
- alert( response );
30
  }
31
-
32
  loader.hide();
33
  });
34
  });
35
  /* For Input Switch End */
36
 
37
  /* CPT switch */
38
- $( '.ctp-switch' ).on( 'click', function() {
39
- var loader = $( this ).parent().next();
40
-
41
  loader.show();
42
-
43
- var main_control = $( this );
 
44
  var data = {
45
- 'action' : 'ctp_switch',
46
- 'value' : this.checked,
47
- 'option_name' : main_control.attr( 'rel' )
 
48
  };
49
 
50
- $.post( ajaxurl, data, function( response ) {
51
- response = $.trim( response );
52
 
53
- if ( '1' == response ) {
54
- main_control.parent().parent().addClass( 'active' );
55
- main_control.parent().parent().removeClass( 'inactive' );
56
- } else if( '0' == response ) {
57
- main_control.parent().parent().addClass( 'inactive' );
58
- main_control.parent().parent().removeClass( 'active' );
59
  } else {
60
- alert( response );
61
  }
62
  loader.hide();
63
  });
@@ -65,29 +68,31 @@
65
  /* CPT switch End */
66
  });
67
 
68
- $(function() {
 
 
 
 
 
69
 
70
- // Tabs
71
- $('.catchp_widget_settings .nav-tab-wrapper a').on('click', function(e){
72
- e.preventDefault();
73
 
74
- if( !$(this).hasClass('ui-state-active') ){
75
- $('.nav-tab').removeClass('nav-tab-active');
76
- $('.wpcatchtab').removeClass('active').fadeOut(0);
77
 
78
- $(this).addClass('nav-tab-active');
79
 
80
- var anchorAttr = $(this).attr('href');
81
-
82
- $(anchorAttr).addClass('active').fadeOut(0).fadeIn(500);
83
- }
84
-
85
- });
86
- });
87
-
88
- // jQuery Match Height init for sidebar spots
89
- $(document).ready(function() {
90
- $('.catchp-sidebar-spot .sidebar-spot-inner, .col-2 .catchp-lists li, .col-3 .catchp-lists li').matchHeight();
91
- });
92
 
93
- })( jQuery );
 
 
 
 
 
 
1
+ (function ($) {
2
  'use strict';
3
 
4
+ $(function () {
 
5
  /* For Input Switch */
6
+ $('.catchids-input-switch').on('click', function () {
7
+ var loader = $(this).parent().next();
8
+
9
  loader.show();
10
+
11
+ var main_control = $(this);
12
+ var catchids_nonce = main_control.prev('input').val();
13
  var data = {
14
+ action: 'catchids_switch',
15
+ value: this.checked,
16
+ security: catchids_nonce,
17
+ option_name: main_control.attr('rel'),
18
  };
19
 
20
+ $.post(ajaxurl, data, function (response) {
21
+ response = $.trim(response);
22
 
23
+ if ('1' == response) {
24
+ main_control.parent().parent().addClass('active');
25
+ main_control.parent().parent().removeClass('inactive');
26
+ } else if ('0' == response) {
27
+ main_control.parent().parent().addClass('inactive');
28
+ main_control.parent().parent().removeClass('active');
29
  } else {
30
+ alert(response);
31
  }
32
+
33
  loader.hide();
34
  });
35
  });
36
  /* For Input Switch End */
37
 
38
  /* CPT switch */
39
+ $('.ctp-switch').on('click', function () {
40
+ var loader = $(this).parent().next();
41
+
42
  loader.show();
43
+
44
+ var main_control = $(this);
45
+ var catchids_tabs_nonce = main_control.prev('input').val();
46
  var data = {
47
+ action: 'ctp_switch',
48
+ value: this.checked,
49
+ security: catchids_tabs_nonce,
50
+ option_name: main_control.attr('rel'),
51
  };
52
 
53
+ $.post(ajaxurl, data, function (response) {
54
+ response = $.trim(response);
55
 
56
+ if ('1' == response) {
57
+ main_control.parent().parent().addClass('active');
58
+ main_control.parent().parent().removeClass('inactive');
59
+ } else if ('0' == response) {
60
+ main_control.parent().parent().addClass('inactive');
61
+ main_control.parent().parent().removeClass('active');
62
  } else {
63
+ alert(response);
64
  }
65
  loader.hide();
66
  });
68
  /* CPT switch End */
69
  });
70
 
71
+ $(function () {
72
+ // Tabs
73
+ $('.catchp_widget_settings .nav-tab-wrapper a').on(
74
+ 'click',
75
+ function (e) {
76
+ e.preventDefault();
77
 
78
+ if (!$(this).hasClass('ui-state-active')) {
79
+ $('.nav-tab').removeClass('nav-tab-active');
80
+ $('.wpcatchtab').removeClass('active').fadeOut(0);
81
 
82
+ $(this).addClass('nav-tab-active');
 
 
83
 
84
+ var anchorAttr = $(this).attr('href');
85
 
86
+ $(anchorAttr).addClass('active').fadeOut(0).fadeIn(500);
87
+ }
88
+ }
89
+ );
90
+ });
 
 
 
 
 
 
 
91
 
92
+ // jQuery Match Height init for sidebar spots
93
+ $(document).ready(function () {
94
+ $(
95
+ '.catchp-sidebar-spot .sidebar-spot-inner, .col-2 .catchp-lists li, .col-3 .catchp-lists li'
96
+ ).matchHeight();
97
+ });
98
+ })(jQuery);
languages/catch-ids.pot CHANGED
@@ -5,7 +5,7 @@ msgid ""
5
  msgstr ""
6
  "Project-Id-Version: Catch Ids\n"
7
  "Report-Msgid-Bugs-To: https://wordpress.org/tags/catch-ids\n"
8
- "POT-Creation-Date: 2021-07-22 23:50-0700\n"
9
  "PO-Revision-Date: 2016-12-07 22:52-0500\n"
10
  "Last-Translator: Pratik Shrestha <pratik@catchplugins.com>\n"
11
  "Language-Team: Catch Plugins <info@catchplugins.com>\n"
@@ -36,6 +36,14 @@ msgstr ""
36
  msgid "Settings"
37
  msgstr ""
38
 
 
 
 
 
 
 
 
 
39
  #: ../includes/CatchThemesThemePlugin.php:154
40
  msgid "Themes by CatchThemes"
41
  msgstr ""
5
  msgstr ""
6
  "Project-Id-Version: Catch Ids\n"
7
  "Report-Msgid-Bugs-To: https://wordpress.org/tags/catch-ids\n"
8
+ "POT-Creation-Date: 2021-09-15 22:31-0700\n"
9
  "PO-Revision-Date: 2016-12-07 22:52-0500\n"
10
  "Last-Translator: Pratik Shrestha <pratik@catchplugins.com>\n"
11
  "Language-Team: Catch Plugins <info@catchplugins.com>\n"
36
  msgid "Settings"
37
  msgstr ""
38
 
39
+ #: ../catch-ids.php:350 ../catch-ids.php:377
40
+ msgid "Unauthorized access!"
41
+ msgstr ""
42
+
43
+ #: ../catch-ids.php:353 ../catch-ids.php:380
44
+ msgid "Permission denied!"
45
+ msgstr ""
46
+
47
  #: ../includes/CatchThemesThemePlugin.php:154
48
  msgid "Themes by CatchThemes"
49
  msgstr ""
partials/catch-ids-display.php CHANGED
@@ -47,6 +47,7 @@
47
  <td>
48
  <div class="module-header <?php echo $options['theme_plugin_tabs'] ? 'active' : 'inactive'; ?>">
49
  <div class="switch">
 
50
  <input type="checkbox" id="catchids_options[theme_plugin_tabs]" class="ctp-switch" rel="theme_plugin_tabs" <?php checked( true, $options['theme_plugin_tabs'] ); ?> >
51
  <label for="catchids_options[theme_plugin_tabs]"></label>
52
  </div>
@@ -55,7 +56,7 @@
55
  </td>
56
  </tr>
57
  </table>
58
-
59
  </div>
60
  </div><!-- .content-wrapper -->
61
 
47
  <td>
48
  <div class="module-header <?php echo $options['theme_plugin_tabs'] ? 'active' : 'inactive'; ?>">
49
  <div class="switch">
50
+ <input type="hidden" name="catch_ids_tabs_nonce" id="catch_ids_tabs_nonce" value="<?php echo esc_attr( wp_create_nonce( 'catch_ids_tabs_nonce' ) ); ?>" />
51
  <input type="checkbox" id="catchids_options[theme_plugin_tabs]" class="ctp-switch" rel="theme_plugin_tabs" <?php checked( true, $options['theme_plugin_tabs'] ); ?> >
52
  <label for="catchids_options[theme_plugin_tabs]"></label>
53
  </div>
56
  </td>
57
  </tr>
58
  </table>
59
+
60
  </div>
61
  </div><!-- .content-wrapper -->
62
 
partials/display-dashboard.php CHANGED
@@ -14,80 +14,81 @@
14
  ?>
15
 
16
  <div id="catch-ids" class="catchids-main">
17
- <div class="content-wrapper">
18
- <div class="header">
19
- <h2><?php esc_html_e( 'Settings', 'catch-infinite-scroll-pro' ); ?></h2>
20
- </div> <!-- .Header -->
21
- <div class="content">
22
- <div class="module-container catch-ids-options">
23
- <?php
24
- $options = catchids_get_options();
25
- $post_types = catchids_get_all_post_types();
26
- foreach ( $post_types as $key => $value ) :
27
- ?>
28
- <!-- Custom Post Types -->
29
- <div id="module-<?php echo $key; ?>" class="catch-modules">
30
- <div class="module-header <?php echo $options[$key] ? 'active' : 'inactive'; ?>">
31
- <h3 class="module-title"><?php esc_html_e( $value, 'catch-ids' ); ?></h3>
32
- <div class="switch">
33
- <input type="checkbox" id="catchids_options[<?php echo $key; ?>]" class="catchids-input-switch" rel="<?php echo $key; ?>" <?php checked( true, $options[$key] ); ?> >
34
- <label for="catchids_options[<?php echo $key; ?>]"></label>
35
- </div>
36
- <div class="loader"></div>
37
- </div><!-- .module-header -->
38
- </div><!-- .catch-modules -->
39
- <?php endforeach; ?>
 
40
 
41
- <!-- Media -->
42
- <div id="module-<?php echo 'media'; ?>" class="catch-modules">
43
- <div class="module-header <?php echo $options['media'] ? 'active' : 'inactive'; ?>">
44
- <h3 class="module-title"><?php esc_html_e( 'Media', 'catch-ids' ); ?></h3>
45
- <div class="switch">
46
- <input type="checkbox" id="catchids_options[media]" class="catchids-input-switch" rel="media" <?php checked( true, $options['media'] ); ?> >
47
- <label for="catchids_options[media]"></label>
48
- </div>
49
- <div class="loader"></div>
50
- </div><!-- .module-header -->
51
- </div><!-- .catch-modules -->
52
 
53
- <!-- Categories -->
54
- <div id="module-<?php echo 'category'; ?>" class="catch-modules">
55
- <div class="module-header <?php echo $options['category'] ? 'active' : 'inactive'; ?>">
56
- <h3 class="module-title"><?php esc_html_e( 'Categories', 'catch-ids' ); ?></h3>
57
- <div class="switch">
58
- <input type="checkbox" id="catchids_options[category]" class="catchids-input-switch" rel="category" <?php checked( true, $options['category'] ); ?> >
59
- <label for="catchids_options[category]"></label>
60
- </div>
61
- <div class="loader"></div>
62
- </div><!-- .module-header -->
63
- </div><!-- .catch-modules -->
64
 
65
- <!-- Users -->
66
- <div id="module-<?php echo 'user'; ?>" class="catch-modules">
67
- <div class="module-header <?php echo $options['user'] ? 'active' : 'inactive'; ?>">
68
- <h3 class="module-title"><?php esc_html_e( 'Users', 'catch-ids' ); ?></h3>
69
- <div class="switch">
70
- <input type="checkbox" id="catchids_options[user]" class="catchids-input-switch" rel="user" <?php checked( true, $options['user'] ); ?> >
71
- <label for="catchids_options[user]"></label>
72
- </div>
73
- <div class="loader"></div>
74
- </div><!-- .module-header -->
75
- </div><!-- .catch-modules -->
76
 
77
- <!-- Comments -->
78
- <div id="module-<?php echo 'comment'; ?>" class="catch-modules">
79
- <div class="module-header <?php echo $options['comment'] ? 'active' : 'inactive'; ?>">
80
- <h3 class="module-title"><?php esc_html_e( 'Comments', 'catch-ids' ); ?></h3>
81
- <div class="switch">
82
- <input type="checkbox" id="catchids_options[comment]" class="catchids-input-switch" rel="comment" <?php checked( true, $options['comment'] ); ?> >
83
- <label for="catchids_options[comment]"></label>
84
- </div>
85
- <div class="loader"></div>
86
- </div><!-- .module-header -->
87
- </div><!-- .catch-modules -->
88
 
89
- </div><!-- .module-container -->
90
-
91
- </div><!-- .content -->
92
- </div> <!-- .content-wrapper -->
93
  </div> <!-- Main Content-->
14
  ?>
15
 
16
  <div id="catch-ids" class="catchids-main">
17
+ <div class="content-wrapper">
18
+ <div class="header">
19
+ <h2><?php esc_html_e( 'Settings', 'catch-infinite-scroll-pro' ); ?></h2>
20
+ </div> <!-- .Header -->
21
+ <div class="content">
22
+ <div class="module-container catch-ids-options">
23
+ <?php
24
+ $options = catchids_get_options();
25
+ $post_types = catchids_get_all_post_types();
26
+ foreach ( $post_types as $key => $value ) :
27
+ ?>
28
+ <!-- Custom Post Types -->
29
+ <div id="module-<?php echo $key; ?>" class="catch-modules">
30
+ <div class="module-header <?php echo $options[ $key ] ? 'active' : 'inactive'; ?>">
31
+ <h3 class="module-title"><?php esc_html_e( $value, 'catch-ids' ); ?></h3>
32
+ <div class="switch">
33
+ <input type="hidden" name="catch_ids_nonce" id="catch_ids_nonce" value="<?php echo esc_attr( wp_create_nonce( 'catch_ids_nonce' ) ); ?>" />
34
+ <input type="checkbox" id="catchids_options[<?php echo $key; ?>]" class="catchids-input-switch" rel="<?php echo $key; ?>" <?php checked( true, $options[ $key ] ); ?> >
35
+ <label for="catchids_options[<?php echo $key; ?>]"></label>
36
+ </div>
37
+ <div class="loader"></div>
38
+ </div><!-- .module-header -->
39
+ </div><!-- .catch-modules -->
40
+ <?php endforeach; ?>
41
 
42
+ <!-- Media -->
43
+ <div id="module-<?php echo 'media'; ?>" class="catch-modules">
44
+ <div class="module-header <?php echo $options['media'] ? 'active' : 'inactive'; ?>">
45
+ <h3 class="module-title"><?php esc_html_e( 'Media', 'catch-ids' ); ?></h3>
46
+ <div class="switch">
47
+ <input type="checkbox" id="catchids_options[media]" class="catchids-input-switch" rel="media" <?php checked( true, $options['media'] ); ?> >
48
+ <label for="catchids_options[media]"></label>
49
+ </div>
50
+ <div class="loader"></div>
51
+ </div><!-- .module-header -->
52
+ </div><!-- .catch-modules -->
53
 
54
+ <!-- Categories -->
55
+ <div id="module-<?php echo 'category'; ?>" class="catch-modules">
56
+ <div class="module-header <?php echo $options['category'] ? 'active' : 'inactive'; ?>">
57
+ <h3 class="module-title"><?php esc_html_e( 'Categories', 'catch-ids' ); ?></h3>
58
+ <div class="switch">
59
+ <input type="checkbox" id="catchids_options[category]" class="catchids-input-switch" rel="category" <?php checked( true, $options['category'] ); ?> >
60
+ <label for="catchids_options[category]"></label>
61
+ </div>
62
+ <div class="loader"></div>
63
+ </div><!-- .module-header -->
64
+ </div><!-- .catch-modules -->
65
 
66
+ <!-- Users -->
67
+ <div id="module-<?php echo 'user'; ?>" class="catch-modules">
68
+ <div class="module-header <?php echo $options['user'] ? 'active' : 'inactive'; ?>">
69
+ <h3 class="module-title"><?php esc_html_e( 'Users', 'catch-ids' ); ?></h3>
70
+ <div class="switch">
71
+ <input type="checkbox" id="catchids_options[user]" class="catchids-input-switch" rel="user" <?php checked( true, $options['user'] ); ?> >
72
+ <label for="catchids_options[user]"></label>
73
+ </div>
74
+ <div class="loader"></div>
75
+ </div><!-- .module-header -->
76
+ </div><!-- .catch-modules -->
77
 
78
+ <!-- Comments -->
79
+ <div id="module-<?php echo 'comment'; ?>" class="catch-modules">
80
+ <div class="module-header <?php echo $options['comment'] ? 'active' : 'inactive'; ?>">
81
+ <h3 class="module-title"><?php esc_html_e( 'Comments', 'catch-ids' ); ?></h3>
82
+ <div class="switch">
83
+ <input type="checkbox" id="catchids_options[comment]" class="catchids-input-switch" rel="comment" <?php checked( true, $options['comment'] ); ?> >
84
+ <label for="catchids_options[comment]"></label>
85
+ </div>
86
+ <div class="loader"></div>
87
+ </div><!-- .module-header -->
88
+ </div><!-- .catch-modules -->
89
 
90
+ </div><!-- .module-container -->
91
+
92
+ </div><!-- .content -->
93
+ </div> <!-- .content-wrapper -->
94
  </div> <!-- Main Content-->
readme.txt CHANGED
@@ -51,6 +51,9 @@ Not so easy way (via FTP) :
51
 
52
  == Changelog ==
53
 
 
 
 
54
  = 2.3 (Released: July 23, 2021) =
55
  * Compatibility check up to version 5.8
56
 
51
 
52
  == Changelog ==
53
 
54
+ = 2.4 (Released: September 15, 2021) =
55
+ * Bug Fixed: Security issue on ajax calls
56
+
57
  = 2.3 (Released: July 23, 2021) =
58
  * Compatibility check up to version 5.8
59