- Update: Refactored the whole source code
- Add: Grouped the Plugin Settings into a new Menu Page called "ManFisher Plugins" - Update: Moved the Diagnostics Sections to into a new Sub Page called "Diagnostics" - Add: Sub Page to list all other Plugins of the Contributors - Bugfix: Line up Footnotes with multiple lines in the Reference container git-svn-id: https://plugins.svn.wordpress.org/footnotes/trunk@989695 b8457f37-d9ea-0310-8a92-e5e31aec5664
This commit is contained in:
parent
1f5e0ed500
commit
0c01b80173
50 changed files with 3070 additions and 2107 deletions
213
class/dashboard/init.php
Normal file
213
class/dashboard/init.php
Normal file
|
@ -0,0 +1,213 @@
|
|||
<?php
|
||||
/**
|
||||
* Includes the Plugin settings menu.
|
||||
*
|
||||
* @filesource
|
||||
* @author Stefan Herndler
|
||||
* @since 1.5.0 12.09.14 10:26
|
||||
*/
|
||||
|
||||
|
||||
/**
|
||||
* Handles the Settings interface of the Plugin.
|
||||
*
|
||||
* @author Stefan Herndler
|
||||
* @since 1.5.0
|
||||
*/
|
||||
class MCI_Footnotes_Layout_Init {
|
||||
|
||||
/**
|
||||
* Slug for the Plugin main menu.
|
||||
*
|
||||
* @author Stefan Herndler
|
||||
* @since 1.5.0
|
||||
* @var string
|
||||
*/
|
||||
const C_STR_MAIN_MENU_SLUG = "mfmmf";
|
||||
|
||||
/**
|
||||
* Plugin main menu name.
|
||||
*
|
||||
* @author Stefan Herndler
|
||||
* @since 1.5.0
|
||||
* @var string
|
||||
*/
|
||||
const C_STR_MAIN_MENU_TITLE = "ManFisher Plugins";
|
||||
|
||||
/**
|
||||
*
|
||||
* @author Stefan Herndler
|
||||
* @since 1.5.0
|
||||
* @var array
|
||||
*/
|
||||
private $a_arr_SubPageClasses = array();
|
||||
|
||||
/**
|
||||
* Class Constructor. Initializes all WordPress hooks for the Plugin Settings.
|
||||
*
|
||||
* @author Stefan Herndler
|
||||
* @since 1.5.0
|
||||
*/
|
||||
public function __construct() {
|
||||
// iterate through each class define in the current script
|
||||
foreach(get_declared_classes() as $l_str_ClassName) {
|
||||
// accept only child classes of the layout engine
|
||||
if(is_subclass_of($l_str_ClassName, 'MCI_Footnotes_LayoutEngine')) {
|
||||
/** @var MCI_Footnotes_LayoutEngine $l_obj_Class */
|
||||
$l_obj_Class = new $l_str_ClassName();
|
||||
// append new instance of the layout engine sub class
|
||||
$this->a_arr_SubPageClasses[$l_obj_Class->getPriority()] = $l_obj_Class;
|
||||
}
|
||||
}
|
||||
ksort($this->a_arr_SubPageClasses);
|
||||
|
||||
// register hooks/actions
|
||||
add_action('admin_init', array($this, 'initializeSettings'));
|
||||
add_action('admin_menu', array($this, 'registerMainMenu'));
|
||||
// register AJAX callbacks for Plugin information
|
||||
add_action("wp_ajax_nopriv_footnotes_getPluginInfo", array($this, "getPluginMetaInformation"));
|
||||
add_action("wp_ajax_footnotes_getPluginInfo", array($this, "getPluginMetaInformation"));
|
||||
}
|
||||
|
||||
/**
|
||||
* Initializes all sub pages and registers the settings.
|
||||
*
|
||||
* @author Stefan Herndler
|
||||
* @since 1.5.0
|
||||
*/
|
||||
public function initializeSettings() {
|
||||
MCI_Footnotes_Settings::instance()->RegisterSettings();
|
||||
// iterate though each sub class of the layout engine and register their sections
|
||||
/** @var MCI_Footnotes_LayoutEngine $l_obj_LayoutEngineSubClass */
|
||||
foreach($this->a_arr_SubPageClasses as $l_obj_LayoutEngineSubClass) {
|
||||
$l_obj_LayoutEngineSubClass->registerSections();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Registers the new main menu for the WordPress dashboard.
|
||||
* Registers all sub menu pages for the new main menu.
|
||||
*
|
||||
* @author Stefan Herndler
|
||||
* @since 2.0.2
|
||||
* @see http://codex.wordpress.org/Function_Reference/add_menu_page
|
||||
*/
|
||||
public function registerMainMenu() {
|
||||
global $menu;
|
||||
// iterate through each main menu
|
||||
foreach($menu as $l_arr_MainMenu) {
|
||||
// iterate through each main menu attribute
|
||||
foreach($l_arr_MainMenu as $l_str_Attribute) {
|
||||
// main menu already added, append sub pages and stop
|
||||
if ($l_str_Attribute == self::C_STR_MAIN_MENU_SLUG) {
|
||||
$this->registerSubPages();
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// add a new main menu page to the WordPress dashboard
|
||||
add_menu_page(
|
||||
self::C_STR_MAIN_MENU_TITLE, // page title
|
||||
self::C_STR_MAIN_MENU_TITLE, // menu title
|
||||
'manage_options', // capability
|
||||
self::C_STR_MAIN_MENU_SLUG, // menu slug
|
||||
array($this, "displayOtherPlugins"), // function
|
||||
'', // icon url
|
||||
81 // position
|
||||
);
|
||||
$this->registerSubPages();
|
||||
}
|
||||
|
||||
/**
|
||||
* Registers all SubPages for this Plugin.
|
||||
*
|
||||
* @author Stefan Herndler
|
||||
* @since 1.5.0
|
||||
*/
|
||||
private function registerSubPages() {
|
||||
// first registered sub menu page MUST NOT contain a unique slug suffix
|
||||
// iterate though each sub class of the layout engine and register their sub page
|
||||
/** @var MCI_Footnotes_LayoutEngine $l_obj_LayoutEngineSubClass */
|
||||
foreach($this->a_arr_SubPageClasses as $l_obj_LayoutEngineSubClass) {
|
||||
$l_obj_LayoutEngineSubClass->registerSubPage();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Displays other Plugins from the developers.
|
||||
*
|
||||
* @author Stefan Herndler
|
||||
* @since 1.5.0
|
||||
*/
|
||||
public function displayOtherPlugins() {
|
||||
$l_arr_Plugins = array(
|
||||
array("name" => "identity", "title" => "Identity"),
|
||||
array("name" => "google-keyword-suggest", "title" => "Google Keyword Suggest"),
|
||||
array("name" => "competition", "title" => "competition"),
|
||||
array("name" => "formscontact", "title" => "/forms.contact"),
|
||||
array("name" => "footnotes", "title" => "Footnotes")
|
||||
);
|
||||
|
||||
// load template file
|
||||
$l_obj_Template = new MCI_Footnotes_Template(MCI_Footnotes_Template::C_STR_DASHBOARD, "other-plugins");
|
||||
|
||||
echo sprintf("<br/><h3>%s</h3><br/>", __('Take a look on other Plugins we have developed.', MCI_Footnotes_Config::C_STR_PLUGIN_NAME));
|
||||
|
||||
echo '<div id="the-list">';
|
||||
// iterate through each Plugin
|
||||
foreach($l_arr_Plugins as $l_arr_PluginInfo) {
|
||||
// replace Plugin information
|
||||
$l_obj_Template->replace(
|
||||
array(
|
||||
"name" => $l_arr_PluginInfo["name"],
|
||||
"title" => $l_arr_PluginInfo["title"]
|
||||
)
|
||||
);
|
||||
// display Plugin
|
||||
echo $l_obj_Template->getContent();
|
||||
// reload template
|
||||
$l_obj_Template->reload();
|
||||
}
|
||||
echo '</div>';
|
||||
}
|
||||
|
||||
/**
|
||||
* AJAX call. returns a JSON string containing meta information about a specific WordPress Plugin.
|
||||
*
|
||||
* @author Stefan Herndler
|
||||
* @since 1.5.0
|
||||
*/
|
||||
public function getPluginMetaInformation() {
|
||||
// get plugin internal name from POST data
|
||||
$l_str_PluginName = array_key_exists("plugin", $_POST) ? $_POST["plugin"] : null;
|
||||
if (empty($l_str_PluginName)) {
|
||||
echo json_encode(array("error" => "Plugin name invalid."));
|
||||
exit;
|
||||
}
|
||||
$l_str_Url = "https://api.wordpress.org/plugins/info/1.0/".$l_str_PluginName.".json";
|
||||
// call URL and collect data
|
||||
$l_arr_Response = wp_remote_get($l_str_Url);
|
||||
// check if response is valid
|
||||
if (is_wp_error($l_arr_Response)) {
|
||||
echo json_encode(array("error" => "Can't get Plugin information."));
|
||||
exit;
|
||||
}
|
||||
// get the body of the response
|
||||
$l_str_Response = $l_arr_Response["body"];
|
||||
// get plugin object
|
||||
$l_arr_Plugin = json_decode($l_str_Response, true);
|
||||
|
||||
// return Plugin information as JSON encoded string
|
||||
echo json_encode(
|
||||
array(
|
||||
"error" => "",
|
||||
"PluginImage" => "",
|
||||
"PluginDescription" => html_entity_decode($l_arr_Plugin["short_description"]),
|
||||
"PluginUrl" => $l_arr_Plugin["homepage"],
|
||||
"PluginVersion" => $l_arr_Plugin["version"]
|
||||
)
|
||||
);
|
||||
exit;
|
||||
}
|
||||
}
|
449
class/dashboard/layout.php
Normal file
449
class/dashboard/layout.php
Normal file
|
@ -0,0 +1,449 @@
|
|||
<?php
|
||||
/**
|
||||
* Includes Layout Engine for the admin dashboard.
|
||||
*
|
||||
* @filesource
|
||||
* @author Stefan Herndler
|
||||
* @since 1.5.0 12.09.14 10:56
|
||||
*/
|
||||
|
||||
|
||||
/**
|
||||
* Layout Engine for the administration dashboard.
|
||||
*
|
||||
* @author Stefan Herndler
|
||||
* @since 1.5.0
|
||||
*/
|
||||
abstract class MCI_Footnotes_LayoutEngine {
|
||||
|
||||
/**
|
||||
* Stores the Hook connection string for the child sub page.
|
||||
*
|
||||
* @author Stefan Herndler
|
||||
* @since 1.5.0
|
||||
* @var null|string
|
||||
*/
|
||||
protected $a_str_SubPageHook = null;
|
||||
|
||||
/**
|
||||
* Stores all Sections for the child sub page.
|
||||
*
|
||||
* @author Stefan Herndler
|
||||
* @since 1.5.0
|
||||
* @var array
|
||||
*/
|
||||
protected $a_arr_Sections = array();
|
||||
|
||||
/**
|
||||
* Returns a Priority index. Lower numbers have a higher Priority.
|
||||
*
|
||||
* @author Stefan Herndler
|
||||
* @since 1.5.0
|
||||
* @return int
|
||||
*/
|
||||
abstract public function getPriority();
|
||||
|
||||
/**
|
||||
* Returns the unique slug of the child sub page.
|
||||
*
|
||||
* @author Stefan Herndler
|
||||
* @since 1.5.0
|
||||
* @return string
|
||||
*/
|
||||
abstract protected function getSubPageSlug();
|
||||
|
||||
/**
|
||||
* Returns the title of the child sub page.
|
||||
*
|
||||
* @author Stefan Herndler
|
||||
* @since 1.5.0
|
||||
* @return string
|
||||
*/
|
||||
abstract protected function getSubPageTitle();
|
||||
|
||||
/**
|
||||
* Returns an array of all registered sections for a sub page.
|
||||
*
|
||||
* @author Stefan Herndler
|
||||
* @since 1.5.0
|
||||
* @return array
|
||||
*/
|
||||
abstract protected function getSections();
|
||||
|
||||
/**
|
||||
* Returns an array of all registered meta boxes.
|
||||
*
|
||||
* @author Stefan Herndler
|
||||
* @since 1.5.0
|
||||
* @return array
|
||||
*/
|
||||
abstract protected function getMetaBoxes();
|
||||
|
||||
/**
|
||||
* Returns an array describing a sub page section.
|
||||
*
|
||||
* @author Stefan Herndler
|
||||
* @since 1.5.0
|
||||
* @param string $p_str_ID Unique ID suffix.
|
||||
* @param string $p_str_Title Title of the section.
|
||||
* @param int $p_int_SettingsContainerIndex Settings Container Index.
|
||||
* @param bool $p_bool_hasSubmitButton Should a Submit Button be displayed for this section, default: true.
|
||||
* @return array Array describing the section.
|
||||
*/
|
||||
protected function addSection($p_str_ID, $p_str_Title, $p_int_SettingsContainerIndex, $p_bool_hasSubmitButton = true) {
|
||||
return array("id" => MCI_Footnotes_Config::C_STR_PLUGIN_NAME . "-" . $p_str_ID, "title" => $p_str_Title, "submit" => $p_bool_hasSubmitButton, "container" => $p_int_SettingsContainerIndex);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns an array describing a meta box.
|
||||
*
|
||||
* @author Stefan Herndler
|
||||
* @since 1.5.0
|
||||
* @param string $p_str_SectionID Parent Section ID.
|
||||
* @param string $p_str_ID Unique ID suffix.
|
||||
* @param string $p_str_Title Title for the meta box.
|
||||
* @param string $p_str_CallbackFunctionName Class method name for callback.
|
||||
* @return array meta box description to be able to append a meta box to the output.
|
||||
*/
|
||||
protected function addMetaBox($p_str_SectionID, $p_str_ID, $p_str_Title, $p_str_CallbackFunctionName) {
|
||||
return array("parent" => MCI_Footnotes_Config::C_STR_PLUGIN_NAME . "-" . $p_str_SectionID, "id" => $p_str_ID, "title" => $p_str_Title, "callback" => $p_str_CallbackFunctionName);
|
||||
}
|
||||
|
||||
/**
|
||||
* Registers a sub page.
|
||||
*
|
||||
* @author Stefan Herndler
|
||||
* @since 1.5.0
|
||||
*/
|
||||
public function registerSubPage() {
|
||||
global $submenu;
|
||||
// iterate through each sub menu
|
||||
foreach($submenu as $l_arr_SubMenu) {
|
||||
// iterate through each sub menu attribute
|
||||
foreach($l_arr_SubMenu as $l_str_Attribute) {
|
||||
// sub menu already added, stop
|
||||
if ($l_str_Attribute == MCI_Footnotes_Layout_Init::C_STR_MAIN_MENU_SLUG . $this->getSubPageSlug()) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$this->a_str_SubPageHook = add_submenu_page(
|
||||
MCI_Footnotes_Layout_Init::C_STR_MAIN_MENU_SLUG, // parent slug
|
||||
$this->getSubPageTitle(), // page title
|
||||
$this->getSubPageTitle(), // menu title
|
||||
'manage_options', // capability
|
||||
MCI_Footnotes_Layout_Init::C_STR_MAIN_MENU_SLUG . $this->getSubPageSlug(), // menu slug
|
||||
array($this, 'displayContent') // function
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Registers all sections for a sub page.
|
||||
*
|
||||
* @author Stefan Herndler
|
||||
* @since 1.5.0
|
||||
*/
|
||||
public function registerSections() {
|
||||
// iterate through each section
|
||||
foreach($this->getSections() as $l_arr_Section) {
|
||||
// append tab to the tab-array
|
||||
$this->a_arr_Sections[$l_arr_Section["id"]] = $l_arr_Section;
|
||||
add_settings_section(
|
||||
$l_arr_Section["id"], // unique id
|
||||
"", //$l_arr_Section["title"], // title
|
||||
array($this, 'Description'), // callback function for the description
|
||||
$l_arr_Section["id"] // parent sub page slug
|
||||
);
|
||||
$this->registerMetaBoxes($l_arr_Section["id"]);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Registers all Meta boxes for a sub page.
|
||||
*
|
||||
* @author Stefan Herndler
|
||||
* @since 1.5.0
|
||||
* @param string $p_str_ParentID Parent section unique id.
|
||||
*/
|
||||
private function registerMetaBoxes($p_str_ParentID) {
|
||||
// iterate through each meta box
|
||||
foreach($this->getMetaBoxes() as $l_arr_MetaBox) {
|
||||
if ($l_arr_MetaBox["parent"] != $p_str_ParentID) {
|
||||
continue;
|
||||
}
|
||||
add_meta_box(
|
||||
$p_str_ParentID. "-" . $l_arr_MetaBox["id"], // unique id
|
||||
$l_arr_MetaBox["title"], // meta box title
|
||||
array($this, $l_arr_MetaBox["callback"]), // callback function to display (echo) the content
|
||||
$p_str_ParentID, // post type = parent section id
|
||||
'main' // context
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Append javascript and css files for specific sub page.
|
||||
*
|
||||
* @author Stefan Herndler
|
||||
* @since 1.5.0
|
||||
*/
|
||||
private function appendScripts() {
|
||||
// add jQuery to the sub menu page
|
||||
wp_enqueue_script('jquery');
|
||||
// enable meta boxes layout and close functionality
|
||||
wp_enqueue_script('postbox');
|
||||
// register stylesheet
|
||||
wp_register_style('mci-footnotes-admin-styles', plugins_url('../../css/settings.css', __FILE__));
|
||||
// add stylesheet to the output
|
||||
wp_enqueue_style('mci-footnotes-admin-styles');
|
||||
}
|
||||
|
||||
/**
|
||||
* Displays the content of specific sub page.
|
||||
*
|
||||
* @author Stefan Herndler
|
||||
* @since 1.5.0
|
||||
*/
|
||||
public function displayContent() {
|
||||
// register and enqueue scripts and styling
|
||||
$this->appendScripts();
|
||||
// get current section
|
||||
reset($this->a_arr_Sections);
|
||||
$l_str_ActiveSectionID = isset($_GET['t']) ? $_GET['t'] : key($this->a_arr_Sections);
|
||||
$l_arr_ActiveSection = $this->a_arr_Sections[$l_str_ActiveSectionID];
|
||||
// store settings
|
||||
$l_bool_SettingsUpdated = false;
|
||||
if (array_key_exists("save-settings", $_POST)) {
|
||||
if ($_POST["save-settings"] == "save") {
|
||||
$l_bool_SettingsUpdated = $this->saveSettings();
|
||||
}
|
||||
}
|
||||
|
||||
// display all sections and highlight the active section
|
||||
echo '<div class="wrap">';
|
||||
echo '<h2 class="nav-tab-wrapper">';
|
||||
// iterate through all register sections
|
||||
foreach ($this->a_arr_Sections as $l_str_ID => $l_arr_Description) {
|
||||
echo sprintf(
|
||||
'<a class="nav-tab%s" href="?page=%s&t=%s">%s</a>',
|
||||
$l_arr_ActiveSection["id"] == $l_str_ID ? ' nav-tab-active' : '',
|
||||
MCI_Footnotes_Layout_Init::C_STR_MAIN_MENU_SLUG . $this->getSubPageSlug(), $l_str_ID, $l_arr_Description["title"]
|
||||
);
|
||||
}
|
||||
echo '</h2><br/>';
|
||||
|
||||
if ($l_bool_SettingsUpdated) {
|
||||
echo sprintf('<div id="message" class="updated">%s</div>', __("Settings saved", MCI_Footnotes_Config::C_STR_PLUGIN_NAME));
|
||||
}
|
||||
|
||||
// form to submit the active section
|
||||
echo '<!--suppress HtmlUnknownTarget --><form method="post" action="">';
|
||||
settings_fields($l_arr_ActiveSection["container"]);
|
||||
echo '<input type="hidden" name="save-settings" value="save" />';
|
||||
// outputs the settings field of the active section
|
||||
do_settings_sections($l_arr_ActiveSection["id"]);
|
||||
do_meta_boxes($l_arr_ActiveSection["id"], 'main', NULL);
|
||||
|
||||
// add submit button to active section if defined
|
||||
if ($l_arr_ActiveSection["submit"]) {
|
||||
submit_button();
|
||||
}
|
||||
// close the form to submit data
|
||||
echo '</form>';
|
||||
// close container for the settings page
|
||||
echo '</div>';
|
||||
// output special javascript for the expand/collapse function of the meta boxes
|
||||
echo '<script type="text/javascript">';
|
||||
echo "jQuery(document).ready(function ($) {";
|
||||
echo "jQuery('.if-js-closed').removeClass('if-js-closed').addClass('closed');";
|
||||
echo "postboxes.add_postbox_toggles('" . $this->a_str_SubPageHook . "');";
|
||||
echo "});";
|
||||
echo '</script>';
|
||||
}
|
||||
|
||||
/**
|
||||
* Save all Plugin settings.
|
||||
*
|
||||
* @author Stefan Herndler
|
||||
* @since 1.5.0
|
||||
* @return bool
|
||||
*/
|
||||
private function saveSettings() {
|
||||
// get only Footnotes settings
|
||||
$l_arr_Settings = array();
|
||||
foreach($_POST as $l_str_SettingsName => $l_str_Value) {
|
||||
if (substr($l_str_SettingsName, 0, 8) == "footnote") {
|
||||
$l_arr_Settings[$l_str_SettingsName] = $l_str_Value;
|
||||
}
|
||||
}
|
||||
// get current section
|
||||
reset($this->a_arr_Sections);
|
||||
$l_str_ActiveSectionID = isset($_GET['t']) ? $_GET['t'] : key($this->a_arr_Sections);
|
||||
$l_arr_ActiveSection = $this->a_arr_Sections[$l_str_ActiveSectionID];
|
||||
// update settings
|
||||
return MCI_Footnotes_Settings::instance()->saveOptions($l_arr_ActiveSection["container"], $l_arr_Settings);
|
||||
}
|
||||
|
||||
/**
|
||||
* Output the Description of a section. May be overwritten in any section.
|
||||
*
|
||||
* @author Stefan Herndler
|
||||
* @since 1.5.0
|
||||
*/
|
||||
public function Description() {
|
||||
// default no description will be displayed
|
||||
}
|
||||
|
||||
/**
|
||||
* Loads specific setting and returns an array with the keys [id, name, value].
|
||||
*
|
||||
* @author Stefan Herndler
|
||||
* @since 1.5.0
|
||||
* @param string $p_str_SettingKeyName Settings Array key name.
|
||||
* @return array Contains Settings ID, Settings Name and Settings Value.
|
||||
*/
|
||||
protected function LoadSetting($p_str_SettingKeyName) {
|
||||
// get current section
|
||||
reset($this->a_arr_Sections);
|
||||
$l_str_ActiveSectionID = isset($_GET['t']) ? $_GET['t'] : key($this->a_arr_Sections);
|
||||
$l_arr_ActiveSection = $this->a_arr_Sections[$l_str_ActiveSectionID];
|
||||
|
||||
$p_arr_Return = array();
|
||||
$p_arr_Return["id"] = sprintf('%s', $p_str_SettingKeyName);
|
||||
//$p_arr_Return["name"] = sprintf('%s[%s]', MCI_Footnotes_Settings::instance()->getContainer($l_arr_ActiveSection["container"]), $p_str_SettingKeyName);
|
||||
$p_arr_Return["name"] = sprintf('%s', $p_str_SettingKeyName);
|
||||
$p_arr_Return["value"] = esc_attr(MCI_Footnotes_Settings::instance()->get($p_str_SettingKeyName));
|
||||
return $p_arr_Return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a line break to start a new line.
|
||||
*
|
||||
* @author Stefan Herndler
|
||||
* @since 1.5.0
|
||||
* @return string
|
||||
*/
|
||||
protected function addNewline() {
|
||||
return '<br/>';
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a line break to have a space between two lines.
|
||||
*
|
||||
* @author Stefan Herndler
|
||||
* @since 1.5.0
|
||||
* @return string
|
||||
*/
|
||||
protected function addLineSpace() {
|
||||
return '<br/><br/>';
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a simple text inside html <span> text.
|
||||
*
|
||||
* @author Stefan Herndler
|
||||
* @since 1.5.0
|
||||
* @param string $p_str_Text Message to be surrounded with simple html tag (span).
|
||||
* @return string
|
||||
*/
|
||||
protected function addText($p_str_Text) {
|
||||
return sprintf('<span>%s</span>', $p_str_Text);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the html tag for an input/select label.
|
||||
*
|
||||
* @author Stefan Herndler
|
||||
* @since 1.5.0
|
||||
* @param string $p_str_SettingName Name of the Settings key to connect the Label with the input/select field.
|
||||
* @param string $p_str_Caption Label caption.
|
||||
* @return string
|
||||
*/
|
||||
protected function addLabel($p_str_SettingName, $p_str_Caption) {
|
||||
if (empty($p_str_Caption)) {
|
||||
return "";
|
||||
}
|
||||
return sprintf('<label for="%s">%s:</label>', $p_str_SettingName, $p_str_Caption);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the html tag for an input [type = text].
|
||||
*
|
||||
* @author Stefan Herndler
|
||||
* @since 1.5.0
|
||||
* @param string $p_str_SettingName Name of the Settings key to pre load the input field.
|
||||
* @param int $p_str_MaxLength Maximum length of the input, default 999 characters.
|
||||
* @param bool $p_bool_Readonly Set the input to be read only, default false.
|
||||
* @param bool $p_bool_Hidden Set the input to be hidden, default false.
|
||||
* @return string
|
||||
*/
|
||||
protected function addTextBox($p_str_SettingName, $p_str_MaxLength = 999, $p_bool_Readonly = false, $p_bool_Hidden = false) {
|
||||
$l_str_Style = "";
|
||||
// collect data for given settings field
|
||||
$l_arr_Data = $this->LoadSetting($p_str_SettingName);
|
||||
if ($p_bool_Hidden) {
|
||||
$l_str_Style .= 'display:none;';
|
||||
}
|
||||
return sprintf('<input type="text" name="%s" id="%s" maxlength="%d" style="%s" value="%s" %s/>',
|
||||
$l_arr_Data["name"], $l_arr_Data["id"], $p_str_MaxLength,
|
||||
$l_str_Style, $l_arr_Data["value"], $p_bool_Readonly ? 'readonly="readonly"' : '');
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the html tag for an input [type = checkbox].
|
||||
*
|
||||
* @author Stefan Herndler
|
||||
* @since 1.5.0
|
||||
* @param string $p_str_SettingName Name of the Settings key to pre load the input field.
|
||||
* @return string
|
||||
*/
|
||||
protected function addCheckbox($p_str_SettingName) {
|
||||
// collect data for given settings field
|
||||
$l_arr_Data = $this->LoadSetting($p_str_SettingName);
|
||||
return sprintf('<input type="checkbox" name="%s" id="%s" %s/>',
|
||||
$l_arr_Data["name"], $l_arr_Data["id"],
|
||||
MCI_Footnotes_Convert::toBool($l_arr_Data["value"]) ? 'checked="checked"' : '');
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the html tag for a select box.
|
||||
*
|
||||
* @author Stefan Herndler
|
||||
* @since 1.5.0
|
||||
* @param string $p_str_SettingName Name of the Settings key to pre select the current value.
|
||||
* @param array $p_arr_Options Possible options to be selected.
|
||||
* @return string
|
||||
*/
|
||||
protected function addSelectBox($p_str_SettingName, $p_arr_Options) {
|
||||
// collect data for given settings field
|
||||
$l_arr_Data = $this->LoadSetting($p_str_SettingName);
|
||||
$l_str_Options = "";
|
||||
|
||||
/* loop through all array keys */
|
||||
foreach ($p_arr_Options as $l_str_Value => $l_str_Caption) {
|
||||
$l_str_Options .= sprintf('<option value="%s" %s>%s</option>',
|
||||
$l_str_Value,
|
||||
$l_arr_Data["value"] == $l_str_Value ? "selected" : "",
|
||||
$l_str_Caption);
|
||||
}
|
||||
return sprintf('<select name="%s" id="%s">%s</select>',
|
||||
$l_arr_Data["name"], $l_arr_Data["id"], $l_str_Options);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the html tag for a text area.
|
||||
*
|
||||
* @author Stefan Herndler
|
||||
* @since 1.5.0
|
||||
* @param string $p_str_SettingName Name of the Settings key to pre fill the text area.
|
||||
* @return string
|
||||
*/
|
||||
protected function addTextArea($p_str_SettingName) {
|
||||
// collect data for given settings field
|
||||
$l_arr_Data = $this->LoadSetting($p_str_SettingName);
|
||||
return sprintf('<textarea name="%s" id="%s">%s</textarea>',
|
||||
$l_arr_Data["name"], $l_arr_Data["id"], $l_arr_Data["value"]);
|
||||
}
|
||||
|
||||
} // end of class
|
130
class/dashboard/subpage-diagnostics.php
Normal file
130
class/dashboard/subpage-diagnostics.php
Normal file
|
@ -0,0 +1,130 @@
|
|||
<?php
|
||||
/**
|
||||
* Includes the Plugin Class to display Diagnostics.
|
||||
*
|
||||
* @filesource
|
||||
* @author Stefan Herndler
|
||||
* @since 1.5.0 14.09.14 14:47
|
||||
*/
|
||||
|
||||
/**
|
||||
* Displays Diagnostics of the web server, PHP and WordPress.
|
||||
*
|
||||
* @author Stefan Herndler
|
||||
* @since 1.5.0
|
||||
*/
|
||||
class MCI_Footnotes_Layout_Diagnostics extends MCI_Footnotes_LayoutEngine {
|
||||
|
||||
/**
|
||||
* Returns a Priority index. Lower numbers have a higher Priority.
|
||||
*
|
||||
* @author Stefan Herndler
|
||||
* @since 1.5.0
|
||||
* @return int
|
||||
*/
|
||||
public function getPriority() {
|
||||
return 999;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the unique slug of the sub page.
|
||||
*
|
||||
* @author Stefan Herndler
|
||||
* @since 1.5.0
|
||||
* @return string
|
||||
*/
|
||||
protected function getSubPageSlug() {
|
||||
return "-diagnostics";
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the title of the sub page.
|
||||
*
|
||||
* @author Stefan Herndler
|
||||
* @since 1.5.0
|
||||
* @return string
|
||||
*/
|
||||
protected function getSubPageTitle() {
|
||||
return __("Diagnostics", MCI_Footnotes_Config::C_STR_PLUGIN_NAME);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns an array of all registered sections for the sub page.
|
||||
*
|
||||
* @author Stefan Herndler
|
||||
* @since 1.5.0
|
||||
* @return array
|
||||
*/
|
||||
protected function getSections() {
|
||||
return array(
|
||||
$this->addSection("diagnostics", __("Diagnostics", MCI_Footnotes_Config::C_STR_PLUGIN_NAME), null, false)
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns an array of all registered meta boxes for each section of the sub page.
|
||||
*
|
||||
* @author Stefan Herndler
|
||||
* @since 1.5.0
|
||||
* @return array
|
||||
*/
|
||||
protected function getMetaBoxes() {
|
||||
return array(
|
||||
$this->addMetaBox("diagnostics", "diagnostics", __("Displays information about the web server, PHP and WordPress", MCI_Footnotes_Config::C_STR_PLUGIN_NAME), "Diagnostics")
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Displays a diagnostics about the web server, php and WordPress.
|
||||
*
|
||||
* @author Stefan Herndler
|
||||
* @since 1.5.0
|
||||
*/
|
||||
public function Diagnostics() {
|
||||
global $wp_version;
|
||||
$l_str_PhpExtensions = "";
|
||||
// iterate through each PHP extension
|
||||
foreach (get_loaded_extensions() as $l_int_Index => $l_str_Extension) {
|
||||
if ($l_int_Index > 0) {
|
||||
$l_str_PhpExtensions .= ' | ';
|
||||
}
|
||||
$l_str_PhpExtensions .= $l_str_Extension . ' ' . phpversion($l_str_Extension);
|
||||
}
|
||||
$l_str_WordPressPlugins = "";
|
||||
// iterate through each installed WordPress Plugin
|
||||
foreach (get_plugins() as $l_arr_Plugin) {
|
||||
$l_str_WordPressPlugins .= '<tr>';
|
||||
$l_str_WordPressPlugins .= '<td>' . $l_arr_Plugin["Name"] . '</td>';
|
||||
$l_str_WordPressPlugins .= '<td>' . $l_arr_Plugin["Version"] . ' [' . $l_arr_Plugin["PluginURI"] . ']' . '</td>';
|
||||
$l_str_WordPressPlugins .= '</tr>';
|
||||
}
|
||||
// load template file
|
||||
$l_obj_Template = new MCI_Footnotes_Template(MCI_Footnotes_Template::C_STR_DASHBOARD, "diagnostics");
|
||||
// replace all placeholders
|
||||
$l_obj_Template->replace(
|
||||
array(
|
||||
"label-server" => __("Server name", MCI_Footnotes_Config::C_STR_PLUGIN_NAME),
|
||||
"server" => $_SERVER["SERVER_NAME"],
|
||||
|
||||
"label-php" => __("PHP version", MCI_Footnotes_Config::C_STR_PLUGIN_NAME),
|
||||
"php" => phpversion(),
|
||||
|
||||
"label-max-execution-time" => __("Max execution time", MCI_Footnotes_Config::C_STR_PLUGIN_NAME),
|
||||
"max-execution-time" => ini_get('max_execution_time') . ' ' . __('seconds', MCI_Footnotes_Config::C_STR_PLUGIN_NAME),
|
||||
|
||||
"label-memory-limit" => __("Memory limit", MCI_Footnotes_Config::C_STR_PLUGIN_NAME),
|
||||
"memory-limit" => ini_get('memory_limit'),
|
||||
|
||||
"label-php-extensions" => __("PHP extensions", MCI_Footnotes_Config::C_STR_PLUGIN_NAME),
|
||||
"php-extensions" => $l_str_PhpExtensions,
|
||||
|
||||
"label-wordpress" => __("WordPress version", MCI_Footnotes_Config::C_STR_PLUGIN_NAME),
|
||||
"wordpress" => $wp_version,
|
||||
|
||||
"plugins" => $l_str_WordPressPlugins
|
||||
)
|
||||
);
|
||||
// display template with replaced placeholders
|
||||
echo $l_obj_Template->getContent();
|
||||
}
|
||||
}
|
393
class/dashboard/subpage-main.php
Normal file
393
class/dashboard/subpage-main.php
Normal file
|
@ -0,0 +1,393 @@
|
|||
<?php
|
||||
/**
|
||||
* Includes the Plugin Class to display all Settings.
|
||||
*
|
||||
* @filesource
|
||||
* @author Stefan Herndler
|
||||
* @since 1.5.0 14.09.14 14:47
|
||||
*/
|
||||
|
||||
/**
|
||||
* Displays and handles all Settings of the Plugin.
|
||||
*
|
||||
* @author Stefan Herndler
|
||||
* @since 1.5.0
|
||||
*/
|
||||
class MCI_Footnotes_Layout_Settings extends MCI_Footnotes_LayoutEngine {
|
||||
|
||||
/**
|
||||
* Returns a Priority index. Lower numbers have a higher Priority.
|
||||
*
|
||||
* @author Stefan Herndler
|
||||
* @since 1.5.0
|
||||
* @return int
|
||||
*/
|
||||
public function getPriority() {
|
||||
return 10;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the unique slug of the sub page.
|
||||
*
|
||||
* @author Stefan Herndler
|
||||
* @since 1.5.0
|
||||
* @return string
|
||||
*/
|
||||
protected function getSubPageSlug() {
|
||||
return "-" . MCI_Footnotes_Config::C_STR_PLUGIN_NAME;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the title of the sub page.
|
||||
*
|
||||
* @author Stefan Herndler
|
||||
* @since 1.5.0
|
||||
* @return string
|
||||
*/
|
||||
protected function getSubPageTitle() {
|
||||
return MCI_Footnotes_Config::C_STR_PLUGIN_PUBLIC_NAME;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns an array of all registered sections for the sub page.
|
||||
*
|
||||
* @author Stefan Herndler
|
||||
* @since 1.5.0
|
||||
* @return array
|
||||
*/
|
||||
protected function getSections() {
|
||||
return array(
|
||||
$this->addSection("settings", __("Settings", MCI_Footnotes_Config::C_STR_PLUGIN_NAME), 0, true),
|
||||
$this->addSection("customize", __("Customize", MCI_Footnotes_Config::C_STR_PLUGIN_NAME), 1, true),
|
||||
$this->addSection("how-to", __("How to", MCI_Footnotes_Config::C_STR_PLUGIN_NAME), null, false)
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns an array of all registered meta boxes for each section of the sub page.
|
||||
*
|
||||
* @author Stefan Herndler
|
||||
* @since 1.5.0
|
||||
* @return array
|
||||
*/
|
||||
protected function getMetaBoxes() {
|
||||
return array(
|
||||
$this->addMetaBox("settings", "reference-container", __("References Container", MCI_Footnotes_Config::C_STR_PLUGIN_NAME), "ReferenceContainer"),
|
||||
$this->addMetaBox("settings", "styling", sprintf(__("%s styling", MCI_Footnotes_Config::C_STR_PLUGIN_NAME), MCI_Footnotes_Config::C_STR_PLUGIN_PUBLIC_NAME), "Styling"),
|
||||
$this->addMetaBox("settings", "love", MCI_Footnotes_Config::C_STR_PLUGIN_PUBLIC_NAME . ' ' . MCI_Footnotes_Config::C_STR_LOVE_SYMBOL, "Love"),
|
||||
$this->addMetaBox("settings", "other", __("Other", MCI_Footnotes_Config::C_STR_PLUGIN_NAME), "Other"),
|
||||
|
||||
$this->addMetaBox("customize", "superscript", __("Superscript layout", MCI_Footnotes_Config::C_STR_PLUGIN_NAME), "Superscript"),
|
||||
$this->addMetaBox("customize", "hyperlink-arrow", __("Hyperlink symbol in the Reference container", MCI_Footnotes_Config::C_STR_PLUGIN_NAME), "HyperlinkArrow"),
|
||||
$this->addMetaBox("customize", "custom-css", __("Add custom CSS to the public page", MCI_Footnotes_Config::C_STR_PLUGIN_NAME), "CustomCSS"),
|
||||
|
||||
$this->addMetaBox("how-to", "help", __("Brief introduction in how to use the plugin", MCI_Footnotes_Config::C_STR_PLUGIN_NAME), "Help"),
|
||||
$this->addMetaBox("how-to", "donate", __("Help us to improve our Plugin", MCI_Footnotes_Config::C_STR_PLUGIN_NAME), "Donate")
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Displays all settings for the reference container.
|
||||
*
|
||||
* @author Stefan Herndler
|
||||
* @since 1.5.0
|
||||
*/
|
||||
public function ReferenceContainer() {
|
||||
// options for the positioning of the reference container
|
||||
$l_arr_Positions = array(
|
||||
"footer" => __("in the footer", MCI_Footnotes_Config::C_STR_PLUGIN_NAME),
|
||||
"post_end" => __("at the end of the post", MCI_Footnotes_Config::C_STR_PLUGIN_NAME),
|
||||
"widget" => __("in the widget area", MCI_Footnotes_Config::C_STR_PLUGIN_NAME)
|
||||
);
|
||||
|
||||
// load template file
|
||||
$l_obj_Template = new MCI_Footnotes_Template(MCI_Footnotes_Template::C_STR_DASHBOARD, "settings-reference-container");
|
||||
// replace all placeholders
|
||||
$l_obj_Template->replace(
|
||||
array(
|
||||
"label-name" => $this->addLabel(MCI_Footnotes_Settings::C_STR_REFERENCE_CONTAINER_NAME, __("References label", MCI_Footnotes_Config::C_STR_PLUGIN_NAME)),
|
||||
"name" => $this->addTextBox(MCI_Footnotes_Settings::C_STR_REFERENCE_CONTAINER_NAME),
|
||||
|
||||
"label-collapse" => $this->addLabel(MCI_Footnotes_Settings::C_BOOL_REFERENCE_CONTAINER_COLLAPSE, __("Collapse references by default", MCI_Footnotes_Config::C_STR_PLUGIN_NAME)),
|
||||
"collapse" => $this->addCheckbox(MCI_Footnotes_Settings::C_BOOL_REFERENCE_CONTAINER_COLLAPSE),
|
||||
|
||||
"label-position" => $this->addLabel(MCI_Footnotes_Settings::C_STR_REFERENCE_CONTAINER_POSITION, __("Where shall the reference container appear", MCI_Footnotes_Config::C_STR_PLUGIN_NAME)),
|
||||
"position" => $this->addSelectBox(MCI_Footnotes_Settings::C_STR_REFERENCE_CONTAINER_POSITION, $l_arr_Positions)
|
||||
)
|
||||
);
|
||||
// display template with replaced placeholders
|
||||
echo $l_obj_Template->getContent();
|
||||
}
|
||||
|
||||
/**
|
||||
* Displays all settings for the footnotes styling.
|
||||
*
|
||||
* @author Stefan Herndler
|
||||
* @since 1.5.0
|
||||
*/
|
||||
public function Styling() {
|
||||
// define some space for the output
|
||||
$l_str_Space = " ";
|
||||
// options for the combination of identical footnotes
|
||||
$l_arr_CombineIdentical = array(
|
||||
"yes" => __("Yes", MCI_Footnotes_Config::C_STR_PLUGIN_NAME),
|
||||
"no" => __("No", MCI_Footnotes_Config::C_STR_PLUGIN_NAME)
|
||||
);
|
||||
// options for the start of the footnotes short code
|
||||
$l_arr_ShortCodeStart = array(
|
||||
"((" => "((",
|
||||
"<fn>" => htmlspecialchars("<fn>"),
|
||||
"[ref]" => "[ref]",
|
||||
"userdefined" => __('user defined', MCI_Footnotes_Config::C_STR_PLUGIN_NAME)
|
||||
);
|
||||
// options for the end of the footnotes short code
|
||||
$l_arr_ShortCodeEnd = array(
|
||||
"))" => "))",
|
||||
"</fn>" => htmlspecialchars("</fn>"),
|
||||
"[/ref]" => "[/ref]",
|
||||
"userdefined" => __('user defined', MCI_Footnotes_Config::C_STR_PLUGIN_NAME)
|
||||
);
|
||||
// options for the counter style of the footnotes
|
||||
$l_arr_CounterStyle = array(
|
||||
"arabic_plain" => __("Arabic Numbers - Plain", MCI_Footnotes_Config::C_STR_PLUGIN_NAME) . $l_str_Space . "1, 2, 3, 4, 5, ...",
|
||||
"arabic_leading" => __("Arabic Numbers - Leading 0", MCI_Footnotes_Config::C_STR_PLUGIN_NAME) . $l_str_Space . "01, 02, 03, 04, 05, ...",
|
||||
"latin_low" => __("Latin Character - lower case", MCI_Footnotes_Config::C_STR_PLUGIN_NAME) . $l_str_Space . "a, b, c, d, e, ...",
|
||||
"latin_high" => __("Latin Character - upper case", MCI_Footnotes_Config::C_STR_PLUGIN_NAME) . $l_str_Space . "A, B, C, D, E, ...",
|
||||
"romanic" => __("Roman Numerals", MCI_Footnotes_Config::C_STR_PLUGIN_NAME) . $l_str_Space . "I, II, III, IV, V, ..."
|
||||
);
|
||||
|
||||
// load template file
|
||||
$l_obj_Template = new MCI_Footnotes_Template(MCI_Footnotes_Template::C_STR_DASHBOARD, "settings-styling");
|
||||
// replace all placeholders
|
||||
$l_obj_Template->replace(
|
||||
array(
|
||||
"label-identical" => $this->addLabel(MCI_Footnotes_Settings::C_BOOL_COMBINE_IDENTICAL_FOOTNOTES, __("Combine identical footnotes", MCI_Footnotes_Config::C_STR_PLUGIN_NAME)),
|
||||
"identical" => $this->addSelectBox(MCI_Footnotes_Settings::C_BOOL_COMBINE_IDENTICAL_FOOTNOTES, $l_arr_CombineIdentical),
|
||||
|
||||
"label-short-code-start" => $this->addLabel(MCI_Footnotes_Settings::C_STR_FOOTNOTES_SHORT_CODE_START, __("Footnote tag starts with", MCI_Footnotes_Config::C_STR_PLUGIN_NAME)),
|
||||
"short-code-start" => $this->addSelectBox(MCI_Footnotes_Settings::C_STR_FOOTNOTES_SHORT_CODE_START, $l_arr_ShortCodeStart),
|
||||
|
||||
"label-short-code-end" => $this->addLabel(MCI_Footnotes_Settings::C_STR_FOOTNOTES_SHORT_CODE_END, __("and ends with", MCI_Footnotes_Config::C_STR_PLUGIN_NAME)),
|
||||
"short-code-end" => $this->addSelectBox(MCI_Footnotes_Settings::C_STR_FOOTNOTES_SHORT_CODE_END, $l_arr_ShortCodeEnd),
|
||||
|
||||
"label-short-code-start-user" => $this->addLabel(MCI_Footnotes_Settings::C_STR_FOOTNOTES_SHORT_CODE_START_USER_DEFINED, ""),
|
||||
"short-code-start-user" => $this->addTextBox(MCI_Footnotes_Settings::C_STR_FOOTNOTES_SHORT_CODE_START_USER_DEFINED),
|
||||
|
||||
"label-short-code-end-user" => $this->addLabel(MCI_Footnotes_Settings::C_STR_FOOTNOTES_SHORT_CODE_END_USER_DEFINED, ""),
|
||||
"short-code-end-user" => $this->addTextBox(MCI_Footnotes_Settings::C_STR_FOOTNOTES_SHORT_CODE_END_USER_DEFINED),
|
||||
|
||||
"label-counter-style" => $this->addLabel(MCI_Footnotes_Settings::C_STR_FOOTNOTES_COUNTER_STYLE, __("Counter style", MCI_Footnotes_Config::C_STR_PLUGIN_NAME)),
|
||||
"counter-style" => $this->addSelectBox(MCI_Footnotes_Settings::C_STR_FOOTNOTES_COUNTER_STYLE, $l_arr_CounterStyle),
|
||||
|
||||
"short-code-start-id" => MCI_Footnotes_Settings::C_STR_FOOTNOTES_SHORT_CODE_START,
|
||||
"short-code-end-id" => MCI_Footnotes_Settings::C_STR_FOOTNOTES_SHORT_CODE_END,
|
||||
"short-code-start-user-id" => MCI_Footnotes_Settings::C_STR_FOOTNOTES_SHORT_CODE_START_USER_DEFINED,
|
||||
"short-code-end-user-id" => MCI_Footnotes_Settings::C_STR_FOOTNOTES_SHORT_CODE_END_USER_DEFINED,
|
||||
)
|
||||
);
|
||||
// display template with replaced placeholders
|
||||
echo $l_obj_Template->getContent();
|
||||
}
|
||||
|
||||
/**
|
||||
* Displays all settings for 'I love Footnotes'.
|
||||
*
|
||||
* @author Stefan Herndler
|
||||
* @since 1.5.0
|
||||
*/
|
||||
public function Love() {
|
||||
// options for the positioning of the reference container
|
||||
$l_arr_Love = array(
|
||||
"text-1" => sprintf(__('I %s %s', MCI_Footnotes_Config::C_STR_PLUGIN_NAME), MCI_Footnotes_Config::C_STR_LOVE_SYMBOL, MCI_Footnotes_Config::C_STR_PLUGIN_PUBLIC_NAME),
|
||||
"text-2" => sprintf(__('this site uses the awesome %s Plugin', MCI_Footnotes_Config::C_STR_PLUGIN_NAME), MCI_Footnotes_Config::C_STR_PLUGIN_PUBLIC_NAME),
|
||||
"text-3" => sprintf(__('extra smooth %s', MCI_Footnotes_Config::C_STR_PLUGIN_NAME), MCI_Footnotes_Config::C_STR_PLUGIN_PUBLIC_NAME),
|
||||
"random" => __('random text', MCI_Footnotes_Config::C_STR_PLUGIN_NAME),
|
||||
"no" => sprintf(__("Don't display a %s %s text in my footer.", MCI_Footnotes_Config::C_STR_PLUGIN_NAME), MCI_Footnotes_Config::C_STR_PLUGIN_PUBLIC_NAME, MCI_Footnotes_Config::C_STR_LOVE_SYMBOL)
|
||||
);
|
||||
|
||||
// load template file
|
||||
$l_obj_Template = new MCI_Footnotes_Template(MCI_Footnotes_Template::C_STR_DASHBOARD, "settings-love");
|
||||
// replace all placeholders
|
||||
$l_obj_Template->replace(
|
||||
array(
|
||||
"label-love" => $this->addLabel(MCI_Footnotes_Settings::C_STR_FOOTNOTES_LOVE, sprintf(__("Tell the world you're using %s", MCI_Footnotes_Config::C_STR_PLUGIN_NAME), MCI_Footnotes_Config::C_STR_PLUGIN_PUBLIC_NAME)),
|
||||
"love" => $this->addSelectBox(MCI_Footnotes_Settings::C_STR_FOOTNOTES_LOVE, $l_arr_Love),
|
||||
|
||||
"label-no-love" => $this->addText(sprintf(__("Don't tell the world you're using %s on specific pages by adding the following short code:", MCI_Footnotes_Config::C_STR_PLUGIN_NAME), MCI_Footnotes_Config::C_STR_PLUGIN_PUBLIC_NAME)),
|
||||
"no-love" => $this->addText(MCI_Footnotes_Config::C_STR_NO_LOVE_SLUG)
|
||||
)
|
||||
);
|
||||
// display template with replaced placeholders
|
||||
echo $l_obj_Template->getContent();
|
||||
}
|
||||
|
||||
/**
|
||||
* Displays all settings that are not grouped in special meta boxes.
|
||||
*
|
||||
* @author Stefan Herndler
|
||||
* @since 1.5.0
|
||||
*/
|
||||
public function Other() {
|
||||
// options for the Footnotes to be replaced in excerpt
|
||||
$l_arr_Excerpt = array(
|
||||
"yes" => __("Yes", MCI_Footnotes_Config::C_STR_PLUGIN_NAME),
|
||||
"no" => __("No", MCI_Footnotes_Config::C_STR_PLUGIN_NAME)
|
||||
);
|
||||
|
||||
// load template file
|
||||
$l_obj_Template = new MCI_Footnotes_Template(MCI_Footnotes_Template::C_STR_DASHBOARD, "settings-other");
|
||||
// replace all placeholders
|
||||
$l_obj_Template->replace(
|
||||
array(
|
||||
"label-excerpt" => $this->addLabel(MCI_Footnotes_Settings::C_BOOL_FOOTNOTES_IN_EXCERPT, __("Allow footnotes on Summarized Posts", MCI_Footnotes_Config::C_STR_PLUGIN_NAME)),
|
||||
"excerpt" => $this->addSelectBox(MCI_Footnotes_Settings::C_BOOL_FOOTNOTES_IN_EXCERPT, $l_arr_Excerpt)
|
||||
)
|
||||
);
|
||||
// display template with replaced placeholders
|
||||
echo $l_obj_Template->getContent();
|
||||
}
|
||||
|
||||
/**
|
||||
* Displays all settings for the footnotes Superscript.
|
||||
*
|
||||
* @author Stefan Herndler
|
||||
* @since 1.5.0
|
||||
*/
|
||||
public function Superscript() {
|
||||
// load template file
|
||||
$l_obj_Template = new MCI_Footnotes_Template(MCI_Footnotes_Template::C_STR_DASHBOARD, "customize-superscript");
|
||||
// replace all placeholders
|
||||
$l_obj_Template->replace(
|
||||
array(
|
||||
"label-before" => $this->addLabel(MCI_Footnotes_Settings::C_STR_FOOTNOTES_STYLING_BEFORE, __("Before Footnotes index", MCI_Footnotes_Config::C_STR_PLUGIN_NAME)),
|
||||
"before" => $this->addTextBox(MCI_Footnotes_Settings::C_STR_FOOTNOTES_STYLING_BEFORE),
|
||||
|
||||
"label-after" => $this->addLabel(MCI_Footnotes_Settings::C_STR_FOOTNOTES_STYLING_AFTER, __("After Footnotes index", MCI_Footnotes_Config::C_STR_PLUGIN_NAME)),
|
||||
"after" => $this->addTextBox(MCI_Footnotes_Settings::C_STR_FOOTNOTES_STYLING_AFTER)
|
||||
)
|
||||
);
|
||||
// display template with replaced placeholders
|
||||
echo $l_obj_Template->getContent();
|
||||
}
|
||||
|
||||
/**
|
||||
* Displays all settings for the hyperlink arrow.
|
||||
*
|
||||
* @author Stefan Herndler
|
||||
* @since 1.5.0
|
||||
*/
|
||||
public function HyperlinkArrow() {
|
||||
// load template file
|
||||
$l_obj_Template = new MCI_Footnotes_Template(MCI_Footnotes_Template::C_STR_DASHBOARD, "customize-hyperlink-arrow");
|
||||
// replace all placeholders
|
||||
$l_obj_Template->replace(
|
||||
array(
|
||||
"label-symbol" => $this->addLabel(MCI_Footnotes_Settings::C_STR_HYPERLINK_ARROW, __("Hyperlink symbol", MCI_Footnotes_Config::C_STR_PLUGIN_NAME)),
|
||||
"symbol" => $this->addSelectBox(MCI_Footnotes_Settings::C_STR_HYPERLINK_ARROW, MCI_Footnotes_Convert::getArrow()),
|
||||
|
||||
"label-user-defined" => $this->addLabel(MCI_Footnotes_Settings::C_STR_HYPERLINK_ARROW_USER_DEFINED, __("or enter a user defined symbol", MCI_Footnotes_Config::C_STR_PLUGIN_NAME)),
|
||||
"user-defined" => $this->addTextBox(MCI_Footnotes_Settings::C_STR_HYPERLINK_ARROW_USER_DEFINED),
|
||||
"comment" => __("if set it overrides the hyperlink symbol above", MCI_Footnotes_Config::C_STR_PLUGIN_NAME)
|
||||
)
|
||||
);
|
||||
// display template with replaced placeholders
|
||||
echo $l_obj_Template->getContent();
|
||||
}
|
||||
|
||||
/**
|
||||
* Displays the custom css box.
|
||||
*
|
||||
* @author Stefan Herndler
|
||||
* @since 1.5.0
|
||||
*/
|
||||
public function CustomCSS() {
|
||||
// load template file
|
||||
$l_obj_Template = new MCI_Footnotes_Template(MCI_Footnotes_Template::C_STR_DASHBOARD, "customize-css");
|
||||
// replace all placeholders
|
||||
$l_obj_Template->replace(
|
||||
array(
|
||||
"label-css" => $this->addLabel(MCI_Footnotes_Settings::C_STR_CUSTOM_CSS, __("Add custom CSS", MCI_Footnotes_Config::C_STR_PLUGIN_NAME)),
|
||||
"css" => $this->addTextArea(MCI_Footnotes_Settings::C_STR_CUSTOM_CSS),
|
||||
|
||||
"headline" => $this->addText(__("Available CSS classes to customize the footnotes and the reference container", MCI_Footnotes_Config::C_STR_PLUGIN_NAME)),
|
||||
|
||||
"label-class-1" => ".footnote_plugin_tooltip_text",
|
||||
"class-1" => $this->addText(__("inline footnotes", MCI_Footnotes_Config::C_STR_PLUGIN_NAME)),
|
||||
|
||||
"label-class-2" => ".footnote_tooltip",
|
||||
"class-2" => $this->addText(__("inline footnotes, mouse over highlight box", MCI_Footnotes_Config::C_STR_PLUGIN_NAME)),
|
||||
|
||||
"label-class-3" => ".footnote_plugin_index",
|
||||
"class-3" => $this->addText(__("reference container footnotes index", MCI_Footnotes_Config::C_STR_PLUGIN_NAME)),
|
||||
|
||||
"label-class-4" => ".footnote_plugin_link",
|
||||
"class-4" => $this->addText(__("reference container footnotes linked arrow", MCI_Footnotes_Config::C_STR_PLUGIN_NAME)),
|
||||
|
||||
"label-class-5" => ".footnote_plugin_text",
|
||||
"class-5" => $this->addText(__("reference container footnotes text", MCI_Footnotes_Config::C_STR_PLUGIN_NAME))
|
||||
)
|
||||
);
|
||||
// display template with replaced placeholders
|
||||
echo $l_obj_Template->getContent();
|
||||
}
|
||||
|
||||
/**
|
||||
* Displays a short introduction of the Plugin.
|
||||
*
|
||||
* @author Stefan Herndler
|
||||
* @since 1.5.0
|
||||
*/
|
||||
public function Help() {
|
||||
global $g_obj_MCI_Footnotes;
|
||||
// load footnotes starting and end tag
|
||||
$l_arr_Footnote_StartingTag = $this->LoadSetting(MCI_Footnotes_Settings::C_STR_FOOTNOTES_SHORT_CODE_START);
|
||||
$l_arr_Footnote_EndingTag = $this->LoadSetting(MCI_Footnotes_Settings::C_STR_FOOTNOTES_SHORT_CODE_END);
|
||||
|
||||
if ($l_arr_Footnote_StartingTag["value"] == "userdefined" || $l_arr_Footnote_EndingTag["value"] == "userdefined") {
|
||||
// load user defined starting and end tag
|
||||
$l_arr_Footnote_StartingTag = $this->LoadSetting(MCI_Footnotes_Settings::C_STR_FOOTNOTES_SHORT_CODE_START_USER_DEFINED);
|
||||
$l_arr_Footnote_EndingTag = $this->LoadSetting(MCI_Footnotes_Settings::C_STR_FOOTNOTES_SHORT_CODE_END_USER_DEFINED);
|
||||
}
|
||||
$l_str_Example = "Hello" . $l_arr_Footnote_StartingTag["value"] . __("example string", MCI_Footnotes_Config::C_STR_PLUGIN_NAME) . $l_arr_Footnote_EndingTag["value"] . " World!";
|
||||
|
||||
// load template file
|
||||
$l_obj_Template = new MCI_Footnotes_Template(MCI_Footnotes_Template::C_STR_DASHBOARD, "how-to-help");
|
||||
// replace all placeholders
|
||||
$l_obj_Template->replace(
|
||||
array(
|
||||
"label-start" => __("Start your footnote with the following short code:", MCI_Footnotes_Config::C_STR_PLUGIN_NAME),
|
||||
"start" => $l_arr_Footnote_StartingTag["value"],
|
||||
|
||||
"label-end" => __("...and end your footnote with this short code:", MCI_Footnotes_Config::C_STR_PLUGIN_NAME),
|
||||
"end" => $l_arr_Footnote_EndingTag["value"],
|
||||
|
||||
"example-code" => $l_str_Example,
|
||||
"example-string" => __("will be displayed as:", MCI_Footnotes_Config::C_STR_PLUGIN_NAME),
|
||||
"example" => $g_obj_MCI_Footnotes->a_obj_Task->exec($l_str_Example, true),
|
||||
|
||||
"information" => sprintf(__("For further information please check out our %ssupport forum%s on WordPress.org.", MCI_Footnotes_Config::C_STR_PLUGIN_NAME), '<a href="http://wordpress.org/support/plugin/footnotes" target="_blank" class="footnote_plugin">', '</a>')
|
||||
)
|
||||
);
|
||||
// display template with replaced placeholders
|
||||
echo $l_obj_Template->getContent();
|
||||
}
|
||||
|
||||
/**
|
||||
* Displays all Donate button to support the developers.
|
||||
*
|
||||
* @author Stefan Herndler
|
||||
* @since 1.5.0
|
||||
*/
|
||||
public function Donate() {
|
||||
// load template file
|
||||
$l_obj_Template = new MCI_Footnotes_Template(MCI_Footnotes_Template::C_STR_DASHBOARD, "how-to-donate");
|
||||
// replace all placeholders
|
||||
$l_obj_Template->replace(
|
||||
array(
|
||||
"caption" => __('Donate now',MCI_Footnotes_Config::C_STR_PLUGIN_NAME)
|
||||
)
|
||||
);
|
||||
// display template with replaced placeholders
|
||||
echo $l_obj_Template->getContent();
|
||||
}
|
||||
}
|
Reference in a new issue