Add the page for tagged bookmarks

This commit is contained in:
Jonny Barnes 2022-08-14 17:56:21 +01:00
parent e23ba75021
commit a0954bc936
Signed by: jonny
SSH key fingerprint: SHA256:CTuSlns5U7qlD9jqHvtnVmfYV3Zwl2Z7WnJ4/dqOaL8
3 changed files with 63 additions and 0 deletions

View file

@ -33,4 +33,19 @@ class BookmarksController extends Controller
return view('bookmarks.show', compact('bookmark'));
}
/**
* Show bookmakrs tagged with a specific tag.
*
* @param string $tag
* @return View
*/
public function tagged(string $tag): View
{
$bookmarks = Bookmark::whereHas('tags', function ($query) use ($tag) {
$query->where('tag', $tag);
})->latest()->with('tags')->withCount('tags')->paginate(10);
return view('bookmarks.tagged', compact('bookmarks', 'tag'));
}
}

View file

@ -0,0 +1,47 @@
@extends('master')
@section('title')Bookmarks « @stop
@section('content')
<div class="h-feed">
<h1>Bookmarks tagged with {{ $tag }}</h1>
@foreach($bookmarks as $bookmark)
<div class="h-entry">
<div class="bookmark-link">
<a class="u-bookmark-of<?php if ($bookmark->name !== null) { echo ' h-cite'; } ?>" href="{{ $bookmark->url }}">
@isset($bookmark->name)
{{ $bookmark->name }}
@endisset
@empty($bookmark->name)
{{ $bookmark->url }}
@endempty
</a> &nbsp; <a href="{{ $bookmark->longurl }}">🔗</a>
</div>
@isset($bookmark->content)
<p>{{ $bookmark->content }}</p>
@endisset
@isset($bookmark->screenshot)
<img class="screenshot" src="/assets/img/bookmarks/{{ $bookmark->screenshot }}.png">
@endisset
@isset($bookmark->archive)
<p><a href="https://web.archive.org{{ $bookmark->archive }}">Internet Archive backup</a></p>
@endisset
@if($bookmark->tags_count > 0)
<ul class="tags">
@foreach($bookmark->tags as $tag)
<li>
<a href="/bookmarks/tagged/{{ $tag->tag }}" class="tag">{{ $tag->tag }}</a>
</li>
@endforeach
</ul>
@endif
</div>
@endforeach
</div>
{{ $bookmarks->links() }}
@stop

View file

@ -158,6 +158,7 @@ Route::group(['domain' => config('url.longurl')], function () {
Route::group(['prefix' => 'bookmarks'], function () {
Route::get('/', [BookmarksController::class, 'index']);
Route::get('/{bookmark}', [BookmarksController::class, 'show']);
Route::get('/tagged/{tag}', [BookmarksController::class, 'tagged']);
});
// Token Endpoint