Add solutions image upload field and update settings: introduce a file upload component for solutions images in ManageSolutions, add solutions_image property to SolutionSettings, and update related database migrations and views to support dynamic image display.

This commit is contained in:
2025-07-28 17:43:05 +05:00
parent bae4204d44
commit 2d1c7ea4f9
10 changed files with 58 additions and 76 deletions

View File

@@ -3,6 +3,7 @@
namespace App\Filament\Pages;
use App\Settings\SolutionSettings;
use Filament\Forms\Components\FileUpload;
use Filament\Forms\Components\Grid;
use Filament\Forms\Components\Repeater;
use Filament\Forms\Components\Section;
@@ -33,6 +34,11 @@ class ManageSolutions extends SettingsPage
->label('Header')
->required()
->maxLength(255),
FileUpload::make('solutions_image')
->label('Image')
->image()
->directory('solutions')
->required(),
Grid::make()->schema([
TextInput::make('solutions_button_text')
->label('Button Text')

View File

@@ -14,6 +14,8 @@ class SolutionSettings extends Settings
public string $solutions_button_url;
public ?string $solutions_image;
public array $solution_items;
public static function group(): string

View File

@@ -0,0 +1,24 @@
<?php
namespace Database\Factories;
use App\Models\News;
use Illuminate\Database\Eloquent\Factories\Factory;
use Illuminate\Support\Str;
class NewsFactory extends Factory
{
protected $model = News::class;
public function definition()
{
$title = $this->faker->sentence(6);
return [
'title' => $title,
'slug' => Str::slug($title),
'content' => $this->faker->paragraphs(3, true),
'image' => 'news/' . $this->faker->image('public/storage/news', 640, 480, null, false),
'published_at' => $this->faker->dateTimeBetween('-1 year', 'now'),
];
}
}

View File

@@ -15,6 +15,7 @@ class DatabaseSeeder extends Seeder
$this->call([
UsersTableSeeder::class,
BrandTableSeeder::class,
NewsTableSeeder::class,
]);
}
}

View File

@@ -0,0 +1,18 @@
<?php
namespace Database\Seeders;
use Illuminate\Database\Console\Seeds\WithoutModelEvents;
use Illuminate\Database\Seeder;
use App\Models\News;
class NewsTableSeeder extends Seeder
{
/**
* Run the database seeds.
*/
public function run(): void
{
News::factory()->count(20)->create();
}
}

View File

@@ -6,7 +6,7 @@ return new class extends SettingsMigration
{
public function up(): void
{
$this->migrator->add('cms_homepage.bg_video', 'http://127.0.0.1:8000/web/assets/video/banner.mp4');
$this->migrator->add('cms_homepage.bg_video', 'http://192.168.1.180:8000/web/assets/video/banner.mp4');
$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_sub_header', 'Architecture');
@@ -24,7 +24,7 @@ return new class extends SettingsMigration
$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');
$this->migrator->add('cms_homepage.about_image_one', 'http://192.168.1.180:8000/web/assets/img/about/about-5.jpg');
$this->migrator->add('cms_homepage.about_image_two', 'http://192.168.1.180:8000/web/assets/img/about/about-6.jpg');
}
};

View File

