/* js functions and code common to all pages */ /* define some global variables for this request */ global.page = new Object(); /* 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 */ if (headers['HOST'] == undefined) { headers['HOST'] = server['SERVER_HOST'] + ":" + server['SERVER_PORT']; } /* show the page header. page types include "plain" and "column" */ function page_header(pagetype, title, menu) { global.page.pagetype = pagetype; global.page.title = title; global.page.menu = menu; include("/scripting/header_" + pagetype + ".esp"); } /* show the page footer, getting the page type from page.pagetype set in page_header() */ function page_footer() { 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 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] == ext) { return true; } } return false; } /* display a table element */ 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("</td></tr>\n"); } /* 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) { table_element(r, v); } write("</table>\n"); } /* display an array of objects, with the header for each element from the given attribute */ function multi_table(array, header) { var i, n; write("<table class=\"data\">\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) { table_element(r, v); } } } write("</table>\n"); }