diff --git a/htdocs/comm/propal/list.php b/htdocs/comm/propal/list.php
index f52641dc63a6e..3595d871c728f 100644
--- a/htdocs/comm/propal/list.php
+++ b/htdocs/comm/propal/list.php
@@ -992,7 +992,7 @@
$i++;
if ($i == 1)
{
- if ($num < $limit) print '
'.$langs->trans("Total").' | ';
+ if ($num < $limit && empty($offset)) print ''.$langs->trans("Total").' | ';
else print ''.$langs->trans("Totalforthispage").' | ';
}
elseif ($totalarray['totalhtfield'] == $i) print ''.price($totalarray['totalht']).' | ';
diff --git a/htdocs/commande/list.php b/htdocs/commande/list.php
index c88b3d552c1cf..8cab07c978022 100644
--- a/htdocs/commande/list.php
+++ b/htdocs/commande/list.php
@@ -1403,7 +1403,7 @@
$i++;
if ($i == 1)
{
- if ($num < $limit) print ''.$langs->trans("Total").' | ';
+ if ($num < $limit && empty($offset)) print ''.$langs->trans("Total").' | ';
else print ''.$langs->trans("Totalforthispage").' | ';
}
elseif ($totalarray['totalhtfield'] == $i) print ''.price($totalarray['totalht']).' | ';
diff --git a/htdocs/compta/bank/bankentries.php b/htdocs/compta/bank/bankentries.php
index bddf1292214d6..286836b010322 100644
--- a/htdocs/compta/bank/bankentries.php
+++ b/htdocs/compta/bank/bankentries.php
@@ -1264,7 +1264,7 @@
$i++;
if ($i == 1)
{
- if ($num < $limit) print ''.$langs->trans("Total").' | ';
+ if ($num < $limit && empty($offset)) print ''.$langs->trans("Total").' | ';
else print ''.$langs->trans("Totalforthispage").' | ';
}
elseif ($totalarray['totaldebfield'] == $i) print ''.price(-1 * $totalarray['totaldeb']).' | ';
diff --git a/htdocs/compta/bank/index.php b/htdocs/compta/bank/index.php
index b808fa8f596a0..f98f9b9cb49d5 100644
--- a/htdocs/compta/bank/index.php
+++ b/htdocs/compta/bank/index.php
@@ -606,7 +606,7 @@
$i++;
if ($i == 1)
{
- if ($num < $limit) print ''.$langs->trans("Total").' | ';
+ if ($num < $limit && empty($offset)) print ''.$langs->trans("Total").' | ';
else print ''.$langs->trans("Totalforthispage").' | ';
}
elseif ($totalarray['totalbalancefield'] == $i) print ''.price($totalarray['totalbalance'], 0, $langs, 0, 0, -1, $lastcurrencycode).' | ';
diff --git a/htdocs/compta/facture/list.php b/htdocs/compta/facture/list.php
index 8946dc84bd4d8..5b01c4459606d 100644
--- a/htdocs/compta/facture/list.php
+++ b/htdocs/compta/facture/list.php
@@ -517,7 +517,7 @@
$nbtotalofrecords = $db->num_rows($result);
}
-$sql.= $db->plimit($limit,$offset);
+$sql.= $db->plimit($limit+1,$offset);
//print $sql;
$resql = $db->query($sql);
@@ -1270,7 +1270,7 @@
$i++;
if ($i == 1)
{
- if ($num < $limit) print ''.$langs->trans("Total").' | ';
+ if ($num < $limit && empty($offset)) print ''.$langs->trans("Total").' | ';
else print ''.$langs->trans("Totalforthispage").' | ';
}
elseif ($totalarray['totalhtfield'] == $i) print ''.price($totalarray['totalht']).' | ';
diff --git a/htdocs/compta/sociales/index.php b/htdocs/compta/sociales/index.php
index 706c75fab0743..e76a6edc49ab8 100644
--- a/htdocs/compta/sociales/index.php
+++ b/htdocs/compta/sociales/index.php
@@ -273,7 +273,7 @@
if (isset($totalarray['totalttcfield']))
{
print '';
- if ($num < $limit) print ''.$langs->trans("Total").' | ';
+ if ($num < $limit && empty($offset)) print ''.$langs->trans("Total").' | ';
else print ''.$langs->trans("Totalforthispage").' | ';
print ' | ';
print ' | ';
diff --git a/htdocs/expensereport/list.php b/htdocs/expensereport/list.php
index e9712816b3424..204115d811242 100644
--- a/htdocs/expensereport/list.php
+++ b/htdocs/expensereport/list.php
@@ -694,7 +694,7 @@
$i++;
if ($i == 1)
{
- if ($num < $limit) print ''.$langs->trans("Total").' | ';
+ if ($num < $limit && empty($offset)) print ''.$langs->trans("Total").' | ';
else print ''.$langs->trans("Totalforthispage").' | ';
}
elseif ($totalarray['totalhtfield'] == $i) print ''.price($totalarray['totalht']).' | ';
diff --git a/htdocs/fichinter/list.php b/htdocs/fichinter/list.php
index 3b6f1be10ffb2..b5a6bcb0e94b1 100644
--- a/htdocs/fichinter/list.php
+++ b/htdocs/fichinter/list.php
@@ -592,7 +592,7 @@
$i++;
if ($i == 1)
{
- if ($num < $limit) print ''.$langs->trans("Total").' | ';
+ if ($num < $limit && empty($offset)) print ''.$langs->trans("Total").' | ';
else print ''.$langs->trans("Totalforthispage").' | ';
}
elseif ($totalarray['totaldurationfield'] == $i) print ''.convertSecondToTime($totalarray['totalduration'], 'allhourmin').' | ';
diff --git a/htdocs/fourn/facture/list.php b/htdocs/fourn/facture/list.php
index 6ff901521c62b..2924a40001a26 100644
--- a/htdocs/fourn/facture/list.php
+++ b/htdocs/fourn/facture/list.php
@@ -1167,7 +1167,7 @@
$i++;
if ($i == 1)
{
- if ($num < $limit) print ''.$langs->trans("Total").' | ';
+ if ($num < $limit && empty($offset)) print ''.$langs->trans("Total").' | ';
else print ''.$langs->trans("Totalforthispage").' | ';
}
elseif ($totalarray['totalhtfield'] == $i) print ''.price($totalarray['totalht']).' | ';
diff --git a/htdocs/modulebuilder/skeletons/skeleton_card.php b/htdocs/modulebuilder/skeletons/skeleton_card.php
index 42fce48e2cbc3..84cbcbb216070 100644
--- a/htdocs/modulebuilder/skeletons/skeleton_card.php
+++ b/htdocs/modulebuilder/skeletons/skeleton_card.php
@@ -84,11 +84,11 @@
-/*******************************************************************
-* ACTIONS
-*
-* Put here all code to do according to value of "action" parameter
-********************************************************************/
+/*
+ * ACTIONS
+ *
+ * Put here all code to do according to value of "action" parameter
+ */
$parameters=array();
$reshook=$hookmanager->executeHooks('doActions',$parameters,$object,$action); // Note that $action and $object may have been modified by some hooks
@@ -210,11 +210,11 @@
-/***************************************************
-* VIEW
-*
-* Put here all code to build page
-****************************************************/
+/*
+ * VIEW
+ *
+ * Put here all code to build page
+ */
$form=new Form($db);
diff --git a/htdocs/modulebuilder/skeletons/skeleton_list.php b/htdocs/modulebuilder/skeletons/skeleton_list.php
index c7b728617eadf..51158664889dc 100644
--- a/htdocs/modulebuilder/skeletons/skeleton_list.php
+++ b/htdocs/modulebuilder/skeletons/skeleton_list.php
@@ -137,11 +137,11 @@
-/*******************************************************************
-* ACTIONS
-*
-* Put here all code to do according to value of "action" parameter
-********************************************************************/
+/*
+ * ACTIONS
+ *
+ * Put here all code to do according to value of "action" parameter
+ */
if (GETPOST('cancel')) { $action='list'; $massaction=''; }
if (! GETPOST('confirmmassaction') && $massaction != 'presend' && $massaction != 'confirm_presend') { $massaction=''; }
@@ -177,11 +177,11 @@
-/***************************************************
-* VIEW
-*
-* Put here all code to build page
-****************************************************/
+/*
+ * VIEW
+ *
+ * Put here all code to build page
+ */
$now=dol_now();
@@ -244,7 +244,6 @@ function init_myfunc()
$reshook=$hookmanager->executeHooks('printFieldListWhere',$parameters); // Note that $action and $object may have been modified by hook
$sql.=$hookmanager->resPrint;
$sql.=$db->order($sortfield,$sortorder);
-//$sql.= $db->plimit($conf->liste_limit+1, $offset);
// Count total nb of records
$nbtotalofrecords = '';
diff --git a/htdocs/modulebuilder/template/myobject_list.php b/htdocs/modulebuilder/template/myobject_list.php
new file mode 100644
index 0000000000000..c249f16524295
--- /dev/null
+++ b/htdocs/modulebuilder/template/myobject_list.php
@@ -0,0 +1,175 @@
+
+ * Copyright (C)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+/**
+ * \file myobject_list.php
+ * \ingroup mymodule
+ * \brief Page with list of myobject.
+ *
+ * List of myobject
+ */
+
+//if (! defined('NOREQUIREUSER')) define('NOREQUIREUSER','1');
+//if (! defined('NOREQUIREDB')) define('NOREQUIREDB','1');
+//if (! defined('NOREQUIRESOC')) define('NOREQUIRESOC','1');
+//if (! defined('NOREQUIRETRAN')) define('NOREQUIRETRAN','1');
+//if (! defined('NOCSRFCHECK')) define('NOCSRFCHECK','1'); // Do not check anti CSRF attack test
+//if (! defined('NOSTYLECHECK')) define('NOSTYLECHECK','1'); // Do not check style html tag into posted data
+//if (! defined('NOTOKENRENEWAL')) define('NOTOKENRENEWAL','1'); // Do not check anti POST attack test
+//if (! defined('NOREQUIREMENU')) define('NOREQUIREMENU','1'); // If there is no need to load and show top and left menu
+//if (! defined('NOREQUIREHTML')) define('NOREQUIREHTML','1'); // If we don't need to load the html.form.class.php
+//if (! defined('NOREQUIREAJAX')) define('NOREQUIREAJAX','1');
+//if (! defined("NOLOGIN")) define("NOLOGIN",'1'); // If this page is public (can be called outside logged session)
+
+// Change the following lines to use the correct relative path (../, ../../, etc)
+
+// Load Dolibarr environment
+if (false === (@include '../../main.inc.php')) { // From htdocs directory
+ require '../../../main.inc.php'; // From "custom" directory
+}
+
+require_once DOL_DOCUMENT_ROOT.'/core/lib/date.lib.php';
+dol_include_once('/mymodule/class/myclass.class.php');
+
+// Load translation files required by the page
+$langs->load("mymodule@mymodule");
+
+// Get parameters
+$action = GETPOST('action','alpha');
+$massaction = GETPOST('massaction','alpha');
+$show_files = GETPOST('show_files','int');
+$confirm = GETPOST('confirm','alpha');
+$toselect = GETPOST('toselect', 'array');
+
+$id = GETPOST('id','int');
+$backtopage = GETPOST('backtopage');
+// TODO Add here list of search params
+$myparam = GETPOST('myparam','alpha');
+
+// Load variable for pagination
+$limit = GETPOST("limit")?GETPOST("limit","int"):$conf->liste_limit;
+$sortfield = GETPOST('sortfield','alpha');
+$sortorder = GETPOST('sortorder','alpha');
+$page = GETPOST('page','int');
+if ($page == -1) { $page = 0; }
+$offset = $limit * $page;
+$pageprev = $page - 1;
+$pagenext = $page + 1;
+if (! $sortfield) $sortfield="t.rowid"; // Set here default search field
+if (! $sortorder) $sortorder="ASC";
+
+// Protection if external user
+if ($user->societe_id > 0)
+{
+ //accessforbidden();
+}
+//$result = restrictedArea($user, 'mymodule', $id);
+
+// Initialize technical object to manage context to save list fields
+$contextpage=GETPOST('contextpage','aZ')?GETPOST('contextpage','aZ'):'mymodulelist';
+
+// Initialize technical object to manage hooks. Note that conf->hooks_modules contains array
+$hookmanager->initHooks(array('mymodulelist'));
+$extrafields = new ExtraFields($db);
+
+// Load object if id or ref is provided as parameter
+$object = new MyClass($db);
+if (($id > 0 || ! empty($ref)) && $action != 'add') {
+ $result = $object->fetch($id, $ref);
+ if ($result < 0) dol_print_error($db);
+}
+
+
+/*
+ * ACTIONS
+ *
+ * Put here all code to do according to value of "action" parameter
+ */
+
+if (GETPOST('cancel')) { $action='list'; $massaction=''; }
+if (! GETPOST('confirmmassaction') && $massaction != 'presend' && $massaction != 'confirm_presend') { $massaction=''; }
+
+$parameters=array();
+$reshook=$hookmanager->executeHooks('doActions',$parameters,$object,$action); // Note that $action and $object may have been modified by some hooks
+if ($reshook < 0) setEventMessages($hookmanager->error, $hookmanager->errors, 'errors');
+
+if (empty($reshook))
+{
+ // Selection of new fields
+ include DOL_DOCUMENT_ROOT.'/core/actions_changeselectedfields.inc.php';
+
+ // Purge search criteria
+ if (GETPOST("button_removefilter_x") || GETPOST("button_removefilter.x") ||GETPOST("button_removefilter")) // All tests are required to be compatible with all browsers
+ {
+ $search_field1='';
+ $search_field2='';
+ $search_date_creation='';
+ $search_date_update='';
+ $toselect='';
+ $search_array_options=array();
+ }
+
+ // Mass actions
+ $objectclass='Skeleton';
+ $objectlabel='Skeleton';
+ $permtoread = $user->rights->skeleton->read;
+ $permtodelete = $user->rights->skeleton->delete;
+ $uploaddir = $conf->skeleton->dir_output;
+ include DOL_DOCUMENT_ROOT.'/core/actions_massactions.inc.php';
+}
+
+
+/*
+ * VIEW
+ *
+ * Put here all code to build page
+ */
+
+llxHeader('', $langs->trans('MyPageName'), '');
+
+$form = new Form($db);
+
+// Put here content of your page
+// Example 1: Adding jquery code
+print '';
+
+
+
+// TODO
+
+
+
+
+// Example 2: Adding links to objects
+// The class must extend CommonObject for this method to be available
+$somethingshown = $form->showLinkedObjectBlock($myobject);
+
+// End of page
+llxFooter();
diff --git a/htdocs/modulebuilder/template/mypage.php b/htdocs/modulebuilder/template/mypage.php
deleted file mode 100644
index 368fd86c0a442..0000000000000
--- a/htdocs/modulebuilder/template/mypage.php
+++ /dev/null
@@ -1,135 +0,0 @@
-
- * Copyright (C)
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
-
-/**
- * \file mypage.php
- * \ingroup mymodule
- * \brief Example PHP page.
- *
- * Put detailed description here.
- */
-
-//if (! defined('NOREQUIREUSER')) define('NOREQUIREUSER','1');
-//if (! defined('NOREQUIREDB')) define('NOREQUIREDB','1');
-//if (! defined('NOREQUIRESOC')) define('NOREQUIRESOC','1');
-//if (! defined('NOREQUIRETRAN')) define('NOREQUIRETRAN','1');
-// Do not check anti CSRF attack test
-//if (! defined('NOCSRFCHECK')) define('NOCSRFCHECK','1');
-// Do not check style html tag into posted data
-//if (! defined('NOSTYLECHECK')) define('NOSTYLECHECK','1');
-// Do not check anti POST attack test
-//if (! defined('NOTOKENRENEWAL')) define('NOTOKENRENEWAL','1');
-// If there is no need to load and show top and left menu
-//if (! defined('NOREQUIREMENU')) define('NOREQUIREMENU','1');
-// If we don't need to load the html.form.class.php
-//if (! defined('NOREQUIREHTML')) define('NOREQUIREHTML','1');
-//if (! defined('NOREQUIREAJAX')) define('NOREQUIREAJAX','1');
-// If this page is public (can be called outside logged session)
-//if (! defined("NOLOGIN")) define("NOLOGIN",'1');
-// Change the following lines to use the correct relative path
-// (../, ../../, etc)
-
-// Load Dolibarr environment
-if (false === (@include '../../main.inc.php')) { // From htdocs directory
- require '../../../main.inc.php'; // From "custom" directory
-}
-
-global $db, $langs, $user;
-
-dol_include_once('/mymodule/class/myclass.class.php');
-
-// Load translation files required by the page
-$langs->load("mymodule@mymodule");
-
-// Get parameters
-$id = GETPOST('id', 'int');
-$action = GETPOST('action', 'alpha');
-$myparam = GETPOST('myparam', 'alpha');
-
-// Access control
-if ($user->socid > 0) {
- // External user
- accessforbidden();
-}
-
-// Default action
-if (empty($action) && empty($id) && empty($ref)) {
- $action='create';
-}
-
-// Load object if id or ref is provided as parameter
-$object = new MyClass($db);
-if (($id > 0 || ! empty($ref)) && $action != 'add') {
- $result = $object->fetch($id, $ref);
- if ($result < 0) {
- dol_print_error($db);
- }
-}
-
-/*
- * ACTIONS
- *
- * Put here all code to do according to value of "action" parameter
- */
-
-if ($action == 'add') {
- $myobject = new MyClass($db);
- $myobject->prop1 = $_POST["field1"];
- $myobject->prop2 = $_POST["field2"];
- $result = $myobject->create($user);
- if ($result > 0) {
- // Creation OK
- } {
- // Creation KO
- $mesg = $myobject->error;
- }
-}
-
-/*
- * VIEW
- *
- * Put here all code to build page
- */
-
-llxHeader('', $langs->trans('MyPageName'), '');
-
-$form = new Form($db);
-
-// Put here content of your page
-// Example 1: Adding jquery code
-echo '';
-
-// Example 2: Adding links to objects
-// The class must extend CommonObject for this method to be available
-$somethingshown = $form->showLinkedObjectBlock($myobject);
-
-// End of page
-llxFooter();
diff --git a/htdocs/product/stock/productlot_list.php b/htdocs/product/stock/productlot_list.php
index b3c4737b1a52e..d8879d1fa28dc 100644
--- a/htdocs/product/stock/productlot_list.php
+++ b/htdocs/product/stock/productlot_list.php
@@ -569,7 +569,7 @@ function init_myfunc()
$i++;
if ($i == 1)
{
- if ($num < $limit) print ''.$langs->trans("Total").' | ';
+ if ($num < $limit && empty($offset)) print ''.$langs->trans("Total").' | ';
else print ''.$langs->trans("Totalforthispage").' | ';
}
elseif ($totalarray['totalhtfield'] == $i) print ''.price($totalarray['totalht']).' | ';
diff --git a/htdocs/projet/list.php b/htdocs/projet/list.php
index e5cab88609a00..a7285e1f410fd 100644
--- a/htdocs/projet/list.php
+++ b/htdocs/projet/list.php
@@ -883,7 +883,7 @@
$i++;
if ($i == 1)
{
- if ($num < $limit) print ''.$langs->trans("Total").' | ';
+ if ($num < $limit && empty($offset)) print ''.$langs->trans("Total").' | ';
else print ''.$langs->trans("Totalforthispage").' | ';
}
elseif ($totalarray['totaloppfield'] == $i) print ''.price($totalarray['totalopp']).' | ';
diff --git a/htdocs/projet/tasks/list.php b/htdocs/projet/tasks/list.php
index 9450a2620ed41..8579d436d71f2 100644
--- a/htdocs/projet/tasks/list.php
+++ b/htdocs/projet/tasks/list.php
@@ -858,7 +858,7 @@
$i++;
if ($i == 1)
{
- if ($num < $limit) print ''.$langs->trans("Total").' | ';
+ if ($num < $limit && empty($offset)) print ''.$langs->trans("Total").' | ';
else print ''.$langs->trans("Totalforthispage").' | ';
}
elseif ($totalarray['totalplannedworkloadfield'] == $i) print ''.convertSecondToTime($totalarray['totalplannedworkload'],$plannedworkloadoutputformat).' | ';
diff --git a/htdocs/projet/tasks/time.php b/htdocs/projet/tasks/time.php
index b090680b6bcb7..eed7bae2734f3 100644
--- a/htdocs/projet/tasks/time.php
+++ b/htdocs/projet/tasks/time.php
@@ -996,7 +996,7 @@
$i++;
if ($i == 1)
{
- if ($num < $limit) print ''.$langs->trans("Total").' | ';
+ if ($num < $limit && empty($offset)) print ''.$langs->trans("Total").' | ';
else print ''.$langs->trans("Totalforthispage").' | ';
}
elseif ($totalarray['totaldurationfield'] == $i) print ''.convertSecondToTime($totalarray['totalduration'],'allhourmin').' | ';