source: branches/samba-3.5.x/swat2/scripting/forms.js

Last change on this file was 414, checked in by Herwig Bauernfeind, 15 years ago

Samba 3.5.0: Initial import

File size: 2.7 KB
Line 
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 */
20function 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
74function __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 */
94function 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
Note: See TracBrowser for help on using the repository browser.