feat: homepage announcement index

This commit is contained in:
myuqinurrohman 2025-03-29 14:11:12 +07:00
parent 1a2b40ae18
commit 9efa03da19
7 changed files with 176 additions and 6 deletions

View File

@ -0,0 +1,47 @@
<?php
namespace App\Http\Controllers\Homepage;
use App\Http\Controllers\Controller;
use App\Models\News;
use Illuminate\Http\Request;
class AnnouncementController extends Controller
{
public function index(Request $request){
$data = [
'title' => 'Pengumuman',
'page' => 'announcements',
];
$search = $request->input('search', null);
if($search){
$data['announcements'] = News::where('category', '1')->where('title', 'LIKE', "%{$search}%")
// ->orWhere('content', 'LIKE', "%{$search}%")
->latest()
->simplePaginate(6);
}else{
$data['announcements'] = News::where('category', '1')->latest()->simplePaginate(6);
}
return view('homepage.announcements.index', $data);
}
public function read($slug){
$announcement = News::where('slug', $slug)->first();
$announcement->increment('views', 1);
$data = [
'title' => 'Pengumuman',
'page' => 'announcements',
'announcement' => $announcement,
'popularAnnouncements' => News::where('category', '1')->orderBy('views', 'desc')->take(5)->get(),
'otherAnnouncements' => News::where('category', '1')->orderByDesc('id')->where('id', '!=', $announcement->id)->take(3)->get()
];
return view('homepage.announcements.read', $data);
}
}

View File

