diff --git a/htdocs/core/lib/project.lib.php b/htdocs/core/lib/project.lib.php
index c4cdcba3fff..1dccb2c2456 100644
--- a/htdocs/core/lib/project.lib.php
+++ b/htdocs/core/lib/project.lib.php
@@ -422,16 +422,17 @@ function projectLinesa(&$inc, $parent, &$lines, &$level, $var, $showproject, &$t
/**
* Output a task line
*
- * @param string &$inc ?
- * @param string $parent ?
- * @param Object $lines ?
- * @param int &$level ?
- * @param string &$projectsrole ?
- * @param string &$tasksrole ?
- * @param int $mytask 0 or 1 to enable only if task is a task i am affected to
+ * @param string &$inc ?
+ * @param string $parent ?
+ * @param Object $lines ?
+ * @param int &$level ?
+ * @param string &$projectsrole ?
+ * @param string &$tasksrole ?
+ * @param string $mine Show only task lines I am assigned to
+ * @param int $restricteditformytask 0=No restriction, 1=Enable add time only if task is a task i am affected to
* @return $inc
*/
-function projectLinesb(&$inc, $parent, $lines, &$level, &$projectsrole, &$tasksrole, $mytask=0)
+function projectLinesb(&$inc, $parent, $lines, &$level, &$projectsrole, &$tasksrole, $mine, $restricteditformytask=0)
{
global $user, $bc, $langs;
global $form, $projectstatic, $taskstatic;
@@ -454,99 +455,104 @@ function projectLinesb(&$inc, $parent, $lines, &$level, &$projectsrole, &$tasksr
$lastprojectid=$lines[$i]->fk_project;
}
- print "
\n";
-
- // Project
- print "";
- $projectstatic->id=$lines[$i]->fk_project;
- $projectstatic->ref=$lines[$i]->projectref;
- $projectstatic->public=$lines[$i]->public;
- $projectstatic->label=$langs->transnoentitiesnoconv("YourRole").': '.$projectsrole[$lines[$i]->fk_project];
- print $projectstatic->getNomUrl(1);
- print " ";
-
- // Ref
- print '';
- $taskstatic->id=$lines[$i]->id;
- $taskstatic->ref=$lines[$i]->id;
- print $taskstatic->getNomUrl(1);
- print ' ';
-
- // Label task
- print "";
- for ($k = 0 ; $k < $level ; $k++)
+ // If we want all or we have a role on task, we show it
+ if (empty($mine) || ! empty($tasksrole[$lines[$i]->id]))
{
- print " ";
- }
- $taskstatic->id=$lines[$i]->id;
- $taskstatic->ref=$lines[$i]->label;
- print $taskstatic->getNomUrl(0);
- print " \n";
-
- // Date start
- print '';
- print dol_print_date($lines[$i]->date_start,'day');
- print ' ';
-
- // Date end
- print '';
- print dol_print_date($lines[$i]->date_end,'day');
- print ' ';
-
- // Planned Workload
- print '';
- if ($lines[$i]->planned_workload) print convertSecondToTime($lines[$i]->planned_workload,'allhourmin');
- else print '--:--';
- print ' ';
-
- // Progress declared %
- print '';
- print $lines[$i]->progress.' %';
- print ' ';
-
- // Time spent
- print '';
- if ($lines[$i]->duration)
- {
- print '';
- print convertSecondToTime($lines[$i]->duration,'allhourmin');
- print ' ';
- }
- else print '--:--';
- print " \n";
-
- $disabledproject=1;$disabledtask=1;
- //print "x".$lines[$i]->fk_project;
- //var_dump($lines[$i]);
- //var_dump($projectsrole[$lines[$i]->fk_project]);
- // If at least one role for project
- if ($lines[$i]->public || ! empty($projectsrole[$lines[$i]->fk_project]) || $user->rights->projet->all->creer)
- {
- $disabledproject=0;
- $disabledtask=0;
- }
- // If mytask and no role on task
- if ($mytask && empty($tasksrole[$lines[$i]->id]))
- {
- $disabledtask=1;
+ print " \n";
+
+ // Project
+ print "";
+ $projectstatic->id=$lines[$i]->fk_project;
+ $projectstatic->ref=$lines[$i]->projectref;
+ $projectstatic->public=$lines[$i]->public;
+ $projectstatic->label=$langs->transnoentitiesnoconv("YourRole").': '.$projectsrole[$lines[$i]->fk_project];
+ print $projectstatic->getNomUrl(1);
+ print " ";
+
+ // Ref
+ print '';
+ $taskstatic->id=$lines[$i]->id;
+ $taskstatic->ref=$lines[$i]->id;
+ print $taskstatic->getNomUrl(1);
+ print ' ';
+
+ // Label task
+ print "";
+ for ($k = 0 ; $k < $level ; $k++)
+ {
+ print " ";
+ }
+ $taskstatic->id=$lines[$i]->id;
+ $taskstatic->ref=$lines[$i]->label;
+ print $taskstatic->getNomUrl(0);
+ print " \n";
+
+ // Date start
+ print '';
+ print dol_print_date($lines[$i]->date_start,'dayhour');
+ print ' ';
+
+ // Date end
+ print '';
+ print dol_print_date($lines[$i]->date_end,'dayhour');
+ print ' ';
+
+ // Planned Workload
+ print '';
+ if ($lines[$i]->planned_workload) print convertSecondToTime($lines[$i]->planned_workload,'allhourmin');
+ else print '--:--';
+ print ' ';
+
+ // Progress declared %
+ print '';
+ print $lines[$i]->progress.' %';
+ print ' ';
+
+ // Time spent
+ print '';
+ if ($lines[$i]->duration)
+ {
+ print '';
+ print convertSecondToTime($lines[$i]->duration,'allhourmin');
+ print ' ';
+ }
+ else print '--:--';
+ print " \n";
+
+ $disabledproject=1;$disabledtask=1;
+ //print "x".$lines[$i]->fk_project;
+ //var_dump($lines[$i]);
+ //var_dump($projectsrole[$lines[$i]->fk_project]);
+ // If at least one role for project
+ if ($lines[$i]->public || ! empty($projectsrole[$lines[$i]->fk_project]) || $user->rights->projet->all->creer)
+ {
+ $disabledproject=0;
+ $disabledtask=0;
+ }
+ // If $restricteditformytask is on and I have no role on task, i disable edit
+ if ($restricteditformytask && empty($tasksrole[$lines[$i]->id]))
+ {
+ $disabledtask=1;
+ }
+
+ print '';
+ $s =$form->select_date('',$lines[$i]->id,'','','',"addtime",1,0,1,$disabledtask);
+ $s.=' ';
+ $s.=$form->select_duration($lines[$i]->id,'',$disabledtask,'text');
+ $s.=' ';
+ print $s;
+ print ' ';
+ print '';
+ if ((! $lines[$i]->public) && $disabledproject) print $form->textwithpicto('',$langs->trans("YouAreNotContactOfProject"));
+ else if ($disabledtask) print $form->textwithpicto('',$langs->trans("TaskIsNotAffectedToYou"));
+ print ' ';
+
+ print " \n";
}
- print '';
- $s =$form->select_date('',$lines[$i]->id,'','','',"addtime",1,0,1,$disabledtask);
- $s.=' ';
- $s.=$form->select_duration($lines[$i]->id,'',$disabledtask,'text');
- $s.=' ';
- print $s;
- print ' ';
- print '';
- if ((! $lines[$i]->public) && $disabledproject) print $form->textwithpicto('',$langs->trans("YouAreNotContactOfProject"));
- else if ($disabledtask) print $form->textwithpicto('',$langs->trans("TaskIsNotAffectedToYou"));
- print ' ';
-
- print "\n";
$inc++;
$level++;
- if ($lines[$i]->id) projectLinesb($inc, $lines[$i]->id, $lines, $level, $projectsrole, $tasksrole, $mytask);
+ if ($lines[$i]->id) projectLinesb($inc, $lines[$i]->id, $lines, $level, $projectsrole, $tasksrole, $mine, $restricteditformytask);
$level--;
}
else
diff --git a/htdocs/projet/activity/list.php b/htdocs/projet/activity/list.php
index e9610eb98e5..61683aa18b4 100644
--- a/htdocs/projet/activity/list.php
+++ b/htdocs/projet/activity/list.php
@@ -158,9 +158,12 @@ print ''.$langs->trans("TimeSpent").' ';
print ''.$langs->trans("AddDuration").' ';
print "\n";
+// By default, we can edit only tasks we are assigned to
+$restricteditformytask=(empty($conf->global->PROJECT_TIME_ON_ALL_TASKS_MY_PROJECTS)?1:0);
+
if (count($tasksarray) > 0)
{
- projectLinesb($j, 0, $tasksarray, $level, $projectsrole, $tasksrole, $mine);
+ projectLinesb($j, 0, $tasksarray, $level, $projectsrole, $tasksrole, $mine, $restricteditformytask);
}
else
{