From 6938b05219cd4f158343d6b2718d9e5fda07be2f Mon Sep 17 00:00:00 2001
From: Laurent Destailleur <eldy@destailleur.fr>
Date: Fri, 28 Oct 2016 12:00:30 +0200
Subject: [PATCH] Mutualize code to show files generated for mass actions

---
 dev/skeletons/skeleton_list.php           |  6 +---
 htdocs/comm/propal/list.php               |  6 +---
 htdocs/commande/list.php                  |  4 ---
 htdocs/compta/facture/list.php            |  4 ---
 htdocs/core/class/html.formfile.class.php | 36 +++++++++++++++++++----
 htdocs/expensereport/list.php             |  4 ---
 htdocs/langs/en_US/main.lang              |  1 +
 htdocs/product/stock/productlot_list.php  |  4 ---
 8 files changed, 34 insertions(+), 31 deletions(-)

diff --git a/dev/skeletons/skeleton_list.php b/dev/skeletons/skeleton_list.php
index 7715b17b4d8..27515db3c68 100644
--- a/dev/skeletons/skeleton_list.php
+++ b/dev/skeletons/skeleton_list.php
@@ -530,11 +530,7 @@ if ($resql)
 	    $genallowed=$user->rights->facture->lire;
 	    $delallowed=$user->rights->facture->lire;
 	
-	    print '<br><a name="show_files"></a>';
-	    $paramwithoutshowfiles=preg_replace('/show_files=1&?/','',$param);
-	    $title=$langs->trans("MassFilesArea").' <a href="'.$_SERVER["PHP_SELF"].'?'.$paramwithoutshowfiles.'">('.$langs->trans("Hide").')</a>';
-	
-	    print $formfile->showdocuments('massfilesarea_orders','',$filedir,$urlsource,0,$delallowed,'',1,1,0,48,1,$param,$title,'');
+	    print $formfile->showdocuments('massfilesarea_mymodule','',$filedir,$urlsource,0,$delallowed,'',1,1,0,48,1,$param,$title,'');
 	}
 	else
 	{
diff --git a/htdocs/comm/propal/list.php b/htdocs/comm/propal/list.php
index 88f8f8fa3df..05b27663b4b 100644
--- a/htdocs/comm/propal/list.php
+++ b/htdocs/comm/propal/list.php
@@ -1016,11 +1016,7 @@ if ($resql)
 	    $genallowed=$user->rights->propal->lire;
 	    $delallowed=$user->rights->propal->lire;
 	
-	    print '<br><a name="show_files"></a>';
-	    $paramwithoutshowfiles=preg_replace('/show_files=1&?/','',$param);
-	    $title=$langs->trans("MassFilesArea").' <a href="'.$_SERVER["PHP_SELF"].'?'.$paramwithoutshowfiles.'">('.$langs->trans("Hide").')</a>';
-	
-	    print $formfile->showdocuments('massfilesarea_proposals','',$filedir,$urlsource,0,$delallowed,'',1,1,0,48,1,$param,$title,'');
+	    print $formfile->showdocuments('massfilesarea_proposals','',$filedir,$urlsource,0,$delallowed,'',1,1,0,48,1,$param,'','');
 	}
 	else
 	{
diff --git a/htdocs/commande/list.php b/htdocs/commande/list.php
index d9438d9a93f..ab25895b561 100644
--- a/htdocs/commande/list.php
+++ b/htdocs/commande/list.php
@@ -1438,10 +1438,6 @@ if ($resql)
 	    $genallowed=$user->rights->commande->lire;
 	    $delallowed=$user->rights->commande->lire;
 	
-	    print '<br><a name="show_files"></a>';
-	    $paramwithoutshowfiles=preg_replace('/show_files=1&?/','',$param);
-	    $title=$langs->trans("MassFilesArea").' <a href="'.$_SERVER["PHP_SELF"].'?'.$paramwithoutshowfiles.'">('.$langs->trans("Hide").')</a>';
-	
 	    print $formfile->showdocuments('massfilesarea_orders','',$filedir,$urlsource,0,$delallowed,'',1,1,0,48,1,$param,$title,'');
 	}
 	else
diff --git a/htdocs/compta/facture/list.php b/htdocs/compta/facture/list.php
index 36873d15963..48ed568e3f9 100644
--- a/htdocs/compta/facture/list.php
+++ b/htdocs/compta/facture/list.php
@@ -1155,10 +1155,6 @@ if ($resql)
         $genallowed=$user->rights->facture->lire;
         $delallowed=$user->rights->facture->lire;
     
-        print '<br><a name="show_files"></a>';
-        $paramwithoutshowfiles=preg_replace('/show_files=1&?/','',$param);
-        $title=$langs->trans("MassFilesArea").' <a href="'.$_SERVER["PHP_SELF"].'?'.$paramwithoutshowfiles.'">('.$langs->trans("Hide").')</a>';
-        
         print $formfile->showdocuments('massfilesarea_invoices','',$filedir,$urlsource,0,$delallowed,'',1,1,0,48,1,$param,$title,'');
     }
     else
diff --git a/htdocs/core/class/html.formfile.class.php b/htdocs/core/class/html.formfile.class.php
index 93695201062..6bb6334e085 100644
--- a/htdocs/core/class/html.formfile.class.php
+++ b/htdocs/core/class/html.formfile.class.php
@@ -305,12 +305,37 @@ class FormFile
         $showempty=0;
         $i=0;
 
