Update (config): enable canonical

Update (migration): Add category type
Add (admin): Add post cliffhanger
This commit is contained in:
2023-08-03 19:46:32 +08:00
parent 8d11ccf2de
commit 500714d7bf
41 changed files with 366 additions and 229 deletions

View File

@@ -0,0 +1,47 @@
@extends('layouts.admin.app')
@section('content')
<div class="container-xl">
<!-- Page title -->
<div class="page-header d-print-none">
<h2 class="page-title">
{{ __('Changelog') }}
</h2>
</div>
</div>
<div class="page-body">
<div class="container-xl">
<div class="card">
<div class="card-body">
<p class="fw-bold mb-0">Change Log 3/8/2023 7.43pm</p>
<ul>
<li>(Improvement) Improve post UI outside front</li>
<li>(Fix) SEO problems</li>
<li>(Feature) Add cliffhanger field in post</li>
</ul>
<p class="fw-bold mb-0">Change Log 2/8/2023 12.03am</p>
<ul>
<li>(Feature) Add Delete Forever button</li>
<li>(Feature) Add Index to Search Engines button</li>
<li>(Feature) Auto set author on new post</li>
<li>(Feature) Only publish status must fill in all post fields, others status can save with minimum
title and
slug only</li>
<li>(Fix) Post list has timezone error</li>
</ul>
<p class="fw-bold mb-0">Change Log 1/8/2023 10.35pm</p>
<ul>
<li>(Feature) Auto set category on new post</li>
<li>(Feature) Auto set author on new post</li>
<li>(Feature) Only publish status must fill in all post fields, others status can save with minimum
title and
slug only</li>
<li>(Fix) Post list has timezone error</li>
</ul>
</div>
</div>
</div>
</div>
@endsection

View File

@@ -2,25 +2,14 @@
<div class="card-body">
<h3 class="">Webmaster Announcement</h3>
<div class="text-muted">
<p class="fw-bold mb-0">Change Log 2/8/2023 12.03am</p>
<p class="fw-bold mb-0">Change Log 3/8/2023 7.43pm</p>
<ul>
<li>(Feature) Add Delete Forever button</li>
<li>(Feature) Add Index to Search Engines button</li>
<li>(Feature) Auto set author on new post</li>
<li>(Feature) Only publish status must fill in all post fields, others status can save with minimum
title and
slug only</li>
<li>(Fix) Post list has timezone error</li>
</ul>
<p class="fw-bold mb-0">Change Log 1/8/2023 10.35pm</p>
<ul>
<li>(Feature) Auto set category on new post</li>
<li>(Feature) Auto set author on new post</li>
<li>(Feature) Only publish status must fill in all post fields, others status can save with minimum
title and
slug only</li>
<li>(Fix) Post list has timezone error</li>
<li>(Improvement) Improve post UI outside front</li>
<li>(Fix) SEO problems</li>
<li>(Feature) Add cliffhanger field in post</li>
</ul>
</div>
<a href="{{ route('admin.changelog') }}">View all changelogs here</a>
</div>
</div>

View File

