menu.php3 18.6 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
    
    # create the main menu table, which also happens to reside in a form
    # (for search.)
Chad Barb's avatar
 
Chad Barb committed
75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104

    #
    # get post time of most recent news;
    # get both displayable version and age in days.
    #
    $query_result = 
	DBQueryFatal("SELECT DATE_FORMAT(date, '%M&nbsp;%e') AS prettydate, ".
		     " (TO_DAYS(NOW()) - TO_DAYS(date)) AS age ".
		     "FROM webnews ".
		     "ORDER BY date DESC ".
		     "LIMIT 1");
    $newsDate = "";
    $newNews  = 0;

    #
    # This is so an admin can use the editing features of news.
    #
    if ($login_uid) { # && ISADMIN($login_uid)) { 
	$newsBase = $TBBASE; 
    } else {
	$newsBase = $TBDOCBASE;
    }

    if ($row = mysql_fetch_array($query_result)) {
	$newsDate = "(".$row[prettydate].")";
	if ($row[age] < 7) {
	    $newNews = 1;
	}
    }

Chad Barb's avatar
 
Chad Barb committed
105 106 107 108 109
?>
<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
110
    WRITESIDEBARBUTTON("Home", $TBDOCBASE, "index.php3");
111
    WRITESIDEBARBUTTON_ABS("Univ. Kentucky Emulab", $TBDOCBASE,
Leigh B. Stoller's avatar
Leigh B. Stoller committed
112 113
			   "http://www.uky.emulab.net");
    
Chad Barb's avatar
 
Chad Barb committed
114
    WRITESIDEBARBUTTON_COOL("Join Netbed (CD)",
115
			   $TBDOCBASE, "cdrom.php");
Chad Barb's avatar
 
Chad Barb committed
116

Chad Barb's avatar
 
Chad Barb committed
117 118 119 120 121 122
    if ($newNews) {
	WRITESIDEBARBUTTON_NEW("News $newsDate", $newsBase, "news.php3");
    } else {
	WRITESIDEBARBUTTON("News $newsDate", $newsBase, "news.php3");
    }

123
    WRITESIDEBARBUTTON("Documentation", $TBDOCBASE, "doc.php3");
Chad Barb's avatar
 
Chad Barb committed
124 125
    WRITESIDEBARBUTTON("Papers", $TBDOCBASE, "pubs.php3");
    WRITESIDEBARBUTTON("Software", $TBDOCBASE, "software.php3");
126
    WRITESIDEBARBUTTON("People", $TBDOCBASE, "people.php3");
127
    WRITESIDEBARBUTTON("Photo Gallery", $TBDOCBASE, "gallery/gallery.php3");
Chad Barb's avatar
 
Chad Barb committed
128
    WRITESIDEBARBUTTON("Projects on Emulab", $TBDOCBASE,
129
		       "projectlist.php3");
Chad Barb's avatar
 
Chad Barb committed
130
    WRITESIDEBARLASTBUTTON("Sponsors", $TBDOCBASE,
Mike Hibler's avatar
Mike Hibler committed
131
		       "docwrapper.php3?docname=sponsors.html");
132

Chad Barb's avatar
 
Chad Barb committed
133 134 135 136 137 138
    # 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
139 140
      <a href="<?php echo "$TBDOCBASE/search.php3"; ?>">Advanced 
      Search</a> ]</td></tr>
Chad Barb's avatar
 
Chad Barb committed
141 142 143 144 145
    </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
146
<?php # BACK TO PHP
147

148
    if ($login_status & CHECKLOGIN_LOGGEDIN) {
Chad Barb's avatar
 
Chad Barb committed
149 150
         $freepcs = TBFreePCs();
	 WRITESIDEBARNOTICE( "($freepcs Free PCs.)" );
151
    }
152

153 154 155 156 157 158 159 160
    #
    # 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>",
161 162
			   $TBDOCBASE, "nologins.php3");

Chad Barb's avatar
 
Chad Barb committed
163 164 165
        if (!$login_uid || !ISADMIN($login_uid)) {	
	    WRITESIDEBARNOTICE("Please Try Again Later");
        }
166
    }
Chad Barb's avatar
 
Chad Barb committed
167

