initial commit
Peter Molnar hello@petermolnar.eu
Tue, 22 Jul 2014 10:30:41 +0100
3 files changed,
265 insertions(+),
6 deletions(-)
M
.gitmodules
→
.gitmodules
@@ -1,6 +1,9 @@
[submodule "wp-common"] path = wp-common url = github:/petermolnar/wp-common -[submodule "lib/pagedown-extra"] - path = lib/pagedown-extra - url = https://github.com/jmcmanus/pagedown-extra +[submodule "lib/parsedown"] + path = lib/parsedown + url = https://github.com/erusev/parsedown.git +[submodule "lib/parsedown-extra"] + path = lib/parsedown-extra + url = https://github.com/erusev/parsedown-extra.git
M
README.md
→
README.md
@@ -1,4 +1,29 @@
-wp-ghost -======== +=== WP-Parsedown === +Contributors: cadeyrn +Donate link: +Tags: markdown, editor, parsedown +Requires at least: 3.0 +Tested up to: 4.0 +Stable tag: 0.1 +License: GPLv3 +License URI: http://www.gnu.org/licenses/gpl-3.0.html + +Parse content output with [Parsedown Extra](http://www.parsedown.org/) + +== Description == + +Parse the_content with [Parsedown Extra](http://www.parsedown.org/demo?extra=1) to display [Markdown Extra](https://en.wikipedia.org/wiki/Markdown_Extra) content in HTML parser. + + +== Installation == + +1. Upload contents of `wp-parsedown.zip` to the `/wp-content/plugins/` directory +2. Activate the plugin through the `Plugins` menu in WordPress ( site or Network wide ) + +== Changelog == + += 0.1 = +*2014-07-22* + +Initial release -Ghost Markdown Editor for Ghost w/ Markdown Extra
A
wp-parsedown.php
@@ -0,0 +1,231 @@
+<?php +/* +Plugin Name: WP-Parsedown +Plugin URI: https://github.com/petermolnar/wp-parsedown +Description: [Parsedown Extra](www.parsedown.org/demo?extra=1) on-the-fly +Version: 0.1 +Author: Peter Molnar <hello@petermolnar.eu> +Author URI: https://petermolnar.eu/ +License: GPLv3 +*/ + + +if ( ! class_exists( 'WP_PARSEDOWN' ) ) : + +/* get the plugin abstract class*/ +include_once ( dirname(__FILE__) . '/wp-common/plugin_abstract.php' ); +include_once ( dirname(__FILE__) . '/lib/parsedown/Parsedown.php'); +include_once ( dirname(__FILE__) . '/lib/parsedown-extra/ParsedownExtra.php'); + +/** + * main wp-ghost class + */ +class WP_PARSEDOWN extends PluginAbstract { + const key_save = 'saved'; + const key_delete = 'deleted'; + private $parsedown = null; + + /** + * + */ + public function plugin_post_construct () { + $this->plugin_url = plugin_dir_url( __FILE__ ); + $this->plugin_dir = plugin_dir_path( __FILE__ ); + + $this->common_url = $this->plugin_url . self::common_slug; + $this->common_dir = $this->plugin_dir . self::common_slug; + + $this->admin_css_handle = $this->plugin_constant . '-admin-css'; + $this->admin_css_url = $this->common_url . 'wp-admin.css'; + + $this->parsedown = new ParsedownExtra(); + } + + /** + * init hook function runs before admin panel hook, themeing and options read + */ + public function plugin_pre_init() { + + } + + /** + * additional init, steps that needs the plugin options + * + */ + public function plugin_post_init () { + /* display markdown */ + add_filter( 'the_content', array(&$this, 'markdown_on_the_fly'), 1 ); + + } + + + /** + * activation hook function, to be extended + */ + public function plugin_activate() { + /* we leave this empty to avoid not detecting WP network correctly */ + } + + /** + * deactivation hook function, to be extended + */ + public function plugin_deactivate () { + } + + /** + * uninstall hook function, to be extended + */ + public function plugin_uninstall( $delete_options = true ) { + } + + /** + * extending admin init + * + */ + public function plugin_extend_admin_init () { + } + + /** + * admin help panel + */ + public function plugin_admin_help($contextual_help, $screen_id ) { + + /* add our page only if the screenid is correct */ + if ( strpos( $screen_id, $this->plugin_settings_page ) ) { + $contextual_help = __('<p>Please visit <a href="http://wordpress.org/support/plugin/wp-ghost">the official support forum of the plugin</a> for help.</p>', $this->plugin_constant ); + } + + return $contextual_help; + } + + /** + * admin panel, the admin page displayed for plugin settings + */ + public function plugin_admin_panel() { + /** + * security, if somehow we're running without WordPress security functions + */ + if( ! function_exists( 'current_user_can' ) || ! current_user_can( 'manage_options' ) ){ + die( ); + } + ?> + + <div class="wrap"> + + <script> + jQuery(document).ready(function($) { + jQuery( "#<?php echo $this->plugin_constant ?>-settings" ).tabs(); + }); + </script> + + <?php + + /* display donation form */ + //$this->plugin_donation_form(); + + /** + * if options were saved, display saved message + */ + if (isset($_GET[ self::key_save ]) && $_GET[ self::key_save ]=='true' || $this->status == 1) { ?> + <div class='updated settings-error'><p><strong><?php _e( 'Settings saved.' , $this->plugin_constant ) ?></strong></p></div> + <?php } + + /** + * if options were delete, display delete message + */ + if (isset($_GET[ self::key_delete ]) && $_GET[ self::key_delete ]=='true' || $this->status == 2) { ?> + <div class='error'><p><strong><?php _e( 'Plugin options deleted.' , $this->plugin_constant ) ?></strong></p></div> + <?php } + + /** + * the admin panel itself + */ + ?> + + <h2><?php printf ( __( '%s settings', $this->plugin_constant ), $this->plugin_name ) ; ?></h2> + + <form autocomplete="off" method="post" action="#" id="<?php echo $this->plugin_constant ?>-settings" class="plugin-admin"> + + <?php wp_nonce_field( $this->plugin_constant ); ?> + <ul class="tabs"> + <li><a href="#<?php echo $this->plugin_constant ?>-general" class="wp-switch-editor"><?php _e( 'Generic settings', $this->plugin_constant ); ?></a></li> + </ul> + + <fieldset id="<?php echo $this->plugin_constant ?>-general"> + <legend><?php _e( 'General settings', $this->plugin_constant ); ?></legend> + <dl> + <dt> + <label for="debug"><?php _e("Enable debug logging?", $this->plugin_constant); ?></label> + </dt> + <dd> + <input type="checkbox" name="debug" id="debug" value="1" <?php checked($this->options['debug'],true); ?> /> + <span class="description"><?php _e('Enables log messages; if <a href="http://codex.wordpress.org/WP_DEBUG">WP_DEBUG</a> is enabled, notices and info level is displayed as well, otherwie only ERRORS are logged.', $this->plugin_constant); ?></span> + </dd> + </dl> + </fieldset> + </form> + </div> + <?php + } + + /** + * extending options_save + * + */ + public function plugin_extend_options_save( $activating ) { + } + + /** + * read hook; needs to be implemented + */ + public function plugin_extend_options_read( &$options ) { + } + + /** + * options delete hook; needs to be implemented + */ + public function plugin_extend_options_delete( ) { + } + + /** + * need to do migrations from previous versions of the plugin + * + */ + public function plugin_options_migrate( &$options ) { + } + + + + /** + * log wrapper to include options + * + */ + public function log ( $message, $log_level = LOG_WARNING ) { + if ( !isset ( $this->options['log'] ) || $this->options['log'] != 1 ) + return false; + else + $this->utils->log ( $this->plugin_constant, $message, $log_level ); + } + + /** + * + */ + public function markdown_on_the_fly ( $markdown ) { + $post = get_the_post(); + $this->log ( sprintf ( __('WP-Parsedown parsing post: %s', $post->ID ) ); + return $this->parsedown->text ( $markdown ); + } + +} + +endif; + + +$wp_parsedown_defaults = array ( + 'debug' => 0, +); + +$wp_parsedown = new WP_GHOST ( 'wp-parsedown', '0.1', 'WP-Parsedown', $wp_parsedown_defaults ); + + +?>