diff --git a/app/Http/Controllers/ArticleController.php b/app/Http/Controllers/ArticleController.php index 5b0e29be..431c50cd 100644 --- a/app/Http/Controllers/ArticleController.php +++ b/app/Http/Controllers/ArticleController.php @@ -11,13 +11,6 @@ class ArticleController extends Controller { - public function index(Request $request): View - { - $articles = Article::getPaginated($request); - - return view('frontend.articles.index', compact('articles')); - } - public function show(string $slug): mixed { $article = Article::query() diff --git a/app/Livewire/Backend/Article/Index.php b/app/Livewire/Backend/Article/Index.php index 257c2fac..050f2fdb 100644 --- a/app/Livewire/Backend/Article/Index.php +++ b/app/Livewire/Backend/Article/Index.php @@ -6,10 +6,12 @@ use Illuminate\Contracts\View\View; use Illuminate\Database\Eloquent\Builder; use Illuminate\Support\Facades\Auth; +use Livewire\Attributes\Lazy; use Livewire\Attributes\Url; use Livewire\Component; use Livewire\WithPagination; +#[Lazy] class Index extends Component { use WithPagination; diff --git a/app/Providers/ViewServiceProvider.php b/app/Providers/ViewServiceProvider.php index 6cf541d8..19744b73 100644 --- a/app/Providers/ViewServiceProvider.php +++ b/app/Providers/ViewServiceProvider.php @@ -23,6 +23,6 @@ public function register(): void public function boot(): void { View::composer(['livewire/backend/*'], CategoriesComposer::class); - View::composer(['components/backend', 'components/frontend', 'emails/*'], GlobalConfigComposer::class); + View::composer(['components/layouts/*', 'emails/*'], GlobalConfigComposer::class); } } diff --git a/config/livewire.php b/config/livewire.php new file mode 100644 index 00000000..a72e8708 --- /dev/null +++ b/config/livewire.php @@ -0,0 +1,160 @@ + 'App\\Livewire', + + /* + |--------------------------------------------------------------------------- + | View Path + |--------------------------------------------------------------------------- + | + | This value is used to specify where Livewire component Blade templates are + | stored when running file creation commands like `artisan make:livewire`. + | It is also used if you choose to omit a component's render() method. + | + */ + + 'view_path' => resource_path('views/livewire'), + + /* + |--------------------------------------------------------------------------- + | Layout + |--------------------------------------------------------------------------- + | The view that will be used as the layout when rendering a single component + | as an entire page via `Route::get('/post/create', CreatePost::class);`. + | In this case, the view returned by CreatePost will render into $slot. + | + */ + + 'layout' => 'components.layouts.backend', + + /* + |--------------------------------------------------------------------------- + | Lazy Loading Placeholder + |--------------------------------------------------------------------------- + | Livewire allows you to lazy load components that would otherwise slow down + | the initial page load. Every component can have a custom placeholder or + | you can define the default placeholder view for all components below. + | + */ + + 'lazy_placeholder' => null, + + /* + |--------------------------------------------------------------------------- + | Temporary File Uploads + |--------------------------------------------------------------------------- + | + | Livewire handles file uploads by storing uploads in a temporary directory + | before the file is stored permanently. All file uploads are directed to + | a global endpoint for temporary storage. You may configure this below: + | + */ + + 'temporary_file_upload' => [ + 'disk' => null, // Example: 'local', 's3' | Default: 'default' + 'rules' => null, // Example: ['file', 'mimes:png,jpg'] | Default: ['required', 'file', 'max:12288'] (12MB) + 'directory' => null, // Example: 'tmp' | Default: 'livewire-tmp' + 'middleware' => null, // Example: 'throttle:5,1' | Default: 'throttle:60,1' + 'preview_mimes' => [ // Supported file types for temporary pre-signed file URLs... + 'png', 'gif', 'bmp', 'svg', 'wav', 'mp4', + 'mov', 'avi', 'wmv', 'mp3', 'm4a', + 'jpg', 'jpeg', 'mpga', 'webp', 'wma', + ], + 'max_upload_time' => 5, // Max duration (in minutes) before an upload is invalidated... + 'cleanup' => true, // Should cleanup temporary uploads older than 24 hrs... + ], + + /* + |--------------------------------------------------------------------------- + | Render On Redirect + |--------------------------------------------------------------------------- + | + | This value determines if Livewire will run a component's `render()` method + | after a redirect has been triggered using something like `redirect(...)` + | Setting this to true will render the view once more before redirecting + | + */ + + 'render_on_redirect' => false, + + /* + |--------------------------------------------------------------------------- + | Eloquent Model Binding + |--------------------------------------------------------------------------- + | + | Previous versions of Livewire supported binding directly to eloquent model + | properties using wire:model by default. However, this behavior has been + | deemed too "magical" and has therefore been put under a feature flag. + | + */ + + 'legacy_model_binding' => false, + + /* + |--------------------------------------------------------------------------- + | Auto-inject Frontend Assets + |--------------------------------------------------------------------------- + | + | By default, Livewire automatically injects its JavaScript and CSS into the + | and of pages containing Livewire components. By disabling + | this behavior, you need to use @livewireStyles and @livewireScripts. + | + */ + + 'inject_assets' => true, + + /* + |--------------------------------------------------------------------------- + | Navigate (SPA mode) + |--------------------------------------------------------------------------- + | + | By adding `wire:navigate` to links in your Livewire application, Livewire + | will prevent the default link handling and instead request those pages + | via AJAX, creating an SPA-like effect. Configure this behavior here. + | + */ + + 'navigate' => [ + 'show_progress_bar' => true, + 'progress_bar_color' => '#2299dd', + ], + + /* + |--------------------------------------------------------------------------- + | HTML Morph Markers + |--------------------------------------------------------------------------- + | + | Livewire intelligently "morphs" existing HTML into the newly rendered HTML + | after each update. To make this process more reliable, Livewire injects + | "markers" into the rendered Blade surrounding @if, @class & @foreach. + | + */ + + 'inject_morph_markers' => true, + + /* + |--------------------------------------------------------------------------- + | Pagination Theme + |--------------------------------------------------------------------------- + | + | When enabling Livewire's pagination feature by using the `WithPagination` + | trait, Livewire will use Tailwind templates to render pagination views + | on the page. If you want Bootstrap CSS, you can specify: "bootstrap" + | + */ + + 'pagination_theme' => 'tailwind', +]; diff --git a/resources/views/backend/articles/create.blade.php b/resources/views/backend/articles/create.blade.php index 221eb511..e3c198b9 100644 --- a/resources/views/backend/articles/create.blade.php +++ b/resources/views/backend/articles/create.blade.php @@ -1,3 +1,3 @@ - + - + diff --git a/resources/views/backend/articles/edit.blade.php b/resources/views/backend/articles/edit.blade.php index 7b9d1927..87155c09 100644 --- a/resources/views/backend/articles/edit.blade.php +++ b/resources/views/backend/articles/edit.blade.php @@ -1,3 +1,3 @@ - + - + diff --git a/resources/views/backend/articles/index.blade.php b/resources/views/backend/articles/index.blade.php deleted file mode 100644 index 68628553..00000000 --- a/resources/views/backend/articles/index.blade.php +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/views/backend/auth.blade.php b/resources/views/backend/auth.blade.php index 0e35b7d8..c9b23d8a 100644 --- a/resources/views/backend/auth.blade.php +++ b/resources/views/backend/auth.blade.php @@ -1,4 +1,4 @@ - +
@@ -33,4 +33,4 @@ class="text-slate-700 underline decoration-dotted hover:decoration-solid hover:t
-
+ diff --git a/resources/views/backend/categories/index.blade.php b/resources/views/backend/categories/index.blade.php index 19ee7735..b240977f 100644 --- a/resources/views/backend/categories/index.blade.php +++ b/resources/views/backend/categories/index.blade.php @@ -1,3 +1,3 @@ - + - + diff --git a/resources/views/backend/comments/edit.blade.php b/resources/views/backend/comments/edit.blade.php index 1b8aa822..a7507917 100644 --- a/resources/views/backend/comments/edit.blade.php +++ b/resources/views/backend/comments/edit.blade.php @@ -1,3 +1,3 @@ - + - + diff --git a/resources/views/backend/comments/index.blade.php b/resources/views/backend/comments/index.blade.php index d70a134e..a9be6c96 100644 --- a/resources/views/backend/comments/index.blade.php +++ b/resources/views/backend/comments/index.blade.php @@ -1,3 +1,3 @@ - + - + diff --git a/resources/views/backend/comments/show.blade.php b/resources/views/backend/comments/show.blade.php index a3c7d093..57da2403 100644 --- a/resources/views/backend/comments/show.blade.php +++ b/resources/views/backend/comments/show.blade.php @@ -1,3 +1,3 @@ - + - + diff --git a/resources/views/backend/config/index.blade.php b/resources/views/backend/config/index.blade.php index d513a294..f6ed703a 100644 --- a/resources/views/backend/config/index.blade.php +++ b/resources/views/backend/config/index.blade.php @@ -1,3 +1,3 @@ - + - + diff --git a/resources/views/backend/dashboard.blade.php b/resources/views/backend/dashboard.blade.php index 91426e00..a0ff8774 100644 --- a/resources/views/backend/dashboard.blade.php +++ b/resources/views/backend/dashboard.blade.php @@ -1,3 +1,3 @@ - + - + diff --git a/resources/views/backend/feedback/index.blade.php b/resources/views/backend/feedback/index.blade.php index b51893b9..007dd21e 100644 --- a/resources/views/backend/feedback/index.blade.php +++ b/resources/views/backend/feedback/index.blade.php @@ -1,3 +1,3 @@ - + - + diff --git a/resources/views/backend/keywords/index.blade.php b/resources/views/backend/keywords/index.blade.php index c409db34..a8b617ca 100644 --- a/resources/views/backend/keywords/index.blade.php +++ b/resources/views/backend/keywords/index.blade.php @@ -1,3 +1,3 @@ - + - + diff --git a/resources/views/backend/subscribers/index.blade.php b/resources/views/backend/subscribers/index.blade.php index ab436b52..94c4e2f0 100644 --- a/resources/views/backend/subscribers/index.blade.php +++ b/resources/views/backend/subscribers/index.blade.php @@ -1,3 +1,3 @@ - + - + diff --git a/resources/views/backend/users/create.blade.php b/resources/views/backend/users/create.blade.php index d36fe3b5..a26d94b7 100644 --- a/resources/views/backend/users/create.blade.php +++ b/resources/views/backend/users/create.blade.php @@ -1,3 +1,3 @@ - + - + diff --git a/resources/views/backend/users/edit.blade.php b/resources/views/backend/users/edit.blade.php index 3650698a..1f5c7584 100644 --- a/resources/views/backend/users/edit.blade.php +++ b/resources/views/backend/users/edit.blade.php @@ -1,3 +1,3 @@ - + - + diff --git a/resources/views/backend/users/index.blade.php b/resources/views/backend/users/index.blade.php index c08c2345..74973d1d 100644 --- a/resources/views/backend/users/index.blade.php +++ b/resources/views/backend/users/index.blade.php @@ -1,3 +1,3 @@ - + - + diff --git a/resources/views/backend/users/show.blade.php b/resources/views/backend/users/show.blade.php index 5bc16833..4579c9be 100644 --- a/resources/views/backend/users/show.blade.php +++ b/resources/views/backend/users/show.blade.php @@ -1,4 +1,4 @@ - +
@@ -46,4 +46,4 @@ class="px-2 inline-flex text-xs leading-5 font-semibold rounded-full bg-red-100 @endif
- + diff --git a/resources/views/components/backend.blade.php b/resources/views/components/layouts/backend.blade.php similarity index 100% rename from resources/views/components/backend.blade.php rename to resources/views/components/layouts/backend.blade.php diff --git a/resources/views/components/frontend.blade.php b/resources/views/components/layouts/frontend.blade.php similarity index 100% rename from resources/views/components/frontend.blade.php rename to resources/views/components/layouts/frontend.blade.php diff --git a/routes/backend.php b/routes/backend.php index ddff79aa..73de59b7 100644 --- a/routes/backend.php +++ b/routes/backend.php @@ -9,6 +9,7 @@ use App\Http\Controllers\Backend\KeywordController; use App\Http\Controllers\Backend\SubscriberController; use App\Http\Controllers\UserController; +use App\Livewire\Backend\Article\Index as ArticleIndex; use Illuminate\Support\Facades\Route; Route::group(['middleware' => ['auth', 'role:owner|admin|author']], function () { @@ -19,7 +20,7 @@ Route::get('dashboard', [DashboardController::class, 'index'])->name('admin-dashboard'); //admin articles - Route::get('article', [ArticleController::class, 'index'])->name('backend.article.index'); + Route::get('article', ArticleIndex::class)->name('backend.article.index'); Route::get('article/create', [ArticleController::class, 'create'])->name('backend.article.create'); Route::get('article/{article}/edit', [ArticleController::class, 'edit'])->name('backend.article.edit');