78 lines
2.8 KiB
PHP
78 lines
2.8 KiB
PHP
|
<?php
|
||
|
/**
|
||
|
* Includes the Class to handle the WYSIWYG-Buttons.
|
||
|
*
|
||
|
* @filesource
|
||
|
* @author Stefan Herndler
|
||
|
* @since 1.5.0 14.09.14 17:30
|
||
|
*/
|
||
|
|
||
|
class MCI_Footnotes_WYSIWYG {
|
||
|
|
||
|
public static function registerHooks() {
|
||
|
add_filter("mce_buttons", array("MCI_Footnotes_WYSIWYG", "newVisualEditorButton"));
|
||
|
add_action("admin_print_footer_scripts", array("MCI_Footnotes_WYSIWYG", "newPlainTextEditorButton"));
|
||
|
|
||
|
add_filter("mce_external_plugins", array("MCI_Footnotes_WYSIWYG", "includeScripts"));
|
||
|
|
||
|
add_action("wp_ajax_nopriv_footnotes_getTags", array("MCI_Footnotes_WYSIWYG", "ajaxCallback"));
|
||
|
add_action("wp_ajax_footnotes_getTags", array("MCI_Footnotes_WYSIWYG", "ajaxCallback"));
|
||
|
}
|
||
|
|
||
|
|
||
|
/**
|
||
|
* Append a new Button to the WYSIWYG editor of Posts and Pages.
|
||
|
*
|
||
|
* @author Stefan Herndler
|
||
|
* @since 1.5.0
|
||
|
* @param array $p_arr_Buttons pre defined Buttons from WordPress.
|
||
|
* @return array
|
||
|
*/
|
||
|
public static function newVisualEditorButton($p_arr_Buttons) {
|
||
|
array_push($p_arr_Buttons, MCI_Footnotes_Config::C_STR_PLUGIN_NAME);
|
||
|
return $p_arr_Buttons;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Add a new button to the plain text editor.
|
||
|
*
|
||
|
* @author Stefan Herndler
|
||
|
* @since 1.5.0
|
||
|
*/
|
||
|
public static function newPlainTextEditorButton() {
|
||
|
$l_obj_Template = new MCI_Footnotes_Template(MCI_Footnotes_Template::C_STR_DASHBOARD, "editor-button");
|
||
|
$l_obj_Template->getContent();
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Includes the Plugins WYSIWYG editor script.
|
||
|
*
|
||
|
* @author Stefan Herndler
|
||
|
* @since 1.5.0
|
||
|
* @param array $p_arr_Plugins Scripts to be included to the editor.
|
||
|
* @return array
|
||
|
*/
|
||
|
public static function includeScripts($p_arr_Plugins) {
|
||
|
$p_arr_Plugins[MCI_Footnotes_Config::C_STR_PLUGIN_NAME] = plugins_url('/../js/wysiwyg-editor.js', __FILE__);
|
||
|
return $p_arr_Plugins;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* AJAX Callback function when the Footnotes Button is clicked. Either in the Plain text or Visual editor.
|
||
|
* Returns an JSON encoded array with the Footnotes start and end short code.
|
||
|
*
|
||
|
* @author Stefan Herndler
|
||
|
* @since 1.5.0
|
||
|
*/
|
||
|
public static function ajaxCallback() {
|
||
|
// get start and end tag for the footnotes short code
|
||
|
$l_str_StartingTag = MCI_Footnotes_Settings::instance()->get(MCI_Footnotes_Settings::C_STR_FOOTNOTES_SHORT_CODE_START);
|
||
|
$l_str_EndingTag = MCI_Footnotes_Settings::instance()->get(MCI_Footnotes_Settings::C_STR_FOOTNOTES_SHORT_CODE_END);
|
||
|
if ($l_str_StartingTag == "userdefined" || $l_str_EndingTag == "userdefined") {
|
||
|
$l_str_StartingTag = MCI_Footnotes_Settings::instance()->get(MCI_Footnotes_Settings::C_STR_FOOTNOTES_SHORT_CODE_START_USER_DEFINED);
|
||
|
$l_str_EndingTag = MCI_Footnotes_Settings::instance()->get(MCI_Footnotes_Settings::C_STR_FOOTNOTES_SHORT_CODE_END_USER_DEFINED);
|
||
|
}
|
||
|
echo json_encode(array("start" => $l_str_StartingTag, "end" => $l_str_EndingTag));
|
||
|
exit;
|
||
|
}
|
||
|
}
|