Init
This commit is contained in:
98
resources/views/modals/add-to-playlist.blade.php
Normal file
98
resources/views/modals/add-to-playlist.blade.php
Normal file
@@ -0,0 +1,98 @@
|
||||
@auth
|
||||
<!--Verically centered modal-->
|
||||
<div data-te-modal-init class="fixed left-0 top-0 z-[1055] hidden h-full w-full overflow-y-auto overflow-x-hidden outline-none" id="modalAddToPlaylist" tabindex="-1" aria-labelledby="Playlist" aria-modal="true" role="dialog">
|
||||
<div data-te-modal-dialog-ref class="pointer-events-none relative flex min-h-[calc(100%-1rem)] w-auto translate-y-[-50px] items-center opacity-0 transition-all duration-300 ease-in-out min-[576px]:mx-auto min-[576px]:mt-7 min-[576px]:min-h-[calc(100%-3.5rem)] min-[576px]:max-w-[95%] md:min-[576px]:max-w-[90%] lg:min-[576px]:max-w-[80%] xl:min-[576px]:max-w-[70%] 2xl:min-[576px]:max-w-[30%]">
|
||||
<div class="pointer-events-auto relative flex w-full flex-col rounded-md border-none bg-white bg-clip-padding text-current shadow-lg outline-none dark:bg-neutral-800">
|
||||
<x-modal-header :title="__('Add to Playlist')" />
|
||||
|
||||
<!--Modal body-->
|
||||
<div class="relative p-4">
|
||||
<!-- Add to existing playlist -->
|
||||
@php $playlists = Auth::user()->playlists; @endphp
|
||||
|
||||
@if (count($playlists) > 0)
|
||||
<div class="p-4">
|
||||
<label class="mb-2 leading-tight text-gray-800 dark:text-gray-200 w-full" for="playlist">Select Playlist:</label>
|
||||
<select name="playlist" id="playlist" class="block w-full text-sm text-gray-900 border border-gray-300 rounded-lg bg-gray-50 focus:ring-rose-800 focus:border-rose-900 dark:bg-neutral-900 dark:border-neutral-600 dark:placeholder-gray-400 dark:text-white dark:focus:ring-rose-800 dark:focus:border-rose-900">
|
||||
@foreach($playlists as $playlist)
|
||||
<option value="{{ $playlist->id }}">
|
||||
{{ $playlist->name }} -
|
||||
{{ $playlist->is_private == 1 ? 'Private' : 'Public' }} -
|
||||
{{ $playlist->episodes->count() }} Episodes
|
||||
{{ $playlist->episodes->contains('episode_id', $episode->id) ? '- Episode Already Added' : '' }}
|
||||
</option>
|
||||
@endforeach
|
||||
</select>
|
||||
<x-input-error :messages="$errors->get('playlist')" class="mt-2" />
|
||||
</div>
|
||||
|
||||
<div class="flex flex-shrink-0 flex-wrap items-center justify-end rounded-b-md p-4">
|
||||
<a id="playlist-cancel" class="inline-block cursor-pointer rounded bg-primary-100 px-6 pb-2 pt-2.5 text-xs font-medium uppercase leading-normal text-primary-700 transition duration-150 ease-in-out hover:bg-primary-accent-100 focus:bg-primary-accent-100 focus:outline-none focus:ring-0 active:bg-primary-accent-200" data-te-modal-dismiss data-te-ripple-init data-te-ripple-color="light">
|
||||
Cancel
|
||||
</a>
|
||||
<a id="playlist-add" class="ml-1 cursor-pointer inline-block rounded bg-rose-600 px-6 pb-2 pt-2.5 text-xs font-medium uppercase leading-normal text-white transition duration-150 ease-in-out hover:bg-rose-700 focus:bg-rose-600" data-te-ripple-init data-te-ripple-color="light">
|
||||
Add
|
||||
</a>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="p-4">
|
||||
<label class="mb-2 leading-tight text-gray-800 dark:text-gray-200 w-full" for="name">Enter Playlist Name Here:</label>
|
||||
<x-text-input id="name" class="block mt-1 w-full" type="text" name="name" required autofocus/>
|
||||
<x-input-error :messages="$errors->get('name')" class="mt-2" />
|
||||
</div>
|
||||
|
||||
<div class="p-4">
|
||||
<label class="mb-2 leading-tight text-gray-800 dark:text-gray-200 w-full" for="visiblity">Visiblity:</label>
|
||||
<select name="visiblity" id="visiblity" class="block w-full text-sm text-gray-900 border border-gray-300 rounded-lg bg-gray-50 focus:ring-rose-800 focus:border-rose-900 dark:bg-neutral-900 dark:border-neutral-600 dark:placeholder-gray-400 dark:text-white dark:focus:ring-rose-800 dark:focus:border-rose-900">
|
||||
<option value="public">Public</option>
|
||||
<option value="private" selected>Private</option>
|
||||
</select>
|
||||
<x-input-error :messages="$errors->get('visiblity')" class="mt-2" />
|
||||
</div>
|
||||
|
||||
<div class="flex flex-shrink-0 flex-wrap items-center justify-end rounded-b-md p-4">
|
||||
<a id="playlist-create-and-add" class="ml-1 cursor-pointer inline-block rounded bg-rose-600 px-6 pb-2 pt-2.5 text-xs font-medium uppercase leading-normal text-white transition duration-150 ease-in-out hover:bg-rose-700 focus:bg-rose-600" data-te-ripple-init data-te-ripple-color="light">
|
||||
Create and Add Episode
|
||||
</a>
|
||||
</div>
|
||||
|
||||
@else
|
||||
|
||||
<!-- Create Playlist -->
|
||||
<a class="font-semibold text-gray-800 dark:text-gray-200 leading-tight">
|
||||
No Playlists found. Please create a Playlist first!
|
||||
</a>
|
||||
|
||||
<div class="p-4">
|
||||
<label class="mb-2 leading-tight text-gray-800 dark:text-gray-200 w-full" for="name">Enter Playlist Name Here:</label>
|
||||
<x-text-input id="name" class="block mt-1 w-full" type="text" name="name" required autofocus/>
|
||||
<x-input-error :messages="$errors->get('name')" class="mt-2" />
|
||||
</div>
|
||||
|
||||
<div class="mt-5 p-4">
|
||||
<label class="mb-2 leading-tight text-gray-800 dark:text-gray-200 w-full" for="visiblity">Visiblity:</label>
|
||||
<select name="visiblity" id="visiblity" class="block w-full text-sm text-gray-900 border border-gray-300 rounded-lg bg-gray-50 focus:ring-rose-800 focus:border-rose-900 dark:bg-neutral-900 dark:border-neutral-600 dark:placeholder-gray-400 dark:text-white dark:focus:ring-rose-800 dark:focus:border-rose-900">
|
||||
<option value="public">Public</option>
|
||||
<option value="private" selected>Private</option>
|
||||
</select>
|
||||
<x-input-error :messages="$errors->get('visiblity')" class="mt-2" />
|
||||
</div>
|
||||
|
||||
<div class="flex flex-shrink-0 flex-wrap items-center justify-end rounded-b-md p-4">
|
||||
<a id="playlist-cancel" class="inline-block cursor-pointer rounded bg-primary-100 px-6 pb-2 pt-2.5 text-xs font-medium uppercase leading-normal text-primary-700 transition duration-150 ease-in-out hover:bg-primary-accent-100 focus:bg-primary-accent-100 focus:outline-none focus:ring-0 active:bg-primary-accent-200" data-te-modal-dismiss data-te-ripple-init data-te-ripple-color="light">
|
||||
Cancel
|
||||
</a>
|
||||
<a id="playlist-create-and-add" class="ml-1 cursor-pointer inline-block rounded bg-rose-600 px-6 pb-2 pt-2.5 text-xs font-medium uppercase leading-normal text-white transition duration-150 ease-in-out hover:bg-rose-700 focus:bg-rose-600" data-te-ripple-init data-te-ripple-color="light">
|
||||
Create and Add Episode
|
||||
</a>
|
||||
</div>
|
||||
|
||||
@endif
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@vite(['resources/js/modals-playlist.js'])
|
||||
@endauth
|
50
resources/views/modals/comment-edit.blade.php
Normal file
50
resources/views/modals/comment-edit.blade.php
Normal file
@@ -0,0 +1,50 @@
|
||||
<!--Verically centered modal-->
|
||||
<div
|
||||
data-te-modal-init
|
||||
class="fixed left-0 top-0 z-[1055] hidden h-full w-full overflow-y-auto overflow-x-hidden outline-none"
|
||||
id="comment-modal-{{ $comment->getKey() }}"
|
||||
tabindex="-1"
|
||||
aria-labelledby="exampleModalCenterTitle"
|
||||
aria-modal="true"
|
||||
role="dialog">
|
||||
<div data-te-modal-dialog-ref class="pointer-events-none relative flex min-h-[calc(100%-1rem)] w-auto translate-y-[-50px] items-center opacity-0 transition-all duration-300 ease-in-out min-[576px]:mx-auto min-[576px]:mt-7 min-[576px]:min-h-[calc(100%-3.5rem)] min-[576px]:max-w-[95%] md:min-[576px]:max-w-[90%] lg:min-[576px]:max-w-[80%] xl:min-[576px]:max-w-[70%] 2xl:min-[576px]:max-w-[40%]">
|
||||
<div class="pointer-events-auto relative flex w-full flex-col rounded-md border-none bg-white bg-clip-padding text-current shadow-lg outline-none dark:bg-neutral-800">
|
||||
<x-modal-header :title="__('comments::comments.edit_comment')" />
|
||||
|
||||
<!--Modal body-->
|
||||
<div class="relative p-4">
|
||||
|
||||
<form method="POST" action="{{ route('comments.update', $comment->getKey()) }}">
|
||||
@method('PUT')
|
||||
@csrf
|
||||
<div class="modal-body">
|
||||
<div class="form-group">
|
||||
<label class="mb-2 leading-tight text-gray-800 dark:text-gray-200 w-full" for="message">@lang('comments::comments.update_your_message_here')</label>
|
||||
<textarea class="peer block min-h-[auto] w-full border-1 bg-transparent px-3 py-[0.32rem] leading-[1.6] outline-none transition-all duration-200 ease-linear dark:placeholder:text-neutral-200 border-gray-300 dark:border-neutral-950 dark:bg-neutral-900 dark:text-gray-300 focus:border-rose-500 dark:focus:border-rose-600 focus:ring-rose-500 dark:focus:ring-rose-600 rounded-md shadow-sm" name="message" rows="3">{{ $comment->comment }}</textarea>
|
||||
</div>
|
||||
</div>
|
||||
<div class="flex flex-shrink-0 flex-wrap items-center justify-end rounded-b-md p-4">
|
||||
<button
|
||||
type="button"
|
||||
id="modal-blacklist-filter-close-bottom"
|
||||
class="inline-block rounded bg-primary-100 px-6 pb-2 pt-2.5 text-xs font-medium uppercase leading-normal text-primary-700 transition duration-150 ease-in-out hover:bg-primary-accent-100 focus:bg-primary-accent-100 focus:outline-none focus:ring-0 active:bg-primary-accent-200"
|
||||
data-te-modal-dismiss
|
||||
data-te-ripple-init
|
||||
data-te-ripple-color="light">
|
||||
@lang('comments::comments.cancel')
|
||||
</button>
|
||||
<button
|
||||
type="submit"
|
||||
id="modal-blacklist-filter-save"
|
||||
class="ml-1 inline-block rounded bg-rose-600 px-6 pb-2 pt-2.5 text-xs font-medium uppercase leading-normal text-white transition duration-150 ease-in-out hover:bg-rose-700 focus:bg-rose-600"
|
||||
data-te-modal-dismiss
|
||||
data-te-ripple-init
|
||||
data-te-ripple-color="light">
|
||||
@lang('comments::comments.update')
|
||||
</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
49
resources/views/modals/comment-reply.blade.php
Normal file
49
resources/views/modals/comment-reply.blade.php
Normal file
@@ -0,0 +1,49 @@
|
||||
<!--Verically centered modal-->
|
||||
<div
|
||||
data-te-modal-init
|
||||
class="fixed left-0 top-0 z-[1055] hidden h-full w-full overflow-y-auto overflow-x-hidden outline-none"
|
||||
id="reply-modal-{{ $comment->getKey() }}"
|
||||
tabindex="-1"
|
||||
aria-labelledby="exampleModalCenterTitle"
|
||||
aria-modal="true"
|
||||
role="dialog">
|
||||
<div data-te-modal-dialog-ref class="pointer-events-none relative flex min-h-[calc(100%-1rem)] w-auto translate-y-[-50px] items-center opacity-0 transition-all duration-300 ease-in-out min-[576px]:mx-auto min-[576px]:mt-7 min-[576px]:min-h-[calc(100%-3.5rem)] min-[576px]:max-w-[95%] md:min-[576px]:max-w-[90%] lg:min-[576px]:max-w-[80%] xl:min-[576px]:max-w-[70%] 2xl:min-[576px]:max-w-[40%]">
|
||||
<div class="pointer-events-auto relative flex w-full flex-col rounded-md border-none bg-white bg-clip-padding text-current shadow-lg outline-none dark:bg-neutral-800">
|
||||
<x-modal-header :title="__('comments::comments.reply_to_comment')" />
|
||||
|
||||
<!--Modal body-->
|
||||
<div class="relative p-4">
|
||||
|
||||
<form method="POST" action="{{ route('comments.reply', $comment->getKey()) }}">
|
||||
@csrf
|
||||
<div class="modal-body">
|
||||
<div class="form-group">
|
||||
<label class="mb-2 leading-tight text-gray-800 dark:text-gray-200 w-full" for="message">@lang('comments::comments.enter_your_message_here')</label>
|
||||
<textarea required class="peer block min-h-[auto] w-full border-1 bg-transparent px-3 py-[0.32rem] leading-[1.6] outline-none transition-all duration-200 ease-linear dark:placeholder:text-neutral-200 border-gray-300 dark:border-neutral-950 dark:bg-neutral-900 dark:text-gray-300 focus:border-rose-500 dark:focus:border-rose-600 focus:ring-rose-500 dark:focus:ring-rose-600 rounded-md shadow-sm" name="message" rows="3"></textarea>
|
||||
</div>
|
||||
</div>
|
||||
<div class="flex flex-shrink-0 flex-wrap items-center justify-end rounded-b-md p-4">
|
||||
<button
|
||||
type="button"
|
||||
id="modal-blacklist-filter-close-bottom"
|
||||
class="inline-block rounded bg-primary-100 px-6 pb-2 pt-2.5 text-xs font-medium uppercase leading-normal text-primary-700 transition duration-150 ease-in-out hover:bg-primary-accent-100 focus:bg-primary-accent-100 focus:outline-none focus:ring-0 active:bg-primary-accent-200"
|
||||
data-te-modal-dismiss
|
||||
data-te-ripple-init
|
||||
data-te-ripple-color="light">
|
||||
@lang('comments::comments.cancel')
|
||||
</button>
|
||||
<button
|
||||
type="submit"
|
||||
id="modal-blacklist-filter-save"
|
||||
class="ml-1 inline-block rounded bg-rose-600 px-6 pb-2 pt-2.5 text-xs font-medium uppercase leading-normal text-white transition duration-150 ease-in-out hover:bg-rose-700 focus:bg-rose-600"
|
||||
data-te-modal-dismiss
|
||||
data-te-ripple-init
|
||||
data-te-ripple-color="light">
|
||||
@lang('comments::comments.reply')
|
||||
</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
39
resources/views/modals/create-playlist.blade.php
Normal file
39
resources/views/modals/create-playlist.blade.php
Normal file
@@ -0,0 +1,39 @@
|
||||
<!--Verically centered modal-->
|
||||
<div data-te-modal-init class="fixed left-0 top-0 z-[1055] hidden h-full w-full overflow-y-auto overflow-x-hidden outline-none" id="modalCreatePlaylist" tabindex="-1" aria-labelledby="Playlist" aria-modal="true" role="dialog">
|
||||
<div data-te-modal-dialog-ref class="pointer-events-none relative flex min-h-[calc(100%-1rem)] w-auto translate-y-[-50px] items-center opacity-0 transition-all duration-300 ease-in-out min-[576px]:mx-auto min-[576px]:mt-7 min-[576px]:min-h-[calc(100%-3.5rem)] min-[576px]:max-w-[95%] md:min-[576px]:max-w-[90%] lg:min-[576px]:max-w-[80%] xl:min-[576px]:max-w-[70%] 2xl:min-[576px]:max-w-[30%]">
|
||||
<div class="pointer-events-auto relative flex w-full flex-col rounded-md border-none bg-white bg-clip-padding text-current shadow-lg outline-none dark:bg-neutral-800">
|
||||
<x-modal-header :title="__('Create Playlist')" />
|
||||
|
||||
<!--Modal body-->
|
||||
<div class="relative p-4">
|
||||
<form method="POST" action="{{ route('profile.playlists.create') }}">
|
||||
@csrf
|
||||
|
||||
<div class="p-4">
|
||||
<label class="mb-2 leading-tight text-gray-800 dark:text-gray-200 w-full" for="name">Enter Playlist Name Here:</label>
|
||||
<x-text-input id="name" class="block mt-1 w-full" type="text" name="name" required autofocus/>
|
||||
<x-input-error :messages="$errors->get('name')" class="mt-2" />
|
||||
</div>
|
||||
|
||||
<div class="mt-5 p-4">
|
||||
<label class="mb-2 leading-tight text-gray-800 dark:text-gray-200 w-full" for="visiblity">Visiblity:</label>
|
||||
<select name="visiblity" id="visiblity" class="block w-full text-sm text-gray-900 border border-gray-300 rounded-lg bg-gray-50 focus:ring-rose-800 focus:border-rose-900 dark:bg-neutral-900 dark:border-neutral-600 dark:placeholder-gray-400 dark:text-white dark:focus:ring-rose-800 dark:focus:border-rose-900">
|
||||
<option value="public">Public</option>
|
||||
<option value="private" selected>Private</option>
|
||||
</select>
|
||||
<x-input-error :messages="$errors->get('visiblity')" class="mt-2" />
|
||||
</div>
|
||||
|
||||
<div class="flex flex-shrink-0 flex-wrap items-center justify-end rounded-b-md p-4">
|
||||
<button type="button" class="inline-block rounded bg-primary-100 px-6 pb-2 pt-2.5 text-xs font-medium uppercase leading-normal text-primary-700 transition duration-150 ease-in-out hover:bg-primary-accent-100 focus:bg-primary-accent-100 focus:outline-none focus:ring-0 active:bg-primary-accent-200" data-te-modal-dismiss data-te-ripple-init data-te-ripple-color="light">
|
||||
Cancel
|
||||
</button>
|
||||
<button type="submit" class="ml-1 inline-block rounded bg-rose-600 px-6 pb-2 pt-2.5 text-xs font-medium uppercase leading-normal text-white transition duration-150 ease-in-out hover:bg-rose-700 focus:bg-rose-600" data-te-ripple-init data-te-ripple-color="light">
|
||||
Create
|
||||
</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
19
resources/views/modals/download.blade.php
Normal file
19
resources/views/modals/download.blade.php
Normal file
@@ -0,0 +1,19 @@
|
||||
<!--Verically centered modal-->
|
||||
<div data-te-modal-init class="fixed left-0 top-0 z-[1055] hidden h-full w-full overflow-y-auto overflow-x-hidden outline-none" id="modalDownload" tabindex="-1" aria-labelledby="Download" aria-modal="true" role="dialog">
|
||||
<div data-te-modal-dialog-ref class="pointer-events-none relative flex min-h-[calc(100%-1rem)] w-auto translate-y-[-50px] items-center opacity-0 transition-all duration-300 ease-in-out min-[576px]:mx-auto min-[576px]:mt-7 min-[576px]:min-h-[calc(100%-3.5rem)] min-[576px]:max-w-[95%] md:min-[576px]:max-w-[90%] lg:min-[576px]:max-w-[80%] xl:min-[576px]:max-w-[50%] 2xl:min-[576px]:max-w-[30%]">
|
||||
<div class="pointer-events-auto relative flex w-full flex-col rounded-md border-none bg-white bg-clip-padding text-current shadow-lg outline-none dark:bg-neutral-800">
|
||||
<x-modal-header :title='__("Download {$episode->title} - {$episode->episode}")' />
|
||||
|
||||
@php
|
||||
$dldomains = config('hstream.download_domain');
|
||||
$dlDomainsBackup = config('hstream.asia_download_domain');
|
||||
@endphp
|
||||
|
||||
<!--Modal body-->
|
||||
<div class="relative p-4">
|
||||
@include('modals.partials.download-guest')
|
||||
@include('modals.partials.download-authorized')
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
165
resources/views/modals/filter-blacklist.blade.php
Normal file
165
resources/views/modals/filter-blacklist.blade.php
Normal file
@@ -0,0 +1,165 @@
|
||||
<!--Verically centered modal-->
|
||||
<div data-te-modal-init
|
||||
class="fixed left-0 top-0 z-[1055] hidden h-full w-full overflow-y-auto overflow-x-hidden outline-none"
|
||||
id="modalBlacklist" tabindex="-1" aria-labelledby="modalBlacklist" aria-modal="true" role="dialog">
|
||||
<div data-te-modal-dialog-ref
|
||||
class="pointer-events-none relative flex min-h-[calc(100%-1rem)] w-auto translate-y-[-50px] items-center opacity-0 transition-all duration-300 ease-in-out min-[576px]:mx-auto min-[576px]:mt-7 min-[576px]:min-h-[calc(100%-3.5rem)] min-[576px]:max-w-[95%] md:min-[576px]:max-w-[90%] lg:min-[576px]:max-w-[80%] xl:min-[576px]:max-w-[70%] 2xl:min-[576px]:max-w-[60%]">
|
||||
<div
|
||||
class="pointer-events-auto relative flex w-full flex-col rounded-md border-none bg-white bg-clip-padding text-current shadow-lg outline-none dark:bg-neutral-800">
|
||||
<x-modal-header :title="__('Blacklist')" />
|
||||
|
||||
<!--Modal body-->
|
||||
<div class="relative p-4">
|
||||
@php
|
||||
$taglist = \cache()->remember(
|
||||
'searchtags',
|
||||
300,
|
||||
fn() => Conner\Tagging\Model\Tag::where('count', '>', 0)->orderBy('slug', 'ASC')->get(),
|
||||
);
|
||||
$appearances = [
|
||||
'Loli',
|
||||
'Shota',
|
||||
'Milf',
|
||||
'Futanari',
|
||||
'Big Boobs',
|
||||
'Small Boobs',
|
||||
'Dark Skin',
|
||||
'Cosplay',
|
||||
'Elf',
|
||||
'Maid',
|
||||
'Nekomimi',
|
||||
'Nurse',
|
||||
'School Girl',
|
||||
'Succubus',
|
||||
'Teacher',
|
||||
'Trap',
|
||||
'Pregnant',
|
||||
'Glasses',
|
||||
'Swim Suit',
|
||||
'Ugly Bastard',
|
||||
'Monster',
|
||||
];
|
||||
$types = [
|
||||
'3D',
|
||||
'4K',
|
||||
'48Fps',
|
||||
'4K 48Fps',
|
||||
'Censored',
|
||||
'Uncensored',
|
||||
'Comedy',
|
||||
'Fantasy',
|
||||
'Horror',
|
||||
'Vanilla',
|
||||
'Ntr',
|
||||
'Pov',
|
||||
'Filmed',
|
||||
'X-Ray',
|
||||
];
|
||||
$actions = [
|
||||
'Anal',
|
||||
'Bdsm',
|
||||
'Facial',
|
||||
'Blow Job',
|
||||
'Boob Job',
|
||||
'Foot Job',
|
||||
'Hand Job',
|
||||
'Rimjob',
|
||||
'Inflation',
|
||||
'Masturbation',
|
||||
'Public Sex',
|
||||
'Rape',
|
||||
'Reverse Rape',
|
||||
'Threesome',
|
||||
'Orgy',
|
||||
'Gangbang',
|
||||
];
|
||||
@endphp
|
||||
|
||||
<ul class="list-none text-justify" style="overflow: hidden;">
|
||||
@foreach ($taglist as $tag)
|
||||
@if (in_array($tag->name, $types) || in_array($tag->name, $appearances) || in_array($tag->name, $actions))
|
||||
@continue
|
||||
@endif
|
||||
<li class="inline-block m-1">
|
||||
<input class="m-5 hidden peer" wire:model="blacklist" type="checkbox"
|
||||
id="blacklist-{{ $tag->slug }}" name="blacklist[]" value="{{ $tag->slug }}">
|
||||
<label
|
||||
class="relative block cursor-pointer p-2 rounded bg-neutral-200 dark:bg-neutral-600 peer-checked:bg-rose-600 text-black peer-checked:text-white dark:peer-checked:text-white dark:text-white select-none"
|
||||
for="blacklist-{{ $tag->slug }}">{{ $tag->name }}</label>
|
||||
</li>
|
||||
@endforeach
|
||||
</ul>
|
||||
|
||||
<br>
|
||||
<!-- Actions -->
|
||||
<p class="font-medium leading-normal text-neutral-800 dark:text-white">
|
||||
Action
|
||||
</p>
|
||||
<ul class="list-none text-justify" style="overflow: hidden;">
|
||||
@foreach ($actions as $tag)
|
||||
<li class="inline-block m-1">
|
||||
@php $slug = Illuminate\Support\Str::slug($tag); @endphp
|
||||
<input class="m-5 hidden peer" wire:model="blacklist" type="checkbox"
|
||||
id="blacklist-{{ $slug }}" name="blacklist[]" value="{{ $slug }}">
|
||||
<label
|
||||
class="relative block cursor-pointer p-2 rounded bg-neutral-200 dark:bg-neutral-600 peer-checked:bg-rose-600 text-black peer-checked:text-white dark:peer-checked:text-white dark:text-white select-none"
|
||||
for="blacklist-{{ $slug }}">{{ $tag }}</label>
|
||||
</li>
|
||||
@endforeach
|
||||
</ul>
|
||||
|
||||
<br>
|
||||
<!-- Character Appearance -->
|
||||
<p class="font-medium leading-normal text-neutral-800 dark:text-white">
|
||||
Appearance
|
||||
</p>
|
||||
<ul class="list-none text-justify" style="overflow: hidden;">
|
||||
@foreach ($appearances as $tag)
|
||||
@guest
|
||||
@php if ($tag === "Loli" || $tag === "Shota") continue; @endphp
|
||||
@endguest
|
||||
<li class="inline-block m-1">
|
||||
@php $slug = Illuminate\Support\Str::slug($tag); @endphp
|
||||
<input class="m-5 hidden peer" wire:model="blacklist" type="checkbox"
|
||||
id="blacklist-{{ $slug }}" name="blacklist[]" value="{{ $slug }}">
|
||||
<label
|
||||
class="relative block cursor-pointer p-2 rounded bg-neutral-200 dark:bg-neutral-600 peer-checked:bg-rose-600 text-black peer-checked:text-white dark:peer-checked:text-white dark:text-white select-none"
|
||||
for="blacklist-{{ $slug }}">{{ $tag }}</label>
|
||||
</li>
|
||||
@endforeach
|
||||
</ul>
|
||||
|
||||
<br>
|
||||
|
||||
<!-- Video Types -->
|
||||
<p class="font-medium leading-normal text-neutral-800 dark:text-white">
|
||||
Type
|
||||
</p>
|
||||
<ul class="list-none text-justify" style="overflow: hidden;">
|
||||
@foreach ($types as $tag)
|
||||
<li class="inline-block m-1">
|
||||
@php $slug = Illuminate\Support\Str::slug($tag); @endphp
|
||||
<input class="m-5 hidden peer" wire:model="blacklist" type="checkbox"
|
||||
id="blacklist-{{ $slug }}" name="blacklist[]" value="{{ $slug }}">
|
||||
<label
|
||||
class="relative block cursor-pointer p-2 rounded bg-neutral-200 dark:bg-neutral-600 peer-checked:bg-rose-600 text-black peer-checked:text-white dark:peer-checked:text-white dark:text-white select-none"
|
||||
for="blacklist-{{ $slug }}">{{ $tag }}</label>
|
||||
</li>
|
||||
@endforeach
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<!--Modal footer-->
|
||||
<div class="flex flex-shrink-0 flex-wrap items-center justify-end rounded-b-md p-4">
|
||||
<button data-te-modal-dismiss wire:click="revertFilters" type="button"
|
||||
class="inline-block rounded bg-primary-100 px-6 pb-2 pt-2.5 text-xs font-medium uppercase leading-normal text-primary-700 transition duration-150 ease-in-out hover:bg-primary-accent-100 focus:bg-primary-accent-100 focus:outline-none focus:ring-0 active:bg-primary-accent-200">
|
||||
Close
|
||||
</button>
|
||||
<button data-te-modal-dismiss wire:click="applyFilters" type="button"
|
||||
class="ml-1 inline-block rounded bg-rose-600 px-6 pb-2 pt-2.5 text-xs font-medium uppercase leading-normal text-white transition duration-150 ease-in-out hover:bg-rose-700 focus:bg-rose-600">
|
||||
Apply
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
166
resources/views/modals/filter-genres.blade.php
Normal file
166
resources/views/modals/filter-genres.blade.php
Normal file
@@ -0,0 +1,166 @@
|
||||
<!--Verically centered modal-->
|
||||
<div data-te-modal-init
|
||||
class="fixed left-0 top-0 z-[1055] hidden h-full w-full overflow-y-auto overflow-x-hidden outline-none"
|
||||
id="modalGenres" tabindex="-1" aria-labelledby="modalGenres" aria-modal="true" role="dialog">
|
||||
<div data-te-modal-dialog-ref
|
||||
class="pointer-events-none relative flex min-h-[calc(100%-1rem)] w-auto translate-y-[-50px] items-center opacity-0 transition-all duration-300 ease-in-out min-[576px]:mx-auto min-[576px]:mt-7 min-[576px]:min-h-[calc(100%-3.5rem)] min-[576px]:max-w-[95%] md:min-[576px]:max-w-[90%] lg:min-[576px]:max-w-[80%] xl:min-[576px]:max-w-[70%] 2xl:min-[576px]:max-w-[60%]">
|
||||
<div
|
||||
class="pointer-events-auto relative flex w-full flex-col rounded-md border-none bg-white bg-clip-padding text-current shadow-lg outline-none dark:bg-neutral-800">
|
||||
<x-modal-header :title="__('Genres')" />
|
||||
<form>
|
||||
<!--Modal body-->
|
||||
<div class="relative p-4">
|
||||
@php
|
||||
$taglist = cache()->remember(
|
||||
'searchtags',
|
||||
300,
|
||||
fn() => Conner\Tagging\Model\Tag::where('count', '>', 0)->orderBy('slug', 'ASC')->get(),
|
||||
);
|
||||
$appearances = [
|
||||
'Loli',
|
||||
'Shota',
|
||||
'Milf',
|
||||
'Futanari',
|
||||
'Big Boobs',
|
||||
'Small Boobs',
|
||||
'Dark Skin',
|
||||
'Cosplay',
|
||||
'Elf',
|
||||
'Maid',
|
||||
'Nekomimi',
|
||||
'Nurse',
|
||||
'School Girl',
|
||||
'Succubus',
|
||||
'Teacher',
|
||||
'Trap',
|
||||
'Pregnant',
|
||||
'Glasses',
|
||||
'Swim Suit',
|
||||
'Ugly Bastard',
|
||||
'Monster',
|
||||
];
|
||||
$types = [
|
||||
'3D',
|
||||
'4K',
|
||||
'48Fps',
|
||||
'4K 48Fps',
|
||||
'Censored',
|
||||
'Uncensored',
|
||||
'Comedy',
|
||||
'Fantasy',
|
||||
'Horror',
|
||||
'Vanilla',
|
||||
'Ntr',
|
||||
'Pov',
|
||||
'Filmed',
|
||||
'X-Ray',
|
||||
];
|
||||
$actions = [
|
||||
'Anal',
|
||||
'Bdsm',
|
||||
'Facial',
|
||||
'Blow Job',
|
||||
'Boob Job',
|
||||
'Foot Job',
|
||||
'Hand Job',
|
||||
'Rimjob',
|
||||
'Inflation',
|
||||
'Masturbation',
|
||||
'Public Sex',
|
||||
'Rape',
|
||||
'Reverse Rape',
|
||||
'Threesome',
|
||||
'Orgy',
|
||||
'Gangbang',
|
||||
];
|
||||
@endphp
|
||||
|
||||
<ul class="list-none text-justify" style="overflow: hidden;">
|
||||
@foreach ($taglist as $tag)
|
||||
@if (in_array($tag->name, $types) || in_array($tag->name, $appearances) || in_array($tag->name, $actions))
|
||||
@continue
|
||||
@endif
|
||||
<li class="inline-block m-1">
|
||||
<input class="m-5 hidden peer" wire:model="tags" type="checkbox"
|
||||
id="tags-{{ $tag->slug }}" name="tags[]" value="{{ $tag->slug }}">
|
||||
<label
|
||||
class="relative block cursor-pointer p-2 rounded bg-neutral-200 dark:bg-neutral-600 peer-checked:bg-rose-600 text-black peer-checked:text-white dark:peer-checked:text-white dark:text-white select-none"
|
||||
for="tags-{{ $tag->slug }}">{{ $tag->name }}</label>
|
||||
</li>
|
||||
@endforeach
|
||||
</ul>
|
||||
|
||||
<br>
|
||||
<!-- Actions -->
|
||||
<p class="font-medium leading-normal text-neutral-800 dark:text-white">
|
||||
Action
|
||||
</p>
|
||||
<ul class="list-none text-justify" style="overflow: hidden;">
|
||||
@foreach ($actions as $tag)
|
||||
<li class="inline-block m-1">
|
||||
@php $slug = Illuminate\Support\Str::slug($tag); @endphp
|
||||
<input class="m-5 hidden peer" wire:model="tags" type="checkbox"
|
||||
id="tags-{{ $slug }}" name="tags[]" value="{{ $slug }}">
|
||||
<label
|
||||
class="relative block cursor-pointer p-2 rounded bg-neutral-200 dark:bg-neutral-600 peer-checked:bg-rose-600 text-black peer-checked:text-white dark:peer-checked:text-white dark:text-white select-none"
|
||||
for="tags-{{ $slug }}">{{ $tag }}</label>
|
||||
</li>
|
||||
@endforeach
|
||||
</ul>
|
||||
|
||||
<br>
|
||||
<!-- Character Appearance -->
|
||||
<p class="font-medium leading-normal text-neutral-800 dark:text-white">
|
||||
Appearance
|
||||
</p>
|
||||
<ul class="list-none text-justify" style="overflow: hidden;">
|
||||
@foreach ($appearances as $tag)
|
||||
@guest
|
||||
@php if ($tag === "Loli" || $tag === "Shota") continue; @endphp
|
||||
@endguest
|
||||
<li class="inline-block m-1">
|
||||
@php $slug = Illuminate\Support\Str::slug($tag); @endphp
|
||||
<input class="m-5 hidden peer" wire:model="tags" type="checkbox"
|
||||
id="tags-{{ $slug }}" name="tags[]" value="{{ $slug }}">
|
||||
<label
|
||||
class="relative block cursor-pointer p-2 rounded bg-neutral-200 dark:bg-neutral-600 peer-checked:bg-rose-600 text-black peer-checked:text-white dark:peer-checked:text-white dark:text-white select-none"
|
||||
for="tags-{{ $slug }}">{{ $tag }}</label>
|
||||
</li>
|
||||
@endforeach
|
||||
</ul>
|
||||
|
||||
<br>
|
||||
|
||||
<!-- Video Types -->
|
||||
<p class="font-medium leading-normal text-neutral-800 dark:text-white">
|
||||
Type
|
||||
</p>
|
||||
<ul class="list-none text-justify" style="overflow: hidden;">
|
||||
@foreach ($types as $tag)
|
||||
<li class="inline-block m-1">
|
||||
@php $slug = Illuminate\Support\Str::slug($tag); @endphp
|
||||
<input class="m-5 hidden peer" wire:model="tags" type="checkbox"
|
||||
id="tags-{{ $slug }}" name="tags[]" value="{{ $slug }}">
|
||||
<label
|
||||
class="relative block cursor-pointer p-2 rounded bg-neutral-200 dark:bg-neutral-600 peer-checked:bg-rose-600 text-black peer-checked:text-white dark:peer-checked:text-white dark:text-white select-none"
|
||||
for="tags-{{ $slug }}">{{ $tag }}</label>
|
||||
</li>
|
||||
@endforeach
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<!--Modal footer-->
|
||||
<div class="flex flex-shrink-0 flex-wrap items-center justify-end rounded-b-md p-4">
|
||||
<button data-te-modal-dismiss wire:click="revertFilters" type="button"
|
||||
class="inline-block rounded bg-primary-100 px-6 pb-2 pt-2.5 text-xs font-medium uppercase leading-normal text-primary-700 transition duration-150 ease-in-out hover:bg-primary-accent-100 focus:bg-primary-accent-100 focus:outline-none focus:ring-0 active:bg-primary-accent-200">
|
||||
Close
|
||||
</button>
|
||||
<button data-te-modal-dismiss wire:click="applyFilters" type="button"
|
||||
class="ml-1 inline-block rounded bg-rose-600 px-6 pb-2 pt-2.5 text-xs font-medium uppercase leading-normal text-white transition duration-150 ease-in-out hover:bg-rose-700 focus:bg-rose-600">
|
||||
Apply
|
||||
</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
40
resources/views/modals/filter-studios.blade.php
Normal file
40
resources/views/modals/filter-studios.blade.php
Normal file
@@ -0,0 +1,40 @@
|
||||
<!--Verically centered modal-->
|
||||
<div data-te-modal-init
|
||||
class="fixed left-0 top-0 z-[1055] hidden h-full w-full overflow-y-auto overflow-x-hidden outline-none"
|
||||
id="modalStudios" tabindex="-1" aria-labelledby="modalStudios" aria-modal="true" role="dialog">
|
||||
<div data-te-modal-dialog-ref
|
||||
class="pointer-events-none relative flex min-h-[calc(100%-1rem)] w-auto translate-y-[-50px] items-center opacity-0 transition-all duration-300 ease-in-out min-[576px]:mx-auto min-[576px]:mt-7 min-[576px]:min-h-[calc(100%-3.5rem)] min-[576px]:max-w-[95%] md:min-[576px]:max-w-[90%] lg:min-[576px]:max-w-[80%] xl:min-[576px]:max-w-[70%] 2xl:min-[576px]:max-w-[60%]">
|
||||
<div
|
||||
class="pointer-events-auto relative flex w-full flex-col rounded-md border-none bg-white bg-clip-padding text-current shadow-lg outline-none dark:bg-neutral-800">
|
||||
<x-modal-header :title="__('Studios')" />
|
||||
|
||||
<!--Modal body-->
|
||||
<div class="relative p-4">
|
||||
<ul class="list-none text-justify" style="overflow: hidden;">
|
||||
@php $studios = \cache()->remember('searchstudios', 300, fn () => App\Models\Studios::orderBy('name', 'ASC')->get()); @endphp
|
||||
@foreach ($studios as $studio)
|
||||
<li class="inline-block m-1">
|
||||
<input class="m-5 hidden peer" wire:model="studios" type="checkbox"
|
||||
id="studio-{{ $studio->slug }}" name="studios[]" value="{{ $studio->slug }}">
|
||||
<label
|
||||
class="relative block cursor-pointer p-2 rounded bg-neutral-200 dark:bg-neutral-600 peer-checked:bg-rose-600 text-black peer-checked:text-white dark:peer-checked:text-white dark:text-white select-none"
|
||||
for="studio-{{ $studio->slug }}">{{ $studio->name }}</label>
|
||||
</li>
|
||||
@endforeach
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<!--Modal footer-->
|
||||
<div class="flex flex-shrink-0 flex-wrap items-center justify-end rounded-b-md p-4">
|
||||
<button data-te-modal-dismiss wire:click="revertFilters" type="button"
|
||||
class="inline-block rounded bg-primary-100 px-6 pb-2 pt-2.5 text-xs font-medium uppercase leading-normal text-primary-700 transition duration-150 ease-in-out hover:bg-primary-accent-100 focus:bg-primary-accent-100 focus:outline-none focus:ring-0 active:bg-primary-accent-200">
|
||||
Close
|
||||
</button>
|
||||
<button data-te-modal-dismiss wire:click="applyFilters" type="button"
|
||||
class="ml-1 inline-block rounded bg-rose-600 px-6 pb-2 pt-2.5 text-xs font-medium uppercase leading-normal text-white transition duration-150 ease-in-out hover:bg-rose-700 focus:bg-rose-600">
|
||||
Apply
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
47
resources/views/modals/language-selector.blade.php
Normal file
47
resources/views/modals/language-selector.blade.php
Normal file
@@ -0,0 +1,47 @@
|
||||
<!--Verically centered modal-->
|
||||
<div data-te-modal-init
|
||||
class="fixed left-0 top-0 z-[1055] hidden h-full w-full overflow-y-auto overflow-x-hidden outline-none"
|
||||
id="modalLanguage" tabindex="-1" aria-modal="true" role="dialog">
|
||||
<div data-te-modal-dialog-ref
|
||||
class="pointer-events-none relative flex min-h-[calc(100%-1rem)] w-auto translate-y-[-50px] items-center opacity-0 transition-all duration-300 ease-in-out min-[576px]:mx-auto min-[576px]:mt-7 min-[576px]:min-h-[calc(100%-3.5rem)] min-[576px]:max-w-[90%] md:min-[576px]:max-w-[80%] lg:min-[576px]:max-w-[60%] xl:min-[576px]:max-w-[40%] 2xl:min-[576px]:max-w-[20%]">
|
||||
<div
|
||||
class="pointer-events-auto relative flex w-full flex-col rounded-md border-none bg-white bg-clip-padding text-current shadow-lg outline-none dark:bg-neutral-800">
|
||||
<x-modal-header :title="__('Language')" />
|
||||
|
||||
<!--Modal body-->
|
||||
<div class="relative p-4">
|
||||
<form method="POST" action="{{ route('update.language') }}">
|
||||
@csrf
|
||||
|
||||
<label class="mb-2 leading-tight text-gray-800 dark:text-gray-200 w-full" for="language">Select
|
||||
Language:</label>
|
||||
<select name="language" id="language"
|
||||
class="block w-full text-sm text-gray-900 border border-gray-300 rounded-lg bg-gray-50 focus:ring-rose-800 focus:border-rose-900 dark:bg-neutral-900 dark:border-neutral-600 dark:placeholder-gray-400 dark:text-white dark:focus:ring-rose-800 dark:focus:border-rose-900">
|
||||
<option value="en" @if ('en' == App::getLocale()) selected @endif>
|
||||
English (en)
|
||||
</option>
|
||||
<option value="de" @if ('de' == App::getLocale()) selected @endif>
|
||||
Deutsch (de)
|
||||
</option>
|
||||
<option value="fr" @if ('fr' == App::getLocale()) selected @endif>
|
||||
Français (fr)
|
||||
</option>
|
||||
</select>
|
||||
|
||||
<div class="flex flex-shrink-0 flex-wrap items-center justify-end rounded-b-md p-4">
|
||||
<button type="button"
|
||||
class="inline-block rounded bg-primary-100 px-6 pb-2 pt-2.5 text-xs font-medium uppercase leading-normal text-primary-700 transition duration-150 ease-in-out hover:bg-primary-accent-100 focus:bg-primary-accent-100 focus:outline-none focus:ring-0 active:bg-primary-accent-200"
|
||||
data-te-modal-dismiss data-te-ripple-init data-te-ripple-color="light">
|
||||
Cancel
|
||||
</button>
|
||||
<button type="submit"
|
||||
class="ml-1 inline-block rounded bg-rose-600 px-6 pb-2 pt-2.5 text-xs font-medium uppercase leading-normal text-white transition duration-150 ease-in-out hover:bg-rose-700 focus:bg-rose-600"
|
||||
data-te-ripple-init data-te-ripple-color="light">
|
||||
Apply
|
||||
</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
@@ -0,0 +1,98 @@
|
||||
@auth
|
||||
<p class="font-bold text-gray-800 dark:text-gray-200">
|
||||
<i class="fa-solid fa-lock-open pr-[4px] text-green-400"></i> 1080p
|
||||
</p>
|
||||
<div class="flex flex-wrap justify-around">
|
||||
@php
|
||||
$dlList = App\Models\Episode::where('hentai_id', $episode->hentai_id)
|
||||
->orderBy('episode', 'asc')
|
||||
->get();
|
||||
$fillNumbers = $dlList->count() >= 10;
|
||||
@endphp
|
||||
|
||||
@foreach ($dlList as $hdl)
|
||||
@include('modals.partials.download-button')
|
||||
@endforeach
|
||||
|
||||
@include('livewire.partials.torrent-button', ['hentai' => $episode->hentai])
|
||||
</div>
|
||||
|
||||
@include('modals.partials.download-backup')
|
||||
|
||||
@if ($episode->interpolated)
|
||||
<p class="font-bold text-gray-800 dark:text-gray-200">
|
||||
<i class="fa-solid fa-lock-open pr-[4px] text-green-400"></i> 1080p 48fps
|
||||
</p>
|
||||
|
||||
<div class="flex flex-wrap justify-around">
|
||||
@foreach ($dlList as $hdl)
|
||||
@include('modals.partials.download-button-interpolated')
|
||||
@endforeach
|
||||
</div>
|
||||
@endif
|
||||
|
||||
|
||||
<br>
|
||||
@if (!Auth::user()->is_patreon)
|
||||
@if (config('hstream.free_downloads'))
|
||||
<p class="font-bold text-gray-800 dark:text-gray-200">
|
||||
<i class="fa-solid fa-lock-open pr-[4px] text-yellow-600"></i> 4k
|
||||
</p>
|
||||
@livewire('downloads-free', ['episode' => $episode])
|
||||
@else
|
||||
<p class="font-bold text-gray-800 dark:text-gray-200">
|
||||
<i class="fa-solid fa-lock pr-[4px] text-red-600"></i> 4k
|
||||
</p>
|
||||
<p class="text-gray-800 dark:text-gray-200">
|
||||
4k Downloads are restricted to patreon subscribers. If you are subscribed to patreon and you have a patreon role
|
||||
on our Discord server, you have to logout and login again.
|
||||
</p>
|
||||
@endif
|
||||
@else
|
||||
<p class="font-bold text-gray-800 dark:text-gray-200">
|
||||
<i class="fa-solid fa-lock-open pr-[4px] text-green-400"></i> 4k
|
||||
</p>
|
||||
|
||||
@php $dlpdomains = config('hstream.download_domain_4k'); @endphp
|
||||
|
||||
<div class="flex flex-wrap justify-around">
|
||||
@foreach ($dlList as $hdl)
|
||||
@include('modals.partials.download-button-patreon')
|
||||
@endforeach
|
||||
</div>
|
||||
@endif
|
||||
|
||||
<br>
|
||||
@if ($episode->interpolated_uhd)
|
||||
@if (!Auth::user()->is_patreon)
|
||||
@if (config('hstream.free_downloads'))
|
||||
<p class="font-bold text-gray-800 dark:text-gray-200">
|
||||
<i class="fa-solid fa-lock-open pr-[4px] text-yellow-600"></i> 4k 48fps
|
||||
</p>
|
||||
@livewire('downloads-free', ['episode' => $episode, 'interpolated' => true])
|
||||
@else
|
||||
<p class="font-bold text-gray-800 dark:text-gray-200">
|
||||
<i class="fa-solid fa-lock pr-[4px] text-red-600"></i> 4k 48fps
|
||||
</p>
|
||||
<p class="text-gray-800 dark:text-gray-200">
|
||||
4k 48fps Downloads are restricted to patreon subscribers. If you are subscribed to patreon and you have a patreon role
|
||||
on our Discord server, you have to logout and login again.
|
||||
</p>
|
||||
@endif
|
||||
@else
|
||||
<p class="font-bold text-gray-800 dark:text-gray-200">
|
||||
<i class="fa-solid fa-lock-open pr-[4px] text-green-400"></i> 4k 48fps
|
||||
</p>
|
||||
|
||||
@php $dlpdomains = config('hstream.download_domain_4k'); @endphp
|
||||
|
||||
<div class="flex flex-wrap justify-around">
|
||||
@foreach ($dlList as $hdl)
|
||||
@include('modals.partials.download-button-patreon-interpolated')
|
||||
@endforeach
|
||||
</div>
|
||||
@endif
|
||||
@endif
|
||||
|
||||
@include('modals.partials.download-subtitles')
|
||||
@endauth
|
28
resources/views/modals/partials/download-backup.blade.php
Normal file
28
resources/views/modals/partials/download-backup.blade.php
Normal file
@@ -0,0 +1,28 @@
|
||||
<div class="flex flex-col">
|
||||
<a data-te-collapse-init data-te-ripple-init data-te-ripple-color="light" href="#collapseBackupDownloads" role="button" aria-expanded="false" aria-controls="collapseBackupDownloads" class="text-sm text-center cursor-pointer pt-2 text-rose-600">Backup server</a>
|
||||
<div class="!visible hidden" id="collapseBackupDownloads" data-te-collapse-item>
|
||||
<div class="block rounded-lg bg-neutral-200 p-6 dark:bg-neutral-900 dark:text-neutral-50">
|
||||
<p class="text-sm text-red-600">Only use these if you live in Asia (e.g. Singapore/Philippines/...) and experience slow downloads (~10-100kbps) with the normal download links!</p>
|
||||
|
||||
<div class="flex flex-wrap justify-around">
|
||||
@foreach ($dlList as $hdl)
|
||||
@php
|
||||
$download = $hdl->getDownloadByType('FHD');
|
||||
$downloadURL = $dlDomainsBackup[array_rand($dlDomainsBackup)].'/'.$download->url;
|
||||
$background = 'bg-green-600';
|
||||
@endphp
|
||||
|
||||
<livewire:download-button
|
||||
:download-url="$downloadURL"
|
||||
:download-id="$download->id"
|
||||
:download-count="$download->count"
|
||||
:episode-number="$hdl->episode"
|
||||
:fill-numbers="$fillNumbers"
|
||||
:file-size="$download->getFileSize()"
|
||||
:background="$background">
|
||||
@endforeach
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
@@ -0,0 +1,18 @@
|
||||
@if(is_null($hdl->getDownloadByType('FHDi')))
|
||||
<a class="inline-flex items-center ml-4 px-4 p-4 mt-4 cursor-not-allowed bg-gray-600 border border-transparent rounded-md font-semibold text-xs text-white uppercase tracking-widest hover:bg-gray-700 active:bg-gray-900 focus:outline-none focus:ring-2 focus:ring-rose-500 focus:ring-offset-2 dark:focus:ring-offset-gray-800 transition ease-in-out duration-150" id="downloadEpisode" alt="Kekw">
|
||||
<i class="fa-solid fa-download mr-2"></i> Episode {{ $hdl->episode }} (Unavailable)
|
||||
</a>
|
||||
@else
|
||||
@php
|
||||
$download = $hdl->getDownloadByType('FHDi');
|
||||
$downloadURL = $dldomains[array_rand($dldomains)].'/'.$download->url;
|
||||
@endphp
|
||||
|
||||
<livewire:download-button
|
||||
:download-url="$downloadURL"
|
||||
:download-id="$download->id"
|
||||
:download-count="$download->count"
|
||||
:episode-number="$hdl->episode"
|
||||
:fill-numbers="$fillNumbers"
|
||||
:file-size="$download->getFileSize()">
|
||||
@endif
|
@@ -0,0 +1,24 @@
|
||||
@if(is_null($hdl->getDownloadByType('UHDi')))
|
||||
<a class="inline-flex items-center ml-4 px-4 p-4 mt-4 cursor-not-allowed bg-gray-600 border border-transparent rounded-md font-semibold text-xs text-white uppercase tracking-widest hover:bg-gray-700 active:bg-gray-900 focus:outline-none focus:ring-2 focus:ring-rose-500 focus:ring-offset-2 dark:focus:ring-offset-gray-800 transition ease-in-out duration-150" id="downloadEpisode" alt="Kekw">
|
||||
<i class="fa-solid fa-download mr-2"></i> Episode {{ $hdl->episode }} (Unavailable)
|
||||
</a>
|
||||
@else
|
||||
|
||||
@php
|
||||
$download = $hdl->getDownloadByType('UHDi');
|
||||
|
||||
$now = \Illuminate\Support\Carbon::now();
|
||||
$expire = \Illuminate\Support\Facades\Crypt::encryptString($now->addHours(6));
|
||||
$file = \Illuminate\Support\Facades\Crypt::encryptString('hentai/'.$download->url);
|
||||
|
||||
$downloadURL = $dlpdomains[array_rand($dlpdomains)].'/download/'.$file.'/'.$expire;
|
||||
@endphp
|
||||
|
||||
<livewire:download-button
|
||||
:download-url="$downloadURL"
|
||||
:download-id="$download->id"
|
||||
:download-count="$download->count"
|
||||
:episode-number="$hdl->episode"
|
||||
:fill-numbers="$fillNumbers"
|
||||
:file-size="$download->getFileSize()">
|
||||
@endif
|
@@ -0,0 +1,24 @@
|
||||
@if(is_null($hdl->getDownloadByType('UHD')))
|
||||
<a class="inline-flex items-center ml-4 px-4 p-4 mt-4 cursor-not-allowed bg-gray-600 border border-transparent rounded-md font-semibold text-xs text-white uppercase tracking-widest hover:bg-gray-700 active:bg-gray-900 focus:outline-none focus:ring-2 focus:ring-rose-500 focus:ring-offset-2 dark:focus:ring-offset-gray-800 transition ease-in-out duration-150" id="downloadEpisode" alt="Kekw">
|
||||
<i class="fa-solid fa-download mr-2"></i> Episode {{ $hdl->episode }} (Unavailable)
|
||||
</a>
|
||||
@else
|
||||
|
||||
@php
|
||||
$download = $hdl->getDownloadByType('UHD');
|
||||
|
||||
$now = \Illuminate\Support\Carbon::now();
|
||||
$expire = \Illuminate\Support\Facades\Crypt::encryptString($now->addHours(6));
|
||||
$file = \Illuminate\Support\Facades\Crypt::encryptString('hentai/'.$download->url);
|
||||
|
||||
$downloadURL = $dlpdomains[array_rand($dlpdomains)].'/download/'.$file.'/'.$expire;
|
||||
@endphp
|
||||
|
||||
<livewire:download-button
|
||||
:download-url="$downloadURL"
|
||||
:download-id="$download->id"
|
||||
:download-count="$download->count"
|
||||
:episode-number="$hdl->episode"
|
||||
:fill-numbers="$fillNumbers"
|
||||
:file-size="$download->getFileSize()">
|
||||
@endif
|
12
resources/views/modals/partials/download-button.blade.php
Normal file
12
resources/views/modals/partials/download-button.blade.php
Normal file
@@ -0,0 +1,12 @@
|
||||
@php
|
||||
$download = $hdl->getDownloadByType('FHD');
|
||||
$downloadURL = $dldomains[array_rand($dldomains)].'/'.$download->url;
|
||||
@endphp
|
||||
|
||||
<livewire:download-button
|
||||
:download-url="$downloadURL"
|
||||
:download-id="$download->id"
|
||||
:download-count="$download->count"
|
||||
:episode-number="$hdl->episode"
|
||||
:fill-numbers="$fillNumbers"
|
||||
:file-size="$download->getFileSize()">
|
94
resources/views/modals/partials/download-captcha.blade.php
Normal file
94
resources/views/modals/partials/download-captcha.blade.php
Normal file
@@ -0,0 +1,94 @@
|
||||
<div id="captcharequired">
|
||||
<p class="text-gray-800 dark:text-gray-200 font-bold">
|
||||
<i class="fa-solid fa-lock-open pr-[4px] text-yellow-400"></i> 1080p
|
||||
</p>
|
||||
<p class="text-gray-800 dark:text-gray-200">
|
||||
Please solve the following captcha:
|
||||
</p>
|
||||
<p id="message" class="text-red-600">
|
||||
</p>
|
||||
<div class="flex pt-2">
|
||||
<div id="captchaImg">
|
||||
{!! captcha_img() !!}
|
||||
</div>
|
||||
<button type="button" class="inline-flex items-center ml-2 px-2 py-2 bg-white dark:bg-gray-800 border border-gray-300 dark:border-gray-500 rounded-md font-semibold text-xs text-gray-700 dark:text-gray-300 uppercase tracking-widest shadow-sm hover:bg-gray-50 dark:hover:bg-gray-700 focus:outline-none focus:ring-2 focus:ring-indigo-500 focus:ring-offset-2 dark:focus:ring-offset-gray-800 disabled:opacity-25 transition ease-in-out duration-150" id="reloadcaptcha" >
|
||||
<i class="fa-solid fa-rotate-right"></i>
|
||||
</button>
|
||||
</div>
|
||||
<div class="flex pt-2 mt-1">
|
||||
<x-text-input id="captcha_text" class="block " type="text" name="captcha_text"/>
|
||||
<button type="button" class="inline-flex items-center ml-2 px-2 -pt-1 bg-rose-600 border border-transparent rounded-md font-semibold text-xs text-white uppercase tracking-widest hover:bg-rose-700 active:bg-rose-900 focus:outline-none focus:ring-2 focus:ring-rose-500 focus:ring-offset-2 dark:focus:ring-offset-gray-800 transition ease-in-out duration-150" id="submitcaptcha" >
|
||||
Submit
|
||||
</button>
|
||||
</div>
|
||||
<br>
|
||||
<p class="text-gray-800 dark:text-gray-200 text-sm">
|
||||
You can log in with Discord to avoid the captcha.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div id="captchsolved" style="display: none;">
|
||||
<p class="text-gray-800 dark:text-gray-200 font-bold">
|
||||
<i class="fa-solid fa-lock-open pr-[4px] text-green-400"></i> 1080p
|
||||
</p>
|
||||
<div id="dlbutton">
|
||||
<a href="" id="downloadEpisode">
|
||||
<button class="group rounded-md shadow bg-rose-600 text-white cursor-pointer flex justify-between items-center overflow-hidden transition-all hover:glow m-1 w-[190px] h-[65px]">
|
||||
<div class="relative w-12 h-[65px] bg-white bg-opacity-20 text-white flex justify-center items-center transition-all">
|
||||
<svg class="w-4 h-4 transition-all group-hover:-translate-y-1" fill="none" stroke="currentColor" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
|
||||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 14l-7 7m0 0l-7-7m7 7V3"></path>
|
||||
</svg>
|
||||
</div>
|
||||
<div class="flex flex-col text-center w-full">
|
||||
<p class="text-xl">Episode {{ $episode->episode }}</p>
|
||||
<p class="text-xs">HEVC MKV {{ $episode->getDownloadByType('FHD')->getFileSize() ?? '' }}</p>
|
||||
<p class="text-xs" id="downloadCount">Downloaded {{ $episode->getDownloadByType('FHD')->count }} times</p>
|
||||
</div>
|
||||
</button>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
var downloadCounter = 0;
|
||||
function reloadCaptcha() {
|
||||
window.axios.get('/reload-captcha').then(function (response) {
|
||||
if (response.status == 200) {
|
||||
document.querySelector("#captchaImg").innerHTML = response.data.captcha;
|
||||
}
|
||||
}).catch(function (error) {
|
||||
console.log(error);
|
||||
});
|
||||
}
|
||||
|
||||
function submitCaptcha() {
|
||||
document.querySelector("#message").innerHTML = '';
|
||||
window.axios.post('/get-download', {
|
||||
captcha: document.getElementById('captcha_text').value,
|
||||
episode_id: document.getElementById('e_id').value
|
||||
}).then(function (response) {
|
||||
document.querySelector("#captcharequired").style.display = "none";
|
||||
document.querySelector("#captchsolved").style.display = "block";
|
||||
document.querySelector("#downloadEpisode").href = '{{ $dldomains[array_rand($dldomains)] }}/'+ response.data.download_url;
|
||||
document.querySelector("#downloadCount").innerText = 'Downloaded ' + response.data.download_count + ' times';
|
||||
downloadCounter = response.data.download_count;
|
||||
}).catch(function (error) {
|
||||
if (error.response.data.message == 'validation.captcha') {
|
||||
document.querySelector("#message").innerHTML = 'Captcha Incorrect!';
|
||||
reloadCaptcha();
|
||||
} else {
|
||||
document.querySelector("#message").innerHTML = error.response.data.message;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function increaseDownloadCounter() {
|
||||
downloadCounter += 1;
|
||||
document.querySelector("#downloadCount").innerText = 'Downloaded ' + downloadCounter + ' times';
|
||||
}
|
||||
|
||||
document.querySelector("#downloadEpisode").addEventListener("click", increaseDownloadCounter);
|
||||
|
||||
document.querySelector("#reloadcaptcha").addEventListener("click", reloadCaptcha);
|
||||
document.querySelector("#submitcaptcha").addEventListener("click", submitCaptcha);
|
||||
</script>
|
32
resources/views/modals/partials/download-guest.blade.php
Normal file
32
resources/views/modals/partials/download-guest.blade.php
Normal file
@@ -0,0 +1,32 @@
|
||||
@guest
|
||||
@include('modals.partials.download-captcha')
|
||||
|
||||
@if ($episode->interpolated)
|
||||
<br>
|
||||
<p class="text-gray-800 dark:text-gray-200 font-bold">
|
||||
<i class="fa-solid fa-lock pr-[4px] text-red-600"></i> FHD 48fps
|
||||
</p>
|
||||
|
||||
<p class="text-gray-800 dark:text-gray-200">
|
||||
48fps Downloads are restricted to logged in users.
|
||||
</p>
|
||||
@endif
|
||||
<br>
|
||||
<p class="text-gray-800 dark:text-gray-200 font-bold">
|
||||
<i class="fa-solid fa-lock pr-[4px] text-red-600"></i> 4k
|
||||
</p>
|
||||
<p class="text-gray-800 dark:text-gray-200">
|
||||
4k Downloads are restricted to patreon subscribers.
|
||||
</p>
|
||||
@if ($episode->interpolated_uhd)
|
||||
<br>
|
||||
<p class="text-gray-800 dark:text-gray-200 font-bold">
|
||||
<i class="fa-solid fa-lock pr-[4px] text-red-600"></i> 4k 48fps
|
||||
</p>
|
||||
<p class="text-gray-800 dark:text-gray-200">
|
||||
4k 48fps Downloads are restricted to patreon subscribers.
|
||||
</p>
|
||||
@endif
|
||||
|
||||
@include('modals.partials.download-subtitles')
|
||||
@endguest
|
34
resources/views/modals/partials/download-subtitles.blade.php
Normal file
34
resources/views/modals/partials/download-subtitles.blade.php
Normal file
@@ -0,0 +1,34 @@
|
||||
<br>
|
||||
<p class="font-bold text-gray-800 dark:text-gray-200">
|
||||
<i class="fa-solid fa-lock-open pr-[4px] text-green-400"></i> Subtitles
|
||||
</p>
|
||||
<div class="flex flex-wrap justify-around">
|
||||
@php
|
||||
$subtitles = collect([['English' => 'eng']])
|
||||
->merge($episode->subtitles->map(fn($sub) => [
|
||||
$sub->subtitle->name => 'autotrans/' . $sub->subtitle->slug,
|
||||
]))
|
||||
->toArray();
|
||||
$streamDomains = config('hstream.stream_domain');
|
||||
@endphp
|
||||
|
||||
@foreach($subtitles as $subtitle)
|
||||
@foreach ($subtitle as $language => $value)
|
||||
<a href="{{ $streamDomains[array_rand($streamDomains)] }}/{{ $episode->url }}/{{ $value }}.ass" download="{{ $episode->slug }}-{{ $language }}.ass">
|
||||
<button class="group rounded-md shadow bg-rose-600 text-white cursor-pointer flex justify-between items-center overflow-hidden transition-all hover:glow m-1 w-[180px]">
|
||||
<div class="relative w-12 h-12 bg-white bg-opacity-20 text-white flex justify-center items-center transition-all"><svg id="arrow" class="w-4 h-4 transition-all group-hover:-translate-y-1" fill="none" stroke="currentColor" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
|
||||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 14l-7 7m0 0l-7-7m7 7V3"></path>
|
||||
</svg>
|
||||
<div id="progress" class="absolute w-full h-0 bg-white bg-opacity-20 top-0 duration-200"></div>
|
||||
</div>
|
||||
<div class="w-32 text-center">
|
||||
<p class="px-5 text-sm row-span-2">{{ $language }}</p>
|
||||
@if ($language != 'English')
|
||||
<p class="px-5 text-xs">Auto Translated</p>
|
||||
@endif
|
||||
</div>
|
||||
</button>
|
||||
</a>
|
||||
@endforeach
|
||||
@endforeach
|
||||
</div>
|
136
resources/views/modals/share.blade.php
Normal file
136
resources/views/modals/share.blade.php
Normal file
@@ -0,0 +1,136 @@
|
||||
<!--Verically centered modal-->
|
||||
<div data-te-modal-init
|
||||
class="fixed left-0 top-0 z-[1055] hidden h-full w-full overflow-y-auto overflow-x-hidden outline-none"
|
||||
id="modalShare" tabindex="-1" aria-labelledby="Share" aria-modal="true" role="dialog">
|
||||
<div data-te-modal-dialog-ref
|
||||
class="pointer-events-none relative flex min-h-[calc(100%-1rem)] w-auto translate-y-[-50px] items-center opacity-0 transition-all duration-300 ease-in-out min-[576px]:mx-auto min-[576px]:mt-7 min-[576px]:min-h-[calc(100%-3.5rem)] min-[576px]:max-w-[95%] md:min-[576px]:max-w-[90%] lg:min-[576px]:max-w-[80%] xl:min-[576px]:max-w-[50%] 2xl:min-[576px]:max-w-[25%]">
|
||||
<div
|
||||
class="pointer-events-auto relative flex w-full flex-col rounded-md border-none bg-white bg-clip-padding text-current shadow-lg outline-none dark:bg-neutral-800">
|
||||
<x-modal-header :title='__("Share {$episode->title} - {$episode->episode}")' />
|
||||
|
||||
<!--Modal body-->
|
||||
<div class="relative p-4">
|
||||
<!-- Social Media -->
|
||||
@php
|
||||
$currentUrl = url()->current();
|
||||
$text = 'Watch ' . $episode->title . ' - ' . $episode->episode . ' in 4k on hstream.moe!';
|
||||
@endphp
|
||||
<div class="flex flex-wrap justify-stretch">
|
||||
<a class="border-2 duration-200 ease inline-flex items-center mb-1 mr-1 transition py-3 px-5 rounded-lg text-white border-rose-600 bg-rose-600 hover:bg-rose-700 hover:border-rose-700"
|
||||
target="_blank" rel="noopener"
|
||||
href="https://facebook.com/sharer/sharer.php?u={{ $currentUrl }}"
|
||||
aria-label="Share on Facebook" draggable="false">
|
||||
<svg aria-hidden="true" fill="currentColor" xmlns="http://www.w3.org/2000/svg"
|
||||
viewBox="0 0 512 512" class="w-6 h-6">
|
||||
<title>Facebook</title>
|
||||
<path
|
||||
d="M379 22v75h-44c-36 0-42 17-42 41v54h84l-12 85h-72v217h-88V277h-72v-85h72v-62c0-72 45-112 109-112 31 0 58 3 65 4z">
|
||||
</path>
|
||||
</svg>
|
||||
<span class="ml-2">Facebook</span>
|
||||
</a>
|
||||
<a class="border-2 duration-200 ease inline-flex items-center mb-1 mr-1 transition py-3 px-5 rounded-lg text-white border-rose-600 bg-rose-600 hover:bg-rose-700 hover:border-rose-700"
|
||||
target="_blank" rel="noopener"
|
||||
href="https://twitter.com/intent/tweet?url={{ $currentUrl }}&text={{ $text }}"
|
||||
aria-label="Share on Twitter" draggable="false">
|
||||
<svg aria-hidden="true" fill="currentColor" xmlns="http://www.w3.org/2000/svg"
|
||||
viewBox="0 0 512 512" class="w-6 h-6">
|
||||
<title>Twitter</title>
|
||||
<path
|
||||
d="m459 152 1 13c0 139-106 299-299 299-59 0-115-17-161-47a217 217 0 0 0 156-44c-47-1-85-31-98-72l19 1c10 0 19-1 28-3-48-10-84-52-84-103v-2c14 8 30 13 47 14A105 105 0 0 1 36 67c51 64 129 106 216 110-2-8-2-16-2-24a105 105 0 0 1 181-72c24-4 47-13 67-25-8 24-25 45-46 58 21-3 41-8 60-17-14 21-32 40-53 55z">
|
||||
</path>
|
||||
</svg>
|
||||
<span class="ml-2">Twitter</span>
|
||||
</a>
|
||||
<a class="border-2 duration-200 ease inline-flex items-center mb-1 mr-1 transition py-3 px-5 rounded-lg text-white border-rose-600 bg-rose-600 hover:bg-rose-700 hover:border-rose-700"
|
||||
target="_blank" rel="noopener"
|
||||
href="https://reddit.com/submit/?url={{ $currentUrl }}&resubmit=true&title={{ $text }}"
|
||||
aria-label="Share on Reddit" draggable="false">
|
||||
<svg aria-hidden="true" fill="currentColor" xmlns="http://www.w3.org/2000/svg"
|
||||
viewBox="0 0 512 512" class="w-6 h-6">
|
||||
<title>Reddit</title>
|
||||
<path
|
||||
d="M440 204c-15 0-28 6-38 15-35-24-83-40-137-42l28-125 88 20c0 22 18 39 39 39 22 0 40-18 40-39s-17-40-40-40c-15 0-28 9-35 22l-97-22c-5-1-10 3-11 7l-31 138c-53 2-100 18-136 43a53 53 0 0 0-38-16c-56 0-74 74-23 100l-3 24c0 84 95 152 210 152 117 0 211-68 211-152 0-8-1-17-3-25 50-25 32-99-24-99zM129 309a40 40 0 1 1 80 0 40 40 0 0 1-80 0zm215 93c-37 37-139 37-176 0-4-3-4-9 0-13s10-4 13 0c28 28 120 29 149 0 4-4 10-4 14 0s4 10 0 13zm-1-54c-22 0-39-17-39-39a39 39 0 1 1 39 39z">
|
||||
</path>
|
||||
</svg>
|
||||
<span class="ml-2">Reddit</span>
|
||||
</a>
|
||||
<a class="border-2 duration-200 ease inline-flex items-center mb-1 mr-1 transition py-3 px-5 rounded-lg text-white border-rose-600 bg-rose-600 hover:bg-rose-700 hover:border-rose-700"
|
||||
target="_blank" rel="noopener"
|
||||
href="https://wa.me/?text={{ $text }}%20{{ $currentUrl }}"
|
||||
aria-label="Share on Whatsapp" draggable="false" style="">
|
||||
<svg aria-hidden="true" fill="currentColor" xmlns="http://www.w3.org/2000/svg"
|
||||
viewBox="0 0 512 512" class="w-6 h-6">
|
||||
<title>Whatsapp</title>
|
||||
<path
|
||||
d="M413 97A222 222 0 0 0 64 365L31 480l118-31a224 224 0 0 0 330-195c0-59-25-115-67-157zM256 439c-33 0-66-9-94-26l-7-4-70 18 19-68-4-7a185 185 0 0 1 287-229c34 36 56 82 55 131 1 102-84 185-186 185zm101-138c-5-3-33-17-38-18-5-2-9-3-12 2l-18 22c-3 4-6 4-12 2-32-17-54-30-75-66-6-10 5-10 16-31 2-4 1-7-1-10l-17-41c-4-10-9-9-12-9h-11c-4 0-9 1-15 7-5 5-19 19-19 46s20 54 23 57c2 4 39 60 94 84 36 15 49 17 67 14 11-2 33-14 37-27s5-24 4-26c-2-2-5-4-11-6z">
|
||||
</path>
|
||||
</svg>
|
||||
<span class="ml-2">Whatsapp</span>
|
||||
</a>
|
||||
<a class="border-2 duration-200 ease inline-flex items-center mb-1 mr-1 transition py-3 px-5 rounded-lg text-white border-rose-600 bg-rose-600 hover:bg-rose-700 hover:border-rose-700"
|
||||
target="_blank" rel="noopener"
|
||||
href="https://telegram.me/share/url?text={{ $text }}&url={{ $currentUrl }}"
|
||||
aria-label="Share on Telegram" draggable="false">
|
||||
<svg aria-hidden="true" fill="currentColor" xmlns="http://www.w3.org/2000/svg"
|
||||
viewBox="0 0 512 512" class="w-6 h-6">
|
||||
<title>Telegram</title>
|
||||
<path
|
||||
d="M256 8a248 248 0 1 0 0 496 248 248 0 0 0 0-496zm115 169c-4 39-20 134-28 178-4 19-10 25-17 25-14 2-25-9-39-18l-56-37c-24-17-8-25 6-40 3-4 67-61 68-67l-1-4-5-1q-4 1-105 70-15 10-27 9c-9 0-26-5-38-9-16-5-28-7-27-16q1-7 18-14l145-62c69-29 83-34 92-34 2 0 7 1 10 3l4 7a43 43 0 0 1 0 10z">
|
||||
</path>
|
||||
</svg>
|
||||
<span class="ml-2">Telegram</span>
|
||||
</a>
|
||||
<a class="border-2 duration-200 ease inline-flex items-center mb-1 mr-1 transition py-3 px-5 rounded-lg text-white border-rose-600 bg-rose-600 hover:bg-rose-700 hover:border-rose-700"
|
||||
target="_blank" rel="noopener"
|
||||
href="mailto:?subject={{ $text }}&body={{ $currentUrl }}"
|
||||
aria-label="Share by Email" draggable="false">
|
||||
<svg aria-hidden="true" fill="currentColor" xmlns="http://www.w3.org/2000/svg"
|
||||
viewBox="0 0 512 512" class="w-6 h-6">
|
||||
<title>Email</title>
|
||||
<path
|
||||
d="M464 64a48 48 0 0 1 29 86L275 314c-11 8-27 8-38 0L19 150a48 48 0 0 1 29-86h416zM218 339c22 17 54 17 76 0l218-163v208c0 35-29 64-64 64H64c-35 0-64-29-64-64V176l218 163z">
|
||||
</path>
|
||||
</svg>
|
||||
<span class="ml-2">Email</span>
|
||||
</a>
|
||||
</div>
|
||||
<br>
|
||||
<div class="flex">
|
||||
<div>
|
||||
<button id="copy-button" type="button" data-te-clipboard-init
|
||||
data-te-clipboard-target="#copy-target" data-te-ripple-init data-te-ripple-color="light"
|
||||
class="inline-block rounded border-rose-600 bg-rose-600 hover:bg-rose-700 hover:border-rose-700 px-6 pb-2 pt-2.5 text-xs font-medium uppercase leading-normal text-white transition duration-150 ease-in-out focus:bg-rose-600 focus:outline-none focus:ring-0 active:bg-rose-700">
|
||||
Copy
|
||||
</button>
|
||||
</div>
|
||||
<div class="relative mb-3 w-full" data-te-input-wrapper-init>
|
||||
<input type="text"
|
||||
class="peer block min-h-[auto] w-full rounded border-0 bg-transparent px-3 py-[0.32rem] leading-[1.6] outline-none transition-all duration-200 ease-linear focus:placeholder:opacity-100 peer-focus:text-rose-700 data-[te-input-state-active]:placeholder:opacity-100 motion-reduce:transition-none dark:text-neutral-200 dark:placeholder:text-neutral-200 dark:peer-focus:text-rose-700 [&:not([data-te-input-placeholder-active])]:placeholder:opacity-0"
|
||||
id="copy-target" value="{{ $currentUrl }}" readonly />
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class="mb-[0.125rem] block min-h-[1.5rem] text-center">
|
||||
<input class="w-4 h-4 text-rose-600 bg-gray-100 border-gray-300 rounded focus:ring-rose-500 dark:focus:ring-rose-600 dark:ring-offset-gray-800 focus:ring-2 dark:bg-gray-700 dark:border-gray-600"
|
||||
type="checkbox" value="" id="checkBoxStartAt" />
|
||||
<label class="inline-block pl-[0.15rem] hover:cursor-pointer dark:text-white" for="checkBoxStartAt">
|
||||
Start at current time
|
||||
</label>
|
||||
</div>
|
||||
<script>
|
||||
const checkbox = document.getElementById('checkBoxStartAt');
|
||||
const urlInput = document.getElementById('copy-target');
|
||||
const url = '{{ $currentUrl }}';
|
||||
checkbox.addEventListener('change', (event) => {
|
||||
if (event.currentTarget.checked) {
|
||||
urlInput.value = url + "?t=" + parseInt(player.currentTime);
|
||||
} else {
|
||||
urlInput.value = url;
|
||||
}
|
||||
});
|
||||
</script>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
Reference in New Issue
Block a user