To Top - Version 2.3

Version Description

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

Download this release

Release Info

Developer catchthemes
Plugin Icon 128x128 To Top
Version 2.3
Comparing to
See all releases

Code changes from version 2.2.2 to 2.3

README.txt CHANGED
@@ -57,6 +57,9 @@ You'll then see To Top dashboard from which you can enable or disable the button
57
 
58
  == Changelog ==
59
 
 
 
 
60
  = 2.2.2 (Released: August 05, 2021) =
61
  * Added: aria-hidden attribute (Requested by flberger)
62
  * Added: async attribute to script tag (Requested by llubder)
57
 
58
  == Changelog ==
59
 
60
+ = 2.3 (Released: September 18, 2021) =
61
+ * Bug Fixed: Security issue on ajax calls
62
+
63
  = 2.2.2 (Released: August 05, 2021) =
64
  * Added: aria-hidden attribute (Requested by flberger)
65
  * Added: async attribute to script tag (Requested by llubder)
admin/inc/ctp-tabs-removal.php CHANGED
@@ -1,9 +1,9 @@
1
- <?php
2
  /**
3
  * ctp_register_settings
4
  * Header Enhacement Pro Register Settings
5
  */
6
- if( ! function_exists( 'ctp_register_settings' ) ) {
7
  function ctp_register_settings() {
8
  // register_setting( $option_group, $option_name, $sanitize_callback )
9
  register_setting(
@@ -15,21 +15,21 @@ if( ! function_exists( 'ctp_register_settings' ) ) {
15
  }
16
  add_action( 'admin_init', 'ctp_register_settings' );
17
 
18
- if( ! function_exists( 'ctp_get_options' ) ) {
19
  /**
20
  * Returns the options array for ctp_get options
21
  *
22
  * @since 1.9
23
  */
24
- function ctp_get_options(){
25
  $defaults = ctp_default_options();
26
  $options = get_option( 'ctp_options', $defaults );
27
 
28
- return wp_parse_args( $options, $defaults ) ;
29
  }
30
  }
31
 
32
- if( ! function_exists( 'ctp_default_options' ) ) {
33
  /**
34
  * Return array of default options
35
  *
@@ -40,14 +40,13 @@ if( ! function_exists( 'ctp_default_options' ) ) {
40
  $default_options['theme_plugin_tabs'] = 1;
41
  if ( null == $option ) {
42
  return apply_filters( 'ctp_options', $default_options );
43
- }
44
- else {
45
  return $default_options[ $option ];
46
  }
47
  }
48
  }
49
 
50
- if( ! function_exists( 'ctp_switch' ) ){
51
  /**
52
  * Return $string
53
  *
@@ -55,21 +54,28 @@ if( ! function_exists( 'ctp_switch' ) ){
55
  * @return $string 1 or 2.
56
  */
57
  function ctp_switch() {
58
- $value = ( 'true' == $_POST['value'] ) ? 1 : 0;
59
-
60
- $option_name = $_POST['option_name'];
 
 
 
 
 
61
 
62
- $option_value = ctp_get_options();
63
 
64
- $option_value[$option_name] = $value;
65
 
66
- if( update_option( 'ctp_options', $option_value ) ) {
67
- echo $value;
68
- } else {
69
- esc_html_e( 'Connection Error. Please try again.', 'to-top' );
70
- }
71
 
 
 
 
 
 
 
72
  wp_die(); // this is required to terminate immediately and return a proper response
73
  }
74
  }
75
- add_action( 'wp_ajax_ctp_switch', 'ctp_switch' );
1
+ <?php
2
  /**
3
  * ctp_register_settings
4
  * Header Enhacement Pro Register Settings
5
  */
6
+ if ( ! function_exists( 'ctp_register_settings' ) ) {
7
  function ctp_register_settings() {
8
  // register_setting( $option_group, $option_name, $sanitize_callback )
9
  register_setting(
15
  }
16
  add_action( 'admin_init', 'ctp_register_settings' );
17
 
18
+ if ( ! function_exists( 'ctp_get_options' ) ) {
19
  /**
20
  * Returns the options array for ctp_get options
21
  *
22
  * @since 1.9
23
  */
24
+ function ctp_get_options() {
25
  $defaults = ctp_default_options();
26
  $options = get_option( 'ctp_options', $defaults );
27
 
28
+ return wp_parse_args( $options, $defaults );
29
  }
30
  }
31
 
32
+ if ( ! function_exists( 'ctp_default_options' ) ) {
33
  /**
34
  * Return array of default options
35
  *
40
  $default_options['theme_plugin_tabs'] = 1;
41
  if ( null == $option ) {
42
  return apply_filters( 'ctp_options', $default_options );
43
+ } else {
 
44
  return $default_options[ $option ];
45
  }
46
  }
47
  }
48
 
49
+ if ( ! function_exists( 'ctp_switch' ) ) {
50
  /**
51
  * Return $string
52
  *
54
  * @return $string 1 or 2.
55
  */
56
  function ctp_switch() {
57
+ // Check nonce before doing and changes.
58
+ if ( ! check_ajax_referer( 'ctp_tabs_nonce', 'security', false ) ) {
59
+ wp_die( esc_html__( 'Invalid Nonce', 'to-top' ) );
60
+ } else {
61
+ if ( ! current_user_can( 'manage_options' ) ) {
62
+ wp_die( esc_html__( 'Permission denied!', 'to-top' ) );
63
+ }
64
+ $value = ( 'true' == $_POST['value'] ) ? 1 : 0;
65
 
66
+ $option_name = $_POST['option_name'];
67
 
68
+ $option_value = ctp_get_options();
69
 
70
+ $option_value[ $option_name ] = $value;
 
 
 
 
71
 
72
+ if ( update_option( 'ctp_options', $option_value ) ) {
73
+ echo $value;
74
+ } else {
75
+ esc_html_e( 'Connection Error. Please try again.', 'to-top' );
76
+ }
77
+ }
78
  wp_die(); // this is required to terminate immediately and return a proper response
79
  }
80
  }
81
+ add_action( 'wp_ajax_ctp_switch', 'ctp_switch' );
admin/js/to-top-admin.js CHANGED
@@ -1,243 +1,252 @@
1
- (function( $ ) {
2
  'use strict';
3
 
4
  /**
5
  * Custom jQuery functions and trigger events
6
  */
7
- jQuery(document).ready(function($){
8
- $("#setting-error-settings_updated").hide();
9
 
10
  // Show Hide Toggle Box
11
- $(".option-content").hide();
12
 
13
- $(".open").show();
14
 
15
- $("h3.option-toggle").click(function(e){
16
  e.preventDefault();
17
- if( !$(this).hasClass('option-active') ){
18
  $(this).siblings('.option-content').stop(true, true).hide(400);
19
  $(this).siblings('.option-toggle').removeClass('option-active');
20
- $(this).toggleClass("option-active").next().stop(true, true).slideToggle(400);
 
 
 
 
21
  return false;
22
  }
23
  });
24
 
25
- setTimeout(function () {
26
- $(".fade").fadeOut("slow", function () {
27
- $(".fade").remove();
28
- });
 
29
 
30
- }, 2000);
31
 
32
- var custom_uploader;
33
-
34
- $( '.to_top_upload_image' ).click(function(e) {
35
- e.preventDefault();
36
 
37
- var title, this_selector, button_text, attachment;
38
 
39
- title = $(this).val();
40
 
41
- this_selector = $(this); //For later use
42
 
43
- button_text = $(this).attr("ref");
44
 
45
- //Extend the wp.media object
46
- custom_uploader = wp.media.frames.file_frame = wp.media({
47
- title: title,
48
- button: {
49
- text: button_text
50
- },
51
- multiple: true
52
- });
53
 
54
- //When a file is selected, grab the URL and set it as the text field's value
55
- custom_uploader.on( 'select', function() {
56
- attachment = custom_uploader.state().get( 'selection' ).first().toJSON();
57
- this_selector.prev().val( attachment.url );
58
- });
 
 
 
 
59
 
60
- //Open the uploader dialog
61
- custom_uploader.open();
62
- });
63
 
64
- //For Color picker in icon color
65
  var myOptions = {
66
- change: function(event, ui){
67
- $(".dashicon_to_top_admin").css({
68
- 'color' : ui.color.toString(),
69
  });
70
- },
71
  };
72
 
73
- $('.to_top_icon_color').wpColorPicker( myOptions );
74
 
75
  //For Color picker in icon background color
76
  var myOptions2 = {
77
- change: function(event, ui){
78
- $(".dashicon_to_top_admin").css({
79
- 'background-color' : ui.color.toString(),
80
  });
81
- },
82
  };
83
 
84
- $('.to_top_icon_bg_color').wpColorPicker( myOptions2 );
85
 
86
- $('#to_top_border_radius').change(function(){
87
- $(".dashicon_to_top_admin").css({
88
- '-webkit-border-radius' : $('#to_top_border_radius').val() + '%',
89
- '-moz-border-radius' : $('#to_top_border_radius').val() + '%',
90
- 'border-radius' : $('#to_top_border_radius').val() + '%',
91
- });
92
  });
93
 
94
- $('#to_top_icon_size').change(function(){
95
- $(".dashicon_to_top_admin").css({
96
- 'font-size' : $('#to_top_icon_size').val() + 'px',
97
- 'height' : $('#to_top_icon_size').val() + 'px',
98
- 'width' : $('#to_top_icon_size').val() + 'px',
99
- });
100
  });
101
 
102
- $(".dashicon_to_top_admin").css({
103
- '-webkit-border-radius' : $('#to_top_border_radius').val() + '%',
104
- '-moz-border-radius' : $('#to_top_border_radius').val() + '%',
105
- 'border-radius' : $('#to_top_border_radius').val() + '%',
106
- 'color' : $('.to_top_icon_color').val(),
107
- 'background-color' : $('.to_top_icon_bg_color').val(),
108
- 'font-size' : $('#to_top_icon_size').val() + 'px',
109
- 'height' : $('#to_top_icon_size').val() + 'px',
110
- 'width' : $('#to_top_icon_size').val() + 'px',
111
  });
112
 
113
- $( '#to_top_options_style' ).change(function(){
114
- var value;
115
- value = $(this).val();
116
- if ( 'image' == value ) {
117
- $( '.to_top_image_settings' ).show();
118
- $( '.to_top_icon_settings' ).hide();
119
- }
120
- else {
121
- $( '.to_top_icon_settings' ).show();
122
- $( '.to_top_image_settings' ).hide();
123
- }
124
- });
125
-
126
- var value;
127
- value = $( '#to_top_options_style' ).val();
128
- if ( 'image' == value ) {
129
- $( '.to_top_image_settings' ).show();
130
- $( '.to_top_icon_settings' ).hide();
131
- }
132
- else {
133
- $( '.to_top_icon_settings' ).show();
134
- $( '.to_top_image_settings' ).hide();
135
  }
136
  });
137
 
138
- $(function() {
139
-
140
- // Tabs
141
- $('.catchp_widget_settings .nav-tab-wrapper a').on('click', function(e){
142
- e.preventDefault();
143
-
144
- if( !$(this).hasClass('ui-state-active') ){
145
- $('.nav-tab').removeClass('nav-tab-active');
146
- $('.wpcatchtab').removeClass('active').fadeOut(0);
147
 
148
- $(this).addClass('nav-tab-active');
 
 
149
 
150
- var anchorAttr = $(this).attr('href');
151
 
152
- $(anchorAttr).addClass('active').fadeOut(0).fadeIn(500);
153
- }
154
 
155
- });
156
- });
157
-
158
- // jQuery Match Height init for sidebar spots
159
- $(document).ready(function() {
160
- $('.catchp-sidebar-spot .sidebar-spot-inner, .col-2 .catchp-lists li, .col-3 .catchp-lists li').matchHeight();
161
- });
162
-
163
- })( jQuery );
164
 
 
 
 
 
 
 
 
165
 
166
- jQuery(function($) {
167
- $('#image-settings').hide();
168
- $('#to_top_options_style').change(function(){
169
- if ($(this).val() == 'image')
170
- {
171
  $('#icon-settings').hide();
172
  $('#image-settings').show();
173
- } else {
174
- $('#icon-settings').show();
175
  $('#image-settings').hide();
176
- }
177
- });
178
  });
179
 
180
- jQuery(function($){
181
  /* CPT switch */
182
- $( '.ctp-switch' ).on( 'click', function() {
183
- var loader = $( this ).parent().next();
184
-
185
  loader.show();
186
-
187
- var main_control = $( this );
188
  var data = {
189
- 'action' : 'ctp_switch',
190
- 'value' : this.checked,
191
- 'option_name' : main_control.attr( 'rel' )
 
192
  };
193
 
194
- $.post( ajaxurl, data, function( response ) {
195
- response = $.trim( response );
196
 
197
- if ( '1' == response ) {
198
- main_control.parent().parent().addClass( 'active' );
199
- main_control.parent().parent().removeClass( 'inactive' );
200
- } else if( '0' == response ) {
201
- main_control.parent().parent().addClass( 'inactive' );
202
- main_control.parent().parent().removeClass( 'active' );
203
  } else {
204
- alert( response );
205
  }
206
  loader.hide();
207
  });
208
  });
209
  /* CPT switch End */
210
- })
211
-
212
-
213
- /**
214
- * Facebook Script
215
- */
216
- (function(d, s, id) {
217
- var js, fjs = d.getElementsByTagName(s)[0];
218
 
219
- if (d.getElementById(id)) return;
220
 
221
- js = d.createElement(s); js.id = id;
 
222
 
223
- js.src = "//connect.facebook.net/en_US/all.js#xfbml=1&appId=276203972392824";
 
224
 
225
- fjs.parentNode.insertBefore(js, fjs);
226
- }(document, 'script', 'facebook-jssdk'));
 
227
 
228
  /**
229
  * Twitter Script
230
  */
231
- !function(d,s,id){
232
- var js,fjs=d.getElementsByTagName(s)[0];
 
233
 
234
- if(!d.getElementById(id)){
235
- js=d.createElement(s);
236
 
237
- js.id=id;
238
 
239
- js.src="//platform.twitter.com/widgets.js";
240
 
241
- fjs.parentNode.insertBefore(js,fjs);
242
  }
243
- }(document,"script","twitter-wjs");
1
+ (function ($) {
2
  'use strict';
3
 
4
  /**
5
  * Custom jQuery functions and trigger events
6
  */
7
+ jQuery(document).ready(function ($) {
8
+ $('#setting-error-settings_updated').hide();
9
 
10
  // Show Hide Toggle Box
11
+ $('.option-content').hide();
12
 
13
+ $('.open').show();
14
 
15
+ $('h3.option-toggle').click(function (e) {
16
  e.preventDefault();
17
+ if (!$(this).hasClass('option-active')) {
18
  $(this).siblings('.option-content').stop(true, true).hide(400);
19
  $(this).siblings('.option-toggle').removeClass('option-active');
20
+ $(this)
21
+ .toggleClass('option-active')
22
+ .next()
23
+ .stop(true, true)
24
+ .slideToggle(400);
25
  return false;
26
  }
27
  });
28
 
29
+ setTimeout(function () {
30
+ $('.fade').fadeOut('slow', function () {
31
+ $('.fade').remove();
32
+ });
33
+ }, 2000);
34
 
35
+ var custom_uploader;
36
 
37
+ $('.to_top_upload_image').click(function (e) {
38
+ e.preventDefault();
 
 
39
 
40
+ var title, this_selector, button_text, attachment;
41
 
42
+ title = $(this).val();
43
 
44
+ this_selector = $(this); //For later use
45
 
46
+ button_text = $(this).attr('ref');
47
 
48
+ //Extend the wp.media object
49
+ custom_uploader = wp.media.frames.file_frame = wp.media({
50
+ title: title,
51
+ button: {
52
+ text: button_text,
53
+ },
54
+ multiple: true,
55
+ });
56
 
57
+ //When a file is selected, grab the URL and set it as the text field's value
58
+ custom_uploader.on('select', function () {
59
+ attachment = custom_uploader
60
+ .state()
61
+ .get('selection')
62
+ .first()
63
+ .toJSON();
64
+ this_selector.prev().val(attachment.url);
65
+ });
66
 
67
+ //Open the uploader dialog
68
+ custom_uploader.open();
69
+ });
70
 
71
+ //For Color picker in icon color
72
  var myOptions = {
73
+ change: function (event, ui) {
74
+ $('.dashicon_to_top_admin').css({
75
+ color: ui.color.toString(),
76
  });
77
+ },
78
  };
79
 
80
+ $('.to_top_icon_color').wpColorPicker(myOptions);
81
 
82
  //For Color picker in icon background color
83
  var myOptions2 = {
84
+ change: function (event, ui) {
85
+ $('.dashicon_to_top_admin').css({
86
+ 'background-color': ui.color.toString(),
87
  });
88
+ },
89
  };
90
 
91
+ $('.to_top_icon_bg_color').wpColorPicker(myOptions2);
92
 
93
+ $('#to_top_border_radius').change(function () {
94
+ $('.dashicon_to_top_admin').css({
95
+ '-webkit-border-radius': $('#to_top_border_radius').val() + '%',
96
+ '-moz-border-radius': $('#to_top_border_radius').val() + '%',
97
+ 'border-radius': $('#to_top_border_radius').val() + '%',
98
+ });
99
  });
100
 
101
+ $('#to_top_icon_size').change(function () {
102
+ $('.dashicon_to_top_admin').css({
103
+ 'font-size': $('#to_top_icon_size').val() + 'px',
104
+ height: $('#to_top_icon_size').val() + 'px',
105
+ width: $('#to_top_icon_size').val() + 'px',
106
+ });
107
  });
108
 
109
+ $('.dashicon_to_top_admin').css({
110
+ '-webkit-border-radius': $('#to_top_border_radius').val() + '%',
111
+ '-moz-border-radius': $('#to_top_border_radius').val() + '%',
112
+ 'border-radius': $('#to_top_border_radius').val() + '%',
113
+ color: $('.to_top_icon_color').val(),
114
+ 'background-color': $('.to_top_icon_bg_color').val(),
115
+ 'font-size': $('#to_top_icon_size').val() + 'px',
116
+ height: $('#to_top_icon_size').val() + 'px',
117
+ width: $('#to_top_icon_size').val() + 'px',
118
  });
119
 
120
+ $('#to_top_options_style').change(function () {
121
+ var value;
122
+ value = $(this).val();
123
+ if ('image' == value) {
124
+ $('.to_top_image_settings').show();
125
+ $('.to_top_icon_settings').hide();
126
+ } else {
127
+ $('.to_top_icon_settings').show();
128
+ $('.to_top_image_settings').hide();
129
+ }
130
+ });
131
+
132
+ var value;
133
+ value = $('#to_top_options_style').val();
134
+ if ('image' == value) {
135
+ $('.to_top_image_settings').show();
136
+ $('.to_top_icon_settings').hide();
137
+ } else {
138
+ $('.to_top_icon_settings').show();
139
+ $('.to_top_image_settings').hide();
 
 
140
  }
141
  });
142
 
143
+ $(function () {
144
+ // Tabs
145
+ $('.catchp_widget_settings .nav-tab-wrapper a').on(
146
+ 'click',
147
+ function (e) {
148
+ e.preventDefault();
 
 
 
149
 
150
+ if (!$(this).hasClass('ui-state-active')) {
151
+ $('.nav-tab').removeClass('nav-tab-active');
152
+ $('.wpcatchtab').removeClass('active').fadeOut(0);
153
 
154
+ $(this).addClass('nav-tab-active');
155
 
156
+ var anchorAttr = $(this).attr('href');
 
157
 
158
+ $(anchorAttr).addClass('active').fadeOut(0).fadeIn(500);
159
+ }
160
+ }
161
+ );
162
+ });
 
 
 
 
163
 
164
+ // jQuery Match Height init for sidebar spots
165
+ $(document).ready(function () {
166
+ $(
167
+ '.catchp-sidebar-spot .sidebar-spot-inner, .col-2 .catchp-lists li, .col-3 .catchp-lists li'
168
+ ).matchHeight();
169
+ });
170
+ })(jQuery);
171
 
172
+ jQuery(function ($) {
173
+ $('#image-settings').hide();
174
+ $('#to_top_options_style').change(function () {
175
+ if ($(this).val() == 'image') {
 
176
  $('#icon-settings').hide();
177
  $('#image-settings').show();
178
+ } else {
179
+ $('#icon-settings').show();
180
  $('#image-settings').hide();
181
+ }
182
+ });
183
  });
184
 
185
+ jQuery(function ($) {
186
  /* CPT switch */
187
+ $('.ctp-switch').on('click', function () {
188
+ var loader = $(this).parent().next();
189
+
190
  loader.show();
191
+
192
+ var main_control = $(this);
193
  var data = {
194
+ action: 'ctp_switch',
195
+ value: this.checked,
196
+ security: $('#ctp_tabs_nonce').val(),
197
+ option_name: main_control.attr('rel'),
198
  };
199
 
200
+ $.post(ajaxurl, data, function (response) {
201
+ response = $.trim(response);
202
 
203
+ if ('1' == response) {
204
+ main_control.parent().parent().addClass('active');
205
+ main_control.parent().parent().removeClass('inactive');
206
+ } else if ('0' == response) {
207
+ main_control.parent().parent().addClass('inactive');
208
+ main_control.parent().parent().removeClass('active');
209
  } else {
210
+ alert(response);
211
  }
212
  loader.hide();
213
  });
214
  });
215
  /* CPT switch End */
216
+ })(
217
+ /**
218
+ * Facebook Script
219
+ */
220
+ (function (d, s, id) {
221
+ var js,
222
+ fjs = d.getElementsByTagName(s)[0];
 
223
 
224
+ if (d.getElementById(id)) return;
225
 
226
+ js = d.createElement(s);
227
+ js.id = id;
228
 
229
+ js.src =
230
+ '//connect.facebook.net/en_US/all.js#xfbml=1&appId=276203972392824';
231
 
232
+ fjs.parentNode.insertBefore(js, fjs);
233
+ })(document, 'script', 'facebook-jssdk')
234
+ );
235
 
236
  /**
237
  * Twitter Script
238
  */
239
+ !(function (d, s, id) {
240
+ var js,
241
+ fjs = d.getElementsByTagName(s)[0];
242
 
243
+ if (!d.getElementById(id)) {
244
+ js = d.createElement(s);
245
 
246
+ js.id = id;
247
 
248
+ js.src = '//platform.twitter.com/widgets.js';
249
 
250
+ fjs.parentNode.insertBefore(js, fjs);
251
  }
252
+ })(document, 'script', 'twitter-wjs');
admin/partials/to-top-admin-display.php CHANGED
@@ -42,11 +42,12 @@
42
  <td>
43
  <?php echo esc_html__( 'Turn On Catch Themes & Catch Plugin tabs', 'to-top' ); ?>
44
  </td>
45
- <td><?php //echo '<pre>'; print_r($settings); echo '</pre>';
46
  $ctp_options = ctp_get_options()
47
  ?>
48
  <div class="module-header <?php echo $ctp_options['theme_plugin_tabs'] ? 'active' : 'inactive'; ?>">
49
  <div class="switch">
 
50
  <input type="checkbox" id="ctp_options[theme_plugin_tabs]" class="ctp-switch" rel="theme_plugin_tabs" <?php checked( true, $ctp_options['theme_plugin_tabs'] ); ?> >
51
  <label for="ctp_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
  </div><!-- .dashboard -->
42
  <td>
43
  <?php echo esc_html__( 'Turn On Catch Themes & Catch Plugin tabs', 'to-top' ); ?>
44
  </td>
45
+ <td><?php //echo '<pre>'; print_r($settings); echo '</pre>';
46
  $ctp_options = ctp_get_options()
47
  ?>
48
  <div class="module-header <?php echo $ctp_options['theme_plugin_tabs'] ? 'active' : 'inactive'; ?>">
49
  <div class="switch">
50
+ <input type="hidden" name="ctp_tabs_nonce" id="ctp_tabs_nonce" value="<?php echo esc_attr( wp_create_nonce( 'ctp_tabs_nonce' ) ); ?>" />
51
  <input type="checkbox" id="ctp_options[theme_plugin_tabs]" class="ctp-switch" rel="theme_plugin_tabs" <?php checked( true, $ctp_options['theme_plugin_tabs'] ); ?> >
52
  <label for="ctp_options[theme_plugin_tabs]"></label>
53
  </div>
56
  </td>
57
  </tr>
58
  </table>
59
+
60
  </div>
61
  </div><!-- .content-wrapper -->
62
  </div><!-- .dashboard -->
languages/to-top-fr_FR.mo CHANGED
Binary file
languages/to-top-fr_FR.po CHANGED
@@ -4,8 +4,8 @@ msgid ""
4
  msgstr ""
5
  "Project-Id-Version: To Top\n"
6
  "Report-Msgid-Bugs-To: https://wordpress.org/tags/_s\n"
7
- "POT-Creation-Date: 2021-08-05 10:48-0700\n"
8
- "PO-Revision-Date: 2021-08-05 10:48-0700\n"
9
  "Last-Translator: Hubert Desrues <hubert.desrues@gmail.com>\n"
10
  "Language-Team: Français\n"
11
  "Language: fr_FR\n"
@@ -246,7 +246,15 @@ msgstr ""
246
  "Vous pouvez utiliser n'importe lequel de nos plugins gratuits ou premium de "
247
  "<a href=\"%s\" target=\"_blank\">Catch Plugins</a>"
248
 
249
- #: ../admin/inc/ctp-tabs-removal.php:69
 
 
 
 
 
 
 
 
250
  msgid "Connection Error. Please try again."
251
  msgstr ""
252
 
@@ -346,7 +354,7 @@ msgid "Dashboard"
346
  msgstr "Bureau"
347
 
348
  #: ../admin/partials/to-top-admin-display.php:25
349
- #: ../admin/partials/to-top-admin-display.php:66
350
  msgid "Features"
351
  msgstr "Fonctionnalités"
352
 
@@ -364,11 +372,11 @@ msgstr ""
364
  msgid "Turn On Catch Themes & Catch Plugin tabs"
365
  msgstr ""
366
 
367
- #: ../admin/partials/to-top-admin-display.php:71
368
  msgid "Supports all themes on WordPress"
369
  msgstr "Prend en charge tous les thèmes sur WordPress"
370
 
371
- #: ../admin/partials/to-top-admin-display.php:72
372
  msgid ""
373
  "You don’t have to worry if you have a slightly different or complicated "
374
  "theme installed on your website. It supports all the themes on WordPress and "
@@ -378,11 +386,11 @@ msgstr ""
378
  "compliqué sur votre site Web. Ce plugin supporte tous les thèmes WordPress "
379
  "et rend votre site plus attrayant et ludique."
380
 
381
- #: ../admin/partials/to-top-admin-display.php:76
382
  msgid "Lightweight"
383
  msgstr "Poids léger"
384
 
385
- #: ../admin/partials/to-top-admin-display.php:77
386
  msgid ""
387
  "It is extremely lightweight. You do not need to worry about it affecting the "
388
  "space and speed of your website."
@@ -390,11 +398,11 @@ msgstr ""
390
  "C'est extrêmement léger. Ne vous inquiétez pas, cela affectera ni l'espace "
391
  "de stockage ni la vitesse de votre site Web."
392
 
393
- #: ../admin/partials/to-top-admin-display.php:81
394
  msgid "Incredible Support"
395
  msgstr "Support incroyable"
396
 
397
- #: ../admin/partials/to-top-admin-display.php:82
398
  msgid ""
399
  "We have a great line of support team and support documentation. You do not "
400
  "need to worry about how to use the plugins we provide, just refer to our "
4
  msgstr ""
5
  "Project-Id-Version: To Top\n"
6
  "Report-Msgid-Bugs-To: https://wordpress.org/tags/_s\n"
7
+ "POT-Creation-Date: 2021-09-18 00:41-0700\n"
8
+ "PO-Revision-Date: 2021-09-18 00:41-0700\n"
9
  "Last-Translator: Hubert Desrues <hubert.desrues@gmail.com>\n"
10
  "Language-Team: Français\n"
11
  "Language: fr_FR\n"
246
  "Vous pouvez utiliser n'importe lequel de nos plugins gratuits ou premium de "
247
  "<a href=\"%s\" target=\"_blank\">Catch Plugins</a>"
248
 
249
+ #: ../admin/inc/ctp-tabs-removal.php:59
250
+ msgid "Invalid Nonce"
251
+ msgstr ""
252
+
253
+ #: ../admin/inc/ctp-tabs-removal.php:62
254
+ msgid "Permission denied!"
255
+ msgstr ""
256
+
257
+ #: ../admin/inc/ctp-tabs-removal.php:75
258
  msgid "Connection Error. Please try again."
259
  msgstr ""
260
 
354
  msgstr "Bureau"
355
 
356
  #: ../admin/partials/to-top-admin-display.php:25
357
+ #: ../admin/partials/to-top-admin-display.php:67
358
  msgid "Features"
359
  msgstr "Fonctionnalités"
360
 
372
  msgid "Turn On Catch Themes & Catch Plugin tabs"
373
  msgstr ""
374
 
375
+ #: ../admin/partials/to-top-admin-display.php:72
376
  msgid "Supports all themes on WordPress"
377
  msgstr "Prend en charge tous les thèmes sur WordPress"
378
 
379
+ #: ../admin/partials/to-top-admin-display.php:73
380
  msgid ""
381
  "You don’t have to worry if you have a slightly different or complicated "
382
  "theme installed on your website. It supports all the themes on WordPress and "
386
  "compliqué sur votre site Web. Ce plugin supporte tous les thèmes WordPress "
387
  "et rend votre site plus attrayant et ludique."
388
 
389
+ #: ../admin/partials/to-top-admin-display.php:77
390
  msgid "Lightweight"
391
  msgstr "Poids léger"
392
 
393
+ #: ../admin/partials/to-top-admin-display.php:78
394
  msgid ""
395
  "It is extremely lightweight. You do not need to worry about it affecting the "
396
  "space and speed of your website."
398
  "C'est extrêmement léger. Ne vous inquiétez pas, cela affectera ni l'espace "
399
  "de stockage ni la vitesse de votre site Web."
400
 
401
+ #: ../admin/partials/to-top-admin-display.php:82
402
  msgid "Incredible Support"
403
  msgstr "Support incroyable"
404
 
405
+ #: ../admin/partials/to-top-admin-display.php:83
406
  msgid ""
407
  "We have a great line of support team and support documentation. You do not "
408
  "need to worry about how to use the plugins we provide, just refer to our "
languages/to-top.pot CHANGED
@@ -5,7 +5,7 @@ msgid ""
5
  msgstr ""
6
  "Project-Id-Version: To Top\n"
7
  "Report-Msgid-Bugs-To: https://wordpress.org/tags/_s\n"
8
- "POT-Creation-Date: 2021-08-05 10:48-0700\n"
9
  "PO-Revision-Date: 2016-12-07 23:04-0500\n"
10
  "Last-Translator: Sakin Shrestha <info@catchplugins.com>\n"
11
  "Language-Team: Catch Plugins <info@catchplugins.com>\n"
@@ -238,7 +238,15 @@ msgid ""
238
  "target=\"_blank\">Catch Plugins</a>"
239
  msgstr ""
240
 
241
- #: ../admin/inc/ctp-tabs-removal.php:69
 
 
 
 
 
 
 
 
242
  msgid "Connection Error. Please try again."
243
  msgstr ""
244
 
@@ -328,7 +336,7 @@ msgid "Dashboard"
328
  msgstr ""
329
 
330
  #: ../admin/partials/to-top-admin-display.php:25
331
- #: ../admin/partials/to-top-admin-display.php:66
332
  msgid "Features"
333
  msgstr ""
334
 
@@ -346,32 +354,32 @@ msgstr ""
346
  msgid "Turn On Catch Themes & Catch Plugin tabs"
347
  msgstr ""
348
 
349
- #: ../admin/partials/to-top-admin-display.php:71
350
  msgid "Supports all themes on WordPress"
351
  msgstr ""
352
 
353
- #: ../admin/partials/to-top-admin-display.php:72
354
  msgid ""
355
  "You don’t have to worry if you have a slightly different or complicated "
356
  "theme installed on your website. It supports all the themes on WordPress "
357
  "and makes your website more striking and playful."
358
  msgstr ""
359
 
360
- #: ../admin/partials/to-top-admin-display.php:76
361
  msgid "Lightweight"
362
  msgstr ""
363
 
364
- #: ../admin/partials/to-top-admin-display.php:77
365
  msgid ""
366
  "It is extremely lightweight. You do not need to worry about it affecting "
367
  "the space and speed of your website."
368
  msgstr ""
369
 
370
- #: ../admin/partials/to-top-admin-display.php:81
371
  msgid "Incredible Support"
372
  msgstr ""
373
 
374
- #: ../admin/partials/to-top-admin-display.php:82
375
  msgid ""
376
  "We have a great line of support team and support documentation. You do not "
377
  "need to worry about how to use the plugins we provide, just refer to our "
5
  msgstr ""
6
  "Project-Id-Version: To Top\n"
7
  "Report-Msgid-Bugs-To: https://wordpress.org/tags/_s\n"
8
+ "POT-Creation-Date: 2021-09-18 00:41-0700\n"
9
  "PO-Revision-Date: 2016-12-07 23:04-0500\n"
10
  "Last-Translator: Sakin Shrestha <info@catchplugins.com>\n"
11
  "Language-Team: Catch Plugins <info@catchplugins.com>\n"
238
  "target=\"_blank\">Catch Plugins</a>"
239
  msgstr ""
240
 
241
+ #: ../admin/inc/ctp-tabs-removal.php:59
242
+ msgid "Invalid Nonce"
243
+ msgstr ""
244
+
245
+ #: ../admin/inc/ctp-tabs-removal.php:62
246
+ msgid "Permission denied!"
247
+ msgstr ""
248
+
249
+ #: ../admin/inc/ctp-tabs-removal.php:75
250
  msgid "Connection Error. Please try again."
251
  msgstr ""
252
 
336
  msgstr ""
337
 
338
  #: ../admin/partials/to-top-admin-display.php:25
339
+ #: ../admin/partials/to-top-admin-display.php:67
340
  msgid "Features"
341
  msgstr ""
342
 
354
  msgid "Turn On Catch Themes & Catch Plugin tabs"
355
  msgstr ""
356
 
357
+ #: ../admin/partials/to-top-admin-display.php:72
358
  msgid "Supports all themes on WordPress"
359
  msgstr ""
360
 
361
+ #: ../admin/partials/to-top-admin-display.php:73
362
  msgid ""
363
  "You don’t have to worry if you have a slightly different or complicated "
364
  "theme installed on your website. It supports all the themes on WordPress "
365
  "and makes your website more striking and playful."
366
  msgstr ""
367
 
368
+ #: ../admin/partials/to-top-admin-display.php:77
369
  msgid "Lightweight"
370
  msgstr ""
371
 
372
+ #: ../admin/partials/to-top-admin-display.php:78
373
  msgid ""
374
  "It is extremely lightweight. You do not need to worry about it affecting "
375
  "the space and speed of your website."
376
  msgstr ""
377
 
378
+ #: ../admin/partials/to-top-admin-display.php:82
379
  msgid "Incredible Support"
380
  msgstr ""
381
 
382
+ #: ../admin/partials/to-top-admin-display.php:83
383
  msgid ""
384
  "We have a great line of support team and support documentation. You do not "
385
  "need to worry about how to use the plugins we provide, just refer to our "
to-top.php CHANGED
@@ -5,7 +5,7 @@
5
  * Description: To Top plugin allows the visitor as well as admin to easily scroll back to the top of the page, with fully customizable options and ability to use image.
6
  * Author: Catch Plugins
7
  * Author URI: https://catchplugins.com/
8
- * Version: 2.2.2
9
  * License: GNU General Public License, version 3 (GPLv3)
10
  * License URI: http://www.gnu.org/licenses/gpl-3.0.txt
11
  * Text Domain: to-top
@@ -38,7 +38,7 @@ if ( ! defined( 'WPINC' ) ) {
38
  }
39
 
40
  // Define Version
41
- define( 'TOTOP_VERSION', '2.2.2' );
42
 
43
  // The URL of the directory that contains the plugin
44
  if ( ! defined( 'TOTOP_URL' ) ) {
5
  * Description: To Top plugin allows the visitor as well as admin to easily scroll back to the top of the page, with fully customizable options and ability to use image.
6
  * Author: Catch Plugins
7
  * Author URI: https://catchplugins.com/
8
+ * Version: 2.3
9
  * License: GNU General Public License, version 3 (GPLv3)
10
  * License URI: http://www.gnu.org/licenses/gpl-3.0.txt
11
  * Text Domain: to-top
38
  }
39
 
40
  // Define Version
41
+ define( 'TOTOP_VERSION', '2.3' );
42
 
43
  // The URL of the directory that contains the plugin
44
  if ( ! defined( 'TOTOP_URL' ) ) {