Compare commits
	
		
			2 Commits
		
	
	
		
			9a7aa89362
			...
			c352d4d273
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| c352d4d273 | |||
| 5c133cba56 | 
							
								
								
									
										4
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										4
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							@ -29,5 +29,7 @@ Homestead.yaml
 | 
			
		||||
Homestead.json
 | 
			
		||||
/.vagrant
 | 
			
		||||
.phpunit.result.cache
 | 
			
		||||
 | 
			
		||||
legacypublic
 | 
			
		||||
migrated_artworks_files.tar.gz
 | 
			
		||||
migrated_thumbnail_files.tar.gz
 | 
			
		||||
site/.yarn/releases/yarn-1.22.19.cjs
 | 
			
		||||
 | 
			
		||||
@ -10,6 +10,7 @@ services:
 | 
			
		||||
    volumes:
 | 
			
		||||
      - ./site:/var/www/html
 | 
			
		||||
      - ./static:/static
 | 
			
		||||
      #- ./legacypublic:/legacypublic
 | 
			
		||||
    environment:
 | 
			
		||||
      TZ: UTC
 | 
			
		||||
      PUID: ${UID:-1000}
 | 
			
		||||
@ -22,6 +23,7 @@ services:
 | 
			
		||||
      LARAVEL_QUEUE_ENABLED: true
 | 
			
		||||
      LARAVEL_QUEUE_OPTIONS: --timeout=60 --tries=3 redis
 | 
			
		||||
      LARAVEL_SCHEDULE_ENABLED: true
 | 
			
		||||
      PHP_OPEN_BASEDIR: "/var/www/html:/static"
 | 
			
		||||
    ports:
 | 
			
		||||
      - "80:80"
 | 
			
		||||
    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;
 | 
			
		||||
 | 
			
		||||
use App\Models\Artwork;
 | 
			
		||||
use App\Models\Podcast;
 | 
			
		||||
