#!/usr/bin/perl
# Copyright 2001-2009 Leslie Richardson
# This file is part of Open Admin for Schools.
# Open Admin for Schools 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.
# Passed Values: Subject/Section value (passed as subjsec).
my $specchar = '*'; # causes this test to be skipped in calculating avg.
my $altcolor = '#3B7'; #1B6 Complement to the 063 green of teacher site.
my %lex = ('Nil' => 'Nil',
'marks were posted to the report card system' =>
'marks were posted to the report card system',
'Post to Report Card System' => 'Post to Report Card System',
'GB Main' => 'GB Main',
'Main' => 'Main',
'There was an error storing your data' => 'There was an error storing your data',
'Please contact' => 'Please contact',
'System Disabled. Please contact secretary' =>
'System Disabled. Please contact secretary',
'No Tests Found!' => 'No Tests Found!',
'Mark' => 'Mark',
'Objective:# to Post' => 'Objective:# to Post',
'Override Existing Marks?' => 'Override Existing Marks?',
'Name' => 'Name',
'Prev
Post' => 'Prev
Post',
'GBook
Average' => 'GBook
Average',
'Userid' => 'Userid',
'Password' => 'Password',
'Enter Gradebook' => 'Enter Gradebook',
'Term' => 'Term',
'Previous Value exists and not overridden. Skipping' =>
'Previous Value exists and not overridden. Skipping',
'updated' => 'updated',
'Error' => 'Error',
'Please Log in!' => 'Please Log in!',
'Class Average' => 'Class Average',
'Student' => 'Student',
'Convert to Letter Grade' => 'Convert to Letter Grade',
'Convert Marks' => 'Convert Marks',
'Decimal Display' => 'Decimal Display',
);
$markToLetter{1} = { '89.5' => 'E', '74.5' => 'M', '59.5' => 'B', '0' => 'N' };
#$markToLetter{2} = { '92.5' => 'A', '82.5' => 'B','72.5' => 'C', '62.5' => 'D',
# '59.9' => 'D-','0' => 'F'};
my @schemes;
foreach my $idx ( sort keys %markToLetter ) {
my $scheme;
foreach my $key ( sort reverse keys %{ $markToLetter{$idx} } ) {
$scheme = $scheme. " $key < $markToLetter{$idx}{$key} < ";
}
chop $scheme; chop $scheme;
$scheme .= "($idx)";
push @schemes, $scheme;
}
my $self = 'post.pl';
use DBI;
use CGI;
use CGI::Session;
use Date::Business;
use Number::Format qw(:all);
my $q = new CGI;
eval require "../../etc/admin.conf";
if ( $@ ) {
print $lex{Error}. " $@
\n";
die $lex{Error}. " $@
\n";
}
# get the markfield value... a1-a20 which stores numeric mark.
eval require "../../etc/repcard.conf";
if ( $@ ) {
print $lex{Error}. " $@
\n";
die $lex{Error}. " $@
\n";
}
my $dsn = "DBI:$dbtype:dbname=$dbase";
my $dbh = DBI->connect($dsn,$user,$password);
$dbh->{mysql_enable_utf8} = 1;
# Get Session Information...
my $session = new CGI::Session("driver:mysql;serializer:FreezeThaw",
undef,{Handle => $dbh}) or die CGI::Session->errstr;
my $logged_in = $session->param(logged_in);
if ( not $logged_in ) {
print $q->header( -charset, $charset );
print $lex{'Please Log in!'}. "
\n";
die;
}
my $subjsec = $session->param('subjsec');
print $q->header( -charset, $charset );
my %arr = $q->Vars;
if ( not defined $arr{decimaldisplay} ) {
$arr{decimaldisplay} = '0';
}
my $markToLetter; # mode switch
my %mark2Letter;
if ( $arr{convertscheme} ) { # passed value from markToLetter table.
my ( $dud, $id ) = split /\(/, $arr{convertscheme};
chop $id;
$markToLetter = 1;
%mark2Letter = %{ $markToLetter{$id} }; # holds the values
}
my ($sec, $min, $hour, $mday, $mon, $year, $wday,
$yday, $iddst) = localtime(time);
$year = $year + 1900;
$mon++;
$wday++;
if (length($mon) ==1){ $mon = '0'.$mon;}
if (length($mday) ==1){ $mday = '0'.$mday;}
my $currdate = "$dow[$wday], $month[$mon] $mday, $year";
my $currsdate = "$year$mon$mday";
my $dateobj = new Date::Business(DATE => $currsdate);
# Read in the term and check for disabled function. Fail if zero.
my $termread = "Error!";
open(TERM, "../../etc/term") || die "Can't find the term number!";
$termread = ;
if ( $termread == 0 ) {
print "
". $lex{'System Disabled. Please contact secretary'}. ".\n";
print "