1 | /*
|
---|
2 | js functions for forms
|
---|
3 | */
|
---|
4 |
|
---|
5 |
|
---|
6 | /*
|
---|
7 | display a simple form from a ejs Form object
|
---|
8 | caller should fill in
|
---|
9 | f.name = form name
|
---|
10 | f.action = action to be taken on submit (optional, defaults to current page)
|
---|
11 | f.class = css class (optional, defaults to 'form')
|
---|
12 | f.submit = an array of submit labels
|
---|
13 | f.add(name, label, [type], [value]) =
|
---|
14 | Add another element
|
---|
15 | f.element[i].label = element label
|
---|
16 | f.element[i].name = element name (defaults to label)
|
---|
17 | f.element[i].type = element type (defaults to text)
|
---|
18 | f.element[i].value = current value (optional, defaults to "")
|
---|
19 | */
|
---|
20 | function form_display() {
|
---|
21 | var f = this;
|
---|
22 | var i, size = 20;
|
---|
23 | write('<form name="' + f.name +
|
---|
24 | '" method="post" action="' + f.action +
|
---|
25 | '" class="' + f.class + '">\n');
|
---|
26 | if (f.element.length > 0) {
|
---|
27 | write("<table>\n");
|
---|
28 | }
|
---|
29 | for (i in f.element) {
|
---|
30 | var e = f.element[i];
|
---|
31 | if (e.name == undefined) {
|
---|
32 | e.name = e.label;
|
---|
33 | }
|
---|
34 | if (e.value == undefined) {
|
---|
35 | e.value = "";
|
---|
36 | }
|
---|
37 | if (strlen(e.value) > size) {
|
---|
38 | size = strlen(e.value) + 4;
|
---|
39 | }
|
---|
40 | }
|
---|
41 | for (i in f.element) {
|
---|
42 | var e = f.element[i];
|
---|
43 | write("<tr>");
|
---|
44 | write("<td>" + e.label + "</td>");
|
---|
45 | if (e.type == "select") {
|
---|
46 | write('<td><select name="' + e.name + '">\n');
|
---|
47 | for (s in e.list) {
|
---|
48 | if (e.value == e.list[s]) {
|
---|
49 | write('<option selected=selected>' + e.list[s] + '</option>\n');
|
---|
50 | } else {
|
---|
51 | write('<option>' + e.list[s] + '</option>\n');
|
---|
52 | }
|
---|
53 | }
|
---|
54 | write('</select></td>\n');
|
---|
55 | } else {
|
---|
56 | var sizestr = "";
|
---|
57 | if (e.type == "text" || e.type == "password") {
|
---|
58 | sizestr = sprintf('size="%d"', size);
|
---|
59 | }
|
---|
60 | writef('<td><input name="%s" type="%s" value="%s" %s /></td>\n',
|
---|
61 | e.name, e.type, e.value, sizestr);
|
---|
62 | }
|
---|
63 | write("</tr>");
|
---|
64 | }
|
---|
65 | if (f.element.length > 0) {
|
---|
66 | write("</table>\n");
|
---|
67 | }
|
---|
68 | for (i in f.submit) {
|
---|
69 | write('<input name="submit" type="submit" value="' + f.submit[i] + '" />\n');
|
---|
70 | }
|
---|
71 | write("</form>\n");
|
---|
72 | }
|
---|
73 |
|
---|
74 | function __addMethod(name, label)
|
---|
75 | {
|
---|
76 | var f = this;
|
---|
77 | var i = f.element.length;
|
---|
78 | f.element[i] = new Object();
|
---|
79 | f.element[i].name = name;
|
---|
80 | f.element[i].label = label;
|
---|
81 | f.element[i].type = "text";
|
---|
82 | f.element[i].value = "";
|
---|
83 | if (arguments.length > 2) {
|
---|
84 | f.element[i].type = arguments[2];
|
---|
85 | }
|
---|
86 | if (arguments.length > 3) {
|
---|
87 | f.element[i].value = arguments[3];
|
---|
88 | }
|
---|
89 | }
|
---|
90 |
|
---|
91 | /*
|
---|
92 | create a Form object with the defaults filled in, ready for display()
|
---|
93 | */
|
---|
94 | function FormObj(name, num_elements, num_submits)
|
---|
95 | {
|
---|
96 | var f = new Object();
|
---|
97 | f.name = name;
|
---|
98 | f.element = new Array(num_elements);
|
---|
99 | f.submit = new Array(num_submits);
|
---|
100 | f.action = session_uri(request.REQUEST_URI);
|
---|
101 | f.class = "defaultform";
|
---|
102 | f.add = __addMethod;
|
---|
103 | for (i in f.element) {
|
---|
104 | f.element[i] = new Object();
|
---|
105 | f.element[i].type = "text";
|
---|
106 | f.element[i].value = "";
|
---|
107 | }
|
---|
108 | f.display = form_display;
|
---|
109 |
|
---|
110 | return f;
|
---|
111 | }
|
---|
112 |
|
---|