From 4cde7b5cb0b0bc75ed0ed1cf4ce36fd1572b680e Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sun, 29 May 2011 10:57:38 +0000 Subject: [PATCH] New: Dictionnary setup works with very large dictionnaries (Add page navigation) --- htdocs/admin/dict.php | 53 +++++++++++++++++++++++++++---------------- 1 file changed, 33 insertions(+), 20 deletions(-) diff --git a/htdocs/admin/dict.php b/htdocs/admin/dict.php index b061da85326..4633b9937b6 100644 --- a/htdocs/admin/dict.php +++ b/htdocs/admin/dict.php @@ -47,8 +47,19 @@ $acts[1] = "disable"; $actl[0] = img_picto($langs->trans("Disabled"),'off'); $actl[1] = img_picto($langs->trans("Activated"),'on'); +$listoffset=GETPOST('listoffset'); +$listlimit=GETPOST('listlimit')>0?GETPOST('listlimit'):1000; $active = 1; +$sortfield = GETPOST("sortfield",'alpha'); +$sortorder = GETPOST("sortorder",'alpha'); +$page = GETPOST("page",'int'); +if ($page == -1) { $page = 0 ; } +$offset = $listlimit * $page ; +$pageprev = $page - 1; +$pagenext = $page + 1; + + // Cette page est une page d'edition generique des dictionnaires de donnees // Mettre ici tous les caracteristiques des dictionnaires @@ -124,8 +135,8 @@ $tabsql[17]= "SELECT id as rowid, code, libelle, active FROM ".MAIN_DB_PREF $tabsql[18]= "SELECT rowid as rowid, code, libelle, active FROM ".MAIN_DB_PREFIX."c_shipment_mode"; $tabsql[19]= "SELECT id as rowid, code, libelle, active FROM ".MAIN_DB_PREFIX."c_effectif"; $tabsql[20]= "SELECT rowid as rowid, code, libelle, active FROM ".MAIN_DB_PREFIX."c_input_method"; -$tabsql[21]= "SELECT c.rowid as rowid, code, label, active FROM ".MAIN_DB_PREFIX."c_availability AS c"; -$tabsql[22]= "SELECT rowid as rowid, code, label, active FROM ".MAIN_DB_PREFIX."c_input_reason"; +$tabsql[21]= "SELECT c.rowid as rowid, code, label, active FROM ".MAIN_DB_PREFIX."c_availability AS c"; +$tabsql[22]= "SELECT rowid as rowid, code, label, active FROM ".MAIN_DB_PREFIX."c_input_reason"; // Critere de tri du dictionnaire $tabsqlsort[1] ="pays ASC, code ASC"; @@ -303,14 +314,6 @@ if (GETPOST("id") == 11) $msg=''; -$sortfield = GETPOST("sortfield",'alpha'); -$sortorder = GETPOST("sortorder",'alpha'); -$page = GETPOST("page",'int'); -if ($page == -1) { $page = 0 ; } -$offset = $conf->liste_limit * $page ; -$pageprev = $page - 1; -$pagenext = $page + 1; - /* * Actions ajout ou modification d'une entree dans un dictionnaire de donnee @@ -554,12 +557,12 @@ print "
\n"; */ if ($_GET['action'] == 'delete') { - $ret=$html->form_confirm($_SERVER["PHP_SELF"].'?sortfield='.$sortfield.'&sortorder='.$sortorder.'&rowid='.$_GET["rowid"].'&code='.$_GET["code"].'&id='.$_GET["id"], $langs->trans('DeleteLine'), $langs->trans('ConfirmDeleteLine'), 'confirm_delete','',0,1); + $ret=$html->form_confirm($_SERVER["PHP_SELF"].'?'.($page?'page='.$page.'&':'').'sortfield='.$sortfield.'&sortorder='.$sortorder.'&rowid='.$_GET["rowid"].'&code='.$_GET["code"].'&id='.$_GET["id"], $langs->trans('DeleteLine'), $langs->trans('ConfirmDeleteLine'), 'confirm_delete','',0,1); if ($ret == 'html') print '
'; } /* - * Affichage d'un dictionnaire particulier + * Show a dictionnary */ if ($_GET["id"]) { @@ -588,6 +591,7 @@ if ($_GET["id"]) $sql.=" ORDER BY "; } $sql.=$tabsqlsort[$_GET["id"]]; + $sql.=$db->plimit($listlimit+1,$offset); //print $sql; $fieldlist=explode(',',$tabfield[$_GET["id"]]); @@ -684,7 +688,15 @@ if ($_GET["id"]) $var=true; if ($num) { - // Ligne de titre + // There is several pages + if ($num > $listlimit) + { + print ''; + print_fleche_navigation($page,$_SERVER["PHP_SELF"],'&id='.GETPOST('id'),($num > $listlimit),$langs->trans("Page").' '.($page+1)); + print ''; + } + + // Title of lines print ''; foreach ($fieldlist as $field => $value) { @@ -714,10 +726,10 @@ if ($_GET["id"]) // Affiche nom du champ if ($showfield) { - print_liste_field_titre($valuetoshow,"dict.php",$fieldlist[$field],"&id=".$_GET["id"],"","",$sortfield,$sortorder); + print_liste_field_titre($valuetoshow,"dict.php",$fieldlist[$field],($page?'page='.$page.'&':'').'&id='.GETPOST("id"),"","",$sortfield,$sortorder); } } - print_liste_field_titre($langs->trans("Status"),"dict.php","active","&id=".$_GET["id"],"",'align="center"',$sortfield,$sortorder); + print_liste_field_titre($langs->trans("Status"),"dict.php","active",($page?'page='.$page.'&':'').'&id='.GETPOST("id"),"",'align="center"',$sortfield,$sortorder); print ' '; print ''; @@ -727,12 +739,13 @@ if ($_GET["id"]) $obj = $db->fetch_object($resql); $var=!$var; //print_r($obj); - print ""; + print ""; if ($_GET["action"] == 'modify' && ($_GET["rowid"] == ($obj->rowid?$obj->rowid:$obj->code))) { print '
'; print ''; - print ''; + print ''; + print ''; print ''; fieldList($fieldlist,$obj); print ' '; @@ -789,7 +802,7 @@ if ($_GET["id"]) if ($obj->type && $obj->type == 'system') $iserasable=0; if ($iserasable) { - print ''.$actl[$obj->active].''; + print ''.$actl[$obj->active].''; } else { print $langs->trans("AlwaysActive"); } @@ -797,13 +810,13 @@ if ($_GET["id"]) // Modify link if ($iserasable) { - print 'rowid?$obj->rowid:$obj->code).'">'.img_edit().''; + print 'rowid?$obj->rowid:$obj->code).'">'.img_edit().''; } else { print ' '; } // Delete link if ($iserasable) { - print ''.img_delete().''; + print ''.img_delete().''; } else { print ' '; }