add workshop duplication

This commit is contained in:
2024-05-01 20:57:20 +10:00
parent 629ae22b78
commit 76690962c5
3 changed files with 25 additions and 2 deletions

View File

@@ -237,4 +237,25 @@ class WorkshopController extends Controller
return redirect()->route('admin.workshop.index'); return redirect()->route('admin.workshop.index');
} }
/**
* Duplicate the specified resource.
*/
public function admin_duplicate(Workshop $workshop)
{
$newWorkshop = $workshop->replicate();
$newWorkshop->title = $newWorkshop->title . ' (copy)';
$newWorkshop->status = 'draft';
$newWorkshop->save();
foreach($workshop->files as $file) {
$newWorkshop->files()->attach($file->name);
}
session()->flash('message', 'Workshop has been duplicated');
session()->flash('message-title', 'Workshop duplicated');
session()->flash('message-type', 'success');
return redirect()->route('admin.workshop.edit', $newWorkshop);
}
} }

View File

@@ -38,8 +38,9 @@
<td class="hidden md:table-cell">{{ \Carbon\Carbon::parse($workshop->starts_at)->format('M j Y, g:i a') }}</td> <td class="hidden md:table-cell">{{ \Carbon\Carbon::parse($workshop->starts_at)->format('M j Y, g:i a') }}</td>
<td> <td>
<div class="flex justify-center gap-3"> <div class="flex justify-center gap-3">
<a href="{{ route('admin.workshop.edit', $workshop) }}" class="hover:text-primary-color"><i class="fa-solid fa-pen-to-square"></i></a> <a href="{{ route('admin.workshop.edit', $workshop) }}" class="hover:text-primary-color" title="Edit"><i class="fa-solid fa-pen-to-square"></i></a>
<a href="#" class="hover:text-red-600" x-data x-on:click.prevent="SM.confirmDelete('{{ csrf_token() }}', 'Delete workshop?', 'Are you sure you want to delete this workshop? This action cannot be undone', '{{ route('admin.workshop.destroy', $workshop) }}')"><i class="fa-solid fa-trash"></i></a> <a href="{{ route('admin.workshop.duplicate', $workshop) }}" class="hover:text-primary-color" title="Duplicate"><i class="fa-regular fa-copy"></i></a>
<a href="#" class="hover:text-red-600" x-data x-on:click.prevent="SM.confirmDelete('{{ csrf_token() }}', 'Delete workshop?', 'Are you sure you want to delete this workshop? This action cannot be undone', '{{ route('admin.workshop.destroy', $workshop) }}')" title="Delete"><i class="fa-solid fa-trash"></i></a>
</div> </div>
</td> </td>
</tr> </tr>

View File

@@ -80,6 +80,7 @@ Route::middleware('admin')->group(function () {
Route::get('/admin/workshops', [WorkshopController::class, 'admin_index'])->name('admin.workshop.index'); Route::get('/admin/workshops', [WorkshopController::class, 'admin_index'])->name('admin.workshop.index');
Route::get('/admin/workshops/create', [WorkshopController::class, 'admin_create'])->name('admin.workshop.create'); Route::get('/admin/workshops/create', [WorkshopController::class, 'admin_create'])->name('admin.workshop.create');
Route::get('/admin/workshops/{workshop}/duplicate', [WorkshopController::class, 'admin_duplicate'])->name('admin.workshop.duplicate');
Route::post('/admin/workshops', [WorkshopController::class, 'admin_store'])->name('admin.workshop.store'); Route::post('/admin/workshops', [WorkshopController::class, 'admin_store'])->name('admin.workshop.store');
Route::get('/admin/workshops/{workshop}', [WorkshopController::class, 'admin_edit'])->name('admin.workshop.edit'); Route::get('/admin/workshops/{workshop}', [WorkshopController::class, 'admin_edit'])->name('admin.workshop.edit');
Route::put('/admin/workshops/{workshop}', [WorkshopController::class, 'admin_update'])->name('admin.workshop.update'); Route::put('/admin/workshops/{workshop}', [WorkshopController::class, 'admin_update'])->name('admin.workshop.update');