Add more clear information for project view

This commit is contained in:
Laurent Destailleur 2010-02-20 20:23:48 +00:00
parent fad16cf338
commit a3bb3f2cee
16 changed files with 139 additions and 168 deletions

View File

@ -366,7 +366,7 @@ function PLineSelect(&$inc, $parent, $lines, $level=0, $selected=0)
print $langs->trans("Project").' '.$lines[$i]->projectref;
if (empty($lines[$i]->public))
{
print ' ('.$langs->trans("Private").')';
print ' ('.$langs->trans("PrivateProject").')';
}
else
{
@ -389,7 +389,7 @@ function PLineSelect(&$inc, $parent, $lines, $level=0, $selected=0)
print $langs->trans("Project").' '.$lines[$i]->projectref;
if (empty($lines[$i]->public))
{
print ' ('.$langs->trans("Private").')';
print ' ('.$langs->trans("PrivateProject").')';
}
else
{

View File

@ -98,21 +98,21 @@ class modProjet extends DolibarrModules
$r++;
$this->rights[$r][0] = 41; // id de la permission
$this->rights[$r][1] = "Lire les projets et taches (publiques ou m'appartenant)"; // libelle de la permission
$this->rights[$r][1] = "Lire les projets et taches (partagés ou dont je suis contact)"; // libelle de la permission
$this->rights[$r][2] = 'r'; // type de la permission (deprecie a ce jour)
$this->rights[$r][3] = 1; // La permission est-elle une permission par defaut
$this->rights[$r][4] = 'lire';
$r++;
$this->rights[$r][0] = 42; // id de la permission
$this->rights[$r][1] = "Creer/modifier les projets et taches (publiques ou m'appartenant)"; // libelle de la permission
$this->rights[$r][1] = "Creer/modifier les projets et taches (partagés ou dont je suis contact)"; // libelle de la permission
$this->rights[$r][2] = 'w'; // type de la permission (deprecie a ce jour)
$this->rights[$r][3] = 0; // La permission est-elle une permission par defaut
$this->rights[$r][4] = 'creer';
$r++;
$this->rights[$r][0] = 44; // id de la permission
$this->rights[$r][1] = "Supprimer les projets et taches (publiques ou m'appartenant)"; // libelle de la permission
$this->rights[$r][1] = "Supprimer les projets et taches (partagés ou dont je suis contact)"; // libelle de la permission
$this->rights[$r][2] = 'd'; // type de la permission (deprecie a ce jour)
$this->rights[$r][3] = 0; // La permission est-elle une permission par defaut
$this->rights[$r][4] = 'supprimer';

View File

@ -395,9 +395,9 @@ Permission31=Read products
Permission32=Create/modify products
Permission34=Delete products
Permission38=Export products
Permission41=Read projects
Permission42=Create/modify projects
Permission44=Delete projects
Permission41=Read projects (shared projects or projects i'm contact for)
Permission42=Create/modify projects (shared projects or projects i'm contact for)
Permission44=Delete projects (shared projects or projects i'm contact for)
Permission61=Read interventions
Permission62=Create/modify interventions
Permission64=Delete interventions

View File

@ -2,7 +2,8 @@
CHARSET=UTF-8
Project=Project
Projects=Projects
SharedProject=Shared project
SharedProject=Everybody
PrivateProject=Contacts of project
Myprojects=My projects
ProjectsArea=Projects area
NewProject=New project

View File

@ -395,9 +395,9 @@ Permission31 = Consulter les produits
Permission32 = Créer/modifier les produits
Permission34 = Supprimer les produits
Permission38 = Exporter les produits
Permission41 = Consulter les projets et tâches (publiques ou m'appartenant)
Permission42 = Créer/modifier les projets et tâches (publiques ou m'appartenant)
Permission44 = Supprimer les projets et tâches (publiques ou m'appartenant)
Permission41 = Consulter les projets et tâches (partagés ou dont je suis contact)
Permission42 = Créer/modifier les projets et tâches (partagés ou dont je suis contact)
Permission44 = Supprimer les projets et tâches (partagés ou dont je suis contact)
Permission61 = Consulter les interventions
Permission62 = Créer/modifier les interventions
Permission64 = Supprimer les interventions

View File

@ -2,7 +2,8 @@
CHARSET=UTF-8
Project=Projet
Projects=Projets
SharedProject=Projet partagé
SharedProject=Tout le monde
PrivateProject=Contacts du projet
Myprojects=Mes projets
ProjectsArea=Espace projet
NewProject=Nouveau projet

View File

@ -147,10 +147,10 @@ function task_prepare_head($object)
*/
function select_projects($socid, $selected='', $htmlname='projectid')
{
global $db,$conf,$langs;
global $db,$user,$conf,$langs;
// On recherche les projets
$sql = 'SELECT p.rowid, p.ref, p.title, p.fk_soc';
$sql = 'SELECT p.rowid, p.ref, p.title, p.fk_soc, p.fk_statut, p.public';
$sql.= ' FROM '.MAIN_DB_PREFIX .'projet as p';
$sql.= " WHERE (p.fk_soc='".$socid."' OR p.fk_soc IS NULL)";
$sql.= " AND p.entity = ".$conf->entity;
@ -170,7 +170,8 @@ function select_projects($socid, $selected='', $htmlname='projectid')
{
$obj = $db->fetch_object($resql);
$labeltoshow=dol_trunc($obj->ref,12).' - '.dol_trunc($obj->title,12);
if (empty($obj->fk_soc)) $labeltoshow.=' ('.$langs->trans("SharedProject").')';
//if ($obj->public) $labeltoshow.=' ('.$langs->trans("SharedProject").')';
//else $labeltoshow.=' ('.$langs->trans("Private").')';
if (!empty($selected) && $selected == $obj->rowid)
{
print '<option value="'.$obj->rowid.'" selected="true">'.$labeltoshow.'</option>';
@ -499,7 +500,83 @@ function clean_orphelins($db)
return -1;
}
}
}
/**
* Return HTML table with list of projects and number of opened tasks
*
* @param unknown_type $db
* @param unknown_type $mine
* @param unknown_type $socid
* @param unknown_type $projectsListId
*/
function print_projecttasks_array($db,$mine,$socid,$projectsListId)
{
global $langs,$conf,$user;
require_once(DOL_DOCUMENT_ROOT."/projet/project.class.php");
$projectstatic=new Project($db);
$sortfield='';
$sortorder='';
print '<table class="noborder" width="100%">';
print '<tr class="liste_titre">';
print_liste_field_titre($langs->trans("Project"),"index.php","","","","",$sortfield,$sortorder);
print_liste_field_titre($langs->trans("NbOpenTasks"),"","","","",'align="right"',$sortfield,$sortorder);
print_liste_field_titre($langs->trans("Status"),"","","","",'align="right"',$sortfield,$sortorder);
print "</tr>\n";
$sql = "SELECT p.rowid as projectid, p.ref, p.title, p.fk_user_creat, p.public, p.fk_statut, count(t.rowid) as nb";
$sql.= " FROM ".MAIN_DB_PREFIX."projet as p";
$sql.= " LEFT JOIN ".MAIN_DB_PREFIX."projet_task as t ON p.rowid = t.fk_projet";
$sql.= " WHERE p.entity = ".$conf->entity;
if ($mine) $sql.= " AND p.rowid IN (".$projectsListId.")";
if ($socid) $sql.= " AND p.fk_soc = ".$socid;
$sql.= " GROUP BY p.ref";
$var=true;
$resql = $db->query($sql);
if ( $resql )
{
$num = $db->num_rows($resql);
$i = 0;
while ($i < $num)
{
$objp = $db->fetch_object($resql);
$projectstatic->id = $objp->projectid;
$projectstatic->user_author_id = $objp->fk_user_creat;
$projectstatic->public = $objp->public;
$userAccess = $projectstatic->restrictedProjectArea($user,1);
if ($userAccess >= 0)
{
$var=!$var;
print "<tr $bc[$var]>";
print '<td nowrap="nowrap">';
$projectstatic->ref=$objp->ref;
print $projectstatic->getNomUrl(1);
print ' - '.$objp->title.'</td>';
print '<td align="right">'.$objp->nb.'</td>';
$projectstatic->statut = $objp->fk_statut;
print '<td align="right">'.$projectstatic->getLibStatut(3).'</td>';
print "</tr>\n";
}
$i++;
}
$db->free($resql);
}
else
{
dol_print_error($db);
}
print "</table>";
}
?>

View File

@ -19,16 +19,16 @@
*/
/**
* \file htdocs/projet/activity/myactivity.php
* \file htdocs/projet/activity/index.php
* \ingroup projet
* \brief Page activite perso du module projet
* \version $Id$
*/
require("./pre.inc.php");
require_once(DOL_DOCUMENT_ROOT."/lib/project.lib.php");
$mode=$_REQUEST["mode"];
$mine = $_REQUEST['mode']=='mine' ? 1 : 0;
// Security check
if (!$user->rights->projet->lire) accessforbidden();
@ -48,7 +48,6 @@ $now = gmmktime();
$projectstatic=new Project($db);
$mine = $_REQUEST['mode']=='mine' ? 1 : 0;
$projectsListId = $projectstatic->getProjectsAuthorizedForUser($user,$mine,1);
$title=$langs->trans("Activities");
@ -61,67 +60,12 @@ print_fiche_titre($title);
print '<table border="0" width="100%" class="notopnoleftnoright">';
print '<tr><td width="30%" valign="top" class="notopnoleft">';
print '<table class="noborder" width="100%">';
print '<tr class="liste_titre">';
print_liste_field_titre($langs->trans("Project"),"index.php","","","","",$sortfield,$sortorder);
print_liste_field_titre($langs->trans("NbOpenTasks"),"","","","",'align="right"',$sortfield,$sortorder);
print_liste_field_titre($langs->trans("Status"),"","","","",'align="right"',$sortfield,$sortorder);
print "</tr>\n";
$sql = "SELECT p.rowid as projectid, p.ref, p.title, p.fk_user_creat, p.public, p.fk_statut, count(t.rowid) as nb";
$sql.= " FROM ".MAIN_DB_PREFIX."projet as p";
$sql.= ", ".MAIN_DB_PREFIX."projet_task as t";
$sql.= " WHERE t.fk_projet = p.rowid";
$sql.= " AND p.entity = ".$conf->entity;
if ($mine) $sql.= " AND p.rowid IN (".$projectsListId.")";
if ($socid) $sql.= " AND p.fk_soc = ".$socid;
$sql.= " GROUP BY p.ref";
print_projecttasks_array($db,$mine,$socid,$projectsListId);
$resql = $db->query($sql);
if ( $resql )
{
$var=true;
$num = $db->num_rows($resql);
$i = 0;
while ($i < $num)
{
$objp = $db->fetch_object($resql);
$projectstatic->id = $objp->projectid;
$projectstatic->user_author_id = $objp->fk_user_creat;
$projectstatic->public = $objp->public;
$userAccess = $projectstatic->restrictedProjectArea($user,1);
if ($userAccess >= 0)
{
$var=!$var;
print "<tr $bc[$var]>";
print '<td nowrap="nowrap">';
$projectstatic->ref=$objp->ref;
print $projectstatic->getNomUrl(1);
print ' - '.$objp->title.'</td>';
print '<td align="right">'.$objp->nb.'</td>';
$projectstatic->statut = $objp->fk_statut;
print '<td align="right">'.$projectstatic->getLibStatut(3).'</td>';
print "</tr>\n";
}
$i++;
}
$db->free($resql);
}
else
{
dol_print_error($db);
}
print "</table>";
/* Affichage de la liste des projets d'aujourd'hui */
print '<br /><table class="noborder" width="100%">';
print '<br><table class="noborder" width="100%">';
print '<tr class="liste_titre">';
print '<td width="50%">'.$langs->trans('Today').'</td>';
print '<td width="50%" align="right">'.$langs->trans("Time").'</td>';
@ -143,7 +87,7 @@ if ( $resql )
{
$var=true;
$total=0;
while ($row = $db->fetch_object($resql))
{
$var=!$var;
@ -193,7 +137,7 @@ if ( $resql )
{
$var=true;
$total=0;
while ($row = $db->fetch_object($resql))
{
$var=!$var;
@ -245,7 +189,7 @@ if ( $resql )
{
$total = 0;
$var=true;
while ($row = $db->fetch_object($resql))
{
$var=!$var;
@ -294,7 +238,7 @@ $resql = $db->query($sql);
if ( $resql )
{
$var=false;
while ($row = $db->fetch_object($resql))
{
print "<tr $bc[$var]>";

View File

@ -207,7 +207,7 @@ if ($id > 0 || ! empty($ref))
// Visibility
print '<tr><td>'.$langs->trans("Visibility").'</td><td>';
if ($project->public) print $langs->trans('SharedProject');
else print $langs->trans('Private');
else print $langs->trans('PrivateProject');
print '</td></tr>';
// Statut

View File

@ -92,7 +92,7 @@ print '</td></tr>';
// Visibility
print '<tr><td>'.$langs->trans("Visibility").'</td><td>';
if ($project->public) print $langs->trans('SharedProject');
else print $langs->trans('Private');
else print $langs->trans('PrivateProject');
print '</td></tr>';
// Statut

View File

@ -276,7 +276,7 @@ if ($_GET["action"] == 'create' && $user->rights->projet->creer)
// Public
print '<tr><td>'.$langs->trans("Visibility").'</td><td>';
$array=array(0 => $langs->trans("Private"),1 => $langs->trans("SharedProject"));
$array=array(0 => $langs->trans("PrivateProject"),1 => $langs->trans("SharedProject"));
$html->select_array('public',$array,$project->public);
print '</td></tr>';
@ -370,7 +370,7 @@ else
// Visibility
print '<tr><td>'.$langs->trans("Visibility").'</td><td>';
$array=array(0 => $langs->trans("Private"),1 => $langs->trans("SharedProject"));
$array=array(0 => $langs->trans("PrivateProject"),1 => $langs->trans("SharedProject"));
$html->select_array('public',$array,$project->public);
print '</td></tr>';
@ -421,7 +421,7 @@ else
// Visibility
print '<tr><td>'.$langs->trans("Visibility").'</td><td>';
if ($project->public) print $langs->trans('SharedProject');
else print $langs->trans('Private');
else print $langs->trans('PrivateProject');
print '</td></tr>';
// Statut

View File

@ -26,6 +26,10 @@
*/
require("./pre.inc.php");
require_once(DOL_DOCUMENT_ROOT."/lib/project.lib.php");
$mine = $_REQUEST['mode']=='mine' ? 1 : 0;
$langs->load("projects");
// Security check
@ -43,7 +47,6 @@ if (!$user->rights->projet->lire) accessforbidden();
$socstatic=new Societe($db);
$projectstatic=new Project($db);
$mine = $_REQUEST['mode']=='mine' ? 1 : 0;
$projectsListId = $projectstatic->getProjectsAuthorizedForUser($user,$mine,1);
llxHeader("",$langs->trans("Projects"),"EN:Module_Projects|FR:Module_Projets|ES:M&oacute;dulo_Proyectos");
@ -56,62 +59,7 @@ print_fiche_titre($text);
print '<table border="0" width="100%" class="notopnoleftnoright">';
print '<tr><td width="30%" valign="top" class="notopnoleft">';
print '<table class="noborder" width="100%">';
print '<tr class="liste_titre">';
print_liste_field_titre($langs->trans("Project"),"index.php","","","","",$sortfield,$sortorder);
print_liste_field_titre($langs->trans("NbOpenTasks"),"","","","",'align="right"',$sortfield,$sortorder);
print_liste_field_titre($langs->trans("Status"),"","","","",'align="right"',$sortfield,$sortorder);
print "</tr>\n";
$sql = "SELECT p.rowid as projectid, p.ref, p.title, p.fk_user_creat, p.public, p.fk_statut, count(t.rowid) as nb";
$sql.= " FROM ".MAIN_DB_PREFIX."projet as p";
$sql.= " LEFT JOIN ".MAIN_DB_PREFIX."projet_task as t ON p.rowid = t.fk_projet";
$sql.= " WHERE p.entity = ".$conf->entity;
if ($mine) $sql.= " AND p.rowid IN (".$projectsListId.")";
if ($socid) $sql.= " AND p.fk_soc = ".$socid;
$sql.= " GROUP BY p.ref";
$var=true;
$resql = $db->query($sql);
if ( $resql )
{
$num = $db->num_rows($resql);
$i = 0;
while ($i < $num)
{
$objp = $db->fetch_object($resql);
$projectstatic->id = $objp->projectid;
$projectstatic->user_author_id = $objp->fk_user_creat;
$projectstatic->public = $objp->public;
$userAccess = $projectstatic->restrictedProjectArea($user,1);
if ($userAccess >= 0)
{
$var=!$var;
print "<tr $bc[$var]>";
print '<td nowrap="nowrap">';
$projectstatic->ref=$objp->ref;
print $projectstatic->getNomUrl(1);
print ' - '.$objp->title.'</td>';
print '<td align="right">'.$objp->nb.'</td>';
$projectstatic->statut = $objp->fk_statut;
print '<td align="right">'.$projectstatic->getLibStatut(3).'</td>';
print "</tr>\n";
}
$i++;
}
$db->free($resql);
}
else
{
dol_print_error($db);
}
print "</table>";
print_projecttasks_array($db,$mine,$socid,$projectsListId);
print '</td><td width="70%" valign="top" class="notopnoleft">';

View File

@ -132,29 +132,29 @@ if ($resql)
while ($i < $num)
{
$objp = $db->fetch_object($resql);
$projectstatic->id = $objp->projectid;
$projectstatic->user_author_id = $objp->fk_user_creat;
$projectstatic->public = $objp->public;
$userAccess = $projectstatic->restrictedProjectArea($user,1);
if ($userAccess >= 0)
{
$var=!$var;
print "<tr $bc[$var]>";
// Project url
print "<td>";
$projectstatic->ref = $objp->ref;
print $projectstatic->getNomUrl(1);
print "</td>";
// Title
print '<td>';
print dol_trunc($objp->title,24);
print '</td>';
// Company
print '<td>';
if ($objp->socid)
@ -168,21 +168,21 @@ if ($resql)
print '&nbsp;';
}
print '</td>';
// Visibility
print '<td align="left">';
if ($objp->public) print $langs->trans('SharedProject');
else print $langs->trans('Private');
else print $langs->trans('PrivateProject');
print '</td>';
// Status
$projectstatic->statut = $objp->fk_statut;
print '<td align="right">'.$projectstatic->getLibStatut(3).'</td>';
print "</tr>\n";
}
$i++;
}

View File

@ -104,7 +104,7 @@ if ($id > 0 || ! empty($ref))
if ($project->fetch($id, $ref))
{
if ($project->societe->id > 0) $result=$project->societe->fetch($project->societe->id);
// To verify role of users
$userAccess = $project->restrictedProjectArea($user);
@ -132,7 +132,7 @@ if ($id > 0 || ! empty($ref))
// Visibility
print '<tr><td>'.$langs->trans("Visibility").'</td><td>';
if ($project->public) print $langs->trans('SharedProject');
else print $langs->trans('Private');
else print $langs->trans('PrivateProject');
print '</td></tr>';
// Statut

View File

@ -58,8 +58,8 @@ class Project extends CommonObject
var $statuts;
/**
* \brief Constructeur de la classe
* \param DB handler acces base de donnees
* \brief Constructor
* \param DB Database handler
*/
function Project($DB)
{
@ -604,7 +604,7 @@ class Project extends CommonObject
$xnbp++;
}
}
/**
* \brief Check permissions
*/
@ -622,7 +622,7 @@ class Project extends CommonObject
{
$userRole = $this->liste_contact(4,$source);
$num=sizeof($userRole);
$i = 0;
while ($i < $num)
{
@ -634,7 +634,7 @@ class Project extends CommonObject
}
}
}
if (!$userAccess && !$this->public)
{
if (!$list)
@ -645,12 +645,12 @@ class Project extends CommonObject
{
return -1;
}
}
return $userAccess;
}
/**
* Return array of projects authorized for a user
*
@ -669,7 +669,7 @@ class Project extends CommonObject
$sql.= ", ".MAIN_DB_PREFIX."element_contact as ec";
$sql.= ", ".MAIN_DB_PREFIX."c_type_contact as ctc";
$sql.= " WHERE p.entity = ".$conf->entity;
if ($mine)
{
$sql.= " AND ec.element_id = p.rowid";
@ -699,9 +699,9 @@ class Project extends CommonObject
$temp[] = $row[0];
$i++;
}
$this->db->free($resql);
if ($list)
{
if (empty($temp)) return 0;

View File

@ -229,7 +229,7 @@ else
// Visibility
print '<tr><td>'.$langs->trans("Visibility").'</td><td>';
if ($project->public) print $langs->trans('SharedProject');
else print $langs->trans('Private');
else print $langs->trans('PrivateProject');
print '</td></tr>';
// Statut