Desarrollo de plugins con paquetes OPM
Desarrollo de plugins con paquetes OPM
Sección titulada «Desarrollo de plugins con paquetes OPM»En esta sección aprenderás cómo crear, instalar y distribuir tus propios plugins como paquetes OPM para Znuny.
Sección titulada «En esta sección aprenderás cómo crear, instalar y distribuir tus propios plugins como paquetes OPM para Znuny.»1. Estructura de un .sopm
Sección titulada «1. Estructura de un .sopm»El archivo SOPM (*.sopm) contiene todos los metadatos de tu paquete:
`.sopm“
- Nombre/Versión/Framework: Identificador único del paquete y versión de Znuny compatible.
- Filelist: Todos los archivos que se copiarán durante la instalación.
2. Archivos y estructura de directorios
Sección titulada «2. Archivos y estructura de directorios»Crea tu paquete en un directorio propio, p. ej., MyExtension/:
*.sopm
- Kernel/Config/Files/XML/: Registra módulos, menús o Dynamic Fields.
- Kernel/System/: Clase de lógica de negocio.
- Kernel/Modules/: Frontend-Controller.
- Templates & Idioma: Archivos TT + .pm de traducción.
3. Construir e instalar el paquete
Sección titulada «3. Construir e instalar el paquete»3.1 Generar OPM
Sección titulada «3.1 Generar OPM»Utiliza la herramienta CLI para construir un OPM a partir de tu SOPM:
MyExtension/
3.2 Instalación
Sección titulada «3.2 Instalación»Admin-UI: Sube el paquete en Admin → Configuración → Gestión de paquetes.
Consola:
Kernel/Config/Files/XML/MyExtension.xml
Para desinstalar o actualizar:
Kernel/System/DynamicField/Driver/MyCustomField.pm
Sección titulada «Admin-UI: Sube el paquete en Admin → Configuración → Gestión de paquetes.
Consola:
Kernel/Config/Files/XML/MyExtension.xml
Para desinstalar o actualizar:
Kernel/System/DynamicField/Driver/MyCustomField.pm»4. Puntos de extensión
Sección titulada «4. Puntos de extensión»4.1 Dynamic Fields
Sección titulada «4.1 Dynamic Fields»En Kernel/Config/Files/XML/MyExtension.xml registras un nuevo Dynamic Field Driver:
Kernel/System/Event/Handler/MyHandler.pm
Implementa el Driver en Kernel/System/DynamicField/Driver/MyCustomField.pm.
4.2 Event-Handler
Sección titulada «4.2 Event-Handler»Registra tu Event-Handler:
Run()
Implementa el handler en Kernel/System/Event/Handler/MyHandler.pm (método Run()).
4.3 Output-Filter
Sección titulada «4.3 Output-Filter»Kernel/System/Output/Filter/MyFilter.pm
Filtro en Kernel/System/Output/Filter/MyFilter.pm.
Sección titulada «Kernel/System/Output/Filter/MyFilter.pm
Filtro en Kernel/System/Output/Filter/MyFilter.pm.»5. Deployment & OTOpar
Sección titulada «5. Deployment & OTOpar»- Índice del repositorio: Genera
Packages.xmlpara tu propio repositorio:Packages.xml - Añade la URL de tu repositorio en SysConfig bajo
Package::RepositoryList. - OTOpar: Sube tu OPM a https://otopar.perl-services.de para que otros puedan instalarlo directamente.
6. Ejemplo: Paquete MyCalendar
Sección titulada «6. Ejemplo: Paquete MyCalendar»- Crear SOPM con el nombre
MyCalendar. - Script de BD
sql/create_calendar.sqlpara la tablacalendar_events. - Config-XML define un nuevo campo de ticket “Cita”.
- Módulo Core
Kernel/System/CalendarEvent.pmcon métodos CRUD. - Módulos Frontend
Kernel/Modules/AgentCalendar.pm, templateAgentCalendar.tt. - Construir el paquete y subirlo a OTOpar.
7. Consejos y mejores prácticas
Sección titulada «7. Consejos y mejores prácticas»- Ajustar el número de versión en el
sopm(SemVer). - Versionar correctamente las migraciones de BD en
sql/. - Crear Unit-Tests para las clases de sistema y módulos.
- Documentación en el README más POD en los módulos Perl.
- Traducciones en
Language/de_*.pmyen_*.pm. Con esto tienes una base sólida para desarrollar tus propios plugins de Znuny, distribuirlos y mantenerlos en proyectos de clientes. ¡Que te diviertas!