diff --git a/htdocs/accountancy/class/bookkeeping.class.php b/htdocs/accountancy/class/bookkeeping.class.php index b284b42cfeb..bf3594e967d 100644 --- a/htdocs/accountancy/class/bookkeeping.class.php +++ b/htdocs/accountancy/class/bookkeeping.class.php @@ -248,7 +248,7 @@ class BookKeeping extends CommonObject // First check if line not yet already in bookkeeping. // Note that we must include doc_type - fk_doc - numero_compte - label to be sure to have unicity of line (we may have several lines - // with same doc_type, fk_odc, numero_compte for 1 invoice line when using localtaxes with same account) + // with same doc_type, fk_doc, numero_compte for 1 invoice line when using localtaxes with same account) // WARNING: This is not reliable, label may have been modified. This is just a small protection. // The page to make journalization make the test on couple doc_type - fk_doc only. $sql = "SELECT count(*) as nb"; @@ -1700,11 +1700,11 @@ class BookKeeping extends CommonObject $error++; } $sql = 'INSERT INTO ' . MAIN_DB_PREFIX . $this->table_element.'(doc_date, doc_type,'; - $sql .= ' doc_ref, fk_doc, fk_docdet, thirdparty_code, subledger_account, subledger_label,'; + $sql .= ' doc_ref, fk_doc, fk_docdet, entity, thirdparty_code, subledger_account, subledger_label,'; $sql .= ' numero_compte, label_compte, label_operation, debit, credit,'; $sql .= ' montant, sens, fk_user_author, import_key, code_journal, journal_label, piece_num)'; $sql .= 'SELECT doc_date, doc_type,'; - $sql .= ' doc_ref, fk_doc, fk_docdet, thirdparty_code, subledger_account, subledger_label,'; + $sql .= ' doc_ref, fk_doc, fk_docdet, entity, thirdparty_code, subledger_account, subledger_label,'; $sql .= ' numero_compte, label_compte, label_operation, debit, credit,'; $sql .= ' montant, sens, fk_user_author, import_key, code_journal, journal_label, '.$next_piecenum.''; $sql .= ' FROM '.MAIN_DB_PREFIX . $this->table_element.'_tmp WHERE piece_num = '.$piece_num; diff --git a/htdocs/admin/defaultvalues.php b/htdocs/admin/defaultvalues.php index 41c1c990d39..a946aeeacfd 100644 --- a/htdocs/admin/defaultvalues.php +++ b/htdocs/admin/defaultvalues.php @@ -352,7 +352,6 @@ if ($result) { $obj = $db->fetch_object($result); - print "\n"; print ''; @@ -383,10 +382,7 @@ if ($result) print ''; } - if (! empty($conf->multicompany->enabled) && !$user->entity) - { - print ''; - } + print ''; // Actions print ''; @@ -416,7 +412,6 @@ else dol_print_error($db); } - print ''; print ''; diff --git a/htdocs/core/class/utils.class.php b/htdocs/core/class/utils.class.php index 1899d78694e..6cacf353ca1 100644 --- a/htdocs/core/class/utils.class.php +++ b/htdocs/core/class/utils.class.php @@ -613,12 +613,13 @@ class Utils $FILENAMEASCII=strtolower($module).'.asciidoc'; $FILENAMEDOC=strtolower($module).'.html'; // TODO Use/text PDF - $dirofmodule = dol_buildpath(strtolower($module), 0).'/doc'; + $dirofmodule = dol_buildpath(strtolower($module), 0); + $dirofmoduledoc = dol_buildpath(strtolower($module), 0).'/doc'; $dirofmoduletmp = dol_buildpath(strtolower($module), 0).'/doc/temp'; - $outputfiledoc = $dirofmodule.'/'.$FILENAMEDOC; - if ($dirofmodule) + $outputfiledoc = $dirofmoduledoc.'/'.$FILENAMEDOC; + if ($dirofmoduledoc) { - if (! dol_is_dir($dirofmodule)) dol_mkdir($dirofmodule); + if (! dol_is_dir($dirofmoduledoc)) dol_mkdir($dirofmoduledoc); if (! dol_is_dir($dirofmoduletmp)) dol_mkdir($dirofmoduletmp); if (! is_writable($dirofmoduletmp)) { @@ -626,6 +627,13 @@ class Utils return -1; } + $conf->global->MODULEBUILDER_ASCIIDOCTOR='asciidoctor'; + if (empty($conf->global->MODULEBUILDER_ASCIIDOCTOR)) + { + $this->error = 'Setup of module ModuleBuilder not complete'; + return -1; + } + $destfile=$dirofmoduletmp.'/'.$FILENAMEASCII; $fhandle = fopen($destfile, 'w+'); @@ -637,6 +645,7 @@ class Utils foreach ($specs as $spec) { if (preg_match('/notindoc/', $spec['relativename'])) continue; // Discard file + if (preg_match('/example/', $spec['relativename'])) continue; // Discard file if (preg_match('/disabled/', $spec['relativename'])) continue; // Discard file $pathtofile = strtolower($module).'/doc/'.$spec['relativename']; @@ -662,17 +671,26 @@ class Utils // TODO fwrite($fhandle, "TODO..."); + + fwrite($fhandle, "\n\n\n== CHANGELOG...\n\n"); + + // TODO + fwrite($fhandle, "TODO..."); + + + fclose($fhandle); } - $conf->global->MODULEBUILDER_ASCIIDOCTOR='asciidoctor'; - if (empty($conf->global->MODULEBUILDER_ASCIIDOCTOR)) - { - dol_print_error('', 'Module setup not complete'); - exit; - } + // Copy some files into temp directory + dol_copy($dirofmodule.'/README.md', $dirofmoduletmp.'/README.md', 0, 1); + dol_copy($dirofmodule.'/ChangeLog.md', $dirofmoduletmp.'/ChangeLog.md', 0, 1); - $command=$conf->global->MODULEBUILDER_ASCIIDOCTOR.' '.$destfile.' -n -o '.$dirofmodule.'/'.$FILENAMEDOC; + // Launch doc generation + $currentdir = getcwd(); + chdir($dirofmodule); + + $command=$conf->global->MODULEBUILDER_ASCIIDOCTOR.' '.$destfile.' -n -o '.$dirofmoduledoc.'/'.$FILENAMEDOC; $outfile=$dirofmoduletmp.'/out.tmp'; require_once DOL_DOCUMENT_ROOT.'/core/class/utils.class.php'; @@ -683,6 +701,8 @@ class Utils $this->error = $resarray['error'].' '.$resarray['output']; } $result = ($resarray['result'] == 0) ? 1 : 0; + + chdir($currentdir); } else { diff --git a/htdocs/core/modules/modProduct.class.php b/htdocs/core/modules/modProduct.class.php index 8676f002757..aa64d7222a2 100644 --- a/htdocs/core/modules/modProduct.class.php +++ b/htdocs/core/modules/modProduct.class.php @@ -67,7 +67,7 @@ class modProduct extends DolibarrModules // Dependencies $this->hidden = false; // A condition to hide module $this->depends = array(); // List of module class names as string that must be enabled if this module is enabled - $this->requiredby = array("modStock","modBarcode","modProductBatch"); // List of module ids to disable if this one is disabled + $this->requiredby = array("modStock","modBarcode","modProductBatch","modVariants"); // List of module ids to disable if this one is disabled $this->conflictwith = array(); // List of module class names as string this module is in conflict with $this->phpmin = array(5,4); // Minimum version of PHP required by module diff --git a/htdocs/langs/en_US/modulebuilder.lang b/htdocs/langs/en_US/modulebuilder.lang index f8d4669b8e5..765edad6687 100644 --- a/htdocs/langs/en_US/modulebuilder.lang +++ b/htdocs/langs/en_US/modulebuilder.lang @@ -100,3 +100,4 @@ UseAboutPage=Disable the about page UseDocFolder=Disable the documentation folder UseSpecificReadme=Use a specific ReadMe RealPathOfModule=Real path of module +ContentCantBeEmpty=Content of file can't be empty \ No newline at end of file diff --git a/htdocs/modulebuilder/index.php b/htdocs/modulebuilder/index.php index f9ee16907fd..7e290055d43 100644 --- a/htdocs/modulebuilder/index.php +++ b/htdocs/modulebuilder/index.php @@ -94,6 +94,8 @@ if (empty($newmask)) // This should no happen if ($dirins && $action == 'initmodule' && $modulename) { + $modulename = ucfirst($modulename); // Force first letter in uppercase + if (preg_match('/[^a-z0-9_]/i', $modulename)) { $error++; @@ -150,6 +152,7 @@ if ($dirins && $action == 'initmodule' && $modulename) dol_delete_file($destdir.'/img/object_myobject.png'); dol_delete_file($destdir.'/class/myobject.class.php'); dol_delete_file($destdir.'/class/api_mymodule.class.php'); + dol_delete_file($destdir.'/doc/*example*'); } // Edit PHP files @@ -1124,11 +1127,6 @@ elseif (! empty($module)) $head2[$h][2] = 'description'; $h++; - $head2[$h][0] = $_SERVER["PHP_SELF"].'?tab=specifications&module='.$module.($forceddirread?'@'.$dirread:''); - $head2[$h][1] = $langs->trans("Specifications"); - $head2[$h][2] = 'specifications'; - $h++; - $head2[$h][0] = $_SERVER["PHP_SELF"].'?tab=languages&module='.$module.($forceddirread?'@'.$dirread:''); $head2[$h][1] = $langs->trans("Languages"); $head2[$h][2] = 'languages'; @@ -1169,6 +1167,11 @@ elseif (! empty($module)) $head2[$h][2] = 'cron'; $h++; + $head2[$h][0] = $_SERVER["PHP_SELF"].'?tab=specifications&module='.$module.($forceddirread?'@'.$dirread:''); + $head2[$h][1] = $langs->trans("Documentation"); + $head2[$h][2] = 'specifications'; + $h++; + $head2[$h][0] = $_SERVER["PHP_SELF"].'?tab=buildpackage&module='.$module.($forceddirread?'@'.$dirread:''); $head2[$h][1] = $langs->trans("BuildPackage"); $head2[$h][2] = 'buildpackage'; diff --git a/htdocs/modulebuilder/template/doc/Specifications.asciidoc b/htdocs/modulebuilder/template/doc/Specifications.asciidoc index 4610cb188f9..be8316c8cda 100644 --- a/htdocs/modulebuilder/template/doc/Specifications.asciidoc +++ b/htdocs/modulebuilder/template/doc/Specifications.asciidoc @@ -8,7 +8,7 @@ This document describe specifications of module MyModule -*Log of versions* +*Log of versions of document* [options="header",format="csv"] |=== @@ -24,3 +24,6 @@ This document was generated using Dolibarr ERP CRM process <<< +///include::README.md[] + +///include::ChangeLog.md[] diff --git a/htdocs/modulebuilder/template/doc/Specifications_full_en.notindoc.asciidoc b/htdocs/modulebuilder/template/doc/Specifications_full_en.example.asciidoc similarity index 100% rename from htdocs/modulebuilder/template/doc/Specifications_full_en.notindoc.asciidoc rename to htdocs/modulebuilder/template/doc/Specifications_full_en.example.asciidoc