Project

General

Profile

Download (21.1 KB) Statistics
| Branch: | Tag: | Revision:
1
<?php
2
/* $Id$ */
3
/*
4
    wizard.php
5
    Copyright (C) 2004 Scott Ullrich
6
    All rights reserved.
7

    
8
    Redistribution and use in source and binary forms, with or without
9
    modification, are permitted provided that the following conditions are met:
10

    
11
    1. Redistributions of source code must retain the above copyright notice,
12
       this list of conditions and the following disclaimer.
13

    
14
    2. Redistributions in binary form must reproduce the above copyright
15
       notice, this list of conditions and the following disclaimer in the
16
       documentation and/or other materials provided with the distribution.
17

    
18
    THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
19
    INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
20
    AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
21
    AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
22
    OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
23
    SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
24
    INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
25
    CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
26
    ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
27
    POSSIBILITY OF SUCH DAMAGE.
28
*/
29

    
30
##|+PRIV
31
##|*IDENT=page-pfsensewizardsubsystem
32
##|*NAME=pfSense wizard subsystem page
33
##|*DESCR=Allow access to the 'pfSense wizard subsystem' page.
34
##|*MATCH=wizard.php*
35
##|-PRIV
36

    
37

    
38
require("guiconfig.inc");
39

    
40
function gentitle_pkg($pgname) {
41
	global $config;
42
	return $config['system']['hostname'] . "." . $config['system']['domain'] . " - " . $pgname;
43
}
44

    
45
$stepid = htmlspecialchars($_GET['stepid']);
46
if (isset($_POST['stepid']))
47
    $stepid = htmlspecialchars($_POST['stepid']);
48
if (!$stepid) $stepid = "0";
49

    
50
$xml = htmlspecialchars($_GET['xml']);
51
if($_POST['xml']) $xml = htmlspecialchars($_POST['xml']);
52

    
53
if($xml == "") {
54
	$xml = "not_defined";
55
	print_info_box_np("ERROR:  Could not open " . $xml . ".");
56
	die;
57
} else {
58
	if (file_exists("{$g['www_path']}/wizards/{$xml}"))
59
		$pkg = parse_xml_config_pkg("{$g['www_path']}/wizards/" . $xml, "pfsensewizard");
60
	else {
61
		print_info_box_np("ERROR:  Could not open " . $xml . ".");
62
		die;
63
	}
64
}
65

    
66
$title          = $pkg['step'][$stepid]['title'];
67
$description    = $pkg['step'][$stepid]['description'];
68
$totalsteps     = $pkg['totalsteps'];
69

    
70
exec('/usr/bin/tar -tzf /usr/share/zoneinfo.tgz', $timezonelist);
71
$timezonelist = array_filter($timezonelist, 'is_timezone');
72
sort($timezonelist);
73

    
74
/* kill carriage returns */
75
for($x=0; $x<count($timezonelist); $x++)
76
		$timezonelist[$x] = str_replace("\n", "", $timezonelist[$x]);
77

    
78
if ($pkg['step'][$stepid]['includefile'])
79
	require($pkg['step'][$stepid]['includefile']);
