feat: more work on completing switchover
This commit is contained in:
parent
9a7aa89362
commit
5c133cba56
4
.gitignore
vendored
4
.gitignore
vendored
@ -29,5 +29,7 @@ Homestead.yaml
|
|||||||
Homestead.json
|
Homestead.json
|
||||||
/.vagrant
|
/.vagrant
|
||||||
.phpunit.result.cache
|
.phpunit.result.cache
|
||||||
|
legacypublic
|
||||||
|
migrated_artworks_files.tar.gz
|
||||||
|
migrated_thumbnail_files.tar.gz
|
||||||
site/.yarn/releases/yarn-1.22.19.cjs
|
site/.yarn/releases/yarn-1.22.19.cjs
|
||||||
|
@ -10,6 +10,7 @@ services:
|
|||||||
volumes:
|
volumes:
|
||||||
- ./site:/var/www/html
|
- ./site:/var/www/html
|
||||||
- ./static:/static
|
- ./static:/static
|
||||||
|
#- ./legacypublic:/legacypublic
|
||||||
environment:
|
environment:
|
||||||
TZ: UTC
|
TZ: UTC
|
||||||
PUID: ${UID:-1000}
|
PUID: ${UID:-1000}
|
||||||
@ -22,6 +23,7 @@ services:
|
|||||||
LARAVEL_QUEUE_ENABLED: true
|
LARAVEL_QUEUE_ENABLED: true
|
||||||
LARAVEL_QUEUE_OPTIONS: --timeout=60 --tries=3 redis
|
LARAVEL_QUEUE_OPTIONS: --timeout=60 --tries=3 redis
|
||||||
LARAVEL_SCHEDULE_ENABLED: true
|
LARAVEL_SCHEDULE_ENABLED: true
|
||||||
|
PHP_OPEN_BASEDIR: "/var/www/html:/static"
|
||||||
ports:
|
ports:
|
||||||
- "80:80"
|
- "80:80"
|
||||||
links:
|
links:
|
||||||
|
51
site/app/Console/Commands/AddMissingArtworkIdsToEpisodes.php
Normal file
51
site/app/Console/Commands/AddMissingArtworkIdsToEpisodes.php
Normal file
@ -0,0 +1,51 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Console\Commands;
|
||||||
|
|
||||||
|
use Illuminate\Console\Command;
|
||||||
|
use App\Models\Artwork;
|
||||||
|
use App\Models\Episode;
|
||||||
|
use Illuminate\Support\Facades\DB;
|
||||||
|
|
||||||
|
class AddMissingArtworkIdsToEpisodes extends Command
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* The name and signature of the console command.
|
||||||
|
*
|
||||||
|
* @var string
|
||||||
|
*/
|
||||||
|
protected $signature = 'naart:artwork-to-episodes';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The console command description.
|
||||||
|
*
|
||||||
|
* @var string
|
||||||
|
*/
|
||||||
|
protected $description = 'Command description';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Execute the console command.
|
||||||
|
*/
|
||||||
|
public function handle()
|
||||||
|
{
|
||||||
|
$oldEpisodes = DB::connection('legacy')->select('SELECT * FROM episodes WHERE artwork_id IS NOT NULL AND published = 1');
|
||||||
|
foreach($oldEpisodes as $oldEpisode) {
|
||||||
|
$this->info('Checking old episode ' . $oldEpisode->show_date);
|
||||||
|
$episode = Episode::where('legacy_id', $oldEpisode->id)->first();
|
||||||
|
$artwork = Artwork::where('legacy_id', $oldEpisode->artwork_id)->first();
|
||||||
|
if ($episode && $artwork) {
|
||||||
|
$this->line('Have artwork ' . $artwork->title . ' for episode ' . $episode->title);
|
||||||
|
$episode->artwork_id = $artwork->id;
|
||||||
|
$episode->timestamps = false;
|
||||||
|
if ($episode->isDirty()) {
|
||||||
|
$this->info('I need to update this.');
|
||||||
|
//$episode->save();
|
||||||
|
} else {
|
||||||
|
$this->line('No Change Needed.');
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
$this->error('I am lost.');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
125
site/app/Console/Commands/GetMissingArtworkMovedCommand.php
Normal file
125
site/app/Console/Commands/GetMissingArtworkMovedCommand.php
Normal file
@ -0,0 +1,125 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Console\Commands;
|
||||||
|
|
||||||
|
use Illuminate\Console\Command;
|
||||||
|
use Illuminate\Support\Facades\DB;
|
||||||
|
use Illuminate\Support\Str;
|
||||||
|
use Intervention\Image\Facades\Image;
|
||||||
|
use Illuminate\Support\Facades\Storage;
|
||||||
|
use Carbon\Carbon;
|
||||||
|
use App\Models\User;
|
||||||
|
use App\Models\Artist;
|
||||||
|
use App\Models\Podcast;
|
||||||
|
use App\Models\Episode;
|
||||||
|
use App\Models\Artwork;
|
||||||
|
use ImageOptimizer;
|
||||||
|
|
||||||
|
class GetMissingArtworkMovedCommand extends Command
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* The name and signature of the console command.
|
||||||
|
*
|
||||||
|
* @var string
|
||||||
|
*/
|
||||||
|
protected $signature = 'naart:wrapup';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The console command description.
|
||||||
|
*
|
||||||
|
* @var string
|
||||||
|
*/
|
||||||
|
protected $description = 'Command description';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Execute the console command.
|
||||||
|
*/
|
||||||
|
public function handle()
|
||||||
|
{
|
||||||
|
$missingArtworks = DB::connection('legacy')->select('SELECT * FROM artworks WHERE id > 30835 AND approved_by IS NOT NULL');
|
||||||
|
foreach ($missingArtworks as $missingArtwork) {
|
||||||
|
$localPath = '/legacypublic' . $missingArtwork->path . '/' . $missingArtwork->filename;
|
||||||
|
$user = User::where('legacy_id', $missingArtwork->user_id)->with('artists')->first();
|
||||||
|
$artwork = Artwork::where('legacy_id', $missingArtwork->id)->first();
|
||||||
|
$episode = Episode::where('legacy_id', $missingArtwork->episode_id)->first();
|
||||||
|
$approver = User::where('legacy_id', $missingArtwork->approved_by)->with('artists')->first();
|
||||||
|
if ($artwork) {
|
||||||
|
$this->line('Artwork ID: ' . $artwork->id);
|
||||||
|
}
|
||||||
|
if ($episode) {
|
||||||
|
$this->line('Episode: ' . $episode->episode_number . ' "' . $episode->title . '"');
|
||||||
|
}
|
||||||
|
if (!$artwork) {
|
||||||
|
$newFilename = $this->uniqueName($episode, $user, $missingArtwork);
|
||||||
|
$state = [
|
||||||
|
'title' => $missingArtwork->title,
|
||||||
|
'description' => '',
|
||||||
|
'artist_id' => $user->artists->first()->id,
|
||||||
|
'episode_id' => $episode->id,
|
||||||
|
'podcast_id' => 1,
|
||||||
|
'overlay_id' => null,
|
||||||
|
'filename' => $newFilename . '.jpg',
|
||||||
|
'created_at' => Carbon::parse($missingArtwork->created_at),
|
||||||
|
'updated_at' => Carbon::parse($missingArtwork->updated_at),
|
||||||
|
'legacy_id' => $missingArtwork->id,
|
||||||
|
'approved_by' => $approver->artists->first()->id,
|
||||||
|
];
|
||||||
|
$artwork = Artwork::factory()->state($state)->create();
|
||||||
|
}
|
||||||
|
$this->line('Artist: ' . $user->artists->first()->name);
|
||||||
|
$this->line($localPath);
|
||||||
|
$filename = 'artworks/' . $artwork->filename;
|
||||||
|
$thumbnailName = 'thumbnails/' . $artwork->filename;
|
||||||
|
if (Storage::disk('static')->exists($filename)) {
|
||||||
|
$this->error($filename . ' already exists. ' . Storage::disk('static')->size($filename));
|
||||||
|
}
|
||||||
|
if (Storage::disk('static')->exists($thumbnailName)) {
|
||||||
|
$this->error($thumbnailName . ' already exists. ' . Storage::disk('static')->size($thumbnailName));
|
||||||
|
}
|
||||||
|
$img = Image::make($localPath)
|
||||||
|
->resize(3000, null, function ($constraint) {
|
||||||
|
$constraint->aspectRatio();
|
||||||
|
})
|
||||||
|
->encode('jpg', 100);
|
||||||
|
$thumbImg = Image::make($localPath)
|
||||||
|
->resize(512, null, function ($constraint) {
|
||||||
|
$constraint->aspectRatio();
|
||||||
|
})
|
||||||
|
->encode('jpg', 100);
|
||||||
|
$imgLocation = Storage::disk('static')->put($filename, $img);
|
||||||
|
$thumbLocation = Storage::disk('static')->put($thumbnailName, $thumbImg);
|
||||||
|
$size_before = Storage::disk('static')->size($filename);
|
||||||
|
$thumb_size_before = Storage::disk('static')->size($thumbnailName);
|
||||||
|
ImageOptimizer::optimize(Storage::disk('static')->path($filename));
|
||||||
|
ImageOptimizer::optimize(Storage::disk('static')->path($thumbnailName));
|
||||||
|
$size_after = Storage::disk('static')->size($filename);
|
||||||
|
$thumb_size_after = Storage::disk('static')->size($thumbnailName);
|
||||||
|
$diff = $size_before - $size_after;
|
||||||
|
$thumbDiff = $thumb_size_before - $thumb_size_after;
|
||||||
|
$this->line('Filesize before: ' . $size_before);
|
||||||
|
$this->line('Filesize after: ' . $size_after);
|
||||||
|
$this->line('Thumb Filesize before: ' . $thumb_size_before);
|
||||||
|
$this->line('Thumb Filesize after: ' . $thumb_size_after);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private function checkExistingFilename($name) {
|
||||||
|
$checkArtwork = Artwork::where('filename', $name . '.jpg')->count();
|
||||||
|
return $checkArtwork;
|
||||||
|
}
|
||||||
|
|
||||||
|
private function uniqueName($episode, $user, $missingArtwork) {
|
||||||
|
$i = 0;
|
||||||
|
$uniqueFilename = $episode->episode_date->format('Y/m/') . Str::slug($user->artists->first()->name . '-' . $missingArtwork->title) . '_' . $missingArtwork->id;
|
||||||
|
$exists = $this->checkExistingFilename($uniqueFilename);
|
||||||
|
if (!$exists) {
|
||||||
|
return $uniqueFilename;
|
||||||
|
}
|
||||||
|
while(!$exists) {
|
||||||
|
$i++;
|
||||||
|
$uniqueFilename = $uniqueFilename . '_v' . $i;
|
||||||
|
$exists = $this->checkExistingFilename($uniqueFilename);
|
||||||
|
}
|
||||||
|
return $uniqueFilename;
|
||||||
|
}
|
||||||
|
}
|
27
site/app/Helpers/pcagHelpers.php
Normal file
27
site/app/Helpers/pcagHelpers.php
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
if (!function_exists('numberSuffix')) {
|
||||||
|
function numberSuffix($number) {
|
||||||
|
if (!is_int($number) || $number < 1) {
|
||||||
|
return $number;
|
||||||
|
}
|
||||||
|
|
||||||
|
$lastDigit = $number % 10;
|
||||||
|
$secondLastDigit = ($number / 10) % 10;
|
||||||
|
|
||||||
|
if ($secondLastDigit == 1) {
|
||||||
|
return 'th';
|
||||||
|
}
|
||||||
|
|
||||||
|
switch ($lastDigit) {
|
||||||
|
case 1:
|
||||||
|
return 'st';
|
||||||
|
case 2:
|
||||||
|
return 'nd';
|
||||||
|
case 3:
|
||||||
|
return 'rd';
|
||||||
|
default:
|
||||||
|
return 'th';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -3,7 +3,18 @@
|
|||||||
namespace App\Http\Controllers;
|
namespace App\Http\Controllers;
|
||||||
|
|
||||||
use App\Models\Artwork;
|
use App\Models\Artwork;
|
||||||
|
use App\Models\Podcast;
|
||||||
|
use App\Models\Episode;
|
||||||
use Illuminate\Http\Request;
|
use Illuminate\Http\Request;
|
||||||
|
use Illuminate\Http\RedirectResponse;
|
||||||
|
use Illuminate\Support\Facades\Validator;
|
||||||
|
use Illuminate\Validation\Rules\File;
|
||||||
|
use Illuminate\Validation\Rule;
|
||||||
|
use Illuminate\Support\Facades\Storage;
|
||||||
|
use Illuminate\Support\Facades\Log;
|
||||||
|
use Illuminate\Support\Str;
|
||||||
|
use Intervention\Image\Facades\Image;
|
||||||
|
use ImageOptimizer;
|
||||||
|
|
||||||
class ArtworkController extends Controller
|
class ArtworkController extends Controller
|
||||||
{
|
{
|
||||||
@ -14,7 +25,19 @@ class ArtworkController extends Controller
|
|||||||
*/
|
*/
|
||||||
public function index()
|
public function index()
|
||||||
{
|
{
|
||||||
//
|
$user = auth()->user();
|
||||||
|
$artworks = Artwork::whereNotNull('approved_by')
|
||||||
|
->with('artist')
|
||||||
|
->orderBy('episode_id', 'desc')
|
||||||
|
->orderBy('created_at', 'desc')
|
||||||
|
->paginate($perPage = 100, $columns = ['*'], $pageName = 'artworks');
|
||||||
|
$podcasts = Podcast::where('published', true)->with('episodes')->get();
|
||||||
|
return view('explore.artworks', [
|
||||||
|
'user' => $user,
|
||||||
|
'pageTitle' => 'Explore',
|
||||||
|
'artworks' => $artworks,
|
||||||
|
'podcasts' => $podcasts,
|
||||||
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -24,7 +47,13 @@ public function index()
|
|||||||
*/
|
*/
|
||||||
public function create()
|
public function create()
|
||||||
{
|
{
|
||||||
//
|
$user = auth()->user();
|
||||||
|
$podcasts = Podcast::where('published', true)->with('episodes')->get();
|
||||||
|
return view('artworks.submit', [
|
||||||
|
'user' => $user,
|
||||||
|
'pageTitle' => 'Submit New Artwork',
|
||||||
|
'podcasts' => $podcasts,
|
||||||
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -33,20 +62,79 @@ public function create()
|
|||||||
* @param \Illuminate\Http\Request $request
|
* @param \Illuminate\Http\Request $request
|
||||||
* @return \Illuminate\Http\Response
|
* @return \Illuminate\Http\Response
|
||||||
*/
|
*/
|
||||||
public function store(Request $request)
|
public function store(Request $request): RedirectResponse
|
||||||
{
|
{
|
||||||
//
|
$validator = Validator::make($request->all(), [
|
||||||
|
'title' => ['required', 'max:255',],
|
||||||
|
'podcast' => ['required', 'exists:podcasts,id',],
|
||||||
|
'description' => ['nullable',],
|
||||||
|
'file' => ['required', 'image', Rule::dimensions()->ratio(1)->minWidth(512),],
|
||||||
|
]);
|
||||||
|
if ($validator->fails()) {
|
||||||
|
return back()
|
||||||
|
->withErrors($validator)
|
||||||
|
->withInput();
|
||||||
|
}
|
||||||
|
Log::channel('artwork_import')->info('making new artwork model.');
|
||||||
|
$podcast = Podcast::where('id', $request->podcast)->with(['episodes' => function($query) {
|
||||||
|
$query->orderBy('episode_number', 'desc')->limit(1);
|
||||||
|
}])->first();
|
||||||
|
$episode = $podcast->episodes->first();
|
||||||
|
$artist = auth()->user()->artists()->first();
|
||||||
|
$rawFile = $request->file('file');
|
||||||
|
$filename = now()->format('Y')
|
||||||
|
. '/'
|
||||||
|
. now()->format('m')
|
||||||
|
. '/'
|
||||||
|
. Str::slug($artist->name)
|
||||||
|
. '-'
|
||||||
|
. Str::slug($request->title)
|
||||||
|
. '_'
|
||||||
|
. Str::random(8)
|
||||||
|
. '.jpg';
|
||||||
|
$artwork = Artwork::factory()->state([
|
||||||
|
'title' => $request->title,
|
||||||
|
'artist_id' => $artist->id,
|
||||||
|
'description' => $request->description,
|
||||||
|
'overlay_id' => null,
|
||||||
|
'podcast_id' => $podcast->id,
|
||||||
|
'episode_id' => $episode->id,
|
||||||
|
'filename' => $filename,
|
||||||
|
])->create();
|
||||||
|
$img = Image::make($rawFile)->resize(3000, null, function($constraint){
|
||||||
|
$constraint->aspectRatio();
|
||||||
|
})
|
||||||
|
->encode('jpg', 100)
|
||||||
|
->save(Storage::disk('static')->path('/artworks') . '/' . $artwork->filename);
|
||||||
|
$thumbImg = Image::make($request->file('file'))->resize(512, null, function($constraint){
|
||||||
|
$constraint->aspectRatio();
|
||||||
|
})
|
||||||
|
->encode('jpg', 100)
|
||||||
|
->save(Storage::disk('static')->path('/thumbnails') . '/' . $artwork->filename);
|
||||||
|
ImageOptimizer::optimize(Storage::disk('static')->path('/artworks/' . $artwork->filename));
|
||||||
|
ImageOptimizer::optimize(Storage::disk('static')->path('/thumbnails/' . $artwork->filename));
|
||||||
|
return redirect('/artworks/' . $artwork->id);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Display the specified resource.
|
* Display the specified resource.
|
||||||
*
|
*
|
||||||
* @param \App\Models\Artwork $artwork
|
* @param \Illuminate\Http\Request $request
|
||||||
|
* @param the id of the \App\Models\Artwork $id
|
||||||
* @return \Illuminate\Http\Response
|
* @return \Illuminate\Http\Response
|
||||||
*/
|
*/
|
||||||
public function show(Artwork $artwork)
|
public function show(Request $request, $id)
|
||||||
{
|
{
|
||||||
//
|
$user = auth()->user();
|
||||||
|
$artwork = Artwork::where('id', $id)
|
||||||
|
->with('podcast')
|
||||||
|
->with('episode')
|
||||||
|
->with('artist')
|
||||||
|
->first();
|
||||||
|
return view('artworks.artwork', [
|
||||||
|
'artwork' => $artwork,
|
||||||
|
'user' => $user,
|
||||||
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -4,28 +4,51 @@
|
|||||||
|
|
||||||
use Illuminate\Http\Request;
|
use Illuminate\Http\Request;
|
||||||
use Illuminate\Support\Facades\Cache;
|
use Illuminate\Support\Facades\Cache;
|
||||||
|
use Illuminate\Support\Facades\DB;
|
||||||
use App\Models\Artwork;
|
use App\Models\Artwork;
|
||||||
use App\Models\Artist;
|
use App\Models\Artist;
|
||||||
use App\Models\Episode;
|
use App\Models\Episode;
|
||||||
|
|
||||||
|
|
||||||
class PageController extends Controller
|
class PageController extends Controller
|
||||||
{
|
{
|
||||||
public function landing()
|
public function landing(Request $request)
|
||||||
{
|
{
|
||||||
$user = auth()->user();
|
$user = auth()->user();
|
||||||
$headerCounters = $this->getHeaderCounters();
|
$headerCounters = $this->getHeaderCounters();
|
||||||
$recentEpisodes = $this->mostRecentEpisodes();
|
$recentEpisodes = $this->mostRecentEpisodes();
|
||||||
|
$recentSubmissions = $this->mostRecentSubmissions();
|
||||||
|
$leaderboard = $this->leaderboardTwelveMonths();
|
||||||
|
|
||||||
return view('home.page', [
|
return view('home.page', [
|
||||||
'user' => $user,
|
'user' => $user,
|
||||||
|
'pageTitle' => 'Home',
|
||||||
'headerCounters' => $headerCounters,
|
'headerCounters' => $headerCounters,
|
||||||
'recentEpisodes' => $recentEpisodes,
|
'recentEpisodes' => $recentEpisodes,
|
||||||
|
'recentSubmissions' => $recentSubmissions,
|
||||||
|
'leaderboard' => $leaderboard,
|
||||||
|
'preferredTheme' => $request->session()->get('preferred_theme') ?? 'dark',
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private function mostRecentSubmissions() {
|
||||||
|
$artworks = Cache::remember('latestSubmissions', 30, function() {
|
||||||
|
return Artwork::whereNotNull('approved_by')
|
||||||
|
->with('artist')
|
||||||
|
->with('episode')
|
||||||
|
->with('podcast')
|
||||||
|
->orderBy('created_at', 'desc')
|
||||||
|
->limit(50)
|
||||||
|
->get();
|
||||||
|
});
|
||||||
|
return $artworks;
|
||||||
|
}
|
||||||
|
|
||||||
private function mostRecentEpisodes()
|
private function mostRecentEpisodes()
|
||||||
{
|
{
|
||||||
$episodes = Cache::remember('latestEpisodes', 30, function() {
|
$episodes = Cache::remember('latestEpisodes', 30, function() {
|
||||||
return Episode::where('published', true)
|
return Episode::where('published', true)
|
||||||
|
->whereHas('artwork')
|
||||||
->with('podcast')
|
->with('podcast')
|
||||||
->with('artwork')
|
->with('artwork')
|
||||||
->with('artwork.artist')
|
->with('artwork.artist')
|
||||||
@ -39,7 +62,7 @@ private function mostRecentEpisodes()
|
|||||||
private function getHeaderCounters()
|
private function getHeaderCounters()
|
||||||
{
|
{
|
||||||
$headerCounters = [];
|
$headerCounters = [];
|
||||||
$artworkCountNumber = Cache::remember('artworkCountNumber', 10, function() {
|
$artworkCountNumber = Cache::remember('artworkCountNumber', 10, function() {
|
||||||
return Artwork::all()->count();
|
return Artwork::all()->count();
|
||||||
});
|
});
|
||||||
$artistCountNumber = Cache::remember('artistCountNumber', 10, function() {
|
$artistCountNumber = Cache::remember('artistCountNumber', 10, function() {
|
||||||
@ -60,7 +83,7 @@ private function shortNumberCount($number)
|
|||||||
$number /= 1000;
|
$number /= 1000;
|
||||||
}
|
}
|
||||||
return [
|
return [
|
||||||
'number' => $this->numberFormatPrecision($number, 1), //number_format(floatval($number), 1),
|
'number' => $this->numberFormatPrecision($number, 1), //number_format(floatval($number), 1),
|
||||||
'unit' => $units[$i],
|
'unit' => $units[$i],
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
@ -76,4 +99,46 @@ private function numberFormatPrecision($number, $precision = 2, $separator = '.'
|
|||||||
return $response;
|
return $response;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private function leaderboardTwelveMonths() {
|
||||||
|
$endDate = now()->endOfDay()->subYear()->format('Y-m-d');
|
||||||
|
$leaderboard = DB::table('episodes')
|
||||||
|
->join('artworks', 'artworks.id', '=', 'episodes.artwork_id')
|
||||||
|
->join('artists', 'artists.id', '=', 'artworks.artist_id')
|
||||||
|
->select([
|
||||||
|
DB::raw('artists.id as artistId'),
|
||||||
|
DB::raw('artists.name as artistName'),
|
||||||
|
DB::raw('count(artworks.id) as artworkCount')
|
||||||
|
])
|
||||||
|
->where('episodes.published', 1)
|
||||||
|
->where('episodes.episode_date', '>=', $endDate)
|
||||||
|
->groupBy('artistId')
|
||||||
|
->orderByDesc('artworkCount')
|
||||||
|
->limit(10)
|
||||||
|
->get();
|
||||||
|
$leaderboard = $this->addArtistModelToLeaderboard($leaderboard);
|
||||||
|
return $leaderboard;
|
||||||
|
}
|
||||||
|
|
||||||
|
private function addArtistModelToLeaderboard($leaderboard) {
|
||||||
|
$artistIds = [];
|
||||||
|
foreach ($leaderboard as $lb) {
|
||||||
|
$artistIds[] = $lb->artistId;
|
||||||
|
}
|
||||||
|
$artists = Artist::whereIn('id', $artistIds)->get();
|
||||||
|
foreach ($leaderboard as $lb) {
|
||||||
|
$lb->artist = $artists->where('id', $lb->artistId)->first();
|
||||||
|
}
|
||||||
|
$p = 0;
|
||||||
|
foreach ($leaderboard as $lb) {
|
||||||
|
$p++;
|
||||||
|
$lb->position = $p;
|
||||||
|
}
|
||||||
|
return $leaderboard;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function setSessionTheme(Request $request) {
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -39,7 +39,7 @@ class Kernel extends HttpKernel
|
|||||||
],
|
],
|
||||||
|
|
||||||
'api' => [
|
'api' => [
|
||||||
// \Laravel\Sanctum\Http\Middleware\EnsureFrontendRequestsAreStateful::class,
|
\Laravel\Sanctum\Http\Middleware\EnsureFrontendRequestsAreStateful::class,
|
||||||
\Illuminate\Routing\Middleware\ThrottleRequests::class.':api',
|
\Illuminate\Routing\Middleware\ThrottleRequests::class.':api',
|
||||||
\Illuminate\Routing\Middleware\SubstituteBindings::class,
|
\Illuminate\Routing\Middleware\SubstituteBindings::class,
|
||||||
],
|
],
|
||||||
|
@ -56,12 +56,12 @@ public function handle(): void
|
|||||||
$this->createArtwork($basename);
|
$this->createArtwork($basename);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
$img = Image::make('https://noagendaartgenerator.com' . $this->artwork->path . '/' . $this->artwork->filename)
|
$img = Image::make('/legacypublic' . $this->artwork->path . '/' . $this->artwork->filename)
|
||||||
->resize(3000, null, function ($constraint) {
|
->resize(3000, null, function ($constraint) {
|
||||||
$constraint->aspectRatio();
|
$constraint->aspectRatio();
|
||||||
})
|
})
|
||||||
->encode('jpg', 100);
|
->encode('jpg', 100);
|
||||||
$thumbImg = Image::make('https://noagendaartgenerator.com' . $this->artwork->path . '/' . $this->artwork->filename)
|
$thumbImg = Image::make('/legacypublic' . $this->artwork->path . '/' . $this->artwork->filename)
|
||||||
->resize(512, null, function ($constraint) {
|
->resize(512, null, function ($constraint) {
|
||||||
$constraint->aspectRatio();
|
$constraint->aspectRatio();
|
||||||
})
|
})
|
||||||
|
25
site/app/Livewire/Counter.php
Normal file
25
site/app/Livewire/Counter.php
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Livewire;
|
||||||
|
|
||||||
|
use Livewire\Component;
|
||||||
|
|
||||||
|
class Counter extends Component
|
||||||
|
{
|
||||||
|
public $count = 1;
|
||||||
|
|
||||||
|
public function increment()
|
||||||
|
{
|
||||||
|
$this->count++;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function decrement()
|
||||||
|
{
|
||||||
|
$this->count--;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function render()
|
||||||
|
{
|
||||||
|
return view('livewire.counter');
|
||||||
|
}
|
||||||
|
}
|
24
site/app/Livewire/Themeswitch.php
Normal file
24
site/app/Livewire/Themeswitch.php
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Livewire;
|
||||||
|
|
||||||
|
use Livewire\Component;
|
||||||
|
|
||||||
|
class Themeswitch extends Component
|
||||||
|
{
|
||||||
|
|
||||||
|
public function light()
|
||||||
|
{
|
||||||
|
session(['preferred_theme' => 'light']);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function dark()
|
||||||
|
{
|
||||||
|
session(['preferred_theme' => 'dark']);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function render()
|
||||||
|
{
|
||||||
|
return view('livewire.themeswitch');
|
||||||
|
}
|
||||||
|
}
|
@ -16,6 +16,12 @@ class Artist extends Model
|
|||||||
|
|
||||||
protected $dates = ['created_at', 'updated_at', 'deleted_at'];
|
protected $dates = ['created_at', 'updated_at', 'deleted_at'];
|
||||||
|
|
||||||
|
protected $casts = [
|
||||||
|
'created_at' => 'datetime',
|
||||||
|
'updated_at' => 'datetime',
|
||||||
|
'deleted_at' => 'datetime',
|
||||||
|
];
|
||||||
|
|
||||||
public function user()
|
public function user()
|
||||||
{
|
{
|
||||||
return $this->belongs_to(User::class);
|
return $this->belongs_to(User::class);
|
||||||
|
@ -16,6 +16,12 @@ class Artwork extends Model
|
|||||||
|
|
||||||
protected $dates = ['created_at', 'updated_at', 'deleted_at'];
|
protected $dates = ['created_at', 'updated_at', 'deleted_at'];
|
||||||
|
|
||||||
|
protected $casts = [
|
||||||
|
'created_at' => 'datetime',
|
||||||
|
'updated_at' => 'datetime',
|
||||||
|
'deleted_at' => 'datetime',
|
||||||
|
];
|
||||||
|
|
||||||
public function podcast()
|
public function podcast()
|
||||||
{
|
{
|
||||||
return $this->belongsTo(Podcast::class);
|
return $this->belongsTo(Podcast::class);
|
||||||
|
@ -14,6 +14,13 @@ class Episode extends Model
|
|||||||
|
|
||||||
protected $dates = ['episode_date', 'created_at', 'updated_at', 'deleted_at'];
|
protected $dates = ['episode_date', 'created_at', 'updated_at', 'deleted_at'];
|
||||||
|
|
||||||
|
protected $casts = [
|
||||||
|
'episode_date' => 'date',
|
||||||
|
'created_at' => 'datetime',
|
||||||
|
'updated_at' => 'datetime',
|
||||||
|
'deleted_at' => 'datetime',
|
||||||
|
];
|
||||||
|
|
||||||
public function podcast()
|
public function podcast()
|
||||||
{
|
{
|
||||||
return $this->belongsTo(Podcast::class);
|
return $this->belongsTo(Podcast::class);
|
||||||
|
@ -16,6 +16,12 @@ class Overlay extends Model
|
|||||||
|
|
||||||
protected $dates = ['created_at', 'updated_at', 'deleted_at'];
|
protected $dates = ['created_at', 'updated_at', 'deleted_at'];
|
||||||
|
|
||||||
|
protected $casts = [
|
||||||
|
'created_at' => 'datetime',
|
||||||
|
'updated_at' => 'datetime',
|
||||||
|
'deleted_at' => 'datetime',
|
||||||
|
];
|
||||||
|
|
||||||
public function artist()
|
public function artist()
|
||||||
{
|
{
|
||||||
return $this->belongsTo(Artist::class);
|
return $this->belongsTo(Artist::class);
|
||||||
|
@ -16,6 +16,13 @@ class Podcast extends Model
|
|||||||
|
|
||||||
protected $dates = ['created_at', 'updated_at', 'deleted_at', 'added_at'];
|
protected $dates = ['created_at', 'updated_at', 'deleted_at', 'added_at'];
|
||||||
|
|
||||||
|
protected $casts = [
|
||||||
|
'created_at' => 'datetime',
|
||||||
|
'updated_at' => 'datetime',
|
||||||
|
'deleted_at' => 'datetime',
|
||||||
|
'added_at' => 'datetime',
|
||||||
|
];
|
||||||
|
|
||||||
public function episodes()
|
public function episodes()
|
||||||
{
|
{
|
||||||
return $this->hasMany(Episode::class);
|
return $this->hasMany(Episode::class);
|
||||||
|
@ -14,8 +14,6 @@ class User extends Authenticatable
|
|||||||
|
|
||||||
protected $table = 'users';
|
protected $table = 'users';
|
||||||
|
|
||||||
protected $dates = ['created_at', 'updated_at'];
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The attributes that are mass assignable.
|
* The attributes that are mass assignable.
|
||||||
*
|
*
|
||||||
@ -44,6 +42,17 @@ class User extends Authenticatable
|
|||||||
*/
|
*/
|
||||||
protected $casts = [
|
protected $casts = [
|
||||||
'email_verified_at' => 'datetime',
|
'email_verified_at' => 'datetime',
|
||||||
|
'created_at' => 'datetime',
|
||||||
|
'updated_at' => 'datetime',
|
||||||
|
];
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The attributes that should be appended.
|
||||||
|
*
|
||||||
|
* @var array<string, string>
|
||||||
|
*/
|
||||||
|
protected $appends = [
|
||||||
|
|
||||||
];
|
];
|
||||||
|
|
||||||
public function artists()
|
public function artists()
|
||||||
|
@ -13,6 +13,11 @@ class Wallet extends Model
|
|||||||
|
|
||||||
protected $dates = ['created_at', 'updated_at'];
|
protected $dates = ['created_at', 'updated_at'];
|
||||||
|
|
||||||
|
protected $casts = [
|
||||||
|
'created_at' => 'datetime',
|
||||||
|
'updated_at' => 'datetime',
|
||||||
|
];
|
||||||
|
|
||||||
public function walletType()
|
public function walletType()
|
||||||
{
|
{
|
||||||
return $this->hasOne(WalletType::class);
|
return $this->hasOne(WalletType::class);
|
||||||
|
@ -13,6 +13,11 @@ class WalletType extends Model
|
|||||||
|
|
||||||
protected $dates = ['created_at', 'updated_at'];
|
protected $dates = ['created_at', 'updated_at'];
|
||||||
|
|
||||||
|
protected $casts = [
|
||||||
|
'created_at' => 'datetime',
|
||||||
|
'updated_at' => 'datetime',
|
||||||
|
];
|
||||||
|
|
||||||
public function wallets()
|
public function wallets()
|
||||||
{
|
{
|
||||||
return $this->hasMany(Wallet::class);
|
return $this->hasMany(Wallet::class);
|
||||||
|
@ -3,6 +3,9 @@
|
|||||||
namespace App\Providers;
|
namespace App\Providers;
|
||||||
|
|
||||||
use Illuminate\Support\ServiceProvider;
|
use Illuminate\Support\ServiceProvider;
|
||||||
|
use Illuminate\Pagination\Paginator;
|
||||||
|
use Illuminate\Support\Facades\View;
|
||||||
|
use App\Models\Podcast;
|
||||||
|
|
||||||
class AppServiceProvider extends ServiceProvider
|
class AppServiceProvider extends ServiceProvider
|
||||||
{
|
{
|
||||||
@ -19,6 +22,8 @@ public function register(): void
|
|||||||
*/
|
*/
|
||||||
public function boot(): void
|
public function boot(): void
|
||||||
{
|
{
|
||||||
//
|
Paginator::useBootstrapFive();
|
||||||
|
$publishedPodcasts = Podcast::where('published', true)->select(['name', 'slug'])->get();
|
||||||
|
View::share(['navPodcasts' => $publishedPodcasts]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
58
site/app/Providers/Filament/AdminPanelProvider.php
Normal file
58
site/app/Providers/Filament/AdminPanelProvider.php
Normal file
@ -0,0 +1,58 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Providers\Filament;
|
||||||
|
|
||||||
|
use Filament\Http\Middleware\Authenticate;
|
||||||
|
use Filament\Http\Middleware\DisableBladeIconComponents;
|
||||||
|
use Filament\Http\Middleware\DispatchServingFilamentEvent;
|
||||||
|
use Filament\Pages;
|
||||||
|
use Filament\Panel;
|
||||||
|
use Filament\PanelProvider;
|
||||||
|
use Filament\Support\Colors\Color;
|
||||||
|
use Filament\Widgets;
|
||||||
|
use Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse;
|
||||||
|
use Illuminate\Cookie\Middleware\EncryptCookies;
|
||||||
|
use Illuminate\Foundation\Http\Middleware\VerifyCsrfToken;
|
||||||
|
use Illuminate\Routing\Middleware\SubstituteBindings;
|
||||||
|
use Illuminate\Session\Middleware\AuthenticateSession;
|
||||||
|
use Illuminate\Session\Middleware\StartSession;
|
||||||
|
use Illuminate\View\Middleware\ShareErrorsFromSession;
|
||||||
|
|
||||||
|
class AdminPanelProvider extends PanelProvider
|
||||||
|
{
|
||||||
|
public function panel(Panel $panel): Panel
|
||||||
|
{
|
||||||
|
return $panel
|
||||||
|
->default()
|
||||||
|
->id('admin')
|
||||||
|
->path('admin')
|
||||||
|
->login()
|
||||||
|
->colors([
|
||||||
|
'primary' => Color::Amber,
|
||||||
|
])
|
||||||
|
->discoverResources(in: app_path('Filament/Resources'), for: 'App\\Filament\\Resources')
|
||||||
|
->discoverPages(in: app_path('Filament/Pages'), for: 'App\\Filament\\Pages')
|
||||||
|
->pages([
|
||||||
|
Pages\Dashboard::class,
|
||||||
|
])
|
||||||
|
->discoverWidgets(in: app_path('Filament/Widgets'), for: 'App\\Filament\\Widgets')
|
||||||
|
->widgets([
|
||||||
|
Widgets\AccountWidget::class,
|
||||||
|
Widgets\FilamentInfoWidget::class,
|
||||||
|
])
|
||||||
|
->middleware([
|
||||||
|
EncryptCookies::class,
|
||||||
|
AddQueuedCookiesToResponse::class,
|
||||||
|
StartSession::class,
|
||||||
|
AuthenticateSession::class,
|
||||||
|
ShareErrorsFromSession::class,
|
||||||
|
VerifyCsrfToken::class,
|
||||||
|
SubstituteBindings::class,
|
||||||
|
DisableBladeIconComponents::class,
|
||||||
|
DispatchServingFilamentEvent::class,
|
||||||
|
])
|
||||||
|
->authMiddleware([
|
||||||
|
Authenticate::class,
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
}
|
@ -17,7 +17,7 @@ class RouteServiceProvider extends ServiceProvider
|
|||||||
*
|
*
|
||||||
* @var string
|
* @var string
|
||||||
*/
|
*/
|
||||||
public const HOME = '/dashboard';
|
public const HOME = '/';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Define your route model bindings, pattern filters, and other route configuration.
|
* Define your route model bindings, pattern filters, and other route configuration.
|
||||||
|
@ -2,16 +2,23 @@
|
|||||||
"name": "laravel/laravel",
|
"name": "laravel/laravel",
|
||||||
"type": "project",
|
"type": "project",
|
||||||
"description": "The skeleton application for the Laravel framework.",
|
"description": "The skeleton application for the Laravel framework.",
|
||||||
"keywords": ["laravel", "framework"],
|
"keywords": [
|
||||||
|
"laravel",
|
||||||
|
"framework"
|
||||||
|
],
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"require": {
|
"require": {
|
||||||
"php": "^8.1",
|
"php": "^8.1",
|
||||||
|
"andreiio/blade-remix-icon": "^2.6",
|
||||||
|
"blade-ui-kit/blade-icons": "^1.5",
|
||||||
|
"filament/filament": "^3.0-stable",
|
||||||
"guzzlehttp/guzzle": "^7.2",
|
"guzzlehttp/guzzle": "^7.2",
|
||||||
"intervention/image": "^2.7",
|
"intervention/image": "^2.7",
|
||||||
"laravel/framework": "^10.10",
|
"laravel/framework": "^10.10",
|
||||||
"laravel/sanctum": "^3.2",
|
"laravel/sanctum": "^3.3",
|
||||||
"laravel/tinker": "^2.8",
|
"laravel/tinker": "^2.8",
|
||||||
"livewire/livewire": "^2.12",
|
"livewire/livewire": "^3.2",
|
||||||
|
"mckenziearts/blade-untitledui-icons": "^1.2",
|
||||||
"spatie/laravel-image-optimizer": "^1.7"
|
"spatie/laravel-image-optimizer": "^1.7"
|
||||||
},
|
},
|
||||||
"require-dev": {
|
"require-dev": {
|
||||||
@ -29,7 +36,10 @@
|
|||||||
"App\\": "app/",
|
"App\\": "app/",
|
||||||
"Database\\Factories\\": "database/factories/",
|
"Database\\Factories\\": "database/factories/",
|
||||||
"Database\\Seeders\\": "database/seeders/"
|
"Database\\Seeders\\": "database/seeders/"
|
||||||
}
|
},
|
||||||
|
"files": [
|
||||||
|
"app/Helpers/pcagHelpers.php"
|
||||||
|
]
|
||||||
},
|
},
|
||||||
"autoload-dev": {
|
"autoload-dev": {
|
||||||
"psr-4": {
|
"psr-4": {
|
||||||
@ -39,7 +49,8 @@
|
|||||||
"scripts": {
|
"scripts": {
|
||||||
"post-autoload-dump": [
|
"post-autoload-dump": [
|
||||||
"Illuminate\\Foundation\\ComposerScripts::postAutoloadDump",
|
"Illuminate\\Foundation\\ComposerScripts::postAutoloadDump",
|
||||||
"@php artisan package:discover --ansi"
|
"@php artisan package:discover --ansi",
|
||||||
|
"@php artisan filament:upgrade"
|
||||||
],
|
],
|
||||||
"post-update-cmd": [
|
"post-update-cmd": [
|
||||||
"@php artisan vendor:publish --tag=laravel-assets --ansi --force"
|
"@php artisan vendor:publish --tag=laravel-assets --ansi --force"
|
||||||
|
3018
site/composer.lock
generated
3018
site/composer.lock
generated
File diff suppressed because it is too large
Load Diff
@ -169,6 +169,7 @@
|
|||||||
App\Providers\AuthServiceProvider::class,
|
App\Providers\AuthServiceProvider::class,
|
||||||
// App\Providers\BroadcastServiceProvider::class,
|
// App\Providers\BroadcastServiceProvider::class,
|
||||||
App\Providers\EventServiceProvider::class,
|
App\Providers\EventServiceProvider::class,
|
||||||
|
App\Providers\Filament\AdminPanelProvider::class,
|
||||||
App\Providers\RouteServiceProvider::class,
|
App\Providers\RouteServiceProvider::class,
|
||||||
])->toArray(),
|
])->toArray(),
|
||||||
|
|
||||||
|
183
site/config/blade-icons.php
Normal file
183
site/config/blade-icons.php
Normal file
@ -0,0 +1,183 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
return [
|
||||||
|
|
||||||
|
/*
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
| Icons Sets
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
|
|
||||||
|
| With this config option you can define a couple of
|
||||||
|
| default icon sets. Provide a key name for your icon
|
||||||
|
| set and a combination from the options below.
|
||||||
|
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
'sets' => [
|
||||||
|
|
||||||
|
// 'default' => [
|
||||||
|
//
|
||||||
|
// /*
|
||||||
|
// |-----------------------------------------------------------------
|
||||||
|
// | Icons Path
|
||||||
|
// |-----------------------------------------------------------------
|
||||||
|
// |
|
||||||
|
// | Provide the relative path from your app root to your SVG icons
|
||||||
|
// | directory. Icons are loaded recursively so there's no need to
|
||||||
|
// | list every sub-directory.
|
||||||
|
// |
|
||||||
|
// | Relative to the disk root when the disk option is set.
|
||||||
|
// |
|
||||||
|
// */
|
||||||
|
//
|
||||||
|
// 'path' => 'resources/svg',
|
||||||
|
//
|
||||||
|
// /*
|
||||||
|
// |-----------------------------------------------------------------
|
||||||
|
// | Filesystem Disk
|
||||||
|
// |-----------------------------------------------------------------
|
||||||
|
// |
|
||||||
|
// | Optionally, provide a specific filesystem disk to read
|
||||||
|
// | icons from. When defining a disk, the "path" option
|
||||||
|
// | starts relatively from the disk root.
|
||||||
|
// |
|
||||||
|
// */
|
||||||
|
//
|
||||||
|
// 'disk' => '',
|
||||||
|
//
|
||||||
|
// /*
|
||||||
|
// |-----------------------------------------------------------------
|
||||||
|
// | Default Prefix
|
||||||
|
// |-----------------------------------------------------------------
|
||||||
|
// |
|
||||||
|
// | This config option allows you to define a default prefix for
|
||||||
|
// | your icons. The dash separator will be applied automatically
|
||||||
|
// | to every icon name. It's required and needs to be unique.
|
||||||
|
// |
|
||||||
|
// */
|
||||||
|
//
|
||||||
|
// 'prefix' => 'icon',
|
||||||
|
//
|
||||||
|
// /*
|
||||||
|
// |-----------------------------------------------------------------
|
||||||
|
// | Fallback Icon
|
||||||
|
// |-----------------------------------------------------------------
|
||||||
|
// |
|
||||||
|
// | This config option allows you to define a fallback
|
||||||
|
// | icon when an icon in this set cannot be found.
|
||||||
|
// |
|
||||||
|
// */
|
||||||
|
//
|
||||||
|
// 'fallback' => '',
|
||||||
|
//
|
||||||
|
// /*
|
||||||
|
// |-----------------------------------------------------------------
|
||||||
|
// | Default Set Classes
|
||||||
|
// |-----------------------------------------------------------------
|
||||||
|
// |
|
||||||
|
// | This config option allows you to define some classes which
|
||||||
|
// | will be applied by default to all icons within this set.
|
||||||
|
// |
|
||||||
|
// */
|
||||||
|
//
|
||||||
|
// 'class' => '',
|
||||||
|
//
|
||||||
|
// /*
|
||||||
|
// |-----------------------------------------------------------------
|
||||||
|
// | Default Set Attributes
|
||||||
|
// |-----------------------------------------------------------------
|
||||||
|
// |
|
||||||
|
// | This config option allows you to define some attributes which
|
||||||
|
// | will be applied by default to all icons within this set.
|
||||||
|
// |
|
||||||
|
// */
|
||||||
|
//
|
||||||
|
// 'attributes' => [
|
||||||
|
// // 'width' => 50,
|
||||||
|
// // 'height' => 50,
|
||||||
|
// ],
|
||||||
|
//
|
||||||
|
// ],
|
||||||
|
|
||||||
|
],
|
||||||
|
|
||||||
|
/*
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
| Global Default Classes
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
|
|
||||||
|
| This config option allows you to define some classes which
|
||||||
|
| will be applied by default to all icons.
|
||||||
|
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
'class' => '',
|
||||||
|
|
||||||
|
/*
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
| Global Default Attributes
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
|
|
||||||
|
| This config option allows you to define some attributes which
|
||||||
|
| will be applied by default to all icons.
|
||||||
|
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
'attributes' => [
|
||||||
|
// 'width' => 50,
|
||||||
|
// 'height' => 50,
|
||||||
|
],
|
||||||
|
|
||||||
|
/*
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
| Global Fallback Icon
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
|
|
||||||
|
| This config option allows you to define a global fallback
|
||||||
|
| icon when an icon in any set cannot be found. It can
|
||||||
|
| reference any icon from any configured set.
|
||||||
|
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
'fallback' => '',
|
||||||
|
|
||||||
|
/*
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
| Components
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
|
|
||||||
|
| These config options allow you to define some
|
||||||
|
| settings related to Blade Components.
|
||||||
|
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
'components' => [
|
||||||
|
|
||||||
|
/*
|
||||||
|
|----------------------------------------------------------------------
|
||||||
|
| Disable Components
|
||||||
|
|----------------------------------------------------------------------
|
||||||
|
|
|
||||||
|
| This config option allows you to disable Blade components
|
||||||
|
| completely. It's useful to avoid performance problems
|
||||||
|
| when working with large icon libraries.
|
||||||
|
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
'disabled' => false,
|
||||||
|
|
||||||
|
/*
|
||||||
|
|----------------------------------------------------------------------
|
||||||
|
| Default Icon Component Name
|
||||||
|
|----------------------------------------------------------------------
|
||||||
|
|
|
||||||
|
| This config option allows you to define the name
|
||||||
|
| for the default Icon class component.
|
||||||
|
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
'default' => 'icon',
|
||||||
|
|
||||||
|
],
|
||||||
|
|
||||||
|
];
|
@ -56,6 +56,26 @@
|
|||||||
'collation' => 'utf8mb4_unicode_ci',
|
'collation' => 'utf8mb4_unicode_ci',
|
||||||
'prefix' => '',
|
'prefix' => '',
|
||||||
'prefix_indexes' => true,
|
'prefix_indexes' => true,
|
||||||
|
'strict' => false,
|
||||||
|
'engine' => null,
|
||||||
|
'options' => extension_loaded('pdo_mysql') ? array_filter([
|
||||||
|
PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'),
|
||||||
|
]) : [],
|
||||||
|
],
|
||||||
|
|
||||||
|
'legacy' => [
|
||||||
|
'driver' => 'mysql',
|
||||||
|
'url' => env('LEGACY_DATABASE_URL'),
|
||||||
|
'host' => env('LEGACY_DB_HOST', '127.0.0.1'),
|
||||||
|
'port' => env('LEGACY_DB_PORT', '3306'),
|
||||||
|
'database' => env('LEGACY_DB_DATABASE', 'forge'),
|
||||||
|
'username' => env('LEGACY_DB_USERNAME', 'forge'),
|
||||||
|
'password' => env('LEGACY_DB_PASSWORD', ''),
|
||||||
|
'unix_socket' => env('DB_SOCKET', ''),
|
||||||
|
'charset' => 'utf8mb4',
|
||||||
|
'collation' => 'utf8mb4_unicode_ci',
|
||||||
|
'prefix' => '',
|
||||||
|
'prefix_indexes' => true,
|
||||||
'strict' => true,
|
'strict' => true,
|
||||||
'engine' => null,
|
'engine' => null,
|
||||||
'options' => extension_loaded('pdo_mysql') ? array_filter([
|
'options' => extension_loaded('pdo_mysql') ? array_filter([
|
||||||
@ -148,4 +168,4 @@
|
|||||||
|
|
||||||
],
|
],
|
||||||
|
|
||||||
];
|
];
|
@ -39,6 +39,7 @@ public function definition()
|
|||||||
'created_at' => $created,
|
'created_at' => $created,
|
||||||
'updated_at' => $created,
|
'updated_at' => $created,
|
||||||
'legacy_id' => null,
|
'legacy_id' => null,
|
||||||
|
'approved_by' => null,
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -35,6 +35,7 @@ public function definition()
|
|||||||
'email_verified_at' => now(),
|
'email_verified_at' => now(),
|
||||||
'password' => $password,
|
'password' => $password,
|
||||||
'remember_token' => Str::random(10),
|
'remember_token' => Str::random(10),
|
||||||
|
'legacy_id' => null,
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -0,0 +1,28 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
use Illuminate\Database\Migrations\Migration;
|
||||||
|
use Illuminate\Database\Schema\Blueprint;
|
||||||
|
use Illuminate\Support\Facades\Schema;
|
||||||
|
|
||||||
|
return new class extends Migration
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Run the migrations.
|
||||||
|
*/
|
||||||
|
public function up(): void
|
||||||
|
{
|
||||||
|
Schema::table('artworks', function (Blueprint $table) {
|
||||||
|
$table->bigInteger('approved_by')->nullable()->after('filename');
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reverse the migrations.
|
||||||
|
*/
|
||||||
|
public function down(): void
|
||||||
|
{
|
||||||
|
Schema::table('artworks', function (Blueprint $table) {
|
||||||
|
$table->dropColumn('approved_by');
|
||||||
|
});
|
||||||
|
}
|
||||||
|
};
|
@ -0,0 +1,28 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
use Illuminate\Database\Migrations\Migration;
|
||||||
|
use Illuminate\Database\Schema\Blueprint;
|
||||||
|
use Illuminate\Support\Facades\Schema;
|
||||||
|
|
||||||
|
return new class extends Migration
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Run the migrations.
|
||||||
|
*/
|
||||||
|
public function up(): void
|
||||||
|
{
|
||||||
|
Schema::table('users', function (Blueprint $table) {
|
||||||
|
$table->integer('legacy_id')->nullable()->unsigned();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reverse the migrations.
|
||||||
|
*/
|
||||||
|
public function down(): void
|
||||||
|
{
|
||||||
|
Schema::table('users', function (Blueprint $table) {
|
||||||
|
$table->dropColumn('legacy_id');
|
||||||
|
});
|
||||||
|
}
|
||||||
|
};
|
@ -0,0 +1,28 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
use Illuminate\Database\Migrations\Migration;
|
||||||
|
use Illuminate\Database\Schema\Blueprint;
|
||||||
|
use Illuminate\Support\Facades\Schema;
|
||||||
|
|
||||||
|
return new class extends Migration
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Run the migrations.
|
||||||
|
*/
|
||||||
|
public function up(): void
|
||||||
|
{
|
||||||
|
Schema::table('artworks', function (Blueprint $table) {
|
||||||
|
$table->string('legacy_filename')->nullable();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reverse the migrations.
|
||||||
|
*/
|
||||||
|
public function down(): void
|
||||||
|
{
|
||||||
|
Schema::table('artworks', function (Blueprint $table) {
|
||||||
|
$table->dropColumn('legacy_filename');
|
||||||
|
});
|
||||||
|
}
|
||||||
|
};
|
@ -0,0 +1,28 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
use Illuminate\Database\Migrations\Migration;
|
||||||
|
use Illuminate\Database\Schema\Blueprint;
|
||||||
|
use Illuminate\Support\Facades\Schema;
|
||||||
|
|
||||||
|
return new class extends Migration
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Run the migrations.
|
||||||
|
*/
|
||||||
|
public function up(): void
|
||||||
|
{
|
||||||
|
Schema::table('users', function (Blueprint $table) {
|
||||||
|
$table->string('theme')->nullable();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reverse the migrations.
|
||||||
|
*/
|
||||||
|
public function down(): void
|
||||||
|
{
|
||||||
|
Schema::table('users', function (Blueprint $table) {
|
||||||
|
$table->dropColumn('theme');
|
||||||
|
});
|
||||||
|
}
|
||||||
|
};
|
@ -25,7 +25,7 @@ public function run(): void
|
|||||||
{
|
{
|
||||||
//$this->populateLegacyArtworks();
|
//$this->populateLegacyArtworks();
|
||||||
//die();
|
//die();
|
||||||
$current_page = 283;
|
$current_page = 0;
|
||||||
$totalArtworks = 0;
|
$totalArtworks = 0;
|
||||||
$missingArtworks = 0;
|
$missingArtworks = 0;
|
||||||
$missingModel = 0;
|
$missingModel = 0;
|
||||||
@ -43,20 +43,20 @@ public function run(): void
|
|||||||
if ($legacyUser->artworks->count() < count($user->artworks)) {
|
if ($legacyUser->artworks->count() < count($user->artworks)) {
|
||||||
$countDiff = count($user->artworks) - $legacyUser->artworks->count();
|
$countDiff = count($user->artworks) - $legacyUser->artworks->count();
|
||||||
$missingArtworks += $countDiff;
|
$missingArtworks += $countDiff;
|
||||||
$this->command->comment('Artist ID '
|
$this->command->comment('Artist ID '
|
||||||
. $legacyUser->id
|
. $legacyUser->id
|
||||||
. ' '
|
. ' '
|
||||||
. $legacyUser->name
|
. $legacyUser->name
|
||||||
. ' has '
|
. ' has '
|
||||||
. $legacyUser->artworks->count()
|
. $legacyUser->artworks->count()
|
||||||
. ' artworks.');
|
. ' artworks.');
|
||||||
$this->command->error('Missing ' . $countDiff . ' artworks.');
|
$this->command->error('Missing ' . $countDiff . ' artworks.');
|
||||||
foreach ($user->artworks as $artwork) {
|
foreach ($user->artworks as $artwork) {
|
||||||
$date = Carbon::parse($artwork->created_at);
|
$date = Carbon::parse($artwork->created_at);
|
||||||
$basename = $date->format('Y')
|
$basename = $date->format('Y')
|
||||||
. '/' . $date->format('m')
|
. '/' . $date->format('m')
|
||||||
. '/' . Str::slug($legacyUser->name)
|
. '/' . Str::slug($legacyUser->name)
|
||||||
. '-' . Str::slug($artwork->title)
|
. '-' . Str::slug($artwork->title)
|
||||||
. '_' . $artwork->id . '.jpg';
|
. '_' . $artwork->id . '.jpg';
|
||||||
if (Storage::disk('static')->exists('artworks/' . $basename)) {
|
if (Storage::disk('static')->exists('artworks/' . $basename)) {
|
||||||
$artworkModel = Artwork::where('filename', $basename)->first();
|
$artworkModel = Artwork::where('filename', $basename)->first();
|
||||||
@ -66,12 +66,12 @@ public function run(): void
|
|||||||
StashAndOptimizeLegacyArtworkJob::dispatch($legacyUser, $artwork);
|
StashAndOptimizeLegacyArtworkJob::dispatch($legacyUser, $artwork);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
$this->command->line('Locally stored all of ' . $legacyUser->name . '\'s artworks.');
|
$this->command->line('Locally stored all of ' . $legacyUser->name . '\'s artworks.');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
$current_page++;
|
$current_page++;
|
||||||
$response = $this->getResponseFromApi($current_page);
|
$response = $this->getResponseFromApi($current_page);
|
||||||
@ -83,7 +83,7 @@ public function run(): void
|
|||||||
|
|
||||||
private function getResponseFromApi($current_page) {
|
private function getResponseFromApi($current_page) {
|
||||||
$response = Http::timeout(180)
|
$response = Http::timeout(180)
|
||||||
->get('https://noagendaartgenerator.com/artistapi',
|
->get('https://noagendaartgenerator.com/artistapi',
|
||||||
[
|
[
|
||||||
'p' => '7476',
|
'p' => '7476',
|
||||||
'page' => $current_page,
|
'page' => $current_page,
|
||||||
|
990
site/public/adm/adminer.css
Normal file
990
site/public/adm/adminer.css
Normal file
@ -0,0 +1,990 @@
|
|||||||
|
/** theme "easy on the eyes" for Adminer by p.galkaev@miraidenshi-tech.jp */
|
||||||
|
|
||||||
|
@import url(//fonts.googleapis.com/css?family=Source+Sans+Pro:400,900);
|
||||||
|
|
||||||
|
/* reset
|
||||||
|
----------------------------------------------------------------------- */
|
||||||
|
|
||||||
|
*,
|
||||||
|
*:after,
|
||||||
|
*:before {
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
outline: none;
|
||||||
|
cursor: default;
|
||||||
|
-webkit-appearance: none;
|
||||||
|
-moz-box-sizing: border-box;
|
||||||
|
-webkit-box-sizing: border-box;
|
||||||
|
box-sizing: border-box;
|
||||||
|
-webkit-print-color-adjust: exact;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* for font awesome */
|
||||||
|
*:not(.fa) {
|
||||||
|
font-family: 'Source Sans Pro', sans-serif;
|
||||||
|
}
|
||||||
|
|
||||||
|
#logins a, #tables a, #tables span {
|
||||||
|
background: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
p,
|
||||||
|
form
|
||||||
|
{
|
||||||
|
margin: 0;
|
||||||
|
margin-bottom: 20px;
|
||||||
|
font-size: 14px;
|
||||||
|
}
|
||||||
|
|
||||||
|
p:last-child,
|
||||||
|
form:last-child
|
||||||
|
{
|
||||||
|
margin-bottom: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.type,
|
||||||
|
.options select
|
||||||
|
{
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
sup{
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* js tooltip
|
||||||
|
----------------------------------------------------------------------- */
|
||||||
|
|
||||||
|
.js .column {
|
||||||
|
position: absolute;
|
||||||
|
padding: 0;
|
||||||
|
margin-top: 0;
|
||||||
|
top: 50px;
|
||||||
|
z-index: 9;
|
||||||
|
left: 0px;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.js .column:not(.hidden){
|
||||||
|
display: flex;
|
||||||
|
}
|
||||||
|
|
||||||
|
.js .column a{
|
||||||
|
text-align: center;
|
||||||
|
color: black;
|
||||||
|
font-weight: bold;
|
||||||
|
flex-grow: 1;
|
||||||
|
background: #fb4;
|
||||||
|
height: 40px;
|
||||||
|
line-height: 40px;
|
||||||
|
font-size: 15px;
|
||||||
|
font-weight: normal;
|
||||||
|
}
|
||||||
|
|
||||||
|
.js .column a:hover{
|
||||||
|
background-color: gold;
|
||||||
|
color: black;
|
||||||
|
}
|
||||||
|
|
||||||
|
#help {
|
||||||
|
position: absolute;
|
||||||
|
border: none;
|
||||||
|
background: #fb4;
|
||||||
|
font-family: monospace;
|
||||||
|
z-index: 1;
|
||||||
|
font-size: 14px;
|
||||||
|
line-height: 30px;
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
#help a{
|
||||||
|
color: black;
|
||||||
|
height: 100%;
|
||||||
|
display: block;
|
||||||
|
padding: 0 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#help a:hover{
|
||||||
|
background-color: gold;
|
||||||
|
}
|
||||||
|
|
||||||
|
#help, .js .column{
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* error and message
|
||||||
|
----------------------------------------------------------------------- */
|
||||||
|
|
||||||
|
.error, .message {
|
||||||
|
padding: 5px 15px 7px;
|
||||||
|
margin: 10px 0;
|
||||||
|
font-size: 14px;
|
||||||
|
display: table;
|
||||||
|
border-radius: 3px;
|
||||||
|
color: white;
|
||||||
|
}
|
||||||
|
|
||||||
|
.error{
|
||||||
|
background-color: crimson;
|
||||||
|
}
|
||||||
|
|
||||||
|
.message{
|
||||||
|
background-color: seagreen;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* scroll bar
|
||||||
|
----------------------------------------------------------------------- */
|
||||||
|
|
||||||
|
::selection {
|
||||||
|
background-color: #2a65ae;
|
||||||
|
}
|
||||||
|
/*
|
||||||
|
::-moz-selection {
|
||||||
|
background-color: #333;
|
||||||
|
}*/
|
||||||
|
|
||||||
|
/* scroll bar
|
||||||
|
----------------------------------------------------------------------- */
|
||||||
|
|
||||||
|
::-webkit-scrollbar {
|
||||||
|
background-color: black;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
|
||||||
|
::-webkit-scrollbar-thumb {
|
||||||
|
background-color: #555;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
|
||||||
|
::-webkit-scrollbar:vertical{
|
||||||
|
width: 6px;
|
||||||
|
}
|
||||||
|
|
||||||
|
::-webkit-scrollbar-thumb:vertical{
|
||||||
|
border-left: 0px solid black;
|
||||||
|
width: 6px;
|
||||||
|
}
|
||||||
|
|
||||||
|
::-webkit-scrollbar:horizontal{
|
||||||
|
height: 6px;
|
||||||
|
}
|
||||||
|
|
||||||
|
::-webkit-scrollbar-thumb:horizontal{
|
||||||
|
border-top: 0px solid black;
|
||||||
|
height: 6px;
|
||||||
|
}
|
||||||
|
|
||||||
|
::-webkit-scrollbar-corner{
|
||||||
|
color: black;
|
||||||
|
background-color: black;
|
||||||
|
border-color: black;
|
||||||
|
}
|
||||||
|
|
||||||
|
::-webkit-resizer{
|
||||||
|
background-color: #555;
|
||||||
|
border-radius: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* html and body
|
||||||
|
----------------------------------------------------------------------- */
|
||||||
|
|
||||||
|
html,
|
||||||
|
body {
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
max-height: 100%;
|
||||||
|
overflow: hidden;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
body{
|
||||||
|
min-height: 100%;
|
||||||
|
font-size: 14px;
|
||||||
|
position: relative;
|
||||||
|
color: #ccc;
|
||||||
|
background-color: black;
|
||||||
|
overflow: hidden;
|
||||||
|
display: flex;
|
||||||
|
flex-wrap: nowrap;
|
||||||
|
font: inherit;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* headings
|
||||||
|
----------------------------------------------------------------------- */
|
||||||
|
|
||||||
|
h1{
|
||||||
|
font-size: 24px;
|
||||||
|
margin: 0;
|
||||||
|
padding: 0 18px;
|
||||||
|
border-bottom: 1px solid #444;
|
||||||
|
font-weight: bold;
|
||||||
|
height: 70px;
|
||||||
|
line-height: 70px;
|
||||||
|
color: #555;
|
||||||
|
background: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
h2{
|
||||||
|
font-size: 24px;
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
padding-left: 50px;
|
||||||
|
border-bottom: 1px solid #333;
|
||||||
|
color: #2CC990;
|
||||||
|
font-weight: bold;
|
||||||
|
background: none;
|
||||||
|
height: 70px;
|
||||||
|
line-height: 70px;
|
||||||
|
text-transform: uppercase;
|
||||||
|
}
|
||||||
|
|
||||||
|
h3{
|
||||||
|
font-weight: bold;
|
||||||
|
font-size: 24px;
|
||||||
|
margin: 40px 0 10px;
|
||||||
|
color: #2CC990;
|
||||||
|
padding-bottom: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* links
|
||||||
|
----------------------------------------------------------------------- */
|
||||||
|
|
||||||
|
a{
|
||||||
|
color: inherit;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
|
||||||
|
a:hover, a:visited{
|
||||||
|
color: inherit;
|
||||||
|
}
|
||||||
|
|
||||||
|
a:link:hover, a:visited:hover {
|
||||||
|
color: inherit;
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* table
|
||||||
|
----------------------------------------------------------------------- */
|
||||||
|
|
||||||
|
table{
|
||||||
|
margin: 0;
|
||||||
|
margin-bottom: 20px;
|
||||||
|
border: 0;
|
||||||
|
border-collapse: collapse;
|
||||||
|
font-size: 13px;
|
||||||
|
width: 100%;
|
||||||
|
/*table-layout: fixed;*/
|
||||||
|
}
|
||||||
|
|
||||||
|
tr:hover th,
|
||||||
|
.checked th
|
||||||
|
{
|
||||||
|
background: #333 !important;
|
||||||
|
color: #ddd;
|
||||||
|
border-color: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
tr:hover td,
|
||||||
|
.checked td
|
||||||
|
{
|
||||||
|
background: #222 !important;
|
||||||
|
color: #ddd;
|
||||||
|
border-color: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.links + table tr:hover th{
|
||||||
|
color: #ddd;
|
||||||
|
background: #336f5a !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.links + table tr:hover td{
|
||||||
|
background: #2CC990 !important;
|
||||||
|
color: #333;
|
||||||
|
}
|
||||||
|
|
||||||
|
p + table{
|
||||||
|
margin-top: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
tr{
|
||||||
|
padding-bottom: 1px;
|
||||||
|
}
|
||||||
|
|
||||||
|
td, th {
|
||||||
|
border: 0;
|
||||||
|
border-right: 1px solid #333;
|
||||||
|
padding: 0 12px;
|
||||||
|
line-height: 30px;
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
|
||||||
|
td:last-child,
|
||||||
|
th:last-child{
|
||||||
|
border-right: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
th{
|
||||||
|
position: relative;
|
||||||
|
background: #222;
|
||||||
|
font-weight: normal;
|
||||||
|
width: 17%;
|
||||||
|
border-left: 5px solid #336f5a;
|
||||||
|
border-bottom: 1px solid rgba(255, 255, 255, .13);
|
||||||
|
color: #999;
|
||||||
|
}
|
||||||
|
|
||||||
|
.checkable td:first-child{
|
||||||
|
background: #222;
|
||||||
|
border-right-style: solid;
|
||||||
|
}
|
||||||
|
|
||||||
|
table.checkable th{
|
||||||
|
border-left: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
td{
|
||||||
|
background: #000;
|
||||||
|
border-bottom: 1px solid rgba(255, 255, 255, .1);
|
||||||
|
}
|
||||||
|
|
||||||
|
.odd th{
|
||||||
|
background: #222;
|
||||||
|
}
|
||||||
|
|
||||||
|
.odd td{
|
||||||
|
background: #000;
|
||||||
|
}
|
||||||
|
|
||||||
|
thead td,
|
||||||
|
thead th
|
||||||
|
{
|
||||||
|
background: transparent !important;
|
||||||
|
color: #ccc;
|
||||||
|
border-right-style: dashed;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
table#edit-fields td,
|
||||||
|
table#edit-fields th
|
||||||
|
{
|
||||||
|
padding: 0;
|
||||||
|
padding-left: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
table#edit-fields thead th,
|
||||||
|
table#edit-fields thead td
|
||||||
|
{
|
||||||
|
padding-left: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
thead tr:hover th,
|
||||||
|
thead tr:hover td,
|
||||||
|
.links + table thead tr:hover th,
|
||||||
|
.links + table thead tr:hover td,
|
||||||
|
table#edit-fields thead tr:hover th,
|
||||||
|
table#edit-fields thead tr:hover td
|
||||||
|
{
|
||||||
|
background-color: transparent !important;
|
||||||
|
color: inherit !important;
|
||||||
|
border-bottom: 1px solid rgba(255, 255, 255, .1) !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
thead tr:hover th{
|
||||||
|
border-bottom: 1px solid rgba(255, 255, 255, .13) !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
thead th {
|
||||||
|
border-left-color: transparent;
|
||||||
|
text-align: left;
|
||||||
|
padding: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* form
|
||||||
|
----------------------------------------------------------------------- */
|
||||||
|
|
||||||
|
input,
|
||||||
|
select,
|
||||||
|
textarea
|
||||||
|
{
|
||||||
|
color: #333;
|
||||||
|
font-size: 15px;
|
||||||
|
height: 30px;
|
||||||
|
background-color: #ddd;
|
||||||
|
border: none;
|
||||||
|
border-radius: 3px;
|
||||||
|
line-height: 28px;
|
||||||
|
cursor: pointer;
|
||||||
|
padding: 0;
|
||||||
|
padding-left: 10px;
|
||||||
|
-webkit-appearance: none;
|
||||||
|
outline: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
input:hover,
|
||||||
|
select:hover,
|
||||||
|
input:focus,
|
||||||
|
select:focus
|
||||||
|
{
|
||||||
|
background-color: #bbb;
|
||||||
|
}
|
||||||
|
|
||||||
|
th input,
|
||||||
|
td input,
|
||||||
|
th select,
|
||||||
|
td select,
|
||||||
|
td textarea
|
||||||
|
{
|
||||||
|
background-color: transparent;
|
||||||
|
color: pink;
|
||||||
|
width: 100%;
|
||||||
|
display: inline;
|
||||||
|
border-left: 1px dashed #555;
|
||||||
|
border-radius: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
th input:hover,
|
||||||
|
th select:hover,
|
||||||
|
td input:hover,
|
||||||
|
td select:hover,
|
||||||
|
th input:focus,
|
||||||
|
th select:focus,
|
||||||
|
td input:focus,
|
||||||
|
td select:focus
|
||||||
|
{
|
||||||
|
background-color: rgba(255, 255, 255, .15);
|
||||||
|
}
|
||||||
|
|
||||||
|
th input[type='checkbox'],
|
||||||
|
th input[type='radio'],
|
||||||
|
td input[type='checkbox'],
|
||||||
|
td input[type='radio']{
|
||||||
|
border-left: none;
|
||||||
|
background-color: transparent !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
td input + a,
|
||||||
|
td input + a:visited
|
||||||
|
{
|
||||||
|
text-transform: uppercase;
|
||||||
|
margin-left: 5px;
|
||||||
|
color: dodgerblue;
|
||||||
|
font-size: 12px;
|
||||||
|
font-weight: normal;
|
||||||
|
}
|
||||||
|
|
||||||
|
td input + a:hover{
|
||||||
|
color: lightskyblue !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
input.icon{
|
||||||
|
padding-left: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
input.icon::after{
|
||||||
|
content: '';
|
||||||
|
}
|
||||||
|
|
||||||
|
th select,
|
||||||
|
td select
|
||||||
|
{
|
||||||
|
color: lightcoral;
|
||||||
|
}
|
||||||
|
|
||||||
|
input[type='number'] {
|
||||||
|
min-width: 55px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* radio */
|
||||||
|
input[type='radio']{
|
||||||
|
-webkit-appearance: radio;
|
||||||
|
width: 18px;
|
||||||
|
height: 18px;
|
||||||
|
vertical-align: middle;
|
||||||
|
margin-left: 8px;
|
||||||
|
margin-right: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* checkbox */
|
||||||
|
input[type='checkbox']{
|
||||||
|
width: 30px;
|
||||||
|
height: 30px;
|
||||||
|
margin-right: 6px;
|
||||||
|
position: relative;
|
||||||
|
border-radius: 2px;
|
||||||
|
margin-left: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
input[type=checkbox]:hover{
|
||||||
|
border-color: white;
|
||||||
|
}
|
||||||
|
|
||||||
|
input[type=checkbox]::after {
|
||||||
|
cursor: pointer;
|
||||||
|
position: absolute;
|
||||||
|
content: '×';
|
||||||
|
left: 17%;
|
||||||
|
top: 4.5%;
|
||||||
|
color: #ccc;
|
||||||
|
font-size: 35px;
|
||||||
|
font-family: sans-serif;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
input[type=checkbox]:hover::after {
|
||||||
|
color: #aaa;
|
||||||
|
}
|
||||||
|
|
||||||
|
input[type=checkbox]:checked::after {
|
||||||
|
color: #333;
|
||||||
|
}
|
||||||
|
|
||||||
|
td input[type='checkbox'],
|
||||||
|
th input[type='checkbox']
|
||||||
|
{
|
||||||
|
margin-left: 10px;
|
||||||
|
margin-right: 26px;
|
||||||
|
}
|
||||||
|
|
||||||
|
td input[type='checkbox']::after{
|
||||||
|
left: 10%;
|
||||||
|
top: -2px;
|
||||||
|
color: #333;
|
||||||
|
}
|
||||||
|
|
||||||
|
td input[type='checkbox']:hover::after{
|
||||||
|
color: #555;
|
||||||
|
}
|
||||||
|
|
||||||
|
td input[type='checkbox']:checked::after{
|
||||||
|
color: #ddd;
|
||||||
|
}
|
||||||
|
|
||||||
|
p input:first-child{
|
||||||
|
margin-left: 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
label{
|
||||||
|
line-height: 27px;
|
||||||
|
font-size: 14px;
|
||||||
|
}
|
||||||
|
|
||||||
|
th label{
|
||||||
|
line-height: 35px;
|
||||||
|
}
|
||||||
|
|
||||||
|
label input {
|
||||||
|
vertical-align: top;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* submit */
|
||||||
|
input[type='submit']{
|
||||||
|
color: white;
|
||||||
|
background-color: royalblue;
|
||||||
|
padding: 0 25px;
|
||||||
|
margin-right: 20px;
|
||||||
|
border-radius: 2px;
|
||||||
|
}
|
||||||
|
|
||||||
|
input[type='submit']:hover{
|
||||||
|
background-color: #214ac5;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* select */
|
||||||
|
select{
|
||||||
|
padding-left: 6px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* textarea */
|
||||||
|
textarea{
|
||||||
|
min-height: 150px;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* fieldset */
|
||||||
|
fieldset {
|
||||||
|
display: inline;
|
||||||
|
vertical-align: top;
|
||||||
|
padding: 4px 7px 7px;
|
||||||
|
margin: 0 5px 10px;
|
||||||
|
border: 1px dashed #555;
|
||||||
|
border-radius: 2px;
|
||||||
|
min-height: 60px;
|
||||||
|
}
|
||||||
|
|
||||||
|
fieldset > div{
|
||||||
|
display: flex;
|
||||||
|
}
|
||||||
|
|
||||||
|
fieldset > div * + p{
|
||||||
|
margin-left: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
fieldset > div > div{
|
||||||
|
margin-left: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
fieldset > div > div:first-child{
|
||||||
|
margin-left: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
fieldset > div input,
|
||||||
|
fieldset > div select
|
||||||
|
{
|
||||||
|
margin-right: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
fieldset > div input[type='checkbox']{
|
||||||
|
margin-left: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
fieldset input{
|
||||||
|
flex-grow: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
fieldset input[type='submit']{
|
||||||
|
margin-right: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
fieldset input[type='submit']:last-of-type{
|
||||||
|
margin-right: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
legend{
|
||||||
|
font-size: 14px;
|
||||||
|
background-color: #000;
|
||||||
|
padding: 0 3px;
|
||||||
|
color: #999;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* menu
|
||||||
|
----------------------------------------------------------------------- */
|
||||||
|
|
||||||
|
#menu{
|
||||||
|
height: 100%;
|
||||||
|
width: 300px;
|
||||||
|
background-color: #333;
|
||||||
|
position: relative;
|
||||||
|
order: 1;
|
||||||
|
flex-grow: 0;
|
||||||
|
flex-shrink: 0;
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
top: 0;
|
||||||
|
overflow-y: overlay;
|
||||||
|
}
|
||||||
|
|
||||||
|
#menu p {
|
||||||
|
padding: 18px;
|
||||||
|
margin: 0;
|
||||||
|
border-bottom: 1px solid #444;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* logo */
|
||||||
|
#h1{
|
||||||
|
color: #555;
|
||||||
|
text-decoration: none;
|
||||||
|
font-style: inherit;
|
||||||
|
}
|
||||||
|
|
||||||
|
.version {
|
||||||
|
color: #555;
|
||||||
|
font-size: inherit;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* db select */
|
||||||
|
#dbs select{
|
||||||
|
width: 228px;
|
||||||
|
margin-left: 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* links */
|
||||||
|
#menu .links{
|
||||||
|
padding-top: 0;
|
||||||
|
padding-bottom: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#menu .links a:nth-child(even){
|
||||||
|
margin-left: 6px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#menu .links a{
|
||||||
|
display: inline-block;
|
||||||
|
vertical-align: top;
|
||||||
|
width: 127px;
|
||||||
|
height: 31px;
|
||||||
|
margin: 0;
|
||||||
|
margin-bottom: 10px;
|
||||||
|
border: 1px solid #555;
|
||||||
|
line-height: 27px;
|
||||||
|
text-align: center;
|
||||||
|
text-transform: uppercase;
|
||||||
|
font-size: 12px;
|
||||||
|
border-radius: 3px;
|
||||||
|
color: #999;
|
||||||
|
}
|
||||||
|
|
||||||
|
#menu .links a.active,
|
||||||
|
#menu .links a:hover
|
||||||
|
{
|
||||||
|
border: 1px solid #ccc;
|
||||||
|
font-weight: normal;
|
||||||
|
color: inherit;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* tables */
|
||||||
|
#logins, #tables{
|
||||||
|
border-bottom: none;
|
||||||
|
line-height: 20px;
|
||||||
|
padding: 18px 0;
|
||||||
|
overflow-y: auto !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
#tables br{
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
#tables a {
|
||||||
|
float: right;
|
||||||
|
padding: 5px 18px 9px;
|
||||||
|
line-height: 17px;
|
||||||
|
color: #2CC990;
|
||||||
|
font-size: 13px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#tables .structure, #tables .view {
|
||||||
|
float: none;
|
||||||
|
display: block;
|
||||||
|
color: inherit;
|
||||||
|
font-size: 14px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#logins a {
|
||||||
|
display: block;
|
||||||
|
padding: 5px 18px 9px;
|
||||||
|
color: inherit;
|
||||||
|
font-size: 14px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#tables a.select.active,
|
||||||
|
#tables a.select:hover
|
||||||
|
{
|
||||||
|
color: #fba;
|
||||||
|
}
|
||||||
|
|
||||||
|
#logins a:hover,
|
||||||
|
#tables a[title]:hover,
|
||||||
|
#tables a.active,
|
||||||
|
#tables a.select:hover + a,
|
||||||
|
#tables a.select.active + a
|
||||||
|
{
|
||||||
|
background-color: #555;
|
||||||
|
font-weight: normal;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* content
|
||||||
|
----------------------------------------------------------------------- */
|
||||||
|
|
||||||
|
#content{
|
||||||
|
height: 100%;
|
||||||
|
width: 100%;
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
padding-left: 50px;
|
||||||
|
padding-right: 50px;
|
||||||
|
padding-bottom: 30px;
|
||||||
|
overflow-y: auto !important;
|
||||||
|
order: 2;
|
||||||
|
flex-grow: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
#breadcrumb{
|
||||||
|
position: relative;
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
#content h2{
|
||||||
|
margin-left: -50px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* links */
|
||||||
|
#content .links a,
|
||||||
|
code.jush-sql ~ a,
|
||||||
|
#fieldset-history > a:first-child
|
||||||
|
{
|
||||||
|
display: inline-block;
|
||||||
|
height: 32px;
|
||||||
|
line-height: 30px;
|
||||||
|
padding: 0 10px;
|
||||||
|
border: 1px solid #666;
|
||||||
|
border-radius: 3px;
|
||||||
|
font-size: 12px;
|
||||||
|
text-transform: uppercase;
|
||||||
|
}
|
||||||
|
|
||||||
|
#content .links a:hover,
|
||||||
|
code.jush-sql ~ a:hover,
|
||||||
|
#fieldset-history > a:first-child:hover
|
||||||
|
{
|
||||||
|
color: #eee;
|
||||||
|
border-color: #eee;
|
||||||
|
}
|
||||||
|
|
||||||
|
#ajaxstatus + *{
|
||||||
|
margin-top: 18px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#ajaxstatus + *.links {
|
||||||
|
margin-top: 0 !important;
|
||||||
|
height: 65px;
|
||||||
|
line-height: 55px;
|
||||||
|
margin-bottom: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
#ajaxstatus + .links a{
|
||||||
|
white-space: nowrap;
|
||||||
|
margin-right: 20px;
|
||||||
|
padding: 0;
|
||||||
|
padding-bottom: 5px;
|
||||||
|
border: 0;
|
||||||
|
border-radius: 0;
|
||||||
|
font-size: 15px;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
#ajaxstatus + .links a.active,
|
||||||
|
#ajaxstatus + .links a:hover
|
||||||
|
{
|
||||||
|
border-bottom: 1px solid;
|
||||||
|
border-color: inherit;
|
||||||
|
color: inherit;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* fieldset search */
|
||||||
|
#fieldset-search > div > *{
|
||||||
|
margin-right: 5px;
|
||||||
|
margin-bottom: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* fieldset search */
|
||||||
|
#fieldset-partition p{
|
||||||
|
margin-bottom: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* feldset history */
|
||||||
|
#fieldset-history{
|
||||||
|
flex-wrap: wrap;
|
||||||
|
}
|
||||||
|
|
||||||
|
#fieldset-history i{
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
#fieldset-history input[type='submit']{
|
||||||
|
flex-grow: 0;
|
||||||
|
order: 1;
|
||||||
|
margin-top: 1px;
|
||||||
|
margin-left: 17px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#fieldset-history > div a:last-child{
|
||||||
|
order: 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
#fieldset-history > a{
|
||||||
|
flex-grow: 0;
|
||||||
|
flex-basis: 5%;
|
||||||
|
min-width: 45px;
|
||||||
|
text-align: center;
|
||||||
|
margin-bottom: 10px;
|
||||||
|
margin-left: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#fieldset-history > .time{
|
||||||
|
flex-grow: 0;
|
||||||
|
flex-basis: 5%;
|
||||||
|
text-align: center;
|
||||||
|
line-height: 29px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#fieldset-history > code{
|
||||||
|
flex-grow: 1;
|
||||||
|
flex-basis: 89%;
|
||||||
|
line-height: 29px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#fieldset-history > .time{
|
||||||
|
flex-grow: 0;
|
||||||
|
flex-basis: 5%;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* sql
|
||||||
|
----------------------------------------------------------------------- */
|
||||||
|
|
||||||
|
.sqlarea{
|
||||||
|
border: 1px solid #444 !important;
|
||||||
|
width: 100% !important;
|
||||||
|
padding: 12px 15px !important;
|
||||||
|
font-size: 15px;
|
||||||
|
margin-bottom: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.jush-sql_code{
|
||||||
|
color: #fafafa !important;
|
||||||
|
font-family: 'Source Sans Pro', sans-serif !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.jush a, .jush a:visited{
|
||||||
|
color: #fba;
|
||||||
|
font-weight: normal;
|
||||||
|
}
|
||||||
|
|
||||||
|
.jush a:hover{
|
||||||
|
color: #fba;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
|
||||||
|
.jush-php_quo, .jush-quo, .jush-quo_one, .jush-php_eot, .jush-apo, .jush-sql_apo, .jush-sqlite_apo, .jush-sql_quo, .jush-sql_eot{
|
||||||
|
color: aquamarine;
|
||||||
|
}
|
||||||
|
|
||||||
|
.jush-bac, .jush-php_bac, .jush-bra, .jush-mssql_bra, .jush-sqlite_quo{
|
||||||
|
color: plum;
|
||||||
|
}
|
||||||
|
|
||||||
|
.jush-num, .jush-clr{
|
||||||
|
color: #85E2FF;
|
||||||
|
}
|
||||||
|
|
||||||
|
code {
|
||||||
|
background: #000;
|
||||||
|
font-size: 14px;
|
||||||
|
}
|
||||||
|
|
||||||
|
code.jush-sql ~ a{
|
||||||
|
position: relative;
|
||||||
|
margin-left: 5px;
|
||||||
|
/*margin-top: 20px;
|
||||||
|
margin-bottom: 20px; */
|
||||||
|
}
|
||||||
|
|
||||||
|
code.jush-sql ~ a:first-of-type{
|
||||||
|
margin-left: 30px;
|
||||||
|
}
|
||||||
|
|
||||||
|
code.jush-sql ~ a:first-of-type::before{
|
||||||
|
content: '◀';
|
||||||
|
color: #555;
|
||||||
|
position: absolute;
|
||||||
|
left: -22px;
|
||||||
|
font-size: 22px;
|
||||||
|
top: -1px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* logout form
|
||||||
|
----------------------------------------------------------------------- */
|
||||||
|
|
||||||
|
body > form{
|
||||||
|
position: absolute;
|
||||||
|
}
|
1795
site/public/adm/index.php
Normal file
1795
site/public/adm/index.php
Normal file
File diff suppressed because one or more lines are too long
1
site/public/css/filament/filament/app.css
Normal file
1
site/public/css/filament/filament/app.css
Normal file
File diff suppressed because one or more lines are too long
49
site/public/css/filament/forms/forms.css
Normal file
49
site/public/css/filament/forms/forms.css
Normal file
File diff suppressed because one or more lines are too long
1
site/public/css/filament/support/support.css
Normal file
1
site/public/css/filament/support/support.css
Normal file
@ -0,0 +1 @@
|
|||||||
|
.fi-pagination-items,.fi-pagination-overview,.fi-pagination-records-per-page-select:not(.fi-compact){display:none}@supports (container-type:inline-size){.fi-pagination{container-type:inline-size}@container (min-width: 28rem){.fi-pagination-records-per-page-select.fi-compact{display:none}.fi-pagination-records-per-page-select:not(.fi-compact){display:inline}}@container (min-width: 56rem){.fi-pagination:not(.fi-simple)>.fi-pagination-previous-btn{display:none}.fi-pagination-overview{display:inline}.fi-pagination:not(.fi-simple)>.fi-pagination-next-btn{display:none}.fi-pagination-items{display:flex}}}@supports not (container-type:inline-size){@media (min-width:640px){.fi-pagination-records-per-page-select.fi-compact{display:none}.fi-pagination-records-per-page-select:not(.fi-compact){display:inline}}@media (min-width:768px){.fi-pagination:not(.fi-simple)>.fi-pagination-previous-btn{display:none}.fi-pagination-overview{display:inline}.fi-pagination:not(.fi-simple)>.fi-pagination-next-btn{display:none}.fi-pagination-items{display:flex}}}.tippy-box[data-animation=fade][data-state=hidden]{opacity:0}[data-tippy-root]{max-width:calc(100vw - 10px)}.tippy-box{background-color:#333;border-radius:4px;color:#fff;font-size:14px;line-height:1.4;outline:0;position:relative;transition-property:transform,visibility,opacity;white-space:normal}.tippy-box[data-placement^=top]>.tippy-arrow{bottom:0}.tippy-box[data-placement^=top]>.tippy-arrow:before{border-top-color:initial;border-width:8px 8px 0;bottom:-7px;left:0;transform-origin:center top}.tippy-box[data-placement^=bottom]>.tippy-arrow{top:0}.tippy-box[data-placement^=bottom]>.tippy-arrow:before{border-bottom-color:initial;border-width:0 8px 8px;left:0;top:-7px;transform-origin:center bottom}.tippy-box[data-placement^=left]>.tippy-arrow{right:0}.tippy-box[data-placement^=left]>.tippy-arrow:before{border-left-color:initial;border-width:8px 0 8px 8px;right:-7px;transform-origin:center left}.tippy-box[data-placement^=right]>.tippy-arrow{left:0}.tippy-box[data-placement^=right]>.tippy-arrow:before{border-right-color:initial;border-width:8px 8px 8px 0;left:-7px;transform-origin:center right}.tippy-box[data-inertia][data-state=visible]{transition-timing-function:cubic-bezier(.54,1.5,.38,1.11)}.tippy-arrow{color:#333;height:16px;width:16px}.tippy-arrow:before{border-color:transparent;border-style:solid;content:"";position:absolute}.tippy-content{padding:5px 9px;position:relative;z-index:1}.tippy-box[data-theme~=light]{background-color:#fff;box-shadow:0 0 20px 4px #9aa1b126,0 4px 80px -8px #24282f40,0 4px 4px -2px #5b5e6926;color:#26323d}.tippy-box[data-theme~=light][data-placement^=top]>.tippy-arrow:before{border-top-color:#fff}.tippy-box[data-theme~=light][data-placement^=bottom]>.tippy-arrow:before{border-bottom-color:#fff}.tippy-box[data-theme~=light][data-placement^=left]>.tippy-arrow:before{border-left-color:#fff}.tippy-box[data-theme~=light][data-placement^=right]>.tippy-arrow:before{border-right-color:#fff}.tippy-box[data-theme~=light]>.tippy-backdrop{background-color:#fff}.tippy-box[data-theme~=light]>.tippy-svg-arrow{fill:#fff}.fi-sortable-ghost{opacity:.3}
|
1
site/public/js/filament/filament/app.js
Normal file
1
site/public/js/filament/filament/app.js
Normal file
File diff suppressed because one or more lines are too long
13
site/public/js/filament/filament/echo.js
Normal file
13
site/public/js/filament/filament/echo.js
Normal file
File diff suppressed because one or more lines are too long
1
site/public/js/filament/forms/components/color-picker.js
Normal file
1
site/public/js/filament/forms/components/color-picker.js
Normal file
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
123
site/public/js/filament/forms/components/file-upload.js
Normal file
123
site/public/js/filament/forms/components/file-upload.js
Normal file
File diff suppressed because one or more lines are too long
1
site/public/js/filament/forms/components/key-value.js
Normal file
1
site/public/js/filament/forms/components/key-value.js
Normal file
@ -0,0 +1 @@
|
|||||||
|
function r({state:i}){return{state:i,rows:[],shouldUpdateRows:!0,init:function(){this.updateRows(),this.rows.length<=0?this.rows.push({key:"",value:""}):this.updateState(),this.$watch("state",(t,e)=>{let s=o=>o===null?0:Array.isArray(o)?o.length:typeof o!="object"?0:Object.keys(o).length;s(t)===0&&s(e)===0||this.updateRows()})},addRow:function(){this.rows.push({key:"",value:""}),this.updateState()},deleteRow:function(t){this.rows.splice(t,1),this.rows.length<=0&&this.addRow(),this.updateState()},reorderRows:function(t){let e=Alpine.raw(this.rows),s=e.splice(t.oldIndex,1)[0];e.splice(t.newIndex,0,s),this.rows=e,this.updateState()},updateRows:function(){if(!this.shouldUpdateRows){this.shouldUpdateRows=!0;return}let t=[];for(let[e,s]of Object.entries(this.state??{}))t.push({key:e,value:s});this.rows=t},updateState:function(){let t={};this.rows.forEach(e=>{e.key===""||e.key===null||(t[e.key]=e.value)}),this.shouldUpdateRows=!1,this.state=t}}}export{r as default};
|
51
site/public/js/filament/forms/components/markdown-editor.js
Normal file
51
site/public/js/filament/forms/components/markdown-editor.js
Normal file
File diff suppressed because one or more lines are too long
143
site/public/js/filament/forms/components/rich-editor.js
Normal file
143
site/public/js/filament/forms/components/rich-editor.js
Normal file
File diff suppressed because one or more lines are too long
6
site/public/js/filament/forms/components/select.js
Normal file
6
site/public/js/filament/forms/components/select.js
Normal file
File diff suppressed because one or more lines are too long
1
site/public/js/filament/forms/components/tags-input.js
Normal file
1
site/public/js/filament/forms/components/tags-input.js
Normal file
@ -0,0 +1 @@
|
|||||||
|
function i({state:a,splitKeys:n}){return{newTag:"",state:a,createTag:function(){if(this.newTag=this.newTag.trim(),this.newTag!==""){if(this.state.includes(this.newTag)){this.newTag="";return}this.state.push(this.newTag),this.newTag=""}},deleteTag:function(t){this.state=this.state.filter(e=>e!==t)},reorderTags:function(t){let e=this.state.splice(t.oldIndex,1)[0];this.state.splice(t.newIndex,0,e),this.state=[...this.state]},input:{["x-on:blur"]:"createTag()",["x-model"]:"newTag",["x-on:keydown"](t){["Enter",...n].includes(t.key)&&(t.preventDefault(),t.stopPropagation(),this.createTag())},["x-on:paste"](){this.$nextTick(()=>{if(n.length===0){this.createTag();return}let t=n.map(e=>e.replace(/[/\-\\^$*+?.()|[\]{}]/g,"\\$&")).join("|");this.newTag.split(new RegExp(t,"g")).forEach(e=>{this.newTag=e,this.createTag()})})}}}}export{i as default};
|
1
site/public/js/filament/forms/components/textarea.js
Normal file
1
site/public/js/filament/forms/components/textarea.js
Normal file
@ -0,0 +1 @@
|
|||||||
|
function t({initialHeight:e}){return{init:function(){this.render()},render:function(){this.$el.scrollHeight>0&&(this.$el.style.height=e+"rem",this.$el.style.height=this.$el.scrollHeight+"px")}}}export{t as default};
|
1
site/public/js/filament/notifications/notifications.js
Normal file
1
site/public/js/filament/notifications/notifications.js
Normal file
File diff suppressed because one or more lines are too long
1
site/public/js/filament/support/async-alpine.js
Normal file
1
site/public/js/filament/support/async-alpine.js
Normal file
File diff suppressed because one or more lines are too long
35
site/public/js/filament/support/support.js
Normal file
35
site/public/js/filament/support/support.js
Normal file
File diff suppressed because one or more lines are too long
1
site/public/js/filament/tables/components/table.js
Normal file
1
site/public/js/filament/tables/components/table.js
Normal file
@ -0,0 +1 @@
|
|||||||
|
function c(){return{collapsedGroups:[],isLoading:!1,selectedRecords:[],shouldCheckUniqueSelection:!0,init:function(){this.$wire.$on("deselectAllTableRecords",()=>this.deselectAllRecords()),this.$watch("selectedRecords",()=>{if(!this.shouldCheckUniqueSelection){this.shouldCheckUniqueSelection=!0;return}this.selectedRecords=[...new Set(this.selectedRecords)],this.shouldCheckUniqueSelection=!1})},mountBulkAction:function(e){this.$wire.set("selectedTableRecords",this.selectedRecords,!1),this.$wire.mountTableBulkAction(e)},toggleSelectRecordsOnPage:function(){let e=this.getRecordsOnPage();if(this.areRecordsSelected(e)){this.deselectRecords(e);return}this.selectRecords(e)},toggleSelectRecordsInGroup:async function(e){if(this.isLoading=!0,this.areRecordsSelected(this.getRecordsInGroupOnPage(e))){this.deselectRecords(await this.$wire.getGroupedSelectableTableRecordKeys(e));return}this.selectRecords(await this.$wire.getGroupedSelectableTableRecordKeys(e)),this.isLoading=!1},getRecordsInGroupOnPage:function(e){let s=[];for(let t of this.$root.getElementsByClassName("fi-ta-record-checkbox"))t.dataset.group===e&&s.push(t.value);return s},getRecordsOnPage:function(){let e=[];for(let s of this.$root.getElementsByClassName("fi-ta-record-checkbox"))e.push(s.value);return e},selectRecords:function(e){for(let s of e)this.isRecordSelected(s)||this.selectedRecords.push(s)},deselectRecords:function(e){for(let s of e){let t=this.selectedRecords.indexOf(s);t!==-1&&this.selectedRecords.splice(t,1)}},selectAllRecords:async function(){this.isLoading=!0,this.selectedRecords=await this.$wire.getAllSelectableTableRecordKeys(),this.isLoading=!1},deselectAllRecords:function(){this.selectedRecords=[]},isRecordSelected:function(e){return this.selectedRecords.includes(e)},areRecordsSelected:function(e){return e.every(s=>this.isRecordSelected(s))},toggleCollapseGroup:function(e){if(this.isGroupCollapsed(e)){this.collapsedGroups.splice(this.collapsedGroups.indexOf(e),1);return}this.collapsedGroups.push(e)},isGroupCollapsed:function(e){return this.collapsedGroups.includes(e)},resetCollapsedGroups:function(){this.collapsedGroups=[]}}}export{c as default};
|
37
site/public/js/filament/widgets/components/chart.js
Normal file
37
site/public/js/filament/widgets/components/chart.js
Normal file
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -1,10 +1,10 @@
|
|||||||
/* CSS Document */
|
/* CSS Document */
|
||||||
/*
|
/*
|
||||||
Created on : 04/03/2022.
|
Created on : 04/03/2022.
|
||||||
Theme Name : Banu NFT Marketplace HTML Template
|
Theme Name : Banu NFT Marketplace HTML Template
|
||||||
Version : 1.0.
|
Version : 1.0.
|
||||||
Developed by : (ib-themes21@gmail.com) / (https://themeforest.net/user/ib-themes)
|
Developed by : (ib-themes21@gmail.com) / (https://themeforest.net/user/ib-themes)
|
||||||
Primary use: ib-themes
|
Primary use: ib-themes
|
||||||
*/
|
*/
|
||||||
/**
|
/**
|
||||||
01 - Font Import
|
01 - Font Import
|
||||||
|
File diff suppressed because it is too large
Load Diff
BIN
site/resources/fonts/remixicon.eot
Normal file
BIN
site/resources/fonts/remixicon.eot
Normal file
Binary file not shown.
1
site/resources/fonts/remixicon.glyph.json
Normal file
1
site/resources/fonts/remixicon.glyph.json
Normal file
File diff suppressed because one or more lines are too long
8035
site/resources/fonts/remixicon.svg
Normal file
8035
site/resources/fonts/remixicon.svg
Normal file
File diff suppressed because one or more lines are too long
After Width: | Height: | Size: 2.2 MiB |
11
site/resources/fonts/remixicon.symbol.svg
Normal file
11
site/resources/fonts/remixicon.symbol.svg
Normal file
File diff suppressed because one or more lines are too long
After Width: | Height: | Size: 1.4 MiB |
BIN
site/resources/fonts/remixicon.ttf
Normal file
BIN
site/resources/fonts/remixicon.ttf
Normal file
Binary file not shown.
BIN
site/resources/fonts/remixicon.woff
Normal file
BIN
site/resources/fonts/remixicon.woff
Normal file
Binary file not shown.
BIN
site/resources/fonts/remixicon.woff2
Normal file
BIN
site/resources/fonts/remixicon.woff2
Normal file
Binary file not shown.
52
site/resources/img/default_avatars/default_avatar_female.svg
Normal file
52
site/resources/img/default_avatars/default_avatar_female.svg
Normal file
@ -0,0 +1,52 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!-- Generator: Adobe Illustrator 28.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||||
|
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||||
|
viewBox="0 0 512 512" style="enable-background:new 0 0 512 512;" xml:space="preserve">
|
||||||
|
<style type="text/css">
|
||||||
|
.st0{fill:#E0E0E0;}
|
||||||
|
.st1{fill:#C1C1C1;}
|
||||||
|
.st2{fill:#474747;}
|
||||||
|
.st3{fill:#333333;}
|
||||||
|
.st4{fill:#5B5B5B;}
|
||||||
|
</style>
|
||||||
|
<g id="BULINE">
|
||||||
|
<circle class="st0" cx="256" cy="256" r="256"/>
|
||||||
|
</g>
|
||||||
|
<g id="Icons">
|
||||||
|
<path class="st1" d="M484.8,371c-20.9,41.3-52.4,76.2-91.5,101.1l-1.6,1l-1.6,1c-6.5,4-13.2,7.7-20,11.1
|
||||||
|
c-10.2,5.1-20.8,9.5-31.6,13.2c-63.3,21.6-132.6,17.5-193-11.4c-8.1-3.9-16.1-8.2-23.7-13c-0.8-0.5-1.5-0.9-2.2-1.4
|
||||||
|
c-1-0.6-1.9-1.2-2.9-1.9c-38.1-24.8-69-59.2-89.5-99.8c16-31.8,38.4-59.8,65.9-82.5c11.1-9.2,23-17.5,35.6-24.6
|
||||||
|
c0.9-0.5,1.8-1,2.7-1.6s2.1-1.1,3.1-1.7c3.6-2,7.3-3.9,11.1-5.6c8.9-4.3,18.1-8,27.5-11.3c2.6-0.9,5.2-1.7,7.8-2.5l0,0l3-0.9
|
||||||
|
l2.4-0.7c6.7-1.9,13.5-3.5,20.5-4.9c1.7-0.3,3.3-0.6,5-0.9c31.5-5.5,63.7-5,95,1.2c6.9,1.4,13.7,3.1,20.4,5c1.3,0.4,2.7,0.8,4,1.2
|
||||||
|
c2.3,0.7,4.6,1.4,6.9,2.2c7.9,2.7,15.7,5.7,23.3,9.2c2.9,1.3,5.8,2.7,8.7,4.1c3.2,1.6,6.3,3.3,9.5,5c1,0.5,2,1.1,2.9,1.7
|
||||||
|
c0.7,0.4,1.3,0.7,2,1.1C427.5,289.6,462.4,326.5,484.8,371z"/>
|
||||||
|
<path class="st2" d="M433.3,440.6c-12.3,11.8-25.7,22.3-40,31.5l-1.6,1l-1.6,1c-6.5,4-13.2,7.7-20,11.1
|
||||||
|
c-10.2,5.1-20.8,9.5-31.6,13.2c-63.3,21.6-132.6,17.5-193-11.4c-8.1-3.9-16.1-8.2-23.7-13c-0.8-0.5-1.5-0.9-2.2-1.4
|
||||||
|
c-1-0.6-1.9-1.2-2.9-1.9c-12.4-8.1-24.1-17.2-35-27.3l11.4-155l5.7-77.8c7.7-104.8,59.6-183.4,121-183.4h75.7
|
||||||
|
c61.5,0,113.3,78.6,121,183.4l5.9,80.7L433.3,440.6z"/>
|
||||||
|
<path class="st3" d="M370.1,100.8v384.4c-10.2,5.1-20.8,9.5-31.6,13.2C275.2,520,205.9,515.9,145.6,487V122.3l0,0v-21.5H370.1z"/>
|
||||||
|
<path class="st4" d="M391.7,473.1l-1.6,1c-6.5,4-13.2,7.7-20,11.1c-10.2,5.1-20.8,9.5-31.6,13.2c-63.3,21.6-132.6,17.5-193-11.4
|
||||||
|
c-8.1-3.9-16.1-8.2-23.7-13c3.2-3.8,6.6-7.4,10.1-10.8c0.5-0.5,1-1,1.6-1.5c2.4-2.3,4.9-4.5,7.6-6.6c1.4-1.2,2.9-2.3,4.4-3.5l0,0
|
||||||
|
c1.8-1.3,3.6-2.6,5.4-3.9c7.2-5,14.8-9.3,22.8-13.1c8.8-4.2,42.1-10.4,48.4-17.7c1.1-1.3,2-2.7,2.6-4.3c3.5-8.4,1.2-20.1,1.2-29.1
|
||||||
|
c0-2.7,0-5-0.1-7.1l0,0c-0.6-21.3-2.9-14.7,15.5-20.9c2.1-0.5,4.2-0.8,6.4-0.9c13.9-1.4,44.9-2.5,48.6,0.9c2.8,2.6,3.4,7.9,3,14.2
|
||||||
|
c-0.7,12.6-5,29.3-2,37c0.8,2.1,1.8,4,3,5.9c7.7,11.6,20.7,12.4,35.7,19.3c9.8,4.5,19.2,10,28.1,16.2c2.1,1.4,4.1,2.9,6,4.4
|
||||||
|
c0.8,0.6,1.5,1.2,2.2,1.8c3.2,2.6,6.3,5.3,9.3,8.1c0.7,0.7,1.5,1.4,2.2,2.1C386.5,467.4,389.2,470.2,391.7,473.1z"/>
|
||||||
|
<path class="st4" d="M382.6,173.1v84.4c0,63-50.1,83.1-86.6,115.1c-21.3,19-53.6,19-74.9,0c-36.5-32-86.6-52.2-86.6-115.1v-84.4
|
||||||
|
c0-63.5,48.5-115,108.4-115h31.4C334.1,58.1,382.6,109.6,382.6,173.1z"/>
|
||||||
|
<path class="st3" d="M183.9,257.5v-84.4c0-60.3,43.7-109.7,99.3-114.6c-3-0.3-6-0.4-9-0.4h-31.4c-59.9,0-108.4,51.5-108.4,115v41.8
|
||||||
|
c-13.7,0-24.8,11.1-24.8,24.8s11.1,24.8,24.8,24.8h0.2c3.6,57.5,51.2,77.3,86.4,108.1c17.8,15.6,42.1,18.5,62.2,8.5
|
||||||
|
c-4.6-2.3-8.8-5.1-12.7-8.5C234,340.7,183.9,320.5,183.9,257.5z"/>
|
||||||
|
<circle class="st4" cx="382.6" cy="239.7" r="24.8"/>
|
||||||
|
<path class="st2" d="M135.1,229.9c-5.5-0.2-10,4.1-10.2,9.6c-0.2,5.5,4.1,10,9.6,10.2c0.2,0,0.4,0,0.6,0V229.9z"/>
|
||||||
|
<path class="st3" d="M382.6,249.6c5.5,0.2,10-4.1,10.2-9.6c0.2-5.5-4.1-10-9.6-10.2c-0.2,0-0.4,0-0.6,0V249.6z"/>
|
||||||
|
<path class="st2" d="M327.5,100.8c0,0-10.9,31.5-62,49.2v-40.1c0,0-6,35.1-68.5,54V133c0,0-13.1,33.3-62.5,66l-9.2-13.4l4.9-75.7
|
||||||
|
L168,61.4l47.4-12.7h68.6l43.5,3.8L364,89.6c0,0,27.1,36.4,28.5,74.3C392.5,163.9,353.7,145.5,327.5,100.8z"/>
|
||||||
|
<path class="st3" d="M145.6,475.4c13,10.8,27.3,20,42.5,27.5c-23.3-6.4-45.6-16.1-66.2-28.8c3.2-3.8,6.6-7.4,10.2-10.9
|
||||||
|
C135.4,466.5,139.9,470.7,145.6,475.4L145.6,475.4z"/>
|
||||||
|
<path class="st3" d="M391.7,473.1l-1.6,1c-6.5,4-13.2,7.7-20,11.1c-10.2,5.1-20.8,9.5-31.6,13.2c11.1-6.4,21.7-13.7,31.6-21.8
|
||||||
|
c4.5-3.7,9.1-7.7,13.7-12C386.5,467.4,389.2,470.2,391.7,473.1z"/>
|
||||||
|
<path class="st3" d="M260.3,49.4L260.3,49.4c-0.6,0-1.2,0-1.8,0s-1.2,0-1.8,0v0c-107.1,2.2-130.9,102.9-130.9,102.9
|
||||||
|
C185.5,88.1,242,87.7,256.7,88.9v0.4c0,0,0.6-0.1,1.8-0.2c1.2,0.1,1.8,0.2,1.8,0.2v-0.4c14.6-1.1,71.2-0.7,130.9,63.4
|
||||||
|
C391.2,152.3,367.4,51.7,260.3,49.4z"/>
|
||||||
|
</g>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 4.2 KiB |
70
site/resources/img/default_avatars/default_avatar_male.svg
Normal file
70
site/resources/img/default_avatars/default_avatar_male.svg
Normal file
@ -0,0 +1,70 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!-- Generator: Adobe Illustrator 28.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||||
|
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||||
|
viewBox="0 0 512 512" style="enable-background:new 0 0 512 512;" xml:space="preserve">
|
||||||
|
<style type="text/css">
|
||||||
|
.st0{fill:#E0E0E0;}
|
||||||
|
.st1{fill:#C1C1C1;}
|
||||||
|
.st2{fill:#474747;}
|
||||||
|
.st3{fill:#333333;}
|
||||||
|
.st4{fill:#F7BB38;}
|
||||||
|
</style>
|
||||||
|
<g id="BULINE">
|
||||||
|
<circle class="st0" cx="256" cy="256" r="256"/>
|
||||||
|
</g>
|
||||||
|
<g id="Icons">
|
||||||
|
<path class="st1" d="M484.8,371c-20.7,41.2-52.2,76-91,100.8c-1.2,0.8-2.4,1.5-3.6,2.3c-2.1,1.3-4.2,2.5-6.3,3.8
|
||||||
|
c-31.1,17.9-65.6,29.1-101.2,32.8c-8.8,0.9-17.7,1.4-26.5,1.4c-6.5,0-12.9-0.2-19.3-0.7c-37.7-2.8-74.3-13.9-107.2-32.6l-1.6-0.9
|
||||||
|
c-2.8-1.6-5.6-3.3-8.4-5.1l-2.3-1.5C78.9,446.4,47.8,411.8,27.2,371c20.5-40.7,51.6-75.2,89.9-100c3.9-2.5,7.8-4.9,11.8-7.2
|
||||||
|
c16.2-9.3,33.4-16.8,51.2-22.3l0.6-0.2l0,0c0.7-0.2,1.4-0.4,2.1-0.6c6.2-1.8,12.5-3.5,18.9-4.8c3.3-0.7,6.7-1.4,10-2
|
||||||
|
c28.7-5,58.1-5.1,86.8-0.3c3.6,0.6,7.2,1.3,10.8,2.1c6.3,1.3,12.6,2.9,18.7,4.7c1.5,0.4,2.9,0.9,4.4,1.3
|
||||||
|
c18.5,5.8,36.4,13.7,53.1,23.5c3.5,2.1,7,4.2,10.4,6.5C433.7,296.4,464.4,330.6,484.8,371z"/>
|
||||||
|
<path class="st2" d="M383.8,477.9c-31.1,17.9-65.6,29.1-101.2,32.8c-8.8,0.9-17.7,1.4-26.5,1.4c-6.5,0-12.9-0.2-19.3-0.7
|
||||||
|
c-37.7-2.8-74.3-13.9-107.2-32.6l-1.6-0.9c0.5-0.5,1.1-1,1.6-1.5c0.9-0.9,1.9-1.7,2.8-2.5c0.2-0.2,0.4-0.4,0.6-0.5
|
||||||
|
c0.9-0.8,1.8-1.6,2.8-2.3c3.2-2.7,6.6-5.2,10.1-7.6c7.5-5.1,15.3-9.6,23.5-13.5c4.2-1.7,8.4-3.1,12.8-4.2c8.5-2.4,19-5.2,26.8-8.2
|
||||||
|
c2.5-0.9,4.9-2,7.2-3.4l0,0c1.2-0.7,2.3-1.5,3.2-2.5c1.1-1.3,2-2.8,2.7-4.5c3.6-8.6,1.2-20.9,1.2-30.1c0-2.8-0.1-5.2-0.1-7.4l0,0
|
||||||
|
c-0.6-22-3-15.2,16.1-21.6c2.2-0.5,4.4-0.8,6.6-1l0,0c14.4-1.4,46.4-2.6,50.3,1c2.9,2.7,3.5,8.2,3.1,14.7
|
||||||
|
c-0.7,13-5.2,30.3-2.1,38.3c0.8,2.1,1.9,4.2,3.1,6.1c0.5,0.8,1.1,1.6,1.7,2.3c0.4,0.5,0.8,0.9,1.2,1.3c0.2,0.3,0.5,0.5,0.7,0.8
|
||||||
|
s0.6,0.5,0.9,0.8l0.1,0.1l0,0l0.2,0.2l0.2,0.2c0.3,0.2,0.6,0.5,0.9,0.7c0.2,0.2,0.4,0.3,0.5,0.4c1.4,1.1,2.9,2,4.5,2.8
|
||||||
|
c0.6,0.3,1.2,0.6,1.8,0.9s1.3,0.6,2,0.9s1.5,0.6,2.3,1c0.4,0.1,0.8,0.3,1.2,0.5c1.9,0.7,3.8,1.4,5.8,2.1c0.4,0.1,0.8,0.3,1.2,0.4
|
||||||
|
l1.1,0.4c0.4,0.1,0.8,0.3,1.1,0.4l1.6,0.6c0.8,0.3,1.6,0.6,2.5,1c0.7,0.2,1.3,0.5,2,0.8s1.1,0.5,1.6,0.7s1.2,0.5,1.8,0.8h0.1l0,0
|
||||||
|
c10.1,4.7,19.8,10.3,29,16.7c3,2.1,5.8,4.2,8.5,6.5C378,472.6,380.9,475.2,383.8,477.9z"/>
|
||||||
|
<path class="st2" d="M385.5,179.2v87.3c0,65.1-51.8,86-89.6,119.1c-22.1,19.7-55.4,19.7-77.5,0c-37.8-33.1-89.6-54-89.6-119.1
|
||||||
|
v-87.3c0-65.7,50.2-119,112.1-119h32.5C335.4,60.3,385.5,113.5,385.5,179.2z"/>
|
||||||
|
<path class="st3" d="M180.1,266.5v-87.3c0-62.3,45.2-113.5,102.7-118.5c-3.1-0.3-6.2-0.4-9.4-0.4H241c-61.9,0-112.1,53.3-112.1,119
|
||||||
|
v43.2c-14.2,0.3-25.5,12-25.2,26.2c0.3,13.8,11.4,24.9,25.2,25.2h0.2c3.7,59.5,53,80,89.4,111.8c18.4,16.1,43.5,19.1,64.3,8.8
|
||||||
|
c-4.7-2.3-9.2-5.3-13.1-8.8C231.9,352.5,180.1,331.6,180.1,266.5z"/>
|
||||||
|
<circle class="st2" cx="385.5" cy="248.1" r="25.7"/>
|
||||||
|
<path class="st2" d="M129.6,237.9c-5.6-0.2-10.4,4.3-10.5,9.9s4.3,10.4,9.9,10.5c0.2,0,0.4,0,0.6,0V237.9z"/>
|
||||||
|
<path class="st3" d="M385.6,258.3c5.6-0.2,10.1-4.9,9.9-10.5c-0.2-5.4-4.5-9.7-9.9-9.9V258.3z"/>
|
||||||
|
<path class="st4" d="M383.8,477.9c-31.1,17.9-65.6,29.1-101.2,32.8c-8.8,0.9-17.7,1.4-26.5,1.4c-6.5,0-12.9-0.2-19.3-0.7
|
||||||
|
c-37.7-2.8-74.3-13.9-107.2-32.6l-1.6-0.9c0.5-0.5,1.1-1,1.6-1.5c0.9-0.9,1.9-1.7,2.8-2.5c0.2-0.2,0.4-0.4,0.6-0.5
|
||||||
|
c0.9-0.8,1.8-1.6,2.8-2.3c3.2-2.7,6.6-5.2,10.1-7.6c7.5-5.1,15.3-9.6,23.5-13.5c4.2-1.7,8.4-3.1,12.8-4.2c8.5-2.4,19-5.2,26.8-8.2
|
||||||
|
v22.5l34.7,18.5c2.5,2.1,8.8,3.1,15.1,3.2l0,0c0.6,0,1.2,0,1.7,0l0,0c6-0.1,11.8-1.2,14.1-3.1l27.3-18.5v-30.5
|
||||||
|
c0.4,0.5,0.8,0.9,1.2,1.3c0.2,0.3,0.5,0.5,0.7,0.8s0.6,0.5,0.9,0.8l0.1,0.1l0,0c0,0.1,0.1,0.1,0.2,0.1l0.2,0.2
|
||||||
|
c0.3,0.2,0.6,0.5,0.9,0.7c0.2,0.2,0.4,0.3,0.5,0.4c1.4,1.1,2.9,2,4.5,2.8c0.6,0.3,1.2,0.6,1.8,0.9s1.3,0.6,2,0.9s1.5,0.6,2.3,1
|
||||||
|
c0.4,0.1,0.8,0.3,1.2,0.5c1.9,0.7,3.8,1.4,5.8,2.1c0.4,0.1,0.8,0.3,1.2,0.4l1.1,0.4c0.4,0.1,0.8,0.3,1.1,0.4l1.6,0.6
|
||||||
|
c0.8,0.3,1.6,0.6,2.5,1c0.7,0.2,1.3,0.5,2,0.8s1.1,0.5,1.6,0.7s1.2,0.5,1.8,0.8h0.1l0,0c10.1,4.7,19.8,10.3,29,16.7
|
||||||
|
c3,2.1,5.8,4.2,8.5,6.5C378,472.6,380.9,475.2,383.8,477.9z"/>
|
||||||
|
<path class="st3" d="M375.4,120.2c0,0,2.2-36.1-23.2-59.9l-3.7,14.2c0,0-17.1-38-55.6-43.6l1.4,12c0,0-50.2-21.1-90.4-12l19.9,14.8
|
||||||
|
c0,0-38.4,1.2-60.1,14.7c0,0,10.5,8.4,15.8,15.3c-33.1,21.7-55.2,60.6-55.2,104.9l4.6,44.8l19.7-68.1c0,0,4.8-46.5,43.6-54.2
|
||||||
|
c13.8-2.7,28,1.2,39.2,9.7c6.7,5.3,14.9,8.4,23.4,8.8l0,0h1.4l0,0c8.5-0.5,16.7-3.5,23.4-8.8c11.2-8.5,25.4-12.4,39.2-9.7
|
||||||
|
c38.8,7.7,43.6,54.2,43.6,54.2l27.3,72.4l0.5-11.8v-37.3C390.2,159.5,385.1,138.8,375.4,120.2z"/>
|
||||||
|
<path class="st2" d="M309.7,51.2c0.8,8.8-0.1,21.4-9,31c-0.9,0.9-0.8,2.3,0.1,3.2c0.5,0.4,1.1,0.7,1.7,0.6
|
||||||
|
c5.9-0.4,14.6-1.6,19.4-5.2c1-0.8,2.4-0.6,3.2,0.4c0.1,0.2,0.2,0.3,0.3,0.5c1.2,3.1,2.7,8.2,2,13.1c-0.2,1.2,0.7,2.4,1.9,2.5
|
||||||
|
c0.8,0.1,1.6-0.2,2.1-0.9c4.3-5.2,7.9-14.6,2.5-30.1c-0.4-1.2-1.7-1.8-2.9-1.4c-0.4,0.1-0.8,0.4-1.1,0.8l-0.8,1.1
|
||||||
|
c-0.7,1-2.1,1.2-3.1,0.5c-0.2-0.1-0.4-0.3-0.5-0.5l-11.7-16.9c-0.7-1-2.1-1.3-3.1-0.6C310,49.6,309.6,50.4,309.7,51.2z"/>
|
||||||
|
<path class="st2" d="M383.8,477.9c-31.1,17.9-65.6,29.1-101.2,32.8c-8.8,0.9-17.7,1.4-26.5,1.4c-6.5,0-12.9-0.2-19.3-0.7
|
||||||
|
c-37.7-2.8-74.3-13.9-107.2-32.6v-2.4c0.9-0.9,1.9-1.7,2.8-2.5c0.2-0.2,0.4-0.4,0.6-0.5c0.9-0.8,1.8-1.6,2.8-2.3
|
||||||
|
c3.2-2.7,6.6-5.2,10.1-7.6c7.5-5.1,15.3-9.6,23.5-13.5c4.2-1.7,8.4-3.1,12.8-4.2c8.5-2.4,19-5.2,26.8-8.2v22.5l34.7,18.5
|
||||||
|
c2.5,2.1,8.8,3.1,15.1,3.2l0,0c0.6,0,1.2,0,1.7,0l0,0c6-0.1,11.8-1.2,14.1-3.1l27.3-18.5v-23.3h9.1c0.6,0.3,1.2,0.6,1.8,0.9
|
||||||
|
s1.3,0.6,2,0.9s1.5,0.6,2.3,1c0.4,0.1,0.8,0.3,1.2,0.5c1.9,0.7,3.8,1.4,5.8,2.1c0.4,0.1,0.8,0.3,1.2,0.4l1.1,0.4
|
||||||
|
c0.4,0.1,0.8,0.3,1.1,0.4l1.6,0.6c0.8,0.3,1.6,0.6,2.5,1c0.7,0.2,1.3,0.5,2,0.8s1.1,0.5,1.6,0.7s1.2,0.5,1.8,0.8h0.1l0,0
|
||||||
|
c10.1,4.7,19.8,10.3,29,16.7c3,2.1,5.8,4.2,8.5,6.5C378,472.6,380.9,475.2,383.8,477.9z"/>
|
||||||
|
<path class="st2" d="M259.6,480.6l-0.6,0.9l0,0l-22.2,29.8c-10.7-0.8-21.4-2.3-31.9-4.4l-22.2-58.5c-1.1-2.9,0.2-6.2,3-7.5
|
||||||
|
l21.6-10.3c2.3-1.1,5-0.6,6.8,1.2l2.3,2.3l0,0C229.1,447.1,259.6,480.6,259.6,480.6z"/>
|
||||||
|
<path class="st2" d="M337.4,447c-0.1,0.5-0.2,0.9-0.3,1.4L315.6,505c-10.9,2.6-22,4.5-33.1,5.6l-21.8-29.2l-0.6-0.9
|
||||||
|
c0,0,28.6-31.5,42.1-45.4c1.1-1.1,2-2.1,2.9-3l0,0l0.6-0.6c1.8-1.8,4.5-2.3,6.8-1.2l21.6,10.3C336.4,441.9,337.8,444.4,337.4,447z"
|
||||||
|
/>
|
||||||
|
</g>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 6.2 KiB |
File diff suppressed because one or more lines are too long
Before Width: | Height: | Size: 5.4 KiB After Width: | Height: | Size: 5.8 KiB |
@ -4,11 +4,33 @@ import.meta.glob([
|
|||||||
'../fonts/**'
|
'../fonts/**'
|
||||||
]);
|
]);
|
||||||
|
|
||||||
|
import { Livewire, Alpine } from '../../vendor/livewire/livewire/dist/livewire.esm';
|
||||||
import Alpine from 'alpinejs';
|
//import Alpine from 'alpinejs';
|
||||||
|
|
||||||
window.Alpine = Alpine;
|
window.Alpine = Alpine;
|
||||||
|
|
||||||
Alpine.start();
|
Livewire.start();
|
||||||
|
|
||||||
import './main';
|
import './main';
|
||||||
|
(function ($) {
|
||||||
|
eqHeightWalletLeaderboard();
|
||||||
|
$(window).resize(function() {
|
||||||
|
eqHeightWalletLeaderboard();
|
||||||
|
});
|
||||||
|
function eqHeightWalletLeaderboard() {
|
||||||
|
let walletHeight = 0;
|
||||||
|
let leaderboardHeight = 0;
|
||||||
|
$('section.wallet-setup .card-block-style-one').each(function() {
|
||||||
|
if ($(this).outerHeight() > walletHeight) {
|
||||||
|
walletHeight = $(this).outerHeight();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
$('.top-seller-style-one').each(function() {
|
||||||
|
if ($(this).outerHeight() > leaderboardHeight) {
|
||||||
|
leaderboardHeight = $(this).outerHeight();
|
||||||
|
}
|
||||||
|
})
|
||||||
|
$('section.wallet-setup .card-block-style-one').css('min-height', walletHeight + 'px');
|
||||||
|
$('.top-seller-style-one').css('min-height', leaderboardHeight + 'px');
|
||||||
|
}
|
||||||
|
})(jQuery, window);
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -1,11 +1,11 @@
|
|||||||
/* CSS Document */
|
/* CSS Document */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Created on : 04/03/2022.
|
Created on : 04/03/2022.
|
||||||
Theme Name : Banu NFT Marketplace HTML Template
|
Theme Name : Banu NFT Marketplace HTML Template
|
||||||
Version : 1.0.
|
Version : 1.0.
|
||||||
Developed by : (ib-themes21@gmail.com) / (https://themeforest.net/user/ib-themes)
|
Developed by : (ib-themes21@gmail.com) / (https://themeforest.net/user/ib-themes)
|
||||||
Primary use : ib-themes
|
Primary use : ib-themes
|
||||||
Modified by : Paul Couture (bonked@noagendaartgenerator.com)
|
Modified by : Paul Couture (bonked@noagendaartgenerator.com)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@ -73,3 +73,4 @@ Modified by : Paul Couture (bonked@noagendaartgenerator.com)
|
|||||||
@import "components/nft-gallery";
|
@import "components/nft-gallery";
|
||||||
@import "./../css/vendor/nice-select.css";
|
@import "./../css/vendor/nice-select.css";
|
||||||
@import "components/light-version";
|
@import "components/light-version";
|
||||||
|
@import "components/pagination";
|
||||||
|
@ -4,6 +4,11 @@
|
|||||||
padding: 15px;
|
padding: 15px;
|
||||||
border-radius: 10px;
|
border-radius: 10px;
|
||||||
transition: 0.3s;
|
transition: 0.3s;
|
||||||
|
border: 1px solid $bg-color-1;
|
||||||
|
&.selected {
|
||||||
|
background: $bg-color-selected;
|
||||||
|
border-color: $selected-border;
|
||||||
|
}
|
||||||
.thumb {
|
.thumb {
|
||||||
position: relative;
|
position: relative;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
@ -104,12 +109,16 @@
|
|||||||
}
|
}
|
||||||
transition: 0.3s;
|
transition: 0.3s;
|
||||||
&:hover {
|
&:hover {
|
||||||
|
border: 1px solid $color-error;
|
||||||
.thumb {
|
.thumb {
|
||||||
img {
|
img {
|
||||||
transform: scale(1.21);
|
transform: scale(1.1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
&.selected:hover {
|
||||||
|
border-color: lighten($selected-border, 10%);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.reaction-btn {
|
.reaction-btn {
|
||||||
|
@ -35,7 +35,7 @@
|
|||||||
font-weight: 400;
|
font-weight: 400;
|
||||||
}
|
}
|
||||||
|
|
||||||
.upload-area .brows-file-wrapper {
|
.upload-area .browse-file-wrapper {
|
||||||
position: relative;
|
position: relative;
|
||||||
background: #1a1a1a;
|
background: #1a1a1a;
|
||||||
border-radius: 10px;
|
border-radius: 10px;
|
||||||
@ -44,7 +44,7 @@
|
|||||||
background: #000;
|
background: #000;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.upload-area .brows-file-wrapper input {
|
.upload-area .browse-file-wrapper input {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
|
@ -255,6 +255,15 @@ body {
|
|||||||
color: $color-primary;
|
color: $color-primary;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
.explore-style-one {
|
||||||
|
border: 1px solid $border-color-light;
|
||||||
|
&.selected {
|
||||||
|
background: $bg-color-selected-light;
|
||||||
|
}
|
||||||
|
&:hover {
|
||||||
|
border: 1px solid $color-error;
|
||||||
|
}
|
||||||
|
}
|
||||||
.explore-style-two,
|
.explore-style-two,
|
||||||
.signin-form,
|
.signin-form,
|
||||||
.signup-wrapper.header-free-signin .signin-form-2 {
|
.signup-wrapper.header-free-signin .signin-form-2 {
|
||||||
@ -413,7 +422,7 @@ body {
|
|||||||
.popular-collection-style-two,
|
.popular-collection-style-two,
|
||||||
.wallet-block,
|
.wallet-block,
|
||||||
.form-field-wrapper,
|
.form-field-wrapper,
|
||||||
.upload-area .brows-file-wrapper,
|
.upload-area .browse-file-wrapper,
|
||||||
.signup-content,
|
.signup-content,
|
||||||
.contact-inner-contnet {
|
.contact-inner-contnet {
|
||||||
background: #fff;
|
background: #fff;
|
||||||
|
80
site/resources/scss/components/_pagination.scss
Normal file
80
site/resources/scss/components/_pagination.scss
Normal file
@ -0,0 +1,80 @@
|
|||||||
|
.pagination {
|
||||||
|
.page-item {
|
||||||
|
a {
|
||||||
|
&.page-link {
|
||||||
|
color: $body-color;
|
||||||
|
background-color: $bg-color-1;
|
||||||
|
border-color: $body-bg;
|
||||||
|
transition: transform 0.5s;
|
||||||
|
&:hover,
|
||||||
|
&:focus {
|
||||||
|
background: linear-gradient(97.3deg, #ff512f 0%, #dd2476 100%);
|
||||||
|
border-color: $bg-color-1;
|
||||||
|
&::before {
|
||||||
|
content: "";
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
background: linear-gradient(97.3deg, #dd2476 0%, #ff512f 100%);
|
||||||
|
transition: transform 0.5s;
|
||||||
|
transform-origin: right;
|
||||||
|
transform: scaleX(0);
|
||||||
|
z-index: 0;
|
||||||
|
border-radius: inherit;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.page-item.disabled .page-link {
|
||||||
|
background-color: $bg-color-1;
|
||||||
|
border-color: $body-bg;
|
||||||
|
cursor: default;
|
||||||
|
}
|
||||||
|
.page-item.active .page-link {
|
||||||
|
background: linear-gradient(97.3deg, #ff512f 0%, #dd2476 100%);
|
||||||
|
border-color: $body-bg;
|
||||||
|
cursor: default;
|
||||||
|
&::before {
|
||||||
|
content: "";
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
background: linear-gradient(97.3deg, #dd2476 0%, #ff512f 100%);
|
||||||
|
transition: transform 0.5s;
|
||||||
|
transform-origin: right;
|
||||||
|
transform: scaleX(0);
|
||||||
|
z-index: 0;
|
||||||
|
border-radius: inherit;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.theme-light {
|
||||||
|
.pagination {
|
||||||
|
.page-item {
|
||||||
|
a {
|
||||||
|
&.page-link {
|
||||||
|
color: $body-light;
|
||||||
|
background-color: $body-bg-light2;
|
||||||
|
border-color: $body-bg-light;
|
||||||
|
&:hover,
|
||||||
|
&:focus {
|
||||||
|
border-color: $body-bg-light;
|
||||||
|
color: $body-bg-light;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.page-item.disabled .page-link {
|
||||||
|
background-color: $body-bg-light2;
|
||||||
|
border-color: $body-bg-light;
|
||||||
|
}
|
||||||
|
.page-item.active .page-link {
|
||||||
|
border-color: $body-bg-light;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -35,6 +35,9 @@
|
|||||||
color: $body-color;
|
color: $body-color;
|
||||||
line-height: 27px;
|
line-height: 27px;
|
||||||
}
|
}
|
||||||
|
h4 {
|
||||||
|
font-size: 80%;
|
||||||
|
}
|
||||||
&:hover {
|
&:hover {
|
||||||
.thumb {
|
.thumb {
|
||||||
transform: scale(1.1);
|
transform: scale(1.1);
|
||||||
@ -82,6 +85,7 @@
|
|||||||
border-radius: 10px;
|
border-radius: 10px;
|
||||||
padding: 28px 26px 28px 30px;
|
padding: 28px 26px 28px 30px;
|
||||||
transition: 0.3s;
|
transition: 0.3s;
|
||||||
|
font-size:85%;
|
||||||
@include xs-device {
|
@include xs-device {
|
||||||
padding: 15px;
|
padding: 15px;
|
||||||
}
|
}
|
||||||
@ -136,6 +140,10 @@
|
|||||||
font-size: 14px;
|
font-size: 14px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
sup {
|
||||||
|
font-weight: normal;
|
||||||
|
font-size:50%;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
.price {
|
.price {
|
||||||
font-size: 15px;
|
font-size: 15px;
|
||||||
|
@ -1,3 +1,10 @@
|
|||||||
|
.wallet-setup {
|
||||||
|
background-repeat: no-repeat;
|
||||||
|
background-position: center center;
|
||||||
|
background-attachment: fixed;
|
||||||
|
background-size: cover;
|
||||||
|
background-image: url(../img/headerbg-dark.jpg);
|
||||||
|
}
|
||||||
.card-block-style-one {
|
.card-block-style-one {
|
||||||
background: $bg-color-1;
|
background: $bg-color-1;
|
||||||
padding: 40px;
|
padding: 40px;
|
||||||
@ -21,3 +28,8 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
.theme-light {
|
||||||
|
.wallet-setup {
|
||||||
|
background-image: url(../img/headerbg.jpg);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@ -57,6 +57,17 @@
|
|||||||
min-height: 36px;
|
min-height: 36px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
.btn-xs {
|
||||||
|
font-size: 12px;
|
||||||
|
padding: 1px 12px;
|
||||||
|
height: 32px;
|
||||||
|
min-height: 32px;
|
||||||
|
@include tiny-device {
|
||||||
|
font-size: 15px;
|
||||||
|
height: 34px;
|
||||||
|
min-height: 34px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
.btn-outline {
|
.btn-outline {
|
||||||
border: 2px solid rgba(255, 255, 255, 0.7);
|
border: 2px solid rgba(255, 255, 255, 0.7);
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
background: #202027;
|
background: #202027;
|
||||||
}
|
}
|
||||||
.section-bg-separation-2 {
|
.section-bg-separation-2 {
|
||||||
background: #000;
|
background: darken($bg-color-1, 10%);
|
||||||
}
|
}
|
||||||
.d-flex-center {
|
.d-flex-center {
|
||||||
display: flex;
|
display: flex;
|
||||||
|
@ -14,6 +14,12 @@
|
|||||||
z-index: 999999;
|
z-index: 999999;
|
||||||
background: $bg-color-1;
|
background: $bg-color-1;
|
||||||
}
|
}
|
||||||
|
body.theme-light {
|
||||||
|
#ctn-preloader,
|
||||||
|
.ctn-preloader {
|
||||||
|
background-color: $body-bg-light2;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
.ctn-preloader .animation-preloader {
|
.ctn-preloader .animation-preloader {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
@ -50,9 +56,9 @@
|
|||||||
height: 9px;
|
height: 9px;
|
||||||
top: 12px;
|
top: 12px;
|
||||||
left: 0;
|
left: 0;
|
||||||
box-shadow: 0 0 10px #dd2476;
|
box-shadow: 0 0 10px $color-primary-2;
|
||||||
border-radius: 50%;
|
border-radius: 50%;
|
||||||
background: -webkit-linear-gradient(#ff512f, #dd2476);
|
background: -webkit-linear-gradient($color-primary, $color-primary-2);
|
||||||
}
|
}
|
||||||
|
|
||||||
@keyframes spinner {
|
@keyframes spinner {
|
||||||
|
@ -139,3 +139,6 @@ ol {
|
|||||||
line-height: 24px;
|
line-height: 24px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
.text-justify {
|
||||||
|
text-align: justify;
|
||||||
|
}
|
@ -14,6 +14,11 @@ $body-light: #393939;
|
|||||||
$body-bg-light: #f9f9fc;
|
$body-bg-light: #f9f9fc;
|
||||||
$body-bg-light2: #efefef;
|
$body-bg-light2: #efefef;
|
||||||
$body-color-light: #65676b;
|
$body-color-light: #65676b;
|
||||||
|
$light-color-primary: lighten($color-primary, 30%);
|
||||||
|
$light-color-primary-2: lighten($color-primary-2, 30%);
|
||||||
|
$selected-border: #eae156;
|
||||||
|
$bg-color-selected: linear-gradient(97.3deg, #7f830b 0%, #be8500 100%);
|
||||||
|
$bg-color-selected-light: linear-gradient(97.3deg, #f8fc9c 0%, #fbe4a1 100%);
|
||||||
|
|
||||||
// font family
|
// font family
|
||||||
$font-1: "Poppins", sans-serif;
|
$font-1: "Poppins", sans-serif;
|
||||||
|
73
site/resources/views/artworks/artwork.blade.php
Normal file
73
site/resources/views/artworks/artwork.blade.php
Normal file
@ -0,0 +1,73 @@
|
|||||||
|
@extends('layouts.master')
|
||||||
|
|
||||||
|
@section('page-top')
|
||||||
|
<section class="inner-page-banner bg-2 bg-image">
|
||||||
|
<div class="container">
|
||||||
|
<div class="inner text-center">
|
||||||
|
<h1 class="title">Artwork for {{ $artwork->podcast->name }} {{ number_format($artwork->episode->episode_number + 0) }}</h1>
|
||||||
|
<nav class="mt-4">
|
||||||
|
<ol class="breadcrumb justify-content-center">
|
||||||
|
<li class="breadcrumb-item"><a href="/">Home</a></li>
|
||||||
|
<li class="breadcrumb-item"><a href="/artworks">Explore Artwork</a></li>
|
||||||
|
<li class="breadcrumb-item active">Artwork</li>
|
||||||
|
</ol>
|
||||||
|
</nav>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
@endsection
|
||||||
|
@section('page-content')
|
||||||
|
<section class="product-details section-bg-separation-2 pt-120 pb-90">
|
||||||
|
<div class="container">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-xxl-6 mb-6">
|
||||||
|
<div class="explore-style-one">
|
||||||
|
<div class="thumb"><a href="http://{{ config('app.static_asset_url') }}/artworks/{{ $artwork->filename }}"
|
||||||
|
><img id="largeImage"src="http://{{ config('app.static_asset_url') }}/artworks/{{ $artwork->filename }}"
|
||||||
|
alt="{{ $artwork->title }} by {{ $artwork->artist->name }} for {{ $artwork->podcast->title }}"></a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-xxl-6 mb-6 mb-6">
|
||||||
|
<div class="details-content">
|
||||||
|
<h2 class="main_title">“{{ $artwork->title }}”</h2>
|
||||||
|
<h4 class="mb-1">By {{ $artwork->artist->name }}</h4>
|
||||||
|
<p class="subtitle">
|
||||||
|
{{ $artwork->episode->artwork_id == $artwork->id ? 'Selected' : 'Submitted' }} for {{ $artwork->podcast->name }}<br>
|
||||||
|
Episode {{ number_format($artwork->episode->episode_number + 0) }}, {{ $artwork->episode->episode_date->format('l, F j') }}<sup>{{ $artwork->episode->episode_date->format('S') }}</sup>, {{ $artwork->episode->episode_date->format('Y') }}
|
||||||
|
</p>
|
||||||
|
@if ($artwork->description)
|
||||||
|
<h4 class="mb-1">Description</h4>
|
||||||
|
<p class="subtitle">{{ $artwork->description }}</p>
|
||||||
|
@endif
|
||||||
|
<a href="http://{{ config('app.static_asset_url') }}/artworks/{{ $artwork->filename }}"
|
||||||
|
class="btn btn-medium btn-gradient w-100 justify-content-center mt-5"><span><i
|
||||||
|
class="ri-download-cloud-2-line"></i>
|
||||||
|
Download Full Scale Image
|
||||||
|
</span></a>
|
||||||
|
<a href="http://{{ config('app.static_asset_url') }}/thumbnail/{{ $artwork->filename }}"
|
||||||
|
class="btn btn-medium btn-gradient w-100 justify-content-center mt-5"><span><i
|
||||||
|
class="ri-download-fill"></i>
|
||||||
|
Download 512px Square Thumbnail
|
||||||
|
</span></a>
|
||||||
|
<a href="/artists/{{ $artwork->artist->id }}"
|
||||||
|
class="btn btn-medium btn-gradient w-100 justify-content-center mt-5"><span><i
|
||||||
|
class="ri-user-fill"></i>
|
||||||
|
View Artist Profile
|
||||||
|
</span></a>
|
||||||
|
<a href="/episodes/{{ $artwork->episode->slug }}"
|
||||||
|
class="btn btn-medium btn-gradient w-100 justify-content-center mt-5"><span><i
|
||||||
|
class="ri-headphone-fill"></i>
|
||||||
|
View This Episode
|
||||||
|
</span></a>
|
||||||
|
<a href="/podcasts/{{ $artwork->podcast->slug }}"
|
||||||
|
class="btn btn-medium btn-gradient w-100 justify-content-center mt-5"><span><i
|
||||||
|
class="ri-broadcast-line"></i>
|
||||||
|
View {{ $artwork->podcast->name }} Podcast
|
||||||
|
</span></a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
@endsection
|
132
site/resources/views/artworks/submit.blade.php
Normal file
132
site/resources/views/artworks/submit.blade.php
Normal file
@ -0,0 +1,132 @@
|
|||||||
|
@extends('layouts.master')
|
||||||
|
|
||||||
|
@section('page-top')
|
||||||
|
<section class="inner-page-banner bg-2 bg-image">
|
||||||
|
<div class="container">
|
||||||
|
<div class="inner text-center">
|
||||||
|
<h1 class="title">Submit New Artwork</h1>
|
||||||
|
<nav class="mt-4">
|
||||||
|
<ol class="breadcrumb justify-content-center">
|
||||||
|
<li class="breadcrumb-item"><a href="/">Home</a></li>
|
||||||
|
<li class="breadcrumb-item"><a href="/artworks">Explore Artwork</a></li>
|
||||||
|
<li class="breadcrumb-item active">Create</li>
|
||||||
|
</ol>
|
||||||
|
</nav>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
@endsection
|
||||||
|
@section('page-content')
|
||||||
|
<section class="pt-120 pb-90">
|
||||||
|
<div class="container">
|
||||||
|
<form action="/create-artwork" method="POST" name="create-artwork" enctype="multipart/form-data">
|
||||||
|
@csrf
|
||||||
|
<div class="create-item-wrapper">
|
||||||
|
@if($errors->any())
|
||||||
|
<div class="row">
|
||||||
|
<div class="col">
|
||||||
|
<div class="alert alert-danger">
|
||||||
|
<ul>
|
||||||
|
@foreach ($errors->all() as $error)
|
||||||
|
<li>{{ $error }}</li>
|
||||||
|
@endforeach
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
@endif
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-lg-4">
|
||||||
|
{{-- file upload area --}}
|
||||||
|
<div class="upload-area">
|
||||||
|
<div class="upload-formate mb-6">
|
||||||
|
<h5 class="title mb-1">
|
||||||
|
Upload Artwork File
|
||||||
|
</h5>
|
||||||
|
<p class="formate">
|
||||||
|
Drag or choose your file to upload.<br>
|
||||||
|
It will be resized to 3,000px square <em>(thanks Apple.)</em>
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
<div class="browse-file-wrapper">
|
||||||
|
{{-- actual upload which is hidden --}}
|
||||||
|
<input name="file" id="file" type="file" class="inputfile" required />
|
||||||
|
{{-- our custom upload button --}}
|
||||||
|
<label for="file" title="No File Choosen">
|
||||||
|
<i class="ri-upload-cloud-line"></i>
|
||||||
|
<span class="text-center mb-2">Choose a File</span>
|
||||||
|
<span class="file-type text-center mt--10">PNG, JPG, JPEG<br>
|
||||||
|
Max 20Mb<br>
|
||||||
|
Prefer 3,000px Square</span>
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
@error('file')
|
||||||
|
<div class="invalid-feedback">{{ $message }}</div>
|
||||||
|
@enderror
|
||||||
|
</div>
|
||||||
|
{{-- end upoad file area --}}
|
||||||
|
</div>
|
||||||
|
<div class="col-lg-8">
|
||||||
|
<div class="form-field-wrapper mb-4">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-md-12 mb-4">
|
||||||
|
<div class="field-box">
|
||||||
|
<label for="title" class="form-label">Artwork Title</label>
|
||||||
|
<input id="title" name="title" type="text" class="@error('title') is-invalid @enderror"
|
||||||
|
placeholder="e. g. `This Artwork's Title`"
|
||||||
|
required
|
||||||
|
value="{{ old('title') }}">
|
||||||
|
@error('title')
|
||||||
|
<div class="invalid-feedback">{{ $message }}</div>
|
||||||
|
@enderror
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-md-12 mb-4">
|
||||||
|
<div class="field-box">
|
||||||
|
<label for="description" class="form-label">Artwork Description</label>
|
||||||
|
<textarea id="description" name="description" rows="3" class="@error('description') is-invalid @enderror"
|
||||||
|
placeholder="e. g. “This cryptic mess represents...”">{{ old('description') }}</textarea>
|
||||||
|
@error('description')
|
||||||
|
<div class="invalid-feedback">{{ $message }}</div>
|
||||||
|
@enderror
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-md-12 mb-4 pb-4">
|
||||||
|
<div class="field-box">
|
||||||
|
<label for="podcast" class="form-label">For Podcast</label>
|
||||||
|
<select id="podcast" name="podcast" required>
|
||||||
|
@foreach ($podcasts as $podcast)
|
||||||
|
<option value="{{ $podcast->id }}" @selected(old('podcast') == $podcast->id)>{{ $podcast->name }}</option>
|
||||||
|
@endforeach
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{{-- End .row --}}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col">
|
||||||
|
<p>By submitting this artwork, you agree you have the rights to publish the artwork and are placing this artwork under a
|
||||||
|
non-revokable <a href="https://creativecommons.org/licenses/by-sa/4.0/">Creative Commons CC BY-SA 4.0 DEED Attribution-ShareAlike 4.0 International</a> license.</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{{-- End .row --}}
|
||||||
|
</div>
|
||||||
|
{{-- End .create-item-wrapper --}}
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-md-12">
|
||||||
|
<div class="d-flex-between upload-btn-wrapper flex-wrap">
|
||||||
|
<div class="d-flex-center ">
|
||||||
|
<button type="reset" class="btn btn-gradient btn-medium mr-3"><span>Cancel</span></button>
|
||||||
|
</div>
|
||||||
|
<div class="input-box">
|
||||||
|
<button type="submit" class="btn btn-gradient btn-medium justify-content-center"><span>Submit Artwork.</span></button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{{-- ENd .row --}}
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
@endsection
|
7
site/resources/views/components/layouts/app.blade.php
Normal file
7
site/resources/views/components/layouts/app.blade.php
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
@extends('layouts.master')
|
||||||
|
@section('page-top')
|
||||||
|
<br><br><br><br><br>
|
||||||
|
@endsection
|
||||||
|
@section('page-content')
|
||||||
|
{{ $slot }}
|
||||||
|
@endsection
|
84
site/resources/views/explore/artworks.blade.php
Normal file
84
site/resources/views/explore/artworks.blade.php
Normal file
@ -0,0 +1,84 @@
|
|||||||
|
@extends('layouts.master')
|
||||||
|
|
||||||
|
@section('page-top')
|
||||||
|
<section class="inner-page-banner bg-2 bg-image">
|
||||||
|
<div class="container">
|
||||||
|
<div class="inner text-center">
|
||||||
|
<h1 class="title">Submitted Artwork</h1>
|
||||||
|
<nav class="mt-4">
|
||||||
|
<ol class="breadcrumb justify-content-center">
|
||||||
|
<li class="breadcrumb-item"><a href="/">Home</a></li>
|
||||||
|
<li class="breadcrumb-item active"><a href="/artworks">Explore Artwork</a></li>
|
||||||
|
</ol>
|
||||||
|
</nav>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
@endsection
|
||||||
|
@section('page-content')
|
||||||
|
<section class="pt-120 pb-90 masonary-wrapper-activation">
|
||||||
|
<div class="container">
|
||||||
|
<div class="row">
|
||||||
|
{{ $artworks->links() }}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="container">
|
||||||
|
<div class="d-flex-between flex-wrap">
|
||||||
|
<div
|
||||||
|
class="button-group default-tab-list isotop-filter flex-wrap filters-button-group d-flex justify-content-start justify-content-lg-end mb-6 ">
|
||||||
|
<button data-filter="*" class="is-checked"><span class="filter-text">View All</span></button>
|
||||||
|
@foreach ($podcasts as $podcast)
|
||||||
|
<button data-filter=".podcast--{{ $podcast->slug }}"><span class="filter-text">{{ $podcast->name }}</span></button>
|
||||||
|
@endforeach
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="grid-filter-wrapper masonry-list">
|
||||||
|
<div class="resizer"></div>
|
||||||
|
@foreach ($artworks as $artwork)
|
||||||
|
<div class="grid-item podcast--{{ $artwork->podcast->slug }}">
|
||||||
|
<div class="explore-style-one {{ $artwork->episode->artwork_id == $artwork->id ? 'selected' : '' }}">
|
||||||
|
<div class="thumb">
|
||||||
|
<a href="/artworks/{{ $artwork->id }}"><img src="http://{{ config('app.static_asset_url') }}/thumbnails/{{ $artwork->filename }}" alt="{{ $artwork->title }} by {{ $artwork->artist->name }} for {{ $artwork->podcast->title }}"></a>
|
||||||
|
</div>
|
||||||
|
<div class="content">
|
||||||
|
<div class="header d-flex-between pt-4 pb-3">
|
||||||
|
<h3 class="title"><a href="/artwork/{{ $artwork->id }}">"{{ $artwork->title }}"</a></h3>
|
||||||
|
<div class="more-dropdown "><i class="ri-more-fill" data-bs-toggle="dropdown"></i>
|
||||||
|
<ul class="dropdown-menu dropdown-menu-dark">
|
||||||
|
<li><a class="dropdown-item" href="#">Artist Profile</a></li>
|
||||||
|
<li>
|
||||||
|
<hr class="dropdown-divider">
|
||||||
|
</li>
|
||||||
|
<li><a class="dropdown-item" href="#">Episode Submissions</a></li>
|
||||||
|
<li><a class="dropdown-item" href="#">Episode Details</a></li>
|
||||||
|
<li><a class="dropdown-item" href="#">Report</a></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{{-- .header --}}
|
||||||
|
<div class="product-owner py-4 d-flex-between">
|
||||||
|
<span class="bid-owner">Artwork By<br><strong><a href="/artist/{{ $artwork->artist->id }}">{{ $artwork->artist->name }}</a></strong></span>
|
||||||
|
<span class="profile-share d-flex-center"><a href="/artist/{{ $artwork->artist->id }}" class="avatar" data-bs-toggle="tooltip" data-bs-placement="top"
|
||||||
|
title="{{ $artwork->artist->name }}"><img src="{{ Vite::asset($recent->artist->avatar ?? 'resources/img/default_avatars/default_avatar_male.svg') }}" style="width:100%;height:auto;" alt="{{ $artwork->artist->name }}"></a></span>
|
||||||
|
</div>
|
||||||
|
{{-- End .product-owner --}}
|
||||||
|
<div class="action-wrapper d-flex-between pt-4">
|
||||||
|
<span class="bid-owner">{{ $artwork->id == $artwork->episode->artwork_id ? 'Selected' : 'Submitted' }} for <br><strong><a href="/artist/{{ $artwork->artist->id }}">{{ $artwork->podcast->name }}<br> Episode {{ number_format($artwork->episode->episode_number) }}</a></strong></span>
|
||||||
|
</div>
|
||||||
|
{{-- action-wrapper --}}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
@endforeach
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="container">
|
||||||
|
<div class="row">
|
||||||
|
{{ $artworks->links() }}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
@endsection
|
||||||
|
|
||||||
|
|
||||||
|
|
41
site/resources/views/home/explainer/explainer.blade.php
Normal file
41
site/resources/views/home/explainer/explainer.blade.php
Normal file
@ -0,0 +1,41 @@
|
|||||||
|
{{-- Start Setup Wallet --}}
|
||||||
|
<section class="wallet-setup ptb-120">
|
||||||
|
<div class="container">
|
||||||
|
<div class="section-title">
|
||||||
|
<span class="subtitle">WHAT THIS IS</span>
|
||||||
|
<h2>Artists + Podcasters = <i class="ri-heart-fill"></i></h2>
|
||||||
|
</div>
|
||||||
|
{{-- End .section-title --}}
|
||||||
|
<div class="slider wallet-activation slick-arrow-between slick-gutter-15 grid auto-rows-fr">
|
||||||
|
<div class="card-block-style-one">
|
||||||
|
<h3 class="title mb-3">Setup Your Account & Artist Profile</h3>
|
||||||
|
<p>First things first, you need to have an account to control your artist profiles and submit artwork.
|
||||||
|
Setting up your account is easy, you just need an email address and some creativity. Once you have
|
||||||
|
your account, you can create one more artist profiles which are controlled by you.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
{{-- End .card-block-style-one --}}
|
||||||
|
|
||||||
|
|
||||||
|
<div class="card-block-style-one">
|
||||||
|
<h3 class="title mb-3">Submit Your Album Artwork</h3>
|
||||||
|
<p>Your artwork should be unique, high-quality, and on-topic. Our artists stive to provide the podcast
|
||||||
|
hosts with unqiue artwork each and every episode to use as the album artwork. artwork should be
|
||||||
|
a minimum of 512px square.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
{{-- End .card-block-style-one --}}
|
||||||
|
|
||||||
|
<div class="card-block-style-one">
|
||||||
|
<h3 class="title mb-3">Podcasters Select Your Art</h3>
|
||||||
|
<p>When publishing their podcast, podcasters select the album art they like best, and if you are selected,
|
||||||
|
you'll get your credit here and usually in the show-notes of the podcast that used your art. If you aren't
|
||||||
|
selected for Album Art, your artwork could be used for Podcasting 2.0 chapter art as well.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{{-- End .row --}}
|
||||||
|
</div>
|
||||||
|
{{-- End .container --}}
|
||||||
|
</section>
|
||||||
|
{{-- End Setup Wallet --}}
|
@ -3,19 +3,23 @@
|
|||||||
<span>Live Since 2010</span>
|
<span>Live Since 2010</span>
|
||||||
</h1>
|
</h1>
|
||||||
<p data-aos="fade-up" data-aos-delay="100">
|
<p data-aos="fade-up" data-aos-delay="100">
|
||||||
A community collaboration producing the best podcast album art in the universe!
|
A community collaboration producing the best podcast album art in the universe!<br>
|
||||||
|
Once discussed on <em>The Joe Rogan Experience</em>, sadly,<br>
|
||||||
|
Young Jamie was not asked to pull this up.
|
||||||
</p>
|
</p>
|
||||||
<div class="group-btn mt-8" data-aos="fade-up" data-aos-delay="200">
|
<div class="group-btn mt-8" data-aos="fade-up" data-aos-delay="200">
|
||||||
<a href="explore-filter-sidebar.html" class="btn btn-gradient">
|
<a href="/artworks" class="btn btn-gradient">
|
||||||
<span><i class="ri-rocket-line"></i>Explore</span>
|
<span><i class="ri-rocket-line"></i>Explore</span>
|
||||||
</a>
|
</a>
|
||||||
<a href="create.html" class="btn btn-outline">
|
@if (Auth::user())
|
||||||
|
<a href="/create-artwork" class="btn btn-outline">
|
||||||
<span><i class="ri-edit-line"></i> Create</span>
|
<span><i class="ri-edit-line"></i> Create</span>
|
||||||
</a>
|
</a>
|
||||||
|
@endif
|
||||||
</div>
|
</div>
|
||||||
<div class="counter-wrapper counter-wrapper-style-two">
|
<div class="counter-wrapper counter-wrapper-style-two">
|
||||||
@foreach ($headerCounters as $headerCounterLabel => $headerCounterCount)
|
@foreach ($headerCounters as $headerCounterLabel => $headerCounterCount)
|
||||||
@include('home.hero.counter')
|
@include('home.hero.counter')
|
||||||
@endforeach
|
@endforeach
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
16
site/resources/views/home/hero/hero.blade.php
Normal file
16
site/resources/views/home/hero/hero.blade.php
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
<section class="hero-banner-style bg-5 bg-image top-section-gap hero-banner-style-4">
|
||||||
|
<div class="hero-banner_inner">
|
||||||
|
<div class="container-fluid">
|
||||||
|
<div class="row align-items-center">
|
||||||
|
<div class="col-xl-7 col-lg-6 col-md-12">
|
||||||
|
@include('home.hero.banner-left')
|
||||||
|
</div>
|
||||||
|
<div class="col-xl-5 col-lg-6 col-md-12">
|
||||||
|
@include('home.hero.slider.slider')
|
||||||
|
</div>
|
||||||
|
{{-- End .col --}}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{{-- End .container --}}
|
||||||
|
</div>
|
||||||
|
</section>
|
@ -28,14 +28,15 @@
|
|||||||
<span class="bid-owner">Artwork Selected For<br>
|
<span class="bid-owner">Artwork Selected For<br>
|
||||||
<strong><a href="#">{{ $recentEpisode->podcast->name }}</a></strong>
|
<strong><a href="#">{{ $recentEpisode->podcast->name }}</a></strong>
|
||||||
<br>
|
<br>
|
||||||
<a href="#">Episode {{ number_format($recentEpisode->episode_number + 0) }}</a></span>
|
<a href="#">Episode {{ number_format($recentEpisode->episode_number + 0) }}<br>
|
||||||
|
{{ $recentEpisode->episode_date->format('D, M j') }}<sup>{{ $recentEpisode->episode_date->format('S') }}</sup>{{ $recentEpisode->episode_date->format(', Y') }}</a></span>
|
||||||
</div>
|
</div>
|
||||||
<div class="product-owner py-1 d-flex-between">
|
<div class="product-owner py-1 d-flex-between">
|
||||||
<span class="bid-owner">Artwork By<br><strong><a
|
<span class="bid-owner">Artwork By<br><strong><a
|
||||||
href="author-profile.html">{{ $recentEpisode->artwork->artist->name ?? 'Unknown' }}</a></strong></span>
|
href="author-profile.html">{{ $recentEpisode->artwork->artist->name ?? 'Unknown' }}</a></strong></span>
|
||||||
<span class="profile-share d-flex-center"><a href="author-profile.html" class="avatar" data-bs-toggle="tooltip" data-bs-placement="top"
|
<span class="profile-share d-flex-center"><a href="author-profile.html" class="avatar" data-bs-toggle="tooltip" data-bs-placement="top"
|
||||||
title="{{ $recentEpisode->artwork->artist->name }}"><img src="{{ Vite::asset('resources/img/default_avatars/default_avatar_users_' . str_pad(rand(1, 32), 2, '0', STR_PAD_LEFT) . '.svg') }}"
|
title="{{ $recentEpisode->artwork->artist->name }}"><img src="{{ Vite::asset($recentEpisode->artwork->artist->avatar ?? 'resources/img/default_avatars/default_avatar_male.svg') }}"
|
||||||
alt="{{ $recentEpisode->artwork->artist->name }}"></a></span>
|
alt="{{ $recentEpisode->artwork->artist->name }}"></a></span>
|
||||||
</div>
|
</div>
|
||||||
<!-- End .product-owner -->
|
<!-- End .product-owner -->
|
||||||
</div>
|
</div>
|
||||||
|
26
site/resources/views/home/leaderboard/card.blade.php
Normal file
26
site/resources/views/home/leaderboard/card.blade.php
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
<div class="col-xxl-4 col-lg-6 col-md-6 mb-6">
|
||||||
|
<div class="top-seller-style-two d-flex-between">
|
||||||
|
<div class="d-flex-center">
|
||||||
|
<div class="thumb-wrapper">
|
||||||
|
<a href="author-profile.html" class="thumb">
|
||||||
|
<img src="{{ Vite::asset($leaderboardArtist->artist->avatar ?? 'resources/img/default_avatars/default_avatar_male.svg') }}" alt="{{ $leaderboardArtist->artist->name }}"
|
||||||
|
title="{{ $leaderboardArtist->artist->name }}">
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
{{-- End .thumb-wrapper --}}
|
||||||
|
{{-- End .thumb --}}
|
||||||
|
<div class="content">
|
||||||
|
<h4 class="title pb-1"><a href="author-profile.html">{{ $leaderboardArtist->artist->name }}</a></h4>
|
||||||
|
<span class="price">Chosen {{ $leaderboardArtist->artworkCount }} {{ Str::plural('Time', $leaderboardArtist->artworkCount) }}</span>
|
||||||
|
</div>
|
||||||
|
{{-- End .content --}}
|
||||||
|
</div>
|
||||||
|
{{-- End .d-flex-center --}}
|
||||||
|
<a href="author-profile.html" class="items-number d-flex-center flex-column">
|
||||||
|
<strong class="pb-1">{{ $leaderboardArtist->position }}<sup>{{ numberSuffix($leaderboardArtist->position) }}</sup></strong>
|
||||||
|
<span>Place</span>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
{{-- End .top-seller-style-two --}}
|
||||||
|
</div>
|
||||||
|
{{-- End .col --}}
|
23
site/resources/views/home/leaderboard/section.blade.php
Normal file
23
site/resources/views/home/leaderboard/section.blade.php
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
{{-- Start Top Seller --}}
|
||||||
|
<section class="section-bg-separation-2 ptb-120">
|
||||||
|
<div class="container">
|
||||||
|
<div class="d-flex-between">
|
||||||
|
<div class="section-title">
|
||||||
|
<span class="subtitle">The Artists</span>
|
||||||
|
<h2>Past Year Leaderboard</h2>
|
||||||
|
</div>
|
||||||
|
{{-- End .section-title --}}
|
||||||
|
<div class="text-large">
|
||||||
|
<a href="#">View Leaderboards</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{{-- End .d-flex-between --}}
|
||||||
|
<div class="row">
|
||||||
|
@foreach($leaderboard as $leaderboardArtist)
|
||||||
|
@include('home.leaderboard.card')
|
||||||
|
@endforeach
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{{-- End container --}}
|
||||||
|
</section>
|
||||||
|
{{-- End section --}}
|
@ -1,20 +1,10 @@
|
|||||||
@extends('layouts.master')
|
@extends('layouts.master')
|
||||||
|
@section('page-top')
|
||||||
|
@include('home.hero.hero')
|
||||||
|
@endsection
|
||||||
|
|
||||||
@section('hero')
|
@section('page-content')
|
||||||
<section class="hero-banner-style bg-5 bg-image top-section-gap hero-banner-style-4">
|
@include('home.recents.section')
|
||||||
<div class="hero-banner_inner">
|
@include('home.explainer.explainer')
|
||||||
<div class="container-fluid">
|
@include('home.leaderboard.section')
|
||||||
<div class="row align-items-center">
|
@endsection
|
||||||
<div class="col-xl-7 col-lg-6 col-md-12">
|
|
||||||
@include('home.hero.banner-left')
|
|
||||||
</div>
|
|
||||||
<div class="col-xl-5 col-lg-6 col-md-12">
|
|
||||||
@include('home.hero.slider.slider')
|
|
||||||
</div>
|
|
||||||
<!-- End .col -->
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<!-- End .container -->
|
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
@endsection
|
|
||||||
|
35
site/resources/views/home/recents/card.blade.php
Normal file
35
site/resources/views/home/recents/card.blade.php
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
<div class="explore-style-one podcast--{{ $recent->podcast->slug }} {{ $recent->episode->artwork_id == $recent->id ? 'selected' : '' }}">
|
||||||
|
<div class="thumb">
|
||||||
|
<a href="product-details.html"><img src="http://{{ config('app.static_asset_url') }}/thumbnails/{{ $recent->filename }}" alt="{{ $recent->title }} by {{ $recent->artist->name }} for {{ $recent->podcast->title }}"></a>
|
||||||
|
</div>
|
||||||
|
{{-- End .thumb --}}
|
||||||
|
<div class="content">
|
||||||
|
<div class="header d-flex-between pt-4 pb-3">
|
||||||
|
<h3 class="title"><a href="product-details.html">"{{ $recent->title }}"</a></h3>
|
||||||
|
<div class="more-dropdown "><i class="ri-more-fill" data-bs-toggle="dropdown"></i>
|
||||||
|
<ul class="dropdown-menu dropdown-menu-dark">
|
||||||
|
<li><a class="dropdown-item" href="#">Artist Profile</a></li>
|
||||||
|
<li>
|
||||||
|
<hr class="dropdown-divider">
|
||||||
|
</li>
|
||||||
|
<li><a class="dropdown-item" href="#">Episode Submissions</a></li>
|
||||||
|
<li><a class="dropdown-item" href="#">Episode Details</a></li>
|
||||||
|
<li><a class="dropdown-item" href="#">Report</a></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{{-- .header --}}
|
||||||
|
<div class="product-owner py-4 d-flex-between">
|
||||||
|
<span class="bid-owner">Artwork By<br><strong><a href="/artist/{{ $recent->artist->id }}">{{ $recent->artist->name }}</a></strong></span>
|
||||||
|
<span class="profile-share d-flex-center"><a href="/artist/{{ $recent->artist->id }}" class="avatar" data-bs-toggle="tooltip" data-bs-placement="top"
|
||||||
|
title="{{ $recent->artist->name }}"><img src="{{ Vite::asset($recent->artist->avatar ?? 'resources/img/default_avatars/default_avatar_male.svg') }}" style="width:100%;height:auto;" alt="{{ $recent->artist->name }}"></a></span>
|
||||||
|
</div>
|
||||||
|
{{-- End .product-owner --}}
|
||||||
|
<div class="action-wrapper d-flex-between pt-4">
|
||||||
|
<span class="bid-owner">{{ $recent->id == $recent->episode->artwork_id ? 'Selected' : 'Submitted' }} for<br><strong><a href="/artist/{{ $recent->artist->id }}">{{ $recent->podcast->name }}<br>Episode {{ number_format($recent->episode->episode_number) }}</a></strong></span>
|
||||||
|
</div>
|
||||||
|
{{-- action-wrapper --}}
|
||||||
|
</div>
|
||||||
|
{{-- End .content --}}
|
||||||
|
</div>
|
||||||
|
{{-- End .explore-style-one --}}
|
18
site/resources/views/home/recents/section.blade.php
Normal file
18
site/resources/views/home/recents/section.blade.php
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
{{-- Start Live Auction --}}
|
||||||
|
<section class="ptb-120 live-auction">
|
||||||
|
<div class="container">
|
||||||
|
<div class="section-title">
|
||||||
|
<span class="subtitle">Artworks</span>
|
||||||
|
<h2>Recent Artwork Submissons</h2>
|
||||||
|
</div>
|
||||||
|
{{-- End .section-title --}}
|
||||||
|
<div class="slider slick-activation-001 slick-gutter-15 slick-pagination-50">
|
||||||
|
@foreach ($recentSubmissions as $recent)
|
||||||
|
@include('home.recents.card')
|
||||||
|
@endforeach
|
||||||
|
{{-- End .slick-activation-01 --}}
|
||||||
|
</div>
|
||||||
|
{{-- End .container --}}
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
{{-- End Live Auction --}}
|
File diff suppressed because it is too large
Load Diff
@ -1,16 +1,16 @@
|
|||||||
<nav x-data="{ open: false }" class="bg-white dark:bg-gray-800 border-b border-gray-100 dark:border-gray-700">
|
<nav x-data="{ open: false }" class="bg-white dark:bg-gray-800 border-b border-gray-100 dark:border-gray-700">
|
||||||
<!-- Primary Navigation Menu -->
|
{{-- Primary Navigation Menu --}}
|
||||||
<div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
|
<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 justify-between h-16">
|
||||||
<div class="flex">
|
<div class="flex">
|
||||||
<!-- Logo -->
|
{{-- Logo --}}
|
||||||
<div class="shrink-0 flex items-center">
|
<div class="shrink-0 flex items-center">
|
||||||
<a href="{{ route('dashboard') }}">
|
<a href="{{ route('dashboard') }}">
|
||||||
<x-application-logo class="block h-9 w-auto fill-current text-gray-800 dark:text-gray-200" />
|
<x-application-logo class="block h-9 w-auto fill-current text-gray-800 dark:text-gray-200" />
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- Navigation Links -->
|
{{-- Navigation Links --}}
|
||||||
<div class="hidden space-x-8 sm:-my-px sm:ml-10 sm:flex">
|
<div class="hidden space-x-8 sm:-my-px sm:ml-10 sm:flex">
|
||||||
<x-nav-link :href="route('dashboard')" :active="request()->routeIs('dashboard')">
|
<x-nav-link :href="route('dashboard')" :active="request()->routeIs('dashboard')">
|
||||||
{{ __('Dashboard') }}
|
{{ __('Dashboard') }}
|
||||||
@ -18,7 +18,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- Settings Dropdown -->
|
{{-- Settings Dropdown --}}
|
||||||
<div class="hidden sm:flex sm:items-center sm:ml-6">
|
<div class="hidden sm:flex sm:items-center sm:ml-6">
|
||||||
<x-dropdown align="right" width="48">
|
<x-dropdown align="right" width="48">
|
||||||
<x-slot name="trigger">
|
<x-slot name="trigger">
|
||||||
@ -38,7 +38,7 @@
|
|||||||
{{ __('Profile') }}
|
{{ __('Profile') }}
|
||||||
</x-dropdown-link>
|
</x-dropdown-link>
|
||||||
|
|
||||||
<!-- Authentication -->
|
{{-- Authentication --}}
|
||||||
<form method="POST" action="{{ route('logout') }}">
|
<form method="POST" action="{{ route('logout') }}">
|
||||||
@csrf
|
@csrf
|
||||||
|
|
||||||
@ -52,7 +52,7 @@
|
|||||||
</x-dropdown>
|
</x-dropdown>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- Hamburger -->
|
{{-- Hamburger --}}
|
||||||
<div class="-mr-2 flex items-center sm:hidden">
|
<div class="-mr-2 flex items-center sm:hidden">
|
||||||
<button @click="open = ! open" class="inline-flex items-center justify-center p-2 rounded-md text-gray-400 dark:text-gray-500 hover:text-gray-500 dark:hover:text-gray-400 hover:bg-gray-100 dark:hover:bg-gray-900 focus:outline-none focus:bg-gray-100 dark:focus:bg-gray-900 focus:text-gray-500 dark:focus:text-gray-400 transition duration-150 ease-in-out">
|
<button @click="open = ! open" class="inline-flex items-center justify-center p-2 rounded-md text-gray-400 dark:text-gray-500 hover:text-gray-500 dark:hover:text-gray-400 hover:bg-gray-100 dark:hover:bg-gray-900 focus:outline-none focus:bg-gray-100 dark:focus:bg-gray-900 focus:text-gray-500 dark:focus:text-gray-400 transition duration-150 ease-in-out">
|
||||||
<svg class="h-6 w-6" stroke="currentColor" fill="none" viewBox="0 0 24 24">
|
<svg class="h-6 w-6" stroke="currentColor" fill="none" viewBox="0 0 24 24">
|
||||||
@ -64,7 +64,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- Responsive Navigation Menu -->
|
{{-- Responsive Navigation Menu --}}
|
||||||
<div :class="{'block': open, 'hidden': ! open}" class="hidden sm:hidden">
|
<div :class="{'block': open, 'hidden': ! open}" class="hidden sm:hidden">
|
||||||
<div class="pt-2 pb-3 space-y-1">
|
<div class="pt-2 pb-3 space-y-1">
|
||||||
<x-responsive-nav-link :href="route('dashboard')" :active="request()->routeIs('dashboard')">
|
<x-responsive-nav-link :href="route('dashboard')" :active="request()->routeIs('dashboard')">
|
||||||
@ -72,7 +72,7 @@
|
|||||||
</x-responsive-nav-link>
|
</x-responsive-nav-link>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- Responsive Settings Options -->
|
{{-- Responsive Settings Options --}}
|
||||||
<div class="pt-4 pb-1 border-t border-gray-200 dark:border-gray-600">
|
<div class="pt-4 pb-1 border-t border-gray-200 dark:border-gray-600">
|
||||||
<div class="px-4">
|
<div class="px-4">
|
||||||
<div class="font-medium text-base text-gray-800 dark:text-gray-200">{{ Auth::user()->name }}</div>
|
<div class="font-medium text-base text-gray-800 dark:text-gray-200">{{ Auth::user()->name }}</div>
|
||||||
|
7
site/resources/views/livewire/counter.blade.php
Normal file
7
site/resources/views/livewire/counter.blade.php
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
<div>
|
||||||
|
<h1>{{ $count }}</h1>
|
||||||
|
|
||||||
|
<button wire:click="increment">+</button>
|
||||||
|
|
||||||
|
<button wire:click="decrement">-</button>
|
||||||
|
</div>
|
9
site/resources/views/livewire/themeswitch.blade.php
Normal file
9
site/resources/views/livewire/themeswitch.blade.php
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
<li>
|
||||||
|
<label class="theme-switcher-label d-flex" for="theme-switcher">
|
||||||
|
<input type="checkbox" class="theme-switcher" id="theme-switcher">
|
||||||
|
<div class="switch-handle">
|
||||||
|
<i class="ri-sun-line light-text" wire:click="light"></i>
|
||||||
|
<i class="ri-moon-line dark-text" wire:click="dark"></i>
|
||||||
|
</div>
|
||||||
|
</label>
|
||||||
|
</li>
|
73
site/resources/views/partials/footer/section.blade.php
Normal file
73
site/resources/views/partials/footer/section.blade.php
Normal file
@ -0,0 +1,73 @@
|
|||||||
|
{{-- Start Footer --}}
|
||||||
|
<footer class="footer-wrapper">
|
||||||
|
<div class="footer-inner pt-120 pb-80">
|
||||||
|
<div class="container">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-lg-5 col-md-6 mb-8">
|
||||||
|
<div class="footer-widget first-block">
|
||||||
|
<div class="mb-4">
|
||||||
|
<a href="/" class="logo-light"><img src="{{ Vite::asset('resources/img/logo-dark-naag-mob.png') }}" alt="No Agenda Art Generator"
|
||||||
|
title="No Agenda Art Generator - Home"></a>
|
||||||
|
<a href="/" class="logo logo-dark"><img src="{{ Vite::asset('resources/img/logo-white-naag-mob.png') }}" alt="No Agenda Art Generator"
|
||||||
|
title="No Agenda Art Generator - Home"></a>
|
||||||
|
</div>
|
||||||
|
<p class="mb-5 text-justify">Providing the best podcast album art in the universe since 2010.
|
||||||
|
By submitting artwork, you are acknowledging
|
||||||
|
you have the right to publish the work and are agreeing to place the work under the
|
||||||
|
<a href="https://creativecommons.org/licenses/by-sa/3.0/us/">Creative Commons Attribution
|
||||||
|
Share-Alike 3.0, United States License</a>. TYFYC and ITM.
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{{-- End .col --}}
|
||||||
|
|
||||||
|
<div class="col-lg-2 col-md-6 mb-8">
|
||||||
|
<div class="footer-widget">
|
||||||
|
<h4>Community</h4>
|
||||||
|
<ul class="footer-list-widget">
|
||||||
|
<li><a href="https://noagendashow.net">No Agenda Show</a></li>
|
||||||
|
<li><a href="https://noagendasocial.com/">No Agenda Social</a></li>
|
||||||
|
<li><a href="https://noagendastream.com">No Agenda Stream</a></li>
|
||||||
|
<li><a href="http://listen.noagendastream.com/">Alternate Stream Link</a></li>
|
||||||
|
<li><a href="http://noagendanation.com/">No Agenda Nation</a></li>
|
||||||
|
<li><a href="http://noagendashop.com/">No Agenda Shop</a></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{{-- End .col --}}
|
||||||
|
|
||||||
|
<div class="col-lg-2 col-md-6 mb-8">
|
||||||
|
<div class="footer-widget">
|
||||||
|
<h4>Navigation</h4>
|
||||||
|
<ul class="footer-list-widget">
|
||||||
|
<li><a href="blog.html">Blog</a></li>
|
||||||
|
<li><a href="activity.html">Activity</a></li>
|
||||||
|
<li><a href="popular-collections-2.html">Collections</a></li>
|
||||||
|
<li><a href="signin.html">Signin</a></li>
|
||||||
|
<li><a href="signup.html">SignUp</a></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{{-- End .col --}}
|
||||||
|
|
||||||
|
<div class="col-lg-3 col-md-6 mb-8">
|
||||||
|
<div class="footer-widget">
|
||||||
|
<h4>Support</h4>
|
||||||
|
<ul class="footer-list-widget">
|
||||||
|
<li><a href="https://dvorak.org/na">Donate to the No Agenda Podcast</a></li>
|
||||||
|
<li><a rel="me" href="/support-development">Support The Generator</a></li>
|
||||||
|
<li><a rel="me" href="https://noagendasocial.com/@SirPaulCouture">Argue with me on NA Social</a></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{{-- End .col --}}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{{-- End .container --}}
|
||||||
|
</div>
|
||||||
|
<div class="copyright text-center">
|
||||||
|
<div class="container">
|
||||||
|
<p>Copyright © 2010-{{ date('Y') }} Paul Couture. Some Rights Reserved.</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</footer>
|
||||||
|
{{-- End Footer --}}
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user