168 169 170
    if ($login_status & (CHECKLOGIN_LOGGEDIN|CHECKLOGIN_MAYBEVALID)) {
	if ($login_status & CHECKLOGIN_ACTIVE) {
	    if ($login_status & CHECKLOGIN_PSWDEXPIRED) {
171
		WRITESIDEBARBUTTON("Change Your Password",
172
				   $TBBASE, "moduserinfo.php3");
173
	    }
174 175 176 177 178 179 180 181
	    elseif ($login_status & CHECKLOGIN_WEBONLY) {
		WRITESIDEBARBUTTON("My Emulab",
				   $TBBASE,
				   "showuser.php3?target_uid=$login_uid");
	    
		WRITESIDEBARBUTTON("Update User Information",
				   $TBBASE, "moduserinfo.php3");
	    }
182
	    else {
Leigh B. Stoller's avatar
Leigh B. Stoller committed
183
		WRITESIDEBARBUTTON("My Emulab",
184 185
				   $TBBASE,
				   "showuser.php3?target_uid=$login_uid");
186
	    
187
		if (ISADMIN($login_uid)) {
188 189
		    WRITESIDEBARBUTTON("New Project Approval",
				       $TBBASE, "approveproject_list.php3");
190 191 192

		    WRITESIDEBARBUTTON("Widearea User Approval",
				       $TBBASE, "approvewauser_form.php3");
193 194
		}
		if ($login_status & CHECKLOGIN_TRUSTED) {
195 196 197
                  # Only project/group leaders can do these options
                  # Show a "new" icon if there are people waiting for approval
		  $query_result =
198 199 200
		    DBQueryFatal("select g.* from group_membership as authed ".
				 "left join group_membership as g on ".
				 " g.pid=authed.pid and g.gid=authed.gid ".
201
				 "left join users as u on u.uid=g.uid ".
202
				 "where u.status!='".
203
				 TBDB_USERSTATUS_UNVERIFIED . "' and ".
204 205 206 207 208 209
				 " 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') ".
210 211 212 213 214
				 "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 {
215 216

		      WRITESIDEBARBUTTON("New User Approval",
217
				       $TBBASE, "approveuser_form.php3");
218
		  }
219
		}
220

221 222
                #
                # Since a user can be a member of more than one project,
223 224
                # display this option, and let the form decide if the 
                # user is allowed to do this.
225
                #
Leigh B. Stoller's avatar
Leigh B. Stoller committed
226
		WRITESIDEBARBUTTON("Project List",
227
				   $TBBASE, "showproject_list.php3");
228
	    
229
		if (ISADMIN($login_uid)) {
230 231 232 233
		    WRITESIDEBARBUTTON("User List",
				       $TBBASE, "showuser_list.php3");
		}
	    
Leigh B. Stoller's avatar
Leigh B. Stoller committed
234 235
		WRITESIDEBARBUTTON("Experiment List",
				   $TBBASE, "showexp_list.php3");
236 237
		WRITESIDEBARBUTTON("Begin an Experiment",
				   $TBBASE, "beginexp.php3");
238 239
		WRITESIDEBARBUTTON("ImageIDs and OSIDs",
				   $TBBASE, "showimageid_list.php3");
240
		WRITESIDEBARBUTTON("Update User Information",
241 242
				   $TBBASE, "moduserinfo.php3");
		WRITESIDEBARBUTTON("Node Reservation Status",
243
				   $TBBASE, "nodecontrol_list.php3");
244 245 246 247 248 249 250
		WRITESIDEBARBUTTON("Node Up/Down Status",
				   $TBDOCBASE, "updown.php3");
		
		if ($login_status & CHECKLOGIN_CVSWEB) {
		    WRITESIDEBARBUTTON("CVS Repository",
				       $TBBASE, "cvsweb/cvsweb.php3");
		}
251
	    }
252
	}
253
	elseif ($login_status & (CHECKLOGIN_UNVERIFIED|CHECKLOGIN_NEWUSER)) {
254 255
	    WRITESIDEBARBUTTON("New User Verification",
			       $TBBASE, "verifyusr_form.php3");
256
	    WRITESIDEBARBUTTON("Update User Information",
257
			       $TBBASE, "moduserinfo.php3");
258
	}
259
	elseif ($login_status & (CHECKLOGIN_UNAPPROVED)) {
260
	    WRITESIDEBARBUTTON("Update User Information",
261
			       $TBBASE, "moduserinfo.php3");
262
	}
263 264 265
	#
	# Standard options for logged in users!
	# 
266
	WRITESIDEBARBUTTON("Start Project", $TBBASE, "newproject.php3");
Chad Barb's avatar
 
Chad Barb committed
267
	WRITESIDEBARLASTBUTTON("Join Project",  $TBBASE, "joinproject.php3");
268
    }
269 270 271 272 273 274 275 276 277
    else {
        #
        # Standard options for anyone else not logged in.
        #
        if (! NOLOGINS()) {
	    WRITESIDEBARLASTBUTTON("Request Account",
				   $TBBASE, "reqaccount.php3");
	}
    }
278

