From be525ad0e88e5a72cfab395fb774f92efacc9132 Mon Sep 17 00:00:00 2001 From: fhenry <florian.henry@open-concept.pro> Date: Wed, 15 May 2013 14:19:16 +0200 Subject: [PATCH] Better code quality for [ task #531 ] Add a duration on tasks --- htdocs/core/class/html.form.class.php | 37 +++++++++++++++++---------- htdocs/core/lib/date.lib.php | 10 ++++++++ htdocs/core/lib/project.lib.php | 8 ++---- htdocs/projet/index.php | 3 ++- htdocs/projet/tasks.php | 13 +++------- htdocs/projet/tasks/index.php | 2 +- htdocs/projet/tasks/task.php | 21 +++++---------- htdocs/projet/tasks/time.php | 17 +++++------- 8 files changed, 56 insertions(+), 55 deletions(-) diff --git a/htdocs/core/class/html.form.class.php b/htdocs/core/class/html.form.class.php index 4a03afcbb4b..b29e9da546d 100644 --- a/htdocs/core/class/html.form.class.php +++ b/htdocs/core/class/html.form.class.php @@ -3518,10 +3518,13 @@ class Form * @param string $prefix prefix * @param int $iSecond Default preselected duration (number of seconds) * @param int $disabled Disable the combo box + * @param string $typehour if select then hour in select if text input in text * @return void */ - function select_duration($prefix,$iSecond='',$disabled=0) + function select_duration($prefix,$iSecond='',$disabled=0,$typehour='select') { + global $langs; + if ($iSecond) { require_once DOL_DOCUMENT_ROOT.'/core/lib/date.lib.php'; @@ -3529,19 +3532,27 @@ class Form $hourSelected = convertSecondToTime($iSecond,'hour'); $minSelected = convertSecondToTime($iSecond,'min'); } - - print '<select class="flat" name="'.$prefix.'hour"'.($disabled?' disabled="disabled"':'').'>'; - for ($hour = 0; $hour < 24; $hour++) + + if ($typehour=='select') { - print '<option value="'.$hour.'"'; - if ($hourSelected == $hour) - { - print " selected=\"true\""; - } - print ">".$hour."</option>"; + print '<select class="flat" name="'.$prefix.'hour"'.($disabled?' disabled="disabled"':'').'>'; + for ($hour = 0; $hour < 24; $hour++) + { + print '<option value="'.$hour.'"'; + if ($hourSelected == $hour) + { + print " selected=\"true\""; + } + print ">".$hour."</option>"; + } + print "</select>"; } - print "</select>"; - print "H "; + elseif ($typehour=='text') + { + $fullhours=convertSecondToTime($iSecond,'fullhour'); + print '<input type="text" size="3" name="'.$prefix.'hour" class="flat" value="'.$fullhours.'">'; + } + print $langs->trans('Hours'). " "; print '<select class="flat" name="'.$prefix.'min"'.($disabled?' disabled="disabled"':'').'>'; for ($min = 0; $min <= 55; $min=$min+5) { @@ -3550,7 +3561,7 @@ class Form print '>'.$min.'</option>'; } print "</select>"; - print "M "; + print $langs->trans('Minutes'). " "; } diff --git a/htdocs/core/lib/date.lib.php b/htdocs/core/lib/date.lib.php index c7a7e1240dd..29870c1ce95 100644 --- a/htdocs/core/lib/date.lib.php +++ b/htdocs/core/lib/date.lib.php @@ -287,6 +287,16 @@ function convertSecondToTime($iSecond,$format='all',$lengthOfDay=86400,$lengthOf { $sTime=dol_print_date($iSecond,'%H',true); } + else if ($format == 'fullhour') + { + if (!empty($iSecond)) { + $iSecond=$iSecond/3600; + } + else { + $iSecond=0; + } + $sTime=$iSecond; + } else if ($format == 'min') { $sTime=dol_print_date($iSecond,'%M',true); diff --git a/htdocs/core/lib/project.lib.php b/htdocs/core/lib/project.lib.php index ae124ebb484..8409eed5c6e 100644 --- a/htdocs/core/lib/project.lib.php +++ b/htdocs/core/lib/project.lib.php @@ -422,12 +422,8 @@ function projectLinesa(&$inc, $parent, &$lines, &$level, $var, $showproject, &$t // Planned Workload print '<td align="center">'; - if (!empty($lines[$i]->planned_workload)) { - $planned_workload_hours = intval($lines[$i]->planned_workload / 3600); - }else { - $planned_workload_hours = 0; - } - print $planned_workload_hours.' '.$langs->trans('Hours'); + if ($lines[$i]->planned_workload) print convertSecondToTime($lines[$i]->planned_workload,'all'); + else print '--:--'; print '</td>'; // Progress diff --git a/htdocs/projet/index.php b/htdocs/projet/index.php index 6ca7828f6c4..112816c9204 100644 --- a/htdocs/projet/index.php +++ b/htdocs/projet/index.php @@ -164,6 +164,7 @@ $sql.= " ORDER BY u.rowid, t.dateo, t.datee"; $userstatic=new User($db); +dol_syslog('projet:index.php: affectationpercent sql='.$sql,LOG_DEBUG); $resql = $db->query($sql); if ( $resql ) { @@ -192,7 +193,7 @@ if ( $resql ) } else { $percentcompletion = intval(($obj->task_duration*100)/$obj->planned_workload); } - print '<td>'.$percentcompletion.' %</td>'; + print '<td><a href="'.DOL_URL_ROOT.'/projet/tasks/time.php?id='.$obj->taskid.'&withproject=1">'.$percentcompletion.' %</a></td>'; print "</tr>\n"; $i++; diff --git a/htdocs/projet/tasks.php b/htdocs/projet/tasks.php index ccfb5087fc5..36ada461608 100644 --- a/htdocs/projet/tasks.php +++ b/htdocs/projet/tasks.php @@ -71,7 +71,7 @@ $hookmanager->initHooks(array('projecttaskcard')); $progress=GETPOST('progress', 'int'); $label=GETPOST('label', 'alpha'); $description=GETPOST('description'); -$planned_workload=GETPOST('planned_workload'); +$planned_workload=GETPOST('planned_workloadhour'); $userAccess=0; @@ -294,14 +294,9 @@ if ($action == 'create' && $user->rights->projet->creer && (empty($object->socie print $form->select_date(($date_end?$date_end:-1),'datee',0,0,0,'',1,1); print '</td></tr>'; - // Duration planned + // planned workload print '<tr><td>'.$langs->trans("PlannedWorkload").'</td><td>'; - if (!empty($object->planned_workload)) { - $planned_workload_hours = intval($object->planned_workload / 3600); - }else { - $planned_workload_hours = 0; - } - print '<input type="text" size="7" name="planned_workload" class="flat" value="'.$planned_workload.'"> '.$langs->trans('Hours'); + print $form->select_duration('planned_workload',$object->planned_workload,0,'text'); print '</td></tr>'; // Progress @@ -403,7 +398,7 @@ else print '<td>'.$langs->trans("LabelTask").'</td>'; print '<td align="center">'.$langs->trans("DateStart").'</td>'; print '<td align="center">'.$langs->trans("DateEnd").'</td>'; - print '<td align="right">'.$langs->trans("PlannedWorkload").'</td>'; + print '<td align="center">'.$langs->trans("PlannedWorkload").'</td>'; print '<td align="right">'.$langs->trans("Progress").'</td>'; print '<td align="right">'.$langs->trans("TimeSpent").'</td>'; print '<td> </td>'; diff --git a/htdocs/projet/tasks/index.php b/htdocs/projet/tasks/index.php index 5b42b76c221..cabcea2c48c 100644 --- a/htdocs/projet/tasks/index.php +++ b/htdocs/projet/tasks/index.php @@ -109,7 +109,7 @@ print '<tr class="liste_titre">'; print '<td class="liste_titre">'; print '<input type="text" class="flat" name="search_project" value="'.$search_project.'" size="8">'; print '</td>'; -print '<td class="liste_titre" colspan="5">'; +print '<td class="liste_titre" colspan="6">'; print ' '; print '</td>'; print '<td class="liste_titre" align="right"><input class="liste_titre" type="image" name="button_search" src="'.DOL_URL_ROOT.'/theme/'.$conf->theme.'/img/search.png" value="'.dol_escape_htmltag($langs->trans("Search")).'" title="'.dol_escape_htmltag($langs->trans("Search")).'"></td>'; diff --git a/htdocs/projet/tasks/task.php b/htdocs/projet/tasks/task.php index c99318e9221..858e4612f1a 100644 --- a/htdocs/projet/tasks/task.php +++ b/htdocs/projet/tasks/task.php @@ -29,6 +29,7 @@ require_once DOL_DOCUMENT_ROOT.'/projet/class/task.class.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/project.lib.php'; require_once DOL_DOCUMENT_ROOT.'/core/class/html.formother.class.php'; require_once DOL_DOCUMENT_ROOT.'/core/class/extrafields.class.php'; +require_once DOL_DOCUMENT_ROOT.'/core/lib/date.lib.php'; $id=GETPOST('id','int'); $ref=GETPOST('ref','alpha'); @@ -36,7 +37,7 @@ $action=GETPOST('action','alpha'); $confirm=GETPOST('confirm','alpha'); $withproject=GETPOST('withproject','int'); $project_ref=GETPOST('project_ref','alpha'); -$planned_workload=GETPOST('planned_workload'); +$planned_workload=GETPOST('planned_workloadhour'); // Security check $socid=0; @@ -285,14 +286,9 @@ if ($id > 0 || ! empty($ref)) print $form->select_date($object->date_end?$object->date_end:-1,'datee'); print '</td></tr>'; - // Duration planned + // workload planned print '<tr><td>'.$langs->trans("PlannedWorkload").'</td><td>'; - if (!empty($object->planned_workload)) { - $planned_workload_hours = intval($object->planned_workload / 3600); - }else { - $planned_workload_hours = 0; - } - print '<input type="text" size="7" name="planned_workload" class="flat" value="'.$planned_workload_hours.'"> '.$langs->trans('Hours'); + print $form->select_duration('planned_workload',$object->planned_workload,0,'text'); print '</td></tr>'; // Progress @@ -380,14 +376,9 @@ if ($id > 0 || ! empty($ref)) print dol_print_date($object->date_end,'day'); print '</td></tr>'; - // Duration planned + // planned Workload print '<tr><td>'.$langs->trans("PlannedWorkload").'</td><td colspan="3">'; - if (!empty($object->planned_workload)) { - $planned_workload_hours = intval($object->planned_workload / 3600); - }else { - $planned_workload_hours = 0; - } - print $planned_workload_hours.' '.$langs->trans('Hours'); + print convertSecondToTime($object->planned_workload,'all'); print '</td></tr>'; // Progress diff --git a/htdocs/projet/tasks/time.php b/htdocs/projet/tasks/time.php index 1c7cd1bc9cc..2b6306b5afd 100644 --- a/htdocs/projet/tasks/time.php +++ b/htdocs/projet/tasks/time.php @@ -56,7 +56,9 @@ if ($action == 'addtimespent' && $user->rights->projet->creer) { $error=0; - if (empty($_POST["timespent_durationhour"]) && empty($_POST["timespent_durationmin"])) + $timespent_durationhour = GETPOST('timespent_durationhour','int'); + $timespent_durationmin = GETPOST('timespent_durationmin','int'); + if (empty($timespent_durationhour) && empty($timespent_durationmin)) { $mesg='<div class="error">'.$langs->trans('ErrorFieldRequired',$langs->transnoentitiesnoconv("Duration")).'</div>'; $error++; @@ -264,13 +266,8 @@ if ($id > 0 || ! empty($ref)) // Label print '<tr><td>'.$langs->trans("Label").'</td><td colspan="3">'.$object->label.'</td></tr>'; - // Duration planned - if (!empty($object->planned_workload)) { - $planned_workload_hours = intval($object->planned_workload / 3600); - }else { - $planned_workload_hours = 0; - } - print '<tr><td>'.$langs->trans("PlannedWorkload").'</td><td colspan="3">'.$planned_workload_hours.' '.$langs->trans('Hours').'</td></tr>'; + // planned workload + print '<tr><td>'.$langs->trans("PlannedWorkload").'</td><td colspan="3">'.convertSecondToTime($object->planned_workload,'all').'</td></tr>'; // Project if (empty($withproject)) @@ -336,7 +333,7 @@ if ($id > 0 || ! empty($ref)) // Duration print '<td class="nowrap" align="right">'; - print $form->select_duration('timespent_duration',($_POST['timespent_duration']?$_POST['timespent_duration']:'')); + print $form->select_duration('timespent_duration',($_POST['timespent_duration']?$_POST['timespent_duration']:''),0,'text'); print '</td>'; print '<td align="center">'; @@ -443,7 +440,7 @@ if ($id > 0 || ! empty($ref)) if ($_GET['action'] == 'editline' && $_GET['lineid'] == $task_time->rowid) { print '<input type="hidden" name="old_duration" value="'.$task_time->task_duration.'">'; - print $form->select_duration('new_duration',$task_time->task_duration); + print $form->select_duration('new_duration',$task_time->task_duration,0,'text'); } else { -- GitLab