menu.php3 17.9 KB
Newer Older
1
<?php
Leigh B. Stoller's avatar
Leigh B. Stoller committed
2 3
#
# EMULAB-COPYRIGHT
4
# Copyright (c) 2000-2003 University of Utah and the Flux Group.
Leigh B. Stoller's avatar
Leigh B. Stoller committed
5 6
# All rights reserved.
#
7

8
$login_status     = CHECKLOGIN_NOTLOGGEDIN;
9
$login_uid        = 0;
10
$drewheader       = 0;
11

12 13 14 15 16 17
#
# This has to be set so we can spit out http or https paths properly!
# Thats because browsers do not like a mix of secure and nonsecure.
# 
$BASEPATH	  = "";

18 19 20 21 22
#
# WRITESIDEBARBUTTON(text, link): Write a button on the sidebar menu.
# We do not currently try to match the current selection so that its
# link looks different. Not sure its really necessary.
#
Chad Barb's avatar
 
Chad Barb committed
23
function WRITESIDEBARBUTTON($text, $base, $link ) {
24
    $link = "$base/$link";
Chad Barb's avatar
 
Chad Barb committed
25
    echo "<tr><td class=\"menuopt\"><a href=\"$link\">$text</a></td></tr>\n";
Chad Barb's avatar
 
Chad Barb committed
26
}
27

Chad Barb's avatar
 
Chad Barb committed
28 29 30
# same as above with "new" gif next to it.
function WRITESIDEBARBUTTON_NEW($text, $base, $link ) {
    $link = "$base/$link";
Chad Barb's avatar
 
Chad Barb committed
31 32
    echo "<tr><td class=\"menuopt\"><a href=\"$link\">$text</a>&nbsp;";
    echo "<img src=\"/new.gif\" /></td></tr>\n";
Chad Barb's avatar
 
Chad Barb committed
33 34
}

Chad Barb's avatar
 
Chad Barb committed
35 36 37 38 39 40 41
# same as above with "cool" gif next to it.
function WRITESIDEBARBUTTON_COOL($text, $base, $link ) {
    $link = "$base/$link";
    echo "<tr><td class=\"menuopt\"><a href=\"$link\">$text</a>&nbsp;";
    echo "<img src=\"/cool.gif\" /></td></tr>\n";
}

Leigh B. Stoller's avatar
Leigh B. Stoller committed
42 43
function WRITESIDEBARBUTTON_ABS($text, $base, $link ) {
    $link = "$link";
Chad Barb's avatar
 
Chad Barb committed
44
    echo "<tr><td class=\"menuopt\"><a href=\"$link\">$text</a></td></tr>\n";
Leigh B. Stoller's avatar
Leigh B. Stoller committed
45 46
}

Chad Barb's avatar
 
Chad Barb committed
47 48 49 50 51
# same as above, but uses a slightly different style sheet so there
# is more padding below the last button.
# The devil is, indeed, in the details.
function WRITESIDEBARLASTBUTTON($text, $base, $link) {
    $link = "$base/$link";
Chad Barb's avatar
 
Chad Barb committed
52
    echo "<tr><td class=\"menuoptb\"><a href=\"$link\">$text</a></td></tr>\n";
Chad Barb's avatar
 
Chad Barb committed
53 54 55 56
}

# writes a message to the sidebar, without clickability.
function WRITESIDEBARNOTICE($text) {
Chad Barb's avatar
 
Chad Barb committed
57
    echo "<tr><td class=\"menuopt\"><b>$text</b></td></tr>\n";
58 59 60 61 62 63 64
}

