Módulos - Packages validación y DoliStore reglas: Difference between revisions

Jump to navigation Jump to search
m
mNo edit summary
Tag: 2017 source edit
Tag: 2017 source edit
Line 23: Line 23:
== Reglas sobre el código ==
== Reglas sobre el código ==


=== Estructura ===
=== 1-Estructura ===
Todos los archivos del módulo deben estar el el directorio del módulo, ejemplo en '''htdocs/modulebuilder/template'''
Todos los archivos del módulo deben estar el el directorio del módulo, ejemplo en '''htdocs/modulebuilder/template'''


{{TemplateModuleTreeSimple}}
{{TemplateModuleTreeSimple}}


=== Inclusión ===  
=== 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).
 
<syntaxhighlight lang="PHP">
// 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");
</syntaxhighlight>
 
=== 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 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 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/...'):
*Todas las inclusiones de archivos realizadas por los hook/triger/casos espaciales deben realizarse mediante dol_include_once('/My_Module_directory/...'):


=== Enlaces ===  
=== 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
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  ===
=== 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 necesarias modificaciones de archivos del core de Dolibarr para el funcionamiento del módulo. Serán aceptadas:


Navigation menu