diff --git a/ChangeLog b/ChangeLog
index 4525d48049d..285efc6f481 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -199,8 +199,7 @@ NEW: add option "If the feature to manage kits of module Stock is used, show det
For developers:
---------------
-NEW: add substitution key __MEMBER_TYPE__
-NEW: add substitution key __TYPE__
+NEW: add __MEMBER_TYPE__ and __TYPE__ substitution key
NEW: add function dolButtonToOpenUrlInDialogPopup() to be able to open page into a popup
NEW: show line number on intervention card (via MAIN_VIEW_LINE_NUMBER)
NEW: add some fields to link website page to an other object
@@ -212,12 +211,9 @@ NEW: can add event to log into blockedlog module with a constant
NEW: add property cssview when declaring fields of an object
NEW: can use dynamic code into the 'enabled' property of DAO fields
NEW: field ref_ext in llx_commandedet
-NEW: field ref_ext for Attributes and Combinations
+NEW: fields ref_ext for Attributes and Combinations
NEW: OAuth SCOPE for Admin SDK
-NEW: retrieve discount from invoice from API
NEW: standardizes API thirdparties by email like other object
-NEW: Thirdparty REST API: endpoint to set price level
-NEW: use new category API for project list view
NEW: Triggers Attributes and Attributes values
NEW: add incoterms data into the substitution array
NEW: add send context for ticket
@@ -234,11 +230,12 @@ NEW: API can update a payment
NEW: API get member by thirdparty
NEW: API get thirdparty by barcode
NEW: API get users by email / login
-NEW: allow to edit field "demand reason" through API
NEW: fetch contact by email with REST API
-NEW: get state by REST API
-NEW: get state dictionary by REST API
-NEW: improve Product API for product variants
+NEW: get state dictionnary by REST API
+NEW: improve Product API for variant products
+NEW: retrieve discount from invoice from API
+NEW: Thirdparty REST API: endpoint to set price level
+NEW: use new category API for project list view
HOOKs
NEW: add hook on propal card
@@ -256,7 +253,7 @@ Following changes may create regressions for some external modules, but were nec
* All properties ->titre have been renamed into ->title
* Property $paiementid in API 'api_supplier_invoices.php' has been renamed into into $payment_mode_id
* Property 'num_paiement' has been renamed 'num_payment' everywhere for better code consistency.
-* The deprecated subsitution key __SIGNATURE__ has been removed. Use __USER_SIGNATURE__ if you used the old syntax in your email templates.
+* The deprecated subsitution key __SIGNATURE__ has been removed. Replace it with __USER_SIGNATURE__ if you used the old syntax in your email templates.
* The hidden option HOLIDAY_MORE_PUBLIC_HOLIDAYS has been removed. Use instead the dictionary table if you need to define custom days of holiday.
* If you build a class that implement CommonObject to use the incoterm properties or methods (->fk_incoterm, ->label_incoterm, ->location_incoterm),
you must now also include declaration of the Trait 'CommonIncoterm' in your class. All incoterm functions were moved into this Trait.
@@ -269,6 +266,7 @@ Following changes may create regressions for some external modules, but were nec
* Context for hook showSocinfoOnPrint has been moved from "showsocinfoonprint" to "main"
* Library htdocs/includes/phpoffice/phpexcel as been removed (replaced with htdocs/includes/phpoffice/PhpSpreadsheet)
* Databse transaction in your triggers must be correctly balanced (one close for one open). If not, an error will be returned by the trigger, even if trigger did return error code.
+* Dolibarr v13 is still compatible with any PHP version between 5.6.0 and 7.4.*; Unit tests are OK with PHP 8.0 but some warnings or troubles may appears with PHP 8.0.
***** ChangeLog for 12.0.4 compared to 12.0.3 *****
diff --git a/htdocs/admin/mails.php b/htdocs/admin/mails.php
index 5e32a637c8f..88ae8964c1b 100644
--- a/htdocs/admin/mails.php
+++ b/htdocs/admin/mails.php
@@ -532,6 +532,7 @@ if ($action == 'edit')
print ''.$langs->trans("EMailsDesc")."
\n";
print "
\n";
+ print '
'; // You can use div-table-responsive-no-min if you dont need reserved height for your table
print '
';
print '| '.$langs->trans("Parameter").' | '.$langs->trans("Value").' |
';
@@ -552,10 +553,12 @@ if ($action == 'edit')
}
print '
';
+ print '
';
if (empty($conf->global->MAIN_DISABLE_ALL_MAILS)) {
print '
';
+ print ''; // You can use div-table-responsive-no-min if you dont need reserved height for your table
print '
';
print '| '.$langs->trans("MAIN_MAIL_SENDMODE").' | |
';
@@ -663,6 +666,7 @@ if ($action == 'edit')
}
print '
';
+ print '
';
if ($conf->global->MAIN_MAIL_SENDMODE == 'mail' && empty($conf->global->MAIN_HIDE_WARNING_TO_ENCOURAGE_SMTP_SETUP)) {
print info_admin($langs->trans("WarningPHPMail").'
'.$langs->trans("WarningPHPMailA").'
'.$langs->trans("WarningPHPMailB").'
'.$langs->trans("WarningPHPMailC").'
'.$langs->trans("WarningPHPMailD"), 0, 0, 'warning');
@@ -670,11 +674,12 @@ if ($action == 'edit')
print '
';
+ print ''; // You can use div-table-responsive-no-min if you dont need reserved height for your table
print '
';
print '| '.$langs->trans("OtherOptions").' | |
';
// From
- print '| '.$langs->trans("MAIN_MAIL_EMAIL_FROM", ini_get('sendmail_from') ?ini_get('sendmail_from') : $langs->transnoentities("Undefined")).' | ';
+ print '
| '.$langs->trans("MAIN_MAIL_EMAIL_FROM", ini_get('sendmail_from') ?ini_get('sendmail_from') : $langs->transnoentities("Undefined")).' | ';
print ''.$conf->global->MAIN_MAIL_EMAIL_FROM;
if (!empty($conf->global->MAIN_MAIL_EMAIL_FROM) && !isValidEmail($conf->global->MAIN_MAIL_EMAIL_FROM)) print img_warning($langs->trans("ErrorBadEMail"));
print ' |
';
@@ -746,6 +751,7 @@ if ($action == 'edit')
print '| '.$langs->trans("MAIN_MAIL_ENABLED_USER_DEST_SELECT").' | '.yn($conf->global->MAIN_MAIL_ENABLED_USER_DEST_SELECT).' |
';
print '
';
+ print '
';
}
print dol_get_fiche_end();
diff --git a/htdocs/core/lib/admin.lib.php b/htdocs/core/lib/admin.lib.php
index f3faeda4b3a..ce9ffb31697 100644
--- a/htdocs/core/lib/admin.lib.php
+++ b/htdocs/core/lib/admin.lib.php
@@ -1870,11 +1870,6 @@ function email_admin_prepare_head()
}
}
- $head[$h][0] = DOL_URL_ROOT."/admin/mails_templates.php";
- $head[$h][1] = $langs->trans("EMailTemplates");
- $head[$h][2] = 'templates';
- $h++;
-
if (!empty($user->admin) && (empty($_SESSION['leftmenu']) || $_SESSION['leftmenu'] != 'email_templates')) {
$head[$h][0] = DOL_URL_ROOT."/admin/mails_senderprofile_list.php";
$head[$h][1] = $langs->trans("EmailSenderProfiles");
@@ -1882,6 +1877,11 @@ function email_admin_prepare_head()
$h++;
}
+ $head[$h][0] = DOL_URL_ROOT."/admin/mails_templates.php";
+ $head[$h][1] = $langs->trans("EMailTemplates");
+ $head[$h][2] = 'templates';
+ $h++;
+
complete_head_from_modules($conf, $langs, null, $head, $h, 'email_admin', 'remove');
return $head;
diff --git a/htdocs/core/lib/functions.lib.php b/htdocs/core/lib/functions.lib.php
index 7fd4a416790..b21b4c3e839 100644
--- a/htdocs/core/lib/functions.lib.php
+++ b/htdocs/core/lib/functions.lib.php
@@ -5786,7 +5786,7 @@ function dol_string_nohtmltag($stringtoclean, $removelinefeed = 1, $pagecodeto =
$temp = preg_replace($pattern, "", $temp); // pass 1 - $temp after pass 1: 0000-021
$temp = preg_replace($pattern, "", $temp); // pass 2 - $temp after pass 2: 0000-021
// removed '<' into non closing html tags like 'assertEquals(400, $tmp['http_code'], 'GET url to '.$url.' that is a local URL'); // Test we receive an error because localtest.me is not an external URL
/*$url = 'localtest.me';
- $tmp = getURLContent($url, 'GET', '', 0, array(), array('http', 'https'), 0); // Only external URL
- print __METHOD__." url=".$url."\n";
- $this->assertEquals(400, $tmp['http_code'], 'GET url to '.$url.' that resolves to a local URL'); // Test we receive an error because localtest.me is not an external URL
- */
+ $tmp = getURLContent($url, 'GET', '', 0, array(), array('http', 'https'), 0); // Only external URL
+ print __METHOD__." url=".$url."\n";
+ $this->assertEquals(400, $tmp['http_code'], 'GET url to '.$url.' that resolves to a local URL'); // Test we receive an error because localtest.me is not an external URL
+ */
return 0;
}