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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.1 - (hide 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 jonen 1.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