urgent release 2.4.0

git-svn-id: https://plugins.svn.wordpress.org/footnotes/trunk@2449988 b8457f37-d9ea-0310-8a92-e5e31aec5664
This commit is contained in:
pewgeuges 2021-01-04 15:51:57 +00:00
parent 82cb6d5268
commit 84981721d7
4 changed files with 63 additions and 33 deletions

View file

@ -8,7 +8,7 @@
* *
* Edited for v2.0.0 and following. * Edited for v2.0.0 and following.
* *
* Last modified: 2021-01-03T2056+0100 * Last modified: 2021-01-04T1623+0100
* *
* @since 2.0.5 Autoload / infinite scroll support added thanks to code from @docteurfitness * @since 2.0.5 Autoload / infinite scroll support added thanks to code from @docteurfitness
* @see <https://wordpress.org/support/topic/auto-load-post-compatibility-update/> * @see <https://wordpress.org/support/topic/auto-load-post-compatibility-update/>
@ -68,6 +68,10 @@
* @since 2.3.0 swap Custom CSS migration Boolean from 'migration complete' to 'show legacy' 2020-12-27T1243+0100 * @since 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 * @since 2.4.0 syntax validation for balanced footnote start and end tags 2021-01-01T0227+0100
* @since 2.4.0 scroll offset to a safety default value 34 right in the properties section 2021-01-03T2056+0100 * @since 2.4.0 scroll offset to a safety default value 34 right in the properties section 2021-01-03T2056+0100
* @since 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
* @since 2.4.0 optimize template load and process, thanks to @misfist 2021-01-04T1355+0100
* @since 2.4.0 initialize hard link address as empty to fix undefined variable bug, thanks to @a223123131 2021-01-04T1622+0100
*/ */
// If called directly, abort: // If called directly, abort:
@ -143,6 +147,17 @@ class MCI_Footnotes_Task {
*/ */
public static $l_int_ReferenceContainerId = 1; public static $l_int_ReferenceContainerId = 1;
/**
* Load tooltip inline script only if jQuery tooltips are enabled
* Streamline process depending on tooltip enabled status
*
* @author Patrizia Lutz @misfist
*
* @since 2.4.0d0
*/
public static $l_bool_TooltipsEnabled = false;
public static $l_bool_AlternativeTooltipsEnabled = false;
/** /**
* Hard links for AMP * Hard links for AMP
* *
@ -154,8 +169,9 @@ class MCI_Footnotes_Task {
* @since 2.3.0 * @since 2.3.0
* @var bool|str|int * @var bool|str|int
* *
* @since 2.4.0 scroll offset to a safety default value 34 right here 2021-01-03T2055+0100 * @since 2.4.0 initialize scroll offset to a safety default value 34 right here 2021-01-03T2055+0100
* Some websites are using really high fixed headers not contracting at scroll. * By accident, this variable may not be updated with settings storage.
* Websites may use high fixed headers not contracting at scroll.
*/ */
public static $l_bool_HardLinksEnable = false; public static $l_bool_HardLinksEnable = false;
public static $l_str_ReferrerLinkSlug = 'r'; public static $l_str_ReferrerLinkSlug = 'r';
@ -409,10 +425,10 @@ class MCI_Footnotes_Task {
} }
// tooltips: // tooltips:
$l_bool_TooltipsEnabled = MCI_Footnotes_Convert::toBool(MCI_Footnotes_Settings::instance()->get(MCI_Footnotes_Settings::C_BOOL_FOOTNOTES_MOUSE_OVER_BOX_ENABLED)); self::$l_bool_TooltipsEnabled = MCI_Footnotes_Convert::toBool(MCI_Footnotes_Settings::instance()->get(MCI_Footnotes_Settings::C_BOOL_FOOTNOTES_MOUSE_OVER_BOX_ENABLED));
$l_bool_AlternativeTooltipsEnabled = MCI_Footnotes_Convert::toBool(MCI_Footnotes_Settings::instance()->get(MCI_Footnotes_Settings::C_BOOL_FOOTNOTES_MOUSE_OVER_BOX_ALTERNATIVE)); self::$l_bool_AlternativeTooltipsEnabled = MCI_Footnotes_Convert::toBool(MCI_Footnotes_Settings::instance()->get(MCI_Footnotes_Settings::C_BOOL_FOOTNOTES_MOUSE_OVER_BOX_ALTERNATIVE));
if ($l_bool_TooltipsEnabled) { if (self::$l_bool_TooltipsEnabled) {
echo '.footnote_tooltip {'; echo '.footnote_tooltip {';
@ -467,7 +483,7 @@ class MCI_Footnotes_Task {
} }
// alternative tooltips: // alternative tooltips:
if ( ! $l_bool_AlternativeTooltipsEnabled) { if ( ! self::$l_bool_AlternativeTooltipsEnabled) {
// tooltip position: // tooltip position:
$l_int_MaxWidth = MCI_Footnotes_Settings::instance()->get(MCI_Footnotes_Settings::C_INT_FOOTNOTES_MOUSE_OVER_BOX_MAX_WIDTH); $l_int_MaxWidth = MCI_Footnotes_Settings::instance()->get(MCI_Footnotes_Settings::C_INT_FOOTNOTES_MOUSE_OVER_BOX_MAX_WIDTH);
@ -535,7 +551,7 @@ class MCI_Footnotes_Task {
echo "\r\n</style>\r\n"; echo "\r\n</style>\r\n";
// alternative tooltip script printed formatted not minified: // alternative tooltip script printed formatted not minified:
if ($l_bool_AlternativeTooltipsEnabled) { if (self::$l_bool_AlternativeTooltipsEnabled) {
?> ?>
<script content="text/javascript"> <script content="text/javascript">
function footnoteTooltipShow(footnoteTooltipId) { function footnoteTooltipShow(footnoteTooltipId) {
@ -816,13 +832,19 @@ class MCI_Footnotes_Task {
// load referrer templates if footnotes text not hidden: // load referrer templates if footnotes text not hidden:
if (!$p_bool_HideFootnotesText) { if (!$p_bool_HideFootnotesText) {
// load two template files:
if (MCI_Footnotes_Convert::toBool(MCI_Footnotes_Settings::instance()->get(MCI_Footnotes_Settings::C_BOOL_FOOTNOTES_MOUSE_OVER_BOX_ALTERNATIVE))) { // load footnote referrer template file:
if (self::$l_bool_AlternativeTooltipsEnabled) {
$l_obj_Template = new MCI_Footnotes_Template(MCI_Footnotes_Template::C_STR_PUBLIC, "footnote-alternative"); $l_obj_Template = new MCI_Footnotes_Template(MCI_Footnotes_Template::C_STR_PUBLIC, "footnote-alternative");
} else { } else {
$l_obj_Template = new MCI_Footnotes_Template(MCI_Footnotes_Template::C_STR_PUBLIC, "footnote"); $l_obj_Template = new MCI_Footnotes_Template(MCI_Footnotes_Template::C_STR_PUBLIC, "footnote");
} }
// load tooltip inline script if jQuery tooltips are enabled:
if (self::$l_bool_TooltipsEnabled && ! self::$l_bool_AlternativeTooltipsEnabled) {
$l_obj_TemplateTooltip = new MCI_Footnotes_Template(MCI_Footnotes_Template::C_STR_PUBLIC, "tooltip"); $l_obj_TemplateTooltip = new MCI_Footnotes_Template(MCI_Footnotes_Template::C_STR_PUBLIC, "tooltip");
}
} else { } else {
$l_obj_Template = null; $l_obj_Template = null;
$l_obj_TemplateTooltip = null; $l_obj_TemplateTooltip = null;
@ -911,11 +933,13 @@ class MCI_Footnotes_Task {
$l_int_Index = MCI_Footnotes_Convert::Index($l_int_FootnoteIndex, MCI_Footnotes_Settings::instance()->get(MCI_Footnotes_Settings::C_STR_FOOTNOTES_COUNTER_STYLE)); $l_int_Index = MCI_Footnotes_Convert::Index($l_int_FootnoteIndex, MCI_Footnotes_Settings::instance()->get(MCI_Footnotes_Settings::C_STR_FOOTNOTES_COUNTER_STYLE));
// display only a truncated footnote text if option enabled: // display only a truncated footnote text if option enabled:
$l_str_ExcerptText = $l_str_FootnoteText;
$l_bool_EnableExcerpt = MCI_Footnotes_Convert::toBool(MCI_Footnotes_Settings::instance()->get(MCI_Footnotes_Settings::C_BOOL_FOOTNOTES_MOUSE_OVER_BOX_EXCERPT_ENABLED)); $l_bool_EnableExcerpt = MCI_Footnotes_Convert::toBool(MCI_Footnotes_Settings::instance()->get(MCI_Footnotes_Settings::C_BOOL_FOOTNOTES_MOUSE_OVER_BOX_EXCERPT_ENABLED));
$l_int_MaxLength = intval(MCI_Footnotes_Settings::instance()->get(MCI_Footnotes_Settings::C_INT_FOOTNOTES_MOUSE_OVER_BOX_EXCERPT_LENGTH)); $l_int_MaxLength = intval(MCI_Footnotes_Settings::instance()->get(MCI_Footnotes_Settings::C_INT_FOOTNOTES_MOUSE_OVER_BOX_EXCERPT_LENGTH));
if ($l_bool_EnableExcerpt) { // define excerpt text as footnote text by default:
$l_str_ExcerptText = $l_str_FootnoteText;
if (self::$l_bool_TooltipsEnabled && $l_bool_EnableExcerpt) {
$l_str_DummyText = strip_tags($l_str_FootnoteText); $l_str_DummyText = strip_tags($l_str_FootnoteText);
if (is_int($l_int_MaxLength) && strlen($l_str_DummyText) > $l_int_MaxLength) { if (is_int($l_int_MaxLength) && strlen($l_str_DummyText) > $l_int_MaxLength) {
$l_str_ExcerptText = substr($l_str_DummyText, 0, $l_int_MaxLength); $l_str_ExcerptText = substr($l_str_DummyText, 0, $l_int_MaxLength);
@ -1006,7 +1030,7 @@ class MCI_Footnotes_Task {
"index" => $l_int_Index, "index" => $l_int_Index,
"after" => MCI_Footnotes_Settings::instance()->get(MCI_Footnotes_Settings::C_STR_FOOTNOTES_STYLING_AFTER), "after" => MCI_Footnotes_Settings::instance()->get(MCI_Footnotes_Settings::C_STR_FOOTNOTES_STYLING_AFTER),
"anchor-element" => $l_str_ReferrerAnchorElement, "anchor-element" => $l_str_ReferrerAnchorElement,
"text" => MCI_Footnotes_Convert::toBool(MCI_Footnotes_Settings::instance()->get(MCI_Footnotes_Settings::C_BOOL_FOOTNOTES_MOUSE_OVER_BOX_ENABLED)) ? $l_str_ExcerptText : "", "text" => self::$l_bool_TooltipsEnabled ? $l_str_ExcerptText : "",
) )
); );
$l_str_FootnoteReplaceText = $l_obj_Template->getContent(); $l_str_FootnoteReplaceText = $l_obj_Template->getContent();
@ -1014,11 +1038,9 @@ class MCI_Footnotes_Task {
// reset the template // reset the template
$l_obj_Template->reload(); $l_obj_Template->reload();
if ( // if standard tooltips are enabled but alternative are not:
// standard tooltip is enabled: if (self::$l_bool_TooltipsEnabled && ! self::$l_bool_AlternativeTooltipsEnabled) {
MCI_Footnotes_Convert::toBool(MCI_Footnotes_Settings::instance()->get(MCI_Footnotes_Settings::C_BOOL_FOOTNOTES_MOUSE_OVER_BOX_ENABLED)) &&
!MCI_Footnotes_Convert::toBool(MCI_Footnotes_Settings::instance()->get(MCI_Footnotes_Settings::C_BOOL_FOOTNOTES_MOUSE_OVER_BOX_ALTERNATIVE))
) {
$l_int_OffsetY = intval(MCI_Footnotes_Settings::instance()->get(MCI_Footnotes_Settings::C_INT_FOOTNOTES_MOUSE_OVER_BOX_OFFSET_Y)); $l_int_OffsetY = intval(MCI_Footnotes_Settings::instance()->get(MCI_Footnotes_Settings::C_INT_FOOTNOTES_MOUSE_OVER_BOX_OFFSET_Y));
$l_int_OffsetX = intval(MCI_Footnotes_Settings::instance()->get(MCI_Footnotes_Settings::C_INT_FOOTNOTES_MOUSE_OVER_BOX_OFFSET_X)); $l_int_OffsetX = intval(MCI_Footnotes_Settings::instance()->get(MCI_Footnotes_Settings::C_INT_FOOTNOTES_MOUSE_OVER_BOX_OFFSET_X));
$l_int_FadeInDelay = intval(MCI_Footnotes_Settings::instance()->get(MCI_Footnotes_Settings::C_INT_MOUSE_OVER_BOX_FADE_IN_DELAY )); $l_int_FadeInDelay = intval(MCI_Footnotes_Settings::instance()->get(MCI_Footnotes_Settings::C_INT_MOUSE_OVER_BOX_FADE_IN_DELAY ));
@ -1254,6 +1276,9 @@ class MCI_Footnotes_Task {
// INDEX COLUMN WITH ONE BACKLINK PER TABLE ROW // INDEX COLUMN WITH ONE BACKLINK PER TABLE ROW
// if enabled, and for the case the footnote is single, compose hard link: // if enabled, and for the case the footnote is single, compose hard link:
// define variable as empty for the reference container if not enabled:
$l_str_HardLinkAddress = '';
if (self::$l_bool_HardLinksEnable) { if (self::$l_bool_HardLinksEnable) {
// compose fragment ID anchor with offset, for use in reference container, an // compose fragment ID anchor with offset, for use in reference container, an
@ -1459,6 +1484,9 @@ class MCI_Footnotes_Task {
// streamline: // streamline:
$l_bool_CollapseDefault = MCI_Footnotes_Convert::toBool(MCI_Footnotes_Settings::instance()->get(MCI_Footnotes_Settings::C_BOOL_REFERENCE_CONTAINER_COLLAPSE)); $l_bool_CollapseDefault = MCI_Footnotes_Convert::toBool(MCI_Footnotes_Settings::instance()->get(MCI_Footnotes_Settings::C_BOOL_REFERENCE_CONTAINER_COLLAPSE));
// prevent empty from being less robust:
$l_str_ReferenceContainerLabel = MCI_Footnotes_Settings::instance()->get(MCI_Footnotes_Settings::C_STR_REFERENCE_CONTAINER_NAME);
// load 'templates/public/reference-container.html': // load 'templates/public/reference-container.html':
$l_obj_TemplateContainer = new MCI_Footnotes_Template(MCI_Footnotes_Template::C_STR_PUBLIC, "reference-container"); $l_obj_TemplateContainer = new MCI_Footnotes_Template(MCI_Footnotes_Template::C_STR_PUBLIC, "reference-container");
$l_obj_TemplateContainer->replace( $l_obj_TemplateContainer->replace(
@ -1466,7 +1494,7 @@ class MCI_Footnotes_Task {
"post_id" => self::$l_int_PostId, "post_id" => self::$l_int_PostId,
"container_id" => self::$l_int_ReferenceContainerId, "container_id" => self::$l_int_ReferenceContainerId,
"element" => MCI_Footnotes_Settings::instance()->get(MCI_Footnotes_Settings::C_STR_REFERENCE_CONTAINER_LABEL_ELEMENT), "element" => MCI_Footnotes_Settings::instance()->get(MCI_Footnotes_Settings::C_STR_REFERENCE_CONTAINER_LABEL_ELEMENT),
"name" => MCI_Footnotes_Settings::instance()->get(MCI_Footnotes_Settings::C_STR_REFERENCE_CONTAINER_NAME), "name" => empty($l_str_ReferenceContainerLabel) ? '&#x202F;' : $l_str_ReferenceContainerLabel,
"button-style" => !$l_bool_CollapseDefault ? 'display: none;' : '', "button-style" => !$l_bool_CollapseDefault ? 'display: none;' : '',
"style" => $l_bool_CollapseDefault ? 'display: none;' : '', "style" => $l_bool_CollapseDefault ? 'display: none;' : '',
"content" => $l_str_Body, "content" => $l_str_Body,

View file

@ -4,12 +4,12 @@
Plugin URI: https://wordpress.org/plugins/footnotes/ 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. 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 Author: Mark Cheret
Version: 2.4.0d0 Version: 2.4.0
Author URI: http://cheret.de/plugins/footnotes-2/ Author URI: http://cheret.de/plugins/footnotes-2/
Text Domain: footnotes Text Domain: footnotes
Domain Path: /languages Domain Path: /languages
*/ */
define( 'FOOTNOTES_VERSION', '2.4.0d0' ); define( 'FOOTNOTES_VERSION', '2.4.0' );
/* /*
Copyright 2020 Mark Cheret (email: mark@cheret.de) Copyright 2020 Mark Cheret (email: mark@cheret.de)

View file

@ -4,7 +4,7 @@ Tags: footnote, footnotes, bibliography, formatting, notes, Post, posts, referen
Requires at least: 3.9 Requires at least: 3.9
Tested up to: 5.6 Tested up to: 5.6
Requires PHP: 5.6 Requires PHP: 5.6
Stable Tag: 2.3.0 Stable Tag: 2.4.0
License: GPLv3 or later License: GPLv3 or later
License URI: http://www.gnu.org/licenses/gpl-3.0.html License URI: http://www.gnu.org/licenses/gpl-3.0.html
@ -81,13 +81,16 @@ Visit this swift write-up from a **footnotes** user by the name of **Southwest**
== Changelog == == Changelog ==
= 2.4.0 = = 2.4.0 =
- Bugfix: initialize hard link address as empty to fix undefined variable bug, thanks to @a223123131
- Bugfix: Shortcodes: Dashboard: warning about '&gt;' escapement disruption in WordPress Block Editor - Bugfix: Shortcodes: Dashboard: warning about '&gt;' escapement disruption in WordPress Block Editor
- Bugfix: Shortcodes: Dashboard: remove new option involving HTML comment tags only usable in source mode - Bugfix: Shortcodes: Dashboard: remove new option involving HTML comment tags only usable in source mode
- Add: Customization: support for custom templates in active theme, thanks to @misfist - Add: Customization: Enable template location stack, contributed by @misfist
- Bugfix: optimize template load and process according to settings, thanks to @misfist
- Add: Shortcodes: syntax validation for balanced footnote start and end tag short codes - Add: Shortcodes: syntax validation for balanced footnote start and end tag short codes
- Add: Reference container: Row borders: more options for border width, style and color - Bugfix: Reference container: Row borders: adapt left padding to the presence of an optional left border
- Bugfix: Reference container: Row borders: adapt left padding to the presence of a left border - Bugfix: Reference container: Label: set empty label to U+202F NNBSP for more robustness, thanks to @lukashuggenberg
- Bugfix: Reference container: add class footnote_plugin_symbol to disambiguate repurposed class footnote_plugin_link - Bugfix: Scroll offset: initialize to safer one third window height for more robustness, thanks to @lukashuggenberg
- Bugfix: Reference container: add class 'footnote_plugin_symbol' to disambiguate repurposed class footnote_plugin_link
= 2.3.0 = = 2.3.0 =
- Add: optional hard links in referrers and backlinks for AMP compatibility, thanks to @psykonevro and @martinneumannat - Add: optional hard links in referrers and backlinks for AMP compatibility, thanks to @psykonevro and @martinneumannat

View file

@ -1,7 +1,6 @@
note-for-developers.txt note-for-developers.txt
2020-12-19T0609+0100 2020-12-19T0609+0100
Last modified: 2021-01-01T2249+0100
Last modified: 2021-01-02T1207+0100
Footnotes plugin for WordPress, v2.2.6 and later Footnotes plugin for WordPress, v2.2.6 and later
@ -11,7 +10,7 @@ Support for custom templates
Since v2.2.6, Footnotes supports custom templates. Since v2.2.6, Footnotes supports custom templates.
Custom templates may be loaded from a sibling folder 'footnotes-custom' Custom templates may be loaded from a sibling folder 'footnotes-custom'
or since v2.4.0 from a folder 'templates/footnotes/' in the active theme. or since v2.3.1 from a folder 'templates/footnotes/' in the active theme.
Priority order: Priority order:
1. active theme 1. active theme