Incentive (E1): Bilder je Incentive, Teaser mit Call to Action oben, Praemie je Teampartner statt Punkte
Titelbild und Galerie liegen jetzt in public/img/incentive/<slug>/, der Hauptordner ist nur noch Fallback fuers Titelbild. Damit erscheinen die Montenegro-Impressionen nicht mehr unter der Challenge; die Fotos sind in montenegro-incentive-2026/ verschoben. Teaser: Call to Action "Bist du bereit fuer die Challenge?" mit Button ganz oben. Bei Geldpraemie zeigen die Kacheln "Deine Praemie" (50 EUR je neuem Teampartner) und "Top 3 Bonus" statt Incentive-Punkte, darunter der Abschnitt "So funktioniert die Challenge". Rangliste: Button "Jetzt teilnehmen" wieder in der Sekundaerfarbe. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
parent
3341c929eb
commit
f340d0de3d
20 changed files with 278 additions and 135 deletions
|
|
@ -3,7 +3,7 @@
|
|||
@section('styles')
|
||||
<style>
|
||||
.incentive-hero {
|
||||
margin: -1.5rem -1.5rem 0 -1.5rem;
|
||||
margin: 0 -1.5rem 0 -1.5rem;
|
||||
position: relative;
|
||||
overflow: hidden;
|
||||
min-height: 520px;
|
||||
|
|
@ -442,10 +442,51 @@
|
|||
|
||||
@section('content')
|
||||
|
||||
{{-- ===== CTA-BEREICH ===== --}}
|
||||
<div class="cta-banner mb-4" id="incentive-teaser-cta">
|
||||
@if ($participant && $participant->accepted_terms_at)
|
||||
<div class="cta-status-icon cta-status-icon-success">
|
||||
<i class="ion ion-md-checkmark-circle"></i>
|
||||
</div>
|
||||
<h3>{{ __('incentive.you_participate') }}</h3>
|
||||
<p class="mb-4">{{ __('incentive.teaser_cta_already_in') }}</p>
|
||||
<a href="{{ route('user_incentive_show', [$incentive->slug]) }}" class="btn btn-secondary btn-lg mr-2">
|
||||
<i class="ion ion-md-list mr-1"></i>{{ __('incentive.teaser_cta_to_ranking') }}
|
||||
</a>
|
||||
<a href="{{ route('user_incentive_details', [$incentive->slug]) }}" class="btn btn-outline-secondary btn-lg">
|
||||
<i class="ion ion-md-stats mr-1"></i>{{ __('incentive.my_details') }}
|
||||
</a>
|
||||
@elseif ($participant)
|
||||
<div class="cta-status-icon cta-status-icon-warning">
|
||||
<i class="ion ion-md-trophy"></i>
|
||||
</div>
|
||||
<h3>{{ __('incentive.teaser_pending_title') }}</h3>
|
||||
<p class="mb-4">{{ __('incentive.teaser_pending_text') }}</p>
|
||||
<a href="{{ route('user_incentive_show', [$incentive->slug]) }}" class="btn btn-secondary btn-lg">
|
||||
<i class="ion ion-md-checkmark mr-1"></i>{{ __('incentive.teaser_cta_confirm') }}
|
||||
</a>
|
||||
@elseif($incentive->isActive())
|
||||
<div class="cta-status-icon cta-status-icon-warning">
|
||||
<i class="ion ion-md-trophy"></i>
|
||||
</div>
|
||||
<h3>{{ __('incentive.teaser_cta_ready') }}</h3>
|
||||
<p class="mb-4">{{ __('incentive.teaser_cta_text', ['n' => $incentive->max_winners]) }}</p>
|
||||
<a href="{{ route('user_incentive_show', [$incentive->slug]) }}" class="btn btn-secondary btn-lg">
|
||||
<i class="ion ion-md-checkmark mr-1"></i>{{ __('incentive.teaser_cta_button') }}
|
||||
</a>
|
||||
@else
|
||||
<div class="cta-status-icon cta-status-icon-muted">
|
||||
<i class="ion ion-md-time"></i>
|
||||
</div>
|
||||
<h3>{{ __('incentive.teaser_cta_coming_soon') }}</h3>
|
||||
<p class="mb-0">{{ __('incentive.not_active') }}</p>
|
||||
@endif
|
||||
</div>
|
||||
|
||||
{{-- ===== HERO ===== --}}
|
||||
@if ($incentive->image)
|
||||
<div class="incentive-hero mb-5">
|
||||
<img src="{{ asset('img/incentive/' . $incentive->image) }}" alt="{{ $incentive->name }}">
|
||||
<img src="{{ asset($incentive->heroImagePath()) }}" alt="{{ $incentive->name }}">
|
||||
<div class="hero-overlay"></div>
|
||||
<div class="hero-content">
|
||||
<span class="hero-badge">
|
||||
|
|
@ -530,7 +571,7 @@
|
|||
<span class="tile-label">{{ __('incentive.payout_per_partner_label') }}</span>
|
||||
</div>
|
||||
@endif
|
||||
@if ($incentive->rankBonuses() !== [])
|
||||
@if ($incentive->rankBonuses() !== [] && !$incentive->ranksByPartnerCount())
|
||||
<div>
|
||||
<span class="tile-label d-block mb-1">{{ __('incentive.payout_top_bonus_title', ['n' => count($incentive->rankBonuses())]) }}</span>
|
||||
@foreach ($incentive->rankBonuses() as $bonusRank => $bonusAmount)
|
||||
|
|
@ -564,6 +605,27 @@
|
|||
</div>
|
||||
@endif
|
||||
|
||||
@if ($incentive->hasCashPayout() && $incentive->ranksByPartnerCount())
|
||||
{{-- Top 3 Bonus (Recruiting-Challenge) --}}
|
||||
<div class="col-md-4">
|
||||
<div class="card info-tile h-100 shadow-sm" id="incentive-bonus-tile">
|
||||
<div class="card-body text-center py-4">
|
||||
<div class="tile-icon tile-icon-star">
|
||||
<i class="ion ion-md-trophy"></i>
|
||||
</div>
|
||||
<h5 class="font-weight-bold mb-3">{{ __('incentive.payout_bonus_tile_title', ['n' => max(count($incentive->rankBonuses()), $incentive->max_winners)]) }}</h5>
|
||||
@forelse ($incentive->rankBonuses() as $bonusRank => $bonusAmount)
|
||||
<div class="mb-2">
|
||||
<span class="tile-value" style="color: #6b7758;">{{ \App\Services\Incentive\IncentivePayoutService::formatAmount($bonusAmount) }}</span>
|
||||
<span class="tile-label d-block">{{ __('incentive.payout_rank_label', ['n' => $bonusRank]) }}</span>
|
||||
</div>
|
||||
@empty
|
||||
<span class="tile-label d-block">{{ __('incentive.ranking_winners_hint', ['n' => $incentive->max_winners]) }}</span>
|
||||
@endforelse
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@else
|
||||
{{-- Punkte-System --}}
|
||||
<div class="col-md-4">
|
||||
<div class="card info-tile h-100 shadow-sm">
|
||||
|
|
@ -593,57 +655,89 @@
|
|||
</div>
|
||||
|
||||
</div>
|
||||
@endif
|
||||
|
||||
{{-- ===== PUNKTE-DETAIL ===== --}}
|
||||
<div class="points-section mb-5">
|
||||
<h4 class="points-heading">
|
||||
<i class="ion ion-md-star text-warning mr-1"></i>
|
||||
{{ __('incentive.section_points') }}
|
||||
</h4>
|
||||
<div class="row">
|
||||
<div class="{{ $incentive->usesAbos() ? 'col-md-6 mb-3 mb-md-0' : 'col-md-12' }}">
|
||||
<div class="point-card point-card-partner">
|
||||
<h6 class="font-weight-bold mb-2">
|
||||
<i class="ion ion-md-person-add mr-1"></i>
|
||||
{{ __('incentive.points_partners_title') }}
|
||||
</h6>
|
||||
<div class="point-value">
|
||||
{{ number_format($incentive->points_partner_onetime, 0, ',', '.') }}
|
||||
<span class="small font-weight-normal">{{ __('incentive.points_short') }}</span>
|
||||
{{-- ===== SO FUNKTIONIERT DIE CHALLENGE (Geldpraemie) / PUNKTE-DETAIL ===== --}}
|
||||
@if ($incentive->hasCashPayout() && $incentive->ranksByPartnerCount())
|
||||
<div class="points-section mb-5" id="incentive-how-it-works">
|
||||
<h4 class="points-heading">
|
||||
<i class="ion ion-md-cash text-warning mr-1"></i>
|
||||
{{ __('incentive.section_how_it_works') }}
|
||||
</h4>
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
<div class="point-card point-card-partner">
|
||||
<h6 class="font-weight-bold mb-2">
|
||||
<i class="ion ion-md-person-add mr-1"></i>
|
||||
{{ __('incentive.payout_tile_title') }}
|
||||
</h6>
|
||||
<div class="point-value">
|
||||
{{ \App\Services\Incentive\IncentivePayoutService::formatAmount((float) $incentive->amount_per_partner) }}
|
||||
<span class="small font-weight-normal">{{ __('incentive.payout_per_partner_label') }}</span>
|
||||
</div>
|
||||
<ul>
|
||||
<li>{{ __('incentive.points_starter_package_label') }}</li>
|
||||
@if ($incentive->rankBonuses() !== [])
|
||||
<li>{{ __('incentive.payout_top_bonus_text', ['n' => count($incentive->rankBonuses()), 'list' => collect($incentive->rankBonuses())->map(fn ($amount, $rank) => __('incentive.payout_rank_label', ['n' => $rank]).' '.\App\Services\Incentive\IncentivePayoutService::formatAmount($amount))->implode(', ')]) }}</li>
|
||||
@endif
|
||||
<li>{{ __('incentive.payout_ranking_hint') }}</li>
|
||||
</ul>
|
||||
</div>
|
||||
<ul>
|
||||
<li>{{ __('incentive.teaser_partner_onetime_text') }}</li>
|
||||
<li>{{ __('incentive.points_starter_package_label') }}</li>
|
||||
@if ($incentive->includesSalesPoints())
|
||||
<li>{{ __('incentive.points_partner_boost') }}</li>
|
||||
@endif
|
||||
@include('user.incentive._payout_bullets', ['incentive' => $incentive])
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
@if ($incentive->usesAbos())
|
||||
<div class="col-md-6">
|
||||
<div class="point-card point-card-abo">
|
||||
<h6 class="font-weight-bold mb-2">
|
||||
<i class="ion ion-md-ribbon mr-1"></i>
|
||||
{{ __('incentive.points_abos_title') }}
|
||||
</h6>
|
||||
<div class="point-value">
|
||||
{{ number_format($incentive->points_abo_onetime, 0, ',', '.') }}
|
||||
<span class="small font-weight-normal">{{ __('incentive.points_short') }}</span>
|
||||
</div>
|
||||
<ul>
|
||||
<li>{{ __('incentive.teaser_abo_onetime_text') }}</li>
|
||||
<li>{{ __('incentive.points_abo_direct') }}</li>
|
||||
@if ($incentive->includesSalesPoints())
|
||||
<li>{{ __('incentive.points_abo_boost') }}</li>
|
||||
@endif
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
@else
|
||||
{{-- ===== PUNKTE-DETAIL ===== --}}
|
||||
<div class="points-section mb-5">
|
||||
<h4 class="points-heading">
|
||||
<i class="ion ion-md-star text-warning mr-1"></i>
|
||||
{{ __('incentive.section_points') }}
|
||||
</h4>
|
||||
<div class="row">
|
||||
<div class="{{ $incentive->usesAbos() ? 'col-md-6 mb-3 mb-md-0' : 'col-md-12' }}">
|
||||
<div class="point-card point-card-partner">
|
||||
<h6 class="font-weight-bold mb-2">
|
||||
<i class="ion ion-md-person-add mr-1"></i>
|
||||
{{ __('incentive.points_partners_title') }}
|
||||
</h6>
|
||||
<div class="point-value">
|
||||
{{ number_format($incentive->points_partner_onetime, 0, ',', '.') }}
|
||||
<span class="small font-weight-normal">{{ __('incentive.points_short') }}</span>
|
||||
</div>
|
||||
<ul>
|
||||
<li>{{ __('incentive.teaser_partner_onetime_text') }}</li>
|
||||
<li>{{ __('incentive.points_starter_package_label') }}</li>
|
||||
@if ($incentive->includesSalesPoints())
|
||||
<li>{{ __('incentive.points_partner_boost') }}</li>
|
||||
@endif
|
||||
@include('user.incentive._payout_bullets', ['incentive' => $incentive])
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
@if ($incentive->usesAbos())
|
||||
<div class="col-md-6">
|
||||
<div class="point-card point-card-abo">
|
||||
<h6 class="font-weight-bold mb-2">
|
||||
<i class="ion ion-md-ribbon mr-1"></i>
|
||||
{{ __('incentive.points_abos_title') }}
|
||||
</h6>
|
||||
<div class="point-value">
|
||||
{{ number_format($incentive->points_abo_onetime, 0, ',', '.') }}
|
||||
<span class="small font-weight-normal">{{ __('incentive.points_short') }}</span>
|
||||
</div>
|
||||
<ul>
|
||||
<li>{{ __('incentive.teaser_abo_onetime_text') }}</li>
|
||||
<li>{{ __('incentive.points_abo_direct') }}</li>
|
||||
@if ($incentive->includesSalesPoints())
|
||||
<li>{{ __('incentive.points_abo_boost') }}</li>
|
||||
@endif
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
@endif
|
||||
|
||||
{{-- ===== BILDERGALERIE ===== --}}
|
||||
@if (count($galleryImages) > 0)
|
||||
|
|
@ -670,47 +764,6 @@
|
|||
</div>
|
||||
@endif
|
||||
|
||||
{{-- ===== CTA-BEREICH ===== --}}
|
||||
<div class="cta-banner mb-5">
|
||||
@if ($participant && $participant->accepted_terms_at)
|
||||
<div class="cta-status-icon cta-status-icon-success">
|
||||
<i class="ion ion-md-checkmark-circle"></i>
|
||||
</div>
|
||||
<h3>{{ __('incentive.you_participate') }}</h3>
|
||||
<p class="mb-4">{{ __('incentive.teaser_cta_already_in') }}</p>
|
||||
<a href="{{ route('user_incentive_show', [$incentive->slug]) }}" class="btn btn-secondary btn-lg mr-2">
|
||||
<i class="ion ion-md-list mr-1"></i>{{ __('incentive.teaser_cta_to_ranking') }}
|
||||
</a>
|
||||
<a href="{{ route('user_incentive_details', [$incentive->slug]) }}" class="btn btn-outline-secondary btn-lg">
|
||||
<i class="ion ion-md-stats mr-1"></i>{{ __('incentive.my_details') }}
|
||||
</a>
|
||||
@elseif ($participant)
|
||||
<div class="cta-status-icon cta-status-icon-warning">
|
||||
<i class="ion ion-md-trophy"></i>
|
||||
</div>
|
||||
<h3>{{ __('incentive.teaser_pending_title') }}</h3>
|
||||
<p class="mb-4">{{ __('incentive.teaser_pending_text') }}</p>
|
||||
<a href="{{ route('user_incentive_show', [$incentive->slug]) }}" class="btn btn-secondary btn-lg">
|
||||
<i class="ion ion-md-checkmark mr-1"></i>{{ __('incentive.teaser_cta_confirm') }}
|
||||
</a>
|
||||
@elseif($incentive->isActive())
|
||||
<div class="cta-status-icon cta-status-icon-warning">
|
||||
<i class="ion ion-md-trophy"></i>
|
||||
</div>
|
||||
<h3>{{ __('incentive.teaser_cta_ready') }}</h3>
|
||||
<p class="mb-4">{{ __('incentive.teaser_cta_text', ['n' => $incentive->max_winners]) }}</p>
|
||||
<a href="{{ route('user_incentive_show', [$incentive->slug]) }}" class="btn btn-secondary btn-lg">
|
||||
<i class="ion ion-md-checkmark mr-1"></i>{{ __('incentive.teaser_cta_button') }}
|
||||
</a>
|
||||
@else
|
||||
<div class="cta-status-icon cta-status-icon-muted">
|
||||
<i class="ion ion-md-time"></i>
|
||||
</div>
|
||||
<h3>{{ __('incentive.teaser_cta_coming_soon') }}</h3>
|
||||
<p class="mb-0">{{ __('incentive.not_active') }}</p>
|
||||
@endif
|
||||
</div>
|
||||
|
||||
{{-- ===== TEILNAHMEBEDINGUNGEN (Collapse) ===== --}}
|
||||
@if ($incentive->getLang('terms'))
|
||||
<div class="card terms-toggle mb-4">
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue