event photo wasserzeichen umgesetzt. Event admins können eigene einsetzen (als branding) falls das Paket es erlaubt. der Super Admin kann für die günstigen Pakete eigene Wasserzeichen erzwingen

This commit is contained in:
Codex Agent
2025-11-22 14:25:48 +01:00
parent eb41cb6194
commit 3d9eaa1194
25 changed files with 1124 additions and 71 deletions

View File

@@ -0,0 +1,33 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
Schema::table('events', function (Blueprint $table) {
if (! Schema::hasColumn('events', 'settings')) {
$table->json('settings')->nullable()->after('max_participants');
}
$table->boolean('watermark_serve_originals')->default(false)->after('photobooth_metadata');
$table->json('watermark_settings')->nullable()->after('photobooth_metadata');
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::table('events', function (Blueprint $table) {
$table->dropColumn(['watermark_settings', 'watermark_serve_originals']);
});
}
};

View File

@@ -0,0 +1,26 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
public function up(): void
{
Schema::create('watermark_settings', function (Blueprint $table) {
$table->id();
$table->string('asset')->nullable();
$table->string('position')->default('bottom-right');
$table->float('opacity')->default(0.25);
$table->float('scale')->default(0.2);
$table->unsignedInteger('padding')->default(16);
$table->timestamps();
});
}
public function down(): void
{
Schema::dropIfExists('watermark_settings');
}
};

View File

@@ -30,7 +30,7 @@ class PackageSeeder extends Seeder
'max_tasks' => 30,
'watermark_allowed' => true,
'branding_allowed' => false,
'features' => ['basic_uploads', 'limited_sharing', 'custom_tasks'],
'features' => ['basic_uploads', 'custom_tasks'],
'paddle_product_id' => 'pro_01k8jcxx2g1vj9snqbga4283ej',
'paddle_price_id' => 'pri_01k8jcxx8qktxvqzzv0nkjjj27',
'description' => <<<TEXT
@@ -63,7 +63,7 @@ TEXT,
'max_tasks' => 100,
'watermark_allowed' => false,
'branding_allowed' => true,
'features' => ['basic_uploads', 'unlimited_sharing', 'no_watermark', 'custom_branding', 'custom_tasks'],
'features' => ['basic_uploads', 'custom_branding', 'custom_tasks'],
'paddle_product_id' => 'pro_01k8jcxwjv4ne8vf9pvd9bye3j',
'paddle_price_id' => 'pri_01k8jcxws51pze5xc3vj2ea0yc',
'description' => <<<TEXT
@@ -96,7 +96,7 @@ TEXT,
'max_tasks' => 200,
'watermark_allowed' => false,
'branding_allowed' => true,
'features' => ['basic_uploads', 'unlimited_sharing', 'no_watermark', 'custom_branding', 'advanced_analytics', 'live_slideshow', 'priority_support'],
'features' => ['basic_uploads', 'custom_branding', 'advanced_analytics', 'live_slideshow', 'priority_support'],
'paddle_product_id' => 'pro_01k8jcxvwp38gay6jj2akjg76s',
'paddle_price_id' => 'pri_01k8jcxw5sap4r306wcvc0ephy',
'description' => <<<TEXT
@@ -129,7 +129,7 @@ TEXT,
'max_tasks' => null,
'watermark_allowed' => true,
'branding_allowed' => false,
'features' => ['basic_uploads', 'unlimited_sharing', 'no_watermark', 'custom_branding', 'custom_tasks'],
'features' => ['basic_uploads', 'unlimited_sharing', 'custom_branding', 'custom_tasks'],
'paddle_product_id' => 'pro_01k8jcxsmxrs45v1qvtpsepn13',
'paddle_price_id' => 'pri_01k8jcxswh74jv8vy5q7a4h70p',
'description' => null,

View File

@@ -40,10 +40,11 @@ class DemoLifecycleSeeder extends Seeder
'max_photos' => 1500,
'max_guests' => 400,
'gallery_days' => 60,
'watermark_allowed' => false,
'branding_allowed' => false,
'features' => [
'basic_uploads' => true,
'unlimited_sharing' => true,
'no_watermark' => true,
'custom_tasks' => true,
],
]
@@ -59,10 +60,11 @@ class DemoLifecycleSeeder extends Seeder
'max_photos' => 5000,
'max_guests' => 1000,
'gallery_days' => 180,
'watermark_allowed' => false,
'branding_allowed' => true,
'features' => [
'basic_uploads' => true,
'unlimited_sharing' => true,
'no_watermark' => true,
'custom_branding' => true,
'custom_tasks' => true,
],
@@ -77,6 +79,8 @@ class DemoLifecycleSeeder extends Seeder
'name_translations' => ['de' => 'Studio Jahrespaket', 'en' => 'Studio Annual'],
'price' => 1299,
'max_events_per_year' => 24,
'watermark_allowed' => false,
'branding_allowed' => true,
'features' => [
'custom_branding' => true,
'unlimited_sharing' => true,