/[cvs]/nfo/php/libs/com.newsblob.phphtmllib/examples/form4.php
ViewVC logotype

Contents of /nfo/php/libs/com.newsblob.phphtmllib/examples/form4.php

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.1 - (show annotations)
Thu May 6 16:57:23 2004 UTC (20 years, 2 months ago) by jonen
Branch: MAIN
CVS Tags: HEAD
 updated all to v2.4.1 - Apr 01, 2004

1 <?php
2
3 /**
4 * This example illustrates the use of the master slave element
5 *
6 *
7 * $Id: form4.php,v 1.2 2004/04/01 17:23:24 hemna Exp $
8 *
9 * @author Sumedh Thakar <sumedh_thakar@yahoo.com>
10 * @package phpHtmlLib
11 * @subpackage form-examples
12 * @version 2.2.0
13 *
14 */
15
16 /**
17 * Include the phphtmllib libraries
18 *
19 */
20 include("includes.inc");
21
22 /**
23 * Include the Form Processing objects
24 *
25 */
26 include_once($phphtmllib."/form/includes.inc");
27
28
29 //use the class we defined from
30
31 include_once("MyLayoutPage.inc");
32
33 /**
34 * A simple class to be the master. It contains a list of countries and the acceptable states for each county.
35 *
36 * @author Sumedh Thakar <sumedh_thakar@yahoo.com>
37 * @package phpHtmlLib
38 * @subpackage form-examples
39 */
40
41 class FECountryListMaster extends FEListBoxMaster {
42 /**
43 * The states array format "United States" => array ("code" => "US",
44 * "slave" => Array("California" => "CA")
45 * )
46 * if a seperate "code" value is not given then the array key (country name) is used
47 *
48 * @var array
49 */
50 var $_countries = array("Select Country",
51 "Hungary" ,
52 "Iceland" ,
53 "India" => array(
54 "slave" => array("Select State" => "",
55 "Andhra Pradesh" => "Andhra Pradesh",
56 "Andaman and Nicobar Islands" => "Andaman and Nicobar Islands",
57 "Maharashtra" => "Maharashtra",
58 "Manipur" => "Manipur",
59 "Uttar Pradesh" => "Uttar Pradesh",
60 "Uttaranchal" => "Uttaranchal",
61 "West Bengal" => "West Bengal",
62 )
63 ),
64 "Italy" ,
65 "Jamaica" ,
66 "Japan" ,
67 "Jersey, C.I." ,
68 "Jordan" ,
69 "Kazakhstan" ,
70 "Kenya" ,
71 "United Kingdom" ,
72 "United States of America" => array(
73 "slave" => array("Select State" => "",
74 "Alabama" => "Alabama",
75 "California" => "California",
76 "Colorado" => "Colorado",
77 "Guam" => "Guam",
78 "American Samoa" => "American Samoa",
79 "Palau" => "Palau",
80 )
81 ),
82 "Uruguay" ,
83 "Uzbekistan" ,
84 "Zimbabwe"
85 );
86
87
88 /**
89 * The constructor
90 *
91 * @param string text label for the element
92 * @param boolean is this a required element?
93 * @param int element width in characters, pixels (px), percentage (%) or elements (em)
94 * @param int element height in px
95 *
96 */
97 function FECountryListMaster($label, $required = TRUE, $width = NULL, $height = NULL) {
98
99 //Get the data and put it in the format that FEListBoxMaster wants it.
100 $tmp = array();
101 foreach($this->_countries as $key => $country){
102 if(!is_array($country)){
103 $tmp[$country] = array("code"=>$country);
104 }else{
105 $tmp[$key] = $country;
106 $tmp[$key]["code"] = $key;
107 }
108 }
109 $tmp['Select Country']["code"] = "";
110
111 //Create the master.
112 $this->FEListBoxMaster($label, $required, $width, $height);
113 //Set the master-slave array
114 $this->set_list_data($tmp);
115 }
116
117 }
118 /**
119 * This demonstrates the power of the master-slave relationship between two list elements
120 * The control produces the javascript required to change the value of the slave when the
121 * master changes. It also automatically does the verification to check if the given value
122 * of the slave is in the list of values for the given master. This way your validation is
123 * taken care of
124 *
125 * @author Sumedh Thakar <sumedh_thakar@yahoo.com>
126 * @package phpHtmlLib
127 * @subpackage form-examples
128 */
129 class Form4Page extends MyLayoutPage {
130
131 function content_block() {
132 //build the FormProcessor, and add the
133 //Form content object that the FormProcessor
134 //will use. Make the width of the form 600
135 return new FormProcessor( new MasterSlaveForm(600));
136 }
137 }
138
139
140 /**
141 * This is the Class that handles the building
142 * of the Form itself. It creates the Form Elements
143 * inside the form_init_elements() method.
144 *
145 * @author Sumedh Thakar <sumedh_thakar@yahoo.com>
146 * @package phpHtmlLib
147 * @subpackage form-examples
148 */
149 class MasterSlaveForm extends FormContent {
150
151 /**
152 * This method gets called EVERY time the object is
153 * created. It is used to build all of the
154 * FormElement objects used in this Form.
155 *
156 */
157 function form_init_elements() {
158 //we do not want any confirmation page for this form.
159 $this->set_confirm(false);
160
161 //Create the slave element, a simple dropdown
162 $state = new FEListBox("State",true);
163
164 $this->add_element($state);
165
166 //Create the master element
167 $country = new FECountryListMaster("Country");
168
169 //Set the state as the slave of this. remember to pass an array of references
170 $country->set_slave_elements(array(&$state));
171
172 $this->add_element($country);
173
174 //Create the slave element, a simple dropdown
175 $state1 = new FEListBox("State1",true);
176
177 $this->add_element($state1);
178
179 //Create the master element
180 $country1 = new FECountryListMaster("Country1");
181
182 //Set the state as the slave of this. remember to pass an array of references
183 $country1->set_slave_elements(array(&$state1));
184
185 $this->add_element($country1);
186
187 }
188
189 /**
190 * This method is called only the first time the form
191 * page is hit. This enables u to query a DB and
192 * pre populate the FormElement objects with data.
193 *
194 */
195 function form_init_data() {
196
197 //In this example we just hard code some
198 //initial values
199 $this->set_element_value("Country", "India");
200
201 $this->set_element_value("State", "Maharashtra");
202
203 $this->set_element_value("Country1", "United States of America");
204
205 $this->set_element_value("State1", "California");
206
207
208 }
209
210
211 /**
212 * This is the method that builds the layout of where the
213 * FormElements will live. You can lay it out any way
214 * you like.
215 *
216 */
217 function form() {
218 $table = &html_table($this->_width,0,4);
219 $table->set_style("border: 1px solid");
220
221 $table->add_row($this->element_label("Country"),
222 $this->element_form("Country"));
223
224 $table->add_row($this->element_label("State"),
225 $this->element_form("State"));
226
227 $table->add_row($this->element_label("Country1"),
228 $this->element_form("Country1"));
229
230 $table->add_row($this->element_label("State1"),
231 $this->element_form("State1"));
232
233
234 $table->add_row(_HTML_SPACE, $this->add_action("Submit"));
235
236 return $table;
237 }
238
239
240 /**
241 * This method is called ONLY after ALL validation has
242 * passed. This is the method that allows you to
243 * do something with the data, say insert/update records
244 * in the DB.
245 */
246 function form_action() {
247
248 $this->set_action_message("Country :".$this->get_element_value("Country")." State ".$this->get_element_value("State")."Country1 :".$this->get_element_value("Country1")." State1 ".$this->get_element_value("State1"));
249
250 return TRUE;
251 }
252 }
253
254
255 $page = new Form4Page("Master-Slave list example");
256 print $page->render();
257 ?>

MailToCvsAdmin">MailToCvsAdmin
ViewVC Help
Powered by ViewVC 1.1.26 RSS 2.0 feed