80

    
81
if($pkg['step'][$stepid]['stepsubmitbeforesave']) {
82
		eval($pkg['step'][$stepid]['stepsubmitbeforesave']);
83
}
84

    
85
if ($_POST) {
86
    foreach ($pkg['step'][$stepid]['fields']['field'] as $field) {
87
        if($field['bindstofield'] <> "" and $field['type'] <> "submit") {
88
		$fieldname = $field['name'];
89
		$unset_fields = "";
90
		$fieldname = ereg_replace(" ", "", $fieldname);
91
		$fieldname = strtolower($fieldname);
92
		// update field with posted values.
93
                if($field['unsetfield'] <> "") $unset_fields = "yes";
94
		if($field['arraynum'] <> "") $arraynum = $field['arraynum'];
95
		if($field['bindstofield'])
96
			update_config_field( $field['bindstofield'], $_POST[$fieldname], $unset_fields, $arraynum, $field['type']);
97
        }
98

    
99
    }
100
    // run custom php code embedded in xml config.
101
    if($pkg['step'][$stepid]['stepsubmitphpaction'] <> "") {
102
		eval($pkg['step'][$stepid]['stepsubmitphpaction']);
103
    }
104
	write_config();
105
    $stepid++;
106
    if($stepid > $totalsteps) $stepid = $totalsteps;
107
}
108

    
109
$title          = $pkg['step'][$stepid]['title'];
110
$description    = $pkg['step'][$stepid]['description'];
111

    
112
function update_config_field($field, $updatetext, $unset, $arraynum, $field_type) {
113
	global $config;
114
	$field_split = split("->",$field);
115
	foreach ($field_split as $f) $field_conv .= "['" . $f . "']";
116
	if($field_conv == "") return;
117
	if($field_type == "checkbox" and $updatetext <> "on") {
118
		/*
119
		    item is a checkbox, it should have the value "on"
120
		    if it was checked
121
                */
122
		$text = "unset(\$config" . $field_conv . ");";
123
		eval($text);
124
		return;
125
	}
126

    
127
	if($field_type == "interfaces_selection") {
128
		$text = "unset(\$config" . $field_conv . ");";
129
		eval($text);
130
		$text = "\$config" . $field_conv . " = \"" . $updatetext . "\";";
131
		eval($text);
132
		return;
133
	}
134

    
135
	if($unset <> "") {
136
		$text = "unset(\$config" . $field_conv . ");";
137
		eval($text);
138
		$text = "\$config" . $field_conv . "[" . $arraynum . "] = \"" . $updatetext . "\";";
139
		eval($text);
140
	} else {
141
		if($arraynum <> "") {
142
			$text = "\$config" . $field_conv . "[" . $arraynum . "] = \"" . $updatetext . "\";";
143
		} else {
144
			$text = "\$config" . $field_conv . " = \"" . $updatetext . "\";";
145
		}
146
		eval($text);
147
	}
148
}
149

    
150
if($pkg['step'][$stepid]['stepbeforeformdisplay'] <> "") {
151
	// handle before form display event.
152
        // good for modifying posted values, etc.
153
	eval($pkg['step'][$stepid]['stepbeforeformdisplay']);
154
}
155

    
156
$pgtitle = array($title);
157
include("head.inc");
158

    
159
?>
160
<body link="#0000CC" vlink="#0000CC" alink="#0000CC" onLoad="enablechange();">
161

    
162
<?php
163
	if(file_exists("/usr/local/www/themes/{$g['theme']}/wizard.css")) 
164
		echo "<link rel=\"stylesheet\" href=\"/themes/{$g['theme']}/wizard.css\" media=\"all\" />\n";
165
	else 
166
		echo "<link rel=\"stylesheet\" href=\"/themes/{$g['theme']}/all.css\" media=\"all\" />";
