Jake Vanderwerf
3 days ago ba1e1ccf869b818f7a7a897264dfea05563a7796
inc/blocks/RegisterBlocks.php
@@ -1,21 +1,36 @@
<?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::withFeature('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',
@@ -24,7 +39,7 @@
//            ]
//        );
//    }
   if (Features::anyContentHas('show_directory') || Features::anyTaxonomyHas('show_directory')) {
   if (!empty(Registrar::withFeature('show_directory'))) {
        register_block_type(
            JVB_DIR . '/build/list',
            [
@@ -46,65 +61,3 @@
    ]);
}
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');