Skip to content

Commit

Permalink
#302 - activities page (#320)
Browse files Browse the repository at this point in the history
* wip activities & activity page

* update activity on activities page, fix bubbles

* remove subtitle from activities, fix navigation elements' hover, update home controller, add remembering tags when changed pages in pagination, update activity card

* lang

* margins

* fixes

* mobile design

* set bubbles visibility

* mobile fix

* rwd

* activities mobile tags

* cr changes

* migration

* change
  • Loading branch information
AleksandraKozubal authored Aug 19, 2024
1 parent 6e84754 commit 4825dc7
Show file tree
Hide file tree
Showing 44 changed files with 704 additions and 614 deletions.
19 changes: 0 additions & 19 deletions app/Actions/RemoveTagFromActivitiesAction.php

This file was deleted.

19 changes: 19 additions & 0 deletions app/Actions/RemoveTagFromNewsAction.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
<?php

declare(strict_types=1);

namespace Blumilk\Website\Actions;

use Blumilk\Website\Models\News;

class RemoveTagFromNewsAction
{
public function execute(int $tagId): void
{
News::query()->whereJsonContains("tags", $tagId)->get()
->each(function (News $news) use ($tagId): void {
$news->tags = array_values(array_diff($news->tags, [$tagId]));
$news->save();
});
}
}
2 changes: 1 addition & 1 deletion app/Enums/DateFormats.php
Original file line number Diff line number Diff line change
Expand Up @@ -7,5 +7,5 @@
class DateFormats
{
public const string DATE_DISPLAY = "j.m.Y";
public const string ACTIVITY_DATE_DISPLAY = "j/m Y";
public const string NEWS_DATE_DISPLAY = "j F Y";
}
13 changes: 0 additions & 13 deletions app/Filament/Resources/ActivityResource/Pages/CreateActivity.php

This file was deleted.

13 changes: 0 additions & 13 deletions app/Filament/Resources/ActivityResource/Pages/ListActivities.php

This file was deleted.

