diff --git a/app/Http/Controllers/DenController.php b/app/Http/Controllers/DenController.php
index 7054e3b..a1d5aa9 100644
--- a/app/Http/Controllers/DenController.php
+++ b/app/Http/Controllers/DenController.php
@@ -4,9 +4,25 @@ namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
+use App\Repositories\LocationRepository;
+use App\Repositories\SourceRepository;
+use App\Services\PaginationService;
class DenController extends Controller
{
+ protected $pagination;
+ protected $source;
+
+ public function __construct(
+ PaginationService $paginationService,
+ SourceRepository $sourceRepository,
+ LocationRepository $locationRepository
+ ) {
+ $this->pagination = $paginationService;
+ $this->source = $sourceRepository;
+ $this->location = $locationRepository;
+ }
+
//
public function start(Request $request)
{
@@ -25,12 +41,39 @@ class DenController extends Controller
'title' => "Manage Members"]);
}
- public function location(Request $request, string $action = "index")
+ public function location(Request $request, $pageNum = 1)
{
$member = Auth::user();
+ $page = $this->pagination->getPage($pageNum);
return view('back.locations', [
- 'handle' => $member->handle,
- 'title' => "Manage Locations",
- "action" => $action]);
+ 'handle' => $member->handle,
+ 'title' => "Manage Locations",
+ 'sources' => count($this->source->getActive()),
+ "totalPages" => $page['pageCount'],
+ "prev" => $page['prev'],
+ "next" => $page['next'],
+ 'pageNum' => $pageNum,
+ 'locations' => $page['locations']
+ ]);
+ }
+
+ public function locationEdit(Request $request, $uuid = 0)
+ {
+ $location = $this->location->getLocation($uuid);
+ $sources = $this->source->getActive();
+ $name = "NO LOCATION FOUND";
+ if ($location) {
+ $name = $location->name;
+ }
+ $links = explode(",", $location->archive_links);
+ return view('back.location', [
+ 'title' => str_replace(".", " ", $name),
+ 'location' => $location,
+ 'actions' => $location->block_count + $location->silence_count,
+ 'sources_count' => count($sources),
+ 'images' => json_decode($location->images),
+ 'archive_links' => $links,
+ 'updated' => $location->updated_at->format('Y M d'),
+ ]);
}
}
diff --git a/app/Http/Controllers/LocationController.php b/app/Http/Controllers/LocationController.php
index c6ada97..292fbb0 100644
--- a/app/Http/Controllers/LocationController.php
+++ b/app/Http/Controllers/LocationController.php
@@ -2,15 +2,20 @@
namespace App\Http\Controllers;
+use Illuminate\Http\Request;
use App\Services\UpdateService;
+use App\Repositories\LocationRepository;
class LocationController extends Controller
{
protected $update;
- public function __construct(UpdateService $updateService)
- {
- $this->update = $updateService;
+ public function __construct(
+ UpdateService $updateService,
+ LocationRepository $locationRepository
+ ) {
+ $this->update = $updateService;
+ $this->location = $locationRepository;
}
public function updateLocations()
@@ -32,4 +37,15 @@ class LocationController extends Controller
$result
);
}
+
+ public function editLocation(Request $request)
+ {
+ $token = csrf_token();
+ $response = $this->location->editLocation($request);
+ if ($response['status']) {
+ return back()->with('message', $response['message']);
+ } else {
+ return back()->withErrors('message', $response['message']);
+ }
+ }
}
diff --git a/app/Models/Location.php b/app/Models/Location.php
index e5a6b93..a7a12cc 100644
--- a/app/Models/Location.php
+++ b/app/Models/Location.php
@@ -34,6 +34,7 @@ class Location extends Model
"silence_count",
"created_at",
"updated_at",
- "actions_count"
+ "actions_count",
+ "archive_links"
];
}
diff --git a/app/Repositories/LocationRepository.php b/app/Repositories/LocationRepository.php
index 09d785a..28425be 100644
--- a/app/Repositories/LocationRepository.php
+++ b/app/Repositories/LocationRepository.php
@@ -3,6 +3,7 @@
namespace App\Repositories;
use App\Models\Location;
+use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Auth;
@@ -53,6 +54,31 @@ class LocationRepository
->orderByDesc('updated_at')->limit(10)->get();
}
+ public function editLocation($request)
+ {
+ $location = $this->getLocation($request->id);
+ $images = [];
+ if ($request->hasfile("references")) {
+ foreach ($request->references as $file) {
+ $path = $file->store('reference');
+ array_push($images, ["path" => $path]);
+ }
+ }
+ $request->merge(['images' => json_encode($images)]);
+ $location->name = $request->name;
+ $location->description = $request->description;
+ $location->archive_links = $request->archive_links;
+ $location->images = json_encode($images);
+
+ $result = [];
+
+ if ($location->save()) {
+ return ['status' => true, 'message' => "Location Editited -IMG- " . $request->hasfile("references")];
+ } else {
+ return ['status' => false, 'message' => "Location Not Editited"];
+ }
+ }
+
public function addLocation(Request $request)
{
$fields = $request->validate([
diff --git a/public/assets/css/back/locations.css b/public/assets/css/back/locations.css
index 1995019..47c527a 100644
--- a/public/assets/css/back/locations.css
+++ b/public/assets/css/back/locations.css
@@ -1,25 +1,12 @@
-section[role="loc-index"] {
- width: 100%;
- max-width: 600px;
- padding: 10px;
- margin: 0 auto;
-}
-
-section[role="loc-index"] img {
- width: 150px;
- vertical-align: top;
- border-radius: 3px;
-}
-
-section[role="loc-index"] label {
+section.edit-location > article > form.location-edit > label {
color: var(--white);
}
-section[role="loc-index"] input {
+section.edit-location > article > form.location-edit > input {
width: 290px;
}
-section[role="loc-index"] textarea {
+section.edit-location > article > form.location-edit > textarea {
width: 290px;
padding: 5px;
height: 100px;
diff --git a/public/reference b/public/reference
index 3cf38b9..43b2f12 120000
--- a/public/reference
+++ b/public/reference
@@ -1 +1 @@
-/Users/ro/Projects/TheBadSpace/first/storage/app/reference
\ No newline at end of file
+/Users/ro/Herd/TBS/storage/app/reference
\ No newline at end of file
diff --git a/resources/views/back/location.blade.php b/resources/views/back/location.blade.php
new file mode 100644
index 0000000..9de2829
--- /dev/null
+++ b/resources/views/back/location.blade.php
@@ -0,0 +1,46 @@
+@extends('frame',['front' => false])
+
+@section('title', 'The Bad Space | Edit '.$title)
+
+ @section('main-content')
+ @parent
+
+
+ Editing {{$title}}
+
+ References
+ Images
+ @if($images != null)
+ @foreach($images as $image)
+
+
+ @endforeach
+ @endif
+ @php
+ $action = $location->block_count + $location->silence_count;
+ $rating = ($action / $sources_count)*100;
+ @endphp
+ Links
+ @foreach($archive_links as $link)
+ @php
+ $link = trim($link);
+ @endphp
+ {{$link}}
+ @endforeach
+
+ LAST UPDATED : {{$updated}}
+
+
+ @endsection
\ No newline at end of file
diff --git a/resources/views/back/locations.blade.php b/resources/views/back/locations.blade.php
index 69f37c0..3402815 100644
--- a/resources/views/back/locations.blade.php
+++ b/resources/views/back/locations.blade.php
@@ -6,16 +6,32 @@
@parent
@endsection
\ No newline at end of file
diff --git a/resources/views/back/start.blade.php b/resources/views/back/start.blade.php
index 10cc9f3..4f09322 100644
--- a/resources/views/back/start.blade.php
+++ b/resources/views/back/start.blade.php
@@ -8,7 +8,7 @@
Hey {{$handle}}
Manage Member
- Manage Location
+ Manage Location
@endsection
\ No newline at end of file
diff --git a/resources/views/frame.blade.php b/resources/views/frame.blade.php
index 25360cb..160e670 100644
--- a/resources/views/frame.blade.php
+++ b/resources/views/frame.blade.php
@@ -8,7 +8,12 @@
@yield('title')
-
+ @if(isset($front) && $front == false)
+
+ @elseif(!isset($front) || $front == true)
+
+ @endif
+
diff --git a/routes/web.php b/routes/web.php
index ad95f26..b7ac2de 100644
--- a/routes/web.php
+++ b/routes/web.php
@@ -41,8 +41,9 @@ Route::get("/logout", [AuthController::class, 'leave']);
Route::group(['prefix' => 'den', 'middleware' => 'member.check'], function () {
Route::get("/", [DenController::class, 'start']);
Route::get("/member", [DenController::class, 'member']);
- Route::get("/locations/{action?}", [DenController::class, 'location']);
- Route::post("/locations/add", [LocationController::class, 'addLocation']);
+ Route::get("/locations/{pageNum}", [DenController::class, 'location']);
+ Route::get("/location/edit/{uuid}", [DenController::class, 'locationEdit']);
+ Route::post("/locations/edit", [LocationController::class, 'editLocation']);
//admin actions
Route::get("/admin/update", [LocationController::class, 'updateLocations']);
Route::get("/admin/compile", [LocationController::class, 'compileLocations']);