wiki.techinc.nl/includes/HTMLForm.php

167 lines
5.4 KiB
PHP

<?php
/**
* This file contain a class to easily build HTML forms as well as custom
* functions used by SpecialUserrights.php and SpecialGroups.php
* @package MediaWiki
*/
/**
* Class to build various forms
*
* @package MediaWiki
* @author jeluf, hashar
*/
class HTMLForm {
/** name of our form. Used as prefix for labels */
var $mName, $mRequest;
function HTMLForm( &$request ) {
$this->mRequest = $request;
}
/**
* @access private
* @param string $name Name of the fieldset.
* @param string $content 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";
}
/**
* @access private
* @param string $varname Name of the checkbox.
* @param boolean $checked 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";
}
/**
* @access private
* @param string $varname Name of the textbox.
* @param string $value Optional value (default empty)
* @param integer $size 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";
}
/**
* @access private
* @param string $varname Name of the radiobox.
* @param array $fields 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( $this->mName.'-'.$varname, $s );
}
/**
* @access private
* @param string $varname Name of the textareabox.
* @param string $value Optional value (default empty)
* @param integer $size 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";
}
/**
* @access private
* @param string $varname Name of the arraybox.
* @param integer $size 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 $index=>$element ) {
$s .= htmlspecialchars( $element )."\n";
}
}
}
return "<div><label>".wfMsg( $this->mName.'-'.$varname ).
"<textarea name=\"{$varname}\" rows=\"5\" cols=\"{$size}\">{$s}</textarea>\n";
}
} // end class
// functions used by SpecialUserrights.php and SpecialGroups.php
/** Build a select with all defined groups
* @param string $selectname Name of this element. Name of form is automaticly prefixed.
* @param array $selected Array of element selected when posted. Only multiples will show them.
* @param boolean $multiple A multiple elements select.
* @param integer $size Number of elements to be shown ignored for non-multiple (default 6).
* @param boolean $reverse If true, multiple select will hide selected elements (default false).
*/
function HTMLSelectGroups($selectname, $selectmsg, $selected=array(), $multiple=false, $size=6, $reverse=false) {
global $wgOut;
$groups =& Group::getAllGroups();
$out = wfMsg($selectmsg);
$out .= '<select name="'.$selectname;
if($multiple) { $out.='[]" multiple="multiple" size="'.$size; }
$out.= "\">\n";
foreach ( $groups as $id => $g ) {
if($multiple) {
// for multiple will only show the things we want
if(in_array($id, $selected) xor $reverse) {
$out .= '<option value="'.$id.'">'.$wgOut->parse( $g->getExpandedName() )."</option>\n";
}
} else {
$out .= '<option ';
if(in_array($id, $selected)) { $out .= 'selected="selected" '; }
$out .= 'value="'.$id.'">'.$wgOut->parse( $g->getExpandedName() )."</option>\n";
}
}
$out .= "</select>\n";
return $out;
}
/** Build a select with all existent rights
* @param array $selected Names(?) of user rights that should be selected.
* @return string HTML select.
*/
function HTMLSelectRights($selected='') {
global $wgAvailableRights;
$out = '<select name="editgroup-getrights[]" multiple="multiple">';
$groupRights = explode(',',$selected);
foreach($wgAvailableRights as $right) {
// check box when right exist
if(in_array($right, $groupRights)) { $selected = 'selected="selected" '; }
else { $selected = ''; }
$out .= '<option value="'.$right.'" '.$selected.'>'.$right."</option>\n";
}
$out .= "</select>\n";
return $out;
}
?>