167
?>
168

    
169
<?php if($pkg['step'][$stepid]['fields']['field'] <> "") { ?>
170
<script language="JavaScript">
171
<!--
172

    
173
function  FieldValidate(userinput,  regexp,  message)
174
{
175
                if(!userinput.match(regexp))
176
                                alert(message);
177
}
178

    
179
function enablechange() {
180
<?php
181
        foreach($pkg['step'][$stepid]['fields']['field'] as $field) {
182
                if(isset($field['enablefields']) or isset($field['checkenablefields'])) {
183
                        print "\t" . 'if (document.iform.' . strtolower($field['name']) . '.checked == false) {' . "\n";
184
                        if(isset($field['enablefields'])) {
185
                                $enablefields = explode(',', $field['enablefields']);
186
                                foreach($enablefields as $enablefield) {
187
                                        $enablefield = strtolower($enablefield);
188
                                        print "\t\t" . 'document.iform.' . $enablefield . '.disabled = 1;' . "\n";
189
                                }
190
                        }
191
                        if(isset($field['checkenablefields'])) {
192
                                $checkenablefields = explode(',', $field['checkenablefields']);
193
                                foreach($checkenablefields as $checkenablefield) {
194
                                        $checkenablefield = strtolower($checkenablefield);
195
                                        print "\t\t" . 'document.iform.' . $checkenablefield . '.checked = 0;' . "\n";
196
                                }
197
                        }
198
                        print "\t" . '} else {' . "\n";
199
                        if(isset($field['enablefields'])) {
200
                                foreach($enablefields as $enablefield) {
201
                                        $enablefield = strtolower($enablefield);
202
                                        print "\t\t" . 'document.iform.' . $enablefield . '.disabled = 0;' . "\n";
203
                                }
204
                        }
205
                        if(isset($field['checkenablefields'])) {
206
                                foreach($checkenablefields as $checkenablefield) {
207
                                        $checkenablefield = strtolower($checkenablefield);
208
                                        print "\t\t" . 'document.iform.' . $checkenablefield . '.checked = 1;' . "\n";
209
                                }
210
                        }
211
                        print "\t" . '}' . "\n";
212
                }
213
        }
214
?>
215
}
216
//-->
217
</script>
218
<?php } ?>
219

    
220
<form action="wizard.php" method="post" name="iform" id="iform">
221
<input type="hidden" name="xml" value="<?= $xml ?>">
222
<input type="hidden" name="stepid" value="<?= $stepid ?>">
223
<?php if ($savemsg) print_info_box($savemsg); ?>
224

    
225
<center>
226

    
227
&nbsp;<br>
228

    
229
<?php
230
	if($title == "Reload in progress") {
231
		$ip = "http://{$config['interfaces']['lan']['ipaddr']}";
232
	} else {
233
		$ip = "/";
234
	}
235
	echo "<a href='$ip'>";
236
?>
237
<img border="0" src="./themes/<?= $g['theme']; ?>/images/logo.gif"></a>
238
<p>
239
<div style="width:700px;background-color:#ffffff" id="roundme">
240
<table bgcolor="#ffffff" width="600" cellspacing="0" cellpadding="3">
241
    <!-- wizard goes here -->
242
    <tr><td>&nbsp;</td></tr>
243
    <tr><td colspan='2'>
244
<?php
245
	if ($_GET['message'] != "")
246
		print_info_box(htmlspecialchars($_GET['message']));
247
	if ($_POST['message'] != "")
248
		print_info_box(htmlspecialchars($_POST['message']));
249
?></td></tr>
250
    <tr><td colspan='2'><center><b><?= fixup_string($description) ?></b></center></td></tr><tr><td>&nbsp;</td></tr>
251
    <?php
252
	if(!$pkg['step'][$stepid]['disableheader'])
253
		echo "<tr><td colspan=\"2\" class=\"listtopic\">" . fixup_string($title) . "</td></tr>";
254
    ?>
255

    
256
    <?php
