generated from boboko/starter
multilingual content, change in how we show header categories and homepage hero products
This commit is contained in:
@@ -6,15 +6,20 @@
|
||||
use App\Models\Staff;
|
||||
use App\Services\StoicSettings;
|
||||
use Illuminate\Database\Eloquent\Relations\Relation;
|
||||
use Illuminate\Mail\Events\MessageSending;
|
||||
use Illuminate\Support\Facades\Event;
|
||||
use Illuminate\Support\Facades\URL;
|
||||
use Illuminate\Support\Facades\View;
|
||||
use Illuminate\Support\ServiceProvider;
|
||||
use Illuminate\View\View as ViewInstance;
|
||||
use Lunar\Facades\ModelManifest;
|
||||
use Lunar\Facades\Telemetry;
|
||||
use Lunar\Models\CollectionGroup;
|
||||
use Modules\Core\Catalog\DTOs\CollectionFilters;
|
||||
use Modules\Core\Catalog\Enums\CollectionSort;
|
||||
use Modules\Core\Catalog\Services\CollectionService;
|
||||
use Modules\Core\Store\Services\StoreDetailsService;
|
||||
use Symfony\Component\Mime\Address;
|
||||
|
||||
class AppServiceProvider extends ServiceProvider
|
||||
{
|
||||
@@ -27,12 +32,17 @@ public function boot(): void
|
||||
{
|
||||
Telemetry::optOut();
|
||||
|
||||
// header.blade.php's category dropdown — root collections only, resolved
|
||||
// per-request so the composer runs after `locale` middleware has already
|
||||
// set App::getLocale(), which CollectionService's name resolution depends on.
|
||||
// header.blade.php's category dropdown — root collections of the catalog
|
||||
// group only, so merchandising groups (e.g. "Homepage") stay out of the
|
||||
// nav. Resolved per-request so the composer runs after `locale` middleware
|
||||
// has already set App::getLocale(), which CollectionService's name
|
||||
// resolution depends on. The group is looked up by handle, not id, since
|
||||
// ids can differ between environments.
|
||||
View::composer('components.header', function (ViewInstance $view) {
|
||||
$view->with('categories', app(CollectionService::class)->list(
|
||||
filters: new CollectionFilters(rootOnly: true),
|
||||
$groupId = CollectionGroup::where('handle', 'shopify')->value('id');
|
||||
|
||||
$view->with('categories', $groupId === null ? [] : app(CollectionService::class)->list(
|
||||
filters: new CollectionFilters(groupId: $groupId, rootOnly: true),
|
||||
perPage: 100,
|
||||
sort: CollectionSort::Position,
|
||||
)->items());
|
||||
@@ -45,6 +55,29 @@ public function boot(): void
|
||||
fn (ViewInstance $view) => $view->with('stoicSettings', app(StoicSettings::class)),
|
||||
);
|
||||
|
||||
// INTERIM, belongs in boboko-core's Store module: the sender name on
|
||||
// outgoing emails comes from Store Details' "Mail from name", with
|
||||
// MAIL_FROM_NAME as the fallback when it's empty. Done per message
|
||||
// rather than by setting config at boot, so a long-running queue
|
||||
// worker picks up a changed name without a restart. Only the default
|
||||
// from address is renamed; a mailable with its own from is left alone.
|
||||
Event::listen(MessageSending::class, function (MessageSending $event) {
|
||||
$name = app(StoreDetailsService::class)->current()->mail_from_name;
|
||||
|
||||
if (blank($name)) {
|
||||
return;
|
||||
}
|
||||
|
||||
$defaultAddress = config('mail.from.address');
|
||||
|
||||
$event->message->from(...array_map(
|
||||
fn (Address $from) => $from->getAddress() === $defaultAddress
|
||||
? new Address($from->getAddress(), $name)
|
||||
: $from,
|
||||
$event->message->getFrom(),
|
||||
));
|
||||
});
|
||||
|
||||
if ($this->app->environment('production')) {
|
||||
URL::forceScheme('https');
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user