diff --git a/web/app/themes/badegg/app/Admin/Blocks.php b/web/app/themes/badegg/app/Admin/Blocks.php new file mode 100644 index 0000000..5cc52c5 --- /dev/null +++ b/web/app/themes/badegg/app/Admin/Blocks.php @@ -0,0 +1,206 @@ + 'badegg', + 'title' => __('Provided by Bad Egg Digital'), + ], + [ + 'slug' => 'tempsite', + 'title' => __('Temporary Site'), + ], + ], $categories); + + return $categories; + } + + public function manage($allowed_block_types, $editor_context) + { + // Reference: + // https://www.wpexplorer.com/how-to-remove-gutenberg-blocks/ + // https://www.wpexplorer.com/wordpress-core-blocks-list/ + + // Existing blocks with Blade templates + // https://roots.io/acorn/docs/rendering-blade-views/#existing-blocks-with-blade-templates + + $blocks = array_keys( \WP_Block_Type_Registry::get_instance()->get_all_registered() ); + + $ID = @$editor_context->post->ID; + $pageTemplate = get_post_meta($ID, '_wp_page_template', true); + + if($pageTemplate == 'template-plain-document.blade.php'): + $blacklist = $this->blacklist([ + 'core/separator', + 'core/spacer', + 'core/heading', + 'core/list', + 'core/list-item', + 'core/paragraph', + 'core/pullquote', + ]); + + $blacklist = array_merge($blacklist, [ + 'acf/badegg-wysiwyg', + ]); + + else: + $blacklist = $this->blacklist(); + endif; + + return array_values( array_diff( $blocks, $blacklist ) ); + } + + public function blacklist($whitelist = []) + { + $blacklist = [ + // Contact Form 7 + 'contact-form-7/contact-form-selector', + + // Design + 'core/button', + 'core/comment-template', + 'core/home-link', + 'core/navigation-link', + 'core/navigation-submenu', + 'core/buttons', + 'core/column', + 'core/columns', + 'core/group', + 'core/more', + 'core/nextpage', + 'core/separator', + 'core/spacer', + 'core/text-columns', + + // Embed + 'core/embed', + + // Media + 'core/cover', + 'core/file', + 'core/gallery', + 'core/image', + 'core/media-text', + 'core/audio', + 'core/video', + + // Reusable + 'core/block', + + // Text + 'core/footnotes', + 'core/heading', + 'core/list', + 'core/code', + 'core/details', + 'core/freeform', + // 'core/list-item', + 'core/missing', + 'core/paragraph', + 'core/preformatted', + 'core/pullquote', + 'core/quote', + 'core/table', + 'core/verse', + + // Theme + 'core/avatar', + 'core/comment-author-name', + 'core/comment-content', + 'core/comment-date', + 'core/comment-edit-link', + 'core/comment-reply-link', + 'core/comments', + 'core/comments-pagination', + 'core/comments-pagination-next', + 'core/comments-pagination-numbers', + 'core/comments-pagination-previous', + 'core/comments-title', + 'core/loginout', + 'core/navigation', + 'core/pattern', + 'core/post-author', + 'core/post-author-biography', + 'core/post-author-name', + 'core/post-comments-form', + 'core/post-content', + 'core/post-date', + 'core/post-excerpt', + 'core/post-featured-image', + 'core/post-navigation-link', + 'core/post-template', + 'core/post-terms', + 'core/post-title', + 'core/query', + 'core/query-no-results', + 'core/query-pagination', + 'core/query-pagination-next', + 'core/query-pagination-numbers', + 'core/query-pagination-previous', + 'core/query-title', + 'core/read-more', + 'core/site-logo', + 'core/site-tagline', + 'core/site-title', + 'core/template-part', + 'core/term-description', + 'core/post-comments', + + // Widgets + 'core/legacy-widget', + 'core/widget-group', + 'core/archives', + 'core/calendar', + 'core/categories', + 'core/latest-comments', + 'core/latest-posts', + 'core/page-list', + 'core/page-list-item', + 'core/rss', + 'core/search', + 'core/shortcode', + 'core/social-link', + 'core/tag-cloud', + 'core/html', + 'core/social-links', + ]; + + return array_values( array_diff( $blacklist, $whitelist ) ); + } +} diff --git a/web/app/themes/badegg/functions.php b/web/app/themes/badegg/functions.php index 9b1b0c0..c88c625 100644 --- a/web/app/themes/badegg/functions.php +++ b/web/app/themes/badegg/functions.php @@ -42,6 +42,40 @@ if (! function_exists('\Roots\bootloader')) { \Roots\bootloader()->boot(); +/* +|-------------------------------------------------------------------------- +| Autoload PSR-4 files +|-------------------------------------------------------------------------- +*/ + +function autoload_psr4($name) { + $path = __dir__ . '/app/' . $name . '/*.php'; + $namespace = 'App\\' . $name; + + foreach(glob($path) as $filename) { + $class = $namespace . '\\' . basename($filename, '.php'); + new $class(); + } +} + +function autoload_psr4_blocks() { + $blockDir = __dir__ . '/resources/views/blocks'; + + if(!is_dir($blockDir)) return; + + $path = $blockDir . '/*'; + $namespace = 'Blocks\\'; + + foreach(glob($path, GLOB_ONLYDIR) as $directory) { + $name = basename($directory); + $class = $namespace . $name . '\\' . $name; + new $class(); + } +} + +autoload_psr4('Admin'); +autoload_psr4_blocks(); + /* |-------------------------------------------------------------------------- | Register Sage Theme Files