Jelajahi Sumber

三藏分类页支持 channel 过滤,切换分类时保留 channel 参数

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
visuddhinanda 3 hari lalu
induk
melakukan
ea782ef291

+ 7 - 0
api-v13/app/Http/Controllers/Library/TipitakaController.php

@@ -6,6 +6,7 @@ use App\Http\Controllers\Controller;
 use Illuminate\Http\Request;
 use Illuminate\Http\Request;
 use Illuminate\Support\Facades\Cookie;
 use Illuminate\Support\Facades\Cookie;
 use Illuminate\Support\Facades\File;
 use Illuminate\Support\Facades\File;
+use Illuminate\Support\Str;
 use Illuminate\Support\Facades\Log;
 use Illuminate\Support\Facades\Log;
 
 
 
 
@@ -118,6 +119,7 @@ class TipitakaController extends Controller
         $selectedLang   = request('lang',   'all');
         $selectedLang   = request('lang',   'all');
         $selectedAuthor = request('author', 'all');
         $selectedAuthor = request('author', 'all');
         $selectedSort   = request('sort',   'new');
         $selectedSort   = request('sort',   'new');
+        $selectedChannel   = request('channel',   'all');
 
 
         $sortList = [
         $sortList = [
             ['key' => 'new',         'label' => __('library.badge_updated'),],
             ['key' => 'new',         'label' => __('library.badge_updated'),],
@@ -129,6 +131,7 @@ class TipitakaController extends Controller
             'lang'   => $selectedLang,
             'lang'   => $selectedLang,
             'author' => $selectedAuthor,
             'author' => $selectedAuthor,
             'sort'   => $selectedSort,
             'sort'   => $selectedSort,
+            'channel' => $selectedChannel,
         ];
         ];
         if ($request->has('book')) {
         if ($request->has('book')) {
             $selected['book'] = $request->input('book');
             $selected['book'] = $request->input('book');
@@ -316,6 +319,10 @@ class TipitakaController extends Controller
                 if ($filters['lang'] !== 'all') {
                 if ($filters['lang'] !== 'all') {
                     $query->where('lang', $filters['lang']);
                     $query->where('lang', $filters['lang']);
                 }
                 }
+
+                if ($filters['channel'] !== 'all' && Str::isUuid($filters['channel'])) {
+                    $query->where('uid', $filters['channel']);
+                }
             })
             })
             ->whereNotNull('last_chapter_completed_at')
             ->whereNotNull('last_chapter_completed_at')
             ->whereIns(['book', 'para'], $chapters);
             ->whereIns(['book', 'para'], $chapters);

+ 4 - 4
api-v13/resources/views/library/tipitaka/category.blade.php

@@ -23,7 +23,7 @@
 <li class="breadcrumb-item active">{{ $breadcrumb['name'] }}</li>
 <li class="breadcrumb-item active">{{ $breadcrumb['name'] }}</li>
 @else
 @else
 <li class="breadcrumb-item">
 <li class="breadcrumb-item">
-    <a href="{{ route('library.tipitaka.category', ['id' => $breadcrumb['id']]) }}">
+    <a href="{{ route('library.tipitaka.category', array_filter(['id' => $breadcrumb['id'], 'channel' => request('channel')])) }}">
         {{ $breadcrumb['name'] }}
         {{ $breadcrumb['name'] }}
     </a>
     </a>
 </li>
 </li>
@@ -48,14 +48,14 @@
                 <div class="wiki-sidebar-title">{{ __('library.categories') }}</div>
                 <div class="wiki-sidebar-title">{{ __('library.categories') }}</div>
                 <ul class="wiki-cat-list">
                 <ul class="wiki-cat-list">
                     <li>
                     <li>
-                        <a href="{{ route('library.tipitaka.index') }}"
+                        <a href="{{ route('library.tipitaka.index', array_filter(['channel' => request('channel')])) }}"
                             class="{{ !$currentCategory['id'] ? 'active' : '' }}">
                             class="{{ !$currentCategory['id'] ? 'active' : '' }}">
                             {{ __('library.all') }}
                             {{ __('library.all') }}
                         </a>
                         </a>
                     </li>
                     </li>
                     @foreach($types as $type)
                     @foreach($types as $type)
                     <li>
                     <li>
-                        <a href="{{ route('library.tipitaka.category', ['id' => $type['id']]) }}"
+                        <a href="{{ route('library.tipitaka.category', array_filter(['id' => $type['id'], 'channel' => request('channel')])) }}"
                             class="{{ ($currentCategory['id'] ?? null) == $type['id'] ? 'active' : '' }}">
                             class="{{ ($currentCategory['id'] ?? null) == $type['id'] ? 'active' : '' }}">
                             {{ $type['name'] }}
                             {{ $type['name'] }}
                         </a>
                         </a>
@@ -150,7 +150,7 @@
             <div class="wiki-card tipitaka-subcategories">
             <div class="wiki-card tipitaka-subcategories">
                 <div class="tipitaka-subcategory-grid">
                 <div class="tipitaka-subcategory-grid">
                     @foreach($subCategories as $sub)
                     @foreach($subCategories as $sub)
-                    <a href="{{ route('library.tipitaka.category', array_filter(['id' => $sub['id'], 'book' => $sub['book'] ?? null])) }}"
+                    <a href="{{ route('library.tipitaka.category', array_filter(['id' => $sub['id'], 'book' => $sub['book'] ?? null, 'channel' => request('channel')])) }}"
                         class="tipitaka-subcategory-item">
                         class="tipitaka-subcategory-item">
                         <i class="ti {{ !empty($sub['book']) ? 'ti-book' : 'ti-folder' }} tipitaka-subcategory-icon" aria-hidden="true"></i>
                         <i class="ti {{ !empty($sub['book']) ? 'ti-book' : 'ti-folder' }} tipitaka-subcategory-icon" aria-hidden="true"></i>
                         <span class="tipitaka-subcategory-name">{{ $sub['name'] }}</span>
                         <span class="tipitaka-subcategory-name">{{ $sub['name'] }}</span>