3 #theme_prebody - called just before the main body of every page, so it can print any HTML it likes.
4 #theme_postbody - called just after the main body of every page.
5 #theme_header - called instead of the normal header function, with the same parameters. You could use this to re-write the header function in your own style with help and index links whereever you want them.
6 #theme_footer - called instead of the footer function with the same parameters.
7 #theme_error - called instead of the error function, with the same parameters.
10 '100.gif', [ 10, 16 ],
11 '101.gif', [ 11, 16 ],
13 '103.gif', [ 10, 16 ],
19 '109.gif', [ 14, 16 ],
21 '111.gif', [ 11, 16 ],
22 '112.gif', [ 10, 16 ],
23 '113.gif', [ 10, 16 ],
28 '118.gif', [ 10, 16 ],
29 '119.gif', [ 13, 16 ],
30 '120.gif', [ 10, 16 ],
31 '121.gif', [ 10, 16 ],
37 '177.iso-8859-2.gif', [ 10, 16 ],
38 '179.iso-8859-2.gif', [ 7, 16 ],
39 '182.iso-8859-2.gif', [ 9, 16 ],
40 '188.iso-8859-2.gif', [ 9, 16 ],
41 '191.iso-8859-2.gif', [ 9, 16 ],
42 '192.gif', [ 12, 16 ],
43 '193.gif', [ 12, 16 ],
44 '194.gif', [ 11, 16 ],
45 '195.gif', [ 12, 16 ],
46 '196.gif', [ 12, 16 ],
47 '197.gif', [ 12, 16 ],
48 '198.gif', [ 13, 16 ],
49 '199.gif', [ 12, 16 ],
58 '208.gif', [ 11, 16 ],
59 '208.iso-8859-9.gif', [ 13, 16 ],
60 '209.gif', [ 10, 16 ],
61 '210.gif', [ 13, 16 ],
62 '211.gif', [ 13, 16 ],
63 '211.iso-8859-2.gif', [ 13, 16 ],
64 '212.gif', [ 12, 16 ],
65 '213.gif', [ 13, 16 ],
66 '214.gif', [ 13, 16 ],
67 '214.iso-8859-9.gif', [ 13, 16 ],
69 '216.gif', [ 13, 16 ],
74 '220.iso-8859-9.gif', [ 9, 16 ],
75 '221.gif', [ 11, 16 ],
76 '221.iso-8859-9.gif', [ 5, 16 ],
78 '222.iso-8859-9.gif', [ 11, 16 ],
80 '224.gif', [ 10, 16 ],
81 '225.gif', [ 10, 16 ],
82 '226.gif', [ 11, 16 ],
83 '227.gif', [ 10, 16 ],
84 '228.gif', [ 10, 16 ],
85 '229.gif', [ 11, 16 ],
86 '230.gif', [ 16, 16 ],
87 '230.iso-8859-2.gif', [ 9, 16 ],
88 '231.gif', [ 10, 16 ],
89 '231.iso-8859-9.gif', [ 10, 16 ],
90 '231.iso.8859-9.gif', [ 10, 16 ],
91 '232.gif', [ 11, 16 ],
92 '233.gif', [ 11, 16 ],
93 '234.gif', [ 11, 16 ],
94 '234.iso-8859-2.gif', [ 9, 16 ],
95 '235.gif', [ 11, 16 ],
100 '240.gif', [ 10, 16 ],
101 '240.iso-8859-9.gif', [ 10, 16 ],
102 '241.gif', [ 9, 16 ],
103 '241.iso-8859-2.gif', [ 9, 16 ],
104 '242.gif', [ 11, 16 ],
105 '243.gif', [ 11, 16 ],
106 '243.iso-8859-2.gif', [ 11, 16 ],
107 '244.gif', [ 11, 16 ],
108 '245.gif', [ 11, 16 ],
109 '246.gif', [ 11, 16 ],
110 '246.iso-8859-9.gif', [ 11, 16 ],
111 '247.gif', [ 9, 16 ],
112 '248.gif', [ 10, 16 ],
113 '249.gif', [ 9, 16 ],
114 '250.gif', [ 9, 16 ],
115 '251.gif', [ 9, 16 ],
116 '252.gif', [ 9, 16 ],
117 '252.iso-8859-9.gif', [ 9, 16 ],
118 '253.gif', [ 10, 16 ],
119 '253.iso-8859-9.gif', [ 5, 16 ],
120 '254.gif', [ 10, 16 ],
121 '255.gif', [ 9, 16 ],
127 '37.gif', [ 13, 16 ],
128 '38.gif', [ 11, 16 ],
142 '52.gif', [ 10, 16 ],
144 '54.gif', [ 10, 16 ],
147 '57.gif', [ 10, 16 ],
151 '61.gif', [ 10, 16 ],
152 '62.gif', [ 10, 16 ],
154 '64.gif', [ 12, 16 ],
155 '65.gif', [ 12, 16 ],
157 '67.gif', [ 12, 16 ],
158 '68.gif', [ 10, 16 ],
161 '71.gif', [ 13, 16 ],
167 '77.gif', [ 12, 16 ],
168 '78.gif', [ 10, 16 ],
169 '79.gif', [ 12, 16 ],
171 '81.gif', [ 13, 16 ],
176 '86.gif', [ 11, 16 ],
177 '87.gif', [ 14, 16 ],
178 '88.gif', [ 11, 16 ],
179 '89.gif', [ 11, 16 ],
186 '97.gif', [ 11, 16 ],
187 '98.gif', [ 10, 16 ],
193 local @available = ("webmin", "system", "servers", "cluster", "hardware", "", "net", "kororaweb");
196 local %access = &get_module_acl();
197 local %gaccess = &get_module_acl(undef, "");
198 print "<!doctype html public \"-//W3C//DTD HTML 3.2 Final//EN\">\n";
200 local $os_type = $gconfig{'real_os_type'} ? $gconfig{'real_os_type'}
201 : $gconfig{'os_type'};
202 local $os_version = $gconfig{'real_os_version'} ? $gconfig{'real_os_version'}
203 : $gconfig{'os_version'};
206 print "<meta http-equiv=\"Content-Type\" ",
207 "content=\"text/html; Charset=$charset\">\n";
209 print "<link rel='icon' href='/images/webmin_icon.png' type='image/png'>\n";
211 if ($gconfig{'sysinfo'} == 1) {
212 printf "<title>%s : %s on %s (%s %s)</title>\n",
213 $_[0], $remote_user, &get_system_hostname(),
214 $os_type, $os_version;
217 print "<title>$_[0]</title>\n";
219 print $_[7] if ($_[7]);
220 if ($gconfig{'sysinfo'} == 0 && $remote_user) {
221 print "<SCRIPT LANGUAGE=\"JavaScript\">\n";
223 "defaultStatus=\"%s%s logged into %s %s on %s (%s %s)\";\n",
224 $ENV{'ANONYMOUS_USER'} ? "Anonymous user" : $remote_user,
225 $ENV{'SSL_USER'} ? " (SSL certified)" :
226 $ENV{'LOCAL_USER'} ? " (Local user)" : "",
227 $text{'programname'},
228 &get_webmin_version(), &get_system_hostname(),
229 $os_type, $os_version;
231 #########JAVA & CSS FOR MENUS START###########
240 function showMenu(cat) {
243 r.style.display='none'
245 r = document.getElementById(cat)
259 function hideMenu() {
261 r.style.display='none'
266 function mouseover(image_name, image_over) {
267 this.document[image_name].src= image_over;
270 function mouseout(image_name, image_out) {
271 this.document[image_name].src=image_out;
277 <style type="text/css">
280 border: 1px groove gray;
281 background: lightgrey;
287 font: 1em sans-serif;
288 text-decoration: none;
292 border-bottom: 1px solid silver;
302 border-bottom: 1px solid silver;
303 font: 1em sans-serif;
304 list-style-type: none;
312 #########JAVA & CSS FOR MENUS STOP###########
317 @msc_modules = &get_available_module_infos()
318 if (!scalar(@msc_modules));
321 if ($theme_no_table) {
322 print '<body bgcolor=#6696bc link=#000000 vlink=#000000 text=#000000 leftmargin="0" topmargin="0" marginwidth="0" marginheight="0" '.$_[8].'>';
325 print '<body bgcolor=#6696bc link=#000000 vlink=#000000 text=#000000 leftmargin="0" topmargin="0" marginwidth="0" marginheight="0" '.$_[8].'>';
328 if ($remote_user && @_ > 1) {
329 # Show basic header with webmin.com link and logout button
330 local $logout = $main::session_id ? "/session_login.cgi?logout=1"
331 : "/switch_user.cgi";
332 local $loicon = $main::session_id ? "logout.jpg" : "switch.jpg";
333 local $lowidth = $main::session_id ? 84 : 27;
334 local $lotext = $main::session_id ? $text{'main_logout'}
335 : $text{'main_switch'};
337 <table width="100%" border="0" cellspacing="0" cellpadding="0" background="/images/top_bar/bg.jpg" height="32">
339 <td width="4" nowrap><img src="/images/top_bar/left.jpg" width="4" height="32"></td>
340 <td width="100%" nowrap><a href="http://www.webmin.com"><img src="/images/top_bar/webmin_logo.jpg" width="99" height="32" border="0" alt="Webmin home page"></a></td>~;
341 if (!$ENV{'ANONYMOUS_USER'}) {
342 if ($gconfig{'nofeedbackcc'} != 2 && $gaccess{'feedback'}) {
343 print qq~<td><a href='/feedback_form.cgi?module=$module_name'><img src=/images/top_bar/feedback.jpg width=97 height=32 alt="$text{'main_feedback'}" border=0></a></td>~;
345 if (!$ENV{'SSL_USER'} && !$ENV{'LOCAL_USER'} &&
346 !$ENV{'HTTP_WEBMIN_SERVERS'}) {
347 if ($gconfig{'nofeedbackcc'} != 2 &&
348 $gaccess{'feedback'}) {
349 print qq~<td><img src=/images/top_bar/top_sep.jpg width=12 height=32></td>~;
351 print qq~<td width="84" nowrap><a href='$logout'><img src="/images/top_bar/$loicon" height="31" width=$lowidth border="0" alt="$lotext"></a></td>~;
354 print qq~<td width="3" nowrap>
355 <div align="right"><img src="/images/top_bar/right.jpg" width="3" height="32"></div>
361 local $one = @msc_modules == 1 && $gconfig{'gotoone'};
362 local $notabs = $gconfig{"notabs_${base_remote_user}"} == 2 ||
363 $gconfig{"notabs_${base_remote_user}"} == 0 && $gconfig{'notabs'};
364 if (@_ > 1 && !$one && $remote_user && !$notabs) {
365 # Display module categories
366 print qq~<table width="100%" border="0" cellspacing="0" cellpadding="0" height="7">
368 <td background="/images/top_bar/shadow_bg.jpg" nowrap><img src="/images/top_bar/shadow.jpg" width="8" height="7"></td>
373 &read_file("$config_directory/webmin.catnames", \%catnames);
374 foreach $m (@msc_modules) {
375 local $c = $m->{'category'};
377 if (defined($catnames{$c})) {
378 $cats{$c} = $catnames{$c};
380 elsif ($text{"category_$c"}) {
381 $cats{$c} = $text{"category_$c"};
384 # try to get category name from module ..
385 local %mtext = &load_language($m->{'dir'});
386 if ($mtext{"category_$c"}) {
387 $cats{$c} = $mtext{"category_$c"};
390 $c = $m->{'category'} = "";
391 $cats{$c} = $text{"category_$c"};
395 @cats = sort { $b cmp $a } keys %cats;
397 $per = $cats ? 100.0 / $cats : 100;
399 if ($theme_index_page) {
400 if (!defined($in{'cat'})) {
402 # Use default category
403 if (defined($gconfig{'deftab'}) &&
404 &indexof($gconfig{'deftab'}, @cats) >= 0) {
405 $in{'cat'} = $gconfig{'deftab'};
408 $in{'cat'} = $cats[0];
411 elsif (!$cats{$in{'cat'}}) {
416 #####Navigation Bar START#####
417 print qq~<table width="100%" border="0" cellspacing="0" cellpadding="0" height="57" background="/images/nav/bg.jpg">
418 <tr background="/images/nav/bg.jpg">
419 <td width="6" nowrap><img src="/images/nav/left.jpg" width="3" height="57"></td>~;
422 local $t = $cats{$c};
424 foreach $testet (@available) {
429 if ($in{'cat'} eq $c && $theme_index_page) {
430 if ($inlist eq "true") {
434 ###OTHER MENU [ACTIVE]
436 print qq~<td nowrap><center><a href="/?cat=" onMouseOver="showMenu('other_menu');"><img src="/images/cats/other_over.jpg" alt="$t" width="43" height="44" border="0" name="other_image"></a><img src="/images/list.gif" width="10" height="44" border="0" onClick="setLive(); showMenu('other_menu');" onMouseOver="showMenu('other_menu');"><br><a href="/?cat=" onMouseOver="showMenu('other_menu');">~;
440 print "</a></center>";
443 <td width="17" nowrap><img src="/images/nav/sep.jpg" width="17" height="57"></td>~;
444 } elsif ($c eq "webmin") {
446 ###WEBMIN MENU [ACTIVE]
449 print qq~<td nowrap><center><a href="/?cat=$c" onMouseOver="if (menuLive) showMenu('$c\_menu');"><img src="/images/cats/$c\_over.jpg" alt="$t" width="43" height="44" border="0"></a><img src="/images/list.gif" width="10" height="44" border="0" onClick="setLive(); showMenu('$c\_menu');" onMouseOver="if (menuLive) showMenu('$c\_menu');"><a href="/?cat=$c" onMouseOver="if (menuLive) showMenu('$c\_menu');"><br>~;
453 print "</a></center>";
456 <td width="17" nowrap><img src="/images/nav/sep.jpg" width="17" height="57"></td>~;
459 ###UNKNOWN MENU [ACTIVE]
461 print qq~<td nowrap><center><a href="/?cat=$c" onMouseOver="if (menuLive) showMenu('$c\_menu');"><img src="/images/cats/unknown_over.jpg" alt="$t" width="43" height="44" border="0"></a><img src="/images/list.gif" width="10" height="44" border="0" onClick="setLive(); showMenu('$c\_menu');" onMouseOver="if (menuLive) showMenu('$c\_menu');"><a href="/?cat=$c" onMouseOver="if (menuLive) showMenu('$c\_menu');"><br>~;
463 print "</a></center>";
466 <td width="17" nowrap><img src="/images/nav/sep.jpg" width="17" height="57"></td>~;
470 ###REST OF MENUS [ACTIVE]
472 print qq~<td nowrap><center><a href="/?cat=$c" onMouseOver="if (menuLive) showMenu('$c\_menu');"><img src="/images/cats/$c\_over.jpg" alt="$t" width="43" height="44" border="0"></a><img src="/images/list.gif" width="10" height="44" border="0" onClick="setLive(); showMenu('$c\_menu');" onMouseOver="if (menuLive) showMenu('$c\_menu');"><a href="/?cat=$c" onMouseOver="if (menuLive) showMenu('$c\_menu');"><br>~;
476 print "</a></center>";
479 <td width="17" nowrap><img src="/images/nav/sep.jpg" width="17" height="57"></td>~;
484 ###UNKNOWN CATAGORY [ACTIVE]
486 print qq~<td nowrap><center><a href="/?cat=$c" onMouseOver="if (menuLive) showMenu('$c\_menu');"><img src="/images/cats/unknown_over.jpg" alt="$t" width="43" height="44" border="0"></a><img src="/images/list.gif" width="10" height="44" border="0" onClick="setLive(); showMenu('$c\_menu');" onMouseOver="if (menuLive) showMenu('$c\_menu');"><a href="/?cat=$c" onMouseOver="if (menuLive) showMenu('$c\_menu');"><br>~;
490 print "</a></center>";
493 <td width="17" nowrap><img src="/images/nav/sep.jpg" width="17" height="57"></td>~;
497 if ($inlist eq "true") {
500 ###OTHER MENU [NON-ACTIVE]
502 print qq~<td nowrap><center><a href="/?cat=" onMouseOver="showMenu('other_menu'); mouseover('other_image','/images/cats/other_over.jpg');" onMouseOut="mouseout('other_image','/images/cats/other.jpg');"><img src="/images/cats/other.jpg" alt="$t" width="43" height="44" border="0" name="other_image"></a><img src="/images/list.gif" width="10" height="44" border="0" onClick="setLive(); showMenu('other_menu');" onMouseOver="showMenu('other_menu'); mouseover('other_image','/images/cats/other_over.jpg');" onMouseOut="mouseout('other_image','/images/cats/other.jpg');"><a href="/?cat=" onMouseOver="showMenu('other_menu'); mouseover('other_image','/images/cats/other_over.jpg');" onMouseOut="mouseout('other_image','/images/cats/other.jpg');"><br>~;
507 print "</a></center>";
510 <td width="17" nowrap><img src="/images/nav/sep.jpg" width="17" height="57"></td>~;
513 ###REST OF MENUS [NON-ACTIVE]
514 print qq~<td nowrap><center><a href="/?cat=$c" onMouseOver="if (menuLive) showMenu('$c\_menu'); mouseover('$c\_image','/images/cats/$c\_over.jpg');" onMouseOut="mouseout('$c\_image','/images/cats/$c.jpg');"><img src="/images/cats/$c.jpg" alt="$t" width="43" height="44" border="0" name="$c\_image"></a><img src="/images/list.gif" width="10" height="44" border="0" onClick="setLive(); showMenu('$c\_menu');" onMouseOver="if (menuLive) showMenu('$c\_menu'); mouseover('$c\_image','/images/cats/$c\_over.jpg');" onMouseOut="mouseout('$c\_image','/images/cats/$c.jpg');"><a href="/?cat=$c" onMouseOver="if (menuLive) showMenu('$c\_menu'); mouseover('$c\_image','/images/cats/$c\_over.jpg');" onMouseOut="mouseout('$c\_image','/images/cats/$c.jpg');"><br>~;
519 print "</a></center>";
522 <td width="17" nowrap><img src="/images/nav/sep.jpg" width="17" height="57"></td>~;
526 ###UNKNOWN CATAGORY [NON-ACTIVE]
528 print qq~<td nowrap><center><a href="/?cat=$c" onMouseOver="if (menuLive) showMenu('$c\_menu'); mouseover('$c\_image','/images/cats/unknown_over.jpg');" onMouseOut="mouseout('$c\_image','/images/cats/unknown.jpg');"><img src="/images/cats/unknown.jpg" alt="$t" width="43" height="44" border="0" name="$c\_image"></a><img src="/images/list.gif" width="10" height="44" border="0" onClick="setLive(); showMenu('$c\_menu');" onMouseOver="if (menuLive) showMenu('$c\_menu'); mouseover('$c\_image','/images/cats/unknown_over.jpg');" onMouseOut="mouseout('$c\_image','/images/cats/unknown.jpg');"><a href="/?cat=$c" onMouseOver="if (menuLive) showMenu('$c\_menu'); mouseover('$c\_image','/images/cats/unknown_over.jpg');" onMouseOut="mouseout('$c\_image','/images/cats/unknown.jpg');"><br>~;
532 print "</a></center>";
535 <td width="17" nowrap><img src="/images/nav/sep.jpg" width="17" height="57"></td>~;
541 print qq~<td width="100%" nowrap><div onClick="hideMenu(); if (menuLive) setLive();"> </td>
542 <td nowrap> </td>
545 print qq~<div onClick="hideMenu(); if (menuLive) setLive();"><table width="100%" border="0" cellspacing="0" cellpadding="0" background="/images/nav/bottom_bg.jpg" height="4">
547 <td width="100%"><img src="/images/nav/bottom_left.jpg" width="3" height="4"></td>
552 if (@_ > 1 && (!$_[5] || $ENV{'HTTP_WEBMIN_SERVERS'})) {
553 # Show tabs under module categories
554 print qq~<table width="100%" border="0" cellspacing="0" cellpadding="0" background="/images/nav/bottom_shadow2.jpg"> <tr background="/images/nav/bottom_shadow2.jpg">~;
556 if ($gconfig{'sysinfo'} == 2 && $remote_user) {
558 printf "%s%s logged into %s %s on %s (%s%s)</td>\n",
559 $ENV{'ANONYMOUS_USER'} ? "Anonymous user" : "<tt>$remote_user</tt>",
560 $ENV{'SSL_USER'} ? " (SSL certified)" :
561 $ENV{'LOCAL_USER'} ? " (Local user)" : "",
562 $text{'programname'},
563 $version, "<tt>".&get_system_hostname()."</tt>",
564 $os_type, $os_version eq "*" ? "" : " $os_version";
567 if ($ENV{'HTTP_WEBMIN_SERVERS'}) {
569 print "<a href='$ENV{'HTTP_WEBMIN_SERVERS'}'>",
570 "$text{'header_servers'}</a><br>\n";
573 if ($notabs && !$_[5]) {
575 print "<a href='$gconfig{'webprefix'}/?cat=$module_info{'category'}'>$text{'header_webmin'}</a><br>\n";
579 local $mi = $module_index_link ||
580 $module_name ? "/$module_name/" : "/";
581 &tab_start; print "<a href=\"$gconfig{'webprefix'}$mi\">",
582 "$text{'header_module'}</a>"; &tab_end;
584 if (ref($_[2]) eq "ARRAY" && !$ENV{'ANONYMOUS_USER'}) {
585 &tab_start; print &hlink($text{'header_help'}, $_[2]->[0], $_[2]->[1]); &tab_end;
587 elsif (defined($_[2]) && !$ENV{'ANONYMOUS_USER'}) {
588 &tab_start; print &hlink($text{'header_help'}, $_[2]); &tab_end;
591 if (!$access{'noconfig'}) {
592 &tab_start; print "<a href=\"/config.cgi?$module_name\">",
593 $text{'header_config'},"</a>"; &tab_end;
597 foreach $t (split(/<br>/, $_[6])) {
599 &tab_start; print $t; &tab_end;
604 <td nowrap width="100%" background="/images/nav/bottom_shadow2.jpg" valign="top">
606 <table width="100%" border="0" cellspacing="0" cellpadding="0" background="/images/nav/bottom_shadow2.jpg">
608 <td><img src="/unauthenticated/nav/bottom_shadow.jpg" width="43" height="9"></td>
618 # Show page title in tab
619 local $title = $_[0];
620 $title =~ s/ä/ä/g;
621 $title =~ s/ö/ö/g;
622 $title =~ s/ü/ü/g;
623 $title =~ s/ / /g;
625 print "<p><table border=0 cellpadding=0 cellspacing=0 width=95% align=center><tr><td><table border=0 cellpadding=0 cellspacing=0 height=20><tr>\n";
626 print "<td bgcolor=#bae3ff>",
627 "<img src=/images/tabs/blue_left.jpg width=13 height=22 ",
628 "alt=\"\">","</td>\n";
629 print "<td bgcolor=#bae3ff> <b>$title</b> </td>\n";
630 print "<td bgcolor=#bae3ff>",
631 "<img src=/images/tabs/blue_right.jpg width=19 height=22 ",
632 "alt=\"\">","</td>\n";
634 print "</tr></table></td> <td align=right><table border=0 cellpadding=0 cellspacing=0 height=20><tr>\n";
635 print "<td bgcolor=#bae3ff>",
636 "<img src=/images/tabs/blue_left.jpg width=13 height=22 ",
637 "alt=\"\">","</td>\n";
638 print "<td bgcolor=#bae3ff> <b>$_[9]</b> </td>\n";
639 print "<td bgcolor=#bae3ff>",
640 "<img src=/images/tabs/blue_right.jpg width=19 height=22",
641 " alt=\"\">","</td>\n";
643 print "</tr></table></td></tr></table>";
648 print qq~<table width="100%" border="0" cellspacing="0" cellpadding="0" background="/unauthenticated/nav/bottom_shadow.jpg">
650 <td width="100%" nowrap><img src="/unauthenticated/nav/bottom_shadow.jpg" width="43" height="9"></td>
654 @header_arguments = @_;
659 if ($theme_no_table) {
663 #print "<table border=0 width=95% align=center cellspacing=0 cellpadding=0><tr><td background=/images/msctile2.jpg>\n";
664 print "<table border=0 width=95% align=center cellspacing=0 cellpadding=0><tr><td bgcolor=#ffffff>\n";
665 print "<table border=0 width=95% align=center cellspacing=0 cellpadding=0><tr><td>\n";
672 if ($theme_no_table) {
675 elsif (@header_arguments > 1 && !$header_arguments[5]) {
676 print "</table></table><br>\n";
679 print "<table border=0 width=100% align=center cellspacing=0 cellpadding=0 bgcolor=#6696bc><tr><td>\n";
681 for($i=0; $i+1<@_; $i+=2) {
684 $url = "/?cat=$module_info{'category'}";
686 elsif ($url eq '' && $module_name) {
687 $url = "/$module_name/";
689 elsif ($url =~ /^\?/ && $module_name) {
690 $url = "/$module_name/$url";
693 print " <a href=\"$url\"><img alt=\"<-\" align=middle border=0 src=/images/arrow.jpg></a>\n";
698 print " <a href=\"$url\">",&text('main_return', $_[$i+1]),"</a>\n";
700 print "</td></tr></table>\n";
704 local $postbody = $tconfig{'postbody'};
706 local $hostname = &get_system_hostname();
707 local $version = &get_webmin_version();
708 local $os_type = $gconfig{'real_os_type'} ?
709 $gconfig{'real_os_type'} : $gconfig{'os_type'};
710 local $os_version = $gconfig{'real_os_version'} ?
711 $gconfig{'real_os_version'} : $gconfig{'os_version'};
712 $postbody =~ s/%HOSTNAME%/$hostname/g;
713 $postbody =~ s/%VERSION%/$version/g;
714 $postbody =~ s/%USER%/$remote_user/g;
715 $postbody =~ s/%OS%/$os_type $os_version/g;
718 if ($tconfig{'postbodyinclude'}) {
719 open(INC, $module_name ?
720 "../$gconfig{'theme'}/$tconfig{'postbodyinclude'}" :
721 "$gconfig{'theme'}/$tconfig{'postbodyinclude'}");
727 if (defined(&theme_postbody)) {
730 print "</div></body></html>\n";
744 if (!$current_lang_info->{'titles'} || $gconfig{'texttitles'}) {
747 foreach $l (split(//, $t)) {
750 if ($ll > 127 && $current_lang_info->{'charset'}) {
751 $gif = "$ll.$current_lang_info->{'charset'}.gif";
756 local $sz = $letter_sizes{$gif};
757 printf "<img src=/images/letters2/%s width=%d height=%d alt=\"%s\" align=bottom border=0>",
758 $gif, $sz->[0], $sz->[1], $ll eq " " ? " " : $l;
764 print qq~ <td nowrap>
765 <table border="0" cellspacing="0" cellpadding="0">
767 <td background="/images/tabs/bg.jpg"><img src="/images/tabs/left.jpg" width="12" height="21" nowrap></td>
768 <td background="/images/tabs/bg.jpg" nowrap>
775 <td background="/images/tabs/bg.jpg" nowrap><img src="/images/tabs/right.jpg" width="15" height="21"></td>
778 <td nowrap><img src="/images/tabs/right_bottom.jpg" width="12" height="4"></td>
779 <td background="/images/tabs/bottom.jpg" nowrap><img src="/images/tabs/bottom.jpg" width="17" height="4"></td>
780 <td nowrap><img src="/images/tabs/left_bottom.jpg" width="15" height="4"></td> </tr>
788 if ($c eq "") { $tmpid = "other"; }
789 else { $tmpid = $c; }
792 if ($c eq "") { $tmpimg = "other"; }
793 if ($inlist eq "true" && $c ne "") { $tmpimg = "$c"; }
794 if ($inlist ne "true" && $c ne "") { $tmpimg = "unknown"; }
796 if ($in{'cat'} eq $c) {
798 <div id="$tmpid\_menu" class="menucontainer" style="display:none" align="left">
799 <div id="$tmpid\_menu" class="title_menu"><center>$t</center></a></div>
803 <div id="$tmpid\_menu" class="menucontainer" style="display:none" align="left" onMouseOver="mouseover('$tmpid\_image','/images/cats/$tmpimg\_over.jpg');" onMouseOut="mouseout('$tmpid\_image','/images/cats/$tmpimg.jpg');">
804 <div id="$tmpid\_menu" class="title_menu"><center>$t</center></a></div>
808 foreach $m (@msc_modules) {
809 next if ($m->{'category'} ne $c);
810 print "<div id=\"$tmpid\_menu\" class=\"menu\">";
811 print "<a href=/$m->{'dir'}/>";
812 print "<div id=\"$tmpid\_menu\">";
813 print "<img src=\"/$m->{'dir'}/images/icon.gif\" width=\"20\" height=\"20\" border=\"0\"> $m->{'desc'}";
814 print "</div></a></div>";