Add About Section to HomePageSettings and update HomePageController to include brand data. Modify HomeSettings to store new about section fields and update the homepage view to display these settings.
This commit is contained in:
@@ -7,6 +7,7 @@ use Filament\Forms\Components\Grid;
|
|||||||
use Filament\Forms\Components\Section;
|
use Filament\Forms\Components\Section;
|
||||||
use Filament\Forms\Components\TextInput;
|
use Filament\Forms\Components\TextInput;
|
||||||
use Filament\Forms\Components\Textarea;
|
use Filament\Forms\Components\Textarea;
|
||||||
|
use Filament\Forms\Components\FileUpload;
|
||||||
use Filament\Forms\Form;
|
use Filament\Forms\Form;
|
||||||
use Filament\Pages\Page;
|
use Filament\Pages\Page;
|
||||||
use Filament\Pages\SettingsPage;
|
use Filament\Pages\SettingsPage;
|
||||||
@@ -48,6 +49,78 @@ class HomePageSettings extends SettingsPage
|
|||||||
])->columns(2),
|
])->columns(2),
|
||||||
]),
|
]),
|
||||||
|
|
||||||
|
Section::make('About Section')
|
||||||
|
->description('Manage the about section content on the homepage.')
|
||||||
|
->icon('heroicon-o-building-office-2')
|
||||||
|
->schema([
|
||||||
|
TextInput::make('about_subtitle')
|
||||||
|
->label('About Subtitle')
|
||||||
|
->maxLength(100),
|
||||||
|
TextInput::make('about_header')
|
||||||
|
->label('About Header')
|
||||||
|
->required()
|
||||||
|
->maxLength(255),
|
||||||
|
Textarea::make('about_paragraph')
|
||||||
|
->label('About Paragraph')
|
||||||
|
->rows(5)
|
||||||
|
->maxLength(65535),
|
||||||
|
Grid::make()->schema([
|
||||||
|
TextInput::make('about_projects_text')
|
||||||
|
->label('Projects Text')
|
||||||
|
->maxLength(100),
|
||||||
|
|
||||||
|
TextInput::make('about_projects_number')
|
||||||
|
->label('Projects Number')
|
||||||
|
->numeric(),
|
||||||
|
|
||||||
|
])->columns(2),
|
||||||
|
Grid::make()->schema([
|
||||||
|
TextInput::make('about_members_text')
|
||||||
|
->label('Members Text')
|
||||||
|
->maxLength(100),
|
||||||
|
|
||||||
|
TextInput::make('about_members_number')
|
||||||
|
->label('Members Number')
|
||||||
|
->numeric(),
|
||||||
|
|
||||||
|
])->columns(2),
|
||||||
|
Grid::make()->schema([
|
||||||
|
|
||||||
|
TextInput::make('about_reviews_text')
|
||||||
|
->label('Reviews Text')
|
||||||
|
->maxLength(100),
|
||||||
|
|
||||||
|
TextInput::make('about_reviews_number')
|
||||||
|
->label('Reviews Number')
|
||||||
|
->numeric(),
|
||||||
|
|
||||||
|
])->columns(2),
|
||||||
|
Grid::make()->schema([
|
||||||
|
TextInput::make('about_button_text')
|
||||||
|
->label('About Button Text')
|
||||||
|
->maxLength(50),
|
||||||
|
TextInput::make('about_button_url')
|
||||||
|
->label('About Button URL')
|
||||||
|
->maxLength(255)
|
||||||
|
->url(),
|
||||||
|
])->columns(2),
|
||||||
|
|
||||||
|
Grid::make()->schema([
|
||||||
|
FileUpload::make('about_image_one')
|
||||||
|
->label('About Image One (245x410)')
|
||||||
|
->image()
|
||||||
|
->maxSize(2048)
|
||||||
|
->disk('public')
|
||||||
|
->directory('about-images'),
|
||||||
|
FileUpload::make('about_image_two')
|
||||||
|
->label('About Image Two (375x391)')
|
||||||
|
->image()
|
||||||
|
->maxSize(2048)
|
||||||
|
->disk('public')
|
||||||
|
->directory('about-images'),
|
||||||
|
])->columns(2),
|
||||||
|
]),
|
||||||
|
|
||||||
Section::make('Background Video')
|
Section::make('Background Video')
|
||||||
->description('Upload or link the background video for the hero section.')
|
->description('Upload or link the background video for the hero section.')
|
||||||
->icon('heroicon-o-camera')
|
->icon('heroicon-o-camera')
|
||||||
|
|||||||
@@ -2,12 +2,16 @@
|
|||||||
|
|
||||||
namespace App\Http\Controllers;
|
namespace App\Http\Controllers;
|
||||||
|
|
||||||
|
use App\Models\Brand;
|
||||||
use App\Settings\HomeSettings;
|
use App\Settings\HomeSettings;
|
||||||
|
|
||||||
class HomePageController extends Controller
|
class HomePageController extends Controller
|
||||||
{
|
{
|
||||||
public function index()
|
public function index()
|
||||||
{
|
{
|
||||||
return view('web.pages.home.index');
|
$brands = Brand::query()->get(['id', 'image']);
|
||||||
|
$homeSettings = app(HomeSettings::class);
|
||||||
|
|
||||||
|
return view('web.pages.home.index', compact('homeSettings', 'brands'));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -42,12 +42,5 @@ class AppServiceProvider extends ServiceProvider
|
|||||||
$view->with('settings', app(SiteSettings::class));
|
$view->with('settings', app(SiteSettings::class));
|
||||||
$view->with('socialMedia', app(SiteSocialSettings::class));
|
$view->with('socialMedia', app(SiteSocialSettings::class));
|
||||||
});
|
});
|
||||||
|
|
||||||
ViewFacade::composer('web.pages.home.index', function (View $view) {
|
|
||||||
$brands = Brand::query()->get(['id', 'image']);
|
|
||||||
|
|
||||||
$view->with('homepage', app(HomeSettings::class));
|
|
||||||
$view->with('brands', $brands);
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -18,6 +18,32 @@ class HomeSettings extends Settings
|
|||||||
|
|
||||||
public string $hero_link_button_text;
|
public string $hero_link_button_text;
|
||||||
|
|
||||||
|
public string $about_subtitle;
|
||||||
|
|
||||||
|
public string $about_header;
|
||||||
|
|
||||||
|
public string $about_paragraph;
|
||||||
|
|
||||||
|
public int $about_projects_number;
|
||||||
|
|
||||||
|
public string $about_projects_text;
|
||||||
|
|
||||||
|
public int $about_members_number;
|
||||||
|
|
||||||
|
public string $about_members_text;
|
||||||
|
|
||||||
|
public int $about_reviews_number;
|
||||||
|
|
||||||
|
public string $about_reviews_text;
|
||||||
|
|
||||||
|
public string $about_button_text;
|
||||||
|
|
||||||
|
public string $about_button_url;
|
||||||
|
|
||||||
|
public string $about_image_one;
|
||||||
|
|
||||||
|
public string $about_image_two;
|
||||||
|
|
||||||
public static function group(): string
|
public static function group(): string
|
||||||
{
|
{
|
||||||
return 'cms_homepage';
|
return 'cms_homepage';
|
||||||
|
|||||||
@@ -14,6 +14,7 @@ class DatabaseSeeder extends Seeder
|
|||||||
public function run(): void
|
public function run(): void
|
||||||
{
|
{
|
||||||
$this->call([
|
$this->call([
|
||||||
|
UsersTableSeeder::class,
|
||||||
BrandTableSeeder::class,
|
BrandTableSeeder::class,
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|||||||
21
database/seeders/UsersTableSeeder.php
Normal file
21
database/seeders/UsersTableSeeder.php
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Database\Seeders;
|
||||||
|
|
||||||
|
use Illuminate\Database\Seeder;
|
||||||
|
use App\Models\User;
|
||||||
|
|
||||||
|
class UsersTableSeeder extends Seeder
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Run the database seeds.
|
||||||
|
*/
|
||||||
|
public function run(): void
|
||||||
|
{
|
||||||
|
User::create([
|
||||||
|
'name' => 'nurmuhammet',
|
||||||
|
'email' => 'nurmuhammet@mail.com',
|
||||||
|
'password' => bcrypt('payload10'),
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -6,11 +6,25 @@ return new class extends SettingsMigration
|
|||||||
{
|
{
|
||||||
public function up(): void
|
public function up(): void
|
||||||
{
|
{
|
||||||
$this->migrator->add('cms_homepage.bg_video', '/web/assets/video/banner.mp4');
|
$this->migrator->add('cms_homepage.bg_video', 'http://127.0.0.1:8000/web/assets/video/banner.mp4');
|
||||||
$this->migrator->add('cms_homepage.hero_badge_text', 'Expert Solutions');
|
$this->migrator->add('cms_homepage.hero_badge_text', 'Expert Solutions');
|
||||||
$this->migrator->add('cms_homepage.hero_header', 'Shaping Future');
|
$this->migrator->add('cms_homepage.hero_header', 'Shaping Future');
|
||||||
$this->migrator->add('cms_homepage.hero_sub_header', 'Architecture');
|
$this->migrator->add('cms_homepage.hero_sub_header', 'Architecture');
|
||||||
$this->migrator->add('cms_homepage.hero_link_button_url', 'http://gujurly.com');
|
$this->migrator->add('cms_homepage.hero_link_button_url', 'http://gujurly.com');
|
||||||
$this->migrator->add('cms_homepage.hero_link_button_text', 'Start today');
|
$this->migrator->add('cms_homepage.hero_link_button_text', 'Start today');
|
||||||
|
|
||||||
|
$this->migrator->add('cms_homepage.about_subtitle', 'About Our Company');
|
||||||
|
$this->migrator->add('cms_homepage.about_header', 'Leading Construction Innovation With Digital Consulting');
|
||||||
|
$this->migrator->add('cms_homepage.about_paragraph', 'We focus on optimizing efficiency, managing risks, and delivering innovative solutions tailored to meet unique project needs and enhance productivity.');
|
||||||
|
$this->migrator->add('cms_homepage.about_projects_number', 678);
|
||||||
|
$this->migrator->add('cms_homepage.about_projects_text', 'Complete Projects');
|
||||||
|
$this->migrator->add('cms_homepage.about_members_number', 120);
|
||||||
|
$this->migrator->add('cms_homepage.about_members_text', 'Team Members');
|
||||||
|
$this->migrator->add('cms_homepage.about_reviews_number', 635);
|
||||||
|
$this->migrator->add('cms_homepage.about_reviews_text', 'Client Reviews');
|
||||||
|
$this->migrator->add('cms_homepage.about_button_text', 'Our Story');
|
||||||
|
$this->migrator->add('cms_homepage.about_button_url', 'http://gujurly.com');
|
||||||
|
$this->migrator->add('cms_homepage.about_image_one', 'http://127.0.0.1:8000/web/assets/img/about/about-5.jpg');
|
||||||
|
$this->migrator->add('cms_homepage.about_image_two', 'http://127.0.0.1:8000/web/assets/img/about/about-6.jpg');
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -5,7 +5,7 @@
|
|||||||
<div class="banner__four">
|
<div class="banner__four">
|
||||||
{{-- BG video --}}
|
{{-- BG video --}}
|
||||||
<div class="bg-video">
|
<div class="bg-video">
|
||||||
<video autoplay muted loop id="myVideo"><source src="{{ $homepage->bg_video }}" type="video/mp4"></video>
|
<video autoplay muted loop id="myVideo"><source src="{{ $homeSettings->bg_video }}" type="video/mp4"></video>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{{-- Hero --}}
|
{{-- Hero --}}
|
||||||
@@ -13,13 +13,13 @@
|
|||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-xl-12">
|
<div class="col-xl-12">
|
||||||
<div class="banner__four-content">
|
<div class="banner__four-content">
|
||||||
<span class="subtitle wow fadeInLeft" data-wow-delay=".4s">{{ $homepage->hero_badge_text }}</span>
|
<span class="subtitle wow fadeInLeft" data-wow-delay=".4s">{{ $homeSettings->hero_badge_text }}</span>
|
||||||
<div class="title_split_anim">
|
<div class="title_split_anim">
|
||||||
<h1>{{ $homepage->hero_header }}</h1>
|
<h1>{{ $homeSettings->hero_header }}</h1>
|
||||||
<h2>{{ $homepage->hero_sub_header }}</h2>
|
<h2>{{ $homeSettings->hero_sub_header }}</h2>
|
||||||
</div>
|
</div>
|
||||||
<div class="item_bounce">
|
<div class="item_bounce">
|
||||||
<a class="build_button" href="{{ $homepage->hero_link_button_url }}">{{ $homepage->hero_link_button_text }}<i class="flaticon-right-up"></i></a>
|
<a class="build_button" href="{{ $homeSettings->hero_link_button_url }}">{{ $homeSettings->hero_link_button_text }}<i class="flaticon-right-up"></i></a>
|
||||||
</div>
|
</div>
|
||||||
<a href="#"><img class="h_rotate" src="/web/assets/img/shape/content.png" alt="image"></a>
|
<a href="#"><img class="h_rotate" src="/web/assets/img/shape/content.png" alt="image"></a>
|
||||||
</div>
|
</div>
|
||||||
@@ -65,16 +65,16 @@
|
|||||||
<div class="row al-center">
|
<div class="row al-center">
|
||||||
<div class="col-lg-3 lg-mb-25">
|
<div class="col-lg-3 lg-mb-25">
|
||||||
<div class="about__four-left wow img_top_animation">
|
<div class="about__four-left wow img_top_animation">
|
||||||
<img src="/web/assets/img/about/about-5.jpg" alt="image">
|
<img src="/storage/{{ $homeSettings->about_image_one }}" alt="image">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-lg-9">
|
<div class="col-lg-9">
|
||||||
<div class="about__four-title">
|
<div class="about__four-title">
|
||||||
<span class="subtitle wow fadeInLeft" data-wow-delay=".4s">About Our Company</span>
|
<span class="subtitle wow fadeInLeft" data-wow-delay=".4s">{{ $homeSettings->about_subtitle }}</span>
|
||||||
<h2 class="title_split_anim mb-20">Leading Construction Innovation With Digital Consulting</h2>
|
<h2 class="title_split_anim mb-20">{{ $homeSettings->about_header }}</h2>
|
||||||
<p class="wow fadeInUp" data-wow-delay=".4s">We focus on optimizing efficiency, managing risks, and delivering innovative solutions tailored to meet unique project needs and enhance productivity.</p>
|
<p class="wow fadeInUp" data-wow-delay=".4s">{{ $homeSettings->about_paragraph }}</p>
|
||||||
<div class="item_bounce">
|
<div class="item_bounce">
|
||||||
<a class="build_button mt-25" href="history.html">Our Story<i class="flaticon-right-up"></i></a>
|
<a class="build_button mt-25" href="{{ $homeSettings->about_button_url }}">{{ $homeSettings->about_button_text }}<i class="flaticon-right-up"></i></a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -86,24 +86,24 @@
|
|||||||
<div class="col-md-4 col-sm-6 wow fadeInUp" data-wow-delay=".4s">
|
<div class="col-md-4 col-sm-6 wow fadeInUp" data-wow-delay=".4s">
|
||||||
<div class="about__four-counter-item">
|
<div class="about__four-counter-item">
|
||||||
<div class="box">
|
<div class="box">
|
||||||
<h2><span class="counter">678</span>+</h2>
|
<h2><span class="counter">{{ $homeSettings->about_projects_number }}</span>+</h2>
|
||||||
<span>Complete Projects</span>
|
<span>{{ $homeSettings->about_projects_text }}</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-md-4 col-sm-6 wow fadeInUp" data-wow-delay=".7s">
|
<div class="col-md-4 col-sm-6 wow fadeInUp" data-wow-delay=".7s">
|
||||||
<div class="about__four-counter-item borders t-center md-t-left">
|
<div class="about__four-counter-item borders t-center md-t-left">
|
||||||
<div class="box">
|
<div class="box">
|
||||||
<h2><span class="counter">120</span>+</h2>
|
<h2><span class="counter">{{ $homeSettings->about_members_number }}</span>+</h2>
|
||||||
<span>Team Members</span>
|
<span>{{ $homeSettings->about_members_text }}</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-md-4 col-sm-6 wow fadeInUp" data-wow-delay="1s">
|
<div class="col-md-4 col-sm-6 wow fadeInUp" data-wow-delay="1s">
|
||||||
<div class="about__four-counter-item t-right md-t-left">
|
<div class="about__four-counter-item t-right md-t-left">
|
||||||
<div class="box">
|
<div class="box">
|
||||||
<h2><span class="counter">635</span>+</h2>
|
<h2><span class="counter">{{ $homeSettings->about_reviews_number }}</span>+</h2>
|
||||||
<span>Client Reviews</span>
|
<span>{{ $homeSettings->about_reviews_text }}</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -112,7 +112,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="col-lg-4 lg-mt-25">
|
<div class="col-lg-4 lg-mt-25">
|
||||||
<div class="about__four-right t-right wow img_right_animation">
|
<div class="about__four-right t-right wow img_right_animation">
|
||||||
<img src="/web/assets/img/about/about-6.jpg" alt="image">
|
<img src="/storage/{{ $homeSettings->about_image_two }}" alt="image">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
Reference in New Issue
Block a user