257
	if($pkg['step'][$stepid]['fields']['field'] <> "") {
258
		foreach ($pkg['step'][$stepid]['fields']['field'] as $field) {
259

    
260
		    $value = $field['value'];
261
		    $name  = $field['name'];
262

    
263
		    $name = ereg_replace(" ", "", $name);
264
		    $name = strtolower($name);
265

    
266
		    if($field['bindstofield'] <> "") {
267
				$arraynum = "";
268
				$field_conv = "";
269
				$field_split = split("->", $field['bindstofield']);
270
				// arraynum is used in cases where there is an array of the same field
271
				// name such as dnsserver (2 of them)
272
				if($field['arraynum'] <> "") $arraynum = "[" . $field['arraynum'] . "]";
273
				foreach ($field_split as $f) $field_conv .= "['" . $f . "']";
274
					$toeval = "\$value = \$config" . $field_conv . $arraynum . ";";
275
					eval($toeval);
276
					if ($field['type'] == "checkbox") {
277
						$toeval = "if(isset(\$config" . $field_conv . $arraynum . ")) \$value = \" CHECKED\";";
278
						eval($toeval);
279
					}
280
		    }
281

    
282
		    if(!$field['combinefieldsend'])
283
			echo "<tr>";
284

    
285
		    if ($field['type'] == "input") {
286
			if(!$field['dontdisplayname']) {
287
				echo "<td width=\"22%\" align=\"right\" class=\"vncellreq\">\n";
288
				echo fixup_string($field['name']);
289
				echo ":</td>\n";
290
			}
291
			if(!$field['dontcombinecells'])
292
				echo "<td class=\"vtable\">\n";
293

    
294
			echo "<input id='" . $name . "' name='" . $name . "' value='" . $value . "'";
295
			if($field['validate'])
296
				echo " onChange='FieldValidate(this.value, \"{$field['validate']}\", \"{$field['message']}\");'";
297
			echo ">\n";
298

    
299

    
300

    
301
		    } else if ($field['type'] == "inputalias") {
302
			if(!$field['dontdisplayname']) {
303
				echo "<td width=\"22%\" align=\"right\" class=\"vncellreq\">\n";
304
				echo fixup_string($field['name']);
305
				echo ":</td>\n";
306
			}
307
			if(!$field['dontcombinecells'])
308
				echo "<td class=\"vtable\">\n";
309

    
310
			echo "<input  autocomplete='off' class='formfldalias' id='" . $name . "' name='" . $name . "' value='" . $value . "'";
311
			if($field['validate'])
312
				echo " onChange='FieldValidate(this.value, \"{$field['validate']}\", \"{$field['message']}\");'";
313
			echo ">\n";
314

    
315

    
316

    
317
		    } else if($field['type'] == "interfaces_selection") {
318
			$size = "";
319
			$multiple = "";
320
			$name = strtolower($name);
321
			echo "<td width=\"22%\" align=\"right\" class=\"vncellreq\">\n";
322
			echo fixup_string($field['name']) . ":\n";
323
			echo "</td>";
324
			echo "<td class=\"vtable\">\n";
325
			if($field['size'] <> "") $size = "size=\"{$field['size']}\"";
326
			if($field['multiple'] <> "" and $field['multiple'] <> "0") {
327
			  $multiple = "multiple=\"multiple\"";
328
			  $name .= "[]";
329
			}
330
			echo "<select id='{$name}' name='{$name}' {$size} {$multiple}>\n";
331
			if($field['add_to_interfaces_selection'] <> "") {
332
				$SELECTED = "";
333
				if($field['add_to_interfaces_selection'] == $value) $SELECTED = " SELECTED";
334
				echo "<option value='" . $field['add_to_interfaces_selection'] . "'" . $SELECTED . ">" . $field['add_to_interfaces_selection'] . "</option>\n";
335
			}
336
			$interfaces = $config['interfaces'];
337
			if($field['all_interfaces'] <> "") {
338
				$ints = split(" ", `/sbin/ifconfig -l`);
339
				$interfaces = array();
340
				foreach ($ints as $int) {
341
					$interfaces[]['descr'] = $int;
342
					$interfaces[] = $int;
343
				}
344
			}
345
			foreach ($interfaces as $ifname => $iface) {
346
			  if ($iface['descr'])
347
				  $ifdescr = $iface['descr'];
348
			  else
349
				  $ifdescr = strtoupper($ifname);
350
			  $ip = "";
351
			  if($field['all_interfaces'] <> "") {
352
				$ifdescr = $iface;
353
				$ip = " " . find_interface_ip($iface);
354
			  }
355
			  $SELECTED = "";
356
			  if ($value == $ifname) $SELECTED = " SELECTED";
357
			  $to_echo = "<option value='" . $ifname . "'" . $SELECTED . ">" . $ifdescr . $ip . "</option>\n";
358
			  $to_echo .= "<!-- {$value} -->";
359
			  $canecho = 0;
360
			  if($field['interface_filter'] <> "") {
361
				if(stristr($iface, $field['interface_filter']) == true)
362
					$canecho = 1;
363
			  } else {
364
				$canecho = 1;
365
			  }
366
			  if($canecho == 1)
367
				echo $to_echo;
368
			}
369
				echo "</select>\n";
370
			} else if ($field['type'] == "password") {
371
			if(!$field['dontdisplayname']) {
372
				echo "<td width=\"22%\" align=\"right\" class=\"vncellreq\">\n";
373
				echo fixup_string($field['name']);
374
				echo ":</td>\n";
375
			}
376
			if(!$field['dontcombinecells'])
377
				echo "<td class=\"vtable\">";
378
			echo "<input id='" . $name . "' name='" . $name . "' value='" . $value . "' type='password'>\n";
379
		    } else if ($field['type'] == "select") {
380
			if(!$field['dontdisplayname']) {
381
				echo "<td width=\"22%\" align=\"right\" class=\"vncellreq\">\n";
382
				echo fixup_string($field['name']);
383
				echo ":</td>\n";
384
			}
385
			if($field['size']) $size = " size='" . $field['size'] . "' ";
386
			if($field['multiple'] == "yes") $multiple = "MULTIPLE ";
387
			if(!$field['dontcombinecells'])
388
				echo "<td class=\"vtable\">\n";
389
			$onchange = "";
390
			foreach ($field['options']['option'] as $opt) {
391
				if($opt['enablefields'] <> "") {
392
					$onchange = "onchange=\"enableitems(this.selectedIndex);\" ";
393
				}
394
			}
395
			echo "<select " . $onchange . $multiple . $size . "id='" . $name . "' name='" . $name . "'>\n";
396
			foreach ($field['options']['option'] as $opt) {
397
				$selected = "";
398
				if($value == $opt['value']) $selected = " SELECTED";
399
			    echo "\t<option name='" . $opt['name'] . "' value='" . $opt['value'] . "'" . $selected . ">" . $opt['name'] . "</option>\n";
400
			}
401
			echo "</select>\n";
402
		    } else if ($field['type'] == "textarea") {
403
			if(!$field['dontdisplayname']) {
404
				echo "<td width=\"22%\" align=\"right\" class=\"vncellreq\">\n";
405
				echo fixup_string($field['name']);
406
				echo ":</td>";
407
			}
408
			if(!$field['dontcombinecells'])
409
				echo "<td class=\"vtable\">";
410
			echo "<textarea id='" . $name . "' name='" . $name . ">" . $value . "</textarea>\n";
411
		    } else if ($field['type'] == "submit") {
412
			echo "<td>&nbsp;<br></td></tr>";
413
			echo "<tr><td colspan='2'><center>";
414
			echo "<input type='submit' name='" . $name . "' value='" . $field['name'] . "'>\n";
415
		    } else if ($field['type'] == "listtopic") {
416
			echo "<td>&nbsp;</td><tr>";
417
			echo "<tr><td colspan=\"2\" class=\"listtopic\">" . $field['name'] . "<br></td>\n";
418
		    } else if ($field['type'] == "subnet_select") {
419
			if(!$field['dontdisplayname']) {
420
				echo "<td width=\"22%\" align=\"right\" class=\"vncellreq\">\n";
421
				echo fixup_string($field['name']);
422
				echo ":</td>";
423
			}
424
			if(!$field['dontcombinecells'])
425
				echo "<td class=\"vtable\">";
426
			echo "<select name='{$name}'>\n";
427
			for($x=1; $x<33; $x++) {
428
				$CHECKED = "";
429
				if($value == $x) $CHECKED = " SELECTED";
430
				if($x <> 31)
431
					echo "<option value='{$x}' {$CHECKED}>{$x}</option>\n";
432
			}
433
			echo "</select>\n";
434
		    } else if ($field['type'] == "timezone_select") {
435
			if(!$field['dontdisplayname']) {
436
				echo "<td width=\"22%\" align=\"right\" class=\"vncellreq\">\n";
437
				echo fixup_string($field['name']);
438
				echo ":</td>";
439
			}
440
			if(!$field['dontcombinecells'])
441
				echo "<td class=\"vtable\">";
442
			echo "<select name='{$name}'>\n";
443
			foreach ($timezonelist as $tz) {
444
				$SELECTED = "";
445
				if ($value == $tz) $SELECTED = " SELECTED";
446
				echo "<option value='" . htmlspecialchars($tz) . "' {$SELECTED}>";
447
				echo htmlspecialchars($tz);
448
				echo "</option>\n";
449
			}
450
			echo "</select>\n";
451
		    } else if ($field['type'] == "checkbox") {
452
			if(!$field['dontdisplayname']) {
453
				echo "<td width=\"22%\" align=\"right\" class=\"vncellreq\">\n";
454
				echo $field['name'];
455
				echo ":</td>";
456
			}
457
			$checked = "";
458
			if($value <> "") $checked = " CHECKED";
459
			echo "<td class=\"vtable\"><input type='checkbox' id='" . $name . "' name='" . $name . "' " . $checked;
460
			if(isset($field['enablefields']) or isset($field['checkenablefields'])) echo " onClick=\"enablechange()\"";
461
			echo ">\n";
462
		    }
463

    
464
		    if($field['typehint'] <> "") {
465
			echo $field['typehint'];
466
		    }
467

    
468
		    if($field['description'] <> "") {
469
			echo "<br>" . $field['description'];
470
			echo "</td>";
471
		    }
472

    
473
		    if(!$field['combinefieldsbegin'])
474
			 echo "</tr>\n";
475

    
476
		    if($field['warning'] <> "") {
477
			echo "<br><b><font color=\"red\">" . $field['warning'] . "</font></b>";
478
		    }
479

    
480
		}
481
	}
