repository = new WordPressSnippetRepository($wpdb); $this->getAllUseCase = new GetAllSnippetsUseCase($this->repository); // NOTA: El handler POST está en CustomCSSManagerBootstrap (admin_init) } /** * Construye el formulario del componente * * @param string $componentId ID del componente (custom-css-manager) * @return string HTML del formulario */ public function buildForm(string $componentId): string { $snippets = $this->getAllUseCase->execute(); $message = $this->getFlashMessage(); $html = ''; // Header $html .= $this->buildHeader($componentId, count($snippets)); // Toast para mensajes (usa el sistema existente de admin-dashboard.js) if ($message) { $html .= $this->buildToastTrigger($message); } // Lista de snippets existentes $html .= $this->buildSnippetsList($snippets); // Formulario de creación/edición $html .= $this->buildSnippetForm(); // JavaScript $html .= $this->buildJavaScript(); return $html; } /** * Construye el header del componente */ private function buildHeader(string $componentId, int $snippetCount): string { $html = '
Gestiona snippets de CSS personalizados. Los snippets críticos se cargan en el head, los diferidos en el footer.
'; $html .= 'No hay snippets configurados.
'; } else { $html .= '| Nombre | '; $html .= 'Tipo | '; $html .= 'Páginas | '; $html .= 'Estado | '; $html .= 'Acciones | '; $html .= '
|---|