diff --git a/htdocs/projet/list.php b/htdocs/projet/list.php
index 2475074d94120620d5acade2213f7166919e0ca0..d0a1ac2c5994ee46b665045f1c837c2fa1086756 100644
--- a/htdocs/projet/list.php
+++ b/htdocs/projet/list.php
@@ -33,6 +33,8 @@ require_once DOL_DOCUMENT_ROOT.'/core/class/html.formother.class.php';
 require_once DOL_DOCUMENT_ROOT.'/core/class/html.formprojet.class.php';
 
 $langs->load('projects');
+$langs->load('companies');
+$langs->load('commercial');
 
 $title = $langs->trans("Projects");
 
@@ -107,17 +109,17 @@ if (empty($user->socid)) $fieldstosearchall["p.note_private"]="NotePrivate";
 
 $arrayfields=array(
     'p.ref'=>array('label'=>$langs->trans("Ref"), 'checked'=>1),
-    'p.label'=>array('label'=>$langs->trans("Label"), 'checked'=>1),
+    'p.title'=>array('label'=>$langs->trans("Label"), 'checked'=>1),
     's.nom'=>array('label'=>$langs->trans("ThirdParty"), 'checked'=>1),
-    'commerical'=>array('label'=>$langs->trans("SaleRepresentative"), 'checked'=>1),
-	'p.date_start'=>array('label'=>$langs->trans("DateStart"), 'checked'=>1, 'position'=>100),
-    'p.date_end'=>array('label'=>$langs->trans("DateEnd"), 'checked'=>1, 'position'=>101),
-    'p.visibility'=>array('label'=>$langs->trans("Visibility"), 'checked'=>1, 'position'=>102),
-    'p.opportunity_amount'=>array('label'=>$langs->trans("OpportunityAmount"), 'checked'=>1, 'enabled'=>$conf->global->PROJECT_USE_OPPORTUNITIES, 'position'=>103),
-	'p.opportunity_status'=>array('label'=>$langs->trans("OpportunityStatus"), 'checked'=>1, 'enabled'=>$conf->global->PROJECT_USE_OPPORTUNITIES, 'position'=>104),
+    'commercial'=>array('label'=>$langs->trans("SalesRepresentative"), 'checked'=>1),
+	'p.dateo'=>array('label'=>$langs->trans("DateStart"), 'checked'=>1, 'position'=>100),
+    'p.datee'=>array('label'=>$langs->trans("DateEnd"), 'checked'=>1, 'position'=>101),
+    'p.public'=>array('label'=>$langs->trans("Visibility"), 'checked'=>1, 'position'=>102),
+    'p.opp_amount'=>array('label'=>$langs->trans("OpportunityAmount"), 'checked'=>1, 'enabled'=>$conf->global->PROJECT_USE_OPPORTUNITIES, 'position'=>103),
+	'p.fk_opp_status'=>array('label'=>$langs->trans("OpportunityStatus"), 'checked'=>1, 'enabled'=>$conf->global->PROJECT_USE_OPPORTUNITIES, 'position'=>104),
 	'p.datec'=>array('label'=>$langs->trans("DateCreation"), 'checked'=>0, 'position'=>500),
     'p.tms'=>array('label'=>$langs->trans("DateModificationShort"), 'checked'=>0, 'position'=>500),
-    'p.status'=>array('label'=>$langs->trans("Status"), 'checked'=>1, 'position'=>1000),
+    'p.statut'=>array('label'=>$langs->trans("Status"), 'checked'=>1, 'position'=>1000),
 );
 // Extra fields
 if (is_array($extrafields->attribute_label) && count($extrafields->attribute_label))