4 changes: 2 additions & 2 deletions app/Filament/Resources/ContactFormResource.php
Original file line number Diff line number Diff line change
Expand Up @@ -125,8 +125,8 @@ public static function table(Table $table): Table
public static function getPages(): array
{
return [
"index" => Pages\ListActivities::route("/"),
"edit" => Pages\EditActivity::route("/{record}/edit"),
"index" => Pages\ListNews::route("/"),
"edit" => Pages\EditNews::route("/{record}/edit"),
];
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
use Blumilk\Website\Filament\Resources\ContactFormResource;
use Filament\Actions;

class EditActivity extends BaseEditRecord
class EditNews extends BaseEditRecord
{
protected static string $resource = ContactFormResource::class;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
use Blumilk\Website\Filament\Resources\BaseResource\Pages\BaseListRecord;
use Blumilk\Website\Filament\Resources\ContactFormResource;

class ListActivities extends BaseListRecord
class ListNews extends BaseListRecord
{
protected static string $resource = ContactFormResource::class;
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@
namespace Blumilk\Website\Filament\Resources;

use Blumilk\Website\Enums\DateFormats;
use Blumilk\Website\Filament\Resources\ActivityResource\Pages;
use Blumilk\Website\Models\Activity;
use Blumilk\Website\Filament\Resources\NewsResource\Pages;
use Blumilk\Website\Models\News;
use Blumilk\Website\Models\Tag;
use Exception;
use Filament\Forms;
Expand All @@ -22,11 +22,11 @@
use Illuminate\Database\Eloquent\Builder;
use Mvenghaus\FilamentPluginTranslatableInline\Forms\Components\TranslatableContainer;

class ActivityResource extends Resource
class NewsResource extends Resource
{
use Translatable;

protected static ?string $model = Activity::class;
protected static ?string $model = News::class;
protected static ?string $label = "aktualność";
protected static ?string $pluralLabel = "Aktualności";
protected static ?string $navigationIcon = "heroicon-o-rectangle-stack";
Expand All @@ -44,11 +44,6 @@ public static function form(Form $form): Form
->required()
->maxLength(255),
)->requiredLocales(config("app.translatable_locales")),
TranslatableContainer::make(
Forms\Components\TextInput::make("subtitle")
->label("Podtytuł")
->maxLength(255),
)->requiredLocales(config("app.translatable_locales")),
Forms\Components\TextInput::make("slug")
->label("Slug")
->required()
Expand Down Expand Up @@ -81,7 +76,7 @@ public static function form(Form $form): Form
Forms\Components\FileUpload::make("photo")
->label("Zdjęcie")
->required()
->directory(Activity::PHOTOS_DIRECTORY)
->directory(News::PHOTOS_DIRECTORY)
->multiple(false)
->maxSize(1000),
]),
Expand Down Expand Up @@ -147,9 +142,9 @@ public static function table(Table $table): Table
public static function getPages(): array
{
return [
"index" => Pages\ListActivities::route("/"),
"create" => Pages\CreateActivity::route("/create"),
"edit" => Pages\EditActivity::route("/{record}/edit"),
"index" => Pages\ListNews::route("/"),
"create" => Pages\CreateNews::route("/create"),
"edit" => Pages\EditNews::route("/{record}/edit"),
];
}

Expand Down
13 changes: 13 additions & 0 deletions app/Filament/Resources/NewsResource/Pages/CreateNews.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
<?php

declare(strict_types=1);

namespace Blumilk\Website\Filament\Resources\NewsResource\Pages;

use Blumilk\Website\Filament\Resources\NewsResource;
use Filament\Resources\Pages\CreateRecord;

class CreateNews extends CreateRecord
{
protected static string $resource = NewsResource::class;
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,15 +2,15 @@

declare(strict_types=1);

namespace Blumilk\Website\Filament\Resources\ActivityResource\Pages;
namespace Blumilk\Website\Filament\Resources\NewsResource\Pages;

use Blumilk\Website\Filament\Resources\ActivityResource;
use Blumilk\Website\Filament\Resources\BaseResource\Pages\BaseEditRecord;
use Blumilk\Website\Filament\Resources\NewsResource;
use Filament\Actions;

class EditActivity extends BaseEditRecord
class EditNews extends BaseEditRecord
{
protected static string $resource = ActivityResource::class;
protected static string $resource = NewsResource::class;

protected function getHeaderActions(): array
{
Expand Down
13 changes: 13 additions & 0 deletions app/Filament/Resources/NewsResource/Pages/ListNews.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
<?php

declare(strict_types=1);

namespace Blumilk\Website\Filament\Resources\NewsResource\Pages;

use Blumilk\Website\Filament\Resources\BaseResource\Pages\BaseListRecord;
use Blumilk\Website\Filament\Resources\NewsResource;

class ListNews extends BaseListRecord
{
protected static string $resource = NewsResource::class;
}
68 changes: 0 additions & 68 deletions app/Http/Controllers/ActivitiesController.php

This file was deleted.

10 changes: 0 additions & 10 deletions app/Http/Controllers/HomeController.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,6 @@

namespace Blumilk\Website\Http\Controllers;

use Blumilk\Website\Http\Resources\ActivityResource;
use Blumilk\Website\Models\Activity;
use Blumilk\Website\Models\Reference;
use Illuminate\Contracts\View\Factory;
use Illuminate\Contracts\View\View;
Expand All @@ -15,19 +13,11 @@ class HomeController extends Controller
{
public function __invoke(Request $request, Factory $factory): View
{
$locale = $request->getLocale();
$clients = config("clients");
$caseStudy = json_decode(file_get_contents(public_path("main_case_study.json")), true)[$locale];
$activities = Activity::query()->where("published", true)->latest("published_at")->get();
$references = Reference::query()->where("published", true)->get();

$referencesCount = $references->count();

return $factory->make("home")
->with("activities", ActivityResource::collection($activities)->resolve())
->with("references", $references)
->with("caseStudy", $caseStudy)
->with("referencesCount", $referencesCount)
->with("clients", $clients);
}
}
90 changes: 90 additions & 0 deletions app/Http/Controllers/NewsController.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,90 @@
<?php

declare(strict_types=1);

namespace Blumilk\Website\Http\Controllers;

use Blumilk\Website\Http\Resources\NewsResource;
use Blumilk\Website\Http\Resources\TagResource;
use Blumilk\Website\Models\News;
use Blumilk\Website\Models\Tag;
use Illuminate\Contracts\View\Factory;
use Illuminate\Contracts\View\View;
use Illuminate\Http\Request;

class NewsController extends Controller
{
public function index(Request $request, Factory $factory): View
{
$tagFromQuery = $request->get("tag");
$tag = $tagFromQuery
? Tag::query()
->where("title->pl", "LIKE", $tagFromQuery)
->orWhere("title->en", "LIKE", $tagFromQuery)
->firstOrFail()
: null;
$allNewsCount = News::query()
->where("published", true)
->count();
$news = News::query()
->where("published", true)
->when($tag, fn($query, $tag) => $query->whereJsonContains("tags", $tag->id))
->latest("published_at")
->paginate(7)
->appends(["tag" => $tagFromQuery]);
$tags = Tag::query()
->where("is_primary", true)
->get();

$tagsNewsCount = [];

foreach ($tags as $singleTag) {
$tagsNewsCount[$singleTag->title] = $singleTag->newsCount();
}

$filteredTags = $tags->filter(fn($tag): bool => $tagsNewsCount[$tag->title] > 0);

return $factory->make("news")
->with("news", NewsResource::collection($news))
->with("tags", $filteredTags->pluck("title"))
->with("tagsNewsCount", $tagsNewsCount)
->with("selectedTag", $tag?->title)
->with("allNewsCount", $allNewsCount);
}

public function get(Request $request, Factory $factory, string $slug): View
{
$urlPath = $request->getRequestUri();
$articleUrl = config("app.url") . $urlPath;

$news = News::query()->where("slug", $slug)->firstOrFail();
$newsTags = $news->getRelatedTagModels();

$nextNews = News::query()->where("id", ">", $news->id)->where("published", true)->orderBy("id", "asc")->take(2)->get();
$previousNews = News::query()->where("id", "<", $news->id)->where("published", true)->orderBy("id", "desc")->take(2)->get();

if (!$previousNews->first()) {
$recommendedNews = $nextNews;
} elseif (!$nextNews->first()) {
$recommendedNews = $previousNews;
} else {
$recommendedNews = [$previousNews->first(), $nextNews->first()];
}

$tagsNewsCount = [];

foreach ($newsTags as $singleTag) {
$tagsNewsCount[$singleTag->title] = $singleTag->newsCount();
}

$news = new NewsResource($news);

return $factory->make("single-news")
->with("news", $news->resolve())
->with("tags", TagResource::collection($newsTags->where("as_person", false))->resolve())
->with("tagsNewsCount", $tagsNewsCount)
->with("peopleTags", TagResource::collection($newsTags->where("as_person", true))->resolve())
->with("recommendedNews", NewsResource::collection($recommendedNews)->resolve())
->with("articleUrl", $articleUrl);
}
}
Loading

0 comments on commit 4825dc7

Please sign in to comment.