31,026
edits
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: | ||