#
# WRITESIDEBAR(): Write the menu. The actual menu options the user
# sees depends on the login status and the DB status.
#
function WRITESIDEBAR() {
65 66
    global $login_status, $login_uid;
    global $TBBASE, $TBDOCBASE, $BASEPATH;
67
    global $THISHOMEBASE;
68 69 70

    #
    # The document base cannot be a mix of secure and nonsecure.
71
    #
Chad Barb's avatar
 
Chad Barb committed
72 73 74 75 76 77 78 79
    
    # create the main menu table, which also happens to reside in a form
    # (for search.)
?>
<FORM method=get ACTION="/cgi-bin/webglimpse/usr/testbed/webglimpse">
  <table class="menu" width=220 cellpadding="0" cellspacing="0">
    <tr><td class="menuheader"><b>Information</b></td></tr>
<?php
80
    WRITESIDEBARBUTTON("Home", $TBDOCBASE, "index.php3");
81
    WRITESIDEBARBUTTON_ABS("Univ. Kentucky Emulab", $TBDOCBASE,
Leigh B. Stoller's avatar
Leigh B. Stoller committed
82 83
			   "http://www.uky.emulab.net");
    
Chad Barb's avatar
 
Chad Barb committed
84
    WRITESIDEBARBUTTON_COOL("Join Netbed (CD)",
85
			   $TBDOCBASE, "cdrom.php");
Chad Barb's avatar
 
Chad Barb committed
86

Jay Lepreau's avatar
Jay Lepreau committed
87
    WRITESIDEBARBUTTON("News (August&nbsp;15)", $TBDOCBASE,
88
		       "docwrapper.php3?docname=news.html");
89
    WRITESIDEBARBUTTON("Documentation", $TBDOCBASE, "doc.php3");
Chad Barb's avatar
 
Chad Barb committed
90 91
    WRITESIDEBARBUTTON("Papers", $TBDOCBASE, "pubs.php3");
    WRITESIDEBARBUTTON("Software", $TBDOCBASE, "software.php3");
92
    WRITESIDEBARBUTTON("People", $TBDOCBASE, "people.php3");
93
    WRITESIDEBARBUTTON("Photo Gallery", $TBDOCBASE, "gallery/gallery.php3");
Chad Barb's avatar
 
Chad Barb committed
94
    WRITESIDEBARBUTTON("Projects on Emulab", $TBDOCBASE,
95
		       "projectlist.php3");
Chad Barb's avatar
 
Chad Barb committed
96
    WRITESIDEBARLASTBUTTON("Sponsors", $TBDOCBASE,
Mike Hibler's avatar
Mike Hibler committed
97
		       "docwrapper.php3?docname=sponsors.html");
98

Chad Barb's avatar
 
Chad Barb committed
99 100 101 102 103 104
    # create the search bit, then the second table for the Web Interface.
?>
    <tr><td class="menuoptst"><b>Search Documentation:</b></td></tr>
    <tr><td class="menuopts"><input name=query />
      <input type=submit style="font-size:10px;" value="Go" /></td></tr>
      <tr><td class="menuoptsb" style="font-size:12px;" >[
Chad Barb's avatar
 
Chad Barb committed
105 106
      <a href="<?php echo "$TBDOCBASE/search.php3"; ?>">Advanced 
      Search</a> ]</td></tr>
Chad Barb's avatar
 
Chad Barb committed
107 108 109 110 111
    </td></tr>  
  </table>
</form>
<table class="menu" width=220 cellpadding="0" cellspacing="0">
    <tr><td class="menuheader"><b>Interaction</b></td></tr>
Chad Barb's avatar
 
Chad Barb committed
112
<?php # BACK TO PHP
113

114
    if ($login_status & CHECKLOGIN_LOGGEDIN) {
Chad Barb's avatar
 
Chad Barb committed
115 116
         $freepcs = TBFreePCs();
	 WRITESIDEBARNOTICE( "($freepcs Free PCs.)" );
117
    }
118

119 120 121 122 123 124 125 126
    #
    # Basically, we want to let admin people continue to use
    # the web interface even when nologins set. But, we want to make
    # it clear its disabled.
    # 
    if (NOLOGINS()) {
        WRITESIDEBARBUTTON("<font color=red> ".
			   "Web Interface Temporarily Unavailable</font>",
127 128
			   $TBDOCBASE, "nologins.php3");

Chad Barb's avatar
 
Chad Barb committed
129 130 131
        if (!$login_uid || !ISADMIN($login_uid)) {	
	    WRITESIDEBARNOTICE("Please Try Again Later");
        }
132
    }
Chad Barb's avatar
 
Chad Barb committed
133

134 135 136
    if ($login_status & (CHECKLOGIN_LOGGEDIN|CHECKLOGIN_MAYBEVALID)) {
	if ($login_status & CHECKLOGIN_ACTIVE) {
	    if ($login_status & CHECKLOGIN_PSWDEXPIRED) {
137
		WRITESIDEBARBUTTON("Change Your Password",
138
				   $TBBASE, "moduserinfo.php3");
139
	    }
140 141 142 143 144 145 146 147
	    elseif ($login_status & CHECKLOGIN_WEBONLY) {
		WRITESIDEBARBUTTON("My Emulab",
				   $TBBASE,
				   "showuser.php3?target_uid=$login_uid");
	    
		WRITESIDEBARBUTTON("Update User Information",
				   $TBBASE, "moduserinfo.php3");
	    }
148
	    else {
Leigh B. Stoller's avatar
Leigh B. Stoller committed
149
		WRITESIDEBARBUTTON("My Emulab",
150 151
				   $TBBASE,
				   "showuser.php3?target_uid=$login_uid");
152
	    
153
		if (ISADMIN($login_uid)) {
154 155
		    WRITESIDEBARBUTTON("New Project Approval",
				       $TBBASE, "approveproject_list.php3");
156 157 158

		    WRITESIDEBARBUTTON("Widearea User Approval",
				       $TBBASE, "approvewauser_form.php3");
159 160
		}
		if ($login_status & CHECKLOGIN_TRUSTED) {
161 162 163
                  # Only project/group leaders can do these options
                  # Show a "new" icon if there are people waiting for approval
		  $query_result =
164 165 166
		    DBQueryFatal("select g.* from group_membership as authed ".
				 "left join group_membership as g on ".
				 " g.pid=authed.pid and g.gid=authed.gid ".
167
				 "left join users as u on u.uid=g.uid ".
168
				 "where u.status!='".
169
				 TBDB_USERSTATUS_UNVERIFIED . "' and ".
170 171 172 173 174 175
				 " u.status!='" . TBDB_USERSTATUS_NEWUSER . 
				 "' and g.uid!='$login_uid' and ".
				 "  g.trust='". TBDB_TRUSTSTRING_NONE . "' ".
				 "  and authed.uid='$login_uid' and ".
				 "  (authed.trust='group_root' or ".
				 "   authed.trust='project_root') ".
176 177 178 179 180
				 "ORDER BY g.uid,g.pid,g.gid");
		  if (mysql_num_rows($query_result) > 0) {
		    WRITESIDEBARBUTTON_NEW("New User Approval",
					   $TBBASE, "approveuser_form.php3");
		  } else {
181 182

		      WRITESIDEBARBUTTON("New User Approval",
183
				       $TBBASE, "approveuser_form.php3");
184
		  }
185
		}
186

187 188
                #
                # Since a user can be a member of more than one project,
189 190
                # display this option, and let the form decide if the 
                # user is allowed to do this.
191
                #
Leigh B. Stoller's avatar
Leigh B. Stoller committed
192
		WRITESIDEBARBUTTON("Project List",
193
				   $TBBASE, "showproject_list.php3");
194
	    
195
		if (ISADMIN($login_uid)) {
196 197 198 199
		    WRITESIDEBARBUTTON("User List",
				       $TBBASE, "showuser_list.php3");
		}
	    
Leigh B. Stoller's avatar
Leigh B. Stoller committed
200 201
		WRITESIDEBARBUTTON("Experiment List",
				   $TBBASE, "showexp_list.php3");
202 203
		WRITESIDEBARBUTTON("Begin an Experiment",
				   $TBBASE, "beginexp.php3");
Leigh B. Stoller's avatar
Leigh B. Stoller committed
204 205
		WRITESIDEBARBUTTON("OSIDs and ImageIDs",
				   $TBBASE, "showosid_list.php3");
206
		WRITESIDEBARBUTTON("Update User Information",
207 208
				   $TBBASE, "moduserinfo.php3");
		WRITESIDEBARBUTTON("Node Reservation Status",
209
				   $TBBASE, "nodecontrol_list.php3");
210 211 212 213 214 215 216
		WRITESIDEBARBUTTON("Node Up/Down Status",
				   $TBDOCBASE, "updown.php3");
		
		if ($login_status & CHECKLOGIN_CVSWEB) {
		    WRITESIDEBARBUTTON("CVS Repository",
				       $TBBASE, "cvsweb/cvsweb.php3");
		}
217
	    }
218
	}
219
	elseif ($login_status & (CHECKLOGIN_UNVERIFIED|CHECKLOGIN_NEWUSER)) {
220 221
	    WRITESIDEBARBUTTON("New User Verification",
			       $TBBASE, "verifyusr_form.php3");
222
	    WRITESIDEBARBUTTON("Update User Information",
223
			       $TBBASE, "moduserinfo.php3");
224
	}
225
	elseif ($login_status & (CHECKLOGIN_UNAPPROVED)) {
226
	    WRITESIDEBARBUTTON("Update User Information",
227
			       $TBBASE, "moduserinfo.php3");
228
	}
229 230 231
	#
	# Standard options for logged in users!
	# 
232
	WRITESIDEBARBUTTON("Start Project", $TBBASE, "newproject.php3");
Chad Barb's avatar
 
Chad Barb committed
233
	WRITESIDEBARLASTBUTTON("Join Project",  $TBBASE, "joinproject.php3");
234
    }
235 236 237 238 239 240 241 242 243
    else {
        #
        # Standard options for anyone else not logged in.
        #
        if (! NOLOGINS()) {
	    WRITESIDEBARLASTBUTTON("Request Account",
				   $TBBASE, "reqaccount.php3");
	}
    }
244

245 246 247 248 249
    #
    # Cons up a nice message.
    # 
    switch ($login_status & CHECKLOGIN_STATUSMASK) {
    case CHECKLOGIN_LOGGEDIN:
Chad Barb's avatar
 
Chad Barb committed
250
	$login_message = "&quot;$login_uid&quot; Logged In.";
251 252
	    
	if ($login_status & CHECKLOGIN_PSWDEXPIRED)
253
	    $login_message = "$login_message<br>(Password Expired!)";
254 255
	elseif ($login_status & CHECKLOGIN_UNAPPROVED)
	    $login_message = "$login_message<br>(Unapproved!)";
256
	break;
257
    case CHECKLOGIN_TIMEDOUT:
258 259
	$login_message = "Login Timed Out";
	break;
260 261
    default:
	$login_message = 0;
262
	break;
263 264
    }

Chad Barb's avatar
 
Chad Barb committed
265
    if ($login_message) {
Chad Barb's avatar
 
Chad Barb committed
266 267 268 269
      echo "<tr>";
      echo "<td class=\"menufooter\"><center><b>";
      echo "$login_message</b></center></td>";
      echo "</tr>";
Chad Barb's avatar
 
Chad Barb committed
270 271
    }

272 273
    #
    # Now the login/logout box. Remember, already inside a table.
274 275
    # We want the links to the login/logout pages to always be https,
    # but the images path depends on whether the page was loaded as
276
    # http or https, since we do not want to mix them, since they
277
    # cause warnings.
278
    # 
279
    if ($login_status & (CHECKLOGIN_LOGGEDIN|CHECKLOGIN_MAYBEVALID)) {
Chad Barb's avatar
 
Chad Barb committed
280 281 282 283 284 285
      echo "<tr>";
      echo "<td class=\"menufooter\" align=center valign=center>";
      echo "<a href=\"$TBBASE/logout.php3?uid=$login_uid\">";
      echo "<img alt=\"logoff\" border=0 ";
      echo "src=\"$BASEPATH/logoff.gif\"></a>\n";
      echo "</td></tr>\n";
286
    }
287
    elseif (!NOLOGINS()) {
Chad Barb's avatar
 
Chad Barb committed
288 289 290 291 292 293
      echo "<tr>";
      echo "<td class=\"menufooter\" align=center valign=center>";
      echo "<a href=\"$TBBASE/login.php3\">";
      echo "<img alt=\"logon\" border=0 ";
      echo "src=\"$BASEPATH/logon.gif\"></a>\n";
      echo "</td></tr>\n";
294
    }
295

Chad Barb's avatar
 
Chad Barb committed
296

297
    #
298
    # MOTD. Set this with the webcontrol script.
299
    #
300 301
    $query_result =
	DBQueryFatal("SELECT message FROM loginmessage");
302 303 304 305
    
    if (mysql_num_rows($query_result)) {
    	$row = mysql_fetch_row($query_result);
	$message = $row[0];
306

Chad Barb's avatar
 
Chad Barb committed
307 308
	# XXX: make this red and big (like the old one)?
	WRITESIDEBARNOTICE($message);    
309
    }
Chad Barb's avatar
 
Chad Barb committed
310
    echo "</table>\n";
311 312
}

