form_functions.php
上传用户:gzy2002
上传日期:2010-02-11
资源大小:1785k
文件大小:18k
源码类别:

电子政务应用

开发平台:

Java

  1. <?php
  2. // +-------------------------------------------------------------+
  3. // | DeskPRO v [2.0.1 Production]
  4. // | Copyright (C) 2001 - 2004 Headstart Solutions Limited
  5. // | Supplied by WTN-WDYL
  6. // | Nullified by WTN-WDYL
  7. // | Distribution via WebForum, ForumRU and associated file dumps
  8. // +-------------------------------------------------------------+
  9. // | DESKPRO IS NOT FREE SOFTWARE
  10. // +-------------------------------------------------------------+
  11. // | License ID : Full Enterprise License =) ...
  12. // | License Owner : WTN-WDYL Team
  13. // +-------------------------------------------------------------+
  14. // | $RCSfile: form_functions.php,v $
  15. // | $Date: 2004/02/10 01:34:25 $
  16. // | $Revision: 1.40 $
  17. // +-------------------------------------------------------------+
  18. // | File Details:
  19. // | - Utility functions for HTML form widget generation.
  20. // +-------------------------------------------------------------+
  21. error_reporting(E_ALL ^ E_NOTICE);
  22. #################################################################################################
  23. #  FORM_x FUNCTIONS 
  24. #################################################################################################
  25. /*****************************************************
  26. function html_image
  27. -----DESCRIPTION: -----------------------------------
  28. creates an image
  29. -----ARGUMENTS: -------------------------------------
  30. filename Name of the image on-disk
  31. alt Alternate text to display for the image
  32. width Width of the image
  33. height Height of the image
  34. javascript JavaScript to include in the <IMG> tag
  35. -----RETURNS:----------------------------------------
  36. the html for the form field
  37. *****************************************************/
  38. function html_image($name, $alt='', $width='', $height='', $js='') {
  39. if (!$width or $height) {
  40. $size = @getimagesize(LOC_IMAGES . $name);
  41. if (!$width OR $width == 0) {
  42. $width = $size[0];
  43. }
  44. if (!$height OR $height == 0) {
  45. $height = $size[1];
  46. }
  47. }
  48. $html = "<img src="" . constant('LOC_IMAGES') . $name . """;
  49. if ($alt) {
  50. $html .= " alt="$alt" title="$alt"";
  51. }
  52. if ($width) {
  53. $html .= " width="$width"";
  54. }
  55. if ($height) {
  56. $html .= " height="$height"";
  57. }
  58. if ($js) {
  59. $html .= " $js";
  60. }
  61. $html .= " border="0" />";
  62. return $html;
  63. }
  64. /*****************************************************
  65. function form_file
  66. -----DESCRIPTION: -----------------------------------
  67. creates a file form element
  68. -----ARGUMENTS: -------------------------------------
  69. name : makes the name of the file 
  70.   attachment.name (ie the name always 
  71.   starts with attachment)
  72. -----RETURNS:----------------------------------------
  73. the html for the form field
  74. *****************************************************/
  75. function form_file($name = '') {
  76. $name = 'attachment' . $name;
  77. return "<input type="file" name="$name" />";
  78. }
  79. /*****************************************************
  80. function form_input
  81. -----DESCRIPTION: -----------------------------------
  82. creates a file form element
  83. htmlspecialchars_uni of the value
  84. -----ARGUMENTS: -------------------------------------
  85. name : the name of the textfield
  86. value : the default value for the textfield
  87. size (DEF=30) : the length of the textfield
  88. array : if the textfield is part of an array, ie array[fieldname]
  89. override : if we do not want to htmlspecialchars_uni() the value
  90. js : any extra code in the <input> (for example js)
  91. -----RETURNS:----------------------------------------
  92. the html for the form field
  93. *****************************************************/
  94. function form_input($name, $value=NULL, $size="30", $array='', $override = NULL, $extra='') {
  95. if ($value != NULL) {
  96. if (!$override) {
  97. $value = htmlspecialchars_uni($value);
  98. }
  99. }
  100. if ($array) {
  101. $name = $array . "[" . $name . "]";
  102. }
  103. return "<input type="text" name="$name" value="$value" size="$size" $extra >";
  104. }
  105. /*****************************************************
  106. function form_password
  107. -----DESCRIPTION: -----------------------------------
  108. creates a file form element
  109. htmlspecialchars_uni of the value
  110. questionable use of value, not really secure
  111. -----ARGUMENTS: -------------------------------------
  112. name : the name of the password field
  113. value : the default value for the password field
  114. size (DEF=30) : the length of the password field
  115. array : if the textfield is part of an array, ie array[fieldname]
  116. -----RETURNS:----------------------------------------
  117. the html for the password field
  118. *****************************************************/
  119. function form_password($name, $value="", $size="30", $array='', $override = NULL) {
  120. if ($value) {
  121. if (!$override) {
  122. $value = htmlspecialchars_uni($value);
  123. }
  124. }
  125. if ($array) {
  126. $name = $array . "[" . $name . "]";
  127. }
  128. return "<input type="password" name="$name" value="$value" size="$size">";
  129. }
  130. /*****************************************************
  131. function form_select
  132. -----DESCRIPTION: -----------------------------------
  133. - creates a drop down list
  134. -----ARGUMENTS: -------------------------------------
  135. name : the name of the select field
  136. array : the array of data for the select field. Can be associative or not
  137. to_array : if the select field is part of an array, ie array[fieldname]
  138. start : the default selected value
  139. same : makes the value the same as the displayed value, otherwise it would use either the specified 
  140.   values if an associatve array or would use incrementing numbers if standard array
  141. extra : * needs to be looked into, -1 is probably a better value here * creates a "None Selected" row with the value -----
  142. size : if specified makes the select a multiselect form element and determines the size (vertically)
  143. top : add some custom code in the <select > element. Generally used for javascript actions
  144. override : override htmlspecialchars() call
  145. id : Element ID tag value
  146. disabled : Show the element as a disabled one
  147. -----RETURNS:----------------------------------------
  148. the html for the select field
  149. *****************************************************/
  150. function form_select($name, $array, $to_array='', $start='', $same='0', $extra='', $size='', $top='', $override = NULL, $id = NULL, $disabled = NULL) {
  151. if ($to_array != "") {
  152. $name = $to_array . "[" . $name . "]";
  153. }
  154. if ($size) {
  155. $name = $name . "[]";
  156. }
  157. if ($id) {
  158. $id = " id="$id"";
  159. }
  160. if ($disabled) {
  161. $disabled = " DISABLED=disabled ";
  162. $name = $name."_disable";
  163. }
  164. if ($size) {
  165. $html .= "<select name="$name" size="$size" $disabled $top MULTIPLE $id>n";
  166. } else {
  167. $html .= "<select name="$name" $disabled $id $top>n";
  168. }
  169. if ($extra) {
  170. $html .= "<option value="-----">None Selected</option>n";
  171. }
  172. if (is_array($array)) {
  173. while (list ($key, $val) = each ($array)) {
  174. if ($same) {
  175. $key = $val;
  176. }
  177. if (!$override) {
  178. $key = htmlspecialchars_uni($key);
  179. $val = htmlspecialchars_uni($val);
  180. }
  181. if (is_array($start)) {
  182. if (in_array($key, $start)) {
  183. $html .= "<option selected=selected value="$key">$val</option>n";
  184. } else {
  185. $html .= "<option value="$key">$val</option>n";
  186. }
  187. } else {
  188. if ($key == $start) {
  189. $html .= "<option selected=selected value="$key">$val</option>n";
  190. } else {
  191. $html .= "<option value="$key">$val</option>n";
  192. }
  193. }
  194. }
  195. }
  196. $html .= "</select>n";
  197. return $html;
  198. }
  199. /*****************************************************
  200. function form_radio
  201. -----DESCRIPTION: -----------------------------------
  202. - creates radio buttons
  203. -----ARGUMENTS: -------------------------------------
  204. name : array of names
  205. value : array of values
  206. start : the value that is preselected
  207. array : if the radio elements are part of an array, ie array[fieldname]
  208. extra : extra code to go in the <input > fields. Used for js actions
  209. -----RETURNS:----------------------------------------
  210. the html for the radio fields
  211. *****************************************************/
  212. function form_radio($name, $value, $start='', $array='', $extra='', $override = NULL) {
  213. if ($array) {
  214. $name = $array . "[" . $name . "]";
  215. }
  216. $num_elements = count($value);
  217. $form = "<table>";
  218. for ($idx = 0; $idx < $num_elements; ++$idx) {
  219. $form .= "<tr><td>$r[normalfont]$value[$idx]:</font></td><td>";
  220. if (!$override) {
  221. $value[$idx] = htmlspecialchars_uni($value[$idx]);
  222. }
  223. if ($value[$idx] == $start) {
  224. $form .= "<input type="radio" name="$name" value="$value[$idx]" checked $extra></td></tr>n";
  225. } else {
  226. $form .= "<input type="radio" name="$name" value="$value[$idx]" $extra></td></tr>n";
  227. }
  228. }
  229. $form .= "</table>";
  230. return $form;
  231. }
  232. /*****************************************************
  233. function form_radio_single
  234. -----DESCRIPTION: -----------------------------------
  235. - creates a single radio button
  236. -----ARGUMENTS: -------------------------------------
  237. name : name
  238. value : value
  239. start : the value that is preselected
  240. extra : extra code to go in the <input > fields. Used for js actions
  241. -----RETURNS:----------------------------------------
  242. the html for the radio field
  243. *****************************************************/
  244. function form_radio_single($name, $value, $start='', $extra='', $override = NULL) {
  245. if ($value) {
  246. if (!$override) {
  247. $value = htmlspecialchars_uni($value);
  248. }
  249. }
  250. if ($start) {
  251. return "<input type="radio" name="$name" value="$value" checked $extra />";
  252. } else {
  253. return "<input type="radio" name="$name" value="$value"$extra />";
  254. }
  255. }
  256. /*****************************************************
  257. function form_radio_yn
  258. -----DESCRIPTION: -----------------------------------
  259. - creates a yes/no radio button set
  260. - these can be replaced with a checkbox, but are often more explanative.
  261. -----ARGUMENTS: -------------------------------------
  262. name : name
  263. array : value
  264. yes : the value that is preselected
  265. empty : add a 3rd "empty" option, ie neither Yes or No
  266. extra : extra code to go in the <input > fields. Used for js actions
  267. -----RETURNS:----------------------------------------
  268. the html for the radio fields
  269. *****************************************************/
  270. function form_radio_yn($name, $array='', $yes='0', $empty='0', $extra='') {
  271. if ($array) {
  272. $name = $array . "[" . $name . "]";
  273. }
  274. if ($empty) {
  275. if ($yes == "1") {
  276. $html .= "<b>";
  277. $html .= "Either: <input type="radio" name="$name" value="xxxNULLxxx" $extra>n";
  278. $html .= "Yes: <input type="radio" name="$name" value="1" checked  $extra>n";
  279. $html .= "No: <input type="radio" name="$name" value="0"  $extra>n";
  280. $html .= "</b>";
  281. } elseif ($yes == "0") {
  282. $html .= "<b>";
  283. $html .= "Either: <input type="radio" name="$name" value="xxxNULLxxx" $extra>n";
  284. $html .= "Yes: <input type="radio" name="$name" value="1" $extra>n";
  285. $html .= "No: <input type="radio" name="$name" value="0" checked $extra>n";
  286. $html .= "</b>";
  287. } else {
  288. $html .= "<b>";
  289. $html .= "Either: <input type="radio" name="$name" value="xxxNULLxxx" checked $extra>n";
  290. $html .= "Yes: <input type="radio" name="$name" value="1" $extra>n";
  291. $html .= "No: <input type="radio" name="$name" value="0" $extra>n";
  292. $html .= "</b>";
  293. }
  294. } else {
  295. if ($yes) {
  296. $html .= "<b>";
  297. $html .= "Yes: <input type="radio" name="$name" value="1" checked $extra>n";
  298. $html .= "No: <input type="radio" name="$name" value="0" $extra>n";
  299. $html .= "</b>";
  300. } else {
  301. $html .= "<b>";
  302. $html .= "Yes: <input type="radio" name="$name" value="1" $extra>n";
  303. $html .= "No: <input type="radio" name="$name" value="0" checked $extra>n";
  304. $html .= "</b>";
  305. }
  306. }
  307. return $html;
  308. }
  309. ###################### function form_checkbox() #######################
  310. function form_checkbox($name, $array, $array2, $override = NULL) {
  311. $name = $name . "[]";
  312. $num_elements = count($array);
  313. for ($idx = 0; $idx < $num_elements; ++$idx) {
  314. if (!$override) {
  315. $array[$idx] = htmlspecialchars_uni($array[$idx]);
  316. }
  317. $form .= "<br /><input type="checkbox" name="$name" value="$array[$idx]" checked>$array2[$idx]";
  318. }
  319. return $form;
  320. }
  321. ###################### function form_submit() #######################
  322. function form_submit($value, $name='submit', $override = NULL, $image = NULL) {
  323. if (!$override) {
  324. $value = htmlspecialchars_uni($value);
  325. }
  326. if ($image) {
  327. $image = " src="$image"";
  328. $type = "image";
  329. } else {
  330. $type = "submit";
  331. }
  332. return "<input type="$type" name="$name" value="$value"$image>";
  333. }
  334. ###################### function form_checkbox_single() #######################
  335. function form_checkbox_single($name, $value, $checked=NULL, $arrayto='', $override = NULL) {
  336. if (!$override) {
  337. $value = htmlspecialchars_uni($value);
  338. }
  339. if ($arrayto) {
  340. $name = $arrayto . "[" . $name . "]";
  341. }
  342. if ($checked) {
  343. $form .= "<input type="checkbox" name="$name" value="$value" checked>";
  344. } else {
  345. $form .= "<input type="checkbox" name="$name" value="$value">";
  346. }
  347. return $form;
  348. }
  349. ###################### function form_date() #######################
  350. /*
  351. $name : name of the form generated
  352. $array : if the form should be submitted as part of an array
  353. $start : prefill with a unix timestamp
  354. $make_start : prefill with current date
  355. $empty : add blank options for an unset date
  356. $yyyymmdd : prefill with a yyyymmdd date
  357. $return : array of d/m/y only return those found
  358. */
  359. function form_date($name, $array='', $start='', $make_start='', $empty='', $yyyymmdd='', $return = array('y', 'm', 'd')) {
  360. if ($start) {
  361. $yyyymmdd = date('Y-m-d', $start);
  362. }
  363. if ($yyyymmdd) {
  364. $temp_date = explode('-', $yyyymmdd);
  365. $start = array();
  366. $start[day] = $temp_date[2];
  367. $start[month] = $temp_date[1];
  368. $start[year] = $temp_date[0];
  369. } elseif ($make_start == "1") {
  370. $temp_date = getdate(mktime());
  371. $start = array();
  372. $start[day] = $temp_date[mday];
  373. $start[month] = $temp_date[mon];
  374. $start[year] = $temp_date[year];
  375. }
  376. $day = make_numberarray(1, 31);
  377. $month = array('1' => 'Jan', '2' => 'Feb', '3' => 'Mar', '4' => 'Apr', '5' => 'May', '6' => 'Jun', '7' => 'Jul', '8' => 'Aug', '9' => 'Sep', '10' => 'Oct', '11' => 'Nov', '12' => 'Dec');
  378. $year = array('2000', '2001', '2002', '2003', '2004', '2005', '2006', '2007', '2008', '2009', '2010', '2011', '2012', '2013', '2014', '2015', '2016', '2017', '2018', '2019', '2020');
  379. if ($empty) {
  380. array_unshift_keys($day, '0', '');
  381. array_unshift_keys($month, '0', '');
  382. array_unshift_keys($year, '0', '');
  383. }
  384. if (in_array('d', $return)) {
  385. $name_bit = "d" . $name;
  386. $html = form_select($name_bit, $day, $array, $start[day], '1');
  387. }
  388. if (in_array('m', $return)) {
  389. $name_bit = "m" . $name;
  390. $html .= form_select($name_bit, $month, $array, $start[month], '');
  391. }
  392. if (in_array('y', $return)) {
  393. $name_bit = "y" . $name;
  394. $html .= form_select($name_bit, $year, $array, $start[year], '1');
  395. }
  396. return $html;
  397. }
  398. /*****************************************************
  399. function form_date_year
  400. -----DESCRIPTION-------------------------------------
  401. Emit a drop-down form widget containing years
  402. ranged from 2000 to 2020, optionally with a
  403. specific year already selected.
  404. -----ARGUMENTS---------------------------------------
  405. name : Element name (in-HTML)
  406. year : Year to pre-select (default is 2003)
  407. -----RETURNS:----------------------------------------
  408. The HTML to generate the widget
  409. *****************************************************/
  410. function form_date_year($name, $sel_year = '2003') {
  411. $year = array('2000', '2001', '2002', '2003', '2004', '2005', '2006', '2007', '2008', '2009', '2010', '2011', '2012', '2013', '2014', '2015', '2016', '2017', '2018', '2019', '2020');
  412. $html = form_select($name, $year, NULL, $sel_year, 1);
  413. return $html;
  414. }
  415. ###################### function form_time() #######################
  416. function form_time($name, $make_start=NULL, $twelve='') {
  417. if ($make_start) {
  418. $make_start = split(':', $make_start);
  419. $start_hours = $make_start[0];
  420. $start_mins = $make_start[1];
  421. $start_secs = $make_start[2];
  422. }
  423. if ($twelve) {
  424. $hours = make_numberarray(1, 12);
  425. if ($start_hours > 12) {
  426. $start_hours -= 12;
  427. }
  428. } else {
  429. $hours = make_numberarray(0, 23);
  430. }
  431. $minutes = make_numberarray(0, 59);
  432. $name_bit = "h" . $name;
  433. $html = form_select($name_bit, $hours, $array, $start_hours, '1');
  434. $html .= " : ";
  435. $name_bit = "m" . $name;
  436. $html .= form_select($name_bit, $minutes, $array, $start_mins, '');
  437. if ($twelve) {
  438. $name_bit = "twelve" . $name;
  439. $html .= form_select($name_bit, array('AM' => 'AM', 'PM' => 'PM'));
  440. }
  441. return $html;
  442. }
  443. ###################### function form_textarea() #######################
  444. /* - create a text area
  445. - the $to_array is used if we want post data to be sent as part of an array
  446. */
  447. function form_textarea($name, $cols='30', $rows='5', $value='', $to_array='', $override = NULL, $extra='') {
  448. if (!$override) {
  449. $value = htmlspecialchars_uni($value);
  450. }
  451. if ($cols == "") $cols = 30;
  452. if ($rows == "") $rows = 5;
  453. if ($to_array != "") {
  454. $name = $to_array . "[" . $name . "]";
  455. }
  456. $temp = "<textarea name="$name" cols="$cols" rows="$rows" $extra>$value</textarea>n";
  457. return $temp;
  458. }
  459. ###################### function form_hidden() #######################
  460. function form_hidden($name, $value, $arrayto='', $override = NULL) {
  461. if ($arrayto) {
  462. $name = $arrayto . "[" . $name . "]";
  463. }
  464. if (!$override) {
  465. if (is_string($value)) {
  466. $value = htmlspecialchars_uni($value);
  467. }
  468. }
  469. return "<input type="hidden" name="$name" value="$value">n";
  470. }
  471. ###################### function form_button() #######################
  472. function form_button($value, $js) {
  473. return "<input type="button" name="$value" value="$value" $js >";
  474. }
  475. ################### function htmlspecialchars_uni($data) ##################
  476. // This function can be safely run on strings that have already been
  477. // passed through htmlspecialchars_uni(); it leaves existing "&amp;" style
  478. // entities alone.
  479. function htmlentities2($data) {
  480. $translation_table = get_html_translation_table (HTML_ENTITIES,ENT_QUOTES);
  481. $translation_table[chr(38)] = '&';
  482. return preg_replace("/&(?![A-Za-z]{0,4}w{2,3};|#[0-9]{2,3};)/","&amp;" , strtr($data, $translation_table));
  483. }