Debug v23

This commit is contained in:
Laurent Destailleur 2025-11-06 10:50:31 +01:00
parent a1bc0dc27c
commit 2f898ff188
10 changed files with 91 additions and 18 deletions

View file

@ -98,7 +98,8 @@ print load_fiche_titre($title, '', 'title_setup');
print '<div class="div-table-responsive-no-min">';
print '<table class="noborder centpercent">';
print '<tr class="liste_titre"><td class="titlefieldcreate">'.$langs->trans("Version").'</td><td></td></tr>'."\n";
print '<tr class="oddeven"><td>'.$langs->trans("CurrentVersion").'<br><span class="opacitymedium">('.$langs->trans("Programs").')</span></td><td>'.DOL_VERSION;
print '<tr class="oddeven"><td>'.$langs->trans("CurrentVersion").'<br><span class="opacitymedium">('.$langs->trans("Programs").')</span></td><td>';
print '<span class="badge-text badge-secondary">'.DOL_VERSION.'</span>';
// If current version differs from last upgrade
if (!getDolGlobalString('MAIN_VERSION_LAST_UPGRADE')) {
// Compare version with last install database version (upgrades never occurred)
@ -121,7 +122,7 @@ $urlofchangelog = 'https://raw.githubusercontent.com/Dolibarr/dolibarr/'.$versio
print ' &nbsp; ';
//print dolButtonToOpenUrlInDialogPopup('changelogpopup', $langs->trans("SeeChangeLog"), $langs->trans("SeeChangeLog"), $urlofchangelog);
print '<a href="'.$urlofchangelog.'" target="_blank" rel="noopener noreferrer external">'.$langs->trans("SeeChangeLog").'</a>';
print '<a href="'.$urlofchangelog.'" target="_blank" rel="noopener noreferrer external">'.img_picto('', 'url', 'class="paddingright"').$langs->trans("SeeChangeLog").'</a>';
$newversion = '';
if (function_exists('curl_init')) {
@ -148,7 +149,7 @@ if (function_exists('curl_init')) {
// Show version
print $langs->trans("LastStableVersion").' : <b>'.(($version != '0.0') ? $version : $langs->trans("Unknown")).'</b>';
if ($version != '0.0') {
print ' &nbsp; <a href="https://raw.githubusercontent.com/Dolibarr/dolibarr/'.$version.'/ChangeLog" target="_blank" rel="noopener noreferrer external">'.$langs->trans("SeeChangeLog").'</a>';
print ' &nbsp; <a href="https://raw.githubusercontent.com/Dolibarr/dolibarr/'.$version.'/ChangeLog" target="_blank" rel="noopener noreferrer external">'.img_picto('', 'url', 'class="paddingright"').$langs->trans("SeeChangeLog").'</a>';
}
} else {
print $langs->trans("LastStableVersion").' : <b>'.$langs->trans("UpdateServerOffline").'</b>';
@ -167,8 +168,10 @@ if (preg_match('/[a-z]+/i', $version)) {
}
print '</td></tr>'."\n";
print '<tr class="oddeven"><td>'.$langs->trans("VersionLastUpgrade").'<br><span class="opacitymedium">('.$langs->trans("Database").')</span></td><td>'.getDolGlobalString('MAIN_VERSION_LAST_UPGRADE').'</td></tr>'."\n";
print '<tr class="oddeven"><td>'.$langs->trans("VersionLastInstall").'<br><span class="opacitymedium">('.$langs->trans("Database").')</span></td><td>'.getDolGlobalString('MAIN_VERSION_LAST_INSTALL').'</td></tr>'."\n";
print '<tr class="oddeven"><td>'.$langs->trans("VersionLastUpgrade").'<br><span class="opacitymedium">('.$langs->trans("Database").')</span></td><td>';
print '<span class="badge-text badge-secondary">'.getDolGlobalString('MAIN_VERSION_LAST_UPGRADE').'</span></td></tr>'."\n";
print '<tr class="oddeven"><td>'.$langs->trans("VersionLastInstall").'<br><span class="opacitymedium">('.$langs->trans("Database").')</span></td><td>';
print '<span class="badge-text badge-secondary">'.getDolGlobalString('MAIN_VERSION_LAST_INSTALL').'</span></td></tr>'."\n";
print '</table>';
print '</div>';
print '<br>';

View file

@ -1132,10 +1132,16 @@ class Translate
* @param integer $forceloadall 1=Force to load all currencies into cache. We know we need to use all of them. By default read and cache only the requested currency.
* @return string Currency symbol encoded into UTF8
*/
public function getCurrencySymbol($currency_code, $forceloadall = 0)
public function getCurrencySymbol($currency_code = '', $forceloadall = 0)
{
global $conf;
$currency_sign = ''; // By default return iso code
if (empty($currency_code)) {
$currency_code = $conf->currency;
}
if (function_exists("mb_convert_encoding")) {
$this->loadCacheCurrencies($forceloadall ? '' : $currency_code);

View file

@ -15312,7 +15312,7 @@ function showValueWithClipboardCPButton($valuetocopy, $showonlyonhover = 1, $tex
$tag = 'span'; // Using div (like any style of type 'block') does not work when using the js copy code.
$result = '<span class="clipboardCP' . ($showonlyonhover ? ' clipboardCPShowOnHover' : '') . '">';
$result = '<span class="clipboardCP' . ($showonlyonhover ? ' clipboardCPShowOnHover valignmiddle' : '') . '">';
if ($texttoshow === 'none') {
$result .= '<' . $tag . ' class="clipboardCPValue hidewithsize">' . dol_escape_htmltag($valuetocopy, 1, 1) . '</' . $tag . '>';
$result .= '<span class="clipboardCPValueToPrint"></span>';

View file

@ -612,6 +612,26 @@ function showSkins($fuser, $edit = 0, $foruserprofile = false)
print yn(getDolGlobalString('THEME_ELDY_USEBORDERONTABLE'));
}
print $form->textwithpicto('', $langs->trans("NotSupportedByAllThemes"), 1, 'help', 'inline-block');
if (getDolGlobalString('THEME_ELDY_USEBORDERONTABLE')) {
$listofborderradius = array(
0 => $langs->transnoentitiesnoconv("No"),
4 => $langs->transnoentitiesnoconv("Size").' 4',
6 => $langs->transnoentitiesnoconv("Size").' 6',
8 => $langs->transnoentitiesnoconv("Size").' 8',
10 => $langs->transnoentitiesnoconv("Size").' 10',
20 => $langs->transnoentitiesnoconv("Size").' 20',
);
print ' &nbsp; &nbsp; ';
if ($edit) {
print $form->selectarray('THEME_ELDY_BORDER_RADIUS', $listofborderradius, getDolGlobalInt('THEME_ELDY_BORDER_RADIUS'), 0, 0, 0, '', 0, 0, 0, '', 'widthcentpercentminusx maxwidth100');
} else {
print $listofborderradius[getDolGlobalInt('THEME_ELDY_BORDER_RADIUS')];
}
//print $form->textwithpicto('', $langs->trans("NotSupportedByAllThemes"), 1, 'help', 'inline-block');
}
print '</td>';
print '</tr>';
}
@ -632,6 +652,7 @@ function showSkins($fuser, $edit = 0, $foruserprofile = false)
print '</tr>';
}
/*
if ($foruserprofile) {
} else {
if (getDolGlobalString('THEME_ELDY_USEBORDERONTABLE') || getDolGlobalString('THEME_SHOW_BORDER_ON_INPUT')) {
@ -657,6 +678,8 @@ function showSkins($fuser, $edit = 0, $foruserprofile = false)
print '</tr>';
}
}
*/
// Table line height
/* removed. height of column must use padding of td and not lineheight that has bad side effect
if ($foruserprofile) {

View file

@ -2448,7 +2448,7 @@ WebhookSetup = Webhook setup
WebhookSetupPage = Webhook setup page. To activate a webhook, go on the %s tab and create targets
ShowQuickAddLink=Show a button to quickly add an element in top right menu
ShowSearchAreaInTopMenu=Show the search area in the top menu
HashForPing=Hash used for ping
HashForPing=Public hash used for ping
ReadOnlyMode=Is instance in "Read Only" mode
DEBUGBAR_USE_LOG_FILE=Use the <b>dolibarr.log</b> file to trap Logs
UsingLogFileShowAllRecordOfSubrequestButIsSlower=Use the dolibarr.log file to trap Logs instead of live memory catching. It allows to catch all logs instead of only log of current process (so including the one of ajax subrequests pages) but will make your instance very very slow. Not recommended.
@ -2541,7 +2541,7 @@ FailedAuth=failed authentications
MaxNumberOfFailedAuth=Max number of failed authentication in 24h to deny login.
AllowPasswordResetBySendingANewPassByEmail=If a user A has this permission, and even if the user A is not an "admin" user, A is allowed to reset the password of any other user B, the new password will be send to the email of the other user B but it won't be visible to A. If the user A has the "admin" flag, he will also be able to know what is the new generated password of B so he will be able to take control of the B user account.
AllowAnyPrivileges=If a user A has this permission, he can create a user B with all privileges then use this user B, or grant himself any other group with any permission. So it means user A owns all business privileges (only system access to setup pages will be forbidden)
ThisValueCanBeReadBecauseInstanceIsNotInProductionMode=This value can be read because your instance is not set in production mode
ThisValueCanBeReadBecauseInstanceIsNotInProductionMode=This value is readable from user interface because your instance is NOT set in production mode
SeeConfFile=See inside conf.php file on the server
ReEncryptDesc=Reencrypt data if not yet encrypted
PasswordFieldEncrypted=%s new record have this field been encrypted

View file

@ -52,6 +52,13 @@ if (!defined('ISLOADEDBYSTEELSHEET')) {
box-sizing: border-box;
}
.badge-text {
padding: 3px;
padding-left: 5px;
padding-right: 5px;
border-radius: 5px;
}
.badge-status {
font-size: 0.95em;
padding: .19em .35em; /* more than 0.19 generate a change into height of lines */

View file

@ -430,6 +430,7 @@ input[type=checkbox], input[type=radio] {
background-color: var(--colortextlink, #0a58ca);
}
/* input fields */
.kanban input.checkforselect {
margin-right: 0px;
margin-top: 5px;
@ -437,13 +438,15 @@ input[type=checkbox], input[type=radio] {
input {
padding: 5px;
padding-left: 5px;
<?php if (getDolGlobalString('THEME_SHOW_BORDER_ON_INPUT')) { ?>
<?php if (!getDolGlobalString('THEME_SHOW_BORDER_ON_INPUT')) { ?>
border-bottom-left-radius: 0;
border-bottom-right-radius: 0;
<?php } ?>
}
.liste_titre input {
line-height: 1.3em;
padding: 3px;
padding-left: 3px;
}
.tableforfield input {
padding-left: 2px;
@ -516,9 +519,13 @@ div.tabBar textarea:focus:not(.textarea-ai_feature):not(.cke_source) {
input:focus:not(.button):not(.buttonwebsite):not(.buttonreset):not(.select2-search__field):not(#top-bookmark-search-input):not(.search_component_input):not(.input-nobottom),
select:focus, .select2-container--open [aria-expanded="false"].select2-selection--single,
.select2-container--focus span.selection span.select2-selection {
<?php if (getDolGlobalString('THEME_SHOW_BORDER_ON_INPUT')) { ?>
border: 1px solid #666 !important;
<?php } else { ?>
border-bottom: 1px solid #666 !important;
border-bottom-left-radius: 0 !important;
border-bottom-right-radius: 0 !important;
<?php } ?>
}
textarea.cke_source:focus
{
@ -6559,6 +6566,9 @@ table.jPicker tr:first-of-type td {
height: 2px !important;
line-height: 2px;
}
.jPicker .Icon {
margin-left: 2px;
}
.jPicker .Move {
background: unset !important;
border: unset !important;
@ -6603,6 +6613,9 @@ span.jPicker {
border-collapse: collapse;
border: none;
}
.jPicker td.Text input {
width: 35px !important;
}
A.color, A.color:active, A.color:visited {
position : relative;

View file

@ -52,6 +52,13 @@ if (!defined('ISLOADEDBYSTEELSHEET')) {
box-sizing: border-box;
}
.badge-text {
padding: 3px;
padding-left: 5px;
padding-right: 5px;
border-radius: 5px;
}
.badge-status {
font-size: 1em;
padding: .19em .35em; /* more than 0.19 generate a change into height of lines */

View file

@ -594,7 +594,11 @@ textarea:focus {
input:focus, textarea:focus,
button:focus:not(.button_search_x):not(.button_search):not(.button_removefilter), select:focus,
.select2-container--focus span.selection span.select2-selection {
<?php if (getDolGlobalString('THEME_SHOW_BORDER_ON_INPUT')) { ?>
border: 1px solid #666 !important;
<?php } else { ?>
border-bottom: 1px solid #666;
<?php } ?>
}
textarea.cke_source:focus
@ -6431,6 +6435,9 @@ table.jPicker tr:first-of-type td {
height: 2px !important;
line-height: 2px;
}
.jPicker .Icon {
margin-left: 2px;
}
.jPicker .Move {
background: unset !important;
border: unset !important;
@ -6475,6 +6482,9 @@ span.jPicker {
border-collapse: collapse;
border: none;
}
.jPicker td.Text input {
width: 35px !important;
}
A.color, A.color:active, A.color:visited {
position : relative;

View file

@ -1094,7 +1094,7 @@ if ($action == 'create' || $action == 'adduserldap') {
// Administrator
if (!empty($user->admin)) {
print '<tr><td>'.$form->textwithpicto($langs->trans("Administrator"), $langs->trans("AdministratorDesc"), 1, 'star').'</td>';
print '<tr><td>'.$form->textwithpicto($langs->trans("Administrator"), $langs->trans("AdministratorDesc"), 1, 'help').'</td>';
print '<td>';
print $form->selectyesno('admin', GETPOST('admin'), 1, false, 0, 1);
@ -1211,7 +1211,7 @@ if ($action == 'create' || $action == 'adduserldap') {
$valuetoshow .= ($valuetoshow ? ' + ' : '').$langs->trans("HTTPBasicPassword");
}
if (preg_match('/dolibarr/', $dolibarr_main_authentication) || preg_match('/forceuser/', $dolibarr_main_authentication)) {
if (!empty($ldap_pass)) { // For very old system comaptibilty. Now clear password can't be viewed from LDAP read
if (!empty($ldap_pass)) { // For very old system compatibility. Now clear password can't be viewed from LDAP read
$valuetoshow .= ($valuetoshow ? ' + ' : '').'<input type="hidden" name="password" value="'.dol_escape_htmltag($ldap_pass).'">'; // Dolibarr password is preffiled with LDAP known password
$valuetoshow .= preg_replace('/./i', '*', $ldap_pass);
} else {
@ -1469,7 +1469,7 @@ if ($action == 'create' || $action == 'adduserldap') {
print $form->textwithpicto($text, $langs->trans("THMDescription"), 1, 'help', 'classthm');
print '</td>';
print '<td>';
print '<input size="8" type="text" name="thm" value="'.dol_escape_htmltag(GETPOST('thm')).'"> '.$langs->getCurrencySymbol($conf->currency);
print '<input size="8" type="text" name="thm" value="'.dol_escape_htmltag(GETPOST('thm')).'"> <span class="opacitymedium">'.$langs->getCurrencySymbol().'</span>';
print '</td>';
print "</tr>\n";
@ -1479,14 +1479,14 @@ if ($action == 'create' || $action == 'adduserldap') {
print $form->textwithpicto($text, $langs->trans("TJMDescription"), 1, 'help', 'classtjm');
print '</td>';
print '<td>';
print '<input size="8" type="text" name="tjm" value="'.dol_escape_htmltag(GETPOST('tjm')).'"> '.$langs->getCurrencySymbol($conf->currency);
print '<input size="8" type="text" name="tjm" value="'.dol_escape_htmltag(GETPOST('tjm')).'"> <span class="opacitymedium">'.$langs->getCurrencySymbol().'</span>';
print '</td>';
print "</tr>\n";
// Salary
print '<tr><td>'.$langs->trans("Salary").'</td>';
print '<td>';
print img_picto('', 'salary', 'class="pictofixedwidth paddingright"').'<input class="width100" type="text" name="salary" value="'.dol_escape_htmltag(GETPOST('salary')).'"> '.$langs->getCurrencySymbol($conf->currency);
print img_picto('', 'salary', 'class="pictofixedwidth paddingright"').'<input class="width100" type="text" name="salary" value="'.dol_escape_htmltag(GETPOST('salary')).'"> <span class="opacitymedium">'.$langs->getCurrencySymbol().'</span>';
print '</td>';
print "</tr>\n";
}
@ -1643,7 +1643,7 @@ if ($action == 'create' || $action == 'adduserldap') {
$morehtmlref .= '</a>';
$urltovirtualcard = '/user/virtualcard.php?id='.((int) $object->id);
$morehtmlref .= dolButtonToOpenUrlInDialogPopup('publicvirtualcard', $langs->transnoentitiesnoconv("PublicVirtualCardUrl").' - '.$object->getFullName($langs), img_picto($langs->trans("PublicVirtualCardUrl"), 'card', 'class="valignmiddle marginleftonly paddingrightonly"'), $urltovirtualcard, '', 'valignmiddle nohover');
$morehtmlref .= dolButtonToOpenUrlInDialogPopup('publicvirtualcard', $langs->transnoentitiesnoconv("PublicVirtualCardUrl").' - '.$object->getFullName($langs), img_picto($langs->trans("PublicVirtualCardUrl"), 'card', 'class="valignmiddle marginleftonly paddingrightonly"'), $urltovirtualcard, '', 'refid valignmiddle nohover');
dol_banner_tab($object, 'id', $linkback, $user->hasRight("user", "user", "read") || $user->admin, 'rowid', 'ref', $morehtmlref);
@ -1974,7 +1974,7 @@ if ($action == 'create' || $action == 'adduserldap') {
print '</th>';
print '<th class="liste_titre right">';
if (getDolGlobalString('MAIN_SECURITY_ALLOW_TOTP') && $permissiontoeditpasswordandsee) {
$s = '<span class="fa fa-plus-circle valignmiddle btnTitle-icon"></span>';
$s = '<!-- MAIN_SECURITY_ALLOW_TOTP --><span class="fa fa-plus-circle valignmiddle btnTitle-icon"></span>';
print dolButtonToOpenUrlInDialogPopup('openpopuptoaddcredential', $langs->trans("AddCredential"), $s, '/user/credentials.php?userid='.$object->id.'&token='.newToken());
}
print '</th>';
@ -3017,6 +3017,7 @@ if ($action == 'create' || $action == 'adduserldap') {
print '<tr><td>'.$langs->trans("Salary").'</td>';
print '<td>';
print img_picto('', 'salary', 'class="pictofixedwidth paddingright"').'<input size="8" type="text" name="salary" value="'.price2num(GETPOST('salary') ? GETPOST('salary') : $object->salary).'">';
print ' <span class="opacitymedium">'.$langs->getCurrencySymbol().'</span>';
print '</td>';
print "</tr>\n";
@ -3028,6 +3029,7 @@ if ($action == 'create' || $action == 'adduserldap') {
print '<td>';
if ($permissiontoedit) {
print '<input size="8" type="text" name="thm" value="'.price2num(GETPOST('thm') ? GETPOST('thm') : $object->thm).'">';
print ' <span class="opacitymedium">'.$langs->getCurrencySymbol().'</span>';
} else {
print($object->thm != '' ? price($object->thm, 0, $langs, 1, -1, -1, $conf->currency) : '');
}
@ -3042,6 +3044,7 @@ if ($action == 'create' || $action == 'adduserldap') {
print '<td>';
if ($permissiontoedit) {
print '<input size="8" type="text" name="tjm" value="'.price2num(GETPOST('tjm') ? GETPOST('tjm') : $object->tjm).'">';
print ' <span class="opacitymedium">'.$langs->getCurrencySymbol().'</span>';
} else {
print($object->tjm != '' ? price($object->tjm, 0, $langs, 1, -1, -1, $conf->currency) : '');
}
@ -3148,7 +3151,8 @@ if ($action == 'create' || $action == 'adduserldap') {
// Add button to autosuggest a key
include_once DOL_DOCUMENT_ROOT.'/core/lib/security2.lib.php';
print dolJSToSetRandomPassword('password', 'generate_password', 0);
$usegenericrule = getDolGlobalString('USER_PASSWORD_GENERATED') == 'none' ? 1 : 0;
print dolJSToSetRandomPassword('password', 'generate_password', $usegenericrule);
if (isModEnabled('api')) {
print dolJSToSetRandomPassword('api_key', 'generate_api_key', 1);
}