-        $titletoshow=$langs->trans("Documents");
-        if (! empty($title)) $titletoshow=$title;
-
         $out.= "\n".'<!-- Start show_document -->'."\n";
         //print 'filedir='.$filedir;
 
+        if (preg_match('/massfilesarea_/', $modulepart))
+        {
+	        $out.='<br><a name="show_files"></a>';
+			$title=$langs->trans("MassFilesArea").' <a href="" id="togglemassfilesarea" ref="shown">('.$langs->trans("Hide").')</a>';
+			$title.='<script type="text/javascript" language="javascript">
+				jQuery(document).ready(function() {
+					jQuery(\'#togglemassfilesarea\').click(function() {
+						if (jQuery(\'#togglemassfilesarea\').attr(\'ref\') == "shown")
+						{
+							jQuery(\'#'.$modulepart.'_table\').hide();
+							jQuery(\'#togglemassfilesarea\').attr("ref", "hidden");
+							jQuery(\'#togglemassfilesarea\').text("('.dol_escape_js($langs->trans("Show")).')");
+						}
+						else
+						{
+							jQuery(\'#'.$modulepart.'_table\').show();
+							jQuery(\'#togglemassfilesarea\').attr("ref","shown");
+							jQuery(\'#togglemassfilesarea\').text("('.dol_escape_js($langs->trans("Hide")).')");
+						}
+						return false;
+					});		
+				});
+				</script>';
+        }        
+        
+        $titletoshow=$langs->trans("Documents");
+        if (! empty($title)) $titletoshow=$title;
+
         // Show table
         if ($genallowed)
         {
@@ -518,6 +543,7 @@ class FormFile
                 }
             }
 
+            // Set headershown to avoit to have table opened a second time later
             $headershown=1;
 
             $buttonlabeltoshow=$buttonlabel;
@@ -526,7 +552,7 @@ class FormFile
             if (empty($noform)) $out.= '<form action="'.$urlsource.(empty($conf->global->MAIN_JUMP_TAG)?'':'#builddoc').'" name="'.$forname.'" id="'.$forname.'_form" method="post">';
             $out.= '<input type="hidden" name="action" value="builddoc">';
             $out.= '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
-
+            
             $out.= load_fiche_titre($titletoshow, '', '');
             $out.= '<table class="liste formdoc noborder" summary="listofdocumentstable" width="100%">';
 
@@ -622,7 +648,7 @@ class FormFile
             {
                 $headershown=1;
                 $out.= '<div class="titre">'.$titletoshow.'</div>'."\n";
-                $out.= '<table class="border" summary="listofdocumentstable" width="100%">'."\n";
+                $out.= '<table class="border" summary="listofdocumentstable" id="'.$modulepart.'_table" width="100%">'."\n";
             }
 
             // Loop on each file found
diff --git a/htdocs/expensereport/list.php b/htdocs/expensereport/list.php
index 722fb05767d..e6493fe36db 100644
--- a/htdocs/expensereport/list.php
+++ b/htdocs/expensereport/list.php
@@ -677,10 +677,6 @@ if ($resql)
 	    $genallowed=$user->rights->expensereport->lire;
 	    $delallowed=$user->rights->expensereport->lire;
 	
-	    print '<br><a name="show_files"></a>';
-	    $paramwithoutshowfiles=preg_replace('/show_files=1&?/','',$param);
-	    $title=$langs->trans("MassFilesArea").' <a href="'.$_SERVER["PHP_SELF"].'?'.$paramwithoutshowfiles.'">('.$langs->trans("Hide").')</a>';
-	
 	    print $formfile->showdocuments('massfilesarea_orders','',$filedir,$urlsource,0,$delallowed,'',1,1,0,48,1,$param,$title,'');
 	}
 	else
diff --git a/htdocs/langs/en_US/main.lang b/htdocs/langs/en_US/main.lang
index a3851b89339..01510e065f6 100644
--- a/htdocs/langs/en_US/main.lang
+++ b/htdocs/langs/en_US/main.lang
@@ -162,6 +162,7 @@ Go=Go
 Run=Run
 CopyOf=Copy of
 Show=Show
+Hide=Hide
 ShowCardHere=Show card
 Search=Search
 SearchOf=Search
diff --git a/htdocs/product/stock/productlot_list.php b/htdocs/product/stock/productlot_list.php
index ecd14237787..ef8556aeb9c 100644
--- a/htdocs/product/stock/productlot_list.php
+++ b/htdocs/product/stock/productlot_list.php
@@ -601,10 +601,6 @@ if ($resql)
 	    $genallowed=$user->rights->facture->lire;
 	    $delallowed=$user->rights->facture->lire;
 	
-	    print '<br><a name="show_files"></a>';
-	    $paramwithoutshowfiles=preg_replace('/show_files=1&?/','',$param);
-	    $title=$langs->trans("MassFilesArea").' <a href="'.$_SERVER["PHP_SELF"].'?'.$paramwithoutshowfiles.'">('.$langs->trans("Hide").')</a>';
-	
 	    print $formfile->showdocuments('massfilesarea_orders','',$filedir,$urlsource,0,$delallowed,'',1,1,0,48,1,$param,$title,'');
 	}
 	else
-- 
GitLab