diff --git a/class/init.php b/class/init.php index cd8242c..86eca9e 100644 --- a/class/init.php +++ b/class/init.php @@ -12,7 +12,7 @@ * Edited for v2.0.3: Added style sheet versioning 2020-10-29T1413+0100 * Edited for v2.0.4: Added jQuery UI from WordPress 2020-11-01T1902+0100 * - * Last modified: 2020-11-05T0638+0100 + * Last modified: 2020-11-06T1511+0100 */ @@ -65,14 +65,14 @@ class MCI_Footnotes { * * @author Stefan Herndler * @since 1.5.0 - * - * Edited for 1.6.5: replaced deprecated function create_function() - * - * Contributed by Felipe Lavín Z. Thankfully acknowledged. - * - * create_function() was deprecated in PHP 7.2: - * - * See also: + * + * Edited for 1.6.5: replaced deprecated function create_function() + * + * Contributed by Felipe Lavín Z. Thankfully acknowledged. + * + * create_function() was deprecated in PHP 7.2: + * + * See also: */ public function initializeWidgets() { register_widget("MCI_Footnotes_Widget_ReferenceContainer"); @@ -125,7 +125,13 @@ class MCI_Footnotes { // Add jQuery tools: wp_enqueue_script('mci-footnotes-js-jquery-tools', plugins_url('../js/jquery.tools.min.js', __FILE__)); - // IMPORTANT: up-to-date plugin version number for cache busting. - wp_enqueue_style('mci-footnotes-css-public', plugins_url('../css/public.css', __FILE__), '', '2.0.5rc1'); + // IMPORTANT: up-to-date plugin version number for cache busting: + wp_enqueue_style( + 'mci-footnotes-css-public', + plugins_url('../css/public.css', __FILE__), + '', + '2.0.8' + ); } + } diff --git a/class/settings.php b/class/settings.php index ec2e764..d8f3dd5 100644 --- a/class/settings.php +++ b/class/settings.php @@ -6,13 +6,15 @@ * @author Stefan Herndler * @since 1.5.0 14.09.14 10:43 * - * Edited for v2.0.4 2020-11-02T2115+0100 + * Edited for: + * v2.0.4 2020-11-02T2115+0100 + * v2.0.7 2020-11-06T1342+0100 */ /** * The class loads all Settings from each WordPress Settings container. - * It a Setting is not defined yet the default value will be used. + * It a Setting is not defined yet, the default value will be used. * Each Setting will be validated and sanitized when loaded from the container. * * @author Stefan Herndler @@ -165,7 +167,7 @@ class MCI_Footnotes_Settings { const C_BOOL_FOOTNOTES_MOUSE_OVER_BOX_EXCERPT_ENABLED = "footnote_inputfield_custom_mouse_over_box_excerpt_enabled"; /** - * Settings Container Key for the mouse-over box to define the max. length of the enabled expert. + * Settings Container Key for the mouse-over box to define the max. length of the enabled excerpt. * * @author Stefan Herndler * @since 1.5.4 @@ -388,34 +390,64 @@ class MCI_Footnotes_Settings { self::C_BOOL_FOOTNOTES_EXPERT_MODE => 'no' ), "footnotes_storage_custom" => array( - self::C_STR_FOOTNOTES_STYLING_BEFORE => '', - self::C_STR_FOOTNOTES_STYLING_AFTER => ')', - self::C_BOOL_FOOTNOTES_MOUSE_OVER_BOX_ENABLED => 'yes', - self::C_BOOL_FOOTNOTES_MOUSE_OVER_BOX_EXCERPT_ENABLED => 'no', - self::C_INT_FOOTNOTES_MOUSE_OVER_BOX_EXCERPT_LENGTH => 150, - self::C_STR_FOOTNOTES_MOUSE_OVER_BOX_POSITION => 'top right', - self::C_INT_FOOTNOTES_MOUSE_OVER_BOX_OFFSET_X => 10, - self::C_INT_FOOTNOTES_MOUSE_OVER_BOX_OFFSET_Y => 10, - self::C_STR_FOOTNOTES_MOUSE_OVER_BOX_COLOR => '', - self::C_STR_FOOTNOTES_MOUSE_OVER_BOX_BACKGROUND => '#fff7a7', + + // The default footnote referrer surroundings should be square brackets: + // * as in English typesetting; + // * for better UX thanks to a more button-like appearance; + // * for stylistic consistency with the expand-collapse button + self::C_STR_FOOTNOTES_STYLING_BEFORE => '[', + self::C_STR_FOOTNOTES_STYLING_AFTER => ']', + + self::C_BOOL_FOOTNOTES_MOUSE_OVER_BOX_ENABLED => 'yes', + + // The mouse over content truncation should be enabled by default + // to raise awareness of the functionality and to prevent the screen + // from being filled at mouse-over, and to allow the Continue reading: + self::C_BOOL_FOOTNOTES_MOUSE_OVER_BOX_EXCERPT_ENABLED => 'yes', + + // The truncation length is raised from 150 to 200 chars: + self::C_INT_FOOTNOTES_MOUSE_OVER_BOX_EXCERPT_LENGTH => 200, + + // The default position should not be lateral because of the risk + // the box gets squeezed between note anchor at line end and window edge, + // and top because reading at the bottom of the window is more likely: + self::C_STR_FOOTNOTES_MOUSE_OVER_BOX_POSITION => 'top center', + + self::C_INT_FOOTNOTES_MOUSE_OVER_BOX_OFFSET_X => 0, + // The vertical offset must be negative for the box not to cover + // the current line of text (web coordinates origin is top left): + self::C_INT_FOOTNOTES_MOUSE_OVER_BOX_OFFSET_Y => -7, + + self::C_STR_FOOTNOTES_MOUSE_OVER_BOX_COLOR => '', + // The mouse over box shouldn’t feature a colored background + // by default, due to diverging user preferences. White is neutral: + self::C_STR_FOOTNOTES_MOUSE_OVER_BOX_BACKGROUND => '#ffffff', + self::C_INT_FOOTNOTES_MOUSE_OVER_BOX_BORDER_WIDTH => 1, - self::C_STR_FOOTNOTES_MOUSE_OVER_BOX_BORDER_COLOR => '#cccc99', - self::C_INT_FOOTNOTES_MOUSE_OVER_BOX_BORDER_RADIUS => 3, - self::C_INT_FOOTNOTES_MOUSE_OVER_BOX_MAX_WIDTH => 0, + self::C_STR_FOOTNOTES_MOUSE_OVER_BOX_BORDER_COLOR => '#cccc99', + + // The mouse over box corners mustn’t be rounded as that is outdated: + self::C_INT_FOOTNOTES_MOUSE_OVER_BOX_BORDER_RADIUS => 0, + + // The width should be limited to start with, for the box to have shape: + self::C_INT_FOOTNOTES_MOUSE_OVER_BOX_MAX_WIDTH => 450, + self::C_STR_FOOTNOTES_MOUSE_OVER_BOX_SHADOW_COLOR => '#666666', self::C_STR_HYPERLINK_ARROW => '↑', self::C_STR_HYPERLINK_ARROW_USER_DEFINED => '', self::C_STR_CUSTOM_CSS => '' ), - // These should all be enabled by default. + // These should all be enabled by default to prevent users from + // thinking at first that the feature is broken in post titles. // See + // In titles, footnotes are functionally pointless in WordPress. "footnotes_storage_expert" => array( self::C_BOOL_EXPERT_LOOKUP_THE_TITLE => 'yes', self::C_BOOL_EXPERT_LOOKUP_THE_CONTENT => 'yes', self::C_BOOL_EXPERT_LOOKUP_THE_EXCERPT => 'yes', self::C_BOOL_EXPERT_LOOKUP_WIDGET_TITLE => 'yes', self::C_BOOL_EXPERT_LOOKUP_WIDGET_TEXT => 'yes', - self::C_BOOL_EXPERT_LOOKUP_THE_POST => 'yes' + self::C_BOOL_EXPERT_LOOKUP_THE_POST => ''//NEVER ENABLE THIS HOOK!!!!! ) ); diff --git a/class/task.php b/class/task.php index 5586204..4d1a0bc 100644 --- a/class/task.php +++ b/class/task.php @@ -11,7 +11,7 @@ * Edited for v2.0.5: Autoload / infinite scroll support added thanks to code from * @docteurfitness * - * Last modified 2020-11-05T0524+0100 + * Last modified 2020-11-06T1516+0100 */ // If called directly, abort: @@ -58,17 +58,16 @@ class MCI_Footnotes_Task { * @author Stefan Herndler * @since 1.5.0 * - * Edited for v2.0.5 2020-11-02T0330+0100 2020-11-04T2006+0100 + * Edited for v2.0.5 through v2.0.7 2020-11-02T0330+0100..2020-11-06T1344+0100 * * Explicitly setting all priority to (default) "10" instead of lowest "PHP_INT_MAX", * especially for the_content, makes the footnotes reference container display * beneath the content and above other features added by other plugins. * Requested by users: * Documentation: - * - * But then, the blog engine calls this plugin in the editor, as reported in: - * - * + * + * But this change is suspected to cause issues and needs to be assessed! + * See */ public function registerHooks() { // append custom css to the header @@ -488,9 +487,15 @@ class MCI_Footnotes_Task { if (empty($l_str_FootnoteText)) { continue; } - // get footnote index - $l_str_FirstFootnoteIndex = ($l_str_Index + 1); - $l_str_FootnoteIndex = MCI_Footnotes_Convert::Index(($l_str_Index + 1), MCI_Footnotes_Settings::instance()->get(MCI_Footnotes_Settings::C_STR_FOOTNOTES_COUNTER_STYLE)); + // generate content of footnote index cell + $l_str_FirstFootnoteIndex = ($l_str_Index + 1); + // wrap each index # in a white-space:nowrap span + $l_str_FootnoteArrowIndex = ''; + // wrap the arrow in a @media print { display:hidden } span + $l_str_FootnoteArrowIndex .= '' . $l_str_Arrow . ' '; + // get the index; add support for legacy index placeholder: + $l_str_FootnoteArrowIndex .= MCI_Footnotes_Convert::Index(($l_str_Index + 1), MCI_Footnotes_Settings::instance()->get(MCI_Footnotes_Settings::C_STR_FOOTNOTES_COUNTER_STYLE)); + $l_str_FootnoteIndex = MCI_Footnotes_Convert::Index(($l_str_Index + 1), MCI_Footnotes_Settings::instance()->get(MCI_Footnotes_Settings::C_STR_FOOTNOTES_COUNTER_STYLE)); // check if it isn't the last footnote in the array if ($l_str_FirstFootnoteIndex < count(self::$a_arr_Footnotes) && MCI_Footnotes_Convert::toBool(MCI_Footnotes_Settings::instance()->get(MCI_Footnotes_Settings::C_BOOL_COMBINE_IDENTICAL_FOOTNOTES))) { @@ -501,18 +506,24 @@ class MCI_Footnotes_Task { // set the further footnote as empty so it won't be displayed later self::$a_arr_Footnotes[$l_str_CheckIndex] = ""; // add the footnote index to the actual index - $l_str_FootnoteIndex .= ", " . MCI_Footnotes_Convert::Index(($l_str_CheckIndex + 1), MCI_Footnotes_Settings::instance()->get(MCI_Footnotes_Settings::C_STR_FOOTNOTES_COUNTER_STYLE)); + $l_str_FootnoteArrowIndex .= ', ' . MCI_Footnotes_Convert::Index(($l_str_CheckIndex + 1), MCI_Footnotes_Settings::instance()->get(MCI_Footnotes_Settings::C_STR_FOOTNOTES_COUNTER_STYLE)); + $l_str_FootnoteIndex .= ', ' . MCI_Footnotes_Convert::Index(($l_str_CheckIndex + 1), MCI_Footnotes_Settings::instance()->get(MCI_Footnotes_Settings::C_STR_FOOTNOTES_COUNTER_STYLE)); } } } - // replace all placeholders in the template templates/public/reference-container-body.html + + $l_str_FootnoteArrowIndex .= ''; + + // replace all placeholders in the template templates/public/reference-container-body.html + // The individual arrow and index placeholders are for backcompat $l_obj_Template->replace( array( - "post_id" => $l_int_PostID, - "id" => MCI_Footnotes_Convert::Index($l_str_FirstFootnoteIndex, MCI_Footnotes_Settings::instance()->get(MCI_Footnotes_Settings::C_STR_FOOTNOTES_COUNTER_STYLE)), - "arrow" => $l_str_Arrow, - "index" => $l_str_FootnoteIndex, - "text" => $l_str_FootnoteText + "post_id" => $l_int_PostID, + "id" => MCI_Footnotes_Convert::Index($l_str_FirstFootnoteIndex, MCI_Footnotes_Settings::instance()->get(MCI_Footnotes_Settings::C_STR_FOOTNOTES_COUNTER_STYLE)), + "arrow" => $l_str_Arrow, + "index" => $l_str_FootnoteIndex, + "arrow-index" => $l_str_FootnoteArrowIndex, + "text" => $l_str_FootnoteText ) ); // extra line breaks for page source legibility: diff --git a/css/public.css b/css/public.css index 64c0ff8..cebe253 100755 --- a/css/public.css +++ b/css/public.css @@ -4,9 +4,9 @@ * Created-Date: 15.05.14 * Created-Time: 16:21 * Since: 1.0 - * Version: 2.0.6 + * Version: 2.0.8 * - * Last modified: 2020-11-04T2131+0100 + * Last modified: 2020-11-06T1511+0100 */ @@ -127,7 +127,7 @@ span.footnote_tooltip { border:none !important; text-align: left !important; vertical-align: top !important; - padding: 10px 5px 5px 0 !important; + padding: 10px 6px 5px 0 !important; } .footnote_plugin_index a, .footnote_plugin_text a { @@ -138,17 +138,19 @@ span.footnote_tooltip { text-decoration: underline !important; } .footnote_plugin_index { - cursor: pointer; + cursor: pointer; overflow-wrap: unset; word-wrap: unset; word-wrap: normal !important; word-break: unset; word-break: keep-all !important; max-width: 140px; - width: 1px; /*auto-extending column to fit widest*/ - white-space: nowrap; + width: 2em; /*auto-extending column to fit widest*/ overflow: hidden; } +.footnote_index_item { + white-space: nowrap; +} .footnote_plugin_text { width: unset; /*unset width of text column to fix site issues*/ } @@ -175,7 +177,7 @@ span.footnote_tooltip { @media print { .footnote_tooltip, .footnote_reference_container_collapse_button, - .footnote_plugin_index_arrow { + .footnote_index_arrow { display: none; } .footnote_plugin_tooltip_text { diff --git a/footnotes.php b/footnotes.php index a3f4c54..eed9552 100755 --- a/footnotes.php +++ b/footnotes.php @@ -4,7 +4,7 @@ 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.0.4 + Version: 2.0.8 Author URI: http://cheret.de/plugins/footnotes-2/ Text Domain: footnotes Domain Path: /languages diff --git a/languages/en_GB.mo b/languages/en_GB.mo index 14ad813..d9c8f63 100755 Binary files a/languages/en_GB.mo and b/languages/en_GB.mo differ diff --git a/languages/en_GB.po b/languages/en_GB.po index 7a257c3..b29988b 100755 --- a/languages/en_GB.po +++ b/languages/en_GB.po @@ -5,7 +5,7 @@ msgstr "" "Project-Id-Version: footnotes\n" "Report-Msgid-Bugs-To: http://wordpress.org/tag/footnotes\n" "POT-Creation-Date: 2014-10-18 20:58+0100\n" -"PO-Revision-Date: 2020-11-04T2152+0100\n" +"PO-Revision-Date: 2020-11-05T1306+0100\n" "Last-Translator: @pewgeuges\n" "Language-Team: SHE \n" "Language: en_GB\n" @@ -168,7 +168,7 @@ msgstr "in the footer" #: class/dashboard/subpage-main.php:113 msgid "at the end of the post" -msgstr "at the end of the page" +msgstr "at the end of the post" #: class/dashboard/subpage-main.php:114 msgid "in the widget area" diff --git a/languages/en_US.mo b/languages/en_US.mo index bdadec4..d7ff42d 100644 Binary files a/languages/en_US.mo and b/languages/en_US.mo differ diff --git a/languages/en_US.po b/languages/en_US.po index 8c26f64..29643cd 100755 --- a/languages/en_US.po +++ b/languages/en_US.po @@ -5,7 +5,7 @@ msgstr "" "Project-Id-Version: footnotes\n" "Report-Msgid-Bugs-To: http://wordpress.org/tag/footnotes\n" "POT-Creation-Date: 2014-10-18 20:59+0100\n" -"PO-Revision-Date: 2020-11-04T2153+0100\n" +"PO-Revision-Date: 2020-11-05T1307+0100\n" "Last-Translator: @pewgeuges\n" "Language-Team: SHE \n" "Language: en_US\n" @@ -168,7 +168,7 @@ msgstr "in the footer" #: class/dashboard/subpage-main.php:113 msgid "at the end of the post" -msgstr "at the end of the page" +msgstr "at the end of the post" #: class/dashboard/subpage-main.php:114 msgid "in the widget area" diff --git a/readme.txt b/readme.txt index 2a07fa2..b3f97b9 100755 --- a/readme.txt +++ b/readme.txt @@ -4,14 +4,12 @@ Tags: footnote, footnotes, bibliography, formatting, notes, Post, posts, referen Requires at least: 3.9 Tested up to: 5.5 Requires PHP: 5.6 -Stable Tag: 2.0.4 +Stable Tag: 2.0.8 License: GPLv3 or later License URI: http://www.gnu.org/licenses/gpl-3.0.html == Description == -**footnotes** is now continually improved. Please feel free to check our current release candidate v2.0.5rc1, available at the bottom of the [Advanced view](https://wordpress.org/plugins/footnotes/advanced/). - Featured on wpmudev: http://premium.wpmudev.org/blog/12-surprisingly-useful-wordpress-plugins-you-dont-know-about/ Cheers for the review, folks! @@ -82,19 +80,34 @@ Visit this swift write-up from a **footnotes** user by the name of **Southwest** == Changelog == -= 2.0.5rc1 = -- Update: Autoload / infinite scroll support added thanks to @docteurfitness -- Bugfix: Settings style sheet unenqueued to fix input boxes on public pages (enqueued for 2.0.4) -- Bugfix: Public style sheet: Footnote referrers: deleted vertical align tweaks for cross-theme and user agent compatibility -- Bugfix: Public style sheet: Reference container: auto-extending column to fit widest, to fix display with short note texts -- Bugfix: Public style sheet: Reference container: IDs: slightly increased left padding += 2.0.8 = +- BUGFIX: Priority level back to PHP_INT_MAX (need to get in touch with other plugins) + += 2.0.7 = +- BUGFIX: Disabled hook "the_post" **Any related code in the plugin shall disappear next** +- Update: Set priority level back to 10 assuming it is unproblematic +- Update: Added backwards compatible support for legacy arrow and index placeholders in template +- Update: Settings defaults adjusted for better and more up-to-date tooltip layout + += 2.0.6 = +- Update: Autoload / infinite scroll support thanks to @docteurfitness +- Bugfix: Layout: Footnote referrers: deleted vertical align tweaks for cross-theme and user agent compatibility +- Bugfix: Layout: Reference container: fixed line break behavior in footnote # clusters +- Bugfix: Layout: Reference container: auto-extending column to fit widest, to fix display with short note texts +- Bugfix: Layout: 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: UI: Reference container: Collapse button fully clickable, not sign only +- Bugfix: UI: Reference container: Collapse button 'collapse' with minus sign not hyphen-minus +- Update: UX: Tooltip: set display predelay to 0 for responsiveness (was 800 since 2.0.0, 400 before) +- BUGFIX: Priority level back to PHP_INT_MAX (ref container positioning not this plugin’s responsibility) + += 2.0.5 = +- Bugfix: Get references container close to content, not below all other features, by priority level 10 - 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 -- Update: Tooltip infobox: set display predelay to 0 for responsiveness (was 800 since 2.0.0, 400 before) -- Bugfix: Reference container: collapse button fully clickable, not sign only -- Bugfix: Reference container: collapse button 'collapse' with minus sign not hyphen-minus -- Bugfix: Translations: Spelling error in en_GB and en_US +- Bugfix: Settings style sheet unenqueued to fix input boxes on public pages (enqueued for 2.0.4) = 2.0.4 = - Update: Restored arrow settings to customize or disable the now prepended arrow symbol diff --git a/templates/NOTE-FOR-WEBMASTERS.txt b/templates/NOTE-FOR-WEBMASTERS.txt new file mode 100644 index 0000000..ca224da --- /dev/null +++ b/templates/NOTE-FOR-WEBMASTERS.txt @@ -0,0 +1,28 @@ +MCI Footnotes WordPress plugin + +NOTE FOR WEBMASTERS + +Added: 2020-11-06T0424+0100 +Last modified: 2020-11-06T0431+0100 + +About the public templates + + +Template "reference-container-body.html" + +class/task.php(481) +css/public.css + +Supported placeholders: + +[[post_id]] makes the footnote ID unique for infinite scroll +[[id]] footnote number (1-based integer) + +[[arrow]] symbol alone, for backwards compatibility +[[index]] footnote index alone (or comma-separated enumeration) for backwards compatibility + +[[arrow-index]] new compound string starting with the arrow hidden in print + wrapping each index in a no-break span, example: + + ↑ 4, 5, 6, 7, 8, 9, 10, +[[text]] diff --git a/templates/public/reference-container-body.html b/templates/public/reference-container-body.html index b47e714..b58a19a 100755 --- a/templates/public/reference-container-body.html +++ b/templates/public/reference-container-body.html @@ -1,13 +1,10 @@ [[arrow]] [[index]].[[arrow-index]]