Jake Vanderwerf
2026-01-06 2c955cebb5f1e01fbdb866b50d296fe9fbd852b8
inc/ui/CRUDSkeleton.php
@@ -36,7 +36,7 @@
   protected string $dataType = '';
   protected string $singular = '';
   protected string $plural = '';
   protected string $icon = 'triangle';
   protected string $icon;
   // Capabilities
   protected array $caps = [];
@@ -134,6 +134,7 @@
   protected array $additionalClasses = [];
   public function __construct() {
      $this->icon = jvbDefaultIcon();
      $this->user = wp_get_current_user();
      $this->user_id = $this->user->ID;
   }
@@ -229,6 +230,20 @@
      return $this;
   }
   protected function taxConfig(string $taxonomy, string $label = ''):array
   {
      $isVerified = jvbUserIsVerified();
      $label = ($label === '') ? JVB_TAXONOMY[$taxonomy]['plural'] : $label;
      return [
         'type'      => 'taxonomy',
         'label'     => $label,
         'taxonomy'  => $taxonomy,
         'createNew' => $isVerified,
         'multiple'  => true,
         'mode'      => 'append',
      ];
   }
   public function addSearch():self
   {
      $this->hasSearch = true;
@@ -238,7 +253,7 @@
   /**
    * Add a view type (grid, table, list, timeline)
    */
   public function addViews(?array $views):self
   public function addViews(?array $views = null):self
   {
      if (!$views) {
         $views = $this->defaultViews;
@@ -612,7 +627,8 @@
         return;
      }
      ?>
      <div class="all-filters col start" data-ignore>
      <details class="all-filters col start" data-ignore>
         <summary>Filters</summary>
         <?php
         $this->renderSearch();
@@ -624,7 +640,7 @@
            $this->renderColumnSelector();
         }
         ?>
      </div>
      </details>
      <?php
   }
@@ -1111,7 +1127,7 @@
      }
      ob_start();
      ?>
      <div class="item-actions">
      <div class="item-actions row btw abs">
         <?php
         foreach ($this->itemActions as $action) {
            $config = $this->defaultItemActions[$action];
@@ -1583,7 +1599,6 @@
               $temp = array_filter($fields, function ($field) {
                  return in_array($field, $this->timelineUniqueFields);
               }, ARRAY_FILTER_USE_KEY);
               $config = [
                  'type'      => 'gallery',
                  'subtype'   => 'timeline',
@@ -1594,6 +1609,9 @@
               $content = '';
               foreach ($fields as $slug=> $field) {
                  if (in_array($slug, $this->timelineSharedFields)) {
                     if (in_array($field['type'], ['taxonomy', 'selector'])) {
                        $field = array_merge($field, $this->taxConfig($field['taxonomy'], $field['label']));
                     }
                     $content .= $this->form->render($slug, null, $field, false, true);
                  }
               }
@@ -1609,6 +1627,9 @@
                  $section = (array_key_exists('section', $config)) ? $config['section'] : 'basic';
                  $tabs[$section]['content'] .= $this->meta->render('form', $n, $config, false, true);
               } else {
                  if (in_array($config['type'], ['taxonomy', 'selector'])) {
                     $config = array_merge($config, $this->taxConfig($config['taxonomy'], $config['label']));
                  }
                  $this->meta->render('form', $n, $config);
               }
            }
@@ -1654,17 +1675,11 @@
               <div class="taxonomies">
                  <?php
                  foreach ($this->taxonomies as $taxonomy => $config) {
                     $this->meta->render(
                        'form',
                     $this->form->renderSelectorField(
                        'bulk-edit-'.$taxonomy,
                        [
                           'type'      => 'taxonomy',
                           'label'     => $config['label'],
                           'taxonomy'  => $taxonomy,
                           'createNew' => jvbUserIsVerified(),
                           'multiple'  => true,
                           'mode'      => 'append'
                        ]
                        '',
                        $this->taxConfig($taxonomy, $config['label']),
                        'taxonomy'
                     );
                  }
                  ?>
@@ -1698,7 +1713,7 @@
   protected function getApplicableStatuses(string $prefix) {
      foreach ($this->statuses as $status) {
         if ($status === 'all' || !in_array($status, $this->allowedStatuses)) {
         if ($status === 'all' || !array_key_exists($status, $this->allowedStatuses)) {
            continue;
         }
         $config = $this->allowedStatuses[$status];
@@ -1721,9 +1736,8 @@
               value="<?= esc_attr($status)?>"
               id="<?=$prefix?>set-<?= esc_attr($status) ?>"
            <?= $disabled?>>
         <label for="<?=$prefix?>set-<?=esc_attr($status)?>">
            <?= jvbDashIcon($config['icon'], ['title' => $config['label']]) ?>
            <span><?= esc_html($config['label'])?></span>
         <label for="<?=$prefix?>set-<?=esc_attr($status)?>" title="<?=esc_html($config['label'])?>">
            <?= jvbDashIcon($config['icon']) ?>
         </label>
         <?php
      }