From 8df56511be0b9b6485224d338be3a447fb8dc4ee Mon Sep 17 00:00:00 2001
From: Laurent Destailleur <eldy@destailleur.fr>
Date: Tue, 16 Jun 2015 19:36:44 +0200
Subject: [PATCH] NEW Enhance prototype, project list and proposal list with
new hook to have an external module able to add more fields.
---
dev/skeletons/skeleton_page.php | 224 +++++++++++++++++++-------------
htdocs/comm/list.php | 13 +-
htdocs/projet/list.php | 41 ++++--
htdocs/societe/soc.php | 4 -
4 files changed, 172 insertions(+), 110 deletions(-)
diff --git a/dev/skeletons/skeleton_page.php b/dev/skeletons/skeleton_page.php
index 9e6d76ee6d8..334980b1470 100644
--- a/dev/skeletons/skeleton_page.php
+++ b/dev/skeletons/skeleton_page.php
@@ -1,5 +1,5 @@
<?php
-/* Copyright (C) 2007-2010 Laurent Destailleur <eldy@users.sourceforge.net>
+/* Copyright (C) 2007-2015 Laurent Destailleur <eldy@users.sourceforge.net>
* Copyright (C) ---Put here your own copyright and developer email---
*
* This program is free software; you can redistribute it and/or modify
@@ -72,6 +72,9 @@ if (($id > 0 || ! empty($ref)) && $action != 'add')
if ($result < 0) dol_print_error($db);
}
+// Initialize technical object to manage hooks of modules. Note that conf->hooks_modules contains array array
+$hookmanager->initHooks(array('skeleton'));
+
/*******************************************************************
@@ -80,111 +83,117 @@ if (($id > 0 || ! empty($ref)) && $action != 'add')
* Put here all code to do according to value of "action" parameter
********************************************************************/
-// Action to add record
-if ($action == 'add')
+$parameters=array();
+$reshook=$hookmanager->executeHooks('doActions',$parameters); // Note that $action and $object may have been modified by some hooks
+if ($reshook < 0) setEventMessages($hookmanager->error, $hookmanager->errors, 'errors');
+
+if (empty($reshook))
{
- if (GETPOST('cancel'))
+ // Action to add record
+ if ($action == 'add')
{
- $urltogo=$backtopage?$backtopage:dol_buildpath('/buildingmanagement/list.php',1);
- header("Location: ".$urltogo);
- exit;
- }
+ if (GETPOST('cancel'))
+ {
+ $urltogo=$backtopage?$backtopage:dol_buildpath('/buildingmanagement/list.php',1);
+ header("Location: ".$urltogo);
+ exit;
+ }
- $error=0;
+ $error=0;
- /* object_prop_getpost_prop */
- $object->prop1=GETPOST("field1");
- $object->prop2=GETPOST("field2");
+ /* object_prop_getpost_prop */
+ $object->prop1=GETPOST("field1");
+ $object->prop2=GETPOST("field2");
- if (empty($object->ref))
- {
- $error++;
- setEventMessage($langs->trans("ErrorFieldRequired",$langs->transnoentitiesnoconv("Ref")),'errors');
- }
+ if (empty($object->ref))
+ {
+ $error++;
+ setEventMessage($langs->trans("ErrorFieldRequired",$langs->transnoentitiesnoconv("Ref")),'errors');
+ }
- if (! $error)
- {
- $result=$object->create($user);
- if ($result > 0)
+ if (! $error)
{
- // Creation OK
- $urltogo=$backtopage?$backtopage:dol_buildpath('/mymodule/list.php',1);
- header("Location: ".$urltogo);
- exit;
+ $result=$object->create($user);
+ if ($result > 0)
+ {
+ // Creation OK
+ $urltogo=$backtopage?$backtopage:dol_buildpath('/mymodule/list.php',1);
+ header("Location: ".$urltogo);
+ exit;
+ }
+ {
+ // Creation KO
+ if (! empty($object->errors)) setEventMessages(null, $object->errors, 'errors');
+ else setEventMessages($object->error, null, 'errors');
+ $action='create';
+ }
}
+ else
{
- // Creation KO
- if (! empty($object->errors)) setEventMessages(null, $object->errors, 'errors');
- else setEventMessages($object->error, null, 'errors');
$action='create';
}
}
- else
- {
- $action='create';
- }
-}
-// Cancel
-if ($action == 'update' && GETPOST('cancel')) $action='view';
+ // Cancel
+ if ($action == 'update' && GETPOST('cancel')) $action='view';
-// Action to update record
-if ($action == 'update' && ! GETPOST('cancel'))
-{
- $error=0;
+ // Action to update record
+ if ($action == 'update' && ! GETPOST('cancel'))
+ {
+ $error=0;
- $object->prop1=GETPOST("field1");
- $object->prop2=GETPOST("field2");
+ $object->prop1=GETPOST("field1");
+ $object->prop2=GETPOST("field2");
- if (empty($object->ref))
- {
- $error++;
- setEventMessages($langs->trans("ErrorFieldRequired",$langs->transnoentitiesnoconv("Ref")),null,'errors');
- }
+ if (empty($object->ref))
+ {
+ $error++;
+ setEventMessages($langs->trans("ErrorFieldRequired",$langs->transnoentitiesnoconv("Ref")),null,'errors');
+ }
- if (! $error)
- {
- $result=$object->update($user);
- if ($result > 0)
+ if (! $error)
{
- $action='view';
+ $result=$object->update($user);
+ if ($result > 0)
+ {
+ $action='view';
+ }
+ else
+ {
+ // Creation KO
+ if (! empty($object->errors)) setEventMessages(null, $object->errors, 'errors');
+ else setEventMessages($object->error, null, 'errors');
+ $action='edit';
+ }
}
else
{
- // Creation KO
- if (! empty($object->errors)) setEventMessages(null, $object->errors, 'errors');
- else setEventMessages($object->error, null, 'errors');
$action='edit';
}
}
- else
- {
- $action='edit';
- }
-}
-// Action to delete
-if ($action == 'confirm_delete')
-{
- $result=$object->delete($user);
- if ($result > 0)
- {
- // Delete OK
- setEventMessages($langs->trans("RecordDeleted"), null, 'mesgs');
- header("Location: ".dol_buildpath('/buildingmanagement/list.php',1));
- exit;
- }
- else
+ // Action to delete
+ if ($action == 'confirm_delete')
{
- if (! empty($object->errors)) setEventMessages(null,$object->errors,'errors');
- else setEventMessages($object->error,null,'errors');
+ $result=$object->delete($user);
+ if ($result > 0)
+ {
+ // Delete OK
+ setEventMessages($langs->trans("RecordDeleted"), null, 'mesgs');
+ header("Location: ".dol_buildpath('/buildingmanagement/list.php',1));
+ exit;
+ }
+ else
+ {
+ if (! empty($object->errors)) setEventMessages(null,$object->errors,'errors');
+ else setEventMessages($object->error,null,'errors');
+ }
}
}
-
/***************************************************
* VIEW
*
@@ -225,11 +234,39 @@ if ($action == 'list' || empty($id))
$sql.= " WHERE field3 = 'xxx'";
$sql.= " ORDER BY field1 ASC";
- print '<table class="noborder">'."\n";
+ print '<form method="GET" id="searchFormList" action="'.$_SERVER["PHP_SELF"].'">';
+
+ if (! empty($moreforfilter))
+ {
+ print '<div class="liste_titre">';
+ print $moreforfilter;
+ $parameters=array();
+ $formconfirm=$hookmanager->executeHooks('printFieldPreListTitle',$parameters); // Note that $action and $object may have been modified by hook
+ print '</div>';
+ }
+
+ print '<table class="noborder">'."\n";
+
+ // Fields title
print '<tr class="liste_titre">';
print_liste_field_titre($langs->trans('field1'),$_SERVER['PHP_SELF'],'t.field1','',$param,'',$sortfield,$sortorder);
print_liste_field_titre($langs->trans('field2'),$_SERVER['PHP_SELF'],'t.field2','',$param,'',$sortfield,$sortorder);
- print '</tr>';
+ $parameters=array();
+ $formconfirm=$hookmanager->executeHooks('printFieldListTitle',$parameters); // Note that $action and $object may have been modified by hook
+ print '</tr>'."\n";
+
+ // Fields title search
+ print '<tr class="liste_titre">';
+ print '<td class="liste_titre">';
+ print '<input type="text" class="flat" name="search_field1" value="'.$search_field1.'" size="10">';
+ print '</td>';
+ print '<td class="liste_titre">';
+ print '<input type="text" class="flat" name="search_field2" value="'.$search_field2.'" size="10">';
+ print '</td>';
+ $parameters=array();
+ $formconfirm=$hookmanager->executeHooks('printFieldListOption',$parameters); // Note that $action and $object may have been modified by hook
+ print '</tr>'."\n";
+
dol_syslog($script_file, LOG_DEBUG);
$resql=$db->query($sql);
@@ -243,21 +280,32 @@ if ($action == 'list' || empty($id))
if ($obj)
{
// You can use here results
- print '<tr><td>';
+ print '<tr>';
+ print '<td>';
print $obj->field1;
+ print '</td><td>';
print $obj->field2;
- print '</td></tr>';
+ print '</td>';
+ $parameters=array('obj' => $obj);
+ $formconfirm=$hookmanager->executeHooks('printFieldListValue',$parameters); // Note that $action and $object may have been modified by hook
+ print '</tr>';
}
$i++;
}
}
else
- {
+ {
$error++;
dol_print_error($db);
}
- print '</table>'."\n";
+ $db->free($resql);
+
+ $parameters=array('sql' => $sql);
+ $formconfirm=$hookmanager->executeHooks('printFieldListFooter',$parameters); // Note that $action and $object may have been modified by hook
+
+ print "</table>\n";
+ print "</form>\n";
}
@@ -267,12 +315,12 @@ if ($action == 'create')
{
print_fiche_titre($langs->trans("NewResidence"));
- dol_fiche_head();
-
print '<form method="POST" action="'.$_SERVER["PHP_SELF"].'">';
print '<input type="hidden" name="action" value="add">';
print '<input type="hidden" name="backtopage" value="'.$backtopage.'">';
+ dol_fiche_head();
+
print '<table class="border centpercent">'."\n";
print '<tr><td class="fieldrequired">'.$langs->trans("Label").'</td><td>';
print '<input class="flat" type="text" size="36" name="label" value="'.$label.'">';
@@ -280,13 +328,11 @@ if ($action == 'create')
print '</table>'."\n";
- print '<br>';
+ dol_fiche_end();
print '<div class="center"><input type="submit" class="button" name="add" value="'.$langs->trans("Create").'"> <input type="submit" class="button" name="cancel" value="'.$langs->trans("Cancel").'"></div>';
print '</form>';
-
- dol_fiche_end();
}
@@ -294,21 +340,19 @@ if ($action == 'create')
// Part to edit record
if (($id || $ref) && $action == 'edit')
{
+ print '<form method="POST" action="'.$_SERVER["PHP_SELF"].'">';
+
dol_fiche_head();
- print '<form method="POST" action="'.$_SERVER["PHP_SELF"].'">';
print '<input type="hidden" name="action" value="add">';
print '<input type="hidden" name="backtopage" value="'.$backtopage.'">';
print '<input type="hidden" name="id" value="'.$object->id.'">';
-
- print '<br>';
+ dol_fiche_end();
print '<div class="center"><input type="submit" class="button" name="add" value="'.$langs->trans("Create").'"></div>';
print '</form>';
-
- dol_fiche_end();
}
diff --git a/htdocs/comm/list.php b/htdocs/comm/list.php
index a82413e9d4f..cf5bacc5e25 100644
--- a/htdocs/comm/list.php
+++ b/htdocs/comm/list.php
@@ -92,6 +92,7 @@ if (GETPOST("button_removefilter_x") || GETPOST("button_removefilter")) // Both
if ($search_status=='') $search_status=1; // always display activ customer first
+
/*
* view
*/
@@ -202,10 +203,9 @@ if ($result)
print_liste_field_titre($langs->trans("AccountancyCode"),$_SERVER["PHP_SELF"],"s.code_compta","",$param,'align="left"',$sortfield,$sortorder);
print_liste_field_titre($langs->trans("DateCreation"),$_SERVER["PHP_SELF"],"datec","",$param,'align="right"',$sortfield,$sortorder);
print_liste_field_titre($langs->trans("Status"),$_SERVER["PHP_SELF"],"s.status","",$param,'align="center"',$sortfield,$sortorder);
- print '<td class="liste_titre"> </td>';
+ print_liste_field_titre('');
$parameters=array();
$formconfirm=$hookmanager->executeHooks('printFieldListTitle',$parameters); // Note that $action and $object may have been modified by hook
-
print "</tr>\n";
print '<tr class="liste_titre">';
@@ -245,7 +245,8 @@ if ($result)
$parameters=array();
$formconfirm=$hookmanager->executeHooks('printFieldListOption',$parameters); // Note that $action and $object may have been modified by hook
- print "</tr>\n";
+ print '</tr>'."\n";
+
$var=True;
@@ -281,13 +282,13 @@ if ($result)
print "</tr>\n";
$i++;
}
- //print_barre_liste($langs->trans("ListOfCustomers"), $page, $_SERVER["PHP_SELF"],'',$sortfield,$sortorder,'',$num);
- print "</table>\n";
- print "</form>\n";
$db->free($result);
$parameters=array('sql' => $sql);
$formconfirm=$hookmanager->executeHooks('printFieldListFooter',$parameters); // Note that $action and $object may have been modified by hook
+
+ print "</table>\n";
+ print "</form>\n";
}
else
{
diff --git a/htdocs/projet/list.php b/htdocs/projet/list.php
index 4464c9cb8ef..eacc44cb3dd 100644
--- a/htdocs/projet/list.php
+++ b/htdocs/projet/list.php
@@ -1,6 +1,6 @@
<?php
/* Copyright (C) 2001-2005 Rodolphe Quiedeville <rodolphe@quiedeville.org>
- * Copyright (C) 2004-2010 Laurent Destailleur <eldy@users.sourceforge.net>
+ * Copyright (C) 2004-2015 Laurent Destailleur <eldy@users.sourceforge.net>
* Copyright (C) 2005 Marc Bariley / Ocebo <marc@ocebo.com>
* Copyright (C) 2005-2010 Regis Houssin <regis.houssin@capnetworks.com>
* Copyright (C) 2013 Cédric Salvador <csalvador@gpcsolutions.fr>
@@ -100,6 +100,12 @@ if (GETPOST("button_removefilter_x") || GETPOST("button_removefilter")) // Both
$syear="";
}
+// Initialize technical object to manage hooks of thirdparties. Note that conf->hooks_modules contains array array
+$hookmanager->initHooks(array('projectlist'));
+
+
+
+
/*
* View
*/
@@ -212,10 +218,7 @@ if ($resql)
if ($mine) $text=$langs->trans('MyProjects');
print_barre_liste($text, $page, $_SERVER["PHP_SELF"], "", $sortfield, $sortorder, "", $num,'','title_project');
- print '<form method="get" action="'.$_SERVER["PHP_SELF"].'">';
-
- print '<table class="noborder" width="100%">';
-
+ print '<form method="GET" id="searchFormList" action="'.$_SERVER["PHP_SELF"].'">';
// Show description of content
if ($mine) print $langs->trans("MyProjectsDesc").'<br><br>';
@@ -242,13 +245,16 @@ if ($resql)
}
if (! empty($moreforfilter))
{
- print '<tr class="liste_titre">';
- print '<td class="liste_titre" colspan="10">';
+ print '<div class="liste_titre">';
print $moreforfilter;
- print '</td></tr>';
+ $parameters=array();
+ $formconfirm=$hookmanager->executeHooks('printFieldPreListTitle',$parameters); // Note that $action and $object may have been modified by hook
+ print '</div>';
}
+ print '<table class="noborder" width="100%">';
+
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);
@@ -259,6 +265,8 @@ if ($resql)
print_liste_field_titre($langs->trans("Visibility"),$_SERVER["PHP_SELF"],"p.public","",$param,"",$sortfield,$sortorder);
print_liste_field_titre($langs->trans("Status"),$_SERVER["PHP_SELF"],'p.fk_statut',"",$param,'align="right"',$sortfield,$sortorder);
print_liste_field_titre('');
+ $parameters=array();
+ $formconfirm=$hookmanager->executeHooks('printFieldListTitle',$parameters); // Note that $action and $object may have been modified by hook
print "</tr>\n";
print '<tr class="liste_titre">';
@@ -301,6 +309,11 @@ if ($resql)
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>';
+ $parameters=array();
+ $formconfirm=$hookmanager->executeHooks('printFieldListOption',$parameters); // Note that $action and $object may have been modified by hook
+ print '</tr>'."\n";
+
+
while ($i < $num)
{
$objp = $db->fetch_object($resql);
@@ -396,21 +409,29 @@ if ($resql)
$projectstatic->statut = $objp->fk_statut;
print '<td align="right" colspan="2">'.$projectstatic->getLibStatut(5).'</td>';
+ $parameters=array('obj' => $objp);
+ $formconfirm=$hookmanager->executeHooks('printFieldListValue',$parameters); // Note that $action and $object may have been modified by hook
+
print "</tr>\n";
}
$i++;
+
}
+ $db->free($resql);
+
+ $parameters=array('sql' => $sql);
+ $formconfirm=$hookmanager->executeHooks('printFieldListFooter',$parameters); // Note that $action and $object may have been modified by hook
- $db->free($resql);
+ print "</table>\n";
+ print "</form>\n";
}
else
{
dol_print_error($db);
}
-print "</table>";
llxFooter();
diff --git a/htdocs/societe/soc.php b/htdocs/societe/soc.php
index cc1af52b2dd..863863811e0 100644
--- a/htdocs/societe/soc.php
+++ b/htdocs/societe/soc.php
@@ -159,10 +159,6 @@ if (empty($reshook))
}
//External modules should update their ones too
- $hookmanager->initHooks(array(
- 'mergethirds'
- ));
-
if (!$errors)
{
$reshook = $hookmanager->executeHooks('replaceThirdparty', array(
--
GitLab