diff --git a/ChangeLog b/ChangeLog index fe7db57ccf4..681f96b61ef 100644 --- a/ChangeLog +++ b/ChangeLog @@ -9,7 +9,8 @@ For users: - New: Add default language for third parties and use it when multilang is enabled to define default language for document generation. - New: Can reopen a closed supplier invoice. -- Fix: Formant number as wrong for ar_AR language. +- Fix: Format number was wrong for ar_AR language. +- Fix: Can change password if has only permission change password. For developers: - More comments in code @@ -56,6 +57,7 @@ For users: - Fix: Warning should not appears for invoice closed - Fix: Import for companies works even with prefix empty. - Fix: bug #28895 : Création d'utilisateur impossible. +- Fix: Can change password if has only permission change password. For developers: - Qual: Reorganize /dev directory. diff --git a/htdocs/langs/en_US/users.lang b/htdocs/langs/en_US/users.lang index d3952b271aa..45cffd763c8 100755 --- a/htdocs/langs/en_US/users.lang +++ b/htdocs/langs/en_US/users.lang @@ -90,6 +90,7 @@ Reactivate=Reactivate CreateInternalUserDesc=This form allows you to creat an user internal to your company/foundation. To creat an external user (customer, supplier, ...), use button 'Create Dolibarr user' from third party's contact card. InternalExternalDesc=An internal user is a user that is part of your company/foundation.
An external user is a customer, supplier or other.

In both cases, permissions defines rights on Dolibarr, also external user can have a different menu manager than internal user (See Home - Setup - Display) PermissionInheritedFromAGroup=Permission granted because inherited from one of a user's group. +Inherited=Inherited IdPhoneCaller=Id phone caller UserLogged=User %s connected NewUserCreated=User %s created diff --git a/htdocs/langs/fr_FR/users.lang b/htdocs/langs/fr_FR/users.lang index f96c0e9fce8..6a0ab5afde2 100755 --- a/htdocs/langs/fr_FR/users.lang +++ b/htdocs/langs/fr_FR/users.lang @@ -90,6 +90,7 @@ Reactivate=Réactiver CreateInternalUserDesc=Cet écran permet de créer un utilisateur interne à votre société/institution. Pour créer un utilisateur externe (client, fournisseur, ...), utiliser le bouton 'Créer utilisateur Dolibarr' qui se trouve sur la fiche contact du tiers en question. InternalExternalDesc=Un utilisateur interne est un utilisateur appartenant à votre société/institution.
Un utilisateur externe est un utilisateur client, fournisseur ou autre.

