| @@ -2,9 +2,9 @@ | ||
| 2 | 2 | /** |
| 3 | 3 | * Plugin Name: SimpleTOC - Table of Contents Block |
| 4 | 4 | * Plugin URI: https://marc.tv/simpletoc-wordpress-inhaltsverzeichnis-plugin-gutenberg/ |
| 5 | 5 | * Description: SEO-friendly Table of Contents Gutenberg block. No JavaScript or CSS by default. |
| 6 | - * Version: 7.3.0 | |
| 6 | + * Version: 7.4.0 | |
| 7 | 7 | * Requires at least: 6.2 |
| 8 | 8 | * Requires PHP: 7.3 |
| 9 | 9 | * Author: Marc Tönsing |
| 10 | 10 | * Author URI: https://toensing.com |
| @@ -20,9 +20,9 @@ | ||
| 20 | 20 | require_once __DIR__ . '/simpletoc-admin-settings.php'; |
| 21 | 21 | require_once __DIR__ . '/simpletoc-class-headline-ids.php'; |
| 22 | 22 | |
| 23 | 23 | const DEFAULT_BOX_COLOR = '#ebebeb'; |
| 24 | -const SIMPLETOC_VERSION = '7.3.0'; | |
| 24 | +const SIMPLETOC_VERSION = '7.4.0'; | |
| 25 | 25 | |
| 26 | 26 | /** |
| 27 | 27 | * Prevents direct execution of the plugin file. |
| 28 | 28 | * If a WordPress function does not exist, it means that the file has not been run by WordPress. |
| @@ -57,9 +57,10 @@ | ||
| 57 | 57 | wp_add_inline_script( |
| 58 | 58 | 'simpletoc-toc-editor-script', |
| 59 | 59 | 'window.simpletocEditorSettings = ' . wp_json_encode( |
| 60 | 60 | array( |
| 61 | - 'settingsUrl' => admin_url( 'options-general.php?page=simpletoc' ), | |
| 61 | + 'settingsUrl' => admin_url( 'options-general.php?page=simpletoc' ), | |
| 62 | + 'scrollSpyEnabled' => simpletoc_scroll_spy_enabled(), | |
| 62 | 63 | ) |
| 63 | 64 | ) . ';', |
| 64 | 65 | 'before' |
| 65 | 66 | ); |
| @@ -77,8 +78,10 @@ | ||
| 77 | 78 | */ |
| 78 | 79 | function add_simpletoc_block_editor_settings( $editor_settings, $editor_context ) { |
| 79 | 80 | $editor_settings['simpletocSettingsUrl'] = admin_url( 'options-general.php?page=simpletoc' ); |
| 80 | 81 | |
| 82 | + $editor_settings['simpletocScrollSpyEnabled'] = simpletoc_scroll_spy_enabled(); | |
| 83 | + | |
| 81 | 84 | return $editor_settings; |
| 82 | 85 | } |
| 83 | 86 | |
| 84 | 87 | add_filter( 'block_editor_settings_all', __NAMESPACE__ . '\add_simpletoc_block_editor_settings', 10, 2 ); |
| @@ -251,8 +254,12 @@ | ||
| 251 | 254 | $typography_enabled = ! empty( $attributes['fontSize'] ) || ! empty( $attributes['style']['typography'] ); |
| 252 | 255 | $wrapper_classes = array( 'simpletoc' ); |
| 253 | 256 | $wrapper_style = ''; |
| 254 | 257 | |
| 258 | + if ( simpletoc_scroll_spy_enabled() || ! empty( $attributes['scroll_spy'] ) ) { | |
| 259 | + $wrapper_classes[] = 'has-simpletoc-scroll-spy'; | |
| 260 | + } | |
| 261 | + | |
| 255 | 262 | if ( $typography_enabled ) { |
| 256 | 263 | $wrapper_classes[] = 'has-simpletoc-typography'; |
| 257 | 264 | } |
| 258 | 265 | |
| @@ -475,12 +482,11 @@ | ||
| 475 | 482 | $html_wo_nbs = str_replace( ' ', ' ', $zero_punctuation ); |
| 476 | 483 | // remove umlauts and accents. |
| 477 | 484 | $string_without_accents = remove_accents( $html_wo_nbs ); |
| 478 | 485 | // Sanitizes a title, replacing whitespace and a few other characters with dashes. |
| 479 | - $sanitized_string = sanitize_title_with_dashes( $string_without_accents ); | |
| 480 | - // Encode for use in an url. | |
| 481 | - $urlencoded = rawurlencode( $sanitized_string ); | |
| 482 | - return $urlencoded; | |
| 486 | + // Already returns a URL-safe, percent-encoded slug for non-ASCII input, so no | |
| 487 | + // further rawurlencode() is needed (that would double-encode the string). | |
| 488 | + return sanitize_title_with_dashes( $string_without_accents ); | |
| 483 | 489 | } |
| 484 | 490 | |
| 485 | 491 | /** |
| 486 | 492 | * Add additional plugin meta links to the SimpleTOC plugin page. |