From 165585cdc4b76a1b5dd1d4c9f086fcb1bb8eb08a Mon Sep 17 00:00:00 2001 From: fatihalp Date: Fri, 6 Mar 2026 01:00:23 +0300 Subject: [PATCH] Document listing updates --- .../Filament/Resources/ListingResource.php | 22 +- .../Http/Controllers/CategoryController.php | 7 +- Modules/Category/Models/Category.php | 29 +- .../Controllers/ConversationController.php | 51 +- .../Http/Controllers/FavoriteController.php | 134 ++- .../Database/Seeders/ListingSeeder.php | 260 ++++-- .../Listing/resources/views/index.blade.php | 28 - .../views/themes/default/index.blade.php | 28 - .../views/themes/otoplus/index.blade.php | 28 - .../views/themes/otoplus/show.blade.php | 102 --- Modules/Location/routes/web.php | 2 +- .../Pages/QuickCreateListing.php | 7 +- app/Livewire/PanelQuickListingForm.php | 7 +- config/filesystems.php | 2 +- public/theme.css | 781 ++++++++++++++++++ resources/views/home.blade.php | 3 - resources/views/layouts/app.blade.php | 127 +-- 17 files changed, 1177 insertions(+), 441 deletions(-) create mode 100644 public/theme.css diff --git a/Modules/Admin/Filament/Resources/ListingResource.php b/Modules/Admin/Filament/Resources/ListingResource.php index ae83f9011..6105ff6b2 100644 --- a/Modules/Admin/Filament/Resources/ListingResource.php +++ b/Modules/Admin/Filament/Resources/ListingResource.php @@ -23,6 +23,7 @@ use Filament\Schemas\Schema; use Filament\Tables\Columns\IconColumn; use Filament\Tables\Columns\SpatieMediaLibraryImageColumn; use Filament\Tables\Columns\TextColumn; +use Filament\Tables\Enums\FiltersLayout; use Filament\Tables\Filters\Filter; use Filament\Tables\Filters\SelectFilter; use Filament\Tables\Filters\TernaryFilter; @@ -135,15 +136,15 @@ class ListingResource extends Resource ->circular(), TextColumn::make('id')->sortable(), TextColumn::make('title')->searchable()->sortable()->limit(40), - TextColumn::make('category.name')->label('Category'), - TextColumn::make('user.email')->label('Owner')->searchable()->toggleable(), + TextColumn::make('category.name')->label('Category')->sortable(), + TextColumn::make('user.email')->label('Owner')->searchable()->toggleable()->sortable(), TextColumn::make('price') ->currency(fn (Listing $record): string => $record->currency ?: ListingPanelHelper::defaultCurrency()) ->sortable(), - StateFusionSelectColumn::make('status'), - IconColumn::make('is_featured')->boolean()->label('Featured'), - TextColumn::make('city'), - TextColumn::make('country'), + StateFusionSelectColumn::make('status')->sortable(), + IconColumn::make('is_featured')->boolean()->label('Featured')->sortable(), + TextColumn::make('city')->sortable(), + TextColumn::make('country')->sortable(), TextColumn::make('created_at')->dateTime()->sortable(), ])->filters([ StateFusionSelectFilter::make('status'), @@ -188,13 +189,18 @@ class ListingResource extends Resource ->query(fn (Builder $query, array $data): Builder => $query ->when($data['min'] ?? null, fn (Builder $query, string $amount): Builder => $query->where('price', '>=', (float) $amount)) ->when($data['max'] ?? null, fn (Builder $query, string $amount): Builder => $query->where('price', '<=', (float) $amount))), - ])->actions([ + ]) + ->filtersLayout(FiltersLayout::AboveContent) + ->filtersFormColumns(3) + ->filtersFormWidth('7xl') + ->persistFiltersInSession() + ->actions([ EditAction::make(), Action::make('activities') ->icon('heroicon-o-clock') ->url(fn (Listing $record): string => static::getUrl('activities', ['record' => $record])), DeleteAction::make(), - ]); + ]); } public static function getPages(): array diff --git a/Modules/Category/Http/Controllers/CategoryController.php b/Modules/Category/Http/Controllers/CategoryController.php index 7f016191b..64212c121 100644 --- a/Modules/Category/Http/Controllers/CategoryController.php +++ b/Modules/Category/Http/Controllers/CategoryController.php @@ -3,6 +3,7 @@ namespace Modules\Category\Http\Controllers; use App\Http\Controllers\Controller; use Modules\Category\Models\Category; +use Modules\Listing\Models\Listing; use Modules\Theme\Support\ThemeManager; class CategoryController extends Controller @@ -24,7 +25,11 @@ class CategoryController extends Controller 'children' => fn ($query) => $query->active()->ordered(), ]); - $listings = $category->activeListings() + $categoryIds = $category->descendantAndSelfIds()->all(); + + $listings = Listing::query() + ->where('status', 'active') + ->whereIn('category_id', $categoryIds) ->with('category:id,name') ->latest('id') ->paginate(12); diff --git a/Modules/Category/Models/Category.php b/Modules/Category/Models/Category.php index dcd591a2b..6f2a8bf16 100644 --- a/Modules/Category/Models/Category.php +++ b/Modules/Category/Models/Category.php @@ -72,12 +72,39 @@ class Category extends Model ->active() ->whereNull('parent_id') ->with([ - 'children' => fn (HasMany $query) => $query->active()->ordered(), + 'children' => fn (Builder $query) => $query->active()->ordered(), ]) ->ordered() ->get(); } + public function descendantAndSelfIds(): Collection + { + $ids = collect([(int) $this->getKey()]); + $frontier = $ids; + + while ($frontier->isNotEmpty()) { + $children = static::query() + ->whereIn('parent_id', $frontier->all()) + ->pluck('id') + ->map(fn ($id): int => (int) $id) + ->values(); + + if ($children->isEmpty()) { + break; + } + + $ids = $ids + ->merge($children) + ->unique() + ->values(); + + $frontier = $children; + } + + return $ids; + } + public function breadcrumbTrail(): Collection { $trail = collect(); diff --git a/Modules/Conversation/App/Http/Controllers/ConversationController.php b/Modules/Conversation/App/Http/Controllers/ConversationController.php index 9f98521a1..a1f860358 100644 --- a/Modules/Conversation/App/Http/Controllers/ConversationController.php +++ b/Modules/Conversation/App/Http/Controllers/ConversationController.php @@ -5,10 +5,12 @@ namespace Modules\Conversation\App\Http\Controllers; use App\Http\Controllers\Controller; use Illuminate\Http\RedirectResponse; use Illuminate\Http\Request; +use Illuminate\Support\Facades\Schema; use Illuminate\View\View; use Modules\Conversation\App\Models\Conversation; use Modules\Conversation\App\Support\QuickMessageCatalog; use Modules\Listing\Models\Listing; +use Throwable; class ConversationController extends Controller { @@ -17,20 +19,30 @@ class ConversationController extends Controller $userId = (int) $request->user()->getKey(); $messageFilter = $this->resolveMessageFilter($request); - $conversations = Conversation::inboxForUser($userId, $messageFilter); - $selectedConversation = Conversation::resolveSelected($conversations, $request->integer('conversation')); + $conversations = collect(); + $selectedConversation = null; - if ($selectedConversation) { - $selectedConversation->loadThread(); - $selectedConversation->markAsReadFor($userId); + if ($this->messagingTablesReady()) { + try { + $conversations = Conversation::inboxForUser($userId, $messageFilter); + $selectedConversation = Conversation::resolveSelected($conversations, $request->integer('conversation')); - $conversations = $conversations->map(function (Conversation $conversation) use ($selectedConversation): Conversation { - if ((int) $conversation->getKey() === (int) $selectedConversation->getKey()) { - $conversation->unread_count = 0; + if ($selectedConversation) { + $selectedConversation->loadThread(); + $selectedConversation->markAsReadFor($userId); + + $conversations = $conversations->map(function (Conversation $conversation) use ($selectedConversation): Conversation { + if ((int) $conversation->getKey() === (int) $selectedConversation->getKey()) { + $conversation->unread_count = 0; + } + + return $conversation; + }); } - - return $conversation; - }); + } catch (Throwable) { + $conversations = collect(); + $selectedConversation = null; + } } return view('conversation::inbox', [ @@ -43,6 +55,10 @@ class ConversationController extends Controller public function start(Request $request, Listing $listing): RedirectResponse { + if (! $this->messagingTablesReady()) { + return back()->with('error', 'Mesajlaşma altyapısı henüz hazır değil.'); + } + $user = $request->user(); if (! $listing->user_id) { @@ -75,6 +91,10 @@ class ConversationController extends Controller public function send(Request $request, Conversation $conversation): RedirectResponse { + if (! $this->messagingTablesReady()) { + return back()->with('error', 'Mesajlaşma altyapısı henüz hazır değil.'); + } + $user = $request->user(); $userId = (int) $user->getKey(); @@ -117,4 +137,13 @@ class ConversationController extends Controller return in_array($messageFilter, ['all', 'unread', 'important'], true) ? $messageFilter : 'all'; } + + private function messagingTablesReady(): bool + { + try { + return Schema::hasTable('conversations') && Schema::hasTable('conversation_messages'); + } catch (Throwable) { + return false; + } + } } diff --git a/Modules/Favorite/App/Http/Controllers/FavoriteController.php b/Modules/Favorite/App/Http/Controllers/FavoriteController.php index a9d1c9660..58fe0a9e6 100644 --- a/Modules/Favorite/App/Http/Controllers/FavoriteController.php +++ b/Modules/Favorite/App/Http/Controllers/FavoriteController.php @@ -4,12 +4,15 @@ namespace Modules\Favorite\App\Http\Controllers; use App\Http\Controllers\Controller; use Illuminate\Http\Request; +use Illuminate\Pagination\LengthAwarePaginator; +use Illuminate\Support\Facades\Schema; use Modules\Category\Models\Category; use Modules\Conversation\App\Models\Conversation; use Modules\Conversation\App\Support\QuickMessageCatalog; use Modules\Favorite\App\Models\FavoriteSearch; use Modules\Listing\Models\Listing; use Modules\User\App\Models\User; +use Throwable; class FavoriteController extends Controller { @@ -37,68 +40,94 @@ class FavoriteController extends Controller $user = $request->user(); - $categories = Category::query() - ->where('is_active', true) - ->orderBy('name') - ->get(['id', 'name']); + $categories = collect(); + if ($this->tableExists('categories')) { + $categories = Category::query() + ->where('is_active', true) + ->orderBy('name') + ->get(['id', 'name']); + } - $favoriteListings = null; - $favoriteSearches = null; - $favoriteSellers = null; + $favoriteListings = $this->emptyPaginator(); + $favoriteSearches = $this->emptyPaginator(); + $favoriteSellers = $this->emptyPaginator(); $conversations = collect(); $selectedConversation = null; $buyerConversationListingMap = []; if ($activeTab === 'listings') { - $favoriteListings = $user->favoriteListings() - ->with(['category:id,name', 'user:id,name']) - ->wherePivot('created_at', '>=', now()->subYear()) - ->when($statusFilter === 'active', fn ($query) => $query->where('status', 'active')) - ->when($selectedCategoryId, fn ($query) => $query->where('category_id', $selectedCategoryId)) - ->orderByPivot('created_at', 'desc') - ->paginate(10) - ->withQueryString(); + try { + if ($this->tableExists('favorite_listings')) { + $favoriteListings = $user->favoriteListings() + ->with(['category:id,name', 'user:id,name']) + ->wherePivot('created_at', '>=', now()->subYear()) + ->when($statusFilter === 'active', fn ($query) => $query->where('status', 'active')) + ->when($selectedCategoryId, fn ($query) => $query->where('category_id', $selectedCategoryId)) + ->orderByPivot('created_at', 'desc') + ->paginate(10) + ->withQueryString(); + } - $userId = (int) $user->getKey(); - $conversations = Conversation::inboxForUser($userId, $messageFilter); - $buyerConversationListingMap = $conversations - ->where('buyer_id', $userId) - ->pluck('id', 'listing_id') - ->map(fn ($conversationId) => (int) $conversationId) - ->all(); + if ($this->tableExists('conversations') && $this->tableExists('conversation_messages')) { + $userId = (int) $user->getKey(); + $conversations = Conversation::inboxForUser($userId, $messageFilter); + $buyerConversationListingMap = $conversations + ->where('buyer_id', $userId) + ->pluck('id', 'listing_id') + ->map(fn ($conversationId) => (int) $conversationId) + ->all(); - $selectedConversation = Conversation::resolveSelected($conversations, $request->integer('conversation')); + $selectedConversation = Conversation::resolveSelected($conversations, $request->integer('conversation')); - if ($selectedConversation) { - $selectedConversation->loadThread(); - $selectedConversation->markAsReadFor($userId); + if ($selectedConversation) { + $selectedConversation->loadThread(); + $selectedConversation->markAsReadFor($userId); - $conversations = $conversations->map(function (Conversation $conversation) use ($selectedConversation): Conversation { - if ((int) $conversation->getKey() === (int) $selectedConversation->getKey()) { - $conversation->unread_count = 0; + $conversations = $conversations->map(function (Conversation $conversation) use ($selectedConversation): Conversation { + if ((int) $conversation->getKey() === (int) $selectedConversation->getKey()) { + $conversation->unread_count = 0; + } + + return $conversation; + }); } - - return $conversation; - }); + } + } catch (Throwable) { + $favoriteListings = $this->emptyPaginator(); + $conversations = collect(); + $selectedConversation = null; + $buyerConversationListingMap = []; } } if ($activeTab === 'searches') { - $favoriteSearches = $user->favoriteSearches() - ->with('category:id,name') - ->latest() - ->paginate(10) - ->withQueryString(); + try { + if ($this->tableExists('favorite_searches')) { + $favoriteSearches = $user->favoriteSearches() + ->with('category:id,name') + ->latest() + ->paginate(10) + ->withQueryString(); + } + } catch (Throwable) { + $favoriteSearches = $this->emptyPaginator(); + } } if ($activeTab === 'sellers') { - $favoriteSellers = $user->favoriteSellers() - ->withCount([ - 'listings as active_listings_count' => fn ($query) => $query->where('status', 'active'), - ]) - ->orderByPivot('created_at', 'desc') - ->paginate(10) - ->withQueryString(); + try { + if ($this->tableExists('favorite_sellers')) { + $favoriteSellers = $user->favoriteSellers() + ->withCount([ + 'listings as active_listings_count' => fn ($query) => $query->where('status', 'active'), + ]) + ->orderByPivot('created_at', 'desc') + ->paginate(10) + ->withQueryString(); + } + } catch (Throwable) { + $favoriteSellers = $this->emptyPaginator(); + } } return view('favorite::index', [ @@ -189,4 +218,21 @@ class FavoriteController extends Controller return back()->with('success', 'Favori arama silindi.'); } + + private function tableExists(string $table): bool + { + try { + return Schema::hasTable($table); + } catch (Throwable) { + return false; + } + } + + private function emptyPaginator(): LengthAwarePaginator + { + return new LengthAwarePaginator([], 0, 10, 1, [ + 'path' => request()->url(), + 'query' => request()->query(), + ]); + } } diff --git a/Modules/Listing/Database/Seeders/ListingSeeder.php b/Modules/Listing/Database/Seeders/ListingSeeder.php index 531512766..5bc325267 100644 --- a/Modules/Listing/Database/Seeders/ListingSeeder.php +++ b/Modules/Listing/Database/Seeders/ListingSeeder.php @@ -2,96 +2,54 @@ namespace Modules\Listing\Database\Seeders; -use Modules\User\App\Models\User; use Illuminate\Database\Seeder; use Illuminate\Support\Collection; +use Illuminate\Support\Facades\Schema; use Illuminate\Support\Str; use Modules\Category\Models\Category; use Modules\Listing\Models\Listing; +use Modules\Location\Models\City; +use Modules\Location\Models\Country; +use Modules\User\App\Models\User; class ListingSeeder extends Seeder { - private const LISTINGS = [ - [ - 'title' => 'iPhone 14 Pro 256 GB, temiz kullanılmış', - 'description' => 'Cihaz sorunsuz çalışıyor, pil sağlığı iyi durumda. Kutusu ve şarj kablosu ile teslim edilecektir.', - 'price' => 44999, - 'city' => 'İstanbul', - 'country' => 'Türkiye', - 'image' => 'sample_image/phone.jpeg', - ], - [ - 'title' => 'MacBook Pro M2 16 GB / 512 GB', - 'description' => 'Yazılım geliştirme için kullanıldı. Kozmetik olarak çok iyi durumda, faturası mevcut.', - 'price' => 62999, - 'city' => 'Ankara', - 'country' => 'Türkiye', - 'image' => 'sample_image/macbook.jpg', - ], - [ - 'title' => '2020 Toyota Corolla 1.6 Dream', - 'description' => 'Boyalı parça yok, düzenli bakımlı aile aracı. Detaylı ekspertiz raporu paylaşılabilir.', - 'price' => 980000, - 'city' => 'İzmir', - 'country' => 'Türkiye', - 'image' => 'sample_image/car.jpeg', - ], - [ - 'title' => 'Bluetooth Kulaklık - Aktif Gürültü Engelleme', - 'description' => 'Uzun pil ömrü ve net mikrofon performansı. Kutu içeriği tamdır.', - 'price' => 3499, - 'city' => 'Bursa', - 'country' => 'Türkiye', - 'image' => 'sample_image/headphones.jpg', - ], - [ - 'title' => 'Masaüstü için 15 inç dizüstü bilgisayar', - 'description' => 'Günlük kullanım ve ofis işleri için ideal. SSD sayesinde hızlı açılış.', - 'price' => 18450, - 'city' => 'Antalya', - 'country' => 'Türkiye', - 'image' => 'sample_image/laptop.jpg', - ], - [ - 'title' => 'Seramik Kahve Kupası Seti (6 Adet)', - 'description' => 'Az kullanıldı, kırık/çatlak yok. Mutfak yenileme nedeniyle satılıktır.', - 'price' => 650, - 'city' => 'Adana', - 'country' => 'Türkiye', - 'image' => 'sample_image/cup.jpg', - ], - [ - 'title' => 'Sedan Araç - Düşük Kilometre', - 'description' => 'Şehir içi kullanıldı, tüm bakımları zamanında yapıldı. Ciddi alıcılarla paylaşım yapılır.', - 'price' => 845000, - 'city' => 'Konya', - 'country' => 'Türkiye', - 'image' => 'sample_image/car2.jpeg', - ], + private const SAMPLE_IMAGES = [ + 'sample_image/phone.jpeg', + 'sample_image/macbook.jpg', + 'sample_image/car.jpeg', + 'sample_image/headphones.jpg', + 'sample_image/laptop.jpg', + 'sample_image/cup.jpg', + 'sample_image/car2.jpeg', + ]; + + private const TITLE_PREFIXES = [ + 'Temiz kullanılmış', + 'Az kullanılmış', + 'Fırsat ürün', + 'Uygun fiyatlı', + 'Sahibinden', + 'Kaçırılmayacak', + 'Bakımlı', ]; public function run(): void { $user = $this->resolveSeederUser(); - $categories = Category::query() - ->where('level', 0) - ->orderBy('sort_order') - ->orderBy('name') - ->get(); + $categories = $this->resolveSeedableCategories(); if (! $user || $categories->isEmpty()) { return; } - foreach (self::LISTINGS as $index => $data) { - $listing = $this->upsertListing( - index: $index, - data: $data, - categories: $categories, - user: $user, - ); + $countries = $this->resolveCountries(); + $turkeyCities = $this->resolveTurkeyCities(); - $this->syncListingImage($listing, $data['image']); + foreach ($categories as $index => $category) { + $listingData = $this->buildListingData($category, $index, $countries, $turkeyCities); + $listing = $this->upsertListing($index, $listingData, $category, $user); + $this->syncListingImage($listing, $listingData['image']); } } @@ -103,10 +61,160 @@ class ListingSeeder extends Seeder ->first(); } - private function upsertListing(int $index, array $data, Collection $categories, User $user): Listing + private function resolveSeedableCategories(): Collection { - $slug = Str::slug($data['title']) . '-' . ($index + 1); - $category = $categories->get($index % $categories->count()); + $leafCategories = Category::query() + ->where('is_active', true) + ->whereDoesntHave('children') + ->orderBy('sort_order') + ->orderBy('name') + ->get(); + + if ($leafCategories->isNotEmpty()) { + return $leafCategories->values(); + } + + return Category::query() + ->where('is_active', true) + ->orderBy('sort_order') + ->orderBy('name') + ->get() + ->values(); + } + + private function resolveCountries(): Collection + { + if (! class_exists(Country::class) || ! Schema::hasTable('countries')) { + return collect(); + } + + return Country::query() + ->where('is_active', true) + ->orderBy('name') + ->get(['id', 'name', 'code']) + ->values(); + } + + private function resolveTurkeyCities(): Collection + { + if (! class_exists(City::class) || ! Schema::hasTable('cities') || ! Schema::hasTable('countries')) { + return collect(['İstanbul', 'Ankara', 'İzmir', 'Bursa', 'Antalya']); + } + + $turkey = Country::query() + ->where('code', 'TR') + ->first(['id']); + + if (! $turkey) { + return collect(['İstanbul', 'Ankara', 'İzmir', 'Bursa', 'Antalya']); + } + + $cities = City::query() + ->where('country_id', (int) $turkey->id) + ->where('is_active', true) + ->orderBy('name') + ->pluck('name') + ->map(fn ($name): string => trim((string) $name)) + ->filter(fn (string $name): bool => $name !== '') + ->values(); + + return $cities->isNotEmpty() + ? $cities + : collect(['İstanbul', 'Ankara', 'İzmir', 'Bursa', 'Antalya']); + } + + private function buildListingData( + Category $category, + int $index, + Collection $countries, + Collection $turkeyCities + ): array { + $location = $this->resolveLocation($index, $countries, $turkeyCities); + $image = self::SAMPLE_IMAGES[$index % count(self::SAMPLE_IMAGES)]; + + return [ + 'title' => $this->buildTitle($category, $index), + 'description' => $this->buildDescription($category, $location['city'], $location['country']), + 'price' => $this->priceForIndex($index), + 'city' => $location['city'], + 'country' => $location['country'], + 'image' => $image, + ]; + } + + private function resolveLocation(int $index, Collection $countries, Collection $turkeyCities): array + { + $turkeyCountry = $countries->first(fn ($country): bool => strtoupper((string) $country->code) === 'TR'); + $turkeyName = trim((string) ($turkeyCountry->name ?? 'Türkiye')) ?: 'Türkiye'; + + $useForeignCountry = $countries->count() > 1 && $index % 4 === 0; + + if ($useForeignCountry) { + $foreignCountries = $countries + ->filter(fn ($country): bool => strtoupper((string) $country->code) !== 'TR') + ->values(); + + if ($foreignCountries->isNotEmpty()) { + $selected = $foreignCountries->get($index % $foreignCountries->count()); + $countryName = trim((string) ($selected->name ?? '')); + + return [ + 'country' => $countryName !== '' ? $countryName : 'Türkiye', + 'city' => $countryName !== '' ? $countryName : 'İstanbul', + ]; + } + } + + $city = trim((string) $turkeyCities->get($index % max(1, $turkeyCities->count()))); + + return [ + 'country' => $turkeyName, + 'city' => $city !== '' ? $city : 'İstanbul', + ]; + } + + private function buildTitle(Category $category, int $index): string + { + $prefix = self::TITLE_PREFIXES[$index % count(self::TITLE_PREFIXES)]; + $categoryName = trim((string) $category->name); + + return sprintf('%s %s ilanı', $prefix, $categoryName !== '' ? $categoryName : 'ürün'); + } + + private function buildDescription(Category $category, string $city, string $country): string + { + $categoryName = trim((string) $category->name); + $location = trim(collect([$city, $country])->filter()->join(', ')); + + return sprintf( + '%s kategorisinde, durum olarak sorunsuz ve kullanıma hazırdır. Teslimat noktası: %s. Detaylar için mesaj atabilirsiniz.', + $categoryName !== '' ? $categoryName : 'Ürün', + $location !== '' ? $location : 'Türkiye' + ); + } + + private function priceForIndex(int $index): int + { + $basePrices = [ + 1499, + 3250, + 6490, + 11800, + 26500, + 44990, + 82000, + 135000, + ]; + + $base = $basePrices[$index % count($basePrices)]; + $step = (int) floor($index / count($basePrices)) * 750; + + return $base + $step; + } + + private function upsertListing(int $index, array $data, Category $category, User $user): Listing + { + $slug = Str::slug($category->slug.'-'.$data['title']).'-'.($index + 1); return Listing::updateOrCreate( ['slug' => $slug], @@ -118,12 +226,12 @@ class ListingSeeder extends Seeder 'currency' => 'TRY', 'city' => $data['city'], 'country' => $data['country'], - 'category_id' => $category?->id, + 'category_id' => $category->id, 'user_id' => $user->id, 'status' => 'active', 'contact_email' => $user->email, 'contact_phone' => '+905551112233', - 'is_featured' => $index < 3, + 'is_featured' => $index < 8, ] ); } diff --git a/Modules/Listing/resources/views/index.blade.php b/Modules/Listing/resources/views/index.blade.php index ba87d966f..a89c161b0 100644 --- a/Modules/Listing/resources/views/index.blade.php +++ b/Modules/Listing/resources/views/index.blade.php @@ -22,34 +22,6 @@ ], $normalizeQuery); @endphp - -

{{ $pageTitle }}

diff --git a/Modules/Listing/resources/views/themes/default/index.blade.php b/Modules/Listing/resources/views/themes/default/index.blade.php index ba87d966f..a89c161b0 100644 --- a/Modules/Listing/resources/views/themes/default/index.blade.php +++ b/Modules/Listing/resources/views/themes/default/index.blade.php @@ -22,34 +22,6 @@ ], $normalizeQuery); @endphp - -

{{ $pageTitle }}

diff --git a/Modules/Listing/resources/views/themes/otoplus/index.blade.php b/Modules/Listing/resources/views/themes/otoplus/index.blade.php index ba87d966f..a89c161b0 100644 --- a/Modules/Listing/resources/views/themes/otoplus/index.blade.php +++ b/Modules/Listing/resources/views/themes/otoplus/index.blade.php @@ -22,34 +22,6 @@ ], $normalizeQuery); @endphp - -

{{ $pageTitle }}

diff --git a/Modules/Listing/resources/views/themes/otoplus/show.blade.php b/Modules/Listing/resources/views/themes/otoplus/show.blade.php index 907ff6edc..43ed45da2 100644 --- a/Modules/Listing/resources/views/themes/otoplus/show.blade.php +++ b/Modules/Listing/resources/views/themes/otoplus/show.blade.php @@ -28,108 +28,6 @@ : 'Yeni üye'; @endphp - -
-
- Elden al, kartla öde! -

{{ $priceLabel }}

diff --git a/resources/views/layouts/app.blade.php b/resources/views/layouts/app.blade.php index 79c303bc3..25b9c0132 100644 --- a/resources/views/layouts/app.blade.php +++ b/resources/views/layouts/app.blade.php @@ -42,103 +42,20 @@ {{ $siteName }} @hasSection('title') - @yield('title') @endif - - + @livewireStyles