Re-standardise codebase to WP Coding Standards (this time without the line ending changes)
git-svn-id: https://plugins.svn.wordpress.org/footnotes/trunk@2483354 b8457f37-d9ea-0310-8a92-e5e31aec5664
This commit is contained in:
parent
05d316ae15
commit
8a859b61f7
30 changed files with 1974 additions and 1979 deletions
|
@ -1,39 +1,32 @@
|
||||||
<?php
|
<?php // phpcs:disable WordPress.Files.FileName.InvalidClassFileName
|
||||||
/**
|
/**
|
||||||
* Includes the Plugin Constants class to load all Plugin constant vars like Plugin name, etc.
|
* Includes the Plugin Constants class to load all Plugin constant vars like Plugin name, etc.
|
||||||
*
|
*
|
||||||
* @filesource
|
* @filesource
|
||||||
* @author Stefan Herndler
|
* @package footnotes
|
||||||
* @since 1.5.0 12.09.14 10:56
|
* @since 1.5.0
|
||||||
|
* @date 12.09.14 10:56
|
||||||
*
|
*
|
||||||
* Edited for:
|
* @since 2.0.4 add Public Plugin name for dashboard heading 2020-11-01T0452+0100
|
||||||
* 2.0.4 add Public Plugin name for dashboard heading 2020-11-01T0452+0100
|
|
||||||
*
|
|
||||||
* Last modified: 2021-02-18T2027+0100
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Contains all Plugin Constants. Contains no Method or Property.
|
* Contains all Plugin Constants. Contains no Method or Property.
|
||||||
*
|
*
|
||||||
* @author Stefan Herndler
|
|
||||||
* @since 1.5.0
|
* @since 1.5.0
|
||||||
*/
|
*/
|
||||||
class MCI_Footnotes_Config {
|
class MCI_Footnotes_Config {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Internal Plugin name.
|
* Internal Plugin name.
|
||||||
*
|
*
|
||||||
* @author Stefan Herndler
|
|
||||||
* @since 1.5.0
|
* @since 1.5.0
|
||||||
* @var string
|
* @var string
|
||||||
*/
|
*/
|
||||||
const C_STR_PLUGIN_NAME = "footnotes";
|
const C_STR_PLUGIN_NAME = 'footnotes';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Public Plugin name.
|
* Public Plugin name.
|
||||||
*
|
*
|
||||||
* @author Stefan Herndler
|
|
||||||
* @since 1.5.0
|
* @since 1.5.0
|
||||||
* @var string
|
* @var string
|
||||||
*
|
*
|
||||||
|
@ -58,7 +51,6 @@ class MCI_Footnotes_Config {
|
||||||
/**
|
/**
|
||||||
* Html tag for the LOVE symbol.
|
* Html tag for the LOVE symbol.
|
||||||
*
|
*
|
||||||
* @author Stefan Herndler
|
|
||||||
* @since 1.5.0
|
* @since 1.5.0
|
||||||
* @var string
|
* @var string
|
||||||
*/
|
*/
|
||||||
|
@ -75,7 +67,6 @@ class MCI_Footnotes_Config {
|
||||||
/**
|
/**
|
||||||
* Short code to DON'T display the 'LOVE ME' slug on certain pages.
|
* Short code to DON'T display the 'LOVE ME' slug on certain pages.
|
||||||
*
|
*
|
||||||
* @author Stefan Herndler
|
|
||||||
* @since 1.5.0
|
* @since 1.5.0
|
||||||
* @var string
|
* @var string
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -3,20 +3,16 @@
|
||||||
* Includes the Convert Class.
|
* Includes the Convert Class.
|
||||||
*
|
*
|
||||||
* @filesource
|
* @filesource
|
||||||
* @author Stefan Herndler
|
* @package footnotes
|
||||||
* @since 1.5.0 12.09.14 10:56
|
* @since 1.5.0
|
||||||
|
* @date 12.09.14 10:56
|
||||||
*
|
*
|
||||||
* Edited:
|
|
||||||
* @since 2.2.0 add lowercase Roman 2020-12-12T1540+0100
|
* @since 2.2.0 add lowercase Roman 2020-12-12T1540+0100
|
||||||
*
|
|
||||||
* Last modified: 2020-12-12T1541+0100
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Converts data types and Footnotes specific values.
|
* Converts data types and Footnotes specific values.
|
||||||
*
|
*
|
||||||
* @author Stefan Herndler
|
|
||||||
* @since 1.5.0
|
* @since 1.5.0
|
||||||
*/
|
*/
|
||||||
class MCI_Footnotes_Convert {
|
class MCI_Footnotes_Convert {
|
||||||
|
@ -24,30 +20,29 @@ class MCI_Footnotes_Convert {
|
||||||
/**
|
/**
|
||||||
* Converts a integer into the user-defined counter style for the footnotes.
|
* Converts a integer into the user-defined counter style for the footnotes.
|
||||||
*
|
*
|
||||||
* @author Stefan Herndler
|
|
||||||
* @since 1.5.0
|
* @since 1.5.0
|
||||||
* @param int $p_int_Index Index to be converted.
|
* @param int $p_int_index Index to be converted.
|
||||||
* @param string $p_str_ConvertStyle Style of the new/converted Index.
|
* @param string $p_str_convert_style Style of the new/converted Index.
|
||||||
* @return string Converted Index as string in the defined counter style.
|
* @return string Converted Index as string in the defined counter style.
|
||||||
*
|
*
|
||||||
* Edited:
|
* Edited:
|
||||||
* @since 2.2.0 lowercase Roman numerals supported
|
* @since 2.2.0 lowercase Roman numerals supported
|
||||||
*/
|
*/
|
||||||
public static function Index($p_int_Index, $p_str_ConvertStyle = "arabic_plain") {
|
public static function index( $p_int_index, $p_str_convert_style = 'arabic_plain' ) {
|
||||||
switch ($p_str_ConvertStyle) {
|
switch ( $p_str_convert_style ) {
|
||||||
case "romanic":
|
case 'romanic':
|
||||||
return self::toRomanic($p_int_Index, true);
|
return self::to_romanic( $p_int_index, true );
|
||||||
case "roman_low":
|
case 'roman_low':
|
||||||
return self::toRomanic($p_int_Index, false);
|
return self::to_romanic( $p_int_index, false );
|
||||||
case "latin_high":
|
case 'latin_high':
|
||||||
return self::toLatin($p_int_Index, true);
|
return self::to_latin( $p_int_index, true );
|
||||||
case "latin_low":
|
case 'latin_low':
|
||||||
return self::toLatin($p_int_Index, false);
|
return self::to_latin( $p_int_index, false );
|
||||||
case "arabic_leading":
|
case 'arabic_leading':
|
||||||
return self::toArabicLeading($p_int_Index);
|
return self::to_arabic_leading( $p_int_index );
|
||||||
case "arabic_plain":
|
case 'arabic_plain':
|
||||||
default:
|
default:
|
||||||
return $p_int_Index;
|
return $p_int_index;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -55,65 +50,63 @@ class MCI_Footnotes_Convert {
|
||||||
* Converts an integer into latin ascii characters, either lower or upper-case.
|
* Converts an integer into latin ascii characters, either lower or upper-case.
|
||||||
* Function available from A to ZZ ( means 676 footnotes at 1 page possible).
|
* Function available from A to ZZ ( means 676 footnotes at 1 page possible).
|
||||||
*
|
*
|
||||||
* @author Stefan Herndler
|
|
||||||
* @since 1.0-gamma
|
* @since 1.0-gamma
|
||||||
* @param int $p_int_Value Value/Index to be converted.
|
* @param int $p_int_value Value/Index to be converted.
|
||||||
* @param bool $p_bool_UpperCase True to convert the value to upper case letter, otherwise to lower case.
|
* @param bool $p_bool_upper_case True to convert the value to upper case letter, otherwise to lower case.
|
||||||
* @return string
|
* @return string
|
||||||
*/
|
*/
|
||||||
private static function toLatin($p_int_Value, $p_bool_UpperCase) {
|
private static function to_latin( $p_int_value, $p_bool_upper_case ) {
|
||||||
// output string
|
// Output string.
|
||||||
$l_str_Return = "";
|
$l_str_return = '';
|
||||||
$l_int_Offset = 0;
|
$l_int_offset = 0;
|
||||||
// check if the value is higher then 26 = Z
|
// Check if the value is higher then 26 = Z.
|
||||||
while ($p_int_Value > 26) {
|
while ( $p_int_value > 26 ) {
|
||||||
// increase offset and reduce counter
|
// Increase offset and reduce counter.
|
||||||
$l_int_Offset++;
|
$l_int_offset++;
|
||||||
$p_int_Value -= 26;
|
$p_int_value -= 26;
|
||||||
}
|
}
|
||||||
// if offset set (more then Z), then add a new letter in front
|
// If offset set (more then Z), then add a new letter in front.
|
||||||
if ($l_int_Offset > 0) {
|
if ( $l_int_offset > 0 ) {
|
||||||
$l_str_Return = chr($l_int_Offset + 64);
|
$l_str_return = chr( $l_int_offset + 64 );
|
||||||
}
|
}
|
||||||
// add the origin letter
|
// Add the origin letter.
|
||||||
$l_str_Return .= chr($p_int_Value + 64);
|
$l_str_return .= chr( $p_int_value + 64 );
|
||||||
// return the latin character representing the integer
|
// Return the latin character representing the integer.
|
||||||
if ($p_bool_UpperCase) {
|
if ( $p_bool_upper_case ) {
|
||||||
return strtoupper($l_str_Return);
|
return strtoupper( $l_str_return );
|
||||||
}
|
}
|
||||||
return strtolower($l_str_Return);
|
return strtolower( $l_str_return );
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Converts an integer to a leading-0 integer.
|
* Converts an integer to a leading-0 integer.
|
||||||
*
|
*
|
||||||
* @author Stefan Herndler
|
|
||||||
* @since 1.0-gamma
|
* @since 1.0-gamma
|
||||||
* @param int $p_int_Value Value/Index to be converted.
|
* @param int $p_int_value Value/Index to be converted.
|
||||||
* @return string Value with a leading zero.
|
* @return string Value with a leading zero.
|
||||||
*/
|
*/
|
||||||
private static function toArabicLeading($p_int_Value) {
|
private static function to_arabic_leading( $p_int_value ) {
|
||||||
// add a leading 0 if number lower then 10
|
// Add a leading 0 if number lower then 10.
|
||||||
if ($p_int_Value < 10) {
|
if ( $p_int_value < 10 ) {
|
||||||
return "0" . $p_int_Value;
|
return '0' . $p_int_value;
|
||||||
}
|
}
|
||||||
return $p_int_Value;
|
return $p_int_value;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Converts an integer to a romanic letter.
|
* Converts an integer to a romanic letter.
|
||||||
*
|
*
|
||||||
* @author Stefan Herndler
|
|
||||||
* @since 1.0-gamma
|
* @since 1.0-gamma
|
||||||
* @param int $p_int_Value Value/Index to be converted.
|
* @param int $p_int_value Value/Index to be converted.
|
||||||
|
* @param bool $p_bool_upper_case Whether to uppercase.
|
||||||
* @return string
|
* @return string
|
||||||
*
|
*
|
||||||
* Edited:
|
* Edited:
|
||||||
* @since 2.2.0 optionally lowercase (code from Latin) 2020-12-12T1538+0100
|
* @since 2.2.0 optionally lowercase (code from Latin) 2020-12-12T1538+0100
|
||||||
*/
|
*/
|
||||||
private static function toRomanic($p_int_Value, $p_bool_UpperCase) {
|
private static function to_romanic( $p_int_value, $p_bool_upper_case ) {
|
||||||
// table containing all necessary romanic letters
|
// Table containing all necessary romanic letters.
|
||||||
$l_arr_RomanicLetters = array(
|
$l_arr_romanic_letters = array(
|
||||||
'M' => 1000,
|
'M' => 1000,
|
||||||
'CM' => 900,
|
'CM' => 900,
|
||||||
'D' => 500,
|
'D' => 500,
|
||||||
|
@ -126,104 +119,105 @@ class MCI_Footnotes_Convert {
|
||||||
'IX' => 9,
|
'IX' => 9,
|
||||||
'V' => 5,
|
'V' => 5,
|
||||||
'IV' => 4,
|
'IV' => 4,
|
||||||
'I' => 1
|
'I' => 1,
|
||||||
);
|
);
|
||||||
// return value
|
// Return value.
|
||||||
$l_str_Return = '';
|
$l_str_return = '';
|
||||||
// iterate through integer value until it is reduced to 0
|
// Iterate through integer value until it is reduced to 0.
|
||||||
while ($p_int_Value > 0) {
|
while ( $p_int_value > 0 ) {
|
||||||
foreach ($l_arr_RomanicLetters as $l_str_Romanic => $l_int_Arabic) {
|
foreach ( $l_arr_romanic_letters as $l_str_romanic => $l_int_arabic ) {
|
||||||
if ($p_int_Value >= $l_int_Arabic) {
|
if ( $p_int_value >= $l_int_arabic ) {
|
||||||
$p_int_Value -= $l_int_Arabic;
|
$p_int_value -= $l_int_arabic;
|
||||||
$l_str_Return .= $l_str_Romanic;
|
$l_str_return .= $l_str_romanic;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// return romanic letters as string
|
// Return romanic letters as string.
|
||||||
if ($p_bool_UpperCase) {
|
if ( $p_bool_upper_case ) {
|
||||||
return strtoupper($l_str_Return);
|
return strtoupper( $l_str_return );
|
||||||
}
|
}
|
||||||
return strtolower($l_str_Return);
|
return strtolower( $l_str_return );
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Converts a string depending on its value to a boolean.
|
* Converts a string depending on its value to a boolean.
|
||||||
*
|
*
|
||||||
* @author Stefan Herndler
|
|
||||||
* @since 1.0-beta
|
* @since 1.0-beta
|
||||||
* @param string $p_str_Value String to be converted to boolean.
|
* @param string $p_str_value String to be converted to boolean.
|
||||||
* @return bool Boolean representing the string.
|
* @return bool Boolean representing the string.
|
||||||
*/
|
*/
|
||||||
public static function toBool($p_str_Value) {
|
public static function to_bool( $p_str_value ) {
|
||||||
// convert string to lower-case to make it easier
|
// Convert string to lower-case to make it easier.
|
||||||
$p_str_Value = strtolower($p_str_Value);
|
$p_str_value = strtolower( $p_str_value );
|
||||||
// check if string seems to contain a "true" value
|
// Check if string seems to contain a "true" value.
|
||||||
switch ($p_str_Value) {
|
switch ( $p_str_value ) {
|
||||||
case "checked":
|
case 'checked':
|
||||||
case "yes":
|
case 'yes':
|
||||||
case "true":
|
case 'true':
|
||||||
case "on":
|
case 'on':
|
||||||
case "1":
|
case '1':
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
// nothing found that says "true", so we return false
|
// Nothing found that says "true", so we return false.
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get a html Array short code depending on Arrow-Array key index.
|
* Get a html Array short code depending on Arrow-Array key index.
|
||||||
*
|
*
|
||||||
* @author Stefan Herndler
|
|
||||||
* @since 1.3.2
|
* @since 1.3.2
|
||||||
* @param int $p_int_Index Index representing the Arrow. If empty all Arrows are specified.
|
* @param int $p_int_index Index representing the Arrow. If empty all Arrows are specified.
|
||||||
* @return array|string Array of all Arrows if Index is empty otherwise html tag of a specific arrow.
|
* @return array|string Array of all Arrows if Index is empty otherwise html tag of a specific arrow.
|
||||||
*/
|
*/
|
||||||
public static function getArrow($p_int_Index = -1) {
|
public static function get_arrow( $p_int_index = -1 ) {
|
||||||
// define all possible arrows
|
// Define all possible arrows.
|
||||||
$l_arr_Arrows = array("↑", "↥", "↟", "↩", "↲", "↵", "⇑", "⇡", "⇧", "↑");
|
$l_arr_arrows = array( '↑', '↥', '↟', '↩', '↲', '↵', '⇑', '⇡', '⇧', '↑' );
|
||||||
// convert index to an integer
|
// Convert index to an integer.
|
||||||
if (!is_int($p_int_Index)) {
|
if ( ! is_int( $p_int_index ) ) {
|
||||||
$p_int_Index = intval($p_int_Index);
|
$p_int_index = intval( $p_int_index );
|
||||||
}
|
}
|
||||||
// return the whole arrow array
|
// Return the whole arrow array.
|
||||||
if ($p_int_Index < 0 || $p_int_Index > count($l_arr_Arrows)) {
|
if ( $p_int_index < 0 || $p_int_index > count( $l_arr_arrows ) ) {
|
||||||
return $l_arr_Arrows;
|
return $l_arr_arrows;
|
||||||
}
|
}
|
||||||
// return a single arrow
|
// Return a single arrow.
|
||||||
return $l_arr_Arrows[$p_int_Index];
|
return $l_arr_arrows[ $p_int_index ];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// phpcs:disable WordPress.PHP.DevelopmentFunctions.error_log_var_dump
|
||||||
|
// phpcs:disable WordPress.PHP.DevelopmentFunctions.error_log_print_r
|
||||||
/**
|
/**
|
||||||
* Displays a Variable.
|
* Displays a Variable.
|
||||||
*
|
*
|
||||||
* @author Stefan Herndler
|
|
||||||
* @since 1.5.0
|
* @since 1.5.0
|
||||||
* @param mixed $p_mixed_Value
|
* @param mixed $p_mixed_value The variable to display.
|
||||||
|
* @return void
|
||||||
*/
|
*/
|
||||||
public static function debug($p_mixed_Value) {
|
public static function debug( $p_mixed_value ) {
|
||||||
if (empty($p_mixed_Value)) {
|
if ( empty( $p_mixed_value ) ) {
|
||||||
var_dump($p_mixed_Value);
|
var_dump( $p_mixed_value );
|
||||||
|
|
||||||
} else if (is_array($p_mixed_Value)) {
|
} elseif ( is_array( $p_mixed_value ) ) {
|
||||||
printf("<pre>");
|
printf( '<pre>' );
|
||||||
print_r($p_mixed_Value);
|
print_r( $p_mixed_value );
|
||||||
printf("</pre>");
|
printf( '</pre>' );
|
||||||
|
|
||||||
} else if (is_object($p_mixed_Value)) {
|
} elseif ( is_object( $p_mixed_value ) ) {
|
||||||
printf("<pre>");
|
printf( '<pre>' );
|
||||||
print_r($p_mixed_Value);
|
print_r( $p_mixed_value );
|
||||||
printf("</pre>");
|
printf( '</pre>' );
|
||||||
|
|
||||||
} else if (is_numeric($p_mixed_Value) || is_int($p_mixed_Value)) {
|
} elseif ( is_numeric( $p_mixed_value ) || is_int( $p_mixed_value ) ) {
|
||||||
var_dump($p_mixed_Value);
|
var_dump( $p_mixed_value );
|
||||||
|
|
||||||
} else if (is_date($p_mixed_Value)) {
|
} elseif ( is_date( $p_mixed_value ) ) {
|
||||||
var_dump($p_mixed_Value);
|
var_dump( $p_mixed_value );
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
var_dump($p_mixed_Value);
|
var_dump( $p_mixed_value );
|
||||||
}
|
}
|
||||||
echo "<br/>";
|
echo '<br/>';
|
||||||
}
|
}
|
||||||
|
// phpcs:disable
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,19 +1,18 @@
|
||||||
<?php
|
<?php // phpcs:disable WordPress.Files.FileName.InvalidClassFileName, WordPress.Security.EscapeOutput.OutputNotEscaped
|
||||||
/**
|
/**
|
||||||
* Handles all WordPress hooks of this Plugin.
|
* Handles all WordPress hooks of this Plugin.
|
||||||
*
|
*
|
||||||
* @filesource
|
* @filesource
|
||||||
* @author Stefan Herndler
|
* @package footnotes
|
||||||
* @since 1.5.0 12.09.14 10:56
|
* @since 1.5.0
|
||||||
|
* @date 12.09.14 10:56
|
||||||
*
|
*
|
||||||
* Edited:
|
* @since 2.2.0 (TBD) 2020-12-12T1223+0100
|
||||||
* @since 2.2.0 2020-12-12T1223+0100
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Registers all WordPress Hooks and executes them on demand.
|
* Registers all WordPress Hooks and executes them on demand.
|
||||||
*
|
*
|
||||||
* @author Stefan Herndler
|
|
||||||
* @since 1.5.0
|
* @since 1.5.0
|
||||||
*/
|
*/
|
||||||
class MCI_Footnotes_Hooks {
|
class MCI_Footnotes_Hooks {
|
||||||
|
@ -21,74 +20,68 @@ class MCI_Footnotes_Hooks {
|
||||||
/**
|
/**
|
||||||
* Registers all WordPress hooks.
|
* Registers all WordPress hooks.
|
||||||
*
|
*
|
||||||
* @author Stefan Herndler
|
|
||||||
* @since 1.5.0
|
* @since 1.5.0
|
||||||
*/
|
*/
|
||||||
public static function registerHooks() {
|
public static function register_hooks() {
|
||||||
register_activation_hook(dirname(__FILE__) . "/../footnotes.php", array("MCI_Footnotes_Hooks", "activatePlugin"));
|
register_activation_hook( dirname( __FILE__ ) . '/../footnotes.php', array( 'MCI_Footnotes_Hooks', 'activate_plugin' ) );
|
||||||
register_deactivation_hook(dirname(__FILE__) . "/../footnotes.php", array("MCI_Footnotes_Hooks", "deactivatePlugin"));
|
register_deactivation_hook( dirname( __FILE__ ) . '/../footnotes.php', array( 'MCI_Footnotes_Hooks', 'deactivate_plugin' ) );
|
||||||
register_uninstall_hook(dirname(__FILE__) . "/../footnotes.php", array("MCI_Footnotes_Hooks", "uninstallPlugin"));
|
register_uninstall_hook( dirname( __FILE__ ) . '/../footnotes.php', array( 'MCI_Footnotes_Hooks', 'uninstall_plugin' ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Executed when the Plugin gets activated.
|
* Executed when the Plugin gets activated.
|
||||||
*
|
*
|
||||||
* @author Stefan Herndler
|
|
||||||
* @since 1.5.0
|
* @since 1.5.0
|
||||||
*/
|
*/
|
||||||
public static function activatePlugin() {
|
public static function activate_plugin() {
|
||||||
// currently unused
|
// Currently unused.
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Executed when the Plugin gets deactivated.
|
* Executed when the Plugin gets deactivated.
|
||||||
*
|
*
|
||||||
* @author Stefan Herndler
|
|
||||||
* @since 1.5.0
|
* @since 1.5.0
|
||||||
*/
|
*/
|
||||||
public static function deactivatePlugin() {
|
public static function deactivate_plugin() {
|
||||||
// currently unused
|
// Currently unused.
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Executed when the Plugin gets uninstalled.
|
* Executed when the Plugin gets uninstalled.
|
||||||
*
|
*
|
||||||
* @author Stefan Herndler
|
|
||||||
* @since 1.5.0
|
* @since 1.5.0
|
||||||
*
|
*
|
||||||
* Edit: ClearAll didn’t actually work.
|
* @since 2.2.0 this function is not called any longer when deleting the plugin.
|
||||||
* @since 2.2.0 this function is not called any longer when deleting the plugin
|
* Note: clear_all() didn’t actually work.
|
||||||
|
* @see class/settings.php
|
||||||
*/
|
*/
|
||||||
public static function uninstallPlugin() {
|
public static function uninstall_plugin() {
|
||||||
// WordPress User has to be logged in
|
// WordPress User has to be logged in.
|
||||||
if ( ! is_user_logged_in() ) {
|
if ( ! is_user_logged_in() ) {
|
||||||
wp_die(__('You must be logged in to run this script.', MCI_Footnotes_Config::C_STR_PLUGIN_NAME));
|
wp_die( __( 'You must be logged in to run this script.', 'footnotes' ) );
|
||||||
}
|
}
|
||||||
// WordPress User needs the permission to (un)install plugins
|
// WordPress User needs the permission to (un)install plugins.
|
||||||
if ( ! current_user_can( 'install_plugins' ) ) {
|
if ( ! current_user_can( 'install_plugins' ) ) {
|
||||||
wp_die(__('You do not have permission to run this script.', MCI_Footnotes_Config::C_STR_PLUGIN_NAME));
|
wp_die( __( 'You do not have permission to run this script.', 'footnotes' ) );
|
||||||
}
|
}
|
||||||
// deletes all settings and restore the default values
|
|
||||||
// MCI_Footnotes_Settings::instance()->ClearAll();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Add Links to the Plugin in the "installed Plugins" page.
|
* Add Links to the Plugin in the "installed Plugins" page.
|
||||||
*
|
*
|
||||||
* @author Stefan Herndler
|
|
||||||
* @since 1.5.0
|
* @since 1.5.0
|
||||||
* @param array $p_arr_Links Current Links.
|
* @param array $p_arr_links Current Links.
|
||||||
* @param string $p_str_PluginFileName Plugins init file name.
|
* @param string $p_str_plugin_file_name Plugins init file name.
|
||||||
* @return array
|
* @return array
|
||||||
*/
|
*/
|
||||||
public static function PluginLinks($p_arr_Links, $p_str_PluginFileName) {
|
public static function plugin_links( $p_arr_links, $p_str_plugin_file_name ) {
|
||||||
// append link to the WordPress Plugin page
|
// Append link to the WordPress Plugin page.
|
||||||
$p_arr_Links[] = sprintf('<a href="http://wordpress.org/support/plugin/footnotes" target="_blank">%s</a>', __('Support', MCI_Footnotes_Config::C_STR_PLUGIN_NAME));
|
$p_arr_links[] = sprintf( '<a href="http://wordpress.org/support/plugin/footnotes" target="_blank">%s</a>', __( 'Support', 'footnotes' ) );
|
||||||
// append link to the Settings page
|
// Append link to the settings page.
|
||||||
$p_arr_Links[] = sprintf('<a href="%s">%s</a>', admin_url('admin.php?page=mfmmf-footnotes'), __('Settings', MCI_Footnotes_Config::C_STR_PLUGIN_NAME));
|
$p_arr_links[] = sprintf( '<a href="%s">%s</a>', admin_url( 'admin.php?page=mfmmf-footnotes' ), __( 'Settings', 'footnotes' ) );
|
||||||
// append link to the PlayPal Donate function
|
// Append link to the PayPal donate function.
|
||||||
$p_arr_Links[] = sprintf('<a href="https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=6Z6CZDW8PPBBJ" target="_blank">%s</a>', __('Donate', MCI_Footnotes_Config::C_STR_PLUGIN_NAME));
|
$p_arr_links[] = sprintf( '<a href="https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=6Z6CZDW8PPBBJ" target="_blank">%s</a>', __( 'Donate', 'footnotes' ) );
|
||||||
// return new links
|
// Return new links.
|
||||||
return $p_arr_Links;
|
return $p_arr_links;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
256
class/init.php
256
class/init.php
|
@ -1,13 +1,11 @@
|
||||||
<?php
|
<?php // phpcs:disable WordPress.Files.FileName.InvalidClassFileName
|
||||||
/**
|
/**
|
||||||
* Includes the main Class of the Plugin.
|
* Includes the main Class of the Plugin.
|
||||||
*
|
*
|
||||||
* @filesource
|
* @filesource
|
||||||
* @author Stefan Herndler
|
* @package footnotes
|
||||||
* @since 1.5.0 12.09.14 10:56
|
* @since 1.5.0
|
||||||
*
|
* @date 12.09.14 10:56
|
||||||
*
|
|
||||||
* @lastmodified 2021-02-19T2031+0100
|
|
||||||
*
|
*
|
||||||
* @since 1.6.5 Bugfix: Improve widgets registration, thanks to @felipelavinz code contribution.
|
* @since 1.6.5 Bugfix: Improve widgets registration, thanks to @felipelavinz code contribution.
|
||||||
* @since 1.6.5 Update: Fix for deprecated PHP function create_function(), thanks to @psykonevro @daliasued bug reports, thanks to @felipelavinz code contribution.
|
* @since 1.6.5 Update: Fix for deprecated PHP function create_function(), thanks to @psykonevro @daliasued bug reports, thanks to @felipelavinz code contribution.
|
||||||
|
@ -27,7 +25,6 @@
|
||||||
/**
|
/**
|
||||||
* Entry point of the Plugin. Loads the Dashboard and executes the Task.
|
* Entry point of the Plugin. Loads the Dashboard and executes the Task.
|
||||||
*
|
*
|
||||||
* @author Stefan Herndler
|
|
||||||
* @since 1.5.0
|
* @since 1.5.0
|
||||||
*/
|
*/
|
||||||
class MCI_Footnotes {
|
class MCI_Footnotes {
|
||||||
|
@ -35,79 +32,77 @@ class MCI_Footnotes {
|
||||||
/**
|
/**
|
||||||
* Reference to the Plugin Task object.
|
* Reference to the Plugin Task object.
|
||||||
*
|
*
|
||||||
* @author Stefan Herndler
|
|
||||||
* @since 1.5.0
|
* @since 1.5.0
|
||||||
* @var null|MCI_Footnotes_Task
|
* @var null|MCI_Footnotes_Task
|
||||||
*/
|
*/
|
||||||
public $a_obj_Task = null;
|
public $a_obj_task = null;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Template process and script / stylesheet load optimization.
|
* Idenfifies whether tooltips are enabled. Actual value depends on settings.
|
||||||
*
|
|
||||||
* - Bugfix: Templates: optimize template load and processing based on settings, thanks to @misfist code contribution.
|
|
||||||
*
|
|
||||||
* @since 2.4.0
|
|
||||||
* @date 2021-01-04T1355+0100
|
|
||||||
*
|
|
||||||
* @author Patrizia Lutz @misfist
|
|
||||||
*
|
|
||||||
* @link https://wordpress.org/support/topic/template-override-filter/#post-13864301
|
|
||||||
* @link https://github.com/misfist/footnotes/releases/tag/2.4.0d3 repository
|
|
||||||
* @link https://github.com/misfist/footnotes/compare/2.4.0%E2%80%A62.4.0d3 diff
|
|
||||||
*
|
*
|
||||||
|
* @contributor Patrizia Lutz @misfist
|
||||||
* @var bool
|
* @var bool
|
||||||
*
|
*
|
||||||
* Streamline process depending on tooltip enabled status.
|
* @todo Refactor to have defines and assignments only in this class,
|
||||||
* Load tooltip inline script only if jQuery tooltips are enabled.
|
* then re-use these properties also in class/task.php (and elsewhere).
|
||||||
* Actual value depends on settings.
|
* Account for priority level issues. These properties must be assigned before
|
||||||
|
* the hooks—whose priority level may be configured to 0—are called in class/task.php.
|
||||||
*/
|
*/
|
||||||
public static $a_bool_TooltipsEnabled = false;
|
public static $a_bool_tooltips_enabled = false;
|
||||||
public static $a_bool_AlternativeTooltipsEnabled = false;
|
|
||||||
|
/**
|
||||||
|
* Idenfifies whether alternative tooltips are enabled. Actual value depends
|
||||||
|
* on settings.
|
||||||
|
*
|
||||||
|
* @contributor Patrizia Lutz @misfist
|
||||||
|
* @var bool
|
||||||
|
*
|
||||||
|
* @todo Refactor to have defines only here, and use assignments also in class/task.php.
|
||||||
|
*/
|
||||||
|
public static $a_bool_alternative_tooltips_enabled = false;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Executes the Plugin.
|
* Executes the Plugin.
|
||||||
*
|
*
|
||||||
* @author Stefan Herndler
|
|
||||||
* @since 1.5.0
|
* @since 1.5.0
|
||||||
*
|
*
|
||||||
*
|
|
||||||
* - Bugfix: Improve widgets registration, thanks to @felipelavinz code contribution.
|
* - Bugfix: Improve widgets registration, thanks to @felipelavinz code contribution.
|
||||||
*
|
*
|
||||||
* @since 1.6.5
|
* @since 1.6.5
|
||||||
*
|
*
|
||||||
* @contributor @felipelavinz
|
* @contributor @felipelavinz
|
||||||
|
* @link https://github.com/benleyjyc/footnotes/commit/87173d2980c7ff90e12ffee94ca7153e11163793
|
||||||
|
* @date 2020-02-25
|
||||||
* @link https://github.com/media-competence-institute/footnotes/commit/87173d2980c7ff90e12ffee94ca7153e11163793
|
* @link https://github.com/media-competence-institute/footnotes/commit/87173d2980c7ff90e12ffee94ca7153e11163793
|
||||||
*
|
*
|
||||||
* @see self::initializeWidgets()
|
* @see self::initialize_widgets()
|
||||||
*/
|
*/
|
||||||
public function run() {
|
public function run() {
|
||||||
// register language
|
// Register language.
|
||||||
MCI_Footnotes_Language::registerHooks();
|
MCI_Footnotes_Language::register_hooks();
|
||||||
// register Button hooks
|
// Register Button hooks.
|
||||||
MCI_Footnotes_WYSIWYG::registerHooks();
|
MCI_Footnotes_WYSIWYG::register_hooks();
|
||||||
// register general hooks
|
// Register general hooks.
|
||||||
MCI_Footnotes_Hooks::registerHooks();
|
MCI_Footnotes_Hooks::register_hooks();
|
||||||
|
|
||||||
// initialize the Plugin Dashboard
|
// Initialize the Plugin Dashboard.
|
||||||
$this->initializeDashboard();
|
$this->initialize_dashboard();
|
||||||
// initialize the Plugin Task
|
// Initialize the Plugin Task.
|
||||||
$this->initializeTask();
|
$this->initialize_task();
|
||||||
|
|
||||||
// Register all Public Stylesheets and Scripts
|
// Register all Public Stylesheets and Scripts.
|
||||||
add_action('init', array($this, 'registerPublic'));
|
add_action( 'init', array( $this, 'register_public' ) );
|
||||||
// Enqueue all Public Stylesheets and Scripts
|
// Enqueue all Public Stylesheets and Scripts.
|
||||||
add_action('wp_enqueue_scripts', array($this, 'registerPublic'));
|
add_action( 'wp_enqueue_scripts', array( $this, 'register_public' ) );
|
||||||
// Register all Widgets of the Plugin.
|
// Register all Widgets of the Plugin..
|
||||||
add_action('widgets_init', array($this, 'initializeWidgets'));
|
add_action( 'widgets_init', array( $this, 'initialize_widgets' ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Initializes all Widgets of the Plugin.
|
* Initializes all Widgets of the Plugin.
|
||||||
*
|
*
|
||||||
* @author Stefan Herndler
|
|
||||||
* @since 1.5.0
|
* @since 1.5.0
|
||||||
*
|
*
|
||||||
*
|
|
||||||
* - Update: Fix for deprecated PHP function create_function(), thanks to @psykonevro @daliasued bug reports, thanks to @felipelavinz code contribution
|
* - Update: Fix for deprecated PHP function create_function(), thanks to @psykonevro @daliasued bug reports, thanks to @felipelavinz code contribution
|
||||||
*
|
*
|
||||||
* @since 1.6.5
|
* @since 1.6.5
|
||||||
|
@ -129,37 +124,34 @@ class MCI_Footnotes {
|
||||||
* and use the bare register_widget() here.
|
* and use the bare register_widget() here.
|
||||||
* @see self::run()
|
* @see self::run()
|
||||||
*
|
*
|
||||||
* Also, the visibility of initializeWidgets() is not private any longer.
|
* Also, the visibility of initialize_widgets() is not private any longer.
|
||||||
*/
|
*/
|
||||||
public function initializeWidgets() {
|
public function initialize_widgets() {
|
||||||
register_widget( "MCI_Footnotes_Widget_ReferenceContainer" );
|
register_widget( 'MCI_Footnotes_Widget_Reference_container' );
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Initializes the Dashboard of the Plugin and loads them.
|
* Initializes the Dashboard of the Plugin and loads them.
|
||||||
*
|
*
|
||||||
* @author Stefan Herndler
|
|
||||||
* @since 1.5.0
|
* @since 1.5.0
|
||||||
*/
|
*/
|
||||||
private function initializeDashboard() {
|
private function initialize_dashboard() {
|
||||||
new MCI_Footnotes_Layout_Init();
|
new MCI_Footnotes_Layout_Init();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Initializes the Plugin Task and registers the Task hooks.
|
* Initializes the Plugin Task and registers the Task hooks.
|
||||||
*
|
*
|
||||||
* @author Stefan Herndler
|
|
||||||
* @since 1.5.0
|
* @since 1.5.0
|
||||||
*/
|
*/
|
||||||
private function initializeTask() {
|
private function initialize_task() {
|
||||||
$this->a_obj_Task = new MCI_Footnotes_Task();
|
$this->a_obj_task = new MCI_Footnotes_Task();
|
||||||
$this->a_obj_Task->registerHooks();
|
$this->a_obj_task->register_hooks();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Registers and enqueues scripts and stylesheets to the public pages.
|
* Registers and enqueues scripts and stylesheets to the public pages.
|
||||||
*
|
*
|
||||||
* @author Stefan Herndler
|
|
||||||
* @since 1.5.0
|
* @since 1.5.0
|
||||||
*
|
*
|
||||||
* @since 2.0.0 Update: Tooltips: fix disabling bug by loading jQuery UI library, thanks to @rajinderverma @ericcorbett2 @honlapdavid @mmallett bug reports, thanks to @vonpiernik code contribution.
|
* @since 2.0.0 Update: Tooltips: fix disabling bug by loading jQuery UI library, thanks to @rajinderverma @ericcorbett2 @honlapdavid @mmallett bug reports, thanks to @vonpiernik code contribution.
|
||||||
|
@ -168,7 +160,7 @@ class MCI_Footnotes {
|
||||||
* @since 2.1.4 automate passing version number for cache busting 2020-11-30T0646+0100
|
* @since 2.1.4 automate passing version number for cache busting 2020-11-30T0646+0100
|
||||||
* @since 2.1.4 optionally enqueue an extra stylesheet 2020-12-04T2231+0100
|
* @since 2.1.4 optionally enqueue an extra stylesheet 2020-12-04T2231+0100
|
||||||
*/
|
*/
|
||||||
public function registerPublic() {
|
public function register_public() {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Enqueues external scripts.
|
* Enqueues external scripts.
|
||||||
|
@ -181,10 +173,10 @@ class MCI_Footnotes {
|
||||||
*
|
*
|
||||||
* The condition about tooltips was missing, only the not-alternative-tooltips part was present.
|
* The condition about tooltips was missing, only the not-alternative-tooltips part was present.
|
||||||
*/
|
*/
|
||||||
// set conditions re-used for stylesheet enqueuing:
|
// Set conditions re-used for stylesheet enqueuing.
|
||||||
self::$a_bool_TooltipsEnabled = MCI_Footnotes_Convert::toBool(MCI_Footnotes_Settings::instance()->get(MCI_Footnotes_Settings::C_BOOL_FOOTNOTES_MOUSE_OVER_BOX_ENABLED ) );
|
self::$a_bool_tooltips_enabled = MCI_Footnotes_Convert::to_bool( MCI_Footnotes_Settings::instance()->get( MCI_Footnotes_Settings::C_STR_FOOTNOTES_MOUSE_OVER_BOX_ENABLED ) );
|
||||||
self::$a_bool_AlternativeTooltipsEnabled = MCI_Footnotes_Convert::toBool(MCI_Footnotes_Settings::instance()->get(MCI_Footnotes_Settings::C_BOOL_FOOTNOTES_MOUSE_OVER_BOX_ALTERNATIVE ) );
|
self::$a_bool_alternative_tooltips_enabled = MCI_Footnotes_Convert::to_bool( MCI_Footnotes_Settings::instance()->get( MCI_Footnotes_Settings::C_STR_FOOTNOTES_MOUSE_OVER_BOX_ALTERNATIVE ) );
|
||||||
$l_str_ScriptMode = MCI_Footnotes_Settings::instance()->get(MCI_Footnotes_Settings::C_STR_FOOTNOTES_REFERENCE_CONTAINER_SCRIPT_MODE);
|
$l_str_script_mode = MCI_Footnotes_Settings::instance()->get( MCI_Footnotes_Settings::C_STR_FOOTNOTES_REFERENCE_CONTAINER_SCRIPT_MODE );
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Enqueues the jQuery library registered by WordPress.
|
* Enqueues the jQuery library registered by WordPress.
|
||||||
|
@ -201,62 +193,73 @@ class MCI_Footnotes {
|
||||||
* After adding the alternative reference container, jQuery has become optional,
|
* After adding the alternative reference container, jQuery has become optional,
|
||||||
* but still enabled by default.
|
* but still enabled by default.
|
||||||
*/
|
*/
|
||||||
if ( $l_str_ScriptMode == 'jquery' || ( self::$a_bool_TooltipsEnabled && ! self::$a_bool_AlternativeTooltipsEnabled ) ) {
|
if ( 'jquery' === $l_str_script_mode || ( self::$a_bool_tooltips_enabled && ! self::$a_bool_alternative_tooltips_enabled ) ) {
|
||||||
|
|
||||||
wp_enqueue_script( 'jquery' );
|
wp_enqueue_script( 'jquery' );
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( self::$a_bool_TooltipsEnabled && ! self::$a_bool_AlternativeTooltipsEnabled ) {
|
if ( self::$a_bool_tooltips_enabled && ! self::$a_bool_alternative_tooltips_enabled ) {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Enqueues the jQuery Tools library shipped with the plugin.
|
* Enqueues the jQuery Tools library shipped with the plugin.
|
||||||
*
|
*
|
||||||
* redacted jQuery.browser, completed minification;
|
* Redacted jQuery.browser, completed minification;
|
||||||
* see full header in js/jquery.tools.js
|
* see full header in js/jquery.tools.js.
|
||||||
* added versioning 2020-11-18T2150+0100
|
*
|
||||||
* not use '-js' in the handle, is appended automatically
|
* Add versioning.
|
||||||
|
*
|
||||||
|
* @since 2.1.2
|
||||||
|
* @date 2020-11-18T2150+0100
|
||||||
|
*
|
||||||
|
* No '-js' in the handle, is appended automatically.
|
||||||
|
*
|
||||||
|
* Deferring to the footer breaks jQuery tooltip display.
|
||||||
|
* @date 2021-02-23T1105+0100
|
||||||
*/
|
*/
|
||||||
wp_enqueue_script(
|
wp_enqueue_script(
|
||||||
'mci-footnotes-jquery-tools',
|
'mci-footnotes-jquery-tools',
|
||||||
plugins_url( 'footnotes/js/jquery.tools.min.js' ),
|
plugins_url( 'footnotes/js/jquery.tools.min.js' ),
|
||||||
array(),
|
array(),
|
||||||
'1.2.7.redacted.2'
|
'1.2.7.redacted.2',
|
||||||
|
false
|
||||||
);
|
);
|
||||||
|
|
||||||
/**
|
|
||||||
* Registers jQuery UI from the JavaScript Content Delivery Network.
|
|
||||||
*
|
|
||||||
* - Update: Tooltips: fix disabling bug by loading jQuery UI library, thanks to @rajinderverma @ericcorbett2 @honlapdavid @mmallett bug reports, thanks to @vonpiernik code contribution.
|
|
||||||
*
|
|
||||||
* @since 2.0.0
|
|
||||||
* Alternatively, fetch jQuery UI from cdnjs.cloudflare.com:
|
|
||||||
* @since 2.0.0 add jQueryUI from Cloudflare 2020-10-26T1907+0100
|
|
||||||
* Used to add jQuery UI following @vonpiernik:
|
|
||||||
* <https://wordpress.org/support/topic/tooltip-hover-not-showing/#post-13456762>:
|
|
||||||
*
|
|
||||||
*
|
|
||||||
* jQueryUI re-enables the tooltip infobox disabled when WPv5.5 was released.
|
|
||||||
*
|
|
||||||
* Updated for v2.0.4 by adding jQuery UI from WordPress following @check2020de:
|
|
||||||
* <https://wordpress.org/support/topic/gdpr-issue-with-jquery/>
|
|
||||||
* See <https://wordpress.stackexchange.com/questions/273986/correct-way-to-enqueue-jquery-ui>
|
|
||||||
*
|
|
||||||
* This was enabled in Footnotes v2.0.0 through v2.0.3.
|
|
||||||
* Re-added for 2.0.9d1 / 2.1.1d0 to look whether it can fix a broken tooltip display. 2020-11-07T1601+0100/2020-11-08T2246+0100
|
|
||||||
*/
|
|
||||||
//wp_register_script( 'jQueryUI', 'https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.js', null, null, false ); // in header 2020-11-09T2003+0100
|
|
||||||
//wp_enqueue_script( 'jQueryUI' );
|
|
||||||
/**
|
|
||||||
* This is then needed instead of the above first instance:
|
|
||||||
* Add jQuery Tools and finish adding jQueryUI: 2020-11-08T1638+0100/2020-11-08T2246+0100
|
|
||||||
*/
|
|
||||||
//wp_enqueue_script('mci-footnotes-js-jquery-tools', plugins_url('../js/jquery.tools.min.js', __FILE__), ['jQueryUI']);
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Enqueues some jQuery UI libraries registered by WordPress.
|
* Enqueues some jQuery UI libraries registered by WordPress.
|
||||||
*
|
*
|
||||||
* @since 2.0.4 add jQuery UI from WordPress 2020-11-01T1902+0100
|
* - Update: Tooltips: fix disabling bug by loading jQuery UI library, thanks to @rajinderverma @ericcorbett2 @honlapdavid @mmallett bug reports, thanks to @vonpiernik code contribution.
|
||||||
|
*
|
||||||
|
* @since 2.0.0
|
||||||
|
*
|
||||||
|
* @reporter @rajinderverma
|
||||||
|
* @link https://wordpress.org/support/topic/tooltip-hover-not-showing/
|
||||||
|
*
|
||||||
|
* @reporter @ericcorbett2
|
||||||
|
* @link https://wordpress.org/support/topic/tooltip-hover-not-showing/#post-13324142
|
||||||
|
*
|
||||||
|
* @reporter @honlapdavid
|
||||||
|
* @link https://wordpress.org/support/topic/tooltip-hover-not-showing/#post-13355421
|
||||||
|
*
|
||||||
|
* @reporter @mmallett
|
||||||
|
* @link https://wordpress.org/support/topic/tooltip-hover-not-showing/#post-13445437
|
||||||
|
*
|
||||||
|
* Fetch jQuery UI from cdnjs.cloudflare.com.
|
||||||
|
* @since 2.0.0
|
||||||
|
* @date 2020-10-26T1907+0100
|
||||||
|
* @contributor @vonpiernik
|
||||||
|
* @link https://wordpress.org/support/topic/tooltip-hover-not-showing/#post-13456762
|
||||||
|
*
|
||||||
|
* jQueryUI re-enables the tooltip infobox disabled when WPv5.5 was released. * @since 2.1.2
|
||||||
|
*
|
||||||
|
* - Update: Libraries: Load jQuery UI from WordPress, thanks to @check2020de issue report.
|
||||||
|
*
|
||||||
|
* @since 2.0.4
|
||||||
|
* @date 2020-11-01T1902+0100
|
||||||
|
* @reporter @check2020de
|
||||||
|
* @link https://wordpress.org/support/topic/gdpr-issue-with-jquery/
|
||||||
|
* @link https://wordpress.stackexchange.com/questions/273986/correct-way-to-enqueue-jquery-ui
|
||||||
|
*
|
||||||
* If alternative tooltips are enabled, these libraries are not needed.
|
* If alternative tooltips are enabled, these libraries are not needed.
|
||||||
*/
|
*/
|
||||||
wp_enqueue_script( 'jquery-ui-core' );
|
wp_enqueue_script( 'jquery-ui-core' );
|
||||||
|
@ -308,34 +311,43 @@ class MCI_Footnotes {
|
||||||
* The media scope argument 'all' is the default.
|
* The media scope argument 'all' is the default.
|
||||||
* No need to use '-css' in the handle, as this is appended automatically.
|
* No need to use '-css' in the handle, as this is appended automatically.
|
||||||
*/
|
*/
|
||||||
// set tooltip mode for use in stylesheet name:
|
// Set tooltip mode for use in stylesheet name.
|
||||||
if ( self::$a_bool_TooltipsEnabled ) {
|
if ( self::$a_bool_tooltips_enabled ) {
|
||||||
if ( self::$a_bool_AlternativeTooltipsEnabled ) {
|
if ( self::$a_bool_alternative_tooltips_enabled ) {
|
||||||
$l_str_TooltipMode = 'al';
|
$l_str_tooltip_mode_short = 'al';
|
||||||
$l_str_TComplement = 'ternative-tooltips';
|
$l_str_tooltip_mode_rest = 'ternative-tooltips';
|
||||||
} else {
|
} else {
|
||||||
$l_str_TooltipMode = 'jq';
|
$l_str_tooltip_mode_short = 'jq';
|
||||||
$l_str_TComplement = 'uery-tooltips';
|
$l_str_tooltip_mode_rest = 'uery-tooltips';
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
$l_str_TooltipMode = 'no';
|
$l_str_tooltip_mode_short = 'no';
|
||||||
$l_str_TComplement = '-tooltips';
|
$l_str_tooltip_mode_rest = '-tooltips';
|
||||||
}
|
}
|
||||||
|
|
||||||
// set basic responsive page layout mode for use in stylesheet name:
|
// Set basic responsive page layout mode for use in stylesheet name.
|
||||||
$l_str_PageLayoutOption = MCI_Footnotes_Settings::instance()->get(MCI_Footnotes_Settings::C_STR_FOOTNOTES_PAGE_LAYOUT_SUPPORT);
|
$l_str_page_layout_option = MCI_Footnotes_Settings::instance()->get( MCI_Footnotes_Settings::C_STR_FOOTNOTES_PAGE_LAYOUT_SUPPORT );
|
||||||
switch ( $l_str_PageLayoutOption ) {
|
switch ( $l_str_page_layout_option ) {
|
||||||
case "reference-container": $l_str_LayoutMode = '1'; break;
|
case 'reference-container':
|
||||||
case "entry-content" : $l_str_LayoutMode = '2'; break;
|
$l_str_layout_mode = '1';
|
||||||
case "main-content" : $l_str_LayoutMode = '3'; break;
|
break;
|
||||||
case "none": default: $l_str_LayoutMode = '0'; break;
|
case 'entry-content':
|
||||||
|
$l_str_layout_mode = '2';
|
||||||
|
break;
|
||||||
|
case 'main-content':
|
||||||
|
$l_str_layout_mode = '3';
|
||||||
|
break;
|
||||||
|
case 'none':
|
||||||
|
default:
|
||||||
|
$l_str_layout_mode = '0';
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
// enqueue the tailored united minified stylesheet:
|
// Enqueue the tailored united minified stylesheet.
|
||||||
wp_enqueue_style(
|
wp_enqueue_style(
|
||||||
'mci-footnotes-' . $l_str_TooltipMode . $l_str_TComplement . '-pagelayout-' . $l_str_PageLayoutOption,
|
'mci-footnotes-' . $l_str_tooltip_mode_short . $l_str_tooltip_mode_rest . '-pagelayout-' . $l_str_page_layout_option,
|
||||||
plugins_url(
|
plugins_url(
|
||||||
MCI_Footnotes_Config::C_STR_PLUGIN_NAME . '/css/footnotes-' . $l_str_TooltipMode . 'ttbrpl' . $l_str_LayoutMode . '.min.css'
|
MCI_Footnotes_Config::C_STR_PLUGIN_NAME . '/css/footnotes-' . $l_str_tooltip_mode_short . 'ttbrpl' . $l_str_layout_mode . '.min.css'
|
||||||
),
|
),
|
||||||
array(),
|
array(),
|
||||||
C_STR_FOOTNOTES_VERSION,
|
C_STR_FOOTNOTES_VERSION,
|
||||||
|
@ -356,12 +368,12 @@ class MCI_Footnotes {
|
||||||
wp_enqueue_style( 'mci-footnotes-tooltips', plugins_url( MCI_Footnotes_Config::C_STR_PLUGIN_NAME . '/css/dev-tooltips.css' ), array(), C_STR_FOOTNOTES_VERSION );
|
wp_enqueue_style( 'mci-footnotes-tooltips', plugins_url( MCI_Footnotes_Config::C_STR_PLUGIN_NAME . '/css/dev-tooltips.css' ), array(), C_STR_FOOTNOTES_VERSION );
|
||||||
wp_enqueue_style( 'mci-footnotes-alternative', plugins_url( MCI_Footnotes_Config::C_STR_PLUGIN_NAME . '/css/dev-tooltips-alternative.css' ), array(), C_STR_FOOTNOTES_VERSION );
|
wp_enqueue_style( 'mci-footnotes-alternative', plugins_url( MCI_Footnotes_Config::C_STR_PLUGIN_NAME . '/css/dev-tooltips-alternative.css' ), array(), C_STR_FOOTNOTES_VERSION );
|
||||||
|
|
||||||
$l_str_PageLayoutOption = MCI_Footnotes_Settings::instance()->get(MCI_Footnotes_Settings::C_STR_FOOTNOTES_PAGE_LAYOUT_SUPPORT);
|
$l_str_page_layout_option = MCI_Footnotes_Settings::instance()->get( MCI_Footnotes_Settings::C_STR_FOOTNOTES_PAGE_LAYOUT_SUPPORT );
|
||||||
if ($l_str_PageLayoutOption != 'none') {
|
if ( 'none' !== $l_str_page_layout_option ) {
|
||||||
wp_enqueue_style(
|
wp_enqueue_style(
|
||||||
'mci-footnotes-layout-' . $l_str_PageLayoutOption,
|
'mci-footnotes-layout-' . $l_str_page_layout_option,
|
||||||
plugins_url(
|
plugins_url(
|
||||||
MCI_Footnotes_Config::C_STR_PLUGIN_NAME . '/css/dev-layout-' . $l_str_PageLayoutOption . '.css'
|
MCI_Footnotes_Config::C_STR_PLUGIN_NAME . '/css/dev-layout-' . $l_str_page_layout_option . '.css'
|
||||||
),
|
),
|
||||||
array(),
|
array(),
|
||||||
C_STR_FOOTNOTES_VERSION,
|
C_STR_FOOTNOTES_VERSION,
|
||||||
|
|
|
@ -1,13 +1,11 @@
|
||||||
<?php
|
<?php // phpcs:disable WordPress.Files.FileName.InvalidClassFileName
|
||||||
/**
|
/**
|
||||||
* Loads text domain of current or default language for localization.
|
* Loads text domain of current or default language for localization.
|
||||||
*
|
*
|
||||||
* @filesource
|
* @filesource
|
||||||
* @author Stefan Herndler
|
* @package footnotes
|
||||||
* @since 1.5.0 14.09.14 17:47
|
* @since 1.5.0
|
||||||
*
|
* @date 14.09.14 17:47
|
||||||
*
|
|
||||||
* @lastmodified 2021-02-18T2028+0100
|
|
||||||
*
|
*
|
||||||
* @since 2.0.0 Bugfix: Localization: correct function call apply_filters() with all required arguments after PHP 7.1 promoted warning to error, thanks to @matkus2 bug report and code contribution.
|
* @since 2.0.0 Bugfix: Localization: correct function call apply_filters() with all required arguments after PHP 7.1 promoted warning to error, thanks to @matkus2 bug report and code contribution.
|
||||||
* @since 2.1.6 Bugfix: Localization: conform to WordPress plugin language file name scheme, thanks to @nikelaos bug report.
|
* @since 2.1.6 Bugfix: Localization: conform to WordPress plugin language file name scheme, thanks to @nikelaos bug report.
|
||||||
|
@ -16,7 +14,6 @@
|
||||||
/**
|
/**
|
||||||
* Loads text domain of current or default language for localization.
|
* Loads text domain of current or default language for localization.
|
||||||
*
|
*
|
||||||
* @author Stefan Herndler
|
|
||||||
* @since 1.5.0
|
* @since 1.5.0
|
||||||
*/
|
*/
|
||||||
class MCI_Footnotes_Language {
|
class MCI_Footnotes_Language {
|
||||||
|
@ -24,18 +21,16 @@ class MCI_Footnotes_Language {
|
||||||
/**
|
/**
|
||||||
* Register WordPress Hook.
|
* Register WordPress Hook.
|
||||||
*
|
*
|
||||||
* @author Stefan Herndler
|
|
||||||
* @since 1.5.0
|
* @since 1.5.0
|
||||||
*/
|
*/
|
||||||
public static function registerHooks() {
|
public static function register_hooks() {
|
||||||
add_action('plugins_loaded', array("MCI_Footnotes_Language", "loadTextDomain"));
|
add_action( 'plugins_loaded', array( 'MCI_Footnotes_Language', 'load_text_domain' ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Loads the text domain for current WordPress language if exists.
|
* Loads the text domain for current WordPress language if exists.
|
||||||
* Otherwise fallback "en_GB" will be loaded.
|
* Otherwise fallback "en_GB" will be loaded.
|
||||||
*
|
*
|
||||||
* @author Stefan Herndler
|
|
||||||
* @since 1.5.0
|
* @since 1.5.0
|
||||||
*
|
*
|
||||||
*
|
*
|
||||||
|
@ -47,7 +42,7 @@ class MCI_Footnotes_Language {
|
||||||
* @contributor @matkus2
|
* @contributor @matkus2
|
||||||
* @link https://wordpress.org/support/topic/error-missing-parameter-if-using-php-7-1-or-later/
|
* @link https://wordpress.org/support/topic/error-missing-parameter-if-using-php-7-1-or-later/
|
||||||
*
|
*
|
||||||
* Add 3rd (empty) argument in apply_filters() to prevent PHP from throwing an error:
|
* Add 3rd (empty) argument in apply_filters() to prevent PHP from throwing an error.
|
||||||
* “Fatal error: Uncaught ArgumentCountError: Too few arguments to function apply_filters()”
|
* “Fatal error: Uncaught ArgumentCountError: Too few arguments to function apply_filters()”
|
||||||
*
|
*
|
||||||
* Yet get_locale() is defined w/o parameters in wp-includes/l10n.php:30, and
|
* Yet get_locale() is defined w/o parameters in wp-includes/l10n.php:30, and
|
||||||
|
@ -57,7 +52,7 @@ class MCI_Footnotes_Language {
|
||||||
* But apply_filters() is defined with a 3rd parameter (and w/o the first one) in
|
* But apply_filters() is defined with a 3rd parameter (and w/o the first one) in
|
||||||
* wp-includes/class-wp-hook.php:264, as public function apply_filters( $value, $args ).
|
* wp-includes/class-wp-hook.php:264, as public function apply_filters( $value, $args ).
|
||||||
*
|
*
|
||||||
* Taking it all together, probably the full function definition would be:
|
* Taking it all together, probably the full function definition would be
|
||||||
* public function apply_filters( $tag, $value, $args ).
|
* public function apply_filters( $tag, $value, $args ).
|
||||||
* In the case of get_locale(), $args is empty.
|
* In the case of get_locale(), $args is empty.
|
||||||
*
|
*
|
||||||
|
@ -65,22 +60,21 @@ class MCI_Footnotes_Language {
|
||||||
* @link https://www.php.net/manual/en/migration71.incompatible.php
|
* @link https://www.php.net/manual/en/migration71.incompatible.php
|
||||||
* @link https://www.php.net/manual/en/migration71.incompatible.php#migration71.incompatible.too-few-arguments-exception
|
* @link https://www.php.net/manual/en/migration71.incompatible.php#migration71.incompatible.too-few-arguments-exception
|
||||||
*/
|
*/
|
||||||
public static function loadTextDomain() {
|
public static function load_text_domain() {
|
||||||
|
|
||||||
// if language file with localization exists:
|
// If language file with localization exists.
|
||||||
if ( self::load( apply_filters( 'plugin_locale', get_locale(), '' ) ) ) {
|
if ( self::load( apply_filters( 'plugin_locale', get_locale(), '' ) ) ) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
// else fall back to British English:
|
// Else fall back to British English.
|
||||||
self::load( "en_GB" );
|
self::load( 'en_GB' );
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Loads a specific text domain.
|
* Loads a specific text domain.
|
||||||
*
|
*
|
||||||
* @author Stefan Herndler
|
|
||||||
* @since 1.5.1
|
* @since 1.5.1
|
||||||
* @param string $p_str_LanguageCode Language Code to load a specific text domain.
|
* @param string $p_str_language_code Language Code to load a specific text domain.
|
||||||
* @return bool
|
* @return bool
|
||||||
*
|
*
|
||||||
*
|
*
|
||||||
|
@ -92,16 +86,14 @@ class MCI_Footnotes_Language {
|
||||||
* @reporter @nikelaos
|
* @reporter @nikelaos
|
||||||
* @link https://wordpress.org/support/topic/more-feature-ideas/
|
* @link https://wordpress.org/support/topic/more-feature-ideas/
|
||||||
*
|
*
|
||||||
* That is done by using load_plugin_textdomain():
|
* That is done by using load_plugin_textdomain().
|
||||||
* “The .mo file should be named based on the text domain with a dash, and then the locale exactly.”
|
* “The .mo file should be named based on the text domain with a dash, and then the locale exactly.”
|
||||||
* @see wp-includes/l10n.php:857
|
* @see wp-includes/l10n.php:857
|
||||||
*/
|
*/
|
||||||
private static function load($p_str_LanguageCode) {
|
private static function load( $p_str_language_code ) {
|
||||||
return load_plugin_textdomain(
|
return load_plugin_textdomain(
|
||||||
MCI_Footnotes_Config::C_STR_PLUGIN_NAME,
|
MCI_Footnotes_Config::C_STR_PLUGIN_NAME,
|
||||||
// This argument only fills the gap left by a deprecated argument (since WP2.7):
|
|
||||||
false,
|
false,
|
||||||
// The plugin basedir is provided; trailing slash would be clipped:
|
|
||||||
MCI_Footnotes_Config::C_STR_PLUGIN_NAME . '/languages'
|
MCI_Footnotes_Config::C_STR_PLUGIN_NAME . '/languages'
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
File diff suppressed because it is too large
Load diff
1854
class/task.php
1854
class/task.php
File diff suppressed because it is too large
Load diff
|
@ -1,39 +1,20 @@
|
||||||
<?php
|
<?php // phpcs:disable WordPress.Files.FileName.InvalidClassFileName
|
||||||
/**
|
/**
|
||||||
* Includes the Template Engine to load and handle all Template files of the Plugin.
|
* Includes the Template Engine to load and handle all Template files of the Plugin.
|
||||||
*
|
*
|
||||||
* @filesource
|
* @filesource
|
||||||
* @author Stefan Herndler
|
* @package footnotes
|
||||||
* @since 1.5.0 14.09.14 10:58
|
* @since 1.5.0
|
||||||
|
* @date 14.09.14 10:58
|
||||||
*
|
*
|
||||||
*
|
* @since 2.2.6 Adding: Templates: support for custom templates in sibling folder, thanks to @misfist issue report.
|
||||||
* @lastmodified 2021-02-18T2024+0100
|
* @since 2.5.0 Adding: Templates: Enable template location stack, thanks to @misfist code contribution.
|
||||||
*
|
|
||||||
* @since 2.0.3 prettify reference container template
|
|
||||||
* @since 2.0.3 replace tab with a space
|
|
||||||
* @since 2.0.3 replace 2 spaces with 1
|
|
||||||
* @since 2.0.4 collapse multiple spaces
|
|
||||||
* @since 2.0.6 prettify other templates (footnote, tooltip script, ref container row)
|
|
||||||
* @since 2.2.6 delete a space before a closing pointy bracket
|
|
||||||
*
|
|
||||||
* @since 2.2.6 support for custom templates in fixed location, while failing to add filter thanks to @misfist 2020-12-19T0606+0100
|
|
||||||
* @link https://wordpress.org/support/topic/template-override-filter/
|
|
||||||
*
|
|
||||||
* @since 2.4.0 templates may be in active theme, thanks to @misfist
|
|
||||||
* @link https://wordpress.org/support/topic/template-override-filter/#post-13846598
|
|
||||||
*
|
|
||||||
* @since 2.5.0 Enable template location stack, contributed by @misfist
|
|
||||||
* @link https://wordpress.org/support/topic/template-override-filter/#post-13864301
|
|
||||||
*
|
|
||||||
* @since 2.5.4 collapse HTML comments and PHP/JS docblocks (only)
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Handles each Template file for the Plugin Frontend (e.g. Settings Dashboard, Public pages, ...).
|
* Handles each Template file for the Plugin Frontend (e.g. Settings Dashboard, Public pages, ...).
|
||||||
* Loads a template file, replaces all Placeholders and returns the replaced file content.
|
* Loads a template file, replaces all Placeholders and returns the replaced file content.
|
||||||
*
|
*
|
||||||
* @author Stefan Herndler
|
|
||||||
* @since 1.5.0
|
* @since 1.5.0
|
||||||
*/
|
*/
|
||||||
class MCI_Footnotes_Template {
|
class MCI_Footnotes_Template {
|
||||||
|
@ -41,43 +22,38 @@ class MCI_Footnotes_Template {
|
||||||
/**
|
/**
|
||||||
* Directory name for dashboard templates.
|
* Directory name for dashboard templates.
|
||||||
*
|
*
|
||||||
* @author Stefan Herndler
|
|
||||||
* @since 1.5.0
|
* @since 1.5.0
|
||||||
* @var string
|
* @var string
|
||||||
*/
|
*/
|
||||||
const C_STR_DASHBOARD = "dashboard";
|
const C_STR_DASHBOARD = 'dashboard';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Directory name for public templates.
|
* Directory name for public templates.
|
||||||
*
|
*
|
||||||
* @author Stefan Herndler
|
|
||||||
* @since 1.5.0
|
* @since 1.5.0
|
||||||
* @var string
|
* @var string
|
||||||
*/
|
*/
|
||||||
const C_STR_PUBLIC = "public";
|
const C_STR_PUBLIC = 'public';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Contains the content of the template after initialize.
|
* Contains the content of the template after initialize.
|
||||||
*
|
*
|
||||||
* @author Stefan Herndler
|
|
||||||
* @since 1.5.0
|
* @since 1.5.0
|
||||||
* @var string
|
* @var string
|
||||||
*/
|
*/
|
||||||
private $a_str_OriginalContent = "";
|
private $a_str_original_content = '';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Contains the content of the template after initialize with replaced place holders.
|
* Contains the content of the template after initialize with replaced place holders.
|
||||||
*
|
*
|
||||||
* @author Stefan Herndler
|
|
||||||
* @since 1.5.0
|
* @since 1.5.0
|
||||||
* @var string
|
* @var string
|
||||||
*/
|
*/
|
||||||
private $a_str_ReplacedContent = "";
|
private $a_str_replaced_content = '';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Plugin Directory
|
* Plugin Directory
|
||||||
*
|
*
|
||||||
* @author Patrizia Lutz @misfist
|
|
||||||
* @since 2.4.0d3
|
* @since 2.4.0d3
|
||||||
*
|
*
|
||||||
* @var string
|
* @var string
|
||||||
|
@ -87,42 +63,39 @@ class MCI_Footnotes_Template {
|
||||||
/**
|
/**
|
||||||
* Class Constructor. Reads and loads the template file without replace any placeholder.
|
* Class Constructor. Reads and loads the template file without replace any placeholder.
|
||||||
*
|
*
|
||||||
* @author Stefan Herndler
|
|
||||||
* @since 1.5.0
|
* @since 1.5.0
|
||||||
* @param string $p_str_FileType Template file type (take a look on the Class constants).
|
* @param string $p_str_file_type Template file type (take a look on the Class constants).
|
||||||
* @param string $p_str_FileName Template file name inside the Template directory without the file extension.
|
* @param string $p_str_file_name Template file name inside the Template directory without the file extension.
|
||||||
* @param string $p_str_Extension Optional Template file extension (default: html)
|
* @param string $p_str_extension Optional Template file extension (default: html).
|
||||||
*
|
*
|
||||||
|
* - Adding: Templates: support for custom templates in sibling folder, thanks to @misfist issue report.
|
||||||
*
|
*
|
||||||
* @since 2.2.6 support for custom templates 2020-12-19T0606+0100
|
* @since 2.2.6
|
||||||
|
* @date 2020-12-19T0606+0100
|
||||||
|
*
|
||||||
|
* @reporter @misfist
|
||||||
* @link https://wordpress.org/support/topic/template-override-filter/
|
* @link https://wordpress.org/support/topic/template-override-filter/
|
||||||
*
|
|
||||||
* @since 2.4.0 look for custom template in the active theme first, thanks to @misfist
|
|
||||||
* @link https://wordpress.org/support/topic/template-override-filter/#post-13846598
|
|
||||||
*/
|
*/
|
||||||
public function __construct($p_str_FileType, $p_str_FileName, $p_str_Extension = "html") {
|
public function __construct( $p_str_file_type, $p_str_file_name, $p_str_extension = 'html' ) {
|
||||||
// no template file type and/or file name set
|
// No template file type and/or file name set.
|
||||||
if (empty($p_str_FileType) || empty($p_str_FileName)) {
|
if ( empty( $p_str_file_type ) || empty( $p_str_file_name ) ) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Define plugin root path
|
* Define plugin root path.
|
||||||
*
|
*
|
||||||
* @since 2.4.0d3
|
* @since 2.4.0d3
|
||||||
*
|
|
||||||
* @author Patrizia Lutz @misfist
|
|
||||||
*/
|
*/
|
||||||
$this->plugin_directory = plugin_dir_path( dirname( __FILE__ ) );
|
$this->plugin_directory = plugin_dir_path( dirname( __FILE__ ) );
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Modularize functions
|
* Modularize functions.
|
||||||
*
|
*
|
||||||
* @since 2.4.0d3
|
* @since 2.4.0d3
|
||||||
*
|
|
||||||
* @author Patrizia Lutz @misfist
|
|
||||||
*/
|
*/
|
||||||
if( $template = $this->get_template( $p_str_FileType, $p_str_FileName, $p_str_Extension ) ) {
|
$template = $this->get_template( $p_str_file_type, $p_str_file_name, $p_str_extension );
|
||||||
|
if ( $template ) {
|
||||||
$this->process_template( $template );
|
$this->process_template( $template );
|
||||||
} else {
|
} else {
|
||||||
return;
|
return;
|
||||||
|
@ -133,123 +106,124 @@ class MCI_Footnotes_Template {
|
||||||
/**
|
/**
|
||||||
* Replace all placeholders specified in array.
|
* Replace all placeholders specified in array.
|
||||||
*
|
*
|
||||||
* @author Stefan Herndler
|
|
||||||
* @since 1.5.0
|
* @since 1.5.0
|
||||||
* @param array $p_arr_Placeholders Placeholders (key = placeholder, value = value).
|
* @param array $p_arr_placeholders Placeholders (key = placeholder, value = value).
|
||||||
* @return bool True on Success, False if Placeholders invalid.
|
* @return bool True on Success, False if Placeholders invalid.
|
||||||
*/
|
*/
|
||||||
public function replace($p_arr_Placeholders) {
|
public function replace( $p_arr_placeholders ) {
|
||||||
// no placeholders set
|
// No placeholders set.
|
||||||
if (empty($p_arr_Placeholders)) {
|
if ( empty( $p_arr_placeholders ) ) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
// template content is empty
|
// Template content is empty.
|
||||||
if (empty($this->a_str_ReplacedContent)) {
|
if ( empty( $this->a_str_replaced_content ) ) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
// iterate through each placeholder and replace it with its value
|
// Iterate through each placeholder and replace it with its value.
|
||||||
foreach($p_arr_Placeholders as $l_str_Placeholder => $l_str_Value) {
|
foreach ( $p_arr_placeholders as $l_str_placeholder => $l_str_value ) {
|
||||||
$this->a_str_ReplacedContent = str_replace("[[" . $l_str_Placeholder . "]]", $l_str_Value, $this->a_str_ReplacedContent);
|
$this->a_str_replaced_content = str_replace( '[[' . $l_str_placeholder . ']]', $l_str_value, $this->a_str_replaced_content );
|
||||||
}
|
}
|
||||||
// success
|
// Success.
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Reloads the original content of the template file.
|
* Reloads the original content of the template file.
|
||||||
*
|
*
|
||||||
* @author Stefan Herndler
|
|
||||||
* @since 1.5.0
|
* @since 1.5.0
|
||||||
*/
|
*/
|
||||||
public function reload() {
|
public function reload() {
|
||||||
$this->a_str_ReplacedContent = $this->a_str_OriginalContent;
|
$this->a_str_replaced_content = $this->a_str_original_content;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the content of the template file with replaced placeholders.
|
* Returns the content of the template file with replaced placeholders.
|
||||||
*
|
*
|
||||||
* @author Stefan Herndler
|
|
||||||
* @since 1.5.0
|
* @since 1.5.0
|
||||||
* @return string Template content with replaced placeholders.
|
* @return string Template content with replaced placeholders.
|
||||||
*/
|
*/
|
||||||
public function getContent() {
|
public function get_content() {
|
||||||
return $this->a_str_ReplacedContent;
|
return $this->a_str_replaced_content;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Process template file
|
* Process template file.
|
||||||
*
|
|
||||||
* @author Patrizia Lutz @misfist
|
|
||||||
*
|
*
|
||||||
* @since 2.4.0d3
|
* @since 2.4.0d3
|
||||||
*
|
*
|
||||||
* @param string $template
|
* @param string $template The template to be processed.
|
||||||
* @return void
|
* @return void
|
||||||
*
|
*
|
||||||
*
|
* @since 2.0.3 Replace tab with a space.
|
||||||
* @since 2.0.3 replace tab with a space
|
* @since 2.0.3 Replace 2 spaces with 1.
|
||||||
* @since 2.0.3 replace 2 spaces with 1
|
* @since 2.0.4 Collapse multiple spaces.
|
||||||
* @since 2.0.4 collapse multiple spaces
|
* @since 2.2.6 Delete a space before a closing pointy bracket.
|
||||||
* @since 2.2.6 delete a space before a closing pointy bracket
|
* @since 2.5.4 Collapse HTML comments and PHP/JS docblocks (only).
|
||||||
* @since 2.5.4 collapse HTML comments and PHP/JS docblocks (only)
|
|
||||||
*/
|
*/
|
||||||
public function process_template( $template ) {
|
public function process_template( $template ) {
|
||||||
$this->a_str_OriginalContent = preg_replace( '#<!--.+?-->#s', "", file_get_contents( $template ) );
|
// phpcs:disable WordPress.WP.AlternativeFunctions.file_get_contents_file_get_contents
|
||||||
$this->a_str_OriginalContent = preg_replace( '#/\*\*.+?\*/#s', "", $this->a_str_OriginalContent );
|
$this->a_str_original_content = preg_replace( '#<!--.+?-->#s', '', file_get_contents( $template ) );
|
||||||
$this->a_str_OriginalContent = str_replace( "\n", "", $this->a_str_OriginalContent );
|
// phpcs:enable
|
||||||
$this->a_str_OriginalContent = str_replace( "\r", "", $this->a_str_OriginalContent );
|
$this->a_str_original_content = preg_replace( '#/\*\*.+?\*/#s', '', $this->a_str_original_content );
|
||||||
$this->a_str_OriginalContent = str_replace( "\t", " ", $this->a_str_OriginalContent );
|
$this->a_str_original_content = str_replace( "\n", '', $this->a_str_original_content );
|
||||||
$this->a_str_OriginalContent = preg_replace( '# +#', " ", $this->a_str_OriginalContent );
|
$this->a_str_original_content = str_replace( "\r", '', $this->a_str_original_content );
|
||||||
$this->a_str_OriginalContent = str_replace( " >", ">", $this->a_str_OriginalContent );
|
$this->a_str_original_content = str_replace( "\t", ' ', $this->a_str_original_content );
|
||||||
|
$this->a_str_original_content = preg_replace( '# +#', ' ', $this->a_str_original_content );
|
||||||
|
$this->a_str_original_content = str_replace( ' >', '>', $this->a_str_original_content );
|
||||||
$this->reload();
|
$this->reload();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the template
|
* Get the template.
|
||||||
*
|
*
|
||||||
* @author Patrizia Lutz @misfist
|
* - Adding: Templates: Enable template location stack, thanks to @misfist code contribution.
|
||||||
*
|
*
|
||||||
* @since 2.4.0d3
|
* @since 2.4.0d3 Contribution.
|
||||||
|
* @since 2.5.0 Release.
|
||||||
*
|
*
|
||||||
* @param string $p_str_FileType
|
* @contributor @misfist
|
||||||
* @param string $p_str_FileName
|
* @link https://wordpress.org/support/topic/template-override-filter/#post-13864301
|
||||||
* @param string $p_str_Extension
|
*
|
||||||
|
* @param string $p_str_file_type The file type of the template.
|
||||||
|
* @param string $p_str_file_name The file name of the template.
|
||||||
|
* @param string $p_str_extension The file extension of the template.
|
||||||
* @return mixed false | template path
|
* @return mixed false | template path
|
||||||
*/
|
*/
|
||||||
public function get_template( $p_str_FileType, $p_str_FileName, $p_str_Extension = "html" ) {
|
public function get_template( $p_str_file_type, $p_str_file_name, $p_str_extension = 'html' ) {
|
||||||
$located = false;
|
$located = false;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The directory change be modified
|
* The directory can be changed.
|
||||||
* @usage to change location of templates to `template_parts/footnotes/':
|
*
|
||||||
|
* @usage to change location of templates to 'template_parts/footnotes/':
|
||||||
* add_filter( 'mci_footnotes_template_directory', function( $directory ) {
|
* add_filter( 'mci_footnotes_template_directory', function( $directory ) {
|
||||||
* return 'template_parts/footnotes/;
|
* return 'template_parts/footnotes/';
|
||||||
* } );
|
* } );
|
||||||
*/
|
*/
|
||||||
$template_directory = apply_filters( 'mci_footnotes_template_directory', 'footnotes/templates/' );
|
$template_directory = apply_filters( 'mci_footnotes_template_directory', 'footnotes/templates/' );
|
||||||
$custom_directory = apply_filters( 'mci_footnotes_custom_template_directory', 'footnotes-custom/' );
|
$custom_directory = apply_filters( 'mci_footnotes_custom_template_directory', 'footnotes-custom/' );
|
||||||
$template_name = $p_str_FileType . '/' . $p_str_FileName . '.' . $p_str_Extension;
|
$template_name = $p_str_file_type . '/' . $p_str_file_name . '.' . $p_str_extension;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Look in active (child) theme
|
* Look in active theme.
|
||||||
*/
|
*/
|
||||||
if ( file_exists( trailingslashit( get_stylesheet_directory() ) . $template_directory . $template_name ) ) {
|
if ( file_exists( trailingslashit( get_stylesheet_directory() ) . $template_directory . $template_name ) ) {
|
||||||
$located = trailingslashit( get_stylesheet_directory() ) . $template_directory . $template_name;
|
$located = trailingslashit( get_stylesheet_directory() ) . $template_directory . $template_name;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Look in parent theme
|
* Look in parent theme in case active is child.
|
||||||
*/
|
*/
|
||||||
} elseif ( file_exists( trailingslashit( get_template_directory() ) . $template_directory . $template_name ) ) {
|
} elseif ( file_exists( trailingslashit( get_template_directory() ) . $template_directory . $template_name ) ) {
|
||||||
$located = trailingslashit( get_template_directory() ) . $template_directory . $template_name;
|
$located = trailingslashit( get_template_directory() ) . $template_directory . $template_name;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Look in custom directory
|
* Look in custom plugin directory.
|
||||||
*/
|
*/
|
||||||
} elseif ( file_exists( trailingslashit( WP_PLUGIN_DIR ) . $custom_directory . 'templates/' . $template_name ) ) {
|
} elseif ( file_exists( trailingslashit( WP_PLUGIN_DIR ) . $custom_directory . 'templates/' . $template_name ) ) {
|
||||||
$located = trailingslashit( WP_PLUGIN_DIR ) . $custom_directory . 'templates/' . $template_name;
|
$located = trailingslashit( WP_PLUGIN_DIR ) . $custom_directory . 'templates/' . $template_name;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Look in plugin
|
* Fall back to the templates shipped with the plugin.
|
||||||
*/
|
*/
|
||||||
} elseif ( file_exists( $this->plugin_directory . 'templates/' . $template_name ) ) {
|
} elseif ( file_exists( $this->plugin_directory . 'templates/' . $template_name ) ) {
|
||||||
$located = $this->plugin_directory . 'templates/' . $template_name;
|
$located = $this->plugin_directory . 'templates/' . $template_name;
|
||||||
|
@ -258,4 +232,4 @@ class MCI_Footnotes_Template {
|
||||||
return $located;
|
return $located;
|
||||||
}
|
}
|
||||||
|
|
||||||
} // end of class
|
}
|
||||||
|
|
|
@ -1,14 +1,12 @@
|
||||||
<?php
|
<?php // phpcs:disable WordPress.Files.FileName.InvalidClassFileName
|
||||||
/**
|
/**
|
||||||
* Widget base.
|
* Widget base.
|
||||||
*
|
*
|
||||||
* @filesource
|
* @filesource
|
||||||
* @author Stefan Herndler
|
* @package footnotes
|
||||||
* @since 1.5.0
|
* @since 1.5.0
|
||||||
* @date 14.09.14 14:30
|
* @date 14.09.14 14:30
|
||||||
*
|
*
|
||||||
* @lastmodified 2021-02-18T0306+0100
|
|
||||||
* @date 2021-02-18T0240+0100
|
|
||||||
* @since 1.6.4 Update: replace deprecated function WP_Widget() with recommended __construct(), thanks to @dartiss code contribution.
|
* @since 1.6.4 Update: replace deprecated function WP_Widget() with recommended __construct(), thanks to @dartiss code contribution.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
@ -21,50 +19,45 @@
|
||||||
* @author Stefan Herndler
|
* @author Stefan Herndler
|
||||||
* @since 1.5.0
|
* @since 1.5.0
|
||||||
*/
|
*/
|
||||||
abstract class MCI_Footnotes_WidgetBase extends WP_Widget {
|
abstract class MCI_Footnotes_Widget_Base extends WP_Widget {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns an unique ID as string used for the Widget Base ID.
|
* Returns an unique ID as string used for the Widget Base ID.
|
||||||
*
|
*
|
||||||
* @author Stefan Herndler
|
|
||||||
* @since 1.5.0
|
* @since 1.5.0
|
||||||
* @return string
|
* @return string
|
||||||
*/
|
*/
|
||||||
abstract protected function getID();
|
abstract protected function get_id();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the Public name of child Widget to be displayed in the Configuration page.
|
* Returns the Public name of child Widget to be displayed in the Configuration page.
|
||||||
*
|
*
|
||||||
* @author Stefan Herndler
|
|
||||||
* @since 1.5.0
|
* @since 1.5.0
|
||||||
* @return string
|
* @return string
|
||||||
*/
|
*/
|
||||||
abstract protected function getName();
|
abstract protected function get_name();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the Description of the child widget.
|
* Returns the Description of the child widget.
|
||||||
*
|
*
|
||||||
* @author Stefan Herndler
|
|
||||||
* @since 1.5.0
|
* @since 1.5.0
|
||||||
* @return string
|
* @return string
|
||||||
*/
|
*/
|
||||||
abstract protected function getDescription();
|
abstract protected function get_description();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the width of the Widget. Default width is 250 pixel.
|
* Returns the width of the Widget. Default width is 250 pixel.
|
||||||
*
|
*
|
||||||
* @author Stefan Herndler
|
|
||||||
* @since 1.5.0
|
* @since 1.5.0
|
||||||
* @return int
|
* @return int
|
||||||
*/
|
*/
|
||||||
protected function getWidgetWidth() {
|
protected function get_widget_width() {
|
||||||
return 250;
|
return 250;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class Constructor. Registers the child Widget to WordPress.
|
* Class Constructor. Registers the child Widget to WordPress.
|
||||||
*
|
*
|
||||||
* @author Stefan Herndler
|
|
||||||
* @since 1.5.0
|
* @since 1.5.0
|
||||||
*
|
*
|
||||||
* - Update: replace deprecated function WP_Widget() with recommended __construct(), thanks to @dartiss code contribution.
|
* - Update: replace deprecated function WP_Widget() with recommended __construct(), thanks to @dartiss code contribution.
|
||||||
|
@ -75,14 +68,20 @@ abstract class MCI_Footnotes_WidgetBase extends WP_Widget {
|
||||||
* “The called constructor method for WP_Widget in MCI_Footnotes_Widget_ReferenceContainer is deprecated since version 4.3.0! Use __construct() instead.”
|
* “The called constructor method for WP_Widget in MCI_Footnotes_Widget_ReferenceContainer is deprecated since version 4.3.0! Use __construct() instead.”
|
||||||
*/
|
*/
|
||||||
public function __construct() {
|
public function __construct() {
|
||||||
$l_arr_WidgetOptions = array("classname" => __CLASS__, "description" => $this->getDescription());
|
$l_arr_widget_options = array(
|
||||||
$l_arr_ControlOptions = array("id_base" => strtolower($this->getID()), "width" => $this->getWidgetWidth());
|
'classname' => __CLASS__,
|
||||||
// registers the Widget
|
'description' => $this->get_description(),
|
||||||
|
);
|
||||||
|
$l_arr_control_options = array(
|
||||||
|
'id_base' => strtolower( $this->get_id() ),
|
||||||
|
'width' => $this->get_widget_width(),
|
||||||
|
);
|
||||||
|
// Registers the Widget.
|
||||||
parent::__construct(
|
parent::__construct(
|
||||||
strtolower($this->getID()), // unique ID for the widget, has to be lowercase
|
strtolower( $this->get_id() ), // Unique ID for the widget, has to be lowercase.
|
||||||
$this->getName(), // Plugin name to be displayed
|
$this->get_name(), // Plugin name to be displayed.
|
||||||
$l_arr_WidgetOptions, // Optional Widget Options
|
$l_arr_widget_options, // Optional Widget Options.
|
||||||
$l_arr_ControlOptions // Optional Widget Control Options
|
$l_arr_control_options // Optional Widget Control Options.
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,85 +1,81 @@
|
||||||
<?php
|
<?php // phpcs:disable WordPress.Files.FileName.InvalidClassFileName, WordPress.Security.EscapeOutput.OutputNotEscaped
|
||||||
/**
|
/**
|
||||||
* Includes the Plugin Widget to put the Reference Container to the Widget area.
|
* Includes the Plugin Widget to put the Reference Container to the Widget area.
|
||||||
*
|
*
|
||||||
* @filesource
|
* @filesource
|
||||||
* @author Stefan Herndler
|
* @package footnotes
|
||||||
* @since 1.5.0 14.09.14 14:26
|
* @since 1.5.0
|
||||||
|
* @date 14.09.14 14:26
|
||||||
*
|
*
|
||||||
* Edited 2.2.0 2020-12-12T2131+0100
|
* @since 2.2.0 (TBD) 2020-12-12T2131+0100
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Registers a Widget to put the Reference Container to the widget area.
|
* Registers a Widget to put the Reference Container to the widget area.
|
||||||
*
|
*
|
||||||
* @author Stefan Herndler
|
|
||||||
* @since 1.5.0
|
* @since 1.5.0
|
||||||
*/
|
*/
|
||||||
class MCI_Footnotes_Widget_ReferenceContainer extends MCI_Footnotes_WidgetBase {
|
class MCI_Footnotes_Widget_Reference_Container extends MCI_Footnotes_Widget_Base {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns an unique ID as string used for the Widget Base ID.
|
* Returns an unique ID as string used for the Widget Base ID.
|
||||||
*
|
*
|
||||||
* @author Stefan Herndler
|
|
||||||
* @since 1.5.0
|
* @since 1.5.0
|
||||||
* @return string
|
* @return string
|
||||||
*/
|
*/
|
||||||
protected function getID() {
|
protected function get_id() {
|
||||||
return "footnotes_widget";
|
return 'footnotes_widget';
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the Public name of the Widget to be displayed in the Configuration page.
|
* Returns the Public name of the Widget to be displayed in the Configuration page.
|
||||||
*
|
*
|
||||||
* @author Stefan Herndler
|
|
||||||
* @since 1.5.0
|
* @since 1.5.0
|
||||||
* @return string
|
* @return string
|
||||||
*/
|
*/
|
||||||
protected function getName() {
|
protected function get_name() {
|
||||||
return MCI_Footnotes_Config::C_STR_PLUGIN_NAME;
|
return MCI_Footnotes_Config::C_STR_PLUGIN_NAME;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the Description of the child widget.
|
* Returns the Description of the child widget.
|
||||||
*
|
*
|
||||||
* @author Stefan Herndler
|
|
||||||
* @since 1.5.0
|
* @since 1.5.0
|
||||||
* @return string
|
* @return string
|
||||||
*
|
*
|
||||||
* Edit: curly quotes 2.2.0 2020-12-12T2130+0100
|
* Edit: curly quotes 2.2.0 2020-12-12T2130+0100
|
||||||
*/
|
*/
|
||||||
protected function getDescription() {
|
protected function get_description() {
|
||||||
return __('The widget defines the position of the reference container if set to “widget area”.', MCI_Footnotes_Config::C_STR_PLUGIN_NAME);
|
return __( 'The widget defines the position of the reference container if set to “widget area”.', 'footnotes' );
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Outputs the Settings of the Widget.
|
* Outputs the Settings of the Widget.
|
||||||
*
|
*
|
||||||
* @author Stefan Herndler
|
|
||||||
* @since 1.5.0
|
* @since 1.5.0
|
||||||
* @param mixed $instance
|
* @param mixed $instance The instance of the widget.
|
||||||
* @return void
|
* @return void
|
||||||
*
|
*
|
||||||
* Edit: curly quotes 2.2.0 2020-12-12T2130+0100
|
* Edit: curly quotes 2.2.0 2020-12-12T2130+0100
|
||||||
*/
|
*/
|
||||||
public function form( $instance ) {
|
public function form( $instance ) {
|
||||||
echo __('The widget defines the position of the reference container if set to “widget area”.', MCI_Footnotes_Config::C_STR_PLUGIN_NAME);
|
echo __( 'The widget defines the position of the reference container if set to “widget area”.', 'footnotes' );
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Outputs the Content of the Widget.
|
* Outputs the Content of the Widget.
|
||||||
*
|
*
|
||||||
* @author Stefan Herndler
|
|
||||||
* @since 1.5.0
|
* @since 1.5.0
|
||||||
* @param mixed $args
|
* @param mixed $args The widget's arguments.
|
||||||
* @param mixed $instance
|
* @param mixed $instance The instance of the widget.
|
||||||
*/
|
*/
|
||||||
public function widget( $args, $instance ) {
|
public function widget( $args, $instance ) {
|
||||||
global $g_obj_MCI_Footnotes;
|
global $g_obj_mci_footnotes;
|
||||||
// reference container positioning is set to "widget area"
|
// Reference container positioning is set to "widget area".
|
||||||
if (MCI_Footnotes_Settings::instance()->get(MCI_Footnotes_Settings::C_STR_REFERENCE_CONTAINER_POSITION) == "widget") {
|
if ( 'widget' === MCI_Footnotes_Settings::instance()->get( MCI_Footnotes_Settings::C_STR_REFERENCE_CONTAINER_POSITION ) ) {
|
||||||
echo $g_obj_MCI_Footnotes->a_obj_Task->ReferenceContainer();
|
// phpcs:disable WordPress.Security.EscapeOutput.OutputNotEscaped
|
||||||
|
echo $g_obj_mci_footnotes->a_obj_task->Reference_Container();
|
||||||
|
// phpcs:enable
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,83 +1,92 @@
|
||||||
<?php
|
<?php // phpcs:disable WordPress.Files.FileName.InvalidClassFileName
|
||||||
/**
|
/**
|
||||||
* Includes the Class to handle the WYSIWYG-Buttons.
|
* Includes the Class to handle the WYSIWYG-Buttons.
|
||||||
*
|
*
|
||||||
* @filesource
|
* @filesource
|
||||||
* @author Stefan Herndler
|
* @package footnotes
|
||||||
* @since 1.5.0 14.09.14 17:30
|
* @since 1.5.0
|
||||||
|
* @date 14.09.14 17:30
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* Handles the WSYIWYG-Buttons.
|
||||||
*
|
*
|
||||||
* @author Stefan Herndler
|
|
||||||
* @since 1.5.0
|
* @since 1.5.0
|
||||||
*/
|
*/
|
||||||
class MCI_Footnotes_WYSIWYG {
|
class MCI_Footnotes_WYSIWYG {
|
||||||
|
|
||||||
public static function registerHooks() {
|
/**
|
||||||
add_filter("mce_buttons", array("MCI_Footnotes_WYSIWYG", "newVisualEditorButton"));
|
* Registers Button hooks.
|
||||||
add_action("admin_print_footer_scripts", array("MCI_Footnotes_WYSIWYG", "newPlainTextEditorButton"));
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public static function register_hooks() {
|
||||||
|
add_filter( 'mce_buttons', array( 'MCI_Footnotes_WYSIWYG', 'new_visual_editor_button' ) );
|
||||||
|
add_action( 'admin_print_footer_scripts', array( 'MCI_Footnotes_WYSIWYG', 'new_plain_text_editor_button' ) );
|
||||||
|
|
||||||
add_filter("mce_external_plugins", array("MCI_Footnotes_WYSIWYG", "includeScripts"));
|
add_filter( 'mce_external_plugins', array( 'MCI_Footnotes_WYSIWYG', 'include_scripts' ) );
|
||||||
|
|
||||||
add_action("wp_ajax_nopriv_footnotes_getTags", array("MCI_Footnotes_WYSIWYG", "ajaxCallback"));
|
add_action( 'wp_ajax_nopriv_footnotes_get_tags', array( 'MCI_Footnotes_WYSIWYG', 'ajax_callback' ) );
|
||||||
add_action("wp_ajax_footnotes_getTags", array("MCI_Footnotes_WYSIWYG", "ajaxCallback"));
|
add_action( 'wp_ajax_footnotes_get_tags', array( 'MCI_Footnotes_WYSIWYG', 'ajax_callback' ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Append a new Button to the WYSIWYG editor of Posts and Pages.
|
* Append a new Button to the WYSIWYG editor of Posts and Pages.
|
||||||
*
|
*
|
||||||
* @author Stefan Herndler
|
|
||||||
* @since 1.5.0
|
* @since 1.5.0
|
||||||
* @param array $p_arr_Buttons pre defined Buttons from WordPress.
|
* @param array $p_arr_buttons pre defined Buttons from WordPress.
|
||||||
* @return array
|
* @return array
|
||||||
*/
|
*/
|
||||||
public static function newVisualEditorButton($p_arr_Buttons) {
|
public static function new_visual_editor_button( $p_arr_buttons ) {
|
||||||
array_push($p_arr_Buttons, MCI_Footnotes_Config::C_STR_PLUGIN_NAME);
|
array_push( $p_arr_buttons, MCI_Footnotes_Config::C_STR_PLUGIN_NAME );
|
||||||
return $p_arr_Buttons;
|
return $p_arr_buttons;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Add a new button to the plain text editor.
|
* Add a new button to the plain text editor.
|
||||||
*
|
*
|
||||||
* @author Stefan Herndler
|
|
||||||
* @since 1.5.0
|
* @since 1.5.0
|
||||||
*/
|
*/
|
||||||
public static function newPlainTextEditorButton() {
|
public static function new_plain_text_editor_button() {
|
||||||
$l_obj_Template = new MCI_Footnotes_Template(MCI_Footnotes_Template::C_STR_DASHBOARD, "editor-button");
|
$l_obj_template = new MCI_Footnotes_Template( MCI_Footnotes_Template::C_STR_DASHBOARD, 'editor-button' );
|
||||||
echo $l_obj_Template->getContent();
|
// phpcs:disable WordPress.Security.EscapeOutput.OutputNotEscaped
|
||||||
|
echo $l_obj_template->get_content();
|
||||||
|
// phpcs:enable
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Includes the Plugins WYSIWYG editor script.
|
* Includes the Plugins WYSIWYG editor script.
|
||||||
*
|
*
|
||||||
* @author Stefan Herndler
|
|
||||||
* @since 1.5.0
|
* @since 1.5.0
|
||||||
* @param array $p_arr_Plugins Scripts to be included to the editor.
|
* @param array $p_arr_plugins Scripts to be included to the editor.
|
||||||
* @return array
|
* @return array
|
||||||
*/
|
*/
|
||||||
public static function includeScripts($p_arr_Plugins) {
|
public static function include_scripts( $p_arr_plugins ) {
|
||||||
$p_arr_Plugins[MCI_Footnotes_Config::C_STR_PLUGIN_NAME] = plugins_url('/../js/wysiwyg-editor.js', __FILE__);
|
$p_arr_plugins[ MCI_Footnotes_Config::C_STR_PLUGIN_NAME ] = plugins_url( '/../js/wysiwyg-editor.js', __FILE__ );
|
||||||
return $p_arr_Plugins;
|
return $p_arr_plugins;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* AJAX Callback function when the Footnotes Button is clicked. Either in the Plain text or Visual editor.
|
* AJAX Callback function when the Footnotes Button is clicked. Either in the Plain text or Visual editor.
|
||||||
* Returns an JSON encoded array with the Footnotes start and end short code.
|
* Returns an JSON encoded array with the Footnotes start and end short code.
|
||||||
*
|
*
|
||||||
* @author Stefan Herndler
|
|
||||||
* @since 1.5.0
|
* @since 1.5.0
|
||||||
*/
|
*/
|
||||||
public static function ajaxCallback() {
|
public static function ajax_callback() {
|
||||||
// get start and end tag for the footnotes short code
|
// Get start and end tag for the footnotes short code.
|
||||||
$l_str_StartingTag = MCI_Footnotes_Settings::instance()->get(MCI_Footnotes_Settings::C_STR_FOOTNOTES_SHORT_CODE_START);
|
$l_str_starting_tag = MCI_Footnotes_Settings::instance()->get( MCI_Footnotes_Settings::C_STR_FOOTNOTES_SHORT_CODE_START );
|
||||||
$l_str_EndingTag = MCI_Footnotes_Settings::instance()->get(MCI_Footnotes_Settings::C_STR_FOOTNOTES_SHORT_CODE_END);
|
$l_str_ending_tag = MCI_Footnotes_Settings::instance()->get( MCI_Footnotes_Settings::C_STR_FOOTNOTES_SHORT_CODE_END );
|
||||||
if ($l_str_StartingTag == "userdefined" || $l_str_EndingTag == "userdefined") {
|
if ( 'userdefined' === $l_str_starting_tag || 'userdefined' === $l_str_ending_tag ) {
|
||||||
$l_str_StartingTag = MCI_Footnotes_Settings::instance()->get(MCI_Footnotes_Settings::C_STR_FOOTNOTES_SHORT_CODE_START_USER_DEFINED);
|
$l_str_starting_tag = MCI_Footnotes_Settings::instance()->get( MCI_Footnotes_Settings::C_STR_FOOTNOTES_SHORT_CODE_START_USER_DEFINED );
|
||||||
$l_str_EndingTag = MCI_Footnotes_Settings::instance()->get(MCI_Footnotes_Settings::C_STR_FOOTNOTES_SHORT_CODE_END_USER_DEFINED);
|
$l_str_ending_tag = MCI_Footnotes_Settings::instance()->get( MCI_Footnotes_Settings::C_STR_FOOTNOTES_SHORT_CODE_END_USER_DEFINED );
|
||||||
}
|
}
|
||||||
echo json_encode(array("start" => htmlspecialchars($l_str_StartingTag), "end" => htmlspecialchars($l_str_EndingTag)));
|
echo wp_json_encode(
|
||||||
|
array(
|
||||||
|
'start' => htmlspecialchars( $l_str_starting_tag ),
|
||||||
|
'end' => htmlspecialchars( $l_str_ending_tag ),
|
||||||
|
)
|
||||||
|
);
|
||||||
exit;
|
exit;
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -6,12 +6,14 @@
|
||||||
* Created-Time: 16:21
|
* Created-Time: 16:21
|
||||||
* Since: 1.0
|
* Since: 1.0
|
||||||
*
|
*
|
||||||
* @version 2.5.6
|
* @version 2.5.8
|
||||||
* @lastmodified 2021-02-19T1523+0100
|
* @lastmodified 2021-02-28T1320+0100
|
||||||
*
|
*
|
||||||
* Classes recommended for Custom CSS:
|
* Classes recommended for Custom CSS:
|
||||||
* @see templates/dashboard/customize-css-new.html
|
* @see templates/dashboard/customize-css-new.html
|
||||||
*
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
* System of unified minified style sheets tailored to the needs of the instance.
|
* System of unified minified style sheets tailored to the needs of the instance.
|
||||||
*
|
*
|
||||||
* - Update: Stylesheets: increase speed and energy efficiency by tailoring stylesheets to the needs of the instance, thanks to @docteurfitness design contribution.
|
* - Update: Stylesheets: increase speed and energy efficiency by tailoring stylesheets to the needs of the instance, thanks to @docteurfitness design contribution.
|
||||||
|
@ -230,94 +232,6 @@
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Tooltips
|
|
||||||
*
|
|
||||||
* - Bugfix: Tooltips: set z-index to maximum 2147483647 to address display issues with overlay content, thanks to @russianicons bug report.
|
|
||||||
*
|
|
||||||
* @since 2.1.6
|
|
||||||
* @reporter @russianicons
|
|
||||||
* @link https://wordpress.org/support/topic/counter-styles-not-working/#post-13767299
|
|
||||||
*/
|
|
||||||
|
|
||||||
.footnote_tooltip {
|
|
||||||
display: none;
|
|
||||||
z-index: 2147483647 !important;
|
|
||||||
cursor: auto;
|
|
||||||
text-align: left;
|
|
||||||
padding: 12px;
|
|
||||||
line-height: 1.2;
|
|
||||||
font-weight: normal;
|
|
||||||
font-style: normal;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Alternative tooltips
|
|
||||||
*
|
|
||||||
* These default position values may be overridden by internal CSS.
|
|
||||||
*/
|
|
||||||
|
|
||||||
.footnote_referrer.relative {
|
|
||||||
position: relative;
|
|
||||||
}
|
|
||||||
|
|
||||||
.footnote_tooltip.position {
|
|
||||||
display: unset;
|
|
||||||
position: absolute;
|
|
||||||
bottom: 24px;
|
|
||||||
left: -50px;
|
|
||||||
width: 400px;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
fade-in parameters
|
|
||||||
*/
|
|
||||||
|
|
||||||
.footnote_tooltip.shown {
|
|
||||||
visibility: visible;
|
|
||||||
opacity: 1;
|
|
||||||
transition-property: visibility opacity;
|
|
||||||
transition-timing-function: linear;
|
|
||||||
/*
|
|
||||||
property values of settings are inline CSS
|
|
||||||
transition-delay: 0ms;
|
|
||||||
transition-duration: 200ms;
|
|
||||||
*/
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
fade-out parameters
|
|
||||||
*/
|
|
||||||
|
|
||||||
.footnote_tooltip.hidden {
|
|
||||||
visibility: hidden;
|
|
||||||
opacity: 0;
|
|
||||||
transition-property: visibility opacity;
|
|
||||||
transition-timing-function: linear;
|
|
||||||
/*
|
|
||||||
property values of settings are inline CSS
|
|
||||||
transition-delay: 400ms;
|
|
||||||
transition-duration: 200ms;
|
|
||||||
*/
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
Read-on button
|
|
||||||
*/
|
|
||||||
|
|
||||||
.footnote_tooltip_continue {
|
|
||||||
font-style: italic;
|
|
||||||
color: green;
|
|
||||||
text-decoration: none !important;
|
|
||||||
cursor: pointer;
|
|
||||||
white-space: nowrap;
|
|
||||||
}
|
|
||||||
|
|
||||||
.footnote_tooltip_continue:hover {
|
|
||||||
color: blue;
|
|
||||||
text-decoration: underline !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/*****************************************************
|
/*****************************************************
|
||||||
Footnote reference container
|
Footnote reference container
|
||||||
|
@ -359,8 +273,14 @@ Classes:
|
||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/**
|
||||||
label
|
* Reference container label.
|
||||||
|
*
|
||||||
|
* - Bugfix: Layout: support right-to-left writing direction by replacing remaining CSS values 'left' with 'start', thanks to @arahmanshaalan bug report.
|
||||||
|
*
|
||||||
|
* @since 2.5.8
|
||||||
|
* @reporter @arahmanshaalan
|
||||||
|
* @link https://wordpress.org/support/topic/right-to-left-text-problem/
|
||||||
*/
|
*/
|
||||||
|
|
||||||
.footnote_container_prepare {
|
.footnote_container_prepare {
|
||||||
|
@ -380,7 +300,7 @@ label
|
||||||
-webkit-margin-after: 0.83em !important;
|
-webkit-margin-after: 0.83em !important;
|
||||||
-webkit-margin-start: 0px !important;
|
-webkit-margin-start: 0px !important;
|
||||||
-webkit-margin-end: 0px !important;
|
-webkit-margin-end: 0px !important;
|
||||||
text-align: left !important;
|
text-align: start !important;
|
||||||
vertical-align: middle;
|
vertical-align: middle;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -426,13 +346,27 @@ table
|
||||||
border: none;
|
border: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/**
|
||||||
footnotes
|
* Footnotes list.
|
||||||
|
*
|
||||||
@since 2.0.0 borderless table cells, thanks to @ragonesi bug report
|
* - Bugfix: Reference container: no borders around footnotes, thanks to @ragonesi bug report.
|
||||||
@see <https://wordpress.org/support/topic/thin-box-around-notes-in-reference-container/>
|
*
|
||||||
@since 2.0.1 enforce borderless text cells through !important property, thanks to @ragonesi bug report
|
* @since 2.0.0
|
||||||
@see <https://wordpress.org/support/topic/box-around-c-references-container/>
|
* @reporter @ragonesi
|
||||||
|
* @link https://wordpress.org/support/topic/thin-box-around-notes-in-reference-container/
|
||||||
|
*
|
||||||
|
* - Bugfix: Reference container: enforce borderless table cells, thanks to @ragonesi bug report.
|
||||||
|
*
|
||||||
|
* @since 2.0.1
|
||||||
|
* @reporter @ragonesi
|
||||||
|
* @link https://wordpress.org/support/topic/box-around-c-references-container/
|
||||||
|
*
|
||||||
|
* - Bugfix: Layout: support right-to-left writing direction by replacing remaining CSS values 'left' with 'start', thanks to @arahmanshaalan bug report.
|
||||||
|
* - Bugfix: Layout: support right-to-left writing direction by enabling mirrored paddings on HTML dir="rtl" pages, thanks to @arahmanshaalan bug report.
|
||||||
|
*
|
||||||
|
* @since 2.5.8
|
||||||
|
* @reporter @arahmanshaalan
|
||||||
|
* @link https://wordpress.org/support/topic/right-to-left-text-problem/
|
||||||
*/
|
*/
|
||||||
|
|
||||||
.footnote_plugin_index,
|
.footnote_plugin_index,
|
||||||
|
@ -440,11 +374,18 @@ footnotes
|
||||||
.footnote_plugin_symbol,
|
.footnote_plugin_symbol,
|
||||||
.footnote_plugin_text {
|
.footnote_plugin_text {
|
||||||
border: none !important;
|
border: none !important;
|
||||||
text-align: left !important;
|
text-align: start !important;
|
||||||
vertical-align: top !important;
|
vertical-align: top !important;
|
||||||
padding: 5px 6px 10px 0 !important;
|
padding: 5px 6px 10px 0 !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
html[dir="rtl"] .footnote_plugin_index,
|
||||||
|
html[dir="rtl"] .footnote_plugin_index_combi,
|
||||||
|
html[dir="rtl"] .footnote_plugin_symbol,
|
||||||
|
html[dir="rtl"] .footnote_plugin_text {
|
||||||
|
padding: 5px 0 10px 6px !important;
|
||||||
|
}
|
||||||
|
|
||||||
.footnote_backlink,
|
.footnote_backlink,
|
||||||
.footnote_backlink:link,
|
.footnote_backlink:link,
|
||||||
.footnote_plugin_link,
|
.footnote_plugin_link,
|
||||||
|
|
|
@ -6,34 +6,37 @@
|
||||||
* Created-Time: 16:21
|
* Created-Time: 16:21
|
||||||
* Since: 1.0
|
* Since: 1.0
|
||||||
*
|
*
|
||||||
* Additional stylesheet needed when tooltips are enabled.
|
* Additional stylesheet needed when tooltips (jQuery or alternative) are enabled.
|
||||||
*
|
*
|
||||||
* It doesn’t matter if the tooltips are jQuery based or alternative.
|
* @version 2.5.8
|
||||||
* @since 2.5.5
|
* @lastmodified 2021-02-28T1302+0100
|
||||||
* @version 2.5.5
|
|
||||||
* @lastmodified 2021-02-18T2030+0100
|
|
||||||
*
|
*
|
||||||
* System of unified minified style sheets tailored to the instance.
|
* System of unified minified style sheets tailored to the instance.
|
||||||
*
|
* @since 2.5.5
|
||||||
* @see full header in dev-common.css.
|
* @see full header in dev-common.css.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Tooltips
|
* Tooltips.
|
||||||
*
|
*
|
||||||
* - Bugfix: Tooltips: set z-index to maximum 2147483647 to address display issues with overlay content, thanks to @russianicons bug report.
|
* - Bugfix: Tooltips: set z-index to maximum 2147483647 to address display issues with overlay content, thanks to @russianicons bug report.
|
||||||
*
|
*
|
||||||
* @since 2.1.6
|
* @since 2.1.6
|
||||||
* @reporter @russianicons
|
* @reporter @russianicons
|
||||||
* @link https://wordpress.org/support/topic/counter-styles-not-working/#post-13767299
|
* @link https://wordpress.org/support/topic/counter-styles-not-working/#post-13767299
|
||||||
|
*
|
||||||
|
* - Bugfix: Layout: support right-to-left writing direction by replacing remaining CSS values 'left' with 'start', thanks to @arahmanshaalan bug report.
|
||||||
|
*
|
||||||
|
* @since 2.5.8
|
||||||
|
* @reporter @arahmanshaalan
|
||||||
|
* @link https://wordpress.org/support/topic/right-to-left-text-problem/
|
||||||
*/
|
*/
|
||||||
|
|
||||||
.footnote_tooltip {
|
.footnote_tooltip {
|
||||||
display: none;
|
display: none;
|
||||||
z-index: 2147483647 !important;
|
z-index: 2147483647 !important;
|
||||||
cursor: auto;
|
cursor: auto;
|
||||||
text-align: left;
|
text-align: start !important;
|
||||||
padding: 12px;
|
padding: 12px;
|
||||||
line-height: 1.2;
|
line-height: 1.2;
|
||||||
font-weight: normal;
|
font-weight: normal;
|
||||||
|
|
2
css/footnotes-alttbrpl0.min.css
vendored
2
css/footnotes-alttbrpl0.min.css
vendored
File diff suppressed because one or more lines are too long
2
css/footnotes-alttbrpl1.min.css
vendored
2
css/footnotes-alttbrpl1.min.css
vendored
File diff suppressed because one or more lines are too long
2
css/footnotes-alttbrpl2.min.css
vendored
2
css/footnotes-alttbrpl2.min.css
vendored
File diff suppressed because one or more lines are too long
2
css/footnotes-alttbrpl3.min.css
vendored
2
css/footnotes-alttbrpl3.min.css
vendored
File diff suppressed because one or more lines are too long
2
css/footnotes-jqttbrpl0.min.css
vendored
2
css/footnotes-jqttbrpl0.min.css
vendored
File diff suppressed because one or more lines are too long
2
css/footnotes-jqttbrpl1.min.css
vendored
2
css/footnotes-jqttbrpl1.min.css
vendored
File diff suppressed because one or more lines are too long
2
css/footnotes-jqttbrpl2.min.css
vendored
2
css/footnotes-jqttbrpl2.min.css
vendored
File diff suppressed because one or more lines are too long
2
css/footnotes-jqttbrpl3.min.css
vendored
2
css/footnotes-jqttbrpl3.min.css
vendored
File diff suppressed because one or more lines are too long
2
css/footnotes-nottbrpl0.min.css
vendored
2
css/footnotes-nottbrpl0.min.css
vendored
|
@ -1 +1 @@
|
||||||
.footnotes_validation_error{border:4px solid red;padding:20px 40px;margin:20px 0;background:#ff000055;text-align:start}.footnotes_validation_error p:first-child{font-size:20px;font-weight:700;text-align:center}.footnotes_validation_error p:nth-child(2){font-size:16px;font-style:italic}.footnotes_validation_error p:nth-child(3){font-size:14px;font-weight:700}.footnotes_validation_error p:last-child{font-size:12px}.footnote_url_wrap{word-wrap:anywhere;overflow-wrap:anywhere;word-break:break-all}.footnote_item_base,.footnote_referrer_base{position:absolute}.footnote_item_anchor,.footnote_referrer_anchor{position:relative}.footnote_plugin_tooltip_text,.footnote_plugin_tooltip_text:hover,.footnote_referrer,.footnote_referrer:hover,.footnote_referrer:link,.footnote_referrer>a,.footnote_referrer>a:hover,.footnote_referrer>a:link,.main-content .footnote_plugin_tooltip_text,.main-content .footnote_plugin_tooltip_text:hover,.main-content .footnote_referrer,.main-content .footnote_referrer:hover,.main-content .footnote_referrer:link,.main-content .footnote_referrer>a,.main-content .footnote_referrer>a:hover,.main-content .footnote_referrer>a:link{text-decoration:none!important;border-bottom:none!important;box-shadow:none!important}.footnote_plugin_tooltip_text{line-height:0;position:relative!important;cursor:pointer}.footnote_tooltip{display:none;z-index:2147483647!important;cursor:auto;text-align:left;padding:12px;line-height:1.2;font-weight:400;font-style:normal}.footnote_referrer.relative{position:relative}.footnote_tooltip.position{display:unset;position:absolute;bottom:24px;left:-50px;width:400px}.footnote_tooltip.shown{visibility:visible;opacity:1;transition-property:visibility opacity;transition-timing-function:linear}.footnote_tooltip.hidden{visibility:hidden;opacity:0;transition-property:visibility opacity;transition-timing-function:linear}.footnote_tooltip_continue{font-style:italic;color:green;text-decoration:none!important;cursor:pointer;white-space:nowrap}.footnote_tooltip_continue:hover{color:#00f;text-decoration:underline!important}.footnotes_reference_container{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.footnote_container_prepare{display:block!important;padding-top:24px!important}.footnote_container_prepare>p{line-height:1.3!important;margin-top:1em!important;margin-bottom:.25em!important;padding:0!important;font-weight:400!important;display:block!important;-webkit-margin-before:.83em!important;-webkit-margin-after:.83em!important;-webkit-margin-start:0!important;-webkit-margin-end:0!important;text-align:left!important;vertical-align:middle}.footnote_container_prepare>p>span:first-child,.footnote_container_prepare>p>span:nth-child(3){text-align:start!important;font-size:1.5em!important}.footnote_reference_container_collapse_button{cursor:pointer;padding:0 .5em;font-size:1.3em!important;vertical-align:2px;text-decoration:none!important}h2>.footnote_reference_container_collapse_button,h3>.footnote_reference_container_collapse_button,h4>.footnote_reference_container_collapse_button,h5>.footnote_reference_container_collapse_button,h6>.footnote_reference_container_collapse_button{font-size:inherit!important}.footnote_container_prepare>p>span:last-child a,.footnote_reference_container_collapse_button a{text-decoration:none!important}.footnote-reference-container,.footnotes_table{width:100%;border:none}.footnote_plugin_index,.footnote_plugin_index_combi,.footnote_plugin_symbol,.footnote_plugin_text{border:none!important;text-align:left!important;vertical-align:top!important;padding:5px 6px 10px 0!important}.footnote_backlink,.footnote_backlink:link,.footnote_plugin_link,.footnote_plugin_link:link,.main-content .footnote_backlink,.main-content .footnote_backlink:link,.main-content .footnote_plugin_link,.main-content .footnote_plugin_link:link{text-decoration:none!important;border-bottom:none!important}.footnote_backlink,.footnote_plugin_link{white-space:nowrap}.footnote_backlink,.footnote_index,.pointer{cursor:pointer}.footnote_backlink:hover,.footnote_plugin_link:hover,.footnote_plugin_text a:hover{text-decoration:unset;text-decoration:underline}.footnote_plugin_text{width:unset}.footnote_plugin_index,.footnote_plugin_index_combi{max-width:100px;width:2.5em}@media only screen and (max-width:768px){.footnote_plugin_index,.footnote_plugin_index_combi{max-width:80px}}.footnotes_reference_container{page-break-inside:avoid}@media print{.footnote_index_arrow,.footnote_reference_container_collapse_button,.footnote_tooltip{display:none}.footnote_plugin_tooltip_text{color:inherit}.footnote_plugin_index a,.footnote_plugin_index_combi a{color:inherit;text-decoration:none!important}div.post-meta-edit-link-wrapper{display:none}}.footnotes_logo,.footnotes_logo:hover{text-decoration:none;font-weight:400}.footnotes_logo_part1{color:#2bb975}.footnotes_logo_part2{color:#545f5a}
|
.footnotes_validation_error{border:4px solid red;padding:20px 40px;margin:20px 0;background:#ff000055;text-align:start}.footnotes_validation_error p:first-child{font-size:20px;font-weight:700;text-align:center}.footnotes_validation_error p:nth-child(2){font-size:16px;font-style:italic}.footnotes_validation_error p:nth-child(3){font-size:14px;font-weight:700}.footnotes_validation_error p:last-child{font-size:12px}.footnote_url_wrap{word-wrap:anywhere;overflow-wrap:anywhere;word-break:break-all}.footnote_item_base,.footnote_referrer_base{position:absolute}.footnote_item_anchor,.footnote_referrer_anchor{position:relative}.footnote_plugin_tooltip_text,.footnote_plugin_tooltip_text:hover,.footnote_referrer,.footnote_referrer:hover,.footnote_referrer:link,.footnote_referrer>a,.footnote_referrer>a:hover,.footnote_referrer>a:link,.main-content .footnote_plugin_tooltip_text,.main-content .footnote_plugin_tooltip_text:hover,.main-content .footnote_referrer,.main-content .footnote_referrer:hover,.main-content .footnote_referrer:link,.main-content .footnote_referrer>a,.main-content .footnote_referrer>a:hover,.main-content .footnote_referrer>a:link{text-decoration:none!important;border-bottom:none!important;box-shadow:none!important}.footnote_plugin_tooltip_text{line-height:0;position:relative!important;cursor:pointer}.footnotes_reference_container{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.footnote_container_prepare{display:block!important;padding-top:24px!important}.footnote_container_prepare>p{line-height:1.3!important;margin-top:1em!important;margin-bottom:.25em!important;padding:0!important;font-weight:400!important;display:block!important;-webkit-margin-before:.83em!important;-webkit-margin-after:.83em!important;-webkit-margin-start:0!important;-webkit-margin-end:0!important;text-align:start!important;vertical-align:middle}.footnote_container_prepare>p>span:first-child,.footnote_container_prepare>p>span:nth-child(3){text-align:start!important;font-size:1.5em!important}.footnote_reference_container_collapse_button{cursor:pointer;padding:0 .5em;font-size:1.3em!important;vertical-align:2px;text-decoration:none!important}h2>.footnote_reference_container_collapse_button,h3>.footnote_reference_container_collapse_button,h4>.footnote_reference_container_collapse_button,h5>.footnote_reference_container_collapse_button,h6>.footnote_reference_container_collapse_button{font-size:inherit!important}.footnote_container_prepare>p>span:last-child a,.footnote_reference_container_collapse_button a{text-decoration:none!important}.footnote-reference-container,.footnotes_table{width:100%;border:none}.footnote_plugin_index,.footnote_plugin_index_combi,.footnote_plugin_symbol,.footnote_plugin_text{border:none!important;text-align:start!important;vertical-align:top!important;padding:5px 6px 10px 0!important}html[dir=rtl] .footnote_plugin_index,html[dir=rtl] .footnote_plugin_index_combi,html[dir=rtl] .footnote_plugin_symbol,html[dir=rtl] .footnote_plugin_text{padding:5px 0 10px 6px!important}.footnote_backlink,.footnote_backlink:link,.footnote_plugin_link,.footnote_plugin_link:link,.main-content .footnote_backlink,.main-content .footnote_backlink:link,.main-content .footnote_plugin_link,.main-content .footnote_plugin_link:link{text-decoration:none!important;border-bottom:none!important}.footnote_backlink,.footnote_plugin_link{white-space:nowrap}.footnote_backlink,.footnote_index,.pointer{cursor:pointer}.footnote_backlink:hover,.footnote_plugin_link:hover,.footnote_plugin_text a:hover{text-decoration:unset;text-decoration:underline}.footnote_plugin_text{width:unset}.footnote_plugin_index,.footnote_plugin_index_combi{max-width:100px;width:2.5em}@media only screen and (max-width:768px){.footnote_plugin_index,.footnote_plugin_index_combi{max-width:80px}}.footnotes_reference_container{page-break-inside:avoid}@media print{.footnote_index_arrow,.footnote_reference_container_collapse_button,.footnote_tooltip{display:none}.footnote_plugin_tooltip_text{color:inherit}.footnote_plugin_index a,.footnote_plugin_index_combi a{color:inherit;text-decoration:none!important}div.post-meta-edit-link-wrapper{display:none}}.footnotes_logo,.footnotes_logo:hover{text-decoration:none;font-weight:400}.footnotes_logo_part1{color:#2bb975}.footnotes_logo_part2{color:#545f5a}
|
2
css/footnotes-nottbrpl1.min.css
vendored
2
css/footnotes-nottbrpl1.min.css
vendored
File diff suppressed because one or more lines are too long
2
css/footnotes-nottbrpl2.min.css
vendored
2
css/footnotes-nottbrpl2.min.css
vendored
File diff suppressed because one or more lines are too long
2
css/footnotes-nottbrpl3.min.css
vendored
2
css/footnotes-nottbrpl3.min.css
vendored
File diff suppressed because one or more lines are too long
|
@ -1,27 +1,27 @@
|
||||||
<?php
|
<?php
|
||||||
/*
|
/**
|
||||||
Plugin Name: footnotes
|
* Plugin Name: footnotes
|
||||||
Plugin URI: https://wordpress.org/plugins/footnotes/
|
* Plugin URI: https://wordpress.org/plugins/footnotes/
|
||||||
Description: time to bring footnotes to your website! footnotes are known from offline publishing and everybody takes them for granted when reading a magazine.
|
* Description: time to bring footnotes to your website! footnotes are known from offline publishing and everybody takes them for granted when reading a magazine.
|
||||||
Author: Mark Cheret
|
* Author: Mark Cheret
|
||||||
Version: 2.5.6d4
|
* Version: 2.5.9d1
|
||||||
Author URI: http://cheret.de/plugins/footnotes-2/
|
* Author URI: http://cheret.de/plugins/footnotes-2/
|
||||||
Text Domain: footnotes
|
* Text Domain: footnotes
|
||||||
Domain Path: /languages
|
* Domain Path: /languages
|
||||||
*/
|
*
|
||||||
/*
|
* @package footnotes
|
||||||
* Copyright 2021 Mark Cheret (email: mark@cheret.de)
|
* @copyright 2021 Mark Cheret (email: mark@cheret.de)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Version number for stylesheet cache busting.
|
* Version number for stylesheet cache busting.
|
||||||
*
|
*
|
||||||
* @since 2.1.4
|
* @since 2.1.4
|
||||||
* @since 2.5.3 (Hungarian)
|
* @since 2.5.3 (Hungarian)
|
||||||
* @var str
|
* @var str
|
||||||
* @lastmodified 2021-02-20T0438+0100
|
* @lastmodified 2021-02-28T1345+0100
|
||||||
* @committer @pewgeuges
|
|
||||||
*/
|
*/
|
||||||
define( 'C_STR_FOOTNOTES_VERSION', '2.5.6d4' );
|
define( 'C_STR_FOOTNOTES_VERSION', '2.5.9d1' );
|
||||||
|
|
||||||
/*
|
/*
|
||||||
LICENSE NOTICE
|
LICENSE NOTICE
|
||||||
|
@ -44,21 +44,21 @@ define( 'C_STR_FOOTNOTES_VERSION', '2.5.6d4' );
|
||||||
* Plugin’s main PHP file.
|
* Plugin’s main PHP file.
|
||||||
*
|
*
|
||||||
* @filesource
|
* @filesource
|
||||||
* @author Stefan Herndler
|
* @package footnotes
|
||||||
* @since 0.0.1
|
* @since 0.0.1
|
||||||
*/
|
*/
|
||||||
|
|
||||||
// Get all common classes and functions
|
// Get all common classes and functions.
|
||||||
require_once(dirname(__FILE__) . "/includes.php");
|
require_once dirname( __FILE__ ) . '/includes.php';
|
||||||
|
|
||||||
// add Plugin Links to the "installed plugins" page
|
// Add Plugin Links to the "installed plugins" page.
|
||||||
$l_str_plugin_file = 'footnotes/footnotes.php';
|
$l_str_plugin_file = 'footnotes/footnotes.php';
|
||||||
add_filter("plugin_action_links_{$l_str_plugin_file}", array("MCI_Footnotes_Hooks", "PluginLinks"), 10, 2);
|
add_filter( "plugin_action_links_{$l_str_plugin_file}", array( 'MCI_Footnotes_Hooks', 'plugin_links' ), 10, 2 );
|
||||||
|
|
||||||
// initialize the Plugin
|
// Initialize the Plugin.
|
||||||
$g_obj_MCI_Footnotes = new MCI_Footnotes();
|
$g_obj_mci_footnotes = new MCI_Footnotes();
|
||||||
// run the Plugin
|
// Run the Plugin.
|
||||||
$g_obj_MCI_Footnotes->run();
|
$g_obj_mci_footnotes->run();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sets the stylesheet enqueuing mode for production.
|
* Sets the stylesheet enqueuing mode for production.
|
||||||
|
|
37
includes.php
37
includes.php
|
@ -3,36 +3,37 @@
|
||||||
* Includes all common files.
|
* Includes all common files.
|
||||||
*
|
*
|
||||||
* @filesource
|
* @filesource
|
||||||
* @author Stefan Herndler
|
* @package footnotes
|
||||||
* @since 1.5.0 14.09.14 13:40
|
* @since 1.5.0 14.09.14 13:40
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Requires (require_once) all *.php files inside a specific Directory.
|
* Requires (`require_once`) all `*.php` files inside a specific Directory.
|
||||||
*
|
*
|
||||||
* @author Stefan Herndler
|
* @author Stefan Herndler
|
||||||
* @since 1.5.0
|
* @since 1.5.0
|
||||||
* @param string $p_str_Directory Absolute Directory path to lookup for *.php files
|
* @param string $p_str_directory Absolute Directory path to lookup for `*.php` files.
|
||||||
*/
|
*/
|
||||||
function MCI_Footnotes_requirePhpFiles($p_str_Directory) {
|
function mci_footnotes_require_php_files( $p_str_directory ) {
|
||||||
// append slash at the end of the Directory if not exist
|
// Append slash at the end of the Directory if not exist.
|
||||||
if (substr($p_str_Directory, -1) != "/") {
|
if ( '/' !== substr( $p_str_directory, -1 ) ) {
|
||||||
$p_str_Directory .= "/";
|
$p_str_directory .= '/';
|
||||||
|
|
||||||
}
|
}
|
||||||
// get all PHP files inside Directory
|
// Get all PHP files inside Directory.
|
||||||
$l_arr_Files = scandir($p_str_Directory);
|
$l_arr_files = scandir( $p_str_directory );
|
||||||
// iterate through each class
|
// Iterate through each class.
|
||||||
foreach ($l_arr_Files as $l_str_FileName) {
|
foreach ( $l_arr_files as $l_str_file_name ) {
|
||||||
// skip all non *.php files
|
// Skip all non-PHP files.
|
||||||
if (strtolower(substr($l_str_FileName, -4)) != ".php") {
|
if ( '.php' !== strtolower( substr( $l_str_file_name, -4 ) ) ) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
// phpcs:disable Generic.Commenting.DocComment.MissingShort
|
||||||
/** @noinspection PhpIncludeInspection */
|
/** @noinspection PhpIncludeInspection */
|
||||||
require_once($p_str_Directory . $l_str_FileName);
|
require_once $p_str_directory . $l_str_file_name;
|
||||||
|
// phpcs:enable
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
MCI_Footnotes_requirePhpFiles(dirname(__FILE__) . "/class");
|
mci_footnotes_require_php_files( dirname( __FILE__ ) . '/class' );
|
||||||
MCI_Footnotes_requirePhpFiles(dirname(__FILE__) . "/class/dashboard");
|
mci_footnotes_require_php_files( dirname( __FILE__ ) . '/class/layout' );
|
||||||
MCI_Footnotes_requirePhpFiles(dirname(__FILE__) . "/class/widgets");
|
mci_footnotes_require_php_files( dirname( __FILE__ ) . '/class/widgets' );
|
||||||
|
|
24
readme.txt
24
readme.txt
|
@ -1,10 +1,10 @@
|
||||||
=== footnotes ===
|
=== footnotes ===
|
||||||
Contributors: mark.cheret, lolzim, dartiss, docteurfitness, felipelavinz, martinneumannat, matkus2, meglio, misfist, rumperuu, spaceling, vonpiernik, pewgeuges
|
Contributors: mark.cheret, lolzim, rumperuu, aricura, misfist, ericakfranz, dartiss, docteurfitness, felipelavinz, martinneumannat, matkus2, meglio, spaceling, vonpiernik, pewgeuges
|
||||||
Tags: footnote, footnotes, bibliography, formatting, notes, Post, posts, reference, referencing
|
Tags: footnote, footnotes, bibliography, formatting, notes, Post, posts, reference, referencing
|
||||||
Requires at least: 3.9
|
Requires at least: 3.9
|
||||||
Tested up to: 5.6.1
|
Tested up to: 5.6.1
|
||||||
Requires PHP: 5.6
|
Requires PHP: 5.6
|
||||||
Stable Tag: 2.5.5
|
Stable Tag: 2.5.9d1
|
||||||
License: GPLv3 or later
|
License: GPLv3 or later
|
||||||
License URI: http://www.gnu.org/licenses/gpl-3.0.html
|
License URI: http://www.gnu.org/licenses/gpl-3.0.html
|
||||||
|
|
||||||
|
@ -77,10 +77,24 @@ Visit this swift write-up from a **footnotes** user by the name of **Southwest**
|
||||||
|
|
||||||
== Changelog ==
|
== Changelog ==
|
||||||
|
|
||||||
|
= 2.5.9 =
|
||||||
|
- Bugfix: Dashboard: unescape quotation marks in Custom CSS text area and input boxes, thanks to @rumperuu code contribution.
|
||||||
|
- Update: Codebase: compliance to WordPress coding standards, thanks to @rumperuu code contribution.
|
||||||
|
- Adding: Documentation: additional readme in markdown format for use with GitHub, thanks to @rumperuu code contribution.
|
||||||
|
- Adding: Documentation: help and support for individual contributors through Contributing Guidelines, thanks to @rumperuu code contribution.
|
||||||
|
- Adding: Development: pre-commit hook for WordPress projects, modified from @bjornjohansen, thanks to @rumperuu code contribution.
|
||||||
|
|
||||||
|
= 2.5.8 =
|
||||||
|
- Bugfix: Layout: support right-to-left writing direction by replacing remaining CSS values 'left' with 'start', thanks to @arahmanshaalan bug report.
|
||||||
|
- Bugfix: Layout: support right-to-left writing direction by enabling mirrored paddings on HTML dir="rtl" pages, thanks to @arahmanshaalan bug report.
|
||||||
|
|
||||||
|
= 2.5.7 =
|
||||||
|
- Bugfix: Process: fix footnote duplication by emptying the footnotes list every time the search algorithm is run on the content, thanks to @inoruhana bug report.
|
||||||
|
|
||||||
= 2.5.6 =
|
= 2.5.6 =
|
||||||
- Bugfix: Reference container: optional alternative expanding and collapsing without jQuery for use with hard links, thanks to @hopper87it @pkverma99 issue reports.
|
- Bugfix: Reference container: optional alternative expanding and collapsing without jQuery for use with hard links, thanks to @hopper87it @pkverma99 issue reports.
|
||||||
- Bugfix: Alternative tooltips: shrink width to short content.
|
- Bugfix: Alternative tooltips: shrink width to short content.
|
||||||
- Update: Documentation: slightly revise / update the plugin’s welcome page on WordPress.org.
|
- Update: Documentation: slightly revise or update the plugin’s welcome page on WordPress.org.
|
||||||
|
|
||||||
= 2.5.5 =
|
= 2.5.5 =
|
||||||
- Update: Stylesheets: increase speed and energy efficiency by tailoring stylesheets to the needs of the instance, thanks to @docteurfitness design contribution.
|
- Update: Stylesheets: increase speed and energy efficiency by tailoring stylesheets to the needs of the instance, thanks to @docteurfitness design contribution.
|
||||||
|
@ -326,7 +340,7 @@ Visit this swift write-up from a **footnotes** user by the name of **Southwest**
|
||||||
|
|
||||||
= 2.0.4 =
|
= 2.0.4 =
|
||||||
- Update: Restore arrow settings to customize or disable the now prepended arrow symbol.
|
- Update: Restore arrow settings to customize or disable the now prepended arrow symbol.
|
||||||
- Update: GDPR: Add jQuery UI from WordPress instead of third party.
|
- Update: Libraries: Load jQuery UI from WordPress, thanks to @check2020de issue report.
|
||||||
- Bugfix: Referrers and backlinks: remove hard links to streamline browsing history, thanks to @theroninjedi47 bug report.
|
- Bugfix: Referrers and backlinks: remove hard links to streamline browsing history, thanks to @theroninjedi47 bug report.
|
||||||
- Bugfix: Reference container: remove inconvenient left/right cellpadding.
|
- Bugfix: Reference container: remove inconvenient left/right cellpadding.
|
||||||
- Bugfix: Tooltips: improve layout with inherited font size by lower line height.
|
- Bugfix: Tooltips: improve layout with inherited font size by lower line height.
|
||||||
|
@ -366,7 +380,7 @@ Visit this swift write-up from a **footnotes** user by the name of **Southwest**
|
||||||
- Bugfix: Debug printed posts and pages
|
- Bugfix: Debug printed posts and pages
|
||||||
- Bugfix: Display of combined identical notes
|
- Bugfix: Display of combined identical notes
|
||||||
- Update: Adjusted scrolling time and offset
|
- Update: Adjusted scrolling time and offset
|
||||||
- Bugfix: No borders around footnotes in the container
|
- Bugfix: Reference container: no borders around footnotes, thanks to @ragonesi bug report.
|
||||||
- Bugfix: Mouse-over box display timing
|
- Bugfix: Mouse-over box display timing
|
||||||
- Update: Translations: revised de_AT, de_DE, en_GB, en_US, es_ES
|
- Update: Translations: revised de_AT, de_DE, en_GB, en_US, es_ES
|
||||||
|
|
||||||
|
|
|
@ -54,7 +54,7 @@
|
||||||
type: 'POST',
|
type: 'POST',
|
||||||
url: '/wp-admin/admin-ajax.php',
|
url: '/wp-admin/admin-ajax.php',
|
||||||
data: {
|
data: {
|
||||||
action: 'footnotes_getPluginInfo',
|
action: 'footnotes_get_plugin_info',
|
||||||
plugin: '[[plugin-name]]'
|
plugin: '[[plugin-name]]'
|
||||||
},
|
},
|
||||||
dataType: 'json',
|
dataType: 'json',
|
||||||
|
|
|
@ -4,8 +4,8 @@
|
||||||
-->
|
-->
|
||||||
<span
|
<span
|
||||||
class="footnote_referrer relative"
|
class="footnote_referrer relative"
|
||||||
onmouseover="footnoteTooltipShow('footnote_plugin_tooltip_text_[[post_id]]_[[container_id]]_[[note_id]]')"
|
onmouseover="footnote_tooltip_show('footnote_plugin_tooltip_text_[[post_id]]_[[container_id]]_[[note_id]]')"
|
||||||
onmouseout="footnoteTooltipHide('footnote_plugin_tooltip_text_[[post_id]]_[[container_id]]_[[note_id]]')"
|
onmouseout="footnote_tooltip_hide('footnote_plugin_tooltip_text_[[post_id]]_[[container_id]]_[[note_id]]')"
|
||||||
><[[link-span]]
|
><[[link-span]]
|
||||||
onclick="footnote_moveToAnchor_[[post_id]]_[[container_id]]('footnote_plugin_reference_[[post_id]]_[[container_id]]_[[note_id]]');"
|
onclick="footnote_moveToAnchor_[[post_id]]_[[container_id]]('footnote_plugin_reference_[[post_id]]_[[container_id]]_[[note_id]]');"
|
||||||
[[hard-link]]
|
[[hard-link]]
|
||||||
|
@ -17,7 +17,7 @@
|
||||||
>[[anchor-element]]<span
|
>[[anchor-element]]<span
|
||||||
id="footnote_plugin_tooltip_text_[[post_id]]_[[container_id]]_[[note_id]]"
|
id="footnote_plugin_tooltip_text_[[post_id]]_[[container_id]]_[[note_id]]"
|
||||||
class="footnote_tooltip position hidden"
|
class="footnote_tooltip position hidden"
|
||||||
onmouseout="footnoteTooltipHide('footnote_plugin_tooltip_text_[[post_id]]_[[container_id]]_[[note_id]]')"
|
onmouseout="footnote_tooltip_hide('footnote_plugin_tooltip_text_[[post_id]]_[[container_id]]_[[note_id]]')"
|
||||||
[[style]]
|
[[style]]
|
||||||
>[[text]]</span
|
>[[text]]</span
|
||||||
></span
|
></span
|
||||||
|
|
Reference in a new issue