fix: added og headers, lots of cleanup.
This commit is contained in:
parent
7772be7dc5
commit
f7a27e7f62
@ -8,10 +8,11 @@ services:
|
||||
dockerfile: Dockerfile
|
||||
container_name: ${CONTAINER_NAME:-pcag-laravel}
|
||||
volumes:
|
||||
- ${PATH_TO_SITE}:/var/www/html
|
||||
- ${PATH_TO_STATIC}:/static
|
||||
- ./nginx/default.conf:/etc/nginx/sites-available/default
|
||||
- ./nginx/nginx.conf:/etc/nginx/nginx.conf
|
||||
- /var/www/html/vendor/
|
||||
- ${PATH_TO_SITE}:/var/www/html:cached
|
||||
- ${PATH_TO_STATIC}:/static:cached
|
||||
- ./nginx/default.conf:/etc/nginx/sites-available/default:cached
|
||||
- ./nginx/nginx.conf:/etc/nginx/nginx.conf:cached
|
||||
environment:
|
||||
TZ: UTC
|
||||
PUID: ${UID:-1000}
|
||||
@ -45,7 +46,7 @@ services:
|
||||
static:
|
||||
image: nginx:alpine
|
||||
volumes:
|
||||
- ${PATH_TO_STATIC}:/usr/share/nginx/html
|
||||
- ${PATH_TO_STATIC}:/usr/share/nginx/html:cached
|
||||
environment:
|
||||
TZ: UTC
|
||||
PUID: ${UID:-1000}
|
||||
@ -73,8 +74,8 @@ services:
|
||||
MARIADB_DATABASE: ${LIVE_DB_DATABASE}
|
||||
MARIADB_PASSWORD: ${LIVE_DB_PASSWORD}
|
||||
volumes:
|
||||
- "./db/data:/var/lib/mysql"
|
||||
- "./db/dump:/docker-entrypoint-initdb.d"
|
||||
- "./db/data:/var/lib/mysql:cached"
|
||||
- "./db/dump:/docker-entrypoint-initdb.d:cached"
|
||||
networks:
|
||||
- proxy
|
||||
- default
|
||||
@ -93,8 +94,8 @@ services:
|
||||
ports:
|
||||
- "56379:6379"
|
||||
volumes:
|
||||
- ./redis/redis.conf:/usr/local/etc/redis/redis.conf
|
||||
- ./redis/redis-data:/var/lib/redis
|
||||
- ./redis/redis.conf:/usr/local/etc/redis/redis.conf:cached
|
||||
- ./redis/redis-data:/var/lib/redis:cached
|
||||
environment:
|
||||
- REDIS_REPLICATION_MODE=master
|
||||
labels:
|
||||
|
346
site/app/Console/Commands/AddMissingV3ArtworksCommand.php
Normal file
346
site/app/Console/Commands/AddMissingV3ArtworksCommand.php
Normal file
@ -0,0 +1,346 @@
|
||||
<?php
|
||||
|
||||
namespace App\Console\Commands;
|
||||
|
||||
use Illuminate\Console\Command;
|
||||
use App\Models\Artwork;
|
||||
use App\Models\Episode;
|
||||
use App\Models\Artist;
|
||||
use App\Models\Podcast;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
use Illuminate\Support\Str;
|
||||
use Illuminate\Support\Facades\Storage;
|
||||
use Intervention\Image\Facades\Image;
|
||||
use Carbon\Carbon;
|
||||
use ImageOptimizer;
|
||||
|
||||
class AddMissingV3ArtworksCommand extends Command
|
||||
{
|
||||
/**
|
||||
* The name and signature of the console command.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $signature = 'app:add-missing-v3-artworks-command';
|
||||
|
||||
/**
|
||||
* The console command description.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $description = 'Command description';
|
||||
|
||||
/**
|
||||
* Execute the console command.
|
||||
*/
|
||||
public function handle()
|
||||
{
|
||||
$missing_artworks = [
|
||||
[
|
||||
'url' => 'https://noagenda.dev/old/img/7e5e1ca05eb622e2.png',
|
||||
'title' => 'Show Art 1613',
|
||||
'artist' => 'dirty-jersey-whore',
|
||||
'artist_id' => 1318,
|
||||
'episode' => 1613,
|
||||
],
|
||||
[
|
||||
'url' => 'https://noagenda.dev/old/img/6ac5a1220e954d10.jpg',
|
||||
'title' => 'No Stinkin\' Title Provided',
|
||||
'artist' => 'dirty-jersey-whore',
|
||||
'artist_id' => 1318,
|
||||
'episode' => 1613,
|
||||
],
|
||||
[
|
||||
'url' => 'https://noagenda.dev/old/img/eb9c5a07a25db93b.jpg',
|
||||
'title' => 'McMystery',
|
||||
'artist' => 'Nessworks',
|
||||
'artist_id' => 1159,
|
||||
'episode' => 1614,
|
||||
],
|
||||
[
|
||||
'url' => 'https://noagenda.dev/old/img/16dce3f9249b42e8.png',
|
||||
'title' => 'Blinking Red Lights!',
|
||||
'artist' => 'mountainjay',
|
||||
'artist_id' => 891,
|
||||
'episode' => 1614,
|
||||
],
|
||||
[
|
||||
'url' => 'https://noagenda.dev/old/img/8a6153d61715434b.jpg',
|
||||
'title' => 'Day One Dictator!',
|
||||
'artist' => 'matthewdropco1972',
|
||||
'artist_id' => 1173,
|
||||
'episode' => 1614,
|
||||
],
|
||||
[
|
||||
'url' => 'https://noagenda.dev/old/img/bf6322f359b0727f.png',
|
||||
'title' => 'Vivek\'s Notebook',
|
||||
'artist' => 'sir-paul-couture',
|
||||
'artist_id' => 4,
|
||||
'episode' => 1614,
|
||||
],
|
||||
[
|
||||
'url' => 'https://noagenda.dev/old/img/81e71a8e2b24874b.jpg',
|
||||
'title' => 'Plastic Shoes',
|
||||
'artist' => 'Nessworks',
|
||||
'artist_id' => 1159,
|
||||
'episode' => 1614,
|
||||
],
|
||||
[
|
||||
'url' => 'https://noagenda.dev/old/img/51f16e95c0e86cc9.jpg',
|
||||
'title' => 'My Transhausen Blewupen',
|
||||
'artist' => 'francisco-scaramanga',
|
||||
'artist_id' => 1377,
|
||||
'episode' => 1614,
|
||||
],
|
||||
[
|
||||
'url' => 'https://noagenda.dev/old/img/b3b6c7988b5fd7f0.jpeg',
|
||||
'title' => 'McPartner',
|
||||
'artist' => 'dame-kenny-ben',
|
||||
'artist_id' => 1121,
|
||||
'episode' => 1614,
|
||||
],
|
||||
[
|
||||
'url' => 'https://noagenda.dev/old/img/c9c52179e5eedc6f.png',
|
||||
'title' => 'Red Flashing Lights',
|
||||
'artist' => 'jack-evans',
|
||||
'artist_id' => 1224,
|
||||
'episode' => 1614,
|
||||
],
|
||||
[
|
||||
'url' => 'https://noagenda.dev/old/img/2a29bb2974959b8a.jpg',
|
||||
'title' => 'Threat Level Swift',
|
||||
'artist' => 'darren-oneill',
|
||||
'artist_id' => 756,
|
||||
'episode' => 1614,
|
||||
],
|
||||
[
|
||||
'url' => 'https://noagenda.dev/old/img/0ed3c698ba336ea9.jpg',
|
||||
'title' => 'Blinking Lights',
|
||||
'artist' => 'matthewdropco1972',
|
||||
'artist_id' => 1173,
|
||||
'episode' => 1614,
|
||||
],
|
||||
[
|
||||
'url' => 'https://noagenda.dev/old/img/04658d1ccb786d26.png',
|
||||
'title' => 'Deep State University, In The Morning',
|
||||
'artist' => 'mountainjay',
|
||||
'artist_id' => 891,
|
||||
'episode' => 1614,
|
||||
],
|
||||
[
|
||||
'url' => 'https://noagenda.dev/old/img/61273125525b7861.jpg',
|
||||
'title' => 'Chad GPT',
|
||||
'artist' => 'Nessworks',
|
||||
'artist_id' => 1159,
|
||||
'episode' => 1615,
|
||||
],
|
||||
[
|
||||
'url' => 'https://noagenda.dev/old/img/479090be93d46fad.jpg',
|
||||
'title' => 'Chet GPT',
|
||||
'artist' => 'Nessworks',
|
||||
'artist_id' => 1159,
|
||||
'episode' => 1615,
|
||||
],
|
||||
[
|
||||
'url' => 'https://noagenda.dev/old/img/a533697498ad7f75.png',
|
||||
'title' => 'Word Salad, Roundy Variant',
|
||||
'artist' => 'comic-strip-blogger',
|
||||
'artist_id' => 680,
|
||||
'episode' => 1615,
|
||||
],
|
||||
[
|
||||
'url' => 'https://noagenda.dev/old/img/bcd81059b0440049.png',
|
||||
'title' => 'word salad (that AI allegedly produces)',
|
||||
'artist' => 'comic-strip-blogger',
|
||||
'artist_id' => 680,
|
||||
'episode' => 1615,
|
||||
],
|
||||
[
|
||||
'url' => 'https://noagenda.dev/old/img/ddfbcc471e4f265f.png',
|
||||
'title' => 'microphone hand (without show number)',
|
||||
'artist' => 'comic-strip-blogger',
|
||||
'artist_id' => 680,
|
||||
'episode' => 1615,
|
||||
],
|
||||
[
|
||||
'url' => 'https://noagenda.dev/old/img/c11e2b8a88774fca.png',
|
||||
'title' => 'microphone hand',
|
||||
'artist' => 'comic-strip-blogger',
|
||||
'artist_id' => 680,
|
||||
'episode' => 1615,
|
||||
],
|
||||
[
|
||||
'url' => 'https://noagenda.dev/old/img/f0c08370c93980b8.jpg',
|
||||
'title' => 'Bye Joe',
|
||||
'artist' => 'darren-oneill',
|
||||
'artist_id' => 756,
|
||||
'episode' => 1615,
|
||||
],
|
||||
[
|
||||
'url' => 'https://noagenda.dev/old/img/9fc5c17fc0ec547e.jpg',
|
||||
'title' => 'Coof Train',
|
||||
'artist' => 'darren-oneill',
|
||||
'artist_id' => 756,
|
||||
'episode' => 1615,
|
||||
],
|
||||
[
|
||||
'url' => 'https://noagenda.dev/old/img/99e317f0dd6dd10c.jpg',
|
||||
'title' => 'Comb Your Hair!',
|
||||
'artist' => 'Nessworks',
|
||||
'artist_id' => 1159,
|
||||
'episode' => 1615,
|
||||
],
|
||||
[
|
||||
'url' => 'https://noagenda.dev/old/img/c579a7ef6ab53869.jpg',
|
||||
'title' => 'Milgram',
|
||||
'artist' => 'clip-custodian',
|
||||
'artist_id' => 1431,
|
||||
'episode' => 1615,
|
||||
],
|
||||
[
|
||||
'url' => 'https://noagenda.dev/old/img/ba791114371437bc.jpeg',
|
||||
'title' => '67% are Killers',
|
||||
'artist' => 'dame-kenny-ben',
|
||||
'artist_id' => 1121,
|
||||
'episode' => 1615,
|
||||
],
|
||||
[
|
||||
'url' => 'https://noagenda.dev/old/img/05b40baf17249ea5.jpg',
|
||||
'title' => 'Garage Sale Find',
|
||||
'artist' => 'francisco-scaramanga',
|
||||
'artist_id' => 1377,
|
||||
'episode' => 1615,
|
||||
],
|
||||
[
|
||||
'url' => 'https://noagenda.dev/old/img/fc626cd5542c71d8.jpg',
|
||||
'title' => 'NA Show Art',
|
||||
'artist' => 'monsieur-pierrey',
|
||||
'artist_id' => 58,
|
||||
'episode' => 1615,
|
||||
],
|
||||
[
|
||||
'url' => 'https://noagenda.dev/old/img/2dc17c67400465ad.jpg',
|
||||
'title' => 'Merry Christmas Ukraine',
|
||||
'artist' => 'clip-custodian',
|
||||
'artist_id' => 1431,
|
||||
'episode' => 1616,
|
||||
],
|
||||
[
|
||||
'url' => 'https://noagenda.dev/old/img/18724b09fd552fc0.jpg',
|
||||
'title' => 'THE END IS HERE',
|
||||
'artist' => 'francisco-scaramanga',
|
||||
'artist_id' => 1377,
|
||||
'episode' => 1616,
|
||||
],
|
||||
[
|
||||
'url' => 'https://noagenda.dev/old/img/cefbe40e1afdf45c.jpg',
|
||||
'title' => 'AI Winter is Coming',
|
||||
'artist' => 'Nessworks',
|
||||
'artist_id' => 1159,
|
||||
'episode' => 1616,
|
||||
],
|
||||
[
|
||||
'url' => 'https://noagenda.dev/old/img/045db414cd60cf2a.jpg',
|
||||
'title' => 'Space Race Force',
|
||||
'artist' => 'Nessworks',
|
||||
'artist_id' => 1159,
|
||||
'episode' => 1616,
|
||||
],
|
||||
[
|
||||
'url' => 'https://noagenda.dev/old/img/f817a154c260076f.png',
|
||||
'title' => 'No Agenda Verse',
|
||||
'artist' => 'comic-strip-blogger',
|
||||
'artist_id' => 680,
|
||||
'episode' => 1616,
|
||||
],
|
||||
[
|
||||
'url' => 'https://noagenda.dev/old/img/618ddba291dbe349.png',
|
||||
'title' => 'NA Show Art',
|
||||
'artist' => 'comic-strip-blogger',
|
||||
'artist_id' => 680,
|
||||
'episode' => 1616,
|
||||
],
|
||||
[
|
||||
'url' => 'https://noagenda.dev/old/img/322eda9c9e44933c.jpg',
|
||||
'title' => 'Chinese Satellite',
|
||||
'artist' => 'darren-oneill',
|
||||
'artist_id' => 756,
|
||||
'episode' => 1616,
|
||||
],
|
||||
[
|
||||
'url' => 'https://noagenda.dev/old/img/2c9ecc0646cc49dc.jpeg',
|
||||
'title' => 'Naked No Agenda',
|
||||
'artist' => 'KorrectDaRekard',
|
||||
'artist_id' => 1021,
|
||||
'episode' => 1616,
|
||||
],
|
||||
[
|
||||
'url' => 'https://noagenda.dev/old/img/96ba274872584092.jpg',
|
||||
'title' => 'NA Show Art',
|
||||
'artist' => 'matthewdropco1972',
|
||||
'artist_id' => 1173,
|
||||
'episode' => 1616,
|
||||
],
|
||||
[
|
||||
'url' => 'https://noagenda.dev/old/img/af8ab3953ba21524.jpg',
|
||||
'title' => 'False Idols',
|
||||
'artist' => 'matt-boisvert',
|
||||
'artist_id' => 1368,
|
||||
'episode' => 1616,
|
||||
],
|
||||
[
|
||||
'url' => 'https://noagenda.dev/old/img/ec5e76093063d663.jpg',
|
||||
'title' => 'Collect Them All!',
|
||||
'artist' => 'matt-boisvert',
|
||||
'artist_id' => 1368,
|
||||
'episode' => 1616,
|
||||
],
|
||||
[
|
||||
'url' => 'https://noagenda.dev/old/img/c28ec70cfd544c9b.jpg',
|
||||
'title' => 'Santa\'s New List',
|
||||
'artist' => 'matt-boisvert',
|
||||
'artist_id' => 1368,
|
||||
'episode' => 1616,
|
||||
],
|
||||
[
|
||||
'url' => 'https://noagenda.dev/old/img/6d228246fb744cb7.jpg',
|
||||
'title' => 'Christmas is Coming',
|
||||
'artist' => 'matt-boisvert',
|
||||
'artist_id' => 1368,
|
||||
'episode' => 1616,
|
||||
],
|
||||
];
|
||||
foreach ($missing_artworks as $art) {
|
||||
$artist = Artist::find($art['artist_id']);
|
||||
$episode = Episode::where('episode_number', $art['episode'])->first();
|
||||
$this->line('Artist: ' . $artist->slug);
|
||||
$this->line('Episode: ' . $episode->episode_date->format('Y-m-d'));
|
||||
$artwork = new Artwork;
|
||||
$artwork->title = $art['title'];
|
||||
$artwork->artist_id = $artist->id;
|
||||
$artwork->created_at = $episode->episode_date->format('Y-m-d ' . now()->format('H:i:s'));
|
||||
$artwork->updated_at = $episode->episode_date->format('Y-m-d ' . now()->format('H:i:s'));
|
||||
$artwork->episode_id = $episode->id;
|
||||
$artwork->podcast_id = 1;
|
||||
$artwork->approved_by = 4;
|
||||
$basename = $episode->episode_date->format('Y/m/')
|
||||
. Str::slug($artist->name)
|
||||
. '_'
|
||||
. Str::slug($art['title'])
|
||||
. '_'
|
||||
. Str::random(8)
|
||||
. '.jpg';
|
||||
$artwork->filename = $basename;
|
||||
$artwork->save();
|
||||
$filename = 'artworks/' . $basename;
|
||||
$thumbnailName = 'thumbnails/' . $basename;
|
||||
$this->line($basename);
|
||||
$img = Image::make(file_get_contents($art['url']))->resize(3000, 3000)->encode('jpg', 100);
|
||||
$thumbImg = Image::make(file_get_contents($art['url']))->resize(512, 512)->encode('jpg', 100);
|
||||
$imgLocation = Storage::disk('static')->put($filename, $img);
|
||||
$thumbLocation = Storage::disk('static')->put($thumbnailName, $thumbImg);
|
||||
ImageOptimizer::optimize(Storage::disk('static')->path($filename));
|
||||
ImageOptimizer::optimize(Storage::disk('static')->path($thumbnailName));
|
||||
}
|
||||
}
|
||||
}
|
@ -12,6 +12,7 @@
|
||||
use Illuminate\Validation\Rule;
|
||||
use Illuminate\Support\Facades\Storage;
|
||||
use Illuminate\Support\Facades\Log;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
use Illuminate\Support\Str;
|
||||
use Intervention\Image\Facades\Image;
|
||||
use Illuminate\Support\Facades\Cache;
|
||||
@ -28,11 +29,13 @@ public function index()
|
||||
{
|
||||
$user = auth()->user();
|
||||
$artworks = Artwork::whereNotNull('approved_by')
|
||||
->join('episodes', 'artworks.episode_id', '=', 'episodes.id')
|
||||
->select('artworks.*', DB::raw('episodes.episode_number episode_number'))
|
||||
->with('artist')
|
||||
->with('podcast')
|
||||
->with('episode')
|
||||
->orderBy('episode_id', 'desc')
|
||||
->orderBy('created_at', 'desc')
|
||||
->orderBy('episode_number', 'desc')
|
||||
->orderBy('artworks.created_at', 'desc')
|
||||
->paginate($perPage = 52, $columns = ['*'], $pageName = 'artworks');
|
||||
$podcasts = Cache::remember('publishedPodcasts', 30, function() {
|
||||
return Podcast::where('published', true)->get();
|
||||
@ -107,6 +110,8 @@ public function store(Request $request): RedirectResponse
|
||||
'podcast_id' => $podcast->id,
|
||||
'episode_id' => $episode->id,
|
||||
'filename' => $filename,
|
||||
'created_at' => now(),
|
||||
'updated_at' => now(),
|
||||
])->create();
|
||||
$img = Image::make($rawFile)->resize(3000, null, function($constraint){
|
||||
$constraint->aspectRatio();
|
||||
@ -138,6 +143,12 @@ public function show(Request $request, $id)
|
||||
->with('episode')
|
||||
->with('artist')
|
||||
->first();
|
||||
if (is_null($artwork->approved_by) && $user && $user->id != $artwork->id) {
|
||||
return redirect('artworks');
|
||||
}
|
||||
if (is_null($artwork->approved_by) && !$user) {
|
||||
return redirect('artworks');
|
||||
}
|
||||
return view('artworks.artwork', [
|
||||
'artwork' => $artwork,
|
||||
'user' => $user,
|
||||
@ -194,4 +205,26 @@ public function legacyArtLink(Request $request, $any = null)
|
||||
dd($request->path());
|
||||
//$artwork = Artwork::where('legacy_filename', '/assets/artwork/')
|
||||
}
|
||||
|
||||
public function downloadArchiveList(Request $request, $type = 'sd')
|
||||
{
|
||||
$artworks = Artwork::whereNotNull('approved_by')
|
||||
->orderBy('created_at', 'desc')
|
||||
->pluck('filename');
|
||||
$output = '';
|
||||
if ($type == 'sd') {
|
||||
foreach($artworks as $artwork) {
|
||||
$output .= '"https://static.noagendaartgenerator.com/thumbnails/' . $artwork . '"' . "\r\n";
|
||||
}
|
||||
} else {
|
||||
foreach($artworks as $artwork) {
|
||||
$output .= '"https://static.noagendaartgenerator.com/artworks/' . $artwork . '"' . "\r\n";
|
||||
}
|
||||
}
|
||||
return response($output, 200)
|
||||
->header('Content-type', 'text/plain')
|
||||
->header('Content-Length', strlen($output))
|
||||
->header('Content-Disposition', 'attachment; filename="naartgen-archivelist-' . $type . '.txt"');
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -18,8 +18,7 @@ public function landing(Request $request)
|
||||
$headerCounters = $this->getHeaderCounters();
|
||||
$recentEpisodes = $this->mostRecentEpisodes();
|
||||
$recentSubmissions = $this->mostRecentSubmissions();
|
||||
$leaderboard = $this->leaderboardTwelveMonths();
|
||||
|
||||
$leaderboard = $this->leaderboardTwelveMonthsLanding();
|
||||
return view('home.page', [
|
||||
'user' => $user,
|
||||
'pageTitle' => 'Home',
|
||||
@ -31,6 +30,31 @@ public function landing(Request $request)
|
||||
]);
|
||||
}
|
||||
|
||||
public function leaderboards(Request $request)
|
||||
{
|
||||
$user = auth()->user();
|
||||
return view('leaderboards.leaderboards', [
|
||||
'user' => $user,
|
||||
'leaderboardAllTime' => $this->leaderboardAllTime(),
|
||||
'leaderboardPastTwelveMonths' => $this->leaderboardTwelveMonths(),
|
||||
'leaderboardRollingSixMonths' => $this->leaderboardRollingSixMonths(),
|
||||
'leaderboardRollingNinetyDays' => $this->leaderboardRollingNinetyDays(),
|
||||
]);
|
||||
}
|
||||
|
||||
public function support(Request $request)
|
||||
{
|
||||
return view('home.support.page', [
|
||||
'user' => auth()->user(),
|
||||
'pageTitle' => 'History and Support',
|
||||
'headerCounters' => $this->getHeaderCounters(),
|
||||
'recentEpisodes' => $this->mostRecentEpisodes(),
|
||||
'recentSubmissions' => $this->mostRecentSubmissions(),
|
||||
'leaderboard' => $this->leaderboardTwelveMonthsLanding(),
|
||||
'preferredTheme' => $request->session()->get('preferred_theme') ?? 'dark',
|
||||
]);
|
||||
}
|
||||
|
||||
private function mostRecentSubmissions() {
|
||||
$artworks = Cache::remember('latestSubmissions', 30, function() {
|
||||
return Artwork::whereNotNull('approved_by')
|
||||
@ -52,7 +76,7 @@ private function mostRecentEpisodes()
|
||||
->with('podcast')
|
||||
->with('artwork')
|
||||
->with('artwork.artist')
|
||||
->orderBy('episode_date', 'desc')
|
||||
->orderBy('episode_number', 'desc')
|
||||
->limit(5)
|
||||
->get();
|
||||
});
|
||||
@ -101,6 +125,29 @@ private function numberFormatPrecision($number, $precision = 2, $separator = '.'
|
||||
|
||||
private function leaderboardTwelveMonths() {
|
||||
$leaderboard = cache()->remember('leaderboardTwelveMonths', 30, function() {
|
||||
$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(50)
|
||||
->get();
|
||||
$leaderboard = $this->addArtistModelToLeaderboard($leaderboard);
|
||||
return $leaderboard;
|
||||
});
|
||||
return $leaderboard;
|
||||
}
|
||||
|
||||
private function leaderboardTwelveMonthsLanding() {
|
||||
$leaderboard = cache()->remember('leaderboardTwelveMonthsLanding', 30, function() {
|
||||
$endDate = now()->endOfDay()->subYear()->format('Y-m-d');
|
||||
$leaderboard = DB::table('episodes')
|
||||
->join('artworks', 'artworks.id', '=', 'episodes.artwork_id')
|
||||
@ -122,6 +169,73 @@ private function leaderboardTwelveMonths() {
|
||||
return $leaderboard;
|
||||
}
|
||||
|
||||
private function leaderboardAllTime() {
|
||||
$leaderboard = cache()->remember('leaderboardAllTime', 30, function() {
|
||||
$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)
|
||||
->groupBy('artistId')
|
||||
->orderByDesc('artworkCount')
|
||||
->limit(100)
|
||||
->get();
|
||||
$leaderboard = $this->addArtistModelToLeaderboard($leaderboard);
|
||||
return $leaderboard;
|
||||
});
|
||||
return $leaderboard;
|
||||
}
|
||||
|
||||
private function leaderboardRollingSixMonths() {
|
||||
$leaderboard = cache()->remember('leaderboardRollingSixMonth', 30, function() {
|
||||
$endDate = now()->endOfDay()->subMonths(6)->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(50)
|
||||
->get();
|
||||
$leaderboard = $this->addArtistModelToLeaderboard($leaderboard);
|
||||
return $leaderboard;
|
||||
});
|
||||
return $leaderboard;
|
||||
}
|
||||
|
||||
private function leaderboardRollingNinetyDays() {
|
||||
$leaderboard = cache()->remember('leaderboardNinetyDays', 30, function() {
|
||||
$endDate = now()->endOfDay()->subDays(90)->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(50)
|
||||
->get();
|
||||
$leaderboard = $this->addArtistModelToLeaderboard($leaderboard);
|
||||
return $leaderboard;
|
||||
});
|
||||
return $leaderboard;
|
||||
}
|
||||
|
||||
private function addArtistModelToLeaderboard($leaderboard) {
|
||||
$artistIds = [];
|
||||
foreach ($leaderboard as $lb) {
|
||||
|
@ -1,5 +1,9 @@
|
||||
@extends('layouts.master')
|
||||
|
||||
@section('meta_description', $artwork->description ?? 'Artwork by ' . $artwork->artist->name . ', "' . $artwork->title . '" for the podcast ' . $artwork->podcast->name . '.')
|
||||
|
||||
@section('meta_og_img', config('app.static_asset_url') . '/thumbnails/' . $artwork->filename)
|
||||
|
||||
@section('page-title', '"' . $artwork->title . '" by ' . $artwork->artist->name)
|
||||
|
||||
@section('page-top')
|
||||
|
@ -29,7 +29,7 @@
|
||||
</div>
|
||||
{{-- .header --}}
|
||||
<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="/artist/{{ $thisArtwork->artist->slug }}">{{ $thisArtwork->artist->name ?? 'Unknown' }}</a></strong></span>
|
||||
<span class="profile-share d-flex-center"><a href="/artist/{{ $thisArtwork->artist->slug }}"
|
||||
class="avatar" data-bs-toggle="tooltip"
|
||||
|
@ -2,6 +2,10 @@
|
||||
|
||||
@section('page-title', $pageTitle)
|
||||
|
||||
@section('meta_og_img', config('app.static_asset_url') . '/thumbnails/' . $episode->artwork->filename)
|
||||
|
||||
@section('meta_description', 'Artwork for the ' . $episode->podcast->name . ' podcast, episode ' . $episode->episode_number + 0 . ' by ' . $episode->artwork->artist->name)
|
||||
|
||||
@section('page-top')
|
||||
<section class="inner-page-banner bg-2 bg-image">
|
||||
<div class="container">
|
||||
|
@ -2,6 +2,8 @@
|
||||
|
||||
@section('page-title', 'Submitted Artwork')
|
||||
|
||||
@section('meta_description', 'Explore the artwork submitted at the No Agenda Art Generator.')
|
||||
|
||||
@section('page-top')
|
||||
<section class="inner-page-banner bg-2 bg-image">
|
||||
<div class="container">
|
||||
@ -18,18 +20,6 @@
|
||||
</section>
|
||||
@endsection
|
||||
@section('page-content')
|
||||
<div class="container mt-4">
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<div class="alert alert-success text-success">
|
||||
<p style="color:#20202d;">
|
||||
<strong style="color:#20202d;">NOTE:</strong> Still working out some bugs, episodes 1613-1616 will be added later today
|
||||
after the show. You can find those submissions here: <a style="color: #000;" href="https://noagenda.dev/old/">https://noagenda.dev/old/</a>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<section class="pt-120 pb-90 masonary-wrapper-activation">
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
|
@ -1,11 +1,18 @@
|
||||
{{-- Start Setup Wallet --}}
|
||||
<section class="wallet-setup ptb-120">
|
||||
<div class="container">
|
||||
<div class="d-flex-between">
|
||||
<div class="section-title">
|
||||
<span class="subtitle">WHAT THIS IS</span>
|
||||
<span class="subtitle">What this is</span>
|
||||
<h2>Artists + Podcasters = <i class="ri-heart-fill"></i></h2>
|
||||
</div>
|
||||
{{-- End .section-title --}}
|
||||
<div class="text-large">
|
||||
<a href="/support-development">Learn More About This</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<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>
|
||||
@ -34,6 +41,7 @@
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{{-- End .row --}}
|
||||
</div>
|
||||
{{-- End .container --}}
|
||||
|
@ -8,7 +8,7 @@
|
||||
</div>
|
||||
{{-- End .section-title --}}
|
||||
<div class="text-large">
|
||||
<a href="#">View Leaderboards</a>
|
||||
<a href="/leaderboards">View Leaderboards</a>
|
||||
</div>
|
||||
</div>
|
||||
{{-- End .d-flex-between --}}
|
||||
@ -16,6 +16,25 @@
|
||||
@foreach($leaderboard as $leaderboardArtist)
|
||||
@include('home.leaderboard.card')
|
||||
@endforeach
|
||||
<div class="col-xxl-4 col-lg-6 col-md-6 mb-6">
|
||||
<div class="top-seller-style-two d-flex-between d-flex-stretch">
|
||||
<div class="d-flex-center">
|
||||
{{-- End .thumb --}}
|
||||
<div class="content">
|
||||
<h4 class="title pb-1"><a href="/leaderboards">See More Leaderboards</a></h4>
|
||||
<span class="price">Updated Every Episode</span>
|
||||
</div>
|
||||
{{-- End .content --}}
|
||||
</div>
|
||||
{{-- End .d-flex-center --}}
|
||||
<a href="/leaderboards" class="items-number d-flex-center flex-column">
|
||||
<strong class="pb-1"><i class="ri-arrow-right-double-line"></i></strong>
|
||||
<span> </span>
|
||||
</a>
|
||||
</div>
|
||||
{{-- End .top-seller-style-two --}}
|
||||
</div>
|
||||
{{-- End .col --}}
|
||||
</div>
|
||||
</div>
|
||||
{{-- End container --}}
|
||||
|
138
site/resources/views/home/support/page.blade.php
Normal file
138
site/resources/views/home/support/page.blade.php
Normal file
@ -0,0 +1,138 @@
|
||||
@extends('layouts.master')
|
||||
|
||||
@section('page-title', 'Support and The History of the Art Generator')
|
||||
|
||||
@section('meta_description', 'Learn the history of the No Agenda Art Generator and how to support the generator.')
|
||||
|
||||
@section('page-top')
|
||||
<section class="inner-page-banner bg-2 bg-image">
|
||||
<div class="container">
|
||||
<div class="inner text-center">
|
||||
<h1 class="title">Support & History</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">Explore</li>
|
||||
</ol>
|
||||
</nav>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
@endsection
|
||||
|
||||
@section('page-content')
|
||||
<section class="pt-120 pb-90 blog-details-wrapper">
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-xl-8 mb-6">
|
||||
<div class="blog-content">
|
||||
<h2 class="mb-2">History of the No Agenda Art Generator</h2>
|
||||
<ul class="meta">
|
||||
<li>19 Dec 2024</li>
|
||||
<li>Development</li>
|
||||
<li class="date"><i class="ri-time-line"></i>{{ Carbon\Carbon::create(2023, 12, 19, 22, 1, 9)->diffForHumans() }}</li>
|
||||
</ul>
|
||||
<p>In June of 2010, there was no formal process to submit artwork to
|
||||
the No Agenda Podcast for use as album artwork for each episode. At the same time,
|
||||
I was in the process of learning the then "new to me" Drupal 6 Content Management
|
||||
System. I realized that I could kill two birds with one stone by improving the process
|
||||
of uploading artwork, add some community and competition to the process and learn more
|
||||
about Drupal module development by building a simple tool that would allow anyone to
|
||||
submit artwork live as we trolled-along in the IRC "trollroom" as the show was recorded
|
||||
by our venerable hosts, Adam and John C.</p>
|
||||
<p>The first variation of the Art Generator was built over the course of a weekend, and
|
||||
as part of that development, I did my best to re-create the work of Sir Randy Asher and Sir Paul T.
|
||||
who had, up until that point, submitted the bulk of the user submitted artwork in the archive.
|
||||
</p>
|
||||
<p>For the next almost four years and roughly 4,500 art submissions, the generator continued
|
||||
in it's first interation with an abandonded upgrade to Drupal 7 somewhere in the duration as the Drupal
|
||||
community was more focused on writing "codes-of-conduct" than writing actual code.</p>
|
||||
<p>Around that time, many in the PHP community and myself
|
||||
became aware of an upcoming framework that seemed to offer a ton of promise - Laravel, and I chose to
|
||||
use the generator to become familiar with that new framework. In October 2014, the Art Generator was
|
||||
re-written from the ground up using the Laravel 4 platform which greatly simplified the maintenance and
|
||||
customization of the platform.
|
||||
</p>
|
||||
<p>In 2022, I started to run into minor issues due to the age of the codebase, support for older versions
|
||||
of the database and PHP were becoming deprecated, and tackling them would require a basic rewrite of
|
||||
the entire platform (seriously, the upgrade path from Laravel 4 to 5 suggests re-writing the application.)
|
||||
Laravel had matured, and became the most popular PHP framework on the Internet, upgrades between versions
|
||||
had become relatively painless and took a few minutes to a few hours. However, I procrastinated doing the re-write
|
||||
as I was already spending my days writing Laravel code and I put a lot of focus learning other technologies
|
||||
that would make the upgrade worthwhile.
|
||||
</p>
|
||||
<p>I began the re-write for the current interation of the Art Generator, in early 2023, working on small pieces
|
||||
on weekends as free-time allowed, the core functionality of the system is now powered by Laravel 10 and I used
|
||||
much of the development time to learn some of the new third-party add-ons that would improve developer's experience
|
||||
moving forward such as Laravel Live-Wire, Docker, Docker Compose, Traefik, Caddy and other technology. Development
|
||||
in earnest began in early summer of 2023 - a new design was developed using a new logo graciously provided by
|
||||
<a href="/artist/nykko-syme">Nykko Syme</a> and addressing some community requests for both dark and light mode support,
|
||||
easier to access download links for the artwork, and a much more streamlined codebase allowing for future development
|
||||
with less pain points. A bonus is the ability for me to run the entire stack in Docker making migrating to other hosting
|
||||
and development environments smoother.
|
||||
</p>
|
||||
<p>Toward the end of September, the host that had powered the Art Generator since 2010 emailed its customers and
|
||||
notified us they would be shutting down without warning. I took the time to migrate the database away from that host,
|
||||
and moved as much of the site off of them as possible while working as quickly as possible to finish the upgrade. Communicating
|
||||
with them, I was told to expect to continue to have hosting until my paid-in-advance hosting ran out, which would have
|
||||
been through May of 2024 - but on the morning of November 30, 2023, they disappeared without a trace, stopped answering
|
||||
the phone, and emails bounced. This lit a fire under my rear to complete the newest build as I was very close to complete.
|
||||
</p>
|
||||
<p>
|
||||
The latest version of the generator launched on Sunday, December 17<sup>th</sup>, 2024 to a rocky launch with "good-enough"
|
||||
functionality, it took a few days to stabilize the cacheing and hardware, but you are now viewing the "new hotness" or whatever
|
||||
the kids these days call it, powered by Laravel 10 in a docker powered container that can be migrated in minutes to other locations.
|
||||
It facilitates point-in-time backups, and as you will see below, makes it fairly simple for anyone to grab and entire archive of the
|
||||
artwork submitted to the site in an sane, organized manner. Here's some of the new features that really made the upgrade worth it:
|
||||
</p>
|
||||
<ul>
|
||||
<li>All artwork is optimized, sized, and scaled to the absolute smallest filesize while having the resolutions required by Apple (3,000px x 3,000px) and by the sane people in the world (512px x 512px) with none of the extraneous temporary files and unnecessary thumbnails of the old system.</li>
|
||||
<li>The artwork is organized by year, month, and date, with the artist's name and artwork title in the filename so offline use is easier.</li>
|
||||
<li>Even with the larger resolutions available for download, the size of the artwork archive was cut nearly in half from 30Gb+ to approx 15Gb.</li>
|
||||
<li>Artists get a lot more credit on the new version, it's easier to find their additional work, and get high quality downloads of that work.</li>
|
||||
<li>While not yet implemented in the production site, the new version was built from the ground up with support for more than one podcast. In the coming weeks, I hope to expand and turn that feature on for additional podcasts in the No Agenda Community.</li>
|
||||
</ul>
|
||||
<p>Want to download your own copy of the archive? Know wget and/or curl? There are lists in the sidebar you can download that are updated each time a piece
|
||||
of artwork is approved. I plan to make this easier for non-dudes/dudettes named Ben soon. In the meantime, enjoy your stay, note the v4v section, and be
|
||||
decent to one another.
|
||||
</p>
|
||||
<p class="text-right">--<br>"Sir" Paul Couture<br>Keeper of the Artwork</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-xl-4 mb-6">
|
||||
<aside class="sidebar">
|
||||
<div class="single-widget recent-post mt-0">
|
||||
<h3 class="title">Support | Value4Value</h3>
|
||||
<div class="inner">
|
||||
<ul>
|
||||
<li><a class="d-block" href="http://dvorak.org/NA">Support the Show</a><span class="cate small">First and Foremost, support our boys.</span></li>
|
||||
<li><a class="d-block" href="https://paypal.me/caincouture">PayPal Me</a><span class="cate small">@CainCouture and buy me a coffee - or twelve.</span></li>
|
||||
<li><a class="d-block" href="https://getalby.com/p/pcouture">V4V: ⚡pcouture@getalby.com</a><span class="cate small">Use the lightning network.</span></li>
|
||||
<li><a class="d-block" href="https://static.noagendaartgenerator.com/assets/img/btc-naart-qr.png">Crypto: <i class="ri-btc-line"></i> Old School BTC</a><span class="cate small">bc1qvkm9fpycc8q99kudqwukd8cf8xgxdrhp6a5zl8</span></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="single-widget recent-post mt-8">
|
||||
<h3 class="title">Download The Archive</h3>
|
||||
<div class="inner">
|
||||
<p>Choose one or both of the text lists below for a wget or curl formatted text list to download your own personal copy of the archive.</p>
|
||||
<ul>
|
||||
<li><a class="d-block" href="/download-archive/hd">High-Resolution Archive List</a></li>
|
||||
<li><a class="d-block" href="/download-archive/sd">Standard Resolution Archive List</a></li>
|
||||
</ul>
|
||||
<p class="mb-0 mt-4">I recommend the following:<br>
|
||||
<span class="cate small">Replace "{filename-of-list.txt}" with the filename you downloaded.</span></p>
|
||||
<hr>
|
||||
<pre><code> wget \
|
||||
--content-disposition \
|
||||
--trust-server-names \
|
||||
-i {filename-of-list.txt}</code></pre>
|
||||
<hr>
|
||||
</div>
|
||||
</div>
|
||||
</aside>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
@endsection
|
@ -10,6 +10,7 @@
|
||||
@else
|
||||
<title>.: No Agenda Art Generator :.</title>
|
||||
@endif
|
||||
@include('partials.metabranding')
|
||||
@include('partials/favicon')
|
||||
@vite(['resources/scss/app.scss'])
|
||||
@livewireStyles
|
||||
|
68
site/resources/views/leaderboards/leaderboards.blade.php
Normal file
68
site/resources/views/leaderboards/leaderboards.blade.php
Normal file
@ -0,0 +1,68 @@
|
||||
@extends('layouts.master')
|
||||
|
||||
@section('page-title', 'Leaderboards')
|
||||
|
||||
@section('meta_description', 'Check the standings of the competition at the No Agenda Art Generator.')
|
||||
|
||||
@section('page-top')
|
||||
<section class="inner-page-banner bg-2 bg-image">
|
||||
<div class="container">
|
||||
<div class="inner text-center">
|
||||
<h1 class="title">Leaderboards</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">Leaderboards</li>
|
||||
</ol>
|
||||
</nav>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
@endsection
|
||||
@section('page-content')
|
||||
<section class="pt-120 pb-90">
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<ul class="nav custom-tabs mb-4">
|
||||
<li><a class="active" data-bs-toggle="tab" href="#all-time">All Time</a></li>
|
||||
<li><a data-bs-toggle="tab" href="#rolling-annual">Rolling Annual</a></li>
|
||||
<li><a data-bs-toggle="tab" href="#rolling-six-months">Rolling Six Months</a></li>
|
||||
<li><a data-bs-toggle="tab" href="#rolling-ninety-days">Rolling 90 Days</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="container tab-content">
|
||||
<div class="tab-pane fade show active" id="all-time">
|
||||
<div class="row">
|
||||
@foreach($leaderboardAllTime as $leaderboardArtist)
|
||||
@include('home.leaderboard.card')
|
||||
@endforeach
|
||||
</div>
|
||||
</div>
|
||||
<div class="tab-pane fade" id="rolling-annual">
|
||||
<div class="row">
|
||||
@foreach($leaderboardPastTwelveMonths as $leaderboardArtist)
|
||||
@include('home.leaderboard.card')
|
||||
@endforeach
|
||||
</div>
|
||||
</div>
|
||||
<div class="tab-pane fade" id="rolling-six-months">
|
||||
<div class="row">
|
||||
@foreach($leaderboardRollingSixMonths as $leaderboardArtist)
|
||||
@include('home.leaderboard.card')
|
||||
@endforeach
|
||||
</div>
|
||||
</div>
|
||||
<div class="tab-pane fade" id="rolling-ninety-days">
|
||||
<div class="row">
|
||||
@foreach($leaderboardRollingNinetyDays as $leaderboardArtist)
|
||||
@include('home.leaderboard.card')
|
||||
@endforeach
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
@endsection
|
||||
|
||||
|
||||
|
17
site/resources/views/partials/metabranding.blade.php
Normal file
17
site/resources/views/partials/metabranding.blade.php
Normal file
@ -0,0 +1,17 @@
|
||||
{{-- HTML Meta Tags --}}
|
||||
<meta name="description" content="@yield('meta_description', 'Generating high quality album art for the No Agenda Podcast since 2010.')">
|
||||
|
||||
{{-- Facebook Meta Tags --}}
|
||||
<meta property="og:url" content="{{ url()->current() }}">
|
||||
<meta property="og:type" content="website">
|
||||
<meta property="og:title" content="@yield('page-title', 'No Agenda Art Generator')">
|
||||
<meta property="og:description" content="@yield('meta_description', 'Generating high quality album art for the No Agenda Podcast since 2010.')">
|
||||
<meta property="og:image" content="@yield('meta_og_img', config('app.static_asset_url') . '/v3/dist/naartgen-fb-og-header.png')">
|
||||
|
||||
{{-- Twitter Meta Tags --}}
|
||||
<meta name="twitter:card" content="summary_large_image">
|
||||
<meta property="twitter:domain" content="noagendaartgenerator.com">
|
||||
<meta property="twitter:url" content="{{ url()->current() }}">
|
||||
<meta name="twitter:title" content="No Agenda Art Generator">
|
||||
<meta name="twitter:description" content="@yield('meta_description', 'Generating high quality album art for the No Agenda Podcast since 2010.')">
|
||||
<meta name="twitter:image" content="@yield('meta_og_img', config('app.static_asset_url') . '/v3/dist/naartgen-x-og-header.png')">
|
@ -2,6 +2,8 @@
|
||||
|
||||
@section('page-title', $podcast->name)
|
||||
|
||||
@section('meta_description', 'Selected artwork for the ' . $podcast->name . ' podcast on the No Agenda Art Generator')
|
||||
|
||||
@section('page-top')
|
||||
<section class="inner-page-banner bg-2 bg-image">
|
||||
<div class="container">
|
||||
@ -33,7 +35,10 @@
|
||||
<div class="grid-item podcast--{{ $episode->podcast->slug }}">
|
||||
<div class="explore-style-one flex-stretch">
|
||||
<div class="thumb">
|
||||
<a href="/podcast/{{ $episode->podcast->slug }}/episode/{{ $episode->slug }}">
|
||||
<a href="/podcast/{{ $episode->podcast->slug }}/episode/{{ $episode->slug }}"
|
||||
data-bs-toggle="tooltip"
|
||||
data-bs-placement="top"
|
||||
title="View This Episode">
|
||||
<img src="{{ config('app.static_asset_url')
|
||||
. '/thumbnails/'
|
||||
. $episode->artwork->filename ?? '#'}}"
|
||||
@ -42,7 +47,7 @@
|
||||
</div>
|
||||
<div class="content">
|
||||
<div class="header d-flex-between pt-4 pb-1">
|
||||
<h3 class="title">"{{ $episode->title }}"</h3>
|
||||
<h3 class="title"><a href="/podcast/{{ $episode->podcast->slug }}/episode/{{ $episode->slug }}">"{{ $episode->title }}"</a></h3>
|
||||
</div>
|
||||
<div class="product-owner py-0 pb-2 d-flex-between">
|
||||
<h4>{{ $episode->podcast->name }}</h4>
|
||||
|
@ -2,6 +2,10 @@
|
||||
|
||||
@section('page-title', $artist->name)
|
||||
|
||||
@section('meta_description', 'Artist profile page on the No Agenda Art Generator for ' . $artist->name)
|
||||
|
||||
@section('meta_og_img', $artworks->first() ? config('app.static_asset_url') . '/thumbnails/' . $artworks->first()->filename : config('app.static_asset_url') . '/v3/dist/naartgen-x-og-header.png')
|
||||
|
||||
@section('page-top')
|
||||
<section class="inner-page-banner bg-2 bg-image">
|
||||
<div class="container">
|
||||
|
@ -27,6 +27,9 @@
|
||||
Route::get('/artists', [ArtistController::class, 'index']);
|
||||
Route::get('/podcasts/{slug}', [PodcastController::class, 'show']);
|
||||
Route::get('/podcast/{any}/episode/{slug}', [EpisodeController::class, 'show']);
|
||||
Route::get('/leaderboards', [PageController::class, 'leaderboards'])->name('leaderboards');
|
||||
Route::get('/support-development', [PageController::class, 'support'])->name('support');
|
||||
Route::get('/download-archive/{type}', [ArtworkController::class, 'downloadArchiveList']);
|
||||
Route::get('/dashboard', function () {
|
||||
return view('dashboard');
|
||||
})->middleware(['auth', 'verified'])->name('dashboard');
|
||||
|
Loading…
Reference in New Issue
Block a user