zu fabricjs gewechselt, noch nicht funktionsfähig
This commit is contained in:
@@ -11,6 +11,7 @@ use Illuminate\Http\JsonResponse;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Http\Resources\Json\AnonymousResourceCollection;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
use Illuminate\Validation\Rule;
|
||||
|
||||
class EventJoinTokenController extends Controller
|
||||
{
|
||||
@@ -140,6 +141,24 @@ class EventJoinTokenController extends Controller
|
||||
'metadata.layout_customization.background_gradient.angle' => ['nullable', 'numeric'],
|
||||
'metadata.layout_customization.background_gradient.stops' => ['nullable', 'array', 'max:5'],
|
||||
'metadata.layout_customization.background_gradient.stops.*' => ['nullable', 'string', 'regex:/^#([A-Fa-f0-9]{3}|[A-Fa-f0-9]{6})$/'],
|
||||
'metadata.layout_customization.mode' => ['nullable', Rule::in(['standard', 'advanced'])],
|
||||
'metadata.layout_customization.elements' => ['nullable', 'array', 'max:50'],
|
||||
'metadata.layout_customization.elements.*.id' => ['required_with:metadata.layout_customization.elements', 'string', 'max:120'],
|
||||
'metadata.layout_customization.elements.*.type' => ['required_with:metadata.layout_customization.elements', Rule::in(['qr', 'headline', 'subtitle', 'description', 'link', 'badge', 'logo', 'cta', 'text'])],
|
||||
'metadata.layout_customization.elements.*.x' => ['nullable', 'numeric', 'min:0'],
|
||||
'metadata.layout_customization.elements.*.y' => ['nullable', 'numeric', 'min:0'],
|
||||
'metadata.layout_customization.elements.*.width' => ['nullable', 'numeric', 'min:40'],
|
||||
'metadata.layout_customization.elements.*.height' => ['nullable', 'numeric', 'min:40'],
|
||||
'metadata.layout_customization.elements.*.rotation' => ['nullable', 'numeric'],
|
||||
'metadata.layout_customization.elements.*.font_size' => ['nullable', 'numeric', 'min:8', 'max:160'],
|
||||
'metadata.layout_customization.elements.*.align' => ['nullable', Rule::in(['left', 'center', 'right'])],
|
||||
'metadata.layout_customization.elements.*.content' => ['nullable', 'string', 'max:400'],
|
||||
'metadata.layout_customization.elements.*.font_family' => ['nullable', 'string', 'max:120'],
|
||||
'metadata.layout_customization.elements.*.letter_spacing' => ['nullable', 'numeric', 'min:-5', 'max:20'],
|
||||
'metadata.layout_customization.elements.*.line_height' => ['nullable', 'numeric', 'min:0.5', 'max:3'],
|
||||
'metadata.layout_customization.elements.*.fill' => ['nullable', 'string', 'max:20'],
|
||||
'metadata.layout_customization.elements.*.locked' => ['nullable', 'boolean'],
|
||||
'metadata.layout_customization.elements.*.initial' => ['nullable', 'boolean'],
|
||||
];
|
||||
|
||||
$validated = $request->validate($rules);
|
||||
@@ -156,6 +175,36 @@ class EventJoinTokenController extends Controller
|
||||
unset($validated['metadata']['layout_customization']['logo_data_url']);
|
||||
}
|
||||
|
||||
if (isset($validated['metadata']['layout_customization']['elements'])
|
||||
&& is_array($validated['metadata']['layout_customization']['elements'])) {
|
||||
$validated['metadata']['layout_customization']['elements'] = array_values(array_filter(array_map(
|
||||
static function ($element) {
|
||||
if (! is_array($element) || empty($element['id']) || empty($element['type'])) {
|
||||
return null;
|
||||
}
|
||||
|
||||
return array_filter([
|
||||
'id' => (string) $element['id'],
|
||||
'type' => (string) $element['type'],
|
||||
'x' => array_key_exists('x', $element) ? (float) $element['x'] : null,
|
||||
'y' => array_key_exists('y', $element) ? (float) $element['y'] : null,
|
||||
'width' => array_key_exists('width', $element) ? (float) $element['width'] : null,
|
||||
'height' => array_key_exists('height', $element) ? (float) $element['height'] : null,
|
||||
'rotation' => array_key_exists('rotation', $element) ? (float) $element['rotation'] : null,
|
||||
'font_size' => array_key_exists('font_size', $element) ? (float) $element['font_size'] : null,
|
||||
'align' => $element['align'] ?? null,
|
||||
'content' => array_key_exists('content', $element) ? (string) $element['content'] : null,
|
||||
'font_family' => $element['font_family'] ?? null,
|
||||
'letter_spacing' => array_key_exists('letter_spacing', $element) ? (float) $element['letter_spacing'] : null,
|
||||
'line_height' => array_key_exists('line_height', $element) ? (float) $element['line_height'] : null,
|
||||
'fill' => $element['fill'] ?? null,
|
||||
'locked' => array_key_exists('locked', $element) ? (bool) $element['locked'] : null,
|
||||
], static fn ($value) => $value !== null && $value !== '');
|
||||
},
|
||||
$validated['metadata']['layout_customization']['elements']
|
||||
)));
|
||||
}
|
||||
|
||||
return $validated;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user