diff --git a/class/dashboard/layout.php b/class/dashboard/layout.php index e134ef0..8f121f1 100644 --- a/class/dashboard/layout.php +++ b/class/dashboard/layout.php @@ -13,9 +13,9 @@ * * * ########## fix punctuation-related localization issue in dashboard labels 2020-12-01T0211+0100 - * ########## this fix reverted for now; restore when updating strings and translations + * ########## this fix reverted for now; restore when updating strings and translations, line 400 * - * Last modified: 2020-12-05T0540+0100 + * Last modified: 2020-12-05T2008+0100 */ @@ -395,8 +395,8 @@ abstract class MCI_Footnotes_LayoutEngine { // e.g. Greek using a raised dot. // In French, colon is preceded by a space, forcibly non-breaking, // and narrow per new school. - // Eventually add colon to label strings for inclusion in localization. - // Else drop colons after labels. + // Add colon to label strings for inclusion in localization. + // Colon after label is widely preferred best practice, mandatory per style guides. return sprintf('', $p_str_SettingName, $p_str_Caption); // ^ here deleted colon 2020-12-01T0156+0100 // ########## this fix reverted for now; restore when updating strings and translations @@ -502,20 +502,22 @@ abstract class MCI_Footnotes_LayoutEngine { * @author Stefan Herndler * @since 1.5.0 * @param string $p_str_SettingName Name of the Settings key to pre load the input field. - * @param int $p_in_Min Minimum value. - * @param int $p_int_Max Maximum value. + * @param int $p_in_Min Minimum value. + * @param int $p_int_Max Maximum value. + * @param bool $p_bool_Deci true if 0.1 steps and floating to string, false if integer (default) * @return string * * Edited: - * @since 2.2.0 step argument and %f to allow decimals 2020-12-03T0631+0100..2020-12-05T0506+0100 + * @since 2.2.0 step argument and number_format() to allow decimals 2020-12-03T0631+0100..2020-12-05T2006+0100 */ protected function addNumBox($p_str_SettingName, $p_in_Min, $p_int_Max, $p_bool_Deci = false ) { // collect data for given settings field $l_arr_Data = $this->LoadSetting($p_str_SettingName); if ($p_bool_Deci) { - return sprintf('', - $l_arr_Data["name"], $l_arr_Data["id"], $l_arr_Data["value"], $p_in_Min, $p_int_Max); + $l_str_Value = number_format($l_arr_Data["value"], 1); + return sprintf('', + $l_arr_Data["name"], $l_arr_Data["id"], $l_str_Value, $p_in_Min, $p_int_Max); } else { return sprintf('', $l_arr_Data["name"], $l_arr_Data["id"], $l_arr_Data["value"], $p_in_Min, $p_int_Max); diff --git a/class/dashboard/subpage-main.php b/class/dashboard/subpage-main.php index 732aab7..d19e1ea 100644 --- a/class/dashboard/subpage-main.php +++ b/class/dashboard/subpage-main.php @@ -12,7 +12,7 @@ * 2.1.1 options for ref container and alternative tooltips 2020-11-16T2152+0100 * 2.2.0 settings for ref container, tooltips and scrolling 2020-12-03T0950+0100 * - * Last modified: 2020-12-05T0535+0100 + * Last modified: 2020-12-06T1321+0100 */ /** @@ -126,8 +126,9 @@ class MCI_Footnotes_Layout_Settings extends MCI_Footnotes_LayoutEngine { // basic responsive page layout options: $l_arr_PageLayoutOptions = array( "none" => __("Don’t fix the layout", MCI_Footnotes_Config::C_STR_PLUGIN_NAME), - "container" => __("to the references container", MCI_Footnotes_Config::C_STR_PLUGIN_NAME), - "main" => __("from the post title to the references container", MCI_Footnotes_Config::C_STR_PLUGIN_NAME), + "reference-container" => __("to the reference container", MCI_Footnotes_Config::C_STR_PLUGIN_NAME), + "page-content" => __("to everything after the post title until the reference container", MCI_Footnotes_Config::C_STR_PLUGIN_NAME), + "main-content" => __("to everything from the post title to the reference container", MCI_Footnotes_Config::C_STR_PLUGIN_NAME), ); // options for the separating punctuation between backlinks: // Unicode names are conventionally uppercase. @@ -148,8 +149,9 @@ class MCI_Footnotes_Layout_Settings extends MCI_Footnotes_LayoutEngine { $l_arr_WidthUnits = array( "%" => __("per cent", MCI_Footnotes_Config::C_STR_PLUGIN_NAME), "px" => __("pixels", MCI_Footnotes_Config::C_STR_PLUGIN_NAME), + "rem" => __("root em", MCI_Footnotes_Config::C_STR_PLUGIN_NAME), "em" => __("em", MCI_Footnotes_Config::C_STR_PLUGIN_NAME), - "rem" => __("rem", MCI_Footnotes_Config::C_STR_PLUGIN_NAME), + "vw" => __("viewport width", MCI_Footnotes_Config::C_STR_PLUGIN_NAME), ); // options for Yes/No select box: $l_arr_Enabled = array( @@ -173,7 +175,7 @@ class MCI_Footnotes_Layout_Settings extends MCI_Footnotes_LayoutEngine { "label-page-layout" => $this->addLabel(MCI_Footnotes_Settings::C_STR_FOOTNOTES_PAGE_LAYOUT_SUPPORT, __("Apply basic responsive page layout", MCI_Footnotes_Config::C_STR_PLUGIN_NAME)), "page-layout" => $this->addSelectBox(MCI_Footnotes_Settings::C_STR_FOOTNOTES_PAGE_LAYOUT_SUPPORT, $l_arr_PageLayoutOptions), - "page-layout-comment" => __("Most themes don’t need this fix.", MCI_Footnotes_Config::C_STR_PLUGIN_NAME), + "notice-page-layout" => __("Most themes don’t need this fix.", MCI_Footnotes_Config::C_STR_PLUGIN_NAME), "label-startpage" => $this->addLabel(MCI_Footnotes_Settings::C_BOOL_REFERENCE_CONTAINER_START_PAGE_ENABLE, __("Display on start page too", MCI_Footnotes_Config::C_STR_PLUGIN_NAME)), "startpage" => $this->addSelectBox(MCI_Footnotes_Settings::C_BOOL_REFERENCE_CONTAINER_START_PAGE_ENABLE, $l_arr_Enabled), @@ -182,36 +184,38 @@ class MCI_Footnotes_Layout_Settings extends MCI_Footnotes_LayoutEngine { "symbol-enable" => $this->addSelectBox(MCI_Footnotes_Settings::C_BOOL_REFERENCE_CONTAINER_BACKLINK_SYMBOL_ENABLE, $l_arr_Enabled), "symbol-options" => $this->addSelectBox(MCI_Footnotes_Settings::C_STR_HYPERLINK_ARROW, MCI_Footnotes_Convert::getArrow()), "symbol-custom" => $this->addTextBox(MCI_Footnotes_Settings::C_STR_HYPERLINK_ARROW_USER_DEFINED), - "symbol-comment" => __("Your input overrides the selection.", MCI_Footnotes_Config::C_STR_PLUGIN_NAME), + "notice-symbol" => __("Your input overrides the selection.", MCI_Footnotes_Config::C_STR_PLUGIN_NAME), "label-switch" => $this->addLabel(MCI_Footnotes_Settings::C_BOOL_REFERENCE_CONTAINER_BACKLINK_SYMBOL_SWITCH, __("Symbol appended, not prepended", MCI_Footnotes_Config::C_STR_PLUGIN_NAME)), "switch" => $this->addSelectBox(MCI_Footnotes_Settings::C_BOOL_REFERENCE_CONTAINER_BACKLINK_SYMBOL_SWITCH, $l_arr_Enabled), "label-3column" => $this->addLabel(MCI_Footnotes_Settings::C_BOOL_REFERENCE_CONTAINER_3COLUMN_LAYOUT_ENABLE, __("Backlink symbol in an extra column", MCI_Footnotes_Config::C_STR_PLUGIN_NAME)), "3column" => $this->addSelectBox(MCI_Footnotes_Settings::C_BOOL_REFERENCE_CONTAINER_3COLUMN_LAYOUT_ENABLE, $l_arr_Enabled), - "3column-comment" => __("This legacy layout is available if identical footnotes are not combined.", MCI_Footnotes_Config::C_STR_PLUGIN_NAME), + "notice-3column" => __("This legacy layout is available if identical footnotes are not combined.", MCI_Footnotes_Config::C_STR_PLUGIN_NAME), "label-separator" => $this->addLabel(MCI_Footnotes_Settings::C_BOOL_BACKLINKS_SEPARATOR_ENABLED, __("Add a separator when enumerating backlinks", MCI_Footnotes_Config::C_STR_PLUGIN_NAME)), "separator-enable" => $this->addSelectBox(MCI_Footnotes_Settings::C_BOOL_BACKLINKS_SEPARATOR_ENABLED, $l_arr_Enabled), "separator-options" => $this->addSelectBox(MCI_Footnotes_Settings::C_STR_BACKLINKS_SEPARATOR_OPTION, $l_arr_Separators), "separator-custom" => $this->addTextBox(MCI_Footnotes_Settings::C_STR_BACKLINKS_SEPARATOR_CUSTOM), - "separator-comment" => __("Your input overrides the selection.", MCI_Footnotes_Config::C_STR_PLUGIN_NAME), + "notice-separator" => __("Your input overrides the selection.", MCI_Footnotes_Config::C_STR_PLUGIN_NAME), "label-terminator" => $this->addLabel(MCI_Footnotes_Settings::C_BOOL_BACKLINKS_TERMINATOR_ENABLED, __("Add a terminal punctuation to backlinks", MCI_Footnotes_Config::C_STR_PLUGIN_NAME)), "terminator-enable" => $this->addSelectBox(MCI_Footnotes_Settings::C_BOOL_BACKLINKS_TERMINATOR_ENABLED, $l_arr_Enabled), "terminator-options" => $this->addSelectBox(MCI_Footnotes_Settings::C_STR_BACKLINKS_TERMINATOR_OPTION, $l_arr_Terminators), "terminator-custom" => $this->addTextBox(MCI_Footnotes_Settings::C_STR_BACKLINKS_TERMINATOR_CUSTOM), - "terminator-comment" => __("Your input overrides the selection.", MCI_Footnotes_Config::C_STR_PLUGIN_NAME), + "notice-terminator" => __("Your input overrides the selection.", MCI_Footnotes_Config::C_STR_PLUGIN_NAME), "label-width" => $this->addLabel(MCI_Footnotes_Settings::C_BOOL_BACKLINKS_COLUMN_WIDTH_ENABLED, __("Set backlinks column width", MCI_Footnotes_Config::C_STR_PLUGIN_NAME)), "width-enable" => $this->addSelectBox(MCI_Footnotes_Settings::C_BOOL_BACKLINKS_COLUMN_WIDTH_ENABLED, $l_arr_Enabled), "width-scalar" => $this->addNumBox(MCI_Footnotes_Settings::C_INT_BACKLINKS_COLUMN_WIDTH_SCALAR, 0, 500, true), "width-unit" => $this->addSelectBox(MCI_Footnotes_Settings::C_STR_BACKLINKS_COLUMN_WIDTH_UNIT, $l_arr_WidthUnits), + "notice-width" => __("Absolute width in pixels doesn’t need to be accurate to the tenth, but relative width in rem or em may.", MCI_Footnotes_Config::C_STR_PLUGIN_NAME), "label-max-width" => $this->addLabel(MCI_Footnotes_Settings::C_BOOL_BACKLINKS_COLUMN_MAX_WIDTH_ENABLED, __("Set backlinks column maximum width", MCI_Footnotes_Config::C_STR_PLUGIN_NAME)), "max-width-enable" => $this->addSelectBox(MCI_Footnotes_Settings::C_BOOL_BACKLINKS_COLUMN_MAX_WIDTH_ENABLED, $l_arr_Enabled), "max-width-scalar" => $this->addNumBox(MCI_Footnotes_Settings::C_INT_BACKLINKS_COLUMN_MAX_WIDTH_SCALAR, 0, 500, true), "max-width-unit" => $this->addSelectBox(MCI_Footnotes_Settings::C_STR_BACKLINKS_COLUMN_MAX_WIDTH_UNIT, $l_arr_WidthUnits), + "notice-max-width" => __("Absolute width in pixels doesn’t need to be accurate to the tenth, but relative width in rem or em may.", MCI_Footnotes_Config::C_STR_PLUGIN_NAME), "label-line-break" => $this->addLabel(MCI_Footnotes_Settings::C_BOOL_BACKLINKS_LINE_BREAKS_ENABLED, __("Stack backlinks when enumerating", MCI_Footnotes_Config::C_STR_PLUGIN_NAME)), "line-break" => $this->addSelectBox(MCI_Footnotes_Settings::C_BOOL_BACKLINKS_LINE_BREAKS_ENABLED, $l_arr_Enabled), @@ -353,9 +357,9 @@ class MCI_Footnotes_Layout_Settings extends MCI_Footnotes_LayoutEngine { "label-excerpt" => $this->addLabel(MCI_Footnotes_Settings::C_BOOL_FOOTNOTES_IN_EXCERPT, __("Allow footnotes on Summarized Posts", MCI_Footnotes_Config::C_STR_PLUGIN_NAME)), "excerpt" => $this->addSelectBox(MCI_Footnotes_Settings::C_BOOL_FOOTNOTES_IN_EXCERPT, $l_arr_Enabled), - "excerpt-comment1" => __("This should be disabled.", MCI_Footnotes_Config::C_STR_PLUGIN_NAME), - "excerpt-comment2" => __("In some themes, the Advanced Excerpt plugin is indispensable to display footnotes in excerpts.", MCI_Footnotes_Config::C_STR_PLUGIN_NAME), - "excerpt-comment3" => __("Footnotes cannot be disabled in excerpts. A workaround is to avoid footnotes in the first 55 words.", MCI_Footnotes_Config::C_STR_PLUGIN_NAME), + "notice1-excerpt" => __("This should be disabled.", MCI_Footnotes_Config::C_STR_PLUGIN_NAME), + "notice2-excerpt" => __("In some themes, the Advanced Excerpt plugin is indispensable to display footnotes in excerpts.", MCI_Footnotes_Config::C_STR_PLUGIN_NAME), + "notice3-excerpt" => __("Footnotes cannot be disabled in excerpts. A workaround is to avoid footnotes in the first 55 words.", MCI_Footnotes_Config::C_STR_PLUGIN_NAME), "label-expert-mode" => $this->addLabel(MCI_Footnotes_Settings::C_BOOL_FOOTNOTES_EXPERT_MODE, __("Enable the Expert mode", MCI_Footnotes_Config::C_STR_PLUGIN_NAME)), "expert-mode" => $this->addSelectBox(MCI_Footnotes_Settings::C_BOOL_FOOTNOTES_EXPERT_MODE, $l_arr_Enabled) @@ -448,7 +452,7 @@ class MCI_Footnotes_Layout_Settings extends MCI_Footnotes_LayoutEngine { "activate-excerpt" => $this->addSelectBox(MCI_Footnotes_Settings::C_BOOL_FOOTNOTES_MOUSE_OVER_BOX_EXCERPT_ENABLED, $l_arr_Enabled), "label-excerpt-length" => $this->addLabel(MCI_Footnotes_Settings::C_INT_FOOTNOTES_MOUSE_OVER_BOX_EXCERPT_LENGTH, __("Maximum characters for the excerpt", MCI_Footnotes_Config::C_STR_PLUGIN_NAME)), - "excerpt-length" => $this->addTextBox(MCI_Footnotes_Settings::C_INT_FOOTNOTES_MOUSE_OVER_BOX_EXCERPT_LENGTH), + "excerpt-length" => $this->addNumBox(MCI_Footnotes_Settings::C_INT_FOOTNOTES_MOUSE_OVER_BOX_EXCERPT_LENGTH, 3, 10000), "label-readon" => $this->addLabel(MCI_Footnotes_Settings::C_STR_FOOTNOTES_TOOLTIP_READON_LABEL, __("‘Read on’ button label", MCI_Footnotes_Config::C_STR_PLUGIN_NAME)), "readon" => $this->addTextBox(MCI_Footnotes_Settings::C_STR_FOOTNOTES_TOOLTIP_READON_LABEL), @@ -468,13 +472,31 @@ class MCI_Footnotes_Layout_Settings extends MCI_Footnotes_LayoutEngine { "max-width" => $this->addNumBox(MCI_Footnotes_Settings::C_INT_FOOTNOTES_MOUSE_OVER_BOX_MAX_WIDTH, 0, 1280), "notice-max-width" => __("Set the max-width to 0px to disable this setting.", MCI_Footnotes_Config::C_STR_PLUGIN_NAME), + // display durations: + + "label-fade-in-delay" => $this->addLabel(MCI_Footnotes_Settings::C_INT_MOUSE_OVER_BOX_FADE_IN_DELAY, __("Fade-in delay", MCI_Footnotes_Config::C_STR_PLUGIN_NAME)), + "fade-in-delay" => $this->addNumBox(MCI_Footnotes_Settings::C_INT_MOUSE_OVER_BOX_FADE_IN_DELAY, 0, 20000), + "notice-fade-in-delay" => __("milliseconds", MCI_Footnotes_Config::C_STR_PLUGIN_NAME), + + "label-fade-in-duration" => $this->addLabel(MCI_Footnotes_Settings::C_INT_MOUSE_OVER_BOX_FADE_IN_DURATION, __("Fade-in duration", MCI_Footnotes_Config::C_STR_PLUGIN_NAME)), + "fade-in-duration" => $this->addNumBox(MCI_Footnotes_Settings::C_INT_MOUSE_OVER_BOX_FADE_IN_DURATION, 0, 20000), + "notice-fade-in-duration" => __("milliseconds", MCI_Footnotes_Config::C_STR_PLUGIN_NAME), + + "label-fade-out-delay" => $this->addLabel(MCI_Footnotes_Settings::C_INT_MOUSE_OVER_BOX_FADE_OUT_DELAY, __("Fade-out delay", MCI_Footnotes_Config::C_STR_PLUGIN_NAME)), + "fade-out-delay" => $this->addNumBox(MCI_Footnotes_Settings::C_INT_MOUSE_OVER_BOX_FADE_OUT_DELAY, 0, 20000), + "notice-fade-out-delay" => __("milliseconds", MCI_Footnotes_Config::C_STR_PLUGIN_NAME), + + "label-fade-out-duration" => $this->addLabel(MCI_Footnotes_Settings::C_INT_MOUSE_OVER_BOX_FADE_OUT_DURATION, __("Fade-out duration", MCI_Footnotes_Config::C_STR_PLUGIN_NAME)), + "fade-out-duration" => $this->addNumBox(MCI_Footnotes_Settings::C_INT_MOUSE_OVER_BOX_FADE_OUT_DURATION, 0, 20000), + "notice-fade-out-duration" => __("milliseconds", MCI_Footnotes_Config::C_STR_PLUGIN_NAME), + // tooltip styling: "label-font-size" => $this->addLabel(MCI_Footnotes_Settings::C_BOOL_MOUSE_OVER_BOX_FONT_SIZE_ENABLED, __("Set font size", MCI_Footnotes_Config::C_STR_PLUGIN_NAME)), "font-size-enable" => $this->addSelectBox(MCI_Footnotes_Settings::C_BOOL_MOUSE_OVER_BOX_FONT_SIZE_ENABLED, $l_arr_Enabled), "font-size-scalar" => $this->addNumBox(MCI_Footnotes_Settings::C_FLO_MOUSE_OVER_BOX_FONT_SIZE_SCALAR, 0, 50, true), "font-size-unit" => $this->addSelectBox(MCI_Footnotes_Settings::C_STR_MOUSE_OVER_BOX_FONT_SIZE_UNIT, $l_arr_FontSizeUnits), - "font-size-comment" => __("By default, the font size is set to equal the surrounding text.", MCI_Footnotes_Config::C_STR_PLUGIN_NAME), + "notice-font-size" => __("By default, the font size is set to equal the surrounding text.", MCI_Footnotes_Config::C_STR_PLUGIN_NAME), "label-color" => $this->addLabel(MCI_Footnotes_Settings::C_STR_FOOTNOTES_MOUSE_OVER_BOX_COLOR, __("Color", MCI_Footnotes_Config::C_STR_PLUGIN_NAME)), "color" => $this->addColorSelection(MCI_Footnotes_Settings::C_STR_FOOTNOTES_MOUSE_OVER_BOX_COLOR), diff --git a/class/init.php b/class/init.php index c4ca07f..98bfbe8 100644 --- a/class/init.php +++ b/class/init.php @@ -14,7 +14,7 @@ * 2.2.0 automate passing version number for cache busting 2020-11-30T0646+0100 * 2.2.0 optionally enqueue an extra style sheet 2020-12-04T2231+0100 * - * Last modified: 2020-12-05T0541+0100 + * Last modified: 2020-12-05T1418+0100 */ @@ -160,11 +160,11 @@ class MCI_Footnotes { // constant FOOTNOTES_VERSION defined in footnotes.php, media all is default wp_enqueue_style( 'mci-footnotes-public', plugins_url('footnotes/css/public.css'), array(), FOOTNOTES_VERSION, 'all' ); - // optional layout fix for unsupportive themes: - // since 2.2.0 2020-12-04T2231+0100 + // optional layout fix by lack of layout support: + // since 2.2.0 2020-12-05T1417+0100 $l_str_LayoutOption = MCI_Footnotes_Settings::instance()->get(MCI_Footnotes_Settings::C_STR_FOOTNOTES_PAGE_LAYOUT_SUPPORT); if ($l_str_LayoutOption != 'none') { - wp_enqueue_style( 'mci-footnotes-public-' . $l_str_LayoutOption, plugins_url('footnotes/css/public-' . $l_str_LayoutOption . '.css'), array(), FOOTNOTES_VERSION, 'all' ); + wp_enqueue_style( 'mci-footnotes-layout-' . $l_str_LayoutOption, plugins_url('footnotes/css/layout-' . $l_str_LayoutOption . '.css'), array(), FOOTNOTES_VERSION, 'all' ); } } } diff --git a/class/settings.php b/class/settings.php index ef58a90..4ac7363 100644 --- a/class/settings.php +++ b/class/settings.php @@ -19,7 +19,7 @@ * 2.1.3 fix ref container positioning by priority level 2020-11-17T0205+0100 * 2.2.0 more settings container keys 2020-12-03T0955+0100 * - * Last modified: 2020-12-05T0405+0100 + * Last modified: 2020-12-06T1321+0100 */ @@ -407,7 +407,9 @@ class MCI_Footnotes_Settings { * Settings Container Keys for the link element option * Settings Container Keys for backlink typography and layout * Settings Container Keys for tooltip font size + * Settings Container Keys for page layout support * Settings Container Keys for scroll offset and duration + * Settings Container Keys for tooltip display durations * * @since 2.2.0 * @var string|bool|int @@ -415,16 +417,21 @@ class MCI_Footnotes_Settings { * 2020-11-26T1002+0100 * 2020-11-30T0427+0100 * 2020-12-03T0501+0100 - * 2020-12-05T0425+0100 + * 2020-12-05T0425+0100 */ + + // link element option: const C_BOOL_LINK_ELEMENT_ENABLED = "footnote_inputfield_link_element_enabled"; + // backlink typography: const C_BOOL_BACKLINKS_SEPARATOR_ENABLED = "footnotes_inputfield_backlinks_separator_enabled"; const C_STR_BACKLINKS_SEPARATOR_OPTION = "footnotes_inputfield_backlinks_separator_option"; const C_STR_BACKLINKS_SEPARATOR_CUSTOM = "footnotes_inputfield_backlinks_separator_custom"; const C_BOOL_BACKLINKS_TERMINATOR_ENABLED = "footnotes_inputfield_backlinks_terminator_enabled"; const C_STR_BACKLINKS_TERMINATOR_OPTION = "footnotes_inputfield_backlinks_terminator_option"; const C_STR_BACKLINKS_TERMINATOR_CUSTOM = "footnotes_inputfield_backlinks_terminator_custom"; + + // backlink layout: const C_BOOL_BACKLINKS_COLUMN_WIDTH_ENABLED = "footnotes_inputfield_backlinks_column_width_enabled"; const C_INT_BACKLINKS_COLUMN_WIDTH_SCALAR = "footnotes_inputfield_backlinks_column_width_scalar"; const C_STR_BACKLINKS_COLUMN_WIDTH_UNIT = "footnotes_inputfield_backlinks_column_width_unit"; @@ -433,16 +440,26 @@ class MCI_Footnotes_Settings { const C_STR_BACKLINKS_COLUMN_MAX_WIDTH_UNIT = "footnotes_inputfield_backlinks_column_max_width_unit"; const C_BOOL_BACKLINKS_LINE_BREAKS_ENABLED = "footnotes_inputfield_backlinks_line_breaks_enabled"; - // called mouse over box not tooltip for consistency: + // tooltip font size: + // called mouse over box not tooltip for consistency const C_BOOL_MOUSE_OVER_BOX_FONT_SIZE_ENABLED = "footnotes_inputfield_mouse_over_box_font_size_enabled"; const C_FLO_MOUSE_OVER_BOX_FONT_SIZE_SCALAR = "footnotes_inputfield_mouse_over_box_font_size_scalar"; const C_STR_MOUSE_OVER_BOX_FONT_SIZE_UNIT = "footnotes_inputfield_mouse_over_box_font_size_unit"; - const C_STR_FOOTNOTES_PAGE_LAYOUT_SUPPORT = "footnotes_inputfield_page_layout_support"; - + // page layout support: + const C_STR_FOOTNOTES_PAGE_LAYOUT_SUPPORT = "footnotes_inputfield_page_layout_support"; + + // scroll offset and duration: const C_INT_FOOTNOTES_SCROLL_OFFSET = "footnotes_inputfield_scroll_offset"; const C_INT_FOOTNOTES_SCROLL_DURATION = "footnotes_inputfield_scroll_duration"; + // tooltip display durations: + // called mouse over box not tooltip for consistency + const C_INT_MOUSE_OVER_BOX_FADE_IN_DELAY = "footnotes_inputfield_mouse_over_box_fade_in_delay"; + const C_INT_MOUSE_OVER_BOX_FADE_IN_DURATION = "footnotes_inputfield_mouse_over_box_fade_in_duration"; + const C_INT_MOUSE_OVER_BOX_FADE_OUT_DELAY = "footnotes_inputfield_mouse_over_box_fade_out_delay"; + const C_INT_MOUSE_OVER_BOX_FADE_OUT_DURATION = "footnotes_inputfield_mouse_over_box_fade_out_duration"; + /** * Stores a singleton reference of this class. @@ -478,9 +495,9 @@ class MCI_Footnotes_Settings { self::C_STR_FOOTNOTES_SHORT_CODE_START_USER_DEFINED => '', self::C_STR_FOOTNOTES_SHORT_CODE_END_USER_DEFINED => '', self::C_STR_FOOTNOTES_COUNTER_STYLE => 'arabic_plain', - self::C_INT_FOOTNOTES_SCROLL_OFFSET => 20, - self::C_INT_FOOTNOTES_SCROLL_DURATION => 380, - + self::C_INT_FOOTNOTES_SCROLL_OFFSET => 20, + self::C_INT_FOOTNOTES_SCROLL_DURATION => 380, + self::C_STR_REFERENCE_CONTAINER_NAME => 'References', self::C_BOOL_REFERENCE_CONTAINER_COLLAPSE => 'no', self::C_STR_REFERENCE_CONTAINER_POSITION => 'post_end', @@ -569,11 +586,18 @@ class MCI_Footnotes_Settings { // the current line of text (web coordinates origin is top left): self::C_INT_FOOTNOTES_MOUSE_OVER_BOX_OFFSET_Y => -7, + // tooltip display durations: + // called mouse over box not tooltip for consistency + self::C_INT_MOUSE_OVER_BOX_FADE_IN_DELAY => 0, + self::C_INT_MOUSE_OVER_BOX_FADE_IN_DURATION => 200, + self::C_INT_MOUSE_OVER_BOX_FADE_OUT_DELAY => 400, + self::C_INT_MOUSE_OVER_BOX_FADE_OUT_DURATION => 200, + // tooltip font size reset to legacy by default since 2.2.0; // was set to inherit since 2.1.1 as it overrode custom CSS, // is moved to settings since 2.2.0 2020-12-04T1023+0100 self::C_BOOL_MOUSE_OVER_BOX_FONT_SIZE_ENABLED => 'yes', - self::C_FLO_MOUSE_OVER_BOX_FONT_SIZE_SCALAR => '13', + self::C_FLO_MOUSE_OVER_BOX_FONT_SIZE_SCALAR => 13, self::C_STR_MOUSE_OVER_BOX_FONT_SIZE_UNIT => 'px', self::C_STR_FOOTNOTES_MOUSE_OVER_BOX_COLOR => '', diff --git a/class/task.php b/class/task.php index b308817..a752ef2 100644 --- a/class/task.php +++ b/class/task.php @@ -24,8 +24,9 @@ * 2.2.0 optional line breaks to stack enumerated backlinks 2020-11-28T1049+0100 * 2.2.0 ref container column width and tooltip font size settings 2020-12-03T0954+0100 * 2.2.0 scroll offset and duration settings 2020-12-05T0538+0100 + * 2.2.0 tooltip display duration settings 2020-12-06T1320+0100 * - * Last modified: 2020-12-05T0538+0100 + * Last modified: 2020-12-06T1321+0100 */ // If called directly, abort: @@ -576,23 +577,32 @@ class MCI_Footnotes_Task { // reset the template $l_obj_Template->reload(); - if (MCI_Footnotes_Convert::toBool(MCI_Footnotes_Settings::instance()->get(MCI_Footnotes_Settings::C_BOOL_FOOTNOTES_MOUSE_OVER_BOX_ENABLED))) { + if ( + 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_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_FadeInDuration = intval(MCI_Footnotes_Settings::instance()->get(MCI_Footnotes_Settings::C_INT_MOUSE_OVER_BOX_FADE_IN_DURATION )); + $l_int_FadeOutDelay = intval(MCI_Footnotes_Settings::instance()->get(MCI_Footnotes_Settings::C_INT_MOUSE_OVER_BOX_FADE_OUT_DELAY )); + $l_int_FadeOutDuration = intval(MCI_Footnotes_Settings::instance()->get(MCI_Footnotes_Settings::C_INT_MOUSE_OVER_BOX_FADE_OUT_DURATION)); // fill in 'templates/public/tooltip.html': $l_obj_TemplateTooltip->replace( array( - "post_id" => $l_int_PostId, - "id" => $l_int_Index, - "position" => MCI_Footnotes_Settings::instance()->get(MCI_Footnotes_Settings::C_STR_FOOTNOTES_MOUSE_OVER_BOX_POSITION), - "offset-y" => !empty($l_int_OffsetY) ? $l_int_OffsetY : 0, - "offset-x" => !empty($l_int_OffsetX) ? $l_int_OffsetX : 0, + "post_id" => $l_int_PostId, + "id" => $l_int_Index, + "position" => MCI_Footnotes_Settings::instance()->get(MCI_Footnotes_Settings::C_STR_FOOTNOTES_MOUSE_OVER_BOX_POSITION), + "offset-y" => !empty($l_int_OffsetY) ? $l_int_OffsetY : 0, + "offset-x" => !empty($l_int_OffsetX) ? $l_int_OffsetX : 0, + "fade-in-delay" => !empty($l_int_FadeInDelay ) ? $l_int_FadeInDelay : 0, + "fade-in-duration" => !empty($l_int_FadeInDuration ) ? $l_int_FadeInDuration : 0, + "fade-out-delay" => !empty($l_int_FadeOutDelay ) ? $l_int_FadeOutDelay : 0, + "fade-out-duration" => !empty($l_int_FadeOutDuration) ? $l_int_FadeOutDuration : 0, ) ); - if (!MCI_Footnotes_Convert::toBool(MCI_Footnotes_Settings::instance()->get(MCI_Footnotes_Settings::C_BOOL_FOOTNOTES_MOUSE_OVER_BOX_ALTERNATIVE))) { - $l_str_FootnoteReplaceText .= $l_obj_TemplateTooltip->getContent(); - } + $l_str_FootnoteReplaceText .= $l_obj_TemplateTooltip->getContent(); $l_obj_TemplateTooltip->reload(); } } @@ -969,7 +979,7 @@ class MCI_Footnotes_Task { // get scroll offset and duration settings: $l_int_ScrollOffset = MCI_Footnotes_Settings::instance()->get(MCI_Footnotes_Settings::C_INT_FOOTNOTES_SCROLL_OFFSET); $l_int_ScrollDuration = MCI_Footnotes_Settings::instance()->get(MCI_Footnotes_Settings::C_INT_FOOTNOTES_SCROLL_DURATION); - + // load 'templates/public/reference-container.html': $l_obj_TemplateContainer = new MCI_Footnotes_Template(MCI_Footnotes_Template::C_STR_PUBLIC, "reference-container"); $l_obj_TemplateContainer->replace( diff --git a/css/public-main.css b/css/layout-main-content.css similarity index 96% rename from css/public-main.css rename to css/layout-main-content.css index 1fcf2b9..7fcc67d 100644 --- a/css/public-main.css +++ b/css/layout-main-content.css @@ -5,10 +5,10 @@ * licensed under GNU General Public License v3 or later * License URI: https://www.gnu.org/licenses/gpl-3.0.html * - * Since 2.1.4 - * Version: 2.1.4d10 + * Since 2.2.0 + * Version: 2.2.0d0 * - * Last modified: 2020-12-04T1857+0100 + * Last modified: 2020-12-05T1414+0100 */ diff --git a/css/layout-page-content.css b/css/layout-page-content.css new file mode 100644 index 0000000..a6cdb7f --- /dev/null +++ b/css/layout-page-content.css @@ -0,0 +1,77 @@ +/** + * Footnotes Responsive Layout for the main element + * + * Based on Hello Elementor v2.3.0 Basic responsive layout + * licensed under GNU General Public License v3 or later + * License URI: https://www.gnu.org/licenses/gpl-3.0.html + * + * Since 2.2.0 + * Version: 2.2.0d0 + * + * Last modified: 2020-12-05T1413+0100 + */ + + +/*********************************************************** +Basic responsive layout + +In Hello Elementor Theme, this applies to .site-header, and +also to .site-main, which is a class of the
element, +at the condition that the page is not built with Elementor: + body:not([class*="elementor-page-"]) +Therefore, in pages built with Elementor, proper layout is +applied only to features managed by Elementor, not others. + +The Footnotes references container is near the end of main. +This style sheet lets Footnotes’ reference container come +into the benefit of the basic responsive layout style rules +that would apply if the page were not built with Elementor. + +This is mainly useful with Hello Elementor, but it might be +used also with another theme depriving the features from +other plugins of basic layout rules as applied to content. + +The enqueuing of this style sheet is optional. The setting +is in the dashboard under Settings > Reference container. +*/ + +div.page-content { + margin-right: auto; + margin-left: auto; +} + +@media (max-width: 575px) { + + div.page-content { + padding-right: 10px; + padding-left: 10px; + } +} + +@media (min-width: 576px) { + + div.page-content { + max-width: 500px; + } +} + +@media (min-width: 768px) { + + div.page-content { + max-width: 600px; + } +} + +@media (min-width: 992px) { + + div.page-content { + max-width: 800px; + } +} + +@media (min-width: 1200px) { + + div.page-content { + max-width: 960px; + } +} diff --git a/css/public-container.css b/css/layout-reference-container.css similarity index 96% rename from css/public-container.css rename to css/layout-reference-container.css index 584f02f..7b5d2c2 100644 --- a/css/public-container.css +++ b/css/layout-reference-container.css @@ -5,10 +5,10 @@ * licensed under GNU General Public License v3 or later * License URI: https://www.gnu.org/licenses/gpl-3.0.html * - * Since 2.1.4 - * Version: 2.1.4d10 + * Since 2.2.0 + * Version: 2.2.0d0 * - * Last modified: 2020-12-04T1843+0100 + * Last modified: 2020-12-05T1413+0100 */ diff --git a/css/public.css b/css/public.css index de45e70..8eb5fe6 100755 --- a/css/public.css +++ b/css/public.css @@ -5,9 +5,9 @@ * Created-Time: 16:21 * Since: 1.0 * - * Version: 2.2.0d0 + * Version: 2.2.0d2 * - * Last modified: 2020-12-05T0357+0100 + * Last modified: 2020-12-06T1326+0100 */ @@ -194,7 +194,7 @@ fully clickable, not sign only */ .footnote_reference_container_collapse_button { cursor: pointer; - padding-left: .5em; + padding: 0 0.5em; font-size: 1.3em !important; vertical-align: 2px; } diff --git a/css/settings.css b/css/settings.css index e68d291..9674c89 100755 --- a/css/settings.css +++ b/css/settings.css @@ -5,9 +5,9 @@ * Created-Time: 16:21 * Since: 1.0 * - * Version: 2.2.0d0 + * Version: 2.2.0d2 * - * Last modified: 2020-12-05T0358+0100 + * Last modified: 2020-12-06T1325+0100 */ @@ -45,8 +45,6 @@ On User Request: limited to a number of IDs to not affect all dashboards */ /*input[type=text], input[type=password], textarea, select*/ -#footnote_inputfield_placeholder_start_user_defined, -#footnote_inputfield_placeholder_end_user_defined, #footnote_inputfield_readon_label, #footnote_inputfield_references_label, #footnote_inputfield_custom_css, @@ -56,6 +54,30 @@ On User Request: limited to a number of IDs to not affect all dashboards width: 80% !important; } +#footnote_inputfield_reference_container_place { + width: 310px; +} + +#footnote_inputfield_counter_style, +#footnotes_inputfield_page_layout_support { + width: 505px; +} + +#footnote_inputfield_placeholder_start, +#footnote_inputfield_placeholder_end { + width: 180px; +} +#footnote_inputfield_placeholder_start_user_defined, +#footnote_inputfield_placeholder_end_user_defined { + width: 320px; +} + +#footnote_inputfield_combine_identical, +#footnotes_inputfield_scroll_offset, +#footnotes_inputfield_scroll_duration { + width: 80px; +} + #footnote_inputfield_custom_hyperlink_symbol, #footnotes_inputfield_backlinks_terminator_option, #footnotes_inputfield_backlinks_separator_option { @@ -148,7 +170,9 @@ IE doesn’t support nth child, but these are not critical #settings-other tr td:nth-child(2) { width: 30%; } - +/* +fullwidth div above or below settings tables: +*/ .footnotes_description { padding: 0 10%; } @@ -156,3 +180,12 @@ IE doesn’t support nth child, but these are not critical font-size: 1.4em; font-style: italic; } +/* +span previously formatted as em element +but emphasis is not the correct semantics, +as it is rendered as bold in other scripts +so we need an explicit italic style: +*/ +.footnotes_notice { + font-style: italic; +} diff --git a/footnotes.php b/footnotes.php index a32b9b3..f1ba423 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.2.0d0 + Version: 2.2.0d2 Author URI: http://cheret.de/plugins/footnotes-2/ Text Domain: footnotes Domain Path: /languages */ -define( 'FOOTNOTES_VERSION', '2.2.0d0' ); +define( 'FOOTNOTES_VERSION', '2.2.0d2' ); /* Copyright 2020 Mark Cheret (email: mark@cheret.de) diff --git a/readme.txt b/readme.txt index b832ebd..4d1aa65 100755 --- a/readme.txt +++ b/readme.txt @@ -80,25 +80,29 @@ Visit this swift write-up from a **footnotes** user by the name of **Southwest** == Changelog == -= 2.2.0d0 = -- Add: UX: settings for scroll offset and duration += 2.2.0d2 = +- Add: Dashboard: Main settings: add settings for scroll offset and duration +- Add: Dashboard: Tooltip settings: add settings for display delays and fade durations +- Add: Styling: Tooltips: fix font size issue by adding font size to settings with legacy as default - Add: Reference container: fix theme-dependent layout issues by optionally enqueuing additional style sheet - Add: Reference container: fix layout issues by moving backlink column width to settings - Add: Reference container: separating and terminating punctuation optional and customizable -- Add: Styling: Tooltips: fix font size issue by adding font size to settings with legacy as default - Add: Reference container: Backlinks: optional line breaks to stack enumerations -- Bugfix: Dashboard: move arrow settings from Customize to Settings > Reference container to reunite and fix issue with new heading wording -- Bugfix: Dashboard: Main settings: fix layout, raise shortcodes to top -- Bugfix: Dashboard: Other settings: Excerpt: display guidance next to select box - Bugfix: Layout: Tooltips: prevent line break in Read-on link label +- Bugfix: Styling: Referrers and backlinks: make link elements optional to fix issues +- Bugfix: Styling: Referrers: disable hover underline - Bugfix: Reference container, tooltips: fix line wrapping of URLs based on pattern, not link element - Bugfix: Reference container: Backlink symbol: support for appending when combining identicals is on - Bugfix: Reference container: Backlinks: deprioritize hover underline to ease customization - Bugfix: Reference container: Backlinks: fix line breaking with respect to separators and terminators - Bugfix: Reference container: Label: delete overflow hidden rule +- Bugfix: Reference container: Expand/collapse button: same padding to the right for right-to-left - Bugfix: Reference container: Styles: re-add the class dedicated to combined footnotes indices -- Bugfix: Styling: Referrers and backlinks: make link elements optional to fix issues -- Bugfix: Styling: Referrers: disable hover underline +- Bugfix: Dashboard: move arrow settings from Customize to Settings > Reference container to reunite and fix issue with new heading wording +- Bugfix: Dashboard: Main settings: fix layout, raise shortcodes to top +- Bugfix: Dashboard: Tooltip settings: Truncation length: change input box type from text to numeric +- Update: Dashboard: Notices: use explicit italic style +- Bugfix: Dashboard: Other settings: Excerpt: display guidance next to select box - Bugfix: WordPress hooks: the_content: set priority to 1000 as a safeguard - Update: Dashboard: Expert mode: streamline and update description for hooks and priority levels diff --git a/templates/dashboard/customize-mouse-over-box.html b/templates/dashboard/customize-mouse-over-box.html index feab530..a2951f7 100644 --- a/templates/dashboard/customize-mouse-over-box.html +++ b/templates/dashboard/customize-mouse-over-box.html @@ -26,43 +26,59 @@ [[label-offset-x]] - [[offset-x]] [[notice-offset-x]] + [[offset-x]] [[notice-offset-x]] [[label-offset-y]] - [[offset-y]] [[notice-offset-y]] + [[offset-y]] [[notice-offset-y]] [[label-max-width]] - [[max-width]] [[notice-max-width]] + [[max-width]] [[notice-max-width]] + + + [[label-fade-in-delay]] + [[fade-in-delay]] [[notice-fade-in-delay]] + + + [[label-fade-in-duration]] + [[fade-in-duration]] [[notice-fade-in-duration]] + + + [[label-fade-out-delay]] + [[fade-out-delay]] [[notice-fade-out-delay]] + + + [[label-fade-out-duration]] + [[fade-out-duration]] [[notice-fade-out-duration]] [[label-font-size]] - [[font-size-enable]][[font-size-scalar]][[font-size-unit]] [[font-size-comment]] + [[font-size-enable]][[font-size-scalar]][[font-size-unit]] [[notice-font-size]] [[label-color]] - [[color]] [[notice-color]] + [[color]] [[notice-color]] [[label-background]] - [[background]] [[notice-background]] + [[background]] [[notice-background]] [[label-border-width]] - [[border-width]] [[notice-border-width]] + [[border-width]] [[notice-border-width]] [[label-border-color]] - [[border-color]] [[notice-border-color]] + [[border-color]] [[notice-border-color]] [[label-border-radius]] - [[border-radius]] [[notice-border-radius]] + [[border-radius]] [[notice-border-radius]] [[label-box-shadow-color]] - [[box-shadow-color]] [[notice-box-shadow-color]] + [[box-shadow-color]] [[notice-box-shadow-color]] diff --git a/templates/dashboard/settings-other.html b/templates/dashboard/settings-other.html index b141e47..3faa27f 100644 --- a/templates/dashboard/settings-other.html +++ b/templates/dashboard/settings-other.html @@ -6,8 +6,8 @@ [[label-excerpt]] - [[excerpt]][[excerpt-comment1]] - [[excerpt-comment2]]
[[excerpt-comment3]]
+ [[excerpt]][[notice1-excerpt]] + [[notice2-excerpt]]
[[notice3-excerpt]]
[[label-expert-mode]] diff --git a/templates/dashboard/settings-reference-container.html b/templates/dashboard/settings-reference-container.html index 0c44e3c..a6b0723 100644 --- a/templates/dashboard/settings-reference-container.html +++ b/templates/dashboard/settings-reference-container.html @@ -14,7 +14,7 @@ [[label-page-layout]] - [[page-layout]] [[page-layout-comment]] + [[page-layout]] [[notice-page-layout]] [[label-startpage]] @@ -26,7 +26,7 @@ [[symbol-enable]] [[symbol-options]] [[symbol-custom]] - [[symbol-comment]] + [[notice-symbol]] @@ -37,7 +37,7 @@ [[label-3column]] [[3column]] - [[3column-comment]] + [[notice-3column]] @@ -46,7 +46,7 @@ [[separator-enable]] [[separator-options]] [[separator-custom]] - [[separator-comment]] + [[notice-separator]] @@ -55,7 +55,7 @@ [[terminator-enable]] [[terminator-options]] [[terminator-custom]] - [[terminator-comment]] + [[notice-terminator]] @@ -64,6 +64,7 @@ [[width-enable]] [[width-scalar]] [[width-unit]] + [[notice-width]] @@ -72,6 +73,7 @@ [[max-width-enable]] [[max-width-scalar]] [[max-width-unit]] + [[notice-max-width]] diff --git a/templates/dashboard/settings-styling.html b/templates/dashboard/settings-styling.html index f0ce226..493e202 100644 --- a/templates/dashboard/settings-styling.html +++ b/templates/dashboard/settings-styling.html @@ -24,11 +24,11 @@ [[label-scroll-offset]] - [[scroll-offset]] [[notice-scroll-offset]] + [[scroll-offset]] [[notice-scroll-offset]] [[label-scroll-duration]] - [[scroll-duration]] [[notice-scroll-duration]] + [[scroll-duration]] [[notice-scroll-duration]] diff --git a/templates/public/tooltip.html b/templates/public/tooltip.html index f53ad57..b296282 100644 --- a/templates/public/tooltip.html +++ b/templates/public/tooltip.html @@ -3,10 +3,10 @@ tip: '#footnote_plugin_tooltip_text_[[post_id]]_[[id]]', tipClass: 'footnote_tooltip', effect: 'fade', - predelay: 0, - fadeInSpeed: 200, - delay: 400, - fadeOutSpeed: 200, + predelay: [[fade-in-delay]], + fadeInSpeed: [[fade-in-duration]], + delay: [[fade-out-delay]], + fadeOutSpeed: [[fade-out-duration]], position: '[[position]]', relative: true, offset: [[[offset-y]], [[offset-x]]],