Works on enhancement of project tasks

Fix: limit modification to project leader
This commit is contained in:
Regis Houssin 2010-02-02 11:34:32 +00:00
parent 4ac61b7459
commit 9ba7d422ff
3 changed files with 102 additions and 32 deletions

View File

@ -172,6 +172,24 @@ if ($id > 0 || ! empty($ref))
if ( $project->fetch($id,$ref) > 0) if ( $project->fetch($id,$ref) > 0)
{ {
if ($project->societe->id > 0) $result=$project->societe->fetch($project->societe->id); if ($project->societe->id > 0) $result=$project->societe->fetch($project->societe->id);
// To verify role of users
$userAccess = 0;
foreach(array('internal','external') as $source)
{
$userRole = $project->liste_contact(4,$source);
$num=sizeof($userRole);
$i = 0;
while ($i < $num)
{
if ($userRole[$i]['code'] == 'PROJECTLEADER' && $user->id == $userRole[$i]['id'])
{
$userAccess++;
}
$i++;
}
}
$head = project_prepare_head($project); $head = project_prepare_head($project);
dol_fiche_head($head, 'contact', $langs->trans("Project"), 0, 'project'); dol_fiche_head($head, 'contact', $langs->trans("Project"), 0, 'project');
@ -212,7 +230,7 @@ if ($id > 0 || ! empty($ref))
* Ajouter une ligne de contact * Ajouter une ligne de contact
* Non affiche en mode modification de ligne * Non affiche en mode modification de ligne
*/ */
if ($_GET["action"] != 'editline' && $user->rights->projet->creer) if ($_GET["action"] != 'editline' && $user->rights->projet->creer && $userAccess)
{ {
print '<tr class="liste_titre">'; print '<tr class="liste_titre">';
print '<td>'.$langs->trans("Source").'</td>'; print '<td>'.$langs->trans("Source").'</td>';
@ -358,14 +376,14 @@ if ($id > 0 || ! empty($ref))
// Statut // Statut
print '<td align="center">'; print '<td align="center">';
// Activation desativation du contact // Activation desativation du contact
if ($project->statut >= 0) print '<a href="'.$_SERVER["PHP_SELF"].'?id='.$project->id.'&amp;action=swapstatut&amp;ligne='.$tab[$i]['rowid'].'">'; if ($project->statut >= 0 && $userAccess) print '<a href="'.$_SERVER["PHP_SELF"].'?id='.$project->id.'&amp;action=swapstatut&amp;ligne='.$tab[$i]['rowid'].'">';
print $contactstatic->LibStatut($tab[$i]['status'],3); print $contactstatic->LibStatut($tab[$i]['status'],3);
if ($project->statut >= 0) print '</a>'; if ($project->statut >= 0 && $userAccess) print '</a>';
print '</td>'; print '</td>';
// Icon update et delete // Icon update et delete
print '<td align="center" nowrap>'; print '<td align="center" nowrap>';
if ($user->rights->projet->creer) if ($user->rights->projet->creer && $userAccess)
{ {
print '&nbsp;'; print '&nbsp;';
print '<a href="'.$_SERVER["PHP_SELF"].'?id='.$project->id.'&amp;action=deleteline&amp;lineid='.$tab[$i]['rowid'].'">'; print '<a href="'.$_SERVER["PHP_SELF"].'?id='.$project->id.'&amp;action=deleteline&amp;lineid='.$tab[$i]['rowid'].'">';

View File

@ -320,6 +320,24 @@ else
$project->fetch($projectid,$projectref); $project->fetch($projectid,$projectref);
if ($project->societe->id > 0) $result=$project->societe->fetch($project->societe->id); if ($project->societe->id > 0) $result=$project->societe->fetch($project->societe->id);
// To verify role of users
$userAccess = 0;
foreach(array('internal','external') as $source)
{
$userRole = $project->liste_contact(4,$source);
$num=sizeof($userRole);
$i = 0;
while ($i < $num)
{
if ($userRole[$i]['code'] == 'PROJECTLEADER' && $user->id == $userRole[$i]['id'])
{
$userAccess++;
}
$i++;
}
}
$head=project_prepare_head($project); $head=project_prepare_head($project);
dol_fiche_head($head, 'project', $langs->trans("Project"),0,'project'); dol_fiche_head($head, 'project', $langs->trans("Project"),0,'project');
@ -350,7 +368,7 @@ else
} }
if ($_GET["action"] == 'edit') if ($_GET["action"] == 'edit' && $userAccess)
{ {
print '<form action="'.$_SERVER["PHP_SELF"].'" method="POST">'; print '<form action="'.$_SERVER["PHP_SELF"].'" method="POST">';
print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">'; print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
@ -494,37 +512,71 @@ else
*/ */
print '<div class="tabsAction">'; print '<div class="tabsAction">';
if ($_GET["action"] != "edit") if ($_GET["action"] != "edit" )
{ {
// Validate // Validate
if ($project->statut == 0 && $user->rights->projet->creer) if ($project->statut == 0 && $user->rights->projet->creer)
{ {
print '<a class="butAction" href="fiche.php?id='.$project->id.'&action=validate"'; if ($userAccess)
print '>'.$langs->trans("Valid").'</a>'; {
print '<a class="butAction" href="fiche.php?id='.$project->id.'&action=validate">'.$langs->trans("Valid").'</a>';
}
else
{
print '<a class="butActionRefused" href="#" title="'.$langs->trans("NotOwnerOfProject").'">'.$langs->trans('Valid').'</a>';
}
} }
// Modify // Modify
if ($project->statut != 2 && $user->rights->projet->creer) if ($project->statut != 2 && $user->rights->projet->creer)
{ {
print '<a class="butAction" href="fiche.php?id='.$project->id.'&amp;action=edit">'.$langs->trans("Modify").'</a>'; if ($userAccess)
{
print '<a class="butAction" href="fiche.php?id='.$project->id.'&amp;action=edit">'.$langs->trans("Modify").'</a>';
}
else
{
print '<a class="butActionRefused" href="#" title="'.$langs->trans("NotOwnerOfProject").'">'.$langs->trans('Modify').'</a>';
}
} }
// Close // Close
if ($project->statut != 2 && $user->rights->projet->creer) if ($project->statut != 2 && $user->rights->projet->creer)
{ {
print '<a class="butAction" href="fiche.php?id='.$project->id.'&amp;action=close">'.$langs->trans("Close").'</a>'; if ($userAccess)
{
print '<a class="butAction" href="fiche.php?id='.$project->id.'&amp;action=close">'.$langs->trans("Close").'</a>';
}
else
{
print '<a class="butActionRefused" href="#" title="'.$langs->trans("NotOwnerOfProject").'">'.$langs->trans('Close').'</a>';
}
} }
// Reopen // Reopen
if ($project->statut == 2 && $user->rights->projet->creer) if ($project->statut == 2 && $user->rights->projet->creer)
{ {
print '<a class="butAction" href="fiche.php?id='.$project->id.'&amp;action=reopen">'.$langs->trans("ReOpen").'</a>'; if ($userAccess)
{
print '<a class="butAction" href="fiche.php?id='.$project->id.'&amp;action=reopen">'.$langs->trans("ReOpen").'</a>';
}
else
{
print '<a class="butActionRefused" href="#" title="'.$langs->trans("NotOwnerOfProject").'">'.$langs->trans('ReOpen').'</a>';
}
} }
// Delete // Delete
if ($user->rights->projet->supprimer) if ($user->rights->projet->supprimer)
{ {
print '<a class="butActionDelete" href="fiche.php?id='.$project->id.'&amp;action=delete">'.$langs->trans("Delete").'</a>'; if ($userAccess)
{
print '<a class="butActionDelete" href="fiche.php?id='.$project->id.'&amp;action=delete">'.$langs->trans("Delete").'</a>';
}
else
{
print '<a class="butActionRefused" href="#" title="'.$langs->trans("NotOwnerOfProject").'">'.$langs->trans('Delete').'</a>';
}
} }
} }
@ -543,8 +595,8 @@ else
$filename=dol_sanitizeFileName($project->ref); $filename=dol_sanitizeFileName($project->ref);
$filedir=$conf->projet->dir_output . "/" . dol_sanitizeFileName($project->ref); $filedir=$conf->projet->dir_output . "/" . dol_sanitizeFileName($project->ref);
$urlsource=$_SERVER["PHP_SELF"]."?id=".$project->id; $urlsource=$_SERVER["PHP_SELF"]."?id=".$project->id;
$genallowed=$user->rights->projet->creer; $genallowed=($user->rights->projet->creer && $userAccess);
$delallowed=$user->rights->projet->supprimer; $delallowed=($user->rights->projet->supprimer && $userAccess);
$var=true; $var=true;

View File

@ -117,6 +117,24 @@ if ($id > 0 || ! empty($ref))
$project = new Project($db); $project = new Project($db);
$project->fetch($_REQUEST["id"],$_GET["ref"]); $project->fetch($_REQUEST["id"],$_GET["ref"]);
if ($project->societe->id > 0) $result=$project->societe->fetch($project->societe->id); if ($project->societe->id > 0) $result=$project->societe->fetch($project->societe->id);
// To verify role of users
$userAccess = 0;
foreach(array('internal','external') as $source)
{
$userRole = $project->liste_contact(4,$source);
$num=sizeof($userRole);
$i = 0;
while ($i < $num)
{
if ($userRole[$i]['code'] == 'PROJECTLEADER' && $user->id == $userRole[$i]['id'])
{
$userAccess++;
}
$i++;
}
}
} }
if ($_GET["action"] == 'create' && $user->rights->projet->creer) if ($_GET["action"] == 'create' && $user->rights->projet->creer)
@ -196,24 +214,6 @@ else
dol_fiche_head($head, $tab, $langs->trans("Project"),0,'project'); dol_fiche_head($head, $tab, $langs->trans("Project"),0,'project');
$param=($_REQUEST["mode"]=='mine'?'&mode=mine':''); $param=($_REQUEST["mode"]=='mine'?'&mode=mine':'');
// To verify role of users
$userAccess = 0;
foreach(array('internal','external') as $source)
{
$userRole = $project->liste_contact(4,$source);
$num=sizeof($userRole);
$i = 0;
while ($i < $num)
{
if ($userRole[$i]['code'] == 'PROJECTLEADER' && $user->id == $userRole[$i]['id'])
{
$userAccess++;
}
$i++;
}
}
print '<table class="border" width="100%">'; print '<table class="border" width="100%">';