Chad Barb's avatar
 
Chad Barb committed
313 314 315 316
#
# spits out beginning part of page
#
function PAGEBEGINNING( $title ) {
Chad Barb's avatar
 
Chad Barb committed
317
    global $BASEPATH, $TBMAINSITE, $THISHOMEBASE;
Chad Barb's avatar
 
Chad Barb committed
318 319 320 321 322
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
 "http://www.w3.org/TR/html4/loose.dtd">
<html>
  <head>
Chad Barb's avatar
 
Chad Barb committed
323
    <title><?php echo "$THISHOMEBASE - $title"; ?></title>
Chad Barb's avatar
 
Chad Barb committed
324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342
    <!-- dumbed-down style sheet for any browser that groks (eg NS47). -->
    <link REL="stylesheet" HREF="<?php echo "$BASEPATH/common-style.css" ?>" 
          TYPE="text/css" />
    <!-- don't import full style sheet into NS47, since it does a bad job
         of handling it. NS47 doesn't understand '@import'. -->
    <style type="text/css" media="all">
    <!-- @import "<?php echo "$BASEPATH/style.css" ?>"; --></style>
<?php if ($TBMAINSITE) { ?>
    <meta NAME="keywords" CONTENT="network, emulation, internet, emulator">
    <meta NAME="ROBOTS" CONTENT="NOARCHIVE">
<?php } ?>
  </head>
  <body bgcolor="#FFFFFF" topmargin=0 leftmargin=0 
        marginheight=0 marginwidth=0>
    <table cellpadding="0" cellspacing="0" width="100%">
      <tr>
        <td valign="top" class="bannercell" 
            background="<?php echo "$BASEPATH/headerbgbb.jpg" ?>"
            bgcolor=#3D627F ><img width=369 height=100 
Chad Barb's avatar
 
Chad Barb committed
343 344 345
            src="<?php echo "$BASEPATH/overlay." . strtolower($THISHOMEBASE) 
                                                 . ".gif" ?>" 
            alt="<?php echo "$THISHOMEBASE" ?> - the network testbed" /></td>
Chad Barb's avatar
 
Chad Barb committed
346
      </tr>
347 348
    </table>
    <table cellpadding="8" cellspacing="0" height="100%" width="100%">
Chad Barb's avatar
 
Chad Barb committed
349 350 351 352 353 354 355 356 357 358 359 360 361 362
      <tr height=100%>
        <td valign="top" class="leftcell" bgcolor=#ccddee>
<!-- sidebar begins -->
<?php
}