@@ -17,54 +17,9 @@
<h3 class="h4 fw-bold text-center mb-3">Featured Articles</h3>
<div class="row g-3 justify-content-center">
@foreach ($featured_posts as $post)
<div class="col-12 col-xl-3">
<div class="col-9 col-md-6 col-xl-3">
<div class="card shadow-sm" style="height:100%;">
<a href="{{ route('home.country.post', ['country' => $country_locale->country_iso, 'post_slug' => $post->slug]) }}"
class="text-decoration-none">
<div class="card-img-top ratio ratio-16x9">
<div class="lqip-loader">
<!-- Use the LQIP image with the appropriate URL -->
<img src="{{ $post->featured_image }}" alt="Photo of {{ $post->name }}">
<!-- Use the final JPEG image with the appropriate URL -->
<img class="lqip-frozen" src="{{ $post->featured_image_lqip }}"
alt="Placeholder image of {{ $post->name }}">
</div>
</div>
</a>
<div class="card-body d-flex justify-content-between flex-column">
<div class="mb-2">
<p class="card-text fw-bold">
<a href="{{ route('home.country.post', ['country' => $country_locale->country_iso, 'post_slug' => $post->slug]) }}"
class="text-decoration-none">{{ $post->title }}</a>
</p>
</div>
<div>
<p class="card-text mb-0">
<small>in </small>
@foreach ($post->post_categories as $post_category)
<small><a class="text-decoration-none"
href="{{ route('home.country.category', ['country' => $country_locale->country_iso, 'category' => $post_category->category->slug]) }}">{{ $post_category->category->name }}</a>
</small>
@if (!$loop->last)
,
@endif
@endforeach
{{-- <small class="text-body-secondary ms-2">3 min read</small> --}}
</p>
<div class="d-flex justify-content-between align-items-center">
<small
class="text-body-secondary">{{ $post->publish_date->format('j F Y') }}</small>
{{-- <small class="text-body-secondary">9 min read</small> --}}
</div>
</div>
</div>
</div>
@include('front.partials.featured_post_card', ['post' => $post])
</div>
@endforeach
@@ -83,55 +38,9 @@ class="text-body-secondary">{{ $post->publish_date->format('j F Y') }}</small>
{{ get_country_name_by_iso($country_locale->country_iso) }}</h3>
<div class="row g-3">
@foreach ($latest_posts as $post)
<div class="col-lg-6">
<div class="col-12 col-lg-6">
<div class="card" style="height:100%;">
<div class="row g-0">
<div class="col-md-5">
<a href="{{ route('home.country.post', ['country' => $country_locale->country_iso, 'post_slug' => $post->slug]) }}"
class="text-decoration-none">
<div class="img-fluid rounded-start ratio ratio-16x9">
<div class="lqip-loader">
<!-- Use the LQIP image with the appropriate URL -->
<img src="{{ $post->featured_image }}"
alt="Photo of {{ $post->name }}">
<!-- Use the final JPEG image with the appropriate URL -->
<img class="lqip-frozen" src="{{ $post->featured_image_lqip }}"
alt="Placeholder image of {{ $post->name }}">
</div>
</div>
</a>
</div>
<div class="col-md-7">
<div class="card-body d-flex justify-content-between flex-column"
style="height:100%;">
<div>
<a href="{{ route('home.country.post', ['country' => $country_locale->country_iso, 'post_slug' => $post->slug]) }}"
class="text-decoration-none">
<p class="card-title fw-bold">{{ $post->title }}</p>
</a>
</div>
<div class="d-flex justify-content-between align-items-center">
<p class="card-text mb-0">
<small>in </small>
@foreach ($post->post_categories as $post_category)
<small><a class="text-decoration-none"
href="{{ route('home.country.category', ['country' => $country_locale->country_iso, 'category' => $post_category->category->slug]) }}">{{ $post_category->category->name }}</a>
</small>
@if (!$loop->last)
,
@endif
@endforeach
{{-- <small class="text-body-secondary ms-2">3 min read</small> --}}
</p>
<small
class="text-body-secondary">{{ $post->publish_date->format('j F Y') }}</small>
</div>
</div>
</div>
</div>
</div>
@include('front.partials.small_list_card', ['post' => $post])
</div>
@endforeach

View File

@@ -23,42 +23,7 @@
<div class="my-3">
<div class="card mb-3">
<div class="card-body">
<h5 class="card-title">
<a class="text-decoration-none fw-bold"
href="{{ route('home.country.post', ['country' => $country_locale->country_iso, 'post_slug' => $post->slug]) }}">{{ $post->title }}</a>
</h5>
<p class="card-text">
in
@foreach ($post->post_categories as $post_category)
<small><a class="text-decoration-none"
href="{{ route('home.country.category', ['country' => $country_locale->country_iso, 'category' => $post_category->category->slug]) }}">{{ $post_category->category->name }}</a>
</small>
@endforeach
<small
class="text-body-secondary ms-2">{{ $post->publish_date->format('j F Y') }}</small>
</p>
</div>
<a class="card-img-top"
href="{{ route('home.country.post', ['country' => $country_locale->country_iso, 'post_slug' => $post->slug]) }}">
<div class="img-fluid rounded-start ratio ratio-16x9">
<div class="lqip-loader">
<!-- Use the LQIP image with the appropriate URL -->
<img src="{{ $post->featured_image }}" alt="Photo of {{ $post->name }}">
<!-- Use the final JPEG image with the appropriate URL -->
<img class="lqip-frozen" src="{{ $post->featured_image_lqip }}"
alt="Placeholder image of {{ $post->name }}">
</div>
</div>
</a>
</div>
@include('front.partials.post_list_card', ['post' => $post])
</div>
@endforeach

