dolibarr  20.0.0-beta
test_forms.php
1 <?php
2 define("NOCSRFCHECK", 1); // We accept to go on this page from external web site.
3 //define("NOLOGIN",1); // This means this output page does not require to be logged.
4 /*if (!defined('NOSESSION')) {
5  define('NOSESSION', '1');
6 }*/
7 
8 // Load Dolibarr environment
9 require '../../main.inc.php';
10 include_once DOL_DOCUMENT_ROOT.'/core/lib/date.lib.php';
11 
12 // Security
13 if ($dolibarr_main_prod) {
14  accessforbidden('Access forbidden when $dolibarr_main_prod is set to 1');
15 }
16 
17 
18 /*
19  * View
20  */
21 
22 llxHeader();
23 
24 ?>
25 
26 This page is a sample of page using Dolibarr HTML widget methods. It is designed to make test with<br>
27 - css (add parameter &amp;theme=newtheme to test another theme or edit css of current theme)<br>
28 - jmobile (add parameter <a class="wordbreak" 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>
29 - no javascript / usage for bind people (add parameter <a class="wordbreak" href="<?php echo $_SERVER["PHP_SELF"].'?nojs=1'; ?>">nojs=1</a> to force disable javascript)<br>
30 - use with a text browser (add parameter <a class="wordbreak" href="<?php echo $_SERVER["PHP_SELF"].'?textbrowser=1'; ?>">textbrowser=1</a> to force detection of a text browser)<br>
31 <br><br>
32 
33 <!-- Output to test html.form.class.php -->
34 <?php
35 $form = new Form($db);
36 
37 print '<div class="div-table-responsive">'; // You can use div-table-responsive-no-min if you don't need reserved height for your table
38 
39 // Test1: form->selectDate using tzuser date
40 print "Test 1a: We must have here current date and hour for user (must match hour on browser). Note: Check your are logged so user TZ and DST are known.";
41 $offsettz = (empty($_SESSION['dol_tz']) ? 0 : $_SESSION['dol_tz']) * 60 * 60;
42 $offsetdst = (empty($_SESSION['dol_dst']) ? 0 : $_SESSION['dol_dst']) * 60 * 60;
43 print " (dol_tz=".$offsettz." dol_dst=".$offsetdst.")<br>\n";
44 print $form->selectDate(dol_now(), 'test1a', 1, 1, 0);
45 
46 print '<br><br>'."\n";
47 
48 print "Test 1b: We must have here current date with hours to 00:00.<br>";
49 print $form->selectDate('', 'test1b', 1, 1, 0);
50 
51 print '<br><br>'."\n";
52 
53 // Test2: form->selectDate using tzuser date
54 print "Test 2: We must have here 1970-01-01 selected (fields can be empty)<br>\n";
55 print $form->selectDate(dol_get_first_day(1970, 1, false), 'test2', 1, 1, 1);
56 
57 print '<br><br>'."\n";
58 
59 // Test3: form->selectDate for 1970-01-01 00:00:00
60 print "Test 3: We must have here 1970-01-01 00:00:00 selected (fields are mandatory)<br>\n";
61 print $form->selectDate(dol_get_first_day(1970, 1, false), 'test3', 1, 1, 0);
62 
63 print '<br><br>'."\n";
64 
65 // Test4a: a select
66 print "Test 4a: a select<br>\n";
67 $array = array(1=>'Value 1', 2=>'Value 2', 3=>'Value 3 with a very long text. aze eazeae e ae aeae a e a ea ea ea e a e aea e ae aeaeaeaze.');
68 $selected = 3;
69 print $form->selectarray('testselecta', $array, $selected, 1, 0, 0, '', 0, 0, 0, '', 'minwidth100', 1);
70 print '<br><br>';
71 print "Test 4b: a select<br>\n";
72 $array = array(1=>'Value 1', 2=>'Value 2', 3=>'Value 3');
73 $selected = 3;
74 print $form->selectarray('testselectb', $array, $selected, 1, 0, 0, '', 0, 0, 0, '', 'minwidth100', 1);
75 print '<br><br>'."\n";
76 print "Test 4c: Select array with addjscombo not forced<br>\n";
77 $array = array(1=>'Value 1', 2=>'Value 2', 3=>'Value 3');
78 print $form->selectarray('selectarray', $array, $selected, 1, 0, 0, '', 0, 0, 0, '', 'minwidth100', 0);
79 
80 print '<br><br>'."\n";
81 
82 print "Test 4d: a select with ajax refresh and with onchange call of url<br>\n";
83 $selected = -1;
84 print $form->selectArrayAjax('testselectc', DOL_URL_ROOT.'/core/ajax/selectsearchbox.php', $selected, '', '', 0, 1, 'minwidth100', 1);
85 
86 print '<br><br>'."\n";
87 
88 // Test5a: form->select_thirdparty
89 print "Test 5a: Select thirdparty<br>\n";
90 print $form->select_company(0, 'thirdpartytest', '', '', 0, 0, null, 0, 'minwidth100');
91 
92 print '<br><br>'."\n";
93 
94 // Test5b: form->select_product
95 print "Test 5b: Select product (using ajax)<br>\n";
96 $form->select_produits(0, 'producttest', '', 20, 0, 1, 2, '', 0, null, 0, '1', 0, 'minwidth100');
97 
98 print '<br><br>'."\n";
99 
100 // Test5c: a multiselect
101 print "Test 5c: a multiselect<br>\n";
102 $array = array(1=>'Value 1', 2=>'Value 2', 3=>'Value 3');
103 $arrayselected = array(1, 3);
104 print $form->multiselectarray('testmulti', $array, $arrayselected, '', 0, 'minwidth100');
105 
106 print '<br><br>'."\n";
107 
108 // Test6a: Upload of big files
109 print "Test 6a: Upload of big files<br>\n";
110 print "The file will be uploaded in the directory: documents/test/temp/<br>\n";
111 
112 if (is_file(DOL_DOCUMENT_ROOT.'/includes/flowjs/flow.js')) {
113  print '<button id="buttonbigupload" type="button">Browse...</button>';
114  print '&nbsp;<span id="filespan">No file selected.</span>';
115  print '<br><div class="progress-bar filepgbar taligncenter" role="progressbar" style="width:1%;display:none"><span class="small valigntop">0%</span></div>';
116  print '<br><button type="button" style="display:none;" data-fileidentifier="" class="btn green-haze btn-circle cancelfileinput" id="filecancel">Cancel</button>';
117  print '<script src="'.DOL_URL_ROOT.'/includes/flowjs/flow.js"></script>';
118  print '<script>
119  jQuery(document).ready(function() {
120  var flow = new Flow({
121  target:"'.DOL_URL_ROOT.'/core/ajax/flowjs-server.php",
122  query:{module:"test", token:"'.newToken().'"},
123  testChunks:false
124  });
125  ';
126  print 'if(flow.support){
127  flow.assignBrowse(document.getElementById("buttonbigupload"));
128  flow.on("fileAdded", function(file, event){
129  console.log("Trigger event file added", file, event);
130  $("#filespan").text(file.name);
131  $("#filecancel").data("fileidentifier", file.uniqueIdentifier)
132  $("#filecancel").show()
133  $(".filepgbar").show();
134  $(".filepgbar").attr("id",file.uniqueIdentifier+"pgbar")
135  });
136  flow.on("filesSubmitted", function(array,message){
137  console.log("Trigger event file submitted");
138  flow.upload()
139  });
140  flow.on("progress", function(){
141  console.log("progress",flow.files);
142  flow.files.forEach(function(element){
143  console.log(element.progress());
144  width = Math.round(element.progress()*100)
145  width = width.toString()
146  $("#"+element.uniqueIdentifier+"pgbar").width(width+"%")
147  $("#"+element.uniqueIdentifier+"pgbar").children("span").text(width+"%")
148  });
149  });
150  flow.on("fileSuccess", function(file,message){
151  console.log("The file has been uploaded successfully",file,message);
152  });
153  $(".cancelfileinput").on("click", function(){
154  filename = $(this).data("fileidentifier");
155  file = flow.getFromUniqueIdentifier(filename);
156  file.cancel();
157  $("#"+file.uniqueIdentifier+"pgbar").hide();
158  console.log("We remove file "+filename);
159  $("#filespan").text("No file selected.");
160  $(this).hide();
161  })
162  flow.on("fileError", function(file, message){
163  console.log("Error on file upload",file, message);
164  $("#"+file.uniqueIdentifier+"pgbar").width(20+"%");
165  $("#"+file.uniqueIdentifier+"pgbar").children("span").text("ERROR UPLOAD");
166  });
167  }
168  })
169  ';
170  print '</script>';
171 } else {
172  print "If this message displays, please add flow.js and flow.min.js files which can be found here: https://github.com/flowjs/flow.js and place the js lib in htdocs/includes/flowjs/<br>\n";
173 }
174 
175 print '</div>';
176 
177 // End of page
178 llxFooter();
179 $db->close();
if(!defined('NOREQUIRESOC')) if(!defined('NOREQUIRETRAN')) if(!defined('NOTOKENRENEWAL')) if(!defined('NOREQUIREMENU')) if(!defined('NOREQUIREHTML')) if(!defined('NOREQUIREAJAX')) llxHeader()
Empty header.
Definition: wrapper.php:55
llxFooter()
Empty footer.
Definition: wrapper.php:69
Class to manage generation of HTML components Only common components must be here.
dol_get_first_day($year, $month=1, $gm=false)
Return GMT time for first day of a month or year.
Definition: date.lib.php:595
dol_now($mode='auto')
Return date for now.
newToken()
Return the value of token currently saved into session with name 'newtoken'.
usage($program, $header)
Print the usage when executing scripts from install/.
Definition: inc.php:94
accessforbidden($message='', $printheader=1, $printfooter=1, $showonlymessage=0, $params=null)
Show a message to say access is forbidden and stop program.