| 1 |
jonen |
1.1 |
<?php |
| 2 |
|
|
/** |
| 3 |
|
|
* This file holds the babw Standard Form Content |
| 4 |
|
|
* which is a child of the FormContent object. |
| 5 |
|
|
* This provides a "standard" look for the outer |
| 6 |
|
|
* wrapper for all forms. |
| 7 |
|
|
* All forms have a Save and Cancel button, as well |
| 8 |
|
|
* as a Confirmation of the Form. |
| 9 |
|
|
* |
| 10 |
|
|
* |
| 11 |
jonen |
1.4 |
* $Id: StandardFormContent.inc,v 1.9.2.2 2005/05/12 01:24:02 hemna Exp $ |
| 12 |
jonen |
1.1 |
* |
| 13 |
jonen |
1.4 |
* @author Walter A. Boring IV <waboring@newsblob.com> |
| 14 |
jonen |
1.1 |
* @package phpHtmlLib |
| 15 |
|
|
* @subpackage FormProcessing |
| 16 |
|
|
*/ |
| 17 |
|
|
|
| 18 |
|
|
/** |
| 19 |
|
|
* This is a child of the FormContent class to |
| 20 |
|
|
* provide a 'standard' look and feel for forms. |
| 21 |
|
|
* It also enables a confirmation 'page' by default. |
| 22 |
|
|
* |
| 23 |
|
|
* @package phpHtmlLib |
| 24 |
|
|
* @subpackage FormProcessing |
| 25 |
|
|
*/ |
| 26 |
|
|
class StandardFormContent extends FormContent { |
| 27 |
|
|
|
| 28 |
|
|
|
| 29 |
|
|
/** |
| 30 |
|
|
* The title used in the wrapping table |
| 31 |
|
|
* |
| 32 |
|
|
*/ |
| 33 |
|
|
var $_form_title = ""; |
| 34 |
|
|
|
| 35 |
|
|
/** |
| 36 |
|
|
* the InfoTable wrapper that holds |
| 37 |
|
|
* all fields. |
| 38 |
|
|
*/ |
| 39 |
|
|
var $_infotable = NULL; |
| 40 |
|
|
|
| 41 |
|
|
|
| 42 |
|
|
function StandardFormContent($title, $cancel_action=NULL, |
| 43 |
|
|
$width="100%") { |
| 44 |
|
|
$this->FormContent($width, $cancel_action); |
| 45 |
|
|
$this->set_form_title( $title ); |
| 46 |
|
|
//each form has a confirmation |
| 47 |
|
|
$this->set_confirm(TRUE); |
| 48 |
|
|
} |
| 49 |
|
|
|
| 50 |
|
|
/** |
| 51 |
|
|
* this method sets the form title |
| 52 |
|
|
* which is used to wrap the entire form |
| 53 |
|
|
* |
| 54 |
|
|
* @param string - the form title |
| 55 |
|
|
*/ |
| 56 |
|
|
function set_form_title($title) { |
| 57 |
|
|
$this->_form_title = $title; |
| 58 |
|
|
} |
| 59 |
|
|
|
| 60 |
|
|
/** |
| 61 |
|
|
* this builds the main wrapper for the |
| 62 |
|
|
* form fields and ads the Save and Cancel buttons |
| 63 |
|
|
* |
| 64 |
|
|
* @param array - the form data |
| 65 |
|
|
* @param array - the form error fields (if any) |
| 66 |
|
|
* @return InfoTable widget object |
| 67 |
|
|
*/ |
| 68 |
|
|
function form() { |
| 69 |
|
|
$title = $this->_form_title._HTML_SPACE; |
| 70 |
|
|
$title .="( ".$this->_required_field_marker." ".$this->_required_field_text." )"; |
| 71 |
jonen |
1.2 |
$this->_infotable = new InfoTable($title, $this->_width); |
| 72 |
jonen |
1.1 |
$this->_infotable->set_cellpadding(0); |
| 73 |
|
|
|
| 74 |
|
|
//ok call the Child class to add the |
| 75 |
|
|
//form fields inside of form blocks |
| 76 |
jonen |
1.2 |
$this->form_content(); |
| 77 |
jonen |
1.1 |
|
| 78 |
|
|
$this->_infotable->add_row( $this->form_content_buttons() ); |
| 79 |
|
|
return $this->_infotable; |
| 80 |
|
|
} |
| 81 |
|
|
|
| 82 |
|
|
|
| 83 |
|
|
/** |
| 84 |
|
|
* Child class MUST override this |
| 85 |
|
|
* to provide the form fields |
| 86 |
|
|
* |
| 87 |
jonen |
1.2 |
* @return object |
| 88 |
jonen |
1.1 |
*/ |
| 89 |
jonen |
1.2 |
function form_content() { |
| 90 |
jonen |
1.1 |
user_error("StandardFormContent::form_content() - CHILD MUST OVERRIDE "); |
| 91 |
|
|
return NULL; |
| 92 |
|
|
} |
| 93 |
|
|
|
| 94 |
|
|
/** |
| 95 |
|
|
* This function is used to show an intermediary |
| 96 |
|
|
* confirmation page. Use this function to |
| 97 |
|
|
* show a confirmation of the data that was |
| 98 |
|
|
* submitted by the user. |
| 99 |
|
|
* This will get called after all of the |
| 100 |
|
|
* form data was successfully validated. |
| 101 |
|
|
* All of the form data will automatically |
| 102 |
|
|
* be created as hidden form fields. All you |
| 103 |
|
|
* have to do is show the data, and a confirm |
| 104 |
|
|
* submit button. |
| 105 |
|
|
* |
| 106 |
jonen |
1.2 |
* @param string - the title for the table |
| 107 |
|
|
* @param boolean - show the action buttons? |
| 108 |
jonen |
1.1 |
* @return mixed - either raw html, or some |
| 109 |
|
|
* container HTMLTag object. |
| 110 |
|
|
*/ |
| 111 |
jonen |
1.2 |
function form_confirm( $title = "Form Confirmation", $show_buttons=TRUE ) { |
| 112 |
|
|
$title = $title._HTML_SPACE; |
| 113 |
jonen |
1.4 |
|
| 114 |
|
|
//only show this if we aren't readonly |
| 115 |
|
|
//if we are in read only mode...required doesn't make sense |
| 116 |
|
|
if (!$this->is_readonly()) { |
| 117 |
|
|
$title .="( ".$this->_required_field_marker." ".$this->_required_field_text." )"; |
| 118 |
|
|
} |
| 119 |
|
|
|
| 120 |
jonen |
1.1 |
$table = new InfoTable($title, $this->_width); |
| 121 |
|
|
|
| 122 |
|
|
$this->build_confirm_table( $table ); |
| 123 |
|
|
|
| 124 |
|
|
//now add the confirmation button |
| 125 |
|
|
$td = new TDtag(array("colspan" => 2, |
| 126 |
|
|
"class" => "contentnovertical", |
| 127 |
|
|
"align" => "center"), |
| 128 |
|
|
$this->add_action("Confirm"), |
| 129 |
|
|
_HTML_SPACE, |
| 130 |
|
|
$this->add_action("Edit")); |
| 131 |
|
|
|
| 132 |
|
|
if ($this->_cancel_action) { |
| 133 |
|
|
$td->add(_HTML_SPACE, $this->add_cancel()); |
| 134 |
|
|
} |
| 135 |
|
|
|
| 136 |
jonen |
1.2 |
if ($show_buttons) { |
| 137 |
|
|
$table->add_row( $td ); |
| 138 |
|
|
} |
| 139 |
jonen |
1.1 |
|
| 140 |
|
|
return $table; |
| 141 |
|
|
} |
| 142 |
|
|
|
| 143 |
|
|
|
| 144 |
|
|
/** |
| 145 |
|
|
* This method handles the form action. |
| 146 |
|
|
* |
| 147 |
|
|
* @return boolean TRUE = success |
| 148 |
|
|
* FALSE = failed. |
| 149 |
|
|
*/ |
| 150 |
|
|
function form_action() { |
| 151 |
|
|
switch ($this->get_action()) { |
| 152 |
|
|
case "Edit": |
| 153 |
|
|
return FALSE; |
| 154 |
|
|
break; |
| 155 |
|
|
|
| 156 |
|
|
case "Confirm": |
| 157 |
|
|
return $this->confirm_action(); |
| 158 |
|
|
break; |
| 159 |
|
|
} |
| 160 |
|
|
} |
| 161 |
|
|
|
| 162 |
|
|
/** |
| 163 |
|
|
* This method is responsible for handling the |
| 164 |
|
|
* confirmation page's Confirm action. |
| 165 |
|
|
*/ |
| 166 |
|
|
function confirm_action() { |
| 167 |
|
|
user_error("FormContent::confirm_action() - Child class must override"); |
| 168 |
|
|
return FALSE; |
| 169 |
|
|
} |
| 170 |
|
|
|
| 171 |
|
|
|
| 172 |
|
|
/** |
| 173 |
|
|
* This function is used to build the standard |
| 174 |
|
|
* buttons for a form. |
| 175 |
|
|
* |
| 176 |
|
|
* @return ButtonPanel |
| 177 |
|
|
*/ |
| 178 |
|
|
function form_content_buttons() { |
| 179 |
|
|
$div = new DIVtag( array("style" => "background-color: #eeeeee;". |
| 180 |
|
|
"padding-top:5px;padding-bottom:5px", |
| 181 |
|
|
"align"=>"center", "nowrap"), |
| 182 |
|
|
$this->add_action("Save"), |
| 183 |
|
|
_HTML_SPACE, |
| 184 |
|
|
$this->add_cancel() ); |
| 185 |
|
|
return $div; |
| 186 |
|
|
} |
| 187 |
|
|
|
| 188 |
|
|
|
| 189 |
|
|
/** |
| 190 |
|
|
* This function is used to add a block of |
| 191 |
|
|
* form fields inside a table to this form. |
| 192 |
|
|
* This table will automatically get wrapped |
| 193 |
|
|
* inside a fieldset with a legend tag |
| 194 |
|
|
* to label the block |
| 195 |
|
|
* |
| 196 |
|
|
* @param string - the title for the fieldset |
| 197 |
|
|
* @param TABLEtag - the form fields inside a table |
| 198 |
|
|
*/ |
| 199 |
|
|
function add_form_block( $title=NULL, &$table ) { |
| 200 |
|
|
$this->_infotable->add_row( $this->build_form_block( $title, $table ) ); |
| 201 |
|
|
} |
| 202 |
|
|
|
| 203 |
|
|
|
| 204 |
|
|
/** |
| 205 |
|
|
* this builds a fieldset and legend and adds the |
| 206 |
|
|
* form table to it. |
| 207 |
|
|
* |
| 208 |
|
|
* @param string - the legend string |
| 209 |
|
|
* @param TABLEtag - the form fields in a table |
| 210 |
|
|
* @return FIELDSETtag |
| 211 |
|
|
*/ |
| 212 |
|
|
function &build_form_block( $title=NULL, &$content ) { |
| 213 |
|
|
$div = &$this->_div_wrapper( ); |
| 214 |
|
|
|
| 215 |
|
|
if ($title != NULL) { |
| 216 |
|
|
$fs = html_fieldset( $title ); |
| 217 |
|
|
$fs->add_reference( $content ); |
| 218 |
|
|
$div->add_reference( $fs ); |
| 219 |
|
|
} else { |
| 220 |
|
|
$div->add_reference( $content ); |
| 221 |
|
|
} |
| 222 |
|
|
return $div; |
| 223 |
|
|
} |
| 224 |
|
|
|
| 225 |
|
|
function &_div_wrapper() { |
| 226 |
|
|
$div = html_div(); |
| 227 |
|
|
$div->set_style("background-color: #eeeeee;padding:5px;"); |
| 228 |
|
|
return $div; |
| 229 |
|
|
} |
| 230 |
|
|
|
| 231 |
|
|
function _form_content_table($width="100%", $border=0, $cellspacing=0, |
| 232 |
|
|
$cellpadding=3) { |
| 233 |
|
|
$table = html_table($width,$border,$cellspacing,$cellpadding); |
| 234 |
|
|
return $table; |
| 235 |
|
|
} |
| 236 |
|
|
} |
| 237 |
|
|
?> |