Add ability to edit hentai title & Update design of edit modal

This commit is contained in:
2026-05-26 14:18:48 +02:00
parent a71b2976af
commit 2f3f0edc30
2 changed files with 59 additions and 4 deletions
+36
View File
@@ -91,6 +91,40 @@ class EpisodeService
$episode->retag($newtags); $episode->retag($newtags);
} }
private function updateTitle(Request $request, Episode $episode): void
{
$updates = [];
if ($episode->title !== $request->input('title')) {
$updates['title'] = $request->input('title');
$updates['title_search'] = preg_replace(
'/[^A-Za-z0-9 ]/',
'',
$request->input('title')
);
// Log to ModLog
ModLog::create([
'moderator' => $request->user()->name,
'data' => "Updating Hentai Title from {$episode->title} to {$request->input('title')}",
]);
}
if ($episode->title_jpn !== $request->input('title_jpn')) {
$updates['title_jpn'] = $request->input('title_jpn');
// Log to ModLog
ModLog::create([
'moderator' => $request->user()->name,
'data' => "Updating Hentai Title from {$episode->title_jpn} to {$request->input('title_jpn')}",
]);
}
if (! empty($updates)) {
$episode->hentai->episodes()->update($updates);
}
}
public function updateEpisode(Request $request, Studios $studio, int $episodeId): Episode public function updateEpisode(Request $request, Studios $studio, int $episodeId): Episode
{ {
$episode = Episode::where('id', $episodeId)->firstOrFail(); $episode = Episode::where('id', $episodeId)->firstOrFail();
@@ -105,6 +139,7 @@ class EpisodeService
$episode->save(); $episode->save();
$this->applyTags($request, $episode); $this->applyTags($request, $episode);
$this->updateTitle($request, $episode);
return $episode; return $episode;
} }
@@ -125,6 +160,7 @@ class EpisodeService
} }
$this->applyTags($request, $episode); $this->applyTags($request, $episode);
$this->updateTitle($request, $episode);
} }
public function getOrCreateStudio(string $studioName): Studios public function getOrCreateStudio(string $studioName): Studios
@@ -1,13 +1,32 @@
<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="modalEditEpisode" tabindex="-1" aria-labelledby="Upload" aria-modal="true" role="dialog"> <div
<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-[50%]"> data-te-modal-init
<div class="flex relative flex-col w-full text-current bg-clip-padding bg-white rounded-md border-none shadow-lg outline-none pointer-events-auto dark:bg-neutral-800"> id="modalEditEpisode"
tabindex="-1"
aria-modal="true"
role="dialog"
class="fixed inset-0 z-[1055] hidden overflow-y-auto bg-black/60 backdrop-blur-sm"
>
<div data-te-modal-dialog-ref class="flex min-h-screen items-center justify-center p-4">
<div class="relative w-full max-w-7xl overflow-hidden rounded-2xl border border-neutral-200 bg-white shadow-2xl dark:border-neutral-700 dark:bg-neutral-900">
<x-modal-header :title="__('Edit Episode')"/> <x-modal-header :title="__('Edit Episode')"/>
<!--Modal body--> <!--Modal body-->
<div class="relative p-4 pt-0"> <div class="relative p-4 pt-0">
<form method="POST" action="{{ route('admin.episode.edit') }}" enctype="multipart/form-data"> <form method="POST" action="{{ route('admin.episode.edit') }}" enctype="multipart/form-data">
@csrf @csrf
<div class="grid grid-cols-3"> <div class="flex flex-col gap-2 p-2">
<div>
<label class="leading-tight text-gray-800 dark:text-gray-200 w-full" for="title">Title:</label>
<x-text-input id="title" value="{{ $episode->title }}" class="block w-full" type="text" name="title" required autofocus/>
</div>
<div>
<label class="leading-tight text-gray-800 dark:text-gray-200 w-full" for="title_jpn">Title JPN:</label>
<x-text-input id="title_jpn" value="{{ $episode->title_jpn }}" class="block w-full" type="text" name="title_jpn" required />
</div>
</div>
<div class="grid grid-cols-3 p-2">
<div class="col-span-2"> <div class="col-span-2">
<!-- Tags --> <!-- Tags -->
<div class="row-span-2 p-0"> <div class="row-span-2 p-0">