5if (!defined(
'NOREQUIRESOC')) {
 
    6  define(
'NOREQUIRESOC', 
'1');
 
    9if (!defined(
'NOSTYLECHECK')) {
 
   10  define(
'NOSTYLECHECK', 
'1'); 
 
   15if (!defined(
"NOLOGIN")) {
 
   16  define(
"NOLOGIN", 
'1'); 
 
   20require 
'../../main.inc.php';
 
   23if ($dolibarr_main_prod) {
 
   24  accessforbidden(
'Access forbidden when $dolibarr_main_prod is set to 1');
 
   40if (empty($usedolheader)) {
 
   41  header(
"Content-type: text/html; charset=UTF8");
 
   44  header(
"X-Content-Type-Options: nosniff"); 
 
   45  header(
"X-Frame-Options: SAMEORIGIN"); 
 
   47  <!DOCTYPE HTML PUBLIC 
"-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 
   50  <meta 
name=
"robots" content=
"noindex,nofollow" />
 
   51  <meta 
name=
"author" content=
"Dolibarr Development Team">
 
   52  <title>Test page</title>
 
   53  <!-- Includes 
for JQuery (Ajax library) -->
 
   54  <link rel=
"stylesheet" type=
"text/css" href=
"<?php echo DOL_URL_ROOT ?>/includes/jquery/css/base/jquery-ui.css" />
 
   55  <!-- <link rel=
"stylesheet" type=
"text/css" href=
"<?php echo DOL_URL_ROOT ?>/includes/jquery/plugins/datatables/media/css/jquery.dataTables.css" /> -->
 
   56  <link rel=
"stylesheet" type=
"text/css" title=
"default" href=
"<?php echo DOL_URL_ROOT ?>/theme/eldy/style.css.php<?php echo ($_GET["dol_use_jmobile
"] == 1) ? '?dol_use_jmobile=1&dol_optimize_smallscreen=1' : ''; ?>" />
 
   57  <!-- Includes JS 
for JQuery -->
 
   58  <script 
type=
"text/javascript" src=
"<?php echo DOL_URL_ROOT ?>/includes/jquery/js/jquery.min.js"></script>
 
   59  <!-- migration fixes 
for removed Jquery functions -->
 
   60  <script 
type=
"text/javascript" src=
"<?php echo DOL_URL_ROOT ?>/includes/jquery/js/jquery-migrate.min.js"></script>
 
   61  <script 
type=
"text/javascript" src=
"<?php echo DOL_URL_ROOT ?>/includes/jquery/plugins/tablednd/jquery.tablednd.0.6.min.js"></script>
 
   62  <!-- <script 
type=
"text/javascript" src=
"<?php echo DOL_URL_ROOT ?>/includes/jquery/plugins/datatables/media/js/jquery.dataTables.js"></script> -->
 
   63  <script 
type=
"text/javascript" src=
"<?php echo DOL_URL_ROOT ?>/includes/jquery/plugins/select2/select2.min.js?version=4.0.0-beta"></script>
 
   66  <body style=
"padding: 10px;">
 
   91    llxHeader(
'', 
'', 
'', 
'', 0, 0, $arrayjs, $arraycss);
 
  100This page is a sample of page 
using tables. It is designed to make test with<br>
 
  102<div 
class=
"wordbreak">
 
  103- css (add parameter &theme=newtheme to test another theme or edit css of current theme)<br>
 
  104- jmobile (add parameter <a href=
"<?php echo $_SERVER["PHP_SELF
"].'?dol_use_jmobile=1&dol_optimize_smallscreen=1'; ?>">dol_use_jmobile=1&dol_optimize_smallscreen=1</a> and 
switch to small screen < 570 to enable with emulated jmobile)<br>
 
  105- no javascript / 
usage for bind people (add parameter <a href=
"<?php echo $_SERVER["PHP_SELF
"].'?nojs=1'; ?>">nojs=1</a> to force disable javascript)<br>
 
  110<br><hr><br>Example 0a : Table with div+div+div containg a select that should be overflowed and truncated => Use 
this to align text or form<br>
 
  112<div 
class=
"tagtable centpercent">
 
  114  <div 
class=
"tagtd maxwidthonsmartphone" style=
"overflow: hidden; white-space: nowrap;"> <!-- If you 
remove max-width, the jmobile overflow does not work -->
 
  115  <select 
name=
"hidedetails" class=
"centpercentonsmartphone"><option>aaaaaaaaaaaaaaafd sf sf gfd gfds fsd  gfd fhfg hf dhfg hg fhfgdhfgdh gh gfdhdgf h gfdh dfhg dfgh dfgh fdgh gfd hfd hfd gs fgdf gaaaa</option><option>gdfs gdf g sdfg dfg fdsg dsfg dfs gdfs gds fgs  gdfdf gd</option></select>
 
  117  <div 
class=
"tagtd maxwidthonsmartphone" style=
"overflow: hidden; white-space: nowrap;"> <!-- If you 
remove max-width, the jmobile overflow does not work -->
 
  118  <select 
name=
"hidedetails" class=
"centpercentonsmartphone"><option>aaaaaaaaaaaaaaafd sf sf gfd gfds fsd  gfd fhfg hf dhfg hg fhfgdhfgdh gh gfdhdgf h gfdh dfhg dfgh dfgh fdgh gfd hfd hfd gs fgdf gaaaa</option><option>gdfs gdf g sdfg dfg fdsg dsfg dfs gdfs gds fgs  gdfdf gd</option></select>
 
  123<br><hr><br>Example 0b: Table with div+form+div containg a select that should be overflowed and truncated => Use 
this to align text or form<br>
 
  125<div 
class=
"tagtable centpercent">
 
  126  <form action=
"xxx" method=
"POST" class=
"tagtr">
 
  127  <div 
class=
"tagtd maxwidthonsmartphone" style=
"overflow: hidden; white-space: nowrap;"> <!-- If you 
remove max-width, the jmobile overflow does not work -->
 
  128  <select 
name=
"hidedetails" class=
"centpercentonsmartphone"><option>aaaaaaaaaaaaaaafd sf sf gfd gfds fsd  gfd fhfg hf dhfg hg fhfgdhfgdh gh gfdhdgf h gfdh dfhg dfgh dfgh fdgh gfd hfd hfd gs fgdf gaaaa</option><option>gdfs gdf g sdfg dfg fdsg dsfg dfs gdfs gds fgs  gdfdf gd</option></select>
 
  130  <div 
class=
"tagtd maxwidthonsmartphone" style=
"overflow: hidden; white-space: nowrap;"> <!-- If you 
remove max-width, the jmobile overflow does not work -->
 
  131  <select 
name=
"hidedetails" class=
"centpercentonsmartphone"><option>aaaaaaaaaaaaaaafd sf sf gfd gfds fsd  gfd fhfg hf dhfg hg fhfgdhfgdh gh gfdhdgf h gfdh dfhg dfgh dfgh fdgh gfd hfd hfd gs fgdf gaaaa</option><option>gdfs gdf g sdfg dfg fdsg dsfg dfs gdfs gds fgs  gdfdf gd</option></select>
 
  136<br><hr><br>Example 0c: Table with table+tr+td containg a select that should be overflowed and truncated => Use 
this to align text or form<br>
 
  138<table 
class=
"centpercent">
 
  140  <td 
class=
"tagtd maxwidthonsmartphone" style=
"overflow: hidden; white-space: nowrap;"> <!-- If you 
remove max-width, the jmobile overflow does not work -->
 
  141  <select 
name=
"hidedetails" class=
"centpercentonsmartphone"><option>aaaaaaaaaaaaaaafd sf sf gfd gfds fsd  gfd fhfg hf dhfg hg fhfgdhfgdh gh gfdhdgf h gfdh dfhg dfgh dfgh fdgh gfd hfd hfd gs fgdf gaaaa</option><option>gdfs gdf g sdfg dfg fdsg dsfg dfs gdfs gds fgs  gdfdf gd</option></select>
 
  143  <td 
class=
"tagtd maxwidthonsmartphone" style=
"overflow: hidden; white-space: nowrap;"> <!-- If you 
remove max-width, the jmobile overflow does not work -->
 
  144  <select 
name=
"hidedetails" class=
"centpercentonsmartphone"><option>aaaaaaaaaaaaaaafd sf sf gfd gfds fsd  gfd fhfg hf dhfg hg fhfgdhfgdh gh gfdhdgf h gfdh dfhg dfgh dfgh fdgh gfd hfd hfd gs fgdf gaaaa</option><option>gdfs gdf g sdfg dfg fdsg dsfg dfs gdfs gds fgs  gdfdf gd</option></select>
 
  152<br><hr><br>Example 1 : Standard table/thead/tbody/tr/th-td (no 
class pair/impair on td) => Use 
this if you need the drag and drop 
for lines or 
for long result tables<br>
 
  155<script 
type=
"text/javascript">
 
  174include_once DOL_DOCUMENT_ROOT.
'/product/class/product.class.php';
 
  175$productspecimen = 
new Product($db);
 
  176$productspecimen->initAsSpecimen();
 
  177$object = $productspecimen;
 
  181$tasksarray = array(1, 2, 3); 
 
  182$tagidfortablednd = 
'tablelines3';
 
  183if (!empty($conf->use_javascript_ajax)) {
 
  184  include DOL_DOCUMENT_ROOT.
'/core/tpl/ajaxrow.tpl.php';
 
  188$nav .= 
'<form name="dateselect" action="'.$_SERVER[
"PHP_SELF"].
'?mode=show_peruser'.$param.
'">';
 
  189if ($actioncode || GETPOSTISSET(
'actioncode')) {
 
  190  $nav .= 
'<input type="hidden" name="actioncode" value="'.$actioncode.
'">';
 
  192if ($status || GETPOSTISSET(
'status')) {
 
  193  $nav .= 
'<input type="hidden" name="status" value="'.$status.
'">';
 
  196  $nav .= 
'<input type="hidden" name="filter" value="'.$filter.
'">';
 
  199  $nav .= 
'<input type="hidden" name="filtert" value="'.$filtert.
'">';
 
  202  $nav .= 
'<input type="hidden" name="socid" value="'.$socid.
'">';
 
  205  $nav .= 
'<input type="hidden" name="showbirthday" value="1">';
 
  208  $nav .= 
'<input type="hidden" name="projectid" value="'.$pid.
'">';
 
  211  $nav .= 
'<input type="hidden" name="type" value="'.$type.
'">';
 
  214  $nav .= 
'<input type="hidden" name="usergroup" value="'.$usergroup.
'">';
 
  216$nav .= $form->selectDate($dateselect, 
'dateselect', 0, 0, 1, 
'', 1, 0);
 
  217$nav .= 
' <input type="submit" name="submitdateselect" class="button" value="'.$langs->trans(
"Refresh").
'">';
 
  221print_barre_liste(
'Title of my list', 12, $_SERVER[
"PHP_SELF"], 
'', 
'', 
'', 
'Text in middle', 20, 500, 
'', 0, $nav, 
'', $limit, 0, 0, 1);
 
  223$moreforfilter .= 
'<div class="divsearchfield">';
 
  224$moreforfilter .= $langs->trans(
'This is a select list for a filter A (no combo forced)').
': ';
 
  225$cate_arbo = array(
'field1'=>
'value1a into the select list A', 
'field2'=>
'value2a');
 
  226$moreforfilter .= $form->selectarray(
'search_aaa', $cate_arbo, 
'', 1, 0, 0, 
'', 0, 0, 0, 
'', 
'maxwidth300', 0); 
 
  227$moreforfilter .= 
'</div>';
 
  229$moreforfilter .= 
'<div class="divsearchfield">';
 
  230$moreforfilter .= $langs->trans(
'This is a select list for a filter B (auto combo)').
': ';
 
  231$cate_arbo = array(
'field1'=>
'value1b into the select list B', 
'field2'=>
'value2b');
 
  232$moreforfilter .= $form->selectarray(
'search_bbb', $cate_arbo, 
'', 1, 0, 0, 
'', 0, 0, 0, 
'', 
'maxwidth300', -1); 
 
  233$moreforfilter .= 
'</div>';
 
  235$moreforfilter .= 
'<div class="divsearchfield">';
 
  236$moreforfilter .= $langs->trans(
'This is a select list for a filter C (combo forced)').
': ';
 
  237$cate_arbo = array(
'field1'=>
'value1c into the select list C', 
'field2'=>
'value2c');
 
  238$moreforfilter .= $form->selectarray(
'search_ccc', $cate_arbo, 
'', 1, 0, 0, 
'', 0, 0, 0, 
'', 
'maxwidth300', 1); 
 
  239$moreforfilter .= 
'</div>';
 
  241$moreforfilter .= 
'<div class="divsearchfield">';
 
  242$moreforfilter .= $langs->trans(
'This is a select list for a filter D (combo forced)').
': ';
 
  243$cate_arbo = array(
'field1'=>
'value1d into the select list D', 
'field2'=>
'value2d');
 
  244$moreforfilter .= $form->selectarray(
'search_ddd', $cate_arbo, 
'', 1, 0, 0, 
'', 0, 0, 0, 
'', 
'maxwidth300', 1); 
 
  245$moreforfilter .= 
'</div>';
 
  247if (!empty($moreforfilter)) {
 
  248  print 
'<div class="liste_titre liste_titre_bydiv centpercent">';
 
  249  print $moreforfilter;
 
  250  $parameters = array();
 
  251  $reshook = $hookmanager->executeHooks(
'printFieldPreListTitle', $parameters); 
 
  252  print $hookmanager->resPrint;
 
  258<table 
class=
"stripe row-border order-column centpercent tagtable liste<?php echo $moreforfilter ? " listwithfilterbefore
" : ""; ?>" id=
"tablelines3">
 
  260<tr 
class=
"liste_titre">
 
  261<?php print 
getTitleFieldOfList($langs->trans(
'title1'), 0, $_SERVER[
"PHP_SELF"], 
'aaa', 
'', 
'', 
'align="left"', $sortfield, $sortorder); ?>
 
  262<?php print 
getTitleFieldOfList($langs->trans(
'title2'), 0, $_SERVER[
"PHP_SELF"], 
'bbb', 
'', 
'', 
'align="center"', $sortfield, $sortorder); ?>
 
  263<?php print 
getTitleFieldOfList($langs->trans(
'title3'), 0, $_SERVER[
"PHP_SELF"], 
'ccc', 
'', 
'', 
'align="right"', $sortfield, $sortorder); ?>
 
  267<tr 
class=
"pair"><td><?php echo $productspecimen->getNomUrl(1); ?></td><td 
class=
"center">b1</td><td 
class=
"tdlineupdown right">c1</td></tr>
 
  268<tr 
class=
"impair nowrap"><td>a2 a2 a2 a2 a2 a2 a2 a2 a2 a2 a2 a2 a2 a2 a2 a2 a2 a2 a2 a2 a2 a2 a2 a2 a2 a2 a2 a2 a2 a2 a2 a2 a2 a2 a2 a2 a2 a2 a2 a2 a2 a2 a2 a2 a2 a2 a2 a2 a2 a2 a2 a2 a2 a2 a2 a2 a2 a2 a2 a2</td><td align=
"center">b2</td><td 
class=
"tdlineupdown right">c2</td></tr>
 
  269<tr 
class=
"pair"><td>a3</td><td 
class=
"center">b3</td><td 
class=
"tdlineupdown right">c3</td></tr>
 
  278<br><hr><br>Example 1b : Table 
using tags: table/thead/tbody/tr/th-td + dataTable => Use 
this for short result tables<br>
 
  280<script 
type=
"text/javascript">
 
  281$(document).ready(
function(){
 
  282  $(
'#idtableexample2').dataTable( {
 
  284    if ($optioncss == 
'print') {
 
  285      print 
'\'dom\
': \'lfrtip\',';
 
  287      print 
'\'dom\
': \'Blfrtip\',';
 
  292          'colvis',
'copy', 
'csv', 
'excel', 
'pdf', 
'print' 
  294    "sPaginationType": 
"full_numbers",
 
  295    "lengthMenu": [[10, 25, 50, 100, -1], [10, 25, 50, 100, 
"<?php echo $langs->trans('All'); ?>"]],
 
  297      "sLengthMenu": 
"<?php echo $langs->trans('Show'); ?> _MENU_ <?php echo $langs->trans('Entries'); ?>",
 
  298      "sSearch": 
"<?php echo $langs->trans('Search'); ?>:",
 
  299      "sZeroRecords": 
"<?php echo $langs->trans('NoRecordsToDisplay'); ?>",
 
  300      "sInfoEmpty": 
"<?php echo $langs->trans('NoEntriesToShow'); ?>",
 
  301      "sInfoFiltered": 
"(<?php echo $langs->trans('FilteredFrom'); ?> _MAX_ <?php echo $langs->trans('TotalEntries'); ?>)",
 
  302      "sInfo": 
"<?php echo $langs->trans('Showing'); ?> _START_ <?php echo $langs->trans('To'); ?> _END_ <?php echo $langs->trans('WTOf'); ?> _TOTAL_ <?php echo $langs->trans('Entries'); ?>",
 
  304        "sFirst": 
"<?php echo $langs->transnoentities('First'); ?>",
 
  305        "sLast": 
"<?php echo $langs->transnoentities('Last'); ?>",
 
  306        "sPrevious": 
"<?php echo $langs->transnoentities('Previous'); ?>",
 
  307        "sNext": 
"<?php echo $langs->transnoentities('Next'); ?>" 
  310    "aaSorting": [[0,
'desc']],
 
  326<br><hr><br>Example 2 : Table 
using tags: div.tagtable+(div|form).tagtr+div[.tagtd] => Use 
this for tables that need to have a different form 
for each line, but AVOID IT 
if possible (drag and drop of lines does not work 
for this case, also height of title can
't be forced to a minimum)<br><br> 
  330  $tasksarray = array(1, 2, 3); // To force having several lines 
  331  $tagidfortablednd = 'tablelines
'; 
  332if (!empty($conf->use_javascript_ajax)) { 
  333  include DOL_DOCUMENT_ROOT.'/core/tpl/ajaxrow.tpl.php
'; 
  336<div class="tagtable centpercent liste_titre_bydiv" id="tablelines"> 
  337  <div class="tagtr liste_titre"> 
  338    <div class="tagtd">Title A<input type="hidden" name="cartitem" value="3"></div> 
  339    <div class="tagtd">title B</div> 
  340    <div class="tagtd">title C</div> 
  341    <div class="tagtd">title D</div> 
  343  <div class="pair tagtr"> 
  344    <div class="tagtd">line4<input type="hidden" name="cartitem" value="3"></div> 
  345    <div class="tagtd">dfsdf</div> 
  346    <div class="tagtd"><input name="count" value="4" class="maxwidth50"></div> 
  347    <div class="tagtd tdlineupdown">bbbb</div> 
  349  <div class="impair tagtr"> 
  350    <div class="tagtd">line5<input type="hidden" name="cartitemb" value="3"></div> 
  351    <div class="tagtd">dfsdf</div> 
  352    <div class="tagtd"><input name="countb" value="4" class="maxwidth50"></div> 
  353    <div class="tagtd tdlineupdown">bbbb</div> 
  355  <div class="pair tagtr"> 
  356    <div class="tagtd">line6<input type="hidden" name="cartitem" value="3"></div> 
  357    <div class="tagtd">jghjgh</div> 
  358    <div class="tagtd">5</div> 
  359    <div class="tagtd tdlineupdown">lll</div> 
  361<!-- Using form into div make Firefox crazy (page loading does not end) --> 
  362<!--  <form class="liste_titre" method="POST" action="1.php"> 
  363    <div>line1<input type="hidden" name="cartitem" value="1"></div> 
  364    <div><label><input type="checkbox" name="hidedetails" value="2"> A checkbox inside a cell</label></div> 
  365    <div><input name="count" value="4"></div> 
  366    <div><input type="submit" name="count2" class="button noshadow" value="aaa"></div> 
  368  <form class="impair" method="POST" action="2.php"> 
  369    <div>line2<input type="hidden" name="cartitem" value="2"></div> 
  370    <div><select name="hidedetails"><option>aaaaaaaaaaaaaaafd sf sf gfd gfd gs fgdf gaaaa</option><option>gdfs gdf g sdfg dfg fdsg dsfg dfs gdfs gds fgs  gdfdf gd</option></select></div> 
  371    <div><input name="countb" value="4"></div> 
  372    <div class="tdlineupdown"><input type="submit" value="xxx" class="button"></div> 
  380if (!empty($usedolheader)) { 
if(!defined('NOREQUIRESOC')) if(!defined( 'NOREQUIRETRAN')) if(!defined('NOTOKENRENEWAL')) if(!defined( 'NOREQUIREMENU')) if(!defined('NOREQUIREHTML')) if(!defined( 'NOREQUIREAJAX')) llxHeader()
Empty header.
 
Class to manage products or services.
 
getTitleFieldOfList($name, $thead=0, $file="", $field="", $begin="", $moreparam="", $moreattrib="", $sortfield="", $sortorder="", $prefix="", $disablesortlink=0, $tooltip='', $forcenowrapcolumntitle=0)
Get title line of an array.
 
print_barre_liste($titre, $page, $file, $options='', $sortfield='', $sortorder='', $morehtmlcenter='', $num=-1, $totalnboflines='', $picto='generic', $pictoisfullpath=0, $morehtmlright='', $morecss='', $limit=-1, $hideselectlimit=0, $hidenavigation=0, $pagenavastextinput=0, $morehtmlrightbeforearrow='')
Print a title with navigation controls for pagination.
 
usage($program, $header)
Print the usage when executing scripts from install/.
 
if(preg_match('/crypted:/i', $dolibarr_main_db_pass)||!empty($dolibarr_main_db_encrypted_pass)) $conf db type
 
$conf db name
Only used if Module[ID]Name translation string is not found.
 
accessforbidden($message='', $printheader=1, $printfooter=1, $showonlymessage=0, $params=null)
Show a message to say access is forbidden and stop program.