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 "".''.$langs->trans("Name").' ';
+ print " ".''.$langs->trans("Name").' ';
print ' ';
print "".''.$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 ''.$langs->trans("Name").' ';
+ print ''.$langs->trans("Name").' ';
print ' ';
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 '';
- print $form->textwithtooltip($langs->trans("Group"),$langs->trans("PermissionInheritedFromAGroup"));
+ print $form->textwithtooltip($langs->trans("Inherited"),$langs->trans("PermissionInheritedFromAGroup"));
//print '';
print ' ';
}
@@ -349,5 +349,4 @@ print '
';
$db->close();
llxFooter('$Date$ - $Revision$');
-
?>