Jake Vanderwerf
9 days ago ed57c386db34d8693ca75311972d0929ebe5f488
src/drawer-menu/render.php
@@ -1,39 +1 @@
<?php
use JVBase\managers\CacheManager;
use JVBase\ui\Navigation;
$menu_id = $attributes['menuId'] ?? '';
$collapsed = $attributes['collapsed'] ?? true;
// You'd populate this from options, a filter, or however you store menu data
$menu_items = apply_filters('jvbDrawerItems', [], $menu_id);
if (empty($menu_items) || empty($menu_id)) {
   return '<p>Please configure the drawer menu in block settings.</p>';
}
$cache = CacheManager::for('drawer');
$cache->clear();
if (!is_front_page()) {
   $menu_items[] = [
      'text'   => 'Home',
      'url' => home_url(),
      'icon'   => 'house-simple',
   ];
}
$items = array_map(function($item) { return $item['text'];}, $menu_items);
$key = $cache->generateKey($items);
$menu =  $cache->remember($key,
function () use ($menu_items, $menu_id, $collapsed) {
   $menu = new Navigation($menu_id);
   $menu->asDrawer($collapsed)->populateFromArray($menu_items);
   return $menu->render();
});
global $wp;
$current = home_url($wp->request.'/');
echo str_replace($current.'"', $current.'" class="current" aria-current="page"', $menu);