@@ -175,7 +177,7 @@ llxHeader("",$langs->trans("Projects"),"EN:Module_Projects|FR:Module_Projets|ES:
 $projectsListId = $projectstatic->getProjectsAuthorizedForUser($user,($mine?$mine:($user->rights->projet->all->lire?2:0)),1,$socid);
 
 $sql = "SELECT p.rowid as projectid, p.ref, p.title, p.fk_statut, p.fk_opp_status, p.public, p.fk_user_creat";
-$sql.= ", p.datec as date_create, p.dateo as date_start, p.datee as date_end, p.opp_amount";
+$sql.= ", p.datec as date_creation, p.dateo as date_start, p.datee as date_end, p.opp_amount, p.tms as date_update";
 $sql.= ", s.nom as name, s.rowid as socid";
 $sql.= ", cls.code as opp_status_code";
 // Add fields for extrafields
@@ -260,7 +262,7 @@ if ($resql)
 	$i = 0;
 
 	$param='';
-	if ($mine)				        $param.='&mode=mine';
+	//if ($mine)				        $param.='&mode=mine';
 	if ($month)              		$param.='&month='.$month;
 	if ($year)               		$param.='&year=' .$year;
 	if ($socid)				        $param.='&socid='.$socid;
@@ -274,22 +276,29 @@ if ($resql)
 	if ($search_user > 0)    		$param.='&search_user='.$search_user;
 	if ($search_sale > 0)    		$param.='&search_sale='.$search_sale;
 	if ($optioncss != '') $param.='&optioncss='.$optioncss;
-
-
+	// Add $param from extra fields
+	foreach ($search_array_options as $key => $val)
+	{
+	    $crit=$val;
+	    $tmpkey=preg_replace('/search_options_/','',$key);
+	    if ($val != '') $param.='&search_options_'.$tmpkey.'='.urlencode($val);
+	}
+	
 	$text=$langs->trans("Projects");
-	if ($mine) $text=$langs->trans('MyProjects');
+	if ($search_user == $user->id) $text=$langs->trans('MyProjects');
 	print_barre_liste($text, $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, "", $num,'','title_project');
 
-	print '<form method="GET" id="searchFormList" action="'.$_SERVER["PHP_SELF"].'">';
+	print '<form method="POST" id="searchFormList" action="'.$_SERVER["PHP_SELF"].'">';
     if ($optioncss != '') print '<input type="hidden" name="optioncss" value="'.$optioncss.'">';
 	print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
+	print '<input type="hidden" name="formfilteraction" id="formfilteraction" value="list">';
 	print '<input type="hidden" name="action" value="list">';
 	print '<input type="hidden" name="sortfield" value="'.$sortfield.'">';
 	print '<input type="hidden" name="sortorder" value="'.$sortorder.'">';
 	print '<input type="hidden" name="type" value="'.$type.'">';
 
     // Show description of content
-	if ($mine) print $langs->trans("MyProjectsDesc").'<br><br>';
+	if ($search_user == $user->id) print $langs->trans("MyProjectsDesc").'<br><br>';
 	else
 	{
 		if ($user->rights->projet->all->lire && ! $socid) print $langs->trans("ProjectsDesc").'<br><br>';
@@ -302,6 +311,7 @@ if ($resql)
         print $langs->trans("FilterOnInto", $search_all) . join(', ',$fieldstosearchall);
 	}
 
+
 	$colspan=8;
 	if (! empty($conf->global->PROJECT_USE_OPPORTUNITIES)) $colspan+=2;
 	if (empty($conf->global->PROJECT_LIST_HIDE_STARTDATE)) $colspan++;
@@ -328,52 +338,76 @@ if ($resql)
 	if (! empty($moreforfilter))
 	{
 		print '<div class="liste_titre liste_titre_bydiv centpercent">';
-        //print '<tr class="liste_titre">';
-        //print '<td class="liste_titre" colspan="'.$colspan.'">';
 		print $moreforfilter;
     	$parameters=array();
     	$reshook=$hookmanager->executeHooks('printFieldPreListTitle',$parameters);    // Note that $action and $object may have been modified by hook
     	print $hookmanager->resPrint;
     	print '</div>';
-        //print '</td></tr>';
     }
 
-	print '<table class="liste '.($moreforfilter?"listwithfilterbefore":"").'">';
+	$varpage=empty($contextpage)?$_SERVER["PHP_SELF"]:$contextpage;
+	$selectedfields=$form->multiSelectArrayWithCheckbox('selectedfields', $arrayfields, $varpage);	// This also change content of $arrayfields
+    
+    print '<table class="liste '.($moreforfilter?"listwithfilterbefore":"").'">';
     		
 	print '<tr class="liste_titre">';
-	print_liste_field_titre($langs->trans("Ref"),$_SERVER["PHP_SELF"],"p.ref","",$param,"",$sortfield,$sortorder);
-	print_liste_field_titre($langs->trans("Label"),$_SERVER["PHP_SELF"],"p.title","",$param,"",$sortfield,$sortorder);
-	print_liste_field_titre($langs->trans("ThirdParty"),$_SERVER["PHP_SELF"],"s.nom","",$param,"",$sortfield,$sortorder);
-	print_liste_field_titre($langs->trans("SalesRepresentative"),$_SERVER["PHP_SELF"],"","",$param,"",$sortfield,$sortorder);
-	if (empty($conf->global->PROJECT_LIST_HIDE_STARTDATE)) print_liste_field_titre($langs->trans("DateStart"),$_SERVER["PHP_SELF"],"p.dateo","",$param,'align="center"',$sortfield,$sortorder);
-	print_liste_field_titre($langs->trans("DateEnd"),$_SERVER["PHP_SELF"],"p.datee","",$param,'align="center"',$sortfield,$sortorder);
-	print_liste_field_titre($langs->trans("Visibility"),$_SERVER["PHP_SELF"],"p.public","",$param,"",$sortfield,$sortorder);
-    if (! empty($conf->global->PROJECT_USE_OPPORTUNITIES))
-    {
-    	print_liste_field_titre($langs->trans("OpportunityAmountShort"),$_SERVER["PHP_SELF"],'p.opp_amount',"",$param,'align="right"',$sortfield,$sortorder);
-    	print_liste_field_titre($langs->trans("OpportunityStatusShort"),$_SERVER["PHP_SELF"],'p.fk_opp_status',"",$param,'align="center"',$sortfield,$sortorder);
-    }
-	$parameters=array();
-    $reshook=$hookmanager->executeHooks('printFieldListTitle',$parameters);    // Note that $action and $object may have been modified by hook
-    print $hookmanager->resPrint;
-    print_liste_field_titre($langs->trans("Status"),$_SERVER["PHP_SELF"],'p.fk_statut',"",$param,'align="right"',$sortfield,$sortorder);
-	print_liste_field_titre('',$_SERVER["PHP_SELF"],"",'','','',$sortfield,$sortorder,'maxwidthsearch ');
+	if (! empty($arrayfields['p.ref']['checked']))           print_liste_field_titre($langs->trans("Ref"),$_SERVER["PHP_SELF"],"p.ref","",$param,"",$sortfield,$sortorder);
+	if (! empty($arrayfields['p.title']['checked']))         print_liste_field_titre($langs->trans("Label"),$_SERVER["PHP_SELF"],"p.title","",$param,"",$sortfield,$sortorder);
+	if (! empty($arrayfields['s.nom']['checked']))           print_liste_field_titre($langs->trans("ThirdParty"),$_SERVER["PHP_SELF"],"s.nom","",$param,"",$sortfield,$sortorder);
+	if (! empty($arrayfields['commercial']['checked']))      print_liste_field_titre($langs->trans("SalesRepresentative"),$_SERVER["PHP_SELF"],"","",$param,"",$sortfield,$sortorder);
+	if (! empty($arrayfields['p.dateo']['checked']))         print_liste_field_titre($langs->trans("DateStart"),$_SERVER["PHP_SELF"],"p.dateo","",$param,'align="center"',$sortfield,$sortorder);
+	if (! empty($arrayfields['p.datee']['checked']))         print_liste_field_titre($langs->trans("DateEnd"),$_SERVER["PHP_SELF"],"p.datee","",$param,'align="center"',$sortfield,$sortorder);
+	if (! empty($arrayfields['p.public']['checked']))        print_liste_field_titre($langs->trans("Visibility"),$_SERVER["PHP_SELF"],"p.public","",$param,"",$sortfield,$sortorder);
+    if (! empty($arrayfields['p.opp_amount']['checked']))    print_liste_field_titre($langs->trans("OpportunityAmountShort"),$_SERVER["PHP_SELF"],'p.opp_amount',"",$param,'align="right"',$sortfield,$sortorder);
+    if (! empty($arrayfields['p.fk_opp_status']['checked'])) print_liste_field_titre($langs->trans("OpportunityStatusShort"),$_SERVER["PHP_SELF"],'p.fk_opp_status',"",$param,'align="center"',$sortfield,$sortorder);
+	// Extra fields
+	if (is_array($extrafields->attribute_label) && count($extrafields->attribute_label))
+	{
+	   foreach($extrafields->attribute_label as $key => $val) 
+	   {
+           if (! empty($arrayfields["ef.".$key]['checked'])) 
+           {
+				$align=$extrafields->getAlignFlag($key);
+				print_liste_field_titre($extralabels[$key],$_SERVER["PHP_SELF"],"ef.".$key,"",$param,($align?'align="'.$align.'"':''),$sortfield,$sortorder);
+           }
+	   }
+	}
+	// Hook fields
+	$parameters=array('arrayfields'=>$arrayfields);
+	$reshook=$hookmanager->executeHooks('printFieldListTitle',$parameters);    // Note that $action and $object may have been modified by hook
+	print $hookmanager->resPrint;
+	if (! empty($arrayfields['p.datec']['checked']))  print_liste_field_titre($langs->trans("DateCreationShort"),$_SERVER["PHP_SELF"],"p.datec","",$param,'align="center" class="nowrap"',$sortfield,$sortorder);
+	if (! empty($arrayfields['p.tms']['checked']))    print_liste_field_titre($langs->trans("DateModificationShort"),$_SERVER["PHP_SELF"],"p.tms","",$param,'align="center" class="nowrap"',$sortfield,$sortorder);
+	if (! empty($arrayfields['p.statut']['checked'])) print_liste_field_titre($langs->trans("Status"),$_SERVER["PHP_SELF"],"p.fk_statut","",$param,'align="center"',$sortfield,$sortorder);
+	print_liste_field_titre($selectedfields, $_SERVER["PHP_SELF"],"",'','','align="right"',$sortfield,$sortorder,'maxwidthsearch ');
 	print "</tr>\n";
 
 	print '<tr class="liste_titre">';
-	print '<td class="liste_titre">';
-	print '<input type="text" class="flat" name="search_ref" value="'.$search_ref.'" size="6">';
-	print '</td>';
-	print '<td class="liste_titre">';
-	print '<input type="text" class="flat" name="search_label" size="8" value="'.$search_label.'">';
-	print '</td>';
-	print '<td class="liste_titre">';
-	print '<input type="text" class="flat" name="search_societe" size="8" value="'.$search_societe.'">';
-	print '</td>';
+	if (! empty($arrayfields['p.ref']['checked']))
+	{
+    	print '<td class="liste_titre">';
+    	print '<input type="text" class="flat" name="search_ref" value="'.$search_ref.'" size="6">';
+    	print '</td>';
+	}
+	if (! empty($arrayfields['p.title']['checked']))
+	{
+    	print '<td class="liste_titre">';
+    	print '<input type="text" class="flat" name="search_label" size="8" value="'.$search_label.'">';
+    	print '</td>';
+	}
+	if (! empty($arrayfields['s.nom']['checked']))
+	{
+    	print '<td class="liste_titre">';
+    	print '<input type="text" class="flat" name="search_societe" size="8" value="'.$search_societe.'">';
+    	print '</td>';
+	}
 	// Sale representative
-	print '<td class="liste_titre">&nbsp;</td>';
+	if (! empty($arrayfields['commercial']['checked']))
+	{
+    	print '<td class="liste_titre">&nbsp;</td>';
+	}
 	// Start date
-	if (empty($conf->global->PROJECT_LIST_HIDE_STARTDATE))
+	if (! empty($arrayfields['p.dateo']['checked']))
 	{
 		print '<td class="liste_titre center">';
 		if (! empty($conf->global->MAIN_LIST_FILTER_ON_DAY)) print '<input class="flat" type="text" size="1" maxlength="2" name="sday" value="'.$sday.'">';
@@ -382,48 +416,78 @@ if ($resql)
 		print '</td>';
 	}
 	// End date
-	print '<td class="liste_titre center">';
-	if (! empty($conf->global->MAIN_LIST_FILTER_ON_DAY)) print '<input class="flat" type="text" size="1" maxlength="2" name="day" value="'.$day.'">';
-	print '<input class="flat" type="text" size="1" maxlength="2" name="month" value="'.$month.'">';
-	$formother->select_year($year?$year:-1,'year',1, 20, 5);
-	print '</td>';
-
-	print '<td class="liste_titre">';
-	$array=array(''=>'',0 => $langs->trans("PrivateProject"),1 => $langs->trans("SharedProject"));
-    print $form->selectarray('search_public',$array,$search_public);
-    print '</td>';
-
-    $parameters=array();
-    $reshook=$hookmanager->executeHooks('printFieldListOption',$parameters);    // Note that $action and $object may have been modified by hook
-    print $hookmanager->resPrint;
-
-    if (! empty($conf->global->PROJECT_USE_OPPORTUNITIES))
-    {
+	if (! empty($arrayfields['p.datee']['checked']))
+	{
+    	print '<td class="liste_titre center">';
+    	if (! empty($conf->global->MAIN_LIST_FILTER_ON_DAY)) print '<input class="flat" type="text" size="1" maxlength="2" name="day" value="'.$day.'">';
+    	print '<input class="flat" type="text" size="1" maxlength="2" name="month" value="'.$month.'">';
+    	$formother->select_year($year?$year:-1,'year',1, 20, 5);
+    	print '</td>';
+	}
+	if (! empty($arrayfields['p.public']['checked']))
+	{
+    	print '<td class="liste_titre">';
+    	$array=array(''=>'',0 => $langs->trans("PrivateProject"),1 => $langs->trans("SharedProject"));
+        print $form->selectarray('search_public',$array,$search_public);
+        print '</td>';
+	}
+	if (! empty($arrayfields['p.opp_amount']['checked']))
+	{
 		print '<td class="liste_titre nowrap">';
 	    print '</td>';
+	}
+	if (! empty($arrayfields['p.fk_opp_status']['checked']))
+	{
     	print '<td class="liste_titre nowrap center">';
 		print $formproject->selectOpportunityStatus('search_opp_status',$search_opp_status,1,1,1);
 	    print '</td>';
     }
-
-	print '<td class="liste_titre nowrap" align="right">';
-	print $form->selectarray('search_status', array('-1'=>'', '0'=>$langs->trans('Draft'),'1'=>$langs->trans('Opened'),'2'=>$langs->trans('Closed')),$search_status);
-    print '</td>';
-    print '<td>';
-    print '<input type="image" class="liste_titre" name="button_search" src="'.img_picto($langs->trans("Search"),'search.png','','',1).'" value="'.dol_escape_htmltag($langs->trans("Search")).'" title="'.dol_escape_htmltag($langs->trans("Search")).'">';
-    print '<input type="image" class="liste_titre" name="button_removefilter" src="'.img_picto($langs->trans("RemoveFilter"),'searchclear.png','','',1).'" value="'.dol_escape_htmltag($langs->trans("RemoveFilter")).'" title="'.dol_escape_htmltag($langs->trans("RemoveFilter")).'">';
-    print '</td>';
+    // Extra fields
+    if (is_array($extrafields->attribute_label) && count($extrafields->attribute_label))
+    {
+        foreach($extrafields->attribute_label as $key => $val)
+        {
+            if (! empty($arrayfields["ef.".$key]['checked'])) print '<td class="liste_titre"></td>';
+        }
+    }
+    // Fields from hook
+    $parameters=array('arrayfields'=>$arrayfields);
+    $reshook=$hookmanager->executeHooks('printFieldListOption',$parameters);    // Note that $action and $object may have been modified by hook
+    print $hookmanager->resPrint;
+    if (! empty($arrayfields['p.datec']['checked']))
+    {
+        // Date creation
+        print '<td class="liste_titre">';
+        print '</td>';
+    }
+    if (! empty($arrayfields['p.tms']['checked']))
+    {
+        // Date modification
+        print '<td class="liste_titre">';
+        print '</td>';
+    }
+    if (! empty($arrayfields['p.statut']['checked']))
+    {
+    	print '<td class="liste_titre nowrap" align="right">';
+    	print $form->selectarray('search_status', array('-1'=>'', '0'=>$langs->trans('Draft'),'1'=>$langs->trans('Opened'),'2'=>$langs->trans('Closed')),$search_status);
+        print '</td>';
+    }
+    // Action column
+	print '<td class="liste_titre" align="right">';
+	print '<input type="image" class="liste_titre" name="button_search" src="'.img_picto($langs->trans("Search"),'search.png','','',1).'" value="'.dol_escape_htmltag($langs->trans("Search")).'" title="'.dol_escape_htmltag($langs->trans("Search")).'">';
+	print '<input type="image" class="liste_titre" name="button_removefilter" src="'.img_picto($langs->trans("Search"),'searchclear.png','','',1).'" value="'.dol_escape_htmltag($langs->trans("RemoveFilter")).'" title="'.dol_escape_htmltag($langs->trans("RemoveFilter")).'">';
+	print '</td>';
 
     print '</tr>'."\n";
 
 
     while ($i < $num)
     {
-    	$objp = $db->fetch_object($resql);
+    	$obj = $db->fetch_object($resql);
 
-    	$projectstatic->id = $objp->projectid;
-    	$projectstatic->user_author_id = $objp->fk_user_creat;
-    	$projectstatic->public = $objp->public;
+    	$projectstatic->id = $obj->projectid;
+    	$projectstatic->user_author_id = $obj->fk_user_creat;
+    	$projectstatic->public = $obj->public;
 
     	$userAccess = $projectstatic->restrictedProjectArea($user);
 
@@ -433,104 +497,151 @@ if ($resql)
     		print "<tr ".$bc[$var].">";
 
     		// Project url
-    		print '<td class="nowrap">';
-    		$projectstatic->ref = $objp->ref;
-    		print $projectstatic->getNomUrl(1);
-    		print '</td>';
-
+        	if (! empty($arrayfields['p.ref']['checked']))
+        	{
+        		print '<td class="nowrap">';
+        		$projectstatic->ref = $obj->ref;
+        		print $projectstatic->getNomUrl(1);
+        		print '</td>';
+        	}
     		// Title
-    		print '<td>';
-    		print dol_trunc($objp->title,80);
-    		print '</td>';
-
+        	if (! empty($arrayfields['p.title']['checked']))
+        	{
+            	print '<td>';
+        		print dol_trunc($obj->title,80);
+        		print '</td>';
+        	}
     		// Company
-    		print '<td>';
-    		if ($objp->socid)
-    		{
-    			$socstatic->id=$objp->socid;
-    			$socstatic->name=$objp->name;
-    			print $socstatic->getNomUrl(1);
-    		}
-    		else
-    		{
-    			print '&nbsp;';
-    		}
-    		print '</td>';
-
-
+        	if (! empty($arrayfields['s.nom']['checked']))
+        	{
+            	print '<td>';
+        		if ($obj->socid)
+        		{
+        			$socstatic->id=$obj->socid;
+        			$socstatic->name=$obj->name;
+        			print $socstatic->getNomUrl(1);
+        		}
+        		else
+        		{
+        			print '&nbsp;';
+        		}
+        		print '</td>';
+        	}
     		// Sales Rapresentatives
-    		print '<td>';
-    		if($objp->socid)
-    		{
-    			$listsalesrepresentatives=$socstatic->getSalesRepresentatives($user);
-    			$nbofsalesrepresentative=count($listsalesrepresentatives);
-    			if ($nbofsalesrepresentative > 3)   // We print only number
-    			{
-    				print '<a href="'.DOL_URL_ROOT.'/societe/commerciaux.php?socid='.$socstatic->id.'">';
-    				print $nbofsalesrepresentative;
-    				print '</a>';
-    			}
-    			else if ($nbofsalesrepresentative > 0)
-    			{
-    				$userstatic=new User($db);
-    				$j=0;
-    				foreach($listsalesrepresentatives as $val)
-    				{
-    					$userstatic->id=$val['id'];
-    					$userstatic->lastname=$val['lastname'];
-    					$userstatic->firstname=$val['firstname'];
-    					$userstatic->email=$val['email'];
-    					print $userstatic->getNomUrl(1);
-    					$j++;
-    					if ($j < $nbofsalesrepresentative) print ', ';
-    				}
-    			}
-    			//else print $langs->trans("NoSalesRepresentativeAffected");
-    		}
-    		else
-    		{
-    			print '&nbsp';
-    		}
-    		print '</td>';
-
+        	if (! empty($arrayfields['commercial']['checked']))
+        	{
+            	print '<td>';
+        		if ($obj->socid)
+        		{
+        			$socstatic->id=$obj->socid;
+        			$socstatic->name=$obj->name;
+        		    $listsalesrepresentatives=$socstatic->getSalesRepresentatives($user);
+        			$nbofsalesrepresentative=count($listsalesrepresentatives);
+        			if ($nbofsalesrepresentative > 3)   // We print only number
+        			{
+        				print '<a href="'.DOL_URL_ROOT.'/societe/commerciaux.php?socid='.$socstatic->id.'">';
+        				print $nbofsalesrepresentative;
+        				print '</a>';
+        			}
+        			else if ($nbofsalesrepresentative > 0)
+        			{
+        				$userstatic=new User($db);
+        				$j=0;
+        				foreach($listsalesrepresentatives as $val)
+        				{
+        					$userstatic->id=$val['id'];
+        					$userstatic->lastname=$val['lastname'];
+        					$userstatic->firstname=$val['firstname'];
+        					$userstatic->email=$val['email'];
+        					print $userstatic->getNomUrl(1);
+        					$j++;
+        					if ($j < $nbofsalesrepresentative) print ', ';
+        				}
+        			}
+        			//else print $langs->trans("NoSalesRepresentativeAffected");
+        		}
+        		else
+        		{
+        			print '&nbsp';
+        		}
+        		print '</td>';
+        	}
     		// Date start
-			if (empty($conf->global->PROJECT_LIST_HIDE_STARTDATE))
-			{
+        	if (! empty($arrayfields['p.dateo']['checked']))
+        	{
 				print '<td class="center">';
-	    		print dol_print_date($db->jdate($objp->date_start),'day');
+	    		print dol_print_date($db->jdate($obj->date_start),'day');
 	    		print '</td>';
 			}
-
     		// Date end
-    		print '<td class="center">';
-    		print dol_print_date($db->jdate($objp->date_end),'day');
-    		print '</td>';
-
+        	if (! empty($arrayfields['p.datee']['checked']))
+        	{
+    			print '<td class="center">';
+        		print dol_print_date($db->jdate($obj->date_end),'day');
+        		print '</td>';
+        	}
     		// Visibility
-    		print '<td align="left">';
-    		if ($objp->public) print $langs->trans('SharedProject');
-    		else print $langs->trans('PrivateProject');
-    		print '</td>';
-
-        	$parameters=array('obj' => $objp);
-        	$reshook=$hookmanager->executeHooks('printFieldListValue',$parameters);    // Note that $action and $object may have been modified by hook
-		    print $hookmanager->resPrint;
-
-		    if (! empty($conf->global->PROJECT_USE_OPPORTUNITIES))
-    		{
+        	if (! empty($arrayfields['p.public']['checked']))
+        	{
+        		print '<td align="left">';
+        		if ($obj->public) print $langs->trans('SharedProject');
+        		else print $langs->trans('PrivateProject');
+        		print '</td>';
+        	}
+        	if (! empty($arrayfields['p.opp_amount']['checked']))
+        	{
     			print '<td align="right">';
-    			if ($objp->opp_status_code) print price($objp->opp_amount, 1, '', 1, - 1, - 1, $conf->currency);
+    			if ($obj->opp_status_code) print price($obj->opp_amount, 1, '', 1, - 1, - 1, $conf->currency);
     			print '</td>';
-
-    			print '<td align="middle">';
-    			if ($objp->opp_status_code) print $langs->trans("OppStatusShort".$objp->opp_status_code);
+        	}
+        	if (! empty($arrayfields['p.fk_opp_status']['checked']))
+        	{
+                print '<td align="middle">';
+    			if ($obj->opp_status_code) print $langs->trans("OppStatusShort".$obj->opp_status_code);
     			print '</td>';
     		}
-
+    		// Extra fields
+    		if (is_array($extrafields->attribute_label) && count($extrafields->attribute_label))
+    		{
+    		    foreach($extrafields->attribute_label as $key => $val)
+    		    {
+    		        if (! empty($arrayfields["ef.".$key]['checked']))
+    		        {
+    		            print '<td';
+    		            $align=$extrafields->getAlignFlag($key);
+    		            if ($align) print ' align="'.$align.'"';
+    		            print '>';
+    		            $tmpkey='options_'.$key;
+    		            print $extrafields->showOutputField($key, $obj->$tmpkey, '', 1);
+    		            print '</td>';
+    		        }
+    		    }
+    		}
+    		// Fields from hook
+    		$parameters=array('arrayfields'=>$arrayfields, 'obj'=>$obj);
+    		$reshook=$hookmanager->executeHooks('printFieldListValue',$parameters);    // Note that $action and $object may have been modified by hook
+    		print $hookmanager->resPrint;
+    		// Date creation
+    		if (! empty($arrayfields['p.datec']['checked']))
+    		{
+    		    print '<td align="center">';
+    		    print dol_print_date($db->jdate($obj->date_creation), 'dayhour');
+    		    print '</td>';
+    		}
+    		// Date modification
+    		if (! empty($arrayfields['p.tms']['checked']))
+    		{
+    		    print '<td align="center">';
+    		    print dol_print_date($db->jdate($obj->date_update), 'dayhour');
+    		    print '</td>';
+    		}
     		// Status
-    		$projectstatic->statut = $objp->fk_statut;
-    		print '<td align="right">'.$projectstatic->getLibStatut(5).'</td>';
-
+    		if (! empty($arrayfields['p.statut']['checked']))
+    		{
+        		$projectstatic->statut = $obj->fk_statut;
+        		print '<td align="right">'.$projectstatic->getLibStatut(5).'</td>';
+    		}
+    		// Action column
     		print '<td></td>';
 
     		print "</tr>\n";
diff --git a/htdocs/user/index.php b/htdocs/user/index.php
index c4e769d6ffd2612e0140000ac4e586dc316d8e13..43812be515cd43983610752b45811a000b65a019 100644
--- a/htdocs/user/index.php
+++ b/htdocs/user/index.php
@@ -266,10 +266,12 @@ if ($result)
         print $langs->trans("FilterOnInto", $sall) . join(', ',$fieldstosearchall);
     }
 	
+    $moreforfilter='';
+    
 	$varpage=empty($contextpage)?$_SERVER["PHP_SELF"]:$contextpage;
 	$selectedfields=$form->multiSelectArrayWithCheckbox('selectedfields', $arrayfields, $varpage);	// This also change content of $arrayfields
     
-	print '<table class="liste">';
+    print '<table class="liste '.($moreforfilter?"listwithfilterbefore":"").'">';
     print '<tr class="liste_titre">';
     if (! empty($arrayfields['u.login']['checked']))          print_liste_field_titre($langs->trans("Login"),$_SERVER['PHP_SELF'],"u.login",$param,"","",$sortfield,$sortorder);
     if (! empty($arrayfields['u.lastname']['checked']))       print_liste_field_titre($langs->trans("Lastname"),$_SERVER['PHP_SELF'],"u.lastname",$param,"","",$sortfield,$sortorder);