From c26d24e97d798bdc89f07857fbb67cc6ec559f13 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 8 May 2017 23:55:46 +0200 Subject: [PATCH] Work on module builder --- .tx/config | 24 +++- htdocs/langs/en_US/errors.lang | 1 + htdocs/langs/en_US/modulebuilder.lang | 10 +- htdocs/modulebuilder/index.php | 155 +++++++++++++++++++++----- 4 files changed, 152 insertions(+), 38 deletions(-) diff --git a/.tx/config b/.tx/config index 010227f6e61ae..02ec4bc8b99be 100644 --- a/.tx/config +++ b/.tx/config @@ -224,6 +224,18 @@ source_file = htdocs/langs/en_US/members.lang source_lang = en_US type = MOZILLAPROPERTIES +[dolibarr.members] +file_filter = htdocs/langs//modulebuilder.lang +source_file = htdocs/langs/en_US/modulebuilder.lang +source_lang = en_US +type = MOZILLAPROPERTIES + +[dolibarr.members] +file_filter = htdocs/langs//multicurrency.lang +source_file = htdocs/langs/en_US/multicurrency.lang +source_lang = en_US +type = MOZILLAPROPERTIES + [dolibarr.oauth] file_filter = htdocs/langs//oauth.lang source_file = htdocs/langs/en_US/oauth.lang @@ -350,18 +362,18 @@ source_file = htdocs/langs/en_US/users.lang source_lang = en_US type = MOZILLAPROPERTIES -[dolibarr.withdrawals] -file_filter = htdocs/langs//withdrawals.lang -source_file = htdocs/langs/en_US/withdrawals.lang -source_lang = en_US -type = MOZILLAPROPERTIES - [dolibarr.website] file_filter = htdocs/langs//website.lang source_file = htdocs/langs/en_US/website.lang source_lang = en_US type = MOZILLAPROPERTIES +[dolibarr.withdrawals] +file_filter = htdocs/langs//withdrawals.lang +source_file = htdocs/langs/en_US/withdrawals.lang +source_lang = en_US +type = MOZILLAPROPERTIES + [dolibarr.workflow] file_filter = htdocs/langs//workflow.lang source_file = htdocs/langs/en_US/workflow.lang diff --git a/htdocs/langs/en_US/errors.lang b/htdocs/langs/en_US/errors.lang index 4f700109c3346..79984981e87f5 100644 --- a/htdocs/langs/en_US/errors.lang +++ b/htdocs/langs/en_US/errors.lang @@ -165,6 +165,7 @@ ErrorGlobalVariableUpdater5=No global variable selected ErrorFieldMustBeANumeric=Field %s must be a numeric value ErrorMandatoryParametersNotProvided=Mandatory parameter(s) not provided ErrorOppStatusRequiredIfAmount=You set an estimated amount for this opportunity/lead. So you must also enter its status +ErrorFailedToLoadModuleDescriptorForXXX=Failed to load module descriptor class for %s ErrorBadDefinitionOfMenuArrayInModuleDescriptor=Bad Definition Of Menu Array In Module Descriptor (bad value for key fk_menu) ErrorSavingChanges=An error has ocurred when saving the changes ErrorWarehouseRequiredIntoShipmentLine=Warehouse is required on the line to ship diff --git a/htdocs/langs/en_US/modulebuilder.lang b/htdocs/langs/en_US/modulebuilder.lang index ef86062bbd0cc..81a34b66b85e8 100644 --- a/htdocs/langs/en_US/modulebuilder.lang +++ b/htdocs/langs/en_US/modulebuilder.lang @@ -1,4 +1,8 @@ # Dolibarr language file - Source file is en_US - loan -ModuleBuilderDesc=This tools give you utilites to build your own module. -ModuleBuilderDesc2=Path were modules are generated (first alternative directory defined into %s): %s. -They are detected when the file %s exists in root of module directory. +ModuleBuilderDesc=This tools give you utilites to build or edit your own module. +ModuleBuilderDesc2=Path were modules are generated/edited (first alternative directory defined into %s): %s. +ModuleBuilderDesc3=Modules found: %s (they are detected as editable when the file %s exists in root of module directory). +NewModule=New module +ModuleKey=Key for new module + + diff --git a/htdocs/modulebuilder/index.php b/htdocs/modulebuilder/index.php index 844d1377b5d80..6ad747a769438 100644 --- a/htdocs/modulebuilder/index.php +++ b/htdocs/modulebuilder/index.php @@ -31,6 +31,11 @@ $action=GETPOST('action','alpha'); $confirm=GETPOST('confirm','alpha'); +$module=GETPOST('module'); +$tab=GETPOST('tab'); +if (empty($module)) $module='initmodule'; +if (empty($tab)) $tab='description'; + // Security check if (! $user->admin && empty($conf->global->MODULEBUILDER_FOREVERYONE)) accessforbidden('ModuleBuilderNotAllowed'); @@ -41,6 +46,7 @@ $tmp=explode(',', $dolibarr_main_document_root_alt); $dircustom = $tmp[0]; +$FILEFLAG='modulebuilder.txt'; /* @@ -54,8 +60,6 @@ $result = dolCopyDir($srcfile, $destfile, 0, 0); //dol_mkdir($destfile); - fopen($destfile, $mode) - if ($result > 0) { setEventMessages('ModuleInitialized', null); @@ -71,9 +75,6 @@ * View */ -$socstatic=new Societe($db); - - llxHeader("",$langs->trans("ModuleBuilder"),""); @@ -81,23 +82,6 @@ print load_fiche_titre($text, '', 'title_setup'); -// Show description of content -print $langs->trans("ModuleBuilderDesc").'
'; -print $langs->trans("ModuleBuilderDesc2", 'conf/conf.php', $dircustom).'
'; -print '
'; - - -// New module -print '
'; -print '
'; -print ''; -print ''; -print ''; -print ''; -print '
'; -print '
'; - - $listofmodules=array(); /* if (!empty($conf->modulebuilder->enabled) && $mainmenu == 'modulebuilder') // Entry for Module builder @@ -107,16 +91,16 @@ { foreach ($dolibarr_main_document_root_alt as $diralt) {*/ - $dirsincustom=dol_dir_list($dircustom); + $dirsincustom=dol_dir_list($dircustom, 'directories'); if (is_array($dirsincustom) && count($dirsincustom) > 0) { - foreach ($dirsincustom as $dircustom) + foreach ($dirsincustom as $dircustomcursor) { - $fullname = $dircustom['fullname']; - if (dol_is_file($fullname.'/modulebuilder.txt')) + $fullname = $dircustomcursor['fullname']; + if (dol_is_file($fullname.'/'.$FILEFLAG)) { - $listofmodules[$module]=$fullname; + $listofmodules[$dircustomcursor['name']]=$fullname; } } } @@ -127,11 +111,124 @@ $newmenu->add('', 'NoGeneratedModuleFound', 0, 0); }*/ -foreach($listofmodules as $modules => $fullname) + +// Show description of content +print $langs->trans("ModuleBuilderDesc").'
'; +print $langs->trans("ModuleBuilderDesc2", 'conf/conf.php', $dircustom).'
'; +print $langs->trans("ModuleBuilderDesc3", count($listofmodules), $FILEFLAG).'
'; +print '
'; + + +print '
'; + +$head = array(); +$h=0; + +$head[$h][0] = $_SERVER["PHP_SELF"].'?module=initmodule'; +$head[$h][1] = $langs->trans("NewModule"); +$head[$h][2] = 'initmodule'; +$h++; + +foreach($listofmodules as $tmpmodule => $fullname) { - print '
'; + print ''; + print ''; + print ''; + print ''; + print ''; + print ''; +} +elseif (! empty($module)) +{ + $error=0; + + // Load module + dol_include_once($module.'/core/modules/mod'.ucfirst($module).'.class.php'); + $class='mod'.ucfirst($module); + if (class_exists($class)) + { + try { + $moduleobj = new $class($db); + } + catch(Exception $e) + { + $error++; + print $e->getMessage(); + } + } + else + { + $error++; + $langs->load("errors"); + print img_warning('').' '.$langs->trans("ErrorFailedToLoadModuleDescriptorForXXX", $module); + } + + // Button to delete module + + + // Tabs for module + if (! $error) + { + $head2 = array(); + $h=0; + + foreach($listofmodules as $tmpmodule => $fullname) + { + $head2[$h][0] = $_SERVER["PHP_SELF"].'?tab=description'; + $head2[$h][1] = $langs->trans("Description"); + $head2[$h][2] = 'description'; + $h++; + $head2[$h][0] = $_SERVER["PHP_SELF"].'?tab=objects'; + $head2[$h][1] = $langs->trans("Objects"); + $head2[$h][2] = 'objects'; + $h++; + + $head2[$h][0] = $_SERVER["PHP_SELF"].'?tab='.$tmpmodule; + $head2[$h][1] = $langs->trans("Menus"); + $head2[$h][2] = 'menus'; + $h++; + + $head2[$h][0] = $_SERVER["PHP_SELF"].'?tab='.$tmpmodule; + $head2[$h][1] = $langs->trans("Permissions"); + $head2[$h][2] = 'permissions'; + $h++; + + $head2[$h][0] = $_SERVER["PHP_SELF"].'?tab='.$tmpmodule; + $head2[$h][1] = $langs->trans("Triggers"); + $head2[$h][2] = 'triggers'; + $h++; + } + + dol_fiche_head($head2, $tab, '', -1, ''); + + print $moduleobj->getDescLong(); + + + + + + dol_fiche_end(); + } +} + +dol_fiche_end(); + + llxFooter();