feat: restore sablog browse modes and clean imported HTML
Keep the public site readable after import (nbsp, highlighter, wrapping code, compact pager) and finish the admin extras already in this tree: sticky levels, preview, page cache, and live llms.txt. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -0,0 +1,69 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace App\Blog\Support;
|
||||
|
||||
use Illuminate\Http\Request;
|
||||
|
||||
/**
|
||||
* Homepage / list browse mode, matching old SaBlog 标准 | 列表.
|
||||
*/
|
||||
class HomeViewMode
|
||||
{
|
||||
public const LIST = 'list';
|
||||
|
||||
public const FULL = 'full';
|
||||
|
||||
public const COOKIE = 'll_home_view';
|
||||
|
||||
/**
|
||||
* @return array<string, string>
|
||||
*/
|
||||
public static function options(): array
|
||||
{
|
||||
return [
|
||||
self::LIST => '列表',
|
||||
self::FULL => '标准',
|
||||
];
|
||||
}
|
||||
|
||||
public static function isValid(mixed $value): bool
|
||||
{
|
||||
return is_string($value) && in_array($value, [self::LIST, self::FULL], true);
|
||||
}
|
||||
|
||||
public static function resolve(?Request $request = null): string
|
||||
{
|
||||
$request ??= request();
|
||||
|
||||
foreach ([
|
||||
$request->query('view'),
|
||||
$request->cookie(self::COOKIE),
|
||||
blog_setting('home_view_mode', config('blog.home_view_mode', self::LIST)),
|
||||
] as $value) {
|
||||
if (self::isValid($value)) {
|
||||
return $value;
|
||||
}
|
||||
}
|
||||
|
||||
return self::LIST;
|
||||
}
|
||||
|
||||
public static function current(): string
|
||||
{
|
||||
$request = request();
|
||||
$mode = self::resolve($request);
|
||||
|
||||
if (self::isValid($request->query('view'))) {
|
||||
cookie()->queue(cookie(self::COOKIE, (string) $request->query('view'), 60 * 24 * 30));
|
||||
}
|
||||
|
||||
return $mode;
|
||||
}
|
||||
|
||||
public static function url(string $mode): string
|
||||
{
|
||||
return request()->fullUrlWithQuery(['view' => $mode]);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user