View File

@@ -22,42 +22,7 @@
<div class="my-3">
<div class="card mb-3">
<div class="card-body">
<h5 class="card-title">
<a class="text-decoration-none fw-bold"
href="{{ route('home.country.post', ['country' => $country_locale->country_iso, 'post_slug' => $post->slug]) }}">{{ $post->title }}</a>
</h5>
<p class="card-text">
in
@foreach ($post->post_categories as $post_category)
<small><a class="text-decoration-none"
href="{{ route('home.country.category', ['country' => $country_locale->country_iso, 'category' => $post_category->category->slug]) }}">{{ $post_category->category->name }}</a>
</small>
@endforeach
<small
class="text-body-secondary ms-2">{{ $post->publish_date->format('j F Y') }}</small>
{{-- <small class="text-body-secondary ms-2">3 min read</small> --}}
</p>
</div>
<a class="card-img-top"
href="{{ route('home.country.post', ['country' => $country_locale->country_iso, 'post_slug' => $post->slug]) }}">
<div class="img-fluid rounded-start ratio ratio-16x9">
<div class="lqip-loader">
<!-- Use the LQIP image with the appropriate URL -->
<img src="{{ $post->featured_image }}" alt="Photo of {{ $post->name }}">
<!-- Use the final JPEG image with the appropriate URL -->
<img class="lqip-frozen" src="{{ $post->featured_image_lqip }}"
alt="Placeholder image of {{ $post->name }}">
</div>
</div>
</a>
</div>
@include('front.partials.post_list_card', ['post' => $post])
</div>

View File

@@ -0,0 +1,57 @@
<div class="card border-0 glow-{{ $loop->index + 1 }}" style="height:100%;">
<a href="{{ route('home.country.post', ['country' => $country_locale->country_iso, 'post_slug' => $post->slug]) }}"
class="text-decoration-none">
<div class="card-img-top ratio ratio-16x9">
<div class="lqip-loader">
<!-- Use the LQIP image with the appropriate URL -->
<img class="img-fluid rounded-top" src="{{ $post->featured_image }}"
alt="Photo of {{ $post->name }}">
<!-- Use the final JPEG image with the appropriate URL -->
<img class="img-fluid lqip-frozen" src="{{ $post->featured_image_lqip }}"
alt="Placeholder image of {{ $post->name }}">
</div>
</div>
</a>
<div class="card-body d-flex justify-content-between flex-column">
<div class="mb-2">
<p class="card-text fw-bold">
<a href="{{ route('home.country.post', ['country' => $country_locale->country_iso, 'post_slug' => $post->slug]) }}"
class="text-decoration-none">{{ $post->title }}</a>
</p>
</div>
@if (!is_empty($post->cliffhanger))
<div class="mb-3">
<small class="text-secondary">{{ $post->cliffhanger }}</small>
</div>
@else
<div class="mb-3">
<small class="text-secondary">{{ $post->excerpt }}</small>
</div>
@endif
<div>
<p class="card-text mb-0">
<small>in </small>
@foreach ($post->post_categories as $post_category)
<small><a class="text-decoration-none"
href="{{ route('home.country.category', ['country' => $country_locale->country_iso, 'category' => $post_category->category->slug]) }}">{{ $post_category->category->name }}</a>
</small>
@if (!$loop->last)
,
@endif
@endforeach
{{-- <small class="text-body-secondary ms-2">3 min read</small> --}}
</p>
<div class="d-flex justify-content-between align-items-center">
<small
class="text-body-secondary">{{ $post->publish_date->format('j F Y') }}</small>
{{-- <small class="text-body-secondary">9 min read</small> --}}
</div>
</div>
</div>
</div>

