/* fill in some defaults */
global.page.title = "Samba Web Administration Tool";
+libinclude("base.js");
+
+/* to cope with browsers that don't support cookies we append the sessionid
+ to the URI */
+global.SESSIONURI = "";
+if (request['COOKIE_SUPPORT'] != "True") {
+ global.SESSIONURI="?SwatSessionId=" + request['SESSION_ID'];
+}
+
+/*
+ possibly adjust a local URI to have the session id appended
+ used for browsers that don't support cookies
+*/
+function session_uri(uri) {
+ return uri + global.SESSIONURI;
+}
+
+/*
+ like printf, but to the web page
+*/
+function writef()
+{
+ write(vsprintf(arguments));
+}
+
+/*
+ like writef with a <br>
+*/
+function writefln()
+{
+ write(vsprintf(arguments));
+ write("<br/>\n");
+}
+
/* if the browser was too dumb to set the HOST header, then
set it now */
/*
show the page header. page types include "plain" and "column"
*/
-function page_header(pagetype, title) {
+function page_header(pagetype, title, menu) {
global.page.pagetype = pagetype;
global.page.title = title;
+ global.page.menu = menu;
include("/scripting/header_" + pagetype + ".esp");
}
include("/scripting/footer_" + global.page.pagetype + ".esp");
}
+
/*
check if a uri is one of the 'always allowed' pages, even when not logged in
This allows the login page to use the same style sheets and images
*/
function always_allowed(uri) {
- var allowed = new Array("/images/favicon.ico",
- "/images/linkpad.gif",
- "/images/logo.png",
- "/style/main.css",
- "/style/common.css");
+ var str = string_init();
+ var s = str.split('.', uri);
+ if (s.length < 2) {
+ return false;
+ }
+ var ext = s[s.length-1];
+ var allowed = new Array("ico", "gif", "png","css", "js");
for (i in allowed) {
- if (allowed[i] == uri) {
+ if (allowed[i] == ext) {
return true;
}
}
}
/*
- display a simple menu. First argument is menu title, followed by
- pairs of menu item name and link
+ display a table element
*/
-function simple_menu() {
- write("<i>" + arguments[0] + "</i><br /><ul>\n");
- for (i = 1; i < arguments.length; i = i + 2) {
- write("<li><a href=\"" + arguments[i+1] + "\">" + arguments[i] + "</a></li>\n");
+function table_element(i, o) {
+ write("<tr><td>" + i + "</td><td>");
+ if (typeof(o[i]) == "object") {
+ var j, first;
+ first = true;
+ for (j in o[i]) {
+ if (first == false) {
+ write("<br />");
+ }
+ write(o[i][j]);
+ first = false;
+ }
+ } else {
+ write(o[i]);
}
- write("</ul>\n");
+ write("</td></tr>\n");
}
-
/*
- display a ejs object as a table
+ display a ejs object as a table. The header is optional
*/
function simple_table(v) {
+ if (v.length == 0) {
+ return;
+ }
write("<table class=\"data\">\n");
+ var r;
for (r in v) {
- write("<tr><td>" + r + "</td><td>" + v[r] + "</td></tr>\n");
+ table_element(r, v);
}
write("</table>\n");
}
attribute
*/
function multi_table(array, header) {
+ var i, n;
write("<table class=\"data\">\n");
- for (i in array) {
- var v = array[i];
- write("<tr><th colspan=2>" + v[header] + "</th></tr>\n");
+ for (i=0;i<array.length;i++) {
+ var r, v = array[i];
+ write('<tr><th colspan="2">' + v[header] + "</th></tr>\n");
for (r in v) {
if (r != header) {
- write("<tr><td align=left>" + r +
- "</td><td align=left>" + v[r] + "</td></tr>\n");
+ table_element(r, v);
}
}
}
write("</table>\n");
}
-/*
- create a Form object with the defaults filled in, ready for display_form()
- */
-function Form(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 = request.REQUEST_URI;
- f.class = "form";
- for (i in f.element) {
- f.element[i] = new Object();
- f.element[i].type = "text";
- f.element[i].value = "";
- }
- return f;
-}
-
-/*
- 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.element[i].label = element label
- f.element[i].name = element name (defaults to label)
- f.element[i].type = element type
- f.element[i].value = current value (optional, defaults to "")
- */
-function display_form(f) {
- write('<form name="' + f.name +
- '" method="post" action="' + f.action +
- '" class="' + f.class + '">\n');
- 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 = '""';
- }
- write("<tr>");
- write("<td>" + e.label + "</td>");
- write('<td><input name="' + e.name + '" type="' +
- e.type + '" value="' + e.value + '"></td>\n');
- }
- write("</table>\n");
- for (i in f.submit) {
- write('<input name="' + f.submit[i] +
- '" type="submit" value="' + f.submit[i] + '">\n');
- }
- write("</form>\n");
-}