482
    ?>
483
</table>
484
<br>&nbsp;
485
</div>
486
</form>
487
<script language="JavaScript">
488
<!--
489
	if (typeof ext_change != 'undefined') {
490
		ext_change();
491
	}
492
	if (typeof proto_change != 'undefined') {
493
		ext_change();
494
	}
495
	if (typeof proto_change != 'undefined') {
496
		proto_change();
497
	}
498

    
499
<?php
500
	$isfirst = 0;
501
	$aliases = "";
502
	$addrisfirst = 0;
503
	$aliasesaddr = "";
504
	if($config['aliases']['alias'] <> "" and is_array($config['aliases']['alias']))
505
		foreach($config['aliases']['alias'] as $alias_name) {
506
			if(!stristr($alias_name['address'], ".")) {
507
				if($isfirst == 1) $aliases .= ",";
508
				$aliases .= "'" . $alias_name['name'] . "'";
509
				$isfirst = 1;
510
			} else {
511
				if($addrisfirst == 1) $aliasesaddr .= ",";
512
				$aliasesaddr .= "'" . $alias_name['name'] . "'";
513
				$addrisfirst = 1;
514
			}
515
		}
516
?>
517

    
518
	var addressarray=new Array(<?php echo $aliasesaddr; ?>);
519
	var customarray=new Array(<?php echo $aliases; ?>);
