- Update: Global styling for the public plugin name
- Update: Easier usage of the public plugin name in translations - Update: New Layout for the settings page to group similar settings to get a better overview - Update: Display settings submit button only if there is at least 1 editable setting in the current tab - Add: setting where the reference container appears on public pages (needs some corrections!) - Bugfix: displays only one reference container in front of the footer on category pages git-svn-id: https://plugins.svn.wordpress.org/footnotes/trunk@918851 b8457f37-d9ea-0310-8a92-e5e31aec5664
This commit is contained in:
parent
49c54b6a89
commit
d25f770bc5
19 changed files with 1322 additions and 1096 deletions
|
@ -4,7 +4,7 @@
|
|||
* User: Stefan
|
||||
* Date: 15.05.14
|
||||
* Time: 16:21
|
||||
* Version: 1.0.6
|
||||
* Version: 1.0.7
|
||||
* Since: 1.0
|
||||
*/
|
||||
|
||||
|
@ -20,77 +20,138 @@ $g_arr_Footnotes = array();
|
|||
*/
|
||||
$g_arr_FootnotesSettings = array();
|
||||
|
||||
/*
|
||||
* flag to know if the replacement already started for the current page
|
||||
* @since 1.0.7
|
||||
*/
|
||||
$g_bool_FootnotesReplacementStarted = false;
|
||||
|
||||
/**
|
||||
* register all functions needed for the replacement in the wordpress core
|
||||
* @since 1.0-gamma
|
||||
*/
|
||||
function footnotes_RegisterReplacementFunctions() {
|
||||
/* access to the global settings collection */
|
||||
global $g_arr_FootnotesSettings;
|
||||
/* load footnote settings */
|
||||
$g_arr_FootnotesSettings = footnotes_filter_options( FOOTNOTE_SETTINGS_CONTAINER, Class_FootnotesSettings::$a_arr_Default_Settings, false );
|
||||
/* get setting for accepting footnotes in the excerpt and convert it to boolean */
|
||||
$l_bool_SearchExcerpt = footnotes_ConvertToBool($g_arr_FootnotesSettings[ FOOTNOTE_INPUTFIELD_SEARCH_IN_EXCERPT ]);
|
||||
function footnotes_RegisterReplacementFunctions()
|
||||
{
|
||||
/* access to the global settings collection */
|
||||
global $g_arr_FootnotesSettings;
|
||||
/* load footnote settings */
|
||||
$g_arr_FootnotesSettings = footnotes_filter_options(FOOTNOTE_SETTINGS_CONTAINER, Class_FootnotesSettings::$a_arr_Default_Settings, false);
|
||||
|
||||
/* calls the wordpress filter function to replace page content before displayed on public pages */
|
||||
add_filter( 'the_content', 'footnotes_startReplacing' );
|
||||
/* search in the excerpt only if activated */
|
||||
if ($l_bool_SearchExcerpt) {
|
||||
add_filter( 'the_excerpt', 'footnotes_DummyReplacing' );
|
||||
}
|
||||
/* starts listening to the output for replacement */
|
||||
add_action('wp_head', 'footnotes_startReplacing');
|
||||
/* stops listening to the output and replaces the footnotes */
|
||||
add_action('get_footer', 'footnotes_StopReplacing');
|
||||
|
||||
/* calls the wordpress filter function to replace widget text before displayed on public pages */
|
||||
add_filter( 'widget_title', 'footnotes_DummyReplacing' );
|
||||
add_filter( 'widget_text', 'footnotes_DummyReplacing' );
|
||||
/* moves these contents through the replacement function */
|
||||
add_filter('the_content', 'footnotes_Replacer_Content');
|
||||
add_filter('the_excerpt', 'footnotes_Replacer_Excerpt');
|
||||
add_filter('widget_title', 'footnotes_Replacer_WidgetTitle');
|
||||
add_filter('widget_text', 'footnotes_Replacer_WidgetText');
|
||||
|
||||
/* calls the wordpress action to display the footer */
|
||||
add_action( 'get_footer', 'footnotes_StopReplacing' );
|
||||
/* adds the love and share me slug to the footer */
|
||||
add_filter('wp_footer', 'footnotes_LoveAndShareMe');
|
||||
|
||||
/* get setting for love and share this plugin and convert it to boolean */
|
||||
$l_bool_LoveMe = footnotes_ConvertToBool($g_arr_FootnotesSettings[ FOOTNOTE_INPUTFIELD_LOVE ]);
|
||||
/* check if the admin allows to add a link to the footer */
|
||||
if ($l_bool_LoveMe) {
|
||||
/* calls the wordpress action to hook to the footer */
|
||||
add_filter('wp_footer', 'footnotes_LoveAndShareMe', 0);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* replacement action for the_excerpt
|
||||
* @param string $p_str_Content
|
||||
* @return string
|
||||
* @since 1.0.7
|
||||
*/
|
||||
function footnotes_Replacer_Content($p_str_Content)
|
||||
{
|
||||
/* access to the global settings collection */
|
||||
global $g_arr_FootnotesSettings;
|
||||
/* get setting for 'display reference container position' */
|
||||
$l_str_ReferenceContainerPosition = $g_arr_FootnotesSettings[FOOTNOTE_INPUTFIELD_SEARCH_IN_EXCERPT];
|
||||
/* check if reference container should be displayed at the end of a post */
|
||||
if ($l_str_ReferenceContainerPosition == "post_end") {
|
||||
footnotes_StopReplacing();
|
||||
footnotes_startReplacing();
|
||||
}
|
||||
/* returns content */
|
||||
return $p_str_Content;
|
||||
}
|
||||
|
||||
/**
|
||||
* replacement action for the_excerpt
|
||||
* @param string $p_str_Content
|
||||
* @return string
|
||||
* @since 1.0.7
|
||||
*/
|
||||
function footnotes_Replacer_Excerpt($p_str_Content)
|
||||
{
|
||||
/* access to the global settings collection */
|
||||
global $g_arr_FootnotesSettings;
|
||||
/* get setting for accepting footnotes in the excerpt and convert it to boolean */
|
||||
$l_bool_SearchExcerpt = footnotes_ConvertToBool($g_arr_FootnotesSettings[FOOTNOTE_INPUTFIELD_SEARCH_IN_EXCERPT]);
|
||||
/* search in the excerpt only if activated */
|
||||
if ($l_bool_SearchExcerpt) {
|
||||
footnotes_StopReplacing();
|
||||
footnotes_startReplacing();
|
||||
}
|
||||
/* returns content */
|
||||
return $p_str_Content;
|
||||
}
|
||||
|
||||
/**
|
||||
* replacement action for widget_title
|
||||
* @param string $p_str_Content
|
||||
* @return string
|
||||
* @since 1.0.7
|
||||
*/
|
||||
function footnotes_Replacer_WidgetTitle($p_str_Content)
|
||||
{
|
||||
/* returns content */
|
||||
return $p_str_Content;
|
||||
}
|
||||
|
||||
/**
|
||||
* replacement action for widget_text
|
||||
* @param string $p_str_Content
|
||||
* @return string
|
||||
* @since 1.0.7
|
||||
*/
|
||||
function footnotes_Replacer_WidgetText($p_str_Content)
|
||||
{
|
||||
/* returns content */
|
||||
return $p_str_Content;
|
||||
}
|
||||
|
||||
/**
|
||||
* starts listening for footnotes to be replaced
|
||||
* output will be buffered and not displayed
|
||||
* @since 1.0
|
||||
* @param string $p_str_Content
|
||||
* @return string
|
||||
* added flag to only start 'stopping output' once in version 1.0.7
|
||||
*/
|
||||
function footnotes_startReplacing( $p_str_Content )
|
||||
function footnotes_startReplacing()
|
||||
{
|
||||
/* stop the output and move it to a buffer instead, defines a callback function */
|
||||
ob_start( "footnotes_replaceFootnotes" );
|
||||
/* return unchanged content */
|
||||
return $p_str_Content;
|
||||
}
|
||||
|
||||
/**
|
||||
* dummy function to add the content to the buffer instead of output it
|
||||
* @since 1.0
|
||||
* @param string $p_str_Content
|
||||
* @return string
|
||||
*/
|
||||
function footnotes_DummyReplacing( $p_str_Content )
|
||||
{
|
||||
/* return unchanged content */
|
||||
return $p_str_Content;
|
||||
/* global access to the replacement flag */
|
||||
global $g_bool_FootnotesReplacementStarted;
|
||||
/* stop output if flag is not set yet */
|
||||
if (!$g_bool_FootnotesReplacementStarted) {
|
||||
/* stop the output and move it to a buffer instead, defines a callback function */
|
||||
ob_start("footnotes_replaceFootnotes");
|
||||
/* set flag to only start stopping the output once */
|
||||
$g_bool_FootnotesReplacementStarted = true;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* stops buffering the output, automatically calls the ob_start() defined callback function
|
||||
* replaces all footnotes in the whole buffer and outputs it
|
||||
* @since 1.0
|
||||
* cleared the flag in version 1.0.7
|
||||
*/
|
||||
function footnotes_StopReplacing()
|
||||
{
|
||||
/* calls the callback function defined in ob_start(); */
|
||||
ob_end_flush();
|
||||
/* global access to the replacement flag */
|
||||
global $g_bool_FootnotesReplacementStarted;
|
||||
/* un-set the flag as soon as the replacement function stops and the content will be displayed */
|
||||
$g_bool_FootnotesReplacementStarted = false;
|
||||
/* calls the callback function defined in ob_start(); */
|
||||
ob_end_flush();
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -99,16 +160,26 @@ function footnotes_StopReplacing()
|
|||
*/
|
||||
function footnotes_LoveAndShareMe()
|
||||
{
|
||||
/*
|
||||
* updated url to wordpress.org plugin page instead of the github page
|
||||
* also updated the font-style and translation the string "footnotes"
|
||||
* in version 1.0.6
|
||||
*/
|
||||
echo '
|
||||
<div style="text-align:center; color:#acacac;">'.
|
||||
sprintf(__("Hey there, I'm using the awesome WordPress Plugin called %s", FOOTNOTES_PLUGIN_NAME), '<a href="http://wordpress.org/plugins/footnotes/" target="_blank" style="text-decoration: none;"><span style="color: #2bb975;">foot</span><span style="color: #545f5a;">notes</span></a>').
|
||||
'</div>'
|
||||
;
|
||||
/* access to the global settings collection */
|
||||
global $g_arr_FootnotesSettings;
|
||||
/*
|
||||
* updated url to wordpress.org plugin page instead of the github page
|
||||
* also updated the font-style and translation the string "footnotes"
|
||||
* in version 1.0.6
|
||||
*/
|
||||
/*
|
||||
* changed replacement of public plugin name to use global styling setting
|
||||
* @since 1.0.7
|
||||
*/
|
||||
/* get setting for love and share this plugin and convert it to boolean */
|
||||
$l_bool_LoveMe = footnotes_ConvertToBool($g_arr_FootnotesSettings[FOOTNOTE_INPUTFIELD_LOVE]);
|
||||
/* check if the admin allows to add a link to the footer */
|
||||
if ($l_bool_LoveMe) {
|
||||
echo '
|
||||
<div style="text-align:center; color:#acacac;">' .
|
||||
sprintf(__("Hey there, I'm using the awesome WordPress Plugin called %s", FOOTNOTES_PLUGIN_NAME), '<a href="http://wordpress.org/plugins/footnotes/" target="_blank" style="text-decoration: none;">' . FOOTNOTES_PLUGIN_PUBLIC_NAME . '</a>') .
|
||||
'</div>';
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -116,29 +187,29 @@ function footnotes_LoveAndShareMe()
|
|||
* loading settings if not happened yet since 1.0-gamma
|
||||
* @since 1.0
|
||||
* @param string $p_str_Content
|
||||
* @param bool $p_bool_OutputReferences [default: true]
|
||||
* @param bool $p_bool_OutputReferences [default: true]
|
||||
* @param bool $p_bool_ReplaceHtmlChars [ default: false]
|
||||
* @return string
|
||||
*/
|
||||
function footnotes_replaceFootnotes( $p_str_Content, $p_bool_OutputReferences = true, $p_bool_ReplaceHtmlChars = false )
|
||||
function footnotes_replaceFootnotes($p_str_Content, $p_bool_OutputReferences = true, $p_bool_ReplaceHtmlChars = false)
|
||||
{
|
||||
/* get access to the global array */
|
||||
global $g_arr_Footnotes;
|
||||
/* access to the global settings collection */
|
||||
global $g_arr_FootnotesSettings;
|
||||
/* load footnote settings */
|
||||
$g_arr_FootnotesSettings = footnotes_filter_options( FOOTNOTE_SETTINGS_CONTAINER, Class_FootnotesSettings::$a_arr_Default_Settings, $p_bool_ReplaceHtmlChars );
|
||||
/* replace all footnotes in the content */
|
||||
$p_str_Content = footnotes_getFromString( $p_str_Content );
|
||||
/* get access to the global array */
|
||||
global $g_arr_Footnotes;
|
||||
/* access to the global settings collection */
|
||||
global $g_arr_FootnotesSettings;
|
||||
/* load footnote settings */
|
||||
$g_arr_FootnotesSettings = footnotes_filter_options(FOOTNOTE_SETTINGS_CONTAINER, Class_FootnotesSettings::$a_arr_Default_Settings, $p_bool_ReplaceHtmlChars);
|
||||
/* replace all footnotes in the content */
|
||||
$p_str_Content = footnotes_getFromString($p_str_Content);
|
||||
|
||||
/* add the reference list if set */
|
||||
if ( $p_bool_OutputReferences ) {
|
||||
$p_str_Content = $p_str_Content . footnotes_OutputReferenceContainer();
|
||||
/* free all found footnotes if reference container will be displayed */
|
||||
$g_arr_Footnotes = array();
|
||||
}
|
||||
/* return the replaced content */
|
||||
return $p_str_Content;
|
||||
/* add the reference list if set */
|
||||
if ($p_bool_OutputReferences) {
|
||||
$p_str_Content = $p_str_Content . footnotes_OutputReferenceContainer();
|
||||
/* free all found footnotes if reference container will be displayed */
|
||||
$g_arr_Footnotes = array();
|
||||
}
|
||||
/* return the replaced content */
|
||||
return $p_str_Content;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -148,62 +219,62 @@ function footnotes_replaceFootnotes( $p_str_Content, $p_bool_OutputReferences =
|
|||
* @param string $p_str_Content
|
||||
* @return string
|
||||
*/
|
||||
function footnotes_getFromString( $p_str_Content )
|
||||
function footnotes_getFromString($p_str_Content)
|
||||
{
|
||||
/* get access to the global array to store footnotes */
|
||||
global $g_arr_Footnotes;
|
||||
/* access to the global settings collection */
|
||||
global $g_arr_FootnotesSettings;
|
||||
/* contains the index for the next footnote on this page */
|
||||
$l_int_FootnoteIndex = 1;
|
||||
/* contains the starting position for the lookup of a footnote */
|
||||
$l_int_PosStart = 0;
|
||||
/* contains the footnote template */
|
||||
$l_str_FootnoteTemplate = file_get_contents( FOOTNOTES_TEMPLATES_DIR . "footnote.html" );
|
||||
/* get footnote starting tag */
|
||||
$l_str_StartingTag = $g_arr_FootnotesSettings[FOOTNOTE_INPUTFIELD_PLACEHOLDER_START];
|
||||
/*get footnote ending tag */
|
||||
$l_str_EndingTag = $g_arr_FootnotesSettings[FOOTNOTE_INPUTFIELD_PLACEHOLDER_END];
|
||||
/*get footnote counter style */
|
||||
$l_str_CounterStyle = $g_arr_FootnotesSettings[FOOTNOTE_INPUTFIELD_COUNTER_STYLE];
|
||||
/* get access to the global array to store footnotes */
|
||||
global $g_arr_Footnotes;
|
||||
/* access to the global settings collection */
|
||||
global $g_arr_FootnotesSettings;
|
||||
/* contains the index for the next footnote on this page */
|
||||
$l_int_FootnoteIndex = 1;
|
||||
/* contains the starting position for the lookup of a footnote */
|
||||
$l_int_PosStart = 0;
|
||||
/* contains the footnote template */
|
||||
$l_str_FootnoteTemplate = file_get_contents(FOOTNOTES_TEMPLATES_DIR . "footnote.html");
|
||||
/* get footnote starting tag */
|
||||
$l_str_StartingTag = $g_arr_FootnotesSettings[FOOTNOTE_INPUTFIELD_PLACEHOLDER_START];
|
||||
/*get footnote ending tag */
|
||||
$l_str_EndingTag = $g_arr_FootnotesSettings[FOOTNOTE_INPUTFIELD_PLACEHOLDER_END];
|
||||
/*get footnote counter style */
|
||||
$l_str_CounterStyle = $g_arr_FootnotesSettings[FOOTNOTE_INPUTFIELD_COUNTER_STYLE];
|
||||
|
||||
/* check for a footnote placeholder in the current page */
|
||||
do {
|
||||
/* get first occurence of a footnote starting tag */
|
||||
$l_int_PosStart = strpos( $p_str_Content, $l_str_StartingTag, $l_int_PosStart );
|
||||
/* tag found */
|
||||
if ( $l_int_PosStart !== false ) {
|
||||
/* get first occurence of a footnote ending tag after the starting tag */
|
||||
$l_int_PosEnd = strpos( $p_str_Content, $l_str_EndingTag, $l_int_PosStart );
|
||||
/* tag found */
|
||||
if ( $l_int_PosEnd !== false ) {
|
||||
/* get length of footnote text */
|
||||
$l_int_Length = $l_int_PosEnd - $l_int_PosStart;
|
||||
/* get text inside footnote */
|
||||
$l_str_FootnoteText = substr( $p_str_Content, $l_int_PosStart + strlen( $l_str_StartingTag ), $l_int_Length - strlen( $l_str_StartingTag ) );
|
||||
/* set replacer for the footnote */
|
||||
$l_str_ReplaceText = str_replace( "[[FOOTNOTE INDEX]]", footnote_convert_index($l_int_FootnoteIndex,$l_str_CounterStyle), $l_str_FootnoteTemplate );
|
||||
$l_str_ReplaceText = str_replace( "[[FOOTNOTE TEXT]]", $l_str_FootnoteText, $l_str_ReplaceText );
|
||||
/* replace footnote in content */
|
||||
$p_str_Content = substr_replace( $p_str_Content, $l_str_ReplaceText, $l_int_PosStart, $l_int_Length + strlen( $l_str_EndingTag ) );
|
||||
/* set footnote to the output box at the end */
|
||||
$g_arr_Footnotes[ ] = $l_str_FootnoteText;
|
||||
/* increase footnote index */
|
||||
$l_int_FootnoteIndex++;
|
||||
/* add offset to the new starting position */
|
||||
$l_int_PosStart += ( $l_int_PosEnd - $l_int_PosStart );
|
||||
/* no ending tag found */
|
||||
} else {
|
||||
$l_int_PosStart++;
|
||||
}
|
||||
/* no starting tag found */
|
||||
} else {
|
||||
break;
|
||||
}
|
||||
} while ( true );
|
||||
/* check for a footnote placeholder in the current page */
|
||||
do {
|
||||
/* get first occurence of a footnote starting tag */
|
||||
$l_int_PosStart = strpos($p_str_Content, $l_str_StartingTag, $l_int_PosStart);
|
||||
/* tag found */
|
||||
if ($l_int_PosStart !== false) {
|
||||
/* get first occurence of a footnote ending tag after the starting tag */
|
||||
$l_int_PosEnd = strpos($p_str_Content, $l_str_EndingTag, $l_int_PosStart);
|
||||
/* tag found */
|
||||
if ($l_int_PosEnd !== false) {
|
||||
/* get length of footnote text */
|
||||
$l_int_Length = $l_int_PosEnd - $l_int_PosStart;
|
||||
/* get text inside footnote */
|
||||
$l_str_FootnoteText = substr($p_str_Content, $l_int_PosStart + strlen($l_str_StartingTag), $l_int_Length - strlen($l_str_StartingTag));
|
||||
/* set replacer for the footnote */
|
||||
$l_str_ReplaceText = str_replace("[[FOOTNOTE INDEX]]", footnote_convert_index($l_int_FootnoteIndex, $l_str_CounterStyle), $l_str_FootnoteTemplate);
|
||||
$l_str_ReplaceText = str_replace("[[FOOTNOTE TEXT]]", $l_str_FootnoteText, $l_str_ReplaceText);
|
||||
/* replace footnote in content */
|
||||
$p_str_Content = substr_replace($p_str_Content, $l_str_ReplaceText, $l_int_PosStart, $l_int_Length + strlen($l_str_EndingTag));
|
||||
/* set footnote to the output box at the end */
|
||||
$g_arr_Footnotes[] = $l_str_FootnoteText;
|
||||
/* increase footnote index */
|
||||
$l_int_FootnoteIndex++;
|
||||
/* add offset to the new starting position */
|
||||
$l_int_PosStart += ($l_int_PosEnd - $l_int_PosStart);
|
||||
/* no ending tag found */
|
||||
} else {
|
||||
$l_int_PosStart++;
|
||||
}
|
||||
/* no starting tag found */
|
||||
} else {
|
||||
break;
|
||||
}
|
||||
} while (true);
|
||||
|
||||
/* return content */
|
||||
return $p_str_Content;
|
||||
/* return content */
|
||||
return $p_str_Content;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -215,82 +286,82 @@ function footnotes_getFromString( $p_str_Content )
|
|||
*/
|
||||
function footnotes_OutputReferenceContainer()
|
||||
{
|
||||
/* get access to the global array to read footnotes */
|
||||
global $g_arr_Footnotes;
|
||||
/* access to the global settings collection */
|
||||
global $g_arr_FootnotesSettings;
|
||||
/* get access to the global array to read footnotes */
|
||||
global $g_arr_Footnotes;
|
||||
/* access to the global settings collection */
|
||||
global $g_arr_FootnotesSettings;
|
||||
|
||||
/* no footnotes has been replaced on this page */
|
||||
if ( empty( $g_arr_Footnotes ) ) {
|
||||
/* return empty string */
|
||||
return "";
|
||||
}
|
||||
/* no footnotes has been replaced on this page */
|
||||
if (empty($g_arr_Footnotes)) {
|
||||
/* return empty string */
|
||||
return "";
|
||||
}
|
||||
|
||||
/* get setting for combine identical footnotes and convert it to boolean */
|
||||
$l_bool_CombineIdentical = footnotes_ConvertToBool($g_arr_FootnotesSettings[ FOOTNOTE_INPUTFIELD_COMBINE_IDENTICAL ]);
|
||||
/* get setting for preferences label */
|
||||
$l_str_ReferencesLabel = $g_arr_FootnotesSettings[ FOOTNOTE_INPUTFIELD_REFERENCES_LABEL ];
|
||||
/* get setting for collapse reference footnotes and convert it to boolean */
|
||||
$l_bool_CollapseReference = footnotes_ConvertToBool($g_arr_FootnotesSettings[ FOOTNOTE_INPUTFIELD_COLLAPSE_REFERENCES ]);
|
||||
/*get footnote counter style */
|
||||
$l_str_CounterStyle = $g_arr_FootnotesSettings[FOOTNOTE_INPUTFIELD_COUNTER_STYLE];
|
||||
/* get setting for combine identical footnotes and convert it to boolean */
|
||||
$l_bool_CombineIdentical = footnotes_ConvertToBool($g_arr_FootnotesSettings[FOOTNOTE_INPUTFIELD_COMBINE_IDENTICAL]);
|
||||
/* get setting for preferences label */
|
||||
$l_str_ReferencesLabel = $g_arr_FootnotesSettings[FOOTNOTE_INPUTFIELD_REFERENCES_LABEL];
|
||||
/* get setting for collapse reference footnotes and convert it to boolean */
|
||||
$l_bool_CollapseReference = footnotes_ConvertToBool($g_arr_FootnotesSettings[FOOTNOTE_INPUTFIELD_COLLAPSE_REFERENCES]);
|
||||
/*get footnote counter style */
|
||||
$l_str_CounterStyle = $g_arr_FootnotesSettings[FOOTNOTE_INPUTFIELD_COUNTER_STYLE];
|
||||
|
||||
/* output string, prepare it with the reference label as headline */
|
||||
$l_str_Output = '<div class="footnote_container_prepare"><p><span onclick="footnote_expand_reference_container(\"\");">' . $l_str_ReferencesLabel . '</span></p></div>';
|
||||
/* add a box around the footnotes */
|
||||
$l_str_Output .= '<div id="'.FOOTNOTE_REFERENCES_CONTAINER_ID.'"';
|
||||
/* add class to hide the references by default, if the user wants it */
|
||||
if ($l_bool_CollapseReference) {
|
||||
$l_str_Output .= ' class="footnote_hide_box"';
|
||||
}
|
||||
$l_str_Output .= '>';
|
||||
/* output string, prepare it with the reference label as headline */
|
||||
$l_str_Output = '<div class="footnote_container_prepare"><p><span onclick="footnote_expand_reference_container(\"\");">' . $l_str_ReferencesLabel . '</span></p></div>';
|
||||
/* add a box around the footnotes */
|
||||
$l_str_Output .= '<div id="' . FOOTNOTE_REFERENCES_CONTAINER_ID . '"';
|
||||
/* add class to hide the references by default, if the user wants it */
|
||||
if ($l_bool_CollapseReference) {
|
||||
$l_str_Output .= ' class="footnote_hide_box"';
|
||||
}
|
||||
$l_str_Output .= '>';
|
||||
|
||||
/* contains the footnote template */
|
||||
$l_str_FootnoteTemplate = file_get_contents( FOOTNOTES_TEMPLATES_DIR . "container.html" );
|
||||
/* contains the footnote template */
|
||||
$l_str_FootnoteTemplate = file_get_contents(FOOTNOTES_TEMPLATES_DIR . "container.html");
|
||||
|
||||
/* loop through all footnotes found in the page */
|
||||
for ( $l_str_Index = 0; $l_str_Index < count( $g_arr_Footnotes ); $l_str_Index++ ) {
|
||||
/* get footnote text */
|
||||
$l_str_FootnoteText = $g_arr_Footnotes[ $l_str_Index ];
|
||||
/* if fottnote is empty, get to the next one */
|
||||
if ( empty( $l_str_FootnoteText ) ) {
|
||||
continue;
|
||||
}
|
||||
/* get footnote index */
|
||||
$l_str_FirstFootnoteIndex = ( $l_str_Index + 1 );
|
||||
$l_str_FootnoteIndex = footnote_convert_index(( $l_str_Index + 1 ),$l_str_CounterStyle);
|
||||
/* loop through all footnotes found in the page */
|
||||
for ($l_str_Index = 0; $l_str_Index < count($g_arr_Footnotes); $l_str_Index++) {
|
||||
/* get footnote text */
|
||||
$l_str_FootnoteText = $g_arr_Footnotes[$l_str_Index];
|
||||
/* if fottnote is empty, get to the next one */
|
||||
if (empty($l_str_FootnoteText)) {
|
||||
continue;
|
||||
}
|
||||
/* get footnote index */
|
||||
$l_str_FirstFootnoteIndex = ($l_str_Index + 1);
|
||||
$l_str_FootnoteIndex = footnote_convert_index(($l_str_Index + 1), $l_str_CounterStyle);
|
||||
|
||||
/* check if it isn't the last footnote in the array */
|
||||
if ( $l_str_FirstFootnoteIndex < count( $g_arr_Footnotes ) && $l_bool_CombineIdentical ) {
|
||||
/* get all footnotes that I haven't passed yet */
|
||||
for ( $l_str_CheckIndex = $l_str_FirstFootnoteIndex; $l_str_CheckIndex < count( $g_arr_Footnotes ); $l_str_CheckIndex++ ) {
|
||||
/* check if a further footnote is the same as the actual one */
|
||||
if ( $l_str_FootnoteText == $g_arr_Footnotes[ $l_str_CheckIndex ] ) {
|
||||
/* set the further footnote as empty so it won't be displayed later */
|
||||
$g_arr_Footnotes[ $l_str_CheckIndex ] = "";
|
||||
/* add the footnote index to the actual index */
|
||||
$l_str_FootnoteIndex .= ", " . footnote_convert_index(( $l_str_CheckIndex + 1 ),$l_str_CounterStyle);
|
||||
}
|
||||
}
|
||||
}
|
||||
/* check if it isn't the last footnote in the array */
|
||||
if ($l_str_FirstFootnoteIndex < count($g_arr_Footnotes) && $l_bool_CombineIdentical) {
|
||||
/* get all footnotes that I haven't passed yet */
|
||||
for ($l_str_CheckIndex = $l_str_FirstFootnoteIndex; $l_str_CheckIndex < count($g_arr_Footnotes); $l_str_CheckIndex++) {
|
||||
/* check if a further footnote is the same as the actual one */
|
||||
if ($l_str_FootnoteText == $g_arr_Footnotes[$l_str_CheckIndex]) {
|
||||
/* set the further footnote as empty so it won't be displayed later */
|
||||
$g_arr_Footnotes[$l_str_CheckIndex] = "";
|
||||
/* add the footnote index to the actual index */
|
||||
$l_str_FootnoteIndex .= ", " . footnote_convert_index(($l_str_CheckIndex + 1), $l_str_CounterStyle);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* add the footnote to the output box */
|
||||
/*
|
||||
* added function to convert the counter style in the reference container (bugfix for the link to the footnote) in version 1.0.6
|
||||
*/
|
||||
$l_str_ReplaceText = str_replace( "[[FOOTNOTE INDEX SHORT]]", footnote_convert_index($l_str_FirstFootnoteIndex,$l_str_CounterStyle), $l_str_FootnoteTemplate );
|
||||
$l_str_ReplaceText = str_replace( "[[FOOTNOTE INDEX]]", $l_str_FootnoteIndex, $l_str_ReplaceText );
|
||||
$l_str_ReplaceText = str_replace( "[[FOOTNOTE TEXT]]", $l_str_FootnoteText, $l_str_ReplaceText );
|
||||
/* add the footnote container to the output */
|
||||
$l_str_Output = $l_str_Output . $l_str_ReplaceText;
|
||||
}
|
||||
/* add closing tag for the div of the references container */
|
||||
$l_str_Output = $l_str_Output . '</div>';
|
||||
/* add a javascript to expand the reference container when clicking on a footnote or the reference label */
|
||||
$l_str_Output .= '
|
||||
/* add the footnote to the output box */
|
||||
/*
|
||||
* added function to convert the counter style in the reference container (bugfix for the link to the footnote) in version 1.0.6
|
||||
*/
|
||||
$l_str_ReplaceText = str_replace("[[FOOTNOTE INDEX SHORT]]", footnote_convert_index($l_str_FirstFootnoteIndex, $l_str_CounterStyle), $l_str_FootnoteTemplate);
|
||||
$l_str_ReplaceText = str_replace("[[FOOTNOTE INDEX]]", $l_str_FootnoteIndex, $l_str_ReplaceText);
|
||||
$l_str_ReplaceText = str_replace("[[FOOTNOTE TEXT]]", $l_str_FootnoteText, $l_str_ReplaceText);
|
||||
/* add the footnote container to the output */
|
||||
$l_str_Output = $l_str_Output . $l_str_ReplaceText;
|
||||
}
|
||||
/* add closing tag for the div of the references container */
|
||||
$l_str_Output = $l_str_Output . '</div>';
|
||||
/* add a javascript to expand the reference container when clicking on a footnote or the reference label */
|
||||
$l_str_Output .= '
|
||||
<script type="text/javascript">
|
||||
function footnote_expand_reference_container(p_str_ID) {
|
||||
jQuery("#'.FOOTNOTE_REFERENCES_CONTAINER_ID.'").show();
|
||||
jQuery("#' . FOOTNOTE_REFERENCES_CONTAINER_ID . '").show();
|
||||
if (p_str_ID.length > 0) {
|
||||
jQuery(p_str_ID).focus();
|
||||
}
|
||||
|
@ -298,6 +369,6 @@ function footnotes_OutputReferenceContainer()
|
|||
</script>
|
||||
';
|
||||
|
||||
/* return the output string */
|
||||
return $l_str_Output;
|
||||
/* return the output string */
|
||||
return $l_str_Output;
|
||||
}
|
Reference in a new issue