View File

@@ -0,0 +1,48 @@
<div class="card border-0 shadow-lg mb-34">
<div class="card-body">
<h5 class="card-title">
<a class="text-decoration-none fw-bold"
href="{{ route('home.country.post', ['country' => $country_locale->country_iso, 'post_slug' => $post->slug]) }}">{{ $post->title }}</a>
</h5>
@if (!is_empty($post->cliffhanger))
<div class="mb-3">
<small class="text-secondary">{{ $post->cliffhanger }}</small>
</div>
@else
<div class="mb-3">
<small class="text-secondary">{{ $post->excerpt }}</small>
</div>
@endif
<p class="card-text">
in
@foreach ($post->post_categories as $post_category)
<small><a class="text-decoration-none"
href="{{ route('home.country.category', ['country' => $country_locale->country_iso, 'category' => $post_category->category->slug]) }}">{{ $post_category->category->name }}</a>
</small>
@endforeach
<small
class="text-body-secondary ms-2">{{ $post->publish_date->format('j F Y') }}</small>
{{-- <small class="text-body-secondary ms-2">3 min read</small> --}}
</p>
</div>
<a class="card-img-top"
href="{{ route('home.country.post', ['country' => $country_locale->country_iso, 'post_slug' => $post->slug]) }}">
<div class="img-fluid rounded-start ratio ratio-16x9">
<div class="lqip-loader">
<!-- Use the LQIP image with the appropriate URL -->
<img class="img-fluid rounded-bottom" src="{{ $post->featured_image }}"
alt="Photo of {{ $post->name }}">
<!-- Use the final JPEG image with the appropriate URL -->
<img class="lqip-frozen img-fluid rounded-bottom"
src="{{ $post->featured_image_lqip }}"
alt="Placeholder image of {{ $post->name }}">
</div>
</div>
</a>
</div>

View File

@@ -0,0 +1,48 @@
<div class="card border-0 shadow-lg" style="height:100%;">
<div class="row g-0">
<div class="col-5 p-3 m-auto">
<a href="{{ route('home.country.post', ['country' => $country_locale->country_iso, 'post_slug' => $post->slug]) }}"
class="text-decoration-none">
<div class="ratio ratio-16x9">
<div class="lqip-loader img-fluid rounded ">
<!-- Use the LQIP image with the appropriate URL -->
<img class="img-fluid" src="{{ $post->featured_image }}"
alt="Photo of {{ $post->name }}">
<!-- Use the final JPEG image with the appropriate URL -->
<img class="lqip-frozen img-fluid rounded "
src="{{ $post->featured_image_lqip }}"
alt="Placeholder image of {{ $post->name }}">
</div>
</div>
</a>
</div>
<div class="col-7">
<div class="card-body d-flex justify-content-between flex-column"
style="height:100%;">
<div>
<a href="{{ route('home.country.post', ['country' => $country_locale->country_iso, 'post_slug' => $post->slug]) }}"
class="text-decoration-none">
<p class="card-title fw-bold">{{ $post->title }}</p>
</a>
</div>
<div class="d-flex justify-content-between align-items-center">
<p class="card-text mb-0">
<small>in </small>
@foreach ($post->post_categories as $post_category)
<small><a class="text-decoration-none"
href="{{ route('home.country.category', ['country' => $country_locale->country_iso, 'category' => $post_category->category->slug]) }}">{{ $post_category->category->name }}</a>
</small>
@if (!$loop->last)
,
@endif
@endforeach
{{-- <small class="text-body-secondary ms-2">3 min read</small> --}}
</p>
<small
class="text-body-secondary">{{ $post->publish_date->format('j F Y') }}</small>
</div>
</div>
</div>
</div>
</div>