summaryrefslogtreecommitdiff
path: root/includes/HTMLForm.php
blob: 69ec1007c262ae32cc5fdc603e506816facadae2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
<?php
/**
 * This file contain a class to easily build HTML forms
 */

/**
 * Class to build various forms
 *
 * @author jeluf, hashar
 */
class HTMLForm {
	/** name of our form. Used as prefix for labels */
	var $mName, $mRequest;

	function HTMLForm( &$request ) {
		$this->mRequest = $request;
	}

	/**
	 * @private
	 * @param $name String: name of the fieldset.
	 * @param $content String: HTML content to put in.
	 * @return string HTML fieldset
	 */
	function fieldset( $name, $content ) {
		return "<fieldset><legend>".wfMsg($this->mName.'-'.$name)."</legend>\n" .
			$content . "\n</fieldset>\n";
	}

	/**
	 * @private
	 * @param $varname String: name of the checkbox.
	 * @param $checked Boolean: set true to check the box (default False).
	 */
	function checkbox( $varname, $checked=false ) {
		if ( $this->mRequest->wasPosted() && !is_null( $this->mRequest->getVal( $varname ) ) ) {
			$checked = $this->mRequest->getCheck( $varname );
		}
		return "<div><input type='checkbox' value=\"1\" id=\"{$varname}\" name=\"wpOp{$varname}\"" .
			( $checked ? ' checked="checked"' : '' ) .
			" /><label for=\"{$varname}\">". wfMsg( $this->mName.'-'.$varname ) .
			"</label></div>\n";
	}

	/**
	 * @private
	 * @param $varname String: name of the textbox.
	 * @param $value String: optional value (default empty)
	 * @param $size Integer: optional size of the textbox (default 20)
	 */
	function textbox( $varname, $value='', $size=20 ) {
		if ( $this->mRequest->wasPosted() ) {
			$value = $this->mRequest->getText( $varname, $value );
		}
		$value = htmlspecialchars( $value );
		return "<div><label>". wfMsg( $this->mName.'-'.$varname ) .
			"<input type='text' name=\"{$varname}\" value=\"{$value}\" size=\"{$size}\" /></label></div>\n";
	}

	/**
	 * @private
	 * @param $varname String: name of the radiobox.
	 * @param $fields Array: Various fields.
	 */
	function radiobox( $varname, $fields ) {
		foreach ( $fields as $value => $checked ) {
			$s .= "<div><label><input type='radio' name=\"{$varname}\" value=\"{$value}\"" .
				( $checked ? ' checked="checked"' : '' ) . " />" . wfMsg( $this->mName.'-'.$varname.'-'.$value ) .
				"</label></div>\n";
		}
		return $this->fieldset( $varname, $s );
	}

	/**
	 * @private
	 * @param $varname String: name of the textareabox.
	 * @param $value String: optional value (default empty)
	 * @param $size Integer: optional size of the textarea (default 20)
	 */
	function textareabox ( $varname, $value='', $size=20 ) {
		if ( $this->mRequest->wasPosted() ) {
			$value = $this->mRequest->getText( $varname, $value );
		}
		$value = htmlspecialchars( $value );
		return '<div><label>'.wfMsg( $this->mName.'-'.$varname ).
		       "<textarea name=\"{$varname}\" rows=\"5\" cols=\"{$size}\">$value</textarea></label></div>\n";
	}

	/**
	 * @private
	 * @param $varname String: name of the arraybox.
	 * @param $size Integer: Optional size of the textarea (default 20)
	 */
	function arraybox( $varname , $size=20 ) {
		$s = '';
		if ( $this->mRequest->wasPosted() ) {
			$arr = $this->mRequest->getArray( $varname );
			if ( is_array( $arr ) ) {
				foreach ( $_POST[$varname] as $element ) {
					$s .= htmlspecialchars( $element )."\n";
				}
			}
		}
		return "<div><label>".wfMsg( $this->mName.'-'.$varname ).
			"<textarea name=\"{$varname}\" rows=\"5\" cols=\"{$size}\">{$s}</textarea>\n";
	}
} // end class