#
# finishes sidebar td
#
function FINISHSIDEBAR()
{
?>
<!-- sidebar ends -->
        </td>
363 364 365
        <td valign="top" width="100%" class="rightcell">
          <!-- content body table -->
          <table class="content" width="100%" cellpadding="0" cellspacing="0">
Chad Barb's avatar
 
Chad Barb committed
366
            <tr>
367
              <td class="contentheader">
Chad Barb's avatar
 
Chad Barb committed
368 369 370
<?php
}

371 372 373 374
#
# Spit out a vanilla page header.
#
function PAGEHEADER($title) {
375 376
    global $login_status, $login_uid, $TBBASE, $TBDOCBASE, $THISHOMEBASE;
    global $BASEPATH, $SSL_PROTOCOL, $drewheader;
377
    global $TBMAINSITE;
378 379

    $drewheader = 1;
380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395

    #
    # Determine the proper basepath, which depends on whether the page
    # was loaded as http or https. This lets us be consistent in the URLs
    # we spit back, so that users do not get those pesky warnings. These
    # warnings are generated when a page *loads* (say, images, style files),
    # a mix of http and https. Links can be mixed, and in fact when there
    # is no login active, we want to spit back http for the documentation,
    # but https for the start/join pages.
    #
    if (isset($SSL_PROTOCOL)) {
	$BASEPATH = $TBBASE;
    }
    else {
	$BASEPATH = $TBDOCBASE;
    }
396

397
    #
398
    # Figure out who is logged in, if anyone.
399
    # 
400 401 402 403
    if (($known_uid = GETUID()) != FALSE) {
        #
        # Check to make sure the UID is logged in (not timed out).
        #
404 405 406
        $login_status = CHECKLOGIN($known_uid);
	if ($login_status & (CHECKLOGIN_LOGGEDIN|CHECKLOGIN_MAYBEVALID)) {
	    $login_uid = $known_uid;
407 408 409
	}
    }

410
    #
411 412
    # Check for NOLOGINS. 
    # We want to allow admin types to continue using the web interface,
413 414
    # and logout anyone else that is currently logged in!
    #
415 416 417 418
    if (NOLOGINS() && $login_uid && !ISADMIN($login_uid)) {
	DOLOGOUT($login_uid);
	$login_status = CHECKLOGIN_NOTLOGGEDIN;
	$login_uid    = 0;
419
    }
420
    
421 422
    header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
    
423
    if (1) {
424 425 426 427 428 429 430
	header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
	header("Cache-Control: no-cache, must-revalidate");
	header("Pragma: no-cache");
    }
    else {
	header("Expires: " . gmdate("D, d M Y H:i:s", time() + 300) . " GMT"); 
    }
Chad Barb's avatar
 
Chad Barb committed
431 432 433 434

    PAGEBEGINNING( $title );
    WRITESIDEBAR();
    FINISHSIDEBAR();
435
    echo "<h2 class=\"nomargin\">\n";
Chad Barb's avatar
 
Chad Barb committed
436

Chad Barb's avatar
 
Chad Barb committed
437 438 439 440 441 442 443 444 445 446 447
    if ($login_uid && ISADMININSTRATOR()) {
	if (ISADMIN($login_uid)) {
	    echo "<a href=adminmode.php3?target_uid=$login_uid&adminoff=1>
	             <img src='/redball.gif'
                          border=0 alt='Admin On'></a>\n";
	}
	else {
	    echo "<a href=adminmode.php3?target_uid=$login_uid&adminoff=0>
	             <img src='/greenball.gif'
                          border=0 alt='Admin Off'></a>\n";
	}
448
    }
449 450 451 452
    $now = date("D M d g:ia T");
    echo "$title</h2></td>\n";
    echo "<td class=\"contentheader\" align=right>$now</td></tr>\n";
    echo "<tr><td colspan=2 class=\"contentbody\" width=*>";
Chad Barb's avatar
 
Chad Barb committed
453
    echo "<!-- begin content -->\n";
454 455 456 457 458 459
}

