Incentive (E1): Titelbild der Challenge, Dashboard-Karte mit einem Button, VIP-Sichtbarkeit auf dem Dashboard getestet
Titelbild liegt unter public/img/incentive/recruiting-challenge-2026-27/, der Seeder traegt den Dateinamen ein. Die Dashboard-Karte verlinkt nur noch auf die eine Incentive-Seite, der Ranglisten-Button entfaellt. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
parent
9b6717ca8a
commit
fb4313fbf7
5 changed files with 24 additions and 9 deletions
|
|
@ -14,7 +14,8 @@ use Illuminate\Database\Seeder;
|
|||
*
|
||||
* php artisan db:seed --class=RecruitingChallenge2026Seeder
|
||||
*
|
||||
* Danach im Admin pruefen, Bild eintragen und auf "Aktiv" stellen. Zur Abstimmung ist
|
||||
* Danach im Admin pruefen und auf "Aktiv" stellen. Das Titelbild liegt unter
|
||||
* public/img/incentive/recruiting-challenge-2026-27/. Zur Abstimmung ist
|
||||
* "Nur fuer VIP sichtbar" gesetzt; nach Freigabe den Haken entfernen.
|
||||
*/
|
||||
class RecruitingChallenge2026Seeder extends Seeder
|
||||
|
|
@ -46,7 +47,7 @@ class RecruitingChallenge2026Seeder extends Seeder
|
|||
'include_sales_points' => false,
|
||||
'status' => 0,
|
||||
'vip_only' => true,
|
||||
'image' => null,
|
||||
'image' => 'incentive-recruiting-2026.jpg',
|
||||
];
|
||||
|
||||
$incentive = Incentive::withTrashed()->where('slug', self::SLUG)->first();
|
||||
|
|
|
|||
|
|
@ -91,7 +91,7 @@ So im Seeder hinterlegt. Die Punkte 2 (Bestätigung als Voraussetzung), 6 (Gleic
|
|||
|
||||
## 7. Bild und Gestaltung
|
||||
|
||||
Hero-Bild liefert Kevin: Querformat, ca. 1600 × 600 px, JPG. Kein Strandmotiv, sonst sieht es aus wie Montenegro. Ablage unter `public/img/incentive/`, Dateiname im Admin ins Feld "Bild".
|
||||
Titelbild liegt vor: `public/img/incentive/recruiting-challenge-2026-27/incentive-recruiting-2026.jpg`, der Seeder trägt den Dateinamen ein.
|
||||
|
||||
Galerie (seit 22.09. getrennt): Jedes Incentive hat seinen eigenen Bildordner `public/img/incentive/<slug>/`. Die Challenge bekommt nur ein Titelbild, also `public/img/incentive/recruiting-challenge-2026-27/<dateiname>.jpg`, keine Impressionen. Die Montenegro-Fotos liegen jetzt unter `montenegro-incentive-2026/`. Die Seite beginnt mit dem Teilnahme-Block (Checkbox, Button, aufklappbare Bedingungen), darunter Titelbild, Text und die drei Kacheln Zeitraum, Prämie je Teampartner und Top 3 Bonus, dann "So funktioniert die Challenge" und das Live-Ranking. Bestätigte Teilnehmer sehen oben statt des Blocks ihren Stand mit Rang, Neupartnern und Prämie.
|
||||
|
||||
|
|
@ -152,7 +152,7 @@ Beim Deploy den Ordner `public/img/incentive/montenegro-incentive-2026/` mit hoc
|
|||
|
||||
- [ ] Fragen 1 bis 10 mit Dani/Alois entschieden
|
||||
- [ ] Texte freigegeben (Name, Untertitel, Beschreibung, Bedingungen), ggf. Übersetzungen
|
||||
- [ ] Hero-Bild geliefert und abgelegt
|
||||
- [x] Titelbild geliefert und abgelegt
|
||||
- [ ] Gleichstandsregel deployt
|
||||
- [ ] Deploy E1 und Seeder auf Produktion
|
||||
- [ ] Challenge im Admin geprüft, Teaser und Rangliste angesehen
|
||||
|
|
|
|||
Binary file not shown.
|
After Width: | Height: | Size: 110 KiB |
|
|
@ -128,11 +128,6 @@
|
|||
<i class="ion ion-md-trophy mr-1"></i>
|
||||
{{ __('incentive.dashboard_btn_teaser') }}
|
||||
</a>
|
||||
<a href="{{ route('user_incentive_teaser', [$activeIncentive->slug]) }}#ranking"
|
||||
class="btn inc-dash-btn-secondary">
|
||||
<i class="ion ion-md-list mr-1"></i>
|
||||
{{ __('incentive.dashboard_btn_ranking') }}
|
||||
</a>
|
||||
@if ($incentiveParticipant)
|
||||
<a href="{{ route('user_incentive_details', [$activeIncentive->slug]) }}"
|
||||
class="btn inc-dash-btn-secondary">
|
||||
|
|
|
|||
|
|
@ -42,6 +42,7 @@ function vipTestUser(int $admin = 0): User
|
|||
'payment_account' => now()->addYear(),
|
||||
'wizard' => 100,
|
||||
'active' => 1,
|
||||
'active_date' => now()->subMonths(6),
|
||||
]);
|
||||
}
|
||||
|
||||
|
|
@ -108,6 +109,24 @@ it('zeigt in der Navigation ein VIP-Badge am VIP-Incentive', function () {
|
|||
->and($publicEntry)->not->toContain('badge badge-secondary');
|
||||
});
|
||||
|
||||
it('zeigt die Dashboard-Karte eines VIP-Incentives normalen Beratern nicht', function () {
|
||||
vipOnlyChallenge(['name' => 'VIP Dashboard Challenge']);
|
||||
|
||||
$this->actingAs(vipTestUser());
|
||||
$this->get(route('home'))->assertOk()->assertDontSee('VIP Dashboard Challenge');
|
||||
});
|
||||
|
||||
it('zeigt die Dashboard-Karte eines VIP-Incentives VIP-Konten mit nur einem Button zur Seite', function () {
|
||||
vipOnlyChallenge(['name' => 'VIP Dashboard Challenge']);
|
||||
|
||||
$this->actingAs(vipTestUser(admin: 1));
|
||||
$this->get(route('home'))->assertOk()
|
||||
->assertSee('VIP Dashboard Challenge')
|
||||
->assertSee(__('incentive.dashboard_btn_teaser'))
|
||||
->assertDontSee(__('incentive.dashboard_btn_ranking'))
|
||||
->assertDontSee('#ranking');
|
||||
});
|
||||
|
||||
it('zeigt allen Beratern ein Incentive ohne VIP-Sperre', function () {
|
||||
$incentive = vipOnlyChallenge(['vip_only' => false]);
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue