Current state

This commit is contained in:
2026-02-07 08:23:18 +01:00
commit 0a4372c40d
22479 changed files with 1553543 additions and 0 deletions

3
resources/css/app.css Normal file
View File

@@ -0,0 +1,3 @@
@tailwind base;
@tailwind components;
@tailwind utilities;

7
resources/js/app.js Normal file
View File

@@ -0,0 +1,7 @@
import './bootstrap';
import Alpine from 'alpinejs';
window.Alpine = Alpine;
Alpine.start();

4
resources/js/bootstrap.js vendored Normal file
View File

@@ -0,0 +1,4 @@
import axios from 'axios';
window.axios = axios;
window.axios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest';

View File

@@ -0,0 +1,27 @@
<x-guest-layout>
<div class="mb-4 text-sm text-gray-600">
{{ __('This is a secure area of the application. Please confirm your password before continuing.') }}
</div>
<form method="POST" action="{{ route('password.confirm') }}">
@csrf
<!-- Password -->
<div>
<x-input-label for="password" :value="__('Password')" />
<x-text-input id="password" class="block mt-1 w-full"
type="password"
name="password"
required autocomplete="current-password" />
<x-input-error :messages="$errors->get('password')" class="mt-2" />
</div>
<div class="flex justify-end mt-4">
<x-primary-button>
{{ __('Confirm') }}
</x-primary-button>
</div>
</form>
</x-guest-layout>

View File

@@ -0,0 +1,25 @@
<x-guest-layout>
<div class="mb-4 text-sm text-gray-600">
{{ __('Forgot your password? No problem. Just let us know your email address and we will email you a password reset link that will allow you to choose a new one.') }}
</div>
<!-- Session Status -->
<x-auth-session-status class="mb-4" :status="session('status')" />
<form method="POST" action="{{ route('password.email') }}">
@csrf
<!-- Email Address -->
<div>
<x-input-label for="email" :value="__('Email')" />
<x-text-input id="email" class="block mt-1 w-full" type="email" name="email" :value="old('email')" required autofocus />
<x-input-error :messages="$errors->get('email')" class="mt-2" />
</div>
<div class="flex items-center justify-end mt-4">
<x-primary-button>
{{ __('Email Password Reset Link') }}
</x-primary-button>
</div>
</form>
</x-guest-layout>

View File

@@ -0,0 +1,47 @@
<x-guest-layout>
<!-- Session Status -->
<x-auth-session-status class="mb-4" :status="session('status')" />
<form method="POST" action="{{ route('login') }}">
@csrf
<!-- Email Address -->
<div>
<x-input-label for="email" :value="__('Email')" />
<x-text-input id="email" class="block mt-1 w-full" type="email" name="email" :value="old('email')" required autofocus autocomplete="username" />
<x-input-error :messages="$errors->get('email')" class="mt-2" />
</div>
<!-- Password -->
<div class="mt-4">
<x-input-label for="password" :value="__('Password')" />
<x-text-input id="password" class="block mt-1 w-full"
type="password"
name="password"
required autocomplete="current-password" />
<x-input-error :messages="$errors->get('password')" class="mt-2" />
</div>
<!-- Remember Me -->
<div class="block mt-4">
<label for="remember_me" class="inline-flex items-center">
<input id="remember_me" type="checkbox" class="rounded border-gray-300 text-indigo-600 shadow-sm focus:ring-indigo-500" name="remember">
<span class="ms-2 text-sm text-gray-600">{{ __('Remember me') }}</span>
</label>
</div>
<div class="flex items-center justify-end mt-4">
@if (Route::has('password.request'))
<a class="underline text-sm text-gray-600 hover:text-gray-900 rounded-md focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-indigo-500" href="{{ route('password.request') }}">
{{ __('Forgot your password?') }}
</a>
@endif
<x-primary-button class="ms-3">
{{ __('Log in') }}
</x-primary-button>
</div>
</form>
</x-guest-layout>

View File

@@ -0,0 +1,52 @@
<x-guest-layout>
<form method="POST" action="{{ route('register') }}">
@csrf
<!-- Name -->
<div>
<x-input-label for="name" :value="__('Name')" />
<x-text-input id="name" class="block mt-1 w-full" type="text" name="name" :value="old('name')" required autofocus autocomplete="name" />
<x-input-error :messages="$errors->get('name')" class="mt-2" />
</div>
<!-- Email Address -->
<div class="mt-4">
<x-input-label for="email" :value="__('Email')" />
<x-text-input id="email" class="block mt-1 w-full" type="email" name="email" :value="old('email')" required autocomplete="username" />
<x-input-error :messages="$errors->get('email')" class="mt-2" />
</div>
<!-- Password -->
<div class="mt-4">
<x-input-label for="password" :value="__('Password')" />
<x-text-input id="password" class="block mt-1 w-full"
type="password"
name="password"
required autocomplete="new-password" />
<x-input-error :messages="$errors->get('password')" class="mt-2" />
</div>
<!-- Confirm Password -->
<div class="mt-4">
<x-input-label for="password_confirmation" :value="__('Confirm Password')" />
<x-text-input id="password_confirmation" class="block mt-1 w-full"
type="password"
name="password_confirmation" required autocomplete="new-password" />
<x-input-error :messages="$errors->get('password_confirmation')" class="mt-2" />
</div>
<div class="flex items-center justify-end mt-4">
<a class="underline text-sm text-gray-600 hover:text-gray-900 rounded-md focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-indigo-500" href="{{ route('login') }}">
{{ __('Already registered?') }}
</a>
<x-primary-button class="ms-4">
{{ __('Register') }}
</x-primary-button>
</div>
</form>
</x-guest-layout>

View File

@@ -0,0 +1,39 @@
<x-guest-layout>
<form method="POST" action="{{ route('password.store') }}">
@csrf
<!-- Password Reset Token -->
<input type="hidden" name="token" value="{{ $request->route('token') }}">
<!-- Email Address -->
<div>
<x-input-label for="email" :value="__('Email')" />
<x-text-input id="email" class="block mt-1 w-full" type="email" name="email" :value="old('email', $request->email)" required autofocus autocomplete="username" />
<x-input-error :messages="$errors->get('email')" class="mt-2" />
</div>
<!-- Password -->
<div class="mt-4">
<x-input-label for="password" :value="__('Password')" />
<x-text-input id="password" class="block mt-1 w-full" type="password" name="password" required autocomplete="new-password" />
<x-input-error :messages="$errors->get('password')" class="mt-2" />
</div>
<!-- Confirm Password -->
<div class="mt-4">
<x-input-label for="password_confirmation" :value="__('Confirm Password')" />
<x-text-input id="password_confirmation" class="block mt-1 w-full"
type="password"
name="password_confirmation" required autocomplete="new-password" />
<x-input-error :messages="$errors->get('password_confirmation')" class="mt-2" />
</div>
<div class="flex items-center justify-end mt-4">
<x-primary-button>
{{ __('Reset Password') }}
</x-primary-button>
</div>
</form>
</x-guest-layout>

View File

@@ -0,0 +1,31 @@
<x-guest-layout>
<div class="mb-4 text-sm text-gray-600">
{{ __('Thanks for signing up! Before getting started, could you verify your email address by clicking on the link we just emailed to you? If you didn\'t receive the email, we will gladly send you another.') }}
</div>
@if (session('status') == 'verification-link-sent')
<div class="mb-4 font-medium text-sm text-green-600">
{{ __('A new verification link has been sent to the email address you provided during registration.') }}
</div>
@endif
<div class="mt-4 flex items-center justify-between">
<form method="POST" action="{{ route('verification.send') }}">
@csrf
<div>
<x-primary-button>
{{ __('Resend Verification Email') }}
</x-primary-button>
</div>
</form>
<form method="POST" action="{{ route('logout') }}">
@csrf
<button type="submit" class="underline text-sm text-gray-600 hover:text-gray-900 rounded-md focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-indigo-500">
{{ __('Log Out') }}
</button>
</form>
</div>
</x-guest-layout>

View File

@@ -0,0 +1,62 @@
@php
/**
* Legacy browse-categories view ported from oldSite/pages/browse-categories.page.php
* Variables: $categories (collection), $fixName (callable)
*/
@endphp
@extends('layouts.legacy')
@section('content')
<div class="effect2">
<div class="page-heading">
<h1 class="page-header">Browse Categories</h1>
<p>List of all categories at Skinbase</p>
</div>
</div>
@if (class_exists('\App\Banner'))
<?php \App\Banner::ShowResponsiveAd(); ?>
@endif
@foreach ($contentTypes as $ct)
<div class="panel panel-skinbase effect2">
<div class="panel-heading">
<h2 class="panel-title">{{ $ct->name }}</h2>
</div>
<div class="panel-body">
<p>{!! $ct->description ?? '' !!}</p>
@php
$roots = $categoriesByType[$ct->slug] ?? $ct->rootCategories ?? collect();
@endphp
@if ($roots->isEmpty())
<div class="alert alert-info">No categories for this content type.</div>
@else
<ul class="browseList" style="list-style:none;padding:0;margin:0;">
@foreach ($roots as $category)
<li style="display:block;margin-bottom:8px;">
<h4>{{ $category->name }}</h4>
<p>{!! $category->description !!}</p>
<ul style="list-style:none;padding:0;margin:0;">
@foreach ($category->subcategories as $subcategory)
@php
$picture = $subcategory->image ?: "../cfolder15.gif";
$subcategoryName = $subcategory->name;
$subcategoryUrl = $subcategory->url;
@endphp
<li style="width:19%;display:inline-block;vertical-align:top;">
<img src="/gfx/icons/{{ $picture }}" width="15" height="15" alt="{{ $subcategoryName }}" />
<a href="{{ $subcategoryUrl }}" title="{{ $subcategoryName }}">{!! $subcategoryName !!}</a>
</li>
@endforeach
</ul>
</li>
@endforeach
</ul>
@endif
</div>
</div>
@endforeach
@endsection

View File

@@ -0,0 +1,3 @@
<svg viewBox="0 0 316 316" xmlns="http://www.w3.org/2000/svg" {{ $attributes }}>
<path d="M305.8 81.125C305.77 80.995 305.69 80.885 305.65 80.755C305.56 80.525 305.49 80.285 305.37 80.075C305.29 79.935 305.17 79.815 305.07 79.685C304.94 79.515 304.83 79.325 304.68 79.175C304.55 79.045 304.39 78.955 304.25 78.845C304.09 78.715 303.95 78.575 303.77 78.475L251.32 48.275C249.97 47.495 248.31 47.495 246.96 48.275L194.51 78.475C194.33 78.575 194.19 78.725 194.03 78.845C193.89 78.955 193.73 79.045 193.6 79.175C193.45 79.325 193.34 79.515 193.21 79.685C193.11 79.815 192.99 79.935 192.91 80.075C192.79 80.285 192.71 80.525 192.63 80.755C192.58 80.875 192.51 80.995 192.48 81.125C192.38 81.495 192.33 81.875 192.33 82.265V139.625L148.62 164.795V52.575C148.62 52.185 148.57 51.805 148.47 51.435C148.44 51.305 148.36 51.195 148.32 51.065C148.23 50.835 148.16 50.595 148.04 50.385C147.96 50.245 147.84 50.125 147.74 49.995C147.61 49.825 147.5 49.635 147.35 49.485C147.22 49.355 147.06 49.265 146.92 49.155C146.76 49.025 146.62 48.885 146.44 48.785L93.99 18.585C92.64 17.805 90.98 17.805 89.63 18.585L37.18 48.785C37 48.885 36.86 49.035 36.7 49.155C36.56 49.265 36.4 49.355 36.27 49.485C36.12 49.635 36.01 49.825 35.88 49.995C35.78 50.125 35.66 50.245 35.58 50.385C35.46 50.595 35.38 50.835 35.3 51.065C35.25 51.185 35.18 51.305 35.15 51.435C35.05 51.805 35 52.185 35 52.575V232.235C35 233.795 35.84 235.245 37.19 236.025L142.1 296.425C142.33 296.555 142.58 296.635 142.82 296.725C142.93 296.765 143.04 296.835 143.16 296.865C143.53 296.965 143.9 297.015 144.28 297.015C144.66 297.015 145.03 296.965 145.4 296.865C145.5 296.835 145.59 296.775 145.69 296.745C145.95 296.655 146.21 296.565 146.45 296.435L251.36 236.035C252.72 235.255 253.55 233.815 253.55 232.245V174.885L303.81 145.945C305.17 145.165 306 143.725 306 142.155V82.265C305.95 81.875 305.89 81.495 305.8 81.125ZM144.2 227.205L100.57 202.515L146.39 176.135L196.66 147.195L240.33 172.335L208.29 190.625L144.2 227.205ZM244.75 114.995V164.795L226.39 154.225L201.03 139.625V89.825L219.39 100.395L244.75 114.995ZM249.12 57.105L292.81 82.265L249.12 107.425L205.43 82.265L249.12 57.105ZM114.49 184.425L96.13 194.995V85.305L121.49 70.705L139.85 60.135V169.815L114.49 184.425ZM91.76 27.425L135.45 52.585L91.76 77.745L48.07 52.585L91.76 27.425ZM43.67 60.135L62.03 70.705L87.39 85.305V202.545V202.555V202.565C87.39 202.735 87.44 202.895 87.46 203.055C87.49 203.265 87.49 203.485 87.55 203.695V203.705C87.6 203.875 87.69 204.035 87.76 204.195C87.84 204.375 87.89 204.575 87.99 204.745C87.99 204.745 87.99 204.755 88 204.755C88.09 204.905 88.22 205.035 88.33 205.175C88.45 205.335 88.55 205.495 88.69 205.635L88.7 205.645C88.82 205.765 88.98 205.855 89.12 205.965C89.28 206.085 89.42 206.225 89.59 206.325C89.6 206.325 89.6 206.325 89.61 206.335C89.62 206.335 89.62 206.345 89.63 206.345L139.87 234.775V285.065L43.67 229.705V60.135ZM244.75 229.705L148.58 285.075V234.775L219.8 194.115L244.75 179.875V229.705ZM297.2 139.625L253.49 164.795V114.995L278.85 100.395L297.21 89.825V139.625H297.2Z"/>
</svg>

