We need a new economic development model to power our commitment to work and progress.
It is not enough to measure progress by the wealth created, particularly when that wealth is concentrated within social networks that are unfairly exclusive.
/* Widget Name: Editor Description: Insert and customize content with a rich text editor offering extensive formatting options. Author: SiteOrigin Author URI: https://siteorigin.com Documentation: https://siteorigin.com/widgets-bundle/editor-widget/ */ class SiteOrigin_Widget_Editor_Widget extends SiteOrigin_Widget { public function __construct() { parent::__construct( 'sow-editor', __( 'SiteOrigin Editor', 'so-widgets-bundle' ), array( 'description' => __( 'Insert and customize content with a rich text editor offering extensive formatting options.', 'so-widgets-bundle' ), 'help' => 'https://siteorigin.com/widgets-bundle/editor-widget/', ), array(), false, plugin_dir_path( __FILE__ ) ); add_filter( 'siteorigin_widgets_sanitize_instance_sow-editor', array( $this, 'add_noreferrer_to_link_targets' ) ); } public function get_widget_form() { $global_settings = $this->get_global_settings(); return array( 'title' => array( 'type' => 'text', 'label' => __( 'Title', 'so-widgets-bundle' ), ), 'text' => array( 'type' => 'tinymce', 'rows' => 20, 'wpautop_toggle_field' => '.siteorigin-widget-field-autop input[type="checkbox"]', ), 'autop' => array( 'type' => 'checkbox', 'default' => $global_settings['autop_default'], 'label' => __( 'Automatically add paragraphs', 'so-widgets-bundle' ), ), ); } public function get_settings_form() { return array( 'autop_default' => array( 'type' => 'checkbox', 'default' => true, 'label' => __( 'Enable the "Automatically add paragraphs" setting by default.', 'so-widgets-bundle' ), ), ); } public function get_template_variables( $instance, $args ) { $instance = wp_parse_args( $instance, array( 'text' => '' ) ); if ( // Only run these parts if we're rendering for the frontend. empty( $GLOBALS[ 'SITEORIGIN_PANELS_CACHE_RENDER' ] ) && empty( $GLOBALS[ 'SITEORIGIN_PANELS_POST_CONTENT_RENDER' ] ) ) { if ( function_exists( 'wp_filter_content_tags' ) ) { $instance['text'] = wp_filter_content_tags( $instance['text'] ); } elseif ( function_exists( 'wp_make_content_images_responsive' ) ) { $instance['text'] = wp_make_content_images_responsive( $instance['text'] ); } // Manual support for Jetpack Markdown module. if ( class_exists( 'WPCom_Markdown' ) && Jetpack::is_module_active( 'markdown' ) && $instance['text_selected_editor'] == 'html' ) { $markdown_parser = WPCom_Markdown::get_instance(); $instance['text'] = $markdown_parser->transform( $instance['text'] ); } // Run some known stuff. if ( ! empty( $GLOBALS['wp_embed'] ) ) { $instance['text'] = $GLOBALS['wp_embed']->run_shortcode( $instance['text'] ); $instance['text'] = $GLOBALS['wp_embed']->autoembed( $instance['text'] ); } // As in the Text Widget, we need to prevent plugins and themes from running `do_shortcode` in the `widget_text` // filter to avoid running it twice and to prevent `wpautop` from interfering with shortcodes' output. $widget_text_do_shortcode_priority = has_filter( 'widget_text', 'do_shortcode' ); if ( $widget_text_do_shortcode_priority !== false ) { remove_filter( 'widget_text', 'do_shortcode', $widget_text_do_shortcode_priority ); } $instance['text'] = apply_filters( 'widget_text', $instance['text'], $instance, $this ); if ( $widget_text_do_shortcode_priority !== false ) { add_filter( 'widget_text', 'do_shortcode', $widget_text_do_shortcode_priority ); } if ( $instance['autop'] ) { $instance['text'] = wpautop( $instance['text'] ); } // Don't process more more quicktag if this is a preview. if ( ! $this->is_preview() && empty( $GLOBALS[ 'SITEORIGIN_PANELS_PREVIEW_RENDER' ] ) && ( isset( $_POST['action'] ) && $_POST['action'] != 'so_widgets_preview' ) ) { $instance['text'] = $this->process_more_quicktag( $instance['text'] ); } } $instance['text'] = do_shortcode( shortcode_unautop( $instance['text'] ) ); return array( 'text' => $instance['text'], ); } private function process_more_quicktag( $content ) { $post = get_post(); if ( ! empty( $post ) ) { $panels_content = get_post_meta( $post->ID, 'panels_data', true ); } // We only want to do this processing if on archive pages for posts with non-PB layouts. if ( ! is_singular() && empty( $panels_content ) && ! $this->is_block_editor_page() && empty( $GLOBALS['SO_WIDGETS_BUNDLE_PREVIEW_RENDER'] ) ) { if ( preg_match( '//', $content, $matches ) ) { $content = explode( $matches[0], $content, 2 ); $content = $content[0]; $content = force_balance_tags( $content ); if ( ! empty( $matches[1] ) ) { $more_link_text = strip_tags( wp_kses_no_null( trim( $matches[1] ) ) ); } else { $more_link_text = __( 'Read More', 'so-widgets-bundle' ); } $more_link = apply_filters( 'the_content_more_link', ' ID}\" class=\"more-link\">$more_link_text", $more_link_text ); $content .= '
' . $more_link . '
'; } } return $content; } public function add_noreferrer_to_link_targets( $instance ) { if ( function_exists( 'wp_targeted_link_rel' ) && ! empty( $instance['text'] ) ) { $instance['text'] = wp_targeted_link_rel( $instance['text'] ); } return $instance; } public function get_style_name( $instance ) { // We're not using a style. return false; } public function get_form_teaser() { if ( class_exists( 'SiteOrigin_Premium' ) ) { return false; } return array( sprintf( __( 'Use Google Fonts right inside the Editor Widget with %sSiteOrigin Premium%s', 'so-widgets-bundle' ), '', '' ), ); } } siteorigin_widget_register( 'sow-editor', __FILE__, 'SiteOrigin_Widget_Editor_Widget' );