| | |
| | | <?php |
| | | |
| | | use JVBase\utility\Features; |
| | | use JVBase\registrar\Registrar; |
| | | use JVBase\base\Site; |
| | | |
| | | if (!defined('ABSPATH')) { |
| | | exit; |
| | | } |
| | | //Blocks |
| | | if (jvbSiteUsesFeedBlock()) { |
| | | if (Site::has('feed_block')) { |
| | | require(JVB_DIR . '/build/feed/render.php'); |
| | | } |
| | | require(JVB_DIR . '/build/list/render.php'); |
| | | require(JVB_DIR . '/build/summary/render.php'); |
| | | require(JVB_DIR . '/build/forms/render.php'); |
| | | require(JVB_DIR . '/build/menu/render.php'); |
| | | if (!empty(Registrar::getFeatured('is_glossary'))) { |
| | | error_log('Has Glossary Type'); |
| | | require(JVB_DIR . '/build/glossary/render.php'); |
| | | } |
| | | if (Site::has('faq')) { |
| | | require(JVB_DIR . '/build/faq/render.php'); |
| | | } |
| | | if (Site::hasIntegration('gmb')) { |
| | | require(JVB_DIR . '/build/gmbreviews/render.php'); |
| | | } |
| | | |
| | | |
| | | function jvbRegisterBlocks():void |
| | | { |
| | | if (Site::hasIntegration('gmb')) { |
| | | register_block_type(JVB_DIR . '/build/gmb-reviews'); |
| | | } |
| | | // if (jvbSiteUsesFeedBlock()) { |
| | | // register_block_type( |
| | | // JVB_DIR . '/build/feed', |
| | |
| | | // ] |
| | | // ); |
| | | // } |
| | | if (Features::anyContentHas('show_directory') || Features::anyTaxonomyHas('show_directory')) { |
| | | if (!empty(Registrar::getFeatured('show_directory'))) { |
| | | register_block_type( |
| | | JVB_DIR . '/build/list', |
| | | [ |
| | |
| | | ]); |
| | | } |
| | | add_filter('block_categories_all', 'jvbRegisterBlockCategory'); |
| | | |
| | | //Get our loaded types |
| | | function jvbRegisterFeedTypes():void |
| | | { |
| | | global $jvb_feed; |
| | | global $jvb_taxonomy_for; |
| | | |
| | | |
| | | wp_localize_script('jvb-feed-block-editor', 'jvbBlockSettings', [ |
| | | 'contentTypes' => $jvb_feed, |
| | | 'taxonomyFor' => $jvb_taxonomy_for |
| | | ]); |
| | | |
| | | |
| | | // Filter for block.json |
| | | add_filter('block_type_metadata', function ($metadata) use ($jvb_feed) { |
| | | if ($metadata['name'] === 'jvb/feed') { |
| | | $metadata['attributes']['contentTypes']['items']['enum'] = array_keys($jvb_feed); |
| | | } |
| | | return $metadata; |
| | | }); |
| | | } |
| | | add_action('wp_loaded', 'jvbRegisterFeedTypes'); |
| | | |
| | | if (jvbSiteUsesFeedBlock()) { |
| | | add_action('rest_api_init', 'jvbGetFeedTypes'); |
| | | function jvbGetFeedTypes():void |
| | | { |
| | | register_rest_route( |
| | | 'jvb/v1', |
| | | 'types', |
| | | [ |
| | | 'permission_callback' => function () { |
| | | return is_user_logged_in(); |
| | | }, |
| | | 'callback' => function () { |
| | | global $jvb_feed; |
| | | return new WP_REST_Response(json_encode((object) $jvb_feed)); |
| | | } |
| | | ] |
| | | ); |
| | | } |
| | | } |
| | | |
| | | |
| | | /** |
| | | * Enqueue block editor assets |
| | | */ |
| | | function jvbEnqueueBlockEditorAssets():void |
| | | { |
| | | // Only localize for block editor |
| | | if (!is_admin()) { |
| | | return; |
| | | } |
| | | // Localize list types for the block |
| | | wp_localize_script( |
| | | 'jvb-list-editor-script', // This should match your editor script handle |
| | | 'jvbListTypes', |
| | | jvbGlobalDirectoryInfo() |
| | | ); |
| | | } |
| | | add_action('enqueue_block_editor_assets', 'jvbEnqueueBlockEditorAssets'); |