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 4e4b58e90e
commit 3341c929eb
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');
}
});
}
};