<?php /** * Created by PhpStorm. * User: Stefan * Date: 24.05.14 * Time: 14:47 * Version: 1.2.0 * Since: 1.2.0 */ /** * adds a new button to the WYSIWYG editor for pages and posts * @param array $buttons * @return array * @since 1.2.0 */ function footnotes_wysiwyg_editor_functions($buttons) { array_push($buttons, FOOTNOTES_PLUGIN_NAME); return $buttons; } /** * includes a javascript file to have a on-click function for the new button in the WYSIWYG editor * @param array $plugin_array * @return array * @since 1.2.0 */ function footnotes_wysiwyg_editor_buttons($plugin_array) { $plugin_array[FOOTNOTES_PLUGIN_NAME] = plugins_url('/../js/wysiwyg-editor.js', __FILE__); return $plugin_array; } /** * adds a new button to the plain text editor for pages and posts * @since 1.2.0 */ function footnotes_text_editor_buttons() { ?> <script type="text/javascript"> /** * adds a tag in at the beginning and at the end of a selected text in the specific textarea * @param string elementID * @param string openTag * @param string closeTag */ function footnotes_wrapText(elementID, openTag, closeTag) { var textArea = jQuery('#' + elementID); var len = textArea.val().length; var start = textArea[0].selectionStart; var end = textArea[0].selectionEnd; var selectedText = textArea.val().substring(start, end); var replacement = openTag + selectedText + closeTag; textArea.val(textArea.val().substring(0, start) + replacement + textArea.val().substring(end, len)); } /** * adds a new button to the plain text editor */ QTags.addButton( 'footnotes_quicktag_button', 'footnotes', footnotes_text_editor_callback ); /** * callback function when the button is clicked * executes a ajax call to get the start and end tag for the footnotes and * adds them in before and after the selected text */ function footnotes_text_editor_callback() { jQuery.ajax({ type: 'POST', url: '/wp-admin/admin-ajax.php', data: { action: 'footnotes_getTags', data: '' }, success: function(data, textStatus, XMLHttpRequest){ var l_arr_Tags = JSON.parse(data); footnotes_wrapText("content", l_arr_Tags['start'], l_arr_Tags['end']); }, error: function(MLHttpRequest, textStatus, errorThrown){ } }); } </script> <?php } /** * callback function for the WYSIWYG editor button and the plain text editor button * to get the start and end tag for the footnotes * echos the tags as json-string ("start" | "end") */ function footnotes_wysiwyg_ajax_callback() { require_once(dirname(__FILE__) . '/../includes/defines.php'); require_once(dirname(__FILE__) . '/../includes/plugin-settings.php'); /* load footnote settings */ $g_arr_FootnotesSettings = footnotes_filter_options(FOOTNOTE_SETTINGS_CONTAINER, Class_FootnotesSettings::$a_arr_Default_Settings, false); /* 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]; if ($l_str_StartingTag == "userdefined" || $l_str_EndingTag == "userdefined") { /* get user defined footnote starting tag */ $l_str_StartingTag = $g_arr_FootnotesSettings[FOOTNOTE_INPUTFIELD_PLACEHOLDER_START_USERDEFINED]; /*get user defined footnote ending tag */ $l_str_EndingTag = $g_arr_FootnotesSettings[FOOTNOTE_INPUTFIELD_PLACEHOLDER_END_USERDEFINED]; } echo json_encode(array("start" => $l_str_StartingTag, "end" => $l_str_EndingTag)); exit; }