520

    
521
//-->
522
</script>
523
<script type="text/javascript">
524
NiftyCheck();
525
var bgcolor = document.getElementsByTagName("body")[0].style.backgroundColor;
526
Rounded("div#roundme","all",bgcolor,"#FFFFFF","smooth");
527
</script>
528

    
529
<?php
530

    
531
$fieldnames_array = Array();
532
if($pkg['step'][$stepid]['disableallfieldsbydefault'] <> "") {
533
	// create a fieldname loop that can be used with javascript
534
	// hide and enable features.
535
	echo "\n<script language=\"JavaScript\">\n";
536
	echo "function disableall() {\n";
537
	foreach ($pkg['step'][$stepid]['fields']['field'] as $field) {
538
		if($field['type'] <> "submit" and $field['type'] <> "listtopic") {
539
			if(!$field['donotdisable'] <> "") {
540
				array_push($fieldnames_array, $field['name']);
541
				$fieldname = ereg_replace(" ", "", $field['name']);
542
				$fieldname = strtolower($fieldname);
543
				echo "\tdocument.forms[0]." . $fieldname . ".disabled = 1;\n";
544
			}
545
		}
546
	}
547
	echo "}\ndisableall();\n";
548
	echo "function enableitems(selectedindex) {\n";
549
	echo "disableall();\n";
550
	$idcounter = 0;
551
	if($pkg['step'][$stepid]['fields']['field'] <> "") {
552
		echo "\tswitch(selectedindex) {\n";
553
		foreach ($pkg['step'][$stepid]['fields']['field'] as $field) {
554
			if($field['options']['option'] <> "") {
555
				foreach ($field['options']['option'] as $opt) {
556
					if($opt['enablefields'] <> "") {
557
						echo "\t\tcase " . $idcounter . ":\n";
558
						$enablefields_split = split(",", $opt['enablefields']);
559
						foreach ($enablefields_split as $efs) {
560
							$fieldname = ereg_replace(" ", "", $efs);
561
							$fieldname = strtolower($fieldname);
562
							if($fieldname <> "") {
563
								$onchange = "\t\t\tdocument.forms[0]." . $fieldname . ".disabled = 0; \n";
564
								echo $onchange;
565
							}
566
						}
567
						echo "\t\t\tbreak;\n";
568
					}
569
					$idcounter = $idcounter + 1;
570
				}
571
			}
572
		}
573
		echo "\t}\n";
574
	}
575
	echo "}\n";
576
	echo "disableall();\n";
577
	echo "</script>\n\n";
578
}
579

    
580

    
581
if($pkg['step'][$stepid]['stepafterformdisplay'] <> "") {
582
	// handle after form display event.
583
	eval($pkg['step'][$stepid]['stepafterformdisplay']);
584
}
585

    
586
if($pkg['step'][$stepid]['javascriptafterformdisplay'] <> "") {
587
	// handle after form display event.
588
        echo "\n<script language=\"JavaScript\">\n";
589
	echo $pkg['step'][$stepid]['javascriptafterformdisplay'] . "\n";
590
	echo "</script>\n\n";
591
}
592

    
593
/*
594
 *  HELPER FUNCTIONS
595
 */
