New version of the web site. Yes, the change is as big as it looks. :)

This commit is contained in:
Jeff Teunissen 2007-03-09 17:16:17 +00:00
parent db512e0d46
commit 4c73904770
37 changed files with 1277 additions and 550 deletions

View file

@ -1,7 +1,6 @@
<? // Preamble
$pageName = "About QuakeForge";
$focused = "none"; // Dock icon name to gets a border
$currPage = "about"; // Name of the page, for the menu
$currPage = "about"; // Name of the page, for menu/dock
require "parts/preamble.php"; // Load most of document
?>
<!--SEARCHME-->
@ -18,7 +17,7 @@ We're working hard to fix these problems at the engine level.
<P>But what good is that if you have to have a copy of our client and the
server has to run our server? There are other projects out there and some of
them have very unique qualities. QuakeForge is cooperating with
<A HREF="http://www.quakesrc.org">QSG</A>, a group comprised of representatives
<A href="http://www.quakesrc.org">QSG</A>, a group comprised of representatives
from nearly every known Quake source project to ensure that our clients and
servers run with other clients and servers just fine. We have all agreed to
implement any effective cheat prevention methods.

View file

@ -6,6 +6,8 @@
?>
<?
need ("table");
function doc_list ($title, $list, $type)
{
?>

View file

@ -1,5 +1,5 @@
<? // Preamble
$pageName = "Files";
$pageName = "Downloads";
$focused = "download"; // Dock icon name to get a border
$currPage = "files"; // Name of the page, for the menu
require "parts/preamble.php"; // Load most of document

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.5 KiB

BIN
img/partners/3dfx.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.9 KiB

After

Width:  |  Height:  |  Size: 6.3 KiB

View file

@ -1,33 +1,17 @@
<? // Preamble
$pageName = "News";
$focused = "home"; // Dock icon name to get a border
$pageName = "Welcome!";
$currPage = "home"; // Name of the page, for the menu
require "parts/preamble.php"; // Load most of document
?>
<!--SEARCHME-->
<TABLE width="100%" cellSpacing="0" cellPadding="0" border="0">
<TR vAlign="top">
<TD colSpan="2"><? // News display
tableBoxHeader (featureBgColor, featureHeadColor);
tableTitle ('Latest News', 1, featureHeadColor);
need ("news");
$cached = latestNews (5);
tableBoxFooter ();
?></TD>
</TR>
<TR vAlign="top">
<? tableSpacer (9, 1, 1, black); ?>
</TR>
<TR vAlign="top">
<TD align="center">
<? include "sponsor_incl.html"; ?>
</TD>
</TR>
<TR vAlign="top">
<? tableSpacer (9, 1, 1, black); ?>
</TR>
</TABLE>
<!--NOSEARCH-->
<DIV class="newsBox">
<DIV class="newsTitle"><H2>Latest News</H2></DIV>
<? // News display
need ("news");
$cached = latestNews (5);
?>
<DIV class="newsTitle"><A href="old_news.php">Older News...</A></DIV>
</DIV>
<!--<? include "sponsor_incl.html"; ?>-->
<?
require "parts/postamble.php"; // Finish this sucker up
?>

View file

@ -32,46 +32,30 @@
require siteHome . '/../etc/sql.conf';
}
global $userInfo;
global $authRealm;
global $REMOTE_USER;
/* SQL definition for member list table
CREATE TABLE members (
u_key int DEFAULT '0' NOT NULL auto_increment PRIMARY KEY,
u_admin char DEFAULT 'N' NOT NULL,
u_username tinytext DEFAULT '' NOT NULL,
u_password tinytext DEFAULT '' NOT NULL,
u_fullname tinytext DEFAULT '' NOT NULL,
u_email tinytext DEFAULT '' NOT NULL,
u_phone tinytext DEFAULT '',
u_addr1 tinytext DEFAULT '',
u_addr2 tinytext DEFAULT '',
u_country tinytext DEFAULT '',
u_secret tinytext,
u_plan text DEFAULT ''
u_key INT NOT NULL auto_increment PRIMARY KEY,
u_admin CHAR DEFAULT 'N' NOT NULL,
u_username TINYTEXT DEFAULT '' NOT NULL,
u_password TINYTEXT DEFAULT '' NOT NULL,
u_fullname TINYTEXT DEFAULT '' NOT NULL,
u_email TINYTEXT DEFAULT '' NOT NULL,
u_phone TINYTEXT DEFAULT '',
u_addr1 TINYTEXT DEFAULT '',
u_addr2 TINYTEXT DEFAULT '',
u_country TINYTEXT DEFAULT '',
u_secret TINYTEXT,
u_plan TEXT DEFAULT ''
);
*/
define ('EXPIRY', 86400); // Seconds until cookie expires
define ('thisUrl', ereg_replace ('index.php', '', getenv ('SCRIPT_NAME')));
/*
authCreateSecret
Generate a secret key for user's session
*/
function authCreateSecret ($userName, $encryptedPassWord)
{
$digest = md5 (time ());
$cookie = "$userName-$encryptedPassWord-$digest";
SetCookie ("loginInfo", $cookie, (time () + EXPIRY));
$query = "UPDATE members SET u_secret='$digest'" .
" WHERE u_username='$userName'";
$row = @mysql_db_query (sqlDB, $query);
}
/*
authProcess
Authenticate user against SQL database
*/
function authProcess ($userName, $password)
@ -82,7 +66,6 @@ CREATE TABLE members (
$result = @mysql_fetch_array (@mysql_db_query (sqlDB, $query));
if ($result[auth]) {
authCreateSecret ($userName, $result[u_password]);
return 1;
} else {
return 0;
@ -90,48 +73,43 @@ CREATE TABLE members (
}
/*
authCookie
Authenticate user against SQL database using a cookie
*/
function authCookie ($cookie, $userName, $password)
{
$cookie_var = split ("-", $cookie);
$cUserName = $cookie_var[0];
$cPassword = $cookie_var[1];
$secret = $cookie_var[2];
$query = "SELECT 1 AS auth FROM members" .
" WHERE u_username='$cUserName'" .
" AND u_password='$cPassword'" .
" AND u_secret='$secret'";
$result = @mysql_fetch_array (@mysql_db_query (sqlDB, $query));
authBasicChallenge
if ($result[auth]) {
return $cUserName;
} else {
authProcess ($userName, $password);
}
Use HTTP Basic authentication to ask the user for their UN/PW
*/
function authBasicChallenge ($realm, $msg)
{
header ('WWW-Authenticate: Basic realm="' . $realm . '"');
header ('HTTP/1.0 401 Unauthorized');
die ($msg);
}
// Initialization
if (!$authRealm) {
$authRealm = "Secure Area";
}
if (!isset ($_SERVER['PHP_AUTH_USER'])) {
authBasicChallenge ($authRealm, "Login required.");
} else {
$userName = $_SERVER['PHP_AUTH_USER'];
$password = $_SERVER['PHP_AUTH_PW'];
}
$db = @mysql_connect (sqlHost, sqlUser, sqlPass);
if ($loginInfo) {
$userName = authCookie ($loginInfo, $userName, $password);
} else {
if ($userName) {
if (authProcess ($userName, $password) == 0) {
$title = "Login incorrect.";
include siteHome . "/parts/authform.php";
}
} else {
$title = "Login required.";
include siteHome . "/parts/authform.php";
if ($userName && $password) {
if (authProcess ($userName, $password) == 0) {
authBasicChallenge ($authRealm, "Login incorrect.");
}
} else {
authBasicChallenge ($authRealm, "Login incorrect.");
}
$_SERVER['REMOTE_USER'] = $REMOTE_USER = $userName;
$query = "SELECT * FROM members" .
" WHERE u_username='$userName'";
$userInfo = @mysql_fetch_array (@mysql_db_query (sqlDB, $query));
$userInfo = @mysql_fetch_assoc (@mysql_db_query (sqlDB, $query));
@mysql_close ($db);
?>

28
lib/cache.php Normal file
View file

@ -0,0 +1,28 @@
<?
have ("cache");
function cachedURL ($url)
{
$cacheDir = siteHome . "/cache";
$cacheTime = 1800;
$cacheFile = $cacheDir . '/cached_' . md5 ($url);
$timeDifference = @(time () - filemtime ($cacheFile));
if ($cacheTime < $timeDifference) { // stale, make a new one
if ($f = @fopen ($url, 'r')) {
$content = '';
while (!feof ($f)) {
$content .= fgets ($f, 4096);
}
fclose ($f);
if ($f = fopen ($cacheFile, 'w')) {
fwrite ($f, $content, strlen ($content));
fclose ($f);
}
}
}
return file ($cacheFile);
}
?>

47
lib/feature.php Normal file
View file

@ -0,0 +1,47 @@
<?php
/*
feature.php
Code for handling feature boxes
Copyright (C) 2006 Jeff Teunissen <deek@quakeforge.net>
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to:
Free Software Foundation, Inc.
59 Temple Place - Suite 330
Boston, MA 02111-1307, USA.
*/
have ("feature");
function featureOpen ($title, $url, $id)
{
if ($url) {
$part1 = '<A href="' . $url . '">';
$part2 = '</A>';
}
if ($id)
$id = " id=\"$id\"";
echo '<DIV' . $id . ' class="featureBox">';
echo '<H2 class="featureTitle">' . $part1 . $title . $part2 . '</H2>';
echo '<DIV class="featureContent">';
}
function featureClose ()
{
echo '</DIV></DIV>';
}
?>

36
lib/html.php Normal file
View file

@ -0,0 +1,36 @@
<?
/*
html.php
HTML entity decoding
Copyright (C) 2004 Jeff Teunissen <deek@quakeforge.net>
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to:
Free Software Foundation, Inc.
59 Temple Place - Suite 330
Boston, MA 02111-1307, USA.
*/
have ('html');
function unhtmlentities ($str)
{
$transTable = array_flip (get_html_translation_table (HTML_ENTITIES));
return strtr ($str, $transTable);
}
?>

View file

@ -28,110 +28,84 @@
have ('news');
/* SQL definition for news table
CREATE TABLE news_main (
n_id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
n_user TINYTEXT NOT NULL,
n_date TIMESTAMP NOT NULL DEFAULT NOW(),
n_news TEXT DEFAULT '' NOT NULL
);
*/
function newsItem ($date, $user, $text)
{
echo '<TR>' .
' <TD>' .
' <DL>' .
' <DT><FONT SIZE="-1">' . "<EM>Posted on </EM>$date<EM> by </EM><STRONG>$user</STRONG></FONT></DT>" .
" <DD><P>$text</DD>" .
' </DL>' .
' </TD>' .
'</TR>';
echo
' <DL>' .
' <DT><FONT SIZE="-1">' . "<EM>Posted on </EM>$date<EM> by </EM><STRONG>$user</STRONG></FONT></DT>" .
" <DD><P>$text</P></DD>" .
' </DL>' ;
}
function newsEntry ($array)
{
need ("date");
return '<TR>' .
' <TD>' .
' <DL>' .
' <DT><FONT SIZE="-1"><EM>Posted on </EM>' . dateFromSQLDateTime ($array[n_date]) . '<EM> by </EM><STRONG>' . $array[n_user] . '</STRONG></FONT></DT>' .
' <DD><P>' . StripSlashes ($array[n_news]) . '</DD>' .
' </DL>' .
' </TD>' .
'</TR>';
return
' <DL>' .
' <DT><FONT size="-1"><EM>Posted on </EM>' . dateFromSQLDateTime ($array[n_date]) . '<EM> by </EM><STRONG>' . $array[n_user] . '</STRONG></FONT></DT>' .
' <DD>' . StripSlashes ($array[n_news]) . '</DD>' .
' </DL>';
}
function monthForm ($month, $year)
{
?><FORM name="bymonth" method="get" action="/old_news.php"><?
tableBoxHeader ('black', tableHeadColor);
tableTitle ("Search by Month", 1, tableHeadColor);
?><TD align="center"><?
tableHeader("100%", featureBgColor);
need ('feature');
// suppress warnings
@featureOpen ('Date Search');
?>
<TR width="100%" vAlign="middle">
<TD class="inside" align="center">
<STRONG>Month:</STRONG>
</TD>
<TD class="inside" align="center">
<FORM name="bymonth" method="get" action="<?=thisURL?>">
<P align="center">
<SELECT name="month">
<?
for ( $i = 1 ; $i < 13 ; $i++ ) {
printf ("<OPTION%s>%02d</OPTION>", $i == $month ? " selected" : "", $i);
}
?>
</SELECT>
</TD>
<TD class="inside" align="center">
<STRONG>Year:</STRONG>
</TD>
<TD class="inside" align="center">
<SELECT name="year">
</SELECT><STRONG> / </STRONG><SELECT name="year">
<?
if ($year == "")
$year = date ('Y');
for ($i = 2000; $i <= date ('Y'); $i++ ) {
for ($i = 2006; $i <= date ('Y'); $i++ ) {
printf ("<OPTION%s>%04d</OPTION>", $i == $year ? " selected" : "", $i);
}
?>
</SELECT>
</TD>
</TR>
<TR width="100%" vAlign="middle">
<TD class="inside" align="center" colSpan="4">
<BR>
<BR>
<INPUT type="submit" value="Search">
</TD>
</TR>
<?
tableFooter ();
tableBoxFooter ();
?>
</FORM>
<?
</P>
</FORM><?
featureClose ();
}
function keywordForm ($string)
{
?><FORM name="bystring" method="get" action="/old_news.php"><?
tableBoxHeader ('black', tableHeadColor);
tableTitle ("Search by String", 1, tableHeadColor);
?><TD align="center"><?
tableHeader("100%", featureBgColor);
need ('feature');
// suppress warnings
@featureOpen ('Keyword Search');
?>
<TR vAlign="middle">
<TD class="inside" align="center">
<STRONG>String:</STRONG>
</TD>
<TD class="inside" align="center">
<?
printf ("<INPUT name=\"string\" type=\"text\" size=\"25\" value=\"%s\">", $string);
?>
</TD>
</TR>
<TR vAlign="middle">
<TD class="inside" align="center" colSpan="2">
<FORM name="bystring" method="get" action="<?=thisURL?>">
<P align="center">
<?
printf ('<INPUT name="string" type="text" size="16" value="%s">', $string);
?>
<BR>
<BR>
<INPUT TYPE="submit" VALUE="Search">
</TD>
</TR>
<?
tableFooter ();
tableBoxFooter ();
?>
</FORM>
<?
</P>
</FORM><?
featureClose ();
}
function fetchNewsEntry ($number)
@ -206,14 +180,15 @@
$month = date ('m');
}
$date = sprintf ("%04d-%02d", $year, $month);
$date1 = sprintf ("%04d-%02d", $year, $month);
$date2 = sprintf ("%04d-%02d", $year, $month+1);
if (sqlAvail) {
$conn = mysql_pconnect (sqlHost, sqlUser, sqlPass);
if ($conn) {
$query = 'SELECT n_date, n_user, n_news FROM news_main' .
" WHERE n_date BETWEEN '$date-00 00:00:00'" .
" AND '$date-31 23:59:59'" .
" WHERE n_date BETWEEN '$date1-01 00:00:00'" .
" AND '$date2-01 00:00:00'" .
' ORDER BY n_date DESC';
$result = @mysql_db_query (sqlDB, $query, $conn);
if ($result) {

66
lib/rss.php Normal file
View file

@ -0,0 +1,66 @@
<?
/*
rss.php
Quick-and-dirty RSS parser/displayer
Copyright (C) 2004,2006 Jeff Teunissen <deek@quakeforge.net>
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to:
Free Software Foundation, Inc.
59 Temple Place - Suite 330
Boston, MA 02111-1307, USA.
*/
have ("rss");
need ("cache");
need ("html");
function displayRSSFeed ($url, $showChannelInfo)
{
$channelRegEx = ':<channel .*?>.*?<title>(.*?)</title>.*?<link>(.*?)</link>.*?<description>(.*?)</description>.*?</channel>:s';
$itemRegEx = ':<item .*?>.*?<title>(.*?)</title>.*?<link>(.*?)</link>.*?<description>(.*?)</description>.*?</item>:s';
// grab the file
$data = implode ('', cachedURL ($url));
if ($showChannelInfo) { // Channel information
if ($itemCount = preg_match ($channelRegEx, $data, $info)) {
$channelTitle = $info[1];
$channelLink = $info[2];
$channelDesc = $info[3];
echo "<H3><A href=\"$channelLink\">" . unhtmlentities ($channelTitle) . "</A></H3>";
}
}
if (!($itemCount = @preg_match_all ($itemRegEx, $data, $info))) {
echo "No items found.";
return;
}
for ($i = 0; $i < $itemCount; $i++) {
$title = $info[1][$i];
$link = $info[2][$i];
$desc = $info[3][$i];
echo "<P><A href=\"$link\">" . unhtmlentities ($title) . "</A></P>\n";
}
}
function slashdot ()
{
displayRSSFeed ('http://rss.slashdot.org/Slashdot/slashdot', false);
}
?>

View file

@ -1,24 +1,23 @@
<? // Preamble
$pageName = "News Archives";
$focused = "news"; // Dock icon name to get a border
$currPage = "news"; // Name of the page, for the menu
$currPage = "news"; // Name of the page, for menu/dock
$modules = 'news_search'; // right-side modules to display
require "parts/preamble.php"; // Load most of document
?>
<?
need ("news");
?>
<TABLE width="50%" cellSpacing="2" cellPadding="0" border="0">
<TR vAlign="top">
<TD align="center">
<? monthForm ("", ""); ?>
</TD>
</TR>
<TR vAlign="top">
<TD align="center">
<? keywordForm (""); ?>
</TD>
</TR>
</TABLE>
<DIV class="newsBox">
<DIV class="newsTitle"><H2>News Archives</H2></DIV>
<?
if ($month || $year) {
monthlyNews ($month, $year);
} else {
if ($string) {
searchNews ($string);
} else {
newsItem ('now', 'Web Server', 'Go ahead, tough guy...use one of the forms to search the old news.');
}
}
?>
</DIV>
<?
require "parts/postamble.php"; // Finish this sucker up
?>

View file

@ -1,37 +1,23 @@
<?
$pageName = 'News Archives';
$focused = "none"; // Dock icon name to get a border
$currPage = 'news';
$modules = 'news_search'; // Modules to display
require "parts/preamble.php"; // Load most of document
need ("news");
?>
<TABLE width="100%" cellSpacing="2" cellPadding="0" border="0">
<TR vAlign="top">
<TD align="center" width="50%"><?
monthForm ($month, $year);
?></TD>
<TD align="center" width="50%"><?
keywordForm ($string);
?></TD>
</TR>
</TABLE>
<TABLE width="100%" cellSpacing="0" cellPadding="0" border="0">
<TR vAlign="top">
<TD align="center"><?
tableBoxHeader (featureBgColor, featureHeadColor);
tableTitle ($pageName, 1, featureHeadColor);
if ($month || $year) {
monthlyNews ($month, $year);
<DIV class="newsBox">
<DIV class="newsTitle"><H2>News Archives</H2></DIV>
<?
if ($month || $year) {
monthlyNews ($month, $year);
} else {
if ($string) {
searchNews ($string);
} else {
if ($string) {
searchNews ($string);
} else {
newsItem ('now', 'Web Server', "You didn't specify a search, giving up.");
}
newsItem ('now', 'Web Server', 'Go ahead, tough guy...use one of the forms to search the old news.');
}
tableBoxFooter ();
?></TD>
</TR>
</TABLE>
}
?>
</DIV>
<?
require "parts/postamble.php"; // Finish this sucker up
?>

View file

@ -1,57 +1,48 @@
<? // Preamble
$pageName = "Partners";
$pageName = "Our Partners";
$focused = "none"; // Dock icon name to gets a border
require("parts/preamble.php"); // Load most of document
?>
<!--SEARCHME-->
<TABLE cellSpacing="0" cellPadding="0" border="0">
<TR vAlign="middle">
<TD align="center" width="150">
<A href="http://www.idsoftware.com/"><IMG src="img/partners/id.png" border=0 alt="Id Software, Inc."></A>
</TD>
<TD align="left">
<H3>Id Software, Inc.</H3>
<P>On 30 August 1996, during a fit of unparalleled insanity, Id Software
released Quake to the world. Spawning two sequels and a nearly
uncountable number of imitations and clones, Quake was a product
that spawned an industry. Quake was the first game to include
fully-featured, real-time Internet play out of the box. Quake
is truly the father of modern online first-person gaming.
<P>What's more, Quake had the built-in ability for people to change
it. For the first time, you could not only create custom levels in
which to kill each other, but you could actually change the code
so you could kill each other in new and interesting ways.
<STRONG>:)</STRONG> Dozens, perhaps hundreds, of projects were
started to make entirely new games out of the Quake engine. Some
failed, others succeeded beyond their wildest dreams, but all of
them had fun trying.
<H3>Id Software, Inc.</H3>
<A class="right" href="http://www.idsoftware.com/"><IMG src="img/partners/id.png" alt="Id Software, Inc."></A>
<P>
On 30 August 1996, during a fit of unparalleled insanity, Id Software
released Quake to the world. Spawning two sequels and a nearly uncountable
number of imitations and clones, Quake was a product that spawned an
industry. Quake was the first game to include fully-featured, real-time
Internet play out of the box. Quake is truly the father of modern online
first-person gaming.
</P>
<P>
What's more, Quake had the built-in ability for people to change it. For
the first time, you could not only create custom levels in which to kill
each other, but you could actually change the code so you could kill each
other in new and interesting ways. <STRONG>:)</STRONG> Dozens, perhaps
hundreds, of projects were started to make entirely new games out of the
Quake engine. Some failed, others succeeded beyond their wildest dreams,
but all of them had fun trying.
</P>
<P>
After three years of undisputed success, Id released the source code to
the Quake engine under the GNU General Public License. This was the event
that made QuakeForge and all of the other engine modification projects
possible. We all owe Id a debt of thanks, one that many doubt can ever be
completely paid. Thanks, guys.
</P>
<P>After three years of undisputed success, Id released the source
code to the Quake engine under the GNU General Public License.
This was the event that made QuakeForge and all of the other engine
modification projects possible. We all owe Id a debt of thanks, one
that many doubt can ever be completely paid. Thanks, guys.
</TD>
</TR>
<TR vAlign="middle">
<TD align="center" width="150">
<TABLE cellSpacing="0" cellPadding="0" border="0">
<TR vAlign="middle">
<TD align="center">
<A href="http://www.valinux.com/"><IMG src="img/partners/valinux2.png" border="0" alt="VA Linux Systems, Inc."></A>
<A href="http://www.sourceforge.net/"><IMG src="img/partners/sourceforge.png" border=0 alt="SourceForge"></A>
<A href="http://copyleft.net/"><IMG src="img/partners/copyleft.png" border=0 alt="Copyleft"></A>
</TD>
</TR>
</TABLE>
</TD>
<TD align="left">
<H3>VA Linux Systems, Inc.</H3>
</TD>
</TR>
</TABLE>
</TABLE>
<H3>VA Linux Systems, Inc.</H3>
<P>
<A class="right" href="http://www.valinux.com/"><IMG src="img/partners/valinux2.png" alt="VA Linux Systems, Inc."></A>
This is some text that only exists because Deek hasn't finished this page.
This is some text that only exists because Deek hasn't finished this page.
This is some text that only exists because Deek hasn't finished this page.
This is some text that only exists because Deek hasn't finished this page.
This is some text that only exists because Deek hasn't finished this page.
This is some text that only exists because Deek hasn't finished this page.
This is some text that only exists because Deek hasn't finished this page.
This is some text that only exists because Deek hasn't finished this page.
</P>
<!--NOSEARCH-->
<?
require("parts/postamble.php"); // Finish this sucker up

9
parts/bg-logo.php Normal file
View file

@ -0,0 +1,9 @@
<? // Project logo background rotation
define ('siteHome', '/home/groups/q/qu/quake/htdocs');
require siteHome . "/parts/library.php"; // Load function library
srand ((double) microtime () * 1000000);
header("HTTP/1.1 307 Temporary Redirect");
header("Location: /img/background-logos/$theme-logo" . rand(1, 3) . '.png');
?>

View file

@ -1,26 +1,20 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Strict//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
<HTML>
<HEAD>
<LINK rel="StyleSheet" href="/styles/<? echo $theme; ?>.css" type="text/css">
<TITLE>
<?
<LINK rel="StyleSheet" type="text/css" href="/styles/<?=$theme?>/level1.css">
<STYLE type="text/css" media="screen"><!--
@import url(/styles/<?=$theme?>/level2.css);
--></STYLE>
<TITLE><?
switch ($theme) {
case "christmas":
echo "Happy holidays! -- ";
echo "Happy Holidays from ";
break;
default:
}
echo "$siteName: $pageName";
?>
</TITLE>
<LINK rel="icon" href="/img/icons16/qficon.png" type="image/png">
?></TITLE>
<LINK rel="Icon" type="image/png" href="/img/icons16/qficon.png">
<SCRIPT type="text/javascript"><? include siteHome . "/parts/menuResize.js"; ?></SCRIPT>
</HEAD>
<? echo '<BODY bgColor="' . bgColor . '" ' .
'text="' . textColor . '" ' .
'link="' . linkColor . '" ' .
'aLink="' . activeLinkColor . '" ' .
'vLink="' . visitedLinkColor . '" ' .
'topMargin="0" bottomMargin="0" ' .
'leftMargin="0" rightMargin="0" ' .
'marginHeight="0" marginWidth="0">' . "\n";
?>
<BODY>

View file

@ -5,6 +5,8 @@
define ('black', "black");
define ('white', "white");
define ('thisURL', $_SERVER['SCRIPT_NAME']);
if (!$theme && date ('m') == 12)
$theme = "christmas";

View file

@ -1,98 +1,81 @@
<!-- menus -->
<!-- begin menu -->
<DIV class="menu" id="menu">
<?
function menuItemLink ($name, $url, $desc)
function menuSectionHeader ($name)
{
global $currPage;
if ($name == $currPage) {
echo "<STRONG>$desc</STRONG><BR>";
} else {
echo '<A class="menus" href="' . $url . '">' . $desc . '</A><BR>';
}
}
function menuSectionHeader ($name, $fgColor , $bgColor, $intBgColor)
{
echo "\n<!-- menuSectionHeader(" . $name . ') -->' .
'<TABLE cellSpacing="0" cellPadding="3" width="100%" border=0 bgColor="' . $bgColor . '">' .
' <TR bgColor="' . $bgColor . '">' .
' <TD align="center">' .
' <IMG src="/img/blank.gif" height="1" width="135" alt="" border="0"><BR>' .
' <SPAN class="titleBar">' . $name . '</SPAN>' .
' </TD>' .
' </TR>' .
' <TR align="right" bgColor="' . $intBgColor . '">' .
' <TD>';
echo "<!-- menuSectionHeader(" . $name . ') -->' .
'<SPAN class="menuTitle">' . $name . '<SPAN class="nodisplay">:</SPAN></SPAN>' .
'<SPAN class="nodisplay"> [ </SPAN>';
}
function menuSectionFooter ()
{
echo ' </TD>' .
' </TR>' .
'</TABLE>';
echo "\n";
}
function qfMenu ()
function menuItemLink ($name, $url, $desc, $last)
{
menuSectionHeader ("Project", 'white', menuHeadColor, menuBgColor);
menuItemLink ("about", "/about.php", "About");
menuItemLink ("home", "/", "Latest News");
menuItemLink ("news", "/news.php", "Old News");
menuItemLink ("docs", "/documentation.php", "Documentation");
menuItemLink ("shots", "/screenshots.php", "Screenshots");
menuItemLink ("files", "/files.php", "Downloads");
menuItemLink ("bugs", "/bugs/", "Bug Tracker");
menuItemLink ("lists", "/lists.php", "Mailing Lists");
// menuItemLink ("board", "/board/", "Web Forum");
menuSectionFooter ();
}
global $currPage;
function develMenu ()
{
menuSectionHeader ("Developers", 'white', menuHeadColor, menuBgColor);
menuItemLink ("cvs", "/cgi-bin/viewcvs.cgi/", "Browse CVS");
menuItemLink ("devtools", "/devtools.php", "Developer Tools");
// menuItemLink ("plans", "/plans.php", "Developer Plans");
menuItemLink ("progress", "/progress.php", "Progress");
// menuItemLink ("sotc", "/sotc/", "State of the Code");
// menuItemLink ("research", "/research/", "Research Center");
// menuItemLink ("patches", "http://sourceforge.net/patch/?group_id=882", "Patch Manager");
// menuItemLink ("support", "http://sourceforge.net/support/?group_id=882", "Support Manager");
// menuItemLink ("tasks", "http://sourceforge.net/pm/?group_id=882", "Task Manager");
menuSectionFooter ();
if ($last) {
$chr = ' ]';
$final = '<BR>';
} else {
$chr = ' | ';
}
if ($name == $currPage) {
echo '<SPAN class="menuItem"><A class="selected" href="' . $url . '">' . $desc . '</A></SPAN>';
} else {
echo '<SPAN class="menuItem"><A href="' . $url . '">' . $desc . '</A></SPAN>';
}
echo "<SPAN class=\"nodisplay\">$chr</SPAN>$final";
}
function searchMenu ()
{
menuSectionHeader ("Search", 'white', menuHeadColor, menuBgColor);
echo '<CENTER><FONT size="-2">' .
'<FORM action="search.php" method="POST">' .
' <SELECT name="type_of_search">' .
' <OPTION value="news">News</OPTION>' .
// ' <OPTION value="site">Site</OPTION>' .
// ' <OPTION value="bugs">Bug Tracking</OPTION>' .
' <OPTION value="-announce">Announcements</OPTION>' .
' <OPTION value="-bugs">Bug Discussions</OPTION>' .
' <OPTION value="-cvs">CVS Logs</OPTION>' .
' <OPTION value="-devel">Developer Talk</OPTION>' .
' <OPTION value="-user">User Discussions</OPTION>' .
// ' <OPTION value="patches">Patches</OPTION>' .
' </SELECT>' .
' <BR>' .
' <INPUT TYPE="CHECKBOX" NAME="exact" VALUE="1" CHECKED>&nbsp;Require Exact Match' .
' <BR>' .
' <INPUT TYPE="HIDDEN" NAME="forum_id" VALUE="">' .
' <INPUT TYPE="HIDDEN" NAME="is_bug_page" VALUE="">' .
' <INPUT TYPE="HIDDEN" NAME="group_id" VALUE="882">' .
' <INPUT TYPE="text" NAME="words" SIZE="15" VALUE="">' .
' <BR>' .
' <INPUT TYPE="submit" NAME="Search" VALUE="Search">' .
'</FORM></FONT>' .
'</CENTER>';
menuSectionHeader ("Search");
echo '<FORM action="search.php" method="POST">'
.' <SELECT name="type_of_search">'
.' <OPTION value="news">News</OPTION>'
.' <OPTION value="site">Site</OPTION>'
// .' <OPTION value="bugs">Bug Tracker</OPTION>'
// .' <OPTION value="patches">Patches</OPTION>'
.' </SELECT>'
.' <INPUT TYPE="CHECKBOX" NAME="exact" VALUE="1" CHECKED>&nbsp;Require Exact Match'
.' <INPUT TYPE="HIDDEN" NAME="forum_id" VALUE="">'
.' <INPUT TYPE="HIDDEN" NAME="is_bug_page" VALUE="">'
.' <INPUT TYPE="HIDDEN" NAME="group_id" VALUE="882">'
.' <INPUT TYPE="text" NAME="words" SIZE="15" VALUE="">'
.' <INPUT TYPE="submit" NAME="Search" VALUE="Search">'
.'</FORM>';
menuSectionFooter ();
}
qfMenu ();
develMenu ();
searchMenu ();
?>
// Project
menuSectionHeader ("Project");
menuItemLink ("home", "/", "Home", FALSE);
menuItemLink ("shots", "/screenshots.php", "Screen Shots", FALSE);
menuItemLink ("files", "/files.php", "Downloads", FALSE);
menuItemLink ("docs", "/documentation.php", "Documentation", FALSE);
menuItemLink ("lists", "/lists.php", "Mailing Lists", FALSE);
menuItemLink ("news", "/old_news.php", "News Archive", TRUE);
menuSectionFooter ();
// Developers
menuSectionHeader ("Developers");
menuItemLink ("devtools", "/devtools.php", "Developer Tools", FALSE);
menuItemLink ("bugs", "/bugs/", "Bug Tracker", FALSE);
menuItemLink ("cvs", "http://quake.svn.sourceforge.net/viewvc/quake/", "Subversion", FALSE);
// menuItemLink ("plans", "/plans.php", "Developer Plans", FALSE);
// menuItemLink ("patches", "http://sourceforge.net/patch/?group_id=882", "Patch Manager", FALSE);
// menuItemLink ("support", "http://sourceforge.net/support/?group_id=882", "Support Manager", FALSE);
// menuItemLink ("tasks", "http://sourceforge.net/pm/?group_id=882", "Task Manager", FALSE);
menuItemLink ("progress", "/progress.php", "Progress", TRUE);
menuSectionFooter ();
// searchMenu ();
?>
<SPAN class="centered"><A class="sfLogo" href="http://sourceforge.net/"><IMG src="http://sflogo.sourceforge.net/sflogo.php?group_id=882&type=2" width="125" height="37" border="0" alt="SourceForge Logo"></A></SPAN>
</DIV>
<!-- end menu -->

70
parts/menuResize.js Normal file
View file

@ -0,0 +1,70 @@
var columnIDs;
function init () {
// this may be called twice
if (arguments.callee.done)
return;
arguments.callee.done = true;
setHeight ('menu', columnIDs);
}
function doResize () {
setHeight ('menu', columnIDs);
}
function setHeight (myTarget, columns) {
if (document.getElementById) {
var targetID = document.getElementById (myTarget);
var maxHeight = targetID.offsetHeight;
var divCount = columns.length;
var i = 0;
// we only want to resize if the level 2 CSS has been loaded
if (window.getComputedStyle) { // got NS/Mozilla/Firefox
var targetStyle = window.getComputedStyle (targetID, "");
if (targetStyle.getPropertyValue ('background-color') == 'transparent') {
return;
}
} else if (targetID.currentStyle) { // got IE
if (targetID.currentStyle.backgroundColor == 'transparent') {
return;
}
}
// the divs array contains references to each column's div element.
var divs = new Array (divCount);
for (i = 0; i < divCount; i++) {
divs[i] = document.getElementById (columns[i]);
}
// determine the maximum height out of all columns specified
for (i = 0; i < divs.length; i++) {
if (maxHeight < divs[i].offsetHeight) {
maxHeight = divs[i].offsetHeight;
}
}
// set the target column to that maximum height
targetID.style.height = maxHeight + 2 + 'px';
}
}
/* for Mozilla */
if (document.addEventListener) {
document.addEventListener ("DOMContentLoaded", init, null);
}
/* for Internet Explorer */
/*@cc_on @*/
/*@if (@_win32)
document.write ("<script defer src=ie_onload.js><"+"/script>");
/*@end @*/
/* for other browsers */
window.onload = init;
window.onresize = doResize;

9
parts/news_search.php Normal file
View file

@ -0,0 +1,9 @@
<?
need ("news");
$string = $_GET['string'];
$month = $_GET['month'];
$year = $_GET['year'];
monthForm ($month, $year);
keywordForm ($string);
?>

View file

@ -1,26 +1,9 @@
<!-- Content End -->
</TD>
<? tableSpacer (9, 1, 1, black); ?>
</TR>
<TR>
<? tableSpacer (1, 9, 3, black); ?>
</TR>
<? tableFooter(); ?>
</TD>
</TR>
<TR vAlign="top">
<TD colSpan="2">
<TABLE width="100%" border="0" cellSpacing="0" cellPadding="3" bgColor="<? echo menuBgColor; ?>">
<TR>
<TD align="center">
<SPAN class="titleBar">
Copyright &copy; 1999-<? echo date("Y"); ?> the QuakeForge Project.<BR>
<A class="mainTitleBar" href="/copyright.php">Additional Copyright and Trademark Acknowledgements</A>
</SPAN>
</TD>
</TR>
</TABLE>
</TD>
</TR>
</TABLE>
</DIV>
<DIV id="bottom">
<SPAN class="copyright">
Copyright &copy; 1999-<? echo date("Y"); ?> the QuakeForge Project.<BR>
<A href="/copyright.php">Additional Copyright and Trademark Acknowledgements</A>
</SPAN>
</DIV>
</HTML>

View file

@ -1,5 +1,6 @@
<? // Preamble
$siteName = "The QuakeForge Project";
$columns = 'content';
define ('siteHome', "/home/groups/q/qu/quake/htdocs");
require siteHome . "/parts/library.php"; // Load function library
@ -7,32 +8,38 @@
need ($need);
unset ($need);
}
need ('table');
require siteHome . "/parts/head.php"; // Load the HEAD and open BODY
require siteHome . "/parts/topstrip.php"; // Display top strip
require siteHome . "/parts/titletable.php"; // Display main title w/ logos
require siteHome . "/parts/menu.php"; // Load up the menu
$contentClass = '';
if ($modules && $modules = explode (" ", $modules)) {
$columns .= ' features';
$contentClass = 'class="narrow"';
echo '<DIV id="features">';
for ($i = 0; $i < count ($modules); $i++) {
include siteHome . "/parts/" . $modules[$i] . ".php";
}
echo '</DIV>';
}
echo '<SCRIPT type="text/javascript">columnIDs = new Array (';
$columns = explode (" ", $columns);
$i = count ($columns);
do {
echo "'" . $columns[$i-1] . "'";
if (--$i) {
echo ", ";
}
} while ($i);
echo ');</SCRIPT>';
?>
<TABLE width="100%" cellSpacing="0" cellPadding="0" border="0">
<TR vAlign="top">
<TD bgColor="<? echo menuBgColor; ?>">
<? include siteHome . "/parts/menu.php"; ?>
</TD>
<TD width="100%">
<? tableHeader ("100%", black); ?>
<TR>
<? tableSpacer (1, 9, 3, black); ?>
</TR>
<TR>
<? tableSpacer (9, 1, 1, black); ?>
<TD>
<? require siteHome . "/parts/topmain.php"; ?>
</TD>
<? tableSpacer (9, 1, 1, black); ?>
</TR>
<TR>
<? tableSpacer (1, 18, 3, black); ?>
</TR>
<TR>
<? tableSpacer (9, 1, 1, black); ?>
<TD>
<!-- Content Start -->
<DIV <?=$contentClass?> id="content"><!-- Content Start -->
<?
require siteHome . "/parts/topmain.php"; // insert page title
?>

View file

@ -1,30 +1,5 @@
<!-- top title table -->
<? need ('table'); ?>
<TABLE width="100%" border="0" cellSpacing="0" cellPadding="0" bgColor="<? echo menuBgColor; ?>">
<TR vAlign="top">
<? tableSpacer (1, 3, 6, menuBgColor); ?>
</TR>
<TR vAlign="top">
<? tableSpacer (3, 1, 1, menuBgColor); ?>
<TD align="center" vAlign="middle">
<? // Project logo rotation
srand ((double) microtime () * 1000000);
echo '<IMG src="/img/logos/' . $theme . '-logo' . rand (1,3) . '.png" alt="QuakeForge" border="0">'; ?>
</TD>
<? tableSpacer (3, 1, 1, menuBgColor); ?>
<TD width="100%" vAlign="middle"><!--Site name -->
<SPAN class="mainTitle"><? echo $siteName; ?></SPAN>
</TD>
<? tableSpacer (3, 1, 1, menuBgColor); ?>
<TD align="right" vAlign="middle"><!-- SourceForge Logo -->
<A href="http://sourceforge.net"><IMG src="http://sflogo.sourceforge.net/sflogo.php?group_id=882&type=2" width="125" height="37" border="0" alt="SourceForge Logo"></A>
</TD>
</TR>
<TR>
<? tableSpacer (1, 3, 6, menuBgColor); ?>
</TR>
<TR>
<? tableSpacer (2, 2, 6, black); ?>
</TR>
</TABLE>
<!-- end top title table -->
<!-- main title -->
<DIV id="mainTitle">
<H1><?=$siteName?></H1>
</DIV>
<!-- end main title -->

View file

@ -1,57 +1,40 @@
<?
need ('table');
function isFocused ($name, $newname)
function isFocused ($name)
{
return (strToLower ($name) == strToLower ($newname)) ? 1 : 0;
global $currPage;
return (strToLower ($name) == strToLower ($currPage)) ? TRUE : FALSE;
}
function iconLink ($url, $img, $desc, $border)
function iconLink ($img, $desc, $name, $url)
{
echo '<A class="tabs" href="' . $url . '"><IMG src="' . $img . '" alt="' . $desc . ' " hSpace="3" vSpace="1" border="' . $border . '" width="24" height="24"></A>';
$cls = 'class="icon" ';
if (isFocused ($name)) {
$cls = 'class="focusedIcon" ';
}
echo '<A class="tabs" href="' . $url . '">'
.'<IMG ' . $cls . 'src="/img/icons/' . $img . '" alt="' . $desc . '">'
.'</A>';
}
function iconBar ($focused)
function iconBar ()
{
echo '<TABLE border="0" cellSpacing="0" cellPadding="2" bgColor="white">' .
'<TR>';
tableSpacer (1, 1, 1, white);
echo '<TD>';
iconLink ('http://sourceforge.net/projects/quake/', '/img/icons/anvil.png', 'SourceForge', isFocused($focused, 'summary'));
iconLink ('/', '/img/icons/home.png', 'Homepage', isFocused($focused, 'home'));
iconLink ('/bugs/', '/img/icons/bugs.png', 'Bugs', isFocused($focused, 'bugs'));
// iconLink ('http://sourceforge.net/support/?group_id=882', '/img/icons/support.png', 'Support', isFocused($focused, 'support'));
// iconLink ('http://sourceforge.net/patch/?group_id=882', '/img/icons/patch.png', 'Patches', isFocused($focused, 'patch'));
iconLink ('/lists.php', '/img/icons/mail.png', 'Lists', isFocused($focused, 'mail'));
// iconLink ('http://sourceforge.net/pm/?group_id=882', '/img/icons/tasks.png', 'Tasks', isFocused($focused, 'tasks'));
// iconLink ('http://sourceforge.net/survey/?group_id=882', '/img/icons/survey.png', 'Surveys', isFocused($focused, 'survey'));
iconLink ('/news.php', '/img/icons/news.png', 'News Archives', isFocused($focused, 'news'));
iconLink ('http://quake.svn.sourceforge.net/viewvc/quake/', '/img/icons/cvs.png', 'Subversion', isFocused($focused, 'cvs'));
iconLink ('/files.php', '/img/icons/download.png', 'Downloads', isFocused($focused, 'download'));
echo '</TD></TR></TABLE>';
iconLink ('anvil.png', 'SourceForge', 'nil', 'http://sourceforge.net/projects/quake/');
iconLink ('home.png', 'Home Page', 'home', '/');
iconLink ('bugs.png', 'Bug Tracker', 'bugs', '/bugs/');
// iconLink ('support.png','Support', 'support', 'http://sourceforge.net/support/?group_id=882');
// iconLink ('patch.png', 'Patches', 'patches', 'http://sourceforge.net/patch/?group_id=882');
iconLink ('mail.png', 'Mailing Lists','lists', '/lists.php');
// iconLink ('tasks.png', 'Tasks', 'tasks', 'http://sourceforge.net/pm/?group_id=882');
// iconLink ('survey.png', 'Surveys', 'surveys', 'http://sourceforge.net/survey/?group_id=882');
iconLink ('news.png', 'News Archives','news', '/old_news.php');
iconLink ('cvs.png', 'Subversion', 'cvs', 'http://quake.svn.sourceforge.net/viewvc/quake/');
iconLink ('download.png','Downloads', 'files', '/files.php');
}
function topBar ($pageName)
{
global $focused;
tableHeader ("100%", black);
echo ' <TR vAlign="bottom">' .
' <TD align="left">' .
' <SPAN class="pageTitle">' . $pageName . '</SPAN>' .
' </TD>' .
' <TD align="right">';
iconBar ($focused);
echo ' </TD>' .
' </TR>' .
' <TR>';
tableSpacer (1, 1, 2, black);
echo ' </TR>' .
' <TR>';
tableSpacer (2, 1, 2, white);
echo ' </TR>';
tableFooter ();
}
topBar ($pageName);
?>
<DIV id="topMain" <?=$contentClass?>>
<H2 class="pageTitle"><?=$pageName?></H2>
</DIV>

View file

@ -1,17 +1,8 @@
<!-- top strip -->
<TABLE width="100%" border="0" cellSpacing="0" cellPadding="3" bgColor="<? echo tableHeadColor; ?>">
<TR vAlign="middle">
<TD align="left">
<SPAN class="mainTitleBar">&nbsp;
<A class="mainTitleBar" href="/"><B>Home</B></A> |
<A class="mainTitleBar" href="/about.php"><B>About</B></A> |
<A class="mainTitleBar" href="/partners.php"><B>Partners</B></A> |
<A class="mainTitleBar" href="/contact.php"><B>Contact Us</B></A>
</SPAN>
</TD>
<TD align="right">
<A class="mainTitleBar" href="https://members.quakeforge.net/"><IMG alt="Member Access" border="0" padding="0" src="/img/icons/pi.png"></A>
</TD>
</TR>
</TABLE>
<DIV id="topStrip">
<A href="/"><B>Home</B></A> |
<A href="/about.php"><B>About</B></A> |
<A href="/partners.php"><B>Partners</B></A> |
<A href="/contact.php"><B>Contact Us</B></A>
</DIV>
<!-- end top strip -->

View file

@ -6,14 +6,10 @@
function screenshot ($name, $caption)
{
echo '<TR vAlign="middle">' .
' <TD align="center">' .
' <P class="centered">' .
' <A href="/img/screenshots/' . $name . '.png"><IMG src="/img/screenshots/' . $name . '.jpg" alt="View at full size" border="1"></A>' .
' </P>' .
" <P>$caption</P>" .
' </TD>' .
'</TR>';
echo '<P class="lined">'
.' <CENTER><A class="screenshot" href="/img/screenshots/' . $name . '.png"><IMG src="/img/screenshots/' . $name . '.jpg" alt="View at full size"></A></CENTER><BR>'
. $caption
.'</P>';
}
?>
<P>
@ -22,25 +18,18 @@
gamma-modified or doctored, they are what you actually see in the game.
</P>
<P>
<TABLE width="100%" cellSpacing="0" cellPadding="1" border="0">
<TR vAlign="top">
<TD><?
tableBoxHeader (featureBgColor, featureHeadColor);
tableTitle ('QuakeForge: Newtree', 1, featureHeadColor);
<DIV class="featureBox">
<DIV class="featureTitle">QuakeForge: Newtree</DIV>
<?
screenshot ('wateralpha-0.3', 'The Elder World pool, with a watervised map and with r_wateralpha 0.3. If you look closely, you can see the partially fullbright texture on the nail box below.');
screenshot ('dlights-quad-rocket', 'This one really shows off dynamic lighting and fullbrights. The player has quad damage, causing them to give off a blue dynamic light. A rocket is exploding after hitting a wall, and in the background you see the fullbrights on the exit glowing bright red.');
screenshot ('conback', 'This shows our logo as a <a href="/files/conback.lmp.gz">conback</a> (or, <a href="/files/pakQF.pak">more conveniently</a>, works as is). Also shows ALSA sound initialisation.');
screenshot ('location', 'This shows a location marker (only visible with r_drawentities 0) which was placed shortly before taking the screenshot');
screenshot ('smoke', 'Smoke trails and lights. Nuff said :)');
// put more here
screenshot ('wateralpha-0.3', 'The Elder World pool, with a watervised map and with r_wateralpha 0.3. If you look closely, you can see the partially fullbright texture on the nail box below.');
screenshot ('dlights-quad-rocket', 'This one really shows off dynamic lighting and fullbrights. The player has quad damage, causing them to give off a blue dynamic light. A rocket is exploding after hitting a wall, and in the background you see the fullbrights on the exit glowing bright red.');
screenshot ('conback', 'This shows our logo as a <a href="/files/conback.lmp.gz">conback</a> (or, <a href="/files/pakQF.pak">more conveniently</a>, works as is). Also shows ALSA sound initialisation.');
screenshot ('location', 'This shows a location marker (only visible with r_drawentities 0) which was placed shortly before taking the screenshot');
screenshot ('smoke', 'Smoke trails and lights. Nuff said :)');
// put more here
tableBoxFooter ();
?></TD>
</TR>
</TABLE>
</P>
?>
</DIV>
<?
require "parts/postamble.php"; // Finish this sucker up
?>

View file

@ -2,7 +2,7 @@
switch ($type_of_search) {
case "news":
$string = AddSlashes ($words);
include "old_news.php";
include "news.php";
break;
case "-announce":
$string = urlencode ($words);
@ -49,7 +49,7 @@
}
while (list($key,$val) = each ($files)) {
echo "<P><A HREF=\"$key\">$key</A> - $val hits";
}
}
} else {
echo "<P>Sorry, no pages found containing '$words'";
}

View file

@ -1,30 +1,20 @@
QuakeForge would like to thank these organizations for their contributions:
<DIV>
<P>
QuakeForge would like to thank these organizations for their
contributions:
</P>
<TABLE cellSpacing=0 cellPadding=0 border=0>
<TR vAlign="top">
<?
tableSpacer(9, 1, 2, "black");
?>
</TR>
<TR vAlign="middle">
<TD align="center">
<A href="http://www.idsoftware.com/"><IMG src="img/partners/id.png" border=0 alt="id Software" width=70 height=80></A>
</TD>
<td align="center">
<a href="http://www.anchor.com.au/"><img src="img/partners/anchor.gif" border=0 alt="Anchor Domains and Hosting"></a>
</td>
<TD align="center">
<A href="http://www.anchor.com.au/"><IMG src="img/partners/anchor.gif" border=0 alt="Anchor Domains and Hosting"></a>
</TD>
<TD align="center">
<A href="http://www.valinux.com/"><IMG src="img/partners/valinux2.png" border=0 alt="VA Linux Systems"></A>
</TD>
<!--
</TR>
<TR vAlign="top">
<?
tableSpacer(9, 1, 2, "black");
?>
</TR>
<TR vAlign="middle">
-->
<TD align="center">
<A href="http://sourceforge.net/"><IMG src="img/partners/sourceforge.png" border=0 alt="SourceForge"></A>
</TD>
@ -33,3 +23,4 @@ QuakeForge would like to thank these organizations for their contributions:
</TD>
</TR>
</TABLE>
</DIV>

View file

@ -0,0 +1,93 @@
BODY {
background: black;
color: white;
}
OL,UL,BODY,TD,TR,TH,FORM,SPAN {
font-family: Arial, Helvetica, sans-serif;
color: white;
}
P {
font-family: Arial, Helvetica, sans-serif;
color: white;
text-align: justify;
}
SPAN.smallText {
font-size: x-small;
}
P.centered {
font-family: Arial, Helvetica, sans-serif;
color: white;
text-align: center;
}
TABLE.featureBox {
background: #7f000c;
border: solid #7f000c 1px;
margin: 0px;
padding: 0px;
}
TABLE.featureBox TH {
border: none;
margin: none;
padding: none;
}
TABLE.featureBox TD {
background: #083008;
border: solid #7f000c 1px;
margin: 0px;
padding: 3pt;
}
TABLE.featureBox TD.inside {
background: #083008;
border: none;
margin: 1pt;
padding: 1pt;
}
H1,H2,H3,H4,H5,H6 { font-family: Arial, Helvetica, sans-serif; }
DL,DT,DD { font-family: Arial, Helvetica, sans-serif; }
PRE,TT,CODE { font-family: "Courier New", Courier, monospace; }
/* Links */
A { color: rgb(170,255,170); text-decoration: none; }
A:visited { color: rgb(170,255,170); text-decoration: none; }
A:link { color: rgb(170,255,170); text-decoration: none; }
A:active { color: rgb(255,255,255); text-decoration: none; }
A:hover { color: rgb(255,170,170); text-decoration: none; }
/* Special link types */
A.mainTitleBar { color: white; }
A.sortButton { color: white; text-decoration: underline; }
A.menus { color: rgb(192,192,192); text-decoration: underline; }
A.tabs { color: black; }
SPAN.center { text-align: center; }
SPAN.alignRight { text-align: right; }
SPAN.boxSpace { font-size: 2pt; }
SPAN.mainTitleBar {
color: black;
font-size: 10pt;
}
SPAN.mainTitle {
color: white;
font-size: 16pt;
font-weight: bold;
}
SPAN.pageTitle {
font-size: 15pt;
font-weight: bold;
}
SPAN.titleBar {
color: white;
font-size: 10pt;
font-weight: bold;
text-align: center;
}

View file

@ -0,0 +1,93 @@
BODY {
background: black;
color: white;
}
OL,UL,BODY,TD,TR,TH,FORM,SPAN {
font-family: Arial, Helvetica, sans-serif;
color: white;
}
P {
font-family: Arial, Helvetica, sans-serif;
color: white;
text-align: justify;
}
SPAN.smallText {
font-size: x-small;
}
P.centered {
font-family: Arial, Helvetica, sans-serif;
color: white;
text-align: center;
}
TABLE.featureBox {
background: #7f000c;
border: solid #7f000c 1px;
margin: 0px;
padding: 0px;
}
TABLE.featureBox TH {
border: none;
margin: none;
padding: none;
}
TABLE.featureBox TD {
background: #083008;
border: solid #7f000c 1px;
margin: 0px;
padding: 3pt;
}
TABLE.featureBox TD.inside {
background: #083008;
border: none;
margin: 1pt;
padding: 1pt;
}
H1,H2,H3,H4,H5,H6 { font-family: Arial, Helvetica, sans-serif; }
DL,DT,DD { font-family: Arial, Helvetica, sans-serif; }
PRE,TT,CODE { font-family: "Courier New", Courier, monospace; }
/* Links */
A { color: rgb(170,255,170); text-decoration: none; }
A:visited { color: rgb(170,255,170); text-decoration: none; }
A:link { color: rgb(170,255,170); text-decoration: none; }
A:active { color: rgb(255,255,255); text-decoration: none; }
A:hover { color: rgb(255,170,170); text-decoration: none; }
/* Special link types */
A.mainTitleBar { color: white; }
A.sortButton { color: white; text-decoration: underline; }
A.menus { color: rgb(192,192,192); text-decoration: underline; }
A.tabs { color: black; }
SPAN.center { text-align: center; }
SPAN.alignRight { text-align: right; }
SPAN.boxSpace { font-size: 2pt; }
SPAN.mainTitleBar {
color: black;
font-size: 10pt;
}
SPAN.mainTitle {
color: white;
font-size: 16pt;
font-weight: bold;
}
SPAN.pageTitle {
font-size: 15pt;
font-weight: bold;
}
SPAN.titleBar {
color: white;
font-size: 10pt;
font-weight: bold;
text-align: center;
}

View file

@ -0,0 +1,251 @@
* { /* Standard style */
font-family: Arial, Helvetica, sans-serif;
}
BODY {
background: black;
color: white;
font-family: Arial, Helvetica, sans-serif;
font-size: 10pt;
}
PRE,TT,CODE {
font-family: "Courier New", Courier, fixed;
}
/* Links */
A {
color: #aaaaff;
text-decoration:none;
}
A:active {
color: #ffffff;
text-decoration:none;
}
A:link {
color: #aaaaff;
text-decoration:none;
}
A:hover {
color: #ffaaaa;
text-decoration:none;
}
A:visited {
color: #aaaaff;
text-decoration:none;
}
IMG {
border: 0;
margin: 0;
padding: 0;
}
IMG.screenshot {
border: 2px #717b9c solid;
width: 200px;
height: 150px;
}
/* Misc. styles */
.featureBox {
background: #262633;
border: 2px solid #737b9c;
font-size: 8pt;
text-align: left;
margin-bottom: 2px;
}
.featureBox A {
padding: 0;
}
.featureBox BR {
height: 1em;
}
.featureBox H2 {
padding: 0;
border: 0;
margin: 0;
}
.featureBox P {
margin: 6px;
}
.featureBox .featureTitle {
background: #737b9c;
color: #fff;
font-size: 10pt;
font-weight: bold;
text-align: center;
padding: 2px;
}
.featureBox A.featureTitle {
color: #99c;
}
.featureBox A.featureTitle:visited {
color: #aaf;
}
.featureBox A.featureTitle:active {
color: #fff;
}
.featureBox A.featureTitle:hover {
color: #668;
}
.newsBox {
border: 0;
margin: 0;
padding: 0;
text-align: left;
}
.newsBox DL {
margin: 0;
padding: 0;
border: 0;
border-top: 1px solid #737b9c;
}
.newsBox DL DT {
margin: 0;
padding: 0;
border: 0;
}
.newsBox DL DD {
border: 0;
margin: 1.5em;
padding: 0;
text-align: justify;
}
.newsBox .newsTitle {
display: block;
border: 0;
margin: 0;
padding: 0;
font-size: 8pt;
font-weight: bold;
text-align: center;
}
.nodisplay {
font-weight: bold;
}
.copyright {
display: block;
width: 100%;
clear: both;
font-weight: bold;
text-align: center;
}
/* Misc. styles */
.noLevelOne {
display: none;
}
#topStrip {
font-size: 10pt;
font-weight: bold;
}
#mainTitle {
margin: 0;
padding: 0;
border: 0;
}
#mainTitle H1 {
font-size: 36px;
font-weight: bold;
text-align: right;
border: 0;
margin: 0;
padding: 24px 48px;
}
/*
Menus
*/
#menu {
text-align: left;
}
#menu A {
text-decoration:underline;
}
#menu A.selected {
color: #fff;
font-weight: bold;
text-decoration:none;
}
#menu .menuTitle {
color: white;
font-weight: bold;
}
/*
Right-side feature boxes
*/
#features {
width: 140px;
float: right;
margin: 0;
}
#topMain {
text-align: justify;
padding: 2px;
}
.narrow#topMain {
margin-right: 142px; /* features width + 2px */
_margin-right: 2px;
}
#topMain H2 {
border-bottom: 2px solid white;
margin: -2px -2px 8px -2px;
padding: 0;
}
/*
Main content
*/
#content {
text-align: justify;
padding: 2px;
}
.narrow#content {
margin-right: 142px; /* features width + 2px */
_margin-right: 2px;
}

