Incentive (E1): "Nur fuer VIP sichtbar" und Ranglisten-Seite mit Teilnahme-Block oben

Haken vip_only am Incentive: aktives Incentive erscheint dann nur fuer
VIP-Konten in Sidenav, Dashboard, Teaser, Rangliste und Details, andere
Berater bekommen 404; das Tracking laeuft fuer alle weiter. Seeder setzt den
Haken fuer die Abstimmung der Recruiting Challenge.

Ranglisten-Seite: solange die Teilnahme nicht bestaetigt ist, steht der
Teilnahme-Block mit Praemien-Chips, Checkbox, Button und aufklappbaren
Bedingungen ganz oben, darunter Trennlinie, Titel, Untertitel, Bild,
Beschreibung und die Info-Kacheln. Ueberschriften vergroessert, Abo-Bloecke
nur wenn Abos zaehlen.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
Kevin 2026-09-22 11:11:33 +00:00
parent b091dd9b1a
commit 9879e6798e
18 changed files with 717 additions and 185 deletions

View file

@ -0,0 +1,33 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
/**
* Sichtbarkeit "nur fuer VIP": Ein aktives Incentive kann zur Abstimmung erst den
* VIP-Konten (admin >= 1) gezeigt werden. Sidenav, Dashboard, Teaser, Rangliste und
* Details bleiben fuer alle anderen Berater verborgen, das Tracking laeuft trotzdem.
* Haken im Admin, jederzeit an- und abschaltbar.
*/
return new class extends Migration
{
public function up(): void
{
Schema::table('incentives', function (Blueprint $table) {
if (! Schema::hasColumn('incentives', 'vip_only')) {
$table->boolean('vip_only')->default(false)->after('status')
->comment('1 = nur fuer VIP-Konten sichtbar (Abstimmung)');
}
});
}
public function down(): void
{
Schema::table('incentives', function (Blueprint $table) {
if (Schema::hasColumn('incentives', 'vip_only')) {
$table->dropColumn('vip_only');
}
});
}
};

View file

@ -14,7 +14,8 @@ use Illuminate\Database\Seeder;
*
* php artisan db:seed --class=RecruitingChallenge2026Seeder
*
* Danach im Admin pruefen, Bild eintragen und auf "Aktiv" stellen.
* Danach im Admin pruefen, Bild eintragen und auf "Aktiv" stellen. Zur Abstimmung ist
* "Nur fuer VIP sichtbar" gesetzt; nach Freigabe den Haken entfernen.
*/
class RecruitingChallenge2026Seeder extends Seeder
{
@ -44,6 +45,7 @@ class RecruitingChallenge2026Seeder extends Seeder
'bonus_rank_3' => 200,
'include_sales_points' => false,
'status' => 0,
'vip_only' => true,
'image' => null,
];