Compare commits

...

8 Commits

Author SHA1 Message Date
96846d3cf9 fix: fix typo in episode blade. 2024-05-26 13:02:19 -05:00
e552dbab07 fix: minor fixes for templates. 2024-05-26 06:48:58 -05:00
346193983f fix: updated, added filament, misc hotfixes. 2024-05-26 02:12:32 +00:00
e25b617327 fix: prevents self approval (#8)
Reviewed-on: #8
Co-authored-by: Paul Couture <paul@paulcouture.com>
Co-committed-by: Paul Couture <paul@paulcouture.com>
2024-01-14 11:22:16 -06:00
b14a77762d fix: modifying borken profile items (#7)
Reviewed-on: #7
Co-authored-by: Paul Couture <paul@paulcouture.com>
Co-committed-by: Paul Couture <paul@paulcouture.com>
2024-01-13 13:16:33 -06:00
a989f3e92b fix: fixes artwork count on podcasts index page (#6)
Reviewed-on: #6
Co-authored-by: Paul Couture <paul@paulcouture.com>
Co-committed-by: Paul Couture <paul@paulcouture.com>
2024-01-13 11:46:38 -06:00
b8d1a164f1 Merge pull request 'fix: limit episode art to approved arworks' (#5) from fix/episode_filter_unapproved into master
Reviewed-on: #5
2024-01-13 11:32:21 -06:00
37d496bbca fix: limit episode art to approved arworks 2024-01-13 11:30:38 -06:00
33 changed files with 1246 additions and 994 deletions

View File

@ -23,6 +23,7 @@ public function index()
$user = auth()->user(); $user = auth()->user();
$artists = Artist::whereHas('artworks') $artists = Artist::whereHas('artworks')
->withCount('artworks') ->withCount('artworks')
->withCount('episodes')
->orderBy('artworks_count', 'desc') ->orderBy('artworks_count', 'desc')
->paginate(100); ->paginate(100);
$podcasts = Podcast::where('published', true)->get(); $podcasts = Podcast::where('published', true)->get();
@ -65,6 +66,8 @@ public function show(Request $request, $slug)
{ {
$user = auth()->user(); $user = auth()->user();
$artist = Artist::where('slug', $slug) $artist = Artist::where('slug', $slug)
->withCount('episodes')
->withCount('artworks')
->firstOrFail(); ->firstOrFail();
$artworks = Artwork::where('artist_id', $artist->id) $artworks = Artwork::where('artist_id', $artist->id)
->with('episode') ->with('episode')

View File

@ -90,6 +90,9 @@ public function approve(Request $request)
'artwork_id' => 'required|exists:artworks,id' 'artwork_id' => 'required|exists:artworks,id'
]); ]);
$artwork = Artwork::find($request->artwork_id); $artwork = Artwork::find($request->artwork_id);
if ($artwork->artist_id == $user->artists->first()->id) {
return redirect('/approve-artwork');
}
if (is_null($artwork->approved_by)) { if (is_null($artwork->approved_by)) {
$artwork->approved_by = $user->artists->first()->id; $artwork->approved_by = $user->artists->first()->id;
$artwork->save(); $artwork->save();
@ -123,9 +126,20 @@ public function store(Request $request): RedirectResponse
$episode = $podcast->episodes->first(); $episode = $podcast->episodes->first();
$artist = auth()->user()->artists()->first(); $artist = auth()->user()->artists()->first();
$rawFile = $request->file('file'); $rawFile = $request->file('file');
$filename = now()->format('Y') $yearDirectory = now()->format('Y');
$monthDirectory = now()->format('m');
$indexPath = $yearDirectory . '/' . $monthDirectory . '/index.htm';
$imgDirExists = Storage::disk('static')->exists('artworks/' . $indexPath);
$thumbDirExists = Storage::disk('static')->exists('thumbnails/' . $indexPath);
if (!$imgDirExists) {
Storage::disk('static')->put('artworks/' . $indexPath, '');
}
if (!$thumbDirExists) {
Storage::disk('static')->put('thumbnails/' . $indexPath, '');
}
$filename = $yearDirectory
. '/' . '/'
. now()->format('m') . $monthDirectory
. '/' . '/'
. Str::slug($artist->name) . Str::slug($artist->name)
. '-' . '-'
@ -140,7 +154,6 @@ public function store(Request $request): RedirectResponse
'overlay_id' => null, 'overlay_id' => null,
'podcast_id' => $podcast->id, 'podcast_id' => $podcast->id,
'episode_id' => $episode->id, 'episode_id' => $episode->id,
//'approved_by' => 4,
'filename' => $filename, 'filename' => $filename,
'created_at' => now(), 'created_at' => now(),
'updated_at' => now(), 'updated_at' => now(),

View File

@ -52,10 +52,9 @@ public function show(Request $request, $podcast_slug, $slug)
{ {
$user = auth()->user(); $user = auth()->user();
$episode = Episode::where('slug', $slug) $episode = Episode::where('slug', $slug)
->with('artworks') ->with('approvedArtworks')
->with('artwork') ->with('artwork')
->with('podcast') ->with('podcast')
->whereNotNull('artworks.approved_by')
->firstOrFail(); ->firstOrFail();
$podcasts = Podcast::where('published', true)->with('episodes', function ($query) { $podcasts = Podcast::where('published', true)->with('episodes', function ($query) {
$query->orderBy('episode_number', 'desc'); $query->orderBy('episode_number', 'desc');
@ -67,6 +66,7 @@ public function show(Request $request, $podcast_slug, $slug)
'pageTitle' => '"' . $episode->title . '" ' . $episode->podcast->name . ' Episode ' . number_format($episode->episode_number + 0), 'pageTitle' => '"' . $episode->title . '" ' . $episode->podcast->name . ' Episode ' . number_format($episode->episode_number + 0),
'podcast' => $episode->podcast, 'podcast' => $episode->podcast,
'episode' => $episode, 'episode' => $episode,
'artworks' => $episode->approvedArtworks,
'podcasts' => $podcasts, 'podcasts' => $podcasts,
]); ]);
} }

View File

@ -21,7 +21,7 @@ public function show(Request $request, $slug)
$episodes = Episode::where('published', true) $episodes = Episode::where('published', true)
->whereNotNull('artwork_id') ->whereNotNull('artwork_id')
->with('artwork') ->with('artwork')
->with('artworks') ->with('approvedArtworks')
->where('podcast_id', $podcast->id) ->where('podcast_id', $podcast->id)
->orderBy('episode_number', 'desc')->paginate(100); ->orderBy('episode_number', 'desc')->paginate(100);
$podcasts = Podcast::where('published', true)->with('episodes')->get(); $podcasts = Podcast::where('published', true)->with('episodes')->get();

View File

@ -0,0 +1,36 @@
<?php
namespace App\Jobs;
use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldBeUnique;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Queue\SerializesModels;
use ImageOptimizer;
use Illuminate\Support\Facades\Log;
class OptimizeArtistHeaderJob implements ShouldQueue
{
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
private $path;
/**
* Create a new job instance.
*/
public function __construct($path)
{
$this->path = $path;
}
/**
* Execute the job.
*/
public function handle(): void
{
Log::info('Header: Optimizing ' . $this->path);
ImageOptimizer::optimize($this->path);
}
}

View File

@ -0,0 +1,36 @@
<?php
namespace App\Jobs;
use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldBeUnique;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Queue\SerializesModels;
use ImageOptimizer;
use Illuminate\Support\Facades\Log;
class OptimizeAvatarJob implements ShouldQueue
{
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
private $path;
/**
* Create a new job instance.
*/
public function __construct($path)
{
$this->path = $path;
}
/**
* Execute the job.
*/
public function handle(): void
{
Log::info('Avatar: Optimizing ' . $this->path);
ImageOptimizer::optimize($this->path);
}
}

View File

@ -11,6 +11,8 @@
use Illuminate\Validation\Rules\File; use Illuminate\Validation\Rules\File;
use Illuminate\Http\RedirectResponse; use Illuminate\Http\RedirectResponse;
use Livewire\Attributes\Validate; use Livewire\Attributes\Validate;
use Illuminate\Support\Facades\Log;
use App\Jobs\OptimizeAvatarJob;
class Avatar extends Component class Avatar extends Component
{ {
@ -32,7 +34,6 @@ public function save()
{ {
$disk = Storage::disk('static'); $disk = Storage::disk('static');
$avatar = $this->avatar->store('avatars', 'static'); $avatar = $this->avatar->store('avatars', 'static');
Image::load($disk->path($avatar)) Image::load($disk->path($avatar))
->manualCrop($this->width, $this->height, $this->x, $this->y) ->manualCrop($this->width, $this->height, $this->x, $this->y)
->save(); ->save();
@ -40,7 +41,9 @@ public function save()
->width(350) ->width(350)
->height(350) ->height(350)
->save(); ->save();
ImageOptimizer::optimize($disk->path($avatar)); Log::info('Avatar: Optimizing ' . $disk->path($avatar));
OptimizeAvatarJob::dispatchSync($disk->path($avatar));
//ImageOptimizer::optimize($disk->path($avatar));
auth()->user()->artists()->first()->update(compact('avatar')); auth()->user()->artists()->first()->update(compact('avatar'));
$this->avatar = null; $this->avatar = null;
return redirect(request()->header('Referer')); return redirect(request()->header('Referer'));

View File

@ -11,6 +11,8 @@
use Illuminate\Validation\Rules\File; use Illuminate\Validation\Rules\File;
use Illuminate\Http\RedirectResponse; use Illuminate\Http\RedirectResponse;
use Livewire\Attributes\Validate; use Livewire\Attributes\Validate;
use Illuminate\Support\Facades\Log;
use App\Jobs\OptimizeArtistHeaderJob;
class Header extends Component class Header extends Component
{ {
@ -32,7 +34,6 @@ public function save()
{ {
$disk = Storage::disk('static'); $disk = Storage::disk('static');
$header = $this->header->store('artist_headers', 'static'); $header = $this->header->store('artist_headers', 'static');
Image::load($disk->path($header)) Image::load($disk->path($header))
->manualCrop($this->width, $this->height, $this->x, $this->y) ->manualCrop($this->width, $this->height, $this->x, $this->y)
->save(); ->save();
@ -40,7 +41,8 @@ public function save()
->width(270) ->width(270)
->height(185) ->height(185)
->save(); ->save();
ImageOptimizer::optimize($disk->path($header)); Log::info('Avatar: Optimizing ' . $disk->path($header));
OptimizeArtistHeaderJob::dispatchSync($disk->path($header));
auth()->user()->artists()->first()->update(compact('header')); auth()->user()->artists()->first()->update(compact('header'));
$this->header = null; $this->header = null;
return redirect(request()->header('Referer')); return redirect(request()->header('Referer'));

View File

@ -31,6 +31,11 @@ public function artwork()
return $this->hasOne(Artwork::class, 'id', 'artwork_id'); return $this->hasOne(Artwork::class, 'id', 'artwork_id');
} }
public function approvedArtworks()
{
return $this->hasMany(Artwork::class)->whereNotNull('artworks.approved_by');
}
public function artworks() public function artworks()
{ {
return $this->hasMany(Artwork::class); return $this->hasMany(Artwork::class);

1754
site/composer.lock generated

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1 +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}; 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})},mountAction:function(e,s=null){this.$wire.set("selectedTableRecords",this.selectedRecords,!1),this.$wire.mountTableAction(e,s)},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};

File diff suppressed because one or more lines are too long

View File

@ -68,11 +68,15 @@ class="avatar" data-bs-toggle="tooltip"
</div> </div>
{{-- End .product-owner --}} {{-- End .product-owner --}}
<div class="action-wrapper py-5 d-flex align-items-center justify-content-center"> <div class="action-wrapper py-5 d-flex align-items-center justify-content-center">
@if (auth()->user()->artists->first()->id != $thisArtwork->artist_id)
<form action="/approve-artworks" method="POST" class="approve-artwork-form" name="approve-artwork-{{ $thisArtwork->id}}" enctype="multipart/form-data"> <form action="/approve-artworks" method="POST" class="approve-artwork-form" name="approve-artwork-{{ $thisArtwork->id}}" enctype="multipart/form-data">
@csrf @csrf
<input name="artwork_id" type="hidden" value="{{ $thisArtwork->id }}"> <input name="artwork_id" type="hidden" value="{{ $thisArtwork->id }}">
<button type="submit" class="btn btn-gradient btn-medium justify-content-center"><span>Approve and Publish</span></button> <button type="submit" class="btn btn-gradient btn-medium justify-content-center"><span>Approve and Publish</span></button>
</form> </form>
@else
<p>You cannot approve your own</p>
@endif
</div> </div>
</div> </div>
</div> </div>

View File

@ -2,7 +2,9 @@
@section('page-title', $pageTitle) @section('page-title', $pageTitle)
@if (!is_null($episode->artwork))
@section('meta_og_img', config('app.static_asset_url') . '/thumbnails/' . $episode->artwork->filename) @section('meta_og_img', config('app.static_asset_url') . '/thumbnails/' . $episode->artwork->filename)
@endif
@section('meta_description', 'Artwork for the ' . $episode->podcast->name . ' podcast, episode ' . $episode->episode_number + 0 . ' by ' . $episode->artwork->artist->name) @section('meta_description', 'Artwork for the ' . $episode->podcast->name . ' podcast, episode ' . $episode->episode_number + 0 . ' by ' . $episode->artwork->artist->name)
@ -44,7 +46,7 @@
{{ $episode->episode_date->format('Y') }}</h4> {{ $episode->episode_date->format('Y') }}</h4>
<h4 class="mb-4">Artwork By: <a href="/artist/{{ $episode->artwork->artist->slug }}">{{ $episode->artwork->artist->name }}</a></h4> <h4 class="mb-4">Artwork By: <a href="/artist/{{ $episode->artwork->artist->slug }}">{{ $episode->artwork->artist->name }}</a></h4>
<p class="subtitle"> <p class="subtitle">
{{ number_format($episode->artworks->count()) }} Artworks Submitted. {{ number_format($artworks->count()) }} Artworks Submitted.
</p> </p>
<div class="container"> <div class="container">
<div class="row"> <div class="row">
@ -88,14 +90,14 @@ class="ri-broadcast-line"></i>
<div class="container"> <div class="container">
<div class="section-title"> <div class="section-title">
<span class="subtitle">Other Submitted Artworks</span> <span class="subtitle">Other Submitted Artworks</span>
<h3>{{ number_format($episode->artworks->count() - 1) }} other art pieces submitted</h3> <h3>{{ number_format($artworks->count() - 1) }} other art pieces submitted</h3>
</div> </div>
</div> </div>
<div class="container"> <div class="container">
{{-- End .section-title --}} {{-- End .section-title --}}
<div class="grid-filter-wrapper masonry-list"> <div class="grid-filter-wrapper masonry-list">
<div class="resizer"></div> <div class="resizer"></div>
@foreach ($episode->artworks as $recent) @foreach ($artworks as $recent)
@if ($recent->id != $episode->artwork_id) @if ($recent->id != $episode->artwork_id)
@php @php
$thisArtwork = $recent; $thisArtwork = $recent;

View File

@ -4,8 +4,8 @@
</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!<br> A community collaboration producing the best podcast album art in the universe!<br>
Once discussed on <em>The Joe Rogan Experience</em>, sadly,<br> Once discussed on <em>The Joe Rogan Experience</em>, sadly, young Jamie was not<br>
Young Jamie was not asked to pull this up. 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="/artworks" class="btn btn-gradient"> <a href="/artworks" class="btn btn-gradient">

View File

@ -107,6 +107,7 @@ functionality, it took a few days to stabilize the cacheing and hardware, but yo
<ul> <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="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://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://venmo.com/ucturtle">Venmo</a><span class="cate small">@ucturtle if you prefer.</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://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> <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> </ul>

View File

@ -25,7 +25,7 @@
<h4>Community</h4> <h4>Community</h4>
<ul class="footer-list-widget"> <ul class="footer-list-widget">
<li><a href="https://noagendashow.net">No Agenda Show</a></li> <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://noauthority.social/">No Authority Social</a></li>
<li><a href="https://noagendastream.com">No Agenda Stream</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://listen.noagendastream.com/">Alternate Stream Link</a></li>
<li><a href="http://noagendanation.com/">No Agenda Nation</a></li> <li><a href="http://noagendanation.com/">No Agenda Nation</a></li>
@ -51,7 +51,7 @@
<ul class="footer-list-widget"> <ul class="footer-list-widget">
<li><a href="https://dvorak.org/na">Donate to the No Agenda Podcast</a></li> <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="/support-development">Support The Generator</a></li>
<li><a rel="me" href="https://noagendasocial.com/@SirPaulCouture">Argue with me on NA Social</a></li> <li><a rel="me" href="https://noauthority.social/@SirPaulCouture">Argue with me on NA Social</a></li>
</ul> </ul>
</div> </div>
</div> </div>

View File

@ -70,7 +70,7 @@ class="avatar" data-bs-toggle="tooltip"
</span> </span>
</div> </div>
<div class="action-wrapper py-1 mb-1 d-flex-between"> <div class="action-wrapper py-1 mb-1 d-flex-between">
<span class="bid-owner">{{ number_format($episode->artworks->count()) }} Artworks Submitted</span> <span class="bid-owner">{{ number_format($episode->approvedArtworks->count()) }} Artworks Submitted</span>
</span> </span>
</div> </div>
</div> </div>

View File

@ -7,7 +7,9 @@
alt="{{ $artist->name }}" /></a> alt="{{ $artist->name }}" /></a>
<h4 class="title"><a href="/artist/{{ $artist->slug }}">{{ $artist->name }}</a></h4> <h4 class="title"><a href="/artist/{{ $artist->slug }}">{{ $artist->name }}</a></h4>
<p class="title">{{ $artist->location ?? 'No Agenda Nation' }}</p> <p class="title">{{ $artist->location ?? 'No Agenda Nation' }}</p>
@if ($artist->artworks->count())
<p class="title">Artist For {{ $artist->artworks->sortBy('created_at')->first()->created_at->diffForHumans(now(), Carbon\CarbonInterface::DIFF_ABSOLUTE) }}</p> <p class="title">Artist For {{ $artist->artworks->sortBy('created_at')->first()->created_at->diffForHumans(now(), Carbon\CarbonInterface::DIFF_ABSOLUTE) }}</p>
@endif
@if ($artist->bio) @if ($artist->bio)
<h4>Bio:</h4> <h4>Bio:</h4>
<p>{{ nl2br($artist->bio) }}</p> <p>{{ nl2br($artist->bio) }}</p>
@ -21,7 +23,8 @@
@endif @endif
</div> </div>
<div class="size-small justify-content-center mb-4"> <div class="size-small justify-content-center mb-4">
{{ number_format($artist->artworks->count()) }} Submitted Artworks {{ number_format($artist->artworks_count) }} Submitted Artworks<br>
{{ number_format($artist->episodes_count) }} Artworks Selected
</div> </div>
</div> </div>
</div> </div>

View File

@ -29,7 +29,7 @@
<x-input-error class="mt-2" :messages="$errors->get('alby')" /> <x-input-error class="mt-2" :messages="$errors->get('alby')" />
</div> </div>
<div class="mt-1"> <div class="mt-1">
<x-input-label for="nasocial" :value="__('No Agenda Social Account')" /> <x-input-label for="nasocial" :value="__('No Authority Social Account')" />
<x-text-input id="nasocial" name="nasocial" type="text" class="mt-1 block w-full" :value="old('nasocial', $user->artists->first()->nasocial)" required autocomplete="naasocial" /> <x-text-input id="nasocial" name="nasocial" type="text" class="mt-1 block w-full" :value="old('nasocial', $user->artists->first()->nasocial)" required autocomplete="naasocial" />
<x-input-error class="mt-2" :messages="$errors->get('nasocial')" /> <x-input-error class="mt-2" :messages="$errors->get('nasocial')" />
</div> </div>