mirror of
https://github.com/samba-team/samba.git
synced 2024-12-25 23:21:54 +03:00
f8573766bc
loose some of the fixes in the meantime.
Andrew Bartlett
(This used to be commit 13acff5ed2
)
113 lines
2.7 KiB
JavaScript
113 lines
2.7 KiB
JavaScript
/*
|
|
js functions for forms
|
|
*/
|
|
|
|
|
|
/*
|
|
display a simple form from a ejs Form object
|
|
caller should fill in
|
|
f.name = form name
|
|
f.action = action to be taken on submit (optional, defaults to current page)
|
|
f.class = css class (optional, defaults to 'form')
|
|
f.submit = an array of submit labels
|
|
f.add(name, label, [type], [value]) =
|
|
Add another element
|
|
f.element[i].label = element label
|
|
f.element[i].name = element name (defaults to label)
|
|
f.element[i].type = element type (defaults to text)
|
|
f.element[i].value = current value (optional, defaults to "")
|
|
*/
|
|
function form_display() {
|
|
var f = this;
|
|
var i, size = 20;
|
|
write('<form name="' + f.name +
|
|
'" method="post" action="' + f.action +
|
|
'" class="' + f.class + '">\n');
|
|
if (f.element.length > 0) {
|
|
write("<table>\n");
|
|
}
|
|
for (i in f.element) {
|
|
var e = f.element[i];
|
|
if (e.name == undefined) {
|
|
e.name = e.label;
|
|
}
|
|
if (e.value == undefined) {
|
|
e.value = "";
|
|
}
|
|
if (strlen(e.value) > size) {
|
|
size = strlen(e.value) + 4;
|
|
}
|
|
}
|
|
for (i in f.element) {
|
|
var e = f.element[i];
|
|
write("<tr>");
|
|
write("<td>" + e.label + "</td>");
|
|
if (e.type == "select") {
|
|
write('<td><select name="' + e.name + '">\n');
|
|
for (s in e.list) {
|
|
if (e.value == e.list[s]) {
|
|
write('<option selected=selected>' + e.list[s] + '</option>\n');
|
|
} else {
|
|
write('<option>' + e.list[s] + '</option>\n');
|
|
}
|
|
}
|
|
write('</select></td>\n');
|
|
} else {
|
|
var sizestr = "";
|
|
if (e.type == "text" || e.type == "password") {
|
|
sizestr = sprintf('size="%d"', size);
|
|
}
|
|
writef('<td><input name="%s" type="%s" value="%s" %s /></td>\n',
|
|
e.name, e.type, e.value, sizestr);
|
|
}
|
|
write("</tr>");
|
|
}
|
|
if (f.element.length > 0) {
|
|
write("</table>\n");
|
|
}
|
|
for (i in f.submit) {
|
|
write('<input name="submit" type="submit" value="' + f.submit[i] + '" />\n');
|
|
}
|
|
write("</form>\n");
|
|
}
|
|
|
|
function __addMethod(name, label)
|
|
{
|
|
var f = this;
|
|
var i = f.element.length;
|
|
f.element[i] = new Object();
|
|
f.element[i].name = name;
|
|
f.element[i].label = label;
|
|
f.element[i].type = "text";
|
|
f.element[i].value = "";
|
|
if (arguments.length > 2) {
|
|
f.element[i].type = arguments[2];
|
|
}
|
|
if (arguments.length > 3) {
|
|
f.element[i].value = arguments[3];
|
|
}
|
|
}
|
|
|
|
/*
|
|
create a Form object with the defaults filled in, ready for display()
|
|
*/
|
|
function FormObj(name, num_elements, num_submits)
|
|
{
|
|
var f = new Object();
|
|
f.name = name;
|
|
f.element = new Array(num_elements);
|
|
f.submit = new Array(num_submits);
|
|
f.action = session_uri(request.REQUEST_URI);
|
|
f.class = "defaultform";
|
|
f.add = __addMethod;
|
|
for (i in f.element) {
|
|
f.element[i] = new Object();
|
|
f.element[i].type = "text";
|
|
f.element[i].value = "";
|
|
}
|
|
f.display = form_display;
|
|
|
|
return f;
|
|
}
|
|
|