Módulos - Packages validación y DoliStore reglas
Introducion
Estas son las reglas que imperan en la validación de un módulo objeto de validación en https://www.dolistore.com
Reglas
Denominación del paquete
Todos los módulos para Dolibarr deben llamarse 'module_mymodulename-VERSION.zip' (donde VERSION puede ser xo x.y o x.y.z). Si el módulo es para otro software, el nombre zip debe ser 'moduleotheroftware_mymodulename-VERSION.zip' (por ejemplo, moduleprestashop_mymodulename-1.0.zip).
Los paquetes del tipo de aplicación de Android, documento PDF, son libres de usar el nombre de su elección.
El resto del documento solo se aplica a los módulos Dolibarr.
Reglas sobre el código
1-Estructura
Todos los archivos del módulo deben estar el el directorio del módulo, ejemplo en htdocs/modulebuilder/template
- mymodule/* contains php pages (note that you can also add any other subdir of your choice). Note: If your module is a metapackage (a module that will embed other modules in same zip, you must put here a file metapackage.conf)
- mymodule/build/ can contains any file you develop for compiling or building package
- mymodule/core/modules/ contains module descriptor file modMyModule.class.php
- mymodule/core/triggers contains triggers provided by module
- mymodule/admin/ contains pages to setup module
- mymodule/class/ contains PHP class files provided by module
- mymodule/css contains CSS files provided by module
- mymodule/js contains javascript files provided by module to add new functions
- mymodule/docs to provide doc and licence files
- mymodule/img contains images files provided by module
- mymodule/langs/xx_XX contains language files for language xx_XX (try to put at least en_US)
- mymodule/lib contains libraries provided and used by module
- mymodule/scripts to provide command line tools or scripts. Note: Command lines script must start with line #!/usr/bin/env php
- mymodule/sql contains SQL file provided by module to add new tables or indexes
- mymodule/theme/mytheme if module provide its own theme/skin
2-Custom directory management - Inclusion of main or master files
Por esta razón, cuando intente cargar el entorno Dolibarr incluyendo el archivo main.inc.php o master.inc.php, debe incluir 2 formas de incluirlos:
Recomendamos usar el método sugerido en los ejemplos en los archivos htdocs/modulebuilder/*.php y presentado aquí para cargar main.inc.php, pero puede reemplazar main.inc.php con master.inc.php para scripts de línea de comandos. Se sabe que esta parte del código funciona en todas las situaciones (usando Apache, Nginx, IIS, usando host virtual de subdirectorios, después de una redirección de proxy o no, si la raíz web es detectada automáticamente o forzada por el archivo conf, y cualquier combinación de esto).
// Load Dolibarr environment
$res = 0;
// Try main.inc.php into web root known defined into CONTEXT_DOCUMENT_ROOT (not always defined)
if (!$res && !empty($_SERVER["CONTEXT_DOCUMENT_ROOT"])) $res = @include $_SERVER["CONTEXT_DOCUMENT_ROOT"]."/main.inc.php";
// Try main.inc.php into web root detected using web root calculated from SCRIPT_FILENAME
$tmp = empty($_SERVER['SCRIPT_FILENAME']) ? '' : $_SERVER['SCRIPT_FILENAME']; $tmp2 = realpath(__FILE__); $i = strlen($tmp) - 1; $j = strlen($tmp2) - 1;
while ($i > 0 && $j > 0 && isset($tmp[$i]) && isset($tmp2[$j]) && $tmp[$i] == $tmp2[$j]) { $i--; $j--; }
if (!$res && $i > 0 && file_exists(substr($tmp, 0, ($i + 1))."/main.inc.php")) $res = @include substr($tmp, 0, ($i + 1))."/main.inc.php";
if (!$res && $i > 0 && file_exists(dirname(substr($tmp, 0, ($i + 1)))."/main.inc.php")) $res = @include dirname(substr($tmp, 0, ($i + 1)))."/main.inc.php";
// Try main.inc.php using relative path
if (!$res && file_exists("../main.inc.php")) $res = @include "../main.inc.php";
if (!$res && file_exists("../../main.inc.php")) $res = @include "../../main.inc.php";
if (!$res && file_exists("../../../main.inc.php")) $res = @include "../../../main.inc.php";
if (!$res) die("Include of main fails");
3-Inclusión
- Todas las inclusiones de archivos del core deben realizarse mediante include_once/require_once/include/require DOL_DOCUMENT_ROOT.'/Path_to_Core_Files';
- Todas las inclusiones de archivos de archivos específicos al módulo deben realizarse mediante include_once/require_once/include/require './My_Module_directory/...';
- Todas las inclusiones de archivos realizadas por los hook/triger/casos espaciales deben realizarse mediante dol_include_once('/My_Module_directory/...'):
4-Enlaces
Todos los enlaces gestionador por HTML hacia páginas específicas (href, src,...) del módulo deberían usar getNomURL de la clase de un objeto o alernativamente usando dol_buildpath
5-Modificaciones de archivos del core Dolibarr
Si son necesarias modificaciones de archivos del core de Dolibarr para el funcionamiento del módulo. Serán aceptadas:
- Si son subidas a la rama dev del GitHub de Dolibarr (agregar función a las clases estándar sin riesgo de regresión, html.form.class.php / function.lib.php, etc.)
- Si se añade hook, trigger o función, o se añaden parámetros opcionales a funciones existentes.
6 - Modificaciones a los archivos principales de Dolibarr
Dado el punto anterior, si se requieren modificaciones a los archivos principales de Dolibarr para el módulo, estas deben enviarse al proyecto Dolibarr a través de GitHub. Se aceptarán:
- Si se suben a la rama de desarrollo de Dolibarr en GitHub (en el caso de mejoras de funcionalidades de Dolibarr).
- Si implican la adición de ganchos, activadores o funciones, o la adición de parámetros opcionales a funciones existentes. La adición de ganchos permite que un módulo externo integre su propio código en cualquier parte del código base de Dolibarr.
7 - Reglas para las funciones implementadas
El módulo puede solicitar a sitios externos que envíen o recopilen información solo en los siguientes casos:
- Necesidades relacionadas con la funcionalidad del módulo. Un módulo de sincronización o notificación puede transferir mensajes como parte de la sincronización.
- Necesidades para fines estadísticos del autor del módulo. En este caso, el módulo debe proporcionar una opción que permita al usuario desactivar esta función. *Los servidores con los que se comunica el módulo no deben usar un nombre de dominio que infrinja las normas de uso de la marca registrada Dolibarr en nombres de dominio (Consulte Reglas_para_usar_el_nombre_"Dolibarr")
8 - Calidad del código
El código debe cumplir con las mismas reglas y estándares de lenguaje que la aplicación Dolibarr. Estas reglas son: Lenguaje_y_Normas_de_Desarrollo
9 - Reglas para archivos de idioma
Si su módulo está disponible en un idioma distinto del inglés, siempre debe contener un archivo para el idioma en_US, incluso si está destinado a usuarios que solo usan otro idioma. Por lo tanto, si su módulo está solo en inglés, solo puede contener el archivo langs/en_US/mymodule.lang. Sin embargo, si también está disponible en otro idioma, debe tener al menos un archivo langs/en_US/mymodule.lang y un archivo lang/xx_XX/mymodule.lang. Además, el archivo de inglés siempre debe estar completo (ninguna entrada de idioma debe estar en un idioma diferente al del archivo de inglés). Nota: Puede copiar y pegar su archivo de idioma en una herramienta de traducción en línea para obtener un archivo completo en inglés si tiene prisa.
10 - Normas de cumplimiento legal
Las funcionalidades ofrecidas por el módulo no deben infringir la legislación vigente en el país donde se vende el módulo ni la legislación europea (incluido el cumplimiento del RGPD).
Publicación en dolistore
MetaPaquetes
Si su módulo es un "metapaquete", por lo tanto, un módulo que incluye varios módulos, debe incluir un archivo llamado 'metapackage.conf' en el directorio principal con el nombre de la lista de todos los demás módulos proporcionados por su paquete. Por ejemplo, la imagen de su módulo se llama "mymetapack". Al instalar este módulo, también instala los módulos "abc" y "def". Por lo tanto, debe incluir en el zip de su paquete un archivo * mymetapack / metapackage.conf * con el siguiente contenido:
# Este archivo describe todos los módulos incluidos en el zip module_mymetapack-x.y.zip
mymetapack
abd
def
La implementación de un metapaquete desde el asistente de implementación de Dolibarr solo es posible con Dolibarr v11 +
Idioma
La descripción del producto se requiere en inglés.
Soporte
Si el módulo es de pago, es obligatorio indicar en la descripción del producto un e-mail o canal de soporte a los usuarios. Es obligatoria la descripción del producto en Inglés, Francés y Español (así como el enlace de soporte)
Módulos nuevos (primera publicación)
Si tu módulo es nuevo y nunca se ha publicado en DoliStore, debes solicitar su activación al equipo de DoliStore. Asegúrate de cumplir con todas las directrices antes de solicitar la publicación del módulo.