diff --git a/class/settings.php b/class/settings.php index 4b4b028..1175d60 100644 --- a/class/settings.php +++ b/class/settings.php @@ -593,16 +593,16 @@ class MCI_Footnotes_Settings { /** * Settings container key for shortcode syntax validation - * + * * @since 2.4.0 * @var bool - * + * * 2021-01-01T0616+0100 */ const C_BOOL_FOOTNOTE_SHORTCODE_SYNTAX_VALIDATION_ENABLE = "footnotes_inputfield_shortcode_syntax_validation_enable"; - - - + + + /** * SETTINGS STORAGE */ @@ -655,7 +655,7 @@ class MCI_Footnotes_Settings { self::C_STR_FOOTNOTES_SHORT_CODE_END => '))', self::C_STR_FOOTNOTES_SHORT_CODE_START_USER_DEFINED => '', self::C_STR_FOOTNOTES_SHORT_CODE_END_USER_DEFINED => '', - + self::C_BOOL_FOOTNOTE_SHORTCODE_SYNTAX_VALIDATION_ENABLE => 'yes', self::C_STR_FOOTNOTES_COUNTER_STYLE => 'arabic_plain', @@ -679,7 +679,7 @@ class MCI_Footnotes_Settings { // whether to enqueue additional style sheet: self::C_STR_FOOTNOTES_PAGE_LAYOUT_SUPPORT => 'none', - + // top and bottom margins: self::C_INT_REFERENCE_CONTAINER_TOP_MARGIN => 24, self::C_INT_REFERENCE_CONTAINER_BOTTOM_MARGIN => 0, @@ -816,15 +816,16 @@ class MCI_Footnotes_Settings { "footnotes_storage_expert" => array( - // checkboxes + // These are checkboxes; keyword 'checked' is converted to Boolean true, + // empty string to false (default): // Titles should all be enabled by default to prevent users from // thinking at first that the feature is broken in post titles. // See - // Yet in titles, footnotes are functionally pointless in WordPress. + // Yet in titles, footnotes are still buggy, because WordPress + // uses the title string in menus and in the title element. self::C_BOOL_EXPERT_LOOKUP_THE_TITLE => '', - // This is the only useful one: self::C_BOOL_EXPERT_LOOKUP_THE_CONTENT => 'checked', // And the_excerpt is disabled by default following @nikelaos in @@ -834,9 +835,10 @@ class MCI_Footnotes_Settings { self::C_BOOL_EXPERT_LOOKUP_WIDGET_TITLE => '', - // The widget_text hook must be disabled, because a footnotes container is inserted - // at the bottom of each widget, but multiple containers in a page are not disambiguated. - // E.g. enabling this causes issues with footnotes in Elementor accordions. + // The widget_text hook must be disabled by default, because it causes + // multiple reference containers to appear in Elementor accordions, but + // it must be enabled if multiple reference containers are desired, as + // in Elementor toggles. self::C_BOOL_EXPERT_LOOKUP_WIDGET_TEXT => '', // initially hard-coded default @@ -947,7 +949,7 @@ class MCI_Footnotes_Settings { * @since 1.5.0 * @param int $p_int_Index Settings Container Array Key Index. * @return array Settings loaded from Container of Default Settings if Settings Container is empty (first usage). - * + * * @since ditched trimming whitespace from text box content in response to user request. * @link https://wordpress.org/support/topic/leading-space-in-footnotes-tag/#post-5347966 */ diff --git a/class/task.php b/class/task.php index 996a7d4..9a003a9 100644 --- a/class/task.php +++ b/class/task.php @@ -6,117 +6,104 @@ * @author Stefan Herndler * @since 1.5.0 * - * @edited @since 2.0.0 * - * @lastmodified 2021-01-23T0132+0100 + * @lastmodified 2021-01-26T0752+0100 * - * @since 2.0.5 debug autoload / infinite scroll by adding post ID, thanks to @docteurfitness code contribution - * @since 2.0.9 REMOVE the_post HOOK 2020-11-08T1839+0100 - * @since 2.1.0 Tooltips: Read-on button: configurable instead of localizable - * @since 2.1.1 Combining identical footnotes: fix dead links and ensure referrer-backlink bijectivity, thanks to @happyches bug report - * @since 2.1.1 Reference container: fix start pages by making its display optional, thanks to @dragon013 bug report + * @edit 2.0.0 + * @edit 2.0.5 Reference container: fix relative position through priority level, thanks to @june01 @imeson bug reports, thanks to @spaceling code contribution + * @edit 2.0.6 Infinite scroll: debug autoload by adding post ID, thanks to @docteurfitness code contribution + * @edit 2.0.9 REMOVE the_post HOOK 2020-11-08T1839+0100 + * @edit 2.1.0 Tooltips: Read-on button: Label: configurable instead of localizable + * @edit 2.1.1 Combining identical footnotes: fix dead links and ensure referrer-backlink bijectivity, thanks to @happyches bug report + * @edit 2.1.1 Reference container: fix start pages by making its display optional, thanks to @dragon013 bug report + * @edit 2.1.1 Referrers: new setting for vertical align: superscript (default) or baseline (optional), thanks to @cwbayer bug report + * @edit 2.1.1 Reference container: option to restore 3-column layout (combining identicals turned off) + * @edit 2.1.1 Reference container: option to append symbol (prepended by default) (combining identicals turned off) + * @edit 2.1.1 Dashboard: priority level setting for the_content hook, thanks to @imeson bug report + * @edit 2.1.2 Dashboard: priority level settings for all other hooks, thanks to @nikelaos bug report * + * @edit 2.1.4 fix line wrapping of URLs based on pattern, not link element 2020-11-25T0837+0100 + * @edit 2.1.4 fix issues with link elements by making them optional 2020-11-26T1051+0100 + * @edit 2.1.4 support appending arrow when combining identicals is on 2020-11-26T1633+0100 + * @edit 2.1.4 disable or select backlink separator and terminator 2020-11-28T1048+0100 + * @edit 2.1.4 optional line breaks to stack enumerated backlinks 2020-11-28T1049+0100 + * @edit 2.1.4 ref container column width and tooltip font size settings 2020-12-03T0954+0100 + * @edit 2.1.4 scroll offset and duration settings 2020-12-05T0538+0100 + * @edit 2.1.4 tooltip display duration settings 2020-12-06T1320+0100 * - * - * @since 2.1.1 Referrers: superscript becomes optional, thanks to @cwbayer bug report - * - * @since 2.1.1 options fixing ref container layout and referrer vertical alignment 2020-11-16T2024+0100 - * - * @since 2.1.1 priority level option fixing ref container relative position, thanks to june01, @spaceling, @imeson 2020-11-17T0254+0100 - * @link https://wordpress.org/support/topic/change-the-position-5/ - * - * @since 2.1.2 priority level settings for all other hooks, thanks to @nikelaos 2020-11-19T1849+0100 - * @link https://wordpress.org/support/topic/doesnt-work-any-more-11/#post-13676705 - * - * @since 2.1.4 fix line wrapping of URLs based on pattern, not link element 2020-11-25T0837+0100 - * - * @since 2.1.4 fix issues with link elements by making them optional 2020-11-26T1051+0100 - * - * @since 2.1.4 support appending arrow when combining identicals is on 2020-11-26T1633+0100 - * - * @since 2.1.4 disable or select backlink separator and terminator 2020-11-28T1048+0100 - * - * @since 2.1.4 optional line breaks to stack enumerated backlinks 2020-11-28T1049+0100 - * - * @since 2.1.4 ref container column width and tooltip font size settings 2020-12-03T0954+0100 - * - * @since 2.1.4 scroll offset and duration settings 2020-12-05T0538+0100 - * - * @since 2.1.4 tooltip display duration settings 2020-12-06T1320+0100 - * - * @since 2.1.5 URL wrap: exclude image source too, thanks to @bjrnet21 + * @edit 2.1.5 URL wrap: exclude image source too, thanks to @bjrnet21 * @link https://wordpress.org/support/topic/2-1-4-breaks-on-my-site-images-dont-show/ * - * @since 2.1.6 option to disable URL line wrapping 2020-12-09T1606+0100 + * @edit 2.1.6 option to disable URL line wrapping 2020-12-09T1606+0100 * - * @since 2.1.6 add catch-all exclusion to fix URL line wrapping, thanks to @a223123131 2020-12-09T1921+0100 + * @edit 2.1.6 add catch-all exclusion to fix URL line wrapping, thanks to @a223123131 2020-12-09T1921+0100 * @link https://wordpress.org/support/topic/broken-layout-starting-version-2-1-4/ * - * @since 2.2.0 support for custom position shortcode for reference container, thanks to @hamshe 2020-12-13T2058+0100 + * @edit 2.2.0 support for custom position shortcode for reference container, thanks to @hamshe 2020-12-13T2058+0100 * @link https://wordpress.org/support/topic/reference-container-in-elementor/ * - * @since 2.2.3 custom CSS from new setting in header after legacy 2020-12-15T1128+0100 + * @edit 2.2.3 custom CSS from new setting in header after legacy 2020-12-15T1128+0100 * - * @since 2.2.5 connect alternative tooltips to position and timing settings 2020-12-18T1113+0100 + * @edit 2.2.5 connect alternative tooltips to position and timing settings 2020-12-18T1113+0100 * - * @since 2.2.5 delete unused position shortcode when ref container in widget or footer, thanks to @hamshe 2020-12-18T1437+0100 + * @edit 2.2.5 delete unused position shortcode when ref container in widget or footer, thanks to @hamshe 2020-12-18T1437+0100 * @link https://wordpress.org/support/topic/reference-container-in-elementor/#post-13784126 * - * @since 2.2.5 options for label element and label bottom border, thanks to @markhillyer 2020-12-18T1447+0100 + * @edit 2.2.5 options for label element and label bottom border, thanks to @markhillyer 2020-12-18T1447+0100 * @link https://wordpress.org/support/topic/how-do-i-eliminate-the-horizontal-line-beneath-the-reference-container-heading/ * - * @since 2.2.6 URL wrap: make the quotation mark optional in the exclusion regex, thanks to @spiralofhope2 2020-12-23T0409+0100 + * @edit 2.2.6 URL wrap: make the quotation mark optional in the exclusion regex, thanks to @spiralofhope2 2020-12-23T0409+0100 * @link https://wordpress.org/support/topic/two-links-now-breaks-footnotes-with-blogtext/ * - * @since 2.2.7 revert that change in the exclusion regex, thanks to @rjl20, @spaceling, @friedrichnorth, @bernardzit 2020-12-23T1046+0100 + * @edit 2.2.7 revert that change in the exclusion regex, thanks to @rjl20, @spaceling, @friedrichnorth, @bernardzit 2020-12-23T1046+0100 * @link https://wordpress.org/support/topic/two-links-now-breaks-footnotes-with-blogtext/ * @link https://wordpress.org/support/topic/footnotes-dont-show-after-update-to-2-2-6/ * - * @since 2.2.8 URL wrap: correct lookbehind by duplicating it with and without quotation mark class 2020-12-23T1108+0100 + * @edit 2.2.8 URL wrap: correct lookbehind by duplicating it with and without quotation mark class 2020-12-23T1108+0100 * - * @since 2.2.9 URL wrap: account for RFC 2396 allowed characters in parameter names 2020-12-24T1956+0100 + * @edit 2.2.9 URL wrap: account for RFC 2396 allowed characters in parameter names 2020-12-24T1956+0100 * @link https://stackoverflow.com/questions/814700/http-url-allowed-characters-in-parameter-names * - * @since 2.2.9 Reference containers, widget_text hook: support for multiple containers in a page, thanks to @justbecuz bug report + * @edit 2.2.9 Reference containers, widget_text hook: support for multiple containers in a page, thanks to @justbecuz bug report * @link https://wordpress.org/support/topic/reset-footnotes-to-1/#post-13662830 * - * @since 2.2.9 URL wrap: exclude URLs also where the equals sign is preceded by an entity or character reference 2020-12-25T1251+0100 + * @edit 2.2.9 URL wrap: exclude URLs also where the equals sign is preceded by an entity or character reference 2020-12-25T1251+0100 * - * @since 2.2.10 URL wrap: support also file transfer protocol URLs 2020-12-25T2220+0100 + * @edit 2.2.10 URL wrap: support also file transfer protocol URLs 2020-12-25T2220+0100 * - * @since 2.2.10 Reference container: add option for table borders to revert 2.0.0/2.0.1 change made on user request, thanks to @noobishh 2020-12-25T2304+0100 + * @edit 2.2.10 Reference container: add option for table borders to revert 2.0.0/2.0.1 change made on user request, thanks to @noobishh 2020-12-25T2304+0100 * @link https://wordpress.org/support/topic/borders-25/ * - * @since 2.3.0 Reference container: convert top padding to margin and make it a setting, thanks to @hamshe + * @edit 2.3.0 Reference container: convert top padding to margin and make it a setting, thanks to @hamshe bug report * @link https://wordpress.org/support/topic/reference-container-in-elementor/#post-13786635 * - * @since 2.3.0 optional hard links in referrers and backlinks for AMP compatibility, thanks to @psykonevro bug report, thanks to @martinneumannat code contribution - * @since 2.3.0 swap Custom CSS migration Boolean from 'migration complete' to 'show legacy' 2020-12-27T1243+0100 + * @edit 2.3.0 optional hard links in referrers and backlinks for AMP compatibility, thanks to @psykonevro bug report, thanks to @martinneumannat code contribution + * @edit 2.3.0 swap Custom CSS migration Boolean from 'migration complete' to 'show legacy' 2020-12-27T1243+0100 * - * @since 2.4.0 syntax validation for balanced footnote start and end tags 2021-01-01T0227+0100 + * @edit 2.4.0 syntax validation for balanced footnote start and end tags 2021-01-01T0227+0100 * - * @since 2.4.0 initialize scroll offset variable to 34 as a more robust default, thanks to @lukashuggenberg 2021-01-04T0504+0100 + * @edit 2.4.0 initialize scroll offset variable to 34 as a more robust default, thanks to @lukashuggenberg 2021-01-04T0504+0100 * - * @since 2.4.0 set empty reference container label to NNBSP to make it more robust, thanks to @lukashuggenberg 2021-01-04T0504+0100 + * @edit 2.4.0 set empty reference container label to NNBSP to make it more robust, thanks to @lukashuggenberg 2021-01-04T0504+0100 * - * @since 2.4.0 optimize template load and process, thanks to @misfist 2021-01-04T1355+0100 + * @edit 2.4.0 Performance: optimize template load and process according to settings, thanks to @misfist code contribution * - * @since 2.4.0 initialize hard link address as empty to fix undefined variable bug, thanks to @a223123131 2021-01-04T1622+0100 + * @edit 2.4.0 initialize hard link address as empty to fix undefined variable bug, thanks to @a223123131 2021-01-04T1622+0100 * - * @since 2.5.0 Shortcode syntax validation: exclude certain cases involving scripts, thanks to @andreasra 2021-01-07T0824+0100 - * @since 2.5.0 Shortcode syntax validation: complete message with hint about setting, thanks to @andreasra - * @since 2.5.0 Shortcode syntax validation: limit length of quoted string to 300 characters, thanks to @andreasra + * @edit 2.5.0 Shortcode syntax validation: exclude certain cases involving scripts, thanks to @andreasra 2021-01-07T0824+0100 + * @edit 2.5.0 Shortcode syntax validation: complete message with hint about setting, thanks to @andreasra + * @edit 2.5.0 Shortcode syntax validation: limit length of quoted string to 300 characters, thanks to @andreasra * @link https://wordpress.org/support/topic/warning-unbalanced-footnote-start-tag-short-code-before/ * - * @since 2.5.0 Hooks: support for footnotes on category pages, thanks to @vitaefit bug report, thanks to @misfist code contribution + * @edit 2.5.0 Hooks: support footnotes on category pages, thanks to @vitaefit bug report, thanks to @misfist code contribution * @link https://wordpress.org/support/topic/footnote-doesntwork-on-category-page/ * - * @since 2.5.1 Hooks: support for footnotes in Popup Maker popups, thanks to @squatcher bug report + * @edit 2.5.1 Hooks: support footnotes in Popup Maker popups, thanks to @squatcher bug report * @link https://wordpress.org/support/topic/footnotes-use-in-popup-maker/ * - * @since 2.5.2 Tooltips: ability to display dedicated content, thanks to @jbj2199 bug report + * @edit 2.5.2 Tooltips: ability to display dedicated content, thanks to @jbj2199 bug report * - * @since 2.5.3 URL wrap: exclude URL pattern as folder name in Wayback Machine URL, thanks to @rumperuu bug report + * @edit 2.5.3 URL wrap: exclude URL pattern as folder name in Wayback Machine URL, thanks to @rumperuu bug report */ // If called directly, abort: @@ -162,15 +149,19 @@ class MCI_Footnotes_Task { public static $a_str_Prefix = ""; /** - * INFINITE SCROLL / AUTOLOAD, ARCHIVE VIEW + * INFINITE SCROLL / AUTOLOAD OR ARCHIVE VIEW * * debug autoload / infinite scroll by adding post ID, thanks to @docteurfitness code contribution - * Multiple posts are appended to each other, functions and note IDs must be disambiguated. + * @since 2.0.6 + * + * As multiple posts are appended to each other, functions and fragment IDs must be disambiguated. * - * @thanksto @docteurfitness * @contributor @docteurfitness - * @link https://wordpress.org/support/topic/auto-load-post-compatibility-update/ - * @since 2.0.5 + * @reporter @docteurfitness + * + * @source https://wordpress.org/support/topic/auto-load-post-compatibility-update/#post-13618833 + * @bugreport https://wordpress.org/support/topic/auto-load-post-compatibility-update/ + * * @var int * * post ID to make everything unique wrt infinite scroll and archive view: @@ -178,31 +169,42 @@ class MCI_Footnotes_Task { public static $a_int_PostId = 0; /** - * REFERENCE CONTAINER ID + * MULTIPLE REFERENCE CONTAINERS IN CONTENT AND WIDGETS + * + * Reference containers, widget_text hook: support for multiple containers in a page, thanks to @justbecuz bug report + * @since 2.2.9 + * @datestamp 2020-12-25T0338+0100 + * + * @reporter @justbecuz + * + * @bugreport https://wordpress.org/support/topic/reset-footnotes-to-1/ + * @bugreport https://wordpress.org/support/topic/reset-footnotes-to-1/#post-13662830 + * + * @var int incremented each time after a reference container is inserted * * This ID disambiguates multiple reference containers in a page * as they may occur when the widget_text hook is active and the page * is built with Elementor and has an accordion or similar toggle sections. - * - * @thanksto @justbecuz bug report - * @link https://wordpress.org/support/topic/reset-footnotes-to-1/ - * @since 2.2.9 - * @datestamp 2020-12-25T0338+0100 - * @var int - * - * incremented each time after a reference container is inserted. */ public static $a_int_ReferenceContainerId = 1; /** * TEMPLATE PROCESS OPTIMIZATION * - * Load tooltip inline script only if jQuery tooltips are enabled - * Streamline process depending on tooltip enabled status + * Performance: optimize template load and process according to settings, thanks to @misfist code contribution + * @since 2.4.0 + * @datestamp 2021-01-04T1355+0100 * * @author Patrizia Lutz @misfist * - * @since 2.4.0 + * @source https://wordpress.org/support/topic/template-override-filter/#post-13864301 + * @link https://github.com/misfist/footnotes/releases/tag/2.4.0d3 repository + * @link https://github.com/misfist/footnotes/compare/2.4.0%E2%80%A62.4.0d3 diff + * + * @var bool from DB + * + * Streamline process depending on tooltip enabled status + * Load tooltip inline script only if jQuery tooltips are enabled */ public static $a_bool_TooltipsEnabled = false; public static $a_bool_AlternativeTooltipsEnabled = false; @@ -330,45 +332,61 @@ class MCI_Footnotes_Task { * @author Stefan Herndler * @since 1.5.0 * - * Edited: - * - * the_post hook: - * @since 1.5.4 added the_post hook in response to user request for custom post types - * @link https://wordpress.org/support/topic/doesnt-work-in-custon-post-types/#post-5339110 - * - * @since 2.0.9 removed the_post hook after its default enabling caused multiple issues 2020-11-08T1839+0100 - * @see - * Documentation: - * - * Default remains PHP_INT_MAX. - * PHP_INT_MAX cannot be reset by leaving the number box empty. because browsers - * (WebKit) don’t allow it, so we must resort to -1. + * @edit 2.0.5 Reference container: fix relative position through priority level, thanks to @june01 @imeson bug reports, thanks to @spaceling code contribution + * @edit 2.0.6 Priority level back to PHP_INT_MAX (ref container positioning not this plugin’s responsibility) + * @edit 2.0.7 Set priority level back to 10 assuming it is unproblematic 2020-11-06T1344+0100 + * @edit 2.0.8 Priority level back to PHP_INT_MAX (need to get in touch with other plugins) + * @edit 2.0.9 removed the_post hook after its default enabling caused multiple issues + * @edit 2.1.1 Dashboard: priority level setting for the_content hook, thanks to @imeson bug report + * @edit 2.1.2 Dashboard: priority level settings for all other hooks, thanks to @nikelaos bug report + * @edit 2.5.0 support the term_description hook, thanks to @vitaefit bug report, thanks to @misfist code contribution + * @edit 2.5.1 support the pum_popup_content hook, thanks to @squatcher bug report */ public function registerHooks() { + /** + * PRIORITY LEVELS + * + * Reference container: fix relative position through priority level, thanks to @june01 @imeson bug reports, thanks to @spaceling code contribution + * @since 2.0.5 + * @datestamp 2020-11-02T0330+0100 + * + * @contributor @spaceling + * @source https://wordpress.org/support/topic/change-the-position-5/#post-13608594 + * + * @reporter @june01 + * @bugreport https://wordpress.org/support/topic/change-the-position-5/ + * + * @reporter @imeson + * @bugreport https://wordpress.org/support/topic/change-the-position-5/#post-13538345 + * + * Dashboard: priority level setting for the_content hook, thanks to @imeson bug report + * @since 2.1.1 + * @datestamp 2020-11-17T0254+0100 + * + * @reporter @imeson + * @bugreport https://wordpress.org/support/topic/change-the-position-5/#post-13538345 + * + * Dashboard: priority level settings for all other hooks, thanks to @nikelaos bug report + * @since 2.1.2 + * @datestamp 2020-11-19T1849+0100 + * + * @reporter @nikelaos + * @bugreport https://wordpress.org/support/topic/doesnt-work-any-more-11/#post-13676705 + * + * @link https://codex.wordpress.org/Plugin_API/#Hook_in_your_Filter + * + * Setting the_content priority to "10" instead of PHP_INT_MAX i.e. 9223372036854775807 + * makes the footnotes reference container display beneath the post and above other + * features added by other plugins, e.g. related post lists and social buttons. + * + * For YARPP to display related posts below the Footnotes reference container, + * priority needs to be at least 1200. + * + * PHP_INT_MAX cannot be reset by leaving the number box empty. because browsers + * (WebKit) don’t allow it, so we must resort to -1. + * + */ // get values from settings: $p_int_TheTitlePriority = intval(MCI_Footnotes_Settings::instance()->get(MCI_Footnotes_Settings::C_INT_EXPERT_LOOKUP_THE_TITLE_PRIORITY_LEVEL)); $p_int_TheContentPriority = intval(MCI_Footnotes_Settings::instance()->get(MCI_Footnotes_Settings::C_INT_EXPERT_LOOKUP_THE_CONTENT_PRIORITY_LEVEL)); @@ -394,18 +412,39 @@ class MCI_Footnotes_Task { add_filter('the_title', array($this, "the_title"), $p_int_TheTitlePriority); } - // custom priority level for reference container relative positioning; default 98: + // configurable priority level for reference container relative positioning; default 98: if (MCI_Footnotes_Convert::toBool(MCI_Footnotes_Settings::instance()->get(MCI_Footnotes_Settings::C_BOOL_EXPERT_LOOKUP_THE_CONTENT))) { add_filter('the_content', array($this, "the_content"), $p_int_TheContentPriority); - // HOOK FOR CATEGORY PAGES: - // 2021-01-05T1402+0100 - // see + /** + * HOOK FOR CATEGORY PAGES + * + * Hooks: support footnotes on category pages, thanks to @vitaefit bug report, thanks to @misfist code contribution + * @datestamp 2021-01-05T1402+0100 + * @since 2.5.0 + * + * @reporter @vitaefit + * @bugreport https://wordpress.org/support/topic/footnote-doesntwork-on-category-page/ + * + * @contributor @misfist + * @source https://wordpress.org/support/topic/footnote-doesntwork-on-category-page/#post-13864859 + * + * Category pages can have rich HTML content in a term description with article status. + * For this to happen, WordPress’ built-in partial HTML blocker needs to be disabled. + * @link https://docs.woocommerce.com/document/allow-html-in-term-category-tag-descriptions/ + */ add_filter('term_description', array($this, "the_content"), $p_int_TheContentPriority); - // HOOK FOR POPUP MAKER POPUPS: - // 2021-01-18T2038+0100 - // see + /** + * HOOK FOR POPUP MAKER POPUPS + * + * Hooks: support footnotes in Popup Maker popups, thanks to @squatcher bug report + * @since 2.5.1 + * @datestamp 2021-01-18T2038+0100 + * + * @reporter @squatcher + * @bugreport https://wordpress.org/support/topic/footnotes-use-in-popup-maker/ + */ add_filter('pum_popup_content', array($this, "the_content"), $p_int_TheContentPriority); } @@ -420,9 +459,23 @@ class MCI_Footnotes_Task { } - // REMOVED the_post HOOK - // 2020-11-08T1839+0100 - // @since 2.0.9 + /** + * THE the_post HOOK + * + * support the_post hook in response to user request for custom post types + * @since 1.5.4 + * @accountable @aricura + * @link https://wordpress.org/support/topic/doesnt-work-in-custon-post-types/#post-5339110 + * + * remove the_post hook after its default enabling caused multiple issues + * @edit 2.0.9 + * @accountable @pewgeuges + * @datestamp 2020-11-08T1839+0100 + * @link https://wordpress.org/support/topic/change-the-position-5/page/2/#post-13630114 + * @link https://wordpress.org/support/topic/footnotes-appearing-in-header/#post-13630303 + * @link https://wordpress.org/support/topic/footnotes-appearing-in-header/page/2/#post-13630799 + * @link https://wordpress.org/support/topic/no-footnotes-anymore/#post-13813233 + */ // reset stored footnotes when displaying the header @@ -1003,6 +1056,10 @@ class MCI_Footnotes_Task { $l_obj_Template = new MCI_Footnotes_Template(MCI_Footnotes_Template::C_STR_PUBLIC, "footnote"); } + // call again for robustness when priority levels don’t match any longer: + self::$a_bool_TooltipsEnabled = MCI_Footnotes_Convert::toBool(MCI_Footnotes_Settings::instance()->get(MCI_Footnotes_Settings::C_BOOL_FOOTNOTES_MOUSE_OVER_BOX_ENABLED)); + self::$a_bool_AlternativeTooltipsEnabled = MCI_Footnotes_Convert::toBool(MCI_Footnotes_Settings::instance()->get(MCI_Footnotes_Settings::C_BOOL_FOOTNOTES_MOUSE_OVER_BOX_ALTERNATIVE)); + // load tooltip inline script if jQuery tooltips are enabled: if (self::$a_bool_TooltipsEnabled && ! self::$a_bool_AlternativeTooltipsEnabled) { $l_obj_TemplateTooltip = new MCI_Footnotes_Template(MCI_Footnotes_Template::C_STR_PUBLIC, "tooltip"); @@ -1016,8 +1073,8 @@ class MCI_Footnotes_Task { // search footnotes short codes in the content do { // get first occurrence of the footnote start tag short code: - $i_int_len_Content = strlen($p_str_Content); - if ($l_int_PosStart > $i_int_len_Content) $l_int_PosStart = $i_int_len_Content; + $i_int_LenContent = strlen($p_str_Content); + if ($l_int_PosStart > $i_int_LenContent) $l_int_PosStart = $i_int_LenContent; $l_int_PosStart = strpos($p_str_Content, $l_str_StartingTag, $l_int_PosStart); // no short code found, stop here if ($l_int_PosStart === false) { @@ -1124,11 +1181,17 @@ class MCI_Footnotes_Task { /** * TOOLTIP TRUNCATION * - * Truncate tooltip text on character count if enabled + * If the option is enabled, the tooltip text is truncated based on character count. + * This is equivalent to the WordPress default excerpt generation, i.e. without a + * custom excerpt and without a delimiter. But WordPress does word count, usually 55. * - * Read-on button: configurable instead of localizable + * Tooltips: Read-on button: Label: configurable instead of localizable * @since 2.1.0 * @datestamp 2020-11-08T2146+0100 + * @thanksto @rovanov + * @triggeredby https://wordpress.org/support/topic/offset-x-axis-and-offset-y-axis-does-not-working/ + * (The feature was not requested but it fixes an apparent design flaw of the plugin + * appearing when looking at a longer tooltip on the web page linked from this topic.) */ if (self::$a_bool_TooltipsEnabled && $l_bool_EnableExcerpt) { $l_str_DummyText = strip_tags($l_str_FootnoteText); @@ -1161,13 +1224,14 @@ class MCI_Footnotes_Task { } /** - * REFERRERS SUPERSCRIPT OPTIONAL + * REFERRERS ELEMENT SUPERSCRIPT OR BASELINE * - * Referrers: superscript becomes optional - * @thanksto @cwbayer bug report - * @link + * Referrers: new setting for vertical align: superscript (default) or baseline (optional), thanks to @cwbayer bug report * @since 2.1.1 * + * @reporter @cwbayer + * @bugreport https://wordpress.org/support/topic/footnote-number-in-text-superscript-disrupts-leading/ + * * define the HTML element to use for the referrers: */ if (MCI_Footnotes_Convert::toBool(MCI_Footnotes_Settings::instance()->get(MCI_Footnotes_Settings::C_BOOL_FOOTNOTES_REFERRER_SUPERSCRIPT_TAGS))) { @@ -1300,8 +1364,8 @@ class MCI_Footnotes_Task { * @since 1.5.0 * @return string * - * Edited for 2.0.6: fixed line breaking behavior in footnote # clusters - * Edited for 2.1.1: fixed fragment IDs and backlinks with combine identical turned on 2020-11-14T1808+0100 + * @edit 2.0.6 fix line breaking behavior in footnote number clusters + * @edit 2.1.1 fix fragment IDs and backlinks with combine identical turned on 2020-11-14T1808+0100 */ public function ReferenceContainer() { @@ -1426,7 +1490,13 @@ class MCI_Footnotes_Task { $l_str_Body = "\r\n\r\n"; - // REFERENCE CONTAINER TABLE ROW TEMPLATE LOAD + /** + * REFERENCE CONTAINER TABLE ROW TEMPLATE LOAD + * + * Reference container: option to restore 3-column layout (combining identicals turned off) + * @since 2.1.1 + * @datestamp 2020-11-16T2024+0100 + */ // when combining identical footnotes is turned on, another template is needed: if (MCI_Footnotes_Convert::toBool(MCI_Footnotes_Settings::instance()->get(MCI_Footnotes_Settings::C_BOOL_COMBINE_IDENTICAL_FOOTNOTES))) { @@ -1454,7 +1524,13 @@ class MCI_Footnotes_Task { } } - // whether to switch backlink symbol and footnote number: + /** + * SWITCH BACKLINK SYMBOL AND FOOTNOTE NUMBER + * + * Reference container: option to append symbol (prepended by default) (combining identicals turned off) + * @since 2.1.1 + * @datestamp 2020-11-16T2024+0100 + */ $l_bool_SymbolSwitch = MCI_Footnotes_Convert::toBool(MCI_Footnotes_Settings::instance()->get(MCI_Footnotes_Settings::C_BOOL_REFERENCE_CONTAINER_BACKLINK_SYMBOL_SWITCH)); // FILL IN THE TEMPLATE @@ -1713,6 +1789,9 @@ class MCI_Footnotes_Task { } + // call again for robustness when priority levels don’t match any longer: + self::$a_int_ScrollOffset = intval(MCI_Footnotes_Settings::instance()->get(MCI_Footnotes_Settings::C_INT_FOOTNOTES_SCROLL_OFFSET)); + // streamline: $l_bool_CollapseDefault = MCI_Footnotes_Convert::toBool(MCI_Footnotes_Settings::instance()->get(MCI_Footnotes_Settings::C_BOOL_REFERENCE_CONTAINER_COLLAPSE)); diff --git a/css/public.css b/css/public.css index 3121034..a15069f 100755 --- a/css/public.css +++ b/css/public.css @@ -6,9 +6,9 @@ * Since: 1.0 */ -/* Version: 2.5.3 +/* Version: 2.5.4 -Last modified: 2021-01-23T0120+0100 +Last modified: 2021-01-26T0831+0100 Classes recommended for Custom CSS are listed in diff --git a/footnotes.php b/footnotes.php index 87f8307..5a70627 100755 --- a/footnotes.php +++ b/footnotes.php @@ -4,12 +4,12 @@ Plugin URI: https://wordpress.org/plugins/footnotes/ Description: time to bring footnotes to your website! footnotes are known from offline publishing and everybody takes them for granted when reading a magazine. Author: Mark Cheret - Version: 2.5.3 + Version: 2.5.4d0 Author URI: http://cheret.de/plugins/footnotes-2/ Text Domain: footnotes Domain Path: /languages */ -define( 'C_STR_FOOTNOTES_VERSION', '2.5.3' ); +define( 'C_STR_FOOTNOTES_VERSION', '2.5.4d0' ); /* Copyright 2020 Mark Cheret (email: mark@cheret.de) diff --git a/readme.txt b/readme.txt index df6ea57..3e4be6f 100755 --- a/readme.txt +++ b/readme.txt @@ -1,5 +1,5 @@ === footnotes === -Contributors: mark.cheret, lolzim, dartiss, docteurfitness, martinneumannat, misfist, pewgeuges +Contributors: mark.cheret, lolzim, dartiss, docteurfitness, martinneumannat, misfist, rumperuu, spaceling, pewgeuges Tags: footnote, footnotes, bibliography, formatting, notes, Post, posts, reference, referencing Requires at least: 3.9 Tested up to: 5.6 @@ -79,6 +79,9 @@ Visit this swift write-up from a **footnotes** user by the name of **Southwest** == Changelog == += 2.5.4 = +- Bugfix: Tooltips: fix display in Popup Maker popups + = 2.5.3 = - Bugfix: URL wrap: exclude URL pattern as folder name in Wayback Machine URL, thanks to @rumperuu bug report @@ -87,7 +90,7 @@ Visit this swift write-up from a **footnotes** user by the name of **Southwest** - Bugfix: Localization: plugin language file name changes effective in version control system = 2.5.1 = -- Bugfix: Hooks: support for footnotes in Popup Maker popups, thanks to @squatcher bug report +- Bugfix: Hooks: support footnotes in Popup Maker popups, thanks to @squatcher bug report - Bugfix: Reference container: click on label expands but also collapses, thanks to @ahmadword bug report - Bugfix: Reference container: Label: cursor takes pointer shape, thanks to @ahmadword bug report - Bugfix: Dashboard: Custom CSS: mention validity of legacy while visible, thanks to @rkupadhya bug report @@ -97,7 +100,7 @@ Visit this swift write-up from a **footnotes** user by the name of **Southwest** = 2.5.0 = - Add: Customization: Enable template location stack, thanks to @misfist source file contribution -- Bugfix: Hooks: support the term_description hook, thanks to @vitaefit bug report, thanks to @misfist code contribution +- Bugfix: Hooks: support footnotes on category pages, thanks to @vitaefit bug report, thanks to @misfist code contribution - Bugfix: Shortcode syntax validation: exclude certain cases involving scripts, thanks to @andreasra bug report - Bugfix: Shortcode syntax validation: complete message with hint about setting, thanks to @andreasra bug report - Bugfix: Shortcode syntax validation: limit length of quoted string to 300 characters, thanks to @andreasra bug report @@ -106,8 +109,8 @@ Visit this swift write-up from a **footnotes** user by the name of **Southwest** = 2.4.0 = - Add: Shortcodes: syntax validation for balanced footnote start and end tag short codes -- Bugfix: optimize template load and process according to settings, thanks to @misfist code contribution -- Bugfix: initialize hard link address variable to empty to fix 'undefined variable' bug, thanks to @a223123131 bug report +- Bugfix: Performance: optimize template load and process according to settings, thanks to @misfist code contribution +- Bugfix: Process: initialize hard link address variable to empty to fix 'undefined variable' bug, thanks to @a223123131 bug report - Bugfix: Reference container: Label: set empty label to U+202F NNBSP for more robustness, thanks to @lukashuggenberg bug report - Bugfix: Scroll offset: initialize to safer one third window height for more robustness, thanks to @lukashuggenberg bug report - Bugfix: Shortcodes: Dashboard: remove new option involving HTML comment tags only usable in source mode @@ -242,18 +245,18 @@ Visit this swift write-up from a **footnotes** user by the name of **Southwest** = 2.1.1 = - Bugfix: Combining identical footnotes: fix dead links and ensure referrer-backlink bijectivity, thanks to @happyches bug report +- Bugfix: Dashboard: priority level setting for the_content hook, thanks to @imeson bug report - Update: Libraries: jQuery Tools: redact jQuery.browser function use in js/jquery.tools.min.js - Update: Libraries: jQuery Tools: complete minification - Bugfix: Libraries: make script loads depend on tooltip implementation option - Bugfix: Libraries: jQuery UI: properly pick the libraries registered by WordPress needed for tooltips -- Bugfix: Reference container: fix relative positioning by priority level setting, thanks to june01 @spaceling @imeson bug reports - Bugfix: Reference container: fix start pages by making its display optional, thanks to @dragon013 bug report - Bugfix: Reference container: Backlink symbol: select box to disable instead of space character - Bugfix: Reference container: Footnote number links: disable bottom border for theme compatibility -- Bugfix: Reference container: option to restore 3-column layout when combined are turned off -- Bugfix: Reference container: option to APpend symbol in 2-column when combined are turned off +- Bugfix: Reference container: option to restore 3-column layout (combining identicals turned off) +- Bugfix: Reference container: option to append symbol (prepended by default) (combining identicals turned off) - Bugfix: Reference container: Table rows: fix top and bottom padding -- Bugfix: Referrers: superscript becomes optional, thanks to @cwbayer bug report +- Bugfix: Referrers: new setting for vertical align: superscript (default) or baseline (optional), thanks to @cwbayer bug report - Bugfix: Referrers: line height 0 to fix superscript, thanks to @cwbayer bug report - Bugfix: Tooltips: optional alternative JS implementation with CSS transitions to fix configuration-related outage - Bugfix: Tooltips: add delay (400ms) before fade-out to fix UX wrt links and Read-on button @@ -261,7 +264,7 @@ Visit this swift write-up from a **footnotes** user by the name of **Southwest** - Bugfix: Formatting: disable overline showing in some themes on hovered backlinks = 2.1.0 = -- Add: UI: Tooltip: made 'Continue reading' button label customizable +- Add: Tooltips: Read-on button: Label: configurable instead of localizable - Bugfix: Referrers: disabled bottom border for theme compatibility - Update: Accessibility: added 'speaker-mute' class to reference container - Bugfix: Dashboard: Layout: added named selectors to limit applicability of styles @@ -277,13 +280,13 @@ Visit this swift write-up from a **footnotes** user by the name of **Southwest** - Update: Settings defaults adjusted for better and more up-to-date tooltip layout = 2.0.6 = -- Update: Infinite scroll: debug autoload by adding post ID, thanks to @docteurfitness code contribution +- Bugfix: Infinite scroll: debug autoload by adding post ID, thanks to @docteurfitness code contribution - Bugfix: Referrers: deleted vertical align tweaks, for cross-theme and user agent compatibility - Bugfix: Reference container: fixed line breaking behavior in footnote # clusters - Bugfix: Reference container: auto-extending column to fit widest, to fix display with short note texts - Bugfix: Reference container: IDs: slightly increased left padding - Bugfix: Translations: fixed spelling error and erroneously changed word in en_GB and en_US -- Update: Typesetting: discarded the dot after footnote numbers as not localizable (should be optional) +- Bugfix: Typesetting: discarded the dot after footnote numbers as not localizable (should be optional) - Bugfix: Reference container: Collapse button fully clickable, not sign only - Bugfix: Reference container: Collapse button 'collapse' with minus sign not hyphen-minus - Update: Tooltips: set display predelay to 0 for responsiveness (was 800 since 2.0.0, 400 before) @@ -292,7 +295,7 @@ Visit this swift write-up from a **footnotes** user by the name of **Southwest** - Update: Scroll offset: raise percentage from 12% to a safer 20% inner window height, by lack of configurability = 2.0.5 = -- Bugfix: Get references container close to content, not below all other features, by priority level 10 +- Bugfix: Reference container: fix relative position through priority level, thanks to @june01 @imeson bug reports, thanks to @spaceling code contribution - Bugfix: Public style sheet: Reference container: unset width of text column to fix site issues - Update: Enable all hooks by default to prevent footnotes from seeming broken in post titles - Bugfix: Restore cursor shape pointer over 'Continue reading' button after hyperlink removal