From 0ddec78d09c63eceea4964a572f84ebe2b0db512 Mon Sep 17 00:00:00 2001
From: Jonny Barnes
Date: Sun, 23 Oct 2022 13:11:31 +0100
Subject: [PATCH] Allow syndication targets to be added/edited in admin
interface
---
.../Admin/SyndicationTargetsController.php | 99 +++++++++++++++++++
app/Models/SyndicationTarget.php | 16 +++
.../views/admin/syndication/create.blade.php | 45 +++++++++
.../views/admin/syndication/edit.blade.php | 52 ++++++++++
.../views/admin/syndication/index.blade.php | 22 +++++
resources/views/admin/welcome.blade.php | 6 ++
routes/web.php | 11 +++
7 files changed, 251 insertions(+)
create mode 100644 app/Http/Controllers/Admin/SyndicationTargetsController.php
create mode 100644 resources/views/admin/syndication/create.blade.php
create mode 100644 resources/views/admin/syndication/edit.blade.php
create mode 100644 resources/views/admin/syndication/index.blade.php
diff --git a/app/Http/Controllers/Admin/SyndicationTargetsController.php b/app/Http/Controllers/Admin/SyndicationTargetsController.php
new file mode 100644
index 00000000..f8c93260
--- /dev/null
+++ b/app/Http/Controllers/Admin/SyndicationTargetsController.php
@@ -0,0 +1,99 @@
+validate([
+ 'uid' => 'required|string',
+ 'name' => 'required|string',
+ ]);
+
+ SyndicationTarget::create($validated);
+
+ return redirect('/admin/syndication');
+ }
+
+ /**
+ * Show a form to edit a syndication target.
+ *
+ * @param SyndicationTarget $syndicationTarget
+ * @return View
+ */
+ public function edit(SyndicationTarget $syndicationTarget): View
+ {
+ return view('admin.syndication.edit', [
+ 'syndication_target' => $syndicationTarget,
+ ]);
+ }
+
+ /**
+ * Process the request to edit a client name.
+ *
+ * @param Request $request
+ * @param SyndicationTarget $syndicationTarget
+ * @return RedirectResponse
+ */
+ public function update(Request $request, SyndicationTarget $syndicationTarget): RedirectResponse
+ {
+ $validated = $request->validate([
+ 'uid' => 'required|string',
+ 'name' => 'required|string',
+ ]);
+
+ $syndicationTarget->update($validated);
+
+ return redirect('/admin/syndication');
+ }
+
+ /**
+ * Process a request to delete a client.
+ *
+ * @param SyndicationTarget $syndicationTarget
+ * @return RedirectResponse
+ */
+ public function destroy(SyndicationTarget $syndicationTarget): RedirectResponse
+ {
+ $syndicationTarget->delete();
+
+ return redirect('/admin/syndication');
+ }
+}
diff --git a/app/Models/SyndicationTarget.php b/app/Models/SyndicationTarget.php
index 74366afa..85d674c1 100644
--- a/app/Models/SyndicationTarget.php
+++ b/app/Models/SyndicationTarget.php
@@ -12,6 +12,22 @@ class SyndicationTarget extends Model
{
use HasFactory;
+ /**
+ * The attributes that are mass assignable.
+ *
+ * @var array
+ */
+ protected $fillable = [
+ 'uid',
+ 'name',
+ 'service_name',
+ 'service_url',
+ 'service_photo',
+ 'user_name',
+ 'user_url',
+ 'user_photo',
+ ];
+
/**
* The attributes that are visible when serializing the model.
*
diff --git a/resources/views/admin/syndication/create.blade.php b/resources/views/admin/syndication/create.blade.php
new file mode 100644
index 00000000..df196e93
--- /dev/null
+++ b/resources/views/admin/syndication/create.blade.php
@@ -0,0 +1,45 @@
+@extends('master')
+
+@section('title')New Syndication Target « Admin CP « @stop
+
+@section('content')
+ New Syndication Target
+
+@stop
diff --git a/resources/views/admin/syndication/edit.blade.php b/resources/views/admin/syndication/edit.blade.php
new file mode 100644
index 00000000..400ff5d4
--- /dev/null
+++ b/resources/views/admin/syndication/edit.blade.php
@@ -0,0 +1,52 @@
+@extends('master')
+
+@section('title')Edit Syndication Target « Admin CP « @stop
+
+@section('content')
+ Edit syndication target
+
+
+
+@stop
diff --git a/resources/views/admin/syndication/index.blade.php b/resources/views/admin/syndication/index.blade.php
new file mode 100644
index 00000000..513e2c76
--- /dev/null
+++ b/resources/views/admin/syndication/index.blade.php
@@ -0,0 +1,22 @@
+@extends('master')
+
+@section('title')List Syndication Targets « Admin CP « @stop
+
+@section('content')
+ Syndication Targets
+ @if($targets->isEmpty())
+ No saved syndication targets.
+ @else
+
+ @foreach($targets as $target)
+ -
+ {{ $target['uid'] }}
+ edit?
+
+ @endforeach
+
+ @endif
+
+ Create a new syndication target?
+
+@stop
diff --git a/resources/views/admin/welcome.blade.php b/resources/views/admin/welcome.blade.php
index d29468b0..46ac746f 100644
--- a/resources/views/admin/welcome.blade.php
+++ b/resources/views/admin/welcome.blade.php
@@ -40,4 +40,10 @@
You can either create new places,
or edit them.
+
+ Syndication
+
+ You can either create new syndication targets,
+ or edit them.
+
@stop
diff --git a/routes/web.php b/routes/web.php
index 4d83f871..f721a2df 100644
--- a/routes/web.php
+++ b/routes/web.php
@@ -18,6 +18,7 @@ use App\Http\Controllers\Admin\HomeController;
use App\Http\Controllers\Admin\LikesController as AdminLikesController;
use App\Http\Controllers\Admin\NotesController as AdminNotesController;
use App\Http\Controllers\Admin\PlacesController as AdminPlacesController;
+use App\Http\Controllers\Admin\SyndicationTargetsController;
use App\Http\Controllers\ArticlesController;
use App\Http\Controllers\AuthController;
use App\Http\Controllers\BookmarksController;
@@ -122,6 +123,16 @@ Route::group(['domain' => config('url.longurl')], function () {
Route::put('/{id}', [AdminLikesController::class, 'update']);
Route::delete('/{id}', [AdminLikesController::class, 'destroy']);
});
+
+ // Syndication Targets
+ Route::group(['prefix' => 'syndication'], function () {
+ Route::get('/', [SyndicationTargetsController::class, 'index']);
+ Route::get('/create', [SyndicationTargetsController::class, 'create']);
+ Route::post('/', [SyndicationTargetsController::class, 'store']);
+ Route::get('/{syndicationTarget}/edit', [SyndicationTargetsController::class, 'edit']);
+ Route::put('/{syndicationTarget}', [SyndicationTargetsController::class, 'update']);
+ Route::delete('/{syndicationTarget}', [SyndicationTargetsController::class, 'destroy']);
+ });
});
// Blog pages using ArticlesController