Nuevo sistema de gestión de CSS personalizado con panel admin: - Admin/CustomCSSManager: CRUD de snippets CSS (crítico/diferido) - Public/CustomCSSManager: Inyección dinámica en frontend - Schema JSON para configuración del componente Migración de CSS estático a BD: - Tablas APU (~14KB) → snippet diferido en BD - Tablas Genéricas (~10KB) → snippet diferido en BD - Comentadas funciones legacy en enqueue-scripts.php Limpieza de archivos obsoletos: - Eliminado build-bootstrap-subset.js - Eliminado migrate-legacy-options.php - Eliminado minify-css.php - Eliminado purgecss.config.js Beneficios: - CSS editable desde admin sin tocar código - Soporte crítico (head) y diferido (footer) - Filtrado por scope (all/home/single/archive) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
36 lines
975 B
PHP
36 lines
975 B
PHP
<?php
|
|
declare(strict_types=1);
|
|
|
|
namespace ROITheme\Admin\CustomCSSManager\Application\UseCases;
|
|
|
|
use ROITheme\Admin\CustomCSSManager\Application\DTOs\SaveSnippetRequest;
|
|
use ROITheme\Admin\CustomCSSManager\Domain\Entities\CSSSnippet;
|
|
use ROITheme\Shared\Domain\Contracts\CSSSnippetRepositoryInterface;
|
|
|
|
/**
|
|
* Caso de uso: Guardar snippet CSS
|
|
*
|
|
* SRP: Solo responsable de orquestar el guardado
|
|
*/
|
|
final class SaveSnippetUseCase
|
|
{
|
|
public function __construct(
|
|
private readonly CSSSnippetRepositoryInterface $repository
|
|
) {}
|
|
|
|
public function execute(SaveSnippetRequest $request): void
|
|
{
|
|
// 1. Crear entidad desde DTO
|
|
$snippet = CSSSnippet::fromArray($request->toArray());
|
|
|
|
// 2. Validar en dominio
|
|
$snippet->validate();
|
|
|
|
// 3. Validar tamaño según tipo
|
|
$snippet->css()->validateForLoadType($snippet->loadType());
|
|
|
|
// 4. Persistir
|
|
$this->repository->save($snippet->toArray());
|
|
}
|
|
}
|