596

    
597
function fixup_string($string) {
598
	global $config, $myurl;
599
	$newstring = $string;
600
	// fixup #1: $myurl -> http[s]://ip_address:port/
601
	switch($config['system']['webguiproto']) {
602
		case "http":
603
			$proto = "http";
604
			break;
605
		case "https":
606
			$proto = "https";
607
			break;
608
		default:
609
			$proto = "http";
610
			break;
611
	}
612
	$port = $config['system']['webguiport'];
613
	if($port != "") {
614
		if(($port == "443" and $proto != "https") or ($port == "80" and $proto != "http")) {
615
			$urlport = ":" . $port;
616
		} elseif ($port != "80" and $port != "443") {
617
			$urlport = ":" . $port;
618
		} else {
619
			$urlport = "";
620
		}
621
	}
622
	$myurl = $proto . "://" . $config['interfaces']['lan']['ipaddr'] . $urlport . "/";
623
	$newstring = str_replace("\$myurl", $myurl, $newstring);
624
	// fixup #2: $wanip
625
	$curwanip = get_interface_ip();
626
	$newstring = str_replace("\$wanip", $curwanip, $newstring);
627
	// fixup #3: $lanip
628
	$lanip = $config['interfaces']['lan']['ipaddr'];
629
	$newstring = str_replace("\$lanip", $lanip, $newstring);
630
	// fixup #4: fix'r'up here.
631
	return $newstring;
632
}
633

    
634
function is_timezone($elt) {
635
	return !preg_match("/\/$/", $elt);
636
}
637

    
638
?>
639

    
640
</body>
641
</html>
642

    
(202-202/203)