After

Width:  |  Height:  |  Size: 3.0 KiB

View File

@@ -0,0 +1,7 @@
@props(['status'])
@if ($status)
<div {{ $attributes->merge(['class' => 'font-medium text-sm text-green-600']) }}>
{{ $status }}
</div>
@endif

View File

@@ -0,0 +1,3 @@
<button {{ $attributes->merge(['type' => 'submit', 'class' => 'inline-flex items-center px-4 py-2 bg-red-600 border border-transparent rounded-md font-semibold text-xs text-white uppercase tracking-widest hover:bg-red-500 active:bg-red-700 focus:outline-none focus:ring-2 focus:ring-red-500 focus:ring-offset-2 transition ease-in-out duration-150']) }}>
{{ $slot }}
</button>

View File

@@ -0,0 +1 @@
<a {{ $attributes->merge(['class' => 'block w-full px-4 py-2 text-start text-sm leading-5 text-gray-700 hover:bg-gray-100 focus:outline-none focus:bg-gray-100 transition duration-150 ease-in-out']) }}>{{ $slot }}</a>

View File

@@ -0,0 +1,35 @@
@props(['align' => 'right', 'width' => '48', 'contentClasses' => 'py-1 bg-white'])
@php
$alignmentClasses = match ($align) {
'left' => 'ltr:origin-top-left rtl:origin-top-right start-0',
'top' => 'origin-top',
default => 'ltr:origin-top-right rtl:origin-top-left end-0',
};
$width = match ($width) {
'48' => 'w-48',
default => $width,
};
@endphp
<div class="relative" x-data="{ open: false }" @click.outside="open = false" @close.stop="open = false">
<div @click="open = ! open">
{{ $trigger }}
</div>
<div x-show="open"
x-transition:enter="transition ease-out duration-200"
x-transition:enter-start="opacity-0 scale-95"
x-transition:enter-end="opacity-100 scale-100"
x-transition:leave="transition ease-in duration-75"
x-transition:leave-start="opacity-100 scale-100"
x-transition:leave-end="opacity-0 scale-95"
class="absolute z-50 mt-2 {{ $width }} rounded-md shadow-lg {{ $alignmentClasses }}"
style="display: none;"
@click="open = false">
<div class="rounded-md ring-1 ring-black ring-opacity-5 {{ $contentClasses }}">
{{ $content }}
</div>
</div>
</div>

View File

@@ -0,0 +1,9 @@
@props(['messages'])
@if ($messages)
<ul {{ $attributes->merge(['class' => 'text-sm text-red-600 space-y-1']) }}>
@foreach ((array) $messages as $message)
<li>{{ $message }}</li>
@endforeach
</ul>
@endif

View File

@@ -0,0 +1,5 @@
@props(['value'])
<label {{ $attributes->merge(['class' => 'block font-medium text-sm text-gray-700']) }}>
{{ $value ?? $slot }}
</label>

View File

@@ -0,0 +1,78 @@
@props([
'name',
'show' => false,
'maxWidth' => '2xl'
])
@php
$maxWidth = [
'sm' => 'sm:max-w-sm',
'md' => 'sm:max-w-md',
'lg' => 'sm:max-w-lg',
'xl' => 'sm:max-w-xl',
'2xl' => 'sm:max-w-2xl',
][$maxWidth];
@endphp
<div
x-data="{
show: @js($show),
focusables() {
// All focusable element types...
let selector = 'a, button, input:not([type=\'hidden\']), textarea, select, details, [tabindex]:not([tabindex=\'-1\'])'
return [...$el.querySelectorAll(selector)]
// All non-disabled elements...
.filter(el => ! el.hasAttribute('disabled'))
},
firstFocusable() { return this.focusables()[0] },
lastFocusable() { return this.focusables().slice(-1)[0] },
nextFocusable() { return this.focusables()[this.nextFocusableIndex()] || this.firstFocusable() },
prevFocusable() { return this.focusables()[this.prevFocusableIndex()] || this.lastFocusable() },
nextFocusableIndex() { return (this.focusables().indexOf(document.activeElement) + 1) % (this.focusables().length + 1) },
prevFocusableIndex() { return Math.max(0, this.focusables().indexOf(document.activeElement)) -1 },
}"
x-init="$watch('show', value => {
if (value) {
document.body.classList.add('overflow-y-hidden');
{{ $attributes->has('focusable') ? 'setTimeout(() => firstFocusable().focus(), 100)' : '' }}
} else {
document.body.classList.remove('overflow-y-hidden');
}
})"
x-on:open-modal.window="$event.detail == '{{ $name }}' ? show = true : null"
x-on:close-modal.window="$event.detail == '{{ $name }}' ? show = false : null"
x-on:close.stop="show = false"
x-on:keydown.escape.window="show = false"
x-on:keydown.tab.prevent="$event.shiftKey || nextFocusable().focus()"
x-on:keydown.shift.tab.prevent="prevFocusable().focus()"
x-show="show"
class="fixed inset-0 overflow-y-auto px-4 py-6 sm:px-0 z-50"
style="display: {{ $show ? 'block' : 'none' }};"
>
<div
x-show="show"
class="fixed inset-0 transform transition-all"
x-on:click="show = false"
x-transition:enter="ease-out duration-300"
x-transition:enter-start="opacity-0"
x-transition:enter-end="opacity-100"
x-transition:leave="ease-in duration-200"
x-transition:leave-start="opacity-100"
x-transition:leave-end="opacity-0"
>
<div class="absolute inset-0 bg-gray-500 opacity-75"></div>
</div>
<div
x-show="show"
class="mb-6 bg-white rounded-lg overflow-hidden shadow-xl transform transition-all sm:w-full {{ $maxWidth }} sm:mx-auto"
x-transition:enter="ease-out duration-300"
x-transition:enter-start="opacity-0 translate-y-4 sm:translate-y-0 sm:scale-95"
x-transition:enter-end="opacity-100 translate-y-0 sm:scale-100"
x-transition:leave="ease-in duration-200"
x-transition:leave-start="opacity-100 translate-y-0 sm:scale-100"
x-transition:leave-end="opacity-0 translate-y-4 sm:translate-y-0 sm:scale-95"
>
{{ $slot }}
</div>
</div>

View File

@@ -0,0 +1,11 @@
@props(['active'])
@php
$classes = ($active ?? false)
? 'inline-flex items-center px-1 pt-1 border-b-2 border-indigo-400 text-sm font-medium leading-5 text-gray-900 focus:outline-none focus:border-indigo-700 transition duration-150 ease-in-out'
: 'inline-flex items-center px-1 pt-1 border-b-2 border-transparent text-sm font-medium leading-5 text-gray-500 hover:text-gray-700 hover:border-gray-300 focus:outline-none focus:text-gray-700 focus:border-gray-300 transition duration-150 ease-in-out';
@endphp
<a {{ $attributes->merge(['class' => $classes]) }}>
{{ $slot }}
</a>

View File

@@ -0,0 +1,3 @@
<button {{ $attributes->merge(['type' => 'submit', 'class' => 'inline-flex items-center px-4 py-2 bg-gray-800 border border-transparent rounded-md font-semibold text-xs text-white uppercase tracking-widest hover:bg-gray-700 focus:bg-gray-700 active:bg-gray-900 focus:outline-none focus:ring-2 focus:ring-indigo-500 focus:ring-offset-2 transition ease-in-out duration-150']) }}>
{{ $slot }}
</button>

View File

@@ -0,0 +1,11 @@
@props(['active'])
@php
$classes = ($active ?? false)
? 'block w-full ps-3 pe-4 py-2 border-l-4 border-indigo-400 text-start text-base font-medium text-indigo-700 bg-indigo-50 focus:outline-none focus:text-indigo-800 focus:bg-indigo-100 focus:border-indigo-700 transition duration-150 ease-in-out'
: 'block w-full ps-3 pe-4 py-2 border-l-4 border-transparent text-start text-base font-medium text-gray-600 hover:text-gray-800 hover:bg-gray-50 hover:border-gray-300 focus:outline-none focus:text-gray-800 focus:bg-gray-50 focus:border-gray-300 transition duration-150 ease-in-out';
@endphp
<a {{ $attributes->merge(['class' => $classes]) }}>
{{ $slot }}
</a>

View File

@@ -0,0 +1,3 @@
<button {{ $attributes->merge(['type' => 'button', 'class' => 'inline-flex items-center px-4 py-2 bg-white border border-gray-300 rounded-md font-semibold text-xs text-gray-700 uppercase tracking-widest shadow-sm hover:bg-gray-50 focus:outline-none focus:ring-2 focus:ring-indigo-500 focus:ring-offset-2 disabled:opacity-25 transition ease-in-out duration-150']) }}>
{{ $slot }}
</button>

View File

@@ -0,0 +1,3 @@
@props(['disabled' => false])
<input @disabled($disabled) {{ $attributes->merge(['class' => 'border-gray-300 focus:border-indigo-500 focus:ring-indigo-500 rounded-md shadow-sm']) }}>

View File

@@ -0,0 +1,17 @@
<x-app-layout>
<x-slot name="header">
<h2 class="font-semibold text-xl text-gray-800 leading-tight">
{{ __('Dashboard') }}
</h2>
</x-slot>
<div class="py-12">
<div class="max-w-7xl mx-auto sm:px-6 lg:px-8">
<div class="bg-white overflow-hidden shadow-sm sm:rounded-lg">
<div class="p-6 text-gray-900">
{{ __("You're logged in!") }}
</div>
</div>
</div>
</div>
</x-app-layout>

View File

@@ -0,0 +1,36 @@
<!DOCTYPE html>
<html lang="{{ str_replace('_', '-', app()->getLocale()) }}">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="csrf-token" content="{{ csrf_token() }}">
<title>{{ config('app.name', 'Laravel') }}</title>
<!-- Fonts -->
<link rel="preconnect" href="https://fonts.bunny.net">
<link href="https://fonts.bunny.net/css?family=figtree:400,500,600&display=swap" rel="stylesheet" />
<!-- Scripts -->
@vite(['resources/css/app.css', 'resources/js/app.js'])
</head>
<body class="font-sans antialiased">
<div class="min-h-screen bg-gray-100">
@include('layouts.navigation')
<!-- Page Heading -->
@isset($header)
<header class="bg-white shadow">
<div class="max-w-7xl mx-auto py-6 px-4 sm:px-6 lg:px-8">
{{ $header }}
</div>
</header>
@endisset
<!-- Page Content -->
<main>
{{ $slot }}
</main>
</div>
</body>
</html>

View File

@@ -0,0 +1,30 @@
<!DOCTYPE html>
<html lang="{{ str_replace('_', '-', app()->getLocale()) }}">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="csrf-token" content="{{ csrf_token() }}">
<title>{{ config('app.name', 'Laravel') }}</title>
<!-- Fonts -->
<link rel="preconnect" href="https://fonts.bunny.net">
<link href="https://fonts.bunny.net/css?family=figtree:400,500,600&display=swap" rel="stylesheet" />
<!-- Scripts -->
@vite(['resources/css/app.css', 'resources/js/app.js'])
</head>
<body class="font-sans text-gray-900 antialiased">
<div class="min-h-screen flex flex-col sm:justify-center items-center pt-6 sm:pt-0 bg-gray-100">
<div>
<a href="/">
<x-application-logo class="w-20 h-20 fill-current text-gray-500" />
</a>
</div>
<div class="w-full sm:max-w-md mt-6 px-6 py-4 bg-white shadow-md overflow-hidden sm:rounded-lg">
{{ $slot }}
</div>
</div>
</body>
</html>

View File

