Fix a "nexted extern declaration" warning
[Samba/gebeck_regimport.git] / swat2 / scripting / common.js
blobc111089bd877df9028712f8f9a271b1d9429dadb
1 /*
2         js functions and code common to all pages
3 */
5 /* define some global variables for this request */
6 global.page = new Object();
8 /* fill in some defaults */
9 global.page.title = "Samba Web Administration Tool";
11 libinclude("base.js");
13 /* to cope with browsers that don't support cookies we append the sessionid
14    to the URI */
15 global.SESSIONURI = "";
16 if (request['COOKIE_SUPPORT'] != "True") {
17         global.SESSIONURI="?SwatSessionId=" + request['SESSION_ID'];
21   possibly adjust a local URI to have the session id appended
22   used for browsers that don't support cookies
24 function session_uri(uri) {
25         return uri + global.SESSIONURI;
29   like printf, but to the web page
31 function writef()
33         write(vsprintf(arguments));
37   like writef with a <br>
39 function writefln()
41         write(vsprintf(arguments));
42         write("<br/>\n");
46 /* if the browser was too dumb to set the HOST header, then
47    set it now */
48 if (headers['HOST'] == undefined) {
49         headers['HOST'] = server['SERVER_HOST'] + ":" + server['SERVER_PORT'];
53   show the page header. page types include "plain" and "column" 
55 function 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");
63   show the page footer, getting the page type from page.pagetype
64   set in page_header()
66 function page_footer() {
67         include("/scripting/footer_" + global.page.pagetype + ".esp");
72   display a table element
74 function 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");
93   display a ejs object as a table. The header is optional
95 function 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");
108   display an array of objects, with the header for each element from the given 
109   attribute
111 function 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");