';
+ // register stylesheet
+ // added version # after changes started to settings.css from 2.1.2 on:
+ wp_register_style(
+ 'mci-footnotes-admin-styles',
+ plugins_url('../../css/settings.css', __FILE__),
+ '',
+ '2.1.2'
+ );
+ // UPDATE version # when making changes to settings.css, FOR CACHE BUSTING
- if ($l_bool_SettingsUpdated) {
- echo sprintf('
%s
', __("Settings saved", MCI_Footnotes_Config::C_STR_PLUGIN_NAME));
- }
- // form to submit the active section
- echo '';
- // close container for the settings page
- echo '
';
- // output special javascript for the expand/collapse function of the meta boxes
- echo '';
- }
+ echo "jQuery('.if-js-closed').removeClass('if-js-closed').addClass('closed');";
+ echo "postboxes.add_postbox_toggles('" . $this->a_str_SubPageHook . "');";
+ echo "});";
+ echo '';
+ }
- /**
- * Save all Plugin settings.
- *
- * @author Stefan Herndler
- * @since 1.5.0
- * @return bool
- */
- private function saveSettings() {
+ /**
+ * Save all Plugin settings.
+ *
+ * @author Stefan Herndler
+ * @since 1.5.0
+ * @return bool
+ */
+ private function saveSettings() {
$l_arr_newSettings = array();
- // get current section
- reset($this->a_arr_Sections);
- $l_str_ActiveSectionID = isset($_GET['t']) ? $_GET['t'] : key($this->a_arr_Sections);
- $l_arr_ActiveSection = $this->a_arr_Sections[$l_str_ActiveSectionID];
+ // get current section
+ reset($this->a_arr_Sections);
+ $l_str_ActiveSectionID = isset($_GET['t']) ? $_GET['t'] : key($this->a_arr_Sections);
+ $l_arr_ActiveSection = $this->a_arr_Sections[$l_str_ActiveSectionID];
// iterate through each value that has to be in the specific contaienr
foreach(MCI_Footnotes_Settings::instance()->getDefaults($l_arr_ActiveSection["container"]) as $l_str_Key => $l_mixed_Value) {
@@ -291,166 +306,166 @@ abstract class MCI_Footnotes_LayoutEngine {
$l_arr_newSettings[$l_str_Key] = "";
}
}
- // update settings
- return MCI_Footnotes_Settings::instance()->saveOptions($l_arr_ActiveSection["container"], $l_arr_newSettings);
- }
+ // update settings
+ return MCI_Footnotes_Settings::instance()->saveOptions($l_arr_ActiveSection["container"], $l_arr_newSettings);
+ }
- /**
- * Output the Description of a section. May be overwritten in any section.
- *
- * @author Stefan Herndler
- * @since 1.5.0
- */
- public function Description() {
- // default no description will be displayed
- }
+ /**
+ * Output the Description of a section. May be overwritten in any section.
+ *
+ * @author Stefan Herndler
+ * @since 1.5.0
+ */
+ public function Description() {
+ // default no description will be displayed
+ }
- /**
- * Loads specific setting and returns an array with the keys [id, name, value].
- *
- * @author Stefan Herndler
- * @since 1.5.0
- * @param string $p_str_SettingKeyName Settings Array key name.
- * @return array Contains Settings ID, Settings Name and Settings Value.
- */
- protected function LoadSetting($p_str_SettingKeyName) {
- // get current section
- reset($this->a_arr_Sections);
- $p_arr_Return = array();
- $p_arr_Return["id"] = sprintf('%s', $p_str_SettingKeyName);
- $p_arr_Return["name"] = sprintf('%s', $p_str_SettingKeyName);
- $p_arr_Return["value"] = esc_attr(MCI_Footnotes_Settings::instance()->get($p_str_SettingKeyName));
- return $p_arr_Return;
- }
+ /**
+ * Loads specific setting and returns an array with the keys [id, name, value].
+ *
+ * @author Stefan Herndler
+ * @since 1.5.0
+ * @param string $p_str_SettingKeyName Settings Array key name.
+ * @return array Contains Settings ID, Settings Name and Settings Value.
+ */
+ protected function LoadSetting($p_str_SettingKeyName) {
+ // get current section
+ reset($this->a_arr_Sections);
+ $p_arr_Return = array();
+ $p_arr_Return["id"] = sprintf('%s', $p_str_SettingKeyName);
+ $p_arr_Return["name"] = sprintf('%s', $p_str_SettingKeyName);
+ $p_arr_Return["value"] = esc_attr(MCI_Footnotes_Settings::instance()->get($p_str_SettingKeyName));
+ return $p_arr_Return;
+ }
- /**
- * Returns a line break to start a new line.
- *
- * @author Stefan Herndler
- * @since 1.5.0
- * @return string
- */
- protected function addNewline() {
- return ' ';
- }
+ /**
+ * Returns a line break to start a new line.
+ *
+ * @author Stefan Herndler
+ * @since 1.5.0
+ * @return string
+ */
+ protected function addNewline() {
+ return ' ';
+ }
- /**
- * Returns a line break to have a space between two lines.
- *
- * @author Stefan Herndler
- * @since 1.5.0
- * @return string
- */
- protected function addLineSpace() {
- return '
';
- }
+ /**
+ * Returns a line break to have a space between two lines.
+ *
+ * @author Stefan Herndler
+ * @since 1.5.0
+ * @return string
+ */
+ protected function addLineSpace() {
+ return '
';
+ }
- /**
- * Returns a simple text inside html text.
- *
- * @author Stefan Herndler
- * @since 1.5.0
- * @param string $p_str_Text Message to be surrounded with simple html tag (span).
- * @return string
- */
- protected function addText($p_str_Text) {
- return sprintf('%s', $p_str_Text);
- }
+ /**
+ * Returns a simple text inside html text.
+ *
+ * @author Stefan Herndler
+ * @since 1.5.0
+ * @param string $p_str_Text Message to be surrounded with simple html tag (span).
+ * @return string
+ */
+ protected function addText($p_str_Text) {
+ return sprintf('%s', $p_str_Text);
+ }
- /**
- * Returns the html tag for an input/select label.
- *
- * @author Stefan Herndler
- * @since 1.5.0
- * @param string $p_str_SettingName Name of the Settings key to connect the Label with the input/select field.
- * @param string $p_str_Caption Label caption.
- * @return string
- */
- protected function addLabel($p_str_SettingName, $p_str_Caption) {
- if (empty($p_str_Caption)) {
- return "";
- }
- return sprintf('', $p_str_SettingName, $p_str_Caption);
- }
+ /**
+ * Returns the html tag for an input/select label.
+ *
+ * @author Stefan Herndler
+ * @since 1.5.0
+ * @param string $p_str_SettingName Name of the Settings key to connect the Label with the input/select field.
+ * @param string $p_str_Caption Label caption.
+ * @return string
+ */
+ protected function addLabel($p_str_SettingName, $p_str_Caption) {
+ if (empty($p_str_Caption)) {
+ return "";
+ }
+ return sprintf('', $p_str_SettingName, $p_str_Caption);
+ }
- /**
- * Returns the html tag for an input [type = text].
- *
- * @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_str_MaxLength Maximum length of the input, default 999 characters.
- * @param bool $p_bool_Readonly Set the input to be read only, default false.
- * @param bool $p_bool_Hidden Set the input to be hidden, default false.
- * @return string
- */
- protected function addTextBox($p_str_SettingName, $p_str_MaxLength = 999, $p_bool_Readonly = false, $p_bool_Hidden = false) {
- $l_str_Style = "";
- // collect data for given settings field
- $l_arr_Data = $this->LoadSetting($p_str_SettingName);
- if ($p_bool_Hidden) {
- $l_str_Style .= 'display:none;';
- }
- return sprintf('',
- $l_arr_Data["name"], $l_arr_Data["id"], $p_str_MaxLength,
- $l_str_Style, $l_arr_Data["value"], $p_bool_Readonly ? 'readonly="readonly"' : '');
- }
+ /**
+ * Returns the html tag for an input [type = text].
+ *
+ * @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_str_MaxLength Maximum length of the input, default 999 characters.
+ * @param bool $p_bool_Readonly Set the input to be read only, default false.
+ * @param bool $p_bool_Hidden Set the input to be hidden, default false.
+ * @return string
+ */
+ protected function addTextBox($p_str_SettingName, $p_str_MaxLength = 999, $p_bool_Readonly = false, $p_bool_Hidden = false) {
+ $l_str_Style = "";
+ // collect data for given settings field
+ $l_arr_Data = $this->LoadSetting($p_str_SettingName);
+ if ($p_bool_Hidden) {
+ $l_str_Style .= 'display:none;';
+ }
+ return sprintf('',
+ $l_arr_Data["name"], $l_arr_Data["id"], $p_str_MaxLength,
+ $l_str_Style, $l_arr_Data["value"], $p_bool_Readonly ? 'readonly="readonly"' : '');
+ }
- /**
- * Returns the html tag for an input [type = checkbox].
- *
- * @author Stefan Herndler
- * @since 1.5.0
- * @param string $p_str_SettingName Name of the Settings key to pre load the input field.
- * @return string
- */
- protected function addCheckbox($p_str_SettingName) {
- // collect data for given settings field
- $l_arr_Data = $this->LoadSetting($p_str_SettingName);
- return sprintf('',
- $l_arr_Data["name"], $l_arr_Data["id"],
- MCI_Footnotes_Convert::toBool($l_arr_Data["value"]) ? 'checked="checked"' : '');
- }
+ /**
+ * Returns the html tag for an input [type = checkbox].
+ *
+ * @author Stefan Herndler
+ * @since 1.5.0
+ * @param string $p_str_SettingName Name of the Settings key to pre load the input field.
+ * @return string
+ */
+ protected function addCheckbox($p_str_SettingName) {
+ // collect data for given settings field
+ $l_arr_Data = $this->LoadSetting($p_str_SettingName);
+ return sprintf('',
+ $l_arr_Data["name"], $l_arr_Data["id"],
+ MCI_Footnotes_Convert::toBool($l_arr_Data["value"]) ? 'checked="checked"' : '');
+ }
- /**
- * Returns the html tag for a select box.
- *
- * @author Stefan Herndler
- * @since 1.5.0
- * @param string $p_str_SettingName Name of the Settings key to pre select the current value.
- * @param array $p_arr_Options Possible options to be selected.
- * @return string
- */
- protected function addSelectBox($p_str_SettingName, $p_arr_Options) {
- // collect data for given settings field
- $l_arr_Data = $this->LoadSetting($p_str_SettingName);
- $l_str_Options = "";
+ /**
+ * Returns the html tag for a select box.
+ *
+ * @author Stefan Herndler
+ * @since 1.5.0
+ * @param string $p_str_SettingName Name of the Settings key to pre select the current value.
+ * @param array $p_arr_Options Possible options to be selected.
+ * @return string
+ */
+ protected function addSelectBox($p_str_SettingName, $p_arr_Options) {
+ // collect data for given settings field
+ $l_arr_Data = $this->LoadSetting($p_str_SettingName);
+ $l_str_Options = "";
- /* loop through all array keys */
- foreach ($p_arr_Options as $l_str_Value => $l_str_Caption) {
- $l_str_Options .= sprintf('',
- $l_str_Value,
- $l_arr_Data["value"] == $l_str_Value ? "selected" : "",
- $l_str_Caption);
- }
- return sprintf('',
- $l_arr_Data["name"], $l_arr_Data["id"], $l_str_Options);
- }
+ /* loop through all array keys */
+ foreach ($p_arr_Options as $l_str_Value => $l_str_Caption) {
+ $l_str_Options .= sprintf('',
+ $l_str_Value,
+ $l_arr_Data["value"] == $l_str_Value ? "selected" : "",
+ $l_str_Caption);
+ }
+ return sprintf('',
+ $l_arr_Data["name"], $l_arr_Data["id"], $l_str_Options);
+ }
- /**
- * Returns the html tag for a text area.
- *
- * @author Stefan Herndler
- * @since 1.5.0
- * @param string $p_str_SettingName Name of the Settings key to pre fill the text area.
- * @return string
- */
- protected function addTextArea($p_str_SettingName) {
- // collect data for given settings field
- $l_arr_Data = $this->LoadSetting($p_str_SettingName);
- return sprintf('',
- $l_arr_Data["name"], $l_arr_Data["id"], $l_arr_Data["value"]);
- }
+ /**
+ * Returns the html tag for a text area.
+ *
+ * @author Stefan Herndler
+ * @since 1.5.0
+ * @param string $p_str_SettingName Name of the Settings key to pre fill the text area.
+ * @return string
+ */
+ protected function addTextArea($p_str_SettingName) {
+ // collect data for given settings field
+ $l_arr_Data = $this->LoadSetting($p_str_SettingName);
+ return sprintf('',
+ $l_arr_Data["name"], $l_arr_Data["id"], $l_arr_Data["value"]);
+ }
/**
* Returns the html tag for an input [type = text] with color selection class.
@@ -484,4 +499,4 @@ abstract class MCI_Footnotes_LayoutEngine {
$l_arr_Data["name"], $l_arr_Data["id"], $l_arr_Data["value"], $p_in_Min, $p_int_Max);
}
-} // end of class
\ No newline at end of file
+} // end of class
diff --git a/class/dashboard/subpage-main.php b/class/dashboard/subpage-main.php
index c562ad3..1d19a3d 100644
--- a/class/dashboard/subpage-main.php
+++ b/class/dashboard/subpage-main.php
@@ -5,12 +5,12 @@
* @filesource
* @author Stefan Herndler
* @since 1.5.0 14.09.14 14:47
- *
+ *
* Edited for:
* 2.0.4 2020-11-01T0509+0100
* 2.1.0 2020-11-08T2148+0100
* 2.1.1 2020-11-16T2152+0100
- *
+ *
* Last modified: 2020-11-16T2152+0100
*/
@@ -79,7 +79,7 @@ class MCI_Footnotes_Layout_Settings extends MCI_Footnotes_LayoutEngine {
* @author Stefan Herndler
* @since 1.5.0
* @return array
- *
+ *
* Edited for v2.0.4 to reflect changes in display since WPv5.5
* Details in class/config.php
*/
@@ -409,12 +409,12 @@ class MCI_Footnotes_Layout_Settings extends MCI_Footnotes_LayoutEngine {
*
* @author Stefan Herndler
* @since 1.5.0
- *
+ *
* Edited heading for v2.0.4
- *
+ *
* The former 'hyperlink arrow', incompatible with combined identical footnotes,
- * became 'prepended arrow' in v2.0.3 after a user complaint about missing backlinking semantics
- * of the footnote number.
+ * became 'prepended arrow' in v2.0.3 after a user complaint about missing backlinking semantics
+ * of the footnote number.
*/
public function HyperlinkArrow() {
// load template file
@@ -473,38 +473,61 @@ class MCI_Footnotes_Layout_Settings extends MCI_Footnotes_LayoutEngine {
*
* @author Stefan Herndler
* @since 1.5.5
+ *
+ * Edited for:
+ * 2.1.1 add priority level setting for the_content 2020-11-16T2152+0100
+ * 2.2.0 add priority level settings for the other hooks 2020-11-19T1421+0100
*/
public function lookupHooks() {
// load template file
$l_obj_Template = new MCI_Footnotes_Template(MCI_Footnotes_Template::C_STR_DASHBOARD, "expert-lookup");
+
// replace all placeholders
+ // priority level was initially hard-coded default
+ // shows "9223372036854775807" in the numbox
+ // empty should be interpreted as PHP_INT_MAX,
+ // but a numbox cannot be set to empty:
+ // define -1 as PHP_INT_MAX instead
+
$l_obj_Template->replace(
array(
+
+ "description-1" => __("The priority level determines whether Footnotes is executed timely before other plugins, and how the reference container is positioned relative to other features.", MCI_Footnotes_Config::C_STR_PLUGIN_NAME),
+ "description-2" => __("Default 9223372036854775807 is lowest priority, 0 is highest.", MCI_Footnotes_Config::C_STR_PLUGIN_NAME),
+ "description-3" => __("To restore default priority, set to -1, interpreted as 9223372036854775807, the constant PHP_INT_MAX.", MCI_Footnotes_Config::C_STR_PLUGIN_NAME),
+ "description-4" => __("For the reference container to sit above related posts, the priority level of the_content hook may need to be at most 1200.", MCI_Footnotes_Config::C_STR_PLUGIN_NAME),
+ "description-5" => __("For Footnotes to work when a glossary plugin is active, a higher priority of 1000 may be needed.", MCI_Footnotes_Config::C_STR_PLUGIN_NAME),
+ "description-6" => __("For the_content, another good pick with proven efficiency is priority level 10.", MCI_Footnotes_Config::C_STR_PLUGIN_NAME),
+
"head-hook" => __("WordPress hook function name", MCI_Footnotes_Config::C_STR_PLUGIN_NAME),
"head-checkbox" => __("Activate", MCI_Footnotes_Config::C_STR_PLUGIN_NAME),
+ "head-numbox" => __("Priority level", MCI_Footnotes_Config::C_STR_PLUGIN_NAME),
"head-url" => __("WordPress documentation", MCI_Footnotes_Config::C_STR_PLUGIN_NAME),
"label-the-title" => $this->addLabel(MCI_Footnotes_Settings::C_BOOL_EXPERT_LOOKUP_THE_TITLE, "the_title"),
"the-title" => $this->addCheckbox(MCI_Footnotes_Settings::C_BOOL_EXPERT_LOOKUP_THE_TITLE),
- "url-the-title" => "http://codex.wordpress.org/Plugin_API/Filter_Reference/the_title",
+ "priority-the-title" => $this->addNumBox(MCI_Footnotes_Settings::C_INT_EXPERT_LOOKUP_THE_TITLE_PRIORITY_LEVEL, -1, PHP_INT_MAX),
+ "url-the-title" => "https://developer.wordpress.org/reference/hooks/the_title/",
"label-the-content" => $this->addLabel(MCI_Footnotes_Settings::C_BOOL_EXPERT_LOOKUP_THE_CONTENT, "the_content"),
- "the-content" => $this->addCheckbox(MCI_Footnotes_Settings::C_BOOL_EXPERT_LOOKUP_THE_CONTENT),
- // allowed for priority level are all positive integers, zero and -1 interpreted as PHP_INT_MAX:
+ "the-content" => $this->addCheckbox(MCI_Footnotes_Settings::C_BOOL_EXPERT_LOOKUP_THE_CONTENT),
"priority-the-content" => $this->addNumBox(MCI_Footnotes_Settings::C_INT_EXPERT_LOOKUP_THE_CONTENT_PRIORITY_LEVEL, -1, PHP_INT_MAX),
- "url-the-content" => "http://codex.wordpress.org/Plugin_API/Filter_Reference/the_content",
+ "url-the-content" => "https://developer.wordpress.org/reference/hooks/the_content/",
"label-the-excerpt" => $this->addLabel(MCI_Footnotes_Settings::C_BOOL_EXPERT_LOOKUP_THE_EXCERPT, "the_excerpt"),
"the-excerpt" => $this->addCheckbox(MCI_Footnotes_Settings::C_BOOL_EXPERT_LOOKUP_THE_EXCERPT),
- "url-the-excerpt" => "http://codex.wordpress.org/Function_Reference/the_excerpt",
+ "priority-the-excerpt" => $this->addNumBox(MCI_Footnotes_Settings::C_INT_EXPERT_LOOKUP_THE_EXCERPT_PRIORITY_LEVEL, -1, PHP_INT_MAX),
+ "url-the-excerpt" => "https://developer.wordpress.org/reference/functions/the_excerpt/",
"label-widget-title" => $this->addLabel(MCI_Footnotes_Settings::C_BOOL_EXPERT_LOOKUP_WIDGET_TITLE, "widget_title"),
"widget-title" => $this->addCheckbox(MCI_Footnotes_Settings::C_BOOL_EXPERT_LOOKUP_WIDGET_TITLE),
- "url-widget-title" => "http://codex.wordpress.org/Plugin_API/Filter_Reference/widget_title",
+ "priority-widget-title" => $this->addNumBox(MCI_Footnotes_Settings::C_INT_EXPERT_LOOKUP_WIDGET_TITLE_PRIORITY_LEVEL, -1, PHP_INT_MAX),
+ "url-widget-title" => "https://codex.wordpress.org/Plugin_API/Filter_Reference/widget_title",
"label-widget-text" => $this->addLabel(MCI_Footnotes_Settings::C_BOOL_EXPERT_LOOKUP_WIDGET_TEXT, "widget_text"),
"widget-text" => $this->addCheckbox(MCI_Footnotes_Settings::C_BOOL_EXPERT_LOOKUP_WIDGET_TEXT),
- "url-widget-text" => "http://codex.wordpress.org/Plugin_API/Filter_Reference/widget_text",
+ "priority-widget-text" => $this->addNumBox(MCI_Footnotes_Settings::C_INT_EXPERT_LOOKUP_WIDGET_TEXT_PRIORITY_LEVEL, -1, PHP_INT_MAX),
+ "url-widget-text" => "https://codex.wordpress.org/Plugin_API/Filter_Reference/widget_text",
)
);
// display template with replaced placeholders
diff --git a/class/init.php b/class/init.php
index ffccc15..0f05ec1 100644
--- a/class/init.php
+++ b/class/init.php
@@ -134,8 +134,8 @@ class MCI_Footnotes {
wp_enqueue_script( 'jquery-ui-position' );
wp_enqueue_script( 'jquery-ui-tooltip' );
- // enqueue jQuery Tools:
- wp_enqueue_script('mci-footnotes-js-jquery-tools', plugins_url('../js/jquery.tools.min.js', __FILE__));
+ // enqueue jQuery Tools: redacted jQuery.browser, completed minification; added versioning 2020-11-18T2150+0100
+ wp_enqueue_script('mci-footnotes-js-jquery-tools', plugins_url('../js/jquery.tools.min.js', __FILE__), '', '2.1.1');
// Alternatively, fetch jQuery UI from cdnjs.cloudflare.com:
@@ -159,7 +159,7 @@ class MCI_Footnotes {
'mci-footnotes-css-public',
plugins_url('../css/public.css', __FILE__),
'',
- '2.1.1'
+ '2.1.2'
);
}
diff --git a/class/settings.php b/class/settings.php
index 5e984b7..db68362 100644
--- a/class/settings.php
+++ b/class/settings.php
@@ -380,8 +380,8 @@ class MCI_Footnotes_Settings {
*
* 2020-11-16T0859+0100
*/
- const C_BOOL_FOOTNOTES_REFERRER_SUPERSCRIPT_TAGS = "footnotes_inputfield_referrer_superscript_tags";
-
+ const C_BOOL_FOOTNOTES_REFERRER_SUPERSCRIPT_TAGS = "footnotes_inputfield_referrer_superscript_tags";
+
const C_BOOL_REFERENCE_CONTAINER_BACKLINK_SYMBOL_ENABLE = "footnotes_inputfield_reference_container_backlink_symbol_enable";
const C_BOOL_REFERENCE_CONTAINER_START_PAGE_ENABLE = "footnotes_inputfield_reference_container_start_page_enable";
const C_BOOL_REFERENCE_CONTAINER_3COLUMN_LAYOUT_ENABLE = "footnotes_inputfield_reference_container_3column_layout_enable";
@@ -425,17 +425,14 @@ class MCI_Footnotes_Settings {
"footnotes_storage" => array(
self::C_STR_REFERENCE_CONTAINER_NAME => 'References',
- self::C_BOOL_REFERENCE_CONTAINER_COLLAPSE => '',
+ self::C_BOOL_REFERENCE_CONTAINER_COLLAPSE => 'no',
self::C_STR_REFERENCE_CONTAINER_POSITION => 'post_end',
- // Identical footnotes should not be combined by default
- // as long as the feature raises criticism for malfunctioning:
- //
- self::C_BOOL_COMBINE_IDENTICAL_FOOTNOTES => '',
+ self::C_BOOL_COMBINE_IDENTICAL_FOOTNOTES => 'yes',
self::C_BOOL_REFERENCE_CONTAINER_BACKLINK_SYMBOL_ENABLE => 'yes',
self::C_BOOL_REFERENCE_CONTAINER_START_PAGE_ENABLE => 'yes',
- self::C_BOOL_REFERENCE_CONTAINER_3COLUMN_LAYOUT_ENABLE => '',
- self::C_BOOL_REFERENCE_CONTAINER_BACKLINK_SYMBOL_SWITCH => '',
+ self::C_BOOL_REFERENCE_CONTAINER_3COLUMN_LAYOUT_ENABLE => 'no',
+ self::C_BOOL_REFERENCE_CONTAINER_BACKLINK_SYMBOL_SWITCH => 'no',
self::C_STR_FOOTNOTES_SHORT_CODE_START => '((',
self::C_STR_FOOTNOTES_SHORT_CODE_END => '))',
@@ -444,7 +441,11 @@ class MCI_Footnotes_Settings {
self::C_STR_FOOTNOTES_COUNTER_STYLE => 'arabic_plain',
self::C_STR_FOOTNOTES_LOVE => 'no',
self::C_BOOL_FOOTNOTES_IN_EXCERPT => 'yes',
- self::C_BOOL_FOOTNOTES_EXPERT_MODE => 'no'
+
+ // since removal of the_post hook, expert mode is no danger zone
+ // not for experts only; raising awareness about relative positioning
+ // changed default to 'yes':
+ self::C_BOOL_FOOTNOTES_EXPERT_MODE => 'yes'
),
@@ -455,14 +456,18 @@ class MCI_Footnotes_Settings {
self::C_BOOL_FOOTNOTES_REFERRER_SUPERSCRIPT_TAGS => 'yes',
// The default footnote referrer surroundings should be square brackets:
- // * as in English typesetting;
+ // * with respect to baseline footnote referrers new option;
+ // * as in English or US American typesetting;
// * for better UX thanks to a more button-like appearance;
- // * for stylistic consistency with the expand-collapse button
+ // * 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',
- self::C_BOOL_FOOTNOTES_MOUSE_OVER_BOX_ALTERNATIVE => '',
+
+ // alternative, low-script tooltips using CSS for transitions
+ // in response to user demand for website with jQuery UI outage
+ self::C_BOOL_FOOTNOTES_MOUSE_OVER_BOX_ALTERNATIVE => 'no',
// The mouse over content truncation should be enabled by default
// to raise awareness of the functionality and to prevent the screen
@@ -515,6 +520,11 @@ class MCI_Footnotes_Settings {
self::C_BOOL_EXPERT_LOOKUP_WIDGET_TITLE => '',
self::C_BOOL_EXPERT_LOOKUP_WIDGET_TEXT => 'yes',
+ // initially hard-coded default
+ // shows "9223372036854775807" in the numbox
+ // empty should be interpreted as PHP_INT_MAX,
+ // but a numbox cannot be set to empty:
+ // define -1 as PHP_INT_MAX instead
self::C_INT_EXPERT_LOOKUP_THE_TITLE_PRIORITY_LEVEL => PHP_INT_MAX,
self::C_INT_EXPERT_LOOKUP_THE_CONTENT_PRIORITY_LEVEL => PHP_INT_MAX,
self::C_INT_EXPERT_LOOKUP_THE_EXCERPT_PRIORITY_LEVEL => PHP_INT_MAX,
diff --git a/class/task.php b/class/task.php
index d1aee03..23f66f9 100644
--- a/class/task.php
+++ b/class/task.php
@@ -16,8 +16,8 @@
* 2.1.1: combining identical footnotes: fixed dead links 2020-11-14T2233+0100
* 2.1.1: options fixing ref container layout and referrer vertical alignment 2020-11-16T2024+0100
* 2.1.1: option fixing ref container relative position 2020-11-17T0254+0100
- *
- * Last modified 2020-11-18T0138+0100
+ * 2.1.2: options for the other hooks 2020-11-19T1849+0100
+ * 2.1.2: support for Elementor accordion toggle section names 2020-11-20T0617+0100
*/
// If called directly, abort:
@@ -64,28 +64,37 @@ class MCI_Footnotes_Task {
* @author Stefan Herndler
* @since 1.5.0
*
- * Edited for v2.0.5 through v2.0.7 2020-11-02T0330+0100..2020-11-06T1344+0100
+ * Edited for:
+ * 2.0.5 through v2.0.7 changes to priority 2020-11-02T0330+0100..2020-11-06T1344+0100
+ * 2.2.0 add settings for all hooks 2020-11-19T1248+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.
+ * Explicitly setting the_content priority to "10" instead of lowest "PHP_INT_MAX",
+ * 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.
* Requested by users:
* Documentation:
*
- * But this change is suspected to cause issues and needs to be assessed!
- * See
+ * 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.
*/
public function registerHooks() {
-
- // first compute values from settings:
- // for now only the_content is supported for customization:
- $p_int_TheContentPriority = MCI_Footnotes_Settings::instance()->get(MCI_Footnotes_Settings::C_INT_EXPERT_LOOKUP_THE_CONTENT_PRIORITY_LEVEL);
-
- // PHP_INT_MAX can be set using the value -1:
- if ( $p_int_TheContentPriority == -1 ) {
- $p_int_TheContentPriority = PHP_INT_MAX;
- }
-
+
+ // 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));
+ $p_int_TheExcerptPriority = intval(MCI_Footnotes_Settings::instance()->get(MCI_Footnotes_Settings::C_INT_EXPERT_LOOKUP_THE_EXCERPT_PRIORITY_LEVEL));
+ $p_int_WidgetTitlePriority = intval(MCI_Footnotes_Settings::instance()->get(MCI_Footnotes_Settings::C_INT_EXPERT_LOOKUP_WIDGET_TITLE_PRIORITY_LEVEL));
+ $p_int_WidgetTextPriority = intval(MCI_Footnotes_Settings::instance()->get(MCI_Footnotes_Settings::C_INT_EXPERT_LOOKUP_WIDGET_TEXT_PRIORITY_LEVEL));
+
+ // PHP_INT_MAX can be set by -1:
+ $p_int_TheTitlePriority = ($p_int_TheTitlePriority == -1) ? PHP_INT_MAX : $p_int_TheTitlePriority ;
+ $p_int_TheContentPriority = ($p_int_TheContentPriority == -1) ? PHP_INT_MAX : $p_int_TheContentPriority ;
+ $p_int_TheExcerptPriority = ($p_int_TheExcerptPriority == -1) ? PHP_INT_MAX : $p_int_TheExcerptPriority ;
+ $p_int_WidgetTitlePriority = ($p_int_WidgetTitlePriority == -1) ? PHP_INT_MAX : $p_int_WidgetTitlePriority;
+ $p_int_WidgetTextPriority = ($p_int_WidgetTextPriority == -1) ? PHP_INT_MAX : $p_int_WidgetTextPriority ;
+
+
// append custom css to the header
add_filter('wp_head', array($this, "wp_head"), PHP_INT_MAX);
@@ -93,25 +102,30 @@ class MCI_Footnotes_Task {
add_filter('wp_footer', array($this, "wp_footer"), PHP_INT_MAX);
if (MCI_Footnotes_Convert::toBool(MCI_Footnotes_Settings::instance()->get(MCI_Footnotes_Settings::C_BOOL_EXPERT_LOOKUP_THE_TITLE))) {
- add_filter('the_title', array($this, "the_title"), PHP_INT_MAX);
- }
-
- // SET PRIORITY LEVEL TO CUSTOM FOR PAGE LAYOUT; DEFAULT PHP_INT_MAX:
+ add_filter('the_title', array($this, "the_title"), $p_int_TheTitlePriority);
+ }
+
+ // custom priority level for reference container relative positioning; default PHP_INT_MAX:
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);
}
+
if (MCI_Footnotes_Convert::toBool(MCI_Footnotes_Settings::instance()->get(MCI_Footnotes_Settings::C_BOOL_EXPERT_LOOKUP_THE_EXCERPT))) {
- add_filter('the_excerpt', array($this, "the_excerpt"), PHP_INT_MAX);
+ add_filter('the_excerpt', array($this, "the_excerpt"), $p_int_TheExcerptPriority);
}
if (MCI_Footnotes_Convert::toBool(MCI_Footnotes_Settings::instance()->get(MCI_Footnotes_Settings::C_BOOL_EXPERT_LOOKUP_WIDGET_TITLE))) {
- add_filter('widget_title', array($this, "widget_title"), PHP_INT_MAX);
+ add_filter('widget_title', array($this, "widget_title"), $p_int_WidgetTitlePriority);
}
if (MCI_Footnotes_Convert::toBool(MCI_Footnotes_Settings::instance()->get(MCI_Footnotes_Settings::C_BOOL_EXPERT_LOOKUP_WIDGET_TEXT))) {
- add_filter('widget_text', array($this, "widget_text"), PHP_INT_MAX);
+ add_filter('widget_text', array($this, "widget_text"), $p_int_WidgetTextPriority);
}
- // DISABLED the_post HOOK 2020-11-08T1839+0100
+
+
+ // REMOVED the_post HOOK 2020-11-08T1839+0100
//
//
+
+
// reset stored footnotes when displaying the header
self::$a_arr_Footnotes = array();
self::$a_bool_AllowLoveMe = true;
@@ -362,7 +376,15 @@ class MCI_Footnotes_Task {
// post ID to make everything unique wrt infinite scroll and archive view
global $l_int_PostId;
- $l_int_PostId = get_the_id();
+ // add support for Elementor section names:
+ // Element_Section::get_name()
+ // see
+ if (function_exists('Element_Section::get_name')) {
+ $l_int_PostId = Element_Section::get_name();
+ } else {
+ // work in WordPress mode:
+ $l_int_PostId = get_the_id();
+ }
// contains the index for the next footnote on this page
$l_int_FootnoteIndex = count(self::$a_arr_Footnotes) + 1;
@@ -525,7 +547,15 @@ class MCI_Footnotes_Task {
// post ID to make everything unique wrt infinite scroll and archive view:
global $l_int_PostId;
- $l_int_PostId = get_the_id();
+ // add support for Elementor section names: 2020-11-20T0615+0100
+ // Element_Section::get_name()
+ // see
+ if (function_exists('Element_Section::get_name')) {
+ $l_int_PostId = Element_Section::get_name();
+ } else {
+ // work in WordPress mode:
+ $l_int_PostId = get_the_id();
+ }
// no footnotes has been replaced on this page
if (empty(self::$a_arr_Footnotes)) {
diff --git a/css/public.css b/css/public.css
index da97741..8bf7701 100755
--- a/css/public.css
+++ b/css/public.css
@@ -4,12 +4,12 @@
* Created-Date: 15.05.14
* Created-Time: 16:21
* Since: 1.0
- * Version: 2.1.1
+ * Version: 2.1.2
*
- * Last modified: 2020-11-18T0137+0100
+ * Last modified: 2020-11-20T0620+0100
*/
-
-
+
+
/*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾
MCI Footnotes logo
The classes with 'heading' fix display in dashboard
@@ -54,8 +54,8 @@ templates/public/footnote-alternative.html
.main-content .footnote_referrer a:link,
.footnote_plugin_tooltip_text {
text-decoration: none !important;
- border-bottom: none !important;
- line-height: 0;
+ border-bottom: none !important;
+ line-height: 0;
cursor: pointer;
}
.footnote_referrer:hover,
@@ -218,10 +218,9 @@ when hovered in some themes, not in others:
.footnote_plugin_index.pointer:hover,
*/
.footnote_backlink:hover,
-.footnote_plugin_index_combi:hover,
.footnote_plugin_link:hover,
.footnote_plugin_text a:hover {
- text-decoration: unset;
+ text-decoration: unset;
text-decoration: underline !important;
}
.footnote_plugin_index {
diff --git a/css/settings.css b/css/settings.css
index 6bdf62a..99ec4c8 100755
--- a/css/settings.css
+++ b/css/settings.css
@@ -4,9 +4,9 @@
* Created-Date: 15.05.14
* Created-Time: 16:21
* Since: 1.0
- * Version: 2.1.1
+ * Version: 2.1.2
*
- * Last modified: 2020-11-18T0136+0100
+ * Last modified: 2020-11-20T0620+0100
*/
@@ -38,7 +38,10 @@
left: 96px;
}
-
+/*
+On User Request: limited to a number of IDs to not affect all dashboards
+
+*/
#footnote_inputfield_placeholder_start_user_defined,
#footnote_inputfield_placeholder_end_user_defined,
#footnote_inputfield_readon_label,
@@ -96,3 +99,35 @@ span.footnote_highlight_placeholder {
margin: 20px auto !important;
text-align: center !important;
}
+
+/*
+initialized from style attributes in templates
+IE doesn’t support nth child, but these are not critical
+*/
+.expert-lookup tr th:first-child,
+.expert-lookup tr td:first-child {
+ width: 170px !important;
+}
+.expert-lookup tr th:nth-child(2),
+.expert-lookup tr td:nth-child(2) {
+ width: 65px !important;
+}
+.expert-lookup tr th:nth-child(3),
+.expert-lookup tr td:nth-child(3) {
+ width: 200px !important;
+}
+.expert-lookup tr td:nth-child(3) input {
+ width: 190px;
+}
+.expert-lookup tr th:last-child,
+.expert-lookup tr td:last-child {
+ white-space: nowrap;
+}
+
+.footnotes-description {
+ padding: 0 10%;
+}
+.footnotes-description p {
+ font-size: 1.4em;
+ font-style: italic;
+}
diff --git a/footnotes.php b/footnotes.php
index e3225ba..e7de7f1 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.1.1
+ Version: 2.1.2
Author URI: http://cheret.de/plugins/footnotes-2/
Text Domain: footnotes
Domain Path: /languages
diff --git a/readme.txt b/readme.txt
index 24a7c10..9c8d7a2 100755
--- a/readme.txt
+++ b/readme.txt
@@ -4,7 +4,7 @@ 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.1.1
+Stable Tag: 2.1.2
License: GPLv3 or later
License URI: http://www.gnu.org/licenses/gpl-3.0.html
@@ -80,6 +80,13 @@ Visit this swift write-up from a **footnotes** user by the name of **Southwest**
== Changelog ==
+= 2.1.2 =
+- Bugfix: Layout: Reference container: Backlinks: no underline on hover cell when combining identicals is on
+- Bugfix: Elementor: add experimental support for section name function
+- Bugfix: Dashboard: priority level settings for all other hooks
+- Update: Dashboard: WordPress documentation URLs of the hooks
+- Update: Dashboard: feature description for the hooks priority level settings (not yet localized)
+
= 2.1.1 =
- Bugfix: Combining identical footnotes: fix dead links, ensure referrer-backlink bijectivity
- Update: Libraries: jQuery Tools: redact jQuery.browser function use in js/jquery.tools.min.js
@@ -98,13 +105,13 @@ Visit this swift write-up from a **footnotes** user by the name of **Southwest**
- Bugfix: Layout: Reference container: fix start pages by an option to hide the reference container
- Bugfix: Layout: Reference container: Table rows: fix top and bottom padding
- Bugfix: Layout: Footnote referrers: new fix for line height
-- Bugfix: Formatting: disabled overline showing in some themes on hovered backlinks
+- Bugfix: Formatting: disable overline showing in some themes on hovered backlinks
= 2.1.0 =
- Add: UI: Tooltip: made 'Continue reading' button label customizable
- Bugfix: Layout: Footnote referrers: disabled bottom border for theme compatibility
- Update: Accessibility: added 'speaker-mute' class to reference container
-- Bugfix: Settings layout: added named selectors to limit applicability of styles
+- Bugfix: Dashboard: Layout: added named selectors to limit applicability of styles
- UPDATE: REMOVED the_post hook, the plugin stopped supporting this hook
= 2.0.8 =
diff --git a/templates/dashboard/expert-lookup.html b/templates/dashboard/expert-lookup.html
index 03daf5f..36c3610 100644
--- a/templates/dashboard/expert-lookup.html
+++ b/templates/dashboard/expert-lookup.html
@@ -1,42 +1,50 @@
-