Dans les 2 cas, les permissions utilisateurs définissent les droits d'accès mais l'utilisateur externe peut en plus avoir un gestionnaire de menu différent de l'utilisateur interne (Voir Accueil - Configuration - Affichage) PermissionInheritedFromAGroup=La permission est accordée car héritée d'un groupe auquel appartient l'utilisateur. +Inherited=Hérité IdPhoneCaller=Id appelant (téléphone) UserLogged=Connexion utilisateur %s NewUserCreated=Création utilisateur %s diff --git a/htdocs/user/fiche.php b/htdocs/user/fiche.php index 66ffe4425fa..817da4778e3 100644 --- a/htdocs/user/fiche.php +++ b/htdocs/user/fiche.php @@ -222,111 +222,124 @@ if ($_GET["action"] == 'removegroup' && $caneditfield) } } -if ($_POST["action"] == 'update' && ! $_POST["cancel"] && $caneditfield) +if ($_POST["action"] == 'update' && ! $_POST["cancel"]) { - $message=""; - - if (! $_POST["nom"]) + if ($caneditfield) // Case we can edit all field { - $message='
'.$langs->trans("NameNotDefined").'
'; - $action="edit"; // Go back to create page - } - if (! $_POST["login"]) - { - $message='
'.$langs->trans("LoginNotDefined").'
'; - $action="edit"; // Go back to create page - } + $message=""; - if (! $message) - { - $db->begin(); - - $edituser = new User($db, $_GET["id"]); - $edituser->fetch(); - - $edituser->oldcopy=dol_clone($edituser); - - $edituser->nom = $_POST["nom"]; - $edituser->prenom = $_POST["prenom"]; - $edituser->login = $_POST["login"]; - $edituser->pass = $_POST["password"]; - $edituser->admin = $_POST["admin"]; - $edituser->office_phone = $_POST["office_phone"]; - $edituser->office_fax = $_POST["office_fax"]; - $edituser->user_mobile = $_POST["user_mobile"]; - $edituser->email = $_POST["email"]; - $edituser->webcal_login = $_POST["webcal_login"]; - $edituser->phenix_login = $_POST["phenix_login"]; - $edituser->phenix_pass = $_POST["phenix_pass"]; - $edituser->entity = $_POST["entity"]; - - $edituser->photo = $_FILES['photo']['name']; - - $ret=$edituser->update($user); - if ($ret < 0) + if (! $_POST["nom"]) { - if ($db->errno() == 'DB_ERROR_RECORD_ALREADY_EXISTS') - { - $langs->load("errors"); - $message.='
'.$langs->trans("ErrorLoginAlreadyExists",$edituser->login).'
'; - } - else - { - $message.='
'.$edituser->error.'
'; - } + $message='
'.$langs->trans("NameNotDefined").'
'; + $action="edit"; // Go back to create page + } + if (! $_POST["login"]) + { + $message='
'.$langs->trans("LoginNotDefined").'
'; + $action="edit"; // Go back to create page } - if ($ret >= 0 && ! sizeof($edituser->errors) && isset($_POST["password"]) && $_POST["password"] !='') + if (! $message) { - $ret=$edituser->setPassword($user,$_POST["password"]); + $db->begin(); + $edituser = new User($db, $_GET["id"]); + $edituser->fetch(); + + $edituser->oldcopy=dol_clone($edituser); + + $edituser->nom = $_POST["nom"]; + $edituser->prenom = $_POST["prenom"]; + $edituser->login = $_POST["login"]; + $edituser->pass = $_POST["password"]; + $edituser->admin = $_POST["admin"]; + $edituser->office_phone = $_POST["office_phone"]; + $edituser->office_fax = $_POST["office_fax"]; + $edituser->user_mobile = $_POST["user_mobile"]; + $edituser->email = $_POST["email"]; + $edituser->webcal_login = $_POST["webcal_login"]; + $edituser->phenix_login = $_POST["phenix_login"]; + $edituser->phenix_pass = $_POST["phenix_pass"]; + $edituser->entity = $_POST["entity"]; + + $edituser->photo = $_FILES['photo']['name']; + + $ret=$edituser->update($user); if ($ret < 0) { - $message.='
'.$edituser->error.'
'; - } - } - - if ($ret >=0 && ! sizeof($edituser->errors)) - { - if (isset($_FILES['photo']['tmp_name']) && trim($_FILES['photo']['tmp_name'])) - { - $dir= $conf->user->dir_output . '/' . get_exdir($edituser->id,2,0,1); - - create_exdir($dir); - - if (@is_dir($dir)) + if ($db->errno() == 'DB_ERROR_RECORD_ALREADY_EXISTS') { - $newfile=$dir.'/'.$_FILES['photo']['name']; - if (! dol_move_uploaded_file($_FILES['photo']['tmp_name'],$newfile,1) > 0) - { - $message .= '
'.$langs->trans("ErrorFailedToSaveFile").'
'; - } - else - { - // Create small thumbs for company (Ratio is near 16/9) - // Used on logon for example - $imgThumbSmall = vignette($newfile, $maxwidthsmall, $maxheightsmall, '_small', $quality); + $langs->load("errors"); + $message.='
'.$langs->trans("ErrorLoginAlreadyExists",$edituser->login).'
'; + } + else + { + $message.='
'.$edituser->error.'
'; + } + } - // Create mini thumbs for company (Ratio is near 16/9) - // Used on menu or for setup page for example - $imgThumbMini = vignette($newfile, $maxwidthmini, $maxheightmini, '_mini', $quality); + if ($ret >= 0 && ! sizeof($edituser->errors) && isset($_POST["password"]) && $_POST["password"] !='') + { + $ret=$edituser->setPassword($user,$_POST["password"]); + if ($ret < 0) + { + $message.='
'.$edituser->error.'
'; + } + } + + if ($ret >=0 && ! sizeof($edituser->errors)) + { + if (isset($_FILES['photo']['tmp_name']) && trim($_FILES['photo']['tmp_name'])) + { + $dir= $conf->user->dir_output . '/' . get_exdir($edituser->id,2,0,1); + + create_exdir($dir); + + if (@is_dir($dir)) + { + $newfile=$dir.'/'.$_FILES['photo']['name']; + if (! dol_move_uploaded_file($_FILES['photo']['tmp_name'],$newfile,1) > 0) + { + $message .= '
'.$langs->trans("ErrorFailedToSaveFile").'
'; + } + else + { + // Create small thumbs for company (Ratio is near 16/9) + // Used on logon for example + $imgThumbSmall = vignette($newfile, $maxwidthsmall, $maxheightsmall, '_small', $quality); + + // Create mini thumbs for company (Ratio is near 16/9) + // Used on menu or for setup page for example + $imgThumbMini = vignette($newfile, $maxwidthmini, $maxheightmini, '_mini', $quality); + } } } } - } - if ($ret >= 0 && ! sizeof($edituser->errors)) - { - $message.='
'.$langs->trans("UserModified").'
'; - $db->commit(); + if ($ret >= 0 && ! sizeof($edituser->errors)) + { + $message.='
'.$langs->trans("UserModified").'
'; + $db->commit(); + } + else + { + $db->rollback(); + } } - else + } + else if ($caneditpassword) // Case we can edit only password + { + $edituser = new User($db, $_GET["id"]); + $edituser->fetch(); + + $ret=$edituser->setPassword($user,$_POST["password"]); + if ($ret < 0) { - $db->rollback(); + $message.='
'.$edituser->error.'
'; } } } -// Action modif mot de passe +// Change password with a new generated one if ((($_REQUEST["action"] == 'confirm_password' && $_REQUEST["confirm"] == 'yes') || ($_REQUEST["action"] == 'confirm_passwordsend' && $_REQUEST["confirm"] == 'yes')) && $caneditpassword) { @@ -337,7 +350,7 @@ if ((($_REQUEST["action"] == 'confirm_password' && $_REQUEST["confirm"] == 'yes' if ($newpassword < 0) { // Echec - $message = '
'.$langs->trans("ErrorFailedToSaveFile").'
'; + $message = '
'.$langs->trans("ErrorFailedToSetNewPassword").'
'; } else { @@ -850,12 +863,12 @@ else print ''; // Nom - print ''.$langs->trans("Lastname").''; + print ''.$langs->trans("Lastname").''; print ''.$fuser->nom.''; print "\n"; // Prenom - print ''.$langs->trans("Firstname").''; + print ''.$langs->trans("Firstname").''; print ''.$fuser->prenom.''; print "\n"; @@ -866,7 +879,7 @@ else if ($conf->phenix->enabled) $rowspan+=2; // Login - print ''.$langs->trans("Login").''; + print ''.$langs->trans("Login").''; if ($fuser->ldap_sid && $fuser->statut==0) { print ''.$langs->trans("LoginAccountDisableInDolibarr").''; @@ -882,7 +895,7 @@ else print ''; // Password - print ''.$langs->trans("Password").''; + print ''.$langs->trans("Password").''; if ($fuser->ldap_sid) { if ($passDoNotExpire) @@ -916,7 +929,7 @@ else print "\n"; // Administrator - print ''.$langs->trans("Administrator").''; + print ''.$langs->trans("Administrator").''; print ''.yn($fuser->admin); if (! empty($conf->global->MAIN_MODULE_MULTICOMPANY) && $fuser->admin && ! $fuser->entity) { @@ -930,7 +943,7 @@ else print "\n"; // Type - print ''.$langs->trans("Type").''; + print ''.$langs->trans("Type").''; print ''; if ($fuser->societe_id) { @@ -951,19 +964,19 @@ else print ''; // Tel pro - print ''.$langs->trans("PhonePro").''; + print ''.$langs->trans("PhonePro").''; print ''.dol_print_phone($fuser->office_phone,'',0,0,1).''; // Tel mobile - print ''.$langs->trans("PhoneMobile").''; + print ''.$langs->trans("PhoneMobile").''; print ''.dol_print_phone($fuser->user_mobile,'',0,0,1).''; // Fax - print ''.$langs->trans("Fax").''; + print ''.$langs->trans("Fax").''; print ''.dol_print_phone($fuser->office_fax,'',0,0,1).''; // EMail - print ''.$langs->trans("EMail").($conf->global->USER_MAIL_REQUIRED?'*':'').''; + print ''.$langs->trans("EMail").($conf->global->USER_MAIL_REQUIRED?'*':'').''; print ''.dol_print_email($fuser->email,0,0,1).''; print "\n"; @@ -973,11 +986,11 @@ else print $fuser->getLibStatut(4); print ''; - print ''.$langs->trans("LastConnexion").''; + print ''.$langs->trans("LastConnexion").''; print ''.dol_print_date($fuser->datelastlogin,"dayhour").''; print "\n"; - print ''.$langs->trans("PreviousConnexion").''; + print ''.$langs->trans("PreviousConnexion").''; print ''.dol_print_date($fuser->datepreviouslogin,"dayhour").''; print "\n"; @@ -987,7 +1000,7 @@ else if ($conf->webcal->enabled) { $langs->load("other"); - print ''.$langs->trans("LoginWebcal").''; + print ''.$langs->trans("LoginWebcal").''; print ''.$fuser->webcal_login.' '; print "\n"; } @@ -996,10 +1009,10 @@ else if ($conf->phenix->enabled) { $langs->load("other"); - print ''.$langs->trans("LoginPhenix").''; + print ''.$langs->trans("LoginPhenix").''; print ''.$fuser->phenix_login.' '; print "\n"; - print ''.$langs->trans("PassPhenix").''; + print ''.$langs->trans("PassPhenix").''; print ''.preg_replace('/./i','*',$fuser->phenix_pass_crypted).' '; print "\n"; } @@ -1007,7 +1020,7 @@ else // Company / Contact if ($conf->societe->enabled) { - print ''.$langs->trans("LinkToCompanyContact").''; + print ''.$langs->trans("LinkToCompanyContact").''; print ''; if ($fuser->societe_id > 0) { @@ -1035,7 +1048,7 @@ else if ($conf->adherent->enabled) { $langs->load("members"); - print ''.$langs->trans("LinkedToDolibarrMember").''; + print ''.$langs->trans("LinkedToDolibarrMember").''; print ''; if ($fuser->fk_member) { @@ -1307,7 +1320,7 @@ else print ''; // Nom - print "".''.$langs->trans("Name").''; + print "".''.$langs->trans("Name").''; print ''; if ($caneditfield && !$fuser->ldap_sid) { @@ -1321,7 +1334,7 @@ else print ''; // Prenom - print "".''.$langs->trans("Firstname").''; + print "".''.$langs->trans("Firstname").''; print ''; if ($caneditfield && !$fuser->ldap_sid) { diff --git a/htdocs/user/group/fiche.php b/htdocs/user/group/fiche.php index 8685c91afc8..23f5e4e7bee 100644 --- a/htdocs/user/group/fiche.php +++ b/htdocs/user/group/fiche.php @@ -224,7 +224,7 @@ if ($action == 'create') print ''; - print "".''; + print "".''; print ''; print "".'
'.$langs->trans("Name").'
'.$langs->trans("Name").'
'.$langs->trans("Note").''; @@ -264,7 +264,7 @@ else */ $head = group_prepare_head($group); $title = $langs->trans("Group"); - dol_fiche_head($head, 'group', $title); + dol_fiche_head($head, 'group', $title, 0, 'group'); /* * Confirmation suppression @@ -520,7 +520,7 @@ else print ''; print ''; - print ''; + print ''; print '
'.$langs->trans("Name").'
'.$langs->trans("Name").''; if (!$group->entity) { diff --git a/htdocs/user/group/ldap.php b/htdocs/user/group/ldap.php index 23563b40599..f638f3b51cd 100644 --- a/htdocs/user/group/ldap.php +++ b/htdocs/user/group/ldap.php @@ -1,5 +1,5 @@ +/* Copyright (C) 2006-2010 Laurent Destailleur * Copyright (C) 2006 Regis Houssin * * This program is free software; you can redistribute it and/or modify @@ -93,7 +93,7 @@ $form = new Form($db); $head = group_prepare_head($fgroup); -dol_fiche_head($head, 'ldap', $langs->trans("Group")); +dol_fiche_head($head, 'ldap', $langs->trans("Group"), 0, 'group'); print ''; diff --git a/htdocs/user/group/perms.php b/htdocs/user/group/perms.php index ea144acda47..f3c46a1b525 100644 --- a/htdocs/user/group/perms.php +++ b/htdocs/user/group/perms.php @@ -1,7 +1,7 @@ * Copyright (C) 2002-2003 Jean-Louis Bergamo - * Copyright (C) 2004-2009 Laurent Destailleur + * Copyright (C) 2004-2010 Laurent Destailleur * Copyright (C) 2004 Eric Seigne * Copyright (C) 2005-2009 Regis Houssin * @@ -74,7 +74,7 @@ if ($_GET["id"]) */ $head = group_prepare_head($fgroup); $title = $langs->trans("Group"); - dol_fiche_head($head, 'rights', $title); + dol_fiche_head($head, 'rights', $title, 0, 'group'); $db->begin(); @@ -212,7 +212,7 @@ if ($_GET["id"]) $oldmod = $obj->module; $var = !$var; - // Rupture détectée, on récupère objMod + // Rupture d�tect�e, on r�cup�re objMod $objMod = $modules[$obj->module]; $picto=($objMod->picto?$objMod->picto:'generic'); diff --git a/htdocs/user/perms.php b/htdocs/user/perms.php index ae9c4744b3f..ce3f3f1ac1b 100644 --- a/htdocs/user/perms.php +++ b/htdocs/user/perms.php @@ -1,7 +1,7 @@ * Copyright (C) 2002-2003 Jean-Louis Bergamo - * Copyright (C) 2004-2008 Laurent Destailleur + * Copyright (C) 2004-2010 Laurent Destailleur * Copyright (C) 2004 Eric Seigne * Copyright (C) 2005-2009 Regis Houssin * @@ -318,7 +318,7 @@ if ($result) if ($caneditperms) { print ''; } @@ -349,5 +349,4 @@ print '
'; - print $form->textwithtooltip($langs->trans("Group"),$langs->trans("PermissionInheritedFromAGroup")); + print $form->textwithtooltip($langs->trans("Inherited"),$langs->trans("PermissionInheritedFromAGroup")); //print ''; print '
'; $db->close(); llxFooter('$Date$ - $Revision$'); - ?>