From c9edced656eda1e65350930006c7b5be150f7796 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur <eldy@destailleur.fr> Date: Tue, 11 Mar 2014 09:43:26 +0100 Subject: [PATCH] - New: Add filter on project status into task list. By default, only "opened" project are visible. - New: Status "validated" for project are renamed into "opened". --- ChangeLog | 12 +++++++----- htdocs/core/lib/project.lib.php | 16 +++++++++++----- htdocs/projet/class/project.class.php | 6 +++--- htdocs/projet/class/task.class.php | 13 ++++++++----- htdocs/projet/tasks/index.php | 13 ++++++++++--- 5 files changed, 39 insertions(+), 21 deletions(-) diff --git a/ChangeLog b/ChangeLog index a6bfc660b7f..9af3bdc2a74 100644 --- a/ChangeLog +++ b/ChangeLog @@ -25,12 +25,14 @@ For users: - New: Increase length of url into bookmark module. - New: Add an admin page to make a mass init of barcode values for all products. - New: Automatic events for sending mails showing info about mail linked objects. -- New: Price management enhancement (multiprice level, price by customer, if MAIN_FEATURES_LEVEL=2 Price by qty) +- New: Price management enhancement (multiprice level, price by customer, if MAIN_FEATURES_LEVEL=2 Price by qty). - New: Add filter on text and status into survey list. Can also sorter on id, text and date end. -- New: Add option MAIN_FAVICON_URL -- Fix: Project Task numbering rule customs rule works -- New: Created {line_price_ht_locale}, {line_price_vat_locale} and {line_price_ttc_locale} ODT tags - +- New: Add option MAIN_FAVICON_URL. +- New: Created {line_price_ht_locale}, {line_price_vat_locale} and {line_price_ttc_locale} ODT tags. +- New: Add filter on project status into task list. By default, only "opened" project are visible. +- New: Status "validated" for project are renamed into "opened". +- Fix: Project Task numbering customs rule works. + TODO - New: Predefined product and free product use same form. - New: [ task #926 ] Add extrafield feature on order lines. diff --git a/htdocs/core/lib/project.lib.php b/htdocs/core/lib/project.lib.php index 751ebbdfc5f..6672a9700b4 100644 --- a/htdocs/core/lib/project.lib.php +++ b/htdocs/core/lib/project.lib.php @@ -268,8 +268,8 @@ function projectLinesa(&$inc, $parent, &$lines, &$level, $var, $showproject, &$t { // Note that having a user assigned to a task into a project user has no permission on, should not be possible // because assignement on task can be done only on contact of project. - // If assignement was done and after, was removed from contact of project, then we can hide the line. - $showline=0; + // If assignement was done and after, was removed from contact of project, then we can hide the line. + $showline=0; } } } @@ -288,8 +288,8 @@ function projectLinesa(&$inc, $parent, &$lines, &$level, $var, $showproject, &$t // Project if ($showproject) { + // Project ref print "<td>"; - //var_dump($taskrole); if ($showlineingray) print '<i>'; $projectstatic->id=$lines[$i]->fk_project; $projectstatic->ref=$lines[$i]->projectref; @@ -298,6 +298,12 @@ function projectLinesa(&$inc, $parent, &$lines, &$level, $var, $showproject, &$t else print $projectstatic->getNomUrl(1,'nolink'); if ($showlineingray) print '</i>'; print "</td>"; + + // Status + print '<td>'; + $projectstatic->statut=$lines[$i]->projectstatus; + print $projectstatic->getLibStatut(2); + print "</td>"; } // Ref of task @@ -398,7 +404,7 @@ function projectLinesa(&$inc, $parent, &$lines, &$level, $var, $showproject, &$t { print '<tr class="liste_total">'; print '<td class="liste_total">'.$langs->trans("Total").'</td>'; - if ($showproject) print '<td></td>'; + if ($showproject) print '<td></td><td></td>'; print '<td></td>'; print '<td></td>'; print '<td></td>'; @@ -501,7 +507,7 @@ function projectLinesb(&$inc, $parent, $lines, &$level, &$projectsrole, &$tasksr // Time spent print '<td align="right">'; - if ($lines[$i]->duration) + if ($lines[$i]->duration) { print '<a href="'.DOL_URL_ROOT.'/projet/tasks/time.php?id='.$lines[$i]->id.'">'; print convertSecondToTime($lines[$i]->duration,'allhourmin'); diff --git a/htdocs/projet/class/project.class.php b/htdocs/projet/class/project.class.php index 18556fdec37..751cc2b7338 100644 --- a/htdocs/projet/class/project.class.php +++ b/htdocs/projet/class/project.class.php @@ -65,8 +65,8 @@ class Project extends CommonObject $this->db = $db; $this->societe = new Societe($db); - $this->statuts_short = array(0 => 'Draft', 1 => 'Validated', 2 => 'Closed'); - $this->statuts = array(0 => 'Draft', 1 => 'Validated', 2 => 'Closed'); + $this->statuts_short = array(0 => 'Draft', 1 => 'Opened', 2 => 'Closed'); + $this->statuts = array(0 => 'Draft', 1 => 'Opened', 2 => 'Closed'); } /** @@ -1330,7 +1330,7 @@ class Project extends CommonObject print 'Some orphelins were found and modified to be parent so records are visible again: '; print join(',',$listofid); } - + return $nb; } else diff --git a/htdocs/projet/class/task.class.php b/htdocs/projet/class/task.class.php index 7b21cbf57d0..e60aaa9a38a 100644 --- a/htdocs/projet/class/task.class.php +++ b/htdocs/projet/class/task.class.php @@ -141,7 +141,7 @@ class Task extends CommonObject // End call triggers } } - + //Update extrafield if (!$error) { if (empty($conf->global->MAIN_EXTRAFIELDS_DISABLED)) // For avoid conflicts if trigger used @@ -311,7 +311,7 @@ class Task extends CommonObject // End call triggers } } - + //Update extrafield if (!$error) { if (empty($conf->global->MAIN_EXTRAFIELDS_DISABLED)) // For avoid conflicts if trigger used @@ -535,9 +535,10 @@ class Task extends CommonObject * @param int $socid Third party id * @param int $mode 0=Return list of tasks and their projects, 1=Return projects and tasks if exists * @param string $filteronprojref Filter on project ref + * @param string $filteronprojstatus Filter on project status * @return array Array of tasks */ - function getTasksArray($usert=0, $userp=0, $projectid=0, $socid=0, $mode=0, $filteronprojref='') + function getTasksArray($usert=0, $userp=0, $projectid=0, $socid=0, $mode=0, $filteronprojref='', $filteronprojstatus=-1) { global $conf; @@ -546,7 +547,7 @@ class Task extends CommonObject //print $usert.'-'.$userp.'-'.$projectid.'-'.$socid.'-'.$mode.'<br>'; // List of tasks (does not care about permissions. Filtering will be done later) - $sql = "SELECT p.rowid as projectid, p.ref, p.title as plabel, p.public,"; + $sql = "SELECT p.rowid as projectid, p.ref, p.title as plabel, p.public, p.fk_statut,"; $sql.= " t.rowid as taskid, t.label, t.description, t.fk_task_parent, t.duration_effective, t.progress,"; $sql.= " t.dateo as date_start, t.datee as date_end, t.planned_workload, t.ref as ref_task,t.rang"; if ($mode == 0) @@ -567,6 +568,7 @@ class Task extends CommonObject if ($projectid) $sql.= " AND p.rowid in (".$projectid.")"; } if ($filteronprojref) $sql.= " AND p.ref LIKE '%".$filteronprojref."%'"; + if ($filteronprojstatus > -1) $sql.= " AND p.fk_statut = ".$filteronprojstatus; $sql.= " ORDER BY p.ref, t.rang, t.dateo"; //print $sql; @@ -606,6 +608,7 @@ class Task extends CommonObject $tasks[$i]->fk_project = $obj->projectid; $tasks[$i]->projectref = $obj->ref; $tasks[$i]->projectlabel = $obj->plabel; + $tasks[$i]->projectstatus = $obj->fk_statut; $tasks[$i]->label = $obj->label; $tasks[$i]->description = $obj->description; $tasks[$i]->fk_parent = $obj->fk_task_parent; @@ -1018,7 +1021,7 @@ class Task extends CommonObject // Load source object $clone_task->fetch($fromid); $origin_task->fetch($fromid); - + $defaultref=''; $obj = empty($conf->global->PROJECT_TASK_ADDON)?'mod_task_simple':$conf->global->PROJECT_TASK_ADDON; if (! empty($conf->global->PROJECT_TASK_ADDON) && is_readable(DOL_DOCUMENT_ROOT ."/core/modules/project/task/".$conf->global->PROJECT_TASK_ADDON.".php")) diff --git a/htdocs/projet/tasks/index.php b/htdocs/projet/tasks/index.php index 8c626175d3d..59563322ed5 100644 --- a/htdocs/projet/tasks/index.php +++ b/htdocs/projet/tasks/index.php @@ -1,6 +1,6 @@ <?php /* Copyright (C) 2005 Rodolphe Quiedeville <rodolphe@quiedeville.org> - * Copyright (C) 2006-2012 Laurent Destailleur <eldy@users.sourceforge.net> + * Copyright (C) 2006-2014 Laurent Destailleur <eldy@users.sourceforge.net> * Copyright (C) 2006-2010 Regis Houssin <regis.houssin@capnetworks.com> * * This program is free software; you can redistribute it and/or modify @@ -34,6 +34,8 @@ $langs->load('users'); $id=GETPOST('id','int'); $search_project=GETPOST('search_project'); +if (! isset($_GET['search_status']) && ! isset($_POST['search_status'])) $search_status=1; +else $search_status=GETPOST('search_status'); // Security check @@ -85,17 +87,17 @@ $projectsListId = $projectstatic->getProjectsAuthorizedForUser($user,$mine,1,$so // Get list of tasks in tasksarray and taskarrayfiltered // We need all tasks (even not limited to a user because a task to user can have a parent that is not affected to him). -$tasksarray=$taskstatic->getTasksArray(0, 0, $projectstatic->id, $socid, 0, $search_project); +$tasksarray=$taskstatic->getTasksArray(0, 0, $projectstatic->id, $socid, 0, $search_project, $search_status); // We load also tasks limited to a particular user $tasksrole=($mine ? $taskstatic->getUserRolesForProjectsOrTasks(0,$user,$projectstatic->id,0) : ''); print '<form method="POST" action="'.$_SERVER["PHP_SELF"].'">'; print '<input type="hidden" name="mode" value="'.GETPOST('mode').'">'; - print '<table class="noborder" width="100%">'; print '<tr class="liste_titre">'; print '<td>'.$langs->trans("Project").'</td>'; +print '<td>'.$langs->trans("Status").'</td>'; print '<td width="80">'.$langs->trans("RefTask").'</td>'; print '<td>'.$langs->trans("LabelTask").'</td>'; print '<td align="center">'.$langs->trans("DateStart").'</td>'; @@ -113,6 +115,11 @@ 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">'; +$listofstatus=array(-1=>' '); +foreach($projectstatic->statuts_short as $key => $val) $listofstatus[$key]=$langs->trans($val); +print $form->selectarray('search_status', $listofstatus, $search_status); +print '</td>'; print '<td class="liste_titre" colspan="7">'; print ' '; print '</td>'; -- GitLab