Migration complete
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
<div class="filter-group" x-data="{open:false,search:''}">
|
||||
<div class="filter-group" x-data="{open:false}">
|
||||
<div class="filter-title-row" @click="open = !open">
|
||||
<div class="filter-title-left">
|
||||
<h4 class="filter-title">{{ $title }}</h4>
|
||||
@@ -18,11 +18,11 @@
|
||||
<div x-show="open" x-transition>
|
||||
<div class="internal-filter-search">
|
||||
<i data-lucide="search" size="13"></i>
|
||||
<input type="text" x-model="search" placeholder="Search...">
|
||||
<input type="text" wire:model.live.debounce.300ms="{{ $searchModel }}" placeholder="Search...">
|
||||
</div>
|
||||
<div class="filter-options">
|
||||
@foreach($items as $item)
|
||||
<label class="filter-option" x-show="search.length >= 3 && '{{strtolower($item->{$nameProperty}) }}'.includes(search.toLowerCase())">
|
||||
<label class="filter-option">
|
||||
<input type="checkbox" wire:model.live="{{ $model }}" value="{{ $item->{$idProperty} }}">
|
||||
{{ $item->{$nameProperty} }}
|
||||
</label>
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
<div class="filter-group" x-data="{open: false,search:''}">
|
||||
<div class="filter-group" x-data="{open: false}">
|
||||
<div class="filter-title-row" @click="open = !open">
|
||||
<div class="filter-title-left">
|
||||
<h4 class="filter-title">{{ $title }}</h4>
|
||||
@@ -14,11 +14,11 @@
|
||||
<div x-show="open" x-transition>
|
||||
<div class="internal-filter-search">
|
||||
<i data-lucide="search" size="13"></i>
|
||||
<input type="text" x-model="search" placeholder="Search...">
|
||||
<input type="text" wire:model.live.debounce.300ms="{{ $searchModel }}" placeholder="Search...">
|
||||
</div>
|
||||
<div class="filter-options">
|
||||
@foreach($items as $item)
|
||||
<label class="filter-option" x-show="search.length >= 3 && '{{strtolower($item->{$nameProperty}) }}'.includes(search.toLowerCase())">
|
||||
<label class="filter-option">
|
||||
<input type="checkbox" wire:model.live="{{ $model }}" value="{{ $item->{$idProperty} }}">
|
||||
{{ $item->{$nameProperty} }}
|
||||
</label>
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
@endif
|
||||
</div>
|
||||
<div class="entry-card-info">
|
||||
<a href="{{ route('entries.show', [ 'section' => $entry->type, 'entry' => $entry ] ) }}" class="entry-card-title">{{ $entry->title }}</a>
|
||||
<a href="{{ route('entries.show', [ 'section' => $entry->type, 'entry' => $entry ] ) }}" class="entry-card-title">{{ $entry->title ?? $entry->complete_title }}</a>
|
||||
<div class="entry-card-author">
|
||||
@forelse( $entry->authors as $author)
|
||||
@if($loop->first)By @endif
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
<div class="block-error">
|
||||
<i data-lucide="{{ $errorArray['icon'] ?? '' }}"></i> {{ sprintf( $errorArray['message'], $message ) }}
|
||||
<i data-lucide="{{ $errorArray['icon'] ?? '' }}"></i> {!! sprintf( $errorArray['message'], $message ) !!}
|
||||
</div>
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
<div x-data="GalleryManager()" x-init="init(@js($oldPaths))">
|
||||
<div x-data="GalleryManager()" x-init="init(@js($oldPaths))" x-ref="gallery-field">
|
||||
<x-form-field-title name="Screenshots" helper="At least 1 Screenshot required, Maximum 20." required="{{ $required ? 'true' : 'false' }}" />
|
||||
<div class="form-group main-image-grid">
|
||||
<div class="form-upload" style="flex:1;" :class="{ 'disabled': isFull }">
|
||||
|
||||
@@ -18,12 +18,11 @@
|
||||
<i data-lucide="x"></i>
|
||||
</button>
|
||||
</div>
|
||||
<div class="language-list" id="languages-group">
|
||||
<div class="language-list" x-ref="languagesGroup" id="languages-group">
|
||||
@foreach( $languages as $language )
|
||||
<label class="language-item" x-show="'{{ strtolower($language->name) }}'.includes(search.toLowerCase())">
|
||||
<input type="checkbox" name="languages[]" value="{{ $language->id }}" x-model="selected" :value="{{ $language->id }}" {{ in_array($language->id, $selected) ? 'checked' : '' }}> {{ $language->name }}
|
||||
</label>
|
||||
@endforeach
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
<div x-data="MainImageManager()" x-init="init('{{$oldPath}}')">
|
||||
|
||||
<div x-data="MainImageManager()" x-init="init('{{$oldPath}}')" x-ref="main-image-field">
|
||||
<x-form-field-title name="Main image" helper="This will show up on the index and on top of the entry. A screenshot or custom cover is prefered else all entries of same game will look the same." required="{{ $required ? 'true' : 'false' }}" />
|
||||
<div class="form-group main-image-grid">
|
||||
<div class="form-upload" style="flex:4;">
|
||||
|
||||
@@ -3,12 +3,7 @@
|
||||
window.mde_{{ $name }} = new EasyMDE({
|
||||
element: $el.querySelector('#field_{{ $name }}'),
|
||||
minHeight: '{{ $minHeight }}',
|
||||
toolbar: {{ Js::from( $toolbar ) }},
|
||||
autosave: {
|
||||
enabled: true,
|
||||
uniqueId: '{{ $name }}',
|
||||
delay: 1000,
|
||||
},
|
||||
toolbar: {{ Js::from( $toolbar ) }}
|
||||
})
|
||||
"
|
||||
>
|
||||
|
||||
@@ -1,41 +0,0 @@
|
||||
<nav id="menu">
|
||||
|
||||
<div class="menu-header">
|
||||
<img src="{{ asset('logo/plaza-logo-wide.png') }}">
|
||||
</div>
|
||||
|
||||
<div class="menu-navigation">
|
||||
|
||||
@foreach( config('menu') as $menu )
|
||||
<div class="menu-group">
|
||||
<div class="menu-group-title">{{ $menu['name'] }}</div>
|
||||
@foreach( $menu['items'] as $item )
|
||||
@if( !isset( $item['requires_auth'] ) || $item['requires_auth'] === true && !\Auth::guest() )
|
||||
<a href="{{ isset($item['xf_route']) ? xfRoute($item['xf_route']) : route($item['route']) }}"
|
||||
@class(['menu-item', 'active' => request()->routeIs( $item['route'] ?? '' )]) >
|
||||
<i data-lucide="{{ $item['icon'] }}"></i><span>{{ $item['name'] }}</span>
|
||||
</a>
|
||||
@endif
|
||||
@endforeach
|
||||
</div>
|
||||
@endforeach
|
||||
|
||||
</div>
|
||||
|
||||
<div class="menu-user">
|
||||
<div class="menu-user-avatar">
|
||||
<x-xen-foro-avatar />
|
||||
</div>
|
||||
<div class="menu-user-info">
|
||||
<span class="username">
|
||||
{{ \Auth::user()?->username ?? "Guest" }}
|
||||
</span>
|
||||
<span class="user_role">
|
||||
<a href="{{ \Auth::guest() ? xfRoute('login') : xfRoute('logout') . '?t=' . xfCsrfToken() }}">
|
||||
{{ \Auth::guest() ? 'Login' : 'Logout' }}
|
||||
</a>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</nav>
|
||||
23
resources/views/components/review-card.blade.php
Normal file
23
resources/views/components/review-card.blade.php
Normal file
@@ -0,0 +1,23 @@
|
||||
<div class="comment-block">
|
||||
<x-xen-foro-avatar :user="$review->user_id" />
|
||||
|
||||
<div class="comment-content">
|
||||
<div class="comment-meta">
|
||||
<span class="comment-author">{{ $review->xenforoUser()?->username }}</span>
|
||||
<span class="comment-separator"></span>
|
||||
<x-review-star-rating :rating="$review->rating" />
|
||||
<span class="comment-separator"></span>
|
||||
<span class="comment-date">{{ $review->created_at->format('Y-m-d') }}</span>
|
||||
@if( $entryShow && $review->entry()->exists() )
|
||||
<span class="comment-separator"></span>
|
||||
<a href="{{ route('entries.show', ['section' => $review->entry?->type, 'entry' => $review->entry ]) }}">{{ $review->entry->complete_title ?? $review->entry->title }}</a>
|
||||
@endif
|
||||
</div>
|
||||
|
||||
<div class="review-title">{{ $review->title }}</div>
|
||||
|
||||
<div class="comment-body markdown-body">
|
||||
{!! $review->description_html !!}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
5
resources/views/components/review-star-rating.blade.php
Normal file
5
resources/views/components/review-star-rating.blade.php
Normal file
@@ -0,0 +1,5 @@
|
||||
<span class="star-rating-display">
|
||||
@for($i = 1; $i <= 5; $i++)
|
||||
<i data-lucide="star" size="13" class="{{ $i <= $rating ? 'star-filled' : 'star-empty' }}"></i>
|
||||
@endfor
|
||||
</span>
|
||||
@@ -4,49 +4,121 @@
|
||||
<i data-lucide="menu"></i>
|
||||
</button>
|
||||
|
||||
<form class="search-bar" action="{{ route('entries.index') }}">
|
||||
<input type="text" name="s" placeholder="Search" />
|
||||
<button type="submit" class="search-button">
|
||||
<i data-lucide="search" size="18" color="var(--text2)"></i>
|
||||
</button>
|
||||
</form>
|
||||
<form id="topbar-search-form" class="search-bar" method="GET">
|
||||
|
||||
<select id="search-scope" class="search-scope-select" name="search_scope">
|
||||
<option value="entries" selected>Entries</option>
|
||||
<option value="news">News</option>
|
||||
<option value="forum">Forum</option>
|
||||
</select>
|
||||
|
||||
<input type="text" id="search-input" placeholder="Search" autocomplete="off">
|
||||
|
||||
<button type="submit" class="search-button">
|
||||
<i data-lucide="search" size="18" color="var(--text2)"></i>
|
||||
</button>
|
||||
</form>
|
||||
|
||||
<script>
|
||||
(function () {
|
||||
const form = document.getElementById('topbar-search-form');
|
||||
const select = document.getElementById('search-scope');
|
||||
const input = document.getElementById('search-input');
|
||||
|
||||
const scopes = {
|
||||
entries: { action: '{{ route('entries.index') }}', param: 's' },
|
||||
news: { action: '{{ route('news.index') }}', param: 's' },
|
||||
forum: {
|
||||
action: '{{ xfRoute('search/2147483647/') }}',
|
||||
param: 'q',
|
||||
extra: { o: 'relevance' },
|
||||
},
|
||||
};
|
||||
|
||||
form.addEventListener('submit', function (e) {
|
||||
e.preventDefault();
|
||||
|
||||
const term = input.value.trim();
|
||||
if (!term) return;
|
||||
|
||||
const cfg = scopes[select.value];
|
||||
const params = new URLSearchParams({ [cfg.param]: term, ...(cfg.extra || {}) });
|
||||
|
||||
window.location = cfg.action + '?' + params.toString();
|
||||
});
|
||||
})();
|
||||
</script>
|
||||
|
||||
<div class="topbar-actions">
|
||||
|
||||
@can('is-admin')
|
||||
@php $topbarAdminSeparator = true; @endphp
|
||||
<a href="{{ config('app.forum_url') . '/admin.php' }}" class="btn">
|
||||
<a href="{{ config('app.forum_url') . '/admin.php' }}" class="btn topbar-admin-btn" title="Admin">
|
||||
<i data-lucide="landmark" size="18"></i>
|
||||
</a>
|
||||
<a href="{{ config('app.url') . '/manage' }}" class="btn">
|
||||
<a href="{{ config('app.url') . '/manage' }}" class="btn topbar-admin-btn" title="Manage">
|
||||
<i data-lucide="shield-cog" size="18"></i>
|
||||
</a>
|
||||
@endcan
|
||||
|
||||
@if( $topbarAdminSeparator )
|
||||
<div class="vertical-separator"></div>
|
||||
<div class="vertical-separator topbar-admin-btn"></div>
|
||||
@endif
|
||||
|
||||
@can('is-mod')
|
||||
@php $topbarModSeparator = true; @endphp
|
||||
<a href="{{ route('modcp.index') }}" class="btn">
|
||||
<a href="{{ route('modcp.index') }}" class="btn topbar-mod-btn" title="Moderation">
|
||||
<i data-lucide="siren" size="18"></i>
|
||||
</a>
|
||||
<a href="{{ xfRoute('approval-queue') }}" class="btn">
|
||||
<a href="{{ xfRoute('approval-queue') }}" class="btn topbar-mod-btn" title="Approvals">
|
||||
<i data-lucide="message-circle-check" size="18"></i>
|
||||
</a>
|
||||
<a href="{{ xfRoute('reports') }}" class="btn">
|
||||
<a href="{{ xfRoute('reports') }}" class="btn topbar-mod-btn" title="Reports">
|
||||
<i data-lucide="triangle-alert" size="18"></i>
|
||||
</a>
|
||||
@endcan
|
||||
|
||||
@if( $topbarModSeparator )
|
||||
<div class="vertical-separator"></div>
|
||||
<div class="vertical-separator topbar-mod-btn"></div>
|
||||
@endif
|
||||
|
||||
{{-- Users --}}
|
||||
<div x-data="{ open: false }" class="topbar-more-container" style="position: relative;">
|
||||
@canany(['is-admin','is-mod'])
|
||||
<button @click="open = !open" @click.outside="open = false" class="btn topbar-btn-more" title="More actions">
|
||||
<i data-lucide="more-vertical" size="18"></i>
|
||||
</button>
|
||||
<div x-show="open" class="topbar-more-menu">
|
||||
@can('is-admin')
|
||||
<a href="{{ config('app.forum_url') . '/admin.php' }}" class="topbar-more-item" title="Admin">
|
||||
<i data-lucide="landmark" size="16"></i>
|
||||
<span>Admin</span>
|
||||
</a>
|
||||
<a href="{{ config('app.url') . '/manage' }}" class="topbar-more-item" title="Manage">
|
||||
<i data-lucide="shield-cog" size="16"></i>
|
||||
<span>Manage</span>
|
||||
</a>
|
||||
@endcan
|
||||
|
||||
@can('is-mod')
|
||||
<a href="{{ route('modcp.index') }}" class="topbar-more-item" title="Moderation">
|
||||
<i data-lucide="siren" size="16"></i>
|
||||
<span>Mod CP</span>
|
||||
</a>
|
||||
<a href="{{ xfRoute('approval-queue') }}" class="topbar-more-item" title="Approvals">
|
||||
<i data-lucide="message-circle-check" size="16"></i>
|
||||
<span>Approval Queue</span>
|
||||
</a>
|
||||
<a href="{{ xfRoute('reports') }}" class="topbar-more-item" title="Reports">
|
||||
<i data-lucide="triangle-alert" size="16"></i>
|
||||
<span>Reports</span>
|
||||
</a>
|
||||
@endcan
|
||||
</div>
|
||||
@endcanany
|
||||
</div>
|
||||
|
||||
@can('create','\App\Models\Entry')
|
||||
<a href="{{ route('submit.index') }}" class="btn">
|
||||
<a href="{{ route('submit.index') }}" class="btn" title="Submit">
|
||||
<i data-lucide="hard-drive-upload" size="18"></i>
|
||||
</a>
|
||||
@endcan
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
<span x-data class="userlink"
|
||||
@mouseenter.debounce.300ms="$store.hovercard.open($el,'{{ route('dynamic.hovercard', ['user_id' => $user?->user_id ?? 0 ]) }}')"
|
||||
@mouseleave="setTimeout(() => { const C = document.querySelector('.hovercard'); if(!C?.matches(':hover')) $store.hovercard.close(); }, 200)"
|
||||
@click="window.location.href = '{{ xfRoute('members/.') . $user?->user_id }}'"
|
||||
>
|
||||
{{ $user->username }}
|
||||
</span>
|
||||
|
||||
Reference in New Issue
Block a user