From 0c6f59b77a7acc28fda7bad2ee5c1efa4ef0fa6c Mon Sep 17 00:00:00 2001 From: Simon Prosser Date: Tue, 24 Dec 2019 18:59:31 +0000 Subject: [PATCH 1/2] Adds Beaver Builder support. Fixes #32 --- assets/admin/js/bb-analysis.js | 20 ++++ includes/module/class-manager.php | 9 ++ .../beaverbuilder/class-beaverbuilder.php | 108 ++++++++++++++++++ vendor/composer/autoload_classmap.php | 1 + vendor/composer/autoload_static.php | 1 + 5 files changed, 139 insertions(+) create mode 100644 assets/admin/js/bb-analysis.js create mode 100644 includes/modules/beaverbuilder/class-beaverbuilder.php diff --git a/assets/admin/js/bb-analysis.js b/assets/admin/js/bb-analysis.js new file mode 100644 index 0000000..0cffab1 --- /dev/null +++ b/assets/admin/js/bb-analysis.js @@ -0,0 +1,20 @@ +(function($){ + var ClassicSEOIntegration = function() { + this.hooks() + } + + ClassicSEOIntegration.prototype.hooks = function() { + classicSEOApp.registerPlugin( 'bb-seo' ) + wp.hooks.addFilter( 'cpseo_content', 'bb-seo', function(content) { + return window.classicSEO.beaverbuilder.pagedata; + } ) + } + + ClassicSEOIntegration.prototype.getContent = function( content ) { + return window.classicSEO.beaverbuilder.pagedata; + } + + $( document ).ready( function () { + new ClassicSEOIntegration() + }) +})(jQuery); diff --git a/includes/module/class-manager.php b/includes/module/class-manager.php index 4b9eee0..9b60373 100644 --- a/includes/module/class-manager.php +++ b/includes/module/class-manager.php @@ -213,6 +213,15 @@ public function setup_3rd_party( $modules ) { ]; } + if ( class_exists( 'FLBuilder' ) ) { + $modules['beaverbuilder'] = array( + 'title' => esc_html__( 'Beaver Builder', 'cpseo' ), + 'desc' => esc_html__( 'Read and analyze content in Beaver Builder layouts.', 'cpseo' ), + 'class' => 'Classic_SEO\BeaverBuilder\BeaverBuilder', + 'icon' => 'dashicons-editor-table', + ); + } + return $modules; } diff --git a/includes/modules/beaverbuilder/class-beaverbuilder.php b/includes/modules/beaverbuilder/class-beaverbuilder.php new file mode 100644 index 0000000..b551be2 --- /dev/null +++ b/includes/modules/beaverbuilder/class-beaverbuilder.php @@ -0,0 +1,108 @@ +action( 'cpseo/admin/enqueue_scripts', 'enqueue' ); + $this->action( 'admin_enqueue_scripts', 'dequeue_layout_scripts', 10000 ); + } + + /** + * Enqueue styles and scripts for the metabox. + */ + public function enqueue() { + wp_enqueue_script( 'cpseo-bb-post-analysis', cpseo()->plugin_url() . 'assets/admin/js/bb-analysis.js', array( 'cpseo-post-metabox' ), cpseo()->version, true ); + Helper::add_json( 'beaverbuilder', $this->get_config() ); + } + + /** + * Get Config data + * + * @return array The config data. + */ + private function get_config() { + $config = array( + 'pluginName' => 'cpseo-beaverbuilder', + 'refreshRate' => 0, + 'headlines' => array(), + 'enableReload' => false, + 'pagedata' => $this->content_data(), + ); + + return $this->do_filter( 'beaverbuilder/config', $config ); + } + + /** + * Get Page Layout HTML + */ + private function content_data() { + + $id = $_GET['post']; + + ob_start(); + echo do_shortcode( "[fl_builder_insert_layout id=$id]" ); + $data = ob_get_clean(); + FLBuilderModel::delete_all_asset_cache( $id ); + return str_replace( PHP_EOL, '', $data ); + } + + /** + * Dequeue any JS enqueued during content_data() function to prevent JS errors. + */ + function dequeue_layout_scripts() { + global $wp_scripts; + foreach ( $wp_scripts->queue as $item ) { + if ( false !== strpos( $item, 'fl-builder-layout' ) ) { + wp_dequeue_script( $item ); + } + } + } + + /** + * Removes fl-builder-template from sitemap + */ + function types( $post_types ) { + unset( $post_types['fl-builder-template'] ); + return $post_types; + } + +} diff --git a/vendor/composer/autoload_classmap.php b/vendor/composer/autoload_classmap.php index 3ba4315..76d000c 100644 --- a/vendor/composer/autoload_classmap.php +++ b/vendor/composer/autoload_classmap.php @@ -99,6 +99,7 @@ 'Classic_SEO\\Admin\\Serp_Preview' => $baseDir . '/includes/admin/class-serp-preview.php', 'Classic_SEO\\Admin\\Watcher' => $baseDir . '/includes/admin/watcher/class-watcher.php', 'Classic_SEO\\Admin_Bar_Menu' => $baseDir . '/includes/admin/class-admin-bar-menu.php', + 'Classic_SEO\\BeaverBuilder\\BeaverBuilder' => $baseDir . '/includes/modules/beaverbuilder/class-beaverbuilder.php', 'Classic_SEO\\CLI\\Commands' => $baseDir . '/includes/cli/class-commands.php', 'Classic_SEO\\CMB2' => $baseDir . '/includes/class-cmb2.php', 'Classic_SEO\\Common' => $baseDir . '/includes/class-common.php', diff --git a/vendor/composer/autoload_static.php b/vendor/composer/autoload_static.php index 107f309..00ad478 100644 --- a/vendor/composer/autoload_static.php +++ b/vendor/composer/autoload_static.php @@ -105,6 +105,7 @@ class ComposerStaticInitc2822413d75ee1db8fcd50de895c43fa 'Classic_SEO\\Admin\\Serp_Preview' => __DIR__ . '/../..' . '/includes/admin/class-serp-preview.php', 'Classic_SEO\\Admin\\Watcher' => __DIR__ . '/../..' . '/includes/admin/watcher/class-watcher.php', 'Classic_SEO\\Admin_Bar_Menu' => __DIR__ . '/../..' . '/includes/admin/class-admin-bar-menu.php', + 'Classic_SEO\\BeaverBuilder\\BeaverBuilder' => __DIR__ . '/../..' . '/includes/modules/beaverbuilder/class-beaverbuilder.php', 'Classic_SEO\\CLI\\Commands' => __DIR__ . '/../..' . '/includes/cli/class-commands.php', 'Classic_SEO\\CMB2' => __DIR__ . '/../..' . '/includes/class-cmb2.php', 'Classic_SEO\\Common' => __DIR__ . '/../..' . '/includes/class-common.php', From ba4f07055608bd0ac5592df830a80bbe09a2084c Mon Sep 17 00:00:00 2001 From: Simon Prosser Date: Tue, 24 Dec 2019 19:12:13 +0000 Subject: [PATCH 2/2] Remove unused vars --- includes/modules/beaverbuilder/class-beaverbuilder.php | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/includes/modules/beaverbuilder/class-beaverbuilder.php b/includes/modules/beaverbuilder/class-beaverbuilder.php index b551be2..b12d73a 100644 --- a/includes/modules/beaverbuilder/class-beaverbuilder.php +++ b/includes/modules/beaverbuilder/class-beaverbuilder.php @@ -61,11 +61,8 @@ public function enqueue() { */ private function get_config() { $config = array( - 'pluginName' => 'cpseo-beaverbuilder', - 'refreshRate' => 0, - 'headlines' => array(), - 'enableReload' => false, - 'pagedata' => $this->content_data(), + 'pluginName' => 'cpseo-beaverbuilder', + 'pagedata' => $this->content_data(), ); return $this->do_filter( 'beaverbuilder/config', $config );