* Copyright (C) 2006-2014 Laurent Destailleur * Copyright (C) 2006-2010 Regis Houssin * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ /** * \file htdocs/projet/tasks/index.php * \ingroup project * \brief List all task of a project */ require ("../../main.inc.php"); require_once DOL_DOCUMENT_ROOT.'/projet/class/project.class.php'; 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/lib/date.lib.php'; $langs->load('projects'); $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'); $search_task_ref=GETPOST('search_task_ref'); $search_task_label=GETPOST('search_task_label'); $search_project_user=GETPOST('search_project_user'); $search_task_user=GETPOST('search_task_user'); // Security check $socid=0; if ($user->societe_id > 0) $socid = $user->societe_id; if (!$user->rights->projet->lire) accessforbidden(); $sortfield = GETPOST("sortfield"); $sortorder = GETPOST("sortorder"); $page = GETPOST("page"); $page = is_numeric($page) ? $page : 0; $page = $page == -1 ? 0 : $page; $mine = $_REQUEST['mode']=='mine' ? 1 : 0; // Purge criteria if (GETPOST("button_removefilter_x") || GETPOST("button_removefilter")) // Both test are required to be compatible with all browsers { $search_project=""; $search_status=""; $search_task_ref=""; $search_task_label=""; } if (empty($search_status) && $search_status == '') $search_status=1; /* * Actions */ // None /* * View */ $form=new Form($db); $projectstatic = new Project($db); $taskstatic = new Task($db); $title=$langs->trans("Activities"); if ($mine) $title=$langs->trans("MyActivities"); llxHeader("",$title,"Projet"); if ($id) { $projectstatic->fetch($id); $projectstatic->societe->fetch($projectstatic->societe->id); } print_barre_liste($title, $page, $_SERVER["PHP_SELF"], "", $sortfield, $sortorder, "", $num, '', 'title_project'); // Show description of content if ($mine) print $langs->trans("MyTasksDesc").'

'; else { if ($user->rights->projet->all->lire && ! $socid) print $langs->trans("ProjectsDesc").'

'; else print $langs->trans("ProjectsPublicDesc").'

'; } // Get list of project id allowed to user (in a string list separated by coma) $projectsListId = $projectstatic->getProjectsAuthorizedForUser($user,$mine,1,$socid); // Get list of tasks in tasksarray and taskarrayfiltered // We need all tasks (even not limited to a user because a task assigned to a user can have a parent that is not assigned to him and we need such parents). $morewherefilter=''; if ($search_task_ref) $morewherefilter.=natural_search('t.ref', $search_task_ref); if ($search_task_label) $morewherefilter.=natural_search('t.label', $search_task_label); $tasksarray=$taskstatic->getTasksArray(0, 0, $projectstatic->id, $socid, 0, $search_project, $search_status, $morewherefilter, $search_project_user, $search_task_user); // We load also tasks limited to a particular user $tasksrole=($mine ? $taskstatic->getUserRolesForProjectsOrTasks(0,$user,$projectstatic->id,0) : ''); print '
'; print ''; print ''; // If the user can view users if ($user->rights->user->user->lire) { $moreforfilter.='
'; $moreforfilter.=$langs->trans('ProjectsWithThisUserAsContact'). ' '; $moreforfilter.=$form->select_dolusers($search_project_user, 'search_project_user', 1, '', 0, '', '', 0, 0, 0, '', 0, '', 'maxwidth300'); $moreforfilter.='
'; } if ($user->rights->user->user->lire) { $moreforfilter.='
'; $moreforfilter.=$langs->trans('TasksWithThisUserAsContact'). ' '; $moreforfilter.=$form->select_dolusers($search_task_user, 'search_task_user', 1, '', 0, '', '', 0, 0, 0, '', 0, '', 'maxwidth300'); $moreforfilter.='
'; } if (! empty($moreforfilter)) { print '
'; print $moreforfilter; $parameters=array(); $reshook=$hookmanager->executeHooks('printFieldPreListTitle',$parameters); // Note that $action and $object may have been modified by hook print $hookmanager->resPrint; print '
'; } print ''; print ''; print ''; print ''; print ''; print ''; print ''; print ''; print ''; print ''; print ''; print "\n"; print ''; print ''; print ''; print ''; print ''; print ''; $max=10000; if (count($tasksarray) > (empty($conf->global->PROJECT_LIMIT_TASK_PROJECT_AREA)?$max:$conf->global->PROJECT_LIMIT_TASK_PROJECT_AREA)) { $langs->load("errors"); print ''; print ''; } else { // Show all lines in taskarray (recursive function to go down on tree) $j=0; $level=0; $nboftaskshown=projectLinesa($j, 0, $tasksarray, $level, true, 1, $tasksrole, $projectsListId, 0); } print "
'.$langs->trans("Project").''.$langs->trans("ProjectStatus").''.$langs->trans("RefTask").''.$langs->trans("LabelTask").''.$langs->trans("DateStart").''.$langs->trans("DateEnd").''.$langs->trans("PlannedWorkload"); // TODO Replace 86400 and 7 to take account working hours per day and working day per weeks //print '
('.$langs->trans("DelayWorkHour").')'; print '
'.$langs->trans("ProgressDeclared").''.$langs->trans("TimeSpent").''.$langs->trans("ProgressCalculated").'
'; print ''; print ''; $listofstatus=array(-1=>' '); foreach($projectstatic->statuts_short as $key => $val) $listofstatus[$key]=$langs->trans($val); print $form->selectarray('search_status', $listofstatus, $search_status); print ''; print ''; print ''; print ''; print ''; print ' '; print ''; print ''; print ''; print '
'; print $langs->trans("WarningTooManyDataPleaseUseMoreFilters", $max, 'PROJECT_LIMIT_TASK_PROJECT_AREA'); print '
"; print '
'; print ''; /* * Actions */ if ($user->rights->projet->creer) { print '
'; print ''.$langs->trans('AddTask').''; print '
'; } llxFooter(); $db->close();