@ -20,10 +20,11 @@ public function index(Request $request){
if($search){
$data['news'] = News::where('title', 'LIKE', "%{$search}%")
// ->orWhere('content', 'LIKE', "%{$search}%")
->where('category', '0')
->latest()
->simplePaginate(12);
}else{
$data['news'] = News::latest()->simplePaginate(12);
$data['news'] = News::where('category', '0')->latest()->simplePaginate(12);
}
return view('homepage.news.index', $data);
@ -37,8 +38,8 @@ public function read($slug){
'title' => 'Berita',
'page' => 'news',
'news' => $news,
'popularNews' => News::orderBy('views', 'desc')->take(5)->get(),
'otherNews' => News::orderByDesc('id')->where('id', '!=', $news->id)->take(3)->get()
'popularNews' => News::where('category', '0')->orderBy('views', 'desc')->take(5)->get(),
'otherNews' => News::where('category', '0')->orderByDesc('id')->where('id', '!=', $news->id)->take(3)->get()
];
return view('homepage.news.read', $data);

View File

@ -0,0 +1,58 @@
@include('partials.homepage.head')
<body data-mobile-nav-style="full-screen-menu" data-mobile-nav-bg-color="">
@include('partials.homepage.header')
<!-- start page title -->
<section class="half-section page-title-center-alignment cover-background top-space-margin">
<div class="container">
<div class="row">
<div class="col-12 text-center position-relative page-title-large">
<h1 class="d-inline-block fw-600 ls-minus-1px text-dark-gray mb-15px">Pengumuman</h1>
</div>
<div class="col-12 breadcrumb breadcrumb-style-01 d-flex justify-content-center">
<ul>
<li><a href="{{route('homepage.landing')}}">Beranda</a></li>
<li><a href="{{route('homepage.announcements.index')}}">Pengumuman</a></li>
</ul>
</div>
</div>
</div>
</section>
<!-- end page title -->
<!-- start section -->
<section class="pt-0 ps-4 pe-4 xl-ps-2 xl-pe-2 lg-px-0">
<div class="container-fluid">
<div class="row">
<div class="col-12">
<ul class="blog-side-image blog-wrapper grid-loading grid grid-3col xxl-grid-2col xl-grid-2col lg-grid-2col md-grid-1col sm-grid-1col xs-grid-1col gutter-extra-large">
<li class="grid-sizer"></li>
@forelse ($announcements as $item)
<!-- start blog item -->
<li class="grid-item">
<div class="blog-box d-md-flex d-block flex-row h-100 border-radius-6px overflow-hidden box-shadow-extra-large">
<div class="blog-image w-50 sm-w-100 cover-background" style="background-image: url({{asset(display_image($item->image, 'news', 'simedkom-logo-circle.png'))}}); {{str_contains(display_image($item->image, 'news', 'simedkom-logo-circle.png'), 'assets') ? 'background-size: 80%;' : ''}}">
<a href="{{route('homepage.announcements.read', ['slug' => $item->slug])}}" class="blog-post-image-overlay"></a>
</div>
<div class="blog-content w-50 sm-w-100 pt-50px pb-40px ps-40px pe-40px xl-p-30px bg-white d-flex flex-column justify-content-center align-items-start last-paragraph-no-margin">
<a href="{{route('homepage.announcements.read', ['slug' => $item->slug])}}" class="categories-btn bg-dark-gray text-white text-uppercase fw-500 mb-30px">{{idn_date($item->created_at, 'd F Y')}}</a>
<a href="{{route('homepage.announcements.read', ['slug' => $item->slug])}}" class="card-title text-dark-gray text-dark-gray-hover mb-5px fw-600 fs-18 lh-28">{{shorten_text($item->title, 80)}}</a>
<div class="mt-15px"><span class="separator bg-dark-gray"></span><a href="{{route('homepage.announcements.read', ['slug' => $item->slug])}}" class="text-dark-gray text-dark-gray-hover d-inline-block fs-15 fw-500 fw-500">Baca Selengkapnya</a></div>
</div>
</div>
</li>
<!-- end blog item -->
@empty
<div style="text-align: center; margin-top: 2rem;">
Tidak ada pengumuman.
</div>
@endforelse
</ul>
</div>
<div class="col-12 mt-4 d-flex justify-content-center">
{{$announcements->links()}}
</div>
</div>
</div>
</section>
<!-- end section -->
<!-- start footer -->
@include('partials.homepage.footer')

View File

@ -0,0 +1,54 @@
@include('partials.homepage.head')
<body data-mobile-nav-style="full-screen-menu" data-mobile-nav-bg-color="">
@include('partials.homepage.header')
<!-- start section -->
<section class="top-space-margin">
<div class="container">
<div class="row justify-content-center">
<div class="col-lg-10 text-center">
<span class="fs-18 mb-30px d-inline-block sm-mb-20px">By <a href="#" class="text-dark-gray text-decoration-line-bottom">Jackson</a> in <a href="#" class="text-dark-gray text-decoration-line-bottom">Marketing</a> on 26 November 2021</span>
<h1 class="alt-font fw-600 text-dark-gray ls-minus-2px mb-0">Marketing tips and tricks for your creative website.</h1>
</div>
</div>
</div>
</section>
<!-- end section -->
<!-- start section -->
<section class="py-0 ps-13 pe-13 lg-ps-4 lg-pe-4 sm-px-0">
<div class="container-fluid">
<div class="row justify-content-center">
<div class="col-12"><img src="{{asset(display_image($announcement->image, 'news'))}}" class="w-100" alt=""></div>
</div>
</div>
</section>
<!-- end section -->
<!-- start section -->
<section>
<div class="container">
<div class="row justify-content-center">
<div class="col-lg-10">
<div class="row">
{{-- <div class="col-lg-3 col-md-4 text-center sm-mb-30px">
<div class="pb-20px">
<img src="https://via.placeholder.com/150x150" class="rounded-circle w-130px mb-20px" alt="">
<span class="d-block lh-22">Words by</span>
<a href="blog-grid.html" class="text-dark-gray alt-font fw-500 text-uppercase">Jackson smith</a>
</div>
<div class="h-3px w-100 bg-dark-gray mb-20px"></div>
<ul class="d-flex list-unstyled justify-content-center">
<li class="me-25px"><a href="#" class="text-uppercase alt-font fs-13"><i class="feather icon-feather-message-circle me-5px icon-small align-middle"></i>Comment</a></li>
<li><a href="#" class="text-uppercase alt-font fs-13"><i class="feather icon-feather-heart me-5px icon-small align-middle"></i>Like</a></li>
</ul>
</div> --}}
<div class="col-md-12 text-md-start">
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.</p>
<p>Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo <span class="text-dark-gray text-decoration-line-bottom">inventore veritatis et quasi</span> architecto beatae vitae dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est, qui dolorem ipsum quia.</p>
</div>
</div>
</div>
</div>
</div>
</section>
<!-- end section -->
<!-- start footer -->
@include('partials.homepage.footer')

View File

@ -26,7 +26,7 @@
<ul class="blog-classic blog-wrapper grid-loading grid grid-4col xl-grid-4col lg-grid-3col md-grid-2col sm-grid-2col xs-grid-1col gutter-extra-large">
{{-- <ul class="blog-classic blog-wrapper grid-loading grid grid-4col xl-grid-4col lg-grid-3col md-grid-2col sm-grid-2col xs-grid-1col gutter-extra-large"> --}}
<li class="grid-sizer"></li>
@foreach ($news as $item)
@forelse ($news as $item)
<!-- start blog item -->
<li class="grid-item">
<div class="card bg-transparent border-0 h-100">
@ -44,7 +44,11 @@
</div>
</li>
<!-- end blog item -->
@endforeach
@empty
<div style="text-align: center; margin-top: 2rem;">
Tidak ada berita.
</div>
@endforelse
</ul>
</div>
<div class="col-12 mt-2 d-flex justify-content-center">

View File

@ -34,7 +34,7 @@
<ul class="navbar-nav">
<li class="nav-item"><a href="{{route('homepage.landing')}}" class="nav-link fs-25 {{$page === 'landing' ? 'active-menu' : ''}}">Beranda</a></li>
<li class="nav-item"><a href="{{route('homepage.news.index')}}" class="nav-link fs-25 {{$page === 'news' ? 'active-menu' : ''}}">Berita</a></li>
<li class="nav-item"><a href="demo-hosting-hosting.html" class="nav-link fs-25">Pengumuman</a></li>
<li class="nav-item"><a href="{{route('homepage.announcements.index')}}" class="nav-link fs-25 {{$page === 'announcements' ? 'active-menu' : ''}}">Pengumuman</a></li>
<li class="nav-item"><a href="demo-hosting-domain.html" class="nav-link fs-25">Tentang Kami</a></li>
<li class="nav-item"><a href="demo-hosting-pricing.html" class="nav-link fs-25">Kontak</a></li>
</ul>

View File

@ -26,6 +26,7 @@
use App\Http\Controllers\Dashboard\SubLocationController;
use App\Http\Controllers\Dashboard\UserController;
use App\Http\Controllers\Homepage\NewsController as HomepageNewsController;
use App\Http\Controllers\Homepage\AnnouncementController as HomepageAnnouncementController;
use App\Http\Controllers\Homepage\LandingPageController;
use Illuminate\Support\Facades\Route;
@ -36,6 +37,11 @@
Route::get('/', 'index')->name('index');
Route::get('/{slug}', 'read')->name('read');
});
Route::prefix('announcements')->name('announcements.')->controller(HomepageAnnouncementController::class)->group(function(){
Route::get('/', 'index')->name('index');
Route::get('/{slug}', 'read')->name('read');
});
});
Route::prefix('auth')->group(function(){