From 02dbe1636654546b93d06dd0023eebdcf9ce52ca Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sat, 6 Jun 2015 15:57:59 +0200 Subject: [PATCH] Mutualize code to show block to link an element to another one. --- dev/skeletons/skeleton_page.php | 3 +- htdocs/comm/askpricesupplier/card.php | 8 +- htdocs/comm/propal.php | 9 +- htdocs/commande/card.php | 9 +- htdocs/compta/facture.php | 71 +----------- htdocs/contrat/card.php | 11 +- htdocs/core/class/html.form.class.php | 153 ++++++++++++++++++++++++++ htdocs/expedition/card.php | 10 +- htdocs/fichinter/card.php | 14 +-- htdocs/fourn/commande/card.php | 11 +- htdocs/fourn/facture/card.php | 76 +------------ htdocs/livraison/card.php | 8 +- 12 files changed, 211 insertions(+), 172 deletions(-) diff --git a/dev/skeletons/skeleton_page.php b/dev/skeletons/skeleton_page.php index 482208e8ab1..9e6d76ee6d8 100644 --- a/dev/skeletons/skeleton_page.php +++ b/dev/skeletons/skeleton_page.php @@ -352,8 +352,9 @@ if ($id && (empty($action) || $action == 'view')) // Example 2 : Adding links to objects - // The class must extends CommonObject class to have this method available //$somethingshown=$form->showLinkedObjectBlock($object); + //$linktoelem = $form->showLinkToObjectBlock($object); + //if ($linktoelem) print '
'.$linktoelem; } diff --git a/htdocs/comm/askpricesupplier/card.php b/htdocs/comm/askpricesupplier/card.php index 939d874a0f2..72654ac3da4 100644 --- a/htdocs/comm/askpricesupplier/card.php +++ b/htdocs/comm/askpricesupplier/card.php @@ -1709,11 +1709,13 @@ if ($action == 'create') $somethingshown = $formfile->show_documents('askpricesupplier', $filename, $filedir, $urlsource, $genallowed, $delallowed, $object->modelpdf, 1, 0, 0, 28, 0, '', 0, '', $soc->default_lang); - /* - * Linked object block - */ + // Linked object block $somethingshown = $form->showLinkedObjectBlock($object); + // Show links to link elements + //$linktoelem = $form->showLinkToObjectBlock($object); + //if ($linktoelem) print '
'.$linktoelem; + print '
'; // List of actions on element diff --git a/htdocs/comm/propal.php b/htdocs/comm/propal.php index ccdcd850493..f686109d015 100644 --- a/htdocs/comm/propal.php +++ b/htdocs/comm/propal.php @@ -2307,11 +2307,14 @@ if ($action == 'create') $somethingshown = $formfile->show_documents('propal', $filename, $filedir, $urlsource, $genallowed, $delallowed, $object->modelpdf, 1, 0, 0, 28, 0, '', 0, '', $soc->default_lang); - /* - * Linked object block - */ + // Linked object block $somethingshown = $form->showLinkedObjectBlock($object); + // Show links to link elements + $linktoelem = $form->showLinkToObjectBlock($object); + if ($linktoelem) print '
'.$linktoelem; + + print '
'; // print ''; diff --git a/htdocs/commande/card.php b/htdocs/commande/card.php index 04ea05d3f5d..84718e7dc89 100644 --- a/htdocs/commande/card.php +++ b/htdocs/commande/card.php @@ -2305,11 +2305,14 @@ if ($action == 'create' && $user->rights->commande->creer) $delallowed = $user->rights->commande->supprimer; $somethingshown = $formfile->show_documents('commande', $comref, $filedir, $urlsource, $genallowed, $delallowed, $object->modelpdf, 1, 0, 0, 28, 0, '', '', '', $soc->default_lang); - /* - * Linked object block - */ + // Linked object block $somethingshown = $form->showLinkedObjectBlock($object); + // Show links to link elements + //$linktoelem = $form->showLinkToObjectBlock($object); + //if ($linktoelem) print '
'.$linktoelem; + + print '
'; // print ''; diff --git a/htdocs/compta/facture.php b/htdocs/compta/facture.php index a73a1de3607..041bb42633f 100644 --- a/htdocs/compta/facture.php +++ b/htdocs/compta/facture.php @@ -3778,75 +3778,8 @@ if ($action == 'create') // Linked object block $somethingshown = $form->showLinkedObjectBlock($object); - $linktoelem=''; - - if (! empty($conf->commande->enabled)) - { - $linktoelem.=($linktoelem?'   ':'').'' . $langs->trans('LinkedOrder') . ''; - - print ' - - '; - - print ''; - } - - // Show link to elements + // Show links to link elements + $linktoelem = $form->showLinkToObjectBlock($object,array('order')); if ($linktoelem) print '
'.$linktoelem; // Link for paypal payment diff --git a/htdocs/contrat/card.php b/htdocs/contrat/card.php index 3df24e4e667..6bf7dcaeacc 100644 --- a/htdocs/contrat/card.php +++ b/htdocs/contrat/card.php @@ -1871,10 +1871,13 @@ else $somethingshown = $formfile->show_documents('contract', $filename, $filedir, $urlsource, $genallowed, $delallowed, $object->modelpdf, 1, 0, 0, 28, 0, '', 0, '', $soc->default_lang); - /* - * Linked object block - */ - $somethingshown=$form->showLinkedObjectBlock($object); + // Linked object block + $somethingshown = $form->showLinkedObjectBlock($object); + + // Show links to link elements + $linktoelem = $form->showLinkToObjectBlock($object); + if ($linktoelem) print '
'.$linktoelem; + print '
'; diff --git a/htdocs/core/class/html.form.class.php b/htdocs/core/class/html.form.class.php index be0d2656ec2..cef6d9a0ae4 100644 --- a/htdocs/core/class/html.form.class.php +++ b/htdocs/core/class/html.form.class.php @@ -4712,6 +4712,159 @@ class Form } } + /** + * Show block with links to link to other objects. + * + * @param CommonObject $object Object we want to show links to + * @param Societe $thirdparty Object thirdparty + * @param array $restrictlinksto Restrict links to some elements, for exemple array('order') or array('supplier_order') + * @return int <0 if KO, >0 if OK + */ + function showLinkToObjectBlock($object, $restrictlinksto=array()) + { + global $conf, $langs, $hookmanager; + global $bc; + + $linktoelem=''; + + if (! is_object($object->thirdparty)) $object->fetch_thirdparty(); + + + if (((! is_array($restrictlinksto)) || in_array('order',$restrictlinksto)) + && ! empty($conf->commande->enabled)) + { + $linktoelem.=($linktoelem?'   ':'').'' . $langs->trans('LinkedOrder') . ''; + + print ' + + '; + + print '
global->MAIN_OPTIMIZEFORTEXTBROWSER)?' style="display:none"':'').'>'; + + $sql = "SELECT s.rowid as socid, s.nom as name, s.client, c.rowid, c.ref, c.ref_client, c.total_ht"; + $sql .= " FROM " . MAIN_DB_PREFIX . "societe as s"; + $sql .= ", " . MAIN_DB_PREFIX . "commande as c"; + $sql .= ' WHERE c.fk_soc = s.rowid AND c.fk_soc = ' . $object->thirdparty->id . ''; + + $resqlorderlist = $this->db->query($sql); + if ($resqlorderlist) + { + $num = $this->db->num_rows($resqlorderlist); + $i = 0; + + print '
'; + print ''; + print ''; + print ''; + print ''; + print ''; + print ''; + print ''; + print ''; + while ($i < $num) + { + $objp = $this->db->fetch_object($resqlorderlist); + + $var = ! $var; + print ''; + print ''; + print ''; + print ''; + print ''; + print ''; + print ''; + + $i ++; + } + print '
' . $langs->trans("Ref") . '' . $langs->trans("RefCustomer") . '' . $langs->trans("AmountHTShort") . '' . $langs->trans("Company") . '
'; + print ''; + print '' . $objp->ref . '' . $objp->ref_client . '' . price($objp->total_ht) . '' . $objp->name . '
'; + print '
     
'; + print '
'; + $this->db->free($resqlorderlist); + } else { + dol_print_error($this->db); + } + + print '
'; + } + + if (((! is_array($restrictlinksto)) || in_array('supplier_order',$restrictlinksto)) + && ! empty($conf->fournisseur->enabled)) + { + $linktoelem.=($linktoelem?'   ':'').'' . $langs->trans('LinkedOrder') . ''; + + print ' + + '; + + print '
global->MAIN_OPTIMIZEFORTEXTBROWSER)?' style="display:none"':'').'>'; + + $sql = "SELECT s.rowid as socid, s.nom as name, s.client, c.rowid, c.ref, c.ref_supplier, c.total_ht"; + $sql .= " FROM " . MAIN_DB_PREFIX . "societe as s"; + $sql .= ", " . MAIN_DB_PREFIX . "commande_fournisseur as c"; + $sql .= ' WHERE c.fk_soc = s.rowid AND c.fk_soc = ' . $object->thirdparty->id; + + $resqlorderlist = $this->db->query($sql); + if ($resqlorderlist) + { + $num = $this->db->num_rows($resqlorderlist); + $i = 0; + + print '
'; + print ''; + print ''; + print ''; + print ''; + print ''; + print ''; + print ''; + print ''; + while ($i < $num) { + $objp = $this->db->fetch_object($resqlorderlist); + if ($objp->socid == $societe->id) { + $var = ! $var; + print ''; + print ''; + print ''; + print ''; + print ''; + print ''; + print ''; + } + + $i ++; + } + print '
' . $langs->trans("Ref") . '' . $langs->trans("RefSupplier") . '' . $langs->trans("AmountHTShort") . '' . $langs->trans("Company") . '
'; + print ''; + print '' . $objp->ref . '' . $objp->ref_supplier . '' . price($objp->total_ht) . '' . $objp->name . '
'; + print '
 
'; + print '
'; + $this->db->free($resqlorderlist); + } else { + dol_print_error($this->db); + } + + print '
'; + } + + + return $linktoelem; + } /** * Return an html string with a select combo box to choose yes or no diff --git a/htdocs/expedition/card.php b/htdocs/expedition/card.php index 85380907bbf..344e17166ad 100644 --- a/htdocs/expedition/card.php +++ b/htdocs/expedition/card.php @@ -1502,12 +1502,12 @@ else if ($id || $ref) $somethingshown=$formfile->show_documents('expedition',$objectref,$filedir,$urlsource,$genallowed,$delallowed,$object->modelpdf,1,0,0,28,0,'','','',$soc->default_lang); - /* - * Linked object block - */ - $somethingshown=$form->showLinkedObjectBlock($object); + // Linked object block + $somethingshown = $form->showLinkedObjectBlock($object); - if ($genallowed && ! $somethingshown) $somethingshown=1; + // Show links to link elements + //$linktoelem = $form->showLinkToObjectBlock($object); + //if ($linktoelem) print '
'.$linktoelem; print ''; diff --git a/htdocs/fichinter/card.php b/htdocs/fichinter/card.php index ad224ab9fe2..9b8e7d9a6a8 100644 --- a/htdocs/fichinter/card.php +++ b/htdocs/fichinter/card.php @@ -1701,7 +1701,6 @@ else if ($id > 0 || ! empty($ref)) if ($action != 'presend') { print '
'; - //print '
'; /* * Built documents @@ -1719,12 +1718,14 @@ else if ($id > 0 || ! empty($ref)) //print "
\n"; $somethingshown=$formfile->show_documents('ficheinter',$filename,$filedir,$urlsource,$genallowed,$delallowed,$object->modelpdf,1,0,0,28,0,'','','',$soc->default_lang); - /* - * Linked object block - */ - $somethingshown=$form->showLinkedObjectBlock($object); + // Linked object block + $somethingshown = $form->showLinkedObjectBlock($object); + + // Show links to link elements + //$linktoelem = $form->showLinkToObjectBlock($object); + //if ($linktoelem) print '
'.$linktoelem; + - //print '
'; print '
'; // List of actions on element @@ -1733,7 +1734,6 @@ else if ($id > 0 || ! empty($ref)) $somethingshown=$formactions->showactions($object,'fichinter',$socid); print '
'; - //print "
\n"; } diff --git a/htdocs/fourn/commande/card.php b/htdocs/fourn/commande/card.php index 95442273495..b56bba0c4a5 100644 --- a/htdocs/fourn/commande/card.php +++ b/htdocs/fourn/commande/card.php @@ -2763,10 +2763,13 @@ elseif (! empty($object->id)) print $formfile->showdocuments('commande_fournisseur',$comfournref,$filedir,$urlsource,$genallowed,$delallowed,$object->modelpdf,1,0,0,0,0,'','','',$object->thirdparty->default_lang); $somethingshown=$formfile->numoffiles; - /* - * Linked object block - */ - $somethingshown=$form->showLinkedObjectBlock($object); + // Linked object block + $somethingshown = $form->showLinkedObjectBlock($object); + + // Show links to link elements + //$linktoelem = $form->showLinkToObjectBlock($object); + //if ($linktoelem) print '
'.$linktoelem; + print '
'; diff --git a/htdocs/fourn/facture/card.php b/htdocs/fourn/facture/card.php index e365f8a7070..2491c6eaff6 100644 --- a/htdocs/fourn/facture/card.php +++ b/htdocs/fourn/facture/card.php @@ -2412,80 +2412,14 @@ else print $formfile->showdocuments('facture_fournisseur',$subdir,$filedir,$urlsource,$genallowed,$delallowed,$modelpdf,1,0,0,40,0,'','','',$societe->default_lang); $somethingshown=$formfile->numoffiles; - /* - * Linked object block - */ - $somethingshown=$form->showLinkedObjectBlock($object); + // Linked object block + $somethingshown = $form->showLinkedObjectBlock($object); - $linktoelem=''; - - if (empty($somethingshown) && ! empty($conf->fournisseur->enabled)) - { - $linktoelem.=($linktoelem?'   ':'').'' . $langs->trans('LinkedOrder') . ''; - - print ' - - '; - - print ''; - } - - // Show link to elements + // Show links to link elements + $linktoelem = $form->showLinkToObjectBlock($object,array('supplier_order')); if ($linktoelem) print '
'.$linktoelem; + print '
'; //print ''; //print '
'; diff --git a/htdocs/livraison/card.php b/htdocs/livraison/card.php index 5e477d1926d..7ea9920d65b 100644 --- a/htdocs/livraison/card.php +++ b/htdocs/livraison/card.php @@ -788,10 +788,14 @@ else $shipment = new Expedition($db); $shipment->fetch($object->origin_id); - $somethingshown=$form->showLinkedObjectBlock($shipment); + // Linked object block + $somethingshown = $form->showLinkedObjectBlock($shipment); + + // Show links to link elements + //$linktoelem = $form->showLinkToObjectBlock($shipment); + //if ($linktoelem) print '
'.$linktoelem; } - if ($genallowed && ! $somethingshown) $somethingshown=1; print '';