@@ -9,6 +9,7 @@ return new class extends SettingsMigration
$this->migrator->add('cms_solutions.solutions_subtitle', 'Our Services');
$this->migrator->add('cms_solutions.solutions_header', 'Provide Quality Services');
$this->migrator->add('cms_solutions.solutions_button_text', 'more Services');
$this->migrator->add('cms_solutions.solutions_image', 'http://192.168.1.180:8000/web/assets/img/page/services.jpg');
$this->migrator->add('cms_solutions.solutions_button_url', 'services.html');
$this->migrator->add('cms_solutions.solution_items', [
['icon_class' => 'flaticon-it-department', 'title' => 'Flooring Installation', 'link' => '#'],

View File

@@ -10,7 +10,7 @@ return new class extends SettingsMigration
$this->migrator->add('cms_success.success_header', 'Building Success With Expert Advisory Services');
$this->migrator->add('cms_success.success_paragraph', 'With a focus on innovation and sustainability, we help you navigate complex challenges, ensuring');
$this->migrator->add('cms_success.success_button_text', 'Get Advices');
$this->migrator->add('cms_success.success_button_url', 'contact.html');
$this->migrator->add('cms_success.success_button_url', 'http://gujurly.com');
$this->migrator->add('cms_success.skill_items', [
['name' => 'Building Construction', 'percentage' => 89],
['name' => 'Interiors Design', 'percentage' => 70],

View File

@@ -139,7 +139,7 @@
</div>
<div class="col-xl-7 col-lg-6">
<div class="services__four-image wow img_top_animation">
<img src="/web/assets/img/page/services.jpg" alt="image">
<img src="/storage/{{ $solutionSettings->solutions_image }}" alt="image">
</div>
</div>
</div>

View File

@@ -26,7 +26,7 @@
<div class="col-xl-4 col-lg-6 wow fadeInUp" data-wow-delay=".4s">
<div class="blog__one-item">
<div class="blog__one-item-image">
<a href="{{ route('news.show', $news->slug) }}"><img src="assets/img/blog/blog-1.jpg" alt="image"></a>
<a href="{{ route('news.show', $news->slug) }}"><img src="/storage/{{ $news->image }}" alt="image"></a>
<div class="blog__one-item-image-date">
<h6><i class="fa-regular fa-calendar"></i>{{ \Carbon\Carbon::parse($news->published_at)->format('d M') }}</h6>
</div>
@@ -38,76 +38,6 @@
</div>
</div>
@endforeach
<div class="col-xl-4 col-lg-6 wow fadeInUp" data-wow-delay=".7s">
<div class="blog__one-item">
<div class="blog__one-item-image">
<a href="blog-details.html"><img src="assets/img/blog/blog-2.jpg" alt="image"></a>
<div class="blog__one-item-image-date">
<h6><i class="fa-regular fa-calendar"></i>19 Dec</h6>
</div>
</div>
<div class="blog__one-item-content">
<h4><a href="blog-details.html">How to Choose the Perfect Construction Company</a></h4>
<a class="more_btn" href="blog-details.html">Read More<i class="flaticon-right-up"></i></a>
</div>
</div>
</div>
<div class="col-xl-4 col-lg-6 wow fadeInUp" data-wow-delay="1s">
<div class="blog__one-item">
<div class="blog__one-item-image">
<a href="blog-details.html"><img src="assets/img/blog/blog-3.jpg" alt="image"></a>
<div class="blog__one-item-image-date">
<h6><i class="fa-regular fa-calendar"></i>14 Dec</h6>
</div>
</div>
<div class="blog__one-item-content">
<h4><a href="blog-details.html">Top Mistakes to Avoid During Home Renovation</a></h4>
<a class="more_btn" href="blog-details.html">Read More<i class="flaticon-right-up"></i></a>
</div>
</div>
</div>
<div class="col-xl-4 col-lg-6 wow fadeInUp" data-wow-delay=".4s">
<div class="blog__one-item">
<div class="blog__one-item-image">
<a href="blog-details.html"><img src="assets/img/blog/blog-6.jpg" alt="image"></a>
<div class="blog__one-item-image-date">
<h6><i class="fa-regular fa-calendar"></i>22 Dec</h6>
</div>
</div>
<div class="blog__one-item-content">
<h4><a href="blog-details.html">Key Steps to Ensure a Smooth Building Process</a></h4>
<a class="more_btn" href="blog-details.html">Read More<i class="flaticon-right-up"></i></a>
</div>
</div>
</div>
<div class="col-xl-4 col-lg-6 wow fadeInUp" data-wow-delay=".7s">
<div class="blog__one-item">
<div class="blog__one-item-image">
<a href="blog-details.html"><img src="assets/img/blog/blog-5.jpg" alt="image"></a>
<div class="blog__one-item-image-date">
<h6><i class="fa-regular fa-calendar"></i>24 Dec</h6>
</div>
</div>
<div class="blog__one-item-content">
<h4><a href="blog-details.html">How to Maximize Space in Your Commercial Building</a></h4>
<a class="more_btn" href="blog-details.html">Read More<i class="flaticon-right-up"></i></a>
</div>
</div>
</div>
<div class="col-xl-4 col-lg-6 wow fadeInUp" data-wow-delay="1s">
<div class="blog__one-item">
<div class="blog__one-item-image">
<a href="blog-details.html"><img src="assets/img/blog/blog-4.jpg" alt="image"></a>
<div class="blog__one-item-image-date">
<h6><i class="fa-regular fa-calendar"></i>25 Dec</h6>
</div>
</div>
<div class="blog__one-item-content">
<h4><a href="blog-details.html">The Future of Smart Homes in Construction</a></h4>
<a class="more_btn" href="blog-details.html">Read More<i class="flaticon-right-up"></i></a>
</div>
</div>
</div>
</div>
<div class="row mt-25">
<div class="col-xl-12">