wip: article AI polish, category SEO fields, cover generator, membership plan seeder
This commit is contained in:
@@ -14,12 +14,13 @@ use App\Models\Link;
|
||||
use App\Models\Tag;
|
||||
use App\Settings\BlogSettings;
|
||||
use App\Settings\GeneralSettings;
|
||||
use Illuminate\Http\RedirectResponse;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\View\View;
|
||||
|
||||
class BlogController extends Controller
|
||||
{
|
||||
public function index(Request $request, GeneralSettings $settings, SeoPresenter $seo): View|\Illuminate\Http\RedirectResponse
|
||||
public function index(Request $request, GeneralSettings $settings, SeoPresenter $seo): View|RedirectResponse
|
||||
{
|
||||
// /index.php is often rewritten to / by PHP built-in server / nginx try_files.
|
||||
$action = $request->query('action');
|
||||
@@ -70,6 +71,19 @@ class BlogController extends Controller
|
||||
|
||||
$articles = $query->paginate($perPage)->withQueryString();
|
||||
|
||||
if ($cid) {
|
||||
$category = Category::query()->find($cid);
|
||||
if ($category !== null) {
|
||||
return view('theme::category', [
|
||||
'category' => $category,
|
||||
'articles' => $articles,
|
||||
'categories' => Category::query()->orderBy('display_order')->get(),
|
||||
'settings' => $settings,
|
||||
'seo' => $seo->forCategory($category),
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
||||
return view('theme::home', [
|
||||
'articles' => $articles,
|
||||
'categories' => Category::query()->orderBy('display_order')->get(),
|
||||
@@ -78,7 +92,7 @@ class BlogController extends Controller
|
||||
]);
|
||||
}
|
||||
|
||||
public function bySlug(string $slug, GeneralSettings $settings, SeoPresenter $seo): View|\Illuminate\Http\RedirectResponse
|
||||
public function bySlug(string $slug, GeneralSettings $settings, SeoPresenter $seo): View|RedirectResponse
|
||||
{
|
||||
$article = Article::query()
|
||||
->visible()
|
||||
@@ -89,7 +103,7 @@ class BlogController extends Controller
|
||||
return redirect('/show-'.$article->id.'.shtml', 301);
|
||||
}
|
||||
|
||||
public function show(Request $request, int $id, GeneralSettings $settings, SeoPresenter $seo, ArticleAccess $access): View|\Illuminate\Http\RedirectResponse
|
||||
public function show(Request $request, int $id, GeneralSettings $settings, SeoPresenter $seo, ArticleAccess $access): View|RedirectResponse
|
||||
{
|
||||
$article = Article::query()
|
||||
->with(['category', 'user', 'tags', 'comments' => fn ($q) => $q->visible()->orderBy('published_at')])
|
||||
@@ -151,11 +165,28 @@ class BlogController extends Controller
|
||||
return $this->index($request, app(GeneralSettings::class), app(SeoPresenter::class));
|
||||
}
|
||||
|
||||
public function category(Request $request, int $cid): View
|
||||
public function category(Request $request, int $cid, GeneralSettings $settings, SeoPresenter $seo): View
|
||||
{
|
||||
$request->merge(['cid' => $cid]);
|
||||
$category = Category::query()->findOrFail($cid);
|
||||
$perPage = max(1, (int) app(BlogSettings::class)->posts_per_page);
|
||||
|
||||
return $this->index($request, app(GeneralSettings::class), app(SeoPresenter::class));
|
||||
$articles = Article::query()
|
||||
->with(['category', 'user', 'tags'])
|
||||
->visible()
|
||||
->published()
|
||||
->where('category_id', $category->id)
|
||||
->orderByDesc('stick')
|
||||
->orderByDesc('published_at')
|
||||
->paginate($perPage)
|
||||
->withQueryString();
|
||||
|
||||
return view('theme::category', [
|
||||
'category' => $category,
|
||||
'articles' => $articles,
|
||||
'categories' => Category::query()->orderBy('display_order')->get(),
|
||||
'settings' => $settings,
|
||||
'seo' => $seo->forCategory($category),
|
||||
]);
|
||||
}
|
||||
|
||||
public function tagsList(): View
|
||||
|
||||
Reference in New Issue
Block a user