science-ation/common.inc.php
james 71074eaf24 Get rid of the old (not used anymore) taskNav function
Add some missing <tbody> tags so the tablesorter doesnt choke (every table with class=tableview MUST have a <tbody> element, even if there are no <tr>'s inside the body
2010-07-21 20:14:05 +00:00

527 lines
18 KiB
PHP

<?
/*
This file is part of the 'Science Fair In A Box' project
SFIAB Website: http://www.sfiab.ca
Copyright (C) 2005 Sci-Tech Ontario Inc <info@scitechontario.org>
Copyright (C) 2005-2010 James Grant <james@lightbox.org>
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, version 2.
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; see the file COPYING. If not, write to
the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA.
*/
?>
<?
//bootstrap sets up the session, loads config params, etc, etc.
require_once("common.inc.bootstrap.php");
//functions contains all the common functions besides the header/footer functions
require_once("common.inc.functions.php");
$HEADER_SENT=false;
function send_header($title="", $nav=null, $icon=null, $titletranslated=false) {
global $HEADER_SENT;
global $config;
global $roles;
global $prependdir;
global $conference;
//do this so we can use send_header() a little more loosly and not worry about it being sent more than once.
if($HEADER_SENT) return;
else $HEADER_SENT=true;
?>
<!doctype html>
<html>
<head><title><? if($title && !$titletranslated) echo i18n($title); else if($title) echo $title; else echo i18n($config['fairname']); ?></title>
<link rel="stylesheet" href="<?=$config['SFIABDIRECTORY']?>/theme/<?=$config['theme']?>/jquery-ui-1.7.2.custom.css" type="text/css" media="all" />
<link rel="stylesheet" href="<?=$config['SFIABDIRECTORY']?>/theme/<?=$config['theme']?>/sfiab.css" type="text/css" media="all" />
<link rel="stylesheet" href="<?=$config['SFIABDIRECTORY']?>/tableeditor.css" type="text/css" media="all" />
</head>
<body>
<script type="text/javascript" src="<?=$config['SFIABDIRECTORY']?>/js/jquery/1.3.2/jquery.min.js"></script>
<script type="text/javascript" src="<?=$config['SFIABDIRECTORY']?>/js/jqueryui/1.7.2/jquery-ui.min.js"></script>
<script type="text/javascript" src="<?=$config['SFIABDIRECTORY']?>/js/sfiab.js"></script>
<script type="text/javascript" src="<?=$config['SFIABDIRECTORY']?>/js/tablesorter/jquery.tablesorter.min.js"></script>
<script type="text/javascript" src="<?=$config['SFIABDIRECTORY']?>/js/validate/jquery.validate.pack.js"></script>
<script type="text/javascript">
$(document).ready(function(){
$('.tableview').tablesorter();
if($("#importantdatesbox").length)
$("#importantdatesbox").load("important_dates.php?display=box");
});
function taskNavLevel(l1,l2,l3,l4) {
if(l2) {
//we have a secondary click, which implies we also have a primary nav selected
//we may or may not have l3 or l4 though, so they are handled separately below
$("#secondarymenu").load("<?=$config['SFIABDIRECTORY']?>/nav.php?level=1&id="+l1,null,function() {
$("#secondarymenu").show();
$("#tertiarymenu_accordion").accordion("destroy");
$("#tertiarymenu_accordion").load("<?=$config['SFIABDIRECTORY']?>/nav.php?level=2&id="+l2,null,function() {
$("#tertiarymenu_accordion").accordion({clearStyle: true, collapsible: true, active: false}); //"option", "collapsible", true);
$("#tertiarymenu").show();
$(".primarynav-selected").removeClass("primarynav-selected");
$("#primary_nav_"+l1).addClass("primarynav-selected");
$(".secondarynav-selected").removeClass("secondarynav-selected");
$("#secondary_nav_"+l2).addClass("secondarynav-selected");
//if we have a 3rd level nav, open up the accordion to the appropriate place
if(l3) {
$("#tertiarymenu_accordion").accordion("activate",$("#tertiary_nav_"+l3));
}
//if we have a 4th level nav, set the selected class on the appropriate item in the list
if(l4) {
$(".tertiarylinknav-selected").removeClass("tertiarylinknav-selected");
$("#tertiarylink_nav_"+l4).addClass("tertiarylinknav-selected");
}
});
});
}
else {
//only the primary link clicked, so show the secondary, and thats it.
$("#secondarymenu").load("<?=$config['SFIABDIRECTORY']?>/nav.php?level=1&id="+l1,null,function() {
//show the secondary
$("#secondarymenu").show();
//and hide the tertiary
$("#tertiarymenu").hide();
});
}
}
</script>
<?
//if we're under /admin or /config we also want the translation editor
if(substr(getcwd(),-6)=="/admin" || substr(getcwd(),-7)=="/config")
require_once("../translationseditor.inc.php");
?>
<div id="notice_area" class="notice_area"></div>
<div id="topnav">
<?
echo "<form name=\"languageselect\" method=\"get\" action=\"".$_SERVER['PHP_SELF']."\">";
echo "<a href=\"{$config["SFIABDIRECTORY"]}/contact.php\">".i18n("Contact Us")."</a> &nbsp; | &nbsp; \n";
if(count($config['languages'])>1) {
echo i18n("Language").": ";
echo "<select name=\"switchlanguage\" onchange=\"document.forms.languageselect.submit()\">\n";
foreach($config['languages'] AS $key=>$val) {
if($_SESSION['lang']==$key) $selected="selected=\"selected\""; else $selected="";
echo "<option $selected value=\"$key\">$val</option>";
}
echo "</select>";
}
echo "</form>";
?>
</div>
<div id="header">
<div id="header_logo">
<?
echo "<a href=\"{$config['SFIABDIRECTORY']}/index.php\">";
if(file_exists($prependdir."data/{$conference['id']}-logo-100.gif")) {
echo "<img style=\"border: 0px;\" height=\"70\" src=\"".$config['SFIABDIRECTORY']."/data/{$conference['id']}-logo-100.gif\">";
} else if(file_exists($prependdir."data/logo-100.gif")) {
echo "<img style=\"border: 0px;\" height=\"70\" src=\"".$config['SFIABDIRECTORY']."/data/logo-100.gif\">";
} else {
echo i18n("Home Page");
}
echo "</a>";
?>
</div>
<div id="header_title">
<?
if(!$_SESSION['conferences_id']) {
echo "<h1>".i18n($config['fairname'])."</h1>";
} else {
global $conference;
echo "<h1>".i18n($conference['name'])."</h1>";
}
?>
</div>
<div id="header_conferences">
<?
$q=mysql_query("SELECT * FROM conferences WHERE status='running' ORDER BY name");
if(mysql_num_rows($q)) {
echo "<ul class=\"conferencenav\">";
while($r=mysql_fetch_object($q)) {
if($_SESSION['conferences_id']==$r->id)
$cl="class=\"selected\"";
else
$cl="";
echo "<li $cl><a $cl href=\"{$config['SFIABDIRECTORY']}/user_login.php?action=switchconference&switchconference=$r->id\">$r->name</a></li>\n";
}
echo "</ul>\n";
}
?>
</div>
<div id="header_login">
<?
if(isset($_SESSION['roles']) && $_SESSION['username']) {
echo i18n("Logged in as %1",array($_SESSION['username']))."<br />";
echo "<div style=\"margin-top: 8px;\">\n";
echo "My: <a href=\"{$config['SFIABDIRECTORY']}/user_account.php\">".i18n("Account")."</a>";
echo "&nbsp;|&nbsp;";
echo "<a href=\"{$config['SFIABDIRECTORY']}/user_personal.php\">".i18n("Profile")."</a>";
echo "&nbsp;|&nbsp;";
echo "<a href=\"{$config['SFIABDIRECTORY']}/user_main.php\">".i18n("Main")."</a>";
echo "</div>";
echo "<div style=\"margin-top: 5px;\">\n";
echo "<a href=\"{$config['SFIABDIRECTORY']}/user_login.php?action=logout\">".i18n("Logout")."</a>";
echo "</div>";
} else if(isset($_SESSION['email'])) {
/* Backwards compatible login settings */
if(isset($_SESSION['registration_id'])) {
echo i18n('Participant');
echo " {$_SESSION['email']}: ";
echo "<a href=\"{$config['SFIABDIRECTORY']}/register_participants.php?action=logout\">[".i18n("Logout")."]</a>";
} else {
echo "&nbsp;";
}
} else {
?>
<form method="post" action="user_login.php">
<input type="hidden" name="action" value="login" />
<table cellspacing=1 cellpadding=1><tr><td>
<?=i18n("Username")?>:</td><td><input type="text" size="14" name="username" />
</td></tr><tr><td>
<?=i18n("Password")?>:</td><td><input type="password" size="14" name="password" />
</td></tr>
<tr><td align="center" colspan="2">
<a href="register.php"><?=i18n("Register")?></a>
&nbsp; &nbsp; &nbsp;
<input type="submit" value=<?=i18n("Login")?> />
</td></tr>
</table>
</form>
<?
}
?>
</div>
</div>
<div id="primarymenu">
<?
if(is_array($nav)) {
$navkeys=array_keys($nav);
switch($navkeys[2]) {
case "Fundraising":
echo "<ul class=\"primarynav\">\n";
echo "<li><h4 style=\"text-align: center;\">".i18n("Fundraising")."</h4></li>\n";
echo "<li><a href=\"{$config['SFIABDIRECTORY']}/admin/fundraising.php\">".i18n("Fundraising Dashboard").'</a></li>';
echo "<li><a href=\"{$config['SFIABDIRECTORY']}/admin/fundraising_setup.php\">".i18n("Fundraising Setup").'</a></li>';
echo "<li><a href=\"{$config['SFIABDIRECTORY']}/admin/fundraising_campaigns.php\">".i18n("Manage Appeals").'</a></li>';
echo "<li><a href=\"{$config['SFIABDIRECTORY']}/admin/donors.php\">".i18n("Manage Donors/Sponsors").'</a></li>';
echo "<li><a href=\"{$config['SFIABDIRECTORY']}/admin/fundraising_reports.php\">".i18n("Fundraising Reports").'</a></li>';
echo "</ul><br />\n";
break;
default:
//no special menu
break;
}
}
?>
<ul class="primarynav">
<?
if ($config['website']) {
if ($config['website_name']) {
echo "<li><a href=\"{$config['website']}\">{$config['website_name']}</a></li>";
} else {
echo "<li><a href=\"{$config['website']}\">".i18n("Fair Home").'</a></li>';
}
echo "<li><a href=\"{$config['SFIABDIRECTORY']}/index.php\">".i18n("Registration Home").'</a></li>';
} else {
echo "<li><a href=\"{$config['SFIABDIRECTORY']}/index.php\">".i18n("Home").'</a></li>';
}
//if the date is greater than the date/time that the confirmed participants gets posted,
//then we will show the registration confirmation page as a link in the menu,
$registrationconfirmationlink="";
//only display it if a date is set to begin with.
if($config['dates']['postparticipants'] && $config['dates']['postparticipants']!="0000-00-00 00:00:00") {
$q=mysql_query("SELECT (NOW()>'".$config['dates']['regclose']."') AS test");
$r=mysql_fetch_object($q);
if($r->test==1) {
$registrationconfirmationlink="<li><a href=\"".$config['SFIABDIRECTORY']."/confirmed_participants.php\">".i18n("Confirmed Participants")."</a></li>";
}
}
echo "<li><a href=\"{$config['SFIABDIRECTORY']}/important_dates.php\">".i18n("Important Dates").'</a></li>';
echo $registrationconfirmationlink;
/*
echo "<li><a href=\"{$config['SFIABDIRECTORY']}/register_participants.php\">".i18n("Participant Registration").'</a></li>';
echo "<li><a href=\"{$config['SFIABDIRECTORY']}/user_login.php?type=judge\">".i18n("Judges Registration").'</a></li>';
if($config['volunteer_enable'] == 'yes') {
echo "<li><a href=\"{$config['SFIABDIRECTORY']}/user_login.php?type=volunteer\">".i18n("Volunteer Registration").'</a></li>';
}
*/
echo "<li><a href=\"{$config['SFIABDIRECTORY']}/committees.php\">".i18n("Committee").'</a></li>';
if($config['show_winners'] == "yes") {
echo "<li><a href=\"{$config['SFIABDIRECTORY']}/winners.php\">".i18n("Winners").'</a></li>';
}
if(is_array($_SESSION['roles'])) {
foreach($_SESSION['roles'] AS $roletype) {
$roleid=$roles[$roletype]['id'];
$q=mysql_query("SELECT * FROM rolestasks WHERE roles_id='$roleid' AND pid=0 ORDER BY task");
if(mysql_num_rows($q)==1) {
$setPrimaryNav=true;
}
$cl="";
while($r=mysql_fetch_object($q)) {
if($setPrimarynav) {
$_SESSION['nav']['primary']=$r->id;
$cl="class=\"selected\"";
}
echo "<li id=\"primary_nav_{$r->id}\" $cl>";
echo "<a href=\"#\" onclick=\"return taskNavLevel($r->id,0,0,0)\">".i18n($r->task)."</a>";
echo "</li>\n";
}
}
}
?>
<?
if(array_key_exists('users_id', $_SESSION)) {
if(in_array('admin', $_SESSION['roles'])) {
echo "<li><a href=\"{$config['SFIABDIRECTORY']}/admin/\">".i18n("Administration").' (old) </a></li>';
}
if(in_array('config', $_SESSION['roles'])) {
echo "<li><a href=\"{$config['SFIABDIRECTORY']}/config/\">".i18n("Configuration").' (old) </a></li>';
}
if($_SESSION['superuser'] == 'yes') {
echo "<li><a href=\"{$config['SFIABDIRECTORY']}/super/\">".i18n("System Setup").'</a></li>';
}
if(in_array('volunteer', $_SESSION['roles'])) {
// echo "<li><a href=\"{$config['SFIABDIRECTORY']}/volunteer_main.php\">".i18n("Volunteer Home").'</a></li>';
}
if(in_array('sponsor', $_SESSION['roles'])) {
// echo "<li><a href=\"{$config['SFIABDIRECTORY']}/sponsor_main.php\">".i18n("Sponsor Home").'</a></li>';
}
/* FIXME: setting the schoolid should move to the user_login routine, so we can just test for
* the presence of the school/teacher/principal role here */
if($_SESSION['schoolid'] && $_SESSION['schoolaccesscode']) {
echo "<li><a href=\"{$config['SFIABDIRECTORY']}/schoolaccess.php\">".i18n("School Home").'</a></li>';
echo "<li><a href=\"{$config['SFIABDIRECTORY']}/schoolaccess.php?action=logout\">".i18n("Logout").'</a></li>';
}
if(in_array('student', $_SESSION['roles'])) {
echo "<li><a href=\"{$config['SFIABDIRECTORY']}/register_participants_main.php\">".i18n("Participant Home").'</a></li>';
}
}
?>
</ul>
</div>
<div id="secondarymenu">
</div>
<div id="tertiarymenu">
<div id="tertiarymenu_accordion">
</div>
</div>
<?
//take SFIABDIRECTORY off of the current URL
$pageurl=substr($_SERVER['PHP_SELF'],strlen($config['SFIABDIRECTORY']));
echo "looking up [$pageurl] <br />";
$q=mysql_query("SELECT * FROM rolestasks WHERE link='".mysql_real_escape_string($pageurl)."'");
if($r=mysql_fetch_object($q)) {
//okay we found it, now get its full tree above it
$navTree=array();
upTree($r->id,&$navTree);
//set things to 0 to start
$_SESSION['nav']['primary']=0;
$_SESSION['nav']['secondary']=0;
$_SESSION['nav']['tertiary']=0;
$_SESSION['nav']['tertiarylink']=0;
//go through each one, and set the SESSION vars
foreach($navTree AS $t) {
switch($t['level']) {
case 0: //primary nav
$_SESSION['nav']['primary']=$t['id'];
break;
case 1: //secondary nav
$_SESSION['nav']['secondary']=$t['id'];
break;
case 2: //tertiary nav heading
$_SESSION['nav']['tertiary']=$t['id'];
break;
case 3: //tertiary nav link
$_SESSION['nav']['tertiarylink']=$t['id'];
break;
}
}
echo "\n\n<script type=\"text/javascript\">";
//and once the page is ready, call the taskNavLevel function to fill everything out and select what needs to be selected
echo "$(document).ready(function(){\n";
$str = "taskNavLevel({$_SESSION['nav']['primary']}, {$_SESSION['nav']['secondary']}, {$_SESSION['nav']['tertiary']}, {$_SESSION['nav']['tertiarylink']});";
echo $str;
echo " });";
echo "</script>\n";
}
else {
}
/*
if(is_array($nav)) {
echo "<div id=\"mainwhere\">".i18n('You are here:').' ';
foreach($nav as $t=>$l) {
echo "<a href=\"{$config['SFIABDIRECTORY']}/$l\">".i18n($t).'</a> &raquo; ';
}
if(!$titletranslated)
echo i18n($title);
else
echo $title;
echo '</div>';
}
*/
?>
<div id="main">
<?
if(is_array($_SESSION['roles'])) {
$has_config = array_key_exists('config', $_SESSION['roles']);
$has_admin = array_key_exists('admin', $_SESSION['roles']);
if($has_config || $has_admin)
committee_warnings();
if($has_config)
config_warnings();
if($has_admin)
admin_warnings();
}
if(substr(getcwd(),-6)!="/admin" && substr(getcwd(),-7)!="/config" && substr(getcwd(),-6)!="/super") {
?>
<div id="importantdatesbox">
</div>
<?
}
if($icon && theme_icon($icon)) {
echo "<div style=\"float: left; margin-right: 5px;\">";
echo theme_icon($icon);
echo "</div>";
}
//if we're under /admin or /config then we want to show the ? help icon
if(substr(getcwd(),-6)=="/admin" || substr(getcwd(),-7)=="/config" || substr(getcwd(),-6)=="/super") {
if($_SERVER['REDIRECT_SCRIPT_URL'])
$fname=substr($_SERVER['REDIRECT_SCRIPT_URL'],strlen($config['SFIABDIRECTORY'])+1);
else
$fname=substr($_SERVER['PHP_SELF'],strlen($config['SFIABDIRECTORY'])+1);
echo "<div style=\"float: right;\"<a target=\"_sfiabhelp\" href=\"http://www.sfiab.ca/wiki/index.php/Help_$fname\"><img border=\"0\" src=\"".$config['SFIABDIRECTORY']."/images/32/help.".$config['icon_extension']."\"></a></div>";
}
if($title && !$titletranslated)
echo "<h2>".i18n($title)."</h2>";
else if($title)
echo "<h2>".$title."</h2>";
display_messages();
}
/* END OF send_header */
function send_footer() {
global $config;
?>
</div>
<div id="footer">
<?
//we only show the debug session variables if we have an ODD numbered version.
if(substr($config['version'], -1) % 2 != 0)
{
$revision=exec("svn info |grep Revision");
$extra=" (Development $revision)";
if($_SESSION['debug']=="true")
$extra.=" DEBUG: ".print_r($_SESSION,true);
}
echo "<a target=\"blank\" href=\"http://www.sfiab.ca\">SFIAB Version ".$config['version']."{$extra}</a>";
?>
</div>
<div id="debug" style="display:<?=($_SESSION['debug']=='true')?'block':'none'?>; font-family:monospace; white-space:pre; " >Debug...</div>
<iframe id="content" src="" style="visibility:hidden; width:0px; height:0px"></iframe>
</body>
</html>
<?
}
function send_popup_header($title="") {
global $HEADER_SENT;
global $config;
//do this so we can use send_header() a little more loosly and not worry about it being sent more than once.
if($HEADER_SENT) return;
else $HEADER_SENT=true;
echo "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n";
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" >
<head><title><?=i18n($title)?></title>
<link rel="stylesheet" href="<?=$config['SFIABDIRECTORY']?>/theme/<?=$config['theme']?>/jquery-ui-1.7.2.custom.css" type="text/css" media="all" />
<link rel="stylesheet" href="<?=$config['SFIABDIRECTORY']?>/theme/<?=$config['theme']?>/sfiab.css" type="text/css" media="all" />
<link media=all href="<?=$config['SFIABDIRECTORY']?>/tableeditor.css" type=text/css rel=stylesheet>
</head>
<body onload="window.focus()">
<script type="text/javascript" src="<?=$config['SFIABDIRECTORY']?>/js/jquery/1.3.2/jquery.min.js"></script>
<script type="text/javascript" src="<?=$config['SFIABDIRECTORY']?>/js/jqueryui/1.7.2/jquery-ui.min.js"></script>
<script type="text/javascript" src="<?=$config['SFIABDIRECTORY']?>/js/sfiab.js"></script>
<script type="text/javascript" src="<?=$config['SFIABDIRECTORY']?>/js/validate/jquery.validate.pack.js"></script>
<div id="notice_area" class="notice_area"></div>
<?
if($title)
echo "<h2>".i18n($title)."</h2>";
}
function send_popup_footer() {
?>
<br />
<br />
<div id="footer">
<?
global $config;
$lastdigit=$config['version'][strlen($config['version'])-1];
if($lastdigit%2!=0)
{
echo "DEBUG:";
print_r($_SESSION);
}
echo "SFIAB Version ".$config['version'];
?>
</div>
<div id="debug" style="display:<?=($_SESSION['debug']=='true')?'block':'none'?>">Debug...</div>
<iframe id="content" src="" style="visibility:hidden; width:0px; height:0px"></iframe>
</body>
</html>
<?
}
?>