From 6b42b48d202940356e7cf2467d3e9968c282132e Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 11 Jan 2024 02:47:42 +0100 Subject: [PATCH] NEW Can generate the email selector file --- .../modules/mailings/modules_mailings.php | 22 ++++++----- htdocs/modulebuilder/index.php | 38 ++++++++++++++++++- ...=> mailing_mymodule_selector1.modules.php} | 6 +-- 3 files changed, 51 insertions(+), 15 deletions(-) rename htdocs/modulebuilder/template/core/modules/mailings/{mailinglist_mymodule_myobject.modules.php => mailing_mymodule_selector1.modules.php} (96%) diff --git a/htdocs/core/modules/mailings/modules_mailings.php b/htdocs/core/modules/mailings/modules_mailings.php index 46b50579eb0..06fb4f6125a 100644 --- a/htdocs/core/modules/mailings/modules_mailings.php +++ b/htdocs/core/modules/mailings/modules_mailings.php @@ -316,12 +316,12 @@ class MailingTargets // This can't be abstract as it is used for some method $orders = array(); $i = 0; - $dirwidget = array('/core/emailings/'); // $conf->modules_parts['emailings'] is not required + $diremailselector = array('/core/modules/mailings/'); // $conf->modules_parts['emailings'] is not required if (is_array($forcedir)) { - $dirwidget = $forcedir; + $diremailselector = $forcedir; } - foreach ($dirwidget as $reldir) { + foreach ($diremailselector as $reldir) { $dir = dol_buildpath($reldir, 0); $newdir = dol_osencode($dir); @@ -334,20 +334,22 @@ class MailingTargets // This can't be abstract as it is used for some method if (is_resource($handle)) { while (($file = readdir($handle)) !== false) { $reg = array(); - if (is_readable($newdir.'/'.$file) && preg_match('/^(.+)\.php/', $file, $reg)) { + if (is_readable($newdir.'/'.$file) && preg_match('/^(.+)\.modules.php/', $file, $reg)) { if (preg_match('/\.back$/', $file) || preg_match('/^(.+)\.disabled\.php/', $file)) { continue; } $part1 = $reg[1]; - $modName = ucfirst($reg[1]); - //print "file=$file"; print "modName=$modName"; exit; + //$modName = ucfirst($reg[1]); + $modName = 'mailing_'.$reg[1]; // name of selector submodule + //print "file=$file modName=$modName"; exit; if (in_array($modName, $modules)) { $langs->load("errors"); - print '
'.$langs->trans("Error").' : '.$langs->trans("ErrorDuplicateWidget", $modName, "").'
'; + print '
'.$langs->trans("Error").' : '.$langs->trans("ErrorDuplicateEmalingSelector", $modName, "").'
'; } else { try { + //print $newdir.'/'.$file; include_once $newdir.'/'.$file; } catch (Exception $e) { print $e->getMessage(); @@ -357,7 +359,7 @@ class MailingTargets // This can't be abstract as it is used for some method $files[$i] = $file; $fullpath[$i] = $dir.'/'.$file; $relpath[$i] = preg_replace('/^\//', '', $reldir).'/'.$file; - $iscoreorexternal[$i] = ($reldir == '/core/boxes/' ? 'internal' : 'external'); + $iscoreorexternal[$i] = ($reldir == '/core/modules/mailings/' ? 'internal' : 'external'); $modules[$i] = $modName; $orders[$i] = $part1; // Set sort criteria value @@ -374,7 +376,7 @@ class MailingTargets // This can't be abstract as it is used for some method $widget = array(); $j = 0; - // Loop on each widget + // Loop on each emailing selector foreach ($orders as $key => $value) { $modName = $modules[$key]; if (empty($modName)) { @@ -382,7 +384,7 @@ class MailingTargets // This can't be abstract as it is used for some method } if (!class_exists($modName)) { - print 'Error: A widget file was found but its class "'.$modName.'" was not found.'."
\n"; + print 'Error: An emailing selector file was found but its class "'.$modName.'" was not found.'."
\n"; continue; } diff --git a/htdocs/modulebuilder/index.php b/htdocs/modulebuilder/index.php index 85c5f27a81a..73ab1f316c7 100644 --- a/htdocs/modulebuilder/index.php +++ b/htdocs/modulebuilder/index.php @@ -643,6 +643,40 @@ if ($dirins && $action == 'initwidget' && !empty($module)) { } +// init EmailSelector +if ($dirins && $action == 'initemailing' && !empty($module)) { + dol_mkdir($dirins.'/'.strtolower($module).'/core/modules/mailings'); + $srcdir = DOL_DOCUMENT_ROOT.'/modulebuilder/template'; + $srcfile = $srcdir.'/core/modules/mailings/mailing_mymodule_myobject.modules.php'; + $destfile = $dirins.'/'.strtolower($module).'/core/modules/mailings/mailing_'.strtolower($module).'_selector1.modules.php'; + //var_dump($srcfile); + //var_dump($destfile); + $result = dol_copy($srcfile, $destfile, 0, 0); + + if ($result > 0) { + $modulename = ucfirst($module); // Force first letter in uppercase + + //var_dump($phpfileval['fullname']); + $arrayreplacement = array( + 'mymodule'=>strtolower($modulename), + 'MyModule'=>$modulename, + 'MYMODULE'=>strtoupper($modulename), + 'My module'=>$modulename, + 'my module'=>$modulename, + 'Mon module'=>$modulename, + 'mon module'=>$modulename, + 'htdocs/modulebuilder/template'=>strtolower($modulename), + '---Put here your own copyright and developer email---'=>dol_print_date($now, '%Y').' '.$user->getFullName($langs).($user->email ? ' <'.$user->email.'>' : '') + ); + + dolReplaceInFile($destfile, $arrayreplacement); + } else { + $langs->load("errors"); + setEventMessages($langs->trans('ErrorFailToCreateFile', $destfile), null, 'errors'); + } +} + + // init CSS if ($dirins && $action == 'initcss' && !empty($module)) { dol_mkdir($dirins.'/'.strtolower($module).'/css'); @@ -3299,7 +3333,7 @@ if ($module == 'initmodule') { $countMenus = count($moduleobj->menu); $countTriggers = countItemsInDirectory(dol_buildpath($modulelowercase, 0)."/core/triggers"); $countWidgets = countItemsInDirectory(dol_buildpath($modulelowercase, 0)."/core/boxes"); - $countEmailingSelectors = countItemsInDirectory(dol_buildpath($modulelowercase, 0)."/core/emailings"); + $countEmailingSelectors = countItemsInDirectory(dol_buildpath($modulelowercase, 0)."/core/modules/mailings"); $countCss = countItemsInDirectory(dol_buildpath($modulelowercase, 0)."/css"); $countJs = countItemsInDirectory(dol_buildpath($modulelowercase, 0)."/js"); $countCLI = countItemsInDirectory(dol_buildpath($modulelowercase, 0)."/scripts"); @@ -5947,7 +5981,7 @@ if ($module == 'initmodule') { print ''."\n"; require_once DOL_DOCUMENT_ROOT.'/core/modules/mailings/modules_mailings.php'; - $emailingselectors = MailingTargets::getEmailingSelectorsList(array('/'.strtolower($module).'/core/mailings')); + $emailingselectors = MailingTargets::getEmailingSelectorsList(array('/'.strtolower($module).'/core/modules/mailings')); if ($action != 'editfile' || empty($file)) { print ''.$langs->trans("EmailingSelectorDesc").'
'; diff --git a/htdocs/modulebuilder/template/core/modules/mailings/mailinglist_mymodule_myobject.modules.php b/htdocs/modulebuilder/template/core/modules/mailings/mailing_mymodule_selector1.modules.php similarity index 96% rename from htdocs/modulebuilder/template/core/modules/mailings/mailinglist_mymodule_myobject.modules.php rename to htdocs/modulebuilder/template/core/modules/mailings/mailing_mymodule_selector1.modules.php index 1e1a2267067..2b29b250353 100644 --- a/htdocs/modulebuilder/template/core/modules/mailings/mailinglist_mymodule_myobject.modules.php +++ b/htdocs/modulebuilder/template/core/modules/mailings/mailing_mymodule_selector1.modules.php @@ -15,12 +15,12 @@ dol_include_once("/mymodule/class/myobject.class.php"); /** * mailing_mailinglist_mymodule */ -class mailing_mailinglist_mymodule_myobject extends MailingTargets +class mailing_mailing_mymodule_selector1 extends MailingTargets { // CHANGE THIS: Put here a name not already used - public $name = 'mailinglist_mymodule_myobject'; + public $name = 'mailing_mymodule_selector1'; // CHANGE THIS: Put here a description of your selector module - public $desc = 'My object emailing target selector'; + public $desc = 'Emailing target selector1'; // CHANGE THIS: Set to 1 if selector is available for admin users only public $require_admin = 0;