279 280 281 282 283
    #
    # Cons up a nice message.
    # 
    switch ($login_status & CHECKLOGIN_STATUSMASK) {
    case CHECKLOGIN_LOGGEDIN:
Chad Barb's avatar
 
Chad Barb committed
284
	$login_message = "&quot;$login_uid&quot; Logged In.";
285 286
	    
	if ($login_status & CHECKLOGIN_PSWDEXPIRED)
287
	    $login_message = "$login_message<br>(Password Expired!)";
288 289
	elseif ($login_status & CHECKLOGIN_UNAPPROVED)
	    $login_message = "$login_message<br>(Unapproved!)";
290
	break;
291
    case CHECKLOGIN_TIMEDOUT:
292 293
	$login_message = "Login Timed Out";
	break;
294 295
    default:
	$login_message = 0;
296
	break;
297 298
    }

Chad Barb's avatar
 
Chad Barb committed
299
    if ($login_message) {
Chad Barb's avatar
 
Chad Barb committed
300 301 302 303
      echo "<tr>";
      echo "<td class=\"menufooter\"><center><b>";
      echo "$login_message</b></center></td>";
      echo "</tr>";
Chad Barb's avatar
 
Chad Barb committed
304 305
    }

306 307
    #
    # Now the login/logout box. Remember, already inside a table.
308 309
    # 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
310
    # http or https, since we do not want to mix them, since they
311
    # cause warnings.
312
    # 
313
    if ($login_status & (CHECKLOGIN_LOGGEDIN|CHECKLOGIN_MAYBEVALID)) {
Chad Barb's avatar
 
Chad Barb committed
314 315 316 317 318 319
      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";
320
    }
321
    elseif (!NOLOGINS()) {
Chad Barb's avatar
 
Chad Barb committed
322 323 324 325 326 327
      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";
328
    }
329

Chad Barb's avatar
 
Chad Barb committed
330

331
    #
332
    # MOTD. Set this with the webcontrol script.
333
    #
334 335
    $query_result =
	DBQueryFatal("SELECT message FROM loginmessage");
336 337 338 339
    
    if (mysql_num_rows($query_result)) {
    	$row = mysql_fetch_row($query_result);
	$message = $row[0];
340

Chad Barb's avatar
 
Chad Barb committed
341 342
	# XXX: make this red and big (like the old one)?
	WRITESIDEBARNOTICE($message);    
343
    }
Chad Barb's avatar
 
Chad Barb committed
344
    echo "</table>\n";
345 346
}

Chad Barb's avatar
 
Chad Barb committed
347 348 349 350
#
# spits out beginning part of page
#
function PAGEBEGINNING( $title ) {
Chad Barb's avatar
 
Chad Barb committed
351
    global $BASEPATH, $TBMAINSITE, $THISHOMEBASE;
Chad Barb's avatar
 
Chad Barb committed
352 353 354 355 356
?>
<!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
357
    <title><?php echo "$THISHOMEBASE - $title"; ?></title>
Chad Barb's avatar
 
Chad Barb committed
358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376
    <!-- 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
377 378 379
            src="<?php echo "$BASEPATH/overlay." . strtolower($THISHOMEBASE) 
                                                 . ".gif" ?>" 
            alt="<?php echo "$THISHOMEBASE" ?> - the network testbed" /></td>
Chad Barb's avatar
 
Chad Barb committed
380
      </tr>
381 382
    </table>
    <table cellpadding="8" cellspacing="0" height="100%" width="100%">
Chad Barb's avatar
 
Chad Barb committed
383 384 385 386 387 388 389 390 391 392 393 394 395 396
      <tr height=100%>
        <td valign="top" class="leftcell" bgcolor=#ccddee>
<!-- sidebar begins -->
<?php
}

#
# finishes sidebar td
#
function FINISHSIDEBAR()
{
?>
<!-- sidebar ends -->
        </td>
397 398 399
        <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
400
            <tr>
401
              <td class="contentheader">
Chad Barb's avatar
 
Chad Barb committed
402 403 404
<?php
}

405 406 407 408
#
# Spit out a vanilla page header.
#
function PAGEHEADER($title) {
409 410
    global $login_status, $login_uid, $TBBASE, $TBDOCBASE, $THISHOMEBASE;
    global $BASEPATH, $SSL_PROTOCOL, $drewheader;
411
    global $TBMAINSITE;
412 413

    $drewheader = 1;
414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429

    #
    # 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;
    }
430

431
    #
432
    # Figure out who is logged in, if anyone.
433
    # 
434 435 436 437
    if (($known_uid = GETUID()) != FALSE) {
        #
        # Check to make sure the UID is logged in (not timed out).
        #
438 439 440
        $login_status = CHECKLOGIN($known_uid);
	if ($login_status & (CHECKLOGIN_LOGGEDIN|CHECKLOGIN_MAYBEVALID)) {
	    $login_uid = $known_uid;
441 442 443
	}
    }

444
    #
