dolibarr 23.0.3
test_arrays.php
1<?php
2/* Copyright (C) 2024 Frédéric France <frederic.france@free.fr>
3 * Copyright (C) 2025 MDW <mdeweerd@users.noreply.github.com>
4 *
5 * This program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation; either version 3 of the License, or
8 * (at your option) any later version.
9 *
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
14 *
15 * You should have received a copy of the GNU General Public License
16 * along with this program. If not, see <https://www.gnu.org/licenses/>.
17 */
18//define("NOLOGIN",1); // This means this output page does not require to be logged.
19//if (!defined('NOREQUIREUSER')) define('NOREQUIREUSER', '1');
20//if (!defined('NOREQUIREDB')) define('NOREQUIREDB', '1');
21if (!defined('NOREQUIRESOC')) {
22 define('NOREQUIRESOC', '1');
23}
24//if (!defined('NOREQUIRETRAN')) define('NOREQUIRETRAN', '1');
25if (!defined('NOSTYLECHECK')) {
26 define('NOSTYLECHECK', '1'); // Do not check style html tag into posted data
27}
28//if (!defined('NOREQUIREMENU')) define('NOREQUIREMENU', '1'); // If there is no need to load and show top and left menu
29//if (!defined('NOREQUIREHTML')) define('NOREQUIREHTML', '1'); // If we don't need to load the html.form.class.php
30//if (!defined('NOREQUIREAJAX')) define('NOREQUIREAJAX', '1'); // Do not load ajax.lib.php library
31if (!defined("NOLOGIN")) {
32 define("NOLOGIN", '1'); // If this page is public (can be called outside logged session)
33}
34
35// Load Dolibarr environment
36require '../../main.inc.php';
46// Security
47if (!empty($dolibarr_main_prod) || empty($dolibarr_main_test)) {
48 accessforbidden('Access forbidden when $dolibarr_main_prod is set to 1');
49}
50
51$optioncss = GETPOST('optioncss', 'alpha');
52
53
54/*
55 * View
56 */
57
58$form = new Form($db);
59
60$usedolheader = 1; // 1 = Test inside a dolibarr page, 0 = Use hard coded header
61
62// HEADER
63//--------
64
65if (empty($usedolheader)) {
66 header("Content-type: text/html; charset=UTF8");
67
68 // Security options
69 header("X-Content-Type-Options: nosniff"); // With the nosniff option, if the server says the content is text/html, the browser will render it as text/html (note that most browsers now force this option to on)
70 header("X-Frame-Options: SAMEORIGIN"); // Frames allowed only if on same domain (stop some XSS attacks)
71 ?>
72 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
73 <html>
74 <head>
75 <meta name="robots" content="noindex,nofollow" />
76 <meta name="author" content="Dolibarr Development Team">
77 <title>Test page</title>
78 <!-- Includes for JQuery (Ajax library) -->
79 <link rel="stylesheet" type="text/css" href="<?php echo DOL_URL_ROOT ?>/includes/jquery/css/base/jquery-ui.css" />
80 <!-- <link rel="stylesheet" type="text/css" href="<?php echo DOL_URL_ROOT ?>/includes/jquery/plugins/datatables/media/css/jquery.dataTables.css" /> -->
81 <link rel="stylesheet" type="text/css" title="default" href="<?php echo DOL_URL_ROOT ?>/theme/eldy/style.css.php<?php echo (GETPOST("dol_use_jmobile") == 1) ? '?dol_use_jmobile=1&dol_optimize_smallscreen=1' : ''; ?>" />
82 <!-- Includes JS for JQuery -->
83 <script type="text/javascript" src="<?php echo DOL_URL_ROOT ?>/includes/jquery/js/jquery.min.js"></script>
84 <!-- migration fixes for removed Jquery functions -->
85 <script type="text/javascript" src="<?php echo DOL_URL_ROOT ?>/includes/jquery/js/jquery-migrate.min.js"></script>
86 <script type="text/javascript" src="<?php echo DOL_URL_ROOT ?>/includes/jquery/plugins/tablednd/jquery.tablednd.0.6.min.js"></script>
87 <!-- <script type="text/javascript" src="<?php echo DOL_URL_ROOT ?>/includes/jquery/plugins/datatables/media/js/jquery.dataTables.js"></script> -->
88 <script type="text/javascript" src="<?php echo DOL_URL_ROOT ?>/includes/jquery/plugins/select2/select2.min.js?version=4.0.0-beta"></script>
89 </head>
90
91 <body style="padding: 10px;">
92
93
94 <?php
95} else {
96 $arraycss = array();
97 $arrayjs = array();
98 /*
99 $arraycss=array('/includes/jquery/plugins/datatables/media/css/jquery.dataTables.css',
100 '/includes/jquery/plugins/datatables/extensions/Buttons/css/buttons.dataTables.min.css',
101 '/includes/jquery/plugins/datatables/extensions/ColReorder/css/colReorder.dataTables.min.css'
102 );
103 $arrayjs=array('/includes/jquery/plugins/datatables/media/js/jquery.dataTables.js',
104 '/includes/jquery/plugins/datatables/extensions/Buttons/js/dataTables.buttons.js',
105 '/includes/jquery/plugins/datatables/extensions/Buttons/js/buttons.colVis.min.js',
106 '/includes/jquery/plugins/datatables/extensions/Buttons/js/buttons.html5.min.js',
107 '/includes/jquery/plugins/datatables/extensions/Buttons/js/buttons.flash.min.js',
108 '/includes/jquery/plugins/datatables/extensions/Buttons/js/buttons.print.min.js',
109 '/includes/jquery/plugins/datatables/extensions/ColReorder/js/dataTables.colReorder.min.js',
110 '/includes/jszip/jszip.min.js',
111 '/includes/pdfmake/pdfmake.min.js',
112 '/includes/pdfmake/vfs_fonts.js'
113 );
114 */
115
116 llxHeader('', '', '', '', 0, 0, $arrayjs, $arraycss);
117}
118
119
120// CONTENT
121//---------
122?>
123
124<h2>
125This page is a sample of page using tables. It is designed to make test with<br>
126</h2>
127<div class="wordbreak">
128- css (add parameter &amp;theme=newtheme to test another theme or edit css of current theme)<br>
129- jmobile (add parameter <a href="<?php echo $_SERVER["PHP_SELF"].'?dol_use_jmobile=1&dol_optimize_smallscreen=1'; ?>">dol_use_jmobile=1&amp;dol_optimize_smallscreen=1</a> and switch to small screen < 570 to enable with emulated jmobile)<br>
130- no javascript / usage for blind people (add parameter <a href="<?php echo $_SERVER["PHP_SELF"].'?nojs=1'; ?>">nojs=1</a> to force disable javascript)<br>
131- tablednd<br>
132</div>
133
134
135<br><hr><br>Example 0a : Table with div+div+div containing a select that should be overflowed and truncated => Use this to align text or form<br>
136
137<div class="tagtable centpercent">
138 <div class="tagtr">
139 <div class="tagtd maxwidthonsmartphone" style="overflow: hidden; white-space: nowrap;"> <!-- If you remove max-width, the jmobile overflow does not work -->
140 <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>
141 </div>
142 <div class="tagtd maxwidthonsmartphone" style="overflow: hidden; white-space: nowrap;"> <!-- If you remove max-width, the jmobile overflow does not work -->
143 <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>
144 </div>
145 </div>
146</div>
147
148<br><hr><br>Example 0b: Table with div+form+div containing a select that should be overflowed and truncated => Use this to align text or form<br>
149
150<div class="tagtable centpercent">
151 <form action="xxx" method="POST" class="tagtr">
152 <div class="tagtd maxwidthonsmartphone" style="overflow: hidden; white-space: nowrap;"> <!-- If you remove max-width, the jmobile overflow does not work -->
153 <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>
154 </div>
155 <div class="tagtd maxwidthonsmartphone" style="overflow: hidden; white-space: nowrap;"> <!-- If you remove max-width, the jmobile overflow does not work -->
156 <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>
157 </div>
158 </form>
159</div>
160
161<br><hr><br>Example 0c: Table with table+tr+td containing a select that should be overflowed and truncated => Use this to align text or form<br>
162
163<table class="centpercent">
164 <tr>
165 <td class="tagtd maxwidthonsmartphone" style="overflow: hidden; white-space: nowrap;"> <!-- If you remove max-width, the jmobile overflow does not work -->
166 <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>
167 </td>
168 <td class="tagtd maxwidthonsmartphone" style="overflow: hidden; white-space: nowrap;"> <!-- If you remove max-width, the jmobile overflow does not work -->
169 <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>
170 </td>
171 </tr>
172</table>
173
174
175
176
177<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>
178
179
180<script type="text/javascript">
181/*jQuery(document).ready(function() {
182$(document).ready(function() {
183 var table = $('#tablelines3').DataTable( {
184 scrollY: "300px",
185 scrollX: true,
186 scrollCollapse: true,
187 paging: false,
188 fixedColumns: {
189 leftColumns: 1,
190 rightColumns: 1
191 }
192 } );
193} );
194});*/
195</script>
196
197
198<?php
199include_once DOL_DOCUMENT_ROOT.'/product/class/product.class.php';
200$productspecimen = new Product($db);
201$productspecimen->initAsSpecimen();
202$object = $productspecimen;
203
204$sortfield = 'aaa';
205$sortorder = 'ASC';
206$tasksarray = array(1, 2, 3); // To force having several lines
207$tagidfortablednd = 'tablelines3';
208if (!isset($moreforfilter)) { // @phan-suppress-current-line PhanPluginUndeclaredVariableIsset
209 $moreforfilter = '';
210}
211if (!empty($conf->use_javascript_ajax)) {
212 include DOL_DOCUMENT_ROOT.'/core/tpl/ajaxrow.tpl.php';
213}
214
215$nav = '';
216$nav .= '<form name="dateselect" action="'.$_SERVER["PHP_SELF"].'?mode=show_peruser'.$param.'">';
217if ($actioncode || GETPOSTISSET('actioncode')) {
218 $nav .= '<input type="hidden" name="actioncode" value="'.$actioncode.'">';
219}
220if ($status || GETPOSTISSET('status')) {
221 $nav .= '<input type="hidden" name="status" value="'.$status.'">';
222}
223if ($filter) {
224 $nav .= '<input type="hidden" name="filter" value="'.$filter.'">';
225}
226if ($filtert) {
227 $nav .= '<input type="hidden" name="filtert" value="'.$filtert.'">';
228}
229if ($socid) {
230 $nav .= '<input type="hidden" name="socid" value="'.$socid.'">';
231}
232if (isset($showbirthday) && $showbirthday) {
233 $nav .= '<input type="hidden" name="showbirthday" value="1">';
234}
235if (isset($pid) && $pid) { // @phan-suppress-current-line PhanPluginUndeclaredVariableIsset
236 $nav .= '<input type="hidden" name="projectid" value="'.$pid.'">';
237}
238if ($type) {
239 $nav .= '<input type="hidden" name="type" value="'.$type.'">';
240}
241if ($usergroup) {
242 $nav .= '<input type="hidden" name="usergroup" value="'.$usergroup.'">';
243}
244$nav .= $form->selectDate($dateselect ?? '', 'dateselect', 0, 0, 1, '', 1, 0);
245$nav .= ' <input type="submit" name="submitdateselect" class="button" value="'.$langs->trans("Refresh").'">';
246$nav .= '</form>';
247
248$limit = 10;
249print_barre_liste('Title of my list', 12, $_SERVER["PHP_SELF"], '', '', '', 'Text in middle', 20, 500, '', 0, $nav, '', $limit, 0, 0, 1);
250
251$moreforfilter .= '<div class="divsearchfield">';
252$moreforfilter .= $langs->trans('This is a select list for a filter A (no combo forced)').': ';
253$cate_arbo = array('field1' => 'value1a into the select list A', 'field2' => 'value2a');
254$moreforfilter .= $form->selectarray('search_aaa', $cate_arbo, '', 1, 0, 0, '', 0, 0, 0, '', 'maxwidth300', 0); // List with no js combo
255$moreforfilter .= '</div>';
256
257$moreforfilter .= '<div class="divsearchfield">';
258$moreforfilter .= $langs->trans('This is a select list for a filter B (auto combo)').': ';
259$cate_arbo = array('field1' => 'value1b into the select list B', 'field2' => 'value2b');
260$moreforfilter .= $form->selectarray('search_bbb', $cate_arbo, '', 1, 0, 0, '', 0, 0, 0, '', 'maxwidth300', -1); // List with js combo auto
261$moreforfilter .= '</div>';
262
263$moreforfilter .= '<div class="divsearchfield">';
264$moreforfilter .= $langs->trans('This is a select list for a filter C (combo forced)').': ';
265$cate_arbo = array('field1' => 'value1c into the select list C', 'field2' => 'value2c');
266$moreforfilter .= $form->selectarray('search_ccc', $cate_arbo, '', 1, 0, 0, '', 0, 0, 0, '', 'maxwidth300', 1); // List with js combo forced
267$moreforfilter .= '</div>';
268
269$moreforfilter .= '<div class="divsearchfield">';
270$moreforfilter .= $langs->trans('This is a select list for a filter D (combo forced)').': ';
271$cate_arbo = array('field1' => 'value1d into the select list D', 'field2' => 'value2d');
272$moreforfilter .= $form->selectarray('search_ddd', $cate_arbo, '', 1, 0, 0, '', 0, 0, 0, '', 'maxwidth300', 1); // List with js combo forced
273$moreforfilter .= '</div>';
274
275if (!empty($moreforfilter)) {
276 print '<div class="liste_titre liste_titre_bydiv centpercent">';
277 print $moreforfilter;
278 $parameters = array();
279 $reshook = $hookmanager->executeHooks('printFieldPreListTitle', $parameters, $object); // Note that $action and $object may have been modified by hook
280 print $hookmanager->resPrint;
281 print '</div>';
282}
283
284?>
285
286<table class="stripe row-border order-column centpercent tagtable liste<?php echo $moreforfilter ? " listwithfilterbefore" : ""; ?>" id="tablelines3">
287<thead>
288<tr class="liste_titre">
289<?php print getTitleFieldOfList($langs->trans('title1'), 0, $_SERVER["PHP_SELF"], 'aaa', '', '', 'align="left"', $sortfield, $sortorder); ?>
290<?php print getTitleFieldOfList($langs->trans('title2'), 0, $_SERVER["PHP_SELF"], 'bbb', '', '', 'align="center"', $sortfield, $sortorder); ?>
291<?php print getTitleFieldOfList($langs->trans('title3'), 0, $_SERVER["PHP_SELF"], 'ccc', '', '', 'align="right"', $sortfield, $sortorder); ?>
292</tr>
293</thead>
294<tbody>
295<tr class="pair"><td><?php echo $productspecimen->getNomUrl(1); ?></td><td class="center">b1</td><td class="tdlineupdown right">c1</td></tr>
296<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>
297<tr class="pair"><td>a3</td><td class="center">b3</td><td class="tdlineupdown right">c3</td></tr>
298</tbody>
299</table>
300
301
302<br>
303
304
305<!--
306<br><hr><br>Example 1b : Table using tags: table/thead/tbody/tr/th-td + dataTable => Use this for short result tables<br>
307
308<script type="text/javascript">
309$(document).ready(function(){
310 $('#idtableexample2').dataTable( {
311 <?php
312 if ($optioncss == 'print') {
313 print '\'dom\': \'lfrtip\',';
314 } else {
315 print '\'dom\': \'Blfrtip\',';
316 }
317 ?>
318 "colReorder": true,
319 'buttons': [
320 'colvis','copy', 'csv', 'excel', 'pdf', 'print'
321 ],
322 "sPaginationType": "full_numbers",
323 "lengthMenu": [[10, 25, 50, 100, -1], [10, 25, 50, 100, "<?php echo $langs->trans('All'); ?>"]],
324 "oLanguage": {
325 "sLengthMenu": "<?php echo $langs->trans('Show'); ?> _MENU_ <?php echo $langs->trans('Entries'); ?>",
326 "sSearch": "<?php echo $langs->trans('Search'); ?>:",
327 "sZeroRecords": "<?php echo $langs->trans('NoRecordsToDisplay'); ?>",
328 "sInfoEmpty": "<?php echo $langs->trans('NoEntriesToShow'); ?>",
329 "sInfoFiltered": "(<?php echo $langs->trans('FilteredFrom'); ?> _MAX_ <?php echo $langs->trans('TotalEntries'); ?>)",
330 "sInfo": "<?php echo $langs->trans('Showing'); ?> _START_ <?php echo $langs->trans('To'); ?> _END_ <?php echo $langs->trans('WTOf'); ?> _TOTAL_ <?php echo $langs->trans('Entries'); ?>",
331 "oPaginate": {
332 "sFirst": "<?php echo $langs->transnoentities('First'); ?>",
333 "sLast": "<?php echo $langs->transnoentities('Last'); ?>",
334 "sPrevious": "<?php echo $langs->transnoentities('Previous'); ?>",
335 "sNext": "<?php echo $langs->transnoentities('Next'); ?>"
336 }
337 },
338 "aaSorting": [[0,'desc']],
339/* To use in ajax mode
340 "bProcessing": true,
341 "stateSave": true,
342 "bServerSide": true,
343 "sAjaxSource": "../ajax.php",
344 "aoColumnDefs": [
345 { "bSortable": false, "aTargets": [ 2,3,4 ] }
346 ],
347*/
348 })
349});
350</script>
351 -->
352
353
354<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>
355
356
357<?php
358 $tasksarray = array(1, 2, 3); // To force having several lines
359$tagidfortablednd = 'tablelines';
360if (!empty($conf->use_javascript_ajax)) {
361 include DOL_DOCUMENT_ROOT.'/core/tpl/ajaxrow.tpl.php';
362}
363?>
364<div class="tagtable centpercent liste_titre_bydiv" id="tablelines">
365 <div class="tagtr liste_titre">
366 <div class="tagtd">Title A<input type="hidden" name="cartitem" value="3"></div>
367 <div class="tagtd">title B</div>
368 <div class="tagtd">title C</div>
369 <div class="tagtd">title D</div>
370 </div>
371 <div class="pair tagtr">
372 <div class="tagtd">line4<input type="hidden" name="cartitem" value="3"></div>
373 <div class="tagtd">dfsdf</div>
374 <div class="tagtd"><input name="count" value="4" class="maxwidth50"></div>
375 <div class="tagtd tdlineupdown">bbbb</div>
376 </div>
377 <div class="impair tagtr">
378 <div class="tagtd">line5<input type="hidden" name="cartitemb" value="3"></div>
379 <div class="tagtd">dfsdf</div>
380 <div class="tagtd"><input name="countb" value="4" class="maxwidth50"></div>
381 <div class="tagtd tdlineupdown">bbbb</div>
382 </div>
383 <div class="pair tagtr">
384 <div class="tagtd">line6<input type="hidden" name="cartitem" value="3"></div>
385 <div class="tagtd">jghjgh</div>
386 <div class="tagtd">5</div>
387 <div class="tagtd tdlineupdown">lll</div>
388 </div>
389<!-- Using form into div make Firefox crazy (page loading does not end) -->
390<!-- <form class="liste_titre" method="POST" action="1.php">
391 <div>line1<input type="hidden" name="cartitem" value="1"></div>
392 <div><label><input type="checkbox" name="hidedetails" value="2"> A checkbox inside a cell</label></div>
393 <div><input name="count" value="4"></div>
394 <div><input type="submit" name="count2" class="button noshadow" value="aaa"></div>
395 </form>
396 <form class="impair" method="POST" action="2.php">
397 <div>line2<input type="hidden" name="cartitem" value="2"></div>
398 <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>
399 <div><input name="countb" value="4"></div>
400 <div class="tdlineupdown"><input type="submit" value="xxx" class="button"></div>
401 </form>-->
402</div>
403
404
405
406
407<?php
408if (!empty($usedolheader)) {
409 llxFooter();
410} else { ?>
411</body>
412<?php } ?>
413
414</html>
if(! $sortfield) if(! $sortorder) $object
Definition account.php:100
if(!defined('NOREQUIRESOC')) if(!defined( 'NOREQUIRETRAN')) if(!defined('NOTOKENRENEWAL')) if(!defined( 'NOREQUIREMENU')) if(!defined('NOREQUIREHTML')) if(!defined( 'NOREQUIREAJAX')) llxHeader($head='', $title='', $help_url='', $target='', $disablejs=0, $disablehead=0, $arrayofjs='', $arrayofcss='', $morequerystring='', $morecssonbody='', $replacemainareaby='', $disablenofollow=0, $disablenoindex=0)
Empty header.
Definition wrapper.php:73
Class to manage generation of HTML components Only common components must be here.
Class to manage products or services.
print_barre_liste($title, $page, $file, $options='', $sortfield='', $sortorder='', $morehtmlcenter='', $num=-1, $totalnboflines='', $picto='generic', $pictoisfullpath=0, $morehtmlright='', $morecss='', $limit=-1, $selectlimitsuffix=0, $hidenavigation=0, $pagenavastextinput=0, $morehtmlrightbeforearrow='')
Print a title with navigation controls for pagination.
getTitleFieldOfList($name, $thead=0, $file="", $field="", $begin="", $moreparam="", $moreattrib="", $sortfield="", $sortorder="", $prefix="", $disablesortlink=0, $tooltip='', $forcenowrapcolumntitle=0)
Get title line of an array.
GETPOST($paramname, $check='alphanohtml', $method=0, $filter=null, $options=null, $noreplace=0)
Return value of a param into GET or POST supervariable.
treeview li table
No Email.
if(preg_match('/(crypted|dolcrypt):/i', $dolibarr_main_db_pass)||!empty($dolibarr_main_db_encrypted_pass)) $conf db type
'integer', 'integer:ObjectClass:PathToClass[:AddCreateButtonOrNot[:Filter[:Sortfield]]]',...
Definition repair.php:125
$conf db name
Only used if Module[ID]Name translation string is not found.
Definition repair.php:128
accessforbidden($message='', $printheader=1, $printfooter=1, $showonlymessage=0, $params=null)
Show a message to say access is forbidden and stop program.