@@ -0,0 +1,82 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>{{ $page_title ?? 'Skinbase' }}</title>
<meta name="description" content="{{ $page_meta_description ?? '' }}">
<meta name="keywords" content="{{ $page_meta_keywords ?? '' }}">
<meta name="robots" content="index,follow">
<meta name="revisit" content="1 day">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<base href="{{ config('app.url', '//localhost:8000') }}/">
<link rel="shortcut icon" href="/favicon.ico">
<link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css">
<link href="//maxcdn.bootstrapcdn.com/font-awesome/4.2.0/css/font-awesome.min.css" rel="stylesheet">
<link href="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.3/css/select2.min.css" rel="stylesheet">
<link rel="stylesheet" type="text/css" href="/css/style.css">
<link rel="stylesheet" type="text/css" href="/css/custom-legacy.css">
@stack('head')
</head>
<body style="padding-top:60px;">
<div id="fb-root"></div>
@include('legacy.toolbar')
<div class="wrapper">
<div class="col-top main_content">
<div id="main_box_page">
@yield('content')
</div>
{{-- Right sidebar placeholder (legacy layout) --}}
<div id="right_box_page" class="hideme">
@yield('sidebar')
</div>
</div>
<div class="push"></div>
</div>
{{-- Toolbar placeholder --}}
@stack('toolbar')
<footer id="mainFooter">
<p>&copy; 2000 - {{ date('Y') }} by SkinBase.org. All artwork copyrighted to its Author. (Dragon II Edition)</p>
<div class="footer_links">
<a href="/bug-report" title="Inform us about any bugs you found">Bug report</a> :
<a href="/rss-feeds" title="Skinbase RSS Feeds about new Artworks">RSS Feeds</a> :
<a href="/faq" title="Frequently Asked Questions">FAQ</a> :
<a href="/rules" title="Rules and Guidelines">Rules and Guidelines</a> :
<a href="/staff" title="Who is actually behind Skinbase">Staff</a> :
<a href="/privacy" title="Privacy Policy">Privacy Policy</a>
</div>
</footer>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-migrate/1.2.1/jquery-migrate.min.js"></script>
<script src="//maxcdn.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/jquery.isotope/2.2.0/isotope.pkgd.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.3/js/select2.min.js"></script>
<script src="/js/stickysidebar.jquery.min.js"></script>
<script>
if (window.jQuery) {
(function($){
if (typeof $.fn.stick_in_parent === 'undefined') {
if (typeof $.fn.stickySidebar !== 'undefined') {
$.fn.stick_in_parent = function(){
return this.each(function(){ $(this).stickySidebar(); });
};
} else {
$.fn.stick_in_parent = function(){ return this; };
}
}
})(jQuery);
}
</script>
<script src="/js/script.js"></script>
@stack('scripts')
</body>
</html>

View File

@@ -0,0 +1,100 @@
<nav x-data="{ open: false }" class="bg-white border-b border-gray-100">
<!-- Primary Navigation Menu -->
<div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
<div class="flex justify-between h-16">
<div class="flex">
<!-- Logo -->
<div class="shrink-0 flex items-center">
<a href="{{ route('dashboard') }}">
<x-application-logo class="block h-9 w-auto fill-current text-gray-800" />
</a>
</div>
<!-- Navigation Links -->
<div class="hidden space-x-8 sm:-my-px sm:ms-10 sm:flex">
<x-nav-link :href="route('dashboard')" :active="request()->routeIs('dashboard')">
{{ __('Dashboard') }}
</x-nav-link>
</div>
</div>
<!-- Settings Dropdown -->
<div class="hidden sm:flex sm:items-center sm:ms-6">
<x-dropdown align="right" width="48">
<x-slot name="trigger">
<button class="inline-flex items-center px-3 py-2 border border-transparent text-sm leading-4 font-medium rounded-md text-gray-500 bg-white hover:text-gray-700 focus:outline-none transition ease-in-out duration-150">
<div>{{ Auth::user()->name }}</div>
<div class="ms-1">
<svg class="fill-current h-4 w-4" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20">
<path fill-rule="evenodd" d="M5.293 7.293a1 1 0 011.414 0L10 10.586l3.293-3.293a1 1 0 111.414 1.414l-4 4a1 1 0 01-1.414 0l-4-4a1 1 0 010-1.414z" clip-rule="evenodd" />
</svg>
</div>
</button>
</x-slot>
<x-slot name="content">
<x-dropdown-link :href="route('profile.edit')">
{{ __('Profile') }}
</x-dropdown-link>
<!-- Authentication -->
<form method="POST" action="{{ route('logout') }}">
@csrf
<x-dropdown-link :href="route('logout')"
onclick="event.preventDefault();
this.closest('form').submit();">
{{ __('Log Out') }}
</x-dropdown-link>
</form>
</x-slot>
</x-dropdown>
</div>
<!-- Hamburger -->
<div class="-me-2 flex items-center sm:hidden">
<button @click="open = ! open" class="inline-flex items-center justify-center p-2 rounded-md text-gray-400 hover:text-gray-500 hover:bg-gray-100 focus:outline-none focus:bg-gray-100 focus:text-gray-500 transition duration-150 ease-in-out">
<svg class="h-6 w-6" stroke="currentColor" fill="none" viewBox="0 0 24 24">
<path :class="{'hidden': open, 'inline-flex': ! open }" class="inline-flex" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 6h16M4 12h16M4 18h16" />
<path :class="{'hidden': ! open, 'inline-flex': open }" class="hidden" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M6 18L18 6M6 6l12 12" />
</svg>
</button>
</div>
</div>
</div>
<!-- Responsive Navigation Menu -->
<div :class="{'block': open, 'hidden': ! open}" class="hidden sm:hidden">
<div class="pt-2 pb-3 space-y-1">
<x-responsive-nav-link :href="route('dashboard')" :active="request()->routeIs('dashboard')">
{{ __('Dashboard') }}
</x-responsive-nav-link>
</div>
<!-- Responsive Settings Options -->
<div class="pt-4 pb-1 border-t border-gray-200">
<div class="px-4">
<div class="font-medium text-base text-gray-800">{{ Auth::user()->name }}</div>
<div class="font-medium text-sm text-gray-500">{{ Auth::user()->email }}</div>
</div>
<div class="mt-3 space-y-1">
<x-responsive-nav-link :href="route('profile.edit')">
{{ __('Profile') }}
</x-responsive-nav-link>
<!-- Authentication -->
<form method="POST" action="{{ route('logout') }}">
@csrf
<x-responsive-nav-link :href="route('logout')"
onclick="event.preventDefault();
this.closest('form').submit();">
{{ __('Log Out') }}
</x-responsive-nav-link>
</form>
</div>
</div>
</div>
</nav>

View File

@@ -0,0 +1,28 @@
<div class="photo_frame" itemscope itemtype="http://schema.org/Photograph">
<a href="{{ $art->url ?? '#' }}" itemprop="url">
<div class="ribbon gid_{{ $art->gid_num }}" title="{{ $art->category_name ?? '' }}" itemprop="genre">
<span>{{ $art->category_name ?? '' }}</span>
</div>
@php
$img_src = $art->thumb ?? '';
$img_srcset = $art->thumb_srcset ?? '';
@endphp
<img src="{{ $img_src }}" srcset="{{ $img_srcset }}" loading="lazy" decoding="async" alt="{{ e($art->name) }}" class="img-responsive" itemprop="thumbnailUrl">
<div class="details">
<div class="info" itemprop="author">
<span class="fa fa-user"></span> {{ $art->uname ?? '' }}
</div>
<div class="title" itemprop="name">
{{ $art->name }}
</div>
</div>
</a>
{{-- debug thumb links removed to avoid textual output beneath thumbnails --}}
</div>

View File

@@ -0,0 +1,118 @@
@extends('layouts.legacy')
@section('content')
<div class="legacy-artwork">
<div class="row">
<div class="col-md-8">
<div class="effect2" style="max-width:800px">
<a class="artwork-zoom" href="{{ $thumb_file ?? '#' }}" title="{{ $artwork->name }}">
<img src="{{ $thumb_file }}" alt="{{ $artwork->name ?? '' }}" class="img-thumbnail img-responsive">
</a>
</div>
<div style="clear:both;margin-top:10px;">
<img src="/avatar/{{ $artwork->user_id ?? 0 }}/{{ urlencode($artwork->icon ?? '') }}" class="pull-left" style="padding-right:10px;max-height:50px;" alt="Avatar">
<h1 class="page-header">{{ $artwork->name }}</h1>
<p>By <i class="fa fa-user fa-fw"></i> <a href="/profile/{{ $artwork->user_id }}/{{ \Illuminate\Support\Str::slug($artwork->uname) }}" title="Profile of member {{ $artwork->uname }}">{{ $artwork->uname }}</a></p>
<hr>
</div>
@if(!empty($artwork->description))
<div class="panel panel-skinbase">
<div class="panel-body">{!! nl2br(e($artwork->description)) !!}</div>
</div>
@endif
{{-- Comments --}}
@if(!empty($comments) && $comments->count() > 0)
<h3 class="comment-title"><i class="fa fa-comments fa-fw"></i> Comments:</h3>
@foreach($comments as $comment)
<div class="comment_box effect3">
<div class="cb_image">
<a href="/profile/{{ $comment->user_id }}/{{ urlencode($comment->uname) }}">
<img src="/avatar/{{ $comment->user_id }}/{{ urlencode($comment->icon) }}" width="50" height="50" class="comment_avatar" alt="{{ $comment->uname }}">
</a>
</div>
<div class="bubble_comment panel panel-skinbase">
<div class="panel-heading">
<div class="pull-right">{{ \Illuminate\Support\Str::limit($comment->date, 16) }}</div>
<h5 class="panel-title">Comment by: <a href="/profile/{{ $comment->user_id }}/{{ urlencode($comment->uname) }}">{{ $comment->uname }}</a></h5>
</div>
<div class="panel-body">
{!! nl2br(e($comment->description)) !!}
</div>
@if(!empty($comment->signature))
<div class="panel-footer comment-footer">{!! nl2br(e($comment->signature)) !!}</div>
@endif
</div>
</div>
@endforeach
@endif
@auth
<div class="comment_box effect3">
<div class="cb_image">
<a href="/profile/{{ auth()->id() }}/{{ urlencode(auth()->user()->name) }}">
<img src="/avatar/{{ auth()->id() }}/{{ urlencode(auth()->user()->avatar ?? '') }}" class="comment_avatar" width="50" height="50">
</a>
<br>
<a href="/profile/{{ auth()->id() }}/{{ urlencode(auth()->user()->name) }}">{{ auth()->user()->name }}</a>
</div>
<form action="/art/{{ $artwork->id }}" method="post">
@csrf
<div class="bubble_comment panel panel-skinbase">
<div class="panel-heading"><h4 class="panel-title">Write comment</h4></div>
<div class="panel-body">
<textarea name="comment_text" class="form-control" style="width:98%; height:120px;"></textarea><br>
</div>
<div class="panel-footer">
<button type="submit" class="btn btn-success">Post comment</button>
</div>
</div>
<input type="hidden" name="artwork_id" value="{{ $artwork->id }}">
<input type="hidden" name="action" value="store_comment">
</form>
</div>
@endauth
</div>
<div class="col-md-4">
<div class="panel panel-default effect3">
<div class="panel-body">
<div class="row">
<div class="col-md-6">
<a class="btn btn-info" style="width:100%;margin-bottom:5px" href="/download/{{ $artwork->id }}" title="Download Full Size Artwork to your computer">
<i class="fa fa-download fa-fw"></i> Download
</a>
</div>
<div class="col-md-6">
@if(auth()->check())
<span class="btn btn-warning addFavourites" style="width:100%" data-artwork_id="{{ $artwork->id }}"><i class="fa fa-heart fa-fw"></i> Add To Favourites</span>
@endif
</div>
</div>
<hr>
<h4 class="panel-title">Details</h4>
<table class="table table-condensed">
<tr><td>Category</td><td class="text-right">{{ $artwork->category_name ?? '' }}</td></tr>
<tr><td>Uptime</td><td class="text-right">{{ \Illuminate\Support\Str::limit($artwork->datum ?? '', 10) }}</td></tr>
<tr><td>Submitted</td><td class="text-right">{{ optional(\Carbon\Carbon::parse($artwork->datum))->format('d.m.Y') }}</td></tr>
<tr><td>Resolution</td><td class="text-right">{{ ($artwork->width ?? '') . 'x' . ($artwork->height ?? '') }}</td></tr>
</table>
<h4 class="panel-title">Statistics</h4>
<table class="table table-condensed">
<tr><td>Views</td><td class="text-right">{{ $artwork->views ?? 0 }}</td></tr>
<tr><td>Downloads</td><td class="text-right">{{ $artwork->dls ?? 0 }} @if(!empty($num_downloads)) <small>({{ $num_downloads }} today)</small>@endif</td></tr>
</table>
<h4 class="panel-title">Social</h4>
<div class="fb-like" data-href="{{ url()->current() }}" data-send="true" data-width="450" data-show-faces="true"></div>
</div>
</div>
</div>
</div>
</div>
@endsection

View File