#
# ENDPAGE(): This terminates the table started above.
# 
function ENDPAGE() {
Chad Barb's avatar
 
Chad Barb committed
460 461
  echo "</td></tr></table>";
  echo "</td></tr></table>";
462 463 464 465 466 467
}

#
# Spit out a vanilla page footer.
#
function PAGEFOOTER() {
468
    global $TBDOCBASE, $TBMAILADDR, $THISHOMEBASE;
Leigh B. Stoller's avatar
Leigh B. Stoller committed
469
    global $TBMAINSITE, $SSL_PROTOCOL;
470

Chad Barb's avatar
 
Chad Barb committed
471 472 473 474 475 476 477
#    echo "<!-- Force full window! -->
#	  <base target=_top>

?>
<!-- end content -->
              </td>
            </tr><tr>
478
              <td colspan=2 class="contentbody">
479
	        <center><font size=-1>
480
		[&nbsp;<a href="http://www.cs.utah.edu/flux/"
481 482
                >The&nbsp;Flux&nbsp;Research&nbsp;Group</a>&nbsp;]
		[&nbsp;<a href="http://www.cs.utah.edu/"
483
                >School&nbsp;of&nbsp;Computing</a>&nbsp;]
484
		[&nbsp;<a href="http://www.utah.edu/"
485 486 487
                >The&nbsp;University&nbsp;of&nbsp;Utah</a>&nbsp;]
		</font>
		<br>
Chad Barb's avatar
 
Chad Barb committed
488
                <!-- begin copyright -->
489
                <font size=-2>
Chad Barb's avatar
 
Chad Barb committed
490
<a href="<?php echo "$TBDOCBASE"; ?>/docwrapper.php3?docname=copyright.html">
491
                    Copyright &copy; 2000-2002 The University of Utah</a>
Chad Barb's avatar
 
Chad Barb committed
492 493
                  </font>
                  <br />
494 495
		</center>
                <p align=right>
Chad Barb's avatar
 
Chad Barb committed
496 497 498 499 500 501 502 503 504
		  <font size=-2>
                    Problems?
	            Contact <?php echo "$TBMAILADDR\n"; ?>
                  </font>
                </p>
                <!-- end copyright -->
<?php

    ENDPAGE();
505 506 507

    if ($TBMAINSITE) {
	echo "<p>
Chad Barb's avatar
 
Chad Barb committed
508
              <a href=\"$TBDOCBASE/netemu.php3\"></a>\n";#
Leigh B. Stoller's avatar
Leigh B. Stoller committed
509 510 511 512 513 514 515 516

	if (! isset($SSL_PROTOCOL)) {
	    echo "<a href=http://www.addme.com>
	             <img width=8 height=2
	                 src='http://www.addme.com/link8.gif'
   	                 alt='Add Me!' border=0>
	          </a>\n";
	}
517
    }
Chad Barb's avatar
 
Chad Barb committed
518
    echo "</body></html>\n";
519
}
520 521 522 523 524 525 526 527 528 529 530 531

