mirror of
https://koodu.h-i.works/projects/thebadspace
synced 2025-05-06 14:41:02 -05:00
Source creation and editing
A UI has been added for entering new sources and editing pre-existing ones. No more having to edit the DB directly when wanting to add or remove a source.
This commit is contained in:
parent
c3951ae08f
commit
8e4dc55c90
102
app/Http/Controllers/SourceController.php
Normal file
102
app/Http/Controllers/SourceController.php
Normal file
@ -0,0 +1,102 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers;
|
||||
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
use App\Repositories\SourceRepository;
|
||||
|
||||
class SourceController extends Controller
|
||||
{
|
||||
protected $sources;
|
||||
|
||||
public function __construct(
|
||||
SourceRepository $sourceRepo
|
||||
) {
|
||||
$this->sources = $sourceRepo;
|
||||
}
|
||||
|
||||
public function index(Request $request)
|
||||
{
|
||||
$member = Auth::user();
|
||||
return view('back.sources', [
|
||||
'mode' => 'index',
|
||||
'handle' => $member->handle,
|
||||
'sources' => $this->sources->getAll(),
|
||||
'title' => "Manage Sources"]);
|
||||
}
|
||||
|
||||
public function editSource(Request $request, $id = 0)
|
||||
{
|
||||
$source = $this->sources->get($id);
|
||||
|
||||
return view('back.sources', [
|
||||
'mode' => 'source-edit',
|
||||
'source' => $source,
|
||||
'title' => "Edit Source Info"]);
|
||||
}
|
||||
|
||||
public function createSource(Request $Request)
|
||||
{
|
||||
return view('back.sources', [
|
||||
'mode' => 'source-create',
|
||||
'title' => "Enter a new Source"]);
|
||||
}
|
||||
|
||||
//actions
|
||||
|
||||
public function sourceEdit(Request $request)
|
||||
{
|
||||
$token = csrf_token();
|
||||
//role check
|
||||
$member = Auth::user();
|
||||
if ($member->role == 0) {
|
||||
$valid = $request->validate([
|
||||
'url' => ['required'],
|
||||
'type' => ['required'],
|
||||
'status' => ['required'],
|
||||
'format' => ['required'],
|
||||
]);
|
||||
|
||||
if ($valid) {
|
||||
$response = $this->sources->edit($request);
|
||||
if ($response['status'] == true) {
|
||||
return back()->with('message', $response['message']);
|
||||
} else {
|
||||
return back()->withErrors([$response['message']]);
|
||||
}
|
||||
} else {
|
||||
return back()->withErrors(['Misssing some required info, homie.']);
|
||||
}
|
||||
} else {
|
||||
return back()->withErrors(['Nah, you can\'t do this. Wrong permissions.']);
|
||||
}
|
||||
}
|
||||
|
||||
public function sourceCreate(Request $request)
|
||||
{
|
||||
$token = csrf_token();
|
||||
$member = Auth::user();
|
||||
if ($member->role == 0) {
|
||||
$valid = $request->validate([
|
||||
'url' => ['required'],
|
||||
'type' => ['required'],
|
||||
'status' => ['required'],
|
||||
'format' => ['required'],
|
||||
]);
|
||||
|
||||
if ($valid) {
|
||||
$response = $this->sources->add($request);
|
||||
if ($response['status'] == true) {
|
||||
return redirect('/den/sources')->with('message', $response['message']);
|
||||
} else {
|
||||
return back()->withErrors([$response['message']]);
|
||||
}
|
||||
} else {
|
||||
return back()->withErrors(['Misssing some required info, homie.']);
|
||||
}
|
||||
} else {
|
||||
return back()->withErrors(['Nah, you can\'t do this. Wrong permissions.']);
|
||||
}
|
||||
}
|
||||
}
|
@ -21,11 +21,61 @@ class SourceRepository
|
||||
$this->sources = $source::where("active", true)->get();
|
||||
}
|
||||
|
||||
public function getAll()
|
||||
{
|
||||
return $this->source::all();
|
||||
}
|
||||
|
||||
public function get($id)
|
||||
{
|
||||
return $this->source::where("id", $id)->first();
|
||||
}
|
||||
|
||||
public function getActive()
|
||||
{
|
||||
return $this->source::where("active", true)->get();
|
||||
}
|
||||
|
||||
public function edit($request)
|
||||
{
|
||||
$source = $this->get($request->id);
|
||||
$source->url = $request->url;
|
||||
$source->type = $request->type;
|
||||
$source->format = $request->format;
|
||||
$source->active = $request->status;
|
||||
$source->last_updated = Carbon::now();
|
||||
//token check
|
||||
if ($request->token != '' && $request->token != 'none') {
|
||||
$source->token = $request->token;
|
||||
} else {
|
||||
$source->token = '';
|
||||
}
|
||||
|
||||
if ($source->save()) {
|
||||
return ['status' => true, 'message' => "Source Editited"];
|
||||
} else {
|
||||
return ['status' => false, 'message' => "Source Not Editited"];
|
||||
}
|
||||
}
|
||||
|
||||
public function add($request)
|
||||
{
|
||||
$newSource = $this->source::create([
|
||||
'url' => $request->url,
|
||||
'type' => $request->type,
|
||||
'format' => $request->format,
|
||||
'active' => $request->status,
|
||||
'token' => $request->token,
|
||||
'last_udated' => Carbon::now(),
|
||||
]);
|
||||
|
||||
if ($newSource) {
|
||||
return ['status' => true, 'message' => "New Source Created!"];
|
||||
} else {
|
||||
return ['status' => false, 'message' => "Uh oh, New Source Not Created!"];
|
||||
}
|
||||
}
|
||||
|
||||
public function updateSourceData($index = 0)
|
||||
{
|
||||
//checks all the sources to refresh data
|
||||
|
42
resources/views/back/sources.blade.php
Normal file
42
resources/views/back/sources.blade.php
Normal file
@ -0,0 +1,42 @@
|
||||
@extends('frame')
|
||||
|
||||
@section('title', 'Den | Sources Admin')
|
||||
|
||||
@php
|
||||
switch($mode)
|
||||
{
|
||||
case 'source-create':
|
||||
$action_url = '/den/source/create';
|
||||
break;
|
||||
case 'source-edit':
|
||||
$action_url = '/den/source/edit';
|
||||
break;
|
||||
}
|
||||
@endphp
|
||||
@section('main-content')
|
||||
<section>
|
||||
<article>
|
||||
@switch($mode)
|
||||
@case('source-edit')
|
||||
<h2>Edit Info for {{$source->url}}</h2>
|
||||
@include('forms.source-edit')
|
||||
<br />
|
||||
@break
|
||||
|
||||
@case('source-create')
|
||||
<h2>New Source Info</h2>
|
||||
@include('forms.source-edit')
|
||||
<br />
|
||||
@break
|
||||
|
||||
@default
|
||||
<h2>Current Sources </h2>
|
||||
@foreach($sources as $source)
|
||||
<a href="/den/source/{{$source->id}}">{{$source->url}}</a><br />
|
||||
@endforeach
|
||||
<h2>Add Source </h2>
|
||||
<a href="/den/source/edit/create">Add a new Source</a><br />
|
||||
@endswitch
|
||||
</article>
|
||||
</section>
|
||||
@endsection
|
66
resources/views/forms/source-edit.blade.php
Normal file
66
resources/views/forms/source-edit.blade.php
Normal file
@ -0,0 +1,66 @@
|
||||
<form action="{{$action_url}}" method="post" enctype="multipart/form-data">
|
||||
<div>
|
||||
@php
|
||||
isset($source->url) ? $url = $source->url : $url = '';
|
||||
@endphp
|
||||
<label>URL</label><br />
|
||||
<input type="text" name="url" value="{{$url}}" />
|
||||
<br />
|
||||
@php
|
||||
isset($source->type) ? $type = $source->type : $type = '';
|
||||
@endphp
|
||||
<label>Type</label><br />
|
||||
<select name="type">
|
||||
@if($type == 'mastodon')
|
||||
<option value="mastodon" selected>Mastodon</option>
|
||||
<option value="gotosocial">GoToSocial</option>
|
||||
@else
|
||||
<option value="mastodon">Mastodon</option>
|
||||
<option value="gotosocial" selected>GoToSocial</option>
|
||||
@endif
|
||||
</select>
|
||||
<br />
|
||||
@php
|
||||
isset($source->format) ? $format = $source->format : $format = '';
|
||||
@endphp
|
||||
<label>Format</label><br />
|
||||
<select name="format">
|
||||
@if($format == 'json')
|
||||
<option value="json" selected>JSON</option>
|
||||
<option value="csv">CSV</option>
|
||||
@else
|
||||
<option value="json">JSON</option>
|
||||
<option value="csv" selected>CSV</option>
|
||||
@endif
|
||||
</select>
|
||||
<br />
|
||||
|
||||
@php
|
||||
isset($source->active) ? $status = $source->active : $status = false;
|
||||
@endphp
|
||||
<label>Active?</label><br />
|
||||
<select name="status">
|
||||
@if($status)
|
||||
<option value="true" selected>Active</option>
|
||||
<option value="false">Not Active</option>
|
||||
@else
|
||||
<option value="true">Active</option>
|
||||
<option value="false" selected>Not Active</option>
|
||||
@endif
|
||||
</select>
|
||||
<br />
|
||||
@php
|
||||
isset($source->token) ? $token = $source->token : $token = '';
|
||||
@endphp
|
||||
<label>Access Token (enter 'none' to clear)</label><br />
|
||||
<input type="text" name="token" value="{{$token}}" />
|
||||
<br />
|
||||
|
||||
</div>
|
||||
@csrf
|
||||
@php
|
||||
isset($source->id) ? $id = $source->id : $id = 0;
|
||||
@endphp
|
||||
<input type="hidden" name="id" value="{{$id}}" />
|
||||
<input type="submit" value="Edit Source" name="submit_button">
|
||||
</form>
|
@ -8,6 +8,7 @@ use App\Http\Controllers\LocationController;
|
||||
use App\Http\Controllers\MemberController;
|
||||
use App\Http\Controllers\ExportController;
|
||||
use App\Http\Controllers\AppealController;
|
||||
use App\Http\Controllers\SourceController;
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
@ -55,9 +56,13 @@ Route::group(['prefix' => 'den', 'middleware' => 'member.check'], function () {
|
||||
Route::get("/member/{uuid}", [MemberController::class, 'editMember']);
|
||||
Route::get("/member/edit/create", [MemberController::class, 'createMember']);
|
||||
//source stuff
|
||||
Route::get("/sources", [MemberController::class, 'index']);
|
||||
Route::get("/sources", [SourceController::class, 'index']);
|
||||
Route::get("/source/{id}", [SourceController::class, 'editSource']);
|
||||
Route::get("/source/edit/create", [SourceController::class, 'createSource']);
|
||||
//actions
|
||||
Route::post("/profile/edit", [MemberController::class, 'profileEdit']);
|
||||
Route::post("/member/edit", [MemberController::class, 'memberEdit']);
|
||||
Route::post("/member/create", [MemberController::class, 'memberCreate']);
|
||||
Route::post("/source/edit", [SourceController::class, 'sourceEdit']);
|
||||
Route::post("/source/create", [SourceController::class, 'sourceCreate']);
|
||||
});
|
||||
|
Loading…
x
Reference in New Issue
Block a user