@@ -0,0 +1,45 @@
@extends('layouts.legacy')
@php
use Illuminate\Support\Str;
@endphp
@section('content')
<div class="container-fluid legacy-page">
@php
// legacy responsive ad block
\App\Banner::ShowResponsiveAd();
@endphp
<div class="effect2 page-header-wrap">
<header class="page-heading">
<h1 class="page-header">Browse Artworks</h1>
<p>List of all uploaded Artworks - <strong>Skins</strong>, <strong>Photography</strong> and <strong>Wallpapers</strong>.</p>
</header>
</div>
@if ($artworks->count())
<div class="container_photo gallery_box">
@foreach ($artworks as $art)
@include('legacy._artwork_card', ['art' => $art])
@endforeach
</div>
@else
<div class="panel panel-default effect2">
<div class="panel-heading"><strong>No Artworks Yet</strong></div>
<div class="panel-body">
<p>Once uploads arrive they will appear here. Check back soon.</p>
</div>
</div>
@endif
<div class="paginationMenu text-center">
{{-- Use paginator's default view (cursor vs length-aware) to avoid missing $elements in bootstrap view --}}
{{ $artworks->withQueryString()->links() }}
</div>
</div>
@endsection
@push('scripts')
<script src="/js/legacy-gallery-init.js"></script>
@endpush

View File

@@ -0,0 +1,52 @@
@extends('layouts.legacy')
@section('content')
<div class="container-fluid legacy-page">
<div class="effect2 page-header-wrap">
<header class="page-heading">
<h1 class="page-header">Browse Categories</h1>
<p>Select a category to view its artworks.</p>
</header>
</div>
<div class="row">
@forelse ($contentTypes as $ct)
<div class="col-sm-12">
<div class="panel panel-default effect2">
<div class="panel-heading"><strong>{{ $ct->name }}</strong></div>
<div class="panel-body">
<p>{!! $ct->description ?? 'Browse artworks by content type.' !!}</p>
@forelse ($ct->roots as $cat)
@php
$name = $cat->category_name ?? '';
$subs = $subgroups[$cat->category_id] ?? collect();
@endphp
<div class="legacy-root-category">
<h4>{{ $name }}</h4>
<ul class="browseList">
@forelse ($subs as $sub)
@php $picture = $sub->picture ?? 'cfolder15.gif'; @endphp
<li style="width:19%">
<img src="/gfx/icons/{{ $picture }}" width="15" height="15" border="0" alt="{{ $sub->category_name }}" />
<a href="/{{ $name }}/{{ Str::slug($sub->category_name) }}/{{ $sub->category_id }}" title="{{ $sub->category_name }}">{{ $sub->category_name }}</a>
</li>
@empty
<li class="text-muted">No subcategories</li>
@endforelse
</ul>
</div>
@empty
<div class="alert alert-info">No categories for this content type.</div>
@endforelse
</div>
</div>
</div>
@empty
<div class="col-xs-12">
<div class="alert alert-info">No content types available.</div>
</div>
@endforelse
</div>
</div>
@endsection

View File

@@ -0,0 +1,78 @@
@extends('layouts.legacy')
@php
use App\Banner;
@endphp
@section('content')
<div class="container-fluid legacy-page category-wrapper">
@php Banner::ShowResponsiveAd(); @endphp
<div id="category-artworks">
<div class="effect2 page-header-wrap">
<header class="page-heading">
<div class="category-display"><i class="fa fa-bars fa-fw"></i></div>
<div id="location_bar">
<a href="/{{ $contentType->slug }}" title="{{ $contentType->name }}">{{ $contentType->name }}</a>
@foreach ($category->breadcrumbs as $crumb)
&raquo; <a href="{{ $crumb->url }}" title="{{ $crumb->name }}">{{ $crumb->name }}</a>
@endforeach
:
</div>
<h1 class="page-header">{{ $category->name }}</h1>
<p style="clear:both">{!! $category->description ?? ($contentType->name . ' artworks on Skinbase.') !!}</p>
</header>
</div>
@if ($artworks->count())
<div class="container_photo gallery_box">
@foreach ($artworks as $art)
@include('legacy._artwork_card', ['art' => $art])
@endforeach
</div>
@else
<div class="panel panel-default effect2">
<div class="panel-heading"><strong>No Artworks Yet</strong></div>
<div class="panel-body">
<p>Once uploads arrive they will appear here. Check back soon.</p>
</div>
</div>
@endif
<div class="paginationMenu text-center">
{{ $artworks->withQueryString()->links('pagination::bootstrap-4') }}
</div>
</div>
<div id="category-list">
<div id="artwork_subcategories">
<div class="category-toggle"><i class="fa fa-bars fa-fw"></i></div>
<h5 class="browse_categories">Main Categories:</h5>
<ul>
@foreach ($rootCategories as $root)
<li>
<a href="{{ $root->url }}" title="{{ $root->name }}"><i class="fa fa-photo fa-fw"></i> {{ $root->name }}</a>
</li>
@endforeach
</ul>
<h5 class="browse_categories">Browse Subcategories:</h5>
<ul class="scrollContent" data-mcs-theme="dark">
@foreach ($subcategories as $sub)
@php $selected = $sub->id === $category->id ? 'selected_group' : ''; @endphp
<li class="subgroup {{ $selected }}">
<a href="{{ $sub->url }}">{{ $sub->name }}</a>
</li>
@endforeach
</ul>
</div>
</div>
</div>
@endsection
@push('scripts')
<script src="/js/legacy-gallery-init.js"></script>
@endpush

View File

@@ -0,0 +1,81 @@
@extends('layouts.legacy')
@php
use Illuminate\Support\Str;
use App\Banner;
@endphp
@section('content')
<div class="container-fluid legacy-page category-wrapper">
@php Banner::ShowResponsiveAd(); @endphp
<div id="category-artworks">
<div class="effect2 page-header-wrap">
<header class="page-heading">
<div class="category-display"><i class="fa fa-bars fa-fw"></i></div>
@if (!empty($category->rootid) && $category->rootid > 0)
<div id="location_bar">
<a href="/{{ $category->category_name }}/{{ $category->category_id }}">{{ $category->category_name }}</a>
@if (!empty($category->rootid))
&raquo;
<a href="/{{ $group }}/{{ Str::slug($category->category_name) }}/{{ $category->category_id }}">{{ $category->category_name }}</a>
@endif
:
</div>
@endif
<h1 class="page-header">{{ $category->category_name }}</h1>
<p style="clear:both">{!! $category->description ?? ($group . ' artworks on Skinbase.') !!}</p>
</header>
</div>
@if ($artworks->count())
<div class="container_photo gallery_box">
@foreach ($artworks as $art)
@include('legacy._artwork_card', ['art' => $art])
@endforeach
</div>
@else
<div class="panel panel-default effect2">
<div class="panel-heading"><strong>No Artworks Yet</strong></div>
<div class="panel-body">
<p>Once uploads arrive they will appear here. Check back soon.</p>
</div>
</div>
@endif
<div class="paginationMenu text-center">
{{ $artworks->withQueryString()->links('pagination::bootstrap-4') }}
</div>
</div>
<div id="category-list">
<div id="artwork_subcategories">
<div class="category-toggle"><i class="fa fa-bars fa-fw"></i></div>
<h5 class="browse_categories">Main Categories:</h5>
<ul>
<li><a href="/Photography/3" title="Stock Photography"><i class="fa fa-photo fa-fw"></i> Photography</a></li>
<li><a href="/Wallpapers/2" title="Desktop Wallpapers"><i class="fa fa-photo fa-fw"></i> Wallpapers</a></li>
<li><a href="/Skins/1" title="Skins for Applications"><i class="fa fa-photo fa-fw"></i> Skins</a></li>
<li><a href="/Other/4" title="Other Artworks"><i class="fa fa-photo fa-fw"></i> Other</a></li>
</ul>
<h5 class="browse_categories">Browse Subcategories:</h5>
<ul class="scrollContent" data-mcs-theme="dark">
@foreach ($subcategories as $sub)
@php $selected = $sub->category_id == $category->category_id ? 'selected_group' : ''; @endphp
<li class="subgroup {{ $selected }}">
<a href="/{{ $group }}/{{ Str::slug($sub->category_name) }}/{{ $sub->category_id }}">{{ $sub->category_name }}</a>
</li>
@endforeach
</ul>
</div>
</div>
</div>
@endsection
@push('scripts')
<script src="/js/legacy-gallery-init.js"></script>
@endpush

View File

@@ -0,0 +1,33 @@
@extends('layouts.legacy')
@section('content')
<div class="container-fluid legacy-page">
<div class="page-heading">
<h1 class="page-header">{{ $page_title }}</h1>
</div>
<br>
<div class="mb-3">{!! $adHtml !!}</div>
<div class="panel panel-skinbase effect2">
<div class="panel-body">
{!! $chatHtml !!}
</div>
</div>
<ul class="smileyList">
@foreach ($smileys as $smiley)
@php
$codeJs = json_encode($smiley->code);
$imgSrc = '/gfx/smiles/' . rawurlencode($smiley->picture ?? '');
$alt = e($smiley->emotion ?? '');
@endphp
<li>
<img style="cursor:pointer;" onclick="put_smiley_chat({{ $codeJs }}, 'chat_txt');" alt="{{ $alt }}" src="{{ $imgSrc }}">
</li>
@endforeach
</ul>
</div>
@endsection

View File

@@ -0,0 +1,55 @@
@extends('layouts.legacy')
@section('content')
<div class="container-fluid legacy-page category-wrapper">
@php
if (class_exists('\App\Banner')) { \App\Banner::ShowResponsiveAd(); }
@endphp
<div id="category-artworks">
<div class="effect2 page-header-wrap">
<header class="page-heading">
<div class="category-display"><i class="fa fa-bars fa-fw"></i></div>
<h1 class="page-header">{{ $contentType->name }}</h1>
<p style="clear:both">{!! $page_meta_description ?? ($contentType->name . ' artworks on Skinbase.') !!}</p>
</header>
</div>
<div class="panel panel-default effect2">
<div class="panel-body">
<h4>Main Categories</h4>
<ul class="subcategory-list">
@foreach ($rootCategories as $cat)
<li>
<a href="{{ $cat->url }}">{{ $cat->name }}</a>
</li>
@endforeach
</ul>
</div>
</div>
</div>
<div id="category-list">
<div id="artwork_subcategories">
<div class="category-toggle"><i class="fa fa-bars fa-fw"></i></div>
<h5 class="browse_categories">Main Categories:</h5>
<ul>
@foreach (\App\Models\ContentType::orderBy('id')->get() as $ct)
<li><a href="/{{ $ct->slug }}">{{ $ct->name }}</a></li>
@endforeach
</ul>
<h5 class="browse_categories">Browse Subcategories:</h5>
<ul class="scrollContent" data-mcs-theme="dark">
{{-- Intentionally empty on content-type landing pages --}}
</ul>
</div>
</div>
</div>
@endsection
@push('scripts')
<script src="/js/legacy-gallery-init.js"></script>
@endpush

View File

@@ -0,0 +1,48 @@
@extends('layouts.legacy')
@section('content')
<div class="container-fluid legacy-page">
<div class="effect2 page-header-wrap">
<header class="page-heading">
<h1 class="page-header">Daily Uploads</h1>
<p>List of all latest uploaded Artworks - <strong>Skins</strong>, <strong>Photography</strong> and <strong>Wallpapers</strong> to Skinbase ordered by upload date.</p>
</header>
</div>
<div class="panel panel-default uploads-panel effect2">
<div class="panel-body">
<b>Choose date:</b>
<ul id="recentTab">
@foreach($dates as $i => $d)
<li id="tab-{{ $i+1 }}" data-iso="{{ $d['iso'] }}">{{ $d['label'] }}</li>
@endforeach
</ul>
<div id="myContent">
@include('legacy.partials.daily-uploads-grid', ['arts' => $recent])
</div>
</div>
</div>
</div>
@push('scripts')
<script>
(function(){
function loadDate(iso, tabId){
var el = document.getElementById('myContent');
fetch('/daily-uploads?ajax=1&datum=' + encodeURIComponent(iso))
.then(function(r){ return r.text(); })
.then(function(html){ el.innerHTML = html; });
}
document.getElementById('recentTab').addEventListener('click', function(e){
var li = e.target.closest('li');
if (!li) return;
var iso = li.getAttribute('data-iso');
loadDate(iso, li.id);
});
})();
</script>
@endpush
@endsection

View File

@@ -0,0 +1,49 @@
@extends('layouts.legacy')
@section('content')
<div class="container-fluid legacy-page">
<div class="effect2 page-header-wrap">
<header class="page-heading">
<h1 class="page-header">{{ $page_title ?? 'Featured Artworks' }}</h1>
</header>
<div class="mb-3">
<strong>Show:</strong>
<ul id="recentTab" class="list-inline">
@foreach($artworkTypes as $k => $label)
<li class="list-inline-item">
<a href="/featured-artworks?type={{ (int)$k }}" @if((int)$k === (int)$type) class="active" @endif>{{ $label }}</a>
</li>
@endforeach
</ul>
<br style="clear:both">
</div>
</div>
@if($artworks)
<div class="container_photo gallery_box">
@foreach($artworks as $art)
@php
$card = (object) [
'url' => url('/art/' . ($art->id ?? '') . '/' . \Illuminate\Support\Str::slug($art->name ?? '')),
'thumb' => $art->thumb_url ?? '/gfx/sb_join.jpg',
'thumb_srcset' => $art->thumb_srcset ?? null,
'name' => $art->name ?? '',
'uname' => $art->uname ?? 'Unknown',
'gid_num' => $art->gid_num ?? 0,
'category_name' => $art->category_name ?? '',
];
@endphp
@include('legacy._artwork_card', ['art' => $card])
@endforeach
</div>
@else
<p class="text-muted">No artworks found.</p>
@endif
<div class="paginationMenu text-center">
@if($artworks){{ $artworks->withQueryString()->links('pagination::bootstrap-4') }}@endif
</div>
</div>
@endsection

View File

@@ -0,0 +1,51 @@
@extends('layouts.legacy')
@php
use Carbon\Carbon;
@endphp
@section('content')
<div class="container-fluid legacy-page">
<div class="effect2 page-header-wrap">
<header class="page-heading">
<h1 class="page-header">Forum</h1>
<p>Latest threads</p>
</header>
</div>
<div class="panel panel-default effect2">
<div class="panel-heading"><strong>Forum Threads</strong></div>
<div class="panel-body">
<div class="table-responsive">
<table class="table table-striped">
<thead>
<tr>
<th>Thread</th>
<th class="text-center">Posts</th>
<th class="text-center">Topics</th>
<th class="text-right">Last Update</th>
</tr>
</thead>
<tbody>
@forelse ($topics as $topic)
<tr>
<td>
<h4 style="margin:0;">
<a href="/forum/{{ $topic->topic_id }}/{{ Str::slug($topic->topic ?? '') }}">{{ $topic->topic }}</a>
</h4>
<div class="text-muted">{!! $topic->discuss !!}</div>
</td>
<td class="text-center">{{ $topic->num_posts ?? 0 }}</td>
<td class="text-center">{{ $topic->num_subtopics ?? 0 }}</td>
<td class="text-right">{{ $topic->last_update ? Carbon::parse($topic->last_update)->format('H:i @ d.m') : '' }}</td>
</tr>
@empty
<tr><td colspan="4">No threads available.</td></tr>
@endforelse
</tbody>
</table>
</div>
</div>
</div>
</div>
@endsection

View File

@@ -0,0 +1,51 @@
@extends('layouts.legacy')
@php
use Carbon\Carbon;
@endphp
@section('content')
<div class="container-fluid legacy-page">
<div class="effect2 page-header-wrap">
<header class="page-heading">
<div class="navigation"><a class="badge" href="/forum">Forum</a></div>
<h1 class="page-header">{{ $topic->topic }}</h1>
@if (!empty($topic->discuss))
<p>{!! $topic->discuss !!}</p>
@endif
</header>
</div>
<div class="panel panel-default effect2">
<div class="panel-heading"><strong>Posts</strong></div>
<div class="panel-body">
@forelse ($posts as $post)
<div class="panel panel-default effect2" style="overflow:hidden;">
<div class="panel-heading clearfix">
<div class="pull-right text-muted">{{ $post->post_date ? Carbon::parse($post->post_date)->format('d.m.Y H:i') : '' }}</div>
<strong>{{ $post->uname ?? 'Anonymous' }}</strong>
</div>
<div class="panel-body" style="display:flex; gap:12px;">
<div style="min-width:52px;">
@if (!empty($post->user_id) && !empty($post->icon))
<img src="/avatar/{{ $post->user_id }}/{{ $post->icon }}" alt="{{ $post->uname }}" width="50" height="50" class="img-thumbnail">
@else
<div class="img-thumbnail" style="width:50px;height:50px;"></div>
@endif
</div>
<div style="flex:1;">
{!! $post->message !!}
</div>
</div>
</div>
@empty
<p>No posts yet.</p>
@endforelse
<div class="paginationMenu text-center">
{{ $posts->withQueryString()->links('pagination::bootstrap-4') }}
</div>
</div>
</div>
</div>
@endsection

View File

@@ -0,0 +1,56 @@
@extends('layouts.legacy')
@php
use Carbon\Carbon;
use Illuminate\Support\Str;
@endphp
@section('content')
<div class="container-fluid legacy-page">
<div class="effect2 page-header-wrap">
<header class="page-heading">
<div class="navigation"><a class="badge" href="/forum">Forum</a></div>
<h1 class="page-header">{{ $topic->topic }}</h1>
@if (!empty($topic->discuss))
<p>{!! $topic->discuss !!}</p>
@endif
</header>
</div>
<div class="panel panel-default effect2">
<div class="panel-heading"><strong>Topics</strong></div>
<div class="panel-body">
<div class="table-responsive">
<table class="table table-striped">
<thead>
<tr>
<th>#</th>
<th>Topic</th>
<th class="text-center">Opened By</th>
<th class="text-right">Posted</th>
</tr>
</thead>
<tbody>
@forelse ($subtopics as $sub)
<tr>
<td>{{ $sub->topic_id }}</td>
<td>
<a href="/forum/{{ $sub->topic_id }}/{{ Str::slug($sub->topic ?? '') }}">{{ $sub->topic }}</a>
<div class="text-muted small">{!! Str::limit(strip_tags($sub->discuss ?? ''), 160) !!}</div>
</td>
<td class="text-center">{{ $sub->uname ?? 'Unknown' }}</td>
<td class="text-right">{{ $sub->last_update ? Carbon::parse($sub->last_update)->format('d.m.Y H:i') : '' }}</td>
</tr>
@empty
<tr><td colspan="4">No topics yet.</td></tr>
@endforelse
</tbody>
</table>
</div>
<div class="paginationMenu text-center">
{{ $subtopics->withQueryString()->links('pagination::bootstrap-4') }}
</div>
</div>
</div>
</div>
@endsection

View File

@@ -0,0 +1,18 @@
@extends('layouts.legacy')
@php
use Illuminate\Support\Str;
use Carbon\Carbon;
use App\Services\LegacyService;
@endphp
@section('content')
<div class="container-fluid legacy-page">
@include('legacy.home.featured')
@include('legacy.home.uploads')
@include('legacy.home.news')
</div>
@endsection

View File

@@ -0,0 +1,46 @@
{{-- Featured row --}}
<div class="row featured-row">
<div class="col-md-4 col-sm-12">
<div class="featured-card effect2">
<div class="card-header">Featured Artwork</div>
<div class="card-body text-center">
<a href="/art/{{ $featured->id }}/{{ Str::slug($featured->name ?? 'artwork') }}" class="thumb-link">
@php
$fthumb = $featured->thumb_url ?? $featured->thumb;
@endphp
<img src="{{ $fthumb }}" class="img-responsive featured-img" alt="{{ $featured->name }}">
</a>
<div class="featured-title">{{ $featured->name }}</div>
<div class="featured-author">by {{ $featured->uname }}</div>
</div>
</div>
</div>
<div class="col-md-4 col-sm-12">
<div class="featured-card effect2">
<div class="card-header">Featured by Members Vote</div>
<div class="card-body text-center">
<a href="/art/{{ $memberFeatured->id }}/{{ Str::slug($memberFeatured->name ?? 'artwork') }}" class="thumb-link">
@php
$mthumb = $memberFeatured->thumb_url ?? $memberFeatured->thumb;
@endphp
<img src="{{ $mthumb }}" class="img-responsive featured-img" alt="{{ $memberFeatured->name }}">
</a>
<div class="featured-title">{{ $memberFeatured->name }}</div>
<div class="featured-author">by {{ $memberFeatured->uname }}</div>
</div>
</div>
</div>
<div class="col-md-4 col-sm-12">
<div class="featured-card join-card effect2">
<div class="card-header">Join to Skinbase World</div>
<div class="card-body text-center">
<a href="{{ route('register') }}" title="Join Skinbase">
<img src="/gfx/sb_join.jpg" alt="Join SkinBase Community" class="img-responsive join-img center-block">
</a>
<div class="join-text">Join to Skinbase and be part of our great community! We have big collection of high quality Photography, Wallpapers and Skins for popular applications.</div>
</div>
</div>
</div>
</div>

View File

@@ -0,0 +1,80 @@
{{-- News and forum columns --}}
<div class="row news-row">
<div class="col-sm-6">
@forelse ($forumNews as $item)
<div class="panel panel-skinbase effect2">
<div class="panel-heading"><h4 class="panel-title">{{ $item->topic }}</h4></div>
<div class="panel-body">
<div class="text-muted news-head">
Written by {{ $item->uname }} on {{ Carbon::parse($item->post_date)->format('j F Y \@ H:i') }}
</div>
{!! Str::limit(strip_tags($item->preview ?? ''), 240, '...') !!}
<br>
<a class="clearfix btn btn-xs btn-info" href="/forum/{{ $item->topic_id }}/{{ Str::slug($item->topic ?? '') }}" title="{{ strip_tags($item->topic) }}">More</a>
</div>
</div>
@empty
<p>No forum news available.</p>
@endforelse
</div>
<div class="col-sm-6">
@forelse ($ourNews as $news)
<div class="panel panel-skinbase effect2">
<div class="panel-heading"><h3 class="panel-title">{{ $news->headline }}</h3></div>
<div class="panel-body">
<div class="text-muted news-head">
<i class="fa fa-user"></i> {{ $news->uname }}
<i class="fa fa-calendar"></i> {{ Carbon::parse($news->create_date)->format('j F Y \@ H:i') }}
<i class="fa fa-info"></i> {{ $news->category_name }}
<i class="fa fa-info"></i> {{ $news->views }} reads
<i class="fa fa-comment"></i> {{ $news->num_comments }} comments
</div>
@if (!empty($news->picture))
@php $nid = floor($news->news_id / 100); @endphp
<div class="col-md-4">
<img src="/archive/news/{{ $nid }}/{{ $news->picture }}" class="img-responsive" alt="{{ $news->headline }}">
</div>
<div class="col-md-8">
{!! $news->preview !!}
</div>
@else
{!! $news->preview !!}
@endif
<a class="clearfix btn btn-xs btn-info text-white" href="/news/{{ $news->news_id }}/{{ Str::slug($news->headline ?? '') }}">More</a>
</div>
</div>
@empty
<p>No news available.</p>
@endforelse
{{-- Site info --}}
<div class="panel panel-default">
<div class="panel-heading"><strong>Info</strong></div>
<div class="panel-body">
<h4>Photography, Wallpapers and Skins... Thats Skinbase</h4>
<p>Skinbase is the site dedicated to <strong>Photography</strong>, <strong>Wallpapers</strong> and <strong>Skins</strong> for <u>popular applications</u> for every major operating system like Windows, Mac OS X, Linux, iOS and Android</p>
<em>Our members every day uploads new artworks to our site, so don&apos;t hesitate and check Skinbase frequently for updates. We also have forum where you can discuss with other members with anything.</em>
<p>On the site toolbar you can click on Categories and start browsing our atwork (<i>photo</i>, <i>desktop themes</i>, <i>pictures</i>) and of course you can <u>download</u> them for free!</p>
<p>We are also active on all major <b>social</b> sites, find us there too</p>
</div>
</div>
{{-- Latest forum activity --}}
<div class="panel panel-default activity-panel">
<div class="panel-heading"><strong>Latest Forum Activity</strong></div>
<div class="panel-body">
<div class="list-group effect2">
@forelse ($latestForumActivity as $topic)
<a class="list-group-item" href="/forum/{{ $topic->topic_id }}/{{ Str::slug($topic->topic ?? '') }}">
{{ $topic->topic }} <span class="badge badge-info">{{ $topic->numPosts }}</span>
</a>
@empty
<p>No recent forum activity.</p>
@endforelse
</div>
</div>
</div>
</div>
</div>

View File

@@ -0,0 +1,12 @@
<div class="gallery-grid">
@foreach ($latestUploads as $upload)
<div class="thumb-card effect2">
@php
$t = \App\Services\ThumbnailPresenter::present($upload, 'md');
@endphp
<a href="/art/{{ $t['id'] }}/{{ Str::slug($t['title'] ?: 'artwork') }}" title="{{ $t['title'] }}" class="thumb-link">
<img src="{{ $t['url'] }}" @if(!empty($t['srcset'])) srcset="{{ $t['srcset'] }}" @endif alt="{{ $t['title'] }}" class="img-responsive">
</a>
</div>
@endforeach
</div> <!-- end .gallery-grid -->

View File

@@ -0,0 +1,97 @@
@extends('layouts.legacy')
@section('content')
<div class="container-fluid legacy-page">
<div class="effect2 page-header-wrap">
<header class="page-heading">
<h1 class="page-header">Interview</h1>
<p>{{ $ar->headline ?? '' }}</p>
<div style="location_bar">
<a href="/interviews" class="btn btn-xs btn-default" title="List of all Interviews"><i class="fa fa-list fa-fw"></i> Interviews List</a>
</div>
</header>
</div>
<div class="row">
<div class="col-md-9">
<div class="panel panel-default">
<div class="panel-body">
<h1 class="skinTitle">{{ $ar->headline }}</h1>
<div>{!! $ar->tekst !!}</div>
</div>
</div>
<h2 class="skinTitle">User Comments</h2>
@foreach($comments as $comment)
@php
$local_date = date('j.F.y @ H:i:s', strtotime($comment->datum));
$user_id = $comment->user_id ?? null;
@endphp
<table width="100%" cellspacing="1" cellpadding="1" class="MojText" border="0" style="background:#eee;">
<tr>
<td rowspan="3" valign="top" width="100" style="background:#fff">
@if(!empty($comment->user_id) && !empty($comment->icon))
<div align="center"><a href="/profile/{{ $comment->user_id }}"><img src="/avatar/{{ $comment->user_id }}/{{ \Illuminate\Support\Str::slug($comment->author ?? '') }}" width="50" height="50" border="0" alt="" /></a></div>
@endif
<br/>Posted by: <b><a href="/profile/{{ $comment->user_id ?? '' }}">{{ $comment->author }}</a></b><br/>
Posts: {{ $postCounts[$comment->author] ?? 0 }}
<div align="center"><img src="/gfx/member_stars/{{ $comment->user_type ?? 0 }}.jpg" title="" /></div>
</td>
<td valign="top" height="10" style="background:#eee">&nbsp;{{ $local_date }}</td>
</tr>
<tr>
<td height="50" style="background:#fff;padding-left:13px; padding-right:3px;">{!! $comment->tekst !!}</td>
</tr>
<tr>
<td valign="bottom" align="center" height="10" style="background:#fff;">
@if(!empty($comment->signature))
{!! nl2br(e($comment->signature)) !!}
@endif
</td>
</tr>
</table>
<br />
@endforeach
@php
$status = $_SESSION['web_login']['status'] ?? false;
$user_type = $_SESSION['web_login']['user_type'] ?? 0;
@endphp
@if(!$status || $user_type < 2)
<h1>Please login first</h1>
@else
<h2 class="skinTitle">Write comment</h2>
<form action="{{ url()->current() }}" method="post">
@csrf
<textarea name="comment" style="width:98%; height:215px;" class="textarea"></textarea><br />
<input type="hidden" name="interview_id" value="{{ $ar->id }}">
<input type="hidden" name="action" value="store">
<button type="submit" class="btn btn-success">Submit</button>
</form>
@endif
</div>
<div class="col-md-3">
<div style="margin-left:4px; float:right;width:300px;border-left :dotted 1px #eee; padding-left:10px;">
<br/><br/>
@php \App\Banner::ShowBanner300x250(); @endphp
<br/><br/>
@if(!empty($ar->username))
@php $username = DB::connection('legacy')->table('users')->where('uname', $ar->username)->value('uname'); @endphp
<div class="interviewGuy">{{ $username }} Gallery (random order):</div><br/>
@foreach($artworks as $artwork)
@php $nid = (int)($artwork->id / 100); @endphp
<a href="/art/{{ $artwork->id }}/{{ \Illuminate\Support\Str::slug($artwork->name ?? '') }}">
<img src="/files/archive/shots/{{ $nid }}/{{ $artwork->picture }}" alt="" style="max-width:100%;" />
</a>
<br/><br/>
@endforeach
@endif
</div>
</div>
</div>
</div>
@endsection

View File

@@ -0,0 +1,41 @@
@extends('layouts.legacy')
@section('content')
<div class="container-fluid legacy-page">
<div class="effect2 page-header-wrap">
<header class="page-heading">
<h1 class="page-header">{{ $page_title ?? 'Interviews' }}</h1>
<p>List of interviews and their authors.</p>
</header>
</div>
<div class="mb-3">
@php \App\Banner::ShowResponsiveAd(); @endphp
</div>
<div class="panel panel-default">
<div class="panel-body">
<table class="table table-bordered table-striped">
<tbody>
@foreach($interviews as $interview)
<tr>
<td style="width:60px;">
@if(!empty($interview->icon))
<a href="/profile/{{ $interview->user_id }}/{{ \Illuminate\Support\Str::slug($interview->uname ?? '') }}">
<img src="/avatar/{{ $interview->user_id }}/{{ $interview->icon }}" width="50" height="50" alt="">
</a>
@else
<img src="/gfx/avatar.jpg" alt="">
@endif
</td>
<td>
<a href="/interview/{{ $interview->id }}/{{ \Illuminate\Support\Str::slug($interview->headline ?? '') }}">{{ $interview->headline }}</a>
</td>
</tr>
@endforeach
</tbody>
</table>
</div>
</div>
</div>
@endsection

View File

@@ -0,0 +1,41 @@
@extends('layouts.legacy')
@section('content')
<div class="container-fluid legacy-page">
<div class="effect2 page-header-wrap">
<header class="page-heading">
<h1 class="page-header">Latest Artworks</h1>
<p>List of recently uploaded Artworks - <strong>Skins</strong>, <strong>Photography</strong> and <strong>Wallpapers</strong>.</p>
</header>
</div>
<div class="panel panel-default uploads-panel effect2">
<div class="panel-body">
<div class="gallery-grid">
@if($artworks)
@foreach($artworks as $art)
<div class="thumb-card effect2">
@if (!empty($art->category_name))
<div class="ribbon gid_{{ $art->gid_num ?? 0 }}" title="{{ $art->category_name }}"><span>{{ $art->category_name }}</span></div>
@endif
<a href="/art/{{ $art->id }}/{{ Str::slug($art->name ?? '') }}" class="thumb-link" title="{{ $art->name }}">
<img src="{{ $art->thumb_url ?? '/gfx/sb_join.jpg' }}" @if(!empty($art->thumb_srcset)) srcset="{{ $art->thumb_srcset }}" @endif alt="{{ $art->name }}" class="img-responsive" loading="lazy" decoding="async">
</a>
<div class="thumb-meta">
<div class="thumb-title">{{ $art->name }}</div>
<div class="thumb-author text-muted">by {{ $art->uname ?? 'Unknown' }}</div>
</div>
</div>
@endforeach
@else
<p class="text-muted">No artworks found.</p>
@endif
</div>
</div>
</div>
<div class="paginationMenu text-center">
@if($artworks){{ $artworks->withQueryString()->links('pagination::bootstrap-4') }}@endif
</div>
</div>
@endsection

View File

@@ -0,0 +1,55 @@
@extends('layouts.legacy')
@section('content')
<div class="container-fluid legacy-page">
<div class="effect2 page-header-wrap">
<header class="page-heading">
<h1 class="page-header">{{ $page_title }}</h1>
<p>List of artwork with latest comments received.</p>
</header>
</div>
<div class="masonry">
@foreach ($comments as $comment)
<div class="masonry_item col-sm-6 col-md-4">
<div class="comment_box effect3">
<div class="cb_image">
<a href="/profile/{{ $comment->commenter_id }}/{{ rawurlencode($comment->uname) }}">
<img src="/avatar/{{ (int)$comment->commenter_id }}/{{ rawurlencode($comment->uname) }}" width="50" height="50" class="comment_avatar" alt="{{ $comment->uname }}">
</a>
</div>
<div class="bubble_comment panel panel-skinbase">
<div class="panel-heading">
<div class="pull-right">{{
\Carbon\Carbon::parse($comment->datetime)->diffForHumans() }}
</div>
<h5 class="panel-title">Comment by: <a href="/profile/{{ $comment->commenter_id }}/{{ rawurlencode($comment->uname) }}">{{ $comment->uname }}</a></h5>
</div>
<div class="panel-body">
<div class="comment_box_image">
<a href="/art/{{ $comment->id }}/{{ $comment->artwork_slug }}">
<img src="{{ $comment->thumb }}" alt="{{ $comment->name }}" class="img-thumbnail img-responsive">
</a>
</div>
<div class="comment_text mt-2">
{!! nl2br(e($comment->comment_description)) !!}
</div>
@if (!empty($comment->signature))
<div class="panel-footer comment-footer mt-2">
{!! nl2br(e($comment->signature)) !!}
</div>
@endif
</div>
</div>
</div>
</div>
@endforeach
</div>
<div class="paginationMenu text-center">
{{ $comments->links('pagination::bootstrap-4') }}
</div>
</div>
@endsection

View File

@@ -0,0 +1,57 @@
@extends('layouts.legacy')
@section('content')
<div class="container-fluid legacy-page">
<div class="effect2 page-header-wrap">
<header class="page-heading">
<h1 class="page-header">{{ $page_title }}</h1>
<p>List of users who post the most comments in the current month.</p>
</header>
</div>
<div class="container-main">
<div class="panel panel-default effect2">
<div class="panel-body">
<table class="table table-bordered table-striped table-hover">
<thead>
<tr>
<th>Thumb</th>
<th>Name</th>
<th>Level</th>
<th>Country</th>
<th>Comments</th>
</tr>
</thead>
<tbody>
@foreach ($rows as $row)
<tr>
<td width="50" class="text-center">
<a href="/profile/{{ (int)$row->user_id }}/{{ rawurlencode($row->uname) }}">
<img src="/avatar/{{ (int)$row->user_id }}/{{ rawurlencode($row->uname) }}" width="30" alt="{{ $row->uname }}">
</a>
</td>
<td>
<a href="/profile/{{ (int)$row->user_id }}/{{ rawurlencode($row->uname) }}">{{ $row->uname }}</a>
</td>
<td width="100" class="text-center">
<img src="/gfx/member_stars/{{ (int)$row->user_type }}.gif" alt="level">
</td>
<td width="100" class="text-center">
@if (!empty($row->country_flag))
<img width="20" title="{{ $row->country_name }}" src="/gfx/flags/{{ rawurlencode($row->country_flag) }}" alt="{{ $row->country_name }}">
@endif
</td>
<td width="100" class="text-center">{{ (int)$row->num_comments }}</td>
</tr>
@endforeach
</tbody>
</table>
<div class="paginationMenu text-center">
{{ $rows->withQueryString()->links('pagination::bootstrap-4') }}
</div>
</div>
</div>
</div>
</div>
@endsection

View File

@@ -0,0 +1,77 @@
@extends('layouts.legacy')
@section('content')
<div class="container-fluid legacy-page">
<div class="page-heading">
<h1 class="page-header">{{ $news->headline ?? 'News' }}</h1>
</div>
<br>
<div class="panel panel-info">
<div class="panel-heading">
<i class="fa fa-user"></i>
<a href="/profile/{{ $news->user_id ?? '' }}/{{ Str::slug($news->uname ?? '') }}">{{ $news->uname ?? 'Unknown' }}</a>
<i class="fa fa-calendar"></i>
{{ date('j.F.y @ H:i:s', strtotime($news->create_date ?? now())) }}
</div>
<div class="panel-body">
<h1 class="panel-title" style="font-size:26px;color:#000;">{!! nl2br(e($news->headline ?? '')) !!}</h1>
<br>
<p>{!! html_entity_decode(stripslashes($news->content ?? '')) !!}</p>
</div>
</div>
<h3 class="lead">User Comments:</h3>
@foreach($comments as $ar)
<div class="panel panel-default">
<div class="panel-heading">
<i class="fa fa-user"></i>
<a href="/profile/{{ $ar->user_id ?? '' }}/{{ Str::slug($ar->uname ?? '') }}">{{ $ar->uname ?? 'Unknown' }}</a>
<i class="fa fa-calendar"></i>
{{ date('j.F.y @ H:i:s', strtotime($ar->posted ?? now())) }}
</div>
<div class="panel-body">
@if(!empty($ar->icon))
<div style="float:right;padding-left:20px;">
<a href="/profile/{{ $ar->user_id ?? '' }}/{{ Str::slug($ar->uname ?? '') }}">
<img src="/avatar/{{ $ar->user_id ?? '' }}/{{ $ar->icon ?? '' }}" width="50" height="50" alt="">
</a>
</div>
@endif
<div>{!! nl2br(e($ar->message ?? '')) !!}</div>
@if(!empty($ar->signature))
<div class="label label-info">{!! nl2br(e($ar->signature)) !!}</div>
@endif
</div>
</div>
@endforeach
{{-- Comment form (legacy) --}}
@php
$status = $_SESSION['web_login']['status'] ?? false;
$user_type = $_SESSION['web_login']['user_type'] ?? 0;
@endphp
@if(!$status && $user_type < 2)
<div class="alert alert-warning"><i class="fa fa-warning"></i> You have to login to write comment</div>
@else
<div class="panel panel-default">
<div class="panel-heading"><i class="fa fa-comment"></i> Write comment</div>
<div class="panel-body">
<form action="/news/{{ $news->news_id ?? '' }}/{{ Str::slug($news->headline ?? '') }}" method="post" class="form">
@csrf
<textarea name="comment" style="width:100%; height:215px;" class="tinymce"></textarea><br>
<input type="hidden" name="news_id" value="{{ $news->news_id ?? '' }}">
<input type="hidden" name="confirm" value="true">
<button type="submit" class="btn btn-success">Post Comment</button>
</form>
</div>
</div>
@endif
</div>
@endsection

View File

@@ -0,0 +1,14 @@
@if($arts && count($arts))
<div class="container_photo gallery_box">
@foreach($arts as $art)
<div class="photo_frame">
<a href="/art/{{ $art->id }}/{{ \Illuminate\Support\Str::slug($art->name ?? '') }}">
<img src="{{ $art->thumb }}" srcset="{{ $art->thumb_srcset }}" loading="lazy" decoding="async" alt="{{ $art->name }}" class="img-responsive">
</a>
</div>
@endforeach
</div>
<br style="clear:both"><br>
@else
<p class="text-muted">No uploads for this date.</p>
@endif

View File

@@ -0,0 +1,12 @@
@extends('layouts.legacy')
@section('content')
<div class="container" style="padding-top:20px;">
<div class="panel panel-default effect2">
<div class="panel-heading"><strong>{{ $title ?? 'Legacy Page' }}</strong></div>
<div class="panel-body">
<p>This legacy page is not yet migrated. Navigation works; content will be implemented soon.</p>
</div>
</div>
</div>
@endsection

View File

@@ -0,0 +1,45 @@
@extends('layouts.legacy')
@section('content')
<div class="container-fluid legacy-page">
<div class="effect2 page-header-wrap">
<header class="page-heading">
<h1 class="page-header">Profile: {{ $user->uname }}</h1>
<p>{{ $user->real_name ?? '' }}</p>
</header>
</div>
<div class="row">
<div class="col-md-8">
<div class="panel panel-default effect2">
<div class="panel-heading"><strong>Newest Artworks</strong></div>
<div class="panel-body">
<div class="gallery-grid">
@foreach($artworks as $art)
<div class="thumb-card effect2">
<a href="/art/{{ $art->id }}/{{ Str::slug($art->name ?? '') }}" class="thumb-link">
<img src="{{ $art->thumb }}" srcset="{{ $art->thumb_srcset }}" alt="{{ $art->name }}" class="img-responsive" loading="lazy" decoding="async">
</a>
<div class="thumb-meta">
<div class="thumb-title">{{ $art->name }}</div>
</div>
</div>
@endforeach
</div>
</div>
</div>
</div>
<div class="col-md-4">
<div class="panel panel-default effect2">
<div class="panel-heading"><strong>User</strong></div>
<div class="panel-body">
<img src="/avatar/{{ (int)$user->user_id }}/{{ rawurlencode($user->icon ?? '') }}" class="img-responsive" style="max-width:120px;" alt="{{ $user->uname }}">
<h3>{{ $user->uname }}</h3>
<p>{{ $user->about_me ?? '' }}</p>
</div>
</div>
</div>
</div>
</div>
@endsection

View File

@@ -0,0 +1,34 @@
@extends('layouts.legacy')
@section('content')
<div class="container-fluid legacy-page">
<div class="effect2 page-header-wrap">
<header class="page-heading">
<h1 class="page-header">{{ $page_title ?? 'Today in History' }}</h1>
<p>List of featured Artworks on this day in history of Skinbase.</p>
</header>
</div>
<div class="panel panel-default uploads-panel effect2">
<div class="panel-body">
<div class="container_photo gallery_box">
@if($artworks && $artworks->count())
@foreach($artworks as $ar)
<div class="photo_frame">
<a href="/art/{{ $ar->id }}/{{ \Illuminate\Support\Str::slug($ar->name ?? '') }}">
<img src="{{ $ar->thumb_url ?? '/gfx/sb_join.jpg' }}" @if(!empty($ar->thumb_srcset)) srcset="{{ $ar->thumb_srcset }}" @endif loading="lazy" decoding="async" alt="{{ $ar->name }}">
</a>
</div>
@endforeach
@else
<p class="text-muted">No featured artworks found for today in history.</p>
@endif
</div>
</div>
</div>
<div class="paginationMenu text-center">
@if($artworks){{ $artworks->withQueryString()->links('pagination::bootstrap-4') }}@endif
</div>
</div>
@endsection

View File

@@ -0,0 +1,182 @@
<nav class="navbar yamm navbar-skinbase navbar-fixed-top" role="navigation">
<div class="container-fluid">
<div class="navbar-header">
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#mainToolbarNavCollapse">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a href="/" class="navbar-brand sb_toolbarLogo" title="SkinBase">SkinBase</a>
</div>
<div class="collapse navbar-collapse" id="mainToolbarNavCollapse">
<form class="hidden-xs navbar-form navbar-left" action="/search" method="get" id="search_box">
<input type="text" name="q" value="{{ request('q') }}">
<input type="hidden" name="group" value="all">
<button type="submit"><i class="fa fa-search fa-fw"></i></button>
</form>
<ul class="nav navbar-nav">
<li class="dropdown yamm-fw">
<a href="#" class="dropdown-toggle c-white" data-toggle="dropdown" data-hover="dropdown" data-close-others="true">
<i class="fa fa-cloud"></i> Browse <i class="fa fa-angle-down"></i>
</a>
<ul class="dropdown-menu">
<li>
<div class="yamm-content">
<div class="row">
<div class="col-xs-6 col-sm-3 col-md-3 menu_box">
<i class="fa fa-archive fa-fw"></i> Browse Artworks:<br>
<div class="divider"></div>
<ul class="submenu">
<li><a href="/browse"><i class="fa fa-cloud fa-fw"></i> All Artworks</a></li>
<li><a href="/photography"><i class="fa fa-photo fa-fw"></i> Photography</a></li>
<li><a href="/wallpapers"><i class="fa fa-photo fa-fw"></i> Wallpapers</a></li>
<li><a href="/skins"><i class="fa fa-photo fa-fw"></i> Skins</a></li>
<li><a href="/other"><i class="fa fa-photo fa-fw"></i> Other</a></li>
<li><a href="/featured-artworks"><i class="fa fa-trophy fa-fw"></i> Featured</a></li>
</ul>
</div>
<div class="col-xs-6 col-sm-3 col-md-3">
<i class="fa fa-eye fa-fw"></i> View:<br>
<div class="divider"></div>
<ul class="submenu">
<li><a href="/forum"><i class="fa fa-comments fa-fw"></i> Forum</a></li>
<li><a href="/chat"><i class="fa fa-comments fa-fw"></i> Chat</a></li>
<li><a href="/browse-categories"><i class="fa fa-cloud fa-fw"></i> Categories</a></li>
<li><a href="/latest-artworks"><i class="fa fa-trophy fa-fw"></i> Latest Uploads</a></li>
<li><a href="/daily-uploads"><i class="fa fa-trophy fa-fw"></i> Recent Uploads</a></li>
<li><a href="/today-in-history"><i class="fa fa-trophy fa-fw"></i> Today in History</a></li>
</ul>
</div>
<div class="col-xs-6 col-sm-3 col-md-3">
<i class="fa fa-users fa-fw"></i> Authors:<br>
<div class="divider"></div>
<ul class="submenu">
<li><a href="/interviews"><i class="fa fa-users fa-fw"></i> Interviews</a></li>
<li><a href="/Members/MembersPhotos/545"><i class="fa fa-users fa-fw"></i> Members Photos</a></li>
<li><a href="/top-authors"><i class="fa fa-users fa-fw"></i> Top Authors</a></li>
<li><a href="/latest-comments"><i class="fa fa-bar-chart fa-fw"></i> Latest Comments</a></li>
<li><a href="/monthly-commentators"><i class="fa fa-bar-chart fa-fw"></i> Monthly Top Comments</a></li>
</ul>
</div>
<div class="col-xs-6 col-sm-3 col-md-3">
<i class="fa fa-bar-chart fa-fw"></i> Statistics:<br>
<div class="divider"></div>
<ul class="submenu">
<li><a href="/today-downloads"><i class="fa fa-bar-chart fa-fw"></i> Today Downloads</a></li>
<li><a href="/top-favourites"><i class="fa fa-bar-chart fa-fw"></i> Top Favourites</a></li>
</ul>
</div>
</div>
</div>
</li>
</ul>
</li>
<li class="dropdown">
<a href="#" class="dropdown-toggle c-white" data-toggle="dropdown" data-hover="dropdown" data-close-others="true">
<i class="fa fa-list-ul"></i> Categories <i class="fa fa-angle-down"></i>
</a>
<ul class="dropdown-menu">
<li><a href="/photography"><i class="fa fa-camera"></i> &nbsp; Photography</a></li>
<li><a href="/wallpapers"><i class="fa fa-desktop"></i> &nbsp; Wallpapers</a></li>
<li><a href="/skins"><i class="fa fa-eye"></i> &nbsp; Skins</a></li>
<li><a href="/other"><i class="fa fa-file-o"></i> &nbsp; Others</a></li>
<li role="separator" class="divider"></li>
<li><a href="/browse-categories" class="btn_category"><i class="fa fa-list"></i> &nbsp; Categories List</a></li>
</ul>
</li>
</ul>
<ul class="nav navbar-nav navbar-right">
@auth
@php
$userId = auth()->id();
try {
$uploadCount = \Illuminate\Support\Facades\DB::table('artworks')->where('user_id', $userId)->count();
} catch (\Throwable $e) {
$uploadCount = 0;
}
try {
$favCount = \Illuminate\Support\Facades\DB::table('favourites')->where('user_id', $userId)->count();
} catch (\Throwable $e) {
$favCount = 0;
}
try {
$msgCount = \Illuminate\Support\Facades\DB::table('messages')->where('reciever_id', $userId)->whereNull('read_at')->count();
} catch (\Throwable $e) {
$msgCount = 0;
}
try {
$noticeCount = \Illuminate\Support\Facades\DB::table('notification')->where('user_id', $userId)->where('new', 1)->count();
} catch (\Throwable $e) {
$noticeCount = 0;
}
try {
$profile = \Illuminate\Support\Facades\DB::table('user_profiles')->where('user_id', $userId)->first();
$avatar = $profile->avatar ?? null;
} catch (\Throwable $e) {
$avatar = null;
}
$displayName = auth()->user()->name ?: (auth()->user()->username ?? '');
@endphp
<li class="hidden-xs hidden-sm menu_notice">
<a href="/upload" title="Upload new Artwork"><i class="fa fa-upload fa-fw"></i><br> {{ $uploadCount }}</a>
</li>
<li class="hidden-xs hidden-sm menu_notice">
<a href="/favourites/{{ $userId }}/{{ auth()->user()->username ?? '' }}" title="Your Favourite Artworks"><i class="fa fa-heart fa-fw"></i><br> {{ $favCount }}</a>
</li>
<li class="hidden-xs hidden-sm menu_notice">
<a href="/messages" title="Messages"><i class="fa fa-envelope fa-fw"></i><br> {{ $msgCount }}</a>
</li>
<li class="hidden-xs hidden-sm menu_notice">
<a href="/notices" title="Notices"><i class="fa fa-bell"></i><br> {{ $noticeCount }}</a>
</li>
<li class="dropdown">
<a href="#" class="dropdown-toggle c-white" data-toggle="dropdown" data-hover="dropdown" data-close-others="true">
@if($avatar)
<img src="/storage/{{ ltrim($avatar, '/') }}" alt="{{ $displayName }}" width="18">&nbsp;&nbsp;
@endif
<span class="username">{{ $displayName }}</span>
&nbsp;<i class="fa fa-angle-down"></i>
</a>
<ul class="dropdown-menu">
<li><a href="/upload"><i class="fa fa-upload"></i> Upload</a></li>
<li><a href="/manul.php"><i class="fa fa-cloud"></i> Edit Artworks</a></li>
<li role="presentation" class="divider"></li>
<li><a href="/statistics"><i class="fa fa-cog"></i> Statistics</a></li>
<li><a href="/mybuddies.php"><i class="fa fa-cog"></i> My Followes</a></li>
<li><a href="/buddies.php"><i class="fa fa-cog"></i> Who follows me</a></li>
<li role="presentation" class="divider"></li>
<li><a href="/recieved-comments"><i class="fa fa-cog"></i> Received Comments</a></li>
<li><a href="/favourites/{{ $userId }}/{{ auth()->user()->username ?? '' }}"><i class="fa fa-cog"></i> My Favourites</a></li>
<li><a href="/gallery/{{ $userId }}/{{ auth()->user()->username ?? '' }}"><i class="fa fa-cog"></i> My Gallery</a></li>
<li role="presentation" class="divider"></li>
<li><a href="/user"><i class="fa fa-cog"></i> Edit Profile</a></li>
<li><a href="/profile/{{ $userId }}/{{ auth()->user()->username ?? '' }}"><i class="fa fa-cog"></i> View My Profile</a></li>
<li class="dropdown-footer clearfix">
<form method="POST" action="/logout" style="margin:0;">
@csrf
<button type="submit" class="btn btn-link" style="padding: 3px 20px;"> <i class="fa fa-power-off"></i> Logout</button>
</form>
</li>
</ul>
</li>
<li class="hidden-xs hidden-sm menu_chat">
<span class="toggle_menu" title="Chat"><i class="fa fa-weixin fa-lg fa-fw"></i></span>
</li>
@else
<li class="dropdown"><a href="/signup" title="Signup for a new account" class="c-white"><i class="fa fa-unlock fa-fw"></i> Join</a></li>
<li class="dropdown"><a href="/login" title="Login to Skinbase account" class="c-white"><i class="fa fa-sign-in fa-fw"></i> Sign in</a></li>
@endauth
</ul>
</div>
</div>
</nav>

View File

@@ -0,0 +1,117 @@
@extends('layouts.legacy')
@section('content')
<div class="container-fluid legacy-page">
<div class="effect2 page-header-wrap">
<header class="page-heading">
<h1 class="page-header">Top Members</h1>
<p>Statistics of popular and active members at Skinbase</p>
</header>
</div>
<div class="row">
<div class="col-md-6">
<div class="panel panel-default effect2">
<div class="panel-heading"><strong>Most Active Members</strong></div>
<div class="panel-body">
<table class="table table-striped">
<thead>
<tr>
<th colspan="2">Username</th>
<th class="text-right">Uploads</th>
<th class="text-right">Total Downloads</th>
</tr>
</thead>
<tbody>
@foreach($topUsers as $u)
<tr>
<td width="80">
<a href="/profile/{{ $u->user_id }}/{{ \Illuminate\Support\Str::slug($u->uname) }}">
<img src="/avatar/{{ $u->user_id }}/{{ rawurlencode($u->icon ?? '') }}" width="30" height="30" alt="{{ $u->uname }}">
</a>
</td>
<td>
<a href="/profile/{{ $u->user_id }}/{{ \Illuminate\Support\Str::slug($u->uname) }}">{{ $u->uname }}</a>
</td>
<td class="text-right">{{ $u->uploads }}</td>
<td class="text-right">{{ $u->total_downloads }}</td>
</tr>
@endforeach
</tbody>
</table>
</div>
</div>
</div>
<div class="col-md-6">
<div class="panel panel-default effect2">
<div class="panel-heading"><strong>Most Followed Members</strong></div>
<div class="panel-body">
<table class="table table-bordered table-striped">
<thead>
<tr>
<th>Thumb</th>
<th>Name</th>
<th>Followers</th>
</tr>
</thead>
<tbody>
@foreach($topFollowers as $f)
<tr>
<td width="60" align="center">
<a href="/profile/{{ $f->user_id }}/{{ \Illuminate\Support\Str::slug($f->uname) }}">
<img src="/avatar/{{ $f->user_id }}/{{ rawurlencode($f->uname) }}" width="30" alt="{{ $f->uname }}">
</a>
</td>
<td>
<a href="/profile/{{ $f->user_id }}/{{ \Illuminate\Support\Str::slug($f->uname) }}">{{ $f->uname }}</a>
</td>
<td align="center">{{ $f->num }}</td>
</tr>
@endforeach
</tbody>
</table>
</div>
</div>
<div class="panel panel-default effect2">
<div class="panel-heading"><strong>Top Commentators</strong></div>
<div class="panel-body">
<table class="table table-striped table-hover">
<thead>
<tr>
<th>Thumb</th>
<th>Name</th>
<th>Level</th>
<th>Country</th>
<th>Comments</th>
</tr>
</thead>
<tbody>
@foreach($topCommentators as $c)
<tr>
<td width="50" align="center">
<a href="/profile/{{ $c->user_id }}/{{ \Illuminate\Support\Str::slug($c->uname) }}">
<img src="/avatar/{{ $c->user_id }}/{{ rawurlencode($c->uname) }}" width="30" alt="{{ $c->uname }}">
</a>
</td>
<td>
<a href="/profile/{{ $c->user_id }}/{{ \Illuminate\Support\Str::slug($c->uname) }}">{{ $c->uname }}</a>
</td>
<td width="100" align="center"><img src="/gfx/member_stars/{{ $c->user_type }}.gif" alt="level"></td>
<td width="100" align="center">
@if(!empty($c->country_flag))
<img width="20" src="/gfx/flags/{{ rawurlencode($c->country_flag) }}" title="{{ $c->country_name }}">
@endif
</td>
<td width="100" align="center">{{ $c->num_comments }}</td>
</tr>
@endforeach
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
@endsection

View File

@@ -0,0 +1,32 @@
@extends('layouts.legacy')
@section('content')
<div class="container-fluid legacy-page">
<div class="effect2 page-header-wrap">
<header class="page-heading">
<h1 class="page-header">{{ $page_title }}</h1>
<p>Most popular artworks which users added in their favourites</p>
</header>
</div>
@if ($artworks && $artworks->count())
<div class="container_photo gallery_box">
<div class="grid-sizer"></div>
@foreach ($artworks as $art)
@include('legacy._artwork_card', ['art' => $art])
@endforeach
</div>
<div class="paginationMenu text-center">
{{ $artworks->withQueryString()->links('pagination::bootstrap-4') }}
</div>
@else
<div class="panel panel-default effect2">
<div class="panel-heading"><strong>No Artworks Yet</strong></div>
<div class="panel-body">
<p>Once uploads arrive they will appear here. Check back soon.</p>
</div>
</div>
@endif
</div>
@endsection

View File

@@ -0,0 +1,75 @@
@extends('layouts.legacy')
@section('content')
<div class="container">
<h2>Edit Artwork: {{ $artwork->name }}</h2>
<form enctype="multipart/form-data" method="post" action="{{ route('manage.update', $artwork->id) }}">
@csrf
<div class="row">
<div class="col-md-7">
<label class="label-control">Name:</label>
<input type="text" name="name" class="form-control" value="{{ old('name', $artwork->name) }}">
<label class="label-control">Section:</label>
<select name="section" class="form-control">
@foreach($categories as $cat)
<option value="{{ $cat->category_id }}" {{ $cat->category_id == $artwork->category ? 'selected' : '' }}>{{ $cat->category_name }}</option>
@endforeach
</select>
<label class="label-control">Description:</label>
<textarea name="description" class="form-control summernote_lite" style="width:100%;height:100px">{{ old('description', $artwork->description) }}</textarea>
</div>
<div class="col-md-5">
<label class="label-control">Thumbnail</label>
<div style="clear:both;" id="quickPreviewShot">
@if($artwork->picture)
<img src="/storage/uploads/artworks/{{ $artwork->picture }}" class="img-responsive" style="padding:5px;border:solid 1px #999;box-shadow:1px 1px 3px #999">
@else
<div class="alert alert-warning">No thumbnail</div>
@endif
</div>
<hr>
<label class="label-control">Upload new artwork</label><br>
<div class="btn btn-primary ulBtn">
<span class="fa fa-photo"></span>
<input type="file" name="artwork" data-preview_id="quickPreviewShot" class="uploadImage quickThumbShow">
Choose Artwork
</div>
<br style="clear:both;"><br><hr>
<label class="label-control">Attachment file (*.zip)</label><br>
<div class="btn btn-primary ulBtn">
<span class="fa fa-upload"></span>
<input type="file" name="attachment" class="uploadImage">
Choose Attachment
</div>
</div>
</div>
<input type="hidden" name="id" value="{{ $artwork->id }}">
<br>
<button type="submit" class="btn btn-success"><i class="fa fa-save fa-fw"></i> Update Artwork</button>
</form>
</div>
@endsection
@push('scripts')
<script>
$(document).ready(function(){
$('.summernote_lite').summernote({
toolbar: [
['style', ['bold', 'italic', 'underline', 'clear']],
['font', ['strikethrough']],
['fontsize', ['fontsize']],
['color', ['color']],
]
});
});
</script>
@endpush

View File

@@ -0,0 +1,52 @@
@extends('layouts.legacy')
@section('content')
<div class="container">
<h2>Artwork Manager</h2>
@if(session('status'))
<div class="alert alert-success">{{ session('status') }}</div>
@endif
<div id="msgList">
<table class="table table-bordered table-striped table-advanced">
<thead>
<tr>
<th>Modify</th>
<th>Name</th>
<th>Section</th>
<th>Date</th>
<th>#Votes</th>
<th>Rating</th>
<th>Downloads</th>
<th>Zooms</th>
<th>Views</th>
</tr>
</thead>
<tbody>
@foreach($artworks as $ar)
<tr>
<td style="width:80px">
<a href="{{ route('manage.edit', $ar->id) }}" class="btn btn-xs btn-default">Edit</a>
<form method="POST" action="{{ route('manage.destroy', $ar->id) }}" style="display:inline-block;" onsubmit="return confirm('Delete artwork?');">
@csrf
<button class="btn btn-xs btn-danger">Delete</button>
</form>
</td>
<td style="cursor:pointer;" onclick="location.href='{{ route('manage.edit', $ar->id) }}'">{{ $ar->name }}</td>
<td>{{ $ar->categoryRelation->category_name ?? '' }}</td>
<td class="text-center">{{ optional($ar->datum)->format('d.m.Y') ?? (is_string($ar->datum) ? date('d.m.Y', strtotime($ar->datum)) : '') }}</td>
<td class="text-center">{{ $ar->rating_num }}</td>
<td class="text-center">{{ $ar->rating }}</td>
<td class="text-center">{{ $ar->dls }}</td>
<td class="text-center">{{ $ar->zoom }}</td>
<td class="text-center">{{ $ar->views }}</td>
</tr>
@endforeach
</tbody>
</table>
{{ $artworks->links() }}
</div>
</div>
@endsection

View File

@@ -0,0 +1,29 @@
<x-app-layout>
<x-slot name="header">
<h2 class="font-semibold text-xl text-gray-800 leading-tight">
{{ __('Profile') }}
</h2>
</x-slot>
<div class="py-12">
<div class="max-w-7xl mx-auto sm:px-6 lg:px-8 space-y-6">
<div class="p-4 sm:p-8 bg-white shadow sm:rounded-lg">
<div class="max-w-xl">
@include('profile.partials.update-profile-information-form')
</div>
</div>
<div class="p-4 sm:p-8 bg-white shadow sm:rounded-lg">
<div class="max-w-xl">
@include('profile.partials.update-password-form')
</div>
</div>
<div class="p-4 sm:p-8 bg-white shadow sm:rounded-lg">
<div class="max-w-xl">
@include('profile.partials.delete-user-form')
</div>
</div>
</div>
</div>
</x-app-layout>

View File

@@ -0,0 +1,55 @@
<section class="space-y-6">
<header>
<h2 class="text-lg font-medium text-gray-900">
{{ __('Delete Account') }}
</h2>
<p class="mt-1 text-sm text-gray-600">
{{ __('Once your account is deleted, all of its resources and data will be permanently deleted. Before deleting your account, please download any data or information that you wish to retain.') }}
</p>
</header>
<x-danger-button
x-data=""
x-on:click.prevent="$dispatch('open-modal', 'confirm-user-deletion')"
>{{ __('Delete Account') }}</x-danger-button>
<x-modal name="confirm-user-deletion" :show="$errors->userDeletion->isNotEmpty()" focusable>
<form method="post" action="{{ route('profile.destroy') }}" class="p-6">
@csrf
@method('delete')
<h2 class="text-lg font-medium text-gray-900">
{{ __('Are you sure you want to delete your account?') }}
</h2>
<p class="mt-1 text-sm text-gray-600">
{{ __('Once your account is deleted, all of its resources and data will be permanently deleted. Please enter your password to confirm you would like to permanently delete your account.') }}
</p>
<div class="mt-6">
<x-input-label for="password" value="{{ __('Password') }}" class="sr-only" />
<x-text-input
id="password"
name="password"
type="password"
class="mt-1 block w-3/4"
placeholder="{{ __('Password') }}"
/>
<x-input-error :messages="$errors->userDeletion->get('password')" class="mt-2" />
</div>
<div class="mt-6 flex justify-end">
<x-secondary-button x-on:click="$dispatch('close')">
{{ __('Cancel') }}
</x-secondary-button>
<x-danger-button class="ms-3">
{{ __('Delete Account') }}
</x-danger-button>
</div>
</form>
</x-modal>
</section>

View File

@@ -0,0 +1,48 @@
<section>
<header>
<h2 class="text-lg font-medium text-gray-900">
{{ __('Update Password') }}
</h2>
<p class="mt-1 text-sm text-gray-600">
{{ __('Ensure your account is using a long, random password to stay secure.') }}
</p>
</header>
<form method="post" action="{{ route('password.update') }}" class="mt-6 space-y-6">
@csrf
@method('put')
<div>
<x-input-label for="update_password_current_password" :value="__('Current Password')" />
<x-text-input id="update_password_current_password" name="current_password" type="password" class="mt-1 block w-full" autocomplete="current-password" />
<x-input-error :messages="$errors->updatePassword->get('current_password')" class="mt-2" />
</div>
<div>
<x-input-label for="update_password_password" :value="__('New Password')" />
<x-text-input id="update_password_password" name="password" type="password" class="mt-1 block w-full" autocomplete="new-password" />
<x-input-error :messages="$errors->updatePassword->get('password')" class="mt-2" />
</div>
<div>
<x-input-label for="update_password_password_confirmation" :value="__('Confirm Password')" />
<x-text-input id="update_password_password_confirmation" name="password_confirmation" type="password" class="mt-1 block w-full" autocomplete="new-password" />
<x-input-error :messages="$errors->updatePassword->get('password_confirmation')" class="mt-2" />
</div>
<div class="flex items-center gap-4">
<x-primary-button>{{ __('Save') }}</x-primary-button>
@if (session('status') === 'password-updated')
<p
x-data="{ show: true }"
x-show="show"
x-transition
x-init="setTimeout(() => show = false, 2000)"
class="text-sm text-gray-600"
>{{ __('Saved.') }}</p>
@endif
</div>
</form>
</section>

View File

@@ -0,0 +1,64 @@
<section>
<header>
<h2 class="text-lg font-medium text-gray-900">
{{ __('Profile Information') }}
</h2>
<p class="mt-1 text-sm text-gray-600">
{{ __("Update your account's profile information and email address.") }}
</p>
</header>
<form id="send-verification" method="post" action="{{ route('verification.send') }}">
@csrf
</form>
<form method="post" action="{{ route('profile.update') }}" class="mt-6 space-y-6">
@csrf
@method('patch')
<div>
<x-input-label for="name" :value="__('Name')" />
<x-text-input id="name" name="name" type="text" class="mt-1 block w-full" :value="old('name', $user->name)" required autofocus autocomplete="name" />
<x-input-error class="mt-2" :messages="$errors->get('name')" />
</div>
<div>
<x-input-label for="email" :value="__('Email')" />
<x-text-input id="email" name="email" type="email" class="mt-1 block w-full" :value="old('email', $user->email)" required autocomplete="username" />
<x-input-error class="mt-2" :messages="$errors->get('email')" />
@if ($user instanceof \Illuminate\Contracts\Auth\MustVerifyEmail && ! $user->hasVerifiedEmail())
<div>
<p class="text-sm mt-2 text-gray-800">
{{ __('Your email address is unverified.') }}
<button form="send-verification" class="underline text-sm text-gray-600 hover:text-gray-900 rounded-md focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-indigo-500">
{{ __('Click here to re-send the verification email.') }}
</button>
</p>
@if (session('status') === 'verification-link-sent')
<p class="mt-2 font-medium text-sm text-green-600">
{{ __('A new verification link has been sent to your email address.') }}
</p>
@endif
</div>
@endif
</div>
<div class="flex items-center gap-4">
<x-primary-button>{{ __('Save') }}</x-primary-button>
@if (session('status') === 'profile-updated')
<p
x-data="{ show: true }"
x-show="show"
x-transition
x-init="setTimeout(() => show = false, 2000)"
class="text-sm text-gray-600"
>{{ __('Saved.') }}</p>
@endif
</div>
</form>
</section>

File diff suppressed because one or more lines are too long