A lot of things

This commit is contained in:
2026-06-16 16:21:43 +02:00
parent 4f9f6c63b3
commit 7e1e26f20b
126 changed files with 7917 additions and 204 deletions

View File

@@ -15,8 +15,14 @@
</div>
<div class="form-gallery form-group level" style="flex:4;">
<template x-for="(image,i) in images" :key="image.key">
<div class="gallery-item">
<div class="gallery-item" :class="{ 'gallery-item--dragging': dragSrcI === i }" draggable="true" @dragstart="dragStart(i)" @dragover="dragOver($event, i)" @dragend="dragEnd()">
<div class="form-image-preview-wrap">
<div class="gallery-drag-handle" title="Drag to reorder">
<i data-lucide="grip-vertical" size="14"></i>
</div>
<span class="gallery-order-badge" x-text="i + 1"></span>
<img :src="image.preview" :alt="image.name">
<button type="button" class="form-image-remove" @click="handleRemoveFile(i)">
X

View File

@@ -1,12 +1,7 @@
<nav id="menu">
<div class="menu-header">
<div class="menu-logo">
RP
</div>
<div class="menu-title">
Romhack Plaza
</div>
<img src="{{ asset('logo/plaza-logo-wide.png') }}">
</div>
<div class="menu-navigation">
@@ -15,7 +10,7 @@
<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'] && !\Auth::guest() )
@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>

View File

@@ -0,0 +1,41 @@
<a href="{{ route('news.show', $news->slug) }}" class="news-card">
<div class="news-card-cover"
style="background-image:
linear-gradient(rgba(0,0,0,0.1), rgba(20,20,20,0.9)),
url('{{ $news->gallery()->first() ? Storage::url($news->gallery()->first()->image) : '' }}')">
@if($news->state !== 'published')
<span class="news-card-state-badge">
@if($news->state === 'pending')
<i data-lucide="clock" size="11"></i> Pending
@elseif($news->state === 'draft')
<i data-lucide="scissors" size="11"></i> Draft
@elseif($news->state === 'hidden')
<i data-lucide="eye-off" size="11"></i> Hidden
@endif
</span>
@endif
</div>
<div class="news-card-body">
<h2 class="news-card-title">{{ $news->title }}</h2>
@if($news->description)
<p class="news-card-excerpt">
{{ Str::limit(strip_tags($news->description), 100) }}
</p>
@endif
<div class="news-card-meta">
@if($news->user_id)
<span><i data-lucide="user" size="12"></i>
<x-xf-username-link :user-id="$news->user_id"/>
</span>
@endif
<span><i data-lucide="calendar" size="12"></i>
{{ $news->created_at->format('M d, Y') }}
</span>
@if($news->gallery->isNotEmpty())
<span><i data-lucide="images" size="12"></i>
{{ $news->gallery->count() }}
</span>
@endif
</div>
</div>
</a>

View File

@@ -0,0 +1,13 @@
<?php /** @var \App\Models\Category $category */ ?>
<div class="form-group">
<select class="form-select" name="category">
<option value="" disabled {{ empty($selected) ? 'selected' : '' }} hidde*>
Select a category...
</option>
@foreach($categories as $category)
<option value="{{ $category->id }}" {{ in_array($category->id, (array) $selected) ? 'selected' : '' }}>
{{ $category->name }}
</option>
@endforeach
</select>
</div>

View File

@@ -32,25 +32,6 @@
</button>
</div>
<div class="settings-separator"></div>
<div class="settings-section">
<div class="settings-section-title">
<i data-lucide="layout-grid" size="14"></i>
Entries per page
</div>
<div class="settings-perpage">
<template x-for="n in $store.settings.entriesPerPage" :key="n">
<button
type="button"
class="settings-perpage-btn"
:class="{ 'active': $store.settings.currentEntriesPerPage == n }"
@click="$store.settings.entriesPerPageChanged(n)"
x-text="n"
></button>
</template>
</div>
<div class="settings-separator"></div>
@auth
@@ -67,6 +48,4 @@
</div>
@endauth
</div>
</div>

View File

@@ -2,6 +2,7 @@
nsfw: null,
state: '{{ old('submit-state', $defaultState) }}',
deleteOpen: false,
featuredOpen: false,
init(){
this.$watch('nsfw', (val) => {
if( val && this.state === 'published' ) {
@@ -11,6 +12,13 @@
}
}" x-init="init()">
@if($isEdit)
@if(!$news && $entry && !$entry->featured )
<div>
<button type="button" id="entry-featured-button" class="btn" @click="featuredOpen = true; $dispatch('modal:opened')">
<i data-lucide="star" size="13"></i> Featured
</button>
</div>
@endif
<div>
<button type="button" class="btn danger" @click="deleteOpen = true; $dispatch('modal:opened')">
<i data-lucide="trash-2" size="13"></i> Delete
@@ -35,6 +43,46 @@
</select>
@if($isEdit)
@if(!$news && $entry && !$entry->featured )
<template x-teleport="body">
<div
class="modal-overlay"
x-cloak
x-show="featuredOpen"
x-transition.opacity
@click.self="featuredOpen = false"
@keydown.escape.window="featuredOpen = false"
@modal:opened.window="refreshIcons($el)"
>
<div class="modal-window" x-show="featuredOpen" x-transition>
<div class="modal-header">
<span class="modal-title">Request as featured</span>
<button type="button" class="modal-close" @click="featuredOpen = false">
<i data-lucide="x" size="20"></i>
</button>
</div>
<div class="modal-body" id="entry-featured-body">
<p style="margin-bottom: 1.5rem; color: var(--text, #333);">
Please do not overuse this feature. Send only one request at a time.
</p>
<div class="queue-mod-actions" id="entry-featured-actions">
<button type="button" class="btn" @click="featuredOpen = false">
Cancel
</button>
<button type="button" class="btn" @click="Submission().requestFeatured({{ $entry->id }})">
<i data-lucide="star" size="14"></i>
Request as featured
</button>
</div>
</div>
</div>
</div>
</template>
@endif
<template x-teleport="body">
<div
class="modal-overlay"
@@ -58,7 +106,7 @@
Are you sure you want to delete this entry? This action cannot be undone.
</p>
<form action="{{ route('submit.destroy', ['section' => $section, 'entry' => $entry ]) }}" method="POST">
<form action="{{ $news ? route('news.destroy', [ 'news' => $news ] ) : route('submit.destroy', ['section' => $section, 'entry' => $entry ]) }}" method="POST">
@csrf
@method('DELETE')

View File

@@ -46,7 +46,7 @@
{{-- Users --}}
@can('create','\App\Models\Entry')
<a href="#" class="btn">
<a href="{{ route('submit.index') }}" class="btn">
<i data-lucide="hard-drive-upload" size="18"></i>
</a>
@endcan
@@ -78,7 +78,7 @@
@include('components.conversations')
</div>
@endif
<div x-data style="position: relative;" x-init="$store.settings.xfUrls = { 'default': '{{ xfStyleVariationUrl( 'default' ) }}', 'alternate': '{{ xfStyleVariationUrl( 'alternate' ) }}' }">
<div x-data style="position: relative;" x-init="$store.settings.xfUrls = { 'default': '{{ xfStyleVariationUrl( 'default' ) }}', 'alternate': '{{ xfStyleVariationUrl( 'alternate' ) }}' }; $store.settings.currentTheme = '{{ userTheme() }}'">
<button
type="button"
class="btn"