Remove admin pages
This commit is contained in:
parent
ccec714bee
commit
069cf70f5b
7 changed files with 0 additions and 208 deletions
|
@ -1,15 +0,0 @@
|
||||||
<?php
|
|
||||||
|
|
||||||
namespace App\Http\Controllers;
|
|
||||||
|
|
||||||
use App\Models\BookmarkCategory;
|
|
||||||
use Illuminate\Support\Facades\DB;
|
|
||||||
use Illuminate\View\View;
|
|
||||||
|
|
||||||
class AdminBookmarksController extends Controller
|
|
||||||
{
|
|
||||||
public function show() : View {
|
|
||||||
$categories = BookmarkCategory::with('sites')->get();
|
|
||||||
return view('admin.bookmarks', compact('categories'));
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,34 +0,0 @@
|
||||||
<?php
|
|
||||||
|
|
||||||
namespace App\Http\Controllers;
|
|
||||||
|
|
||||||
use App\Models\GuestbookEntry;
|
|
||||||
use Illuminate\Support\Facades\DB;
|
|
||||||
use Illuminate\View\View;
|
|
||||||
use UAParser\Parser;
|
|
||||||
|
|
||||||
class AdminGuestbookController extends Controller
|
|
||||||
{
|
|
||||||
function getGuestbookUniqueAddr(): int {
|
|
||||||
$uniqueIpsCount = DB::table('guestbook__entries')->distinct()->count('ip');
|
|
||||||
return $uniqueIpsCount;
|
|
||||||
}
|
|
||||||
|
|
||||||
function getGuestbookEntriesCount(): int {
|
|
||||||
$entryCount = DB::table('guestbook__entries')->count();
|
|
||||||
return $entryCount;
|
|
||||||
}
|
|
||||||
public function show() : View {
|
|
||||||
$guestbook_unique_addr = $this->getGuestbookUniqueAddr();
|
|
||||||
$guestbook_entry_count = $this->getGuestbookEntriesCount();
|
|
||||||
$entries = GuestbookEntry::selectEntries();
|
|
||||||
$parser = Parser::create();
|
|
||||||
|
|
||||||
return view('admin.guestbook', [
|
|
||||||
'guestbook_unique_addr' => $guestbook_unique_addr,
|
|
||||||
'guestbook_entry_count' => $guestbook_entry_count,
|
|
||||||
'entries' => $entries,
|
|
||||||
'parser' => $parser,
|
|
||||||
]);
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,69 +0,0 @@
|
||||||
<?php
|
|
||||||
|
|
||||||
namespace App\Http\Controllers;
|
|
||||||
|
|
||||||
use App\Models\BookmarkCategory;
|
|
||||||
use App\Models\BookmarkSite;
|
|
||||||
use App\Models\GuestbookEntry;
|
|
||||||
use Exception;
|
|
||||||
use Illuminate\Http\Request;
|
|
||||||
use Illuminate\View\View;
|
|
||||||
|
|
||||||
class AdminImportController extends Controller
|
|
||||||
{
|
|
||||||
public function show() : View {
|
|
||||||
return view('admin.import');
|
|
||||||
}
|
|
||||||
|
|
||||||
public function submit(Request $request)
|
|
||||||
{
|
|
||||||
$request->validate([
|
|
||||||
'data_file' => 'required|mimes:json',
|
|
||||||
]);
|
|
||||||
|
|
||||||
$file = $request->file('data_file');
|
|
||||||
$jsonContent = file_get_contents($file->getRealPath());
|
|
||||||
$data = json_decode($jsonContent, true);
|
|
||||||
$tables = [];
|
|
||||||
foreach($data as $item) {
|
|
||||||
if ($item['type'] !== "table") continue;
|
|
||||||
$tables[$item['name']] = [
|
|
||||||
'data' => $item['data'],
|
|
||||||
'count' => count($item['data'])
|
|
||||||
];
|
|
||||||
|
|
||||||
if ($item['name'] === "guestbook__entries") {
|
|
||||||
GuestbookEntry::importGuestbookEntry($item['data']);
|
|
||||||
}
|
|
||||||
$this->import($item['data'], $item['name']);
|
|
||||||
}
|
|
||||||
return view('admin.import-success', ['tables' => $tables]);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Imports the given data to the specified table
|
|
||||||
*
|
|
||||||
* @param array $data The data to import
|
|
||||||
* @param string $table_name The name of the table to import to
|
|
||||||
* @return void
|
|
||||||
* @throws Exception Invalid table specified, to be replaced with custom exception
|
|
||||||
*/
|
|
||||||
public function import(array $data, string $table_name): void {
|
|
||||||
switch ($table_name) {
|
|
||||||
case 'guestbook__entries':
|
|
||||||
GuestbookEntry::importGuestbookEntry($data);
|
|
||||||
break;
|
|
||||||
case 'bookmark__categories' :
|
|
||||||
BookmarkCategory::importBookmarkCategory($data);
|
|
||||||
break;
|
|
||||||
case 'bookmark__sites':
|
|
||||||
BookmarkSite::importBookmark($data);
|
|
||||||
break;
|
|
||||||
case 'guestbook__bans':
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
// TODO: Replace with custom exception
|
|
||||||
throw new Exception("Invalid table specified ($table_name)");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,28 +0,0 @@
|
||||||
<x-layout>
|
|
||||||
<x-slot:title>Admin | Bookmarks</x-slot:title>
|
|
||||||
@foreach($categories as $category)
|
|
||||||
<div class="info-section info-admin-section">
|
|
||||||
<h2>{{ $category->name }}</h2>
|
|
||||||
<table class="info-admin">
|
|
||||||
<tr>
|
|
||||||
<th>ID</th>
|
|
||||||
<th>Name</th>
|
|
||||||
<th>Description</th>
|
|
||||||
<th>URL</th>
|
|
||||||
<th>Priority</th>
|
|
||||||
<th class="blank"></th>
|
|
||||||
</tr>
|
|
||||||
@foreach($category->sites as $site)
|
|
||||||
<tr>
|
|
||||||
<td>{{ $site->id }}</td>
|
|
||||||
<td>{{ $site->name }}</td>
|
|
||||||
<td>{{ $site->description }}</td>
|
|
||||||
<td>{{ $site->url }}</td>
|
|
||||||
<td>{{ $site->priority }}</td>
|
|
||||||
<td><a href="?action=delete&id={{ $site->id }}"><button>Delete</button></a></td>
|
|
||||||
</tr>
|
|
||||||
@endforeach
|
|
||||||
</table>
|
|
||||||
</div>
|
|
||||||
@endforeach
|
|
||||||
</x-layout>
|
|
|
@ -1,32 +0,0 @@
|
||||||
<x-layout>
|
|
||||||
<x-slot:title>Admin | Guestbook</x-slot:title>
|
|
||||||
<div class="info-section">
|
|
||||||
<h2>Statistics</h2>
|
|
||||||
<hr>
|
|
||||||
<strong>Unique IP addresses:</strong> {{ $guestbook_unique_addr }}<br>
|
|
||||||
<strong>Entries:</strong> {{ $guestbook_entry_count }}
|
|
||||||
</div>
|
|
||||||
<br>
|
|
||||||
<div class="info-section">
|
|
||||||
<h2>Entries</h2>
|
|
||||||
<hr>
|
|
||||||
<table class="info-admin fullwidth">
|
|
||||||
<tr>
|
|
||||||
<th>ID</th>
|
|
||||||
<th>Name</th>
|
|
||||||
<th>IP Address</th>
|
|
||||||
<th>Message</th>
|
|
||||||
<th class="blank"></th>
|
|
||||||
</tr>
|
|
||||||
@foreach ($entries as $entry)
|
|
||||||
<tr>
|
|
||||||
<td>{{ $entry->id }}</td>
|
|
||||||
<td>{{ $entry->name }}</td>
|
|
||||||
<td>{{ $entry->ip }}</td>
|
|
||||||
<td>{{ $entry->message }}</td>
|
|
||||||
<td><a href="?action=delete&id={{ $entry->id }}"><button>Delete</button></a></td>
|
|
||||||
</tr>
|
|
||||||
@endforeach
|
|
||||||
</table>
|
|
||||||
</div>
|
|
||||||
</x-layout>
|
|
|
@ -1,12 +0,0 @@
|
||||||
<x-layout>
|
|
||||||
<x-slot:title>Admin | Import</x-slot:title>
|
|
||||||
<div class="info-section">
|
|
||||||
<h2>Imported data</h2>
|
|
||||||
<hr>
|
|
||||||
<ul>
|
|
||||||
@foreach($tables as $name => $data)
|
|
||||||
<li><strong>{{ ucwords(str_replace('__', ' ', $name)) }}:</strong> {{ $data['count'] }} record(s)</li>
|
|
||||||
@endforeach
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
</x-layout>
|
|
|
@ -1,18 +0,0 @@
|
||||||
<x-layout>
|
|
||||||
<x-slot:title>Admin | Import</x-slot:title>
|
|
||||||
<form class="import" action="{{ route('admin.import.submit') }}" method="post" enctype="multipart/form-data">
|
|
||||||
@csrf
|
|
||||||
<label for="data_file"><strong>File:</strong></label>
|
|
||||||
<input class="file" type="file" name="data_file" accept=".json"><br>
|
|
||||||
<h2>What to import:</h2>
|
|
||||||
<input type="checkbox" name="guestbook__entries" checked>
|
|
||||||
<label for="guestbook__entries">Guestbook Entries</label><br>
|
|
||||||
<input type="checkbox" name="guestbook__bans" checked>
|
|
||||||
<label for="guestbook__bans">Guestbook Bans</label><br>
|
|
||||||
<input type="checkbox" name="guestbook__entries" checked>
|
|
||||||
<label for="bookmark__categories">Bookmark Categories</label><br>
|
|
||||||
<input type="checkbox" name="guestbook__entries" checked>
|
|
||||||
<label for="bookmark_sites">Bookmark Sites</label><br>
|
|
||||||
<button type="submit">Import</button>
|
|
||||||
</form>
|
|
||||||
</x-layout>
|
|
Loading…
Reference in a new issue