function PAGEERROR($msg) {
    global $drewheader;

    if (! $drewheader)
	PAGEHEADER("");

    echo "$msg\n";

    PAGEFOOTER();
    die("");
}
532 533 534 535 536

#
# Sub Page/Menu Stuff
#
function WRITESUBMENUBUTTON($text, $link) {
Chad Barb's avatar
 
Chad Barb committed
537 538


539 540 541 542 543 544 545 546 547 548 549 550 551 552 553
    echo "<!-- Table row for button $text -->
          <tr>
            <td valign=center align=left nowrap>
                <b>
         	 <a class=sidebarbutton href='$link'>$text</a>\n";

    echo "      </b>
            </td>
          </tr>\n";
}

#
# Start/End a page within a page. 
#
function SUBPAGESTART() {
Chad Barb's avatar
 
Chad Barb committed
554
    echo "<!-- begin subpage -->";
Chad Barb's avatar
 
Chad Barb committed
555 556
    echo "<table class=\"stealth\" cellspacing=0 cellpadding=0 width='85%' 
          border=0>\n
557
            <tr>\n
Chad Barb's avatar
 
Chad Barb committed
558
              <td class=\"stealth\"valign=top>\n";
559 560 561 562 563 564
}

function SUBPAGEEND() {
    echo "    </td>\n
            </tr>\n
          </table>\n";
Chad Barb's avatar
 
Chad Barb committed
565
    echo "<!-- end subpage -->";
566 567 568 569 570 571 572
}

#
# Start/End a sub menu, located in the upper left of the main frame.
# Note that these cannot be used outside of the SUBPAGE macros above.
#
function SUBMENUSTART($title) {
Chad Barb's avatar
 
Chad Barb committed
573 574 575 576 577 578 579
?>
    <!-- begin submenu -->
    <table class="menu" width=200 cellpadding="0" cellspacing="0">
      <tr>
        <td class="menuheader"><b><?php echo "$title";?></b></td>
      </tr>
<?php
580 581 582
}

function SUBMENUEND() {
Chad Barb's avatar
 
Chad Barb committed
583 584 585 586 587 588
?>
    </table>
    <!-- end submenu -->
  </td>
  <td class="stealth" valign=top align=left width='85%'>
<?php
589 590
}

Chad Barb's avatar
 
Chad Barb committed
591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607

# These are here so you can wedge something else under the menu in the left column.

function SUBMENUEND_2A() {
?>
    </table>
    <!-- end submenu -->
<?php
}

function SUBMENUEND_2B() {
?>
  </td>
  <td class="stealth" valign=top align=left width='85%'>
<?php
}

608
?>