diff --git a/htdocs/admin/accounting.php b/htdocs/admin/accounting.php
index b32ce06ad22..e775f5bd8e3 100644
--- a/htdocs/admin/accounting.php
+++ b/htdocs/admin/accounting.php
@@ -55,7 +55,9 @@ $error = 0;
$help_url = '';
llxHeader('', $langs->trans("ConfigAccountingExpert"), $help_url);
-print load_fiche_titre($langs->trans("ConfigAccountingExpert"), '', 'title_setup');
+$linkback = ''.$langs->trans("BackToModuleList").'';
+
+print load_fiche_titre($langs->trans("ConfigAccountingExpert"), $linkback, 'title_setup');
print "
\n";
print ''.$langs->trans("AccountancySetupDoneFromAccountancyMenu", $langs->transnoentitiesnoconv("Accounting").' - '.$langs->transnoentitiesnoconv("Setup"))."
\n";
diff --git a/htdocs/admin/modules.php b/htdocs/admin/modules.php
index 84bf924139c..142d5accb0f 100644
--- a/htdocs/admin/modules.php
+++ b/htdocs/admin/modules.php
@@ -521,8 +521,8 @@ if ($mode == 'common' || $mode == 'commonkanban') {
$moreforfilter = '
';
$moreforfilter .= '';
@@ -584,6 +584,7 @@ if ($mode == 'common' || $mode == 'commonkanban') {
// Show list of modules
$oldfamily = '';
+ $foundoneexternalmodulewithupdate = 0;
$linenum = 0;
foreach ($orders as $key => $value) {
$linenum++;
@@ -915,6 +916,7 @@ if ($mode == 'common' || $mode == 'commonkanban') {
if ($objMod->needUpdate) {
$versionTitle = $langs->trans('ModuleUpdateAvailable').' : '.$objMod->lastVersion;
print ''.$versiontrans.'';
+ $foundoneexternalmodulewithupdate++;
} else {
print $versiontrans;
}
@@ -934,6 +936,14 @@ if ($mode == 'common' || $mode == 'commonkanban') {
}
}
+ if ($action == 'checklastversion') {
+ if ($foundoneexternalmodulewithupdate) {
+ setEventMessages($langs->trans("ModuleUpdateAvailable"), null, 'mesgs');
+ } else {
+ setEventMessages($langs->trans("NoExternalModuleWithUpdate"), null, 'mesgs');
+ }
+ }
+
if ($oldfamily) {
if ($mode == 'commonkanban') {
print '
';
diff --git a/htdocs/core/modules/DolibarrModules.class.php b/htdocs/core/modules/DolibarrModules.class.php
index 056be705f9e..30ee2bb72be 100644
--- a/htdocs/core/modules/DolibarrModules.class.php
+++ b/htdocs/core/modules/DolibarrModules.class.php
@@ -2310,9 +2310,9 @@ class DolibarrModules // Can not be abstract, because we need to instantiate it
}
/**
- * check for module update
+ * Check for module update
* TODO : store results for $this->url_last_version and $this->needUpdate
- * Add a cron task to monitor for updates
+ * Add a cron task to monitor for updates
*
* @return int <0 if Error, 0 == no update needed, >0 if need update
*/
diff --git a/htdocs/langs/en_US/admin.lang b/htdocs/langs/en_US/admin.lang
index 1d6e5f0d502..6a11c26c50c 100644
--- a/htdocs/langs/en_US/admin.lang
+++ b/htdocs/langs/en_US/admin.lang
@@ -2122,7 +2122,8 @@ IfCLINotRequiredYouShouldDisablePHPFunctions=Except if you need to run system co
NoWritableFilesFoundIntoRootDir=No writable files or directories of the common programs were found into your root directory (Good)
RecommendedValueIs=Recommended: %s
ARestrictedPath=A restricted path
-CheckForModuleUpdate=Check for modules updates
-CheckForModuleUpdateHelp=Check for modules updates.
This action will connect to modules editors to check if a new version is available.
-ModuleUpdateAvailable=An update is available for this module
+CheckForModuleUpdate=Check for external modules updates
+CheckForModuleUpdateHelp=This action will connect to editors of external modules to check if a new version is available.
+ModuleUpdateAvailable=An update is available
+NoExternalModuleWithUpdate=No updates found for external modules
SwaggerDescriptionFile=Swagger API description file (for use with redoc for example)