2014-05-20 11:38:36 +00:00
< ? php
/**
* Created by Stefan Herndler .
* User : Stefan
* Date : 15.05 . 14
* Time : 16 : 21
2014-05-21 18:33:26 +00:00
* Version : 1.0 . 7
2014-05-20 11:38:36 +00:00
* Since : 1.0
*/
/**
* Class Class_FootnotesSettings
* @ since 1.0
*/
class Class_FootnotesSettings
{
2014-05-21 18:33:26 +00:00
/*
* attribute for default settings value
* updated default value for 'FOOTNOTE_INPUTFIELD_LOVE' to default : 'no' in version 1.0 . 6
* @ since 1.0
*/
public static $a_arr_Default_Settings = array (
FOOTNOTE_INPUTFIELD_COMBINE_IDENTICAL => 'yes' ,
FOOTNOTE_INPUTFIELD_REFERENCES_LABEL => 'References' ,
FOOTNOTE_INPUTFIELD_COLLAPSE_REFERENCES => '' ,
FOOTNOTE_INPUTFIELD_PLACEHOLDER_START => '((' ,
FOOTNOTE_INPUTFIELD_PLACEHOLDER_END => '))' ,
FOOTNOTE_INPUTFIELD_SEARCH_IN_EXCERPT => 'yes' ,
FOOTNOTE_INPUTFIELD_LOVE => 'no' ,
FOOTNOTE_INPUTFIELD_COUNTER_STYLE => 'arabic_plain' ,
2014-05-24 11:53:54 +00:00
FOOTNOTE_INPUTFIELD_REFERENCE_CONTAINER_PLACE => 'post_end' ,
FOOTNOTE_INPUTFIELD_PLACEHOLDER_START_USERDEFINED => '' ,
FOOTNOTE_INPUTFIELD_PLACEHOLDER_END_USERDEFINED => ''
2014-05-21 18:33:26 +00:00
);
/*
* resulting pagehook for adding a new sub menu page to the settings
* @ since 1.0
*/
var $a_str_Pagehook ;
/*
* collection of settings values for this plugin
* @ since 1.0
*/
var $a_arr_Options ;
/*
* collection of tabs for the settings page of this plugin
* @ since 1.0
*/
private $a_arr_SettingsTabs = array ();
/**
* @ constructor
* @ since 1.0
*/
function __construct ()
{
/* loads and filters the settings for this plugin */
$this -> a_arr_Options = footnotes_filter_options ( FOOTNOTE_SETTINGS_CONTAINER , self :: $a_arr_Default_Settings , true );
/* execute class includes on action-even: init, admin_init and admin_menu */
2014-06-12 19:12:14 +00:00
add_action ( 'init' , array ( $this , 'LoadScriptsAndStylesheets' ));
2014-05-21 18:33:26 +00:00
add_action ( 'admin_init' , array ( $this , 'RegisterSettings' ));
add_action ( 'admin_init' , array ( $this , 'RegisterTab_General' ));
add_action ( 'admin_init' , array ( $this , 'RegisterTab_HowTo' ));
add_action ( 'admin_menu' , array ( $this , 'AddSettingsMenuPanel' ));
}
/**
* initialize settings page , loads scripts and stylesheets needed for the layout
* called in class constructor @ init
* @ since 1.0
*/
function LoadScriptsAndStylesheets ()
{
2014-06-12 19:12:14 +00:00
/* register public stylesheet */
wp_register_style ( 'footnote_public_style' , plugins_url ( '../css/footnote.css' , __FILE__ ));
/* add public stylesheet */
wp_enqueue_style ( 'footnote_public_style' );
2014-05-21 18:33:26 +00:00
}
/**
* register the settings field in the database for the " save " function
* called in class constructor @ admin_init
* @ since 1.0
*/
function RegisterSettings ()
{
register_setting ( FOOTNOTE_SETTINGS_LABEL_GENERAL , FOOTNOTE_SETTINGS_CONTAINER );
}
/**
* sets the plugin ' s title for the admins settings menu
* called in class constructor @ admin_menu
* @ since 1.0
*/
function AddSettingsMenuPanel ()
{
/* current user needs the permission to update plugins for further access */
if ( ! current_user_can ( 'update_plugins' )) {
return ;
}
/* submenu page title */
$l_str_PageTitle = FOOTNOTES_PLUGIN_PUBLIC_NAME ;
/* submenu title */
$l_str_MenuTitle = FOOTNOTES_PLUGIN_PUBLIC_NAME ;
/* Add a new submenu to the standard Settings panel */
$this -> a_str_Pagehook = add_options_page ( $l_str_PageTitle , $l_str_MenuTitle , 'administrator' , FOOTNOTES_SETTINGS_PAGE_ID , array ( $this , 'OutputSettingsPage' ));
}
/**
* Plugin Options page rendering goes here , checks
* for active tab and replaces key with the related
* settings key . Uses the plugin_options_tabs method
* to render the tabs .
* @ since 1.0
*/
function OutputSettingsPage ()
{
2014-06-12 19:12:14 +00:00
/* add the jQuery plugin (already registered by WP) */
wp_enqueue_script ( 'jquery' );
/* register settings stylesheet */
wp_register_style ( 'footnote_settings_style' , plugins_url ( '../css/settings.css' , __FILE__ ));
/* add settings stylesheet */
wp_enqueue_style ( 'footnote_settings_style' );
/* Needed to allow metabox layout and close functionality */
wp_enqueue_script ( 'postbox' );
2014-06-27 10:40:26 +00:00
/* add jquery tools to public page */
wp_enqueue_script ( 'footnotes_public_script' , plugins_url ( '../js/jquery.tools.min.js' , __FILE__ ), array ());
2014-05-21 18:33:26 +00:00
/* gets active tag, or if nothing set the "general" tab will be set to active */
$l_str_tab = isset ( $_GET [ 'tab' ]) ? $_GET [ 'tab' ] : FOOTNOTE_SETTINGS_LABEL_GENERAL ;
/* outputs all tabs */
echo '<div class="wrap">' ;
$this -> OutputSettingsPageTabs ();
/* outputs a form with the content of the current active tab */
echo '<form method="post" action="options.php">' ;
wp_nonce_field ( 'update-options' );
settings_fields ( $l_str_tab );
/* outputs the settings field of the current active tab */
do_settings_sections ( $l_str_tab );
2014-06-10 08:51:02 +00:00
do_meta_boxes ( $l_str_tab , 'main' , NULL );
2014-05-21 18:33:26 +00:00
/* adds a submit button to the current page */
/*
* add submit button only if there are some settings on the current page
* @ since version 1.0 . 7
*/
if ( $l_str_tab == FOOTNOTE_SETTINGS_LABEL_GENERAL ) {
submit_button ();
}
echo '</form>' ;
echo '</div>' ;
/*
* output settings page specific javascript code
* @ since 1.0 . 7
*/
$this -> OutputJavascript ();
}
/**
* Renders our tabs in the plugin options page ,
* walks through the object ' s tabs array and prints
* them one by one . Provides the heading for the
* plugin_options_page method .
* @ since 1.0
*/
function OutputSettingsPageTabs ()
{
/* gets active tag, or if nothing set the "general" tab will be set to active */
$l_str_CurrentTab = isset ( $_GET [ 'tab' ]) ? $_GET [ 'tab' ] : FOOTNOTE_SETTINGS_LABEL_GENERAL ;
screen_icon ();
echo '<h2 class="nav-tab-wrapper">' ;
foreach ( $this -> a_arr_SettingsTabs as $l_str_TabKey => $l_str_TabCaption ) {
$active = $l_str_CurrentTab == $l_str_TabKey ? 'nav-tab-active' : '' ;
echo '<a class="nav-tab ' . $active . '" href="?page=' . FOOTNOTES_SETTINGS_PAGE_ID . '&tab=' . $l_str_TabKey . '">' . $l_str_TabCaption . '</a>' ;
}
echo '</h2>' ;
}
/**
* outputs page specific javascript code
* @ since 1.0 . 7
*/
function OutputJavascript ()
{
?>
<!-- Needed to allow metabox layout and close functionality . -->
< script type = " text/javascript " >
jQuery ( document ) . ready ( function ( $ ) {
// close postboxes that should be closed
$ ( '.if-js-closed' ) . removeClass ( 'if-js-closed' ) . addClass ( 'closed' );
// postboxes setup
postboxes . add_postbox_toggles ( '<?php echo $this->a_str_Pagehook; ?>' );
2014-05-24 11:53:54 +00:00
jQuery ( '#<?php echo $this->getFieldID(FOOTNOTE_INPUTFIELD_PLACEHOLDER_START); ?>' ) . on ( 'change' , function () {
var l_int_SelectedIndex = jQuery ( this ) . prop ( " selectedIndex " );
jQuery ( '#<?php echo $this->getFieldID(FOOTNOTE_INPUTFIELD_PLACEHOLDER_END); ?> option:eq(' + l_int_SelectedIndex + ')' ) . prop ( 'selected' , true );
footnotes_Display_UserDefined_Placeholders ();
});
jQuery ( '#<?php echo $this->getFieldID(FOOTNOTE_INPUTFIELD_PLACEHOLDER_END); ?>' ) . on ( 'change' , function () {
var l_int_SelectedIndex = jQuery ( this ) . prop ( " selectedIndex " );
jQuery ( '#<?php echo $this->getFieldID(FOOTNOTE_INPUTFIELD_PLACEHOLDER_START); ?> option:eq(' + l_int_SelectedIndex + ')' ) . prop ( 'selected' , true );
footnotes_Display_UserDefined_Placeholders ();
});
footnotes_Display_UserDefined_Placeholders ();
2014-05-21 18:33:26 +00:00
});
2014-05-24 11:53:54 +00:00
function footnotes_Display_UserDefined_Placeholders () {
if ( jQuery ( '#<?php echo $this->getFieldID(FOOTNOTE_INPUTFIELD_PLACEHOLDER_START); ?>' ) . val () == " userdefined " ) {
jQuery ( '#<?php echo $this->getFieldID(FOOTNOTE_INPUTFIELD_PLACEHOLDER_START_USERDEFINED); ?>' ) . show ();
jQuery ( '#<?php echo $this->getFieldID(FOOTNOTE_INPUTFIELD_PLACEHOLDER_END_USERDEFINED); ?>' ) . show ();
} else {
jQuery ( '#<?php echo $this->getFieldID(FOOTNOTE_INPUTFIELD_PLACEHOLDER_START_USERDEFINED); ?>' ) . hide ();
jQuery ( '#<?php echo $this->getFieldID(FOOTNOTE_INPUTFIELD_PLACEHOLDER_END_USERDEFINED); ?>' ) . hide ();
}
}
2014-05-21 18:33:26 +00:00
</ script >
< ? php
}
/**
* loads specific setting and returns an array with the keys [ id , name , value ]
* @ since 1.0
* @ param $p_str_FieldID
* @ return array
*/
protected function LoadSetting ( $p_str_FieldID )
{
$p_arr_Return = array ();
$p_arr_Return [ " id " ] = $this -> getFieldID ( $p_str_FieldID );
$p_arr_Return [ " name " ] = $this -> getFieldName ( $p_str_FieldID );
$p_arr_Return [ " value " ] = esc_attr ( $this -> getFieldValue ( $p_str_FieldID ));
return $p_arr_Return ;
}
/**
* access settings field by name
* @ since 1.0
* @ param string $p_str_FieldName
* @ return string
*/
protected function getFieldName ( $p_str_FieldName )
{
return sprintf ( '%s[%s]' , FOOTNOTE_SETTINGS_CONTAINER , $p_str_FieldName );
//return sprintf( '%s', $p_str_FieldName );
}
/**
* access settings field by id
* @ since 1.0
* @ param string $p_str_FieldID
* @ return string
*/
protected function getFieldID ( $p_str_FieldID )
{
2014-05-24 11:53:54 +00:00
//return sprintf('%s[%s]', FOOTNOTE_SETTINGS_CONTAINER, $p_str_FieldID);
return sprintf ( '%s' , $p_str_FieldID );
2014-05-21 18:33:26 +00:00
}
/**
* get settings field value
* @ since 1.0
* @ param string $p_str_Key
* @ return string
*/
protected function getFieldValue ( $p_str_Key )
{
return $this -> a_arr_Options [ $p_str_Key ];
}
/**
* outputs a break to have a new line
* @ since 1.0 . 7
*/
function AddNewline ()
{
echo '<br/><br/>' ;
}
2014-05-22 13:45:52 +00:00
/**
* outputs a simple text
* @ param string $p_str_Text
* @ since 1.1 . 1
*/
function AddText ( $p_str_Text )
{
echo '<span>' . $p_str_Text . '</span>' ;
}
2014-05-21 18:33:26 +00:00
/**
* outputs a label for a specific input / select box
* @ param string $p_str_SettingsID
* @ param string $p_str_Caption
* @ param string $p_str_Styling
* @ since 1.0 . 7
*/
function AddLabel ( $p_str_SettingsID , $p_str_Caption , $p_str_Styling = " " )
{
/* add styling tag if styling is set */
if ( ! empty ( $p_str_Styling )) {
$p_str_Styling = ' style="' . $p_str_Styling . '"' ;
}
echo '<label for="' . $p_str_SettingsID . '"' . $p_str_Styling . '>' . $p_str_Caption . '</label>' ;
}
/**
* outputs a input type = text
* @ param string $p_str_SettingsID [ id of the settings field ]
* @ param string $p_str_ClassName [ css class name ]
* @ param int $p_str_MaxLength [ max length for the input value ]
2014-05-22 13:45:52 +00:00
* @ param bool $p_bool_Readonly [ input is readonly ] in version 1.1 . 1
2014-05-24 11:53:54 +00:00
* @ param bool $p_bool_Hidden [ input is hidden by default ] in version 1.1 . 2
2014-05-21 18:33:26 +00:00
* @ since 1.0 - beta
* removed optional paremter for a label in version 1.0 . 7
*/
2014-05-24 11:53:54 +00:00
function AddTextbox ( $p_str_SettingsID , $p_str_ClassName = " " , $p_str_MaxLength = 0 , $p_bool_Readonly = false , $p_bool_Hidden = false )
2014-05-21 18:33:26 +00:00
{
/* collect data for given settings field */
$l_arr_Data = $this -> LoadSetting ( $p_str_SettingsID );
/* if input shall have a css class, add the style tag for it */
if ( ! empty ( $p_str_ClassName )) {
$p_str_ClassName = 'class="' . $p_str_ClassName . '"' ;
}
/* optional add a maxlength to the input field */
if ( ! empty ( $p_str_MaxLength )) {
$p_str_MaxLength = ' maxlength="' . $p_str_MaxLength . '"' ;
}
2014-05-22 13:45:52 +00:00
if ( $p_bool_Readonly ) {
$p_bool_Readonly = ' readonly="readonly"' ;
}
2014-05-24 11:53:54 +00:00
if ( $p_bool_Hidden ) {
$p_bool_Hidden = ' style="display:none;"' ;
}
2014-05-21 18:33:26 +00:00
/* outputs an input field type TEXT */
2014-05-24 11:53:54 +00:00
echo '<input type="text" ' . $p_str_ClassName . $p_str_MaxLength . $p_bool_Readonly . $p_bool_Hidden . ' name="' . $l_arr_Data [ " name " ] . '" id="' . $l_arr_Data [ " id " ] . '" value="' . $l_arr_Data [ " value " ] . '"/>' ;
2014-05-21 18:33:26 +00:00
}
/**
* outputs a input type = checkbox
* @ param string $p_str_SettingsID [ id of the settings field ]
* @ param string $p_str_ClassName [ optional css class name ]
* @ since 1.0 - beta
*/
function AddCheckbox ( $p_str_SettingsID , $p_str_ClassName = " " )
{
/* collect data for given settings field */
$l_arr_Data = $this -> LoadSetting ( $p_str_SettingsID );
/* if input shall have a css class, add the style tag for it */
if ( ! empty ( $p_str_ClassName )) {
$p_str_ClassName = 'class="' . $p_str_ClassName . '"' ;
}
/* lookup if the checkbox shall be pre-checked */
$l_str_Checked = " " ;
if ( footnotes_ConvertToBool ( $l_arr_Data [ " value " ])) {
$l_str_Checked = 'checked="checked"' ;
}
/* outputs an input field type CHECKBOX */
echo sprintf ( '<input type="checkbox" ' . $p_str_ClassName . ' name="' . $l_arr_Data [ " name " ] . '" id="' . $l_arr_Data [ " id " ] . '" %s/>' , $l_str_Checked );
}
/**
* outputs a select box
* @ param string $p_str_SettingsID [ id of the settings field ]
* @ param array $p_arr_Options [ array with options ]
* @ param string $p_str_ClassName [ optional css class name ]
* @ since 1.0 - beta
*/
function AddSelectbox ( $p_str_SettingsID , $p_arr_Options , $p_str_ClassName = " " )
{
/* collect data for given settings field */
$l_arr_Data = $this -> LoadSetting ( $p_str_SettingsID );
/* if input shall have a css class, add the style tag for it */
if ( ! empty ( $p_str_ClassName )) {
$p_str_ClassName = 'class="' . $p_str_ClassName . '"' ;
}
/* select starting tag */
$l_str_Output = '<select ' . $p_str_ClassName . ' name="' . $l_arr_Data [ " name " ] . '" id="' . $l_arr_Data [ " id " ] . '">' ;
/* loop through all array keys */
foreach ( $p_arr_Options as $l_str_Value => $l_str_Caption ) {
/* add key as option value */
$l_str_Output .= '<option value="' . $l_str_Value . '"' ;
/* check if option value is set and has to be pre-selected */
if ( $l_arr_Data [ " value " ] == $l_str_Value ) {
$l_str_Output .= ' selected' ;
}
/* write option caption and close option tag */
$l_str_Output .= '>' . $l_str_Caption . '</option>' ;
}
/* close select */
$l_str_Output .= '</select>' ;
/* outputs the SELECT field */
echo $l_str_Output ;
}
/**
* initialize general settings tab
* called in class constructor @ admin_init
* @ since 1.0
* changed layout of settings form settings fields to meta boxes in version 1.0 . 7
*/
function RegisterTab_General ()
{
/* add tab to the tab array */
$this -> a_arr_SettingsTabs [ FOOTNOTE_SETTINGS_LABEL_GENERAL ] = __ ( " General " , FOOTNOTES_PLUGIN_NAME );
/* register settings tab */
add_settings_section ( " Footnote_Secion_Settings_General " , sprintf ( __ ( " %s Settings " , FOOTNOTES_PLUGIN_NAME ), FOOTNOTES_PLUGIN_PUBLIC_NAME ), array ( $this , 'RegisterTab_General_Description' ), FOOTNOTE_SETTINGS_LABEL_GENERAL );
add_meta_box ( 'Register_MetaBox_ReferenceContainer' , __ ( " References Container " , FOOTNOTES_PLUGIN_NAME ), array ( $this , 'Register_MetaBox_ReferenceContainer' ), FOOTNOTE_SETTINGS_LABEL_GENERAL , 'main' );
2014-05-23 11:53:26 +00:00
add_meta_box ( 'Register_MetaBox_FootnoteStyling' , sprintf ( __ ( " %s styling " , FOOTNOTES_PLUGIN_NAME ), FOOTNOTES_PLUGIN_PUBLIC_NAME ), array ( $this , 'Register_MetaBox_FootnoteStyling' ), FOOTNOTE_SETTINGS_LABEL_GENERAL , 'main' );
2014-05-27 19:07:11 +00:00
add_meta_box ( 'Register_MetaBox_Love' , FOOTNOTES_PLUGIN_PUBLIC_NAME . ' ' . FOOTNOTES_LOVE_SYMBOL , array ( $this , 'Register_MetaBox_Love' ), FOOTNOTE_SETTINGS_LABEL_GENERAL , 'main' );
2014-05-23 11:53:26 +00:00
add_meta_box ( 'Register_MetaBox_Other' , __ ( " Other " , FOOTNOTES_PLUGIN_NAME ), array ( $this , 'Register_MetaBox_Other' ), FOOTNOTE_SETTINGS_LABEL_GENERAL , 'main' );
2014-05-21 18:33:26 +00:00
}
/**
* adds a desciption to the general settings tab
* called in RegisterTab_General
* @ since 1.0
*/
function RegisterTab_General_Description ()
{
// unused description
}
/**
* outputs a container for the reference container settings
* @ since 1.0 . 7
*/
function Register_MetaBox_ReferenceContainer ()
{
/* setting for 'reference label' */
$this -> AddLabel ( FOOTNOTE_INPUTFIELD_REFERENCES_LABEL , __ ( " References label: " , FOOTNOTES_PLUGIN_NAME ));
$this -> AddTextbox ( FOOTNOTE_INPUTFIELD_REFERENCES_LABEL , " footnote_plugin_50 " );
$this -> AddNewline ();
/* setting for 'collapse reference container by default' */
$this -> AddLabel ( FOOTNOTE_INPUTFIELD_COLLAPSE_REFERENCES , __ ( " Collapse references by default: " , FOOTNOTES_PLUGIN_NAME ));
$this -> AddCheckbox ( FOOTNOTE_INPUTFIELD_COLLAPSE_REFERENCES );
$this -> AddNewline ();
/*
* setting for 'placement of the reference container'
* @ since 1.0 . 7
*/
$l_arr_Options = array (
" footer " => __ ( " in the footer " , FOOTNOTES_PLUGIN_NAME ),
2014-05-22 12:47:54 +00:00
" post_end " => __ ( " at the end of the post " , FOOTNOTES_PLUGIN_NAME ),
" widget " => __ ( " in the widget area " , FOOTNOTES_PLUGIN_NAME )
2014-05-21 18:33:26 +00:00
);
$this -> AddLabel ( FOOTNOTE_INPUTFIELD_REFERENCE_CONTAINER_PLACE , __ ( " Where shall the reference container appear: " , FOOTNOTES_PLUGIN_NAME ));
$this -> AddSelectbox ( FOOTNOTE_INPUTFIELD_REFERENCE_CONTAINER_PLACE , $l_arr_Options , " footnote_plugin_50 " );
}
/**
* outputs a container for the styling of footnotes
* @ since 1.0 . 7
*/
function Register_MetaBox_FootnoteStyling ()
{
/* setting for 'combine identical footnotes' */
$l_arr_Options = array (
" yes " => __ ( " Yes " , FOOTNOTES_PLUGIN_NAME ),
" no " => __ ( " No " , FOOTNOTES_PLUGIN_NAME )
);
$this -> AddLabel ( FOOTNOTE_INPUTFIELD_COMBINE_IDENTICAL , __ ( " Combine identical footnotes: " , FOOTNOTES_PLUGIN_NAME ));
$this -> AddSelectbox ( FOOTNOTE_INPUTFIELD_COMBINE_IDENTICAL , $l_arr_Options , " footnote_plugin_50 " );
$this -> AddNewline ();
2014-05-24 11:53:54 +00:00
2014-05-21 18:33:26 +00:00
/* setting for 'footnote tag starts with' */
2014-05-24 11:53:54 +00:00
$l_arr_Options = array (
2014-05-24 12:38:22 +00:00
" (( " => " (( " ,
" <fn> " => htmlspecialchars ( " <fn> " ),
" [ref] " => " [ref] " ,
2014-05-24 11:53:54 +00:00
" userdefined " => __ ( 'user defined' , FOOTNOTES_PLUGIN_NAME )
);
2014-05-21 18:33:26 +00:00
$this -> AddLabel ( FOOTNOTE_INPUTFIELD_PLACEHOLDER_START , __ ( " Footnote tag starts with: " , FOOTNOTES_PLUGIN_NAME ));
2014-05-24 11:53:54 +00:00
$this -> AddSelectbox ( FOOTNOTE_INPUTFIELD_PLACEHOLDER_START , $l_arr_Options , " footnote_plugin_15 " );
2014-05-21 18:33:26 +00:00
/* setting for 'footnote tag ends with' */
2014-05-24 11:53:54 +00:00
$l_arr_Options = array (
2014-05-24 12:38:22 +00:00
" )) " => " )) " ,
" </fn> " => htmlspecialchars ( " </fn> " ),
" [/ref] " => " [/ref] " ,
2014-05-24 11:53:54 +00:00
" userdefined " => __ ( 'user defined' , FOOTNOTES_PLUGIN_NAME )
);
2014-05-21 18:33:26 +00:00
$this -> AddLabel ( FOOTNOTE_INPUTFIELD_PLACEHOLDER_END , __ ( " and ends with: " , FOOTNOTES_PLUGIN_NAME ) . ' ' , 'text-align: right;' );
2014-05-24 11:53:54 +00:00
$this -> AddSelectbox ( FOOTNOTE_INPUTFIELD_PLACEHOLDER_END , $l_arr_Options , " footnote_plugin_15 " );
$this -> AddNewline ();
/* user defined setting for 'footnote start and end tag' */
$this -> AddLabel ( FOOTNOTE_INPUTFIELD_PLACEHOLDER_START_USERDEFINED , " " );
$this -> AddTextbox ( FOOTNOTE_INPUTFIELD_PLACEHOLDER_START_USERDEFINED , " footnote_plugin_15 " , 14 , false , true );
$this -> AddLabel ( FOOTNOTE_INPUTFIELD_PLACEHOLDER_END_USERDEFINED , " " );
$this -> AddTextbox ( FOOTNOTE_INPUTFIELD_PLACEHOLDER_END_USERDEFINED , " footnote_plugin_15 " , 14 , false , true );
2014-05-21 18:33:26 +00:00
$this -> AddNewline ();
/* setting for 'footnotes counter style' */
$l_str_Space = " " ;
$l_arr_Options = array (
" arabic_plain " => __ ( " Arabic Numbers - Plain " , FOOTNOTES_PLUGIN_NAME ) . $l_str_Space . " 1, 2, 3, 4, 5, ... " ,
" arabic_leading " => __ ( " Arabic Numbers - Leading 0 " , FOOTNOTES_PLUGIN_NAME ) . $l_str_Space . " 01, 02, 03, 04, 05, ... " ,
" latin_low " => __ ( " Latin Character - lower case " , FOOTNOTES_PLUGIN_NAME ) . $l_str_Space . " a, b, c, d, e, ... " ,
" latin_high " => __ ( " Latin Character - upper case " , FOOTNOTES_PLUGIN_NAME ) . $l_str_Space . " A, B, C, D, E, ... " ,
" romanic " => __ ( " Roman Numerals " , FOOTNOTES_PLUGIN_NAME ) . $l_str_Space . " I, II, III, IV, V, ... "
);
$this -> AddLabel ( FOOTNOTE_INPUTFIELD_COUNTER_STYLE , __ ( 'Counter style:' , FOOTNOTES_PLUGIN_NAME ));
$this -> AddSelectbox ( FOOTNOTE_INPUTFIELD_COUNTER_STYLE , $l_arr_Options , " footnote_plugin_50 " );
}
2014-05-23 11:53:26 +00:00
/**
* outputs other footnotes settings that doesn ' t match a special category
* @ since 1.0 . 7
*/
function Register_MetaBox_Love ()
{
/* setting for 'love and share this plugin in my footer' */
$l_arr_Options = array (
2014-05-27 19:07:11 +00:00
" text-1 " => sprintf ( __ ( 'I %s %s' , FOOTNOTES_PLUGIN_NAME ), FOOTNOTES_LOVE_SYMBOL , FOOTNOTES_PLUGIN_PUBLIC_NAME ),
" text-2 " => sprintf ( __ ( 'this site uses the awesome %s Plugin' , FOOTNOTES_PLUGIN_NAME ), FOOTNOTES_PLUGIN_PUBLIC_NAME ),
" text-3 " => sprintf ( __ ( 'extra smooth %s' , FOOTNOTES_PLUGIN_NAME ), FOOTNOTES_PLUGIN_PUBLIC_NAME ),
" random " => __ ( 'random text' , FOOTNOTES_PLUGIN_NAME ),
" no " => sprintf ( __ ( " Don't display a %s %s text in my footer. " , FOOTNOTES_PLUGIN_NAME ), FOOTNOTES_PLUGIN_PUBLIC_NAME , FOOTNOTES_LOVE_SYMBOL )
2014-05-23 11:53:26 +00:00
);
$this -> AddLabel ( FOOTNOTE_INPUTFIELD_LOVE , sprintf ( __ ( " Tell the world you're using %s: " , FOOTNOTES_PLUGIN_NAME ), FOOTNOTES_PLUGIN_PUBLIC_NAME ));
$this -> AddSelectbox ( FOOTNOTE_INPUTFIELD_LOVE , $l_arr_Options , " footnote_plugin_50 " );
$this -> AddNewline ();
/* no 'love me' on specific pages */
$this -> AddText ( sprintf ( __ ( " Don't tell the world you're using %s on specific pages by adding the following short code: " , FOOTNOTES_PLUGIN_NAME ), FOOTNOTES_PLUGIN_PUBLIC_NAME ));
$this -> AddText ( " " );
$this -> AddText ( FOOTNOTES_NO_SLUGME_PLUG );
}
2014-05-21 18:33:26 +00:00
/**
* outputs other footnotes settings that doesn ' t match a special category
* @ since 1.0 . 7
*/
function Register_MetaBox_Other ()
{
/* setting for 'search footnotes tag in excerpt' */
$l_arr_Options = array (
" yes " => __ ( " Yes " , FOOTNOTES_PLUGIN_NAME ),
" no " => __ ( " No " , FOOTNOTES_PLUGIN_NAME )
);
$this -> AddLabel ( FOOTNOTE_INPUTFIELD_SEARCH_IN_EXCERPT , __ ( 'Allow footnotes on Summarized Posts:' , FOOTNOTES_PLUGIN_NAME ));
$this -> AddSelectbox ( FOOTNOTE_INPUTFIELD_SEARCH_IN_EXCERPT , $l_arr_Options , " footnote_plugin_50 " );
}
/**
* initialize howto settings tab
* called in class constructor @ admin_init
* @ since 1.0
* changed layout of settings form settings fields to meta boxes in version 1.0 . 7
*/
function RegisterTab_HowTo ()
{
/* add tab to the tab array */
$this -> a_arr_SettingsTabs [ FOOTNOTE_SETTINGS_LABEL_HOWTO ] = __ ( " HowTo " , FOOTNOTES_PLUGIN_NAME );
/* register settings tab */
add_settings_section ( " Footnote_Secion_Settings_Howto " , " " , array ( $this , 'RegisterTab_HowTo_Description' ), FOOTNOTE_SETTINGS_LABEL_HOWTO );
add_meta_box ( 'Register_MetaBox_HowTo' , __ ( " Brief introduction in how to use the plugin " , FOOTNOTES_PLUGIN_NAME ), array ( $this , 'Register_MetaBox_HowTo' ), FOOTNOTE_SETTINGS_LABEL_HOWTO , 'main' );
}
/**
* adds a descrption to the HowTo settings tab
* called int RegisterTab_HowTo
* @ since 1.0
* removed output of description in version 1.0 . 7
*/
function RegisterTab_HowTo_Description ()
{
// unused
}
/**
* outputs the content of the HowTo settings tab
* @ since 1.0
*/
function Register_MetaBox_HowTo ()
{
$l_arr_Footnote_StartingTag = $this -> LoadSetting ( FOOTNOTE_INPUTFIELD_PLACEHOLDER_START );
$l_arr_Footnote_EndingTag = $this -> LoadSetting ( FOOTNOTE_INPUTFIELD_PLACEHOLDER_END );
2014-05-24 18:03:30 +00:00
if ( $l_arr_Footnote_StartingTag [ " value " ] == " userdefined " || $l_arr_Footnote_EndingTag [ " value " ] == " userdefined " ) {
$l_arr_Footnote_StartingTag = $this -> LoadSetting ( FOOTNOTE_INPUTFIELD_PLACEHOLDER_START_USERDEFINED );
$l_arr_Footnote_EndingTag = $this -> LoadSetting ( FOOTNOTE_INPUTFIELD_PLACEHOLDER_END_USERDEFINED );
}
2014-05-21 18:33:26 +00:00
?>
< div style = " text-align:center; " >
< div class = " footnote_placeholder_box_container " >
< p >
< ? php echo __ ( " Start your footnote with the following shortcode: " , FOOTNOTES_PLUGIN_NAME ); ?>
< span
class = " footnote_highlight_placeholder " >< ? php echo $l_arr_Footnote_StartingTag [ " value " ]; ?> </span>
</ p >
< p >
< ? php echo __ ( " ...and end your footnote with this shortcode: " , FOOTNOTES_PLUGIN_NAME ); ?>
< span
class = " footnote_highlight_placeholder " >< ? php echo $l_arr_Footnote_EndingTag [ " value " ]; ?> </span>
</ p >
< div class = " footnote_placeholder_box_example " >
< p >
< span
class = " footnote_highlight_placeholder " >< ? php echo $l_arr_Footnote_StartingTag [ " value " ] . __ ( " example string " , FOOTNOTES_PLUGIN_NAME ) . $l_arr_Footnote_EndingTag [ " value " ]; ?> </span>
< ? php echo __ ( " will be displayed as: " , FOOTNOTES_PLUGIN_NAME ); ?>
& nbsp ; & nbsp ; & nbsp ; & nbsp ;
< ? php echo footnotes_replaceFootnotes ( $l_arr_Footnote_StartingTag [ " value " ] . __ ( " example string " , FOOTNOTES_PLUGIN_NAME ) . $l_arr_Footnote_EndingTag [ " value " ], true , true ); ?>
</ p >
</ div >
< p >
< ? php echo sprintf ( __ ( " If you have any questions, please don't hesitate to %se-mail%s us. " , FOOTNOTES_PLUGIN_NAME ), '<a href="mailto:mci@cheret.co.uk" class="footnote_plugin">' , '</a>' ); ?>
</ p >
</ div >
</ div >
< ? php
}
2014-05-20 11:38:36 +00:00
} /* Class Class_FootnotesSettings */