use App\Models\Episode;
 | 
			
		||||
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
 | 
			
		||||
{
 | 
			
		||||
@ -14,7 +25,19 @@ class ArtworkController extends Controller
 | 
			
		||||
     */
 | 
			
		||||
    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 @@ class ArtworkController extends Controller
 | 
			
		||||
     */
 | 
			
		||||
    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 @@ class ArtworkController extends Controller
 | 
			
		||||
     * @param  \Illuminate\Http\Request  $request
 | 
			
		||||
     * @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.
 | 
			
		||||
     *
 | 
			
		||||
     * @param  \App\Models\Artwork  $artwork
 | 
			
		||||
     * @param  \Illuminate\Http\Request  $request
 | 
			
		||||
     * @param  the id of the \App\Models\Artwork $id
 | 
			
		||||
     * @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 @@ namespace App\Http\Controllers;
 | 
			
		||||
 | 
			
		||||
use Illuminate\Http\Request;
 | 
			
		||||
use Illuminate\Support\Facades\Cache;
 | 
			
		||||
use Illuminate\Support\Facades\DB;
 | 
			
		||||
use App\Models\Artwork;
 | 
			
		||||
use App\Models\Artist;
 | 
			
		||||
use App\Models\Episode;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class PageController extends Controller
 | 
			
		||||
{
 | 
			
		||||
    public function landing()
 | 
			
		||||
    public function landing(Request $request)
 | 
			
		||||
    {
 | 
			
		||||
        $user = auth()->user();
 | 
			
		||||
        $headerCounters = $this->getHeaderCounters();
 | 
			
		||||
        $recentEpisodes = $this->mostRecentEpisodes();
 | 
			
		||||
        $recentSubmissions = $this->mostRecentSubmissions();
 | 
			
		||||
        $leaderboard = $this->leaderboardTwelveMonths();
 | 
			
		||||
 | 
			
		||||
        return view('home.page', [
 | 
			
		||||
            'user' => $user,
 | 
			
		||||
            'pageTitle' => 'Home',
 | 
			
		||||
            'headerCounters' => $headerCounters,
 | 
			
		||||
            '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()
 | 
			
		||||
    {
 | 
			
		||||
        $episodes = Cache::remember('latestEpisodes', 30, function() {
 | 
			
		||||
            return Episode::where('published', true)
 | 
			
		||||
                ->whereHas('artwork')
 | 
			
		||||
                ->with('podcast')
 | 
			
		||||
                ->with('artwork')
 | 
			
		||||
                ->with('artwork.artist')
 | 
			
		||||
@ -39,7 +62,7 @@ class PageController extends Controller
 | 
			
		||||
    private function getHeaderCounters()
 | 
			
		||||
    {
 | 
			
		||||
        $headerCounters = [];
 | 
			
		||||
        $artworkCountNumber = Cache::remember('artworkCountNumber', 10, function() { 
 | 
			
		||||
        $artworkCountNumber = Cache::remember('artworkCountNumber', 10, function() {
 | 
			
		||||
            return Artwork::all()->count();
 | 
			
		||||
        });
 | 
			
		||||
        $artistCountNumber = Cache::remember('artistCountNumber', 10, function() {
 | 
			
		||||
@ -60,7 +83,7 @@ class PageController extends Controller
 | 
			
		||||
            $number /= 1000;
 | 
			
		||||
        }
 | 
			
		||||
        return [
 | 
			
		||||
            'number' => $this->numberFormatPrecision($number, 1), //number_format(floatval($number), 1), 
 | 
			
		||||
            'number' => $this->numberFormatPrecision($number, 1), //number_format(floatval($number), 1),
 | 
			
		||||
            'unit' => $units[$i],
 | 
			
		||||
        ];
 | 
			
		||||
    }
 | 
			
		||||
@ -76,4 +99,46 @@ class PageController extends Controller
 | 
			
		||||
        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' => [
 | 
			
		||||
            // \Laravel\Sanctum\Http\Middleware\EnsureFrontendRequestsAreStateful::class,
 | 
			
		||||
            \Laravel\Sanctum\Http\Middleware\EnsureFrontendRequestsAreStateful::class,
 | 
			
		||||
            \Illuminate\Routing\Middleware\ThrottleRequests::class.':api',
 | 
			
		||||
            \Illuminate\Routing\Middleware\SubstituteBindings::class,
 | 
			
		||||
        ],
 | 
			
		||||
 | 
			
		||||
@ -56,12 +56,12 @@ class StashAndOptimizeLegacyArtworkJob implements ShouldQueue
 | 
			
		||||
            $this->createArtwork($basename);
 | 
			
		||||
            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) {
 | 
			
		||||
                $constraint->aspectRatio();
 | 
			
		||||
            })
 | 
			
		||||
            ->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) {
 | 
			
		||||
                $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 $casts = [
 | 
			
		||||
        'created_at' => 'datetime',
 | 
			
		||||
        'updated_at' => 'datetime',
 | 
			
		||||
        'deleted_at' => 'datetime',
 | 
			
		||||
    ];
 | 
			
		||||
 | 
			
		||||
    public function user()
 | 
			
		||||
    {
 | 
			
		||||
        return $this->belongs_to(User::class);
 | 
			
		||||
 | 
			
		||||
@ -16,6 +16,12 @@ class Artwork extends Model
 | 
			
		||||
 | 
			
		||||
    protected $dates = ['created_at', 'updated_at', 'deleted_at'];
 | 
			
		||||
 | 
			
		||||
    protected $casts = [
 | 
			
		||||
        'created_at' => 'datetime',
 | 
			
		||||
        'updated_at' => 'datetime',
 | 
			
		||||
        'deleted_at' => 'datetime',
 | 
			
		||||
    ];
 | 
			
		||||
 | 
			
		||||
    public function podcast()
 | 
			
		||||
    {
 | 
			
		||||
        return $this->belongsTo(Podcast::class);
 | 
			
		||||
 | 
			
		||||
@ -14,6 +14,13 @@ class Episode extends Model
 | 
			
		||||
 | 
			
		||||
    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()
 | 
			
		||||
    {
 | 
			
		||||
        return $this->belongsTo(Podcast::class);
 | 
			
		||||
 | 
			
		||||
@ -16,6 +16,12 @@ class Overlay extends Model
 | 
			
		||||
 | 
			
		||||
    protected $dates = ['created_at', 'updated_at', 'deleted_at'];
 | 
			
		||||
 | 
			
		||||
    protected $casts = [
 | 
			
		||||
        'created_at' => 'datetime',
 | 
			
		||||
        'updated_at' => 'datetime',
 | 
			
		||||
        'deleted_at' => 'datetime',
 | 
			
		||||
    ];
 | 
			
		||||
    
 | 
			
		||||
    public function artist()
 | 
			
		||||
    {
 | 
			
		||||
        return $this->belongsTo(Artist::class);
 | 
			
		||||
 | 
			
		||||
@ -16,6 +16,13 @@ class Podcast extends Model
 | 
			
		||||
 | 
			
		||||
    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()
 | 
			
		||||
    {
 | 
			
		||||
        return $this->hasMany(Episode::class);
 | 
			
		||||
 | 
			
		||||
@ -14,8 +14,6 @@ class User extends Authenticatable
 | 
			
		||||
 | 
			
		||||
    protected $table = 'users';
 | 
			
		||||
 | 
			
		||||
    protected $dates = ['created_at', 'updated_at'];
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * The attributes that are mass assignable.
 | 
			
		||||
     *
 | 
			
		||||
@ -44,6 +42,17 @@ class User extends Authenticatable
 | 
			
		||||
     */
 | 
			
		||||
    protected $casts = [
 | 
			
		||||
        '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()
 | 
			
		||||
 | 
			
		||||
@ -13,6 +13,11 @@ class Wallet extends Model
 | 
			
		||||
 | 
			
		||||
    protected $dates = ['created_at', 'updated_at'];
 | 
			
		||||
 | 
			
		||||
    protected $casts = [
 | 
			
		||||
        'created_at' => 'datetime',
 | 
			
		||||
        'updated_at' => 'datetime',
 | 
			
		||||
    ];
 | 
			
		||||
 | 
			
		||||
    public function walletType()
 | 
			
		||||
    {
 | 
			
		||||
        return $this->hasOne(WalletType::class);
 | 
			
		||||
 | 
			
		||||
@ -13,6 +13,11 @@ class WalletType extends Model
 | 
			
		||||
 | 
			
		||||
    protected $dates = ['created_at', 'updated_at'];
 | 
			
		||||
 | 
			
		||||
    protected $casts = [
 | 
			
		||||
        'created_at' => 'datetime',
 | 
			
		||||
        'updated_at' => 'datetime',
 | 
			
		||||
    ];
 | 
			
		||||
 | 
			
		||||
    public function wallets()
 | 
			
		||||
    {
 | 
			
		||||
        return $this->hasMany(Wallet::class);
 | 
			
		||||
 | 
			
		||||
@ -3,6 +3,9 @@
 | 
			
		||||
namespace App\Providers;
 | 
			
		||||
 | 
			
		||||
use Illuminate\Support\ServiceProvider;
 | 
			
		||||
use Illuminate\Pagination\Paginator;
 | 
			
		||||
use Illuminate\Support\Facades\View;
 | 
			
		||||
use App\Models\Podcast;
 | 
			
		||||
 | 
			
		||||
class AppServiceProvider extends ServiceProvider
 | 
			
		||||
{
 | 
			
		||||
@ -19,6 +22,8 @@ class AppServiceProvider extends ServiceProvider
 | 
			
		||||
     */
 | 
			
		||||
    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
 | 
			
		||||
     */
 | 
			
		||||
    public const HOME = '/dashboard';
 | 
			
		||||
    public const HOME = '/';
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Define your route model bindings, pattern filters, and other route configuration.
 | 
			
		||||
 | 
			
		||||
@ -2,16 +2,23 @@
 | 
			
		||||
    "name": "laravel/laravel",
 | 
			
		||||
    "type": "project",
 | 
			
		||||
    "description": "The skeleton application for the Laravel framework.",
 | 
			
		||||
    "keywords": ["laravel", "framework"],
 | 
			
		||||
    "keywords": [
 | 
			
		||||
        "laravel",
 | 
			
		||||
        "framework"
 | 
			
		||||
    ],
 | 
			
		||||
    "license": "MIT",
 | 
			
		||||
    "require": {
 | 
			
		||||
        "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",
 | 
			
		||||
        "intervention/image": "^2.7",
 | 
			
		||||
        "laravel/framework": "^10.10",
 | 
			
		||||
        "laravel/sanctum": "^3.2",
 | 
			
		||||
        "laravel/sanctum": "^3.3",
 | 
			
		||||
        "laravel/tinker": "^2.8",
 | 
			
		||||
        "livewire/livewire": "^2.12",
 | 
			
		||||
        "livewire/livewire": "^3.2",
 | 
			
		||||
        "mckenziearts/blade-untitledui-icons": "^1.2",
 | 
			
		||||
        "spatie/laravel-image-optimizer": "^1.7"
 | 
			
		||||
    },
 | 
			
		||||
    "require-dev": {
 | 
			
		||||
@ -29,7 +36,10 @@
 | 
			
		||||
            "App\\": "app/",
 | 
			
		||||
            "Database\\Factories\\": "database/factories/",
 | 
			
		||||
            "Database\\Seeders\\": "database/seeders/"
 | 
			
		||||
        }
 | 
			
		||||
        },
 | 
			
		||||
        "files": [
 | 
			
		||||
            "app/Helpers/pcagHelpers.php"
 | 
			
		||||
        ]
 | 
			
		||||
    },
 | 
			
		||||
    "autoload-dev": {
 | 
			
		||||
        "psr-4": {
 | 
			
		||||
@ -39,7 +49,8 @@
 | 
			
		||||
    "scripts": {
 | 
			
		||||
        "post-autoload-dump": [
 | 
			
		||||
            "Illuminate\\Foundation\\ComposerScripts::postAutoloadDump",
 | 
			
		||||
            "@php artisan package:discover --ansi"
 | 
			
		||||
            "@php artisan package:discover --ansi",
 | 
			
		||||
            "@php artisan filament:upgrade"
 | 
			
		||||
        ],
 | 
			
		||||
        "post-update-cmd": [
 | 
			
		||||
            "@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 @@ return [
 | 
			
		||||
        App\Providers\AuthServiceProvider::class,
 | 
			
		||||
        // App\Providers\BroadcastServiceProvider::class,
 | 
			
		||||
        App\Providers\EventServiceProvider::class,
 | 
			
		||||
        App\Providers\Filament\AdminPanelProvider::class,
 | 
			
		||||
        App\Providers\RouteServiceProvider::class,
 | 
			
		||||
    ])->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 @@ return [
 | 
			
		||||
            'collation' => 'utf8mb4_unicode_ci',
 | 
			
		||||
            'prefix' => '',
 | 
			
		||||
            '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,
 | 
			
		||||
            'engine' => null,
 | 
			
		||||
            'options' => extension_loaded('pdo_mysql') ? array_filter([
 | 
			
		||||
@ -148,4 +168,4 @@ return [
 | 
			
		||||
 | 
			
		||||
    ],
 | 
			
		||||
 | 
			
		||||
];
 | 
			
		||||
];
 | 
			
		||||
@ -39,6 +39,7 @@ class ArtworkFactory extends Factory
 | 
			
		||||
            'created_at' => $created,
 | 
			
		||||
            'updated_at' => $created,
 | 
			
		||||
            'legacy_id'  => null,
 | 
			
		||||
            'approved_by' => null,
 | 
			
		||||
        ];
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -35,6 +35,7 @@ class UserFactory extends Factory
 | 
			
		||||
            'email_verified_at' => now(),
 | 
			
		||||
            'password' => $password,
 | 
			
		||||
            '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 @@ class SeedFromOldApiSeeder extends Seeder
 | 
			
		||||
    {
 | 
			
		||||
        //$this->populateLegacyArtworks();
 | 
			
		||||
        //die();
 | 
			
		||||
        $current_page = 283;
 | 
			
		||||
        $current_page = 0;
 | 
			
		||||
        $totalArtworks = 0;
 | 
			
		||||
        $missingArtworks = 0;
 | 
			
		||||
        $missingModel = 0;
 | 
			
		||||
@ -43,20 +43,20 @@ class SeedFromOldApiSeeder extends Seeder
 | 
			
		||||
                    if ($legacyUser->artworks->count() < count($user->artworks)) {
 | 
			
		||||
                        $countDiff = count($user->artworks) - $legacyUser->artworks->count();
 | 
			
		||||
                        $missingArtworks += $countDiff;
 | 
			
		||||
                        $this->command->comment('Artist ID ' 
 | 
			
		||||
                            . $legacyUser->id 
 | 
			
		||||
                            . ' ' 
 | 
			
		||||
                            . $legacyUser->name 
 | 
			
		||||
                            . ' has ' 
 | 
			
		||||
                            . $legacyUser->artworks->count() 
 | 
			
		||||
                        $this->command->comment('Artist ID '
 | 
			
		||||
                            . $legacyUser->id
 | 
			
		||||
                            . ' '
 | 
			
		||||
                            . $legacyUser->name
 | 
			
		||||
                            . ' has '
 | 
			
		||||
                            . $legacyUser->artworks->count()
 | 
			
		||||
                            . ' artworks.');
 | 
			
		||||
                        $this->command->error('Missing ' . $countDiff . ' artworks.');
 | 
			
		||||
                        foreach ($user->artworks as $artwork) {
 | 
			
		||||
                            $date = Carbon::parse($artwork->created_at);
 | 
			
		||||
                            $basename = $date->format('Y') 
 | 
			
		||||
                                . '/' . $date->format('m') 
 | 
			
		||||
                                . '/' . Str::slug($legacyUser->name) 
 | 
			
		||||
                                . '-' . Str::slug($artwork->title) 
 | 
			
		||||
                            $basename = $date->format('Y')
 | 
			
		||||
                                . '/' . $date->format('m')
 | 
			
		||||
                                . '/' . Str::slug($legacyUser->name)
 | 
			
		||||
                                . '-' . Str::slug($artwork->title)
 | 
			
		||||
                                . '_' . $artwork->id . '.jpg';
 | 
			
		||||
                            if (Storage::disk('static')->exists('artworks/' . $basename)) {
 | 
			
		||||
                                $artworkModel = Artwork::where('filename', $basename)->first();
 | 
			
		||||
@ -66,12 +66,12 @@ class SeedFromOldApiSeeder extends Seeder
 | 
			
		||||
                                    StashAndOptimizeLegacyArtworkJob::dispatch($legacyUser, $artwork);
 | 
			
		||||
                                }
 | 
			
		||||
                            }
 | 
			
		||||
                            
 | 
			
		||||
 | 
			
		||||
                        }
 | 
			
		||||
                    } else {
 | 
			
		||||
                        $this->command->line('Locally stored all of ' . $legacyUser->name . '\'s artworks.');
 | 
			
		||||
                    }
 | 
			
		||||
                }                
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
            $current_page++;
 | 
			
		||||
            $response = $this->getResponseFromApi($current_page);
 | 
			
		||||
@ -83,7 +83,7 @@ class SeedFromOldApiSeeder extends Seeder
 | 
			
		||||
 | 
			
		||||
    private function getResponseFromApi($current_page) {
 | 
			
		||||
        $response = Http::timeout(180)
 | 
			
		||||
            ->get('https://noagendaartgenerator.com/artistapi', 
 | 
			
		||||
            ->get('https://noagendaartgenerator.com/artistapi',
 | 
			
		||||
                [
 | 
			
		||||
                    'p' => '7476',
 | 
			
		||||
                    '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 */
 | 
			
		||||
/* 
 | 
			
		||||
/*
 | 
			
		||||
Created on   : 04/03/2022.
 | 
			
		||||
Theme Name   : Banu NFT Marketplace HTML Template
 | 
			
		||||
Version      : 1.0.
 | 
			
		||||
Developed by : (ib-themes21@gmail.com) / (https://themeforest.net/user/ib-themes)
 | 
			
		||||
Primary use:  ib-themes 
 | 
			
		||||
Primary use:  ib-themes
 | 
			
		||||
*/
 | 
			
		||||
/**
 | 
			
		||||
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/**'
 | 
			
		||||
]);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
import Alpine from 'alpinejs';
 | 
			
		||||
import { Livewire, Alpine } from '../../vendor/livewire/livewire/dist/livewire.esm';
 | 
			
		||||
//import Alpine from 'alpinejs';
 | 
			
		||||
 | 
			
		||||
window.Alpine = Alpine;
 | 
			
		||||
 | 
			
		||||
Alpine.start();
 | 
			
		||||
Livewire.start();
 | 
			
		||||
 | 
			
		||||
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 */
 | 
			
		||||
 | 
			
		||||
/* 
 | 
			
		||||
/*
 | 
			
		||||
Created on   : 04/03/2022.
 | 
			
		||||
Theme Name   : Banu NFT Marketplace HTML Template
 | 
			
		||||
Version      : 1.0.
 | 
			
		||||
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)
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
@ -73,3 +73,4 @@ Modified by  : Paul Couture (bonked@noagendaartgenerator.com)
 | 
			
		||||
@import "components/nft-gallery";
 | 
			
		||||
@import "./../css/vendor/nice-select.css";
 | 
			
		||||
@import "components/light-version";
 | 
			
		||||
@import "components/pagination";
 | 
			
		||||
 | 
			
		||||
@ -4,6 +4,11 @@
 | 
			
		||||
    padding: 15px;
 | 
			
		||||
    border-radius: 10px;
 | 
			
		||||
    transition: 0.3s;
 | 
			
		||||
    border: 1px solid $bg-color-1;
 | 
			
		||||
    &.selected {
 | 
			
		||||
        background: $bg-color-selected;
 | 
			
		||||
        border-color: $selected-border;
 | 
			
		||||
    }
 | 
			
		||||
    .thumb {
 | 
			
		||||
        position: relative;
 | 
			
		||||
        overflow: hidden;
 | 
			
		||||
@ -104,12 +109,16 @@
 | 
			
		||||
    }
 | 
			
		||||
    transition: 0.3s;
 | 
			
		||||
    &:hover {
 | 
			
		||||
        border: 1px solid $color-error;
 | 
			
		||||
        .thumb {
 | 
			
		||||
            img {
 | 
			
		||||
                transform: scale(1.21);
 | 
			
		||||
                transform: scale(1.1);
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
    &.selected:hover {
 | 
			
		||||
        border-color: lighten($selected-border, 10%);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.reaction-btn {
 | 
			
		||||
 | 
			
		||||
@ -35,7 +35,7 @@
 | 
			
		||||
    font-weight: 400;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.upload-area .brows-file-wrapper {
 | 
			
		||||
.upload-area .browse-file-wrapper {
 | 
			
		||||
    position: relative;
 | 
			
		||||
    background: #1a1a1a;
 | 
			
		||||
    border-radius: 10px;
 | 
			
		||||
@ -44,7 +44,7 @@
 | 
			
		||||
        background: #000;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
.upload-area .brows-file-wrapper input {
 | 
			
		||||
.upload-area .browse-file-wrapper input {
 | 
			
		||||
    position: absolute;
 | 
			
		||||
    height: 100%;
 | 
			
		||||
    width: 100%;
 | 
			
		||||
 | 
			
		||||
@ -255,6 +255,15 @@ body {
 | 
			
		||||
                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,
 | 
			
		||||
        .signin-form,
 | 
			
		||||
        .signup-wrapper.header-free-signin .signin-form-2 {
 | 
			
		||||
@ -413,7 +422,7 @@ body {
 | 
			
		||||
        .popular-collection-style-two,
 | 
			
		||||
        .wallet-block,
 | 
			
		||||
        .form-field-wrapper,
 | 
			
		||||
        .upload-area .brows-file-wrapper,
 | 
			
		||||
        .upload-area .browse-file-wrapper,
 | 
			
		||||
        .signup-content,
 | 
			
		||||
        .contact-inner-contnet {
 | 
			
		||||
            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;
 | 
			
		||||
        line-height: 27px;
 | 
			
		||||
    }
 | 
			
		||||
    h4 {
 | 
			
		||||
        font-size: 80%;
 | 
			
		||||
    }
 | 
			
		||||
    &:hover {
 | 
			
		||||
        .thumb {
 | 
			
		||||
            transform: scale(1.1);
 | 
			
		||||
@ -82,6 +85,7 @@
 | 
			
		||||
    border-radius: 10px;
 | 
			
		||||
    padding: 28px 26px 28px 30px;
 | 
			
		||||
    transition: 0.3s;
 | 
			
		||||
    font-size:85%;
 | 
			
		||||
    @include xs-device {
 | 
			
		||||
        padding: 15px;
 | 
			
		||||
    }
 | 
			
		||||
@ -136,6 +140,10 @@
 | 
			
		||||
                font-size: 14px;
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        sup {
 | 
			
		||||
            font-weight: normal;
 | 
			
		||||
            font-size:50%;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
    .price {
 | 
			
		||||
        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 {
 | 
			
		||||
    background: $bg-color-1;
 | 
			
		||||
    padding: 40px;
 | 
			
		||||
@ -21,3 +28,8 @@
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
.theme-light {
 | 
			
		||||
    .wallet-setup {
 | 
			
		||||
        background-image: url(../img/headerbg.jpg);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -57,6 +57,17 @@
 | 
			
		||||
        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 {
 | 
			
		||||
    border: 2px solid rgba(255, 255, 255, 0.7);
 | 
			
		||||
 | 
			
		||||
@ -2,7 +2,7 @@
 | 
			
		||||
    background: #202027;
 | 
			
		||||
}
 | 
			
		||||
.section-bg-separation-2 {
 | 
			
		||||
    background: #000;
 | 
			
		||||
    background: darken($bg-color-1, 10%);
 | 
			
		||||
}
 | 
			
		||||
.d-flex-center {
 | 
			
		||||
    display: flex;
 | 
			
		||||
 | 
			
		||||
@ -14,6 +14,12 @@
 | 
			
		||||
    z-index: 999999;
 | 
			
		||||
    background: $bg-color-1;
 | 
			
		||||
}
 | 
			
		||||
body.theme-light {
 | 
			
		||||
    #ctn-preloader,
 | 
			
		||||
    .ctn-preloader {
 | 
			
		||||
        background-color: $body-bg-light2;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.ctn-preloader .animation-preloader {
 | 
			
		||||
    position: absolute;
 | 
			
		||||
@ -50,9 +56,9 @@
 | 
			
		||||
    height: 9px;
 | 
			
		||||
    top: 12px;
 | 
			
		||||
    left: 0;
 | 
			
		||||
    box-shadow: 0 0 10px #dd2476;
 | 
			
		||||
    box-shadow: 0 0 10px $color-primary-2;
 | 
			
		||||
    border-radius: 50%;
 | 
			
		||||
    background: -webkit-linear-gradient(#ff512f, #dd2476);
 | 
			
		||||
    background: -webkit-linear-gradient($color-primary, $color-primary-2);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@keyframes spinner {
 | 
			
		||||
 | 
			
		||||
@ -139,3 +139,6 @@ ol {
 | 
			
		||||
        line-height: 24px;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
.text-justify {
 | 
			
		||||
    text-align: justify;
 | 
			
		||||
}
 | 
			
		||||
@ -14,6 +14,11 @@ $body-light: #393939;
 | 
			
		||||
$body-bg-light: #f9f9fc;
 | 
			
		||||
$body-bg-light2: #efefef;
 | 
			
		||||
$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-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-start 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>
 | 
			
		||||
    </h1>
 | 
			
		||||
    <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>
 | 
			
		||||
    <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>
 | 
			
		||||
        </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>
 | 
			
		||||
        </a>
 | 
			
		||||
        @endif
 | 
			
		||||
    </div>
 | 
			
		||||
    <div class="counter-wrapper counter-wrapper-style-two">
 | 
			
		||||
        @foreach ($headerCounters as $headerCounterLabel => $headerCounterCount)
 | 
			
		||||
            @include('home.hero.counter')
 | 
			
		||||
        @endforeach
 | 
			
		||||
    </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>
 | 
			
		||||
                <strong><a href="#">{{ $recentEpisode->podcast->name }}</a></strong>
 | 
			
		||||
                <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 class="product-owner py-1 d-flex-between">
 | 
			
		||||
        <span class="bid-owner">Artwork By<br><strong><a
 | 
			
		||||
            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"
 | 
			
		||||
            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') }}"
 | 
			
		||||
             alt="{{ $recentEpisode->artwork->artist->name }}"></a></span>
 | 
			
		||||
            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>
 | 
			
		||||
        </div>
 | 
			
		||||
        <!-- End .product-owner -->
 | 
			
		||||
    </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')
 | 
			
		||||
@section('page-top')
 | 
			
		||||
    @include('home.hero.hero')
 | 
			
		||||
@endsection
 | 
			
		||||
 | 
			
		||||
@section('hero')
 | 
			
		||||
<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>
 | 
			
		||||
@endsection
 | 
			
		||||
@section('page-content')
 | 
			
		||||
    @include('home.recents.section')
 | 
			
		||||
    @include('home.explainer.explainer')
 | 
			
		||||
    @include('home.leaderboard.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">
 | 
			
		||||
    <!-- Primary Navigation Menu -->
 | 
			
		||||
    {{-- Primary Navigation Menu --}}
 | 
			
		||||
    <div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
 | 
			
		||||
        <div class="flex justify-between h-16">
 | 
			
		||||
            <div class="flex">
 | 
			
		||||
                <!-- Logo -->
 | 
			
		||||
                {{-- Logo --}}
 | 
			
		||||
                <div class="shrink-0 flex items-center">
 | 
			
		||||
                    <a href="{{ route('dashboard') }}">
 | 
			
		||||
                        <x-application-logo class="block h-9 w-auto fill-current text-gray-800 dark:text-gray-200" />
 | 
			
		||||
                    </a>
 | 
			
		||||
                </div>
 | 
			
		||||
 | 
			
		||||
                <!-- Navigation Links -->
 | 
			
		||||
                {{-- Navigation Links --}}
 | 
			
		||||
                <div class="hidden space-x-8 sm:-my-px sm:ml-10 sm:flex">
 | 
			
		||||
                    <x-nav-link :href="route('dashboard')" :active="request()->routeIs('dashboard')">
 | 
			
		||||
                        {{ __('Dashboard') }}
 | 
			
		||||
@ -18,7 +18,7 @@
 | 
			
		||||
                </div>
 | 
			
		||||
            </div>
 | 
			
		||||
 | 
			
		||||
            <!-- Settings Dropdown -->
 | 
			
		||||
            {{-- Settings Dropdown --}}
 | 
			
		||||
            <div class="hidden sm:flex sm:items-center sm:ml-6">
 | 
			
		||||
                <x-dropdown align="right" width="48">
 | 
			
		||||
                    <x-slot name="trigger">
 | 
			
		||||
@ -38,7 +38,7 @@
 | 
			
		||||
                            {{ __('Profile') }}
 | 
			
		||||
                        </x-dropdown-link>
 | 
			
		||||
 | 
			
		||||
                        <!-- Authentication -->
 | 
			
		||||
                        {{-- Authentication --}}
 | 
			
		||||
                        <form method="POST" action="{{ route('logout') }}">
 | 
			
		||||
                            @csrf
 | 
			
		||||
 | 
			
		||||
@ -52,7 +52,7 @@
 | 
			
		||||
                </x-dropdown>
 | 
			
		||||
            </div>
 | 
			
		||||
 | 
			
		||||
            <!-- Hamburger -->
 | 
			
		||||
            {{-- Hamburger --}}
 | 
			
		||||
            <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">
 | 
			
		||||
                    <svg class="h-6 w-6" stroke="currentColor" fill="none" viewBox="0 0 24 24">
 | 
			
		||||
@ -64,7 +64,7 @@
 | 
			
		||||
        </div>
 | 
			
		||||
    </div>
 | 
			
		||||
 | 
			
		||||
    <!-- Responsive Navigation Menu -->
 | 
			
		||||
    {{-- Responsive Navigation Menu --}}
 | 
			
		||||
    <div :class="{'block': open, 'hidden': ! open}" class="hidden sm:hidden">
 | 
			
		||||
        <div class="pt-2 pb-3 space-y-1">
 | 
			
		||||
            <x-responsive-nav-link :href="route('dashboard')" :active="request()->routeIs('dashboard')">
 | 
			
		||||
@ -72,7 +72,7 @@
 | 
			
		||||
            </x-responsive-nav-link>
 | 
			
		||||
        </div>
 | 
			
		||||
 | 
			
		||||
        <!-- Responsive Settings Options -->
 | 
			
		||||
        {{-- Responsive Settings Options --}}
 | 
			
		||||
        <div class="pt-4 pb-1 border-t border-gray-200 dark:border-gray-600">
 | 
			
		||||
            <div class="px-4">
 | 
			
		||||
                <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…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user