From c9a81974c3e49fdb30f2b565290d5d7ef29fcaf1 Mon Sep 17 00:00:00 2001 From: Robin Cornett Date: Fri, 10 Nov 2017 13:34:30 -0500 Subject: [PATCH] Add general widgets class --- display-featured-image-genesis.php | 5 +- .../class-displayfeaturedimagegenesis.php | 17 ++++- ...eaturedimagegenesis-widgets-shortcodes.php | 4 -- ...ss-displayfeaturedimagegenesis-widgets.php | 67 +++++++++++++++++++ 4 files changed, 85 insertions(+), 8 deletions(-) create mode 100644 includes/widgets/class-displayfeaturedimagegenesis-widgets.php diff --git a/display-featured-image-genesis.php b/display-featured-image-genesis.php index 781f6ec..af8d7e1 100644 --- a/display-featured-image-genesis.php +++ b/display-featured-image-genesis.php @@ -46,6 +46,7 @@ function display_featured_image_genesis_require() { 'settings/class-displayfeaturedimagegenesis-settings', 'class-displayfeaturedimagegenesis-taxonomies', 'sixtenpress-shortcodes/sixtenpress-shortcodes', + 'widgets/class-displayfeaturedimagegenesis-widgets', ); foreach ( $files as $file ) { @@ -67,6 +68,7 @@ $displayfeaturedimagegenesis_post_meta = new Display_Featured_Image_Genesis_Po $displayfeaturedimagegenesis_rss = new Display_Featured_Image_Genesis_RSS(); $displayfeaturedimagegenesis_settings = new Display_Featured_Image_Genesis_Settings(); $displayfeaturedimagegenesis_taxonomies = new Display_Featured_Image_Genesis_Taxonomies(); +$displayfeaturedimagegenesis_widgets = new DisplayFeaturedImageGenesisWidgets(); $displayfeaturedimage = new Display_Featured_Image_Genesis( $displayfeaturedimagegenesis_admin, @@ -79,7 +81,8 @@ $displayfeaturedimage = new Display_Featured_Image_Genesis( $displayfeaturedimagegenesis_post_meta, $displayfeaturedimagegenesis_rss, $displayfeaturedimagegenesis_settings, - $displayfeaturedimagegenesis_taxonomies + $displayfeaturedimagegenesis_taxonomies, + $displayfeaturedimagegenesis_widgets ); $displayfeaturedimage->run(); diff --git a/includes/class-displayfeaturedimagegenesis.php b/includes/class-displayfeaturedimagegenesis.php index eec1dbb..f492d82 100644 --- a/includes/class-displayfeaturedimagegenesis.php +++ b/includes/class-displayfeaturedimagegenesis.php @@ -81,6 +81,13 @@ class Display_Featured_Image_Genesis { */ protected $taxonomies; + /** + * Register widgets and related shortcodes. + * + * @var \DisplayFeaturedImageGenesisWidgets + */ + protected $widgets; + /** * Display_Featured_Image_Genesis constructor. * @@ -95,7 +102,7 @@ class Display_Featured_Image_Genesis { * @param $settings * @param $taxonomies */ - function __construct( $admin, $author, $common, $customizer, $description, $helptabs, $output, $post_meta, $rss, $settings, $taxonomies ) { + function __construct( $admin, $author, $common, $customizer, $description, $helptabs, $output, $post_meta, $rss, $settings, $taxonomies, $widgets ) { $this->admin = $admin; $this->author = $author; $this->common = $common; @@ -107,6 +114,7 @@ class Display_Featured_Image_Genesis { $this->rss = $rss; $this->settings = $settings; $this->taxonomies = $taxonomies; + $this->widgets = $widgets; } /** @@ -122,7 +130,6 @@ class Display_Featured_Image_Genesis { // Plugin setup add_action( 'after_setup_theme', array( $this, 'add_plugin_supports' ) ); - add_action( 'widgets_init', array( $this, 'register_widgets' ) ); add_action( 'plugins_loaded', array( $this, 'load_textdomain' ) ); add_filter( 'plugin_action_links_' . DISPLAYFEATUREDIMAGEGENESIS_BASENAME, array( $this, 'add_settings_link' ) ); @@ -130,6 +137,11 @@ class Display_Featured_Image_Genesis { add_action( 'admin_init', array( $this->admin, 'set_up_columns' ) ); add_action( 'admin_enqueue_scripts', array( $this, 'enqueue_scripts' ) ); + // Widgets + add_action( 'widgets_init', array( $this->widgets, 'register_widgets' ) ); + add_action( 'widgets_init', array( $this->widgets, 'register_shortcodes' ) ); + add_action( 'admin_enqueue_scripts', array( $this->widgets, 'enqueue_scripts' ) ); + // Taxonomies, Author, Post Meta add_filter( 'displayfeaturedimagegenesis_get_taxonomies', array( $this->taxonomies, 'remove_post_status_terms' ) ); add_action( 'admin_init', array( $this->taxonomies, 'set_taxonomy_meta' ) ); @@ -151,7 +163,6 @@ class Display_Featured_Image_Genesis { // RSS add_action( 'template_redirect', array( $this->rss, 'maybe_do_feed' ) ); - } /** diff --git a/includes/widgets/class-displayfeaturedimagegenesis-widgets-shortcodes.php b/includes/widgets/class-displayfeaturedimagegenesis-widgets-shortcodes.php index d632138..841adca 100644 --- a/includes/widgets/class-displayfeaturedimagegenesis-widgets-shortcodes.php +++ b/includes/widgets/class-displayfeaturedimagegenesis-widgets-shortcodes.php @@ -57,10 +57,6 @@ class DisplayFeaturedImageGenesisWidgetsShortcodes { * Add media shortcode buttons to the editor. */ public function shortcode_buttons() { - $setting = displayfeaturedimagegenesis_get_setting(); - if ( ! $setting['shortcodes'] ) { - return; - } $widgets = array( 'displayfeaturedimagegenesis_term' => __( 'Add Featured Term Widget', 'display-featured-image-genesis' ), 'displayfeaturedimagegenesis_author' => __( 'Add Featured Author Widget', 'display-featured-image-genesis' ), diff --git a/includes/widgets/class-displayfeaturedimagegenesis-widgets.php b/includes/widgets/class-displayfeaturedimagegenesis-widgets.php new file mode 100644 index 0000000..47a161f --- /dev/null +++ b/includes/widgets/class-displayfeaturedimagegenesis-widgets.php @@ -0,0 +1,67 @@ + 'Display_Featured_Image_Genesis_Author_Widget', + 'cpt-archive' => 'Display_Featured_Image_Genesis_Widget_CPT', + 'taxonomy' => 'Display_Featured_Image_Genesis_Widget_Taxonomy', + ); + + require_once plugin_dir_path( __FILE__ ) . 'class-displayfeaturedimagegenesis-widgets-form.php'; + require_once plugin_dir_path( __FILE__ ) . 'class-displayfeaturedimagegenesis-widgets-update.php'; + foreach ( $widgets as $file => $widget ) { + require_once plugin_dir_path( __FILE__ ) . 'displayfeaturedimagegenesis-' . $file . '-widget.php'; + register_widget( $widget ); + } + } + + /** + * Register widget shortcodes. + */ + public function register_shortcodes() { + require_once plugin_dir_path( __FILE__ ) . 'class-displayfeaturedimagegenesis-widgets-shortcodes.php'; + $shortcode_class = new DisplayFeaturedImageGenesisWidgetsShortcodes(); + foreach ( array( 'author', 'post_type', 'term' ) as $shortcode ) { + add_shortcode( "displayfeaturedimagegenesis_{$shortcode}", array( $shortcode_class, "shortcode_{$shortcode}" ) ); + } + $setting = displayfeaturedimagegenesis_get_setting(); + if ( ! $setting['shortcodes'] ) { + return; + } + add_filter( 'sixtenpress_shortcode_inline_css', array( $shortcode_class, 'inline_css' ) ); + add_action( 'sixtenpress_shortcode_init', array( $shortcode_class, 'shortcode_buttons' ) ); + add_action( 'sixtenpress_shortcode_modal', array( $shortcode_class, 'do_modal' ) ); + add_action( 'sixtenpress_shortcode_before_media_button', array( $shortcode_class, 'button_open' ) ); + add_action( 'sixtenpress_shortcode_after_media_button', array( $shortcode_class, 'button_close' ) ); + add_action( 'admin_enqueue_scripts', array( $shortcode_class, 'inline_script' ), 1000 ); + } + + /** + * Enqueue and localize widget scripts. + */ + public function enqueue_scripts() { + if ( function_exists( 'is_customize_preview' ) && is_customize_preview() && ! function_exists( 'genesis' ) ) { + return; + } + + $screen = get_current_screen(); + if ( in_array( $screen->id, array( 'widgets', 'customize' ), true ) ) { + wp_enqueue_script( 'widget_selector' ); + wp_localize_script( 'widget_selector', 'displayfeaturedimagegenesis_ajax_object', array( + 'ajax_url' => admin_url( 'admin-ajax.php' ), + ) ); + } + } +}