Simple Custom CSS and JS - Version 3.38.1

Version Description

  • 12/02/2021
  • Fix: revert the code related to the compatibility with the HTML Editor Syntax Highlighter plugin
Download this release

Release Info

Developer diana_burduja
Plugin Icon 128x128 Simple Custom CSS and JS
Version 3.38.1
Comparing to
See all releases

Code changes from version 3.37 to 3.38.1

Files changed (3) hide show
  1. custom-css-js.php +40 -35
  2. includes/admin-screens.php +8 -9
  3. readme.txt +14 -19
custom-css-js.php CHANGED
@@ -3,7 +3,7 @@
3
  * Plugin Name: Simple Custom CSS and JS
4
  * Plugin URI: https://wordpress.org/plugins/custom-css-js/
5
  * Description: Easily add Custom CSS or JS to your website with an awesome editor.
6
- * Version: 3.37
7
  * Author: SilkyPress.com
8
  * Author URI: https://www.silkypress.com
9
  * License: GPL2
@@ -12,7 +12,7 @@
12
  * Domain Path: /languages/
13
  *
14
  * WC requires at least: 3.0.0
15
- * WC tested up to: 5.5
16
  */
17
 
18
  if ( ! defined( 'ABSPATH' ) ) {
@@ -95,7 +95,7 @@ if ( ! class_exists( 'CustomCSSandJS' ) ) :
95
 
96
  if ( is_null( self::$_instance ) ) {
97
  $this->print_code_actions();
98
- if ( isset ( $this->search_tree['jquery'] ) && $this->search_tree['jquery'] === true ) {
99
  add_action( 'wp_enqueue_scripts', 'CustomCSSandJS::wp_enqueue_scripts' );
100
  }
101
  }
@@ -104,7 +104,7 @@ if ( ! class_exists( 'CustomCSSandJS' ) ) :
104
  /**
105
  * Add the appropriate wp actions
106
  */
107
- function print_code_actions() {
108
  foreach ( $this->search_tree as $_key => $_value ) {
109
  $action = 'wp_';
110
  if ( strpos( $_key, 'admin' ) !== false ) {
@@ -121,7 +121,7 @@ if ( ! class_exists( 'CustomCSSandJS' ) ) :
121
  $action .= 'footer';
122
  }
123
 
124
- $priority = ( $action == 'wp_footer' ) ? 40 : 10;
125
 
126
  add_action( $action, array( $this, 'print_' . $_key ), $priority );
127
  }
@@ -154,17 +154,17 @@ if ( ! class_exists( 'CustomCSSandJS' ) ) :
154
  $type = strpos( $function, 'html' ) !== false ? 'html' : $type;
155
  $tag = array( 'css' => 'style', 'js' => 'script' );
156
 
157
- $type_attr = ( $type === 'js' && ! current_theme_supports( 'html5', 'script' ) ) ? ' type="text/javascript"' : '';
158
- $type_attr = ( $type === 'css' && ! current_theme_supports( 'html5', 'style' ) ) ? ' type="text/css"' : $type_attr;
159
 
160
  $upload_url = str_replace( array( 'https://', 'http://' ), '//', CCJ_UPLOAD_URL ) . '/';
161
 
162
- if ( $where === 'internal' ) {
163
 
164
  $before = $this->settings['remove_comments'] ? '' : '<!-- start Simple Custom CSS and JS -->' . PHP_EOL;
165
  $after = $this->settings['remove_comments'] ? '' : '<!-- end Simple Custom CSS and JS -->' . PHP_EOL;
166
 
167
- if ( $type === 'css' || $type === 'js' ) {
168
  $before .= '<' . $tag[ $type ] . ' ' . $type_attr . '>' . PHP_EOL;
169
  $after = '</' . $tag[ $type ] . '>' . PHP_EOL . $after;
170
  }
@@ -173,7 +173,7 @@ if ( ! class_exists( 'CustomCSSandJS' ) ) :
173
 
174
  foreach ( $args as $_filename ) {
175
 
176
- if ( $where === 'internal' && ( strstr( $_filename, 'css' ) || strstr( $_filename, 'js' ) ) ) {
177
  if ( $this->settings['remove_comments'] || empty( $type_attr ) ) {
178
  $custom_code = @file_get_contents( CCJ_UPLOAD_DIR . '/' . $_filename );
179
  if ( $this->settings['remove_comments'] ) {
@@ -191,21 +191,21 @@ if ( ! class_exists( 'CustomCSSandJS' ) ) :
191
  }
192
  }
193
 
194
- if ( $where === 'internal' && ! strstr( $_filename, 'css' ) && ! strstr( $_filename, 'js' ) ) {
195
  $post = get_post( $_filename );
196
  echo $before . $post->post_content . $after;
197
  }
198
 
199
- if ( $where === 'external' && $type === 'js' ) {
200
  echo PHP_EOL . "<script{$type_attr} src='{$upload_url}{$_filename}'></script>" . PHP_EOL;
201
  }
202
 
203
- if ( $where === 'external' && $type === 'css' ) {
204
  $shortfilename = preg_replace( '@\.css\?v=.*$@', '', $_filename );
205
  echo PHP_EOL . "<link rel='stylesheet' id='{$shortfilename}-css' href='{$upload_url}{$_filename}'{$type_attr} media='all' />" . PHP_EOL;
206
  }
207
 
208
- if ( $where === 'external' && $type === 'html' ) {
209
  $_filename = str_replace( '.html', '', $_filename );
210
  $post = get_post( $_filename );
211
  echo $post->post_content . PHP_EOL;
@@ -225,10 +225,10 @@ if ( ! class_exists( 'CustomCSSandJS' ) ) :
225
  /**
226
  * Set constants for later use
227
  */
228
- function set_constants() {
229
  $dir = wp_upload_dir();
230
  $constants = array(
231
- 'CCJ_VERSION' => '3.37',
232
  'CCJ_UPLOAD_DIR' => $dir['basedir'] . '/custom-css-js',
233
  'CCJ_UPLOAD_URL' => $dir['baseurl'] . '/custom-css-js',
234
  'CCJ_PLUGIN_FILE' => __FILE__,
@@ -240,21 +240,22 @@ if ( ! class_exists( 'CustomCSSandJS' ) ) :
240
  }
241
  }
242
 
243
-
 
 
244
  public function load_plugin_textdomain() {
245
  load_plugin_textdomain( 'custom-css-js', false, plugin_basename( dirname( __FILE__ ) ) . '/languages' );
246
  }
247
-
248
  }
249
 
250
  endif;
251
 
252
- /**
253
- * Returns the main instance of CustomCSSandJS
254
- *
255
- * @return CustomCSSandJS
256
- */
257
  if ( ! function_exists( 'CustomCSSandJS' ) ) {
 
 
 
 
 
258
  function CustomCSSandJS() {
259
  return CustomCSSandJS::instance();
260
  }
@@ -262,11 +263,14 @@ if ( ! function_exists( 'CustomCSSandJS' ) ) {
262
  CustomCSSandJS();
263
  }
264
 
265
-
266
- /**
267
- * Plugin action link to Settings page
268
- */
269
  if ( ! function_exists( 'custom_css_js_plugin_action_links' ) ) {
 
 
 
 
 
 
 
270
  function custom_css_js_plugin_action_links( $links ) {
271
 
272
  $settings_link = '<a href="edit.php?post_type=custom-css-js">' .
@@ -278,16 +282,17 @@ if ( ! function_exists( 'custom_css_js_plugin_action_links' ) ) {
278
  add_filter( 'plugin_action_links_' . plugin_basename( __FILE__ ), 'custom_css_js_plugin_action_links' );
279
  }
280
 
281
-
282
-
283
- /**
284
- * Compatibility with the WP Quads Pro plugin,
285
- * otherwise on a Custom Code save there is a
286
- * "The link you followed has expired." page shown.
287
- */
288
  if ( ! function_exists( 'custom_css_js_quads_pro_compat' ) ) {
 
 
 
 
 
 
 
 
289
  function custom_css_js_quads_pro_compat( $post_types ) {
290
- $match = array_search( 'custom-css-js', $post_types );
291
  if ( $match ) {
292
  unset( $post_types[ $match ] );
293
  }
3
  * Plugin Name: Simple Custom CSS and JS
4
  * Plugin URI: https://wordpress.org/plugins/custom-css-js/
5
  * Description: Easily add Custom CSS or JS to your website with an awesome editor.
6
+ * Version: 3.38.1
7
  * Author: SilkyPress.com
8
  * Author URI: https://www.silkypress.com
9
  * License: GPL2
12
  * Domain Path: /languages/
13
  *
14
  * WC requires at least: 3.0.0
15
+ * WC tested up to: 6.0
16
  */
17
 
18
  if ( ! defined( 'ABSPATH' ) ) {
95
 
96
  if ( is_null( self::$_instance ) ) {
97
  $this->print_code_actions();
98
+ if ( isset ( $this->search_tree['jquery'] ) && true === $this->search_tree['jquery'] ) {
99
  add_action( 'wp_enqueue_scripts', 'CustomCSSandJS::wp_enqueue_scripts' );
100
  }
101
  }
104
  /**
105
  * Add the appropriate wp actions
106
  */
107
+ public function print_code_actions() {
108
  foreach ( $this->search_tree as $_key => $_value ) {
109
  $action = 'wp_';
110
  if ( strpos( $_key, 'admin' ) !== false ) {
121
  $action .= 'footer';
122
  }
123
 
124
+ $priority = ( 'wp_footer' === $action ) ? 40 : 10;
125
 
126
  add_action( $action, array( $this, 'print_' . $_key ), $priority );
127
  }
154
  $type = strpos( $function, 'html' ) !== false ? 'html' : $type;
155
  $tag = array( 'css' => 'style', 'js' => 'script' );
156
 
157
+ $type_attr = ( 'js' === $type && ! current_theme_supports( 'html5', 'script' ) ) ? ' type="text/javascript"' : '';
158
+ $type_attr = ( 'css' === $type && ! current_theme_supports( 'html5', 'style' ) ) ? ' type="text/css"' : $type_attr;
159
 
160
  $upload_url = str_replace( array( 'https://', 'http://' ), '//', CCJ_UPLOAD_URL ) . '/';
161
 
162
+ if ( 'internal' === $where ) {
163
 
164
  $before = $this->settings['remove_comments'] ? '' : '<!-- start Simple Custom CSS and JS -->' . PHP_EOL;
165
  $after = $this->settings['remove_comments'] ? '' : '<!-- end Simple Custom CSS and JS -->' . PHP_EOL;
166
 
167
+ if ( 'css' === $type || 'js' === $type ) {
168
  $before .= '<' . $tag[ $type ] . ' ' . $type_attr . '>' . PHP_EOL;
169
  $after = '</' . $tag[ $type ] . '>' . PHP_EOL . $after;
170
  }
173
 
174
  foreach ( $args as $_filename ) {
175
 
176
+ if ( 'internal' === $where && ( strstr( $_filename, 'css' ) || strstr( $_filename, 'js' ) ) ) {
177
  if ( $this->settings['remove_comments'] || empty( $type_attr ) ) {
178
  $custom_code = @file_get_contents( CCJ_UPLOAD_DIR . '/' . $_filename );
179
  if ( $this->settings['remove_comments'] ) {
191
  }
192
  }
193
 
194
+ if ( 'internal' === $where && ! strstr( $_filename, 'css' ) && ! strstr( $_filename, 'js' ) ) {
195
  $post = get_post( $_filename );
196
  echo $before . $post->post_content . $after;
197
  }
198
 
199
+ if ( 'external' === $where && 'js' === $type ) {
200
  echo PHP_EOL . "<script{$type_attr} src='{$upload_url}{$_filename}'></script>" . PHP_EOL;
201
  }
202
 
203
+ if ( 'external' === $where && 'css' === $type ) {
204
  $shortfilename = preg_replace( '@\.css\?v=.*$@', '', $_filename );
205
  echo PHP_EOL . "<link rel='stylesheet' id='{$shortfilename}-css' href='{$upload_url}{$_filename}'{$type_attr} media='all' />" . PHP_EOL;
206
  }
207
 
208
+ if ( 'external' === $where && 'html' === $type ) {
209
  $_filename = str_replace( '.html', '', $_filename );
210
  $post = get_post( $_filename );
211
  echo $post->post_content . PHP_EOL;
225
  /**
226
  * Set constants for later use
227
  */
228
+ public function set_constants() {
229
  $dir = wp_upload_dir();
230
  $constants = array(
231
+ 'CCJ_VERSION' => '3.38.1',
232
  'CCJ_UPLOAD_DIR' => $dir['basedir'] . '/custom-css-js',
233
  'CCJ_UPLOAD_URL' => $dir['baseurl'] . '/custom-css-js',
234
  'CCJ_PLUGIN_FILE' => __FILE__,
240
  }
241
  }
242
 
243
+ /**
244
+ * Loads a plugin’s translated strings.
245
+ */
246
  public function load_plugin_textdomain() {
247
  load_plugin_textdomain( 'custom-css-js', false, plugin_basename( dirname( __FILE__ ) ) . '/languages' );
248
  }
 
249
  }
250
 
251
  endif;
252
 
 
 
 
 
 
253
  if ( ! function_exists( 'CustomCSSandJS' ) ) {
254
+ /**
255
+ * Returns the main instance of CustomCSSandJS
256
+ *
257
+ * @return CustomCSSandJS
258
+ */
259
  function CustomCSSandJS() {
260
  return CustomCSSandJS::instance();
261
  }
263
  CustomCSSandJS();
264
  }
265
 
 
 
 
 
266
  if ( ! function_exists( 'custom_css_js_plugin_action_links' ) ) {
267
+ /**
268
+ * Plugin action link to Settings page.
269
+ *
270
+ * @param array $links The settings links.
271
+ *
272
+ * @return array The settings links.
273
+ */
274
  function custom_css_js_plugin_action_links( $links ) {
275
 
276
  $settings_link = '<a href="edit.php?post_type=custom-css-js">' .
282
  add_filter( 'plugin_action_links_' . plugin_basename( __FILE__ ), 'custom_css_js_plugin_action_links' );
283
  }
284
 
 
 
 
 
 
 
 
285
  if ( ! function_exists( 'custom_css_js_quads_pro_compat' ) ) {
286
+ /**
287
+ * Compatibility with the WP Quads Pro plugin,
288
+ * otherwise on a Custom Code save there is a
289
+ * "The link you followed has expired." page shown.
290
+ *
291
+ * @param array $post_types The Post types.
292
+ * @return array The Post types.
293
+ */
294
  function custom_css_js_quads_pro_compat( $post_types ) {
295
+ $match = array_search( 'custom-css-js', $post_types, true );
296
  if ( $match ) {
297
  unset( $post_types[ $match ] );
298
  }
includes/admin-screens.php CHANGED
@@ -716,10 +716,10 @@ End of comment */ ',
716
  '<!-- Add HTML code to the header or the footer.
717
 
718
  For example, you can use the following code for loading the jQuery library from Google CDN:
719
- <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
720
 
721
- or the following one for loading the Bootstrap library from MaxCDN:
722
- <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous">
723
 
724
  -- End of the comment --> ',
725
  'custom-css-js'
@@ -774,7 +774,7 @@ End of comment */ ',
774
  </div>
775
 
776
  <div class="code-mirror-before"><div><?php echo htmlentities( $code_mirror_before ); ?></div></div>
777
- <textarea class="wp-editor-area" id="ccj_content" mode="<?php echo htmlentities( $code_mirror_mode ); ?>" name="content"><?php echo $post->post_content; ?></textarea>
778
  <div class="code-mirror-after"><div><?php echo htmlentities( $code_mirror_after ); ?></div></div>
779
 
780
  <table id="post-status-info"><tbody><tr>
@@ -845,7 +845,7 @@ End of comment */ ',
845
  continue;
846
  }
847
 
848
- $output .= '<h3>' . $a['title'] . '</h3>' . PHP_EOL;
849
 
850
  $output .= $this->render_input( $_key, $a, $options );
851
 
@@ -1282,7 +1282,6 @@ endif;
1282
  $this->build_search_tree();
1283
  }
1284
 
1285
-
1286
  /**
1287
  * Render the checkboxes, radios, selects and inputs
1288
  */
@@ -1302,7 +1301,7 @@ endif;
1302
  }
1303
  $selected .= ( $__key == $options[ $_key ] ) ? ' checked="checked" ' : '';
1304
  $output .= '<input type="radio" ' . $selected . 'value="' . $__key . '" name="' . $name . '" id="' . $id . '">' . PHP_EOL;
1305
- $output .= '<label class="' . $dashicons . '" for="' . $id . '"> ' . $__value['title'] . '</label><br />' . PHP_EOL;
1306
  }
1307
  $output .= '</div>' . PHP_EOL;
1308
  }
@@ -1316,7 +1315,7 @@ endif;
1316
  }
1317
  $output .= '<div class="radio-group">' . PHP_EOL;
1318
  $output .= '<input type="checkbox" ' . $selected . ' value="1" name="' . $name . '" id="' . $name . '">' . PHP_EOL;
1319
- $output .= '<label class="' . $dashicons . '" for="' . $name . '"> ' . $a['title'] . '</label>';
1320
  $output .= '</div>' . PHP_EOL;
1321
  }
1322
 
@@ -1326,7 +1325,7 @@ endif;
1326
  $output .= '<select name="' . $name . '" id="' . $name . '">' . PHP_EOL;
1327
  foreach ( $a['values'] as $__key => $__value ) {
1328
  $selected = ( isset( $options[ $_key ] ) && $options[ $_key ] == $__key ) ? ' selected="selected"' : '';
1329
- $output .= '<option value="' . $__key . '"' . $selected . '>' . $__value . '</option>' . PHP_EOL;
1330
  }
1331
  $output .= '</select>' . PHP_EOL;
1332
  $output .= '</div>' . PHP_EOL;
716
  '<!-- Add HTML code to the header or the footer.
717
 
718
  For example, you can use the following code for loading the jQuery library from Google CDN:
719
+ <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
720
 
721
+ or the following one for loading the Bootstrap library from jsDelivr:
722
+ <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-1BmE4kWBq78iYhFldvKuhfTAU6auU8tT94WrHftjDbrCEXSU1oBoqyl2QvZ6jIW3" crossorigin="anonymous">
723
 
724
  -- End of the comment --> ',
725
  'custom-css-js'
774
  </div>
775
 
776
  <div class="code-mirror-before"><div><?php echo htmlentities( $code_mirror_before ); ?></div></div>
777
+ <textarea class="wp-editor-area" id="ccj_content" mode="<?php echo htmlentities( $code_mirror_mode ); ?>" name="content" autofocus><?php echo $post->post_content; ?></textarea>
778
  <div class="code-mirror-after"><div><?php echo htmlentities( $code_mirror_after ); ?></div></div>
779
 
780
  <table id="post-status-info"><tbody><tr>
845
  continue;
846
  }
847
 
848
+ $output .= '<h3>' . esc_attr( $a['title'] ) . '</h3>' . PHP_EOL;
849
 
850
  $output .= $this->render_input( $_key, $a, $options );
851
 
1282
  $this->build_search_tree();
1283
  }
1284
 
 
1285
  /**
1286
  * Render the checkboxes, radios, selects and inputs
1287
  */
1301
  }
1302
  $selected .= ( $__key == $options[ $_key ] ) ? ' checked="checked" ' : '';
1303
  $output .= '<input type="radio" ' . $selected . 'value="' . $__key . '" name="' . $name . '" id="' . $id . '">' . PHP_EOL;
1304
+ $output .= '<label class="' . $dashicons . '" for="' . $id . '"> ' . esc_attr( $__value['title'] ) . '</label><br />' . PHP_EOL;
1305
  }
1306
  $output .= '</div>' . PHP_EOL;
1307
  }
1315
  }
1316
  $output .= '<div class="radio-group">' . PHP_EOL;
1317
  $output .= '<input type="checkbox" ' . $selected . ' value="1" name="' . $name . '" id="' . $name . '">' . PHP_EOL;
1318
+ $output .= '<label class="' . $dashicons . '" for="' . $name . '"> ' . esc_attr( $a['title'] ) . '</label>';
1319
  $output .= '</div>' . PHP_EOL;
1320
  }
1321
 
1325
  $output .= '<select name="' . $name . '" id="' . $name . '">' . PHP_EOL;
1326
  foreach ( $a['values'] as $__key => $__value ) {
1327
  $selected = ( isset( $options[ $_key ] ) && $options[ $_key ] == $__key ) ? ' selected="selected"' : '';
1328
+ $output .= '<option value="' . $__key . '"' . $selected . '>' . esc_attr( $__value ) . '</option>' . PHP_EOL;
1329
  }
1330
  $output .= '</select>' . PHP_EOL;
1331
  $output .= '</div>' . PHP_EOL;
readme.txt CHANGED
@@ -4,8 +4,8 @@ Contributors: diana_burduja
4
  Email: diana@burduja.eu
5
  Tags: CSS, JS, javascript, custom CSS, custom JS, custom style, site css, add style, customize theme, custom code, external css, css3, style, styles, stylesheet, theme, editor, design, admin
6
  Requires at least: 3.0.1
7
- Tested up to: 5.8
8
- Stable tag: 3.37
9
  License: GPLv3
10
  License URI: http://www.gnu.org/licenses/gpl-3.0.html
11
  Requires PHP: 5.2.4
@@ -105,6 +105,15 @@ $. Add/Edit HTML
105
 
106
  == Changelog ==
107
 
 
 
 
 
 
 
 
 
 
108
  = 3.37 =
109
  * 07/12/2021
110
  * Fix: allow the TablePress plugin to load its JS files on the "Add custom code" page in admin
@@ -121,11 +130,6 @@ $. Add/Edit HTML
121
  * Fix: replace the deprecated postL10n JS object with wp.i18n
122
  * Fix: add "tipsy-no-html" to the tooltips on the settings page
123
 
124
-
125
- = 3.34.1 =
126
- * 11/24/2020
127
- * Fix: PHP error when filtering the custom codes
128
-
129
  = 3.34 =
130
  * 11/01/2020
131
  * Feature: enqueue the jQuery library if one of the JS custom codes requires it
@@ -139,27 +143,18 @@ $. Add/Edit HTML
139
  * Feature: fullscreen editor
140
  * Feature: button for beautifying the code
141
 
142
- = 3.32.3 =
143
- * 08/02/2020
144
- * Fix: add "Cmd + " editor shortcuts for MacOS computers
145
-
146
- = 3.32.2 =
147
- * 07/14/2020
148
- * Fix: use file_get_contents instead of include_once to load the custom codes
149
-
150
  = 3.32 =
151
  * 07/08/2020
 
 
152
  * Fix: compatibility issue with the Product Slider for WooCommerce by ShapedPlugin
153
  * Feature: "Ctrl + /" in the editor will comment out the code
154
  * Feature: order custom codes table by "type" and "active" state
155
  * Feature: autocomplete in the editor
156
 
157
- = 3.31.1 =
158
- * 05/05/2020
159
- * Declare compatibility WooCommerce 4.1
160
-
161
  = 3.31 =
162
  * 03/21/2020
 
163
  * Feature: add "After <body> tag" option for HTML codes, if the theme allows it
164
  * Feature: don't show type attribute for script and style tags if the theme adds html5 support for it
165
  * Code refactory
4
  Email: diana@burduja.eu
5
  Tags: CSS, JS, javascript, custom CSS, custom JS, custom style, site css, add style, customize theme, custom code, external css, css3, style, styles, stylesheet, theme, editor, design, admin
6
  Requires at least: 3.0.1
7
+ Tested up to: 5.9
8
+ Stable tag: 3.38.1
9
  License: GPLv3
10
  License URI: http://www.gnu.org/licenses/gpl-3.0.html
11
  Requires PHP: 5.2.4
105
 
106
  == Changelog ==
107
 
108
+ = 3.38.1 =
109
+ * 12/02/2021
110
+ * Fix: revert the code related to the compatibility with the `HTML Editor Syntax Highlighter` plugin
111
+
112
+ = 3.38 =
113
+ * 11/09/2021
114
+ * Fix: escape labels on the "Add new custom code" page
115
+ * Feature: Keep the last cursor position in the editor and let the editor get focus when the page loads
116
+
117
  = 3.37 =
118
  * 07/12/2021
119
  * Fix: allow the TablePress plugin to load its JS files on the "Add custom code" page in admin
130
  * Fix: replace the deprecated postL10n JS object with wp.i18n
131
  * Fix: add "tipsy-no-html" to the tooltips on the settings page
132
 
 
 
 
 
 
133
  = 3.34 =
134
  * 11/01/2020
135
  * Feature: enqueue the jQuery library if one of the JS custom codes requires it
143
  * Feature: fullscreen editor
144
  * Feature: button for beautifying the code
145
 
 
 
 
 
 
 
 
 
146
  = 3.32 =
147
  * 07/08/2020
148
+ * Fix: add "Cmd + " editor shortcuts for MacOS computers
149
+ * Fix: use file_get_contents instead of include_once to load the custom codes
150
  * Fix: compatibility issue with the Product Slider for WooCommerce by ShapedPlugin
151
  * Feature: "Ctrl + /" in the editor will comment out the code
152
  * Feature: order custom codes table by "type" and "active" state
153
  * Feature: autocomplete in the editor
154
 
 
 
 
 
155
  = 3.31 =
156
  * 03/21/2020
157
+ * Declare compatibility WooCommerce 4.1
158
  * Feature: add "After <body> tag" option for HTML codes, if the theme allows it
159
  * Feature: don't show type attribute for script and style tags if the theme adds html5 support for it
160
  * Code refactory