From 7fdb99cc791ec803f002aee99b8efc89bceb7777 Mon Sep 17 00:00:00 2001 From: Nurmuhammet Allanov Date: Mon, 28 Jul 2025 20:06:11 +0500 Subject: [PATCH] Refactor navigation settings across multiple pages: update navigation groups and labels for HomePageSettings, ManageCtaSettings, ManagePortfolio, ManageSolutions, ManageSuccess, and ManageSite. Introduce solutions data fetching in OurSolutionPageController and enhance header navigation with dynamic solutions list. Update database migration to include new fields for solutions. --- app/Filament/Pages/HomePageSettings.php | 8 +- app/Filament/Pages/ManageCtaSettings.php | 7 +- app/Filament/Pages/ManagePortfolio.php | 4 +- app/Filament/Pages/ManageSite.php | 2 + .../Pages/ManageSiteSocialSettings.php | 2 +- app/Filament/Pages/ManageSolutions.php | 6 +- app/Filament/Pages/ManageSuccess.php | 4 +- app/Filament/Resources/BrandResource.php | 2 +- app/Filament/Resources/SolutionResource.php | 85 +++++++++++++++++++ .../SolutionResource/Pages/CreateSolution.php | 12 +++ .../SolutionResource/Pages/EditSolution.php | 19 +++++ .../SolutionResource/Pages/ListSolutions.php | 19 +++++ .../Controllers/OurSolutionPageController.php | 4 +- app/Providers/AppServiceProvider.php | 12 +++ ...25_07_28_115525_create_solutions_table.php | 3 + .../web/layouts/navigation/header.blade.php | 9 +- 16 files changed, 182 insertions(+), 16 deletions(-) create mode 100644 app/Filament/Resources/SolutionResource.php create mode 100644 app/Filament/Resources/SolutionResource/Pages/CreateSolution.php create mode 100644 app/Filament/Resources/SolutionResource/Pages/EditSolution.php create mode 100644 app/Filament/Resources/SolutionResource/Pages/ListSolutions.php diff --git a/app/Filament/Pages/HomePageSettings.php b/app/Filament/Pages/HomePageSettings.php index d4af328..b6b1c8d 100644 --- a/app/Filament/Pages/HomePageSettings.php +++ b/app/Filament/Pages/HomePageSettings.php @@ -15,6 +15,10 @@ use Illuminate\Contracts\Support\Htmlable; class HomePageSettings extends SettingsPage { + protected static ?string $navigationGroup = 'Home'; + + protected static ?string $navigationIcon = 'heroicon-o-home'; + protected static string $settings = HomeSettings::class; public function form(Form $form): Form @@ -267,12 +271,12 @@ class HomePageSettings extends SettingsPage public static function getNavigationGroup(): ?string { - return __('CMS'); + return __('Home'); } public static function getNavigationLabel(): string { - return __('Home'); + return __('Home Page Settings'); } public function getTitle(): string|Htmlable diff --git a/app/Filament/Pages/ManageCtaSettings.php b/app/Filament/Pages/ManageCtaSettings.php index d9c4233..86bb839 100644 --- a/app/Filament/Pages/ManageCtaSettings.php +++ b/app/Filament/Pages/ManageCtaSettings.php @@ -11,11 +11,16 @@ use Filament\Forms\Components\FileUpload; class ManageCtaSettings extends SettingsPage { protected static ?string $navigationGroup = 'CMS'; - protected static ?string $navigationLabel = 'Call To Action'; + protected static ?string $navigationIcon = 'heroicon-o-megaphone'; protected static string $settings = CtaSettings::class; + public static function getNavigationLabel(): string + { + return 'Call To Action'; + } + public function form(Form $form): Form { return $form diff --git a/app/Filament/Pages/ManagePortfolio.php b/app/Filament/Pages/ManagePortfolio.php index 2687c70..38f2254 100644 --- a/app/Filament/Pages/ManagePortfolio.php +++ b/app/Filament/Pages/ManagePortfolio.php @@ -14,6 +14,8 @@ use Illuminate\Contracts\Support\Htmlable; class ManagePortfolio extends SettingsPage { + protected static ?string $navigationGroup = 'Home'; + protected static ?string $navigationIcon = 'heroicon-o-briefcase'; protected static string $settings = PortfolioSettings::class; @@ -84,7 +86,7 @@ class ManagePortfolio extends SettingsPage public static function getNavigationGroup(): ?string { - return __('CMS'); + return __('Home'); } public static function getNavigationLabel(): string diff --git a/app/Filament/Pages/ManageSite.php b/app/Filament/Pages/ManageSite.php index 15a85e7..e74bbd9 100644 --- a/app/Filament/Pages/ManageSite.php +++ b/app/Filament/Pages/ManageSite.php @@ -10,6 +10,8 @@ use Illuminate\Contracts\Support\Htmlable; class ManageSite extends SettingsPage { + protected static ?string $navigationGroup = 'Settings'; + protected static ?string $navigationIcon = 'heroicon-o-globe-alt'; protected static string $settings = SiteSettings::class; diff --git a/app/Filament/Pages/ManageSiteSocialSettings.php b/app/Filament/Pages/ManageSiteSocialSettings.php index d601a4c..c3e3c1f 100644 --- a/app/Filament/Pages/ManageSiteSocialSettings.php +++ b/app/Filament/Pages/ManageSiteSocialSettings.php @@ -10,7 +10,7 @@ use Illuminate\Contracts\Support\Htmlable; class ManageSiteSocialSettings extends SettingsPage { - protected static ?int $navigationSort = 4; + protected static ?string $navigationGroup = 'Settings'; protected static ?string $navigationIcon = 'heroicon-o-share'; diff --git a/app/Filament/Pages/ManageSolutions.php b/app/Filament/Pages/ManageSolutions.php index 99c214c..92c68ee 100644 --- a/app/Filament/Pages/ManageSolutions.php +++ b/app/Filament/Pages/ManageSolutions.php @@ -15,6 +15,8 @@ use Illuminate\Contracts\Support\Htmlable; class ManageSolutions extends SettingsPage { + protected static ?string $navigationGroup = 'Home'; + protected static ?string $navigationIcon = 'heroicon-o-wrench-screwdriver'; protected static string $settings = SolutionSettings::class; @@ -352,12 +354,12 @@ class ManageSolutions extends SettingsPage public static function getNavigationGroup(): ?string { - return __('CMS'); + return __('Home'); } public static function getNavigationLabel(): string { - return __('Solutions'); + return __('Manage Solutions'); } public function getTitle(): string|Htmlable diff --git a/app/Filament/Pages/ManageSuccess.php b/app/Filament/Pages/ManageSuccess.php index 5f0aaa7..5692367 100644 --- a/app/Filament/Pages/ManageSuccess.php +++ b/app/Filament/Pages/ManageSuccess.php @@ -15,6 +15,8 @@ use Illuminate\Contracts\Support\Htmlable; class ManageSuccess extends SettingsPage { + protected static ?string $navigationGroup = 'Home'; + protected static ?string $navigationIcon = 'heroicon-o-check-circle'; protected static string $settings = SuccessSettings::class; @@ -89,7 +91,7 @@ class ManageSuccess extends SettingsPage public static function getNavigationGroup(): ?string { - return __('CMS'); + return __('Home'); } public static function getNavigationLabel(): string diff --git a/app/Filament/Resources/BrandResource.php b/app/Filament/Resources/BrandResource.php index 3bdd5ec..2a61224 100644 --- a/app/Filament/Resources/BrandResource.php +++ b/app/Filament/Resources/BrandResource.php @@ -19,7 +19,7 @@ class BrandResource extends Resource { protected static ?string $model = Brand::class; - protected static ?string $navigationIcon = 'heroicon-o-rectangle-stack'; + protected static ?string $navigationIcon = 'heroicon-o-tag'; public static function form(Form $form): Form { diff --git a/app/Filament/Resources/SolutionResource.php b/app/Filament/Resources/SolutionResource.php new file mode 100644 index 0000000..41811f8 --- /dev/null +++ b/app/Filament/Resources/SolutionResource.php @@ -0,0 +1,85 @@ +schema([ + Forms\Components\TextInput::make('title') + ->required() + ->maxLength(255), + Forms\Components\TextInput::make('slug') + ->required() + ->maxLength(255), + Forms\Components\RichEditor::make('description') + ->required() + ->columnSpanFull(), + ]); + } + + public static function table(Table $table): Table + { + return $table + ->columns([ + Tables\Columns\TextColumn::make('title') + ->searchable(), + Tables\Columns\TextColumn::make('slug') + ->searchable(), + Tables\Columns\TextColumn::make('created_at') + ->dateTime() + ->sortable() + ->toggleable(isToggledHiddenByDefault: true), + Tables\Columns\TextColumn::make('updated_at') + ->dateTime() + ->sortable() + ->toggleable(isToggledHiddenByDefault: true), + ]) + ->filters([ + // + ]) + ->actions([ + Tables\Actions\EditAction::make(), + ]) + ->bulkActions([ + Tables\Actions\BulkActionGroup::make([ + Tables\Actions\DeleteBulkAction::make(), + ]), + ]); + } + + public static function getRelations(): array + { + return [ + // + ]; + } + + public static function getPages(): array + { + return [ + 'index' => Pages\ListSolutions::route('/'), + 'create' => Pages\CreateSolution::route('/create'), + 'edit' => Pages\EditSolution::route('/{record}/edit'), + ]; + } +} \ No newline at end of file diff --git a/app/Filament/Resources/SolutionResource/Pages/CreateSolution.php b/app/Filament/Resources/SolutionResource/Pages/CreateSolution.php new file mode 100644 index 0000000..539c6db --- /dev/null +++ b/app/Filament/Resources/SolutionResource/Pages/CreateSolution.php @@ -0,0 +1,12 @@ +addSettingsToViews(); + $this->addSolutionsToViews(); // logDB(); } @@ -41,4 +43,14 @@ class AppServiceProvider extends ServiceProvider $view->with('socialMedia', app(SiteSocialSettings::class)); }); } + + /** + * Add solutions to views + */ + public function addSolutionsToViews(): void + { + ViewFacade::composer(['web.layouts.navigation.header'], function (View $view) { + $view->with('solutions', Solution::query()->latest()->get()); + }); + } } diff --git a/database/migrations/2025_07_28_115525_create_solutions_table.php b/database/migrations/2025_07_28_115525_create_solutions_table.php index e78a1e1..4d36947 100644 --- a/database/migrations/2025_07_28_115525_create_solutions_table.php +++ b/database/migrations/2025_07_28_115525_create_solutions_table.php @@ -13,6 +13,9 @@ return new class extends Migration { Schema::create('solutions', function (Blueprint $table) { $table->id(); + $table->string('title'); + $table->text('description'); + $table->string('slug')->unique(); $table->timestamps(); }); } diff --git a/resources/views/web/layouts/navigation/header.blade.php b/resources/views/web/layouts/navigation/header.blade.php index be0d11e..e6e8ffd 100644 --- a/resources/views/web/layouts/navigation/header.blade.php +++ b/resources/views/web/layouts/navigation/header.blade.php @@ -20,12 +20,9 @@