Jake Vanderwerf
2026-09-15 01e9a8e40351a87f6548a4f55de842d6f6918ad0
inc/managers/SEO/SEOAdminPage.php
@@ -1,8 +1,11 @@
<?php
namespace JVBase\managers\SEO;
use JVBase\admin\SEOAdmin;
use JVBase\Instance;
use JVBase\managers\AdminPages;
use JVBase\meta\Form;
use JVBase\registrar\Registrar;
use JVBase\ui\Tabs;
if (!defined('ABSPATH')) {
@@ -18,15 +21,16 @@
 */
class SEOAdminPage
{
    private ConfigManager $config;
    private SchemaBuilder $registry;
   use Instance;
//    private SchemaBuilder $registry;
    public function __construct()
    {
        $this->registry = SchemaBuilder::getInstance();
//        $this->registry = SchemaBuilder::getInstance();
        // Add to JVB dashboard
      add_action(BASE.'dashboardPage', [$this, 'addDashboardSection'], 10, 1);
        add_filter('jvbDashboardPage', [$this, 'addDashboardSection'], 20, 2);
      add_action('admin_enqueue_scripts', [$this, 'enqueueScripts']);
    }
@@ -54,20 +58,19 @@
    public static function renderAdminPageStatic():void
    {
        JVB()->seoAdmin()->renderAdminPage();
        SEOAdmin::getInstance()->renderAdminPage();
    }
    /**
     * Add section to JVB dashboard
     */
    public function addDashboardSection(string $content, string $page): string
    public function addDashboardSection(string $page):void
    {
      if ($page !== 'SEO') {
         return $content;
      jvbDump($page);
      if ($page !== 'seo') {
         return;
      }
        ob_start();
        $this->renderAdminPage();
        return ob_get_clean();
    }
    /**
@@ -146,7 +149,9 @@
                  echo '<div class="seo-'.$type.'">';
               }
               $fieldConfig = $this->registry->getFieldDefinition($fieldName);
               if (!$fieldConfig) {
                  continue;
               }
               echo Form::render($fieldName, $config[$fieldName]??'', $fieldConfig);
               if ($index === 0 && $fieldName === 'type') {
                  echo '<div class="seo-'.$type.'">';
@@ -190,23 +195,16 @@
   {
      $types = ['meta', 'schema'];
      switch ($type) {
         case 'content':
            $config = JVB_CONTENT;
            $types[] = 'archive';
            break;
         case 'taxonomy':
         case 'taxonomies':
            $config = JVB_TAXONOMY;
            break;
         case 'user':
            $config = JVB_USER;
            break;
         default:
            error_log('[SEOAdminPage]:renderConfig --- no config found for '.$type);
            return '';
      if ($type == 'content') {
         $types[] = 'archive';
      }
      $registrar = Registrar::getInstance($type);
      if (!$registrar){
         return '';
      }
      $config = $registrar->getConfig('seo');
      $mainTabs = new Tabs();
      foreach ($config as $c => $opt) {
@@ -267,6 +265,9 @@
               $fields = $this->registry->getFieldsForType($type);
               foreach ($fields as $fieldName) {
                  $config = $this->registry->getFieldDefinition($fieldName);
                  if (!$config) {
                     continue;
                  }
                  echo Form::render($fieldName, '', $config);
               }
               ?>