1/* 2 js functions and code common to all pages 3*/ 4 5/* define some global variables for this request */ 6global.page = new Object(); 7 8/* fill in some defaults */ 9global.page.title = "Samba Web Administration Tool"; 10 11libinclude("base.js"); 12 13/* to cope with browsers that don't support cookies we append the sessionid 14 to the URI */ 15global.SESSIONURI = ""; 16if (request['COOKIE_SUPPORT'] != "True") { 17 global.SESSIONURI="?SwatSessionId=" + request['SESSION_ID']; 18} 19 20/* 21 possibly adjust a local URI to have the session id appended 22 used for browsers that don't support cookies 23*/ 24function session_uri(uri) { 25 return uri + global.SESSIONURI; 26} 27 28/* 29 like printf, but to the web page 30*/ 31function writef() 32{ 33 write(vsprintf(arguments)); 34} 35 36/* 37 like writef with a <br> 38*/ 39function writefln() 40{ 41 write(vsprintf(arguments)); 42 write("<br/>\n"); 43} 44 45 46/* if the browser was too dumb to set the HOST header, then 47 set it now */ 48if (headers['HOST'] == undefined) { 49 headers['HOST'] = server['SERVER_HOST'] + ":" + server['SERVER_PORT']; 50} 51 52/* 53 show the page header. page types include "plain" and "column" 54*/ 55function page_header(pagetype, title, menu) { 56 global.page.pagetype = pagetype; 57 global.page.title = title; 58 global.page.menu = menu; 59 include("/scripting/header_" + pagetype + ".esp"); 60} 61 62/* 63 show the page footer, getting the page type from page.pagetype 64 set in page_header() 65*/ 66function page_footer() { 67 include("/scripting/footer_" + global.page.pagetype + ".esp"); 68} 69 70 71/* 72 display a table element 73*/ 74function table_element(i, o) { 75 write("<tr><td>" + i + "</td><td>"); 76 if (typeof(o[i]) == "object") { 77 var j, first; 78 first = true; 79 for (j in o[i]) { 80 if (first == false) { 81 write("<br />"); 82 } 83 write(o[i][j]); 84 first = false; 85 } 86 } else { 87 write(o[i]); 88 } 89 write("</td></tr>\n"); 90} 91 92/* 93 display a ejs object as a table. The header is optional 94*/ 95function simple_table(v) { 96 if (v.length == 0) { 97 return; 98 } 99 write("<table class=\"data\">\n"); 100 var r; 101 for (r in v) { 102 table_element(r, v); 103 } 104 write("</table>\n"); 105} 106 107/* 108 display an array of objects, with the header for each element from the given 109 attribute 110*/ 111function multi_table(array, header) { 112 var i, n; 113 write("<table class=\"data\">\n"); 114 for (i=0;i<array.length;i++) { 115 var r, v = array[i]; 116 write('<tr><th colspan="2">' + v[header] + "</th></tr>\n"); 117 for (r in v) { 118 if (r != header) { 119 table_element(r, v); 120 } 121 } 122 } 123 write("</table>\n"); 124} 125 126