ci: improve release process, clean up and re-org repo, add automated minification (#143)
* ci: update scripts * release 2.7.1 * remove tracked stylesheets * docs: revert stable tag to 2.7.0 * chore: move Plugin source into own dir * docs: delete info texts These can now be found in the [project wiki][wiki]. [wiki]: https://github.com/markcheret/footnotes/wiki * docs: tweak contributing guide * ci: reflect new directory structure * chore: update gitignore * chore: reflect new dir structure * docs: update documentation * build(linting): add Husky hooks, Markdown linting, lint all MD files * fix pre-push command * fix pre-push command * build: add stylesheet, JS minification * ci: add linting steps * ci: comment out CSS linting step (that's going to be a whole *thing*) * ci: minify all JS files * ci: call correct JS file * chore: lint * ci: fix PHP linting commands * chore: increment version constant string * ci: concat AMP stylesheets * ci: improve build scripts * chore: add assets dir
This commit is contained in:
parent
e780d817c1
commit
6a1117be15
183 changed files with 9761 additions and 2941 deletions
103
src/class/wysiwyg.php
Normal file
103
src/class/wysiwyg.php
Normal file
|
@ -0,0 +1,103 @@
|
|||
<?php // phpcs:disable WordPress.Files.FileName.InvalidClassFileName
|
||||
/**
|
||||
* Includes the Class to handle the WYSIWYG-Buttons.
|
||||
*
|
||||
* @filesource
|
||||
* @package footnotes
|
||||
* @since 1.5.0
|
||||
*/
|
||||
|
||||
/**
|
||||
* Handles the WSYIWYG-Buttons.
|
||||
*
|
||||
* @since 1.5.0
|
||||
*/
|
||||
class Footnotes_WYSIWYG {
|
||||
|
||||
/**
|
||||
* Registers Button hooks.
|
||||
*
|
||||
* @since 1.5.0
|
||||
*
|
||||
* - Bugfix: Editor buttons: debug button by reverting name change in PHP file while JS file and HTML template remained unsynced, thanks to @gova bug report.
|
||||
*
|
||||
* @reporter @gova
|
||||
* @link https://wordpress.org/support/topic/back-end-footnotes-not-working-400-bad-erro/
|
||||
*
|
||||
* @since 2.6.5
|
||||
* @return void
|
||||
*/
|
||||
public static function register_hooks() {
|
||||
add_filter( 'mce_buttons', array( 'Footnotes_WYSIWYG', 'new_visual_editor_button' ) );
|
||||
add_action( 'admin_print_footer_scripts', array( 'Footnotes_WYSIWYG', 'new_plain_text_editor_button' ) );
|
||||
|
||||
add_filter( 'mce_external_plugins', array( 'Footnotes_WYSIWYG', 'include_scripts' ) );
|
||||
|
||||
// phpcs:disable
|
||||
// 'footnotes_getTags' must match its instance in wysiwyg-editor.js.
|
||||
// 'footnotes_getTags' must match its instance in editor-button.html.
|
||||
add_action( 'wp_ajax_nopriv_footnotes_getTags', array( 'Footnotes_WYSIWYG', 'ajax_callback' ) );
|
||||
add_action( 'wp_ajax_footnotes_getTags', array( 'Footnotes_WYSIWYG', 'ajax_callback' ) );
|
||||
// phpcs:enable
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Append a new Button to the WYSIWYG editor of Posts and Pages.
|
||||
*
|
||||
* @since 1.5.0
|
||||
* @param array $p_arr_buttons pre defined Buttons from WordPress.
|
||||
* @return array
|
||||
*/
|
||||
public static function new_visual_editor_button( $p_arr_buttons ) {
|
||||
array_push( $p_arr_buttons, Footnotes_Config::C_STR_PLUGIN_NAME );
|
||||
return $p_arr_buttons;
|
||||
}
|
||||
|
||||
/**
|
||||
* Add a new button to the plain text editor.
|
||||
*
|
||||
* @since 1.5.0
|
||||
*/
|
||||
public static function new_plain_text_editor_button() {
|
||||
$l_obj_template = new Footnotes_Template( Footnotes_Template::C_STR_DASHBOARD, 'editor-button' );
|
||||
// phpcs:disable WordPress.Security.EscapeOutput.OutputNotEscaped
|
||||
echo $l_obj_template->get_content();
|
||||
// phpcs:enable
|
||||
}
|
||||
|
||||
/**
|
||||
* Includes the Plugins WYSIWYG editor script.
|
||||
*
|
||||
* @since 1.5.0
|
||||
* @param array $p_arr_plugins Scripts to be included to the editor.
|
||||
* @return array
|
||||
*/
|
||||
public static function include_scripts( $p_arr_plugins ) {
|
||||
$p_arr_plugins[ Footnotes_Config::C_STR_PLUGIN_NAME ] = plugins_url( '/../js/wysiwyg-editor ' . ( ( Footnotes::PRODUCTION_ENV ) ? '.min' : '' ) . '.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.
|
||||
*
|
||||
* @since 1.5.0
|
||||
*/
|
||||
public static function ajax_callback() {
|
||||
// Get start and end tag for the footnotes short code.
|
||||
$l_str_starting_tag = Footnotes_Settings::instance()->get( Footnotes_Settings::C_STR_FOOTNOTES_SHORT_CODE_START );
|
||||
$l_str_ending_tag = Footnotes_Settings::instance()->get( Footnotes_Settings::C_STR_FOOTNOTES_SHORT_CODE_END );
|
||||
if ( 'userdefined' === $l_str_starting_tag || 'userdefined' === $l_str_ending_tag ) {
|
||||
$l_str_starting_tag = Footnotes_Settings::instance()->get( Footnotes_Settings::C_STR_FOOTNOTES_SHORT_CODE_START_USER_DEFINED );
|
||||
$l_str_ending_tag = Footnotes_Settings::instance()->get( Footnotes_Settings::C_STR_FOOTNOTES_SHORT_CODE_END_USER_DEFINED );
|
||||
}
|
||||
echo json_encode(
|
||||
array(
|
||||
'start' => htmlspecialchars( $l_str_starting_tag ),
|
||||
'end' => htmlspecialchars( $l_str_ending_tag ),
|
||||
)
|
||||
);
|
||||
exit;
|
||||
}
|
||||
}
|
Reference in a new issue