445 446
    # Check for NOLOGINS. 
    # We want to allow admin types to continue using the web interface,
447 448
    # and logout anyone else that is currently logged in!
    #
449 450 451 452
    if (NOLOGINS() && $login_uid && !ISADMIN($login_uid)) {
	DOLOGOUT($login_uid);
	$login_status = CHECKLOGIN_NOTLOGGEDIN;
	$login_uid    = 0;
453
    }
454
    
455 456
    header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
    
457
    if (1) {
458 459 460 461 462 463 464
	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
465 466 467 468

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

Chad Barb's avatar
 
Chad Barb committed
471 472 473 474 475 476 477 478 479 480 481
    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";
	}
482
    }
483 484 485 486
    $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
487
    echo "<!-- begin content -->\n";
488 489 490 491 492 493
}

#
# ENDPAGE(): This terminates the table started above.
# 
function ENDPAGE() {
Chad Barb's avatar
 
Chad Barb committed
494 495
  echo "</td></tr></table>";
  echo "</td></tr></table>";
496 497 498 499 500 501
}

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

Chad Barb's avatar
 
Chad Barb committed
505 506 507 508 509 510 511
#    echo "<!-- Force full window! -->
#	  <base target=_top>

?>
<!-- end content -->
              </td>
            </tr><tr>
512
              <td colspan=2 class="contentbody">
513
	        <center><font size=-1>
514
		[&nbsp;<a href="http://www.cs.utah.edu/flux/"
515 516
                >The&nbsp;Flux&nbsp;Research&nbsp;Group</a>&nbsp;]
		[&nbsp;<a href="http://www.cs.utah.edu/"
517
                >School&nbsp;of&nbsp;Computing</a>&nbsp;]
518
		[&nbsp;<a href="http://www.utah.edu/"
519 520 521
                >The&nbsp;University&nbsp;of&nbsp;Utah</a>&nbsp;]
		</font>
		<br>
Chad Barb's avatar
 
Chad Barb committed
522
                <!-- begin copyright -->
523
                <font size=-2>
Chad Barb's avatar
 
Chad Barb committed
524
<a href="<?php echo "$TBDOCBASE"; ?>/docwrapper.php3?docname=copyright.html">
525
                    Copyright &copy; 2000-2002 The University of Utah</a>
Chad Barb's avatar
 
Chad Barb committed
526 527
                  </font>
                  <br />
528 529
		</center>
                <p align=right>
Chad Barb's avatar
 
Chad Barb committed
530 531 532 533 534 535 536 537 538
		  <font size=-2>
                    Problems?
	            Contact <?php echo "$TBMAILADDR\n"; ?>
                  </font>
                </p>
                <!-- end copyright -->
<?php

    ENDPAGE();
539 540 541

    if ($TBMAINSITE) {
	echo "<p>
Chad Barb's avatar
 
Chad Barb committed
542
              <a href=\"$TBDOCBASE/netemu.php3\"></a>\n";#
Leigh B. Stoller's avatar
Leigh B. Stoller committed
543 544 545 546 547 548 549 550

	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";
	}
551
    }
Chad Barb's avatar
 
Chad Barb committed
552
    echo "</body></html>\n";
553
}
554 555 556 557 558 559 560 561 562 563 564 565

function PAGEERROR($msg) {
    global $drewheader;

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

    echo "$msg\n";

    PAGEFOOTER();
    die("");
}
566 567 568 569 570

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


573 574 575 576 577 578 579 580 581 582 583 584 585 586 587
    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
588
    echo "<!-- begin subpage -->";
Chad Barb's avatar
 
Chad Barb committed
589 590
    echo "<table class=\"stealth\" cellspacing=0 cellpadding=0 width='85%' 
          border=0>\n
591
            <tr>\n
Chad Barb's avatar
 
Chad Barb committed
592
              <td class=\"stealth\"valign=top>\n";
593 594 595 596 597 598
}

function SUBPAGEEND() {
    echo "    </td>\n
            </tr>\n
          </table>\n";
Chad Barb's avatar
 
Chad Barb committed
599
    echo "<!-- end subpage -->";
600 601 602 603 604 605 606
}

#
# 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
607 608 609 610 611 612 613
?>
    <!-- begin submenu -->
    <table class="menu" width=200 cellpadding="0" cellspacing="0">
      <tr>
        <td class="menuheader"><b><?php echo "$title";?></b></td>
      </tr>
<?php
614 615 616
}

function SUBMENUEND() {
Chad Barb's avatar
 
Chad Barb committed
617 618 619 620 621 622
?>
    </table>
    <!-- end submenu -->
  </td>
  <td class="stealth" valign=top align=left width='85%'>
<?php
623 624
}

Chad Barb's avatar
 
Chad Barb committed
625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641

# 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
}

642
?>