View file

@ -0,0 +1,213 @@
HTML {
max-height: 100%;
height: 100%;
}
BODY {
border: 0;
padding: 0;
margin: 0;
max-height: 100%;
height: 100%;
}
.featureBox P.lined {
text-align: justify;
margin: 0px;
padding: 8px;
border-top: 2px solid #737b9c;
}
.newsBox {
margin: 0px;
padding: 0px;
background: #262633;
border-left: 2px solid #737b9c;
border-right: 2px solid #737b9c;
border-bottom: 1px solid #737b9c;
}
.newsBox .newsTitle {
background: #737b9c;
text-align: right;
}
.newsBox .newsTitle H2 {
margin: 0;
font-size: 10pt;
text-align: center;
padding: 2px;
}
.newsBox DL {
border-top: 1px solid #737b9c;
border-bottom: 1px solid #737b9c;
}
.newsBox P.lined {
border-top: 2px solid #737b9c;
margin: 0;
padding: 4px;
}
.nodisplay {
display: none;
}
.noLevelOne {
display: block;
}
.left {
clear: none;
float: left;
display: block;
text-align: left;
}
.right {
clear: right;
float: right;
}
#topStrip {
background: #737b9c;
color: black;
padding: 3px;
}
#topStrip A {
color: white;
}
#mainTitle {
background: #4b4f66; /* menu background color */
background-image:url(/parts/bg-logo.php);
background-position:bottom left;
background-repeat:no-repeat;
color: white;
border: 0;
margin: 0;
padding: 0;
}
#menu {
background: #4b4f66;
width: 130px;
height: auto;
display: inline;
float: left;
margin: 0;
margin-top: 2px;
padding: 0;
}
#menu A {
color: #c0c0c0;
text-decoration:underline;
}
#menu .menuItem {
display: block;
font-size: 10pt;
text-align: right;
margin: 0;
padding: 0pt 4px;
}
#menu .menuTitle {
background: #737b9c;
color: white;
display: block;
font-size: 10pt;
font-weight: bold;
text-align: center;
margin: 0;
margin-bottom: 2px;
padding: 2px 0;
}
#menu .sfLogo {
display: inline;
text-align: right;
border: 0;
margin: 2px;
padding: 0;
}
#features {
margin: 0;
margin-top: 2px;
_display: inline;
_float: right;
_clear: none;
}
#content {
margin: 2px;
margin-left: 132px; /* menu width + 2 px */
padding: 8px;
_display: inline;
_float: left;
_clear: none;
_margin-left: 2px;
}
#bottom {
display: block;
margin: 0;
width: 100%;
clear: both;
padding-top: 4px;
padding-bottom: 4px;
background: #4b4f66;
text-align: center;
vertical-align: middle;
}
#bottom A {
color: white;
text-decoration:underline;
}
A#pi {
position: absolute;
top: 1px;
right: 1px;
background: #4b4f66;
color: #4b4f66;
font-size: 14pt;
}
.smallText {
font-size: x-small;
}
.centered {
text-align: center;
}
/* Special link types */
A.sortButton { color: white; text-decoration: underline; }